mirror of
https://github.com/immich-app/immich.git
synced 2026-05-18 03:10:24 +03:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8888166928 | |||
| 6982987f3f |
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"format": "prettier --cache --check .",
|
"format": "prettier --check .",
|
||||||
"format:fix": "prettier --cache --write --list-different ."
|
"format:fix": "prettier --write ."
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"prettier": "^3.7.4"
|
"prettier": "^3.7.4"
|
||||||
|
|||||||
@@ -1,143 +0,0 @@
|
|||||||
name: Auto-close PRs
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request_target: # zizmor: ignore[dangerous-triggers]
|
|
||||||
types: [opened, edited, labeled]
|
|
||||||
|
|
||||||
permissions: {}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
parse_template:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
if: ${{ github.event.action != 'labeled' && github.event.pull_request.head.repo.fork == true }}
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
outputs:
|
|
||||||
uses_template: ${{ steps.check.outputs.uses_template }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
||||||
with:
|
|
||||||
sparse-checkout: .github/pull_request_template.md
|
|
||||||
sparse-checkout-cone-mode: false
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- name: Check required sections
|
|
||||||
id: check
|
|
||||||
env:
|
|
||||||
BODY: ${{ github.event.pull_request.body }}
|
|
||||||
run: |
|
|
||||||
OK=true
|
|
||||||
while IFS= read -r header; do
|
|
||||||
printf '%s\n' "$BODY" | grep -qF "$header" || OK=false
|
|
||||||
done < <(sed '/<!--/,/-->/d' .github/pull_request_template.md | grep "^## ")
|
|
||||||
echo "uses_template=$OK" >> "$GITHUB_OUTPUT"
|
|
||||||
|
|
||||||
close_template:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: parse_template
|
|
||||||
if: ${{ needs.parse_template.outputs.uses_template == 'false' && github.event.pull_request.state != 'closed' }}
|
|
||||||
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="This PR has been automatically closed as the description doesn't follow our template. After you edit it to match the template, the PR will automatically be reopened." \
|
|
||||||
-f query='
|
|
||||||
mutation CommentAndClosePR($prId: ID!, $body: String!) {
|
|
||||||
addComment(input: {
|
|
||||||
subjectId: $prId,
|
|
||||||
body: $body
|
|
||||||
}) {
|
|
||||||
__typename
|
|
||||||
}
|
|
||||||
closePullRequest(input: {
|
|
||||||
pullRequestId: $prId
|
|
||||||
}) {
|
|
||||||
__typename
|
|
||||||
}
|
|
||||||
}'
|
|
||||||
|
|
||||||
- name: Add label
|
|
||||||
env:
|
|
||||||
GH_TOKEN: ${{ github.token }}
|
|
||||||
PR_NUMBER: ${{ github.event.pull_request.number }}
|
|
||||||
run: gh pr edit "$PR_NUMBER" --add-label "auto-closed:template"
|
|
||||||
|
|
||||||
close_llm:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
if: ${{ github.event.action == 'labeled' && github.event.label.name == 'auto-closed:llm' }}
|
|
||||||
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
|
|
||||||
}
|
|
||||||
}'
|
|
||||||
|
|
||||||
reopen:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: parse_template
|
|
||||||
if: >-
|
|
||||||
${{
|
|
||||||
needs.parse_template.outputs.uses_template == 'true'
|
|
||||||
&& github.event.pull_request.state == 'closed'
|
|
||||||
&& contains(github.event.pull_request.labels.*.name, 'auto-closed:template')
|
|
||||||
}}
|
|
||||||
permissions:
|
|
||||||
pull-requests: write
|
|
||||||
steps:
|
|
||||||
- name: Remove template label
|
|
||||||
env:
|
|
||||||
GH_TOKEN: ${{ github.token }}
|
|
||||||
PR_NUMBER: ${{ github.event.pull_request.number }}
|
|
||||||
run: gh pr edit "$PR_NUMBER" --remove-label "auto-closed:template" || true
|
|
||||||
|
|
||||||
- name: Check for remaining auto-closed labels
|
|
||||||
id: check_labels
|
|
||||||
env:
|
|
||||||
GH_TOKEN: ${{ github.token }}
|
|
||||||
PR_NUMBER: ${{ github.event.pull_request.number }}
|
|
||||||
run: |
|
|
||||||
REMAINING=$(gh pr view "$PR_NUMBER" --json labels \
|
|
||||||
--jq '[.labels[].name | select(startswith("auto-closed:"))] | length')
|
|
||||||
echo "remaining=$REMAINING" >> "$GITHUB_OUTPUT"
|
|
||||||
|
|
||||||
- name: Reopen PR
|
|
||||||
if: ${{ steps.check_labels.outputs.remaining == '0' }}
|
|
||||||
env:
|
|
||||||
GH_TOKEN: ${{ github.token }}
|
|
||||||
NODE_ID: ${{ github.event.pull_request.node_id }}
|
|
||||||
run: |
|
|
||||||
gh api graphql \
|
|
||||||
-f prId="$NODE_ID" \
|
|
||||||
-f query='
|
|
||||||
mutation ReopenPR($prId: ID!) {
|
|
||||||
reopenPullRequest(input: {
|
|
||||||
pullRequestId: $prId
|
|
||||||
}) {
|
|
||||||
__typename
|
|
||||||
}
|
|
||||||
}'
|
|
||||||
@@ -51,14 +51,14 @@ jobs:
|
|||||||
should_run: ${{ steps.check.outputs.should_run }}
|
should_run: ${{ steps.check.outputs.should_run }}
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
|
|
||||||
- name: Check what should run
|
- name: Check what should run
|
||||||
id: check
|
id: check
|
||||||
uses: immich-app/devtools/actions/pre-job@f50e3b600b6ac1763ddb8f3dfc69093512b967a1 # pre-job-action-v2.0.3
|
uses: immich-app/devtools/actions/pre-job@eed0f8b8165ffcb951f2ba854b2dd031935e1d73 # pre-job-action-v2.0.2
|
||||||
with:
|
with:
|
||||||
github-token: ${{ steps.token.outputs.token }}
|
github-token: ${{ steps.token.outputs.token }}
|
||||||
filters: |
|
filters: |
|
||||||
@@ -79,7 +79,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -103,7 +103,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Restore Gradle Cache
|
- name: Restore Gradle Cache
|
||||||
id: cache-gradle-restore
|
id: cache-gradle-restore
|
||||||
uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
|
uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
|
||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
~/.gradle/caches
|
~/.gradle/caches
|
||||||
@@ -114,7 +114,7 @@ jobs:
|
|||||||
key: build-mobile-gradle-${{ runner.os }}-main
|
key: build-mobile-gradle-${{ runner.os }}-main
|
||||||
|
|
||||||
- name: Setup Flutter SDK
|
- name: Setup Flutter SDK
|
||||||
uses: subosito/flutter-action@0ca7a949e71ae44c8e688a51c5e7e93b2c87e295 # v2.22.0
|
uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2.21.0
|
||||||
with:
|
with:
|
||||||
channel: 'stable'
|
channel: 'stable'
|
||||||
flutter-version-file: ./mobile/pubspec.yaml
|
flutter-version-file: ./mobile/pubspec.yaml
|
||||||
@@ -153,14 +153,14 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Publish Android Artifact
|
- name: Publish Android Artifact
|
||||||
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||||
with:
|
with:
|
||||||
name: release-apk-signed
|
name: release-apk-signed
|
||||||
path: mobile/build/app/outputs/flutter-apk/*.apk
|
path: mobile/build/app/outputs/flutter-apk/*.apk
|
||||||
|
|
||||||
- name: Save Gradle Cache
|
- name: Save Gradle Cache
|
||||||
id: cache-gradle-save
|
id: cache-gradle-save
|
||||||
uses: actions/cache/save@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
|
uses: actions/cache/save@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
|
||||||
if: github.ref == 'refs/heads/main'
|
if: github.ref == 'refs/heads/main'
|
||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
@@ -185,13 +185,13 @@ jobs:
|
|||||||
run: sudo xcode-select -s /Applications/Xcode_26.2.app/Contents/Developer
|
run: sudo xcode-select -s /Applications/Xcode_26.2.app/Contents/Developer
|
||||||
|
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
with:
|
with:
|
||||||
ref: ${{ inputs.ref || github.sha }}
|
ref: ${{ inputs.ref || github.sha }}
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Setup Flutter SDK
|
- name: Setup Flutter SDK
|
||||||
uses: subosito/flutter-action@0ca7a949e71ae44c8e688a51c5e7e93b2c87e295 # v2.22.0
|
uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2
|
||||||
with:
|
with:
|
||||||
channel: 'stable'
|
channel: 'stable'
|
||||||
flutter-version-file: ./mobile/pubspec.yaml
|
flutter-version-file: ./mobile/pubspec.yaml
|
||||||
@@ -210,7 +210,7 @@ jobs:
|
|||||||
working-directory: ./mobile
|
working-directory: ./mobile
|
||||||
|
|
||||||
- name: Setup Ruby
|
- name: Setup Ruby
|
||||||
uses: ruby/setup-ruby@319994f95fa847cf3fb3cd3dbe89f6dcde9f178f # v1.295.0
|
uses: ruby/setup-ruby@v1
|
||||||
with:
|
with:
|
||||||
ruby-version: '3.3'
|
ruby-version: '3.3'
|
||||||
bundler-cache: true
|
bundler-cache: true
|
||||||
@@ -291,7 +291,7 @@ jobs:
|
|||||||
security delete-keychain build.keychain || true
|
security delete-keychain build.keychain || true
|
||||||
|
|
||||||
- name: Upload IPA artifact
|
- name: Upload IPA artifact
|
||||||
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||||
with:
|
with:
|
||||||
name: ios-release-ipa
|
name: ios-release-ipa
|
||||||
path: mobile/ios/Runner.ipa
|
path: mobile/ios/Runner.ipa
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ jobs:
|
|||||||
actions: write
|
actions: write
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
|
|||||||
@@ -19,12 +19,13 @@ jobs:
|
|||||||
contents: read
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Check for breaking API changes
|
- name: Check for breaking API changes
|
||||||
uses: oasdiff/oasdiff-action/breaking@2a37bc82462349c03a533b8b608bebbaf57b3e60 # v0.0.33
|
# sha is pinning to a commit instead of a tag since the action does not tag versions
|
||||||
|
uses: oasdiff/oasdiff-action/breaking@ccb863950ce437a50f8f1a40d2a1112117e06ce4
|
||||||
with:
|
with:
|
||||||
base: https://raw.githubusercontent.com/${{ github.repository }}/main/open-api/immich-openapi-specs.json
|
base: https://raw.githubusercontent.com/${{ github.repository }}/main/open-api/immich-openapi-specs.json
|
||||||
revision: open-api/immich-openapi-specs.json
|
revision: open-api/immich-openapi-specs.json
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ jobs:
|
|||||||
working-directory: ./cli
|
working-directory: ./cli
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -42,10 +42,10 @@ jobs:
|
|||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
|
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
|
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||||
with:
|
with:
|
||||||
node-version-file: './cli/.nvmrc'
|
node-version-file: './cli/.nvmrc'
|
||||||
registry-url: 'https://registry.npmjs.org'
|
registry-url: 'https://registry.npmjs.org'
|
||||||
@@ -71,7 +71,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -83,13 +83,13 @@ jobs:
|
|||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0
|
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
|
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0
|
||||||
|
|
||||||
- name: Login to GitHub Container Registry
|
- name: Login to GitHub Container Registry
|
||||||
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
|
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
|
||||||
if: ${{ !github.event.pull_request.head.repo.fork }}
|
if: ${{ !github.event.pull_request.head.repo.fork }}
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
@@ -104,7 +104,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate docker image tags
|
- name: Generate docker image tags
|
||||||
id: metadata
|
id: metadata
|
||||||
uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
|
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5.10.0
|
||||||
with:
|
with:
|
||||||
flavor: |
|
flavor: |
|
||||||
latest=false
|
latest=false
|
||||||
@@ -115,7 +115,7 @@ jobs:
|
|||||||
type=raw,value=latest,enable=${{ github.event_name == 'release' }}
|
type=raw,value=latest,enable=${{ github.event_name == 'release' }}
|
||||||
|
|
||||||
- name: Build and push image
|
- name: Build and push image
|
||||||
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
|
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
|
||||||
with:
|
with:
|
||||||
file: cli/Dockerfile
|
file: cli/Dockerfile
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ jobs:
|
|||||||
needs: [get_body, should_run]
|
needs: [get_body, should_run]
|
||||||
if: ${{ needs.should_run.outputs.should_run == 'true' }}
|
if: ${{ needs.should_run.outputs.should_run == 'true' }}
|
||||||
container:
|
container:
|
||||||
image: ghcr.io/immich-app/mdq:main@sha256:df7188ba88abb0800d73cc97d3633280f0c0c3d4c441d678225067bf154150fb
|
image: ghcr.io/immich-app/mdq:main@sha256:4f9860d04c88f7f87861f8ee84bfeedaec15ed7ca5ca87bc7db44b036f81645f
|
||||||
outputs:
|
outputs:
|
||||||
checked: ${{ steps.get_checkbox.outputs.checked }}
|
checked: ${{ steps.get_checkbox.outputs.checked }}
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
@@ -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
|
||||||
|
}
|
||||||
|
}'
|
||||||
@@ -44,7 +44,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -57,7 +57,7 @@ jobs:
|
|||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0
|
uses: github/codeql-action/init@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
# 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).
|
# 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)
|
# If this step fails, then you should remove it and run the build manually (see below)
|
||||||
- name: Autobuild
|
- name: Autobuild
|
||||||
uses: github/codeql-action/autobuild@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0
|
uses: github/codeql-action/autobuild@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3
|
||||||
|
|
||||||
# ℹ️ Command-line programs to run using the OS shell.
|
# ℹ️ 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
|
# 📚 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
|
# ./location_of_script_within_repo/buildscript.sh
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0
|
uses: github/codeql-action/analyze@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3
|
||||||
with:
|
with:
|
||||||
category: '/language:${{matrix.language}}'
|
category: '/language:${{matrix.language}}'
|
||||||
|
|||||||
@@ -23,14 +23,14 @@ jobs:
|
|||||||
should_run: ${{ steps.check.outputs.should_run }}
|
should_run: ${{ steps.check.outputs.should_run }}
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
|
|
||||||
- name: Check what should run
|
- name: Check what should run
|
||||||
id: check
|
id: check
|
||||||
uses: immich-app/devtools/actions/pre-job@f50e3b600b6ac1763ddb8f3dfc69093512b967a1 # pre-job-action-v2.0.3
|
uses: immich-app/devtools/actions/pre-job@eed0f8b8165ffcb951f2ba854b2dd031935e1d73 # pre-job-action-v2.0.2
|
||||||
with:
|
with:
|
||||||
github-token: ${{ steps.token.outputs.token }}
|
github-token: ${{ steps.token.outputs.token }}
|
||||||
filters: |
|
filters: |
|
||||||
@@ -60,7 +60,7 @@ jobs:
|
|||||||
suffix: ['', '-cuda', '-rocm', '-openvino', '-armnn', '-rknn']
|
suffix: ['', '-cuda', '-rocm', '-openvino', '-armnn', '-rknn']
|
||||||
steps:
|
steps:
|
||||||
- name: Login to GitHub Container Registry
|
- name: Login to GitHub Container Registry
|
||||||
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
|
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.repository_owner }}
|
username: ${{ github.repository_owner }}
|
||||||
@@ -90,7 +90,7 @@ jobs:
|
|||||||
suffix: ['']
|
suffix: ['']
|
||||||
steps:
|
steps:
|
||||||
- name: Login to GitHub Container Registry
|
- name: Login to GitHub Container Registry
|
||||||
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
|
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.repository_owner }}
|
username: ${{ github.repository_owner }}
|
||||||
@@ -131,8 +131,8 @@ jobs:
|
|||||||
- device: rocm
|
- device: rocm
|
||||||
suffixes: '-rocm'
|
suffixes: '-rocm'
|
||||||
platforms: linux/amd64
|
platforms: linux/amd64
|
||||||
runner-mapping: '{"linux/amd64": "pokedex-large"}'
|
runner-mapping: '{"linux/amd64": "pokedex-giant"}'
|
||||||
uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@61a0fc2b41524edcc7c9fffb8bb178e6b0ccf21d # multi-runner-build-workflow-v2.3.0
|
uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@bd49ed7a5a6022149f79b6564df48177476a822b # multi-runner-build-workflow-v2.2.1
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
actions: read
|
actions: read
|
||||||
@@ -155,7 +155,7 @@ jobs:
|
|||||||
name: Build and Push Server
|
name: Build and Push Server
|
||||||
needs: pre-job
|
needs: pre-job
|
||||||
if: ${{ fromJSON(needs.pre-job.outputs.should_run).server == true }}
|
if: ${{ fromJSON(needs.pre-job.outputs.should_run).server == true }}
|
||||||
uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@61a0fc2b41524edcc7c9fffb8bb178e6b0ccf21d # multi-runner-build-workflow-v2.3.0
|
uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@bd49ed7a5a6022149f79b6564df48177476a822b # multi-runner-build-workflow-v2.2.1
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
actions: read
|
actions: read
|
||||||
|
|||||||
@@ -21,14 +21,14 @@ jobs:
|
|||||||
should_run: ${{ steps.check.outputs.should_run }}
|
should_run: ${{ steps.check.outputs.should_run }}
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
|
|
||||||
- name: Check what should run
|
- name: Check what should run
|
||||||
id: check
|
id: check
|
||||||
uses: immich-app/devtools/actions/pre-job@f50e3b600b6ac1763ddb8f3dfc69093512b967a1 # pre-job-action-v2.0.3
|
uses: immich-app/devtools/actions/pre-job@eed0f8b8165ffcb951f2ba854b2dd031935e1d73 # pre-job-action-v2.0.2
|
||||||
with:
|
with:
|
||||||
github-token: ${{ steps.token.outputs.token }}
|
github-token: ${{ steps.token.outputs.token }}
|
||||||
filters: |
|
filters: |
|
||||||
@@ -54,7 +54,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -67,10 +67,10 @@ jobs:
|
|||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
|
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||||
with:
|
with:
|
||||||
node-version-file: './docs/.nvmrc'
|
node-version-file: './docs/.nvmrc'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
@@ -86,7 +86,7 @@ jobs:
|
|||||||
run: pnpm build
|
run: pnpm build
|
||||||
|
|
||||||
- name: Upload build output
|
- name: Upload build output
|
||||||
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||||
with:
|
with:
|
||||||
name: docs-build-output
|
name: docs-build-output
|
||||||
path: docs/build/
|
path: docs/build/
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ jobs:
|
|||||||
artifact: ${{ steps.get-artifact.outputs.result }}
|
artifact: ${{ steps.get-artifact.outputs.result }}
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -119,7 +119,7 @@ jobs:
|
|||||||
if: ${{ fromJson(needs.checks.outputs.artifact).found && fromJson(needs.checks.outputs.parameters).shouldDeploy }}
|
if: ${{ fromJson(needs.checks.outputs.artifact).found && fromJson(needs.checks.outputs.parameters).shouldDeploy }}
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -131,7 +131,7 @@ jobs:
|
|||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
|
|
||||||
- name: Setup Mise
|
- name: Setup Mise
|
||||||
uses: immich-app/devtools/actions/use-mise@035e80a7d4355d5f087ffb95db9e4a0944c04e56 # use-mise-action-v1.1.3
|
uses: immich-app/devtools/actions/use-mise@dab18118da6476e8237ac94080fd937983fecd42 # use-mise-action-v1.1.2
|
||||||
|
|
||||||
- name: Load parameters
|
- name: Load parameters
|
||||||
id: parameters
|
id: parameters
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ jobs:
|
|||||||
pull-requests: write
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -29,7 +29,7 @@ jobs:
|
|||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
|
|
||||||
- name: Setup Mise
|
- name: Setup Mise
|
||||||
uses: immich-app/devtools/actions/use-mise@035e80a7d4355d5f087ffb95db9e4a0944c04e56 # use-mise-action-v1.1.3
|
uses: immich-app/devtools/actions/use-mise@dab18118da6476e8237ac94080fd937983fecd42 # use-mise-action-v1.1.2
|
||||||
|
|
||||||
- name: Destroy Docs Subdomain
|
- name: Destroy Docs Subdomain
|
||||||
env:
|
env:
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Generate a token
|
- name: Generate a token
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3.0.0
|
uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -29,10 +29,10 @@ jobs:
|
|||||||
persist-credentials: true
|
persist-credentials: true
|
||||||
|
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
|
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||||
with:
|
with:
|
||||||
node-version-file: './server/.nvmrc'
|
node-version-file: './server/.nvmrc'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ jobs:
|
|||||||
- name: Generate a token
|
- name: Generate a token
|
||||||
id: generate_token
|
id: generate_token
|
||||||
if: ${{ inputs.skip != true }}
|
if: ${{ inputs.skip != true }}
|
||||||
uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3.0.0
|
uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
|
|||||||
@@ -14,13 +14,13 @@ jobs:
|
|||||||
pull-requests: write
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
|
|
||||||
- name: Require PR to have a changelog label
|
- name: Require PR to have a changelog label
|
||||||
uses: mheap/github-action-required-labels@0ac283b4e65c1fb28ce6079dea5546ceca98ccbe # v5.5.2
|
uses: mheap/github-action-required-labels@8afbe8ae6ab7647d0c9f0cfa7c2f939650d22509 # v5.5.1
|
||||||
with:
|
with:
|
||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
mode: exactly
|
mode: exactly
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Generate a token
|
- name: Generate a token
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3.0.0
|
uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -63,13 +63,13 @@ jobs:
|
|||||||
ref: main
|
ref: main
|
||||||
|
|
||||||
- name: Install uv
|
- name: Install uv
|
||||||
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0
|
uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0
|
||||||
|
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
|
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||||
with:
|
with:
|
||||||
node-version-file: './server/.nvmrc'
|
node-version-file: './server/.nvmrc'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
@@ -124,7 +124,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Generate a token
|
- name: Generate a token
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3.0.0
|
uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -136,13 +136,13 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Download APK
|
- name: Download APK
|
||||||
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
|
||||||
with:
|
with:
|
||||||
name: release-apk-signed
|
name: release-apk-signed
|
||||||
github-token: ${{ steps.generate-token.outputs.token }}
|
github-token: ${{ steps.generate-token.outputs.token }}
|
||||||
|
|
||||||
- name: Create draft release
|
- name: Create draft release
|
||||||
uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2.6.1
|
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0
|
||||||
with:
|
with:
|
||||||
draft: true
|
draft: true
|
||||||
tag_name: ${{ needs.bump_version.outputs.version }}
|
tag_name: ${{ needs.bump_version.outputs.version }}
|
||||||
@@ -151,7 +151,6 @@ jobs:
|
|||||||
body_path: misc/release/notes.tmpl
|
body_path: misc/release/notes.tmpl
|
||||||
files: |
|
files: |
|
||||||
docker/docker-compose.yml
|
docker/docker-compose.yml
|
||||||
docker/docker-compose.rootless.yml
|
|
||||||
docker/example.env
|
docker/example.env
|
||||||
docker/hwaccel.ml.yml
|
docker/hwaccel.ml.yml
|
||||||
docker/hwaccel.transcoding.yml
|
docker/hwaccel.transcoding.yml
|
||||||
|
|||||||
@@ -14,12 +14,12 @@ jobs:
|
|||||||
pull-requests: write
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
|
|
||||||
- uses: mshick/add-pr-comment@ffd016c7e151d97d69d21a843022fd4cd5b96fe5 # v3.9.0
|
- uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2.8.2
|
||||||
with:
|
with:
|
||||||
github-token: ${{ steps.token.outputs.token }}
|
github-token: ${{ steps.token.outputs.token }}
|
||||||
message-id: 'preview-status'
|
message-id: 'preview-status'
|
||||||
@@ -32,7 +32,7 @@ jobs:
|
|||||||
pull-requests: write
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -48,14 +48,14 @@ jobs:
|
|||||||
name: 'preview'
|
name: 'preview'
|
||||||
})
|
})
|
||||||
|
|
||||||
- uses: mshick/add-pr-comment@ffd016c7e151d97d69d21a843022fd4cd5b96fe5 # v3.9.0
|
- uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2.8.2
|
||||||
if: ${{ github.event.pull_request.head.repo.fork }}
|
if: ${{ github.event.pull_request.head.repo.fork }}
|
||||||
with:
|
with:
|
||||||
github-token: ${{ steps.token.outputs.token }}
|
github-token: ${{ steps.token.outputs.token }}
|
||||||
message-id: 'preview-status'
|
message-id: 'preview-status'
|
||||||
message: 'PRs from forks cannot have preview environments.'
|
message: 'PRs from forks cannot have preview environments.'
|
||||||
|
|
||||||
- uses: mshick/add-pr-comment@ffd016c7e151d97d69d21a843022fd4cd5b96fe5 # v3.9.0
|
- uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2.8.2
|
||||||
if: ${{ !github.event.pull_request.head.repo.fork }}
|
if: ${{ !github.event.pull_request.head.repo.fork }}
|
||||||
with:
|
with:
|
||||||
github-token: ${{ steps.token.outputs.token }}
|
github-token: ${{ steps.token.outputs.token }}
|
||||||
|
|||||||
@@ -0,0 +1,170 @@
|
|||||||
|
name: Manage release PR
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
bump:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Generate a token
|
||||||
|
id: generate-token
|
||||||
|
uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
|
||||||
|
with:
|
||||||
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
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@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0
|
||||||
|
|
||||||
|
- name: Setup pnpm
|
||||||
|
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||||
|
|
||||||
|
- name: Setup Node
|
||||||
|
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||||
|
with:
|
||||||
|
node-version-file: './server/.nvmrc'
|
||||||
|
cache: 'pnpm'
|
||||||
|
cache-dependency-path: '**/pnpm-lock.yaml'
|
||||||
|
|
||||||
|
- name: Determine release type
|
||||||
|
id: bump-type
|
||||||
|
uses: ietf-tools/semver-action@c90370b2958652d71c06a3484129a4d423a6d8a8 # v1.11.0
|
||||||
|
with:
|
||||||
|
token: ${{ steps.generate-token.outputs.token }}
|
||||||
|
|
||||||
|
- name: Bump versions
|
||||||
|
env:
|
||||||
|
TYPE: ${{ steps.bump-type.outputs.bump }}
|
||||||
|
run: |
|
||||||
|
if [ "$TYPE" == "none" ]; then
|
||||||
|
exit 1 # TODO: Is there a cleaner way to abort the workflow?
|
||||||
|
fi
|
||||||
|
misc/release/pump-version.sh -s $TYPE -m true
|
||||||
|
|
||||||
|
- name: Manage Outline release document
|
||||||
|
id: outline
|
||||||
|
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
||||||
|
env:
|
||||||
|
OUTLINE_API_KEY: ${{ secrets.OUTLINE_API_KEY }}
|
||||||
|
NEXT_VERSION: ${{ steps.bump-type.outputs.next }}
|
||||||
|
with:
|
||||||
|
github-token: ${{ steps.generate-token.outputs.token }}
|
||||||
|
script: |
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
|
const outlineKey = process.env.OUTLINE_API_KEY;
|
||||||
|
const parentDocumentId = 'da856355-0844-43df-bd71-f8edce5382d9'
|
||||||
|
const collectionId = 'e2910656-714c-4871-8721-447d9353bd73';
|
||||||
|
const baseUrl = 'https://outline.immich.cloud';
|
||||||
|
|
||||||
|
const listResponse = await fetch(`${baseUrl}/api/documents.list`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Authorization': `Bearer ${outlineKey}`,
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify({ parentDocumentId })
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!listResponse.ok) {
|
||||||
|
throw new Error(`Outline list failed: ${listResponse.statusText}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const listData = await listResponse.json();
|
||||||
|
const allDocuments = listData.data || [];
|
||||||
|
|
||||||
|
const document = allDocuments.find(doc => doc.title === 'next');
|
||||||
|
|
||||||
|
let documentId;
|
||||||
|
let documentUrl;
|
||||||
|
let documentText;
|
||||||
|
|
||||||
|
if (!document) {
|
||||||
|
// Create new document
|
||||||
|
console.log('No existing document found. Creating new one...');
|
||||||
|
const notesTmpl = fs.readFileSync('misc/release/notes.tmpl', 'utf8');
|
||||||
|
const createResponse = await fetch(`${baseUrl}/api/documents.create`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Authorization': `Bearer ${outlineKey}`,
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
title: 'next',
|
||||||
|
text: notesTmpl,
|
||||||
|
collectionId: collectionId,
|
||||||
|
parentDocumentId: parentDocumentId,
|
||||||
|
publish: true
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!createResponse.ok) {
|
||||||
|
throw new Error(`Failed to create document: ${createResponse.statusText}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const createData = await createResponse.json();
|
||||||
|
documentId = createData.data.id;
|
||||||
|
const urlId = createData.data.urlId;
|
||||||
|
documentUrl = `${baseUrl}/doc/next-${urlId}`;
|
||||||
|
documentText = createData.data.text || '';
|
||||||
|
console.log(`Created new document: ${documentUrl}`);
|
||||||
|
} else {
|
||||||
|
documentId = document.id;
|
||||||
|
const docPath = document.url;
|
||||||
|
documentUrl = `${baseUrl}${docPath}`;
|
||||||
|
documentText = document.text || '';
|
||||||
|
console.log(`Found existing document: ${documentUrl}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate GitHub release notes
|
||||||
|
console.log('Generating GitHub release notes...');
|
||||||
|
const releaseNotesResponse = await github.rest.repos.generateReleaseNotes({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
tag_name: `${process.env.NEXT_VERSION}`,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Combine the content
|
||||||
|
const changelog = `
|
||||||
|
# ${process.env.NEXT_VERSION}
|
||||||
|
|
||||||
|
${documentText}
|
||||||
|
|
||||||
|
${releaseNotesResponse.data.body}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
`
|
||||||
|
|
||||||
|
const existingChangelog = fs.existsSync('CHANGELOG.md') ? fs.readFileSync('CHANGELOG.md', 'utf8') : '';
|
||||||
|
fs.writeFileSync('CHANGELOG.md', changelog + existingChangelog, 'utf8');
|
||||||
|
|
||||||
|
core.setOutput('document_url', documentUrl);
|
||||||
|
|
||||||
|
- name: Create PR
|
||||||
|
id: create-pr
|
||||||
|
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 }}'
|
||||||
|
title: 'chore: release ${{ steps.bump-type.outputs.next }}'
|
||||||
|
body: 'Release notes: ${{ steps.outline.outputs.document_url }}'
|
||||||
|
labels: 'changelog:skip'
|
||||||
|
branch: 'release/next'
|
||||||
|
draft: true
|
||||||
@@ -0,0 +1,149 @@
|
|||||||
|
name: release.yml
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [closed]
|
||||||
|
paths:
|
||||||
|
- CHANGELOG.md
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# Maybe double check PR source branch?
|
||||||
|
|
||||||
|
merge_translations:
|
||||||
|
uses: ./.github/workflows/merge-translations.yml
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
secrets:
|
||||||
|
PUSH_O_MATIC_APP_ID: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
|
PUSH_O_MATIC_APP_KEY: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
|
WEBLATE_TOKEN: ${{ secrets.WEBLATE_TOKEN }}
|
||||||
|
|
||||||
|
build_mobile:
|
||||||
|
uses: ./.github/workflows/build-mobile.yml
|
||||||
|
needs: merge_translations
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
secrets:
|
||||||
|
KEY_JKS: ${{ secrets.KEY_JKS }}
|
||||||
|
ALIAS: ${{ secrets.ALIAS }}
|
||||||
|
ANDROID_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }}
|
||||||
|
ANDROID_STORE_PASSWORD: ${{ secrets.ANDROID_STORE_PASSWORD }}
|
||||||
|
# iOS secrets
|
||||||
|
APP_STORE_CONNECT_API_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ID }}
|
||||||
|
APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ISSUER_ID }}
|
||||||
|
APP_STORE_CONNECT_API_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY }}
|
||||||
|
IOS_CERTIFICATE_P12: ${{ secrets.IOS_CERTIFICATE_P12 }}
|
||||||
|
IOS_CERTIFICATE_PASSWORD: ${{ secrets.IOS_CERTIFICATE_PASSWORD }}
|
||||||
|
IOS_PROVISIONING_PROFILE: ${{ secrets.IOS_PROVISIONING_PROFILE }}
|
||||||
|
IOS_PROVISIONING_PROFILE_SHARE_EXTENSION: ${{ secrets.IOS_PROVISIONING_PROFILE_SHARE_EXTENSION }}misc/release/notes.tmpl
|
||||||
|
IOS_PROVISIONING_PROFILE_WIDGET_EXTENSION: ${{ secrets.IOS_PROVISIONING_PROFILE_WIDGET_EXTENSION }}
|
||||||
|
IOS_DEVELOPMENT_PROVISIONING_PROFILE: ${{ secrets.IOS_DEVELOPMENT_PROVISIONING_PROFILE }}
|
||||||
|
IOS_DEVELOPMENT_PROVISIONING_PROFILE_SHARE_EXTENSION: ${{ secrets.IOS_DEVELOPMENT_PROVISIONING_PROFILE_SHARE_EXTENSION }}
|
||||||
|
IOS_DEVELOPMENT_PROVISIONING_PROFILE_WIDGET_EXTENSION: ${{ secrets.IOS_DEVELOPMENT_PROVISIONING_PROFILE_WIDGET_EXTENSION }}
|
||||||
|
FASTLANE_TEAM_ID: ${{ secrets.FASTLANE_TEAM_ID }}
|
||||||
|
with:
|
||||||
|
ref: main
|
||||||
|
environment: production
|
||||||
|
|
||||||
|
prepare_release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: build_mobile
|
||||||
|
permissions:
|
||||||
|
actions: read # To download the app artifact
|
||||||
|
steps:
|
||||||
|
- name: Generate a token
|
||||||
|
id: generate-token
|
||||||
|
uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
|
||||||
|
with:
|
||||||
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||||
|
with:
|
||||||
|
token: ${{ steps.generate-token.outputs.token }}
|
||||||
|
persist-credentials: false
|
||||||
|
ref: main
|
||||||
|
|
||||||
|
- name: Extract changelog
|
||||||
|
id: changelog
|
||||||
|
run: |
|
||||||
|
CHANGELOG_PATH=$RUNNER_TEMP/changelog.md
|
||||||
|
sed -n '1,/^---$/p' CHANGELOG.md | head -n -1 > $CHANGELOG_PATH
|
||||||
|
echo "path=$CHANGELOG_PATH" >> $GITHUB_OUTPUT
|
||||||
|
VERSION=$(sed -n 's/^# //p' $CHANGELOG_PATH)
|
||||||
|
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Download APK
|
||||||
|
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
|
||||||
|
with:
|
||||||
|
name: release-apk-signed
|
||||||
|
github-token: ${{ steps.generate-token.outputs.token }}
|
||||||
|
|
||||||
|
- name: Create draft release
|
||||||
|
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0
|
||||||
|
with:
|
||||||
|
tag_name: ${{ steps.version.outputs.result }}
|
||||||
|
token: ${{ steps.generate-token.outputs.token }}
|
||||||
|
body_path: ${{ steps.changelog.outputs.path }}
|
||||||
|
draft: true
|
||||||
|
files: |
|
||||||
|
docker/docker-compose.yml
|
||||||
|
docker/docker-compose.rootless.yml
|
||||||
|
docker/example.env
|
||||||
|
docker/hwaccel.ml.yml
|
||||||
|
docker/hwaccel.transcoding.yml
|
||||||
|
docker/prometheus.yml
|
||||||
|
*.apk
|
||||||
|
|
||||||
|
- name: Rename Outline document
|
||||||
|
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
||||||
|
continue-on-error: true
|
||||||
|
env:
|
||||||
|
OUTLINE_API_KEY: ${{ secrets.OUTLINE_API_KEY }}
|
||||||
|
VERSION: ${{ steps.changelog.outputs.version }}
|
||||||
|
with:
|
||||||
|
github-token: ${{ steps.generate-token.outputs.token }}
|
||||||
|
script: |
|
||||||
|
const outlineKey = process.env.OUTLINE_API_KEY;
|
||||||
|
const version = process.env.VERSION;
|
||||||
|
const parentDocumentId = 'da856355-0844-43df-bd71-f8edce5382d9';
|
||||||
|
const baseUrl = 'https://outline.immich.cloud';
|
||||||
|
|
||||||
|
const listResponse = await fetch(`${baseUrl}/api/documents.list`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Authorization': `Bearer ${outlineKey}`,
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify({ parentDocumentId })
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!listResponse.ok) {
|
||||||
|
throw new Error(`Outline list failed: ${listResponse.statusText}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const listData = await listResponse.json();
|
||||||
|
const allDocuments = listData.data || [];
|
||||||
|
const document = allDocuments.find(doc => doc.title === 'next');
|
||||||
|
|
||||||
|
if (document) {
|
||||||
|
console.log(`Found document 'next', renaming to '${version}'...`);
|
||||||
|
|
||||||
|
const updateResponse = await fetch(`${baseUrl}/api/documents.update`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Authorization': `Bearer ${outlineKey}`,
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
id: document.id,
|
||||||
|
title: version
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!updateResponse.ok) {
|
||||||
|
throw new Error(`Failed to rename document: ${updateResponse.statusText}`);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log('No document titled "next" found to rename');
|
||||||
|
}
|
||||||
@@ -19,7 +19,7 @@ jobs:
|
|||||||
working-directory: ./open-api/typescript-sdk
|
working-directory: ./open-api/typescript-sdk
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -30,10 +30,10 @@ jobs:
|
|||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
|
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
|
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||||
|
|
||||||
# Setup .npmrc file to publish to npm
|
# Setup .npmrc file to publish to npm
|
||||||
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||||
with:
|
with:
|
||||||
node-version-file: './open-api/typescript-sdk/.nvmrc'
|
node-version-file: './open-api/typescript-sdk/.nvmrc'
|
||||||
registry-url: 'https://registry.npmjs.org'
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
|||||||
@@ -20,14 +20,14 @@ jobs:
|
|||||||
should_run: ${{ steps.check.outputs.should_run }}
|
should_run: ${{ steps.check.outputs.should_run }}
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
|
|
||||||
- name: Check what should run
|
- name: Check what should run
|
||||||
id: check
|
id: check
|
||||||
uses: immich-app/devtools/actions/pre-job@f50e3b600b6ac1763ddb8f3dfc69093512b967a1 # pre-job-action-v2.0.3
|
uses: immich-app/devtools/actions/pre-job@eed0f8b8165ffcb951f2ba854b2dd031935e1d73 # pre-job-action-v2.0.2
|
||||||
with:
|
with:
|
||||||
github-token: ${{ steps.token.outputs.token }}
|
github-token: ${{ steps.token.outputs.token }}
|
||||||
filters: |
|
filters: |
|
||||||
@@ -49,7 +49,7 @@ jobs:
|
|||||||
working-directory: ./mobile
|
working-directory: ./mobile
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -61,7 +61,7 @@ jobs:
|
|||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
|
|
||||||
- name: Setup Flutter SDK
|
- name: Setup Flutter SDK
|
||||||
uses: subosito/flutter-action@0ca7a949e71ae44c8e688a51c5e7e93b2c87e295 # v2.22.0
|
uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2.21.0
|
||||||
with:
|
with:
|
||||||
channel: 'stable'
|
channel: 'stable'
|
||||||
flutter-version-file: ./mobile/pubspec.yaml
|
flutter-version-file: ./mobile/pubspec.yaml
|
||||||
|
|||||||
+52
-52
@@ -17,14 +17,14 @@ jobs:
|
|||||||
should_run: ${{ steps.check.outputs.should_run }}
|
should_run: ${{ steps.check.outputs.should_run }}
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
|
|
||||||
- name: Check what should run
|
- name: Check what should run
|
||||||
id: check
|
id: check
|
||||||
uses: immich-app/devtools/actions/pre-job@f50e3b600b6ac1763ddb8f3dfc69093512b967a1 # pre-job-action-v2.0.3
|
uses: immich-app/devtools/actions/pre-job@eed0f8b8165ffcb951f2ba854b2dd031935e1d73 # pre-job-action-v2.0.2
|
||||||
with:
|
with:
|
||||||
github-token: ${{ steps.token.outputs.token }}
|
github-token: ${{ steps.token.outputs.token }}
|
||||||
filters: |
|
filters: |
|
||||||
@@ -63,7 +63,7 @@ jobs:
|
|||||||
working-directory: ./server
|
working-directory: ./server
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -75,9 +75,9 @@ jobs:
|
|||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
|
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
|
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||||
with:
|
with:
|
||||||
node-version-file: './server/.nvmrc'
|
node-version-file: './server/.nvmrc'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
@@ -108,7 +108,7 @@ jobs:
|
|||||||
working-directory: ./cli
|
working-directory: ./cli
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -119,9 +119,9 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
|
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||||
with:
|
with:
|
||||||
node-version-file: './cli/.nvmrc'
|
node-version-file: './cli/.nvmrc'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
@@ -155,7 +155,7 @@ jobs:
|
|||||||
working-directory: ./cli
|
working-directory: ./cli
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -166,9 +166,9 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
|
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||||
with:
|
with:
|
||||||
node-version-file: './cli/.nvmrc'
|
node-version-file: './cli/.nvmrc'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
@@ -197,7 +197,7 @@ jobs:
|
|||||||
working-directory: ./web
|
working-directory: ./web
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -208,9 +208,9 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
|
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||||
with:
|
with:
|
||||||
node-version-file: './web/.nvmrc'
|
node-version-file: './web/.nvmrc'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
@@ -241,7 +241,7 @@ jobs:
|
|||||||
working-directory: ./web
|
working-directory: ./web
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -252,9 +252,9 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
|
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||||
with:
|
with:
|
||||||
node-version-file: './web/.nvmrc'
|
node-version-file: './web/.nvmrc'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
@@ -279,7 +279,7 @@ jobs:
|
|||||||
contents: read
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -290,9 +290,9 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
|
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||||
with:
|
with:
|
||||||
node-version-file: './web/.nvmrc'
|
node-version-file: './web/.nvmrc'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
@@ -327,7 +327,7 @@ jobs:
|
|||||||
working-directory: ./e2e
|
working-directory: ./e2e
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -338,9 +338,9 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
|
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||||
with:
|
with:
|
||||||
node-version-file: './e2e/.nvmrc'
|
node-version-file: './e2e/.nvmrc'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
@@ -373,7 +373,7 @@ jobs:
|
|||||||
working-directory: ./server
|
working-directory: ./server
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -385,9 +385,9 @@ jobs:
|
|||||||
submodules: 'recursive'
|
submodules: 'recursive'
|
||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
|
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||||
with:
|
with:
|
||||||
node-version-file: './server/.nvmrc'
|
node-version-file: './server/.nvmrc'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
@@ -412,7 +412,7 @@ jobs:
|
|||||||
runner: [ubuntu-latest, ubuntu-24.04-arm]
|
runner: [ubuntu-latest, ubuntu-24.04-arm]
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -424,9 +424,9 @@ jobs:
|
|||||||
submodules: 'recursive'
|
submodules: 'recursive'
|
||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
|
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||||
with:
|
with:
|
||||||
node-version-file: './e2e/.nvmrc'
|
node-version-file: './e2e/.nvmrc'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
@@ -464,7 +464,7 @@ jobs:
|
|||||||
run: docker compose logs --no-color > docker-compose-logs.txt
|
run: docker compose logs --no-color > docker-compose-logs.txt
|
||||||
working-directory: ./e2e
|
working-directory: ./e2e
|
||||||
- name: Archive Docker logs
|
- name: Archive Docker logs
|
||||||
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||||
if: always()
|
if: always()
|
||||||
with:
|
with:
|
||||||
name: e2e-server-docker-logs-${{ matrix.runner }}
|
name: e2e-server-docker-logs-${{ matrix.runner }}
|
||||||
@@ -484,7 +484,7 @@ jobs:
|
|||||||
runner: [ubuntu-latest, ubuntu-24.04-arm]
|
runner: [ubuntu-latest, ubuntu-24.04-arm]
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -496,9 +496,9 @@ jobs:
|
|||||||
submodules: 'recursive'
|
submodules: 'recursive'
|
||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
|
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||||
with:
|
with:
|
||||||
node-version-file: './e2e/.nvmrc'
|
node-version-file: './e2e/.nvmrc'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
@@ -511,7 +511,7 @@ jobs:
|
|||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
- name: Install Playwright Browsers
|
- name: Install Playwright Browsers
|
||||||
run: pnpm exec playwright install chromium --only-shell
|
run: npx playwright install chromium --only-shell
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
- name: Docker build
|
- name: Docker build
|
||||||
run: docker compose up -d --build --renew-anon-volumes --force-recreate --remove-orphans --wait --wait-timeout 300
|
run: docker compose up -d --build --renew-anon-volumes --force-recreate --remove-orphans --wait --wait-timeout 300
|
||||||
@@ -522,7 +522,7 @@ jobs:
|
|||||||
run: pnpm test:web
|
run: pnpm test:web
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
- name: Archive e2e test (web) results
|
- name: Archive e2e test (web) results
|
||||||
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||||
if: success() || failure()
|
if: success() || failure()
|
||||||
with:
|
with:
|
||||||
name: e2e-web-test-results-${{ matrix.runner }}
|
name: e2e-web-test-results-${{ matrix.runner }}
|
||||||
@@ -533,7 +533,7 @@ jobs:
|
|||||||
run: pnpm test:web:ui
|
run: pnpm test:web:ui
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
- name: Archive ui test (web) results
|
- name: Archive ui test (web) results
|
||||||
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||||
if: success() || failure()
|
if: success() || failure()
|
||||||
with:
|
with:
|
||||||
name: e2e-ui-test-results-${{ matrix.runner }}
|
name: e2e-ui-test-results-${{ matrix.runner }}
|
||||||
@@ -544,7 +544,7 @@ jobs:
|
|||||||
run: pnpm test:web:maintenance
|
run: pnpm test:web:maintenance
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
- name: Archive maintenance tests (web) results
|
- name: Archive maintenance tests (web) results
|
||||||
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||||
if: success() || failure()
|
if: success() || failure()
|
||||||
with:
|
with:
|
||||||
name: e2e-maintenance-isolated-test-results-${{ matrix.runner }}
|
name: e2e-maintenance-isolated-test-results-${{ matrix.runner }}
|
||||||
@@ -554,7 +554,7 @@ jobs:
|
|||||||
run: docker compose logs --no-color > docker-compose-logs.txt
|
run: docker compose logs --no-color > docker-compose-logs.txt
|
||||||
working-directory: ./e2e
|
working-directory: ./e2e
|
||||||
- name: Archive Docker logs
|
- name: Archive Docker logs
|
||||||
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
||||||
if: always()
|
if: always()
|
||||||
with:
|
with:
|
||||||
name: e2e-web-docker-logs-${{ matrix.runner }}
|
name: e2e-web-docker-logs-${{ matrix.runner }}
|
||||||
@@ -578,7 +578,7 @@ jobs:
|
|||||||
contents: read
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -588,7 +588,7 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
- name: Setup Flutter SDK
|
- name: Setup Flutter SDK
|
||||||
uses: subosito/flutter-action@0ca7a949e71ae44c8e688a51c5e7e93b2c87e295 # v2.22.0
|
uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2.21.0
|
||||||
with:
|
with:
|
||||||
channel: 'stable'
|
channel: 'stable'
|
||||||
flutter-version-file: ./mobile/pubspec.yaml
|
flutter-version-file: ./mobile/pubspec.yaml
|
||||||
@@ -610,7 +610,7 @@ jobs:
|
|||||||
working-directory: ./machine-learning
|
working-directory: ./machine-learning
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -620,7 +620,7 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
- name: Install uv
|
- name: Install uv
|
||||||
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0
|
uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0
|
||||||
with:
|
with:
|
||||||
python-version: 3.11
|
python-version: 3.11
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
@@ -650,7 +650,7 @@ jobs:
|
|||||||
working-directory: ./.github
|
working-directory: ./.github
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -661,9 +661,9 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
|
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||||
with:
|
with:
|
||||||
node-version-file: './.github/.nvmrc'
|
node-version-file: './.github/.nvmrc'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
@@ -680,7 +680,7 @@ jobs:
|
|||||||
contents: read
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -701,7 +701,7 @@ jobs:
|
|||||||
contents: read
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -712,9 +712,9 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
|
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||||
with:
|
with:
|
||||||
node-version-file: './server/.nvmrc'
|
node-version-file: './server/.nvmrc'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
@@ -763,7 +763,7 @@ jobs:
|
|||||||
working-directory: ./server
|
working-directory: ./server
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -774,9 +774,9 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
token: ${{ steps.token.outputs.token }}
|
token: ${{ steps.token.outputs.token }}
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
|
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||||
with:
|
with:
|
||||||
node-version-file: './server/.nvmrc'
|
node-version-file: './server/.nvmrc'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
|||||||
@@ -24,14 +24,14 @@ jobs:
|
|||||||
should_run: ${{ steps.check.outputs.should_run }}
|
should_run: ${{ steps.check.outputs.should_run }}
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
|
|
||||||
- name: Check what should run
|
- name: Check what should run
|
||||||
id: check
|
id: check
|
||||||
uses: immich-app/devtools/actions/pre-job@f50e3b600b6ac1763ddb8f3dfc69093512b967a1 # pre-job-action-v2.0.3
|
uses: immich-app/devtools/actions/pre-job@eed0f8b8165ffcb951f2ba854b2dd031935e1d73 # pre-job-action-v2.0.2
|
||||||
with:
|
with:
|
||||||
github-token: ${{ steps.token.outputs.token }}
|
github-token: ${{ steps.token.outputs.token }}
|
||||||
filters: |
|
filters: |
|
||||||
@@ -47,7 +47,7 @@ jobs:
|
|||||||
if: ${{ fromJSON(needs.pre-job.outputs.should_run).i18n == true }}
|
if: ${{ fromJSON(needs.pre-job.outputs.should_run).i18n == true }}
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@57ff6ebfd507b045514442683ff06ff1b2f6efbd # create-workflow-token-action-v1.0.2
|
uses: immich-app/devtools/actions/create-workflow-token@05e16407c0a5492138bb38139c9d9bf067b40886 # create-workflow-token-action-v1.0.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
|
|||||||
Vendored
+1
-8
@@ -5,13 +5,6 @@
|
|||||||
"dbaeumer.vscode-eslint",
|
"dbaeumer.vscode-eslint",
|
||||||
"dart-code.flutter",
|
"dart-code.flutter",
|
||||||
"dart-code.dart-code",
|
"dart-code.dart-code",
|
||||||
"dcmdev.dcm-vscode-extension",
|
"dcmdev.dcm-vscode-extension"
|
||||||
"bradlc.vscode-tailwindcss",
|
|
||||||
"ms-playwright.playwright",
|
|
||||||
"vitest.explorer",
|
|
||||||
"editorconfig.editorconfig",
|
|
||||||
"foxundermoon.shell-format",
|
|
||||||
"timonwong.shellcheck",
|
|
||||||
"bluebrown.yamlfmt"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+13
-35
@@ -1,7 +1,8 @@
|
|||||||
{
|
{
|
||||||
"[css]": {
|
"[css]": {
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
"editor.formatOnSave": true
|
"editor.formatOnSave": true,
|
||||||
|
"editor.tabSize": 2
|
||||||
},
|
},
|
||||||
"[dart]": {
|
"[dart]": {
|
||||||
"editor.defaultFormatter": "Dart-Code.dart-code",
|
"editor.defaultFormatter": "Dart-Code.dart-code",
|
||||||
@@ -18,15 +19,18 @@
|
|||||||
"source.removeUnusedImports": "explicit"
|
"source.removeUnusedImports": "explicit"
|
||||||
},
|
},
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
"editor.formatOnSave": true
|
"editor.formatOnSave": true,
|
||||||
|
"editor.tabSize": 2
|
||||||
},
|
},
|
||||||
"[json]": {
|
"[json]": {
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
"editor.formatOnSave": true
|
"editor.formatOnSave": true,
|
||||||
|
"editor.tabSize": 2
|
||||||
},
|
},
|
||||||
"[jsonc]": {
|
"[jsonc]": {
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
"editor.formatOnSave": true
|
"editor.formatOnSave": true,
|
||||||
|
"editor.tabSize": 2
|
||||||
},
|
},
|
||||||
"[svelte]": {
|
"[svelte]": {
|
||||||
"editor.codeActionsOnSave": {
|
"editor.codeActionsOnSave": {
|
||||||
@@ -34,7 +38,8 @@
|
|||||||
"source.removeUnusedImports": "explicit"
|
"source.removeUnusedImports": "explicit"
|
||||||
},
|
},
|
||||||
"editor.defaultFormatter": "svelte.svelte-vscode",
|
"editor.defaultFormatter": "svelte.svelte-vscode",
|
||||||
"editor.formatOnSave": true
|
"editor.formatOnSave": true,
|
||||||
|
"editor.tabSize": 2
|
||||||
},
|
},
|
||||||
"[typescript]": {
|
"[typescript]": {
|
||||||
"editor.codeActionsOnSave": {
|
"editor.codeActionsOnSave": {
|
||||||
@@ -42,45 +47,18 @@
|
|||||||
"source.removeUnusedImports": "explicit"
|
"source.removeUnusedImports": "explicit"
|
||||||
},
|
},
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
"editor.formatOnSave": true
|
"editor.formatOnSave": true,
|
||||||
|
"editor.tabSize": 2
|
||||||
},
|
},
|
||||||
"cSpell.words": ["immich"],
|
"cSpell.words": ["immich"],
|
||||||
"css.lint.unknownAtRules": "ignore",
|
|
||||||
"editor.bracketPairColorization.enabled": true,
|
|
||||||
"editor.formatOnSave": true,
|
"editor.formatOnSave": true,
|
||||||
"eslint.useFlatConfig": true,
|
|
||||||
"eslint.validate": ["javascript", "typescript", "svelte"],
|
"eslint.validate": ["javascript", "typescript", "svelte"],
|
||||||
"eslint.workingDirectories": [
|
|
||||||
{ "directory": "cli", "changeProcessCWD": true },
|
|
||||||
{ "directory": "e2e", "changeProcessCWD": true },
|
|
||||||
{ "directory": "server", "changeProcessCWD": true },
|
|
||||||
{ "directory": "web", "changeProcessCWD": true }
|
|
||||||
],
|
|
||||||
"files.watcherExclude": {
|
|
||||||
"**/.jj/**": true,
|
|
||||||
"**/.git/**": true,
|
|
||||||
"**/node_modules/**": true,
|
|
||||||
"**/build/**": true,
|
|
||||||
"**/dist/**": true,
|
|
||||||
"**/.svelte-kit/**": true
|
|
||||||
},
|
|
||||||
"explorer.fileNesting.enabled": true,
|
"explorer.fileNesting.enabled": true,
|
||||||
"explorer.fileNesting.patterns": {
|
"explorer.fileNesting.patterns": {
|
||||||
"*.dart": "${capture}.g.dart,${capture}.gr.dart,${capture}.drift.dart",
|
"*.dart": "${capture}.g.dart,${capture}.gr.dart,${capture}.drift.dart",
|
||||||
"*.ts": "${capture}.spec.ts,${capture}.mock.ts",
|
"*.ts": "${capture}.spec.ts,${capture}.mock.ts",
|
||||||
"package.json": "package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb, bun.lock, pnpm-workspace.yaml, .pnpmfile.cjs"
|
"package.json": "package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb, bun.lock, pnpm-workspace.yaml, .pnpmfile.cjs"
|
||||||
},
|
},
|
||||||
"search.exclude": {
|
|
||||||
"**/node_modules": true,
|
|
||||||
"**/build": true,
|
|
||||||
"**/dist": true,
|
|
||||||
"**/.svelte-kit": true,
|
|
||||||
"**/open-api/typescript-sdk/src": true
|
|
||||||
},
|
|
||||||
"svelte.enable-ts-plugin": true,
|
"svelte.enable-ts-plugin": true,
|
||||||
"tailwindCSS.experimental.configFile": {
|
"typescript.preferences.importModuleSpecifier": "non-relative"
|
||||||
"web/src/app.css": "web/src/**"
|
|
||||||
},
|
|
||||||
"js/ts.preferences.importModuleSpecifier": "non-relative",
|
|
||||||
"vitest.maximumConfigs": 10
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,8 +15,6 @@ Please try to keep pull requests as focused as possible. A PR should do exactly
|
|||||||
|
|
||||||
If you are looking for something to work on, there are discussions and issues with a `good-first-issue` label on them. These are always a good starting point. If none of them sound interesting or fit your skill set, feel free to reach out on our Discord. We're happy to help you find something to work on!
|
If you are looking for something to work on, there are discussions and issues with a `good-first-issue` label on them. These are always a good starting point. If none of them sound interesting or fit your skill set, feel free to reach out on our Discord. We're happy to help you find something to work on!
|
||||||
|
|
||||||
We usually do not assign issues to new contributors, since it happens often that a PR is never even opened. Again, reach out on Discord if you fear putting a lot of time into fixing an issue, but ending up with a duplicate PR.
|
|
||||||
|
|
||||||
## Use of generative AI
|
## Use of generative AI
|
||||||
|
|
||||||
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.
|
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.
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ attach-server:
|
|||||||
docker exec -it docker_immich-server_1 sh
|
docker exec -it docker_immich-server_1 sh
|
||||||
|
|
||||||
renovate:
|
renovate:
|
||||||
LOG_LEVEL=debug pnpm exec renovate --platform=local --repository-cache=reset
|
LOG_LEVEL=debug npx renovate --platform=local --repository-cache=reset
|
||||||
|
|
||||||
# Directories that need to be created for volumes or build output
|
# Directories that need to be created for volumes or build output
|
||||||
VOLUME_DIRS = \
|
VOLUME_DIRS = \
|
||||||
|
|||||||
+14
-13
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@immich/cli",
|
"name": "@immich/cli",
|
||||||
"version": "2.6.2",
|
"version": "2.5.6",
|
||||||
"description": "Command Line Interface (CLI) for Immich",
|
"description": "Command Line Interface (CLI) for Immich",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"exports": "./dist/index.js",
|
"exports": "./dist/index.js",
|
||||||
@@ -13,30 +13,31 @@
|
|||||||
"cli"
|
"cli"
|
||||||
],
|
],
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "^10.0.0",
|
"@eslint/js": "^9.8.0",
|
||||||
"@immich/sdk": "workspace:*",
|
"@immich/sdk": "workspace:*",
|
||||||
"@types/byte-size": "^8.1.0",
|
"@types/byte-size": "^8.1.0",
|
||||||
"@types/cli-progress": "^3.11.0",
|
"@types/cli-progress": "^3.11.0",
|
||||||
"@types/lodash-es": "^4.17.12",
|
"@types/lodash-es": "^4.17.12",
|
||||||
"@types/micromatch": "^4.0.9",
|
"@types/micromatch": "^4.0.9",
|
||||||
"@types/mock-fs": "^4.13.1",
|
"@types/mock-fs": "^4.13.1",
|
||||||
"@types/node": "^24.11.0",
|
"@types/node": "^24.10.13",
|
||||||
"@vitest/coverage-v8": "^4.0.0",
|
"@vitest/coverage-v8": "^3.0.0",
|
||||||
"byte-size": "^9.0.0",
|
"byte-size": "^9.0.0",
|
||||||
"cli-progress": "^3.12.0",
|
"cli-progress": "^3.12.0",
|
||||||
"commander": "^12.0.0",
|
"commander": "^12.0.0",
|
||||||
"eslint": "^10.0.0",
|
"eslint": "^9.14.0",
|
||||||
"eslint-config-prettier": "^10.1.8",
|
"eslint-config-prettier": "^10.1.8",
|
||||||
"eslint-plugin-prettier": "^5.1.3",
|
"eslint-plugin-prettier": "^5.1.3",
|
||||||
"eslint-plugin-unicorn": "^63.0.0",
|
"eslint-plugin-unicorn": "^62.0.0",
|
||||||
"globals": "^17.0.0",
|
"globals": "^16.0.0",
|
||||||
"mock-fs": "^5.2.0",
|
"mock-fs": "^5.2.0",
|
||||||
"prettier": "^3.7.4",
|
"prettier": "^3.7.4",
|
||||||
"prettier-plugin-organize-imports": "^4.0.0",
|
"prettier-plugin-organize-imports": "^4.0.0",
|
||||||
"typescript": "^5.3.3",
|
"typescript": "^5.3.3",
|
||||||
"typescript-eslint": "^8.28.0",
|
"typescript-eslint": "^8.28.0",
|
||||||
"vite": "^8.0.0",
|
"vite": "^7.0.0",
|
||||||
"vitest": "^4.0.0",
|
"vite-tsconfig-paths": "^6.0.0",
|
||||||
|
"vitest": "^3.0.0",
|
||||||
"vitest-fetch-mock": "^0.4.0",
|
"vitest-fetch-mock": "^0.4.0",
|
||||||
"yaml": "^2.3.1"
|
"yaml": "^2.3.1"
|
||||||
},
|
},
|
||||||
@@ -44,12 +45,12 @@
|
|||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
"build:dev": "vite build --sourcemap true",
|
"build:dev": "vite build --sourcemap true",
|
||||||
"lint": "eslint \"src/**/*.ts\" --max-warnings 0",
|
"lint": "eslint \"src/**/*.ts\" --max-warnings 0",
|
||||||
"lint:fix": "pnpm run lint --fix",
|
"lint:fix": "npm run lint -- --fix",
|
||||||
"prepack": "pnpm run build",
|
"prepack": "npm run build",
|
||||||
"test": "vitest",
|
"test": "vitest",
|
||||||
"test:cov": "vitest --coverage",
|
"test:cov": "vitest --coverage",
|
||||||
"format": "prettier --cache --check .",
|
"format": "prettier --check .",
|
||||||
"format:fix": "prettier --cache --write --list-different .",
|
"format:fix": "prettier --write .",
|
||||||
"check": "tsc --noEmit"
|
"check": "tsc --noEmit"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import fs from 'node:fs';
|
import * as fs from 'node:fs';
|
||||||
import os from 'node:os';
|
import * as os from 'node:os';
|
||||||
import path from 'node:path';
|
import * as path from 'node:path';
|
||||||
import { setTimeout as sleep } from 'node:timers/promises';
|
import { setTimeout as sleep } from 'node:timers/promises';
|
||||||
import { describe, expect, it, MockedFunction, vi } from 'vitest';
|
import { describe, expect, it, MockedFunction, vi } from 'vitest';
|
||||||
|
|
||||||
@@ -58,7 +58,7 @@ describe('uploadFiles', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('returns new assets when upload file is successful', async () => {
|
it('returns new assets when upload file is successful', async () => {
|
||||||
fetchMocker.doMockIf(new RegExp(`${baseUrl}/assets$`), function () {
|
fetchMocker.doMockIf(new RegExp(`${baseUrl}/assets$`), () => {
|
||||||
return {
|
return {
|
||||||
status: 200,
|
status: 200,
|
||||||
body: JSON.stringify({ id: 'fc5621b1-86f6-44a1-9905-403e607df9f5', status: 'created' }),
|
body: JSON.stringify({ id: 'fc5621b1-86f6-44a1-9905-403e607df9f5', status: 'created' }),
|
||||||
@@ -75,7 +75,7 @@ describe('uploadFiles', () => {
|
|||||||
|
|
||||||
it('returns new assets when upload file retry is successful', async () => {
|
it('returns new assets when upload file retry is successful', async () => {
|
||||||
let counter = 0;
|
let counter = 0;
|
||||||
fetchMocker.doMockIf(new RegExp(`${baseUrl}/assets$`), function () {
|
fetchMocker.doMockIf(new RegExp(`${baseUrl}/assets$`), () => {
|
||||||
counter++;
|
counter++;
|
||||||
if (counter < retry) {
|
if (counter < retry) {
|
||||||
throw new Error('Network error');
|
throw new Error('Network error');
|
||||||
@@ -96,7 +96,7 @@ describe('uploadFiles', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('returns new assets when upload file retry is failed', async () => {
|
it('returns new assets when upload file retry is failed', async () => {
|
||||||
fetchMocker.doMockIf(new RegExp(`${baseUrl}/assets$`), function () {
|
fetchMocker.doMockIf(new RegExp(`${baseUrl}/assets$`), () => {
|
||||||
throw new Error('Network error');
|
throw new Error('Network error');
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -236,8 +236,7 @@ describe('startWatch', () => {
|
|||||||
await sleep(100); // to debounce the watcher from considering the test file as a existing file
|
await sleep(100); // to debounce the watcher from considering the test file as a existing file
|
||||||
await fs.promises.writeFile(testFilePath, 'testjpg');
|
await fs.promises.writeFile(testFilePath, 'testjpg');
|
||||||
|
|
||||||
await vi.waitFor(
|
await vi.waitUntil(() => checkBulkUploadMocked.mock.calls.length > 0, 3000);
|
||||||
() =>
|
|
||||||
expect(checkBulkUpload).toHaveBeenCalledWith({
|
expect(checkBulkUpload).toHaveBeenCalledWith({
|
||||||
assetBulkUploadCheckDto: {
|
assetBulkUploadCheckDto: {
|
||||||
assets: [
|
assets: [
|
||||||
@@ -246,9 +245,7 @@ describe('startWatch', () => {
|
|||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
}),
|
});
|
||||||
{ timeout: 5000 },
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should filter out unsupported files', async () => {
|
it('should filter out unsupported files', async () => {
|
||||||
@@ -260,8 +257,7 @@ describe('startWatch', () => {
|
|||||||
await fs.promises.writeFile(testFilePath, 'testjpg');
|
await fs.promises.writeFile(testFilePath, 'testjpg');
|
||||||
await fs.promises.writeFile(unsupportedFilePath, 'testtxt');
|
await fs.promises.writeFile(unsupportedFilePath, 'testtxt');
|
||||||
|
|
||||||
await vi.waitFor(
|
await vi.waitUntil(() => checkBulkUploadMocked.mock.calls.length > 0, 3000);
|
||||||
() =>
|
|
||||||
expect(checkBulkUpload).toHaveBeenCalledWith({
|
expect(checkBulkUpload).toHaveBeenCalledWith({
|
||||||
assetBulkUploadCheckDto: {
|
assetBulkUploadCheckDto: {
|
||||||
assets: expect.arrayContaining([
|
assets: expect.arrayContaining([
|
||||||
@@ -270,9 +266,7 @@ describe('startWatch', () => {
|
|||||||
}),
|
}),
|
||||||
]),
|
]),
|
||||||
},
|
},
|
||||||
}),
|
});
|
||||||
{ timeout: 5000 },
|
|
||||||
);
|
|
||||||
|
|
||||||
expect(checkBulkUpload).not.toHaveBeenCalledWith({
|
expect(checkBulkUpload).not.toHaveBeenCalledWith({
|
||||||
assetBulkUploadCheckDto: {
|
assetBulkUploadCheckDto: {
|
||||||
@@ -297,8 +291,7 @@ describe('startWatch', () => {
|
|||||||
await fs.promises.writeFile(testFilePath, 'testjpg');
|
await fs.promises.writeFile(testFilePath, 'testjpg');
|
||||||
await fs.promises.writeFile(ignoredFilePath, 'ignoredjpg');
|
await fs.promises.writeFile(ignoredFilePath, 'ignoredjpg');
|
||||||
|
|
||||||
await vi.waitFor(
|
await vi.waitUntil(() => checkBulkUploadMocked.mock.calls.length > 0, 3000);
|
||||||
() =>
|
|
||||||
expect(checkBulkUpload).toHaveBeenCalledWith({
|
expect(checkBulkUpload).toHaveBeenCalledWith({
|
||||||
assetBulkUploadCheckDto: {
|
assetBulkUploadCheckDto: {
|
||||||
assets: expect.arrayContaining([
|
assets: expect.arrayContaining([
|
||||||
@@ -307,9 +300,7 @@ describe('startWatch', () => {
|
|||||||
}),
|
}),
|
||||||
]),
|
]),
|
||||||
},
|
},
|
||||||
}),
|
});
|
||||||
{ timeout: 5000 },
|
|
||||||
);
|
|
||||||
|
|
||||||
expect(checkBulkUpload).not.toHaveBeenCalledWith({
|
expect(checkBulkUpload).not.toHaveBeenCalledWith({
|
||||||
assetBulkUploadCheckDto: {
|
assetBulkUploadCheckDto: {
|
||||||
|
|||||||
+1
-1
@@ -81,7 +81,7 @@ export const connect = async (url: string, key: string) => {
|
|||||||
|
|
||||||
const [error] = await withError(getMyUser());
|
const [error] = await withError(getMyUser());
|
||||||
if (isHttpError(error)) {
|
if (isHttpError(error)) {
|
||||||
logError(error, `Failed to connect to server ${url}`);
|
logError(error, 'Failed to connect to server');
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
-11
@@ -1,12 +1,10 @@
|
|||||||
import { defineConfig, UserConfig } from 'vite';
|
import { defineConfig } from 'vite';
|
||||||
|
import tsconfigPaths from 'vite-tsconfig-paths';
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
resolve: {
|
resolve: { alias: { src: '/src' } },
|
||||||
alias: { src: '/src' },
|
|
||||||
tsconfigPaths: true,
|
|
||||||
},
|
|
||||||
build: {
|
build: {
|
||||||
rolldownOptions: {
|
rollupOptions: {
|
||||||
input: 'src/index.ts',
|
input: 'src/index.ts',
|
||||||
output: {
|
output: {
|
||||||
dir: 'dist',
|
dir: 'dist',
|
||||||
@@ -18,8 +16,5 @@ export default defineConfig({
|
|||||||
// bundle everything except for Node built-ins
|
// bundle everything except for Node built-ins
|
||||||
noExternal: /^(?!node:).*$/,
|
noExternal: /^(?!node:).*$/,
|
||||||
},
|
},
|
||||||
test: {
|
plugins: [tsconfigPaths()],
|
||||||
name: 'cli:unit',
|
});
|
||||||
globals: true,
|
|
||||||
},
|
|
||||||
} as UserConfig);
|
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
import { defineConfig } from 'vitest/config';
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
test: {
|
||||||
|
globals: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
[tools]
|
[tools]
|
||||||
terragrunt = "0.99.4"
|
terragrunt = "0.98.0"
|
||||||
opentofu = "1.11.5"
|
opentofu = "1.11.4"
|
||||||
|
|
||||||
[tasks."tg:fmt"]
|
[tasks."tg:fmt"]
|
||||||
run = "terragrunt hclfmt"
|
run = "terragrunt hclfmt"
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ services:
|
|||||||
|
|
||||||
redis:
|
redis:
|
||||||
container_name: immich_redis
|
container_name: immich_redis
|
||||||
image: docker.io/valkey/valkey:9@sha256:3eeb09785cd61ec8e3be35f8804c8892080f3ca21934d628abc24ee4ed1698f6
|
image: docker.io/valkey/valkey:9@sha256:930b41430fb727f533c5982fe509b6f04233e26d0f7354e04de4b0d5c706e44e
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: redis-cli ping || exit 1
|
test: redis-cli ping || exit 1
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ services:
|
|||||||
|
|
||||||
redis:
|
redis:
|
||||||
container_name: immich_redis
|
container_name: immich_redis
|
||||||
image: docker.io/valkey/valkey:9@sha256:3eeb09785cd61ec8e3be35f8804c8892080f3ca21934d628abc24ee4ed1698f6
|
image: docker.io/valkey/valkey:9@sha256:930b41430fb727f533c5982fe509b6f04233e26d0f7354e04de4b0d5c706e44e
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: redis-cli ping || exit 1
|
test: redis-cli ping || exit 1
|
||||||
restart: always
|
restart: always
|
||||||
@@ -85,7 +85,7 @@ services:
|
|||||||
container_name: immich_prometheus
|
container_name: immich_prometheus
|
||||||
ports:
|
ports:
|
||||||
- 9090:9090
|
- 9090:9090
|
||||||
image: prom/prometheus@sha256:4a61322ac1103a0e3aea2a61ef1718422a48fa046441f299d71e660a3bc71ae9
|
image: prom/prometheus@sha256:1f0f50f06acaceb0f5670d2c8a658a599affe7b0d8e78b898c1035653849a702
|
||||||
volumes:
|
volumes:
|
||||||
- ./prometheus.yml:/etc/prometheus/prometheus.yml
|
- ./prometheus.yml:/etc/prometheus/prometheus.yml
|
||||||
- prometheus-data:/prometheus
|
- prometheus-data:/prometheus
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ services:
|
|||||||
|
|
||||||
redis:
|
redis:
|
||||||
container_name: immich_redis
|
container_name: immich_redis
|
||||||
image: docker.io/valkey/valkey:9@sha256:3eeb09785cd61ec8e3be35f8804c8892080f3ca21934d628abc24ee4ed1698f6
|
image: docker.io/valkey/valkey:9@sha256:930b41430fb727f533c5982fe509b6f04233e26d0f7354e04de4b0d5c706e44e
|
||||||
user: '1000:1000'
|
user: '1000:1000'
|
||||||
security_opt:
|
security_opt:
|
||||||
- no-new-privileges:true
|
- no-new-privileges:true
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ services:
|
|||||||
|
|
||||||
redis:
|
redis:
|
||||||
container_name: immich_redis
|
container_name: immich_redis
|
||||||
image: docker.io/valkey/valkey:9@sha256:3eeb09785cd61ec8e3be35f8804c8892080f3ca21934d628abc24ee4ed1698f6
|
image: docker.io/valkey/valkey:9@sha256:930b41430fb727f533c5982fe509b6f04233e26d0f7354e04de4b0d5c706e44e
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: redis-cli ping || exit 1
|
test: redis-cli ping || exit 1
|
||||||
restart: always
|
restart: always
|
||||||
|
|||||||
@@ -67,8 +67,7 @@ graph TD
|
|||||||
C --> D["Thumbnail Generation (Large, small, blurred and person)"]
|
C --> D["Thumbnail Generation (Large, small, blurred and person)"]
|
||||||
D --> E[Smart Search]
|
D --> E[Smart Search]
|
||||||
D --> F[Face Detection]
|
D --> F[Face Detection]
|
||||||
D --> G[OCR]
|
D --> G[Video Transcoding]
|
||||||
D --> H[Video Transcoding]
|
E --> H[Duplicate Detection]
|
||||||
E --> I[Duplicate Detection]
|
F --> I[Facial Recognition]
|
||||||
F --> J[Facial Recognition]
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -230,7 +230,7 @@ The default value is `ultrafast`.
|
|||||||
|
|
||||||
### Audio codec (`ffmpeg.targetAudioCodec`) {#ffmpeg.targetAudioCodec}
|
### Audio codec (`ffmpeg.targetAudioCodec`) {#ffmpeg.targetAudioCodec}
|
||||||
|
|
||||||
Which audio codec to use when the audio stream is being transcoded. Can be one of `mp3`, `aac`, `opus`.
|
Which audio codec to use when the audio stream is being transcoded. Can be one of `mp3`, `aac`, `libopus`.
|
||||||
|
|
||||||
The default value is `aac`.
|
The default value is `aac`.
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ Immich has three main clients:
|
|||||||
3. CLI - Command-line utility for bulk upload
|
3. CLI - Command-line utility for bulk upload
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
All three clients use [OpenAPI](/api.md) to auto-generate rest clients for easy integration. For more information about this process, see [OpenAPI](/api.md).
|
All three clients use [OpenAPI](./open-api.md) to auto-generate rest clients for easy integration. For more information about this process, see [OpenAPI](./open-api.md).
|
||||||
:::
|
:::
|
||||||
|
|
||||||
### Mobile App
|
### Mobile App
|
||||||
@@ -71,7 +71,7 @@ An incoming HTTP request is mapped to a controller (`src/controllers`). Controll
|
|||||||
|
|
||||||
### Domain Transfer Objects (DTOs)
|
### Domain Transfer Objects (DTOs)
|
||||||
|
|
||||||
The server uses [Domain Transfer Objects](https://en.wikipedia.org/wiki/Data_transfer_object) as public interfaces for the inputs (query, params, and body) and outputs (response) for each endpoint. DTOs translate to [OpenAPI](/api.md) schemas and control the generated code used by each client.
|
The server uses [Domain Transfer Objects](https://en.wikipedia.org/wiki/Data_transfer_object) as public interfaces for the inputs (query, params, and body) and outputs (response) for each endpoint. DTOs translate to [OpenAPI](./open-api.md) schemas and control the generated code used by each client.
|
||||||
|
|
||||||
### Background Jobs
|
### Background Jobs
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# API
|
# OpenAPI
|
||||||
|
|
||||||
Immich uses the [OpenAPI](https://swagger.io/specification/) standard to generate API documentation. To view the published docs see [here](https://api.immich.app/).
|
Immich uses the [OpenAPI](https://swagger.io/specification/) standard to generate API documentation. To view the published docs see [here](https://api.immich.app/).
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@ You can use `dart fix --apply` and `dcm fix lib` to potentially correct some iss
|
|||||||
|
|
||||||
## OpenAPI
|
## OpenAPI
|
||||||
|
|
||||||
The OpenAPI client libraries need to be regenerated whenever there are changes to the `immich-openapi-specs.json` file. Note that you should not modify this file directly as it is auto-generated. See [OpenAPI](/api.md) for more details.
|
The OpenAPI client libraries need to be regenerated whenever there are changes to the `immich-openapi-specs.json` file. Note that you should not modify this file directly as it is auto-generated. See [OpenAPI](/developer/open-api.md) for more details.
|
||||||
|
|
||||||
## Database Migrations
|
## Database Migrations
|
||||||
|
|
||||||
|
|||||||
@@ -80,10 +80,6 @@ There is an automatic scan job that is scheduled to run once a day. Its schedule
|
|||||||
|
|
||||||
This job also cleans up any libraries stuck in deletion. It is possible to trigger the cleanup by clicking "Scan all libraries" in the library management page.
|
This job also cleans up any libraries stuck in deletion. It is possible to trigger the cleanup by clicking "Scan all libraries" in the library management page.
|
||||||
|
|
||||||
### Deleting a Library
|
|
||||||
|
|
||||||
When deleting an external library, all assets inside are immediately deleted along with the library. Note that while a library can take a long time to fully delete in the background, it is immediately removed from the library list. If the deletion process is interrupted (for example, due to server restart), it will be cleaned up in the next nightly cron job. The cleanup process can also be manually initiated by clicking the "Scan All Libraries" button in the library list.
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Let's show a concrete example where we add an existing gallery to Immich. Here, we have the following folders we want to add:
|
Let's show a concrete example where we add an existing gallery to Immich. Here, we have the following folders we want to add:
|
||||||
|
|||||||
@@ -50,7 +50,6 @@ You do not need to redo any machine learning jobs after enabling hardware accele
|
|||||||
- The GPU must be supported by ROCm. If it isn't officially supported, you can attempt to use the `HSA_OVERRIDE_GFX_VERSION` environmental variable: `HSA_OVERRIDE_GFX_VERSION=<a supported version, e.g. 10.3.0>`. If this doesn't work, you might need to also set `HSA_USE_SVM=0`.
|
- The GPU must be supported by ROCm. If it isn't officially supported, you can attempt to use the `HSA_OVERRIDE_GFX_VERSION` environmental variable: `HSA_OVERRIDE_GFX_VERSION=<a supported version, e.g. 10.3.0>`. If this doesn't work, you might need to also set `HSA_USE_SVM=0`.
|
||||||
- The ROCm image is quite large and requires at least 35GiB of free disk space. However, pulling later updates to the service through Docker will generally only amount to a few hundred megabytes as the rest will be cached.
|
- The ROCm image is quite large and requires at least 35GiB of free disk space. However, pulling later updates to the service through Docker will generally only amount to a few hundred megabytes as the rest will be cached.
|
||||||
- This backend is new and may experience some issues. For example, GPU power consumption can be higher than usual after running inference, even if the machine learning service is idle. In this case, it will only go back to normal after being idle for 5 minutes (configurable with the [MACHINE_LEARNING_MODEL_TTL](/install/environment-variables) setting).
|
- This backend is new and may experience some issues. For example, GPU power consumption can be higher than usual after running inference, even if the machine learning service is idle. In this case, it will only go back to normal after being idle for 5 minutes (configurable with the [MACHINE_LEARNING_MODEL_TTL](/install/environment-variables) setting).
|
||||||
- MIGraphX is a new backend for AMD cards, which compiles models at runtime. As such, the first few inferences will be slow.
|
|
||||||
|
|
||||||
#### OpenVINO
|
#### OpenVINO
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ The default configuration looks like this:
|
|||||||
"ffmpeg": {
|
"ffmpeg": {
|
||||||
"accel": "disabled",
|
"accel": "disabled",
|
||||||
"accelDecode": false,
|
"accelDecode": false,
|
||||||
"acceptedAudioCodecs": ["aac", "mp3", "opus"],
|
"acceptedAudioCodecs": ["aac", "mp3", "libopus"],
|
||||||
"acceptedContainers": ["mov", "ogg", "webm"],
|
"acceptedContainers": ["mov", "ogg", "webm"],
|
||||||
"acceptedVideoCodecs": ["h264"],
|
"acceptedVideoCodecs": ["h264"],
|
||||||
"bframes": -1,
|
"bframes": -1,
|
||||||
|
|||||||
@@ -166,8 +166,6 @@ Redis (Sentinel) URL example JSON before encoding:
|
|||||||
| `MACHINE_LEARNING_PRELOAD__CLIP__VISUAL` | Comma-separated list of (visual) CLIP model(s) to preload and cache | | machine learning |
|
| `MACHINE_LEARNING_PRELOAD__CLIP__VISUAL` | Comma-separated list of (visual) CLIP model(s) to preload and cache | | machine learning |
|
||||||
| `MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__RECOGNITION` | Comma-separated list of (recognition) facial recognition model(s) to preload and cache | | machine learning |
|
| `MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__RECOGNITION` | Comma-separated list of (recognition) facial recognition model(s) to preload and cache | | machine learning |
|
||||||
| `MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__DETECTION` | Comma-separated list of (detection) facial recognition model(s) to preload and cache | | machine learning |
|
| `MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__DETECTION` | Comma-separated list of (detection) facial recognition model(s) to preload and cache | | machine learning |
|
||||||
| `MACHINE_LEARNING_PRELOAD__OCR__RECOGNITION` | Comma-separated list of (recognition) OCR model(s) to preload and cache | | machine learning |
|
|
||||||
| `MACHINE_LEARNING_PRELOAD__OCR__DETECTION` | Comma-separated list of (detection) OCR model(s) to preload and cache | | machine learning |
|
|
||||||
| `MACHINE_LEARNING_ANN` | Enable ARM-NN hardware acceleration if supported | `True` | machine learning |
|
| `MACHINE_LEARNING_ANN` | Enable ARM-NN hardware acceleration if supported | `True` | machine learning |
|
||||||
| `MACHINE_LEARNING_ANN_FP16_TURBO` | Execute operations in FP16 precision: increasing speed, reducing precision (applies only to ARM-NN) | `False` | machine learning |
|
| `MACHINE_LEARNING_ANN_FP16_TURBO` | Execute operations in FP16 precision: increasing speed, reducing precision (applies only to ARM-NN) | `False` | machine learning |
|
||||||
| `MACHINE_LEARNING_ANN_TUNING_LEVEL` | ARM-NN GPU tuning level (1: rapid, 2: normal, 3: exhaustive) | `2` | machine learning |
|
| `MACHINE_LEARNING_ANN_TUNING_LEVEL` | ARM-NN GPU tuning level (1: rapid, 2: normal, 3: exhaustive) | `2` | machine learning |
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ Hardware and software requirements for Immich:
|
|||||||
|
|
||||||
## Hardware
|
## Hardware
|
||||||
|
|
||||||
- **OS**: Recommended Linux or \*nix 64-bit operating system (Ubuntu, Debian, etc).
|
- **OS**: Recommended Linux or \*nix operating system (Ubuntu, Debian, etc).
|
||||||
- Non-Linux OSes tend to provide a poor Docker experience and are strongly discouraged.
|
- Non-Linux OSes tend to provide a poor Docker experience and are strongly discouraged.
|
||||||
Our ability to assist with setup or troubleshooting on non-Linux OSes will be severely reduced.
|
Our ability to assist with setup or troubleshooting on non-Linux OSes will be severely reduced.
|
||||||
If you still want to try to use a non-Linux OS, you can set it up as follows:
|
If you still want to try to use a non-Linux OS, you can set it up as follows:
|
||||||
@@ -19,10 +19,6 @@ Hardware and software requirements for Immich:
|
|||||||
If you have issues, we recommend that you switch to a supported VM deployment.
|
If you have issues, we recommend that you switch to a supported VM deployment.
|
||||||
- **RAM**: Minimum 6GB, recommended 8GB.
|
- **RAM**: Minimum 6GB, recommended 8GB.
|
||||||
- **CPU**: Minimum 2 cores, recommended 4 cores.
|
- **CPU**: Minimum 2 cores, recommended 4 cores.
|
||||||
- Immich runs on the `amd64` and `arm64` platforms.
|
|
||||||
Since `v2.6`, the machine learning container on `amd64` requires the `>= x86-64-v2` [microarchitecture level](https://en.wikipedia.org/wiki/X86-64#Microarchitecture_levels).
|
|
||||||
Most CPUs released since ~2012 support this microarchitecture.
|
|
||||||
If you are using a virtual machine, ensure you have selected a [supported microarchitecture](https://pve.proxmox.com/pve-docs/chapter-qm.html#_qemu_cpu_types).
|
|
||||||
- **Storage**: Recommended Unix-compatible filesystem (EXT4, ZFS, APFS, etc.) with support for user/group ownership and permissions.
|
- **Storage**: Recommended Unix-compatible filesystem (EXT4, ZFS, APFS, etc.) with support for user/group ownership and permissions.
|
||||||
- The generation of thumbnails and transcoded video can increase the size of the photo library by 10-20% on average.
|
- The generation of thumbnails and transcoded video can increase the size of the photo library by 10-20% on average.
|
||||||
|
|
||||||
|
|||||||
+48
-70
@@ -6,7 +6,7 @@ const prism = require('prism-react-renderer');
|
|||||||
/** @type {import('@docusaurus/types').Config} */
|
/** @type {import('@docusaurus/types').Config} */
|
||||||
const config = {
|
const config = {
|
||||||
title: 'Immich',
|
title: 'Immich',
|
||||||
tagline: 'Self-hosted photo and video management solution',
|
tagline: 'High performance self-hosted photo and video backup solution directly from your mobile phone',
|
||||||
url: 'https://docs.immich.app',
|
url: 'https://docs.immich.app',
|
||||||
baseUrl: '/',
|
baseUrl: '/',
|
||||||
onBrokenLinks: 'throw',
|
onBrokenLinks: 'throw',
|
||||||
@@ -93,15 +93,35 @@ const config = {
|
|||||||
position: 'right',
|
position: 'right',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
href: 'https://immich.app/',
|
to: '/overview/quick-start',
|
||||||
position: 'right',
|
position: 'right',
|
||||||
label: 'Home',
|
label: 'Docs',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
href: 'https://immich.app/roadmap',
|
||||||
|
position: 'right',
|
||||||
|
label: 'Roadmap',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
href: 'https://api.immich.app/',
|
||||||
|
position: 'right',
|
||||||
|
label: 'API',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
href: 'https://immich.store',
|
||||||
|
position: 'right',
|
||||||
|
label: 'Merch',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
href: 'https://github.com/immich-app/immich',
|
href: 'https://github.com/immich-app/immich',
|
||||||
label: 'GitHub',
|
label: 'GitHub',
|
||||||
position: 'right',
|
position: 'right',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
href: 'https://discord.immich.app',
|
||||||
|
label: 'Discord',
|
||||||
|
position: 'right',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
type: 'html',
|
type: 'html',
|
||||||
position: 'right',
|
position: 'right',
|
||||||
@@ -114,78 +134,19 @@ const config = {
|
|||||||
style: 'light',
|
style: 'light',
|
||||||
links: [
|
links: [
|
||||||
{
|
{
|
||||||
title: 'Download',
|
title: 'Overview',
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
label: 'Android',
|
label: 'Quick start',
|
||||||
href: 'https://get.immich.app/android',
|
to: '/overview/quick-start',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'iOS',
|
label: 'Installation',
|
||||||
href: 'https://get.immich.app/ios',
|
to: '/install/requirements',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Server',
|
label: 'Contributing',
|
||||||
href: 'https://immich.app/download',
|
to: '/overview/support-the-project',
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Company',
|
|
||||||
items: [
|
|
||||||
{
|
|
||||||
label: 'FUTO',
|
|
||||||
href: 'https://futo.tech/',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'Purchase',
|
|
||||||
href: 'https://buy.immich.app/',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'Merch',
|
|
||||||
href: 'https://immich.store/',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Sites',
|
|
||||||
items: [
|
|
||||||
{
|
|
||||||
label: 'Home',
|
|
||||||
href: 'https://immich.app',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'My Immich',
|
|
||||||
href: 'https://my.immich.app/',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'Awesome Immich',
|
|
||||||
href: 'https://awesome.immich.app/',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'Immich API',
|
|
||||||
href: 'https://api.immich.app/',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'Immich Data',
|
|
||||||
href: 'https://data.immich.app/',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'Immich Datasets',
|
|
||||||
href: 'https://datasets.immich.app/',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Miscellaneous',
|
|
||||||
items: [
|
|
||||||
{
|
|
||||||
label: 'Roadmap',
|
|
||||||
href: 'https://immich.app/roadmap',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'Cursed Knowledge',
|
|
||||||
href: 'https://immich.app/cursed-knowledge',
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Privacy Policy',
|
label: 'Privacy Policy',
|
||||||
@@ -194,7 +155,24 @@ const config = {
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Social',
|
title: 'Documentation',
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
label: 'Roadmap',
|
||||||
|
href: 'https://immich.app/roadmap',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'API',
|
||||||
|
href: 'https://api.immich.app/',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Cursed Knowledge',
|
||||||
|
href: 'https://immich.app/cursed-knowledge',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Links',
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
label: 'GitHub',
|
label: 'GitHub',
|
||||||
|
|||||||
+3
-3
@@ -4,11 +4,11 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"docusaurus": "docusaurus",
|
"docusaurus": "docusaurus",
|
||||||
"format": "prettier --cache --check .",
|
"format": "prettier --check .",
|
||||||
"format:fix": "prettier --cache --write --list-different .",
|
"format:fix": "prettier --write .",
|
||||||
"start": "docusaurus start --port 3005",
|
"start": "docusaurus start --port 3005",
|
||||||
"copy:openapi": "jq -c < ../open-api/immich-openapi-specs.json > ./static/openapi.json || exit 0",
|
"copy:openapi": "jq -c < ../open-api/immich-openapi-specs.json > ./static/openapi.json || exit 0",
|
||||||
"build": "pnpm run copy:openapi && docusaurus build",
|
"build": "npm run copy:openapi && docusaurus build",
|
||||||
"swizzle": "docusaurus swizzle",
|
"swizzle": "docusaurus swizzle",
|
||||||
"deploy": "docusaurus deploy",
|
"deploy": "docusaurus deploy",
|
||||||
"clear": "docusaurus clear",
|
"clear": "docusaurus clear",
|
||||||
|
|||||||
Vendored
-1
@@ -23,7 +23,6 @@
|
|||||||
/features/storage-template /administration/storage-template 307
|
/features/storage-template /administration/storage-template 307
|
||||||
/features/user-management /administration/user-management 307
|
/features/user-management /administration/user-management 307
|
||||||
/developer/contributing /developer/pr-checklist 307
|
/developer/contributing /developer/pr-checklist 307
|
||||||
/developer/open-api /api 307
|
|
||||||
/guides/machine-learning /guides/remote-machine-learning 307
|
/guides/machine-learning /guides/remote-machine-learning 307
|
||||||
/administration/password-login /administration/system-settings 307
|
/administration/password-login /administration/system-settings 307
|
||||||
/features/search /features/searching 307
|
/features/search /features/searching 307
|
||||||
|
|||||||
Vendored
-4
@@ -1,8 +1,4 @@
|
|||||||
[
|
[
|
||||||
{
|
|
||||||
"label": "v2.6.2",
|
|
||||||
"url": "https://docs.v2.6.2.archive.immich.app"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"label": "v2.5.6",
|
"label": "v2.5.6",
|
||||||
"url": "https://docs.v2.5.6.archive.immich.app"
|
"url": "https://docs.v2.5.6.archive.immich.app"
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ export enum OAuthClient {
|
|||||||
export enum OAuthUser {
|
export enum OAuthUser {
|
||||||
NO_EMAIL = 'no-email',
|
NO_EMAIL = 'no-email',
|
||||||
NO_NAME = 'no-name',
|
NO_NAME = 'no-name',
|
||||||
ID_TOKEN_CLAIMS = 'id-token-claims',
|
|
||||||
WITH_QUOTA = 'with-quota',
|
WITH_QUOTA = 'with-quota',
|
||||||
WITH_USERNAME = 'with-username',
|
WITH_USERNAME = 'with-username',
|
||||||
WITH_ROLE = 'with-role',
|
WITH_ROLE = 'with-role',
|
||||||
@@ -53,25 +52,12 @@ const withDefaultClaims = (sub: string) => ({
|
|||||||
email_verified: true,
|
email_verified: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
const getClaims = (sub: string, use?: string) => {
|
const getClaims = (sub: string) => claims.find((user) => user.sub === sub) || withDefaultClaims(sub);
|
||||||
if (sub === OAuthUser.ID_TOKEN_CLAIMS) {
|
|
||||||
return {
|
|
||||||
sub,
|
|
||||||
email: `oauth-${sub}@immich.app`,
|
|
||||||
email_verified: true,
|
|
||||||
name: use === 'id_token' ? 'ID Token User' : 'Userinfo User',
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return claims.find((user) => user.sub === sub) || withDefaultClaims(sub);
|
|
||||||
};
|
|
||||||
|
|
||||||
const setup = async () => {
|
const setup = async () => {
|
||||||
const { privateKey, publicKey } = await generateKeyPair('RS256');
|
const { privateKey, publicKey } = await generateKeyPair('RS256');
|
||||||
|
|
||||||
const redirectUris = [
|
const redirectUris = ['http://127.0.0.1:2285/auth/login', 'https://photos.immich.app/oauth/mobile-redirect'];
|
||||||
'http://127.0.0.1:2285/auth/login',
|
|
||||||
'https://photos.immich.app/oauth/mobile-redirect',
|
|
||||||
];
|
|
||||||
const port = 2286;
|
const port = 2286;
|
||||||
const host = '0.0.0.0';
|
const host = '0.0.0.0';
|
||||||
const oidc = new Provider(`http://${host}:${port}`, {
|
const oidc = new Provider(`http://${host}:${port}`, {
|
||||||
@@ -80,10 +66,7 @@ const setup = async () => {
|
|||||||
console.error(error);
|
console.error(error);
|
||||||
ctx.body = 'Internal Server Error';
|
ctx.body = 'Internal Server Error';
|
||||||
},
|
},
|
||||||
findAccount: (ctx, sub) => ({
|
findAccount: (ctx, sub) => ({ accountId: sub, claims: () => getClaims(sub) }),
|
||||||
accountId: sub,
|
|
||||||
claims: (use) => getClaims(sub, use),
|
|
||||||
}),
|
|
||||||
scopes: ['openid', 'email', 'profile'],
|
scopes: ['openid', 'email', 'profile'],
|
||||||
claims: {
|
claims: {
|
||||||
openid: ['sub'],
|
openid: ['sub'],
|
||||||
@@ -111,7 +94,6 @@ const setup = async () => {
|
|||||||
state: 'oidc.state',
|
state: 'oidc.state',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
conformIdTokenClaims: false,
|
|
||||||
pkce: {
|
pkce: {
|
||||||
required: () => false,
|
required: () => false,
|
||||||
},
|
},
|
||||||
@@ -143,10 +125,7 @@ const setup = async () => {
|
|||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
const onStart = () =>
|
const onStart = () => console.log(`[e2e-auth-server] http://${host}:${port}/.well-known/openid-configuration`);
|
||||||
console.log(
|
|
||||||
`[e2e-auth-server] http://${host}:${port}/.well-known/openid-configuration`,
|
|
||||||
);
|
|
||||||
const app = oidc.listen(port, host, onStart);
|
const app = oidc.listen(port, host, onStart);
|
||||||
return () => app.close();
|
return () => app.close();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ services:
|
|||||||
|
|
||||||
redis:
|
redis:
|
||||||
container_name: immich-e2e-redis
|
container_name: immich-e2e-redis
|
||||||
image: docker.io/valkey/valkey:9@sha256:3eeb09785cd61ec8e3be35f8804c8892080f3ca21934d628abc24ee4ed1698f6
|
image: docker.io/valkey/valkey:9@sha256:930b41430fb727f533c5982fe509b6f04233e26d0f7354e04de4b0d5c706e44e
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: redis-cli ping || exit 1
|
test: redis-cli ping || exit 1
|
||||||
|
|
||||||
|
|||||||
+17
-18
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "immich-e2e",
|
"name": "immich-e2e",
|
||||||
"version": "2.6.2",
|
"version": "2.5.6",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
@@ -8,23 +8,23 @@
|
|||||||
"test": "vitest --run",
|
"test": "vitest --run",
|
||||||
"test:watch": "vitest",
|
"test:watch": "vitest",
|
||||||
"test:maintenance": "vitest --run --config vitest.maintenance.config.ts",
|
"test:maintenance": "vitest --run --config vitest.maintenance.config.ts",
|
||||||
"test:web": "pnpm exec playwright test --project=web",
|
"test:web": "npx playwright test --project=web",
|
||||||
"test:web:maintenance": "pnpm exec playwright test --project=maintenance",
|
"test:web:maintenance": "npx playwright test --project=maintenance",
|
||||||
"test:web:ui": "pnpm exec playwright test --project=ui",
|
"test:web:ui": "npx playwright test --project=ui",
|
||||||
"start:web": "pnpm exec playwright test --ui --project=web",
|
"start:web": "npx playwright test --ui --project=web",
|
||||||
"start:web:maintenance": "pnpm exec playwright test --ui --project=maintenance",
|
"start:web:maintenance": "npx playwright test --ui --project=maintenance",
|
||||||
"start:web:ui": "pnpm exec playwright test --ui --project=ui",
|
"start:web:ui": "npx playwright test --ui --project=ui",
|
||||||
"format": "prettier --cache --check .",
|
"format": "prettier --check .",
|
||||||
"format:fix": "prettier --cache --write --list-different .",
|
"format:fix": "prettier --write .",
|
||||||
"lint": "eslint \"src/**/*.ts\" --max-warnings 0",
|
"lint": "eslint \"src/**/*.ts\" --max-warnings 0",
|
||||||
"lint:fix": "pnpm run lint --fix",
|
"lint:fix": "npm run lint -- --fix",
|
||||||
"check": "tsc --noEmit"
|
"check": "tsc --noEmit"
|
||||||
},
|
},
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "GNU Affero General Public License version 3",
|
"license": "GNU Affero General Public License version 3",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "^10.0.0",
|
"@eslint/js": "^9.8.0",
|
||||||
"@faker-js/faker": "^10.1.0",
|
"@faker-js/faker": "^10.1.0",
|
||||||
"@immich/cli": "workspace:*",
|
"@immich/cli": "workspace:*",
|
||||||
"@immich/e2e-auth-server": "workspace:*",
|
"@immich/e2e-auth-server": "workspace:*",
|
||||||
@@ -32,17 +32,17 @@
|
|||||||
"@playwright/test": "^1.44.1",
|
"@playwright/test": "^1.44.1",
|
||||||
"@socket.io/component-emitter": "^3.1.2",
|
"@socket.io/component-emitter": "^3.1.2",
|
||||||
"@types/luxon": "^3.4.2",
|
"@types/luxon": "^3.4.2",
|
||||||
"@types/node": "^24.11.0",
|
"@types/node": "^24.10.13",
|
||||||
"@types/pg": "^8.15.1",
|
"@types/pg": "^8.15.1",
|
||||||
"@types/pngjs": "^6.0.4",
|
"@types/pngjs": "^6.0.4",
|
||||||
"@types/supertest": "^6.0.2",
|
"@types/supertest": "^6.0.2",
|
||||||
"dotenv": "^17.2.3",
|
"dotenv": "^17.2.3",
|
||||||
"eslint": "^10.0.0",
|
"eslint": "^9.14.0",
|
||||||
"eslint-config-prettier": "^10.1.8",
|
"eslint-config-prettier": "^10.1.8",
|
||||||
"eslint-plugin-prettier": "^5.1.3",
|
"eslint-plugin-prettier": "^5.1.3",
|
||||||
"eslint-plugin-unicorn": "^63.0.0",
|
"eslint-plugin-unicorn": "^62.0.0",
|
||||||
"exiftool-vendored": "^35.0.0",
|
"exiftool-vendored": "^34.3.0",
|
||||||
"globals": "^17.0.0",
|
"globals": "^16.0.0",
|
||||||
"luxon": "^3.4.4",
|
"luxon": "^3.4.4",
|
||||||
"pg": "^8.11.3",
|
"pg": "^8.11.3",
|
||||||
"pngjs": "^7.0.0",
|
"pngjs": "^7.0.0",
|
||||||
@@ -54,8 +54,7 @@
|
|||||||
"typescript": "^5.3.3",
|
"typescript": "^5.3.3",
|
||||||
"typescript-eslint": "^8.28.0",
|
"typescript-eslint": "^8.28.0",
|
||||||
"utimes": "^5.2.1",
|
"utimes": "^5.2.1",
|
||||||
"vite-tsconfig-paths": "^6.1.1",
|
"vitest": "^3.0.0"
|
||||||
"vitest": "^4.0.0"
|
|
||||||
},
|
},
|
||||||
"volta": {
|
"volta": {
|
||||||
"node": "24.13.1"
|
"node": "24.13.1"
|
||||||
|
|||||||
@@ -524,19 +524,14 @@ describe('/albums', () => {
|
|||||||
expect(body).toEqual(errorDto.badRequest('Not found or no album.update access'));
|
expect(body).toEqual(errorDto.badRequest('Not found or no album.update access'));
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should be able to update as an editor', async () => {
|
it('should not be able to update as an editor', async () => {
|
||||||
const { status, body } = await request(app)
|
const { status, body } = await request(app)
|
||||||
.patch(`/albums/${user1Albums[0].id}`)
|
.patch(`/albums/${user1Albums[0].id}`)
|
||||||
.set('Authorization', `Bearer ${user2.accessToken}`)
|
.set('Authorization', `Bearer ${user2.accessToken}`)
|
||||||
.send({ albumName: 'New album name' });
|
.send({ albumName: 'New album name' });
|
||||||
|
|
||||||
expect(status).toBe(200);
|
expect(status).toBe(400);
|
||||||
expect(body).toEqual(
|
expect(body).toEqual(errorDto.badRequest('Not found or no album.update access'));
|
||||||
expect.objectContaining({
|
|
||||||
id: user1Albums[0].id,
|
|
||||||
albumName: 'New album name',
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -380,23 +380,4 @@ describe(`/oauth`, () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('idTokenClaims', () => {
|
|
||||||
it('should use claims from the ID token if IDP includes them', async () => {
|
|
||||||
await setupOAuth(admin.accessToken, {
|
|
||||||
enabled: true,
|
|
||||||
clientId: OAuthClient.DEFAULT,
|
|
||||||
clientSecret: OAuthClient.DEFAULT,
|
|
||||||
});
|
|
||||||
const callbackParams = await loginWithOAuth(OAuthUser.ID_TOKEN_CLAIMS);
|
|
||||||
const { status, body } = await request(app).post('/oauth/callback').send(callbackParams);
|
|
||||||
expect(status).toBe(201);
|
|
||||||
expect(body).toMatchObject({
|
|
||||||
accessToken: expect.any(String),
|
|
||||||
name: 'ID Token User',
|
|
||||||
userEmail: 'oauth-id-token-claims@immich.app',
|
|
||||||
userId: expect.any(String),
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -438,16 +438,6 @@ describe('/shared-links', () => {
|
|||||||
expect(body).toEqual(errorDto.badRequest('Invalid shared link type'));
|
expect(body).toEqual(errorDto.badRequest('Invalid shared link type'));
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should reject guests removing assets from an individual shared link', async () => {
|
|
||||||
const { status, body } = await request(app)
|
|
||||||
.delete(`/shared-links/${linkWithAssets.id}/assets`)
|
|
||||||
.query({ key: linkWithAssets.key })
|
|
||||||
.send({ assetIds: [asset1.id] });
|
|
||||||
|
|
||||||
expect(status).toBe(403);
|
|
||||||
expect(body).toEqual(errorDto.forbidden);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should remove assets from a shared link (individual)', async () => {
|
it('should remove assets from a shared link (individual)', async () => {
|
||||||
const { status, body } = await request(app)
|
const { status, body } = await request(app)
|
||||||
.delete(`/shared-links/${linkWithAssets.id}/assets`)
|
.delete(`/shared-links/${linkWithAssets.id}/assets`)
|
||||||
|
|||||||
@@ -0,0 +1,66 @@
|
|||||||
|
import { AssetMediaResponseDto, LoginResponseDto } from '@immich/sdk';
|
||||||
|
import { expect, Page, test } from '@playwright/test';
|
||||||
|
import { utils } from 'src/utils';
|
||||||
|
|
||||||
|
async function ensureDetailPanelVisible(page: Page) {
|
||||||
|
await page.waitForSelector('#immich-asset-viewer');
|
||||||
|
|
||||||
|
const isVisible = await page.locator('#detail-panel').isVisible();
|
||||||
|
if (!isVisible) {
|
||||||
|
await page.keyboard.press('i');
|
||||||
|
await page.waitForSelector('#detail-panel');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
test.describe('Asset Viewer stack', () => {
|
||||||
|
let admin: LoginResponseDto;
|
||||||
|
let assetOne: AssetMediaResponseDto;
|
||||||
|
let assetTwo: AssetMediaResponseDto;
|
||||||
|
|
||||||
|
test.beforeAll(async () => {
|
||||||
|
utils.initSdk();
|
||||||
|
await utils.resetDatabase();
|
||||||
|
admin = await utils.adminSetup();
|
||||||
|
await utils.updateMyPreferences(admin.accessToken, { tags: { enabled: true } });
|
||||||
|
|
||||||
|
assetOne = await utils.createAsset(admin.accessToken);
|
||||||
|
assetTwo = await utils.createAsset(admin.accessToken);
|
||||||
|
await utils.createStack(admin.accessToken, [assetOne.id, assetTwo.id]);
|
||||||
|
|
||||||
|
const tags = await utils.upsertTags(admin.accessToken, ['test/1', 'test/2']);
|
||||||
|
const tagOne = tags.find((tag) => tag.value === 'test/1')!;
|
||||||
|
const tagTwo = tags.find((tag) => tag.value === 'test/2')!;
|
||||||
|
await utils.tagAssets(admin.accessToken, tagOne.id, [assetOne.id]);
|
||||||
|
await utils.tagAssets(admin.accessToken, tagTwo.id, [assetTwo.id]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('stack slideshow is visible', async ({ page, context }) => {
|
||||||
|
await utils.setAuthCookies(context, admin.accessToken);
|
||||||
|
await page.goto(`/photos/${assetOne.id}`);
|
||||||
|
|
||||||
|
const stackAssets = page.locator('#stack-slideshow [data-asset]');
|
||||||
|
await expect(stackAssets.first()).toBeVisible();
|
||||||
|
await expect(stackAssets.nth(1)).toBeVisible();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('tags of primary asset are visible', async ({ page, context }) => {
|
||||||
|
await utils.setAuthCookies(context, admin.accessToken);
|
||||||
|
await page.goto(`/photos/${assetOne.id}`);
|
||||||
|
await ensureDetailPanelVisible(page);
|
||||||
|
|
||||||
|
const tags = page.getByTestId('detail-panel-tags').getByRole('link');
|
||||||
|
await expect(tags.first()).toHaveText('test/1');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('tags of second asset are visible', async ({ page, context }) => {
|
||||||
|
await utils.setAuthCookies(context, admin.accessToken);
|
||||||
|
await page.goto(`/photos/${assetOne.id}`);
|
||||||
|
await ensureDetailPanelVisible(page);
|
||||||
|
|
||||||
|
const stackAssets = page.locator('#stack-slideshow [data-asset]');
|
||||||
|
await stackAssets.nth(1).click();
|
||||||
|
|
||||||
|
const tags = page.getByTestId('detail-panel-tags').getByRole('link');
|
||||||
|
await expect(tags.first()).toHaveText('test/2');
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
import { AssetMediaResponseDto, LoginResponseDto, updateAssets } from '@immich/sdk';
|
|
||||||
import { expect, test } from '@playwright/test';
|
|
||||||
import crypto from 'node:crypto';
|
|
||||||
import { asBearerAuth, utils } from 'src/utils';
|
|
||||||
|
|
||||||
test.describe('Duplicates Utility', () => {
|
|
||||||
let admin: LoginResponseDto;
|
|
||||||
let firstAsset: AssetMediaResponseDto;
|
|
||||||
let secondAsset: AssetMediaResponseDto;
|
|
||||||
|
|
||||||
test.beforeAll(async () => {
|
|
||||||
utils.initSdk();
|
|
||||||
await utils.resetDatabase();
|
|
||||||
admin = await utils.adminSetup();
|
|
||||||
});
|
|
||||||
|
|
||||||
test.beforeEach(async ({ context }) => {
|
|
||||||
[firstAsset, secondAsset] = await Promise.all([
|
|
||||||
utils.createAsset(admin.accessToken, { deviceAssetId: 'duplicate-a' }),
|
|
||||||
utils.createAsset(admin.accessToken, { deviceAssetId: 'duplicate-b' }),
|
|
||||||
]);
|
|
||||||
|
|
||||||
await updateAssets(
|
|
||||||
{
|
|
||||||
assetBulkUpdateDto: {
|
|
||||||
ids: [firstAsset.id, secondAsset.id],
|
|
||||||
duplicateId: crypto.randomUUID(),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{ headers: asBearerAuth(admin.accessToken) },
|
|
||||||
);
|
|
||||||
|
|
||||||
await utils.setAuthCookies(context, admin.accessToken);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('navigates with arrow keys between duplicate preview assets', async ({ page }) => {
|
|
||||||
await page.goto('/utilities/duplicates');
|
|
||||||
await page.getByRole('button', { name: 'View' }).first().click();
|
|
||||||
await page.waitForSelector('#immich-asset-viewer');
|
|
||||||
|
|
||||||
const getViewedAssetId = () => new URL(page.url()).pathname.split('/').at(-1) ?? '';
|
|
||||||
const initialAssetId = getViewedAssetId();
|
|
||||||
expect([firstAsset.id, secondAsset.id]).toContain(initialAssetId);
|
|
||||||
|
|
||||||
await page.keyboard.press('ArrowRight');
|
|
||||||
await expect.poll(getViewedAssetId).not.toBe(initialAssetId);
|
|
||||||
|
|
||||||
await page.keyboard.press('ArrowLeft');
|
|
||||||
await expect.poll(getViewedAssetId).toBe(initialAssetId);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,13 +1,14 @@
|
|||||||
import { AssetMediaResponseDto, LoginResponseDto } from '@immich/sdk';
|
import { AssetMediaResponseDto, LoginResponseDto } from '@immich/sdk';
|
||||||
import { expect, test } from '@playwright/test';
|
import { Page, expect, test } from '@playwright/test';
|
||||||
import type { Socket } from 'socket.io-client';
|
|
||||||
import { utils } from 'src/utils';
|
import { utils } from 'src/utils';
|
||||||
|
|
||||||
|
function imageLocator(page: Page) {
|
||||||
|
return page.getByAltText('Image taken').locator('visible=true');
|
||||||
|
}
|
||||||
test.describe('Photo Viewer', () => {
|
test.describe('Photo Viewer', () => {
|
||||||
let admin: LoginResponseDto;
|
let admin: LoginResponseDto;
|
||||||
let asset: AssetMediaResponseDto;
|
let asset: AssetMediaResponseDto;
|
||||||
let rawAsset: AssetMediaResponseDto;
|
let rawAsset: AssetMediaResponseDto;
|
||||||
let websocket: Socket;
|
|
||||||
|
|
||||||
test.beforeAll(async () => {
|
test.beforeAll(async () => {
|
||||||
utils.initSdk();
|
utils.initSdk();
|
||||||
@@ -15,11 +16,6 @@ test.describe('Photo Viewer', () => {
|
|||||||
admin = await utils.adminSetup();
|
admin = await utils.adminSetup();
|
||||||
asset = await utils.createAsset(admin.accessToken);
|
asset = await utils.createAsset(admin.accessToken);
|
||||||
rawAsset = await utils.createAsset(admin.accessToken, { assetData: { filename: 'test.arw' } });
|
rawAsset = await utils.createAsset(admin.accessToken, { assetData: { filename: 'test.arw' } });
|
||||||
websocket = await utils.connectWebsocket(admin.accessToken);
|
|
||||||
});
|
|
||||||
|
|
||||||
test.afterAll(() => {
|
|
||||||
utils.disconnectWebsocket(websocket);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test.beforeEach(async ({ context, page }) => {
|
test.beforeEach(async ({ context, page }) => {
|
||||||
@@ -30,65 +26,31 @@ test.describe('Photo Viewer', () => {
|
|||||||
|
|
||||||
test('loads original photo when zoomed', async ({ page }) => {
|
test('loads original photo when zoomed', async ({ page }) => {
|
||||||
await page.goto(`/photos/${asset.id}`);
|
await page.goto(`/photos/${asset.id}`);
|
||||||
|
await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('thumbnail');
|
||||||
const preview = page.getByTestId('preview').filter({ visible: true });
|
const box = await imageLocator(page).boundingBox();
|
||||||
await expect(preview).toHaveAttribute('src', /.+/);
|
expect(box).toBeTruthy();
|
||||||
|
const { x, y, width, height } = box!;
|
||||||
const originalResponse = page.waitForResponse((response) => response.url().includes('/original'));
|
await page.mouse.move(x + width / 2, y + height / 2);
|
||||||
|
|
||||||
const { width, height } = page.viewportSize()!;
|
|
||||||
await page.mouse.move(width / 2, height / 2);
|
|
||||||
await page.mouse.wheel(0, -1);
|
await page.mouse.wheel(0, -1);
|
||||||
|
await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('original');
|
||||||
await originalResponse;
|
|
||||||
|
|
||||||
const original = page.getByTestId('original').filter({ visible: true });
|
|
||||||
await expect(original).toHaveAttribute('src', /original/);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('loads fullsize image when zoomed and original is web-incompatible', async ({ page }) => {
|
test('loads fullsize image when zoomed and original is web-incompatible', async ({ page }) => {
|
||||||
await page.goto(`/photos/${rawAsset.id}`);
|
await page.goto(`/photos/${rawAsset.id}`);
|
||||||
|
await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('thumbnail');
|
||||||
const preview = page.getByTestId('preview').filter({ visible: true });
|
const box = await imageLocator(page).boundingBox();
|
||||||
await expect(preview).toHaveAttribute('src', /.+/);
|
expect(box).toBeTruthy();
|
||||||
|
const { x, y, width, height } = box!;
|
||||||
const fullsizeResponse = page.waitForResponse((response) => response.url().includes('fullsize'));
|
await page.mouse.move(x + width / 2, y + height / 2);
|
||||||
|
|
||||||
const { width, height } = page.viewportSize()!;
|
|
||||||
await page.mouse.move(width / 2, height / 2);
|
|
||||||
await page.mouse.wheel(0, -1);
|
await page.mouse.wheel(0, -1);
|
||||||
|
await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('fullsize');
|
||||||
await fullsizeResponse;
|
|
||||||
|
|
||||||
const original = page.getByTestId('original').filter({ visible: true });
|
|
||||||
await expect(original).toHaveAttribute('src', /fullsize/);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('right-click targets the img element', async ({ page }) => {
|
|
||||||
await page.goto(`/photos/${asset.id}`);
|
|
||||||
|
|
||||||
const preview = page.getByTestId('preview').filter({ visible: true });
|
|
||||||
await expect(preview).toHaveAttribute('src', /.+/);
|
|
||||||
|
|
||||||
const box = await preview.boundingBox();
|
|
||||||
const tagAtCenter = await page.evaluate(({ x, y }) => document.elementFromPoint(x, y)?.tagName, {
|
|
||||||
x: box!.x + box!.width / 2,
|
|
||||||
y: box!.y + box!.height / 2,
|
|
||||||
});
|
|
||||||
expect(tagAtCenter).toBe('IMG');
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('reloads photo when checksum changes', async ({ page }) => {
|
test('reloads photo when checksum changes', async ({ page }) => {
|
||||||
await page.goto(`/photos/${asset.id}`);
|
await page.goto(`/photos/${asset.id}`);
|
||||||
|
await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('thumbnail');
|
||||||
const preview = page.getByTestId('preview').filter({ visible: true });
|
const initialSrc = await imageLocator(page).getAttribute('src');
|
||||||
await expect(preview).toHaveAttribute('src', /.+/);
|
|
||||||
const initialSrc = await preview.getAttribute('src');
|
|
||||||
|
|
||||||
const websocketEvent = utils.waitForWebsocketEvent({ event: 'assetUpdate', id: asset.id });
|
|
||||||
await utils.replaceAsset(admin.accessToken, asset.id);
|
await utils.replaceAsset(admin.accessToken, asset.id);
|
||||||
await websocketEvent;
|
await expect.poll(async () => await imageLocator(page).getAttribute('src')).not.toBe(initialSrc);
|
||||||
|
|
||||||
await expect(preview).not.toHaveAttribute('src', initialSrc!);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -12,18 +12,15 @@ import { asBearerAuth, utils } from 'src/utils';
|
|||||||
test.describe('Shared Links', () => {
|
test.describe('Shared Links', () => {
|
||||||
let admin: LoginResponseDto;
|
let admin: LoginResponseDto;
|
||||||
let asset: AssetMediaResponseDto;
|
let asset: AssetMediaResponseDto;
|
||||||
let asset2: AssetMediaResponseDto;
|
|
||||||
let album: AlbumResponseDto;
|
let album: AlbumResponseDto;
|
||||||
let sharedLink: SharedLinkResponseDto;
|
let sharedLink: SharedLinkResponseDto;
|
||||||
let sharedLinkPassword: SharedLinkResponseDto;
|
let sharedLinkPassword: SharedLinkResponseDto;
|
||||||
let individualSharedLink: SharedLinkResponseDto;
|
|
||||||
|
|
||||||
test.beforeAll(async () => {
|
test.beforeAll(async () => {
|
||||||
utils.initSdk();
|
utils.initSdk();
|
||||||
await utils.resetDatabase();
|
await utils.resetDatabase();
|
||||||
admin = await utils.adminSetup();
|
admin = await utils.adminSetup();
|
||||||
asset = await utils.createAsset(admin.accessToken);
|
asset = await utils.createAsset(admin.accessToken);
|
||||||
asset2 = await utils.createAsset(admin.accessToken);
|
|
||||||
album = await createAlbum(
|
album = await createAlbum(
|
||||||
{
|
{
|
||||||
createAlbumDto: {
|
createAlbumDto: {
|
||||||
@@ -42,17 +39,14 @@ test.describe('Shared Links', () => {
|
|||||||
albumId: album.id,
|
albumId: album.id,
|
||||||
password: 'test-password',
|
password: 'test-password',
|
||||||
});
|
});
|
||||||
individualSharedLink = await utils.createSharedLink(admin.accessToken, {
|
|
||||||
type: SharedLinkType.Individual,
|
|
||||||
assetIds: [asset.id, asset2.id],
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('download from a shared link', async ({ page }) => {
|
test('download from a shared link', async ({ page }) => {
|
||||||
await page.goto(`/share/${sharedLink.key}`);
|
await page.goto(`/share/${sharedLink.key}`);
|
||||||
await page.getByRole('heading', { name: 'Test Album' }).waitFor();
|
await page.getByRole('heading', { name: 'Test Album' }).waitFor();
|
||||||
await page.locator(`[data-asset-id="${asset.id}"]`).hover();
|
await page.locator(`[data-asset-id="${asset.id}"]`).hover();
|
||||||
await page.waitForSelector(`[data-asset-id="${asset.id}"] [role="checkbox"]`);
|
await page.waitForSelector('[data-group] svg');
|
||||||
|
await page.getByRole('checkbox').click();
|
||||||
await Promise.all([page.waitForEvent('download'), page.getByRole('button', { name: 'Download' }).click()]);
|
await Promise.all([page.waitForEvent('download'), page.getByRole('button', { name: 'Download' }).click()]);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -116,21 +110,4 @@ test.describe('Shared Links', () => {
|
|||||||
await page.waitForURL('/photos');
|
await page.waitForURL('/photos');
|
||||||
await page.locator(`[data-asset-id="${asset.id}"]`).waitFor();
|
await page.locator(`[data-asset-id="${asset.id}"]`).waitFor();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('owner can remove assets from an individual shared link', async ({ context, page }) => {
|
|
||||||
await utils.setAuthCookies(context, admin.accessToken);
|
|
||||||
|
|
||||||
await page.goto(`/share/${individualSharedLink.key}`);
|
|
||||||
await page.locator(`[data-asset="${asset.id}"]`).waitFor();
|
|
||||||
await expect(page.locator(`[data-asset]`)).toHaveCount(2);
|
|
||||||
|
|
||||||
await page.locator(`[data-asset="${asset.id}"]`).hover();
|
|
||||||
await page.locator(`[data-asset="${asset.id}"] [role="checkbox"]`).click();
|
|
||||||
|
|
||||||
await page.getByRole('button', { name: 'Remove from shared link' }).click();
|
|
||||||
await page.getByRole('button', { name: 'Remove', exact: true }).click();
|
|
||||||
|
|
||||||
await expect(page.locator(`[data-asset="${asset.id}"]`)).toHaveCount(0);
|
|
||||||
await expect(page.locator(`[data-asset="${asset2.id}"]`)).toHaveCount(1);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,167 +0,0 @@
|
|||||||
import { faker } from '@faker-js/faker';
|
|
||||||
import { AssetTypeEnum, AssetVisibility, type AssetResponseDto, type StackResponseDto } from '@immich/sdk';
|
|
||||||
import { BrowserContext } from '@playwright/test';
|
|
||||||
import { randomPreview, randomThumbnail } from 'src/ui/generators/timeline';
|
|
||||||
|
|
||||||
export type MockStack = {
|
|
||||||
id: string;
|
|
||||||
primaryAssetId: string;
|
|
||||||
assets: AssetResponseDto[];
|
|
||||||
brokenAssetIds: Set<string>;
|
|
||||||
assetMap: Map<string, AssetResponseDto>;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const createMockStackAsset = (ownerId: string): AssetResponseDto => {
|
|
||||||
const assetId = faker.string.uuid();
|
|
||||||
const now = new Date().toISOString();
|
|
||||||
return {
|
|
||||||
id: assetId,
|
|
||||||
deviceAssetId: `device-${assetId}`,
|
|
||||||
ownerId,
|
|
||||||
owner: {
|
|
||||||
id: ownerId,
|
|
||||||
email: 'admin@immich.cloud',
|
|
||||||
name: 'Admin',
|
|
||||||
profileImagePath: '',
|
|
||||||
profileChangedAt: now,
|
|
||||||
avatarColor: 'blue' as never,
|
|
||||||
},
|
|
||||||
libraryId: `library-${ownerId}`,
|
|
||||||
deviceId: `device-${ownerId}`,
|
|
||||||
type: AssetTypeEnum.Image,
|
|
||||||
originalPath: `/original/${assetId}.jpg`,
|
|
||||||
originalFileName: `${assetId}.jpg`,
|
|
||||||
originalMimeType: 'image/jpeg',
|
|
||||||
thumbhash: null,
|
|
||||||
fileCreatedAt: now,
|
|
||||||
fileModifiedAt: now,
|
|
||||||
localDateTime: now,
|
|
||||||
updatedAt: now,
|
|
||||||
createdAt: now,
|
|
||||||
isFavorite: false,
|
|
||||||
isArchived: false,
|
|
||||||
isTrashed: false,
|
|
||||||
visibility: AssetVisibility.Timeline,
|
|
||||||
duration: '0:00:00.00000',
|
|
||||||
exifInfo: {
|
|
||||||
make: null,
|
|
||||||
model: null,
|
|
||||||
exifImageWidth: 3000,
|
|
||||||
exifImageHeight: 4000,
|
|
||||||
fileSizeInByte: null,
|
|
||||||
orientation: null,
|
|
||||||
dateTimeOriginal: now,
|
|
||||||
modifyDate: null,
|
|
||||||
timeZone: null,
|
|
||||||
lensModel: null,
|
|
||||||
fNumber: null,
|
|
||||||
focalLength: null,
|
|
||||||
iso: null,
|
|
||||||
exposureTime: null,
|
|
||||||
latitude: null,
|
|
||||||
longitude: null,
|
|
||||||
city: null,
|
|
||||||
country: null,
|
|
||||||
state: null,
|
|
||||||
description: null,
|
|
||||||
},
|
|
||||||
livePhotoVideoId: null,
|
|
||||||
tags: [],
|
|
||||||
people: [],
|
|
||||||
unassignedFaces: [],
|
|
||||||
stack: null,
|
|
||||||
isOffline: false,
|
|
||||||
hasMetadata: true,
|
|
||||||
duplicateId: null,
|
|
||||||
resized: true,
|
|
||||||
checksum: faker.string.alphanumeric({ length: 28 }),
|
|
||||||
width: 3000,
|
|
||||||
height: 4000,
|
|
||||||
isEdited: false,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
export const createMockStack = (
|
|
||||||
primaryAssetDto: AssetResponseDto,
|
|
||||||
additionalAssets: AssetResponseDto[],
|
|
||||||
brokenAssetIds?: Set<string>,
|
|
||||||
): MockStack => {
|
|
||||||
const stackId = faker.string.uuid();
|
|
||||||
const allAssets = [primaryAssetDto, ...additionalAssets];
|
|
||||||
const resolvedBrokenIds = brokenAssetIds ?? new Set(additionalAssets.map((a) => a.id));
|
|
||||||
const assetMap = new Map(allAssets.map((a) => [a.id, a]));
|
|
||||||
|
|
||||||
primaryAssetDto.stack = {
|
|
||||||
id: stackId,
|
|
||||||
assetCount: allAssets.length,
|
|
||||||
primaryAssetId: primaryAssetDto.id,
|
|
||||||
};
|
|
||||||
|
|
||||||
return {
|
|
||||||
id: stackId,
|
|
||||||
primaryAssetId: primaryAssetDto.id,
|
|
||||||
assets: allAssets,
|
|
||||||
brokenAssetIds: resolvedBrokenIds,
|
|
||||||
assetMap,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
export const setupBrokenAssetMockApiRoutes = async (context: BrowserContext, mockStack: MockStack) => {
|
|
||||||
await context.route('**/api/stacks/*', async (route, request) => {
|
|
||||||
if (request.method() !== 'GET') {
|
|
||||||
return route.fallback();
|
|
||||||
}
|
|
||||||
const stackResponse: StackResponseDto = {
|
|
||||||
id: mockStack.id,
|
|
||||||
primaryAssetId: mockStack.primaryAssetId,
|
|
||||||
assets: mockStack.assets,
|
|
||||||
};
|
|
||||||
return route.fulfill({
|
|
||||||
status: 200,
|
|
||||||
contentType: 'application/json',
|
|
||||||
json: stackResponse,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
await context.route('**/api/assets/*', async (route, request) => {
|
|
||||||
if (request.method() !== 'GET') {
|
|
||||||
return route.fallback();
|
|
||||||
}
|
|
||||||
const url = new URL(request.url());
|
|
||||||
const segments = url.pathname.split('/');
|
|
||||||
const assetId = segments.at(-1);
|
|
||||||
if (assetId && mockStack.assetMap.has(assetId)) {
|
|
||||||
return route.fulfill({
|
|
||||||
status: 200,
|
|
||||||
contentType: 'application/json',
|
|
||||||
json: mockStack.assetMap.get(assetId),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return route.fallback();
|
|
||||||
});
|
|
||||||
|
|
||||||
await context.route('**/api/assets/*/thumbnail?size=*', async (route, request) => {
|
|
||||||
if (!route.request().serviceWorker()) {
|
|
||||||
return route.continue();
|
|
||||||
}
|
|
||||||
const pattern = /\/api\/assets\/(?<assetId>[^/]+)\/thumbnail\?size=(?<size>preview|thumbnail)/;
|
|
||||||
const match = request.url().match(pattern);
|
|
||||||
if (!match?.groups || !mockStack.assetMap.has(match.groups.assetId)) {
|
|
||||||
return route.fallback();
|
|
||||||
}
|
|
||||||
if (mockStack.brokenAssetIds.has(match.groups.assetId)) {
|
|
||||||
return route.fulfill({ status: 404 });
|
|
||||||
}
|
|
||||||
const asset = mockStack.assetMap.get(match.groups.assetId)!;
|
|
||||||
const ratio = (asset.exifInfo?.exifImageWidth ?? 3000) / (asset.exifInfo?.exifImageHeight ?? 4000);
|
|
||||||
const body =
|
|
||||||
match.groups.size === 'preview'
|
|
||||||
? await randomPreview(match.groups.assetId, ratio)
|
|
||||||
: await randomThumbnail(match.groups.assetId, ratio);
|
|
||||||
return route.fulfill({
|
|
||||||
status: 200,
|
|
||||||
headers: { 'content-type': 'image/jpeg' },
|
|
||||||
body,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
@@ -1,127 +0,0 @@
|
|||||||
import { BrowserContext } from '@playwright/test';
|
|
||||||
import { randomThumbnail } from 'src/ui/generators/timeline';
|
|
||||||
|
|
||||||
// Minimal valid H.264 MP4 (8x8px, 1 frame) that browsers can decode to get videoWidth/videoHeight
|
|
||||||
const MINIMAL_MP4_BASE64 =
|
|
||||||
'AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAAr9tZGF0AAACoAYF//+c' +
|
|
||||||
'3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDEyNSAtIEguMjY0L01QRUctNCBBVkMgY29kZWMg' +
|
|
||||||
'LSBDb3B5bGVmdCAyMDAzLTIwMTIgLSBodHRwOi8vd3d3LnZpZGVvbGFuLm9yZy94MjY0Lmh0bWwg' +
|
|
||||||
'LSBvcHRpb25zOiBjYWJhYz0xIHJlZj0zIGRlYmxvY2s9MTowOjAgYW5hbHlzZT0weDM6MHgxMTMg' +
|
|
||||||
'bWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC4wMCBtaXhlZF9yZWY9MSBtZV9yYW5n' +
|
|
||||||
'ZT0xNiBjaHJvbWFfbWU9MSB0cmVsbGlzPTEgOHg4ZGN0PTEgY3FtPTAgZGVhZHpvbmU9MjEsMTEg' +
|
|
||||||
'ZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LTIgdGhyZWFkcz02IGxvb2thaGVhZF90aHJl' +
|
|
||||||
'YWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJh' +
|
|
||||||
'eV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MyBiX3B5cmFtaWQ9MiBiX2Fk' +
|
|
||||||
'YXB0PTEgYl9iaWFzPTAgZGlyZWN0PTEgd2VpZ2h0Yj0xIG9wZW5fZ29wPTAgd2VpZ2h0cD0yIGtl' +
|
|
||||||
'eWludD0yNTAga2V5aW50X21pbj0yNCBzY2VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmNfbG9v' +
|
|
||||||
'a2FoZWFkPTQwIHJjPWNyZiBtYnRyZWU9MSBjcmY9MjMuMCBxY29tcD0wLjYwIHFwbWluPTAgcXBt' +
|
|
||||||
'YXg9NjkgcXBzdGVwPTQgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAAA9liIQAV/0TAAYdeBTX' +
|
|
||||||
'zg8AAALvbW9vdgAAAGxtdmhkAAAAAAAAAAAAAAAAAAAD6AAAACoAAQAAAQAAAAAAAAAAAAAAAAEAAAAA' +
|
|
||||||
'AAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA' +
|
|
||||||
'Ahl0cmFrAAAAXHRraGQAAAAPAAAAAAAAAAAAAAABAAAAAAAAACoAAAAAAAAAAAAAAAAAAAAAAAEAAAAA' +
|
|
||||||
'AAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAgAAAAIAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAA' +
|
|
||||||
'AAEAAAAqAAAAAAABAAAAAAGRbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAAwAAAAAgBVxAAAAAAA' +
|
|
||||||
'LWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAABPG1pbmYAAAAUdm1oZAAA' +
|
|
||||||
'AAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAPxzdGJsAAAAmHN0' +
|
|
||||||
'c2QAAAAAAAAAAQAAAIhhdmMxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAgACABIAAAASAAAAAAAAAAB' +
|
|
||||||
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAAMmF2Y0MBZAAK/+EAGWdkAAqs' +
|
|
||||||
'2V+WXAWyAAADAAIAAAMAYB4kSywBAAZo6+PLIsAAAAAYc3R0cwAAAAAAAAABAAAAAQAAAgAAAAAcc3Rz' +
|
|
||||||
'YwAAAAAAAAABAAAAAQAAAAEAAAABAAAAFHN0c3oAAAAAAAACtwAAAAEAAAAUc3RjbwAAAAAAAAABAAAA' +
|
|
||||||
'MAAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWls' +
|
|
||||||
'c3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTQuNjMuMTA0';
|
|
||||||
|
|
||||||
export const MINIMAL_MP4_BUFFER = Buffer.from(MINIMAL_MP4_BASE64, 'base64');
|
|
||||||
|
|
||||||
export type MockPerson = {
|
|
||||||
id: string;
|
|
||||||
name: string;
|
|
||||||
birthDate: string | null;
|
|
||||||
isHidden: boolean;
|
|
||||||
thumbnailPath: string;
|
|
||||||
updatedAt: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const createMockPeople = (count: number): MockPerson[] => {
|
|
||||||
const names = [
|
|
||||||
'Alice Johnson',
|
|
||||||
'Bob Smith',
|
|
||||||
'Charlie Brown',
|
|
||||||
'Diana Prince',
|
|
||||||
'Eve Adams',
|
|
||||||
'Frank Castle',
|
|
||||||
'Grace Lee',
|
|
||||||
'Hank Pym',
|
|
||||||
'Iris West',
|
|
||||||
'Jack Ryan',
|
|
||||||
];
|
|
||||||
return Array.from({ length: count }, (_, index) => ({
|
|
||||||
id: `person-${index}`,
|
|
||||||
name: names[index % names.length],
|
|
||||||
birthDate: null,
|
|
||||||
isHidden: false,
|
|
||||||
thumbnailPath: `/upload/thumbs/person-${index}.jpeg`,
|
|
||||||
updatedAt: '2025-01-01T00:00:00.000Z',
|
|
||||||
}));
|
|
||||||
};
|
|
||||||
|
|
||||||
export type FaceCreateCapture = {
|
|
||||||
requests: Array<{
|
|
||||||
assetId: string;
|
|
||||||
personId: string;
|
|
||||||
x: number;
|
|
||||||
y: number;
|
|
||||||
width: number;
|
|
||||||
height: number;
|
|
||||||
imageWidth: number;
|
|
||||||
imageHeight: number;
|
|
||||||
}>;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const setupFaceEditorMockApiRoutes = async (
|
|
||||||
context: BrowserContext,
|
|
||||||
mockPeople: MockPerson[],
|
|
||||||
faceCreateCapture: FaceCreateCapture,
|
|
||||||
) => {
|
|
||||||
await context.route('**/api/people?*', async (route, request) => {
|
|
||||||
if (request.method() !== 'GET') {
|
|
||||||
return route.fallback();
|
|
||||||
}
|
|
||||||
|
|
||||||
return route.fulfill({
|
|
||||||
status: 200,
|
|
||||||
contentType: 'application/json',
|
|
||||||
json: {
|
|
||||||
hasNextPage: false,
|
|
||||||
hidden: 0,
|
|
||||||
people: mockPeople,
|
|
||||||
total: mockPeople.length,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
await context.route('**/api/faces', async (route, request) => {
|
|
||||||
if (request.method() !== 'POST') {
|
|
||||||
return route.fallback();
|
|
||||||
}
|
|
||||||
|
|
||||||
const body = request.postDataJSON();
|
|
||||||
faceCreateCapture.requests.push(body);
|
|
||||||
|
|
||||||
return route.fulfill({
|
|
||||||
status: 201,
|
|
||||||
contentType: 'text/plain',
|
|
||||||
body: 'OK',
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
await context.route('**/api/people/*/thumbnail', async (route) => {
|
|
||||||
if (!route.request().serviceWorker()) {
|
|
||||||
return route.continue();
|
|
||||||
}
|
|
||||||
return route.fulfill({
|
|
||||||
status: 200,
|
|
||||||
headers: { 'content-type': 'image/jpeg' },
|
|
||||||
body: await randomThumbnail('person-thumb', 1),
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
@@ -12,7 +12,6 @@ import {
|
|||||||
TimelineData,
|
TimelineData,
|
||||||
} from 'src/ui/generators/timeline';
|
} from 'src/ui/generators/timeline';
|
||||||
import { sleep } from 'src/ui/specs/timeline/utils';
|
import { sleep } from 'src/ui/specs/timeline/utils';
|
||||||
import { MINIMAL_MP4_BUFFER } from './face-editor-network';
|
|
||||||
|
|
||||||
export class TimelineTestContext {
|
export class TimelineTestContext {
|
||||||
slowBucket = false;
|
slowBucket = false;
|
||||||
@@ -136,14 +135,6 @@ export const setupTimelineMockApiRoutes = async (
|
|||||||
return route.continue();
|
return route.continue();
|
||||||
});
|
});
|
||||||
|
|
||||||
await context.route('**/api/assets/*/video/playback*', async (route) => {
|
|
||||||
return route.fulfill({
|
|
||||||
status: 200,
|
|
||||||
headers: { 'content-type': 'video/mp4' },
|
|
||||||
body: MINIMAL_MP4_BUFFER,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
await context.route('**/api/albums/**', async (route, request) => {
|
await context.route('**/api/albums/**', async (route, request) => {
|
||||||
const albumsMatch = request.url().match(/\/api\/albums\/(?<albumId>[^/?]+)/);
|
const albumsMatch = request.url().match(/\/api\/albums\/(?<albumId>[^/?]+)/);
|
||||||
if (albumsMatch) {
|
if (albumsMatch) {
|
||||||
|
|||||||
@@ -1,86 +0,0 @@
|
|||||||
import { expect, test } from '@playwright/test';
|
|
||||||
import { toAssetResponseDto } from 'src/ui/generators/timeline';
|
|
||||||
import {
|
|
||||||
createMockStack,
|
|
||||||
createMockStackAsset,
|
|
||||||
MockStack,
|
|
||||||
setupBrokenAssetMockApiRoutes,
|
|
||||||
} from 'src/ui/mock-network/broken-asset-network';
|
|
||||||
import { assetViewerUtils } from '../timeline/utils';
|
|
||||||
import { setupAssetViewerFixture } from './utils';
|
|
||||||
|
|
||||||
test.describe.configure({ mode: 'parallel' });
|
|
||||||
test.describe('broken-asset responsiveness', () => {
|
|
||||||
const fixture = setupAssetViewerFixture(889);
|
|
||||||
let mockStack: MockStack;
|
|
||||||
|
|
||||||
test.beforeAll(async () => {
|
|
||||||
const primaryAssetDto = toAssetResponseDto(fixture.primaryAsset);
|
|
||||||
|
|
||||||
const brokenAssets = [
|
|
||||||
createMockStackAsset(fixture.adminUserId),
|
|
||||||
createMockStackAsset(fixture.adminUserId),
|
|
||||||
createMockStackAsset(fixture.adminUserId),
|
|
||||||
];
|
|
||||||
|
|
||||||
mockStack = createMockStack(primaryAssetDto, brokenAssets);
|
|
||||||
});
|
|
||||||
|
|
||||||
test.beforeEach(async ({ context }) => {
|
|
||||||
await setupBrokenAssetMockApiRoutes(context, mockStack);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('broken asset in stack strip hides icon at small size', async ({ page }) => {
|
|
||||||
await page.goto(`/photos/${fixture.primaryAsset.id}`);
|
|
||||||
await assetViewerUtils.waitForViewerLoad(page, fixture.primaryAsset);
|
|
||||||
|
|
||||||
const stackSlideshow = page.locator('#stack-slideshow');
|
|
||||||
await expect(stackSlideshow).toBeVisible();
|
|
||||||
|
|
||||||
const brokenAssets = stackSlideshow.locator('[data-broken-asset]');
|
|
||||||
await expect(brokenAssets.first()).toBeVisible();
|
|
||||||
await expect(brokenAssets).toHaveCount(mockStack.brokenAssetIds.size);
|
|
||||||
|
|
||||||
for (const brokenAsset of await brokenAssets.all()) {
|
|
||||||
await expect(brokenAsset.locator('svg')).not.toBeVisible();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
test('broken asset in stack strip uses text-xs class', async ({ page }) => {
|
|
||||||
await page.goto(`/photos/${fixture.primaryAsset.id}`);
|
|
||||||
await assetViewerUtils.waitForViewerLoad(page, fixture.primaryAsset);
|
|
||||||
|
|
||||||
const stackSlideshow = page.locator('#stack-slideshow');
|
|
||||||
await expect(stackSlideshow).toBeVisible();
|
|
||||||
|
|
||||||
const brokenAssets = stackSlideshow.locator('[data-broken-asset]');
|
|
||||||
await expect(brokenAssets.first()).toBeVisible();
|
|
||||||
|
|
||||||
for (const brokenAsset of await brokenAssets.all()) {
|
|
||||||
const messageSpan = brokenAsset.locator('span');
|
|
||||||
await expect(messageSpan).toHaveClass(/text-xs/);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
test('broken asset in main viewer shows icon and uses text-base', async ({ context, page }) => {
|
|
||||||
await context.route(
|
|
||||||
(url) =>
|
|
||||||
url.pathname.includes(`/api/assets/${fixture.primaryAsset.id}/thumbnail`) ||
|
|
||||||
url.pathname.includes(`/api/assets/${fixture.primaryAsset.id}/original`),
|
|
||||||
async (route) => {
|
|
||||||
return route.fulfill({ status: 404 });
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
await page.goto(`/photos/${fixture.primaryAsset.id}`);
|
|
||||||
await page.waitForSelector('#immich-asset-viewer');
|
|
||||||
|
|
||||||
const viewerBrokenAsset = page.locator('[data-viewer-content] [data-broken-asset]').first();
|
|
||||||
await expect(viewerBrokenAsset).toBeVisible();
|
|
||||||
|
|
||||||
await expect(viewerBrokenAsset.locator('svg')).toBeVisible();
|
|
||||||
|
|
||||||
const messageSpan = viewerBrokenAsset.locator('span');
|
|
||||||
await expect(messageSpan).toHaveClass(/text-base/);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,285 +0,0 @@
|
|||||||
import { expect, Page, test } from '@playwright/test';
|
|
||||||
import { SeededRandom, selectRandom, TimelineAssetConfig } from 'src/ui/generators/timeline';
|
|
||||||
import {
|
|
||||||
createMockPeople,
|
|
||||||
FaceCreateCapture,
|
|
||||||
MockPerson,
|
|
||||||
setupFaceEditorMockApiRoutes,
|
|
||||||
} from 'src/ui/mock-network/face-editor-network';
|
|
||||||
import { assetViewerUtils } from '../timeline/utils';
|
|
||||||
import { setupAssetViewerFixture } from './utils';
|
|
||||||
|
|
||||||
const waitForSelectorTransition = async (page: Page) => {
|
|
||||||
await page.waitForFunction(
|
|
||||||
() => {
|
|
||||||
const selector = document.querySelector('#face-selector') as HTMLElement | null;
|
|
||||||
if (!selector) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return selector.getAnimations({ subtree: false }).every((animation) => animation.playState === 'finished');
|
|
||||||
},
|
|
||||||
undefined,
|
|
||||||
{ timeout: 1000, polling: 50 },
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
const openFaceEditor = async (page: Page, asset: TimelineAssetConfig) => {
|
|
||||||
await page.goto(`/photos/${asset.id}`);
|
|
||||||
await assetViewerUtils.waitForViewerLoad(page, asset);
|
|
||||||
await page.keyboard.press('i');
|
|
||||||
await page.locator('#detail-panel').waitFor({ state: 'visible' });
|
|
||||||
await page.getByLabel('Tag people').click();
|
|
||||||
await page.locator('#face-selector').waitFor({ state: 'visible' });
|
|
||||||
await waitForSelectorTransition(page);
|
|
||||||
};
|
|
||||||
|
|
||||||
test.describe.configure({ mode: 'parallel' });
|
|
||||||
test.describe('face-editor', () => {
|
|
||||||
const fixture = setupAssetViewerFixture(777);
|
|
||||||
const rng = new SeededRandom(777);
|
|
||||||
let mockPeople: MockPerson[];
|
|
||||||
let faceCreateCapture: FaceCreateCapture;
|
|
||||||
|
|
||||||
test.beforeAll(async () => {
|
|
||||||
mockPeople = createMockPeople(8);
|
|
||||||
});
|
|
||||||
|
|
||||||
test.beforeEach(async ({ context }) => {
|
|
||||||
faceCreateCapture = { requests: [] };
|
|
||||||
await setupFaceEditorMockApiRoutes(context, mockPeople, faceCreateCapture);
|
|
||||||
});
|
|
||||||
|
|
||||||
type ScreenRect = { top: number; left: number; width: number; height: number };
|
|
||||||
|
|
||||||
const getFaceBoxRect = async (page: Page): Promise<ScreenRect> => {
|
|
||||||
const dataEl = page.locator('#face-editor-data');
|
|
||||||
await expect(dataEl).toHaveAttribute('data-face-left', /^-?\d+/);
|
|
||||||
await expect(dataEl).toHaveAttribute('data-face-top', /^-?\d+/);
|
|
||||||
await expect(dataEl).toHaveAttribute('data-face-width', /^[1-9]/);
|
|
||||||
await expect(dataEl).toHaveAttribute('data-face-height', /^[1-9]/);
|
|
||||||
const canvasBox = await page.locator('#face-editor').boundingBox();
|
|
||||||
if (!canvasBox) {
|
|
||||||
throw new Error('Canvas element not found');
|
|
||||||
}
|
|
||||||
const left = Number(await dataEl.getAttribute('data-face-left'));
|
|
||||||
const top = Number(await dataEl.getAttribute('data-face-top'));
|
|
||||||
const width = Number(await dataEl.getAttribute('data-face-width'));
|
|
||||||
const height = Number(await dataEl.getAttribute('data-face-height'));
|
|
||||||
return {
|
|
||||||
top: canvasBox.y + top,
|
|
||||||
left: canvasBox.x + left,
|
|
||||||
width,
|
|
||||||
height,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
const getSelectorRect = async (page: Page): Promise<ScreenRect> => {
|
|
||||||
const box = await page.locator('#face-selector').boundingBox();
|
|
||||||
if (!box) {
|
|
||||||
throw new Error('Face selector element not found');
|
|
||||||
}
|
|
||||||
return { top: box.y, left: box.x, width: box.width, height: box.height };
|
|
||||||
};
|
|
||||||
|
|
||||||
const computeOverlapArea = (a: ScreenRect, b: ScreenRect): number => {
|
|
||||||
const overlapX = Math.max(0, Math.min(a.left + a.width, b.left + b.width) - Math.max(a.left, b.left));
|
|
||||||
const overlapY = Math.max(0, Math.min(a.top + a.height, b.top + b.height) - Math.max(a.top, b.top));
|
|
||||||
return overlapX * overlapY;
|
|
||||||
};
|
|
||||||
|
|
||||||
const dragFaceBox = async (page: Page, deltaX: number, deltaY: number) => {
|
|
||||||
const faceBox = await getFaceBoxRect(page);
|
|
||||||
const centerX = faceBox.left + faceBox.width / 2;
|
|
||||||
const centerY = faceBox.top + faceBox.height / 2;
|
|
||||||
await page.mouse.move(centerX, centerY);
|
|
||||||
await page.mouse.down();
|
|
||||||
await page.mouse.move(centerX + deltaX, centerY + deltaY, { steps: 5 });
|
|
||||||
await page.mouse.up();
|
|
||||||
await page.waitForTimeout(300);
|
|
||||||
};
|
|
||||||
|
|
||||||
test('Face editor opens with person list', async ({ page }) => {
|
|
||||||
const asset = selectRandom(fixture.assets, rng);
|
|
||||||
await openFaceEditor(page, asset);
|
|
||||||
|
|
||||||
await expect(page.locator('#face-selector')).toBeVisible();
|
|
||||||
await expect(page.locator('#face-editor')).toBeVisible();
|
|
||||||
|
|
||||||
for (const person of mockPeople) {
|
|
||||||
await expect(page.locator('#face-selector').getByText(person.name)).toBeVisible();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Search filters people by name', async ({ page }) => {
|
|
||||||
const asset = selectRandom(fixture.assets, rng);
|
|
||||||
await openFaceEditor(page, asset);
|
|
||||||
|
|
||||||
const searchInput = page.locator('#face-selector input');
|
|
||||||
await searchInput.fill('Alice');
|
|
||||||
|
|
||||||
await expect(page.locator('#face-selector').getByText('Alice Johnson')).toBeVisible();
|
|
||||||
await expect(page.locator('#face-selector').getByText('Bob Smith')).toBeHidden();
|
|
||||||
|
|
||||||
await searchInput.clear();
|
|
||||||
|
|
||||||
for (const person of mockPeople) {
|
|
||||||
await expect(page.locator('#face-selector').getByText(person.name)).toBeVisible();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Search with no results shows empty message', async ({ page }) => {
|
|
||||||
const asset = selectRandom(fixture.assets, rng);
|
|
||||||
await openFaceEditor(page, asset);
|
|
||||||
|
|
||||||
const searchInput = page.locator('#face-selector input');
|
|
||||||
await searchInput.fill('Nonexistent Person XYZ');
|
|
||||||
|
|
||||||
for (const person of mockPeople) {
|
|
||||||
await expect(page.locator('#face-selector').getByText(person.name)).toBeHidden();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Selecting a person shows confirmation dialog', async ({ page }) => {
|
|
||||||
const asset = selectRandom(fixture.assets, rng);
|
|
||||||
await openFaceEditor(page, asset);
|
|
||||||
|
|
||||||
const personToTag = mockPeople[0];
|
|
||||||
await page.locator('#face-selector').getByText(personToTag.name).click();
|
|
||||||
|
|
||||||
await expect(page.getByRole('dialog')).toBeVisible();
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Confirming tag calls createFace API and closes editor', async ({ page }) => {
|
|
||||||
const asset = selectRandom(fixture.assets, rng);
|
|
||||||
await openFaceEditor(page, asset);
|
|
||||||
|
|
||||||
const personToTag = mockPeople[0];
|
|
||||||
await page.locator('#face-selector').getByText(personToTag.name).click();
|
|
||||||
|
|
||||||
await expect(page.getByRole('dialog')).toBeVisible();
|
|
||||||
await page.getByRole('button', { name: /confirm/i }).click();
|
|
||||||
|
|
||||||
await expect(page.locator('#face-selector')).toBeHidden();
|
|
||||||
await expect(page.locator('#face-editor')).toBeHidden();
|
|
||||||
|
|
||||||
expect(faceCreateCapture.requests).toHaveLength(1);
|
|
||||||
expect(faceCreateCapture.requests[0].assetId).toBe(asset.id);
|
|
||||||
expect(faceCreateCapture.requests[0].personId).toBe(personToTag.id);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Cancel button closes face editor', async ({ page }) => {
|
|
||||||
const asset = selectRandom(fixture.assets, rng);
|
|
||||||
await openFaceEditor(page, asset);
|
|
||||||
|
|
||||||
await expect(page.locator('#face-selector')).toBeVisible();
|
|
||||||
await expect(page.locator('#face-editor')).toBeVisible();
|
|
||||||
|
|
||||||
await page.getByRole('button', { name: /cancel/i }).click();
|
|
||||||
|
|
||||||
await expect(page.locator('#face-selector')).toBeHidden();
|
|
||||||
await expect(page.locator('#face-editor')).toBeHidden();
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Selector does not overlap face box on initial open', async ({ page }) => {
|
|
||||||
const asset = selectRandom(fixture.assets, rng);
|
|
||||||
await openFaceEditor(page, asset);
|
|
||||||
|
|
||||||
const faceBox = await getFaceBoxRect(page);
|
|
||||||
const selectorBox = await getSelectorRect(page);
|
|
||||||
const overlap = computeOverlapArea(faceBox, selectorBox);
|
|
||||||
|
|
||||||
expect(overlap).toBe(0);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Selector repositions without overlap after dragging face box down', async ({ page }) => {
|
|
||||||
const asset = selectRandom(fixture.assets, rng);
|
|
||||||
await openFaceEditor(page, asset);
|
|
||||||
|
|
||||||
await dragFaceBox(page, 0, 150);
|
|
||||||
|
|
||||||
const faceBox = await getFaceBoxRect(page);
|
|
||||||
const selectorBox = await getSelectorRect(page);
|
|
||||||
const overlap = computeOverlapArea(faceBox, selectorBox);
|
|
||||||
|
|
||||||
expect(overlap).toBe(0);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Selector repositions without overlap after dragging face box right', async ({ page }) => {
|
|
||||||
const asset = selectRandom(fixture.assets, rng);
|
|
||||||
await openFaceEditor(page, asset);
|
|
||||||
|
|
||||||
await dragFaceBox(page, 200, 0);
|
|
||||||
|
|
||||||
const faceBox = await getFaceBoxRect(page);
|
|
||||||
const selectorBox = await getSelectorRect(page);
|
|
||||||
const overlap = computeOverlapArea(faceBox, selectorBox);
|
|
||||||
|
|
||||||
expect(overlap).toBe(0);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Selector repositions without overlap after dragging face box to top-left corner', async ({ page }) => {
|
|
||||||
const asset = selectRandom(fixture.assets, rng);
|
|
||||||
await openFaceEditor(page, asset);
|
|
||||||
|
|
||||||
await dragFaceBox(page, -300, -300);
|
|
||||||
|
|
||||||
const faceBox = await getFaceBoxRect(page);
|
|
||||||
const selectorBox = await getSelectorRect(page);
|
|
||||||
const overlap = computeOverlapArea(faceBox, selectorBox);
|
|
||||||
|
|
||||||
expect(overlap).toBe(0);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Selector repositions without overlap after dragging face box to bottom-right', async ({ page }) => {
|
|
||||||
const asset = selectRandom(fixture.assets, rng);
|
|
||||||
await openFaceEditor(page, asset);
|
|
||||||
|
|
||||||
await dragFaceBox(page, 300, 300);
|
|
||||||
|
|
||||||
const faceBox = await getFaceBoxRect(page);
|
|
||||||
const selectorBox = await getSelectorRect(page);
|
|
||||||
const overlap = computeOverlapArea(faceBox, selectorBox);
|
|
||||||
|
|
||||||
expect(overlap).toBe(0);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Selector stays within viewport bounds', async ({ page }) => {
|
|
||||||
const asset = selectRandom(fixture.assets, rng);
|
|
||||||
await openFaceEditor(page, asset);
|
|
||||||
|
|
||||||
const viewportSize = page.viewportSize()!;
|
|
||||||
const selectorBox = await getSelectorRect(page);
|
|
||||||
|
|
||||||
expect(selectorBox.top).toBeGreaterThanOrEqual(0);
|
|
||||||
expect(selectorBox.left).toBeGreaterThanOrEqual(0);
|
|
||||||
expect(selectorBox.top + selectorBox.height).toBeLessThanOrEqual(viewportSize.height);
|
|
||||||
expect(selectorBox.left + selectorBox.width).toBeLessThanOrEqual(viewportSize.width);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Selector stays within viewport after dragging to edge', async ({ page }) => {
|
|
||||||
const asset = selectRandom(fixture.assets, rng);
|
|
||||||
await openFaceEditor(page, asset);
|
|
||||||
|
|
||||||
await dragFaceBox(page, -400, -400);
|
|
||||||
|
|
||||||
const viewportSize = page.viewportSize()!;
|
|
||||||
const selectorBox = await getSelectorRect(page);
|
|
||||||
|
|
||||||
expect(selectorBox.top).toBeGreaterThanOrEqual(0);
|
|
||||||
expect(selectorBox.left).toBeGreaterThanOrEqual(0);
|
|
||||||
expect(selectorBox.top + selectorBox.height).toBeLessThanOrEqual(viewportSize.height);
|
|
||||||
expect(selectorBox.left + selectorBox.width).toBeLessThanOrEqual(viewportSize.width);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Face box is draggable on the canvas', async ({ page }) => {
|
|
||||||
const asset = selectRandom(fixture.assets, rng);
|
|
||||||
await openFaceEditor(page, asset);
|
|
||||||
|
|
||||||
const beforeDrag = await getFaceBoxRect(page);
|
|
||||||
await dragFaceBox(page, 100, 50);
|
|
||||||
const afterDrag = await getFaceBoxRect(page);
|
|
||||||
|
|
||||||
expect(afterDrag.left).toBeGreaterThan(beforeDrag.left + 50);
|
|
||||||
expect(afterDrag.top).toBeGreaterThan(beforeDrag.top + 20);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
import { faker } from '@faker-js/faker';
|
|
||||||
import type { AssetResponseDto } from '@immich/sdk';
|
|
||||||
import { expect, test } from '@playwright/test';
|
|
||||||
import { toAssetResponseDto } from 'src/ui/generators/timeline';
|
|
||||||
import {
|
|
||||||
createMockStack,
|
|
||||||
createMockStackAsset,
|
|
||||||
MockStack,
|
|
||||||
setupBrokenAssetMockApiRoutes,
|
|
||||||
} from 'src/ui/mock-network/broken-asset-network';
|
|
||||||
import { assetViewerUtils } from '../timeline/utils';
|
|
||||||
import { enableTagsPreference, ensureDetailPanelVisible, setupAssetViewerFixture } from './utils';
|
|
||||||
|
|
||||||
test.describe.configure({ mode: 'parallel' });
|
|
||||||
test.describe('asset-viewer stack', () => {
|
|
||||||
const fixture = setupAssetViewerFixture(888);
|
|
||||||
let mockStack: MockStack;
|
|
||||||
let primaryAssetDto: AssetResponseDto;
|
|
||||||
let secondAssetDto: AssetResponseDto;
|
|
||||||
|
|
||||||
test.beforeAll(async () => {
|
|
||||||
primaryAssetDto = toAssetResponseDto(fixture.primaryAsset);
|
|
||||||
primaryAssetDto.tags = [
|
|
||||||
{
|
|
||||||
id: faker.string.uuid(),
|
|
||||||
name: '1',
|
|
||||||
value: 'test/1',
|
|
||||||
createdAt: new Date().toISOString(),
|
|
||||||
updatedAt: new Date().toISOString(),
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
secondAssetDto = createMockStackAsset(fixture.adminUserId);
|
|
||||||
secondAssetDto.tags = [
|
|
||||||
{
|
|
||||||
id: faker.string.uuid(),
|
|
||||||
name: '2',
|
|
||||||
value: 'test/2',
|
|
||||||
createdAt: new Date().toISOString(),
|
|
||||||
updatedAt: new Date().toISOString(),
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
mockStack = createMockStack(primaryAssetDto, [secondAssetDto], new Set());
|
|
||||||
});
|
|
||||||
|
|
||||||
test.beforeEach(async ({ context }) => {
|
|
||||||
await setupBrokenAssetMockApiRoutes(context, mockStack);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('stack slideshow is visible', async ({ page }) => {
|
|
||||||
await page.goto(`/photos/${fixture.primaryAsset.id}`);
|
|
||||||
await assetViewerUtils.waitForViewerLoad(page, fixture.primaryAsset);
|
|
||||||
|
|
||||||
const stackSlideshow = page.locator('#stack-slideshow');
|
|
||||||
await expect(stackSlideshow).toBeVisible();
|
|
||||||
|
|
||||||
const stackAssets = stackSlideshow.locator('[data-asset]');
|
|
||||||
await expect(stackAssets).toHaveCount(mockStack.assets.length);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('tags of primary asset are visible', async ({ context, page }) => {
|
|
||||||
await enableTagsPreference(context);
|
|
||||||
|
|
||||||
await page.goto(`/photos/${fixture.primaryAsset.id}`);
|
|
||||||
await ensureDetailPanelVisible(page);
|
|
||||||
|
|
||||||
const tags = page.getByTestId('detail-panel-tags').getByRole('link');
|
|
||||||
await expect(tags.first()).toHaveText('test/1');
|
|
||||||
});
|
|
||||||
|
|
||||||
test('tags of second asset are visible', async ({ context, page }) => {
|
|
||||||
await enableTagsPreference(context);
|
|
||||||
|
|
||||||
await page.goto(`/photos/${fixture.primaryAsset.id}`);
|
|
||||||
await ensureDetailPanelVisible(page);
|
|
||||||
|
|
||||||
const stackAssets = page.locator('#stack-slideshow [data-asset]');
|
|
||||||
await stackAssets.nth(1).click();
|
|
||||||
|
|
||||||
const tags = page.getByTestId('detail-panel-tags').getByRole('link');
|
|
||||||
await expect(tags.first()).toHaveText('test/2');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,116 +0,0 @@
|
|||||||
import { faker } from '@faker-js/faker';
|
|
||||||
import type { AssetResponseDto } from '@immich/sdk';
|
|
||||||
import { BrowserContext, Page, test } from '@playwright/test';
|
|
||||||
import {
|
|
||||||
Changes,
|
|
||||||
createDefaultTimelineConfig,
|
|
||||||
generateTimelineData,
|
|
||||||
SeededRandom,
|
|
||||||
selectRandom,
|
|
||||||
TimelineAssetConfig,
|
|
||||||
TimelineData,
|
|
||||||
toAssetResponseDto,
|
|
||||||
} from 'src/ui/generators/timeline';
|
|
||||||
import { setupBaseMockApiRoutes } from 'src/ui/mock-network/base-network';
|
|
||||||
import { setupTimelineMockApiRoutes, TimelineTestContext } from 'src/ui/mock-network/timeline-network';
|
|
||||||
import { utils } from 'src/utils';
|
|
||||||
|
|
||||||
export type AssetViewerTestFixture = {
|
|
||||||
adminUserId: string;
|
|
||||||
timelineRestData: TimelineData;
|
|
||||||
assets: TimelineAssetConfig[];
|
|
||||||
testContext: TimelineTestContext;
|
|
||||||
changes: Changes;
|
|
||||||
primaryAsset: TimelineAssetConfig;
|
|
||||||
primaryAssetDto: AssetResponseDto;
|
|
||||||
};
|
|
||||||
|
|
||||||
export function setupAssetViewerFixture(seed: number): AssetViewerTestFixture {
|
|
||||||
const rng = new SeededRandom(seed);
|
|
||||||
const testContext = new TimelineTestContext();
|
|
||||||
|
|
||||||
const fixture: AssetViewerTestFixture = {
|
|
||||||
adminUserId: undefined!,
|
|
||||||
timelineRestData: undefined!,
|
|
||||||
assets: [],
|
|
||||||
testContext,
|
|
||||||
changes: {
|
|
||||||
albumAdditions: [],
|
|
||||||
assetDeletions: [],
|
|
||||||
assetArchivals: [],
|
|
||||||
assetFavorites: [],
|
|
||||||
},
|
|
||||||
primaryAsset: undefined!,
|
|
||||||
primaryAssetDto: undefined!,
|
|
||||||
};
|
|
||||||
|
|
||||||
test.beforeAll(async () => {
|
|
||||||
test.fail(
|
|
||||||
process.env.PW_EXPERIMENTAL_SERVICE_WORKER_NETWORK_EVENTS !== '1',
|
|
||||||
'This test requires env var: PW_EXPERIMENTAL_SERVICE_WORKER_NETWORK_EVENTS=1',
|
|
||||||
);
|
|
||||||
utils.initSdk();
|
|
||||||
fixture.adminUserId = faker.string.uuid();
|
|
||||||
testContext.adminId = fixture.adminUserId;
|
|
||||||
fixture.timelineRestData = generateTimelineData({
|
|
||||||
...createDefaultTimelineConfig(),
|
|
||||||
ownerId: fixture.adminUserId,
|
|
||||||
});
|
|
||||||
for (const timeBucket of fixture.timelineRestData.buckets.values()) {
|
|
||||||
fixture.assets.push(...timeBucket);
|
|
||||||
}
|
|
||||||
|
|
||||||
fixture.primaryAsset = selectRandom(
|
|
||||||
fixture.assets.filter((a) => a.isImage),
|
|
||||||
rng,
|
|
||||||
);
|
|
||||||
fixture.primaryAssetDto = toAssetResponseDto(fixture.primaryAsset);
|
|
||||||
});
|
|
||||||
|
|
||||||
test.beforeEach(async ({ context }) => {
|
|
||||||
await setupBaseMockApiRoutes(context, fixture.adminUserId);
|
|
||||||
await setupTimelineMockApiRoutes(context, fixture.timelineRestData, fixture.changes, fixture.testContext);
|
|
||||||
});
|
|
||||||
|
|
||||||
test.afterEach(() => {
|
|
||||||
fixture.testContext.slowBucket = false;
|
|
||||||
fixture.changes.albumAdditions = [];
|
|
||||||
fixture.changes.assetDeletions = [];
|
|
||||||
fixture.changes.assetArchivals = [];
|
|
||||||
fixture.changes.assetFavorites = [];
|
|
||||||
});
|
|
||||||
|
|
||||||
return fixture;
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function ensureDetailPanelVisible(page: Page) {
|
|
||||||
await page.waitForSelector('#immich-asset-viewer');
|
|
||||||
|
|
||||||
const isVisible = await page.locator('#detail-panel').isVisible();
|
|
||||||
if (!isVisible) {
|
|
||||||
await page.keyboard.press('i');
|
|
||||||
await page.waitForSelector('#detail-panel');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function enableTagsPreference(context: BrowserContext) {
|
|
||||||
await context.route('**/users/me/preferences', async (route) => {
|
|
||||||
return route.fulfill({
|
|
||||||
status: 200,
|
|
||||||
contentType: 'application/json',
|
|
||||||
json: {
|
|
||||||
albums: { defaultAssetOrder: 'desc' },
|
|
||||||
folders: { enabled: false, sidebarWeb: false },
|
|
||||||
memories: { enabled: true, duration: 5 },
|
|
||||||
people: { enabled: true, sidebarWeb: false },
|
|
||||||
sharedLinks: { enabled: true, sidebarWeb: false },
|
|
||||||
ratings: { enabled: false },
|
|
||||||
tags: { enabled: true, sidebarWeb: false },
|
|
||||||
emailNotifications: { enabled: true, albumInvite: true, albumUpdate: true },
|
|
||||||
download: { archiveSize: 4_294_967_296, includeEmbeddedVideos: false },
|
|
||||||
purchase: { showSupportBadge: true, hideBuyButtonUntil: '2100-02-12T00:00:00.000Z' },
|
|
||||||
cast: { gCastEnabled: false },
|
|
||||||
},
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -438,7 +438,7 @@ test.describe('Timeline', () => {
|
|||||||
const asset = getAsset(timelineRestData, album.assetIds[0])!;
|
const asset = getAsset(timelineRestData, album.assetIds[0])!;
|
||||||
await pageUtils.goToAsset(page, asset.fileCreatedAt);
|
await pageUtils.goToAsset(page, asset.fileCreatedAt);
|
||||||
await thumbnailUtils.expectInViewport(page, asset.id);
|
await thumbnailUtils.expectInViewport(page, asset.id);
|
||||||
await thumbnailUtils.expectSelectedDisabled(page, asset.id);
|
await thumbnailUtils.expectSelectedReadonly(page, asset.id);
|
||||||
});
|
});
|
||||||
test('Add photos to album', async ({ page }) => {
|
test('Add photos to album', async ({ page }) => {
|
||||||
const album = timelineRestData.album;
|
const album = timelineRestData.album;
|
||||||
@@ -447,7 +447,7 @@ test.describe('Timeline', () => {
|
|||||||
const asset = getAsset(timelineRestData, album.assetIds[0])!;
|
const asset = getAsset(timelineRestData, album.assetIds[0])!;
|
||||||
await pageUtils.goToAsset(page, asset.fileCreatedAt);
|
await pageUtils.goToAsset(page, asset.fileCreatedAt);
|
||||||
await thumbnailUtils.expectInViewport(page, asset.id);
|
await thumbnailUtils.expectInViewport(page, asset.id);
|
||||||
await thumbnailUtils.expectSelectedDisabled(page, asset.id);
|
await thumbnailUtils.expectSelectedReadonly(page, asset.id);
|
||||||
await pageUtils.selectDay(page, 'Tue, Feb 27, 2024');
|
await pageUtils.selectDay(page, 'Tue, Feb 27, 2024');
|
||||||
const put = pageRoutePromise(page, `**/api/albums/${album.id}/assets`, async (route, request) => {
|
const put = pageRoutePromise(page, `**/api/albums/${album.id}/assets`, async (route, request) => {
|
||||||
const requestJson = request.postDataJSON();
|
const requestJson = request.postDataJSON();
|
||||||
|
|||||||
@@ -102,9 +102,9 @@ export const thumbnailUtils = {
|
|||||||
async expectThumbnailIsNotArchive(page: Page, assetId: string) {
|
async expectThumbnailIsNotArchive(page: Page, assetId: string) {
|
||||||
await expect(thumbnailUtils.withAssetId(page, assetId).locator('[data-icon-archive]')).toHaveCount(0);
|
await expect(thumbnailUtils.withAssetId(page, assetId).locator('[data-icon-archive]')).toHaveCount(0);
|
||||||
},
|
},
|
||||||
async expectSelectedDisabled(page: Page, assetId: string) {
|
async expectSelectedReadonly(page: Page, assetId: string) {
|
||||||
await expect(
|
await expect(
|
||||||
page.locator(`[data-thumbnail-focus-container][data-asset="${assetId}"][data-selected][data-disabled]`),
|
page.locator(`[data-thumbnail-focus-container][data-asset="${assetId}"][data-selected]`),
|
||||||
).toBeVisible();
|
).toBeVisible();
|
||||||
},
|
},
|
||||||
async expectTimelineHasOnScreenAssets(page: Page) {
|
async expectTimelineHasOnScreenAssets(page: Page) {
|
||||||
@@ -215,9 +215,8 @@ export const pageUtils = {
|
|||||||
await page.getByText('Confirm').click();
|
await page.getByText('Confirm').click();
|
||||||
},
|
},
|
||||||
async selectDay(page: Page, day: string) {
|
async selectDay(page: Page, day: string) {
|
||||||
const section = page.getByTitle(day).locator('xpath=ancestor::section[@data-group]');
|
await page.getByTitle(day).hover();
|
||||||
await section.hover();
|
await page.locator('[data-group] .w-8').click();
|
||||||
await section.locator('.w-8').click();
|
|
||||||
},
|
},
|
||||||
async pauseTestDebug() {
|
async pauseTestDebug() {
|
||||||
console.log('NOTE: pausing test indefinately for debug');
|
console.log('NOTE: pausing test indefinately for debug');
|
||||||
|
|||||||
+8
-19
@@ -177,6 +177,7 @@ export const utils = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
resetDatabase: async (tables?: string[]) => {
|
resetDatabase: async (tables?: string[]) => {
|
||||||
|
try {
|
||||||
client = await utils.connectDatabase();
|
client = await utils.connectDatabase();
|
||||||
|
|
||||||
tables = tables || [
|
tables = tables || [
|
||||||
@@ -196,33 +197,21 @@ export const utils = {
|
|||||||
'tag',
|
'tag',
|
||||||
];
|
];
|
||||||
|
|
||||||
const truncateTables = tables.filter((table) => table !== 'system_metadata');
|
|
||||||
const sql: string[] = [];
|
const sql: string[] = [];
|
||||||
|
|
||||||
if (truncateTables.length > 0) {
|
for (const table of tables) {
|
||||||
sql.push(`TRUNCATE "${truncateTables.join('", "')}" CASCADE;`);
|
if (table === 'system_metadata') {
|
||||||
}
|
|
||||||
|
|
||||||
if (tables.includes('system_metadata')) {
|
|
||||||
sql.push(`DELETE FROM "system_metadata" where "key" NOT IN ('reverse-geocoding-state', 'system-flags');`);
|
sql.push(`DELETE FROM "system_metadata" where "key" NOT IN ('reverse-geocoding-state', 'system-flags');`);
|
||||||
|
} else {
|
||||||
|
sql.push(`DELETE FROM "${table}" CASCADE;`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const query = sql.join('\n');
|
await client.query(sql.join('\n'));
|
||||||
const maxRetries = 3;
|
} catch (error) {
|
||||||
|
|
||||||
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
||||||
try {
|
|
||||||
await client.query(query);
|
|
||||||
return;
|
|
||||||
} catch (error: any) {
|
|
||||||
if (error?.code === '40P01' && attempt < maxRetries) {
|
|
||||||
await new Promise((resolve) => setTimeout(resolve, 250 * attempt));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
console.error('Failed to reset database', error);
|
console.error('Failed to reset database', error);
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
unzip: async (input: string, output: string) => {
|
unzip: async (input: string, output: string) => {
|
||||||
|
|||||||
+1
-1
@@ -17,6 +17,6 @@
|
|||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"baseUrl": "./"
|
"baseUrl": "./"
|
||||||
},
|
},
|
||||||
"include": ["src/**/*.ts", "vitest*.config.ts"],
|
"include": ["src/**/*.ts"],
|
||||||
"exclude": ["dist", "node_modules"]
|
"exclude": ["dist", "node_modules"]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import tsconfigPaths from 'vite-tsconfig-paths';
|
|
||||||
import { defineConfig } from 'vitest/config';
|
import { defineConfig } from 'vitest/config';
|
||||||
|
|
||||||
const skipDockerSetup = process.env.VITEST_DISABLE_DOCKER_SETUP === 'true';
|
const skipDockerSetup = process.env.VITEST_DISABLE_DOCKER_SETUP === 'true';
|
||||||
@@ -15,14 +14,15 @@ if (!skipDockerSetup) {
|
|||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
test: {
|
test: {
|
||||||
name: 'e2e:server',
|
|
||||||
retry: process.env.CI ? 4 : 0,
|
retry: process.env.CI ? 4 : 0,
|
||||||
include: ['src/specs/server/**/*.e2e-spec.ts'],
|
include: ['src/specs/server/**/*.e2e-spec.ts'],
|
||||||
globalSetup,
|
globalSetup,
|
||||||
testTimeout: 15_000,
|
testTimeout: 15_000,
|
||||||
pool: 'threads',
|
pool: 'threads',
|
||||||
maxWorkers: 1,
|
poolOptions: {
|
||||||
isolate: false,
|
threads: {
|
||||||
|
singleThread: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
plugins: [tsconfigPaths()],
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import tsconfigPaths from 'vite-tsconfig-paths';
|
|
||||||
import { defineConfig } from 'vitest/config';
|
import { defineConfig } from 'vitest/config';
|
||||||
|
|
||||||
const skipDockerSetup = process.env.VITEST_DISABLE_DOCKER_SETUP === 'true';
|
const skipDockerSetup = process.env.VITEST_DISABLE_DOCKER_SETUP === 'true';
|
||||||
@@ -15,14 +14,15 @@ if (!skipDockerSetup) {
|
|||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
test: {
|
test: {
|
||||||
name: 'e2e:maintenance',
|
|
||||||
retry: process.env.CI ? 4 : 0,
|
retry: process.env.CI ? 4 : 0,
|
||||||
include: ['src/specs/maintenance/server/**/*.e2e-spec.ts'],
|
include: ['src/specs/maintenance/server/**/*.e2e-spec.ts'],
|
||||||
globalSetup,
|
globalSetup,
|
||||||
testTimeout: 15_000,
|
testTimeout: 15_000,
|
||||||
pool: 'threads',
|
pool: 'threads',
|
||||||
maxWorkers: 1,
|
poolOptions: {
|
||||||
isolate: false,
|
threads: {
|
||||||
|
singleThread: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
plugins: [tsconfigPaths()],
|
|
||||||
});
|
});
|
||||||
|
|||||||
+125
-211
@@ -2,147 +2,147 @@
|
|||||||
"about": "Oor",
|
"about": "Oor",
|
||||||
"account": "Rekening",
|
"account": "Rekening",
|
||||||
"account_settings": "Rekeninginstellings",
|
"account_settings": "Rekeninginstellings",
|
||||||
"acknowledge": "Neem kennis",
|
"acknowledge": "Erken",
|
||||||
"action": "Aksie",
|
"action": "Aksie",
|
||||||
"action_common_update": "Werk by",
|
"action_common_update": "Opdateur",
|
||||||
"actions": "Aksies",
|
"actions": "Aksies",
|
||||||
"active": "Aktief",
|
"active": "Aktief",
|
||||||
"activity": "Aktiwiteite",
|
"activity": "Aktiwiteite",
|
||||||
"activity_changed": "Aktiwiteit is {enabled, select, true {geaktiveer} other {gedeaktiveer}}",
|
"activity_changed": "Aktiwiteit is {enabled, select, true {aangeskakel} other {afgeskakel}}",
|
||||||
"add": "Voeg toe",
|
"add": "Voegby",
|
||||||
"add_a_description": "Voeg ’n beskrywing toe",
|
"add_a_description": "Voeg 'n beskrywing by",
|
||||||
"add_a_location": "Voeg ’n ligging toe",
|
"add_a_location": "Voeg 'n ligging by",
|
||||||
"add_a_name": "Voeg ’n naam toe",
|
"add_a_name": "Voeg 'n naam by",
|
||||||
"add_a_title": "Voeg ’n titel toe",
|
"add_a_title": "Voeg 'n titel by",
|
||||||
"add_birthday": "Voeg ’n verjaarsdag toe",
|
"add_birthday": "Voeg 'n verjaarsdag by",
|
||||||
"add_endpoint": "Voeg eindpunt toe",
|
"add_endpoint": "Voeg Koppelvlakpunt by",
|
||||||
"add_exclusion_pattern": "Voeg uitsluitingspatroon toe",
|
"add_exclusion_pattern": "Voeg uitsgluitingspatrone by",
|
||||||
"add_location": "Voeg ligging toe",
|
"add_location": "Voeg ligging by",
|
||||||
"add_more_users": "Voeg meer gebruikers toe",
|
"add_more_users": "Voeg meer gebruikers by",
|
||||||
"add_partner": "Voeg vennoot toe",
|
"add_partner": "Voeg vennoot by",
|
||||||
"add_path": "Voeg pad toe",
|
"add_path": "Voeg pad by",
|
||||||
"add_photos": "Voeg foto’s toe",
|
"add_photos": "Voeg foto's by",
|
||||||
"add_tag": "Voeg etiket toe",
|
"add_tag": "Voeg tag by",
|
||||||
"add_to": "Voeg toe tot…",
|
"add_to": "Voeg by…",
|
||||||
"add_to_album": "Voeg toe tot album",
|
"add_to_album": "Voeg na album",
|
||||||
"add_to_album_bottom_sheet_added": "Tot {album} toegevoeg",
|
"add_to_album_bottom_sheet_added": "By {album} bygevoeg",
|
||||||
"add_to_album_bottom_sheet_already_exists": "Reeds in {album}",
|
"add_to_album_bottom_sheet_already_exists": "Reeds in {album}",
|
||||||
"add_to_albums": "Voeg toe tot albums",
|
"add_to_albums": "Voeg by albums",
|
||||||
"add_to_albums_count": "Voeg toe tot albums ({count})",
|
"add_to_albums_count": "Voeg by ({count}) albums",
|
||||||
"add_to_shared_album": "Voeg toe tot gedeelde album",
|
"add_to_shared_album": "Voeg toe aan gedeelde album",
|
||||||
"add_url": "Voeg bronadres toe",
|
"add_url": "Voeg URL by",
|
||||||
"added_to_archive": "Tot argief toegevoeg",
|
"added_to_archive": "By argief toegevoegd",
|
||||||
"added_to_favorites": "Tot gunstelinge toegevoeg",
|
"added_to_favorites": "By gunstelinge toegevoegd",
|
||||||
"added_to_favorites_count": "{count, number} tot gunstelinge toegevoeg",
|
"added_to_favorites_count": "Het {count, number} by gunstelinge toegevoegd",
|
||||||
"admin": {
|
"admin": {
|
||||||
"add_exclusion_pattern_description": "Voeg uitsluitingspatrone toe. Plekhouers met *, ** en ? word ondersteun. Om alle lêers in enige vouer genaamd “Raw” te ignoreer, gebruik “**/Raw/**”. Om alle lêers wat op “.tif” eindig, te ignoreer, gebruik “**/*.tif”. Om ’n absolute pad te ignoreer, gebruik “/path/to/ignore/**”.",
|
"add_exclusion_pattern_description": "Voeg uitsluitingspatrone by. Globbing met *, ** en ? word ondersteun. Om alle lêers in enige lêergids genaamd \"Raw\" te ignoreer, gebruik \"**/Raw/**\". Om alle lêers wat op \".tif\" eindig, te ignoreer, gebruik \"**/*.tif\". Om 'n absolute pad te ignoreer, gebruik \"/path/to/ignore/**\".",
|
||||||
"admin_user": "Admingebruiker",
|
"admin_user": "Admin gebruiker",
|
||||||
"asset_offline_description": "Hierdie eksterne biblioteekitem word nie meer op skyf gevind nie en is na die asblik geskuif. As die lêer binne die biblioteek geskuif is, gaan u tydlyn na vir die nuwe ooreenstemmende item. Om hierdie item te herstel, maak asseblief seker dat die lêerpad hieronder deur Immich verkry kan word en skandeer die biblioteek.",
|
"asset_offline_description": "Hierdie eksterne biblioteekbate word nie meer op skyf gevind nie en is na die asblik geskuif. As die lêer binne die biblioteek geskuif is, gaan jou tydlyn na vir die nuwe ooreenstemmende bate. Om hierdie bate te herstel, maak asseblief seker dat die lêerpad hieronder deur Immich verkry kan word en skandeer die biblioteek.",
|
||||||
"authentication_settings": "Waarmerkinstellings",
|
"authentication_settings": "Verifikasie instellings",
|
||||||
"authentication_settings_description": "Bestuur wagwoord, OAuth en ander waarmerkinstellings",
|
"authentication_settings_description": "Bestuur wagwoord, OAuth en ander verifikasie instellings",
|
||||||
"authentication_settings_disable_all": "Is u seker u wil alle aantekenmetodes deaktiveer? Aantekening sal heeltemal gedeaktiveer word.",
|
"authentication_settings_disable_all": "Is jy seker jy wil alle aanmeldmetodes deaktiveer? Aanmelding sal heeltemal gedeaktiveer word.",
|
||||||
"authentication_settings_reenable": "Gebruik ’n <link>bedienerbevel</link> om te heraktiveer.",
|
"authentication_settings_reenable": "Om te heraktiveer, gebruik 'n <link>Server Command</link>.",
|
||||||
"background_task_job": "Agtergrondtake",
|
"background_task_job": "Agtergrondtake",
|
||||||
"backup_database": "Skep Databasisstortlêer",
|
"backup_database": "Skep Datastortlêer",
|
||||||
"backup_database_enable_description": "Aktiveer databasisstortlêers",
|
"backup_database_enable_description": "Aktiveer databasisrugsteun",
|
||||||
"backup_keep_last_amount": "Aantal vorige stortlêers om te hou",
|
"backup_keep_last_amount": "Aantal vorige rugsteune om te hou",
|
||||||
"backup_onboarding_3_description": "totale kopieë van u data, insluitend die oorspronklike lêers. Dit sluit 1 kopie op ’n ander perseel en 2 lokale kopieë in.",
|
"backup_onboarding_3_description": "totale kopieë van jou data, insluitende die oorspronklikke lêers. Dit sluit in 1 kopie op 'n ander perseel en 2 kopieë om die huidige rekenaar.",
|
||||||
"backup_onboarding_description": "’n <backblaze-link>3-2-1-rugsteunstrategie</backblaze-link> word sterk aanbeveel om u data veilig te hou. Hou kopieë van u foto’s/video’s sowel as die Immich-databasis vir ’n volledige rugsteunoplossing.",
|
"backup_onboarding_description": "'N <backblaze-link>3-2-1 rugsteun strategie</backblaze-link> word sterk aanbeveel om jou data veilig te hou. Hou kopieë van jou fotos/videos so wel as die Immich databasis vir 'n volledige rugsteun oplossing.",
|
||||||
"backup_onboarding_footer": "Lees hierdie <link>dokument</link> vir meer inligting oor hoe om ’n rugsteunkopie van Immich te maak.",
|
"backup_onboarding_footer": "Vir meer inligting oor hoe om 'n rugsteun kopie van Immich te maak, gaan lees asseblief hierdie <link>dokument</link>.",
|
||||||
"backup_onboarding_parts_title": "’n 3-2-1-rugsteun sluit in:",
|
"backup_onboarding_parts_title": "'N 3-2-1 rugsteun sluit in:",
|
||||||
"backup_onboarding_title": "Rugsteunkopieë",
|
"backup_onboarding_title": "Rugsteun kopieë",
|
||||||
"backup_settings": "Databasisstortinstellings",
|
"backup_settings": "Rugsteun instellings",
|
||||||
"backup_settings_description": "Bestuur databasisrugsteuninstellings.",
|
"backup_settings_description": "Bestuur databasis rugsteun instellings.",
|
||||||
"cleared_jobs": "Take gewis vir: {job}",
|
"cleared_jobs": "Poste gevee vir: {job}",
|
||||||
"config_set_by_file": "Config word tans deur ’n konfigurasielêer gestel",
|
"config_set_by_file": "Config word tans deur 'n konfigurasielêer gestel",
|
||||||
"confirm_delete_library": "Is u seker u wil {library}-biblioteek skrap?",
|
"confirm_delete_library": "Is jy seker jy wil {library}-biblioteek uitvee?",
|
||||||
"confirm_delete_library_assets": "Is u seker u wil hierdie biblioteek skrap? Dit sal {count, plural, one {# bevatte item} other {# bevatte items}} uit Immich skrap en kan nie ongedaan gemaak word nie. Lêers sal op skyf bly.",
|
"confirm_delete_library_assets": "Is jy seker jy wil hierdie biblioteek uitvee? Dit sal {count, plural, one {# bevatte base} other {# bevatte bates}} uit Immich uitvee en kan nie ongedaan gemaak word nie. Lêers sal op skyf bly.",
|
||||||
"confirm_email_below": "Tik “{email}” hieronder ter bevestiging",
|
"confirm_email_below": "Om te bevestig, tik \"{email}\" hieronder",
|
||||||
"confirm_reprocess_all_faces": "Is u seker u wil alle gesigte herverwerk? Dit sal ook genoemde mense skoonmaak.",
|
"confirm_reprocess_all_faces": "Is jy seker jy wil alle gesigte herverwerk? Dit sal ook genoemde mense skoonmaak.",
|
||||||
"confirm_user_password_reset": "Is u seker u wil {user} se wagwoord terugstel?",
|
"confirm_user_password_reset": "Is jy seker jy wil {user} se wagwoord terugstel?",
|
||||||
"confirm_user_pin_code_reset": "Is u seker u wil {user} se PIN-kode herstel?",
|
"confirm_user_pin_code_reset": "Is jy seker jy wil {user} se PIN kode herstel?",
|
||||||
"create_job": "Skep taak",
|
"create_job": "Skep werk",
|
||||||
"cron_expression": "Cron-uitdrukking",
|
"cron_expression": "Cron uitdrukking",
|
||||||
"cron_expression_description": "Stel die skanderingsinterval in met die cron-formaat. Kyk gerus na bv. <link>Crontab Guru</link> vir meer inligting",
|
"cron_expression_description": "Stel die skanderingsinterval in met die cron-formaat. Vir meer inligting verwys asseblief na bv. <link>Crontab Guru</link>",
|
||||||
"cron_expression_presets": "Cron-uitdrukking voorafinstellings",
|
"cron_expression_presets": "Cron uitdrukking voorafinstellings",
|
||||||
"disable_login": "Deaktiveer aantekening",
|
"disable_login": "Deaktiveer aanmelding",
|
||||||
"duplicate_detection_job_description": "Begin masjienleer op items om soortgelyke beelde op te spoor. Maak staat op Slimsoek",
|
"duplicate_detection_job_description": "Begin masjienleer op bates om soortgelyke beelde op te spoor. Maak staat op Smart Search",
|
||||||
"exclusion_pattern_description": "Met uitsluitingspatrone kan u lêers en vouers ignoreer wanneer u u biblioteek skandeer. Dit is nuttig as u vouers het wat lêers bevat wat u nie wil invoer nie, soos RAW-lêers.",
|
"exclusion_pattern_description": "Met uitsluitingspatrone kan jy lêers en vouers ignoreer wanneer jy jou biblioteek skandeer. Dit is nuttig as jy vouers het wat lêers bevat wat jy nie wil invoer nie, soos RAW-lêers.",
|
||||||
"face_detection": "Gesigherkenning",
|
"face_detection": "Gesig herkenning",
|
||||||
"face_detection_description": "Identifiseer die gesigte in media d.m.v. masjienleer. Vir video’s word slegs die duimnael oorweeg. “Herlaai” (ver)werk al die media weer. “Stel terug” verwyder alle huidige gesigdata. “Onverwerk” plaas items in die ry wat nog nie verwerk is nie. Geïdentifiseerde gesigte sal ná voltooiing van Gesigidentifikasie vir Gesigherkenning in die ry geplaas word om hulle in bestaande of nuwe persone te groepeer.",
|
"face_detection_description": "Identifiseer die gesigte in media deur middel van masjienleer. Vir videos word slegs die duimnaelskets oorweeg. “Herlaai” (ver)werk al die media weer. “Stel terug” verwyder alle huidige gesigdata. “Onverwerk” plaas bates in die tou wat nog nie verwerk is nie. Geidentifiseerde gesigte sal ná voltooiing van Gesigidentifikasie vir Gesigherkenning in die tou geplaas word, om hulle in bestaande of nuwe persone te groepeer.",
|
||||||
"facial_recognition_job_description": "Groepeer gesigte in mense. Die stap is vinniger nadat Gesigherkenning klaar is. “Herstel” (her-)groepeer alle gesigte. “Vermiste” plaas gesigte in ry wat nie ’n persoon gekoppel het nie.",
|
"facial_recognition_job_description": "Groepeer gesigte in mense in. Die stap is vinniger nadat Gesig Deteksie klaar is. \"Herstel\" (her-)groepeer alle gesigte. \"Vermiste\" plaas gesigte in ry wat nie 'n persoon gekoppel het nie.",
|
||||||
"failed_job_command": "Bevel {command} het misluk vir taak: {job}",
|
"failed_job_command": "Opdrag {command} het misluk vir werk: {job}",
|
||||||
"force_delete_user_warning": "WAARSKUWING: Dit sal onmiddellik die gebruiker en alle items verwyder. Dit kan nie ontdaan word nie en die lêers kan nie herstel word nie.",
|
"force_delete_user_warning": "WAARSKUWING: Dit sal onmiddellik die gebruiker en alle bates verwyder. Dit kan nie ontdoen word nie en die lêers kan nie herstel word nie.",
|
||||||
"image_format": "Formaat",
|
"image_format": "Formaat",
|
||||||
"image_format_description": "WebP lewer kleiner lêers as JPEG, maar is stadiger om te enkodeer.",
|
"image_format_description": "WebP produseer kleiner lêers as JPEG, maar is stadiger om te enkodeer.",
|
||||||
"image_fullsize_description": "Volgrootte prent met geen metadata, gebruik wanner ingezoem",
|
"image_fullsize_description": "Vol grote prent met geen metadata, gebruik wanner ingezoem",
|
||||||
"image_fullsize_enabled": "Aktiveer spek van volgrootte prent",
|
"image_fullsize_enabled": "Skakel aan vol grote prent generasie",
|
||||||
"image_prefer_embedded_preview": "Verkies ingebedde voorskou",
|
"image_prefer_embedded_preview": "Verkies ingebedde voorskou",
|
||||||
"image_prefer_wide_gamut": "Verkies breëspektrum",
|
"image_prefer_wide_gamut": "Verkies wide gamut",
|
||||||
"image_prefer_wide_gamut_setting_description": "Gebruik Display P3 vir duimnaels. Dit behou die lewendheid van beelde met wye kleurruimtes beter, maar beelde kan anders verskyn op ou toestelle met ’n ou blaaierweergawe. sRGB-beelde gebruik steeds sRGB om kleurverskuiwings te voorkom.",
|
"image_prefer_wide_gamut_setting_description": "Gebruik Display P3 vir kleinkiekies. Dit behou die lewendheid van beelde met wye kleurruimtes beter, maar beelde kan anders verskyn op ou apparate met 'n ou blaaierweergawe. sRGB-beelde gebruik steeds sRGB om kleurverskuiwings te voorkom.",
|
||||||
"image_preview_description": "Mediumgrootte prent met gestroopte metadata, wat gebruik word wanneer ’n enkele item bekyk word en vir masjienleer",
|
"image_preview_description": "Mediumgrootte prent met gestroopte metadata, wat gebruik word wanneer 'n enkele bate bekyk word en vir masjienleer",
|
||||||
"image_preview_quality_description": "Voorskoukwaliteit van 1-100. Hoër is beter, maar lewer groter lêers en kan die toep vertraag. Die stel van ’n lae waarde kan masjienleerkwaliteit beïnvloed.",
|
"image_preview_quality_description": "Voorskou kwaliteit van 1-100. Hoër is beter, maar produseer groter lêers en kan app-reaksie verminder. Die stel van 'n lae waarde kan masjienleerkwaliteit beïnvloed.",
|
||||||
"image_preview_title": "Voorskou-instellings",
|
"image_preview_title": "Voorskou Instellings",
|
||||||
"image_quality": "Kwaliteit",
|
"image_quality": "Kwaliteit",
|
||||||
"image_resolution": "Resolusie",
|
"image_resolution": "Resolusie",
|
||||||
"image_resolution_description": "Hoër resolusies kan meer detail bewaar, maar neem langer om te enkodeer, het groter lêergroottes en kan die toep vertraag.",
|
"image_resolution_description": "Hoër resolusies kan meer detail bewaar, maar neem langer om te enkodeer, het groter lêergroottes en kan app-reaksie verminder.",
|
||||||
"image_settings": "Prentinstellings",
|
"image_settings": "Prent Instellings",
|
||||||
"image_settings_description": "Bestuur die kwaliteit en resolusie van gegenereerde beelde",
|
"image_settings_description": "Bestuur die kwaliteit en resolusie van gegenereerde beelde",
|
||||||
"image_thumbnail_description": "Klein duimnaels sonder metadata, gebruik om groepe foto’s soos die tydlyn te bekyk",
|
"image_thumbnail_description": "Klein kleinkiekies sonder metadata, gebruik om groepe foto's soos die tydlyn te bekyk",
|
||||||
"image_thumbnail_quality_description": "Duinmaelkwaliteit van 1-100. Hoër is beter, maar lewer groter lêers en kan die toep vertraag.",
|
"image_thumbnail_quality_description": "Kleinkiekiekwaliteit van 1-100. Hoër is beter, maar produseer groter lêers en kan die toepassing vertraag.",
|
||||||
"image_thumbnail_title": "Duimnaelinstellings",
|
"image_thumbnail_title": "Kleinkiekie-instellings",
|
||||||
"job_concurrency": "{job} gelyktydigheid",
|
"job_concurrency": "{job} gelyktydigheid",
|
||||||
"job_created": "Taak geskep",
|
"job_created": "Taak gemaak",
|
||||||
"job_not_concurrency_safe": "Hierdie taak kan nie gelyktydig uitgevoer word nie.",
|
"job_not_concurrency_safe": "Hierdie taak kan nie gelyktydig uitgevoer word nie.",
|
||||||
"job_settings": "Taakinstellings",
|
"job_settings": "Agtergrondtaakinstellings",
|
||||||
"job_settings_description": "Bestuur taakgelyktydigheid",
|
"job_settings_description": "Bestuur werkgelyktydigheid",
|
||||||
"library_created": "Biblioteek geskep: {library}",
|
"library_created": "Biblioteek geskep: {library}",
|
||||||
"library_deleted": "Biblioteek geskrap",
|
"library_deleted": "Biblioteek verwyder",
|
||||||
"library_scanning": "Periodieke skandering",
|
"library_scanning": "Periodieke Soek",
|
||||||
"library_scanning_description": "Stel periodieke skandering van biblioteek in",
|
"library_scanning_description": "Stel periodieke deursoek van biblioteek in",
|
||||||
"library_scanning_enable_description": "Aktiveer periodieke biblioteekskandering",
|
"library_scanning_enable_description": "Aktiveer periodieke biblioteekskandering",
|
||||||
"library_settings": "Eksterne biblioteek",
|
"library_settings": "Eksterne Biblioteek",
|
||||||
"library_settings_description": "Eksternebiblioteekinstellings",
|
"library_settings_description": "Eksterne biblioteek verstellings",
|
||||||
"library_tasks_description": "Skandeer eksterne biblioteke vir nuwe of veranderde items",
|
"library_tasks_description": "Deursoek eksterne biblioteke vir nuwe of veranderde bates",
|
||||||
"library_watching_enable_description": "Hou eksterne biblioteke dop vir lêerveranderinge",
|
"library_watching_enable_description": "Hou eksterne biblioteke dop vir leer veranderinge",
|
||||||
"library_watching_settings": "Biblioteekdophou [EKSPERIMENTEEL]",
|
"library_watching_settings": "Biblioteek dop hou (EKSPERIMENTEEL)",
|
||||||
"library_watching_settings_description": "Hou automaties dop vir veranderinge",
|
"library_watching_settings_description": "Hou automaties dop vir veranderinge",
|
||||||
"logging_enable_description": "Aktiveer logboekbyhouding",
|
"logging_enable_description": "Aktifeer \"logging\"",
|
||||||
"logging_level_description": "Wanneer aktief, welke logboekvlak om te gebruik.",
|
"logging_level_description": "Wanneer aktief, watter vlak van \"logs\" om te skep.",
|
||||||
"logging_settings": "Logboek",
|
"logging_settings": "\"Logs\"",
|
||||||
"machine_learning_clip_model": "CLIP-model",
|
"machine_learning_clip_model": "CLIP model",
|
||||||
"machine_learning_duplicate_detection": "Duplikaatbespeuring",
|
"machine_learning_duplicate_detection": "Duplikaat herkenning",
|
||||||
"machine_learning_duplicate_detection_enabled": "Aktiveer duplikaatbespeuring",
|
"machine_learning_duplicate_detection_enabled": "Aktifeer duplikaat herkenning",
|
||||||
"machine_learning_enabled": "Aktiveer masjienleer",
|
"machine_learning_enabled": "Aktifeer masjienleer",
|
||||||
"machine_learning_facial_recognition": "Gesigherkenning",
|
"machine_learning_facial_recognition": "Gesigsherkenning",
|
||||||
"machine_learning_facial_recognition_description": "Bespeur, identifiseer en groepeer gesigte in foto’s",
|
"machine_learning_facial_recognition_description": "Herken, identifiseer en groepeer gesigte in fotos",
|
||||||
"machine_learning_facial_recognition_model": "Gesigherkenningsmodel",
|
"machine_learning_facial_recognition_model": "Gesigsherkennings model",
|
||||||
"machine_learning_facial_recognition_setting": "Aktiveer gesigherkenning",
|
"machine_learning_facial_recognition_setting": "Aktifeer gesigsherkenning",
|
||||||
"machine_learning_max_detection_distance": "Maksimum herkenningsafstand",
|
"machine_learning_max_detection_distance": "Maksimum herkennings afstand",
|
||||||
"map_settings": "Kaart",
|
"map_settings": "Kaart",
|
||||||
"migration_job": "Migrasie",
|
"migration_job": "Migrasie",
|
||||||
"oauth_settings": "OAuth",
|
"oauth_settings": "OAuth",
|
||||||
"transcoding_acceleration_vaapi": "VAAPI",
|
"transcoding_acceleration_vaapi": "VAAPI",
|
||||||
"transcoding_preferred_hardware_device": "Voorkeurapparatuur"
|
"transcoding_preferred_hardware_device": "Verkiesde hardeware"
|
||||||
},
|
},
|
||||||
"administration": "Administrasie",
|
"administration": "Administrasie",
|
||||||
"advanced": "Gevorderd",
|
"advanced": "Gevorderde",
|
||||||
"albums": "Albums",
|
"albums": "Albums",
|
||||||
"all": "Alle",
|
"all": "Alle",
|
||||||
"anti_clockwise": "Linksom",
|
"anti_clockwise": "Anti-kloksgewys",
|
||||||
"archive": "Argief",
|
"archive": "Argief",
|
||||||
"asset_skipped": "Oorgeslaan",
|
"asset_skipped": "Oorgeslaan",
|
||||||
"asset_uploaded": "Opgelaai",
|
"asset_uploaded": "Opgelaai",
|
||||||
"asset_uploading": "Laai tans op…",
|
"asset_uploading": "Oplaai…",
|
||||||
"assets": "Items",
|
"assets": "Bates",
|
||||||
"back": "Terug",
|
"back": "Terug",
|
||||||
"backward": "Agteruit",
|
"backward": "Agteruit",
|
||||||
"build": "Bou",
|
"build": "Bou",
|
||||||
"camera": "Kamera",
|
"camera": "Kamera",
|
||||||
"cancel": "Kanselleer",
|
"cancel": "Kanselleer",
|
||||||
"city": "Stad",
|
"city": "Stad",
|
||||||
"clockwise": "Regsom",
|
"clockwise": "Kloksgewys",
|
||||||
"close": "Sluit",
|
"close": "Maak toe",
|
||||||
"color": "Kleur",
|
"color": "Kleur",
|
||||||
"confirm": "Bevestig",
|
"confirm": "Bevestig",
|
||||||
"contain": "Bevat",
|
"contain": "Bevat",
|
||||||
@@ -154,140 +154,54 @@
|
|||||||
"created": "Geskep",
|
"created": "Geskep",
|
||||||
"dark": "Donker",
|
"dark": "Donker",
|
||||||
"day": "Dag",
|
"day": "Dag",
|
||||||
"delete": "Skrap",
|
"delete": "Verwyder",
|
||||||
"description": "Beskrywing",
|
"description": "Beskrywing",
|
||||||
"details": "Besonderhede",
|
"details": "Besonderhede",
|
||||||
"direction": "Rigting",
|
"direction": "Rigting",
|
||||||
"discover": "Ontdek",
|
"discover": "Ontdek",
|
||||||
"documentation": "Dokumentasie",
|
"documentation": "Dokumentasie",
|
||||||
"done": "Gereed",
|
"done": "Klaar",
|
||||||
"download": "Laai af",
|
"download": "Aflaai",
|
||||||
"download_settings": "Laai af",
|
"download_settings": "Aflaai",
|
||||||
"duplicates": "Duplikate",
|
"duplicates": "Duplikate",
|
||||||
"duration": "Duur",
|
"duration": "Duur",
|
||||||
"edit": "Wysig",
|
"edit": "Wysig",
|
||||||
"search_by_description": "Soek op beskrywing",
|
"search_by_description": "Soek by beskrywing",
|
||||||
"search_by_description_example": "Stapdag in Sapa",
|
"search_by_description_example": "Stapdag in Sapa",
|
||||||
"stacktrace": "Stapelnasporing",
|
|
||||||
"start": "Begin",
|
|
||||||
"start_date": "Begindatum",
|
|
||||||
"start_date_before_end_date": "Begindatum moet voor einddatum wees",
|
|
||||||
"state": "Staat",
|
|
||||||
"status": "Status",
|
|
||||||
"stop_casting": "Stop sending",
|
|
||||||
"stop_motion_photo": "Stop bewegingsfoto",
|
|
||||||
"stop_photo_sharing": "Staak die deel van u foto’s?",
|
|
||||||
"stop_photo_sharing_description": "{partner} sal nie meer toegang tot u foto’s hê nie.",
|
|
||||||
"untitled_workflow": "Naamlose werkvloei",
|
|
||||||
"up_next": "Volgende",
|
|
||||||
"update_location_action_prompt": "Werk die ligging van {count} gekose items by met:",
|
|
||||||
"updated_at": "Bygewerk",
|
|
||||||
"updated_password": "Wagwoord bygewerk",
|
|
||||||
"upload": "Laai op",
|
|
||||||
"upload_concurrency": "Aantal gelyktydige oplaaie",
|
|
||||||
"upload_details": "Oplaaidetails",
|
|
||||||
"upload_dialog_info": "Wil u ’n rugsteun maak van die gekose item(s) op die bediener?",
|
|
||||||
"upload_error_with_count": "Oplaaifout vir {count, plural, one {# item} other {# items}}",
|
|
||||||
"upload_errors": "Oplaai voltooi met {count, plural, one {# fout} other {# foute}}, verfris die blad om die nuwe items te sien.",
|
|
||||||
"upload_finished": "Klaar opgelaai",
|
|
||||||
"upload_progress": "Oorblywend {remaining, number} - Verwerk {processed, number}/{total, number}",
|
|
||||||
"upload_skipped_duplicates": "{count, plural, one {# duplikaat item} other {# duplikaat items}} oorgeslaan",
|
|
||||||
"upload_status_duplicates": "Duplikate",
|
|
||||||
"upload_status_errors": "Foute",
|
|
||||||
"upload_status_uploaded": "Opgelaai",
|
|
||||||
"upload_success": "Oplaai suksesvol, verfris die blad om nuut opgelaaide items te sien.",
|
|
||||||
"upload_to_immich": "Laai op na Immich ({count})",
|
|
||||||
"uploading": "Word opgelaai",
|
|
||||||
"uploading_media": "Media word opgelaai",
|
|
||||||
"url": "URL",
|
|
||||||
"usage": "Gebruik",
|
|
||||||
"use_biometric": "Gebruik biometrie",
|
|
||||||
"use_browser_locale": "Gebruik blaaier se landinstelling",
|
|
||||||
"use_browser_locale_description": "Formatteer datums, tye en getalle gebaseer op u blaaier se landinstelling",
|
|
||||||
"use_current_connection": "Gebruik huidige verbinding",
|
|
||||||
"use_custom_date_range": "Gebruik eerder pasgemaakte datumomvang",
|
|
||||||
"user": "Gebruiker",
|
|
||||||
"user_has_been_deleted": "Hierdie gebruiker is geskrap.",
|
|
||||||
"user_id": "Gebruiker ID",
|
|
||||||
"user_liked": "{user} het van {type, select, photo {hierdie foto} video {hierdie video} asset {} other {hierdie item}} gehou",
|
|
||||||
"user_pin_code_settings": "PIN-kode",
|
|
||||||
"user_pin_code_settings_description": "Bestuur u PIN-kode",
|
|
||||||
"user_privacy": "Gebruikersprivaatheid",
|
|
||||||
"user_purchase_settings": "Koop",
|
|
||||||
"user_purchase_settings_description": "Bestuur u aankoop",
|
|
||||||
"user_role_set": "Stel {user} in as {role}",
|
|
||||||
"user_usage_detail": "Gedetailleerde gebruik van gebruikers",
|
|
||||||
"user_usage_stats": "Statistieke vir rekeninggebruik",
|
|
||||||
"user_usage_stats_description": "Bekyk statistieke van rekeninggebruik",
|
|
||||||
"username": "Gebruikersnaam",
|
|
||||||
"users": "Gebruikers",
|
|
||||||
"users_added_to_album_count": "{count, plural, one {# Gebruiker} other {# Gebruikers}} tot album toegevoeg",
|
|
||||||
"utilities": "Gereedskap",
|
|
||||||
"validate": "Valideer",
|
|
||||||
"validate_endpoint_error": "Voer asb. ’n geldige bronadres in",
|
|
||||||
"validation_error": "Valideerfout",
|
|
||||||
"variables": "Veranderlikes",
|
|
||||||
"version": "Weergawe",
|
"version": "Weergawe",
|
||||||
"version_announcement_closing": "Jou friend, Alex",
|
"version_announcement_closing": "Jou friend, Alex",
|
||||||
"version_announcement_message": "Hallo! Daar is ’n nuwe weergawe van Immich beskikbaar. Neem gerus bietjie tyd om die <link>vrystellingsnotas</link> te lees en maak seker u opstelling is op datum om wanopstellings te voorkom, veral as u WatchTower of ’n ander bywerkmeganisme gebruik.",
|
|
||||||
"version_history": "Weergawegeskiedenis",
|
"version_history": "Weergawegeskiedenis",
|
||||||
"version_history_item": "{version} geïnstaleer op {date}",
|
"version_history_item": "{version} geinstaleerd op {date}",
|
||||||
"video": "Video",
|
"video": "Video",
|
||||||
"video_hover_setting": "Speel videoduimnael by muishang",
|
"videos": "Video's",
|
||||||
"video_hover_setting_description": "Speel videoduimnael wanneer muis oor item hang. Selfs indien gedeaktiveer kan afspeel begin deur oor die afspeelknop te hang.",
|
|
||||||
"videos": "Video’s",
|
|
||||||
"videos_count": "{count, plural, one {# video} other {# video’s}}",
|
|
||||||
"videos_only": "Slegs video’s",
|
|
||||||
"view": "Bekyk",
|
"view": "Bekyk",
|
||||||
"view_album": "Bekyk album",
|
"view_album": "Bekyk Album",
|
||||||
"view_all": "Bekyk alle",
|
"view_all": "Bekyk alle",
|
||||||
"view_all_users": "Bekyk alle gebruikers",
|
"view_all_users": "Bekyk alle gebruikers",
|
||||||
"view_asset_owners": "Bekyk itemeienaars",
|
|
||||||
"view_details": "Bekyk detail",
|
|
||||||
"view_in_timeline": "Bekyk in tydlyn",
|
"view_in_timeline": "Bekyk in tydlyn",
|
||||||
"view_link": "Bekyk skakel",
|
"view_link": "Bekyk skakel",
|
||||||
"view_links": "Bekyk skakels",
|
"view_links": "Bekyk skakels",
|
||||||
"view_name": "Bekyk",
|
"view_name": "Bekyk",
|
||||||
"view_next_asset": "Bekyk volgende item",
|
"view_next_asset": "Bekyk volgende bate",
|
||||||
"view_previous_asset": "Bekyk vorige item",
|
"view_previous_asset": "Bekyk vorige bate",
|
||||||
"view_qr_code": "Bekyk QR-kode",
|
"view_qr_code": "Bekyk QR-kode",
|
||||||
"view_similar_photos": "Bekyk soortgelyke foto’s",
|
|
||||||
"view_stack": "Bekyk stapel",
|
"view_stack": "Bekyk stapel",
|
||||||
"view_user": "Bekyk gebruiker",
|
"view_user": "Bekyk gebruiker",
|
||||||
"viewer_remove_from_stack": "Verwyder van stapel",
|
"viewer_remove_from_stack": "Verwyder van stapel",
|
||||||
"viewer_stack_use_as_main_asset": "Gebruik as hoofitem",
|
"viewer_stack_use_as_main_asset": "Gebruik as hoofbate",
|
||||||
"viewer_unstack": "Ontstapel",
|
"viewer_unstack": "Ontstapel",
|
||||||
"visibility_changed": "Sigbaarheid verander vir {count, plural, one {# mens} other {# mense}}",
|
"visibility_changed": "Sigbaarheid verander voor {count, plural, one {# person} other {# people}}",
|
||||||
"visual": "Visueel",
|
|
||||||
"visual_builder": "Visuele bouer",
|
|
||||||
"waiting": "Wag",
|
"waiting": "Wag",
|
||||||
"waiting_count": "Wagtend: {count}",
|
"warning": "Waaskuwing",
|
||||||
"warning": "Waarskuwing",
|
|
||||||
"week": "Week",
|
"week": "Week",
|
||||||
"welcome": "Welkom",
|
"welcome": "Welkom",
|
||||||
"welcome_to_immich": "Welkom by Immich",
|
"welcome_to_immich": "Welkom by Immich",
|
||||||
"width": "Breedte",
|
"wifi_name": "Wi-Fi Naam",
|
||||||
"wifi_name": "Wi-Fi-naam",
|
|
||||||
"workflow_delete_prompt": "Is u seker u wil hierdie werkvloei skrap?",
|
|
||||||
"workflow_deleted": "Werkvloei geskrap",
|
|
||||||
"workflow_description": "Werkvloeibeskrywing",
|
|
||||||
"workflow_info": "Werkvloei-inligting",
|
|
||||||
"workflow_json": "Werkvloei-JSON",
|
|
||||||
"workflow_json_help": "Wysig die werkvloei-opstelling in JSON-formaat. Veranderinge sal na die visuele bouer sinchroniseer.",
|
|
||||||
"workflow_name": "Werkvloeinaam",
|
|
||||||
"workflow_navigation_prompt": "Is u seker u wil verlaat sonder om u veranderinge te bewaar?",
|
|
||||||
"workflow_summary": "Werkvloei-opsomming",
|
|
||||||
"workflow_update_success": "Werkvloei suksesvol bygewerk",
|
|
||||||
"workflow_updated": "Werkvloei bygewerk",
|
|
||||||
"workflows": "Werkvloeie",
|
|
||||||
"workflows_help_text": "Werkvloeie outomatiseer aksies op u items gebaseer op snellers en filters",
|
|
||||||
"wrong_pin_code": "Verkeerde PIN-kode",
|
"wrong_pin_code": "Verkeerde PIN-kode",
|
||||||
"year": "Jaar",
|
"year": "Jaar",
|
||||||
"years_ago": "{years, plural, one {# jaar} other {# jaar}} gelede",
|
"years_ago": "{years, plural, one {# year} other {# years}} gelede",
|
||||||
"yes": "Ja",
|
"yes": "Ja",
|
||||||
"you_dont_have_any_shared_links": "U het geen gedeelde skakels nie",
|
"you_dont_have_any_shared_links": "Jy het geen gedeelde skakels",
|
||||||
"your_wifi_name": "U Wi-Fi-naam",
|
"your_wifi_name": "Jou Wi-Fi naam",
|
||||||
"zero_to_clear_rating": "druk 0 om itemgradering te wis",
|
"zoom_image": "Vergroot Prent"
|
||||||
"zoom_image": "Zoem in",
|
|
||||||
"zoom_to_bounds": "Zoem na rande"
|
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-28
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "البحث عن وظائف…",
|
"search_jobs": "البحث عن وظائف…",
|
||||||
"send_welcome_email": "إرسال بريد ترحيبي",
|
"send_welcome_email": "إرسال بريد ترحيبي",
|
||||||
"server_external_domain_settings": "إسم النطاق الخارجي",
|
"server_external_domain_settings": "إسم النطاق الخارجي",
|
||||||
"server_external_domain_settings_description": "النطاق مستخدم لروابط خارجية",
|
"server_external_domain_settings_description": "إسم النطاق لروابط المشاركة العامة، بما في ذلك http(s)://",
|
||||||
"server_public_users": "المستخدمون العامون",
|
"server_public_users": "المستخدمون العامون",
|
||||||
"server_public_users_description": "يتم إدراج جميع المستخدمين (الاسم والبريد الإلكتروني) عند إضافة مستخدم إلى الألبومات المشتركة. عند تعطيل هذه الميزة، ستكون قائمة المستخدمين متاحة فقط لمستخدمي الإدارة.",
|
"server_public_users_description": "يتم إدراج جميع المستخدمين (الاسم والبريد الإلكتروني) عند إضافة مستخدم إلى الألبومات المشتركة. عند تعطيل هذه الميزة، ستكون قائمة المستخدمين متاحة فقط لمستخدمي الإدارة.",
|
||||||
"server_settings": "إعدادات الخادم",
|
"server_settings": "إعدادات الخادم",
|
||||||
@@ -411,7 +411,7 @@
|
|||||||
"transcoding_tone_mapping": "رسم الخرائط النغمية",
|
"transcoding_tone_mapping": "رسم الخرائط النغمية",
|
||||||
"transcoding_tone_mapping_description": "تحاول الحفاظ على مظهر مقاطع الفيديو HDR عند تحويلها إلى SDR. يقدم كل خوارزمية تنازلات مختلفة بين اللون والتفاصيل والسطوع. Hable تحافظ على التفاصيل، Mobius تحافظ على الألوان، و Reinhard تحافظ على السطوع.",
|
"transcoding_tone_mapping_description": "تحاول الحفاظ على مظهر مقاطع الفيديو HDR عند تحويلها إلى SDR. يقدم كل خوارزمية تنازلات مختلفة بين اللون والتفاصيل والسطوع. Hable تحافظ على التفاصيل، Mobius تحافظ على الألوان، و Reinhard تحافظ على السطوع.",
|
||||||
"transcoding_transcode_policy": "سياسة الترميز",
|
"transcoding_transcode_policy": "سياسة الترميز",
|
||||||
"transcoding_transcode_policy_description": "سياسة تحديد متى يجب ترميز الفيديو. سيتم دائمًا ترميز مقاطع الفيديو HDR و مقاطع الفديو اللتي تستدخم تنسيق غير YUV 4:2:0. (ما لم يتم تعطيل الترميز).",
|
"transcoding_transcode_policy_description": "سياسة تحديد متى يجب ترميز الفيديو. سيتم دائمًا ترميز مقاطع الفيديو HDR (ما لم يتم تعطيل الترميز).",
|
||||||
"transcoding_two_pass_encoding": "الترميز بمرورين",
|
"transcoding_two_pass_encoding": "الترميز بمرورين",
|
||||||
"transcoding_two_pass_encoding_setting_description": "ترميز بمرورين لإنتاج مقاطع فيديو بترميز أفضل. عند تمكين الحد الأقصى لمعدل البت (مطلوب لكي يعمل مع H.264 و HEVC)، يستخدم هذا الوضع نطاق معدل البت استنادًا إلى الحد الأقصى لمعدل البت ويتجاهل CRF. بالنسبة لـ VP9، يمكن استخدام CRF إذا تم تعطيل الحد الأقصى لمعدل البت.",
|
"transcoding_two_pass_encoding_setting_description": "ترميز بمرورين لإنتاج مقاطع فيديو بترميز أفضل. عند تمكين الحد الأقصى لمعدل البت (مطلوب لكي يعمل مع H.264 و HEVC)، يستخدم هذا الوضع نطاق معدل البت استنادًا إلى الحد الأقصى لمعدل البت ويتجاهل CRF. بالنسبة لـ VP9، يمكن استخدام CRF إذا تم تعطيل الحد الأقصى لمعدل البت.",
|
||||||
"transcoding_video_codec": "ترميز الفيديو",
|
"transcoding_video_codec": "ترميز الفيديو",
|
||||||
@@ -794,11 +794,6 @@
|
|||||||
"color": "اللون",
|
"color": "اللون",
|
||||||
"color_theme": "نمط الألوان",
|
"color_theme": "نمط الألوان",
|
||||||
"command": "امر",
|
"command": "امر",
|
||||||
"command_palette_prompt": "اعثر بسرعة على الصفحات أو الإجراءات أو الأوامر",
|
|
||||||
"command_palette_to_close": "للاغلاق",
|
|
||||||
"command_palette_to_navigate": "للدخول",
|
|
||||||
"command_palette_to_select": "للاختيار",
|
|
||||||
"command_palette_to_show_all": "لعرض الكل",
|
|
||||||
"comment_deleted": "تم حذف التعليق",
|
"comment_deleted": "تم حذف التعليق",
|
||||||
"comment_options": "خيارات التعليق",
|
"comment_options": "خيارات التعليق",
|
||||||
"comments_and_likes": "التعليقات والإعجابات",
|
"comments_and_likes": "التعليقات والإعجابات",
|
||||||
@@ -872,7 +867,7 @@
|
|||||||
"current_server_address": "عنوان الخادم الحالي",
|
"current_server_address": "عنوان الخادم الحالي",
|
||||||
"custom_date": "تاريخ مخصص",
|
"custom_date": "تاريخ مخصص",
|
||||||
"custom_locale": "لغة مخصصة",
|
"custom_locale": "لغة مخصصة",
|
||||||
"custom_locale_description": "تنسيق التواريخ, الأوقات والأرقام بناءً على اللغة والمنطقة المختاره",
|
"custom_locale_description": "تنسيق التواريخ والأرقام بناءً على اللغة والمنطقة",
|
||||||
"custom_url": "رابط مخصص",
|
"custom_url": "رابط مخصص",
|
||||||
"cutoff_date_description": "احتفظ بالصور من آخر…",
|
"cutoff_date_description": "احتفظ بالصور من آخر…",
|
||||||
"cutoff_day": "{count, plural, one {يوم} other {ايام}}",
|
"cutoff_day": "{count, plural, one {يوم} other {ايام}}",
|
||||||
@@ -895,6 +890,8 @@
|
|||||||
"deduplication_criteria_2": "عدد بيانات EXIF",
|
"deduplication_criteria_2": "عدد بيانات EXIF",
|
||||||
"deduplication_info": "معلومات إلغاء البيانات المكررة",
|
"deduplication_info": "معلومات إلغاء البيانات المكررة",
|
||||||
"deduplication_info_description": "لتحديد الأصول مسبقا تلقائيا وإزالة التكرارات بكميات كبيرة، ننظر إلى:",
|
"deduplication_info_description": "لتحديد الأصول مسبقا تلقائيا وإزالة التكرارات بكميات كبيرة، ننظر إلى:",
|
||||||
|
"default_locale": "اللغة الافتراضية",
|
||||||
|
"default_locale_description": "تنسيق التواريخ والأرقام بناءً على لغة المتصفح الخاص بك",
|
||||||
"delete": "حذف",
|
"delete": "حذف",
|
||||||
"delete_action_confirmation_message": "هل انت متأكد من حذف هذا الملف؟ هذا سؤدي الى نقل الملف الى سلة مهملات الخادم وسيتم اشعارك ان كنت تريد حذفه على الجهاز",
|
"delete_action_confirmation_message": "هل انت متأكد من حذف هذا الملف؟ هذا سؤدي الى نقل الملف الى سلة مهملات الخادم وسيتم اشعارك ان كنت تريد حذفه على الجهاز",
|
||||||
"delete_action_prompt": "تم حذف {count}",
|
"delete_action_prompt": "تم حذف {count}",
|
||||||
@@ -1007,8 +1004,6 @@
|
|||||||
"editor_edits_applied_success": "تم تطبيق التعديلات بنجاح",
|
"editor_edits_applied_success": "تم تطبيق التعديلات بنجاح",
|
||||||
"editor_flip_horizontal": "اقلب أفقيًا",
|
"editor_flip_horizontal": "اقلب أفقيًا",
|
||||||
"editor_flip_vertical": "اقلب عموديًا",
|
"editor_flip_vertical": "اقلب عموديًا",
|
||||||
"editor_handle_corner": "{corner, select, top_left {أعلى اليسار} top_right {أعلى اليمين} bottom_left {أسفل اليسار} bottom_right {أسفل اليمين} other {أخري}} corner handle",
|
|
||||||
"editor_handle_edge": "{edge, select, top {أعلي} bottom {أسفل} left {يسار} right {يمين} other {أخري}} edge handle",
|
|
||||||
"editor_orientation": "اتجاه",
|
"editor_orientation": "اتجاه",
|
||||||
"editor_reset_all_changes": "اعادة ظبط التغييرات",
|
"editor_reset_all_changes": "اعادة ظبط التغييرات",
|
||||||
"editor_rotate_left": "أدر 90° عكس اتجاه عقارب الساعة",
|
"editor_rotate_left": "أدر 90° عكس اتجاه عقارب الساعة",
|
||||||
@@ -1074,7 +1069,6 @@
|
|||||||
"failed_to_update_notification_status": "فشل في تحديث حالة الإشعار",
|
"failed_to_update_notification_status": "فشل في تحديث حالة الإشعار",
|
||||||
"incorrect_email_or_password": "بريد أو كلمة مرور غير صحيحة",
|
"incorrect_email_or_password": "بريد أو كلمة مرور غير صحيحة",
|
||||||
"library_folder_already_exists": "مسار الاستيراد موجود بالفعل.",
|
"library_folder_already_exists": "مسار الاستيراد موجود بالفعل.",
|
||||||
"page_not_found": "الصفحة غير موجودة",
|
|
||||||
"paths_validation_failed": "فشل في التحقق من {paths, plural, one {# مسار} other {# مسارات}}",
|
"paths_validation_failed": "فشل في التحقق من {paths, plural, one {# مسار} other {# مسارات}}",
|
||||||
"profile_picture_transparent_pixels": "لا يمكن أن تحتوي صور الملف الشخصي على أجزاء/بكسلات شفافة. يرجى التكبير و/أو تحريك الصورة.",
|
"profile_picture_transparent_pixels": "لا يمكن أن تحتوي صور الملف الشخصي على أجزاء/بكسلات شفافة. يرجى التكبير و/أو تحريك الصورة.",
|
||||||
"quota_higher_than_disk_size": "لقد قمت بتعيين حصة نسبية أعلى من حجم القرص",
|
"quota_higher_than_disk_size": "لقد قمت بتعيين حصة نسبية أعلى من حجم القرص",
|
||||||
@@ -1174,7 +1168,6 @@
|
|||||||
"exif_bottom_sheet_people": "الناس",
|
"exif_bottom_sheet_people": "الناس",
|
||||||
"exif_bottom_sheet_person_add_person": "اضف اسما",
|
"exif_bottom_sheet_person_add_person": "اضف اسما",
|
||||||
"exit_slideshow": "خروج من العرض التقديمي",
|
"exit_slideshow": "خروج من العرض التقديمي",
|
||||||
"expand": "توسعة",
|
|
||||||
"expand_all": "توسيع الكل",
|
"expand_all": "توسيع الكل",
|
||||||
"experimental_settings_new_asset_list_subtitle": "أعمال جارية",
|
"experimental_settings_new_asset_list_subtitle": "أعمال جارية",
|
||||||
"experimental_settings_new_asset_list_title": "تمكين شبكة الصور التجريبية",
|
"experimental_settings_new_asset_list_title": "تمكين شبكة الصور التجريبية",
|
||||||
@@ -1219,7 +1212,6 @@
|
|||||||
"filter_description": "شروط تصفية الأصول المستهدفة",
|
"filter_description": "شروط تصفية الأصول المستهدفة",
|
||||||
"filter_people": "تصفية الاشخاص",
|
"filter_people": "تصفية الاشخاص",
|
||||||
"filter_places": "تصفية الاماكن",
|
"filter_places": "تصفية الاماكن",
|
||||||
"filter_tags": "تصفية العلامات",
|
|
||||||
"filters": "التصفيات",
|
"filters": "التصفيات",
|
||||||
"find_them_fast": "يمكنك العثور عليها بسرعة بالاسم من خلال البحث",
|
"find_them_fast": "يمكنك العثور عليها بسرعة بالاسم من خلال البحث",
|
||||||
"first": "الاول",
|
"first": "الاول",
|
||||||
@@ -1650,7 +1642,6 @@
|
|||||||
"online": "متصل",
|
"online": "متصل",
|
||||||
"only_favorites": "المفضلة فقط",
|
"only_favorites": "المفضلة فقط",
|
||||||
"open": "فتح",
|
"open": "فتح",
|
||||||
"open_calendar": "افتح الرزنامة",
|
|
||||||
"open_in_map_view": "فتح في عرض الخريطة",
|
"open_in_map_view": "فتح في عرض الخريطة",
|
||||||
"open_in_openstreetmap": "فتح في OpenStreetMap",
|
"open_in_openstreetmap": "فتح في OpenStreetMap",
|
||||||
"open_the_search_filters": "افتح مرشحات البحث",
|
"open_the_search_filters": "افتح مرشحات البحث",
|
||||||
@@ -1810,8 +1801,9 @@
|
|||||||
"rate_asset": "تقييم الاصل",
|
"rate_asset": "تقييم الاصل",
|
||||||
"rating": "تقييم نجمي",
|
"rating": "تقييم نجمي",
|
||||||
"rating_clear": "مسح التقييم",
|
"rating_clear": "مسح التقييم",
|
||||||
"rating_count": "{count, plural, =0 {Unrated} one {# نجمة} other {# نجوم}}",
|
"rating_count": "{count, plural, one {# نجمة} other {# نجوم}}",
|
||||||
"rating_description": "اعرض تقييم EXIF في لوحة المعلومات",
|
"rating_description": "اعرض تقييم EXIF في لوحة المعلومات",
|
||||||
|
"rating_set": "تم تحديد التصنيف {rating, plural, one {# نجمة} other {# نجوم}}",
|
||||||
"reaction_options": "خيارات رد الفعل",
|
"reaction_options": "خيارات رد الفعل",
|
||||||
"read_changelog": "قراءة سجل التغيير",
|
"read_changelog": "قراءة سجل التغيير",
|
||||||
"readonly_mode_disabled": "تم تعطيل وضع القراءة فقط",
|
"readonly_mode_disabled": "تم تعطيل وضع القراءة فقط",
|
||||||
@@ -1883,10 +1875,7 @@
|
|||||||
"reset_pin_code_success": "تم اعادة تعيين رمز الPIN بنجاح",
|
"reset_pin_code_success": "تم اعادة تعيين رمز الPIN بنجاح",
|
||||||
"reset_pin_code_with_password": "يمكنك دائما اعادة تعيين رمز الPIN الخاص بك عن طريق كلمة المرور الخاصة بك",
|
"reset_pin_code_with_password": "يمكنك دائما اعادة تعيين رمز الPIN الخاص بك عن طريق كلمة المرور الخاصة بك",
|
||||||
"reset_sqlite": "إعادة تعيين قاعدة بيانات SQLite",
|
"reset_sqlite": "إعادة تعيين قاعدة بيانات SQLite",
|
||||||
"reset_sqlite_clear_app_data": "مسح البيانات",
|
"reset_sqlite_confirmation": "هل أنت متأكد من رغبتك في إعادة ضبط قاعدة بيانات SQLite؟ ستحتاج إلى تسجيل الخروج ثم تسجيل الدخول مرة أخرى لإعادة مزامنة البيانات",
|
||||||
"reset_sqlite_confirmation": "هل أنت متأكد من رغبتك في حذف ضبط بيانات التطبيق؟ سيؤدي هذا إلى إزالة جميع الإعدادات وتسجيل خروجك.",
|
|
||||||
"reset_sqlite_confirmation_note": "ملاحظة: سيتعين عليك إعادة تشغيل التطبيق بعد المسح.",
|
|
||||||
"reset_sqlite_done": "تم مسح بيانات التطبيق. يرجى إعادة تشغيل تطبيق Immich وتسجيل الدخول مرة أخرى.",
|
|
||||||
"reset_sqlite_success": "تم إعادة تعيين قاعدة بيانات SQLite بنجاح",
|
"reset_sqlite_success": "تم إعادة تعيين قاعدة بيانات SQLite بنجاح",
|
||||||
"reset_to_default": "إعادة التعيين إلى الافتراضي",
|
"reset_to_default": "إعادة التعيين إلى الافتراضي",
|
||||||
"resolution": "دقة",
|
"resolution": "دقة",
|
||||||
@@ -1914,7 +1903,6 @@
|
|||||||
"saved_settings": "تم حفظ الإعدادات",
|
"saved_settings": "تم حفظ الإعدادات",
|
||||||
"say_something": "قل شيئًا",
|
"say_something": "قل شيئًا",
|
||||||
"scaffold_body_error_occurred": "حدث خطأ",
|
"scaffold_body_error_occurred": "حدث خطأ",
|
||||||
"scaffold_body_error_unrecoverable": "حدث خطأ لا يمكن إصلاحه. يرجى مشاركة تفاصيل الخطأ وتسلسل الأخطاء على Discord أو GitHub حتى نتمكن من مساعدتك. إذا طُلب منك ذلك، يمكنك مسح بيانات التطبيق أدناه.",
|
|
||||||
"scan": "بحث",
|
"scan": "بحث",
|
||||||
"scan_all_libraries": "فحص كل المكتبات",
|
"scan_all_libraries": "فحص كل المكتبات",
|
||||||
"scan_library": "مسح",
|
"scan_library": "مسح",
|
||||||
@@ -1950,7 +1938,6 @@
|
|||||||
"search_filter_ocr": "البحث عن طريق التعرف البصري على الحروف",
|
"search_filter_ocr": "البحث عن طريق التعرف البصري على الحروف",
|
||||||
"search_filter_people_title": "اختر الاشخاص",
|
"search_filter_people_title": "اختر الاشخاص",
|
||||||
"search_filter_star_rating": "تقييم النجوم",
|
"search_filter_star_rating": "تقييم النجوم",
|
||||||
"search_filter_tags_title": "تحديد العلامات",
|
|
||||||
"search_for": "البحث عن",
|
"search_for": "البحث عن",
|
||||||
"search_for_existing_person": "البحث عن شخص موجود",
|
"search_for_existing_person": "البحث عن شخص موجود",
|
||||||
"search_no_more_result": "لا توجد نتائج اضافية",
|
"search_no_more_result": "لا توجد نتائج اضافية",
|
||||||
@@ -2030,9 +2017,6 @@
|
|||||||
"set_profile_picture": "تحديد صورة الملف الشخصي",
|
"set_profile_picture": "تحديد صورة الملف الشخصي",
|
||||||
"set_slideshow_to_fullscreen": "تحديد عرض الشرائح على وضع ملء الشاشة",
|
"set_slideshow_to_fullscreen": "تحديد عرض الشرائح على وضع ملء الشاشة",
|
||||||
"set_stack_primary_asset": "تعيين كأصل اساسي",
|
"set_stack_primary_asset": "تعيين كأصل اساسي",
|
||||||
"setting_image_navigation_enable_subtitle": "في حال تم التفعيل، يمكنك الانتقال إلى الصورة السابقة أو التالية عن طريق النقر على الربع الأيسر أو الربع الأيمن من الشاشة.",
|
|
||||||
"setting_image_navigation_enable_title": "النقر للتنقل",
|
|
||||||
"setting_image_navigation_title": "التنقل بين الصور",
|
|
||||||
"setting_image_viewer_help": "يقوم عارض التفاصيل بتحميل الصورة المصغرة الصغيرة أولاً ، ثم يقوم بتحميل المعاينة متوسطة الحجم (إذا تم تمكينها) ، ويقوم أخيرًا بتحميل الأصل (إذا تم تمكينه).",
|
"setting_image_viewer_help": "يقوم عارض التفاصيل بتحميل الصورة المصغرة الصغيرة أولاً ، ثم يقوم بتحميل المعاينة متوسطة الحجم (إذا تم تمكينها) ، ويقوم أخيرًا بتحميل الأصل (إذا تم تمكينه).",
|
||||||
"setting_image_viewer_original_subtitle": "تمكين تحميل الصورة الكاملة الدقة الأصلية (كبيرة!).تعطيل لتقليل استخدام البيانات (كل من الشبكة وعلى ذاكرة التخزين المؤقت للجهاز).",
|
"setting_image_viewer_original_subtitle": "تمكين تحميل الصورة الكاملة الدقة الأصلية (كبيرة!).تعطيل لتقليل استخدام البيانات (كل من الشبكة وعلى ذاكرة التخزين المؤقت للجهاز).",
|
||||||
"setting_image_viewer_original_title": "تحميل الصورة الأصلية",
|
"setting_image_viewer_original_title": "تحميل الصورة الأصلية",
|
||||||
@@ -2199,7 +2183,6 @@
|
|||||||
"support": "الدعم",
|
"support": "الدعم",
|
||||||
"support_and_feedback": "الدعم والتعليقات",
|
"support_and_feedback": "الدعم والتعليقات",
|
||||||
"support_third_party_description": "تم حزم تثبيت immich الخاص بك بواسطة جهة خارجية. قد تكون المشكلات التي تواجهها ناجمة عن هذه الحزمة، لذا يرجى طرح المشكلات معهم في المقام الأول باستخدام الروابط أدناه.",
|
"support_third_party_description": "تم حزم تثبيت immich الخاص بك بواسطة جهة خارجية. قد تكون المشكلات التي تواجهها ناجمة عن هذه الحزمة، لذا يرجى طرح المشكلات معهم في المقام الأول باستخدام الروابط أدناه.",
|
||||||
"supporter": "داعم",
|
|
||||||
"swap_merge_direction": "تبديل اتجاه الدمج",
|
"swap_merge_direction": "تبديل اتجاه الدمج",
|
||||||
"sync": "مزامنة",
|
"sync": "مزامنة",
|
||||||
"sync_albums": "مزامنة الالبومات",
|
"sync_albums": "مزامنة الالبومات",
|
||||||
@@ -2311,7 +2294,6 @@
|
|||||||
"unstack_action_prompt": "تم ازالة تكديس {count}",
|
"unstack_action_prompt": "تم ازالة تكديس {count}",
|
||||||
"unstacked_assets_count": "تم إخراج {count, plural, one {# الأصل} other {# الأصول}} من التكديس",
|
"unstacked_assets_count": "تم إخراج {count, plural, one {# الأصل} other {# الأصول}} من التكديس",
|
||||||
"unsupported_field_type": "نوع حقل غير مدعوم",
|
"unsupported_field_type": "نوع حقل غير مدعوم",
|
||||||
"unsupported_file_type": "لا يمكن رفع الملف {file} لأن نوع الملف {type} غير مدعوم.",
|
|
||||||
"untagged": "غير مُعَلَّم",
|
"untagged": "غير مُعَلَّم",
|
||||||
"untitled_workflow": "خطة سير عمل بدون عنوان",
|
"untitled_workflow": "خطة سير عمل بدون عنوان",
|
||||||
"up_next": "التالي",
|
"up_next": "التالي",
|
||||||
@@ -2338,8 +2320,6 @@
|
|||||||
"url": "عنوان URL",
|
"url": "عنوان URL",
|
||||||
"usage": "الاستخدام",
|
"usage": "الاستخدام",
|
||||||
"use_biometric": "استخدم البايومتري",
|
"use_biometric": "استخدم البايومتري",
|
||||||
"use_browser_locale": "استخدم لغه للمتصفح",
|
|
||||||
"use_browser_locale_description": "تنسيق التواريخ والأوقات والأرقام وفقًا لإعدادات اللغة في متصفحك",
|
|
||||||
"use_current_connection": "استخدم الاتصال الحالي",
|
"use_current_connection": "استخدم الاتصال الحالي",
|
||||||
"use_custom_date_range": "استخدم النطاق الزمني المخصص بدلاً من ذلك",
|
"use_custom_date_range": "استخدم النطاق الزمني المخصص بدلاً من ذلك",
|
||||||
"user": "مستخدم",
|
"user": "مستخدم",
|
||||||
|
|||||||
@@ -104,8 +104,6 @@
|
|||||||
"image_preview_description": "Відарыс сярэдняга памеру з выдаленымі метаданымі, выкарыстоўваецца пры праглядзе асобнага рэсурсу і для машыннага навучання",
|
"image_preview_description": "Відарыс сярэдняга памеру з выдаленымі метаданымі, выкарыстоўваецца пры праглядзе асобнага рэсурсу і для машыннага навучання",
|
||||||
"image_preview_quality_description": "Якасць праявы ад 1 да 100. Чым вышэй, тым лепш, але пры гэтым ствараюцца файлы большага памеру і можа знізіцца хуткасць водгуку прыкладання. Ўстаноўка нізкага значэння можа паўплываць на якасць машыннага навучання.",
|
"image_preview_quality_description": "Якасць праявы ад 1 да 100. Чым вышэй, тым лепш, але пры гэтым ствараюцца файлы большага памеру і можа знізіцца хуткасць водгуку прыкладання. Ўстаноўка нізкага значэння можа паўплываць на якасць машыннага навучання.",
|
||||||
"image_preview_title": "Налады папярэдняга прагляду",
|
"image_preview_title": "Налады папярэдняга прагляду",
|
||||||
"image_progressive": "Прагрэсіўны",
|
|
||||||
"image_progressive_description": "Выявы з прагрэсіўным кодаваннем загружаюцца хутчэй, паступова паляпшаецца якасць. Налада не ўплывае на выяву ў фармаце WebP.",
|
|
||||||
"image_quality": "Якасць",
|
"image_quality": "Якасць",
|
||||||
"image_resolution": "Раздзяляльнасць",
|
"image_resolution": "Раздзяляльнасць",
|
||||||
"image_resolution_description": "Больш высокая раздзяляльнасць дазваляе захаваць больш дэталяў, але патрабуе больш часу для кадавання, прыводзіць да павялічвання памеру файлаў і можа знізіць хуткасць водгуку дадатку.",
|
"image_resolution_description": "Больш высокая раздзяляльнасць дазваляе захаваць больш дэталяў, але патрабуе больш часу для кадавання, прыводзіць да павялічвання памеру файлаў і можа знізіць хуткасць водгуку дадатку.",
|
||||||
@@ -122,7 +120,6 @@
|
|||||||
"job_settings_description": "Кіраваць наладамі паралельнага выканання заданняў",
|
"job_settings_description": "Кіраваць наладамі паралельнага выканання заданняў",
|
||||||
"jobs_delayed": "{jobCount, plural, other {# адкладзена}}",
|
"jobs_delayed": "{jobCount, plural, other {# адкладзена}}",
|
||||||
"jobs_failed": "{jobCount, plural, other {# не выканалася}}",
|
"jobs_failed": "{jobCount, plural, other {# не выканалася}}",
|
||||||
"jobs_over_time": "Графік апрацоўкі",
|
|
||||||
"library_created": "Створана бібліятэка: {library}",
|
"library_created": "Створана бібліятэка: {library}",
|
||||||
"library_deleted": "Бібліятэка выдалена",
|
"library_deleted": "Бібліятэка выдалена",
|
||||||
"library_details": "Параметры бібліятэкі",
|
"library_details": "Параметры бібліятэкі",
|
||||||
@@ -163,27 +160,8 @@
|
|||||||
"machine_learning_facial_recognition_model_description": "Мадэлі пералічаны ў парадку ўбывання іх памеру. Большыя мадэлі павольней і выкарыстоўваюць больш памяці, але даюць лепшыя вынікі. Звярніце увагу, што пасля змены мадэлі трэба зноў запусціць заданне распазнавання твараў для ўсіх відарысаў.",
|
"machine_learning_facial_recognition_model_description": "Мадэлі пералічаны ў парадку ўбывання іх памеру. Большыя мадэлі павольней і выкарыстоўваюць больш памяці, але даюць лепшыя вынікі. Звярніце увагу, што пасля змены мадэлі трэба зноў запусціць заданне распазнавання твараў для ўсіх відарысаў.",
|
||||||
"machine_learning_facial_recognition_setting": "Уключыць распазнаванне твараў",
|
"machine_learning_facial_recognition_setting": "Уключыць распазнаванне твараў",
|
||||||
"machine_learning_facial_recognition_setting_description": "Калі адключана, відарысы не будуць кадавацца для распазнавання твараў, і не будзе запаўняцца раздзел \"Людзі\" на старонцы \"Агляд\".",
|
"machine_learning_facial_recognition_setting_description": "Калі адключана, відарысы не будуць кадавацца для распазнавання твараў, і не будзе запаўняцца раздзел \"Людзі\" на старонцы \"Агляд\".",
|
||||||
"machine_learning_max_detection_distance": "Максімальная адлегласць выяўлення",
|
|
||||||
"machine_learning_max_detection_distance_description": "Максімальная розніца паміж двума выявамі, якія лічацца дублікатамі, складае ад 0,001 да 0,1. Больш высокія значэнні дазволяць выявіць больш дублікатаў, але могуць прывесці да няправільных выяўленняў.",
|
|
||||||
"machine_learning_max_recognition_distance": "Парог разпазнавання",
|
|
||||||
"machine_learning_max_recognition_distance_description": "Максімальнае адрозненне паміж двума асобамі, якія можна лічыць адным чалавекам (у дыяпазоне ад 0 да 2).Зніжэнне гэтага параметру можа прадухіліць распазнанне двух людзей як аднаго і таго ж чалавека, а павышэнне - як двух розных людзей. Майце на ўвазе, што прасцей аб'яднаць двух людзей, чым падзяліць аднаго чалавека на дваіх, таму па магчымасці выбірайце меншы парог.",
|
|
||||||
"machine_learning_min_detection_score": "Мінімальны парог разпазнавання",
|
|
||||||
"machine_learning_min_detection_score_description": "Мінімальны парог для выяўлення асобы (ад 0 да 1). Ніжэйшае значэнне дазволіць знаходзіць больш асоб, але можа прывесці да ілжывых спрацоўванняў.",
|
|
||||||
"machine_learning_min_recognized_faces": "Мінімум разпазнаных твараў",
|
|
||||||
"machine_learning_min_recognized_faces_description": "Мінімальная колькасць распазнаных твараў для стварэння асобы. Павялічэнне гэтага параметра робіць распазнанне асоб больш дакладным, але пры гэтым павялічваецца верагоднасць таго, што твар не будзе прысвоены асобе.",
|
|
||||||
"machine_learning_ocr": "Разпазнаванне тэксту (OCR)",
|
|
||||||
"machine_learning_ocr_description": "Выкарыстоўвайце машыннае навучанне для распазнавання тэксту на малюнках",
|
|
||||||
"machine_learning_ocr_enabled": "Дадаць OCR",
|
|
||||||
"machine_learning_ocr_enabled_description": "Калі адключана, выявы не будуць распазнавацца з выкарыстаннем тэксту.",
|
|
||||||
"machine_learning_ocr_max_resolution": "Максімальная раздзяляльнасць",
|
"machine_learning_ocr_max_resolution": "Максімальная раздзяляльнасць",
|
||||||
"machine_learning_ocr_max_resolution_description": "Відарысы з раздзяляльнасцю больш гэтай будуць паменшаны з захаваннем суадносіны бакоў. Больш высокія значэнні павышаюць дакладнасць распазнавання, але патрабуюць больш часу на апрацоўку і выкарыстоўваюць больш памяці.",
|
"machine_learning_ocr_max_resolution_description": "Відарысы з раздзяляльнасцю больш гэтай будуць паменшаны з захаваннем суадносіны бакоў. Больш высокія значэнні павышаюць дакладнасць распазнавання, але патрабуюць больш часу на апрацоўку і выкарыстоўваюць больш памяці.",
|
||||||
"machine_learning_ocr_min_detection_score": "Мінімальны бал выяўлення",
|
|
||||||
"machine_learning_ocr_min_detection_score_description": "Мінімальны бал даверу для выяўлення тэксту складае ад 0 да 1. Больш нізкія значэнні дазволяць выявіць больш тэксту, але могуць прывесці да хібных спрацоўванняў.",
|
|
||||||
"machine_learning_ocr_min_recognition_score": "Мінімальны бал распазнавання",
|
|
||||||
"machine_learning_ocr_min_score_recognition_description": "Мінімальны бал даверу для распазнавання выяўленага тэксту складае ад 0 да 1. Больш нізкія значэнні распазнаюць больш тэксту, але могуць прывесці да хібных спрацоўванняў.",
|
|
||||||
"machine_learning_ocr_model": "Мадэль машыннага навучання (OCR)",
|
|
||||||
"machine_learning_ocr_model_description": "Серверныя мадэлі больш дакладныя, чым мабільныя, але апрацоўваюць дадзеныя даўжэй і выкарыстоўваюць больш памяці.",
|
|
||||||
"machine_learning_settings": "Налады машыннага навучання",
|
|
||||||
"map_dark_style": "Цёмны стыль",
|
"map_dark_style": "Цёмны стыль",
|
||||||
"map_enable_description": "Уключыць функцыі карты",
|
"map_enable_description": "Уключыць функцыі карты",
|
||||||
"map_gps_settings": "Налады карты і GPS",
|
"map_gps_settings": "Налады карты і GPS",
|
||||||
@@ -193,7 +171,6 @@
|
|||||||
"map_style_description": "URL-адрас style.json тэмы карты",
|
"map_style_description": "URL-адрас style.json тэмы карты",
|
||||||
"metadata_extraction_job_description": "Выняць метаданыя з файлаў, такія як месцазнаходжанне, твары і раздзяляльнасць",
|
"metadata_extraction_job_description": "Выняць метаданыя з файлаў, такія як месцазнаходжанне, твары і раздзяляльнасць",
|
||||||
"metadata_settings": "Налады метаданых",
|
"metadata_settings": "Налады метаданых",
|
||||||
"notification_email_port_description": "Порт паштовага сервера (напрыклад, 25, 465 або 587)",
|
|
||||||
"oauth_button_text": "Тэкст кнопкі",
|
"oauth_button_text": "Тэкст кнопкі",
|
||||||
"oauth_settings": "OAuth",
|
"oauth_settings": "OAuth",
|
||||||
"refreshing_all_libraries": "Абнаўленне ўсіх бібліятэк",
|
"refreshing_all_libraries": "Абнаўленне ўсіх бібліятэк",
|
||||||
|
|||||||
+14
-34
@@ -61,7 +61,7 @@
|
|||||||
"backup_onboarding_1_description": "копие на облака или друго физическо място.",
|
"backup_onboarding_1_description": "копие на облака или друго физическо място.",
|
||||||
"backup_onboarding_2_description": "локални копия на различни устройства. Това включва основните файлове и локални архиви на тези файлове.",
|
"backup_onboarding_2_description": "локални копия на различни устройства. Това включва основните файлове и локални архиви на тези файлове.",
|
||||||
"backup_onboarding_3_description": "общо копия на вашите данни, включитено оригиналните файлове. Това включва 1 копие извън системата и 2 локални копия.",
|
"backup_onboarding_3_description": "общо копия на вашите данни, включитено оригиналните файлове. Това включва 1 копие извън системата и 2 локални копия.",
|
||||||
"backup_onboarding_description": "За надеждна защита препоръчваме <backblaze-link>стратегията 3-2-1</backblaze-link>. Правете архивни копия както на качените снимки/видеа, така и на базата данни на Immich.",
|
"backup_onboarding_description": "За надеждна защита препоръчваме стратегията <backblaze-link>3-2-1</backblaze-link>. Правете архивни копия както на качените снимки/видеа, така и на базата данни на Immich.",
|
||||||
"backup_onboarding_footer": "За подробна информация относно архивирането в Immich, моля вижте в <link>документацията</link>.",
|
"backup_onboarding_footer": "За подробна информация относно архивирането в Immich, моля вижте в <link>документацията</link>.",
|
||||||
"backup_onboarding_parts_title": "Стратегията 3-2-1 включва:",
|
"backup_onboarding_parts_title": "Стратегията 3-2-1 включва:",
|
||||||
"backup_onboarding_title": "Резервни копия",
|
"backup_onboarding_title": "Резервни копия",
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
"image_preview_description": "Среден размер на изображението с премахнати метаданни, използвано при преглед на един елемент и за машинно обучение",
|
"image_preview_description": "Среден размер на изображението с премахнати метаданни, използвано при преглед на един елемент и за машинно обучение",
|
||||||
"image_preview_quality_description": "Качество на предварителния преглед от 1 до 100. По-високата стойност е по-добра, но води до по-големи файлове и може да намали бързодействието на приложението. Задаването на ниска стойност може да повлияе на качеството на машинното обучение.",
|
"image_preview_quality_description": "Качество на предварителния преглед от 1 до 100. По-високата стойност е по-добра, но води до по-големи файлове и може да намали бързодействието на приложението. Задаването на ниска стойност може да повлияе на качеството на машинното обучение.",
|
||||||
"image_preview_title": "Настройки на прегледа",
|
"image_preview_title": "Настройки на прегледа",
|
||||||
"image_progressive": "Прогресивно",
|
"image_progressive": "Прогресивен JPEG",
|
||||||
"image_progressive_description": "Изображенията, кодирани в прогресивен JPEG формат, се зареждат по-бързо, с постепенно подобряващо се качество. Това няма влияние на кодираните като WebP изображения.",
|
"image_progressive_description": "Изображенията, кодирани в прогресивен JPEG формат, се зареждат по-бързо, с постепенно подобряващо се качество. Това няма влияние на кодираните като WebP изображения.",
|
||||||
"image_quality": "Качество",
|
"image_quality": "Качество",
|
||||||
"image_resolution": "Резолюция",
|
"image_resolution": "Резолюция",
|
||||||
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "Търсене на задачи…",
|
"search_jobs": "Търсене на задачи…",
|
||||||
"send_welcome_email": "Изпращане на имейл за добре дошли",
|
"send_welcome_email": "Изпращане на имейл за добре дошли",
|
||||||
"server_external_domain_settings": "Външен домейн",
|
"server_external_domain_settings": "Външен домейн",
|
||||||
"server_external_domain_settings_description": "Домейн за външни връзки",
|
"server_external_domain_settings_description": "Домейн за публични споделени връзки, включително http(s)://",
|
||||||
"server_public_users": "Публични потребители",
|
"server_public_users": "Публични потребители",
|
||||||
"server_public_users_description": "Всички потребители (име и имейл) са изброени при добавяне на потребител в споделени албуми. Когато е деактивирано, списъкът с потребители ще бъде достъпен само за администраторите.",
|
"server_public_users_description": "Всички потребители (име и имейл) са изброени при добавяне на потребител в споделени албуми. Когато е деактивирано, списъкът с потребители ще бъде достъпен само за администраторите.",
|
||||||
"server_settings": "Настройки на сървъра",
|
"server_settings": "Настройки на сървъра",
|
||||||
@@ -372,7 +372,7 @@
|
|||||||
"transcoding_audio_codec": "Аудио кодек",
|
"transcoding_audio_codec": "Аудио кодек",
|
||||||
"transcoding_audio_codec_description": "Opus е опцията с най-високо качество, но има по-ниска съвместимост със стари устройства или софтуер.",
|
"transcoding_audio_codec_description": "Opus е опцията с най-високо качество, но има по-ниска съвместимост със стари устройства или софтуер.",
|
||||||
"transcoding_bitrate_description": "Видеоклипове с по-висок от максималния битрейт или не в приет формат",
|
"transcoding_bitrate_description": "Видеоклипове с по-висок от максималния битрейт или не в приет формат",
|
||||||
"transcoding_codecs_learn_more": "За да научите повече за използваната терминология, вижте документацията на FFmpeg за <h264-link>кодек H.264</h264-link>, <hevc-link>кодек HEVC</hevc-link> и <vp9-link>кодек VP9</vp9-link>.",
|
"transcoding_codecs_learn_more": "За да научите повече за използваната терминология, вижте документацията на FFmpeg за <h264-link>кодек H.264</h264-link>, <hevc-link>кодек HEVC</hevc-link> и <vp9-link>VP9 кодек</vp9-link>.",
|
||||||
"transcoding_constant_quality_mode": "Режим на постоянно качество",
|
"transcoding_constant_quality_mode": "Режим на постоянно качество",
|
||||||
"transcoding_constant_quality_mode_description": "ICQ е по-добър от CQP, но някои устройства за хардуерно ускоряване не поддържат този режим. С задаването на тази опция ще предпочете посочения режим при използване на базирано на качество кодиране. Игнорирано от NVENC, тъй като не поддържа ICQ.",
|
"transcoding_constant_quality_mode_description": "ICQ е по-добър от CQP, но някои устройства за хардуерно ускоряване не поддържат този режим. С задаването на тази опция ще предпочете посочения режим при използване на базирано на качество кодиране. Игнорирано от NVENC, тъй като не поддържа ICQ.",
|
||||||
"transcoding_constant_rate_factor": "Коефициент на постоянна скорост (-crf)",
|
"transcoding_constant_rate_factor": "Коефициент на постоянна скорост (-crf)",
|
||||||
@@ -411,7 +411,7 @@
|
|||||||
"transcoding_tone_mapping": "Тонално картографиране",
|
"transcoding_tone_mapping": "Тонално картографиране",
|
||||||
"transcoding_tone_mapping_description": "Опитва се да запази външния вид на HDR видеоклипове, когато се преобразува в SDR. Всеки алгоритъм прави различни компромиси за цвят, детайлност и яркост. Hable запазва детайлите, Mobius запазва цвета, а Reinhard запазва яркостта.",
|
"transcoding_tone_mapping_description": "Опитва се да запази външния вид на HDR видеоклипове, когато се преобразува в SDR. Всеки алгоритъм прави различни компромиси за цвят, детайлност и яркост. Hable запазва детайлите, Mobius запазва цвета, а Reinhard запазва яркостта.",
|
||||||
"transcoding_transcode_policy": "Правила за транскодиране",
|
"transcoding_transcode_policy": "Правила за транскодиране",
|
||||||
"transcoding_transcode_policy_description": "Правила за това кога видеоклипът трябва да бъде транскодиран. HDR видеоклиповете и тези с формат, различен от YUV 4:2:0, ще бъдат винаги транскодирани (освен ако транскодирането е деактивирано).",
|
"transcoding_transcode_policy_description": "Правила за това кога видеоклипът трябва да бъде транскодиран. HDR видеоклиповете винаги ще бъдат транскодирани (освен ако транскодирането е деактивирано).",
|
||||||
"transcoding_two_pass_encoding": "Кодиране с двойно минаване",
|
"transcoding_two_pass_encoding": "Кодиране с двойно минаване",
|
||||||
"transcoding_two_pass_encoding_setting_description": "Транскодирането с две минавания създава по-добре кодиране видеа. Когато максималния битрейт е включен (задължително е да се работи с H.264 и HEVC), тази опция използва диапазон на битрейта базиран на максималния битрейт и игнорира CRF. За VP9, CRF може да се използва ако максималният битрейт е изключен.",
|
"transcoding_two_pass_encoding_setting_description": "Транскодирането с две минавания създава по-добре кодиране видеа. Когато максималния битрейт е включен (задължително е да се работи с H.264 и HEVC), тази опция използва диапазон на битрейта базиран на максималния битрейт и игнорира CRF. За VP9, CRF може да се използва ако максималният битрейт е изключен.",
|
||||||
"transcoding_video_codec": "Видеокодек",
|
"transcoding_video_codec": "Видеокодек",
|
||||||
@@ -794,11 +794,6 @@
|
|||||||
"color": "Цвят",
|
"color": "Цвят",
|
||||||
"color_theme": "Цветова тема",
|
"color_theme": "Цветова тема",
|
||||||
"command": "Команда",
|
"command": "Команда",
|
||||||
"command_palette_prompt": "Бързо намиране на страници, действия или команди",
|
|
||||||
"command_palette_to_close": "затвори",
|
|
||||||
"command_palette_to_navigate": "влез",
|
|
||||||
"command_palette_to_select": "избери",
|
|
||||||
"command_palette_to_show_all": "покажи всичко",
|
|
||||||
"comment_deleted": "Коментарът е изтрит",
|
"comment_deleted": "Коментарът е изтрит",
|
||||||
"comment_options": "Опции за коментар",
|
"comment_options": "Опции за коментар",
|
||||||
"comments_and_likes": "Коментари и харесвания",
|
"comments_and_likes": "Коментари и харесвания",
|
||||||
@@ -871,8 +866,8 @@
|
|||||||
"current_pin_code": "Сегашен PIN код",
|
"current_pin_code": "Сегашен PIN код",
|
||||||
"current_server_address": "Настоящ адрес на сървъра",
|
"current_server_address": "Настоящ адрес на сървъра",
|
||||||
"custom_date": "Персонализирана дата",
|
"custom_date": "Персонализирана дата",
|
||||||
"custom_locale": "Персонализирани езикови настройки",
|
"custom_locale": "Персонализиран локал",
|
||||||
"custom_locale_description": "Форматиране на дата, време и числа в зависимост от избрания език и регион",
|
"custom_locale_description": "Форматиране на дати и числа в зависимост от езика и региона",
|
||||||
"custom_url": "Персонализиран URL адрес",
|
"custom_url": "Персонализиран URL адрес",
|
||||||
"cutoff_date_description": "Запазване на снимки от последните…",
|
"cutoff_date_description": "Запазване на снимки от последните…",
|
||||||
"cutoff_day": "{count, plural, one {ден} other {дни}}",
|
"cutoff_day": "{count, plural, one {ден} other {дни}}",
|
||||||
@@ -895,6 +890,8 @@
|
|||||||
"deduplication_criteria_2": "Брой EXIF данни",
|
"deduplication_criteria_2": "Брой EXIF данни",
|
||||||
"deduplication_info": "Информация за дедупликацията",
|
"deduplication_info": "Информация за дедупликацията",
|
||||||
"deduplication_info_description": "За автоматично предварително избиране на ресурси и премахване на дубликати на едро, разглеждаме:",
|
"deduplication_info_description": "За автоматично предварително избиране на ресурси и премахване на дубликати на едро, разглеждаме:",
|
||||||
|
"default_locale": "Локализация по подразбиране",
|
||||||
|
"default_locale_description": "Форматиране на дати и числа в зависимост от езиковата настройка на браузъра",
|
||||||
"delete": "Изтрий",
|
"delete": "Изтрий",
|
||||||
"delete_action_confirmation_message": "Сигурни ли сте, че искате да изтриете този обект? Следва преместване на обекта в коша за отпадъци на сървъра и ще получите предложение обекта да бъде изтрит локално",
|
"delete_action_confirmation_message": "Сигурни ли сте, че искате да изтриете този обект? Следва преместване на обекта в коша за отпадъци на сървъра и ще получите предложение обекта да бъде изтрит локално",
|
||||||
"delete_action_prompt": "{count} са изтрити",
|
"delete_action_prompt": "{count} са изтрити",
|
||||||
@@ -1007,8 +1004,6 @@
|
|||||||
"editor_edits_applied_success": "Успешно прилагане на промените",
|
"editor_edits_applied_success": "Успешно прилагане на промените",
|
||||||
"editor_flip_horizontal": "Обърни хоризонтално",
|
"editor_flip_horizontal": "Обърни хоризонтално",
|
||||||
"editor_flip_vertical": "Обърни вертикално",
|
"editor_flip_vertical": "Обърни вертикално",
|
||||||
"editor_handle_corner": "Манипулатор {corner, select, top_left {горен ляв} top_right {горен десен} bottom_left {долен ляв} bottom_right {долен десен} other {в}} ъгъл",
|
|
||||||
"editor_handle_edge": "Манипулатор {edge, select, top {горен} bottom {долен} left {ляв} right {десен} other {по}} ръб",
|
|
||||||
"editor_orientation": "Ориентация",
|
"editor_orientation": "Ориентация",
|
||||||
"editor_reset_all_changes": "Възстанови всички промени",
|
"editor_reset_all_changes": "Възстанови всички промени",
|
||||||
"editor_rotate_left": "Завърти 90° обратно на часовниковата стрелка",
|
"editor_rotate_left": "Завърти 90° обратно на часовниковата стрелка",
|
||||||
@@ -1074,7 +1069,6 @@
|
|||||||
"failed_to_update_notification_status": "Неуспешно обновяване на състоянието на известията",
|
"failed_to_update_notification_status": "Неуспешно обновяване на състоянието на известията",
|
||||||
"incorrect_email_or_password": "Неправилен имейл или парола",
|
"incorrect_email_or_password": "Неправилен имейл или парола",
|
||||||
"library_folder_already_exists": "Тази папка вече съществува.",
|
"library_folder_already_exists": "Тази папка вече съществува.",
|
||||||
"page_not_found": "Страницата не е намерена",
|
|
||||||
"paths_validation_failed": "{paths, plural, one {# път} other {# пътища}} не преминаха валидация",
|
"paths_validation_failed": "{paths, plural, one {# път} other {# пътища}} не преминаха валидация",
|
||||||
"profile_picture_transparent_pixels": "Профилните снимки не могат да имат прозрачни пиксели. Моля, увеличете и/или преместете изображението.",
|
"profile_picture_transparent_pixels": "Профилните снимки не могат да имат прозрачни пиксели. Моля, увеличете и/или преместете изображението.",
|
||||||
"quota_higher_than_disk_size": "Зададена е квота, по-голяма от размера на диска",
|
"quota_higher_than_disk_size": "Зададена е квота, по-голяма от размера на диска",
|
||||||
@@ -1174,7 +1168,6 @@
|
|||||||
"exif_bottom_sheet_people": "ХОРА",
|
"exif_bottom_sheet_people": "ХОРА",
|
||||||
"exif_bottom_sheet_person_add_person": "Добави име",
|
"exif_bottom_sheet_person_add_person": "Добави име",
|
||||||
"exit_slideshow": "Изход от слайдшоуто",
|
"exit_slideshow": "Изход от слайдшоуто",
|
||||||
"expand": "Разгъни",
|
|
||||||
"expand_all": "Разшири всички",
|
"expand_all": "Разшири всички",
|
||||||
"experimental_settings_new_asset_list_subtitle": "В развитие",
|
"experimental_settings_new_asset_list_subtitle": "В развитие",
|
||||||
"experimental_settings_new_asset_list_title": "Включи експериментална подредба на снимки",
|
"experimental_settings_new_asset_list_title": "Включи експериментална подредба на снимки",
|
||||||
@@ -1219,7 +1212,6 @@
|
|||||||
"filter_description": "Условия за филтриране на обекти",
|
"filter_description": "Условия за филтриране на обекти",
|
||||||
"filter_people": "Филтриране на хора",
|
"filter_people": "Филтриране на хора",
|
||||||
"filter_places": "Филтър по място",
|
"filter_places": "Филтър по място",
|
||||||
"filter_tags": "Филтриране по етикети",
|
|
||||||
"filters": "Филтри",
|
"filters": "Филтри",
|
||||||
"find_them_fast": "Намерете ги бързо по име с търсене",
|
"find_them_fast": "Намерете ги бързо по име с търсене",
|
||||||
"first": "Първи",
|
"first": "Първи",
|
||||||
@@ -1319,7 +1311,7 @@
|
|||||||
"import_path": "Път за импортиране",
|
"import_path": "Път за импортиране",
|
||||||
"in_albums": "В {count, plural, one {# албум} other {# албума}}",
|
"in_albums": "В {count, plural, one {# албум} other {# албума}}",
|
||||||
"in_archive": "В архив",
|
"in_archive": "В архив",
|
||||||
"in_year": "През {year}",
|
"in_year": "{year} г.",
|
||||||
"in_year_selector": "През",
|
"in_year_selector": "През",
|
||||||
"include_archived": "Включване на архивирани",
|
"include_archived": "Включване на архивирани",
|
||||||
"include_shared_albums": "Включване на споделени албуми",
|
"include_shared_albums": "Включване на споделени албуми",
|
||||||
@@ -1650,7 +1642,6 @@
|
|||||||
"online": "Онлайн",
|
"online": "Онлайн",
|
||||||
"only_favorites": "Само любими",
|
"only_favorites": "Само любими",
|
||||||
"open": "Отвори",
|
"open": "Отвори",
|
||||||
"open_calendar": "Отвори календар",
|
|
||||||
"open_in_map_view": "Отвори изглед на карта",
|
"open_in_map_view": "Отвори изглед на карта",
|
||||||
"open_in_openstreetmap": "Отвори в OpenStreetMap",
|
"open_in_openstreetmap": "Отвори в OpenStreetMap",
|
||||||
"open_the_search_filters": "Отвари филтрите за търсене",
|
"open_the_search_filters": "Отвари филтрите за търсене",
|
||||||
@@ -1810,8 +1801,9 @@
|
|||||||
"rate_asset": "Задаване на рейтинг",
|
"rate_asset": "Задаване на рейтинг",
|
||||||
"rating": "Оценка със звезди",
|
"rating": "Оценка със звезди",
|
||||||
"rating_clear": "Изчисти оценката",
|
"rating_clear": "Изчисти оценката",
|
||||||
"rating_count": "{count, plural, =0 {Без рейтинг} one {# звезда} other {# звезди}}",
|
"rating_count": "{count, plural, one {# звезда} other {# звезди}}",
|
||||||
"rating_description": "Покажи EXIF оценката в панела с информация",
|
"rating_description": "Покажи EXIF оценката в панела с информация",
|
||||||
|
"rating_set": "Зададен е рейтинг {rating, plural, one {# звезда} other {# звезди}}",
|
||||||
"reaction_options": "Избор на реакция",
|
"reaction_options": "Избор на реакция",
|
||||||
"read_changelog": "Прочети промените",
|
"read_changelog": "Прочети промените",
|
||||||
"readonly_mode_disabled": "Режима само за четене е деактивиран",
|
"readonly_mode_disabled": "Режима само за четене е деактивиран",
|
||||||
@@ -1883,10 +1875,7 @@
|
|||||||
"reset_pin_code_success": "Успешно нулиран ПИН код",
|
"reset_pin_code_success": "Успешно нулиран ПИН код",
|
||||||
"reset_pin_code_with_password": "С вашата парола можете винаги да нулирате своя ПИН код",
|
"reset_pin_code_with_password": "С вашата парола можете винаги да нулирате своя ПИН код",
|
||||||
"reset_sqlite": "Нулиране на базата данни SQLite",
|
"reset_sqlite": "Нулиране на базата данни SQLite",
|
||||||
"reset_sqlite_clear_app_data": "Премахни данните",
|
"reset_sqlite_confirmation": "Наистина ли искате да нулирате базата данни SQLite? Ще трябва да излезете от системата и да се впишете отново за нова синхронизация на данните",
|
||||||
"reset_sqlite_confirmation": "Наистина ли искате да нулирате данните на приложението? Това ще премахни всички настройки и ще Ви отпише от системата.",
|
|
||||||
"reset_sqlite_confirmation_note": "Бележка: След премахване на данните ще трябва да рестартирате приложението.",
|
|
||||||
"reset_sqlite_done": "Данните на приложението са премахнати. Моля, рестартирайте Immich и се впишете отново.",
|
|
||||||
"reset_sqlite_success": "Успешно нулиране на базата данни SQLite",
|
"reset_sqlite_success": "Успешно нулиране на базата данни SQLite",
|
||||||
"reset_to_default": "Връщане на фабрични настройки",
|
"reset_to_default": "Връщане на фабрични настройки",
|
||||||
"resolution": "Резолюция",
|
"resolution": "Резолюция",
|
||||||
@@ -1914,7 +1903,6 @@
|
|||||||
"saved_settings": "Запазени настройки",
|
"saved_settings": "Запазени настройки",
|
||||||
"say_something": "Кажи нещо",
|
"say_something": "Кажи нещо",
|
||||||
"scaffold_body_error_occurred": "Възникна грешка",
|
"scaffold_body_error_occurred": "Възникна грешка",
|
||||||
"scaffold_body_error_unrecoverable": "Възникна непоправима грешка. Моля, споделете грешката и трасирането на стека в Discord или GitHub, за да можем да Ви помогнем. Ако бъдете посъветвани, може да изчистите данните на приложението.",
|
|
||||||
"scan": "Сканиранe",
|
"scan": "Сканиранe",
|
||||||
"scan_all_libraries": "Сканирай всички библиотеки",
|
"scan_all_libraries": "Сканирай всички библиотеки",
|
||||||
"scan_library": "Сканирай",
|
"scan_library": "Сканирай",
|
||||||
@@ -1950,7 +1938,6 @@
|
|||||||
"search_filter_ocr": "Търсене нa текст",
|
"search_filter_ocr": "Търсене нa текст",
|
||||||
"search_filter_people_title": "Избери хора",
|
"search_filter_people_title": "Избери хора",
|
||||||
"search_filter_star_rating": "Класация със звезди",
|
"search_filter_star_rating": "Класация със звезди",
|
||||||
"search_filter_tags_title": "Изберете етикети",
|
|
||||||
"search_for": "Търси за",
|
"search_for": "Търси за",
|
||||||
"search_for_existing_person": "Търси съществуващ човек",
|
"search_for_existing_person": "Търси съществуващ човек",
|
||||||
"search_no_more_result": "Няма други резултати",
|
"search_no_more_result": "Няма други резултати",
|
||||||
@@ -2030,9 +2017,6 @@
|
|||||||
"set_profile_picture": "Задайте профилна снимка",
|
"set_profile_picture": "Задайте профилна снимка",
|
||||||
"set_slideshow_to_fullscreen": "Задайте Слайдшоу на цял екран",
|
"set_slideshow_to_fullscreen": "Задайте Слайдшоу на цял екран",
|
||||||
"set_stack_primary_asset": "Задай като основни обекти",
|
"set_stack_primary_asset": "Задай като основни обекти",
|
||||||
"setting_image_navigation_enable_subtitle": "Ако е избрано, можете да навигирате към предишна/следваща снимка като натиснете върху лявата/дясната страна на екрана.",
|
|
||||||
"setting_image_navigation_enable_title": "Натисни за навигиране",
|
|
||||||
"setting_image_navigation_title": "Навигиране на снимка",
|
|
||||||
"setting_image_viewer_help": "При показване на обект първо се зарежда миниатюра, после изображение със средно качество (ако е разрешено) и накрая оригинала (ако е разрешено).",
|
"setting_image_viewer_help": "При показване на обект първо се зарежда миниатюра, после изображение със средно качество (ако е разрешено) и накрая оригинала (ако е разрешено).",
|
||||||
"setting_image_viewer_original_subtitle": "Разреши за да се зарежда оригиналното изображение в пълен размер (голям!). Забрани за да се намали обема на данните (по мрежата и в кеша на устройството).",
|
"setting_image_viewer_original_subtitle": "Разреши за да се зарежда оригиналното изображение в пълен размер (голям!). Забрани за да се намали обема на данните (по мрежата и в кеша на устройството).",
|
||||||
"setting_image_viewer_original_title": "Зареждане на оригинално изображение",
|
"setting_image_viewer_original_title": "Зареждане на оригинално изображение",
|
||||||
@@ -2199,7 +2183,6 @@
|
|||||||
"support": "Поддръжка",
|
"support": "Поддръжка",
|
||||||
"support_and_feedback": "Поддръжка и обратна връзка",
|
"support_and_feedback": "Поддръжка и обратна връзка",
|
||||||
"support_third_party_description": "Вашата инсталация на Immich е пакетирана от трета страна. Проблемите, които изпитвате, може да са причинени от този пакет, затова моля, първо подавайте проблемите си към тях чрез линковете по-долу.",
|
"support_third_party_description": "Вашата инсталация на Immich е пакетирана от трета страна. Проблемите, които изпитвате, може да са причинени от този пакет, затова моля, първо подавайте проблемите си към тях чрез линковете по-долу.",
|
||||||
"supporter": "Поддръжник",
|
|
||||||
"swap_merge_direction": "Размяна посоката на сливане",
|
"swap_merge_direction": "Размяна посоката на сливане",
|
||||||
"sync": "Синхронизиране",
|
"sync": "Синхронизиране",
|
||||||
"sync_albums": "Синхронизиране на албуми",
|
"sync_albums": "Синхронизиране на албуми",
|
||||||
@@ -2213,7 +2196,7 @@
|
|||||||
"tag_assets": "Тагни елементи",
|
"tag_assets": "Тагни елементи",
|
||||||
"tag_created": "Създаден етикет: {tag}",
|
"tag_created": "Създаден етикет: {tag}",
|
||||||
"tag_feature_description": "Разглеждане на снимки и видеоклипове, групирани по теми с логически тагове",
|
"tag_feature_description": "Разглеждане на снимки и видеоклипове, групирани по теми с логически тагове",
|
||||||
"tag_not_found_question": "Не можете да намерите етикет? <link>Създайте нов етикет.</link>",
|
"tag_not_found_question": "Не можете да намерите етикет? Създайте такъв <link>тук</link>",
|
||||||
"tag_people": "Отбележи Хора",
|
"tag_people": "Отбележи Хора",
|
||||||
"tag_updated": "Обновен етикет: {tag}",
|
"tag_updated": "Обновен етикет: {tag}",
|
||||||
"tagged_assets": "Тагнати {count, plural, one {# елемент} other {# елементи}}",
|
"tagged_assets": "Тагнати {count, plural, one {# елемент} other {# елементи}}",
|
||||||
@@ -2311,7 +2294,6 @@
|
|||||||
"unstack_action_prompt": "{count} са разгрупирани",
|
"unstack_action_prompt": "{count} са разгрупирани",
|
||||||
"unstacked_assets_count": "Разкачени {count, plural, one {# елемент} other {# елементи}}",
|
"unstacked_assets_count": "Разкачени {count, plural, one {# елемент} other {# елементи}}",
|
||||||
"unsupported_field_type": "Типа на полето не се поддържа",
|
"unsupported_field_type": "Типа на полето не се поддържа",
|
||||||
"unsupported_file_type": "Файлът {file} не може да бъде зареден, защото неговият тип {type} не се поддържа.",
|
|
||||||
"untagged": "Немаркирани",
|
"untagged": "Немаркирани",
|
||||||
"untitled_workflow": "Работен процес без име",
|
"untitled_workflow": "Работен процес без име",
|
||||||
"up_next": "Следващ",
|
"up_next": "Следващ",
|
||||||
@@ -2338,8 +2320,6 @@
|
|||||||
"url": "URL",
|
"url": "URL",
|
||||||
"usage": "Потребление",
|
"usage": "Потребление",
|
||||||
"use_biometric": "Използвай биометрия",
|
"use_biometric": "Използвай биометрия",
|
||||||
"use_browser_locale": "Използвай езиковите настройки на браузъра",
|
|
||||||
"use_browser_locale_description": "Формат на дата, време и числа според езиковата настройка на браузъра",
|
|
||||||
"use_current_connection": "Използвай текущата връзка",
|
"use_current_connection": "Използвай текущата връзка",
|
||||||
"use_custom_date_range": "Използвайте собствен диапазон от дати вместо това",
|
"use_custom_date_range": "Използвайте собствен диапазон от дати вместо това",
|
||||||
"user": "Потребител",
|
"user": "Потребител",
|
||||||
|
|||||||
+27
-29
@@ -70,23 +70,23 @@
|
|||||||
"cleared_jobs": "{job} এর জন্য jobs খালি করা হয়েছে",
|
"cleared_jobs": "{job} এর জন্য jobs খালি করা হয়েছে",
|
||||||
"config_set_by_file": "কনফিগ বর্তমানে একটি কনফিগ ফাইল দ্বারা সেট করা আছে",
|
"config_set_by_file": "কনফিগ বর্তমানে একটি কনফিগ ফাইল দ্বারা সেট করা আছে",
|
||||||
"confirm_delete_library": "আপনি কি নিশ্চিত যে আপনি {library} লাইব্রেরি মুছে ফেলতে চান?",
|
"confirm_delete_library": "আপনি কি নিশ্চিত যে আপনি {library} লাইব্রেরি মুছে ফেলতে চান?",
|
||||||
"confirm_delete_library_assets": "আপনি কি নিশ্চিতভাবে এই লাইব্রেরিটি মুছে ফেলতে চান? এতে Immich থেকে {count, plural, one {#টি অ্যাসেট} other {#টি অ্যাসেট}} মুছে যাবে এবং এই কাজটি পরে আর পূর্বাবস্থায় ফেরানো যাবে না। তবে ফাইলগুলো ডিস্কে থেকে যাবে।",
|
"confirm_delete_library_assets": "আপনি কি নিশ্চিত যে আপনি এই লাইব্রেরিটি মুছে ফেলতে চান? এটি Immich থেকে {count, plural, one {# contained asset} other {all # contained asset}} মুছে ফেলবে এবং পূর্বাবস্থায় ফেরানো যাবে না। ফাইলগুলি ডিস্কে থাকবে।",
|
||||||
"confirm_email_below": "নিশ্চিত করার জন্য নিচে \"{email}\" টাইপ করুন",
|
"confirm_email_below": "নিশ্চিত করতে, নিচে \"{email}\" টাইপ করুন",
|
||||||
"confirm_reprocess_all_faces": "আপনি কি নিশ্চিত যে আপনি সমস্ত মুখ পুনরায় পরিশোধন করতে চান? এতে নাম দেওয়া ব্যক্তিদের তথ্যও মুছে যাবে।",
|
"confirm_reprocess_all_faces": "আপনি কি নিশ্চিত যে আপনি সমস্ত মুখ পুনরায় প্রক্রিয়া করতে চান? এটি নামযুক্ত ব্যক্তিদেরও মুছে ফেলবে।",
|
||||||
"confirm_user_password_reset": "আপনি কি নিশ্চিত যে আপনি {user}-এর পাসওয়ার্ড রিসেট করতে চান?",
|
"confirm_user_password_reset": "আপনি কি নিশ্চিত যে আপনি {user} এর পাসওয়ার্ড রিসেট করতে চান?",
|
||||||
"confirm_user_pin_code_reset": "আপনি কি নিশ্চিত যে আপনি {user}-এর পিন কোড রিসেট করতে চান?",
|
"confirm_user_pin_code_reset": "আপনি কি নিশ্চিত যে আপনি {user} এর পিন কোড রিসেট করতে চান?",
|
||||||
"copy_config_to_clipboard_description": "বর্তমান সিস্টেম কনফিগারেশনটিকে একটি JSON অবজেক্ট হিসেবে ক্লিপবোর্ডে কপি করুন",
|
"copy_config_to_clipboard_description": "বর্তমান সিস্টেম কনফিগারেশন একটি JSON অবজেক্ট হিসেবে ক্লিপবোর্ডে কপি করুন",
|
||||||
"create_job": "Job তৈরি করুন",
|
"create_job": "job তৈরি করুন",
|
||||||
"cron_expression": "Cron এক্সপ্রেশন",
|
"cron_expression": "ক্রোন এক্সপ্রেশন",
|
||||||
"cron_expression_description": "Cron ফরম্যাট ব্যবহার করে স্ক্যানিং ইন্টারভ্যাল নির্ধারণ করুন। আরও তথ্যের জন্য দয়া করে <link>Crontab Guru</link> দেখুন",
|
"cron_expression_description": "ক্রোন ফর্ম্যাট ব্যবহার করে স্ক্যানিং ব্যবধান সেট করুন। আরও তথ্যের জন্য দয়া করে দেখুন যেমন <link>Crontab Guru</link>",
|
||||||
"cron_expression_presets": "Cron এক্সপ্রেশন প্রিসেট",
|
"cron_expression_presets": "ক্রোন এক্সপ্রেশন প্রিসেট",
|
||||||
"disable_login": "লগইন অক্ষম করুন",
|
"disable_login": "লগইন অক্ষম করুন",
|
||||||
"duplicate_detection_job_description": "সদৃশ ছবি শনাক্ত করতে অ্যাসেটগুলোর উপর মেশিন লার্নিং চালান। এটি Smart Search-এর উপর নির্ভর করে",
|
"duplicate_detection_job_description": "অনুরূপ ছবি সনাক্ত করতে সম্পদগুলিতে মেশিন লার্নিং চালান। স্মার্ট অনুসন্ধানের উপর নির্ভর করে",
|
||||||
"exclusion_pattern_description": "এক্সক্লুশন প্যাটার্ন ব্যবহার করে লাইব্রেরি স্ক্যান করার সময় নির্দিষ্ট ফাইল ও ফোল্ডার উপেক্ষা করা যায়। এটি তখনই উপকারী যখন কিছু ফোল্ডারে এমন ফাইল থাকে যা আপনি ইমপোর্ট করতে চান না, যেমন RAW ফাইল।",
|
"exclusion_pattern_description": "এক্সক্লুশন প্যাটার্ন ব্যবহার করে আপনি আপনার লাইব্রেরি স্ক্যান করার সময় ফাইল এবং ফোল্ডারগুলিকে উপেক্ষা করতে পারবেন। যদি আপনার এমন ফোল্ডার থাকে যেখানে এমন ফাইল থাকে যা আপনি আমদানি করতে চান না, যেমন RAW ফাইল।",
|
||||||
"export_config_as_json_description": "বর্তমান সিস্টেম কনফিগারেশনটিকে একটি JSON ফাইল হিসেবে ডাউনলোড করুন",
|
"export_config_as_json_description": "বর্তমান সিস্টেম কনফিগারেশন একটি JSON ফাইল হিসেবে ডাউনলোড করুন",
|
||||||
"external_libraries_page_description": "অ্যাডমিন এক্সটার্নাল লাইব্রেরি পেজ",
|
"external_libraries_page_description": "অ্যাডমিন external লাইব্রেরি পেজ",
|
||||||
"face_detection": "মুখ শনাক্তকরণ",
|
"face_detection": "মুখ সনাক্তকরণ",
|
||||||
"face_detection_description": "মেশিন লার্নিং ব্যবহার করে অ্যাসেটে থাকা মুখ/চেহারা শনাক্ত করুন। ভিডিওর ক্ষেত্রে শুধুমাত্র থাম্বনেইল বিবেচনা করা হয়। \"রিফ্রেশ\" সব অ্যাসেট পুনরায় প্রক্রিয়া করে। \"রিসেট\" করলে বিদ্যমান সব মুখের ডেটা মুছে যায়। \"মিসিং\" ওই অ্যাসেটগুলোকে সারিতে যোগ করে যাদেরকে এখনো প্রক্রিয়া করা হয়নি। ফেস ডিটেকশন সম্পন্ন হলে শনাক্ত হওয়া মুখগুলো ফেসিয়াল রিকগনিশনের জন্য সারিতে যোগ করা হবে এবং সেগুলোকে বিদ্যমান বা নতুন ব্যক্তিদের সাথে গ্রুপ করা হবে।",
|
"face_detection_description": "মেশিন লার্নিং ব্যবহার করে অ্যাসেটে থাকা মুখ/চেহারা গুলি সনাক্ত করুন। ভিডিও গুলির জন্য, শুধুমাত্র থাম্বনেইল বিবেচনা করা হয়। \"রিফ্রেশ\" (পুনরায়) সমস্ত অ্যাসেট প্রক্রিয়া করে। \"রিসেট\" করার মাধ্যমে অতিরিক্তভাবে সমস্ত বর্তমান মুখের ডেটা সাফ করে। \"অনুপস্থিত\" অ্যাসেটগুলিকে সারিবদ্ধ করে যা এখনও প্রক্রিয়া করা হয়নি। সনাক্ত করা মুখগুলিকে ফেসিয়াল রিকগনিশনের জন্য সারিবদ্ধ করা হবে, ফেসিয়াল ডিটেকশন সম্পূর্ণ হওয়ার পরে, বিদ্যমান বা নতুন ব্যক্তিদের মধ্যে গোষ্ঠীবদ্ধ করে।",
|
||||||
"facial_recognition_job_description": "শনাক্ত করা মুখগুলিকে মানুষের মধ্যে গোষ্ঠীভুক্ত/গ্রুপ করুন। মুখ সনাক্তকরণ সম্পূর্ণ হওয়ার পরে এই ধাপটি চলে। \"রিসেট\" (পুনরায়) সমস্ত মুখকে ক্লাস্টার করে। \"অনুপস্থিত/মিসিং\" মুখগুলিকে সারিতে রাখে যেগুলো কোনও ব্যক্তিকে এসাইন/বরাদ্দ করা হয়নি।",
|
"facial_recognition_job_description": "শনাক্ত করা মুখগুলিকে মানুষের মধ্যে গোষ্ঠীভুক্ত/গ্রুপ করুন। মুখ সনাক্তকরণ সম্পূর্ণ হওয়ার পরে এই ধাপটি চলে। \"রিসেট\" (পুনরায়) সমস্ত মুখকে ক্লাস্টার করে। \"অনুপস্থিত/মিসিং\" মুখগুলিকে সারিতে রাখে যেগুলো কোনও ব্যক্তিকে এসাইন/বরাদ্দ করা হয়নি।",
|
||||||
"failed_job_command": "কমান্ড {command} কাজের জন্য ব্যর্থ হয়েছে: {job}",
|
"failed_job_command": "কমান্ড {command} কাজের জন্য ব্যর্থ হয়েছে: {job}",
|
||||||
"force_delete_user_warning": "সতর্কতা: এটি ব্যবহারকারী এবং সমস্ত সম্পদ অবিলম্বে সরিয়ে ফেলবে। এটি পূর্বাবস্থায় ফেরানো যাবে না এবং ফাইলগুলি পুনরুদ্ধার করা যাবে না।",
|
"force_delete_user_warning": "সতর্কতা: এটি ব্যবহারকারী এবং সমস্ত সম্পদ অবিলম্বে সরিয়ে ফেলবে। এটি পূর্বাবস্থায় ফেরানো যাবে না এবং ফাইলগুলি পুনরুদ্ধার করা যাবে না।",
|
||||||
@@ -98,9 +98,9 @@
|
|||||||
"image_fullsize_quality_description": "পূর্ণ-আকারের ছবির মান ১-১০০। উচ্চতর হলে ভালো, কিন্তু আরও বড় ফাইল তৈরি হয়।",
|
"image_fullsize_quality_description": "পূর্ণ-আকারের ছবির মান ১-১০০। উচ্চতর হলে ভালো, কিন্তু আরও বড় ফাইল তৈরি হয়।",
|
||||||
"image_fullsize_title": "পূর্ণ-আকারের চিত্র সেটিংস",
|
"image_fullsize_title": "পূর্ণ-আকারের চিত্র সেটিংস",
|
||||||
"image_prefer_embedded_preview": "এম্বেড করা প্রিভিউ পছন্দ করুন",
|
"image_prefer_embedded_preview": "এম্বেড করা প্রিভিউ পছন্দ করুন",
|
||||||
"image_prefer_embedded_preview_setting_description": "RAW ছবিতে থাকা এমবেডেড প্রিভিউগুলোকে ইমেজ প্রসেসিংয়ের ইনপুট হিসেবে ব্যবহার করুন যদি তা উপলভ্য থাকে। এতে কিছু ছবির রঙ আরও সঠিকভাবে পাওয়া যেতে পারে, তবে প্রিভিউয়ের মান ক্যামেরার উপর নির্ভর করে এবং ছবিতে বেশি কমপ্রেশন আর্টিফ্যাক্ট থাকতে পারে।",
|
"image_prefer_embedded_preview_setting_description": "যদি পাওয়া যায়, RAW ছবির ভেতরে থাকা প্রিভিউ ব্যবহার করুন। এতে কিছু ছবির রঙ আরও সঠিক দেখা যেতে পারে, তবে মান ক্যামেরার ওপর নির্ভর করে এবং ছবিতে বাড়তি কমপ্রেশন আর্টিফ্যাক্ট দেখা যেতে পারে।",
|
||||||
"image_prefer_wide_gamut": "প্রশস্ত পরিসর পছন্দ করুন",
|
"image_prefer_wide_gamut": "প্রশস্ত পরিসর পছন্দ করুন",
|
||||||
"image_prefer_wide_gamut_setting_description": "থাম্বনেইলের জন্য Display P3 ব্যবহার করুন। এতে বিস্তীর্ণ কালারস্পেসের ছবিতে ছবির উজ্জ্বলতা ও প্রাণবন্ততা আরও ভালোভাবে বজায় থাকে। তবে পুরোনো ডিভাইস বা পুরোনো ব্রাউজারের দোষে ছবিগুলো কিছুটা ভিন্নভাবে দেখা দিতে পারে। sRGB ছবিগুলোতে রঙের পরিবর্তন এড়াতে sRGB হিসেবেই রাখা হয়।",
|
"image_prefer_wide_gamut_setting_description": "থাম্বনেইলের জন্য Display P3 ব্যবহার করুন। এটি ওয়াইড কালারস্পেস ছবির উজ্জ্বলতা ও প্রাণবন্ত রঙ ভালোভাবে ধরে রাখে, তবে পুরনো ডিভাইস বা ব্রাউজারে ছবিগুলো ভিন্নভাবে দেখা যেতে পারে। sRGB ছবিগুলো রঙের পরিবর্তন এড়াতে sRGB হিসেবেই রাখা হবে।",
|
||||||
"image_preview_description": "স্ট্রিপড মেটাডেটা সহ মাঝারি আকারের ছবি, একটি একক সম্পদ দেখার সময় এবং মেশিন লার্নিংয়ের জন্য ব্যবহৃত হয়",
|
"image_preview_description": "স্ট্রিপড মেটাডেটা সহ মাঝারি আকারের ছবি, একটি একক সম্পদ দেখার সময় এবং মেশিন লার্নিংয়ের জন্য ব্যবহৃত হয়",
|
||||||
"image_preview_quality_description": "১-১০০ এর মধ্যে প্রিভিউ কোয়ালিটি। বেশি হলে ভালো, কিন্তু বড় ফাইল তৈরি হয় এবং অ্যাপের প্রতিক্রিয়াশীলতা কমাতে পারে। কম মান সেট করলে মেশিন লার্নিং কোয়ালিটির উপর প্রভাব পড়তে পারে।",
|
"image_preview_quality_description": "১-১০০ এর মধ্যে প্রিভিউ কোয়ালিটি। বেশি হলে ভালো, কিন্তু বড় ফাইল তৈরি হয় এবং অ্যাপের প্রতিক্রিয়াশীলতা কমাতে পারে। কম মান সেট করলে মেশিন লার্নিং কোয়ালিটির উপর প্রভাব পড়তে পারে।",
|
||||||
"image_preview_title": "প্রিভিউ সেটিংস",
|
"image_preview_title": "প্রিভিউ সেটিংস",
|
||||||
@@ -117,7 +117,7 @@
|
|||||||
"import_config_from_json_description": "একটি JSON কনফিগ ফাইল আপলোড করে সিস্টেম কনফিগারেশন ইমপোর্ট করুন।",
|
"import_config_from_json_description": "একটি JSON কনফিগ ফাইল আপলোড করে সিস্টেম কনফিগারেশন ইমপোর্ট করুন।",
|
||||||
"job_concurrency": "{job} কনকারেন্সি",
|
"job_concurrency": "{job} কনকারেন্সি",
|
||||||
"job_created": "Job তৈরি হয়েছে",
|
"job_created": "Job তৈরি হয়েছে",
|
||||||
"job_not_concurrency_safe": "এই কাজটি সমান্তরালভাবে চালানো নিরাপদ নয়।",
|
"job_not_concurrency_safe": "এই কাজটি সমান্তরালভাবে চালানো নিরাপদ নয়",
|
||||||
"job_settings": "কাজের সেটিংস",
|
"job_settings": "কাজের সেটিংস",
|
||||||
"job_settings_description": "কাজের সমান্তরালতা পরিচালনা করুন",
|
"job_settings_description": "কাজের সমান্তরালতা পরিচালনা করুন",
|
||||||
"jobs_delayed": "{jobCount, plural, other {# বিলম্বিত}}",
|
"jobs_delayed": "{jobCount, plural, other {# বিলম্বিত}}",
|
||||||
@@ -137,20 +137,20 @@
|
|||||||
"library_tasks_description": "নতুন এবং/অথবা পরিবর্তিত সম্পদের জন্য বহিরাগত লাইব্রেরি স্ক্যান করুন",
|
"library_tasks_description": "নতুন এবং/অথবা পরিবর্তিত সম্পদের জন্য বহিরাগত লাইব্রেরি স্ক্যান করুন",
|
||||||
"library_updated": "আপডেটকৃত লাইব্রেরি।",
|
"library_updated": "আপডেটকৃত লাইব্রেরি।",
|
||||||
"library_watching_enable_description": "ফাইল পরিবর্তনের জন্য বহিরাগত লাইব্রেরিগুলি দেখুন",
|
"library_watching_enable_description": "ফাইল পরিবর্তনের জন্য বহিরাগত লাইব্রেরিগুলি দেখুন",
|
||||||
"library_watching_settings": "লাইব্রেরি পর্যবেক্ষণ [পরীক্ষামূলক]",
|
"library_watching_settings": "লাইব্রেরি দেখা (পরীক্ষামূলক)",
|
||||||
"library_watching_settings_description": "পরিবর্তিত ফাইলগুলির জন্য স্বয়ংক্রিয়ভাবে নজর রাখুন",
|
"library_watching_settings_description": "পরিবর্তিত ফাইলগুলির জন্য স্বয়ংক্রিয়ভাবে নজর রাখুন",
|
||||||
"logging_enable_description": "লগিং এনাবল/সক্ষম করুন",
|
"logging_enable_description": "লগিং এনাবল/সক্ষম করুন",
|
||||||
"logging_level_description": "সক্রিয় থাকাকালীন, কোন লগ স্তর ব্যবহার করতে হবে।",
|
"logging_level_description": "সক্রিয় থাকাকালীন, কোন লগ স্তর ব্যবহার করতে হবে।",
|
||||||
"logging_settings": "লগিং",
|
"logging_settings": "লগিং",
|
||||||
"machine_learning_availability_checks": "প্রাপ্যতা পরীক্ষা",
|
"machine_learning_availability_checks": "প্রাপ্যতা পরীক্ষা",
|
||||||
"machine_learning_availability_checks_description": "উপলভ্য মেশিন লার্নিং সার্ভারগুলো স্বয়ংক্রিয়ভাবে শনাক্ত করে সেগুলোকে অগ্রাধিকার দিন",
|
"machine_learning_availability_checks_description": "স্বয়ংক্রিয়ভাবে উপলব্ধ মেশিন লার্নিং সার্ভারগুলি সনাক্ত করুন এবং পছন্দ করুন",
|
||||||
"machine_learning_availability_checks_enabled": "প্রাপ্যতা পরীক্ষা সক্ষম করুন",
|
"machine_learning_availability_checks_enabled": "প্রাপ্যতা পরীক্ষা সক্ষম করুন",
|
||||||
"machine_learning_availability_checks_interval": "চেক ব্যবধান",
|
"machine_learning_availability_checks_interval": "চেক ব্যবধান",
|
||||||
"machine_learning_availability_checks_interval_description": "প্রাপ্যতা পরীক্ষাগুলির মধ্যে ব্যবধান মিলিসেকেন্ডে",
|
"machine_learning_availability_checks_interval_description": "প্রাপ্যতা পরীক্ষাগুলির মধ্যে ব্যবধান মিলিসেকেন্ডে",
|
||||||
"machine_learning_availability_checks_timeout": "অনুরোধের সময়সীমা শেষ",
|
"machine_learning_availability_checks_timeout": "অনুরোধের সময়সীমা শেষ",
|
||||||
"machine_learning_availability_checks_timeout_description": "প্রাপ্যতার পরীক্ষার জন্য মিলিসেকেন্ডে সময়সীমা।",
|
"machine_learning_availability_checks_timeout_description": "প্রাপ্যতার পরীক্ষার জন্য মিলিসেকেন্ডে সময়সীমা।",
|
||||||
"machine_learning_clip_model": "CLIP মডেল",
|
"machine_learning_clip_model": "CLIP মডেল",
|
||||||
"machine_learning_clip_model_description": "<link>এখানে</link> তালিকাভুক্ত একটি CLIP মডেলের নাম। মনে রাখবেন, মডেল পরিবর্তন করলে সব ছবির জন্য 'Smart Search' জবটি পুনরায় চালাতে হবে।",
|
"machine_learning_clip_model_description": "<link>এখানে</link> তালিকাভুক্ত একটি CLIP মডেলের নাম। মনে রাখবেন, মডেল পরিবর্তনের পর সব ছবির জন্য অবশ্যই ‘Smart Search’ কাজটি আবার চালাতে হবে।",
|
||||||
"machine_learning_duplicate_detection": "পুনরাবৃত্তি সনাক্তকরণ",
|
"machine_learning_duplicate_detection": "পুনরাবৃত্তি সনাক্তকরণ",
|
||||||
"machine_learning_duplicate_detection_enabled": "পুনরাবৃত্তি শনাক্তকরণ চালু করুন",
|
"machine_learning_duplicate_detection_enabled": "পুনরাবৃত্তি শনাক্তকরণ চালু করুন",
|
||||||
"machine_learning_duplicate_detection_enabled_description": "নিষ্ক্রিয় থাকলেও হুবহু একই সম্পদগুলোর ডুপ্লিকেট সরিয়ে ফেলা হবে।",
|
"machine_learning_duplicate_detection_enabled_description": "নিষ্ক্রিয় থাকলেও হুবহু একই সম্পদগুলোর ডুপ্লিকেট সরিয়ে ফেলা হবে।",
|
||||||
@@ -192,7 +192,7 @@
|
|||||||
"machine_learning_url_description": "মেশিন লার্নিং সার্ভারের URL। যদি একের বেশি URL প্রদান করা হয়, তবে একটি সফলভাবে সাড়া না দেওয়া পর্যন্ত প্রতিটি সার্ভারে এক এক করে চেষ্টা করা হবে (প্রথম থেকে শেষ ক্রমানুসারে)। যে সার্ভারগুলো সাড়া দেবে না, সেগুলো পুনরায় সচল হওয়া পর্যন্ত সাময়িকভাবে উপেক্ষা করা হবে।",
|
"machine_learning_url_description": "মেশিন লার্নিং সার্ভারের URL। যদি একের বেশি URL প্রদান করা হয়, তবে একটি সফলভাবে সাড়া না দেওয়া পর্যন্ত প্রতিটি সার্ভারে এক এক করে চেষ্টা করা হবে (প্রথম থেকে শেষ ক্রমানুসারে)। যে সার্ভারগুলো সাড়া দেবে না, সেগুলো পুনরায় সচল হওয়া পর্যন্ত সাময়িকভাবে উপেক্ষা করা হবে।",
|
||||||
"maintenance_delete_backup": "ব্যাকআপ (Backup)মুছুন",
|
"maintenance_delete_backup": "ব্যাকআপ (Backup)মুছুন",
|
||||||
"maintenance_delete_backup_description": "এই ফাইলটি চিরতরে মুছে ফেলা হবে।",
|
"maintenance_delete_backup_description": "এই ফাইলটি চিরতরে মুছে ফেলা হবে।",
|
||||||
"maintenance_delete_error": "ব্যাকআপ মুছে ফেলতে ব্যর্থ হয়েছে।",
|
"maintenance_delete_error": "ব্যাকআপ মুছতে ব্যর্থ হয়েছে।",
|
||||||
"maintenance_restore_backup": "ব্যাকআপ পুনরুদ্ধার(Restore) করুন",
|
"maintenance_restore_backup": "ব্যাকআপ পুনরুদ্ধার(Restore) করুন",
|
||||||
"maintenance_restore_backup_description": "Immich মুছে ফেলা হবে এবং নির্বাচিত ব্যাকআপ থেকে পুনরুদ্ধার করা হবে। কার্যক্রম চালিয়ে যাওয়ার আগে একটি ব্যাকআপ তৈরি করা হবে।",
|
"maintenance_restore_backup_description": "Immich মুছে ফেলা হবে এবং নির্বাচিত ব্যাকআপ থেকে পুনরুদ্ধার করা হবে। কার্যক্রম চালিয়ে যাওয়ার আগে একটি ব্যাকআপ তৈরি করা হবে।",
|
||||||
"maintenance_restore_backup_different_version": "এই ব্যাকআপটি Immich-এর একটি ভিন্ন সংস্করণের মাধ্যমে তৈরি করা হয়েছিল!",
|
"maintenance_restore_backup_different_version": "এই ব্যাকআপটি Immich-এর একটি ভিন্ন সংস্করণের মাধ্যমে তৈরি করা হয়েছিল!",
|
||||||
@@ -220,7 +220,7 @@
|
|||||||
"map_reverse_geocoding_settings": "রিভার্স জিওকোডিং সেটিংস (Reverse Geocoding Settings)",
|
"map_reverse_geocoding_settings": "রিভার্স জিওকোডিং সেটিংস (Reverse Geocoding Settings)",
|
||||||
"map_settings": "মানচিত্র (Map)",
|
"map_settings": "মানচিত্র (Map)",
|
||||||
"map_settings_description": "মানচিত্রের সেটিংস পরিচালনা করুন (Manage map settings)",
|
"map_settings_description": "মানচিত্রের সেটিংস পরিচালনা করুন (Manage map settings)",
|
||||||
"map_style_description": "style.json ম্যাপ থিমের URL ঠিকানা",
|
"map_style_description": "একটি style.json ম্যাপ থিমের URL (URL to a style.json map theme)",
|
||||||
"memory_cleanup_job": "মেমরি ক্লিনআপ (Memory cleanup)",
|
"memory_cleanup_job": "মেমরি ক্লিনআপ (Memory cleanup)",
|
||||||
"memory_generate_job": "স্মৃতি তৈরি করা(Memory generation)",
|
"memory_generate_job": "স্মৃতি তৈরি করা(Memory generation)",
|
||||||
"metadata_extraction_job": "মেটাডেটা এক্সট্র্যাক্ট করুন (Extract metadata)",
|
"metadata_extraction_job": "মেটাডেটা এক্সট্র্যাক্ট করুন (Extract metadata)",
|
||||||
@@ -295,7 +295,7 @@
|
|||||||
"search_jobs": "জব সার্চ করুন…",
|
"search_jobs": "জব সার্চ করুন…",
|
||||||
"send_welcome_email": "স্বাগত ইমেল পাঠান",
|
"send_welcome_email": "স্বাগত ইমেল পাঠান",
|
||||||
"server_external_domain_settings": "এক্সটার্নাল ডোমেইন (External Domain)",
|
"server_external_domain_settings": "এক্সটার্নাল ডোমেইন (External Domain)",
|
||||||
"server_external_domain_settings_description": "বাইরের লিঙ্কের জন্য ব্যবহৃত ডোমেইন",
|
"server_external_domain_settings_description": "পাবলিক শেয়ারিং লিঙ্কের জন্য ডোমেইন (http(s):// সহ)",
|
||||||
"server_public_users": "পাবলিক ইউজার (Public Users)",
|
"server_public_users": "পাবলিক ইউজার (Public Users)",
|
||||||
"server_public_users_description": "শেয়ার করা অ্যালবামে কোনো ব্যবহারকারীকে যোগ করার সময় সমস্ত ব্যবহারকারীর (নাম এবং ইমেল) তালিকা দেখানো হয়। এটি নিষ্ক্রিয় (Disabled) করা হলে, ব্যবহারকারীর তালিকা শুধুমাত্র অ্যাডমিনদের জন্য উপলব্ধ হবে।",
|
"server_public_users_description": "শেয়ার করা অ্যালবামে কোনো ব্যবহারকারীকে যোগ করার সময় সমস্ত ব্যবহারকারীর (নাম এবং ইমেল) তালিকা দেখানো হয়। এটি নিষ্ক্রিয় (Disabled) করা হলে, ব্যবহারকারীর তালিকা শুধুমাত্র অ্যাডমিনদের জন্য উপলব্ধ হবে।",
|
||||||
"server_settings": "সার্ভার সেটিংস (Server Settings)",
|
"server_settings": "সার্ভার সেটিংস (Server Settings)",
|
||||||
@@ -317,9 +317,9 @@
|
|||||||
"storage_template_migration_description": "পূর্বে আপলোড করা অ্যাসেটগুলোতে বর্তমান <link>{template}</link> প্রয়োগ করুন",
|
"storage_template_migration_description": "পূর্বে আপলোড করা অ্যাসেটগুলোতে বর্তমান <link>{template}</link> প্রয়োগ করুন",
|
||||||
"storage_template_migration_info": "স্টোরেজ টেমপ্লেটটি সমস্ত এক্সটেনশনকে ছোট হাতের অক্ষরে (lowercase) রূপান্তর করবে। টেমপ্লেটের পরিবর্তনগুলো কেবল নতুন অ্যাসেটগুলোর ক্ষেত্রে প্রযোজ্য হবে। পূর্বে আপলোড করা অ্যাসেটগুলোতে এই টেমপ্লেটটি ভূতাপেক্ষভাবে (retroactively) প্রয়োগ করতে <link>{job}</link> রান করুন।",
|
"storage_template_migration_info": "স্টোরেজ টেমপ্লেটটি সমস্ত এক্সটেনশনকে ছোট হাতের অক্ষরে (lowercase) রূপান্তর করবে। টেমপ্লেটের পরিবর্তনগুলো কেবল নতুন অ্যাসেটগুলোর ক্ষেত্রে প্রযোজ্য হবে। পূর্বে আপলোড করা অ্যাসেটগুলোতে এই টেমপ্লেটটি ভূতাপেক্ষভাবে (retroactively) প্রয়োগ করতে <link>{job}</link> রান করুন।",
|
||||||
"storage_template_migration_job": "স্টোরেজ টেমপ্লেট মাইগ্রেশন জব",
|
"storage_template_migration_job": "স্টোরেজ টেমপ্লেট মাইগ্রেশন জব",
|
||||||
"storage_template_more_details": "এই ফিচার সম্পর্কে আরও বিস্তারিতভাবে জানতে <template-link>Storage Template</template-link> এবং এর <implications-link>প্রভাব</implications-link> দেখুন",
|
"storage_template_more_details": "এই ফিচারটি সম্পর্কে আরও বিস্তারিত জানতে, <template-link>Storage Template</template-link> এবং এর <implications-link>প্রভাবগুলো (implications)</implications-link> দেখুন।",
|
||||||
"storage_template_onboarding_description_v2": "এটি সক্রিয় থাকলে, ফিচারটি ব্যবহারকারীর নির্ধারিত টেমপ্লেট অনুযায়ী ফাইলগুলোকে স্বয়ংক্রিয়ভাবে অর্গানাইজ (Auto-organize) করবে। আরও তথ্যের জন্য অনুগ্রহ করে <link>ডকুমেন্টেশন</link> দেখুন।",
|
"storage_template_onboarding_description_v2": "এটি সক্রিয় থাকলে, ফিচারটি ব্যবহারকারীর নির্ধারিত টেমপ্লেট অনুযায়ী ফাইলগুলোকে স্বয়ংক্রিয়ভাবে অর্গানাইজ (Auto-organize) করবে। আরও তথ্যের জন্য অনুগ্রহ করে <link>ডকুমেন্টেশন</link> দেখুন।",
|
||||||
"storage_template_path_length": "আনুমানিকভাবে পথের দৈর্ঘ্যের সীমা: <b>{length, number}</b>/{limit, number}",
|
"storage_template_path_length": "আনুমানিক পাথ লেন্থ লিমিট (Path length limit): <b>{length, number}</b>/{limit, number}",
|
||||||
"storage_template_settings": "স্টোরেজ টেমপ্লেট (Storage Template)",
|
"storage_template_settings": "স্টোরেজ টেমপ্লেট (Storage Template)",
|
||||||
"storage_template_settings_description": "আপলোড করা অ্যাসেটের ফোল্ডার স্ট্রাকচার এবং ফাইল নেম ম্যানেজ করুন",
|
"storage_template_settings_description": "আপলোড করা অ্যাসেটের ফোল্ডার স্ট্রাকচার এবং ফাইল নেম ম্যানেজ করুন",
|
||||||
"storage_template_user_label": "<code>{label}</code> হলো ব্যবহারকারীর স্টোরেজ লেবেল (Storage Label)",
|
"storage_template_user_label": "<code>{label}</code> হলো ব্যবহারকারীর স্টোরেজ লেবেল (Storage Label)",
|
||||||
@@ -336,8 +336,6 @@
|
|||||||
"transcoding_accepted_audio_codecs_description": "কোন অডিও কোডেকগুলো ট্রানসকোড করার প্রয়োজন নেই তা নির্বাচন করুন। এটি শুধুমাত্র নির্দিষ্ট ট্রানসকোড পলিসির (transcode policies) জন্য ব্যবহৃত হয়।",
|
"transcoding_accepted_audio_codecs_description": "কোন অডিও কোডেকগুলো ট্রানসকোড করার প্রয়োজন নেই তা নির্বাচন করুন। এটি শুধুমাত্র নির্দিষ্ট ট্রানসকোড পলিসির (transcode policies) জন্য ব্যবহৃত হয়।",
|
||||||
"transcoding_accepted_containers": "গ্রহণযোগ্য কন্টেইনারসমূহ (Accepted containers)"
|
"transcoding_accepted_containers": "গ্রহণযোগ্য কন্টেইনারসমূহ (Accepted containers)"
|
||||||
},
|
},
|
||||||
"user_usage_stats": "অ্যাকাউন্ট ব্যবহারের পরিসংখ্যান",
|
|
||||||
"user_usage_stats_description": "অ্যাকাউন্ট ব্যবহারের পরিসংখ্যান দেখুন",
|
|
||||||
"yes": "হ্যাঁ",
|
"yes": "হ্যাঁ",
|
||||||
"you_dont_have_any_shared_links": "আপনার কোনো শেয়ার করা লিঙ্ক নেই (You don't have any shared links)",
|
"you_dont_have_any_shared_links": "আপনার কোনো শেয়ার করা লিঙ্ক নেই (You don't have any shared links)",
|
||||||
"your_wifi_name": "আপনার ওয়াই-ফাই এর নাম (Your Wi-Fi name)",
|
"your_wifi_name": "আপনার ওয়াই-ফাই এর নাম (Your Wi-Fi name)",
|
||||||
|
|||||||
+13
-23
@@ -411,7 +411,7 @@
|
|||||||
"transcoding_tone_mapping": "Mapeig de to",
|
"transcoding_tone_mapping": "Mapeig de to",
|
||||||
"transcoding_tone_mapping_description": "Intenta preservar l'aspecte dels vídeos HDR quan es converteixen a SDR. Cada algorisme fa diferents compensacions pel color, el detall i la brillantor. Hable conserva els detalls, Mobius conserva el color i Reinhard conserva la brillantor.",
|
"transcoding_tone_mapping_description": "Intenta preservar l'aspecte dels vídeos HDR quan es converteixen a SDR. Cada algorisme fa diferents compensacions pel color, el detall i la brillantor. Hable conserva els detalls, Mobius conserva el color i Reinhard conserva la brillantor.",
|
||||||
"transcoding_transcode_policy": "Política de transcodificació",
|
"transcoding_transcode_policy": "Política de transcodificació",
|
||||||
"transcoding_transcode_policy_description": "Política sobre quan s'ha de transcodificar un vídeo. Els vídeos HDR i els vídeos amb un format de píxel diferent a YUV 4:2:0 sempre es transcodificaran (excepte si la transcodificació està desactivada).",
|
"transcoding_transcode_policy_description": "Política sobre quan s'ha de transcodificar un vídeo. Els vídeos HDR sempre es transcodificaran (excepte si la transcodificació està desactivada).",
|
||||||
"transcoding_two_pass_encoding": "Codificació de dues passades",
|
"transcoding_two_pass_encoding": "Codificació de dues passades",
|
||||||
"transcoding_two_pass_encoding_setting_description": "Transcodifica en dos passos per produir vídeos millor codificats. Quan la taxa de bits màxima està habilitada (necessari perquè funcioni amb H.264 i HEVC), aquest mode utilitza un interval de velocitat de bits basat en la taxa de bits màxima i ignora CRF. Per a VP9, es pot utilitzar CRF si la taxa de bits màxima està desactivada.",
|
"transcoding_two_pass_encoding_setting_description": "Transcodifica en dos passos per produir vídeos millor codificats. Quan la taxa de bits màxima està habilitada (necessari perquè funcioni amb H.264 i HEVC), aquest mode utilitza un interval de velocitat de bits basat en la taxa de bits màxima i ignora CRF. Per a VP9, es pot utilitzar CRF si la taxa de bits màxima està desactivada.",
|
||||||
"transcoding_video_codec": "Còdec de video",
|
"transcoding_video_codec": "Còdec de video",
|
||||||
@@ -872,7 +872,7 @@
|
|||||||
"current_server_address": "Adreça actual del servidor",
|
"current_server_address": "Adreça actual del servidor",
|
||||||
"custom_date": "Data personalitzada",
|
"custom_date": "Data personalitzada",
|
||||||
"custom_locale": "Localització personalitzada",
|
"custom_locale": "Localització personalitzada",
|
||||||
"custom_locale_description": "Format de dates i números segons la llengua i regió seleccionades",
|
"custom_locale_description": "Format de dates i números segons la llengua i regió",
|
||||||
"custom_url": "URL personalitzada",
|
"custom_url": "URL personalitzada",
|
||||||
"cutoff_date_description": "Manté fotos des de l'últim…",
|
"cutoff_date_description": "Manté fotos des de l'últim…",
|
||||||
"cutoff_day": "{count, plural, one {dia} other {dies}}",
|
"cutoff_day": "{count, plural, one {dia} other {dies}}",
|
||||||
@@ -895,6 +895,8 @@
|
|||||||
"deduplication_criteria_2": "Quantitat de dades EXIF",
|
"deduplication_criteria_2": "Quantitat de dades EXIF",
|
||||||
"deduplication_info": "Informació de deduplicació",
|
"deduplication_info": "Informació de deduplicació",
|
||||||
"deduplication_info_description": "Per preseleccionar recursos automàticament i eliminar els duplicats de manera massiva, ens fixem en:",
|
"deduplication_info_description": "Per preseleccionar recursos automàticament i eliminar els duplicats de manera massiva, ens fixem en:",
|
||||||
|
"default_locale": "Localització predeterminada",
|
||||||
|
"default_locale_description": "Format de dates i números segons la configuració del navegador",
|
||||||
"delete": "Esborrar",
|
"delete": "Esborrar",
|
||||||
"delete_action_confirmation_message": "Segur que vols eliminar aquest recurs? Aquesta acció el mourà a la paperera del servidor, i et preguntarà si el vols eliminar localment",
|
"delete_action_confirmation_message": "Segur que vols eliminar aquest recurs? Aquesta acció el mourà a la paperera del servidor, i et preguntarà si el vols eliminar localment",
|
||||||
"delete_action_prompt": "{count} eliminats",
|
"delete_action_prompt": "{count} eliminats",
|
||||||
@@ -1072,7 +1074,6 @@
|
|||||||
"failed_to_update_notification_status": "Error en actualitzar l'estat de les notificacions",
|
"failed_to_update_notification_status": "Error en actualitzar l'estat de les notificacions",
|
||||||
"incorrect_email_or_password": "Correu electrònic o contrasenya incorrectes",
|
"incorrect_email_or_password": "Correu electrònic o contrasenya incorrectes",
|
||||||
"library_folder_already_exists": "Aquesta ruta d'importació ja existeix.",
|
"library_folder_already_exists": "Aquesta ruta d'importació ja existeix.",
|
||||||
"page_not_found": "Pàgina no trobada",
|
|
||||||
"paths_validation_failed": "{paths, plural, one {# ruta} other {# rutes}} no ha pogut validar",
|
"paths_validation_failed": "{paths, plural, one {# ruta} other {# rutes}} no ha pogut validar",
|
||||||
"profile_picture_transparent_pixels": "Les fotos de perfil no poden tenir píxels transparents. Per favor, feu zoom in, mogueu la imatge o ambdues.",
|
"profile_picture_transparent_pixels": "Les fotos de perfil no poden tenir píxels transparents. Per favor, feu zoom in, mogueu la imatge o ambdues.",
|
||||||
"quota_higher_than_disk_size": "Heu establert una quota més gran que la mida de disc",
|
"quota_higher_than_disk_size": "Heu establert una quota més gran que la mida de disc",
|
||||||
@@ -1217,7 +1218,6 @@
|
|||||||
"filter_description": "Condicions per filtrar els actius de destinació",
|
"filter_description": "Condicions per filtrar els actius de destinació",
|
||||||
"filter_people": "Filtra persones",
|
"filter_people": "Filtra persones",
|
||||||
"filter_places": "Filtrar per llocs",
|
"filter_places": "Filtrar per llocs",
|
||||||
"filter_tags": "Filtrar etiquetes",
|
|
||||||
"filters": "Filtres",
|
"filters": "Filtres",
|
||||||
"find_them_fast": "Trobeu-los ràpidament pel nom amb la cerca",
|
"find_them_fast": "Trobeu-los ràpidament pel nom amb la cerca",
|
||||||
"first": "Primer",
|
"first": "Primer",
|
||||||
@@ -1808,8 +1808,9 @@
|
|||||||
"rate_asset": "Valorar Recurs",
|
"rate_asset": "Valorar Recurs",
|
||||||
"rating": "Valoració",
|
"rating": "Valoració",
|
||||||
"rating_clear": "Esborrar valoració",
|
"rating_clear": "Esborrar valoració",
|
||||||
"rating_count": "{count, plural, =0 {Unrated} one {# estrella} other {# estrelles}}",
|
"rating_count": "{count, plural, one {# estrella} other {# estrelles}}",
|
||||||
"rating_description": "Mostrar la valoració EXIF al panell d'informació",
|
"rating_description": "Mostrar la valoració EXIF al panell d'informació",
|
||||||
|
"rating_set": "Valoració establerta a {rating, plural, one {# estrella} other {# estrelles}}",
|
||||||
"reaction_options": "Opcions de reacció",
|
"reaction_options": "Opcions de reacció",
|
||||||
"read_changelog": "Llegeix el registre de canvis",
|
"read_changelog": "Llegeix el registre de canvis",
|
||||||
"readonly_mode_disabled": "Mode de només lectura desactivat",
|
"readonly_mode_disabled": "Mode de només lectura desactivat",
|
||||||
@@ -1881,10 +1882,7 @@
|
|||||||
"reset_pin_code_success": "Codi PIN reiniciat correctament",
|
"reset_pin_code_success": "Codi PIN reiniciat correctament",
|
||||||
"reset_pin_code_with_password": "Sempre pots reiniciar el codi PIN amb la teva contrasenya",
|
"reset_pin_code_with_password": "Sempre pots reiniciar el codi PIN amb la teva contrasenya",
|
||||||
"reset_sqlite": "Reiniciar base de dades SQLite",
|
"reset_sqlite": "Reiniciar base de dades SQLite",
|
||||||
"reset_sqlite_clear_app_data": "Netejar dada",
|
"reset_sqlite_confirmation": "Segur que vols reiniciar la base de dades SQLite? Hauràs de tancar la sessió i tornar a accedir per a resincronitzar les dades",
|
||||||
"reset_sqlite_confirmation": "Segur que vols esborrar les dades de l'aplicació? Això eliminarà tota la configuració i tancarà la sessió.",
|
|
||||||
"reset_sqlite_confirmation_note": "Nota: Hauràs de reiniciar l'app després d'eliminar.",
|
|
||||||
"reset_sqlite_done": "Les dades de l'app s'han netejat. Si us plau, reinicia l'app Immich i inicia sessió de nou.",
|
|
||||||
"reset_sqlite_success": "S'ha reiniciat la base de dades correctament",
|
"reset_sqlite_success": "S'ha reiniciat la base de dades correctament",
|
||||||
"reset_to_default": "Restableix els valors predeterminats",
|
"reset_to_default": "Restableix els valors predeterminats",
|
||||||
"resolution": "Resolució",
|
"resolution": "Resolució",
|
||||||
@@ -1912,7 +1910,6 @@
|
|||||||
"saved_settings": "Configuració guardada",
|
"saved_settings": "Configuració guardada",
|
||||||
"say_something": "Digues quelcom",
|
"say_something": "Digues quelcom",
|
||||||
"scaffold_body_error_occurred": "S'ha produït un error",
|
"scaffold_body_error_occurred": "S'ha produït un error",
|
||||||
"scaffold_body_error_unrecoverable": "S'ha produït un error irrecuperable. Comparteix l'error i el rastre de la pila a Discord o GitHub perquè puguem ajudar-te. Si us ho aconsella, podeu esborrar les dades de l'aplicació a continuació.",
|
|
||||||
"scan": "Escaneja",
|
"scan": "Escaneja",
|
||||||
"scan_all_libraries": "Escanejar totes les llibreries",
|
"scan_all_libraries": "Escanejar totes les llibreries",
|
||||||
"scan_library": "Escaneja",
|
"scan_library": "Escaneja",
|
||||||
@@ -1948,7 +1945,6 @@
|
|||||||
"search_filter_ocr": "Buscar per OCR",
|
"search_filter_ocr": "Buscar per OCR",
|
||||||
"search_filter_people_title": "Selecciona persones",
|
"search_filter_people_title": "Selecciona persones",
|
||||||
"search_filter_star_rating": "Classificació per estrelles",
|
"search_filter_star_rating": "Classificació per estrelles",
|
||||||
"search_filter_tags_title": "Seleccionar etiquetes",
|
|
||||||
"search_for": "Cercar",
|
"search_for": "Cercar",
|
||||||
"search_for_existing_person": "Busca una persona existent",
|
"search_for_existing_person": "Busca una persona existent",
|
||||||
"search_no_more_result": "No més resultats",
|
"search_no_more_result": "No més resultats",
|
||||||
@@ -2028,9 +2024,6 @@
|
|||||||
"set_profile_picture": "Establir imatge de perfil",
|
"set_profile_picture": "Establir imatge de perfil",
|
||||||
"set_slideshow_to_fullscreen": "Mostra Diapositives en pantalla completa",
|
"set_slideshow_to_fullscreen": "Mostra Diapositives en pantalla completa",
|
||||||
"set_stack_primary_asset": "Estableix com a actiu principal",
|
"set_stack_primary_asset": "Estableix com a actiu principal",
|
||||||
"setting_image_navigation_enable_subtitle": "Si està activat, pots navegar a la imatge anterior/següent tocant la quarta part més esquerra/dreta de la pantalla.",
|
|
||||||
"setting_image_navigation_enable_title": "Toca per navegar",
|
|
||||||
"setting_image_navigation_title": "Navegació d'imatges",
|
|
||||||
"setting_image_viewer_help": "El visor de detalls carrega primer la miniatura petita, després carrega la vista prèvia de mida mitjana (si està habilitada), finalment carrega l'original (si està habilitada).",
|
"setting_image_viewer_help": "El visor de detalls carrega primer la miniatura petita, després carrega la vista prèvia de mida mitjana (si està habilitada), finalment carrega l'original (si està habilitada).",
|
||||||
"setting_image_viewer_original_subtitle": "Activa per carregar la imatge en resolució original (molt gran!). Desactiva per reduir el consum de dades (tant de xarxa com de memòria cau).",
|
"setting_image_viewer_original_subtitle": "Activa per carregar la imatge en resolució original (molt gran!). Desactiva per reduir el consum de dades (tant de xarxa com de memòria cau).",
|
||||||
"setting_image_viewer_original_title": "Carrega la imatge original",
|
"setting_image_viewer_original_title": "Carrega la imatge original",
|
||||||
@@ -2198,20 +2191,20 @@
|
|||||||
"support_and_feedback": "Suport i comentaris",
|
"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.",
|
"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",
|
"supporter": "Contribuïdor",
|
||||||
"swap_merge_direction": "Intercanvia la direcció d'unió",
|
"swap_merge_direction": "Canvia la direcció d'unió",
|
||||||
"sync": "Sincronitza",
|
"sync": "Sincronitza",
|
||||||
"sync_albums": "Sincronitza àlbums",
|
"sync_albums": "Sincronitzar àlbums",
|
||||||
"sync_albums_manual_subtitle": "Sincronitza tots els vídeos i fotos penjats amb els àlbums de còpia de seguretat seleccionats",
|
"sync_albums_manual_subtitle": "Sincronitza tots els vídeos i fotos penjats amb els àlbums de còpia de seguretat seleccionats",
|
||||||
"sync_local": "Sincronitza localment",
|
"sync_local": "Sincronitza Local",
|
||||||
"sync_remote": "Sincronitza remotament",
|
"sync_remote": "Sincronitza Remot",
|
||||||
"sync_status": "Estat de la incronització",
|
"sync_status": "Estat de sincronització",
|
||||||
"sync_status_subtitle": "Observa i administra el sistema de sincronització",
|
"sync_status_subtitle": "Observa i administra el sistema de sincronització",
|
||||||
"sync_upload_album_setting_subtitle": "Creeu i pugeu les seves fotos i vídeos als àlbums seleccionats a Immich",
|
"sync_upload_album_setting_subtitle": "Creeu i pugeu les seves fotos i vídeos als àlbums seleccionats a Immich",
|
||||||
"tag": "Etiqueta",
|
"tag": "Etiqueta",
|
||||||
"tag_assets": "Etiquetar actius",
|
"tag_assets": "Etiquetar actius",
|
||||||
"tag_created": "Etiqueta creada: {tag}",
|
"tag_created": "Etiqueta creada: {tag}",
|
||||||
"tag_feature_description": "Exploreu fotos i vídeos agrupats per temes d'etiquetes lògiques",
|
"tag_feature_description": "Exploreu fotos i vídeos agrupats per temes d'etiquetes lògiques",
|
||||||
"tag_not_found_question": "No trobeu una etiqueta? <link>Crear una nova etiqueta.</link>",
|
"tag_not_found_question": "No trobeu una etiqueta? <link>Crear una nova etiqueta</link>",
|
||||||
"tag_people": "Etiquetar personas",
|
"tag_people": "Etiquetar personas",
|
||||||
"tag_updated": "Etiqueta actualizada: {tag}",
|
"tag_updated": "Etiqueta actualizada: {tag}",
|
||||||
"tagged_assets": "{count, plural, one {#Etiquetat} other {#Etiquetats}} {count, plural, one {# actiu} other {# actius}}",
|
"tagged_assets": "{count, plural, one {#Etiquetat} other {#Etiquetats}} {count, plural, one {# actiu} other {# actius}}",
|
||||||
@@ -2309,7 +2302,6 @@
|
|||||||
"unstack_action_prompt": "{count} sense apilar",
|
"unstack_action_prompt": "{count} sense apilar",
|
||||||
"unstacked_assets_count": "No apilat {count, plural, one {# recurs} other {# recursos}}",
|
"unstacked_assets_count": "No apilat {count, plural, one {# recurs} other {# recursos}}",
|
||||||
"unsupported_field_type": "Tipus de camp no suportat",
|
"unsupported_field_type": "Tipus de camp no suportat",
|
||||||
"unsupported_file_type": "No es pot carregar el fitxer {file} perquè el seu tipus de fitxer {type} no és compatible.",
|
|
||||||
"untagged": "Sense etiqueta",
|
"untagged": "Sense etiqueta",
|
||||||
"untitled_workflow": "Automatització sense títol",
|
"untitled_workflow": "Automatització sense títol",
|
||||||
"up_next": "Pròxim",
|
"up_next": "Pròxim",
|
||||||
@@ -2336,8 +2328,6 @@
|
|||||||
"url": "URL",
|
"url": "URL",
|
||||||
"usage": "Ús",
|
"usage": "Ús",
|
||||||
"use_biometric": "Empra biometria",
|
"use_biometric": "Empra biometria",
|
||||||
"use_browser_locale": "Fer servir la localització del navegador",
|
|
||||||
"use_browser_locale_description": "Formatejar dates, hores i números segons la llengua i regió del navegador",
|
|
||||||
"use_current_connection": "Utilitza la connexió actual",
|
"use_current_connection": "Utilitza la connexió actual",
|
||||||
"use_custom_date_range": "Fes servir un rang de dates personalitzat",
|
"use_custom_date_range": "Fes servir un rang de dates personalitzat",
|
||||||
"user": "Usuari",
|
"user": "Usuari",
|
||||||
|
|||||||
+11
-24
@@ -40,7 +40,7 @@
|
|||||||
"add_to_albums_count": "Přidat do alb ({count})",
|
"add_to_albums_count": "Přidat do alb ({count})",
|
||||||
"add_to_bottom_bar": "Přidat do",
|
"add_to_bottom_bar": "Přidat do",
|
||||||
"add_to_shared_album": "Přidat do sdíleného alba",
|
"add_to_shared_album": "Přidat do sdíleného alba",
|
||||||
"add_upload_to_stack": "Přidat nahrané do seskupení",
|
"add_upload_to_stack": "Přidat nahrané do zásobníku",
|
||||||
"add_url": "Přidat URL",
|
"add_url": "Přidat URL",
|
||||||
"add_workflow_step": "Přidat krok pracovního postupu",
|
"add_workflow_step": "Přidat krok pracovního postupu",
|
||||||
"added_to_archive": "Přidáno do archivu",
|
"added_to_archive": "Přidáno do archivu",
|
||||||
@@ -411,7 +411,7 @@
|
|||||||
"transcoding_tone_mapping": "Mapování tónů",
|
"transcoding_tone_mapping": "Mapování tónů",
|
||||||
"transcoding_tone_mapping_description": "Snaží se zachovat vzhled videí HDR při převodu na SDR. Každý algoritmus dělá různé kompromisy v oblasti barev, detailů a jasu. Hable zachovává detaily, Mobius zachovává barvy a Reinhard zachovává jas.",
|
"transcoding_tone_mapping_description": "Snaží se zachovat vzhled videí HDR při převodu na SDR. Každý algoritmus dělá různé kompromisy v oblasti barev, detailů a jasu. Hable zachovává detaily, Mobius zachovává barvy a Reinhard zachovává jas.",
|
||||||
"transcoding_transcode_policy": "Zásady překódování",
|
"transcoding_transcode_policy": "Zásady překódování",
|
||||||
"transcoding_transcode_policy_description": "Zásady, kdy má být video překódováno. HDR videa a videa s jiným formátem pixelů než YUV 4:2:0 budou překódována vždy (kromě případů, kdy je překódování zakázáno).",
|
"transcoding_transcode_policy_description": "Zásady, kdy má být video překódováno. Videa HDR budou překódována vždy (kromě případů, kdy je překódování zakázáno).",
|
||||||
"transcoding_two_pass_encoding": "Dvouprůchodové kódování",
|
"transcoding_two_pass_encoding": "Dvouprůchodové kódování",
|
||||||
"transcoding_two_pass_encoding_setting_description": "Překódováním ve dvou průchodech získáte lépe zakódovaná videa. Pokud je povolen maximální datový tok (nutný pro práci s H.264 a HEVC), tento režim používá rozsah datového toku založený na maximálním datovém toku a ignoruje CRF. U VP9 lze CRF použít, pokud je max. datový tok zakázán.",
|
"transcoding_two_pass_encoding_setting_description": "Překódováním ve dvou průchodech získáte lépe zakódovaná videa. Pokud je povolen maximální datový tok (nutný pro práci s H.264 a HEVC), tento režim používá rozsah datového toku založený na maximálním datovém toku a ignoruje CRF. U VP9 lze CRF použít, pokud je max. datový tok zakázán.",
|
||||||
"transcoding_video_codec": "Video kodek",
|
"transcoding_video_codec": "Video kodek",
|
||||||
@@ -872,7 +872,7 @@
|
|||||||
"current_server_address": "Aktuální adresa serveru",
|
"current_server_address": "Aktuální adresa serveru",
|
||||||
"custom_date": "Vlastní datum",
|
"custom_date": "Vlastní datum",
|
||||||
"custom_locale": "Vlastní lokalizace",
|
"custom_locale": "Vlastní lokalizace",
|
||||||
"custom_locale_description": "Formátovat datumy, časy a čísla podle vybraného jazyka a oblasti",
|
"custom_locale_description": "Formátovat datumy a čísla podle jazyka a oblasti",
|
||||||
"custom_url": "Vlastní URL",
|
"custom_url": "Vlastní URL",
|
||||||
"cutoff_date_description": "Zanechat fotografie a videa z posledních…",
|
"cutoff_date_description": "Zanechat fotografie a videa z posledních…",
|
||||||
"cutoff_day": "{count, plural, one {den} few {dny} other {dnů}}",
|
"cutoff_day": "{count, plural, one {den} few {dny} other {dnů}}",
|
||||||
@@ -895,6 +895,8 @@
|
|||||||
"deduplication_criteria_2": "Počet EXIF dat",
|
"deduplication_criteria_2": "Počet EXIF dat",
|
||||||
"deduplication_info": "Informace o deduplikaci",
|
"deduplication_info": "Informace o deduplikaci",
|
||||||
"deduplication_info_description": "Pro automatický předvýběr položek a hromadné odstranění duplicit se zohledňuje:",
|
"deduplication_info_description": "Pro automatický předvýběr položek a hromadné odstranění duplicit se zohledňuje:",
|
||||||
|
"default_locale": "Výchozí jazyk",
|
||||||
|
"default_locale_description": "Formátovat datumy a čísla podle místního prostředí prohlížeče",
|
||||||
"delete": "Smazat",
|
"delete": "Smazat",
|
||||||
"delete_action_confirmation_message": "Opravdu chcete odstranit tuto položku? Tato akce přesune položku do serverového koše a zeptá se vás, zda ji chcete odstranit lokálně",
|
"delete_action_confirmation_message": "Opravdu chcete odstranit tuto položku? Tato akce přesune položku do serverového koše a zeptá se vás, zda ji chcete odstranit lokálně",
|
||||||
"delete_action_prompt": "{count} smazáno",
|
"delete_action_prompt": "{count} smazáno",
|
||||||
@@ -1001,14 +1003,12 @@
|
|||||||
"editor_close_without_save_title": "Zavřít editor?",
|
"editor_close_without_save_title": "Zavřít editor?",
|
||||||
"editor_confirm_reset_all_changes": "Opravdu chcete zrušit všechny změny?",
|
"editor_confirm_reset_all_changes": "Opravdu chcete zrušit všechny změny?",
|
||||||
"editor_discard_edits_confirm": "Zrušit úpravy",
|
"editor_discard_edits_confirm": "Zrušit úpravy",
|
||||||
"editor_discard_edits_prompt": "Máte neuložené úpravy. Opravdu je chcete zahodit?",
|
"editor_discard_edits_prompt": "Máte neuložené úpravy. Opravdu je chcete smazat?",
|
||||||
"editor_discard_edits_title": "Zrušit úpravy?",
|
"editor_discard_edits_title": "Zrušit úpravy?",
|
||||||
"editor_edits_applied_error": "Nepodařilo se použít úpravy",
|
"editor_edits_applied_error": "Nepodařilo se použít úpravy",
|
||||||
"editor_edits_applied_success": "Úpravy byly úspěšně provedeny",
|
"editor_edits_applied_success": "Úpravy byly úspěšně provedeny",
|
||||||
"editor_flip_horizontal": "Otočit vodorovně",
|
"editor_flip_horizontal": "Otočit vodorovně",
|
||||||
"editor_flip_vertical": "Otočit svisle",
|
"editor_flip_vertical": "Otočit svisle",
|
||||||
"editor_handle_corner": "{corner, select, top_left {Vlevo nahoře} top_right {Vpravo nahoře} bottom_left {Vlevo dole} bottom_right {Vpravo dole} other {A}} rohová úchytka",
|
|
||||||
"editor_handle_edge": "{edge, select, top {Nahoře} bottom {Dole} left {Vlevo} right {Vpravo} other {An}}úchyt hrany",
|
|
||||||
"editor_orientation": "Orientace",
|
"editor_orientation": "Orientace",
|
||||||
"editor_reset_all_changes": "Zrušit změny",
|
"editor_reset_all_changes": "Zrušit změny",
|
||||||
"editor_rotate_left": "Otočit o 90° doleva",
|
"editor_rotate_left": "Otočit o 90° doleva",
|
||||||
@@ -1074,7 +1074,6 @@
|
|||||||
"failed_to_update_notification_status": "Nepodařilo se aktualizovat stav oznámení",
|
"failed_to_update_notification_status": "Nepodařilo se aktualizovat stav oznámení",
|
||||||
"incorrect_email_or_password": "Nesprávný e-mail nebo heslo",
|
"incorrect_email_or_password": "Nesprávný e-mail nebo heslo",
|
||||||
"library_folder_already_exists": "Tato importní cesta již existuje.",
|
"library_folder_already_exists": "Tato importní cesta již existuje.",
|
||||||
"page_not_found": "Stránka nebyla nalezena",
|
|
||||||
"paths_validation_failed": "{paths, plural, one {# cesta neprošla} few {# cesty neprošly} other {# cest neprošlo}} kontrolou",
|
"paths_validation_failed": "{paths, plural, one {# cesta neprošla} few {# cesty neprošly} other {# cest neprošlo}} kontrolou",
|
||||||
"profile_picture_transparent_pixels": "Profilové obrázky nemohou mít průhledné pixely. Obrázek si prosím zvětšete nebo posuňte.",
|
"profile_picture_transparent_pixels": "Profilové obrázky nemohou mít průhledné pixely. Obrázek si prosím zvětšete nebo posuňte.",
|
||||||
"quota_higher_than_disk_size": "Nastavili jste kvótu vyšší, než je velikost disku",
|
"quota_higher_than_disk_size": "Nastavili jste kvótu vyšší, než je velikost disku",
|
||||||
@@ -1219,7 +1218,6 @@
|
|||||||
"filter_description": "Podmínky pro filtrování cílových položek",
|
"filter_description": "Podmínky pro filtrování cílových položek",
|
||||||
"filter_people": "Filtrovat lidi",
|
"filter_people": "Filtrovat lidi",
|
||||||
"filter_places": "Filtrovat místa",
|
"filter_places": "Filtrovat místa",
|
||||||
"filter_tags": "Filtrovat značky",
|
|
||||||
"filters": "Filtry",
|
"filters": "Filtry",
|
||||||
"find_them_fast": "Najděte je rychle vyhledáním jejich jména",
|
"find_them_fast": "Najděte je rychle vyhledáním jejich jména",
|
||||||
"first": "První",
|
"first": "První",
|
||||||
@@ -1651,7 +1649,6 @@
|
|||||||
"only_favorites": "Pouze oblíbené",
|
"only_favorites": "Pouze oblíbené",
|
||||||
"open": "Otevřít",
|
"open": "Otevřít",
|
||||||
"open_calendar": "Otevřít kalendář",
|
"open_calendar": "Otevřít kalendář",
|
||||||
"open_in_browser": "Otevřít v prohlížeči",
|
|
||||||
"open_in_map_view": "Otevřít v zobrazení mapy",
|
"open_in_map_view": "Otevřít v zobrazení mapy",
|
||||||
"open_in_openstreetmap": "Otevřít v OpenStreetMap",
|
"open_in_openstreetmap": "Otevřít v OpenStreetMap",
|
||||||
"open_the_search_filters": "Otevřít vyhledávací filtry",
|
"open_the_search_filters": "Otevřít vyhledávací filtry",
|
||||||
@@ -1811,8 +1808,9 @@
|
|||||||
"rate_asset": "Hodnotit položku",
|
"rate_asset": "Hodnotit položku",
|
||||||
"rating": "Hodnocení hvězdičkami",
|
"rating": "Hodnocení hvězdičkami",
|
||||||
"rating_clear": "Vyčistit hodnocení",
|
"rating_clear": "Vyčistit hodnocení",
|
||||||
"rating_count": "{count, plural, =0 {Nehodnoceno} one {# hvězdička} few {# hvězdičky} other {# hvězdček}}",
|
"rating_count": "{count, plural, one {# hvězdička} few {# hvězdičky} other {# hvězdček}}",
|
||||||
"rating_description": "Zobrazit EXIF hodnocení v informačním panelu",
|
"rating_description": "Zobrazit EXIF hodnocení v informačním panelu",
|
||||||
|
"rating_set": "Hodnocení nastaveno na {rating, plural, one {# hvězdičku} few {# hvězdičky} other {# hvězdiček}}",
|
||||||
"reaction_options": "Možnosti reakce",
|
"reaction_options": "Možnosti reakce",
|
||||||
"read_changelog": "Přečtěte si seznam změn",
|
"read_changelog": "Přečtěte si seznam změn",
|
||||||
"readonly_mode_disabled": "Režim pouze pro čtení je deaktivován",
|
"readonly_mode_disabled": "Režim pouze pro čtení je deaktivován",
|
||||||
@@ -1884,10 +1882,7 @@
|
|||||||
"reset_pin_code_success": "PIN kód úspěšně resetován",
|
"reset_pin_code_success": "PIN kód úspěšně resetován",
|
||||||
"reset_pin_code_with_password": "Svůj PIN kód můžete vždy resetovat pomocí hesla",
|
"reset_pin_code_with_password": "Svůj PIN kód můžete vždy resetovat pomocí hesla",
|
||||||
"reset_sqlite": "Obnovit databázi SQLite",
|
"reset_sqlite": "Obnovit databázi SQLite",
|
||||||
"reset_sqlite_clear_app_data": "Vymazat data",
|
"reset_sqlite_confirmation": "Jste si jisti, že chcete obnovit databázi SQLite? Pro opětovnou synchronizaci dat se budete muset odhlásit a znovu přihlásit",
|
||||||
"reset_sqlite_confirmation": "Opravdu chcete vymazat data aplikace? Tím se odstraní všechna nastavení a odhlásíte se.",
|
|
||||||
"reset_sqlite_confirmation_note": "Poznámka: Po vymazání budete muset aplikaci restartovat.",
|
|
||||||
"reset_sqlite_done": "Data aplikace byla vymazána. Restartujte Immich a znovu se přihlaste.",
|
|
||||||
"reset_sqlite_success": "Obnovení SQLite databáze proběhlo úspěšně",
|
"reset_sqlite_success": "Obnovení SQLite databáze proběhlo úspěšně",
|
||||||
"reset_to_default": "Obnovit výchozí nastavení",
|
"reset_to_default": "Obnovit výchozí nastavení",
|
||||||
"resolution": "Rozlišení",
|
"resolution": "Rozlišení",
|
||||||
@@ -1915,7 +1910,6 @@
|
|||||||
"saved_settings": "Nastavení uloženo",
|
"saved_settings": "Nastavení uloženo",
|
||||||
"say_something": "Napište něco",
|
"say_something": "Napište něco",
|
||||||
"scaffold_body_error_occurred": "Došlo k chybě",
|
"scaffold_body_error_occurred": "Došlo k chybě",
|
||||||
"scaffold_body_error_unrecoverable": "Došlo k neopravitelné chybě. Abychom vám mohli pomoci, sdělte nám prosím chybu a výpis zásobníku na Discordu nebo GitHubu. Pokud vám bylo doporučeno, můžete vymazat data aplikace níže.",
|
|
||||||
"scan": "Prohledat",
|
"scan": "Prohledat",
|
||||||
"scan_all_libraries": "Prohledat všechny knihovny",
|
"scan_all_libraries": "Prohledat všechny knihovny",
|
||||||
"scan_library": "Prohledat",
|
"scan_library": "Prohledat",
|
||||||
@@ -1951,7 +1945,6 @@
|
|||||||
"search_filter_ocr": "Hledat pomocí OCR",
|
"search_filter_ocr": "Hledat pomocí OCR",
|
||||||
"search_filter_people_title": "Výběr lidí",
|
"search_filter_people_title": "Výběr lidí",
|
||||||
"search_filter_star_rating": "Hodnocení hvězdičkami",
|
"search_filter_star_rating": "Hodnocení hvězdičkami",
|
||||||
"search_filter_tags_title": "Vybrat značky",
|
|
||||||
"search_for": "Vyhledat",
|
"search_for": "Vyhledat",
|
||||||
"search_for_existing_person": "Vyhledat existující osobu",
|
"search_for_existing_person": "Vyhledat existující osobu",
|
||||||
"search_no_more_result": "Žádné další výsledky",
|
"search_no_more_result": "Žádné další výsledky",
|
||||||
@@ -2031,9 +2024,6 @@
|
|||||||
"set_profile_picture": "Nastavit profilový obrázek",
|
"set_profile_picture": "Nastavit profilový obrázek",
|
||||||
"set_slideshow_to_fullscreen": "Nastavit prezentaci na celou obrazovku",
|
"set_slideshow_to_fullscreen": "Nastavit prezentaci na celou obrazovku",
|
||||||
"set_stack_primary_asset": "Nastavit jako hlavní položku",
|
"set_stack_primary_asset": "Nastavit jako hlavní položku",
|
||||||
"setting_image_navigation_enable_subtitle": "Pokud je zapnuto, budete moci přejít na předchozí/další obrázek klepnutím do levé/pravé čtvrtiny obrazovky.",
|
|
||||||
"setting_image_navigation_enable_title": "Klepněte pro navigaci",
|
|
||||||
"setting_image_navigation_title": "Navigace mezi obrázky",
|
|
||||||
"setting_image_viewer_help": "V prohlížeči detailů se nejprve načte malá miniatura, poté se načte náhled střední velikosti (je-li povolen) a nakonec se načte originál (je-li povolen).",
|
"setting_image_viewer_help": "V prohlížeči detailů se nejprve načte malá miniatura, poté se načte náhled střední velikosti (je-li povolen) a nakonec se načte originál (je-li povolen).",
|
||||||
"setting_image_viewer_original_subtitle": "Umožňuje načíst původní obrázek v plném rozlišení (velký!). Zakažte pro snížení využití dat (v síti i v mezipaměti zařízení).",
|
"setting_image_viewer_original_subtitle": "Umožňuje načíst původní obrázek v plném rozlišení (velký!). Zakažte pro snížení využití dat (v síti i v mezipaměti zařízení).",
|
||||||
"setting_image_viewer_original_title": "Načíst původní obrázek",
|
"setting_image_viewer_original_title": "Načíst původní obrázek",
|
||||||
@@ -2312,7 +2302,6 @@
|
|||||||
"unstack_action_prompt": "{count} seskupených zrušeno",
|
"unstack_action_prompt": "{count} seskupených zrušeno",
|
||||||
"unstacked_assets_count": "{count, plural, one {Rozložená # položka} few {Rozložené # položky} other {Rozložených # položek}}",
|
"unstacked_assets_count": "{count, plural, one {Rozložená # položka} few {Rozložené # položky} other {Rozložených # položek}}",
|
||||||
"unsupported_field_type": "Nepodporovaný typ pole",
|
"unsupported_field_type": "Nepodporovaný typ pole",
|
||||||
"unsupported_file_type": "Soubor {file} nelze nahrát, protože jeho typ {type} není podporován.",
|
|
||||||
"untagged": "Neoznačeno",
|
"untagged": "Neoznačeno",
|
||||||
"untitled_workflow": "Pracovní postup bez názvu",
|
"untitled_workflow": "Pracovní postup bez názvu",
|
||||||
"up_next": "To je prozatím vše",
|
"up_next": "To je prozatím vše",
|
||||||
@@ -2339,8 +2328,6 @@
|
|||||||
"url": "URL",
|
"url": "URL",
|
||||||
"usage": "Využití",
|
"usage": "Využití",
|
||||||
"use_biometric": "Použít biometrické údaje",
|
"use_biometric": "Použít biometrické údaje",
|
||||||
"use_browser_locale": "Použít jazyk prohlížeče",
|
|
||||||
"use_browser_locale_description": "Formátujte data, časy a čísla podle nastavení místního formátu vašeho prohlížeče",
|
|
||||||
"use_current_connection": "Použít aktuální připojení",
|
"use_current_connection": "Použít aktuální připojení",
|
||||||
"use_custom_date_range": "Použít vlastní rozsah dat",
|
"use_custom_date_range": "Použít vlastní rozsah dat",
|
||||||
"user": "Uživatel",
|
"user": "Uživatel",
|
||||||
@@ -2391,9 +2378,9 @@
|
|||||||
"view_similar_photos": "Zobrazit podobné fotky",
|
"view_similar_photos": "Zobrazit podobné fotky",
|
||||||
"view_stack": "Zobrazit seskupení",
|
"view_stack": "Zobrazit seskupení",
|
||||||
"view_user": "Zobrazit uživatele",
|
"view_user": "Zobrazit uživatele",
|
||||||
"viewer_remove_from_stack": "Odstranit ze seskupení",
|
"viewer_remove_from_stack": "Odstranit ze zásobníku",
|
||||||
"viewer_stack_use_as_main_asset": "Použít jako hlavní položku",
|
"viewer_stack_use_as_main_asset": "Použít jako hlavní položku",
|
||||||
"viewer_unstack": "Zrušit seskupení",
|
"viewer_unstack": "Zrušit zásobník",
|
||||||
"visibility_changed": "Viditelnost změněna u {count, plural, one {# osoby} few {# osob} other {# lidí}}",
|
"visibility_changed": "Viditelnost změněna u {count, plural, one {# osoby} few {# osob} other {# lidí}}",
|
||||||
"visual": "Vizuální",
|
"visual": "Vizuální",
|
||||||
"visual_builder": "Vizuální návrhář",
|
"visual_builder": "Vizuální návrhář",
|
||||||
|
|||||||
+8
-26
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "Søg opgaver…",
|
"search_jobs": "Søg opgaver…",
|
||||||
"send_welcome_email": "Send velkomst-email",
|
"send_welcome_email": "Send velkomst-email",
|
||||||
"server_external_domain_settings": "Eksternt domæne",
|
"server_external_domain_settings": "Eksternt domæne",
|
||||||
"server_external_domain_settings_description": "Domæne brugt til eksterne links",
|
"server_external_domain_settings_description": "Domæne til offentligt delte links, inklusiv http(s)://",
|
||||||
"server_public_users": "Offentlige brugere",
|
"server_public_users": "Offentlige brugere",
|
||||||
"server_public_users_description": "Alle brugere (navn og e-mail) vises, når en bruger tilføjes til delte album. Når den er deaktiveret, vil brugerlisten kun være tilgængelig for administratorbrugere.",
|
"server_public_users_description": "Alle brugere (navn og e-mail) vises, når en bruger tilføjes til delte album. Når den er deaktiveret, vil brugerlisten kun være tilgængelig for administratorbrugere.",
|
||||||
"server_settings": "Serverindstillinger",
|
"server_settings": "Serverindstillinger",
|
||||||
@@ -411,7 +411,7 @@
|
|||||||
"transcoding_tone_mapping": "Tone-kortlægning",
|
"transcoding_tone_mapping": "Tone-kortlægning",
|
||||||
"transcoding_tone_mapping_description": "Forsøger at bevare HDR-videoers udseende når konverteret til SDR. Hver algoritme har forskellige afvejninger af farve, detalje og lysstyrke. Hable bevarer farve og Reinhard bevarer lysstyrke.",
|
"transcoding_tone_mapping_description": "Forsøger at bevare HDR-videoers udseende når konverteret til SDR. Hver algoritme har forskellige afvejninger af farve, detalje og lysstyrke. Hable bevarer farve og Reinhard bevarer lysstyrke.",
|
||||||
"transcoding_transcode_policy": "Transkodningspolitik",
|
"transcoding_transcode_policy": "Transkodningspolitik",
|
||||||
"transcoding_transcode_policy_description": "Politik for hvornår en video skal transkodes. HDR videoer og videoer med en anden pixelformat end YUV 4:2:0 vil altid blive transkodet (bortset fra, hvis transkodning er slået fra).",
|
"transcoding_transcode_policy_description": "Politik for hvornår en video skal transkodes. HDR videoer vil altid blive transkodet (bortset fra, hvis transkodning er slået fra).",
|
||||||
"transcoding_two_pass_encoding": "To-omgangsindkodning",
|
"transcoding_two_pass_encoding": "To-omgangsindkodning",
|
||||||
"transcoding_two_pass_encoding_setting_description": "Transkoder af to omgange for at producere bedre indkodede videoer. Når den maksimale bitrate er slået til (som det kræver for at det fungerer med H.264 og HEVC), bruger denne tilstand en bitrateinterval baseret på den maksimale birate og ignorerer CRF. For VP9, kan CRF bruges hvis den maksimale bitrate er slået fra.",
|
"transcoding_two_pass_encoding_setting_description": "Transkoder af to omgange for at producere bedre indkodede videoer. Når den maksimale bitrate er slået til (som det kræver for at det fungerer med H.264 og HEVC), bruger denne tilstand en bitrateinterval baseret på den maksimale birate og ignorerer CRF. For VP9, kan CRF bruges hvis den maksimale bitrate er slået fra.",
|
||||||
"transcoding_video_codec": "Videocodec",
|
"transcoding_video_codec": "Videocodec",
|
||||||
@@ -794,11 +794,6 @@
|
|||||||
"color": "Farve",
|
"color": "Farve",
|
||||||
"color_theme": "Farvetema",
|
"color_theme": "Farvetema",
|
||||||
"command": "Kommando",
|
"command": "Kommando",
|
||||||
"command_palette_prompt": "Find hurtigt sider, handlinger eller kommandoer",
|
|
||||||
"command_palette_to_close": "for at lukke",
|
|
||||||
"command_palette_to_navigate": "for at indtaste",
|
|
||||||
"command_palette_to_select": "for at vælge",
|
|
||||||
"command_palette_to_show_all": "for at vise alle",
|
|
||||||
"comment_deleted": "Kommentar slettet",
|
"comment_deleted": "Kommentar slettet",
|
||||||
"comment_options": "Kommentarindstillinger",
|
"comment_options": "Kommentarindstillinger",
|
||||||
"comments_and_likes": "Kommentarer og likes",
|
"comments_and_likes": "Kommentarer og likes",
|
||||||
@@ -872,7 +867,7 @@
|
|||||||
"current_server_address": "Nuværende serveraddresse",
|
"current_server_address": "Nuværende serveraddresse",
|
||||||
"custom_date": "Brugerdefineret dato",
|
"custom_date": "Brugerdefineret dato",
|
||||||
"custom_locale": "Brugerdefineret lokale",
|
"custom_locale": "Brugerdefineret lokale",
|
||||||
"custom_locale_description": "Formatér datoer, klokkeslæt og tal baseret på det valgte sprog og den valgte region",
|
"custom_locale_description": "Formatér datoer og tal baseret på sproget og regionen",
|
||||||
"custom_url": "Tilpasset URL",
|
"custom_url": "Tilpasset URL",
|
||||||
"cutoff_date_description": "Behold fotos fra den sidste…",
|
"cutoff_date_description": "Behold fotos fra den sidste…",
|
||||||
"cutoff_day": "{count, plural, one {dag} other {dage}}",
|
"cutoff_day": "{count, plural, one {dag} other {dage}}",
|
||||||
@@ -895,6 +890,8 @@
|
|||||||
"deduplication_criteria_2": "Antal EXIF-data",
|
"deduplication_criteria_2": "Antal EXIF-data",
|
||||||
"deduplication_info": "Deduplikerings info",
|
"deduplication_info": "Deduplikerings info",
|
||||||
"deduplication_info_description": "For automatisk at forudvælge emner og fjerne dubletter i bulk ser vi på:",
|
"deduplication_info_description": "For automatisk at forudvælge emner og fjerne dubletter i bulk ser vi på:",
|
||||||
|
"default_locale": "Standardlokalitet",
|
||||||
|
"default_locale_description": "Formatér datoer og tal baseret på din browsers regions indstillinger",
|
||||||
"delete": "Slet",
|
"delete": "Slet",
|
||||||
"delete_action_confirmation_message": "Er du sikker på, at du vil slette dette objekt? Denne handling vil flytte objektet til serverens papirkurv, og vil spørge dig, om du vil slette den lokalt",
|
"delete_action_confirmation_message": "Er du sikker på, at du vil slette dette objekt? Denne handling vil flytte objektet til serverens papirkurv, og vil spørge dig, om du vil slette den lokalt",
|
||||||
"delete_action_prompt": "{count} slettet",
|
"delete_action_prompt": "{count} slettet",
|
||||||
@@ -1072,7 +1069,6 @@
|
|||||||
"failed_to_update_notification_status": "Kunne ikke uploade notifikations status",
|
"failed_to_update_notification_status": "Kunne ikke uploade notifikations status",
|
||||||
"incorrect_email_or_password": "Forkert email eller kodeord",
|
"incorrect_email_or_password": "Forkert email eller kodeord",
|
||||||
"library_folder_already_exists": "Denne import sti findes allerede.",
|
"library_folder_already_exists": "Denne import sti findes allerede.",
|
||||||
"page_not_found": "Siden blev ikke fundet :/",
|
|
||||||
"paths_validation_failed": "{paths, plural, one {# sti} other {# stier}} slog fejl ved validering",
|
"paths_validation_failed": "{paths, plural, one {# sti} other {# stier}} slog fejl ved validering",
|
||||||
"profile_picture_transparent_pixels": "Profilbilleder kan ikke have gennemsigtige pixels. Zoom venligst ind og/eller flyt billedet.",
|
"profile_picture_transparent_pixels": "Profilbilleder kan ikke have gennemsigtige pixels. Zoom venligst ind og/eller flyt billedet.",
|
||||||
"quota_higher_than_disk_size": "Du har sat en kvote der er større end disken",
|
"quota_higher_than_disk_size": "Du har sat en kvote der er større end disken",
|
||||||
@@ -1172,7 +1168,6 @@
|
|||||||
"exif_bottom_sheet_people": "PERSONER",
|
"exif_bottom_sheet_people": "PERSONER",
|
||||||
"exif_bottom_sheet_person_add_person": "Tilføj navn",
|
"exif_bottom_sheet_person_add_person": "Tilføj navn",
|
||||||
"exit_slideshow": "Afslut slideshow",
|
"exit_slideshow": "Afslut slideshow",
|
||||||
"expand": "Udvid",
|
|
||||||
"expand_all": "Udvid alle",
|
"expand_all": "Udvid alle",
|
||||||
"experimental_settings_new_asset_list_subtitle": "Under udarbejdelse",
|
"experimental_settings_new_asset_list_subtitle": "Under udarbejdelse",
|
||||||
"experimental_settings_new_asset_list_title": "Aktiver eksperimentelt fotogitter",
|
"experimental_settings_new_asset_list_title": "Aktiver eksperimentelt fotogitter",
|
||||||
@@ -1217,7 +1212,6 @@
|
|||||||
"filter_description": "Betingelser for filtrering af valgte mediefiler",
|
"filter_description": "Betingelser for filtrering af valgte mediefiler",
|
||||||
"filter_people": "Filtrér personer",
|
"filter_people": "Filtrér personer",
|
||||||
"filter_places": "Filtrer steder",
|
"filter_places": "Filtrer steder",
|
||||||
"filter_tags": "Filtrer tags",
|
|
||||||
"filters": "Filtre",
|
"filters": "Filtre",
|
||||||
"find_them_fast": "Find dem hurtigt med søgning via navn",
|
"find_them_fast": "Find dem hurtigt med søgning via navn",
|
||||||
"first": "Første",
|
"first": "Første",
|
||||||
@@ -1648,7 +1642,6 @@
|
|||||||
"online": "Online",
|
"online": "Online",
|
||||||
"only_favorites": "Kun favoritter",
|
"only_favorites": "Kun favoritter",
|
||||||
"open": "Åben",
|
"open": "Åben",
|
||||||
"open_calendar": "Åbn kalender",
|
|
||||||
"open_in_map_view": "Åben i kortvisning",
|
"open_in_map_view": "Åben i kortvisning",
|
||||||
"open_in_openstreetmap": "Åben i OpenStreetMap",
|
"open_in_openstreetmap": "Åben i OpenStreetMap",
|
||||||
"open_the_search_filters": "Åbn søgefiltre",
|
"open_the_search_filters": "Åbn søgefiltre",
|
||||||
@@ -1808,8 +1801,9 @@
|
|||||||
"rate_asset": "Vurder filer",
|
"rate_asset": "Vurder filer",
|
||||||
"rating": "Stjernebedømmelse",
|
"rating": "Stjernebedømmelse",
|
||||||
"rating_clear": "Nulstil vurdering",
|
"rating_clear": "Nulstil vurdering",
|
||||||
"rating_count": "{count, plural, =0 {Unrated} one {# stjerne} other {# stjerner}}",
|
"rating_count": "{count, plural, one {# stjerne} other {# stjerner}}",
|
||||||
"rating_description": "Vis EXIF-klassificeringen i infopanelet",
|
"rating_description": "Vis EXIF-klassificeringen i infopanelet",
|
||||||
|
"rating_set": "Vurdering sat til {rating, plural, one {# stjerne} other {# stjerner}}",
|
||||||
"reaction_options": "Reaktionsindstillinger",
|
"reaction_options": "Reaktionsindstillinger",
|
||||||
"read_changelog": "Læs ændringslog",
|
"read_changelog": "Læs ændringslog",
|
||||||
"readonly_mode_disabled": "Skrivebeskyttet tilstand deaktiveret",
|
"readonly_mode_disabled": "Skrivebeskyttet tilstand deaktiveret",
|
||||||
@@ -1881,10 +1875,7 @@
|
|||||||
"reset_pin_code_success": "PIN-koden er Nulstillet",
|
"reset_pin_code_success": "PIN-koden er Nulstillet",
|
||||||
"reset_pin_code_with_password": "Du kan altid nulstille din PIN-kode med dit password",
|
"reset_pin_code_with_password": "Du kan altid nulstille din PIN-kode med dit password",
|
||||||
"reset_sqlite": "Reset SQLite Databasen",
|
"reset_sqlite": "Reset SQLite Databasen",
|
||||||
"reset_sqlite_clear_app_data": "Ryd data",
|
"reset_sqlite_confirmation": "Er du sikker på, at du vil nulstille SQLite databasen? Du er nødt til at logge ud og ind igen for at gensynkronisere dine data",
|
||||||
"reset_sqlite_confirmation": "Er du sikker på, at du vil ryde app dataen? Dette vil fjerne alle settings og logge dig ud.",
|
|
||||||
"reset_sqlite_confirmation_note": "Bemærk: Du skal genstarte appen efter rydning.",
|
|
||||||
"reset_sqlite_done": "Appdata er blevet slettet. Genstart Immich og log ind igen.",
|
|
||||||
"reset_sqlite_success": "Vellykket reset af SQLite databasen",
|
"reset_sqlite_success": "Vellykket reset af SQLite databasen",
|
||||||
"reset_to_default": "Nulstil til standard",
|
"reset_to_default": "Nulstil til standard",
|
||||||
"resolution": "Opløsning",
|
"resolution": "Opløsning",
|
||||||
@@ -1912,7 +1903,6 @@
|
|||||||
"saved_settings": "Gemte indstillinger",
|
"saved_settings": "Gemte indstillinger",
|
||||||
"say_something": "Skriv noget",
|
"say_something": "Skriv noget",
|
||||||
"scaffold_body_error_occurred": "Der opstod en fejl",
|
"scaffold_body_error_occurred": "Der opstod en fejl",
|
||||||
"scaffold_body_error_unrecoverable": "Der er opstået en uoprettelig fejl. Del venligst fejlen og stack trace på Discord eller GitHub, så vi kan hjælpe. Hvis du bliver bedt om det, kan du rydde appdataene nedenfor.",
|
|
||||||
"scan": "Skan",
|
"scan": "Skan",
|
||||||
"scan_all_libraries": "Skan alle biblioteker",
|
"scan_all_libraries": "Skan alle biblioteker",
|
||||||
"scan_library": "Skan",
|
"scan_library": "Skan",
|
||||||
@@ -1948,7 +1938,6 @@
|
|||||||
"search_filter_ocr": "Søg via OCR",
|
"search_filter_ocr": "Søg via OCR",
|
||||||
"search_filter_people_title": "Vælg personer",
|
"search_filter_people_title": "Vælg personer",
|
||||||
"search_filter_star_rating": "Stjerne Vurdering",
|
"search_filter_star_rating": "Stjerne Vurdering",
|
||||||
"search_filter_tags_title": "Vælg tags",
|
|
||||||
"search_for": "Søg efter",
|
"search_for": "Søg efter",
|
||||||
"search_for_existing_person": "Søg efter eksisterende person",
|
"search_for_existing_person": "Søg efter eksisterende person",
|
||||||
"search_no_more_result": "Ikke flere resultater",
|
"search_no_more_result": "Ikke flere resultater",
|
||||||
@@ -2028,9 +2017,6 @@
|
|||||||
"set_profile_picture": "Indstil profilbillede",
|
"set_profile_picture": "Indstil profilbillede",
|
||||||
"set_slideshow_to_fullscreen": "Sæt diasshow til fuldskærmsvisning",
|
"set_slideshow_to_fullscreen": "Sæt diasshow til fuldskærmsvisning",
|
||||||
"set_stack_primary_asset": "Angiv som primært billede",
|
"set_stack_primary_asset": "Angiv som primært billede",
|
||||||
"setting_image_navigation_enable_subtitle": "Hvis aktiveret, kan du navigere til det forrige/næste billede ved at trykke på den yderste venstre/højre fjerdedel af skærmen.",
|
|
||||||
"setting_image_navigation_enable_title": "Tryk for at navigere",
|
|
||||||
"setting_image_navigation_title": "Billednavigation",
|
|
||||||
"setting_image_viewer_help": "Detaljeret visning indlæser miniaturebilleder først. Herefter indlæses mediumstørrelse forhåndsvisning af billedet (hvis dette er slået til), for til sidst at vise originalen (hvis dette er slået til).",
|
"setting_image_viewer_help": "Detaljeret visning indlæser miniaturebilleder først. Herefter indlæses mediumstørrelse forhåndsvisning af billedet (hvis dette er slået til), for til sidst at vise originalen (hvis dette er slået til).",
|
||||||
"setting_image_viewer_original_subtitle": "Slå indlæsning af originalbillede i fuld størrelse til (stort!). Deaktiver for at reducere dataforbruget (både på netværket og for enhedscache).",
|
"setting_image_viewer_original_subtitle": "Slå indlæsning af originalbillede i fuld størrelse til (stort!). Deaktiver for at reducere dataforbruget (både på netværket og for enhedscache).",
|
||||||
"setting_image_viewer_original_title": "Indlæs originalbillede",
|
"setting_image_viewer_original_title": "Indlæs originalbillede",
|
||||||
@@ -2197,7 +2183,6 @@
|
|||||||
"support": "Support",
|
"support": "Support",
|
||||||
"support_and_feedback": "Support og feedback",
|
"support_and_feedback": "Support og feedback",
|
||||||
"support_third_party_description": "Din Immich-installation blev sammensat af en tredjepart. Problemer, du oplever, kan være forårsaget af denne udvikler, så rejs venligst problemer med dem i første omgang ved at bruge nedenstående links.",
|
"support_third_party_description": "Din Immich-installation blev sammensat af en tredjepart. Problemer, du oplever, kan være forårsaget af denne udvikler, så rejs venligst problemer med dem i første omgang ved at bruge nedenstående links.",
|
||||||
"supporter": "Supporter",
|
|
||||||
"swap_merge_direction": "Byt retning for sammenfletning",
|
"swap_merge_direction": "Byt retning for sammenfletning",
|
||||||
"sync": "Synkronisér",
|
"sync": "Synkronisér",
|
||||||
"sync_albums": "Synkroniser albummer",
|
"sync_albums": "Synkroniser albummer",
|
||||||
@@ -2309,7 +2294,6 @@
|
|||||||
"unstack_action_prompt": "{count} ustakket",
|
"unstack_action_prompt": "{count} ustakket",
|
||||||
"unstacked_assets_count": "Ikke-stablet {count, plural, one {# aktiv} other {# aktiver}}",
|
"unstacked_assets_count": "Ikke-stablet {count, plural, one {# aktiv} other {# aktiver}}",
|
||||||
"unsupported_field_type": "Ikke-understøttet felttype",
|
"unsupported_field_type": "Ikke-understøttet felttype",
|
||||||
"unsupported_file_type": "Filen {file} kan ikke uploades, fordi filtypen {type} ikke understøttes.",
|
|
||||||
"untagged": "Umærket",
|
"untagged": "Umærket",
|
||||||
"untitled_workflow": "Unavngivet arbejdsgang",
|
"untitled_workflow": "Unavngivet arbejdsgang",
|
||||||
"up_next": "Næste",
|
"up_next": "Næste",
|
||||||
@@ -2336,8 +2320,6 @@
|
|||||||
"url": "URL",
|
"url": "URL",
|
||||||
"usage": "Forbrug",
|
"usage": "Forbrug",
|
||||||
"use_biometric": "Brug biometrisk",
|
"use_biometric": "Brug biometrisk",
|
||||||
"use_browser_locale": "Brug browserens lokalitet",
|
|
||||||
"use_browser_locale_description": "Formatér datoer, klokkeslæt og tal baseret på din browsers lokalitet",
|
|
||||||
"use_current_connection": "Brug nuværende forbindelse",
|
"use_current_connection": "Brug nuværende forbindelse",
|
||||||
"use_custom_date_range": "Brug tilpasset datointerval i stedet",
|
"use_custom_date_range": "Brug tilpasset datointerval i stedet",
|
||||||
"user": "Bruger",
|
"user": "Bruger",
|
||||||
|
|||||||
+15
-36
@@ -77,7 +77,7 @@
|
|||||||
"confirm_user_pin_code_reset": "Bist du sicher, dass du den PIN-Code von {user} zurücksetzen möchtest?",
|
"confirm_user_pin_code_reset": "Bist du sicher, dass du den PIN-Code von {user} zurücksetzen möchtest?",
|
||||||
"copy_config_to_clipboard_description": "Kopieren Sie die aktuelle Systemkonfiguration als JSON-Objekt in die Zwischenablage",
|
"copy_config_to_clipboard_description": "Kopieren Sie die aktuelle Systemkonfiguration als JSON-Objekt in die Zwischenablage",
|
||||||
"create_job": "Aufgabe erstellen",
|
"create_job": "Aufgabe erstellen",
|
||||||
"cron_expression": "Cron-Ausdruck",
|
"cron_expression": "Cron-Zeitangabe",
|
||||||
"cron_expression_description": "Setze das Scanintervall im Cron-Format. Hilfe mit dem Format bietet dir dabei z. B. der <link>Crontab Guru</link>",
|
"cron_expression_description": "Setze das Scanintervall im Cron-Format. Hilfe mit dem Format bietet dir dabei z. B. der <link>Crontab Guru</link>",
|
||||||
"cron_expression_presets": "Vorlagen für Cron-Zeitangabe",
|
"cron_expression_presets": "Vorlagen für Cron-Zeitangabe",
|
||||||
"disable_login": "Login deaktivieren",
|
"disable_login": "Login deaktivieren",
|
||||||
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "Suchaufgaben…",
|
"search_jobs": "Suchaufgaben…",
|
||||||
"send_welcome_email": "Begrüssungsmail senden",
|
"send_welcome_email": "Begrüssungsmail senden",
|
||||||
"server_external_domain_settings": "Externe Domain",
|
"server_external_domain_settings": "Externe Domain",
|
||||||
"server_external_domain_settings_description": "Für externe Links verwendete Domäne",
|
"server_external_domain_settings_description": "Domäne für öffentlich freigegebene Links, einschließlich http(s)://",
|
||||||
"server_public_users": "Öffentliche Benutzer",
|
"server_public_users": "Öffentliche Benutzer",
|
||||||
"server_public_users_description": "Beim Hinzufügen eines Benutzers zu freigegebenen Alben werden alle Benutzer (Name und E-Mail) aufgelistet. Wenn diese Option deaktiviert ist, steht die Benutzerliste nur Administratoren zur Verfügung.",
|
"server_public_users_description": "Beim Hinzufügen eines Benutzers zu freigegebenen Alben werden alle Benutzer (Name und E-Mail) aufgelistet. Wenn diese Option deaktiviert ist, steht die Benutzerliste nur Administratoren zur Verfügung.",
|
||||||
"server_settings": "Servereinstellungen",
|
"server_settings": "Servereinstellungen",
|
||||||
@@ -411,7 +411,7 @@
|
|||||||
"transcoding_tone_mapping": "Farbton-Mapping",
|
"transcoding_tone_mapping": "Farbton-Mapping",
|
||||||
"transcoding_tone_mapping_description": "Versucht, das Aussehen von HDR-Videos bei der Konvertierung in SDR beizubehalten. Jeder Algorithmus geht unterschiedliche Kompromisse bei Farbe, Details und Helligkeit ein. Hable bewahrt Details, Mobius bewahrt die Farbe und Reinhard bewahrt die Helligkeit.",
|
"transcoding_tone_mapping_description": "Versucht, das Aussehen von HDR-Videos bei der Konvertierung in SDR beizubehalten. Jeder Algorithmus geht unterschiedliche Kompromisse bei Farbe, Details und Helligkeit ein. Hable bewahrt Details, Mobius bewahrt die Farbe und Reinhard bewahrt die Helligkeit.",
|
||||||
"transcoding_transcode_policy": "Transcodierungsrichtlinie",
|
"transcoding_transcode_policy": "Transcodierungsrichtlinie",
|
||||||
"transcoding_transcode_policy_description": "Richtlinie, wann ein Video transkodiert werden soll. HDR-Videos und Videos ohne das Format YUV 4:2:0 werden immer transkodiert (außer wenn die Transkodierung deaktiviert ist).",
|
"transcoding_transcode_policy_description": "Richtlinie, wann ein Video transkodiert werden soll. HDR-Videos werden immer transkodiert (außer wenn die Transkodierung deaktiviert ist).",
|
||||||
"transcoding_two_pass_encoding": "Two-Pass Codierung",
|
"transcoding_two_pass_encoding": "Two-Pass Codierung",
|
||||||
"transcoding_two_pass_encoding_setting_description": "Führt eine Transkodierung in zwei Durchgängen durch, um besser kodierte Videos zu erzeugen. Wenn die maximale Bitrate aktiviert ist (erforderlich für die Verwendung mit H.264 und HEVC), verwendet dieser Modus einen Bitratenbereich, der auf der maximalen Bitrate basiert, und ignoriert CRF. Für VP9 kann CRF verwendet werden, wenn die maximale Bitrate deaktiviert ist.",
|
"transcoding_two_pass_encoding_setting_description": "Führt eine Transkodierung in zwei Durchgängen durch, um besser kodierte Videos zu erzeugen. Wenn die maximale Bitrate aktiviert ist (erforderlich für die Verwendung mit H.264 und HEVC), verwendet dieser Modus einen Bitratenbereich, der auf der maximalen Bitrate basiert, und ignoriert CRF. Für VP9 kann CRF verwendet werden, wenn die maximale Bitrate deaktiviert ist.",
|
||||||
"transcoding_video_codec": "Video-Codec",
|
"transcoding_video_codec": "Video-Codec",
|
||||||
@@ -697,8 +697,8 @@
|
|||||||
"birthdate_set_description": "Das Geburtsdatum wird verwendet, um das Alter dieser Person zum Zeitpunkt eines Fotos zu berechnen.",
|
"birthdate_set_description": "Das Geburtsdatum wird verwendet, um das Alter dieser Person zum Zeitpunkt eines Fotos zu berechnen.",
|
||||||
"blurred_background": "Unscharfer Hintergrund",
|
"blurred_background": "Unscharfer Hintergrund",
|
||||||
"bugs_and_feature_requests": "Fehler & Verbesserungsvorschläge",
|
"bugs_and_feature_requests": "Fehler & Verbesserungsvorschläge",
|
||||||
"build": "Erstelle",
|
"build": "Build",
|
||||||
"build_image": "Bild erstellen",
|
"build_image": "Build Abbild",
|
||||||
"bulk_delete_duplicates_confirmation": "Bist du sicher, dass du {count, plural, one {# duplizierte Datei} other {# duplizierte Dateien gemeinsam}} löschen möchtest? Dabei wird die größte Datei jeder Gruppe behalten und alle anderen Duplikate endgültig gelöscht. Diese Aktion kann nicht rückgängig gemacht werden!",
|
"bulk_delete_duplicates_confirmation": "Bist du sicher, dass du {count, plural, one {# duplizierte Datei} other {# duplizierte Dateien gemeinsam}} löschen möchtest? Dabei wird die größte Datei jeder Gruppe behalten und alle anderen Duplikate endgültig gelöscht. Diese Aktion kann nicht rückgängig gemacht werden!",
|
||||||
"bulk_keep_duplicates_confirmation": "Bist du sicher, dass du {count, plural, one {# duplizierte Datei} other {# duplizierte Dateien}} behalten möchtest? Dies wird alle Duplikat-Gruppen auflösen ohne etwas zu löschen.",
|
"bulk_keep_duplicates_confirmation": "Bist du sicher, dass du {count, plural, one {# duplizierte Datei} other {# duplizierte Dateien}} behalten möchtest? Dies wird alle Duplikat-Gruppen auflösen ohne etwas zu löschen.",
|
||||||
"bulk_trash_duplicates_confirmation": "Bist du sicher, dass du {count, plural, one {# duplizierte Datei} other {# duplizierte Dateien gemeinsam}} in den Papierkorb verschieben möchtest? Dies wird die größte Datei jeder Gruppe behalten und alle anderen Duplikate in den Papierkorb verschieben.",
|
"bulk_trash_duplicates_confirmation": "Bist du sicher, dass du {count, plural, one {# duplizierte Datei} other {# duplizierte Dateien gemeinsam}} in den Papierkorb verschieben möchtest? Dies wird die größte Datei jeder Gruppe behalten und alle anderen Duplikate in den Papierkorb verschieben.",
|
||||||
@@ -794,11 +794,6 @@
|
|||||||
"color": "Farbe",
|
"color": "Farbe",
|
||||||
"color_theme": "Farb-Theme",
|
"color_theme": "Farb-Theme",
|
||||||
"command": "Befehl",
|
"command": "Befehl",
|
||||||
"command_palette_prompt": "Finde schnell Seiten, Aktionen oder Befehle",
|
|
||||||
"command_palette_to_close": "Schließen",
|
|
||||||
"command_palette_to_navigate": "eingeben",
|
|
||||||
"command_palette_to_select": "Auswählen",
|
|
||||||
"command_palette_to_show_all": "Alle anzeigen",
|
|
||||||
"comment_deleted": "Kommentar gelöscht",
|
"comment_deleted": "Kommentar gelöscht",
|
||||||
"comment_options": "Kommentaroptionen",
|
"comment_options": "Kommentaroptionen",
|
||||||
"comments_and_likes": "Kommentare & Likes",
|
"comments_and_likes": "Kommentare & Likes",
|
||||||
@@ -871,8 +866,8 @@
|
|||||||
"current_pin_code": "Aktueller PIN-Code",
|
"current_pin_code": "Aktueller PIN-Code",
|
||||||
"current_server_address": "Aktuelle Serveradresse",
|
"current_server_address": "Aktuelle Serveradresse",
|
||||||
"custom_date": "Benutzerdefiniertes Datum",
|
"custom_date": "Benutzerdefiniertes Datum",
|
||||||
"custom_locale": "Benutzerdefiniertes Gebietsschema",
|
"custom_locale": "Benutzerdefinierte Sprache",
|
||||||
"custom_locale_description": "Datumsangaben, Uhrzeiten und Zahlen je nach Sprache und Land formatieren",
|
"custom_locale_description": "Datumsangaben und Zahlen je nach Sprache und Land formatieren",
|
||||||
"custom_url": "Benutzerdefinierte URL",
|
"custom_url": "Benutzerdefinierte URL",
|
||||||
"cutoff_date_description": "Behalte Fotos der letzten…",
|
"cutoff_date_description": "Behalte Fotos der letzten…",
|
||||||
"cutoff_day": "{count, plural, one {Tag} other {Tage}}",
|
"cutoff_day": "{count, plural, one {Tag} other {Tage}}",
|
||||||
@@ -895,6 +890,8 @@
|
|||||||
"deduplication_criteria_2": "Anzahl der EXIF-Daten",
|
"deduplication_criteria_2": "Anzahl der EXIF-Daten",
|
||||||
"deduplication_info": "Deduplizierungsinformationen",
|
"deduplication_info": "Deduplizierungsinformationen",
|
||||||
"deduplication_info_description": "Für die automatische Datei-Vorauswahl und das Deduplizieren aller Dateien berücksichtigen wir:",
|
"deduplication_info_description": "Für die automatische Datei-Vorauswahl und das Deduplizieren aller Dateien berücksichtigen wir:",
|
||||||
|
"default_locale": "Standard-Sprache",
|
||||||
|
"default_locale_description": "Datumsangaben und Zahlen basierend auf dem Gebietsschema des Browsers formatieren",
|
||||||
"delete": "Löschen",
|
"delete": "Löschen",
|
||||||
"delete_action_confirmation_message": "Bist du sicher, dass du dieses Objekt löschen willst? Diese Aktion wird das Objekt in den Papierkorb des Servers verschieben und fragen, ob du es lokal löschen willst",
|
"delete_action_confirmation_message": "Bist du sicher, dass du dieses Objekt löschen willst? Diese Aktion wird das Objekt in den Papierkorb des Servers verschieben und fragen, ob du es lokal löschen willst",
|
||||||
"delete_action_prompt": "{count} gelöscht",
|
"delete_action_prompt": "{count} gelöscht",
|
||||||
@@ -1007,8 +1004,6 @@
|
|||||||
"editor_edits_applied_success": "Änderungen erfolgreich angewendet",
|
"editor_edits_applied_success": "Änderungen erfolgreich angewendet",
|
||||||
"editor_flip_horizontal": "Horizontal spiegeln",
|
"editor_flip_horizontal": "Horizontal spiegeln",
|
||||||
"editor_flip_vertical": "Vertikal spiegeln",
|
"editor_flip_vertical": "Vertikal spiegeln",
|
||||||
"editor_handle_corner": "{corner, select, top_left {Oben links} top_right {Oben rechts} bottom_left {Unten links} bottom_right {Unten rechts} other {A}} Eckgriff",
|
|
||||||
"editor_handle_edge": "{edge, select, top {Oben} bottom {Unten} left {Links} right {Rechts} other {Ein}} Kantenanfasser",
|
|
||||||
"editor_orientation": "Ausrichtung",
|
"editor_orientation": "Ausrichtung",
|
||||||
"editor_reset_all_changes": "Änderungen zurücksetzen",
|
"editor_reset_all_changes": "Änderungen zurücksetzen",
|
||||||
"editor_rotate_left": "Um 90° gegen den Uhrzeigersinn drehen",
|
"editor_rotate_left": "Um 90° gegen den Uhrzeigersinn drehen",
|
||||||
@@ -1074,7 +1069,6 @@
|
|||||||
"failed_to_update_notification_status": "Benachrichtigungsstatus aktualisieren fehlgeschlagen",
|
"failed_to_update_notification_status": "Benachrichtigungsstatus aktualisieren fehlgeschlagen",
|
||||||
"incorrect_email_or_password": "Ungültige E-Mail oder Passwort",
|
"incorrect_email_or_password": "Ungültige E-Mail oder Passwort",
|
||||||
"library_folder_already_exists": "Dieser Importpfad existiert bereits.",
|
"library_folder_already_exists": "Dieser Importpfad existiert bereits.",
|
||||||
"page_not_found": "Seite nicht gefunden",
|
|
||||||
"paths_validation_failed": "{paths, plural, one {# Pfad konnte} other {# Pfade konnten}} nicht validiert werden",
|
"paths_validation_failed": "{paths, plural, one {# Pfad konnte} other {# Pfade konnten}} nicht validiert werden",
|
||||||
"profile_picture_transparent_pixels": "Profilbilder dürfen keine transparenten Pixel haben. Bitte zoome heran und/oder verschiebe das Bild.",
|
"profile_picture_transparent_pixels": "Profilbilder dürfen keine transparenten Pixel haben. Bitte zoome heran und/oder verschiebe das Bild.",
|
||||||
"quota_higher_than_disk_size": "Dein festgelegtes Kontingent ist größer als der verfügbare Speicher",
|
"quota_higher_than_disk_size": "Dein festgelegtes Kontingent ist größer als der verfügbare Speicher",
|
||||||
@@ -1174,7 +1168,6 @@
|
|||||||
"exif_bottom_sheet_people": "PERSONEN",
|
"exif_bottom_sheet_people": "PERSONEN",
|
||||||
"exif_bottom_sheet_person_add_person": "Namen hinzufügen",
|
"exif_bottom_sheet_person_add_person": "Namen hinzufügen",
|
||||||
"exit_slideshow": "Diashow beenden",
|
"exit_slideshow": "Diashow beenden",
|
||||||
"expand": "Erweitern",
|
|
||||||
"expand_all": "Alle aufklappen",
|
"expand_all": "Alle aufklappen",
|
||||||
"experimental_settings_new_asset_list_subtitle": "In Arbeit",
|
"experimental_settings_new_asset_list_subtitle": "In Arbeit",
|
||||||
"experimental_settings_new_asset_list_title": "Experimentelles Fotogitter aktivieren",
|
"experimental_settings_new_asset_list_title": "Experimentelles Fotogitter aktivieren",
|
||||||
@@ -1219,7 +1212,6 @@
|
|||||||
"filter_description": "Bedingungen zur Filterung der betreffenden Dateien",
|
"filter_description": "Bedingungen zur Filterung der betreffenden Dateien",
|
||||||
"filter_people": "Personen filtern",
|
"filter_people": "Personen filtern",
|
||||||
"filter_places": "Orte filtern",
|
"filter_places": "Orte filtern",
|
||||||
"filter_tags": "Tags filtern",
|
|
||||||
"filters": "Filter",
|
"filters": "Filter",
|
||||||
"find_them_fast": "Finde sie schneller mit der Suche nach Namen",
|
"find_them_fast": "Finde sie schneller mit der Suche nach Namen",
|
||||||
"first": "Erste",
|
"first": "Erste",
|
||||||
@@ -1621,7 +1613,7 @@
|
|||||||
"not_available": "N/A",
|
"not_available": "N/A",
|
||||||
"not_in_any_album": "In keinem Album",
|
"not_in_any_album": "In keinem Album",
|
||||||
"not_selected": "Nicht ausgewählt",
|
"not_selected": "Nicht ausgewählt",
|
||||||
"notes": "Hinweise",
|
"notes": "Notizen",
|
||||||
"nothing_here_yet": "Noch nichts hier",
|
"nothing_here_yet": "Noch nichts hier",
|
||||||
"notification_permission_dialog_content": "Um Benachrichtigungen zu aktivieren, navigiere zu Einstellungen und klicke \"Erlauben\".",
|
"notification_permission_dialog_content": "Um Benachrichtigungen zu aktivieren, navigiere zu Einstellungen und klicke \"Erlauben\".",
|
||||||
"notification_permission_list_tile_content": "Erlaube Berechtigung für Benachrichtigungen.",
|
"notification_permission_list_tile_content": "Erlaube Berechtigung für Benachrichtigungen.",
|
||||||
@@ -1650,8 +1642,6 @@
|
|||||||
"online": "Online",
|
"online": "Online",
|
||||||
"only_favorites": "Nur Favoriten",
|
"only_favorites": "Nur Favoriten",
|
||||||
"open": "Öffnen",
|
"open": "Öffnen",
|
||||||
"open_calendar": "Kalender öffnen",
|
|
||||||
"open_in_browser": "Im Browser öffnen",
|
|
||||||
"open_in_map_view": "In Kartenansicht öffnen",
|
"open_in_map_view": "In Kartenansicht öffnen",
|
||||||
"open_in_openstreetmap": "In OpenStreetMap öffnen",
|
"open_in_openstreetmap": "In OpenStreetMap öffnen",
|
||||||
"open_the_search_filters": "Die Suchfilter öffnen",
|
"open_the_search_filters": "Die Suchfilter öffnen",
|
||||||
@@ -1720,8 +1710,8 @@
|
|||||||
"permission_onboarding_permission_limited": "Berechtigungen unzureichend. Um Immich das Sichern von ganzen Sammlungen zu ermöglichen, muss der Zugriff auf alle Fotos und Videos in den Einstellungen erlaubt werden.",
|
"permission_onboarding_permission_limited": "Berechtigungen unzureichend. Um Immich das Sichern von ganzen Sammlungen zu ermöglichen, muss der Zugriff auf alle Fotos und Videos in den Einstellungen erlaubt werden.",
|
||||||
"permission_onboarding_request": "Immich benötigt Berechtigung um auf deine Fotos und Videos zuzugreifen.",
|
"permission_onboarding_request": "Immich benötigt Berechtigung um auf deine Fotos und Videos zuzugreifen.",
|
||||||
"person": "Person",
|
"person": "Person",
|
||||||
"person_age_months": "{months, plural, one {# Monat} other {# Monate}} alt",
|
"person_age_months": "{months, plural, one {# month} other {# months}} alt",
|
||||||
"person_age_year_months": "1 Jahr, {months, plural, one {# Monat} other {# Monate}} alt",
|
"person_age_year_months": "1 Jahr, {months, plural, one {# month} other {# months}} alt",
|
||||||
"person_age_years": "{years, plural, one {# Jahr} other {# Jahre}} alt",
|
"person_age_years": "{years, plural, one {# Jahr} other {# Jahre}} alt",
|
||||||
"person_birthdate": "Geboren am {date}",
|
"person_birthdate": "Geboren am {date}",
|
||||||
"person_hidden": "{name}{hidden, select, true { (verborgen)} other {}}",
|
"person_hidden": "{name}{hidden, select, true { (verborgen)} other {}}",
|
||||||
@@ -1811,8 +1801,9 @@
|
|||||||
"rate_asset": "Datei bewerten",
|
"rate_asset": "Datei bewerten",
|
||||||
"rating": "Bewertung",
|
"rating": "Bewertung",
|
||||||
"rating_clear": "Bewertung löschen",
|
"rating_clear": "Bewertung löschen",
|
||||||
"rating_count": "{count, plural, =0 {Unbewertet} one {# Stern} other {# Sterne}}",
|
"rating_count": "{count, plural, one {# Stern} other {# Sterne}}",
|
||||||
"rating_description": "Stellt die EXIF-Bewertung im Informationsbereich dar",
|
"rating_description": "Stellt die EXIF-Bewertung im Informationsbereich dar",
|
||||||
|
"rating_set": "Mit {rating, plural, one {# Stern} other {# Sternen}} bewertet",
|
||||||
"reaction_options": "Reaktionsmöglichkeiten",
|
"reaction_options": "Reaktionsmöglichkeiten",
|
||||||
"read_changelog": "Changelog lesen",
|
"read_changelog": "Changelog lesen",
|
||||||
"readonly_mode_disabled": "Schreibgeschützter Modus deaktiviert",
|
"readonly_mode_disabled": "Schreibgeschützter Modus deaktiviert",
|
||||||
@@ -1884,10 +1875,7 @@
|
|||||||
"reset_pin_code_success": "PIN-Code erfolgreich zurückgesetzt",
|
"reset_pin_code_success": "PIN-Code erfolgreich zurückgesetzt",
|
||||||
"reset_pin_code_with_password": "Mit deinem Passwort kannst du jederzeit deinen PIN-Code zurücksetzen",
|
"reset_pin_code_with_password": "Mit deinem Passwort kannst du jederzeit deinen PIN-Code zurücksetzen",
|
||||||
"reset_sqlite": "SQLite Datenbank zurücksetzen",
|
"reset_sqlite": "SQLite Datenbank zurücksetzen",
|
||||||
"reset_sqlite_clear_app_data": "Daten löschen",
|
"reset_sqlite_confirmation": "Bist du sicher, dass du die SQLite-Datenbank zurücksetzen willst? Du musst dich ab- und wieder anmelden, um die Daten neu zu synchronisieren",
|
||||||
"reset_sqlite_confirmation": "Bist du sicher, dass du die SQLite-Datenbank zurücksetzen willst? Es werden alle Einstellungen zurückgesetzt und du wirst abgemeldet.",
|
|
||||||
"reset_sqlite_confirmation_note": "Warnung: Du musst nach dem Zurücksetzten die App neu starten.",
|
|
||||||
"reset_sqlite_done": "Die Anwendungsdaten wurden gelöscht. Bitte starte Immich neu um dich erneut anzumelden.",
|
|
||||||
"reset_sqlite_success": "SQLite Datenbank erfolgreich zurückgesetzt",
|
"reset_sqlite_success": "SQLite Datenbank erfolgreich zurückgesetzt",
|
||||||
"reset_to_default": "Auf Standard zurücksetzen",
|
"reset_to_default": "Auf Standard zurücksetzen",
|
||||||
"resolution": "Auflösung",
|
"resolution": "Auflösung",
|
||||||
@@ -1915,7 +1903,6 @@
|
|||||||
"saved_settings": "Einstellungen gespeichert",
|
"saved_settings": "Einstellungen gespeichert",
|
||||||
"say_something": "Etwas sagen",
|
"say_something": "Etwas sagen",
|
||||||
"scaffold_body_error_occurred": "Ein Fehler ist aufgetreten",
|
"scaffold_body_error_occurred": "Ein Fehler ist aufgetreten",
|
||||||
"scaffold_body_error_unrecoverable": "Es ist ein nicht behebbarer Fehler aufgetreten. Bitte teilen Sie uns den Fehler und den Stacktrace auf Discord oder GitHub mit, damit wir Ihnen helfen können. Falls nötig, können Sie unten die App-Daten löschen.",
|
|
||||||
"scan": "Scannen",
|
"scan": "Scannen",
|
||||||
"scan_all_libraries": "Alle Bibliotheken scannen",
|
"scan_all_libraries": "Alle Bibliotheken scannen",
|
||||||
"scan_library": "Scannen",
|
"scan_library": "Scannen",
|
||||||
@@ -1951,7 +1938,6 @@
|
|||||||
"search_filter_ocr": "Suche per OCR",
|
"search_filter_ocr": "Suche per OCR",
|
||||||
"search_filter_people_title": "Personen auswählen",
|
"search_filter_people_title": "Personen auswählen",
|
||||||
"search_filter_star_rating": "Sternebewertung",
|
"search_filter_star_rating": "Sternebewertung",
|
||||||
"search_filter_tags_title": "Tags auswählen",
|
|
||||||
"search_for": "Suche nach",
|
"search_for": "Suche nach",
|
||||||
"search_for_existing_person": "Suche nach vorhandener Person",
|
"search_for_existing_person": "Suche nach vorhandener Person",
|
||||||
"search_no_more_result": "Keine weiteren Ergebnisse",
|
"search_no_more_result": "Keine weiteren Ergebnisse",
|
||||||
@@ -2031,9 +2017,6 @@
|
|||||||
"set_profile_picture": "Profilbild einstellen",
|
"set_profile_picture": "Profilbild einstellen",
|
||||||
"set_slideshow_to_fullscreen": "Diashow auf Vollbild einstellen",
|
"set_slideshow_to_fullscreen": "Diashow auf Vollbild einstellen",
|
||||||
"set_stack_primary_asset": "Als primäre Datei festlegen",
|
"set_stack_primary_asset": "Als primäre Datei festlegen",
|
||||||
"setting_image_navigation_enable_subtitle": "Aktivieren, um durch Tippen auf den linksäußeren/rechtsäußeren Bildschirmrand zum vorherigen/nächsten Bild zu navigieren.",
|
|
||||||
"setting_image_navigation_enable_title": "Tippen zum Navigieren",
|
|
||||||
"setting_image_navigation_title": "Bild Navigation",
|
|
||||||
"setting_image_viewer_help": "Der Detailbildbetrachter lädt zuerst ein (kleines) Vorschaubild, dann ein Vorschaubild in mittlerer Größe (falls aktiviert) und schließlich das Original (falls aktiviert).",
|
"setting_image_viewer_help": "Der Detailbildbetrachter lädt zuerst ein (kleines) Vorschaubild, dann ein Vorschaubild in mittlerer Größe (falls aktiviert) und schließlich das Original (falls aktiviert).",
|
||||||
"setting_image_viewer_original_subtitle": "Aktivieren, um das Originalbild in voller Auflösung (groß!) zu laden. Deaktivieren, um den Datenverbrauch zu reduzieren (sowohl im Netzwerk als auch im Gerätespeicher).",
|
"setting_image_viewer_original_subtitle": "Aktivieren, um das Originalbild in voller Auflösung (groß!) zu laden. Deaktivieren, um den Datenverbrauch zu reduzieren (sowohl im Netzwerk als auch im Gerätespeicher).",
|
||||||
"setting_image_viewer_original_title": "Original laden",
|
"setting_image_viewer_original_title": "Original laden",
|
||||||
@@ -2200,7 +2183,6 @@
|
|||||||
"support": "Unterstützung",
|
"support": "Unterstützung",
|
||||||
"support_and_feedback": "Unterstützung & Feedback",
|
"support_and_feedback": "Unterstützung & Feedback",
|
||||||
"support_third_party_description": "Deine Immich-Installation wurde von einem Drittanbieter zusammengestellt. Probleme, die bei dir auftreten, können durch dieses Paket verursacht werden. Bitte wende dich daher in erster Linie an diesen Anbieter, indem du die unten stehenden Links verwendest.",
|
"support_third_party_description": "Deine Immich-Installation wurde von einem Drittanbieter zusammengestellt. Probleme, die bei dir auftreten, können durch dieses Paket verursacht werden. Bitte wende dich daher in erster Linie an diesen Anbieter, indem du die unten stehenden Links verwendest.",
|
||||||
"supporter": "Unterstützer",
|
|
||||||
"swap_merge_direction": "Vertauschen der Zusammenführungsrichtung",
|
"swap_merge_direction": "Vertauschen der Zusammenführungsrichtung",
|
||||||
"sync": "Synchronisieren",
|
"sync": "Synchronisieren",
|
||||||
"sync_albums": "Alben synchronisieren",
|
"sync_albums": "Alben synchronisieren",
|
||||||
@@ -2312,7 +2294,6 @@
|
|||||||
"unstack_action_prompt": "{count} entstapelt",
|
"unstack_action_prompt": "{count} entstapelt",
|
||||||
"unstacked_assets_count": "{count, plural, one {# Datei} other {# Dateien}} entstapelt",
|
"unstacked_assets_count": "{count, plural, one {# Datei} other {# Dateien}} entstapelt",
|
||||||
"unsupported_field_type": "Nicht unterstützter Feldtyp",
|
"unsupported_field_type": "Nicht unterstützter Feldtyp",
|
||||||
"unsupported_file_type": "Die Datei {file} kann nicht hochgeladen werden, da der Dateityp {type} nicht unterstützt wird.",
|
|
||||||
"untagged": "Ohne Tag",
|
"untagged": "Ohne Tag",
|
||||||
"untitled_workflow": "Unbenannter Workflow",
|
"untitled_workflow": "Unbenannter Workflow",
|
||||||
"up_next": "Weiter",
|
"up_next": "Weiter",
|
||||||
@@ -2339,8 +2320,6 @@
|
|||||||
"url": "URL",
|
"url": "URL",
|
||||||
"usage": "Verwendung",
|
"usage": "Verwendung",
|
||||||
"use_biometric": "Biometrie verwenden",
|
"use_biometric": "Biometrie verwenden",
|
||||||
"use_browser_locale": "Benutze lokalen Browser",
|
|
||||||
"use_browser_locale_description": "Datum, Uhrzeit und Zahlen werden entsprechend den Einstellungen Ihres Browsers formatiert",
|
|
||||||
"use_current_connection": "Aktuelle Verbindung verwenden",
|
"use_current_connection": "Aktuelle Verbindung verwenden",
|
||||||
"use_custom_date_range": "Stattdessen einen benutzerdefinierten Datumsbereich verwenden",
|
"use_custom_date_range": "Stattdessen einen benutzerdefinierten Datumsbereich verwenden",
|
||||||
"user": "Nutzer",
|
"user": "Nutzer",
|
||||||
|
|||||||
+12
-40
@@ -75,58 +75,30 @@
|
|||||||
"confirm_reprocess_all_faces": "Bisch sicher, dass du alli Gsichter neu verarbeite wotsch? Däbii werde au benannti Persone glöscht.",
|
"confirm_reprocess_all_faces": "Bisch sicher, dass du alli Gsichter neu verarbeite wotsch? Däbii werde au benannti Persone glöscht.",
|
||||||
"confirm_user_password_reset": "Bisch sicher, dass du s Passwort für {user} möchtisch zruggsetze?",
|
"confirm_user_password_reset": "Bisch sicher, dass du s Passwort für {user} möchtisch zruggsetze?",
|
||||||
"confirm_user_pin_code_reset": "Bisch sicher, dass du de PIN-Code vo {user} möchtisch zruggsetze?",
|
"confirm_user_pin_code_reset": "Bisch sicher, dass du de PIN-Code vo {user} möchtisch zruggsetze?",
|
||||||
"copy_config_to_clipboard_description": "Kopier die aktuelli Systemkonfiguration als JSON-Objekt i d'Zwüschenablage",
|
"copy_config_to_clipboard_description": "Kopiere die aktuelle Systemkonfiguration als JSON-Objekt in die Zwischenablage",
|
||||||
"create_job": "Uufgabe erstelle",
|
"create_job": "Uufgabe erstelle",
|
||||||
"cron_expression": "Cron-Ziitagabe",
|
"cron_expression": "Cron-Ziitagabe",
|
||||||
"cron_expression_description": "Setz s Scanintervall im Cron-Format. Hilf mit däm Format bütet z. B. der <link>Crontab Guru</link>",
|
"cron_expression_description": "Setz s Scanintervall im Cron-Format. Hilf mit däm Format bütet z. B. der <link>Crontab Guru</link>",
|
||||||
"cron_expression_presets": "Vorlage für Cron-Uusdruck",
|
"cron_expression_presets": "Vorlage für Cron-Uusdruck",
|
||||||
"disable_login": "Login deaktiviere",
|
"disable_login": "Login deaktiviere",
|
||||||
"duplicate_detection_job_description": "Die Uufgab füehrt s maschinelle Lärne für jedi Datei us, zum Duplikat finde. Die Uufgabe berueht uf de intelligente Suechi",
|
"duplicate_detection_job_description": "Die Uufgab füehrt s maschinelle Lärne für jedi Datei us, zum Duplikat finde. Die Uufgabe berueht uf de intelligente Suechi",
|
||||||
"exclusion_pattern_description": "Mit Uusschlussmuster chönnd Dateie und Ordner bim Scanne vo dinere Bibliothek ignoriert wärde. Das isch nützlich, wenn du Ordner häsch, wo Dateien drin händ, wo d nöd wotsch importiere, wie z. B. RAW-Dateie.",
|
"exclusion_pattern_description": "Mit Ausschlussmustern können Dateien und Ordner beim Scannen Ihrer Bibliothek ignoriert werden. Dies ist nützlich, wenn du Ordner hast, die Dateien enthalten, die du nicht importieren möchtest, wie z. B. RAW-Dateien.",
|
||||||
"export_config_as_json_description": "Lad die aktuelli Systemkonfiguration als JSON-Datei abe",
|
"export_config_as_json_description": "Lade die aktuelle Systemkonfiguration als JSON-Datei herunter",
|
||||||
"external_libraries_page_description": "Externi Bibliothekssiite für Administratore",
|
"external_libraries_page_description": "Externe Bibliotheksseite für Administratoren",
|
||||||
"face_detection": "Gsichtserkennig",
|
"face_detection": "Gsichtserkennig",
|
||||||
"face_detection_description": "Die Uufgab erfasst Gsichter in Dateien dur maschinells Lerne. Bi Video wird nur d'Miniaturasicht brucht. „Aktualisiere“ verarbeitet all Dateie neu. „Zruggsetze“ setzt au no all Gsichter zrugg. „Fehlendi“ stellt nur nöd verarbeiteti Dateie in d'Warteschlange. Erfassti Gsichter wärdet zur Gsichtsidentifizierig in diWarteschlange gstellt, damit sie i bestehendi oder neui Persone z'gruppiere.",
|
"face_detection_description": "Diese Aufgabe erfasst Gesichter in Dateien mittels maschinellen Lernens. Bei Videos wird nur die Miniaturansicht verwendet. „Aktualisieren“ verarbeitet alle Dateien neu. „Zurücksetzen“ setzt zusätzlich alle Gesichter zurück. „Fehlende“ stellt nur nicht verarbeitete Dateien in die Warteschlange. Erfasste Gesichter werden zur Gesichtsidentifizierung in die Warteschlange gestellt, um sie in bestehende oder neue Personen zu gruppieren.",
|
||||||
"facial_recognition_job_description": "Die Uufgabe gruppiert im Anschluss an d'Gsichtserfassig die erfasste Gsichter zu Persone. „Zruggsetze“ gruppiert alli Gsichter neu und mit „Fehlendi“ werdet Gsichter ohni Zuordnig i d'Warteschlange gstellt.",
|
"facial_recognition_job_description": "Diese Aufgabe gruppiert im Anschluss an die Gesichtserfassung die erfassten Gesichter zu Personen. „Zurücksetzen“ gruppiert alle Gesichter neu, während „Fehlende“ Gesichter ohne Zuordnung in die Warteschlange stellt.",
|
||||||
"failed_job_command": "Befehl {command} hät für d'Uufgabe {job} nöd funktioniert",
|
"failed_job_command": "Befehl {command} ist für Aufgabe {job} fehlgeschlagen",
|
||||||
"force_delete_user_warning": "WARNIG: Die Aktion löscht dä Benutzer und all sini Dateie. Das chann nöd rückgängig gmacht wärde und d'Dateie chönnd nöd wiederhergstellt wärde.",
|
"force_delete_user_warning": "WARNUNG: Diese Aktion löscht sofort den Benutzer und all seine Dateien. Dies kann nicht rückgängig gemacht werden und die Dateien können nicht wiederhergestellt werden.",
|
||||||
"image_format": "Format",
|
"image_format": "Format",
|
||||||
"image_format_description": "WebP erzeugt chlineri Dateie we JPEG, isch aber es bitz langsamer i de Erstellig.",
|
"image_format_description": "WebP erzeugt kleinere Dateien als JPEG, ist aber etwas langsamer in der Erstellung.",
|
||||||
"image_fullsize_description": "Hochuflösends Bild mit glöschte Metadate, wo bim Zoome brucht wird",
|
"image_fullsize_description": "Hochauflösendes Bild mit entfernten Metadaten, das beim Zoomen verwendet wird",
|
||||||
"image_fullsize_enabled": "Hochuflösendi Vorschaubilder aktiviere",
|
"image_fullsize_enabled": "Hochauflösende Vorschaubilder aktivieren",
|
||||||
"image_fullsize_enabled_description": "Generiere hochauflösende Vorschaubilder in Originalauflösung für nicht web-kompatibel Formate. Wenn \"Eingebettete Vorschau bevorzugen\" aktiviert ist, werden eingebettete Vorschaubilder direkt verwendet. Hat keinen Einfluss auf web-kompatible Formate wie JPEG.",
|
"image_fullsize_enabled_description": "Generiere hochauflösende Vorschaubilder in Originalauflösung für nicht web-kompatibel Formate. Wenn \"Eingebettete Vorschau bevorzugen\" aktiviert ist, werden eingebettete Vorschaubilder direkt verwendet. Hat keinen Einfluss auf web-kompatible Formate wie JPEG.",
|
||||||
"image_fullsize_quality_description": "Qualität der hochauflösenden Vorschaubilder von 1-100. Höher ist besser, erzeugt aber grössere Dateien.",
|
"image_fullsize_quality_description": "Qualität der hochauflösenden Vorschaubilder von 1-100. Höher ist besser, erzeugt aber grössere Dateien.",
|
||||||
"image_fullsize_title": "Hochauflösende Vorschaueinstellungen",
|
"image_fullsize_title": "Hochauflösende Vorschaueinstellungen",
|
||||||
"image_prefer_embedded_preview": "Eingebettete Vorschau bevorzugen",
|
"image_prefer_embedded_preview": "Eingebettete Vorschau bevorzugen",
|
||||||
"image_prefer_embedded_preview_setting_description": "Verwende eingebettete Vorschaubilder in RAW-Fotos als Grundlage für die Bildverarbeitung, sofern diese zur Verfügung stehen. Dies kann bei einigen Bildern genauere Farben erzeugen, allerdings ist die Qualität der Vorschau kameraabhängig und das Bild kann mehr Kompressionsartefakte aufweisen.",
|
"image_prefer_embedded_preview_setting_description": "Verwende eingebettete Vorschaubilder in RAW-Fotos als Grundlage für die Bildverarbeitung, sofern diese zur Verfügung stehen. Dies kann bei einigen Bildern genauere Farben erzeugen, allerdings ist die Qualität der Vorschau kameraabhängig und das Bild kann mehr Kompressionsartefakte aufweisen.",
|
||||||
"image_prefer_wide_gamut": "Breites Spektrum bevorzugen",
|
"image_prefer_wide_gamut": "Breites Spektrum bevorzugen"
|
||||||
"image_prefer_wide_gamut_setting_description": "Bruuch Display P3 für Vorschaubildli. Das erhaltet d'Vitalität von Bildli mit grossem Farbruum besser. Uf alte Grät mit alte Browser chann das aber andersch uusgseh. sRGB-Bildli wärdet als sRGB bhalte zum Farbänderige vermiide.",
|
|
||||||
"image_preview_description": "Mittelgrossi Bildli ohni Metadate, bruuchts für Einzelaasichte und fürs maschinelle Lärne",
|
|
||||||
"image_preview_quality_description": "Vorschauqualität vo 1-100. Höcher isch besser, git aber grösseri Dateie und chan d'App Schwuppdizität reduziere. Z tüffi Wert chönnd s maschinelle Lärne beiträchtige.",
|
|
||||||
"image_preview_title": "Vorschauiistellige",
|
|
||||||
"image_progressive": "Fortlaufend",
|
|
||||||
"image_progressive_description": "Codier fortlaufendi JPEG-Bildi: Sie wärdet bim Lade aufbauend aazeiget. Das hät kei Würkig uf WebP-Bildi.",
|
|
||||||
"image_quality": "Qualität",
|
|
||||||
"image_resolution": "Uuflösig",
|
|
||||||
"image_resolution_description": "Höcheri Uuflösig erhaltet meh Detail, gaht aber länger zum codiere, macht grösseri Dateie und chan d'App Schuppdizität reduziere.",
|
|
||||||
"image_settings": "Bild-Iistellige",
|
|
||||||
"image_settings_description": "Qualität und Uuflösig von erstellte Bildli verwalte",
|
|
||||||
"image_thumbnail_description": "Chlini Vorschaubildli ohni Metadate, bruuchts für Aasichte mit Gruppe vo Föteli wie i de Hauptziitachse",
|
|
||||||
"image_thumbnail_quality_description": "Vorschauqualität vo 1-100. Höcher isch besser, git aber grösseri Dateie und chan d'App Schwuppdizität reduziere.",
|
|
||||||
"image_thumbnail_title": "Iistellige für Vorschaubildli",
|
|
||||||
"import_config_from_json_description": "Systemkonfiguration importiere durs Ufelade vonere JSON-Datei",
|
|
||||||
"job_concurrency": "{job} Näbeläufigkeit",
|
|
||||||
"job_created": "Uufgab erstellt",
|
|
||||||
"job_not_concurrency_safe": "Die Uufgabe ist nöd für Paralleluusführig gmacht.",
|
|
||||||
"job_settings": "Uufgabe-Iistellige",
|
|
||||||
"job_settings_description": "Uufgabe-Näbeläufigkeit verwalte",
|
|
||||||
"jobs_over_time": "Uufgabe in ziitliche Verlauf",
|
|
||||||
"library_created": "Bibliothek erstellt: {library}",
|
|
||||||
"library_deleted": "Bibliothek glöscht",
|
|
||||||
"library_details": "Bibliotheks-Details",
|
|
||||||
"library_folder_description": "Gib en Order zum Importiere a. Dä Order mit sine Underordner wird nach Bildli und Videos durchsucht.",
|
|
||||||
"library_remove_exclusion_pattern_prompt": "Bisch sicher, dass das Uuschluss-Muster wotsch lösche?",
|
|
||||||
"library_remove_folder_prompt": "Bisch sicher, dass dä Import-Ordner wotsch lösche?",
|
|
||||||
"library_scanning": "Regelmässigi Überprüefig"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-32
@@ -61,7 +61,7 @@
|
|||||||
"backup_onboarding_1_description": "αντίγραφο ασφαλείας εκτός εγκατάστασης, είτε στο cloud είτε σε άλλη φυσική τοποθεσία.",
|
"backup_onboarding_1_description": "αντίγραφο ασφαλείας εκτός εγκατάστασης, είτε στο cloud είτε σε άλλη φυσική τοποθεσία.",
|
||||||
"backup_onboarding_2_description": "τοπικά αντίγραφα σε διαφορετικές συσκευές. Αυτό περιλαμβάνει τα κύρια αρχεία και ένα τοπικό αντίγραφο ασφαλείας αυτών των αρχείων.",
|
"backup_onboarding_2_description": "τοπικά αντίγραφα σε διαφορετικές συσκευές. Αυτό περιλαμβάνει τα κύρια αρχεία και ένα τοπικό αντίγραφο ασφαλείας αυτών των αρχείων.",
|
||||||
"backup_onboarding_3_description": "συνολικά αντίγραφα των δεδομένων σας, συμπεριλαμβανομένων των αρχικών αρχείων. Αυτό περιλαμβάνει 1 αντίγραφο εκτός εγκατάστασης (offsite) και 2 τοπικά αντίγραφα.",
|
"backup_onboarding_3_description": "συνολικά αντίγραφα των δεδομένων σας, συμπεριλαμβανομένων των αρχικών αρχείων. Αυτό περιλαμβάνει 1 αντίγραφο εκτός εγκατάστασης (offsite) και 2 τοπικά αντίγραφα.",
|
||||||
"backup_onboarding_description": "Συνιστάται η <backblaze-link>3-2-1 στρατηγική αντιγράφων ασφαλείας</backblaze-link> για την προστασία των δεδομένων σας. Θα πρέπει να διατηρείτε αντίγραφα των ανεβασμένων φωτογραφιών/βίντεό σας, καθώς και της βάσης δεδομένων του Immich, για μια ολοκληρωμένη λύση backup.",
|
"backup_onboarding_description": "Συνιστάται η στρατηγική <backblaze-link>αντιγράφων ασφαλείας 3-2-1</backblaze-link> για την προστασία των δεδομένων σας. Θα πρέπει να διατηρείτε αντίγραφα των ανεβασμένων φωτογραφιών/βίντεό σας, καθώς και της βάσης δεδομένων του Immich, για μια ολοκληρωμένη λύση backup.",
|
||||||
"backup_onboarding_footer": "Για περισσότερες πληροφορίες σχετικά με τη δημιουργία αντιγράφων ασφαλείας του Immich, ανατρέξε στον <link>οδηγό τεκμηρίωσης</link>.",
|
"backup_onboarding_footer": "Για περισσότερες πληροφορίες σχετικά με τη δημιουργία αντιγράφων ασφαλείας του Immich, ανατρέξε στον <link>οδηγό τεκμηρίωσης</link>.",
|
||||||
"backup_onboarding_parts_title": "Ένα αντίγραφο ασφαλείας τύπου 3-2-1 περιλαμβάνει:",
|
"backup_onboarding_parts_title": "Ένα αντίγραφο ασφαλείας τύπου 3-2-1 περιλαμβάνει:",
|
||||||
"backup_onboarding_title": "Αντίγραφα ασφαλείας",
|
"backup_onboarding_title": "Αντίγραφα ασφαλείας",
|
||||||
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "Αναζήτηση εργασιών…",
|
"search_jobs": "Αναζήτηση εργασιών…",
|
||||||
"send_welcome_email": "Αποστολή email καλωσορίσματος",
|
"send_welcome_email": "Αποστολή email καλωσορίσματος",
|
||||||
"server_external_domain_settings": "Εξωτερική διεύθυνση τομέα",
|
"server_external_domain_settings": "Εξωτερική διεύθυνση τομέα",
|
||||||
"server_external_domain_settings_description": "Η διεύθυνση που χρησιμοποιείται για εξωτερικούς συνδέσμους",
|
"server_external_domain_settings_description": "Διεύθυνση τομέα για δημόσιους κοινούς συνδέσμους, περιλαμβανομένου του http(s)://",
|
||||||
"server_public_users": "Δημόσιοι Χρήστες",
|
"server_public_users": "Δημόσιοι Χρήστες",
|
||||||
"server_public_users_description": "Όλοι οι χρήστες (όνομα και email) εμφανίζονται κατά την προσθήκη ενός χρήστη σε κοινόχρηστα άλμπουμ. Όταν αυτή η επιλογή είναι απενεργοποιημένη, η λίστα χρηστών θα είναι διαθέσιμη μόνο στους διαχειριστές.",
|
"server_public_users_description": "Όλοι οι χρήστες (όνομα και email) εμφανίζονται κατά την προσθήκη ενός χρήστη σε κοινόχρηστα άλμπουμ. Όταν αυτή η επιλογή είναι απενεργοποιημένη, η λίστα χρηστών θα είναι διαθέσιμη μόνο στους διαχειριστές.",
|
||||||
"server_settings": "Ρυθμίσεις διακομιστή",
|
"server_settings": "Ρυθμίσεις διακομιστή",
|
||||||
@@ -372,7 +372,7 @@
|
|||||||
"transcoding_audio_codec": "Κωδικοποιητής ήχου",
|
"transcoding_audio_codec": "Κωδικοποιητής ήχου",
|
||||||
"transcoding_audio_codec_description": "Το Opus είναι η επιλογή για την υψηλότερη ποιότητα, αλλά έχει χαμηλότερη συμβατότητα με παλιές συσκευές ή λογισμικό.",
|
"transcoding_audio_codec_description": "Το Opus είναι η επιλογή για την υψηλότερη ποιότητα, αλλά έχει χαμηλότερη συμβατότητα με παλιές συσκευές ή λογισμικό.",
|
||||||
"transcoding_bitrate_description": "Βίντεο με ρυθμό μετάδοσης μεγαλύτερο από το μέγιστο ή που δεν είναι σε αποδεκτή μορφή",
|
"transcoding_bitrate_description": "Βίντεο με ρυθμό μετάδοσης μεγαλύτερο από το μέγιστο ή που δεν είναι σε αποδεκτή μορφή",
|
||||||
"transcoding_codecs_learn_more": "Για να μάθετε περισσότερα για την ορολογία που χρησιμοποιείται εδώ, ανατρέξτε στην τεκμηρίωση του FFmpeg για τους κωδικοποιητές <h264-link>H.264 codec</h264-link>, <hevc-link>HEVC codec</hevc-link> και <vp9-link>VP9 codec</vp9-link>.",
|
"transcoding_codecs_learn_more": "Για να μάθετε περισσότερα για την ορολογία που χρησιμοποιείται εδώ, ανατρέξτε στην τεκμηρίωση του FFmpeg για τους κωδικοποιητές <h264-link>H.264</h264-link>, <hevc-link>HEVC</hevc-link> και <vp9-link>VP9</vp9-link>.",
|
||||||
"transcoding_constant_quality_mode": "Λειτουργία σταθερής ποιότητας",
|
"transcoding_constant_quality_mode": "Λειτουργία σταθερής ποιότητας",
|
||||||
"transcoding_constant_quality_mode_description": "Το ICQ είναι καλύτερο από το CQP, αλλά ορισμένες συσκευές επιτάχυνσης υλικού δεν υποστηρίζουν αυτήν τη λειτουργία. Η ρύθμιση αυτής της επιλογής θα προτιμήσει την καθορισμένη λειτουργία κατά τη χρήση κωδικοποίησης βάσει ποιότητας. Αγνοείται από το NVENC, καθώς δεν υποστηρίζει το ICQ.",
|
"transcoding_constant_quality_mode_description": "Το ICQ είναι καλύτερο από το CQP, αλλά ορισμένες συσκευές επιτάχυνσης υλικού δεν υποστηρίζουν αυτήν τη λειτουργία. Η ρύθμιση αυτής της επιλογής θα προτιμήσει την καθορισμένη λειτουργία κατά τη χρήση κωδικοποίησης βάσει ποιότητας. Αγνοείται από το NVENC, καθώς δεν υποστηρίζει το ICQ.",
|
||||||
"transcoding_constant_rate_factor": "Σταθερός παράγοντας ρυθμού (-crf)",
|
"transcoding_constant_rate_factor": "Σταθερός παράγοντας ρυθμού (-crf)",
|
||||||
@@ -411,7 +411,7 @@
|
|||||||
"transcoding_tone_mapping": "Χαρτογράφηση χρωματικών τόνων",
|
"transcoding_tone_mapping": "Χαρτογράφηση χρωματικών τόνων",
|
||||||
"transcoding_tone_mapping_description": "Προσπαθεί να διατηρήσει την εμφάνιση των HDR βίντεο όταν μετατρέπονται σε SDR. Κάθε αλγόριθμος κάνει διαφορετικές επιλογές σχετικά με τα χρώματα, τις λεπτομέρειες και τη φωτεινότητα. Ο αλγόριθμος Hable διατηρεί τις λεπτομέρειες, ο Mobius διατηρεί τα χρώματα και ο Reinhard διατηρεί τη φωτεινότητα.",
|
"transcoding_tone_mapping_description": "Προσπαθεί να διατηρήσει την εμφάνιση των HDR βίντεο όταν μετατρέπονται σε SDR. Κάθε αλγόριθμος κάνει διαφορετικές επιλογές σχετικά με τα χρώματα, τις λεπτομέρειες και τη φωτεινότητα. Ο αλγόριθμος Hable διατηρεί τις λεπτομέρειες, ο Mobius διατηρεί τα χρώματα και ο Reinhard διατηρεί τη φωτεινότητα.",
|
||||||
"transcoding_transcode_policy": "Πολιτική μετατροπής (βίντεο / ήχου)",
|
"transcoding_transcode_policy": "Πολιτική μετατροπής (βίντεο / ήχου)",
|
||||||
"transcoding_transcode_policy_description": "Πολιτική για το πότε πρέπει να γίνει μετατροπή ενός βίντεο. Τα HDR βίντεο και τα βίντεο με pixel format διαφορετικό από YUV 4:2:0 θα μετατρέπονται πάντα (εκτός αν η μετατροπή είναι απενεργοποιημένη).",
|
"transcoding_transcode_policy_description": "Πολιτική για το πότε πρέπει να μετατραπεί ένα βίντεο. Τα βίντεο HDR θα μετατρέπονται πάντα (εκτός αν η μετατροπή είναι απενεργοποιημένη).",
|
||||||
"transcoding_two_pass_encoding": "Κωδικοποίηση δύο περασμάτων",
|
"transcoding_two_pass_encoding": "Κωδικοποίηση δύο περασμάτων",
|
||||||
"transcoding_two_pass_encoding_setting_description": "Μετατροπή σε δύο περάσματα για την παραγωγή βίντεο με καλύτερη κωδικοποίηση. Όταν είναι ενεργοποιημένος ο μέγιστος ρυθμός μετάδοσης (απαραίτητος για λειτουργία με H.264 και HEVC), αυτή η λειτουργία χρησιμοποιεί ένα εύρος ρυθμού μετάδοσης βάσει του μέγιστου ρυθμού μετάδοσης και αγνοεί το CRF. Στον κωδικοποιητή VP9, το CRF μπορεί να χρησιμοποιηθεί εάν ο μέγιστος ρυθμός μετάδοσης είναι απενεργοποιημένος.",
|
"transcoding_two_pass_encoding_setting_description": "Μετατροπή σε δύο περάσματα για την παραγωγή βίντεο με καλύτερη κωδικοποίηση. Όταν είναι ενεργοποιημένος ο μέγιστος ρυθμός μετάδοσης (απαραίτητος για λειτουργία με H.264 και HEVC), αυτή η λειτουργία χρησιμοποιεί ένα εύρος ρυθμού μετάδοσης βάσει του μέγιστου ρυθμού μετάδοσης και αγνοεί το CRF. Στον κωδικοποιητή VP9, το CRF μπορεί να χρησιμοποιηθεί εάν ο μέγιστος ρυθμός μετάδοσης είναι απενεργοποιημένος.",
|
||||||
"transcoding_video_codec": "Κωδικοποιητής βίντεο",
|
"transcoding_video_codec": "Κωδικοποιητής βίντεο",
|
||||||
@@ -794,11 +794,6 @@
|
|||||||
"color": "Χρώμα",
|
"color": "Χρώμα",
|
||||||
"color_theme": "Χρώμα θέματος",
|
"color_theme": "Χρώμα θέματος",
|
||||||
"command": "Εντολή",
|
"command": "Εντολή",
|
||||||
"command_palette_prompt": "Γρήγορη εύρεση σελίδων, ενεργειών ή εντολών",
|
|
||||||
"command_palette_to_close": "για κλείσιμο",
|
|
||||||
"command_palette_to_navigate": "για είσοδο",
|
|
||||||
"command_palette_to_select": "για επιλογή",
|
|
||||||
"command_palette_to_show_all": "για προβολή όλων",
|
|
||||||
"comment_deleted": "Το σχόλιο διαγράφηκε",
|
"comment_deleted": "Το σχόλιο διαγράφηκε",
|
||||||
"comment_options": "Επιλογές σχολίου",
|
"comment_options": "Επιλογές σχολίου",
|
||||||
"comments_and_likes": "Σχόλια & αντιδράσεις (likes)",
|
"comments_and_likes": "Σχόλια & αντιδράσεις (likes)",
|
||||||
@@ -871,8 +866,8 @@
|
|||||||
"current_pin_code": "Τρέχων κωδικός PIN",
|
"current_pin_code": "Τρέχων κωδικός PIN",
|
||||||
"current_server_address": "Τρέχουσα διεύθυνση διακομιστή",
|
"current_server_address": "Τρέχουσα διεύθυνση διακομιστή",
|
||||||
"custom_date": "Προσαρμοσμένη ημερομηνία",
|
"custom_date": "Προσαρμοσμένη ημερομηνία",
|
||||||
"custom_locale": "Προσαρμοσμένη τοπική ρύθμιση",
|
"custom_locale": "Προσαρμοσμένη Τοπική Ρύθμιση",
|
||||||
"custom_locale_description": "Μορφοποιήστε τις ημερομηνίες, τους χρόνους και τους αριθμούς, σύμφωνα με την επιλεγμένη γλώσσα και περιοχή",
|
"custom_locale_description": "Μορφοποιήστε τις ημερομηνίες και τους αριθμούς, σύμφωνα με τη γλώσσα και την περιοχή",
|
||||||
"custom_url": "Προσαρμοσμένη διεύθυνση URL",
|
"custom_url": "Προσαρμοσμένη διεύθυνση URL",
|
||||||
"cutoff_date_description": "Διατήρηση φωτογραφιών από τις τελευταίες…",
|
"cutoff_date_description": "Διατήρηση φωτογραφιών από τις τελευταίες…",
|
||||||
"cutoff_day": "{count, plural, one {ημέρα} other {ημέρες}}",
|
"cutoff_day": "{count, plural, one {ημέρα} other {ημέρες}}",
|
||||||
@@ -895,6 +890,8 @@
|
|||||||
"deduplication_criteria_2": "Αριθμός δεδομένων EXIF",
|
"deduplication_criteria_2": "Αριθμός δεδομένων EXIF",
|
||||||
"deduplication_info": "Πληροφορίες Αφαίρεσης Διπλοτύπων",
|
"deduplication_info": "Πληροφορίες Αφαίρεσης Διπλοτύπων",
|
||||||
"deduplication_info_description": "Για να προεπιλέξουμε αυτόματα τα αρχεία και να αφαιρέσουμε τα διπλότυπα σε μαζική επεξεργασία, εξετάζουμε σε:",
|
"deduplication_info_description": "Για να προεπιλέξουμε αυτόματα τα αρχεία και να αφαιρέσουμε τα διπλότυπα σε μαζική επεξεργασία, εξετάζουμε σε:",
|
||||||
|
"default_locale": "Προεπιλεγμένη Τοπική Ρύθμιση",
|
||||||
|
"default_locale_description": "Μορφοποιήστε τις ημερομηνίες και τους αριθμούς με βάση την τοπική ρύθμιση του προγράμματος περιήγησής σας",
|
||||||
"delete": "Διαγραφή",
|
"delete": "Διαγραφή",
|
||||||
"delete_action_confirmation_message": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το αρχείο; Αυτή η ενέργεια θα το μετακινήσει στον κάδο απορριμμάτων του διακομιστή και θα εμφανιστεί μήνυμα για το αν θέλετε να το διαγράψετε και τοπικά",
|
"delete_action_confirmation_message": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το αρχείο; Αυτή η ενέργεια θα το μετακινήσει στον κάδο απορριμμάτων του διακομιστή και θα εμφανιστεί μήνυμα για το αν θέλετε να το διαγράψετε και τοπικά",
|
||||||
"delete_action_prompt": "{count} διαγράφηκαν",
|
"delete_action_prompt": "{count} διαγράφηκαν",
|
||||||
@@ -1007,8 +1004,6 @@
|
|||||||
"editor_edits_applied_success": "Οι αλλαγές εφαρμόστηκαν με επιτυχία",
|
"editor_edits_applied_success": "Οι αλλαγές εφαρμόστηκαν με επιτυχία",
|
||||||
"editor_flip_horizontal": "Οριζόντια αναστροφή",
|
"editor_flip_horizontal": "Οριζόντια αναστροφή",
|
||||||
"editor_flip_vertical": "Κάθετη αναστροφή",
|
"editor_flip_vertical": "Κάθετη αναστροφή",
|
||||||
"editor_handle_corner": "{corner, select, top_left {Πάνω αριστερά} top_right {Πάνω δεξιά} bottom_left {Κάτω αριστερά} bottom_right {Κάτω δεξιά} other {A}} λαβή γωνίας",
|
|
||||||
"editor_handle_edge": "{edge, select, top {Πάνω} bottom {Κάτω} left {Αριστερά} right {Δεξιά} other {Μια}} λαβή πλευράς",
|
|
||||||
"editor_orientation": "Προσανατολισμός",
|
"editor_orientation": "Προσανατολισμός",
|
||||||
"editor_reset_all_changes": "Επαναφορά αλλαγών",
|
"editor_reset_all_changes": "Επαναφορά αλλαγών",
|
||||||
"editor_rotate_left": "Περιστροφή 90° αριστερόστροφα",
|
"editor_rotate_left": "Περιστροφή 90° αριστερόστροφα",
|
||||||
@@ -1074,7 +1069,6 @@
|
|||||||
"failed_to_update_notification_status": "Αποτυχία ενημέρωσης της κατάστασης ειδοποίησης",
|
"failed_to_update_notification_status": "Αποτυχία ενημέρωσης της κατάστασης ειδοποίησης",
|
||||||
"incorrect_email_or_password": "Λανθασμένο email ή κωδικός πρόσβασης",
|
"incorrect_email_or_password": "Λανθασμένο email ή κωδικός πρόσβασης",
|
||||||
"library_folder_already_exists": "Η διαδρομή εισαγωγής υπάρχει ήδη.",
|
"library_folder_already_exists": "Η διαδρομή εισαγωγής υπάρχει ήδη.",
|
||||||
"page_not_found": "Η σελίδα δεν βρέθηκε",
|
|
||||||
"paths_validation_failed": "{paths, plural, one {# διαδρομή} other {# διαδρομές}} απέτυχαν κατά την επικύρωση",
|
"paths_validation_failed": "{paths, plural, one {# διαδρομή} other {# διαδρομές}} απέτυχαν κατά την επικύρωση",
|
||||||
"profile_picture_transparent_pixels": "Οι εικόνες προφίλ δεν μπορούν να έχουν διαφανή εικονοστοιχεία. Παρακαλώ μεγεθύνετε ή/και μετακινήστε την εικόνα.",
|
"profile_picture_transparent_pixels": "Οι εικόνες προφίλ δεν μπορούν να έχουν διαφανή εικονοστοιχεία. Παρακαλώ μεγεθύνετε ή/και μετακινήστε την εικόνα.",
|
||||||
"quota_higher_than_disk_size": "Έχετε ορίσει ένα όριο, μεγαλύτερο από το μέγεθος του δίσκου",
|
"quota_higher_than_disk_size": "Έχετε ορίσει ένα όριο, μεγαλύτερο από το μέγεθος του δίσκου",
|
||||||
@@ -1174,7 +1168,6 @@
|
|||||||
"exif_bottom_sheet_people": "ΑΤΟΜΑ",
|
"exif_bottom_sheet_people": "ΑΤΟΜΑ",
|
||||||
"exif_bottom_sheet_person_add_person": "Προσθήκη ονόματος",
|
"exif_bottom_sheet_person_add_person": "Προσθήκη ονόματος",
|
||||||
"exit_slideshow": "Έξοδος από την παρουσίαση",
|
"exit_slideshow": "Έξοδος από την παρουσίαση",
|
||||||
"expand": "Ανάπτυξη",
|
|
||||||
"expand_all": "Ανάπτυξη όλων",
|
"expand_all": "Ανάπτυξη όλων",
|
||||||
"experimental_settings_new_asset_list_subtitle": "Σε εξέλιξη",
|
"experimental_settings_new_asset_list_subtitle": "Σε εξέλιξη",
|
||||||
"experimental_settings_new_asset_list_title": "Ενεργοποίηση πειραματικού πλέγματος φωτογραφιών",
|
"experimental_settings_new_asset_list_title": "Ενεργοποίηση πειραματικού πλέγματος φωτογραφιών",
|
||||||
@@ -1219,7 +1212,6 @@
|
|||||||
"filter_description": "Συνθήκες για φιλτράρισμα των στοχευμένων στοιχείων",
|
"filter_description": "Συνθήκες για φιλτράρισμα των στοχευμένων στοιχείων",
|
||||||
"filter_people": "Φιλτράρισμα ατόμων",
|
"filter_people": "Φιλτράρισμα ατόμων",
|
||||||
"filter_places": "Φιλτράρισμα τοποθεσιών",
|
"filter_places": "Φιλτράρισμα τοποθεσιών",
|
||||||
"filter_tags": "Φιλτράρισμα ετικετών",
|
|
||||||
"filters": "Φίλτρα",
|
"filters": "Φίλτρα",
|
||||||
"find_them_fast": "Βρείτε τους γρήγορα με αναζήτηση κατά όνομα",
|
"find_them_fast": "Βρείτε τους γρήγορα με αναζήτηση κατά όνομα",
|
||||||
"first": "Αρχικά",
|
"first": "Αρχικά",
|
||||||
@@ -1650,8 +1642,6 @@
|
|||||||
"online": "Σε σύνδεση",
|
"online": "Σε σύνδεση",
|
||||||
"only_favorites": "Μόνο αγαπημένα",
|
"only_favorites": "Μόνο αγαπημένα",
|
||||||
"open": "Άνοιγμα",
|
"open": "Άνοιγμα",
|
||||||
"open_calendar": "Άνοιγμα ημερολογίου",
|
|
||||||
"open_in_browser": "Άνοιγμα στο πρόγραμμα περιήγησης",
|
|
||||||
"open_in_map_view": "Άνοιγμα σε προβολή χάρτη",
|
"open_in_map_view": "Άνοιγμα σε προβολή χάρτη",
|
||||||
"open_in_openstreetmap": "Άνοιγμα στο OpenStreetMap",
|
"open_in_openstreetmap": "Άνοιγμα στο OpenStreetMap",
|
||||||
"open_the_search_filters": "Ανοίξτε τα φίλτρα αναζήτησης",
|
"open_the_search_filters": "Ανοίξτε τα φίλτρα αναζήτησης",
|
||||||
@@ -1811,8 +1801,9 @@
|
|||||||
"rate_asset": "Βαθμολογήστε το στοιχείο",
|
"rate_asset": "Βαθμολογήστε το στοιχείο",
|
||||||
"rating": "Αξιολόγηση με αστέρια",
|
"rating": "Αξιολόγηση με αστέρια",
|
||||||
"rating_clear": "Εκκαθάριση αξιολόγησης",
|
"rating_clear": "Εκκαθάριση αξιολόγησης",
|
||||||
"rating_count": "{count, plural, =0 {Χωρίς αξιολόγηση} one {# αστέρι} other {# αστέρια}}",
|
"rating_count": "{count, plural, one {# αστέρι} other {# αστέρια}}",
|
||||||
"rating_description": "Εμφάνιση της αξιολόγησης EXIF στον πίνακα πληροφοριών",
|
"rating_description": "Εμφάνιση της αξιολόγησης EXIF στον πίνακα πληροφοριών",
|
||||||
|
"rating_set": "Η βαθμολογία ορίστηκε σε {rating, plural, one {# αστέρι} other {# αστέρια}}",
|
||||||
"reaction_options": "Επιλογές αντίδρασης",
|
"reaction_options": "Επιλογές αντίδρασης",
|
||||||
"read_changelog": "Διαβάστε το Αρχείο Καταγραφής Αλλαγών",
|
"read_changelog": "Διαβάστε το Αρχείο Καταγραφής Αλλαγών",
|
||||||
"readonly_mode_disabled": "Η λειτουργία μόνο-για-ανάγνωση απενεργοποιήθηκε",
|
"readonly_mode_disabled": "Η λειτουργία μόνο-για-ανάγνωση απενεργοποιήθηκε",
|
||||||
@@ -1884,10 +1875,7 @@
|
|||||||
"reset_pin_code_success": "Ο κωδικός PIN επαναφέρθηκε επιτυχώς",
|
"reset_pin_code_success": "Ο κωδικός PIN επαναφέρθηκε επιτυχώς",
|
||||||
"reset_pin_code_with_password": "Μπορείτε πάντα να επαναφέρετε τον κωδικό PIN χρησιμοποιώντας τον κωδικό πρόσβασής σας",
|
"reset_pin_code_with_password": "Μπορείτε πάντα να επαναφέρετε τον κωδικό PIN χρησιμοποιώντας τον κωδικό πρόσβασής σας",
|
||||||
"reset_sqlite": "Επαναφορά SQLite βάσης δεδομένων",
|
"reset_sqlite": "Επαναφορά SQLite βάσης δεδομένων",
|
||||||
"reset_sqlite_clear_app_data": "Εκκαθάριση δεδομένων",
|
"reset_sqlite_confirmation": "Είσαι σίγουρος ότι θέλεις να επαναφέρεις τη βάση δεδομένων SQLite; Θα χρειαστεί να κάνεις αποσύνδεση και επανασύνδεση για να επανασυγχρονίσεις τα δεδομένα",
|
||||||
"reset_sqlite_confirmation": "Είστε βέβαιοι ότι θέλετε να διαγράψετε τα δεδομένα της εφαρμογής; Αυτό θα διαγράψει όλες τις ρυθμίσεις και θα σας αποσυνδέσει.",
|
|
||||||
"reset_sqlite_confirmation_note": "Σημείωση: Θα χρειαστεί να επανεκκινήσετε την εφαρμογή μετά την εκκαθάριση.",
|
|
||||||
"reset_sqlite_done": "Τα δεδομένα της εφαρμογής διαγράφηκαν. Παρακαλώ επανεκκινήστε το Immich και συνδεθείτε ξανά.",
|
|
||||||
"reset_sqlite_success": "Η επαναφορά της SQLite βάσης δεδομένων ολοκληρώθηκε με επιτυχία",
|
"reset_sqlite_success": "Η επαναφορά της SQLite βάσης δεδομένων ολοκληρώθηκε με επιτυχία",
|
||||||
"reset_to_default": "Επαναφορά στις προεπιλογές",
|
"reset_to_default": "Επαναφορά στις προεπιλογές",
|
||||||
"resolution": "Ανάλυση",
|
"resolution": "Ανάλυση",
|
||||||
@@ -1915,7 +1903,6 @@
|
|||||||
"saved_settings": "Αποθηκευμένες ρυθμίσεις",
|
"saved_settings": "Αποθηκευμένες ρυθμίσεις",
|
||||||
"say_something": "Πείτε κάτι",
|
"say_something": "Πείτε κάτι",
|
||||||
"scaffold_body_error_occurred": "Παρουσιάστηκε σφάλμα",
|
"scaffold_body_error_occurred": "Παρουσιάστηκε σφάλμα",
|
||||||
"scaffold_body_error_unrecoverable": "Παρουσιάστηκε ένα μη ανακτήσιμο σφάλμα. Παρακαλώ κοινοποιήστε το σφάλμα και το stack trace σε Discord ή GitHub για να μπορέσουμε να βοηθήσουμε. Αν σας ζητηθεί, μπορείτε να διαγράψετε τα δεδομένα της εφαρμογής παρακάτω.",
|
|
||||||
"scan": "Σάρωση",
|
"scan": "Σάρωση",
|
||||||
"scan_all_libraries": "Σάρωση Όλων των Βιβλιοθηκών",
|
"scan_all_libraries": "Σάρωση Όλων των Βιβλιοθηκών",
|
||||||
"scan_library": "Σάρωση",
|
"scan_library": "Σάρωση",
|
||||||
@@ -1951,7 +1938,6 @@
|
|||||||
"search_filter_ocr": "Αναζήτηση κατά OCR",
|
"search_filter_ocr": "Αναζήτηση κατά OCR",
|
||||||
"search_filter_people_title": "Επιλέξτε άτομα",
|
"search_filter_people_title": "Επιλέξτε άτομα",
|
||||||
"search_filter_star_rating": "Βαθμολογία με αστέρια",
|
"search_filter_star_rating": "Βαθμολογία με αστέρια",
|
||||||
"search_filter_tags_title": "Επιλογή ετικετών",
|
|
||||||
"search_for": "Αναζήτηση για",
|
"search_for": "Αναζήτηση για",
|
||||||
"search_for_existing_person": "Αναζήτηση υπάρχοντος ατόμου",
|
"search_for_existing_person": "Αναζήτηση υπάρχοντος ατόμου",
|
||||||
"search_no_more_result": "Δεν υπάρχουν άλλα αποτελέσματα",
|
"search_no_more_result": "Δεν υπάρχουν άλλα αποτελέσματα",
|
||||||
@@ -2031,9 +2017,6 @@
|
|||||||
"set_profile_picture": "Ορισμός εικόνας προφίλ",
|
"set_profile_picture": "Ορισμός εικόνας προφίλ",
|
||||||
"set_slideshow_to_fullscreen": "Ορίστε την παρουσίαση σε πλήρη οθόνη",
|
"set_slideshow_to_fullscreen": "Ορίστε την παρουσίαση σε πλήρη οθόνη",
|
||||||
"set_stack_primary_asset": "Ορισμός ως κύριο στοιχείο",
|
"set_stack_primary_asset": "Ορισμός ως κύριο στοιχείο",
|
||||||
"setting_image_navigation_enable_subtitle": "Αν είναι ενεργοποιημένο, μπορείτε να μεταβείτε στην προηγούμενη/επόμενη εικόνα πατώντας στο αριστερότερο/δεξιότερο τέταρτο της οθόνης.",
|
|
||||||
"setting_image_navigation_enable_title": "Πατήστε για Περιήγηση",
|
|
||||||
"setting_image_navigation_title": "Περιήγηση εικόνων",
|
|
||||||
"setting_image_viewer_help": "Το πρόγραμμα προβολής λεπτομερειών φορτώνει πρώτα τη μικρογραφία, στη συνέχεια φορτώνει την προεπισκόπηση μεσαίου μεγέθους (αν είναι ενεργοποιημένη), τέλος φορτώνει το πρωτότυπο (αν είναι ενεργοποιημένο).",
|
"setting_image_viewer_help": "Το πρόγραμμα προβολής λεπτομερειών φορτώνει πρώτα τη μικρογραφία, στη συνέχεια φορτώνει την προεπισκόπηση μεσαίου μεγέθους (αν είναι ενεργοποιημένη), τέλος φορτώνει το πρωτότυπο (αν είναι ενεργοποιημένο).",
|
||||||
"setting_image_viewer_original_subtitle": "Ενεργοποιήστε τη φόρτωση της πρωτότυπης εικόνας πλήρους ανάλυσης (μεγάλη!). Απενεργοποιήστε για να μειώσετε τη χρήση δεδομένων (τόσο στο δίκτυο όσο και στην κρυφή μνήμη της συσκευής).",
|
"setting_image_viewer_original_subtitle": "Ενεργοποιήστε τη φόρτωση της πρωτότυπης εικόνας πλήρους ανάλυσης (μεγάλη!). Απενεργοποιήστε για να μειώσετε τη χρήση δεδομένων (τόσο στο δίκτυο όσο και στην κρυφή μνήμη της συσκευής).",
|
||||||
"setting_image_viewer_original_title": "Φόρτωση πρωτότυπης εικόνας",
|
"setting_image_viewer_original_title": "Φόρτωση πρωτότυπης εικόνας",
|
||||||
@@ -2200,7 +2183,6 @@
|
|||||||
"support": "Υποστήριξη",
|
"support": "Υποστήριξη",
|
||||||
"support_and_feedback": "Υποστήριξη & Σχόλια",
|
"support_and_feedback": "Υποστήριξη & Σχόλια",
|
||||||
"support_third_party_description": "Η εγκατάσταση του Immich που χρησιμοποιείτε, έχει πακεταριστεί από τρίτους. Τα προβλήματα που αντιμετωπίζετε μπορεί να οφείλονται σε αυτό το πακέτο, οπότε παρακαλούμε να αναφέρετε τα προβλήματα πρώτα σε εκείνους, χρησιμοποιώντας τους παρακάτω συνδέσμους.",
|
"support_third_party_description": "Η εγκατάσταση του Immich που χρησιμοποιείτε, έχει πακεταριστεί από τρίτους. Τα προβλήματα που αντιμετωπίζετε μπορεί να οφείλονται σε αυτό το πακέτο, οπότε παρακαλούμε να αναφέρετε τα προβλήματα πρώτα σε εκείνους, χρησιμοποιώντας τους παρακάτω συνδέσμους.",
|
||||||
"supporter": "Υποστηρικτής",
|
|
||||||
"swap_merge_direction": "Εναλλαγή κατεύθυνσης συγχώνευσης",
|
"swap_merge_direction": "Εναλλαγή κατεύθυνσης συγχώνευσης",
|
||||||
"sync": "Συγχρονισμός",
|
"sync": "Συγχρονισμός",
|
||||||
"sync_albums": "Συγχρονισμός άλμπουμ",
|
"sync_albums": "Συγχρονισμός άλμπουμ",
|
||||||
@@ -2312,7 +2294,6 @@
|
|||||||
"unstack_action_prompt": "{count} αποσυσσωρεύτηκαν",
|
"unstack_action_prompt": "{count} αποσυσσωρεύτηκαν",
|
||||||
"unstacked_assets_count": "Αποστοιβάξατε {count, plural, one {# στοιχείο} other {# στοιχεία}}",
|
"unstacked_assets_count": "Αποστοιβάξατε {count, plural, one {# στοιχείο} other {# στοιχεία}}",
|
||||||
"unsupported_field_type": "Μη υποστηριζόμενος τύπος πεδίου",
|
"unsupported_field_type": "Μη υποστηριζόμενος τύπος πεδίου",
|
||||||
"unsupported_file_type": "Το αρχείο {file} δεν μπορεί να μεταφορτωθεί επειδή ο τύπος αρχείου {type} δεν υποστηρίζεται.",
|
|
||||||
"untagged": "Χωρίς ετικέτα",
|
"untagged": "Χωρίς ετικέτα",
|
||||||
"untitled_workflow": "Νέα ροή εργασίας",
|
"untitled_workflow": "Νέα ροή εργασίας",
|
||||||
"up_next": "Ακολουθεί",
|
"up_next": "Ακολουθεί",
|
||||||
@@ -2339,8 +2320,6 @@
|
|||||||
"url": "URL",
|
"url": "URL",
|
||||||
"usage": "Χρήση",
|
"usage": "Χρήση",
|
||||||
"use_biometric": "Χρήση βιομετρικών στοιχείων",
|
"use_biometric": "Χρήση βιομετρικών στοιχείων",
|
||||||
"use_browser_locale": "Χρήση γλώσσας προγράμματος περιήγησης",
|
|
||||||
"use_browser_locale_description": "Μορφοποιήστε τις ημερομηνίες, τους χρόνους και τους αριθμούς σύμφωνα με τη γλώσσα του προγράμματος περιήγησής σας",
|
|
||||||
"use_current_connection": "Χρήση τρέχουσας σύνδεσης",
|
"use_current_connection": "Χρήση τρέχουσας σύνδεσης",
|
||||||
"use_custom_date_range": "Χρήση προσαρμοσμένου εύρους ημερομηνιών",
|
"use_custom_date_range": "Χρήση προσαρμοσμένου εύρους ημερομηνιών",
|
||||||
"user": "Χρήστης",
|
"user": "Χρήστης",
|
||||||
|
|||||||
+8
-19
@@ -411,7 +411,7 @@
|
|||||||
"transcoding_tone_mapping": "Tone-mapping",
|
"transcoding_tone_mapping": "Tone-mapping",
|
||||||
"transcoding_tone_mapping_description": "Attempts to preserve the appearance of HDR videos when converted to SDR. Each algorithm makes different tradeoffs for color, detail and brightness. Hable preserves detail, Mobius preserves color, and Reinhard preserves brightness.",
|
"transcoding_tone_mapping_description": "Attempts to preserve the appearance of HDR videos when converted to SDR. Each algorithm makes different tradeoffs for color, detail and brightness. Hable preserves detail, Mobius preserves color, and Reinhard preserves brightness.",
|
||||||
"transcoding_transcode_policy": "Transcode policy",
|
"transcoding_transcode_policy": "Transcode policy",
|
||||||
"transcoding_transcode_policy_description": "Policy for when a video should be transcoded. HDR videos and videos with a pixel format other than YUV 4:2:0 will always be transcoded (except if transcoding is disabled).",
|
"transcoding_transcode_policy_description": "Policy for when a video should be transcoded. HDR videos will always be transcoded (except if transcoding is disabled).",
|
||||||
"transcoding_two_pass_encoding": "Two-pass encoding",
|
"transcoding_two_pass_encoding": "Two-pass encoding",
|
||||||
"transcoding_two_pass_encoding_setting_description": "Transcode in two passes to produce better encoded videos. When max bitrate is enabled (required for it to work with H.264 and HEVC), this mode uses a bitrate range based on the max bitrate and ignores CRF. For VP9, CRF can be used if max bitrate is disabled.",
|
"transcoding_two_pass_encoding_setting_description": "Transcode in two passes to produce better encoded videos. When max bitrate is enabled (required for it to work with H.264 and HEVC), this mode uses a bitrate range based on the max bitrate and ignores CRF. For VP9, CRF can be used if max bitrate is disabled.",
|
||||||
"transcoding_video_codec": "Video codec",
|
"transcoding_video_codec": "Video codec",
|
||||||
@@ -871,8 +871,8 @@
|
|||||||
"current_pin_code": "Current PIN code",
|
"current_pin_code": "Current PIN code",
|
||||||
"current_server_address": "Current server address",
|
"current_server_address": "Current server address",
|
||||||
"custom_date": "Custom date",
|
"custom_date": "Custom date",
|
||||||
"custom_locale": "Custom locale",
|
"custom_locale": "Custom Locale",
|
||||||
"custom_locale_description": "Format dates, times, and numbers based on the selected language and region",
|
"custom_locale_description": "Format dates and numbers based on the language and the region",
|
||||||
"custom_url": "Custom URL",
|
"custom_url": "Custom URL",
|
||||||
"cutoff_date_description": "Keep photos from the last…",
|
"cutoff_date_description": "Keep photos from the last…",
|
||||||
"cutoff_day": "{count, plural, one {day} other {days}}",
|
"cutoff_day": "{count, plural, one {day} other {days}}",
|
||||||
@@ -895,6 +895,8 @@
|
|||||||
"deduplication_criteria_2": "Count of EXIF data",
|
"deduplication_criteria_2": "Count of EXIF data",
|
||||||
"deduplication_info": "Deduplication Info",
|
"deduplication_info": "Deduplication Info",
|
||||||
"deduplication_info_description": "To automatically preselect assets and remove duplicates in bulk, we look at:",
|
"deduplication_info_description": "To automatically preselect assets and remove duplicates in bulk, we look at:",
|
||||||
|
"default_locale": "Default Locale",
|
||||||
|
"default_locale_description": "Format dates and numbers based on your browser locale",
|
||||||
"delete": "Delete",
|
"delete": "Delete",
|
||||||
"delete_action_confirmation_message": "Are you sure you want to delete this asset? This action will move the asset to the server's trash and will prompt if you want to delete it locally",
|
"delete_action_confirmation_message": "Are you sure you want to delete this asset? This action will move the asset to the server's trash and will prompt if you want to delete it locally",
|
||||||
"delete_action_prompt": "{count} deleted",
|
"delete_action_prompt": "{count} deleted",
|
||||||
@@ -1007,8 +1009,6 @@
|
|||||||
"editor_edits_applied_success": "Edits applied successfully",
|
"editor_edits_applied_success": "Edits applied successfully",
|
||||||
"editor_flip_horizontal": "Flip horizontal",
|
"editor_flip_horizontal": "Flip horizontal",
|
||||||
"editor_flip_vertical": "Flip vertical",
|
"editor_flip_vertical": "Flip vertical",
|
||||||
"editor_handle_corner": "{corner, select, top_left {Top-left} top_right {Top-right} bottom_left {Bottom-left} bottom_right {Bottom-right} other {A}} corner handle",
|
|
||||||
"editor_handle_edge": "{edge, select, top {Top} bottom {Bottom} left {Left} right {Right} other {An}} edge handle",
|
|
||||||
"editor_orientation": "Orientation",
|
"editor_orientation": "Orientation",
|
||||||
"editor_reset_all_changes": "Reset changes",
|
"editor_reset_all_changes": "Reset changes",
|
||||||
"editor_rotate_left": "Rotate 90° counterclockwise",
|
"editor_rotate_left": "Rotate 90° counterclockwise",
|
||||||
@@ -1074,7 +1074,6 @@
|
|||||||
"failed_to_update_notification_status": "Failed to update notification status",
|
"failed_to_update_notification_status": "Failed to update notification status",
|
||||||
"incorrect_email_or_password": "Incorrect email or password",
|
"incorrect_email_or_password": "Incorrect email or password",
|
||||||
"library_folder_already_exists": "This import path already exists.",
|
"library_folder_already_exists": "This import path already exists.",
|
||||||
"page_not_found": "Page not found",
|
|
||||||
"paths_validation_failed": "{paths, plural, one {# path} other {# paths}} failed validation",
|
"paths_validation_failed": "{paths, plural, one {# path} other {# paths}} failed validation",
|
||||||
"profile_picture_transparent_pixels": "Profile pictures cannot have transparent pixels. Please zoom in and/or move the image.",
|
"profile_picture_transparent_pixels": "Profile pictures cannot have transparent pixels. Please zoom in and/or move the image.",
|
||||||
"quota_higher_than_disk_size": "You set a quota higher than the disk size",
|
"quota_higher_than_disk_size": "You set a quota higher than the disk size",
|
||||||
@@ -1651,7 +1650,6 @@
|
|||||||
"only_favorites": "Only favorites",
|
"only_favorites": "Only favorites",
|
||||||
"open": "Open",
|
"open": "Open",
|
||||||
"open_calendar": "Open calendar",
|
"open_calendar": "Open calendar",
|
||||||
"open_in_browser": "Open in browser",
|
|
||||||
"open_in_map_view": "Open in map view",
|
"open_in_map_view": "Open in map view",
|
||||||
"open_in_openstreetmap": "Open in OpenStreetMap",
|
"open_in_openstreetmap": "Open in OpenStreetMap",
|
||||||
"open_the_search_filters": "Open the search filters",
|
"open_the_search_filters": "Open the search filters",
|
||||||
@@ -1811,8 +1809,9 @@
|
|||||||
"rate_asset": "Rate Asset",
|
"rate_asset": "Rate Asset",
|
||||||
"rating": "Star rating",
|
"rating": "Star rating",
|
||||||
"rating_clear": "Clear rating",
|
"rating_clear": "Clear rating",
|
||||||
"rating_count": "{count, plural, =0 {Unrated} one {# star} other {# stars}}",
|
"rating_count": "{count, plural, one {# star} other {# stars}}",
|
||||||
"rating_description": "Display the EXIF rating in the info panel",
|
"rating_description": "Display the EXIF rating in the info panel",
|
||||||
|
"rating_set": "Rating set to {rating, plural, one {# star} other {# stars}}",
|
||||||
"reaction_options": "Reaction options",
|
"reaction_options": "Reaction options",
|
||||||
"read_changelog": "Read Changelog",
|
"read_changelog": "Read Changelog",
|
||||||
"readonly_mode_disabled": "Read-only mode disabled",
|
"readonly_mode_disabled": "Read-only mode disabled",
|
||||||
@@ -1884,10 +1883,7 @@
|
|||||||
"reset_pin_code_success": "Successfully reset PIN code",
|
"reset_pin_code_success": "Successfully reset PIN code",
|
||||||
"reset_pin_code_with_password": "You can always reset your PIN code with your password",
|
"reset_pin_code_with_password": "You can always reset your PIN code with your password",
|
||||||
"reset_sqlite": "Reset SQLite Database",
|
"reset_sqlite": "Reset SQLite Database",
|
||||||
"reset_sqlite_clear_app_data": "Clear Data",
|
"reset_sqlite_confirmation": "Are you sure you want to reset the SQLite database? You will need to log out and log in again to resync the data",
|
||||||
"reset_sqlite_confirmation": "Are you sure you want to clear the app data? This will remove all settings and sign you out.",
|
|
||||||
"reset_sqlite_confirmation_note": "Note: You will need to restart the app after clearing.",
|
|
||||||
"reset_sqlite_done": "App data has been cleared. Please restart Immich and log in again.",
|
|
||||||
"reset_sqlite_success": "Successfully reset the SQLite database",
|
"reset_sqlite_success": "Successfully reset the SQLite database",
|
||||||
"reset_to_default": "Reset to default",
|
"reset_to_default": "Reset to default",
|
||||||
"resolution": "Resolution",
|
"resolution": "Resolution",
|
||||||
@@ -1915,7 +1911,6 @@
|
|||||||
"saved_settings": "Saved settings",
|
"saved_settings": "Saved settings",
|
||||||
"say_something": "Say something",
|
"say_something": "Say something",
|
||||||
"scaffold_body_error_occurred": "Error occurred",
|
"scaffold_body_error_occurred": "Error occurred",
|
||||||
"scaffold_body_error_unrecoverable": "An unrecoverable error has occurred. Please share the error and stack trace on Discord or GitHub so we can help. If advised, you can clear the app data below.",
|
|
||||||
"scan": "Scan",
|
"scan": "Scan",
|
||||||
"scan_all_libraries": "Scan All Libraries",
|
"scan_all_libraries": "Scan All Libraries",
|
||||||
"scan_library": "Scan",
|
"scan_library": "Scan",
|
||||||
@@ -2031,9 +2026,6 @@
|
|||||||
"set_profile_picture": "Set profile picture",
|
"set_profile_picture": "Set profile picture",
|
||||||
"set_slideshow_to_fullscreen": "Set Slideshow to fullscreen",
|
"set_slideshow_to_fullscreen": "Set Slideshow to fullscreen",
|
||||||
"set_stack_primary_asset": "Set as primary asset",
|
"set_stack_primary_asset": "Set as primary asset",
|
||||||
"setting_image_navigation_enable_subtitle": "If enabled, you can navigate to the previous/next image by tapping the leftmost/rightmost quarter of the screen.",
|
|
||||||
"setting_image_navigation_enable_title": "Tap to Navigate",
|
|
||||||
"setting_image_navigation_title": "Image Navigation",
|
|
||||||
"setting_image_viewer_help": "The detail viewer loads the small thumbnail first, then loads the medium-size preview (if enabled), finally loads the original (if enabled).",
|
"setting_image_viewer_help": "The detail viewer loads the small thumbnail first, then loads the medium-size preview (if enabled), finally loads the original (if enabled).",
|
||||||
"setting_image_viewer_original_subtitle": "Enable to load the original full-resolution image (large!). Disable to reduce data usage (both network and on device cache).",
|
"setting_image_viewer_original_subtitle": "Enable to load the original full-resolution image (large!). Disable to reduce data usage (both network and on device cache).",
|
||||||
"setting_image_viewer_original_title": "Load original image",
|
"setting_image_viewer_original_title": "Load original image",
|
||||||
@@ -2312,7 +2304,6 @@
|
|||||||
"unstack_action_prompt": "{count} unstacked",
|
"unstack_action_prompt": "{count} unstacked",
|
||||||
"unstacked_assets_count": "Un-stacked {count, plural, one {# asset} other {# assets}}",
|
"unstacked_assets_count": "Un-stacked {count, plural, one {# asset} other {# assets}}",
|
||||||
"unsupported_field_type": "Unsupported field type",
|
"unsupported_field_type": "Unsupported field type",
|
||||||
"unsupported_file_type": "File {file} can't be uploaded because its file type {type} is not supported.",
|
|
||||||
"untagged": "Untagged",
|
"untagged": "Untagged",
|
||||||
"untitled_workflow": "Untitled workflow",
|
"untitled_workflow": "Untitled workflow",
|
||||||
"up_next": "Up next",
|
"up_next": "Up next",
|
||||||
@@ -2339,8 +2330,6 @@
|
|||||||
"url": "URL",
|
"url": "URL",
|
||||||
"usage": "Usage",
|
"usage": "Usage",
|
||||||
"use_biometric": "Use biometric",
|
"use_biometric": "Use biometric",
|
||||||
"use_browser_locale": "Use browser locale",
|
|
||||||
"use_browser_locale_description": "Format dates, times, and numbers based on your browser locale",
|
|
||||||
"use_current_connection": "Use current connection",
|
"use_current_connection": "Use current connection",
|
||||||
"use_custom_date_range": "Use custom date range instead",
|
"use_custom_date_range": "Use custom date range instead",
|
||||||
"user": "User",
|
"user": "User",
|
||||||
|
|||||||
+4
-246
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"about": "Pri",
|
"about": "Pri",
|
||||||
"account": "Konto",
|
"account": "Konto",
|
||||||
"account_settings": "Agordoj pri konto",
|
"account_settings": "Agordaĵoj de konto",
|
||||||
"acknowledge": "Komprenite",
|
"acknowledge": "Komprenite",
|
||||||
"action": "Ago",
|
"action": "Ago",
|
||||||
"action_common_update": "Ĝisdatigi",
|
"action_common_update": "Ĝisdatigi",
|
||||||
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "Serĉi taskojn…",
|
"search_jobs": "Serĉi taskojn…",
|
||||||
"send_welcome_email": "Sendi bonvenan retmesaĝon",
|
"send_welcome_email": "Sendi bonvenan retmesaĝon",
|
||||||
"server_external_domain_settings": "Ekstera domajno",
|
"server_external_domain_settings": "Ekstera domajno",
|
||||||
"server_external_domain_settings_description": "Domajno por eksteraj ligiloj",
|
"server_external_domain_settings_description": "Domajno por publike dividitaj ligiloj, inkl. http(s)://",
|
||||||
"server_public_users": "Publikaj uzantoj",
|
"server_public_users": "Publikaj uzantoj",
|
||||||
"server_public_users_description": "Nomo kaj retadreso de ĉiuj uzantoj estas listigitaj kiam oni aldonas uzanton al dividita albumo. Kiam malŝaltita, la listo de uzantoj estos videbla nur por administrantoj.",
|
"server_public_users_description": "Nomo kaj retadreso de ĉiuj uzantoj estas listigitaj kiam oni aldonas uzanton al dividita albumo. Kiam malŝaltita, la listo de uzantoj estos videbla nur por administrantoj.",
|
||||||
"server_settings": "Agordoj de servilo",
|
"server_settings": "Agordoj de servilo",
|
||||||
@@ -411,7 +411,7 @@
|
|||||||
"transcoding_tone_mapping": "Mapado de tonoj",
|
"transcoding_tone_mapping": "Mapado de tonoj",
|
||||||
"transcoding_tone_mapping_description": "Klopodas konservi aspekton de HDR-videoj dum transkodigo al SDR. Ĉiu algoritmo faras proprajn kompromisojn pri koloroj, detaloj kaj heleco. Hable konservas detalojn, Mobius konservas kolorojn, kaj Reinhard konservas helecon.",
|
"transcoding_tone_mapping_description": "Klopodas konservi aspekton de HDR-videoj dum transkodigo al SDR. Ĉiu algoritmo faras proprajn kompromisojn pri koloroj, detaloj kaj heleco. Hable konservas detalojn, Mobius konservas kolorojn, kaj Reinhard konservas helecon.",
|
||||||
"transcoding_transcode_policy": "Politiko de transkodado",
|
"transcoding_transcode_policy": "Politiko de transkodado",
|
||||||
"transcoding_transcode_policy_description": "Politiko pri kiam video estos transkodita. HDR-videoj, kune kun videoj kun ciuj bilderaj formatoj krom YUV 4:2:0, ĉiam estas transkoditaj (krom se transkodado estas malŝaltita).",
|
"transcoding_transcode_policy_description": "Politiko pri kiam video estos transkodita. HDR-videoj ĉiam estas transkoditaj (krom se transkodado estas malŝaltita).",
|
||||||
"transcoding_two_pass_encoding": "Dupasa kodigo",
|
"transcoding_two_pass_encoding": "Dupasa kodigo",
|
||||||
"transcoding_two_pass_encoding_setting_description": "Transkodigo per du pasoj por krei pli bone kodigitajn videojn. Kiam eblas uzi maksimuman bitrapidon (bezonate por funkcii kun H.264 kaj kun HEVC), tiu ĉi modo uzas gamon de bitrapidoj surbaze de tiu maksimumo, kaj ignoras CRF. Por VP9, eblas uzi CRF se maksimuma bitrapido estas malŝaltita.",
|
"transcoding_two_pass_encoding_setting_description": "Transkodigo per du pasoj por krei pli bone kodigitajn videojn. Kiam eblas uzi maksimuman bitrapidon (bezonate por funkcii kun H.264 kaj kun HEVC), tiu ĉi modo uzas gamon de bitrapidoj surbaze de tiu maksimumo, kaj ignoras CRF. Por VP9, eblas uzi CRF se maksimuma bitrapido estas malŝaltita.",
|
||||||
"transcoding_video_codec": "Videa kodeko",
|
"transcoding_video_codec": "Videa kodeko",
|
||||||
@@ -433,248 +433,9 @@
|
|||||||
"user_details": "Detaloj pri uzanto",
|
"user_details": "Detaloj pri uzanto",
|
||||||
"user_management": "Administrado de uzantoj",
|
"user_management": "Administrado de uzantoj",
|
||||||
"user_password_has_been_reset": "Pasvorto de tiu ĉi uzanto estas restarigita:",
|
"user_password_has_been_reset": "Pasvorto de tiu ĉi uzanto estas restarigita:",
|
||||||
"user_password_reset_description": "Bonvolu sendi la dumtempan pasvorton al la uzanto, kaj informu ke ĝi devos esti ŝanĝita je la sekva ensaluto.",
|
"user_settings_description": "Administri agordojn pri uzantoj"
|
||||||
"user_restore_description": "La konto de <b>{user}</b> estos restaŭrita.",
|
|
||||||
"user_restore_scheduled_removal": "Restaŭri uzanton - forviŝo planita je {date, date, long}",
|
|
||||||
"user_settings": "Agordoj de uzanto",
|
|
||||||
"user_settings_description": "Administri agordojn pri uzantoj",
|
|
||||||
"user_successfully_removed": "La uzanto {email} estas forigita.",
|
|
||||||
"users_page_description": "Paĝo por administri uzantojn",
|
|
||||||
"version_check_enabled_description": "Ebligi kontrolon de versio",
|
|
||||||
"version_check_implications": "La funkcio de kontrolado de versio bezonas de temp' al tempan komunikadon kun github.com",
|
|
||||||
"version_check_settings": "Kontrolo de versio",
|
|
||||||
"version_check_settings_description": "Ŝalti/malŝalti atentigilon pri novaj versioj",
|
|
||||||
"video_conversion_job": "Transkodado de videoj",
|
|
||||||
"video_conversion_job_description": "Transkodi videojn por pli vasta kongruo kun retumiloj kaj aparatoj"
|
|
||||||
},
|
},
|
||||||
"admin_email": "Retadreso de administranto",
|
|
||||||
"admin_password": "Pasvorto de administranto",
|
|
||||||
"administration": "Administrado",
|
|
||||||
"advanced": "Altnivelaj agordoj",
|
|
||||||
"advanced_settings_clear_image_cache": "Malplenigi kaŝmemoron de bildoj",
|
|
||||||
"advanced_settings_clear_image_cache_error": "Malsukcesis malplenigi kaŝmemoron",
|
|
||||||
"advanced_settings_clear_image_cache_success": "Sukcesis liberigi {size}",
|
|
||||||
"advanced_settings_enable_alternate_media_filter_subtitle": "Uzu tiun ĉi agordon por filtri elementojn dum sinkronigo laŭ alternativaj kriterioj. Uzu tion ĉi nur se vi vidas, ke la apo ne sukcesas trovi ĉiujn albumojn.",
|
|
||||||
"advanced_settings_enable_alternate_media_filter_title": "[TESTATA] Uzi alternativan filtrilon por sinkronigi albumojn",
|
|
||||||
"advanced_settings_log_level_title": "Nivelo de protokolado: {level}",
|
|
||||||
"advanced_settings_prefer_remote_subtitle": "Kelkaj aparatoj ege malrapide ŝargas bildetojn el lokaj elementoj. Ŝaltu tiun ĉi agordon por anstataŭe ŝargi bildetojn de la servilo.",
|
|
||||||
"advanced_settings_prefer_remote_title": "Preferi bildojn el servilo",
|
|
||||||
"advanced_settings_proxy_headers_subtitle": "Aldoni paĝokapoj pri prokurilo, kiujn immich sendu kun ĉiu reta peto",
|
|
||||||
"advanced_settings_proxy_headers_title": "Tajloritaj paĝokapoj pri prokurilo [EKSPERIMENTA]",
|
|
||||||
"advanced_settings_readonly_mode_subtitle": "Ŝaltas nurlegan reĝimon, kie oni povas nur rigardi fotojn. Funkcioj kiel elekti plurajn bildojn, dividi kun aliaj, forigi k.a. estas ĉiuj neeblaj. Vi povas ŝalti/malŝalti tiun reĝimon per la profilbildo de uzanto ĉe la hejmpaĝo",
|
|
||||||
"advanced_settings_readonly_mode_title": "Nurlega reĝimo",
|
|
||||||
"advanced_settings_self_signed_ssl_subtitle": "Ignoras kontrolon de SSL-atestilo ĉe la servilo. Bezonata por memsubskribita atestilo.",
|
|
||||||
"advanced_settings_self_signed_ssl_title": "Permesi memsubskribitajn SSL-atestilojn [EKSPERIMENTA]",
|
|
||||||
"advanced_settings_sync_remote_deletions_subtitle": "Aŭtomate forigi aŭ malforigi elementojn en tiu ĉi aparato kiam oni faras tiun agon per retumilo",
|
|
||||||
"advanced_settings_sync_remote_deletions_title": "Sinkronigi forigojn [EKSPERIMENTA]",
|
|
||||||
"advanced_settings_tile_subtitle": "Altnivelaj agordaĵoj",
|
|
||||||
"advanced_settings_troubleshooting_subtitle": "Ŝalti pliajn funkciojn por problemsolvi",
|
|
||||||
"advanced_settings_troubleshooting_title": "Problemsolvi",
|
|
||||||
"age_months": "Aĝo {months, plural, one {# monato} other {# monatoj}}",
|
|
||||||
"age_year_months": "Aĝo 1 jaro, {months, plural, one {# monato} other {# monatoj}}",
|
|
||||||
"age_years": "Aĝo {years, plural, one {# jaro} other {# jaroj}}",
|
|
||||||
"album": "Albumo",
|
|
||||||
"album_added": "Albumo aldonita",
|
|
||||||
"album_added_notification_setting_description": "Ricevi retmesaĝon kiam iu aldonas vin al dividita albumo",
|
|
||||||
"album_cover_updated": "Kovrilo de albumo ĝisdatigita",
|
|
||||||
"album_delete_confirmation": "Ĉu vi certas, ke vi volas forigi la albumon {album}?",
|
|
||||||
"album_delete_confirmation_description": "Se temas pri dividita albumo, aliaj uzantoj ne plu povos vidi ĝin.",
|
|
||||||
"album_deleted": "Albumo forigita",
|
|
||||||
"album_info_card_backup_album_excluded": "EKSKLUDITA",
|
|
||||||
"album_info_card_backup_album_included": "INKLUZIVITA",
|
|
||||||
"album_info_updated": "Informoj pri albumo ĝisdatigitaj",
|
|
||||||
"album_leave": "Foriri de albumo?",
|
|
||||||
"album_leave_confirmation": "Ĉu vi certas, ke vi volas forlasi la albumon {album}?",
|
|
||||||
"album_name": "Nomo de albumo",
|
|
||||||
"album_options": "Agordoj de albumo",
|
|
||||||
"album_remove_user": "Ĉu forigi uzanton?",
|
|
||||||
"album_remove_user_confirmation": "Ĉu vi certas, ke vi volas forigi la uzanton {user}?",
|
|
||||||
"album_search_not_found": "Neniu albumo kongruas kun via serĉo",
|
|
||||||
"album_selected": "Albumo elektita",
|
|
||||||
"album_share_no_users": "Ŝajne vi jam dividis tiun albumon kun ĉiuj uzantoj AŬ ne ekzistas uzantoj kun kiuj vi povus dividi ĝin.",
|
|
||||||
"album_summary": "Resumo de albumo",
|
|
||||||
"album_updated": "Albumo ĝisdatigita",
|
|
||||||
"album_updated_setting_description": "Ricevi retmesaĝon kiam dividita albumo havas novajn elementojn",
|
|
||||||
"album_upload_assets": "Alŝuti elementojn el via komputilo kaj aldoni ilin al albumo",
|
|
||||||
"album_user_left": "Foriris de {album}",
|
|
||||||
"album_user_removed": "Uzanto {user} forigita",
|
|
||||||
"album_viewer_appbar_delete_confirm": "Ĉu vi certas, ke vi volas forigi tiun ĉi albumon de via konto?",
|
|
||||||
"album_viewer_appbar_share_err_delete": "Malsukcesis forigi albumon",
|
|
||||||
"album_viewer_appbar_share_err_leave": "Malsukcesis foriri de albumo",
|
|
||||||
"album_viewer_appbar_share_err_remove": "Okazis problemo dum forigo de elementoj el albumo",
|
|
||||||
"album_viewer_appbar_share_err_title": "Malsukcesis ŝanĝi titolon de albumo",
|
|
||||||
"album_viewer_appbar_share_leave": "Foriri de albumo",
|
|
||||||
"album_viewer_appbar_share_to": "Dividi al",
|
|
||||||
"album_viewer_page_share_add_users": "Aldoni uzantojn",
|
|
||||||
"album_with_link_access": "Permesi, ke iu ajn kun la ligilo povu vidi la fotojn kaj homojn en la albumo.",
|
|
||||||
"albums": "Albumoj",
|
|
||||||
"albums_count": "{count, plural, one {{count, number} Albumo} other {{count, number} Albumoj}}",
|
|
||||||
"albums_default_sort_order": "Defaŭlta vicordigo en albumoj",
|
|
||||||
"albums_default_sort_order_description": "Metodo por vicordigi elementojn defaŭlte uzata en nova albumo.",
|
|
||||||
"albums_feature_description": "Kolektoj de elementoj, kiujn vi povas dividi kun aliaj uzantoj.",
|
|
||||||
"albums_on_device_count": "Albumoj ĉe la aparato ({count})",
|
|
||||||
"albums_selected": "{count, plural, one {# albumo elektita} other {# albumoj elektitaj}}",
|
|
||||||
"all": "Ĉiuj",
|
|
||||||
"all_albums": "Ĉiuj albumoj",
|
|
||||||
"all_people": "Ĉiuj homoj",
|
|
||||||
"all_photos": "Ĉiuj fotoj",
|
|
||||||
"all_videos": "Ĉiuj videoj",
|
|
||||||
"allow_dark_mode": "Permesi malhelan reĝimon",
|
|
||||||
"allow_edits": "Permesi redaktojn",
|
|
||||||
"allow_public_user_to_download": "Permesu, ke publikano elŝutu el la albumo",
|
|
||||||
"allow_public_user_to_upload": "Permesu, ke publikano alŝutu al la albumo",
|
|
||||||
"allowed": "Permesita",
|
|
||||||
"alt_text_qr_code": "Bildo de QR-kodo",
|
|
||||||
"always_keep": "Ĉiam konservi",
|
|
||||||
"always_keep_photos_hint": "La funkcio 'Liberigi spacon' konservos ĉiujn fotojn en tiu ĉi aparato.",
|
|
||||||
"always_keep_videos_hint": "La funkcio 'Liberigi spacon\" konservos ĉiujn videojn en tiu ĉi aparato.",
|
|
||||||
"anti_clockwise": "Kontraŭ-horloĝdirekte",
|
|
||||||
"api_key": "API-ŝlosilo",
|
|
||||||
"api_key_description": "Tio ĉi montriĝos nur unufoje. Certiĝu, ke vi kopiis ĝin antaŭ ol fermi la fenestron.",
|
|
||||||
"api_key_empty": "La nomo de via API-ŝlosilo ne devus esti malplena",
|
|
||||||
"api_keys": "API-ŝlosiloj",
|
|
||||||
"app_architecture_variant": "Varianto (arkitekturo)",
|
|
||||||
"app_bar_signout_dialog_content": "Ĉu vi certas, ke vi volas elsaluti?",
|
|
||||||
"app_bar_signout_dialog_ok": "Jes",
|
|
||||||
"app_bar_signout_dialog_title": "Elsaluti",
|
|
||||||
"app_download_links": "Ligiloj por elŝuti la apon",
|
|
||||||
"app_settings": "Agordoj pri apo",
|
|
||||||
"app_stores": "Ap-vendejoj",
|
|
||||||
"app_update_available": "Ĝisdatigo de apo disponeblas",
|
|
||||||
"appears_in": "Aperas en",
|
|
||||||
"apply_count": "Apliki ({count, number})",
|
|
||||||
"archive": "Arĥivo",
|
|
||||||
"archive_action_prompt": "{count} aldonita(j) al arĥivo",
|
|
||||||
"archive_or_unarchive_photo": "Enarĥivigi aŭ elarĥivigi foton",
|
|
||||||
"archive_page_no_archived_assets": "Neniuj elementoj trovitaj en arĥivo",
|
|
||||||
"archive_page_title": "Arĥivo ({count})",
|
|
||||||
"archive_size": "Grandeco de arĥivo",
|
|
||||||
"archive_size_description": "Agordu la grandecon de arĥivaj dosieroj por elŝuti (en GiB)",
|
|
||||||
"archived": "Enarĥivigita(j)",
|
|
||||||
"archived_count": "{count, plural, one {# enarĥivigita} other {# enarĥivigitaj}}",
|
|
||||||
"are_these_the_same_person": "Ĉu la sama homo?",
|
|
||||||
"are_you_sure_to_do_this": "Ĉu vi certas, ke vi volas fari tion?",
|
|
||||||
"array_field_not_fully_supported": "Tablaj kampoj postulas permanan redakton de JSON",
|
|
||||||
"asset_action_delete_err_read_only": "Ne eblas forigi nurlegajn elementojn, ili estos lasitaj senŝanĝaj",
|
|
||||||
"asset_action_share_err_offline": "Ne eblis repreni nekonektitajn elementojn, ili estos ignoritaj",
|
|
||||||
"asset_added_to_album": "Aldonita al albumo",
|
|
||||||
"asset_adding_to_album": "Aldonas al albumo…",
|
|
||||||
"asset_created": "Elemento kreita",
|
|
||||||
"asset_description_updated": "Priskribo de elemento ĝisdatigita",
|
|
||||||
"asset_filename_is_offline": "Elemento {filename} estas nedisponebla",
|
|
||||||
"asset_has_unassigned_faces": "Elemento enhavas nekonatajn vizaĝojn",
|
|
||||||
"asset_hashing": "Haketado…",
|
|
||||||
"asset_list_group_by_sub_title": "Grupigi laŭ",
|
|
||||||
"asset_list_layout_settings_dynamic_layout_title": "Dinamika enpaĝigo",
|
|
||||||
"asset_list_layout_settings_group_automatically": "Aŭtomata",
|
|
||||||
"asset_list_layout_settings_group_by": "Ĝrupigi elementojn laŭ",
|
|
||||||
"asset_list_layout_settings_group_by_month_day": "Monato + tago",
|
|
||||||
"asset_list_layout_sub_title": "Enpaĝigo",
|
|
||||||
"asset_list_settings_subtitle": "Agordoj pri enpaĝigo",
|
|
||||||
"asset_list_settings_title": "Krado de fotoj",
|
|
||||||
"asset_not_found_on_device_android": "Elemento ne trovita en aparato",
|
|
||||||
"asset_not_found_on_device_ios": "Elemento ne trovita en aparato. Se vi uzas iCloud, povus esti ke la kopio ĉe iCloud estas rompita",
|
|
||||||
"asset_not_found_on_icloud": "Elemento ne trovita en iCloud. Povus esti, ke la kopio ĉe iCloud estas rompita",
|
|
||||||
"asset_offline": "Elemento nedisponebla",
|
|
||||||
"asset_offline_description": "Ne eblis trovi tiun eksteran elementon. Kontaktu la administranton de via Immich por helpo pri tio.",
|
|
||||||
"asset_restored_successfully": "Elemento sukcese riparita",
|
|
||||||
"asset_skipped": "Preterlasita(j)",
|
|
||||||
"asset_skipped_in_trash": "En rubujo",
|
|
||||||
"asset_trashed": "Elemento enrubujigita",
|
|
||||||
"asset_troubleshoot": "Problemsolvi pri elemento",
|
|
||||||
"asset_uploaded": "Alŝutita(j)",
|
|
||||||
"asset_uploading": "Alŝutado…",
|
|
||||||
"asset_viewer_settings_subtitle": "Administri agordojn pri vidilo de galerioj",
|
"asset_viewer_settings_subtitle": "Administri agordojn pri vidilo de galerioj",
|
||||||
"asset_viewer_settings_title": "Montrilo de elemento",
|
|
||||||
"assets": "Elementoj",
|
|
||||||
"assets_added_count": "Sukcese aldonis {count, plural, one {# elementon} other {# elementojn}}",
|
|
||||||
"assets_added_to_album_count": "Sukcese aldonis {count, plural, one {# elementon} other {# elementojn}} al la albumo",
|
|
||||||
"assets_added_to_albums_count": "Sukcese aldonis {assetTotal, plural, one {# elementon} other {# elementojn}} al {albumTotal, plural, one {# albumo} other {# albumoj}}",
|
|
||||||
"assets_cannot_be_added_to_album_count": "Ne eblis aldoni {count, plural, one {tiun elementon} other {tiujn elementojn}} al la albumo",
|
|
||||||
"assets_cannot_be_added_to_albums": "Ne eblis aldoni {count, plural, one {tiun elementon} other {tiujn elementojn}} al iu ajn el la albumoj",
|
|
||||||
"assets_count": "{count, plural, one {# elemento} other {# elementoj}}",
|
|
||||||
"assets_deleted_permanently": "{count} elemento(j) porĉiam forigita(j)",
|
|
||||||
"assets_deleted_permanently_from_server": "{count} elemento(j) porĉiam forigita(j) de la Immich-servilo",
|
|
||||||
"assets_downloaded_failed": "{count, plural, one {Elŝutis # dosieron - dosiero {error} malsukcesis} other {Elŝutis # dosierojn - dosieroj {error} malsukcesis}}",
|
|
||||||
"assets_downloaded_successfully": "{count, plural, one {Sukcese elŝutis # dosieron} other {Sukcese elŝutis # dosierojn}}",
|
|
||||||
"assets_moved_to_trash_count": "Movis {count, plural, one {# elementon} other {# elementojn}} al la rubujo",
|
|
||||||
"assets_permanently_deleted_count": "Porĉiam forigis {count, plural, one {# elementon} other {# elementojn}}",
|
|
||||||
"assets_removed_count": "Forigis {count, plural, one {# elementon} other {# elementojn}}",
|
|
||||||
"assets_removed_permanently_from_device": "{count} elemento(j) porĉiam forigita(j) de via aparato",
|
|
||||||
"assets_restore_confirmation": "Ĉu vi certas, ke vi volas restaŭri ĉion el la rubujo? Ne eblos poste malfari tion. Notu, ke ne eblas tiel restaŭri eksterretajn elementojn.",
|
|
||||||
"assets_restored_count": "Sukcese restaŭris {count, plural, one {# elementon} other {# elementojn}}",
|
|
||||||
"assets_restored_successfully": "{count} elemento(j) sukcese restaŭrita(j)",
|
|
||||||
"assets_trashed": "{count} elemento(j) enrubujigita(j)",
|
|
||||||
"assets_trashed_count": "Sukcese enrubujigis {count, plural, one {# elementon} other {# elementojn}}",
|
|
||||||
"assets_trashed_from_server": "{count} elemento(j) forigitaj de la immich-servilo",
|
|
||||||
"assets_were_part_of_album_count": "{count, plural, one {# Tiu elemento} other {# Tiuj elementoj}} jam estis en la albumo",
|
|
||||||
"assets_were_part_of_albums_count": "{count, plural, one {# Tiu elemento} other {# Tiuj elementoj}} jam estis en la albumoj",
|
|
||||||
"authorized_devices": "Aprobitaj aparatoj",
|
|
||||||
"automatic_endpoint_switching_subtitle": "Konekti per elektita vifio kiam eblas, kaj alikaze uzi aliajn alirojn",
|
|
||||||
"automatic_endpoint_switching_title": "Aŭtomata ŝanĝo de URL",
|
|
||||||
"autoplay_slideshow": "Aŭtomate vidigi bildserion",
|
|
||||||
"back": "Malantaŭen",
|
|
||||||
"back_close_deselect": "Malantaŭen, fermi, aŭ malelekti",
|
|
||||||
"background_backup_running_error": "Sekurkopiado jam estas fone okazanta, do ne eblas nun lanĉi alian sekurkopiadon",
|
|
||||||
"background_location_permission": "Rajtigo fone uzi geografian lokon",
|
|
||||||
"background_location_permission_content": "Por ŝanĝi retaliron dum fona funkciado, Immich devas *ĉiam* havi atingorajton al lokiga informo, por povi legi nomojn de vifiaj retoj",
|
|
||||||
"background_options": "Agordoj pri fonaj funkcioj",
|
|
||||||
"backup": "Sekurkopio",
|
|
||||||
"backup_album_selection_page_albums_device": "Albumoj en la aparato ({count})",
|
|
||||||
"backup_album_selection_page_albums_tap": "Tuŝeti por inkluzivi, duoble tuŝeti por ekskludi",
|
|
||||||
"backup_album_selection_page_assets_scatter": "Foje elementoj troviĝas disĵetitaj al pluraj albumoj, do albumoj povas esti inkluzivitaj aŭ ekskluzivitaj de la savkopiado.",
|
|
||||||
"backup_album_selection_page_select_albums": "Elekti albumojn",
|
|
||||||
"backup_album_selection_page_selection_info": "Info pri la elektitaĵoj",
|
|
||||||
"backup_album_selection_page_total_assets": "Nombro da unikaj elementoj",
|
|
||||||
"backup_albums_sync": "Sinkronigo de la savkopioj de albumoj",
|
|
||||||
"backup_all": "Ĉiuj",
|
|
||||||
"backup_background_service_backup_failed_message": "Malsukcesis krei savkopion de tiuj elementoj. Reprovante…",
|
|
||||||
"backup_background_service_complete_notification": "Savkopiado finita",
|
|
||||||
"backup_background_service_connection_failed_message": "Malsukcesis konektiĝi al la servilo. Reprovante…",
|
|
||||||
"backup_background_service_current_upload_notification": "Alŝutiĝas {filename}",
|
|
||||||
"backup_background_service_default_notification": "Serĉas novajn elementojn…",
|
|
||||||
"backup_background_service_error_title": "Eraro de savkopiado",
|
|
||||||
"backup_background_service_in_progress_notification": "Kreado de savkopio de viaj elementoj…",
|
|
||||||
"backup_background_service_upload_failure_notification": "Malsukcesis alŝuti {filename}",
|
|
||||||
"backup_controller_page_albums": "Savkopiado de albumoj",
|
|
||||||
"backup_controller_page_background_app_refresh_disabled_content": "Por aktivigi la fonan savkopiadon, ŝaltu fonan aktualigon de la apo en Agordoj > Ĝeneralaj > Fona aktualigo de apo.",
|
|
||||||
"backup_controller_page_background_app_refresh_disabled_title": "Fona aktualigo de apo malŝaltita",
|
|
||||||
"backup_controller_page_background_app_refresh_enable_button_text": "Iri al Agordoj",
|
|
||||||
"backup_controller_page_background_battery_info_link": "Montri al mi",
|
|
||||||
"backup_controller_page_background_battery_info_message": "Por bona funkciado de la fona savkopiado, bonvolu malŝalti optimumigon de bateria uzo por Immich.\n\nTiu funkcio dependas de via aparato, do vi devos mem serĉi helpon pri kiel atingi tion.",
|
|
||||||
"backup_controller_page_background_battery_info_ok": "Okej",
|
|
||||||
"backup_controller_page_background_battery_info_title": "Optimumigo de bateria uzo",
|
|
||||||
"backup_controller_page_background_charging": "Nur dum ŝargado",
|
|
||||||
"backup_controller_page_background_configure_error": "Malsukcesis agordi la fonan servon",
|
|
||||||
"backup_controller_page_background_delay": "Prokrasti savkopiadon de novaj elementoj: {duration}",
|
|
||||||
"backup_controller_page_background_description": "Ŝaltu la fonan servon por aŭtomate krei savkopion de novaj elementoj sen malfermi la apon",
|
|
||||||
"backup_controller_page_background_is_off": "Aŭtomata fona savkopiado estas malŝaltita",
|
|
||||||
"backup_controller_page_background_is_on": "Aŭtomata fona savkopiado estas ŝaltita",
|
|
||||||
"backup_controller_page_background_turn_off": "Malŝalti fonan servon",
|
|
||||||
"backup_controller_page_background_turn_on": "Ŝalti fonan servon",
|
|
||||||
"backup_controller_page_background_wifi": "Nur per vifio",
|
|
||||||
"backup_controller_page_backup": "Savkopiado",
|
|
||||||
"backup_controller_page_backup_selected": "Elektita(j): ",
|
|
||||||
"backup_controller_page_backup_sub": "Fotoj kaj videoj kun jama savkopio",
|
|
||||||
"backup_controller_page_created": "Kreita(j) je: {date}",
|
|
||||||
"backup_controller_page_desc_backup": "Ŝaltu malfonan savkopiadon por aŭtomate alŝuti novajn elementojn al la servilo kiam la apo estas malfermita.",
|
|
||||||
"backup_controller_page_excluded": "Ekskluzivita(j): ",
|
|
||||||
"backup_controller_page_failed": "Malsukcesis ({count})",
|
|
||||||
"backup_controller_page_filename": "Dosiernomo: {filename} [{size}]",
|
|
||||||
"backup_controller_page_id": "ID: {id}",
|
|
||||||
"backup_controller_page_info": "Informoj pri savkopio",
|
|
||||||
"backup_controller_page_none_selected": "Neniuj elektitaj",
|
|
||||||
"backup_controller_page_remainder": "Restas",
|
|
||||||
"backup_controller_page_remainder_sub": "Fotoj kaj videoj ankoraŭ ne savkopiitaj el la elektitaj",
|
|
||||||
"backup_controller_page_server_storage": "Stokado ĉe servilo",
|
|
||||||
"backup_controller_page_start_backup": "Komenci savkopiadon",
|
|
||||||
"backup_controller_page_status_off": "Aŭtomata malfona savkopiado estas malŝaltita",
|
|
||||||
"backup_controller_page_status_on": "Aŭtomata malfona savkopiado estas ŝaltita",
|
|
||||||
"backup_controller_page_storage_format": "{used} el {total} uzita",
|
|
||||||
"backup_controller_page_to_backup": "Albumoj savkopiotaj",
|
|
||||||
"backup_controller_page_total_sub": "Ĉiuj unikaj fotoj kaj videoj el elektitaj albumoj",
|
|
||||||
"backup_controller_page_turn_off": "Malŝalti malfonan savkopiadon",
|
|
||||||
"backup_controller_page_turn_on": "Ŝalti malfonan savkopiadon",
|
|
||||||
"backup_setting_subtitle": "Administri agordojn pri fona kaj malfona alŝutado",
|
"backup_setting_subtitle": "Administri agordojn pri fona kaj malfona alŝutado",
|
||||||
"backup_settings_subtitle": "Administri agordojn pri alŝutado",
|
"backup_settings_subtitle": "Administri agordojn pri alŝutado",
|
||||||
"cleanup_icloud_shared_albums_excluded": "Dividitaj albumoj ĉe iCloud estas ekskluditaj de la analizado",
|
"cleanup_icloud_shared_albums_excluded": "Dividitaj albumoj ĉe iCloud estas ekskluditaj de la analizado",
|
||||||
@@ -692,14 +453,11 @@
|
|||||||
"exclusion_pattern": "Skemo de ekskludo",
|
"exclusion_pattern": "Skemo de ekskludo",
|
||||||
"explore": "Esplori",
|
"explore": "Esplori",
|
||||||
"explorer": "Foliumilo",
|
"explorer": "Foliumilo",
|
||||||
"general": "Ĝeneralaj",
|
|
||||||
"manage_media_access_settings": "Malfermi agordaĵaron",
|
"manage_media_access_settings": "Malfermi agordaĵaron",
|
||||||
"manage_the_app_settings": "Agordi la apon",
|
"manage_the_app_settings": "Agordi la apon",
|
||||||
"missing": "Netraktitaj",
|
"missing": "Netraktitaj",
|
||||||
"networking_subtitle": "Administri agordojn pri finpunktoj de la servilo",
|
"networking_subtitle": "Administri agordojn pri finpunktoj de la servilo",
|
||||||
"no_devices": "Neniuj aprobitaj aparatoj",
|
|
||||||
"no_explore_results_message": "Alŝutu pli da fotoj por esplori vian kolekton.",
|
"no_explore_results_message": "Alŝutu pli da fotoj por esplori vian kolekton.",
|
||||||
"no_results_description": "Provu sinonimon aŭ pli ĝeneralan ŝlosilvorton",
|
|
||||||
"preferences_settings_subtitle": "Administri agordojn pri la apo",
|
"preferences_settings_subtitle": "Administri agordojn pri la apo",
|
||||||
"purchase_settings_server_activated": "La administranto respondecas pri la ŝlosilo de aŭtentikeco por la servilo",
|
"purchase_settings_server_activated": "La administranto respondecas pri la ŝlosilo de aŭtentikeco por la servilo",
|
||||||
"refresh": "Denove",
|
"refresh": "Denove",
|
||||||
|
|||||||
+12
-25
@@ -61,7 +61,7 @@
|
|||||||
"backup_onboarding_1_description": "Copia en un lugar externo, en la nube u otra ubicación física.",
|
"backup_onboarding_1_description": "Copia en un lugar externo, en la nube u otra ubicación física.",
|
||||||
"backup_onboarding_2_description": "copias locales en diferentes dispositivos. Incluye los archivos principales y una copia de seguridad local de dichos archivos.",
|
"backup_onboarding_2_description": "copias locales en diferentes dispositivos. Incluye los archivos principales y una copia de seguridad local de dichos archivos.",
|
||||||
"backup_onboarding_3_description": "copias totales de tu data, incluyendo los archivos originales. Incluye 1 copia fuera de sitio y 2 copias locales.",
|
"backup_onboarding_3_description": "copias totales de tu data, incluyendo los archivos originales. Incluye 1 copia fuera de sitio y 2 copias locales.",
|
||||||
"backup_onboarding_description": "Se recomienda una <backblaze-link>estrategia de copia de seguridad 3-2-1</backblaze-link> para proteger tus datos. Deberías mantener copias de las fotos y vídeos que subas, así como de la base de datos de Immich, para contar con una solución de copia de seguridad completa.",
|
"backup_onboarding_description": "Una estrategia de <backblaze-link>copia de seguridad 3-2-1</backblaze-link> es recomendada para proteger tu data. Deberías mantener tanto copias de tus fotos/videos subidos como de la base de datos de Immich para tener una solución de copia de seguridad integral.",
|
||||||
"backup_onboarding_footer": "Para obtener más información sobre cómo hacer una copia de seguridad de Immich, consulta la <link>documentación</link>.",
|
"backup_onboarding_footer": "Para obtener más información sobre cómo hacer una copia de seguridad de Immich, consulta la <link>documentación</link>.",
|
||||||
"backup_onboarding_parts_title": "Una copia de seguridad 3-2-1 incluye:",
|
"backup_onboarding_parts_title": "Una copia de seguridad 3-2-1 incluye:",
|
||||||
"backup_onboarding_title": "Copias de seguridad",
|
"backup_onboarding_title": "Copias de seguridad",
|
||||||
@@ -351,7 +351,7 @@
|
|||||||
"template_settings": "Plantillas de notificación",
|
"template_settings": "Plantillas de notificación",
|
||||||
"template_settings_description": "Gestione plantillas personalizadas para las notificaciones",
|
"template_settings_description": "Gestione plantillas personalizadas para las notificaciones",
|
||||||
"theme_custom_css_settings": "CSS personalizado",
|
"theme_custom_css_settings": "CSS personalizado",
|
||||||
"theme_custom_css_settings_description": "Las Hojas de Estilo permiten personalizar el diseño de Immich.",
|
"theme_custom_css_settings_description": "El CSS permite personalizar el diseño de Immich.",
|
||||||
"theme_settings": "Ajustes del tema",
|
"theme_settings": "Ajustes del tema",
|
||||||
"theme_settings_description": "Gestionar la personalización de la interfaz web de Immich",
|
"theme_settings_description": "Gestionar la personalización de la interfaz web de Immich",
|
||||||
"thumbnail_generation_job": "Generar miniaturas",
|
"thumbnail_generation_job": "Generar miniaturas",
|
||||||
@@ -372,7 +372,7 @@
|
|||||||
"transcoding_audio_codec": "Codec de audio",
|
"transcoding_audio_codec": "Codec de audio",
|
||||||
"transcoding_audio_codec_description": "Opus es la opción de mayor calidad, pero tiene menor compatibilidad con dispositivos o software antiguos.",
|
"transcoding_audio_codec_description": "Opus es la opción de mayor calidad, pero tiene menor compatibilidad con dispositivos o software antiguos.",
|
||||||
"transcoding_bitrate_description": "Vídeos con una tasa de bits superior a la máxima o que no están en un formato aceptado",
|
"transcoding_bitrate_description": "Vídeos con una tasa de bits superior a la máxima o que no están en un formato aceptado",
|
||||||
"transcoding_codecs_learn_more": "Para obtener más información sobre la terminología utilizada aquí, consulte la documentación de FFmpeg sobre <h264-link>el códec H.264</h264-link>, <hevc-link>el códec HEVC</hevc-link> y <vp9-link>el códec VP9</vp9-link>.",
|
"transcoding_codecs_learn_more": "Para obtener más información sobre la terminología utilizada aquí, consulte la documentación de FFmpeg sobre los codecs <h264-link>H.264</h264-link>, <hevc-link>HEVC</hevc-link> y <vp9-link>VP9</vp9-link>.",
|
||||||
"transcoding_constant_quality_mode": "Modo de calidad constante",
|
"transcoding_constant_quality_mode": "Modo de calidad constante",
|
||||||
"transcoding_constant_quality_mode_description": "ICQ es mejor que CQP, pero algunos dispositivos de aceleración de hardware no admiten este modo. Al configurar esta opción, se preferirá el modo especificado cuando se utilice codificación basada en calidad. NVENC lo ignora porque no es compatible con ICQ.",
|
"transcoding_constant_quality_mode_description": "ICQ es mejor que CQP, pero algunos dispositivos de aceleración de hardware no admiten este modo. Al configurar esta opción, se preferirá el modo especificado cuando se utilice codificación basada en calidad. NVENC lo ignora porque no es compatible con ICQ.",
|
||||||
"transcoding_constant_rate_factor": "Factor de tasa constante (-crf)",
|
"transcoding_constant_rate_factor": "Factor de tasa constante (-crf)",
|
||||||
@@ -411,7 +411,7 @@
|
|||||||
"transcoding_tone_mapping": "Mapeo de tonos",
|
"transcoding_tone_mapping": "Mapeo de tonos",
|
||||||
"transcoding_tone_mapping_description": "Intenta preservar la apariencia de los videos HDR cuando se convierten a SDR. Cada algoritmo realiza diferentes compensaciones en cuanto a color, detalle y brillo. Hable conserva los detalles, Mobius conserva el color y Reinhard conserva el brillo.",
|
"transcoding_tone_mapping_description": "Intenta preservar la apariencia de los videos HDR cuando se convierten a SDR. Cada algoritmo realiza diferentes compensaciones en cuanto a color, detalle y brillo. Hable conserva los detalles, Mobius conserva el color y Reinhard conserva el brillo.",
|
||||||
"transcoding_transcode_policy": "Políticas de transcodificación",
|
"transcoding_transcode_policy": "Políticas de transcodificación",
|
||||||
"transcoding_transcode_policy_description": "Política sobre cuándo se debe transcodificar un vídeo. Los vídeos HDR y vídeos con un formato de píxel diferente a YUV 4:2:0 siempre se transcodificarán (excepto si la transcodificación está desactivada).",
|
"transcoding_transcode_policy_description": "Política sobre cuándo se debe transcodificar un vídeo. Los vídeos HDR siempre se transcodificarán (excepto si la transcodificación está desactivada).",
|
||||||
"transcoding_two_pass_encoding": "Codificación en dos pasadas",
|
"transcoding_two_pass_encoding": "Codificación en dos pasadas",
|
||||||
"transcoding_two_pass_encoding_setting_description": "Transcodifica en dos pasadas para producir vídeos mejor codificados. Cuando la velocidad de bits máxima está habilitada (es necesaria para que funcione con H.264 y HEVC), este modo utiliza un rango de velocidad de bits basado en la velocidad de bits máxima e ignora CRF. Para VP9, se puede utilizar CRF si la tasa de bits máxima está deshabilitada.",
|
"transcoding_two_pass_encoding_setting_description": "Transcodifica en dos pasadas para producir vídeos mejor codificados. Cuando la velocidad de bits máxima está habilitada (es necesaria para que funcione con H.264 y HEVC), este modo utiliza un rango de velocidad de bits basado en la velocidad de bits máxima e ignora CRF. Para VP9, se puede utilizar CRF si la tasa de bits máxima está deshabilitada.",
|
||||||
"transcoding_video_codec": "Códecs de video",
|
"transcoding_video_codec": "Códecs de video",
|
||||||
@@ -459,7 +459,7 @@
|
|||||||
"advanced_settings_log_level_title": "Nivel de registro: {level}",
|
"advanced_settings_log_level_title": "Nivel de registro: {level}",
|
||||||
"advanced_settings_prefer_remote_subtitle": "Algunos dispositivos tardan mucho en cargar las miniaturas desde los recursos locales. Activa esta opción para cargar imágenes remotas en su lugar.",
|
"advanced_settings_prefer_remote_subtitle": "Algunos dispositivos tardan mucho en cargar las miniaturas desde los recursos locales. Activa esta opción para cargar imágenes remotas en su lugar.",
|
||||||
"advanced_settings_prefer_remote_title": "Preferir imágenes remotas",
|
"advanced_settings_prefer_remote_title": "Preferir imágenes remotas",
|
||||||
"advanced_settings_proxy_headers_subtitle": "Configura encabezados de proxy que Immich incluirá en cada petición de red",
|
"advanced_settings_proxy_headers_subtitle": "Configura encabezados HTTP que Immich incluirá en cada petición de red",
|
||||||
"advanced_settings_proxy_headers_title": "Cabeceras proxy personalizadas [EXPERIMENTAL]",
|
"advanced_settings_proxy_headers_title": "Cabeceras proxy personalizadas [EXPERIMENTAL]",
|
||||||
"advanced_settings_readonly_mode_subtitle": "Habilita el modo de solo lectura donde las fotografías sólo pueden ser vistas, funciones como seleccionar múltiples imágenes, compartir, transmitir, eliminar son deshabilitadas. Habilita/Deshabilita solo lectura vía el avatar del usuario en la pantalla principal",
|
"advanced_settings_readonly_mode_subtitle": "Habilita el modo de solo lectura donde las fotografías sólo pueden ser vistas, funciones como seleccionar múltiples imágenes, compartir, transmitir, eliminar son deshabilitadas. Habilita/Deshabilita solo lectura vía el avatar del usuario en la pantalla principal",
|
||||||
"advanced_settings_readonly_mode_title": "Modo solo lectura",
|
"advanced_settings_readonly_mode_title": "Modo solo lectura",
|
||||||
@@ -872,7 +872,7 @@
|
|||||||
"current_server_address": "Dirección actual del servidor",
|
"current_server_address": "Dirección actual del servidor",
|
||||||
"custom_date": "Fecha personalizada",
|
"custom_date": "Fecha personalizada",
|
||||||
"custom_locale": "Configuración regional personalizada",
|
"custom_locale": "Configuración regional personalizada",
|
||||||
"custom_locale_description": "Dar formato a fechas, horas y números según el idioma y región seleccionados",
|
"custom_locale_description": "Formatear fechas y números según el idioma y la región",
|
||||||
"custom_url": "URL personalizada",
|
"custom_url": "URL personalizada",
|
||||||
"cutoff_date_description": "Conserva fotos del último…",
|
"cutoff_date_description": "Conserva fotos del último…",
|
||||||
"cutoff_day": "{count, plural, one {día} other {días}}",
|
"cutoff_day": "{count, plural, one {día} other {días}}",
|
||||||
@@ -895,6 +895,8 @@
|
|||||||
"deduplication_criteria_2": "Conteo de datos EXIF",
|
"deduplication_criteria_2": "Conteo de datos EXIF",
|
||||||
"deduplication_info": "Información de Deduplicación",
|
"deduplication_info": "Información de Deduplicación",
|
||||||
"deduplication_info_description": "Para automáticamente preseleccionar recursos y eliminar duplicados en conjunto, nosotros consideramos lo siguiente:",
|
"deduplication_info_description": "Para automáticamente preseleccionar recursos y eliminar duplicados en conjunto, nosotros consideramos lo siguiente:",
|
||||||
|
"default_locale": "Configuración regional predeterminada",
|
||||||
|
"default_locale_description": "Formatee fechas y números según la configuración regional de su navegador",
|
||||||
"delete": "Eliminar",
|
"delete": "Eliminar",
|
||||||
"delete_action_confirmation_message": "¿Está seguro que desea eliminar este recurso? Esta acción lo moverá a la papelera del servidor y le preguntará si desea eliminarlo localmente",
|
"delete_action_confirmation_message": "¿Está seguro que desea eliminar este recurso? Esta acción lo moverá a la papelera del servidor y le preguntará si desea eliminarlo localmente",
|
||||||
"delete_action_prompt": "{count} eliminados",
|
"delete_action_prompt": "{count} eliminados",
|
||||||
@@ -1007,8 +1009,6 @@
|
|||||||
"editor_edits_applied_success": "Edición aplicada con éxito",
|
"editor_edits_applied_success": "Edición aplicada con éxito",
|
||||||
"editor_flip_horizontal": "Girar horizontalmente",
|
"editor_flip_horizontal": "Girar horizontalmente",
|
||||||
"editor_flip_vertical": "Girar verticalmente",
|
"editor_flip_vertical": "Girar verticalmente",
|
||||||
"editor_handle_corner": "{corner, select, top_left {Superior izquierda} top_right {Superior derecha} bottom_left {Inferior izquierda} bottom_right {Inferior derecha} other {Un}} controlador de esquina",
|
|
||||||
"editor_handle_edge": "{edge, select, top {Superior} bottom {Inferior} left {Izquierdo} right {Derecho} other {Un}} controlador de borde",
|
|
||||||
"editor_orientation": "Orientación",
|
"editor_orientation": "Orientación",
|
||||||
"editor_reset_all_changes": "Restablecer cambios",
|
"editor_reset_all_changes": "Restablecer cambios",
|
||||||
"editor_rotate_left": "Rotar 90º sentido antihorario",
|
"editor_rotate_left": "Rotar 90º sentido antihorario",
|
||||||
@@ -1074,7 +1074,6 @@
|
|||||||
"failed_to_update_notification_status": "Error al actualizar el estado de la notificación",
|
"failed_to_update_notification_status": "Error al actualizar el estado de la notificación",
|
||||||
"incorrect_email_or_password": "Contraseña o email incorrecto",
|
"incorrect_email_or_password": "Contraseña o email incorrecto",
|
||||||
"library_folder_already_exists": "Esta ruta de importación ya existe.",
|
"library_folder_already_exists": "Esta ruta de importación ya existe.",
|
||||||
"page_not_found": "Página no encontrada",
|
|
||||||
"paths_validation_failed": "Falló la validación en {paths, plural, one {# carpeta} other {# carpetas}}",
|
"paths_validation_failed": "Falló la validación en {paths, plural, one {# carpeta} other {# carpetas}}",
|
||||||
"profile_picture_transparent_pixels": "Las imágenes de perfil no pueden tener píxeles transparentes. Por favor amplíe y/o mueva la imagen.",
|
"profile_picture_transparent_pixels": "Las imágenes de perfil no pueden tener píxeles transparentes. Por favor amplíe y/o mueva la imagen.",
|
||||||
"quota_higher_than_disk_size": "Se ha establecido una cuota superior al tamaño del disco",
|
"quota_higher_than_disk_size": "Se ha establecido una cuota superior al tamaño del disco",
|
||||||
@@ -1219,7 +1218,6 @@
|
|||||||
"filter_description": "Condiciones para filtrar los recursos objetivo",
|
"filter_description": "Condiciones para filtrar los recursos objetivo",
|
||||||
"filter_people": "Filtrar personas",
|
"filter_people": "Filtrar personas",
|
||||||
"filter_places": "Filtrar lugares",
|
"filter_places": "Filtrar lugares",
|
||||||
"filter_tags": "Filtrar etiquetas",
|
|
||||||
"filters": "Filtros",
|
"filters": "Filtros",
|
||||||
"find_them_fast": "Encuéntrelos rápidamente por nombre con la búsqueda",
|
"find_them_fast": "Encuéntrelos rápidamente por nombre con la búsqueda",
|
||||||
"first": "Primero",
|
"first": "Primero",
|
||||||
@@ -1651,7 +1649,6 @@
|
|||||||
"only_favorites": "Solo favoritos",
|
"only_favorites": "Solo favoritos",
|
||||||
"open": "Abierto",
|
"open": "Abierto",
|
||||||
"open_calendar": "Abrir calendario",
|
"open_calendar": "Abrir calendario",
|
||||||
"open_in_browser": "Abrir en el navegador",
|
|
||||||
"open_in_map_view": "Abrir en la vista del mapa",
|
"open_in_map_view": "Abrir en la vista del mapa",
|
||||||
"open_in_openstreetmap": "Abrir en OpenStreetMap",
|
"open_in_openstreetmap": "Abrir en OpenStreetMap",
|
||||||
"open_the_search_filters": "Abre los filtros de búsqueda",
|
"open_the_search_filters": "Abre los filtros de búsqueda",
|
||||||
@@ -1811,8 +1808,9 @@
|
|||||||
"rate_asset": "Valorar recurso",
|
"rate_asset": "Valorar recurso",
|
||||||
"rating": "Valoración",
|
"rating": "Valoración",
|
||||||
"rating_clear": "Borrar calificación",
|
"rating_clear": "Borrar calificación",
|
||||||
"rating_count": "{count, plural, =0 {# estrella} one {# estrella} other {# estrellas}}",
|
"rating_count": "{count, plural, one {# estrella} other {# estrellas}}",
|
||||||
"rating_description": "Mostrar la clasificación exif en el panel de información",
|
"rating_description": "Mostrar la clasificación exif en el panel de información",
|
||||||
|
"rating_set": "Calificación establecida en {rating, plural, one {# estrella} other {# estrellas}}",
|
||||||
"reaction_options": "Opciones de reacción",
|
"reaction_options": "Opciones de reacción",
|
||||||
"read_changelog": "Leer registro de cambios",
|
"read_changelog": "Leer registro de cambios",
|
||||||
"readonly_mode_disabled": "Modo solo lectura deshabilitado",
|
"readonly_mode_disabled": "Modo solo lectura deshabilitado",
|
||||||
@@ -1884,10 +1882,7 @@
|
|||||||
"reset_pin_code_success": "Código PIN restablecido correctamente",
|
"reset_pin_code_success": "Código PIN restablecido correctamente",
|
||||||
"reset_pin_code_with_password": "Siempre puedes restablecer tu código PIN usando tu contraseña",
|
"reset_pin_code_with_password": "Siempre puedes restablecer tu código PIN usando tu contraseña",
|
||||||
"reset_sqlite": "Restablecer la base de datos SQLite",
|
"reset_sqlite": "Restablecer la base de datos SQLite",
|
||||||
"reset_sqlite_clear_app_data": "Limpiar datos",
|
"reset_sqlite_confirmation": "¿Estás seguro que deseas restablecer la base de datos SQLite? Deberás cerrar sesión y volver a iniciarla para resincronizar los datos",
|
||||||
"reset_sqlite_confirmation": "¿Seguro que quieres borrar los datos de la aplicación? Esto eliminará toda la configuración y cerrará tu sesión.",
|
|
||||||
"reset_sqlite_confirmation_note": "Nota: Deberás reiniciar la aplicación después de borrarla.",
|
|
||||||
"reset_sqlite_done": "Se han borrado los datos de la aplicación. Reinicie Immich y vuelva a iniciar sesión.",
|
|
||||||
"reset_sqlite_success": "Restablecer exitosamente la base de datos SQLite",
|
"reset_sqlite_success": "Restablecer exitosamente la base de datos SQLite",
|
||||||
"reset_to_default": "Restablecer los valores predeterminados",
|
"reset_to_default": "Restablecer los valores predeterminados",
|
||||||
"resolution": "Resolución",
|
"resolution": "Resolución",
|
||||||
@@ -1915,7 +1910,6 @@
|
|||||||
"saved_settings": "Configuraciones guardadas",
|
"saved_settings": "Configuraciones guardadas",
|
||||||
"say_something": "Comenta algo",
|
"say_something": "Comenta algo",
|
||||||
"scaffold_body_error_occurred": "Ha ocurrido un error",
|
"scaffold_body_error_occurred": "Ha ocurrido un error",
|
||||||
"scaffold_body_error_unrecoverable": "Se ha producido un error irrecuperable. Comparte el error y el seguimiento de la pila en Discord o GitHub para que podamos ayudarte. Si se indica, puedes borrar los datos de la aplicación a continuación.",
|
|
||||||
"scan": "Escanear",
|
"scan": "Escanear",
|
||||||
"scan_all_libraries": "Escanear todas las bibliotecas",
|
"scan_all_libraries": "Escanear todas las bibliotecas",
|
||||||
"scan_library": "Escanear",
|
"scan_library": "Escanear",
|
||||||
@@ -1951,7 +1945,6 @@
|
|||||||
"search_filter_ocr": "Buscar por OCR",
|
"search_filter_ocr": "Buscar por OCR",
|
||||||
"search_filter_people_title": "Seleccionar personas",
|
"search_filter_people_title": "Seleccionar personas",
|
||||||
"search_filter_star_rating": "Clasificación de estrellas",
|
"search_filter_star_rating": "Clasificación de estrellas",
|
||||||
"search_filter_tags_title": "Seleccionar etiquetas",
|
|
||||||
"search_for": "Buscar",
|
"search_for": "Buscar",
|
||||||
"search_for_existing_person": "Buscar persona existente",
|
"search_for_existing_person": "Buscar persona existente",
|
||||||
"search_no_more_result": "No hay más resultados",
|
"search_no_more_result": "No hay más resultados",
|
||||||
@@ -2031,9 +2024,6 @@
|
|||||||
"set_profile_picture": "Establecer foto de perfil",
|
"set_profile_picture": "Establecer foto de perfil",
|
||||||
"set_slideshow_to_fullscreen": "Mostrar diapositivas en pantalla completa",
|
"set_slideshow_to_fullscreen": "Mostrar diapositivas en pantalla completa",
|
||||||
"set_stack_primary_asset": "Establecer como recurso principal",
|
"set_stack_primary_asset": "Establecer como recurso principal",
|
||||||
"setting_image_navigation_enable_subtitle": "Si está habilitado, puedes navegar a la imagen anterior/siguiente tocando una cuarta parte más a la izquierda/derecha de la pantalla.",
|
|
||||||
"setting_image_navigation_enable_title": "Toca para navegar",
|
|
||||||
"setting_image_navigation_title": "Navegación de imágenes",
|
|
||||||
"setting_image_viewer_help": "El visor de detalles carga primero la miniatura pequeña, luego carga la vista previa de tamaño mediano (si está habilitada), finalmente carga la original (si está habilitada).",
|
"setting_image_viewer_help": "El visor de detalles carga primero la miniatura pequeña, luego carga la vista previa de tamaño mediano (si está habilitada), finalmente carga la original (si está habilitada).",
|
||||||
"setting_image_viewer_original_subtitle": "Activar para cargar la imagen en resolución original (¡muy grande!). Deshabilitar para reducir el consumo de datos (de red y caché).",
|
"setting_image_viewer_original_subtitle": "Activar para cargar la imagen en resolución original (¡muy grande!). Deshabilitar para reducir el consumo de datos (de red y caché).",
|
||||||
"setting_image_viewer_original_title": "Cargar imagen original",
|
"setting_image_viewer_original_title": "Cargar imagen original",
|
||||||
@@ -2312,7 +2302,6 @@
|
|||||||
"unstack_action_prompt": "{count} desapilado(s)",
|
"unstack_action_prompt": "{count} desapilado(s)",
|
||||||
"unstacked_assets_count": "Desapilado(s) {count, plural, one {# recurso} other {# recursos}}",
|
"unstacked_assets_count": "Desapilado(s) {count, plural, one {# recurso} other {# recursos}}",
|
||||||
"unsupported_field_type": "Tipo de campo no soportado",
|
"unsupported_field_type": "Tipo de campo no soportado",
|
||||||
"unsupported_file_type": "El archivo {file} no puede ser cargado porque su tipo de archivo {type} no es soportado.",
|
|
||||||
"untagged": "Sin etiqueta",
|
"untagged": "Sin etiqueta",
|
||||||
"untitled_workflow": "Flujo de trabajo sin título",
|
"untitled_workflow": "Flujo de trabajo sin título",
|
||||||
"up_next": "A continuación",
|
"up_next": "A continuación",
|
||||||
@@ -2339,8 +2328,6 @@
|
|||||||
"url": "URL",
|
"url": "URL",
|
||||||
"usage": "Uso",
|
"usage": "Uso",
|
||||||
"use_biometric": "Uso biométrico",
|
"use_biometric": "Uso biométrico",
|
||||||
"use_browser_locale": "Utilizar la localización del navegador",
|
|
||||||
"use_browser_locale_description": "Dar formato a fechas, horas y números según la localización de su navegador",
|
|
||||||
"use_current_connection": "Utilice la conexión actual",
|
"use_current_connection": "Utilice la conexión actual",
|
||||||
"use_custom_date_range": "Usa un intervalo de fechas personalizado",
|
"use_custom_date_range": "Usa un intervalo de fechas personalizado",
|
||||||
"user": "Usuario",
|
"user": "Usuario",
|
||||||
@@ -2366,7 +2353,7 @@
|
|||||||
"variables": "Variables",
|
"variables": "Variables",
|
||||||
"version": "Versión",
|
"version": "Versión",
|
||||||
"version_announcement_closing": "Tu amigo, Alex",
|
"version_announcement_closing": "Tu amigo, Alex",
|
||||||
"version_announcement_message": "¡Hola! Hay una nueva versión de Immich disponible. Tómese un tiempo para leer las <link>notas de la versión</link> para asegurarse de que su configuración esté actualizada y evitar errores de configuración, especialmente si utiliza WatchTower o cualquier mecanismo que se encargue de actualizar su instancia de Immich automáticamente.",
|
"version_announcement_message": "¡Hola! Hay una nueva versión de Immich disponible. Tómese un tiempo para leer las <link> notas de la versión </link> para asegurarse de que su configuración esté actualizada y evitar errores de configuración, especialmente si utiliza WatchTower o cualquier mecanismo que se encargue de actualizar su instancia de Immich automáticamente.",
|
||||||
"version_history": "Historial de versiones",
|
"version_history": "Historial de versiones",
|
||||||
"version_history_item": "Instalada {version} el {date}",
|
"version_history_item": "Instalada {version} el {date}",
|
||||||
"video": "Vídeo",
|
"video": "Vídeo",
|
||||||
|
|||||||
+8
-21
@@ -5,7 +5,7 @@
|
|||||||
"acknowledge": "Sain aru",
|
"acknowledge": "Sain aru",
|
||||||
"action": "Tegevus",
|
"action": "Tegevus",
|
||||||
"action_common_update": "Uuenda",
|
"action_common_update": "Uuenda",
|
||||||
"action_description": "Tegevused, mida teostada filtreeritud üksustega",
|
"action_description": "Komplekt tegevusi, mida teostada filtreeritud üksustega",
|
||||||
"actions": "Tegevused",
|
"actions": "Tegevused",
|
||||||
"active": "Aktiivne",
|
"active": "Aktiivne",
|
||||||
"active_count": "Aktiivsed: {count}",
|
"active_count": "Aktiivsed: {count}",
|
||||||
@@ -411,7 +411,7 @@
|
|||||||
"transcoding_tone_mapping": "Toonivastendus",
|
"transcoding_tone_mapping": "Toonivastendus",
|
||||||
"transcoding_tone_mapping_description": "Üritab säilitada HDR videote kvaliteeti SDR-iks teisendamisel. Iga algoritm teeb värvi, detailide ja ereduse osas erinevaid kompromisse. Hable säilitab detaile, Mobius säilitab värve ning Reinhard säilitab eredust.",
|
"transcoding_tone_mapping_description": "Üritab säilitada HDR videote kvaliteeti SDR-iks teisendamisel. Iga algoritm teeb värvi, detailide ja ereduse osas erinevaid kompromisse. Hable säilitab detaile, Mobius säilitab värve ning Reinhard säilitab eredust.",
|
||||||
"transcoding_transcode_policy": "Transkodeerimise reegel",
|
"transcoding_transcode_policy": "Transkodeerimise reegel",
|
||||||
"transcoding_transcode_policy_description": "Reegel, millal tuleks videot transkodeerida. HDR-videod ja muu piksliformaadiga kui YUV 4:2:0 videod transkodeeritakse alati (v.a. kui transkodeerimine on keelatud).",
|
"transcoding_transcode_policy_description": "Reegel, millal tuleks videot transkodeerida. HDR-videosid transkodeeritakse alati (v.a. kui transkodeerimine on keelatud).",
|
||||||
"transcoding_two_pass_encoding": "Kahekäiguline kodeerimine",
|
"transcoding_two_pass_encoding": "Kahekäiguline kodeerimine",
|
||||||
"transcoding_two_pass_encoding_setting_description": "Transkodeeri kahes osas, et parandada kodeeritud videote kvaliteeti. Maksimaalse bitisageduse puhul (mis on vajalik H.264 ja HEVC jaoks) kasutab see režiim bitisageduse vahemikku ja ignoreerib CRF-i. VP9 puhul saab kasutada CRF-i, kui maksimaalset bitisagedust pole määratud.",
|
"transcoding_two_pass_encoding_setting_description": "Transkodeeri kahes osas, et parandada kodeeritud videote kvaliteeti. Maksimaalse bitisageduse puhul (mis on vajalik H.264 ja HEVC jaoks) kasutab see režiim bitisageduse vahemikku ja ignoreerib CRF-i. VP9 puhul saab kasutada CRF-i, kui maksimaalset bitisagedust pole määratud.",
|
||||||
"transcoding_video_codec": "Videokoodek",
|
"transcoding_video_codec": "Videokoodek",
|
||||||
@@ -872,7 +872,7 @@
|
|||||||
"current_server_address": "Praegune serveri aadress",
|
"current_server_address": "Praegune serveri aadress",
|
||||||
"custom_date": "Muu kuupäev",
|
"custom_date": "Muu kuupäev",
|
||||||
"custom_locale": "Kohandatud lokaat",
|
"custom_locale": "Kohandatud lokaat",
|
||||||
"custom_locale_description": "Vorminda kuupäevad, kellaajad ja arvud vastavalt valitud keelele ja regioonile",
|
"custom_locale_description": "Vorminda kuupäevad ja arvud vastavalt keelele ja regioonile",
|
||||||
"custom_url": "Kohandatud URL",
|
"custom_url": "Kohandatud URL",
|
||||||
"cutoff_date_description": "Jäta alles fotod ja videod viimasest…",
|
"cutoff_date_description": "Jäta alles fotod ja videod viimasest…",
|
||||||
"cutoff_day": "{count, plural, one {päev} other {päeva}}",
|
"cutoff_day": "{count, plural, one {päev} other {päeva}}",
|
||||||
@@ -895,6 +895,8 @@
|
|||||||
"deduplication_criteria_2": "EXIF andmete hulk",
|
"deduplication_criteria_2": "EXIF andmete hulk",
|
||||||
"deduplication_info": "Dedubleerimise info",
|
"deduplication_info": "Dedubleerimise info",
|
||||||
"deduplication_info_description": "Üksuste automaatsel eelvalimisel ja duplikaatide eemaldamisel võetakse arvesse:",
|
"deduplication_info_description": "Üksuste automaatsel eelvalimisel ja duplikaatide eemaldamisel võetakse arvesse:",
|
||||||
|
"default_locale": "Vaikimisi lokaat",
|
||||||
|
"default_locale_description": "Vorminda kuupäevad ja numbrid vastavalt brauseri lokaadile",
|
||||||
"delete": "Kustuta",
|
"delete": "Kustuta",
|
||||||
"delete_action_confirmation_message": "Kas oled kindel, et soovid selle üksuse kustutada? See toiming liigutab üksuse serveri prügikasti ja küsib, kas soovid selle lokaalselt kustutada",
|
"delete_action_confirmation_message": "Kas oled kindel, et soovid selle üksuse kustutada? See toiming liigutab üksuse serveri prügikasti ja küsib, kas soovid selle lokaalselt kustutada",
|
||||||
"delete_action_prompt": "{count} kustutatud",
|
"delete_action_prompt": "{count} kustutatud",
|
||||||
@@ -1007,8 +1009,6 @@
|
|||||||
"editor_edits_applied_success": "Muudatused edukalt rakendatud",
|
"editor_edits_applied_success": "Muudatused edukalt rakendatud",
|
||||||
"editor_flip_horizontal": "Peegelda horisontaalselt",
|
"editor_flip_horizontal": "Peegelda horisontaalselt",
|
||||||
"editor_flip_vertical": "Peegelda vertikaalselt",
|
"editor_flip_vertical": "Peegelda vertikaalselt",
|
||||||
"editor_handle_corner": "{corner, select, top_left {Vasak ülemine nurk} top_right {Parem ülemine nurk} bottom_left {Vasak alumine nurk} bottom_right {Parem alumine nurk} other {Nurk}}",
|
|
||||||
"editor_handle_edge": "{edge, select, top {Ülemine serv} bottom {Alumine serv} left {Vasak serv} right {Parem serv} other {Serv}}",
|
|
||||||
"editor_orientation": "Orientatsioon",
|
"editor_orientation": "Orientatsioon",
|
||||||
"editor_reset_all_changes": "Tühista muudatused",
|
"editor_reset_all_changes": "Tühista muudatused",
|
||||||
"editor_rotate_left": "Pööra 90° vastupäeva",
|
"editor_rotate_left": "Pööra 90° vastupäeva",
|
||||||
@@ -1074,7 +1074,6 @@
|
|||||||
"failed_to_update_notification_status": "Teavituste seisundi uuendamine ebaõnnestus",
|
"failed_to_update_notification_status": "Teavituste seisundi uuendamine ebaõnnestus",
|
||||||
"incorrect_email_or_password": "Vale e-posti aadress või parool",
|
"incorrect_email_or_password": "Vale e-posti aadress või parool",
|
||||||
"library_folder_already_exists": "See imporditee on juba olemas.",
|
"library_folder_already_exists": "See imporditee on juba olemas.",
|
||||||
"page_not_found": "Lehekülge ei leitud",
|
|
||||||
"paths_validation_failed": "{paths, plural, one {# tee} other {# teed}} ei valideerunud",
|
"paths_validation_failed": "{paths, plural, one {# tee} other {# teed}} ei valideerunud",
|
||||||
"profile_picture_transparent_pixels": "Profiilipildis ei tohi olla läbipaistvaid piksleid. Palun suumi sisse ja/või liiguta pilti.",
|
"profile_picture_transparent_pixels": "Profiilipildis ei tohi olla läbipaistvaid piksleid. Palun suumi sisse ja/või liiguta pilti.",
|
||||||
"quota_higher_than_disk_size": "Määratud kvoot on suurem kui kettamaht",
|
"quota_higher_than_disk_size": "Määratud kvoot on suurem kui kettamaht",
|
||||||
@@ -1219,7 +1218,6 @@
|
|||||||
"filter_description": "Tingimused, mille alusel üksuseid filtreerida",
|
"filter_description": "Tingimused, mille alusel üksuseid filtreerida",
|
||||||
"filter_people": "Filtreeri isikuid",
|
"filter_people": "Filtreeri isikuid",
|
||||||
"filter_places": "Filtreeri kohti",
|
"filter_places": "Filtreeri kohti",
|
||||||
"filter_tags": "Filtreeri silte",
|
|
||||||
"filters": "Filtrid",
|
"filters": "Filtrid",
|
||||||
"find_them_fast": "Leia teda kiiresti nime järgi otsides",
|
"find_them_fast": "Leia teda kiiresti nime järgi otsides",
|
||||||
"first": "Esimene",
|
"first": "Esimene",
|
||||||
@@ -1651,7 +1649,6 @@
|
|||||||
"only_favorites": "Ainult lemmikud",
|
"only_favorites": "Ainult lemmikud",
|
||||||
"open": "Ava",
|
"open": "Ava",
|
||||||
"open_calendar": "Ava kalender",
|
"open_calendar": "Ava kalender",
|
||||||
"open_in_browser": "Ava brauseris",
|
|
||||||
"open_in_map_view": "Ava kaardi vaates",
|
"open_in_map_view": "Ava kaardi vaates",
|
||||||
"open_in_openstreetmap": "Ava OpenStreetMap",
|
"open_in_openstreetmap": "Ava OpenStreetMap",
|
||||||
"open_the_search_filters": "Ava otsingufiltrid",
|
"open_the_search_filters": "Ava otsingufiltrid",
|
||||||
@@ -1811,8 +1808,9 @@
|
|||||||
"rate_asset": "Hinda üksust",
|
"rate_asset": "Hinda üksust",
|
||||||
"rating": "Hinnang",
|
"rating": "Hinnang",
|
||||||
"rating_clear": "Tühjenda hinnang",
|
"rating_clear": "Tühjenda hinnang",
|
||||||
"rating_count": "{count, plural, =0 {Hindamata} one {# tärn} other {# tärni}}",
|
"rating_count": "{count, plural, one {# tärn} other {# tärni}}",
|
||||||
"rating_description": "Kuva infopaneelis EXIF hinnangut",
|
"rating_description": "Kuva infopaneelis EXIF hinnangut",
|
||||||
|
"rating_set": "Hinnanguks seatud {rating, plural, one {# tärn} other {# tärni}}",
|
||||||
"reaction_options": "Reaktsiooni valikud",
|
"reaction_options": "Reaktsiooni valikud",
|
||||||
"read_changelog": "Vaata muudatuste ülevaadet",
|
"read_changelog": "Vaata muudatuste ülevaadet",
|
||||||
"readonly_mode_disabled": "Kirjutuskaitserežiim välja lülitatud",
|
"readonly_mode_disabled": "Kirjutuskaitserežiim välja lülitatud",
|
||||||
@@ -1884,10 +1882,7 @@
|
|||||||
"reset_pin_code_success": "PIN-kood edukalt lähtestatud",
|
"reset_pin_code_success": "PIN-kood edukalt lähtestatud",
|
||||||
"reset_pin_code_with_password": "Saad oma PIN-koodi alati oma parooli abil lähtestada",
|
"reset_pin_code_with_password": "Saad oma PIN-koodi alati oma parooli abil lähtestada",
|
||||||
"reset_sqlite": "Lähtesta SQLite andmebaas",
|
"reset_sqlite": "Lähtesta SQLite andmebaas",
|
||||||
"reset_sqlite_clear_app_data": "Kustuta andmed",
|
"reset_sqlite_confirmation": "Kas oled kindel, et soovid SQLite andmebaasi lähtestada? Andmete uuesti sünkroonimiseks pead välja ja jälle sisse logima",
|
||||||
"reset_sqlite_confirmation": "Kas oled kindel, et soovid rakenduse andmed kustutada? See eemaldab kõik seaded ja logib su välja.",
|
|
||||||
"reset_sqlite_confirmation_note": "Märkus: Pärast kustutamist pead rakenduse taasavama.",
|
|
||||||
"reset_sqlite_done": "Rakenduse andmed kustutatud. Taaskäivita Immich ja logi uuesti sisse.",
|
|
||||||
"reset_sqlite_success": "SQLite andmebaas edukalt lähtestatud",
|
"reset_sqlite_success": "SQLite andmebaas edukalt lähtestatud",
|
||||||
"reset_to_default": "Lähtesta",
|
"reset_to_default": "Lähtesta",
|
||||||
"resolution": "Resolutsioon",
|
"resolution": "Resolutsioon",
|
||||||
@@ -1915,7 +1910,6 @@
|
|||||||
"saved_settings": "Seaded salvestatud",
|
"saved_settings": "Seaded salvestatud",
|
||||||
"say_something": "Ütle midagi",
|
"say_something": "Ütle midagi",
|
||||||
"scaffold_body_error_occurred": "Tekkis viga",
|
"scaffold_body_error_occurred": "Tekkis viga",
|
||||||
"scaffold_body_error_unrecoverable": "Esines parandumatu viga. Palun jaga viga ja pinujälge Discord'is või GitHub'is, et saaksime aidata. Kui seda soovitatakse, saad allpool rakenduse andmed kustutada.",
|
|
||||||
"scan": "Otsi",
|
"scan": "Otsi",
|
||||||
"scan_all_libraries": "Skaneeri kõik kogud",
|
"scan_all_libraries": "Skaneeri kõik kogud",
|
||||||
"scan_library": "Skaneeri",
|
"scan_library": "Skaneeri",
|
||||||
@@ -1951,7 +1945,6 @@
|
|||||||
"search_filter_ocr": "Otsi OCR-i abil",
|
"search_filter_ocr": "Otsi OCR-i abil",
|
||||||
"search_filter_people_title": "Vali isikud",
|
"search_filter_people_title": "Vali isikud",
|
||||||
"search_filter_star_rating": "Hinnang",
|
"search_filter_star_rating": "Hinnang",
|
||||||
"search_filter_tags_title": "Vali sildid",
|
|
||||||
"search_for": "Otsi",
|
"search_for": "Otsi",
|
||||||
"search_for_existing_person": "Otsi olemasolevat isikut",
|
"search_for_existing_person": "Otsi olemasolevat isikut",
|
||||||
"search_no_more_result": "Rohkem vasteid pole",
|
"search_no_more_result": "Rohkem vasteid pole",
|
||||||
@@ -2031,9 +2024,6 @@
|
|||||||
"set_profile_picture": "Sea profiilipilt",
|
"set_profile_picture": "Sea profiilipilt",
|
||||||
"set_slideshow_to_fullscreen": "Kuva slaidiesitlus täisekraanil",
|
"set_slideshow_to_fullscreen": "Kuva slaidiesitlus täisekraanil",
|
||||||
"set_stack_primary_asset": "Sea peamiseks üksuseks",
|
"set_stack_primary_asset": "Sea peamiseks üksuseks",
|
||||||
"setting_image_navigation_enable_subtitle": "Kui lubatud, saad liikuda eelmise/järgmise pildi juurde ekraani vasakut/paremat serva puudutades.",
|
|
||||||
"setting_image_navigation_enable_title": "Puudutusega navigeerimine",
|
|
||||||
"setting_image_navigation_title": "Piltide navigeerimine",
|
|
||||||
"setting_image_viewer_help": "Detailivaatur laadib kõigepealt väikese pisipildi, seejärel keskmises mõõdus eelvaate (kui lubatud) ja lõpuks originaalpildi (kui lubatud).",
|
"setting_image_viewer_help": "Detailivaatur laadib kõigepealt väikese pisipildi, seejärel keskmises mõõdus eelvaate (kui lubatud) ja lõpuks originaalpildi (kui lubatud).",
|
||||||
"setting_image_viewer_original_subtitle": "Lülita sisse, et laadida algne täisresolutsiooniga pilt (suur!). Lülita välja, et vähendada andmekasutust (nii võrgu kui seadme puhvri).",
|
"setting_image_viewer_original_subtitle": "Lülita sisse, et laadida algne täisresolutsiooniga pilt (suur!). Lülita välja, et vähendada andmekasutust (nii võrgu kui seadme puhvri).",
|
||||||
"setting_image_viewer_original_title": "Laadi algne pilt",
|
"setting_image_viewer_original_title": "Laadi algne pilt",
|
||||||
@@ -2312,7 +2302,6 @@
|
|||||||
"unstack_action_prompt": "{count} eraldatud",
|
"unstack_action_prompt": "{count} eraldatud",
|
||||||
"unstacked_assets_count": "{count, plural, one {# üksus} other {# üksust}} eraldatud",
|
"unstacked_assets_count": "{count, plural, one {# üksus} other {# üksust}} eraldatud",
|
||||||
"unsupported_field_type": "Mittetoetatud välja tüüp",
|
"unsupported_field_type": "Mittetoetatud välja tüüp",
|
||||||
"unsupported_file_type": "Faili {file} ei saa üles laadida, kuna selle tüüp {type} ei ole toetatud.",
|
|
||||||
"untagged": "Sildistamata",
|
"untagged": "Sildistamata",
|
||||||
"untitled_workflow": "Pealkirjata töövoog",
|
"untitled_workflow": "Pealkirjata töövoog",
|
||||||
"up_next": "Järgmine",
|
"up_next": "Järgmine",
|
||||||
@@ -2339,8 +2328,6 @@
|
|||||||
"url": "URL",
|
"url": "URL",
|
||||||
"usage": "Kasutus",
|
"usage": "Kasutus",
|
||||||
"use_biometric": "Kasuta biomeetriat",
|
"use_biometric": "Kasuta biomeetriat",
|
||||||
"use_browser_locale": "Kasuta brauseri lokaati",
|
|
||||||
"use_browser_locale_description": "Vorminda kuupäevad, kellaajad ja arvud vastavalt brauseri lokaadile",
|
|
||||||
"use_current_connection": "Kasuta praegust ühendust",
|
"use_current_connection": "Kasuta praegust ühendust",
|
||||||
"use_custom_date_range": "Kasuta kohandatud kuupäevavahemikku",
|
"use_custom_date_range": "Kasuta kohandatud kuupäevavahemikku",
|
||||||
"user": "Kasutaja",
|
"user": "Kasutaja",
|
||||||
|
|||||||
@@ -14,9 +14,6 @@
|
|||||||
"add_a_location": "Kokapena gehitu",
|
"add_a_location": "Kokapena gehitu",
|
||||||
"add_a_name": "Izena gehitu",
|
"add_a_name": "Izena gehitu",
|
||||||
"add_a_title": "Izenburua gehitu",
|
"add_a_title": "Izenburua gehitu",
|
||||||
"add_action": "Ekintza gehitu",
|
|
||||||
"add_action_description": "Egin klik gauzatu beharreko ekintza bat gehitzeko",
|
|
||||||
"add_assets": "Aktiboak gehitu",
|
|
||||||
"add_birthday": "Urtebetetzea gehitu",
|
"add_birthday": "Urtebetetzea gehitu",
|
||||||
"add_endpoint": "Endpoint-a gehitu",
|
"add_endpoint": "Endpoint-a gehitu",
|
||||||
"add_exclusion_pattern": "Bazterketa eredua gehitu",
|
"add_exclusion_pattern": "Bazterketa eredua gehitu",
|
||||||
|
|||||||
+26
-105
@@ -3,10 +3,9 @@
|
|||||||
"account": "Tili",
|
"account": "Tili",
|
||||||
"account_settings": "Tilin asetukset",
|
"account_settings": "Tilin asetukset",
|
||||||
"acknowledge": "Hyväksy",
|
"acknowledge": "Hyväksy",
|
||||||
"action": "Toiminto",
|
"action": "Toiminta",
|
||||||
"action_common_update": "Päivitä",
|
"action_common_update": "Päivitä",
|
||||||
"action_description": "Lista toimista, jotka toteutetaan suodatettuun sisältöön",
|
"actions": "Toimintoja",
|
||||||
"actions": "Toiminnot",
|
|
||||||
"active": "Aktiivinen",
|
"active": "Aktiivinen",
|
||||||
"active_count": "Aktiivisia: {count}",
|
"active_count": "Aktiivisia: {count}",
|
||||||
"activity": "Tapahtumat",
|
"activity": "Tapahtumat",
|
||||||
@@ -18,7 +17,6 @@
|
|||||||
"add_a_title": "Lisää otsikko",
|
"add_a_title": "Lisää otsikko",
|
||||||
"add_action": "Lisää toiminto",
|
"add_action": "Lisää toiminto",
|
||||||
"add_action_description": "Klikkaa lisätäksesi suoritettava toiminto",
|
"add_action_description": "Klikkaa lisätäksesi suoritettava toiminto",
|
||||||
"add_assets": "Lisää sisältöä",
|
|
||||||
"add_birthday": "Lisää syntymäpäivä",
|
"add_birthday": "Lisää syntymäpäivä",
|
||||||
"add_endpoint": "Lisää päätepiste",
|
"add_endpoint": "Lisää päätepiste",
|
||||||
"add_exclusion_pattern": "Lisää poissulkemismalli",
|
"add_exclusion_pattern": "Lisää poissulkemismalli",
|
||||||
@@ -49,7 +47,7 @@
|
|||||||
"admin": {
|
"admin": {
|
||||||
"add_exclusion_pattern_description": "Lisää mallit, jonka mukaan jätetään tiedostoja pois. Jokerimerkit *, ** ja ? ovat tuettuna. Jättääksesi pois kaikki tiedostot mistä tahansa löytyvästä kansiosta \"Raw\" käytä \"**/Raw/**\". Jättääksesi pois kaikki \". tif\" päätteiset tiedot, käytä \"**/*.tif\". Jättääksesi pois tarkan tiedostopolun, käytä \"/path/to/ignore/**\".",
|
"add_exclusion_pattern_description": "Lisää mallit, jonka mukaan jätetään tiedostoja pois. Jokerimerkit *, ** ja ? ovat tuettuna. Jättääksesi pois kaikki tiedostot mistä tahansa löytyvästä kansiosta \"Raw\" käytä \"**/Raw/**\". Jättääksesi pois kaikki \". tif\" päätteiset tiedot, käytä \"**/*.tif\". Jättääksesi pois tarkan tiedostopolun, käytä \"/path/to/ignore/**\".",
|
||||||
"admin_user": "Ylläpitäjä",
|
"admin_user": "Ylläpitäjä",
|
||||||
"asset_offline_description": "Ulkoista kirjaston kohdetta ei enää löydy levyltä, ja se on siirretty roskakoriin. Jos tiedosto siirrettiin kirjaston sisällä, tarkista aikajanaltasi uusi vastaava kohde. Palauttaaksesi tämän kohteen, varmista, että alla oleva tiedostopolku on Immichin käytettävissä ja skannaa kirjasto uudelleen.",
|
"asset_offline_description": "Ulkoista kirjaston resurssia ei enää löydy levyltä, ja se on siirretty roskakoriin. Jos tiedosto siirrettiin kirjaston sisällä, tarkista aikajanaltasi uusi vastaava resurssi. Palauttaaksesi tämän resurssin, varmista, että alla oleva tiedostopolku on Immichin käytettävissä ja skannaa kirjasto uudelleen.",
|
||||||
"authentication_settings": "Autentikointiasetukset",
|
"authentication_settings": "Autentikointiasetukset",
|
||||||
"authentication_settings_description": "Hallitse salasana-, OAuth- ja muut autentikoinnin asetukset",
|
"authentication_settings_description": "Hallitse salasana-, OAuth- ja muut autentikoinnin asetukset",
|
||||||
"authentication_settings_disable_all": "Haluatko varmasti poistaa kaikki kirjautumistavat käytöstä? Kirjautuminen on tämän jälkeen mahdotonta.",
|
"authentication_settings_disable_all": "Haluatko varmasti poistaa kaikki kirjautumistavat käytöstä? Kirjautuminen on tämän jälkeen mahdotonta.",
|
||||||
@@ -101,11 +99,10 @@
|
|||||||
"image_prefer_embedded_preview_setting_description": "Käytä RAW-kuviin upotettuja esikatseluja kuvankäsittelyn syötteenä ja aina kun mahdollista. Tämä voi tarjota tarkempia värejä joillekin kuville, mutta esikatselun laatu riippuu kamerasta ja kuvassa voi olla enemmän pakkausartefakteja.",
|
"image_prefer_embedded_preview_setting_description": "Käytä RAW-kuviin upotettuja esikatseluja kuvankäsittelyn syötteenä ja aina kun mahdollista. Tämä voi tarjota tarkempia värejä joillekin kuville, mutta esikatselun laatu riippuu kamerasta ja kuvassa voi olla enemmän pakkausartefakteja.",
|
||||||
"image_prefer_wide_gamut": "Suosi laajaa väriskaalaa",
|
"image_prefer_wide_gamut": "Suosi laajaa väriskaalaa",
|
||||||
"image_prefer_wide_gamut_setting_description": "Käytä Display P3 -nimiavaruutta pikkukuville. Tämä säilöö värien vivahteet paremmin, mutta kuvat saattavat näyttää erilaisilta vanhemmissa laitteissa. sRGB-kuvat pidetään muuttumattomina, jottei värit muuttuisi.",
|
"image_prefer_wide_gamut_setting_description": "Käytä Display P3 -nimiavaruutta pikkukuville. Tämä säilöö värien vivahteet paremmin, mutta kuvat saattavat näyttää erilaisilta vanhemmissa laitteissa. sRGB-kuvat pidetään muuttumattomina, jottei värit muuttuisi.",
|
||||||
"image_preview_description": "Keskikokoinen kuva, josta metatiedot on poistettu, käytetään yksittäisen kohteen katseluun ja koneoppimiseen",
|
"image_preview_description": "Keskikokoinen kuva, josta metatiedot on poistettu, käytetään yksittäisen resurssin katseluun ja koneoppimiseen",
|
||||||
"image_preview_quality_description": "Esikatselulaatu 1-100. Korkeampi arvo on parempi, mutta tuottaa suurempia tiedostoja ja voi heikentää sovelluksen reagointikykyä. Matalan arvon asettaminen voi vaikuttaa koneoppimisen laatuun.",
|
"image_preview_quality_description": "Esikatselulaatu 1-100. Korkeampi arvo on parempi, mutta tuottaa suurempia tiedostoja ja voi heikentää sovelluksen reagointikykyä. Matalan arvon asettaminen voi vaikuttaa koneoppimisen laatuun.",
|
||||||
"image_preview_title": "Esikatselun asetukset",
|
"image_preview_title": "Esikatselun asetukset",
|
||||||
"image_progressive": "Progressiivinen",
|
"image_progressive": "Progressiivinen",
|
||||||
"image_progressive_description": "Prosessoi JPEG-kuvat progressiivisesti asteittaista näyttämistä varten. Tällä ei ole vaikutusta WebP-kuviin.",
|
|
||||||
"image_quality": "Laatu",
|
"image_quality": "Laatu",
|
||||||
"image_resolution": "Resoluutio",
|
"image_resolution": "Resoluutio",
|
||||||
"image_resolution_description": "Korkeammat resoluutiot voivat säilyttää enemmän yksityiskohtia, mutta niiden koodaus kestää kauemmin, tiedostokoot ovat suurempia ja ne voivat heikentää sovelluksen reagointikykyä.",
|
"image_resolution_description": "Korkeammat resoluutiot voivat säilyttää enemmän yksityiskohtia, mutta niiden koodaus kestää kauemmin, tiedostokoot ovat suurempia ja ne voivat heikentää sovelluksen reagointikykyä.",
|
||||||
@@ -272,7 +269,7 @@
|
|||||||
"oauth_auto_register": "Automaattinen rekisteröinti",
|
"oauth_auto_register": "Automaattinen rekisteröinti",
|
||||||
"oauth_auto_register_description": "Rekisteröi uudet OAuth:lla kirjautuvat käyttäjät automaattisesti",
|
"oauth_auto_register_description": "Rekisteröi uudet OAuth:lla kirjautuvat käyttäjät automaattisesti",
|
||||||
"oauth_button_text": "Painikkeen teksti",
|
"oauth_button_text": "Painikkeen teksti",
|
||||||
"oauth_client_secret_description": "Vaaditaan luottamukselliselle asiakasohjelmalle, tai jos julkinen asiakasohjelma ei tue PKCE:tä (Proof Key for Code Exchange).",
|
"oauth_client_secret_description": "Vaaditaan, jos OAuth-palveluntarjoaja ei tue PKCE:tä (Proof Key for Code Exchange)",
|
||||||
"oauth_enable_description": "Kirjaudu käyttäen OAuthia",
|
"oauth_enable_description": "Kirjaudu käyttäen OAuthia",
|
||||||
"oauth_mobile_redirect_uri": "Mobiilin uudelleenohjaus-URI",
|
"oauth_mobile_redirect_uri": "Mobiilin uudelleenohjaus-URI",
|
||||||
"oauth_mobile_redirect_uri_override": "Ohita mobiilin uudelleenohjaus-URI",
|
"oauth_mobile_redirect_uri_override": "Ohita mobiilin uudelleenohjaus-URI",
|
||||||
@@ -311,7 +308,7 @@
|
|||||||
"search_jobs": "Etsi tehtäviä…",
|
"search_jobs": "Etsi tehtäviä…",
|
||||||
"send_welcome_email": "Lähetä tervetuloviesti",
|
"send_welcome_email": "Lähetä tervetuloviesti",
|
||||||
"server_external_domain_settings": "Ulkoinen osoite",
|
"server_external_domain_settings": "Ulkoinen osoite",
|
||||||
"server_external_domain_settings_description": "Osoite ulkopuolisille linkeille",
|
"server_external_domain_settings_description": "Osoite julkisille linkeille, http(s):// mukaan lukien",
|
||||||
"server_public_users": "Julkiset käyttäjät",
|
"server_public_users": "Julkiset käyttäjät",
|
||||||
"server_public_users_description": "Kaikki käyttäjät (nimi ja sähköpostiosoite) luetellaan, kun käyttäjä lisätään jaettuihin albumeihin. Kun toiminto on poistettu käytöstä, käyttäjäluettelo on vain pääkäyttäjien käytettävissä.",
|
"server_public_users_description": "Kaikki käyttäjät (nimi ja sähköpostiosoite) luetellaan, kun käyttäjä lisätään jaettuihin albumeihin. Kun toiminto on poistettu käytöstä, käyttäjäluettelo on vain pääkäyttäjien käytettävissä.",
|
||||||
"server_settings": "Palvelimen asetukset",
|
"server_settings": "Palvelimen asetukset",
|
||||||
@@ -330,8 +327,8 @@
|
|||||||
"storage_template_hash_verification_enabled": "Tarkistussumman varmennus käytössä",
|
"storage_template_hash_verification_enabled": "Tarkistussumman varmennus käytössä",
|
||||||
"storage_template_hash_verification_enabled_description": "Ottaa käyttöön tarkistussummien laskennan. Älä poista käytöstä, ellet ole aivan varma seurauksista",
|
"storage_template_hash_verification_enabled_description": "Ottaa käyttöön tarkistussummien laskennan. Älä poista käytöstä, ellet ole aivan varma seurauksista",
|
||||||
"storage_template_migration": "Tallennustilan mallien migraatio",
|
"storage_template_migration": "Tallennustilan mallien migraatio",
|
||||||
"storage_template_migration_description": "Käytä nykyistä <link>{template}</link> aikaisemmin lähetettyihin kohteisiin",
|
"storage_template_migration_description": "Käytä nykyistä <link>{template}a</link> aikaisemmin lähetettyihin kohteisiin",
|
||||||
"storage_template_migration_info": "Tallennusmalli muuntaa kaikki tiedostopäätteet pieniksi kirjaimiksi. Mallipohjan muutokset koskevat vain uusia kohteita. Jos haluat käyttää mallipohjaa takautuvasti aiemmin ladattuihin kohteisiin, suorita <link>{job}</link>.",
|
"storage_template_migration_info": "Tallennusmalli muuntaa kaikki tiedostopäätteet pieniksi kirjaimiksi. Mallipohjan muutokset koskevat vain uusia resursseja. Jos haluat käyttää mallipohjaa takautuvasti aiemmin ladattuihin resursseihin, suorita <link>{job}</link>.",
|
||||||
"storage_template_migration_job": "Tallennustilan mallin muutostyö",
|
"storage_template_migration_job": "Tallennustilan mallin muutostyö",
|
||||||
"storage_template_more_details": "Saadaksesi lisätietoa tästä ominaisuudesta, katso <template-link>Tallennustilan Mallit</template-link> sekä <implications-link>mihin se vaikuttaa</implications-link>",
|
"storage_template_more_details": "Saadaksesi lisätietoa tästä ominaisuudesta, katso <template-link>Tallennustilan Mallit</template-link> sekä <implications-link>mihin se vaikuttaa</implications-link>",
|
||||||
"storage_template_onboarding_description_v2": "Päälle kytkettynä toiminto järjestelee tiedostot automaattisesti käyttäjän määrittämän mallin mukaisesti. Lisätietoja <link>dokumentaatiosta</link>..",
|
"storage_template_onboarding_description_v2": "Päälle kytkettynä toiminto järjestelee tiedostot automaattisesti käyttäjän määrittämän mallin mukaisesti. Lisätietoja <link>dokumentaatiosta</link>..",
|
||||||
@@ -351,7 +348,7 @@
|
|||||||
"template_settings": "Ilmoitusmallit",
|
"template_settings": "Ilmoitusmallit",
|
||||||
"template_settings_description": "Hallitse yksilöllisten ilmoitusten malleja",
|
"template_settings_description": "Hallitse yksilöllisten ilmoitusten malleja",
|
||||||
"theme_custom_css_settings": "Mukautettu CSS",
|
"theme_custom_css_settings": "Mukautettu CSS",
|
||||||
"theme_custom_css_settings_description": "Cascading Style Sheets mahdollistaa Immichin ulkoasun mukauttamisen.",
|
"theme_custom_css_settings_description": "Mukauta Immichin ulkoasua CSS:llä.",
|
||||||
"theme_settings": "Teeman asetukset",
|
"theme_settings": "Teeman asetukset",
|
||||||
"theme_settings_description": "Kustomoi Immichin web-käyttöliittymää",
|
"theme_settings_description": "Kustomoi Immichin web-käyttöliittymää",
|
||||||
"thumbnail_generation_job": "Luo pikkukuvat",
|
"thumbnail_generation_job": "Luo pikkukuvat",
|
||||||
@@ -411,7 +408,7 @@
|
|||||||
"transcoding_tone_mapping": "Sävykartoitus",
|
"transcoding_tone_mapping": "Sävykartoitus",
|
||||||
"transcoding_tone_mapping_description": "Pyrkii säilömään HDR-kuvien ulkonäön, kun muunnetaan peruskuvaksi. Jokaisella algoritmilla on omat heikkoutensa värien, yksityiskohtien tai kirkkauksien kesken. Hable säilöö yksityiskohdat, Mobius värit ja Reinhard kirkkaudet.",
|
"transcoding_tone_mapping_description": "Pyrkii säilömään HDR-kuvien ulkonäön, kun muunnetaan peruskuvaksi. Jokaisella algoritmilla on omat heikkoutensa värien, yksityiskohtien tai kirkkauksien kesken. Hable säilöö yksityiskohdat, Mobius värit ja Reinhard kirkkaudet.",
|
||||||
"transcoding_transcode_policy": "Transkoodauskäytäntö",
|
"transcoding_transcode_policy": "Transkoodauskäytäntö",
|
||||||
"transcoding_transcode_policy_description": "Käytäntö, miten video tulisi transkoodata. HDR-videot ja videot, joissa pikselimuoto on jokin muu kuin YUV 4:2:0, transkoodataan aina, paitsi jos transkoodaus on poistettu käytöstä.",
|
"transcoding_transcode_policy_description": "Käytäntö, miten video tulisi transkoodata. HDR-videot transkoodataan aina, paitsi jos transkoodaus on poistettu käytöstä.",
|
||||||
"transcoding_two_pass_encoding": "Two-pass enkoodaus",
|
"transcoding_two_pass_encoding": "Two-pass enkoodaus",
|
||||||
"transcoding_two_pass_encoding_setting_description": "Transkoodaa kahdessa vaiheessa tuottaaksesi paremmin koodattuja videoita. Kun maksimibittinopeus on käytössä (vaaditaan H.264- ja HEVC-koodaukselle), tämä tila käyttää bittinopeusaluetta, joka perustuu maksimibittinopeuteen ja ohittaa CRF. VP9 osalta CRF:ää voidaan käyttää, jos maksimibittinopeus on poistettu käytöstä.",
|
"transcoding_two_pass_encoding_setting_description": "Transkoodaa kahdessa vaiheessa tuottaaksesi paremmin koodattuja videoita. Kun maksimibittinopeus on käytössä (vaaditaan H.264- ja HEVC-koodaukselle), tämä tila käyttää bittinopeusaluetta, joka perustuu maksimibittinopeuteen ja ohittaa CRF. VP9 osalta CRF:ää voidaan käyttää, jos maksimibittinopeus on poistettu käytöstä.",
|
||||||
"transcoding_video_codec": "Videokoodekki",
|
"transcoding_video_codec": "Videokoodekki",
|
||||||
@@ -495,7 +492,6 @@
|
|||||||
"album_summary": "Albumi tiivistelmä",
|
"album_summary": "Albumi tiivistelmä",
|
||||||
"album_updated": "Albumi päivitetty",
|
"album_updated": "Albumi päivitetty",
|
||||||
"album_updated_setting_description": "Saa sähköpostia kun jaetussa albumissa on uutta sisältöä",
|
"album_updated_setting_description": "Saa sähköpostia kun jaetussa albumissa on uutta sisältöä",
|
||||||
"album_upload_assets": "Lataa kohteet tietokoneelta ja lisää ne albumiin",
|
|
||||||
"album_user_left": "Poistuttiin albumista {album}",
|
"album_user_left": "Poistuttiin albumista {album}",
|
||||||
"album_user_removed": "{user} poistettu",
|
"album_user_removed": "{user} poistettu",
|
||||||
"album_viewer_appbar_delete_confirm": "Haluatko varmasti poistaa tämän albumin tililtäsi?",
|
"album_viewer_appbar_delete_confirm": "Haluatko varmasti poistaa tämän albumin tililtäsi?",
|
||||||
@@ -572,11 +568,8 @@
|
|||||||
"asset_list_layout_sub_title": "Asettelu",
|
"asset_list_layout_sub_title": "Asettelu",
|
||||||
"asset_list_settings_subtitle": "Kuvaruudukon asettelu",
|
"asset_list_settings_subtitle": "Kuvaruudukon asettelu",
|
||||||
"asset_list_settings_title": "Kuvaruudukko",
|
"asset_list_settings_title": "Kuvaruudukko",
|
||||||
"asset_not_found_on_device_android": "Kohdetta ei löytynyt laitteelta",
|
|
||||||
"asset_not_found_on_device_ios": "Kohdetta ei löytynyt laitteelta. Jos käytät iCloudia, voi kohde olla käyttämättömissä iCloudiin tallennetun viallisen tiedoston vuoksi",
|
|
||||||
"asset_not_found_on_icloud": "Kohdetta ei löytynyt iCloudista. Kohde voi olla käyttämättömissä iCloudiin tallennetun viallisen tiedoston vuoksi",
|
|
||||||
"asset_offline": "Aineisto offline-tilassa",
|
"asset_offline": "Aineisto offline-tilassa",
|
||||||
"asset_offline_description": "Tätä ulkoista kohdetta ei enää löydy levyltä. Ole hyvä ja ota yhteyttä Immich-järjestelmänvalvojaan saadaksesi apua.",
|
"asset_offline_description": "Tätä ulkoista resurssia ei enää löydy levyltä. Ole hyvä ja ota yhteyttä Immich-järjestelmänvalvojaan saadaksesi apua.",
|
||||||
"asset_restored_successfully": "Kohde palautettu onnistuneesti",
|
"asset_restored_successfully": "Kohde palautettu onnistuneesti",
|
||||||
"asset_skipped": "Ohitettu",
|
"asset_skipped": "Ohitettu",
|
||||||
"asset_skipped_in_trash": "Roskakorissa",
|
"asset_skipped_in_trash": "Roskakorissa",
|
||||||
@@ -663,7 +656,7 @@
|
|||||||
"backup_controller_page_filename": "Tiedostonimi: {filename} [{size}]",
|
"backup_controller_page_filename": "Tiedostonimi: {filename} [{size}]",
|
||||||
"backup_controller_page_id": "ID: {id}",
|
"backup_controller_page_id": "ID: {id}",
|
||||||
"backup_controller_page_info": "Varmuuskopioinnin tiedot",
|
"backup_controller_page_info": "Varmuuskopioinnin tiedot",
|
||||||
"backup_controller_page_none_selected": "Ei mitään valittuna",
|
"backup_controller_page_none_selected": "Ei mitään",
|
||||||
"backup_controller_page_remainder": "Jäljellä",
|
"backup_controller_page_remainder": "Jäljellä",
|
||||||
"backup_controller_page_remainder_sub": "Varmuuskopiointia odottavat kuvat ja videot",
|
"backup_controller_page_remainder_sub": "Varmuuskopiointia odottavat kuvat ja videot",
|
||||||
"backup_controller_page_server_storage": "Palvelimen tallennustila",
|
"backup_controller_page_server_storage": "Palvelimen tallennustila",
|
||||||
@@ -764,13 +757,9 @@
|
|||||||
"cleanup_deleted_assets": "Siirretty {count} kohdetta laitteen roskakoriin",
|
"cleanup_deleted_assets": "Siirretty {count} kohdetta laitteen roskakoriin",
|
||||||
"cleanup_deleting": "Siirretään roskakoriin...",
|
"cleanup_deleting": "Siirretään roskakoriin...",
|
||||||
"cleanup_found_assets": "Löytyi {count} varmuuskopioitua kohdetta",
|
"cleanup_found_assets": "Löytyi {count} varmuuskopioitua kohdetta",
|
||||||
"cleanup_found_assets_with_size": "Löytyi {count} varmuuskopioitua kohdetta ({size})",
|
|
||||||
"cleanup_icloud_shared_albums_excluded": "Jaettuja iCloud-albumeja ei skannata",
|
"cleanup_icloud_shared_albums_excluded": "Jaettuja iCloud-albumeja ei skannata",
|
||||||
"cleanup_no_assets_found": "Kriteerejä vastaavia kohteita ei löytynyt. Levytilan vapautus voi poistaa vain kohteita, jotka on varmuuskopioitu palvelimelle",
|
"cleanup_no_assets_found": "Ehtojasi vastaavia varmuuskopioituja kohteita ei löytynyt",
|
||||||
"cleanup_preview_title": "Poistettavia kohteita {count}",
|
"cleanup_preview_title": "Poistettavia kohteita {count}",
|
||||||
"cleanup_step3_description": "Etsi tallennettua sisältöä joka vastaa valittua päivämäärää ja pidä asetukset.",
|
|
||||||
"cleanup_step4_summary": "{count} kohdetta (luotu ennen {date}) poistetaan paikalliselta laitteeltasi. Kuvat pysyvät saatavilla Immich-sovelluksessa.",
|
|
||||||
"cleanup_trash_hint": "Vapauttaaksesi tallennustilan kokonaan, avaa järjestelmän galleria-sovellus ja tyhjennä roskakori",
|
|
||||||
"clear": "Tyhjennä",
|
"clear": "Tyhjennä",
|
||||||
"clear_all": "Tyhjennä kaikki",
|
"clear_all": "Tyhjennä kaikki",
|
||||||
"clear_all_recent_searches": "Tyhjennä viimeisimmät haut",
|
"clear_all_recent_searches": "Tyhjennä viimeisimmät haut",
|
||||||
@@ -782,8 +771,6 @@
|
|||||||
"client_cert_import": "Tuo",
|
"client_cert_import": "Tuo",
|
||||||
"client_cert_import_success_msg": "Asiakasvarmenne tuotu",
|
"client_cert_import_success_msg": "Asiakasvarmenne tuotu",
|
||||||
"client_cert_invalid_msg": "Virheellinen varmennetiedosto tai väärä salasana",
|
"client_cert_invalid_msg": "Virheellinen varmennetiedosto tai väärä salasana",
|
||||||
"client_cert_password_message": "Syötä salasana tälle sertifikaatille",
|
|
||||||
"client_cert_password_title": "Sertifikaatin salasana",
|
|
||||||
"client_cert_remove_msg": "Asiakassertifikaatti on poistettu",
|
"client_cert_remove_msg": "Asiakassertifikaatti on poistettu",
|
||||||
"client_cert_subtitle": "Vain PKCS12 (.p12, .pfx) -muotoa tuetaan. Varmenteen tuonti/poisto on käytettävissä vain ennen sisäänkirjautumista",
|
"client_cert_subtitle": "Vain PKCS12 (.p12, .pfx) -muotoa tuetaan. Varmenteen tuonti/poisto on käytettävissä vain ennen sisäänkirjautumista",
|
||||||
"client_cert_title": "SSL-asiakassertifikaatti [KOKEELLINEN]",
|
"client_cert_title": "SSL-asiakassertifikaatti [KOKEELLINEN]",
|
||||||
@@ -794,11 +781,6 @@
|
|||||||
"color": "Väri",
|
"color": "Väri",
|
||||||
"color_theme": "Väriteema",
|
"color_theme": "Väriteema",
|
||||||
"command": "Komento",
|
"command": "Komento",
|
||||||
"command_palette_prompt": "Löydä nopeasti sivuja, toimintoja tai komentoja",
|
|
||||||
"command_palette_to_close": "sulkea",
|
|
||||||
"command_palette_to_navigate": "syöttää",
|
|
||||||
"command_palette_to_select": "valita",
|
|
||||||
"command_palette_to_show_all": "näyttää kaikki",
|
|
||||||
"comment_deleted": "Kommentti poistettu",
|
"comment_deleted": "Kommentti poistettu",
|
||||||
"comment_options": "Kommentin valinnat",
|
"comment_options": "Kommentin valinnat",
|
||||||
"comments_and_likes": "Kommentit ja tykkäykset",
|
"comments_and_likes": "Kommentit ja tykkäykset",
|
||||||
@@ -864,19 +846,15 @@
|
|||||||
"creating_linked_albums": "Luodaan linkattuja albumeita...",
|
"creating_linked_albums": "Luodaan linkattuja albumeita...",
|
||||||
"crop": "Rajaa",
|
"crop": "Rajaa",
|
||||||
"crop_aspect_ratio_fixed": "Kiinteä",
|
"crop_aspect_ratio_fixed": "Kiinteä",
|
||||||
"crop_aspect_ratio_free": "Vapaa",
|
|
||||||
"crop_aspect_ratio_original": "Alkuperäinen",
|
"crop_aspect_ratio_original": "Alkuperäinen",
|
||||||
"curated_object_page_title": "Asiat",
|
"curated_object_page_title": "Asiat",
|
||||||
"current_device": "Nykyinen laite",
|
"current_device": "Nykyinen laite",
|
||||||
"current_pin_code": "Nykyinen PIN-koodi",
|
"current_pin_code": "Nykyinen PIN-koodi",
|
||||||
"current_server_address": "Nykyinen palvelinosoite",
|
"current_server_address": "Nykyinen palvelinosoite",
|
||||||
"custom_date": "Mukautettu päivä",
|
"custom_date": "Mukautettu päivä",
|
||||||
"custom_locale": "Mukautettu alueasetus",
|
"custom_locale": "Muokatut maa-asetukset",
|
||||||
"custom_locale_description": "Muotoile päivämäärät, kellonajat ja numerot valitun kielen ja alueen mukaan",
|
"custom_locale_description": "Muotoile päivämäärät ja numerot perustuen alueen kieleen",
|
||||||
"custom_url": "Mukautettu URL",
|
"custom_url": "Mukautettu URL",
|
||||||
"cutoff_date_description": "Säilytä kuvat viimeisimmältä…",
|
|
||||||
"cutoff_day": "{count, plural, one {päivä} other {päivää}}",
|
|
||||||
"cutoff_year": "{count, plural, one {vuosi} other {vuotta}}",
|
|
||||||
"daily_title_text_date": "E, dd MMM",
|
"daily_title_text_date": "E, dd MMM",
|
||||||
"daily_title_text_date_year": "E, dd MMM, yyyy",
|
"daily_title_text_date_year": "E, dd MMM, yyyy",
|
||||||
"dark": "Tumma",
|
"dark": "Tumma",
|
||||||
@@ -895,6 +873,8 @@
|
|||||||
"deduplication_criteria_2": "EXIF-datan määrä",
|
"deduplication_criteria_2": "EXIF-datan määrä",
|
||||||
"deduplication_info": "Deduplikaatiotieto",
|
"deduplication_info": "Deduplikaatiotieto",
|
||||||
"deduplication_info_description": "Jotta voimme automaattisesti esivalita aineistot ja poistaa kaksoiskappaleet suurina erinä, tarkastelemme:",
|
"deduplication_info_description": "Jotta voimme automaattisesti esivalita aineistot ja poistaa kaksoiskappaleet suurina erinä, tarkastelemme:",
|
||||||
|
"default_locale": "Oletuskieliasetus",
|
||||||
|
"default_locale_description": "Muotoile päivämäärät ja numerot selaimesi kielen mukaan",
|
||||||
"delete": "Poista",
|
"delete": "Poista",
|
||||||
"delete_action_confirmation_message": "Haluatko varmasti poistaa tämän aineiston? Tämä toiminto siirtää aineiston palvelimen roskakoriin ja kysyy, haluatko poistaa sen myös paikallisesti",
|
"delete_action_confirmation_message": "Haluatko varmasti poistaa tämän aineiston? Tämä toiminto siirtää aineiston palvelimen roskakoriin ja kysyy, haluatko poistaa sen myös paikallisesti",
|
||||||
"delete_action_prompt": "{count} poistettu",
|
"delete_action_prompt": "{count} poistettu",
|
||||||
@@ -1000,11 +980,6 @@
|
|||||||
"editor_close_without_save_prompt": "Muutoksia ei tallenneta",
|
"editor_close_without_save_prompt": "Muutoksia ei tallenneta",
|
||||||
"editor_close_without_save_title": "Suljetaanko editori?",
|
"editor_close_without_save_title": "Suljetaanko editori?",
|
||||||
"editor_confirm_reset_all_changes": "Haluatko varmasti nollata kaikki muutokset?",
|
"editor_confirm_reset_all_changes": "Haluatko varmasti nollata kaikki muutokset?",
|
||||||
"editor_discard_edits_confirm": "Hylkää muutokset",
|
|
||||||
"editor_discard_edits_prompt": "Sinulla on tallentamattomia muutoksia. Haluatko varmasti hylätä ne?",
|
|
||||||
"editor_discard_edits_title": "Hylkää muutokset?",
|
|
||||||
"editor_edits_applied_error": "Muutosten käyttöönotto epäonnistui",
|
|
||||||
"editor_edits_applied_success": "Muutokset otettu käyttöön",
|
|
||||||
"editor_flip_horizontal": "Käännä vaakatasossa",
|
"editor_flip_horizontal": "Käännä vaakatasossa",
|
||||||
"editor_flip_vertical": "Käännä pystytasossa",
|
"editor_flip_vertical": "Käännä pystytasossa",
|
||||||
"editor_orientation": "Suunta",
|
"editor_orientation": "Suunta",
|
||||||
@@ -1032,11 +1007,9 @@
|
|||||||
"error_loading_albums": "Virhe albumeita ladatessa",
|
"error_loading_albums": "Virhe albumeita ladatessa",
|
||||||
"error_loading_image": "Kuvan lataus ei onnistunut",
|
"error_loading_image": "Kuvan lataus ei onnistunut",
|
||||||
"error_loading_partners": "Ongelma partnerin haussa: {error}",
|
"error_loading_partners": "Ongelma partnerin haussa: {error}",
|
||||||
"error_retrieving_asset_information": "Virhe kohdetietojen hakemisessa",
|
|
||||||
"error_saving_image": "Virhe: {error}",
|
"error_saving_image": "Virhe: {error}",
|
||||||
"error_tag_face_bounding_box": "Kasvojen merkitseminen epäonnistui – rajausruudun koordinaatteja ei löydy",
|
"error_tag_face_bounding_box": "Kasvojen merkitseminen epäonnistui – rajausruudun koordinaatteja ei löydy",
|
||||||
"error_title": "Virhe - Jotain meni pieleen",
|
"error_title": "Virhe - Jotain meni pieleen",
|
||||||
"error_while_navigating": "Virhe siirryttäessä kohteeseen",
|
|
||||||
"errors": {
|
"errors": {
|
||||||
"cannot_navigate_next_asset": "Seuraavaan mediaan ei voi siirtyä",
|
"cannot_navigate_next_asset": "Seuraavaan mediaan ei voi siirtyä",
|
||||||
"cannot_navigate_previous_asset": "Edelliseen mediaan ei voi siirtyä",
|
"cannot_navigate_previous_asset": "Edelliseen mediaan ei voi siirtyä",
|
||||||
@@ -1072,7 +1045,6 @@
|
|||||||
"failed_to_update_notification_status": "Ilmoituksen tilan päivittäminen epäonnistui",
|
"failed_to_update_notification_status": "Ilmoituksen tilan päivittäminen epäonnistui",
|
||||||
"incorrect_email_or_password": "Väärä sähköpostiosoite tai salasana",
|
"incorrect_email_or_password": "Väärä sähköpostiosoite tai salasana",
|
||||||
"library_folder_already_exists": "Tämä tuonnin polku on jo olemassa.",
|
"library_folder_already_exists": "Tämä tuonnin polku on jo olemassa.",
|
||||||
"page_not_found": "Sivua ei löytynyt",
|
|
||||||
"paths_validation_failed": "{paths, plural, one {# polun} other {# polun}} validointi epäonnistui",
|
"paths_validation_failed": "{paths, plural, one {# polun} other {# polun}} validointi epäonnistui",
|
||||||
"profile_picture_transparent_pixels": "Profiilikuvassa ei voi olla läpinäkyviä pikseleitä. Zoomaa lähemmäs ja/tai siirrä kuvaa.",
|
"profile_picture_transparent_pixels": "Profiilikuvassa ei voi olla läpinäkyviä pikseleitä. Zoomaa lähemmäs ja/tai siirrä kuvaa.",
|
||||||
"quota_higher_than_disk_size": "Asettamasi kiintiö on suurempi kuin levyn koko",
|
"quota_higher_than_disk_size": "Asettamasi kiintiö on suurempi kuin levyn koko",
|
||||||
@@ -1146,7 +1118,6 @@
|
|||||||
"unable_to_scan_library": "Kirjaston skannaaminen epäonnistui",
|
"unable_to_scan_library": "Kirjaston skannaaminen epäonnistui",
|
||||||
"unable_to_set_feature_photo": "Ei voida asettaa ominaiskuvaa",
|
"unable_to_set_feature_photo": "Ei voida asettaa ominaiskuvaa",
|
||||||
"unable_to_set_profile_picture": "Profiilikuvan asetus epäonnistui",
|
"unable_to_set_profile_picture": "Profiilikuvan asetus epäonnistui",
|
||||||
"unable_to_set_rating": "Luokitusta ei voida asettaa",
|
|
||||||
"unable_to_submit_job": "Työtä ei voitu lähettää",
|
"unable_to_submit_job": "Työtä ei voitu lähettää",
|
||||||
"unable_to_trash_asset": "Median siirto roskakoriin epäonnistui",
|
"unable_to_trash_asset": "Median siirto roskakoriin epäonnistui",
|
||||||
"unable_to_unlink_account": "Tunnuksen irroitus epäonnistui",
|
"unable_to_unlink_account": "Tunnuksen irroitus epäonnistui",
|
||||||
@@ -1172,7 +1143,6 @@
|
|||||||
"exif_bottom_sheet_people": "IHMISET",
|
"exif_bottom_sheet_people": "IHMISET",
|
||||||
"exif_bottom_sheet_person_add_person": "Lisää nimi",
|
"exif_bottom_sheet_person_add_person": "Lisää nimi",
|
||||||
"exit_slideshow": "Poistu diaesityksestä",
|
"exit_slideshow": "Poistu diaesityksestä",
|
||||||
"expand": "Laajenna",
|
|
||||||
"expand_all": "Laajenna kaikki",
|
"expand_all": "Laajenna kaikki",
|
||||||
"experimental_settings_new_asset_list_subtitle": "Työn alla",
|
"experimental_settings_new_asset_list_subtitle": "Työn alla",
|
||||||
"experimental_settings_new_asset_list_title": "Ota käyttöön kokeellinen kuvaruudukko",
|
"experimental_settings_new_asset_list_title": "Ota käyttöön kokeellinen kuvaruudukko",
|
||||||
@@ -1208,16 +1178,12 @@
|
|||||||
"features_in_development": "Kehityksessä olevat ominaisuudet",
|
"features_in_development": "Kehityksessä olevat ominaisuudet",
|
||||||
"features_setting_description": "Hallitse sovelluksen ominaisuuksia",
|
"features_setting_description": "Hallitse sovelluksen ominaisuuksia",
|
||||||
"file_name_or_extension": "Tiedostonimi tai tiedostopääte",
|
"file_name_or_extension": "Tiedostonimi tai tiedostopääte",
|
||||||
"file_name_text": "Tiedoston nimi",
|
|
||||||
"file_name_with_value": "Tiedoston nimi: {file_name}",
|
|
||||||
"file_size": "Tiedostokoko",
|
"file_size": "Tiedostokoko",
|
||||||
"filename": "Tiedostonimi",
|
"filename": "Tiedostonimi",
|
||||||
"filetype": "Tiedostotyyppi",
|
"filetype": "Tiedostotyyppi",
|
||||||
"filter": "Suodatin",
|
"filter": "Suodatin",
|
||||||
"filter_description": "Tavoitekohteiden suodatusehdot",
|
|
||||||
"filter_people": "Suodata henkilöt",
|
"filter_people": "Suodata henkilöt",
|
||||||
"filter_places": "Suodata paikkoja",
|
"filter_places": "Suodata paikkoja",
|
||||||
"filter_tags": "Suodatintunnisteet",
|
|
||||||
"filters": "Suodattimet",
|
"filters": "Suodattimet",
|
||||||
"find_them_fast": "Löydä nopeasti hakemalla nimellä",
|
"find_them_fast": "Löydä nopeasti hakemalla nimellä",
|
||||||
"first": "Ensimmäinen",
|
"first": "Ensimmäinen",
|
||||||
@@ -1228,16 +1194,12 @@
|
|||||||
"folders_feature_description": "Käytetään kansionäkymää valokuvien ja videoiden selaamiseen järjestelmässä",
|
"folders_feature_description": "Käytetään kansionäkymää valokuvien ja videoiden selaamiseen järjestelmässä",
|
||||||
"forgot_pin_code_question": "Unohditko PIN-koodisi?",
|
"forgot_pin_code_question": "Unohditko PIN-koodisi?",
|
||||||
"forward": "Eteenpäin",
|
"forward": "Eteenpäin",
|
||||||
"free_up_space": "Vapauta tilaa",
|
|
||||||
"free_up_space_description": "Siirrä varmuuskopioidut valokuvat ja videot laitteen roskakoriin vapauttaaksesi tilaa. Palvelimella olevat kopiosi säilyvät turvassa.",
|
|
||||||
"free_up_space_settings_subtitle": "Vapauta laitteen tilaa",
|
|
||||||
"full_path": "Koko polku: {path}",
|
"full_path": "Koko polku: {path}",
|
||||||
"gcast_enabled": "Google Cast",
|
"gcast_enabled": "Google Cast",
|
||||||
"gcast_enabled_description": "Ominaisuus lataa ulkoisia kohteita Googlelta toimiakseen.",
|
"gcast_enabled_description": "Ominaisuus lataa ulkoisia resursseja Googlelta toimiakseen.",
|
||||||
"general": "Yleinen",
|
"general": "Yleinen",
|
||||||
"geolocation_instruction_location": "Napsauta kuvaa, jossa on GPS-koordinaatit, käyttääksesi sen sijaintia, tai valitse sijainti suoraan kartalta",
|
"geolocation_instruction_location": "Napsauta kuvaa, jossa on GPS-koordinaatit, käyttääksesi sen sijaintia, tai valitse sijainti suoraan kartalta",
|
||||||
"get_help": "Hae apua",
|
"get_help": "Hae apua",
|
||||||
"get_people_error": "Virhe haettaessa henkilöitä",
|
|
||||||
"get_wifiname_error": "Wi-Fi-verkon nimen hakeminen epäonnistui. Varmista, että olet myöntänyt tarvittavat käyttöoikeudet ja että olet yhteydessä Wi-Fi-verkkoon",
|
"get_wifiname_error": "Wi-Fi-verkon nimen hakeminen epäonnistui. Varmista, että olet myöntänyt tarvittavat käyttöoikeudet ja että olet yhteydessä Wi-Fi-verkkoon",
|
||||||
"getting_started": "Aloittaminen",
|
"getting_started": "Aloittaminen",
|
||||||
"go_back": "Palaa",
|
"go_back": "Palaa",
|
||||||
@@ -1347,7 +1309,6 @@
|
|||||||
"json_error": "JSON-virhe",
|
"json_error": "JSON-virhe",
|
||||||
"keep": "Säilytä",
|
"keep": "Säilytä",
|
||||||
"keep_albums": "Säilytä albumit",
|
"keep_albums": "Säilytä albumit",
|
||||||
"keep_albums_count": "Säilytetään {count} {count, plural, one {albumi} other {albumia}}",
|
|
||||||
"keep_all": "Säilytä kaikki",
|
"keep_all": "Säilytä kaikki",
|
||||||
"keep_description": "Valitse, mitä laitteella säilytetään tilan vapautuksen yhteydessä.",
|
"keep_description": "Valitse, mitä laitteella säilytetään tilan vapautuksen yhteydessä.",
|
||||||
"keep_favorites": "Säilytä suosikit",
|
"keep_favorites": "Säilytä suosikit",
|
||||||
@@ -1396,7 +1357,6 @@
|
|||||||
"local": "Paikallinen",
|
"local": "Paikallinen",
|
||||||
"local_asset_cast_failed": "Kohdetta, joka ei ole ladattuna palvelimelle, ei voida striimata",
|
"local_asset_cast_failed": "Kohdetta, joka ei ole ladattuna palvelimelle, ei voida striimata",
|
||||||
"local_assets": "Paikalliset kohteet",
|
"local_assets": "Paikalliset kohteet",
|
||||||
"local_id": "Paikallinen ID",
|
|
||||||
"local_media_summary": "Paikallisen median yhteenveto",
|
"local_media_summary": "Paikallisen median yhteenveto",
|
||||||
"local_network": "Lähiverkko",
|
"local_network": "Lähiverkko",
|
||||||
"local_network_sheet_info": "Sovellus muodostaa yhteyden palvelimeen tämän URL-osoitteen kautta, kun käytetään määritettyä Wi-Fi-verkkoa",
|
"local_network_sheet_info": "Sovellus muodostaa yhteyden palvelimeen tämän URL-osoitteen kautta, kun käytetään määritettyä Wi-Fi-verkkoa",
|
||||||
@@ -1456,15 +1416,11 @@
|
|||||||
"maintenance_restore_from_backup": "Palauta varmuuskopiosta",
|
"maintenance_restore_from_backup": "Palauta varmuuskopiosta",
|
||||||
"maintenance_restore_library": "Palauta kirjastosta",
|
"maintenance_restore_library": "Palauta kirjastosta",
|
||||||
"maintenance_restore_library_confirm": "Jos tämä vaikuttaa oikealta, jatka varmuuskopion palauttamista!",
|
"maintenance_restore_library_confirm": "Jos tämä vaikuttaa oikealta, jatka varmuuskopion palauttamista!",
|
||||||
"maintenance_restore_library_description": "Tietokannan palauttaminen",
|
|
||||||
"maintenance_restore_library_folder_has_files": "{folder} sisältää {count, plural, one {kansion} other {kansiota}}",
|
|
||||||
"maintenance_restore_library_folder_no_files": "Kansiosta {folder} puuttuu tiedostoja!",
|
|
||||||
"maintenance_restore_library_folder_pass": "luettavissa ja kirjoitettavissa",
|
"maintenance_restore_library_folder_pass": "luettavissa ja kirjoitettavissa",
|
||||||
"maintenance_restore_library_folder_read_fail": "ei luettavissa",
|
"maintenance_restore_library_folder_read_fail": "ei luettavissa",
|
||||||
"maintenance_restore_library_folder_write_fail": "ei kirjoitettavissa",
|
"maintenance_restore_library_folder_write_fail": "ei kirjoitettavissa",
|
||||||
"maintenance_restore_library_hint_missing_files": "Sinulta saattaa puuttua tärkeitä tiedostoja",
|
"maintenance_restore_library_hint_missing_files": "Sinulta saattaa puuttua tärkeitä tiedostoja",
|
||||||
"maintenance_restore_library_hint_regenerate_later": "Voit luoda ne uudelleen myöhemmin asetuksissa",
|
"maintenance_restore_library_hint_regenerate_later": "Voit luoda ne uudelleen myöhemmin asetuksissa",
|
||||||
"maintenance_restore_library_hint_storage_template_missing_files": "Käytätkö tallennusmallia? Sinulta saattaa puuttua tiedostoja",
|
|
||||||
"maintenance_restore_library_loading": "Ladataan eheystarkistuksia ja heurestiikkaa…",
|
"maintenance_restore_library_loading": "Ladataan eheystarkistuksia ja heurestiikkaa…",
|
||||||
"maintenance_task_backup": "Luodaan varmuuskopiota olemassa olevasta tietokannasta…",
|
"maintenance_task_backup": "Luodaan varmuuskopiota olemassa olevasta tietokannasta…",
|
||||||
"maintenance_task_migrations": "Suoritetaan tietokantamigraatioita…",
|
"maintenance_task_migrations": "Suoritetaan tietokantamigraatioita…",
|
||||||
@@ -1531,8 +1487,6 @@
|
|||||||
"minimize": "Pienennä",
|
"minimize": "Pienennä",
|
||||||
"minute": "Minuutti",
|
"minute": "Minuutti",
|
||||||
"minutes": "Minuutit",
|
"minutes": "Minuutit",
|
||||||
"mirror_horizontal": "Vaakasuora",
|
|
||||||
"mirror_vertical": "Pystysuora",
|
|
||||||
"missing": "Puuttuvat",
|
"missing": "Puuttuvat",
|
||||||
"mobile_app": "Mobiilisovellus",
|
"mobile_app": "Mobiilisovellus",
|
||||||
"mobile_app_download_onboarding_note": "Lataa mobiilisovellus käyttämällä seuraavia vaihtoehtoja",
|
"mobile_app_download_onboarding_note": "Lataa mobiilisovellus käyttämällä seuraavia vaihtoehtoja",
|
||||||
@@ -1541,14 +1495,11 @@
|
|||||||
"monthly_title_text_date_format": "MMMM y",
|
"monthly_title_text_date_format": "MMMM y",
|
||||||
"more": "Enemmän",
|
"more": "Enemmän",
|
||||||
"move": "Siirrä",
|
"move": "Siirrä",
|
||||||
"move_down": "Siirrä alas",
|
|
||||||
"move_off_locked_folder": "Siirrä pois lukitusta kansiosta",
|
"move_off_locked_folder": "Siirrä pois lukitusta kansiosta",
|
||||||
"move_to": "Siirrä kohteeseen",
|
"move_to": "Siirrä kohteeseen",
|
||||||
"move_to_device_trash": "Siirrä laitteen roskakoriin",
|
|
||||||
"move_to_lock_folder_action_prompt": "{count} lisätty lukittuun kansioon",
|
"move_to_lock_folder_action_prompt": "{count} lisätty lukittuun kansioon",
|
||||||
"move_to_locked_folder": "Siirrä lukittuun kansioon",
|
"move_to_locked_folder": "Siirrä lukittuun kansioon",
|
||||||
"move_to_locked_folder_confirmation": "Nämä kuvat ja videot poistetaan kaikista albumeista, ja ne ovat nähtävissä vain lukitussa kansiossa",
|
"move_to_locked_folder_confirmation": "Nämä kuvat ja videot poistetaan kaikista albumeista, ja ne ovat nähtävissä vain lukitussa kansiossa",
|
||||||
"move_up": "Siirrä ylös",
|
|
||||||
"moved_to_archive": "Siirretty {count, plural, one {# kohde} other {# kohdetta}} arkistoon",
|
"moved_to_archive": "Siirretty {count, plural, one {# kohde} other {# kohdetta}} arkistoon",
|
||||||
"moved_to_library": "Siirretty {count, plural, one {# kohde} other {# kohdetta}} kirjastoon",
|
"moved_to_library": "Siirretty {count, plural, one {# kohde} other {# kohdetta}} kirjastoon",
|
||||||
"moved_to_trash": "Siirretty roskakoriin",
|
"moved_to_trash": "Siirretty roskakoriin",
|
||||||
@@ -1594,10 +1545,9 @@
|
|||||||
"no_cast_devices_found": "Cast-laitteita ei löytynyt",
|
"no_cast_devices_found": "Cast-laitteita ei löytynyt",
|
||||||
"no_checksum_local": "Ei tarkistussummaa - paikallista sisältöä ei voida hakea",
|
"no_checksum_local": "Ei tarkistussummaa - paikallista sisältöä ei voida hakea",
|
||||||
"no_checksum_remote": "Ei tarkistussummaa - etänä olevaa sisältöä ei voida hakea",
|
"no_checksum_remote": "Ei tarkistussummaa - etänä olevaa sisältöä ei voida hakea",
|
||||||
"no_configuration_needed": "Konfiguraatiota ei tarvita",
|
|
||||||
"no_devices": "Ei valtuutettuja laitteita",
|
"no_devices": "Ei valtuutettuja laitteita",
|
||||||
"no_duplicates_found": "Kaksoiskappaleita ei löytynyt.",
|
"no_duplicates_found": "Kaksoiskappaleita ei löytynyt.",
|
||||||
"no_exif_info_available": "Exif-tietoja ei ole saatavilla",
|
"no_exif_info_available": "EXIF-tietoa ei saatavilla",
|
||||||
"no_explore_results_message": "Lataa lisää kuvia tutkiaksesi kokoelmaasi.",
|
"no_explore_results_message": "Lataa lisää kuvia tutkiaksesi kokoelmaasi.",
|
||||||
"no_favorites_message": "Lisää suosikkeja löytääksesi nopeasti parhaat kuvasi ja videosi",
|
"no_favorites_message": "Lisää suosikkeja löytääksesi nopeasti parhaat kuvasi ja videosi",
|
||||||
"no_filters_added": "Suodattimia ei ole vielä lisätty",
|
"no_filters_added": "Suodattimia ei ole vielä lisätty",
|
||||||
@@ -1614,7 +1564,6 @@
|
|||||||
"no_results_description": "Kokeile synonyymiä tai yleisempää avainsanaa",
|
"no_results_description": "Kokeile synonyymiä tai yleisempää avainsanaa",
|
||||||
"no_shared_albums_message": "Luo albumi, jotta voit jakaa kuvia ja videoita toisille",
|
"no_shared_albums_message": "Luo albumi, jotta voit jakaa kuvia ja videoita toisille",
|
||||||
"no_uploads_in_progress": "Ei käynnissä olevia latauksia",
|
"no_uploads_in_progress": "Ei käynnissä olevia latauksia",
|
||||||
"none": "Ei mitään",
|
|
||||||
"not_allowed": "Ei sallittu",
|
"not_allowed": "Ei sallittu",
|
||||||
"not_available": "N/A",
|
"not_available": "N/A",
|
||||||
"not_in_any_album": "Ei yhdessäkään albumissa",
|
"not_in_any_album": "Ei yhdessäkään albumissa",
|
||||||
@@ -1648,8 +1597,6 @@
|
|||||||
"online": "Online",
|
"online": "Online",
|
||||||
"only_favorites": "Vain suosikit",
|
"only_favorites": "Vain suosikit",
|
||||||
"open": "Avaa",
|
"open": "Avaa",
|
||||||
"open_calendar": "Avaa kalenteri",
|
|
||||||
"open_in_browser": "Avaa selaimessa",
|
|
||||||
"open_in_map_view": "Avaa karttanäkymässä",
|
"open_in_map_view": "Avaa karttanäkymässä",
|
||||||
"open_in_openstreetmap": "Avaa OpenStreetMapissa",
|
"open_in_openstreetmap": "Avaa OpenStreetMapissa",
|
||||||
"open_the_search_filters": "Avaa hakusuodattimet",
|
"open_the_search_filters": "Avaa hakusuodattimet",
|
||||||
@@ -1698,7 +1645,6 @@
|
|||||||
"people": "Ihmiset",
|
"people": "Ihmiset",
|
||||||
"people_edits_count": "Muokattu {count, plural, one {# henkilö} other {# henkilöä}}",
|
"people_edits_count": "Muokattu {count, plural, one {# henkilö} other {# henkilöä}}",
|
||||||
"people_feature_description": "Selataan valokuvia ja videoita, jotka on ryhmitelty henkilöiden mukaan",
|
"people_feature_description": "Selataan valokuvia ja videoita, jotka on ryhmitelty henkilöiden mukaan",
|
||||||
"people_selected": "{count, plural, one {# henkilö valittu} other {# henkilöä valittu}}",
|
|
||||||
"people_sidebar_description": "Näytä linkki Henkilöihin sivupalkissa",
|
"people_sidebar_description": "Näytä linkki Henkilöihin sivupalkissa",
|
||||||
"permanent_deletion_warning": "Pysyvän poiston varoitus",
|
"permanent_deletion_warning": "Pysyvän poiston varoitus",
|
||||||
"permanent_deletion_warning_setting_description": "Näytä varoitus, kun poistat kohteita pysyvästi",
|
"permanent_deletion_warning_setting_description": "Näytä varoitus, kun poistat kohteita pysyvästi",
|
||||||
@@ -1806,11 +1752,10 @@
|
|||||||
"purchase_settings_server_activated": "Palvelimen tuoteavainta hallinnoi ylläpitäjä",
|
"purchase_settings_server_activated": "Palvelimen tuoteavainta hallinnoi ylläpitäjä",
|
||||||
"query_asset_id": "Kysy sisällön ID:tä",
|
"query_asset_id": "Kysy sisällön ID:tä",
|
||||||
"queue_status": "Jonossa {count}/{total}",
|
"queue_status": "Jonossa {count}/{total}",
|
||||||
"rate_asset": "Luokittele kohde",
|
"rating": "Tähtiarvostelu",
|
||||||
"rating": "Tähtiluokitus",
|
"rating_clear": "Tyhjennä arvostelu",
|
||||||
"rating_clear": "Tyhjennä luokitus",
|
"rating_count": "{count, plural, one {# tähti} other {# tähteä}}",
|
||||||
"rating_count": "{count, plural, =0 {Ei arvioitu} one {# tähti} other {# tähteä}}",
|
"rating_description": "Näytä EXIF-arvosana lisätietopaneelissa",
|
||||||
"rating_description": "Näytä EXIF-luokitus tietopaneelissa",
|
|
||||||
"reaction_options": "Reaktioasetukset",
|
"reaction_options": "Reaktioasetukset",
|
||||||
"read_changelog": "Lue muutosloki",
|
"read_changelog": "Lue muutosloki",
|
||||||
"readonly_mode_disabled": "Muokkaustila päällä",
|
"readonly_mode_disabled": "Muokkaustila päällä",
|
||||||
@@ -1882,10 +1827,7 @@
|
|||||||
"reset_pin_code_success": "PIN-koodi nollattu onnistuneesti",
|
"reset_pin_code_success": "PIN-koodi nollattu onnistuneesti",
|
||||||
"reset_pin_code_with_password": "Voit aina nollata PIN-koodisi salasanan avulla",
|
"reset_pin_code_with_password": "Voit aina nollata PIN-koodisi salasanan avulla",
|
||||||
"reset_sqlite": "Nollaa SQLite Tietokanta",
|
"reset_sqlite": "Nollaa SQLite Tietokanta",
|
||||||
"reset_sqlite_clear_app_data": "Tyhjennä tiedot",
|
"reset_sqlite_confirmation": "Haluatko varmasti nollata SQLite tietokannan? Sinun tulee kirjautua sovelluksesta ulos ja takaisin sisään uudelleensynkronoidaksesi datan",
|
||||||
"reset_sqlite_confirmation": "Haluatko varmasti poistaa sovelluksen tiedot? Tämä poistaa kaikki asetukset ja kirjaa sinut ulos.",
|
|
||||||
"reset_sqlite_confirmation_note": "Huomaa: Sinun on käynnistettävä sovellus uudelleen tyhjentämisen jälkeen.",
|
|
||||||
"reset_sqlite_done": "Sovelluksen tiedot on tyhjennetty. Käynnistä Immich uudelleen ja kirjaudu sisään uudelleen.",
|
|
||||||
"reset_sqlite_success": "SQLite Tietokanta nollattu onnistuneesti",
|
"reset_sqlite_success": "SQLite Tietokanta nollattu onnistuneesti",
|
||||||
"reset_to_default": "Palauta oletusasetukset",
|
"reset_to_default": "Palauta oletusasetukset",
|
||||||
"resolution": "Resoluutio",
|
"resolution": "Resoluutio",
|
||||||
@@ -1913,12 +1855,9 @@
|
|||||||
"saved_settings": "Asetukset tallennettu",
|
"saved_settings": "Asetukset tallennettu",
|
||||||
"say_something": "Sano jotain",
|
"say_something": "Sano jotain",
|
||||||
"scaffold_body_error_occurred": "Tapahtui virhe",
|
"scaffold_body_error_occurred": "Tapahtui virhe",
|
||||||
"scaffold_body_error_unrecoverable": "Korjaamaton virhe on tapahtunut. Jaa virhe ja pinojälki Discordissa tai GitHubissa, jotta voimme auttaa. Pyydettäessä voit tyhjentää sovelluksen tiedot alla.",
|
|
||||||
"scan": "Skannaa",
|
|
||||||
"scan_all_libraries": "Skannaa kaikki kirjastot",
|
"scan_all_libraries": "Skannaa kaikki kirjastot",
|
||||||
"scan_library": "Skannaa",
|
"scan_library": "Skannaa",
|
||||||
"scan_settings": "Skannausasetukset",
|
"scan_settings": "Skannausasetukset",
|
||||||
"scanning": "Skannataan",
|
|
||||||
"scanning_for_album": "Etsitään albumia...",
|
"scanning_for_album": "Etsitään albumia...",
|
||||||
"search": "Haku",
|
"search": "Haku",
|
||||||
"search_albums": "Etsi albumeita",
|
"search_albums": "Etsi albumeita",
|
||||||
@@ -1948,8 +1887,6 @@
|
|||||||
"search_filter_media_type_title": "Valitse mediatyyppi",
|
"search_filter_media_type_title": "Valitse mediatyyppi",
|
||||||
"search_filter_ocr": "Hae tekstintunnistuksella (OCR)",
|
"search_filter_ocr": "Hae tekstintunnistuksella (OCR)",
|
||||||
"search_filter_people_title": "Valitse ihmiset",
|
"search_filter_people_title": "Valitse ihmiset",
|
||||||
"search_filter_star_rating": "Tähtiluokitus",
|
|
||||||
"search_filter_tags_title": "Valitse tunnisteita",
|
|
||||||
"search_for": "Hae",
|
"search_for": "Hae",
|
||||||
"search_for_existing_person": "Etsi olemassa olevaa henkilöä",
|
"search_for_existing_person": "Etsi olemassa olevaa henkilöä",
|
||||||
"search_no_more_result": "Ei enää tuloksia",
|
"search_no_more_result": "Ei enää tuloksia",
|
||||||
@@ -1991,15 +1928,12 @@
|
|||||||
"select_all_duplicates": "Valitse kaikki kaksoiskappaleet",
|
"select_all_duplicates": "Valitse kaikki kaksoiskappaleet",
|
||||||
"select_all_in": "Valitse kaikki {group}",
|
"select_all_in": "Valitse kaikki {group}",
|
||||||
"select_avatar_color": "Valitse avatarin väri",
|
"select_avatar_color": "Valitse avatarin väri",
|
||||||
"select_count": "{count, plural, one {Valitse #} other {Valitse #}}",
|
|
||||||
"select_cutoff_date": "Valitse katkaisuajankohta",
|
|
||||||
"select_face": "Valitse kasvo",
|
"select_face": "Valitse kasvo",
|
||||||
"select_featured_photo": "Valitse esittelykuva",
|
"select_featured_photo": "Valitse esittelykuva",
|
||||||
"select_from_computer": "Valitse koneeltasi",
|
"select_from_computer": "Valitse koneeltasi",
|
||||||
"select_keep_all": "Valitse pidä kaikki",
|
"select_keep_all": "Valitse pidä kaikki",
|
||||||
"select_library_owner": "Valitse kirjaston omistaja",
|
"select_library_owner": "Valitse kirjaston omistaja",
|
||||||
"select_new_face": "Valitse uudet kasvot",
|
"select_new_face": "Valitse uudet kasvot",
|
||||||
"select_people": "Valitse henkilöitä",
|
|
||||||
"select_person": "Valitse henkilö",
|
"select_person": "Valitse henkilö",
|
||||||
"select_person_to_tag": "Valitse henkilö, jonka haluat merkitä",
|
"select_person_to_tag": "Valitse henkilö, jonka haluat merkitä",
|
||||||
"select_photos": "Valitse kuvat",
|
"select_photos": "Valitse kuvat",
|
||||||
@@ -2029,9 +1963,6 @@
|
|||||||
"set_profile_picture": "Aseta profiilikuva",
|
"set_profile_picture": "Aseta profiilikuva",
|
||||||
"set_slideshow_to_fullscreen": "Näytä diaesitys koko ruudulla",
|
"set_slideshow_to_fullscreen": "Näytä diaesitys koko ruudulla",
|
||||||
"set_stack_primary_asset": "Aseta pääkohteeksi",
|
"set_stack_primary_asset": "Aseta pääkohteeksi",
|
||||||
"setting_image_navigation_enable_subtitle": "Jos tämä toiminto on käytössä, voit siirtyä edelliseen/seuraavaan kuvaan napauttamalla näytön vasenta/oikeaa reunaa.",
|
|
||||||
"setting_image_navigation_enable_title": "Napauta navigoidaksesi",
|
|
||||||
"setting_image_navigation_title": "Kuvien selaus",
|
|
||||||
"setting_image_viewer_help": "Kuvaa katseltaessa ensin ladataan pikkukuva, sitten keskilaatuinen pikkukuva (jos käytössä) ja lopuksi alkuperäinen (jos käytössä).",
|
"setting_image_viewer_help": "Kuvaa katseltaessa ensin ladataan pikkukuva, sitten keskilaatuinen pikkukuva (jos käytössä) ja lopuksi alkuperäinen (jos käytössä).",
|
||||||
"setting_image_viewer_original_subtitle": "Ota käyttöön ladataksesi alkuperäinen täysitarkkuuksinen kuva (suuri!). Poista käytöstä vähentääksesi datan käyttöä (sekä verkossa että laitteen välimuistissa).",
|
"setting_image_viewer_original_subtitle": "Ota käyttöön ladataksesi alkuperäinen täysitarkkuuksinen kuva (suuri!). Poista käytöstä vähentääksesi datan käyttöä (sekä verkossa että laitteen välimuistissa).",
|
||||||
"setting_image_viewer_original_title": "Lataa alkuperäinen kuva",
|
"setting_image_viewer_original_title": "Lataa alkuperäinen kuva",
|
||||||
@@ -2095,7 +2026,7 @@
|
|||||||
"shared_link_edit_expire_after_option_year": "{count} vuosi",
|
"shared_link_edit_expire_after_option_year": "{count} vuosi",
|
||||||
"shared_link_edit_password_hint": "Syötä jaon salasana",
|
"shared_link_edit_password_hint": "Syötä jaon salasana",
|
||||||
"shared_link_edit_submit_button": "Päivitä linkki",
|
"shared_link_edit_submit_button": "Päivitä linkki",
|
||||||
"shared_link_error_server_url_fetch": "Palvelimen url-osoitetta ei voitu hakea",
|
"shared_link_error_server_url_fetch": "Palvelimen URL-osoitetta ei voitu hakea",
|
||||||
"shared_link_expires_day": "Vanhenee {count} päivässä",
|
"shared_link_expires_day": "Vanhenee {count} päivässä",
|
||||||
"shared_link_expires_days": "Vanhenee {count} päivässä",
|
"shared_link_expires_days": "Vanhenee {count} päivässä",
|
||||||
"shared_link_expires_hour": "Vanhenee {count} tunnissa",
|
"shared_link_expires_hour": "Vanhenee {count} tunnissa",
|
||||||
@@ -2198,7 +2129,6 @@
|
|||||||
"support": "Tuki",
|
"support": "Tuki",
|
||||||
"support_and_feedback": "Tuki ja palaute",
|
"support_and_feedback": "Tuki ja palaute",
|
||||||
"support_third_party_description": "Immich-asennuksesi on pakattu kolmannen osapuolen toimesta. Kohtaamasi ongelmat saattavat johtua tästä paketista, joten ilmoita niistä ensisijaisesti heille alla olevien linkkien kautta.",
|
"support_third_party_description": "Immich-asennuksesi on pakattu kolmannen osapuolen toimesta. Kohtaamasi ongelmat saattavat johtua tästä paketista, joten ilmoita niistä ensisijaisesti heille alla olevien linkkien kautta.",
|
||||||
"supporter": "Tukija",
|
|
||||||
"swap_merge_direction": "Käännä yhdistämissuunta",
|
"swap_merge_direction": "Käännä yhdistämissuunta",
|
||||||
"sync": "Synkronoi",
|
"sync": "Synkronoi",
|
||||||
"sync_albums": "Synkronoi albumit",
|
"sync_albums": "Synkronoi albumit",
|
||||||
@@ -2212,7 +2142,7 @@
|
|||||||
"tag_assets": "Lisää tunnisteita",
|
"tag_assets": "Lisää tunnisteita",
|
||||||
"tag_created": "Luotu tunniste: {tag}",
|
"tag_created": "Luotu tunniste: {tag}",
|
||||||
"tag_feature_description": "Selaa valokuvia ja videoita, jotka on ryhmitelty loogisten tunnisteotsikoiden mukaan",
|
"tag_feature_description": "Selaa valokuvia ja videoita, jotka on ryhmitelty loogisten tunnisteotsikoiden mukaan",
|
||||||
"tag_not_found_question": "Etkö löydä tunnistetta? <link>Luo uusi tunniste.</link>",
|
"tag_not_found_question": "Etkö löydä tunnistetta? <link> Luo uusi tunniste </link>",
|
||||||
"tag_people": "Merkitse henkilö tunnisteella",
|
"tag_people": "Merkitse henkilö tunnisteella",
|
||||||
"tag_updated": "Päivitetty tunniste: {tag}",
|
"tag_updated": "Päivitetty tunniste: {tag}",
|
||||||
"tagged_assets": "Tunnistettu {count, plural, one {# kohde} other {# kohdetta}}",
|
"tagged_assets": "Tunnistettu {count, plural, one {# kohde} other {# kohdetta}}",
|
||||||
@@ -2236,7 +2166,6 @@
|
|||||||
"theme_setting_theme_subtitle": "Valitse sovelluksen teema-asetukset",
|
"theme_setting_theme_subtitle": "Valitse sovelluksen teema-asetukset",
|
||||||
"theme_setting_three_stage_loading_subtitle": "Kolmivaiheinen lataus saattaa parantaa lataustehoa, mutta aiheuttaa huomattavasti suuremman verkon kuormituksen",
|
"theme_setting_three_stage_loading_subtitle": "Kolmivaiheinen lataus saattaa parantaa lataustehoa, mutta aiheuttaa huomattavasti suuremman verkon kuormituksen",
|
||||||
"theme_setting_three_stage_loading_title": "Ota kolmivaiheinen lataus käyttöön",
|
"theme_setting_three_stage_loading_title": "Ota kolmivaiheinen lataus käyttöön",
|
||||||
"then": "Sitten",
|
|
||||||
"they_will_be_merged_together": "Nämä tullaan yhdistämään",
|
"they_will_be_merged_together": "Nämä tullaan yhdistämään",
|
||||||
"third_party_resources": "Kolmannen osapuolen resurssit",
|
"third_party_resources": "Kolmannen osapuolen resurssit",
|
||||||
"time": "Aika",
|
"time": "Aika",
|
||||||
@@ -2272,8 +2201,6 @@
|
|||||||
"trash_page_title": "Roskakori ({count})",
|
"trash_page_title": "Roskakori ({count})",
|
||||||
"trashed_items_will_be_permanently_deleted_after": "Roskakorin kohteet poistetaan pysyvästi {days, plural, one {# päivän} other {# päivän}} päästä.",
|
"trashed_items_will_be_permanently_deleted_after": "Roskakorin kohteet poistetaan pysyvästi {days, plural, one {# päivän} other {# päivän}} päästä.",
|
||||||
"trigger": "Laukaisin",
|
"trigger": "Laukaisin",
|
||||||
"trigger_asset_uploaded": "Kohde ladattu",
|
|
||||||
"trigger_asset_uploaded_description": "Käynnistyy, kun uusi kohde ladataan",
|
|
||||||
"trigger_description": "Työnkulun aloittava tapahtuma",
|
"trigger_description": "Työnkulun aloittava tapahtuma",
|
||||||
"trigger_person_recognized": "Henkilö tunnistettu",
|
"trigger_person_recognized": "Henkilö tunnistettu",
|
||||||
"trigger_person_recognized_description": "Laukaistaan kun henkilö tunnistetaan",
|
"trigger_person_recognized_description": "Laukaistaan kun henkilö tunnistetaan",
|
||||||
@@ -2310,7 +2237,6 @@
|
|||||||
"unstack_action_prompt": "{count} purettu pinosta",
|
"unstack_action_prompt": "{count} purettu pinosta",
|
||||||
"unstacked_assets_count": "Poistettu pinosta {count, plural, one {# kohde} other {# kohdetta}}",
|
"unstacked_assets_count": "Poistettu pinosta {count, plural, one {# kohde} other {# kohdetta}}",
|
||||||
"unsupported_field_type": "Ei-tuettu kentän tyyppi",
|
"unsupported_field_type": "Ei-tuettu kentän tyyppi",
|
||||||
"unsupported_file_type": "Tiedostoa {file} ei voi ladata, koska sen tiedostotyyppi {type} ei ole tuettu.",
|
|
||||||
"untagged": "Ilman tunnistetta",
|
"untagged": "Ilman tunnistetta",
|
||||||
"untitled_workflow": "Nimetön työnkulku",
|
"untitled_workflow": "Nimetön työnkulku",
|
||||||
"up_next": "Seuraavaksi",
|
"up_next": "Seuraavaksi",
|
||||||
@@ -2322,7 +2248,6 @@
|
|||||||
"upload_details": "Lähetyksen tiedot",
|
"upload_details": "Lähetyksen tiedot",
|
||||||
"upload_dialog_info": "Haluatko varmuuskopioida valitut kohteet palvelimelle?",
|
"upload_dialog_info": "Haluatko varmuuskopioida valitut kohteet palvelimelle?",
|
||||||
"upload_dialog_title": "Lähetä kohde",
|
"upload_dialog_title": "Lähetä kohde",
|
||||||
"upload_error_with_count": "Latausvirhe {count} kohteelle",
|
|
||||||
"upload_errors": "Lataus valmistui {count, plural, one {# virheen} other {# virheen}} kanssa. Päivitä sivu nähdäksesi ladatut tiedot.",
|
"upload_errors": "Lataus valmistui {count, plural, one {# virheen} other {# virheen}} kanssa. Päivitä sivu nähdäksesi ladatut tiedot.",
|
||||||
"upload_finished": "Lähetys valmistui",
|
"upload_finished": "Lähetys valmistui",
|
||||||
"upload_progress": "Jäljellä {remaining, number} - Käsitelty {processed, number}/{total, number}",
|
"upload_progress": "Jäljellä {remaining, number} - Käsitelty {processed, number}/{total, number}",
|
||||||
@@ -2337,8 +2262,6 @@
|
|||||||
"url": "URL",
|
"url": "URL",
|
||||||
"usage": "Käyttö",
|
"usage": "Käyttö",
|
||||||
"use_biometric": "Käytä biometriikkaa",
|
"use_biometric": "Käytä biometriikkaa",
|
||||||
"use_browser_locale": "Käytä selaimen kieliasetuksia",
|
|
||||||
"use_browser_locale_description": "Muotoile päivämäärät, kellonajat ja numerot selaimesi kieliasetusten mukaan",
|
|
||||||
"use_current_connection": "Käytä nykyistä yhteyttä",
|
"use_current_connection": "Käytä nykyistä yhteyttä",
|
||||||
"use_custom_date_range": "Käytä omaa aikaväliä",
|
"use_custom_date_range": "Käytä omaa aikaväliä",
|
||||||
"user": "Käyttäjä",
|
"user": "Käyttäjä",
|
||||||
@@ -2415,14 +2338,12 @@
|
|||||||
"workflow_update_success": "Työnkulku päivitetty onnistuneesti",
|
"workflow_update_success": "Työnkulku päivitetty onnistuneesti",
|
||||||
"workflow_updated": "Työnkulku päivitetty",
|
"workflow_updated": "Työnkulku päivitetty",
|
||||||
"workflows": "Työnkulut",
|
"workflows": "Työnkulut",
|
||||||
"workflows_help_text": "Työnkulut automatisoivat toimintoja kohteillesi laukaisimien ja suodattimien perusteella",
|
|
||||||
"wrong_pin_code": "Väärä PIN-koodi",
|
"wrong_pin_code": "Väärä PIN-koodi",
|
||||||
"year": "Vuosi",
|
"year": "Vuosi",
|
||||||
"years_ago": "{years, plural, one {# vuosi} other {# vuotta}} sitten",
|
"years_ago": "{years, plural, one {# vuosi} other {# vuotta}} sitten",
|
||||||
"yes": "Kyllä",
|
"yes": "Kyllä",
|
||||||
"you_dont_have_any_shared_links": "Sinulla ei ole jaettuja linkkejä",
|
"you_dont_have_any_shared_links": "Sinulla ei ole jaettuja linkkejä",
|
||||||
"your_wifi_name": "Wi-Fi-verkkosi nimi",
|
"your_wifi_name": "Wi-Fi-verkkosi nimi",
|
||||||
"zero_to_clear_rating": "paina 0 poistaaksesi kohteen luokituksen",
|
|
||||||
"zoom_image": "Zoomaa kuvaa",
|
"zoom_image": "Zoomaa kuvaa",
|
||||||
"zoom_to_bounds": "Zoomaa reunoihin"
|
"zoom_to_bounds": "Zoomaa reunoihin"
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-28
@@ -61,7 +61,7 @@
|
|||||||
"backup_onboarding_1_description": "copie hors site dans le cloud ou sur un site distant.",
|
"backup_onboarding_1_description": "copie hors site dans le cloud ou sur un site distant.",
|
||||||
"backup_onboarding_2_description": "copies locales sur différents appareils. Cela inclut les fichiers principaux ainsi qu'une sauvegarde locale de ces fichiers.",
|
"backup_onboarding_2_description": "copies locales sur différents appareils. Cela inclut les fichiers principaux ainsi qu'une sauvegarde locale de ces fichiers.",
|
||||||
"backup_onboarding_3_description": "copies total de vos données, incluant les fichiers originaux. Cela inclut 1 copie hors site ainsi que 2 copies locales.",
|
"backup_onboarding_3_description": "copies total de vos données, incluant les fichiers originaux. Cela inclut 1 copie hors site ainsi que 2 copies locales.",
|
||||||
"backup_onboarding_description": "Une <backblaze-link>stratégie de sauvegarde 3-2-1</backblaze-link> est recommandée pour protéger vos données. Vous devriez conserver des copies de vos photos/vidéos téléversés ainsi que de la base de données d'Immich pour une solution de sauvegarde cohérente.",
|
"backup_onboarding_description": "Une <backblaze-link>stratégie de sauvegarde 3-2-1</backblaze-link> est recommandé pour protéger vos données. Vous devriez conserver des copies de vos photos/vidéos téléversés ainsi que de la base de données d'Immich pour une solution de sauvegarde cohérente.",
|
||||||
"backup_onboarding_footer": "Pour plus d'information sur la sauvegarde d'Immich, merci de vous référer à la <link>documentation</link>.",
|
"backup_onboarding_footer": "Pour plus d'information sur la sauvegarde d'Immich, merci de vous référer à la <link>documentation</link>.",
|
||||||
"backup_onboarding_parts_title": "Une sauvegarde 3-2-1 inclut :",
|
"backup_onboarding_parts_title": "Une sauvegarde 3-2-1 inclut :",
|
||||||
"backup_onboarding_title": "Sauvegardes",
|
"backup_onboarding_title": "Sauvegardes",
|
||||||
@@ -173,7 +173,7 @@
|
|||||||
"machine_learning_min_recognized_faces_description": "Nombre minimal de visages reconnus pour qu'une personne soit créée. Augmenter cette valeur rend la reconnaissance faciale plus précise au détriment d'augmenter la chance qu'un visage ne soit pas attribué à une personne.",
|
"machine_learning_min_recognized_faces_description": "Nombre minimal de visages reconnus pour qu'une personne soit créée. Augmenter cette valeur rend la reconnaissance faciale plus précise au détriment d'augmenter la chance qu'un visage ne soit pas attribué à une personne.",
|
||||||
"machine_learning_ocr": "OCR",
|
"machine_learning_ocr": "OCR",
|
||||||
"machine_learning_ocr_description": "Utiliser l'apprentissage automatique pour reconnaître le texte dans les images",
|
"machine_learning_ocr_description": "Utiliser l'apprentissage automatique pour reconnaître le texte dans les images",
|
||||||
"machine_learning_ocr_enabled": "Activer la reconnaissance de caractères OCR",
|
"machine_learning_ocr_enabled": "Activer la reconnaissance de caractères",
|
||||||
"machine_learning_ocr_enabled_description": "Si désactivé, la reconnaissance de texte ne s'appliquera pas aux images.",
|
"machine_learning_ocr_enabled_description": "Si désactivé, la reconnaissance de texte ne s'appliquera pas aux images.",
|
||||||
"machine_learning_ocr_max_resolution": "Résolution maximale",
|
"machine_learning_ocr_max_resolution": "Résolution maximale",
|
||||||
"machine_learning_ocr_max_resolution_description": "Les prévisualisations au-dessus de cette résolution seront retaillées en conservant leur ratio. Des valeurs plus grandes sont plus précises, mais sont plus lentes et utilisent plus de mémoire.",
|
"machine_learning_ocr_max_resolution_description": "Les prévisualisations au-dessus de cette résolution seront retaillées en conservant leur ratio. Des valeurs plus grandes sont plus précises, mais sont plus lentes et utilisent plus de mémoire.",
|
||||||
@@ -181,7 +181,7 @@
|
|||||||
"machine_learning_ocr_min_detection_score_description": "Score de confiance minimum pour la détection du textew entre 0 et 1. Des valeurs faibles permettront de reconnaître davantage de texte mais peuvent entraîner des faux positifs.",
|
"machine_learning_ocr_min_detection_score_description": "Score de confiance minimum pour la détection du textew entre 0 et 1. Des valeurs faibles permettront de reconnaître davantage de texte mais peuvent entraîner des faux positifs.",
|
||||||
"machine_learning_ocr_min_recognition_score": "Score de reconnaissance minimum",
|
"machine_learning_ocr_min_recognition_score": "Score de reconnaissance minimum",
|
||||||
"machine_learning_ocr_min_score_recognition_description": "Score de confiance minimum pour la reconnaissance du texte, entre 0 et 1. Des valeurs faible permettront de reconnaître davantage de texte, mais peuvent entraîner des faux positifs.",
|
"machine_learning_ocr_min_score_recognition_description": "Score de confiance minimum pour la reconnaissance du texte, entre 0 et 1. Des valeurs faible permettront de reconnaître davantage de texte, mais peuvent entraîner des faux positifs.",
|
||||||
"machine_learning_ocr_model": "Modèle de Reconnaissance Optique de Caractères OCR",
|
"machine_learning_ocr_model": "Modèle de Reconnaissance Optique de Caractères",
|
||||||
"machine_learning_ocr_model_description": "Les modèles du serveur sont plus précis que les modèles mobiles, mais ils sont plus lents et utilisent plus de mémoire.",
|
"machine_learning_ocr_model_description": "Les modèles du serveur sont plus précis que les modèles mobiles, mais ils sont plus lents et utilisent plus de mémoire.",
|
||||||
"machine_learning_settings": "Paramètres d'apprentissage automatique",
|
"machine_learning_settings": "Paramètres d'apprentissage automatique",
|
||||||
"machine_learning_settings_description": "Gérer les fonctionnalités et les paramètres d'apprentissage automatique",
|
"machine_learning_settings_description": "Gérer les fonctionnalités et les paramètres d'apprentissage automatique",
|
||||||
@@ -214,7 +214,7 @@
|
|||||||
"map_gps_settings_description": "Gérer les paramètres de la Carte & GPS",
|
"map_gps_settings_description": "Gérer les paramètres de la Carte & GPS",
|
||||||
"map_implications": "La carte repose sur un service de tuiles externe (tiles.immich.cloud)",
|
"map_implications": "La carte repose sur un service de tuiles externe (tiles.immich.cloud)",
|
||||||
"map_light_style": "Thème clair",
|
"map_light_style": "Thème clair",
|
||||||
"map_manage_reverse_geocoding_settings": "Gérer les <link>paramètres de géocodage inversé</link>",
|
"map_manage_reverse_geocoding_settings": "Gérer les <link> paramètres de géocodage inversé</link>",
|
||||||
"map_reverse_geocoding": "Géocodage inversé",
|
"map_reverse_geocoding": "Géocodage inversé",
|
||||||
"map_reverse_geocoding_enable_description": "Activer le géocodage inversé",
|
"map_reverse_geocoding_enable_description": "Activer le géocodage inversé",
|
||||||
"map_reverse_geocoding_settings": "Paramètres de géocodage inversé",
|
"map_reverse_geocoding_settings": "Paramètres de géocodage inversé",
|
||||||
@@ -411,7 +411,7 @@
|
|||||||
"transcoding_tone_mapping": "Mappage tonal",
|
"transcoding_tone_mapping": "Mappage tonal",
|
||||||
"transcoding_tone_mapping_description": "Tente de préserver l'apparence des vidéos HDR lorsqu'elles sont converties en SDR. Chaque algorithme effectue différents compromis pour la couleur, les détails et la luminosité. Hable préserve les détails, Mobius préserve la couleur, et Reinhard préserve la luminosité.",
|
"transcoding_tone_mapping_description": "Tente de préserver l'apparence des vidéos HDR lorsqu'elles sont converties en SDR. Chaque algorithme effectue différents compromis pour la couleur, les détails et la luminosité. Hable préserve les détails, Mobius préserve la couleur, et Reinhard préserve la luminosité.",
|
||||||
"transcoding_transcode_policy": "Politique de transcodage",
|
"transcoding_transcode_policy": "Politique de transcodage",
|
||||||
"transcoding_transcode_policy_description": "Politique indiquant quand une vidéo doit être transcodée. Les vidéos HDR et les vidéos dans un format de pixel différent de YUV 4:2:0 seront toujours transcodées (sauf si le transcodage est désactivé).",
|
"transcoding_transcode_policy_description": "Politique indiquant quand une vidéo doit être transcodée. Les vidéos HDR seront toujours transcodées (sauf si le transcodage est désactivé).",
|
||||||
"transcoding_two_pass_encoding": "Encodage en deux passes",
|
"transcoding_two_pass_encoding": "Encodage en deux passes",
|
||||||
"transcoding_two_pass_encoding_setting_description": "Transcoder en deux passes pour produire des vidéos mieux encodées. Lorsque le débit binaire maximum est activé (obligatoire pour qu'il fonctionne avec H.264 et HEVC), ce mode utilise une plage de débit binaire basée sur le débit binaire maximum et ignore le CRF. Pour VP9, CRF peut être utilisé si le débit binaire maximum est désactivé.",
|
"transcoding_two_pass_encoding_setting_description": "Transcoder en deux passes pour produire des vidéos mieux encodées. Lorsque le débit binaire maximum est activé (obligatoire pour qu'il fonctionne avec H.264 et HEVC), ce mode utilise une plage de débit binaire basée sur le débit binaire maximum et ignore le CRF. Pour VP9, CRF peut être utilisé si le débit binaire maximum est désactivé.",
|
||||||
"transcoding_video_codec": "Codec vidéo",
|
"transcoding_video_codec": "Codec vidéo",
|
||||||
@@ -872,7 +872,7 @@
|
|||||||
"current_server_address": "Adresse actuelle du serveur",
|
"current_server_address": "Adresse actuelle du serveur",
|
||||||
"custom_date": "Date personnalisée",
|
"custom_date": "Date personnalisée",
|
||||||
"custom_locale": "Paramètres régionaux personnalisés",
|
"custom_locale": "Paramètres régionaux personnalisés",
|
||||||
"custom_locale_description": "Formater les dates, heures et nombres en fonction de la langue sélectionnée et de la région",
|
"custom_locale_description": "Afficher les dates et nombres en fonction des paramètres régionaux",
|
||||||
"custom_url": "URL personnalisée",
|
"custom_url": "URL personnalisée",
|
||||||
"cutoff_date_description": "Conservez les photos depuis les derniers…",
|
"cutoff_date_description": "Conservez les photos depuis les derniers…",
|
||||||
"cutoff_day": "{count, plural, one {jour} other {jours}}",
|
"cutoff_day": "{count, plural, one {jour} other {jours}}",
|
||||||
@@ -895,6 +895,8 @@
|
|||||||
"deduplication_criteria_2": "Nombre de données EXIF",
|
"deduplication_criteria_2": "Nombre de données EXIF",
|
||||||
"deduplication_info": "Info de déduplication",
|
"deduplication_info": "Info de déduplication",
|
||||||
"deduplication_info_description": "Pour présélectionner automatiquement les médias et supprimer les doublons en masse, nous examinons :",
|
"deduplication_info_description": "Pour présélectionner automatiquement les médias et supprimer les doublons en masse, nous examinons :",
|
||||||
|
"default_locale": "Région par défaut",
|
||||||
|
"default_locale_description": "Afficher les dates et nombres en fonction des paramètres de votre navigateur",
|
||||||
"delete": "Supprimer",
|
"delete": "Supprimer",
|
||||||
"delete_action_confirmation_message": "Êtes-vous sûr de vouloir supprimer ce média ? Cela déplacera le média dans la poubelle du serveur et vous demandera si vous voulez le supprimer localement",
|
"delete_action_confirmation_message": "Êtes-vous sûr de vouloir supprimer ce média ? Cela déplacera le média dans la poubelle du serveur et vous demandera si vous voulez le supprimer localement",
|
||||||
"delete_action_prompt": "{count} supprimé(s)",
|
"delete_action_prompt": "{count} supprimé(s)",
|
||||||
@@ -1007,8 +1009,6 @@
|
|||||||
"editor_edits_applied_success": "Editions appliquées avec succès",
|
"editor_edits_applied_success": "Editions appliquées avec succès",
|
||||||
"editor_flip_horizontal": "Retourner horizontalement",
|
"editor_flip_horizontal": "Retourner horizontalement",
|
||||||
"editor_flip_vertical": "Retourner verticalement",
|
"editor_flip_vertical": "Retourner verticalement",
|
||||||
"editor_handle_corner": "Saisie du coin {corner, select, top_left {en haut à gauche} top_right {en haut à droite} bottom_left {en bas à gauche} bottom_right {en bas à droite} other {A}}",
|
|
||||||
"editor_handle_edge": "Saisie du bord {edge, select, top {haut} bottom {bas} left {gauche} right {droit} other {An}}",
|
|
||||||
"editor_orientation": "Orientation",
|
"editor_orientation": "Orientation",
|
||||||
"editor_reset_all_changes": "Réinitialiser les modifications",
|
"editor_reset_all_changes": "Réinitialiser les modifications",
|
||||||
"editor_rotate_left": "Rotation de 90° dans le sens inverse des aiguilles d'une montre",
|
"editor_rotate_left": "Rotation de 90° dans le sens inverse des aiguilles d'une montre",
|
||||||
@@ -1074,7 +1074,6 @@
|
|||||||
"failed_to_update_notification_status": "Erreur de mise à jour du statut des notifications",
|
"failed_to_update_notification_status": "Erreur de mise à jour du statut des notifications",
|
||||||
"incorrect_email_or_password": "Courriel ou mot de passe incorrect",
|
"incorrect_email_or_password": "Courriel ou mot de passe incorrect",
|
||||||
"library_folder_already_exists": "Ce chemin d'import existe déjà.",
|
"library_folder_already_exists": "Ce chemin d'import existe déjà.",
|
||||||
"page_not_found": "Page non trouvée",
|
|
||||||
"paths_validation_failed": "Validation échouée pour {paths, plural, one {# un chemin} other {# plusieurs chemins}}",
|
"paths_validation_failed": "Validation échouée pour {paths, plural, one {# un chemin} other {# plusieurs chemins}}",
|
||||||
"profile_picture_transparent_pixels": "Les images de profil ne peuvent pas avoir de pixels transparents. Veuillez agrandir et/ou déplacer l'image.",
|
"profile_picture_transparent_pixels": "Les images de profil ne peuvent pas avoir de pixels transparents. Veuillez agrandir et/ou déplacer l'image.",
|
||||||
"quota_higher_than_disk_size": "Le quota saisi est supérieur à l'espace disponible",
|
"quota_higher_than_disk_size": "Le quota saisi est supérieur à l'espace disponible",
|
||||||
@@ -1148,7 +1147,7 @@
|
|||||||
"unable_to_scan_library": "Impossible de scanner la bibliothèque",
|
"unable_to_scan_library": "Impossible de scanner la bibliothèque",
|
||||||
"unable_to_set_feature_photo": "Impossible de définir la photo de la personne",
|
"unable_to_set_feature_photo": "Impossible de définir la photo de la personne",
|
||||||
"unable_to_set_profile_picture": "Impossible d'enregistrer la photo de profil",
|
"unable_to_set_profile_picture": "Impossible d'enregistrer la photo de profil",
|
||||||
"unable_to_set_rating": "Impossible de définir l'évaluation",
|
"unable_to_set_rating": "Impossible de définir une note",
|
||||||
"unable_to_submit_job": "Impossible d'exécuter la tâche",
|
"unable_to_submit_job": "Impossible d'exécuter la tâche",
|
||||||
"unable_to_trash_asset": "Impossible de mettre le média à la corbeille",
|
"unable_to_trash_asset": "Impossible de mettre le média à la corbeille",
|
||||||
"unable_to_unlink_account": "Impossible de détacher le compte",
|
"unable_to_unlink_account": "Impossible de détacher le compte",
|
||||||
@@ -1219,7 +1218,6 @@
|
|||||||
"filter_description": "Conditions pour filtrer les médias ciblés",
|
"filter_description": "Conditions pour filtrer les médias ciblés",
|
||||||
"filter_people": "Filtrer les personnes",
|
"filter_people": "Filtrer les personnes",
|
||||||
"filter_places": "Filtrer par lieu",
|
"filter_places": "Filtrer par lieu",
|
||||||
"filter_tags": "Filtrer par étiquettes",
|
|
||||||
"filters": "Filtres",
|
"filters": "Filtres",
|
||||||
"find_them_fast": "Pour les retrouver rapidement par leur nom",
|
"find_them_fast": "Pour les retrouver rapidement par leur nom",
|
||||||
"first": "Premier",
|
"first": "Premier",
|
||||||
@@ -1633,7 +1631,7 @@
|
|||||||
"oauth": "OAuth",
|
"oauth": "OAuth",
|
||||||
"obtainium_configurator": "Configuration pour Obtainium",
|
"obtainium_configurator": "Configuration pour Obtainium",
|
||||||
"obtainium_configurator_instructions": "Utilisez Obtainium pour installer et mettre à jour l'application Android directement depuis la version d'Immich sur Github. Créer une clé d'API et sélectionner une variante pour créer votre lien de configuration pour Obtainium",
|
"obtainium_configurator_instructions": "Utilisez Obtainium pour installer et mettre à jour l'application Android directement depuis la version d'Immich sur Github. Créer une clé d'API et sélectionner une variante pour créer votre lien de configuration pour Obtainium",
|
||||||
"ocr": "Reconnaissance Optique de Caractères OCR",
|
"ocr": "Reconnaissance Optique de Caractères",
|
||||||
"official_immich_resources": "Ressources Immich officielles",
|
"official_immich_resources": "Ressources Immich officielles",
|
||||||
"offline": "Hors ligne",
|
"offline": "Hors ligne",
|
||||||
"offset": "Décalage",
|
"offset": "Décalage",
|
||||||
@@ -1651,7 +1649,6 @@
|
|||||||
"only_favorites": "Uniquement les favoris",
|
"only_favorites": "Uniquement les favoris",
|
||||||
"open": "Ouvrir",
|
"open": "Ouvrir",
|
||||||
"open_calendar": "Ouvrir le calendrier",
|
"open_calendar": "Ouvrir le calendrier",
|
||||||
"open_in_browser": "Ouvrir dans le navigateur",
|
|
||||||
"open_in_map_view": "Montrer sur la carte",
|
"open_in_map_view": "Montrer sur la carte",
|
||||||
"open_in_openstreetmap": "Ouvrir dans OpenStreetMap",
|
"open_in_openstreetmap": "Ouvrir dans OpenStreetMap",
|
||||||
"open_the_search_filters": "Ouvrir les filtres de recherche",
|
"open_the_search_filters": "Ouvrir les filtres de recherche",
|
||||||
@@ -1811,8 +1808,9 @@
|
|||||||
"rate_asset": "Évaluer un média",
|
"rate_asset": "Évaluer un média",
|
||||||
"rating": "Étoile d'évaluation",
|
"rating": "Étoile d'évaluation",
|
||||||
"rating_clear": "Effacer l'évaluation",
|
"rating_clear": "Effacer l'évaluation",
|
||||||
"rating_count": "{count, plural, =0 {Non évalué} one {# étoile} other {# étoiles}}",
|
"rating_count": "{count, plural, one {# étoile} other {# étoiles}}",
|
||||||
"rating_description": "Afficher l'évaluation EXIF dans le panneau d'information",
|
"rating_description": "Afficher l'évaluation EXIF dans le panneau d'information",
|
||||||
|
"rating_set": "Note définie sur {rating, plural, one {# étoile} other {# étoiles}}",
|
||||||
"reaction_options": "Options de réaction",
|
"reaction_options": "Options de réaction",
|
||||||
"read_changelog": "Lire les changements",
|
"read_changelog": "Lire les changements",
|
||||||
"readonly_mode_disabled": "Mode lecture seule désactivé",
|
"readonly_mode_disabled": "Mode lecture seule désactivé",
|
||||||
@@ -1884,10 +1882,7 @@
|
|||||||
"reset_pin_code_success": "Code PIN réinitialisé avec succès",
|
"reset_pin_code_success": "Code PIN réinitialisé avec succès",
|
||||||
"reset_pin_code_with_password": "Vous pouvez toujours réinitialiser le code PIN avec votre mot de passe",
|
"reset_pin_code_with_password": "Vous pouvez toujours réinitialiser le code PIN avec votre mot de passe",
|
||||||
"reset_sqlite": "Réinitialiser la base de données SQLite",
|
"reset_sqlite": "Réinitialiser la base de données SQLite",
|
||||||
"reset_sqlite_clear_app_data": "Supprimer les données",
|
"reset_sqlite_confirmation": "Êtes-vous certain de vouloir réinitialiser la base de données SQLite ? Vous devrez vous déconnecter puis vous reconnecter à nouveau pour resynchroniser les données",
|
||||||
"reset_sqlite_confirmation": "Êtes-vous certain de vouloir supprimer les données de l'application ? Cela va supprimer tous les paramètres et vous déconnecter.",
|
|
||||||
"reset_sqlite_confirmation_note": "Remarque : vous devrez redémarrer l'application après cette suppression.",
|
|
||||||
"reset_sqlite_done": "Les données de l'application ont été supprimées. Veuillez redémarrer Immich et vous reconnecter.",
|
|
||||||
"reset_sqlite_success": "La base de données SQLite à été réinitialisé avec succès",
|
"reset_sqlite_success": "La base de données SQLite à été réinitialisé avec succès",
|
||||||
"reset_to_default": "Rétablir les valeurs par défaut",
|
"reset_to_default": "Rétablir les valeurs par défaut",
|
||||||
"resolution": "Résolution",
|
"resolution": "Résolution",
|
||||||
@@ -1915,7 +1910,6 @@
|
|||||||
"saved_settings": "Paramètres enregistrés",
|
"saved_settings": "Paramètres enregistrés",
|
||||||
"say_something": "Réagir",
|
"say_something": "Réagir",
|
||||||
"scaffold_body_error_occurred": "Une erreur s'est produite",
|
"scaffold_body_error_occurred": "Une erreur s'est produite",
|
||||||
"scaffold_body_error_unrecoverable": "Une erreur irrécupérable s'est produite. Veuillez partager l'erreur et la trace de pile sur Discord ou GitHub afin que nous puissions vous aider. Si nécessaire, vous pouvez effacer les données de l'appli ci-dessous.",
|
|
||||||
"scan": "Analyse",
|
"scan": "Analyse",
|
||||||
"scan_all_libraries": "Analyser toutes les bibliothèques",
|
"scan_all_libraries": "Analyser toutes les bibliothèques",
|
||||||
"scan_library": "Analyser",
|
"scan_library": "Analyser",
|
||||||
@@ -1929,7 +1923,7 @@
|
|||||||
"search_by_description_example": "Randonnée à Sapa",
|
"search_by_description_example": "Randonnée à Sapa",
|
||||||
"search_by_filename": "Rechercher par nom du fichier ou extension",
|
"search_by_filename": "Rechercher par nom du fichier ou extension",
|
||||||
"search_by_filename_example": "Exemple : IMG_1234.JPG ou PNG",
|
"search_by_filename_example": "Exemple : IMG_1234.JPG ou PNG",
|
||||||
"search_by_ocr": "Recherche par Reconnaissance Optique de Caractères OCR",
|
"search_by_ocr": "Recherche par OCR",
|
||||||
"search_by_ocr_example": "café latte",
|
"search_by_ocr_example": "café latte",
|
||||||
"search_camera_lens_model": "Chercher par modèle d'objectif...",
|
"search_camera_lens_model": "Chercher par modèle d'objectif...",
|
||||||
"search_camera_make": "Rechercher par marque d'appareil photo...",
|
"search_camera_make": "Rechercher par marque d'appareil photo...",
|
||||||
@@ -1948,10 +1942,9 @@
|
|||||||
"search_filter_location_title": "Sélectionner une localisation",
|
"search_filter_location_title": "Sélectionner une localisation",
|
||||||
"search_filter_media_type": "Type de média",
|
"search_filter_media_type": "Type de média",
|
||||||
"search_filter_media_type_title": "Sélectionner type de média",
|
"search_filter_media_type_title": "Sélectionner type de média",
|
||||||
"search_filter_ocr": "Recherche par Reconnaissance Optique de Caractères OCR",
|
"search_filter_ocr": "Recherche par OCR",
|
||||||
"search_filter_people_title": "Sélectionner une personne",
|
"search_filter_people_title": "Sélectionner une personne",
|
||||||
"search_filter_star_rating": "Note par étoiles",
|
"search_filter_star_rating": "Note par étoiles",
|
||||||
"search_filter_tags_title": "Sélectionner des étiquettes",
|
|
||||||
"search_for": "Chercher",
|
"search_for": "Chercher",
|
||||||
"search_for_existing_person": "Rechercher une personne existante",
|
"search_for_existing_person": "Rechercher une personne existante",
|
||||||
"search_no_more_result": "Plus de résultats",
|
"search_no_more_result": "Plus de résultats",
|
||||||
@@ -2031,9 +2024,6 @@
|
|||||||
"set_profile_picture": "Définir la photo de profil",
|
"set_profile_picture": "Définir la photo de profil",
|
||||||
"set_slideshow_to_fullscreen": "Afficher le diaporama en plein écran",
|
"set_slideshow_to_fullscreen": "Afficher le diaporama en plein écran",
|
||||||
"set_stack_primary_asset": "Marquer comme média principal",
|
"set_stack_primary_asset": "Marquer comme média principal",
|
||||||
"setting_image_navigation_enable_subtitle": "Si activé, vous pouvez naviguer vers l'image précédente / suivante en appuyant sur le quart le plus à gauche / à droite de l'écran.",
|
|
||||||
"setting_image_navigation_enable_title": "Appuyer pour naviguer",
|
|
||||||
"setting_image_navigation_title": "Navigation dans les images",
|
|
||||||
"setting_image_viewer_help": "Le visualiseur de détails charge d'abord la petite miniature, puis l'aperçu de taille moyenne (s'il est activé), enfin l'original (s'il est activé).",
|
"setting_image_viewer_help": "Le visualiseur de détails charge d'abord la petite miniature, puis l'aperçu de taille moyenne (s'il est activé), enfin l'original (s'il est activé).",
|
||||||
"setting_image_viewer_original_subtitle": "Activez cette option pour charger l'image en résolution originale (fichier volumineux !). Désactiver pour réduire l'utilisation des données (réseau et cache de l'appareil).",
|
"setting_image_viewer_original_subtitle": "Activez cette option pour charger l'image en résolution originale (fichier volumineux !). Désactiver pour réduire l'utilisation des données (réseau et cache de l'appareil).",
|
||||||
"setting_image_viewer_original_title": "Charger l'image originale",
|
"setting_image_viewer_original_title": "Charger l'image originale",
|
||||||
@@ -2312,7 +2302,6 @@
|
|||||||
"unstack_action_prompt": "{count} dépilé(s)",
|
"unstack_action_prompt": "{count} dépilé(s)",
|
||||||
"unstacked_assets_count": "{count, plural, one {# média dépilé} other {# médias dépilés}}",
|
"unstacked_assets_count": "{count, plural, one {# média dépilé} other {# médias dépilés}}",
|
||||||
"unsupported_field_type": "Type de champ non supporté",
|
"unsupported_field_type": "Type de champ non supporté",
|
||||||
"unsupported_file_type": "Le fichier {file} ne peut pas être téléversé car son type {type} n'est pas supporté.",
|
|
||||||
"untagged": "Sans étiquette",
|
"untagged": "Sans étiquette",
|
||||||
"untitled_workflow": "Flux de traitement sans titre",
|
"untitled_workflow": "Flux de traitement sans titre",
|
||||||
"up_next": "Suite",
|
"up_next": "Suite",
|
||||||
@@ -2339,8 +2328,6 @@
|
|||||||
"url": "URL",
|
"url": "URL",
|
||||||
"usage": "Utilisation",
|
"usage": "Utilisation",
|
||||||
"use_biometric": "Utiliser l'authentification biométrique",
|
"use_biometric": "Utiliser l'authentification biométrique",
|
||||||
"use_browser_locale": "Utiliser les paramètres régionaux du navigateur",
|
|
||||||
"use_browser_locale_description": "Formate les dates, heures et nombres en fonction des paramètres régionaux de votre navigateur",
|
|
||||||
"use_current_connection": "Utiliser le réseau actuel",
|
"use_current_connection": "Utiliser le réseau actuel",
|
||||||
"use_custom_date_range": "Utilisez une plage de date personnalisée à la place",
|
"use_custom_date_range": "Utilisez une plage de date personnalisée à la place",
|
||||||
"user": "Utilisateur",
|
"user": "Utilisateur",
|
||||||
|
|||||||
+10
-23
@@ -61,7 +61,7 @@
|
|||||||
"backup_onboarding_1_description": "cóip lasmuigh den láthair sa scamall nó in áit fhisiciúil eile.",
|
"backup_onboarding_1_description": "cóip lasmuigh den láthair sa scamall nó in áit fhisiciúil eile.",
|
||||||
"backup_onboarding_2_description": "cóipeanna áitiúla ar ghléasanna éagsúla. Áirítear leis seo na príomhchomhaid agus cúltaca de na comhaid sin go háitiúil.",
|
"backup_onboarding_2_description": "cóipeanna áitiúla ar ghléasanna éagsúla. Áirítear leis seo na príomhchomhaid agus cúltaca de na comhaid sin go háitiúil.",
|
||||||
"backup_onboarding_3_description": "cóipeanna iomlána de do shonraí, lena n-áirítear na comhaid bhunaidh. Áirítear leis seo cóip amháin lasmuigh den láthair agus dhá chóip áitiúla.",
|
"backup_onboarding_3_description": "cóipeanna iomlána de do shonraí, lena n-áirítear na comhaid bhunaidh. Áirítear leis seo cóip amháin lasmuigh den láthair agus dhá chóip áitiúla.",
|
||||||
"backup_onboarding_description": "Moltar <backblaze-link>straitéis chúltaca 3-2-1</backblaze-link> chun do shonraí a chosaint. Ba chóir duit cóipeanna de do ghrianghraif/fhíseáin uaslódáilte chomh maith le bunachar sonraí Immich a choinneáil le haghaidh réiteach cúltaca cuimsitheach.",
|
"backup_onboarding_description": "Moltar straitéis chúltaca <backblaze-link>3-2-1</backblaze-link> chun do shonraí a chosaint. Ba chóir duit cóipeanna de do ghrianghraif/fhíseáin uaslódáilte a choinneáil chomh maith le bunachar sonraí Immich le haghaidh réiteach cúltaca cuimsitheach.",
|
||||||
"backup_onboarding_footer": "Le haghaidh tuilleadh eolais faoi chúltaca d'Immich, féach ar an <link>doiciméadú</link>.",
|
"backup_onboarding_footer": "Le haghaidh tuilleadh eolais faoi chúltaca d'Immich, féach ar an <link>doiciméadú</link>.",
|
||||||
"backup_onboarding_parts_title": "Áirítear le cúltaca 3-2-1:",
|
"backup_onboarding_parts_title": "Áirítear le cúltaca 3-2-1:",
|
||||||
"backup_onboarding_title": "Cúltacaí",
|
"backup_onboarding_title": "Cúltacaí",
|
||||||
@@ -372,7 +372,7 @@
|
|||||||
"transcoding_audio_codec": "Códac fuaime",
|
"transcoding_audio_codec": "Códac fuaime",
|
||||||
"transcoding_audio_codec_description": "Is é Opus an rogha is airde cáilíochta, ach tá comhoiriúnacht níos ísle aige le seanghléasanna nó bogearraí.",
|
"transcoding_audio_codec_description": "Is é Opus an rogha is airde cáilíochta, ach tá comhoiriúnacht níos ísle aige le seanghléasanna nó bogearraí.",
|
||||||
"transcoding_bitrate_description": "Físeáin níos airde ná an uasráta giotán nó nach bhfuil i bhformáid inghlactha",
|
"transcoding_bitrate_description": "Físeáin níos airde ná an uasráta giotán nó nach bhfuil i bhformáid inghlactha",
|
||||||
"transcoding_codecs_learn_more": "Chun tuilleadh eolais a fháil faoin téarmaíocht a úsáidtear anseo, féach ar dhoiciméid FFmpeg le haghaidh <h264-link>cóideic H.264</h264-link>, <hevc-link>cóideic HEVC</hevc-link> agus <vp9-link>cóideic VP9</vp9-link>.",
|
"transcoding_codecs_learn_more": "Chun tuilleadh eolais a fháil faoin téarmaíocht a úsáidtear anseo, féach ar dhoiciméid FFmpeg le haghaidh <h264-link>códéc H.264</h264-link>, <hevc-link>códéc HEVC</hevc-link> agus <vp9-link>códéc VP9</vp9-link>.",
|
||||||
"transcoding_constant_quality_mode": "Mód cáilíochta tairiseach",
|
"transcoding_constant_quality_mode": "Mód cáilíochta tairiseach",
|
||||||
"transcoding_constant_quality_mode_description": "Tá ICQ níos fearr ná CQP, ach ní thacaíonn roinnt gléasanna luasghéaraithe crua-earraí leis an modh seo. Trí an rogha seo a shocrú, tabharfar tús áite don mhodh sonraithe agus ionchódú bunaithe ar cháilíocht á úsáid. Ní thacaíonn NVENC leis mar nach dtacaíonn sé le ICQ.",
|
"transcoding_constant_quality_mode_description": "Tá ICQ níos fearr ná CQP, ach ní thacaíonn roinnt gléasanna luasghéaraithe crua-earraí leis an modh seo. Trí an rogha seo a shocrú, tabharfar tús áite don mhodh sonraithe agus ionchódú bunaithe ar cháilíocht á úsáid. Ní thacaíonn NVENC leis mar nach dtacaíonn sé le ICQ.",
|
||||||
"transcoding_constant_rate_factor": "Fachtóir ráta tairiseach (-crf)",
|
"transcoding_constant_rate_factor": "Fachtóir ráta tairiseach (-crf)",
|
||||||
@@ -411,7 +411,7 @@
|
|||||||
"transcoding_tone_mapping": "Mapáil toin",
|
"transcoding_tone_mapping": "Mapáil toin",
|
||||||
"transcoding_tone_mapping_description": "Déanann iarracht cuma físeáin HDR a chaomhnú nuair a dhéantar iad a thiontú go SDR. Déanann gach algartam comhbhabhtálacha difriúla maidir le dath, mionsonraí agus gile. Coinníonn Hable mionsonraí, coinníonn Mobius dath, agus coinníonn Reinhard gile.",
|
"transcoding_tone_mapping_description": "Déanann iarracht cuma físeáin HDR a chaomhnú nuair a dhéantar iad a thiontú go SDR. Déanann gach algartam comhbhabhtálacha difriúla maidir le dath, mionsonraí agus gile. Coinníonn Hable mionsonraí, coinníonn Mobius dath, agus coinníonn Reinhard gile.",
|
||||||
"transcoding_transcode_policy": "Polasaí traschódála",
|
"transcoding_transcode_policy": "Polasaí traschódála",
|
||||||
"transcoding_transcode_policy_description": "Polasaí maidir le cathain ba chóir físeán a thraschódú. Déanfar físeáin HDR agus físeáin le formáid picteilín seachas YUV 4:2:0 a thraschódú i gcónaí (ach amháin má tá an traschódú díchumasaithe).",
|
"transcoding_transcode_policy_description": "Polasaí maidir le cathain ba chóir físeán a thraschódú. Déanfar físeáin HDR a thraschódú i gcónaí (ach amháin má tá traschódú díchumasaithe).",
|
||||||
"transcoding_two_pass_encoding": "Ionchódú dhá phas",
|
"transcoding_two_pass_encoding": "Ionchódú dhá phas",
|
||||||
"transcoding_two_pass_encoding_setting_description": "Traschódaigh i ndá phas chun físeáin ionchódaithe níos fearr a tháirgeadh. Nuair a bhíonn an ráta giotán uasta cumasaithe (riachtanach chun go n-oibreoidh sé le H.264 agus HEVC), úsáideann an mód seo raon ráta giotán bunaithe ar an ráta giotán uasta agus ní thugann sé aird ar CRF. I gcás VP9, is féidir CRF a úsáid má tá an ráta giotán uasta díchumasaithe.",
|
"transcoding_two_pass_encoding_setting_description": "Traschódaigh i ndá phas chun físeáin ionchódaithe níos fearr a tháirgeadh. Nuair a bhíonn an ráta giotán uasta cumasaithe (riachtanach chun go n-oibreoidh sé le H.264 agus HEVC), úsáideann an mód seo raon ráta giotán bunaithe ar an ráta giotán uasta agus ní thugann sé aird ar CRF. I gcás VP9, is féidir CRF a úsáid má tá an ráta giotán uasta díchumasaithe.",
|
||||||
"transcoding_video_codec": "Códac físe",
|
"transcoding_video_codec": "Códac físe",
|
||||||
@@ -871,8 +871,8 @@
|
|||||||
"current_pin_code": "Cód PIN reatha",
|
"current_pin_code": "Cód PIN reatha",
|
||||||
"current_server_address": "Seoladh reatha an fhreastalaí",
|
"current_server_address": "Seoladh reatha an fhreastalaí",
|
||||||
"custom_date": "Dáta saincheaptha",
|
"custom_date": "Dáta saincheaptha",
|
||||||
"custom_locale": "Logán saincheaptha",
|
"custom_locale": "Logán Saincheaptha",
|
||||||
"custom_locale_description": "Formáidigh dátaí, amanna agus uimhreacha bunaithe ar an teanga agus an réigiún roghnaithe",
|
"custom_locale_description": "Formáidigh dátaí agus uimhreacha bunaithe ar an teanga agus ar an réigiún",
|
||||||
"custom_url": "URL Saincheaptha",
|
"custom_url": "URL Saincheaptha",
|
||||||
"cutoff_date_description": "Coinnigh grianghraif ón uair dheireanach…",
|
"cutoff_date_description": "Coinnigh grianghraif ón uair dheireanach…",
|
||||||
"cutoff_day": "{count, plural, one {lá} other {laethanta}}",
|
"cutoff_day": "{count, plural, one {lá} other {laethanta}}",
|
||||||
@@ -895,6 +895,8 @@
|
|||||||
"deduplication_criteria_2": "Líon sonraí EXIF",
|
"deduplication_criteria_2": "Líon sonraí EXIF",
|
||||||
"deduplication_info": "Eolas Dídhúblála",
|
"deduplication_info": "Eolas Dídhúblála",
|
||||||
"deduplication_info_description": "Chun sócmhainní a réamhroghnú go huathoibríoch agus dúblaigh a bhaint i mórchóir, féachaimid ar:",
|
"deduplication_info_description": "Chun sócmhainní a réamhroghnú go huathoibríoch agus dúblaigh a bhaint i mórchóir, féachaimid ar:",
|
||||||
|
"default_locale": "Logán Réamhshocraithe",
|
||||||
|
"default_locale_description": "Formáidigh dátaí agus uimhreacha bunaithe ar shuíomh do bhrabhsálaí",
|
||||||
"delete": "Scrios",
|
"delete": "Scrios",
|
||||||
"delete_action_confirmation_message": "An bhfuil tú cinnte gur mian leat an tsócmhainn seo a scriosadh? Bogfaidh an gníomh seo an tsócmhainn go dtí bruscar an fhreastalaí agus fiafróidh sé díot an mian leat í a scriosadh go háitiúil",
|
"delete_action_confirmation_message": "An bhfuil tú cinnte gur mian leat an tsócmhainn seo a scriosadh? Bogfaidh an gníomh seo an tsócmhainn go dtí bruscar an fhreastalaí agus fiafróidh sé díot an mian leat í a scriosadh go háitiúil",
|
||||||
"delete_action_prompt": "{count} scriosta",
|
"delete_action_prompt": "{count} scriosta",
|
||||||
@@ -1007,8 +1009,6 @@
|
|||||||
"editor_edits_applied_success": "Cuireadh na heagarthóireachtaí i bhfeidhm go rathúil",
|
"editor_edits_applied_success": "Cuireadh na heagarthóireachtaí i bhfeidhm go rathúil",
|
||||||
"editor_flip_horizontal": "Fillte go cothrománach",
|
"editor_flip_horizontal": "Fillte go cothrománach",
|
||||||
"editor_flip_vertical": "Smeach ingearach",
|
"editor_flip_vertical": "Smeach ingearach",
|
||||||
"editor_handle_corner": "{corner, select, top_left {Top-left} top_right {Barr-deas} bottom_left {Bun-chlé} bottom_right {Bun-deas} other {A}} láimhseáil cúinne",
|
|
||||||
"editor_handle_edge": "{edge, select, top {Barr} bottom {Bun} left {Clé} right {Deas} other {An}} láimhseáil imeall",
|
|
||||||
"editor_orientation": "Treoshuíomh",
|
"editor_orientation": "Treoshuíomh",
|
||||||
"editor_reset_all_changes": "Athshocraigh athruithe",
|
"editor_reset_all_changes": "Athshocraigh athruithe",
|
||||||
"editor_rotate_left": "Rothlaigh 90° tuathalach",
|
"editor_rotate_left": "Rothlaigh 90° tuathalach",
|
||||||
@@ -1074,7 +1074,6 @@
|
|||||||
"failed_to_update_notification_status": "Theip ar stádas an fhógra a nuashonrú",
|
"failed_to_update_notification_status": "Theip ar stádas an fhógra a nuashonrú",
|
||||||
"incorrect_email_or_password": "Ríomhphost nó pasfhocal mícheart",
|
"incorrect_email_or_password": "Ríomhphost nó pasfhocal mícheart",
|
||||||
"library_folder_already_exists": "Tá an cosán allmhairithe seo ann cheana féin.",
|
"library_folder_already_exists": "Tá an cosán allmhairithe seo ann cheana féin.",
|
||||||
"page_not_found": "Leathanach gan aimsiú",
|
|
||||||
"paths_validation_failed": "Theip ar bhailíochtú {paths, plural, one {# cosán} other {# cosáin}}",
|
"paths_validation_failed": "Theip ar bhailíochtú {paths, plural, one {# cosán} other {# cosáin}}",
|
||||||
"profile_picture_transparent_pixels": "Ní féidir picteilíní trédhearcacha a bheith i bpictiúir phróifíle. Zúmáil isteach agus/nó bog an íomhá le do thoil.",
|
"profile_picture_transparent_pixels": "Ní féidir picteilíní trédhearcacha a bheith i bpictiúir phróifíle. Zúmáil isteach agus/nó bog an íomhá le do thoil.",
|
||||||
"quota_higher_than_disk_size": "Shocraigh tú cuóta níos airde ná méid an diosca",
|
"quota_higher_than_disk_size": "Shocraigh tú cuóta níos airde ná méid an diosca",
|
||||||
@@ -1219,7 +1218,6 @@
|
|||||||
"filter_description": "Coinníollacha chun na sócmhainní sprice a scagadh",
|
"filter_description": "Coinníollacha chun na sócmhainní sprice a scagadh",
|
||||||
"filter_people": "Scag daoine",
|
"filter_people": "Scag daoine",
|
||||||
"filter_places": "Scag áiteanna",
|
"filter_places": "Scag áiteanna",
|
||||||
"filter_tags": "Scagairí clibeanna",
|
|
||||||
"filters": "Scagairí",
|
"filters": "Scagairí",
|
||||||
"find_them_fast": "Aimsigh iad go tapa de réir ainm le cuardach",
|
"find_them_fast": "Aimsigh iad go tapa de réir ainm le cuardach",
|
||||||
"first": "Ar dtús",
|
"first": "Ar dtús",
|
||||||
@@ -1651,7 +1649,6 @@
|
|||||||
"only_favorites": "Is fearr leat amháin",
|
"only_favorites": "Is fearr leat amháin",
|
||||||
"open": "Oscail",
|
"open": "Oscail",
|
||||||
"open_calendar": "Oscail an féilire",
|
"open_calendar": "Oscail an féilire",
|
||||||
"open_in_browser": "Oscail sa bhrabhsálaí",
|
|
||||||
"open_in_map_view": "Oscail i radharc léarscáile",
|
"open_in_map_view": "Oscail i radharc léarscáile",
|
||||||
"open_in_openstreetmap": "Oscail in OpenStreetMap",
|
"open_in_openstreetmap": "Oscail in OpenStreetMap",
|
||||||
"open_the_search_filters": "Oscail na scagairí cuardaigh",
|
"open_the_search_filters": "Oscail na scagairí cuardaigh",
|
||||||
@@ -1811,8 +1808,9 @@
|
|||||||
"rate_asset": "Rátáil Sócmhainn",
|
"rate_asset": "Rátáil Sócmhainn",
|
||||||
"rating": "Rátáil réalta",
|
"rating": "Rátáil réalta",
|
||||||
"rating_clear": "Glan rátáil",
|
"rating_clear": "Glan rátáil",
|
||||||
"rating_count": "{count, plural, =0 {Gan rátáil} one {# réalta} other {# réaltaí}}",
|
"rating_count": "{count, plural, one {# réalta} other {# réaltaí}}",
|
||||||
"rating_description": "Taispeáin an rátáil EXIF sa phainéal eolais",
|
"rating_description": "Taispeáin an rátáil EXIF sa phainéal eolais",
|
||||||
|
"rating_set": "Socraithe go {rating, plural, one {# réalta} other {# réalta}}",
|
||||||
"reaction_options": "Roghanna imoibrithe",
|
"reaction_options": "Roghanna imoibrithe",
|
||||||
"read_changelog": "Léigh an Log Athraithe",
|
"read_changelog": "Léigh an Log Athraithe",
|
||||||
"readonly_mode_disabled": "Mód léite amháin díchumasaithe",
|
"readonly_mode_disabled": "Mód léite amháin díchumasaithe",
|
||||||
@@ -1884,10 +1882,7 @@
|
|||||||
"reset_pin_code_success": "Athshocraíodh an cód PIN go rathúil",
|
"reset_pin_code_success": "Athshocraíodh an cód PIN go rathúil",
|
||||||
"reset_pin_code_with_password": "Is féidir leat do chód PIN a athshocrú i gcónaí le do phasfhocal",
|
"reset_pin_code_with_password": "Is féidir leat do chód PIN a athshocrú i gcónaí le do phasfhocal",
|
||||||
"reset_sqlite": "Athshocraigh Bunachar Sonraí SQLite",
|
"reset_sqlite": "Athshocraigh Bunachar Sonraí SQLite",
|
||||||
"reset_sqlite_clear_app_data": "Glan Sonraí",
|
"reset_sqlite_confirmation": "An bhfuil tú cinnte gur mian leat bunachar sonraí SQLite a athshocrú? Beidh ort logáil amach agus logáil isteach arís chun na sonraí a athshioncronú",
|
||||||
"reset_sqlite_confirmation": "An bhfuil tú cinnte gur mian leat sonraí an aip a ghlanadh? Bainfear na socruithe go léir leis seo agus síneofar amach thú.",
|
|
||||||
"reset_sqlite_confirmation_note": "Nóta: Beidh ort an aip a atosú tar éis duit é a ghlanadh.",
|
|
||||||
"reset_sqlite_done": "Tá sonraí an aip glanta. Atosaigh Immich agus logáil isteach arís.",
|
|
||||||
"reset_sqlite_success": "Athshocraíodh bunachar sonraí SQLite go rathúil",
|
"reset_sqlite_success": "Athshocraíodh bunachar sonraí SQLite go rathúil",
|
||||||
"reset_to_default": "Athshocraigh go réamhshocraithe",
|
"reset_to_default": "Athshocraigh go réamhshocraithe",
|
||||||
"resolution": "Taifeach",
|
"resolution": "Taifeach",
|
||||||
@@ -1915,7 +1910,6 @@
|
|||||||
"saved_settings": "Socruithe sábháilte",
|
"saved_settings": "Socruithe sábháilte",
|
||||||
"say_something": "Abair rud éigin",
|
"say_something": "Abair rud éigin",
|
||||||
"scaffold_body_error_occurred": "Tharla earráid",
|
"scaffold_body_error_occurred": "Tharla earráid",
|
||||||
"scaffold_body_error_unrecoverable": "Tharla earráid nach féidir a aisghabháil. Roinn an earráid agus an rian cruachta ar Discord nó GitHub le do thoil ionas gur féidir linn cabhrú leat. Más féidir leat comhairle a thabhairt duit, is féidir leat sonraí an aip thíos a ghlanadh.",
|
|
||||||
"scan": "Scanadh",
|
"scan": "Scanadh",
|
||||||
"scan_all_libraries": "Scanáil Gach Leabharlann",
|
"scan_all_libraries": "Scanáil Gach Leabharlann",
|
||||||
"scan_library": "Scanadh",
|
"scan_library": "Scanadh",
|
||||||
@@ -1951,7 +1945,6 @@
|
|||||||
"search_filter_ocr": "Cuardaigh de réir OCR",
|
"search_filter_ocr": "Cuardaigh de réir OCR",
|
||||||
"search_filter_people_title": "Roghnaigh daoine",
|
"search_filter_people_title": "Roghnaigh daoine",
|
||||||
"search_filter_star_rating": "Rátáil Réalta",
|
"search_filter_star_rating": "Rátáil Réalta",
|
||||||
"search_filter_tags_title": "Roghnaigh clibeanna",
|
|
||||||
"search_for": "Cuardaigh le haghaidh",
|
"search_for": "Cuardaigh le haghaidh",
|
||||||
"search_for_existing_person": "Cuardaigh duine atá ann cheana féin",
|
"search_for_existing_person": "Cuardaigh duine atá ann cheana féin",
|
||||||
"search_no_more_result": "Gan aon torthaí eile",
|
"search_no_more_result": "Gan aon torthaí eile",
|
||||||
@@ -2031,9 +2024,6 @@
|
|||||||
"set_profile_picture": "Socraigh pictiúr próifíle",
|
"set_profile_picture": "Socraigh pictiúr próifíle",
|
||||||
"set_slideshow_to_fullscreen": "Socraigh Sleamhnán go lánscáileán",
|
"set_slideshow_to_fullscreen": "Socraigh Sleamhnán go lánscáileán",
|
||||||
"set_stack_primary_asset": "Socraigh mar phríomhshócmhainn",
|
"set_stack_primary_asset": "Socraigh mar phríomhshócmhainn",
|
||||||
"setting_image_navigation_enable_subtitle": "Más cumasaithe é, is féidir leat nascleanúint a dhéanamh chuig an íomhá roimhe seo/chéad íomhá eile trí thapáil ar an gceathrú is faide ar chlé/ar dheis den scáileán.",
|
|
||||||
"setting_image_navigation_enable_title": "Tapáil chun nascleanúint a dhéanamh",
|
|
||||||
"setting_image_navigation_title": "Nascleanúint Íomhá",
|
|
||||||
"setting_image_viewer_help": "Lódálann an breathnóir sonraí an mionsamhail bheag ar dtús, ansin luchtaíonn sé an réamhamharc meánmhéide (más cumasaithe), agus ar deireadh luchtaíonn sé an bunleagan (más cumasaithe).",
|
"setting_image_viewer_help": "Lódálann an breathnóir sonraí an mionsamhail bheag ar dtús, ansin luchtaíonn sé an réamhamharc meánmhéide (más cumasaithe), agus ar deireadh luchtaíonn sé an bunleagan (más cumasaithe).",
|
||||||
"setting_image_viewer_original_subtitle": "Cumasaigh chun an íomhá lántaifigh bhunaidh (mór!) a luchtú. Díchumasaigh chun úsáid sonraí a laghdú (ar an líonra agus ar an taisce ar an ngléas araon).",
|
"setting_image_viewer_original_subtitle": "Cumasaigh chun an íomhá lántaifigh bhunaidh (mór!) a luchtú. Díchumasaigh chun úsáid sonraí a laghdú (ar an líonra agus ar an taisce ar an ngléas araon).",
|
||||||
"setting_image_viewer_original_title": "Luchtaigh an íomhá bhunaidh",
|
"setting_image_viewer_original_title": "Luchtaigh an íomhá bhunaidh",
|
||||||
@@ -2312,7 +2302,6 @@
|
|||||||
"unstack_action_prompt": "{count} gan chruachadh",
|
"unstack_action_prompt": "{count} gan chruachadh",
|
||||||
"unstacked_assets_count": "Gan chruachadh {count, plural, one {# sócmhainn} other {# sócmhainní}}",
|
"unstacked_assets_count": "Gan chruachadh {count, plural, one {# sócmhainn} other {# sócmhainní}}",
|
||||||
"unsupported_field_type": "Cineál réimse nach dtacaítear leis",
|
"unsupported_field_type": "Cineál réimse nach dtacaítear leis",
|
||||||
"unsupported_file_type": "Ní féidir an comhad {file} a uaslódáil mar nach dtacaítear lena chineál comhaid {type}.",
|
|
||||||
"untagged": "Gan Chlib",
|
"untagged": "Gan Chlib",
|
||||||
"untitled_workflow": "Sreabhadh oibre gan teideal",
|
"untitled_workflow": "Sreabhadh oibre gan teideal",
|
||||||
"up_next": "Ar aghaidh",
|
"up_next": "Ar aghaidh",
|
||||||
@@ -2339,8 +2328,6 @@
|
|||||||
"url": "URL",
|
"url": "URL",
|
||||||
"usage": "Úsáid",
|
"usage": "Úsáid",
|
||||||
"use_biometric": "Úsáid bithmhéadrach",
|
"use_biometric": "Úsáid bithmhéadrach",
|
||||||
"use_browser_locale": "Úsáid logán brabhsálaí",
|
|
||||||
"use_browser_locale_description": "Formáidigh dátaí, amanna agus uimhreacha bunaithe ar shuíomh do bhrabhsálaí",
|
|
||||||
"use_current_connection": "Úsáid an nasc reatha",
|
"use_current_connection": "Úsáid an nasc reatha",
|
||||||
"use_custom_date_range": "Úsáid raon dáta saincheaptha ina ionad",
|
"use_custom_date_range": "Úsáid raon dáta saincheaptha ina ionad",
|
||||||
"user": "Úsáideoir",
|
"user": "Úsáideoir",
|
||||||
|
|||||||
+8
-29
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "Buscar traballos…",
|
"search_jobs": "Buscar traballos…",
|
||||||
"send_welcome_email": "Enviar correo electrónico de benvida",
|
"send_welcome_email": "Enviar correo electrónico de benvida",
|
||||||
"server_external_domain_settings": "Dominio externo",
|
"server_external_domain_settings": "Dominio externo",
|
||||||
"server_external_domain_settings_description": "Dominio empregado para links externos",
|
"server_external_domain_settings_description": "Dominio para ligazóns públicas compartidas, incluíndo http(s)://",
|
||||||
"server_public_users": "Usuarios públicos",
|
"server_public_users": "Usuarios públicos",
|
||||||
"server_public_users_description": "Todos os usuarios (nome e correo electrónico) lístanse ao engadir un usuario a álbums compartidos. Cando está desactivado, a lista de usuarios só estará dispoñible para os usuarios administradores.",
|
"server_public_users_description": "Todos os usuarios (nome e correo electrónico) lístanse ao engadir un usuario a álbums compartidos. Cando está desactivado, a lista de usuarios só estará dispoñible para os usuarios administradores.",
|
||||||
"server_settings": "Configuración do servidor",
|
"server_settings": "Configuración do servidor",
|
||||||
@@ -411,7 +411,7 @@
|
|||||||
"transcoding_tone_mapping": "Mapeo de tons",
|
"transcoding_tone_mapping": "Mapeo de tons",
|
||||||
"transcoding_tone_mapping_description": "Intenta preservar a aparencia dos vídeos HDR cando se converten a SDR. Cada algoritmo fai diferentes compromisos para cor, detalle e brillo. Hable preserva o detalle, Mobius preserva a cor e Reinhard preserva o brillo.",
|
"transcoding_tone_mapping_description": "Intenta preservar a aparencia dos vídeos HDR cando se converten a SDR. Cada algoritmo fai diferentes compromisos para cor, detalle e brillo. Hable preserva o detalle, Mobius preserva a cor e Reinhard preserva o brillo.",
|
||||||
"transcoding_transcode_policy": "Política de transcodificación",
|
"transcoding_transcode_policy": "Política de transcodificación",
|
||||||
"transcoding_transcode_policy_description": "Política para cando un vídeo debe ser transcodificado. Os vídeos HDR e vídeos con formato de Pixel disintos de YUV 4:2:0 sempre serán transcodificados (excepto se a transcodificación está desactivada).",
|
"transcoding_transcode_policy_description": "Política para cando un vídeo debe ser transcodificado. Os vídeos HDR sempre serán transcodificados (excepto se a transcodificación está desactivada).",
|
||||||
"transcoding_two_pass_encoding": "Codificación en dous pasos",
|
"transcoding_two_pass_encoding": "Codificación en dous pasos",
|
||||||
"transcoding_two_pass_encoding_setting_description": "Transcodificar en dous pasos para producir vídeos codificados de mellor calidade. Cando o bitrate máximo está activado (requirido para que funcione con H.264 e HEVC), este modo usa un rango de bitrate baseado no bitrate máximo e ignora CRF. Para VP9, pódese usar CRF se o bitrate máximo está desactivado.",
|
"transcoding_two_pass_encoding_setting_description": "Transcodificar en dous pasos para producir vídeos codificados de mellor calidade. Cando o bitrate máximo está activado (requirido para que funcione con H.264 e HEVC), este modo usa un rango de bitrate baseado no bitrate máximo e ignora CRF. Para VP9, pódese usar CRF se o bitrate máximo está desactivado.",
|
||||||
"transcoding_video_codec": "Códec de vídeo",
|
"transcoding_video_codec": "Códec de vídeo",
|
||||||
@@ -794,11 +794,6 @@
|
|||||||
"color": "Cor",
|
"color": "Cor",
|
||||||
"color_theme": "Tema de cor",
|
"color_theme": "Tema de cor",
|
||||||
"command": "Comando",
|
"command": "Comando",
|
||||||
"command_palette_prompt": "Atopa rapidamente páxinas, accións ou comandos",
|
|
||||||
"command_palette_to_close": "para pechar",
|
|
||||||
"command_palette_to_navigate": "para entrar",
|
|
||||||
"command_palette_to_select": "para seleccionar",
|
|
||||||
"command_palette_to_show_all": "para amosar todo",
|
|
||||||
"comment_deleted": "Comentario eliminado",
|
"comment_deleted": "Comentario eliminado",
|
||||||
"comment_options": "Opcións de comentario",
|
"comment_options": "Opcións de comentario",
|
||||||
"comments_and_likes": "Comentarios e Gústames",
|
"comments_and_likes": "Comentarios e Gústames",
|
||||||
@@ -872,7 +867,7 @@
|
|||||||
"current_server_address": "Enderezo do servidor actual",
|
"current_server_address": "Enderezo do servidor actual",
|
||||||
"custom_date": "Data personalizada",
|
"custom_date": "Data personalizada",
|
||||||
"custom_locale": "Configuración Rexional Personalizada",
|
"custom_locale": "Configuración Rexional Personalizada",
|
||||||
"custom_locale_description": "Formatar datas, tempos e números baseándose na lingua e a rexión",
|
"custom_locale_description": "Formatar datas e números baseándose na lingua e a rexión",
|
||||||
"custom_url": "URL personalizada",
|
"custom_url": "URL personalizada",
|
||||||
"cutoff_date_description": "Manter fotos dos últimos…",
|
"cutoff_date_description": "Manter fotos dos últimos…",
|
||||||
"cutoff_day": "{count, plural, one {day} other {days}}",
|
"cutoff_day": "{count, plural, one {day} other {days}}",
|
||||||
@@ -895,6 +890,8 @@
|
|||||||
"deduplication_criteria_2": "Reconto de datos EXIF",
|
"deduplication_criteria_2": "Reconto de datos EXIF",
|
||||||
"deduplication_info": "Información de Deduplicación",
|
"deduplication_info": "Información de Deduplicación",
|
||||||
"deduplication_info_description": "Para preseleccionar automaticamente activos e eliminar duplicados masivamente, miramos:",
|
"deduplication_info_description": "Para preseleccionar automaticamente activos e eliminar duplicados masivamente, miramos:",
|
||||||
|
"default_locale": "Configuración Rexional Predeterminada",
|
||||||
|
"default_locale_description": "Formatar datas e números baseándose na configuración rexional do seu navegador",
|
||||||
"delete": "Eliminar",
|
"delete": "Eliminar",
|
||||||
"delete_action_confirmation_message": "Está seguro de que quere eliminar este ficheiro? Esta acción moverá o ficheiro ao lixo do servidor e preguntaralle se tamén quere eliminalo localmente",
|
"delete_action_confirmation_message": "Está seguro de que quere eliminar este ficheiro? Esta acción moverá o ficheiro ao lixo do servidor e preguntaralle se tamén quere eliminalo localmente",
|
||||||
"delete_action_prompt": "{count} eliminado(s)",
|
"delete_action_prompt": "{count} eliminado(s)",
|
||||||
@@ -1007,8 +1004,6 @@
|
|||||||
"editor_edits_applied_success": "As edicións aplicáronse correctamente",
|
"editor_edits_applied_success": "As edicións aplicáronse correctamente",
|
||||||
"editor_flip_horizontal": "Xirar horizontalmente",
|
"editor_flip_horizontal": "Xirar horizontalmente",
|
||||||
"editor_flip_vertical": "Xirar verticalmente",
|
"editor_flip_vertical": "Xirar verticalmente",
|
||||||
"editor_handle_corner": "{corner, select, top_left {Top-left} top_right {Top-right} bottom_left {Bottom-left} bottom_right {Bottom-right} other {A}} tirador de esquina",
|
|
||||||
"editor_handle_edge": "{edge, select, top {Top} bottom {Bottom} left {Left} right {Right} other {An}} tirador de borde",
|
|
||||||
"editor_orientation": "Orientación",
|
"editor_orientation": "Orientación",
|
||||||
"editor_reset_all_changes": "Restablecer os cambios",
|
"editor_reset_all_changes": "Restablecer os cambios",
|
||||||
"editor_rotate_left": "Xirar 90° en sentido antihorario",
|
"editor_rotate_left": "Xirar 90° en sentido antihorario",
|
||||||
@@ -1074,7 +1069,6 @@
|
|||||||
"failed_to_update_notification_status": "Erro ao actualizar o estado das notificacións",
|
"failed_to_update_notification_status": "Erro ao actualizar o estado das notificacións",
|
||||||
"incorrect_email_or_password": "Correo electrónico ou contrasinal incorrectos",
|
"incorrect_email_or_password": "Correo electrónico ou contrasinal incorrectos",
|
||||||
"library_folder_already_exists": "Esta ruta de importación xa existe.",
|
"library_folder_already_exists": "Esta ruta de importación xa existe.",
|
||||||
"page_not_found": "Páxina non atopada",
|
|
||||||
"paths_validation_failed": "{paths, plural, one {# ruta fallou} other {# rutas fallaron}} na validación",
|
"paths_validation_failed": "{paths, plural, one {# ruta fallou} other {# rutas fallaron}} na validación",
|
||||||
"profile_picture_transparent_pixels": "As imaxes de perfil non poden ter píxeles transparentes. Por favor, faga zoom e/ou mova a imaxe.",
|
"profile_picture_transparent_pixels": "As imaxes de perfil non poden ter píxeles transparentes. Por favor, faga zoom e/ou mova a imaxe.",
|
||||||
"quota_higher_than_disk_size": "Estableceu unha cota superior ao tamaño do disco",
|
"quota_higher_than_disk_size": "Estableceu unha cota superior ao tamaño do disco",
|
||||||
@@ -1174,7 +1168,6 @@
|
|||||||
"exif_bottom_sheet_people": "PERSOAS",
|
"exif_bottom_sheet_people": "PERSOAS",
|
||||||
"exif_bottom_sheet_person_add_person": "Engadir nome",
|
"exif_bottom_sheet_person_add_person": "Engadir nome",
|
||||||
"exit_slideshow": "Saír da Presentación",
|
"exit_slideshow": "Saír da Presentación",
|
||||||
"expand": "Expandir",
|
|
||||||
"expand_all": "Expandir todo",
|
"expand_all": "Expandir todo",
|
||||||
"experimental_settings_new_asset_list_subtitle": "Traballo en progreso",
|
"experimental_settings_new_asset_list_subtitle": "Traballo en progreso",
|
||||||
"experimental_settings_new_asset_list_title": "Activar grella de fotos experimental",
|
"experimental_settings_new_asset_list_title": "Activar grella de fotos experimental",
|
||||||
@@ -1219,7 +1212,6 @@
|
|||||||
"filter_description": "Condicións para filtrar os activos obxectivo",
|
"filter_description": "Condicións para filtrar os activos obxectivo",
|
||||||
"filter_people": "Filtrar persoas",
|
"filter_people": "Filtrar persoas",
|
||||||
"filter_places": "Filtrar lugares",
|
"filter_places": "Filtrar lugares",
|
||||||
"filter_tags": "Filtrar etiquetas",
|
|
||||||
"filters": "Filtros",
|
"filters": "Filtros",
|
||||||
"find_them_fast": "Atópeos rápido por nome coa busca",
|
"find_them_fast": "Atópeos rápido por nome coa busca",
|
||||||
"first": "Primeiro/a",
|
"first": "Primeiro/a",
|
||||||
@@ -1650,8 +1642,6 @@
|
|||||||
"online": "En liña",
|
"online": "En liña",
|
||||||
"only_favorites": "Só favoritos",
|
"only_favorites": "Só favoritos",
|
||||||
"open": "Abrir",
|
"open": "Abrir",
|
||||||
"open_calendar": "Abrir calendario",
|
|
||||||
"open_in_browser": "Abrir no navegador",
|
|
||||||
"open_in_map_view": "Abrir na vista de mapa",
|
"open_in_map_view": "Abrir na vista de mapa",
|
||||||
"open_in_openstreetmap": "Abrir en OpenStreetMap",
|
"open_in_openstreetmap": "Abrir en OpenStreetMap",
|
||||||
"open_the_search_filters": "Abrir os filtros de busca",
|
"open_the_search_filters": "Abrir os filtros de busca",
|
||||||
@@ -1811,8 +1801,9 @@
|
|||||||
"rate_asset": "Clasificar activo",
|
"rate_asset": "Clasificar activo",
|
||||||
"rating": "Valoración",
|
"rating": "Valoración",
|
||||||
"rating_clear": "Borrar clasificación",
|
"rating_clear": "Borrar clasificación",
|
||||||
"rating_count": "{count, plural, =0 {Sen Clasificación} one {# estrela} other {# estrelas}}",
|
"rating_count": "{count, plural, one {# estrela} other {# estrelas}}",
|
||||||
"rating_description": "Mostrar a clasificación EXIF no panel de información",
|
"rating_description": "Mostrar a clasificación EXIF no panel de información",
|
||||||
|
"rating_set": "Clasificación definida en {rating, plural, one {# star} other {# stars}}",
|
||||||
"reaction_options": "Opcións de reacción",
|
"reaction_options": "Opcións de reacción",
|
||||||
"read_changelog": "Ler Rexistro de Cambios",
|
"read_changelog": "Ler Rexistro de Cambios",
|
||||||
"readonly_mode_disabled": "Modo só lectura desactivado",
|
"readonly_mode_disabled": "Modo só lectura desactivado",
|
||||||
@@ -1884,10 +1875,7 @@
|
|||||||
"reset_pin_code_success": "Código PIN restablecido correctamente",
|
"reset_pin_code_success": "Código PIN restablecido correctamente",
|
||||||
"reset_pin_code_with_password": "Sempre podes restablecer o teu código PIN coa túa contrasinal",
|
"reset_pin_code_with_password": "Sempre podes restablecer o teu código PIN coa túa contrasinal",
|
||||||
"reset_sqlite": "Restablecer a Base de Datos SQLite",
|
"reset_sqlite": "Restablecer a Base de Datos SQLite",
|
||||||
"reset_sqlite_clear_app_data": "Limpar Datos",
|
"reset_sqlite_confirmation": "Estás seguro de que queres restablecer a base de datos SQLite? Terás que pechar a sesión e iniciar sesión de novo para sincronizar os datos outra vez",
|
||||||
"reset_sqlite_confirmation": "Estás seguro de que queres borrar os datos da aplicación? Isto eliminará toda a configuración e pechará a túa sesión.",
|
|
||||||
"reset_sqlite_confirmation_note": "Nota: Deberás reiniciar a aplicación despois de borrala.",
|
|
||||||
"reset_sqlite_done": "Borráronse os datos da aplicación. Por favor reiniciei Immich e inicie sesión de novo.",
|
|
||||||
"reset_sqlite_success": "Base de datos SQLite restablecida correctamente",
|
"reset_sqlite_success": "Base de datos SQLite restablecida correctamente",
|
||||||
"reset_to_default": "Restablecer ao predeterminado",
|
"reset_to_default": "Restablecer ao predeterminado",
|
||||||
"resolution": "Resolución",
|
"resolution": "Resolución",
|
||||||
@@ -1915,7 +1903,6 @@
|
|||||||
"saved_settings": "Configuración gardada",
|
"saved_settings": "Configuración gardada",
|
||||||
"say_something": "Dicir algo",
|
"say_something": "Dicir algo",
|
||||||
"scaffold_body_error_occurred": "Ocorreu un erro",
|
"scaffold_body_error_occurred": "Ocorreu un erro",
|
||||||
"scaffold_body_error_unrecoverable": "Produciuse un error irrecuperable. Comparte o erro e a \"stack trace\" no Discord ou no GitHub para poder axudarche. No caso de indicarse, pode borrar os datos da aplicación a continuación.",
|
|
||||||
"scan": "Escanear",
|
"scan": "Escanear",
|
||||||
"scan_all_libraries": "Escanear Todas as Bibliotecas",
|
"scan_all_libraries": "Escanear Todas as Bibliotecas",
|
||||||
"scan_library": "Escanear",
|
"scan_library": "Escanear",
|
||||||
@@ -1951,7 +1938,6 @@
|
|||||||
"search_filter_ocr": "Buscar por OCR",
|
"search_filter_ocr": "Buscar por OCR",
|
||||||
"search_filter_people_title": "Seleccionar persoas",
|
"search_filter_people_title": "Seleccionar persoas",
|
||||||
"search_filter_star_rating": "Clasificación por estrelas",
|
"search_filter_star_rating": "Clasificación por estrelas",
|
||||||
"search_filter_tags_title": "Seleccionar etiquetas",
|
|
||||||
"search_for": "Buscar por",
|
"search_for": "Buscar por",
|
||||||
"search_for_existing_person": "Buscar persoa existente",
|
"search_for_existing_person": "Buscar persoa existente",
|
||||||
"search_no_more_result": "Non hai máis resultados",
|
"search_no_more_result": "Non hai máis resultados",
|
||||||
@@ -2031,9 +2017,6 @@
|
|||||||
"set_profile_picture": "Establecer imaxe de perfil",
|
"set_profile_picture": "Establecer imaxe de perfil",
|
||||||
"set_slideshow_to_fullscreen": "Poñer Presentación a pantalla completa",
|
"set_slideshow_to_fullscreen": "Poñer Presentación a pantalla completa",
|
||||||
"set_stack_primary_asset": "Establecer como activo principal",
|
"set_stack_primary_asset": "Establecer como activo principal",
|
||||||
"setting_image_navigation_enable_subtitle": "Se está activado, podes navegar entre as imáxenes seguintes e anteriores ao tocar na parte esquerda e dereita da pantalla.",
|
|
||||||
"setting_image_navigation_enable_title": "Toca para navegar",
|
|
||||||
"setting_image_navigation_title": "Navegación de Imaxes",
|
|
||||||
"setting_image_viewer_help": "O visor de detalles carga primeiro a miniatura pequena, despois carga a vista previa de tamaño medio (se está activada), e finalmente carga o orixinal (se está activado).",
|
"setting_image_viewer_help": "O visor de detalles carga primeiro a miniatura pequena, despois carga a vista previa de tamaño medio (se está activada), e finalmente carga o orixinal (se está activado).",
|
||||||
"setting_image_viewer_original_subtitle": "Activar para cargar a imaxe orixinal a resolución completa (grande!). Desactivar para reducir o uso de datos (tanto na rede como na caché do dispositivo).",
|
"setting_image_viewer_original_subtitle": "Activar para cargar a imaxe orixinal a resolución completa (grande!). Desactivar para reducir o uso de datos (tanto na rede como na caché do dispositivo).",
|
||||||
"setting_image_viewer_original_title": "Cargar imaxe orixinal",
|
"setting_image_viewer_original_title": "Cargar imaxe orixinal",
|
||||||
@@ -2200,7 +2183,6 @@
|
|||||||
"support": "Soporte",
|
"support": "Soporte",
|
||||||
"support_and_feedback": "Soporte e Comentarios",
|
"support_and_feedback": "Soporte e Comentarios",
|
||||||
"support_third_party_description": "A súa instalación de Immich foi empaquetada por un terceiro. Os problemas que experimente poden ser causados por ese paquete, así que por favor, comunique os problemas con eles en primeira instancia usando as ligazóns a continuación.",
|
"support_third_party_description": "A súa instalación de Immich foi empaquetada por un terceiro. Os problemas que experimente poden ser causados por ese paquete, así que por favor, comunique os problemas con eles en primeira instancia usando as ligazóns a continuación.",
|
||||||
"supporter": "Colaborador",
|
|
||||||
"swap_merge_direction": "Intercambiar dirección de fusión",
|
"swap_merge_direction": "Intercambiar dirección de fusión",
|
||||||
"sync": "Sincronizar",
|
"sync": "Sincronizar",
|
||||||
"sync_albums": "Sincronizar álbums",
|
"sync_albums": "Sincronizar álbums",
|
||||||
@@ -2312,7 +2294,6 @@
|
|||||||
"unstack_action_prompt": "{count} desapilados",
|
"unstack_action_prompt": "{count} desapilados",
|
||||||
"unstacked_assets_count": "Desapilados {count, plural, one {# activo} other {# activos}}",
|
"unstacked_assets_count": "Desapilados {count, plural, one {# activo} other {# activos}}",
|
||||||
"unsupported_field_type": "Tipo de campo non soportado",
|
"unsupported_field_type": "Tipo de campo non soportado",
|
||||||
"unsupported_file_type": "O arquivo {file} non puido cargarse porque o seu tipo de arquivo {type} non se soporta.",
|
|
||||||
"untagged": "Sen etiquetar",
|
"untagged": "Sen etiquetar",
|
||||||
"untitled_workflow": "Fluxo de traballo sen título",
|
"untitled_workflow": "Fluxo de traballo sen título",
|
||||||
"up_next": "A continuación",
|
"up_next": "A continuación",
|
||||||
@@ -2339,8 +2320,6 @@
|
|||||||
"url": "URL",
|
"url": "URL",
|
||||||
"usage": "Uso",
|
"usage": "Uso",
|
||||||
"use_biometric": "Usar biometría",
|
"use_biometric": "Usar biometría",
|
||||||
"use_browser_locale": "Usar navegador local",
|
|
||||||
"use_browser_locale_description": "Formatear datas, tempos e números basado na configuración do teu navegador local",
|
|
||||||
"use_current_connection": "Empregar conexión actual",
|
"use_current_connection": "Empregar conexión actual",
|
||||||
"use_custom_date_range": "Usar rango de datas personalizado no seu lugar",
|
"use_custom_date_range": "Usar rango de datas personalizado no seu lugar",
|
||||||
"user": "Usuario",
|
"user": "Usuario",
|
||||||
|
|||||||
+2
-1
@@ -15,7 +15,6 @@
|
|||||||
"add_a_location": "Standort hiifüege",
|
"add_a_location": "Standort hiifüege",
|
||||||
"add_a_name": "Name hiifüege",
|
"add_a_name": "Name hiifüege",
|
||||||
"add_a_title": "Titel hiifüege",
|
"add_a_title": "Titel hiifüege",
|
||||||
"add_action": "Aktion hiifüege",
|
|
||||||
"add_birthday": "Geburtsdatum hiifüege",
|
"add_birthday": "Geburtsdatum hiifüege",
|
||||||
"add_endpoint": "Endpunkt hiifüege",
|
"add_endpoint": "Endpunkt hiifüege",
|
||||||
"add_exclusion_pattern": "Ausschlussmuster hiifüege",
|
"add_exclusion_pattern": "Ausschlussmuster hiifüege",
|
||||||
@@ -839,6 +838,8 @@
|
|||||||
"deduplication_criteria_2": "Anzahl vo de EXIF Date",
|
"deduplication_criteria_2": "Anzahl vo de EXIF Date",
|
||||||
"deduplication_info": "Deduplizierungsinformatione",
|
"deduplication_info": "Deduplizierungsinformatione",
|
||||||
"deduplication_info_description": "Für d’automatischi Datei-Voruswahl und s’Dedupliziere vo allne Dateie berücksichtige mir:",
|
"deduplication_info_description": "Für d’automatischi Datei-Voruswahl und s’Dedupliziere vo allne Dateie berücksichtige mir:",
|
||||||
|
"default_locale": "Standard Sproch",
|
||||||
|
"default_locale_description": "Datumsangabe und Zahle basierend uf em Gebietsschema vom Browser formatiere",
|
||||||
"delete": "Lösche",
|
"delete": "Lösche",
|
||||||
"delete_action_confirmation_message": "Bisch du sicher, dass du dies Objekt lösche wotsch? Die Aktion verschiebt s’Objekt i de Papirkorb vom Server und fragt dich, ob du’s lokal löösche wotsch",
|
"delete_action_confirmation_message": "Bisch du sicher, dass du dies Objekt lösche wotsch? Die Aktion verschiebt s’Objekt i de Papirkorb vom Server und fragt dich, ob du’s lokal löösche wotsch",
|
||||||
"delete_action_prompt": "{count} glöscht",
|
"delete_action_prompt": "{count} glöscht",
|
||||||
|
|||||||
+2
-79
@@ -2,93 +2,16 @@
|
|||||||
"about": "વિશે",
|
"about": "વિશે",
|
||||||
"account": "ખાતું",
|
"account": "ખાતું",
|
||||||
"account_settings": "ખાતાનાં સેટિંગ્સ",
|
"account_settings": "ખાતાનાં સેટિંગ્સ",
|
||||||
"acknowledge": "જાણકારી મળી",
|
|
||||||
"action": "ક્રિયા",
|
|
||||||
"action_common_update": "સુધારો",
|
|
||||||
"action_description": "છાંટેલી વસ્તુઓ પર કરી શકાય તેવી ક્રિયાઓ",
|
|
||||||
"actions": "ક્રિયાઓ",
|
|
||||||
"active": "સક્રિય",
|
"active": "સક્રિય",
|
||||||
"active_count": "સક્રિય: {count}",
|
"active_count": "સક્રિય: {count}",
|
||||||
"activity": "પ્રવૃત્તિ",
|
"activity": "પ્રવૃત્તિ",
|
||||||
"activity_changed": "પ્રવૃત્તિ {enabled, select, true {સક્રિય} other {નિષ્ક્રિય}} છે",
|
|
||||||
"add": "ઉમેરો",
|
"add": "ઉમેરો",
|
||||||
"add_a_description": "એક વર્ણન ઉમેરો",
|
"add_a_description": "એક વર્ણન ઉમેરો",
|
||||||
"add_a_location": "એક સ્થાન ઉમેરો",
|
"add_a_location": "એક સ્થાન ઉમેરો",
|
||||||
"add_a_name": "એક નામ ઉમેરો",
|
"add_a_name": "એક નામ ઉમેરો",
|
||||||
"add_a_title": "એક શીર્ષક ઉમેરો",
|
"add_a_title": "એક શીર્ષક ઉમેરો",
|
||||||
"add_action": "ક્રિયા ઉમેરો",
|
"add_birthday": "એક જન્મદિવસ ઉમેરો",
|
||||||
"add_action_description": "ક્રિયા ઉમેરવા માટે ક્લિક કરો",
|
|
||||||
"add_assets": "સંસાધનો ઉમેરો",
|
|
||||||
"add_birthday": "જન્મદિવસ ઉમેરો",
|
|
||||||
"add_endpoint": "એન્ડપોઇન્ટ ઉમેરો",
|
"add_endpoint": "એન્ડપોઇન્ટ ઉમેરો",
|
||||||
"add_exclusion_pattern": "બાકાત રાખવાની પદ્ધતિ ઉમેરો",
|
|
||||||
"add_filter": "ફિલ્ટર ઉમેરો",
|
|
||||||
"add_filter_description": "ફિલ્ટર શરત ઉમેરવા માટે ક્લિક કરો",
|
|
||||||
"add_location": "સ્થાન ઉમેરો",
|
"add_location": "સ્થાન ઉમેરો",
|
||||||
"add_more_users": "વધારે યુઝર ઉમેરો",
|
"add_partner": "સાથી ઉમેરો"
|
||||||
"add_partner": "સાથી ઉમેરો",
|
|
||||||
"add_path": "પાથ ઉમેરો",
|
|
||||||
"add_photos": "ફોટો ઉમેરો",
|
|
||||||
"add_tag": "ટેગ ઉમેરો",
|
|
||||||
"add_to": "માં ઉમેરો",
|
|
||||||
"add_to_album": "આલ્બમમાં ઉમેરો",
|
|
||||||
"add_to_album_bottom_sheet_added": "{album} માં ઉમેરો",
|
|
||||||
"add_to_album_bottom_sheet_already_exists": "પહેલેથી જ {album} માં છે",
|
|
||||||
"add_to_album_bottom_sheet_some_local_assets": "કેટલાક લોકલ એસેટ્સને એલ્બમમાં ઉમેરવામાં આવી શક્યા નથી",
|
|
||||||
"add_to_album_toggle": "{album} માટે પસંદગી ટૉગલ કરો",
|
|
||||||
"add_to_albums": "આલ્બમો ઉમેરો",
|
|
||||||
"add_to_albums_count": "આલ્બમો માં ઉમેરો {count}",
|
|
||||||
"add_to_bottom_bar": "માં ઉમેરો",
|
|
||||||
"add_to_shared_album": "શેર કરેલ આલ્બમમાં ઉમેરો",
|
|
||||||
"add_upload_to_stack": "અપલોડને સ્ટેકમાં ઉમેરો",
|
|
||||||
"add_url": "URL ઉમેરો",
|
|
||||||
"add_workflow_step": "વર્કફ્લો પગલુ ઉમેરો",
|
|
||||||
"added_to_archive": "આર્કાઇવમાં સંગ્રહિત કરવામાં આવી છે",
|
|
||||||
"added_to_favorites": "મનપસંદ તરીકે ચિન્હીત કરેલ છે",
|
|
||||||
"added_to_favorites_count": "મનપસંદ તરીકે {count, number} ને ચિહ્નિત કરવામાં આવેલ છે",
|
|
||||||
"admin": {
|
|
||||||
"add_exclusion_pattern_description": "એક્સક્લુઝન પેટર્ન ઉમેરો. ‘*’, ‘**’, ‘?’ થી ગ્લોબિંગ સપોર્ટેડ છે. \"Raw\" ડિરેક્ટરી ઇગ્નોર કરવા \"/Raw/\", \".tif\" ફાઈલો માટે \"/*.tif\" અને એબ્સોલ્યુટ પાથ માટે \"/path/to/ignore/\" નો ઉપયોગ કરો.",
|
|
||||||
"admin_user": "વયવસ્થાપક વપરાશકર્તા",
|
|
||||||
"asset_offline_description": "આ બાહ્ય લાઇબ્રેરી એસેટ હવે ડિસ્ક પર મળતો નથી અને તેને ટ્રેશમાં ખસેડવામાં આવ્યો છે. જો ફાઇલ લાઇબ્રેરીની અંદર જ ખસેડાઈ હોય, તો નવા સંબંધિત એસેટ માટે તમારી ટાઈમલાઇન તપાસો. આ એસેટને પુનઃસ્થાપિત કરવા માટે, કૃપા કરીને ખાતરી કરો કે નીચે દર્શાવેલ ફાઇલ પથ Immich દ્વારા ઍક્સેસ કરી શકાય છે અને ત્યારબાદ લાઇબ્રેરી સ્કેન કરો.",
|
|
||||||
"authentication_settings": "પ્રમાણિકરણ સેટિંગ્સ",
|
|
||||||
"authentication_settings_description": "પાસવર્ડ, OAuth અને અન્ય પ્રમાણિકરણ સેટિંગ્સ મેનેજ કરો",
|
|
||||||
"authentication_settings_disable_all": "શું તમે ખાતરી કરો છો કે તમે તમામ લૉગિન પદ્ધતિઓ નિષ્ક્રિય કરવા માંગો છો? લૉગિન સંપૂર્ણ રીતે બંધ થઈ જશે.",
|
|
||||||
"authentication_settings_reenable": "ફરીથી સક્રિય કરવા માટે, <link>સર્વર કમાન્ડ</link> નો ઉપયોગ કરો.",
|
|
||||||
"background_task_job": "પૃષ્ઠભૂમિ કાર્યો",
|
|
||||||
"backup_database": "ડેટાબેઝ ડમ્પ બનાવો",
|
|
||||||
"backup_database_enable_description": "ડેટાબેઝ ડમ્પ સક્રિય કરો",
|
|
||||||
"backup_keep_last_amount": "અગાઉના ડમ્પ્સની સંખ્યા જાળવી રાખવા માટે",
|
|
||||||
"backup_onboarding_1_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> જુઓ.",
|
|
||||||
"backup_onboarding_parts_title": "3-2-1 બેકઅપમાં સામેલ છે:",
|
|
||||||
"backup_onboarding_title": "બેકઅપ્સ",
|
|
||||||
"backup_settings": "ડેટાબેઝ ડમ્પ સેટિંગ્સ",
|
|
||||||
"backup_settings_description": "ડેટાબેઝ ડમ્પ સેટિંગ્સના પ્રબંધ કરો.",
|
|
||||||
"cleared_jobs": "{job} માટે કાર્યો સાફ કરવામાં આવ્યા",
|
|
||||||
"config_set_by_file": "રૂપરેખા હાલમાં રૂપરેખા ફાઇલ દ્વારા સેટ કરવામાં આવી છે",
|
|
||||||
"confirm_delete_library": "શું તમે ખાતરી કરો છો કે તમે {library} લાઇબ્રેરી કાઢી નાખવા માંગો છો?",
|
|
||||||
"confirm_delete_library_assets": "શું તમે ખાતરી કરો છો કે તમે આ લાઇબ્રેરી કાઢી નાખવા માંગો છો? આ Immich માંથી {count, plural, one {# સમાવાયેલ એસેટ} other {બધા # સમાવાયેલ એસેટ્સ}} કાઢી નાખશે અને તેને પાછું લાવી શકાશે નહીં. ફાઇલો ડિસ્ક પર જ રહેશે.",
|
|
||||||
"confirm_email_below": "પુષ્ટિ કરવા માટે, નીચે \"{email}\" લખો",
|
|
||||||
"confirm_reprocess_all_faces": "શું તમે ખાતરી કરો છો કે તમે તમામ ચહેરાઓને ફરીથી પ્રોસેસ કરવા માંગો છો? આ નામ આપવામાં આવેલા લોકોની માહિતી પણ સાફ કરશે.",
|
|
||||||
"confirm_user_password_reset": "શું તમે ખાતરી કરો છો કે તમે {user} નો પાસવર્ડ રીસેટ કરવા માંગો છો?",
|
|
||||||
"confirm_user_pin_code_reset": "શું તમે ખાતરી કરો છો કે તમે {user} નો PIN કોડ રીસેટ કરવા માંગો છો?",
|
|
||||||
"copy_config_to_clipboard_description": "વર્તમાન સિસ્ટમ કન્ફિગને JSON ઓબ્જેક્ટ તરીકે ક્લિપબોર્ડમાં કૉપી કરો",
|
|
||||||
"create_job": "કાર્ય બનાવો",
|
|
||||||
"cron_expression": "ક્રોન એક્સપ્રેશન",
|
|
||||||
"cron_expression_description": "ક્રોન ફોર્મેટનો ઉપયોગ કરીને સ્કેનિંગ ઇન્ટરવલ સેટ કરો. વધુ માહિતી માટે કૃપા કરીને <link>Crontab Guru</link> જુઓ.",
|
|
||||||
"cron_expression_presets": "ક્રોન એક્સપ્રેશન પ્રીસેટ્સ",
|
|
||||||
"disable_login": "લોગિન ડિસેબલ કરો",
|
|
||||||
"duplicate_detection_job_description": "સરખી ઈમેજો શોધવા માટે તમારા સંસાધનો પર મશીન લર્નિંગનો ઉપયોગ કરો. આ સુવિધા સ્માર્ટ સર્ચ પર આધારિત છે",
|
|
||||||
"exclusion_pattern_description": "તમારા સંગ્રહને સ્કેન કરતી વખતે એક્સક્લુઝન પેટર્ન તમને ફાઇલો અને ફોલ્ડર્સને અવગણવામાં મદદ કરે છે. જો તમારી પાસે એવી ફાઇલો ધરાવતા ફોલ્ડર્સ હોય જેને તમે ઈમ્પોર્ટ કરવા નથી માંગતા, જેમ કે RAW ફાઇલો, તો આ સુવિધા ઉપયોગી છે.",
|
|
||||||
"export_config_as_json_description": "વર્તમાન સિસ્ટમ કોન્ફિગને JSON ફાઇલ તરીકે ડાઉનલોડ કરો",
|
|
||||||
"external_libraries_page_description": "એડમિન એક્સટર્નલ લાઈબ્રેરી પેજ",
|
|
||||||
"face_detection": "ચહેરાની પરખ",
|
|
||||||
"face_detection_description": "મશીન લર્નિંગનો ઉપયોગ કરીને સંસાધનોમાં ચહેરાની પરખ કરો. વીડિયો માટે, ફક્ત થંબનેલ જ ધ્યાનમાં લેવામાં આવે છે. \"રિફ્રેશ\" બધા સંસાધનો પર ફરીથી પ્રક્રિયા કરે છે. \"રીસેટ\" વધારામાં ચહેરાના તમામ વર્તમાન ડેટાને સાફ કરે છે. \"ખૂટતા\" તેવા સંસાધનોને કતારમાં મૂકે છે જેના પર હજુ સુધી પ્રક્રિયા કરવામાં આવી નથી. ચહેરાની પરખ પૂર્ણ થયા પછી, શોધાયેલા ચહેરાઓને 'ચહેરાની ઓળખ' માટે કતારમાં મૂકવામાં આવશે, જે તેમને હાલની અથવા નવી વ્યક્તિઓના જૂથમાં વિભાજિત કરશે.",
|
|
||||||
"facial_recognition_job_description": "શોધાયેલા ચહેરાઓને વ્યક્તિઓના જૂથમાં વિભાજિત કરો. આ પગલું 'ચહેરાની પરખ' પૂર્ણ થયા પછી શરૂ થાય છે. \"રીસેટ\" બધા ચહેરાઓનું ફરીથી જૂથીકરણ કરે છે. \"ખૂટતા\" તેવા ચહેરાઓને કતારમાં મૂકે છે જેમને હજુ સુધી કોઈ વ્યક્તિ ફાળવવામાં આવી નથી.",
|
|
||||||
"failed_job_command": "આ કાર્ય માટે આદેશ {command} નિષ્ફળ રહ્યો: {job}",
|
|
||||||
"force_delete_user_warning": "ચેતવણી: આ પ્રક્રિયા તરત જ વપરાશકર્તા અને તમામ સંસાધનોને દૂર કરી દેશે. આ નિર્ણય બદલી શકાશે નહીં અને ફાઇલોને ફરીથી મેળવી શકાશે નહીં."
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-202
@@ -18,7 +18,6 @@
|
|||||||
"add_a_title": "הוספת כותרת",
|
"add_a_title": "הוספת כותרת",
|
||||||
"add_action": "הוסף פעולה",
|
"add_action": "הוסף פעולה",
|
||||||
"add_action_description": "לחץ כדי להוסיף פעולה לביצוע",
|
"add_action_description": "לחץ כדי להוסיף פעולה לביצוע",
|
||||||
"add_assets": "הוסף תמונות",
|
|
||||||
"add_birthday": "הוספת יום הולדת",
|
"add_birthday": "הוספת יום הולדת",
|
||||||
"add_endpoint": "הוסף כתובת URL",
|
"add_endpoint": "הוסף כתובת URL",
|
||||||
"add_exclusion_pattern": "הוספת דפוס החרגה",
|
"add_exclusion_pattern": "הוספת דפוס החרגה",
|
||||||
@@ -42,7 +41,7 @@
|
|||||||
"add_to_shared_album": "הוספה לאלבום משותף",
|
"add_to_shared_album": "הוספה לאלבום משותף",
|
||||||
"add_upload_to_stack": "הוסף את ההעלאה לערימה",
|
"add_upload_to_stack": "הוסף את ההעלאה לערימה",
|
||||||
"add_url": "הוספת קישור",
|
"add_url": "הוספת קישור",
|
||||||
"add_workflow_step": "הוספת שלב זרימת עבודה",
|
"add_workflow_step": "הוסף שלב בסדר פעולות",
|
||||||
"added_to_archive": "נוסף לארכיון",
|
"added_to_archive": "נוסף לארכיון",
|
||||||
"added_to_favorites": "נוסף למועדפים",
|
"added_to_favorites": "נוסף למועדפים",
|
||||||
"added_to_favorites_count": "{count, number} נוספו למועדפים",
|
"added_to_favorites_count": "{count, number} נוספו למועדפים",
|
||||||
@@ -53,7 +52,7 @@
|
|||||||
"authentication_settings": "הגדרות התחברות",
|
"authentication_settings": "הגדרות התחברות",
|
||||||
"authentication_settings_description": "ניהול סיסמה, OAuth, והגדרות התחברות אחרות",
|
"authentication_settings_description": "ניהול סיסמה, OAuth, והגדרות התחברות אחרות",
|
||||||
"authentication_settings_disable_all": "האם ברצונך להשבית את כל שיטות ההתחברות? כניסה למערכת תהיה מושבתת לחלוטין.",
|
"authentication_settings_disable_all": "האם ברצונך להשבית את כל שיטות ההתחברות? כניסה למערכת תהיה מושבתת לחלוטין.",
|
||||||
"authentication_settings_reenable": "כדי לאפשר מחדש, יש להשתמש ב<link>פקודת שרת</link>.",
|
"authentication_settings_reenable": "כדי לאפשר מחדש, נא להשתמש ב<link>פקודת שרת</link>.",
|
||||||
"background_task_job": "משימות רקע",
|
"background_task_job": "משימות רקע",
|
||||||
"backup_database": "גיבוי מסד נתונים",
|
"backup_database": "גיבוי מסד נתונים",
|
||||||
"backup_database_enable_description": "אפשר גיבויי מסד נתונים",
|
"backup_database_enable_description": "אפשר גיבויי מסד נתונים",
|
||||||
@@ -104,8 +103,6 @@
|
|||||||
"image_preview_description": "תמונה בגודל בינוני עם מטא-נתונים שהוסרו, משמשת בעת צפייה בתמונה בודדת ועבור למידת מכונה",
|
"image_preview_description": "תמונה בגודל בינוני עם מטא-נתונים שהוסרו, משמשת בעת צפייה בתמונה בודדת ועבור למידת מכונה",
|
||||||
"image_preview_quality_description": "איכות תצוגה מקדימה מ-1 עד 100. איכות גבוהה יותר היא טובה יותר, אבל מייצרת קבצים גדולים יותר ויכולה להפחית את תגובתיות היישום. הגדרת ערך נמוך עשויה להשפיע על איכות תוצאות של למידת מכונה.",
|
"image_preview_quality_description": "איכות תצוגה מקדימה מ-1 עד 100. איכות גבוהה יותר היא טובה יותר, אבל מייצרת קבצים גדולים יותר ויכולה להפחית את תגובתיות היישום. הגדרת ערך נמוך עשויה להשפיע על איכות תוצאות של למידת מכונה.",
|
||||||
"image_preview_title": "הגדרות תצוגה מקדימה",
|
"image_preview_title": "הגדרות תצוגה מקדימה",
|
||||||
"image_progressive": "הדרגתיות",
|
|
||||||
"image_progressive_description": "קידוד תמונות JPEG באופן הדרגתי לתצוגת טעינה הדרגתית. אין לכך השפעה על תמונות WebP.",
|
|
||||||
"image_quality": "איכות",
|
"image_quality": "איכות",
|
||||||
"image_resolution": "רזולוציה",
|
"image_resolution": "רזולוציה",
|
||||||
"image_resolution_description": "רזולוציות גבוהות יותר יכולות לשמר פרטים רבים יותר אך לוקחות זמן רב יותר לקידוד, יש להן גדלי קבצים גדולים יותר ויכולות להפחית את תגובתיות היישום.",
|
"image_resolution_description": "רזולוציות גבוהות יותר יכולות לשמר פרטים רבים יותר אך לוקחות זמן רב יותר לקידוד, יש להן גדלי קבצים גדולים יותר ויכולות להפחית את תגובתיות היישום.",
|
||||||
@@ -190,21 +187,10 @@
|
|||||||
"machine_learning_smart_search_enabled": "אפשר חיפוש חכם",
|
"machine_learning_smart_search_enabled": "אפשר חיפוש חכם",
|
||||||
"machine_learning_smart_search_enabled_description": "אם מושבת, תמונות לא יקודדו לחיפוש חכם.",
|
"machine_learning_smart_search_enabled_description": "אם מושבת, תמונות לא יקודדו לחיפוש חכם.",
|
||||||
"machine_learning_url_description": "כתובת ה-URL של שרת למידת המכונה. אם ניתנת יותר מכתובת URL אחת, כל שרת ינוסה ניסיון אחד בכל פעם עד שאחד מהם יגיב בהצלחה, לפי הסדר מהראשון עד האחרון. שרתים שלא מגיבים יוזנחו זמנית עד שיחזרו להיות מקוונים.",
|
"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!",
|
|
||||||
"maintenance_restore_backup_unknown_version": "לא ניתן היה לקבוע את גרסת הגיבוי.",
|
|
||||||
"maintenance_restore_database_backup": "שחזור גיבוי מסד הנתונים",
|
|
||||||
"maintenance_restore_database_backup_description": "חזרה למצב קודם של מסד נתונים באמצעות קובץ גיבוי",
|
|
||||||
"maintenance_settings": "תחזוקה",
|
"maintenance_settings": "תחזוקה",
|
||||||
"maintenance_settings_description": "העבר את Immich למצב תחזוקה.",
|
"maintenance_settings_description": "העבר את Immich למצב תחזוקה.",
|
||||||
"maintenance_start": "הפעלת מצב תחזוקה",
|
"maintenance_start": "התחלת מצב תחזוקה",
|
||||||
"maintenance_start_error": "התחלת מצב תחזוקה נכשלה.",
|
"maintenance_start_error": "התחלת מצב תחזוקה נכשלה.",
|
||||||
"maintenance_upload_backup": "העלאת קובץ גיבוי של מסד הנתונים",
|
|
||||||
"maintenance_upload_backup_error": "לא ניתן היה להעלות את הגיבוי, האם זהו קובץ .sql/.sql.gz?",
|
|
||||||
"manage_concurrency": "ניהול מקביליות",
|
"manage_concurrency": "ניהול מקביליות",
|
||||||
"manage_concurrency_description": "עבור לדף העבודות כדי לנהל הרצת עבודות במקביל",
|
"manage_concurrency_description": "עבור לדף העבודות כדי לנהל הרצת עבודות במקביל",
|
||||||
"manage_log_settings": "ניהול הגדרות רישום ביומן",
|
"manage_log_settings": "ניהול הגדרות רישום ביומן",
|
||||||
@@ -272,7 +258,7 @@
|
|||||||
"oauth_auto_register": "רישום אוטומטי",
|
"oauth_auto_register": "רישום אוטומטי",
|
||||||
"oauth_auto_register_description": "רשום אוטומטית משתמשים חדשים לאחר כניסה עם OAuth",
|
"oauth_auto_register_description": "רשום אוטומטית משתמשים חדשים לאחר כניסה עם OAuth",
|
||||||
"oauth_button_text": "טקסט לחצן",
|
"oauth_button_text": "טקסט לחצן",
|
||||||
"oauth_client_secret_description": "נדרש עבור לקוח סודי, או אם PKCE (מפתח הוכחה להחלפת קוד) אינו נתמך עבור לקוח ציבורי.",
|
"oauth_client_secret_description": "נדרש כאשר ספק ה־OAuth אינו תומך ב־PKCE (מפתח הוכחה להחלפת קוד)",
|
||||||
"oauth_enable_description": "התחבר עם OAuth",
|
"oauth_enable_description": "התחבר עם OAuth",
|
||||||
"oauth_mobile_redirect_uri": "URI להפניה מחדש בנייד",
|
"oauth_mobile_redirect_uri": "URI להפניה מחדש בנייד",
|
||||||
"oauth_mobile_redirect_uri_override": "עקיפת URI להפניה מחדש בנייד",
|
"oauth_mobile_redirect_uri_override": "עקיפת URI להפניה מחדש בנייד",
|
||||||
@@ -311,7 +297,7 @@
|
|||||||
"search_jobs": "חיפוש עבודות…",
|
"search_jobs": "חיפוש עבודות…",
|
||||||
"send_welcome_email": "שלח דוא\"ל ברוכים הבאים",
|
"send_welcome_email": "שלח דוא\"ל ברוכים הבאים",
|
||||||
"server_external_domain_settings": "דומיין חיצוני",
|
"server_external_domain_settings": "דומיין חיצוני",
|
||||||
"server_external_domain_settings_description": "דומיין המשמש עבור קישורים חיצוניים",
|
"server_external_domain_settings_description": "דומיין עבור קישורים משותפים ציבוריים, כולל //:http(s)",
|
||||||
"server_public_users": "משתמשים ציבוריים",
|
"server_public_users": "משתמשים ציבוריים",
|
||||||
"server_public_users_description": "כל המשתמשים (שם ודוא\"ל) מופיעים בעת הוספת משתמש לאלבומים משותפים. כאשר התכונה מושבתת, רשימת המשתמשים תהיה זמינה רק למשתמשים בעלי הרשאות ניהול.",
|
"server_public_users_description": "כל המשתמשים (שם ודוא\"ל) מופיעים בעת הוספת משתמש לאלבומים משותפים. כאשר התכונה מושבתת, רשימת המשתמשים תהיה זמינה רק למשתמשים בעלי הרשאות ניהול.",
|
||||||
"server_settings": "הגדרות שרת",
|
"server_settings": "הגדרות שרת",
|
||||||
@@ -411,7 +397,7 @@
|
|||||||
"transcoding_tone_mapping": "מיפוי גוונים",
|
"transcoding_tone_mapping": "מיפוי גוונים",
|
||||||
"transcoding_tone_mapping_description": "מנסה לשמר את המראה של סרטוני HDR כשהם מומרים ל-SDR. כל אלגוריתם עושה פשרות שונות עבור צבע, פירוט ובהירות. Hable משמר פרטים, Mobius משמר צבע, ו-Reinhard משמר בהירות.",
|
"transcoding_tone_mapping_description": "מנסה לשמר את המראה של סרטוני HDR כשהם מומרים ל-SDR. כל אלגוריתם עושה פשרות שונות עבור צבע, פירוט ובהירות. Hable משמר פרטים, Mobius משמר צבע, ו-Reinhard משמר בהירות.",
|
||||||
"transcoding_transcode_policy": "מדיניות המרת קידוד",
|
"transcoding_transcode_policy": "מדיניות המרת קידוד",
|
||||||
"transcoding_transcode_policy_description": "מדיניות לגבי מתי יש להמיר קידוד של סרטון. תמיד יומר הקידוד של סרטוני HDR וסרטונים עם פורמט פיקסל השונה מ־YUV 4:2:0 (למעט אם המרת קידוד מושבתת).",
|
"transcoding_transcode_policy_description": "מדיניות לגבי מתי יש להמיר קידוד של סרטון. תמיד יומר הקידוד של סרטוני HDR (למעט אם המרת קידוד מושבתת).",
|
||||||
"transcoding_two_pass_encoding": "קידוד בשני מעברים",
|
"transcoding_two_pass_encoding": "קידוד בשני מעברים",
|
||||||
"transcoding_two_pass_encoding_setting_description": "המר קידוד בשני מעברים כדי לייצר סרטונים מקודדים טוב יותר. כאשר קצב סיביות מרבי מופעל (נדרש כדי שזה יעבוד עם H.264 ו-HEVC), מצב זה משתמש בטווח קצב סיביות המבוסס על קצב הסיביות המרבי ומתעלם מ-CRF. עבור VP9, ניתן להשתמש ב-CRF אם קצב סיביות מרבי מושבת.",
|
"transcoding_two_pass_encoding_setting_description": "המר קידוד בשני מעברים כדי לייצר סרטונים מקודדים טוב יותר. כאשר קצב סיביות מרבי מופעל (נדרש כדי שזה יעבוד עם H.264 ו-HEVC), מצב זה משתמש בטווח קצב סיביות המבוסס על קצב הסיביות המרבי ומתעלם מ-CRF. עבור VP9, ניתן להשתמש ב-CRF אם קצב סיביות מרבי מושבת.",
|
||||||
"transcoding_video_codec": "מקודד סרטון",
|
"transcoding_video_codec": "מקודד סרטון",
|
||||||
@@ -451,9 +437,6 @@
|
|||||||
"admin_password": "סיסמת מנהל",
|
"admin_password": "סיסמת מנהל",
|
||||||
"administration": "ניהול",
|
"administration": "ניהול",
|
||||||
"advanced": "מתקדם",
|
"advanced": "מתקדם",
|
||||||
"advanced_settings_clear_image_cache": "נקה קבצי מטמון",
|
|
||||||
"advanced_settings_clear_image_cache_error": "לא ניתן היה לנקות את קבצי המטמון",
|
|
||||||
"advanced_settings_clear_image_cache_success": "נוקה בהצלחה {size}",
|
|
||||||
"advanced_settings_enable_alternate_media_filter_subtitle": "השתמש באפשרות זו כדי לסנן מדיה במהלך הסנכרון לפי קריטריונים חלופיים. מומלץ להשתמש בזה רק אם יש בעיה בזיהוי כל האלבומים באפליקציה.",
|
"advanced_settings_enable_alternate_media_filter_subtitle": "השתמש באפשרות זו כדי לסנן מדיה במהלך הסנכרון לפי קריטריונים חלופיים. מומלץ להשתמש בזה רק אם יש בעיה בזיהוי כל האלבומים באפליקציה.",
|
||||||
"advanced_settings_enable_alternate_media_filter_title": "[ניסיוני] השתמש במסנן סנכרון אלבום חלופי שמבכשיר",
|
"advanced_settings_enable_alternate_media_filter_title": "[ניסיוני] השתמש במסנן סנכרון אלבום חלופי שמבכשיר",
|
||||||
"advanced_settings_log_level_title": "רמת רישום ביומן: {level}",
|
"advanced_settings_log_level_title": "רמת רישום ביומן: {level}",
|
||||||
@@ -495,7 +478,6 @@
|
|||||||
"album_summary": "תקציר אלבום",
|
"album_summary": "תקציר אלבום",
|
||||||
"album_updated": "אלבום עודכן",
|
"album_updated": "אלבום עודכן",
|
||||||
"album_updated_setting_description": "קבל הודעת דוא\"ל כאשר לאלבום משותף יש תמונות חדשות",
|
"album_updated_setting_description": "קבל הודעת דוא\"ל כאשר לאלבום משותף יש תמונות חדשות",
|
||||||
"album_upload_assets": "העלה תמונות מהמחשב שלך והוסף לאלבום",
|
|
||||||
"album_user_left": "עזב את {album}",
|
"album_user_left": "עזב את {album}",
|
||||||
"album_user_removed": "{user} הוסר",
|
"album_user_removed": "{user} הוסר",
|
||||||
"album_viewer_appbar_delete_confirm": "האם את/ה בטוח/ה שברצונך למחוק את האלבום הזה מהחשבון שלך?",
|
"album_viewer_appbar_delete_confirm": "האם את/ה בטוח/ה שברצונך למחוק את האלבום הזה מהחשבון שלך?",
|
||||||
@@ -513,11 +495,9 @@
|
|||||||
"albums_default_sort_order_description": "סדר מיון תמונות ראשוני בעת יצירת אלבומים חדשים.",
|
"albums_default_sort_order_description": "סדר מיון תמונות ראשוני בעת יצירת אלבומים חדשים.",
|
||||||
"albums_feature_description": "אוספים של תמונות אשר ניתנים לשיתוף עם משתמשים אחרים.",
|
"albums_feature_description": "אוספים של תמונות אשר ניתנים לשיתוף עם משתמשים אחרים.",
|
||||||
"albums_on_device_count": "אלבומים במכשיר ({count})",
|
"albums_on_device_count": "אלבומים במכשיר ({count})",
|
||||||
"albums_selected": "{count, plural, one {אלבום אחד נבחר} other {# אלבומים נבחרו}}",
|
|
||||||
"all": "הכל",
|
"all": "הכל",
|
||||||
"all_albums": "כל האלבומים",
|
"all_albums": "כל האלבומים",
|
||||||
"all_people": "כל האנשים",
|
"all_people": "כל האנשים",
|
||||||
"all_photos": "כל התמונות",
|
|
||||||
"all_videos": "כל הסרטונים",
|
"all_videos": "כל הסרטונים",
|
||||||
"allow_dark_mode": "אפשר מצב כהה",
|
"allow_dark_mode": "אפשר מצב כהה",
|
||||||
"allow_edits": "אפשר עריכות",
|
"allow_edits": "אפשר עריכות",
|
||||||
@@ -525,9 +505,6 @@
|
|||||||
"allow_public_user_to_upload": "אפשר למשתמש ציבורי להעלות",
|
"allow_public_user_to_upload": "אפשר למשתמש ציבורי להעלות",
|
||||||
"allowed": "מורשה",
|
"allowed": "מורשה",
|
||||||
"alt_text_qr_code": "תמונת קוד QR",
|
"alt_text_qr_code": "תמונת קוד QR",
|
||||||
"always_keep": "שמור תמיד",
|
|
||||||
"always_keep_photos_hint": "פינוי מקום ישמור את כל התמונות במכשיר זה.",
|
|
||||||
"always_keep_videos_hint": "פינוי מקום ישמור את כל הסרטונים במכשיר זה.",
|
|
||||||
"anti_clockwise": "נגד כיוון השעון",
|
"anti_clockwise": "נגד כיוון השעון",
|
||||||
"api_key": "מפתח API",
|
"api_key": "מפתח API",
|
||||||
"api_key_description": "הערך הזה יוצג רק פעם אחת. נא לוודא שהעתקת אותו לפני סגירת החלון.",
|
"api_key_description": "הערך הזה יוצג רק פעם אחת. נא לוודא שהעתקת אותו לפני סגירת החלון.",
|
||||||
@@ -572,9 +549,6 @@
|
|||||||
"asset_list_layout_sub_title": "פריסה",
|
"asset_list_layout_sub_title": "פריסה",
|
||||||
"asset_list_settings_subtitle": "הגדרות תבנית רשת תמונות",
|
"asset_list_settings_subtitle": "הגדרות תבנית רשת תמונות",
|
||||||
"asset_list_settings_title": "רשת תמונות",
|
"asset_list_settings_title": "רשת תמונות",
|
||||||
"asset_not_found_on_device_android": "מדיה לא נמצאה במכשיר",
|
|
||||||
"asset_not_found_on_device_ios": "המדיה לא נמצאה במכשיר. אם אתה משתמש ב-iCloud, ייתכן שהמדיה אינה נגישה עקב קובץ פגום המאוחסן ב-iCloud",
|
|
||||||
"asset_not_found_on_icloud": "המדיה לא נמצאה ב-iCloud. ייתכן שהמדיה אינה נגישה עקב קובץ פגום המאוחסן ב-iCloud",
|
|
||||||
"asset_offline": "תמונה לא מקוונת",
|
"asset_offline": "תמונה לא מקוונת",
|
||||||
"asset_offline_description": "התמונה החיצונית הזאת כבר לא נמצאת בדיסק. נא ליצור קשר עם מנהל Immich שלך לקבלת עזרה.",
|
"asset_offline_description": "התמונה החיצונית הזאת כבר לא נמצאת בדיסק. נא ליצור קשר עם מנהל Immich שלך לקבלת עזרה.",
|
||||||
"asset_restored_successfully": "תמונה שוחזרה בהצלחה",
|
"asset_restored_successfully": "תמונה שוחזרה בהצלחה",
|
||||||
@@ -746,8 +720,6 @@
|
|||||||
"change_password_form_password_mismatch": "סיסמאות לא תואמות",
|
"change_password_form_password_mismatch": "סיסמאות לא תואמות",
|
||||||
"change_password_form_reenter_new_password": "הכנס שוב סיסמה חדשה",
|
"change_password_form_reenter_new_password": "הכנס שוב סיסמה חדשה",
|
||||||
"change_pin_code": "שנה קוד PIN",
|
"change_pin_code": "שנה קוד PIN",
|
||||||
"change_trigger": "שנה טריגר",
|
|
||||||
"change_trigger_prompt": "האם אתה בטוח שברצונך לשנות את הטריגר? פעולה זו תסיר את כל הפעולות והמסננים הקיימים.",
|
|
||||||
"change_your_password": "החלף את הסיסמה שלך",
|
"change_your_password": "החלף את הסיסמה שלך",
|
||||||
"changed_visibility_successfully": "הנראות שונתה בהצלחה",
|
"changed_visibility_successfully": "הנראות שונתה בהצלחה",
|
||||||
"charging": "טוען",
|
"charging": "טוען",
|
||||||
@@ -756,21 +728,9 @@
|
|||||||
"check_corrupt_asset_backup_button": "בצע בדיקה",
|
"check_corrupt_asset_backup_button": "בצע בדיקה",
|
||||||
"check_corrupt_asset_backup_description": "הרץ בדיקה זו רק על Wi-Fi ולאחר שכל התמונות גובו. ההליך עשוי לקחת כמה דקות.",
|
"check_corrupt_asset_backup_description": "הרץ בדיקה זו רק על Wi-Fi ולאחר שכל התמונות גובו. ההליך עשוי לקחת כמה דקות.",
|
||||||
"check_logs": "בדוק יומני רישום",
|
"check_logs": "בדוק יומני רישום",
|
||||||
"checksum": "סיכום ביקורת",
|
"checksum": "Checksum",
|
||||||
"choose_matching_people_to_merge": "בחר אנשים תואמים למיזוג",
|
"choose_matching_people_to_merge": "בחר אנשים תואמים למיזוג",
|
||||||
"city": "עיר",
|
"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})",
|
|
||||||
"cleanup_step3_description": "סרוק אחר תמונות וסרטונים מגובים התואמים את התאריך שבחרת ושמור את ההגדרות.",
|
|
||||||
"cleanup_step4_summary": "{count} תמונות וסרטונים (שנוצרו לפני {date}) להסרה מהמכשיר המקומי שלך. התמונות והסרטונים יישארו נגישים מאפליקציית Immich.",
|
|
||||||
"cleanup_trash_hint": "כדי לפנות שטח אחסון במכשיר, פתחו את אפליקציית הגלריה במכשיר ורוקנו את האשפה",
|
|
||||||
"clear": "נקה",
|
"clear": "נקה",
|
||||||
"clear_all": "נקה הכל",
|
"clear_all": "נקה הכל",
|
||||||
"clear_all_recent_searches": "נקה את כל החיפושים האחרונים",
|
"clear_all_recent_searches": "נקה את כל החיפושים האחרונים",
|
||||||
@@ -782,8 +742,6 @@
|
|||||||
"client_cert_import": "ייבוא",
|
"client_cert_import": "ייבוא",
|
||||||
"client_cert_import_success_msg": "תעודת לקוח מיובאת",
|
"client_cert_import_success_msg": "תעודת לקוח מיובאת",
|
||||||
"client_cert_invalid_msg": "קובץ תעודה לא תקין או סיסמה שגויה",
|
"client_cert_invalid_msg": "קובץ תעודה לא תקין או סיסמה שגויה",
|
||||||
"client_cert_password_message": "הזן את הסיסמה עבור תעודה זו",
|
|
||||||
"client_cert_password_title": "סיסמת התעודה",
|
|
||||||
"client_cert_remove_msg": "תעודת לקוח הוסרה",
|
"client_cert_remove_msg": "תעודת לקוח הוסרה",
|
||||||
"client_cert_subtitle": "תומך בפורמט PKCS12 (.p12, .pfx) בלבד. ייבוא/הסרה של תעודה זמינה רק לפני התחברות",
|
"client_cert_subtitle": "תומך בפורמט PKCS12 (.p12, .pfx) בלבד. ייבוא/הסרה של תעודה זמינה רק לפני התחברות",
|
||||||
"client_cert_title": "תעודת לקוח SSL [ניסיוני]",
|
"client_cert_title": "תעודת לקוח SSL [ניסיוני]",
|
||||||
@@ -794,11 +752,6 @@
|
|||||||
"color": "צבע",
|
"color": "צבע",
|
||||||
"color_theme": "צבע ערכת נושא",
|
"color_theme": "צבע ערכת נושא",
|
||||||
"command": "פקודה",
|
"command": "פקודה",
|
||||||
"command_palette_prompt": "מצא במהירות דפים, פעולות או פקודות",
|
|
||||||
"command_palette_to_close": "לסגור",
|
|
||||||
"command_palette_to_navigate": "להיכנס",
|
|
||||||
"command_palette_to_select": "לבחור",
|
|
||||||
"command_palette_to_show_all": "להציג הכל",
|
|
||||||
"comment_deleted": "תגובה נמחקה",
|
"comment_deleted": "תגובה נמחקה",
|
||||||
"comment_options": "אפשרויות תגובה",
|
"comment_options": "אפשרויות תגובה",
|
||||||
"comments_and_likes": "תגובות & לייקים",
|
"comments_and_likes": "תגובות & לייקים",
|
||||||
@@ -843,7 +796,6 @@
|
|||||||
"create_album": "צור אלבום",
|
"create_album": "צור אלבום",
|
||||||
"create_album_page_untitled": "ללא כותרת",
|
"create_album_page_untitled": "ללא כותרת",
|
||||||
"create_api_key": "יצירת מפתח API",
|
"create_api_key": "יצירת מפתח API",
|
||||||
"create_first_workflow": "צור זרימת עבודה ראשונית",
|
|
||||||
"create_library": "צור ספרייה",
|
"create_library": "צור ספרייה",
|
||||||
"create_link": "צור קישור",
|
"create_link": "צור קישור",
|
||||||
"create_link_to_share": "צור קישור לשיתוף",
|
"create_link_to_share": "צור קישור לשיתוף",
|
||||||
@@ -858,25 +810,17 @@
|
|||||||
"create_tag": "צור תג",
|
"create_tag": "צור תג",
|
||||||
"create_tag_description": "צור תג חדש. עבור תגים מקוננים, נא להזין את הנתיב המלא של התג כולל קווים נטויים.",
|
"create_tag_description": "צור תג חדש. עבור תגים מקוננים, נא להזין את הנתיב המלא של התג כולל קווים נטויים.",
|
||||||
"create_user": "צור משתמש",
|
"create_user": "צור משתמש",
|
||||||
"create_workflow": "צור זרימת עבודה",
|
|
||||||
"created": "נוצר",
|
"created": "נוצר",
|
||||||
"created_at": "נוצר",
|
"created_at": "נוצר",
|
||||||
"creating_linked_albums": "יוצר אלבומים מקושרים...",
|
"creating_linked_albums": "יוצר אלבומים מקושרים...",
|
||||||
"crop": "חתוך",
|
"crop": "חתוך",
|
||||||
"crop_aspect_ratio_fixed": "תוקן",
|
|
||||||
"crop_aspect_ratio_free": "חינם",
|
|
||||||
"crop_aspect_ratio_original": "מקורי",
|
|
||||||
"curated_object_page_title": "דברים",
|
"curated_object_page_title": "דברים",
|
||||||
"current_device": "מכשיר נוכחי",
|
"current_device": "מכשיר נוכחי",
|
||||||
"current_pin_code": "קוד PIN הנוכחי",
|
"current_pin_code": "קוד PIN הנוכחי",
|
||||||
"current_server_address": "כתובת שרת נוכחית",
|
"current_server_address": "כתובת שרת נוכחית",
|
||||||
"custom_date": "תאריך מותאם אישית",
|
|
||||||
"custom_locale": "אזור שפה מותאם אישית",
|
"custom_locale": "אזור שפה מותאם אישית",
|
||||||
"custom_locale_description": "עצב תאריכים, זמנים, ומספרים על סמך השפה והאזור שנבחרו",
|
"custom_locale_description": "עצב תאריכים ומספרים על סמך השפה והאזור",
|
||||||
"custom_url": "קישור מותאם אישית",
|
"custom_url": "קישור מותאם אישית",
|
||||||
"cutoff_date_description": "שמור תמונות מ…",
|
|
||||||
"cutoff_day": "{count, plural, one {יום} other {ימים}}",
|
|
||||||
"cutoff_year": "{count, plural, one {שנה} other {שנים}}",
|
|
||||||
"daily_title_text_date": "E, MMM dd",
|
"daily_title_text_date": "E, MMM dd",
|
||||||
"daily_title_text_date_year": "E, MMM dd, yyyy",
|
"daily_title_text_date_year": "E, MMM dd, yyyy",
|
||||||
"dark": "כהה",
|
"dark": "כהה",
|
||||||
@@ -895,6 +839,8 @@
|
|||||||
"deduplication_criteria_2": "כמות נתוני EXIF",
|
"deduplication_criteria_2": "כמות נתוני EXIF",
|
||||||
"deduplication_info": "מידע על ביטול כפילויות",
|
"deduplication_info": "מידע על ביטול כפילויות",
|
||||||
"deduplication_info_description": "כדי לבחור מראש תמונות באופן אוטומטי ולהסיר כפילויות בכמות גדולה, אנו מסתכלים על:",
|
"deduplication_info_description": "כדי לבחור מראש תמונות באופן אוטומטי ולהסיר כפילויות בכמות גדולה, אנו מסתכלים על:",
|
||||||
|
"default_locale": "שפת ברירת מחדל",
|
||||||
|
"default_locale_description": "פורמט תאריכים ומספרים מבוסס שפת הדפדפן שלך",
|
||||||
"delete": "מחק",
|
"delete": "מחק",
|
||||||
"delete_action_confirmation_message": "האם אתה בטוח שברצונך למחוק את התמונה הזאת? פעולה זו תעביר אותו לאשפה של השרת, ותשאל אם ברצונך למחוק אותו גם מהמכשיר המקומי",
|
"delete_action_confirmation_message": "האם אתה בטוח שברצונך למחוק את התמונה הזאת? פעולה זו תעביר אותו לאשפה של השרת, ותשאל אם ברצונך למחוק אותו גם מהמכשיר המקומי",
|
||||||
"delete_action_prompt": "{count} נמחקו",
|
"delete_action_prompt": "{count} נמחקו",
|
||||||
@@ -930,7 +876,6 @@
|
|||||||
"deselect_all": "בטל הכל",
|
"deselect_all": "בטל הכל",
|
||||||
"details": "פרטים",
|
"details": "פרטים",
|
||||||
"direction": "כיוון",
|
"direction": "כיוון",
|
||||||
"disable": "השבת",
|
|
||||||
"disabled": "מושבת",
|
"disabled": "מושבת",
|
||||||
"disallow_edits": "אל תאפשר עריכות",
|
"disallow_edits": "אל תאפשר עריכות",
|
||||||
"discord": "דיסקורד",
|
"discord": "דיסקורד",
|
||||||
@@ -956,7 +901,6 @@
|
|||||||
"download_include_embedded_motion_videos": "סרטונים מוטמעים",
|
"download_include_embedded_motion_videos": "סרטונים מוטמעים",
|
||||||
"download_include_embedded_motion_videos_description": "כלול סרטונים מוטעמים בתמונות עם תנועה כקובץ נפרד",
|
"download_include_embedded_motion_videos_description": "כלול סרטונים מוטעמים בתמונות עם תנועה כקובץ נפרד",
|
||||||
"download_notfound": "הורדה לא נמצא",
|
"download_notfound": "הורדה לא נמצא",
|
||||||
"download_original": "הורד את המקור",
|
|
||||||
"download_paused": "הורדה הופסקה",
|
"download_paused": "הורדה הופסקה",
|
||||||
"download_settings": "הורדה",
|
"download_settings": "הורדה",
|
||||||
"download_settings_description": "ניהול הגדרות הקשורות להורדת תמונות",
|
"download_settings_description": "ניהול הגדרות הקשורות להורדת תמונות",
|
||||||
@@ -966,7 +910,6 @@
|
|||||||
"download_waiting_to_retry": "מחכה כדי לנסות שוב",
|
"download_waiting_to_retry": "מחכה כדי לנסות שוב",
|
||||||
"downloading": "מוריד",
|
"downloading": "מוריד",
|
||||||
"downloading_asset_filename": "מוריד תמונה {filename}",
|
"downloading_asset_filename": "מוריד תמונה {filename}",
|
||||||
"downloading_from_icloud": "מוריד מ-iCloud",
|
|
||||||
"downloading_media": "מוריד מדיה",
|
"downloading_media": "מוריד מדיה",
|
||||||
"drop_files_to_upload": "שחרר קבצים בכל מקום כדי להעלות",
|
"drop_files_to_upload": "שחרר קבצים בכל מקום כדי להעלות",
|
||||||
"duplicates": "כפילויות",
|
"duplicates": "כפילויות",
|
||||||
@@ -995,22 +938,9 @@
|
|||||||
"edit_tag": "ערוך תג",
|
"edit_tag": "ערוך תג",
|
||||||
"edit_title": "ערוך כותרת",
|
"edit_title": "ערוך כותרת",
|
||||||
"edit_user": "ערוך משתמש",
|
"edit_user": "ערוך משתמש",
|
||||||
"edit_workflow": "ערוך זרימת עבודה",
|
|
||||||
"editor": "עורך",
|
"editor": "עורך",
|
||||||
"editor_close_without_save_prompt": "השינויים לא יישמרו",
|
"editor_close_without_save_prompt": "השינויים לא יישמרו",
|
||||||
"editor_close_without_save_title": "לסגור את העורך?",
|
"editor_close_without_save_title": "לסגור את העורך?",
|
||||||
"editor_confirm_reset_all_changes": "האם אתה בטוח שברצונך לאפס את כל השינויים?",
|
|
||||||
"editor_discard_edits_confirm": "בטל עריכות",
|
|
||||||
"editor_discard_edits_prompt": "יש לך עריכות שלא נשמרו. האם אתה בטוח שברצונך למחוק אותן?",
|
|
||||||
"editor_discard_edits_title": "למחוק את העריכות?",
|
|
||||||
"editor_edits_applied_error": "החלת העריכות נכשלה",
|
|
||||||
"editor_edits_applied_success": "עריכות יושמו בהצלחה",
|
|
||||||
"editor_flip_horizontal": "הפוך אופקית",
|
|
||||||
"editor_flip_vertical": "הפוך אנכית",
|
|
||||||
"editor_orientation": "כיוון",
|
|
||||||
"editor_reset_all_changes": "איפוס שינויים",
|
|
||||||
"editor_rotate_left": "סיבוב 90° נגד כיוון השעון",
|
|
||||||
"editor_rotate_right": "סיבוב 90° עם כיוון השעון",
|
|
||||||
"email": "דוא\"ל",
|
"email": "דוא\"ל",
|
||||||
"email_notifications": "התראות באימייל",
|
"email_notifications": "התראות באימייל",
|
||||||
"empty_folder": "תיקיה זו ריקה",
|
"empty_folder": "תיקיה זו ריקה",
|
||||||
@@ -1029,14 +959,11 @@
|
|||||||
"error_change_sort_album": "שינוי סדר מיון אלבום נכשל",
|
"error_change_sort_album": "שינוי סדר מיון אלבום נכשל",
|
||||||
"error_delete_face": "שגיאה במחיקת פנים מתמונה",
|
"error_delete_face": "שגיאה במחיקת פנים מתמונה",
|
||||||
"error_getting_places": "שגיאה בקבלת מקומות",
|
"error_getting_places": "שגיאה בקבלת מקומות",
|
||||||
"error_loading_albums": "שגיאה בטעינת אלבומים",
|
|
||||||
"error_loading_image": "שגיאה בטעינת התמונה",
|
"error_loading_image": "שגיאה בטעינת התמונה",
|
||||||
"error_loading_partners": "שגיאה בטעינת שותפים: {error}",
|
"error_loading_partners": "שגיאה בטעינת שותפים: {error}",
|
||||||
"error_retrieving_asset_information": "שגיאה באחזור פרטי המדיה",
|
|
||||||
"error_saving_image": "שגיאה: {error}",
|
"error_saving_image": "שגיאה: {error}",
|
||||||
"error_tag_face_bounding_box": "שגיאה בתיוג הפנים – לא ניתן לקבל את קואורדינטות המסגרת",
|
"error_tag_face_bounding_box": "שגיאה בתיוג הפנים – לא ניתן לקבל את קואורדינטות המסגרת",
|
||||||
"error_title": "שגיאה - משהו השתבש",
|
"error_title": "שגיאה - משהו השתבש",
|
||||||
"error_while_navigating": "שגיאה בניווט לתמונה",
|
|
||||||
"errors": {
|
"errors": {
|
||||||
"cannot_navigate_next_asset": "לא ניתן לנווט לתמונה הבאה",
|
"cannot_navigate_next_asset": "לא ניתן לנווט לתמונה הבאה",
|
||||||
"cannot_navigate_previous_asset": "לא ניתן לנווט לתמונה הקודמת",
|
"cannot_navigate_previous_asset": "לא ניתן לנווט לתמונה הקודמת",
|
||||||
@@ -1072,7 +999,6 @@
|
|||||||
"failed_to_update_notification_status": "שגיאה בעדכון ההתראה",
|
"failed_to_update_notification_status": "שגיאה בעדכון ההתראה",
|
||||||
"incorrect_email_or_password": "דוא\"ל או סיסמה שגויים",
|
"incorrect_email_or_password": "דוא\"ל או סיסמה שגויים",
|
||||||
"library_folder_already_exists": "נתיב הייבוא כבר מוגדר.",
|
"library_folder_already_exists": "נתיב הייבוא כבר מוגדר.",
|
||||||
"page_not_found": "העמוד לא נמצא :/",
|
|
||||||
"paths_validation_failed": "{paths, plural, one {נתיב # נכשל} other {# נתיבים נכשלו}} אימות",
|
"paths_validation_failed": "{paths, plural, one {נתיב # נכשל} other {# נתיבים נכשלו}} אימות",
|
||||||
"profile_picture_transparent_pixels": "תמונות פרופיל אינן יכולות לכלול פיקסלים שקופים. נא להגדיל ו/או להזיז את התמונה.",
|
"profile_picture_transparent_pixels": "תמונות פרופיל אינן יכולות לכלול פיקסלים שקופים. נא להגדיל ו/או להזיז את התמונה.",
|
||||||
"quota_higher_than_disk_size": "הגדרת מכסה גבוהה יותר מגודל הדיסק",
|
"quota_higher_than_disk_size": "הגדרת מכסה גבוהה יותר מגודל הדיסק",
|
||||||
@@ -1095,7 +1021,6 @@
|
|||||||
"unable_to_complete_oauth_login": "לא ניתן להשלים התחברות OAuth",
|
"unable_to_complete_oauth_login": "לא ניתן להשלים התחברות OAuth",
|
||||||
"unable_to_connect": "לא ניתן להתחבר",
|
"unable_to_connect": "לא ניתן להתחבר",
|
||||||
"unable_to_copy_to_clipboard": "לא ניתן להעתיק ללוח, יש לודא שניגשת לדף דרך https",
|
"unable_to_copy_to_clipboard": "לא ניתן להעתיק ללוח, יש לודא שניגשת לדף דרך https",
|
||||||
"unable_to_create": "לא ניתן ליצור זרימת עבודה",
|
|
||||||
"unable_to_create_admin_account": "לא ניתן ליצור חשבון מנהל",
|
"unable_to_create_admin_account": "לא ניתן ליצור חשבון מנהל",
|
||||||
"unable_to_create_api_key": "לא ניתן ליצור מפתח API חדש",
|
"unable_to_create_api_key": "לא ניתן ליצור מפתח API חדש",
|
||||||
"unable_to_create_library": "לא ניתן ליצור ספרייה",
|
"unable_to_create_library": "לא ניתן ליצור ספרייה",
|
||||||
@@ -1106,7 +1031,6 @@
|
|||||||
"unable_to_delete_exclusion_pattern": "לא ניתן למחוק דפוס החרגה",
|
"unable_to_delete_exclusion_pattern": "לא ניתן למחוק דפוס החרגה",
|
||||||
"unable_to_delete_shared_link": "לא ניתן למחוק קישור משותף",
|
"unable_to_delete_shared_link": "לא ניתן למחוק קישור משותף",
|
||||||
"unable_to_delete_user": "לא ניתן למחוק משתמש",
|
"unable_to_delete_user": "לא ניתן למחוק משתמש",
|
||||||
"unable_to_delete_workflow": "לא ניתן למחוק את זרימת העבודה",
|
|
||||||
"unable_to_download_files": "לא ניתן להוריד קבצים",
|
"unable_to_download_files": "לא ניתן להוריד קבצים",
|
||||||
"unable_to_edit_exclusion_pattern": "לא ניתן לערוך דפוס החרגה",
|
"unable_to_edit_exclusion_pattern": "לא ניתן לערוך דפוס החרגה",
|
||||||
"unable_to_empty_trash": "לא ניתן לרוקן אשפה",
|
"unable_to_empty_trash": "לא ניתן לרוקן אשפה",
|
||||||
@@ -1146,7 +1070,6 @@
|
|||||||
"unable_to_scan_library": "לא ניתן לסרוק ספרייה",
|
"unable_to_scan_library": "לא ניתן לסרוק ספרייה",
|
||||||
"unable_to_set_feature_photo": "לא ניתן להגדיר תמונה מייצגת",
|
"unable_to_set_feature_photo": "לא ניתן להגדיר תמונה מייצגת",
|
||||||
"unable_to_set_profile_picture": "לא ניתן להגדיר תמונת פרופיל",
|
"unable_to_set_profile_picture": "לא ניתן להגדיר תמונת פרופיל",
|
||||||
"unable_to_set_rating": "לא ניתן להגדיר דירוג",
|
|
||||||
"unable_to_submit_job": "לא ניתן לשלוח משימה",
|
"unable_to_submit_job": "לא ניתן לשלוח משימה",
|
||||||
"unable_to_trash_asset": "לא ניתן להעביר תמונה לאשפה",
|
"unable_to_trash_asset": "לא ניתן להעביר תמונה לאשפה",
|
||||||
"unable_to_unlink_account": "לא ניתן לבטל קישור חשבון",
|
"unable_to_unlink_account": "לא ניתן לבטל קישור חשבון",
|
||||||
@@ -1158,10 +1081,8 @@
|
|||||||
"unable_to_update_settings": "לא ניתן לעדכן הגדרות",
|
"unable_to_update_settings": "לא ניתן לעדכן הגדרות",
|
||||||
"unable_to_update_timeline_display_status": "לא ניתן לעדכן את מצב תצוגת ציר הזמן",
|
"unable_to_update_timeline_display_status": "לא ניתן לעדכן את מצב תצוגת ציר הזמן",
|
||||||
"unable_to_update_user": "לא ניתן לעדכן משתמש",
|
"unable_to_update_user": "לא ניתן לעדכן משתמש",
|
||||||
"unable_to_update_workflow": "לא ניתן לעדכן את זרימת העבודה",
|
|
||||||
"unable_to_upload_file": "לא ניתן להעלות קובץ"
|
"unable_to_upload_file": "לא ניתן להעלות קובץ"
|
||||||
},
|
},
|
||||||
"errors_text": "שגיאות",
|
|
||||||
"exclusion_pattern": "דפוס אי הכללה",
|
"exclusion_pattern": "דפוס אי הכללה",
|
||||||
"exif": "Exif",
|
"exif": "Exif",
|
||||||
"exif_bottom_sheet_description": "הוסף תיאור...",
|
"exif_bottom_sheet_description": "הוסף תיאור...",
|
||||||
@@ -1172,7 +1093,6 @@
|
|||||||
"exif_bottom_sheet_people": "אנשים",
|
"exif_bottom_sheet_people": "אנשים",
|
||||||
"exif_bottom_sheet_person_add_person": "הוסף שם",
|
"exif_bottom_sheet_person_add_person": "הוסף שם",
|
||||||
"exit_slideshow": "צא ממצגת שקופיות",
|
"exit_slideshow": "צא ממצגת שקופיות",
|
||||||
"expand": "הרחב",
|
|
||||||
"expand_all": "הרחב הכל",
|
"expand_all": "הרחב הכל",
|
||||||
"experimental_settings_new_asset_list_subtitle": "עבודה בתהליך",
|
"experimental_settings_new_asset_list_subtitle": "עבודה בתהליך",
|
||||||
"experimental_settings_new_asset_list_title": "אפשר רשת תמונות ניסיונית",
|
"experimental_settings_new_asset_list_title": "אפשר רשת תמונות ניסיונית",
|
||||||
@@ -1208,17 +1128,12 @@
|
|||||||
"features_in_development": "תכונות בפיתוח",
|
"features_in_development": "תכונות בפיתוח",
|
||||||
"features_setting_description": "ניהול תכונות היישום",
|
"features_setting_description": "ניהול תכונות היישום",
|
||||||
"file_name_or_extension": "שם קובץ או סיומת",
|
"file_name_or_extension": "שם קובץ או סיומת",
|
||||||
"file_name_text": "שם הקובץ",
|
|
||||||
"file_name_with_value": "שם הקובץ: {file_name}",
|
|
||||||
"file_size": "גודל קובץ",
|
"file_size": "גודל קובץ",
|
||||||
"filename": "שם קובץ",
|
"filename": "שם קובץ",
|
||||||
"filetype": "סוג קובץ",
|
"filetype": "סוג קובץ",
|
||||||
"filter": "סנן",
|
"filter": "סנן",
|
||||||
"filter_description": "תנאים לסינון תמונות וסרטונים רצויים",
|
|
||||||
"filter_people": "סנן אנשים",
|
"filter_people": "סנן אנשים",
|
||||||
"filter_places": "סינון מקומות",
|
"filter_places": "סינון מקומות",
|
||||||
"filter_tags": "תגי סינון",
|
|
||||||
"filters": "מסננים",
|
|
||||||
"find_them_fast": "מצא אותם מהר לפי שם עם חיפוש",
|
"find_them_fast": "מצא אותם מהר לפי שם עם חיפוש",
|
||||||
"first": "ראשון",
|
"first": "ראשון",
|
||||||
"fix_incorrect_match": "תקן התאמה שגויה",
|
"fix_incorrect_match": "תקן התאמה שגויה",
|
||||||
@@ -1228,16 +1143,12 @@
|
|||||||
"folders_feature_description": "עיון בתצוגת התיקייה עבור התמונות והסרטונים שבמערכת הקבצים",
|
"folders_feature_description": "עיון בתצוגת התיקייה עבור התמונות והסרטונים שבמערכת הקבצים",
|
||||||
"forgot_pin_code_question": "שחכת את ה-PIN שלך?",
|
"forgot_pin_code_question": "שחכת את ה-PIN שלך?",
|
||||||
"forward": "קדימה",
|
"forward": "קדימה",
|
||||||
"free_up_space": "פינוי מקום",
|
|
||||||
"free_up_space_description": "העבר תמונות וסרטונים מגובים לאשפה של המכשיר שלך כדי לפנות מקום. העותקים בשרת נשארים בטוחים.",
|
|
||||||
"free_up_space_settings_subtitle": "פינוי אחסון במכשיר",
|
|
||||||
"full_path": "נתיב מלא: {path}",
|
"full_path": "נתיב מלא: {path}",
|
||||||
"gcast_enabled": "Google Cast",
|
"gcast_enabled": "Google Cast",
|
||||||
"gcast_enabled_description": "תכונה זאת טוענת משאבים חיצוניים מגוגל בכדי לפעול.",
|
"gcast_enabled_description": "תכונה זאת טוענת משאבים חיצוניים מגוגל בכדי לפעול.",
|
||||||
"general": "כללי",
|
"general": "כללי",
|
||||||
"geolocation_instruction_location": "לחץ על פריט עם קואורדינטות GPS כדי להשתמש במיקומו, או בחר מיקום ישירות מהמפה",
|
"geolocation_instruction_location": "לחץ על פריט עם קואורדינטות GPS כדי להשתמש במיקומו, או בחר מיקום ישירות מהמפה",
|
||||||
"get_help": "קבל עזרה",
|
"get_help": "קבל עזרה",
|
||||||
"get_people_error": "שגיאה בקבלת אנשים",
|
|
||||||
"get_wifiname_error": "לא היה ניתן לקבל את שם האינטרנט האלחוטי שלך. יש לודא שהענקת את ההרשאות הדרושות ושאת/ה מחובר/ת לרשת אינטרנט אלחוטי",
|
"get_wifiname_error": "לא היה ניתן לקבל את שם האינטרנט האלחוטי שלך. יש לודא שהענקת את ההרשאות הדרושות ושאת/ה מחובר/ת לרשת אינטרנט אלחוטי",
|
||||||
"getting_started": "תחילת העבודה",
|
"getting_started": "תחילת העבודה",
|
||||||
"go_back": "חזור",
|
"go_back": "חזור",
|
||||||
@@ -1270,7 +1181,6 @@
|
|||||||
"hide_named_person": "הסתר אדם {name}",
|
"hide_named_person": "הסתר אדם {name}",
|
||||||
"hide_password": "הסתר סיסמה",
|
"hide_password": "הסתר סיסמה",
|
||||||
"hide_person": "הסתר אדם",
|
"hide_person": "הסתר אדם",
|
||||||
"hide_schema": "הסתר את הסכימה",
|
|
||||||
"hide_text_recognition": "הסתרת זיהוי טקסט",
|
"hide_text_recognition": "הסתרת זיהוי טקסט",
|
||||||
"hide_unnamed_people": "הסתר אנשים ללא שם",
|
"hide_unnamed_people": "הסתר אנשים ללא שם",
|
||||||
"home_page_add_to_album_conflicts": "{added} תמונות נוספו לאלבום {album}. {failed} תמונות כבר נמצאות באלבום.",
|
"home_page_add_to_album_conflicts": "{added} תמונות נוספו לאלבום {album}. {failed} תמונות כבר נמצאות באלבום.",
|
||||||
@@ -1343,18 +1253,9 @@
|
|||||||
"ios_debug_info_processing_ran_at": "העיבוד התבצע ב־{dateTime}",
|
"ios_debug_info_processing_ran_at": "העיבוד התבצע ב־{dateTime}",
|
||||||
"items_count": "{count, plural, one {פריט #} other {# פריטים}}",
|
"items_count": "{count, plural, one {פריט #} other {# פריטים}}",
|
||||||
"jobs": "משימות",
|
"jobs": "משימות",
|
||||||
"json_editor": "עורך JSON",
|
|
||||||
"json_error": "שגיאת JSON",
|
|
||||||
"keep": "שמור",
|
"keep": "שמור",
|
||||||
"keep_albums": "שמור אלבומים",
|
|
||||||
"keep_albums_count": "השארת {count, plural, one {אלבום אחד} other {{count} אלבומים}}",
|
|
||||||
"keep_all": "שמור הכל",
|
"keep_all": "שמור הכל",
|
||||||
"keep_description": "בחר מה נשאר במכשיר שלך כשאתה מפנה מקום.",
|
|
||||||
"keep_favorites": "שמור מועדפים",
|
|
||||||
"keep_on_device": "שמור במכשיר",
|
|
||||||
"keep_on_device_hint": "בחר פריטים לשמירה במכשיר זה",
|
|
||||||
"keep_this_delete_others": "שמור על זה, מחק אחרים",
|
"keep_this_delete_others": "שמור על זה, מחק אחרים",
|
||||||
"keeping": "שומר: {items}",
|
|
||||||
"kept_this_deleted_others": "תמונה זו נשמרה ונמחקו {count, plural, one {תמונה #} other {# תמונות}}",
|
"kept_this_deleted_others": "תמונה זו נשמרה ונמחקו {count, plural, one {תמונה #} other {# תמונות}}",
|
||||||
"keyboard_shortcuts": "קיצורי מקלדת",
|
"keyboard_shortcuts": "קיצורי מקלדת",
|
||||||
"language": "שפה",
|
"language": "שפה",
|
||||||
@@ -1448,28 +1349,10 @@
|
|||||||
"loop_videos_description": "אפשר הפעלה חוזרת אוטומטית של סרטון במציג הפרטים.",
|
"loop_videos_description": "אפשר הפעלה חוזרת אוטומטית של סרטון במציג הפרטים.",
|
||||||
"main_branch_warning": "הגרסה המותקנת היא גרסת פיתוח; אנחנו ממליצים בחום להשתמש בגרסה יציבה!",
|
"main_branch_warning": "הגרסה המותקנת היא גרסת פיתוח; אנחנו ממליצים בחום להשתמש בגרסה יציבה!",
|
||||||
"main_menu": "תפריט ראשי",
|
"main_menu": "תפריט ראשי",
|
||||||
"maintenance_action_restore": "שחזור מסד נתונים",
|
|
||||||
"maintenance_description": "Immich הועבר למצב <link>תחזוקה</link>.",
|
"maintenance_description": "Immich הועבר למצב <link>תחזוקה</link>.",
|
||||||
"maintenance_end": "סיום מצב תחזוקה",
|
"maintenance_end": "סיום מצב תחזוקה",
|
||||||
"maintenance_end_error": "כשל בסיום מצב תחזוקה.",
|
"maintenance_end_error": "כשל בסיום מצב תחזוקה.",
|
||||||
"maintenance_logged_in_as": "מחובר כרגע בתור {user}",
|
"maintenance_logged_in_as": "מחובר כרגע בתור {user}",
|
||||||
"maintenance_restore_from_backup": "שחזור מגיבוי",
|
|
||||||
"maintenance_restore_library": "שחזר את הספרייה שלך",
|
|
||||||
"maintenance_restore_library_confirm": "אם זה נראה נכון, המשך לשחזר גיבוי!",
|
|
||||||
"maintenance_restore_library_description": "משחזר את מסד הנתונים",
|
|
||||||
"maintenance_restore_library_folder_has_files": "ל-{folder} יש {count} תיקיות",
|
|
||||||
"maintenance_restore_library_folder_no_files": "ל־{folder} חסרים קבצים!",
|
|
||||||
"maintenance_restore_library_folder_pass": "ניתנת לקריאה וכתיבה",
|
|
||||||
"maintenance_restore_library_folder_read_fail": "אינה ניתנת לקריאה",
|
|
||||||
"maintenance_restore_library_folder_write_fail": "אינה ניתנת לכתיבה",
|
|
||||||
"maintenance_restore_library_hint_missing_files": "ייתכן שחסרים לך קבצים חשובים",
|
|
||||||
"maintenance_restore_library_hint_regenerate_later": "ניתן לייצר מחדש את אלה מאוחר יותר בהגדרות",
|
|
||||||
"maintenance_restore_library_hint_storage_template_missing_files": "משתמש/ת בתבנית אחסון? ייתכן שחסרים לך קבצים",
|
|
||||||
"maintenance_restore_library_loading": "בתהליך טעינת בדיקות שלמות והיוריסטיקות…",
|
|
||||||
"maintenance_task_backup": "יצירת גיבוי של מסד הנתונים הנוכחי…",
|
|
||||||
"maintenance_task_migrations": "בתהליך הרצת הגירות של מסד נתונים…",
|
|
||||||
"maintenance_task_restore": "בתהליך שחזור של הגיבוי שנבחר…",
|
|
||||||
"maintenance_task_rollback": "השחזור כשל, בתהליך גלגול חזרה לנקודת שחזור…",
|
|
||||||
"maintenance_title": "לא זמין באופן זמני",
|
"maintenance_title": "לא זמין באופן זמני",
|
||||||
"make": "תוצרת",
|
"make": "תוצרת",
|
||||||
"manage_geolocation": "נהל מיקום",
|
"manage_geolocation": "נהל מיקום",
|
||||||
@@ -1531,8 +1414,6 @@
|
|||||||
"minimize": "מזער",
|
"minimize": "מזער",
|
||||||
"minute": "דקה",
|
"minute": "דקה",
|
||||||
"minutes": "דקות",
|
"minutes": "דקות",
|
||||||
"mirror_horizontal": "אופקי",
|
|
||||||
"mirror_vertical": "אנכי",
|
|
||||||
"missing": "חסרים",
|
"missing": "חסרים",
|
||||||
"mobile_app": "אפליקציה לטלפון",
|
"mobile_app": "אפליקציה לטלפון",
|
||||||
"mobile_app_download_onboarding_note": "הורד את האפליקציה המלווה באחת מהאפשרויות הבאות",
|
"mobile_app_download_onboarding_note": "הורד את האפליקציה המלווה באחת מהאפשרויות הבאות",
|
||||||
@@ -1541,14 +1422,11 @@
|
|||||||
"monthly_title_text_date_format": "MMMM y",
|
"monthly_title_text_date_format": "MMMM y",
|
||||||
"more": "עוד",
|
"more": "עוד",
|
||||||
"move": "העבר",
|
"move": "העבר",
|
||||||
"move_down": "הזזה למטה",
|
|
||||||
"move_off_locked_folder": "הוצאה מהתיקייה הנעולה",
|
"move_off_locked_folder": "הוצאה מהתיקייה הנעולה",
|
||||||
"move_to": "העבר ל",
|
"move_to": "העבר ל",
|
||||||
"move_to_device_trash": "העברה לפח האשפה של המכשיר",
|
|
||||||
"move_to_lock_folder_action_prompt": "{count} נוספו לתיקייה הנעולה",
|
"move_to_lock_folder_action_prompt": "{count} נוספו לתיקייה הנעולה",
|
||||||
"move_to_locked_folder": "העבר לתיקיה הנעולה",
|
"move_to_locked_folder": "העבר לתיקיה הנעולה",
|
||||||
"move_to_locked_folder_confirmation": "התמונות והסרטונים האלו יוסרו מכל האלבומים, ויהיו מוצגים רק בתיקיה הנעולה",
|
"move_to_locked_folder_confirmation": "התמונות והסרטונים האלו יוסרו מכל האלבומים, ויהיו מוצגים רק בתיקיה הנעולה",
|
||||||
"move_up": "הזזה למעלה",
|
|
||||||
"moved_to_archive": "{count, plural, one {הועברה תמונה # } other {# תמונות הועברו}} לארכיון",
|
"moved_to_archive": "{count, plural, one {הועברה תמונה # } other {# תמונות הועברו}} לארכיון",
|
||||||
"moved_to_library": "{count, plural, one {הועברה תמונה # } other {# תמונות הועברו}} לספריה",
|
"moved_to_library": "{count, plural, one {הועברה תמונה # } other {# תמונות הועברו}} לספריה",
|
||||||
"moved_to_trash": "הועבר לאשפה",
|
"moved_to_trash": "הועבר לאשפה",
|
||||||
@@ -1558,7 +1436,6 @@
|
|||||||
"my_albums": "האלבומים שלי",
|
"my_albums": "האלבומים שלי",
|
||||||
"name": "שם",
|
"name": "שם",
|
||||||
"name_or_nickname": "שם או כינוי",
|
"name_or_nickname": "שם או כינוי",
|
||||||
"name_required": "נדרש שם",
|
|
||||||
"navigate": "נווט",
|
"navigate": "נווט",
|
||||||
"navigate_to_time": "נווט אל זמן",
|
"navigate_to_time": "נווט אל זמן",
|
||||||
"network_requirement_photos_upload": "השתמש בנתונים ניידים לגיבוי תמונות",
|
"network_requirement_photos_upload": "השתמש בנתונים ניידים לגיבוי תמונות",
|
||||||
@@ -1583,24 +1460,20 @@
|
|||||||
"next": "הבא",
|
"next": "הבא",
|
||||||
"next_memory": "הזיכרון הבא",
|
"next_memory": "הזיכרון הבא",
|
||||||
"no": "לא",
|
"no": "לא",
|
||||||
"no_actions_added": "עדיין לא נוספו פעולות",
|
|
||||||
"no_albums_found": "לא נמצאו אלבומים",
|
|
||||||
"no_albums_message": "צור אלבום כדי לארגן את התמונות והסרטונים שלך",
|
"no_albums_message": "צור אלבום כדי לארגן את התמונות והסרטונים שלך",
|
||||||
"no_albums_with_name_yet": "זה נראה שאין לך עדיין אף אלבום עם השם הזה.",
|
"no_albums_with_name_yet": "זה נראה שאין לך עדיין אף אלבום עם השם הזה.",
|
||||||
"no_albums_yet": "זה נראה שאין לך עדיין אלבומים.",
|
"no_albums_yet": "זה נראה שאין לך עדיין אלבומים.",
|
||||||
"no_archived_assets_message": "העבר תמונות וסרטונים לארכיון כדי להסתיר אותם מתצוגת התמונות שלך",
|
"no_archived_assets_message": "העבר תמונות וסרטונים לארכיון כדי להסתיר אותם מתצוגת התמונות שלך",
|
||||||
"no_assets_message": "יש ללחוץ כדי להעלות את התמונה הראשונה שלך",
|
"no_assets_message": "לחץ כדי להעלות את התמונה הראשונה שלך",
|
||||||
"no_assets_to_show": "אין תמונות להצגה",
|
"no_assets_to_show": "אין תמונות להצגה",
|
||||||
"no_cast_devices_found": "לא נמצאו מכשירי שידור",
|
"no_cast_devices_found": "לא נמצאו מכשירי שידור",
|
||||||
"no_checksum_local": "אין Checksum זמין - לא ניתן לאחזר תמונות מקומיות",
|
"no_checksum_local": "אין Checksum זמין - לא ניתן לאחזר תמונות מקומיות",
|
||||||
"no_checksum_remote": "אין Checksum זמין - לא ניתן לאחזר תמונות מהשרת",
|
"no_checksum_remote": "אין Checksum זמין - לא ניתן לאחזר תמונות מהשרת",
|
||||||
"no_configuration_needed": "לא נדרשת תצורה",
|
|
||||||
"no_devices": "אין מכשירים מורשים",
|
"no_devices": "אין מכשירים מורשים",
|
||||||
"no_duplicates_found": "לא נמצאו כפילויות.",
|
"no_duplicates_found": "לא נמצאו כפילויות.",
|
||||||
"no_exif_info_available": "אין מידע זמין על מטא-נתונים (exif)",
|
"no_exif_info_available": "אין מידע זמין על מטא-נתונים (exif)",
|
||||||
"no_explore_results_message": "העלה תמונות נוספות כדי לחקור את האוסף שלך.",
|
"no_explore_results_message": "העלה תמונות נוספות כדי לחקור את האוסף שלך.",
|
||||||
"no_favorites_message": "הוסף מועדפים כדי למצוא במהירות את התמונות והסרטונים הכי טובים שלך",
|
"no_favorites_message": "הוסף מועדפים כדי למצוא במהירות את התמונות והסרטונים הכי טובים שלך",
|
||||||
"no_filters_added": "עדיין לא נוספו מסננים",
|
|
||||||
"no_libraries_message": "צור ספרייה חיצונית כדי לראות את התמונות והסרטונים שלך",
|
"no_libraries_message": "צור ספרייה חיצונית כדי לראות את התמונות והסרטונים שלך",
|
||||||
"no_local_assets_found": "לא נמצאו תמונות עם Checksum זהה",
|
"no_local_assets_found": "לא נמצאו תמונות עם Checksum זהה",
|
||||||
"no_location_set": "לא הוגדר מיקום",
|
"no_location_set": "לא הוגדר מיקום",
|
||||||
@@ -1614,7 +1487,6 @@
|
|||||||
"no_results_description": "נסה להשתמש במילה נרדפת או במילת מפתח יותר כללית",
|
"no_results_description": "נסה להשתמש במילה נרדפת או במילת מפתח יותר כללית",
|
||||||
"no_shared_albums_message": "צור אלבום כדי לשתף תמונות וסרטונים עם אנשים ברשת שלך",
|
"no_shared_albums_message": "צור אלבום כדי לשתף תמונות וסרטונים עם אנשים ברשת שלך",
|
||||||
"no_uploads_in_progress": "אין העלאות בתהליך",
|
"no_uploads_in_progress": "אין העלאות בתהליך",
|
||||||
"none": "אף אחד",
|
|
||||||
"not_allowed": "לא מורשה",
|
"not_allowed": "לא מורשה",
|
||||||
"not_available": "לא רלוונטי",
|
"not_available": "לא רלוונטי",
|
||||||
"not_in_any_album": "לא בשום אלבום",
|
"not_in_any_album": "לא בשום אלבום",
|
||||||
@@ -1648,7 +1520,6 @@
|
|||||||
"online": "מקוון",
|
"online": "מקוון",
|
||||||
"only_favorites": "רק מועדפים",
|
"only_favorites": "רק מועדפים",
|
||||||
"open": "פתח",
|
"open": "פתח",
|
||||||
"open_calendar": "פתיחת לוח שנה",
|
|
||||||
"open_in_map_view": "פתח בתצוגת מפה",
|
"open_in_map_view": "פתח בתצוגת מפה",
|
||||||
"open_in_openstreetmap": "פתח ב-OpenStreetMap",
|
"open_in_openstreetmap": "פתח ב-OpenStreetMap",
|
||||||
"open_the_search_filters": "פתח את מסנני החיפוש",
|
"open_the_search_filters": "פתח את מסנני החיפוש",
|
||||||
@@ -1697,7 +1568,6 @@
|
|||||||
"people": "אנשים",
|
"people": "אנשים",
|
||||||
"people_edits_count": "{count, plural, one {אדם # נערך} other {# אנשים נערכו}}",
|
"people_edits_count": "{count, plural, one {אדם # נערך} other {# אנשים נערכו}}",
|
||||||
"people_feature_description": "עיון בתמונות וסרטונים שקובצו על ידי אנשים",
|
"people_feature_description": "עיון בתמונות וסרטונים שקובצו על ידי אנשים",
|
||||||
"people_selected": "{count, plural, one {אדם אחד נבחר} other {# אנשים נבחרו}}",
|
|
||||||
"people_sidebar_description": "הצג קישור אל אנשים בסרגל הצד",
|
"people_sidebar_description": "הצג קישור אל אנשים בסרגל הצד",
|
||||||
"permanent_deletion_warning": "אזהרת מחיקה לצמיתות",
|
"permanent_deletion_warning": "אזהרת מחיקה לצמיתות",
|
||||||
"permanent_deletion_warning_setting_description": "הצג אזהרה בעת מחיקת תמונות לצמיתות",
|
"permanent_deletion_warning_setting_description": "הצג אזהרה בעת מחיקת תמונות לצמיתות",
|
||||||
@@ -1722,14 +1592,11 @@
|
|||||||
"person_age_years": "בגיל {years, plural, other {# שנים}}",
|
"person_age_years": "בגיל {years, plural, other {# שנים}}",
|
||||||
"person_birthdate": "נולד בתאריך {date}",
|
"person_birthdate": "נולד בתאריך {date}",
|
||||||
"person_hidden": "{name}{hidden, select, true { (מוסתר)} other {}}",
|
"person_hidden": "{name}{hidden, select, true { (מוסתר)} other {}}",
|
||||||
"person_recognized": "זוהה אדם",
|
|
||||||
"person_selected": "נבחר אדם",
|
|
||||||
"photo_shared_all_users": "נראה ששיתפת את התמונות שלך עם כל המשתמשים או שאין לך אף משתמש לשתף איתו.",
|
"photo_shared_all_users": "נראה ששיתפת את התמונות שלך עם כל המשתמשים או שאין לך אף משתמש לשתף איתו.",
|
||||||
"photos": "תמונות",
|
"photos": "תמונות",
|
||||||
"photos_and_videos": "תמונות & סרטונים",
|
"photos_and_videos": "תמונות & סרטונים",
|
||||||
"photos_count": "{count, plural, one {תמונה {count, number}} other {{count, number} תמונות}}",
|
"photos_count": "{count, plural, one {תמונה {count, number}} other {{count, number} תמונות}}",
|
||||||
"photos_from_previous_years": "תמונות משנים קודמות",
|
"photos_from_previous_years": "תמונות משנים קודמות",
|
||||||
"photos_only": "רק תמונות",
|
|
||||||
"pick_a_location": "בחר מיקום",
|
"pick_a_location": "בחר מיקום",
|
||||||
"pick_custom_range": "טווח מותאם אישית",
|
"pick_custom_range": "טווח מותאם אישית",
|
||||||
"pick_date_range": "בחר טווח תאריכים",
|
"pick_date_range": "בחר טווח תאריכים",
|
||||||
@@ -1805,10 +1672,9 @@
|
|||||||
"purchase_settings_server_activated": "מפתח המוצר של השרת מנוהל על ידי מנהל המערכת",
|
"purchase_settings_server_activated": "מפתח המוצר של השרת מנוהל על ידי מנהל המערכת",
|
||||||
"query_asset_id": "שאילתה על מזהה הפריט",
|
"query_asset_id": "שאילתה על מזהה הפריט",
|
||||||
"queue_status": "{count} מתוך {total} עומדים בתור",
|
"queue_status": "{count} מתוך {total} עומדים בתור",
|
||||||
"rate_asset": "דירוג תמונה",
|
|
||||||
"rating": "דירוג כוכב",
|
"rating": "דירוג כוכב",
|
||||||
"rating_clear": "נקה דירוג",
|
"rating_clear": "נקה דירוג",
|
||||||
"rating_count": "{count, plural, =0 {ללא דירוג} one {כוכב אחד} other {# כוכבים}}",
|
"rating_count": "{count, plural, one {כוכב #} other {# כוכבים}}",
|
||||||
"rating_description": "הצג את דירוג ה-EXIF בלוח המידע",
|
"rating_description": "הצג את דירוג ה-EXIF בלוח המידע",
|
||||||
"reaction_options": "אפשרויות הגבה",
|
"reaction_options": "אפשרויות הגבה",
|
||||||
"read_changelog": "קרא את יומן השינויים",
|
"read_changelog": "קרא את יומן השינויים",
|
||||||
@@ -1881,10 +1747,7 @@
|
|||||||
"reset_pin_code_success": "קוד ה-PIN אופס בהצלחה",
|
"reset_pin_code_success": "קוד ה-PIN אופס בהצלחה",
|
||||||
"reset_pin_code_with_password": "באפשרותך תמיד לאפס את קוד ה-PIN שלך עם הסיסמה שלך",
|
"reset_pin_code_with_password": "באפשרותך תמיד לאפס את קוד ה-PIN שלך עם הסיסמה שלך",
|
||||||
"reset_sqlite": "אפס את מסד הנתונים SQLite",
|
"reset_sqlite": "אפס את מסד הנתונים SQLite",
|
||||||
"reset_sqlite_clear_app_data": "ניקוי נתונים",
|
"reset_sqlite_confirmation": "האם אתה בטוח שברצונך לאפס את מסד הנתונים SQLite? יהיה עליך להתנתק ולהתחבר מחדש כדי לסנכרן את הנתונים מחדש",
|
||||||
"reset_sqlite_confirmation": "האם ברצונך לנקות את נתוני היישום? פעולה זו תסיר את כל ההגדרות ותנתק אותך.",
|
|
||||||
"reset_sqlite_confirmation_note": "הערה: יהיה צורך להתחיל מחדש את היישום לאחר הניקוי.",
|
|
||||||
"reset_sqlite_done": "נתונים היישום נוקו. נא להתחיל מחדש את Immich ולהיכנס שוב.",
|
|
||||||
"reset_sqlite_success": "איפוס מסד הנתונים SQLite בוצע בהצלחה",
|
"reset_sqlite_success": "איפוס מסד הנתונים SQLite בוצע בהצלחה",
|
||||||
"reset_to_default": "אפס לברירת מחדל",
|
"reset_to_default": "אפס לברירת מחדל",
|
||||||
"resolution": "רזולוציה",
|
"resolution": "רזולוציה",
|
||||||
@@ -1912,12 +1775,9 @@
|
|||||||
"saved_settings": "הגדרות שמורות",
|
"saved_settings": "הגדרות שמורות",
|
||||||
"say_something": "להגיד משהו",
|
"say_something": "להגיד משהו",
|
||||||
"scaffold_body_error_occurred": "אירעה שגיאה",
|
"scaffold_body_error_occurred": "אירעה שגיאה",
|
||||||
"scaffold_body_error_unrecoverable": "אירעה שגיאה שאי אפשר להתאושש ממנה. נא לשתף את השגיאה ועקבות המחסנית ב־Discord או GitHub כך שנוכל לעזור. אם ניתנה המלצה, ניתן לנקות את נתוני היישום למטה.",
|
|
||||||
"scan": "סריקה",
|
|
||||||
"scan_all_libraries": "סרוק את כל הספריות",
|
"scan_all_libraries": "סרוק את כל הספריות",
|
||||||
"scan_library": "סרוק",
|
"scan_library": "סרוק",
|
||||||
"scan_settings": "הגדרות סריקה",
|
"scan_settings": "הגדרות סריקה",
|
||||||
"scanning": "בתהליך סריקה",
|
|
||||||
"scanning_for_album": "סורק אחר אלבום...",
|
"scanning_for_album": "סורק אחר אלבום...",
|
||||||
"search": "חיפוש",
|
"search": "חיפוש",
|
||||||
"search_albums": "חיפוש אלבומים",
|
"search_albums": "חיפוש אלבומים",
|
||||||
@@ -1947,8 +1807,6 @@
|
|||||||
"search_filter_media_type_title": "בחר סוג מדיה",
|
"search_filter_media_type_title": "בחר סוג מדיה",
|
||||||
"search_filter_ocr": "חיפוש לפי OCR",
|
"search_filter_ocr": "חיפוש לפי OCR",
|
||||||
"search_filter_people_title": "בחר אנשים",
|
"search_filter_people_title": "בחר אנשים",
|
||||||
"search_filter_star_rating": "דירוג כוכבים",
|
|
||||||
"search_filter_tags_title": "בחירת תגים",
|
|
||||||
"search_for": "חיפוש",
|
"search_for": "חיפוש",
|
||||||
"search_for_existing_person": "חיפוש אדם קיים",
|
"search_for_existing_person": "חיפוש אדם קיים",
|
||||||
"search_no_more_result": "אין עוד תוצאות",
|
"search_no_more_result": "אין עוד תוצאות",
|
||||||
@@ -1983,23 +1841,17 @@
|
|||||||
"second": "שנייה",
|
"second": "שנייה",
|
||||||
"see_all_people": "ראה את כל האנשים",
|
"see_all_people": "ראה את כל האנשים",
|
||||||
"select": "בחר",
|
"select": "בחר",
|
||||||
"select_album": "בחירת אלבום",
|
|
||||||
"select_album_cover": "בחר עטיפת אלבום",
|
"select_album_cover": "בחר עטיפת אלבום",
|
||||||
"select_albums": "בחירת אלבומים",
|
|
||||||
"select_all": "בחר הכל",
|
"select_all": "בחר הכל",
|
||||||
"select_all_duplicates": "בחר את כל הכפילויות",
|
"select_all_duplicates": "בחר את כל הכפילויות",
|
||||||
"select_all_in": "בחר הכול בתוך {group}",
|
"select_all_in": "בחר הכול בתוך {group}",
|
||||||
"select_avatar_color": "בחר צבע יצגן",
|
"select_avatar_color": "בחר צבע יצגן",
|
||||||
"select_count": "{count, plural, one {בחירת #} other {בחירת #}}",
|
|
||||||
"select_cutoff_date": "בחירת תאריך חיתוך",
|
|
||||||
"select_face": "בחר פנים",
|
"select_face": "בחר פנים",
|
||||||
"select_featured_photo": "בחר תמונה מייצגת",
|
"select_featured_photo": "בחר תמונה מייצגת",
|
||||||
"select_from_computer": "בחר מהמחשב",
|
"select_from_computer": "בחר מהמחשב",
|
||||||
"select_keep_all": "בחר שמור הכל",
|
"select_keep_all": "בחר שמור הכל",
|
||||||
"select_library_owner": "בחר את הבעלים של הספרייה",
|
"select_library_owner": "בחר את הבעלים של הספרייה",
|
||||||
"select_new_face": "בחר פנים חדשות",
|
"select_new_face": "בחר פנים חדשות",
|
||||||
"select_people": "בחירת אנשים",
|
|
||||||
"select_person": "בחירת אדם",
|
|
||||||
"select_person_to_tag": "בחר אדם לתיוג",
|
"select_person_to_tag": "בחר אדם לתיוג",
|
||||||
"select_photos": "בחר תמונות",
|
"select_photos": "בחר תמונות",
|
||||||
"select_trash_all": "בחר העבר הכל לאשפה",
|
"select_trash_all": "בחר העבר הכל לאשפה",
|
||||||
@@ -2028,9 +1880,6 @@
|
|||||||
"set_profile_picture": "הגדר תמונת פרופיל",
|
"set_profile_picture": "הגדר תמונת פרופיל",
|
||||||
"set_slideshow_to_fullscreen": "הגדר מצגת שקופיות למסך מלא",
|
"set_slideshow_to_fullscreen": "הגדר מצגת שקופיות למסך מלא",
|
||||||
"set_stack_primary_asset": "הגדרה כתמונה ראשית",
|
"set_stack_primary_asset": "הגדרה כתמונה ראשית",
|
||||||
"setting_image_navigation_enable_subtitle": "אם הגדרה זו מופעלת, ניתן לנווט לתמונה הקודמת/הבאה על ידי הקשה על הרבע הימני/השמאלי ביותר של המסך.",
|
|
||||||
"setting_image_navigation_enable_title": "הקשה לניווט",
|
|
||||||
"setting_image_navigation_title": "ניווט תמונה",
|
|
||||||
"setting_image_viewer_help": "מציג הפרטים טוען את התמונה הממוזערת הקטנה קודם, לאחר מכן טוען את התצוגה המקדימה בגודל בינוני (אם מופעל), לבסוף טוען את המקורית (אם מופעל).",
|
"setting_image_viewer_help": "מציג הפרטים טוען את התמונה הממוזערת הקטנה קודם, לאחר מכן טוען את התצוגה המקדימה בגודל בינוני (אם מופעל), לבסוף טוען את המקורית (אם מופעל).",
|
||||||
"setting_image_viewer_original_subtitle": "אפשר לטעון את התמונה המקורית ברזלוציה מלאה (גדולה!). השבת כדי להקטין שימוש בנתונים (גם בשרת וגם בזיכרון המטמון שבמכשיר).",
|
"setting_image_viewer_original_subtitle": "אפשר לטעון את התמונה המקורית ברזלוציה מלאה (גדולה!). השבת כדי להקטין שימוש בנתונים (גם בשרת וגם בזיכרון המטמון שבמכשיר).",
|
||||||
"setting_image_viewer_original_title": "טען תמונה מקורית",
|
"setting_image_viewer_original_title": "טען תמונה מקורית",
|
||||||
@@ -2138,7 +1987,6 @@
|
|||||||
"show_password": "הראה סיסמה",
|
"show_password": "הראה סיסמה",
|
||||||
"show_person_options": "הצג אפשרויות אדם",
|
"show_person_options": "הצג אפשרויות אדם",
|
||||||
"show_progress_bar": "הצג סרגל התקדמות",
|
"show_progress_bar": "הצג סרגל התקדמות",
|
||||||
"show_schema": "הצגת תרשים",
|
|
||||||
"show_search_options": "הצג אפשרויות חיפוש",
|
"show_search_options": "הצג אפשרויות חיפוש",
|
||||||
"show_shared_links": "הצג קישורים משותפים",
|
"show_shared_links": "הצג קישורים משותפים",
|
||||||
"show_slideshow_transition": "הצג מעבר מצגת",
|
"show_slideshow_transition": "הצג מעבר מצגת",
|
||||||
@@ -2156,8 +2004,6 @@
|
|||||||
"skip_to_folders": "דלג לתיקיות",
|
"skip_to_folders": "דלג לתיקיות",
|
||||||
"skip_to_tags": "דלג לתגים",
|
"skip_to_tags": "דלג לתגים",
|
||||||
"slideshow": "מצגת שקופיות",
|
"slideshow": "מצגת שקופיות",
|
||||||
"slideshow_repeat": "חזרה על מצגת",
|
|
||||||
"slideshow_repeat_description": "חזרה להתחלה כאשר המצגת נגמרת",
|
|
||||||
"slideshow_settings": "הגדרות מצגת שקופיות",
|
"slideshow_settings": "הגדרות מצגת שקופיות",
|
||||||
"sort_albums_by": "מיין אלבומים לפי...",
|
"sort_albums_by": "מיין אלבומים לפי...",
|
||||||
"sort_created": "תאריך יצירה",
|
"sort_created": "תאריך יצירה",
|
||||||
@@ -2197,7 +2043,6 @@
|
|||||||
"support": "תמיכה",
|
"support": "תמיכה",
|
||||||
"support_and_feedback": "תמיכה & משוב",
|
"support_and_feedback": "תמיכה & משוב",
|
||||||
"support_third_party_description": "התקנת ה-Immich שלך נארזה על ידי צד שלישי. בעיות שאתה חווה עשויות להיגרם על ידי חבילה זו, אז בבקשה תעלה בעיות איתם ראשית כל באמצעות הקישורים למטה.",
|
"support_third_party_description": "התקנת ה-Immich שלך נארזה על ידי צד שלישי. בעיות שאתה חווה עשויות להיגרם על ידי חבילה זו, אז בבקשה תעלה בעיות איתם ראשית כל באמצעות הקישורים למטה.",
|
||||||
"supporter": "תומך",
|
|
||||||
"swap_merge_direction": "החלף כיוון מיזוג",
|
"swap_merge_direction": "החלף כיוון מיזוג",
|
||||||
"sync": "סנכרן",
|
"sync": "סנכרן",
|
||||||
"sync_albums": "סנכרן אלבומים",
|
"sync_albums": "סנכרן אלבומים",
|
||||||
@@ -2235,7 +2080,6 @@
|
|||||||
"theme_setting_theme_subtitle": "בחר את הגדרת ערכת הנושא של היישום",
|
"theme_setting_theme_subtitle": "בחר את הגדרת ערכת הנושא של היישום",
|
||||||
"theme_setting_three_stage_loading_subtitle": "טעינה בשלושה שלבים עשויה לשפר את ביצועי הטעינה אבל גורמת באופן משמעותי לעומס רשת גבוה יותר",
|
"theme_setting_three_stage_loading_subtitle": "טעינה בשלושה שלבים עשויה לשפר את ביצועי הטעינה אבל גורמת באופן משמעותי לעומס רשת גבוה יותר",
|
||||||
"theme_setting_three_stage_loading_title": "אפשר טעינה בשלושה שלבים",
|
"theme_setting_three_stage_loading_title": "אפשר טעינה בשלושה שלבים",
|
||||||
"then": "אז",
|
|
||||||
"they_will_be_merged_together": "הם יתמזגו יחד",
|
"they_will_be_merged_together": "הם יתמזגו יחד",
|
||||||
"third_party_resources": "משאבי צד שלישי",
|
"third_party_resources": "משאבי צד שלישי",
|
||||||
"time": "זמן",
|
"time": "זמן",
|
||||||
@@ -2270,13 +2114,6 @@
|
|||||||
"trash_page_select_assets_btn": "בחר תמונות",
|
"trash_page_select_assets_btn": "בחר תמונות",
|
||||||
"trash_page_title": "אשפה ({count})",
|
"trash_page_title": "אשפה ({count})",
|
||||||
"trashed_items_will_be_permanently_deleted_after": "פריטים באשפה ימחקו לצמיתות לאחר {days, plural, one {יום #} other {# ימים}}.",
|
"trashed_items_will_be_permanently_deleted_after": "פריטים באשפה ימחקו לצמיתות לאחר {days, plural, one {יום #} other {# ימים}}.",
|
||||||
"trigger": "טריגר",
|
|
||||||
"trigger_asset_uploaded": "נכס הועלה",
|
|
||||||
"trigger_asset_uploaded_description": "מתעורר כאשר נכס חדש הועלה",
|
|
||||||
"trigger_description": "אירוע שמתחיל את זרימת העבודה",
|
|
||||||
"trigger_person_recognized": "זוהה אדם",
|
|
||||||
"trigger_person_recognized_description": "מתעורר כאשר זוהה אדם",
|
|
||||||
"trigger_type": "סוג הטריגר",
|
|
||||||
"troubleshoot": "פתור בעיות",
|
"troubleshoot": "פתור בעיות",
|
||||||
"type": "סוג",
|
"type": "סוג",
|
||||||
"unable_to_change_pin_code": "לא ניתן לשנות את קוד ה PIN",
|
"unable_to_change_pin_code": "לא ניתן לשנות את קוד ה PIN",
|
||||||
@@ -2291,7 +2128,6 @@
|
|||||||
"unhide_person": "בטל הסתרת אדם",
|
"unhide_person": "בטל הסתרת אדם",
|
||||||
"unknown": "לא ידוע",
|
"unknown": "לא ידוע",
|
||||||
"unknown_country": "מדינה לא ידועה",
|
"unknown_country": "מדינה לא ידועה",
|
||||||
"unknown_date": "תאריך לא ידוע",
|
|
||||||
"unknown_year": "שנה לא ידועה",
|
"unknown_year": "שנה לא ידועה",
|
||||||
"unlimited": "בלתי מוגבל",
|
"unlimited": "בלתי מוגבל",
|
||||||
"unlink_motion_video": "בטל קישור סרטון תנועה",
|
"unlink_motion_video": "בטל קישור סרטון תנועה",
|
||||||
@@ -2308,10 +2144,7 @@
|
|||||||
"unstack": "בטל ערימה",
|
"unstack": "בטל ערימה",
|
||||||
"unstack_action_prompt": "{count} הופרדו",
|
"unstack_action_prompt": "{count} הופרדו",
|
||||||
"unstacked_assets_count": "{count, plural, one {תמונה # הוסרה} other {# תמונות הוסרו}} מהערימה",
|
"unstacked_assets_count": "{count, plural, one {תמונה # הוסרה} other {# תמונות הוסרו}} מהערימה",
|
||||||
"unsupported_field_type": "סוג שדה לא ידוע",
|
|
||||||
"unsupported_file_type": "הקובץ {file} אינו ניתן להעלאה בגלל שסוג הקובץ שלו {type} אינו נתמך.",
|
|
||||||
"untagged": "לא מתיוגים",
|
"untagged": "לא מתיוגים",
|
||||||
"untitled_workflow": "זרימת עבודה ללא כותרת",
|
|
||||||
"up_next": "הבא בתור",
|
"up_next": "הבא בתור",
|
||||||
"update_location_action_prompt": "עדכן את המיקום של {count} פריטים שנבחרו עם:",
|
"update_location_action_prompt": "עדכן את המיקום של {count} פריטים שנבחרו עם:",
|
||||||
"updated_at": "עודכן",
|
"updated_at": "עודכן",
|
||||||
@@ -2321,7 +2154,6 @@
|
|||||||
"upload_details": "פרטי העלאה",
|
"upload_details": "פרטי העלאה",
|
||||||
"upload_dialog_info": "האם ברצונך לגבות את התמונות שנבחרו לשרת?",
|
"upload_dialog_info": "האם ברצונך לגבות את התמונות שנבחרו לשרת?",
|
||||||
"upload_dialog_title": "העלאת תמונה",
|
"upload_dialog_title": "העלאת תמונה",
|
||||||
"upload_error_with_count": "שגיאת העלאה עבור {count, plural, one {נכס אחד} other {# נכסים}}",
|
|
||||||
"upload_errors": "העלאה הושלמה עם {count, plural, one {שגיאה #} other {# שגיאות}}, רענן את הדף כדי לראות תמונות שהועלו.",
|
"upload_errors": "העלאה הושלמה עם {count, plural, one {שגיאה #} other {# שגיאות}}, רענן את הדף כדי לראות תמונות שהועלו.",
|
||||||
"upload_finished": "העלאה הסתיימה",
|
"upload_finished": "העלאה הסתיימה",
|
||||||
"upload_progress": "נותרו {remaining, number} - טופלו {processed, number}/{total, number}",
|
"upload_progress": "נותרו {remaining, number} - טופלו {processed, number}/{total, number}",
|
||||||
@@ -2336,9 +2168,7 @@
|
|||||||
"url": "URL",
|
"url": "URL",
|
||||||
"usage": "שימוש",
|
"usage": "שימוש",
|
||||||
"use_biometric": "השתמש באימות ביומטרי",
|
"use_biometric": "השתמש באימות ביומטרי",
|
||||||
"use_browser_locale": "שימוש באזור השפה של הדפדפן",
|
"use_current_connection": "השתמש בחיבור נוכחי",
|
||||||
"use_browser_locale_description": "עיצוב תאריכים, זמנים, ומספרים בהתבסס על אזור השפה של הדפדפן שלך",
|
|
||||||
"use_current_connection": "שימוש בחיבור הנוכחי",
|
|
||||||
"use_custom_date_range": "השתמש בטווח תאריכים מותאם במקום",
|
"use_custom_date_range": "השתמש בטווח תאריכים מותאם במקום",
|
||||||
"user": "משתמש",
|
"user": "משתמש",
|
||||||
"user_has_been_deleted": "משתמש זה נמחק.",
|
"user_has_been_deleted": "משתמש זה נמחק.",
|
||||||
@@ -2359,7 +2189,6 @@
|
|||||||
"utilities": "כלים",
|
"utilities": "כלים",
|
||||||
"validate": "לאמת",
|
"validate": "לאמת",
|
||||||
"validate_endpoint_error": "נא להזין כתובת URL תקנית",
|
"validate_endpoint_error": "נא להזין כתובת URL תקנית",
|
||||||
"validation_error": "שגיאת תיקוף",
|
|
||||||
"variables": "משתנים",
|
"variables": "משתנים",
|
||||||
"version": "גרסה",
|
"version": "גרסה",
|
||||||
"version_announcement_closing": "החבר שלך, אלכס",
|
"version_announcement_closing": "החבר שלך, אלכס",
|
||||||
@@ -2371,7 +2200,6 @@
|
|||||||
"video_hover_setting_description": "הפעל תצוגת סרטון מקדימה כאשר העכבר מרחף מעל פריט. אפילו כשהגדרה זו מושבתת, ניתן להתחיל את הניגון על ידי ריחוף מעל סמל ההפעלה.",
|
"video_hover_setting_description": "הפעל תצוגת סרטון מקדימה כאשר העכבר מרחף מעל פריט. אפילו כשהגדרה זו מושבתת, ניתן להתחיל את הניגון על ידי ריחוף מעל סמל ההפעלה.",
|
||||||
"videos": "סרטונים",
|
"videos": "סרטונים",
|
||||||
"videos_count": "{count, plural, one {סרטון #} other {# סרטונים}}",
|
"videos_count": "{count, plural, one {סרטון #} other {# סרטונים}}",
|
||||||
"videos_only": "רק סרטונים",
|
|
||||||
"view": "הצג",
|
"view": "הצג",
|
||||||
"view_album": "הצג אלבום",
|
"view_album": "הצג אלבום",
|
||||||
"view_all": "הצג הכל",
|
"view_all": "הצג הכל",
|
||||||
@@ -2392,8 +2220,6 @@
|
|||||||
"viewer_stack_use_as_main_asset": "השתמש כתמונה ראשית",
|
"viewer_stack_use_as_main_asset": "השתמש כתמונה ראשית",
|
||||||
"viewer_unstack": "ביטול ערימה",
|
"viewer_unstack": "ביטול ערימה",
|
||||||
"visibility_changed": "הנראות השתנתה עבור {count, plural, one {אדם #} other {# אנשים}}",
|
"visibility_changed": "הנראות השתנתה עבור {count, plural, one {אדם #} other {# אנשים}}",
|
||||||
"visual": "חזותי",
|
|
||||||
"visual_builder": "בונה חזותי",
|
|
||||||
"waiting": "ממתין",
|
"waiting": "ממתין",
|
||||||
"waiting_count": "ממתין: {count}",
|
"waiting_count": "ממתין: {count}",
|
||||||
"warning": "אזהרה",
|
"warning": "אזהרה",
|
||||||
@@ -2402,26 +2228,12 @@
|
|||||||
"welcome_to_immich": "ברוכים הבאים אל immich",
|
"welcome_to_immich": "ברוכים הבאים אל immich",
|
||||||
"width": "רוחב",
|
"width": "רוחב",
|
||||||
"wifi_name": "שם הרשת האלחוטית",
|
"wifi_name": "שם הרשת האלחוטית",
|
||||||
"workflow_delete_prompt": "האם ברצונך למחוק את זרימת העבודה הזו?",
|
|
||||||
"workflow_deleted": "זרימת העבודה נמחקה",
|
|
||||||
"workflow_description": "תיאור זרימת העבודה",
|
|
||||||
"workflow_info": "מידע על זרימת העבודה",
|
|
||||||
"workflow_json": "JSON של זרימת העבודה",
|
|
||||||
"workflow_json_help": "עריכת תצורת זרימת העבודה בפורמט JSON. השינויים יסתנכרנו עם הבונה החזותי.",
|
|
||||||
"workflow_name": "שם זרימת העבודה",
|
|
||||||
"workflow_navigation_prompt": "האם ברצונך לעזוב מבלי לשמור את השינויים שלך?",
|
|
||||||
"workflow_summary": "סיכום זרימת העבודה",
|
|
||||||
"workflow_update_success": "זרימת העבודה עודכנה בהצלחה",
|
|
||||||
"workflow_updated": "זרימת העבודה עודכנה",
|
|
||||||
"workflows": "זרימות עבודה",
|
|
||||||
"workflows_help_text": "זרימות עבודה מאטמטות פעולות על הנכסים שלך בהתבסס על טריגרים ומסננים",
|
|
||||||
"wrong_pin_code": "קוד PIN שגוי",
|
"wrong_pin_code": "קוד PIN שגוי",
|
||||||
"year": "שנה",
|
"year": "שנה",
|
||||||
"years_ago": "לפני {years, plural, one {שנה #} other {# שנים}}",
|
"years_ago": "לפני {years, plural, one {שנה #} other {# שנים}}",
|
||||||
"yes": "כן",
|
"yes": "כן",
|
||||||
"you_dont_have_any_shared_links": "אין לך קישורים משותפים",
|
"you_dont_have_any_shared_links": "אין לך קישורים משותפים",
|
||||||
"your_wifi_name": "שם אינטרנט אלחוטי שלך",
|
"your_wifi_name": "שם אינטרנט אלחוטי שלך",
|
||||||
"zero_to_clear_rating": "יש ללחוץ על 0 כדי לנקות את דירוג התמונה",
|
|
||||||
"zoom_image": "זום לתמונה",
|
"zoom_image": "זום לתמונה",
|
||||||
"zoom_to_bounds": "התמקד באזור"
|
"zoom_to_bounds": "התמקד באזור"
|
||||||
}
|
}
|
||||||
|
|||||||
+20
-158
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "नौकरी खोजें…",
|
"search_jobs": "नौकरी खोजें…",
|
||||||
"send_welcome_email": "स्वागत ईमेल भेजें",
|
"send_welcome_email": "स्वागत ईमेल भेजें",
|
||||||
"server_external_domain_settings": "बाहरी डोमेन",
|
"server_external_domain_settings": "बाहरी डोमेन",
|
||||||
"server_external_domain_settings_description": "बाहरी लिंक के लिए डोमेन",
|
"server_external_domain_settings_description": "सार्वजनिक साझा लिंक के लिए डोमेन, जिसमें http(s):// शामिल है",
|
||||||
"server_public_users": "सार्वजनिक उपयोगकर्ता",
|
"server_public_users": "सार्वजनिक उपयोगकर्ता",
|
||||||
"server_public_users_description": "साझा एल्बम में उपयोगकर्ता जोड़ते समय सभी उपयोगकर्ताओं (नाम और ईमेल) की सूची दिखाई जाती है। यदि यह विकल्प अक्षम किया गया है, तो उपयोगकर्ता सूची केवल व्यवस्थापक (एडमिन) उपयोगकर्ताओं के लिए उपलब्ध होगी।",
|
"server_public_users_description": "साझा एल्बम में उपयोगकर्ता जोड़ते समय सभी उपयोगकर्ताओं (नाम और ईमेल) की सूची दिखाई जाती है। यदि यह विकल्प अक्षम किया गया है, तो उपयोगकर्ता सूची केवल व्यवस्थापक (एडमिन) उपयोगकर्ताओं के लिए उपलब्ध होगी।",
|
||||||
"server_settings": "सर्वर सेटिंग्स",
|
"server_settings": "सर्वर सेटिंग्स",
|
||||||
@@ -472,7 +472,7 @@
|
|||||||
"advanced_settings_troubleshooting_title": "समस्या निवारण",
|
"advanced_settings_troubleshooting_title": "समस्या निवारण",
|
||||||
"age_months": "आयु {months, plural, one {# month} other {# months}}",
|
"age_months": "आयु {months, plural, one {# month} other {# months}}",
|
||||||
"age_year_months": "आयु 1 वर्ष, {months, plural, one {# month} other {# months}}",
|
"age_year_months": "आयु 1 वर्ष, {months, plural, one {# month} other {# months}}",
|
||||||
"age_years": "{years, plural, other {आयु # वर्ष}}",
|
"age_years": "{years, plural, other {Age #}}",
|
||||||
"album": "एल्बम",
|
"album": "एल्बम",
|
||||||
"album_added": "एल्बम डाला गया",
|
"album_added": "एल्बम डाला गया",
|
||||||
"album_added_notification_setting_description": "जब आपको किसी साझा एल्बम में जोड़ा जाए तो एक ईमेल सूचना प्राप्त करें",
|
"album_added_notification_setting_description": "जब आपको किसी साझा एल्बम में जोड़ा जाए तो एक ईमेल सूचना प्राप्त करें",
|
||||||
@@ -595,7 +595,7 @@
|
|||||||
"assets_count": "{count, plural, one {# आइटम} other {# आइटम्स}}",
|
"assets_count": "{count, plural, one {# आइटम} other {# आइटम्स}}",
|
||||||
"assets_deleted_permanently": "{count} संपत्ति(याँ) स्थायी रूप से हटा दी गईं",
|
"assets_deleted_permanently": "{count} संपत्ति(याँ) स्थायी रूप से हटा दी गईं",
|
||||||
"assets_deleted_permanently_from_server": "{count} संपत्ति(याँ) इमिच सर्वर से स्थायी रूप से हटा दी गईं",
|
"assets_deleted_permanently_from_server": "{count} संपत्ति(याँ) इमिच सर्वर से स्थायी रूप से हटा दी गईं",
|
||||||
"assets_downloaded_failed": "{count, plural, one {# फ़ाइल डाउनलोड हुई - {error} फ़ाइल डाउनलोड नहीं हो सकी} other {# फ़ाइलें डाउनलोड हुईं - {error} फ़ाइलें डाउनलोड नहीं हो सकीं}}",
|
"assets_downloaded_failed": "{count, plural, one {Downloaded # file - {error} file failed} other {Downloaded # files - {error} files failed}}",
|
||||||
"assets_downloaded_successfully": "{count, plural, one {# फ़ाइल सफलतापूर्वक डाउनलोड की गई} other {# फ़ाइलें सफलतापूर्वक डाउनलोड की गईं}}",
|
"assets_downloaded_successfully": "{count, plural, one {# फ़ाइल सफलतापूर्वक डाउनलोड की गई} other {# फ़ाइलें सफलतापूर्वक डाउनलोड की गईं}}",
|
||||||
"assets_moved_to_trash_count": "{count, plural, one {# asset} other {# assets}} को ट्रैश में ले जाया गया",
|
"assets_moved_to_trash_count": "{count, plural, one {# asset} other {# assets}} को ट्रैश में ले जाया गया",
|
||||||
"assets_permanently_deleted_count": "स्थायी रूप से हटा दिया गया {count, plural, one {# asset} other {# assets}}",
|
"assets_permanently_deleted_count": "स्थायी रूप से हटा दिया गया {count, plural, one {# asset} other {# assets}}",
|
||||||
@@ -788,17 +788,12 @@
|
|||||||
"client_cert_subtitle": "केवल PKCS12 (.p12, .pfx) प्रारूप का समर्थन करता है। प्रमाणपत्र आयात/निकालना केवल लॉगिन से पहले ही उपलब्ध है",
|
"client_cert_subtitle": "केवल PKCS12 (.p12, .pfx) प्रारूप का समर्थन करता है। प्रमाणपत्र आयात/निकालना केवल लॉगिन से पहले ही उपलब्ध है",
|
||||||
"client_cert_title": "SSL क्लाइंट प्रमाणपत्र [प्रायोगिक]",
|
"client_cert_title": "SSL क्लाइंट प्रमाणपत्र [प्रायोगिक]",
|
||||||
"clockwise": "दक्षिणावर्त",
|
"clockwise": "दक्षिणावर्त",
|
||||||
"close": "बंद",
|
"close": "बंद करें",
|
||||||
"collapse": "गिर जाना",
|
"collapse": "गिर जाना",
|
||||||
"collapse_all": "सभी को संकुचित करें",
|
"collapse_all": "सभी को संकुचित करें",
|
||||||
"color": "रंग",
|
"color": "रंग",
|
||||||
"color_theme": "रंग थीम",
|
"color_theme": "रंग थीम",
|
||||||
"command": "आदेश",
|
"command": "आदेश",
|
||||||
"command_palette_prompt": "जल्दी से पेज, कार्य या कमांड ढूंढें",
|
|
||||||
"command_palette_to_close": "बंद करें",
|
|
||||||
"command_palette_to_navigate": "दर्ज करें",
|
|
||||||
"command_palette_to_select": "चुनें",
|
|
||||||
"command_palette_to_show_all": "सभी दिखाएँ",
|
|
||||||
"comment_deleted": "टिप्पणी हटा दी गई",
|
"comment_deleted": "टिप्पणी हटा दी गई",
|
||||||
"comment_options": "टिप्पणी विकल्प",
|
"comment_options": "टिप्पणी विकल्प",
|
||||||
"comments_and_likes": "टिप्पणियाँ और पसंद",
|
"comments_and_likes": "टिप्पणियाँ और पसंद",
|
||||||
@@ -863,7 +858,6 @@
|
|||||||
"created_at": "बनाया था",
|
"created_at": "बनाया था",
|
||||||
"creating_linked_albums": "जुड़े हुए एल्बम बनाए जा रहे हैं..।",
|
"creating_linked_albums": "जुड़े हुए एल्बम बनाए जा रहे हैं..।",
|
||||||
"crop": "छाँटें",
|
"crop": "छाँटें",
|
||||||
"crop_aspect_ratio_fixed": "निश्चित",
|
|
||||||
"crop_aspect_ratio_free": "स्वतंत्र",
|
"crop_aspect_ratio_free": "स्वतंत्र",
|
||||||
"crop_aspect_ratio_original": "मूल अनुपात",
|
"crop_aspect_ratio_original": "मूल अनुपात",
|
||||||
"curated_object_page_title": "चीज़ें",
|
"curated_object_page_title": "चीज़ें",
|
||||||
@@ -874,9 +868,6 @@
|
|||||||
"custom_locale": "कस्टम लोकेल",
|
"custom_locale": "कस्टम लोकेल",
|
||||||
"custom_locale_description": "भाषा और क्षेत्र के आधार पर दिनांक और संख्याएँ प्रारूपित करें",
|
"custom_locale_description": "भाषा और क्षेत्र के आधार पर दिनांक और संख्याएँ प्रारूपित करें",
|
||||||
"custom_url": "कस्टम URL",
|
"custom_url": "कस्टम URL",
|
||||||
"cutoff_date_description": "पिछले कितने फ़ोटो रखें…",
|
|
||||||
"cutoff_day": "{count, plural, one {दिन} other {दिन}}",
|
|
||||||
"cutoff_year": "{count, plural, one {वर्ष} other {वर्ष}}",
|
|
||||||
"daily_title_text_date": "ई, एमएमएम डीडी",
|
"daily_title_text_date": "ई, एमएमएम डीडी",
|
||||||
"daily_title_text_date_year": "ई, एमएमएम दिन, वर्ष",
|
"daily_title_text_date_year": "ई, एमएमएम दिन, वर्ष",
|
||||||
"dark": "डार्क",
|
"dark": "डार्क",
|
||||||
@@ -895,6 +886,8 @@
|
|||||||
"deduplication_criteria_2": "EXIF डेटा की संख्या",
|
"deduplication_criteria_2": "EXIF डेटा की संख्या",
|
||||||
"deduplication_info": "डुप्लीकेशन हटाने की जानकारी",
|
"deduplication_info": "डुप्लीकेशन हटाने की जानकारी",
|
||||||
"deduplication_info_description": "परिसंपत्तियों का स्वचालित रूप से पूर्व-चयन करने और डुप्लिकेट को थोक में हटाने के लिए, हम निम्न पर ध्यान देते हैं:",
|
"deduplication_info_description": "परिसंपत्तियों का स्वचालित रूप से पूर्व-चयन करने और डुप्लिकेट को थोक में हटाने के लिए, हम निम्न पर ध्यान देते हैं:",
|
||||||
|
"default_locale": "डिफ़ॉल्ट स्थान",
|
||||||
|
"default_locale_description": "अपने ब्राउज़र स्थान के आधार पर दिनांक और संख्याएँ प्रारूपित करें",
|
||||||
"delete": "हटाएँ",
|
"delete": "हटाएँ",
|
||||||
"delete_action_confirmation_message": "क्या आप वाकई इस आइटम को हटाना चाहते हैं? यह कार्रवाई आइटम को सर्वर की ट्रैश में ले जाएगी और स्थानीय रूप से हटाने के लिए पुष्टि मांगेगी",
|
"delete_action_confirmation_message": "क्या आप वाकई इस आइटम को हटाना चाहते हैं? यह कार्रवाई आइटम को सर्वर की ट्रैश में ले जाएगी और स्थानीय रूप से हटाने के लिए पुष्टि मांगेगी",
|
||||||
"delete_action_prompt": "{count} हटाए गए",
|
"delete_action_prompt": "{count} हटाए गए",
|
||||||
@@ -930,7 +923,6 @@
|
|||||||
"deselect_all": "सबको अचयनित करो",
|
"deselect_all": "सबको अचयनित करो",
|
||||||
"details": "विवरण",
|
"details": "विवरण",
|
||||||
"direction": "दिशा",
|
"direction": "दिशा",
|
||||||
"disable": "निष्क्रिय करें",
|
|
||||||
"disabled": "अक्षम",
|
"disabled": "अक्षम",
|
||||||
"disallow_edits": "संपादनों की अनुमति न दें",
|
"disallow_edits": "संपादनों की अनुमति न दें",
|
||||||
"discord": "डिसकॉर्ड",
|
"discord": "डिसकॉर्ड",
|
||||||
@@ -956,7 +948,6 @@
|
|||||||
"download_include_embedded_motion_videos": "एम्बेडेड वीडियो",
|
"download_include_embedded_motion_videos": "एम्बेडेड वीडियो",
|
||||||
"download_include_embedded_motion_videos_description": "मोशन फ़ोटो में एम्बेड किए गए वीडियो को एक अलग फ़ाइल के रूप में शामिल करें",
|
"download_include_embedded_motion_videos_description": "मोशन फ़ोटो में एम्बेड किए गए वीडियो को एक अलग फ़ाइल के रूप में शामिल करें",
|
||||||
"download_notfound": "डाउनलोड नहीं मिला",
|
"download_notfound": "डाउनलोड नहीं मिला",
|
||||||
"download_original": "मूल डाउनलोड करें",
|
|
||||||
"download_paused": "डाउनलोड स्थगित",
|
"download_paused": "डाउनलोड स्थगित",
|
||||||
"download_settings": "डाउनलोड करना",
|
"download_settings": "डाउनलोड करना",
|
||||||
"download_settings_description": "संपत्ति डाउनलोड से संबंधित सेटिंग्स प्रबंधित करें",
|
"download_settings_description": "संपत्ति डाउनलोड से संबंधित सेटिंग्स प्रबंधित करें",
|
||||||
@@ -966,7 +957,6 @@
|
|||||||
"download_waiting_to_retry": "पुनः प्रयास करने का इंतजार कर रहा है",
|
"download_waiting_to_retry": "पुनः प्रयास करने का इंतजार कर रहा है",
|
||||||
"downloading": "डाउनलोड",
|
"downloading": "डाउनलोड",
|
||||||
"downloading_asset_filename": "संपत्ति {filename} डाउनलोड हो रही है",
|
"downloading_asset_filename": "संपत्ति {filename} डाउनलोड हो रही है",
|
||||||
"downloading_from_icloud": "iCloud से डाउनलोड हो रहा है",
|
|
||||||
"downloading_media": "मीडिया डाउनलोड हो रहा है",
|
"downloading_media": "मीडिया डाउनलोड हो रहा है",
|
||||||
"drop_files_to_upload": "अपलोड करने के लिए फ़ाइलें कहीं भी छोड़ें",
|
"drop_files_to_upload": "अपलोड करने के लिए फ़ाइलें कहीं भी छोड़ें",
|
||||||
"duplicates": "डुप्लिकेट",
|
"duplicates": "डुप्लिकेट",
|
||||||
@@ -995,22 +985,9 @@
|
|||||||
"edit_tag": "टैग बदलें",
|
"edit_tag": "टैग बदलें",
|
||||||
"edit_title": "शीर्षक संपादित करें",
|
"edit_title": "शीर्षक संपादित करें",
|
||||||
"edit_user": "यूजर को संपादित करो",
|
"edit_user": "यूजर को संपादित करो",
|
||||||
"edit_workflow": "वर्कफ़्लो संपादित करें",
|
|
||||||
"editor": "संपादक",
|
"editor": "संपादक",
|
||||||
"editor_close_without_save_prompt": "परिवर्तन सहेजे नहीं जाएँगे",
|
"editor_close_without_save_prompt": "परिवर्तन सहेजे नहीं जाएँगे",
|
||||||
"editor_close_without_save_title": "संपादक बंद करें?",
|
"editor_close_without_save_title": "संपादक बंद करें?",
|
||||||
"editor_confirm_reset_all_changes": "क्या आप वाकई सभी बदलाव रीसेट करना चाहते हैं?",
|
|
||||||
"editor_discard_edits_confirm": "संपादन त्यागें",
|
|
||||||
"editor_discard_edits_prompt": "आपके पास सहेजे न गए संपादन हैं। क्या आप वाकई उन्हें त्यागना चाहते हैं?",
|
|
||||||
"editor_discard_edits_title": "संपादन त्यागें?",
|
|
||||||
"editor_edits_applied_error": "संपादन लागू करने में विफल",
|
|
||||||
"editor_edits_applied_success": "संपादन सफलतापूर्वक लागू किए गए",
|
|
||||||
"editor_flip_horizontal": "क्षैतिज रूप से पलटें",
|
|
||||||
"editor_flip_vertical": "ऊपर-नीचे पलटें",
|
|
||||||
"editor_orientation": "दिशा सेटिंग",
|
|
||||||
"editor_reset_all_changes": "परिवर्तन रीसेट करें",
|
|
||||||
"editor_rotate_left": "90° बाईं ओर घुमाएँ",
|
|
||||||
"editor_rotate_right": "90° दाईं ओर घुमाएँ",
|
|
||||||
"email": "ईमेल",
|
"email": "ईमेल",
|
||||||
"email_notifications": "ईमेल सूचनाएँ",
|
"email_notifications": "ईमेल सूचनाएँ",
|
||||||
"empty_folder": "यह फ़ोल्डर खाली है",
|
"empty_folder": "यह फ़ोल्डर खाली है",
|
||||||
@@ -1025,18 +1002,15 @@
|
|||||||
"enter_wifi_name": "Wi-Fi का नाम लिखें",
|
"enter_wifi_name": "Wi-Fi का नाम लिखें",
|
||||||
"enter_your_pin_code": "अपना पिन कोड डालें",
|
"enter_your_pin_code": "अपना पिन कोड डालें",
|
||||||
"enter_your_pin_code_subtitle": "लॉक फ़ोल्डर खोलने के लिए पिन कोड डालें",
|
"enter_your_pin_code_subtitle": "लॉक फ़ोल्डर खोलने के लिए पिन कोड डालें",
|
||||||
"error": "समस्या",
|
"error": "गलती",
|
||||||
"error_change_sort_album": "एल्बम का क्रम बदलने में असफल रहा",
|
"error_change_sort_album": "एल्बम का क्रम बदलने में असफल रहा",
|
||||||
"error_delete_face": "एसेट से चेहरे को हटाने में त्रुटि हुई",
|
"error_delete_face": "एसेट से चेहरे को हटाने में त्रुटि हुई",
|
||||||
"error_getting_places": "स्थानों को प्राप्त करने में त्रुटि हुई",
|
"error_getting_places": "स्थानों को प्राप्त करने में त्रुटि हुई",
|
||||||
"error_loading_albums": "एल्बम लोड करने में समस्या",
|
|
||||||
"error_loading_image": "छवि लोड करने में त्रुटि",
|
"error_loading_image": "छवि लोड करने में त्रुटि",
|
||||||
"error_loading_partners": "जोड़ीदार लोड करने में त्रुटि हुई: {error}",
|
"error_loading_partners": "जोड़ीदार लोड करने में त्रुटि हुई: {error}",
|
||||||
"error_retrieving_asset_information": "एसेट की जानकारी प्राप्त करने में समस्या",
|
|
||||||
"error_saving_image": "त्रुटि: {error}",
|
"error_saving_image": "त्रुटि: {error}",
|
||||||
"error_tag_face_bounding_box": "चेहरे को टैग करने में त्रुटि – बाउंडिंग बॉक्स निर्देशांक प्राप्त नहीं कर सके",
|
"error_tag_face_bounding_box": "चेहरे को टैग करने में त्रुटि – बाउंडिंग बॉक्स निर्देशांक प्राप्त नहीं कर सके",
|
||||||
"error_title": "त्रुटि - कुछ गलत हो गया",
|
"error_title": "त्रुटि - कुछ गलत हो गया",
|
||||||
"error_while_navigating": "एसेट पर जाते समय समस्या",
|
|
||||||
"errors": {
|
"errors": {
|
||||||
"cannot_navigate_next_asset": "अगली संपत्ति पर नेविगेट नहीं किया जा सकता",
|
"cannot_navigate_next_asset": "अगली संपत्ति पर नेविगेट नहीं किया जा सकता",
|
||||||
"cannot_navigate_previous_asset": "पिछली संपत्ति पर नेविगेट नहीं किया जा सकता",
|
"cannot_navigate_previous_asset": "पिछली संपत्ति पर नेविगेट नहीं किया जा सकता",
|
||||||
@@ -1094,7 +1068,6 @@
|
|||||||
"unable_to_complete_oauth_login": "OAuth लॉगिन पूर्ण करने में असमर्थ",
|
"unable_to_complete_oauth_login": "OAuth लॉगिन पूर्ण करने में असमर्थ",
|
||||||
"unable_to_connect": "कनेक्ट करने में असमर्थ",
|
"unable_to_connect": "कनेक्ट करने में असमर्थ",
|
||||||
"unable_to_copy_to_clipboard": "क्लिपबोर्ड पर कॉपी नहीं किया जा सकता, सुनिश्चित करें कि आप https के माध्यम से पेज तक पहुंच रहे हैं",
|
"unable_to_copy_to_clipboard": "क्लिपबोर्ड पर कॉपी नहीं किया जा सकता, सुनिश्चित करें कि आप https के माध्यम से पेज तक पहुंच रहे हैं",
|
||||||
"unable_to_create": "वर्कफ़्लो बनाने में असमर्थ",
|
|
||||||
"unable_to_create_admin_account": "व्यवस्थापक खाता बनाने में असमर्थ",
|
"unable_to_create_admin_account": "व्यवस्थापक खाता बनाने में असमर्थ",
|
||||||
"unable_to_create_api_key": "नई API कुंजी बनाने में असमर्थ",
|
"unable_to_create_api_key": "नई API कुंजी बनाने में असमर्थ",
|
||||||
"unable_to_create_library": "लाइब्रेरी बनाने में असमर्थ",
|
"unable_to_create_library": "लाइब्रेरी बनाने में असमर्थ",
|
||||||
@@ -1105,7 +1078,6 @@
|
|||||||
"unable_to_delete_exclusion_pattern": "बहिष्करण पैटर्न को हटाने में असमर्थ",
|
"unable_to_delete_exclusion_pattern": "बहिष्करण पैटर्न को हटाने में असमर्थ",
|
||||||
"unable_to_delete_shared_link": "साझा लिंक हटाने में असमर्थ",
|
"unable_to_delete_shared_link": "साझा लिंक हटाने में असमर्थ",
|
||||||
"unable_to_delete_user": "उपयोगकर्ता को हटाने में असमर्थ",
|
"unable_to_delete_user": "उपयोगकर्ता को हटाने में असमर्थ",
|
||||||
"unable_to_delete_workflow": "वर्कफ़्लो मिटाने में असमर्थ",
|
|
||||||
"unable_to_download_files": "फ़ाइलें डाउनलोड करने में असमर्थ",
|
"unable_to_download_files": "फ़ाइलें डाउनलोड करने में असमर्थ",
|
||||||
"unable_to_edit_exclusion_pattern": "बहिष्करण पैटर्न संपादित करने में असमर्थ",
|
"unable_to_edit_exclusion_pattern": "बहिष्करण पैटर्न संपादित करने में असमर्थ",
|
||||||
"unable_to_empty_trash": "कचरा खाली करने में असमर्थ",
|
"unable_to_empty_trash": "कचरा खाली करने में असमर्थ",
|
||||||
@@ -1145,7 +1117,6 @@
|
|||||||
"unable_to_scan_library": "लाइब्रेरी स्कैन करने में असमर्थ",
|
"unable_to_scan_library": "लाइब्रेरी स्कैन करने में असमर्थ",
|
||||||
"unable_to_set_feature_photo": "फ़ीचर फ़ोटो सेट करने में असमर्थ",
|
"unable_to_set_feature_photo": "फ़ीचर फ़ोटो सेट करने में असमर्थ",
|
||||||
"unable_to_set_profile_picture": "प्रोफ़ाइल चित्र सेट करने में असमर्थ",
|
"unable_to_set_profile_picture": "प्रोफ़ाइल चित्र सेट करने में असमर्थ",
|
||||||
"unable_to_set_rating": "रेटिंग सेट करने में असमर्थ",
|
|
||||||
"unable_to_submit_job": "कार्य प्रस्तुत करने में असमर्थ",
|
"unable_to_submit_job": "कार्य प्रस्तुत करने में असमर्थ",
|
||||||
"unable_to_trash_asset": "संपत्ति को ट्रैश करने में असमर्थ",
|
"unable_to_trash_asset": "संपत्ति को ट्रैश करने में असमर्थ",
|
||||||
"unable_to_unlink_account": "खाता अनलिंक करने में असमर्थ",
|
"unable_to_unlink_account": "खाता अनलिंक करने में असमर्थ",
|
||||||
@@ -1157,10 +1128,8 @@
|
|||||||
"unable_to_update_settings": "सेटिंग्स अपडेट करने में असमर्थ",
|
"unable_to_update_settings": "सेटिंग्स अपडेट करने में असमर्थ",
|
||||||
"unable_to_update_timeline_display_status": "समयरेखा प्रदर्शन स्थिति अद्यतन करने में असमर्थ",
|
"unable_to_update_timeline_display_status": "समयरेखा प्रदर्शन स्थिति अद्यतन करने में असमर्थ",
|
||||||
"unable_to_update_user": "उपयोगकर्ता को अद्यतन करने में असमर्थ",
|
"unable_to_update_user": "उपयोगकर्ता को अद्यतन करने में असमर्थ",
|
||||||
"unable_to_update_workflow": "वर्कफ़्लो अपडेट करने में असमर्थ",
|
|
||||||
"unable_to_upload_file": "फाइल अपलोड करने में असमर्थ"
|
"unable_to_upload_file": "फाइल अपलोड करने में असमर्थ"
|
||||||
},
|
},
|
||||||
"errors_text": "समस्याएँ",
|
|
||||||
"exclusion_pattern": "बहिष्करण पैटर्न",
|
"exclusion_pattern": "बहिष्करण पैटर्न",
|
||||||
"exif": "एक्सिफ",
|
"exif": "एक्सिफ",
|
||||||
"exif_bottom_sheet_description": "विवरण जोड़ें..।",
|
"exif_bottom_sheet_description": "विवरण जोड़ें..।",
|
||||||
@@ -1171,7 +1140,6 @@
|
|||||||
"exif_bottom_sheet_people": "लोग",
|
"exif_bottom_sheet_people": "लोग",
|
||||||
"exif_bottom_sheet_person_add_person": "नाम डालें",
|
"exif_bottom_sheet_person_add_person": "नाम डालें",
|
||||||
"exit_slideshow": "स्लाइड शो से बाहर निकलें",
|
"exit_slideshow": "स्लाइड शो से बाहर निकलें",
|
||||||
"expand": "विस्तार करें",
|
|
||||||
"expand_all": "सभी का विस्तार",
|
"expand_all": "सभी का विस्तार",
|
||||||
"experimental_settings_new_asset_list_subtitle": "कार्य प्रगति पर है",
|
"experimental_settings_new_asset_list_subtitle": "कार्य प्रगति पर है",
|
||||||
"experimental_settings_new_asset_list_title": "प्रयोगात्मक फोटो ग्रिड सक्षम करें",
|
"experimental_settings_new_asset_list_title": "प्रयोगात्मक फोटो ग्रिड सक्षम करें",
|
||||||
@@ -1193,7 +1161,6 @@
|
|||||||
"external_network_sheet_info": "जब पसंदीदा वाई-फाई नेटवर्क पर नहीं होगा, तो ऐप नीचे दिए गए यूआरएल में से पहले के माध्यम से सर्वर से कनेक्ट होगा, ऊपर से नीचे तक शुरू करते हुए",
|
"external_network_sheet_info": "जब पसंदीदा वाई-फाई नेटवर्क पर नहीं होगा, तो ऐप नीचे दिए गए यूआरएल में से पहले के माध्यम से सर्वर से कनेक्ट होगा, ऊपर से नीचे तक शुरू करते हुए",
|
||||||
"face_unassigned": "सौंपे नहीं गए",
|
"face_unassigned": "सौंपे नहीं गए",
|
||||||
"failed": "विफल हुआ",
|
"failed": "विफल हुआ",
|
||||||
"failed_count": "विफल: {count}",
|
|
||||||
"failed_to_authenticate": "प्रमाणित करने में विफल",
|
"failed_to_authenticate": "प्रमाणित करने में विफल",
|
||||||
"failed_to_load_assets": "एसेट लोड करने में विफल",
|
"failed_to_load_assets": "एसेट लोड करने में विफल",
|
||||||
"failed_to_load_folder": "फोल्डर लोड करने में विफल",
|
"failed_to_load_folder": "फोल्डर लोड करने में विफल",
|
||||||
@@ -1207,17 +1174,12 @@
|
|||||||
"features_in_development": "विकास में सुविधाएँ",
|
"features_in_development": "विकास में सुविधाएँ",
|
||||||
"features_setting_description": "ऐप सुविधाओं का प्रबंधन करें",
|
"features_setting_description": "ऐप सुविधाओं का प्रबंधन करें",
|
||||||
"file_name_or_extension": "फ़ाइल का नाम या एक्सटेंशन",
|
"file_name_or_extension": "फ़ाइल का नाम या एक्सटेंशन",
|
||||||
"file_name_text": "फ़ाइल नाम",
|
|
||||||
"file_name_with_value": "फ़ाइल नाम: {file_name}",
|
|
||||||
"file_size": "फ़ाइल का साइज़",
|
"file_size": "फ़ाइल का साइज़",
|
||||||
"filename": "फ़ाइल का नाम",
|
"filename": "फ़ाइल का नाम",
|
||||||
"filetype": "फाइल का प्रकार",
|
"filetype": "फाइल का प्रकार",
|
||||||
"filter": "फ़िल्टर",
|
"filter": "फ़िल्टर",
|
||||||
"filter_description": "चुने गए एसेट को फ़िल्टर करने की शर्तें",
|
|
||||||
"filter_people": "लोगों को फ़िल्टर करें",
|
"filter_people": "लोगों को फ़िल्टर करें",
|
||||||
"filter_places": "स्थानों को फ़िल्टर करें",
|
"filter_places": "स्थानों को फ़िल्टर करें",
|
||||||
"filter_tags": "टैग फ़िल्टर करें",
|
|
||||||
"filters": "फ़िलटर्स",
|
|
||||||
"find_them_fast": "खोज के साथ नाम से उन्हें तेजी से ढूंढें",
|
"find_them_fast": "खोज के साथ नाम से उन्हें तेजी से ढूंढें",
|
||||||
"first": "पहला",
|
"first": "पहला",
|
||||||
"fix_incorrect_match": "ग़लत मिलान ठीक करें",
|
"fix_incorrect_match": "ग़लत मिलान ठीक करें",
|
||||||
@@ -1227,16 +1189,12 @@
|
|||||||
"folders_feature_description": "फ़ाइल सिस्टम पर फ़ोटो और वीडियो के लिए फ़ोल्डर दृश्य ब्राउज़ करना",
|
"folders_feature_description": "फ़ाइल सिस्टम पर फ़ोटो और वीडियो के लिए फ़ोल्डर दृश्य ब्राउज़ करना",
|
||||||
"forgot_pin_code_question": "अपना पिन भूल गए?",
|
"forgot_pin_code_question": "अपना पिन भूल गए?",
|
||||||
"forward": "आगे",
|
"forward": "आगे",
|
||||||
"free_up_space": "जगह खाली करें",
|
|
||||||
"free_up_space_description": "जगह खाली करने के लिए बैकअप ली गई फ़ोटो और वीडियो को अपने डिवाइस के ट्रैश में भेजें। सर्वर पर आपकी प्रतियाँ सुरक्षित रहेंगी।",
|
|
||||||
"free_up_space_settings_subtitle": "डिवाइस स्टोरेज खाली करें",
|
|
||||||
"full_path": "पूरा पथ: {path}",
|
"full_path": "पूरा पथ: {path}",
|
||||||
"gcast_enabled": "गूगल कास्ट",
|
"gcast_enabled": "गूगल कास्ट",
|
||||||
"gcast_enabled_description": "यह सुविधा काम करने के लिए गूगल से बाह्य संसाधन लोड करती है।",
|
"gcast_enabled_description": "यह सुविधा काम करने के लिए गूगल से बाह्य संसाधन लोड करती है।",
|
||||||
"general": "सामान्य",
|
"general": "सामान्य",
|
||||||
"geolocation_instruction_location": "किसी परिसंपत्ति के स्थान का उपयोग करने के लिए GPS निर्देशांक वाली परिसंपत्ति पर क्लिक करें, या सीधे मानचित्र से कोई स्थान चुनें",
|
"geolocation_instruction_location": "किसी परिसंपत्ति के स्थान का उपयोग करने के लिए GPS निर्देशांक वाली परिसंपत्ति पर क्लिक करें, या सीधे मानचित्र से कोई स्थान चुनें",
|
||||||
"get_help": "मदद लें",
|
"get_help": "मदद लें",
|
||||||
"get_people_error": "लोगों को प्राप्त करने में समस्या",
|
|
||||||
"get_wifiname_error": "वाई-फ़ाई नाम नहीं मिल सका। सुनिश्चित करें कि आपने आवश्यक अनुमतियाँ दे दी हैं और वाई-फ़ाई नेटवर्क से कनेक्ट हैं",
|
"get_wifiname_error": "वाई-फ़ाई नाम नहीं मिल सका। सुनिश्चित करें कि आपने आवश्यक अनुमतियाँ दे दी हैं और वाई-फ़ाई नेटवर्क से कनेक्ट हैं",
|
||||||
"getting_started": "शुरू करना",
|
"getting_started": "शुरू करना",
|
||||||
"go_back": "वापस जाओ",
|
"go_back": "वापस जाओ",
|
||||||
@@ -1262,14 +1220,12 @@
|
|||||||
"header_settings_header_name_input": "हेडर का नाम",
|
"header_settings_header_name_input": "हेडर का नाम",
|
||||||
"header_settings_header_value_input": "हेडर मान",
|
"header_settings_header_value_input": "हेडर मान",
|
||||||
"headers_settings_tile_title": "कस्टम प्रॉक्सी हेडर",
|
"headers_settings_tile_title": "कस्टम प्रॉक्सी हेडर",
|
||||||
"height": "ऊँचाई",
|
|
||||||
"hi_user": "नमस्ते {name} ({email})",
|
"hi_user": "नमस्ते {name} ({email})",
|
||||||
"hide_all_people": "सभी लोगों को छुपाएं",
|
"hide_all_people": "सभी लोगों को छुपाएं",
|
||||||
"hide_gallery": "गैलरी छिपाएँ",
|
"hide_gallery": "गैलरी छिपाएँ",
|
||||||
"hide_named_person": "व्यक्ति को छिपाएँ {name}",
|
"hide_named_person": "व्यक्ति को छिपाएँ {name}",
|
||||||
"hide_password": "पासवर्ड छिपाएं",
|
"hide_password": "पासवर्ड छिपाएं",
|
||||||
"hide_person": "व्यक्ति छिपाएँ",
|
"hide_person": "व्यक्ति छिपाएँ",
|
||||||
"hide_schema": "स्कीमा छिपाएँ",
|
|
||||||
"hide_text_recognition": "टेक्स्ट पहचान छिपाएँ",
|
"hide_text_recognition": "टेक्स्ट पहचान छिपाएँ",
|
||||||
"hide_unnamed_people": "अनाम लोगों को छुपाएं",
|
"hide_unnamed_people": "अनाम लोगों को छुपाएं",
|
||||||
"home_page_add_to_album_conflicts": "{added} संपत्तियां एल्बम {album} में जोड़ी गईं. {failed} संपत्तियां पहले से ही एल्बम में हैं।",
|
"home_page_add_to_album_conflicts": "{added} संपत्तियां एल्बम {album} में जोड़ी गईं. {failed} संपत्तियां पहले से ही एल्बम में हैं।",
|
||||||
@@ -1338,22 +1294,13 @@
|
|||||||
"ios_debug_info_last_sync_at": "अंतिम सिंक {dateTime}",
|
"ios_debug_info_last_sync_at": "अंतिम सिंक {dateTime}",
|
||||||
"ios_debug_info_no_processes_queued": "कोई पृष्ठभूमि प्रक्रिया कतारबद्ध नहीं है",
|
"ios_debug_info_no_processes_queued": "कोई पृष्ठभूमि प्रक्रिया कतारबद्ध नहीं है",
|
||||||
"ios_debug_info_no_sync_yet": "अभी तक कोई पृष्ठभूमि समन्वयन कार्य नहीं चलाया गया है",
|
"ios_debug_info_no_sync_yet": "अभी तक कोई पृष्ठभूमि समन्वयन कार्य नहीं चलाया गया है",
|
||||||
"ios_debug_info_processes_queued": "{count, plural, one {{count} बैकग्राउंड प्रोसेस कतार में जोड़ा गया} other {{count} बैकग्राउंड प्रोसेस कतार में जोड़े गए}}",
|
"ios_debug_info_processes_queued": "{count, plural, one {{count} background process queued} other {{count} background processes queued}}",
|
||||||
"ios_debug_info_processing_ran_at": "प्रसंस्करण {dateTime} पर चला",
|
"ios_debug_info_processing_ran_at": "प्रसंस्करण {dateTime} पर चला",
|
||||||
"items_count": "{count, plural, one {# आइटम} other {# आइटम}}",
|
"items_count": "{count, plural, one {# item} other {# items}}",
|
||||||
"jobs": "नौकरियां",
|
"jobs": "नौकरियां",
|
||||||
"json_editor": "JSON संपादक",
|
|
||||||
"json_error": "JSON में समस्या",
|
|
||||||
"keep": "रखना",
|
"keep": "रखना",
|
||||||
"keep_albums": "एल्बम बनाए रखें",
|
|
||||||
"keep_albums_count": "रखे जा रहे हैं {count} {count, plural, one {एल्बम} other {एल्बम}}",
|
|
||||||
"keep_all": "सभी रखना",
|
"keep_all": "सभी रखना",
|
||||||
"keep_description": "जगह खाली करते समय तय करें कि आपके डिवाइस पर क्या रखा जाए।",
|
|
||||||
"keep_favorites": "पसंदीदा बनाए रखें",
|
|
||||||
"keep_on_device": "डिवाइस पर बनाए रखें",
|
|
||||||
"keep_on_device_hint": "इस डिवाइस पर रखने के लिए आइटम चुनें",
|
|
||||||
"keep_this_delete_others": "इसे रखें, अन्य को हटाएँ",
|
"keep_this_delete_others": "इसे रखें, अन्य को हटाएँ",
|
||||||
"keeping": "रखे जा रहे हैं: {items}",
|
|
||||||
"kept_this_deleted_others": "इस संपत्ति को रखा गया और {count, plural, one {# asset} other {# assets}} को हटा दिया गया",
|
"kept_this_deleted_others": "इस संपत्ति को रखा गया और {count, plural, one {# asset} other {# assets}} को हटा दिया गया",
|
||||||
"keyboard_shortcuts": "कुंजीपटल अल्प मार्ग",
|
"keyboard_shortcuts": "कुंजीपटल अल्प मार्ग",
|
||||||
"language": "भाषा",
|
"language": "भाषा",
|
||||||
@@ -1363,7 +1310,7 @@
|
|||||||
"language_setting_description": "अपनी पसंदीदा भाषा चुनें",
|
"language_setting_description": "अपनी पसंदीदा भाषा चुनें",
|
||||||
"large_files": "बड़ी फ़ाइलें",
|
"large_files": "बड़ी फ़ाइलें",
|
||||||
"last": "अंतिम",
|
"last": "अंतिम",
|
||||||
"last_months": "{count, plural, one {पिछले महीने} other {पिछले # महीने}}",
|
"last_months": "{count, plural, one {Last month} other {Last # months}}",
|
||||||
"last_seen": "अंतिम बार देखा गया",
|
"last_seen": "अंतिम बार देखा गया",
|
||||||
"latest_version": "नवीनतम संस्करण",
|
"latest_version": "नवीनतम संस्करण",
|
||||||
"latitude": "अक्षांश",
|
"latitude": "अक्षांश",
|
||||||
@@ -1395,7 +1342,6 @@
|
|||||||
"local": "स्थानीय",
|
"local": "स्थानीय",
|
||||||
"local_asset_cast_failed": "सर्वर पर अपलोड न की गई संपत्ति को कास्ट करने में असमर्थ",
|
"local_asset_cast_failed": "सर्वर पर अपलोड न की गई संपत्ति को कास्ट करने में असमर्थ",
|
||||||
"local_assets": "स्थानीय संपत्तियाँ",
|
"local_assets": "स्थानीय संपत्तियाँ",
|
||||||
"local_id": "लोकल आईडी",
|
|
||||||
"local_media_summary": "स्थानीय मीडिया सारांश",
|
"local_media_summary": "स्थानीय मीडिया सारांश",
|
||||||
"local_network": "स्थानीय नेटवर्क",
|
"local_network": "स्थानीय नेटवर्क",
|
||||||
"local_network_sheet_info": "निर्दिष्ट वाई-फाई नेटवर्क का उपयोग करते समय ऐप इस URL के माध्यम से सर्वर से कनेक्ट होगा",
|
"local_network_sheet_info": "निर्दिष्ट वाई-फाई नेटवर्क का उपयोग करते समय ऐप इस URL के माध्यम से सर्वर से कनेक्ट होगा",
|
||||||
@@ -1447,28 +1393,10 @@
|
|||||||
"loop_videos_description": "विवरण व्यूअर में किसी वीडियो को स्वचालित रूप से लूप करने में सक्षम करें।",
|
"loop_videos_description": "विवरण व्यूअर में किसी वीडियो को स्वचालित रूप से लूप करने में सक्षम करें।",
|
||||||
"main_branch_warning": "आप विकास संस्करण का उपयोग कर रहे हैं; हम दृढ़ता से रिलीज़ संस्करण का उपयोग करने की अनुशंसा करते हैं!",
|
"main_branch_warning": "आप विकास संस्करण का उपयोग कर रहे हैं; हम दृढ़ता से रिलीज़ संस्करण का उपयोग करने की अनुशंसा करते हैं!",
|
||||||
"main_menu": "मेनू चलाएँ",
|
"main_menu": "मेनू चलाएँ",
|
||||||
"maintenance_action_restore": "डेटाबेस पुनर्स्थापित किया जा रहा है",
|
|
||||||
"maintenance_description": "Immich को <link>मेंटेनेंस मोड</link> में डाल दिया गया है।",
|
"maintenance_description": "Immich को <link>मेंटेनेंस मोड</link> में डाल दिया गया है।",
|
||||||
"maintenance_end": "रखरखाव मोड समाप्त करें",
|
"maintenance_end": "रखरखाव मोड समाप्त करें",
|
||||||
"maintenance_end_error": "मेंटेनेंस मोड खत्म नहीं हो सका।",
|
"maintenance_end_error": "मेंटेनेंस मोड खत्म नहीं हो सका।",
|
||||||
"maintenance_logged_in_as": "अभी {user} के तौर पर लॉग इन हैं",
|
"maintenance_logged_in_as": "अभी {user} के तौर पर लॉग इन हैं",
|
||||||
"maintenance_restore_from_backup": "बैकअप से पुनर्स्थापित करें",
|
|
||||||
"maintenance_restore_library": "अपनी लाइब्रेरी पुनर्स्थापित करें",
|
|
||||||
"maintenance_restore_library_confirm": "यदि यह सही लगता है, तो बैकअप पुनर्स्थापित करना जारी रखें!",
|
|
||||||
"maintenance_restore_library_description": "डेटाबेस पुनर्स्थापित किया जा रहा है",
|
|
||||||
"maintenance_restore_library_folder_has_files": "{folder} में {count} फ़ोल्डर हैं",
|
|
||||||
"maintenance_restore_library_folder_no_files": "{folder} में फ़ाइलें मौजूद नहीं हैं!",
|
|
||||||
"maintenance_restore_library_folder_pass": "पढ़ने और लिखने योग्य",
|
|
||||||
"maintenance_restore_library_folder_read_fail": "पढ़ने योग्य नहीं",
|
|
||||||
"maintenance_restore_library_folder_write_fail": "लिखने योग्य नहीं",
|
|
||||||
"maintenance_restore_library_hint_missing_files": "संभव है कि कुछ महत्वपूर्ण फ़ाइलें मौजूद नहीं हैं",
|
|
||||||
"maintenance_restore_library_hint_regenerate_later": "आप इन्हें बाद में सेटिंग्स में दोबारा बना सकते हैं",
|
|
||||||
"maintenance_restore_library_hint_storage_template_missing_files": "स्टोरेज टेम्पलेट का उपयोग कर रहे हैं? संभव है कि कुछ फ़ाइलें मौजूद नहीं हैं",
|
|
||||||
"maintenance_restore_library_loading": "इंटीग्रिटी जाँच और हीयूरिस्टिक्स लोड हो रहे हैं…",
|
|
||||||
"maintenance_task_backup": "मौजूदा डेटाबेस का बैकअप बनाया जा रहा है…",
|
|
||||||
"maintenance_task_migrations": "डेटाबेस माइग्रेशन चल रहे हैं…",
|
|
||||||
"maintenance_task_restore": "चुने गए बैकअप को पुनर्स्थापित किया जा रहा है…",
|
|
||||||
"maintenance_task_rollback": "पुनर्स्थापना विफल हुई, पुनर्स्थापना बिंदु पर वापस लौट रहे हैं…",
|
|
||||||
"maintenance_title": "अस्थाई रूप से अनुपलब्ध",
|
"maintenance_title": "अस्थाई रूप से अनुपलब्ध",
|
||||||
"make": "बनाना",
|
"make": "बनाना",
|
||||||
"manage_geolocation": "स्थान प्रबंधित करें",
|
"manage_geolocation": "स्थान प्रबंधित करें",
|
||||||
@@ -1484,7 +1412,7 @@
|
|||||||
"manage_your_devices": "अपने लॉग-इन डिवाइस प्रबंधित करें",
|
"manage_your_devices": "अपने लॉग-इन डिवाइस प्रबंधित करें",
|
||||||
"manage_your_oauth_connection": "अपना OAuth कनेक्शन प्रबंधित करें",
|
"manage_your_oauth_connection": "अपना OAuth कनेक्शन प्रबंधित करें",
|
||||||
"map": "नक्शा",
|
"map": "नक्शा",
|
||||||
"map_assets_in_bounds": "{count, plural, =0 {यहाँ कोई फ़ोटो नहीं है} one {# फ़ोटो} other {# फ़ोटो}}",
|
"map_assets_in_bounds": "{count, plural, =0 {No photos in this area} one {# photo} other {# photos}}",
|
||||||
"map_cannot_get_user_location": "उपयोगकर्ता का स्थान प्राप्त नहीं किया जा सका",
|
"map_cannot_get_user_location": "उपयोगकर्ता का स्थान प्राप्त नहीं किया जा सका",
|
||||||
"map_location_dialog_yes": "हाँ",
|
"map_location_dialog_yes": "हाँ",
|
||||||
"map_location_picker_page_use_location": "इस स्थान का उपयोग करें",
|
"map_location_picker_page_use_location": "इस स्थान का उपयोग करें",
|
||||||
@@ -1530,8 +1458,6 @@
|
|||||||
"minimize": "छोटा करना",
|
"minimize": "छोटा करना",
|
||||||
"minute": "मिनट",
|
"minute": "मिनट",
|
||||||
"minutes": "मिनट",
|
"minutes": "मिनट",
|
||||||
"mirror_horizontal": "क्षैतिज",
|
|
||||||
"mirror_vertical": "ऊर्ध्वाधर",
|
|
||||||
"missing": "गुम",
|
"missing": "गुम",
|
||||||
"mobile_app": "मोबाइल एप्लिकेशन",
|
"mobile_app": "मोबाइल एप्लिकेशन",
|
||||||
"mobile_app_download_onboarding_note": "निम्नलिखित विकल्पों का उपयोग करके साथी मोबाइल ऐप डाउनलोड करें",
|
"mobile_app_download_onboarding_note": "निम्नलिखित विकल्पों का उपयोग करके साथी मोबाइल ऐप डाउनलोड करें",
|
||||||
@@ -1540,14 +1466,11 @@
|
|||||||
"monthly_title_text_date_format": "एमएमएमएम वाई",
|
"monthly_title_text_date_format": "एमएमएमएम वाई",
|
||||||
"more": "अधिक",
|
"more": "अधिक",
|
||||||
"move": "स्थान परिवर्तन",
|
"move": "स्थान परिवर्तन",
|
||||||
"move_down": "नीचे ले जाएँ",
|
|
||||||
"move_off_locked_folder": "लॉक किए गए फ़ोल्डर से बाहर ले जाएं",
|
"move_off_locked_folder": "लॉक किए गए फ़ोल्डर से बाहर ले जाएं",
|
||||||
"move_to": "करने के लिए कदम",
|
"move_to": "करने के लिए कदम",
|
||||||
"move_to_device_trash": "डिवाइस के ट्रैश में ले जाएँ",
|
|
||||||
"move_to_lock_folder_action_prompt": "{count} लॉक किए गए फ़ोल्डर में जोड़ा गया",
|
"move_to_lock_folder_action_prompt": "{count} लॉक किए गए फ़ोल्डर में जोड़ा गया",
|
||||||
"move_to_locked_folder": "लॉक किए गए फ़ोल्डर में ले जाएं",
|
"move_to_locked_folder": "लॉक किए गए फ़ोल्डर में ले जाएं",
|
||||||
"move_to_locked_folder_confirmation": "ये फ़ोटो और वीडियो सभी एल्बमों से हटा दिए जाएँगे और केवल लॉक किए गए फ़ोल्डर से ही देखे जा सकेंगे",
|
"move_to_locked_folder_confirmation": "ये फ़ोटो और वीडियो सभी एल्बमों से हटा दिए जाएँगे और केवल लॉक किए गए फ़ोल्डर से ही देखे जा सकेंगे",
|
||||||
"move_up": "ऊपर ले जाएँ",
|
|
||||||
"moved_to_archive": "{count, plural, one {# asset} other {# assets}} को संग्रह में ले जाया गया",
|
"moved_to_archive": "{count, plural, one {# asset} other {# assets}} को संग्रह में ले जाया गया",
|
||||||
"moved_to_library": "{count, plural, one {# asset} other {# assets}} को लाइब्रेरी में ले जाया गया",
|
"moved_to_library": "{count, plural, one {# asset} other {# assets}} को लाइब्रेरी में ले जाया गया",
|
||||||
"moved_to_trash": "कूड़ेदान में ले जाया गया",
|
"moved_to_trash": "कूड़ेदान में ले जाया गया",
|
||||||
@@ -1557,7 +1480,6 @@
|
|||||||
"my_albums": "मेरे एल्बम",
|
"my_albums": "मेरे एल्बम",
|
||||||
"name": "नाम",
|
"name": "नाम",
|
||||||
"name_or_nickname": "नाम या उपनाम",
|
"name_or_nickname": "नाम या उपनाम",
|
||||||
"name_required": "नाम आवश्यक है",
|
|
||||||
"navigate": "नेविगेट",
|
"navigate": "नेविगेट",
|
||||||
"navigate_to_time": "समय पर नेविगेट करें",
|
"navigate_to_time": "समय पर नेविगेट करें",
|
||||||
"network_requirement_photos_upload": "फ़ोटो का बैकअप लेने के लिए सेलुलर डेटा का उपयोग करें",
|
"network_requirement_photos_upload": "फ़ोटो का बैकअप लेने के लिए सेलुलर डेटा का उपयोग करें",
|
||||||
@@ -1582,8 +1504,6 @@
|
|||||||
"next": "अगला",
|
"next": "अगला",
|
||||||
"next_memory": "अगली स्मृति",
|
"next_memory": "अगली स्मृति",
|
||||||
"no": "नहीं",
|
"no": "नहीं",
|
||||||
"no_actions_added": "अभी तक कोई कार्रवाई जोड़ी नहीं गई है",
|
|
||||||
"no_albums_found": "कोई एल्बम नहीं मिला",
|
|
||||||
"no_albums_message": "अपनी फ़ोटो और वीडियो को व्यवस्थित करने के लिए एक एल्बम बनाएं",
|
"no_albums_message": "अपनी फ़ोटो और वीडियो को व्यवस्थित करने के लिए एक एल्बम बनाएं",
|
||||||
"no_albums_with_name_yet": "ऐसा लगता है कि आपके पास अभी तक इस नाम का कोई एल्बम नहीं है।",
|
"no_albums_with_name_yet": "ऐसा लगता है कि आपके पास अभी तक इस नाम का कोई एल्बम नहीं है।",
|
||||||
"no_albums_yet": "ऐसा लगता है कि आपके पास अभी तक कोई एल्बम नहीं है।",
|
"no_albums_yet": "ऐसा लगता है कि आपके पास अभी तक कोई एल्बम नहीं है।",
|
||||||
@@ -1593,13 +1513,11 @@
|
|||||||
"no_cast_devices_found": "कोई कास्ट डिवाइस नहीं मिला",
|
"no_cast_devices_found": "कोई कास्ट डिवाइस नहीं मिला",
|
||||||
"no_checksum_local": "कोई चेकसम उपलब्ध नहीं है - स्थानीय संपत्तियां प्राप्त नहीं की जा सकतीं",
|
"no_checksum_local": "कोई चेकसम उपलब्ध नहीं है - स्थानीय संपत्तियां प्राप्त नहीं की जा सकतीं",
|
||||||
"no_checksum_remote": "कोई चेकसम उपलब्ध नहीं है - दूरस्थ संपत्ति प्राप्त नहीं की जा सकती",
|
"no_checksum_remote": "कोई चेकसम उपलब्ध नहीं है - दूरस्थ संपत्ति प्राप्त नहीं की जा सकती",
|
||||||
"no_configuration_needed": "किसी कॉन्फ़िगरेशन की आवश्यकता नहीं है",
|
|
||||||
"no_devices": "कोई अधिकृत उपकरण नहीं",
|
"no_devices": "कोई अधिकृत उपकरण नहीं",
|
||||||
"no_duplicates_found": "कोई नकलची नहीं मिला।",
|
"no_duplicates_found": "कोई नकलची नहीं मिला।",
|
||||||
"no_exif_info_available": "कोई एक्सिफ़ जानकारी उपलब्ध नहीं है",
|
"no_exif_info_available": "कोई एक्सिफ़ जानकारी उपलब्ध नहीं है",
|
||||||
"no_explore_results_message": "अपने संग्रह का पता लगाने के लिए और फ़ोटो अपलोड करें।",
|
"no_explore_results_message": "अपने संग्रह का पता लगाने के लिए और फ़ोटो अपलोड करें।",
|
||||||
"no_favorites_message": "अपनी सर्वश्रेष्ठ तस्वीरें और वीडियो तुरंत ढूंढने के लिए पसंदीदा जोड़ें",
|
"no_favorites_message": "अपनी सर्वश्रेष्ठ तस्वीरें और वीडियो तुरंत ढूंढने के लिए पसंदीदा जोड़ें",
|
||||||
"no_filters_added": "अभी तक कोई फ़िल्टर जोड़ा नहीं गया है",
|
|
||||||
"no_libraries_message": "अपनी फ़ोटो और वीडियो देखने के लिए एक बाहरी लाइब्रेरी बनाएं",
|
"no_libraries_message": "अपनी फ़ोटो और वीडियो देखने के लिए एक बाहरी लाइब्रेरी बनाएं",
|
||||||
"no_local_assets_found": "इस चेकसम के साथ कोई स्थानीय संपत्ति नहीं मिली",
|
"no_local_assets_found": "इस चेकसम के साथ कोई स्थानीय संपत्ति नहीं मिली",
|
||||||
"no_location_set": "कोई स्थान निर्धारित नहीं",
|
"no_location_set": "कोई स्थान निर्धारित नहीं",
|
||||||
@@ -1613,7 +1531,6 @@
|
|||||||
"no_results_description": "कोई पर्यायवाची या अधिक सामान्य कीवर्ड आज़माएँ",
|
"no_results_description": "कोई पर्यायवाची या अधिक सामान्य कीवर्ड आज़माएँ",
|
||||||
"no_shared_albums_message": "अपने नेटवर्क में लोगों के साथ फ़ोटो और वीडियो साझा करने के लिए एक एल्बम बनाएं",
|
"no_shared_albums_message": "अपने नेटवर्क में लोगों के साथ फ़ोटो और वीडियो साझा करने के लिए एक एल्बम बनाएं",
|
||||||
"no_uploads_in_progress": "कोई अपलोड प्रगति पर नहीं है",
|
"no_uploads_in_progress": "कोई अपलोड प्रगति पर नहीं है",
|
||||||
"none": "कोई नहीं",
|
|
||||||
"not_allowed": "अनुमति नहीं",
|
"not_allowed": "अनुमति नहीं",
|
||||||
"not_available": "लागू नहीं",
|
"not_available": "लागू नहीं",
|
||||||
"not_in_any_album": "किसी एलबम में नहीं",
|
"not_in_any_album": "किसी एलबम में नहीं",
|
||||||
@@ -1647,7 +1564,6 @@
|
|||||||
"online": "ऑनलाइन",
|
"online": "ऑनलाइन",
|
||||||
"only_favorites": "केवल पसंदीदा",
|
"only_favorites": "केवल पसंदीदा",
|
||||||
"open": "खुला",
|
"open": "खुला",
|
||||||
"open_calendar": "कैलेंडर खोलें",
|
|
||||||
"open_in_map_view": "मानचित्र दृश्य में खोलें",
|
"open_in_map_view": "मानचित्र दृश्य में खोलें",
|
||||||
"open_in_openstreetmap": "OpenStreetMap में खोलें",
|
"open_in_openstreetmap": "OpenStreetMap में खोलें",
|
||||||
"open_the_search_filters": "खोज फ़िल्टर खोलें",
|
"open_the_search_filters": "खोज फ़िल्टर खोलें",
|
||||||
@@ -1663,7 +1579,6 @@
|
|||||||
"other_variables": "अन्य चर",
|
"other_variables": "अन्य चर",
|
||||||
"owned": "स्वामित्व",
|
"owned": "स्वामित्व",
|
||||||
"owner": "मालिक",
|
"owner": "मालिक",
|
||||||
"page": "पेज",
|
|
||||||
"partner": "साथी",
|
"partner": "साथी",
|
||||||
"partner_can_access": "{partner} एक्सेस कर सकते हैं",
|
"partner_can_access": "{partner} एक्सेस कर सकते हैं",
|
||||||
"partner_can_access_assets": "संग्रहीत और हटाए गए को छोड़कर आपके सभी फ़ोटो और वीडियो",
|
"partner_can_access_assets": "संग्रहीत और हटाए गए को छोड़कर आपके सभी फ़ोटो और वीडियो",
|
||||||
@@ -1696,7 +1611,6 @@
|
|||||||
"people": "लोग",
|
"people": "लोग",
|
||||||
"people_edits_count": "संपादित {count, plural, one {# person} other {# people}}",
|
"people_edits_count": "संपादित {count, plural, one {# person} other {# people}}",
|
||||||
"people_feature_description": "लोगों द्वारा समूहीकृत फ़ोटो और वीडियो ब्राउज़ करना",
|
"people_feature_description": "लोगों द्वारा समूहीकृत फ़ोटो और वीडियो ब्राउज़ करना",
|
||||||
"people_selected": "{count, plural, one {# व्यक्ति चुना गया} other {# लोग चुने गए}}",
|
|
||||||
"people_sidebar_description": "साइडबार में लोगों के लिए एक लिंक प्रदर्शित करें",
|
"people_sidebar_description": "साइडबार में लोगों के लिए एक लिंक प्रदर्शित करें",
|
||||||
"permanent_deletion_warning": "स्थायी विलोपन चेतावनी",
|
"permanent_deletion_warning": "स्थायी विलोपन चेतावनी",
|
||||||
"permanent_deletion_warning_setting_description": "संपत्तियों को स्थायी रूप से हटाते समय एक चेतावनी दिखाएं",
|
"permanent_deletion_warning_setting_description": "संपत्तियों को स्थायी रूप से हटाते समय एक चेतावनी दिखाएं",
|
||||||
@@ -1720,15 +1634,12 @@
|
|||||||
"person_age_year_months": "1 वर्ष, {months, plural, one {# month} other {# months}} पुराना",
|
"person_age_year_months": "1 वर्ष, {months, plural, one {# month} other {# months}} पुराना",
|
||||||
"person_age_years": "{years, plural, other {# years}} पुराना",
|
"person_age_years": "{years, plural, other {# years}} पुराना",
|
||||||
"person_birthdate": "{date} को जन्मे",
|
"person_birthdate": "{date} को जन्मे",
|
||||||
"person_hidden": "{name}{hidden, select, true { (छिपा हुआ)} other {}}",
|
"person_hidden": "{name}{hidden, select, true { (hidden)} other {}}",
|
||||||
"person_recognized": "व्यक्ति पहचाना गया",
|
|
||||||
"person_selected": "व्यक्ति चुना गया",
|
|
||||||
"photo_shared_all_users": "ऐसा लगता है कि आपने अपनी तस्वीरें सभी उपयोगकर्ताओं के साथ साझा कीं या आपके पास साझा करने के लिए कोई उपयोगकर्ता नहीं है।",
|
"photo_shared_all_users": "ऐसा लगता है कि आपने अपनी तस्वीरें सभी उपयोगकर्ताओं के साथ साझा कीं या आपके पास साझा करने के लिए कोई उपयोगकर्ता नहीं है।",
|
||||||
"photos": "तस्वीरें",
|
"photos": "तस्वीरें",
|
||||||
"photos_and_videos": "तस्वीरें और वीडियो",
|
"photos_and_videos": "तस्वीरें और वीडियो",
|
||||||
"photos_count": "{count, plural, one {{count, number} फ़ोटो} other {{count, number} फ़ोटो}}",
|
"photos_count": "{count, plural, one {{count, number} Photo} other {{count, number} Photos}}",
|
||||||
"photos_from_previous_years": "पिछले वर्षों की तस्वीरें",
|
"photos_from_previous_years": "पिछले वर्षों की तस्वीरें",
|
||||||
"photos_only": "केवल फ़ोटो",
|
|
||||||
"pick_a_location": "एक स्थान चुनें",
|
"pick_a_location": "एक स्थान चुनें",
|
||||||
"pick_custom_range": "कस्टम रेंज",
|
"pick_custom_range": "कस्टम रेंज",
|
||||||
"pick_date_range": "दिनांक सीमा चुनें",
|
"pick_date_range": "दिनांक सीमा चुनें",
|
||||||
@@ -1738,7 +1649,7 @@
|
|||||||
"pin_verification": "पिन कोड सत्यापन",
|
"pin_verification": "पिन कोड सत्यापन",
|
||||||
"place": "जगह",
|
"place": "जगह",
|
||||||
"places": "स्थानों",
|
"places": "स्थानों",
|
||||||
"places_count": "{count, plural, one {{count, number} स्थान} other {{count, number} स्थान}}",
|
"places_count": "{count, plural, one {{count, number} Place} other {{count, number} Places}}",
|
||||||
"play": "खेल",
|
"play": "खेल",
|
||||||
"play_memories": "यादें खेलें",
|
"play_memories": "यादें खेलें",
|
||||||
"play_motion_photo": "मोशन फ़ोटो चलाएं",
|
"play_motion_photo": "मोशन फ़ोटो चलाएं",
|
||||||
@@ -1804,10 +1715,9 @@
|
|||||||
"purchase_settings_server_activated": "सर्वर उत्पाद कुंजी व्यवस्थापक द्वारा प्रबंधित की जाती है",
|
"purchase_settings_server_activated": "सर्वर उत्पाद कुंजी व्यवस्थापक द्वारा प्रबंधित की जाती है",
|
||||||
"query_asset_id": "क्वेरी एसेट आईडी",
|
"query_asset_id": "क्वेरी एसेट आईडी",
|
||||||
"queue_status": "कतारबद्ध {count}/{total}",
|
"queue_status": "कतारबद्ध {count}/{total}",
|
||||||
"rate_asset": "एसेट को रेट करें",
|
|
||||||
"rating": "स्टार रेटिंग",
|
"rating": "स्टार रेटिंग",
|
||||||
"rating_clear": "स्पष्ट रेटिंग",
|
"rating_clear": "स्पष्ट रेटिंग",
|
||||||
"rating_count": "{count, plural, one {# स्टार} other {# स्टार}}",
|
"rating_count": "{count, plural, one {# star} other {# stars}}",
|
||||||
"rating_description": "जानकारी पैनल में EXIF रेटिंग प्रदर्शित करें",
|
"rating_description": "जानकारी पैनल में EXIF रेटिंग प्रदर्शित करें",
|
||||||
"reaction_options": "प्रतिक्रिया विकल्प",
|
"reaction_options": "प्रतिक्रिया विकल्प",
|
||||||
"read_changelog": "चेंजलॉग पढ़ें",
|
"read_changelog": "चेंजलॉग पढ़ें",
|
||||||
@@ -1908,11 +1818,9 @@
|
|||||||
"saved_settings": "सहेजी गई सेटिंग्स",
|
"saved_settings": "सहेजी गई सेटिंग्स",
|
||||||
"say_something": "कुछ कहें",
|
"say_something": "कुछ कहें",
|
||||||
"scaffold_body_error_occurred": "त्रुटि हुई",
|
"scaffold_body_error_occurred": "त्रुटि हुई",
|
||||||
"scan": "स्कैन",
|
|
||||||
"scan_all_libraries": "सभी पुस्तकालयों को स्कैन करें",
|
"scan_all_libraries": "सभी पुस्तकालयों को स्कैन करें",
|
||||||
"scan_library": "स्कैन",
|
"scan_library": "स्कैन",
|
||||||
"scan_settings": "सेटिंग्स स्कैन करें",
|
"scan_settings": "सेटिंग्स स्कैन करें",
|
||||||
"scanning": "स्कैन हो रहा है",
|
|
||||||
"scanning_for_album": "एल्बम के लिए स्कैन किया जा रहा है..।",
|
"scanning_for_album": "एल्बम के लिए स्कैन किया जा रहा है..।",
|
||||||
"search": "खोज",
|
"search": "खोज",
|
||||||
"search_albums": "एल्बम खोजें",
|
"search_albums": "एल्बम खोजें",
|
||||||
@@ -1942,8 +1850,6 @@
|
|||||||
"search_filter_media_type_title": "मीडिया प्रकार चुनें",
|
"search_filter_media_type_title": "मीडिया प्रकार चुनें",
|
||||||
"search_filter_ocr": "OCR द्वारा खोजें",
|
"search_filter_ocr": "OCR द्वारा खोजें",
|
||||||
"search_filter_people_title": "लोगों का चयन करें",
|
"search_filter_people_title": "लोगों का चयन करें",
|
||||||
"search_filter_star_rating": "स्टार रेटिंग",
|
|
||||||
"search_filter_tags_title": "टैग चुनें",
|
|
||||||
"search_for": "निम्न को खोजें",
|
"search_for": "निम्न को खोजें",
|
||||||
"search_for_existing_person": "मौजूदा व्यक्ति को खोजें",
|
"search_for_existing_person": "मौजूदा व्यक्ति को खोजें",
|
||||||
"search_no_more_result": "कोई और परिणाम नहीं",
|
"search_no_more_result": "कोई और परिणाम नहीं",
|
||||||
@@ -1978,29 +1884,23 @@
|
|||||||
"second": "दूसरा",
|
"second": "दूसरा",
|
||||||
"see_all_people": "सभी लोगों को देखें",
|
"see_all_people": "सभी लोगों को देखें",
|
||||||
"select": "चुनना",
|
"select": "चुनना",
|
||||||
"select_album": "एल्बम चुने",
|
|
||||||
"select_album_cover": "एल्बम कवर चुनें",
|
"select_album_cover": "एल्बम कवर चुनें",
|
||||||
"select_albums": "अलबुमस चुनें",
|
|
||||||
"select_all": "सबका चयन करें",
|
"select_all": "सबका चयन करें",
|
||||||
"select_all_duplicates": "सभी डुप्लिकेट का चयन करें",
|
"select_all_duplicates": "सभी डुप्लिकेट का चयन करें",
|
||||||
"select_all_in": "{group} में सभी का चयन करें",
|
"select_all_in": "{group} में सभी का चयन करें",
|
||||||
"select_avatar_color": "अवतार रंग चुनें",
|
"select_avatar_color": "अवतार रंग चुनें",
|
||||||
"select_count": "{count, plural, one {# चुनें} other {# चुनें}}",
|
|
||||||
"select_cutoff_date": "कटऑफ़ तिथि चुनें",
|
|
||||||
"select_face": "चेहरा चुनें",
|
"select_face": "चेहरा चुनें",
|
||||||
"select_featured_photo": "चुनिंदा फ़ोटो चुनें",
|
"select_featured_photo": "चुनिंदा फ़ोटो चुनें",
|
||||||
"select_from_computer": "कंप्यूटर से चयन करें",
|
"select_from_computer": "कंप्यूटर से चयन करें",
|
||||||
"select_keep_all": "सभी रखें का चयन करें",
|
"select_keep_all": "सभी रखें का चयन करें",
|
||||||
"select_library_owner": "लाइब्रेरी स्वामी का चयन करें",
|
"select_library_owner": "लाइब्रेरी स्वामी का चयन करें",
|
||||||
"select_new_face": "नया चेहरा चुनें",
|
"select_new_face": "नया चेहरा चुनें",
|
||||||
"select_people": "लोग चुनें",
|
|
||||||
"select_person": "व्यक्ति चुनें",
|
|
||||||
"select_person_to_tag": "टैग करने के लिए किसी व्यक्ति का चयन करें",
|
"select_person_to_tag": "टैग करने के लिए किसी व्यक्ति का चयन करें",
|
||||||
"select_photos": "फ़ोटो चुनें",
|
"select_photos": "फ़ोटो चुनें",
|
||||||
"select_trash_all": "ट्रैश ऑल का चयन करें",
|
"select_trash_all": "ट्रैश ऑल का चयन करें",
|
||||||
"select_user_for_sharing_page_err_album": "एल्बम बनाने में विफल",
|
"select_user_for_sharing_page_err_album": "एल्बम बनाने में विफल",
|
||||||
"selected": "चयनित",
|
"selected": "चयनित",
|
||||||
"selected_count": "{count, plural, other {# चयनित}}",
|
"selected_count": "{count, plural, other {# selected}}",
|
||||||
"selected_gps_coordinates": "चयनित GPS निर्देशांक",
|
"selected_gps_coordinates": "चयनित GPS निर्देशांक",
|
||||||
"send_message": "मेसेज भेजें",
|
"send_message": "मेसेज भेजें",
|
||||||
"send_welcome_email": "स्वागत ईमेल भेजें",
|
"send_welcome_email": "स्वागत ईमेल भेजें",
|
||||||
@@ -2086,7 +1986,7 @@
|
|||||||
"shared_link_edit_expire_after_option_year": "{count} वर्ष",
|
"shared_link_edit_expire_after_option_year": "{count} वर्ष",
|
||||||
"shared_link_edit_password_hint": "शेयर पासवर्ड दर्ज करें",
|
"shared_link_edit_password_hint": "शेयर पासवर्ड दर्ज करें",
|
||||||
"shared_link_edit_submit_button": "अपडेट लिंक",
|
"shared_link_edit_submit_button": "अपडेट लिंक",
|
||||||
"shared_link_error_server_url_fetch": "सर्वर url प्राप्त नहीं किया जा सका",
|
"shared_link_error_server_url_fetch": "सर्वर URL प्राप्त नहीं किया जा सका",
|
||||||
"shared_link_expires_day": "{count} दिन में इसकी वैधता समाप्त हो जाएगी",
|
"shared_link_expires_day": "{count} दिन में इसकी वैधता समाप्त हो जाएगी",
|
||||||
"shared_link_expires_days": "{count} दिनों में समाप्त हो जाएगा",
|
"shared_link_expires_days": "{count} दिनों में समाप्त हो जाएगा",
|
||||||
"shared_link_expires_hour": "{count} घंटे में समाप्त हो जाएगा",
|
"shared_link_expires_hour": "{count} घंटे में समाप्त हो जाएगा",
|
||||||
@@ -2103,7 +2003,7 @@
|
|||||||
"shared_link_password_description": "इस शेयर किए गए लिंक को एक्सेस करने के लिए पासवर्ड ज़रूरी है",
|
"shared_link_password_description": "इस शेयर किए गए लिंक को एक्सेस करने के लिए पासवर्ड ज़रूरी है",
|
||||||
"shared_links": "साझा किए गए लिंक",
|
"shared_links": "साझा किए गए लिंक",
|
||||||
"shared_links_description": "लिंक के साथ फ़ोटो और वीडियो शेयर करें",
|
"shared_links_description": "लिंक के साथ फ़ोटो और वीडियो शेयर करें",
|
||||||
"shared_photos_and_videos_count": "{assetCount, plural, other {# साझा फ़ोटो और वीडियो}}",
|
"shared_photos_and_videos_count": "{assetCount, plural, other {# shared photos & videos.}}",
|
||||||
"shared_with_me": "मेरे साथ साझा किया गया",
|
"shared_with_me": "मेरे साथ साझा किया गया",
|
||||||
"shared_with_partner": "{partner} के साथ शेयर किया गया",
|
"shared_with_partner": "{partner} के साथ शेयर किया गया",
|
||||||
"sharing": "शेयरिंग",
|
"sharing": "शेयरिंग",
|
||||||
@@ -2130,7 +2030,6 @@
|
|||||||
"show_password": "पासवर्ड दिखाए",
|
"show_password": "पासवर्ड दिखाए",
|
||||||
"show_person_options": "व्यक्ति विकल्प दिखाएँ",
|
"show_person_options": "व्यक्ति विकल्प दिखाएँ",
|
||||||
"show_progress_bar": "प्रगति पट्टी दिखाएँ",
|
"show_progress_bar": "प्रगति पट्टी दिखाएँ",
|
||||||
"show_schema": "स्कीमा दिखाएँ",
|
|
||||||
"show_search_options": "खोज विकल्प दिखाएँ",
|
"show_search_options": "खोज विकल्प दिखाएँ",
|
||||||
"show_shared_links": "साझा लिंक दिखाएँ",
|
"show_shared_links": "साझा लिंक दिखाएँ",
|
||||||
"show_slideshow_transition": "स्लाइड शो ट्रांज़िशन दिखाएँ",
|
"show_slideshow_transition": "स्लाइड शो ट्रांज़िशन दिखाएँ",
|
||||||
@@ -2148,8 +2047,6 @@
|
|||||||
"skip_to_folders": "फ़ोल्डरों पर जाएं",
|
"skip_to_folders": "फ़ोल्डरों पर जाएं",
|
||||||
"skip_to_tags": "टैग पर जाएं",
|
"skip_to_tags": "टैग पर जाएं",
|
||||||
"slideshow": "स्लाइड शो",
|
"slideshow": "स्लाइड शो",
|
||||||
"slideshow_repeat": "स्लाइड शो दोहराएँ",
|
|
||||||
"slideshow_repeat_description": "स्लाइड शो समाप्त होने पर शुरुआत से दोबारा चलाएँ",
|
|
||||||
"slideshow_settings": "स्लाइड शो सेटिंग्स",
|
"slideshow_settings": "स्लाइड शो सेटिंग्स",
|
||||||
"sort_albums_by": "एल्बम को क्रमबद्ध करें..।",
|
"sort_albums_by": "एल्बम को क्रमबद्ध करें..।",
|
||||||
"sort_created": "बनाया गया दिनांक",
|
"sort_created": "बनाया गया दिनांक",
|
||||||
@@ -2189,7 +2086,6 @@
|
|||||||
"support": "सहायता",
|
"support": "सहायता",
|
||||||
"support_and_feedback": "समर्थन और प्रतिक्रिया",
|
"support_and_feedback": "समर्थन और प्रतिक्रिया",
|
||||||
"support_third_party_description": "आपका Immich इंस्टॉलेशन किसी थर्ड-पार्टी ने पैकेज किया था। आपको जो दिक्कतें आ रही हैं, वे उस पैकेज की वजह से हो सकती हैं, इसलिए कृपया नीचे दिए गए लिंक का इस्तेमाल करके सबसे पहले उनके साथ अपनी दिक्कतें बताएं।",
|
"support_third_party_description": "आपका Immich इंस्टॉलेशन किसी थर्ड-पार्टी ने पैकेज किया था। आपको जो दिक्कतें आ रही हैं, वे उस पैकेज की वजह से हो सकती हैं, इसलिए कृपया नीचे दिए गए लिंक का इस्तेमाल करके सबसे पहले उनके साथ अपनी दिक्कतें बताएं।",
|
||||||
"supporter": "समर्थक",
|
|
||||||
"swap_merge_direction": "मर्ज दिशा स्वैप करें",
|
"swap_merge_direction": "मर्ज दिशा स्वैप करें",
|
||||||
"sync": "साथ-साथ करना",
|
"sync": "साथ-साथ करना",
|
||||||
"sync_albums": "एल्बम्स सिंक करें",
|
"sync_albums": "एल्बम्स सिंक करें",
|
||||||
@@ -2227,7 +2123,6 @@
|
|||||||
"theme_setting_theme_subtitle": "ऐप की थीम सेटिंग चुनें",
|
"theme_setting_theme_subtitle": "ऐप की थीम सेटिंग चुनें",
|
||||||
"theme_setting_three_stage_loading_subtitle": "थ्री-स्टेज लोडिंग से लोडिंग परफॉर्मेंस बढ़ सकती है लेकिन इससे नेटवर्क लोड काफी बढ़ जाता है",
|
"theme_setting_three_stage_loading_subtitle": "थ्री-स्टेज लोडिंग से लोडिंग परफॉर्मेंस बढ़ सकती है लेकिन इससे नेटवर्क लोड काफी बढ़ जाता है",
|
||||||
"theme_setting_three_stage_loading_title": "तीन-चरण लोडिंग सक्षम करें",
|
"theme_setting_three_stage_loading_title": "तीन-चरण लोडिंग सक्षम करें",
|
||||||
"then": "फिर",
|
|
||||||
"they_will_be_merged_together": "इन्हें एक साथ मिला दिया जाएगा",
|
"they_will_be_merged_together": "इन्हें एक साथ मिला दिया जाएगा",
|
||||||
"third_party_resources": "तृतीय-पक्ष संसाधन",
|
"third_party_resources": "तृतीय-पक्ष संसाधन",
|
||||||
"time": "समय",
|
"time": "समय",
|
||||||
@@ -2244,7 +2139,6 @@
|
|||||||
"to_select": "चयन करने के लिए",
|
"to_select": "चयन करने के लिए",
|
||||||
"to_trash": "कचरा",
|
"to_trash": "कचरा",
|
||||||
"toggle_settings": "सेटिंग्स टॉगल करें",
|
"toggle_settings": "सेटिंग्स टॉगल करें",
|
||||||
"toggle_theme_description": "थीम टॉगल करें",
|
|
||||||
"total": "कुल",
|
"total": "कुल",
|
||||||
"total_usage": "कुल उपयोग",
|
"total_usage": "कुल उपयोग",
|
||||||
"trash": "कचरा",
|
"trash": "कचरा",
|
||||||
@@ -2262,13 +2156,6 @@
|
|||||||
"trash_page_select_assets_btn": "संपत्तियों को चयन करें",
|
"trash_page_select_assets_btn": "संपत्तियों को चयन करें",
|
||||||
"trash_page_title": "कचरा ({count})",
|
"trash_page_title": "कचरा ({count})",
|
||||||
"trashed_items_will_be_permanently_deleted_after": "ट्रैश किए गए आइटम {days, plural, one {# day} other {# days}} के बाद स्थायी रूप से हटा दिए जाएंगे।",
|
"trashed_items_will_be_permanently_deleted_after": "ट्रैश किए गए आइटम {days, plural, one {# day} other {# days}} के बाद स्थायी रूप से हटा दिए जाएंगे।",
|
||||||
"trigger": "ट्रिगर",
|
|
||||||
"trigger_asset_uploaded": "एसेट अपलोड किया गया",
|
|
||||||
"trigger_asset_uploaded_description": "जब नया एसेट अपलोड किया जाता है, तब ट्रिगर होता है",
|
|
||||||
"trigger_description": "वर्कफ़्लो शुरू करने वाली क्रिया",
|
|
||||||
"trigger_person_recognized": "व्यक्ति पहचाना गया",
|
|
||||||
"trigger_person_recognized_description": "जब किसी व्यक्ति का पता चलता है, तब ट्रिगर होता है",
|
|
||||||
"trigger_type": "ट्रिगर प्रकार",
|
|
||||||
"troubleshoot": "समस्याओं का निवारण",
|
"troubleshoot": "समस्याओं का निवारण",
|
||||||
"type": "प्रकार",
|
"type": "प्रकार",
|
||||||
"unable_to_change_pin_code": "पिन कोड बदलने में असमर्थ",
|
"unable_to_change_pin_code": "पिन कोड बदलने में असमर्थ",
|
||||||
@@ -2276,14 +2163,13 @@
|
|||||||
"unable_to_setup_pin_code": "पिन कोड सेट करने में असमर्थ",
|
"unable_to_setup_pin_code": "पिन कोड सेट करने में असमर्थ",
|
||||||
"unarchive": "संग्रह से निकालें",
|
"unarchive": "संग्रह से निकालें",
|
||||||
"unarchive_action_prompt": "{count} आर्काइव से हटा दिया गया",
|
"unarchive_action_prompt": "{count} आर्काइव से हटा दिया गया",
|
||||||
"unarchived_count": "{count, plural, other {# आर्काइव से हटाए गए}}",
|
"unarchived_count": "{count, plural, other {Unarchived #}}",
|
||||||
"undo": "पूर्ववत",
|
"undo": "पूर्ववत",
|
||||||
"unfavorite": "नापसंद करें",
|
"unfavorite": "नापसंद करें",
|
||||||
"unfavorite_action_prompt": "{count} को पसंदीदा से हटा दिया गया",
|
"unfavorite_action_prompt": "{count} को पसंदीदा से हटा दिया गया",
|
||||||
"unhide_person": "व्यक्ति को उजागर करें",
|
"unhide_person": "व्यक्ति को उजागर करें",
|
||||||
"unknown": "अज्ञात",
|
"unknown": "अज्ञात",
|
||||||
"unknown_country": "अज्ञात देश",
|
"unknown_country": "अज्ञात देश",
|
||||||
"unknown_date": "अज्ञात तिथि",
|
|
||||||
"unknown_year": "अज्ञात वर्ष",
|
"unknown_year": "अज्ञात वर्ष",
|
||||||
"unlimited": "असीमित",
|
"unlimited": "असीमित",
|
||||||
"unlink_motion_video": "मोशन वीडियो को अनलिंक करें",
|
"unlink_motion_video": "मोशन वीडियो को अनलिंक करें",
|
||||||
@@ -2300,9 +2186,7 @@
|
|||||||
"unstack": "स्टैक रद्द करें",
|
"unstack": "स्टैक रद्द करें",
|
||||||
"unstack_action_prompt": "{count} अनस्टैक्ड",
|
"unstack_action_prompt": "{count} अनस्टैक्ड",
|
||||||
"unstacked_assets_count": "अन-स्टैक्ड {count, plural, one {# asset} other {# assets}}",
|
"unstacked_assets_count": "अन-स्टैक्ड {count, plural, one {# asset} other {# assets}}",
|
||||||
"unsupported_field_type": "असमर्थित फ़ील्ड प्रकार",
|
|
||||||
"untagged": "टैग नहीं किए गए",
|
"untagged": "टैग नहीं किए गए",
|
||||||
"untitled_workflow": "बिना शीर्षक का वर्कफ़्लो",
|
|
||||||
"up_next": "अब अगला",
|
"up_next": "अब अगला",
|
||||||
"update_location_action_prompt": "{count} चुने गए एसेट की लोकेशन अपडेट करें:",
|
"update_location_action_prompt": "{count} चुने गए एसेट की लोकेशन अपडेट करें:",
|
||||||
"updated_at": "अपडेट किया गया",
|
"updated_at": "अपडेट किया गया",
|
||||||
@@ -2312,7 +2196,6 @@
|
|||||||
"upload_details": "विवरण अपलोड करें",
|
"upload_details": "विवरण अपलोड करें",
|
||||||
"upload_dialog_info": "क्या आप चुने हुए एसेट का सर्वर पर बैकअप लेना चाहते हैं?",
|
"upload_dialog_info": "क्या आप चुने हुए एसेट का सर्वर पर बैकअप लेना चाहते हैं?",
|
||||||
"upload_dialog_title": "संपत्ति अपलोड करें",
|
"upload_dialog_title": "संपत्ति अपलोड करें",
|
||||||
"upload_error_with_count": "{count, plural, one {# एसेट} other {# एसेट}} अपलोड में समस्या",
|
|
||||||
"upload_errors": "अपलोड {count, plural, one {# error} other {# errors}} के साथ पूरा हुआ, नए अपलोड एसेट देखने के लिए पेज को रिफ्रेश करें।",
|
"upload_errors": "अपलोड {count, plural, one {# error} other {# errors}} के साथ पूरा हुआ, नए अपलोड एसेट देखने के लिए पेज को रिफ्रेश करें।",
|
||||||
"upload_finished": "अपलोड समाप्त",
|
"upload_finished": "अपलोड समाप्त",
|
||||||
"upload_progress": "शेष {remaining, number} - संसाधित {processed, number}/{total, number}",
|
"upload_progress": "शेष {remaining, number} - संसाधित {processed, number}/{total, number}",
|
||||||
@@ -2348,7 +2231,6 @@
|
|||||||
"utilities": "उपयोगिताओं",
|
"utilities": "उपयोगिताओं",
|
||||||
"validate": "मान्य",
|
"validate": "मान्य",
|
||||||
"validate_endpoint_error": "क्रुपया मान्य यूआरएल दर्ज करें",
|
"validate_endpoint_error": "क्रुपया मान्य यूआरएल दर्ज करें",
|
||||||
"validation_error": "मान्यकरण में समस्या",
|
|
||||||
"variables": "चर",
|
"variables": "चर",
|
||||||
"version": "संस्करण",
|
"version": "संस्करण",
|
||||||
"version_announcement_closing": "आपका मित्र, एलेक्स",
|
"version_announcement_closing": "आपका मित्र, एलेक्स",
|
||||||
@@ -2359,13 +2241,11 @@
|
|||||||
"video_hover_setting": "होवर पर वीडियो थंबनेल चलाएं",
|
"video_hover_setting": "होवर पर वीडियो थंबनेल चलाएं",
|
||||||
"video_hover_setting_description": "जब माउस आइटम पर घूम रहा हो तो वीडियो थंबनेल चलाएं।",
|
"video_hover_setting_description": "जब माउस आइटम पर घूम रहा हो तो वीडियो थंबनेल चलाएं।",
|
||||||
"videos": "वीडियो",
|
"videos": "वीडियो",
|
||||||
"videos_count": "{count, plural, one {# वीडियो} other {# वीडियो}}",
|
"videos_count": "{count, plural, one {# Video} other {# Videos}}",
|
||||||
"videos_only": "केवल वीडियो",
|
|
||||||
"view": "देखना",
|
"view": "देखना",
|
||||||
"view_album": "एल्बम देखें",
|
"view_album": "एल्बम देखें",
|
||||||
"view_all": "सभी को देखें",
|
"view_all": "सभी को देखें",
|
||||||
"view_all_users": "सभी उपयोगकर्ताओं को देखें",
|
"view_all_users": "सभी उपयोगकर्ताओं को देखें",
|
||||||
"view_asset_owners": "एसेट के मालिक देखें",
|
|
||||||
"view_details": "विवरण देखें",
|
"view_details": "विवरण देखें",
|
||||||
"view_in_timeline": "टाइमलाइन में देखें",
|
"view_in_timeline": "टाइमलाइन में देखें",
|
||||||
"view_link": "लिंक देखें",
|
"view_link": "लिंक देखें",
|
||||||
@@ -2381,36 +2261,18 @@
|
|||||||
"viewer_stack_use_as_main_asset": "मुख्य संपत्ति के रूप में उपयोग करें",
|
"viewer_stack_use_as_main_asset": "मुख्य संपत्ति के रूप में उपयोग करें",
|
||||||
"viewer_unstack": "स्टैक रद्द करें",
|
"viewer_unstack": "स्टैक रद्द करें",
|
||||||
"visibility_changed": "{count, plural, one {# person} other {# people}} के लिए विज़िबिलिटी बदली गई",
|
"visibility_changed": "{count, plural, one {# person} other {# people}} के लिए विज़िबिलिटी बदली गई",
|
||||||
"visual": "विज़ूअल",
|
|
||||||
"visual_builder": "विज़ूअल बिल्डर",
|
|
||||||
"waiting": "इंतज़ार में",
|
"waiting": "इंतज़ार में",
|
||||||
"waiting_count": "प्रतीक्षा कर रहे हैं: {count}",
|
|
||||||
"warning": "चेतावनी",
|
"warning": "चेतावनी",
|
||||||
"week": "सप्ताह",
|
"week": "सप्ताह",
|
||||||
"welcome": "स्वागत",
|
"welcome": "स्वागत",
|
||||||
"welcome_to_immich": "Immich में आपका स्वागत है",
|
"welcome_to_immich": "Immich में आपका स्वागत है",
|
||||||
"width": "चौड़ाई",
|
|
||||||
"wifi_name": "वाई-फाई का नाम",
|
"wifi_name": "वाई-फाई का नाम",
|
||||||
"workflow_delete_prompt": "क्या आप वाकई इस वर्कफ़्लो को मिटाना चाहते हैं?",
|
|
||||||
"workflow_deleted": "वर्कफ़्लो मिटाया गया",
|
|
||||||
"workflow_description": "वर्कफ़्लो विवरण",
|
|
||||||
"workflow_info": "वर्कफ़्लो जानकारी",
|
|
||||||
"workflow_json": "वर्कफ़्लो JSON",
|
|
||||||
"workflow_json_help": "JSON फ़ॉर्मेट में वर्कफ़्लो कॉन्फ़िगरेशन संपादित करें। बदलाव विज़ुअल बिल्डर में सिंक हो जाएंगे।",
|
|
||||||
"workflow_name": "वर्कफ़्लो नाम",
|
|
||||||
"workflow_navigation_prompt": "क्या आप बिना अपने बदलाव सहेजे यहाँ से बाहर जाना चाहते हैं?",
|
|
||||||
"workflow_summary": "वर्कफ़्लो सारांश",
|
|
||||||
"workflow_update_success": "वर्कफ़्लो सफलतापूर्वक अपडेट किया गया",
|
|
||||||
"workflow_updated": "वर्कफ़्लो अपडेट किया गया",
|
|
||||||
"workflows": "वर्कफ़्लों",
|
|
||||||
"workflows_help_text": "वर्कफ़्लो आपके एसेट के ट्रिगरों और फ़िल्टरों के आधार पर क्रियाओं को स्वचालित करते हैं",
|
|
||||||
"wrong_pin_code": "गलत पिन कोड",
|
"wrong_pin_code": "गलत पिन कोड",
|
||||||
"year": "वर्ष",
|
"year": "वर्ष",
|
||||||
"years_ago": "{years, plural, one {# year} other {# years}} पहले",
|
"years_ago": "{years, plural, one {# year} other {# years}} पहले",
|
||||||
"yes": "हाँ",
|
"yes": "हाँ",
|
||||||
"you_dont_have_any_shared_links": "आपके पास कोई साझा लिंक नहीं है",
|
"you_dont_have_any_shared_links": "आपके पास कोई साझा लिंक नहीं है",
|
||||||
"your_wifi_name": "आपके वाईफाई का नाम",
|
"your_wifi_name": "आपके वाईफाई का नाम",
|
||||||
"zero_to_clear_rating": "एसेट रेटिंग रीसेट करने के लिए 0 दबाएँ",
|
|
||||||
"zoom_image": "छवि ज़ूम करें",
|
"zoom_image": "छवि ज़ूम करें",
|
||||||
"zoom_to_bounds": "सीमा तक ज़ूम करें"
|
"zoom_to_bounds": "सीमा तक ज़ूम करें"
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user