diff --git a/.github/.nvmrc b/.github/.nvmrc index 9e2934aa34..248216ad5b 100644 --- a/.github/.nvmrc +++ b/.github/.nvmrc @@ -1 +1 @@ -24.11.1 +24.12.0 diff --git a/.github/workflows/build-mobile.yml b/.github/workflows/build-mobile.yml index 10dc88088f..239a448bf6 100644 --- a/.github/workflows/build-mobile.yml +++ b/.github/workflows/build-mobile.yml @@ -30,18 +30,6 @@ on: required: true IOS_CERTIFICATE_PASSWORD: required: true - IOS_PROVISIONING_PROFILE: - required: true - IOS_PROVISIONING_PROFILE_SHARE_EXTENSION: - required: true - IOS_PROVISIONING_PROFILE_WIDGET_EXTENSION: - required: true - IOS_DEVELOPMENT_PROVISIONING_PROFILE: - required: true - IOS_DEVELOPMENT_PROVISIONING_PROFILE_SHARE_EXTENSION: - required: true - IOS_DEVELOPMENT_PROVISIONING_PROFILE_WIDGET_EXTENSION: - required: true FASTLANE_TEAM_ID: required: true pull_request: @@ -96,7 +84,7 @@ jobs: app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }} private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: ref: ${{ inputs.ref || github.sha }} persist-credentials: false @@ -115,7 +103,7 @@ jobs: - name: Restore Gradle Cache id: cache-gradle-restore - uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + uses: actions/cache/restore@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: path: | ~/.gradle/caches @@ -165,14 +153,14 @@ jobs: fi - name: Publish Android Artifact - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: name: release-apk-signed path: mobile/build/app/outputs/flutter-apk/*.apk - name: Save Gradle Cache id: cache-gradle-save - uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + uses: actions/cache/save@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 if: github.ref == 'refs/heads/main' with: path: | @@ -194,7 +182,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 with: ref: ${{ inputs.ref || github.sha }} persist-credentials: false @@ -240,35 +228,14 @@ jobs: mkdir -p ~/.appstoreconnect/private_keys echo "$API_KEY_CONTENT" | base64 --decode > ~/.appstoreconnect/private_keys/AuthKey_${API_KEY_ID}.p8 - - name: Import Certificate and Provisioning Profiles + - name: Import Certificate env: 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 }} - 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 }} - ENVIRONMENT: ${{ inputs.environment || 'development' }} working-directory: ./mobile/ios run: | # Decode certificate echo "$IOS_CERTIFICATE_P12" | base64 --decode > certificate.p12 - # Decode provisioning profiles based on environment - if [[ "$ENVIRONMENT" == "development" ]]; then - echo "$IOS_DEVELOPMENT_PROVISIONING_PROFILE" | base64 --decode > profile_dev.mobileprovision - echo "$IOS_DEVELOPMENT_PROVISIONING_PROFILE_SHARE_EXTENSION" | base64 --decode > profile_dev_share.mobileprovision - echo "$IOS_DEVELOPMENT_PROVISIONING_PROFILE_WIDGET_EXTENSION" | base64 --decode > profile_dev_widget.mobileprovision - ls -lh profile_dev*.mobileprovision - else - echo "$IOS_PROVISIONING_PROFILE" | base64 --decode > profile.mobileprovision - echo "$IOS_PROVISIONING_PROFILE_SHARE_EXTENSION" | base64 --decode > profile_share.mobileprovision - echo "$IOS_PROVISIONING_PROFILE_WIDGET_EXTENSION" | base64 --decode > profile_widget.mobileprovision - ls -lh profile*.mobileprovision - fi - - name: Create keychain and import certificate env: KEYCHAIN_PASSWORD: ${{ secrets.IOS_CERTIFICATE_PASSWORD }} @@ -319,7 +286,7 @@ jobs: security delete-keychain build.keychain || true - name: Upload IPA artifact - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: name: ios-release-ipa path: mobile/ios/Runner.ipa diff --git a/.github/workflows/cache-cleanup.yml b/.github/workflows/cache-cleanup.yml index a75770ec49..55f91e7989 100644 --- a/.github/workflows/cache-cleanup.yml +++ b/.github/workflows/cache-cleanup.yml @@ -25,7 +25,7 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Check out code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} diff --git a/.github/workflows/cli.yml b/.github/workflows/cli.yml index 8bf8da30d7..db7ca0f57b 100644 --- a/.github/workflows/cli.yml +++ b/.github/workflows/cli.yml @@ -35,7 +35,7 @@ jobs: app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }} private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} @@ -78,7 +78,7 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} @@ -87,7 +87,7 @@ jobs: uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1 + uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0 - name: Login to GitHub Container Registry uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 diff --git a/.github/workflows/close-duplicates.yml b/.github/workflows/close-duplicates.yml index 24630bbb87..09e9dbb338 100644 --- a/.github/workflows/close-duplicates.yml +++ b/.github/workflows/close-duplicates.yml @@ -35,7 +35,7 @@ jobs: needs: [get_body, should_run] if: ${{ needs.should_run.outputs.should_run == 'true' }} container: - image: ghcr.io/immich-app/mdq:main@sha256:237cdae7783609c96f18037a513d38088713cf4a2e493a3aa136d0c45490749a + image: ghcr.io/immich-app/mdq:main@sha256:ab9f163cd5d5cec42704a26ca2769ecf3f10aa8e7bae847f1d527cdf075946e6 outputs: checked: ${{ steps.get_checkbox.outputs.checked }} steps: diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 20a5e23c0c..71b5968960 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -50,14 +50,14 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout repository - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7 + uses: github/codeql-action/init@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -70,7 +70,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7 + uses: github/codeql-action/autobuild@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 # â„šī¸ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -83,6 +83,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7 + uses: github/codeql-action/analyze@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 with: category: '/language:${{matrix.language}}' diff --git a/.github/workflows/docs-build.yml b/.github/workflows/docs-build.yml index 680cd0318c..91916e4ed2 100644 --- a/.github/workflows/docs-build.yml +++ b/.github/workflows/docs-build.yml @@ -60,10 +60,11 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} + fetch-depth: 0 - name: Setup pnpm uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 @@ -85,7 +86,7 @@ jobs: run: pnpm build - name: Upload build output - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: name: docs-build-output path: docs/build/ diff --git a/.github/workflows/docs-deploy.yml b/.github/workflows/docs-deploy.yml index 3a0e918812..1933b9d572 100644 --- a/.github/workflows/docs-deploy.yml +++ b/.github/workflows/docs-deploy.yml @@ -125,13 +125,13 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} - name: Setup Mise - uses: immich-app/devtools/actions/use-mise@cd24790a7f5f6439ac32cc94f5523cb2de8bfa8c # use-mise-action-v1.1.0 + uses: immich-app/devtools/actions/use-mise@b868e6e7c8cc212beec876330b4059e661ee44bb # use-mise-action-v1.1.1 - name: Load parameters id: parameters diff --git a/.github/workflows/docs-destroy.yml b/.github/workflows/docs-destroy.yml index 643c35b1af..80cc17d32b 100644 --- a/.github/workflows/docs-destroy.yml +++ b/.github/workflows/docs-destroy.yml @@ -23,13 +23,13 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} - name: Setup Mise - uses: immich-app/devtools/actions/use-mise@cd24790a7f5f6439ac32cc94f5523cb2de8bfa8c # use-mise-action-v1.1.0 + uses: immich-app/devtools/actions/use-mise@b868e6e7c8cc212beec876330b4059e661ee44bb # use-mise-action-v1.1.1 - name: Destroy Docs Subdomain env: diff --git a/.github/workflows/fix-format.yml b/.github/workflows/fix-format.yml index f77ca48b41..11a9ef06e4 100644 --- a/.github/workflows/fix-format.yml +++ b/.github/workflows/fix-format.yml @@ -22,7 +22,7 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: 'Checkout' - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: ref: ${{ github.event.pull_request.head.ref }} token: ${{ steps.generate-token.outputs.token }} diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml index 6aada80220..1a4c2b7945 100644 --- a/.github/workflows/prepare-release.yml +++ b/.github/workflows/prepare-release.yml @@ -45,6 +45,7 @@ jobs: needs: [merge_translations] outputs: ref: ${{ steps.push-tag.outputs.commit_long_sha }} + version: ${{ steps.output.outputs.version }} permissions: {} # No job-level permissions are needed because it uses the app-token steps: - name: Generate a token @@ -55,14 +56,14 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: token: ${{ steps.generate-token.outputs.token }} persist-credentials: true ref: main - name: Install uv - uses: astral-sh/setup-uv@1e862dfacbd1d6d858c55d9b792c756523627244 # v7.1.4 + uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6 - name: Setup pnpm uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 @@ -80,13 +81,16 @@ jobs: MOBILE_BUMP: ${{ inputs.mobileBump }} run: misc/release/pump-version.sh -s "${SERVER_BUMP}" -m "${MOBILE_BUMP}" + - id: output + run: echo "version=$IMMICH_VERSION" >> $GITHUB_OUTPUT + - name: Commit and tag id: push-tag uses: EndBug/add-and-commit@a94899bca583c204427a224a7af87c02f9b325d5 # v9.1.4 with: default_author: github_actions - message: 'chore: version ${{ env.IMMICH_VERSION }}' - tag: ${{ env.IMMICH_VERSION }} + message: 'chore: version ${{ steps.output.outputs.version }}' + tag: ${{ steps.output.outputs.version }} push: true build_mobile: @@ -119,7 +123,7 @@ jobs: prepare_release: runs-on: ubuntu-latest - needs: build_mobile + needs: [build_mobile, bump_version] permissions: actions: read # To download the app artifact # No content permissions are needed because it uses the app-token @@ -132,13 +136,13 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: token: ${{ steps.generate-token.outputs.token }} persist-credentials: false - name: Download APK - uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 + uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 with: name: release-apk-signed github-token: ${{ steps.generate-token.outputs.token }} @@ -147,7 +151,7 @@ jobs: uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0 with: draft: true - tag_name: ${{ env.IMMICH_VERSION }} + tag_name: ${{ needs.bump_version.outputs.version }} token: ${{ steps.generate-token.outputs.token }} generate_release_notes: true body_path: misc/release/notes.tmpl diff --git a/.github/workflows/release-pr.yml b/.github/workflows/release-pr.yml index 4a06957203..3ee96c45b7 100644 --- a/.github/workflows/release-pr.yml +++ b/.github/workflows/release-pr.yml @@ -23,14 +23,14 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: token: ${{ steps.generate-token.outputs.token }} persist-credentials: true ref: main - name: Install uv - uses: astral-sh/setup-uv@1e862dfacbd1d6d858c55d9b792c756523627244 # v7.1.4 + uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6 - name: Setup pnpm uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 @@ -159,7 +159,7 @@ jobs: - name: Create PR id: create-pr - uses: peter-evans/create-pull-request@22a9089034f40e5a961c8808d113e2c98fb63676 # v7.0.11 + uses: peter-evans/create-pull-request@98357b18bf14b5342f975ff684046ec3b2a07725 # v8.0.0 with: token: ${{ steps.generate-token.outputs.token }} commit-message: 'chore: release ${{ steps.bump-type.outputs.next }}' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cb64cd37cf..30783f5e9b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -58,7 +58,7 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: token: ${{ steps.generate-token.outputs.token }} persist-credentials: false @@ -74,7 +74,7 @@ jobs: echo "version=$VERSION" >> $GITHUB_OUTPUT - name: Download APK - uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 + uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 with: name: release-apk-signed github-token: ${{ steps.generate-token.outputs.token }} diff --git a/.github/workflows/sdk.yml b/.github/workflows/sdk.yml index 9c70922df1..2446b5ffcd 100644 --- a/.github/workflows/sdk.yml +++ b/.github/workflows/sdk.yml @@ -22,7 +22,7 @@ jobs: app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }} private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} diff --git a/.github/workflows/static_analysis.yml b/.github/workflows/static_analysis.yml index 2b72ceb40a..c0d53388c6 100644 --- a/.github/workflows/static_analysis.yml +++ b/.github/workflows/static_analysis.yml @@ -55,7 +55,7 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c5d196a084..2aed8c6da2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -69,7 +69,7 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} @@ -114,7 +114,7 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} @@ -161,7 +161,7 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} @@ -203,7 +203,7 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} @@ -247,7 +247,7 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} @@ -285,7 +285,7 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} @@ -298,9 +298,9 @@ jobs: cache: 'pnpm' cache-dependency-path: '**/pnpm-lock.yaml' - name: Install dependencies - run: pnpm --filter=immich-web install --frozen-lockfile + run: pnpm --filter=immich-i18n install --frozen-lockfile - name: Format - run: pnpm --filter=immich-web format:i18n + run: pnpm --filter=immich-i18n format:fix - name: Find file changes uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20.0.4 id: verify-changed-files @@ -333,7 +333,7 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} @@ -379,7 +379,7 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false submodules: 'recursive' @@ -418,7 +418,7 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false submodules: 'recursive' @@ -473,7 +473,7 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false submodules: 'recursive' @@ -505,7 +505,7 @@ jobs: run: npx playwright test if: ${{ !cancelled() }} - name: Archive test results - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: success() || failure() with: name: e2e-web-test-results-${{ matrix.runner }} @@ -534,7 +534,7 @@ jobs: app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }} private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} @@ -566,17 +566,14 @@ jobs: app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }} private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} - name: Install uv - uses: astral-sh/setup-uv@1e862dfacbd1d6d858c55d9b792c756523627244 # v7.1.4 - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 - # TODO: add caching when supported (https://github.com/actions/setup-python/pull/818) - # with: - # python-version: 3.11 - # cache: 'uv' + uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6 + with: + python-version: 3.11 - name: Install dependencies run: | uv sync --extra cpu @@ -610,7 +607,7 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} @@ -639,7 +636,7 @@ jobs: app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }} private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} @@ -661,7 +658,7 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} @@ -723,7 +720,7 @@ jobs: private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} - name: Checkout code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false token: ${{ steps.token.outputs.token }} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..7199043658 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,31 @@ +# Contributing to Immich + +We appreciate every contribution, and we're happy about every new contributor. So please feel invited to help make Immich a better product! + +## Getting started + +To get you started quickly we have detailed guides for the dev setup on our [website](https://docs.immich.app/developer/setup). If you prefer, you can also use [Devcontainers](https://docs.immich.app/developer/devcontainers). +There are also additional resources about Immich's architecture, database migrations, the use of OpenAPI, and more in our [developer documentation](https://docs.immich.app/developer/architecture). + +## General + +Please try to keep pull requests as focused as possible. A PR should do exactly one thing and not bleed into other, unrelated areas. The smaller a PR, the fewer changes are likely needed, and the quicker it will likely be merged. For larger/more impactful PRs, please reach out to us first to discuss your plans. The best way to do this is through our [Discord](https://discord.immich.app). We have a dedicated `#contributing` channel there. Additionally, please fill out the entire template when opening a PR. + +## Finding work + +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! + +## Use of generative AI + +We generally discourage PRs entirely generated by an LLM. For any part generated by an LLM, please put extra effort into your self-review. By using generative AI without proper self-review, the time you save ends up being more work we need to put in for proper reviews and code cleanup. Please keep that in mind when submitting code by an LLM. Clearly state the use of LLMs/(generative) AI in your pull request as requested by the template. + +## Feature freezes + +From time to time, we put a feature freeze on parts of the codebase. For us, this means we won't accept most PRs that make changes in that area. Exempted from this are simple bug fixes that require only minor changes. We will close feature PRs that target a feature-frozen area, even if that feature is highly requested and you put a lot of work into it. Please keep that in mind, and if you're ever uncertain if a PR would be accepted, reach out to us first (e.g., in the aforementioned `#contributing` channel). We hate to throw away work. Currently, we have feature freezes on: + +* Sharing/Asset ownership +* (External) libraries + +## Non-code contributions + +If you want to contribute to Immich but you don't feel comfortable programming in our tech stack, there are other ways you can help the team. All our translations are done through [Weblate](https://hosted.weblate.org/projects/immich). These rely entirely on the community; if you speak a language that isn't fully translated yet, submitting translations there is greatly appreciated! If you like helping others, answering Q&A discussions here on GitHub and replying to people on our Discord is also always appreciated. diff --git a/cli/.nvmrc b/cli/.nvmrc index 9e2934aa34..248216ad5b 100644 --- a/cli/.nvmrc +++ b/cli/.nvmrc @@ -1 +1 @@ -24.11.1 +24.12.0 diff --git a/cli/package.json b/cli/package.json index 3c65605330..99c13db08a 100644 --- a/cli/package.json +++ b/cli/package.json @@ -1,6 +1,6 @@ { "name": "@immich/cli", - "version": "2.2.103", + "version": "2.2.105", "description": "Command Line Interface (CLI) for Immich", "type": "module", "exports": "./dist/index.js", @@ -20,7 +20,7 @@ "@types/lodash-es": "^4.17.12", "@types/micromatch": "^4.0.9", "@types/mock-fs": "^4.13.1", - "@types/node": "^24.10.3", + "@types/node": "^24.10.4", "@vitest/coverage-v8": "^3.0.0", "byte-size": "^9.0.0", "cli-progress": "^3.12.0", @@ -36,7 +36,7 @@ "typescript": "^5.3.3", "typescript-eslint": "^8.28.0", "vite": "^7.0.0", - "vite-tsconfig-paths": "^5.0.0", + "vite-tsconfig-paths": "^6.0.0", "vitest": "^3.0.0", "vitest-fetch-mock": "^0.4.0", "yaml": "^2.3.1" @@ -69,6 +69,6 @@ "micromatch": "^4.0.8" }, "volta": { - "node": "24.11.1" + "node": "24.12.0" } } diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml index 4c74d1d640..244fc74dba 100644 --- a/docker/docker-compose.dev.yml +++ b/docker/docker-compose.dev.yml @@ -127,7 +127,7 @@ services: redis: container_name: immich_redis - image: docker.io/valkey/valkey:9@sha256:fb8d272e529ea567b9bf1302245796f21a2672b8368ca3fcb938ac334e613c8f + image: docker.io/valkey/valkey:9@sha256:546304417feac0874c3dd576e0952c6bb8f06bb4093ea0c9ca303c73cf458f63 healthcheck: test: redis-cli ping || exit 1 @@ -146,6 +146,8 @@ services: ports: - 5432:5432 shm_size: 128mb + healthcheck: + disable: false # set IMMICH_TELEMETRY_INCLUDE=all in .env to enable metrics # immich-prometheus: # container_name: immich_prometheus diff --git a/docker/docker-compose.prod.yml b/docker/docker-compose.prod.yml index 21178d8d76..11417a4204 100644 --- a/docker/docker-compose.prod.yml +++ b/docker/docker-compose.prod.yml @@ -56,7 +56,7 @@ services: redis: container_name: immich_redis - image: docker.io/valkey/valkey:9@sha256:fb8d272e529ea567b9bf1302245796f21a2672b8368ca3fcb938ac334e613c8f + image: docker.io/valkey/valkey:9@sha256:546304417feac0874c3dd576e0952c6bb8f06bb4093ea0c9ca303c73cf458f63 healthcheck: test: redis-cli ping || exit 1 restart: always @@ -77,13 +77,15 @@ services: - 5432:5432 shm_size: 128mb restart: always + healthcheck: + disable: false # set IMMICH_TELEMETRY_INCLUDE=all in .env to enable metrics immich-prometheus: container_name: immich_prometheus ports: - 9090:9090 - image: prom/prometheus@sha256:d936808bdea528155c0154a922cd42fd75716b8bb7ba302641350f9f3eaeba09 + image: prom/prometheus@sha256:2b6f734e372c1b4717008f7d0a0152316aedd4d13ae17ef1e3268dbfaf68041b volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml - prometheus-data:/prometheus @@ -95,7 +97,7 @@ services: command: ['./run.sh', '-disable-reporting'] ports: - 3000:3000 - image: grafana/grafana:12.3.0-ubuntu@sha256:cee936306135e1925ab21dffa16f8a411535d16ab086bef2309339a8e74d62df + image: grafana/grafana:12.3.1-ubuntu@sha256:d57f1365197aec34c4d80869d8ca45bb7787c7663904950dab214dfb40c1c2fd volumes: - grafana-data:/var/lib/grafana diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index f5dfb1233f..b8668cc91a 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -49,7 +49,7 @@ services: redis: container_name: immich_redis - image: docker.io/valkey/valkey:9@sha256:fb8d272e529ea567b9bf1302245796f21a2672b8368ca3fcb938ac334e613c8f + image: docker.io/valkey/valkey:9@sha256:546304417feac0874c3dd576e0952c6bb8f06bb4093ea0c9ca303c73cf458f63 healthcheck: test: redis-cli ping || exit 1 restart: always @@ -69,6 +69,8 @@ services: - ${DB_DATA_LOCATION}:/var/lib/postgresql/data shm_size: 128mb restart: always + healthcheck: + disable: false volumes: model-cache: diff --git a/docs/.nvmrc b/docs/.nvmrc index 9e2934aa34..248216ad5b 100644 --- a/docs/.nvmrc +++ b/docs/.nvmrc @@ -1 +1 @@ -24.11.1 +24.12.0 diff --git a/docs/docs/FAQ.mdx b/docs/docs/FAQ.mdx index 9dcfcac48b..2fa8fd12b0 100644 --- a/docs/docs/FAQ.mdx +++ b/docs/docs/FAQ.mdx @@ -22,7 +22,7 @@ For organizations seeking to resell Immich, we have established the following gu - Do not misrepresent your reseller site or services as being officially affiliated with or endorsed by Immich or our development team. -- For small resellers who wish to contribute financially to Immich's development, we recommend directing your customers to purchase licenses directly from us rather than attempting to broker revenue-sharing arrangements. We ask that you refrain from misrepresenting reseller activities as directly supporting our development work. +- For small resellers who wish to contribute financially to Immich's development, we recommend directing your customers to purchase product keys directly from us rather than attempting to broker revenue-sharing arrangements. We ask that you refrain from misrepresenting reseller activities as directly supporting our development work. When in doubt or if you have an edge case scenario, we encourage you to contact us directly via email to discuss the use of our trademark. We can provide clear guidance on what is acceptable and what is not. You can reach out at: questions@immich.app diff --git a/docs/docs/administration/postgres-standalone.md b/docs/docs/administration/postgres-standalone.md index 2b7527623f..4fc354aad7 100644 --- a/docs/docs/administration/postgres-standalone.md +++ b/docs/docs/administration/postgres-standalone.md @@ -22,7 +22,7 @@ Immich is known to work with Postgres versions `>= 14, < 19`. VectorChord is known to work with pgvector versions `>= 0.7, < 0.9`. The Immich server will check the VectorChord version on startup to ensure compatibility, and refuse to start if a compatible version is not found. -The current accepted range for VectorChord is `>= 0.3, < 0.6`. +The current accepted range for VectorChord is `>= 0.3, < 2.0`. ::: ## Specifying the connection URL diff --git a/docs/docs/developer/setup.md b/docs/docs/developer/setup.md index 23c1862c19..fbda3c2983 100644 --- a/docs/docs/developer/setup.md +++ b/docs/docs/developer/setup.md @@ -4,6 +4,10 @@ sidebar_position: 2 # Setup +:::warning +Make sure to read the [`CONTRIBUTING.md`](https://github.com/immich-app/immich/blob/main/CONTRIBUTING.md) before you dive into the code. +::: + :::note If there's a feature you're planning to work on, just give us a heads up in [#contributing](https://discord.com/channels/979116623879368755/1071165397228855327) on [our Discord](https://discord.immich.app) so we can: diff --git a/docs/docs/features/hardware-transcoding.md b/docs/docs/features/hardware-transcoding.md index d28cd97de0..e68f6f6983 100644 --- a/docs/docs/features/hardware-transcoding.md +++ b/docs/docs/features/hardware-transcoding.md @@ -71,6 +71,22 @@ For RKMPP to work: 5. (Optional) Enable hardware decoding for optimal performance. +
+immich.json + +If you use a [configuration file](/install/config-file.md), use the `accel` option to select the hardware (e.g. `qsv` for Intel or `nvenc` for Nvidia). Set `accelDecode` to `true` if you want hardware decoding. + +```json +{ + "ffmpeg": { + "accel": "qsv", + "accelDecode": true + } +} +``` + +
+ #### Single Compose File Some platforms, including Unraid and Portainer, do not support multiple Compose files as of writing. As an alternative, you can "inline" the relevant contents of the [`hwaccel.transcoding.yml`][hw-file] file into the `immich-server` service directly. diff --git a/docs/docs/features/monitoring.md b/docs/docs/features/monitoring.md index f087a3306f..46063fded6 100644 --- a/docs/docs/features/monitoring.md +++ b/docs/docs/features/monitoring.md @@ -112,4 +112,40 @@ You can then make a new panel, specifying Prometheus as the data source for it. -- TODO: add images and more details here +## Structured Logging + +In addition to Prometheus metrics, Immich supports structured JSON logging which is ideal for log aggregation systems like Grafana Loki, ELK Stack, Datadog, Splunk, and others. + +### Configuration + +By default, Immich outputs human-readable console logs. To enable JSON logging, set the `IMMICH_LOG_FORMAT` environment variable: + +```bash +IMMICH_LOG_FORMAT=json +``` + +:::tip +The default is `IMMICH_LOG_FORMAT=console` for human-readable logs with colors during development. For production deployments using log aggregation, use `IMMICH_LOG_FORMAT=json`. +::: + +### JSON Log Format + +When enabled, logs are output in structured JSON format: + +```json +{"level":"log","pid":36,"timestamp":1766533331507,"message":"Initialized websocket server","context":"WebsocketRepository"} +{"level":"warn","pid":48,"timestamp":1766533331629,"message":"Unable to open /build/www/index.html, skipping SSR.","context":"ApiService"} +{"level":"error","pid":36,"timestamp":1766533331690,"message":"Failed to load plugin immich-core:","context":"Error"} +``` + +This format includes: + +- `level`: Log level (log, warn, error, etc.) +- `pid`: Process ID +- `timestamp`: Unix timestamp in milliseconds +- `message`: Log message +- `context`: Service or component that generated the log + +For more information on log formats, see [`IMMICH_LOG_FORMAT`](/install/environment-variables.md#general). + [prom-file]: https://github.com/immich-app/immich/releases/latest/download/prometheus.yml diff --git a/docs/docs/features/sharing.md b/docs/docs/features/sharing.md index c19b4f48e1..a884884bee 100644 --- a/docs/docs/features/sharing.md +++ b/docs/docs/features/sharing.md @@ -33,7 +33,7 @@ You can create a public link to share a group of photos or videos, or an album, The public shared link is generated with a random URL, which acts as as a secret to avoid the link being guessed by unwanted parties, for instance. ``` -https://immich.yourdomain.com/share/JUckRMxlgpo7F9BpyqGk_cZEwDzaU_U5LU5_oNZp1ETIBa9dpQ0b5ghNm_22QVJfn3k +https://my.immich.app/share/JUckRMxlgpo7F9BpyqGk_cZEwDzaU_U5LU5_oNZp1ETIBa9dpQ0b5ghNm_22QVJfn3k ``` ### Creating a public share link diff --git a/docs/docs/install/environment-variables.md b/docs/docs/install/environment-variables.md index 76784b285a..a7494d5415 100644 --- a/docs/docs/install/environment-variables.md +++ b/docs/docs/install/environment-variables.md @@ -34,6 +34,7 @@ These environment variables are used by the `docker-compose.yml` file and do **N | `TZ` | Timezone | \*1 | server | microservices | | `IMMICH_ENV` | Environment (production, development) | `production` | server, machine learning | api, microservices | | `IMMICH_LOG_LEVEL` | Log level (verbose, debug, log, warn, error) | `log` | server, machine learning | api, microservices | +| `IMMICH_LOG_FORMAT` | Log output format (`console`, `json`) | `console` | server | api, microservices | | `IMMICH_MEDIA_LOCATION` | Media location inside the container âš ī¸**You probably shouldn't set this**\*2âš ī¸ | `/data` | server | api, microservices | | `IMMICH_CONFIG_FILE` | Path to config file | | server | api, microservices | | `NO_COLOR` | Set to `true` to disable color-coded log output | `false` | server, machine learning | | @@ -43,6 +44,7 @@ These environment variables are used by the `docker-compose.yml` file and do **N | `IMMICH_PROCESS_INVALID_IMAGES` | When `true`, generate thumbnails for invalid images | | server | microservices | | `IMMICH_TRUSTED_PROXIES` | List of comma-separated IPs set as trusted proxies | | server | api | | `IMMICH_IGNORE_MOUNT_CHECK_ERRORS` | See [System Integrity](/administration/system-integrity) | | server | api, microservices | +| `IMMICH_ALLOW_SETUP` | When `false` disables the `/auth/admin-sign-up` endpoint | `true` | server | api | \*1: `TZ` should be set to a `TZ identifier` from [this list][tz-list]. For example, `TZ="Etc/UTC"`. `TZ` is used by `exiftool` as a fallback in case the timezone cannot be determined from the image metadata. It is also used for logfile timestamps and cron job execution. diff --git a/docs/package.json b/docs/package.json index d37b256a3f..4076d089ce 100644 --- a/docs/package.json +++ b/docs/package.json @@ -57,6 +57,6 @@ "node": ">=20" }, "volta": { - "node": "24.11.1" + "node": "24.12.0" } } diff --git a/docs/static/archived-versions.json b/docs/static/archived-versions.json index 87dc3f3465..a3fd0be914 100644 --- a/docs/static/archived-versions.json +++ b/docs/static/archived-versions.json @@ -1,4 +1,12 @@ [ + { + "label": "v2.4.1", + "url": "https://docs.v2.4.1.archive.immich.app" + }, + { + "label": "v2.4.0", + "url": "https://docs.v2.4.0.archive.immich.app" + }, { "label": "v2.3.1", "url": "https://docs.v2.3.1.archive.immich.app" diff --git a/e2e-auth-server/Dockerfile b/e2e-auth-server/Dockerfile new file mode 100644 index 0000000000..aa7527c483 --- /dev/null +++ b/e2e-auth-server/Dockerfile @@ -0,0 +1,6 @@ +FROM node:24.1.0-alpine3.20@sha256:8fe019e0d57dbdce5f5c27c0b63d2775cf34b00e3755a7dea969802d7e0c2b25 +RUN corepack enable +ADD package.json *.ts ./ +RUN pnpm install +EXPOSE 2286 +CMD ["pnpm", "run", "start"] diff --git a/e2e/src/setup/auth-server.ts b/e2e-auth-server/auth-server.ts similarity index 96% rename from e2e/src/setup/auth-server.ts rename to e2e-auth-server/auth-server.ts index 489bda2ee4..a190ecd023 100644 --- a/e2e/src/setup/auth-server.ts +++ b/e2e-auth-server/auth-server.ts @@ -125,7 +125,7 @@ const setup = async () => { ], }); - const onStart = () => console.log(`[auth-server] http://${host}:${port}/.well-known/openid-configuration`); + const onStart = () => console.log(`[e2e-auth-server] http://${host}:${port}/.well-known/openid-configuration`); const app = oidc.listen(port, host, onStart); return () => app.close(); }; diff --git a/e2e-auth-server/package.json b/e2e-auth-server/package.json new file mode 100644 index 0000000000..73ede1b7c4 --- /dev/null +++ b/e2e-auth-server/package.json @@ -0,0 +1,15 @@ +{ + "name": "@immich/e2e-auth-server", + "version": "0.1.0", + "type": "module", + "main": "auth-server.ts", + "scripts": { + "start": "tsx startup.ts" + }, + "devDependencies": { + "jose": "^5.6.3", + "@types/oidc-provider": "^9.0.0", + "oidc-provider": "^9.0.0", + "tsx": "^4.20.6" + } +} diff --git a/e2e-auth-server/startup.ts b/e2e-auth-server/startup.ts new file mode 100644 index 0000000000..442cf6dfc2 --- /dev/null +++ b/e2e-auth-server/startup.ts @@ -0,0 +1,8 @@ +import setup from './auth-server' + +const teardown = await setup() +process.on('exit', () => { + teardown() + console.log('[e2e-auth-server] stopped') + process.exit(0) +}) diff --git a/e2e/.nvmrc b/e2e/.nvmrc index 9e2934aa34..248216ad5b 100644 --- a/e2e/.nvmrc +++ b/e2e/.nvmrc @@ -1 +1 @@ -24.11.1 +24.12.0 diff --git a/e2e/docker-compose.yml b/e2e/docker-compose.yml index 867a367d54..a33cb6573c 100644 --- a/e2e/docker-compose.yml +++ b/e2e/docker-compose.yml @@ -1,6 +1,12 @@ name: immich-e2e services: + e2e-auth-server: + build: + context: ../e2e-auth-server + ports: + - 2286:2286 + immich-server: container_name: immich-e2e-server image: immich-server:latest @@ -27,8 +33,6 @@ services: - IMMICH_IGNORE_MOUNT_CHECK_ERRORS=true volumes: - ./test-assets:/test-assets - extra_hosts: - - 'auth-server:host-gateway' depends_on: redis: condition: service_started diff --git a/e2e/package.json b/e2e/package.json index 07d02f0cbc..c42bf6eddb 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -1,6 +1,6 @@ { "name": "immich-e2e", - "version": "2.3.1", + "version": "2.4.1", "description": "", "main": "index.js", "type": "module", @@ -22,12 +22,12 @@ "@eslint/js": "^9.8.0", "@faker-js/faker": "^10.1.0", "@immich/cli": "file:../cli", + "@immich/e2e-auth-server": "file:../e2e-auth-server", "@immich/sdk": "file:../open-api/typescript-sdk", "@playwright/test": "^1.44.1", "@socket.io/component-emitter": "^3.1.2", "@types/luxon": "^3.4.2", - "@types/node": "^24.10.3", - "@types/oidc-provider": "^9.0.0", + "@types/node": "^24.10.4", "@types/pg": "^8.15.1", "@types/pngjs": "^6.0.4", "@types/supertest": "^6.0.2", @@ -36,11 +36,9 @@ "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-unicorn": "^62.0.0", - "exiftool-vendored": "^34.0.0", + "exiftool-vendored": "^34.3.0", "globals": "^16.0.0", - "jose": "^5.6.3", "luxon": "^3.4.4", - "oidc-provider": "^9.0.0", "pg": "^8.11.3", "pngjs": "^7.0.0", "prettier": "^3.7.4", @@ -54,6 +52,6 @@ "vitest": "^3.0.0" }, "volta": { - "node": "24.11.1" + "node": "24.12.0" } } diff --git a/e2e/src/api/specs/oauth.e2e-spec.ts b/e2e/src/api/specs/oauth.e2e-spec.ts index 58fc43a2d5..cbd68c003a 100644 --- a/e2e/src/api/specs/oauth.e2e-spec.ts +++ b/e2e/src/api/specs/oauth.e2e-spec.ts @@ -1,3 +1,4 @@ +import { OAuthClient, OAuthUser } from '@immich/e2e-auth-server'; import { LoginResponseDto, SystemConfigOAuthDto, @@ -8,13 +9,12 @@ import { } from '@immich/sdk'; import { createHash, randomBytes } from 'node:crypto'; import { errorDto } from 'src/responses'; -import { OAuthClient, OAuthUser } from 'src/setup/auth-server'; import { app, asBearerAuth, baseUrl, utils } from 'src/utils'; import request from 'supertest'; import { beforeAll, describe, expect, it } from 'vitest'; const authServer = { - internal: 'http://auth-server:2286', + internal: 'http://e2e-auth-server:2286', external: 'http://127.0.0.1:2286', }; diff --git a/e2e/src/api/specs/shared-link.e2e-spec.ts b/e2e/src/api/specs/shared-link.e2e-spec.ts index f25a54786a..8c15a14da5 100644 --- a/e2e/src/api/specs/shared-link.e2e-spec.ts +++ b/e2e/src/api/specs/shared-link.e2e-spec.ts @@ -20,7 +20,6 @@ describe('/shared-links', () => { let user1: LoginResponseDto; let user2: LoginResponseDto; let album: AlbumResponseDto; - let metadataAlbum: AlbumResponseDto; let deletedAlbum: AlbumResponseDto; let linkWithDeletedAlbum: SharedLinkResponseDto; let linkWithPassword: SharedLinkResponseDto; @@ -41,18 +40,9 @@ describe('/shared-links', () => { [asset1, asset2] = await Promise.all([utils.createAsset(user1.accessToken), utils.createAsset(user1.accessToken)]); - [album, deletedAlbum, metadataAlbum] = await Promise.all([ + [album, deletedAlbum] = await Promise.all([ createAlbum({ createAlbumDto: { albumName: 'album' } }, { headers: asBearerAuth(user1.accessToken) }), createAlbum({ createAlbumDto: { albumName: 'deleted album' } }, { headers: asBearerAuth(user2.accessToken) }), - createAlbum( - { - createAlbumDto: { - albumName: 'metadata album', - assetIds: [asset1.id], - }, - }, - { headers: asBearerAuth(user1.accessToken) }, - ), ]); [linkWithDeletedAlbum, linkWithAlbum, linkWithAssets, linkWithPassword, linkWithMetadata, linkWithoutMetadata] = @@ -75,14 +65,14 @@ describe('/shared-links', () => { password: 'foo', }), utils.createSharedLink(user1.accessToken, { - type: SharedLinkType.Album, - albumId: metadataAlbum.id, + type: SharedLinkType.Individual, + assetIds: [asset1.id], showMetadata: true, - slug: 'metadata-album', + slug: 'metadata-slug', }), utils.createSharedLink(user1.accessToken, { - type: SharedLinkType.Album, - albumId: metadataAlbum.id, + type: SharedLinkType.Individual, + assetIds: [asset1.id], showMetadata: false, }), ]); @@ -95,9 +85,7 @@ describe('/shared-links', () => { const resp = await request(shareUrl).get(`/${linkWithMetadata.key}`); expect(resp.status).toBe(200); expect(resp.header['content-type']).toContain('text/html'); - expect(resp.text).toContain( - ``, - ); + expect(resp.text).toContain(``); }); it('should have correct asset count in meta tag for empty album', async () => { @@ -144,9 +132,7 @@ describe('/shared-links', () => { const resp = await request(baseUrl).get(`/s/${linkWithMetadata.slug}`); expect(resp.status).toBe(200); expect(resp.header['content-type']).toContain('text/html'); - expect(resp.text).toContain( - ``, - ); + expect(resp.text).toContain(``); }); }); @@ -271,12 +257,12 @@ describe('/shared-links', () => { ); }); - it('should return metadata for album shared link', async () => { + it('should return metadata for individual shared link', async () => { const { status, body } = await request(app).get('/shared-links/me').query({ key: linkWithMetadata.key }); expect(status).toBe(200); - expect(body.assets).toHaveLength(0); - expect(body.album).toBeDefined(); + expect(body.assets).toHaveLength(1); + expect(body.album).not.toBeDefined(); }); it('should not return metadata for album shared link without metadata', async () => { @@ -284,7 +270,7 @@ describe('/shared-links', () => { expect(status).toBe(200); expect(body.assets).toHaveLength(1); - expect(body.album).toBeDefined(); + expect(body.album).not.toBeDefined(); const asset = body.assets[0]; expect(asset).not.toHaveProperty('exifInfo'); diff --git a/e2e/src/generators.ts b/e2e/src/generators.ts index c87427ceab..5e4895d708 100644 --- a/e2e/src/generators.ts +++ b/e2e/src/generators.ts @@ -26,6 +26,5 @@ export const makeRandomImage = () => { if (!value) { throw new Error('Ran out of random asset data'); } - return value; }; diff --git a/e2e/src/mock-network/timeline-network.ts b/e2e/src/mock-network/timeline-network.ts index 59bce71dd8..8780409657 100644 --- a/e2e/src/mock-network/timeline-network.ts +++ b/e2e/src/mock-network/timeline-network.ts @@ -1,3 +1,4 @@ +import { AssetResponseDto } from '@immich/sdk'; import { BrowserContext, Page, Request, Route } from '@playwright/test'; import { basename } from 'node:path'; import { @@ -63,15 +64,33 @@ export const setupTimelineMockApiRoutes = async ( }); await context.route('**/api/assets/*', async (route, request) => { - const url = new URL(request.url()); - const pathname = url.pathname; - const assetId = basename(pathname); - const asset = getAsset(timelineRestData, assetId); - return route.fulfill({ - status: 200, - contentType: 'application/json', - json: asset, - }); + if (request.method() === 'GET') { + const url = new URL(request.url()); + const pathname = url.pathname; + const assetId = basename(pathname); + let asset = getAsset(timelineRestData, assetId); + if (changes.assetDeletions.includes(asset!.id)) { + asset = { + ...asset, + isTrashed: true, + } as AssetResponseDto; + } + return route.fulfill({ + status: 200, + contentType: 'application/json', + json: asset, + }); + } + await route.fallback(); + }); + + await context.route('**/api/assets', async (route, request) => { + if (request.method() === 'DELETE') { + return route.fulfill({ + status: 204, + }); + } + await route.fallback(); }); await context.route('**/api/assets/*/ocr', async (route) => { @@ -117,17 +136,28 @@ export const setupTimelineMockApiRoutes = async ( }); await context.route('**/api/albums/**', async (route, request) => { - const pattern = /\/api\/albums\/(?[^/?]+)/; - const match = request.url().match(pattern); - if (!match) { - return route.continue(); + const albumsMatch = request.url().match(/\/api\/albums\/(?[^/?]+)/); + if (albumsMatch) { + const album = getAlbum(timelineRestData, testContext.adminId, albumsMatch.groups?.albumId, changes); + return route.fulfill({ + status: 200, + contentType: 'application/json', + json: album, + }); } - const album = getAlbum(timelineRestData, testContext.adminId, match.groups?.albumId, changes); - return route.fulfill({ - status: 200, - contentType: 'application/json', - json: album, - }); + return route.fallback(); + }); + + await context.route('**/api/albums**', async (route, request) => { + const allAlbums = request.url().match(/\/api\/albums\?assetId=(?[^&]+)/); + if (allAlbums) { + return route.fulfill({ + status: 200, + contentType: 'application/json', + json: [], + }); + } + return route.fallback(); }); }; diff --git a/e2e/src/web/specs/asset-viewer/asset-viewer.parallel-e2e-spec.ts b/e2e/src/web/specs/asset-viewer/asset-viewer.parallel-e2e-spec.ts new file mode 100644 index 0000000000..eaf9d0d073 --- /dev/null +++ b/e2e/src/web/specs/asset-viewer/asset-viewer.parallel-e2e-spec.ts @@ -0,0 +1,156 @@ +import { faker } from '@faker-js/faker'; +import { test } from '@playwright/test'; +import { + Changes, + createDefaultTimelineConfig, + generateTimelineData, + SeededRandom, + selectRandom, + TimelineAssetConfig, + TimelineData, +} from 'src/generators/timeline'; +import { setupBaseMockApiRoutes } from 'src/mock-network/base-network'; +import { setupTimelineMockApiRoutes, TimelineTestContext } from 'src/mock-network/timeline-network'; +import { utils } from 'src/utils'; +import { assetViewerUtils, cancelAllPollers } from 'src/web/specs/timeline/utils'; + +test.describe.configure({ mode: 'parallel' }); +test.describe('asset-viewer', () => { + const rng = new SeededRandom(529); + let adminUserId: string; + let timelineRestData: TimelineData; + const assets: TimelineAssetConfig[] = []; + const yearMonths: string[] = []; + const testContext = new TimelineTestContext(); + const changes: Changes = { + albumAdditions: [], + assetDeletions: [], + assetArchivals: [], + assetFavorites: [], + }; + + test.beforeAll(async () => { + utils.initSdk(); + adminUserId = faker.string.uuid(); + testContext.adminId = adminUserId; + timelineRestData = generateTimelineData({ ...createDefaultTimelineConfig(), ownerId: adminUserId }); + for (const timeBucket of timelineRestData.buckets.values()) { + assets.push(...timeBucket); + } + for (const yearMonth of timelineRestData.buckets.keys()) { + const [year, month] = yearMonth.split('-'); + yearMonths.push(`${year}-${Number(month)}`); + } + }); + + test.beforeEach(async ({ context }) => { + await setupBaseMockApiRoutes(context, adminUserId); + await setupTimelineMockApiRoutes(context, timelineRestData, changes, testContext); + }); + + test.afterEach(() => { + cancelAllPollers(); + testContext.slowBucket = false; + changes.albumAdditions = []; + changes.assetDeletions = []; + changes.assetArchivals = []; + changes.assetFavorites = []; + }); + + test.describe('/photos/:id', () => { + test('Delete photo advances to next', async ({ page }) => { + const asset = selectRandom(assets, rng); + await page.goto(`/photos/${asset.id}`); + await assetViewerUtils.waitForViewerLoad(page, asset); + await page.getByLabel('Delete').click(); + const index = assets.indexOf(asset); + await assetViewerUtils.waitForViewerLoad(page, assets[index + 1]); + }); + test('Delete photo advances to next (2x)', async ({ page }) => { + const asset = selectRandom(assets, rng); + await page.goto(`/photos/${asset.id}`); + await assetViewerUtils.waitForViewerLoad(page, asset); + await page.getByLabel('Delete').click(); + const index = assets.indexOf(asset); + await assetViewerUtils.waitForViewerLoad(page, assets[index + 1]); + await page.getByLabel('Delete').click(); + await assetViewerUtils.waitForViewerLoad(page, assets[index + 2]); + }); + test('Delete last photo advances to prev', async ({ page }) => { + const asset = assets.at(-1)!; + await page.goto(`/photos/${asset.id}`); + await assetViewerUtils.waitForViewerLoad(page, asset); + await page.getByLabel('Delete').click(); + const index = assets.indexOf(asset); + await assetViewerUtils.waitForViewerLoad(page, assets[index - 1]); + }); + test('Delete last photo advances to prev (2x)', async ({ page }) => { + const asset = assets.at(-1)!; + await page.goto(`/photos/${asset.id}`); + await assetViewerUtils.waitForViewerLoad(page, asset); + await page.getByLabel('Delete').click(); + const index = assets.indexOf(asset); + await assetViewerUtils.waitForViewerLoad(page, assets[index - 1]); + await page.getByLabel('Delete').click(); + await assetViewerUtils.waitForViewerLoad(page, assets[index - 2]); + }); + }); + test.describe('/trash/photos/:id', () => { + test('Delete trashed photo advances to next', async ({ page }) => { + const asset = selectRandom(assets, rng); + const index = assets.indexOf(asset); + const deletedAssets = assets.slice(index - 10, index + 10).map((asset) => asset.id); + changes.assetDeletions.push(...deletedAssets); + await page.goto(`/trash/photos/${asset.id}`); + await assetViewerUtils.waitForViewerLoad(page, asset); + await page.getByLabel('Delete').click(); + // confirm dialog + await page.getByRole('button').getByText('Delete').click(); + await assetViewerUtils.waitForViewerLoad(page, assets[index + 1]); + }); + test('Delete trashed photo advances to next 2x', async ({ page }) => { + const asset = selectRandom(assets, rng); + const index = assets.indexOf(asset); + const deletedAssets = assets.slice(index - 10, index + 10).map((asset) => asset.id); + changes.assetDeletions.push(...deletedAssets); + await page.goto(`/trash/photos/${asset.id}`); + await assetViewerUtils.waitForViewerLoad(page, asset); + await page.getByLabel('Delete').click(); + // confirm dialog + await page.getByRole('button').getByText('Delete').click(); + await assetViewerUtils.waitForViewerLoad(page, assets[index + 1]); + await page.getByLabel('Delete').click(); + // confirm dialog + await page.getByRole('button').getByText('Delete').click(); + await assetViewerUtils.waitForViewerLoad(page, assets[index + 2]); + }); + test('Delete trashed photo advances to prev', async ({ page }) => { + const asset = selectRandom(assets, rng); + const index = assets.indexOf(asset); + const deletedAssets = assets.slice(index - 10, index + 10).map((asset) => asset.id); + changes.assetDeletions.push(...deletedAssets); + await page.goto(`/trash/photos/${assets[index + 9].id}`); + await assetViewerUtils.waitForViewerLoad(page, assets[index + 9]); + await page.getByLabel('Delete').click(); + // confirm dialog + await page.getByRole('button').getByText('Delete').click(); + await assetViewerUtils.waitForViewerLoad(page, assets[index + 8]); + }); + test('Delete trashed photo advances to prev 2x', async ({ page }) => { + const asset = selectRandom(assets, rng); + const index = assets.indexOf(asset); + const deletedAssets = assets.slice(index - 10, index + 10).map((asset) => asset.id); + changes.assetDeletions.push(...deletedAssets); + await page.goto(`/trash/photos/${assets[index + 9].id}`); + await assetViewerUtils.waitForViewerLoad(page, assets[index + 9]); + await page.getByLabel('Delete').click(); + // confirm dialog + await page.getByRole('button').getByText('Delete').click(); + await assetViewerUtils.waitForViewerLoad(page, assets[index + 8]); + await page.getByLabel('Delete').click(); + // confirm dialog + await page.getByRole('button').getByText('Delete').click(); + await assetViewerUtils.waitForViewerLoad(page, assets[index + 7]); + }); + }); +}); diff --git a/e2e/src/web/specs/timeline/timeline.parallel-e2e-spec.ts b/e2e/src/web/specs/timeline/timeline.parallel-e2e-spec.ts index 6314688abb..5faf8380d1 100644 --- a/e2e/src/web/specs/timeline/timeline.parallel-e2e-spec.ts +++ b/e2e/src/web/specs/timeline/timeline.parallel-e2e-spec.ts @@ -463,7 +463,7 @@ test.describe('Timeline', () => { }); changes.albumAdditions.push(...requestJson.ids); }); - await page.getByText('Done').click(); + await page.getByText('Add assets').click(); await expect(put).resolves.toEqual({ ids: [ 'c077ea7b-cfa1-45e4-8554-f86c00ee5658', diff --git a/e2e/vitest.config.ts b/e2e/vitest.config.ts index 9c80f25ace..48433eb830 100644 --- a/e2e/vitest.config.ts +++ b/e2e/vitest.config.ts @@ -1,7 +1,7 @@ import { defineConfig } from 'vitest/config'; // skip `docker compose up` if `make e2e` was already run -const globalSetup: string[] = ['src/setup/auth-server.ts']; +const globalSetup: string[] = []; try { await fetch('http://127.0.0.1:2285/api/server-info/ping'); } catch { diff --git a/i18n/.prettierrc b/i18n/.prettierrc new file mode 100644 index 0000000000..30581eb7d1 --- /dev/null +++ b/i18n/.prettierrc @@ -0,0 +1,5 @@ +{ + "jsonRecursiveSort": true, + "jsonSortOrder": "{\"/.*/\": \"lexical\"}", + "plugins": ["prettier-plugin-sort-json"] +} diff --git a/i18n/af.json b/i18n/af.json index 9d61e72c04..9e2bad48ab 100644 --- a/i18n/af.json +++ b/i18n/af.json @@ -68,7 +68,6 @@ "disable_login": "Deaktiveer aanmelding", "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 jy lÃĒers en vouers ignoreer wanneer jy jou biblioteek skandeer. Dit is nuttig as jy vouers het wat lÃĒers bevat wat jy nie wil invoer nie, soos RAW-lÃĒers.", - "external_library_management": "Eksterne Biblioteekbestuur", "face_detection": "Gesig herkenning", "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 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.", @@ -97,7 +96,6 @@ "job_not_concurrency_safe": "Hierdie taak kan nie gelyktydig uitgevoer word nie.", "job_settings": "Agtergrondtaakinstellings", "job_settings_description": "Bestuur werkgelyktydigheid", - "job_status": "Werkstatus", "library_created": "Biblioteek geskep: {library}", "library_deleted": "Biblioteek verwyder", "library_scanning": "Periodieke Soek", diff --git a/i18n/ar.json b/i18n/ar.json index 933ba67871..9ec02a31e3 100644 --- a/i18n/ar.json +++ b/i18n/ar.json @@ -1,5 +1,5 @@ { - "about": "Ø­ŲŽŲˆŲ’Ų„", + "about": "Ø­ŲˆŲ„", "account": "Ø­ØŗØ§Ø¨", "account_settings": "ØĨؚداداØĒ Ø§Ų„Ø­ØŗØ§Ø¨", "acknowledge": "ØŖŲØ¯ØąŲƒ Ø°Ų„Ųƒ", @@ -31,6 +31,7 @@ "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": "ØĨØļØ§ŲØŠ ØąØ§Ø¨Øˇ", @@ -66,6 +67,7 @@ "confirm_reprocess_all_faces": "Ų‡Ų„ ØŖŲ†ØĒ Ų…ØĒØŖŲƒØ¯ ØŖŲ†Ųƒ ØĒØąŲŠØ¯ ØĨؚاد؊ Ų…ØšØ§Ų„ØŦØŠ ØŦŲ…ŲŠØš Ø§Ų„ŲˆØŦŲˆŲ‡ØŸ ØŗŲŠØŽŲ„ŲŠ Ų‡Ø°Ø§ ŲƒŲ„ Ø§Ų„ØŖØ´ØŽØ§Øĩ Ø§Ų„Ø°ŲŠŲ† ØŗŲŽŲ…ŲŠØĒŲŽŲ‡Ų….", "confirm_user_password_reset": "Ų‡Ų„ ØŖŲ†ØĒ Ų…ØĒØŖŲƒØ¯ ØŖŲ†Ųƒ ØĒØąŲŠØ¯ ØĨؚاد؊ ØĒØšŲŠŲŠŲ† ŲƒŲ„Ų…ØŠ Ų…ØąŲˆØą {user}؟", "confirm_user_pin_code_reset": "Ų‡Ų„ Ø§Ų†ØĒ Ų…ØĒØ§ŲƒØ¯ Ų…Ų† اؚاد؊ ØļØ¨Øˇ ØąŲ…Ø˛ PIN Ø§Ų„ØŽØ§Øĩ ب {user}؟", + "copy_config_to_clipboard_description": "Ø§Ų†ØŗØŽ اؚداداØĒ Ø§Ų„Ų†Ø¸Ø§Ų… Ø§Ų„Ø­Ø§Ų„ŲŠØŠ بØĒŲ†ØŗŲŠŲ‚ JSON Ø§Ų„Ų‰ Ø§Ų„Ø­Ø§ŲØ¸ØŠ", "create_job": "ØĨŲ†Ø´Ø§ØĄ ŲˆØ¸ŲŠŲØŠ", "cron_expression": "ØĒØšØ¨ŲŠØą Cron", "cron_expression_description": "اØļØ¨Øˇ Ø§Ų„ŲØ§ØĩŲ„ Ø§Ų„Ø˛Ų…Ų†ŲŠ Ų„Ų„ŲØ­Øĩ Ø¨Ø§ØŗØĒØŽØ¯Ø§Ų… ØĒŲ†ØŗŲŠŲ‚ cron. Ų„Ų…Ø˛ŲŠØ¯ Ų…Ų† Ø§Ų„Ų…ØšŲ„ŲˆŲ…Ø§ØĒ ŲŠŲØąØŦŲ‰ Ø§Ų„ØąØŦŲˆØš ØĨŲ„Ų‰ Crontab Guru ØšŲ„Ų‰ ØŗØ¨ŲŠŲ„ Ø§Ų„Ų…ØĢØ§Ų„", @@ -73,7 +75,8 @@ "disable_login": "ØĒØšØˇŲŠŲ„ ØĒØŗØŦŲŠŲ„ Ø§Ų„Ø¯ØŽŲˆŲ„", "duplicate_detection_job_description": "Ø¨Ø¯ØĄ Ø§Ų„ØĒØšŲ„Ų… Ø§Ų„ØĸŲ„ŲŠ ØšŲ„Ų‰ Ø§Ų„Ų…Ø­ØĒŲˆŲ‰ Ų„Ų„ØšØĢŲˆØą ØšŲ„Ų‰ Ø§Ų„ØĩŲˆØą Ø§Ų„Ų…ØĒØ´Ø§Ø¨Ų‡ØŠ. ŲŠØšØĒŲ…Ø¯ ØšŲ„Ų‰ Ø§Ų„Ø¨Ø­ØĢ Ø§Ų„Ø°ŲƒŲŠ", "exclusion_pattern_description": "ØĒØĒŲŠØ­ Ų„Ųƒ ØŖŲ†Ų…Ø§Øˇ Ø§Ų„Ø§ØŗØĒبؚاد ØĒØŦØ§Ų‡Ų„ Ø§Ų„Ų…Ų„ŲØ§ØĒ ŲˆØ§Ų„Ų…ØŦŲ„Ø¯Ø§ØĒ ØšŲ†Ø¯ ŲØ­Øĩ Ų…ŲƒØĒبØĒ؃. ŲŠØšØ¯ Ų‡Ø°Ø§ Ų…ŲŲŠØ¯Ų‹Ø§ ØĨذا ŲƒØ§Ų† Ų„Ø¯ŲŠŲƒ Ų…ØŦŲ„Ø¯Ø§ØĒ ØĒØ­ØĒ؈؊ ØšŲ„Ų‰ Ų…Ų„ŲØ§ØĒ Ų„Ø§ ØĒØąŲŠØ¯ Ø§ØŗØĒŲŠØąØ§Ø¯Ų‡Ø§ØŒ Ų…ØĢŲ„ Ų…Ų„ŲØ§ØĒ RAW.", - "external_library_management": "ØĨØ¯Ø§ØąØŠ Ø§Ų„Ų…ŲƒØĒب؊ Ø§Ų„ØŽØ§ØąØŦŲŠØŠ", + "export_config_as_json_description": "ØĒØ­Ų…ŲŠŲ„ اؚداداØĒ Ø§Ų„Ų†Ø¸Ø§Ų… Ø§Ų„Ø­Ø§Ų„ŲŠØŠ ŲƒŲ…Ų„Ų بØĩ؊ØēØŠ JSON", + "external_libraries_page_description": "Ų…Ø´ØąŲ ØĩŲØ­ØŠ Ų…ŲƒØĒب؊ ØŽØ§ØąØŦŲŠØŠ", "face_detection": "ØĨâ€ŲƒØĒØ´Ø§Ų Ø§Ų„ŲˆØŦŲˆŲ‡", "face_detection_description": "Ø§ŲƒØĒØ´Ų Ø§Ų„ŲˆØŦŲˆŲ‡ ؁؊ Ø§Ų„ØŖØĩŲˆŲ„ Ø¨Ø§ØŗØĒØŽØ¯Ø§Ų… Ø§Ų„ØĒØšŲ„Ų… Ø§Ų„ØĸŲ„ŲŠ. Ø¨Ø§Ų„Ų†ØŗØ¨ØŠ Ų„Ų…Ų‚Ø§ØˇØš Ø§Ų„ŲŲŠØ¯ŲŠŲˆØŒ ؊ØĒŲ… اؚØĒØ¨Ø§Øą Ø§Ų„ØĩŲˆØąØŠ Ø§Ų„Ų…ØĩØēØąØŠ ŲŲ‚Øˇ. \"ØĒØ­Ø¯ŲŠØĢ\" (ØĨؚاد؊) Ų…ØšØ§Ų„ØŦØŠ ØŦŲ…ŲŠØš Ø§Ų„ØŖØĩŲˆŲ„. \"ØĨؚاد؊ ØĒØšŲŠŲŠŲ†\" ØĒŲ…ØŗØ­ ØŖŲŠØļŲ‹Ø§ ØŦŲ…ŲŠØš Ø¨ŲŠØ§Ų†Ø§ØĒ Ø§Ų„ŲˆØŦŲˆŲ‡ Ø§Ų„Ø­Ø§Ų„ŲŠØŠ. \"Ų…ŲŲ‚ŲˆØ¯\" ؊ØļØš Ø§Ų„ØŖØĩŲˆŲ„ Ø§Ų„ØĒ؊ Ų„Ų… ØĒØĒŲ… Ų…ØšØ§Ų„ØŦØĒŲ‡Ø§ بؚد ؁؊ Ų‚Ø§ØĻŲ…ØŠ Ø§Ų„Ø§Ų†ØĒØ¸Ø§Øą. ØŗŲŠØĒŲ… ؈ØļØš Ø§Ų„ŲˆØŦŲˆŲ‡ Ø§Ų„Ų…ŲƒØĒØ´ŲØŠ ؁؊ Ų‚Ø§ØĻŲ…ØŠ Ø§Ų„Ø§Ų†ØĒØ¸Ø§Øą Ų„Ų„ØĒØšØąŲ ØšŲ„Ų‰ Ø§Ų„ŲˆØŦŲ‡ بؚد Ø§ŲƒØĒŲ…Ø§Ų„ Ø§ŲƒØĒØ´Ø§Ų Ø§Ų„ŲˆØŦŲ‡ØŒ ؈ØĒØŦŲ…ŲŠØšŲ‡Ø§ ؁؊ ØŖØ´ØŽØ§Øĩ Ų…ŲˆØŦŲˆØ¯ŲŠŲ† ØŖŲˆ ØŦدد.", "facial_recognition_job_description": "ØĒØŦŲ…ŲŠØš Ø§Ų„ŲˆØŦŲˆŲ‡ Ø§Ų„Ų…ŲƒØĒØ´ŲØŠ ŲƒØŖØ´ØŽØ§Øĩ. ؊ØĒŲ… ØĒŲ†ŲŲŠØ° Ų‡Ø°Ų‡ Ø§Ų„ØŽØˇŲˆØŠ بؚد Ø§ŲƒØĒŲ…Ø§Ų„ Ø§ŲƒØĒØ´Ø§Ų Ø§Ų„ŲˆØŦŲ‡. ØŽŲŠØ§Øą \"ØĨؚاد؊ Ø§Ų„ØĒØšŲŠŲŠŲ†\" ŲŠØšŲŠØ¯ ØĒØŦŲ…ŲŠØš ØŦŲ…ŲŠØš Ø§Ų„ŲˆØŦŲˆŲ‡. ØŽŲŠØ§Øą \"Ø§Ų„Ų…ŲŲ‚ŲˆØ¯\" ؊ØļØš ؁؊ Ų‚Ø§ØĻŲ…ØŠ Ø§Ų„Ø§Ų†ØĒØ¸Ø§Øą Ø§Ų„ŲˆØŦŲˆŲ‡ Ø§Ų„ØĒ؊ Ų„Ų… ؊ØĒŲ… ØĒØšŲŠŲŠŲ† Ø´ØŽØĩ Ų„Ų‡Ø§.", @@ -101,22 +104,27 @@ "image_thumbnail_description": "ØĩŲˆØąØŠ Ų…ØĩØēØąØŠ ØĩØēŲŠØąØŠ Ų…Øš Ø¨ŲŠØ§Ų†Ø§ØĒ ؈ØĩŲŲŠØŠ Ų…ØŦØąØ¯ØŠØŒ ØĒŲØŗØĒØŽØ¯Ų… ØšŲ†Ø¯ ØšØąØļ Ų…ØŦŲ…ŲˆØšØ§ØĒ Ų…Ų† Ø§Ų„ØĩŲˆØą Ų…ØĢŲ„ Ø§Ų„ØŦØ¯ŲˆŲ„ Ø§Ų„Ø˛Ų…Ų†ŲŠ Ø§Ų„ØąØĻŲŠØŗŲŠ", "image_thumbnail_quality_description": "ØĒØĒØąØ§ŲˆØ­ ØŦŲˆØ¯ØŠ Ø§Ų„ØĩŲˆØąØŠ Ø§Ų„Ų…ØĩØēØąØŠ Ų…Ų† 1 ØĨŲ„Ų‰ 100. ŲƒŲ„Ų…Ø§ ŲƒØ§Ų†ØĒ Ø§Ų„ØŦŲˆØ¯ØŠ ØŖØšŲ„Ų‰ ŲƒØ§Ų† Ø°Ų„Ųƒ ØŖŲØļŲ„ØŒ ŲˆŲ„ŲƒŲ†Ų‡Ø§ ØĒŲ†ØĒØŦ Ų…Ų„ŲØ§ØĒ ØŖŲƒØ¨Øą ŲˆŲ‚Ø¯ ØĒŲ‚Ų„Ų„ Ų…Ų† Ø§ØŗØĒØŦاب؊ Ø§Ų„ØĒØˇØ¨ŲŠŲ‚.", "image_thumbnail_title": "ØĨؚداداØĒ Ø§Ų„ØĩŲˆØąØŠ Ø§Ų„Ų…ØĩØēØąØŠ", + "import_config_from_json_description": "Ø§ØŗØĒŲŠØąØ§Ø¯ اؚداداØĒ Ø§Ų„Ų†Ø¸Ø§Ų… بØĒØ­Ų…ŲŠŲ„ ؅؄؁ اؚداداØĒ بØĩ؊ØēØŠ JSON", "job_concurrency": "ØĒØ˛Ø§Ų…Ų† {job}", "job_created": "ØĒŲ… ØĨŲ†Ø´Ø§ØĄ Ø§Ų„ŲˆØ¸ŲŠŲØŠ", "job_not_concurrency_safe": "Ų‡Ø°Ų‡ Ø§Ų„ŲˆØ¸ŲŠŲØŠ ØēŲŠØą ØĸŲ…Ų†ØŠ Ų„Ų„ØĒØ´ØēŲŠŲ„ Ø§Ų„Ų…ØĒØ˛Ø§Ų…Ų†.", "job_settings": "ØĨؚداداØĒ Ø§Ų„ŲˆØ¸Ø§ØĻ؁", "job_settings_description": "ØĨØ¯Ø§ØąØŠ ØĒØ˛Ø§Ų…Ų† Ø§Ų„ŲˆØ¸Ø§ØĻ؁", - "job_status": "Ø­Ø§Ų„ØŠ Ø§Ų„ŲˆØ¸ŲŠŲØŠ", "jobs_delayed": "{jobCount, plural, other {# Ų…Ø¤ØŦŲ„ØŠ}}", "jobs_failed": "{jobCount, plural, other {# ŲØ´Ų„ØĒ}}", "library_created": "ØĒŲ… ØĨŲ†Ø´Ø§ØĄ Ø§Ų„Ų…ŲƒØĒب؊: {library}", "library_deleted": "ØĒŲ… Ø­Ø°Ų Ø§Ų„Ų…ŲƒØĒب؊", + "library_details": "ØĒŲØ§ØĩŲŠŲ„ Ø§Ų„Ų…ŲƒØĒب؊", + "library_folder_description": "حدد Ų…ØŦŲ„Ø¯ Ų„Ų„Ø§ØŗØĒŲŠØąØ§Ø¯. Ų‡Ø°Ø§ Ø§Ų„Ų…ØŦŲ„Ø¯ Ų…Øš Ø§Ų„Ų…ØŦŲ„Ø¯Ø§ØĒ Ø§Ų„ŲØąØšŲŠØŠØŒ ØŗŲŠØĒŲ… ØĒŲØ­ØĩŲ‡Ų… Ų„Ų„ØĩŲˆØą ŲˆØ§Ų„ŲØ¯ŲŠŲˆØ§ØĒ.", + "library_remove_exclusion_pattern_prompt": "Ų‡Ų„ Ø§Ų†ØĒ Ų…ØĒØ§ŲƒØ¯ Ø§Ų†Ųƒ ØĒØąŲŠØ¯ Ø§Ø˛Ø§Ų„ØŠ Ų†Ų…Øˇ Ø§Ų„Ø§ØŗØĒبؚاد Ų‡Ø°Ø§ØŸ", + "library_remove_folder_prompt": "Ų‡Ų„ Ø§Ų†ØĒ Ų…ØĒØ§ŲƒØ¯ Ø§Ų†Ųƒ ØĒØąŲŠØ¯ Ø§Ø˛Ø§Ų„ØŠ Ų…ØŦŲ„Ø¯ Ø§Ų„Ø§ØŗØĒŲŠØąØ§Ø¯ Ų‡Ø°Ø§ØŸ", "library_scanning": "Ø§Ų„Ų…ØŗØ­ Ø§Ų„Ø¯ŲˆØąŲŠ", "library_scanning_description": "ØĨؚداد Ų…ØŗØ­ Ø§Ų„Ų…ŲƒØĒب؊ Ø§Ų„Ø¯ŲˆØąŲŠ", "library_scanning_enable_description": "ØĒŲØšŲŠŲ„ Ų…ØŗØ­ Ø§Ų„Ų…ŲƒØĒب؊ Ø§Ų„Ø¯ŲˆØąŲŠ", "library_settings": "Ø§Ų„Ų…ŲƒØĒب؊ Ø§Ų„ØŽØ§ØąØŦŲŠØŠ", "library_settings_description": "ØĨØ¯Ø§ØąØŠ ØĨؚداداØĒ Ø§Ų„Ų…ŲƒØĒب؊ Ø§Ų„ØŽØ§ØąØŦŲŠØŠ", "library_tasks_description": "Ų…ØŗØ­ Ø§Ų„Ų…ŲƒØĒباØĒ Ø§Ų„ØŽØ§ØąØŦŲŠØŠ Ų„Ų„ØšØĢŲˆØą ØšŲ„Ų‰ Ø§Ų„ØŖØĩŲˆŲ„ Ø§Ų„ØŦØ¯ŲŠØ¯ØŠ ؈/ØŖŲˆ Ø§Ų„Ų…ØĒØēŲŠØąØŠ", + "library_updated": "Ų…ŲƒØĒب؊ Ų…Ø­Ø¯ØĢØŠ", "library_watching_enable_description": "Ų…ØąØ§Ų‚Ø¨ØŠ Ø§Ų„Ų…ŲƒØĒباØĒ Ø§Ų„ØŽØ§ØąØŦŲŠØŠ Ų„Ø§ŲƒØĒØ´Ø§Ų ØĒØēŲŠŲŠØąØ§ØĒ Ø§Ų„Ų…Ų„ŲØ§ØĒ", "library_watching_settings": "Ų…ØąØ§Ų‚Ø¨ØŠ Ø§Ų„Ų…ŲƒØĒباØĒ [ØĒØŦØąŲŠØ¨ŲŠ]", "library_watching_settings_description": "ØąØ§Ų‚Ø¨ ØĒŲ„Ų‚Ø§ØĻŲŠŲ‹Ø§ Ø§Ų„ØĒØēŲŠŲŠØąØ§ØĒ ؁؊ Ø§Ų„Ų…Ų„ŲØ§ØĒ", @@ -171,7 +179,12 @@ "machine_learning_smart_search_enabled": "ØĒŲØšŲŠŲ„ Ø§Ų„Ø¨Ø­ØĢ Ø§Ų„Ø°ŲƒŲŠ", "machine_learning_smart_search_enabled_description": "ØĨذا ØĒŲ… ØĒØšØˇŲŠŲ„Ų‡ØŒ ؁؄؆ ؊ØĒŲ… ØĒØąŲ…ŲŠØ˛ Ø§Ų„ØĩŲˆØą Ų„Ų„Ø¨Ø­ØĢ Ø§Ų„Ø°ŲƒŲŠ.", "machine_learning_url_description": "ØšŲ†ŲˆØ§Ų† URL Ų„ØŽØ§Ø¯Ų… Ø§Ų„ØĒØšŲ„Ų… Ø§Ų„ØĸŲ„ŲŠ. ØĨذا ØĒŲ… ØĒŲˆŲŲŠØą ØŖŲƒØĢØą Ų…Ų† ØšŲ†ŲˆØ§Ų† URL ŲˆØ§Ø­Ø¯ØŒ ØŗŲŠØĒŲ… Ų…Ø­Ø§ŲˆŲ„ØŠ Ø§Ų„Ø§ØĒØĩØ§Ų„ Ø¨ŲƒŲ„ ØŽØ§Ø¯Ų… ØšŲ„Ų‰ حد؊ Ø­ØĒŲ‰ ŲŠØŗØĒØŦŲŠØ¨ ØŖØ­Ø¯Ų‡Ų… Ø¨Ų†ØŦاح، Ø¨Ø¯ØĄŲ‹Ø§ Ų…Ų† Ø§Ų„ØŖŲˆŲ„ ØĨŲ„Ų‰ Ø§Ų„ØŖØŽŲŠØą. ØŗŲŠØĒŲ… ØĒØŦØ§Ų‡Ų„ Ø§Ų„ØŽŲˆØ§Ø¯Ų… Ø§Ų„ØĒ؊ Ų„Ø§ ØĒØŗØĒØŦŲŠØ¨ Ų…Ø¤Ų‚ØĒŲ‹Ø§ Ø­ØĒŲ‰ ØĒØšŲˆØ¯ Ų„Ų„ØšŲ…Ų„.", + "maintenance_settings": "ØĩŲŠØ§Ų†ØŠ", + "maintenance_settings_description": "ØļØš Immich ؁؊ ؈ØļØš Ø§Ų„ØĩŲŠØ§Ų†ØŠ.", + "maintenance_start": "Ø§Ø¨Ø¯ØŖ ؈ØļØš Ø§Ų„ØĩŲŠØ§Ų†ØŠ", + "maintenance_start_error": "ŲØ´Ų„ Ø§Ų„Ø¨Ø¯ØĄ ؁؊ ؈ØļØš Ø§Ų„ØĩŲŠØ§Ų†ØŠ.", "manage_concurrency": "ØĨØ¯Ø§ØąØŠ Ø§Ų„ØĒØ˛Ø§Ų…Ų†", + "manage_concurrency_description": "Ø§Ų†ØĒŲ‚Ų„ Ø§Ų„Ų‰ ØĩŲØ­ØŠ Ø§Ų„Ø§ØšŲ…Ø§Ų„ Ų„Ø§Ø¯Ø§ØąØŠ ØĒØ˛Ø§Ų…Ų† Ø§Ų„Ų…Ų‡Ø§Ų…", "manage_log_settings": "ØĨØ¯Ø§ØąØŠ ØĨؚداداØĒ Ø§Ų„ØŗØŦŲ„Ø§ØĒ", "map_dark_style": "Ø§Ų„Ų†Ų…Øˇ Ø§Ų„Ø¯Ø§ŲƒŲ†", "map_enable_description": "ØĒŲØšŲŠŲ„ Ų…ŲŠØ˛Ø§ØĒ Ø§Ų„ØŽØąØ§ØĻØˇ", @@ -277,8 +290,10 @@ "server_public_users_description": "؊ØĒŲ… ØĨØ¯ØąØ§ØŦ ØŦŲ…ŲŠØš Ø§Ų„Ų…ØŗØĒØŽØ¯Ų…ŲŠŲ† (Ø§Ų„Ø§ØŗŲ… ŲˆØ§Ų„Ø¨ØąŲŠØ¯ Ø§Ų„ØĨŲ„ŲƒØĒØąŲˆŲ†ŲŠ) ØšŲ†Ø¯ ØĨØļØ§ŲØŠ Ų…ØŗØĒØŽØ¯Ų… ØĨŲ„Ų‰ Ø§Ų„ØŖŲ„Ø¨ŲˆŲ…Ø§ØĒ Ø§Ų„Ų…Ø´ØĒØąŲƒØŠ. ØšŲ†Ø¯ ØĒØšØˇŲŠŲ„ Ų‡Ø°Ų‡ Ø§Ų„Ų…ŲŠØ˛ØŠØŒ ØŗØĒŲƒŲˆŲ† Ų‚Ø§ØĻŲ…ØŠ Ø§Ų„Ų…ØŗØĒØŽØ¯Ų…ŲŠŲ† Ų…ØĒاح؊ ŲŲ‚Øˇ Ų„Ų…ØŗØĒØŽØ¯Ų…ŲŠ Ø§Ų„ØĨØ¯Ø§ØąØŠ.", "server_settings": "ØĨؚداداØĒ Ø§Ų„ØŽØ§Ø¯Ų…", "server_settings_description": "ØĨØ¯Ø§ØąØŠ ØĨؚداداØĒ Ø§Ų„ØŽØ§Ø¯Ų…", + "server_stats_page_description": "ØĩŲØ­ØŠ ØĨØ­ØĩاØĻŲŠØ§ØĒ Ų…ØŗØ¤ŲˆŲ„ Ø§Ų„ØŽØ§Ø¯Ų…", "server_welcome_message": "Ø§Ų„ØąØŗØ§Ų„ØŠ Ø§Ų„ØĒØąØ­ŲŠØ¨ŲŠØŠ", "server_welcome_message_description": "ØąØŗØ§Ų„ØŠ ØĒŲØšØąØļ ØšŲ„Ų‰ ØĩŲØ­ØŠ ØĒØŗØŦŲŠŲ„ Ø§Ų„Ø¯ØŽŲˆŲ„.", + "settings_page_description": "ØĩŲØŽØŠ اؚداداØĒ Ø§Ų„Ų…ØŗØ¤ŲˆŲ„", "sidecar_job": "Ø§Ų„Ø¨ŲŠØ§Ų†Ø§ØĒ Ø§Ų„ŲˆØĩŲŲŠØŠ Ø§Ų„ØŦØ§Ų†Ø¨ŲŠØŠ", "sidecar_job_description": "Ø§ŲƒØĒØ´Ø§Ų ØŖŲˆ Ų…Ø˛Ø§Ų…Ų†ØŠ Ø§Ų„Ø¨ŲŠØ§Ų†Ø§ØĒ Ø§Ų„ØĒØšØąŲŠŲŲŠØŠ Ø§Ų„ØŦØ§Ų†Ø¨ŲŠØŠ Ų…Ų† Ų†Ø¸Ø§Ų… Ø§Ų„Ų…Ų„ŲØ§ØĒ", "slideshow_duration_description": "ؚدد Ø§Ų„ØĢŲˆØ§Ų†ŲŠ Ų„ØšØąØļ ŲƒŲ„ ØĩŲˆØąØŠ", @@ -397,7 +412,8 @@ "user_restore_scheduled_removal": "Ø§ØŗØĒؚاد؊ Ø§Ų„Ų…ØŗØĒØŽØ¯Ų… - ØĒŲ…ØĒ ØŦØ¯ŲˆŲ„ØŠ Ø§Ų„ØĨØ˛Ø§Ų„ØŠ ؁؊ {date, date, long}", "user_settings": "ØĨؚداداØĒ Ø§Ų„Ų…ØŗØĒØŽØ¯Ų…", "user_settings_description": "ØĨØ¯Ø§ØąØŠ ØĨؚداداØĒ Ø§Ų„Ų…ØŗØĒØŽØ¯Ų…", - "user_successfully_removed": "ØĒŲ…ØĒ ØĨØ˛Ø§Ų„ØŠ Ø§Ų„Ų…ØŗØĒØŽØ¯Ų… {email} Ø¨Ų†ØŦاح.", + "user_successfully_removed": "Ø§Ų„Ų…ØŗØĒØŽØ¯Ų… {email} ØĒŲ…ØĒ Ø§Ø˛Ø§Ų„ØĒŲ‡ Ø¨Ų†ØŦاح.", + "users_page_description": "ØĩŲØ­ØŠ Ø§Ø¯Ø§ØąØŠ Ø§Ų„Ų…ØŗØĒØŽØ¯Ų…ŲŠŲ†", "version_check_enabled_description": "ØĒŲØšŲŠŲ„ Ø§Ų„ØĒØ­Ų‚Ų‚ Ų…Ų† Ø§Ų„ØĨØĩØ¯Ø§ØąØ§ØĒ Ø§Ų„ØŦØ¯ŲŠØ¯ØŠ", "version_check_implications": "ØĒØšØĒŲ…Ø¯ Ų…ŲŠØ˛ØŠ Ø§Ų„ØĒØ­Ų‚Ų‚ Ų…Ų† Ø§Ų„ØĨØĩØ¯Ø§Øą ØšŲ„Ų‰ Ø§Ų„ØĒŲˆØ§ØĩŲ„ Ø§Ų„Ø¯ŲˆØąŲŠ Ų…Øš github.com", "version_check_settings": "Ø§Ų„ØĒØ­Ų‚Ų‚ Ų…Ų† Ø§Ų„ØĨØĩØ¯Ø§Øą", @@ -428,6 +444,7 @@ "age_months": "ØšŲ…Øą {months, plural, one {# Ø´Ų‡Øą} other {# ØŖØ´Ų‡Øą}}", "age_year_months": "ØšŲ…Øą ØŗŲ†ØŠ ŲˆØ§Ø­Ø¯ØŠØŒ {months, plural, one {# Ø´Ų‡Øą} other {# ØŖØ´Ų‡Øą}}", "age_years": "{years, plural, other {Ø§Ų„ØšŲ…Øą #}}", + "album": "Ø§Ų„Ø¨ŲˆŲ…", "album_added": "ØĒŲ…ØĒ ØĨØļØ§ŲØŠ Ø§Ų„ØŖŲ„Ø¨ŲˆŲ…", "album_added_notification_setting_description": "ØĒŲ„Ų‚ŲŠ ØĨØ´ØšØ§ØąŲ‹Ø§ Ø¨Ø§Ų„Ø¨ØąŲŠØ¯ Ø§Ų„ØĨŲ„ŲƒØĒØąŲˆŲ†ŲŠ ØšŲ†Ø¯ ØĨØļØ§ŲØĒ؃ ØĨŲ„Ų‰ ØŖŲ„Ø¨ŲˆŲ… Ų…Ø´ØĒØąŲƒ", "album_cover_updated": "ØĒŲ… ØĒØ­Ø¯ŲŠØĢ ØēŲ„Ø§Ų Ø§Ų„ØŖŲ„Ø¨ŲˆŲ…", @@ -473,6 +490,7 @@ "allow_edits": "ØĨØŗŲ…Ø­ Ø¨Ø§Ų„ØĒØšØ¯ŲŠŲ„", "allow_public_user_to_download": "Ø§Ų„ØŗŲ…Ø§Ø­ Ų„ØŖŲŠ Ų…ØŗØĒØŽØ¯Ų… ØšØ§Ų… Ø¨Ø§Ų„ØĒŲ†Ø˛ŲŠŲ„", "allow_public_user_to_upload": "Ø§Ų„ØŗŲ…Ø§Ø­ Ų„Ų„Ų…ØŗØĒØŽØ¯Ų… Ø§Ų„ØšØ§Ų… Ø¨Ø§Ų„ØąŲØš", + "allowed": "Ų…ØŗŲ…ŲˆØ­", "alt_text_qr_code": "ØĩŲˆØąØŠ ØąŲ…Ø˛ Ø§Ų„Ø§ØŗØĒØŦاب؊ Ø§Ų„ØŗØąŲŠØšØŠ (QR)", "anti_clockwise": "ØšŲƒØŗ اØĒØŦØ§Ų‡ ØšŲ‚Ø§ØąØ¨ Ø§Ų„ØŗØ§ØšØŠ", "api_key": "؅؁ØĒاح API", @@ -716,6 +734,7 @@ "collapse_all": "ØˇŲŠŲ‘ Ø§Ų„ŲƒŲ„", "color": "Ø§Ų„Ų„ŲˆŲ†", "color_theme": "Ų†Ų…Øˇ Ø§Ų„ØŖŲ„ŲˆØ§Ų†", + "command": "Ø§Ų…Øą", "comment_deleted": "ØĒŲ… Ø­Ø°Ų Ø§Ų„ØĒØšŲ„ŲŠŲ‚", "comment_options": "ØŽŲŠØ§ØąØ§ØĒ Ø§Ų„ØĒØšŲ„ŲŠŲ‚", "comments_and_likes": "Ø§Ų„ØĒØšŲ„ŲŠŲ‚Ø§ØĒ ŲˆØ§Ų„ØĨØšØŦاباØĒ", @@ -964,6 +983,7 @@ "failed_to_unstack_assets": "ŲØ´Ų„ ؁؊ ؁ØĩŲ„ Ø§Ų„Ų…Ø­ØĒŲˆŲŠØ§ØĒ", "failed_to_update_notification_status": "ŲØ´Ų„ ؁؊ ØĒØ­Ø¯ŲŠØĢ Ø­Ø§Ų„ØŠ Ø§Ų„ØĨØ´ØšØ§Øą", "incorrect_email_or_password": "Ø¨ØąŲŠØ¯ ØŖŲˆ ŲƒŲ„Ų…ØŠ Ų…ØąŲˆØą ØēŲŠØą ØĩØ­ŲŠØ­ØŠ", + "library_folder_already_exists": "Ų…ØŗØ§Øą Ø§Ų„Ø§ØŗØĒŲŠØąØ§Ø¯ Ų…ŲˆØŦŲˆØ¯ Ø¨Ø§Ų„ŲØšŲ„.", "paths_validation_failed": "ŲØ´Ų„ ؁؊ Ø§Ų„ØĒØ­Ų‚Ų‚ Ų…Ų† {paths, plural, one {# Ų…ØŗØ§Øą} other {# Ų…ØŗØ§ØąØ§ØĒ}}", "profile_picture_transparent_pixels": "Ų„Ø§ ŲŠŲ…ŲƒŲ† ØŖŲ† ØĒØ­ØĒ؈؊ ØĩŲˆØą Ø§Ų„Ų…Ų„Ų Ø§Ų„Ø´ØŽØĩ؊ ØšŲ„Ų‰ ØŖØŦØ˛Ø§ØĄ/Ø¨ŲƒØŗŲ„Ø§ØĒ Ø´ŲØ§ŲØŠ. ŲŠØąØŦŲ‰ Ø§Ų„ØĒŲƒØ¨ŲŠØą ؈/ØŖŲˆ ØĒØ­ØąŲŠŲƒ Ø§Ų„ØĩŲˆØąØŠ.", "quota_higher_than_disk_size": "Ų„Ų‚Ø¯ Ų‚Ų…ØĒ بØĒØšŲŠŲŠŲ† Ø­ØĩØŠ Ų†ØŗØ¨ŲŠØŠ ØŖØšŲ„Ų‰ Ų…Ų† Ø­ØŦŲ… Ø§Ų„Ų‚ØąØĩ", @@ -1048,6 +1068,7 @@ "unable_to_update_user": "ØēŲŠØą Ų‚Ø§Ø¯Øą ØšŲ„Ų‰ ØĒØ­Ø¯ŲŠØĢ Ø§Ų„Ų…ØŗØĒØŽØ¯Ų…", "unable_to_upload_file": "ØĒØšØ°Øą ØąŲØš Ø§Ų„Ų…Ų„Ų" }, + "exclusion_pattern": "Ų†Ų…Øˇ Ø§ØŗØĒبؚاد", "exif": "Exif (Øĩ؊ØēØŠ ؅؄؁ ØĩŲˆØąŲŠ Ų‚Ø§Ø¨Ų„ Ų„Ų„ØĒØ¨Ø§Ø¯Ų„)", "exif_bottom_sheet_description": "اØļ؁ ؈ØĩŲØ§...", "exif_bottom_sheet_description_error": "ØŽØˇØŖ ؁؊ ØĒØ­Ø¯ŲŠØĢ Ø§Ų„ŲˆØĩ؁", @@ -1107,6 +1128,7 @@ "folders_feature_description": "ØĒØĩŲØ­ ØšØąØļ Ø§Ų„Ų…ØŦŲ„Ø¯ Ų„Ų„ØĩŲˆØą ŲˆŲ…Ų‚Ø§ØˇØš Ø§Ų„ŲŲŠØ¯ŲŠŲˆ Ø§Ų„Ų…ŲˆØŦŲˆØ¯ØŠ ØšŲ„Ų‰ Ų†Ø¸Ø§Ų… Ø§Ų„Ų…Ų„ŲØ§ØĒ", "forgot_pin_code_question": "Ų‡Ų„ Ų†ØŗŲŠØĒ ØąŲ…Ø˛ Ø§Ų„PIN Ø§Ų„ØŽØ§Øĩ Ø¨ŲƒØŸ", "forward": "ØĨŲ„Ų‰ Ø§Ų„ØŖŲ…Ø§Ų…", + "full_path": "Ų…ØŗØ§Øą ŲƒØ§Ų…Ų„:{path}", "gcast_enabled": "ŲƒŲˆŲƒŲ„ ŲƒØ§ØŗØĒ", "gcast_enabled_description": "ØĒŲ‚ŲˆŲ… Ų‡Ø°Ų‡ Ø§Ų„Ų…ŲŠØ˛ØŠ بØĒØ­Ų…ŲŠŲ„ Ø§Ų„Ų…ŲˆØ§ØąØ¯ Ø§Ų„ØŽØ§ØąØŦŲŠØŠ Ų…Ų† Google Ø­ØĒŲ‰ ØĒØšŲ…Ų„.", "general": "ØšØ§Ų…", @@ -1143,6 +1165,7 @@ "hide_named_person": "ØĨØŽŲØ§ØĄ Ø§Ų„Ø´ØŽØĩ {name}", "hide_password": "Ø§ØŽŲØ§ØĄ ŲƒŲ„Ų…ØŠ Ø§Ų„Ų…ØąŲˆØą", "hide_person": "Ø§ØŽŲØ§ØĄ Ø§Ų„Ø´ØŽØĩ", + "hide_text_recognition": "Ø§ØŽŲØ§ØĄ Ø§Ų„ØĒØšØąŲ ØšŲ„Ų‰ Ø§Ų„Ų†Øĩ", "hide_unnamed_people": "ØĨØŽŲØ§ØĄ Ø§Ų„ØŖØ´ØŽØ§Øĩ Ø¨Ø¯ŲˆŲ† ØĨØŗŲ…", "home_page_add_to_album_conflicts": "ØĒŲ…ØĒ ØĨØļØ§ŲØŠ {added} ØŖØĩŲˆŲ„ ØĨŲ„Ų‰ Ø§Ų„ØŖŲ„Ø¨ŲˆŲ… {album}. {failed} ØŖØĩŲˆŲ„ Ų…ŲˆØŦŲˆØ¯ØŠ Ø¨Ø§Ų„ŲØšŲ„ ؁؊ Ø§Ų„ØŖŲ„Ø¨ŲˆŲ….", "home_page_add_to_album_err_local": "Ų„Ø§ ŲŠŲ…ŲƒŲ† ØĨØļØ§ŲØŠ Ø§Ų„ØŖØĩŲˆŲ„ Ø§Ų„Ų…Ø­Ų„ŲŠØŠ ØĨŲ„Ų‰ Ø§Ų„ØŖŲ„Ø¨ŲˆŲ…Ø§ØĒ Ø­ØĒŲ‰ Ø§Ų„ØĸŲ† ، ØŗŲˆŲ ؊ØĒØŽØˇŲ‰", @@ -1188,6 +1211,8 @@ "import_path": "Ų…ØŗØ§Øą Ø§Ų„Ø§ØŗØĒŲŠØąØ§Ø¯", "in_albums": "؁؊ {count, plural, one {# ØŖŲ„Ø¨ŲˆŲ… } other {# ØŖŲ„Ø¨ŲˆŲ…Ø§ØĒ}}", "in_archive": "؁؊ Ø§Ų„ØŖØąØ´ŲŠŲ", + "in_year": "؁؊ {year}", + "in_year_selector": "؁؊", "include_archived": "ØĒØ´Ų…Ų„ Ø§Ų„ØŖØąØ´ŲØŠ", "include_shared_albums": "ØĒØļŲ…ŲŠŲ† Ø§Ų„ØŖŲ„Ø¨ŲˆŲ…Ø§ØĒ Ø§Ų„Ų…Ø´ØĒØąŲƒØŠ", "include_shared_partner_assets": "ØĒØļŲ…ŲŠŲ† Ų…Ø­ØĒŲˆŲŠØ§ØĒ Ø§Ų„Ø´ØąŲŠŲƒ Ø§Ų„Ų…Ø´ØĒØąŲƒØŠ", @@ -1224,6 +1249,7 @@ "language_setting_description": "ا؎ØĒØą Ų„ØēØĒ؃ Ø§Ų„Ų…ŲØļŲ„ØŠ", "large_files": "Ų…Ų„ŲØ§ØĒ ŲƒØ¨ŲŠØąØŠ", "last": "Ø§Ų„Ø§ØŽŲŠØą", + "last_months": "{count, plural, one {Ø´Ų‡Øą ŲØ§ØĻØĒ} other {Ø§Ø´Ų‡Øą # ŲØ§ØĻØĒØŠ}}", "last_seen": "Ø§ØŽØą Ø¸Ų‡ŲˆØą", "latest_version": "احدØĢ اØĩØ¯Ø§Øą", "latitude": "ØŽØˇ Ø§Ų„ØšØąØļ", @@ -1233,6 +1259,8 @@ "let_others_respond": "دؚ Ø§Ų„ØĸØŽØąŲŠŲ† ŲŠØŗØĒØŦŲŠØ¨ŲˆŲ†", "level": "Ø§Ų„Ų…ØŗØĒŲˆŲ‰", "library": "Ų…ŲƒØĒب؊", + "library_add_folder": "اØļØ§ŲØŠ Ų…ØŦŲ„Ø¯", + "library_edit_folder": "ØĒØšØ¯ŲŠŲ„ Ų…ØŦŲ„Ø¯", "library_options": "ØŽŲŠØ§ØąØ§ØĒ Ø§Ų„Ų…ŲƒØĒب؊", "library_page_device_albums": "ØŖŲ„Ø¨ŲˆŲ…Ø§ØĒ ØšŲ„Ų‰ Ø§Ų„ØŦŲ‡Ø§Ø˛", "library_page_new_album": "Ø§Ų„Ø¨ŲˆŲ… ØŦØ¯ŲŠØ¯", @@ -1304,8 +1332,17 @@ "loop_videos_description": "ŲŲŽØšŲ’Ų„ Ų„ØĒŲƒØąØ§Øą Ų…Ų‚ØˇØš ŲŲŠØ¯ŲŠŲˆ ØĒŲ„Ų‚Ø§ØĻŲŠŲ‹Ø§ ؁؊ ØšØ§ØąØļ Ø§Ų„ØĒŲØ§ØĩŲŠŲ„.", "main_branch_warning": "ØŖŲ†ØĒ ØĒØŗØĒØŽØ¯Ų… ØĨØĩØ¯Ø§ØąØ§Ų‹ Ų‚ŲŠØ¯ Ø§Ų„ØĒØˇŲˆŲŠØąØ› ŲˆŲ†Ø­Ų† Ų†ŲˆØĩ؊ بشد؊ Ø¨Ø§ØŗØĒØŽØ¯Ø§Ų… ØĨØĩØ¯Ø§Øą Ø§Ų„Ų†Ø´Øą!", "main_menu": "Ø§Ų„Ų‚Ø§ØĻŲ…ØŠ Ø§Ų„ØąØĻŲŠØŗŲŠØŠ", + "maintenance_description": "؊ØŦب ؈ØļØš Immich ؁؊ ؈ØļØš Ø§Ų„ØĩŲŠØ§Ų†ØŠ ؈ØļØš Ø§Ų„ØĩŲŠØ§Ų†ØŠ.", + "maintenance_end": "Ø§Ų†Ų‡Ø§ØĄ ؈ØļØš Ø§Ų„ØĩŲŠØ§Ų†ØŠ", + "maintenance_end_error": "ŲØ´Ų„ ؁؊ Ø§Ų†Ų‡Ø§ØĄ ؈ØļØš Ø§Ų„ØĩŲŠØ§Ų†ØŠ.", + "maintenance_logged_in_as": "Ø­Ø§Ų„ŲŠØ§ Ų…ØŗØŦŲ„ Ø¨Ø§ØŗŲ… {user}", + "maintenance_title": "ØēŲŠØą Ų…ØĒŲˆŲØą Ų…Ø¤Ų‚ØĒا", "make": "ØĩŲ†Øš", "manage_geolocation": "ØĨØ¯Ø§ØąØŠ Ø§Ų„Ų…ŲˆŲ‚Øš", + "manage_media_access_rationale": "Ø§Ų„Ø§Ø°Ų† Ø§Ų„Ų…ØˇŲ„ŲˆØ¨ Ų„Ų„ØĒØšØ§Ų…Ų„ Ø§Ų„ØŗŲ„ŲŠŲ… Ų„Ų†Ų‚Ų„ Ø§Ų„Ø§ØĩŲˆŲ„ Ø§Ų„Ų‰ ØŗŲ„ØŠ Ø§Ų„Ų…Ų‡Ų…Ų„Ø§ØĒ ŲˆØ§ØšØ§Ø¯ØĒŲ‡Ø§ Ų…Ų†Ų‡Ø§.", + "manage_media_access_settings": "؁ØĒØ­ Ø§Ų„Ø§ØšØ¯Ø§Ø¯Ø§ØĒ", + "manage_media_access_subtitle": "Ø§Ų„ØŗŲ…Ø§Ø­ Ų„Ø¨ØąŲ†Ø§Ų…ØŦ Immich بØĨØ¯Ø§ØąØŠ ŲˆŲ†Ų‚Ų„ Ų…Ų„ŲØ§ØĒ Ø§Ų„ŲˆØŗØ§ØĻØˇ.", + "manage_media_access_title": "؈ØĩŲˆŲ„ Ø§Ø¯Ø§ØąØŠ Ø§Ų„ŲˆØŗØ§ØĻØˇ", "manage_shared_links": "ØĨØ¯Ø§ØąØŠ Ø§Ų„ØąŲˆØ§Ø¨Øˇ Ø§Ų„Ų…Ø´ØĒØąŲƒØŠ", "manage_sharing_with_partners": "ØĨØ¯Ø§ØąØŠ Ø§Ų„Ų…Ø´Ø§ØąŲƒØŠ Ų…Øš Ø§Ų„Ø´ØąŲƒØ§ØĄ", "manage_the_app_settings": "ØĨØ¯Ø§ØąØŠ ØĨؚداداØĒ Ø§Ų„ØĒØˇØ¨ŲŠŲ‚", @@ -1369,6 +1406,7 @@ "more": "Ø§Ų„Ų…Ø˛ŲŠØ¯", "move": "ØĒØ­ØąŲŠŲƒ", "move_off_locked_folder": "ØĒØ­ØąŲŠŲƒ ØŽØ§ØąØŦ Ø§Ų„Ų…ØŦŲ„Ø¯ Ø§Ų„Ų…Ų‚ŲŲ„", + "move_to": "Ų†Ų‚Ų„ Ø§Ų„Ų‰", "move_to_lock_folder_action_prompt": "{count} اØļ؊؁ ØĨŲ„Ų‰ Ø§Ų„Ų…ØŦŲ„Ø¯ Ø§Ų„Ų…Ų‚ŲŲ„", "move_to_locked_folder": "Ø§Ų„Ų†Ų‚Ų„ Ø§Ų„Ų‰ Ų…ØŦŲ„Ø¯ Ų…ØēŲ„Ų‚", "move_to_locked_folder_confirmation": "Ų‡Ø°Ų‡ Ø§Ų„ØĩŲˆØą ŲˆØ§Ų„ŲØ¯ŲŠŲˆØ§ØĒ ØŗØĒØĒŲ… Ø§Ø˛Ø§Ų„ØĒŲ‡Ø§ Ų…Ų† ØŦŲ…ŲŠØš Ø§Ų„Ø§Ų„Ø¨ŲˆŲ…Ø§ØĒ، ŲˆŲŠŲ…ŲƒŲ†Ø§Ų† ØĒØĒŲ… Ų…Ø´Ø§Ų‡Ø¯ØĒŲ‡Ø§ ŲŲ‚Øˇ Ų…Ų† ØŽŲ„Ø§Ų„ Ø§Ų„Ų…ØŦŲ„Ø¯ Ø§Ų„Ų…Ų‚ŲŲ„", @@ -1398,6 +1436,7 @@ "new_pin_code": "ØąŲ…Ø˛ PIN Ø§Ų„ØŦØ¯ŲŠØ¯", "new_pin_code_subtitle": "Ų‡Ø°Ų‡ ØŖŲˆŲ„ Ų…ØąØŠ ØĒØ¯ØŽŲ„ ŲŲŠŲ‡Ø§ ØĨŲ„Ų‰ Ø§Ų„Ų…ØŦŲ„Ø¯ Ø§Ų„Ų…Ų‚ŲŲ„. ØŖŲ†Ø´ØĻ ØąŲ…Ø˛Ų‹Ø§ PIN Ų„Ų„ŲˆØĩŲˆŲ„ Ø¨Ø§Ų…Ø§Ų† ØĨŲ„Ų‰ Ų‡Ø°Ų‡ Ø§Ų„ØĩŲØ­ØŠ", "new_timeline": "Ø§Ų„ØŽØˇ Ø§Ų„Ø˛Ų…Ų†ŲŠ Ø§Ų„ØŦØ¯ŲŠØ¯", + "new_update": "ØĒØ­Ø¯ŲŠØĢ ØŦØ¯ŲŠØ¯", "new_user_created": "ØĒŲ… ØĨŲ†Ø´Ø§ØĄ Ų…ØŗØĒØŽØ¯Ų… ØŦØ¯ŲŠØ¯", "new_version_available": "ØĨØĩØ¯Ø§Øą ØŦØ¯ŲŠØ¯ Ų…ØĒاح", "newest_first": "Ø§Ų„ØŖØ­Ø¯ØĢ ØŖŲˆŲ„Ø§Ų‹", @@ -1413,12 +1452,14 @@ "no_cast_devices_found": "Ų„Ų… ؊ØĒŲ… Ø§ŲŠØŦاد ØŦŲ‡Ø§Ø˛ بØĢ", "no_checksum_local": "Ų„Ø§ ØĒ؈ØŦد Ø¨ŲŠØ§Ų†Ø§ØĒ ØĒØ­Ų‚Ų‚ Ų…ØĒاح؊ - ؊ØĒØšØ°Øą ØĒØ­Ų…ŲŠŲ„ Ø§Ų„Ø§ØĩŲˆŲ„ Ø§Ų„Ų…Ø­Ų„ŲŠØŠ", "no_checksum_remote": "Ų„Ø§ ؊؈ØŦد ØąŲ…Ø˛ ØĒØ­Ų‚Ų‚ Ų…ØĒاح - ؊ØĒØšØ°Øą ØĒØ­Ų…ŲŠŲ„ Ø§Ų„Ø§ØĩŲ„ Ų…Ų† Ø§Ų„Ų…ŲˆŲ‚Øš Ø§Ų„Ø¨ØšŲŠØ¯", + "no_devices": "Ų„Ø§ ؊؈ØŦد اØŦŲ‡Ø˛ØŠ Ų…ØąØŽØĩØŠ", "no_duplicates_found": "Ų„Ų… ؊ØĒŲ… Ø§Ų„ØšØĢŲˆØą ØšŲ„Ų‰ ØŖŲŠ ØĒŲƒØąØ§ØąØ§ØĒ.", "no_exif_info_available": "Ų„Ø§ ØĒØĒŲˆŲØą Ų…ØšŲ„ŲˆŲ…Ø§ØĒ exif", "no_explore_results_message": "Ų‚Ų… Ø¨ØąŲØš Ø§Ų„Ų…Ø˛ŲŠØ¯ Ų…Ų† Ø§Ų„ØĩŲˆØą Ų„Ø§ØŗØĒŲƒØ´Ø§Ų Ų…ØŦŲ…ŲˆØšØĒ؃.", "no_favorites_message": "ØŖØļ؁ Ø§Ų„Ų…ŲØļŲ„ØŠ Ų„Ų„ØšØĢŲˆØą Ø¨ØŗØąØšØŠ ØšŲ„Ų‰ ØŖŲØļŲ„ Ø§Ų„ØĩŲˆØą ŲˆŲ…Ų‚Ø§ØˇØš Ø§Ų„ŲŲŠØ¯ŲŠŲˆ", "no_libraries_message": "ØĨŲ†Ø´Ø§ØĄ Ų…ŲƒØĒب؊ ØŽØ§ØąØŦŲŠØŠ Ų„ØšØąØļ Ø§Ų„ØĩŲˆØą ŲˆŲ…Ų‚Ø§ØˇØš Ø§Ų„ŲŲŠØ¯ŲŠŲˆ Ø§Ų„ØŽØ§ØĩØŠ Ø¨Ųƒ", "no_local_assets_found": "Ų„Ų… ؊ØĒŲ… Ø§Ų„ØšØĢŲˆØą ØšŲ„Ų‰ ØŖŲŠ اØĩŲˆŲ„ Ų…Ø­Ų„ŲŠØŠ ØĒØĒØˇØ§Ø¨Ų‚ Ų…Øš Ų‚ŲŠŲ…ØŠ Ø§Ų„ØĒØ­Ų‚Ų‚ Ų‡Ø°Ų‡", + "no_location_set": "Ų„Ų… ؊ØĒŲ… ØĒØ­Ø¯ŲŠØ¯ Ų…ŲˆŲ‚Øš", "no_locked_photos_message": "Ø§Ų„ØĩŲˆØą ŲˆØ§Ų„ŲØ¯ŲŠŲˆŲ‡Ø§ØĒ ؁؊ Ø§Ų„Ų…ØŦŲ„Ø¯ Ø§Ų„Ų…Ų‚ŲŲ„ Ų…ØŽŲŲŠØŠ ŲˆŲ„Ų† ØĒØĩŲ‡Øą ؁؊ Ø§Ų„ØĒØĩŲØ­ Ø§Ųˆ Ø§Ų„Ø¨Ø­ØĢ ؁؊ Ų…ŲƒØĒبØĒ؃.", "no_name": "Ų„Ø§ Ø§ØŗŲ…", "no_notifications": "Ų„Ø§ ØĒ؈ØŦد ØĒŲ†Ø¨ŲŠŲ‡Ø§ØĒ", @@ -1429,6 +1470,7 @@ "no_results_description": "ØŦØąØ¨ ŲƒŲ„Ų…ØŠ ØąØĻŲŠØŗŲŠØŠ Ų…ØąØ§Ø¯ŲØŠ ØŖŲˆ ØŖŲƒØĢØą ØšŲ…ŲˆŲ…ŲŠØŠ", "no_shared_albums_message": "Ų‚Ų… بØĨŲ†Ø´Ø§ØĄ ØŖŲ„Ø¨ŲˆŲ… Ų„Ų…Ø´Ø§ØąŲƒØŠ Ø§Ų„ØĩŲˆØą ŲˆŲ…Ų‚Ø§ØˇØš Ø§Ų„ŲŲŠØ¯ŲŠŲˆ Ų…Øš Ø§Ų„ØŖØ´ØŽØ§Øĩ ؁؊ Ø´Ø¨ŲƒØĒ؃", "no_uploads_in_progress": "Ų„Ø§ ؊؈ØŦد Ø§ŲŠ Ų…Ų„ŲØ§ØĒ Ų‚ŲŠØ¯ Ø§Ų„ØąŲØš", + "not_allowed": "ØēŲŠØą Ų…ØŗŲ…ŲˆØ­", "not_available": "ØēŲŠØą Ų…ØĒاح", "not_in_any_album": "Ų„ŲŠØŗØĒ ؁؊ ØŖŲŠ ØŖŲ„Ø¨ŲˆŲ…", "not_selected": "Ų„Ų… ŲŠØŽØĒØ§Øą", @@ -1477,6 +1519,7 @@ "other_variables": "Ų…ØĒØēŲŠØąØ§ØĒ ØŖØŽØąŲ‰", "owned": "Ų…Ų…Ų„ŲˆŲƒØŠ", "owner": "Ø§Ų„Ų…Ø§Ų„Ųƒ", + "page": "ØĩŲØ­ØŠ", "partner": "Ø´ØąŲŠŲƒ", "partner_can_access": "ŲŠØŗØĒØˇŲŠØš {partner} Ø§Ų„ŲˆØĩŲˆŲ„", "partner_can_access_assets": "ØŦŲ…ŲŠØš Ø§Ų„ØĩŲˆØą ŲˆŲ…Ų‚Ø§ØˇØš Ø§Ų„ŲŲŠØ¯ŲŠŲˆ Ø§Ų„ØŽØ§ØĩØŠ Ø¨Ųƒ Ø¨Ø§ØŗØĒØĢŲ†Ø§ØĄ ØĒŲ„Ųƒ Ø§Ų„Ų…ŲˆØŦŲˆØ¯ØŠ ؁؊ Ø§Ų„Ų…Ø¤ØąØ´ŲØŠ ŲˆØ§Ų„Ų…Ø­Ø°ŲˆŲØŠ", @@ -1539,6 +1582,8 @@ "photos_count": "{count, plural, one {{count, number} ØĩŲˆØąØŠ} other {{count, number} ØĩŲˆØą}}", "photos_from_previous_years": "ØĩŲˆØą Ų…Ų† Ø§Ų„ØŗŲ†ŲˆØ§ØĒ Ø§Ų„ØŗØ§Ø¨Ų‚ØŠ", "pick_a_location": "ا؎ØĒØą Ų…ŲˆŲ‚ØšŲ‹Ø§", + "pick_custom_range": "Ų†ØˇØ§Ų‚ Ų…ØŽØĩØĩ", + "pick_date_range": "حدد Ų†ØˇØ§Ų‚ Ø§Ų„ØĒØ§ØąŲŠØŽ", "pin_code_changed_successfully": "ØĒŲ… ØĒØēŲŠØą ØąŲ…Ø˛ PIN Ø¨Ų†ØŦاح", "pin_code_reset_successfully": "ØĒŲ… اؚاد؊ ØĒØšŲŠŲŠŲ† ØąŲ…Ø˛ PIN Ø¨Ų†ØŦاح", "pin_code_setup_successfully": "ØĒŲ… Ø§Ų†Ø´Ø§ØĄ ØąŲ…Ø˛ PIN Ø¨Ų†ØŦاح", @@ -1806,6 +1851,8 @@ "server_offline": "Ø§Ų„ØŽØ§Ø¯Ų… ØēŲŠØą Ų…ØĒØĩŲ„", "server_online": "Ø§Ų„ØŽØ§Ø¯Ų… Ų…ØĒØĩŲ„", "server_privacy": "ØŽØĩ؈ØĩŲŠØŠ Ø§Ų„ØŽØ§Ø¯Ų…", + "server_restarting_description": "ØŗŲŠØĒŲ… ØĒØ­Ø¯ŲŠØĢ Ų‡Ø°Ų‡ Ø§Ų„ØĩŲØ­ØŠ بؚد Ų„Ø­ØļاØĒ.", + "server_restarting_title": "؊ØĒŲ… اؚاد؊ ØĒØ´ØēŲŠŲ„ Ø§Ų„ØŽØ§Ø¯Ų…", "server_stats": "ØĨØ­ØĩاØĻŲŠØ§ØĒ Ø§Ų„ØŽØ§Ø¯Ų…", "server_update_available": "ØĒØ­Ø¯ŲŠØĢ Ø§Ų„ØŽØ§Ø¯Ų… Ų…ØĒاح", "server_version": "ØĨØĩØ¯Ø§Øą Ø§Ų„ØŽØ§Ø¯Ų…", @@ -1929,6 +1976,7 @@ "show_slideshow_transition": "ØĨØ¸Ų‡Ø§Øą Ø§Ų†ØĒŲ‚Ø§Ų„ ØšØąØļ Ø§Ų„Ø´ØąØ§ØĻØ­", "show_supporter_badge": "Ø´Ø§ØąØŠ Ø§Ų„Ų…Ø¤ŲŠØ¯", "show_supporter_badge_description": "ØĨØ¸Ų‡Ø§Øą Ø´Ø§ØąØŠ Ø§Ų„Ų…Ø¤ŲŠØ¯", + "show_text_recognition": "اØļŲ‡Ø§Øą Ø§Ų„ØĒØšØąŲ ØšŲ„Ų‰ Ø§Ų„Ų†Øĩ؈Øĩ", "show_text_search_menu": "ØšØąØļ Ų‚Ø§ØĻŲ…ØŠ ØŽŲŠØ§ØąØ§ØĒ Ø§Ų„Ø¨Ø­ØĢ ؁؊ Ø§Ų„Ų†Øĩ", "shuffle": "ØŽŲ„Øˇ", "sidebar": "Ø§Ų„Ø´ØąŲŠØˇ Ø§Ų„ØŦØ§Ų†Ø¨ŲŠ", @@ -1999,6 +2047,7 @@ "tags": "Ø§Ų„ØšŲ„Ø§Ų…Ø§ØĒ", "tap_to_run_job": "Ø§Ų†Ų‚Øą Ų„ØĒØ´ØēŲŠŲ„ Ø§Ų„Ų…Ų‡Ų…ØŠ", "template": "Ø§Ų„Ų†Ų…ŲˆØ°ØŦ", + "text_recognition": "Ø§Ų„ØĒØšØąŲ ØšŲ„Ų‰ Ø§Ų„Ų†Øĩ؈Øĩ", "theme": "Ų…Ø¸Ų‡Øą", "theme_selection": "ا؎ØĒŲŠØ§Øą Ø§Ų„ØŗŲ…ØŠ", "theme_selection_description": "Ų‚Ų… بØĒØšŲŠŲŠŲ† Ø§Ų„ØŗŲ…ØŠ ØĒŲ„Ų‚Ø§ØĻŲŠŲ‹Ø§ ØšŲ„Ų‰ Ø§Ų„Ų„ŲˆŲ† Ø§Ų„ŲØ§ØĒØ­ ØŖŲˆ Ø§Ų„Ø¯Ø§ŲƒŲ† Ø¨Ų†Ø§ØĄŲ‹ ØšŲ„Ų‰ ØĒ؁ØļŲŠŲ„Ø§ØĒ Ų†Ø¸Ø§Ų… Ø§Ų„Ų…ØĒØĩŲØ­ Ø§Ų„ØŽØ§Øĩ Ø¨Ųƒ", @@ -2019,6 +2068,7 @@ "third_party_resources": "Ų…ŲˆØ§ØąØ¯ Ø§Ų„ØˇØąŲ Ø§Ų„ØĢØ§Ų„ØĢ", "time": "ŲˆŲ‚ØĒ", "time_based_memories": "Ø°ŲƒØąŲŠØ§ØĒ Ø§ØŗØĒŲ†Ø§Ø¯Ų‹Ø§ Ų„Ų„ŲˆŲ‚ØĒ", + "time_based_memories_duration": "ؚدد Ø§Ų„ØĢŲˆØ§Ų†ŲŠ Ų„Ø§Ø¸Ų‡Ø§Øą ŲƒŲ„ ØĩŲˆØąØŠ.", "timeline": "Ø§Ų„ØŽØˇ Ø§Ų„Ø˛Ų…Ų†ŲŠ", "timezone": "Ø§Ų„Ų…Ų†ØˇŲ‚ØŠ Ø§Ų„Ø˛Ų…Ų†ŲŠØŠ", "to_archive": "ØŖØąØ´ŲØŠ", @@ -2030,6 +2080,7 @@ "to_select": "Ų„Ų„ØĒØ­Ø¯ŲŠØ¯", "to_trash": "Ø­Ø°Ų", "toggle_settings": "Ø§Ų„ØĨؚداداØĒ", + "toggle_theme_description": "ØĒØ¨Ø¯ŲŠŲ„ Ø§Ų„ØŗŲ…ØŠ", "total": "Ø§Ų„ØĨØŦŲ…Ø§Ų„ŲŠ", "total_usage": "Ø§Ų„Ø§ØŗØĒØŽØ¯Ø§Ų… Ø§Ų„ØĨØŦŲ…Ø§Ų„ŲŠ", "trash": "Ø§Ų„Ų…Ų‡Ų…Ų„Ø§ØĒ", @@ -2159,12 +2210,13 @@ "welcome": "Ų…ØąØ­Ø¨Ø§Ų‹", "welcome_to_immich": "Ų…ØąØ­Ø¨Ø§Ų‹ Ø¨Ųƒ ؁؊ Immich", "wifi_name": "Ø§ØŗŲ… Ø´Ø¨ŲƒØŠ Wi-Fi", - "wrong_pin_code": "ØąŲ…Ø˛ PIN ØŽØ§ØˇØĻ", + "workflow": "ØŗŲŠØą Ø§Ų„ØšŲ…Ų„", + "wrong_pin_code": "ØąŲ…Ø˛ Ø§Ų„ØĒØšØąŲŠŲ Ø§Ų„Ø´ØŽØĩ؊ ØŽØ§ØˇØĻ", "year": "ØŗŲ†ØŠ", - "years_ago": "Ų…Ų†Ø° {years, plural, one {# ØŗŲ†ØŠ} other {# ØŗŲ†ŲˆØ§ØĒ}}", + "years_ago": "{years, plural, one {# ØŗŲ†ØŠ} other {# ØŗŲ†ŲˆØ§ØĒ}} Ų…ØļØĒ", "yes": "Ų†ØšŲ…", "you_dont_have_any_shared_links": "Ų„ŲŠØŗ Ų„Ø¯ŲŠŲƒ ØŖŲŠ ØąŲˆØ§Ø¨Øˇ Ų…Ø´ØĒØąŲƒØŠ", - "your_wifi_name": "Ø§ØŗŲ… Ø´Ø¨ŲƒØŠ Wi-Fi Ø§Ų„ØŽØ§Øĩ Ø¨Ųƒ", + "your_wifi_name": "Ø§ØŗŲ… Ø´Ø¨ŲƒØŠ Ø§Ų„Ø§ØĒØĩØ§Ų„ Ø§Ų„Ų„Ø§ØŗŲ„ŲƒŲŠ Ø§Ų„ØŽØ§Øĩ Ø¨Ųƒ", "zoom_image": "ØĒŲƒØ¨ŲŠØą Ø§Ų„ØĩŲˆØąØŠ", "zoom_to_bounds": "ØĒŲƒØ¨ŲŠØą Ø­ØĒŲ‰ Ø­Ø¯ŲˆØ¯ Ø§Ų„Ų…Ų†ØˇŲ‚ØŠ" } diff --git a/i18n/az.json b/i18n/az.json index d08d76ed46..310fe831dd 100644 --- a/i18n/az.json +++ b/i18n/az.json @@ -7,6 +7,7 @@ "action_common_update": "Yenilə", "actions": "Əməliyyatlar", "active": "Aktiv", + "active_count": "Aktiv: {count}", "activity": "Fəaliyyət", "activity_changed": "Fəaliyyət {enabled, select, true {aktivdir} other {aktiv deyil}}", "add": "Əlavə et", @@ -31,7 +32,9 @@ "add_to_album_toggle": "{album} ÃŧçÃŧn seçimi dəyişin", "add_to_albums": "Albomlara əlavə et", "add_to_albums_count": "({count}) albomlarÄąna əlavə et", + "add_to_bottom_bar": "Əlavə et", "add_to_shared_album": "PaylaÅŸÄąlan alboma əlavə et", + "add_upload_to_stack": "Yeni yÃŧklənmə əlavə et", "add_url": "URL əlavə et", "added_to_archive": "Arxivə əlavə edildi", "added_to_favorites": "Sevimlilələrə əlavə edildi", @@ -63,7 +66,6 @@ "confirm_user_password_reset": "{user} adlÄą istifadəçinin şifrəsini sÄąfÄąrlamaq istədiyinizdən əminmisiniz?", "disable_login": "Giriş etməni sÃļndÃŧr", "duplicate_detection_job_description": "Bənzər şəkilləri tapmaq ÃŧçÃŧn maÅŸÄąn Ãļyrənməsini işə salÄąn. Bu prosses Smart Search funksiyasÄąna əsaslanÄąr", - "external_library_management": "Xarici kitabxana idarəetməsi", "face_detection": "Üz tanÄąma", "force_delete_user_warning": "XƏBƏRDARLIQ: Bu əməliyyat istifadəçi və bÃŧtÃŧn məlumatlarÄą siləcəkdir. Bu prossesi və silinən fayllarÄą geri qaytarmaq olmaz.", "image_format_description": "WebP, JPEG faylÄąna gÃļrə daha kiçik həcmə sahibdir, lakin onu kodlaşdÄąrmaq daha çox vaxt alÄąr.", @@ -79,7 +81,6 @@ "job_not_concurrency_safe": "Bu iş eyni vaxtda icra ÃŧçÃŧn təhlÃŧkəsiz deyil.", "job_settings": "TapÅŸÄąrÄąq parametrləri", "job_settings_description": "Parallel şəkildə fəaliyyət gÃļstərən tapÅŸÄąrÄąqlarÄą idarə et", - "job_status": "TapÅŸÄąrÄąq statusu", "jobs_delayed": "{jobCount, plural, other {# gecikməli}}", "jobs_failed": "{jobCount, plural, other {# uğursuz}}", "library_created": "{library} kitabxanasÄą yaradÄąldÄą", diff --git a/i18n/be.json b/i18n/be.json index 3a871c6728..84a3e517e9 100644 --- a/i18n/be.json +++ b/i18n/be.json @@ -72,7 +72,6 @@ "disable_login": "АдĐēĐģŅŽŅ‡Ņ‹Ņ†ŅŒ ŅƒĐ˛Đ°Ņ…ĐžĐ´", "duplicate_detection_job_description": "ЗаĐŋŅƒŅŅ†Ņ–Ņ†ŅŒ ĐŧĐ°ŅˆŅ‹ĐŊĐŊаĐĩ ĐŊĐ°Đ˛ŅƒŅ‡Đ°ĐŊĐŊĐĩ ĐŊа аĐēŅ‚Ņ‹Đ˛Đ°Ņ… Đ´ĐģŅ Đ˛Ņ‹ŅŅžĐģĐĩĐŊĐŊŅ ĐŋадОйĐŊҋ҅ Đ˛Ņ‹ŅŅž. ЗаĐģĐĩĐļŅ‹Ņ†ŅŒ ад Smart Search", "exclusion_pattern_description": "ШайĐģĐžĐŊŅ‹ Đ˛Ņ‹ĐēĐģŅŽŅ‡ŅĐŊĐŊŅ даСваĐģŅŅŽŅ†ŅŒ Ņ–ĐŗĐŊĐ°Ņ€Đ°Đ˛Đ°Ņ†ŅŒ Ņ„Đ°ĐšĐģŅ‹ Ņ– ĐŋаĐŋĐēŅ– ĐŋҀҋ ҁĐēаĐŊаваĐŊĐŊŅ– Đ˛Đ°ŅˆĐ°Đš ĐąŅ–ĐąĐģŅ–ŅŅ‚ŅĐēŅ–. Đ“ŅŅ‚Đ° ĐēĐ°Ņ€Ņ‹ŅĐŊа, ĐēаĐģŅ– Ņž Đ˛Đ°Ņ Ņ‘ŅŅ†ŅŒ ĐŋаĐŋĐēŅ–, ŅĐēŅ–Ņ СĐŧŅŅˆŅ‡Đ°ŅŽŅ†ŅŒ Ņ„Đ°ĐšĐģŅ‹, ŅĐēŅ–Ņ Đ˛Ņ‹ ĐŊĐĩ Ņ…ĐžŅ‡Đ°Ņ†Đĩ Ņ–ĐŧĐŋĐ°Ņ€Ņ‚Đ°Đ˛Đ°Ņ†ŅŒ, ĐŊаĐŋҀҋĐēĐģад, Ņ„Đ°ĐšĐģŅ‹ RAW.", - "external_library_management": "ĐšŅ–Ņ€Đ°Đ˛Đ°ĐŊĐŊĐĩ СĐŊĐĩ҈ĐŊŅĐš ĐąŅ–ĐąĐģŅ–ŅŅ‚ŅĐēаК", "face_detection": "Đ’Ņ‹ŅŅžĐģĐĩĐŊĐŊĐĩ Ņ‚Đ˛Đ°Ņ€Đ°Ņž", "face_detection_description": "Đ’Ņ‹ŅŅžĐģŅŅ†ŅŒ Ņ‚Đ˛Đ°Ņ€Ņ‹ ĐŊа Ņ„ĐžŅ‚Đ°ĐˇĐ´Ņ‹ĐŧĐēĐ°Ņ… Ņ– Đ˛Ņ–Đ´ŅĐ° С даĐŋаĐŧĐžĐŗĐ°Đš ĐŧĐ°ŅˆŅ‹ĐŊĐŊĐ°ĐŗĐ° ĐŊĐ°Đ˛ŅƒŅ‡Đ°ĐŊĐŊŅ. ДĐģŅ Đ˛Ņ–Đ´ŅĐ° ŅžĐģŅ–Ņ‡Đ˛Đ°ĐĩŅ†Ņ†Đ° Ņ‚ĐžĐģҌĐēŅ– ĐŧŅ–ĐŊŅ–ŅŅ†ŅŽŅ€Đ°. \"АйĐŊĐ°Đ˛Ņ–Ņ†ŅŒ\" (ĐŋĐĩŅ€Đ°)аĐŋŅ€Đ°Ņ†ĐžŅžĐ˛Đ°Đĩ ŅžŅĐĩ ĐŧĐĩĐ´Ņ‹Ņ. \"ĐĄĐēŅ–ĐŊŅƒŅ†ŅŒ\" Đ´Đ°Đ´Đ°Ņ‚ĐēОва Đ°Ņ‡Ņ‹ŅˆŅ‡Đ°Đĩ ŅžŅĐĩ ĐąŅĐŗŅƒŅ‡Ņ‹Ņ даĐŊŅ‹Ņ ĐŋŅ€Đ° Ņ‚Đ˛Đ°Ņ€Ņ‹. \"ĐĐ´ŅŅƒŅ‚ĐŊŅ–Ņ‡Đ°Đĩ\" ŅŅ‚Đ°Đ˛Ņ–Ņ†ŅŒ ҃ Ņ‡Đ°Ņ€ĐŗŅƒ ĐŧĐĩĐ´Ņ‹Ņ, ŅĐēŅ–Ņ ŅŅˆŅ‡Ņ ĐŊĐĩ ĐąŅ‹ĐģŅ– аĐŋŅ€Đ°Ņ†Đ°Đ˛Đ°ĐŊŅ‹Ņ. Đ’Ņ‹ŅŅžĐģĐĩĐŊŅ‹Ņ Ņ‚Đ˛Đ°Ņ€Ņ‹ ĐąŅƒĐ´ŅƒŅ†ŅŒ ĐŋĐ°ŅŅ‚Đ°ŅžĐģĐĩĐŊŅ‹ Ņž Ņ‡Đ°Ņ€ĐŗŅƒ Đ´ĐģŅ Ņ€Đ°ŅĐŋаСĐŊаваĐŊĐŊŅ Đ°ŅĐžĐą ĐŋĐ°ŅĐģŅ ĐˇĐ°Đ˛ŅŅ€ŅˆŅĐŊĐŊŅ Đ˛Ņ‹ŅŅžĐģĐĩĐŊĐŊŅ Ņ‚Đ˛Đ°Ņ€Đ°Ņž, С ĐŗŅ€ŅƒĐŋаваĐŊĐŊĐĩĐŧ Ņ–Ņ… Đŋа ҖҁĐŊŅƒŅŽŅ‡Ņ‹Ņ… айО ĐŊĐžĐ˛Ņ‹Ņ… ĐģŅŽĐ´ĐˇŅŅ….", "facial_recognition_job_description": "Đ“Ņ€ŅƒĐŋĐ°Đ˛Đ°Ņ†ŅŒ Đ˛Ņ‹ŅŅžĐģĐĩĐŊŅ‹Ņ Ņ‚Đ˛Đ°Ņ€Ņ‹ Đŋа Đ°ŅĐžĐąĐ°Ņ…. Đ“ŅŅ‚Ņ‹ ŅŅ‚Đ°Đŋ Đ˛Ņ‹ĐēĐžĐŊваĐĩŅ†Ņ†Đ° ĐŋĐ°ŅĐģŅ ĐˇĐ°Đ˛ŅŅ€ŅˆŅĐŊĐŊŅ Đ˛Ņ‹ŅŅžĐģĐĩĐŊĐŊŅ Ņ‚Đ˛Đ°Ņ€Đ°Ņž. \"ĐĄĐēŅ–ĐŊŅƒŅ†ŅŒ\" (ĐŋĐ°ŅžŅ‚ĐžŅ€ĐŊа) ĐŋĐĩŅ€Đ°ĐŗŅ€ŅƒĐŋĐžŅžĐ˛Đ°Đĩ ŅžŅĐĩ Ņ‚Đ˛Đ°Ņ€Ņ‹. \"ĐĐ´ŅŅƒŅ‚ĐŊŅ–Ņ‡Đ°Đĩ\" ŅŅ‚Đ°Đ˛Ņ–Ņ†ŅŒ ҃ Ņ‡Đ°Ņ€ĐŗŅƒ Ņ‚Đ˛Đ°Ņ€Ņ‹, ŅĐēŅ–Ņ ŅŅˆŅ‡Ņ ĐŊĐĩ ĐŋҀҋĐŋŅ–ŅĐ°ĐŊŅ‹Ņ да ŅĐēОК-ĐŊĐĩĐąŅƒĐ´ĐˇŅŒ Đ°ŅĐžĐąŅ‹.", @@ -103,7 +102,6 @@ "job_not_concurrency_safe": "Đ“ŅŅ‚Đ° СадаĐŊĐŊĐĩ ĐŊĐĩĐąŅŅĐŋĐĩ҇ĐŊаĐĩ Đ´ĐģŅ ĐēаĐŊĐēŅƒŅ€ŅĐŊŅ‚ĐŊĐ°ĐŗĐ°(адĐŊĐ°Ņ‡Đ°ŅĐžĐ˛Đ°ĐŗĐ°, ĐŋĐ°Ņ€Đ°ĐģĐĩĐģҌĐŊĐ°ĐŗĐ°) Đ˛Ņ‹ĐēаĐŊаĐŊĐŊŅ.", "job_settings": "НаĐģĐ°Đ´Ņ‹ СадаĐŊĐŊŅŅž", "job_settings_description": "ĐšŅ–Ņ€Đ°Đ˛Đ°Ņ†ŅŒ ĐŊаĐģадаĐŧŅ– адĐŊĐ°Ņ‡Đ°ŅĐžĐ˛Đ°ĐŗĐ° (ĐŋĐ°Ņ€Đ°ĐģĐĩĐģҌĐŊĐ°ĐŗĐ°) Đ˛Ņ‹ĐēаĐŊаĐŊĐŊŅ СадаĐŊĐŊŅ", - "job_status": "ĐĄŅ‚Đ°ĐŊĐžĐ˛Ņ–ŅˆŅ‡Đ° СадаĐŊĐŊŅ", "jobs_delayed": "{jobCount, plural, other {# адĐēĐģадСĐĩĐŊа}}", "jobs_failed": "{jobCount, plural, other {# ĐŊĐĩ Đ˛Ņ‹ĐēаĐŊаĐģĐ°ŅŅ}}", "library_created": "ĐĄŅ‚Đ˛ĐžŅ€Đ°ĐŊа ĐąŅ–ĐąĐģŅ–ŅŅ‚ŅĐēа: {library}", @@ -171,7 +169,6 @@ "user_restore_description": "ĐŖĐģŅ–ĐēĐžĐ˛Ņ‹ СаĐŋҖҁ ĐēĐ°Ņ€Ņ‹ŅŅ‚Đ°ĐģҌĐŊŅ–Đēа {user} ĐąŅƒĐ´ĐˇĐĩ адĐŊĐžŅžĐģĐĩĐŊŅ‹.", "user_settings": "НаĐģĐ°Đ´Ņ‹ ĐēĐ°Ņ€Ņ‹ŅŅ‚Đ°ĐģҌĐŊŅ–Đēа", "user_settings_description": "ĐšŅ–Ņ€Đ°Đ˛Đ°ĐŊĐŊĐĩ ĐŊаĐģадаĐŧŅ– ĐēĐ°Ņ€Ņ‹ŅŅ‚Đ°ĐģҌĐŊŅ–Đēа", - "user_successfully_removed": "ĐšĐ°Ņ€Ņ‹ŅŅ‚Đ°ĐģҌĐŊŅ–Đē {email} ĐąŅ‹Ņž ĐŋĐ°ŅĐŋŅŅ…ĐžĐ˛Đ° Đ˛Ņ‹Đ´Đ°ĐģĐĩĐŊŅ‹.", "version_check_enabled_description": "ĐŖĐēĐģŅŽŅ‡Ņ‹Ņ†ŅŒ ĐŋŅ€Đ°Đ˛ĐĩŅ€Đē҃ вĐĩҀҁҖҖ", "version_check_implications": "Đ¤ŅƒĐŊĐēŅ†Ņ‹Ņ ĐŋŅ€Đ°Đ˛ĐĩŅ€ĐēŅ– вĐĩҀҁҖҖ ĐŋĐĩŅ€Ņ‹ŅĐ´Ņ‹Ņ‡ĐŊа ĐˇĐ˛ŅŅ€Ņ‚Đ°ĐĩŅ†Ņ†Đ° да github.com", "version_check_settings": "ĐŸŅ€Đ°Đ˛ĐĩŅ€Đēа вĐĩҀҁҖҖ", diff --git a/i18n/bg.json b/i18n/bg.json index 651917e1b0..0bf54f1ee7 100644 --- a/i18n/bg.json +++ b/i18n/bg.json @@ -7,6 +7,7 @@ "action_common_update": "ОбĐŊОви", "actions": "ДĐĩĐšŅŅ‚Đ˛Đ¸Ņ", "active": "АĐēŅ‚Đ¸Đ˛ĐŊи", + "active_count": "АĐēŅ‚Đ¸Đ˛ĐŊи: {count}", "activity": "ДĐĩĐšĐŊĐžŅŅ‚", "activity_changed": "ДĐĩĐšĐŊĐžŅŅ‚Ņ‚Đ° Đĩ {enabled, select, true {вĐēĐģŅŽŅ‡ĐĩĐŊа} other {иСĐēĐģŅŽŅ‡ĐĩĐŊа}}", "add": "Добави", @@ -67,6 +68,7 @@ "confirm_reprocess_all_faces": "ĐĄĐ¸ĐŗŅƒŅ€ĐŊи Đģи ҁ҂Đĩ, ҇Đĩ Đ¸ŅĐēĐ°Ņ‚Đĩ да ҁĐĩ ĐžĐąŅ€Đ°ĐąĐžŅ‚ŅŅ‚ ĐģĐ¸Ņ†Đ°Ņ‚Đ° ĐžŅ‚ĐŊОвО? ĐĸОва ҉Đĩ Đ¸ĐˇŅ‡Đ¸ŅŅ‚Đ¸ Đ˛ŅĐ¸Ņ‡Đēи иĐŧĐĩĐŊŅƒĐ˛Đ°ĐŊи Ņ…ĐžŅ€Đ°.", "confirm_user_password_reset": "ĐĄĐ¸ĐŗŅƒŅ€ĐŊи Đģи ҁ҂Đĩ, ҇Đĩ Đ¸ŅĐēĐ°Ņ‚Đĩ да ĐŊ҃ĐģĐ¸Ņ€Đ°Ņ‚Đĩ ĐŋĐ°Ņ€ĐžĐģĐ°Ņ‚Đ° ĐŊа {user}?", "confirm_user_pin_code_reset": "ĐĐ°Đ¸ŅŅ‚Đ¸ĐŊа Đģи Đ¸ŅĐēĐ°Ņ‚Đĩ да ҁĐŧĐĩĐŊĐ¸Ņ‚Đĩ PIN ĐēОда ĐŊа ĐŋĐžŅ‚Ņ€ĐĩĐąĐ¸Ņ‚ĐĩĐģŅ {user}?", + "copy_config_to_clipboard_description": "КоĐŋĐ¸Ņ€Đ°Đš Ņ‚ĐĩĐēŅƒŅ‰Đ°Ņ‚Đ° ŅĐ¸ŅŅ‚ĐĩĐŧĐŊа ĐēĐžĐŊŅ„Đ¸ĐŗŅƒŅ€Đ°Ņ†Đ¸Ņ ĐēĐ°Ņ‚Đž JSON ОйĐĩĐēŅ‚ в ĐēĐģиĐŋĐąĐžŅ€Đ´Đ°", "create_job": "ĐĄŅŠĐˇĐ´Đ°ĐšŅ‚Đĩ ĐˇĐ°Đ´Đ°Ņ‡Đ°", "cron_expression": "Cron Đ¸ĐˇŅ€Đ°Đˇ", "cron_expression_description": "ĐĐ°ŅŅ‚Ņ€ĐžĐš иĐŊŅ‚ĐĩŅ€Đ˛Đ°Đģа ĐŊа ҁĐēаĐŊĐ¸Ņ€Đ°ĐŊĐĩ иСĐŋĐžĐģСваКĐēи cron Ņ„ĐžŅ€ĐŧĐ°Ņ‚Đ°. За ĐŋОвĐĩ҇Đĩ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "ИСĐēĐģŅŽŅ‡ĐĩŅ‚Đĩ вĐŋĐ¸ŅĐ˛Đ°ĐŊĐĩŅ‚Đž", "duplicate_detection_job_description": "ĐĄŅ‚Đ°Ņ€Ņ‚Đ¸Ņ€Đ°ĐŊĐĩ ĐŧĐ°ŅˆĐ¸ĐŊĐŊĐž ĐžĐąŅƒŅ‡ĐĩĐŊиĐĩ Đ˛ŅŠŅ€Ņ…Ņƒ ĐĩĐģĐĩĐŧĐĩĐŊŅ‚Đ¸, Са ĐžŅ‚ĐēŅ€Đ¸Đ˛Đ°ĐŊĐĩ ĐŊа ĐŋОдОйĐŊи Đ¸ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊĐ¸Ņ. Đ Đ°ĐˇŅ‡Đ¸Ņ‚Đ° ĐŊа ИĐŊŅ‚ĐĩĐģĐ¸ĐŗĐĩĐŊŅ‚ĐŊĐž ĐĸŅŠŅ€ŅĐĩĐŊĐĩ", "exclusion_pattern_description": "МодĐĩĐģи Са иСĐēĐģŅŽŅ‡Đ˛Đ°ĐŊĐĩ ĐŋОСвОĐģŅĐ˛Đ°Ņ‚ да Đ¸ĐŗĐŊĐžŅ€Đ¸Ņ€Đ°Ņ‚Đĩ Ņ„Đ°ĐšĐģОвĐĩ и ĐŋаĐŋĐēи, ĐēĐžĐŗĐ°Ņ‚Đž ҁĐēаĐŊĐ¸Ņ€Đ°Ņ‚Đĩ Đ˛Đ°ŅˆĐ°Ņ‚Đ° йийĐģĐ¸ĐžŅ‚ĐĩĐēа. ĐĸОва Đĩ ĐŋĐžŅ‚Ņ€ĐĩĐąĐŊĐž, аĐēĐž иĐŧĐ°Ņ‚Đĩ ĐŋаĐŋĐēи, ĐēĐžĐ¸Ņ‚Đž ŅŅŠĐ´ŅŠŅ€ĐļĐ°Ņ‚ Ņ„Đ°ĐšĐģОвĐĩ, ĐēĐžĐ¸Ņ‚Đž ĐŊĐĩ Đ¸ŅĐēĐ°Ņ‚Đĩ да иĐŧĐŋĐžŅ€Ņ‚Đ¸Ņ€Đ°Ņ‚Đĩ. ĐŸŅ€Đ¸ĐŧĐĩŅ€ĐŊĐž - RAW Ņ„Đ°ĐšĐģОвĐĩ.", - "external_library_management": "ĐŖĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиĐĩ ĐŊа Đ˛ŅŠĐŊ҈ĐŊĐ¸Ņ‚Đĩ йийĐģĐ¸ĐžŅ‚ĐĩĐēи", + "export_config_as_json_description": "ЗаĐŋаСи Ņ‚ĐĩĐēŅƒŅ‰Đ°Ņ‚Đ° ŅĐ¸ŅŅ‚ĐĩĐŧĐŊа ĐēĐžĐŊŅ„Đ¸ĐŗŅƒŅ€Đ°Ņ†Đ¸Ņ ĐēĐ°Ņ‚Đž JSON Ņ„Đ°ĐšĐģ", + "external_libraries_page_description": "АдĐŧиĐŊĐ¸ŅŅ‚Ņ€Đ¸Ņ€Đ°ĐŊĐĩ ĐŊа Đ˛ŅŠĐŊ҈ĐŊĐ°Ņ‚Đ° ŅŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Đ° ĐŊа йийĐģĐ¸ĐžŅ‚ĐĩĐēĐ°Ņ‚Đ°", "face_detection": "ĐžŅ‚ĐēŅ€Đ¸Đ˛Đ°ĐŊĐĩ ĐŊа ĐģĐ¸Ņ†Đ°", "face_detection_description": "Да ҁĐĩ Ņ€Đ°ĐˇĐŋОСĐŊĐ°Đ˛Đ°Ņ‚ ĐģĐ¸Ņ†Đ° в ĐĩĐģĐĩĐŧĐĩĐŊŅ‚Đ¸ ҇ҀĐĩС ĐŧĐ°ŅˆĐ¸ĐŊĐŊĐž ĐžĐąŅƒŅ‡ĐĩĐŊиĐĩ. За видĐĩĐ°Ņ‚Đ° ҁĐĩ иСĐŋĐžĐģСва ŅĐ°ĐŧĐž ĐŧиĐŊĐ¸Đ°Ņ‚ŅŽŅ€Đ°Ņ‚Đ°. \"Đ’ŅĐ¸Ņ‡Đēи\" ĐžĐąŅ€Đ°ĐąĐžŅ‚Đ˛Đ° ĐžŅ‚ĐŊОвО Đ˛ŅĐ¸Ņ‡Đēи ĐĩĐģĐĩĐŧĐĩĐŊŅ‚Đ¸. \"ЛиĐŋŅĐ˛Đ°Ņ‰Đ¸\" ĐˇĐ°Ņ€ĐĩĐļда Са ĐžĐąŅ€Đ°ĐąĐžŅ‚Đēа ĐĩĐģĐĩĐŧĐĩĐŊŅ‚Đ¸, ĐēĐžĐ¸Ņ‚Đž ĐŊа ҁĐĩ ĐžĐąŅ€Đ°ĐąĐžŅ‚ĐĩĐŊи Đ˛ŅĐĩ ĐžŅ‰Đĩ. ĐžŅ‚ĐēŅ€Đ¸Ņ‚Đ¸Ņ‚Đĩ ĐģĐ¸Ņ†Đ° ҉Đĩ ĐąŅŠĐ´Đ°Ņ‚ ĐŋĐžĐ´Ņ€ĐĩĐ´ĐĩĐŊи в ĐžĐŋĐ°ŅˆĐēа Са Ņ€Đ°ĐˇĐŋОСĐŊаваĐŊĐĩ ĐŊа ĐģĐ¸Ņ†Đ° ҁĐģĐĩĐ´ ĐˇĐ°Đ˛ŅŠŅ€ŅˆĐ˛Đ°ĐŊĐĩ ĐŊа Ņ„ŅƒĐŊĐēŅ†Đ¸ŅŅ‚Đ° Са ĐžŅ‚ĐēŅ€Đ¸Đ˛Đ°ĐŊĐĩ ĐŊа ĐģĐ¸Ņ†Đ°, ĐēĐ°Ņ‚Đž ҁĐĩ ĐŗŅ€ŅƒĐŋĐ¸Ņ€Đ°Ņ‚ в ŅŅŠŅ‰ĐĩŅŅ‚Đ˛ŅƒĐ˛Đ°Ņ‰Đ¸ иĐģи ĐŊОви Ņ…ĐžŅ€Đ°.", "facial_recognition_job_description": "Đ“Ņ€ŅƒĐŋĐ¸Ņ€Đ°ĐšŅ‚Đĩ ĐžŅ‚ĐēŅ€Đ¸Ņ‚Đ¸Ņ‚Đĩ ĐģĐ¸Ņ†Đ° в Ņ…ĐžŅ€Đ°. ĐĸаСи ŅŅ‚ŅŠĐŋĐēа ҁĐĩ иСĐŋҊĐģĐŊŅĐ˛Đ° ҁĐģĐĩĐ´ ĐˇĐ°Đ˛ŅŠŅ€ŅˆĐ˛Đ°ĐŊĐĩ ĐŊа Ņ€Đ°ĐˇĐŋОСĐŊаваĐŊĐĩŅ‚Đž ĐŊа ĐģĐ¸Ņ†Đ°. â€žĐŅƒĐģĐ¸Ņ€Đ°ĐŊĐĩ“ ĐŋŅ€ĐĩĐŗŅ€ŅƒĐŋĐ¸Ņ€Đ° Đ˛ŅĐ¸Ņ‡Đēи ĐģĐ¸Ņ†Đ°. „ЛиĐŋŅĐ˛Đ°Ņ‰Đ¸â€œ ĐŋĐžŅŅ‚Đ°Đ˛Ņ в ĐžĐŋĐ°ŅˆĐēа ĐģĐ¸Ņ†Đ°Ņ‚Đ°, ĐēĐžĐ¸Ņ‚Đž ĐŊŅĐŧĐ°Ņ‚ ĐŊаСĐŊĐ°Ņ‡ĐĩĐŊ Ņ‡ĐžĐ˛ĐĩĐē.", @@ -102,22 +105,28 @@ "image_thumbnail_description": "МаĐģĐēа ĐŧиĐŊĐ¸Đ°Ņ‚ŅŽŅ€Đ° ҁ ĐŋŅ€ĐĩĐŧĐ°Ņ…ĐŊĐ°Ņ‚Đ¸ ĐŧĐĩŅ‚Đ°Đ´Đ°ĐŊĐŊи, иСĐŋĐžĐģСваĐŊа ĐŋŅ€Đ¸ ĐŋŅ€ĐĩĐŗĐģĐĩĐ´ ĐŊа ĐŗŅ€ŅƒĐŋи ҁĐŊиĐŧĐēи, ĐēĐ°Ņ‚Đž ĐžŅĐŊОвĐŊĐ¸Ņ ĐĩĐēŅ€Đ°ĐŊ", "image_thumbnail_quality_description": "ĐšĐ°Ņ‡ĐĩŅŅ‚Đ˛Đž ĐŊа ĐŧиĐŊĐ¸Đ°Ņ‚ŅŽŅ€Đ°Ņ‚Đ° ĐžŅ‚ 1 Đ´Đž 100. По-Đ˛Đ¸ŅĐžĐēĐ°Ņ‚Đ° ŅŅ‚ĐžĐšĐŊĐžŅŅ‚ Đĩ ĐŋĐž-Đ´ĐžĐąŅ€Đ°, ĐŊĐž вОди Đ´Đž ĐŋĐž-ĐŗĐžĐģĐĩĐŧи Ņ„Đ°ĐšĐģОвĐĩ и ĐŧĐžĐļĐĩ да ĐŊаĐŧаĐģи ĐąŅŠŅ€ĐˇĐžĐ´ĐĩĐšŅŅ‚Đ˛Đ¸ĐĩŅ‚Đž ĐŊа ĐŋŅ€Đ¸ĐģĐžĐļĐĩĐŊиĐĩŅ‚Đž.", "image_thumbnail_title": "ĐĐ°ŅŅ‚Ņ€ĐžĐšĐēи ĐŊа ĐŧиĐŊĐ¸Đ°Ņ‚ŅŽŅ€Đ¸Ņ‚Đĩ", + "import_config_from_json_description": "ИĐŧĐŋĐžŅ€Ņ‚ ĐŊа ŅĐ¸ŅŅ‚ĐĩĐŧĐŊа ĐēĐžĐŊŅ„Đ¸ĐŗŅƒŅ€Đ°Ņ†Đ¸Ņ ҇ҀĐĩС ĐēĐ°Ņ‡Đ˛Đ°ĐŊĐĩ ĐŊа JSON Ņ„Đ°ĐšĐģ", "job_concurrency": "ĐŸĐ°Ņ€Đ°ĐģĐĩĐģĐŊĐžŅŅ‚ ĐŊа {job}", "job_created": "Đ—Đ°Đ´Đ°Ņ‡Đ°Ņ‚Đ° Đĩ ŅŅŠĐˇĐ´Đ°Đ´ĐĩĐŊа", "job_not_concurrency_safe": "ĐĸаСи ĐˇĐ°Đ´Đ°Ņ‡Đ° ĐŊĐĩ Đĩ ĐąĐĩСОĐŋĐ°ŅĐŊа Са ĐŋĐ°Ņ€Đ°ĐģĐĩĐģĐŊĐž иСĐŋҊĐģĐŊĐĩĐŊиĐĩ.", "job_settings": "ĐĐ°ŅŅ‚Ņ€ĐžĐšĐēи Са ĐˇĐ°Đ´Đ°Ņ‡Đ¸Ņ‚Đĩ", "job_settings_description": "ĐŖĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиĐĩ ĐŊа ĐŋĐ°Ņ€Đ°ĐģĐĩĐģĐŊĐžŅŅ‚Ņ‚Đ° ĐŊа ĐˇĐ°Đ´Đ°Ņ‡Đ¸Ņ‚Đĩ", - "job_status": "ĐĄŅ‚Đ°Ņ‚ŅƒŅ ĐŊа ĐˇĐ°Đ´Đ°Ņ‡Đ°Ņ‚Đ°", "jobs_delayed": "{jobCount, plural, other {# СайавĐĩĐŊи}}", "jobs_failed": "{jobCount, plural, other {# ĐŊĐĩ҃ҁĐŋĐĩ҈ĐŊи}}", + "jobs_over_time": "Đ Đ°ĐąĐžŅ‚Đ° Đ˛ŅŠĐ˛ Đ˛Ņ€ĐĩĐŧĐĩŅ‚Đž", "library_created": "ĐĄŅŠĐˇĐ´Đ°Đ´ĐĩĐŊа йийĐģĐ¸ĐžŅ‚ĐĩĐēа: {library}", "library_deleted": "БибĐģĐ¸ĐžŅ‚ĐĩĐēа Đĩ Đ¸ĐˇŅ‚Ņ€Đ¸Ņ‚Đ°", + "library_details": "ĐŸĐžĐ´Ņ€ĐžĐąĐŊĐžŅŅ‚Đ¸ Са йийĐģĐ¸ĐžŅ‚ĐĩĐēĐ°Ņ‚Đ°", + "library_folder_description": "ИСйĐĩŅ€ĐĩŅ‚Đĩ ĐŋаĐŋĐēа Са иĐŧĐŋĐžŅ€Ņ‚Đ¸Ņ€Đ°ĐŊĐĩ. ПаĐŋĐēĐ°Ņ‚Đ° и ĐŋОдĐŋаĐŋĐēĐ¸Ņ‚Đĩ в ĐŊĐĩŅ ҉Đĩ ĐąŅŠĐ´Đ°Ņ‚ ҁĐēаĐŊĐ¸Ņ€Đ°ĐŊи Са Đ¸ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊĐ¸Ņ и видĐĩа.", + "library_remove_exclusion_pattern_prompt": "ĐĄĐ¸ĐŗŅƒŅ€ĐŊи Đģи ҁ҂Đĩ, ҇Đĩ Đ¸ŅĐēĐ°Ņ‚Đĩ да ĐŋŅ€ĐĩĐŧĐ°Ņ…ĐŊĐĩŅ‚Đĩ Ņ‚ĐžĐˇĐ¸ ŅˆĐ°ĐąĐģĐžĐŊ Са Đ¸ĐŗĐŊĐžŅ€Đ¸Ņ€Đ°ĐŊĐĩ?", + "library_remove_folder_prompt": "ĐĄĐ¸ĐŗŅƒŅ€ĐŊи Đģи ҁ҂Đĩ, ҇Đĩ Đ¸ŅĐēĐ°Ņ‚Đĩ да ĐŋŅ€ĐĩĐŧĐ°Ņ…ĐŊĐĩŅ‚Đĩ Ņ‚Đ°ĐˇĐ¸ ĐŋаĐŋĐēа Са иĐŧĐŋĐžŅ€Ņ‚Đ¸Ņ€Đ°ĐŊĐĩ?", "library_scanning": "ПĐĩŅ€Đ¸ĐžĐ´Đ¸Ņ‡ĐŊĐž ҁĐēаĐŊĐ¸Ņ€Đ°ĐŊĐĩ", "library_scanning_description": "КоĐŊŅ„Đ¸ĐŗŅƒŅ€Đ¸Ņ€Đ°Đš ĐŋĐĩŅ€Đ¸ĐžĐ´Đ¸Ņ‡ĐŊĐž ҁĐēаĐŊĐ¸Ņ€Đ°ĐŊĐĩ ĐŊа йийĐģĐ¸ĐžŅ‚ĐĩĐēĐ°Ņ‚Đ°", "library_scanning_enable_description": "ВĐēĐģŅŽŅ‡Đ˛Đ°ĐŊĐĩ ĐŊа ĐŋĐĩŅ€Đ¸ĐžĐ´Đ¸Ņ‡ĐŊĐžŅ‚Đž ҁĐēаĐŊĐ¸Ņ€Đ°ĐŊĐĩ ĐŊа йийĐģĐ¸ĐžŅ‚ĐĩĐēĐ°Ņ‚Đ°", "library_settings": "Đ’ŅŠĐŊ҈ĐŊа йийĐģĐ¸ĐžŅ‚ĐĩĐēа", "library_settings_description": "ĐŖĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиĐĩ ĐŊа ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēĐ¸Ņ‚Đĩ Са Đ˛ŅŠĐŊ҈ĐŊа йийĐģĐ¸ĐžŅ‚ĐĩĐēа", "library_tasks_description": "ĐĄĐēаĐŊĐ¸Ņ€Đ°ĐšŅ‚Đĩ Đ˛ŅŠĐŊ҈ĐŊи йийĐģĐ¸ĐžŅ‚ĐĩĐēи Са ĐŊОви и/иĐģи ĐŋŅ€ĐžĐŧĐĩĐŊĐĩĐŊи ĐĩĐģĐĩĐŧĐĩĐŊŅ‚Đ¸", + "library_updated": "ОбĐŊОвĐĩĐŊа йийĐģĐ¸ĐžŅ‚ĐĩĐēа", "library_watching_enable_description": "НабĐģŅŽĐ´Đ°Đ˛Đ°ĐŊĐĩ Са ĐŋŅ€ĐžĐŧŅĐŊа ĐŊа Ņ„Đ°ĐšĐģОвĐĩŅ‚Đĩ Đ˛ŅŠĐ˛ Đ˛ŅŠĐŊ҈ĐŊĐ°Ņ‚Đ° йийĐģĐ¸ĐžŅ‚ĐĩĐēа", "library_watching_settings": "НабĐģŅŽĐ´Đ°Đ˛Đ°ĐŊĐĩ ĐŊа йийĐģĐ¸ĐžŅ‚ĐĩĐēĐ°Ņ‚Đ° [ЕКСПЕРИМЕНĐĸАЛНО]", "library_watching_settings_description": "ĐĐ˛Ņ‚ĐžĐŧĐ°Ņ‚Đ¸Ņ‡ĐŊĐž ĐŊайĐģŅŽĐ´Đ°Đ˛Đ°Đš Са ĐŋŅ€ĐžĐŧĐĩĐŊĐĩĐŊи Ņ„Đ°ĐšĐģОвĐĩ", @@ -153,7 +162,7 @@ "machine_learning_min_detection_score_description": "МиĐŊиĐŧаĐģĐŊа ĐžŅ†ĐĩĐŊĐēа ĐŊа дОвĐĩŅ€Đ¸Đĩ, Са да ĐąŅŠĐ´Đĩ ŅŅ‡Đ¸Ņ‚Đ°ĐŊĐž ĐģĐ¸Ņ†Đĩ ĐēĐ°Ņ‚Đž ĐžŅ‚ĐēŅ€Đ¸Ņ‚Đž - ĐžŅ‚ 0 Đ´Đž 1. По-ĐŊĐ¸ŅĐēĐ¸Ņ‚Đĩ ŅŅ‚ĐžĐšĐŊĐžŅŅ‚Đ¸ ҉Đĩ ĐžŅ‚ĐēŅ€Đ¸ŅŅ‚ ĐŋОвĐĩ҇Đĩ ĐģĐ¸Ņ†Đ°, ĐŊĐž ĐŧĐžĐļĐĩ да дОвĐĩĐ´Đ°Ņ‚ Đ´Đž Ņ„Đ°ĐģŅˆĐ¸Đ˛Đ¸ ĐŋĐžĐģĐžĐļĐ¸Ņ‚ĐĩĐģĐŊи Ņ€ĐĩĐˇŅƒĐģŅ‚Đ°Ņ‚Đ¸.", "machine_learning_min_recognized_faces": "МиĐŊиĐŧ҃Đŧ Ņ€Đ°ĐˇĐŋОСĐŊĐ°Ņ‚Đ¸ ĐģĐ¸Ņ†Đ°", "machine_learning_min_recognized_faces_description": "МиĐŊиĐŧаĐģĐŊĐ¸ŅŅ‚ ĐąŅ€ĐžĐš Ņ€Đ°ĐˇĐŋОСĐŊĐ°Ņ‚Đ¸ ĐģĐ¸Ņ†Đ°, ĐŊĐĩĐžĐąŅ…ĐžĐ´Đ¸Đŧи Са ŅŅŠĐˇĐ´Đ°Đ˛Đ°ĐŊĐĩŅ‚Đž ĐŊа ĐģĐ¸Ņ†Đĩ. ĐŖĐ˛ĐĩĐģĐ¸Ņ‡Đ°Đ˛Đ°ĐŊĐĩŅ‚Đž Đŧ҃ ĐŋŅ€Đ°Đ˛Đ¸ Ņ€Đ°ĐˇĐŋОСĐŊаваĐŊĐĩŅ‚Đž ĐŊа ĐģĐ¸Ņ†Đ° ĐŋĐž-ĐŋŅ€ĐĩŅ†Đ¸ĐˇĐŊĐž Са ҁĐŧĐĩŅ‚Đēа ĐŊа ŅƒĐ˛ĐĩĐģĐ¸Ņ‡Đ°Đ˛Đ°ĐŊĐĩŅ‚Đž ĐŊа вĐĩŅ€ĐžŅŅ‚ĐŊĐžŅŅ‚Ņ‚Đ° дадĐĩĐŊĐž ĐģĐ¸Ņ†Đĩ да ĐŊĐĩ ĐąŅŠĐ´Đĩ ĐŋŅ€Đ¸Ņ‡Đ¸ŅĐģĐĩĐŊĐž ĐēҊĐŧ ĐģĐ¸Ņ†Đĩ.", - "machine_learning_ocr": "РаСĐŋОСĐŊаваĐŊĐĩ ĐŊа Ņ‚ĐĩĐēҁ҂", + "machine_learning_ocr": "ОĐŋŅ‚Đ¸Ņ‡ĐŊĐž Ņ€Đ°ĐˇĐŋОСĐŊаваĐŊĐĩ ĐŊа Ņ‚ĐĩĐēҁ҂", "machine_learning_ocr_description": "ИСĐŋĐžĐģĐˇĐ˛Đ°ĐšŅ‚Đĩ ĐŧĐ°ŅˆĐ¸ĐŊĐŊĐž ĐžĐąŅƒŅ‡ĐĩĐŊиĐĩ Са Ņ€Đ°ĐˇĐŋОСĐŊаваĐŊĐĩ ĐŊа Ņ‚ĐĩĐēҁ҂ в Đ¸ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊĐ¸ŅŅ‚Đ°", "machine_learning_ocr_enabled": "ВĐēĐģŅŽŅ‡Đ¸ Ņ€Đ°ĐˇĐŋОСĐŊаваĐŊĐĩ ĐŊа Ņ‚ĐĩĐēҁ҂", "machine_learning_ocr_enabled_description": "АĐēĐž Đĩ ĐˇĐ°ĐąŅ€Đ°ĐŊĐĩĐŊĐž, ĐŊŅĐŧа да ҁĐĩ ĐŋŅ€Đ°Đ˛Đ¸ Ņ€Đ°ĐˇĐŋОСĐŊаваĐŊĐĩ ĐŊа Ņ‚ĐĩĐēҁ҂ в Đ¸ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊĐ¸ŅŅ‚Đ°.", @@ -172,7 +181,12 @@ "machine_learning_smart_search_enabled": "ВĐēĐģŅŽŅ‡Đ˛Đ°ĐŊĐĩ ĐŊа ИĐŊŅ‚ĐĩĐģĐ¸ĐŗĐĩĐŊŅ‚ĐŊĐž ĐĸŅŠŅ€ŅĐĩĐŊĐĩ", "machine_learning_smart_search_enabled_description": "АĐēĐž Đĩ Đ´ĐĩаĐēŅ‚Đ¸Đ˛Đ¸Ņ€Đ°ĐŊĐž, Đ¸ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊĐ¸ŅŅ‚Đ° ĐŊŅĐŧа да ĐąŅŠĐ´Đ°Ņ‚ ĐēĐžĐ´Đ¸Ņ€Đ°ĐŊи Са ИĐŊŅ‚ĐĩĐģĐ¸ĐŗĐĩĐŊŅ‚ĐŊĐž ĐĸŅŠŅ€ŅĐĩĐŊĐĩ.", "machine_learning_url_description": "URL ĐŊа ŅŅŠŅ€Đ˛ŅŠŅ€Đ° Са ĐŧĐ°ŅˆĐ¸ĐŊĐŊĐž ĐžĐąŅƒŅ‡ĐĩĐŊиĐĩ. АĐēĐž ŅĐ° ĐŋŅ€ĐĩĐ´ĐžŅŅ‚Đ°Đ˛ĐĩĐŊи ĐŋОвĐĩ҇Đĩ ĐžŅ‚ ĐĩдиĐŊ URL, Đ˛ŅĐĩĐēи ŅŅŠŅ€Đ˛ŅŠŅ€ ҉Đĩ ĐąŅŠĐ´Đĩ ĐžĐŋĐ¸Ņ‚Đ°ĐŊ ĐĩдиĐŊ ĐŋĐž ĐĩдиĐŊ, Đ´ĐžĐēĐ°Ņ‚Đž ĐĩдиĐŊ ĐžŅ‚ĐŗĐžĐ˛ĐžŅ€Đ¸ ҃ҁĐŋĐĩ҈ĐŊĐž, в Ņ€Đĩда ĐžŅ‚ ĐŋŅŠŅ€Đ˛Đ¸Ņ Đ´Đž ĐŋĐžŅĐģĐĩĐ´ĐŊĐ¸Ņ. ĐĄŅŠŅ€Đ˛ŅŠŅ€Đ¸, ĐēĐžĐ¸Ņ‚Đž ĐŊĐĩ ĐžŅ‚ĐŗĐžĐ˛ĐžŅ€ŅŅ‚, ҉Đĩ ĐąŅŠĐ´Đ°Ņ‚ Đ˛Ņ€ĐĩĐŧĐĩĐŊĐŊĐž Đ¸ĐŗĐŊĐžŅ€Đ¸Ņ€Đ°ĐŊи, Đ´ĐžĐēĐ°Ņ‚Đž ĐŊĐĩ ҁĐĩ Đ˛ŅŠŅ€ĐŊĐ°Ņ‚ ĐžĐŊĐģаКĐŊ.", + "maintenance_settings": "ĐžĐąŅĐģ҃ĐļваĐŊĐĩ", + "maintenance_settings_description": "ĐŸŅ€ĐĩĐēвĐģŅŽŅ‡Đ˛Đ°ĐŊĐĩ ĐŊа ŅŅŠŅ€Đ˛ŅŠŅ€Đ° Immich в Ņ€ĐĩĐļиĐŧ ĐŊа ĐžĐąŅĐģ҃ĐļваĐŊĐĩ.", + "maintenance_start": "ЗаĐŋĐžŅ‡ĐŊи Ņ€ĐĩĐļиĐŧ ĐŊа ĐžĐąŅĐģ҃ĐļваĐŊĐĩ", + "maintenance_start_error": "НĐĩ҃ҁĐŋĐĩ҈ĐŊĐž ĐŋŅ€ĐĩĐŧиĐŊаваĐŊĐĩ в Ņ€ĐĩĐļиĐŧ ĐŊа ĐžĐąŅĐģ҃ĐļваĐŊĐĩ.", "manage_concurrency": "ĐŖĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиĐĩ ĐŊа ĐŋĐ°Ņ€Đ°ĐģĐĩĐģĐŊĐžŅŅ‚", + "manage_concurrency_description": "ĐžŅ‚Đ¸Đ´ĐĩŅ‚Đĩ ĐŊа ŅŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Đ°Ņ‚Đ° ҁҊҁ ĐˇĐ°Đ´Đ°Ņ‡Đ¸, Са да ҃ĐŋŅ€Đ°Đ˛ĐģŅĐ˛Đ°Ņ‚Đĩ ĐĩĐ´ĐŊĐžĐ˛Ņ€ĐĩĐŧĐĩĐŊĐŊĐžŅŅ‚Ņ‚Đ° иĐŧ", "manage_log_settings": "ĐŖĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиĐĩ ĐŊа ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēĐ¸Ņ‚Đĩ ĐŊа СаĐŋĐ¸ŅĐ˛Đ°ĐŊĐĩ", "map_dark_style": "ĐĸҊĐŧĐĩĐŊ ŅŅ‚Đ¸Đģ", "map_enable_description": "АĐēŅ‚Đ¸Đ˛Đ¸Ņ€Đ°ĐŊĐĩ ĐŊа ĐēĐ°Ņ€Ņ‚Đ°Ņ‚Đ°", @@ -262,10 +276,14 @@ "password_settings_description": "ĐŖĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиĐĩ ĐŊа ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēĐ¸Ņ‚Đĩ Са вĐģиСаĐŊĐĩ ҁ ĐŋĐ°Ņ€ĐžĐģа", "paths_validated_successfully": "Đ’ŅĐ¸Ņ‡Đēи ĐŋŅŠŅ‚Đ¸Ņ‰Đ° ŅĐ° ваĐģĐ¸Đ´Đ¸Ņ€Đ°ĐŊи ҃ҁĐŋĐĩ҈ĐŊĐž", "person_cleanup_job": "ĐŸĐžŅ‡Đ¸ŅŅ‚Đ˛Đ°ĐŊĐĩ ĐŊа ĐģĐ¸Ņ†Đ°", + "queue_details": "ДĐĩŅ‚Đ°ĐšĐģи ĐŋĐž ОĐŋĐ°ŅˆĐēĐ°Ņ‚Đ°", + "queues": "ОĐŋĐ°ŅˆĐēи Са ĐˇĐ°Đ´Đ°Ņ‡Đ¸", + "queues_page_description": "ĐĄŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Đ° ҁ ĐžĐŋĐ°ŅˆĐēи Са адĐŧиĐŊĐ¸ŅŅ‚Ņ€Đ°Ņ‚ĐžŅ€ŅĐēи ĐˇĐ°Đ´Đ°Ņ‡Đ¸", "quota_size_gib": "РаСĐŧĐĩŅ€ ĐŊа ĐēĐ˛ĐžŅ‚Đ°Ņ‚Đ° (GiB)", "refreshing_all_libraries": "ОĐŋŅ€ĐĩҁĐŊŅĐ˛Đ°ĐŊĐĩ ĐŊа Đ˛ŅĐ¸Ņ‡Đēи йийĐģĐ¸ĐžŅ‚ĐĩĐēи", "registration": "АдĐŧиĐŊĐ¸ŅŅ‚Ņ€Đ°Ņ‚ĐžŅ€ŅĐēа Ņ€ĐĩĐŗĐ¸ŅŅ‚Ņ€Đ°Ņ†Đ¸Ņ", "registration_description": "ĐĸŅŠĐš ĐēĐ°Ņ‚Đž ҁ҂Đĩ ĐŋŅŠŅ€Đ˛Đ¸ŅŅ‚ ĐŋĐžŅ‚Ņ€ĐĩĐąĐ¸Ņ‚ĐĩĐģ в ŅĐ¸ŅŅ‚ĐĩĐŧĐ°Ņ‚Đ°, ҉Đĩ ĐąŅŠĐ´ĐĩŅ‚Đĩ ĐŊаСĐŊĐ°Ņ‡ĐĩĐŊ ĐēĐ°Ņ‚Đž адĐŧиĐŊĐ¸ŅŅ‚Ņ€Đ°Ņ‚ĐžŅ€ и ҉Đĩ ĐžŅ‚ĐŗĐžĐ˛Đ°Ņ€ŅŅ‚Đĩ Са адĐŧиĐŊĐ¸ŅŅ‚Ņ€Đ°Ņ‚Đ¸Đ˛ĐŊĐ¸Ņ‚Đĩ ĐˇĐ°Đ´Đ°Ņ‡Đ¸, а Đ´ĐžĐŋҊĐģĐŊĐ¸Ņ‚ĐĩĐģĐŊĐ¸Ņ‚Đĩ ĐŋĐžŅ‚Ņ€ĐĩĐąĐ¸Ņ‚ĐĩĐģи ҉Đĩ ĐąŅŠĐ´Đ°Ņ‚ ŅŅŠĐˇĐ´Đ°Đ´ĐĩĐŊи ĐžŅ‚ Đ˛Đ°Ņ.", + "remove_failed_jobs": "ĐŸŅ€ĐĩĐŧĐ°Ņ…Đ˛Đ°ĐŊĐĩ ĐŊа ĐŊĐĩ҃ҁĐŋĐĩ҈ĐŊи ĐˇĐ°Đ´Đ°Ņ‡Đ¸", "require_password_change_on_login": "Đ˜ĐˇĐ¸ŅĐēваĐŊĐĩ Са ĐŋŅ€ĐžĐŧŅĐŊа ĐŋĐ°Ņ€ĐžĐģĐ°Ņ‚Đ° ĐŋŅ€Đ¸ ĐŋŅŠŅ€Đ˛Đž вĐģиСаĐŊĐĩ", "reset_settings_to_default": "Đ’ŅŠĐˇŅŅ‚Đ°ĐŊĐžĐ˛ŅĐ˛Đ°ĐŊĐĩ ĐŊа ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēĐ¸Ņ‚Đĩ ĐŋĐž ĐŋĐžĐ´Ņ€Đ°ĐˇĐąĐ¸Ņ€Đ°ĐŊĐĩ", "reset_settings_to_recent_saved": "Đ’ŅŠĐˇŅŅ‚Đ°ĐŊĐžĐ˛ŅĐ˛Đ°ĐŊĐĩ ĐŊа ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēĐ¸Ņ‚Đĩ Đ´Đž ĐŋĐžŅĐģĐĩĐ´ĐŊĐ¸Ņ‚Đĩ СаĐŋаСĐĩĐŊи ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēи", @@ -278,8 +296,10 @@ "server_public_users_description": "Đ’ŅĐ¸Ņ‡Đēи ĐŋĐžŅ‚Ņ€ĐĩĐąĐ¸Ņ‚ĐĩĐģи (иĐŧĐĩ и иĐŧĐĩĐšĐģ) ŅĐ° Đ¸ĐˇĐąŅ€ĐžĐĩĐŊи ĐŋŅ€Đ¸ Đ´ĐžĐąĐ°Đ˛ŅĐŊĐĩ ĐŊа ĐŋĐžŅ‚Ņ€ĐĩĐąĐ¸Ņ‚ĐĩĐģ в ҁĐŋОдĐĩĐģĐĩĐŊи аĐģĐąŅƒĐŧи. ĐšĐžĐŗĐ°Ņ‚Đž Đĩ Đ´ĐĩаĐēŅ‚Đ¸Đ˛Đ¸Ņ€Đ°ĐŊĐž, ҁĐŋĐ¸ŅŅŠĐēŅŠŅ‚ ҁ ĐŋĐžŅ‚Ņ€ĐĩĐąĐ¸Ņ‚ĐĩĐģи ҉Đĩ ĐąŅŠĐ´Đĩ Đ´ĐžŅŅ‚ŅŠĐŋĐĩĐŊ ŅĐ°ĐŧĐž Са адĐŧиĐŊĐ¸ŅŅ‚Ņ€Đ°Ņ‚ĐžŅ€Đ¸Ņ‚Đĩ.", "server_settings": "ĐĐ°ŅŅ‚Ņ€ĐžĐšĐēи ĐŊа ŅŅŠŅ€Đ˛ŅŠŅ€Đ°", "server_settings_description": "ĐŖĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиĐĩ ĐŊа ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēĐ¸Ņ‚Đĩ ĐŊа ŅŅŠŅ€Đ˛ŅŠŅ€Đ°", + "server_stats_page_description": "АдĐŧиĐŊĐ¸ŅŅ‚Ņ€Đ°Ņ‚ĐžŅ€ŅĐēа ŅŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Đ° ҁҊҁ ŅŅ‚Đ°Ņ‚Đ¸ŅŅ‚Đ¸Đēа Са ŅŅŠŅ€Đ˛ŅŠŅ€Đ°", "server_welcome_message": "ĐŸĐžĐˇĐ´Ņ€Đ°Đ˛Đ¸Ņ‚ĐĩĐģĐŊĐž ŅŅŠĐžĐąŅ‰ĐĩĐŊиĐĩ", "server_welcome_message_description": "ĐĄŅŠĐžĐąŅ‰ĐĩĐŊиĐĩ, ĐŋĐžĐēĐ°ĐˇĐ˛Đ°Ņ‰Đž ҁĐĩ ĐŊа ŅŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Đ°Ņ‚Đ° Са Đ˛Ņ…ĐžĐ´.", + "settings_page_description": "ĐĄŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Đ° ҁ ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēи Са адĐŧиĐŊĐ¸ŅŅ‚Ņ€Đ°Ņ‚ĐžŅ€Đ°", "sidecar_job": "МĐĩŅ‚Đ°Đ´Đ°ĐŊĐŊи ĐžŅ‚ ŅĐ˛ŅŠŅ€ĐˇĐ°ĐŊи (sidecar) Ņ„Đ°ĐšĐģОвĐĩ", "sidecar_job_description": "ĐžŅ‚ĐēŅ€Đ¸Đ˛Đ°ĐŊĐĩ иĐģи ŅĐ¸ĐŊŅ…Ņ€ĐžĐŊĐ¸ĐˇĐ¸Ņ€Đ°ĐŊĐĩ ĐŊа ŅŅ‚Ņ€Đ°ĐŊĐ¸Ņ‡ĐŊи (sidecar) ĐŧĐĩŅ‚Đ°Đ´Đ°ĐŊĐŊи ĐžŅ‚ Ņ„Đ°ĐšĐģĐžĐ˛Đ°Ņ‚Đ° ŅĐ¸ŅŅ‚ĐĩĐŧа", "slideshow_duration_description": "Đ‘Ņ€ĐžĐš ҁĐĩĐē҃ĐŊди Са ĐŋĐžĐēаСваĐŊĐĩ ĐŊа Đ˛ŅŅĐēĐž Đ¸ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊиĐĩ", @@ -398,7 +418,8 @@ "user_restore_scheduled_removal": "Đ’ŅŠĐˇŅŅ‚Đ°ĐŊĐžĐ˛ŅĐ˛Đ°ĐŊĐĩ ĐŊа ĐŋĐžŅ‚Ņ€ĐĩĐąĐ¸Ņ‚ĐĩĐģ – ҁ ĐŊĐ°ŅŅ€ĐžŅ‡ĐĩĐŊĐž ĐŋŅ€ĐĩĐŧĐ°Ņ…Đ˛Đ°ĐŊĐĩ ĐŊа {date, date, long}", "user_settings": "ĐĐ°ŅŅ‚Ņ€ĐžĐšĐēи ĐŊа ĐŋĐžŅ‚Ņ€ĐĩĐąĐ¸Ņ‚ĐĩĐģŅ", "user_settings_description": "ĐŖĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиĐĩ ĐŊа ĐŋĐžŅ‚Ņ€ĐĩĐąĐ¸Ņ‚ĐĩĐģҁĐēĐ¸Ņ‚Đĩ ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēи", - "user_successfully_removed": "ĐŸĐžŅ‚Ņ€ĐĩĐąĐ¸Ņ‚ĐĩĐģŅŅ‚ {email} Đĩ ҃ҁĐŋĐĩ҈ĐŊĐž ĐŋŅ€ĐĩĐŧĐ°Ņ…ĐŊĐ°Ņ‚.", + "user_successfully_removed": "ĐŸĐžŅ‚Ņ€ĐĩĐąĐ¸Ņ‚ĐĩĐģ {email} Đĩ ҃ҁĐŋĐĩ҈ĐŊĐž ĐŋŅ€ĐĩĐŧĐ°Ņ…ĐŊĐ°Ņ‚.", + "users_page_description": "ĐĄŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Đ° Са адĐŧиĐŊĐ¸ŅŅ‚Ņ€Đ¸Ņ€Đ°ĐŊĐĩ ĐŊа ĐŋĐžŅ‚Ņ€ĐĩĐąĐ¸Ņ‚ĐĩĐģи", "version_check_enabled_description": "АĐēŅ‚Đ¸Đ˛Đ¸Ņ€Đ°Đš ĐŋŅ€ĐžĐ˛ĐĩŅ€Đēа ĐŊа вĐĩŅ€ŅĐ¸ŅŅ‚Đ°", "version_check_implications": "Đ¤ŅƒĐŊĐēŅ†Đ¸ŅŅ‚Đ° Са ĐŋŅ€ĐžĐ˛ĐĩŅ€Đēа ĐŊа вĐĩŅ€ŅĐ¸ŅŅ‚Đ° Ņ€Đ°ĐˇŅ‡Đ¸Ņ‚Đ° ĐŊа ĐŋĐĩŅ€Đ¸ĐžĐ´Đ¸Ņ‡ĐŊа ĐēĐžĐŧ҃ĐŊиĐēĐ°Ņ†Đ¸Ņ ҁ github.com", "version_check_settings": "ĐŸŅ€ĐžĐ˛ĐĩŅ€Đēа ĐŊа вĐĩŅ€ŅĐ¸ŅŅ‚Đ°", @@ -631,6 +652,7 @@ "backup_options_page_title": "ĐĐ°ŅŅ‚Ņ€ĐžĐšĐēи Са Đ°Ņ€Ņ…Đ¸Đ˛Đ¸Ņ€Đ°ĐŊĐĩ", "backup_setting_subtitle": "ĐŖĐŋŅ€Đ°Đ˛ĐģŅĐ˛Đ°Đš ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēĐ¸Ņ‚Đĩ Са Đ°Ņ€Ņ…Đ¸Đ˛Đ¸Ņ€Đ°ĐŊĐĩ в аĐēŅ‚Đ¸Đ˛ĐĩĐŊ и Ņ„ĐžĐŊОв Ņ€ĐĩĐļиĐŧ", "backup_settings_subtitle": "ĐŖĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиĐĩ ĐŊа ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēĐ¸Ņ‚Đĩ Са ĐēĐ°Ņ‡Đ˛Đ°ĐŊĐĩ", + "backup_upload_details_page_more_details": "ПовĐĩ҇Đĩ ĐŋĐžĐ´Ņ€ĐžĐąĐŊĐžŅŅ‚Đ¸", "backward": "Назад", "biometric_auth_enabled": "ВĐēĐģŅŽŅ‡ĐĩĐŊа йиОĐŧĐĩŅ‚Ņ€Đ¸Ņ‡ĐŊĐž ŅƒĐ´ĐžŅŅ‚ĐžĐ˛ĐĩŅ€ŅĐ˛Đ°ĐŊĐĩ", "biometric_locked_out": "ĐŅĐŧа Đ´ĐžŅŅ‚ŅŠĐŋ Đ´Đž йиОĐŧĐĩŅ‚Ņ€Đ¸Ņ‡ĐŊĐž ŅƒĐ´ĐžŅŅ‚ĐžĐ˛ĐĩŅ€ŅĐ˛Đ°ĐŊĐĩ", @@ -697,6 +719,7 @@ "check_corrupt_asset_backup_button": "ĐŸŅ€ĐžĐ˛ĐĩŅ€Đ¸", "check_corrupt_asset_backup_description": "ИСĐŋҊĐģĐŊи Ņ‚Đ°ĐˇĐ¸ ĐŋŅ€ĐžĐ˛ĐĩŅ€Đēа ŅĐ°ĐŧĐž ĐŋŅ€Đ¸ Wi-Fi и ҁĐģĐĩĐ´ Đ°Ņ€Ņ…Đ¸Đ˛Đ¸Ņ€Đ°ĐŊĐĩ ĐŊа Đ˛ŅĐ¸Ņ‡Đēи ОйĐĩĐēŅ‚Đ¸. ĐŸŅ€ĐžŅ†ĐĩĐ´ŅƒŅ€Đ°Ņ‚Đ° ĐŧĐžĐļĐĩ да ĐŋŅ€ĐžĐ´ŅŠĐģĐļи ĐŊŅĐēĐžĐģĐēĐž ĐŧиĐŊŅƒŅ‚Đ¸.", "check_logs": "ĐŸŅ€ĐžĐ˛ĐĩŅ€Đ¸ ĐģĐžĐŗĐžĐ˛ĐĩŅ‚Đĩ", + "checksum": "КоĐŊŅ‚Ņ€ĐžĐģĐŊа ҁ҃Đŧа", "choose_matching_people_to_merge": "ИСйĐĩŅ€ĐĩŅ‚Đĩ ĐŋĐžĐ´Ņ…ĐžĐ´ŅŅ‰Đ¸ Ņ…ĐžŅ€Đ° Са ҁĐģиваĐŊĐĩ", "city": "Đ“Ņ€Đ°Đ´", "clear": "Đ˜ĐˇŅ‡Đ¸ŅŅ‚Đ¸", @@ -719,6 +742,7 @@ "collapse_all": "ХвиваĐŊĐĩ ĐŊа Đ˛ŅĐ¸Ņ‡ĐēĐž", "color": "ĐĻĐ˛ŅŅ‚", "color_theme": "ĐĻвĐĩŅ‚ĐžĐ˛Đ° Ņ‚ĐĩĐŧа", + "command": "КоĐŧаĐŊда", "comment_deleted": "КоĐŧĐĩĐŊŅ‚Đ°Ņ€ŅŠŅ‚ Đĩ Đ¸ĐˇŅ‚Ņ€Đ¸Ņ‚", "comment_options": "ОĐŋŅ†Đ¸Đ¸ Са ĐēĐžĐŧĐĩĐŊŅ‚Đ°Ņ€", "comments_and_likes": "КоĐŧĐĩĐŊŅ‚Đ°Ņ€Đ¸ и Ņ…Đ°Ņ€ĐĩŅĐ˛Đ°ĐŊĐ¸Ņ", @@ -967,6 +991,7 @@ "failed_to_unstack_assets": "НĐĩ҃ҁĐŋĐĩ҈ĐŊĐž ĐŋŅ€ĐĩĐŧĐ°Ņ…Đ˛Đ°ĐŊĐĩ ĐŊа ĐŋĐžĐ´Ņ€ĐĩĐ´ĐąĐ°Ņ‚Đ° ĐŊа ОйĐĩĐēŅ‚Đ¸", "failed_to_update_notification_status": "НĐĩ҃ҁĐŋĐĩ҈ĐŊĐž ОйĐŊĐžĐ˛ŅĐ˛Đ°ĐŊĐĩ ĐŊа ŅŅŠŅŅ‚ĐžŅĐŊиĐĩŅ‚Đž ĐŊа иСвĐĩŅŅ‚Đ¸ŅŅ‚Đ°", "incorrect_email_or_password": "НĐĩĐŋŅ€Đ°Đ˛Đ¸ĐģĐĩĐŊ иĐŧĐĩĐšĐģ иĐģи ĐŋĐ°Ņ€ĐžĐģа", + "library_folder_already_exists": "ĐĸаСи ĐŋаĐŋĐēа вĐĩ҇Đĩ ŅŅŠŅ‰ĐĩŅŅ‚Đ˛ŅƒĐ˛Đ°.", "paths_validation_failed": "{paths, plural, one {# ĐŋŅŠŅ‚} other {# ĐŋŅŠŅ‚Đ¸Ņ‰Đ°}} ĐŊĐĩ ĐŋŅ€ĐĩĐŧиĐŊĐ°Ņ…Đ° ваĐģĐ¸Đ´Đ°Ņ†Đ¸Ņ", "profile_picture_transparent_pixels": "ĐŸŅ€ĐžŅ„Đ¸ĐģĐŊĐ¸Ņ‚Đĩ ҁĐŊиĐŧĐēи ĐŊĐĩ ĐŧĐžĐŗĐ°Ņ‚ да иĐŧĐ°Ņ‚ ĐŋŅ€ĐžĐˇŅ€Đ°Ņ‡ĐŊи ĐŋиĐēҁĐĩĐģи. МоĐģŅ, ŅƒĐ˛ĐĩĐģĐ¸Ņ‡ĐĩŅ‚Đĩ и/иĐģи ĐŋŅ€ĐĩĐŧĐĩҁ҂ĐĩŅ‚Đĩ Đ¸ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊиĐĩŅ‚Đž.", "quota_higher_than_disk_size": "ЗададĐĩĐŊа Đĩ ĐēĐ˛ĐžŅ‚Đ°, ĐŋĐž-ĐŗĐžĐģŅĐŧа ĐžŅ‚ Ņ€Đ°ĐˇĐŧĐĩŅ€Đ° ĐŊа Đ´Đ¸ŅĐēа", @@ -1051,6 +1076,7 @@ "unable_to_update_user": "НĐĩ҃ҁĐŋĐĩ҈ĐŊĐž ОйĐŊĐžĐ˛ŅĐ˛Đ°ĐŊĐĩ ĐŊа ĐŋĐžŅ‚Ņ€ĐĩĐąĐ¸Ņ‚ĐĩĐģŅ", "unable_to_upload_file": "НĐĩ҃ҁĐŋĐĩ҈ĐŊĐž ĐēĐ°Ņ‡Đ˛Đ°ĐŊĐĩ ĐŊа Ņ„Đ°ĐšĐģ" }, + "exclusion_pattern": "ШайĐģĐžĐŊ Са иСĐēĐģŅŽŅ‡ĐĩĐŊиĐĩ", "exif": "Exif", "exif_bottom_sheet_description": "Добави ОĐŋĐ¸ŅĐ°ĐŊиĐĩ...", "exif_bottom_sheet_description_error": "НĐĩ҃ҁĐŋĐĩ҈ĐŊĐž ОйĐŊĐžĐ˛ŅĐ˛Đ°ĐŊĐĩ ĐŊа ĐžĐŋĐ¸ŅĐ°ĐŊиĐĩ", @@ -1081,6 +1107,7 @@ "external_network_sheet_info": "ĐšĐžĐŗĐ°Ņ‚Đž ĐŊŅĐŧа Đ˛Ņ€ŅŠĐˇĐēа ҁ ĐŋŅ€ĐĩĐ´ĐŋĐžŅ‡Đ¸Ņ‚Đ°ĐŊĐ°Ņ‚Đ° Wi-Fi ĐŧŅ€ĐĩĐļа, ĐŋŅ€Đ¸ĐģĐžĐļĐĩĐŊиĐĩŅ‚Đž ҉Đĩ ĐžĐŋĐ¸Ņ‚Đ˛Đ° да ҁĐĩ ŅĐ˛ŅŠŅ€ĐļĐĩ ҁҊҁ ŅŅŠŅ€Đ˛ŅŠŅ€Đ° ҇ҀĐĩС ĐŋŅŠŅ€Đ˛Đ¸Ņ Đ´ĐžŅŅ‚ŅŠĐŋĐĩĐŊ URL Đ°Đ´Ņ€Đĩҁ, СаĐŋĐžŅ‡Đ˛Đ°ĐšĐēи ĐžŅ‚ĐŗĐžŅ€Đĩ ĐŊадОĐģ҃", "face_unassigned": "НĐĩСададĐĩĐŊĐž", "failed": "НĐĩ҃ҁĐŋĐĩ҈ĐŊĐž", + "failed_count": "НĐĩ҃ҁĐŋĐĩ҈ĐŊи: {count}", "failed_to_authenticate": "НĐĩ҃ҁĐŋĐĩ҈ĐŊа Đ°Đ˛Ņ‚ĐĩĐŊŅ‚Đ¸ĐēĐ°Ņ†Đ¸Ņ", "failed_to_load_assets": "НĐĩ҃ҁĐŋĐĩ҈ĐŊĐž ĐˇĐ°Ņ€ĐĩĐļдаĐŊĐĩ ĐŊа ĐĩĐģĐĩĐŧĐĩĐŊŅ‚Đ¸", "failed_to_load_folder": "НĐĩ҃ҁĐŋĐĩ҈ĐŊĐž ĐˇĐ°Ņ€ĐĩĐļдаĐŊĐĩ ĐŊа ĐŋаĐŋĐēа", @@ -1110,6 +1137,7 @@ "folders_feature_description": "ĐŸŅ€ĐĩĐŗĐģĐĩĐļдаĐŊĐĩ ĐŊа ĐŋаĐŋĐēĐ°Ņ‚Đ° Са ҁĐŊиĐŧĐēĐ¸Ņ‚Đĩ и видĐĩĐžĐēĐģиĐŋОвĐĩŅ‚Đĩ в Ņ„Đ°ĐšĐģĐžĐ˛Đ°Ņ‚Đ° ŅĐ¸ŅŅ‚ĐĩĐŧа", "forgot_pin_code_question": "Đ—Đ°ĐąŅ€Đ°Đ˛Đ¸Đģи ҁ҂Đĩ ŅĐ˛ĐžŅ ПИН ĐēОд?", "forward": "НаĐŋŅ€ĐĩĐ´", + "full_path": "ĐŸŅŠĐģĐĩĐŊ ĐŋŅŠŅ‚: {path}", "gcast_enabled": "Google Cast", "gcast_enabled_description": "За да Ņ€Đ°ĐąĐžŅ‚Đ¸ Ņ‚Đ°ĐˇĐ¸ Ņ„ŅƒĐŊĐēŅ†Đ¸Ņ ĐˇĐ°Ņ€ĐĩĐļда Đ˛ŅŠĐŊ҈ĐŊи Ņ€ĐĩŅŅƒŅ€ŅĐ¸ ĐžŅ‚ Google.", "general": "ĐžĐąŅ‰Đ¸", @@ -1140,12 +1168,14 @@ "header_settings_header_name_input": "ИĐŧĐĩ ĐŊа ĐˇĐ°ĐŗĐģавиĐĩŅ‚Đž", "header_settings_header_value_input": "ĐĄŅ‚ĐžĐšĐŊĐžŅŅ‚ ĐŊа ĐˇĐ°ĐŗĐģавиĐĩŅ‚Đž", "headers_settings_tile_title": "ĐŸĐžŅ‚Ņ€ĐĩĐąĐ¸Ņ‚ĐĩĐģҁĐēи ĐŋŅ€ĐžĐēŅĐ¸ ĐˇĐ°ĐŗĐģĐ°Đ˛Đ¸Ņ", + "height": "Đ’Đ¸ŅĐžŅ‡Đ¸ĐŊа", "hi_user": "Đ—Đ´Ņ€Đ°Đ˛ĐĩĐš, {name} {email}", "hide_all_people": "ĐĄĐēŅ€Đ¸Đš Đ˛ŅĐ¸Ņ‡Đēи Ņ…ĐžŅ€Đ°", "hide_gallery": "ĐĄĐēŅ€Đ¸Đš ĐŗĐ°ĐģĐĩŅ€Đ¸Ņ", "hide_named_person": "ĐĄĐēŅ€Đ¸Đš Ņ‡ĐžĐ˛ĐĩĐē {name}", "hide_password": "ĐĄĐēŅ€Đ¸Đš ĐŋĐ°Ņ€ĐžĐģа", "hide_person": "ĐĄĐēŅ€Đ¸Đš Ņ‡ĐžĐ˛ĐĩĐē", + "hide_text_recognition": "ĐĄĐēŅ€Đ¸Đš Ņ€Đ°ĐˇĐŋОСĐŊĐ°Ņ‚Đ¸Ņ Ņ‚ĐĩĐēҁ҂", "hide_unnamed_people": "ĐĄĐēŅ€Đ¸Đš ĐŊĐĩĐŊаСОваĐŊи Ņ…ĐžŅ€Đ°", "home_page_add_to_album_conflicts": "ДобавĐĩĐŊи ŅĐ° {added} ОйĐĩĐēŅ‚Đ° в аĐģĐąŅƒĐŧа {album}. ВĐĩ҇Đĩ иĐŧа {failed} ОйĐĩĐēŅ‚Đ°.", "home_page_add_to_album_err_local": "Đ’ŅĐĩ ĐžŅ‰Đĩ ĐŊĐĩ Đĩ Đ˛ŅŠĐˇĐŧĐžĐļĐŊĐž да ҁĐĩ Đ´ĐžĐąĐ°Đ˛ŅŅ‚ ĐģĐžĐēаĐģĐŊи ОйĐĩĐēŅ‚Đ¸ в аĐģĐąŅƒĐŧĐ¸Ņ‚Đĩ, ĐŋŅ€ĐžĐŋ҃ҁĐēаĐŊĐĩ", @@ -1239,6 +1269,8 @@ "let_others_respond": "ПозвоĐģĐĩŅ‚Đĩ ĐŊа Đ´Ņ€ŅƒĐŗĐ¸Ņ‚Đĩ да ĐžŅ‚ĐŗĐžĐ˛ĐžŅ€ŅŅ‚", "level": "Ниво", "library": "БибĐģĐ¸ĐžŅ‚ĐĩĐēа", + "library_add_folder": "Добави ĐŋаĐŋĐēа", + "library_edit_folder": "Đ ĐĩдаĐēŅ‚Đ¸Ņ€Đ°ĐŊĐĩ ĐŊа ĐŋаĐŋĐēа", "library_options": "ОĐŋŅ†Đ¸Đ¸ ĐŊа йийĐģĐ¸ĐžŅ‚ĐĩĐēĐ°Ņ‚Đ°", "library_page_device_albums": "АĐģĐąŅƒĐŧи в ŅƒŅŅ‚Ņ€ĐžĐšŅŅ‚Đ˛ĐžŅ‚Đž", "library_page_new_album": "Нов аĐģĐąŅƒĐŧ", @@ -1259,6 +1291,7 @@ "local": "ЛоĐēаĐģĐŊĐž", "local_asset_cast_failed": "НĐĩ ĐŧĐžĐļĐĩ да ҁĐĩ ĐŋŅ€Đĩдава ОйĐĩĐēŅ‚, ĐēĐžĐšŅ‚Đž ĐžŅ‰Đĩ ĐŊĐĩ Đĩ ĐēĐ°Ņ‡ĐĩĐŊ ĐŊа ŅŅŠŅ€Đ˛ŅŠŅ€Đ°", "local_assets": "ЛоĐēаĐģĐŊи ОйĐĩĐēŅ‚Đ¸", + "local_id": "ИдĐĩĐŊŅ‚Đ¸Ņ„Đ¸ĐēĐ°Ņ‚ĐžŅ€", "local_media_summary": "ĐžĐąĐžĐąŅ‰ĐĩĐŊиĐĩ ĐŊа ĐģĐžĐēаĐģĐŊĐ¸Ņ‚Đĩ Ņ„Đ°ĐšĐģОвĐĩ", "local_network": "ЛоĐēаĐģĐŊа ĐŧŅ€ĐĩĐļа", "local_network_sheet_info": "ĐŸŅ€Đ¸ĐģĐžĐļĐĩĐŊиĐĩŅ‚Đž ҉Đĩ ҁĐĩ ŅĐ˛ŅŠŅ€ĐļĐĩ ҁҊҁ ŅŅŠŅ€Đ˛ŅŠŅ€Đ° ĐŊа Ņ‚ĐžĐˇĐ¸ URL, ĐēĐžĐŗĐ°Ņ‚Đž ŅƒŅŅ‚Ņ€ĐžĐšŅŅ‚Đ˛ĐžŅ‚Đž Đĩ ŅĐ˛ŅŠŅ€ĐˇĐ°ĐŊĐž ĐēҊĐŧ СададĐĩĐŊĐ°Ņ‚Đ° Wi-Fi ĐŧŅ€ĐĩĐļа", @@ -1310,6 +1343,11 @@ "loop_videos_description": "ПозвоĐģи Đ°Đ˛Ņ‚ĐžĐŧĐ°Ņ‚Đ¸Ņ‡ĐŊĐž ĐŋĐžĐ˛Ņ‚Đ°Ņ€ŅĐŊĐĩ ĐŊа видĐĩĐžŅ‚Đž в Đ¸ĐˇĐŗĐģĐĩда ĐŊа Đ´ĐĩŅ‚Đ°ĐšĐģĐ¸Ņ‚Đĩ.", "main_branch_warning": "ИСĐŋĐžĐģĐˇĐ˛Đ°Ņ‚Đĩ вĐĩŅ€ŅĐ¸Ņ Са Ņ€Đ°ĐˇŅ€Đ°ĐąĐžŅ‚Ņ‡Đ¸Ņ†Đ¸, ŅĐ¸ĐģĐŊĐž ĐŋŅ€ĐĩĐŋĐžŅ€ŅŠŅ‡Đ˛Đ°ĐŧĐĩ да иСĐŋĐžĐģĐˇĐ˛Đ°Ņ‚Đĩ ĐžŅ„Đ¸Ņ†Đ¸Đ°ĐģĐŊа вĐĩŅ€ŅĐ¸Ņ!", "main_menu": "ГĐģавĐŊĐž ĐŧĐĩĐŊŅŽ", + "maintenance_description": "ĐĄŅŠŅ€Đ˛ŅŠŅ€Đ° Immich Đĩ ĐŋĐžŅŅ‚Đ°Đ˛ĐĩĐŊ в Ņ€ĐĩĐļиĐŧ ĐŊа ĐžĐąŅĐģ҃ĐļваĐŊĐĩ.", + "maintenance_end": "ĐšŅ€Đ°Đš ĐŊа Ņ€ĐĩĐļиĐŧа ĐŊа ĐžĐąŅĐģ҃ĐļваĐŊĐĩ", + "maintenance_end_error": "НĐĩ҃ҁĐŋĐĩ҈ĐŊĐž ĐˇĐ°Đ˛ŅŠŅ€ŅˆĐ˛Đ°ĐŊĐĩ ĐŊа Ņ€ĐĩĐļиĐŧа ĐŊа ĐžĐąŅĐģ҃ĐļваĐŊĐĩ.", + "maintenance_logged_in_as": "ĐĸĐĩĐēŅƒŅ‰Đ¸Ņ ĐŋĐžŅ‚Ņ€ĐĩĐąĐ¸Ņ‚ĐĩĐģ Đĩ {user}", + "maintenance_title": "Đ’Ņ€ĐĩĐŧĐĩĐŊĐŊĐž ĐŊĐĩĐ´ĐžŅŅ‚ŅŠĐŋĐĩĐŊ", "make": "ĐœĐ°Ņ€Đēа", "manage_geolocation": "ĐŖĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиĐĩ ĐŊа ĐŧĐĩŅŅ‚ĐžĐŋĐžĐģĐžĐļĐĩĐŊĐ¸ŅŅ‚Đ°", "manage_media_access_rationale": "ĐĸОва Ņ€Đ°ĐˇŅ€Đĩ҈ĐĩĐŊиĐĩ Đĩ ĐŊĐĩĐžĐąŅ…ĐžĐ´Đ¸ĐŧĐž Са ĐŋŅ€Đ°Đ˛Đ¸ĐģĐŊĐž ĐŋŅ€ĐĩĐŧĐĩŅŅ‚Đ˛Đ°ĐŊĐĩ ĐŊа ОйĐĩĐēŅ‚Đ¸ в ĐēĐžŅˆŅ‡ĐĩŅ‚Đž и Са Đ˛ŅŠĐˇŅŅ‚Đ°ĐŊĐžĐ˛ŅĐ˛Đ°ĐŊĐĩ ĐžŅ‚ Ņ‚Đ°Đŧ.", @@ -1432,6 +1470,7 @@ "no_favorites_message": "ДобавĐĩŅ‚Đĩ в ĐģŅŽĐąĐ¸Đŧи, Са да ĐŊаĐŧĐ¸Ņ€Đ°Ņ‚Đĩ ĐąŅŠŅ€ĐˇĐž ĐŊаК-Đ´ĐžĐąŅ€Đ¸Ņ‚Đĩ ŅĐ¸ ҁĐŊиĐŧĐēи и видĐĩĐžĐēĐģиĐŋОвĐĩ", "no_libraries_message": "ĐĄŅŠĐˇĐ´Đ°ĐšŅ‚Đĩ Đ˛ŅŠĐŊ҈ĐŊа йийĐģĐ¸ĐžŅ‚ĐĩĐēа Са да Ņ€Đ°ĐˇĐŗĐģĐĩĐļĐ´Đ°Ņ‚Đĩ ҁĐŊиĐŧĐēи и видĐĩĐžĐēĐģиĐŋОвĐĩ", "no_local_assets_found": "НĐĩ Đĩ ĐŊаĐŧĐĩŅ€ĐĩĐŊ ĐģĐžĐēаĐģĐĩĐŊ ОйĐĩĐēŅ‚ ҁ Ņ‚Đ°Đēава ĐēĐžĐŊŅ‚Ņ€ĐžĐģĐŊа ҁ҃Đŧа", + "no_location_set": "НĐĩ Đĩ СададĐĩĐŊĐž ĐŧĐĩŅŅ‚ĐžĐŋĐžĐģĐžĐļĐĩĐŊиĐĩ", "no_locked_photos_message": "ĐĄĐŊиĐŧĐēĐ¸Ņ‚Đĩ и видĐĩĐ°Ņ‚Đ° в СаĐēĐģŅŽŅ‡ĐĩĐŊĐ°Ņ‚Đ° ĐŋаĐŋĐēа ŅĐ° ҁĐēŅ€Đ¸Ņ‚Đ¸ и ĐŊĐĩ ҁĐĩ ĐŋĐžĐēĐ°ĐˇĐ˛Đ°Ņ‚ ĐŋŅ€Đ¸ Ņ€Đ°ĐˇĐŗĐģĐĩĐļдаĐŊĐĩ ĐŊа йийĐģĐ¸ĐžŅ‚ĐĩĐēĐ°Ņ‚Đ°.", "no_name": "БĐĩС иĐŧĐĩ", "no_notifications": "ĐŅĐŧа иСвĐĩŅŅ‚Đ¸Ņ", @@ -1491,6 +1530,7 @@ "other_variables": "Đ”Ņ€ŅƒĐŗĐ¸ ĐŋŅ€ĐžĐŧĐĩĐŊĐģиви", "owned": "ĐœĐžĐ¸Ņ‚Đĩ", "owner": "ĐĄĐžĐąŅŅ‚Đ˛ĐĩĐŊиĐē", + "page": "ĐĄŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Đ°", "partner": "ĐŸĐ°Ņ€Ņ‚ĐŊŅŒĐžŅ€", "partner_can_access": "{partner} иĐŧа Đ´ĐžŅŅ‚ŅŠĐŋ", "partner_can_access_assets": "Đ’ŅĐ¸Ņ‡Đēи Đ˛Đ°ŅˆĐ¸ ҁĐŊиĐŧĐēи и видĐĩĐžĐēĐģиĐŋОвĐĩ, ҁ иСĐēĐģŅŽŅ‡ĐĩĐŊиĐĩ ĐŊа Ņ‚ĐĩСи в ĐŅ€Ņ…Đ¸Đ˛Đ¸Ņ€Đ°ĐŊи и Đ˜ĐˇŅ‚Ņ€Đ¸Ņ‚Đ¸", @@ -1660,7 +1700,7 @@ "regenerating_thumbnails": "ĐŸŅ€ĐĩŅŅŠĐˇĐ´Đ°Đ˛Đ°ĐŊĐĩ ĐŊа ĐŧиĐŊĐ¸Đ°Ņ‚ŅŽŅ€Đ¸Ņ‚Đĩ", "remote": "На ŅŅŠŅ€Đ˛ŅŠŅ€Đ°", "remote_assets": "ОбĐĩĐēŅ‚Đ¸ ĐŊа ŅŅŠŅ€Đ˛ŅŠŅ€Đ°", - "remote_media_summary": "ĐžĐąĐžĐąŅ‰ĐĩĐŊиĐĩ ĐŊа ĐŧĐĩдиКĐŊĐ¸Ņ‚Đĩ Ņ„Đ°ĐšĐģОвĐĩ ĐŊа ŅŅŠŅ€Đ˛ŅŠŅ€Đ°", + "remote_media_summary": "ĐžĐąĐžĐąŅ‰ĐĩĐŊиĐĩ ĐŊа Ņ„Đ°ĐšĐģОвĐĩŅ‚Đĩ ĐŊа ŅŅŠŅ€Đ˛ŅŠŅ€Đ°", "remove": "ĐŸŅ€ĐĩĐŧĐ°Ņ…ĐŊи", "remove_assets_album_confirmation": "ĐĄĐ¸ĐŗŅƒŅ€ĐŊи Đģи ҁ҂Đĩ, ҇Đĩ Đ¸ŅĐēĐ°Ņ‚Đĩ да ĐŋŅ€ĐĩĐŧĐ°Ņ…ĐŊĐĩŅ‚Đĩ {count, plural, one {# ĐĩĐģĐĩĐŧĐĩĐŊŅ‚} other {# ĐĩĐģĐĩĐŧĐĩĐŊŅ‚Đ°}} ĐžŅ‚ аĐģĐąŅƒĐŧа?", "remove_assets_shared_link_confirmation": "ĐĄĐ¸ĐŗŅƒŅ€ĐŊи Đģи ҁ҂Đĩ, ҇Đĩ Đ¸ŅĐēĐ°Ņ‚Đĩ да ĐŋŅ€ĐĩĐŧĐ°Ņ…ĐŊĐĩŅ‚Đĩ {count, plural, one {# ĐĩĐģĐĩĐŧĐĩĐŊŅ‚} other {# ĐĩĐģĐĩĐŧĐĩĐŊŅ‚Đ°}} ĐžŅ‚ Ņ‚ĐžĐˇĐ¸ ҁĐŋĐžĐĩĐ´ĐĩĐģĐĩĐŊ ĐģиĐŊĐē?", @@ -1822,6 +1862,8 @@ "server_offline": "ĐĄŅŠŅ€Đ˛ŅŠŅ€ ĐžŅ„ĐģаКĐŊ", "server_online": "ĐĄŅŠŅ€Đ˛ŅŠŅ€ ĐžĐŊĐģаКĐŊ", "server_privacy": "ПовĐĩŅ€Đ¸Ņ‚ĐĩĐģĐŊĐžŅŅ‚ ĐŊа ŅŅŠŅ€Đ˛ŅŠŅ€Đ°", + "server_restarting_description": "ĐĄŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Đ°Ņ‚Đ° ҉Đĩ ҁĐĩ ОйĐŊОви Đ˛ŅĐĩĐēи ĐŧĐžĐŧĐĩĐŊŅ‚.", + "server_restarting_title": "Đ ĐĩŅŅ‚Đ°Ņ€Ņ‚Đ¸Ņ€Đ°ĐŊĐĩ ĐŊа ŅŅŠŅ€Đ˛ŅŠŅ€Đ°", "server_stats": "ĐĄŅ‚Đ°Ņ‚ŅƒŅ ĐŊа ŅŅŠŅ€Đ˛ŅŠŅ€Đ°", "server_update_available": "НаĐģĐ¸Ņ‡ĐŊа Đĩ ĐŊОва вĐĩŅ€ŅĐ¸Ņ Са ŅŅŠŅ€Đ˛ŅŠŅ€Đ°", "server_version": "ВĐĩŅ€ŅĐ¸Ņ ĐŊа ŅŅŠŅ€Đ˛ŅŠŅ€Đ°", @@ -1945,6 +1987,7 @@ "show_slideshow_transition": "ПоĐēаĐļи ĐŋŅ€ĐĩŅ…ĐžĐ´Đ° ĐŊа ҁĐģĐ°ĐšĐ´ŅˆĐžŅƒŅ‚Đž", "show_supporter_badge": "ЗĐŊĐ°Ņ‡Đēа ĐŋĐžĐ´Đ´Ņ€ŅŠĐļĐŊиĐē", "show_supporter_badge_description": "ПоĐēаĐļи СĐŊĐ°Ņ‡Đēа ĐŋĐžĐ´Đ´Ņ€ŅŠĐļĐŊиĐē", + "show_text_recognition": "ПоĐēаĐļи Ņ€Đ°ĐˇĐŋОСĐŊĐ°Ņ‚Đ¸Ņ Ņ‚ĐĩĐēҁ҂", "show_text_search_menu": "ПоĐēаĐļи ĐŧĐĩĐŊŅŽŅ‚Đž Са Ņ‚ŅŠŅ€ŅĐĩĐŊĐĩ ĐŊа Ņ‚ĐĩĐēҁ҂", "shuffle": "Đ Đ°ĐˇĐąŅŠŅ€ĐēваĐŊĐĩ", "sidebar": "ĐĄŅ‚Ņ€Đ°ĐŊĐ¸Ņ‡ĐŊа ĐģĐĩĐŊŅ‚Đ°", @@ -2015,6 +2058,7 @@ "tags": "Đ•Ņ‚Đ¸ĐēĐĩŅ‚", "tap_to_run_job": "ДоĐēĐžŅĐŊĐĩŅ‚Đĩ, Са да ŅŅ‚Đ°Ņ€Ņ‚Đ¸Ņ€Đ°Ņ‚Đĩ ĐˇĐ°Đ´Đ°Ņ‡Đ°Ņ‚Đ°", "template": "ШайĐģĐžĐŊ", + "text_recognition": "РаСĐŋОСĐŊаваĐŊĐĩ ĐŊа Ņ‚ĐĩĐēҁ҂", "theme": "ĐĸĐĩĐŧа", "theme_selection": "Đ˜ĐˇĐąĐžŅ€ ĐŊа Ņ‚ĐĩĐŧа", "theme_selection_description": "ĐĐ˛Ņ‚ĐžĐŧĐ°Ņ‚Đ¸Ņ‡ĐŊĐž СадаваĐŊĐĩ ĐŊа ŅĐ˛ĐĩŅ‚Đģа иĐģи Ņ‚ŅŠĐŧĐŊа Ņ‚ĐĩĐŧа ҁĐŋŅ€ŅĐŧĐž ŅĐ¸ŅŅ‚ĐĩĐŧĐŊĐ¸Ņ‚Đĩ ĐŋŅ€ĐĩĐ´ĐŋĐžŅ‡Đ¸Ņ‚Đ°ĐŊĐ¸Ņ ĐŊа ĐąŅ€Đ°ŅƒĐˇŅŠŅ€Đ° ви", @@ -2047,6 +2091,7 @@ "to_select": "Са Đ¸ĐˇĐąĐžŅ€", "to_trash": "ĐšĐžŅˆŅ‡Đĩ", "toggle_settings": "ĐŸŅ€ĐĩвĐēĐģŅŽŅ‡Đ˛Đ°ĐŊĐĩ ĐŊа ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēĐ¸Ņ‚Đĩ", + "toggle_theme_description": "ĐŸŅ€ĐĩвĐēĐģŅŽŅ‡Đ˛Đ°ĐŊĐĩ ĐŊа Ņ‚ĐĩĐŧĐ°Ņ‚Đ°", "total": "ĐžĐąŅ‰Đž", "total_usage": "ĐžĐąŅ‰Đž иСĐŋĐžĐģСваĐŊĐž", "trash": "ĐšĐžŅˆŅ‡Đĩ", @@ -2155,6 +2200,7 @@ "view_album": "Đ Đ°ĐˇĐŗĐģĐĩдаК аĐģĐąŅƒĐŧа", "view_all": "ĐŸŅ€ĐĩĐŗĐģĐĩĐ´ ĐŊа Đ˛ŅĐ¸Ņ‡Đēи", "view_all_users": "ĐŸŅ€ĐĩĐŗĐģĐĩĐ´ ĐŊа Đ˛ŅĐ¸Ņ‡Đēи ĐŋĐžŅ‚Ņ€ĐĩĐąĐ¸Ņ‚ĐĩĐģи", + "view_asset_owners": "ĐŸŅ€ĐĩĐŗĐģĐĩĐ´ ĐŊа ŅĐžĐąŅŅ‚Đ˛ĐĩĐŊĐ¸Ņ†Đ¸Ņ‚Đĩ ĐŊа аĐēŅ‚Đ¸Đ˛Đ¸", "view_details": "ĐŸĐžĐ´Ņ€ĐžĐąĐŊĐžŅŅ‚Đ¸ Са Đ¸ĐˇĐŗĐģĐĩда", "view_in_timeline": "ПоĐēаĐļи Đ˛ŅŠĐ˛ Đ˛Ņ€ĐĩĐŧĐĩва ĐģиĐŊĐ¸Ņ", "view_link": "ĐŸŅ€ĐĩĐŗĐģĐĩĐ´ ĐŊа Đ˛Ņ€ŅŠĐˇĐēĐ°Ņ‚Đ°", @@ -2171,10 +2217,12 @@ "viewer_unstack": "ĐŸŅ€ĐĩĐŧĐ°Ņ…ĐŊи ĐžŅ‚ ĐžĐŋĐ°ŅˆĐēĐ°Ņ‚Đ°", "visibility_changed": "ВидиĐŧĐžŅŅ‚Ņ‚Đ° Đĩ ĐŋŅ€ĐžĐŧĐĩĐŊĐĩĐŊа Са {count, plural, one {# Ņ‡ĐžĐ˛ĐĩĐē} other {# Ņ‡ĐžĐ˛ĐĩĐēа}}", "waiting": "в Đ¸ĐˇŅ‡Đ°ĐēваĐŊĐĩ", + "waiting_count": "В Đ¸ĐˇŅ‡Đ°ĐēваĐŊĐĩ: {count}", "warning": "ВĐŊиĐŧаĐŊиĐĩ", "week": "ĐĄĐĩĐ´ĐŧĐ¸Ņ†Đ°", "welcome": "Đ”ĐžĐąŅ€Đĩ Đ´ĐžŅˆĐģи", "welcome_to_immich": "Đ”ĐžĐąŅ€Đĩ Đ´ĐžŅˆĐģи в Immich", + "width": "Đ¨Đ¸Ņ€Đ¸ĐŊa", "wifi_name": "Wi-Fi ĐŧŅ€ĐĩĐļа", "workflow": "Đ Đ°ĐąĐžŅ‚ĐĩĐŊ ĐŋŅ€ĐžŅ†Đĩҁ", "wrong_pin_code": "Đ“Ņ€Đĩ҈ĐĩĐŊ PIN ĐēОд", diff --git a/i18n/bn.json b/i18n/bn.json index 0dd2f46726..a785993f0a 100644 --- a/i18n/bn.json +++ b/i18n/bn.json @@ -72,7 +72,6 @@ "disable_login": "āϞāĻ—āχāύ āĻ…āĻ•ā§āώāĻŽ āĻ•āϰ⧁āύ", "duplicate_detection_job_description": "āĻ…āύ⧁āϰ⧂āĻĒ āĻ›āĻŦāĻŋ āϏāύāĻžāĻ•ā§āϤ āĻ•āϰāϤ⧇ āϏāĻŽā§āĻĒāĻĻāϗ⧁āϞāĻŋāϤ⧇ āĻŽā§‡āĻļāĻŋāύ āϞāĻžāĻ°ā§āύāĻŋāĻ‚ āϚāĻžāϞāĻžāύāĨ¤ āĻ¸ā§āĻŽāĻžāĻ°ā§āϟ āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇", "exclusion_pattern_description": "āĻāĻ•ā§āϏāĻ•ā§āϞ⧁āĻļāύ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āφāĻĒāύāĻŋ āφāĻĒāύāĻžāϰ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āĻ¸ā§āĻ•ā§āϝāĻžāύ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĢāĻžāχāϞ āĻāĻŦāĻ‚ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰāϗ⧁āϞāĻŋāϕ⧇ āωāĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύāĨ¤ āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āĻāĻŽāύ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āĻĨāĻžāϕ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻāĻŽāύ āĻĢāĻžāχāϞ āĻĨāĻžāϕ⧇ āϝāĻž āφāĻĒāύāĻŋ āφāĻŽāĻĻāĻžāύāĻŋ āĻ•āϰāϤ⧇ āϚāĻžāύ āύāĻž, āϝ⧇āĻŽāύ RAW āĻĢāĻžāχāϞāĨ¤", - "external_library_management": "āĻŦāĻšāĻŋāϰāĻžāĻ—āϤ āĻ—ā§āϰāĻ¨ā§āĻĨāĻžāĻ—āĻžāϰ āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻžāĻĒāύāĻž", "face_detection": "āĻŽā§āĻ– āϏāύāĻžāĻ•ā§āϤāĻ•āϰāĻŖ", "face_detection_description": "āĻŽā§‡āĻļāĻŋāύ āϞāĻžāĻ°ā§āύāĻŋāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…ā§āϝāĻžāϏ⧇āĻŸā§‡ āĻĨāĻžāĻ•āĻž āĻŽā§āĻ–/āĻšā§‡āĻšāĻžāϰāĻž āϗ⧁āϞāĻŋ āϏāύāĻžāĻ•ā§āϤ āĻ•āϰ⧁āύāĨ¤ āĻ­āĻŋāĻĄāĻŋāĻ“ āϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ, āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻĨāĻžāĻŽā§āĻŦāύ⧇āχāϞ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ \"āϰāĻŋāĻĢā§āϰ⧇āĻļ\" (āĻĒ⧁āύāϰāĻžāϝāĻŧ) āϏāĻŽāĻ¸ā§āϤ āĻ…ā§āϝāĻžāϏ⧇āϟ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰ⧇āĨ¤ \"āϰāĻŋāϏ⧇āϟ\" āĻ•āϰāĻžāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤāĻ­āĻžāĻŦ⧇ āϏāĻŽāĻ¸ā§āϤ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻŽā§āϖ⧇āϰ āĻĄā§‡āϟāĻž āϏāĻžāĻĢ āĻ•āϰ⧇āĨ¤ \"āĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤ\" āĻ…ā§āϝāĻžāϏ⧇āϟāϗ⧁āϞāĻŋāϕ⧇ āϏāĻžāϰāĻŋāĻŦāĻĻā§āϧ āĻ•āϰ⧇ āϝāĻž āĻāĻ–āύāĻ“ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰāĻž āĻšāϝāĻŧāύāĻŋāĨ¤ āϏāύāĻžāĻ•ā§āϤ āĻ•āϰāĻž āĻŽā§āĻ–āϗ⧁āϞāĻŋāϕ⧇ āĻĢ⧇āϏāĻŋāϝāĻŧāĻžāϞ āϰāĻŋāĻ•āĻ—āύāĻŋāĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻžāϰāĻŋāĻŦāĻĻā§āϧ āĻ•āϰāĻž āĻšāĻŦ⧇, āĻĢ⧇āϏāĻŋāϝāĻŧāĻžāϞ āĻĄāĻŋāĻŸā§‡āĻ•āĻļāύ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻšāĻ“āϝāĻŧāĻžāϰ āĻĒāϰ⧇, āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻŦāĻž āύāϤ⧁āύ āĻŦā§āϝāĻ•ā§āϤāĻŋāĻĻ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻ—ā§‹āĻˇā§āĻ ā§€āĻŦāĻĻā§āϧ āĻ•āϰ⧇āĨ¤", "facial_recognition_job_description": "āĻļāύāĻžāĻ•ā§āϤ āĻ•āϰāĻž āĻŽā§āĻ–āϗ⧁āϞāĻŋāϕ⧇ āĻŽāĻžāύ⧁āώ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻ—ā§‹āĻˇā§āĻ ā§€āϭ⧁āĻ•ā§āϤ/āĻ—ā§āϰ⧁āĻĒ āĻ•āϰ⧁āύāĨ¤ āĻŽā§āĻ– āϏāύāĻžāĻ•ā§āϤāĻ•āϰāĻŖ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻšāĻ“āϝāĻŧāĻžāϰ āĻĒāϰ⧇ āĻāχ āϧāĻžāĻĒāϟāĻŋ āϚāϞ⧇āĨ¤ \"āϰāĻŋāϏ⧇āϟ\" (āĻĒ⧁āύāϰāĻžāϝāĻŧ) āϏāĻŽāĻ¸ā§āϤ āĻŽā§āĻ–āϕ⧇ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻ•āϰ⧇āĨ¤ \"āĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤ/āĻŽāĻŋāϏāĻŋāĻ‚\" āĻŽā§āĻ–āϗ⧁āϞāĻŋāϕ⧇ āϏāĻžāϰāĻŋāϤ⧇ āϰāĻžāϖ⧇ āϝ⧇āϗ⧁āϞ⧋ āϕ⧋āύāĻ“ āĻŦā§āϝāĻ•ā§āϤāĻŋāϕ⧇ āĻāϏāĻžāχāύ/āĻŦāϰāĻžāĻĻā§āĻĻ āĻ•āϰāĻž āĻšāϝāĻŧāύāĻŋāĨ¤", @@ -105,7 +104,6 @@ "job_not_concurrency_safe": "āĻāχ āĻ•āĻžāϜāϟāĻŋ āϏāĻŽāĻžāĻ¨ā§āϤāϰāĻžāϞāĻ­āĻžāĻŦ⧇ āϚāĻžāϞāĻžāύ⧋ āύāĻŋāϰāĻžāĻĒāĻĻ āύ⧟", "job_settings": "āĻ•āĻžāĻœā§‡āϰ āϏ⧇āϟāĻŋāĻ‚āϏ", "job_settings_description": "āĻ•āĻžāĻœā§‡āϰ āϏāĻŽāĻžāĻ¨ā§āϤāϰāĻžāϞāϤāĻž āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰ⧁āύ", - "job_status": "āϚāĻžāĻ•āϰāĻŋāϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻž", "jobs_delayed": "{jobCount, plural, other {# āĻŦāĻŋāϞāĻŽā§āĻŦāĻŋāϤ}}", "jobs_failed": "{jobCount, plural, other {# āĻŦā§āϝāĻ°ā§āĻĨ}}", "library_created": "āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āσ {library}", diff --git a/i18n/ca.json b/i18n/ca.json index 764bc3d024..89fe1617cd 100644 --- a/i18n/ca.json +++ b/i18n/ca.json @@ -7,6 +7,7 @@ "action_common_update": "Actualitzar", "actions": "Accions", "active": "Actiu", + "active_count": "Activat: {count}", "activity": "Activitat", "activity_changed": "L'activitat està {enabled, select, true {activada} other {desactivada}}", "add": "Afegir", @@ -67,6 +68,7 @@ "confirm_reprocess_all_faces": "Esteu segurs que voleu reprocessar totes les cares? AixÃ˛ tambÊ esborrarà la gent que heu anomenat.", "confirm_user_password_reset": "Esteu segur que voleu reinicialitzar la contrasenya de l'usuari {user}?", "confirm_user_pin_code_reset": "Esteu segur que voleu restablir el codi PIN de {user}?", + "copy_config_to_clipboard_description": "Copia la configuraciÃŗ actual del sistema com a objecte JSON al porta-retalls", "create_job": "Crear tasca", "cron_expression": "ExpressiÃŗ Cron", "cron_expression_description": "Estableix l'interval d'escaneig amb el format cron. Per obtenir mÊs informaciÃŗ, consulteu, p.e Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "Deshabiliteu l'inici de sessiÃŗ", "duplicate_detection_job_description": "Executa l'aprenentatge automàtic en els elements per a detectar imatges semblants. Fa servir la cerca intel¡ligent", "exclusion_pattern_description": "Els patrons d'exclusiÃŗ permeten ignorar fitxers i carpetes quan escanegeu una llibreria. AixÃ˛ Ês Ãētil si teniu carpetes que contenen fitxer que no voleu importar, com els fitxers RAW.", - "external_library_management": "GestiÃŗ de llibreries externes", + "export_config_as_json_description": "Baixa la configuraciÃŗ actual del sistema com a fitxer JSON", + "external_libraries_page_description": "Pàgina de la biblioteca externa de l'administrador", "face_detection": "DetecciÃŗ de cares", "face_detection_description": "Detecta les cares fent servir aprenentatge automàtic. Per a videos nomÊs Ês tÊ en compte la miniatura. \"Actualitzar\" reprocessa tots els elements. \"Resetejar\" esborra tota la informaciÃŗ de cares actuals. \"Pendent\" afegeix a la cua els elements que encara no han estat processats. Les cares detectades s'afegiran a la cua per al Reconeixement Facial desprÊs de completar la DetecciÃŗ Facial, tot agrupant-les entre noves persones o les ja existents.", "facial_recognition_job_description": "Agrupa les cares detectades per persona. Aquest pas s'executa desprÊs de completar la detecciÃŗ de cares. \"Resetejar\" reagrupa totes les cares. \"Pendent\" afegeix a la cua les cares que no tenen cap persona assignada.", @@ -102,22 +105,28 @@ "image_thumbnail_description": "Miniatura petita amb metadades eliminades, que s'utilitza quan es visualitzen grups de fotos com la línia de temps principal", "image_thumbnail_quality_description": "Qualitat de miniatura d'1 a 100. MÊs alt Ês millor, perÃ˛ produeix fitxers mÊs grans i pot reduir la capacitat de resposta de l'aplicaciÃŗ.", "image_thumbnail_title": "ConfiguraciÃŗ de les miniatures", + "import_config_from_json_description": "Importa la configuraciÃŗ del sistema pujant un fitxer de configuraciÃŗ JSON", "job_concurrency": "{job} simultàniament", "job_created": "Tasca creada", "job_not_concurrency_safe": "Aquesta tasca no Ês segura per a la conconcurrència.", "job_settings": "ConfiguraciÃŗ de les tasques", "job_settings_description": "Gestiona la concurrència de tasques", - "job_status": "Estat de les tasques", "jobs_delayed": "{jobCount, plural, other {# posposades}}", "jobs_failed": "{jobCount, plural, other {# fallides}}", + "jobs_over_time": "Feines al llarg del temps", "library_created": "Bilbioteca creada: {library}", "library_deleted": "Bilbioteca eliminada", + "library_details": "Detalls de la llibreria", + "library_folder_description": "Especifiqueu una carpeta per importar. Aquesta carpeta, incloses les subcarpetes, s'escanejarà a la recerca d'imatges i vídeos.", + "library_remove_exclusion_pattern_prompt": "Esteu segur que voleu eliminar aquest patrÃŗ d'exclusiÃŗ?", + "library_remove_folder_prompt": "Esteu segur que voleu eliminar aquesta carpeta d'importaciÃŗ?", "library_scanning": "Escaneig periÃ˛dic", "library_scanning_description": "Configurar l'escaneig periÃ˛dic de bilbioteques", "library_scanning_enable_description": "Habilita l'escaneig periÃ˛dic de biblioteques", "library_settings": "Llibreria externes", "library_settings_description": "Gestiona la configuraciÃŗ de les llibreries externes", "library_tasks_description": "Escaneja les biblioteques externes per trobar arxius nous o canviats", + "library_updated": "Llibreria actualitzada", "library_watching_enable_description": "Consultar llibreries externes per detectar canvis en fitxers", "library_watching_settings": "Monitoratge de la llibreria (EXPERIMENTAL)", "library_watching_settings_description": "MonitoritzaciÃŗ automàtica de fitxers modificats", @@ -172,7 +181,12 @@ "machine_learning_smart_search_enabled": "Activa la cerca intel¡ligent", "machine_learning_smart_search_enabled_description": "Si està desactivada, les imatges no es codificaran per la cerca intel¡ligent.", "machine_learning_url_description": "L'URL del servidor d'aprenentatge automàtic. Si es proporciona mÊs d'un URL, s'intentarà accedir a cada servidor en ordre fins que un d'ells respongui correctament.", + "maintenance_settings": "En manteniment", + "maintenance_settings_description": "Posar Immich en mode de manteniment.", + "maintenance_start": "Iniciar el mode de manteniment", + "maintenance_start_error": "Error en iniciar el mode de manteniment.", "manage_concurrency": "Gestiona la concurrència", + "manage_concurrency_description": "Ves a la pàgina de tasques per gestionar la concurrència de tasques", "manage_log_settings": "Gestiona la configuraciÃŗ del registre", "map_dark_style": "Tema fosc", "map_enable_description": "Habilita característiques del mapa", @@ -262,10 +276,14 @@ "password_settings_description": "Gestiona la configuraciÃŗ de l'inici de sessiÃŗ amb contrasenya", "paths_validated_successfully": "Totes les rutes han estat validades amb èxit", "person_cleanup_job": "Neteja de persona", + "queue_details": "Detall de les cues", + "queues": "Cues de treball", + "queues_page_description": "Pàgina de cues de treballs d'administrador", "quota_size_gib": "Tamany de la quota (GiB)", "refreshing_all_libraries": "Actualitzant totes les biblioteques", "registration": "Registre d'administrador", "registration_description": "Com que ets el primer usuari del sistema, seràs designat com a administrador i seràs responsable de les tasques administratives. TambÊ seràs l'encarregat de crear usuaris addicionals.", + "remove_failed_jobs": "Eliminar treballs fallits", "require_password_change_on_login": "Requerir que l'usuari canviï la contrasenya en el primer inici de sessiÃŗ", "reset_settings_to_default": "Restablir configuracions per defecte", "reset_settings_to_recent_saved": "Restablir la configuraciÃŗ guardada mÊs recent", @@ -278,8 +296,10 @@ "server_public_users_description": "Tots els usuaris (nom i correu electrÃ˛nic) apareixen a la llista a l'afegir un usuari als àlbums compartits. Si es desactiva, la llista nomÊs serà disponible pels usuaris administradors.", "server_settings": "ConfiguraciÃŗ del servidor", "server_settings_description": "Gestiona la configuraciÃŗ del servidor", + "server_stats_page_description": "Pàgina d'estadístiques del servidor de l'administrador", "server_welcome_message": "Missatge de benvinguda", "server_welcome_message_description": "Missatge que es mostra a la pàgina d'inici de sessiÃŗ.", + "settings_page_description": "Pàgina de configuraciÃŗ de l'administrador", "sidecar_job": "Metadades auxiliars", "sidecar_job_description": "Descobreix o sincronitza metadades auxiliars des del sistema de fitxers", "slideshow_duration_description": "Segons per mostrar cada imatge", @@ -399,6 +419,7 @@ "user_settings": "ConfiguraciÃŗ d'usuaris", "user_settings_description": "Gestiona la configuraciÃŗ dels usuaris", "user_successfully_removed": "L'usuari {email} s'ha eliminat correctament.", + "users_page_description": "Pàgina d'usuaris de l'administrador", "version_check_enabled_description": "Activa la comprovaciÃŗ de la versiÃŗ", "version_check_implications": "La funciÃŗ de comprovaciÃŗ de versions depèn de comunicacions periÃ˛diques amb github.com", "version_check_settings": "ComprovaciÃŗ de versiÃŗ", @@ -631,6 +652,7 @@ "backup_options_page_title": "Opcions de cÃ˛pia de seguretat", "backup_setting_subtitle": "Gestiona la configuraciÃŗ de càrrega en segon pla i en primer pla", "backup_settings_subtitle": "Administra la configuraciÃŗ de pujada", + "backup_upload_details_page_more_details": "Toqueu per obtenir mÊs detalls", "backward": "Enrere", "biometric_auth_enabled": "AutentificaciÃŗ biomètrica activada", "biometric_locked_out": "Esteu bloquejats fora de l'autenticaciÃŗ biomètrica", @@ -697,6 +719,7 @@ "check_corrupt_asset_backup_button": "Realitzar comprovaciÃŗ", "check_corrupt_asset_backup_description": "Executeu aquesta comprovaciÃŗ nomÊs mitjançant Wi-Fi i un cop s'hagi fet una cÃ˛pia de seguretat de tots els actius. El procediment pot trigar uns minuts.", "check_logs": "Comprovar els registres", + "checksum": "Suma de control", "choose_matching_people_to_merge": "Trieu les persones que coincideixin per combinar-les", "city": "Ciutat", "clear": "Buida", @@ -719,6 +742,7 @@ "collapse_all": "Redueix-ho tot", "color": "Color", "color_theme": "Tema de color", + "command": "Ordre", "comment_deleted": "Comentari esborrat", "comment_options": "Opcions de comentari", "comments_and_likes": "Comentaris i agradaments", @@ -967,6 +991,7 @@ "failed_to_unstack_assets": "No s'han pogut desapilar els elements", "failed_to_update_notification_status": "Error en actualitzar l'estat de les notificacions", "incorrect_email_or_password": "Correu electrÃ˛nic o contrasenya incorrectes", + "library_folder_already_exists": "Aquesta ruta d'importaciÃŗ ja existeix.", "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.", "quota_higher_than_disk_size": "Heu establert una quota mÊs gran que la mida de disc", @@ -1051,6 +1076,7 @@ "unable_to_update_user": "No es pot actualitzar l'usuari", "unable_to_upload_file": "No es pot carregar el fitxer" }, + "exclusion_pattern": "PatrÃŗ d'exclusiÃŗ", "exif": "EXIF", "exif_bottom_sheet_description": "Afegeix descripciÃŗ...", "exif_bottom_sheet_description_error": "No s'ha pogut actualitzar la descripciÃŗ", @@ -1081,6 +1107,7 @@ "external_network_sheet_info": "Quan no estigui a la xarxa Wi-Fi preferida, l'aplicaciÃŗ es connectarà al servidor mitjançant el primer dels URL segÃŧents a què pot arribar, començant de dalt a baix", "face_unassigned": "Sense assignar", "failed": "Fallat", + "failed_count": "Fallits: {count}", "failed_to_authenticate": "No s'ha pogut autenticar", "failed_to_load_assets": "Error carregant recursos", "failed_to_load_folder": "No s'ha pogut carregar la carpeta", @@ -1110,6 +1137,7 @@ "folders_feature_description": "Explorar la vista de carpetes per les fotos i vídeos del sistema d'arxius", "forgot_pin_code_question": "Has oblidat el teu PIN?", "forward": "Endavant", + "full_path": "Ruta completa: {path}", "gcast_enabled": "Google Cast", "gcast_enabled_description": "Aquesta funciÃŗ carrega recursos externs de Google per funcionar.", "general": "General", @@ -1140,12 +1168,14 @@ "header_settings_header_name_input": "Nom de la capçalera", "header_settings_header_value_input": "Valor de la capçalera", "headers_settings_tile_title": "Capçaleres proxy personalitzades", + "height": "Alçada", "hi_user": "Hola {name} ({email})", "hide_all_people": "Amaga totes les persones", "hide_gallery": "Amaga la galeria", "hide_named_person": "Amaga la persona {name}", "hide_password": "Amaga la contrasenya", "hide_person": "Amaga la persona", + "hide_text_recognition": "Oculta el reconeixement de text", "hide_unnamed_people": "Amaga persones sense nom", "home_page_add_to_album_conflicts": "S'han afegit {added} elements a l'àlbum {album}. {failed} elements ja existeixen a l'àlbum.", "home_page_add_to_album_err_local": "Encara no es poden afegir elements locals als àlbums, ometent", @@ -1239,6 +1269,8 @@ "let_others_respond": "Deixa que els altres responguin", "level": "Nivell", "library": "Bibilioteca", + "library_add_folder": "Afegir carpeta", + "library_edit_folder": "Editar carpeta", "library_options": "Opcions de biblioteca", "library_page_device_albums": "Àlbums al Dispositiu", "library_page_new_album": "Nou àlbum", @@ -1259,6 +1291,7 @@ "local": "Local", "local_asset_cast_failed": "No es pot convertir un actiu que no s'ha penjat al servidor", "local_assets": "Recursos Locals", + "local_id": "ID local", "local_media_summary": "Resum de Mitjans Locals", "local_network": "Xarxa local", "local_network_sheet_info": "L'aplicaciÃŗ es connectarà al servidor mitjançant aquest URL quan utilitzeu la xarxa Wi-Fi especificada", @@ -1310,6 +1343,11 @@ "loop_videos_description": "Habilita la reproducciÃŗ en bucle del vídeo en els detalls.", "main_branch_warning": "Esteu utilitzant una versiÃŗ en desenvolupament; Recomanem fer servir una versiÃŗ publicada!", "main_menu": "MenÃē principal", + "maintenance_description": "Immich ha estat posat en mode de manteniment.", + "maintenance_end": "Finalitzar el mode de manteniment", + "maintenance_end_error": "Error al finalitzar el mode de manteniment.", + "maintenance_logged_in_as": "Actualment la sessiÃŗ esta iniciada per {user}", + "maintenance_title": "Temporalment inaccessible", "make": "Fabricant", "manage_geolocation": "Gestioneu la vostra ubicaciÃŗ", "manage_media_access_rationale": "Aquest permís es necessari per a la correcta gestiÃŗ dels actius que es mouen a la paperera i es restauren d'ella.", @@ -1432,6 +1470,7 @@ "no_favorites_message": "Afegiu preferits per trobar les millors fotos i vídeos a l'instant", "no_libraries_message": "Creeu una llibreria externa per veure les vostres fotos i vídeos", "no_local_assets_found": "No s'ha trobat cap recurs local amb aquest checksum", + "no_location_set": "No s'ha definit cap ubicaciÃŗ", "no_locked_photos_message": "Les fotos i vídeos d'aquesta carpeta estan ocultes, i no es mostraran a mesura que navegues o cerques a la teva biblioteca.", "no_name": "Sense nom", "no_notifications": "No hi ha notificacions", @@ -1491,6 +1530,7 @@ "other_variables": "Altres variables", "owned": "Propi", "owner": "Propietari", + "page": "Pàgina", "partner": "Company/a", "partner_can_access": "{partner} hi tÊ accÊs", "partner_can_access_assets": "Totes les vostres fotos i vídeos excepte les arxivades i eliminades", @@ -1822,6 +1862,8 @@ "server_offline": "Servidor fora de línia", "server_online": "Servidor en línia", "server_privacy": "Privadesa del servidor", + "server_restarting_description": "Aquesta pàgina es refrescarà momentàniament.", + "server_restarting_title": "El servidor s'està reiniciant", "server_stats": "Estadístiques del servidor", "server_update_available": "ActualitzaciÃŗ del servidor disponible", "server_version": "VersiÃŗ del servidor", @@ -1945,6 +1987,7 @@ "show_slideshow_transition": "Mostra la transiciÃŗ de la presentaciÃŗ de diapositives", "show_supporter_badge": "Insígnia de contribuent", "show_supporter_badge_description": "Mostra una insígnia de contributor", + "show_text_recognition": "Mostra el reconeixement de text", "show_text_search_menu": "Mostra el menÃē de cerca amb text", "shuffle": "Mescla", "sidebar": "Barra lateral", @@ -2015,6 +2058,7 @@ "tags": "Etiquetes", "tap_to_run_job": "Toca per executar el treball", "template": "Plantilla", + "text_recognition": "Reconeixement de text", "theme": "Tema", "theme_selection": "SelecciÃŗ de tema", "theme_selection_description": "Activa automàticament el tema fosc o clar en funciÃŗ de les preferències del sistema del navegador", @@ -2047,6 +2091,7 @@ "to_select": "per seleccionar", "to_trash": "Paperera", "toggle_settings": "Canvia configuraciÃŗ", + "toggle_theme_description": "Commuta el tema", "total": "Total", "total_usage": "Ús total", "trash": "Paperera", @@ -2155,6 +2200,7 @@ "view_album": "Veure l'àlbum", "view_all": "Veure tot", "view_all_users": "Mostra tot els usuaris", + "view_asset_owners": "Veure els propietaris dels actius", "view_details": "Veure Detalls", "view_in_timeline": "Mostrar a la línia de temps", "view_link": "Veure enllaç", @@ -2171,10 +2217,12 @@ "viewer_unstack": "Desapila", "visibility_changed": "La visibilitat ha canviat per {count, plural, one {# persona} other {# persones}}", "waiting": "Esperant", + "waiting_count": "Esperant: {count}", "warning": "Avís", "week": "Setmana", "welcome": "Benvingut", "welcome_to_immich": "Benvingut a immich", + "width": "Amplada", "wifi_name": "Nom Wi-Fi", "workflow": "Flux de treball", "wrong_pin_code": "Codi PIN incorrecte", diff --git a/i18n/cs.json b/i18n/cs.json index 7205926696..2f684d4ac6 100644 --- a/i18n/cs.json +++ b/i18n/cs.json @@ -7,6 +7,7 @@ "action_common_update": "Aktualizovat", "actions": "Akce", "active": "Aktivní", + "active_count": "Aktivní: {count}", "activity": "Aktivita", "activity_changed": "Aktivita je {enabled, select, true {povolena} other {zakÃĄzÃĄna}}", "add": "Přidat", @@ -67,6 +68,7 @@ "confirm_reprocess_all_faces": "Opravdu chcete znovu zpracovat vÅĄechny obličeje? Tím se vymaÅžou i pojmenovanÊ osoby.", "confirm_user_password_reset": "Opravdu chcete obnovit heslo uÅživatele {user}?", "confirm_user_pin_code_reset": "Opravdu chcete resetovat PIN kÃŗd uÅživatele {user}?", + "copy_config_to_clipboard_description": "Zkopírujte aktuÃĄlní konfiguraci systÊmu jako JSON objekt do schrÃĄnky", "create_job": "Vytvořit Ãēlohu", "cron_expression": "VÃŊraz cron", "cron_expression_description": "Nastavte interval prohledÃĄvÃĄní pomocí cron formÃĄtu. DalÅĄÃ­ informace naleznete např. v Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "ZakÃĄzat přihlÃĄÅĄení", "duplicate_detection_job_description": "SpuÅĄtění strojovÊho učení na poloÅžkÃĄch za Ãēčelem detekce podobnÃŊch obrÃĄzků. SpolÊhÃĄ na ChytrÊ vyhledÃĄvÃĄní", "exclusion_pattern_description": "Vzory vyloučení umoŞňují při prohledÃĄvÃĄní knihovny ignorovat soubory a sloÅžky. To je uÅžitečnÊ, pokud mÃĄte sloÅžky obsahující soubory, kterÊ nechcete importovat, například RAW soubory.", - "external_library_management": "SprÃĄva externích knihoven", + "export_config_as_json_description": "StÃĄhněte si aktuÃĄlní konfiguraci systÊmu jako JSON soubor", + "external_libraries_page_description": "StrÃĄnka externí knihovny sprÃĄvce", "face_detection": "Detekce obličejů", "face_detection_description": "Detekce obličejů v obrÃĄzcích pomocí strojovÊho učení. U videí se bere v Ãēvahu pouze miniatura. „Obnovit“ znovu zpracuje vÅĄechny poloÅžky. „Resetovat“ navíc vymaÅže vÅĄechna aktuÃĄlní data obličejů. „Chybějící“ zařadí do fronty poloÅžky, kterÊ jeÅĄtě nebyly zpracovÃĄny. ZjiÅĄtěnÊ obličeje budou po dokončení funkce RozpoznÃĄvÃĄní obličejů zařazeny do fronty a seskupeny do stÃĄvajících nebo novÃŊch osob.", "facial_recognition_job_description": "Seskupí nalezenÊ obličeje do osob. Tento krok se spustí po dokončení detekce obličejů. „Resetovat“ znovu seskupí vÅĄechny obličeje. „Chybějící“ zpracuje obličeje, kterÊ nemají přiřazenou osobu.", @@ -102,14 +105,15 @@ "image_thumbnail_description": "MalÃĄ miniatura s odstraněnÃŊmi metadaty, kterÃŊ se pouŞívÃĄ při prohlíŞení skupin fotografií, jako je hlavní časovÃĄ osa", "image_thumbnail_quality_description": "Kvalita miniatur od 1 do 100. VyÅĄÅĄÃ­ je lepÅĄÃ­, ale vytvÃĄÅ™Ã­ větÅĄÃ­ soubory a můŞe sníŞit odezvu aplikace.", "image_thumbnail_title": "Miniatury", + "import_config_from_json_description": "Importujte konfiguraci systÊmu nahrÃĄním konfiguračního JSON souboru", "job_concurrency": "SouběŞnost Ãēlohy {job}", "job_created": "Úloha vytvořena", "job_not_concurrency_safe": "Tato Ãēloha není bezpečenÃĄ pro souběh.", "job_settings": "Úlohy", "job_settings_description": "SprÃĄva souběŞnosti Ãēloh", - "job_status": "Stav Ãēloh", "jobs_delayed": "{jobCount, plural, one {# zpoÅžděnÃŊ} few {# zpoÅžděnÊ} other {# zpoÅžděnÃŊch}}", "jobs_failed": "{jobCount, plural, one {# neÃēspÄ›ÅĄnÃŊ} few {# neÃēspÄ›ÅĄnÊ} other {# neÃēspÄ›ÅĄnÃŊch}}", + "jobs_over_time": "Úlohy v průběhu času", "library_created": "Vytvořena knihovna: {library}", "library_deleted": "Knihovna smazÃĄna", "library_details": "Podrobnosti o knihovně", @@ -182,6 +186,7 @@ "maintenance_start": "ZahÃĄjit reÅžim ÃēdrÅžby", "maintenance_start_error": "Nepodařilo se zahÃĄjit reÅžim ÃēdrÅžby.", "manage_concurrency": "SprÃĄva souběŞnosti", + "manage_concurrency_description": "Přejděte na strÃĄnku Ãēloh a spravujte souběŞnost Ãēloh", "manage_log_settings": "SprÃĄva nastavení protokolu", "map_dark_style": "TmavÃŊ motiv", "map_enable_description": "Povolit funkce mapy", @@ -271,10 +276,14 @@ "password_settings_description": "SprÃĄva nastavení přihlaÅĄovÃĄní pomocí hesla", "paths_validated_successfully": "VÅĄechny cesty byly ÃēspÄ›ÅĄně ověřeny", "person_cleanup_job": "PromazÃĄní osob", + "queue_details": "Podrobnosti o frontě", + "queues": "Fronty Ãēloh", + "queues_page_description": "StrÃĄnka fronty Ãēloh sprÃĄvce", "quota_size_gib": "Velikost kvÃŗty (GiB)", "refreshing_all_libraries": "Obnovení vÅĄech knihoven", "registration": "Registrace sprÃĄvce", "registration_description": "Vzhledem k tomu, Åže jste prvním uÅživatelem v systÊmu, budete přiřazen jako sprÃĄvce a budete zodpovědnÃŊ za Ãēkoly sprÃĄvy a dalÅĄÃ­ uÅživatelÊ budou vytvořeni vÃĄmi.", + "remove_failed_jobs": "Odebrat neÃēspÄ›ÅĄnÊ Ãēlohy", "require_password_change_on_login": "PoÅžadovat, aby si uÅživatel při prvním přihlÃĄÅĄení změnil heslo", "reset_settings_to_default": "Obnovení vÃŊchozího nastavení", "reset_settings_to_recent_saved": "Obnovit poslední uloÅženÊ nastavení", @@ -287,8 +296,10 @@ "server_public_users_description": "VÅĄichni uÅživatelÊ (jmÊno a e-mail) jsou uvedeni při přidÃĄvÃĄní uÅživatele do sdílenÃŊch alb. Pokud je tato funkce vypnuta, bude seznam uÅživatelů dostupnÃŊ pouze uÅživatelům z řad sprÃĄvců.", "server_settings": "Server", "server_settings_description": "SprÃĄva nastavení serveru", + "server_stats_page_description": "StrÃĄnka statistik administrÃĄtorskÊho serveru", "server_welcome_message": "Uvítací zprÃĄva", "server_welcome_message_description": "ZprÃĄva, kterÃĄ se zobrazí na přihlaÅĄovací strÃĄnce.", + "settings_page_description": "StrÃĄnka nastavení administrÃĄtora", "sidecar_job": "Postranní metadata", "sidecar_job_description": "ObjevovÃĄní nebo synchronizace sidecar metadat ze systÊmu souborů", "slideshow_duration_description": "Počet sekund pro zobrazení kaÅždÊho obrÃĄzku", @@ -390,9 +401,9 @@ "trash_number_of_days_description": "Počet dní, po kterÊ je třeba poloÅžku ponechat v koÅĄi, neÅž bude trvale odstraněna", "trash_settings": "KoÅĄ", "trash_settings_description": "SprÃĄva nastavení koÅĄe", - "unlink_all_oauth_accounts": "Odpojit vÅĄechny Ãēčty OAuth", + "unlink_all_oauth_accounts": "Odpojit vÅĄechny OAuth Ãēčty", "unlink_all_oauth_accounts_description": "Nezapomeňte odpojit vÅĄechny OAuth Ãēčty před přechodem k novÊmu poskytovateli.", - "unlink_all_oauth_accounts_prompt": "Opravdu chcete odpojit vÅĄechny Ãēčty OAuth? Tím se resetuje ID OAuth pro kaÅždÊho uÅživatele a tento Ãēkon nelze vrÃĄtit zpět.", + "unlink_all_oauth_accounts_prompt": "Opravdu chcete odpojit vÅĄechny OAuth Ãēčty? Tím se resetuje OAuth ID pro kaÅždÊho uÅživatele a tento Ãēkon nelze vrÃĄtit zpět.", "user_cleanup_job": "PromazÃĄní uÅživatelů", "user_delete_delay": "Účet a poloÅžky uÅživatele {user} budou trvale smazÃĄny za {delay, plural, one {# den} few {# dny} other {# dní}}.", "user_delete_delay_settings": "OdloÅžení odstranění", @@ -408,6 +419,7 @@ "user_settings": "UÅživatelÊ", "user_settings_description": "SprÃĄva nastavení uÅživatelů", "user_successfully_removed": "UÅživatel {email} byl ÃēspÄ›ÅĄně odstraněn.", + "users_page_description": "StrÃĄnka sprÃĄvců", "version_check_enabled_description": "Povolit kontrolu verzí", "version_check_implications": "Kontrola verze je zaloÅžena na pravidelnÊ komunikaci s github.com", "version_check_settings": "Kontrola verze", @@ -640,6 +652,7 @@ "backup_options_page_title": "Nastavení zÃĄloh", "backup_setting_subtitle": "SprÃĄva nastavení zÃĄlohovÃĄní na pozadí a na popředí", "backup_settings_subtitle": "SprÃĄva nastavení nahrÃĄvÃĄní", + "backup_upload_details_page_more_details": "Klepněte pro více informací", "backward": "PozpÃĄtku", "biometric_auth_enabled": "BiometrickÊ ověřovÃĄní je povoleno", "biometric_locked_out": "Jste vyloučeni z biometrickÊho ověřovÃĄní", @@ -706,6 +719,7 @@ "check_corrupt_asset_backup_button": "ProvÊst kontrolu", "check_corrupt_asset_backup_description": "Tuto kontrolu provÃĄdějte pouze přes Wi-Fi a po zÃĄlohovÃĄní vÅĄech prostředků. Takto operace můŞe trvat několik minut.", "check_logs": "Zkontrolujte protokoly", + "checksum": "Kontrolní součet", "choose_matching_people_to_merge": "Zvolte odpovídající osoby ke sloučení", "city": "Město", "clear": "Vymazat", @@ -728,6 +742,7 @@ "collapse_all": "Sbalit vÅĄe", "color": "Barva", "color_theme": "BarevnÃŊ motiv", + "command": "Příkaz", "comment_deleted": "KomentÃĄÅ™ odstraněn", "comment_options": "MoÅžnosti komentÃĄÅ™e", "comments_and_likes": "KomentÃĄÅ™e a lajky", @@ -1092,6 +1107,7 @@ "external_network_sheet_info": "Pokud nejste v preferovanÊ síti Wi-Fi, aplikace se připojí k serveru prostřednictvím první z níŞe uvedenÃŊch adres URL, kterÊ můŞe dosÃĄhnout, počínaje shora dolů", "face_unassigned": "Nepřiřazena", "failed": "Selhalo", + "failed_count": "Selhalo: {count}", "failed_to_authenticate": "Ověření se nezdařilo", "failed_to_load_assets": "Nepodařilo se načíst poloÅžky", "failed_to_load_folder": "Nepodařilo se načíst sloÅžku", @@ -1152,12 +1168,14 @@ "header_settings_header_name_input": "NÃĄzev hlavičky", "header_settings_header_value_input": "Hodnota hlavičky", "headers_settings_tile_title": "Vlastní proxy hlavičky", + "height": "VÃŊÅĄka", "hi_user": "Ahoj {name} ({email})", "hide_all_people": "SkrÃŊt vÅĄechny lidi", "hide_gallery": "SkrÃŊt galerii", "hide_named_person": "SkrÃŊt osobu {name}", "hide_password": "SkrÃŊt heslo", "hide_person": "SkrÃŊt osobu", + "hide_text_recognition": "SkrÃŊt rozpoznÃĄvÃĄní textu", "hide_unnamed_people": "SkrÃŊt nejmenovanÊ lidi", "home_page_add_to_album_conflicts": "PřidÃĄno {added} poloÅžek do alba {album}. {failed} poloÅžek je jiÅž v albu.", "home_page_add_to_album_err_local": "Zatím není moÅžnÊ přidat lokÃĄlní mÊdia do alb, přeskakuji", @@ -1273,6 +1291,7 @@ "local": "Místní", "local_asset_cast_failed": "Nelze odeslat poloÅžku, kterÃĄ není nahranÃĄ na serveru", "local_assets": "Místní poloÅžky", + "local_id": "Místní ID", "local_media_summary": "Souhrn místních mÊdií", "local_network": "Místní síÅĨ", "local_network_sheet_info": "Aplikace se při pouÅžití zadanÊ sítě Wi-Fi připojí k serveru prostřednictvím tohoto URL", @@ -1511,6 +1530,7 @@ "other_variables": "DalÅĄÃ­ proměnnÊ", "owned": "Vlastní", "owner": "Vlastník", + "page": "StrÃĄnka", "partner": "Partner", "partner_can_access": "{partner} mÃĄ přístup", "partner_can_access_assets": "VÅĄechny vaÅĄe fotky a videa kromě těch, kterÊ jsou v sekcích ArchivovÃĄno a SmazÃĄno", @@ -1967,6 +1987,7 @@ "show_slideshow_transition": "Zobrazit přechod prezentace", "show_supporter_badge": "Odznak podporovatele", "show_supporter_badge_description": "Zobrazit odznak podporovatele", + "show_text_recognition": "Zobrazit rozpoznÃĄvÃĄní textu", "show_text_search_menu": "Zobrazit nabídku pro vyhledÃĄvÃĄní textu", "shuffle": "NÃĄhodnÃŊ vÃŊběr", "sidebar": "Postranní panel", @@ -2037,6 +2058,7 @@ "tags": "Značky", "tap_to_run_job": "Klepnutím spustíte Ãēlohu", "template": "Å ablona", + "text_recognition": "RozpoznÃĄvÃĄní textu", "theme": "Motiv", "theme_selection": "VÃŊběr motivu", "theme_selection_description": "AutomatickÊ nastavení světlÊho nebo tmavÊho motivu podle systÊmovÃŊch preferencí prohlíŞeče", @@ -2069,6 +2091,7 @@ "to_select": "vybrat", "to_trash": "Vyhodit", "toggle_settings": "Přepnout nastavení", + "toggle_theme_description": "Přepnout motiv", "total": "Celkem", "total_usage": "CelkovÊ vyuÅžití", "trash": "KoÅĄ", @@ -2177,6 +2200,7 @@ "view_album": "Zobrazit album", "view_all": "Zobrazit vÅĄe", "view_all_users": "Zobrazit vÅĄechny uÅživatele", + "view_asset_owners": "Zobrazit vlastníky poloÅžek", "view_details": "Zobrazit podrobnosti", "view_in_timeline": "Zobrazit na časovÊ ose", "view_link": "Zobrazit odkaz", @@ -2193,10 +2217,12 @@ "viewer_unstack": "ZruÅĄit zÃĄsobník", "visibility_changed": "Viditelnost změněna u {count, plural, one {# osoby} few {# osob} other {# lidí}}", "waiting": "Čekající", + "waiting_count": "Čekající: {count}", "warning": "Upozornění", "week": "TÃŊden", "welcome": "Vítejte", "welcome_to_immich": "Vítejte v Immichi", + "width": "Šířka", "wifi_name": "NÃĄzev Wi-Fi", "workflow": "Pracovní postup", "wrong_pin_code": "ChybnÃŊ PIN kÃŗd", diff --git a/i18n/da.json b/i18n/da.json index 698951ca28..ce07a931b8 100644 --- a/i18n/da.json +++ b/i18n/da.json @@ -7,6 +7,7 @@ "action_common_update": "Opdater", "actions": "Handlinger", "active": "Aktiv", + "active_count": "Aktiv: {count}", "activity": "Aktivitet", "activity_changed": "Aktivitet er {enabled, select, true {aktiveret} other {deaktiveret}}", "add": "Tilføj", @@ -67,6 +68,7 @@ "confirm_reprocess_all_faces": "Er du sikker pÃĨ, at du vil genbehandle alle ansigter? Dette vil ogsÃĨ rydde navngivne personer.", "confirm_user_password_reset": "Er du sikker pÃĨ, at du vil nulstille {user}s adgangskode?", "confirm_user_pin_code_reset": "Er du sikker pÃĨ at du vil nulstille {user}'s PIN kode?", + "copy_config_to_clipboard_description": "Kopier den aktuelle systemkonfiguration som et JSON-objekt til udklipsholderen", "create_job": "Opret job", "cron_expression": "Cron formel", "cron_expression_description": "Indstil skannings intervallet i cron format. For mere information se: Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "Deaktiver login", "duplicate_detection_job_description": "Kør maskinlÃĻring pÃĨ mediefiler for at opdage lignende billeder. Er afhÃĻngig af Smart Søgning", "exclusion_pattern_description": "Ekskluderingsmønstre lader dig ignorere filer og mapper, nÃĨr du scanner dit bibliotek. Dette er nyttigt, hvis du har mapper, der indeholder filer, du ikke vil importere, sÃĨsom RAW-filer.", - "external_library_management": "Ekstern biblioteksstyring", + "export_config_as_json_description": "Download den aktuelle systemkonfiguration som en JSON-fil", + "external_libraries_page_description": "Admin ekstern biblioteksside", "face_detection": "Ansigtsopdagelse", "face_detection_description": "Genkend ansigterne i mediefiler via maskinlÃĻring. For videoer er det kun miniaturebilledet som tages hensyn til. \"Alle\" (gen-)behandler alle mediefiler. \"Mangler\" sÃĻtter mediefiler i kø, som ikke er blevet behandlet endnu. Opdagede ansigter vil blive sat i kø til Ansigtsgenkendelse efter Ansigtsopdagelse er fÃĻrdig, hvilket grupperer dem til eksisterende eller nye personer.", "facial_recognition_job_description": "Grupper opdagede ansigter i personer. Dette trin kører efter Ansigtsopdagelse er fÃĻrdig. \"Alle\" (gen-)klumper alle ansigter sammen. \"Mangler\" sÃĻtter ansigter i kø, som ikke har en person tildelt.", @@ -102,22 +105,28 @@ "image_thumbnail_description": "SmÃĨ miniaturer uden metadata, bruges nÃĨr der ses samlinger eller den primÃĻre tidslinie", "image_thumbnail_quality_description": "Miniaturer kvaliteten indstilles fra 1 til 100. Nu højre, nu bedre kvalitet. Men giver større filer og pÃĨvirker programmets svartider.", "image_thumbnail_title": "Thumbnail-indstillinger", + "import_config_from_json_description": "Importer systemkonfiguration ved at uploade en JSON-konfigurationsfil", "job_concurrency": "{job} samtidighed", "job_created": "opgaven er skabt", "job_not_concurrency_safe": "Denne opgave er ikke sikker at køre samtidigt med andre.", "job_settings": "Jobindstillinger", "job_settings_description": "AdministrÊr samtidige opgaver", - "job_status": "Opgave Status", "jobs_delayed": "{jobCount, plural, one {# forsinket} other {# forsinkede}}", "jobs_failed": "{jobCount, plural, one {# fejlet} other {# fejlede}}", + "jobs_over_time": "Opgaver over tid", "library_created": "Skabte bibliotek: {library}", "library_deleted": "Bibliotek slettet", + "library_details": "Bibliotek detaljer", + "library_folder_description": "Angiv en mappe, der skal importeres. Denne mappe, inklusive undermapper, scannes for billeder og videoer.", + "library_remove_exclusion_pattern_prompt": "Er du sikker pÃĨ, at du vil fjerne dette udelukkelsesmønster?", + "library_remove_folder_prompt": "Er du sikker pÃĨ, at du vil fjerne denne importmappe?", "library_scanning": "Periodisk scanning", "library_scanning_description": "Konfigurer periodisk biblioteksscanning", "library_scanning_enable_description": "Aktiver periodisk biblioteksscanning", "library_settings": "Eksternt bibliotek", "library_settings_description": "Administrer eksterne biblioteksindstillinger", "library_tasks_description": "Scan eksterne biblioteker for nye og/eller ÃĻndrede mediefiler", + "library_updated": "Opdateret bibliotek", "library_watching_enable_description": "OvervÃĨg eksterne biblioteker for filÃĻndringer", "library_watching_settings": "Biblioteks overvÃĨgning [EKSPERIMENTEL]", "library_watching_settings_description": "Tjek automatisk for ÃĻndrede filer", @@ -177,6 +186,7 @@ "maintenance_start": "Start vedligeholdelsestilstand", "maintenance_start_error": "Vedligeholdelsestilstand kunne ikke startes.", "manage_concurrency": "Administrer antallet af samtidige opgaver", + "manage_concurrency_description": "Naviger til jobsiden for at administrere jobsamtidighed", "manage_log_settings": "Administrer logindstillinger", "map_dark_style": "Mørk tema", "map_enable_description": "AktivÊr kortfunktioner", @@ -266,10 +276,14 @@ "password_settings_description": "Administrer indstillinger for adgangskodelogin", "paths_validated_successfully": "Alle stier valideret med succes", "person_cleanup_job": "Person-oprydning", + "queue_details": "Kø-detaljer", + "queues": "Opgavekøer", + "queues_page_description": "Side med administrator-opgavekøer", "quota_size_gib": "Kvotestørrelse (GiB)", "refreshing_all_libraries": "Opdaterer alle biblioteker", "registration": "Administratorregistrering", "registration_description": "Da du er den første bruger i systemet, fÃĨr du tildelt rollen som administrator og ansvar for administration og oprettelsen af nye brugere.", + "remove_failed_jobs": "Fjern mislykkede opgaver", "require_password_change_on_login": "KrÃĻv at brugeren skifter adgangskode ved første login", "reset_settings_to_default": "Nulstil indstillingerne til standard", "reset_settings_to_recent_saved": "Nulstil indstillinger til de senest gemte indstillinger", @@ -282,8 +296,10 @@ "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_description": "AdministrÊr serverindstillinger", + "server_stats_page_description": "Admin server statistikside", "server_welcome_message": "Velkomstbesked", "server_welcome_message_description": "En besked som bliver vist pÃĨ loginsiden.", + "settings_page_description": "Admin-indstillinger side", "sidecar_job": "Medfølgende metadata", "sidecar_job_description": "Opdag eller synkroniser medfølgende metadata fra filsystemet", "slideshow_duration_description": "Antal sekunder at vise hvert billede", @@ -403,6 +419,7 @@ "user_settings": "Brugerindstillinger", "user_settings_description": "AdministrÊr brugerindstillinger", "user_successfully_removed": "Bruger {email} er blevet fjernet med succes.", + "users_page_description": "Admin-brugere side", "version_check_enabled_description": "AktivÊr versionstjek", "version_check_implications": "Funktionen til versionstjek er afhÃĻngig af periodisk kommunikation med github.com", "version_check_settings": "Versionstjek", @@ -635,6 +652,7 @@ "backup_options_page_title": "Backupindstillinger", "backup_setting_subtitle": "Administrer indstillnger for upload i forgrund og baggrund", "backup_settings_subtitle": "HÃĨndtere upload indstillinger", + "backup_upload_details_page_more_details": "Tryk for flere detaljer", "backward": "BaglÃĻns", "biometric_auth_enabled": "Biometrisk adgangskontrol slÃĨet til", "biometric_locked_out": "Du er lÃĨst ude af biometrisk adgangskontrol", @@ -701,6 +719,7 @@ "check_corrupt_asset_backup_button": "Foretag kontrol", "check_corrupt_asset_backup_description": "Kør kun denne kontrol via Wi-Fi, og nÃĨr alle elementer er blevet sikkerhedskopieret. Proceduren kan tage et par minutter.", "check_logs": "Tjek logfiler", + "checksum": "Checksum", "choose_matching_people_to_merge": "VÃĻlg matchende personer til sammenfletning", "city": "By", "clear": "Ryd", @@ -723,6 +742,7 @@ "collapse_all": "Klap alle sammen", "color": "Farve", "color_theme": "Farvetema", + "command": "Kommando", "comment_deleted": "Kommentar slettet", "comment_options": "Kommentarindstillinger", "comments_and_likes": "Kommentarer og likes", @@ -971,6 +991,7 @@ "failed_to_unstack_assets": "Det lykkedes ikke at fjerne gruperingen af mediefiler", "failed_to_update_notification_status": "Kunne ikke uploade notifikations status", "incorrect_email_or_password": "Forkert email eller kodeord", + "library_folder_already_exists": "Denne import sti findes allerede.", "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.", "quota_higher_than_disk_size": "Du har sat en kvote der er større end disken", @@ -1055,6 +1076,7 @@ "unable_to_update_user": "Ikke i stand til at opdatere bruger", "unable_to_upload_file": "Filen kunne ikke uploades" }, + "exclusion_pattern": "Udelukkelsesmønster", "exif": "Exif", "exif_bottom_sheet_description": "Tilføj beskrivelse...", "exif_bottom_sheet_description_error": "Fejl ved opdatering af beskrivelsen", @@ -1085,6 +1107,7 @@ "external_network_sheet_info": "NÃĨ der er ikke er forbundet til det foretrukne Wi-Fi netvÃĻrk, vil appen forbinde til den første URL den kan forbinde til, pÃĨ listen nedenfor. Startende fra toppen", "face_unassigned": "Ikke tildelt", "failed": "Fejlet", + "failed_count": "Fejlede: {count}", "failed_to_authenticate": "Kunne ikke godkendes", "failed_to_load_assets": "Kunne ikke indlÃĻse mediefiler", "failed_to_load_folder": "Kunne ikke indlÃĻse mappe", @@ -1114,6 +1137,7 @@ "folders_feature_description": "Gennemse mappevisningen efter fotos og videoer pÃĨ filsystemet", "forgot_pin_code_question": "Har du glemt PIN-koden?", "forward": "Fremad", + "full_path": "Fuld sti: {path}", "gcast_enabled": "Google Cast", "gcast_enabled_description": "Denne funktion indlÃĻser eksterne ressourcer fra Google for at virke.", "general": "Generel", @@ -1144,12 +1168,14 @@ "header_settings_header_name_input": "Header navn", "header_settings_header_value_input": "Header vÃĻrdi", "headers_settings_tile_title": "Brugerdefineret proxy headers", + "height": "Højde", "hi_user": "Hej {name} ({email})", "hide_all_people": "Skjul alle personer", "hide_gallery": "Skjul galleri", "hide_named_person": "Skjul person {name}", "hide_password": "Skjul adgangskode", "hide_person": "Skjul person", + "hide_text_recognition": "Skjul tekstgenkendelse", "hide_unnamed_people": "Skjul unavngivne personer", "home_page_add_to_album_conflicts": "Tilføjede {added} elementer til album {album}. {failed} elementer er allerede i albummet.", "home_page_add_to_album_err_local": "Kan endnu ikke tilføje lokale elementer til album. Springer over", @@ -1243,6 +1269,8 @@ "let_others_respond": "Lad andre svare", "level": "Niveau", "library": "Bibliotek", + "library_add_folder": "Tilføj mappe", + "library_edit_folder": "Rediger mappe", "library_options": "Biblioteksindstillinger", "library_page_device_albums": "Albummer pÃĨ enhed", "library_page_new_album": "Nyt album", @@ -1263,6 +1291,7 @@ "local": "Lokal", "local_asset_cast_failed": "Kan ikke caste et aktiv, der ikke er uploadet til serveren", "local_assets": "Lokale objekter", + "local_id": "Lokal ID", "local_media_summary": "Opsummering af lokale media", "local_network": "Lokalt netvÃĻrk", "local_network_sheet_info": "Appen vil oprette forbindelse til serveren via denne URL, nÃĨr du bruger det angivne WiFi-netvÃĻrk", @@ -1441,6 +1470,7 @@ "no_favorites_message": "Tilføj favoritter for hurtigt at finde dine bedst billeder og videoer", "no_libraries_message": "Opret et eksternt bibliotek for at se dine billeder og videoer", "no_local_assets_found": "Ingen lokale objekter fundet med denne checksum", + "no_location_set": "Ingen placering sat", "no_locked_photos_message": "Billeder og videoer i den lÃĨste mappe er skjulte og vil ikke blive vist i dit bibliotek.", "no_name": "Intet navn", "no_notifications": "Ingen notifikationer", @@ -1500,6 +1530,7 @@ "other_variables": "Andre variable", "owned": "Egne", "owner": "Ejer", + "page": "Side", "partner": "Partnerpartner", "partner_can_access": "{partner} kan tilgÃĨ", "partner_can_access_assets": "Alle dine billeder og videoer, bortset fra dem i Arkivet og Slettet", @@ -1956,6 +1987,7 @@ "show_slideshow_transition": "Vis overgang til diasshow", "show_supporter_badge": "Supporter skilt", "show_supporter_badge_description": "Vis et supporter ikon", + "show_text_recognition": "Vis tekstgenkendelse", "show_text_search_menu": "Vis tekstsøgningsmenu", "shuffle": "Bland", "sidebar": "SidebjÃĻlke", @@ -2026,6 +2058,7 @@ "tags": "Tags", "tap_to_run_job": "Tryk for at køre jobbet", "template": "Skabelon", + "text_recognition": "Tekst genkendelse", "theme": "Tema", "theme_selection": "Temavalg", "theme_selection_description": "Indstil automatisk temaet til lyst eller mørkt baseret pÃĨ din browsers systemprÃĻference", @@ -2058,6 +2091,7 @@ "to_select": "for at vÃĻlge", "to_trash": "Papirkurv", "toggle_settings": "Skift indstillinger", + "toggle_theme_description": "Skift tema", "total": "Total", "total_usage": "Samlet forbrug", "trash": "Papirkurv", @@ -2166,6 +2200,7 @@ "view_album": "Se album", "view_all": "Se alle", "view_all_users": "Se alle brugere", + "view_asset_owners": "Se element ejere", "view_details": "Vis detaljer", "view_in_timeline": "Se pÃĨ tidslinjen", "view_link": "Vis Link", @@ -2182,10 +2217,12 @@ "viewer_unstack": "Fjern fra stak", "visibility_changed": "Synlighed ÃĻndret for {count, plural, one {# person} other {# personer}}", "waiting": "Venter", + "waiting_count": "Venter: {count}", "warning": "Advarsel", "week": "Uge", "welcome": "Velkommen", "welcome_to_immich": "Velkommen til Immich", + "width": "Bredde", "wifi_name": "Wi-Fi navn", "workflow": "Arbejdsproces", "wrong_pin_code": "Forkert PIN kode", diff --git a/i18n/de.json b/i18n/de.json index fc6270b138..94cfbba01f 100644 --- a/i18n/de.json +++ b/i18n/de.json @@ -7,6 +7,7 @@ "action_common_update": "Aktualisieren", "actions": "Aktionen", "active": "Aktiv", + "active_count": "Aktive:{count}", "activity": "Aktivität", "activity_changed": "Aktivität ist {enabled, select, true {aktiviert} other {deaktiviert}}", "add": "HinzufÃŧgen", @@ -31,6 +32,7 @@ "add_to_album_toggle": "Auswahl umschalten fÃŧr {album}", "add_to_albums": "Zu Alben hinzufÃŧgen", "add_to_albums_count": "Zu Alben hinzufÃŧgen ({count})", + "add_to_bottom_bar": "HinzufÃŧgen zu", "add_to_shared_album": "Zu geteiltem Album hinzufÃŧgen", "add_upload_to_stack": "Upload zum Stapel hinzufÃŧgen", "add_url": "URL hinzufÃŧgen", @@ -66,6 +68,7 @@ "confirm_reprocess_all_faces": "Bist du sicher, dass du alle Gesichter erneut verarbeiten mÃļchtest? Dies lÃļscht auch alle bereits benannten Personen.", "confirm_user_password_reset": "Bist du sicher, dass du das Passwort fÃŧr {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", "create_job": "Aufgabe erstellen", "cron_expression": "Cron-Zeitangabe", "cron_expression_description": "Setze das Scanintervall im Cron-Format. Hilfe mit dem Format bietet dir dabei z. B. der Crontab Guru", @@ -73,10 +76,11 @@ "disable_login": "Login deaktivieren", "duplicate_detection_job_description": "Diese Aufgabe fÃŧhrt das maschinelle Lernen fÃŧr jede Datei aus, um Duplikate zu finden. Diese Aufgabe beruht auf der intelligenten Suche", "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.", - "external_library_management": "Verwaltung externer Bibliotheken", - "face_detection": "Gesichtserkennung", - "face_detection_description": "Diese Aufgabe erkennt 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. Erkannte Gesichter werden zur Gruppierung in bestehende oder neue Personen in die Warteschlange gestellt.", - "facial_recognition_job_description": "Diese Aufgabe gruppiert im Anschluss an die Gesichtserkennung die erkannten Gesichter zu Personen. „ZurÃŧcksetzen“ gruppiert alle Gesichter neu, während „Fehlende“ Gesichter ohne Zuordnung in die Warteschlange stellt.", + "export_config_as_json_description": "Laden Sie die aktuelle Systemkonfiguration als JSON-Datei herunter", + "external_libraries_page_description": "Externe Bibliotheksseite fÃŧr Administratoren", + "face_detection": "Gesichtserfassung", + "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": "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} ist fÃŧr Aufgabe {job} fehlgeschlagen", "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", @@ -101,22 +105,28 @@ "image_thumbnail_description": "Kleine Miniaturansicht mit entfernten Metadaten, die bei der Anzeige von Sammlungen von Fotos wie der Zeitleiste verwendet wird", "image_thumbnail_quality_description": "Qualität der Miniaturansicht von 1-100. HÃļher ist besser, erzeugt aber grÃļßere Dateien und kann die Reaktionsfähigkeit der App beeinträchtigen.", "image_thumbnail_title": "Miniaturansicht-Einstellungen", + "import_config_from_json_description": "Importieren Sie die Systemkonfiguration, indem Sie eine JSON-Konfigurationsdatei hochladen", "job_concurrency": "{job} (Anzahl gleichzeitiger Prozesse)", "job_created": "Aufgabe erstellt", "job_not_concurrency_safe": "Diese Aufgabe ist nicht parallelisierungssicher.", "job_settings": "Aufgabeneinstellungen", "job_settings_description": "Die gleichzeitige AusfÃŧhrung von Aufgaben verwalten", - "job_status": "Aufgabenstatus", "jobs_delayed": "{jobCount, plural, other {# verzÃļgert}}", "jobs_failed": "{jobCount, plural, other {# fehlgeschlagen}}", + "jobs_over_time": "Jobs im Laufe der Zeit", "library_created": "Bibliothek erstellt: {library}", "library_deleted": "Bibliothek gelÃļscht", + "library_details": "Bibliotheksdetails", + "library_folder_description": "Spezifiziere einen Ordner zum Importieren. Dieser Ordner wird einschließlich aller Unterordner nach Bildern und Videos durchsucht.", + "library_remove_exclusion_pattern_prompt": "Bist du sicher, dass du dieses Ausschlussmuster entfernen mÃļchtest?", + "library_remove_folder_prompt": "Bist du sicher, dass du diesen Import-Ordner entfernen mÃļchtest?", "library_scanning": "Periodisches Scannen", "library_scanning_description": "Regelmäßiges Durchsuchen der Bibliothek einstellen", "library_scanning_enable_description": "Regelmäßiges Scannen der Bibliothek aktivieren", "library_settings": "Externe Bibliothek", "library_settings_description": "Einstellungen externer Bibliotheken verwalten", "library_tasks_description": "ÜberprÃŧfe externe Bibliotheken auf neue und/oder veränderte Medien", + "library_updated": "Aktualisierte Bibliothek", "library_watching_enable_description": "Überwache externe Bibliotheken auf Dateiänderungen", "library_watching_settings": "Überwache Bibliothek [EXPERIMENTELL]", "library_watching_settings_description": "Automatisch auf geänderte Dateien prÃŧfen", @@ -124,7 +134,7 @@ "logging_level_description": "Wenn aktiviert, welches Log-Level genutzt wird.", "logging_settings": "Protokollierung", "machine_learning_availability_checks": "VerfÃŧgbarkeitschecks", - "machine_learning_availability_checks_description": "Erkenne und bevorzuge verfÃŧgbare Machine Learning Servers", + "machine_learning_availability_checks_description": "Erkenne und bevorzuge verfÃŧgbare Machine Learning Server", "machine_learning_availability_checks_enabled": "VerfÃŧgbarkeitschecks einschalten", "machine_learning_availability_checks_interval": "ÜberprÃŧfungsinterval", "machine_learning_availability_checks_interval_description": "Interval in Millisekunden zwischen VerfÃŧgbarkeitschecks", @@ -138,18 +148,18 @@ "machine_learning_duplicate_detection_setting_description": "Verwendung von CLIP-Embeddings zum Erkennen mÃļglicher Duplikate", "machine_learning_enabled": "Maschinelles Lernen aktivieren", "machine_learning_enabled_description": "Wenn diese Option deaktiviert ist, werden alle ML-Funktionen unabhängig von den unten aufgefÃŧhrten Einstellungen deaktiviert.", - "machine_learning_facial_recognition": "Gesichtsidentifizierung", - "machine_learning_facial_recognition_description": "Erkenne, identifiziere und gruppiere Gesichter in Bildern", + "machine_learning_facial_recognition": "Gesichtserkennung", + "machine_learning_facial_recognition_description": "Erfasse, identifiziere und gruppiere Gesichter in Bildern", "machine_learning_facial_recognition_model": "Gesichtserkennungs-Modell", - "machine_learning_facial_recognition_model_description": "Die Modelle sind in absteigender Reihenfolge ihrer GrÃļße aufgefÃŧhrt. GrÃļßere Modelle sind langsamer und verbrauchen mehr Speicher, liefern aber bessere Ergebnisse. Bitte beachte dabei, dass du die Gesichtserkennungsaufgabe fÃŧr alle Bilder neu starten musst, wenn du ein Modell änderst.", + "machine_learning_facial_recognition_model_description": "Die Modelle sind in absteigender Reihenfolge ihrer GrÃļße aufgefÃŧhrt. GrÃļßere Modelle sind langsamer und verbrauchen mehr Speicher, liefern aber bessere Ergebnisse. Bitte beachte dabei, dass du die Gesichtserfassungsaufgabe fÃŧr alle Bilder neu starten musst, wenn du ein Modell änderst.", "machine_learning_facial_recognition_setting": "Gesichtserkennung aktivieren", "machine_learning_facial_recognition_setting_description": "Wenn diese Option deaktiviert ist, werden die Bilder nicht fÃŧr die Gesichtserkennung kodiert und der Abschnitt „Personen“ auf der Seite „Erkunden“ wird nicht dargestellt.", - "machine_learning_max_detection_distance": "Maximaler Erkennungsabstand", + "machine_learning_max_detection_distance": "Maximaler Erfassungsabstand", "machine_learning_max_detection_distance_description": "Maximaler Unterschied zwischen zwei Bildern, um sie als Duplikate zu betrachten, im Bereich von 0,001-0,1. Bei hÃļheren Werten werden mehr Duplikate erkannt, aber es kann zu falsch-positiven Ergebnissen kommen.", "machine_learning_max_recognition_distance": "Maximaler Erkennungsabstand", "machine_learning_max_recognition_distance_description": "Maximaler Abstand zwischen zwei Gesichtern, die als dieselbe Person angesehen werden, von 0-2. Ein niedrigerer Wert kann verhindern, dass zwei Personen als dieselbe Person eingestuft werden, während ein hÃļherer Wert verhindern kann, dass ein und dieselbe Person als zwei verschiedene Personen eingestuft wird. Bitte beachte dabei, dass es einfacher ist, zwei Personen zu verschmelzen, als eine Person in zwei zu teilen, also wähle nach MÃļglichkeit einen niedrigeren Schwellenwert.", - "machine_learning_min_detection_score": "Mindest-Erkennungs Wert", - "machine_learning_min_detection_score_description": "Minimale Konfidenzrate fÃŧr die Erkennung eines Gesichts von 0-1. Bei niedrigeren Werten werden mehr Gesichter erkannt, aber es kann zu falsch-positiven Ergebnissen kommen.", + "machine_learning_min_detection_score": "Mindest-Erfassungswert", + "machine_learning_min_detection_score_description": "Minimale Konfidenzrate fÃŧr die Erfassung eines Gesichts von 0-1. Bei niedrigeren Werten werden mehr Gesichter erfasst, aber es kann zu falsch-positiven Ergebnissen kommen.", "machine_learning_min_recognized_faces": "Mindestens erkannte Gesichter", "machine_learning_min_recognized_faces_description": "Die Mindestanzahl von erkannten Gesichtern, damit eine Person erstellt werden kann. Eine ErhÃļhung dieses Wertes macht die Gesichtserkennung präziser, erhÃļht aber die Wahrscheinlichkeit, dass ein Gesicht nicht zu einer Person zugeordnet wird.", "machine_learning_ocr": "OCR", @@ -158,7 +168,7 @@ "machine_learning_ocr_enabled_description": "Wenn deaktiviert, werden die Bilder nicht von der Texterkennung bearbeitet.", "machine_learning_ocr_max_resolution": "Maximale AuflÃļsung", "machine_learning_ocr_max_resolution_description": "Vorschauen Ãŧber dieser AuflÃļsung werden unter Beibehaltung des Seitenverhältnisses verkleinert. HÃļhere Werte sind genauer, benÃļtigen jedoch mehr Zeit fÃŧr die Verarbeitung und verbrauchen mehr Speicher.", - "machine_learning_ocr_min_detection_score": "Minimaler Erkennungswert", + "machine_learning_ocr_min_detection_score": "Mindest-Erfassungswert", "machine_learning_ocr_min_detection_score_description": "Minimale Konfidenzrate fÃŧr die Texterkennung von 0–1. Niedrigere Werte fÃŧhren dazu, dass mehr Text erkannt wird, kÃļnnen jedoch zu falsch-positiven Ergebnissen fÃŧhren.", "machine_learning_ocr_min_recognition_score": "Mindest-Erkennungswert", "machine_learning_ocr_min_score_recognition_description": "Minimale Konfidenzrate fÃŧr die Erkennung von erkanntem Text von 0–1. Niedrigere Werte fÃŧhren dazu, dass mehr Text erkannt wird, kÃļnnen jedoch zu falsch-positiven Ergebnissen fÃŧhren.", @@ -171,7 +181,12 @@ "machine_learning_smart_search_enabled": "Intelligente Suche aktivieren", "machine_learning_smart_search_enabled_description": "Ist diese Option deaktiviert, werden die Bilder nicht fÃŧr die intelligente Suche verwendet.", "machine_learning_url_description": "Die URL des Servers fÃŧr maschinelles Lernen. Wenn mehr als eine URL angegeben wird, wird jeder Server einzeln ausprobiert, bis einer erfolgreich antwortet, und zwar in der Reihenfolge vom ersten bis zum letzten. Server die nicht antworten werden temporär ignoriert, bis sie wieder verfÃŧgbar sind.", + "maintenance_settings": "Wartung", + "maintenance_settings_description": "Immich in den Wartungsmodus versetzen.", + "maintenance_start": "Wartungsmodus starten", + "maintenance_start_error": "Wartungsmodus konnte nicht gestartet werden.", "manage_concurrency": "Gleichzeitige AusfÃŧhrungen verwalten", + "manage_concurrency_description": "Navigieren Sie zur Job-Seite, um die Job-Parallelität zu verwalten", "manage_log_settings": "Log-Einstellungen verwalten", "map_dark_style": "Dunkler Stil", "map_enable_description": "Kartenfunktionen aktivieren", @@ -196,7 +211,7 @@ "metadata_settings_description": "Metadaten-Einstellungen verwalten", "migration_job": "Migration", "migration_job_description": "Diese Aufgabe migriert Miniaturansichten fÃŧr Dateien und Gesichter in die neueste Ordnerstruktur", - "nightly_tasks_cluster_faces_setting_description": "Gesichtsidentifikation auf neu erkannten Gesichtern ausfÃŧhren", + "nightly_tasks_cluster_faces_setting_description": "Gesichtsidentifizierung auf neu erfassten Gesichtern ausfÃŧhren", "nightly_tasks_cluster_new_faces_setting": "Neue Gesichter gruppieren", "nightly_tasks_database_cleanup_setting": "Datenbankbereinigungs-Aufgaben", "nightly_tasks_database_cleanup_setting_description": "Alte, abgelaufene Daten aus der Datenbank bereinigen", @@ -261,10 +276,14 @@ "password_settings_description": "Passwort-Anmeldeeinstellungen verwalten", "paths_validated_successfully": "Alle Pfade erfolgreich ÃŧberprÃŧft", "person_cleanup_job": "Personen aufräumen", + "queue_details": "Warteschlangendetails", + "queues": "Auftrags-Warteschlangen", + "queues_page_description": "Auftragswarteschlangen-Adminseite", "quota_size_gib": "Kontingent (GiB)", "refreshing_all_libraries": "Alle Bibliotheken aktualisieren", "registration": "Admin-Registrierung", "registration_description": "Da du der erste Benutzer im System bist, wird dir die Rolle des Administrators zugewiesen, womit du fÃŧr die Verwaltungsaufgaben verantwortlich bist. Weitere Benutzer werden von dir erstellt.", + "remove_failed_jobs": "Entferne fehlgeschlagene Aufgaben", "require_password_change_on_login": "Benutzer muss das Passwort beim ersten Login ändern", "reset_settings_to_default": "Einstellungen auf Standard zurÃŧcksetzen", "reset_settings_to_recent_saved": "Einstellungen auf die zuletzt gespeicherten Einstellungen zurÃŧcksetzen", @@ -277,8 +296,10 @@ "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_description": "Servereinstellungen verwalten", + "server_stats_page_description": "Server Statistikseite fÃŧr Administratoren", "server_welcome_message": "Willkommensnachricht", "server_welcome_message_description": "Eine Mitteilung, welche auf der Anmeldeseite angezeigt wird.", + "settings_page_description": "Seite mit den Admin-Einstellungen", "sidecar_job": "Sidecar Metadaten", "sidecar_job_description": "Durch diese Aufgabe werden Filialdatei-Metadaten im Dateisystem entdeckt oder synchronisiert", "slideshow_duration_description": "Dauer der Anzeige jedes Bildes in Sekunden", @@ -397,7 +418,8 @@ "user_restore_scheduled_removal": "Wiederherstellung des Benutzers - geplante Entfernung am {date, date, long}", "user_settings": "Benutzereinstellungen", "user_settings_description": "Benutzereinstellungen verwalten", - "user_successfully_removed": "Benutzer {email} wurde erfolgreich entfernt.", + "user_successfully_removed": "Der Benutzer {email} wurde erfolgreich entfernt.", + "users_page_description": "Administrator-Benutzerseite", "version_check_enabled_description": "VersionsprÃŧfung aktivieren", "version_check_implications": "Die Funktion zur VersionsprÃŧfung basiert auf regelmäßiger Kommunikation mit GitHub.com", "version_check_settings": "VersionsprÃŧfung", @@ -428,6 +450,7 @@ "age_months": "Alter {months, plural, one {# Monat} other {# Monate}}", "age_year_months": "Alter 1 Jahr, {months, plural, one {# Monat} other {# Monate}}", "age_years": "Alter {years, plural, one {# Jahr} other {# Jahre}}", + "album": "Album", "album_added": "Album hinzugefÃŧgt", "album_added_notification_setting_description": "Erhalte eine E-Mail-Benachrichtigung, wenn du zu einem freigegebenen Album hinzugefÃŧgt wurdest", "album_cover_updated": "Album-Cover aktualisiert", @@ -629,6 +652,7 @@ "backup_options_page_title": "Sicherungsoptionen", "backup_setting_subtitle": "Verwaltung der Upload-Einstellungen im Hintergrund und im Vordergrund", "backup_settings_subtitle": "Upload-Einstellungen verwalten", + "backup_upload_details_page_more_details": "Tippen fÃŧr weitere Details", "backward": "RÃŧckwärts", "biometric_auth_enabled": "Biometrische Authentifizierung aktiviert", "biometric_locked_out": "Du bist von der biometrischen Authentifizierung ausgeschlossen", @@ -695,6 +719,7 @@ "check_corrupt_asset_backup_button": "ÜberprÃŧfung durchfÃŧhren", "check_corrupt_asset_backup_description": "FÃŧhre diese PrÃŧfung nur mit aktivierten WLAN durch, nachdem alle Dateien gesichert worden sind. Dieser Vorgang kann ein paar Minuten dauern.", "check_logs": "Logs prÃŧfen", + "checksum": "PrÃŧfsumme", "choose_matching_people_to_merge": "Wähle passende Personen zum ZusammenfÃŧhren", "city": "Stadt", "clear": "Leeren", @@ -717,6 +742,7 @@ "collapse_all": "Alle zusammenklappen", "color": "Farbe", "color_theme": "Farb-Theme", + "command": "Befehl", "comment_deleted": "Kommentar gelÃļscht", "comment_options": "Kommentaroptionen", "comments_and_likes": "Kommentare & Likes", @@ -965,6 +991,7 @@ "failed_to_unstack_assets": "Dateien konnten nicht entstapelt werden", "failed_to_update_notification_status": "Benachrichtigungsstatus aktualisieren fehlgeschlagen", "incorrect_email_or_password": "UngÃŧltige E-Mail oder Passwort", + "library_folder_already_exists": "Dieser Importpfad existiert bereits.", "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.", "quota_higher_than_disk_size": "Dein festgelegtes Kontingent ist grÃļßer als der verfÃŧgbare Speicher", @@ -1049,6 +1076,7 @@ "unable_to_update_user": "Der Nutzer konnte nicht aktualisiert werden", "unable_to_upload_file": "Datei konnte nicht hochgeladen werden" }, + "exclusion_pattern": "Ausschlussmuster", "exif": "EXIF", "exif_bottom_sheet_description": "Beschreibung hinzufÃŧgen...", "exif_bottom_sheet_description_error": "Fehler bei der Aktualisierung der Beschreibung", @@ -1079,6 +1107,7 @@ "external_network_sheet_info": "Wenn sich die App nicht im bevorzugten WLAN-Netzwerk befindet, verbindet sie sich mit dem Server Ãŧber die erste der folgenden URLs, die sie erreichen kann (von oben nach unten)", "face_unassigned": "Nicht zugewiesen", "failed": "Fehlgeschlagen", + "failed_count": "Fehlgeschlagen: {count}", "failed_to_authenticate": "Authentifizierung fehlgeschlagen", "failed_to_load_assets": "Laden der Assets fehlgeschlagen", "failed_to_load_folder": "Fehler beim Laden des Ordners", @@ -1108,6 +1137,7 @@ "folders_feature_description": "Durchsuchen der Ordneransicht fÃŧr Fotos und Videos im Dateisystem", "forgot_pin_code_question": "PIN-Code vergessen?", "forward": "Vorwärts", + "full_path": "Vollständiger Pfad: {path}", "gcast_enabled": "Google Cast", "gcast_enabled_description": "Diese Funktion lädt externe Quellen von Google, um zu funktionieren.", "general": "Allgemein", @@ -1138,12 +1168,14 @@ "header_settings_header_name_input": "Header-Name", "header_settings_header_value_input": "Header-Wert", "headers_settings_tile_title": "Benutzerdefinierte Proxy-Header", + "height": "HÃļhe", "hi_user": "Hallo {name} ({email})", "hide_all_people": "Alle Personen verbergen", "hide_gallery": "Galerie verbergen", "hide_named_person": "Person {name} verbergen", "hide_password": "Passwort verbergen", "hide_person": "Person verbergen", + "hide_text_recognition": "Texterkennung verbergen", "hide_unnamed_people": "Unbenannte Personen verbergen", "home_page_add_to_album_conflicts": "{added} Elemente zu {album} hinzugefÃŧgt. {failed} Elemente sind bereits vorhanden.", "home_page_add_to_album_err_local": "Es kÃļnnen lokale Elemente noch nicht zu Alben hinzugefÃŧgt werden, Ãŧberspringen", @@ -1237,6 +1269,8 @@ "let_others_respond": "Antworten zulassen", "level": "Level", "library": "Bibliothek", + "library_add_folder": "Ordner hinzufÃŧgen", + "library_edit_folder": "Ordner bearbeiten", "library_options": "Bibliotheksoptionen", "library_page_device_albums": "Alben auf dem Gerät", "library_page_new_album": "Neues Album", @@ -1257,6 +1291,7 @@ "local": "Lokal", "local_asset_cast_failed": "Eine Datei, die nicht auf den Server hochgeladen wurde, kann nicht gecastet werden", "local_assets": "Lokale Dateien", + "local_id": "Lokale ID", "local_media_summary": "Zusammenfassung der lokalen Medien", "local_network": "Lokales Netzwerk", "local_network_sheet_info": "Die App stellt Ãŧber diese URL eine Verbindung zum Server her, wenn sie das angegebene WLAN-Netzwerk verwendet", @@ -1308,6 +1343,11 @@ "loop_videos_description": "Aktiviere diese Option, um eine automatische Videoschleife in der Detailansicht zu erstellen.", "main_branch_warning": "Du benutzt eine Entwicklungsversion. Wir empfehlen dringend, eine Release-Version zu verwenden!", "main_menu": "HauptmenÃŧ", + "maintenance_description": "Immich wurde in den Wartungsmodus versetzt.", + "maintenance_end": "Wartungsmodus beenden", + "maintenance_end_error": "Wartungsmodus konnte nicht beendet werden.", + "maintenance_logged_in_as": "Aktuell angemeldet als {user}", + "maintenance_title": "VorrÃŧbergehend nicht verfÃŧgbar", "make": "Marke", "manage_geolocation": "Standort verwalten", "manage_media_access_rationale": "Diese Berechtigung wird benÃļtigt, um Dateien ordnungsgemäß in den Papierkorb schieben und daraus wiederherstellen zu kÃļnnen.", @@ -1430,6 +1470,7 @@ "no_favorites_message": "FÃŧge Favoriten hinzu, um deine besten Bilder und Videos schnell zu finden", "no_libraries_message": "Eine externe Bibliothek erstellen, um deine Fotos und Videos anzusehen", "no_local_assets_found": "Keine lokale Datei mit dieser PrÃŧfsumme gefunden", + "no_location_set": "Kein Standort festgelegt", "no_locked_photos_message": "Fotos und Videos im gesperrten Ordner sind versteckt und werden nicht angezeigt, wenn du deine Bibliothek durchsuchst.", "no_name": "Kein Name", "no_notifications": "Keine Benachrichtigungen", @@ -1455,7 +1496,7 @@ "notifications": "Benachrichtigungen", "notifications_setting_description": "Benachrichtigungen verwalten", "oauth": "OAuth", - "obtainium_configurator": "Obtainium Konfiguratior", + "obtainium_configurator": "Obtainium Konfigurator", "obtainium_configurator_instructions": "Du kannst Obtainium benutzen, um die App direkt aus den Github Releases zu installieren oder zu aktualisieren. Bitte erstelle dazu einen API-SchlÃŧssel und wähle eine Variante aus um einen Obtainium-Konfigurationslink zu erstellen", "ocr": "OCR", "official_immich_resources": "Offizielle Immich Quellen", @@ -1489,6 +1530,7 @@ "other_variables": "Sonstige Variablen", "owned": "Eigenes", "owner": "Besitzer", + "page": "Seite", "partner": "Partner", "partner_can_access": "{partner} hat Zugriff", "partner_can_access_assets": "auf alle deine Fotos und Videos, außer die Archivierten und GelÃļschten", @@ -1820,6 +1862,8 @@ "server_offline": "Server offline", "server_online": "Server online", "server_privacy": "Privatsphäre auf dem Server", + "server_restarting_description": "Diese Seite wird jeden Moment neu geladen.", + "server_restarting_title": "Server wird neu gestartet", "server_stats": "Server-Statistiken", "server_update_available": "Server Update verfÃŧgbar", "server_version": "Server-Version", @@ -1943,6 +1987,7 @@ "show_slideshow_transition": "Slideshow-Übergang anzeigen", "show_supporter_badge": "UnterstÃŧtzerabzeichen", "show_supporter_badge_description": "Zeige UnterstÃŧtzerabzeichen", + "show_text_recognition": "Texterkennung anzeigen", "show_text_search_menu": "Zeige MenÃŧ fÃŧr Textsuche", "shuffle": "Durchmischen", "sidebar": "Seitenleiste", @@ -2013,6 +2058,7 @@ "tags": "Tags", "tap_to_run_job": "Tippen, um den Job zu starten", "template": "Vorlage", + "text_recognition": "Texterkennung", "theme": "Theme", "theme_selection": "Themenauswahl", "theme_selection_description": "Automatische Einstellung des Themes auf Hell oder Dunkel, je nach Systemeinstellung des Browsers", @@ -2045,6 +2091,7 @@ "to_select": "zum Auswählen", "to_trash": "In den Papierkorb verschieben", "toggle_settings": "Einstellungen umschalten", + "toggle_theme_description": "Design wechseln", "total": "Gesamt", "total_usage": "Gesamtnutzung", "trash": "Papierkorb", @@ -2153,6 +2200,7 @@ "view_album": "Album anzeigen", "view_all": "Alles anzeigen", "view_all_users": "Alle Nutzer anzeigen", + "view_asset_owners": "Dateibesitzer anzeigen", "view_details": "Details ansehen", "view_in_timeline": "In Zeitleiste anzeigen", "view_link": "Link anzeigen", @@ -2169,11 +2217,14 @@ "viewer_unstack": "Stapel aufheben", "visibility_changed": "Sichtbarkeit fÃŧr {count, plural, one {# Person} other {# Personen}} geändert", "waiting": "Wartend", + "waiting_count": "In Warteschlage: {count}", "warning": "Warnung", "week": "Woche", "welcome": "Willkommen", "welcome_to_immich": "Willkommen bei Immich", + "width": "Breite", "wifi_name": "WLAN-Name", + "workflow": "Workflow", "wrong_pin_code": "PIN-Code falsch", "year": "Jahr", "years_ago": "Vor {years, plural, one {einem Jahr} other {# Jahren}}", @@ -2181,5 +2232,5 @@ "you_dont_have_any_shared_links": "Du hast keine geteilten Links", "your_wifi_name": "Dein WLAN-Name", "zoom_image": "Bild vergrÃļßern", - "zoom_to_bounds": "In die Grenzen zoomen" + "zoom_to_bounds": "Auf Grenzen zoomen" } diff --git a/i18n/de_CH.json b/i18n/de_CH.json new file mode 100644 index 0000000000..de10aee010 --- /dev/null +++ b/i18n/de_CH.json @@ -0,0 +1,56 @@ +{ + "account": "Konto", + "account_settings": "Konto Istelligä", + "acknowledge": "Bestätige", + "action_common_update": "Update", + "active": "Aktiv", + "activity": "Aktivität", + "add": "HinzuefÃŧegä", + "add_a_description": "Beschriibig hinzuefÃŧege", + "add_a_location": "Standort hinzuefÃŧege", + "add_a_name": "Name hinzuefÃŧege", + "add_a_title": "Titel hinzuefÃŧege", + "add_birthday": "Geburtstag hinzuefÃŧege", + "add_location": "Standort hinzuefÃŧege", + "add_more_users": "Meh Benutzer hinzuefÃŧege", + "add_path": "Pfad hinzuefÃŧege", + "add_photos": "FÃļteli hinzuefÃŧege", + "add_to": "Zu ... hinzuefÃŧege", + "add_to_album": "Zum Album hinzuefÃŧege", + "add_to_album_bottom_sheet_some_local_assets": "Es hend es paar lokali Dateie nÃļd chÃļne im Album hinzuegfÃŧegt werde", + "add_to_albums": "Zu Albe hinzuefÃŧege", + "add_to_bottom_bar": "HinzuefÃŧege zu", + "add_to_shared_album": "Zum teilte Album hinzuefÃŧege", + "add_upload_to_stack": "Upload zum Stack hinzuefÃŧege", + "add_url": "URL hinzuefÃŧege", + "added_to_archive": "Is Archiv verschobe", + "added_to_favorites": "Zu dine Favoritä hinzuegfÃŧegt", + "admin": { + "add_exclusion_pattern_description": "FÃŧeg Usnahm-Patterne dezue. Globbing mit *, ** und ? wird unterstÃŧtzt. Wänn du alli Dateie i jedem Ordner mit em Name ÂĢRawÂģ ignoriere wetsch, nimm \"**/Raw/**\". FÃŧr alli Dateie, wo uf ÂĢ.tifÂģ änded, nimm \"**/*.tif.\" Wänn du en absolute Pfad ignoriere wetsch, nimm \"/path/to/ignore/**\".", + "admin_user": "Admin Benutzer", + "asset_offline_description": "S externi Bibliothek-Asset isch uf em Dateträger nÃŧmme gfunde worde und isch in Papierkorb verschobe worde. Falls d Datei innerhalb vo de Bibliothek verschobe worde isch, lueg i dinere Timeline nach em neu passende Asset. Zum s Asset wiederherstelle, stell bitte sicher, dass dä Pfad wo une aageh isch fÃŧr Immich zugänglich isch, und scan d Bibliothek bitte nomal.", + "authentication_settings": "Authentifizierigs Iistellige", + "authentication_settings_description": "Passwort, OAuth und anderi Authentifizierigseinstellige verwalte", + "authentication_settings_disable_all": "Bisch sicher, dass du alli Login-Methodä wotsch deaktivierä? S Login isch denn komplett deaktiviert.", + "authentication_settings_reenable": "Zum Wider-aktiviere bruuchsch en Server-Command.", + "background_task_job": "Hintergrund Ufgabä", + "backup_database": "Datenbank-Dump aalege", + "backup_database_enable_description": "Datenbank-Dumps aktiviere", + "backup_keep_last_amount": "Aazahl vo de vorherige Dumps, wo bhalte werde sÃļlle", + "backup_onboarding_1_description": "Offsite-Kopie i dä Cloud oder amene andere physische Standort.", + "backup_onboarding_2_description": "Lokali Kopie uf verschiedene Grät. Das beinhaltet d Hauptdateie und e lokali Sicherig vo dene Dateie.", + "backup_onboarding_3_description": "Total aazahl vo dine Dateikopie, inklusiv d Originaldateie. Das beinhaltet 1 Offsite-Kopie und 2 lokali Kopie.", + "backup_onboarding_description": "E 3-2-1-Backup-Strategie wird empfohle, zum dini Dateie z schÃŧtze. Du sÃļttsch sowohl Kopie vo dine ufgeladene Fotos/Videos wie au d Immich-Datenbank bhalte, fÃŧr e rundum sauberi Backup-LÃļsig.", + "backup_onboarding_footer": "FÃŧr meh Infos zum Backup vo Immich lueg bitte i d Dokumentation.", + "backup_onboarding_parts_title": "Es 3-2-1-Backup beinhaltet:", + "backup_onboarding_title": "Backups", + "backup_settings": "Iistellige fÃŧr Datenbank-Dumps", + "backup_settings_description": "Datenbank-Dump-Iistellige verwalte.", + "cleared_jobs": "Jobs glÃļscht fÃŧr: {job}", + "config_set_by_file": "D Konfiguration isch aktuell dur e Konfigurationsdatei gsetzt", + "confirm_delete_library": "Bisch sicher, dass du d Bibliothek {library} wotsch lÃļsche?", + "confirm_delete_library_assets": "Bisch sicher, dass du die Bibliothek wotsch lÃļsche? Das lÃļscht {count, plural, one {# enthaltenes Asset} other {alli # enthaltene Assets}} us Immich und chan nÃļd rÃŧckgängig gmacht werde. D Dateie bliibed uf em Dateträger.", + "confirm_email_below": "Zum bestätige bitte \"{email}\" une iitippe", + "confirm_reprocess_all_faces": "Bisch sicher, dass du alli Gsichter neu verarbeite wotsch? Däbii werde au benannti Persone glÃļscht." + } +} diff --git a/i18n/el.json b/i18n/el.json index ffe33c6d02..43a56916da 100644 --- a/i18n/el.json +++ b/i18n/el.json @@ -7,12 +7,13 @@ "action_common_update": "ΕÎŊΡÎŧÎ­ĪĪ‰ĪƒÎˇ", "actions": "ΕÎŊÎ­ĪÎŗÎĩΚÎĩĪ‚", "active": "ΕÎŊÎĩĪÎŗÎŦ", + "active_count": "ΕÎŊÎĩĪÎŗÎŦ: {count}", "activity": "Î”ĪÎąĪƒĪ„ÎˇĪÎšĪŒĪ„ÎˇĪ„Îą", "activity_changed": "Η Î´ĪÎąĪƒĪ„ÎˇĪÎšĪŒĪ„ÎˇĪ„Îą ÎĩίÎŊιΚ {enabled, select, true {ÎĩÎŊÎĩĪÎŗÎŋĪ€ÎŋΚΡÎŧέÎŊΡ} other {ÎąĪ€ÎĩÎŊÎĩĪÎŗÎŋĪ€ÎŋΚΡÎŧέÎŊΡ}}", "add": "Î ĪÎŋĪƒÎ¸ÎŽÎēΡ", "add_a_description": "Î ĪÎŋĪƒÎ¸ÎŽÎēΡ Ī€ÎĩĪÎšÎŗĪÎąĪ†ÎŽĪ‚", "add_a_location": "Î ĪÎŋĪƒÎ¸ÎŽÎēΡ Ī„ÎŋĪ€ÎŋθÎĩĪƒÎ¯ÎąĪ‚", - "add_a_name": "Î ĪÎŋĪƒÎ¸ÎŽÎēΡ ÎŋÎŊΌÎŧÎąĪ„ÎŋĪ‚", + "add_a_name": "Î ĪÎŋĪƒÎ¸ÎŽÎēΡ ÎĩÎŊĪŒĪ‚ ÎŋÎŊΌÎŧÎąĪ„ÎŋĪ‚", "add_a_title": "Î ĪÎŋĪƒÎ¸ÎŽÎēΡ Ī„Î¯Ī„ÎģÎŋĪ…", "add_birthday": "Î ĪÎŋĪƒÎ¸ÎŽÎēΡ ÎŗÎĩÎŊÎĩθÎģÎ¯Ī‰ÎŊ", "add_endpoint": "Î ĪÎŋĪƒÎ¸ÎŽÎēΡ Ī„ÎĩÎģΚÎēÎŋĪ ĪƒÎˇÎŧÎĩίÎŋĪ…", @@ -31,6 +32,7 @@ "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": "Î ĪÎŋĪƒÎ¸ÎŽÎēΡ ÎŖĪ…ÎŊÎ´Î­ĪƒÎŧÎŋĪ…", @@ -66,6 +68,7 @@ "confirm_reprocess_all_faces": "Î•Î¯ĪƒĪ„Îĩ βέβιΚÎŋΚ ĪŒĪ„Îš θέÎģÎĩĪ„Îĩ ÎŊÎą ÎĩĪ€ÎĩΞÎĩĪÎŗÎąĪƒĪ„ÎĩÎ¯Ī„Îĩ ΞιÎŊÎŦ ΌÎģÎą Ī„Îą Ī€ĪĪŒĪƒĪ‰Ī€Îą; Î‘Ī…Ī„ĪŒ θι ÎĩÎēÎēÎąÎ¸ÎąĪÎ¯ĪƒÎĩΚ ÎąÎēΌÎŧÎą ÎēιΚ Ī„Îą ÎŦĪ„ÎŋÎŧÎą ĪƒĪ„Îą ÎŋĪ€ÎŋÎ¯Îą Î­Ī‡ÎĩĪ„Îĩ ΎδΡ ÎŋĪÎ¯ĪƒÎĩΚ Ī„Îŋ ΌÎŊÎŋÎŧÎą.", "confirm_user_password_reset": "Î•Î¯ĪƒĪ„Îĩ βέβιΚÎŋΚ ĪŒĪ„Îš θέÎģÎĩĪ„Îĩ ÎŊÎą ÎĩĪ€ÎąÎŊÎąĪ†Î­ĪÎĩĪ„Îĩ Ī„ÎŋÎŊ ÎēĪ‰Î´ÎšÎēΌ Ī€ĪĪŒĪƒÎ˛ÎąĪƒÎˇĪ‚ Ī„ÎŋĪ… Ī‡ĪÎŽĪƒĪ„Îˇ {user};", "confirm_user_pin_code_reset": "Î•Î¯ĪƒĪ„Îĩ βέβιΚÎŋΚ ĪŒĪ„Îš θέÎģÎĩĪ„Îĩ ÎŊÎą ÎĩĪ€ÎąÎŊÎąĪ†Î­ĪÎĩĪ„Îĩ Ī„ÎŋÎŊ ÎēĪ‰Î´ÎšÎēΌ PIN Ī„ÎŋĪ… Ī‡ĪÎŽĪƒĪ„Îˇ {user};", + "copy_config_to_clipboard_description": "ΑÎŊĪ„Î­ÎŗĪÎąĪˆÎĩ Ī„ÎˇÎŊ Ī„ĪÎ­Ī‡ÎŋĪ…ĪƒÎą δΚιÎŧĪŒĪĪ†Ī‰ĪƒÎˇ ĪƒĪ…ĪƒĪ„ÎŽÎŧÎąĪ„ÎŋĪ‚ ĪƒĪ„Îŋ Ī€ĪĪŒĪ‡ÎĩÎšĪÎŋ, Ή΂ ÎąÎŊĪ„ÎšÎēÎĩίÎŧÎĩÎŊÎŋ JSON", "create_job": "ΔηÎŧΚÎŋĪ…ĪÎŗÎ¯Îą ÎĩĪÎŗÎąĪƒÎ¯ÎąĪ‚", "cron_expression": "ÎŖĪÎŊĪ„ÎąÎžÎˇ Cron", "cron_expression_description": "ÎŸĪÎ¯ĪƒĪ„Îĩ Ī„Îŋ δΚÎŦĪƒĪ„ÎˇÎŧÎą ΃ÎŦĪĪ‰ĪƒÎˇĪ‚ Ī‡ĪÎˇĪƒÎšÎŧÎŋĪ€ÎŋÎšĪŽÎŊĪ„ÎąĪ‚ Ī„Îˇ ÎŧÎŋĪĪ†ÎŽ cron. Για Ī€ÎĩĪÎšĪƒĪƒĪŒĪ„Îĩ΁ÎĩĪ‚ Ī€ÎģÎˇĪÎŋΆÎŋĪÎ¯ÎĩĪ‚, ÎąÎŊÎąĪ„ĪÎ­ÎžĪ„Îĩ Ī€.·. ĪƒĪ„Îŋ Crontab Guru", @@ -73,7 +76,8 @@ "disable_login": "Î‘Ī€ÎĩÎŊÎĩĪÎŗÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇ ĪƒĪÎŊδÎĩĪƒÎˇĪ‚", "duplicate_detection_job_description": "ΕÎēĪ„ÎĩÎģÎ­ĪƒĪ„Îĩ ÎŧÎˇĪ‡ÎąÎŊΚÎēÎŽ ÎŧÎŦÎ¸ÎˇĪƒÎˇ ΃Îĩ ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Îą ÎŗÎšÎą ÎŊÎą ÎĩÎŊĪ„ÎŋĪ€Î¯ĪƒÎĩĪ„Îĩ Ī€ÎąĪĪŒÎŧÎŋΚÎĩĪ‚ ÎĩΚÎēΌÎŊÎĩĪ‚. Î’ÎąĪƒÎ¯ÎļÎĩĪ„ÎąÎš ĪƒĪ„ÎˇÎŊ ÎˆÎžĪ…Ī€ÎŊΡ ΑÎŊÎąÎļÎŽĪ„ÎˇĪƒÎˇ", "exclusion_pattern_description": "Τι ÎŧÎŋĪ„Î¯Î˛Îą ÎąĪ€ÎŋÎēÎģÎĩÎšĪƒÎŧÎŋĪ ĪƒÎąĪ‚ ÎĩĪ€ÎšĪ„ĪÎ­Ī€ÎŋĪ…ÎŊ ÎŊÎą ÎąÎŗÎŊÎŋÎĩÎ¯Ī„ÎąÎš ÎąĪĪ‡ÎĩÎ¯Îą ÎēιΚ Ī†ÎąÎēέÎģÎŋĪ…Ī‚ ÎēÎąĪ„ÎŦ Ī„Îˇ ΃ÎŦĪĪ‰ĪƒÎˇ Ī„ÎˇĪ‚ βΚβÎģΚÎŋθΎÎēÎˇĪ‚ ĪƒÎąĪ‚. Î‘Ī…Ī„ĪŒ ÎĩίÎŊιΚ Ī‡ĪÎŽĪƒÎšÎŧÎŋ ÎĩÎŦÎŊ Îĩ·ÎĩĪ„Îĩ Ī†ÎąÎēέÎģÎŋĪ…Ī‚ Ī€ÎŋĪ… Ī€ÎĩĪÎšÎ­Ī‡ÎŋĪ…ÎŊ ÎąĪĪ‡ÎĩÎ¯Îą Ī€ÎŋĪ… δÎĩÎŊ θέÎģÎĩĪ„Îĩ ÎŊÎą ÎĩÎšĪƒÎŦÎŗÎĩĪ„Îĩ, ĪŒĪ€Ī‰Ī‚ ÎąĪĪ‡ÎĩÎ¯Îą RAW.", - "external_library_management": "Î”ÎšÎąĪ‡ÎĩÎ¯ĪÎšĪƒÎˇ Î•ÎžĪ‰Ī„ÎĩĪÎšÎēĪŽÎŊ ΒιβÎģΚÎŋθΡÎēĪŽÎŊ", + "export_config_as_json_description": "ÎšÎąĪ„Î­Î˛ÎąĪƒÎĩ Ī„ÎˇÎŊ Ī„ĪÎ­Ī‡ÎŋĪ…ĪƒÎą δΚιÎŧĪŒĪĪ†Ī‰ĪƒÎˇ ĪƒĪ…ĪƒĪ„ÎŽÎŧÎąĪ„ÎŋĪ‚ Ή΂ ÎąĪĪ‡ÎĩίÎŋ JSON", + "external_libraries_page_description": "ÎŖÎĩÎģÎ¯Î´Îą ÎĩÎžĪ‰Ī„ÎĩĪÎšÎēÎŽĪ‚ βΚβÎģΚÎŋθΎÎēÎˇĪ‚ Î´ÎšÎąĪ‡ÎĩÎšĪÎšĪƒĪ„ÎŽ", "face_detection": "ΑÎŊÎ¯Ī‡ÎŊÎĩĪ…ĪƒÎˇ ΀΁ÎŋĪƒĪŽĪ€ÎŋĪ…", "face_detection_description": "ΑÎŊÎšĪ‡ÎŊÎĩĪĪƒĪ„Îĩ Ī„Îą Ī€ĪĪŒĪƒĪ‰Ī€Îą ΃Îĩ ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Îą Ī‡ĪÎˇĪƒÎšÎŧÎŋĪ€ÎŋÎšĪŽÎŊĪ„ÎąĪ‚ ÎŧÎˇĪ‡ÎąÎŊΚÎēÎŽ ÎŧÎŦÎ¸ÎˇĪƒÎˇ. Για Î˛Î¯ÎŊĪ„ÎĩÎŋ, ÎģÎąÎŧβÎŦÎŊÎĩĪ„ÎąÎš Ī…Ī€ĪŒĪˆÎˇ ÎŧΌÎŊÎŋ Ρ ÎŧΚÎē΁ÎŋÎŗĪÎąĪ†Î¯Îą. Η ÎĩĪ€ÎšÎģÎŋÎŗÎŽ \"ΑÎŊÎąÎŊÎ­Ī‰ĪƒÎˇ\" ÎĩĪ€ÎĩΞÎĩĪÎŗÎŦÎļÎĩĪ„ÎąÎš ÎĩÎē ÎŊέÎŋĪ… ΌÎģÎą Ī„Îą ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Îą. Η ÎĩĪ€ÎšÎģÎŋÎŗÎŽ \"Î•Ī€ÎąÎŊÎąĪ†Îŋ΁ÎŦ\", ÎĩĪ€ÎšĪ€ÎģέÎŋÎŊ ÎĩÎēÎēÎąÎ¸ÎąĪÎ¯ÎļÎĩΚ ΌÎģÎą Ī„Îą δÎĩδÎŋÎŧέÎŊÎą ΀΁ÎŋĪƒĪŽĪ€ÎŋĪ…. Η ÎĩĪ€ÎšÎģÎŋÎŗÎŽ \"ΕÎģÎģÎĩÎ¯Ī€ÎŋÎŊĪ„Îą\" ΀΁ÎŋĪƒÎ¸Î­Ī„ÎĩΚ ĪƒĪ„ÎˇÎŊ Îŋ΅΁ÎŦ ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Îą Ī€ÎŋĪ… δÎĩÎŊ Î­Ī‡ÎŋĪ…ÎŊ Ī…Ī€ÎŋĪƒĪ„Îĩί ÎąÎēΌÎŧΡ ÎĩĪ€ÎĩΞÎĩĪÎŗÎąĪƒÎ¯Îą. Τι Ī€ĪĪŒĪƒĪ‰Ī€Îą Ī€ÎŋĪ… Î­Ī‡ÎŋĪ…ÎŊ ÎĩÎŊĪ„ÎŋĪ€ÎšĪƒĪ„Îĩί θι ÎŧĪ€ÎŋĪ…ÎŊ ĪƒĪ„ÎˇÎŊ Îŋ΅΁ÎŦ ÎŗÎšÎą Ī„ÎˇÎŊ ΑÎŊÎąÎŗÎŊĪŽĪÎšĪƒÎˇ Î ĪÎŋĪƒĪŽĪ€ÎŋĪ… ÎŧÎĩĪ„ÎŦ Ī„ÎˇÎŊ ÎŋÎģÎŋÎēÎģÎŽĪĪ‰ĪƒÎˇ Ī„ÎˇĪ‚ ΑÎŊÎ¯Ī‡ÎŊÎĩĪ…ĪƒÎˇĪ‚ Î ĪÎŋĪƒĪŽĪ€ÎŋĪ…, ÎŋÎŧιδÎŋĪ€ÎŋÎšĪŽÎŊĪ„ÎąĪ‚ Ī„Îą ΃Îĩ Ī…Ī€ÎŦ΁·ÎŋÎŊĪ„Îą ÎŽ ÎŊέι ÎŦĪ„ÎŋÎŧÎą.", "facial_recognition_job_description": "ΟÎŧιδÎŋĪ€ÎŋÎšÎŽĪƒĪ„Îĩ ÎąÎŊÎšĪ‡ÎŊÎĩĪ…ÎŧέÎŊÎą Ī€ĪĪŒĪƒĪ‰Ī€Îą ΃Îĩ ÎŦĪ„ÎŋÎŧÎą. Î‘Ī…Ī„ĪŒ Ī„Îŋ βΎÎŧÎą ÎĩÎēĪ„ÎĩÎģÎĩÎ¯Ī„ÎąÎš ÎąĪ†ÎŋĪ ÎŋÎģÎŋÎēÎģÎˇĪĪ‰Î¸Îĩί Ρ ΑÎŊÎ¯Ī‡ÎŊÎĩĪ…ĪƒÎˇ Î ĪÎŋĪƒĪŽĪ€ÎŋĪ…. Η ÎĩĪ€ÎšÎģÎŋÎŗÎŽ \"Î•Ī€ÎąÎŊÎąĪ†Îŋ΁ÎŦ\" ÎŋÎŧιδÎŋĪ€ÎŋΚÎĩί ÎĩÎē ÎŊέÎŋĪ… ΌÎģÎą Ī„Îą Ī€ĪĪŒĪƒĪ‰Ī€Îą. Η ÎĩĪ€ÎšÎģÎŋÎŗÎŽ \"ΕÎģÎģÎĩÎ¯Ī€ÎŋÎŊĪ„Îą\" βÎŦÎļÎĩΚ ĪƒĪ„ÎˇÎŊ Îŋ΅΁ÎŦ ÎŗÎšÎą ÎŋÎŧιδÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇ Ī€ĪĪŒĪƒĪ‰Ī€Îą Ī€ÎŋĪ… δÎĩÎŊ Î­Ī‡ÎŋĪ…ÎŊ ÎąÎŊĪ„ÎšĪƒĪ„ÎŋÎšĪ‡ÎˇÎ¸Îĩί ΃Îĩ ÎēÎŦĪ€ÎŋΚÎŋ ÎŦĪ„ÎŋÎŧÎŋ.", @@ -101,24 +105,30 @@ "image_thumbnail_description": "ΜιÎē΁ÎŋÎŗĪÎąĪ†Î¯Îą ÎĩΚÎēΌÎŊÎąĪ‚ Ī‡Ī‰ĪÎ¯Ī‚ ÎŧÎĩĪ„ÎąÎ´ÎĩδÎŋÎŧέÎŊÎą, Ī€ÎŋĪ… Ī‡ĪÎˇĪƒÎšÎŧÎŋĪ€ÎŋΚÎĩÎ¯Ī„ÎąÎš ĪŒĪ„ÎąÎŊ ΀΁ÎŋβÎŦÎģÎģÎŋÎŊĪ„ÎąÎš ÎŋÎŧÎŦδÎĩĪ‚ ΆΉ΄ÎŋÎŗĪÎąĪ†ÎšĪŽÎŊ ĪŒĪ€Ī‰Ī‚ Ī„Îŋ ÎēĪĪÎšÎŋ ·΁ÎŋÎŊÎŋÎģĪŒÎŗÎšÎŋ", "image_thumbnail_quality_description": "ΠÎŋÎšĪŒĪ„ÎˇĪ„Îą ÎŧΚÎē΁ÎŋÎŗĪÎąĪ†Î¯ÎąĪ‚ ÎąĪ€ĪŒ 1 Î­Ī‰Ī‚ 100. ÎĨĪˆÎˇÎģĪŒĪ„Îĩ΁ÎĩĪ‚ Ī„ÎšÎŧÎ­Ī‚ ÎĩίÎŊιΚ ÎēÎąÎģĪĪ„Îĩ΁ÎĩĪ‚, ÎąÎģÎģÎŦ Ī€ÎąĪÎŦÎŗÎŋĪ…ÎŊ ÎŧÎĩÎŗÎąÎģĪĪ„ÎĩĪÎą ÎąĪĪ‡ÎĩÎ¯Îą Ī€ÎŋĪ… ÎŧĪ€Îŋ΁Îĩί ÎŊÎą ÎŧÎĩÎšĪŽĪƒÎŋĪ…ÎŊ Ī„ÎˇÎŊ Ī„ÎąĪ‡ĪĪ„ÎˇĪ„Îą ÎąĪ€ĪŒÎēĪÎšĪƒÎˇĪ‚ Ī„ÎˇĪ‚ ÎĩĪ†ÎąĪÎŧÎŋÎŗÎŽĪ‚.", "image_thumbnail_title": "ÎĄĪ…Î¸ÎŧÎ¯ĪƒÎĩÎšĪ‚ ΜιÎē΁ÎŋÎŗĪÎąĪ†Î¯ÎąĪ‚", + "import_config_from_json_description": "Î•ÎšĪƒÎąÎŗĪ‰ÎŗÎŽ δΚιÎŧĪŒĪĪ†Ī‰ĪƒÎˇĪ‚ ĪƒĪ…ĪƒĪ„ÎŽÎŧÎąĪ„ÎŋĪ‚ ÎŧÎĩ ÎąÎŊÎ­Î˛ÎąĪƒÎŧÎą ÎąĪĪ‡ÎĩίÎŋĪ… δΚιÎŧĪŒĪĪ†Ī‰ĪƒÎˇĪ‚ JSON", "job_concurrency": "Î¤ÎąĪ…Ī„ĪŒĪ‡ĪÎŋÎŊΡ ÎĩÎēĪ„Î­ÎģÎĩĪƒÎˇ {job}", "job_created": "Î•ĪÎŗÎąĪƒÎ¯Îą δΡÎŧΚÎŋĪ…ĪÎŗÎŽÎ¸ÎˇÎēÎĩ", "job_not_concurrency_safe": "Î‘Ī…Ī„ÎŽ Ρ ÎĩĪÎŗÎąĪƒÎ¯Îą δÎĩÎŊ ÎĩίÎŊιΚ ÎąĪƒĪ†ÎąÎģÎŽĪ‚ ÎŗÎšÎą Ī„ÎąĪ…Ī„ĪŒĪ‡ĪÎŋÎŊΡ ÎĩÎēĪ„Î­ÎģÎĩĪƒÎˇ.", "job_settings": "ÎĄĪ…Î¸ÎŧÎ¯ĪƒÎĩÎšĪ‚ Î•ĪÎŗÎąĪƒÎ¯ÎąĪ‚", "job_settings_description": "Î”ÎšÎąĪ‡ÎĩÎ¯ĪÎšĪƒÎˇ Ī„ÎąĪ…Ī„ĪŒĪ‡ĪÎŋÎŊÎˇĪ‚ ÎĩÎēĪ„Î­ÎģÎĩĪƒÎˇĪ‚ ÎĩĪÎŗÎąĪƒÎ¯ÎąĪ‚", - "job_status": "ÎšÎąĪ„ÎŦĪƒĪ„ÎąĪƒÎˇ Î•ĪÎŗÎąĪƒÎ¯ÎąĪ‚", "jobs_delayed": "{jobCount, plural, one {# ÎēÎąÎ¸Ī…ĪƒĪ„Î­ĪÎˇĪƒÎĩ} other {# ÎēÎąÎ¸Ī…ĪƒĪ„Î­ĪÎˇĪƒÎąÎŊ}}", "jobs_failed": "{jobCount, plural, one {# ÎąĪ€Î­Ī„Ī…Ī‡Îĩ} other {# ÎąĪ€Î­Ī„Ī…Ī‡ÎąÎŊ}}", + "jobs_over_time": "Î•ĪÎŗÎąĪƒÎ¯ÎĩĪ‚ ÎŧÎĩ Ī„ÎˇÎŊ Ī€ÎŦ΁ÎŋδÎŋ Ī„ÎŋĪ… Ī‡ĪĪŒÎŊÎŋĪ…", "library_created": "ΔηÎŧΚÎŋĪ…ĪÎŗÎŽÎ¸ÎˇÎēÎĩ Ρ βΚβÎģΚÎŋθΎÎēΡ: {library}", "library_deleted": "Η βΚβÎģΚÎŋθΎÎēΡ Î´ÎšÎąÎŗĪÎŦĪ†ÎˇÎēÎĩ", + "library_details": "ΛÎĩ΀΄ÎŋÎŧÎ­ĪÎĩΚÎĩĪ‚ βΚβÎģΚÎŋθΎÎēÎˇĪ‚", + "library_folder_description": "ÎšÎąÎ¸ĪŒĪÎšĪƒÎĩ έÎŊÎąÎŊ ΆÎŦÎēÎĩÎģÎŋ ÎŗÎšÎą ÎĩÎšĪƒÎąÎŗĪ‰ÎŗÎŽ. Ο ΆÎŦÎēÎĩÎģÎŋĪ‚ ÎąĪ…Ī„ĪŒĪ‚, ÎŧÎąÎļί ÎŧÎĩ Ī„ÎŋĪ…Ī‚ Ī…Ī€ÎŋĪ†ÎąÎēέÎģÎŋĪ…Ī‚ Ī„ÎŋĪ…, θι ĪƒÎąĪĪ‰Î¸Îĩί ÎŗÎšÎą ÎĩΚÎēΌÎŊÎĩĪ‚ ÎēιΚ Î˛Î¯ÎŊĪ„ÎĩÎŋ.", + "library_remove_exclusion_pattern_prompt": "Î•Î¯ĪƒÎąÎš ĪƒÎ¯ÎŗÎŋ΅΁ÎŋĪ‚ ĪŒĪ„Îš θέÎģÎĩÎšĪ‚ ÎŊÎą ÎąĪ†ÎąÎšĪÎ­ĪƒÎĩÎšĪ‚ ÎąĪ…Ī„ĪŒ Ī„Îŋ ÎŧÎŋĪ„Î¯Î˛Îŋ ÎĩÎžÎąÎ¯ĪÎĩĪƒÎˇĪ‚;", + "library_remove_folder_prompt": "Î•Î¯ĪƒÎąÎš ĪƒÎ¯ÎŗÎŋ΅΁ÎŋĪ‚ ĪŒĪ„Îš θέÎģÎĩÎšĪ‚ ÎŊÎą ÎąĪ†ÎąÎšĪÎ­ĪƒÎĩÎšĪ‚ ÎąĪ…Ī„ĪŒÎŊ Ī„ÎŋÎŊ ΆÎŦÎēÎĩÎģÎŋ ÎĩÎšĪƒÎąÎŗĪ‰ÎŗÎŽĪ‚;", "library_scanning": "ΠÎĩĪÎšÎŋδΚÎēÎŽ ÎŖÎŦĪĪ‰ĪƒÎˇ", "library_scanning_description": "ÎĄĪÎ¸ÎŧÎšĪƒÎˇ Ī€ÎĩĪÎšÎŋδΚÎēÎŽĪ‚ ΃ÎŦĪĪ‰ĪƒÎˇĪ‚ βΚβÎģΚÎŋθΎÎēÎˇĪ‚", "library_scanning_enable_description": "ΕÎŊÎĩĪÎŗÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇ Ī€ÎĩĪÎšÎŋδΚÎēÎŽĪ‚ ΃ÎŦĪĪ‰ĪƒÎˇĪ‚ βΚβÎģΚÎŋθΎÎēÎˇĪ‚", "library_settings": "Î•ÎžĪ‰Ī„ÎĩĪÎšÎēÎŽ ΒιβÎģΚÎŋθΎÎēΡ", "library_settings_description": "Î”ÎšÎąĪ‡ÎĩÎ¯ĪÎšĪƒÎˇ ĪĪ…Î¸ÎŧÎ¯ĪƒÎĩΉÎŊ ÎĩÎžĪ‰Ī„ÎĩĪÎšÎēÎŽĪ‚ βΚβÎģΚÎŋθΎÎēÎˇĪ‚", "library_tasks_description": "ÎŖÎŦĪĪ‰ĪƒÎˇ ÎĩÎžĪ‰Ī„ÎĩĪÎšÎēĪŽÎŊ βΚβÎģΚÎŋθΡÎēĪŽÎŊ ÎŗÎšÎą ÎŊέι ÎŽ/ÎēιΚ ÎąÎģÎģÎąÎŗÎŧέÎŊÎą ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Îą", + "library_updated": "ΕÎŊΡÎŧÎĩ΁ΉÎŧέÎŊΡ βΚβÎģΚÎŋθΎÎēΡ", "library_watching_enable_description": "Î ÎąĪÎąÎēÎŋÎģÎŋĪÎ¸ÎˇĪƒÎˇ ÎĩÎžĪ‰Ī„ÎĩĪÎšÎēĪŽÎŊ βΚβÎģΚÎŋθΡÎēĪŽÎŊ ÎŗÎšÎą ΄΁ÎŋĪ€ÎŋĪ€ÎŋÎšÎŽĪƒÎĩÎšĪ‚ ÎąĪĪ‡ÎĩÎ¯Ī‰ÎŊ", - "library_watching_settings": "Î ÎąĪÎąÎēÎŋÎģÎŋĪÎ¸ÎˇĪƒÎˇ βΚβÎģΚÎŋθΎÎēÎˇĪ‚ (ΠΕΙΡΑΜΑΤΙΚΟ)", + "library_watching_settings": "Î ÎąĪÎąÎēÎŋÎģÎŋĪÎ¸ÎˇĪƒÎˇ βΚβÎģΚÎŋθΎÎēÎˇĪ‚ [ΠΕΙΡΑΜΑΤΙΚΟ]", "library_watching_settings_description": "Î‘Ī…Ī„ĪŒÎŧÎąĪ„Îˇ Ī€ÎąĪÎąÎēÎŋÎģÎŋĪÎ¸ÎˇĪƒÎˇ ÎŗÎšÎą ΄΁ÎŋĪ€ÎŋĪ€ÎŋΚΡÎŧέÎŊÎą ÎąĪĪ‡ÎĩÎ¯Îą", "logging_enable_description": "ΕÎŊÎĩĪÎŗÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇ ÎēÎąĪ„ÎąÎŗĪÎąĪ†ÎŽĪ‚ ĪƒĪ…ÎŧβÎŦÎŊ΄ΉÎŊ", "logging_level_description": "ΤÎŋ ÎĩĪ€Î¯Ī€ÎĩδÎŋ ÎēÎąĪ„ÎąÎŗĪÎąĪ†ÎŽĪ‚ ĪƒĪ…ÎŧβÎŦÎŊ΄ΉÎŊ Ī€ÎŋĪ… θι ÎĩĪ†ÎąĪÎŧÎŋĪƒĪ„Îĩί, ĪŒĪ„ÎąÎŊ ÎąĪ…Ī„ÎŽ ÎĩίÎŊιΚ ÎĩÎŊÎĩĪÎŗÎŋĪ€ÎŋΚΡÎŧέÎŊΡ.", @@ -152,6 +162,18 @@ "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_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": "ÎĄĪ…Î¸ÎŧÎ¯ĪƒÎĩÎšĪ‚ ÎœÎˇĪ‡ÎąÎŊΚÎēÎŽĪ‚ ΜÎŦÎ¸ÎˇĪƒÎˇĪ‚", "machine_learning_settings_description": "Î”ÎšÎąĪ‡ÎĩÎšĪÎšĪƒĪ„ÎĩÎ¯Ī„Îĩ Ī„ÎšĪ‚ ÎģÎĩÎšĪ„ÎŋĪ…ĪÎŗÎ¯ÎĩĪ‚ ÎēιΚ Ī„ÎšĪ‚ ĪĪ…Î¸ÎŧÎ¯ĪƒÎĩÎšĪ‚ ÎŧÎˇĪ‡ÎąÎŊΚÎēÎŽĪ‚ ÎŧÎŦÎ¸ÎˇĪƒÎˇĪ‚", "machine_learning_smart_search": "ÎˆÎžĪ…Ī€ÎŊΡ ΑÎŊÎąÎļÎŽĪ„ÎˇĪƒÎˇ", @@ -159,7 +181,12 @@ "machine_learning_smart_search_enabled": "ΕÎŊÎĩĪÎŗÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇ Î­ÎžĪ…Ī€ÎŊÎˇĪ‚ ÎąÎŊÎąÎļÎŽĪ„ÎˇĪƒÎˇĪ‚", "machine_learning_smart_search_enabled_description": "ΑÎŊ ÎąĪ€ÎĩÎŊÎĩĪÎŗÎŋĪ€ÎŋΚΡθÎĩί, ÎŋΚ ÎĩΚÎēΌÎŊÎĩĪ‚ δÎĩÎŊ θι ÎēĪ‰Î´ÎšÎēÎŋĪ€ÎŋΚÎŋĪÎŊĪ„ÎąÎš ÎŗÎšÎą Î­ÎžĪ…Ī€ÎŊΡ ÎąÎŊÎąÎļÎŽĪ„ÎˇĪƒÎˇ.", "machine_learning_url_description": "Η δΚÎĩĪÎ¸Ī…ÎŊĪƒÎˇ URL Ī„ÎŋĪ… δΚιÎēÎŋÎŧÎšĪƒĪ„ÎŽ ÎŧÎˇĪ‡ÎąÎŊΚÎēÎŽĪ‚ ÎŧÎŦÎ¸ÎˇĪƒÎˇĪ‚. ΑÎŊ δÎŋθÎŋĪÎŊ Ī€ÎĩĪÎšĪƒĪƒĪŒĪ„Îĩ΁ÎĩĪ‚ ÎąĪ€ĪŒ ÎŧÎ¯Îą δΚÎĩĪ…Î¸ĪÎŊ΃ÎĩÎšĪ‚ URL, ÎēÎŦθÎĩ δΚιÎēÎŋÎŧÎšĪƒĪ„ÎŽĪ‚ θι δÎŋÎēΚÎŧÎŦÎļÎĩĪ„ÎąÎš δΚιδÎŋĪ‡ÎšÎēÎŦ ÎŧÎ­Ī‡ĪÎš ÎŊÎą ÎąÎŊĪ„ÎąĪ€ÎŋÎēĪÎšÎ¸Îĩί έÎŊÎąĪ‚ ÎŧÎĩ ÎĩĪ€ÎšĪ„Ī…Ī‡Î¯Îą, ÎŧÎĩ Ī„Îˇ ΃ÎĩÎšĪÎŦ ÎąĪ€ĪŒ Ī„ÎˇÎŊ Ī€ĪĪŽĪ„Îˇ Î­Ī‰Ī‚ Ī„ÎˇÎŊ Ī„ÎĩÎģÎĩĪ…Ī„ÎąÎ¯Îą. Οι δΚιÎēÎŋÎŧÎšĪƒĪ„Î­Ī‚ Ī€ÎŋĪ… δÎĩÎŊ ÎąÎŊĪ„ÎąĪ€ÎŋÎēĪÎ¯ÎŊÎŋÎŊĪ„ÎąÎš θι ÎąÎŗÎŊÎŋÎŋĪÎŊĪ„ÎąÎš ΀΁ÎŋĪƒĪ‰ĪÎšÎŊÎŦ ÎŧÎ­Ī‡ĪÎš ÎŊÎą ÎĩĪ€ÎąÎŊέÎģθÎŋĪ…ÎŊ ΃Îĩ ÎģÎĩÎšĪ„ÎŋĪ…ĪÎŗÎ¯Îą.", + "maintenance_settings": "ÎŖĪ…ÎŊĪ„ÎŽĪÎˇĪƒÎˇ", + "maintenance_settings_description": "Î˜Î­ĪƒĪ„Îĩ Ī„Îŋ Immich ΃Îĩ ÎģÎĩÎšĪ„ÎŋĪ…ĪÎŗÎ¯Îą ĪƒĪ…ÎŊĪ„ÎŽĪÎˇĪƒÎˇĪ‚.", + "maintenance_start": "ΈÎŊÎąĪÎžÎˇ ÎģÎĩÎšĪ„ÎŋĪ…ĪÎŗÎ¯ÎąĪ‚ ĪƒĪ…ÎŊĪ„ÎŽĪÎˇĪƒÎˇĪ‚", + "maintenance_start_error": "Î‘Ī€ÎŋĪ„Ī…Ī‡Î¯Îą έÎŊÎąĪÎžÎˇĪ‚ ÎģÎĩÎšĪ„ÎŋĪ…ĪÎŗÎ¯ÎąĪ‚ ĪƒĪ…ÎŊĪ„ÎŽĪÎˇĪƒÎˇĪ‚.", "manage_concurrency": "Î”ÎšÎąĪ‡ÎĩÎ¯ĪÎšĪƒÎˇ Ī„ÎąĪ…Ī„ĪŒĪ‡ĪÎŋÎŊΡ ÎĩÎēĪ„Î­ÎģÎĩĪƒÎˇĪ‚", + "manage_concurrency_description": "ΜÎĩĪ„ÎąÎ˛ÎĩÎ¯Ī„Îĩ ĪƒĪ„Îˇ ΃ÎĩÎģÎ¯Î´Îą ÎĩĪÎŗÎąĪƒÎšĪŽÎŊ ÎŗÎšÎą ÎŊÎą Î´ÎšÎąĪ‡ÎĩÎšĪÎšĪƒĪ„ÎĩÎ¯Ī„Îĩ Ī„ÎˇÎŊ Ī„ÎąĪ…Ī„ĪŒĪ‡ĪÎŋÎŊΡ ÎĩÎēĪ„Î­ÎģÎĩĪƒÎˇ ÎĩĪÎŗÎąĪƒÎšĪŽÎŊ", "manage_log_settings": "Î”ÎšÎąĪ‡ÎĩÎ¯ĪÎšĪƒÎˇ ĪĪ…Î¸ÎŧÎ¯ĪƒÎĩΉÎŊ ÎąĪĪ‡ÎĩίÎŋĪ… ÎēÎąĪ„ÎąÎŗĪÎąĪ†ÎŽĪ‚", "map_dark_style": "ÎŖÎēÎŋĪĪÎŋ ΘέÎŧÎą", "map_enable_description": "ΕÎŊÎĩĪÎŗÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇ ÎģÎĩÎšĪ„ÎŋĪ…ĪÎŗÎšĪŽÎŊ ·ÎŦĪĪ„Îˇ", @@ -209,6 +236,7 @@ "notification_email_ignore_certificate_errors_description": "Î ÎąĪÎŦβÎģÎĩĪˆÎˇ ĪƒĪ†ÎąÎģÎŧÎŦ΄ΉÎŊ ÎĩĪ€ÎšÎēĪĪĪ‰ĪƒÎˇĪ‚ Ī„ÎˇĪ‚ Ī€ÎšĪƒĪ„ÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇĪ‚ TLS (δÎĩÎŊ ΀΁ÎŋĪ„ÎĩίÎŊÎĩĪ„ÎąÎš)", "notification_email_password_description": "ÎšĪ‰Î´ÎšÎēĪŒĪ‚ ÎŗÎšÎą Ī„ÎˇÎŊ ÎąĪ…Î¸ÎĩÎŊĪ„ÎšÎēÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇ ÎŧÎĩ Ī„ÎŋÎŊ server Ī„ÎŋĪ… email", "notification_email_port_description": "Î˜ĪĪÎą Ī„ÎŋĪ… email server (΀· 25, 465, ÎŽ 587)", + "notification_email_secure": "SMTPS (ÎąĪƒĪ†ÎąÎģÎ­Ī‚ Ī€ĪĪ‰Ī„ĪŒÎēÎŋÎģÎģÎŋ ÎąĪ€ÎŋĪƒĪ„ÎŋÎģÎŽĪ‚ email)", "notification_email_secure_description": "Î§ĪÎŽĪƒÎˇ SMTPS (SMTP over TLS)", "notification_email_sent_test_email_button": "Î‘Ī€ÎŋĪƒĪ„ÎŋÎģÎŽ test email ÎēιΚ ÎąĪ€ÎŋθΎÎēÎĩĪ…ĪƒÎˇ", "notification_email_setting_description": "ÎĄĪ…Î¸ÎŧÎ¯ĪƒÎĩÎšĪ‚ ÎŗÎšÎą Ī„ÎˇÎŊ ÎąĪ€ÎŋĪƒĪ„ÎŋÎģÎŽ ÎĩΚδÎŋĪ€ÎŋÎšÎŽĪƒÎĩΉÎŊ ÎŧÎ­ĪƒĪ‰ email", @@ -242,15 +270,20 @@ "oauth_storage_quota_default_description": "ΠÎŋ΃ÎŋĪƒĪ„ĪŒ ΃Îĩ GiB Ī€ÎŋĪ… θι Ī‡ĪÎˇĪƒÎšÎŧÎŋĪ€ÎŋΚΡθÎĩί ĪŒĪ„ÎąÎŊ δÎĩÎŊ ÎŋĪÎ¯ÎļÎĩĪ„ÎąÎš ÎąĪ€ĪŒ Ī„Îˇ δΡÎģΉÎŧέÎŊΡ Ī„ÎšÎŧÎŽ.", "oauth_timeout": "Î§ĪÎŋÎŊΚÎēΌ ĪŒĪÎšÎŋ Î‘ÎšĪ„ÎŽÎŧÎąĪ„ÎŋĪ‚", "oauth_timeout_description": "Î§ĪÎŋÎŊΚÎēΌ ĪŒĪÎšÎŋ Î‘ÎšĪ„ÎŽÎŧÎąĪ„ÎŋĪ‚ ΃Îĩ milliseconds", + "ocr_job_description": "Î§ĪÎŽĪƒÎˇ ÎŧÎˇĪ‡ÎąÎŊΚÎēÎŽĪ‚ ÎŧÎŦÎ¸ÎˇĪƒÎˇĪ‚ ÎŗÎšÎą ÎąÎŊÎąÎŗÎŊĪŽĪÎšĪƒÎˇ ÎēÎĩΚÎŧέÎŊÎŋĪ… ΃Îĩ ÎĩΚÎēΌÎŊÎĩĪ‚", "password_enable_description": "ÎŖĪÎŊδÎĩĪƒÎˇ ÎŧÎĩ ΡÎģÎĩÎē΄΁ÎŋÎŊΚÎēΌ Ī„ÎąĪ‡Ī…Î´ĪÎŋÎŧÎĩίÎŋ", "password_settings": "ÎŖĪÎŊδÎĩĪƒÎˇ ÎŧÎĩ ÎēĪ‰Î´ÎšÎēΌ", "password_settings_description": "Î”ÎšÎąĪ‡ÎĩÎ¯ĪÎšĪƒÎˇ ĪĪ…Î¸ÎŧÎ¯ĪƒÎĩΉÎŊ ĪƒĪÎŊδÎĩĪƒÎˇĪ‚ ÎŧÎ­ĪƒĪ‰ ÎēĪ‰Î´ÎšÎēÎŋĪ Ī€ĪĪŒĪƒÎ˛ÎąĪƒÎˇĪ‚", "paths_validated_successfully": "ΌÎģÎĩĪ‚ ÎŋΚ Î´ÎšÎąÎ´ĪÎŋÎŧÎ­Ī‚ ÎĩĪ€ÎšÎēĪ…ĪĪŽÎ¸ÎˇÎēÎąÎŊ ÎĩĪ€ÎšĪ„Ī…Ī‡ĪŽĪ‚", "person_cleanup_job": "ÎšÎąÎ¸ÎąĪÎšĪƒÎŧĪŒĪ‚ ÎąĪ„ĪŒÎŧÎŋĪ…", + "queue_details": "ΛÎĩ΀΄ÎŋÎŧÎ­ĪÎĩΚÎĩĪ‚ Îŋ΅΁ÎŦĪ‚", + "queues": "ÎŸĪ…ĪÎ­Ī‚ ÎĩĪÎŗÎąĪƒÎšĪŽÎŊ", + "queues_page_description": "ÎŖÎĩÎģÎ¯Î´Îą ÎŋĪ…ĪĪŽÎŊ ÎĩĪÎŗÎąĪƒÎšĪŽÎŊ Î´ÎšÎąĪ‡ÎĩÎšĪÎšĪƒĪ„ÎŽ", "quota_size_gib": "ÎœÎ­ÎŗÎĩθÎŋĪ‚ ÎŋĪÎ¯ÎŋĪ… (GiB)", "refreshing_all_libraries": "Î•Ī€ÎąÎŊÎąĪ†ĪŒĪĪ„Ī‰ĪƒÎˇ ΌÎģΉÎŊ ΄ΉÎŊ βΚβÎģΚÎŋθΡÎēĪŽÎŊ", "registration": "Î•ÎŗÎŗĪÎąĪ†ÎŽ Î”ÎšÎąĪ‡ÎĩÎšĪÎšĪƒĪ„ÎŽ", "registration_description": "ΔÎĩδÎŋÎŧέÎŊÎŋĪ… ĪŒĪ„Îš ÎĩÎ¯ĪƒĪ„Îĩ Îŋ Ī€ĪĪŽĪ„ÎŋĪ‚ Ī‡ĪÎŽĪƒĪ„ÎˇĪ‚ ĪƒĪ„Îŋ ĪƒĪĪƒĪ„ÎˇÎŧÎą, θι ÎąÎŊÎąĪ„ÎĩθÎĩÎ¯Ī„Îĩ Ή΂ Î”ÎšÎąĪ‡ÎĩÎšĪÎšĪƒĪ„ÎŽĪ‚ ÎēιΚ θι ÎĩÎ¯ĪƒĪ„Îĩ Ī…Ī€ÎĩĪÎ¸Ī…ÎŊÎŋĪ‚ ÎŗÎšÎą Ī„ÎšĪ‚ Î´ÎšÎąĪ‡ÎĩÎšĪÎšĪƒĪ„ÎšÎēÎ­Ī‚ ÎĩĪÎŗÎąĪƒÎ¯ÎĩĪ‚, ÎĩÎŊĪŽ ÎŋΚ ÎĩĪ€ÎšĪ€ÎģέÎŋÎŊ Ī‡ĪÎŽĪƒĪ„ÎĩĪ‚ θι δΡÎŧΚÎŋĪ…ĪÎŗÎŋĪÎŊĪ„ÎąÎš ÎąĪ€ĪŒ Îĩ΃ÎŦĪ‚.", + "remove_failed_jobs": "Î‘Ī†ÎąÎ¯ĪÎĩĪƒÎˇ ÎąĪ€ÎŋĪ„Ī…Ī‡ÎˇÎŧέÎŊΉÎŊ ÎĩĪÎŗÎąĪƒÎšĪŽÎŊ", "require_password_change_on_login": "Î‘Ī€ÎąÎšĪ„ÎĩÎ¯Ī„ÎąÎš ÎąĪ€ĪŒ Ī„ÎŋÎŊ Ī‡ĪÎŽĪƒĪ„Îˇ ÎŊÎą ÎąÎģÎģÎŦΞÎĩΚ Ī„ÎŋÎŊ ÎēĪ‰Î´ÎšÎēΌ Ī€ĪĪŒĪƒÎ˛ÎąĪƒÎˇĪ‚ ÎēÎąĪ„ÎŦ Ī„ÎˇÎŊ Ī€ĪĪŽĪ„Îˇ ĪƒĪÎŊδÎĩĪƒÎˇ", "reset_settings_to_default": "Î•Ī€ÎąÎŊÎąĪ†Îŋ΁ÎŦ ΀΁ÎŋÎĩĪ€ÎšÎģÎĩÎŗÎŧέÎŊΉÎŊ ĪĪ…Î¸ÎŧÎ¯ĪƒÎĩΉÎŊ", "reset_settings_to_recent_saved": "Î•Ī€ÎąÎŊÎąĪ†Îŋ΁ÎŦ ĪĪ…Î¸ÎŧÎ¯ĪƒÎĩΉÎŊ ĪƒĪ„ÎšĪ‚ Ī€ĪĪŒĪƒĪ†ÎąĪ„Îą ÎąĪ€ÎŋθΡÎēÎĩĪ…ÎŧέÎŊÎĩĪ‚ ĪĪ…Î¸ÎŧÎ¯ĪƒÎĩÎšĪ‚", @@ -263,8 +296,10 @@ "server_public_users_description": "ΌÎģÎŋΚ ÎŋΚ Ī‡ĪÎŽĪƒĪ„ÎĩĪ‚ (ΌÎŊÎŋÎŧÎą ÎēιΚ email) ÎĩÎŧĪ†ÎąÎŊίÎļÎŋÎŊĪ„ÎąÎš ÎēÎąĪ„ÎŦ Ī„ÎˇÎŊ ΀΁ÎŋĪƒÎ¸ÎŽÎēΡ ÎĩÎŊĪŒĪ‚ Ī‡ĪÎŽĪƒĪ„Îˇ ΃Îĩ ÎēÎŋΚÎŊĪŒĪ‡ĪÎˇĪƒĪ„Îą ÎŦÎģÎŧĪ€ÎŋĪ…Îŧ. ÎŒĪ„ÎąÎŊ ÎąĪ…Ī„ÎŽ Ρ ÎĩĪ€ÎšÎģÎŋÎŗÎŽ ÎĩίÎŊιΚ ÎąĪ€ÎĩÎŊÎĩĪÎŗÎŋĪ€ÎŋΚΡÎŧέÎŊΡ, Ρ ÎģÎ¯ĪƒĪ„Îą Ī‡ĪÎˇĪƒĪ„ĪŽÎŊ θι ÎĩίÎŊιΚ Î´ÎšÎąÎ¸Î­ĪƒÎšÎŧΡ ÎŧΌÎŊÎŋ ĪƒĪ„ÎŋĪ…Ī‚ Î´ÎšÎąĪ‡ÎĩÎšĪÎšĪƒĪ„Î­Ī‚.", "server_settings": "ÎĄĪ…Î¸ÎŧÎ¯ĪƒÎĩÎšĪ‚ ΔιαÎēÎŋÎŧÎšĪƒĪ„ÎŽ", "server_settings_description": "Î”ÎšÎąĪ‡ÎĩÎ¯ĪÎšĪƒÎˇ ĪĪ…Î¸ÎŧÎ¯ĪƒÎĩΉÎŊ δΚιÎēÎŋÎŧÎšĪƒĪ„ÎŽ", + "server_stats_page_description": "ÎŖÎĩÎģÎ¯Î´Îą ĪƒĪ„ÎąĪ„ÎšĪƒĪ„ÎšÎēĪŽÎŊ δΚιÎēÎŋÎŧÎšĪƒĪ„ÎŽ Î´ÎšÎąĪ‡ÎĩÎšĪÎšĪƒĪ„ÎŽ", "server_welcome_message": "ΜήÎŊĪ…ÎŧÎą ÎēÎąÎģĪ‰ĪƒÎŋĪÎ¯ĪƒÎŧÎąĪ„ÎŋĪ‚", "server_welcome_message_description": "ΤÎŋ ÎŧÎŽÎŊĪ…ÎŧÎą Ī€ÎŋĪ… θι ÎĩÎŧĪ†ÎąÎŊίÎļÎĩĪ„ÎąÎš ĪƒĪ„Îˇ ΃ÎĩÎģÎ¯Î´Îą ĪƒĪÎŊδÎĩĪƒÎˇĪ‚.", + "settings_page_description": "ÎŖÎĩÎģÎ¯Î´Îą ĪĪ…Î¸ÎŧÎ¯ĪƒÎĩΉÎŊ Î´ÎšÎąĪ‡ÎĩÎšĪÎšĪƒĪ„ÎŽ", "sidecar_job": "ΜÎĩĪ„ÎąÎ´ÎĩδÎŋÎŧέÎŊÎą ĪƒĪ…ÎŊÎŋδÎĩĪ…Ī„ÎšÎēÎŋĪ ÎąĪĪ‡ÎĩίÎŋĪ…", "sidecar_job_description": "ΑÎŊÎąÎēÎŦÎģĪ…ĪˆÎˇ ÎŽ ĪƒĪ…ÎŗĪ‡ĪÎŋÎŊÎšĪƒÎŧĪŒĪ‚ ΄ΉÎŊ ÎŧÎĩĪ„ÎąÎ´ÎĩδÎŋÎŧέÎŊΉÎŊ Ī„ÎŋĪ… ĪƒĪ…ÎŊÎŋδÎĩĪ…Ī„ÎšÎēÎŋĪ ÎąĪĪ‡ÎĩίÎŋĪ… ÎąĪ€ĪŒ Ī„Îŋ ĪƒĪĪƒĪ„ÎˇÎŧÎą ÎąĪĪ‡ÎĩÎ¯Ī‰ÎŊ", "slideshow_duration_description": "Î‘ĪÎšÎ¸ÎŧĪŒĪ‚ δÎĩĪ…Ī„Îĩ΁ÎŋÎģÎ­Ī€Ī„Ī‰ÎŊ ÎŗÎšÎą Ī„ÎˇÎŊ ÎĩÎŧΆÎŦÎŊÎšĪƒÎˇ ÎēÎŦθÎĩ ÎĩΚÎēΌÎŊÎąĪ‚", @@ -383,7 +418,8 @@ "user_restore_scheduled_removal": "Î‘Ī€ÎŋÎēÎąĪ„ÎŦĪƒĪ„ÎąĪƒÎˇ Ī‡ĪÎŽĪƒĪ„Îˇ - ΀΁ÎŋÎŗĪÎąÎŧÎŧÎąĪ„ÎšĪƒÎŧέÎŊΡ Î´ÎšÎąÎŗĪÎąĪ†ÎŽ ĪƒĪ„ÎšĪ‚ {date, date, long}", "user_settings": "ÎĄĪ…Î¸ÎŧÎ¯ĪƒÎĩÎšĪ‚ Ī‡ĪÎŽĪƒĪ„Îˇ", "user_settings_description": "Î”ÎšÎąĪ‡ÎĩÎ¯ĪÎšĪƒÎˇ ĪĪ…Î¸ÎŧÎ¯ĪƒÎĩΉÎŊ Ī‡ĪÎŽĪƒĪ„Îˇ", - "user_successfully_removed": "Ο Ī‡ĪÎŽĪƒĪ„ÎˇĪ‚ {email} Î­Ī‡ÎĩΚ ÎąĪ†ÎąÎšĪÎĩθÎĩί ÎŧÎĩ ÎĩĪ€ÎšĪ„Ī…Ī‡Î¯Îą.", + "user_successfully_removed": "Ο Ī‡ĪÎŽĪƒĪ„ÎˇĪ‚ {email} ÎąĪ†ÎąÎšĪÎ­Î¸ÎˇÎēÎĩ ÎŧÎĩ ÎĩĪ€ÎšĪ„Ī…Ī‡Î¯Îą.", + "users_page_description": "ÎŖÎĩÎģÎ¯Î´Îą Ī‡ĪÎˇĪƒĪ„ĪŽÎŊ Î´ÎšÎąĪ‡ÎĩÎšĪÎšĪƒĪ„ÎŽ", "version_check_enabled_description": "ΕÎŊÎĩĪÎŗÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇ ÎĩÎģÎ­ÎŗĪ‡ÎŋĪ… έÎēδÎŋĪƒÎˇĪ‚", "version_check_implications": "Η ÎģÎĩÎšĪ„ÎŋĪ…ĪÎŗÎ¯Îą ÎĩÎģÎ­ÎŗĪ‡ÎŋĪ… έÎēδÎŋĪƒÎˇĪ‚, ÎĩÎžÎąĪĪ„ÎŦĪ„ÎąÎš ÎąĪ€ĪŒ Ī„ÎˇÎŊ Ī€ÎĩĪÎšÎŋδΚÎēÎŽ ÎĩĪ€ÎšÎēÎŋΚÎŊΉÎŊÎ¯Îą ÎŧÎĩ Ī„Îŋ github.com", "version_check_settings": "ΈÎģÎĩÎŗĪ‡ÎŋĪ‚ ΈÎēδÎŋĪƒÎˇĪ‚", @@ -401,11 +437,11 @@ "advanced_settings_prefer_remote_subtitle": "ΜÎĩĪÎšÎēÎ­Ī‚ ĪƒĪ…ĪƒÎēÎĩĪ…Î­Ī‚ ÎąĪÎŗÎŋĪÎŊ Ī€ÎŋÎģĪ ÎŊÎą ΆÎŋĪĪ„ĪŽĪƒÎŋĪ…ÎŊ ÎŧΚÎē΁ÎŋÎŗĪÎąĪ†Î¯ÎĩĪ‚ ÎąĪ€ĪŒ Ī„ÎŋĪ€ÎšÎēÎŦ ÎąĪĪ‡ÎĩÎ¯Îą. ΕÎŊÎĩĪÎŗÎŋĪ€ÎŋÎšÎŽĪƒĪ„Îĩ ÎąĪ…Ī„ÎŽÎŊ Ī„Îˇ ĪĪÎ¸ÎŧÎšĪƒÎˇ ÎŗÎšÎą ÎŊÎą ΆÎŋĪĪ„ĪŽÎŊÎŋÎŊĪ„ÎąÎš ÎąÎŊĪ„Î¯ ÎąĪ…Ī„ÎŋĪ ÎąĪ€ÎŋÎŧÎąÎēĪĪ…ĪƒÎŧέÎŊÎĩĪ‚ ÎĩΚÎēΌÎŊÎĩĪ‚.", "advanced_settings_prefer_remote_title": "Î ĪÎŋĪ„Î¯ÎŧÎˇĪƒÎˇ ÎąĪ€ÎŋÎŧÎąÎēĪĪ…ĪƒÎŧέÎŊΉÎŊ ÎĩΚÎēΌÎŊΉÎŊ", "advanced_settings_proxy_headers_subtitle": "ΚαθÎŋĪÎšĪƒÎŧĪŒĪ‚ ÎēÎĩĪ†ÎąÎģÎ¯Î´Ī‰ÎŊ δΚιÎēÎŋÎŧÎšĪƒĪ„ÎŽ ÎŧÎĩ΃ÎŋÎģÎŦÎ˛ÎˇĪƒÎˇĪ‚ Ī€ÎŋĪ… Ī„Îŋ Immich Ī€ĪÎ­Ī€ÎĩΚ ÎŊÎą ĪƒĪ„Î­ÎģÎŊÎĩΚ ÎŧÎĩ ÎēÎŦθÎĩ ÎąÎ¯Ī„ÎˇÎŧÎą δΚÎēĪ„ĪÎŋĪ…", - "advanced_settings_proxy_headers_title": "ΚÎĩĪ†ÎąÎģίδÎĩĪ‚ δΚιÎēÎŋÎŧÎšĪƒĪ„ÎŽ ÎŧÎĩ΃ÎŋÎģÎŦÎ˛ÎˇĪƒÎˇĪ‚", + "advanced_settings_proxy_headers_title": "Î ĪÎŋĪƒÎąĪÎŧÎŋ΃ÎŧέÎŊÎŋΚ proxy headers [ΠΕΙΡΑΜΑΤΙΚΟ]", "advanced_settings_readonly_mode_subtitle": "ΕÎŊÎĩĪÎŗÎŋĪ€ÎŋΚÎĩί Ī„Îˇ ÎģÎĩÎšĪ„ÎŋĪ…ĪÎŗÎ¯Îą ÎŧΌÎŊÎŋ-ÎŗÎšÎą-ÎąÎŊÎŦÎŗÎŊĪ‰ĪƒÎˇ, ĪŒĪ€ÎŋĪ… ÎŋΚ ΆΉ΄ÎŋÎŗĪÎąĪ†Î¯ÎĩĪ‚ ÎŧĪ€Îŋ΁ÎŋĪÎŊ ÎŧΌÎŊÎŋ ÎŊÎą ΀΁ÎŋβÎģΡθÎŋĪÎŊ. ΕÎŊÎ­ĪÎŗÎĩΚÎĩĪ‚ ĪŒĪ€Ī‰Ī‚ ÎĩĪ€ÎšÎģÎŋÎŗÎŽ Ī€ÎŋÎģÎģĪŽÎŊ ÎĩΚÎēΌÎŊΉÎŊ, ÎēÎŋΚÎŊÎŽ Ī‡ĪÎŽĪƒÎˇ, ÎąĪ€ÎŋĪƒĪ„ÎŋÎģÎŽ (casting) ÎēιΚ Î´ÎšÎąÎŗĪÎąĪ†ÎŽ ÎĩίÎŊιΚ ÎąĪ€ÎĩÎŊÎĩĪÎŗÎŋĪ€ÎŋΚΡÎŧέÎŊÎĩĪ‚. Η ÎĩÎŊÎĩĪÎŗÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇ/ÎąĪ€ÎĩÎŊÎĩĪÎŗÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇ Ī„ÎˇĪ‚ ÎģÎĩÎšĪ„ÎŋĪ…ĪÎŗÎ¯ÎąĪ‚ ÎŧΌÎŊÎŋ-ÎŗÎšÎą-ÎąÎŊÎŦÎŗÎŊĪ‰ĪƒÎˇ ÎŗÎ¯ÎŊÎĩĪ„ÎąÎš ÎŧÎ­ĪƒĪ‰ Ī„ÎˇĪ‚ ÎĩΚÎēΌÎŊÎąĪ‚ Ī„ÎŋĪ… Ī‡ĪÎŽĪƒĪ„Îˇ ÎąĪ€ĪŒ Ī„ÎˇÎŊ ÎēÎĩÎŊĪ„ĪÎšÎēÎŽ ÎŋÎ¸ĪŒÎŊΡ", - "advanced_settings_readonly_mode_title": "ΛÎĩÎšĪ„ÎŋĪ…ĪÎŗÎ¯Îą ÎŧΌÎŊÎŋ-ÎŗÎšÎą-ÎąÎŊÎŦÎŗÎŊĪ‰ĪƒÎˇ", + "advanced_settings_readonly_mode_title": "ÎœĪŒÎŊÎŋ-ÎŗÎšÎą-ÎąÎŊÎŦÎŗÎŊĪ‰ĪƒÎˇ", "advanced_settings_self_signed_ssl_subtitle": "Î ÎąĪÎąÎēÎŦÎŧ΀΄ÎĩΚ Ī„ÎŋÎŊ έÎģÎĩÎŗĪ‡Îŋ Ī€ÎšĪƒĪ„ÎŋĪ€ÎŋÎšÎˇĪ„ÎšÎēÎŋĪ SSL Ī„ÎŋĪ… δΚιÎēÎŋÎŧÎšĪƒĪ„ÎŽ. Î‘Ī€ÎąĪÎąÎ¯Ī„ÎˇĪ„Îŋ ÎŗÎšÎą ÎąĪ…Ī„Îŋ-Ī…Ī€ÎŋÎŗÎĩÎŗĪÎąÎŧÎŧέÎŊÎą Ī€ÎšĪƒĪ„ÎŋĪ€ÎŋÎšÎˇĪ„ÎšÎēÎŦ.", - "advanced_settings_self_signed_ssl_title": "Να ÎĩĪ€ÎšĪ„ĪÎ­Ī€ÎŋÎŊĪ„ÎąÎš ÎąĪ…Ī„Îŋ-Ī…Ī€ÎŋÎŗÎĩÎŗĪÎąÎŧÎŧέÎŊÎą Ī€ÎšĪƒĪ„ÎŋĪ€ÎŋÎšÎˇĪ„ÎšÎēÎŦ SSL", + "advanced_settings_self_signed_ssl_title": "Να ÎĩĪ€ÎšĪ„ĪÎ­Ī€ÎŋÎŊĪ„ÎąÎš ÎąĪ…Ī„Îŋ-Ī…Ī€ÎŋÎŗÎĩÎŗĪÎąÎŧÎŧέÎŊÎą Ī€ÎšĪƒĪ„ÎŋĪ€ÎŋÎšÎˇĪ„ÎšÎēÎŦ SSL [ΠΕΙΡΑΜΑΤΙΚΟ]", "advanced_settings_sync_remote_deletions_subtitle": "Î‘Ī…Ī„ĪŒÎŧÎąĪ„Îˇ Î´ÎšÎąÎŗĪÎąĪ†ÎŽ ÎŽ ÎĩĪ€ÎąÎŊÎąĪ†Îŋ΁ÎŦ ÎĩÎŊĪŒĪ‚ Ī€ÎĩĪÎšÎŋĪ…ĪƒÎšÎąÎēÎŋĪ ĪƒĪ„ÎŋÎšĪ‡ÎĩίÎŋĪ… ΃Îĩ ÎąĪ…Ī„ÎŽ Ī„Îˇ ĪƒĪ…ĪƒÎēÎĩĪ…ÎŽ, ĪŒĪ„ÎąÎŊ Ρ ÎĩÎŊÎ­ĪÎŗÎĩΚι ÎąĪ…Ī„ÎŽ Ī€ĪÎąÎŗÎŧÎąĪ„ÎŋĪ€ÎŋΚÎĩÎ¯Ī„ÎąÎš ĪƒĪ„Îŋ Î´ÎšÎąÎ´Î¯Îē΄΅Îŋ", "advanced_settings_sync_remote_deletions_title": "ÎŖĪ…ÎŗĪ‡ĪÎŋÎŊÎšĪƒÎŧĪŒĪ‚ ÎąĪ€ÎŋÎŧÎąÎēĪĪ…ĪƒÎŧέÎŊΉÎŊ Î´ÎšÎąÎŗĪÎąĪ†ĪŽÎŊ [ΠΕΙΡΑΜΑΤΙΚΟ]", "advanced_settings_tile_subtitle": "ÎĄĪ…Î¸ÎŧÎ¯ĪƒÎĩÎšĪ‚ ΀΁ÎŋĪ‡Ī‰ĪÎˇÎŧέÎŊÎŋĪ… Ī‡ĪÎŽĪƒĪ„Îˇ", @@ -414,6 +450,7 @@ "age_months": "Η ΡÎģΚÎēÎ¯Îą {months, plural, one {# ÎŧÎŽÎŊÎąĪ‚} other {# ÎŧÎŽÎŊÎĩĪ‚}}", "age_year_months": "ΗÎģΚÎēÎ¯Îą, 1 Î­Ī„ÎŋĪ‚, {months, plural, one {# ÎŧÎŽÎŊÎąĪ‚} other {# ÎŧÎŽÎŊÎĩĪ‚}}", "age_years": "{years, plural, other {ΗÎģΚÎēÎ¯Îą #}}", + "album": "ΛÎĩĪÎēΉÎŧÎą", "album_added": "ΤÎŋ ÎŦÎģÎŧĪ€ÎŋĪ…Îŧ, ΀΁ÎŋĪƒĪ„Î­Î¸ÎˇÎēÎĩ", "album_added_notification_setting_description": "ΛÎŦβÎĩĪ„Îĩ ÎĩΚδÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇ ÎŧÎ­ĪƒĪ‰ email ĪŒĪ„ÎąÎŊ ΀΁ÎŋĪƒĪ„ÎĩθÎĩÎ¯Ī„Îĩ ΃Îĩ έÎŊÎą ÎēÎŋΚÎŊĪŒĪ‡ĪÎˇĪƒĪ„Îŋ ÎŦÎģÎŧĪ€ÎŋĪ…Îŧ", "album_cover_updated": "ΤÎŋ ÎĩÎžĪŽĪ†Ī…ÎģÎģÎŋ Ī„ÎŋĪ… ÎŦÎģÎŧĪ€ÎŋĪ…Îŧ, ÎĩÎŊΡÎŧÎĩĪĪŽÎ¸ÎˇÎēÎĩ", @@ -459,6 +496,7 @@ "allow_edits": "Î•Ī€ÎšĪ„ĪÎ­ĪˆĪ„Îĩ Ī„ÎšĪ‚ ΄΁ÎŋĪ€ÎŋĪ€ÎŋÎšÎŽĪƒÎĩÎšĪ‚", "allow_public_user_to_download": "Î•Ī€ÎšĪ„ĪÎ­ĪˆĪ„Îĩ ΃Îĩ δΡÎŧĪŒĪƒÎšÎŋ Ī‡ĪÎŽĪƒĪ„Îˇ ÎŊÎą ÎēÎąĪ„ÎĩβÎŦ΃ÎĩΚ", "allow_public_user_to_upload": "Î•Ī€ÎšĪ„ĪÎ­ĪˆĪ„Îĩ ĪƒĪ„ÎŋÎŊ δΡÎŧĪŒĪƒÎšÎŋ Ī‡ĪÎŽĪƒĪ„Îˇ ÎŊÎą ÎąÎŊÎĩβÎŦ΃ÎĩΚ", + "allowed": "Î•Ī€ÎšĪ„ĪÎĩĪ€ĪŒÎŧÎĩÎŊÎŋ", "alt_text_qr_code": "ΕιÎēΌÎŊÎą ÎēĪ‰Î´ÎšÎēÎŋĪ QR", "anti_clockwise": "ΑÎŊĪ„Î¯Î¸ÎĩĪ„Îą ÎŧÎĩ Ī„Îˇ ΆÎŋ΁ÎŦ Ī„ÎŋĪ… ΁ÎŋÎģÎŋÎŗÎšÎŋĪ", "api_key": "ΚÎģÎĩΚδί API", @@ -471,6 +509,8 @@ "app_bar_signout_dialog_title": "Î‘Ī€ÎŋĪƒĪÎŊδÎĩĪƒÎˇ", "app_download_links": "ÎŖĪÎŊδÎĩ΃ÎŧÎŋΚ Î›ÎŽĪˆÎˇĪ‚ Î•Ī†ÎąĪÎŧÎŋÎŗÎŽĪ‚", "app_settings": "ÎĄĪ…Î¸ÎŧÎ¯ĪƒÎĩÎšĪ‚ ÎĩĪ†ÎąĪÎŧÎŋÎŗÎŽĪ‚", + "app_stores": "ÎšÎąĪ„ÎąĪƒĪ„ÎŽÎŧÎąĪ„Îą ÎĩĪ†ÎąĪÎŧÎŋÎŗĪŽÎŊ", + "app_update_available": "ÎĨĪ€ÎŦ΁·ÎĩΚ Î´ÎšÎąÎ¸Î­ĪƒÎšÎŧΡ ÎĩÎŊΡÎŧÎ­ĪĪ‰ĪƒÎˇ ÎĩĪ†ÎąĪÎŧÎŋÎŗÎŽĪ‚", "appears_in": "ΕÎŧĪ†ÎąÎŊίÎļÎĩĪ„ÎąÎš ΃Îĩ", "apply_count": "Î•Ī†ÎąĪÎŧÎŋÎŗÎŽ ({count, number})", "archive": "Î‘ĪĪ‡ÎĩίÎŋ", @@ -554,6 +594,7 @@ "backup_albums_sync": "ÎŖĪ…ÎŗĪ‡ĪÎŋÎŊÎšĪƒÎŧĪŒĪ‚ ÎąÎŊĪ„ÎšÎŗĪÎŦΆΉÎŊ ÎąĪƒĪ†ÎąÎģÎĩÎ¯ÎąĪ‚ ÎŦÎģÎŧĪ€ÎŋĪ…Îŧ", "backup_all": "ΌÎģÎą", "backup_background_service_backup_failed_message": "Î‘Ī€ÎŋĪ„Ī…Ī‡Î¯Îą δΡÎŧΚÎŋĪ…ĪÎŗÎ¯ÎąĪ‚ ÎąÎŊĪ„ÎšÎŗĪÎŦΆΉÎŊ ÎąĪƒĪ†ÎąÎģÎĩÎ¯ÎąĪ‚. Î•Ī€ÎąÎŊÎŦÎģÎˇĪˆÎˇâ€Ļ", + "backup_background_service_complete_notification": "ΟÎģÎŋÎēÎģÎŽĪĪ‰ĪƒÎˇ ÎąÎŊĪ„ÎšÎŗĪÎŦΆÎŋĪ… ÎąĪƒĪ†ÎąÎģÎĩÎ¯ÎąĪ‚ ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Ī‰ÎŊ", "backup_background_service_connection_failed_message": "Î‘Ī€ÎŋĪ„Ī…Ī‡Î¯Îą ĪƒĪÎŊδÎĩĪƒÎˇĪ‚ ÎŧÎĩ Ī„Îŋ δΚιÎēÎŋÎŧÎšĪƒĪ„ÎŽ. Î•Ī€ÎąÎŊÎŦÎģÎˇĪˆÎˇâ€Ļ", "backup_background_service_current_upload_notification": "ΜÎĩĪ„ÎąĪ†ĪŒĪĪ„Ī‰ĪƒÎˇ {filename}", "backup_background_service_default_notification": "ΈÎģÎĩÎŗĪ‡ÎŋĪ‚ ÎŗÎšÎą ÎŊέι ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Îąâ€Ļ", @@ -611,6 +652,7 @@ "backup_options_page_title": "Î•Ī€ÎšÎģÎŋÎŗÎ­Ī‚ ÎąÎŊĪ„ÎšÎŗĪÎŦΆΉÎŊ ÎąĪƒĪ†ÎąÎģÎĩÎ¯ÎąĪ‚", "backup_setting_subtitle": "Î”ÎšÎąĪ‡ÎĩÎ¯ĪÎšĪƒÎˇ ĪĪ…Î¸ÎŧÎ¯ĪƒÎĩΉÎŊ ÎŧÎĩĪ„ÎąĪ†ĪŒĪĪ„Ī‰ĪƒÎˇĪ‚ ĪƒĪ„Îŋ Ī€ÎąĪÎąĪƒÎēÎŽÎŊΚÎŋ ÎēιΚ ĪƒĪ„Îŋ ΀΁Îŋ΃ÎēÎŽÎŊΚÎŋ", "backup_settings_subtitle": "Î”ÎšÎąĪ‡ÎĩÎ¯ĪÎšĪƒÎˇ ΄ΉÎŊ ĪĪ…Î¸ÎŧÎ¯ĪƒÎĩΉÎŊ ÎŧÎĩĪ„ÎąĪ†ĪŒĪĪ„Ī‰ĪƒÎˇĪ‚", + "backup_upload_details_page_more_details": "Î ÎąĪ„ÎŽĪƒĪ„Îĩ ÎŗÎšÎą Ī€ÎĩĪÎšĪƒĪƒĪŒĪ„Îĩ΁ÎĩĪ‚ ÎģÎĩ΀΄ÎŋÎŧÎ­ĪÎĩΚÎĩĪ‚", "backward": "Î ĪÎŋĪ‚ Ī„Îą Ī€Î¯ĪƒĪ‰", "biometric_auth_enabled": "ΒιÎŋÎŧÎĩĪ„ĪÎšÎēÎŽ Ī„ÎąĪ…Ī„ÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇ ÎĩÎŊÎĩĪÎŗÎŋĪ€ÎŋΚΎθΡÎēÎĩ", "biometric_locked_out": "Î•Î¯ĪƒĪ„Îĩ ÎēÎģÎĩÎšÎ´Ī‰ÎŧέÎŊÎŋΚ ÎĩÎēĪ„ĪŒĪ‚ Ī„ÎˇĪ‚ βΚÎŋÎŧÎĩĪ„ĪÎšÎēÎŽĪ‚ Ī„ÎąĪ…Ī„ÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇĪ‚", @@ -663,6 +705,8 @@ "change_password_description": "Î‘Ī…Ī„ÎŽ ÎĩίÎŊιΚ ÎŽ Ρ Ī€ĪĪŽĪ„Îˇ ΆÎŋ΁ÎŦ Ī€ÎŋĪ… ĪƒĪ…ÎŊδέÎĩĪƒĪ„Îĩ ĪƒĪ„Îŋ ĪƒĪĪƒĪ„ÎˇÎŧÎą ÎŽ Î­Ī‡ÎĩΚ ÎŗÎ¯ÎŊÎĩΚ ÎąÎ¯Ī„ÎˇÎŧÎą ÎŗÎšÎą ÎąÎģÎģÎąÎŗÎŽ Ī„ÎŋĪ… ÎēĪ‰Î´ÎšÎēÎŋĪ ĪƒÎąĪ‚. Î ÎąĪÎąÎēÎąÎģĪŽ ÎĩÎšĪƒÎŦÎŗÎĩĪ„Îĩ Ī„ÎŋÎŊ ÎŊέÎŋ ÎēĪ‰Î´ÎšÎēΌ, Ī€ÎąĪÎąÎēÎŦ΄Ή.", "change_password_form_confirm_password": "Î•Ī€ÎšÎ˛ÎĩÎ˛ÎąÎ¯Ī‰ĪƒÎˇ ÎšĪ‰Î´ÎšÎēÎŋĪ", "change_password_form_description": "ΓÎĩΚι ĪƒÎąĪ‚ {name},\n\nÎ•Î¯Ī„Îĩ ÎĩίÎŊιΚ Ρ Ī€ĪĪŽĪ„Îˇ ΆÎŋ΁ÎŦ Ī€ÎŋĪ… ĪƒĪ…ÎŊδέÎĩĪƒĪ„Îĩ ĪƒĪ„Îŋ ĪƒĪĪƒĪ„ÎˇÎŧÎą ÎĩÎ¯Ī„Îĩ Î­Ī‡ÎĩΚ ÎŗÎ¯ÎŊÎĩΚ ÎąÎ¯Ī„ÎˇĪƒÎˇ ÎŗÎšÎą ÎąÎģÎģÎąÎŗÎŽ Ī„ÎŋĪ… ÎēĪ‰Î´ÎšÎēÎŋĪ ĪƒÎąĪ‚. Î ÎąĪÎąÎēÎąÎģĪŽ ÎĩÎšĪƒÎŦÎŗÎĩĪ„Îĩ Ī„ÎŋÎŊ ÎŊέÎŋ ÎēĪ‰Î´ÎšÎēΌ.", + "change_password_form_log_out": "Î‘Ī€ÎŋĪƒĪÎŊδÎĩĪƒÎˇ ÎąĪ€ĪŒ ΌÎģÎĩĪ‚ Ī„ÎšĪ‚ ÎŦÎģÎģÎĩĪ‚ ĪƒĪ…ĪƒÎēÎĩĪ…Î­Ī‚", + "change_password_form_log_out_description": "ÎŖĪ…ÎŊÎšĪƒĪ„ÎŦĪ„ÎąÎš Ρ ÎąĪ€ÎŋĪƒĪÎŊδÎĩĪƒÎˇ ÎąĪ€ĪŒ ΌÎģÎĩĪ‚ Ī„ÎšĪ‚ ÎŦÎģÎģÎĩĪ‚ ĪƒĪ…ĪƒÎēÎĩĪ…Î­Ī‚", "change_password_form_new_password": "ΝέÎŋĪ‚ ÎšĪ‰Î´ÎšÎēĪŒĪ‚", "change_password_form_password_mismatch": "Οι ÎēĪ‰Î´ÎšÎēÎŋί δÎĩÎŊ Ī„ÎąÎšĪÎšÎŦÎļÎŋĪ…ÎŊ", "change_password_form_reenter_new_password": "Î•Ī€ÎąÎŊÎĩÎšĪƒÎąÎŗĪ‰ÎŗÎŽ ΝέÎŋĪ… ÎšĪ‰Î´ÎšÎēÎŋĪ", @@ -675,6 +719,7 @@ "check_corrupt_asset_backup_button": "ΕÎēĪ„Î­ÎģÎĩĪƒÎˇ ÎĩÎģÎ­ÎŗĪ‡ÎŋĪ…", "check_corrupt_asset_backup_description": "ΕÎēĪ„Î­ÎģÎĩ΃Îĩ ÎąĪ…Ī„ĪŒÎŊ Ī„ÎŋÎŊ έÎģÎĩÎŗĪ‡Îŋ ÎŧΌÎŊÎŋ ÎŧÎ­ĪƒĪ‰ Wi-Fi ÎēιΚ ÎąĪ†ÎŋĪ Î­Ī‡ÎŋĪ…ÎŊ ÎąĪ€ÎŋθΡÎēÎĩĪ…Ī„Îĩί ΌÎģÎą Ī„Îą ÎąÎŊĪ„Î¯ÎŗĪÎąĪ†Îą ÎąĪƒĪ†ÎąÎģÎĩÎ¯ÎąĪ‚ ΄ΉÎŊ ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Ī‰ÎŊ. Η δΚιδΚÎēÎąĪƒÎ¯Îą ÎŧĪ€Îŋ΁Îĩί ÎŊÎą Î´ÎšÎąĪÎēÎ­ĪƒÎĩΚ ÎŧÎĩĪÎšÎēÎŦ ÎģÎĩ΀΄ÎŦ.", "check_logs": "ΕÎģÎ­ÎŗÎžĪ„Îĩ Ī„Îą ÎąĪĪ‡ÎĩÎ¯Îą ÎēÎąĪ„ÎąÎŗĪÎąĪ†ÎŽĪ‚", + "checksum": "ΈÎģÎĩÎŗĪ‡ÎŋĪ‚ ÎąÎēÎĩĪÎąÎšĪŒĪ„ÎˇĪ„ÎąĪ‚", "choose_matching_people_to_merge": "Î•Ī€ÎšÎģÎ­ÎžĪ„Îĩ Ī„Îą ÎąÎŊĪ„Î¯ĪƒĪ„ÎŋÎšĪ‡Îą ÎŦĪ„ÎŋÎŧÎą ÎŗÎšÎą ĪƒĪ…ÎŗĪ‡ĪŽÎŊÎĩĪ…ĪƒÎˇ", "city": "Î ĪŒÎģΡ", "clear": "ΕÎēÎēιθÎŦĪÎšĪƒÎˇ", @@ -689,14 +734,15 @@ "client_cert_import_success_msg": "ΤÎŋ Ī€ÎšĪƒĪ„ÎŋĪ€ÎŋÎšÎˇĪ„ÎšÎēΌ Ī€ÎĩÎģÎŦĪ„Îˇ ÎĩÎšĪƒÎŦÎŗÎĩĪ„ÎąÎš", "client_cert_invalid_msg": "Μη Î­ÎŗÎē΅΁Îŋ ÎąĪĪ‡ÎĩίÎŋ Ī€ÎšĪƒĪ„ÎŋĪ€ÎŋÎšÎˇĪ„ÎšÎēÎŋĪ ÎŽ ÎģÎŦθÎŋĪ‚ ÎēĪ‰Î´ÎšÎēĪŒĪ‚ Ī€ĪĪŒĪƒÎ˛ÎąĪƒÎˇĪ‚", "client_cert_remove_msg": "ΤÎŋ Ī€ÎšĪƒĪ„ÎŋĪ€ÎŋÎšÎˇĪ„ÎšÎēΌ Ī€ÎĩÎģÎŦĪ„Îˇ ÎēÎąĪ„ÎąĪÎŗÎŽÎ¸ÎˇÎēÎĩ", - "client_cert_subtitle": "ÎĨĪ€ÎŋĪƒĪ„ÎˇĪÎ¯ÎļÎĩΚ ÎŧΌÎŊÎŋ Ī„Îˇ ÎŧÎŋĪĪ†ÎŽ PKCS12 (.p12, .pfx). Η Î•ÎšĪƒÎąÎŗĪ‰ÎŗÎŽ/Î‘Ī†ÎąÎ¯ĪÎĩĪƒÎˇ Ī€ÎšĪƒĪ„ÎŋĪ€ÎŋÎšÎˇĪ„ÎšÎēÎŋĪ ÎĩίÎŊιΚ Î´ÎšÎąÎ¸Î­ĪƒÎšÎŧΡ ÎŧΌÎŊÎŋ Ī€ĪÎšÎŊ ÎąĪ€ĪŒ Ī„Îˇ ĪƒĪÎŊδÎĩĪƒÎˇ", - "client_cert_title": "Î ÎšĪƒĪ„ÎŋĪ€ÎŋÎšÎˇĪ„ÎšÎēΌ Ī€ÎĩÎģÎŦĪ„Îˇ SSL", + "client_cert_subtitle": "ÎĨĪ€ÎŋĪƒĪ„ÎˇĪÎ¯ÎļÎĩΚ ÎŧΌÎŊÎŋ Ī„Îˇ ÎŧÎŋĪĪ†ÎŽ PKCS12 (.p12, .pfx). Η ÎĩÎšĪƒÎąÎŗĪ‰ÎŗÎŽ/ÎąĪ†ÎąÎ¯ĪÎĩĪƒÎˇ Ī€ÎšĪƒĪ„ÎŋĪ€ÎŋÎšÎˇĪ„ÎšÎēÎŋĪ ÎĩίÎŊιΚ Î´ÎšÎąÎ¸Î­ĪƒÎšÎŧΡ ÎŧΌÎŊÎŋ Ī€ĪÎšÎŊ ÎąĪ€ĪŒ Ī„Îˇ ĪƒĪÎŊδÎĩĪƒÎˇ", + "client_cert_title": "Î ÎšĪƒĪ„ÎŋĪ€ÎŋÎšÎˇĪ„ÎšÎēΌ SSL Ī€ÎĩÎģÎŦĪ„Îˇ [ΠΕΙΡΑΜΑΤΙΚΟ]", "clockwise": "ΔÎĩÎžÎšĪŒĪƒĪ„ĪÎŋĪ†Îą", "close": "ΚÎģÎĩÎ¯ĪƒÎšÎŧÎŋ", "collapse": "ÎŖĪÎŧĪ€Ī„Ī…ÎžÎˇ", "collapse_all": "ÎŖĪÎŧĪ€Ī„Ī…ÎžÎˇ ΌÎģΉÎŊ", "color": "Î§ĪĪŽÎŧÎą", "color_theme": "Î§ĪĪŽÎŧÎą θέÎŧÎąĪ„ÎŋĪ‚", + "command": "ΕÎŊĪ„ÎŋÎģÎŽ", "comment_deleted": "ΤÎŋ ĪƒĪ‡ĪŒÎģΚÎŋ Î´ÎšÎąÎŗĪÎŦĪ†ÎˇÎēÎĩ", "comment_options": "Î•Ī€ÎšÎģÎŋÎŗÎ­Ī‚ ĪƒĪ‡ÎŋÎģίÎŋĪ…", "comments_and_likes": "ÎŖĪ‡ĪŒÎģΚι & ÎąÎŊĪ„ÎšÎ´ĪÎŦ΃ÎĩÎšĪ‚ (likes)", @@ -740,6 +786,7 @@ "create": "ΔηÎŧΚÎŋĪ…ĪÎŗÎ¯Îą", "create_album": "ΔηÎŧΚÎŋĪ…ĪÎŗÎ¯Îą ÎŦÎģÎŧĪ€ÎŋĪ…Îŧ", "create_album_page_untitled": "Î§Ī‰ĪÎ¯Ī‚ Ī„Î¯Ī„ÎģÎŋ", + "create_api_key": "ΔηÎŧΚÎŋĪ…ĪÎŗÎ¯Îą ÎēÎģÎĩΚδΚÎŋĪ API", "create_library": "ΔηÎŧΚÎŋĪ…ĪÎŗÎ¯Îą ΒιβÎģΚÎŋθΎÎēÎˇĪ‚", "create_link": "ΔηÎŧΚÎŋĪ…ĪÎŗÎ¯Îą ĪƒĪ…ÎŊÎ´Î­ĪƒÎŧÎŋĪ…", "create_link_to_share": "ΔηÎŧΚÎŋĪ…ĪÎŗÎ¯Îą ĪƒĪ…ÎŊÎ´Î­ĪƒÎŧÎŋĪ… ÎŗÎšÎą δΚιÎŧÎŋÎšĪÎąĪƒÎŧΌ", @@ -769,6 +816,7 @@ "daily_title_text_date_year": "Ε, MMM dd, yyyy", "dark": "ÎŖÎēÎŋĪĪÎŋ", "dark_theme": "ΕÎŊÎąÎģÎģÎąÎŗÎŽ ΃ÎēÎŋĪ„ÎĩΚÎŊÎŽĪ‚ ÎĩÎŧΆÎŦÎŊÎšĪƒÎˇĪ‚", + "date": "ΗÎŧÎĩ΁ÎŋÎŧΡÎŊÎ¯Îą", "date_after": "ΗÎŧÎĩ΁ÎŋÎŧΡÎŊÎ¯Îą ÎŧÎĩĪ„ÎŦ", "date_and_time": "ΗÎŧÎĩ΁ÎŋÎŧΡÎŊÎ¯Îą ÎēιΚ ĪŽĪÎą", "date_before": "ΗÎŧÎĩ΁ÎŋÎŧΡÎŊÎ¯Îą Ī€ĪÎšÎŊ", @@ -943,6 +991,7 @@ "failed_to_unstack_assets": "Î‘Ī€ÎŋĪ„Ī…Ī‡Î¯Îą ĪƒĪ„ÎˇÎŊ ÎąĪ€ÎŋĪƒĪ…ÎŧĪ€Î¯ÎĩĪƒÎˇ ΄ΉÎŊ ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Ī‰ÎŊ", "failed_to_update_notification_status": "Î‘Ī€ÎŋĪ„Ī…Ī‡Î¯Îą ÎĩÎŊΡÎŧÎ­ĪĪ‰ĪƒÎˇĪ‚ Ī„ÎˇĪ‚ ÎēÎąĪ„ÎŦĪƒĪ„ÎąĪƒÎˇĪ‚ ÎĩΚδÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇĪ‚", "incorrect_email_or_password": "ΛαÎŊÎ¸ÎąĪƒÎŧέÎŊÎŋ email ÎŽ ÎēĪ‰Î´ÎšÎēĪŒĪ‚ Ī€ĪĪŒĪƒÎ˛ÎąĪƒÎˇĪ‚", + "library_folder_already_exists": "Η Î´ÎšÎąÎ´ĪÎŋÎŧÎŽ ÎĩÎšĪƒÎąÎŗĪ‰ÎŗÎŽĪ‚ Ī…Ī€ÎŦ΁·ÎĩΚ ΎδΡ.", "paths_validation_failed": "{paths, plural, one {# Î´ÎšÎąÎ´ĪÎŋÎŧÎŽ} other {# Î´ÎšÎąÎ´ĪÎŋÎŧÎ­Ī‚}} ÎąĪ€Î­Ī„Ī…Ī‡ÎąÎŊ ÎēÎąĪ„ÎŦ Ī„ÎˇÎŊ ÎĩĪ€ÎšÎēĪĪĪ‰ĪƒÎˇ", "profile_picture_transparent_pixels": "Οι ÎĩΚÎēΌÎŊÎĩĪ‚ ΀΁ÎŋĪ†Î¯Îģ δÎĩÎŊ ÎŧĪ€Îŋ΁ÎŋĪÎŊ ÎŊÎą Î­Ī‡ÎŋĪ…ÎŊ Î´ÎšÎąĪ†ÎąÎŊÎŽ ÎĩΚÎēÎŋÎŊÎŋĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Îą. Î ÎąĪÎąÎēÎąÎģĪŽ ÎŧÎĩÎŗÎĩÎ¸ĪÎŊÎĩĪ„Îĩ ÎŽ/ÎēιΚ ÎŧÎĩĪ„ÎąÎēΚÎŊÎŽĪƒĪ„Îĩ Ī„ÎˇÎŊ ÎĩΚÎēΌÎŊÎą.", "quota_higher_than_disk_size": "ÎˆĪ‡ÎĩĪ„Îĩ ÎŋĪÎ¯ĪƒÎĩΚ έÎŊÎą ĪŒĪÎšÎŋ, ÎŧÎĩÎŗÎąÎģĪĪ„Îĩ΁Îŋ ÎąĪ€ĪŒ Ī„Îŋ ÎŧÎ­ÎŗÎĩθÎŋĪ‚ Ī„ÎŋĪ… Î´Î¯ĪƒÎēÎŋĪ…", @@ -1027,6 +1076,7 @@ "unable_to_update_user": "Î‘Î´Ī…ÎŊÎąÎŧÎ¯Îą ÎĩÎŊΡÎŧÎ­ĪĪ‰ĪƒÎˇĪ‚ Ī„ÎŋĪ… Ī‡ĪÎŽĪƒĪ„Îˇ", "unable_to_upload_file": "Î‘Î´Ī…ÎŊÎąÎŧÎ¯Îą ÎŧÎĩĪ„ÎąĪ†ĪŒĪĪ„Ī‰ĪƒÎˇĪ‚ ÎąĪĪ‡ÎĩίÎŋĪ…" }, + "exclusion_pattern": "ΜÎŋĪ„Î¯Î˛Îŋ ÎąĪ€ÎŋÎēÎģÎĩÎšĪƒÎŧÎŋĪ", "exif": "ΜÎĩĪ„ÎąÎ´ÎĩδÎŋÎŧέÎŊÎą Exif", "exif_bottom_sheet_description": "Î ĪÎŋĪƒÎ¸ÎŽÎēΡ ΠÎĩĪÎšÎŗĪÎąĪ†ÎŽĪ‚...", "exif_bottom_sheet_description_error": "ÎŖĪ†ÎŦÎģÎŧÎą ÎēÎąĪ„ÎŦ Ī„ÎˇÎŊ ÎĩÎŊΡÎŧÎ­ĪĪ‰ĪƒÎˇ Ī„ÎˇĪ‚ Ī€ÎĩĪÎšÎŗĪÎąĪ†ÎŽĪ‚", @@ -1057,6 +1107,7 @@ "external_network_sheet_info": "ÎŒĪ„ÎąÎŊ δÎĩÎŊ ÎĩÎ¯ĪƒĪ„Îĩ ĪƒĪ…ÎŊδÎĩδÎĩÎŧέÎŊÎŋΚ ĪƒĪ„Îŋ ΀΁ÎŋĪ„ÎšÎŧĪŽÎŧÎĩÎŊÎŋ δίÎē΄΅Îŋ Wi-Fi, Ρ ÎĩĪ†ÎąĪÎŧÎŋÎŗÎŽ θι ĪƒĪ…ÎŊδÎĩθÎĩί ÎŧÎĩ Ī„ÎŋÎŊ δΚιÎēÎŋÎŧÎšĪƒĪ„ÎŽ ÎŧÎ­ĪƒĪ‰ Ī„ÎŋĪ… Ī€ĪĪŽĪ„ÎŋĪ… ÎąĪ€ĪŒ Ī„Îą Ī€ÎąĪÎąÎēÎŦ΄Ή URLs Ī€ÎŋĪ… ÎŧĪ€Îŋ΁Îĩί ÎŊÎą Î˛ĪÎĩΚ Î´ÎšÎąÎ¸Î­ĪƒÎšÎŧÎŋ, ΞÎĩÎēΚÎŊĪŽÎŊĪ„ÎąĪ‚ ÎąĪ€ĪŒ Ī„Îŋ Ī€ÎŦÎŊΉ ΀΁ÎŋĪ‚ Ī„Îŋ ÎēÎŦ΄Ή", "face_unassigned": "Μη ÎąÎŊÎąĪ„ÎĩθÎĩΚÎŧέÎŊÎŋ", "failed": "Î‘Ī€Î­Ī„Ī…Ī‡Îĩ", + "failed_count": "Î‘Ī€ÎŋĪ„Ī…Ī‡ÎˇÎŧέÎŊÎą: {count}", "failed_to_authenticate": "Î‘Ī€ÎŋĪ„Ī…Ī‡Î¯Îą Ī„ÎąĪ…Ī„ÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇĪ‚", "failed_to_load_assets": "Î‘Ī€ÎŋĪ„Ī…Ī‡Î¯Îą Ī†ĪŒĪĪ„Ī‰ĪƒÎˇĪ‚ ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Ī‰ÎŊ", "failed_to_load_folder": "Î‘Ī€ÎŋĪ„Ī…Ī‡Î¯Îą Ī†ĪŒĪĪ„Ī‰ĪƒÎˇĪ‚ Ī†ÎąÎēέÎģÎŋĪ…", @@ -1071,6 +1122,7 @@ "features_setting_description": "Î”ÎšÎąĪ‡ÎĩÎšĪÎšĪƒĪ„ÎĩÎ¯Ī„Îĩ Ī„Îą Ī‡ÎąĪÎąÎēĪ„ÎˇĪÎšĪƒĪ„ÎšÎēÎŦ Ī„ÎˇĪ‚ ÎĩĪ†ÎąĪÎŧÎŋÎŗÎŽĪ‚", "file_name": "ΌÎŊÎŋÎŧÎą ÎąĪĪ‡ÎĩίÎŋĪ…", "file_name_or_extension": "ΌÎŊÎŋÎŧÎą ÎąĪĪ‡ÎĩίÎŋĪ… ÎŽ ÎĩĪ€Î­ÎēĪ„ÎąĪƒÎˇ", + "file_size": "ÎœÎ­ÎŗÎĩθÎŋĪ‚ ÎąĪĪ‡ÎĩίÎŋĪ…", "filename": "ΟÎŊÎŋÎŧÎąĪƒÎ¯Îą ÎąĪĪ‡ÎĩίÎŋĪ…", "filetype": "Î¤ĪĪ€ÎŋĪ‚ ÎąĪĪ‡ÎĩίÎŋĪ…", "filter": "ÎĻίÎģ΄΁Îŋ", @@ -1085,6 +1137,7 @@ "folders_feature_description": "ΠÎĩĪÎšÎŽÎŗÎˇĪƒÎˇ ĪƒĪ„ÎˇÎŊ ΀΁ÎŋβÎŋÎģÎŽ Ī†ÎąÎēέÎģÎŋĪ… ÎŗÎšÎą Ī„ÎšĪ‚ ΆΉ΄ÎŋÎŗĪÎąĪ†Î¯ÎĩĪ‚ ÎēιΚ Ī„Îą Î˛Î¯ÎŊĪ„ÎĩÎŋ ĪƒĪ„Îŋ ĪƒĪĪƒĪ„ÎˇÎŧÎą ÎąĪĪ‡ÎĩÎ¯Ī‰ÎŊ", "forgot_pin_code_question": "ΞÎĩ·ÎŦĪƒÎąĪ„Îĩ Ī„Îŋ PIN;", "forward": "Î ĪÎŋĪ‚ Ī„Îą ÎĩÎŧĪ€ĪĪŒĪ‚", + "full_path": "ΠÎģÎŽĪÎˇĪ‚ Î´ÎšÎąÎ´ĪÎŋÎŧÎŽ: {path}", "gcast_enabled": "ΜÎĩĪ„ÎŦδÎŋĪƒÎˇ Ī€ÎĩĪÎšÎĩ·ÎŋÎŧέÎŊÎŋĪ… Google Cast", "gcast_enabled_description": "Î‘Ī…Ī„ĪŒ Ī„Îŋ Ī‡ÎąĪÎąÎēĪ„ÎˇĪÎšĪƒĪ„ÎšÎēΌ ΆÎŋĪĪ„ĪŽÎŊÎĩΚ ÎĩÎžĪ‰Ī„ÎĩĪÎšÎēÎŋĪĪ‚ Ī€ĪŒĪÎŋĪ…Ī‚ ÎąĪ€ĪŒ Ī„Îˇ Google ÎŗÎšÎą ÎŊÎą ÎģÎĩÎšĪ„ÎŋĪ…ĪÎŗÎŽĪƒÎĩΚ.", "general": "ΓÎĩÎŊΚÎēÎŦ", @@ -1110,17 +1163,19 @@ "hash_asset": "ÎšÎąĪ„ÎąÎēÎĩ΁ÎŧÎąĪ„ÎšĪƒÎŧĪŒĪ‚ ĪƒĪ„ÎŋÎšĪ‡ÎĩίÎŋĪ…", "hashed_assets": "ÎšÎąĪ„ÎąÎēÎĩ΁ÎŧÎąĪ„ÎšĪƒÎŧέÎŊÎą ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Îą", "hashing": "ÎšÎąĪ„ÎąÎēÎĩ΁ÎŧÎąĪ„ÎšĪƒÎŧĪŒĪ‚", - "header_settings_add_header_tip": "Î ĪÎŋĪƒÎ¸ÎŽÎēΡ ΚÎĩĪ†ÎąÎģÎ¯Î´ÎąĪ‚", + "header_settings_add_header_tip": "Î ĪÎŋĪƒÎ¸ÎŽÎēΡ header", "header_settings_field_validator_msg": "Η Ī„ÎšÎŧÎŽ δÎĩÎŊ ÎŧĪ€Îŋ΁Îĩί ÎŊÎą ÎĩίÎŊιΚ ÎēÎĩÎŊÎŽ", "header_settings_header_name_input": "ΌÎŊÎŋÎŧÎą ÎēÎĩĪ†ÎąÎģÎ¯Î´ÎąĪ‚", "header_settings_header_value_input": "ΤΚÎŧÎŽ ÎēÎĩĪ†ÎąÎģÎ¯Î´ÎąĪ‚", "headers_settings_tile_title": "Î ĪÎŋĪƒÎąĪÎŧÎŋ΃ÎŧέÎŊÎĩĪ‚ ÎēÎĩĪ†ÎąÎģίδÎĩĪ‚ δΚιÎēÎŋÎŧÎšĪƒĪ„ÎŽ ÎŧÎĩ΃ÎŋÎģÎŦÎ˛ÎˇĪƒÎˇĪ‚", + "height": "ÎŽĪˆÎŋĪ‚", "hi_user": "ΓÎĩΚÎŦ ΃ÎŋĪ… {name} {email}", "hide_all_people": "Î‘Ī€ĪŒÎēĪĪ…ĪˆÎˇ ΌÎģΉÎŊ ΄ΉÎŊ ÎąĪ„ĪŒÎŧΉÎŊ", "hide_gallery": "Î‘Ī€ĪŒÎēĪĪ…ĪˆÎˇ ÎŗÎēÎąÎģÎĩĪÎ¯", "hide_named_person": "Î‘Ī€ĪŒÎēĪĪ…ĪˆÎˇ Ī„ÎŋĪ… ÎąĪ„ĪŒÎŧÎŋĪ… {name}", "hide_password": "Î‘Ī€ĪŒÎēĪĪ…ĪˆÎˇ ÎēĪ‰Î´ÎšÎēÎŋĪ Ī€ĪĪŒĪƒÎ˛ÎąĪƒÎˇĪ‚", "hide_person": "Î‘Ī€ĪŒÎēĪĪ…ĪˆÎˇ ÎąĪ„ĪŒÎŧÎŋĪ…", + "hide_text_recognition": "Î‘Ī€ĪŒÎēĪĪ…ĪˆÎˇ ÎąÎŊÎąÎŗÎŊĪŽĪÎšĪƒÎˇĪ‚ ÎēÎĩΚÎŧέÎŊÎŋĪ…", "hide_unnamed_people": "Î‘Ī€ĪŒÎēĪĪ…ĪˆÎˇ ÎąĪ„ĪŒÎŧΉÎŊ Ī‡Ī‰ĪÎ¯Ī‚ ΌÎŊÎŋÎŧÎą", "home_page_add_to_album_conflicts": "Î ĪÎŋĪƒĪ„Î­Î¸ÎˇÎēÎąÎŊ {added} ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Îą ĪƒĪ„Îŋ ÎŦÎģÎŧĪ€ÎŋĪ…Îŧ {album}. {failed} ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Îą Ī…Ī€ÎŦ΁·ÎŋĪ…ÎŊ ΎδΡ ĪƒĪ„Îŋ ÎŦÎģÎŧĪ€ÎŋĪ…Îŧ.", "home_page_add_to_album_err_local": "ΔÎĩÎŊ ÎĩίÎŊιΚ ÎąÎēΌÎŧΡ Î´Ī…ÎŊÎąĪ„ÎŽ Ρ ΀΁ÎŋĪƒÎ¸ÎŽÎēΡ Ī„ÎŋĪ€ÎšÎēĪŽÎŊ ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Ī‰ÎŊ ΃Îĩ ÎŦÎģÎŧĪ€ÎŋĪ…Îŧ, Ī€ÎąĪÎŦβÎģÎĩĪˆÎˇ", @@ -1166,6 +1221,8 @@ "import_path": "Î•ÎšĪƒÎąÎŗĪ‰ÎŗÎŽ Î´ÎšÎąÎ´ĪÎŋÎŧÎŽĪ‚", "in_albums": "ÎœÎ­ĪƒÎą ΃Îĩ {count, plural, one {# ÎŦÎģÎŧĪ€ÎŋĪ…Îŧ} other {# ÎŦÎģÎŧĪ€ÎŋĪ…Îŧ}}", "in_archive": "ÎœÎ­ĪƒÎą ĪƒĪ„Îą ÎąĪĪ‡ÎĩΚÎŋθÎĩĪ„ÎˇÎŧέÎŊÎą", + "in_year": "ÎŖÎĩ {year}", + "in_year_selector": "ÎŖÎĩ", "include_archived": "ÎŖĪ…ÎŧĪ€ÎĩĪÎ¯ÎģÎˇĪˆÎˇ ÎąĪĪ‡ÎĩΚÎŋθÎĩĪ„ÎˇÎŧέÎŊΉÎŊ", "include_shared_albums": "ÎŖĪ…ÎŧĪ€ÎĩĪÎ¯ÎģÎˇĪˆÎˇ δΚιÎŧÎŋÎšĪÎąĪƒÎŧέÎŊΉÎŊ ÎŦÎģÎŧĪ€ÎŋĪ…Îŧ", "include_shared_partner_assets": "ÎŖĪ…ÎŧĪ€ÎĩĪÎ¯ÎģÎˇĪˆÎˇ ΄ΉÎŊ ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Ī‰ÎŊ ΄ΉÎŊ ĪƒĪ…ÎŊÎĩĪÎŗÎąĪ„ĪŽÎŊ Ī€ÎŋĪ… Î­Ī‡ÎŋĪ…ÎŊ ÎēÎŋΚÎŊÎŋĪ€ÎŋΚΡθÎĩί", @@ -1202,6 +1259,7 @@ "language_setting_description": "Î•Ī€ÎšÎģÎ­ÎžĪ„Îĩ Ī„Îˇ ÎŗÎģĪŽĪƒĪƒÎą Ī€ÎŋĪ… ΀΁ÎŋĪ„ÎšÎŧÎŦĪ„Îĩ", "large_files": "ΜÎĩÎŗÎŦÎģÎą Î‘ĪĪ‡ÎĩÎ¯Îą", "last": "ΤÎĩÎģÎĩĪ…Ī„ÎąÎ¯Îą", + "last_months": "{count, plural, one {ΤÎŋÎŊ ΀΁ÎŋÎˇÎŗÎŋĪÎŧÎĩÎŊÎŋ ÎŧÎŽÎŊÎą} other {ΤÎŋĪ…Ī‚ Ī„ÎĩÎģÎĩĪ…Ī„ÎąÎ¯ÎŋĪ…Ī‚ # ÎŧÎŽÎŊÎĩĪ‚}}", "last_seen": "ΤÎĩÎģÎĩĪ…Ī„ÎąÎ¯Îą ΀΁ÎŋβÎŋÎģÎŽ", "latest_version": "ΤÎĩÎģÎĩĪ…Ī„ÎąÎ¯Îą ΈÎēδÎŋĪƒÎˇ", "latitude": "ΓÎĩĪ‰ÎŗĪÎąĪ†ÎšÎēΌ Ī€ÎģÎŦĪ„ÎŋĪ‚", @@ -1211,6 +1269,8 @@ "let_others_respond": "Î•Ī€Î­Ī„ĪÎĩΈÎĩ ΃Îĩ ÎŦÎģÎģÎŋĪ…Ī‚ ÎŊÎą ÎąĪ€ÎąÎŊĪ„ÎŽĪƒÎŋĪ…ÎŊ", "level": "Î•Ī€Î¯Ī€ÎĩδÎŋ", "library": "ΒιβÎģΚÎŋθΎÎēΡ", + "library_add_folder": "Î ĪÎŋĪƒÎ¸ÎŽÎēΡ Ī†ÎąÎēέÎģÎŋĪ…", + "library_edit_folder": "Î•Ī€ÎĩΞÎĩĪÎŗÎąĪƒÎ¯Îą Ī†ÎąÎēέÎģÎŋĪ…", "library_options": "Î•Ī€ÎšÎģÎŋÎŗÎ­Ī‚ βΚβÎģΚÎŋθΎÎēÎˇĪ‚", "library_page_device_albums": "ΆÎģÎŧĪ€ÎŋĪ…Îŧ ĪƒĪ„Îˇ ÎŖĪ…ĪƒÎēÎĩĪ…ÎŽ", "library_page_new_album": "ΝέÎŋ ÎŦÎģÎŧĪ€ÎŋĪ…Îŧ", @@ -1231,9 +1291,11 @@ "local": "ΤÎŋĪ€ÎšÎēÎŦ", "local_asset_cast_failed": "Î‘Î´Ī…ÎŊÎąÎŧÎ¯Îą ÎŧÎĩĪ„ÎŦδÎŋĪƒÎˇĪ‚ ĪƒĪ„ÎŋÎšĪ‡ÎĩίÎŋĪ… Ī€ÎŋĪ… δÎĩÎŊ Î­Ī‡ÎĩΚ ÎąÎŊέβÎĩΚ ĪƒĪ„ÎŋÎŊ δΚιÎēÎŋÎŧÎšĪƒĪ„ÎŽ", "local_assets": "ΤÎŋĪ€ÎšÎēÎŦ ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Îą", + "local_id": "ΤÎŋĪ€ÎšÎēΌ ÎąÎŊÎąÎŗÎŊĪ‰ĪÎšĪƒĪ„ÎšÎēΌ", "local_media_summary": "ΠÎĩĪÎ¯ÎģÎˇĪˆÎˇ Ī„ÎŋĪ€ÎšÎēĪŽÎŊ Ī€ÎŋÎģĪ…ÎŧÎ­ĪƒĪ‰ÎŊ", "local_network": "ΤÎŋĪ€ÎšÎēΌ δίÎē΄΅Îŋ", "local_network_sheet_info": "Η ÎĩĪ†ÎąĪÎŧÎŋÎŗÎŽ θι ĪƒĪ…ÎŊδÎĩθÎĩί ÎŧÎĩ Ī„ÎŋÎŊ δΚιÎēÎŋÎŧÎšĪƒĪ„ÎŽ ÎŧÎ­ĪƒĪ‰ ÎąĪ…Ī„ÎŋĪ Ī„ÎŋĪ… URL ĪŒĪ„ÎąÎŊ Ī‡ĪÎˇĪƒÎšÎŧÎŋĪ€ÎŋΚÎĩÎ¯Ī„ÎąÎš Ī„Îŋ ÎēιθÎŋĪÎšĪƒÎŧέÎŊÎŋ δίÎē΄΅Îŋ Wi-Fi", + "location": "ΤÎŋĪ€ÎŋθÎĩĪƒÎ¯Îą", "location_permission": "ΆδÎĩΚι Ī„ÎŋĪ€ÎŋθÎĩĪƒÎ¯ÎąĪ‚", "location_permission_content": "Για ÎŊÎą Ī‡ĪÎˇĪƒÎšÎŧÎŋĪ€ÎŋΚΡθÎĩί Ρ ÎģÎĩÎšĪ„ÎŋĪ…ĪÎŗÎ¯Îą ÎąĪ…Ī„ĪŒÎŧÎąĪ„ÎˇĪ‚ ÎĩÎŊÎąÎģÎģÎąÎŗÎŽĪ‚, Ī„Îŋ Immich ·΁ÎĩΚÎŦÎļÎĩĪ„ÎąÎš ÎŦδÎĩΚι ÎŗÎšÎą Ī„ÎˇÎŊ ÎąÎēĪÎšÎ˛ÎŽ Ī„ÎŋĪ€ÎŋθÎĩĪƒÎ¯Îą Ī„ÎˇĪ‚ ĪƒĪ…ĪƒÎēÎĩĪ…ÎŽĪ‚ ĪŽĪƒĪ„Îĩ ÎŊÎą ÎŧĪ€Îŋ΁Îĩί ÎŊÎą δΚιβÎŦÎļÎĩΚ Ī„Îŋ ΌÎŊÎŋÎŧÎą Ī„ÎŋĪ… Ī„ĪÎ­Ī‡ÎŋÎŊĪ„ÎŋĪ‚ δΚÎēĪ„ĪÎŋĪ… Wi-Fi", "location_picker_choose_on_map": "Î•Ī€ÎšÎģÎ­ÎžĪ„Îĩ ĪƒĪ„Îŋ ·ÎŦĪĪ„Îˇ", @@ -1281,8 +1343,17 @@ "loop_videos_description": "ΕÎŊÎĩĪÎŗÎŋĪ€ÎŋÎšÎŽĪƒĪ„Îĩ Ī„ÎˇÎŊ ÎąĪ…Ī„ĪŒÎŧÎąĪ„Îˇ ÎĩĪ€ÎąÎŊÎŦÎģÎˇĪˆÎˇ ÎĩÎŊĪŒĪ‚ Î˛Î¯ÎŊĪ„ÎĩÎŋ ĪƒĪ„Îŋ Ī€ĪĪŒÎŗĪÎąÎŧÎŧÎą ΀΁ÎŋβÎŋÎģÎŽĪ‚ ÎģÎĩ΀΄ÎŋÎŧÎĩ΁ÎĩÎšĪŽÎŊ.", "main_branch_warning": "Î§ĪÎˇĪƒÎšÎŧÎŋĪ€ÎŋΚÎĩÎ¯Ī„Îĩ ÎŧΚι έÎēδÎŋĪƒÎˇ ΃Îĩ ÎąÎŊÎŦĪ€Ī„Ī…ÎžÎˇÎ‡ ĪƒĪ…ÎŊÎšĪƒĪ„ÎŋĪÎŧÎĩ ÎąÎŊÎĩĪ€ÎšĪ†ĪÎģÎąÎēĪ„Îą Ī„Îˇ Ī‡ĪÎŽĪƒÎˇ ÎŧÎšÎąĪ‚ Ī„ÎĩÎģΚÎēÎŽĪ‚ έÎēδÎŋĪƒÎˇĪ‚!", "main_menu": "ÎšĪĪÎšÎŋ ÎŧÎĩÎŊÎŋĪ", + "maintenance_description": "ΤÎŋ Immich Î­Ī‡ÎĩΚ Ī„ÎĩθÎĩί ΃Îĩ ÎģÎĩÎšĪ„ÎŋĪ…ĪÎŗÎ¯Îą ĪƒĪ…ÎŊĪ„ÎŽĪÎˇĪƒÎˇĪ‚.", + "maintenance_end": "ΤÎĩ΁ÎŧÎąĪ„ÎšĪƒÎŧĪŒĪ‚ ÎģÎĩÎšĪ„ÎŋĪ…ĪÎŗÎ¯ÎąĪ‚ ĪƒĪ…ÎŊĪ„ÎŽĪÎˇĪƒÎˇĪ‚", + "maintenance_end_error": "Î‘Ī€ÎŋĪ„Ī…Ī‡Î¯Îą Ī„Îĩ΁ÎŧÎąĪ„ÎšĪƒÎŧÎŋĪ Ī„ÎˇĪ‚ ÎģÎĩÎšĪ„ÎŋĪ…ĪÎŗÎ¯ÎąĪ‚ ĪƒĪ…ÎŊĪ„ÎŽĪÎˇĪƒÎˇĪ‚.", + "maintenance_logged_in_as": "Î‘Ī…Ī„ÎŽÎŊ Ī„Îˇ ĪƒĪ„ÎšÎŗÎŧÎŽ ÎĩÎ¯ĪƒĪ„Îĩ ĪƒĪ…ÎŊδÎĩδÎĩÎŧέÎŊÎŋĪ‚ Ή΂ {user}", + "maintenance_title": "Î ĪÎŋĪƒĪ‰ĪÎšÎŊÎŦ ÎŧΡ Î´ÎšÎąÎ¸Î­ĪƒÎšÎŧÎŋ", "make": "ÎšÎąĪ„ÎąĪƒÎēÎĩĪ…ÎąĪƒĪ„ÎŽĪ‚", "manage_geolocation": "Î”ÎšÎąĪ‡ÎĩÎ¯ĪÎšĪƒÎˇ Ī„ÎŋĪ€ÎŋθÎĩĪƒÎ¯ÎąĪ‚", + "manage_media_access_rationale": "Î‘Ī…Ī„ÎŽ Ρ ÎŦδÎĩΚι ÎąĪ€ÎąÎšĪ„ÎĩÎ¯Ī„ÎąÎš ÎŗÎšÎą Ī„Îˇ ĪƒĪ‰ĪƒĪ„ÎŽ ÎŧÎĩĪ„ÎąÎēίÎŊÎˇĪƒÎˇ ΄ΉÎŊ ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Ī‰ÎŊ ĪƒĪ„ÎŋÎŊ ÎēÎŦδÎŋ ÎēιΚ Ī„ÎˇÎŊ ÎĩĪ€ÎąÎŊÎąĪ†Îŋ΁ÎŦ Ī„ÎŋĪ…Ī‚ ÎąĪ€ĪŒ ÎąĪ…Ī„ĪŒÎŊ.", + "manage_media_access_settings": "ΆÎŊÎŋÎšÎŗÎŧÎą ĪĪ…Î¸ÎŧÎ¯ĪƒÎĩΉÎŊ", + "manage_media_access_subtitle": "Î•Ī€Î¯Ī„ĪÎĩĪˆĪ„Îĩ ĪƒĪ„ÎˇÎŊ ÎĩĪ†ÎąĪÎŧÎŋÎŗÎŽ Immich ÎŊÎą Î´ÎšÎąĪ‡ÎĩÎšĪÎ¯ÎļÎĩĪ„ÎąÎš ÎēιΚ ÎŊÎą ÎŧÎĩĪ„ÎąÎēΚÎŊÎĩί ÎąĪĪ‡ÎĩÎ¯Îą Ī€ÎŋÎģĪ…ÎŧÎ­ĪƒĪ‰ÎŊ.", + "manage_media_access_title": "Î ĪĪŒĪƒÎ˛ÎąĪƒÎˇ Î”ÎšÎąĪ‡ÎĩÎ¯ĪÎšĪƒÎˇĪ‚ ΠÎŋÎģĪ…ÎŧÎ­ĪƒĪ‰ÎŊ", "manage_shared_links": "Î”ÎšÎąĪ‡ÎĩÎ¯ĪÎšĪƒÎˇ ÎēÎŋΚÎŊĪŒĪ‡ĪÎˇĪƒĪ„Ī‰ÎŊ ĪƒĪ…ÎŊÎ´Î­ĪƒÎŧΉÎŊ", "manage_sharing_with_partners": "Î”ÎšÎąĪ‡ÎĩÎšĪÎšĪƒĪ„ÎĩÎ¯Ī„Îĩ Ī„ÎˇÎŊ ÎēÎŋΚÎŊÎŽ Ī‡ĪÎŽĪƒÎˇ ÎŧÎĩ ĪƒĪ…ÎŊÎĩĪÎŗÎŦĪ„ÎĩĪ‚", "manage_the_app_settings": "Î”ÎšÎąĪ‡ÎĩÎšĪÎšĪƒĪ„ÎĩÎ¯Ī„Îĩ Ī„ÎšĪ‚ ĪĪ…Î¸ÎŧÎ¯ĪƒÎĩÎšĪ‚ Ī„ÎˇĪ‚ ÎĩĪ†ÎąĪÎŧÎŋÎŗÎŽĪ‚", @@ -1339,13 +1410,14 @@ "minutes": "ΛÎĩ΀΄ÎŦ", "missing": "ÎŒĪƒÎą ΛÎĩÎ¯Ī€ÎŋĪ…ÎŊ", "mobile_app": "Î•Ī†ÎąĪÎŧÎŋÎŗÎŽ ÎŗÎšÎą ÎēΚÎŊÎˇĪ„ÎŦ", - "mobile_app_download_onboarding_note": "ÎœĪ€Îŋ΁ÎĩÎ¯Ī„Îĩ ÎŊÎą ÎąĪ€ÎŋÎēĪ„ÎŽĪƒÎĩĪ„Îĩ ΞιÎŊÎŦ Ī€ĪĪŒĪƒÎ˛ÎąĪƒÎˇ ΃Îĩ ÎąĪ…Ī„Î­Ī‚ Ī„ÎšĪ‚ ÎĩĪ€ÎšÎģÎŋÎŗÎ­Ī‚ ÎąĪ€ĪŒ Ī„Îˇ ΃ÎĩÎģÎ¯Î´Îą ΒÎŋΡθΎÎŧÎąĪ„Îą.", + "mobile_app_download_onboarding_note": "ÎšÎąĪ„Î­Î˛ÎąĪƒÎĩ Ī„ÎˇÎŊ ĪƒĪ…ÎŊÎŋδÎĩĪ…Ī„ÎšÎēÎŽ ÎĩĪ†ÎąĪÎŧÎŋÎŗÎŽ ÎŗÎšÎą ÎēΚÎŊÎˇĪ„ÎŦ Ī‡ĪÎˇĪƒÎšÎŧÎŋĪ€ÎŋÎšĪŽÎŊĪ„ÎąĪ‚ Ī„ÎšĪ‚ Ī€ÎąĪÎąÎēÎŦ΄Ή ÎĩĪ€ÎšÎģÎŋÎŗÎ­Ī‚", "model": "ΜÎŋÎŊĪ„Î­ÎģÎŋ", "month": "ΜήÎŊÎąĪ‚", "monthly_title_text_date_format": "ΜΜΜΜ y", "more": "ΠÎĩĪÎšĪƒĪƒĪŒĪ„ÎĩĪÎą", "move": "ΜÎĩĪ„ÎąÎēίÎŊÎˇĪƒÎˇ", "move_off_locked_folder": "ΜÎĩĪ„ÎąÎēίÎŊÎˇĪƒÎˇ Î­ÎžĪ‰ ÎąĪ€ĪŒ Ī„ÎŋÎŊ ÎēÎģÎĩÎšÎ´Ī‰ÎŧέÎŊÎŋ ΆÎŦÎēÎĩÎģÎŋ", + "move_to": "ΜÎĩĪ„ÎąÎēίÎŊÎˇĪƒÎˇ ΃Îĩ", "move_to_lock_folder_action_prompt": "Î ĪÎŋĪƒĪ„Î­Î¸ÎˇÎēÎąÎŊ {count} ĪƒĪ„ÎŋÎŊ ÎēÎģÎĩÎšÎ´Ī‰ÎŧέÎŊÎŋ ΆÎŦÎēÎĩÎģÎŋ", "move_to_locked_folder": "ΜÎĩĪ„ÎąÎēίÎŊÎˇĪƒÎˇ ΃Îĩ ÎēÎģÎĩÎšÎ´Ī‰ÎŧέÎŊÎŋ ΆÎŦÎēÎĩÎģÎŋ", "move_to_locked_folder_confirmation": "Î‘Ī…Ī„Î­Ī‚ ÎŋΚ ΆΉ΄ÎŋÎŗĪÎąĪ†Î¯ÎĩĪ‚ ÎēιΚ Ī„Îą Î˛Î¯ÎŊĪ„ÎĩÎŋ θι ÎąĪ†ÎąÎšĪÎĩθÎŋĪÎŊ ÎąĪ€ĪŒ ΌÎģÎą Ī„Îą ÎŦÎģÎŧĪ€ÎŋĪ…Îŧ ÎēιΚ θι ÎŧĪ€Îŋ΁ÎŋĪÎŊ ÎŊÎą ΀΁ÎŋβÎģΡθÎŋĪÎŊ ÎŧΌÎŊÎŋ ÎąĪ€ĪŒ Ī„ÎŋÎŊ ÎēÎģÎĩÎšÎ´Ī‰ÎŧέÎŊÎŋ ΆÎŦÎēÎĩÎģÎŋ", @@ -1375,6 +1447,7 @@ "new_pin_code": "ΝέÎŋĪ‚ ÎēĪ‰Î´ÎšÎēĪŒĪ‚ PIN", "new_pin_code_subtitle": "Î‘Ī…Ī„ÎŽ ÎĩίÎŊιΚ Ρ Ī€ĪĪŽĪ„Îˇ ΆÎŋ΁ÎŦ Ī€ÎŋĪ… ÎąĪ€ÎŋÎēĪ„ÎŦĪ„Îĩ Ī€ĪĪŒĪƒÎ˛ÎąĪƒÎˇ ĪƒĪ„ÎŋÎŊ ÎēÎģÎĩÎšÎ´Ī‰ÎŧέÎŊÎŋ ΆÎŦÎēÎĩÎģÎŋ. ΔηÎŧΚÎŋĪ…ĪÎŗÎŽĪƒĪ„Îĩ έÎŊÎąÎŊ ÎēĪ‰Î´ÎšÎēΌ PIN ÎŗÎšÎą ÎąĪƒĪ†ÎąÎģÎŽ Ī€ĪĪŒĪƒÎ˛ÎąĪƒÎˇ ΃Îĩ ÎąĪ…Ī„ÎŽ Ī„Îˇ ΃ÎĩÎģÎ¯Î´Îą", "new_timeline": "ΝέÎŋ Î§ĪÎŋÎŊÎŋÎģĪŒÎŗÎšÎŋ", + "new_update": "Νέα ÎĩÎŊΡÎŧÎ­ĪĪ‰ĪƒÎˇ", "new_user_created": "Ο ÎŊέÎŋĪ‚ Ī‡ĪÎŽĪƒĪ„ÎˇĪ‚ δΡÎŧΚÎŋĪ…ĪÎŗÎŽÎ¸ÎˇÎēÎĩ", "new_version_available": "Î”Î™Î‘Î˜Î•ÎŖÎ™ÎœÎ— ΝΕΑ Î•ÎšÎ”ÎŸÎŖÎ—", "newest_first": "Τι ÎŊÎĩĪŒĪ„ÎĩĪÎą Ī€ĪĪŽĪ„Îą", @@ -1390,12 +1463,14 @@ "no_cast_devices_found": "ΔÎĩ Î˛ĪÎ­Î¸ÎˇÎēÎąÎŊ ĪƒĪ…ĪƒÎēÎĩĪ…Î­Ī‚ ÎŧÎĩĪ„ÎŦδÎŋĪƒÎˇĪ‚", "no_checksum_local": "ΔÎĩÎŊ Ī…Ī€ÎŦ΁·ÎĩΚ Î´ÎšÎąÎ¸Î­ĪƒÎšÎŧÎŋ checksum ÎŗÎšÎą έÎģÎĩÎŗĪ‡Îŋ ÎąÎēÎĩĪÎąÎšĪŒĪ„ÎˇĪ„ÎąĪ‚ – δÎĩÎŊ ÎŧĪ€Îŋ΁ÎŋĪÎŊ ÎŊÎą ÎąÎŊÎąÎēĪ„ÎˇÎ¸ÎŋĪÎŊ Ī„Îą Ī„ÎŋĪ€ÎšÎēÎŦ ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Îą", "no_checksum_remote": "ΔÎĩÎŊ Ī…Ī€ÎŦ΁·ÎĩΚ Î´ÎšÎąÎ¸Î­ĪƒÎšÎŧÎŋ checksum ÎŗÎšÎą έÎģÎĩÎŗĪ‡Îŋ ÎąÎēÎĩĪÎąÎšĪŒĪ„ÎˇĪ„ÎąĪ‚ – δÎĩÎŊ ÎŧĪ€Îŋ΁ÎŋĪÎŊ ÎŊÎą ÎąÎŊÎąÎēĪ„ÎˇÎ¸ÎŋĪÎŊ Ī„Îą ÎąĪ€ÎŋÎŧÎąÎēĪĪ…ĪƒÎŧέÎŊÎą ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Îą", + "no_devices": "ΔÎĩÎŊ Ī…Ī€ÎŦ΁·ÎŋĪ…ÎŊ ÎĩΞÎŋĪ…ĪƒÎšÎŋδÎŋĪ„ÎˇÎŧέÎŊÎĩĪ‚ ĪƒĪ…ĪƒÎēÎĩĪ…Î­Ī‚", "no_duplicates_found": "ΔÎĩÎŊ Î˛ĪÎ­Î¸ÎˇÎēÎąÎŊ Î´ÎšĪ€ÎģĪŒĪ„Ī…Ī€Îą.", "no_exif_info_available": "ΚαÎŧÎ¯Îą Ī€ÎģÎˇĪÎŋΆÎŋĪÎ¯Îą exif Î´ÎšÎąÎ¸Î­ĪƒÎšÎŧΡ", "no_explore_results_message": "ΑÎŊÎĩβÎŦĪƒĪ„Îĩ Ī€ÎĩĪÎšĪƒĪƒĪŒĪ„Îĩ΁ÎĩĪ‚ ΆΉ΄ÎŋÎŗĪÎąĪ†Î¯ÎĩĪ‚ ÎŗÎšÎą ÎŊÎą Ī€ÎĩĪÎšÎˇÎŗÎˇÎ¸ÎĩÎ¯Ī„Îĩ ĪƒĪ„Îˇ ĪƒĪ…ÎģÎģÎŋÎŗÎŽ ĪƒÎąĪ‚.", "no_favorites_message": "Î ĪÎŋĪƒÎ¸Î­ĪƒĪ„Îĩ ÎąÎŗÎąĪ€ÎˇÎŧέÎŊÎą ÎŗÎšÎą ÎŊÎą Î˛ĪÎĩÎ¯Ī„Îĩ ÎŗĪÎŽÎŗÎŋĪÎą Ī„ÎšĪ‚ ÎēÎąÎģĪĪ„Îĩ΁ÎĩĪ‚ ΆΉ΄ÎŋÎŗĪÎąĪ†Î¯ÎĩĪ‚ ÎēιΚ Ī„Îą Î˛Î¯ÎŊĪ„ÎĩΌ ĪƒÎąĪ‚", "no_libraries_message": "ΔηÎŧΚÎŋĪ…ĪÎŗÎŽĪƒĪ„Îĩ ÎŧΚι ÎĩÎžĪ‰Ī„ÎĩĪÎšÎēÎŽ βΚβÎģΚÎŋθΎÎēΡ ÎŗÎšÎą ÎŊÎą ΀΁ÎŋβÎŦÎģÎĩĪ„Îĩ Ī„ÎšĪ‚ ΆΉ΄ÎŋÎŗĪÎąĪ†Î¯ÎĩĪ‚ ÎēιΚ Ī„Îą Î˛Î¯ÎŊĪ„ÎĩΌ ĪƒÎąĪ‚", "no_local_assets_found": "ΔÎĩÎŊ Î˛ĪÎ­Î¸ÎˇÎēÎąÎŊ Ī„ÎŋĪ€ÎšÎēÎŦ ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Îą ÎŧÎĩ ÎąĪ…Ī„ĪŒ Ī„Îŋ checksum", + "no_location_set": "Η Ī„ÎŋĪ€ÎŋθÎĩĪƒÎ¯Îą δÎĩÎŊ Î­Ī‡ÎĩΚ ÎŋĪÎšĪƒĪ„Îĩί", "no_locked_photos_message": "Οι ΆΉ΄ÎŋÎŗĪÎąĪ†Î¯ÎĩĪ‚ ÎēιΚ Ī„Îą Î˛Î¯ÎŊĪ„ÎĩÎŋ ĪƒĪ„ÎŋÎŊ ÎēÎģÎĩÎšÎ´Ī‰ÎŧέÎŊÎŋ ΆÎŦÎēÎĩÎģÎŋ, ÎĩίÎŊιΚ Îē΁΅ÎŧÎŧέÎŊÎĩĪ‚ ÎēιΚ δÎĩÎŊ θι ÎĩÎŧĪ†ÎąÎŊίÎļÎŋÎŊĪ„ÎąÎš ÎēÎąĪ„ÎŦ Ī„ÎˇÎŊ Ī€ÎĩĪÎšÎŽÎŗÎˇĪƒÎˇ ÎŽ Ī„ÎˇÎŊ ÎąÎŊÎąÎļÎŽĪ„ÎˇĪƒÎˇ ĪƒĪ„Îˇ βΚβÎģΚÎŋθΎÎēΡ ĪƒÎąĪ‚.", "no_name": "Î§Ī‰ĪÎ¯Ī‚ ΌÎŊÎŋÎŧÎą", "no_notifications": "ΚαÎŧÎ¯Îą ÎĩΚδÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇ", @@ -1406,6 +1481,7 @@ "no_results_description": "ΔÎŋÎēΚÎŧÎŦĪƒĪ„Îĩ έÎŊÎą ĪƒĪ…ÎŊĪŽÎŊĪ…ÎŧÎŋ ÎŽ Ī€ÎšÎŋ ÎŗÎĩÎŊΚÎēÎŽ ÎģέΞΡ-ÎēÎģÎĩΚδί", "no_shared_albums_message": "ΔηÎŧΚÎŋĪ…ĪÎŗÎŽĪƒĪ„Îĩ έÎŊÎą ÎŦÎģÎŧĪ€ÎŋĪ…Îŧ ÎŗÎšÎą ÎŊÎą ÎŧÎŋÎšĪÎŦÎļÎĩĪƒĪ„Îĩ ΆΉ΄ÎŋÎŗĪÎąĪ†Î¯ÎĩĪ‚ ÎēιΚ Î˛Î¯ÎŊĪ„ÎĩÎŋ ÎŧÎĩ ÎŦĪ„ÎŋÎŧÎą ĪƒĪ„Îŋ δίÎēĪ„Ī…ĪŒ ĪƒÎąĪ‚", "no_uploads_in_progress": "ΚαÎŧÎ¯Îą ÎŧÎĩĪ„ÎąĪ†ĪŒĪĪ„Ī‰ĪƒÎˇ ΃Îĩ ÎĩΞέÎģΚΞΡ", + "not_allowed": "ΔÎĩÎŊ ÎĩĪ€ÎšĪ„ĪÎ­Ī€ÎĩĪ„ÎąÎš", "not_available": "Μ/Δ (Μη Î”ÎšÎąÎ¸Î­ĪƒÎšÎŧÎŋ)", "not_in_any_album": "ÎŖÎĩ ÎēÎąÎŊέÎŊÎą ÎŦÎģÎŧĪ€ÎŋĪ…Îŧ", "not_selected": "ΔÎĩÎŊ ÎĩĪ€ÎšÎģÎ­Ī‡Î¸ÎˇÎēÎĩ", @@ -1421,7 +1497,8 @@ "notifications_setting_description": "Î”ÎšÎąĪ‡ÎĩÎ¯ĪÎšĪƒÎˇ ÎĩΚδÎŋĪ€ÎŋÎšÎŽĪƒÎĩΉÎŊ", "oauth": "OAuth", "obtainium_configurator": "ÎĄĪ…Î¸ÎŧÎšĪƒĪ„ÎŽĪ‚ Obtainium", - "obtainium_configurator_instructions": "ΔηÎŧΚÎŋĪ…ĪÎŗÎŽĪƒĪ„Îĩ έÎŊÎą ÎēÎģÎĩΚδί API ÎēιΚ ÎĩĪ€ÎšÎģÎ­ÎžĪ„Îĩ ÎŧΚι Ī€ÎąĪÎąÎģÎģÎąÎŗÎŽ ÎŗÎšÎą ÎŊÎą δΡÎŧΚÎŋĪ…ĪÎŗÎŽĪƒÎĩĪ„Îĩ Ī„ÎŋÎŊ ĪƒĪÎŊδÎĩ΃ÎŧÎŋ ĪƒÎąĪ‚ ĪĪÎ¸ÎŧÎšĪƒÎˇĪ‚ Obtainium.", + "obtainium_configurator_instructions": "Î§ĪÎˇĪƒÎšÎŧÎŋĪ€ÎŋÎ¯ÎˇĪƒÎĩ Ī„Îŋ Obtainium ÎŗÎšÎą ÎŊÎą ÎĩÎŗÎēÎąĪ„ÎąĪƒĪ„ÎŽĪƒÎĩÎšĪ‚ ÎēιΚ ÎŊÎą ÎĩÎŊΡÎŧÎĩĪĪŽĪƒÎĩÎšĪ‚ ÎąĪ€ÎĩĪ…Î¸ÎĩÎ¯ÎąĪ‚ Ī„ÎˇÎŊ ÎĩĪ†ÎąĪÎŧÎŋÎŗÎŽ Android ÎąĪ€ĪŒ Ī„Îą ÎēĪ…ÎēÎģÎŋΆÎŋĪÎ¯ÎĩĪ‚ Ī„ÎŋĪ… Immich ĪƒĪ„Îŋ GitHub. ΔηÎŧΚÎŋĪĪÎŗÎˇĪƒÎĩ έÎŊÎą API key ÎēιΚ ÎĩĪ€Î­ÎģÎĩΞÎĩ ÎŧΚι Ī€ÎąĪÎąÎģÎģÎąÎŗÎŽ ÎŗÎšÎą ÎŊÎą δΡÎŧΚÎŋĪ…ĪÎŗÎŽĪƒÎĩÎšĪ‚ Ī„Îŋ ĪƒĪÎŊδÎĩ΃ÎŧÎŋ ĪĪÎ¸ÎŧÎšĪƒÎˇĪ‚ Ī„ÎŋĪ… Obtainium", + "ocr": "OCR", "official_immich_resources": "Î•Ī€Î¯ĪƒÎˇÎŧÎŋΚ Î ĪŒĪÎŋΚ Ī„ÎŋĪ… Immich", "offline": "ΕÎēĪ„ĪŒĪ‚ ĪƒĪÎŊδÎĩĪƒÎˇĪ‚", "offset": "ΜÎĩĪ„ÎąĪ„ĪŒĪ€ÎšĪƒÎˇ", @@ -1453,6 +1530,7 @@ "other_variables": "ΆÎģÎģÎĩĪ‚ ÎŧÎĩĪ„ÎąÎ˛ÎģÎˇĪ„Î­Ī‚", "owned": "ΔιÎēÎŦ ÎŧÎŋĪ…", "owner": "ΚÎŦĪ„Îŋ·ÎŋĪ‚", + "page": "ÎŖÎĩÎģÎ¯Î´Îą", "partner": "ÎŖĪ…ÎŊÎĩĪÎŗÎŦĪ„ÎˇĪ‚", "partner_can_access": "Ο Ī‡ĪÎŽĪƒĪ„ÎˇĪ‚ {partner} Î­Ī‡ÎĩΚ Ī€ĪĪŒĪƒÎ˛ÎąĪƒÎˇ", "partner_can_access_assets": "ΌÎģÎĩĪ‚ ÎŋΚ ΆΉ΄ÎŋÎŗĪÎąĪ†Î¯ÎĩĪ‚ ÎēιΚ Ī„Îą Î˛Î¯ÎŊĪ„ÎĩΌ ĪƒÎąĪ‚ ÎĩÎēĪ„ĪŒĪ‚ ÎąĪ€ĪŒ ÎąĪ…Ī„ÎŦ Ī€ÎŋĪ… Î˛ĪÎ¯ĪƒÎēÎŋÎŊĪ„ÎąÎš ĪƒĪ„Îŋ Î‘ĪĪ‡ÎĩίÎŋ ÎēιΚ Ī„Îą ΔιÎĩÎŗĪÎąÎŧÎŧέÎŊÎą", @@ -1515,17 +1593,22 @@ "photos_count": "{count, plural, one {{count, number} ÎĻΉ΄ÎŋÎŗĪÎąĪ†Î¯Îą} other {{count, number} ÎĻΉ΄ÎŋÎŗĪÎąĪ†Î¯ÎĩĪ‚}}", "photos_from_previous_years": "ÎĻΉ΄ÎŋÎŗĪÎąĪ†Î¯ÎĩĪ‚ ΀΁ÎŋÎˇÎŗÎŋĪÎŧÎĩÎŊΉÎŊ ÎĩĪ„ĪŽÎŊ", "pick_a_location": "Î•Ī€ÎšÎģÎ­ÎžĪ„Îĩ ÎŧΚι Ī„ÎŋĪ€ÎŋθÎĩĪƒÎ¯Îą", + "pick_custom_range": "Î ĪÎŋĪƒÎąĪÎŧÎŋ΃ÎŧέÎŊÎŋ ÎĩĪĪÎŋĪ‚", + "pick_date_range": "Î•Ī€ÎšÎģÎ­ÎžĪ„Îĩ ÎĩĪĪÎŋĪ‚ ΡÎŧÎĩ΁ÎŋÎŧΡÎŊÎšĪŽÎŊ", "pin_code_changed_successfully": "Î•Ī€ÎšĪ„Ī…Ī‡ÎŽĪ‚ ÎąÎģÎģÎąÎŗÎŽ ÎēĪ‰Î´ÎšÎēÎŋĪ PIN", "pin_code_reset_successfully": "Î•Ī€ÎšĪ„Ī…Ī‡ÎŽĪ‚ ÎĩĪ€ÎąÎŊÎąĪ†Îŋ΁ÎŦ ÎēĪ‰Î´ÎšÎēÎŋĪ PIN", "pin_code_setup_successfully": "Î•Ī€ÎšĪ„Ī…Ī‡ÎŽĪ‚ ĪĪÎ¸ÎŧÎšĪƒÎˇ ÎēĪ‰Î´ÎšÎēÎŋĪ PIN", "pin_verification": "Î•Ī€ÎšÎ˛ÎĩÎ˛ÎąÎ¯Ī‰ĪƒÎˇ ÎēĪ‰Î´ÎšÎēÎŋĪ PIN", - "place": "ΤÎŋĪ€ÎŋθÎĩĪƒÎ¯Îą", + "place": "ÎœÎ­ĪÎŋĪ‚", "places": "ΤÎŋĪ€ÎŋθÎĩĪƒÎ¯ÎĩĪ‚", "places_count": "{count, plural, one {{count} ΤÎŋĪ€ÎŋθÎĩĪƒÎ¯Îą} other {{count} ΤÎŋĪ€ÎŋθÎĩĪƒÎ¯ÎĩĪ‚}}", "play": "ΑÎŊÎąĪ€ÎąĪÎąÎŗĪ‰ÎŗÎŽ", "play_memories": "ΑÎŊÎąĪ€ÎąĪÎąÎŗĪ‰ÎŗÎŽ ÎąÎŊÎąÎŧÎŊÎŽĪƒÎĩΉÎŊ", "play_motion_photo": "ΑÎŊÎąĪ€ÎąĪÎąÎŗĪ‰ÎŗÎŽ ΚιÎŊÎŋĪÎŧÎĩÎŊÎˇĪ‚ ÎĻΉ΄ÎŋÎŗĪÎąĪ†Î¯ÎąĪ‚", "play_or_pause_video": "ΑÎŊÎąĪ€ÎąĪÎąÎŗĪ‰ÎŗÎŽ ÎŽ Ī€ÎąĪĪƒÎˇ Î˛Î¯ÎŊĪ„ÎĩÎŋ", + "play_original_video": "ΑÎŊÎąĪ€ÎąĪÎąÎŗĪ‰ÎŗÎŽ ÎąĪĪ‡ÎšÎēÎŋĪ Î˛Î¯ÎŊĪ„ÎĩÎŋ", + "play_original_video_setting_description": "Î ĪÎŋĪ„Î¯ÎŧÎˇĪƒÎĩ Ī„ÎˇÎŊ ÎąÎŊÎąĪ€ÎąĪÎąÎŗĪ‰ÎŗÎŽ ΄ΉÎŊ ÎąĪĪ‡ÎšÎēĪŽÎŊ Î˛Î¯ÎŊĪ„ÎĩÎŋ ÎąÎŊĪ„Î¯ ΄ΉÎŊ ÎŧÎĩĪ„ÎąÎēĪ‰Î´ÎšÎēÎŋĪ€ÎŋΚΡÎŧέÎŊΉÎŊ. ΑÎŊ Ī„Îŋ ÎąĪĪ‡ÎšÎēΌ ÎąĪĪ‡ÎĩίÎŋ δÎĩÎŊ ÎĩίÎŊιΚ ĪƒĪ…ÎŧÎ˛ÎąĪ„ĪŒ, Î¯ĪƒĪ‰Ī‚ ÎŊÎą ÎŧΡÎŊ ÎąÎŊÎąĪ€ÎąĪÎąĪ‡Î¸Îĩί ĪƒĪ‰ĪƒĪ„ÎŦ.", + "play_transcoded_video": "ΑÎŊÎąĪ€ÎąĪÎąÎŗĪ‰ÎŗÎŽ ÎŧÎĩĪ„ÎąÎēĪ‰Î´ÎšÎēÎŋĪ€ÎŋΚΡÎŧέÎŊÎŋĪ… Î˛Î¯ÎŊĪ„ÎĩÎŋ", "please_auth_to_access": "Î ÎąĪÎąÎēÎąÎģĪŽ Ī€ÎšĪƒĪ„ÎŋĪ€ÎŋΚΡθÎĩÎ¯Ī„Îĩ ÎŗÎšÎą ÎŊÎą ÎąĪ€ÎŋÎēĪ„ÎŽĪƒÎĩĪ„Îĩ Ī€ĪĪŒĪƒÎ˛ÎąĪƒÎˇ", "port": "Î˜ĪĪÎą", "preferences_settings_subtitle": "Î”ÎšÎąĪ‡ÎĩÎšĪÎšĪƒĪ„ÎĩÎ¯Ī„Îĩ Ī„ÎšĪ‚ ΀΁ÎŋĪ„ÎšÎŧÎŽĪƒÎĩÎšĪ‚ Ī„ÎˇĪ‚ ÎĩĪ†ÎąĪÎŧÎŋÎŗÎŽĪ‚", @@ -1662,6 +1745,7 @@ "reset_sqlite_confirmation": "Î•Î¯ĪƒÎąÎš ĪƒÎ¯ÎŗÎŋ΅΁ÎŋĪ‚ ĪŒĪ„Îš θέÎģÎĩÎšĪ‚ ÎŊÎą ÎĩĪ€ÎąÎŊÎąĪ†Î­ĪÎĩÎšĪ‚ Ī„Îˇ βÎŦĪƒÎˇ δÎĩδÎŋÎŧέÎŊΉÎŊ SQLite; Θι ·΁ÎĩÎšÎąĪƒĪ„Îĩί ÎŊÎą ÎēÎŦÎŊÎĩÎšĪ‚ ÎąĪ€ÎŋĪƒĪÎŊδÎĩĪƒÎˇ ÎēιΚ ÎĩĪ€ÎąÎŊÎąĪƒĪÎŊδÎĩĪƒÎˇ ÎŗÎšÎą ÎŊÎą ÎĩĪ€ÎąÎŊÎąĪƒĪ…ÎŗĪ‡ĪÎŋÎŊÎ¯ĪƒÎĩÎšĪ‚ Ī„Îą δÎĩδÎŋÎŧέÎŊÎą", "reset_sqlite_success": "Η ÎĩĪ€ÎąÎŊÎąĪ†Îŋ΁ÎŦ Ī„ÎˇĪ‚ SQLite βÎŦĪƒÎˇĪ‚ δÎĩδÎŋÎŧέÎŊΉÎŊ ÎŋÎģÎŋÎēÎģÎˇĪĪŽÎ¸ÎˇÎēÎĩ ÎŧÎĩ ÎĩĪ€ÎšĪ„Ī…Ī‡Î¯Îą", "reset_to_default": "Î•Ī€ÎąÎŊÎąĪ†Îŋ΁ÎŦ ĪƒĪ„ÎšĪ‚ ΀΁ÎŋÎĩĪ€ÎšÎģÎŋÎŗÎ­Ī‚", + "resolution": "ΑÎŊÎŦÎģĪ…ĪƒÎˇ", "resolve_duplicates": "Î•Ī€Î¯ÎģĪ…ĪƒÎˇ Î´ÎšĪ€ÎģÎŋĪ„ĪĪ€Ī‰ÎŊ", "resolved_all_duplicates": "Î•Ī€ÎšÎģĪÎ¸ÎˇÎēÎąÎŊ ΌÎģÎą Ī„Îą Î´ÎšĪ€ÎģĪŒĪ„Ī…Ī€Îą", "restore": "ΑÎŊÎŦÎēĪ„ÎˇĪƒÎˇ", @@ -1680,6 +1764,7 @@ "running": "ÎŖÎĩ ÎģÎĩÎšĪ„ÎŋĪ…ĪÎŗÎ¯Îą", "save": "Î‘Ī€ÎŋθΎÎēÎĩĪ…ĪƒÎˇ", "save_to_gallery": "Î‘Ī€ÎŋθΎÎēÎĩĪ…ĪƒÎˇ ĪƒĪ„Îˇ ĪƒĪ…ÎģÎģÎŋÎŗÎŽ", + "saved": "Î‘Ī€ÎŋθΡÎēÎĩĪ…ÎŧέÎŊÎŋ", "saved_api_key": "Î‘Ī€ÎŋθΡÎēÎĩĪ…ÎŧέÎŊÎŋ API key", "saved_profile": "Î‘Ī€ÎŋθΡÎēÎĩĪ…ÎŧέÎŊÎŋ ΀΁ÎŋĪ†Î¯Îģ", "saved_settings": "Î‘Ī€ÎŋθΡÎēÎĩĪ…ÎŧέÎŊÎĩĪ‚ ĪĪ…Î¸ÎŧÎ¯ĪƒÎĩÎšĪ‚", @@ -1696,6 +1781,9 @@ "search_by_description_example": "ΗÎŧÎĩĪÎŽĪƒÎšÎą Ī€ÎĩÎļÎŋĪ€ÎŋĪÎ¯Îą ĪƒĪ„Îŋ ΠÎŦĪ€ÎšÎŗÎēÎŋ", "search_by_filename": "ΑÎŊÎąÎļÎŽĪ„ÎˇĪƒÎˇ βÎŦ΃ÎĩΚ ÎŋÎŊΌÎŧÎąĪ„ÎŋĪ‚ ÎąĪĪ‡ÎĩίÎŋĪ… ÎŽ ÎĩĪ€Î­ÎēĪ„ÎąĪƒÎˇĪ‚ ÎąĪĪ‡ÎĩίÎŋĪ…", "search_by_filename_example": "Ī€.·. IMG_1234.JPG ÎŽ PNG", + "search_by_ocr": "ΑÎŊÎąÎļÎŽĪ„ÎˇĪƒÎˇ ÎēÎąĪ„ÎŦ OCR", + "search_by_ocr_example": "ΛÎŦĪ„Îĩ", + "search_camera_lens_model": "ΑÎŊÎąÎļÎŽĪ„ÎˇĪƒÎˇ ÎŧÎŋÎŊĪ„Î­ÎģÎŋĪ… Ī†ÎąÎēÎŋĪ...", "search_camera_make": "ΑÎŊÎąÎļÎŽĪ„ÎˇĪƒÎˇ ÎēÎąĪ„ÎąĪƒÎēÎĩĪ…ÎąĪƒĪ„ÎŽ ÎēÎŦÎŧÎĩĪÎąĪ‚...", "search_camera_model": "ΑÎŊÎąÎļÎŽĪ„ÎˇĪƒÎˇ ÎŧÎŋÎŊĪ„Î­ÎģÎŋĪ… ÎēÎŦÎŧÎĩĪÎąĪ‚...", "search_city": "ΑÎŊÎąÎļÎŽĪ„ÎˇĪƒÎˇ Ī€ĪŒÎģÎˇĪ‚...", @@ -1712,6 +1800,7 @@ "search_filter_location_title": "Î•Ī€ÎšÎģÎ­ÎžĪ„Îĩ Ī„ÎŋĪ€ÎŋθÎĩĪƒÎ¯Îą", "search_filter_media_type": "Î¤ĪĪ€ÎŋĪ‚ ÎœÎ­ĪƒÎŋĪ…", "search_filter_media_type_title": "Î•Ī€ÎšÎģÎ­ÎžĪ„Îĩ Ī„ĪĪ€Îŋ ÎŧÎ­ĪƒÎŋĪ…", + "search_filter_ocr": "ΑÎŊÎąÎļÎŽĪ„ÎˇĪƒÎˇ ÎēÎąĪ„ÎŦ OCR", "search_filter_people_title": "Î•Ī€ÎšÎģÎ­ÎžĪ„Îĩ ÎŦĪ„ÎŋÎŧÎą", "search_for": "ΑÎŊÎąÎļÎŽĪ„ÎˇĪƒÎˇ ÎŗÎšÎą", "search_for_existing_person": "ΑÎŊÎąÎļÎŽĪ„ÎˇĪƒÎˇ Ī…Ī€ÎŦ΁·ÎŋÎŊĪ„ÎŋĪ‚ ÎąĪ„ĪŒÎŧÎŋĪ…", @@ -1773,7 +1862,10 @@ "server_offline": "ΔιαÎēÎŋÎŧÎšĪƒĪ„ÎŽĪ‚ ΕÎēĪ„ĪŒĪ‚ ÎŖĪÎŊδÎĩĪƒÎˇĪ‚", "server_online": "ΔιαÎēÎŋÎŧÎšĪƒĪ„ÎŽĪ‚ ÎŖÎĩ ÎŖĪÎŊδÎĩĪƒÎˇ", "server_privacy": "Î‘Ī€ĪŒĪĪÎˇĪ„Îŋ ΔιαÎēÎŋÎŧÎšĪƒĪ„ÎŽ", + "server_restarting_description": "Î‘Ī…Ī„ÎŽ Ρ ΃ÎĩÎģÎ¯Î´Îą θι ÎąÎŊÎąÎŊÎĩĪ‰Î¸Îĩί ΃Îĩ ÎģÎ¯ÎŗÎŋ.", + "server_restarting_title": "Ο δΚιÎēÎŋÎŧÎšĪƒĪ„ÎŽĪ‚ ÎĩĪ€ÎąÎŊÎĩÎēÎēΚÎŊÎĩί", "server_stats": "ÎŖĪ„ÎąĪ„ÎšĪƒĪ„ÎšÎēÎŦ ΔιαÎēÎŋÎŧÎšĪƒĪ„ÎŽ", + "server_update_available": "ÎĨĪ€ÎŦ΁·ÎĩΚ Î´ÎšÎąÎ¸Î­ĪƒÎšÎŧΡ ÎĩÎŊΡÎŧÎ­ĪĪ‰ĪƒÎˇ δΚιÎēÎŋÎŧÎšĪƒĪ„ÎŽ", "server_version": "ΈÎēδÎŋĪƒÎˇ ΔιαÎēÎŋÎŧÎšĪƒĪ„ÎŽ", "set": "ÎŸĪÎšĪƒÎŧĪŒĪ‚", "set_as_album_cover": "ÎŸĪÎšĪƒÎŧĪŒĪ‚ Ή΂ ÎĩÎžĪŽĪ†Ī…ÎģÎģÎŋ ÎŦÎģÎŧĪ€ÎŋĪ…Îŧ", @@ -1895,6 +1987,7 @@ "show_slideshow_transition": "ΕÎŧΆÎŦÎŊÎšĪƒÎˇ ÎŧÎĩĪ„ÎŦÎ˛ÎąĪƒÎˇĪ‚ Ī€ÎąĪÎŋĪ…ĪƒÎ¯ÎąĪƒÎˇĪ‚", "show_supporter_badge": "ÎŖÎŽÎŧÎą Ī…Ī€ÎŋĪƒĪ„ÎˇĪÎšÎēĪ„ÎŽ", "show_supporter_badge_description": "ΕÎŧΆÎŦÎŊÎšĪƒÎˇ ĪƒÎŽÎŧÎąĪ„ÎŋĪ‚ Ī…Ī€ÎŋĪƒĪ„ÎˇĪÎšÎēĪ„ÎŽ", + "show_text_recognition": "ΕÎŧΆÎŦÎŊÎšĪƒÎˇ ÎąÎŊÎąÎŗÎŊĪŽĪÎšĪƒÎˇĪ‚ ÎēÎĩΚÎŧέÎŊÎŋĪ…", "show_text_search_menu": "ΕÎŧΆÎŦÎŊÎšĪƒÎˇ ÎŧÎĩÎŊÎŋĪ ÎąÎŊÎąÎļÎŽĪ„ÎˇĪƒÎˇĪ‚ ÎēÎĩΚÎŧέÎŊÎŋĪ…", "shuffle": "ΑÎŊÎŦÎŧÎĩΚΞΡ", "sidebar": "ΠÎģÎąĪŠÎŊÎŽ ÎŧĪ€ÎŦĪÎą", @@ -1965,6 +2058,7 @@ "tags": "Î•Ī„ÎšÎēÎ­Ī„ÎĩĪ‚", "tap_to_run_job": "Î ÎąĪ„ÎŽĪƒĪ„Îĩ ÎŗÎšÎą ÎŊÎą ΞÎĩÎēΚÎŊÎŽĪƒÎĩΚ Ρ ÎĩĪÎŗÎąĪƒÎ¯Îą", "template": "Î ĪĪŒĪ„Ī…Ī€Îŋ", + "text_recognition": "ΑÎŊÎąÎŗÎŊĪŽĪÎšĪƒÎˇ ÎēÎĩΚÎŧέÎŊÎŋĪ…", "theme": "ΘέÎŧÎą", "theme_selection": "Î•Ī€ÎšÎģÎŋÎŗÎŽ θέÎŧÎąĪ„ÎŋĪ‚", "theme_selection_description": "ÎĄĪ…Î¸ÎŧÎ¯ĪƒĪ„Îĩ ÎąĪ…Ī„ĪŒÎŧÎąĪ„Îą Ī„Îŋ θέÎŧÎą ΃Îĩ ÎąÎŊÎŋÎšĪ‡Ī„ĪŒ ÎŽ ΃ÎēÎŋĪĪÎŋ ÎŧÎĩ βÎŦĪƒÎˇ Ī„ÎšĪ‚ ΀΁ÎŋĪ„ÎšÎŧÎŽĪƒÎĩÎšĪ‚ ĪƒĪ…ĪƒĪ„ÎŽÎŧÎąĪ„ÎŋĪ‚ Ī„ÎŋĪ… ΀΁ÎŋÎŗĪÎŦÎŧÎŧÎąĪ„ÎŋĪ‚ Ī€ÎĩĪÎšÎŽÎŗÎˇĪƒÎŽĪ‚ ĪƒÎąĪ‚", @@ -1983,7 +2077,9 @@ "theme_setting_three_stage_loading_title": "ΕÎŊÎĩĪÎŗÎŋĪ€ÎŋÎšÎŽĪƒĪ„Îĩ Ī„Îˇ Ī†ĪŒĪĪ„Ī‰ĪƒÎˇ Ī„ĪÎšĪŽÎŊ ĪƒĪ„ÎąÎ´Î¯Ī‰ÎŊ", "they_will_be_merged_together": "Θι ĪƒĪ…ÎŗĪ‡Ī‰ÎŊÎĩĪ…Î¸ÎŋĪÎŊ ÎŧÎąÎļί", "third_party_resources": "Î ĪŒĪÎŋΚ Ī„ĪÎ¯Ī„Ī‰ÎŊ", + "time": "Î§ĪĪŒÎŊÎŋĪ‚", "time_based_memories": "ΜÎŊÎŽÎŧÎĩĪ‚ Î˛ÎąĪƒÎšĪƒÎŧέÎŊÎĩĪ‚ ĪƒĪ„Îŋ Ī‡ĪĪŒÎŊÎŋ", + "time_based_memories_duration": "Î‘ĪÎšÎ¸ÎŧĪŒĪ‚ δÎĩĪ…Ī„Îĩ΁ÎŋÎģÎ­Ī€Ī„Ī‰ÎŊ ÎĩÎŧΆÎŦÎŊÎšĪƒÎˇĪ‚ ÎēÎŦθÎĩ ÎĩΚÎēΌÎŊÎąĪ‚.", "timeline": "Î§ĪÎŋÎŊÎŋÎģĪŒÎŗÎšÎŋ", "timezone": "Î–ĪŽÎŊΡ ĪŽĪÎąĪ‚", "to_archive": "Î‘ĪĪ‡ÎĩΚÎŋÎ¸Î­Ī„ÎˇĪƒÎˇ", @@ -1995,6 +2091,7 @@ "to_select": "ÎŗÎšÎą ÎĩĪ€ÎšÎģÎŋÎŗÎŽ", "to_trash": "ΚÎŦδÎŋĪ‚ ÎąĪ€ÎŋĪĪÎšÎŧÎŧÎŦ΄ΉÎŊ", "toggle_settings": "ΕÎŊÎąÎģÎģÎąÎŗÎŽ ĪĪ…Î¸ÎŧÎ¯ĪƒÎĩΉÎŊ", + "toggle_theme_description": "ΕÎŊÎąÎģÎģÎąÎŗÎŽ θέÎŧÎąĪ„ÎŋĪ‚", "total": "ÎŖĪÎŊÎŋÎģÎŋ", "total_usage": "ÎŖĪ…ÎŊÎŋÎģΚÎēΡ Ī‡ĪÎˇĪƒÎˇ", "trash": "ΚÎŦδÎŋĪ‚ ÎąĪ€ÎŋĪĪÎšÎŧÎŧÎŦ΄ΉÎŊ", @@ -2015,6 +2112,7 @@ "troubleshoot": "Î•Ī€Î¯ÎģĪ…ĪƒÎˇ ΀΁ÎŋβÎģΡÎŧÎŦ΄ΉÎŊ", "type": "Î¤ĪĪ€ÎŋĪ‚", "unable_to_change_pin_code": "Î‘Î´Ī…ÎŊÎąÎŧÎ¯Îą ÎąÎģÎģÎąÎŗÎŽĪ‚ ÎēĪ‰Î´ÎšÎēÎŋĪ PIN", + "unable_to_check_version": "Î‘Î´Ī…ÎŊÎąÎŧÎ¯Îą ÎĩÎģÎ­ÎŗĪ‡ÎŋĪ… έÎēδÎŋĪƒÎˇĪ‚ ÎĩĪ†ÎąĪÎŧÎŋÎŗÎŽĪ‚ ÎŽ έÎēδÎŋĪƒÎˇĪ‚ δΚιÎēÎŋÎŧÎšĪƒĪ„ÎŽ", "unable_to_setup_pin_code": "Î‘Î´Ī…ÎŊÎąÎŧÎ¯Îą ĪĪÎ¸ÎŧÎšĪƒÎˇĪ‚ ÎēĪ‰Î´ÎšÎēÎŋĪ PIN", "unarchive": "ΑÎŊÎąÎ¯ĪÎĩĪƒÎˇ ÎąĪĪ‡ÎĩΚÎŋÎ¸Î­Ī„ÎˇĪƒÎˇĪ‚", "unarchive_action_prompt": "{count} ÎąĪ†ÎąÎšĪÎ­Î¸ÎˇÎēÎąÎŊ ÎąĪ€ĪŒ Ī„Îŋ Î‘ĪĪ‡ÎĩίÎŋ", @@ -2102,6 +2200,7 @@ "view_album": "Î ĪÎŋβÎŋÎģÎŽ ΆÎģÎŧĪ€ÎŋĪ…Îŧ", "view_all": "Î ĪÎŋβÎŋÎģÎŽ ΌÎģΉÎŊ", "view_all_users": "Î ĪÎŋβÎŋÎģÎŽ ΌÎģΉÎŊ ΄ΉÎŊ Ī‡ĪÎˇĪƒĪ„ĪŽÎŊ", + "view_asset_owners": "ΔÎĩÎ¯Ī„Îĩ Ī„ÎŋĪ…Ī‚ ΚδΚÎŋÎēĪ„ÎŽĪ„ÎĩĪ‚ ΄ΉÎŊ ĪƒĪ„ÎŋÎšĪ‡ÎĩÎ¯Ī‰ÎŊ", "view_details": "Î ĪÎŋβÎŋÎģÎŽ ΛÎĩ΀΄ÎŋÎŧÎĩ΁ÎĩÎšĪŽÎŊ", "view_in_timeline": "Î ĪÎŋβÎŋÎģÎŽ ĪƒĪ„Îŋ ·΁ÎŋÎŊÎŋδΚÎŦÎŗĪÎąÎŧÎŧÎą", "view_link": "Î ĪÎŋβÎŋÎģÎŽ ĪƒĪÎŊδÎĩ΃ÎŧÎŋĪ…", @@ -2118,11 +2217,14 @@ "viewer_unstack": "Î‘Ī€ÎŋĪƒĪ„ÎŋÎ¯Î˛ÎąÎžÎĩ", "visibility_changed": "Η ÎŋĪÎąĪ„ĪŒĪ„ÎˇĪ„Îą ÎŦÎģÎģιΞÎĩ ÎŗÎšÎą {count, plural, one {# ÎŦĪ„ÎŋÎŧÎŋ} other {# ÎŦĪ„ÎŋÎŧÎą}}", "waiting": "ÎŖĪ„ÎŋÎšĪ‡ÎĩÎ¯Îą ΃Îĩ ÎąÎŊÎąÎŧÎŋÎŊÎŽ", + "waiting_count": "ÎŖÎĩ ÎąÎŊÎąÎŧÎŋÎŊÎŽ: {count}", "warning": "Î ĪÎŋÎĩΚδÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇ", "week": "ΕβδÎŋÎŧÎŦδι", "welcome": "ΚαÎģĪ‰ĪƒÎŋĪÎ¯ĪƒÎąĪ„Îĩ", "welcome_to_immich": "ΚαÎģĪ‰ĪƒÎŋĪÎ¯ĪƒÎąĪ„Îĩ ĪƒĪ„Îŋ Ιmmich", + "width": "ΠÎģÎŦĪ„ÎŋĪ‚", "wifi_name": "ΌÎŊÎŋÎŧÎą Wi-Fi", + "workflow": "ÎĄÎŋÎŽ ÎĩĪÎŗÎąĪƒÎ¯ÎąĪ‚", "wrong_pin_code": "ΛÎŦθÎŋĪ‚ ÎēĪ‰Î´ÎšÎēĪŒĪ‚ PIN", "year": "ÎˆĪ„ÎŋĪ‚", "years_ago": "Ī€ĪÎšÎŊ ÎąĪ€ĪŒ {years, plural, one {# Ī‡ĪĪŒÎŊÎŋ} other {# Ī‡ĪĪŒÎŊΚι}}", diff --git a/i18n/en.json b/i18n/en.json index 5903d7850e..473bd6f37b 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -5,6 +5,7 @@ "acknowledge": "Acknowledge", "action": "Action", "action_common_update": "Update", + "action_description": "A set of action to perform on the filtered assets", "actions": "Actions", "active": "Active", "active_count": "Active: {count}", @@ -15,9 +16,14 @@ "add_a_location": "Add a location", "add_a_name": "Add a name", "add_a_title": "Add a title", + "add_action": "Add action", + "add_action_description": "Click to add an action to perform", + "add_assets": "Add assets", "add_birthday": "Add a birthday", "add_endpoint": "Add endpoint", "add_exclusion_pattern": "Add exclusion pattern", + "add_filter": "Add filter", + "add_filter_description": "Click to add a filter condition", "add_location": "Add location", "add_more_users": "Add more users", "add_partner": "Add partner", @@ -36,6 +42,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": "Added {count, number} to favorites", @@ -467,10 +474,12 @@ "album_remove_user": "Remove user?", "album_remove_user_confirmation": "Are you sure you want to remove {user}?", "album_search_not_found": "No albums found matching your search", + "album_selected": "Album selected", "album_share_no_users": "Looks like you have shared this album with all users or you don't have any user to share with.", "album_summary": "Album summary", "album_updated": "Album updated", "album_updated_setting_description": "Receive an email notification when a shared album has new assets", + "album_upload_assets": "Upload assets from your computer and add to album", "album_user_left": "Left {album}", "album_user_removed": "Removed {user}", "album_viewer_appbar_delete_confirm": "Are you sure you want to delete this album from your account?", @@ -488,6 +497,7 @@ "albums_default_sort_order_description": "Initial asset sort order when creating new albums.", "albums_feature_description": "Collections of assets that can be shared with other users.", "albums_on_device_count": "Albums on device ({count})", + "albums_selected": "{count, plural, one {# album selected} other {# albums selected}}", "all": "All", "all_albums": "All albums", "all_people": "All people", @@ -524,10 +534,12 @@ "archived_count": "{count, plural, other {Archived #}}", "are_these_the_same_person": "Are these the same person?", "are_you_sure_to_do_this": "Are you sure you want to do this?", + "array_field_not_fully_supported": "Array fields require manual JSON editing", "asset_action_delete_err_read_only": "Cannot delete read only asset(s), skipping", "asset_action_share_err_offline": "Cannot fetch offline asset(s), skipping", "asset_added_to_album": "Added to album", "asset_adding_to_album": "Adding to albumâ€Ļ", + "asset_created": "Asset created", "asset_description_updated": "Asset description has been updated", "asset_filename_is_offline": "Asset {filename} is offline", "asset_has_unassigned_faces": "Asset has unassigned faces", @@ -711,6 +723,8 @@ "change_password_form_password_mismatch": "Passwords do not match", "change_password_form_reenter_new_password": "Re-enter New Password", "change_pin_code": "Change PIN code", + "change_trigger": "Change trigger", + "change_trigger_prompt": "Are you sure you want to change the trigger? This will remove all existing actions and filters.", "change_your_password": "Change your password", "changed_visibility_successfully": "Changed visibility successfully", "charging": "Charging", @@ -722,6 +736,18 @@ "checksum": "Checksum", "choose_matching_people_to_merge": "Choose matching people to merge", "city": "City", + "cleanup_confirm_description": "Immich found {count} assets (created before {date}) safely backed up to the server. Remove the local copies from this device?", + "cleanup_confirm_prompt_title": "Remove from this device?", + "cleanup_deleted_assets": "Moved {count} assets to device trash", + "cleanup_deleting": "Moving to trash...", + "cleanup_filter_description": "Choose which types of assets to remove in the cleanup", + "cleanup_found_assets": "Found {count} backed up assets", + "cleanup_icloud_shared_albums_excluded": "iCloud Shared Albums are excluded from the scan", + "cleanup_no_assets_found": "No backed up assets found matching your criteria", + "cleanup_preview_title": "Assets to remove ({count})", + "cleanup_step3_description": "Scan for photos and videos that have been backed up to the server with the selected cutoff date and filter options", + "cleanup_step4_summary": "{count} assets created before {date} are queued for removal from your device", + "cleanup_trash_hint": "To fully reclaim storage space, open the system gallery app and empty the trash", "clear": "Clear", "clear_all": "Clear all", "clear_all_recent_searches": "Clear all recent searches", @@ -787,6 +813,7 @@ "create_album": "Create album", "create_album_page_untitled": "Untitled", "create_api_key": "Create API key", + "create_first_workflow": "Create first workflow", "create_library": "Create Library", "create_link": "Create link", "create_link_to_share": "Create link to share", @@ -801,6 +828,7 @@ "create_tag": "Create tag", "create_tag_description": "Create a new tag. For nested tags, please enter the full path of the tag including forward slashes.", "create_user": "Create user", + "create_workflow": "Create workflow", "created": "Created", "created_at": "Created", "creating_linked_albums": "Creating linked albums...", @@ -809,9 +837,13 @@ "current_device": "Current device", "current_pin_code": "Current PIN code", "current_server_address": "Current server address", + "custom_date": "Custom date", "custom_locale": "Custom Locale", "custom_locale_description": "Format dates and numbers based on the language and the region", "custom_url": "Custom URL", + "cutoff_date_description": "Remove photos and videos older than", + "cutoff_day": "{count, plural, one {day} other {days}}", + "cutoff_year": "{count, plural, one {year} other {years}}", "daily_title_text_date": "E, MMM dd", "daily_title_text_date_year": "E, MMM dd, yyyy", "dark": "Dark", @@ -867,6 +899,7 @@ "deselect_all": "Deselect All", "details": "Details", "direction": "Direction", + "disable": "Disable", "disabled": "Disabled", "disallow_edits": "Disallow edits", "discord": "Discord", @@ -929,11 +962,13 @@ "edit_tag": "Edit tag", "edit_title": "Edit Title", "edit_user": "Edit user", + "edit_workflow": "Edit workflow", "editor": "Editor", "editor_close_without_save_prompt": "The changes will not be saved", "editor_close_without_save_title": "Close editor?", "editor_crop_tool_h2_aspect_ratios": "Aspect ratios", "editor_crop_tool_h2_rotation": "Rotation", + "editor_mode": "Editor mode", "email": "Email", "email_notifications": "Email notifications", "empty_folder": "This folder is empty", @@ -1014,6 +1049,7 @@ "unable_to_complete_oauth_login": "Unable to complete OAuth login", "unable_to_connect": "Unable to connect", "unable_to_copy_to_clipboard": "Cannot copy to clipboard, make sure you are accessing the page through https", + "unable_to_create": "Unable to create workflow", "unable_to_create_admin_account": "Unable to create admin account", "unable_to_create_api_key": "Unable to create a new API Key", "unable_to_create_library": "Unable to create library", @@ -1024,6 +1060,7 @@ "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 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", @@ -1063,6 +1100,7 @@ "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 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", @@ -1074,6 +1112,7 @@ "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 update workflow", "unable_to_upload_file": "Unable to upload file" }, "exclusion_pattern": "Exclusion pattern", @@ -1120,14 +1159,17 @@ "features": "Features", "features_in_development": "Features in Development", "features_setting_description": "Manage the app features", - "file_name": "File name", + "file_name": "File name: {file_name}", "file_name_or_extension": "File name or extension", "file_size": "File size", "filename": "Filename", "filetype": "Filetype", "filter": "Filter", + "filter_description": "Conditions to filter the target assets", + "filter_options": "Filter options", "filter_people": "Filter people", "filter_places": "Filter places", + "filters": "Filters", "find_them_fast": "Find them fast by name with search", "first": "First", "fix_incorrect_match": "Fix incorrect match", @@ -1137,12 +1179,16 @@ "folders_feature_description": "Browsing the folder view for the photos and videos on the file system", "forgot_pin_code_question": "Forgot your PIN?", "forward": "Forward", + "free_up_space": "Free Up Space", + "free_up_space_description": "Move backed-up photos and videos to your device's trash to free up space. Your copies on the server remain safe", + "free_up_space_settings_subtitle": "Free up device storage", "full_path": "Full path: {path}", "gcast_enabled": "Google Cast", "gcast_enabled_description": "This feature loads external resources from Google in order to work.", "general": "General", "geolocation_instruction_location": "Click on an asset with GPS coordinates to use its location, or select a location directly from the map", "get_help": "Get Help", + "get_people_error": "Error getting people", "get_wifiname_error": "Could not get Wi-Fi name. Make sure you have granted the necessary permissions and are connected to a Wi-Fi network", "getting_started": "Getting Started", "go_back": "Go back", @@ -1175,6 +1221,7 @@ "hide_named_person": "Hide person {name}", "hide_password": "Hide password", "hide_person": "Hide person", + "hide_schema": "Hide schema", "hide_text_recognition": "Hide text recognition", "hide_unnamed_people": "Hide unnamed people", "home_page_add_to_album_conflicts": "Added {added} assets to album {album}. {failed} assets are already in the album.", @@ -1247,8 +1294,12 @@ "ios_debug_info_processing_ran_at": "Processing ran {dateTime}", "items_count": "{count, plural, one {# item} other {# items}}", "jobs": "Jobs", + "json_editor": "JSON editor", + "json_error": "JSON error", "keep": "Keep", "keep_all": "Keep All", + "keep_favorites": "Keep favorites", + "keep_favorites_description": "Favorite assets will not be deleted from your device", "keep_this_delete_others": "Keep this, delete others", "kept_this_deleted_others": "Kept this asset and deleted {count, plural, one {# asset} other {# assets}}", "keyboard_shortcuts": "Keyboard shortcuts", @@ -1416,11 +1467,14 @@ "monthly_title_text_date_format": "MMMM y", "more": "More", "move": "Move", + "move_down": "Move down", "move_off_locked_folder": "Move out of locked folder", "move_to": "Move to", + "move_to_device_trash": "Move to device trash", "move_to_lock_folder_action_prompt": "{count} added to the locked folder", "move_to_locked_folder": "Move to locked folder", "move_to_locked_folder_confirmation": "These photos and video will be removed from all albums, and only viewable from the locked folder", + "move_up": "Move up", "moved_to_archive": "Moved {count, plural, one {# asset} other {# assets}} to archive", "moved_to_library": "Moved {count, plural, one {# asset} other {# assets}} to library", "moved_to_trash": "Moved to trash", @@ -1430,6 +1484,7 @@ "my_albums": "My albums", "name": "Name", "name_or_nickname": "Name or nickname", + "name_required": "Name is required", "navigate": "Navigate", "navigate_to_time": "Navigate to Time", "network_requirement_photos_upload": "Use cellular data to backup photos", @@ -1454,6 +1509,7 @@ "next": "Next", "next_memory": "Next memory", "no": "No", + "no_actions_added": "No actions added yet", "no_albums_message": "Create an album to organize your photos and videos", "no_albums_with_name_yet": "It looks like you do not have any albums with this name yet.", "no_albums_yet": "It looks like you do not have any albums yet.", @@ -1463,11 +1519,13 @@ "no_cast_devices_found": "No cast devices found", "no_checksum_local": "No checksum available - cannot fetch local assets", "no_checksum_remote": "No checksum available - cannot fetch remote asset", + "no_configuration_needed": "No configuration needed", "no_devices": "No authorized devices", "no_duplicates_found": "No duplicates were found.", "no_exif_info_available": "No exif info available", "no_explore_results_message": "Upload more photos to explore your collection.", "no_favorites_message": "Add favorites to quickly find your best pictures and videos", + "no_filters_added": "No filters added yet", "no_libraries_message": "Create an external library to view your photos and videos", "no_local_assets_found": "No local assets found with this checksum", "no_location_set": "No location set", @@ -1563,6 +1621,7 @@ "people": "People", "people_edits_count": "Edited {count, plural, one {# person} other {# people}}", "people_feature_description": "Browsing photos and videos grouped by people", + "people_selected": "{count, plural, one {# person selected} other {# people selected}}", "people_sidebar_description": "Display a link to People in the sidebar", "permanent_deletion_warning": "Permanent deletion warning", "permanent_deletion_warning_setting_description": "Show a warning when permanently deleting assets", @@ -1587,11 +1646,14 @@ "person_age_years": "{years, plural, other {# years}} old", "person_birthdate": "Born on {date}", "person_hidden": "{name}{hidden, select, true { (hidden)} other {}}", + "person_recognized": "Person recognized", + "person_selected": "Person selected", "photo_shared_all_users": "Looks like you shared your photos with all users or you don't have any user to share with.", "photos": "Photos", "photos_and_videos": "Photos & Videos", "photos_count": "{count, plural, one {{count, number} Photo} other {{count, number} Photos}}", "photos_from_previous_years": "Photos from previous years", + "photos_only": "Photos only", "pick_a_location": "Pick a location", "pick_custom_range": "Custom range", "pick_date_range": "Select a date range", @@ -1667,10 +1729,12 @@ "purchase_settings_server_activated": "The server product key is managed by the admin", "query_asset_id": "Query Asset ID", "queue_status": "Queuing {count}/{total}", + "rate_asset": "Rate Asset", "rating": "Star rating", "rating_clear": "Clear rating", "rating_count": "{count, plural, one {# star} other {# stars}}", "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", "read_changelog": "Read Changelog", "readonly_mode_disabled": "Read-only mode disabled", @@ -1770,9 +1834,11 @@ "saved_settings": "Saved settings", "say_something": "Say something", "scaffold_body_error_occurred": "Error occurred", + "scan": "Scan", "scan_all_libraries": "Scan All Libraries", "scan_library": "Scan", "scan_settings": "Scan Settings", + "scanning": "Scanning", "scanning_for_album": "Scanning for album...", "search": "Search", "search_albums": "Search albums", @@ -1836,17 +1902,23 @@ "second": "Second", "see_all_people": "See all people", "select": "Select", + "select_album": "Select album", "select_album_cover": "Select album cover", + "select_albums": "Select albums", "select_all": "Select all", "select_all_duplicates": "Select all duplicates", "select_all_in": "Select all in {group}", "select_avatar_color": "Select avatar color", + "select_count": "{count, plural, one {Select #} other {Select #}}", + "select_cutoff_date": "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 people", + "select_person": "Select person", "select_person_to_tag": "Select a person to tag", "select_photos": "Select photos", "select_trash_all": "Select trash all", @@ -1982,6 +2054,7 @@ "show_password": "Show password", "show_person_options": "Show person options", "show_progress_bar": "Show Progress Bar", + "show_schema": "Show schema", "show_search_options": "Show search options", "show_shared_links": "Show shared links", "show_slideshow_transition": "Show slideshow transition", @@ -2109,6 +2182,13 @@ "trash_page_select_assets_btn": "Select assets", "trash_page_title": "Trash ({count})", "trashed_items_will_be_permanently_deleted_after": "Trashed items will be permanently deleted after {days, plural, one {# day} other {# days}}.", + "trigger": "Trigger", + "trigger_asset_uploaded": "Asset Uploaded", + "trigger_asset_uploaded_description": "Triggered when a new asset is uploaded", + "trigger_description": "An event that kicks off the workflow", + "trigger_person_recognized": "Person Recognized", + "trigger_person_recognized_description": "Triggered when a person is detected", + "trigger_type": "Trigger type", "troubleshoot": "Troubleshoot", "type": "Type", "unable_to_change_pin_code": "Unable to change PIN code", @@ -2139,7 +2219,9 @@ "unstack": "Un-stack", "unstack_action_prompt": "{count} unstacked", "unstacked_assets_count": "Un-stacked {count, plural, one {# asset} other {# assets}}", + "unsupported_field_type": "Unsupported field type", "untagged": "Untagged", + "untitled_workflow": "Untitled workflow", "up_next": "Up next", "update_location_action_prompt": "Update the location of {count} selected assets with:", "updated_at": "Updated", @@ -2185,6 +2267,7 @@ "utilities": "Utilities", "validate": "Validate", "validate_endpoint_error": "Please enter a valid URL", + "validation_error": "Validation error", "variables": "Variables", "version": "Version", "version_announcement_closing": "Your friend, Alex", @@ -2196,6 +2279,7 @@ "video_hover_setting_description": "Play video thumbnail when mouse is hovering over item. Even when disabled, playback can be started by hovering over the play icon.", "videos": "Videos", "videos_count": "{count, plural, one {# Video} other {# Videos}}", + "videos_only": "Videos only", "view": "View", "view_album": "View Album", "view_all": "View All", @@ -2216,6 +2300,8 @@ "viewer_stack_use_as_main_asset": "Use as Main Asset", "viewer_unstack": "Un-Stack", "visibility_changed": "Visibility changed for {count, plural, one {# person} other {# people}}", + "visual": "Visual", + "visual_builder": "Visual builder", "waiting": "Waiting", "waiting_count": "Waiting: {count}", "warning": "Warning", @@ -2224,13 +2310,26 @@ "welcome_to_immich": "Welcome to Immich", "width": "Width", "wifi_name": "Wi-Fi Name", - "workflow": "Workflow", + "workflow_delete_prompt": "Are you sure you want to delete this workflow?", + "workflow_deleted": "Workflow deleted", + "workflow_description": "Workflow description", + "workflow_info": "Workflow info", + "workflow_json": "Workflow JSON", + "workflow_json_help": "Edit the workflow configuration in JSON format. Changes will sync to the visual builder.", + "workflow_name": "Workflow name", + "workflow_navigation_prompt": "Are you sure you want to leave without saving your changes?", + "workflow_summary": "Workflow summary", + "workflow_update_success": "Workflow updated successfully", + "workflow_updated": "Workflow updated", + "workflows": "Workflows", + "workflows_help_text": "Workflows automate actions on your assets based on triggers and filters", "wrong_pin_code": "Wrong PIN code", "year": "Year", "years_ago": "{years, plural, one {# year} other {# years}} ago", "yes": "Yes", "you_dont_have_any_shared_links": "You don't have any shared links", "your_wifi_name": "Your Wi-Fi name", + "zero_to_clear_rating": "press 0 to clear asset rating", "zoom_image": "Zoom Image", "zoom_to_bounds": "Zoom to bounds" } diff --git a/i18n/es.json b/i18n/es.json index a5766eed93..5a16946039 100644 --- a/i18n/es.json +++ b/i18n/es.json @@ -7,39 +7,40 @@ "action_common_update": "Actualizar", "actions": "Acciones", "active": "Activo", + "active_count": "Activo: {count}", "activity": "Actividad", "activity_changed": "La actividad estÃĄ {enabled, select, true {habilitada} other {deshabilitada}}", - "add": "Agregar", - "add_a_description": "Agregar descripciÃŗn", - "add_a_location": "Agregar ubicaciÃŗn", - "add_a_name": "Agregar nombre", - "add_a_title": "Agregar título", - "add_birthday": "Agregar un cumpleaÃąos", - "add_endpoint": "Agregar endpoint", - "add_exclusion_pattern": "Agregar patrÃŗn de exclusiÃŗn", - "add_location": "Agregar ubicaciÃŗn", - "add_more_users": "Agregar mÃĄs usuarios", - "add_partner": "Agregar compaÃąero", - "add_path": "Agregar ruta", - "add_photos": "Agregar fotos", - "add_tag": "Agregar etiqueta", - "add_to": "Agregar aâ€Ļ", - "add_to_album": "Incluir en ÃĄlbum", - "add_to_album_bottom_sheet_added": "Agregado a {album}", + "add": "AÃąadir", + "add_a_description": "AÃąadir descripciÃŗn", + "add_a_location": "AÃąadir una ubicaciÃŗn", + "add_a_name": "AÃąadir un nombre", + "add_a_title": "AÃąadir título", + "add_birthday": "AÃąadir un cumpleaÃąos", + "add_endpoint": "AÃąadir punto final", + "add_exclusion_pattern": "AÃąadir patrÃŗn de exclusiÃŗn", + "add_location": "AÃąadir ubicaciÃŗn", + "add_more_users": "AÃąadir mÃĄs usuarios", + "add_partner": "AÃąadir miembro", + "add_path": "AÃąadir ruta", + "add_photos": "AÃąadir fotos", + "add_tag": "AÃąadir etiqueta", + "add_to": "AÃąadir aâ€Ļ", + "add_to_album": "AÃąadir al ÃĄlbum", + "add_to_album_bottom_sheet_added": "AÃąadido a {album}", "add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}", "add_to_album_bottom_sheet_some_local_assets": "Algunos recursos locales no se pudieron aÃąadir al ÃĄlbum", "add_to_album_toggle": "Alternar selecciÃŗn para el {album}", - "add_to_albums": "Incluir en ÃĄlbumes", - "add_to_albums_count": "Incluir en {count} ÃĄlbumes", + "add_to_albums": "AÃąadir a ÃĄlbumes", + "add_to_albums_count": "AÃąadir a {count} ÃĄlbumes", "add_to_bottom_bar": "AÃąadir a", - "add_to_shared_album": "Incluir en ÃĄlbum compartido", - "add_upload_to_stack": "AÃąadir archivo y apilar", - "add_url": "Agregar URL", - "added_to_archive": "Agregado al Archivado", - "added_to_favorites": "Agregado a favoritos", - "added_to_favorites_count": "Agregado {count, number} a favoritos", + "add_to_shared_album": "AÃąadir al ÃĄlbum compartido", + "add_upload_to_stack": "AÃąadir subida a la cola", + "add_url": "AÃąadir URL", + "added_to_archive": "AÃąadido al archivo", + "added_to_favorites": "AÃąadido a favoritos", + "added_to_favorites_count": "AÃąadido {count, number} a favoritos", "admin": { - "add_exclusion_pattern_description": "Agrega patrones de exclusiÃŗn. Puedes utilizar los caracteres *, ** y ? (globbing). Ejemplos: para ignorar todos los archivos en cualquier directorio llamado \"Raw\", utiliza \"**/Raw/**\". Para ignorar todos los archivos que terminan en \".tif\", utiliza \"**/*.tif\". Para ignorar una ruta absoluta, utiliza \"/carpeta/a/ignorar/**\".", + "add_exclusion_pattern_description": "AÃąade patrones de exclusiÃŗn. Puedes utilizar los caracteres *, ** y ? (globbing). Ejemplos: para ignorar todos los archivos en cualquier directorio llamado \"Raw\", utiliza \"**/Raw/**\". Para ignorar todos los archivos que terminan en \".tif\", utiliza \"**/*.tif\". Para ignorar una ruta absoluta, utiliza \"/carpeta/a/ignorar/**\".", "admin_user": "Usuario administrador", "asset_offline_description": "Este recurso externo de la biblioteca ya no se encuentra en el disco y se ha movido a la papelera. Si el archivo se moviÃŗ dentro de la biblioteca, comprueba la línea temporal para el nuevo recurso correspondiente. Para restaurar este recurso, asegÃērate de que Immich puede acceder a la siguiente ruta de archivo y escanear la biblioteca.", "authentication_settings": "ParÃĄmetros de autenticaciÃŗn", @@ -67,6 +68,7 @@ "confirm_reprocess_all_faces": "ÂŋEstÃĄs seguro de que deseas reprocesar todas las caras? Esto borrarÃĄ a todas las personas que nombraste.", "confirm_user_password_reset": "ÂŋEstÃĄs seguro de que quieres restablecer la contraseÃąa de {user}?", "confirm_user_pin_code_reset": "ÂŋSeguro que quieres restablecer el PIN de {user}?", + "copy_config_to_clipboard_description": "Copiar la configuraciÃŗn actual del sistema como un objeto JSON al", "create_job": "Crear trabajo", "cron_expression": "ExpresiÃŗn CRON", "cron_expression_description": "Establece el intervalo de escaneo utilizando el formato CRON. Para mÃĄs informaciÃŗn puedes consultar, por ejemplo, Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "Deshabilitar inicio de sesiÃŗn", "duplicate_detection_job_description": "Lanza el aprendizaje automÃĄtico para detectar imÃĄgenes similares. Necesita tener activado \"BÃēsqueda Inteligente\"", "exclusion_pattern_description": "Los patrones de exclusiÃŗn te permiten ignorar archivos y carpetas al escanear tu biblioteca. Es Ãētil si tienes carpetas que contienen archivos que no deseas importar, por ejemplo archivos RAW.", - "external_library_management": "GestiÃŗn de bibliotecas externas", + "export_config_as_json_description": "Descargar la configuraciÃŗn actual del sistema como un archivo JSON", + "external_libraries_page_description": "PÃĄgina de biblioteca externa del administrador", "face_detection": "DetecciÃŗn de caras", "face_detection_description": "Detecta las caras en los elementos mediante aprendizaje automÃĄtico. En el caso de los vídeos, solo se tiene en cuenta la miniatura. \"Actualizar\" (re)procesarÃĄ todos los elementos. \"Restablecer\" borra ademÃĄs todos los datos de caras actuales. \"Faltante\" pone en cola los elementos que aÃēn no se han procesado. Las caras detectadas se pondrÃĄn en cola para el reconocimiento facial una vez finalizada la detecciÃŗn, agrupÃĄndolos en personas existentes o nuevas.", "facial_recognition_job_description": "Agrupa las caras detectadas en personas. Este paso se realiza despuÊs de completar la detecciÃŗn de caras. \"Restablecer\" (re)agrupa todas las caras. \"Faltante\" pone en cola las caras que no tienen una persona asignada.", @@ -102,14 +105,15 @@ "image_thumbnail_description": "Miniatura pequeÃąa con metadatos eliminados. Se utiliza al visualizar grupos de fotos como la línea temporal principal", "image_thumbnail_quality_description": "Calidad de miniatura de 1 a 100. Es mejor cuanto mÃĄs alto es el valor pero genera archivos mÃĄs grandes y puede reducir la capacidad de respuesta de la aplicaciÃŗn.", "image_thumbnail_title": "Ajustes de las miniaturas", + "import_config_from_json_description": "Importar la configuraciÃŗn del sistema subiendo un archivo JSON de configuraciÃŗn", "job_concurrency": "{job}: Procesos simultÃĄneos", "job_created": "Tarea creada", "job_not_concurrency_safe": "Esta tarea no es segura para la simultaneidad.", "job_settings": "ConfiguraciÃŗn de tareas", "job_settings_description": "Administrar tareas simultÃĄneas", - "job_status": "Estado de la tarea", "jobs_delayed": "{jobCount, plural, one {# retrasado} other {# retrasados}}", "jobs_failed": "{jobCount, plural, one {# fallido} other {# fallidos}}", + "jobs_over_time": "Trabajos a lo largo del tiempo", "library_created": "La biblioteca ha sido creada: {library}", "library_deleted": "Biblioteca eliminada", "library_details": "Detalles de la biblioteca", @@ -182,6 +186,7 @@ "maintenance_start": "Iniciar el modo de mantenimiento", "maintenance_start_error": "Error al iniciar el modo de mantenimiento.", "manage_concurrency": "Ajustes de concurrencia", + "manage_concurrency_description": "Navegar a la pÃĄgina de trabajos para administrar la concurrencia de trabajos", "manage_log_settings": "Administrar la configuraciÃŗn de los registros", "map_dark_style": "Estilo oscuro", "map_enable_description": "Habilitar características del mapa", @@ -220,8 +225,8 @@ "nightly_tasks_start_time_setting_description": "El tiempo cuando el servidor comienza a ejecutar las tareas nocturnas", "nightly_tasks_sync_quota_usage_setting": "Uso de la cuota de sincronizaciÃŗn", "nightly_tasks_sync_quota_usage_setting_description": "Actualizar la cuota de almacenamiento del usuario, segÃēn el uso actual", - "no_paths_added": "No se han agregado rutas", - "no_pattern_added": "No se han agregado patrones", + "no_paths_added": "No se han aÃąadido rutas", + "no_pattern_added": "No se agregÃŗ ningÃēn patrÃŗn", "note_apply_storage_label_previous_assets": "Nota: Para aplicar la Etiqueta de Almacenamiento a los elementos previamente subidos, ejecuta la", "note_cannot_be_changed_later": "NOTA: ÂĄNo se puede cambiar posteriormente!", "notification_email_from_address": "Desde", @@ -271,10 +276,14 @@ "password_settings_description": "Administrar la configuraciÃŗn de inicio de sesiÃŗn con contraseÃąa", "paths_validated_successfully": "Todas las carpetas se han validado satisfactoriamente", "person_cleanup_job": "Limpieza de personas", + "queue_details": "Detalles de cola", + "queues": "Colas de trabajo", + "queues_page_description": "PÃĄgina de administraciÃŗn de colas de trabajo", "quota_size_gib": "TamaÃąo de la cuota (GiB)", "refreshing_all_libraries": "Actualizar todas las bibliotecas", "registration": "Registrar administrador", "registration_description": "Dado que eres el primer usuario del sistema, se te designarÃĄ como administrador, tendrÃĄs a tu cargo las tareas administrativas y deberÃĄs crear los demÃĄs usuarios.", + "remove_failed_jobs": "Eliminar trabajos fallidos", "require_password_change_on_login": "Requerir que el usuario cambie la contraseÃąa en el primer inicio de sesiÃŗn", "reset_settings_to_default": "Restablecer la configuraciÃŗn predeterminada", "reset_settings_to_recent_saved": "Restablecer la configuraciÃŗn a la configuraciÃŗn guardada recientemente", @@ -284,11 +293,13 @@ "server_external_domain_settings": "Dominio externo", "server_external_domain_settings_description": "Dominio para enlaces pÃēblicos compartidos, incluidos http(s)://", "server_public_users": "Usuarios pÃēblicos", - "server_public_users_description": "Cuando se agrega un usuario a los ÃĄlbumes compartidos, todos los usuarios aparecen en una lista con su nombre y su correo electrÃŗnico. Si deshabilita esta opciÃŗn, solo los administradores podrÃĄn ver la lista de usuarios.", + "server_public_users_description": "Cuando se aÃąade un usuario a los ÃĄlbumes compartidos, todos los usuarios aparecen en una lista con su nombre y su correo electrÃŗnico. Si deshabilita esta opciÃŗn, solo los administradores podrÃĄn ver la lista de usuarios.", "server_settings": "ConfiguraciÃŗn del servidor", "server_settings_description": "Administrar la configuraciÃŗn del servidor", + "server_stats_page_description": "PÃĄgina de estadísticas de administrador del servidor", "server_welcome_message": "Mensaje de bienvenida", "server_welcome_message_description": "Mensaje para mostrar en la pÃĄgina de inicio de sesiÃŗn.", + "settings_page_description": "PÃĄgina de ajustes de administrador", "sidecar_job": "Metadatos de archivos sidecar", "sidecar_job_description": "Descubrir o sincronizar metadatos sidecar desde el sistema de archivos", "slideshow_duration_description": "NÃēmero de segundos para mostrar cada imagen", @@ -407,7 +418,8 @@ "user_restore_scheduled_removal": "Restaurar el usuario - eliminaciÃŗn programada el {date, date, long}", "user_settings": "Ajustes de usuario", "user_settings_description": "Administrar la configuraciÃŗn del usuario", - "user_successfully_removed": "El usuario {email} ha sido eliminado exitosamente.", + "user_successfully_removed": "El usuario {email} ha sido eliminado con Êxito.", + "users_page_description": "PÃĄgina de usuarios administradores", "version_check_enabled_description": "Activar la comprobaciÃŗn de la versiÃŗn", "version_check_implications": "La funciÃŗn de comprobaciÃŗn de versiones depende de la comunicaciÃŗn periÃŗdica con github.com", "version_check_settings": "Verificar VersiÃŗn", @@ -439,8 +451,8 @@ "age_year_months": "1 aÃąo, {months, plural, one {# mes} other {# meses}}", "age_years": "Edad {years, plural, one {# aÃąo} other {# aÃąos}}", "album": "Álbum", - "album_added": "Álbum agregado", - "album_added_notification_setting_description": "Reciba una notificaciÃŗn por correo electrÃŗnico cuando lo agreguen a un ÃĄlbum compartido", + "album_added": "Álbum aÃąadido", + "album_added_notification_setting_description": "Reciba una notificaciÃŗn por correo electrÃŗnico cuando lo aÃąadan a un ÃĄlbum compartido", "album_cover_updated": "Portada del ÃĄlbum actualizada", "album_delete_confirmation": "ÂŋEstÃĄs seguro de que deseas eliminar el ÃĄlbum {album}?", "album_delete_confirmation_description": "Si este ÃĄlbum se comparte, otros usuarios ya no podrÃĄn acceder a Êl.", @@ -468,8 +480,8 @@ "album_viewer_appbar_share_err_title": "Error al cambiar el título del ÃĄlbum", "album_viewer_appbar_share_leave": "Abandonar ÃĄlbum", "album_viewer_appbar_share_to": "Compartir Con", - "album_viewer_page_share_add_users": "Agregar usuarios", - "album_with_link_access": "Permitir que cualquiera que tenga el enlace vea las fotos y las personas del ÃĄlbum.", + "album_viewer_page_share_add_users": "AÃąadir usuarios", + "album_with_link_access": "Permitir que cualquiera que tenga el enlace vea las fotos y las personas en este ÃĄlbum.", "albums": "Álbumes", "albums_count": "{count, plural, one {{count, number} ÃĄlbum} other {{count, number} ÃĄlbumes}}", "albums_default_sort_order": "OrdenaciÃŗn por defecto de los ÃĄlbumes", @@ -502,7 +514,7 @@ "appears_in": "Aparece en", "apply_count": "Aplicar ({count, number})", "archive": "Archivo", - "archive_action_prompt": "{count} agregado(s) al archivo", + "archive_action_prompt": "{count} aÃąadido(s) al archivo", "archive_or_unarchive_photo": "Archivar o restaurar foto", "archive_page_no_archived_assets": "No se encontraron elementos archivados", "archive_page_title": "Archivo ({count})", @@ -514,8 +526,8 @@ "are_you_sure_to_do_this": "ÂŋEstÃĄs seguro de que quieres hacer esto?", "asset_action_delete_err_read_only": "No se puede borrar archivo(s) de solo lectura, omitiendo", "asset_action_share_err_offline": "No se pudo obtener archivo(s) sin conexiÃŗn, omitiendo", - "asset_added_to_album": "Agregado al ÃĄlbum", - "asset_adding_to_album": "Agregando al ÃĄlbumâ€Ļ", + "asset_added_to_album": "AÃąadido al ÃĄlbum", + "asset_adding_to_album": "AÃąadiendo al ÃĄlbumâ€Ļ", "asset_description_updated": "La descripciÃŗn del elemento ha sido actualizada", "asset_filename_is_offline": "El archivo {filename} estÃĄ offline", "asset_has_unassigned_faces": "El archivo no tiene rostros asignados", @@ -540,11 +552,11 @@ "asset_viewer_settings_subtitle": "Administra las configuracioens de tu visor de fotos", "asset_viewer_settings_title": "Visor de Archivos", "assets": "elementos", - "assets_added_count": "{count, plural, one {# elemento agregado} other {# elementos agregados}}", - "assets_added_to_album_count": "{count, plural, one {# elemento agregado} other {# elementos agregados}} al ÃĄlbum", - "assets_added_to_albums_count": "{assetTotal, plural, one {# agregado} other {# agregados}} {albumTotal, plural, one {# al ÃĄlbum} other {# a los ÃĄlbumes}}", - "assets_cannot_be_added_to_album_count": "{count, plural, one {El elemento no se puede agregar al ÃĄlbum} other {Los elementos no se pueden agregar al ÃĄlbum}}", - "assets_cannot_be_added_to_albums": "{count, plural, one {El elemento} other {Los elementos}} no se {count, plural, one {puede} other {pueden}} agregar a ninguno de los ÃĄlbumes", + "assets_added_count": "{count, plural, one {# elemento aÃąadido} other {# elementos aÃąadidos}}", + "assets_added_to_album_count": "{count, plural, one {# elemento aÃąadido} other {# elementos aÃąadidos}} al ÃĄlbum", + "assets_added_to_albums_count": "{assetTotal, plural, one {# aÃąadido} other {# aÃąadidos}} {albumTotal, plural, one {# al ÃĄlbum} other {# a los ÃĄlbumes}}", + "assets_cannot_be_added_to_album_count": "{count, plural, one {El elemento no se puede aÃąadir al ÃĄlbum} other {Los elementos no se pueden aÃąadir al ÃĄlbum}}", + "assets_cannot_be_added_to_albums": "{count, plural, one {El elemento} other {Los elementos}} no se {count, plural, one {puede} other {pueden}} aÃąadir a ninguno de los ÃĄlbumes", "assets_count": "{count, plural, one {# activo} other {# activos}}", "assets_deleted_permanently": "{count} elemento(s) eliminado(s) permanentemente", "assets_deleted_permanently_from_server": "{count} recurso(s) eliminado(s) de forma permanente del servidor de Immich", @@ -640,6 +652,7 @@ "backup_options_page_title": "Opciones de Copia de Seguridad", "backup_setting_subtitle": "Administra las configuraciones de respaldo en segundo y primer plano", "backup_settings_subtitle": "Configura las opciones de subida", + "backup_upload_details_page_more_details": "Toca para mÃĄs detalles", "backward": "Retroceder", "biometric_auth_enabled": "AutentificaciÃŗn biomÊtrica habilitada", "biometric_locked_out": "EstÃĄs bloqueado de la autentificaciÃŗn biomÊtrica", @@ -706,6 +719,7 @@ "check_corrupt_asset_backup_button": "Realizar comprobaciÃŗn", "check_corrupt_asset_backup_description": "Ejecutar esta comprobaciÃŗn solo por Wi-Fi y una vez que todos los archivos hayan sido respaldados. El procedimiento puede tardar unos minutos.", "check_logs": "Comprobar Registros", + "checksum": "Suma de comprobaciÃŗn", "choose_matching_people_to_merge": "Elija ocurrencias duplicadas de la misma persona para fusionar", "city": "Ciudad", "clear": "Limpiar", @@ -728,6 +742,7 @@ "collapse_all": "Desplegar todo", "color": "Color", "color_theme": "Color del tema", + "command": "Comando", "comment_deleted": "Comentario borrado", "comment_options": "Opciones de comentarios", "comments_and_likes": "Comentarios y me gusta", @@ -780,7 +795,7 @@ "create_new_person": "Crear nueva persona", "create_new_person_hint": "Asignar los archivos seleccionados a una nueva persona", "create_new_user": "Crear nuevo usuario", - "create_shared_album_page_share_add_assets": "AGREGAR ELEMENTOS", + "create_shared_album_page_share_add_assets": "AÑADIR ELEMENTOS", "create_shared_album_page_share_select_photos": "Seleccionar fotos", "create_shared_link": "Crear un enlace compartido", "create_tag": "Crear etiqueta", @@ -847,7 +862,7 @@ "deleted_shared_link": "Enlace compartido eliminado", "deletes_missing_assets": "Elimina archivos que faltan en el disco duro", "description": "DescripciÃŗn", - "description_input_hint_text": "Agregar descripciÃŗn...", + "description_input_hint_text": "AÃąadir descripciÃŗn...", "description_input_submit_error": "Error al actualizar la descripciÃŗn, comprueba el registro para obtener mÃĄs detalles", "deselect_all": "Deseleccionar Todo", "details": "Detalles", @@ -938,7 +953,7 @@ "error_delete_face": "Error al eliminar la cara del archivo", "error_getting_places": "Error obteniendo lugares", "error_loading_image": "Error al cargar la imagen", - "error_loading_partners": "Error al cargar compaÃąeros: {error}", + "error_loading_partners": "Error al cargar miembros: {error}", "error_saving_image": "Error: {error}", "error_tag_face_bounding_box": "Error al etiquetar la cara: no se pueden obtener las coordenadas del marco", "error_title": "Error: algo saliÃŗ mal", @@ -953,8 +968,8 @@ "cant_get_number_of_comments": "No se puede obtener la cantidad de comentarios", "cant_search_people": "No se puede buscar a personas", "cant_search_places": "No se pueden buscar lugares", - "error_adding_assets_to_album": "Error al agregar los elementos al ÃĄlbum", - "error_adding_users_to_album": "Error al agregar los usuarios al ÃĄlbum", + "error_adding_assets_to_album": "Error al aÃąadir los elementos al ÃĄlbum", + "error_adding_users_to_album": "Error al aÃąadir los usuarios al ÃĄlbum", "error_deleting_shared_user": "Error al eliminar usuario compartido", "error_downloading": "Error al descargar {filename}", "error_hiding_buy_button": "Error al ocultar el botÃŗn de compra", @@ -981,14 +996,14 @@ "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", "something_went_wrong": "Algo saliÃŗ mal", - "unable_to_add_album_users": "No se pueden agregar usuarios al ÃĄlbum", - "unable_to_add_assets_to_shared_link": "No se pueden agregar archivos al enlace compartido", - "unable_to_add_comment": "No se puede agregar comentario", - "unable_to_add_exclusion_pattern": "No se puede agregar el patrÃŗn de exclusiÃŗn", - "unable_to_add_partners": "No se pueden agregar compaÃąeros", + "unable_to_add_album_users": "No se pueden aÃąadir usuarios al ÃĄlbum", + "unable_to_add_assets_to_shared_link": "No se pueden aÃąadir archivos al enlace compartido", + "unable_to_add_comment": "No se puede aÃąadir comentario", + "unable_to_add_exclusion_pattern": "No se puede aÃąadir el patrÃŗn de exclusiÃŗn", + "unable_to_add_partners": "No se pueden aÃąadir miembros", "unable_to_add_remove_archive": "No se puede archivar {archived, select, true {remove asset from} other {add asset to}}", - "unable_to_add_remove_favorites": "{favorite, select, true {No se pudo agregar el elemento a los favoritos} other {No se pudo eliminar el elemento de los favoritos}}", - "unable_to_archive_unarchive": "{archived, select, true {No se pudo agregar el elemento al archivo} other {No se pudo quitar el elemento del archivo}}", + "unable_to_add_remove_favorites": "No se pudo {favorite, select, true {aÃąadir el elemento a} other {eliminar el elemento de}} los favoritos", + "unable_to_archive_unarchive": "No se pudo {archived, select, true {agregar el elemento al} other {quitar el elemento del}} archivo", "unable_to_change_album_user_role": "No se puede cambiar la funciÃŗn del usuario del ÃĄlbum", "unable_to_change_date": "No se puede cambiar la fecha", "unable_to_change_description": "Imposible cambiar la descripciÃŗn", @@ -1063,13 +1078,13 @@ }, "exclusion_pattern": "PatrÃŗn de exclusiÃŗn", "exif": "EXIF", - "exif_bottom_sheet_description": "Agregar descripciÃŗnâ€Ļ", + "exif_bottom_sheet_description": "AÃąadir descripciÃŗnâ€Ļ", "exif_bottom_sheet_description_error": "Error al actualizar la descripciÃŗn", "exif_bottom_sheet_details": "DETALLES", "exif_bottom_sheet_location": "UBICACIÓN", "exif_bottom_sheet_no_description": "Sin descripciÃŗn", "exif_bottom_sheet_people": "PERSONAS", - "exif_bottom_sheet_person_add_person": "Agregar nombre", + "exif_bottom_sheet_person_add_person": "AÃąadir nombre", "exit_slideshow": "Salir de la presentaciÃŗn", "expand_all": "Expandir todo", "experimental_settings_new_asset_list_subtitle": "Trabajo en progreso", @@ -1092,11 +1107,12 @@ "external_network_sheet_info": "Cuando no tengas conexiÃŗn con tu red Wi-Fi preferida, la aplicaciÃŗn se conectarÃĄ al servidor utilizando la primera de las URL siguientes a la que pueda acceder, empezando de arriba hacia abajo", "face_unassigned": "Sin asignar", "failed": "Fallido", + "failed_count": "Fallido: {count}", "failed_to_authenticate": "Fallo al autentificar", "failed_to_load_assets": "Error al cargar los activos", "failed_to_load_folder": "No se pudo cargar la carpeta", "favorite": "Favorito", - "favorite_action_prompt": "{count} agregado(s) a Favoritos", + "favorite_action_prompt": "{count} aÃąadido(s) a Favoritos", "favorite_or_unfavorite_photo": "Foto favorita o no favorita", "favorites": "Favoritos", "favorites_page_no_favorites": "No se encontraron elementos marcados como favoritos", @@ -1147,38 +1163,40 @@ "hash_asset": "Generar hash del archivo", "hashed_assets": "Archivos con hash generado", "hashing": "Generando hash", - "header_settings_add_header_tip": "Agregar cabecera", + "header_settings_add_header_tip": "AÃąadir cabecera", "header_settings_field_validator_msg": "El valor no puede estar vacío", "header_settings_header_name_input": "Nombre de la cabecera", "header_settings_header_value_input": "Valor de la cabecera", "headers_settings_tile_title": "Cabeceras de proxy personalizadas", + "height": "Altura", "hi_user": "Hola {name} ({email})", "hide_all_people": "Ocultar a todas las personas", "hide_gallery": "Ocultar galería", "hide_named_person": "Ocultar persona {name}", "hide_password": "Ocultar contraseÃąa", "hide_person": "Ocultar persona", + "hide_text_recognition": "Ocultar reconocimiento de texto", "hide_unnamed_people": "Ocultar personas anÃŗnimas", - "home_page_add_to_album_conflicts": "{added} elementos agregados al ÃĄlbum {album}.{failed} elementos ya existen en el ÃĄlbum.", - "home_page_add_to_album_err_local": "AÃēn no se pueden agregar elementos locales a ÃĄlbumes, omitiendo", - "home_page_add_to_album_success": "Se agregaron {added} elementos al ÃĄlbum {album}.", - "home_page_album_err_partner": "AÃēn no se pueden agregar elementos a un ÃĄlbum de un compaÃąero, omitiendo", + "home_page_add_to_album_conflicts": "{added} elementos aÃąadidos al ÃĄlbum {album}.{failed} elementos ya existen en el ÃĄlbum.", + "home_page_add_to_album_err_local": "AÃēn no se pueden aÃąadir elementos locales a ÃĄlbumes, omitiendo", + "home_page_add_to_album_success": "Se aÃąadieron {added} elementos al ÃĄlbum {album}.", + "home_page_album_err_partner": "AÃēn no se pueden aÃąadir elementos de un compaÃąero a un ÃĄlbum , omitiendo", "home_page_archive_err_local": "Los elementos locales no pueden ser archivados, omitiendo", - "home_page_archive_err_partner": "No se pueden archivar los elementos de un compaÃąero; omitiendo", + "home_page_archive_err_partner": "No se pueden archivar los elementos de un compaÃąero, omitiendo", "home_page_building_timeline": "Construyendo la línea de tiempo", - "home_page_delete_err_partner": "No se pueden eliminar los elementos de un compaÃąero; omitiendo", + "home_page_delete_err_partner": "No se pueden eliminar los elementos de un compaÃąero, omitiendo", "home_page_delete_remote_err_local": "Elementos locales en la selecciÃŗn de eliminaciÃŗn remota, omitiendo", - "home_page_favorite_err_local": "AÃēn no se pueden archivar elementos locales, omitiendo", - "home_page_favorite_err_partner": "AÃēn no se pueden marcar los elementos de un compaÃąero como favoritos; omitiendo", - "home_page_first_time_notice": "Si es la primera vez que usas la aplicaciÃŗn, asegÃērate de elegir un ÃĄlbum de copia de seguridad para que la línea de tiempo pueda mostrar fotos y vídeos en Êl", - "home_page_locked_error_local": "No se pueden mover archivos locales a una carpeta protegida; omitiendo", + "home_page_favorite_err_local": "AÃēn no se pueden marcar como favoritos los elementos locales, omitiendo", + "home_page_favorite_err_partner": "AÃēn no se pueden marcar los como favoritos los elementos de un compaÃąero, omitiendo", + "home_page_first_time_notice": "Si es la primera vez que usas la aplicaciÃŗn, asegÃērate de elegir un ÃĄlbum como copia de seguridad para que la línea de tiempo pueda mostrar fotos y vídeos en Êl", + "home_page_locked_error_local": "No se pueden mover elementos locales a una carpeta protegida, omitiendo", "home_page_locked_error_partner": "No se pueden mover los elementos de un compaÃąero a una carpeta protegida; omitiendo", "home_page_share_err_local": "No se pueden compartir elementos locales a travÊs de un enlace, omitiendo", "home_page_upload_err_limit": "Solo se pueden subir 30 elementos simultÃĄneamente, omitiendo", "host": "Host", "hour": "Hora", "hours": "Horas", - "id": "Id.", + "id": "ID", "idle": "Inactivo", "ignore_icloud_photos": "Ignorar fotos de iCloud", "ignore_icloud_photos_description": "Las fotos almacenadas en iCloud no se subirÃĄn a Immich", @@ -1273,6 +1291,7 @@ "local": "Local", "local_asset_cast_failed": "No es posible transmitir un recurso que no estÃĄ subido al servidor", "local_assets": "Archivos Locales", + "local_id": "ID local", "local_media_summary": "Resumen de Medios Locales", "local_network": "Red local", "local_network_sheet_info": "La aplicaciÃŗn se conectarÃĄ al servidor a travÊs de esta URL cuando utilice la red Wi-Fi especificada", @@ -1336,7 +1355,7 @@ "manage_media_access_subtitle": "Permitir a la app Immich gestionar y mover archivos multimedia.", "manage_media_access_title": "Acceso a gestiÃŗn de archivos multimedia", "manage_shared_links": "Administrar enlaces compartidos", - "manage_sharing_with_partners": "Gestionar el uso compartido con compaÃąeros", + "manage_sharing_with_partners": "Gestionar el uso compartido con miembros", "manage_the_app_settings": "Administrar la configuraciÃŗn de la aplicaciÃŗn", "manage_your_account": "Gestiona tu cuenta", "manage_your_api_keys": "Administre sus claves API", @@ -1361,11 +1380,11 @@ "map_settings_date_range_option_years": "Últimos {years} aÃąos", "map_settings_dialog_title": "Ajustes del mapa", "map_settings_include_show_archived": "Incluir archivados", - "map_settings_include_show_partners": "Incluir compaÃąeros", + "map_settings_include_show_partners": "Incluir miembros", "map_settings_only_show_favorites": "Mostrar solo favoritas", "map_settings_theme_settings": "Apariencia del Mapa", "map_zoom_to_see_photos": "Alejar para ver fotos", - "mark_all_as_read": "Marcar todas como leídas", + "mark_all_as_read": "Marcar todo como leído", "mark_as_read": "Marcar como leído", "marked_all_as_read": "Todos marcados como leídos", "matches": "Coincidencias", @@ -1399,7 +1418,7 @@ "move": "Mover", "move_off_locked_folder": "Sacar de la carpeta protegida", "move_to": "Mover a", - "move_to_lock_folder_action_prompt": "{count} agregado(s) a la carpeta protegida", + "move_to_lock_folder_action_prompt": "{count} aÃąadido(s) a la carpeta protegida", "move_to_locked_folder": "Mover a la carpeta protegida", "move_to_locked_folder_confirmation": "Estas fotos y vídeos se eliminarÃĄn de todos los ÃĄlbumes; solo se podrÃĄn ver en la carpeta protegida", "moved_to_archive": "Movido(s) {count, plural, one {# recurso} other {# recursos}} a archivo", @@ -1448,7 +1467,7 @@ "no_duplicates_found": "No se encontraron duplicados.", "no_exif_info_available": "No hay informaciÃŗn exif disponible", "no_explore_results_message": "Sube mÃĄs fotos para explorar tu colecciÃŗn.", - "no_favorites_message": "Agregue favoritos para encontrar rÃĄpidamente sus mejores fotos y videos", + "no_favorites_message": "AÃąade favoritos para encontrar rÃĄpidamente sus mejores fotos y videos", "no_libraries_message": "Crea una biblioteca externa para ver tus fotos y vídeos", "no_local_assets_found": "No se encontraron elementos locales con esta suma de comprobaciÃŗn", "no_location_set": "No se ha establecido ninguna ubicaciÃŗn", @@ -1511,6 +1530,7 @@ "other_variables": "Otras variables", "owned": "Propios", "owner": "Propietario", + "page": "PÃĄgina", "partner": "CompaÃąero", "partner_can_access": "{partner} tiene acceso", "partner_can_access_assets": "Todas tus fotos y vídeos excepto los Archivados y Eliminados", @@ -1518,13 +1538,13 @@ "partner_list_user_photos": "Fotos de {user}", "partner_list_view_all": "Ver todas", "partner_page_empty_message": "Tus fotos aÃēn no se han compartido con ningÃēn compaÃąero.", - "partner_page_no_more_users": "No hay mÃĄs usuarios para agregar", - "partner_page_partner_add_failed": "No se pudo agregar el compaÃąero", + "partner_page_no_more_users": "No hay mÃĄs usuarios para aÃąadir", + "partner_page_partner_add_failed": "No se pudo aÃąadir al miembro", "partner_page_select_partner": "Seleccionar compaÃąero", "partner_page_shared_to_title": "Compartido con", "partner_page_stop_sharing_content": "{partner} ya no podrÃĄ acceder a tus fotos.", "partner_sharing": "Compartir con compaÃąeros", - "partners": "CompaÃąeros", + "partners": "Miembros", "password": "ContraseÃąa", "password_does_not_match": "Las contraseÃąas no coinciden", "password_required": "ContraseÃąa requerida", @@ -1664,7 +1684,7 @@ "recent-albums": "Últimos ÃĄlbumes", "recent_searches": "BÃēsquedas recientes", "recently_added": "AÃąadidos recientemente", - "recently_added_page_title": "ReciÊn Agregadas", + "recently_added_page_title": "ReciÊn aÃąadidos", "recently_taken": "Tomadas recientemente", "recently_taken_page_title": "Tomadas Recientemente", "refresh": "Actualizar", @@ -1885,7 +1905,7 @@ "setup_pin_code": "Establecer un PIN", "share": "Compartir", "share_action_prompt": "{count} recursos compartidos", - "share_add_photos": "Agregar fotos", + "share_add_photos": "AÃąadir fotos", "share_assets_selected": "{count} seleccionado(s)", "share_dialog_preparing": "Preparando...", "share_link": "Compartir Enlace", @@ -1967,6 +1987,7 @@ "show_slideshow_transition": "Mostrar la transiciÃŗn de las diapositivas", "show_supporter_badge": "Insignia de colaborador", "show_supporter_badge_description": "Mostrar una insignia de colaborador", + "show_text_recognition": "Mostrar reconocimiento de texto", "show_text_search_menu": "Mostrar el menÃē de bÃēsqueda", "shuffle": "Modo aleatorio", "sidebar": "Barra lateral", @@ -2037,6 +2058,7 @@ "tags": "Etiquetas", "tap_to_run_job": "Toca para ejecutar la tarea", "template": "Plantilla", + "text_recognition": "Reconocimiento de texto", "theme": "Tema", "theme_selection": "SelecciÃŗn de tema", "theme_selection_description": "Establece el tema automÃĄticamente como \"claro\" u \"oscuro\" segÃēn las preferencias del sistema/navegador", @@ -2057,7 +2079,7 @@ "third_party_resources": "Recursos de terceros", "time": "Tiempo", "time_based_memories": "Recuerdos basados en tiempo", - "time_based_memories_duration": "NÃēmero de segundos que se mostrarÃĄ cada imagen.", + "time_based_memories_duration": "Cantidad de segundos que se mostrarÃĄ cada imagen.", "timeline": "Cronología", "timezone": "Zona horaria", "to_archive": "Archivar", @@ -2069,6 +2091,7 @@ "to_select": "para seleccionar", "to_trash": "Descartar", "toggle_settings": "Alternar ajustes", + "toggle_theme_description": "Cambiar tema", "total": "Total", "total_usage": "Uso total", "trash": "Papelera", @@ -2158,7 +2181,7 @@ "user_usage_stats_description": "Ver estadísticas de uso de la cuenta", "username": "Nombre de usuario", "users": "Usuarios", - "users_added_to_album_count": "{count, plural, one {# usuario agregado} other {# usuarios agregados}} al ÃĄlbum", + "users_added_to_album_count": "{count, plural, one {# usuario aÃąadido} other {# usuarios aÃąadidos}} al ÃĄlbum", "utilities": "Utilidades", "validate": "Validar", "validate_endpoint_error": "Por favor, introduce una URL vÃĄlida", @@ -2177,6 +2200,7 @@ "view_album": "Ver Álbum", "view_all": "Ver todas", "view_all_users": "Mostrar todos los usuarios", + "view_asset_owners": "Ver propietarios", "view_details": "Ver Detalles", "view_in_timeline": "Ver en la línea de tiempo", "view_link": "Ver enlace", @@ -2193,10 +2217,12 @@ "viewer_unstack": "Desapilar", "visibility_changed": "Visibilidad cambiada para {count, plural, one {# persona} other {# personas}}", "waiting": "Esperando", + "waiting_count": "Esperando: {count}", "warning": "Advertencia", "week": "Semana", "welcome": "Bienvenido", "welcome_to_immich": "Bienvenido a Immich", + "width": "Ancho", "wifi_name": "Nombre Wi-Fi", "workflow": "Flujo de trabajo", "wrong_pin_code": "CÃŗdigo PIN incorrecto", diff --git a/i18n/et.json b/i18n/et.json index 9b9cd08985..b1db7e0466 100644 --- a/i18n/et.json +++ b/i18n/et.json @@ -7,6 +7,7 @@ "action_common_update": "Uuenda", "actions": "Tegevused", "active": "Aktiivne", + "active_count": "Aktiivsed: {count}", "activity": "Aktiivsus", "activity_changed": "Aktiivsus on {enabled, select, true {lubatud} other {keelatud}}", "add": "Lisa", @@ -67,6 +68,7 @@ "confirm_reprocess_all_faces": "Kas oled kindel, et soovid kÃĩik näod uuesti tÃļÃļdelda? See eemaldab kÃĩik nimega isikud.", "confirm_user_password_reset": "Kas oled kindel, et soovid kasutaja {user} parooli lähtestada?", "confirm_user_pin_code_reset": "Kas oled kindel, et soovid kasutaja {user} PIN-koodi lähtestada?", + "copy_config_to_clipboard_description": "Kopeeri praegune sÃŧsteemi seadistus JSON-objektina lÃĩikelauale", "create_job": "Lisa tÃļÃļde", "cron_expression": "Cron avaldis", "cron_expression_description": "Määra skaneerimise intervall cron formaadis. Rohkema info jaoks vaata nt. Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "Keela sisselogimine", "duplicate_detection_job_description": "Rakenda Ãŧksustele masinÃĩpet, et leida sarnaseid pilte. Kasutab nutiotsingut", "exclusion_pattern_description": "Välistamismustrid vÃĩimaldavad ignoreerida faile ja kaustu selle kogu skaneerimisel. See on kasulik, kui sul on kaustu, mis sisaldavad faile, mida sa ei soovi importida, nagu RAW failid.", - "external_library_management": "Väliste kogude haldus", + "export_config_as_json_description": "Laadi praegune sÃŧsteemi seadistus JSON-failina alla", + "external_libraries_page_description": "Administraatori väliste kogude leht", "face_detection": "Näoavastus", "face_detection_description": "Avasta Ãŧksustest nägusid masinÃĩppe abil. Videote puhul kasutatakse ainult pisipilti. \"Värskenda\" tÃļÃļtleb kÃĩik Ãŧksused uuesti. \"Lähtesta\" kustutab lisaks kÃĩik seni leitud näod. \"Puuduvad\" vÃĩtab ette Ãŧksused, mida pole veel tÃļÃļdeldud. Avastatud näod suunatakse näotuvastusse, et grupeerida nad olemasolevateks vÃĩi uuteks isikuteks.", "facial_recognition_job_description": "Grupeeri avastatud näod inimesteks. See samm käivitub siis, kui näoavastus on lÃĩppenud. \"Lähtesta\" grupeerib kÃĩik näod uuesti. \"Puuduvad\" vÃĩtab ette näod, mida pole isikuga seostatud.", @@ -102,17 +105,18 @@ "image_thumbnail_description": "Väike pisipilt ilma metaandmeteta, kasutusel fotode grupikaupa vaatamisel, näiteks ajajoonel", "image_thumbnail_quality_description": "Pisipildi kvaliteet vahemikus 1-100. KÃĩrgem väärtus on parem, aga tekitab suuremaid faile ning vÃĩib mÃĩjutada rakenduse tÃļÃļkiirust.", "image_thumbnail_title": "Pisipildi seaded", + "import_config_from_json_description": "Impordi sÃŧsteemi seadistus JSON-faili Ãŧleslaadimise teel", "job_concurrency": "{job} samaaegsus", "job_created": "TÃļÃļde lisatud", "job_not_concurrency_safe": "Seda tÃļÃļdet pole ohutu samaaegselt käivitada.", "job_settings": "TÃļÃļdete seaded", "job_settings_description": "Halda tÃļÃļdete samaaegsust", - "job_status": "TÃļÃļte seisund", "jobs_delayed": "{jobCount, plural, other {# edasi lÃŧkatud}}", "jobs_failed": "{jobCount, plural, other {# ebaÃĩnnestus}}", + "jobs_over_time": "TÃļÃļted aja jooksul", "library_created": "Lisatud kogu: {library}", "library_deleted": "Kogu kustutatud", - "library_details": "Kogu detailid", + "library_details": "Kogu Ãŧksikasjad", "library_folder_description": "Vali kaust, mida importida. Sellest kaustast ja alamkaustadest otsitakse pilte ja videosid.", "library_remove_exclusion_pattern_prompt": "Kas oled kindel, et soovid selle välistamismustri eemaldada?", "library_remove_folder_prompt": "Kas oled kindel, et soovid selle impordikausta eemaldada?", @@ -182,6 +186,7 @@ "maintenance_start": "Käivita hooldusreÅžiim", "maintenance_start_error": "HooldusreÅžiimi käivitamine ebaÃĩnnestus.", "manage_concurrency": "Halda samaaegsust", + "manage_concurrency_description": "TÃļÃļdete samaaegsuse haldamiseks mine tÃļÃļdete lehele", "manage_log_settings": "Halda logi seadeid", "map_dark_style": "Tume stiil", "map_enable_description": "Luba kaardi funktsioonid", @@ -271,10 +276,14 @@ "password_settings_description": "Halda parooliga sisselogimise seadeid", "paths_validated_successfully": "KÃĩik teed edukalt valideeritud", "person_cleanup_job": "Isikute korrastamine", + "queue_details": "Järjekorra Ãŧksikasjad", + "queues": "TÃļÃļdete järjekorrad", + "queues_page_description": "Administraatori tÃļÃļdete järjekordade leht", "quota_size_gib": "Kvoot (GiB)", "refreshing_all_libraries": "KÃĩikide kogude värskendamine", "registration": "Administraatori registreerimine", "registration_description": "Kuna sa oled sÃŧsteemis esimene kasutaja, määratakse sind administraatoriks, ning sa saad lisada täiendavaid kasutajaid.", + "remove_failed_jobs": "Eemalda ebaÃĩnnestunud tÃļÃļted", "require_password_change_on_login": "NÃĩua kasutajalt esmakordsel sisenemisel parooli muutmist", "reset_settings_to_default": "Lähtesta seaded", "reset_settings_to_recent_saved": "Taasta hiljuti salvestatud seaded", @@ -287,8 +296,10 @@ "server_public_users_description": "Kasutaja jagatud albumisse lisamisel kuvatakse kÃĩiki kasutajaid (nime ja e-posti aadressiga). Kui keelatud, kuvatakse kasutajate nimekirja ainult administraatoritele.", "server_settings": "Serveri seaded", "server_settings_description": "Halda serveri seadeid", + "server_stats_page_description": "Administraatori serveri statistika leht", "server_welcome_message": "Tervitusteade", "server_welcome_message_description": "Teade, mida kuvatakse sisselogimise lehel.", + "settings_page_description": "Administraatori seadete leht", "sidecar_job": "Väliste failide metaandmed", "sidecar_job_description": "Avasta vÃĩi sÃŧnkroniseeri väliste failide metaandmed failisÃŧsteemist", "slideshow_duration_description": "Mitu sekundit igat pilti kuvada", @@ -399,7 +410,7 @@ "user_delete_delay_settings_description": "Päevade arv, pärast mida kustutatakse eemaldatud kasutaja konto ja Ãŧksused jäädavalt. Kasutajate kustutamise tÃļÃļde käivitub keskÃļÃļl, et otsida kustutamiseks valmis kasutajaid. Selle seadistuse muudatused rakenduvad järgmisel käivitumisel.", "user_delete_immediately": "Kasutaja {user} konto ja Ãŧksused suunatakse koheselt jäädavale kustutamisele.", "user_delete_immediately_checkbox": "Suuna kasutaja ja Ãŧksused jäädavale kustutamisele", - "user_details": "Kasutaja detailid", + "user_details": "Kasutaja Ãŧksikasjad", "user_management": "Kasutajate haldus", "user_password_has_been_reset": "Kasutaja parool on lähtestatud:", "user_password_reset_description": "Sisesta kasutajale ajutine parool ja teavita teda, et järgmisel sisselogimisel tuleb parool ära muuta.", @@ -407,7 +418,8 @@ "user_restore_scheduled_removal": "Taasta kasutaja - eemaldamine planeeritud {date, date, long}", "user_settings": "Kasutajate seaded", "user_settings_description": "Halda kasutajate seadeid", - "user_successfully_removed": "Kasutaja {email} on eemaldatud.", + "user_successfully_removed": "Kasutaja {email} edukalt eemaldatud.", + "users_page_description": "Administraatori kasutajate leht", "version_check_enabled_description": "Luba versioonikontroll", "version_check_implications": "Versioonikontroll vajab perioodilist Ãŧhendumist github.com-iga", "version_check_settings": "Versioonikontroll", @@ -640,6 +652,7 @@ "backup_options_page_title": "Varundamise valikud", "backup_setting_subtitle": "Halda taustal ja esiplaanil Ãŧleslaadimise seadeid", "backup_settings_subtitle": "Halda Ãŧleslaadimise seadeid", + "backup_upload_details_page_more_details": "Puuduta rohkema info saamiseks", "backward": "Tagasi", "biometric_auth_enabled": "Biomeetriline autentimine lubatud", "biometric_locked_out": "Biomeetriline autentimine on blokeeritud", @@ -706,6 +719,7 @@ "check_corrupt_asset_backup_button": "Teosta kontroll", "check_corrupt_asset_backup_description": "Käivita see kontroll ainult WiFi-vÃĩrgus ja siis, kui kÃĩik Ãŧksused on varundatud. See protseduur vÃĩib kesta mÃĩne minuti.", "check_logs": "Vaata logisid", + "checksum": "Kontrollsumma", "choose_matching_people_to_merge": "Vali kattuvad isikud, mida Ãŧhendada", "city": "Linn", "clear": "TÃŧhjenda", @@ -728,6 +742,7 @@ "collapse_all": "Peida kÃĩik", "color": "Värv", "color_theme": "Värviteema", + "command": "Käsk", "comment_deleted": "Kommentaar kustutatud", "comment_options": "Kommentaari valikud", "comments_and_likes": "Kommentaarid ja meeldimised", @@ -1092,6 +1107,7 @@ "external_network_sheet_info": "Kui seade ei ole eelistatud WiFi-vÃĩrgus, Ãŧhendub rakendus serveriga allolevatest URL-idest esimese kättesaadava kaudu, alustades Ãŧlevalt", "face_unassigned": "Seostamata", "failed": "EbaÃĩnnestus", + "failed_count": "EbaÃĩnnestunud: {count}", "failed_to_authenticate": "Autentimine ebaÃĩnnestus", "failed_to_load_assets": "Üksuste laadimine ebaÃĩnnestus", "failed_to_load_folder": "Kausta laadimine ebaÃĩnnestus", @@ -1152,6 +1168,7 @@ "header_settings_header_name_input": "Päise nimi", "header_settings_header_value_input": "Päise väärtus", "headers_settings_tile_title": "Kohandatud vaheserveri päised", + "height": "KÃĩrgus", "hi_user": "Tere {name} ({email})", "hide_all_people": "Peida kÃĩik isikud", "hide_gallery": "Peida galerii", @@ -1274,6 +1291,7 @@ "local": "Lokaalsed", "local_asset_cast_failed": "Ei saa edastada Ãŧksust, mis pole serverisse Ãŧles laaditud", "local_assets": "Lokaalsed Ãŧksused", + "local_id": "Lokaalne ID", "local_media_summary": "Lokaalsete Ãŧksuste kokkuvÃĩte", "local_network": "Kohalik vÃĩrk", "local_network_sheet_info": "Rakendus Ãŧhendub valitud Wi-Fi vÃĩrgus olles serveriga selle URL-i kaudu", @@ -1512,6 +1530,7 @@ "other_variables": "Muud muutujad", "owned": "Minu omad", "owner": "Omanik", + "page": "Leht", "partner": "Partner", "partner_can_access": "{partner} pääseb ligi", "partner_can_access_assets": "KÃĩik su fotod ja videod, välja arvatud arhiveeritud ja kustutatud", @@ -2072,6 +2091,7 @@ "to_select": "vali", "to_trash": "PrÃŧgikasti", "toggle_settings": "Kuva/peida seaded", + "toggle_theme_description": "Vaheta teema", "total": "Kokku", "total_usage": "Kogukasutus", "trash": "PrÃŧgikast", @@ -2180,6 +2200,7 @@ "view_album": "Vaata albumit", "view_all": "Vaata kÃĩiki", "view_all_users": "Vaata kÃĩiki kasutajaid", + "view_asset_owners": "Vaata Ãŧksuse omanikke", "view_details": "Vaata Ãŧksikasju", "view_in_timeline": "Vaata ajajoonel", "view_link": "Vaata linki", @@ -2196,10 +2217,12 @@ "viewer_unstack": "Eralda", "visibility_changed": "{count, plural, one {# isiku} other {# isiku}} nähtavus muudetud", "waiting": "Ootel", + "waiting_count": "Ootel: {count}", "warning": "Hoiatus", "week": "Nädal", "welcome": "Tere tulemast", "welcome_to_immich": "Tere tulemast Immich'isse", + "width": "Laius", "wifi_name": "WiFi-vÃĩrgu nimi", "workflow": "TÃļÃļvoog", "wrong_pin_code": "Vale PIN-kood", diff --git a/i18n/eu.json b/i18n/eu.json index 0a6a93ab36..b335f837ca 100644 --- a/i18n/eu.json +++ b/i18n/eu.json @@ -62,7 +62,6 @@ "image_thumbnail_title": "Argazki Txikien Konfigurazioa", "job_created": "Zeregina sortuta", "job_settings": "Zereginaren konfigurazioa", - "job_status": "Zereginaren Egoera", "logging_enable_description": "Gaitu erregistroak", "logging_level_description": "Erregistroak gaituta daudenean, nolako erregistro maila erabili.", "logging_settings": "Erregistroak", diff --git a/i18n/fa.json b/i18n/fa.json index 0ad0a84190..16937fd3ef 100644 --- a/i18n/fa.json +++ b/i18n/fa.json @@ -53,7 +53,6 @@ "disable_login": "ØēÛŒØąŲØšØ§Ų„ ÚŠØąØ¯Ų† ŲˆØąŲˆØ¯", "duplicate_detection_job_description": "اØŦØąØ§ÛŒ ÛŒØ§Ø¯Ú¯ÛŒØąÛŒ Ų…Ø§Ø´ÛŒŲ† Ø¨Øą ØąŲˆÛŒ ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ Ø¨ØąØ§ÛŒ Ø´Ų†Ø§ØŗØ§ÛŒÛŒ ØĒØĩØ§ŲˆÛŒØą Ų…Ø´Ø§Ø¨Ų‡. Ø§ÛŒŲ† ŲˆØ§Ø¨ØŗØĒŲ‡ Ø¨Ų‡ ØŦØŗØĒØŦŲˆÛŒ Ų‡ŲˆØ´Ų…Ų†Ø¯ Ø§ØŗØĒ", "exclusion_pattern_description": "Ø§Ų„Ú¯ŲˆŲ‡Ø§ÛŒ Ø§ØŗØĒØĢŲ†Ø§ Ø¨Ų‡ Ø´Ų…Ø§ Ø§Ų…ÚŠØ§Ų† Ų…ÛŒâ€ŒØ¯Ų‡Ø¯ Ų‡Ų†Ú¯Ø§Ų… Ø§ØŗÚŠŲ† ÚŠØĒØ§Ø¨ØŽØ§Ų†Ų‡ ØŽŲˆØ¯ ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ ؈ ŲžŲˆØ´Ų‡â€ŒŲ‡Ø§ ØąØ§ Ų†Ø§Ø¯ÛŒØ¯Ų‡ Ø¨Ú¯ÛŒØąÛŒØ¯ . Ø§ÛŒŲ† Ų…ŲÛŒØ¯ Ø§ØŗØĒ Ø§Ú¯Øą ŲžŲˆØ´Ų‡â€ŒŲ‡Ø§ÛŒÛŒ Ø¯Ø§ØąÛŒØ¯ ÚŠŲ‡ ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ÛŒÛŒ ØąØ§ Ø´Ø§Ų…Ų„ Ų…ÛŒâ€ŒØ´ŲˆŲ†Ø¯ ÚŠŲ‡ Ų†Ų…ÛŒâ€ŒØŽŲˆØ§Ų‡ÛŒØ¯ ŲˆØ§ØąØ¯ ÚŠŲ†ÛŒØ¯ØŒ Ų…Ø§Ų†Ų†Ø¯ ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ÛŒ RAW.", - "external_library_management": "Ų…Ø¯ÛŒØąÛŒØĒ ÚŠØĒØ§Ø¨ØŽØ§Ų†Ų‡ ØŽØ§ØąØŦی", "face_detection": "ØĒØ´ØŽÛŒØĩ Ú†Ų‡ØąŲ‡", "face_detection_description": "ØĒØ´ØŽÛŒØĩ Ú†Ų‡ØąŲ‡â€ŒŲ‡Ø§ Ø¯Øą ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ با Ø§ØŗØĒŲØ§Ø¯Ų‡ Ø§Ø˛ ÛŒØ§Ø¯Ú¯ÛŒØąÛŒ Ų…Ø§Ø´ÛŒŲ†. Ø¨ØąØ§ÛŒ ŲˆÛŒØ¯ÛŒŲˆŲ‡Ø§ØŒ ØĒŲ†Ų‡Ø§ ØĒØĩŲˆÛŒØą Ø¨Ų†Ø¯Ø§Ų†Ú¯Ø´ØĒی Ø¯Øą Ų†Ø¸Øą Ú¯ØąŲØĒŲ‡ Ų…ÛŒâ€ŒØ´ŲˆØ¯. Ú¯Ø˛ÛŒŲ†Ų‡ \"Ų‡Ų…Ų‡\" ØĒŲ…Ø§Ų… ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ ØąØ§ (Ų…ØŦددا) ŲžØąØ¯Ø§Ø˛Ø´ Ų…ÛŒâ€ŒÚŠŲ†Ø¯. Ú¯Ø˛ÛŒŲ†Ų‡ \"Ú¯Ų…Ø´Ø¯Ų‡\" ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ ØąØ§ Ø¯Øą Øĩ؁ Ų‚ØąØ§Øą Ų…ÛŒâ€ŒØ¯Ų‡Ø¯ ÚŠŲ‡ Ų‡Ų†ŲˆØ˛ ŲžØąØ¯Ø§Ø˛Ø´ Ų†Ø´Ø¯Ų‡â€ŒØ§Ų†Ø¯. Ú†Ų‡ØąŲ‡â€ŒŲ‡Ø§ÛŒ ØĒØ´ØŽÛŒØĩ Ø¯Ø§Ø¯Ų‡ Ø´Ø¯Ų‡ ŲžØŗ Ø§Ø˛ اØĒŲ…Ø§Ų… ØĒØ´ØŽÛŒØĩ Ú†Ų‡ØąŲ‡ØŒ Ø¨ØąØ§ÛŒ ØĒØ´ØŽÛŒØĩ Ú†Ų‡ØąŲ‡ Ø¨Ų‡ ØĩŲˆØąØĒ Øĩ؁ Ø§Ų†ØĒØ¸Ø§Øą Ų‚ØąØ§Øą Ų…ÛŒâ€ŒÚ¯ÛŒØąŲ†Ø¯ØŒ ØĸŲ†â€ŒŲ‡Ø§ ØąØ§ Ø¨Ų‡ Ø§ŲØąØ§Ø¯ Ų…ŲˆØŦŲˆØ¯ یا ØŦدید Ú¯ØąŲˆŲ‡â€ŒØ¨Ų†Ø¯ÛŒ Ų…ÛŒâ€ŒÚŠŲ†Ø¯.", "facial_recognition_job_description": "Ú¯ØąŲˆŲ‡â€ŒØ¨Ų†Ø¯ÛŒ Ú†Ų‡ØąŲ‡â€ŒŲ‡Ø§ÛŒ ØĒØ´ØŽÛŒØĩ Ø¯Ø§Ø¯Ų‡ Ø´Ø¯Ų‡ Ø¨Ų‡ Ø§ŲØąØ§Ø¯. Ø§ÛŒŲ† Ų…ØąØ­Ų„Ų‡ ŲžØŗ Ø§Ø˛ ØĒØ´ØŽÛŒØĩ Ú†Ų‡ØąŲ‡ Ø§Ų†ØŦØ§Ų… Ų…ÛŒâ€ŒØ´ŲˆØ¯. Ú¯Ø˛ÛŒŲ†Ų‡ \"Ų‡Ų…Ų‡\" ØĒŲ…Ø§Ų… Ú†Ų‡ØąŲ‡â€ŒŲ‡Ø§ ØąØ§ (Ų…ØŦددا) Ø¯ØŗØĒŲ‡ Ø¨Ų†Ø¯ÛŒ Ų…ÛŒâ€ŒÚŠŲ†Ø¯. Ú¯Ø˛ÛŒŲ†Ų‡ \"Ú¯Ų…Ø´Ø¯Ų‡\" Ú†Ų‡ØąŲ‡â€ŒŲ‡Ø§ ØąØ§ Ø¯Øą Øĩ؁ Ų‚ØąØ§Øą Ų…ÛŒâ€ŒØ¯Ų‡Ø¯ ÚŠŲ‡ Ø¨Ų‡ Ų‡ÛŒÚ† ŲØąØ¯ÛŒ ا؎ØĒØĩاØĩ Ø¯Ø§Ø¯Ų‡ Ų†Ø´Ø¯Ų‡â€ŒØ§Ų†Ø¯.", @@ -81,7 +80,6 @@ "job_not_concurrency_safe": "Ø§ÛŒŲ† ÚŠØ§Øą Ø§ÛŒŲ…Ų†ÛŒ Ų‡Ų…Ø˛Ų…Ø§Ų†ÛŒ ØąØ§ ØĒØļŲ…ÛŒŲ† Ų†Ų…ÛŒâ€ŒÚŠŲ†Ø¯.", "job_settings": "ØĒŲ†Ø¸ÛŒŲ…Ø§ØĒ ÚŠØ§Øą", "job_settings_description": "Ų…Ø¯ÛŒØąÛŒØĒ Ų‡Ų…Ø˛Ų…Ø§Ų†ÛŒ ÚŠØ§Øą", - "job_status": "؈ØļØšÛŒØĒ ÚŠØ§Øą", "library_created": "ÚŠØĒØ§Ø¨ØŽØ§Ų†Ų‡ ایØŦاد Ø´Ø¯Ų‡: {library}", "library_deleted": "ÚŠØĒØ§Ø¨ØŽØ§Ų†Ų‡ Ø­Ø°Ų شد", "library_scanning": "Ø§ØŗÚŠŲ† Ø¯ŲˆØąŲ‡ ای", @@ -293,7 +291,6 @@ "user_restore_scheduled_removal": "Ø¨Ø§Ø˛ÛŒØ§Ø¨ÛŒ ÚŠØ§ØąØ¨Øą - Ø­Ø°Ų Ø¨ØąŲ†Ø§Ų…Ų‡ ØąÛŒØ˛ÛŒ Ø´Ø¯Ų‡ Ø¯Øą {date, date, long}", "user_settings": "ØĒŲ†Ø¸ÛŒŲ…Ø§ØĒ ÚŠØ§ØąØ¨Øą", "user_settings_description": "Ų…Ø¯ÛŒØąÛŒØĒ ØĒŲ†Ø¸ÛŒŲ…Ø§ØĒ ÚŠØ§ØąØ¨Øą", - "user_successfully_removed": "ÚŠØ§ØąØ¨Øą {email} با Ų…ŲˆŲŲ‚ÛŒØĒ Ø­Ø°Ų شد.", "version_check_enabled_description": "ŲØšØ§Ų„â€ŒØŗØ§Ø˛ÛŒ Ø¨ØąØąØŗÛŒ Ų†ØŗØŽŲ‡", "version_check_implications": "ŲˆÛŒÚ˜Ú¯ÛŒ Ø¨ØąØąØŗÛŒ Ų†ØŗØŽŲ‡ Ø¨Ų‡ Ø§ØąØĒØ¨Ø§Øˇ Ø¯ŲˆØąŲ‡ ای با github.com Ų…ØĒÚŠÛŒ Ø§ØŗØĒ", "version_check_settings": "Ø¨ØąØąØŗÛŒ Ų†ØŗØŽŲ‡", diff --git a/i18n/fi.json b/i18n/fi.json index 106cb65d16..3eab7b3df7 100644 --- a/i18n/fi.json +++ b/i18n/fi.json @@ -7,6 +7,7 @@ "action_common_update": "Päivitä", "actions": "Toimintoja", "active": "Aktiivinen", + "active_count": "Aktiivisia: {count}", "activity": "Tapahtumat", "activity_changed": "Toiminto {enabled, select, true {otettu käyttÃļÃļn} other {poistettu käytÃļstä}}", "add": "Lisää", @@ -67,6 +68,7 @@ "confirm_reprocess_all_faces": "Haluatko varmasti käsitellä uudelleen kaikki kasvot? Tämä poistaa myÃļs nimetyt henkilÃļt.", "confirm_user_password_reset": "Haluatko varmasti nollata käyttäjän {user} salasanan?", "confirm_user_pin_code_reset": "Haluatko varmasti nollata käyttäjän {user} PIN-koodin?", + "copy_config_to_clipboard_description": "Kopio järjestelmän asetukset JSON-objektina leikepÃļydälle", "create_job": "Luo tehtävä", "cron_expression": "Cron-lauseke", "cron_expression_description": "Aseta skannausväli käyttämällä cron-formaattia. Lisätietoja linkistä. Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "Poista kirjautuminen käytÃļstä", "duplicate_detection_job_description": "Tunnista samankaltaiset kuvat käyttäen koneoppimista. Tukeutuu Smart Search:iin", "exclusion_pattern_description": "Poissulkemismallit mahdollistavat tiettyjen tiedostojen ja kansioiden jättämisen pois kirjastoasi skannatessa. Tästä on hyÃļtyä jos kansiot sisältävät tiedostoja mitä et halua tuoda, kuten RAW-tiedostot.", - "external_library_management": "Ulkoisen kirjaston hallinta", + "export_config_as_json_description": "Lataa nykyiset järjestelmän asetukset JSON-tiedostona", + "external_libraries_page_description": "Pääkäyttäjän ulkoisen kirjaston sivu", "face_detection": "Kasvojen havaitseminen", "face_detection_description": "Tunnista sisällÃļn kasvoja käyttäen koneoppimista. Videoiden osalta vain pikkukuva tunnistetaan. \"Päivitä\" (uudelleen)prosessoi koko sisällÃļn.\"Nollaa\" lisäksi puhdistaa kaiken kasvo-datan. \"Puuttuvat\" prosessoi sisällÃļn, jota ei vielä ole käyty läpi. Havaitut kasvot ryhmitellään jo tunnistettujen kanssa, tai lisätään uusina henkilÃļinä.", "facial_recognition_job_description": "Ryhmitä havaitut kasvot henkilÃļihin. Tämä vaihe suoritetaan, kun kasvot on ensin havaittu. \"Nollaus\" (uudelleen-)ryhmittelee kaikki kasvot. \"Puuttuvat\" vain ne, joille ei ole määritetty henkilÃļä.", @@ -102,22 +105,28 @@ "image_thumbnail_description": "Pieni pikkukuva, josta metatiedot on poistettu, käytetään valokuvaryhmien katseluun, kuten pääaikajanalla", "image_thumbnail_quality_description": "Pikkukuvan laatu 1-100. Korkeampi arvo on parempi, mutta tuottaa suurempia tiedostoja ja voi heikentää sovelluksen reagointikykyä.", "image_thumbnail_title": "Pikkukuva-asetukset", + "import_config_from_json_description": "Tuo järjestelmän asetukset JSON-tiedostosta", "job_concurrency": "Tehtävän \"{job}\" samanaikaisuus", "job_created": "Tehtävä luotu", "job_not_concurrency_safe": "Tätä tehtävää ei ole turvallista ajaa yhtäaikaisesti.", "job_settings": "Tehtävän asetukset", - "job_settings_description": "Hallitse tehtävän samanaikaisuusasetuksia", - "job_status": "Tehtävän tila", + "job_settings_description": "Hallitse tyÃļn samanaikaisuusasetuksia", "jobs_delayed": "{jobCount, plural, other {# viivästynyttä}}", "jobs_failed": "{jobCount, plural, other {# epäonnistunutta}}", + "jobs_over_time": "Tehtävät ajan kuluessa", "library_created": "Kirjasto {library} luotu", "library_deleted": "Kirjasto poistettu", + "library_details": "Kirjaston tiedot", + "library_folder_description": "Ilmoita kansio tuotavaksi. Tämä kansio ja sen alakansiot skannataan kuvia ja videoita varten.", + "library_remove_exclusion_pattern_prompt": "Oletko varma että haluat poistaa tämän poissulkemismenetelmän?", + "library_remove_folder_prompt": "Oletko varma että haluat poistaa tämän tuodun kansion?", "library_scanning": "Ajoittainen skannaus", "library_scanning_description": "Määritä ajoittaiset kirjastojen skannaukset", "library_scanning_enable_description": "Ota käyttÃļÃļn ajoittaiset kirjastojen skannaukset", "library_settings": "Ulkoinen kirjasto", "library_settings_description": "Hallitse ulkoisen kirjaston asetuksia", "library_tasks_description": "Skannaa ulkoisia kirjastoja uusien ja/tai muutoksien varalta", + "library_updated": "Kirjasto päivitetty", "library_watching_enable_description": "Tarkkaile tiedostojen muuttumisia ulkoisissa kirjastoissa", "library_watching_settings": "Kirjaston tarkkailu (KOKEELLINEN)", "library_watching_settings_description": "Tarkkaile muuttuvia tiedostoja automaattisesti", @@ -172,7 +181,12 @@ "machine_learning_smart_search_enabled": "Ota käyttÃļÃļn älykäs haku", "machine_learning_smart_search_enabled_description": "Jos ei käytÃļssä, kuvia ei koodata älykkäälle etsinnälle.", "machine_learning_url_description": "Koneoppimispalvelimen URL-osoite. Jos lisätään useampi kuin yksi URL-osoite, kutakin osoitetta kohden yritetään kerran, kunnes yksi niistä vastaa. Yritykset tehdään järjestyksessä ensimmäisestä viimeiseen. Palvelimet, jotka eivät vastaa, ohitetaan tilapäisesti, kunnes ne ovat taas tavoitettavissa.", + "maintenance_settings": "Ylläpito", + "maintenance_settings_description": "Laita Immich ylläpitotilaan.", + "maintenance_start": "Käynnistä ylläpitotila", + "maintenance_start_error": "Ylläpitotilan käynnistys epäonnistui.", "manage_concurrency": "Hallitse yhtäaikaisia toimintoja", + "manage_concurrency_description": "Mene tÃļiden sivulle muuttamaan tÃļiden yhtäaikaisuutta", "manage_log_settings": "Hallitse lokien asetuksia", "map_dark_style": "Tumma teema", "map_enable_description": "Ota käyttÃļÃļn karttatoiminnot", @@ -262,10 +276,14 @@ "password_settings_description": "Hallitse salasanakirjautumisen asetuksia", "paths_validated_successfully": "Kaikki polut validoitu", "person_cleanup_job": "HenkilÃļpuhdistus", + "queue_details": "Jonon tiedot", + "queues": "TÃļiden jonot", + "queues_page_description": "Ylläpitäjän tÃļiden jonosivu", "quota_size_gib": "KiintiÃļn koko (Gt)", "refreshing_all_libraries": "Virkistetään kaikki kirjastot", "registration": "Pääkäyttäjän rekisterÃļinti", "registration_description": "Pääkäyttäjänä olet vastuussa järjestelmän hallinnallisista tehtävistä ja uusien käyttäjien luomisesta.", + "remove_failed_jobs": "Poista epäonnistuneet tehtävät", "require_password_change_on_login": "Vaadi käyttäjää vaihtamaan salasana ensimmäisellä kirjautumiskerralla", "reset_settings_to_default": "Nollaa asetukset oletuksille", "reset_settings_to_recent_saved": "Palauta aiemmin tallennetut asetukset", @@ -278,8 +296,10 @@ "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_description": "Ylläpidä palvelimen asetuksia", + "server_stats_page_description": "Ylläpitäjän palvelimen tilastosivu", "server_welcome_message": "Tervetuloviesti", "server_welcome_message_description": "Viesti, joka näytetään kirjautumissivulla.", + "settings_page_description": "Ylläpitäjän asetuksien sivu", "sidecar_job": "Kylkiäismetadata", "sidecar_job_description": "Havaitse tai synkronoi tiedostojen kylkiäismetadatat", "slideshow_duration_description": "Montako sekuntia kuvaa näytetään", @@ -398,7 +418,8 @@ "user_restore_scheduled_removal": "Palauta käyttäjä - Aikataulutettu poisto tapahtuu {date, date, long}", "user_settings": "Käyttäjäasetukset", "user_settings_description": "Hallitse käyttäjäasetuksia", - "user_successfully_removed": "Käyttäjä {email} on poistettu.", + "user_successfully_removed": "Käyttäjä {email} on poistettu onnistuneesti.", + "users_page_description": "Ylläpitäjän käyttäjien lista", "version_check_enabled_description": "Ota käyttÃļÃļn versiotarkastus", "version_check_implications": "Versiotarkistus vaatii säännÃļllisen yhteyden github.comiin", "version_check_settings": "Versiotarkistus", @@ -719,6 +740,7 @@ "collapse_all": "Sulje kaikki", "color": "Väri", "color_theme": "Väriteema", + "command": "Komento", "comment_deleted": "Kommentti poistettu", "comment_options": "Kommentin valinnat", "comments_and_likes": "Kommentit ja tykkäykset", @@ -967,6 +989,7 @@ "failed_to_unstack_assets": "Medioiden pinoamisen purku 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", + "library_folder_already_exists": "Tämä tuonnin polku on jo olemassa.", "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.", "quota_higher_than_disk_size": "Asettamasi kiintiÃļ on suurempi kuin levyn koko", @@ -1051,6 +1074,7 @@ "unable_to_update_user": "Käyttäjän muokkaus epäonnistui", "unable_to_upload_file": "Tiedostoa ei voitu ladata" }, + "exclusion_pattern": "Poissulkemismenetelmä", "exif": "Exif", "exif_bottom_sheet_description": "Lisää kuvausâ€Ļ", "exif_bottom_sheet_description_error": "Kuvauksen muuttaminen epäonnistui", @@ -1081,6 +1105,7 @@ "external_network_sheet_info": "Kun laite ei ole yhteydessä valittuun Wi-Fi-verkkoon, sovellus yrittää muodostaa yhteyden palvelimeen alla olevista URL-osoitteista ylhäältä alas, kunnes yhteys muodostuu", "face_unassigned": "Ei määritelty", "failed": "Epäonnistui", + "failed_count": "Epäonnistuneita: {count}", "failed_to_authenticate": "Todennus epäonnistui", "failed_to_load_assets": "Kohteiden lataus epäonnistui", "failed_to_load_folder": "Kansion lataaminen epäonnistui", @@ -1110,6 +1135,7 @@ "folders_feature_description": "Käytetään kansionäkymää valokuvien ja videoiden selaamiseen järjestelmässä", "forgot_pin_code_question": "Unohditko PIN-koodisi?", "forward": "Eteenpäin", + "full_path": "Koko polku: {path}", "gcast_enabled": "Google Cast", "gcast_enabled_description": "Ominaisuus lataa ulkoisia resursseja Googlelta toimiakseen.", "general": "Yleinen", @@ -1146,6 +1172,7 @@ "hide_named_person": "Piilota henkilÃļn {name}", "hide_password": "Piilota salasana", "hide_person": "Piilota henkilÃļ", + "hide_text_recognition": "Piilota tekstin tunnistus", "hide_unnamed_people": "Piilota nimeämättÃļmät henkilÃļt", "home_page_add_to_album_conflicts": "Lisätty {added} kohdetta albumiin {album}. {failed} kohdetta on jo albumissa.", "home_page_add_to_album_err_local": "Paikallisten kohteiden lisääminen albumeihin ei ole mahdollista, ohitetaan", @@ -1191,6 +1218,8 @@ "import_path": "Tuontipolku", "in_albums": "{count, plural, one {# albumissa} other {# albumissa}}", "in_archive": "Arkistossa", + "in_year": "Vuonna {year}", + "in_year_selector": "Vuosi", "include_archived": "Sisällytä arkistoidut", "include_shared_albums": "Sisällytä jaetut albumit", "include_shared_partner_assets": "Sisällytä jaetut kumppanikohteet", @@ -1227,6 +1256,7 @@ "language_setting_description": "Valitse suosimasi kieli", "large_files": "Suuret tiedostot", "last": "Viimeinen", + "last_months": "{count, plural, one {Viime kuukausi} other {Viimeiset # kuukautta}}", "last_seen": "Viimeksi nähty", "latest_version": "Viimeisin versio", "latitude": "Leveysaste", @@ -1236,6 +1266,8 @@ "let_others_respond": "Anna muiden vastata", "level": "Taso", "library": "Kirjasto", + "library_add_folder": "Lisää kansio", + "library_edit_folder": "Muokkaa kansiota", "library_options": "Kirjastovaihtoehdot", "library_page_device_albums": "Laitteen albumit", "library_page_new_album": "Uusi albumi", @@ -1307,8 +1339,17 @@ "loop_videos_description": "Ota käyttÃļÃļn jatkuva videotoisto tarkemmassa näkymässä.", "main_branch_warning": "Käytät kehitysversiota; suosittelemme vahvasti käyttämään julkaisuversiota!", "main_menu": "Päävalikko", + "maintenance_description": "Immich on asetettu ylläpitotilaan.", + "maintenance_end": "Poistu ylläpitotilasta", + "maintenance_end_error": "Poistuminen ylläpitotilasta epäonnistui.", + "maintenance_logged_in_as": "Kirjautuneena käyttäjänä {user}", + "maintenance_title": "Tilapäisesti ei saatavilla", "make": "Valmistaja", "manage_geolocation": "Muokkaa sijaintia", + "manage_media_access_rationale": "Tämä lupa tarvitaan sisällÃļn siirtämiseen roskakoriin ja sisällÃļn palauttamiseen sieltä.", + "manage_media_access_settings": "Avaa asetukset", + "manage_media_access_subtitle": "Anna Immich-sovellukselle lupa hallinoida ja siirtää mediatiedostoja.", + "manage_media_access_title": "Lupa median hallinnointiin", "manage_shared_links": "Hallitse jaettuja linkkejä", "manage_sharing_with_partners": "Hallitse jakamista kumppaneille", "manage_the_app_settings": "Hallitse sovelluksen asetuksia", @@ -1372,6 +1413,7 @@ "more": "Enemmän", "move": "Siirrä", "move_off_locked_folder": "Siirrä pois lukitusta kansiosta", + "move_to": "Siirrä kohteeseen", "move_to_lock_folder_action_prompt": "{count} lisätty 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", @@ -1401,6 +1443,7 @@ "new_pin_code": "Uusi PIN-koodi", "new_pin_code_subtitle": "Tämä on ensimmäinen kerta, kun käytät lukittua kansiota. Luo PIN-koodi päästäksesi tähän sisältÃļÃļn turvallisesti", "new_timeline": "Uusi aikajana", + "new_update": "Uusi päivitys", "new_user_created": "Uusi käyttäjä lisätty", "new_version_available": "UUSI VERSIO SAATAVILLA", "newest_first": "Uusin ensin", @@ -1416,12 +1459,14 @@ "no_cast_devices_found": "Cast-laitteita ei lÃļytynyt", "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_devices": "Ei valtuutettuja laitteita", "no_duplicates_found": "Kaksoiskappaleita ei lÃļytynyt.", "no_exif_info_available": "EXIF-tietoa ei saatavilla", "no_explore_results_message": "Lataa lisää kuvia tutkiaksesi kokoelmaasi.", "no_favorites_message": "Lisää suosikkeja lÃļytääksesi nopeasti parhaat kuvasi ja videosi", "no_libraries_message": "Luo ulkoinen kirjasto nähdäksesi valokuvasi ja videot", "no_local_assets_found": "Paikallista sisältÃļä ei lÃļytynyt tällä tarkistussummalla", + "no_location_set": "Ei sijaintia asetettuna", "no_locked_photos_message": "Kuvat ja videot lukitussa kansiossa ovat piilotettuja, eivätkä ne näy selatessasi tai etsiessäsi kirjastoasi.", "no_name": "Ei nimeä", "no_notifications": "Ei ilmoituksia", @@ -1432,6 +1477,7 @@ "no_results_description": "Kokeile synonyymiä tai yleisempää avainsanaa", "no_shared_albums_message": "Luo albumi, jotta voit jakaa kuvia ja videoita toisille", "no_uploads_in_progress": "Ei käynnissä olevia latauksia", + "not_allowed": "Ei sallittu", "not_available": "N/A", "not_in_any_album": "Ei yhdessäkään albumissa", "not_selected": "Ei valittu", @@ -1480,6 +1526,7 @@ "other_variables": "Muut muuttujat", "owned": "Omistettu", "owner": "Omistaja", + "page": "Sivu", "partner": "Kumppani", "partner_can_access": "{partner} voi päästä", "partner_can_access_assets": "Kaikki valokuvasi ja videosi, lukuun ottamatta arkistoituja ja poistettuja", @@ -1542,6 +1589,8 @@ "photos_count": "{count, plural, one {{count, number} Kuva} other {{count, number} kuvaa}}", "photos_from_previous_years": "Kuvia edellisiltä vuosilta", "pick_a_location": "Valitse sijainti", + "pick_custom_range": "Mukautettu väli", + "pick_date_range": "Valitse päivämäärien väli", "pin_code_changed_successfully": "PIN-koodin vaihto onnistui", "pin_code_reset_successfully": "PIN-koodin nollaus onnistui", "pin_code_setup_successfully": "PIN-koodin asettaminen onnistui", @@ -1809,6 +1858,8 @@ "server_offline": "Palvelin Offline-tilassa", "server_online": "Palvelin Online-tilassa", "server_privacy": "Palvelimen tietosuoja", + "server_restarting_description": "Tämä sivu latautuu uudelleen hetken kuluttua.", + "server_restarting_title": "Palvelin käynnistyy uudelleen", "server_stats": "Palvelimen tilastot", "server_update_available": "Palvelimeen on saatavilla päivitys", "server_version": "Palvelimen versio", @@ -1932,6 +1983,7 @@ "show_slideshow_transition": "Näytä diaesitys siirtymä", "show_supporter_badge": "Kannattajan merkki", "show_supporter_badge_description": "Näytä kannattajan merkki", + "show_text_recognition": "Näytä tekstin tunnistus", "show_text_search_menu": "Näytä tekstihakuvalikko", "shuffle": "Sekoita", "sidebar": "Sivupalkki", @@ -2002,6 +2054,7 @@ "tags": "Tunnisteet", "tap_to_run_job": "Napauta suorittaaksesi tehtävän", "template": "Nimeämismalli", + "text_recognition": "Tekstin tunnistus", "theme": "Teema", "theme_selection": "Teeman valinta", "theme_selection_description": "Aseta vaalea tai tumma tila automaattisesti perustuen selaimesi asetuksiin", @@ -2034,6 +2087,7 @@ "to_select": "valitsemiseksi", "to_trash": "Roskakoriin", "toggle_settings": "Määritä asetukset", + "toggle_theme_description": "Vaihda teemaa", "total": "Yhteensä", "total_usage": "KäyttÃļ yhteensä", "trash": "Roskakori", @@ -2142,6 +2196,7 @@ "view_album": "Näytä albumi", "view_all": "Näytä kaikki", "view_all_users": "Näytä kaikki käyttäjät", + "view_asset_owners": "Näytä omistajat", "view_details": "Näytä tiedot", "view_in_timeline": "Näytä aikajanalla", "view_link": "Näytä linkki", @@ -2158,11 +2213,13 @@ "viewer_unstack": "Pura pino", "visibility_changed": "{count, plural, one {# henkilÃļn} other {# henkilÃļiden}} näkyvyys vaihdettu", "waiting": "Odottaa", + "waiting_count": "Odottaa: {count}", "warning": "Varoitus", "week": "Viikko", "welcome": "Tervetuloa", "welcome_to_immich": "Tervetuloa Immichiin", "wifi_name": "Wi-Fi-verkon nimi", + "workflow": "TyÃļnkulku", "wrong_pin_code": "Väärä PIN-koodi", "year": "Vuosi", "years_ago": "{years, plural, one {# vuosi} other {# vuotta}} sitten", diff --git a/i18n/fr.json b/i18n/fr.json index 6c32aac0f1..4c871c1c84 100644 --- a/i18n/fr.json +++ b/i18n/fr.json @@ -7,6 +7,7 @@ "action_common_update": "Mettre à jour", "actions": "Actions", "active": "En cours", + "active_count": "Actif : {count}", "activity": "ActivitÊ", "activity_changed": "ActivitÊ {enabled, select, true {activÊe} other {dÊsactivÊe}}", "add": "Ajouter", @@ -67,6 +68,7 @@ "confirm_reprocess_all_faces": "Êtes-vous sÃģr de vouloir retraiter tous les visages ? Cela effacera Êgalement les personnes dÊjà identifiÊes.", "confirm_user_password_reset": "Êtes-vous sÃģr de vouloir rÊinitialiser le mot de passe de {user} ?", "confirm_user_pin_code_reset": "Êtes-vous sÃģr de vouloir rÊinitialiser le code PIN de l'utilisateur {user} ?", + "copy_config_to_clipboard_description": "Copier la configuration du système actuelle au format JSON dans le presse-papier", "create_job": "CrÊer une tÃĸche", "cron_expression": "Expression cron", "cron_expression_description": "DÊfinir l'intervalle d'analyse à l'aide d'une expression cron. Pour plus d'informations, voir Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "DÊsactiver la connexion", "duplicate_detection_job_description": "Lancement de l'apprentissage automatique sur les mÊdias pour dÊtecter les images similaires. Se base sur la recherche intelligente", "exclusion_pattern_description": "Les schÊmas d'exclusion vous permettent d'ignorer des fichiers et des dossiers lors de l'analyse de votre bibliothèque. Cette fonction est utile si des dossiers contiennent des fichiers que vous ne souhaitez pas importer, tels que des fichiers RAW.", - "external_library_management": "Gestion de la bibliothèque externe", + "export_config_as_json_description": "TÊlÊcharger la configuration actuelle du système en tant que fichier JSON", + "external_libraries_page_description": "Page d'administration des bibliothèques externes", "face_detection": "DÊtection des visages", "face_detection_description": "DÊtection des visages dans les mÊdias à l'aide de l'apprentissage automatique. Pour les vidÊos, seule la miniature est prise en compte. ÂĢ Actualiser Âģ (re)traite tous les mÊdias. ÂĢ RÊinitialiser Âģ retraite tous les visages en repartant de zÊro. ÂĢ Manquant Âģ met en file d'attente les mÊdias qui n'ont pas encore ÊtÊ traitÊs. Lorsque la dÊtection est terminÊe, les visages dÊtectÊs seront mis en file d'attente pour la reconnaissance faciale.", "facial_recognition_job_description": "Regrouper les visages dÊtectÊs en personnes. Cette Êtape est exÊcutÊe une fois la dÊtection des visages terminÊe. ÂĢ RÊinitialiser Âģ (re)regroupe tous les visages. ÂĢ Manquant Âģ met en file d'attente les visages auxquels aucune personne n'a ÊtÊ attribuÊe.", @@ -102,14 +105,15 @@ "image_thumbnail_description": "Petite miniature avec les mÊtadonnÊes retirÊes, utilisÊe lors de la visualisation de groupes de photos comme sur la vue chronologique principale", "image_thumbnail_quality_description": "QualitÊ des miniatures : de 1 à 100. Une valeur ÊlevÊe produit de meilleurs rÊsultats, mais elle produit des fichiers plus volumineux et peut rÊduire la rÊactivitÊ de l'application.", "image_thumbnail_title": "Paramètres des miniatures", + "import_config_from_json_description": "Importer la configuration système en envoyant un fichier de configuration JSON", "job_concurrency": "{job} : nombre de tÃĸches simultanÊes", "job_created": "TÃĸche crÊÊe", "job_not_concurrency_safe": "Cette tÃĸche ne peut pas ÃĒtre exÊcutÊe en multitÃĸche de façon sÃģre.", "job_settings": "Paramètres des tÃĸches", "job_settings_description": "Gestion des tÃĸches simultanÊes", - "job_status": "Statut des tÃĸches", "jobs_delayed": "{jobCount, plural, other {# retardÊs}}", "jobs_failed": "{jobCount, plural, other {# en Êchec}}", + "jobs_over_time": "TÃĸches au fil du temps", "library_created": "Bibliothèque crÊÊe : {library}", "library_deleted": "Bibliothèque supprimÊe", "library_details": "DÊtails de la bibliothèque", @@ -182,6 +186,7 @@ "maintenance_start": "DÊmarrer le mode maintenance", "maintenance_start_error": "Échec du dÊmarrage du mode maintenance.", "manage_concurrency": "GÊrer du multitÃĸche", + "manage_concurrency_description": "Naviguer vers la pages des tÃĸches pour gÊrer le multitÃĸche", "manage_log_settings": "GÊrer les paramètres de journalisation", "map_dark_style": "Thème sombre", "map_enable_description": "Activer la carte", @@ -271,10 +276,14 @@ "password_settings_description": "GÊrer les paramètres de connexion par mot de passe", "paths_validated_successfully": "Tous les chemins ont ÊtÊ validÊs avec succès", "person_cleanup_job": "Nettoyage des personnes", + "queue_details": "DÊtails de la file d'attente", + "queues": "Files d'attente des tÃĸches", + "queues_page_description": "Page des files d'attente des tÃĸches d'administration", "quota_size_gib": "Taille du quota (Go)", "refreshing_all_libraries": "Actualisation de toutes les bibliothèques", "registration": "Enregistrement de l'administrateur", "registration_description": "Puisque vous ÃĒtes le premier utilisateur sur le système, vous serez dÊsignÊ en tant qu'administrateur et responsable des tÃĸches administratives, et vous pourrez alors crÊer d'autres utilisateurs.", + "remove_failed_jobs": "Supprimer les tÃĸches en erreur", "require_password_change_on_login": "Demander à l'utilisateur de changer son mot de passe lors de sa première connexion", "reset_settings_to_default": "RÊinitialiser les paramètres par dÊfaut", "reset_settings_to_recent_saved": "Paramètres rÊinitialisÊs avec les derniers paramètres enregistrÊs", @@ -287,8 +296,10 @@ "server_public_users_description": "Tous les utilisateurs (nom et courriel) sont listÊs lors de l'ajout d'un utilisateur à des albums partagÊs. Quand cela est dÊsactivÊ, la liste des utilisateurs est uniquement disponible pour les comptes administrateurs.", "server_settings": "Paramètres du serveur", "server_settings_description": "GÊrer les paramètres du serveur", + "server_stats_page_description": "Page administrateur des statistiques du serveur", "server_welcome_message": "Message de bienvenue", "server_welcome_message_description": "Ce message est affichÊ sur la page de connexion.", + "settings_page_description": "Page d'administration des paramètres", "sidecar_job": "MÊtadonnÊes annexes (fichiers xmp)", "sidecar_job_description": "Recherche ou synchronisation des mÊtadonnÊes annexes (fichiers xmp) sur le système de fichiers", "slideshow_duration_description": "Nombre de secondes d'affichage de chaque image", @@ -407,7 +418,8 @@ "user_restore_scheduled_removal": "Restaurer l'utilisateur - suppression programmÊe le {date, date, long}", "user_settings": "Paramètres utilisateur", "user_settings_description": "GÊrer les paramètres utilisateur", - "user_successfully_removed": "L'utilisateur {email} a bien ÊtÊ supprimÊ.", + "user_successfully_removed": "L'utilisateur {email} a ÊtÊ supprimÊ avec succès.", + "users_page_description": "Page d'administration des utilisateurs", "version_check_enabled_description": "Activer la vÊrification pÊriodique de nouvelle version", "version_check_implications": "Le contrôle de version repose sur une communication pÊriodique avec github.com", "version_check_settings": "VÊrification de la version", @@ -640,6 +652,7 @@ "backup_options_page_title": "Options de sauvegarde", "backup_setting_subtitle": "Ajuster les paramètres d'envoi au premier et en arrière-plan", "backup_settings_subtitle": "GÊrer les paramètres de tÊlÊversement", + "backup_upload_details_page_more_details": "Tapoter pour plus de dÊtails", "backward": "Arrière", "biometric_auth_enabled": "Authentification biomÊtrique activÊe", "biometric_locked_out": "L'authentification biomÊtrique est verrouillÊ", @@ -706,6 +719,7 @@ "check_corrupt_asset_backup_button": "VÊrifier", "check_corrupt_asset_backup_description": "Lancer cette vÊrification uniquement lorsque connectÊ à un rÊseau Wi-Fi et que tout le contenu a ÊtÊ enregistrÊ. Cette procÊdure peut durer plusieurs minutes.", "check_logs": "VÊrifier les journaux", + "checksum": "Somme de contrôle", "choose_matching_people_to_merge": "Choisir les personnes à fusionner", "city": "Ville", "clear": "Effacer", @@ -728,6 +742,7 @@ "collapse_all": "Tout rÊduire", "color": "Couleur", "color_theme": "Thème de couleur", + "command": "Commande", "comment_deleted": "Commentaire supprimÊ", "comment_options": "Options des commentaires", "comments_and_likes": "Commentaires et \"J'aime\"", @@ -1092,6 +1107,7 @@ "external_network_sheet_info": "Quand vous n'ÃĒtes pas connectÊ(e) à votre rÊseau wifi prÊfÊrÊ, l'application va tenter de se connecter aux adresses ci-dessous, en commençant par la première", "face_unassigned": "Non attribuÊ", "failed": "Échec", + "failed_count": "En erreur : {count}", "failed_to_authenticate": "Échec de l'authentification", "failed_to_load_assets": "Échec du chargement des ressources", "failed_to_load_folder": "Échec de chargement du dossier", @@ -1152,12 +1168,14 @@ "header_settings_header_name_input": "Nom de l'en-tÃĒte", "header_settings_header_value_input": "Valeur de l'en-tÃĒte", "headers_settings_tile_title": "En-tÃĒtes de proxy personnalisÊs", + "height": "Hauteur", "hi_user": "Bonjour {name} ({email})", "hide_all_people": "Cacher toutes les personnes", "hide_gallery": "Masquer la galerie", "hide_named_person": "Masquer {name}", "hide_password": "Masquer le mot de passe", "hide_person": "Masquer la personne", + "hide_text_recognition": "Cacher la reconnaissance de texte", "hide_unnamed_people": "Cacher les personnes non nommÊes", "home_page_add_to_album_conflicts": "{added} ÊlÊments ajoutÊs à l'album {album}. {failed} ÊlÊments sont dÊjà dans l'album.", "home_page_add_to_album_err_local": "Impossible d'ajouter des mÊdias locaux aux albums, ils sont ignorÊs", @@ -1273,6 +1291,7 @@ "local": "Local", "local_asset_cast_failed": "Impossible de caster un mÊdia qui n'a pas envoyÊ vers le serveur", "local_assets": "MÊdia locaux", + "local_id": "ID locale", "local_media_summary": "RÊsumÊ du mÊdia local", "local_network": "RÊseau local", "local_network_sheet_info": "L'application va se connecter au serveur via cette URL quand l'appareil est connectÊ à ce rÊseau Wi-Fi", @@ -1511,6 +1530,7 @@ "other_variables": "Autres variables", "owned": "PossÊdÊ", "owner": "PropriÊtaire", + "page": "Page", "partner": "Partenaire", "partner_can_access": "{partner} a accès", "partner_can_access_assets": "Toutes vos photos et vidÊos, exceptÊes celles archivÊes ou supprimÊes", @@ -1967,6 +1987,7 @@ "show_slideshow_transition": "Afficher la transition du diaporama", "show_supporter_badge": "Badge de contributeur", "show_supporter_badge_description": "Afficher le badge de contributeur", + "show_text_recognition": "Afficher la reconnaissance de texte", "show_text_search_menu": "Afficher le menu de recherche de texte", "shuffle": "AlÊatoire", "sidebar": "Barre latÊrale", @@ -2037,6 +2058,7 @@ "tags": "Étiquettes", "tap_to_run_job": "Appuyez pour dÊmarrer la tÃĸche", "template": "Modèle", + "text_recognition": "Reconnaissance de texte", "theme": "Thème", "theme_selection": "SÊlection du thème", "theme_selection_description": "Ajuster automatiquement le thème clair ou sombre via les prÊfÊrences système", @@ -2069,6 +2091,7 @@ "to_select": "pour faire une sÊlection", "to_trash": "Corbeille", "toggle_settings": "Inverser les paramètres", + "toggle_theme_description": "Changer le thème", "total": "Total", "total_usage": "Utilisation globale", "trash": "Corbeille", @@ -2089,7 +2112,7 @@ "troubleshoot": "DÊpannage", "type": "Type", "unable_to_change_pin_code": "Impossible de changer le code PIN", - "unable_to_check_version": "Impossible de vÊrifier la version de l'application ou du serveur", + "unable_to_check_version": "Impossible de vÊrifier la version", "unable_to_setup_pin_code": "Impossible de dÊfinir le code PIN", "unarchive": "DÊsarchiver", "unarchive_action_prompt": "{count} supprimÊ(s) de l'archive", @@ -2177,6 +2200,7 @@ "view_album": "Afficher l'album", "view_all": "Voir tout", "view_all_users": "Voir tous les utilisateurs", + "view_asset_owners": "Voir les propriÊtaires des mÊdias", "view_details": "Voir les dÊtails", "view_in_timeline": "Voir dans la vue chronologique", "view_link": "Voir le lien", @@ -2193,10 +2217,12 @@ "viewer_unstack": "DÊpiler", "visibility_changed": "VisibilitÊ changÊe pour {count, plural, one {# personne} other {# personnes}}", "waiting": "En attente", + "waiting_count": "En attente : {count}", "warning": "Attention", "week": "Semaine", "welcome": "Bienvenue", "welcome_to_immich": "Bienvenue sur Immich", + "width": "Largeur", "wifi_name": "Nom du rÊseau wifi", "workflow": "Flux de travail", "wrong_pin_code": "Code PIN erronÊ", diff --git a/i18n/ga.json b/i18n/ga.json index 0967ef424b..63f8fee42b 100644 --- a/i18n/ga.json +++ b/i18n/ga.json @@ -1 +1,2236 @@ -{} +{ + "about": "Maidir", + "account": "Cuntas", + "account_settings": "Socruithe Cuntais", + "acknowledge": "AdmhÃĄil", + "action": "Gníomh", + "action_common_update": "NuashonrÃē", + "actions": "Gníomhartha", + "active": "Gníomhach", + "active_count": "Gníomhach: {count}", + "activity": "Gníomhaíocht", + "activity_changed": "TÃĄ an ghníomhaíocht {enabled, select, true {enabled} other {disabled}}", + "add": "Cuir leis", + "add_a_description": "Cuir cur síos leis", + "add_a_location": "Cuir suíomh leis", + "add_a_name": "Cuir ainm leis", + "add_a_title": "Cuir teideal leis", + "add_birthday": "Cuir breithlÃĄ leis", + "add_endpoint": "Cuir críochphointe leis", + "add_exclusion_pattern": "Cuir patrÃēn eisiaimh leis", + "add_location": "Cuir suíomh leis", + "add_more_users": "Cuir níos mÃŗ ÃēsÃĄideoirí leis", + "add_partner": "Cuir comhphÃĄirtí leis", + "add_path": "Cuir cosÃĄn leis", + "add_photos": "Cuir grianghraif leis", + "add_tag": "Cuir clib leis", + "add_to": "Cuir leâ€Ļ", + "add_to_album": "Cuir leis an albam", + "add_to_album_bottom_sheet_added": "Curtha le {album}", + "add_to_album_bottom_sheet_already_exists": "Cheana fÊin i {album}", + "add_to_album_bottom_sheet_some_local_assets": "Níorbh fhÊidir roinnt sÃŗcmhainní ÃĄitiÃēla a chur leis an albam", + "add_to_album_toggle": "Athraigh rogha do {album}", + "add_to_albums": "Cuir le halbaim", + "add_to_albums_count": "Cuir le halbaim ({count})", + "add_to_bottom_bar": "Cuir le", + "add_to_shared_album": "Cuir le halbam comhroinnte", + "add_upload_to_stack": "Cuir uaslÃŗdÃĄil leis an gcruach", + "add_url": "Cuir URL leis", + "added_to_archive": "Curtha leis an gcartlann", + "added_to_favorites": "Curtha le rogha pearsanta", + "added_to_favorites_count": "Cuireadh {count, number} le mo rogha pearsanta", + "admin": { + "add_exclusion_pattern_description": "Cuir patrÃēin eisiaimh leis. Tacaítear le globÃĄil ag baint ÃēsÃĄide as *, **, agus ?. Chun neamhaird a dhÊanamh ar gach comhad in aon eolaire darb ainm \"Raw\", bain ÃēsÃĄid as \"**/Raw/**\". Chun neamhaird a dhÊanamh ar gach comhad a chríochnaíonn le \".tif\", bain ÃēsÃĄid as \"**/*.tif\". Chun neamhaird a dhÊanamh ar chonair absalÃŗideach, bain ÃēsÃĄid as \"/path/to/ignore/**\".", + "admin_user": "ÚsÃĄideoir RiarachÃĄin", + "asset_offline_description": "Níl an tsÃŗcmhainn sheachtrach leabharlainne seo le fÃĄil ar an diosca a thuilleadh agus tÃĄ sí bogtha chuig an mbruscar. MÃĄ aistríodh an comhad laistigh den leabharlann, seiceÃĄil d'amlíne don tsÃŗcmhainn chomhfhreagrach nua. Chun an tsÃŗcmhainn seo a athchÃŗiriÃē, cinntigh gur fÊidir le Immich rochtain a fhÃĄil ar an gcosÃĄn comhaid thíos agus scanadh an leabharlann.", + "authentication_settings": "Socruithe Fíordheimhnithe", + "authentication_settings_description": "Bainistigh pasfhocal, OAuth, agus socruithe fíordheimhnithe eile", + "authentication_settings_disable_all": "An bhfuil tÃē cinnte gur mian leat gach modh logÃĄla isteach a dhíchumasÃē? DíchumasÃŗfar logÃĄil isteach go hiomlÃĄn.", + "authentication_settings_reenable": "Chun Ê a athchumasÃē, bain ÃēsÃĄid as OrdÃē Freastalaí.", + "background_task_job": "Tascanna CÃēlra", + "backup_database": "Cruthaigh DumpÃĄil Bunachar Sonraí", + "backup_database_enable_description": "Cumasaigh dumpÃĄlacha bunachar sonraí", + "backup_keep_last_amount": "MÊid na ndumpÃĄlacha roimhe seo le coinneÃĄil", + "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_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 straitÊis chÃēltaca 3-2-1 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 doicimÊadÃē.", + "backup_onboarding_parts_title": "Áirítear le cÃēltaca 3-2-1:", + "backup_onboarding_title": "CÃēltacaí", + "backup_settings": "Socruithe DumpÃĄla Bunachar Sonraí", + "backup_settings_description": "Bainistigh socruithe dumpÃĄla bunachar sonraí.", + "cleared_jobs": "Poist glanta do: {job}", + "config_set_by_file": "TÃĄ an chumraíocht socraithe ag comhad cumraíochta faoi lÃĄthair", + "confirm_delete_library": "An bhfuil tÃē cinnte gur mian leat leabharlann {library} a scriosadh?", + "confirm_delete_library_assets": "An bhfuil tÃē cinnte gur mian leat an leabharlann seo a scriosadh? Scriosfaidh sÊ seo {count, plural, one {# contained asset} other {all # contained assets}} Ãŗ Immich agus ní fÊidir Ê a chealÃē. Fanfaidh na comhaid ar an diosca.", + "confirm_email_below": "Chun deimhniÃē, clÃŗscríobh \"{email}\" thíos", + "confirm_reprocess_all_faces": "An bhfuil tÃē cinnte gur mian leat gach aghaidh a athphrÃŗiseÃĄil? Glanfaidh sÊ seo daoine ainmnithe freisin.", + "confirm_user_password_reset": "An bhfuil tÃē cinnte gur mian leat pasfhocal {user} a athshocrÃē?", + "confirm_user_pin_code_reset": "An bhfuil tÃē cinnte gur mian leat cÃŗd PIN {user} a athshocrÃē?", + "copy_config_to_clipboard_description": "CÃŗipeÃĄil cumraíocht reatha an chÃŗrais mar rÊad JSON chuig an ngearrthaisce", + "create_job": "Cruthaigh post", + "cron_expression": "LÊiriÃē Cron", + "cron_expression_description": "Socraigh an t-eatramh scanadh ag baint ÃēsÃĄide as an bhformÃĄid cron. Le haghaidh tuilleadh eolais fÊach ar m.sh. Crontab Guru", + "cron_expression_presets": "RÊamhshocruithe lÊirithe Cron", + "disable_login": "Díchumasaigh logÃĄil isteach", + "duplicate_detection_job_description": "Rith foghlaim meaisín ar shÃŗcmhainní chun íomhÃĄnna comhchosÃēla a bhrath. Braitheann sÊ ar Chuardach Cliste", + "exclusion_pattern_description": "Le patrÃēin eisiaimh, is fÊidir leat neamhaird a dhÊanamh de chomhaid agus fillteÃĄin agus tÃē ag scanadh do leabharlann. TÃĄ sÊ seo ÃēsÃĄideach mÃĄ tÃĄ fillteÃĄin agat ina bhfuil comhaid nach mian leat a allmhairiÃē, amhail comhaid RAW.", + "export_config_as_json_description": "ÍoslÃŗdÃĄil cumraíocht reatha an chÃŗrais mar chomhad JSON", + "external_libraries_page_description": "Leathanach leabharlainne seachtrach riarthÃŗra", + "face_detection": "Brath aghaidhe", + "face_detection_description": "Braith aghaidheanna i sÃŗcmhainní ag baint ÃēsÃĄide as foghlaim meaisín. I gcÃĄs físeÃĄin, ní chuirtear san ÃĄireamh ach an mionsamhail. DÊanann \"Athnuachan\" na sÃŗcmhainní go lÊir a phrÃŗiseÃĄil (athphrÃŗiseÃĄil). Glanann \"Athshocraigh\" na sonraí aghaidhe reatha go lÊir freisin. Cuireann \"Ar Iarraidh\" sÃŗcmhainní nach bhfuil prÃŗiseÃĄilte fÃŗs i scuaine. Cuirfear aghaidheanna braite i scuaine le haghaidh Aitheantas Aghaidhe tar Êis don Bhrath Aghaidhe a bheith críochnaithe, agus grÃēpÃĄlfar iad i ndaoine atÃĄ ann cheana fÊin nÃŗ i ndaoine nua.", + "facial_recognition_job_description": "GrÃēpÃĄil aghaidheanna braite i ndaoine. Ritheann an chÊim seo tar Êis don Bhrath Aghaidhe a bheith críochnaithe. DÊanann \"Athshocraigh\" (ath-)ghlasÃĄil ar na haghaidheanna go lÊir. Cuireann \"Ar Iarraidh\" aghaidheanna nach bhfuil duine sannta dÃŗibh i scuaine.", + "failed_job_command": "Theip ar ordÃē {command} don phost: {job}", + "force_delete_user_warning": "RABHADH: Bainfear an t-ÃēsÃĄideoir agus na sÃŗcmhainní go lÊir lÃĄithreach leis seo. Ní fÊidir Ê seo a chealÃē agus ní fÊidir na comhaid a aisghabhÃĄil.", + "image_format": "FormÃĄid", + "image_format_description": "TÃĄirgeann FormatWebP comhaid níos lÃē nÃĄ JPEG, ach tÃĄ sÊ níos moille le hionchÃŗdÃē.", + "image_fullsize_description": "ÍomhÃĄ lÃĄnmhÊide le meiteashonraí strÃŗicthe, a ÃēsÃĄidtear nuair a dhÊantar zÃēmÃĄil isteach", + "image_fullsize_enabled": "Cumasaigh giniÃēint íomhÃĄ lÃĄnmhÊide", + "image_fullsize_enabled_description": "ÍomhÃĄ lÃĄnmhÊide a ghiniÃēint le haghaidh formÃĄidí nach bhfuil cairdiÃēil don ghrÊasÃĄn. Nuair a bhíonn \"Is fearr rÊamhamharc leabaithe\" cumasaithe, ÃēsÃĄidtear rÊamhamhairc leabaithe go díreach gan tiontÃē. Ní dhÊanann sÊ difear do fhormÃĄidí atÃĄ cairdiÃēil don ghrÊasÃĄn ar nÃŗs JPEG.", + "image_fullsize_quality_description": "CÃĄilíocht íomhÃĄ lÃĄnmhÊide Ãŗ 1-100. Is fearr níos airde, ach cruthaíonn sÊ comhaid níos mÃŗ.", + "image_fullsize_title": "Socruithe ÍomhÃĄ LÃĄnmhÊide", + "image_prefer_embedded_preview": "RÊamhamharc leabaithe is fearr leat", + "image_prefer_embedded_preview_setting_description": "Leathanach poist riarthÃŗraÚsÃĄid rÊamhamhairc leabaithe i ngrianghraif RAW mar ionchur le haghaidh prÃŗiseÃĄla íomhÃĄ agus nuair is fÊidir. Is fÊidir leis seo dathanna níos cruinne a thÃĄirgeadh do roinnt íomhÃĄnna, ach braitheann cÃĄilíocht an rÊamhamhairc ar an gceamara agus d'fhÊadfadh go mbeadh níos mÃŗ dÊantÃĄin chomhbhrÃēite san íomhÃĄ.", + "image_prefer_wide_gamut": "Is fearr gamut leathan", + "image_prefer_wide_gamut_setting_description": "Bain ÃēsÃĄid as TaispeÃĄntas P3 le haghaidh mionsamhlacha. Coinníonn sÊ seo beocht na n-íomhÃĄnna le spÃĄsanna dathanna leathana níos fearr, ach d'fhÊadfadh cuma dhifriÃēil a bheith ar íomhÃĄnna ar sheanghlÊasanna le seanleagan brabhsÃĄlaí. Coinnítear íomhÃĄnna sRGB mar sRGB chun athruithe datha a sheachaint.", + "image_preview_description": "ÍomhÃĄ meÃĄnmhÊide le meiteashonraí strÃŗicthe, a ÃēsÃĄidtear agus sÃŗcmhainn aonair ÃĄ breathnÃē agus le haghaidh foghlama meaisín", + "image_preview_quality_description": "CÃĄilíocht rÊamhamhairc Ãŗ 1-100. Is airde is fearr, ach cruthaíonn sÊ comhaid níos mÃŗ agus d'fhÊadfadh sÊ freagrÃēlacht aipeanna a laghdÃē. D'fhÊadfadh tionchar a bheith ag luach íseal ar chÃĄilíocht na foghlama meaisín.", + "image_preview_title": "Socruithe RÊamhamhairc", + "image_quality": "CÃĄilíocht", + "image_resolution": "Taifeach", + "image_resolution_description": "Is fÊidir le taifeach níos airde níos mÃŗ sonraí a chaomhnÃē ach tÃŗgann sÊ níos faide iad a ionchÃŗdÃē, bíonn mÊideanna comhaid níos mÃŗ acu agus fÊadann siad freagrÃēlacht aipeanna a laghdÃē.", + "image_settings": "Socruithe ÍomhÃĄ", + "image_settings_description": "Bainistigh cÃĄilíocht agus rÊiteach na n-íomhÃĄnna a ghintear", + "image_thumbnail_description": "Mionsamhail bheag le meiteashonraí strÃŗicthe, a ÃēsÃĄidtear agus grÃēpaí grianghraf ÃĄ bhfÊachaint cosÃēil leis an bpríomh-amlíne", + "image_thumbnail_quality_description": "CÃĄilíocht mionsamhlacha Ãŗ 1-100. Is airde an caighdeÃĄn is fearr, ach cruthaíonn sÊ comhaid níos mÃŗ agus d'fhÊadfadh sÊ freagrÃēlacht an aip a laghdÃē.", + "image_thumbnail_title": "Socruithe Mionsamhail", + "import_config_from_json_description": "Cumraíocht chÃŗrais a allmhairiÃē trí chomhad cumraíochta JSON a uaslÃŗdÃĄil", + "job_concurrency": "comhthrÃĄthacht {job}", + "job_created": "Post cruthaithe", + "job_not_concurrency_safe": "Níl an post seo sÃĄbhÃĄilte le haghaidh comhuaineachta.", + "job_settings": "Socruithe Poist", + "job_settings_description": "Bainistigh comhthrÃĄthacht poist", + "jobs_delayed": "{jobCount, plural, other {# moillithe}}", + "jobs_failed": "{jobCount, plural, other {# theip}}", + "jobs_over_time": "Poist le himeacht ama", + "library_created": "Leabharlann cruthaithe: {library}", + "library_deleted": "Scriosadh an leabharlann", + "library_details": "Sonraí na leabharlainne", + "library_folder_description": "Sonraigh fillteÃĄn le hallmhairiÃē. DÊanfar scanadh ar an bhfillteÃĄn seo, lena n-ÃĄirítear fo-fhillteÃĄin, le haghaidh íomhÃĄnna agus físeÃĄin.", + "library_remove_exclusion_pattern_prompt": "An bhfuil tÃē cinnte gur mian leat an patrÃēn eisiaimh seo a bhaint?", + "library_remove_folder_prompt": "An bhfuil tÃē cinnte gur mian leat an fillteÃĄn allmhairithe seo a bhaint?", + "library_scanning": "Scanadh TrÊimhsiÃēil", + "library_scanning_description": "Cumraigh scanadh trÊimhsiÃēil leabharlainne", + "library_scanning_enable_description": "Cumasaigh scanadh trÊimhsiÃēil leabharlainne", + "library_settings": "Leabharlann Sheachtrach", + "library_settings_description": "Bainistigh socruithe leabharlainne seachtraí", + "library_tasks_description": "Scan leabharlanna seachtracha le haghaidh sÃŗcmhainní nua agus/nÃŗ athraithe", + "library_updated": "Leabharlann nuashonraithe", + "library_watching_enable_description": "Faire ar leabharlanna seachtracha le haghaidh athruithe ar chomhaid", + "library_watching_settings": "Ag breathnÃē ar an leabharlann [TURGNAMHACH]", + "library_watching_settings_description": "Faire go huathoibríoch ar chomhaid athraithe", + "logging_enable_description": "Cumasaigh logÃĄil", + "logging_level_description": "Nuair a bheidh sÊ cumasaithe, cÊn leibhÊal loga atÃĄ le hÃēsÃĄid.", + "logging_settings": "LogÃĄil", + "machine_learning_availability_checks": "SeiceÃĄlacha infhaighteachta", + "machine_learning_availability_checks_description": "Braith go huathoibríoch agus cuir tÃēs le freastalaithe foghlama meaisín atÃĄ ar fÃĄil", + "machine_learning_availability_checks_enabled": "Cumasaigh seiceÃĄlacha infhaighteachta", + "machine_learning_availability_checks_interval": "SeiceÃĄil an t-eatramh", + "machine_learning_availability_checks_interval_description": "Eatramh i milleasoicindí idir seiceÃĄlacha infhaighteachta", + "machine_learning_availability_checks_timeout": "Iarratas ar theorainn ama", + "machine_learning_availability_checks_timeout_description": "Am críochnaithe i milleasoicindí le haghaidh seiceÃĄlacha infhaighteachta", + "machine_learning_clip_model": "Samhail CLIP", + "machine_learning_clip_model_description": "Ainm mhÃēnla CLIP atÃĄ liostaithe anseo. Tabhair faoi deara go gcaithfidh tÃē an post 'Cuardach Cliste' a athrith do gach íomhÃĄ nuair a athraíonn tÃē samhail.", + "machine_learning_duplicate_detection": "Brath DÃēblach", + "machine_learning_duplicate_detection_enabled": "Cumasaigh braiteadh dÃēblach", + "machine_learning_duplicate_detection_enabled_description": "MÃĄ tÃĄ sÊ díchumasaithe, dÊanfar sÃŗcmhainní comhionanna a dhídhÃēblÃĄil fÃŗs.", + "machine_learning_duplicate_detection_setting_description": "Bain ÃēsÃĄid as leabaithe CLIP chun dÃēblaigh dÃŗchÃēla a aimsiÃē", + "machine_learning_enabled": "Cumasaigh foghlaim meaisín", + "machine_learning_enabled_description": "MÃĄ tÃĄ sÊ díchumasaithe, díchumasÃŗfar gach gnÊ ML beag beann ar na socruithe thíos.", + "machine_learning_facial_recognition": "Aitheantas Aghaidhe", + "machine_learning_facial_recognition_description": "Aghaidheanna a bhrath, a aithint agus a ghrÃēpÃĄil in íomhÃĄnna", + "machine_learning_facial_recognition_model": "MÃēnla aitheantais aghaidhe", + "machine_learning_facial_recognition_model_description": "Liostaítear samhlacha in ord íslitheach mÊide. Bíonn samhlacha níos mÃŗ níos moille agus ÃēsÃĄideann siad níos mÃŗ cuimhne, ach tugann siad torthaí níos fearr. Tabhair faoi deara go gcaithfidh tÃē an post Braite Aghaidhe a athrith do gach íomhÃĄ nuair a athraíonn tÃē samhail.", + "machine_learning_facial_recognition_setting": "Cumasaigh aitheantas aghaidhe", + "machine_learning_facial_recognition_setting_description": "Mura bhfuil sÊ sin ar fÃĄil, ní dhÊanfar íomhÃĄnna a ionchÃŗdÃē le haghaidh aitheantais aghaidhe agus ní líonfar iad sa rannÃĄn Daoine ar an leathanach IniÃēchta.", + "machine_learning_max_detection_distance": "Fad braite uasta", + "machine_learning_max_detection_distance_description": "An fad uasta idir dhÃĄ íomhÃĄ chun iad a mheas mar dhÃēblaigh, idir 0.001-0.1. Aimseoidh luachanna níos airde níos mÃŗ dÃēblach, ach d’fhÊadfadh torthaí dearfacha brÊagacha a bheith mar thoradh orthu.", + "machine_learning_max_recognition_distance": "Fad aitheantais uasta", + "machine_learning_max_recognition_distance_description": "An fad uasta idir dhÃĄ aghaidh le go measfaí gurb Ê an duine cÊanna Ê, idir 0-2. MÃĄ íslítear Ê seo, is fÊidir cosc a chur ar dhÃĄ dhuine a lipÊadÃē mar an duine cÊanna, agus mÃĄ ardaítear Ê, is fÊidir cosc a chur ar an duine cÊanna a lipÊadÃē mar dhÃĄ dhuine ÊagsÃēla. Tabhair faoi deara go bhfuil sÊ níos Êasca dhÃĄ dhuine a chumasc nÃĄ duine amhÃĄin a roinnt ina dhÃĄ leath, mar sin bí ag iarraidh tairseach níos ísle a shocrÃē nuair is fÊidir.", + "machine_learning_min_detection_score": "ScÃŗr braite íosta", + "machine_learning_min_detection_score_description": "An scÃŗr muiníne íosta le haghaidh aghaidh a bhrath Ãŗ 0-1. Braithfidh luachanna níos ísle níos mÃŗ aghaidheanna ach d’fhÊadfadh torthaí dearfacha brÊagacha a bheith mar thoradh orthu.", + "machine_learning_min_recognized_faces": "ÍosmhÊid aghaidheanna aitheanta", + "machine_learning_min_recognized_faces_description": "An líon íosta aghaidheanna aitheanta le go gcruthÃŗfar duine. MÃĄ mhÊadaítear an líon seo, mÊadaítear an Aithint Aghaidhe agus mÊadaítear an seans nach sanntar aghaidh do dhuine.", + "machine_learning_ocr": "OCR", + "machine_learning_ocr_description": "ÚsÃĄid foghlaim meaisín chun tÊacs in íomhÃĄnna a aithint", + "machine_learning_ocr_enabled": "Cumasaigh OCR", + "machine_learning_ocr_enabled_description": "Mura bhfuil sÊ sin ar fÃĄil, ní dhÊanfar aitheantas tÊacs ar íomhÃĄnna.", + "machine_learning_ocr_max_resolution": "UasmhÊid rÊitigh", + "machine_learning_ocr_max_resolution_description": "DÊanfar athrÃē mÊide ar rÊamhamhairc os cionn an taifigh seo agus an cÃŗimheas gnÊ ÃĄ chaomhnÃē. Bíonn luachanna níos airde níos cruinne, ach tÃŗgann siad níos faide le prÃŗiseÃĄil agus ÃēsÃĄidfidh siad níos mÃŗ cuimhne.", + "machine_learning_ocr_min_detection_score": "ScÃŗr braite íosta", + "machine_learning_ocr_min_detection_score_description": "ScÃŗr muiníne íosta le haghaidh tÊacs a bhrath Ãŗ 0-1. Braithfidh luachanna níos ísle níos mÃŗ tÊacs ach d’fhÊadfadh torthaí dearfacha brÊagacha a bheith mar thoradh orthu.", + "machine_learning_ocr_min_recognition_score": "ScÃŗr aitheantais íosta", + "machine_learning_ocr_min_score_recognition_description": "ScÃŗr muiníne íosta le haghaidh tÊacs braite a aithint Ãŗ 0-1. Aithneoidh luachanna níos ísle níos mÃŗ tÊacs ach d'fhÊadfadh torthaí dearfacha brÊagacha a bheith mar thoradh orthu.", + "machine_learning_ocr_model": "Samhail OCR", + "machine_learning_ocr_model_description": "TÃĄ samhlacha freastalaí níos cruinne nÃĄ samhlacha soghluaiste, ach tÃŗgann siad níos faide le prÃŗiseÃĄil agus níos mÃŗ cuimhne a ÃēsÃĄid.", + "machine_learning_settings": "Socruithe Foghlama Meaisín", + "machine_learning_settings_description": "Bainistigh gnÊithe agus socruithe foghlama meaisín", + "machine_learning_smart_search": "Cuardach Cliste", + "machine_learning_smart_search_description": "Cuardaigh íomhÃĄnna go sÊimeantach ag baint ÃēsÃĄide as leabaithe CLIP", + "machine_learning_smart_search_enabled": "Cumasaigh cuardach cliste", + "machine_learning_smart_search_enabled_description": "Mura bhfuil sÊ sin ar fÃĄil, ní dhÊanfar íomhÃĄnna a ionchÃŗdÃē le haghaidh cuardaigh chliste.", + "machine_learning_url_description": "URL an fhreastalaí foghlama meaisín. MÃĄ chuirtear níos mÃŗ nÃĄ URL amhÃĄin ar fÃĄil, dÊanfar iarracht ar gach freastalaí ceann ag an am go dtí go bhfreagrÃŗidh ceann acu go rathÃēil, in ord Ãŗn gcÊad cheann go dtí an ceann deireanach. DÊanfar neamhaird shealadach ar fhreastalaithe nach bhfreagrÃŗidh go dtí go mbeidh siad ar líne arís.", + "maintenance_settings": "CothabhÃĄil", + "maintenance_settings_description": "Cuir Immich i mÃŗd cothabhÃĄla.", + "maintenance_start": "Tosaigh mÃŗd cothabhÃĄla", + "maintenance_start_error": "Theip ar an modh cothabhÃĄla a thosÃē.", + "manage_concurrency": "Bainistigh ComhthrÃĄthacht", + "manage_concurrency_description": "TÊigh chuig leathanach na bpost chun comhthrÃĄthacht poist a bhainistiÃē", + "manage_log_settings": "Bainistigh socruithe loga", + "map_dark_style": "Stíl dhorcha", + "map_enable_description": "Cumasaigh gnÊithe lÊarscÃĄile", + "map_gps_settings": "Socruithe LÊarscÃĄile & GPS", + "map_gps_settings_description": "Bainistigh Socruithe LÊarscÃĄile & GPS (GeochÃŗdÃē Droim ar Ais)", + "map_implications": "Braitheann an ghnÊ lÊarscÃĄile ar sheirbhís tíleanna seachtrach (tiles.immich.cloud)", + "map_light_style": "Stíl Êadrom", + "map_manage_reverse_geocoding_settings": "Bainistigh socruithe GeochÃŗdÃē Droim ar Ais", + "map_reverse_geocoding": "GeochÃŗdÃē Droim ar Ais", + "map_reverse_geocoding_enable_description": "Cumasaigh geo-chÃŗdÃē droim ar ais", + "map_reverse_geocoding_settings": "Socruithe GeochÃŗdÃĄla Droim ar Ais", + "map_settings": "LÊarscÃĄil", + "map_settings_description": "Bainistigh socruithe lÊarscÃĄile", + "map_style_description": "URL chuig tÊama lÊarscÃĄile style.json", + "memory_cleanup_job": "Glanadh cuimhne", + "memory_generate_job": "GiniÃēint cuimhne", + "metadata_extraction_job": "Meiteashonraí a bhaint amach", + "metadata_extraction_job_description": "Bain faisnÊis meiteashonraí as gach sÃŗcmhainn, amhail GPS, aghaidheanna agus rÊiteach", + "metadata_faces_import_setting": "Cumasaigh allmhairiÃē aghaidheanna", + "metadata_faces_import_setting_description": "Aghaidheanna a allmhairiÃē Ãŗ shonraí EXIF íomhÃĄ agus comhaid taobhlíne", + "metadata_settings": "Socruithe Meiteashonraí", + "metadata_settings_description": "Bainistigh socruithe meiteashonraí", + "migration_job": "Imirce", + "migration_job_description": "Aistrigh mionsamhlacha le haghaidh sÃŗcmhainní agus aghaidheanna chuig an struchtÃēr fillteÃĄn is dÊanaí", + "nightly_tasks_cluster_faces_setting_description": "Rith aitheantas aghaidhe ar aghaidheanna nua-bhraite", + "nightly_tasks_cluster_new_faces_setting": "Braisle aghaidheanna nua", + "nightly_tasks_database_cleanup_setting": "Tascanna glantachÃĄin bunachar sonraí", + "nightly_tasks_database_cleanup_setting_description": "Glan suas sonraí seanchaite, imithe in Êag Ãŗn mbunachar sonraí", + "nightly_tasks_generate_memories_setting": "Cuimhní cinn a ghiniÃēint", + "nightly_tasks_generate_memories_setting_description": "Cruthaigh cuimhní cinn nua Ãŗ shÃŗcmhainní", + "nightly_tasks_missing_thumbnails_setting": "Gin mionsamhlacha atÃĄ ar iarraidh", + "nightly_tasks_missing_thumbnails_setting_description": "SÃŗcmhainní gan mionsamhlacha a chur i scuaine le haghaidh giniÃēint mionsamhlacha", + "nightly_tasks_settings": "Socruithe Tascanna Oíche", + "nightly_tasks_settings_description": "Bainistigh tascanna oíche", + "nightly_tasks_start_time_setting": "Am tosaithe", + "nightly_tasks_start_time_setting_description": "An t-am a thosaíonn an freastalaí ag rith na dtascanna oíche", + "nightly_tasks_sync_quota_usage_setting": "ÚsÃĄid cuÃŗta sioncrÃŗnaithe", + "nightly_tasks_sync_quota_usage_setting_description": "Nuashonraigh cuÃŗta stÃŗrÃĄla ÃēsÃĄideora, bunaithe ar an ÃēsÃĄid reatha", + "no_paths_added": "Níor cuireadh aon chosÃĄin leis", + "no_pattern_added": "Níor cuireadh patrÃēn leis", + "note_apply_storage_label_previous_assets": "NÃŗta: Chun an LipÊad StÃŗrÃĄla a chur i bhfeidhm ar shÃŗcmhainní a uaslÃŗdÃĄileadh roimhe seo, rith an", + "note_cannot_be_changed_later": "NÓTA: Ní fÊidir Ê seo a athrÃē níos dÊanaí!", + "notification_email_from_address": "Ó sheoladh", + "notification_email_from_address_description": "Seoladh ríomhphoist an tseoltÃŗra, mar shampla: \"Immich Photo Server \". DÊan cinnte seoladh a ÃēsÃĄid a bhfuil cead agat ríomhphoist a sheoladh uaidh.", + "notification_email_host_description": "Óstach an fhreastalaí ríomhphoist (m.sh. smtp.immich.app)", + "notification_email_ignore_certificate_errors": "DÊan neamhaird ar earrÃĄidí teastais", + "notification_email_ignore_certificate_errors_description": "DÊan neamhaird ar earrÃĄidí bailíochtaithe teastais TLS (ní mholtar)", + "notification_email_password_description": "Pasfhocal le hÃēsÃĄid agus fíordheimhniÃē ÃĄ dhÊanamh leis an bhfreastalaí ríomhphoist", + "notification_email_port_description": "Port an fhreastalaí ríomhphoist (m.sh. 25, 465, nÃŗ 587)", + "notification_email_secure": "SMTPS", + "notification_email_secure_description": "ÚsÃĄid SMTPS (SMTP thar TLS)", + "notification_email_sent_test_email_button": "Seol ríomhphost tÃĄstÃĄla agus sÃĄbhÃĄil", + "notification_email_setting_description": "Socruithe chun fÃŗgraí ríomhphoist a sheoladh", + "notification_email_test_email": "Seol ríomhphost tÃĄstÃĄla", + "notification_email_test_email_failed": "Theip ar ríomhphost tÃĄstÃĄla a sheoladh, seiceÃĄil do luachanna", + "notification_email_test_email_sent": "TÃĄ ríomhphost tÃĄstÃĄla seolta chuig {email}. SeiceÃĄil do bhosca isteach le do thoil.", + "notification_email_username_description": "Ainm ÃēsÃĄideora le hÃēsÃĄid agus fíordheimhniÃē ÃĄ dhÊanamh leis an bhfreastalaí ríomhphoist", + "notification_enable_email_notifications": "Cumasaigh fÃŗgraí ríomhphoist", + "notification_settings": "Socruithe FÃŗgra", + "notification_settings_description": "Bainistigh socruithe fÃŗgraí, lena n-ÃĄirítear ríomhphost", + "oauth_auto_launch": "Seoladh uathoibríoch", + "oauth_auto_launch_description": "Tosaigh sreabhadh logÃĄla isteach OAuth go huathoibríoch nuair a dhÊantar nascleanÃēint chuig an leathanach logÃĄla isteach", + "oauth_auto_register": "ClÃĄrÃē uathoibríoch", + "oauth_auto_register_description": "ClÃĄraigh ÃēsÃĄideoirí nua go huathoibríoch tar Êis síniÃē isteach le OAuth", + "oauth_button_text": "TÊacs cnaipe", + "oauth_client_secret_description": "Riachtanach mura dtacaíonn an solÃĄthraí OAuth le PKCE (Eochair ChruthÃēnais le haghaidh MalartÃē CÃŗd)", + "oauth_enable_description": "LogÃĄil isteach le OAuth", + "oauth_mobile_redirect_uri": "URI atreoraithe soghluaiste", + "oauth_mobile_redirect_uri_override": "SÃĄrÃē URI atreoraithe soghluaiste", + "oauth_mobile_redirect_uri_override_description": "Cumasaigh nuair nach gceadaíonn solÃĄthraí OAuth URI soghluaiste, mar shampla ''{callback}''", + "oauth_role_claim": "Éileamh RÃŗil", + "oauth_role_claim_description": "Deonaigh rochtain riarthÃŗra go huathoibríoch bunaithe ar lÃĄithreacht an Êilimh seo. FÊadfaidh 'ÃēsÃĄideoir' nÃŗ 'riarthÃŗir' a bheith san Êileamh.", + "oauth_settings": "OAuth", + "oauth_settings_description": "Bainistigh socruithe logÃĄla isteach OAuth", + "oauth_settings_more_details": "Le haghaidh tuilleadh sonraí faoin ngnÊ seo, fÊach ar na doicimÊid.", + "oauth_storage_label_claim": "Éileamh lipÊad stÃŗrÃĄla", + "oauth_storage_label_claim_description": "Socraigh lipÊad stÃŗrÃĄla an ÃēsÃĄideora go huathoibríoch go luach an Êilimh seo.", + "oauth_storage_quota_claim": "Éileamh ar chuÃŗta stÃŗrÃĄla", + "oauth_storage_quota_claim_description": "Socraigh cuÃŗta stÃŗrÃĄla an ÃēsÃĄideora go huathoibríoch go luach an Êilimh seo.", + "oauth_storage_quota_default": "CuÃŗta stÃŗrÃĄla rÊamhshocraithe (GiB)", + "oauth_storage_quota_default_description": "CuÃŗta i GiB le hÃēsÃĄid nuair nach gcuirtear aon Êileamh ar fÃĄil.", + "oauth_timeout": "Iarratas Ama", + "oauth_timeout_description": "Am críochnaithe d'iarratais i milleasoicindí", + "ocr_job_description": "ÚsÃĄid foghlaim meaisín chun tÊacs in íomhÃĄnna a aithint", + "password_enable_description": "LogÃĄil isteach le ríomhphost agus pasfhocal", + "password_settings": "Pasfhocal LogÃĄil Isteach", + "password_settings_description": "Bainistigh socruithe logÃĄla isteach le pasfhocal", + "paths_validated_successfully": "Gach cosÃĄn bailíochtaithe go rathÃēil", + "person_cleanup_job": "Glanadh duine", + "queue_details": "Sonraí na Scuaine", + "queues": "Scuainí Poist", + "queues_page_description": "Leathanach scuainí poist riarthÃŗra", + "quota_size_gib": "MÊid an ChuÃŗta (GiB)", + "refreshing_all_libraries": "Ag athnuachan na leabharlanna go lÊir", + "registration": "ClÃĄrÃē RiarachÃĄin", + "registration_description": "Ós rud Ê gur tusa an chÊad ÃēsÃĄideoir ar an gcÃŗras, sannfar an RiarthÃŗir duit agus beidh tÃē freagrach as tascanna riarachÃĄin, agus cruthÃŗidh tÃē fÊin ÃēsÃĄideoirí breise.", + "remove_failed_jobs": "Bain poist theip orthu", + "require_password_change_on_login": "Éiligh ar an ÃēsÃĄideoir an focal faire a athrÃē ar an gcÊad logÃĄil isteach", + "reset_settings_to_default": "Athshocraigh socruithe go dtí na socruithe rÊamhshocraithe", + "reset_settings_to_recent_saved": "Athshocraigh socruithe chuig na socruithe sÃĄbhÃĄilte le dÊanaí", + "scanning_library": "Leabharlann scanadh", + "search_jobs": "Cuardaigh poistâ€Ļ", + "send_welcome_email": "Seol ríomhphost fÃĄilte", + "server_external_domain_settings": "Fearann seachtrach", + "server_external_domain_settings_description": "Fearann le haghaidh naisc chomhroinnte poiblí, lena n-ÃĄirítear http(s)://", + "server_public_users": "ÚsÃĄideoirí Poiblí", + "server_public_users_description": "Liostaítear gach ÃēsÃĄideoir (ainm agus ríomhphost) nuair a chuirtear ÃēsÃĄideoir le halbaim chomhroinnte. Nuair a bhíonn sÊ díchumasaithe, ní bheidh an liosta ÃēsÃĄideoirí ar fÃĄil ach d’ÃēsÃĄideoirí riarthÃŗra.", + "server_settings": "Socruithe Freastalaí", + "server_settings_description": "Bainistigh socruithe an fhreastalaí", + "server_stats_page_description": "Leathanach staitisticí freastalaí riarthÃŗra", + "server_welcome_message": "Teachtaireacht fÃĄilte", + "server_welcome_message_description": "Teachtaireacht a thaispeÃĄntar ar an leathanach logÃĄla isteach.", + "settings_page_description": "Leathanach socruithe riarthÃŗra", + "sidecar_job": "Meiteashonraí taobhcharr", + "sidecar_job_description": "Meiteashonraí taobhlíne Ãŗn gcÃŗras comhad a aimsiÃē nÃŗ a shioncrÃŗnÃē", + "slideshow_duration_description": "Líon na soicindí chun gach íomhÃĄ a thaispeÃĄint", + "smart_search_job_description": "Rith foghlaim meaisín ar shÃŗcmhainní chun tacÃē le cuardach cliste", + "storage_template_date_time_description": "ÚsÃĄidtear stampa ama cruthaithe na sÃŗcmhainne don fhaisnÊis dÃĄta-ama", + "storage_template_date_time_sample": "Am samplach {date}", + "storage_template_enable_description": "Cumasaigh inneall teimplÊid stÃŗrÃĄla", + "storage_template_hash_verification_enabled": "FíorÃē haise cumasaithe", + "storage_template_hash_verification_enabled_description": "Cumasaíonn sÊ fíorÃē haise, nÃĄ díchumasaigh Ê seo mura bhfuil tÃē cinnte faoi na himpleachtaí", + "storage_template_migration": "Imirce teimplÊid stÃŗrÃĄla", + "storage_template_migration_description": "Cuir an {template} reatha i bhfeidhm ar shÃŗcmhainní a uaslÃŗdÃĄileadh roimhe seo", + "storage_template_migration_info": "DÊanfaidh an teimplÊad stÃŗrÃĄla na síntí go lÊir a thiontÃē go litreacha beaga. Ní bheidh feidhm ag athruithe ar an teimplÊad ach amhÃĄin maidir le sÃŗcmhainní nua. Chun an teimplÊad a chur i bhfeidhm go siarghabhÃĄlach ar shÃŗcmhainní a uaslÃŗdÃĄladh roimhe seo, rith {job}.", + "storage_template_migration_job": "Post Imirce TeimplÊid StÃŗrÃĄla", + "storage_template_more_details": "Le haghaidh tuilleadh sonraí faoin ngnÊ seo, fÊach ar an TeimplÊad StÃŗrÃĄla agus a implications", + "storage_template_onboarding_description_v2": "Nuair a bheidh sÊ cumasaithe, eagrÃŗidh an ghnÊ seo comhaid go huathoibríoch bunaithe ar theimplÊad atÃĄ sainithe ag an ÃēsÃĄideoir. Le haghaidh tuilleadh eolais, fÊach ar an doicimÊadÃē.", + "storage_template_path_length": "Teorainn fhaid chosÃĄin thart: {length, number}/{limit, number}", + "storage_template_settings": "TeimplÊad StÃŗrÃĄla", + "storage_template_settings_description": "Bainistigh struchtÃēr an fhillteÃĄin agus ainm comhaid na sÃŗcmhainne uaslÃŗdÃĄla", + "storage_template_user_label": "Is Ê {label} LipÊad StÃŗrÃĄla an ÃēsÃĄideora", + "system_settings": "Socruithe CÃŗrais", + "tag_cleanup_job": "Glanadh clibeanna", + "template_email_available_tags": "Is fÊidir leat na hathrÃŗga seo a leanas a ÃēsÃĄid i do theimplÊad: {tags}", + "template_email_if_empty": "Mura bhfuil an teimplÊad ann, ÃēsÃĄidfear an ríomhphost rÊamhshocraithe.", + "template_email_invite_album": "TeimplÊad Albam Cuireadh", + "template_email_preview": "RÊamhamharc", + "template_email_settings": "TeimplÊid Ríomhphoist", + "template_email_update_album": "Nuashonraigh TeimplÊad Albam", + "template_email_welcome": "TeimplÊad ríomhphoist fÃĄilte", + "template_settings": "TeimplÊid FÃŗgra", + "template_settings_description": "Bainistigh teimplÊid saincheaptha le haghaidh fÃŗgraí", + "theme_custom_css_settings": "CSS saincheaptha", + "theme_custom_css_settings_description": "Le Bileoga Stíl EascÃĄideacha is fÊidir dearadh Immich a shaincheapadh.", + "theme_settings": "Socruithe TÊama", + "theme_settings_description": "Bainistigh saincheapadh chomhÊadan grÊasÃĄin Immich", + "thumbnail_generation_job": "Gin Mionsamhlacha", + "thumbnail_generation_job_description": "Gin mionsamhlacha mÃŗra, beaga agus doilÊire do gach sÃŗcmhainn, chomh maith le mionsamhlacha do gach duine", + "transcoding_acceleration_api": "API LuasghÊaraithe", + "transcoding_acceleration_api_description": "An API a idirghníomhÃŗidh le do ghlÊas chun traschÃŗdÃē a bhrostÃē. Is Ê an socrÃē seo an 'iarracht is fearr': ÃēsÃĄidfear traschÃŗdÃē bogearraí mar rogha eile mÃĄ theipeann air. D’fhÊadfadh VP9 oibriÃē nÃŗ gan oibriÃē ag brath ar do chrua-earraí.", + "transcoding_acceleration_nvenc": "NVENC (Êilíonn GPU NVIDIA)", + "transcoding_acceleration_qsv": "SioncrÃŗnÃē Tapa (Êilíonn LAP Intel den 7Ãē glÃēin nÃŗ níos dÊanaí)", + "transcoding_acceleration_rkmpp": "RKMPP (ar SOCanna Rockchip amhÃĄin)", + "transcoding_acceleration_vaapi": "VAAPI", + "transcoding_accepted_audio_codecs": "CÃŗdaic fuaime glactha", + "transcoding_accepted_audio_codecs_description": "Roghnaigh cÊ na cÃŗdaic fuaime nach gÃĄ a thraschÃŗdÃē. Ní ÃēsÃĄidtear Ê ach le haghaidh polasaithe traschÃŗdÃĄla ÃĄirithe.", + "transcoding_accepted_containers": "CoimeÃĄdÃĄin glactha", + "transcoding_accepted_containers_description": "Roghnaigh cÊ na formÃĄidí coimeÃĄdÃĄin nach gÃĄ a ath-chomhshÃŗ go MP4. Ní ÃēsÃĄidtear Ê ach le haghaidh polasaithe traschÃŗdaithe ÃĄirithe.", + "transcoding_accepted_video_codecs": "CÃŗdaic físe glactha", + "transcoding_accepted_video_codecs_description": "Roghnaigh cÊ na cÃŗdaic físe nach gÃĄ a thraschÃŗdÃē. Ní ÃēsÃĄidtear Ê ach le haghaidh polasaithe traschÃŗdÃĄla ÃĄirithe.", + "transcoding_advanced_options_description": "Roghanna nach mbeadh ar fhormhÃŗr na n-ÃēsÃĄideoirí a athrÃē", + "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_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 cÃŗdÊc H.264, cÃŗdÊc HEVC agus cÃŗdÊc VP9.", + "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_rate_factor": "FachtÃŗir rÃĄta tairiseach (-crf)", + "transcoding_constant_rate_factor_description": "LeibhÊal cÃĄilíochta físe. Is iad na luachanna tipiciÃēla nÃĄ 23 do H.264, 28 do HEVC, 31 do VP9, agus 35 do AV1. Is fearr dÃĄ ísle, ach cruthaíonn sÊ comhaid níos mÃŗ.", + "transcoding_disabled_description": "NÃĄ traschÃŗdaigh aon fhíseÃĄin, d'fhÊadfadh sÊ go gcuirfí isteach ar an athsheinm ar roinnt cliant", + "transcoding_encoding_options": "Roghanna IonchÃŗdaithe", + "transcoding_encoding_options_description": "Socraigh cÃŗdaigh, taifeach, cÃĄilíocht agus roghanna eile do na físeÃĄin ionchÃŗdaithe", + "transcoding_hardware_acceleration": "LuasghÊarÃē Crua-earraí", + "transcoding_hardware_acceleration_description": "Turgnamhach: traschÃŗdÃē níos tapÃēla ach d'fhÊadfadh sÊ go laghdÃŗfaí an caighdeÃĄn ag an rÃĄta giotÃĄn cÊanna", + "transcoding_hardware_decoding": "DíchÃŗdÃē crua-earraí", + "transcoding_hardware_decoding_setting_description": "Cumasaíonn sÊ luasghÊarÃē Ãŗ cheann ceann go ceann seachas ionchÃŗdÃē amhÃĄin a luasghÊarÃē. Seans nach n-oibreoidh sÊ ar gach físeÃĄn.", + "transcoding_max_b_frames": "UasmhÊid frÃĄmaí B", + "transcoding_max_b_frames_description": "Feabhsaíonn luachanna níos airde ÊifeachtÃēlacht an chomhbhrÃēite, ach moillíonn siad ionchÃŗdÃē. B’fhÊidir nach mbeidh siad comhoiriÃēnach le luasghÊarÃē crua-earraí ar fheistí níos sine. Díchumasaíonn 0 frÃĄmaí-B, agus socraíonn -1 an luach seo go huathoibríoch.", + "transcoding_max_bitrate": "UasrÃĄta giotÃĄn", + "transcoding_max_bitrate_description": "Is fÊidir le huasrÃĄta giotÃĄn a shocrÃē mÊideanna comhad a dhÊanamh níos intuartha ar chostas beag don chÃĄilíocht. Ag 720p, is iad na luachanna tipiciÃēla nÃĄ 2600 kbit/s do VP9 nÃŗ HEVC, nÃŗ 4500 kbit/s do H.264. Díchumasaithe mÃĄ shocraítear go 0. Nuair nach sonraítear aon aonad, glactar leis go bhfuil k (do kbit/s); dÃĄ bhrí sin, tÃĄ 5000, 5000k, agus 5M (do Mbit/s) coibhÊiseach.", + "transcoding_max_keyframe_interval": "UasmhÊid eatramh frÃĄma eochair", + "transcoding_max_keyframe_interval_description": "Socraíonn sÊ an fad frÃĄma uasta idir eochairfhrÃĄmaí. Laghdaíonn luachanna níos ísle ÊifeachtÃēlacht an chomhbhrÃēite, ach feabhsaíonn siad amanna cuardaigh agus fÊadfaidh siad feabhas a chur ar chÃĄilíocht i radhairc le gluaiseacht thapa. Socraíonn 0 an luach seo go huathoibríoch.", + "transcoding_optimal_description": "FíseÃĄin níos airde nÃĄ an rÃēn sprice nÃŗ nach bhfuil i bhformÃĄid inghlactha", + "transcoding_policy": "Polasaí TraschÃŗdÃĄla", + "transcoding_policy_description": "Socraigh cathain a thraschÃŗdÃŗfar físeÃĄn", + "transcoding_preferred_hardware_device": "GlÊas crua-earraí is fearr leat", + "transcoding_preferred_hardware_device_description": "Ní bhaineann sÊ ach le VAAPI agus QSV. Socraíonn sÊ an nÃŗd dri a ÃēsÃĄidtear le haghaidh traschÃŗdÃē crua-earraí.", + "transcoding_preset_preset": "RÊamhshocrÃē (-rÊamhshocrÃē)", + "transcoding_preset_preset_description": "Luas comhbhrÃēite. Gineann rÊamhshocruithe níos moille comhaid níos lÃē, agus mÊadaíonn siad cÃĄilíocht nuair a bhíonn rÃĄta giotÃĄn ÃĄirithe ÃĄ spriocdhíriÃē. Ní thugann VP9 aird ar luasanna os cionn 'níos tapÃēla'.", + "transcoding_reference_frames": "FrÃĄmaí tagartha", + "transcoding_reference_frames_description": "Líon na bhfrÃĄmaí le tagairt dÃŗibh agus frÃĄma ÃĄirithe ÃĄ chomhbhrÃē. Feabhsaíonn luachanna níos airde ÊifeachtÃēlacht an chomhbhrÃēite, ach moillíonn siad an ionchÃŗdÃē. Socraíonn 0 an luach seo go huathoibríoch.", + "transcoding_required_description": "FíseÃĄin amhÃĄin nach bhfuil i bhformÃĄid inghlactha", + "transcoding_settings": "Socruithe TraschÃŗdaithe FíseÃĄin", + "transcoding_settings_description": "Bainistigh cÊ na físeÃĄin atÃĄ le traschÃŗdÃē agus conas iad a phrÃŗiseÃĄil", + "transcoding_target_resolution": "RÊiteach sprice", + "transcoding_target_resolution_description": "Is fÊidir le taifeach níos airde níos mÃŗ sonraí a chaomhnÃē ach tÃŗgann sÊ níos faide iad a ionchÃŗdÃē, bíonn mÊideanna comhaid níos mÃŗ acu, agus fÊadann siad freagrÃēlacht aipeanna a laghdÃē.Is fÊidir le taifeach níos airde níos mÃŗ sonraí a chaomhnÃē ach tÃŗgann sÊ níos faide iad a ionchÃŗdÃē, bíonn mÊideanna comhaid níos mÃŗ acu, agus fÊadann siad freagrÃēlacht aipeanna a laghdÃē.", + "transcoding_temporal_aq": "AQ Ama", + "transcoding_temporal_aq_description": "Baineann sÊ seo le NVENC amhÃĄin. MÊadaíonn CainníochtÃē OiriÃēnaitheach Ama cÃĄilíocht radharcanna ard-mhionsonraí, ísealghluaiseachta. Seans nach mbeidh sÊ comhoiriÃēnach le glÊasanna níos sine.", + "transcoding_threads": "SnÃĄitheanna", + "transcoding_threads_description": "Bíonn ionchÃŗdÃē níos tapÃēla mar thoradh ar luachanna níos airde, ach fÃĄgann siad níos lÃē spÃĄis don fhreastalaí chun tascanna eile a phrÃŗiseÃĄil agus Ê gníomhach. Níor cheart go mbeadh an luach seo níos mÃŗ nÃĄ líon chroíthe an LAP. UasmhÊadaíonn sÊ an ÃēsÃĄid mÃĄ shocraítear Ê go 0.", + "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_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 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_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_description": "TÃĄ ardÊifeachtÃēlacht agus comhoiriÃēnacht grÊasÃĄin ag VP9, ach tÃŗgann sÊ níos faide Ê a thraschÃŗdÃē. Feidhmíonn HEVC ar an gcaoi chÊanna, ach tÃĄ comhoiriÃēnacht grÊasÃĄin níos ísle aige. TÃĄ H.264 comhoiriÃēnach go forleathan agus is furasta Ê a thraschÃŗdÃē, ach tÃĄirgeann sÊ comhaid i bhfad níos mÃŗ. Is Ê AV1 an cÃŗdac is Êifeachtaí ach níl tacaíocht aige ar fheistí níos sine.", + "trash_enabled_description": "Cumasaigh gnÊithe Bruscair", + "trash_number_of_days": "Líon na laethanta", + "trash_number_of_days_description": "Líon na laethanta chun na sÃŗcmhainní a choinneÃĄil sa bhruscar sula mbaintear iad go buan", + "trash_settings": "Socruithe Bruscair", + "trash_settings_description": "Bainistigh socruithe bruscair", + "unlink_all_oauth_accounts": "Dínasc gach cuntas OAuth", + "unlink_all_oauth_accounts_description": "Cuimhnigh gach cuntas OAuth a dhínascadh sula ndÊanann tÃē aistriÃē chuig solÃĄthraí nua.", + "unlink_all_oauth_accounts_prompt": "An bhfuil tÃē cinnte gur mian leat gach cuntas OAuth a dhínascadh? AthshocrÃŗidh sÊ seo an ID OAuth do gach ÃēsÃĄideoir agus ní fÊidir Ê a chealÃē.", + "user_cleanup_job": "Glanadh ÃēsÃĄideora", + "user_delete_delay": "SceidealÃŗfar cuntas agus sÃŗcmhainní {user} le haghaidh scriosadh buan i gceann {delay, plural, one {# day} other {# days}}.", + "user_delete_delay_settings": "Moill scriosta", + "user_delete_delay_settings_description": "Líon na laethanta tar Êis bainte chun cuntas agus sÃŗcmhainní ÃēsÃĄideora a scriosadh go buan. Ritheann an post scriosta ÃēsÃĄideora ag meÃĄn oíche chun a sheiceÃĄil an bhfuil ÃēsÃĄideoirí rÊidh le scriosadh. DÊanfar athruithe ar an socrÃē seo a mheas ag an gcÊad fhorghníomhÃē eile.", + "user_delete_immediately": "Cuirfear cuntas agus sÃŗcmhainní {user} i scuaine le haghaidh scriosadh buan lÃĄithreach.", + "user_delete_immediately_checkbox": "Cuir ÃēsÃĄideoir agus sÃŗcmhainní i scuaine le haghaidh scriosadh lÃĄithreach", + "user_details": "Sonraí ÚsÃĄideora", + "user_management": "Bainistíocht ÚsÃĄideoirí", + "user_password_has_been_reset": "TÃĄ pasfhocal an ÃēsÃĄideora athshocraithe:", + "user_password_reset_description": "Tabhair an focal faire sealadach don ÃēsÃĄideoir agus cuir in iÃēl dÃŗibh go mbeidh orthu an focal faire a athrÃē an chÊad uair eile a logÃĄlann siad isteach.", + "user_restore_description": "AthchÃŗireofar cuntas {user}.", + "user_restore_scheduled_removal": "AthchÃŗirigh ÃēsÃĄideoir - baint sceidealaithe ar {date, date, long}", + "user_settings": "Socruithe ÚsÃĄideora", + "user_settings_description": "Bainistigh socruithe ÃēsÃĄideora", + "user_successfully_removed": "Baineadh an t-ÃēsÃĄideoir {email} go rathÃēil.", + "users_page_description": "Leathanach ÃēsÃĄideoirí riarthÃŗra", + "version_check_enabled_description": "Cumasaigh seiceÃĄil leagan", + "version_check_implications": "Braitheann an ghnÊ seiceÃĄla leagan ar chumarsÃĄid thrÊimhsiÃēil le github.com", + "version_check_settings": "SeiceÃĄil Leagan", + "version_check_settings_description": "Cumasaigh/díchumasaigh an fÃŗgra faoin leagan nua", + "video_conversion_job": "FíseÃĄin TraschÃŗdaithe", + "video_conversion_job_description": "TraschÃŗdaigh físeÃĄin le haghaidh comhoiriÃēnachta níos leithne le brabhsÃĄlaithe agus glÊasanna" + }, + "admin_email": "Ríomhphost an RiarthÃŗra", + "admin_password": "Pasfhocal RiarthÃŗra", + "administration": "RiarachÃĄn", + "advanced": "ArdleibhÊil", + "advanced_settings_enable_alternate_media_filter_subtitle": "ÚsÃĄid an rogha seo chun meÃĄin a scagadh le linn sioncrÃŗnaithe bunaithe ar chritÊir mhalartacha. NÃĄ dÊan iarracht air seo ach amhÃĄin mÃĄ bhíonn fadhbanna agat leis an aip ag braith gach albam.", + "advanced_settings_enable_alternate_media_filter_title": "[TURGNAMHACH] ÚsÃĄid scagaire sioncrÃŗnaithe albam glÊas malartach", + "advanced_settings_log_level_title": "LeibhÊal loga: {level}", + "advanced_settings_prefer_remote_subtitle": "Bíonn roinnt glÊasanna thar a bheith mall ag luchtÃē mionsamhlacha Ãŗ shÃŗcmhainní ÃĄitiÃēla. Gníomhachtaigh an socrÃē seo chun íomhÃĄnna iargÃēlta a luchtÃē ina ionad.", + "advanced_settings_prefer_remote_title": "Is fearr leat íomhÃĄnna iargÃēlta", + "advanced_settings_proxy_headers_subtitle": "Sainmhínigh ceanntÃĄsca seachfhreastalaí ba chÃŗir do Immich a sheoladh le gach iarratas líonra", + "advanced_settings_proxy_headers_title": "CeanntÃĄsca seachfhreastalaí saincheaptha [TURGNAÍOCH]", + "advanced_settings_readonly_mode_subtitle": "Cumasaíonn sÊ seo an modh lÊite amhÃĄin ina bhfÊadfar na grianghraif a fheiceÃĄil amhÃĄin, agus bíonn rudaí cosÃēil le híomhÃĄnna iolracha a roghnÃē, a roinnt, a chraoladh, a scriosadh díchumasaithe. Cumasaigh/Díchumasaigh an modh lÊite amhÃĄin trí abhatÃĄr an ÃēsÃĄideora Ãŗn bpríomhscÃĄileÃĄn", + "advanced_settings_readonly_mode_title": "MÃŗd lÊite amhÃĄin", + "advanced_settings_self_signed_ssl_subtitle": "Scipeann sÊ fíorÃē teastais SSL don chríochphointe freastalaí. Riachtanach le haghaidh teastais fÊinshínithe.", + "advanced_settings_self_signed_ssl_title": "Ceadaigh teastais SSL fÊinshínithe [TURGHAINNEACH]", + "advanced_settings_sync_remote_deletions_subtitle": "Scrios nÃŗ athchÃŗirigh sÃŗcmhainn go huathoibríoch ar an nglÊas seo nuair a dhÊantar an gníomh sin ar an ngrÊasÃĄn", + "advanced_settings_sync_remote_deletions_title": "SioncrÃŗnaigh scriostaí iargÃēlta [TURGNAMHACH]", + "advanced_settings_tile_subtitle": "Socruithe ÃēsÃĄideora ardleibhÊil", + "advanced_settings_troubleshooting_subtitle": "Cumasaigh gnÊithe breise le haghaidh fabhtcheartaithe", + "advanced_settings_troubleshooting_title": "FabhtcheartÃē", + "age_months": "Aois {months, plural, one {# mí} other {# míonna}}", + "age_year_months": "Aois 1 bhliain, {months, plural, one {# mí} other {# míonna}}", + "age_years": "{years, plural, other {Aois #}}", + "album": "Albam", + "album_added": "Albam curtha leis", + "album_added_notification_setting_description": "Faigh fÃŗgra ríomhphoist nuair a chuirtear le halbam comhroinnte thÃē", + "album_cover_updated": "ClÃēdach an albaim nuashonraithe", + "album_delete_confirmation": "An bhfuil tÃē cinnte gur mian leat an t-albam {album} a scriosadh?", + "album_delete_confirmation_description": "Mura roinnfear an t-albam seo, ní bheidh ÃēsÃĄideoirí eile in ann rochtain a fhÃĄil air a thuilleadh.", + "album_deleted": "Scriosadh an t-albam", + "album_info_card_backup_album_excluded": "EISIATA", + "album_info_card_backup_album_included": "SAN ÁIREAMH", + "album_info_updated": "Eolas albam nuashonraithe", + "album_leave": "FÃĄg an t-albam?", + "album_leave_confirmation": "An bhfuil tÃē cinnte gur mian leat {album} a fhÃĄgÃĄil?", + "album_name": "Ainm an Albaim", + "album_options": "Roghanna albaim", + "album_remove_user": "Bain an t-ÃēsÃĄideoir?", + "album_remove_user_confirmation": "An bhfuil tÃē cinnte gur mian leat {user} a bhaint?", + "album_search_not_found": "Ní bhfuarthas aon albaim a mheaitseÃĄlann do chuardach", + "album_share_no_users": "Is cosÃēil gur roinn tÃē an t-albam seo le gach ÃēsÃĄideoir nÃŗ nach bhfuil aon ÃēsÃĄideoir agat le roinnt leis.", + "album_summary": "Achoimre ar an albam", + "album_updated": "Albam nuashonraithe", + "album_updated_setting_description": "Faigh fÃŗgra ríomhphoist nuair a bhíonn sÃŗcmhainní nua i albam comhroinnte", + "album_user_left": "D'fhÃĄg {album}", + "album_user_removed": "Baineadh {user}", + "album_viewer_appbar_delete_confirm": "An bhfuil tÃē cinnte gur mian leat an t-albam seo a scriosadh Ãŗ do chuntas?", + "album_viewer_appbar_share_err_delete": "Theip ar an albam a scriosadh", + "album_viewer_appbar_share_err_leave": "Theip ar an albam a fhÃĄgÃĄil", + "album_viewer_appbar_share_err_remove": "TÃĄ fadhbanna ann maidir le sÃŗcmhainní a bhaint as albam", + "album_viewer_appbar_share_err_title": "Theip ar theideal an albaim a athrÃē", + "album_viewer_appbar_share_leave": "FÃĄg an t-albam", + "album_viewer_appbar_share_to": "Comhroinn Le", + "album_viewer_page_share_add_users": "Cuir ÃēsÃĄideoirí leis", + "album_with_link_access": "Lig d’aon duine a bhfuil an nasc aige grianghraif agus daoine san albam seo a fheiceÃĄil.", + "albums": "Albaim", + "albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Albaim}}", + "albums_default_sort_order": "Ord sÃŗrtÃĄla rÊamhshocraithe albam", + "albums_default_sort_order_description": "Ord sÃŗrtÃĄla sÃŗcmhainní tosaigh agus albaim nua ÃĄ gcruthÃē.", + "albums_feature_description": "BailiÃēchÃĄin sÃŗcmhainní is fÊidir a roinnt le hÃēsÃĄideoirí eile.", + "albums_on_device_count": "Albaim ar an nglÊas ({count})", + "all": "Gach", + "all_albums": "Gach albam", + "all_people": "Gach duine", + "all_videos": "Gach físeÃĄn", + "allow_dark_mode": "Ceadaigh mÃŗd dorcha", + "allow_edits": "Ceadaigh eagarthÃŗireachtaí", + "allow_public_user_to_download": "Ceadaigh d'ÃēsÃĄideoirí poiblí íoslÃŗdÃĄil a dhÊanamh", + "allow_public_user_to_upload": "Ceadaigh d'ÃēsÃĄideoirí poiblí uaslÃŗdÃĄil", + "allowed": "Ceadaithe", + "alt_text_qr_code": "ÍomhÃĄ cÃŗd QR", + "anti_clockwise": "Tuathalach", + "api_key": "Eochair API", + "api_key_description": "Ní thaispeÃĄnfar an luach seo ach uair amhÃĄin. Bí cinnte Ê a chÃŗipeÃĄil sula ndÃēnann tÃē an fhuinneog.", + "api_key_empty": "Níor cheart go mbeadh ainm d’Eochair API folamh", + "api_keys": "Eochracha API", + "app_architecture_variant": "Malartach (Ailtireacht)", + "app_bar_signout_dialog_content": "An bhfuil tÃē cinnte gur mhaith leat síniÃē amach?", + "app_bar_signout_dialog_ok": "TÃĄ", + "app_bar_signout_dialog_title": "Sínigh amach", + "app_download_links": "Naisc ÍoslÃŗdÃĄla Aipeanna", + "app_settings": "Socruithe Aipe", + "app_stores": "Siopaí Aipeanna", + "app_update_available": "TÃĄ nuashonrÃē aip ar fÃĄil", + "appears_in": "Feictear i", + "apply_count": "Cuir i bhfeidhm ({count, number})", + "archive": "Cartlann", + "archive_action_prompt": "{count} curtha leis an gCartlann", + "archive_or_unarchive_photo": "Cartlannaigh nÃŗ díchartlannaigh grianghraf", + "archive_page_no_archived_assets": "Ní bhfuarthas aon sÃŗcmhainní cartlannaithe", + "archive_page_title": "Cartlann ({count})", + "archive_size": "MÊid na cartlainne", + "archive_size_description": "Cumraigh mÊid na cartlainne le haghaidh íoslÃŗdÃĄlacha (i GiB)", + "archived": "Cartlannaithe", + "archived_count": "{count, plural, other {Cartlannaithe #}}", + "are_these_the_same_person": "An iad seo an duine cÊanna?", + "are_you_sure_to_do_this": "An bhfuil tÃē cinnte gur mian leat Ê seo a dhÊanamh?", + "asset_action_delete_err_read_only": "Ní fÊidir sÃŗcmhainn(í) lÊite amhÃĄin a scriosadh, ag scipeÃĄil", + "asset_action_share_err_offline": "Ní fÊidir sÃŗcmhainn(í) as líne a fhÃĄil, ag scipeÃĄil", + "asset_added_to_album": "Curtha leis an albam", + "asset_adding_to_album": "Ag cur leis an albamâ€Ļ", + "asset_description_updated": "TÃĄ cur síos na sÃŗcmhainne nuashonraithe", + "asset_filename_is_offline": "TÃĄ an tsÃŗcmhainn {filename} as líne", + "asset_has_unassigned_faces": "TÃĄ aghaidheanna neamhshannta ag an tsÃŗcmhainn", + "asset_hashing": "Ag hasÃĄilâ€Ļ", + "asset_list_group_by_sub_title": "GrÃēpÃĄil de rÊir", + "asset_list_layout_settings_dynamic_layout_title": "Leagan amach dinimiciÃēil", + "asset_list_layout_settings_group_automatically": "Uathoibríoch", + "asset_list_layout_settings_group_by": "SÃŗcmhainní grÃēpa de rÊir", + "asset_list_layout_settings_group_by_month_day": "Mí + lÃĄ", + "asset_list_layout_sub_title": "Leagan Amach", + "asset_list_settings_subtitle": "Socruithe leagan amach eangach grianghraf", + "asset_list_settings_title": "Eangach Grianghraf", + "asset_offline": "SÃŗcmhainn As Líne", + "asset_offline_description": "Níl an tsÃŗcmhainn sheachtrach seo le fÃĄil ar dhiosca a thuilleadh. TÊigh i dteagmhÃĄil le riarthÃŗir do Immich le haghaidh cabhrach.", + "asset_restored_successfully": "AthchÃŗiríodh an tsÃŗcmhainn go rathÃēil", + "asset_skipped": "ScipeÃĄilte", + "asset_skipped_in_trash": "Sa bhruscar", + "asset_trashed": "SÃŗcmhainn curtha sa bhruscar", + "asset_troubleshoot": "FabhtcheartÃē SÃŗcmhainní", + "asset_uploaded": "UaslÃŗdÃĄilte", + "asset_uploading": "Ag uaslÃŗdÃĄilâ€Ļ", + "asset_viewer_settings_subtitle": "Bainistigh do shocruithe breathnÃŗra gailearaí", + "asset_viewer_settings_title": "AmharcÃŗir SÃŗcmhainní", + "assets": "SÃŗcmhainní", + "assets_added_count": "Cuireadh {count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}}", + "assets_added_to_album_count": "Cuireadh {count, plural, one {# asset} other {# assets}} leis an albam", + "assets_added_to_albums_count": "Cuireadh {assetTotal, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}} go {albumTotal, plural, one {# albam} other {# albaim}}", + "assets_cannot_be_added_to_album_count": "Ní fÊidir {count, plural, one {SÃŗcmhainn} other {SÃŗcmhainní}} a chur leis an albam", + "assets_cannot_be_added_to_albums": "Ní fÊidir {count, plural, one {Asset} other {Assets}} a chur le haon cheann de na halbaim", + "assets_count": "{count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}}", + "assets_deleted_permanently": "Scriosadh {count} sÃŗcmhainn(í) go buan", + "assets_deleted_permanently_from_server": "Scriosadh {count} sÃŗcmhainn(í) go buan Ãŗn bhfreastalaí Immich", + "assets_downloaded_failed": "{count, plural, one {ÍoslÃŗdÃĄil # comhad - {error} theip ar chomhad} other {ÍoslÃŗdÃĄil # comhaid - {error} theip ar chomhad}}", + "assets_downloaded_successfully": "{count, plural, one {ÍoslÃŗdÃĄileadh # comhad go rathÃēil} other {ÍoslÃŗdÃĄileadh # comhaid go rathÃēil}}", + "assets_moved_to_trash_count": "Bogadh {count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}} go dtí an bruscar", + "assets_permanently_deleted_count": "Scriosta go buan {count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}}", + "assets_removed_count": "Baineadh {count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}}", + "assets_removed_permanently_from_device": "Baineadh {count} sÃŗcmhainn(í) go buan Ãŗ do ghlÊas", + "assets_restore_confirmation": "An bhfuil tÃē cinnte gur mian leat do shÃŗcmhainní uile atÃĄ curtha sa bhruscar a athchÃŗiriÃē? Ní fÊidir leat an gníomh seo a chealÃē! Tabhair faoi deara nach fÊidir aon sÃŗcmhainní as líne a athchÃŗiriÃē ar an mbealach seo.", + "assets_restored_count": "AthchÃŗirithe {count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}}", + "assets_restored_successfully": "{count} sÃŗcmhainn(í) athchÃŗirithe go rathÃēil", + "assets_trashed": "{count} sÃŗcmhainn(í) curtha sa bhruscar", + "assets_trashed_count": "Bruscar {count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}}", + "assets_trashed_from_server": "{count} sÃŗcmhainn(í) curtha sa bhruscar Ãŗn bhfreastalaí Immich", + "assets_were_part_of_album_count": "{count, plural, one {SÃŗcmhainn a bhí} other {SÃŗcmhainní a bhí}} mar chuid den albam cheana fÊin", + "assets_were_part_of_albums_count": "Bhí {count, plural, one {an tsÃŗcmhainn} other {na tsÃŗcmhainní}} mar chuid de na halbaim cheana fÊin", + "authorized_devices": "GlÊasanna Údaraithe", + "automatic_endpoint_switching_subtitle": "Ceangail go hÃĄitiÃēil thar Wi-Fi ainmnithe nuair atÃĄ sÊ ar fÃĄil agus bain ÃēsÃĄid as naisc mhalartacha in ÃĄiteanna eile", + "automatic_endpoint_switching_title": "AthrÃē uathoibríoch URL", + "autoplay_slideshow": "TaispeÃĄntas sleamhnÃĄn uathsheinm", + "back": "Ar ais", + "back_close_deselect": "Siar, dÃēn, nÃŗ díroghnaigh", + "background_backup_running_error": "TÃĄ cÃēltaca cÃēlra ar siÃēl faoi lÃĄthair, ní fÊidir cÃēltaca lÃĄimhe a thosÃē", + "background_location_permission": "Cead suímh sa chÃēlra", + "background_location_permission_content": "Chun líonraí a athrÃē agus Ê ag rith sa chÃēlra, ní mÃŗr rochtain chruinn suímh a bheith ag Immich *i gcÃŗnaí* ionas gur fÊidir leis an aip ainm an líonra Wi-Fi a lÊamh", + "background_options": "Roghanna CÃēlra", + "backup": "CÃēltaca", + "backup_album_selection_page_albums_device": "Albaim ar an nglÊas ({count})", + "backup_album_selection_page_albums_tap": "TapÃĄil le cur san ÃĄireamh, tapÃĄil faoi dhÃŗ le heisiamh", + "backup_album_selection_page_assets_scatter": "Is fÊidir sÃŗcmhainní a scaipeadh ar fud il-albaim. DÃĄ bhrí sin, is fÊidir albaim a chur san ÃĄireamh nÃŗ a eisiamh le linn an phrÃŗisis chÃēltaca.", + "backup_album_selection_page_select_albums": "Roghnaigh albaim", + "backup_album_selection_page_selection_info": "Eolas RoghnÃēchÃĄin", + "backup_album_selection_page_total_assets": "IomlÃĄn na sÃŗcmhainní uathÃēla", + "backup_albums_sync": "SioncrÃŗnÃē albam cÃēltaca", + "backup_all": "Gach", + "backup_background_service_backup_failed_message": "Theip ar chÃēltaca sÃŗcmhainní. Ag iarraidh arísâ€Ļ", + "backup_background_service_complete_notification": "CÃēltaca sÃŗcmhainní críochnaithe", + "backup_background_service_connection_failed_message": "Theip ar cheangal leis an bhfreastalaí. Ag iarraidh arísâ€Ļ", + "backup_background_service_current_upload_notification": "Ag uaslÃŗdÃĄil {filename}", + "backup_background_service_default_notification": "Ag seiceÃĄil le haghaidh sÃŗcmhainní nuaâ€Ļ", + "backup_background_service_error_title": "EarrÃĄid chÃēltaca", + "backup_background_service_in_progress_notification": "Ag dÊanamh cÃēltaca de do shÃŗcmhainníâ€Ļ", + "backup_background_service_upload_failure_notification": "Theip ar {filename} a uaslÃŗdÃĄil", + "backup_controller_page_albums": "Albaim ChÃēltaca", + "backup_controller_page_background_app_refresh_disabled_content": "Cumasaigh athnuachan aipeanna cÃēlra i Socruithe > GinearÃĄlta > Athnuachan Aipeanna CÃēlra chun cÃēltaca cÃēlra a ÃēsÃĄid.", + "backup_controller_page_background_app_refresh_disabled_title": "Athnuachan aip sa chÃēlra díchumasaithe", + "backup_controller_page_background_app_refresh_enable_button_text": "TÊigh go dtí na socruithe", + "backup_controller_page_background_battery_info_link": "TaispeÃĄin dom conas", + "backup_controller_page_background_battery_info_message": "Chun an taithí cÃēltaca cÃēlra is fearr a fhÃĄil, díchumasaigh aon uasmhÊaduithe ceallraí a chuireann srian ar ghníomhaíocht chÃēlra do Immich.\n\nÓs rud Ê go bhfuil sÊ seo sainiÃēil don ghlÊas, fÊach ar an bhfaisnÊis riachtanach le haghaidh monarÃŗir do ghlÊis.", + "backup_controller_page_background_battery_info_ok": "Ceart go leor", + "backup_controller_page_background_battery_info_title": "OptamÃēchÃĄin ceallraí", + "backup_controller_page_background_charging": "Agus Ê ÃĄ mhuirearÃē amhÃĄin", + "backup_controller_page_background_configure_error": "Theip ar chumrÃē na seirbhíse cÃēlra", + "backup_controller_page_background_delay": "Moill ar chÃēltaca sÃŗcmhainní nua: {duration}", + "backup_controller_page_background_description": "Cas ar an tseirbhís chÃēlra chun cÃēltaca uathoibríoch d’aon sÃŗcmhainní nua a dhÊanamh gan an aip a oscailt", + "backup_controller_page_background_is_off": "TÃĄ cÃēltaca uathoibríoch sa chÃēlra mÃēchta", + "backup_controller_page_background_is_on": "TÃĄ cÃēltaca uathoibríoch sa chÃēlra ar siÃēl", + "backup_controller_page_background_turn_off": "MÃēch an tseirbhís chÃēlra", + "backup_controller_page_background_turn_on": "Cuir seirbhís chÃēlra ar siÃēl", + "backup_controller_page_background_wifi": "Ar Wi-Fi amhÃĄin", + "backup_controller_page_backup": "CÃēltaca", + "backup_controller_page_backup_selected": "Roghnaithe: ", + "backup_controller_page_backup_sub": "Grianghraif agus físeÃĄin cÃēltaca", + "backup_controller_page_created": "Cruthaithe ar: {date}", + "backup_controller_page_desc_backup": "Cas ar chÃēltaca sa tulra chun sÃŗcmhainní nua a uaslÃŗdÃĄil go huathoibríoch chuig an bhfreastalaí nuair a osclaítear an aip.", + "backup_controller_page_excluded": "Eisiata: ", + "backup_controller_page_failed": "Theip air ({count})", + "backup_controller_page_filename": "Ainm comhaid: {filename} [{size}]", + "backup_controller_page_id": "ID: {id}", + "backup_controller_page_info": "FaisnÊis ChÃēltaca", + "backup_controller_page_none_selected": "Níor roghnaíodh aon cheann", + "backup_controller_page_remainder": "Fuílleach", + "backup_controller_page_remainder_sub": "Grianghraif agus físeÃĄin atÃĄ fÃĄgtha le cÃēltaca Ãŗn rogha", + "backup_controller_page_server_storage": "StÃŗrÃĄil Freastalaí", + "backup_controller_page_start_backup": "Tosaigh CÃēltaca", + "backup_controller_page_status_off": "TÃĄ cÃēltaca uathoibríoch sa tulra mÃēchta", + "backup_controller_page_status_on": "TÃĄ cÃēltaca uathoibríoch sa tulra ar siÃēl", + "backup_controller_page_storage_format": "{used} de {total} ÃēsÃĄidte", + "backup_controller_page_to_backup": "Albaim le cÃēltaca", + "backup_controller_page_total_sub": "Gach grianghraf agus físeÃĄn uathÃēil Ãŗ albaim roghnaithe", + "backup_controller_page_turn_off": "MÃēch cÃēltaca sa tulra", + "backup_controller_page_turn_on": "Cuir cÃēltaca sa tulra ar siÃēl", + "backup_controller_page_uploading_file_info": "Eolas comhaid ÃĄ uaslÃŗdÃĄil", + "backup_err_only_album": "Ní fÊidir an t-aon albam a bhaint", + "backup_error_sync_failed": "Theip ar an sioncrÃŗnÃē. Ní fÊidir an cÃēltaca a phrÃŗiseÃĄil.", + "backup_info_card_assets": "sÃŗcmhainní", + "backup_manual_cancelled": "Cealaithe", + "backup_manual_in_progress": "UaslÃŗdÃĄil ar siÃēl cheana fÊin. Bain triail as ar ball", + "backup_manual_success": "Rath", + "backup_manual_title": "StÃĄdas uaslÃŗdÃĄla", + "backup_options": "Roghanna CÃēltaca", + "backup_options_page_title": "Roghanna cÃēltaca", + "backup_setting_subtitle": "Bainistigh socruithe uaslÃŗdÃĄla cÃēlra agus tulra", + "backup_settings_subtitle": "Bainistigh socruithe uaslÃŗdÃĄla", + "backup_upload_details_page_more_details": "TapÃĄil le haghaidh tuilleadh sonraí", + "backward": "Ar gcÃēl", + "biometric_auth_enabled": "Cumasaíodh fíordheimhniÃē bithmhÊadrach", + "biometric_locked_out": "Albaim an chulta", + "biometric_no_options": "Níl aon roghanna bithmhÊadracha ar fÃĄil", + "biometric_not_available": "Níl fíordheimhniÃē bithmhÊadrach ar fÃĄil ar an nglÊas seo", + "birthdate_saved": "DÃĄta breithe sÃĄbhÃĄilte go rathÃēil", + "birthdate_set_description": "ÚsÃĄidtear dÃĄta breithe chun aois an duine seo trÃĄth a ngrianghraf a ríomh.", + "blurred_background": "CÃēlra doilÊir", + "bugs_and_feature_requests": "Fabhtanna & Iarratais ar GhnÊithe", + "build": "TÃŗgÃĄil", + "build_image": "TÃŗg ÍomhÃĄ", + "bulk_delete_duplicates_confirmation": "An bhfuil tÃē cinnte gur mian leat {count, plural, one {# sÃŗcmhainn dhÃēblach} other {# sÃŗcmhainní dÃēblacha}} a scriosadh go mÃŗrchÃŗir? Coinneoidh sÊ seo an tsÃŗcmhainn is mÃŗ de gach grÃēpa agus scriosfaidh sÊ go buan na dÃēblaigh eile go lÊir. Ní fÊidir leat an gníomh seo a chealÃē!", + "bulk_keep_duplicates_confirmation": "An bhfuil tÃē cinnte gur mian leat {count, plural, one {# duplicate asset} other {# duplicate assets}} a choinneÃĄil? RÊiteoidh sÊ seo gach grÃēpa dÃēblach gan aon rud a scriosadh.", + "bulk_trash_duplicates_confirmation": "An bhfuil tÃē cinnte gur mian leat {count, plural, one {# duplicate asset} other {# duplicate assets}} a chur sa bhruscar? Coinneoidh sÊ seo an tsÃŗcmhainn is mÃŗ de gach grÃēpa agus cuirfidh sÊ na dÃēblaigh eile go lÊir sa bhruscar.", + "buy": "CeannachÃĄn Immich", + "cache_settings_clear_cache_button": "Glan an taisce", + "cache_settings_clear_cache_button_title": "Glanann sÊ seo taisce an aip. Beidh tionchar suntasach aige seo ar fheidhmíocht an aip go dtí go mbeidh an taisce atÃŗgtha.", + "cache_settings_duplicated_assets_clear_button": "GLAN", + "cache_settings_duplicated_assets_subtitle": "Grianghraif agus físeÃĄin a ndÊantar neamhaird orthu san aip", + "cache_settings_duplicated_assets_title": "SÃŗcmhainní DÃēblaithe ({count})", + "cache_settings_statistics_album": "Mionsamhlacha leabharlainne", + "cache_settings_statistics_full": "ÍomhÃĄnna iomlÃĄna", + "cache_settings_statistics_shared": "Mionsamhlacha albam comhroinnte", + "cache_settings_statistics_thumbnail": "Mionsamhlacha", + "cache_settings_statistics_title": "ÚsÃĄid taisce", + "cache_settings_subtitle": "RialÃē iompar taisceÃĄla an fheidhmchlÃĄir shoghluaiste Immich", + "cache_settings_tile_subtitle": "RialÃē an iompair stÃŗrÃĄla ÃĄitiÃēil", + "cache_settings_tile_title": "StÃŗrÃĄil ÁitiÃēil", + "cache_settings_title": "Socruithe TaisceÃĄla", + "camera": "Ceamara", + "camera_brand": "Branda ceamara", + "camera_model": "MÃēnla ceamara", + "cancel": "Cealaigh", + "cancel_search": "Cealaigh an cuardach", + "canceled": "Cealaithe", + "canceling": "Ag cealÃē", + "cannot_merge_people": "Ní fÊidir daoine a chumasc", + "cannot_undo_this_action": "Ní fÊidir leat an gníomh seo a chealÃē!", + "cannot_update_the_description": "Ní fÊidir an cur síos a nuashonrÃē", + "cast": "Caith", + "cast_description": "Cumraigh na cinn scríbe teilgthe atÃĄ ar fÃĄil", + "change_date": "Athraigh dÃĄta", + "change_description": "Athraigh cur síos", + "change_display_order": "Athraigh ord taispeÃĄna", + "change_expiration_time": "Athraigh an t-am Êaga", + "change_location": "Athraigh suíomh", + "change_name": "Athraigh ainm", + "change_name_successfully": "Athraíodh an t-ainm go rathÃēil", + "change_password": "Athraigh Pasfhocal", + "change_password_description": "Seo an chÊad uair duit síniÃē isteach sa chÃŗras nÃŗ rinneadh iarratas chun do phasfhocal a athrÃē. Cuir isteach an pasfhocal nua thíos le do thoil.", + "change_password_form_confirm_password": "Deimhnigh Pasfhocal", + "change_password_form_description": "Haigh, {name},\n\nIs í seo an chÊad uair duit síniÃē isteach sa chÃŗras nÃŗ rinneadh iarratas chun do phasfhocal a athrÃē. Cuir isteach an pasfhocal nua thíos le do thoil.", + "change_password_form_log_out": "LogÃĄil amach as gach glÊas eile", + "change_password_form_log_out_description": "Moltar logÃĄil amach as gach glÊas eile", + "change_password_form_new_password": "Pasfhocal Nua", + "change_password_form_password_mismatch": "Ní hionann na pasfhocail", + "change_password_form_reenter_new_password": "Ath-iontrÃĄil Pasfhocal Nua", + "change_pin_code": "Athraigh an cÃŗd PIN", + "change_your_password": "Athraigh do phasfhocal", + "changed_visibility_successfully": "Athraíodh an infheictheacht go rathÃēil", + "charging": "MuirearÃē", + "charging_requirement_mobile_backup": "Éilíonn cÃēltaca cÃēlra go bhfuil an glÊas ÃĄ mhuirearÃē", + "check_corrupt_asset_backup": "SeiceÃĄil le haghaidh cÃēltacaí sÃŗcmhainní truaillithe", + "check_corrupt_asset_backup_button": "DÊan seiceÃĄil", + "check_corrupt_asset_backup_description": "NÃĄ dÊan an seiceÃĄil seo ach amhÃĄin thar Wi-Fi agus nuair a bheidh cÃēltaca dÊanta de na sÃŗcmhainní go lÊir. D’fhÊadfadh sÊ go dtÃŗgfadh an nÃŗs imeachta cÃēpla nÃŗimÊad.", + "check_logs": "SeiceÃĄil Logaí", + "checksum": "Suim sheiceÃĄla", + "choose_matching_people_to_merge": "Roghnaigh daoine comhoiriÃēnacha le cumasc", + "city": "Cathair", + "clear": "Glan", + "clear_all": "Glan gach rud", + "clear_all_recent_searches": "Glan gach cuardach le dÊanaí", + "clear_file_cache": "Glan an Taisce Comhad", + "clear_message": "Teachtaireacht shoilÊir", + "clear_value": "Glan luach", + "client_cert_dialog_msg_confirm": "Ceart go leor", + "client_cert_enter_password": "Cuir isteach Pasfhocal", + "client_cert_import": "IompÃŗrtÃĄil", + "client_cert_import_success_msg": "TÃĄ deimhniÃē cliant allmhairithe", + "client_cert_invalid_msg": "Comhad teastais neamhbhailí nÃŗ pasfhocal mícheart", + "client_cert_remove_msg": "Baineadh teastas an chliaint", + "client_cert_subtitle": "Tacaíonn sÊ le formÃĄid PKCS12 (.p12, .pfx) amhÃĄin. Ní fÊidir teastais a allmhairiÃē/a bhaint ach amhÃĄin roimh logÃĄil isteach", + "client_cert_title": "Teastas cliant SSL [TURGHAINNEACH]", + "clockwise": "Deiseal", + "close": "DÃēn", + "collapse": "Laghdaigh", + "collapse_all": "Laghdaigh gach rud", + "color": "Dath", + "color_theme": "TÊama datha", + "command": "OrdÃē", + "comment_deleted": "TrÃĄcht scriosta", + "comment_options": "Roghanna trÃĄchta", + "comments_and_likes": "TrÃĄchtanna & Is maith liom", + "comments_are_disabled": "TÃĄ tuairimí díchumasaithe", + "common_create_new_album": "Cruthaigh albam nua", + "completed": "Críochnaithe", + "confirm": "Deimhnigh", + "confirm_admin_password": "Deimhnigh Pasfhocal an RiarthÃŗra", + "confirm_delete_face": "An bhfuil tÃē cinnte gur mian leat aghaidh {name} a scriosadh Ãŗn tsÃŗcmhainn?", + "confirm_delete_shared_link": "An bhfuil tÃē cinnte gur mian leat an nasc comhroinnte seo a scriosadh?", + "confirm_keep_this_delete_others": "Scriosfar gach sÃŗcmhainn eile sa chairn seachas an tsÃŗcmhainn seo. An bhfuil tÃē cinnte gur mian leat leanÃēint ar aghaidh?", + "confirm_new_pin_code": "Deimhnigh an cÃŗd PIN nua", + "confirm_password": "Deimhnigh an focal faire", + "confirm_tag_face": "Ar mhaith leat an aghaidh seo a chlibeÃĄil mar {name}?", + "confirm_tag_face_unnamed": "Ar mhaith leat clib a chur ar an aghaidh seo?", + "connected_device": "GlÊas ceangailte", + "connected_to": "Ceangailte le", + "contain": "Coinnigh", + "context": "ComhthÊacs", + "continue": "Lean ar aghaidh", + "control_bottom_app_bar_create_new_album": "Cruthaigh albam nua", + "control_bottom_app_bar_delete_from_immich": "Scrios Ãŗ Immich", + "control_bottom_app_bar_delete_from_local": "Scrios Ãŗn nglÊas", + "control_bottom_app_bar_edit_location": "Cuir Suíomh in Eagar", + "control_bottom_app_bar_edit_time": "Cuir DÃĄta & Am in Eagar", + "control_bottom_app_bar_share_link": "Comhroinn an Nasc", + "control_bottom_app_bar_share_to": "Comhroinn Le", + "control_bottom_app_bar_trash_from_immich": "Bog go dtí an Bruscar", + "copied_image_to_clipboard": "ÍomhÃĄ cÃŗipeÃĄilte chuig an ghearrthaisce.", + "copied_to_clipboard": "CÃŗipeÃĄilte chuig an ghearrthaisce!", + "copy_error": "EarrÃĄid chÃŗipeÃĄla", + "copy_file_path": "CÃŗipeÃĄil cosÃĄn comhaid", + "copy_image": "CÃŗipeÃĄil ÍomhÃĄ", + "copy_link": "CÃŗipeÃĄil nasc", + "copy_link_to_clipboard": "CÃŗipeÃĄil nasc chuig an ghearrthaisce", + "copy_password": "CÃŗipeÃĄil an focal faire", + "copy_to_clipboard": "CÃŗipeÃĄil chuig an nGearrthaisce", + "country": "Tír", + "cover": "ClÃēdach", + "covers": "ClÃēdaigh", + "create": "Cruthaigh", + "create_album": "Cruthaigh albam", + "create_album_page_untitled": "Gan Teideal", + "create_api_key": "Cruthaigh eochair API", + "create_library": "Cruthaigh Leabharlann", + "create_link": "Cruthaigh nasc", + "create_link_to_share": "Cruthaigh nasc le roinnt", + "create_link_to_share_description": "Lig do dhuine ar bith a bhfuil an nasc aige/aici an/na grianghraf/na grianghraif roghnaithe a fheiceÃĄil", + "create_new": "CRUTHAIGH NUA", + "create_new_person": "Cruthaigh duine nua", + "create_new_person_hint": "Sannadh sÃŗcmhainní roghnaithe do dhuine nua", + "create_new_user": "Cruthaigh ÃēsÃĄideoir nua", + "create_shared_album_page_share_add_assets": "CUIR SÓCMHAINNÍ LEIS", + "create_shared_album_page_share_select_photos": "Roghnaigh Grianghraif", + "create_shared_link": "Cruthaigh nasc comhroinnte", + "create_tag": "Cruthaigh clib", + "create_tag_description": "Cruthaigh clib nua. I gcÃĄs clibeanna neadaithe, cuir isteach cosÃĄn iomlÃĄn an chlib, lena n-ÃĄirítear slaiseanna ar aghaidh.", + "create_user": "Cruthaigh ÃēsÃĄideoir", + "created": "Cruthaithe", + "created_at": "Cruthaithe", + "creating_linked_albums": "Ag cruthÃē albaim nasctha...", + "crop": "Barr", + "curated_object_page_title": "Rudaí", + "current_device": "GlÊas reatha", + "current_pin_code": "CÃŗd PIN reatha", + "current_server_address": "Seoladh reatha an fhreastalaí", + "custom_locale": "LogÃĄn Saincheaptha", + "custom_locale_description": "FormÃĄidigh dÃĄtaí agus uimhreacha bunaithe ar an teanga agus ar an rÊigiÃēn", + "custom_url": "URL Saincheaptha", + "daily_title_text_date": "E, dd MMM", + "daily_title_text_date_year": "E, dd MMM, yyyy", + "dark": "Dorcha", + "dark_theme": "ScorÃĄnaigh an tÊama dorcha", + "date": "DÃĄta", + "date_after": "DÃĄta i ndiaidh", + "date_and_time": "DÃĄta agus Am", + "date_before": "DÃĄta roimh", + "date_format": "E, d LLL, y â€ĸ h:mm a", + "date_of_birth_saved": "DÃĄta breithe sÃĄbhÃĄilte go rathÃēil", + "date_range": "Raon dÃĄta", + "day": "LÃĄ", + "days": "Laethanta", + "deduplicate_all": "DídhÃēblaigh Gach Rud", + "deduplication_criteria_1": "MÊid na híomhÃĄ i mbÊiteanna", + "deduplication_criteria_2": "Líon sonraí EXIF", + "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:", + "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_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_album": "Scrios albam", + "delete_api_key_prompt": "An bhfuil tÃē cinnte gur mian leat an eochair API seo a scriosadh?", + "delete_dialog_alert": "Scriosfar na míreanna seo go buan Ãŗ Immich agus Ãŗ do ghlÊas", + "delete_dialog_alert_local": "Bainfear na míreanna seo go buan de do ghlÊas ach beidh siad fÃŗs ar fÃĄil ar fhreastalaí Immich", + "delete_dialog_alert_local_non_backed_up": "Níl cuid de na míreanna cÃēltaca dÊanta chuig Immich agus bainfear iad go buan de do ghlÊas", + "delete_dialog_alert_remote": "Scriosfar na míreanna seo go buan Ãŗn bhfreastalaí Immich", + "delete_dialog_ok_force": "Scrios Ar Aon Slí", + "delete_dialog_title": "Scrios go Buan", + "delete_duplicates_confirmation": "An bhfuil tÃē cinnte gur mian leat na dÃēblaigh seo a scriosadh go buan?", + "delete_face": "Scrios aghaidh", + "delete_key": "Eochair scriosta", + "delete_library": "Scrios Leabharlann", + "delete_link": "Scrios nasc", + "delete_local_action_prompt": "{count} scriosta go hÃĄitiÃēil", + "delete_local_dialog_ok_backed_up_only": "Scrios CÃēltaca AmhÃĄin", + "delete_local_dialog_ok_force": "Scrios Ar Aon Slí", + "delete_others": "Scrios cinn eile", + "delete_permanently": "Scrios go buan", + "delete_permanently_action_prompt": "{count} scriosta go buan", + "delete_shared_link": "Scrios nasc comhroinnte", + "delete_shared_link_dialog_title": "Scrios Nasc Comhroinnte", + "delete_tag": "Scrios an chlib", + "delete_tag_confirmation_prompt": "An bhfuil tÃē cinnte gur mian leat an clib {tagName} a scriosadh?", + "delete_user": "Scrios ÃēsÃĄideoir", + "deleted_shared_link": "Nasc comhroinnte scriosta", + "deletes_missing_assets": "Scriosann sÊ sÃŗcmhainní atÃĄ ar iarraidh Ãŗn diosca", + "description": "Cur síos", + "description_input_hint_text": "Cuir cur síos leis...", + "description_input_submit_error": "EarrÃĄid ag nuashonrÃē an tuairisce, fÊach ar an log le haghaidh tuilleadh sonraí", + "deselect_all": "Díroghnaigh Gach Rud", + "details": "Sonraí", + "direction": "Treo", + "disabled": "Míchumasaithe", + "disallow_edits": "Dícheadaigh eagarthÃŗireachtaí", + "discord": "Discord", + "discover": "Faigh amach", + "discovered_devices": "GlÊasanna a aimsíodh", + "dismiss_all_errors": "Ruaig gach earrÃĄid", + "dismiss_error": "Díbhe earrÃĄid", + "display_options": "Roghanna taispeÃĄna", + "display_order": "Ord taispeÃĄna", + "display_original_photos": "TaispeÃĄin grianghraif bhunaidh", + "display_original_photos_setting_description": "Is fearr an grianghraf bunaidh a thaispeÃĄint agus sÃŗcmhainn ÃĄ breathnÃē seachas mionsamhlacha nuair atÃĄ an tsÃŗcmhainn bhunaidh comhoiriÃēnach leis an ngrÊasÃĄn. D’fhÊadfadh sÊ seo luasanna taispeÃĄna grianghraf a mhoilliÃē.", + "do_not_show_again": "NÃĄ taispeÃĄin an teachtaireacht seo arís", + "documentation": "DoicimÊadÃē", + "done": "DÊanta", + "download": "ÍoslÃŗdÃĄil", + "download_action_prompt": "Ag íoslÃŗdÃĄil {count} sÃŗcmhainní", + "download_canceled": "ÍoslÃŗdÃĄil curtha ar ceal", + "download_complete": "ÍoslÃŗdÃĄil críochnaithe", + "download_enqueue": "ÍoslÃŗdÃĄil curtha i scuaine", + "download_error": "EarrÃĄid ÍoslÃŗdÃĄla", + "download_failed": "Theip ar an íoslÃŗdÃĄil", + "download_finished": "ÍoslÃŗdÃĄil críochnaithe", + "download_include_embedded_motion_videos": "FíseÃĄin leabaithe", + "download_include_embedded_motion_videos_description": "Cuir físeÃĄin atÃĄ leabaithe i ngrianghraif ghluaiste san ÃĄireamh mar chomhad ar leithligh", + "download_notfound": "ÍoslÃŗdÃĄil gan aimsiÃē", + "download_paused": "ÍoslÃŗdÃĄil curtha ar sos", + "download_settings": "ÍoslÃŗdÃĄil", + "download_settings_description": "Bainistigh socruithe a bhaineann le híoslÃŗdÃĄil sÃŗcmhainní", + "download_started": "ÍoslÃŗdÃĄil tosaithe", + "download_sucess": "Rath ar an íoslÃŗdÃĄil", + "download_sucess_android": "TÃĄ na meÃĄin íoslÃŗdÃĄilte chuig DCIM/Immich", + "download_waiting_to_retry": "Ag fanacht le hathiarracht", + "downloading": "Ag íoslÃŗdÃĄil", + "downloading_asset_filename": "Ag íoslÃŗdÃĄil sÃŗcmhainn {filename}", + "downloading_media": "Ag íoslÃŗdÃĄil na meÃĄn", + "drop_files_to_upload": "Scaoil comhaid ÃĄit ar bith le huaslÃŗdÃĄil", + "duplicates": "DÃēblaigh", + "duplicates_description": "RÊitigh gach grÃēpa trína lÊiriÃē cÊ acu de na dÃēblaigh, mÃĄs ann dÃŗibh", + "duration": "Fad", + "edit": "Cuir in Eagar", + "edit_album": "Cuir albam in eagar", + "edit_avatar": "Cuir an t-avatÃĄr in eagar", + "edit_birthday": "Cuir breithlÃĄ in eagar", + "edit_date": "Cuir an dÃĄta in eagar", + "edit_date_and_time": "Cuir an dÃĄta agus an t-am in eagar", + "edit_date_and_time_action_prompt": "dÃĄta agus am {count} curtha in eagar", + "edit_date_and_time_by_offset": "Athraigh an dÃĄta de rÊir frithÃĄireamh", + "edit_date_and_time_by_offset_interval": "Raon dÃĄta nua: {from} - {to}", + "edit_description": "Cuir cur síos in eagar", + "edit_description_prompt": "Roghnaigh cur síos nua le do thoil:", + "edit_exclusion_pattern": "Cuir patrÃēn eisiaimh in eagar", + "edit_faces": "Cuir aghaidheanna in eagar", + "edit_key": "Eochair eagarthÃŗireachta", + "edit_link": "Cuir nasc in eagar", + "edit_location": "Cuir suíomh in eagar", + "edit_location_action_prompt": "suíomh {count} curtha in eagar", + "edit_location_dialog_title": "Suíomh", + "edit_name": "Cuir ainm in eagar", + "edit_people": "Cuir daoine in eagar", + "edit_tag": "Cuir an clib in eagar", + "edit_title": "Cuir Teideal in Eagar", + "edit_user": "Cuir ÃēsÃĄideoir in eagar", + "editor": "EagarthÃŗir", + "editor_close_without_save_prompt": "Ní shÃĄbhÃĄlfar na hathruithe", + "editor_close_without_save_title": "DÃēn an t-eagarthÃŗir?", + "editor_crop_tool_h2_aspect_ratios": "CÃŗimheasa gnÊ", + "editor_crop_tool_h2_rotation": "RothlÃē", + "email": "Ríomhphost", + "email_notifications": "FÃŗgraí ríomhphoist", + "empty_folder": "TÃĄ an fillteÃĄn seo folamh", + "empty_trash": "Folmhaigh an bruscar", + "empty_trash_confirmation": "An bhfuil tÃē cinnte gur mian leat an bruscar a fholmhÃē? Bainfidh sÊ seo na sÃŗcmhainní go lÊir sa bhruscar go buan as Immich.\nNí fÊidir leat an gníomh seo a chealÃē!", + "enable": "Cumasaigh", + "enable_backup": "Cumasaigh CÃēltaca", + "enable_biometric_auth_description": "Cuir isteach do chÃŗd PIN chun fíordheimhniÃē bithmhÊadrach a chumasÃē", + "enabled": "Cumasaithe", + "end_date": "DÃĄta deiridh", + "enqueued": "Sa scuaine", + "enter_wifi_name": "Cuir isteach ainm an Wi-Fi", + "enter_your_pin_code": "Cuir isteach do chÃŗd PIN", + "enter_your_pin_code_subtitle": "Cuir isteach do chÃŗd PIN chun rochtain a fhÃĄil ar an bhfillteÃĄn faoi ghlas", + "error": "EarrÃĄid", + "error_change_sort_album": "Theip ar ord sÃŗrtÃĄla an albaim a athrÃē", + "error_delete_face": "EarrÃĄid ag scriosadh aghaidhe Ãŗn tsÃŗcmhainn", + "error_getting_places": "EarrÃĄid ag fÃĄil ÃĄiteanna", + "error_loading_image": "EarrÃĄid ag luchtÃē íomhÃĄ", + "error_loading_partners": "EarrÃĄid ag luchtÃē comhphÃĄirtithe: {error}", + "error_saving_image": "EarrÃĄid: {error}", + "error_tag_face_bounding_box": "EarrÃĄid ag clibeÃĄil aghaidhe - ní fÊidir comhordanÃĄidí bosca teorann a fhÃĄil", + "error_title": "EarrÃĄid - Chuaigh rud Êigin mícheart", + "errors": { + "cannot_navigate_next_asset": "Ní fÊidir nascleanÃēint a dhÊanamh chuig an gcÊad tsÃŗcmhainn eile", + "cannot_navigate_previous_asset": "Ní fÊidir nascleanÃēint a dhÊanamh chuig an tsÃŗcmhainn roimhe seo", + "cant_apply_changes": "Ní fÊidir athruithe a chur i bhfeidhm", + "cant_change_activity": "Ní fÊidir {enabled, select, true {díchumasaigh} other {cumasaigh}} gníomhaíocht", + "cant_change_asset_favorite": "Ní fÊidir an rogha is fearr leat a athrÃē don tsÃŗcmhainn", + "cant_change_metadata_assets_count": "Ní fÊidir meiteashonraí {count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}} a athrÃē", + "cant_get_faces": "Ní fÊidir aghaidheanna a fhÃĄil", + "cant_get_number_of_comments": "Ní fÊidir líon na dtuairimí a fhÃĄil", + "cant_search_people": "Ní fÊidir daoine a chuardach", + "cant_search_places": "Ní fÊidir ÃĄiteanna a chuardach", + "error_adding_assets_to_album": "EarrÃĄid ag cur sÃŗcmhainní leis an albam", + "error_adding_users_to_album": "EarrÃĄid ag cur ÃēsÃĄideoirí leis an albam", + "error_deleting_shared_user": "EarrÃĄid ag scriosadh ÃēsÃĄideora comhroinnte", + "error_downloading": "EarrÃĄid ag íoslÃŗdÃĄil {filename}", + "error_hiding_buy_button": "EarrÃĄid i bhfolach an cnaipe ceannaigh", + "error_removing_assets_from_album": "EarrÃĄid ag baint sÃŗcmhainní Ãŗn albam, seiceÃĄil an consÃŗl le haghaidh tuilleadh sonraí", + "error_selecting_all_assets": "EarrÃĄid ag roghnÃē na sÃŗcmhainní go lÊir", + "exclusion_pattern_already_exists": "TÃĄ an patrÃēn eisiaimh seo ann cheana fÊin.", + "failed_to_create_album": "Theip ar albam a chruthÃē", + "failed_to_create_shared_link": "Theip ar nasc comhroinnte a chruthÃē", + "failed_to_edit_shared_link": "Theip ar an nasc comhroinnte a chur in eagar", + "failed_to_get_people": "Theip ar dhaoine a fhÃĄil", + "failed_to_keep_this_delete_others": "Theip ar an tsÃŗcmhainn seo a choinneÃĄil agus na sÃŗcmhainní eile a scriosadh", + "failed_to_load_asset": "Theip ar an tsÃŗcmhainn a lÃŗdÃĄil", + "failed_to_load_assets": "Theip ar shÃŗcmhainní a lÃŗdÃĄil", + "failed_to_load_notifications": "Theip ar fhÃŗgraí a lÃŗdÃĄil", + "failed_to_load_people": "Theip ar dhaoine a lÃŗdÃĄil", + "failed_to_remove_product_key": "Theip ar eochair an tÃĄirge a bhaint", + "failed_to_reset_pin_code": "Theip ar an gcÃŗd PIN a athshocrÃē", + "failed_to_stack_assets": "Theip ar shÃŗcmhainní a chruachadh", + "failed_to_unstack_assets": "Theip ar shÃŗcmhainní a dhíchruachadh", + "failed_to_update_notification_status": "Theip ar stÃĄdas an fhÃŗgra a nuashonrÃē", + "incorrect_email_or_password": "Ríomhphost nÃŗ pasfhocal mícheart", + "library_folder_already_exists": "TÃĄ an cosÃĄn allmhairithe seo ann cheana fÊ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.", + "quota_higher_than_disk_size": "Shocraigh tÃē cuÃŗta níos airde nÃĄ mÊid an diosca", + "something_went_wrong": "Chuaigh rud Êigin mícheart", + "unable_to_add_album_users": "Ní fÊidir ÃēsÃĄideoirí a chur leis an albam", + "unable_to_add_assets_to_shared_link": "Ní fÊidir sÃŗcmhainní a chur leis an nasc comhroinnte", + "unable_to_add_comment": "Ní fÊidir trÃĄcht a chur leis", + "unable_to_add_exclusion_pattern": "Ní fÊidir patrÃēn eisiaimh a chur leis", + "unable_to_add_partners": "Ní fÊidir comhphÃĄirtithe a chur leis", + "unable_to_add_remove_archive": "Ní fÊidir {archived, select, true {bain sÃŗcmhainn as} other {add asset to}} cartlannÃē a dhÊanamh", + "unable_to_add_remove_favorites": "Ní fÊidir {favorite, select, true {add sÃŗcmhainn le} other {remove sÃŗcmhainn Ãŗ}} rogha eile", + "unable_to_archive_unarchive": "Ní fÊidir {archived, select, true {archive} other {unarchive}} a chur ar an gcartlann", + "unable_to_change_album_user_role": "Ní fÊidir rÃŗl ÃēsÃĄideora an albaim a athrÃē", + "unable_to_change_date": "Ní fÊidir an dÃĄta a athrÃē", + "unable_to_change_description": "Ní fÊidir an cur síos a athrÃē", + "unable_to_change_favorite": "Ní fÊidir an rogha is fearr leat a athrÃē don tsÃŗcmhainn", + "unable_to_change_location": "Ní fÊidir an suíomh a athrÃē", + "unable_to_change_password": "Ní fÊidir an focal faire a athrÃē", + "unable_to_change_visibility": "Ní fÊidir an infheictheacht a athrÃē do {count, plural, one {# duine} other {# duine}}", + "unable_to_complete_oauth_login": "Ní fÊidir logÃĄil isteach OAuth a chríochnÃē", + "unable_to_connect": "Ní fÊidir ceangal", + "unable_to_copy_to_clipboard": "Ní fÊidir cÃŗip a dhÊanamh chuig an ghearrthaisce, dÊan cinnte go bhfuil tÃē ag rochtain an leathanaigh trí https", + "unable_to_create_admin_account": "Ní fÊidir cuntas riarthÃŗra a chruthÃē", + "unable_to_create_api_key": "Ní fÊidir eochair API nua a chruthÃē", + "unable_to_create_library": "Ní fÊidir leabharlann a chruthÃē", + "unable_to_create_user": "Ní fÊidir ÃēsÃĄideoir a chruthÃē", + "unable_to_delete_album": "Ní fÊidir albam a scriosadh", + "unable_to_delete_asset": "Ní fÊidir an tsÃŗcmhainn a scriosadh", + "unable_to_delete_assets": "EarrÃĄid ag scriosadh sÃŗcmhainní", + "unable_to_delete_exclusion_pattern": "Ní fÊidir patrÃēn eisiaimh a scriosadh", + "unable_to_delete_shared_link": "Ní fÊidir nasc comhroinnte a scriosadh", + "unable_to_delete_user": "Ní fÊidir an t-ÃēsÃĄideoir a scriosadh", + "unable_to_download_files": "Ní fÊidir comhaid a íoslÃŗdÃĄil", + "unable_to_edit_exclusion_pattern": "Ní fÊidir patrÃēn eisiaimh a chur in eagar", + "unable_to_empty_trash": "Ní fÊidir an bruscar a fholmhÃē", + "unable_to_enter_fullscreen": "Ní fÊidir dul isteach sa lÃĄnscÃĄileÃĄn", + "unable_to_exit_fullscreen": "Ní fÊidir an scÃĄileÃĄn iomlÃĄn a fhÃĄgÃĄil", + "unable_to_get_comments_number": "Ní fÊidir líon na dtuairimí a fhÃĄil", + "unable_to_get_shared_link": "Theip ar an nasc comhroinnte a fhÃĄil", + "unable_to_hide_person": "Ní fÊidir an duine a cheilt", + "unable_to_link_motion_video": "Ní fÊidir físeÃĄn gluaisne a nascadh", + "unable_to_link_oauth_account": "Ní fÊidir cuntas OAuth a nascadh", + "unable_to_log_out_all_devices": "Ní fÊidir logÃĄil amach as gach glÊas", + "unable_to_log_out_device": "Ní fÊidir logÃĄil amach as an nglÊas", + "unable_to_login_with_oauth": "Ní fÊidir logÃĄil isteach le OAuth", + "unable_to_play_video": "Ní fÊidir físeÃĄn a sheinm", + "unable_to_reassign_assets_existing_person": "Ní fÊidir sÃŗcmhainní a athshannadh chuig {name, select, null {an existing person} other {{name}}}", + "unable_to_reassign_assets_new_person": "Ní fÊidir sÃŗcmhainní a athshannadh do dhuine nua", + "unable_to_refresh_user": "Ní fÊidir an t-ÃēsÃĄideoir a athnuachan", + "unable_to_remove_album_users": "Ní fÊidir ÃēsÃĄideoirí a bhaint den albam", + "unable_to_remove_api_key": "Ní fÊidir an eochair API a bhaint", + "unable_to_remove_assets_from_shared_link": "Ní fÊidir sÃŗcmhainní a bhaint as nasc comhroinnte", + "unable_to_remove_library": "Ní fÊidir an leabharlann a bhaint", + "unable_to_remove_partner": "Ní fÊidir an comhphÃĄirtí a bhaint", + "unable_to_remove_reaction": "Ní fÊidir an imoibriÃē a bhaint", + "unable_to_reset_password": "Ní fÊidir an focal faire a athshocrÃē", + "unable_to_reset_pin_code": "Ní fÊidir an cÃŗd PIN a athshocrÃē", + "unable_to_resolve_duplicate": "Ní fÊidir dÃēblach a rÊiteach", + "unable_to_restore_assets": "Ní fÊidir sÃŗcmhainní a athchÃŗiriÃē", + "unable_to_restore_trash": "Ní fÊidir an bruscar a athchÃŗiriÃē", + "unable_to_restore_user": "Ní fÊidir an t-ÃēsÃĄideoir a athchÃŗiriÃē", + "unable_to_save_album": "Ní fÊidir an t-albam a shÃĄbhÃĄil", + "unable_to_save_api_key": "Ní fÊidir an eochair API a shÃĄbhÃĄil", + "unable_to_save_date_of_birth": "Ní fÊidir an dÃĄta breithe a shÃĄbhÃĄil", + "unable_to_save_name": "Ní fÊidir an t-ainm a shÃĄbhÃĄil", + "unable_to_save_profile": "Ní fÊidir an phrÃŗifíl a shÃĄbhÃĄil", + "unable_to_save_settings": "Ní fÊidir socruithe a shÃĄbhÃĄil", + "unable_to_scan_libraries": "Ní fÊidir leabharlanna a scanadh", + "unable_to_scan_library": "Ní fÊidir an leabharlann a scanadh", + "unable_to_set_feature_photo": "Ní fÊidir grianghraf gnÊ a shocrÃē", + "unable_to_set_profile_picture": "Ní fÊidir pictiÃēr prÃŗifíle a shocrÃē", + "unable_to_submit_job": "Ní fÊidir an post a chur isteach", + "unable_to_trash_asset": "Ní fÊidir an tsÃŗcmhainn a chur sa bhruscar", + "unable_to_unlink_account": "Ní fÊidir an cuntas a dhícheangal", + "unable_to_unlink_motion_video": "Ní fÊidir físeÃĄn gluaisne a dhícheangal", + "unable_to_update_album_cover": "Ní fÊidir clÃēdach an albaim a nuashonrÃē", + "unable_to_update_album_info": "Ní fÊidir faisnÊis an albaim a nuashonrÃē", + "unable_to_update_library": "Ní fÊidir an leabharlann a nuashonrÃē", + "unable_to_update_location": "Ní fÊidir an suíomh a nuashonrÃē", + "unable_to_update_settings": "Ní fÊidir socruithe a nuashonrÃē", + "unable_to_update_timeline_display_status": "Ní fÊidir stÃĄdas taispeÃĄna an amlíne a nuashonrÃē", + "unable_to_update_user": "Ní fÊidir an t-ÃēsÃĄideoir a nuashonrÃē", + "unable_to_upload_file": "Ní fÊidir an comhad a uaslÃŗdÃĄil" + }, + "exclusion_pattern": "PatrÃēn eisiaimh", + "exif": "Exif", + "exif_bottom_sheet_description": "Cuir Cur Síos leis...", + "exif_bottom_sheet_description_error": "EarrÃĄid ag nuashonrÃē an tuairisce", + "exif_bottom_sheet_details": "SONRAÍ", + "exif_bottom_sheet_location": "SUÍOMH", + "exif_bottom_sheet_no_description": "Gan cur síos", + "exif_bottom_sheet_people": "DAOINE", + "exif_bottom_sheet_person_add_person": "Cuir ainm leis", + "exit_slideshow": "Scoir an TaispeÃĄntais SleamhnÃĄn", + "expand_all": "Leathnaigh gach rud", + "experimental_settings_new_asset_list_subtitle": "Obair ar siÃēl", + "experimental_settings_new_asset_list_title": "Cumasaigh eangach grianghraf turgnamhach", + "experimental_settings_subtitle": "Bain ÃēsÃĄid as ar do phriacal fÊin!", + "experimental_settings_title": "Turgnamhach", + "expire_after": "Rachaidh in Êag tar Êis", + "expired": "Imithe in Êag", + "expires_date": "Éagaíonn {date}", + "explore": "TaiscÊal", + "explorer": "TaiscÊalaí", + "export": "EaspÃŗrtÃĄil", + "export_as_json": "EaspÃŗrtÃĄil mar JSON", + "export_database": "EaspÃŗrtÃĄil Bunachar Sonraí", + "export_database_description": "EaspÃŗrtÃĄil an bunachar sonraí SQLite", + "extension": "Síneadh", + "external": "Seachtrach", + "external_libraries": "Leabharlanna Seachtracha", + "external_network": "Líonra seachtrach", + "external_network_sheet_info": "Nuair nach bhfuil sÊ ar an líonra Wi-Fi is fearr leis, ceanglÃŗidh an aip leis an bhfreastalaí tríd an gcÊad cheann de na URLanna thíos ar fÊidir leis teacht orthu, ag tosÃē Ãŗ bharr go bun", + "face_unassigned": "Gan sannadh", + "failed": "Theip air", + "failed_count": "Theip ar: {count}", + "failed_to_authenticate": "Theip ar fhíordheimhniÃē", + "failed_to_load_assets": "Theip ar shÃŗcmhainní a lÃŗdÃĄil", + "failed_to_load_folder": "Theip ar an bhfillteÃĄn a luchtÃē", + "favorite": "CeanÃĄn", + "favorite_action_prompt": "{count} curtha le CeanÃĄin", + "favorite_or_unfavorite_photo": "Grianghraf is fearr leat nÃŗ nach fearr leat", + "favorites": "CeanÃĄin", + "favorites_page_no_favorites": "Níor aimsíodh aon sÃŗcmhainní is fearr leat", + "feature_photo_updated": "Grianghraf gnÊ nuashonraithe", + "features": "GnÊithe", + "features_in_development": "GnÊithe i bhForbairt", + "features_setting_description": "Bainistigh gnÊithe an aip", + "file_name": "Ainm comhaid", + "file_name_or_extension": "Ainm comhaid nÃŗ síneadh", + "file_size": "MÊid comhaid", + "filename": "Ainm comhaid", + "filetype": "CineÃĄl comhaid", + "filter": "Scagaire", + "filter_people": "Scag daoine", + "filter_places": "Scag ÃĄiteanna", + "find_them_fast": "Aimsigh iad go tapa de rÊir ainm le cuardach", + "first": "Ar dtÃēs", + "fix_incorrect_match": "Deisigh cluiche mícheart", + "folder": "FillteÃĄn", + "folder_not_found": "Níor aimsíodh fillteÃĄn", + "folders": "FillteÃĄin", + "folders_feature_description": "Ag brabhsÃĄil an amharc fillteÃĄin le haghaidh na ngrianghraf agus na bhfíseÃĄn ar an gcÃŗras comhad", + "forgot_pin_code_question": "An ndearna tÃē dearmad ar do PIN?", + "forward": "Chun tosaigh", + "full_path": "CosÃĄn iomlÃĄn: {path}", + "gcast_enabled": "Google Cast", + "gcast_enabled_description": "LÃŗdÃĄlann an ghnÊ seo acmhainní seachtracha Ãŗ Google chun go n-oibreoidh sí.", + "general": "GinearÃĄlta", + "geolocation_instruction_location": "CliceÃĄil ar shÃŗcmhainn le comhordanÃĄidí GPS chun a suíomh a ÃēsÃĄid, nÃŗ roghnaigh suíomh go díreach Ãŗn lÊarscÃĄil", + "get_help": "Faigh Cabhair", + "get_wifiname_error": "Níorbh fhÊidir ainm Wi-Fi a fhÃĄil. Cinntigh gur dheonaigh tÃē na ceadanna riachtanacha agus go bhfuil tÃē ceangailte le líonra Wi-Fi", + "getting_started": "Ag TosÃē", + "go_back": "TÊigh ar ais", + "go_to_folder": "TÊigh go dtí an fillteÃĄn", + "go_to_search": "TÊigh go dtí an cuardach", + "gps": "GPS", + "gps_missing": "Gan GPS", + "grant_permission": "Deonaigh cead", + "group_albums_by": "Albaim ghrÃēpa le...", + "group_country": "GrÃēpÃĄil de rÊir tíre", + "group_no": "Gan grÃēpÃĄil", + "group_owner": "GrÃēpÃĄil de rÊir ÃēinÊara", + "group_places_by": "GrÃēpÃĄil ÃĄiteanna de rÊir...", + "group_year": "GrÃēpa de rÊir bliana", + "haptic_feedback_switch": "Cumasaigh aiseolas haptic", + "haptic_feedback_title": "Aiseolas Haptic", + "has_quota": "TÃĄ cuÃŗta aige", + "hash_asset": "SÃŗcmhainn hash", + "hashed_assets": "SÃŗcmhainní hashÃĄilte", + "hashing": "HashÃĄil", + "header_settings_add_header_tip": "Cuir ceanntÃĄsc leis", + "header_settings_field_validator_msg": "Ní fÊidir luach a fhÃĄgÃĄil folamh", + "header_settings_header_name_input": "Ainm an cheanntÃĄsca", + "header_settings_header_value_input": "Luach ceanntÃĄsca", + "headers_settings_tile_title": "CeanntÃĄsca seachfhreastalaí saincheaptha", + "height": "Airde", + "hi_user": "Haigh {name} ({email})", + "hide_all_people": "Folaigh gach duine", + "hide_gallery": "Folaigh gailearaí", + "hide_named_person": "Folaigh duine {name}", + "hide_password": "Folaigh an focal faire", + "hide_person": "Folaigh duine", + "hide_text_recognition": "Folaigh aitheantas tÊacs", + "hide_unnamed_people": "Folaigh daoine gan ainm", + "home_page_add_to_album_conflicts": "Cuireadh sÃŗcmhainní {added} leis an albam {album}. TÃĄ sÃŗcmhainní {failed} san albam cheana fÊin.", + "home_page_add_to_album_err_local": "Ní fÊidir sÃŗcmhainní ÃĄitiÃēla a chur le halbaim go fÃŗill, ag scipeÃĄil", + "home_page_add_to_album_success": "Cuireadh sÃŗcmhainní {added} leis an albam {album}.", + "home_page_album_err_partner": "Ní fÊidir sÃŗcmhainní comhphÃĄirtíochta a chur le halbam go fÃŗill, ag scipeÃĄil", + "home_page_archive_err_local": "Ní fÊidir sÃŗcmhainní ÃĄitiÃēla a chartlannÃē go fÃŗill, ag scipeÃĄil", + "home_page_archive_err_partner": "Ní fÊidir sÃŗcmhainní comhphÃĄirtíochta a chartlannÃē, ag scipeÃĄil", + "home_page_building_timeline": "Ag tÃŗgÃĄil an amlíne", + "home_page_delete_err_partner": "Ní fÊidir sÃŗcmhainní comhphÃĄirtíochta a scriosadh, ag scipeÃĄil", + "home_page_delete_remote_err_local": "SÃŗcmhainní ÃĄitiÃēla i scriosadh roghnÃēchÃĄin iargÃēlta, ag scipeÃĄil", + "home_page_favorite_err_local": "Ní fÊidir sÃŗcmhainní ÃĄitiÃēla a chur i bhfabhar go fÃŗill, ag scipeÃĄil", + "home_page_favorite_err_partner": "Ní fÊidir sÃŗcmhainní comhphÃĄirtíochta a chur i bhfabhar go fÃŗill, ag scipeÃĄil", + "home_page_first_time_notice": "MÃĄs Ê seo an chÊad uair duit an aip a ÃēsÃĄid, dÊan cinnte albam cÃēltaca a roghnÃē ionas gur fÊidir leis an amlíne grianghraif agus físeÃĄin a líonadh ann", + "home_page_locked_error_local": "Ní fÊidir sÃŗcmhainní ÃĄitiÃēla a bhogadh chuig fillteÃĄn faoi ghlas, ag scipeÃĄil", + "home_page_locked_error_partner": "Ní fÊidir sÃŗcmhainní comhphÃĄirtíochta a bhogadh chuig fillteÃĄn faoi ghlas, ag scipeÃĄil", + "home_page_share_err_local": "Ní fÊidir sÃŗcmhainní ÃĄitiÃēla a roinnt tríd an nasc, ag scipeÃĄil", + "home_page_upload_err_limit": "Ní fÊidir ach 30 sÃŗcmhainn ar a mhÊad a uaslÃŗdÃĄil ag an am cÊanna, ag scipeÃĄil", + "host": "Óstach", + "hour": "Uair an chloig", + "hours": "Uaireanta", + "id": "ID", + "idle": "Díomhaoin", + "ignore_icloud_photos": "DÊan neamhaird de ghrianghraif iCloud", + "ignore_icloud_photos_description": "Ní uaslÃŗdÃĄlfar grianghraif atÃĄ stÃŗrÃĄilte ar iCloud chuig freastalaí Immich", + "image": "ÍomhÃĄ", + "image_alt_text_date": "{isVideo, select, true {FíseÃĄn} other {ÍomhÃĄ}} tÃŗgtha ar {date}", + "image_alt_text_date_1_person": "{isVideo, select, true {Video} other {ÍomhÃĄ}} tÃŗgtha le {person1} ar {date}", + "image_alt_text_date_2_people": "{isVideo, select, true {Video} other {Image}} tÃŗgtha le {person1} agus {person2} ar {date}", + "image_alt_text_date_3_people": "{isVideo, select, true {Video} other {ÍomhÃĄ}} tÃŗgtha le {person1}, {person2}, agus {person3} ar {date}", + "image_alt_text_date_4_or_more_people": "{isVideo, select, true {Video} other {Image}} tÃŗgtha le {person1}, {person2}, agus {additionalCount, number} daoine eile ar {date}", + "image_alt_text_date_place": "{isVideo, select, true {FíseÃĄn} other {ÍomhÃĄ}} tÃŗgtha i {city}, {country} ar {date}", + "image_alt_text_date_place_1_person": "{isVideo, select, true {FíseÃĄn} other {ÍomhÃĄ}} tÃŗgtha i {city}, {country} le {person1} ar {date}", + "image_alt_text_date_place_2_people": "{isVideo, select, true {FíseÃĄn} other {ÍomhÃĄ}} tÃŗgtha i {city}, {country} le {person1} agus {person2} ar {date}", + "image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {ÍomhÃĄ}} tÃŗgtha i {city}, {country} le {person1}, {person2}, agus {person3} ar {date}", + "image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Image}} tÃŗgtha i {city}, {country} le {person1}, {person2}, agus {additionalCount, number} daoine eile ar {date}", + "image_saved_successfully": "ÍomhÃĄ sÃĄbhÃĄilte", + "image_viewer_page_state_provider_download_started": "ÍoslÃŗdÃĄil Tosaithe", + "image_viewer_page_state_provider_download_success": "ÍoslÃŗdÃĄil RathÃēil", + "image_viewer_page_state_provider_share_error": "EarrÃĄid Chomhroinnte", + "immich_logo": "LÃŗgÃŗ Immich", + "immich_web_interface": "ComhÊadan GrÊasÃĄin Immich", + "import_from_json": "IompÃŗrtÃĄil Ãŗ JSON", + "import_path": "CosÃĄn allmhairithe", + "in_albums": "I {count, plural, one {# albam} other {# albaim}}", + "in_archive": "Sa chartlann", + "in_year": "I {year}", + "in_year_selector": "Isteach", + "include_archived": "Cuir cartlannaithe san ÃĄireamh", + "include_shared_albums": "Cuir albaim chomhroinnte san ÃĄireamh", + "include_shared_partner_assets": "Cuir sÃŗcmhainní comhphÃĄirtíochta san ÃĄireamh", + "individual_share": "Sciar aonair", + "individual_shares": "Scaireanna aonair", + "info": "Eolas", + "interval": { + "day_at_onepm": "Gach lÃĄ ag 1pm", + "hours": "Gach {hours, plural, one {uair an chloig} other {{hours, number} uair an chloig}}", + "night_at_midnight": "Gach oíche ag meÃĄn oíche", + "night_at_twoam": "Gach oíche ag 2am" + }, + "invalid_date": "DÃĄta neamhbhailí", + "invalid_date_format": "FormÃĄid dÃĄta neamhbhailí", + "invite_people": "Tabhair cuireadh do dhaoine", + "invite_to_album": "Cuireadh chuig albam", + "ios_debug_info_fetch_ran_at": "Rith Fetch {dateTime}", + "ios_debug_info_last_sync_at": "SioncrÃŗnÃē deireanach {dateTime}", + "ios_debug_info_no_processes_queued": "Níl aon phrÃŗisis chÃēlra i scuaine", + "ios_debug_info_no_sync_yet": "Níl aon phost sioncrÃŗnaithe cÃēlra rite fÃŗs", + "ios_debug_info_processes_queued": "{count, plural, one {{count} prÃŗiseas cÃēlra queued} other {{count} prÃŗisis chÃēlra queued}}", + "ios_debug_info_processing_ran_at": "Rith an phrÃŗiseÃĄil {dateTime}", + "items_count": "{count, plural, one {# mír} other {# míreanna}}", + "jobs": "Poist", + "keep": "CoimeÃĄd", + "keep_all": "Coinnigh Gach Rud", + "keep_this_delete_others": "Coinnigh seo, scrios cinn eile", + "kept_this_deleted_others": "Choinnigh an tsÃŗcmhainn seo agus scriosadh {count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}}", + "keyboard_shortcuts": "Aicearraí mÊarchlÃĄir", + "language": "Teanga", + "language_no_results_subtitle": "Bain triail as do thÊarma cuardaigh a choigeartÃē", + "language_no_results_title": "Níor aimsíodh aon teangacha", + "language_search_hint": "Cuardaigh teangacha...", + "language_setting_description": "Roghnaigh do theanga is fearr leat", + "large_files": "Comhaid MhÃŗra", + "last": "Deireanach", + "last_months": "{count, plural, one {An mhí seo caite} other {An # mhí seo caite}}", + "last_seen": "Chonaic mÊ an uair dheireanach", + "latest_version": "Leagan is DÊanaí", + "latitude": "Domhanleithead", + "leave": "FÃĄg", + "leave_album": "FÃĄg an t-albam", + "lens_model": "MÃēnla lionsa", + "let_others_respond": "Lig do dhaoine eile freagairt", + "level": "LeibhÊal", + "library": "Leabharlann", + "library_add_folder": "Cuir fillteÃĄn leis", + "library_edit_folder": "Cuir fillteÃĄn in eagar", + "library_options": "Roghanna leabharlainne", + "library_page_device_albums": "Albaim ar an nGlÊas", + "library_page_new_album": "Albam nua", + "library_page_sort_asset_count": "Líon na sÃŗcmhainní", + "library_page_sort_created": "DÃĄta cruthaithe", + "library_page_sort_last_modified": "Athraithe go deireanach", + "library_page_sort_title": "Teideal an albaim", + "licenses": "CeadÃēnais", + "light": "Solas", + "like": "Is maith liom", + "like_deleted": "Scriosadh an rud is maith liom", + "link_motion_video": "FíseÃĄn gluaiseachta nasctha", + "link_to_oauth": "Nasc le OAuth", + "linked_oauth_account": "Cuntas OAuth nasctha", + "list": "Liosta", + "loading": "Ag luchtÃē", + "loading_search_results_failed": "Theip ar lÃŗdÃĄil na dtorthaí cuardaigh", + "local": "ÁitiÃēil", + "local_asset_cast_failed": "Ní fÊidir sÃŗcmhainn nach bhfuil uaslÃŗdÃĄilte chuig an bhfreastalaí a chasadh", + "local_assets": "SÃŗcmhainní ÁitiÃēla", + "local_id": "Aitheantas ÁitiÃēil", + "local_media_summary": "Achoimre ar na MeÃĄin ÁitiÃēla", + "local_network": "Líonra ÃĄitiÃēil", + "local_network_sheet_info": "CeanglÃŗidh an aip leis an bhfreastalaí tríd an URL seo agus an líonra Wi-Fi sonraithe ÃĄ ÃēsÃĄid", + "location": "Suíomh", + "location_permission": "Cead suímh", + "location_permission_content": "Chun an ghnÊ uath-athraithe a ÃēsÃĄid, ní mÃŗr cead suímh bheacht a bheith ag Immich ionas gur fÊidir leis ainm an líonra Wi-Fi reatha a lÊamh", + "location_picker_choose_on_map": "Roghnaigh ar an lÊarscÃĄil", + "location_picker_latitude_error": "Cuir isteach domhanleithead bailí", + "location_picker_latitude_hint": "Cuir isteach do dhomhanleithead anseo", + "location_picker_longitude_error": "Cuir isteach domhanfhad bailí", + "location_picker_longitude_hint": "Cuir isteach do dhomhanfhad anseo", + "lock": "GlasÃĄil", + "locked_folder": "FillteÃĄn faoi Ghlas", + "log_detail_title": "Sonraí LogÃĄla", + "log_out": "LogÃĄil amach", + "log_out_all_devices": "LogÃĄil Amach Gach GlÊas", + "logged_in_as": "LogÃĄilte isteach mar {user}", + "logged_out_all_devices": "LogÃĄladh amach gach glÊas", + "logged_out_device": "GlÊas logÃĄilte amach", + "login": "LogÃĄil Isteach", + "login_disabled": "TÃĄ logÃĄil isteach díchumasaithe", + "login_form_api_exception": "Eisceacht API. SeiceÃĄil URL an fhreastalaí agus dÊan iarracht arís.", + "login_form_back_button_text": "Ar ais", + "login_form_email_hint": "doríomhphost@ríomhphost.com", + "login_form_endpoint_hint": "http://ip-do-fhreastalaí:port", + "login_form_endpoint_url": "URL Deireadhphointe an Fhreastalaí", + "login_form_err_http": "Sonraigh http:// nÃŗ https:// le do thoil", + "login_form_err_invalid_email": "Ríomhphost Neamhbhailí", + "login_form_err_invalid_url": "URL neamhbhailí", + "login_form_err_leading_whitespace": "SpÃĄs bÃĄn tosaigh", + "login_form_err_trailing_whitespace": "SpÃĄs bÃĄn ag leanÃēint", + "login_form_failed_get_oauth_server_config": "EarrÃĄid logÃĄla ag baint ÃēsÃĄide as OAuth, seiceÃĄil URL an fhreastalaí", + "login_form_failed_get_oauth_server_disable": "Níl gnÊ OAuth ar fÃĄil ar an bhfreastalaí seo", + "login_form_failed_login": "EarrÃĄid ag logÃĄil isteach, seiceÃĄil URL an fhreastalaí, an ríomhphost agus an focal faire", + "login_form_handshake_exception": "Bhí Eisceacht LÃĄmh-Chroith leis an bhfreastalaí. Cumasaigh tacaíocht do theastas fÊinshínithe sna socruithe mÃĄ tÃĄ teastas fÊinshínithe in ÃēsÃĄid agat.", + "login_form_password_hint": "pasfhocal", + "login_form_save_login": "Fan logÃĄilte isteach", + "login_form_server_empty": "Cuir isteach URL freastalaí.", + "login_form_server_error": "Níorbh fhÊidir ceangal leis an bhfreastalaí.", + "login_has_been_disabled": "TÃĄ logÃĄil isteach díchumasaithe.", + "login_password_changed_error": "Tharla earrÃĄid agus do phasfhocal ÃĄ nuashonrÃē", + "login_password_changed_success": "Nuashonraíodh an focal faire go rathÃēil", + "logout_all_device_confirmation": "An bhfuil tÃē cinnte gur mian leat logÃĄil amach as gach glÊas?", + "logout_this_device_confirmation": "An bhfuil tÃē cinnte gur mian leat logÃĄil amach as an nglÊas seo?", + "logs": "Logaí", + "longitude": "Domhanfhad", + "look": "FÊach", + "loop_videos": "FíseÃĄin lÃēbtha", + "loop_videos_description": "Cumasaigh físeÃĄn a lÃēbadh go huathoibríoch san amharcÃŗir sonraí.", + "main_branch_warning": "TÃĄ leagan forbartha in ÃēsÃĄid agat; molaimid go lÃĄidir leagan scaoilte a ÃēsÃĄid!", + "main_menu": "Príomh-roghchlÃĄr", + "maintenance_description": "TÃĄ Immich curtha i mÃŗd cothabhÃĄla.", + "maintenance_end": "Deireadh a chur leis an modh cothabhÃĄla", + "maintenance_end_error": "Theip ar an modh cothabhÃĄla a chríochnÃē.", + "maintenance_logged_in_as": "LogÃĄilte isteach faoi lÃĄthair mar {user}", + "maintenance_title": "Gan FÃĄil go Sealadach", + "make": "DÊan", + "manage_geolocation": "Bainistigh suíomh", + "manage_media_access_rationale": "TÃĄ an cead seo ag teastÃĄil chun dÊileÃĄil i gceart le sÃŗcmhainní a bhogadh chuig an mbruscar agus iad a athbhunÃē uaidh.", + "manage_media_access_settings": "Oscail socruithe", + "manage_media_access_subtitle": "Lig don aip Immich comhaid meÃĄn a bhainistiÃē agus a bhogadh.", + "manage_media_access_title": "Rochtain Bainistíochta MeÃĄn", + "manage_shared_links": "Bainistigh naisc chomhroinnte", + "manage_sharing_with_partners": "Bainistigh comhroinnt le comhphÃĄirtithe", + "manage_the_app_settings": "Bainistigh socruithe an aip", + "manage_your_account": "Bainistigh do chuntas", + "manage_your_api_keys": "Bainistigh d’eochracha API", + "manage_your_devices": "Bainistigh do ghlÊasanna logÃĄilte isteach", + "manage_your_oauth_connection": "Bainistigh do nasc OAuth", + "map": "LÊarscÃĄil", + "map_assets_in_bounds": "{count, plural, =0 {Gan aon ghrianghraif sa cheantar seo} one {# grianghraf} other {# grianghraif}}", + "map_cannot_get_user_location": "Ní fÊidir suíomh an ÃēsÃĄideora a fhÃĄil", + "map_location_dialog_yes": "TÃĄ", + "map_location_picker_page_use_location": "ÚsÃĄid an suíomh seo", + "map_location_service_disabled_content": "Ní mÃŗr seirbhís suímh a chumasÃē chun sÃŗcmhainní Ãŗ do shuíomh reatha a thaispeÃĄint. Ar mhaith leat Ê a chumasÃē anois?", + "map_location_service_disabled_title": "Seirbhís Suímh díchumasaithe", + "map_marker_for_images": "MarcÃŗir lÊarscÃĄile le haghaidh íomhÃĄnna a tÃŗgadh i {city}, {country}", + "map_marker_with_image": "MarcÃŗir lÊarscÃĄile le híomhÃĄ", + "map_no_location_permission_content": "TÃĄ cead suímh ag teastÃĄil chun sÃŗcmhainní a thaispeÃĄint Ãŗ do shuíomh reatha. Ar mhaith leat Ê a cheadÃē anois?", + "map_no_location_permission_title": "Cead Suímh diÃēltaithe", + "map_settings": "Socruithe lÊarscÃĄile", + "map_settings_dark_mode": "MÃŗd dorcha", + "map_settings_date_range_option_day": "Le 24 uair an chloig anuas", + "map_settings_date_range_option_days": "Laethanta anuas ({days})", + "map_settings_date_range_option_year": "An bhliain seo caite", + "map_settings_date_range_option_years": "Blianta {years} anuas", + "map_settings_dialog_title": "Socruithe LÊarscÃĄile", + "map_settings_include_show_archived": "Cuir Cartlannaithe san ÃĄireamh", + "map_settings_include_show_partners": "Cuir ComhphÃĄirtithe san ÃĄireamh", + "map_settings_only_show_favorites": "TaispeÃĄin Is Fearr Leat AmhÃĄin", + "map_settings_theme_settings": "TÊama LÊarscÃĄile", + "map_zoom_to_see_photos": "ZÃēmÃĄil amach chun grianghraif a fheiceÃĄil", + "mark_all_as_read": "MarcÃĄil gach rud mar lÊite", + "mark_as_read": "MarcÃĄil mar lÊite", + "marked_all_as_read": "MarcÃĄladh gach rud mar lÊite", + "matches": "Cluichí", + "matching_assets": "SÃŗcmhainní MeaitseÃĄla", + "media_type": "CineÃĄl meÃĄn", + "memories": "Cuimhní cinn", + "memories_all_caught_up": "Gach rud gafa suas", + "memories_check_back_tomorrow": "SeiceÃĄil ar ais amÃĄrach le haghaidh tuilleadh cuimhní cinn", + "memories_setting_description": "Bainistigh a bhfuil le feiceÃĄil agat i do chuimhní cinn", + "memories_start_over": "Tosaigh Arís", + "memories_swipe_to_close": "SvaidhpeÃĄil suas le dÃēnadh", + "memory": "Cuimhne", + "memory_lane_title": "LÃĄna na Cuimhne {title}", + "menu": "RoghchlÃĄr", + "merge": "Cumaisc", + "merge_people": "Daoine a chumasc", + "merge_people_limit": "Ní fÊidir leat ach suas le 5 aghaidh a chumasc ag an am cÊanna", + "merge_people_prompt": "Ar mhaith leat na daoine seo a chumasc? Ní fÊidir an gníomh seo a aisiompÃē.", + "merge_people_successfully": "Daoine a chumasc go rathÃēil", + "merged_people_count": "Cumaiscthe {count, plural, one {# duine} other {# daoine}}", + "minimize": "Íoslaghdaigh", + "minute": "NÃŗimÊad", + "minutes": "NÃŗimÊid", + "missing": "Ar iarraidh", + "mobile_app": "Aip Shoghluaiste", + "mobile_app_download_onboarding_note": "ÍoslÃŗdÃĄil an aip shoghluaiste tionlacain ag baint ÃēsÃĄide as na roghanna seo a leanas", + "model": "Samhail", + "month": "Mí", + "monthly_title_text_date_format": "MMMM y", + "more": "Tuilleadh", + "move": "Bog", + "move_off_locked_folder": "Bog amach as fillteÃĄn faoi ghlas", + "move_to": "Bog go", + "move_to_lock_folder_action_prompt": "{count} curtha leis an bhfillteÃĄn faoi ghlas", + "move_to_locked_folder": "Bog go fillteÃĄn faoi ghlas", + "move_to_locked_folder_confirmation": "Bainfear na grianghraif agus na físeÃĄin seo as na halbaim uile, agus ní bheidh siad le feiceÃĄil ach amhÃĄin Ãŗn bhfillteÃĄn faoi ghlas", + "moved_to_archive": "Bogadh {count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}} chuig an gcartlann", + "moved_to_library": "Bogadh {count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}} chuig an leabharlann", + "moved_to_trash": "Bogtha chuig an mbruscar", + "multiselect_grid_edit_date_time_err_read_only": "Ní fÊidir dÃĄta sÃŗcmhainn(í) inlÊite amhÃĄin a chur in eagar, ag scipeÃĄil", + "multiselect_grid_edit_gps_err_read_only": "Ní fÊidir suíomh sÃŗcmhainn(í) inlÊite amhÃĄin a chur in eagar, ag scipeÃĄil", + "mute_memories": "Cuimhní Balbhaigh", + "my_albums": "Mo chuid albaim", + "name": "Ainm", + "name_or_nickname": "Ainm nÃŗ leasainm", + "navigate": "Loingseoireacht", + "navigate_to_time": "NascleanÃēint chuig Am", + "network_requirement_photos_upload": "ÚsÃĄid sonraí ceallacha chun grianghraif a chÃēltaca", + "network_requirement_videos_upload": "ÚsÃĄid sonraí ceallacha chun físeÃĄin a chÃēltaca", + "network_requirements": "Riachtanais Líonra", + "network_requirements_updated": "Athraíodh riachtanais líonra, athshocraíodh an scuaine cÃēltaca", + "networking_settings": "LíonrÃē", + "networking_subtitle": "Bainistigh socruithe críochphointe an fhreastalaí", + "never": "Choíche", + "new_album": "Albam Nua", + "new_api_key": "Eochair API Nua", + "new_date_range": "Raon dÃĄta nua", + "new_password": "Pasfhocal nua", + "new_person": "Duine nua", + "new_pin_code": "CÃŗd PIN nua", + "new_pin_code_subtitle": "Seo Ê an chÊad uair duit rochtain a fhÃĄil ar an bhfillteÃĄn faoi ghlas. Cruthaigh cÃŗd PIN chun rochtain shlÃĄn a fhÃĄil ar an leathanach seo", + "new_timeline": "Amlíne Nua", + "new_update": "NuashonrÃē nua", + "new_user_created": "ÚsÃĄideoir nua cruthaithe", + "new_version_available": "LEAGAN NUA AR FÁIL", + "newest_first": "Is nuaí ar dtÃēs", + "next": "Ar Aghaidh", + "next_memory": "An chÊad chuimhne eile", + "no": "Níl", + "no_albums_message": "Cruthaigh albam chun do ghrianghraif agus do fhíseÃĄin a eagrÃē", + "no_albums_with_name_yet": "Is cosÃēil nach bhfuil aon albaim agat leis an ainm seo go fÃŗill.", + "no_albums_yet": "Is cosÃēil nach bhfuil aon albaim agat fÃŗs.", + "no_archived_assets_message": "Cartlannaigh grianghraif agus físeÃĄin chun iad a cheilt Ãŗ d’amharc Grianghraf", + "no_assets_message": "CLICEÁIL CHUN DO CHÉAD GHRIANGHRAF A UASLÓDÁIL", + "no_assets_to_show": "Gan aon sÃŗcmhainní le taispeÃĄint", + "no_cast_devices_found": "Ní bhfuarthas aon ghlÊasanna teilgthe", + "no_checksum_local": "Níl aon suim seiceÃĄla ar fÃĄil - ní fÊidir sÃŗcmhainní ÃĄitiÃēla a aisghabhÃĄil", + "no_checksum_remote": "Níl aon suim seiceÃĄla ar fÃĄil - ní fÊidir sÃŗcmhainn iargÃēlta a aisghabhÃĄil", + "no_devices": "Gan aon fheistí Ãēdaraithe", + "no_duplicates_found": "Ní bhfuarthas aon dÃēblaigh.", + "no_exif_info_available": "Níl aon fhaisnÊis exif ar fÃĄil", + "no_explore_results_message": "UaslÃŗdÃĄil tuilleadh grianghraf chun do bhailiÃēchÃĄn a iniÃēchadh.", + "no_favorites_message": "Cuir na cinn is fearr leat leis chun do phictiÃēir agus do fhíseÃĄin is fearr a aimsiÃē go tapa", + "no_libraries_message": "Cruthaigh leabharlann sheachtrach chun do ghrianghraif agus físeÃĄin a fheiceÃĄil", + "no_local_assets_found": "Ní bhfuarthas aon sÃŗcmhainní ÃĄitiÃēla leis an tsuim sheiceÃĄla seo", + "no_location_set": "Níl aon suíomh socraithe", + "no_locked_photos_message": "TÃĄ grianghraif agus físeÃĄin sa bhfillteÃĄn faoi ghlas i bhfolach agus ní thaispeÃĄnfar iad agus tÃē ag brabhsÃĄil nÃŗ ag cuardach do leabharlann.", + "no_name": "Gan Ainm", + "no_notifications": "Gan aon fhÃŗgraí", + "no_people_found": "Ní bhfuarthas aon daoine comhoiriÃēnacha", + "no_places": "Gan aon ÃĄiteanna", + "no_remote_assets_found": "Ní bhfuarthas aon sÃŗcmhainní iargÃēlta leis an tsuim sheiceÃĄla seo", + "no_results": "Gan aon torthaí", + "no_results_description": "Bain triail as comhchiallach nÃŗ eochairfhocal níos ginearÃĄlta", + "no_shared_albums_message": "Cruthaigh albam chun grianghraif agus físeÃĄin a roinnt le daoine i do líonra", + "no_uploads_in_progress": "Níl aon uaslÃŗdÃĄlacha ar siÃēl", + "not_allowed": "Ní cheadaítear", + "not_available": "N/B", + "not_in_any_album": "Ní in aon albam", + "not_selected": "Níor roghnaíodh", + "note_apply_storage_label_to_previously_uploaded assets": "NÃŗta: Chun an LipÊad StÃŗrÃĄla a chur i bhfeidhm ar shÃŗcmhainní a uaslÃŗdÃĄileadh roimhe seo, rith an", + "notes": "NÃŗtaí", + "nothing_here_yet": "Níl aon rud anseo fÃŗs", + "notification_permission_dialog_content": "Chun fÃŗgraí a chumasÃē, tÊigh go Socruithe agus roghnaigh ceadaigh.", + "notification_permission_list_tile_content": "Tabhair cead fÃŗgraí a chumasÃē.", + "notification_permission_list_tile_enable_button": "Cumasaigh FÃŗgraí", + "notification_permission_list_tile_title": "Cead FÃŗgra", + "notification_toggle_setting_description": "Cumasaigh fÃŗgraí ríomhphoist", + "notifications": "FÃŗgraí", + "notifications_setting_description": "Bainistigh fÃŗgraí", + "oauth": "OAuth", + "obtainium_configurator": "Cumraitheoir Obtainium", + "obtainium_configurator_instructions": "Bain ÃēsÃĄid as Obtainium chun an aip Android a shuiteÃĄil agus a nuashonrÃē go díreach Ãŗ eisiÃēint Immich ar GitHub. Cruthaigh eochair API agus roghnaigh malairt chun do nasc cumraíochta Obtainium a chruthÃē", + "ocr": "OCR", + "official_immich_resources": "Acmhainní OifigiÃēla Immich", + "offline": "As líne", + "offset": "FrithÃĄireamh", + "ok": "Ceart go leor", + "oldest_first": "Is sine ar dtÃēs", + "on_this_device": "Ar an nglÊas seo", + "onboarding": "IonduchtÃē", + "onboarding_locale_description": "Roghnaigh do theanga is fearr leat. Is fÊidir leat Ê seo a athrÃē níos dÊanaí i do shocruithe.", + "onboarding_privacy_description": "Braitheann na gnÊithe seo a leanas (roghnacha) ar sheirbhísí seachtracha, agus is fÊidir iad a dhíchumasÃē trÃĄth ar bith sna socruithe.", + "onboarding_server_welcome_description": "Lig dÃēinn do chÃĄs a shocrÃē le roinnt socruithe coitianta.", + "onboarding_theme_description": "Roghnaigh tÊama datha do do chÃĄs. Is fÊidir leat Ê seo a athrÃē níos dÊanaí i do shocruithe.", + "onboarding_user_welcome_description": "Cuirfimid tÃēs leis!", + "onboarding_welcome_user": "FÃĄilte, {user}", + "online": "Ar líne", + "only_favorites": "Is fearr leat amhÃĄin", + "open": "Oscail", + "open_in_map_view": "Oscail i radharc lÊarscÃĄile", + "open_in_openstreetmap": "Oscail in OpenStreetMap", + "open_the_search_filters": "Oscail na scagairí cuardaigh", + "options": "Roghanna", + "or": "nÃŗ", + "organize_into_albums": "Eagraigh in albaim", + "organize_into_albums_description": "Cuir grianghraif atÃĄ ann cheana fÊin in albaim ag baint ÃēsÃĄide as na socruithe sioncrÃŗnaithe reatha", + "organize_your_library": "Eagraigh do leabharlann", + "original": "bunaidh", + "other": "Eile", + "other_devices": "GlÊasanna eile", + "other_entities": "Eintitis eile", + "other_variables": "AthrÃŗga eile", + "owned": "Faoi ÃēinÊireacht", + "owner": "ÚinÊir", + "page": "Leathanach", + "partner": "ComhphÃĄirtí", + "partner_can_access": "Is fÊidir le {partner} rochtain a fhÃĄil", + "partner_can_access_assets": "Do ghrianghraif agus do fhíseÃĄin go lÊir seachas iad siÃēd atÃĄ i gCartlann agus Scriosta", + "partner_can_access_location": "An ÃĄit inar tÃŗgadh do ghrianghraif", + "partner_list_user_photos": "Grianghraif {user}", + "partner_list_view_all": "FÊach ar gach rud", + "partner_page_empty_message": "Níl do ghrianghraif roinnte le haon phÃĄirtí go fÃŗill.", + "partner_page_no_more_users": "Níl aon ÃēsÃĄideoirí eile le cur leis", + "partner_page_partner_add_failed": "Theip ar chomhphÃĄirtí a chur leis", + "partner_page_select_partner": "Roghnaigh comhphÃĄirtí", + "partner_page_shared_to_title": "Roinnte le", + "partner_page_stop_sharing_content": "Ní bheidh {partner} in ann rochtain a fhÃĄil ar do ghrianghraif a thuilleadh.", + "partner_sharing": "Comhroinnt ChomhphÃĄirtíochta", + "partners": "ComhphÃĄirtithe", + "password": "Pasfhocal", + "password_does_not_match": "Ní hionann an focal faire", + "password_required": "Pasfhocal Riachtanach", + "password_reset_success": "AthshocrÃē pasfhocail rathÃēil", + "past_durations": { + "days": "An t-am atÃĄ thart {days, plural, one {lÃĄ} other {# laethanta}}", + "hours": "Am atÃĄ thart {hours, plural, one {uair} other {# uair an chloig}}", + "years": "Am atÃĄ thart {years, plural, one {bliain} other {# bliana}}" + }, + "path": "CosÃĄn", + "pattern": "PatrÃēn", + "pause": "Sos", + "pause_memories": "Cuir cuimhní cinn ar sos", + "paused": "Sosaithe", + "pending": "Ar feitheamh", + "people": "Daoine", + "people_edits_count": "EagarthÃŗireacht dÊanta {count, plural, one {# duine} other {# daoine}}", + "people_feature_description": "Ag brabhsÃĄil grianghraif agus físeÃĄin grÃēpÃĄilte de rÊir daoine", + "people_sidebar_description": "TaispeÃĄin nasc chuig Daoine sa bharra taoibh", + "permanent_deletion_warning": "Rabhadh scriosadh buan", + "permanent_deletion_warning_setting_description": "TaispeÃĄin rabhadh agus sÃŗcmhainní ÃĄ scriosadh go buan", + "permanently_delete": "Scrios go buan", + "permanently_delete_assets_count": "Scrios go buan {count, plural, one {sÃŗcmhainn} other {sÃŗcmhainní}}", + "permanently_delete_assets_prompt": "An bhfuil tÃē cinnte gur mian leat {count, plural, one {an tsÃŗcmhainn seo a scriosadh go buan?} other {na # sÃŗcmhainní seo a scriosadh go buan?}} Bainfear {count, plural, one {í dÃĄ halbam chomh maith.} other {iad dÃĄ n-albamanna chomh maith}}.", + "permanently_deleted_asset": "SÃŗcmhainn scriosta go buan", + "permanently_deleted_assets_count": "Scriosta go buan {count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}}", + "permission": "Cead", + "permission_empty": "Níor cheart go mbeadh do chead folamh", + "permission_onboarding_back": "Ar ais", + "permission_onboarding_continue_anyway": "Lean ar aghaidh ar aon nÃŗs", + "permission_onboarding_get_started": "Tosaigh anois", + "permission_onboarding_go_to_settings": "TÊigh go dtí na socruithe", + "permission_onboarding_permission_denied": "Cead diÃēltaithe. Chun Immich a ÃēsÃĄid, deonaigh ceadanna grianghraf agus físeÃĄin sna Socruithe.", + "permission_onboarding_permission_granted": "Cead tugtha! TÃĄ gach rud rÊidh.", + "permission_onboarding_permission_limited": "Cead teoranta. Chun ligean d’Immich cÃēltaca a dhÊanamh de do bhailiÃēchÃĄn gailearaí iomlÃĄn agus Ê a bhainistiÃē, deonaigh ceadanna grianghraf agus físeÃĄin sna Socruithe.", + "permission_onboarding_request": "Éilíonn Immich cead chun do ghrianghraif agus do fhíseÃĄin a fheiceÃĄil.", + "person": "Duine", + "person_age_months": "{months, plural, one {# mí} other {# míonna}} d'aois", + "person_age_year_months": "1 bhliain, {months, plural, one {# mí} other {# míonna}} d'aois", + "person_age_years": "{years, plural, other {# blianta}} d'aois", + "person_birthdate": "Rugadh ar {date}", + "person_hidden": "{name}{hidden, select, true { (i bhfolach)} other {}}", + "photo_shared_all_users": "Is cosÃēil gur roinn tÃē do ghrianghraif le gach ÃēsÃĄideoir nÃŗ nach bhfuil aon ÃēsÃĄideoir agat le roinnt leis.", + "photos": "Grianghraif", + "photos_and_videos": "Grianghraif & FíseÃĄin", + "photos_count": "{count, plural, one {{count, number} Grianghraf} other {{count, number} Grianghraif}}", + "photos_from_previous_years": "Grianghraif Ãŗ bhlianta roimhe seo", + "pick_a_location": "Roghnaigh suíomh", + "pick_custom_range": "Raon saincheaptha", + "pick_date_range": "Roghnaigh raon dÃĄta", + "pin_code_changed_successfully": "Athraíodh an cÃŗd PIN go rathÃēil", + "pin_code_reset_successfully": "Athshocraíodh an cÃŗd PIN go rathÃēil", + "pin_code_setup_successfully": "Socraíodh cÃŗd PIN go rathÃēil", + "pin_verification": "FíorÃē cÃŗd PIN", + "place": "Áit", + "places": "Áiteanna", + "places_count": "{count, plural, one {{count, number} Áit} other {{count, number} Áiteanna}}", + "play": "Seinn", + "play_memories": "Seinnchuimhní", + "play_motion_photo": "Seinn Grianghraf Gluaiseachta", + "play_or_pause_video": "Seinn nÃŗ sos físeÃĄn", + "play_original_video": "Seinn físeÃĄn bunaidh", + "play_original_video_setting_description": "Is fearr físeÃĄin bhunaidh a athsheinm seachas físeÃĄin thraschÃŗdaithe. Mura bhfuil an tsÃŗcmhainn bhunaidh comhoiriÃēnach, b’fhÊidir nach n-athsheinmfear i gceart í.", + "play_transcoded_video": "Seinn físeÃĄn traschÃŗdaithe", + "please_auth_to_access": "Fíordheimhnigh le do thoil chun rochtain a fhÃĄil", + "port": "Port", + "preferences_settings_subtitle": "Bainistigh roghanna an aip", + "preferences_settings_title": "Roghanna", + "preparing": "Ag ullmhÃē", + "preset": "RÊamhshocrÃē", + "preview": "RÊamhamharc", + "previous": "Roimhe Seo", + "previous_memory": "Cuimhne roimhe seo", + "previous_or_next_day": "LÃĄ ar aghaidh/ar gcÃēl", + "previous_or_next_month": "Mí ar aghaidh/ar gcÃēl", + "previous_or_next_photo": "Grianghraf ar aghaidh/ar gcÃēl", + "previous_or_next_year": "Bliain ar aghaidh/ar gcÃēl", + "primary": "PríomhÃēil", + "privacy": "PríobhÃĄideacht", + "profile": "PrÃŗifíl", + "profile_drawer_app_logs": "Logaí", + "profile_drawer_client_server_up_to_date": "TÃĄ an cliant agus an freastalaí cothrom le dÃĄta", + "profile_drawer_github": "GitHub", + "profile_drawer_readonly_mode": "MÃŗd lÊite amhÃĄin cumasaithe. BrÃēigh ar dheilbhín an avatÃĄir ÃēsÃĄideora le himeacht.", + "profile_image_of_user": "ÍomhÃĄ phrÃŗifíle de {user}", + "profile_picture_set": "Sraith pictiÃēr prÃŗifíle.", + "public_album": "Albam poiblí", + "public_share": "Comhroinn Phoiblí", + "purchase_account_info": "Tacaíochtaí", + "purchase_activated_subtitle": "Go raibh maith agat as tacÃē le Immich agus bogearraí foinse oscailte", + "purchase_activated_time": "Gníomhachtaithe ar {date}", + "purchase_activated_title": "TÃĄ d’eochair gníomhachtaithe go rathÃēil", + "purchase_button_activate": "Gníomhachtaigh", + "purchase_button_buy": "Ceannach", + "purchase_button_buy_immich": "Ceannaigh Immich", + "purchase_button_never_show_again": "NÃĄ taispeÃĄin arís choíche", + "purchase_button_reminder": "Cuir i gcuimhne dom i gceann 30 lÃĄ", + "purchase_button_remove_key": "Bain an eochair", + "purchase_button_select": "Roghnaigh", + "purchase_failed_activation": "Theip ar an ngníomhachtÃē! SeiceÃĄil do r-phost le haghaidh an eochair thÃĄirge cheart!", + "purchase_individual_description_1": "Do dhuine aonair", + "purchase_individual_description_2": "StÃĄdas an tacaí", + "purchase_individual_title": "Aonair", + "purchase_input_suggestion": "An bhfuil eochair tÃĄirge agat? Cuir isteach an eochair thíos", + "purchase_license_subtitle": "Ceannaigh Immich chun tacÃē le forbairt leanÃēnach na seirbhíse", + "purchase_lifetime_description": "Ceannach saoil", + "purchase_option_title": "ROGHANNA CEANNAIGH", + "purchase_panel_info_1": "TÃŗgann sÊ go leor ama agus iarrachta Immich a thÃŗgÃĄil, agus tÃĄ innealtÃŗirí lÃĄnaimseartha againn ag obair air chun Ê a dhÊanamh chomh maith agus is fÊidir linn. Is Ê ÃĄr misean go mbeidh bogearraí foinse oscailte agus cleachtais ghnÃŗ eiticiÃēla ina bhfoinse ioncaim inbhuanaithe d’fhorbrÃŗirí agus go gcruthÃŗfar ÊiceachÃŗras a urramaíonn príobhÃĄideacht le roghanna fíor seachas seirbhísí scamall saothraithe.", + "purchase_panel_info_2": "Ós rud Ê go bhfuilimid tiomanta gan ballaí íocaíochta a chur leis, ní thabharfaidh an ceannachÃĄn seo aon ghnÊithe breise duit in Immich. TÃĄimid ag brath ar ÃēsÃĄideoirí cosÃēil leatsa chun tacÃē le forbairt leanÃēnach Immich.", + "purchase_panel_title": "Tacaigh leis an tionscadal", + "purchase_per_server": "In aghaidh an fhreastalaí", + "purchase_per_user": "In aghaidh an ÃēsÃĄideora", + "purchase_remove_product_key": "Bain Eochair an TÃĄirge", + "purchase_remove_product_key_prompt": "An bhfuil tÃē cinnte gur mian leat an eochair tÃĄirge a bhaint?", + "purchase_remove_server_product_key": "Bain eochair tÃĄirge an fhreastalaí", + "purchase_remove_server_product_key_prompt": "An bhfuil tÃē cinnte gur mian leat eochair tÃĄirge an Fhreastalaí a bhaint?", + "purchase_server_description_1": "Don fhreastalaí ar fad", + "purchase_server_description_2": "StÃĄdas an tacaí", + "purchase_server_title": "Freastalaí", + "purchase_settings_server_activated": "DÊanann an riarthÃŗir bainistíocht ar eochair tÃĄirge an fhreastalaí", + "query_asset_id": "ID SÃŗcmhainne Iarratais", + "queue_status": "ScuaineÃĄil {count}/{total}", + "rating": "RÃĄtÃĄil rÊalta", + "rating_clear": "Glan rÃĄtÃĄil", + "rating_count": "{count, plural, one {# rÊalta} other {# rÊaltaí}}", + "rating_description": "TaispeÃĄin an rÃĄtÃĄil EXIF sa phainÊal eolais", + "reaction_options": "Roghanna imoibrithe", + "read_changelog": "LÊigh an Log Athraithe", + "readonly_mode_disabled": "MÃŗd lÊite amhÃĄin díchumasaithe", + "readonly_mode_enabled": "MÃŗd lÊite amhÃĄin cumasaithe", + "ready_for_upload": "RÊidh le huaslÃŗdÃĄil", + "reassign": "Athshannadh", + "reassigned_assets_to_existing_person": "Athshannadh {count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}} chuig {name, select, null {duine atÃĄ ann cheana fÊin} other {{name}}}", + "reassigned_assets_to_new_person": "Athshannadh {count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}} do dhuine nua", + "reassing_hint": "Sannadh sÃŗcmhainní roghnaithe do dhuine atÃĄ ann cheana fÊin", + "recent": "Le dÊanaí", + "recent-albums": "Albaim le dÊanaí", + "recent_searches": "Cuardaigh le dÊanaí", + "recently_added": "Cuireadh leis le dÊanaí", + "recently_added_page_title": "Curtha leis le DÊanaí", + "recently_taken": "TÃŗgtha le dÊanaí", + "recently_taken_page_title": "TÃŗgtha le DÊanaí", + "refresh": "Athnuachan", + "refresh_encoded_videos": "Athnuaigh físeÃĄin ionchÃŗdaithe", + "refresh_faces": "Athnuachan aghaidheanna", + "refresh_metadata": "Athnuaigh meiteashonraí", + "refresh_thumbnails": "Athnuachan mionsamhlacha", + "refreshed": "Athnuachan", + "refreshes_every_file": "AthlÊann sÊ gach comhad atÃĄ ann cheana fÊin agus comhad nua", + "refreshing_encoded_video": "FíseÃĄn ionchÃŗdaithe ÃĄ athnuachan", + "refreshing_faces": "Aghaidheanna athnuachana", + "refreshing_metadata": "Meiteashonraí ÃĄ n-athnuachan", + "regenerating_thumbnails": "Mionsamhlacha ÃĄ n-athghiniÃēint", + "remote": "Cianda", + "remote_assets": "SÃŗcmhainní Cianda", + "remote_media_summary": "Achoimre ar na MeÃĄin IargÃēlta", + "remove": "Bain", + "remove_assets_album_confirmation": "An bhfuil tÃē cinnte gur mian leat {count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}} a bhaint den albam?", + "remove_assets_shared_link_confirmation": "An bhfuil tÃē cinnte gur mian leat {count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}} a bhaint den nasc comhroinnte seo?", + "remove_assets_title": "Bain sÃŗcmhainní?", + "remove_custom_date_range": "Bain raon dÃĄta saincheaptha", + "remove_deleted_assets": "Bain SÃŗcmhainní Scriosta", + "remove_from_album": "Bain den albam", + "remove_from_album_action_prompt": "Baineadh {count} den albam", + "remove_from_favorites": "Bain as ceanÃĄin", + "remove_from_lock_folder_action_prompt": "Baineadh {count} as an bhfillteÃĄn faoi ghlas", + "remove_from_locked_folder": "Bain as fillteÃĄn faoi ghlas", + "remove_from_locked_folder_confirmation": "An bhfuil tÃē cinnte gur mian leat na grianghraif agus na físeÃĄin seo a bhogadh as an bhfillteÃĄn faoi ghlas? Beidh siad le feiceÃĄil i do leabharlann.", + "remove_from_shared_link": "Bain den nasc comhroinnte", + "remove_memory": "Bain cuimhne", + "remove_photo_from_memory": "Bain grianghraf as an gcuimhne seo", + "remove_tag": "Bain an chlib", + "remove_url": "Bain URL", + "remove_user": "Bain ÃēsÃĄideoir", + "removed_api_key": "Eochair API bainte: {name}", + "removed_from_archive": "Bainte as an gcartlann", + "removed_from_favorites": "Bainte as na cinn is ansa leat", + "removed_from_favorites_count": "{count, plural, other {Baineadh #}} Ãŗ ceanÃĄin", + "removed_memory": "Cuimhne bainte", + "removed_photo_from_memory": "Baineadh grianghraf as an gcuimhne", + "removed_tagged_assets": "Baineadh an clib as {count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}}", + "rename": "Athainmnigh", + "repair": "DeisiÃē", + "repair_no_results_message": "Beidh comhaid neamhrianaithe agus ar iarraidh le feiceÃĄil anseo", + "replace_with_upload": "Cuir uaslÃŗdÃĄil ina ÃĄit", + "repository": "StÃŗr", + "require_password": "Éiligh pasfhocal", + "require_user_to_change_password_on_first_login": "Éiligh ar an ÃēsÃĄideoir an focal faire a athrÃē ar an gcÊad logÃĄil isteach", + "rescan": "Athscanadh", + "reset": "Athshocraigh", + "reset_password": "Athshocraigh an focal faire", + "reset_people_visibility": "Athshocraigh infheictheacht daoine", + "reset_pin_code": "Athshocraigh an cÃŗd PIN", + "reset_pin_code_description": "MÃĄ rinne tÃē dearmad ar do chÃŗd PIN, is fÊidir leat teagmhÃĄil a dhÊanamh le riarthÃŗir an fhreastalaí chun Ê a athshocrÃē", + "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_sqlite": "Athshocraigh Bunachar Sonraí SQLite", + "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_success": "Athshocraíodh bunachar sonraí SQLite go rathÃēil", + "reset_to_default": "Athshocraigh go rÊamhshocraithe", + "resolution": "Taifeach", + "resolve_duplicates": "RÊitigh dÃēblaigh", + "resolved_all_duplicates": "RÊitíodh na dÃēblaigh go lÊir", + "restore": "AthchÃŗirigh", + "restore_all": "AthchÃŗirigh gach rud", + "restore_trash_action_prompt": "{count} athchÃŗirithe Ãŗn mbruscar", + "restore_user": "AthchÃŗirigh ÃēsÃĄideoir", + "restored_asset": "SÃŗcmhainn athchÃŗirithe", + "resume": "AtosÃē", + "resume_paused_jobs": "AtosÃē {count, plural, one {# post ar sos} other {# poist ar sos}}", + "retry_upload": "DÊan iarracht arís uaslÃŗdÃĄil", + "review_duplicates": "Athbhreithnigh dÃēblaigh", + "review_large_files": "Athbhreithnigh comhaid mhÃŗra", + "role": "RÃŗl", + "role_editor": "EagarthÃŗir", + "role_viewer": "AmharcÃŗir", + "running": "Ag rith", + "save": "SÃĄbhÃĄil", + "save_to_gallery": "SÃĄbhÃĄil chuig an ngailearaí", + "saved": "SÃĄbhÃĄilte", + "saved_api_key": "Eochair API SÃĄbhÃĄilte", + "saved_profile": "PrÃŗifíl shÃĄbhÃĄilte", + "saved_settings": "Socruithe sÃĄbhÃĄilte", + "say_something": "Abair rud Êigin", + "scaffold_body_error_occurred": "Tharla earrÃĄid", + "scan_all_libraries": "ScanÃĄil Gach Leabharlann", + "scan_library": "Scanadh", + "scan_settings": "Socruithe Scanadh", + "scanning_for_album": "Ag scanadh le haghaidh albam...", + "search": "Cuardaigh", + "search_albums": "Cuardaigh albaim", + "search_by_context": "Cuardaigh de rÊir comhthÊacs", + "search_by_description": "Cuardaigh de rÊir cur síos", + "search_by_description_example": "LÃĄ siÃēlÃŗide i Sapa", + "search_by_filename": "Cuardaigh de rÊir ainm comhaid nÃŗ síneadh", + "search_by_filename_example": "i.e. IMG_1234.JPG nÃŗ PNG", + "search_by_ocr": "Cuardaigh de rÊir OCR", + "search_by_ocr_example": "Latte", + "search_camera_lens_model": "Cuardaigh samhail lionsa...", + "search_camera_make": "Cuardaigh dÊantÃēsÃŗir ceamara...", + "search_camera_model": "Cuardaigh samhail ceamara...", + "search_city": "Cuardaigh cathair...", + "search_country": "Cuardaigh tír...", + "search_filter_apply": "Cuir scagaire i bhfeidhm", + "search_filter_camera_title": "Roghnaigh cineÃĄl ceamara", + "search_filter_date": "DÃĄta", + "search_filter_date_interval": "{start} go {end}", + "search_filter_date_title": "Roghnaigh raon dÃĄta", + "search_filter_display_option_not_in_album": "Ní san albam", + "search_filter_display_options": "Roghanna TaispeÃĄna", + "search_filter_filename": "Cuardaigh de rÊir ainm comhaid", + "search_filter_location": "Suíomh", + "search_filter_location_title": "Roghnaigh suíomh", + "search_filter_media_type": "CineÃĄl MeÃĄn", + "search_filter_media_type_title": "Roghnaigh cineÃĄl meÃĄn", + "search_filter_ocr": "Cuardaigh de rÊir OCR", + "search_filter_people_title": "Roghnaigh daoine", + "search_for": "Cuardaigh le haghaidh", + "search_for_existing_person": "Cuardaigh duine atÃĄ ann cheana fÊin", + "search_no_more_result": "Gan aon torthaí eile", + "search_no_people": "Gan aon duine", + "search_no_people_named": "Gan aon duine darb ainm \"{name}\"", + "search_no_result": "Ní bhfuarthas aon torthaí, bain triail as tÊarma cuardaigh nÃŗ teaglaim eile", + "search_options": "Roghanna cuardaigh", + "search_page_categories": "CatagÃŗirí", + "search_page_motion_photos": "Grianghraif Ghluaiseachta", + "search_page_no_objects": "Níl aon eolas faoi rÊada ar fÃĄil", + "search_page_no_places": "Níl aon eolas faoi ÃĄiteanna ar fÃĄil", + "search_page_screenshots": "Seat scÃĄileÃĄin", + "search_page_search_photos_videos": "Cuardaigh do ghrianghraif agus do fhíseÃĄin", + "search_page_selfies": "FÊinín", + "search_page_things": "Rudaí", + "search_page_view_all_button": "FÊach ar gach rud", + "search_page_your_activity": "Do ghníomhaíocht", + "search_page_your_map": "Do LÊarscÃĄil", + "search_people": "Cuardaigh daoine", + "search_places": "Cuardaigh ÃĄiteanna", + "search_rating": "Cuardaigh de rÊir rÃĄtÃĄla...", + "search_result_page_new_search_hint": "Cuardach Nua", + "search_settings": "Socruithe cuardaigh", + "search_state": "Cuardaigh stÃĄt...", + "search_suggestion_list_smart_search_hint_1": "TÃĄ cuardach cliste cumasaithe de rÊir rÊamhshocraithe, chun meiteashonraí a chuardach bain ÃēsÃĄid as an comhrÊir ", + "search_suggestion_list_smart_search_hint_2": "m:do-thÊarma-cuardaigh", + "search_tags": "Cuardaigh clibeanna...", + "search_timezone": "Cuardaigh crios ama...", + "search_type": "CineÃĄl cuardaigh", + "search_your_photos": "Cuardaigh do ghrianghraif", + "searching_locales": "Ag cuardach lÃĄithreacha...", + "second": "Dara", + "see_all_people": "FÊach ar gach duine", + "select": "Roghnaigh", + "select_album_cover": "Roghnaigh clÃēdach albaim", + "select_all": "Roghnaigh gach rud", + "select_all_duplicates": "Roghnaigh na dÃēblaigh go lÊir", + "select_all_in": "Roghnaigh gach rud i {group}", + "select_avatar_color": "Roghnaigh dath an abhatÃĄr", + "select_face": "Roghnaigh aghaidh", + "select_featured_photo": "Roghnaigh grianghraf le feiceÃĄil", + "select_from_computer": "Roghnaigh Ãŗn ríomhaire", + "select_keep_all": "Roghnaigh coinnigh gach rud", + "select_library_owner": "Roghnaigh ÃēinÊir leabharlainne", + "select_new_face": "Roghnaigh aghaidh nua", + "select_person_to_tag": "Roghnaigh duine le clibeÃĄil", + "select_photos": "Roghnaigh grianghraif", + "select_trash_all": "Roghnaigh gach rud sa bhruscar", + "select_user_for_sharing_page_err_album": "Theip ar albam a chruthÃē", + "selected": "Roghnaithe", + "selected_count": "{count, plural, other {# roghnaithe}}", + "selected_gps_coordinates": "ComhordanÃĄidí GPS Roghnaithe", + "send_message": "Seol teachtaireacht", + "send_welcome_email": "Seol ríomhphost fÃĄilte", + "server_endpoint": "Críochphointe Freastalaí", + "server_info_box_app_version": "Leagan na hAipe", + "server_info_box_server_url": "URL an fhreastalaí", + "server_offline": "Freastalaí As Líne", + "server_online": "Freastalaí Ar Líne", + "server_privacy": "PríobhÃĄideacht an Fhreastalaí", + "server_restarting_description": "AthnuachanÃŗfar an leathanach seo ar feadh tamaill.", + "server_restarting_title": "TÃĄ an freastalaí ag atosÃē", + "server_stats": "Staitisticí Freastalaí", + "server_update_available": "TÃĄ nuashonrÃē freastalaí ar fÃĄil", + "server_version": "Leagan an Fhreastalaí", + "set": "Socraigh", + "set_as_album_cover": "Socraigh mar chlÃēdach albaim", + "set_as_featured_photo": "Socraigh mar ghrianghraf le feiceÃĄil", + "set_as_profile_picture": "Socraigh mar phictiÃēr prÃŗifíle", + "set_date_of_birth": "Socraigh dÃĄta breithe", + "set_profile_picture": "Socraigh pictiÃēr prÃŗifíle", + "set_slideshow_to_fullscreen": "Socraigh SleamhnÃĄn go lÃĄnscÃĄileÃĄn", + "set_stack_primary_asset": "Socraigh mar phríomhshÃŗcmhainn", + "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_title": "Luchtaigh an íomhÃĄ bhunaidh", + "setting_image_viewer_preview_subtitle": "Cumasaigh chun íomhÃĄ meÃĄntaifigh a luchtÃē. Díchumasaigh chun an bunleagan a luchtÃē go díreach nÃŗ chun an mionsamhail amhÃĄin a ÃēsÃĄid.", + "setting_image_viewer_preview_title": "Luchtaigh íomhÃĄ rÊamhamhairc", + "setting_image_viewer_title": "ÍomhÃĄnna", + "setting_languages_apply": "Cuir isteach", + "setting_languages_subtitle": "Athraigh teanga an aip", + "setting_notifications_notify_failures_grace_period": "FÃŗgra a thabhairt faoi theipeanna cÃēltaca cÃēlra: {duration}", + "setting_notifications_notify_hours": "{count} uair an chloig", + "setting_notifications_notify_immediately": "lÃĄithreach", + "setting_notifications_notify_minutes": "{count} nÃŗimÊad", + "setting_notifications_notify_never": "riamh", + "setting_notifications_notify_seconds": "{count} soicind", + "setting_notifications_single_progress_subtitle": "FaisnÊis mhionsonraithe faoi dhul chun cinn uaslÃŗdÃĄla in aghaidh an tsÃŗcmhainne", + "setting_notifications_single_progress_title": "TaispeÃĄin dul chun cinn sonraí cÃēltaca sa chÃēlra", + "setting_notifications_subtitle": "Coigeartaigh do chuid roghanna fÃŗgra", + "setting_notifications_total_progress_subtitle": "Dul chun cinn foriomlÃĄn uaslÃŗdÃĄla (críochnaithe/sÃŗcmhainní iomlÃĄna)", + "setting_notifications_total_progress_title": "TaispeÃĄin dul chun cinn iomlÃĄn an chÃēltaca sa chÃēlra", + "setting_video_viewer_auto_play_subtitle": "Tosaíonn siad ag seinm físeÃĄin go huathoibríoch nuair a osclaítear iad", + "setting_video_viewer_auto_play_title": "FíseÃĄin uath-sheinm", + "setting_video_viewer_looping_title": "LÃēbÃĄil", + "setting_video_viewer_original_video_subtitle": "Agus físeÃĄn ÃĄ shruthÃē Ãŗn bhfreastalaí, seinn an bunleagan fiÃē nuair a bhíonn traschÃŗd ar fÃĄil. D’fhÊadfadh sÊ seo maolÃĄnÃē a chur faoi deara. Seinntear físeÃĄin atÃĄ ar fÃĄil go hÃĄitiÃēil i gcÃĄilíocht bhunaidh beag beann ar an socrÃē seo.", + "setting_video_viewer_original_video_title": "FÃŗrsaigh físeÃĄn bunaidh", + "settings": "Socruithe", + "settings_require_restart": "Atosaigh Immich le do thoil chun an socrÃē seo a chur i bhfeidhm", + "settings_saved": "Socruithe sÃĄbhÃĄilte", + "setup_pin_code": "Socraigh cÃŗd PIN", + "share": "Comhroinn", + "share_action_prompt": "SÃŗcmhainní comhroinnte {count}", + "share_add_photos": "Cuir grianghraif leis", + "share_assets_selected": "{count} roghnaithe", + "share_dialog_preparing": "Ag ullmhÃē...", + "share_link": "Comhroinn an Nasc", + "shared": "Roinnte", + "shared_album_activities_input_disable": "TÃĄ trÃĄcht díchumasaithe", + "shared_album_activity_remove_content": "Ar mhaith leat an ghníomhaíocht seo a scriosadh?", + "shared_album_activity_remove_title": "Scrios Gníomhaíocht", + "shared_album_section_people_action_error": "EarrÃĄid ag fÃĄgÃĄil/ag baint den albam", + "shared_album_section_people_action_leave": "Bain ÃēsÃĄideoir den albam", + "shared_album_section_people_action_remove_user": "Bain ÃēsÃĄideoir den albam", + "shared_album_section_people_title": "DAOINE", + "shared_by": "Roinnte ag", + "shared_by_user": "Roinnte ag {user}", + "shared_by_you": "Roinnte agatsa", + "shared_from_partner": "Grianghraif Ãŗ {partner}", + "shared_intent_upload_button_progress_text": "{current} / {total} UaslÃŗdÃĄilte", + "shared_link_app_bar_title": "Naisc Chomhroinnte", + "shared_link_clipboard_copied_massage": "CÃŗipeÃĄilte chuig an ghearrthaisce", + "shared_link_clipboard_text": "Nasc: {link}\nPasfhocal: {password}", + "shared_link_create_error": "EarrÃĄid agus nasc comhroinnte ÃĄ chruthÃē", + "shared_link_custom_url_description": "Rochtain a fhÃĄil ar an nasc comhroinnte seo le URL saincheaptha", + "shared_link_edit_description_hint": "Cuir isteach cur síos an chomhroinnte", + "shared_link_edit_expire_after_option_day": "1 lÃĄ", + "shared_link_edit_expire_after_option_days": "{count} lÃĄ", + "shared_link_edit_expire_after_option_hour": "1 uair an chloig", + "shared_link_edit_expire_after_option_hours": "{count} uair an chloig", + "shared_link_edit_expire_after_option_minute": "1 nÃŗimÊad", + "shared_link_edit_expire_after_option_minutes": "{count} nÃŗimÊad", + "shared_link_edit_expire_after_option_months": "{count} míonna", + "shared_link_edit_expire_after_option_year": "{count} bliain", + "shared_link_edit_password_hint": "Cuir isteach an focal faire comhroinnte", + "shared_link_edit_submit_button": "Nuashonraigh an nasc", + "shared_link_error_server_url_fetch": "Ní fÊidir url an fhreastalaí a fhÃĄil", + "shared_link_expires_day": "Éagaíonn i gceann {count} lÃĄ", + "shared_link_expires_days": "Éagaíonn i gceann {count} laethanta", + "shared_link_expires_hour": "Éagaíonn i gceann {count} uair", + "shared_link_expires_hours": "Éagaíonn i gceann {count} uair an chloig", + "shared_link_expires_minute": "Éagaíonn i gceann {count} nÃŗimÊad", + "shared_link_expires_minutes": "Éagaíonn i gceann {count} nÃŗimÊid", + "shared_link_expires_never": "Éagaíonn ∞", + "shared_link_expires_second": "Éagaíonn i gceann {count} soicind", + "shared_link_expires_seconds": "Éagaíonn i gceann {count} soicindí", + "shared_link_individual_shared": "Aonair roinnte", + "shared_link_info_chip_metadata": "EXIF", + "shared_link_manage_links": "Bainistigh naisc chomhroinnte", + "shared_link_options": "Roghanna nasc comhroinnte", + "shared_link_password_description": "Éiligh pasfhocal chun rochtain a fhÃĄil ar an nasc comhroinnte seo", + "shared_links": "Naisc chomhroinnte", + "shared_links_description": "Roinn grianghraif agus físeÃĄin le nasc", + "shared_photos_and_videos_count": "{assetCount, plural, other {# grianghraif & físeÃĄin chomhroinnte.}}", + "shared_with_me": "Roinnte liom", + "shared_with_partner": "Roinnte le {partner}", + "sharing": "Roinnt", + "sharing_enter_password": "Cuir isteach an focal faire le do thoil chun an leathanach seo a fheiceÃĄil.", + "sharing_page_album": "Albaim chomhroinnte", + "sharing_page_description": "Cruthaigh albaim chomhroinnte chun grianghraif agus físeÃĄin a roinnt le daoine i do líonra.", + "sharing_page_empty_list": "LIOSTA FOLAMH", + "sharing_sidebar_description": "TaispeÃĄin nasc chuig Comhroinnt sa bharra taoibh", + "sharing_silver_appbar_create_shared_album": "Albam comhroinnte nua", + "sharing_silver_appbar_share_partner": "Comhroinn le comhphÃĄirtí", + "shift_to_permanent_delete": "brÃēigh ⇧ chun sÃŗcmhainn a scriosadh go buan", + "show_album_options": "TaispeÃĄin roghanna albaim", + "show_albums": "TaispeÃĄin albaim", + "show_all_people": "TaispeÃĄin gach duine", + "show_and_hide_people": "TaispeÃĄin & folaigh daoine", + "show_file_location": "TaispeÃĄin suíomh an chomhaid", + "show_gallery": "TaispeÃĄin gailearaí", + "show_hidden_people": "TaispeÃĄin daoine i bhfolach", + "show_in_timeline": "TaispeÃĄin san amlíne", + "show_in_timeline_setting_description": "TaispeÃĄin grianghraif agus físeÃĄin Ãŗn ÃēsÃĄideoir seo i do líne ama", + "show_keyboard_shortcuts": "TaispeÃĄin aicearraí mÊarchlÃĄir", + "show_metadata": "TaispeÃĄin meiteashonraí", + "show_or_hide_info": "TaispeÃĄin nÃŗ folaigh faisnÊis", + "show_password": "TaispeÃĄin an focal faire", + "show_person_options": "TaispeÃĄin roghanna duine", + "show_progress_bar": "TaispeÃĄin an Barra Dul Chun Cinn", + "show_search_options": "TaispeÃĄin roghanna cuardaigh", + "show_shared_links": "TaispeÃĄin naisc chomhroinnte", + "show_slideshow_transition": "TaispeÃĄin an t-aistriÃē sleamhnÃĄn", + "show_supporter_badge": "Suaitheantas tacaíochta", + "show_supporter_badge_description": "TaispeÃĄin suaitheantas tacaíochta", + "show_text_recognition": "TaispeÃĄin aitheantas tÊacs", + "show_text_search_menu": "TaispeÃĄin roghchlÃĄr cuardaigh tÊacs", + "shuffle": "MeascÃĄn", + "sidebar": "Barra taobh", + "sidebar_display_description": "TaispeÃĄin nasc chuig an radharc sa bharra taoibh", + "sign_out": "Sínigh Amach", + "sign_up": "ClÃĄraigh", + "size": "MÊid", + "skip_to_content": "LÊim go dtí an t-ÃĄbhar", + "skip_to_folders": "LÊim go dtí na fillteÃĄin", + "skip_to_tags": "LÊim go dtí na clibeanna", + "slideshow": "SleamhnÃĄn", + "slideshow_settings": "Socruithe sleamhnÃĄn", + "sort_albums_by": "SÃŗrtÃĄil albaim de rÊir...", + "sort_created": "DÃĄta cruthaithe", + "sort_items": "Líon na míreanna", + "sort_modified": "DÃĄta athraithe", + "sort_newest": "An grianghraf is nuaí", + "sort_oldest": "An grianghraf is sine", + "sort_people_by_similarity": "SÃŗrtÃĄil daoine de rÊir cosÃēlachta", + "sort_recent": "Grianghraf is dÊanaí", + "sort_title": "Teideal", + "source": "Foinse", + "stack": "Cruach", + "stack_action_prompt": "{count} cruachta", + "stack_duplicates": "Cruach dÃēblach", + "stack_select_one_photo": "Roghnaigh príomhghrianghraf amhÃĄin don chairn", + "stack_selected_photos": "Cruach na grianghraif roghnaithe", + "stacked_assets_count": "Cruachta {count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}}", + "stacktrace": "Rian cruachta", + "start": "Tosaigh", + "start_date": "DÃĄta tosaithe", + "start_date_before_end_date": "Ní mÃŗr don dÃĄta tosaigh a bheith roimh an dÃĄta deiridh", + "state": "StÃĄt", + "status": "StÃĄdas", + "stop_casting": "Stop a chur leis an gcraoladh", + "stop_motion_photo": "Grianghraf Stop-Ghluaiseachta", + "stop_photo_sharing": "Stop a chur le do ghrianghraif a roinnt?", + "stop_photo_sharing_description": "Ní bheidh {partner} in ann rochtain a fhÃĄil ar do ghrianghraif a thuilleadh.", + "stop_sharing_photos_with_user": "Stop a roinnt do ghrianghraif leis an ÃēsÃĄideoir seo", + "storage": "SpÃĄs stÃŗrÃĄla", + "storage_label": "LipÊad stÃŗrÃĄla", + "storage_quota": "CuÃŗta StÃŗrÃĄla", + "storage_usage": "{used} de {available} ÃēsÃĄidte", + "submit": "Cuir isteach", + "success": "Rath", + "suggestions": "Moltaí", + "sunrise_on_the_beach": "Éirí grÊine ar an trÃĄ", + "support": "Tacaíocht", + "support_and_feedback": "Tacaíocht & Aiseolas", + "support_third_party_description": "Rinne tríÃē pÃĄirtí pacÃĄiste de do shuiteÃĄil Immich. D’fhÊadfadh sÊ gur an pacÃĄiste sin ba chÃēis le fadhbanna a bhíonn agat, mar sin tabhair ceisteanna dÃŗibh ar dtÃēs trí na naisc thíos a ÃēsÃĄid.", + "swap_merge_direction": "Malartaigh treo an chumaisc", + "sync": "SioncrÃŗnaigh", + "sync_albums": "SioncrÃŗnaigh albaim", + "sync_albums_manual_subtitle": "SioncrÃŗnaigh na físeÃĄin agus na grianghraif uile a uaslÃŗdÃĄiltear leis na halbaim chÃēltaca roghnaithe", + "sync_local": "SioncrÃŗnaigh ÁitiÃēil", + "sync_remote": "SioncrÃŗnaigh Cianda", + "sync_status": "StÃĄdas SioncrÃŗnaithe", + "sync_status_subtitle": "FÊach ar an gcÃŗras sioncrÃŗnaithe agus bainistigh Ê", + "sync_upload_album_setting_subtitle": "Cruthaigh agus uaslÃŗdÃĄil do ghrianghraif agus físeÃĄin chuig na halbaim roghnaithe ar Immich", + "tag": "Clib", + "tag_assets": "SÃŗcmhainní clibe", + "tag_created": "Clib cruthaithe: {tag}", + "tag_feature_description": "Ag brabhsÃĄil grianghraif agus físeÃĄin grÃēpÃĄilte de rÊir topaicí clibeanna loighciÃēla", + "tag_not_found_question": "Ní fÊidir clib a aimsiÃē? Cruthaigh clib nua.", + "tag_people": "Daoine a ChlibeÃĄil", + "tag_updated": "Clib nuashonraithe: {tag}", + "tagged_assets": "ClibeÃĄilte {count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}}", + "tags": "Clibeanna", + "tap_to_run_job": "TapÃĄil chun an post a rith", + "template": "TeimplÊad", + "text_recognition": "Aitheantas tÊacs", + "theme": "TÊama", + "theme_selection": "Rogha tÊama", + "theme_selection_description": "Socraigh an tÊama go huathoibríoch go geal nÃŗ dorcha bunaithe ar rogha chÃŗrais do bhrabhsÃĄlaí", + "theme_setting_asset_list_storage_indicator_title": "TaispeÃĄin tÃĄscaire stÃŗrÃĄla ar thíleanna sÃŗcmhainní", + "theme_setting_asset_list_tiles_per_row_title": "Líon na sÃŗcmhainní in aghaidh an rÃŗ ({count})", + "theme_setting_colorful_interface_subtitle": "Cuir an dath príomhÃēil i bhfeidhm ar dhromchlaí cÃēlra.", + "theme_setting_colorful_interface_title": "ComhÊadan ildaite", + "theme_setting_image_viewer_quality_subtitle": "Coigeartaigh cÃĄilíocht an bhreathnÃŗra íomhÃĄ mionsonraithe", + "theme_setting_image_viewer_quality_title": "CÃĄilíocht breathnÃŗra íomhÃĄ", + "theme_setting_primary_color_subtitle": "Roghnaigh dath do phríomhghníomhartha agus do bhÊimnithe.", + "theme_setting_primary_color_title": "Dath príomhÃēil", + "theme_setting_system_primary_color_title": "ÚsÃĄid dath an chÃŗrais", + "theme_setting_system_theme_switch": "Uathoibríoch (Lean socruithe an chÃŗrais)", + "theme_setting_theme_subtitle": "Roghnaigh socrÃē tÊama an aip", + "theme_setting_three_stage_loading_subtitle": "D’fhÊadfadh luchtÃē trí chÊim feidhmíocht an luchtaithe a mhÊadÃē ach bíonn ualach líonra i bhfad níos airde mar thoradh air", + "theme_setting_three_stage_loading_title": "Cumasaigh luchtÃē trí chÊim", + "they_will_be_merged_together": "Cuirfear le chÊile iad", + "third_party_resources": "Acmhainní TríÃē PÃĄirtí", + "time": "Am", + "time_based_memories": "Cuimhní cinn atÃĄ bunaithe ar am", + "time_based_memories_duration": "Líon na soicindí chun gach íomhÃĄ a thaispeÃĄint.", + "timeline": "Amlíne", + "timezone": "Crios ama", + "to_archive": "Cartlann", + "to_change_password": "Athraigh an focal faire", + "to_favorite": "Is fearr leat", + "to_login": "LogÃĄil Isteach", + "to_multi_select": "chun ilroghnÃē", + "to_parent": "TÊigh chuig tuismitheoir", + "to_select": "a roghnÃē", + "to_trash": "Bruscar", + "toggle_settings": "Socruithe a scorÃĄnaigh", + "toggle_theme_description": "TÊama a scorÃĄnaigh", + "total": "IomlÃĄn", + "total_usage": "ÚsÃĄid iomlÃĄn", + "trash": "Bruscar", + "trash_action_prompt": "{count} bogtha chuig an mbruscar", + "trash_all": "Bruscar Uile", + "trash_count": "Bruscar {count, number}", + "trash_delete_asset": "Bruscar/Scrios SÃŗcmhainn", + "trash_emptied": "Bruscar folamh", + "trash_no_results_message": "Beidh grianghraif agus físeÃĄin atÃĄ scriosta le feiceÃĄil anseo.", + "trash_page_delete_all": "Scrios Gach Rud", + "trash_page_empty_trash_dialog_content": "Ar mhaith leat do shÃŗcmhainní bruscair a fholmhÃē? Bainfear na míreanna seo go buan as Immich", + "trash_page_info": "Scriosfar míreanna atÃĄ curtha sa bhruscar go buan tar Êis {days} lÃĄ", + "trash_page_no_assets": "Gan aon sÃŗcmhainní bruscar", + "trash_page_restore_all": "AthchÃŗirigh Gach Rud", + "trash_page_select_assets_btn": "Roghnaigh sÃŗcmhainní", + "trash_page_title": "Bruscar ({count})", + "trashed_items_will_be_permanently_deleted_after": "Scriosfar míreanna atÃĄ curtha sa bhruscar go buan i ndiaidh {days, plural, one {# lÃĄ} other {# laethanta}}.", + "troubleshoot": "Fabhtcheartaigh", + "type": "CineÃĄl", + "unable_to_change_pin_code": "Ní fÊidir an cÃŗd PIN a athrÃē", + "unable_to_check_version": "Ní fÊidir leagan an aip nÃĄ an fhreastalaí a sheiceÃĄil", + "unable_to_setup_pin_code": "Ní fÊidir cÃŗd PIN a shocrÃē", + "unarchive": "Díchartlannaigh", + "unarchive_action_prompt": "Baineadh {count} as an gCartlann", + "unarchived_count": "{count, plural, other {Díchartlannaithe #}}", + "undo": "Cuir ar ceal", + "unfavorite": "Bain de na cinn is fearr leat", + "unfavorite_action_prompt": "Baineadh {count} as na CeanÃĄin", + "unhide_person": "Nocht an duine", + "unknown": "Anaithnid", + "unknown_country": "Tír Anaithnid", + "unknown_year": "Bliain Anaithnid", + "unlimited": "Gan teorainn", + "unlink_motion_video": "Dínasc físeÃĄn gluaisne", + "unlink_oauth": "Dínasc OAuth", + "unlinked_oauth_account": "Cuntas OAuth neamhnasctha", + "unmute_memories": "Díbholg Cuimhní", + "unnamed_album": "Albam Gan Ainm", + "unnamed_album_delete_confirmation": "An bhfuil tÃē cinnte gur mian leat an t-albam seo a scriosadh?", + "unnamed_share": "Comhroinn Gan Ainm", + "unsaved_change": "AthrÃē neamhshÃĄbhÃĄilte", + "unselect_all": "Díroghnaigh gach rud", + "unselect_all_duplicates": "Díroghnaigh gach dÃēblach", + "unselect_all_in": "Díroghnaigh gach rud i {group}", + "unstack": "Dí-chruachadh", + "unstack_action_prompt": "{count} gan chruachadh", + "unstacked_assets_count": "Gan chruachadh {count, plural, one {# sÃŗcmhainn} other {# sÃŗcmhainní}}", + "untagged": "Gan Chlib", + "up_next": "Ar aghaidh", + "update_location_action_prompt": "Nuashonraigh suíomh na sÃŗcmhainní roghnaithe {count} le:", + "updated_at": "Nuashonraithe", + "updated_password": "Pasfhocal nuashonraithe", + "upload": "UaslÃŗdÃĄil", + "upload_action_prompt": "{count} i scuaine le haghaidh uaslÃŗdÃĄla", + "upload_concurrency": "UaslÃŗdÃĄil comhthrÃĄthacht", + "upload_details": "Sonraí UaslÃŗdÃĄla", + "upload_dialog_info": "Ar mhaith leat cÃēltaca den ShÃŗcmhainn/na SÃŗcmhainní roghnaithe a dhÊanamh chuig an bhfreastalaí?", + "upload_dialog_title": "UaslÃŗdÃĄil SÃŗcmhainn", + "upload_errors": "UaslÃŗdÃĄil críochnaithe le {count, plural, one {# earrÃĄid} other {# earrÃĄidí}}, athnuachan an leathanach chun sÃŗcmhainní uaslÃŗdÃĄla nua a fheiceÃĄil.", + "upload_finished": "UaslÃŗdÃĄil críochnaithe", + "upload_progress": "FÃĄgtha {remaining, number} - PrÃŗiseÃĄilte {processed, number}/{total, number}", + "upload_skipped_duplicates": "ScipeÃĄilte {count, plural, one {# sÃŗcmhainn dhÃēblach} other {# sÃŗcmhainní dÃēblacha}}", + "upload_status_duplicates": "DÃēblaigh", + "upload_status_errors": "EarrÃĄidí", + "upload_status_uploaded": "UaslÃŗdÃĄilte", + "upload_success": "UaslÃŗdÃĄil rathÃēil, athnuachan an leathanach chun sÃŗcmhainní uaslÃŗdÃĄla nua a fheiceÃĄil.", + "upload_to_immich": "UaslÃŗdÃĄil chuig Immich ({count})", + "uploading": "Ag uaslÃŗdÃĄil", + "uploading_media": "Ag uaslÃŗdÃĄil meÃĄn", + "url": "URL", + "usage": "ÚsÃĄid", + "use_biometric": "ÚsÃĄid bithmhÊadrach", + "use_current_connection": "bain ÃēsÃĄid as an nasc reatha", + "use_custom_date_range": "ÚsÃĄid raon dÃĄta saincheaptha ina ionad", + "user": "ÚsÃĄideoir", + "user_has_been_deleted": "Scriosadh an t-ÃēsÃĄideoir seo.", + "user_id": "Aitheantas ÚsÃĄideora", + "user_liked": "Thaitin {user} leis {type, select, photo {an grianghraf seo} video {an físeÃĄn seo} asset {an tsÃŗcmhainn seo} other {Ê}}", + "user_pin_code_settings": "CÃŗd PIN", + "user_pin_code_settings_description": "Bainistigh do chÃŗd PIN", + "user_privacy": "PríobhÃĄideacht ÚsÃĄideora", + "user_purchase_settings": "Ceannaigh", + "user_purchase_settings_description": "Bainistigh do cheannachÃĄn", + "user_role_set": "Socraigh {user} mar {role}", + "user_usage_detail": "Sonraí ÃēsÃĄide ÃēsÃĄideora", + "user_usage_stats": "Staitisticí ÃēsÃĄide cuntais", + "user_usage_stats_description": "FÊach ar staitisticí ÃēsÃĄide cuntais", + "username": "Ainm ÃēsÃĄideora", + "users": "ÚsÃĄideoirí", + "users_added_to_album_count": "Cuireadh {count, plural, one {# ÃēsÃĄideoir} other {# ÃēsÃĄideoirí}} leis an albam", + "utilities": "FÃŗntais", + "validate": "BailíochtÃē", + "validate_endpoint_error": "Cuir isteach URL bailí le do thoil", + "variables": "AthrÃŗga", + "version": "Leagan", + "version_announcement_closing": "Do chara, Alex", + "version_announcement_message": "Haigh a chairde! TÃĄ leagan nua de Immich ar fÃĄil. Glac roinnt ama le do thoil chun na nÃŗtaí scaoilte a lÊamh lena chinntiÃē go bhfuil do shocrÃē cothrom le dÃĄta chun aon mhíchumraíochtaí a chosc, go hÃĄirithe mÃĄ ÃēsÃĄideann tÃē WatchTower nÃŗ aon mheicníocht a lÃĄimhseÃĄlann nuashonrÃē uathoibríoch ar d'eispÊireas Immich.", + "version_history": "Stair Leagan", + "version_history_item": "SuiteÃĄladh {version} ar {date}", + "video": "FíseÃĄn", + "video_hover_setting": "Seinn mionsamhail físe ar an luchÃŗg", + "video_hover_setting_description": "Seinn mionsamhail físe nuair a bhíonn an luch ag luascadh thar an mír. FiÃē nuair atÃĄ sÊ díchumasaithe, is fÊidir athsheinm a thosÃē tríd an luch a luascadh thar an deilbhín seinnte.", + "videos": "FíseÃĄin", + "videos_count": "{count, plural, one {# FíseÃĄn} other {# FíseÃĄin}}", + "view": "Amharc", + "view_album": "FÊach ar an Albam", + "view_all": "FÊach ar Gach Rud", + "view_all_users": "FÊach ar gach ÃēsÃĄideoir", + "view_asset_owners": "FÊach ar ÃēinÊirí sÃŗcmhainní", + "view_details": "FÊach Sonraí", + "view_in_timeline": "FÊach san amlíne", + "view_link": "FÊach ar an nasc", + "view_links": "FÊach naisc", + "view_name": "Amharc", + "view_next_asset": "FÊach ar an gcÊad tsÃŗcmhainn eile", + "view_previous_asset": "FÊach ar an tsÃŗcmhainn roimhe seo", + "view_qr_code": "FÊach ar an gcÃŗd QR", + "view_similar_photos": "FÊach ar ghrianghraif chomhchosÃēla", + "view_stack": "FÊach ar an gCruach", + "view_user": "FÊach ar an ÚsÃĄideoir", + "viewer_remove_from_stack": "Bain den Chruach", + "viewer_stack_use_as_main_asset": "ÚsÃĄid mar PhríomhshÃŗcmhainn", + "viewer_unstack": "Dí-Chruach", + "visibility_changed": "Athraíodh infheictheacht do {count, plural, one {# duine} other {# daoine}}", + "waiting": "Ag fanacht", + "waiting_count": "Ag fanacht: {count}", + "warning": "Rabhadh", + "week": "Seachtain", + "welcome": "FÃĄilte", + "welcome_to_immich": "FÃĄilte go hImmich", + "width": "Leithead", + "wifi_name": "Ainm Wi-Fi", + "workflow": "Sreabhadh Oibre", + "wrong_pin_code": "CÃŗd PIN mícheart", + "year": "Bliain", + "years_ago": "{years, plural, one {# bliain} other {# blianta}} Ãŗ shin", + "yes": "TÃĄ", + "you_dont_have_any_shared_links": "Níl aon naisc chomhroinnte agat", + "your_wifi_name": "Ainm do Wi-Fi", + "zoom_image": "ÍomhÃĄ ZÃēmÃĄil", + "zoom_to_bounds": "ZÃēmÃĄil go dtí na teorainneacha" +} diff --git a/i18n/gl.json b/i18n/gl.json index 3aac86e684..3891577065 100644 --- a/i18n/gl.json +++ b/i18n/gl.json @@ -14,7 +14,7 @@ "add_a_location": "Engadir unha localizaciÃŗn", "add_a_name": "Engadir un nome", "add_a_title": "Engadir un título", - "add_birthday": "Engadir cumpreanos", + "add_birthday": "Engadir aniversario", "add_endpoint": "Engadir punto final", "add_exclusion_pattern": "Engadir patrÃŗn de exclusiÃŗn", "add_location": "Engadir localizaciÃŗn", @@ -74,7 +74,6 @@ "disable_login": "Desactivar inicio de sesiÃŗn", "duplicate_detection_job_description": "Executar aprendizaxe automÃĄtica nos activos para detectar imaxes similares. Depende da Busca Intelixente", "exclusion_pattern_description": "Os patrÃŗns de exclusiÃŗn permítenlle ignorar ficheiros e cartafoles ao escanear a sÃēa biblioteca. Isto Ê Ãētil se ten cartafoles que conteÃąen ficheiros que non quere importar, como ficheiros RAW.", - "external_library_management": "XestiÃŗn da biblioteca externa", "face_detection": "DetecciÃŗn de caras", "face_detection_description": "Detectar as caras nos activos usando aprendizaxe automÃĄtica. Para vídeos, sÃŗ se considera a miniatura. \"Actualizar\" (re)procesa todos os activos. \"Restablecer\" ademais borra todos os datos de caras actuais. \"Faltantes\" pon en cola os activos que aínda non foron procesados. As caras detectadas poranse en cola para o RecoÃąecemento Facial despois de completar a DetecciÃŗn de Caras, agrupÃĄndoas en persoas existentes ou novas.", "facial_recognition_job_description": "Agrupar caras detectadas en persoas. Este paso execÃētase despois de completar a DetecciÃŗn de Caras. \"Restablecer\" (re)agrupa todas as caras. \"Faltantes\" pon en cola as caras que non teÃąen unha persoa asignada.", @@ -107,17 +106,20 @@ "job_not_concurrency_safe": "Este traballo non Ê seguro para execuciÃŗn concorrente.", "job_settings": "ConfiguraciÃŗn de traballos", "job_settings_description": "Xestionar a concorrencia de traballos", - "job_status": "Estado do traballo", "jobs_delayed": "{jobCount, plural, other {# atrasados}}", "jobs_failed": "{jobCount, plural, other {# fallados}}", "library_created": "Biblioteca creada: {library}", "library_deleted": "Biblioteca eliminada", + "library_details": "Detalles da biblioteca", + "library_folder_description": "Especifique un cartafol para importar. Este cartafol, incluídos os subcartafoles, analizaranse para atopar imaxes e vídeos.", + "library_remove_exclusion_pattern_prompt": "EstÃĄ seguro de que quere eliminar este patrÃŗn de exclusiÃŗn?", "library_scanning": "Escaneo periÃŗdico", "library_scanning_description": "Configurar o escaneo periÃŗdico da biblioteca", "library_scanning_enable_description": "Activar o escaneo periÃŗdico da biblioteca", "library_settings": "Biblioteca externa", "library_settings_description": "Xestionar a configuraciÃŗn da biblioteca externa", "library_tasks_description": "Escanear bibliotecas externas en busca de activos novos e/ou modificados", + "library_updated": "Biblioteca actualizada", "library_watching_enable_description": "Vixiar bibliotecas externas para detectar cambios nos ficheiros", "library_watching_settings": "Vixilancia da biblioteca [EXPERIMENTAL]", "library_watching_settings_description": "Vixiar automaticamente os ficheiros modificados", @@ -172,6 +174,7 @@ "machine_learning_smart_search_enabled": "Activar busca intelixente", "machine_learning_smart_search_enabled_description": "Se estÃĄ desactivado, as imaxes non se codificarÃĄn para a busca intelixente.", "machine_learning_url_description": "A URL do servidor de aprendizaxe automÃĄtica. Se se proporciona mÃĄis dunha URL, intentarase con cada servidor un por un ata que un responda correctamente, en orde do primeiro ao Ãēltimo. Os servidores que non respondan ignoraranse temporalmente ata que volvan estar en liÃąa.", + "maintenance_settings": "Mantemento", "manage_concurrency": "Xestionar Concorrencia", "manage_log_settings": "Xestionar configuraciÃŗn de rexistro", "map_dark_style": "Estilo escuro", @@ -398,7 +401,6 @@ "user_restore_scheduled_removal": "Restaurar usuario - eliminaciÃŗn programada o {date, date, long}", "user_settings": "ConfiguraciÃŗn do Usuario", "user_settings_description": "Xestionar a configuraciÃŗn do usuario", - "user_successfully_removed": "Usuario {email} eliminado correctamente.", "version_check_enabled_description": "Activar comprobaciÃŗn de versiÃŗn", "version_check_implications": "A funciÃŗn de comprobaciÃŗn de versiÃŗn depende da comunicaciÃŗn periÃŗdica con github.com", "version_check_settings": "ComprobaciÃŗn de VersiÃŗn", diff --git a/i18n/gsw.json b/i18n/gsw.json index 0967ef424b..b9a0ebcab7 100644 --- a/i18n/gsw.json +++ b/i18n/gsw.json @@ -1 +1,1507 @@ -{} +{ + "about": "Über Immich", + "account": "Konto", + "account_settings": "Iistelligä", + "acknowledge": "Bestätige", + "action": "Aktion", + "action_common_update": "Aktualisiere", + "actions": "Aktione", + "active": "Aktiv", + "active_count": "Aktive:{count}", + "activity": "Aktivität", + "activity_changed": "Aktivität isch {enabled, select, true {aktiviert} other {deaktiviert}}", + "add": "AafÃŧege", + "add_a_description": "Beschriebig hinzuäzfÃŧägä", + "add_a_location": "Standort hiifÃŧege", + "add_a_name": "Name hiifÃŧege", + "add_a_title": "Titel hiifÃŧege", + "add_birthday": "Geburtsdatum hiifÃŧege", + "add_endpoint": "Endpunkt hiifÃŧege", + "add_exclusion_pattern": "Ausschlussmuster hiifÃŧege", + "add_location": "Standort hiifÃŧege", + "add_more_users": "Wiiteri Nutzer hiifÃŧege", + "add_partner": "Partner hiifÃŧege", + "add_path": "Pfad hiifÃŧege", + "add_photos": "Fotos hiifÃŧege", + "add_tag": "Tag hiifÃŧege", + "add_to": "HiifÃŧege zu â€Ļ", + "add_to_album": "Zum Album hiifÃŧege", + "add_to_album_bottom_sheet_added": "Zu {album} hiigfÃŧegt", + "add_to_album_bottom_sheet_already_exists": "Bereits in {album}", + "add_to_album_bottom_sheet_some_local_assets": "E paar lokali Dateie händ nÃļd chÃļnne zum Album hiigfÃŧegt werde", + "add_to_album_toggle": "Uswahl umschalte fÃŧr {album}", + "add_to_albums": "Zu Albe hiifÃŧege", + "add_to_albums_count": "Zu Albe hiifÃŧege ({count})", + "add_to_bottom_bar": "HiifÃŧege zu", + "add_to_shared_album": "Zum gteilte Album hiifÃŧege", + "add_upload_to_stack": "Upload zum Stapel hiifÃŧege", + "add_url": "URL hiifÃŧege", + "added_to_archive": "Zum Archiv hiigfÃŧegt", + "added_to_favorites": "Zu de Favoritä hiigfÃŧegt", + "added_to_favorites_count": "{count, number} zu de Favoritä hiigfÃŧegt", + "admin": { + "add_exclusion_pattern_description": "Ausschlussmuster hiifÃŧege. Platzhalter wie *, ** und ? werde unterstÃŧtzt. Um alli Datei in eme Verzeichnis mit em Name „Raw“ z ignoriere, „/Raw/“ verwände.\nUm alli Datei z ignoriere, wo uf „.tif“ änded, „/*.tif“ verwände. Um en absolute Pfad z ignoriere, „/pfad/zum/ignorieren/“ verwände.", + "admin_user": "Administrator", + "asset_offline_description": "Die Datei vo ere externe Bibliothek isch nÃŧmme uf de Festplatte und isch i de Papirkorb verschobe worde. Falls d’Datei i dä Bibliothek verschobe worde isch, lueg i diner Ziitliiste noch de neue entsprechende Datei. Um die Datei wiederherzstelle, sorg bitte derfÃŧr, dass Immich uf de unten aagegehene Dateipfad cha zgriffe und lass d’Bibliothek neu scanne.", + "authentication_settings": "Authentifizierigsiistellige", + "authentication_settings_description": "Passwort-, OAuth- und anderi Authentifizierigsiistellige verwalte", + "authentication_settings_disable_all": "Bisch du sicher, dass du alli Ahmäldemethode wotsch deaktiviiere? D’Aahmäldig wird komplett deaktiviert.", + "authentication_settings_reenable": "Bruuch en Server-Befehl zum Wiederaktiviiere.", + "background_task_job": "Hintergrundufgabe", + "backup_database": "Datebank-Sicherig erstelle", + "backup_database_enable_description": "Datebank regelmässig sichere", + "backup_keep_last_amount": "Aazahl vo de ältere Sicherige, wo sÃļtted ufbewahrt blibe", + "backup_onboarding_1_description": "Offsite-Kopie i de Cloud oder an eme andere physische Ort.", + "backup_onboarding_2_description": "Lokali Kopie uf verschidene Gerät. Däzu ghÃļred d’Hauptdateie und e lokali Sicherig vo däne Dateie.", + "backup_onboarding_3_description": "Kopie vo dine Date, inklusiv Originaldateie. Das umfasst 1 Kopie an eme andere Ort und 2 lokali Kopie.", + "backup_onboarding_description": "E 3-2-1 Sicherigsstrategie wird empfohlen, um dini Date z schÃŧtze. Du sÃļttisch sowohl Kopie vo dine ufegladne Fotos/Videos wie au vo de Immich-Datebank ufbewahre, um e umfangrichi SicherigslÃļsung z ha.", + "backup_onboarding_footer": "Wiiteri Informatione zum Sichere vo Immich findes du i de Dokumentation.", + "backup_onboarding_parts_title": "E 3-2-1-Sicherig umfasst:", + "backup_onboarding_title": "Sicherige", + "backup_settings": "Iistellige fÃŧr d’Datebank-Sicherig", + "backup_settings_description": "Iistellige zur regelmässige Sicherig vo de Datebank. Hinweis: Die Jobs werde nÃļd Ãŧberwacht und du wirsch nÃļd Ãŧber Fähler informiert.", + "cleared_jobs": "Folgendi Ufgabe zruggsetzt: {job}", + "config_set_by_file": "Isch aktuell i ere Konfigurationsdatei feschtlegt", + "confirm_delete_library": "Bisch du sicher, dass du d’Bibliothek {library} wotsch lÃļsche?", + "confirm_delete_library_assets": "Bisch du sicher, dass du die Bibliothek wotsch lÃļÃļsche? Das lÃļscht {count, plural, one {# enthaltigs Objekt} other {alli # enthaltige Objekt}} us Immich und chan nÃļd rÃŧckgängig gmacht werde. D’Dateie bliibe uf de Festplatt erhalte.", + "confirm_email_below": "Bestätig, indem du unne „{email}“ igisch", + "confirm_reprocess_all_faces": "Bisch du sicher, dass du alli Gsichter nomol wotsch verarbeite? Das lÃļscht au alli Persone, wo scho benennt sind.", + "confirm_user_password_reset": "Bisch du sicher, dass du s’Passwort fÃŧr {user} wotsch zruggsetze?", + "confirm_user_pin_code_reset": "Bisch du sicher, dass du de PIN-Code vo {user} wotsch zruggsetze?", + "copy_config_to_clipboard_description": "Kopier d’aktuel Systemkonfiguration als JSON-Objekt i d’ZwÃŧscheablage", + "create_job": "Ufgob erstelle", + "cron_expression": "Cron-Ziitahgob", + "cron_expression_description": "Setz s’Scan-Intervall im Cron-Format. Hilf zum Format findes du zum Bispiel bi de Setz s’Scan-Intervall im Cron-Format. Hilf zum Format findes du zum Bispiel bi de Crontab Guru.Crontab Guru.", + "cron_expression_presets": "Vorlag fÃŧr Cron-Ziitangab", + "disable_login": "Login deaktiviiere", + "duplicate_detection_job_description": "Die Ufgab fÃŧhrt s’maschinelli Lärene fÃŧr jede Datei us, um Duplikat z finde. Die Ufgab basiert uf de intelligente Suechi", + "exclusion_pattern_description": "Mit Usschlussmuster chÃļnnd Datei und Ordner bim Scanne vo diner Bibliothek ignoriert werde. Das isch nÃļÃŧtzlich, wenn du Ordner hesch, wo Datei enthalte, wo du nÃļd importiere wotsch – zum Bispiel RAW-Dateie.", + "export_config_as_json_description": "Lad d’aktuel Systemkonfiguration als JSON-Datei ab", + "external_libraries_page_description": "Externi Bibliotheksite fÃŧr Administratore", + "face_detection": "Gsichtererfassig", + "face_detection_description": "Die Ufgab erfasst Gsichter i Dateie mit maschinellem Lärne. Bi Videos wird nume d’Miniaturahsicht bruucht. „Aktualisiere“ verarbeitet alli Dateie nomol. „Zruggsetze“ setzt zusätzlich alli Gsichter zrugg. „Fählendi“ stellt nume nÃļd verarbeiteti Dateie i d’Warteschlange. Erfassti Gsichter werde derfÃŧr i d’Warteschlange gstellt, um si bi dr Gsichtsidentifizierig z’gruppiere – in bestaandi oder neu Persone.", + "facial_recognition_job_description": "Die Ufgab gruppiert nach dr Gsichtererfassig d’erfasste Gsichter zu Persone. „Zruggsetze“ gruppiert alli Gsichter nomol, während „Fählendi“ Gsichter ohni Zuordnig i d’Warteschlange stellt.", + "failed_job_command": "Befähl {command} isch fÃŧr d’Ufgab {job} gscheitert", + "force_delete_user_warning": "WARNIG: Diä Aktion lÃļscht de Benutzer grad sofort und alli sini Dateie. Das cha nÃļd rÃŧckgängig gmacht werde und d’Dateie chÃļi nÃļd widerherstellt werde.", + "image_format": "Format", + "image_format_description": "WebP produziert chliinere Dateie als JPEG, isch aber es bitz langsamer bim Erstelle.", + "image_fullsize_description": "HochuflÃļsends Bild mit entfernte Metadate, wo bim Zoome bruucht wird", + "image_fullsize_enabled": "HochuflÃļsendi Vorschaubilder aktiviere", + "image_fullsize_enabled_description": "Generier hochuflÃļsendi Vorschaubilder i OriginaluflÃļsig fÃŧr nÃļd web-kompatibli Formate. Wenn „Iigbetteti Vorschau bevorzugt“ aktiviert isch, werde iigbetteti Vorschaubilder direkt bruucht. Het kei Einfluss uf web-kompatibli Formate wie JPEG.", + "image_fullsize_quality_description": "Qualität vo de hochuflÃļsende Vorschaubilder vo 1–100. HÃļcher isch besser, erzeugt aber grÃļsseri Dateie.", + "image_fullsize_title": "Iistellige fÃŧr hochuflÃļsendi Vorschau", + "image_prefer_embedded_preview": "Iigbetteti Vorschau bevorzugä", + "image_prefer_embedded_preview_setting_description": "Verwänd iigbetteti Vorschaubilder i RAW-Fotos als Grundlag fÃŧr d’Bildverarbeitig, wenn die verfÃŧgbar sind. Das cha bi gewisse Bilder genaueri Farä ergäh, aber d’Qualität vo dr Vorschau isch kameraabhängig und s’Bild cha meh Kompressionsartefakt ufwiise.", + "image_prefer_wide_gamut": "Breits Spektrum bevorzugä", + "image_prefer_wide_gamut_setting_description": "Verwendig vo Display P3 (DCI-P3) fÃŧr Miniaturahsichte. Dadurch bliibt d’Lebendigkeit vo Bilder mit breite FarbrÃļim besser erhalte, aber d’Bilder chÃļi uf ältere Gerät mit ere ältere Browserversion es bitz anders uusgseh. sRGB-Bilder werde im sRGB-Format belaah, um FarbschÃŧebe z vermeide.", + "image_preview_description": "Mittelgrosses Bild mit entfernte Metadate, wo bim Aaluegä vo ere einzelne Datei und fÃŧrs maschinelli Lärne bruucht wird", + "image_preview_quality_description": "Vorschauqualität vo 1–100. En hÃļcherer Wert isch besser, erzeugt aber grÃļsseri Dateie und cha d’Reaktionsfähigkait vo dr App beeinträchtige. En tieferer Wert cha hingegen d’Qualität vom maschinelle Lärne beeinträchtige.", + "image_preview_title": "Vorschauiistellige", + "image_quality": "Qualität", + "image_resolution": "UuflÃļsig", + "image_resolution_description": "HÃļcheri UflÃļsige chÃļi meh Detail erhalte, bruuched aber meh Ziit fÃŧr d’Kodierig, hei grÃļsseri DateigrÃļssi und chÃļi d’Reaktionsfähigkait vo Applikatione beeinträchtige.", + "image_settings": "Bildiistellige", + "image_settings_description": "Qualität und UflÃļsig vo generierte Bilder verwalte", + "image_thumbnail_description": "Chliini Miniaturahsicht mit entfernte Metadate, wo bi dr Aazeig vo Fotosammlige wie dr Ziitliiste bruucht wird", + "image_thumbnail_quality_description": "Qualität vo dr Miniaturahsicht vo 1–100. HÃļcher isch besser, erzeugt aber grÃļsseri Dateie und cha d’Reaktionsfähigkait vo dr App beeinträchtige.", + "image_thumbnail_title": "Miniaturahsicht-Iistellige", + "import_config_from_json_description": "Importier d’Systemkonfiguration, indem du e JSON-Konfigurationsdatei ufladsch", + "job_concurrency": "{job} (Aazahl gliichziitig laufendi Prozäss)", + "job_created": "Ufgab erstellt", + "job_not_concurrency_safe": "Die Ufgab isch nÃļd parallelisierigssicher.", + "job_settings": "Ufgabiistellige", + "job_settings_description": "D’gliichziitigi UusfÃŧerig vo Ufgabe verwalte", + "jobs_delayed": "{jobCount, plural, other {# verzÃļgeret}}", + "jobs_failed": "{jobCount, plural, other {# gschiiteret}}", + "jobs_over_time": "Jobs im Lauf vo dr Ziit", + "library_created": "Bibliothek erstellt: {library}", + "library_deleted": "Bibliothek glÃļscht", + "library_details": "Bibliotheksdetails", + "library_folder_description": "Gib en Ordner aa zum Importiere. Däre Ordner wird inklusiv alli Underordner nach Bilder und Videos dÃŧrgsuecht.", + "library_remove_exclusion_pattern_prompt": "Bisch du sicher, dass du dies Ausschlussmuster wotsch entferne?", + "library_remove_folder_prompt": "Bisch du sicher, dass du dä Import-Ordner wotsch entferne?", + "library_scanning": "Periodisches Scanne", + "library_scanning_description": "Regelmässigs DÃŧrgsueche vo dr Bibliothek iistelle", + "library_scanning_enable_description": "Regelmässigs Scanne vo dr Bibliothek aktiviere", + "library_settings": "Externi Bibliothek", + "library_settings_description": "Iistellige vo externe Bibliotheke verwalte", + "library_tasks_description": "PrÃŧef externe Bibliotheke uf neui und/oder veränderti Medie", + "library_updated": "Aktualisierti Bibliothek", + "library_watching_enable_description": "Überwach externi Bibliotheke uf Dateiänderige", + "library_watching_settings": "Überwach Bibliothek [EXPERIMENTELL]", + "library_watching_settings_description": "Automatisch uf gändereti Dateie prÃŧefe", + "logging_enable_description": "Aktivierä Logging", + "logging_level_description": "Wenn aktiviert, weles Log-Level bruucht wird.", + "logging_settings": "Protokollierig", + "machine_learning_availability_checks": "VerfÃŧgbarkeitschecks", + "machine_learning_availability_checks_description": "VerfÃŧegbari Machine-Learning-Server erkenne und bevorzuuge", + "machine_learning_availability_checks_enabled": "VerfÃŧgbarkeits-Checks iischalte", + "machine_learning_availability_checks_interval": "ÜberprÃŧefigsintervall", + "machine_learning_availability_checks_interval_description": "Interval i Millisekunde zwÃŧsche VerfÃŧgbarkeits-Checks", + "machine_learning_availability_checks_timeout": "Aafrags-ZiitÃŧberschrittig", + "machine_learning_availability_checks_timeout_description": "ZiitÃŧberschrittig i Millisekunde fÃŧr VerfÃŧgbarkeits-Checks", + "machine_learning_clip_model": "CLIP-Modell", + "machine_learning_clip_model_description": "Der Name eines CLIP-Modells, welches hier aufgefÃŧhrt ist. Beachte, dass du die Aufgabe \"Intelligente Suche\" fÃŧr alle Bilder erneut ausfÃŧhren musst, wenn du das Modell wechselst.", + "machine_learning_duplicate_detection": "Duplikaterkennig", + "machine_learning_duplicate_detection_enabled": "Duplikaterkennung aktivierä", + "machine_learning_duplicate_detection_enabled_description": "Wenn die Option deaktiviert isch, werde exakt identischi Dateie denoch de-dupliziert.", + "machine_learning_duplicate_detection_setting_description": "Verwendig vo CLIP-Embeddings zum Erkenne vo mÃļglicke Duplikate", + "machine_learning_enabled": "Maschinells Lärne aktivierä", + "machine_learning_enabled_description": "Wenn die Option deaktiviert isch, werde alli ML-Funktione unabhäng vo de unten ufgfÃŧhrte Iistellige deaktiviert.", + "machine_learning_facial_recognition": "Gsichtererkennig", + "machine_learning_facial_recognition_description": "Erfass, identifizier und gruppier Gsichter i Bilder", + "machine_learning_facial_recognition_model": "Gsichtererkenigs-Modell", + "machine_learning_facial_recognition_model_description": "D’Modell sind i absteigender Räihefolg vo ihrer GrÃļssi ufgfÃŧhrt. GrÃļsseri Modell sind langsamer und bruuched meh Speicher, liefere aber besseri Resultat. Bitte beachte, dass du d’Gsichtererfassigs-Ufgab fÃŧr alli Bilder nomol starte muesch, wenn du s’Modell wächselsch.", + "machine_learning_facial_recognition_setting": "Gsichtererkennig aktiviere", + "machine_learning_facial_recognition_setting_description": "Wenn die Option deaktiviert isch, werde d’Bilder nÃļd fÃŧr d’Gsichtererkenig kodiert und dr Abschnitt „Persone“ uf dr „Erchunde“-Site wird nÃļd azeigt.", + "machine_learning_max_detection_distance": "Maximaler Erfassigsabstand", + "machine_learning_max_detection_distance_description": "Maximaler Underschid zwÃŧsche zwei Bilder, um si als Duplikat z betrachtä – i enem Bereich vo 0.001 bis 0.1. Bi hÃļcherne Wert werde meh Duplikate erkennt, aber es cha zu falsch positive Resultat cho.", + "machine_learning_max_recognition_distance": "Maximaler Erkennigsabstand", + "machine_learning_max_recognition_distance_description": "Maximaler Abstand zwÃŧsche zwei Gsichter, wo als di gliichi Person aagluegt werde — vo 0 bis 2. En tÃŧÃŧfere Wert cha verhindere, dass zwei Persone als di gliichi Person igstuft werde, während en hÃļcherer Wert cha verhindere, dass di gliichi Person als zwei verschideni Persone igstuft wird. Bitte beachte: Es isch einfacher, zwei Persone zämmezfÃŧehre als eini Person wieder z trenne — drum nimm, wenn mÃļglech, en tieferer Schwellenwert.", + "machine_learning_min_detection_score": "Mindest-Erfassigswert", + "machine_learning_min_detection_score_description": "Minimali Konfidenzrate fÃŧr d’Erfassig vo enem Gsicht vo 0–1. Bi tieferne Wert werde meh Gsichter erfasst, aber es cha zu falsch positive Resultat cho.", + "machine_learning_min_recognized_faces": "Mindescht erkannnti Gsichter", + "machine_learning_min_recognized_faces_description": "D’Mindestazahl vo erkannnte Gsichter, die nÃļtig isch, damit e Person erstellt cha werde. En hÃļcherer Wert macht d’Gsichtererkenig präziser, aber erhÃļht d’Wahrschindlechkeit, dass es Gsicht keiner Person zueordnet wird.", + "machine_learning_ocr": "OCR", + "machine_learning_ocr_description": "Maschinells Lärne bruuchen, um Text i Bilder z erkenne", + "machine_learning_ocr_enabled": "OCR aktivierä", + "machine_learning_ocr_enabled_description": "Wenn deaktiviert, werde d’Bilder nÃļd vo dr Texterkenig bearbeitet.", + "machine_learning_ocr_max_resolution": "Maximali UflÃļsig", + "machine_learning_ocr_max_resolution_description": "Vorschau, wo Ãŧber däre UflÃļsig liit, wird unter Bibehalte vom Seitenverhältnis chliiner gmacht. HÃļcheri Wert sind genauer, bruuched aber meh Ziit fÃŧr d’Verarbeitig und meh Speicher.", + "machine_learning_ocr_min_detection_score": "Mindescht-Erfassigswert", + "machine_learning_ocr_min_detection_score_description": "Minimali Konfidenzrate fÃŧr d’Texterkenig vo 0–1. Tieferi Wert fÃŧhrt derzue, dass meh Text erkannt wird, cha aber zu falsch positive Resultat fÃŧhre.", + "machine_learning_ocr_min_recognition_score": "Mindescht-Erkennigswert", + "machine_learning_ocr_min_score_recognition_description": "Minimali Konfidenzrate fÃŧr d’Erkenig vo erkanntem Text vo 0–1. Tieferi Wert fÃŧhrt derzue, dass meh Text erkannt wird, cha aber zu falsch positive Resultat fÃŧhre.", + "machine_learning_ocr_model": "OCR Modäll", + "machine_learning_ocr_model_description": "Server-Modelle sind genauer als mobil Modell, bruuched aber länger zur Verarbeitig und meh Speicher.", + "machine_learning_settings": "Iistelligä fÃŧrs maschinelli Lärne", + "machine_learning_settings_description": "Funktione und Iistellige vom maschinelle Lärne verwalte", + "machine_learning_smart_search": "Intelligenti Suechi", + "machine_learning_smart_search_description": "Semantischi Bildsuächi mit CLIP-Iibettige", + "machine_learning_smart_search_enabled": "Intelligenti Suechi aktiviere", + "machine_learning_smart_search_enabled_description": "Wenn die Option deaktiviert isch, werde d’Bilder nÃļd fÃŧr d’intelligenti Suechi bruucht.", + "machine_learning_url_description": "D’URL vom Server fÃŧrs maschinelli Lärne. Wenn meh als eini URL aagee wird, wird jeder Server einzeln usprobiert, bis einer erfolgrich antwortet – und zwar i dr Räihäfolg vom erschte bis zum letschte. Server, wo nÃļd antworted, werde vorÃŧbergehend ignoriert, bis si wieder verfÃŧgbar sind.", + "maintenance_settings": "Wartig", + "maintenance_settings_description": "Immich i de Wartigsmodus versetze.", + "maintenance_start": "Wartigsmodus startä", + "maintenance_start_error": "Wartigsmodus het nÃļd chÃļnne gstartet werde.", + "manage_concurrency": "Gliichziitigi UusfÃŧerig verwalte", + "manage_concurrency_description": "Gang zur Job-Site, um d’Job-Parallelität z verwalte", + "manage_log_settings": "Log-Iistellige verwalte", + "map_dark_style": "Dunkle Stil", + "map_enable_description": "Chartefunktion aktiviere", + "map_gps_settings": "Charte- & GPS-Iistellige", + "map_gps_settings_description": "Charte- & GPS-Iistellige verwalte", + "map_implications": "D’Chartefunktion bruucht en externe Tile-Service (tiles.immich.cloud)", + "map_light_style": "Helle Stil", + "map_manage_reverse_geocoding_settings": "Iistellige fÃŧr d’umgekehrti Geokodierig verwalte", + "map_reverse_geocoding": "Umkherti Geokodierig", + "map_reverse_geocoding_enable_description": "Umkherti Geokodierig aktivere", + "map_reverse_geocoding_settings": "Iistelligä fÃŧr umkherti Geokodierig", + "map_settings": "Charte", + "map_settings_description": "Charte- und GPS-Iistellige verwalte", + "map_style_description": "URL zu enem style.json-Karte-Theme", + "memory_cleanup_job": "Erinnerige ufrumä", + "memory_generate_job": "Erinnerige-Generierig", + "metadata_extraction_job": "Metadate extrahiere", + "metadata_extraction_job_description": "Metadate extrahiere, wie zum Bispiel GPS, Gsichter und UflÃļsig us jede Datei", + "metadata_faces_import_setting": "Import vo Gsichter aktiviere", + "metadata_faces_import_setting_description": "Gsichter us EXIF-Dateie vom Bild und Sidecar-Dateie importiere", + "metadata_settings": "Metadate-Iistellige", + "metadata_settings_description": "Metadate-Iistellige verwalte", + "migration_job": "Migration", + "migration_job_description": "Die Ufgab migriert Miniaturahsicht fÃŧr Dateie und Gsichter i d’neuschte Ordnerstruktur", + "nightly_tasks_cluster_faces_setting_description": "Gsichteridentifizierig uf neu erfasste Gsichter usfÃŧehre", + "nightly_tasks_cluster_new_faces_setting": "Neu Gsichter gruppiere", + "nightly_tasks_database_cleanup_setting": "Datebank-Bereinigigs-Ufgob", + "nightly_tasks_database_cleanup_setting_description": "Alti, abglaufeni Date us dr Datebank bereinige", + "nightly_tasks_generate_memories_setting": "Erinnerige generiere", + "nightly_tasks_generate_memories_setting_description": "Neui Erinnerige us Dateie erstelle", + "nightly_tasks_missing_thumbnails_setting": "Fählendi Miniaturahsicht generiere", + "nightly_tasks_missing_thumbnails_setting_description": "Dateie ohni Miniaturahsicht i d’Warteschlange zur Miniaturahsicht-Generierig hiifÃŧege", + "nightly_tasks_settings": "Iistellige fÃŧr nächtligi Ufgobe", + "nightly_tasks_settings_description": "Nächtlichi Ufgabe verwalte", + "nightly_tasks_start_time_setting": "Startziit", + "nightly_tasks_start_time_setting_description": "D’Ziit, zu der dr Server mit dr UusfÃŧerig vo de nächtlige Ufgabe beginnt", + "nightly_tasks_sync_quota_usage_setting": "Kontingentnutzig synchronisiere", + "nightly_tasks_sync_quota_usage_setting_description": "Benutzer-Speicherkontingent basierend uf dr aktuälle Nutzung aktualisiere", + "no_paths_added": "Kei Pfad hiigfÃŧegt", + "no_pattern_added": "Keis Usschlussmuster hiigfÃŧegt", + "note_apply_storage_label_previous_assets": "Hiwiis: Um dr Speicherpfad uf d’vorhär ufgeladene Dateie aazwände, starte dr", + "note_cannot_be_changed_later": "HINWEIS: Das cha spÃļter nÃŧmme gänderet werde!", + "notification_email_from_address": "Absenderadresse", + "notification_email_from_address_description": "E-Mail-Adrässe vom Sender, zum Bispiel: \"Immich Photo Server noreply@example.com\". Stell sicher, dass du e Adrässe bruuchsch, wo du berechtigt bisch z bruuchä.", + "notification_email_host_description": "Host vom E-Mail-Server (z.B. smtp.immich.app)", + "notification_email_ignore_certificate_errors": "Zertifikats-Fähler ignoriere", + "notification_email_ignore_certificate_errors_description": "TLS-Zertifikatsvalidierig-Fähler ignoriere (nÃļd empfehlenswert)", + "notification_email_password_description": "Passwort fÃŧr d’Aahmäldig am E-Mail-Server", + "notification_email_port_description": "Port vom E-Mail-Server (z.B. 25, 465 oder 587)", + "notification_email_secure": "SMTPS", + "notification_email_secure_description": "Benutze SMTPS (SMTP Ãŧber TLS)", + "notification_email_sent_test_email_button": "Test-E-Mail verschicke und speichere", + "notification_email_setting_description": "Iistellige fÃŧr E-Mail-Benachrichtigige", + "notification_email_test_email": "Test-E-Mail sende", + "notification_email_test_email_failed": "D’Test-E-Mail het nÃļd chenne verschickt werde, bitte prÃŧef dini Ahgobe", + "notification_email_test_email_sent": "Es isch e Test-E-Mail an {email} verschickt worde. Bitte prÃŧef din Posteingang.", + "notification_email_username_description": "Benutzername, wo bi dr Aahmäldig am E-Mail-Server bruucht wird", + "notification_enable_email_notifications": "E-Mail-Benochrichtigige aktiviere", + "notification_settings": "Benochrichtigigs-Iistellige", + "notification_settings_description": "Benochrichtigigs-Iistellige (inkl. E-Mail) verwalte", + "oauth_auto_launch": "Auto-Start", + "oauth_auto_launch_description": "Automatischer Start vom OAuth-Aahmäldvorgang bim Ufruäfä vo dr Aahmäldigs-Site", + "oauth_auto_register": "Automatischi Registrierig", + "oauth_auto_register_description": "Automatischi Registrierig vo neue Benutzer nach dr OAuth-Aahmäldig", + "oauth_button_text": "Button-Text", + "oauth_client_secret_description": "Erforderlich, wenn PKCE (Proof Key for Code Exchange) nÃļd vom OAuth-Anbieter unterstÃŧtzt wird", + "oauth_enable_description": "Ahmeldig mit OAuth", + "oauth_mobile_redirect_uri": "Mobile Umleitigs-URI", + "oauth_mobile_redirect_uri_override": "Mobile Umleitigs-URI Ãŧberschriebe", + "oauth_mobile_redirect_uri_override_description": "Iischalte, wenn dr OAuth-Anbieter kei mobile URI wie „{callback}“ erlaubt", + "oauth_role_claim": "Rolle-Claim", + "oauth_role_claim_description": "Gib automatisch Admin-Zugriff basierend uf s’Vorhande si vo däm Claim. Dr Claim cha entweder „user“ oder „admin“ si.", + "oauth_settings": "OAuth", + "oauth_settings_description": "OAuth-Aahmäldigs-Iistellige verwalte", + "oauth_settings_more_details": "Wiiteri Informatione zu däre Funktion findsch du i de Dokumentation.", + "oauth_storage_label_claim": "Speicherpfad-Bezeichnig", + "oauth_storage_label_claim_description": "D’Speicherpfad-Bezeichnig vom Benutzer automatisch uf dr Wert vo däre Ahgob setze.", + "oauth_storage_quota_claim": "Speicherkontingentahgob", + "oauth_storage_quota_claim_description": "Setz s’Speicherkontingent vom Benutzer automatisch uf dr ahgebeni Wert.", + "oauth_storage_quota_default": "Standard-Speicherplatz-Kontingent (GiB)", + "oauth_storage_quota_default_description": "Kontingent i GiB, wo bruucht wird, wenn keins Ãŧbermittelt wird.", + "oauth_timeout": "ZiitÃŧberschrittig bi Aafrog", + "oauth_timeout_description": "ZiitÃŧberschrittig fÃŧr Aafroge i Millisekunde", + "ocr_job_description": "Bruuch Machine Learning zur Erkenig vo Text i Bilder", + "password_enable_description": "Mit E-Mail und Passwort aahmälde", + "password_settings": "Passwort-Aahmeldig", + "password_settings_description": "Passwort-Aahmäldigs-Iistellige verwalte", + "paths_validated_successfully": "Alli Pfad erfolgrich prÃŧeft", + "person_cleanup_job": "Persone ufrumä", + "queue_details": "Warteschlangedetails", + "queues": "Uuftrags-Warteschlange", + "queues_page_description": "Uuftragswarteschlange-Adminsiite", + "quota_size_gib": "Kontingent (GiB)", + "refreshing_all_libraries": "Alli Bibliotheke aktualisierä", + "registration": "Admin-Regischtrierig", + "registration_description": "Da du dr erschte Benutzer im System bisch, wird dir d’Rolle vom Administrator zuegwise, womit du fÃŧr d’Verwaltigs-Ufgabe verantwortlich bisch. Wiiteri Benutzer werde vo dir erstellt.", + "remove_failed_jobs": "Gscheitereti Ufgabe entferne", + "require_password_change_on_login": "Benutzer mues s’Passwort bim erschte Login ändere", + "reset_settings_to_default": "Iistellige uf Standard zruggsetze", + "reset_settings_to_recent_saved": "Iistellige uf d’letzt gespeicherte Iistellige zruggsetze", + "scanning_library": "Bibliothek scanne", + "search_jobs": "Suechufgobeâ€Ļ", + "send_welcome_email": "BegrÃŧssigsmail sende", + "server_external_domain_settings": "Externi Domain", + "server_external_domain_settings_description": "Domäne fÃŧr Ãļffentlich freigäbeni Links, inkl. http(s)://", + "server_public_users": "Öffentlichi Benutzer", + "server_public_users_description": "Beim HiifÃŧege vo enem Benutzer zu fregäbeni Albene werde alli Benutzer (Name und E-Mail) ufgfÃŧhrt. Wenn die Option deaktiviert isch, isch d’Benutzerlist nume fÃŧr Administratore verfÃŧgbar.", + "server_settings": "Server-Iistellige", + "server_settings_description": "Server-Iistellige verwalte", + "server_stats_page_description": "Server-Statistik-Site fÃŧr Administratore", + "server_welcome_message": "Willkommensnochricht", + "server_welcome_message_description": "Gscheitereti Ufgobe entferne.", + "settings_page_description": "Site mit dr Admin-Iistellige", + "sidecar_job": "Sidecar Metadate", + "sidecar_job_description": "Mit däre Ufgab werde Filialdatei-Metadate im Dateisystem entdeckt oder synchronisiert", + "slideshow_duration_description": "Duur vo dr Aazeig vo jedem Bild i Sekunde", + "smart_search_job_description": "Die Ufgob wendet s’maschinelli Lärne uf Dateie a, um d’intelligenti Suechi z ermÃļgliche", + "storage_template_date_time_description": "Dr Erstelligs-Ziitstempel vo dr Datei wird fÃŧr d’Datum- und Ziit-Information bruucht", + "storage_template_date_time_sample": "Bispiel-Ziitpunkt {date}", + "storage_template_enable_description": "Speicher-Vorlage-Engine aktiviere", + "storage_template_hash_verification_enabled": "Hash-PrÃŧefig aktiviert", + "storage_template_hash_verification_enabled_description": "Aktiviert d’Hash-Verifizierig. Deaktivier die Option nur, wenn du dir Ãŧber d’damit verbunde uuswirkige im chlare bisch", + "storage_template_migration": "Migration vo Speicher-Vorlage", + "storage_template_migration_description": "Die Ufgab wendet d’aktuel {template} uf zuvor ufgeladene Dateie a", + "storage_template_migration_info": "D’Speicher-Vorlage wird alli Dateierweiterige i Chliibuchstabe umwandle. Vorlageänderige gältet nume fÃŧr neui Dateie. Um d’Vorlage rÃŧckwirkend uf scho ufgeladeni Assets aazwände, fÃŧhr dr {job} us.", + "storage_template_migration_job": "Speicher-Vorlage-Migrations-Ufgob", + "storage_template_more_details": "Wiiteri Details zu däre Funktion findsch du unter Speicher-Vorlage und dere Implikatione", + "storage_template_onboarding_description_v2": "Wenn aktiviert, werdend Dateie automatisch nach enere benutzerdefinierte Vorlag organisiert. FÃŧr meh Informatione siehe d’Dokumentation.", + "storage_template_path_length": "Ungefähres Pfadlänge-Limit: {length, number}/{limit, number}", + "storage_template_settings": "Speichervorlag", + "storage_template_settings_description": "D’Ordnerstruktur und dr Dateiname vo dr ufgeladene Datei verwalte", + "storage_template_user_label": "{label} isch d’Speicherpfad-Bezeichnig vom Benutzer", + "system_settings": "Syschtem-Iistellige", + "tag_cleanup_job": "Tags ufrumä", + "template_email_available_tags": "Du chasch die folgende Variable i diner Vorlage bruuche: {tags}", + "template_email_if_empty": "Wenn d’Vorlage leer isch, wird d’Standard-E-Mail-Vorlag bruucht.", + "template_email_invite_album": "Iihladig zum Album", + "template_email_preview": "Vorschau", + "template_email_settings": "E-Mail-Vorlage", + "template_email_update_album": "Aktualisierts Album", + "template_email_welcome": "Willkommens-E-Mail", + "template_settings": "Benochhrichtigungsvorlage", + "template_settings_description": "Benutzerdefinierti Vorlag fÃŧr Benachrichtigige verwalte", + "theme_custom_css_settings": "Benutzerdefinierts CSS", + "theme_custom_css_settings_description": "Mit Cascading Style Sheets (CSS) cha s’Design vo Immich aapasst werde.", + "theme_settings": "Theme-Iistellige", + "theme_settings_description": "Aapassig vo dr Immich-Web-Oberflächi", + "thumbnail_generation_job": "Miniaturahsichte generiere", + "thumbnail_generation_job_description": "Die Ufgob erzÃŧÃŧgt grossi, chliini und unscharfi Miniaturahsicht fÃŧr jede einzelne Datei, sowie Miniaturahsicht fÃŧr jedi Person", + "transcoding_acceleration_api": "Beschleunigungs-API", + "transcoding_acceleration_api_description": "D’Schnittstell, wo mit em Gerät interagiert, um d’Transkodierig z beschleunige. Bi däre Iistellig handelt es sich um d’„bestmÃļglichi LÃļsig“: Bi enem Fähler wird uf d’Software-Transkodierig zrugggriffe. Abhängig vo dr bruuchte Hardware cha VP9 funktioniere oder au nÃļd.", + "transcoding_acceleration_nvenc": "NVENC (NVIDIA-GPU erforderlich)", + "transcoding_acceleration_qsv": "Quick Sync (fordert e Intel-CPU vo dr 7. Generation oder hÃļcher)", + "transcoding_acceleration_rkmpp": "RKMPP (nur bi Rockchip SOCs)", + "transcoding_acceleration_vaapi": "VAAPI", + "transcoding_accepted_audio_codecs": "Zueglasseni Audio-Codecs", + "transcoding_accepted_audio_codecs_description": "Uswahl vo de Audio-Codecs, wo nÃļd transkodiert werde mÃŧend. Wird nume fÃŧr bestimmti Transkodierigspolicies bruucht.", + "transcoding_accepted_containers": "Akzeptierte Container", + "transcoding_accepted_containers_description": "Wähl us, welche Container nÃļd zu MP4 geremuxt werde sÃļlled. Wird nume fÃŧr bestimmti Transkodierigspolicies bruucht.", + "transcoding_accepted_video_codecs": "Akzeptierte Video-Codecs", + "transcoding_accepted_video_codecs_description": "Uswahl vo de Video-Codecs, wo nÃļd transkodiert werde mÃŧend. Wird nume fÃŧr bestimmti Transkodierigspolicies bruucht.", + "transcoding_advanced_options_description": "Iistellige, wo vo de meiste Benutzer nÃļd gänderet werde mÃŧend", + "transcoding_audio_codec": "Audio-Codec", + "transcoding_audio_codec_description": "Opus isch d’hochwertigsti Option, het aber e geringeri Kompatibilität mit alte Gerät oder alte Software.", + "transcoding_bitrate_description": "Videos, wo d’maximali Bitrate Ãŧberschritte oder i enem nÃļd akzeptierte Format vorlieged", + "transcoding_codecs_learn_more": "Um meh Ãŧber d’hier bruuchte Terminologie z erfahre, lueg di FFmpeg-Dokumentation fÃŧr dr H.264-Codec, dr HEVC-Codec und dr VP9-Codec a.", + "transcoding_constant_quality_mode": "Modus fÃŧr konstanti Qualität", + "transcoding_constant_quality_mode_description": "ICQ isch besser als CQP, aber eini Hardware-Beschleunigungsgeräte unterstÃŧtzed dä Modus nÃļd. Wenn die Option gsetzt wird, wird dr aagee Modus bevorzugt, sobald qualitätsbasierti Kodierig bruucht wird. Wird vo NVENC ignoriert, da s’ICQ nÃļd unterstÃŧtzt.", + "transcoding_constant_rate_factor": "Faktor vo dr konstante Rate (-crf)", + "transcoding_constant_rate_factor_description": "Videoqualitätsstufä. Typischi Wärt sind 23 fÃŧr H.264, 28 fÃŧr HEVC, 31 fÃŧr VP9 und 35 fÃŧr AV1. Ein niedrigere Wert isch besser, erzÃŧÃŧgt aber grÃļsseri Dateie.", + "transcoding_disabled_description": "Videos nÃļd transkodieren, das cha d’Wiedergob uf einige Gerät beeihträchtige", + "transcoding_encoding_options": "Kodierigsoptione", + "transcoding_encoding_options_description": "Setz Codec, UflÃļsig, Qualität und anderi Option fÃŧr d’kodierte Videos", + "transcoding_hardware_acceleration": "Hardware-BeschlÃŧnigung", + "transcoding_hardware_acceleration_description": "Experimentell: schnälleri Transkodierig, cha aber d’Qualität bi gliicher Bitrate verringerä", + "transcoding_hardware_decoding": "Hardware-Dekodierig", + "transcoding_hardware_decoding_setting_description": "ErmÃļglicht e Ende-zu-Ende-Beschleunigung, statt nume d’Codierig z beschleunige. Das funktionier vielleicht nÃļd bi allne Videos.", + "transcoding_max_b_frames": "Maximali B-Frames", + "transcoding_max_b_frames_description": "HÃļcheri Wert verbessered d’Komprimierungseffizienz, verlangsamed aber d’Kodierig. Isch vielleicht nÃļd kompatibel mit dr Hardware-BeschlÃŧnigung vo ältere Grät. 0 deaktiviert d’B-Frames, während -1 dä Wert automatisch setzt.", + "transcoding_max_bitrate": "Maximali Bitrate", + "transcoding_max_bitrate_description": "S’Feschtlege vo ener maximalen Bitrate cha d’DateigrÃļssi vorhersagbarer mache, ohni dass d’Qualität drunter liidet. Bi 720p sind typischi Wert 2600 kbit/s fÃŧr VP9 oder HEVC oder 4500 kbit/s fÃŧr H.264. Deaktiviert, wenn dr Wert uf 0 gsetzt isch. Wenn kei Einheit aagee wird, wird vo k (fÃŧr kbit/s) usgange; drum sind 5000, 5000k und 5M (fÃŧr Mbit/s) gliich.", + "transcoding_max_keyframe_interval": "Maximals Keyframe-Intervall", + "transcoding_max_keyframe_interval_description": "Legt dr maximale Frame-Abstand zwÃŧsche Keyframes fescht. Tieferi Wert verschlechtered d’Komprimierungseffizienz, verbessere aber d’Suechziite und chÃļi d’Qualität i Szene mit schnälle Bewegige verbessere. Bi 0 wird dä Wert automatisch gstellt.", + "transcoding_optimal_description": "Videos mit ere hÃļcheri UflÃļsig als dr ZieluflÃļsig oder i enem nÃļd akzeptierte Format", + "transcoding_policy": "Transkodierigsrichtlinie", + "transcoding_policy_description": "Bestimm, wenn es Video transkodiert wird", + "transcoding_preferred_hardware_device": "Bevorzugts Hardwaregrät", + "transcoding_preferred_hardware_device_description": "Gilt nume fÃŧr VAAPI und QSV. Legt dr fÃŧr d’Hardware-Transkodierig bruuchte dri-Node fescht.", + "transcoding_preset_preset": "Voriistellig (-preset)", + "transcoding_preset_preset_description": "Komprimierigsgschwindigkeit. E langsamere Voriistellig erzeugt chliinere Dateie und erhÃļht d’Qualität, wenn mer e gewisse Bitrate aastrebt. VP9 ignoriert Gschwindigkeite Ãŧber „Schnäller“.", + "transcoding_reference_frames": "Referenz-Frames", + "transcoding_reference_frames_description": "D’Aazahl vo de Bilder, uf die bi dr Komprimierig vo enem bestimmte Bild verwiese wird. HÃļcheri Wert verbessere d’Komprimierungseffizienz, verlangsamed aber d’Kodierig. 0 setzt dä Wert automatisch.", + "transcoding_required_description": "Nume Videos i enem nÃļd akzeptierte Format", + "transcoding_settings": "Iistellige fÃŧr d’Video-Transkodierig", + "transcoding_settings_description": "Verwalte, welche Videos transkodiert werde und wie die verarbeitet werdend", + "transcoding_target_resolution": "Ziel-UuflÃļsig", + "transcoding_target_resolution_description": "HÃļcheri UflÃļsige chÃļi meh Detail erhalte, bruuched aber meh Ziit fÃŧr d’Codierig, hei grÃļsseri DateigrÃļssi und chÃļi d’Reaktionsziit vo dr Applikation beeinträchtige.", + "transcoding_temporal_aq": "Temporäre AQ", + "transcoding_temporal_aq_description": "Gilt nume fÃŧr NVENC. Ziitlich adaptiv Quantisierung verbessert d’Qualität vo Szene mit hohe DetailfÃŧlle und geringe Bewegige. Das isch vielleicht nÃļd kompatibel mit ältere Gerät.", + "transcoding_threads": "Threads", + "transcoding_threads_description": "HÃļcheri Wert fÃŧhre zu ener schnällere Kodierig, lah aber em Server weniiger Spielraum fÃŧr d’Verarbeitig vo andere Ufgabe im aktive Zustand. Dä Wert sÃļtt nÃļd hÃļcher si als d’Aazahl vo de CPU-Kerne. Maximiert d’Uuslaschtig, wenn dr Wert uf 0 gsetzt isch.", + "transcoding_tone_mapping": "Farbton-Mapping", + "transcoding_tone_mapping_description": "Versuecht, s’Ussseh vo HDR-Videos bi dr Konvertierig i SDR z’bibehalte. Jeder Algorithmus git unterschidlichi Kompromiss bi Farbe, Detail und Helligkeit. Hable bibhält Detail, Mobius bihält d’Farbe und Reinhard bibhält d’Helligkeit.", + "transcoding_transcode_policy": "Transcodierigsrichtlinie", + "transcoding_transcode_policy_description": "Richtlinie, wenn es Video transkodiert werde sÃļll. HDR-Videos werde immer transkodiert (usser wenn d’Transkodierig deaktiviert isch).", + "transcoding_two_pass_encoding": "Two-Pass Kodierig", + "transcoding_two_pass_encoding_setting_description": "FÃŧhrt e Transkodierig i zwei Durchgäng dur, um besseri kodierti Videos z erzeugen. Wenn d’maximale Bitrate aktiviert isch (erforderlich fÃŧr d’Verwendig mit H.264 und HEVC), bruucht dä Modus e Bitratebereich, wo uf dr maximale Bitrate basiert, und ignoriert CRF. FÃŧr VP9 cha CRF bruucht werde, wenn d’maximale Bitrate deaktiviert isch.", + "transcoding_video_codec": "Video-Codec", + "transcoding_video_codec_description": "VP9 het e hohe Effizienz und Web-Kompatibilität, bruucht aber länger fÃŧr d’Transkodierig. HEVC bietet e ähnlichi Leistig, isch aber weniger web-kompatibel. H.264 isch wiitgehend kompatibel und lässt sich schnäll transkodiere, erzÃŧÃŧgt aber viel grÃļsseri Dateie. AV1 isch dr effizientischte Codec, wird aber vo ältere Gerät nÃļd unterstÃŧtzt.", + "trash_enabled_description": "Papierkorbfunktionen aktiviere", + "trash_number_of_days": "Aahzahl vo de Täg", + "trash_number_of_days_description": "Aazahl vo de Täg, wo d’Objekt im Papirkorb bliibe, bevor sie endgÃŧltig entfernet werded", + "trash_settings": "Papierkorbihstellige", + "trash_settings_description": "Papierkorbihstellige verwalte", + "unlink_all_oauth_accounts": "Us allne OAuth Kontene uslogge", + "unlink_all_oauth_accounts_description": "Denk dra, alli OAuth-Konto z deaktiviere, bevor du zu enem neue Anbieter migrierisch.", + "unlink_all_oauth_accounts_prompt": "Bisch du sicher, dass du alli OAuth-Konto deaktivieren wotsch? Die Aktion cha nÃļd rÃŧckgängig gmacht werde und setzt zusätzlich d’OAuth-ID vo alli Benutzer zrugg.", + "user_cleanup_job": "Benutzer uufrumä", + "user_delete_delay": "Das Konto und d’Dateie vo {user} werde in {delay, plural, one {eim Tag} other {# Täg}} fÃŧr e permanenti LÃļschig plant.", + "user_delete_delay_settings": "VerzÃļgerig fÃŧr s’LÃļsche vo Benutzer", + "user_delete_delay_settings_description": "Gibt d’Aazahl vo de Täg a bis zur endgÃŧltige LÃļschung vo enem Konto und sini Dateie. Dr Benutzer-LÃļschauftrag wird täglich um Mitternacht usgfÃŧhrt, um z prÃŧefe, ob d’Benutzer zur LÃļschung bereit sind. Änderige an däre Iistellige werde erscht bi dr nächschte UusfÃŧerig berÃŧcksichtigt.", + "user_delete_immediately": "S’Konto und d’Dateie vo {user} werde sofort fÃŧr e permanente LÃļschung i d’Warteschlange gstellt.", + "user_delete_immediately_checkbox": "Benutzer und Dateie zur sofortige LÃļschig i d’Warteschlange stelle", + "user_details": "Benutzerdetails", + "user_management": "Benutzerverwaltig", + "user_password_has_been_reset": "S’Passwort vom Benutzer isch zruggsetzt worde:", + "user_password_reset_description": "Bitte gib em Benutzer s’temporäre Passwort und informier ihn, dass s’Passwort bim nächschte Login ändert werde muen.", + "user_restore_description": "Das Konto vo {user} wird wiederhergstellt.", + "user_restore_scheduled_removal": "Wiederherstellig vom Benutzer – planti Entfernig am {date, date, long}", + "user_settings": "Benutzerihstellige", + "user_settings_description": "Benutzerihstellige verwalte", + "user_successfully_removed": "Dr Benutzer {email} isch erfolgrich entfernt worde.", + "users_page_description": "Administrator-Benutzersiite", + "version_check_enabled_description": "VersionsprÃŧefig akivierä", + "version_check_implications": "D’Funktion zur VersionsprÃŧefig basiert uf regelmässiger Kommunikazion mit GitHub.com", + "version_check_settings": "VersionsprÃŧefig", + "version_check_settings_description": "Aktiviere/Deaktivier d’Benochrichtigung Ãŧber neui Versione", + "video_conversion_job": "Videos transkodiere", + "video_conversion_job_description": "Diä Ufgob transkodiert Videos, um d’Kompatibilität mit Browser und Gerät z verbessere" + }, + "admin_email": "Administrator E-Mail", + "admin_password": "Administrator Passwort", + "administration": "Verwaltig", + "advanced": "Erwiitert", + "advanced_settings_enable_alternate_media_filter_subtitle": "Bruuch die Option, um Medie während dr Synchronisierung nach andere Kriterie z filtere. Versuech das nume, wenn Problem mit dr Erkenig vo allne Albe dur d’App auftrete.", + "advanced_settings_enable_alternate_media_filter_title": "[EXPERIMENTELL] Benutz alternative Filter fÃŧr d’Synchronisierig vo de Geräte-Albe", + "advanced_settings_log_level_title": "Log-Level: {level}", + "advanced_settings_prefer_remote_subtitle": "Einigi Gerät sind sehr langsam bim Lade vo lokale Vorschaubilder. Aktivier die Iistellige, um stattdesse d’Server-Bilder z lade.", + "advanced_settings_prefer_remote_title": "Server-Bilder bevorzuge", + "advanced_settings_proxy_headers_subtitle": "Definier en Proxy-Header, wo Immich bi jede Netzwerk-Aafrog mitschicke sÃļll", + "advanced_settings_proxy_headers_title": "Benutzerdefinierti Proxy-Header [Experimentell]", + "advanced_settings_readonly_mode_subtitle": "Aktiviert dr schriibgschÃŧtzte Modus, i dem d’Fotos nume aazeigt werde chÃļi. Funktione wie mehri Bilder uswähle, teile, Ãŧbertrage und lÃļsche sind deaktiviert. Aktivier/Deaktivier dr schriibgschÃŧtzte Modus Ãŧber dr Benutzer-Avatar uf em Hauptbildschirm", + "advanced_settings_readonly_mode_title": "SchriibgschÃŧtzte Modus", + "advanced_settings_self_signed_ssl_subtitle": "Verifizierig vo SSL-Zertifikate vom Server Ãŧberspringe. NÃļtig bi selbstsignierte Zertifikate.", + "advanced_settings_self_signed_ssl_title": "Selbstsignierti SSL-Zertifikate erlaubä [Experimentell]", + "advanced_settings_sync_remote_deletions_subtitle": "Automatisches LÃļsche oder Wiederherstellig vo ener Datei uf däm Gerät, wenn die Aktion im Web durgfÃŧert wird", + "advanced_settings_sync_remote_deletions_title": "Mit Server-LÃļschige synchronisiere [Experimentell]", + "advanced_settings_tile_subtitle": "Erwiiterti Benutzer-Iistellige", + "advanced_settings_troubleshooting_subtitle": "Erwiterti Funktione zur Fehlersuechi aktiviere", + "advanced_settings_troubleshooting_title": "Fählersuechi", + "age_months": "Alter {months, plural, one {# Monat} other {# Monate}}", + "age_year_months": "Alter 1 Johr, {months, plural, one {# Monat} other {# Monate}}", + "age_years": "Alter {years, plural, one {# Johr} other {# Johre}}", + "album": "Album", + "album_added": "Album hinzuegfÃŧegt", + "album_added_notification_setting_description": "Erhalt e E-Mail-Benochrichtigung, wenn du zu enem freigäbene Album hinzugfÃŧegt wirsch", + "album_cover_updated": "Album-Cover aktualisiert", + "album_delete_confirmation": "Bisch du sicher, dass du s’Album {album} wotsch lÃļsche?", + "album_delete_confirmation_description": "Wenn das Album gteiltt worde isch, chÃļnnt anderi Benutzer nÃŧmme druf zuegriife.", + "album_deleted": "Album glÃļscht", + "album_info_card_backup_album_excluded": "USGSCHLOSSÄ", + "album_info_card_backup_album_included": "IHGSCHLOSSÄ", + "album_info_updated": "Album-Infos aktualisiert", + "album_leave": "Album verloh?", + "album_leave_confirmation": "Bisch du sicher, dass du s’Album {album} verla lasse wotsch?", + "album_name": "Albumname", + "album_options": "Albumoptione", + "album_remove_user": "Nutzer entfernä?", + "album_remove_user_confirmation": "Bisch du sicher, dass du {user} entferne wotsch?", + "album_search_not_found": "Kei Albe gfunde, wo zur Suechi passe", + "album_share_no_users": "Es gseht so us, als hetsch du das Album mit allne Benutzer gteiltt oder du hesch kei Benutzer, mit dene du chasch teile.", + "album_summary": "Album Zämmefassig", + "album_updated": "Album aktualisiert", + "album_updated_setting_description": "Erhalt e E-Mail-Benachrichtigig, wenn e freigähs Album neui Dateie enthält", + "album_user_left": "{album} verlasse", + "album_user_removed": "{user} entfernt", + "album_viewer_appbar_delete_confirm": "Bisch du sicher, dass du das Album us dim Konto wotsch lÃļsche?", + "album_viewer_appbar_share_err_delete": "Album het nÃļd chenne glÃļscht werde", + "album_viewer_appbar_share_err_leave": "Album het nÃļd chenne verloh werde", + "album_viewer_appbar_share_err_remove": "Bi dr LÃļschung vo Element us em Album isch es Problem uufgetrete", + "album_viewer_appbar_share_err_title": "Dr Titel het nÃļd chÃļnne gänderet werde", + "album_viewer_appbar_share_leave": "Album verloh", + "album_viewer_appbar_share_to": "Teile Ãŧber", + "album_viewer_page_share_add_users": "Nutzer hinzufÃŧegä", + "album_with_link_access": "Lah jede mit em Link d’Fotos und d’Persone i däm Album aaluege.", + "albums": "Albene", + "albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Albene}}", + "albums_default_sort_order": "Standard Album Sortierig", + "albums_default_sort_order_description": "Sortierräihefolg vo de Dateie bi dr Erstellig vo neue Albene.", + "albums_feature_description": "Sammlig vo Albe, wo mit andere Benutzer gteiltt werde chÃļnnd.", + "albums_on_device_count": "Albene uf dem Grät ({count})", + "all": "Alli", + "all_albums": "Alli Albene", + "all_people": "Alli Persone", + "all_videos": "Alli Videos", + "allow_dark_mode": "Dunkle-Modus erlaube", + "allow_edits": "Bearbeitig erlaube", + "allow_public_user_to_download": "Erlaub Ãļffentliche Benutzer z’downloade", + "allow_public_user_to_upload": "Erlaub Ãļffentliche Benutzer ufezlade", + "allowed": "Erlaubt", + "alt_text_qr_code": "QR-Code Bild", + "anti_clockwise": "Gäge de Uhrzeigersinn", + "api_key": "API-SchlÃŧssel", + "api_key_description": "Dä Wert wird nume einisch aazeigt. Bitte kopier ihn, bevor du s’Fänschter schliessisch.", + "api_key_empty": "Din API-SchlÃŧssel-Name dÃļrf nÃļd leer si", + "api_keys": "API-SchlÃŧssel", + "app_architecture_variant": "Variante (Architektur)", + "app_bar_signout_dialog_content": "Bisch du sicher, dass du dich abmälde wotsch?", + "app_bar_signout_dialog_ok": "Jo", + "app_bar_signout_dialog_title": "Abmälde", + "app_download_links": "App Download Links", + "app_settings": "App-Ihstellige", + "app_stores": "App Stores", + "app_update_available": "App Update verfÃŧegbar", + "appears_in": "Erschiint in", + "apply_count": "Aahwendä ({count, number})", + "archive": "Archiv", + "archive_action_prompt": "{count} zum Archiv hinzuegfÃŧegt", + "archive_or_unarchive_photo": "Foti archivierä bzw. Archvierig ufhebä", + "archive_page_no_archived_assets": "Kei archivierti Inhält gfundä", + "archive_page_title": "Archiv ({count})", + "archive_size": "ArchivgrÃļssi", + "archive_size_description": "ArchivgrÃļssi fÃŧr Downloads konfiguriere (in GiB)", + "archived": "Archiviert", + "archived_count": "{count, plural, other {# archiviert}}", + "are_these_the_same_person": "Isch das di gliichi Person?", + "are_you_sure_to_do_this": "Bisch du sicher, dass du das wotsch mache?", + "asset_action_delete_err_read_only": "SchriibgschÃŧtzti Inhält chÃļnd nÃļd glÃļscht werde, Ãŧberspringe", + "asset_action_share_err_offline": "Die Offline-Date chÃļnnd nÃļd glesä werdä, Ãŧberspringä", + "asset_added_to_album": "Zum Album hinzugfÃŧegt", + "asset_adding_to_album": "HinzufÃŧegä zum Albumâ€Ļ", + "asset_description_updated": "Die Beschribiig vo de Datei isch aktualisiert worde", + "asset_filename_is_offline": "Datei {filename} isch offline", + "asset_has_unassigned_faces": "Datei het nÃļd zuegwiseni Gsichter", + "asset_hashing": "Berechni PrÃŧfsummiâ€Ļ", + "asset_list_group_by_sub_title": "Gruppiere noch", + "asset_list_layout_settings_dynamic_layout_title": "Dynamischs Layout", + "asset_list_layout_settings_group_automatically": "Automatisch", + "asset_list_layout_settings_group_by": "Gruppierä Elemente noch", + "asset_list_layout_settings_group_by_month_day": "Monet + Tag", + "asset_list_layout_sub_title": "Layout", + "asset_list_settings_subtitle": "Iistellige fÃŧrs Foto-Gitter-Layout", + "asset_list_settings_title": "Fotigitter", + "asset_offline": "Datei offline", + "asset_offline_description": "Die externi Datei isch nÃŧmme uf em Datenträger vorhande. Bitte wend dich ah din Immich-Administrator, um Hilf z becho.", + "asset_restored_successfully": "Datei erfolgriich wiederhergstellt", + "asset_skipped": "Übersprungä", + "asset_skipped_in_trash": "Im Papierkorb", + "asset_trashed": "Datei glÃļscht", + "asset_troubleshoot": "Datei Fehlerbehebig", + "asset_uploaded": "Ufeglade", + "asset_uploading": "Ufeladeâ€Ļ", + "asset_viewer_settings_subtitle": "Verwaltig vo de Iistellige fÃŧr d’Foto-Aazeig", + "asset_viewer_settings_title": "Foto-Aazeig", + "assets": "Dateie", + "assets_added_count": "{count, plural, one {# Datei} other {# Dateie}} hinzugefÃŧgt", + "assets_added_to_album_count": "{count, plural, one {# Datei} other {# Dateie}} zum Album hinzugefÃŧgt", + "assets_added_to_albums_count": "{assetTotal, plural, one {# Datei} other {# Dateie}} zu {albumTotal, plural, one {# Album} other {# Albene}} hinzugefÃŧgt", + "assets_cannot_be_added_to_album_count": "{count, plural, one {Datei chan}other {Dateie chÃļnnd}} nÃļd zum Album hinzuegfÃŧegt werde", + "assets_cannot_be_added_to_albums": "{count, plural, one {Datei chan} other {Dateie chÃļnnd}} nÃļd zu dene Albe hinzuegfÃŧegt werde", + "assets_count": "{count, plural, one {# Datei} other {# Dateie}}", + "assets_deleted_permanently": "{count} Elemänt(e) permanent glÃļscht", + "assets_deleted_permanently_from_server": "{count} Elemänt(e) permanent vom Immich-Server glÃļscht", + "assets_downloaded_failed": "{count, plural, one {# Datei abeglade – {error} gschiiteret} other {# Dateie abeglade – {error} gschiiteret}}", + "assets_downloaded_successfully": "{count, plural, one {# Datei erfolgreich abeglade} other {# Dateie erfolgreich abeglade}}", + "assets_moved_to_trash_count": "{count, plural, one {# Datei} other {# Dateie}} i de Papirkorb verschobe", + "assets_permanently_deleted_count": "{count, plural, one {# Datei} other {# Dateie}} endgÃŧltig glÃļscht", + "assets_removed_count": "{count, plural, one {# Datei} other {# Dateie}} entfernt", + "assets_removed_permanently_from_device": "{count} Element(er) permanent vo dim Gerät glÃļscht", + "assets_restore_confirmation": "Bisch du sicher, dass du alli Date us em Papirkorb wiederherställe wotsch? Die Aktion cha nÃļd rÃŧckgängig gmacht werde! Beachte, dass Offline-Dateie uf die Wiis nÃļd wiederherställt werde chÃļnnd.", + "assets_restored_count": "{count, plural, one {# Datei} other {# Dateie}} wiederhergstellt", + "assets_restored_successfully": "{count} Elemänt(e) erfolgriich wiederhergstellt", + "assets_trashed": "{count} Element(e) glÃļscht", + "assets_trashed_count": "{count, plural, one {# Datei} other {# Dateie}} ih de Papierkorb verschobe", + "assets_trashed_from_server": "{count} Elemänt(e) vom Immich-Server glÃļscht", + "assets_were_part_of_album_count": "{count, plural, one {# Datei isch} other {# Dateie sind}} bereits im Album vorhanden", + "assets_were_part_of_albums_count": "{count, plural, one {Datei isch} other {Dateie sind}} bereits i de Albene", + "authorized_devices": "Verwendeti Grät", + "automatic_endpoint_switching_subtitle": "Verbinde dich lokal Ãŧber es bstimmts WLAN, wenn verfÃŧgbar, und bruuch anderi VerbindungsmÃļglichkeite anderswo", + "automatic_endpoint_switching_title": "Automatische URL-Umschaltig", + "autoplay_slideshow": "Automatische Diashow", + "back": "Zrugg", + "back_close_deselect": "Zrugg, Schliesse oder Abwählä", + "background_backup_running_error": "Sicherig läuft im Hintergrund. Manuelli Sicherig cha nÃļd gstartet werde", + "background_location_permission": "Hintergrund Standortfreigob", + "background_location_permission_content": "Um im Hintergrund zwÃŧsche de Netzwerke wächsle z’chÃļnne, mues Immich *immer* Zuegriff uf dr genaue Standort ha, damit d’App dr Name vom WLAN-Netzwerk ermittle cha", + "background_options": "Hintergrund Optione", + "backup": "Sicherig", + "backup_album_selection_page_albums_device": "Albene uf dem Grät ({count})", + "backup_album_selection_page_albums_tap": "Aatippe zum sichere, nomol aatippe zum usschliesse", + "backup_album_selection_page_assets_scatter": "Elemente (Fotos / Videos) chÃļnnd sich Ãŧber mehreri Albe verteile. Drum chÃļnnd die vor dr Sicherig iigschlosse oder usgschlosse werde.", + "backup_album_selection_page_select_albums": "Albene uuswählä", + "backup_album_selection_page_selection_info": "Uuswahlinformatione", + "backup_album_selection_page_total_assets": "Element gsamt", + "backup_albums_sync": "Synchronisation vo de Sicherigsalbene", + "backup_all": "Alli", + "backup_background_service_backup_failed_message": "Es isch e Fähler bi dr Sicherig uufträtä. Versueche erneutâ€Ļ", + "backup_background_service_complete_notification": "Datei Backup abgschlossä", + "backup_background_service_connection_failed_message": "Es het kei Verbindung zum Server chÃļnne hergstellt werde. Nomol versuecheâ€Ļ", + "backup_background_service_current_upload_notification": "Lädt {filename} hoch", + "backup_background_service_default_notification": "Suech nach neue Elementâ€Ļ", + "backup_background_service_error_title": "Fähler bi de Sicherig", + "backup_background_service_in_progress_notification": "Elemänt werdet gsicheretâ€Ļ", + "backup_background_service_upload_failure_notification": "{filename} het nÃļd chÃļnne ufeglade werde", + "backup_controller_page_albums": "Gsicherti Albene", + "backup_controller_page_background_app_refresh_disabled_content": "Aktiviere Hintergrundaktualisierige i de Iihstellige -> Allgemein -> Hintergrundaktualisierige, um Sicherige im Hintergrund z ermÃļglichä.", + "backup_controller_page_background_app_refresh_disabled_title": "Hintergrundaktualisierige sind deaktiviert", + "backup_controller_page_background_app_refresh_enable_button_text": "Gang zu de Iistellige", + "backup_controller_page_background_battery_info_link": "Zeig mir wie", + "backup_controller_page_background_battery_info_message": "FÃŧr di beschte Resultat bi Hintergrund‑Sicherige: deaktiviere alli Batterieoptimierig und all Beschränkige fÃŧr Hintergrund‑Aktivitäte vo Immich.\n\nWäge dem das gerätespezifisch isch, lueg bitte i de Infoe vom Hersteller vo dim Gerät nach.", + "backup_controller_page_background_battery_info_ok": "Ok", + "backup_controller_page_background_battery_info_title": "Batterieoptimierige", + "backup_controller_page_background_charging": "Nume während des Ladens", + "backup_controller_page_background_configure_error": "Hand nÃļd chÃļnne de Hintergrundservice konfiguriere", + "backup_controller_page_background_delay": "Sicherig vo neue Elemente verzÃļgeret um: {duration}", + "backup_controller_page_background_description": "Schalt de Hintergrundservice iih, um neui Elemente automatisch im Hintergrund z sichere, ohni d’App z Ãļffne", + "backup_controller_page_background_is_off": "Automatischi Sicherig im Hintergrund isch deaktiviert", + "backup_controller_page_background_is_on": "Automatischi Sicherig im Hintergrund isch aktiviert", + "backup_controller_page_background_turn_off": "Hintergrundservice ussschaltä", + "backup_controller_page_background_turn_on": "Hintergrundservice iihschaltä", + "backup_controller_page_background_wifi": "Nume im WLAN", + "backup_controller_page_backup": "Sicherig", + "backup_controller_page_backup_selected": "Usgwählt: ", + "backup_controller_page_backup_sub": "Gsicherti Fotis und Videos", + "backup_controller_page_created": "Erstellt am: {date}", + "backup_controller_page_desc_backup": "Aktivier d’Sicherig, um Elemänt immer automatisch uf de Server ufezlade, während du d’App bruuchsch.", + "backup_controller_page_excluded": "Usgschlossä: ", + "backup_controller_page_failed": "Fählgschagä ({count})", + "backup_controller_page_filename": "Dateiname: {filename} [{size}]", + "backup_controller_page_id": "ID: {id}", + "backup_controller_page_info": "Informatione zur Sicherig", + "backup_controller_page_none_selected": "Keini usgwählt", + "backup_controller_page_remainder": "Verbliibend", + "backup_controller_page_remainder_sub": "No z sichere Fotis und Videos", + "backup_controller_page_server_storage": "Server-Speicher", + "backup_controller_page_start_backup": "Sicherig starte", + "backup_controller_page_status_off": "Sicherig im Vordergrund isch inaktiv", + "backup_controller_page_status_on": "Sicherig im Vordergrund isch aktiv", + "backup_controller_page_storage_format": "{used} von {total} gnutzt", + "backup_controller_page_to_backup": "No z sichere Albene", + "backup_controller_page_total_sub": "Alli Fotis und Videos", + "backup_controller_page_turn_off": "Sicherig im Vordergrund ussschalte", + "backup_controller_page_turn_on": "Sicherig im Vordergrund iihschalte", + "backup_controller_page_uploading_file_info": "Informatione", + "backup_err_only_album": "Das einzigi Album cha nÃļd entfernet werde", + "backup_error_sync_failed": "Synchronisierung gschiiteret. Sicherig cha nÃļd verarbeitet werde.", + "backup_info_card_assets": "Elemänt", + "backup_manual_cancelled": "Abbroche", + "backup_manual_in_progress": "Sicherig lauft scho. Bitte versuech es spÃļter nomol", + "backup_manual_success": "Erfolgriich", + "backup_manual_title": "Sicherigsstatus", + "backup_options": "Backup Optione", + "backup_options_page_title": "Sicherigsoptione", + "backup_setting_subtitle": "Verwaltig vo de Upload-iihstellige im Hintergrund und Vordergrund", + "backup_settings_subtitle": "Upload-Iihstellige verwalte", + "backward": "RÃŧckwärts", + "biometric_auth_enabled": "Biometrische Authentifizierig aktiviert", + "biometric_locked_out": "Du bisch vo de biometrische Authenfizierig usgschlossä", + "biometric_no_options": "Kei biometrische Optione verfÃŧegbar", + "biometric_not_available": "D’biometrischi Authentifizierig isch uf däm Gerät nÃļd verfÃŧgbar", + "birthdate_saved": "Geburtsdatum erfolgrich gspeichert", + "birthdate_set_description": "Das Geburtsdatum wird bruucht, um s’Alter vo däre Person zum Ziitpunkt vo enem Foto z berechne.", + "blurred_background": "Unscharfe Hintergrund", + "bugs_and_feature_requests": "Fähler & Verbesserigsvorschläg", + "build": "Build", + "build_image": "Build Abbild", + "bulk_delete_duplicates_confirmation": "Bisch du sicher, dass du {count, plural, one {# duplizierti Datei} other {# duplizierti Dateie gemeinsam}} lÃļsche wotsch? Dabei wird d’grÃļssti Datei vo jeder Gruppe bibhalte und alli andere Duplikate endgÃŧltig gelÃļscht. Die Aktion cha nÃļd rÃŧckgängig gmacht werde!", + "bulk_keep_duplicates_confirmation": "Bisch du sicher, dass du {count, plural, one {# duplizierte Datei} other {# duplizierte Dateie}} behalte wotsch? Das wird alli Duplikat-Gruppä uuflÃļse, ohni Ãļppis z lÃļsche.", + "bulk_trash_duplicates_confirmation": "Bisch du sicher, dass du {count, plural, one {# duplizierte Datei} other {# duplizierte Dateie gemeinsam}} i de Papirkorb verschiebe wotsch? Das wird d’grÃļssti Datei vo jeder Gruppe behalte und alli andere Duplikate i de Papirkorb verschiebe.", + "buy": "Immich erwerbä", + "cache_settings_clear_cache_button": "ZwÃŧschespeicher lÃļsche", + "cache_settings_clear_cache_button_title": "LÃļscht dr ZwÃŧschecache vo dr App. Das wird d’Leistungsfähigkeit vo dr App deutlich einschränke, bis dr ZwÃŧschecache wieder ufbaut worde isch.", + "cache_settings_duplicated_assets_clear_button": "LÄÄRE", + "cache_settings_duplicated_assets_subtitle": "Fotos und Videos, wo vo dr App blockiert werdend", + "cache_settings_duplicated_assets_title": "Duplikate ({count})", + "cache_settings_statistics_album": "Vorschaubilder i dä Bibliothek", + "cache_settings_statistics_full": "Originalbilder", + "cache_settings_statistics_shared": "Vorschaubilder vo geteilte Albene", + "cache_settings_statistics_thumbnail": "Vorschaubilder", + "cache_settings_statistics_title": "ZwÃŧschespiicher-Nutzig", + "cache_settings_subtitle": "Kontrolliere, wie Immich dr ZwÃŧschecache bruucht", + "cache_settings_tile_subtitle": "Lokale Spiicher verwalte", + "cache_settings_tile_title": "Lokale Spiicher", + "cache_settings_title": "ZwÃŧschespiicher Ihstellige", + "camera": "Kamera", + "camera_brand": "Kamera-Marke", + "camera_model": "Kamera-Modell", + "cancel": "Abbräche", + "cancel_search": "Suechi abbräche", + "canceled": "Abbroche", + "canceling": "Abbroche", + "cannot_merge_people": "Persone chÃļnnd nÃļd zämmegfÃŧehrt werde", + "cannot_undo_this_action": "Die Aktion chan nÃļd rÃŧckgängig gmacht werde!", + "cannot_update_the_description": "Beschriibrig cha nÃļd aktualisiert werde", + "cast": "Überträge", + "cast_description": "Konfiguration verfÃŧgbarer Ziel", + "change_date": "Datum ändere", + "change_description": "Beschriibig aahpasse", + "change_display_order": "Aahzeigereihefolg ändere", + "change_expiration_time": "Verfallsziitpunkt ändere", + "change_location": "Standort ändere", + "change_name": "Name ändere", + "change_name_successfully": "Name isch erfolgrich gänderet worde", + "change_password": "Passwort ändere", + "change_password_description": "Das isch entweder das erscht Mal, dass du dich im System aagmäldet hesch, oder es isch e Aafrog zur Änderig vo dim Passwort gstellt worde. Bitte gib unte dis neue Passwort i.", + "change_password_form_confirm_password": "Passwort bestätige", + "change_password_form_description": "Hallo {name}\n\nDas isch entweder das erscht Mal, dass du dich iiglogt hesch, oder es isch e Aafrog zur Änderig vo dim Passwort gstellt worde. Bitte gib s’neus Passwort i.", + "change_password_form_log_out": "Vo allne Grät abmeldä", + "change_password_form_log_out_description": "Es isch empfohlä, alli andereä Grät abzmäldä", + "change_password_form_new_password": "Neus Passwort", + "change_password_form_password_mismatch": "PasswÃļrter stimmed nÃļd Ãŧberein", + "change_password_form_reenter_new_password": "Passwort erneut iihgäh", + "change_pin_code": "PIN-Code ändere", + "change_your_password": "Ändere dis Passwort", + "changed_visibility_successfully": "D’Sichtbarkeit isch erfolgrich gänderet worde", + "charging": "Uufladä", + "charging_requirement_mobile_backup": "Sicherig im Hintergrund fordert, dass s’Gerät ufglade wird", + "check_corrupt_asset_backup": "Uf bschädigti Asset-Sicherige prÃŧefe", + "check_corrupt_asset_backup_button": "ÜberprÃŧefig durrefÃŧehrä", + "check_corrupt_asset_backup_description": "FÃŧhr die PrÃŧefig nume mit aktiviertem WLAN dur, nachdem alli Dateie gsiichert worde sind. Dä Vorgang cha e paar Minute duurä.", + "check_logs": "Logs prÃŧafä", + "choose_matching_people_to_merge": "Wähl passendi Persone zum ZämmezfÃŧehre", + "city": "Stadt", + "clear": "Lääre", + "clear_all": "Alles lääre", + "clear_all_recent_searches": "Alli letschte Suechvorgäng lÃļsche", + "clear_file_cache": "Dateie-Cache lääre", + "clear_message": "Nochrichte lääre", + "clear_value": "Wert lääre", + "client_cert_dialog_msg_confirm": "Ok", + "client_cert_enter_password": "Passwort iigäh", + "client_cert_import": "Importiere", + "client_cert_import_success_msg": "Client Zertifikat isch importiert wordä", + "client_cert_invalid_msg": "UngÃŧltigi Zertifikatsdatei oder falsches Passwort", + "client_cert_remove_msg": "Client Zertifikat isch entfernt wordä", + "client_cert_subtitle": "UnterstÃŧtzt nume s’PKCS12 (.p12, .pfx) Format. Zertifikat-Import oder -Entferne sind nume vor em Login mÃļglech", + "client_cert_title": "SSL-Client-Zertifikat [Experimentell]", + "clockwise": "Im Uhrzeigersinn", + "close": "SchlÃŧssä", + "collapse": "Zämmeklappe", + "collapse_all": "Alles zämmeklappe", + "color": "Farb", + "color_theme": "Farb-Theme", + "command": "Befähl", + "comment_deleted": "Kommentar glÃļscht", + "comment_options": "Kommentaroptione", + "comments_and_likes": "Kommentär & Likes", + "comments_are_disabled": "Kommentär sind deaktiviert", + "common_create_new_album": "Neus Album erstellä", + "completed": "Abgschlossä", + "confirm": "Bestätige", + "confirm_admin_password": "Administrator Passwort bestätige", + "confirm_delete_face": "Bisch du sicher, dass du s’Gsicht vo {name} us dr Datei entferne wotsch?", + "confirm_delete_shared_link": "Bisch du sicher, dass du dä gteilte Link lÃļsche wotsch?", + "confirm_keep_this_delete_others": "Alli andere Dateie im Stapel bis uf die werde gelÃļscht. Bisch du sicher, dass du witerfahre wotsch?", + "confirm_new_pin_code": "Neue PIN-Code Iigäh", + "confirm_password": "Passwort bestätige", + "confirm_tag_face": "Wotsch du das Gsicht mit {name} markiere?", + "confirm_tag_face_unnamed": "Wotsch du das Gsicht markiere?", + "connected_device": "Verbundenes Grät", + "connected_to": "Verbunde mit", + "contain": "Vollständig", + "context": "Kontext", + "continue": "Fortsetze", + "control_bottom_app_bar_create_new_album": "Neus Album erstellä", + "control_bottom_app_bar_delete_from_immich": "Vo Immich lÃļschä", + "control_bottom_app_bar_delete_from_local": "Vom Grät lÃļsche", + "control_bottom_app_bar_edit_location": "Standort bearbeite", + "control_bottom_app_bar_edit_time": "Datum und Uhrziit bearbeite", + "control_bottom_app_bar_share_link": "Link teile", + "control_bottom_app_bar_share_to": "Teile mit", + "control_bottom_app_bar_trash_from_immich": "I de Papierkorb verschiebä", + "copied_image_to_clipboard": "S’Bild isch i d’ZwÃŧscheablag kopiert worde.", + "copied_to_clipboard": "I d’ZwÃŧscheablage kopiert!", + "copy_error": "Kopier-Fähler", + "copy_file_path": "Dateipfad kopiere", + "copy_image": "Bild kopiere", + "copy_link": "Link kopiere", + "copy_link_to_clipboard": "Link I d’ZwÃŧscheablage kopiere", + "copy_password": "Passwort kopiere", + "copy_to_clipboard": "I d’ZwÃŧscheablage kopiere", + "country": "Land", + "cover": "Randlos", + "covers": "Albumcover", + "create": "Erstellä", + "create_album": "Album erstellä", + "create_album_page_untitled": "Unbenennt", + "create_api_key": "API Key erstellä", + "create_library": "Bibliothek erstellä", + "create_link": "Link erstellä", + "create_link_to_share": "Link zum Teile erstellä", + "create_link_to_share_description": "Lah jede mit em Link d’usgwählte Fotos aaluege", + "create_new": "NEUS ERSTELLÄ", + "create_new_person": "Neui Person erstelle", + "create_new_person_hint": "Usgwählti Dateie ener neue Person zueweise", + "create_new_user": "Neue Nutzer erstellä", + "create_shared_album_page_share_add_assets": "INHALTE HINZUEFÜEGÄ", + "create_shared_album_page_share_select_photos": "Fotis uswählä", + "create_shared_link": "Teilte Link erstellä", + "create_tag": "Tag erstellä", + "create_tag_description": "Erstell en neue Tag. FÃŧr verschachtleti Tags gib dr ganze Pfad inklusiv Schrägstrich aa.", + "create_user": "Nutzer erstellä", + "created": "Erstellt", + "created_at": "Erstellt", + "creating_linked_albums": "Erstelle verknÃŧpfti Albene...", + "crop": "Zueschniidä", + "curated_object_page_title": "Sachä", + "current_device": "Aktuells Grät", + "current_pin_code": "Aktuelle PIN Code", + "current_server_address": "Aktuelli Serveradresse", + "custom_locale": "Benutzerdefinierti Sproch", + "custom_locale_description": "Datumsahgoob und Zahle je nach Sproch und Land formatiere", + "custom_url": "Benutzerdefinierti URL", + "daily_title_text_date": "E, dd MMM", + "daily_title_text_date_year": "E, dd MMM, yyyy", + "dark": "Dunkäl", + "dark_theme": "Dunkli Aahsicht umschalte", + "date": "Datum", + "date_after": "Datum noch", + "date_and_time": "Datum und Ziit", + "date_before": "Datum vor", + "date_format": "E d. LLL y â€ĸ hh:mm", + "date_of_birth_saved": "S’Geburtsdatum isch erfolgrich gspiicheret worde", + "date_range": "Datumsberiich", + "day": "Tag", + "days": "Täg", + "deduplicate_all": "Alli Duplikate entfernä", + "deduplication_criteria_1": "BildgrÃļssi in Bytes", + "deduplication_criteria_2": "Anzahl vo de EXIF Date", + "deduplication_info": "Deduplizierungsinformatione", + "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_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_album": "Album lÃļsche", + "delete_api_key_prompt": "Bisch du sicher, dass du dä API-SchlÃŧssel lÃļsche wotsch?", + "delete_dialog_alert": "Die Elemente werde unwiderruflich vo Immich und vom Grät entfernt", + "delete_dialog_alert_local": "Die Inhält werdend vom Grät glÃļscht, bliibend aber uf dem Immich-Server", + "delete_dialog_alert_local_non_backed_up": "Einigi Inhalt sind nÃļd i Immich gsiichert und werde dauerhaft vom Gerät gelÃļscht", + "delete_dialog_alert_remote": "Die Inhält werdend dauerhaft vom Immich-Server glÃļscht", + "delete_dialog_ok_force": "Trotzdem lÃļsche", + "delete_dialog_title": "EndgÃŧltig lÃļsche", + "delete_duplicates_confirmation": "Bisch du sicher, dass du diä Duplikat endgÃŧltig lÃļsche wotsch?", + "delete_face": "Gsicht lÃļschä", + "delete_key": "SchlÃŧssel lÃļschä", + "delete_library": "Bibliothek lÃļschä", + "delete_link": "Link lÃļschä", + "delete_local_action_prompt": "{count} lokal glÃļscht", + "delete_local_dialog_ok_backed_up_only": "Nur gsicherti Inhält lÃļsche", + "delete_local_dialog_ok_force": "Trotzdem lÃļsche", + "delete_others": "Anderi lÃļsche", + "delete_permanently": "EndgÃŧltig lÃļsche", + "delete_permanently_action_prompt": "{count} endgÃŧltig glÃļscht", + "delete_shared_link": "teilte link lÃļsche", + "delete_shared_link_dialog_title": "Teilte Link lÃļsche", + "delete_tag": "tag lÃļsche", + "delete_tag_confirmation_prompt": "Bisch du sicher, dass de {tagName} glÃļscht werde sÃļtt?", + "delete_user": "Nutzer lÃļsche", + "deleted_shared_link": "teilte link lÃļsche", + "deletes_missing_assets": "LÃļscht Dateie, welli uf de Feschtplatte fählend", + "description": "Beschriibig", + "description_input_hint_text": "Beschriibig hinzufÃŧegä...", + "description_input_submit_error": "D’Beschribig het nÃļd chenne gänderet werde, bitte lueg im Log fÃŧr meh Details", + "deselect_all": "Alli abwähle", + "details": "Details", + "direction": "Richtig", + "disabled": "Deaktiviert", + "disallow_edits": "Bearbeitig verbÃŧÃŧtä", + "discord": "Discord", + "discover": "Entdeckä", + "discovered_devices": "Gfundeni Grät", + "dismiss_all_errors": "Alli Fähler ignorierä", + "dismiss_error": "Fähler ignorierä", + "display_options": "Aahzeigeoptione", + "display_order": "Aahzeigereihefolg", + "display_original_photos": "Originali Fotis Aahzeige", + "display_original_photos_setting_description": "Bi dr Aazeig vo enem Bild wird bevorzugt s’Originalfoto statt dr Miniaturahsicht azeigt, sofern s’Original web-kompatibel isch. Das cha z längere Ladeziite vo de Fotos fÃŧhre.", + "do_not_show_again": "Die Nochricht nÃļd erneut Aahzeige", + "documentation": "Dokumentation", + "done": "Fertig", + "download": "Abelade", + "download_action_prompt": "Abelade vo {count} Dateie", + "download_canceled": "Download abbroche", + "download_complete": "Download vollständig", + "download_enqueue": "Download i d’Warteschlange gstellt", + "download_error": "Download fählerhaft", + "download_failed": "Download fählgschlage", + "download_finished": "Download abgschlosse", + "download_include_embedded_motion_videos": "Iigbetteti Videos", + "download_include_embedded_motion_videos_description": "Videos, wo i Bewegigsfotos iigbettet sind, als separate Datei iifÃŧege", + "download_notfound": "Download nÃļd gfundä", + "download_paused": "Download pausiert", + "download_settings": "Download", + "download_settings_description": "Iihstelligä fÃŧrs Abeladä vo Dateie verwalte", + "download_started": "Download gstartet", + "download_sucess": "Download erfolgriich", + "download_sucess_android": "Die Datei wurde nach DCIM/Immich abeglade", + "download_waiting_to_retry": "Warte uf neue Versuech", + "downloading": "Abelade", + "downloading_asset_filename": "Datei {filename} wird abeglade", + "downloading_media": "Medie werdend abegladä", + "drop_files_to_upload": "Lad Dateie ufä, indem du sie do ane zÃŧchsch", + "duplicates": "Duplikate", + "duplicates_description": "LÃļs jedi Gruppe uf, indem du aagisch, welche — wenn Ãŧberhaupt — Duplikat sind", + "duration": "Duur", + "edit": "Bearbeite", + "edit_album": "Album bearbeite", + "edit_avatar": "Avatar bearbeite", + "edit_birthday": "Geburtsdatum bearbeite", + "edit_date": "Datum bearbeite", + "edit_date_and_time": "Datum und Uhrziit bearbeite", + "edit_date_and_time_action_prompt": "{count} Date und Ziite gänderet", + "edit_date_and_time_by_offset": "Datum ändere um Versatz", + "edit_date_and_time_by_offset_interval": "Neue Datumsbereich: {from} - {to}", + "edit_description": "Beschriibig bearbeite", + "edit_description_prompt": "Bitte wähl e neui Beschriibig:", + "edit_exclusion_pattern": "Usschlussmuster bearbeite", + "edit_faces": "Gsichter bearbeite", + "edit_key": "SchlÃŧssel bearbeite", + "edit_link": "Link bearbeite", + "edit_location": "Standort bearbeite", + "edit_location_action_prompt": "{count} Geolokatione ahpasst", + "edit_location_dialog_title": "Standort bearbeite", + "edit_name": "Name bearbeite", + "edit_people": "Person bearbeite", + "edit_tag": "Tag bearbeite", + "edit_title": "Titel bearbeite", + "edit_user": "Nutzer bearbeite", + "editor": "Bearbeiter", + "editor_close_without_save_prompt": "D’Änderige werden nÃļd gspeichert", + "editor_close_without_save_title": "Editor schlÃŧssä?", + "editor_crop_tool_h2_aspect_ratios": "Siiteverhältniss", + "editor_crop_tool_h2_rotation": "Drehig", + "email": "E-Mail", + "email_notifications": "E-Mail Benochrichtigunge", + "empty_folder": "Dä Ordner isch leer", + "empty_trash": "Papierkorb lääre", + "empty_trash_confirmation": "Bisch du sicher, dass du dr Papirkorb leere wotsch?\nDas entfernt alli Dateie im Papirkorb endgÃŧltig us Immich und cha nÃļd rÃŧckgängig gmacht werde!", + "enable": "Aktiviere", + "enable_backup": "Sicherig aktiviere", + "enable_biometric_auth_description": "Gib din PIN-Code ii, um d’biometrischi Authentifizierig z aktiviere", + "enabled": "Aktiviert", + "end_date": "Enddatum", + "enqueued": "iihgreiht", + "enter_wifi_name": "WLAN-Name Iigäh", + "enter_your_pin_code": "PIN-Code Iigäh", + "enter_your_pin_code_subtitle": "Gib din PIN-Code ii, um uf dr gschperrte Ordner zuezgriffä", + "error": "Fähler", + "error_change_sort_album": "Änderig vo dr Aazeigeräihefolg isch gscheitert", + "error_delete_face": "Fähler bim LÃļschä vom Gsicht", + "error_getting_places": "Fähler bim Abruefä vo dä Ört", + "error_loading_image": "Fähler bim Lade vom Bild", + "error_loading_partners": "Fähler bim Lade vo de Partner: {error}", + "error_saving_image": "Fähler: {error}", + "error_tag_face_bounding_box": "Fähler bim Markiere vom Gsicht – Begrenzige chÃļnd nÃļd abgruefä wärde", + "error_title": "Fähler - Öppis isch schief gloffe", + "errors": { + "cannot_navigate_next_asset": "Chan nÃļd zu de nÃļgst Datei navigierä", + "cannot_navigate_previous_asset": "Chan nÃļd zu de vorherigä Datei navigierä", + "cant_apply_changes": "Änderige chÃļnnt nÃļd Ãŧbernoh werden", + "cant_change_activity": "Aktivität cha nÃļd {enabled, select, true {deaktiviert} other {aktiviert}} werde", + "cant_change_asset_favorite": "Favorit-Status fÃŧr d’Datei cha nÃļd gänderet werde", + "cant_change_metadata_assets_count": "Metadate fÃŧr {count, plural, one {# Datei} other {# Dateie}} chÃļnnd nÃļd gänderet werde", + "cant_get_faces": "Gsichter chÃļnnd nÃļd abgruefä werde", + "cant_get_number_of_comments": "Aazahl vo de Kommentär het nÃļd chÃļnne abgrÃŧefä wärde", + "cant_search_people": "Persone händ nÃļd chenne gsuecht werde", + "cant_search_places": "Orte händ nÃļd chÃļnne gsuecht werde", + "error_adding_assets_to_album": "Fähler bim Dateie-ZuefÃŧege is Album", + "error_adding_users_to_album": "Fähler bim Benutzer is Album zuefÃŧege", + "error_deleting_shared_user": "Fähler bim lÃļsche vom teilte Benutzer", + "error_downloading": "Fähler bim abelade vo {filename}", + "error_hiding_buy_button": "Fähler bim de Chauf-Chnopf usblände", + "error_removing_assets_from_album": "Fähler bim Dateie us em Album wägmache, lueg i d Konsole fÃŧr meh Details", + "error_selecting_all_assets": "Fähler bim alli Dateie uuswähle", + "exclusion_pattern_already_exists": "Das Uschlussmuuster gits scho.", + "failed_to_create_album": "Album het nÃļd chÃļne erstellt werde", + "failed_to_create_shared_link": "Teilte Link het nÃļd chÃļne erstellt werde", + "failed_to_edit_shared_link": "Teilte Link het nÃļd chÃļne bearbeited werde", + "failed_to_get_people": "Persone händ nÃļd chÃļne abgruefe werde", + "failed_to_keep_this_delete_others": "Fähler bim di andere Dateie lÃļsche", + "failed_to_load_asset": "Fähler bim Datei lade", + "failed_to_load_assets": "Fähler bim Lade vo de Dateie", + "failed_to_load_notifications": "Fähler bim lade vo de Benochrichtigunge", + "failed_to_load_people": "Fähler bim Lade vo de Persone", + "failed_to_remove_product_key": "Fähler bim entfernä vom ProduktschlÃŧssel", + "failed_to_reset_pin_code": "Zruggsetze vom PIN-Code isch nÃļd gange", + "failed_to_stack_assets": "Dateie händ nÃļd chÃļne gstaplet werde", + "failed_to_unstack_assets": "Dateie händ nÃļd chÃļne entstaplet werde", + "failed_to_update_notification_status": "Benachrichtigigs-Status aktualisiere isch fählgschlage", + "incorrect_email_or_password": "UngÃŧltigi E-Mail oder Passwort", + "library_folder_already_exists": "Dä Importpfad exischtiert bereits.", + "paths_validation_failed": "{paths, plural, one {# Pfad isch} other {# Pfäd sind}} nÃļd chÃļne validiert werde", + "profile_picture_transparent_pixels": "Profilbilder dÃļrfed kei transparente Pixel haa. Zoome bitte ine und/oder verschiebe s Bild.", + "quota_higher_than_disk_size": "Dii feschtgleiti Kontingänt isch grÃļsser als de verfÃŧegbari Spicher", + "something_went_wrong": "En Fähler isch ufträtä", + "unable_to_add_album_users": "Benutzer händ nÃļd chÃļne zum Album zuegfÃŧegt werde", + "unable_to_add_assets_to_shared_link": "Datei het nÃļd chÃļne zum gteilte Link zuegfÃŧegt werde", + "unable_to_add_comment": "Es cha kei Kommentar zuegfÃŧegt werde", + "unable_to_add_exclusion_pattern": "Usschlussmuuster het nÃļd chÃļne zuegfÃŧegt werde", + "unable_to_add_partners": "Es chÃļnd kei Partner zuegfÃŧegt werde", + "unable_to_add_remove_archive": "Datei het nÃļd chÃļne {archived, select, true {uss em Archiv gnoh} other {zum Archiv zuegfÃŧegt}} werde", + "unable_to_add_remove_favorites": "Datei het nÃļd chÃļne {favorite, select, true {vo de Favorite gnoh} other {zu de Favorite zuegfÃŧegt}} werde", + "unable_to_archive_unarchive": "Het nÃļd chÃļne {archived, select, true {archiviere} other {entarchiviere}}", + "unable_to_change_album_user_role": "D Roll vom Album-Benutzer cha nÃļd gänderet werde", + "unable_to_change_date": "Datum cha nÃļd veränderet werde", + "unable_to_change_description": "Änderig vo de Beschriibig isch nÃļd mÃļglich", + "unable_to_change_favorite": "De Favorite-Status fÃŧr die Datei het nÃļd chÃļne gänderet werde", + "unable_to_change_location": "Standort cha nÃļd veränderet werde", + "unable_to_change_password": "Passwort het nÃļd chÃļne gänderet werde", + "unable_to_change_visibility": "Sichtbarkeit vo {count, plural, one {ere Person} other {# Persone}} het nÃļd chÃļne gänderet werde", + "unable_to_complete_oauth_login": "OAuth-Aamäldig het nÃļd chÃļne abgschlosse werde", + "unable_to_connect": "Verbindig het nÃļd chÃļne gmacht werde", + "unable_to_copy_to_clipboard": "Het nÃļd chÃļne i d ZwÃŧschespeichere kopiere, lueg, ass du per https uf d Siite zuegriefsch", + "unable_to_create_admin_account": "Administrator-Konto het nÃļd chÃļne gmacht werde", + "unable_to_create_api_key": "Es het kei API-SchlÃŧssel chÃļne erstellt werde", + "unable_to_create_library": "Bibliothek het nÃļd chÃļne erstellt werde", + "unable_to_create_user": "Nutzer/Benutzer het nÃļd chÃļne erstellt werde", + "unable_to_delete_album": "Album het nÃļd chÃļne glÃļscht werde", + "unable_to_delete_asset": "Datei het nÃļd chÃļne glÃļscht werde", + "unable_to_delete_assets": "Fähler bim lÃļschä vo de Dateie", + "unable_to_delete_exclusion_pattern": "Usschlussmuuster het nÃļd chÃļne glÃļscht werde", + "unable_to_delete_shared_link": "Gteilte Link cha nÃļd glÃļscht werde", + "unable_to_delete_user": "Nutzer het nÃļd chÃļne glÃļscht werde", + "unable_to_download_files": "Dateie händ nÃļd chÃļne abglade werde", + "unable_to_edit_exclusion_pattern": "Usschlussmuuster het nÃļd chÃļne bearbeited werde", + "unable_to_empty_trash": "Papiirkorb het nÃļd chÃļne gleeret werde", + "unable_to_enter_fullscreen": "Vollbild-Modus cha nÃļd aktiviert werde", + "unable_to_exit_fullscreen": "Vollbild-Modus cha nÃļd deaktiviert werde", + "unable_to_get_comments_number": "Aazahl vo de Kommentär het nÃļd chÃļne abgruefe werde", + "unable_to_get_shared_link": "Fähler bim de Freigab-Link abruefe", + "unable_to_hide_person": "Person cha nÃļd versteckt werde", + "unable_to_link_motion_video": "Bewegigsvideo cha nÃļd verchnÃŧpft werde", + "unable_to_link_oauth_account": "OAuth-Konto cha nÃļd verchnÃŧpft werde", + "unable_to_log_out_all_devices": "Het nÃļd chÃļne vo allne Gerät abgmäldet werde", + "unable_to_log_out_device": "Het nÃļd chÃļne vom Gerät abgmäldet werde", + "unable_to_login_with_oauth": "Aamäldig mit OAuth isch nÃļd mÃļglich", + "unable_to_play_video": "S Video cha nÃļd wiederggäh/gspielt werde", + "unable_to_reassign_assets_existing_person": "Cha Dateie nÃļd {name, select, null {ere existierendi Person} other {{name}}} zuwiise", + "unable_to_reassign_assets_new_person": "Dateie händ nÃļd chÃļne ere neue Person zuewiise werde", + "unable_to_refresh_user": "De Benutzer/Nutzer cha nÃļd aktualisiert werde", + "unable_to_remove_album_users": "Mitglieder vo de Albene chÃļnd nÃļd entfernt werde", + "unable_to_remove_api_key": "API-SchlÃŧssel het nÃļd chÃļne entfernt werde", + "unable_to_remove_assets_from_shared_link": "Dateie händ nÃļd chÃļne vom gteilte Link gnoh/entfernt werde", + "unable_to_remove_library": "Bibliothek cha nÃļd entfernt werde", + "unable_to_remove_partner": "Partner cha nÃļd entfernt werde", + "unable_to_remove_reaction": "Reaktion cha nÃļd entfernt wärde", + "unable_to_reset_password": "Passwort cha nÃļd zruggsetzt werde", + "unable_to_reset_pin_code": "Zruggsetze vom PIN-Code isch nÃļd mÃļglich", + "unable_to_resolve_duplicate": "Duplikat chÃļnd nÃļd ufglÃļÃļst werde", + "unable_to_restore_assets": "Dateie händ nÃļd chÃļne widerhergstellt werde", + "unable_to_restore_trash": "Papiirkorb cha nÃļd widerhergstellt werde", + "unable_to_restore_user": "Benutzer cha nÃļd widerhergstellt werde", + "unable_to_save_album": "Album cha nÃļd gspiicheret werde", + "unable_to_save_api_key": "API-SchlÃŧssel het nÃļd chÃļne gspiicheret werde", + "unable_to_save_date_of_birth": "S Geburtsdatum het nÃļd chÃļne gspiicheret werde", + "unable_to_save_name": "Name het nÃļd chÃļne gspiicheret werde", + "unable_to_save_profile": "Profil het nÃļd chÃļne gspiicheret werde", + "unable_to_save_settings": "Iistellige händ nÃļd chÃļne gspiicheret werde", + "unable_to_scan_libraries": "Bibliotheke händ nÃļd chÃļne gscannt werde", + "unable_to_scan_library": "Bibliothek het nÃļd chÃļne gscannt werde", + "unable_to_set_feature_photo": "Hauptfoto het nÃļd chÃļne feschtgsetzt werde", + "unable_to_set_profile_picture": "Profilbild het nÃļd chÃļne gsetzt werde", + "unable_to_submit_job": "Uufgab het nÃļd chÃļne iigreicht werde", + "unable_to_trash_asset": "Objekt händ nÃļd chÃļne glÃļscht werde", + "unable_to_unlink_account": "D VerchnÃŧpfig vom Konto cha nÃļd ufghobe werde", + "unable_to_unlink_motion_video": "VerchnÃŧpfig zum Bewegigsvideo cha nÃļd ufghobe werde", + "unable_to_update_album_cover": "Album-Cover het nÃļd chÃļne aktualisiert werde", + "unable_to_update_album_info": "Album-Info het nÃļd chÃļne aktualisiert werde", + "unable_to_update_library": "D Bibliothek het nÃļd chÃļne aktualisiert werde", + "unable_to_update_location": "De Standoort het nÃļd chÃļne aktualisiert werde", + "unable_to_update_settings": "D Iistellige händ nÃļd chÃļne aktualisiert werde", + "unable_to_update_timeline_display_status": "Status vo de Ziitlinie-Aazeig het nÃļd chÃļne aktualisiert werde", + "unable_to_update_user": "De Nutzer/Benutzer het nÃļd chÃļne aktualisiert werde", + "unable_to_upload_file": "Datei het nÃļd chÃļne ufeglade werde" + }, + "exclusion_pattern": "Usschlussmuster", + "exif": "EXIF", + "exif_bottom_sheet_description": "Beschriibig dezuefÃŧege...", + "exif_bottom_sheet_description_error": "Fähler bim d Aktualisierig vo de Beschriibig", + "exif_bottom_sheet_details": "DETAILS", + "exif_bottom_sheet_location": "STANDORT", + "exif_bottom_sheet_no_description": "Kei Beschriibig", + "exif_bottom_sheet_people": "PERSONE", + "exif_bottom_sheet_person_add_person": "Name dezuefÃŧege", + "exit_slideshow": "Diashow beende", + "expand_all": "Alli ufklappe", + "experimental_settings_new_asset_list_subtitle": "In Arbet", + "experimental_settings_new_asset_list_title": "Experimentells FÃļteli-Gitter aktiviere", + "experimental_settings_subtitle": "Benutzig uf eigni Gfohr!", + "experimental_settings_title": "Experimentell", + "expire_after": "Verfällt noch", + "expired": "Verfalle", + "expires_date": "Lauft ab: {date}", + "explore": "Erkundä", + "explorer": "Datei-Explorer", + "export": "Exportierä", + "export_as_json": "Als JSON exportierä", + "export_database": "Datebank exportierä", + "export_database_description": "Exportiert d SQLite Datebank", + "extension": "Erwiiterig", + "external": "Extern", + "external_libraries": "Externi Bibliotheke", + "external_network": "Externs Netzwerk", + "external_network_sheet_info": "Wenn d App nÃļd im bevorzugte WLAN-Netzwärch isch, verbindet si sich mit em Server Ãŧber die erschti vo de folgende URLs, wo si cha erreiche (vo obe nah unde)", + "face_unassigned": "NÃļd zuegwisää", + "failed": "NÃļd glunge", + "failed_count": "NÃļd glungä: {count}", + "failed_to_authenticate": "Authenfizierig nÃļd glungä", + "failed_to_load_assets": "Lade vo de Assets nÃļd glungä", + "failed_to_load_folder": "Fähler bim Ladä vom Ordner", + "favorite": "Favorit", + "favorite_action_prompt": "{count} zu de Favorite hinzuegfÃŧegt", + "favorite_or_unfavorite_photo": "Favorisierts oder nÃļd favorisierts Foti", + "favorites": "Favorite", + "favorites_page_no_favorites": "Kei favorisierte Inhält gfundä", + "feature_photo_updated": "Profilbild aktualisiert", + "features": "Funktione", + "features_in_development": "Feature isch in Entwicklig", + "features_setting_description": "Funkione i de App verwalte", + "file_name": "Dateiname", + "file_name_or_extension": "Dateiname oder -erwiiterig", + "file_size": "DateigrÃļssi", + "filename": "Dateiname", + "filetype": "Dateityp", + "filter": "Filter", + "filter_people": "Persone filterä", + "filter_places": "Ort filterä", + "find_them_fast": "Finded sie schneller mit de Suechi noch Näme", + "first": "Erste", + "fix_incorrect_match": "Fählerhafti Überiistimmig behebe", + "folder": "Ordner", + "folder_not_found": "Ordner nÃļd gfundä", + "folders": "Ordner", + "folders_feature_description": "D' Ordneraazeig (Ordneransicht) fÃŧr FÃļteli und Videos im Dateiesyschtem dursueche", + "forgot_pin_code_question": "PIN-Code vergessä?", + "forward": "Vorwärts", + "full_path": "Vollständige Pfad: {path}", + "gcast_enabled": "Google Cast", + "gcast_enabled_description": "Die Funktion ladet externi Quelle vo Google, zum funktioniere.", + "general": "Allgemein", + "geolocation_instruction_location": "Klick uf eh Datei mit GPS Koordinate, zum de Standoort z'bruuche, oder wähl en Standoort direkt uf de Charte", + "get_help": "Hilf erhalte", + "get_wifiname_error": "WLAN-Naame het nÃļd chÃļne gfunde werde. Vergewissere dich, dass die erforderliche Berächtigunge erteilt worde sind, und du mit eme WLAN-Netzwärch verbunde bisch", + "getting_started": "Erschti Schritt", + "go_back": "Zrugg", + "go_to_folder": "Gang zum Ordner", + "go_to_search": "Zur Suechi go", + "gps": "GPS", + "gps_missing": "Kein GPS", + "grant_permission": "Erlaubnis gwähre", + "group_albums_by": "Albe gruppiere noch...", + "group_country": "Noch Land gruppiere", + "group_no": "Kei Gruppierig", + "group_owner": "Gruppiere noch Bsitzer", + "group_places_by": "Ort gruppiere noch...", + "group_year": "Gruppierig noch Johr", + "haptic_feedback_switch": "Haptisches Feedback aktiviere", + "haptic_feedback_title": "Haptisches Feedback", + "has_quota": "Kontingent", + "hash_asset": "Dateihash", + "hashed_assets": "Ghäshte Dateie", + "hashing": "Häshe", + "header_settings_add_header_tip": "Header hinzufÃŧegä", + "header_settings_field_validator_msg": "Dä Wert dÃļrf nÃļd leer si", + "header_settings_header_name_input": "Header-Name", + "header_settings_header_value_input": "Header-Wert", + "headers_settings_tile_title": "Benutzerdefinierte Proxy-Header", + "hi_user": "Hoi {name} ({email})", + "hide_all_people": "Alli persone verberge", + "hide_gallery": "Galerie verbergä", + "hide_named_person": "Person {name} verbergä", + "hide_password": "Passwort verbergä", + "hide_person": "Person verbergä", + "hide_text_recognition": "Texterkennung verbergä", + "hide_unnamed_people": "Unbenannti Person verbergä", + "home_page_add_to_album_conflicts": "{added} Elemente zu {album} hinzugfÃŧegt. {failed} Elemente sind bereits vorhande.", + "home_page_add_to_album_err_local": "Es chÃļnd no nÃļd lokali Element zu Albe dezuegfuegt werde, Ãŧberspringe", + "home_page_add_to_album_success": "{added} Element zu {album} dezuegfuegt.", + "home_page_album_err_partner": "Inhält vo Partner chÃļnd im Momänt nÃļd zu Albe dezuegfuegt werde", + "home_page_archive_err_local": "Cha lokali Element nÃļd archiviere, Ãŧberspringe", + "home_page_archive_err_partner": "Inhält vo Partner chÃļnd nÃļd archiviert werde", + "home_page_building_timeline": "Ziitachse wird erstellt", + "home_page_delete_err_partner": "Inhält vo Partner chÃļnd nÃļd glÃļscht werde, Ãŧberspringe", + "home_page_delete_remote_err_local": "Lokali Element in de Uswahl zum Entferne vo Remote-Element, Überspringe", + "home_page_favorite_err_local": "Cha lokali Element no nÃļd favorisiere, Ãŧberspringe", + "home_page_favorite_err_partner": "Inhält vo Partner chÃļnd nÃļd favorisiert werde, Ãŧberspringe", + "home_page_first_time_notice": "Wenn Du d'App zum erschte Mol bruuchsch, wähl bitte es Album zum Siichere uus, demit d'Ziitachs mit FÃļteli und Videos cha gfÃŧllt werde", + "home_page_locked_error_local": "Lokali Dateie chÃļnd nÃļd i de gsperrti Ordner verschobe werde, Ãŧberspringe", + "home_page_locked_error_partner": "Dateie vo Partner chÃļnd nÃļd i de gsperrti Ordner verschobe werde, Ãŧberspringe", + "home_page_share_err_local": "Lokali Inhält chÃļnd nÃļd per Link teilt werde, Ãŧberspringe", + "home_page_upload_err_limit": "Es chÃļnd max. 30 Element gliichzitig ufelglade werde, Ãŧberspringe", + "host": "Host", + "hour": "Stund", + "hours": "Stunde", + "id": "ID", + "idle": "Untätig", + "ignore_icloud_photos": "iCloud Fotos ignorierä", + "ignore_icloud_photos_description": "FÃļteli, wo i de iCloud gspiicheret sind, wärded nÃļd uf de immich Server ufeglade", + "image": "FÃļteli", + "image_alt_text_date": "{isVideo, select, true {Video} other {Bild}} ufgnoo am {date}", + "image_alt_text_date_1_person": "{isVideo, select, true {Video} other {Bild}} ufgnoo mit {person1} am {date}", + "image_alt_text_date_2_people": "{isVideo, select, true {Video} other {Bild}} ufgnoo mit {person1} und {person2} am {date}", + "image_alt_text_date_3_people": "{isVideo, select, true {Video} other {Bild}} ufgnoo mit {person1}, {person2} und {person3} am {date}", + "image_alt_text_date_4_or_more_people": "{isVideo, select, true {Video} other {Bild}} ufgnoo mit {person1}, {person2} und {additionalCount, number} andere am {date}", + "image_alt_text_date_place": "{isVideo, select, true {Video} other {Bild}} ufgnoo in {city}, {country} am {date}", + "image_alt_text_date_place_1_person": "{isVideo, select, true {Video} other {Bild}} ufgnoo in {city}, {country} mit {person1} am {date}", + "image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Bild}} ufgnoo in {city}, {country} mit {person1} und {person2} am {date}", + "image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Bild}} ufgnoo in {city}, {country} mit {person1}, {person2} und {person3} am {date}", + "image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Bild}} ufgnoo in {city}, {country} mit {person1}, {person2} und {additionalCount, number} andere am {date}", + "image_saved_successfully": "Bild gspiicheret", + "image_viewer_page_state_provider_download_started": "Download gstartet", + "image_viewer_page_state_provider_download_success": "Erfolgriich abeglade", + "image_viewer_page_state_provider_share_error": "Fähler bim Teile", + "immich_logo": "Immich-Logo", + "immich_web_interface": "Immich-Web-Oberflächi", + "import_from_json": "Us JSON importierä", + "import_path": "Importpfad", + "in_albums": "In {count, plural, one {# Album} other {# Albe}}", + "in_archive": "Im Archiv", + "in_year": "Im Johr {year}", + "in_year_selector": "Im Johr", + "include_archived": "Archivierti Dateie iibezieh", + "include_shared_albums": "Teilti Albe iibezieh", + "include_shared_partner_assets": "Teilti Partner-Dateie mit iibezieh", + "individual_share": "Individuelli Freigob", + "individual_shares": "Individuells Teile", + "info": "Info", + "interval": { + "day_at_onepm": "Täglich um 13:00 Uhr", + "hours": "{hours, plural, one {Jedi Stund} other {Alli {hours, number} Stunde}}", + "night_at_midnight": "Täglich um Mitternacht", + "night_at_twoam": "Täglich nachts um 2:00 Uhr" + }, + "invalid_date": "UngÃŧltigs Datum", + "invalid_date_format": "UngÃŧltigs Datumsformat", + "invite_people": "Persone ilade", + "invite_to_album": "Zum Album ilade", + "ios_debug_info_fetch_ran_at": "Abruäf lauft {dateTime}", + "ios_debug_info_last_sync_at": "Zletscht aktualisiert {dateTime}", + "ios_debug_info_no_processes_queued": "Kei HintergrÃŧndsprozäss i de Waarteschlange", + "ios_debug_info_no_sync_yet": "No kei Hindergrundsynchronisierigs-Uftrag usgfÃŧehrt", + "ios_debug_info_processes_queued": "{count, plural, one {{count} Hindergrundsprozäss i de Waarteschlange} other {{count} Hindergrundsprozäss i de Waarteschlange}}", + "ios_debug_info_processing_ran_at": "Prozess lauft {dateTime}", + "items_count": "{count, plural, one {# Iitrag} other {# Iiträg}}", + "jobs": "Ufgobe", + "keep": "Bhalte", + "keep_all": "Alli bhalte", + "keep_this_delete_others": "Das bhalte, anderi lÃļsche", + "kept_this_deleted_others": "Die Datei bhalte und {count, plural, one {# Datei} other {# Dateie}} glÃļscht", + "keyboard_shortcuts": "TaschtechÃŧrzel", + "language": "Sproch", + "language_no_results_subtitle": "Versuäch's mit eme andere Suechbegriff", + "language_no_results_title": "Kei Sproch gfundä", + "language_search_hint": "Sproch durchsuechä...", + "language_setting_description": "Wähl dini bevorzugti Sproch", + "large_files": "Grossi Dateie", + "last": "Letschte", + "last_months": "{count, plural, one {Letscht Monet} other {Letschti # MÃļnet}}", + "last_seen": "Zletscht gseh", + "latest_version": "Aktuelli Version", + "latitude": "Breitegraad", + "leave": "Verlaa", + "leave_album": "Album verlaa", + "lens_model": "Objektivmodäll", + "let_others_respond": "Antworte zuelaa", + "level": "Level", + "library": "Bibliothek", + "library_add_folder": "Ordner dezuefÃŧege", + "library_edit_folder": "Ordner bearbeite", + "library_options": "Bibliotheksoptione", + "library_page_device_albums": "Albene uf dem Grät", + "library_page_new_album": "Neus Album", + "library_page_sort_asset_count": "Aazahl vo de Inhält", + "library_page_sort_created": "Zletscht erstellt", + "library_page_sort_last_modified": "Zletscht bearbeitet", + "library_page_sort_title": "Titel vom Album", + "licenses": "Lizenze", + "light": "Hell", + "like": "Gfallt mir", + "like_deleted": "Like glÃļscht", + "link_motion_video": "Bewegigsvideo verchnÃŧpfe", + "link_to_oauth": "Mit OAuth verchnÃŧpfe", + "linked_oauth_account": "VerchnÃŧpftes OAuth-Chonto", + "list": "Lischte", + "loading": "Lade", + "loading_search_results_failed": "Lade vo Suechergäbnis isch fählgschlage", + "local": "Lokal", + "local_asset_cast_failed": "E Datei, wo nÃļd uf de Server ufeglade worde isch, chan nÃļd gcastet werde", + "local_assets": "Lokali Dateie", + "local_media_summary": "Zämmefassig vo de lokale Medie", + "local_network": "Lokals Nätzwerk", + "local_network_sheet_info": "D'App stellt Ãŧber die URL e Verbindig zum Server her, wenn siäs aagegänne WLAN-Näzwerk verwändet", + "location": "Standort", + "location_permission": "Standort Gnähmigung", + "location_permission_content": "Zum d'automatischi Umschaltfunktioon nutze z'chÃļnne, bruucht Immich en gnaui Standoortberechtigig, damit's de Name vom aktuelle WLAN-Näzwerk chan usefinde", + "location_picker_choose_on_map": "Uf de Charte uswähle", + "location_picker_latitude_error": "GÃŧlltige Breitegraad iigä", + "location_picker_latitude_hint": "Breitegraad iigä", + "location_picker_longitude_error": "GÃŧlltige Längegraad iigä", + "location_picker_longitude_hint": "Längegraad iigä", + "lock": "Spärre", + "locked_folder": "Gspärrter Ordner", + "log_detail_title": "Protokoll Details", + "log_out": "Abmälde", + "log_out_all_devices": "Alli Grät abmälde", + "logged_in_as": "Aagmäldet als {user}", + "logged_out_all_devices": "Alli Grät abgmäldet", + "logged_out_device": "Grät abgmäldet", + "login": "Aamälde", + "login_disabled": "Login isch deaktiviert", + "login_form_api_exception": "API Fähler. Bitte d'Serveradressa ÃŧberprÃŧäfe und noochemaa probiere.", + "login_form_back_button_text": "Zrugg", + "login_form_email_hint": "dini@email.ch", + "login_form_endpoint_hint": "http://din-server-ip:port", + "login_form_endpoint_url": "Server-URL", + "login_form_err_http": "Bitte gib http:// oder https:// aa", + "login_form_err_invalid_email": "UungÃŧltigi E-Mail", + "login_form_err_invalid_url": "UungÃŧltigi URL", + "login_form_err_leading_whitespace": "Läärzeiche am Aafang", + "login_form_err_trailing_whitespace": "Läärzeiche am Ändi", + "login_form_failed_get_oauth_server_config": "Fähler bim Login per OAuth, bitte Server-URL ÃŧberprÃŧäfe", + "login_form_failed_get_oauth_server_disable": "D'OAuth-Funktion isch uf däm Server nÃļd verfÃŧegbar", + "login_form_failed_login": "Fähler bim Login, bitte ÃŧberprÃŧäf d'Server-URL, dini E-Mail oder's Passwoort", + "login_form_handshake_exception": "Fähler bim Verbindigsufbau mit em Server. Falls du en sälbscht-underschriibigs Zärtifikaat verwändisch, aktivier d'UunderstÃŧtzig defÃŧr i de Iistellige.", + "login_form_password_hint": "Passwort", + "login_form_save_login": "Aagmäldet bliibe", + "login_form_server_empty": "Serveradressa iigä.", + "login_form_server_error": "Es het nÃļd chÃļnne Verbindig zum Server ufgnoh werde.", + "login_has_been_disabled": "D'Aamäldig isch deaktiviert worde.", + "login_password_changed_error": "Fähler bim Ändere vo dim Passwort", + "login_password_changed_success": "Passwort erfolgriich gänderet", + "logout_all_device_confirmation": "Bisch sicher, dass du alli Grät abmälde wetsch?", + "logout_this_device_confirmation": "Bisch sicher, dass du das Grät abmälde wetsch?", + "logs": "Protokoll", + "longitude": "Längegrad", + "look": "Erscheinigsbild", + "loop_videos": "Loop-Videos", + "loop_videos_description": "Aktiviere die Option, um i dr Detailahsicht e automatische Videoschlaufe z erstelle.", + "main_branch_warning": "Du bruuchsch e Entwickler-Version. Mir empfehled dringend, e Release-Version z verwände!", + "main_menu": "HauptmenÃŧ", + "maintenance_description": "Immich isch i de Wartigmodus versetzt worde.", + "maintenance_end": "Wartigsmodus beendä", + "maintenance_end_error": "Wartigmodus het nÃļd chenne beendet werde.", + "maintenance_logged_in_as": "Aktuell aagmäldet als {user}", + "maintenance_title": "VorÃŧbergehend nÃļd verfÃŧgbar", + "make": "Markä", + "manage_geolocation": "Standort verwaltä", + "manage_media_access_rationale": "Die Berechtigung wird bruuch, um Dateie ordnigsgemäss i de Papirkorb z verschiebe und wieder herzstelle.", + "manage_media_access_settings": "Iistellige Ãļffne", + "manage_media_access_subtitle": "Erlaub Immich, Mediedateie z verwalte und z verschiebe.", + "manage_media_access_title": "Verwaltig vo Mediedateie", + "manage_shared_links": "Freigäbeni Links verwalte", + "manage_sharing_with_partners": "Gmeinsami Nutzig mit Partner verwalte", + "manage_the_app_settings": "App-Iistellige verwalte", + "manage_your_account": "Dis Chonto verwalte", + "manage_your_api_keys": "Dini API-SchlÃŧssel verwalte", + "manage_your_devices": "Dini iigloggte Gerät verwalte", + "manage_your_oauth_connection": "Dini OAuth-VerchnÃŧpfig verwalte", + "map": "Charte", + "map_assets_in_bounds": "{count, plural, =0 {Kei Fotos i däm Gebiet} one {# Foto} other {# Fotos}}", + "map_cannot_get_user_location": "Standort het nÃļd chenne ermittelt werde", + "map_location_dialog_yes": "Jo", + "map_location_picker_page_use_location": "Ufnahmeort verwände", + "map_location_service_disabled_content": "D’Ortigsdienscht mÃŧend aktiviert si, um Inhält am aktuelle Standort aazeige z chÃļnne. Wotsch d’Ortigsdienscht jetzt aktiviere?", + "map_location_service_disabled_title": "Ortigsdienscht deaktiviert", + "map_marker_for_images": "Charte-Markierige fÃŧr Bilder, wo i {city}, {country} ufgnoh worde sind", + "map_marker_with_image": "Charte-Markierig mit Bild", + "map_no_location_permission_content": "D’Ortigsdienscht mÃŧend aktiviert si, um Inhält am aktuelle Standort aazeige z chÃļnne. Wotsch d’Ortigsdienscht jetzt aktiviere?", + "map_no_location_permission_title": "Kei Zuegriff uf dä Standort", + "map_settings": "Charte-Iistellige", + "map_settings_dark_mode": "Dunklä Modus", + "map_settings_date_range_option_day": "Letschti 24 Stund", + "map_settings_date_range_option_days": "Letschte {days} Täg", + "map_settings_date_range_option_year": "Letschtes Johr", + "map_settings_date_range_option_years": "Letschte {years} Johre", + "map_settings_dialog_title": "Charte-Iistellige", + "map_settings_include_show_archived": "Archivierti azeige", + "map_settings_include_show_partners": "Partner iibeziehä", + "map_settings_only_show_favorites": "Nur Favoritä azeige", + "map_settings_theme_settings": "Chartedesign", + "map_zoom_to_see_photos": "Ansicht chliiner mache, um Fotos z gseh", + "mark_all_as_read": "Alli als gläse markiere", + "mark_as_read": "Als gläse markiere", + "marked_all_as_read": "Alli als gläse markiert", + "matches": "Treffer", + "matching_assets": "Passendi Dateie", + "media_type": "Medietyp", + "memories": "Erinerrige", + "memories_all_caught_up": "Alles ufgholt", + "memories_check_back_tomorrow": "Chum morn wieder verbi fÃŧr wiiteri Erinnerige", + "memories_setting_description": "Verwalt, was du i dine Erinnerige gsehsch", + "memories_start_over": "Erneut beginne", + "memories_swipe_to_close": "Nach obe wÃŧschä zum Schliesse", + "memory": "Erinnerig", + "memory_lane_title": "Foto-Erinnerige {title}", + "menu": "MenÃŧ", + "merge": "ZämmefÃŧehre", + "merge_people": "Persone ZämmefÃŧehre", + "merge_people_limit": "Du chasch maximal 5 Gsichter uf einisch zämmefÃŧehre", + "merge_people_prompt": "Wotsch die Persone zämmefÃŧehre? Die Aktion cha nÃļd rÃŧckgängig gmacht werde.", + "merge_people_successfully": "Persone erfolgrich zämmegfÃŧhrt", + "merged_people_count": "{count, plural, one {# Person} other {# Persone}} zämmegfÃŧegt", + "minimize": "Minimierä", + "minute": "Minute", + "minutes": "Minuten", + "missing": "Fählendi", + "mobile_app": "Mobile App", + "mobile_app_download_onboarding_note": "Herunterlade vo dr mobile App Ãŧber eini vo de folgende MÃļglichkeitä", + "model": "Modäll", + "month": "Monet", + "monthly_title_text_date_format": "MMMM y", + "more": "Meh", + "move": "Verschiebä", + "move_off_locked_folder": "Us em gschperrte Ordner verschiebe", + "move_to": "Verschiebe noch", + "move_to_lock_folder_action_prompt": "{count} zum gschperrte Ordner hinzuegfÃŧegt", + "move_to_locked_folder": "I dä gschperrte Ordner verschiebe", + "move_to_locked_folder_confirmation": "Die Fotos und Videos werde us allne Albe entfernet und chÃļnnd nume no im gschperrte Ordner azeigt werde", + "moved_to_archive": "{count, plural, one {# Datei} other {# Dateie}} archiviert", + "moved_to_library": "{count, plural, one {# Datei} other {# Dateie}} i d'Bibliotheek verschobe", + "moved_to_trash": "I de Papiirschorb verschobe", + "multiselect_grid_edit_date_time_err_read_only": "S Daatum und d'Uhrziit vo schriibgschÃŧtztem Inehalt chan nÃļd veränderet werde, Ãŧberspringe", + "multiselect_grid_edit_gps_err_read_only": "De Uufnaameort vo schriibgschÃŧtztem Inhält chan nÃļd veränderet werde, Ãŧberspringe", + "mute_memories": "Erinnerige stumm schalte", + "my_albums": "Mini Albä", + "name": "Name", + "name_or_nickname": "Name oder Spitzname", + "navigate": "Navigation", + "navigate_to_time": "Navigier zu Zyt", + "network_requirement_photos_upload": "Mobili Date verwände, zum FÃļteli sichere", + "network_requirement_videos_upload": "Mobili Date verwände, zum Videos sichere", + "network_requirements": "Aaforderige ans Nätzwerk", + "network_requirements_updated": "Nätzwerk-Abhängigkeite händ sich gänderet, d'Backup-Warteschlange wird zrugggsetzt", + "networking_settings": "Nätzwerk", + "networking_subtitle": "Verwaltig vo Server-Ändpunkt-Iistellige", + "never": "Niemols", + "new_album": "Neus Album", + "new_api_key": "Neue API-SchlÃŧssel", + "new_date_range": "Neue Datumsberiich", + "new_password": "Neus Passwort", + "new_person": "Neui Person", + "new_pin_code": "Neue PIN-Code", + "new_pin_code_subtitle": "Das isch din erschte Zuegriff uf de gspärrti Ordner. Erstell en PIN-Code, um sicher uf die Siite z'cho", + "new_timeline": "Neui Zytschine", + "new_update": "Neus Update", + "new_user_created": "Neue Benutzer isch erstellt worde", + "new_version_available": "NEUI VERSION VERFÜEGBAR", + "newest_first": "Neuschti z'erscht", + "next": "Wiiter", + "next_memory": "Nächschti Erinnerig", + "no": "Nei", + "no_albums_message": "Erstell es Album, zum dini FÃļteli und Videos organisiere", + "no_albums_with_name_yet": "Es gseht eso uus, as hättisch no kei Albe mit däm Name.", + "no_albums_yet": "Es gseht eso uus, as hättisch no kei Albene", + "no_archived_assets_message": "Archiviär FÃļteli und Videos, zum si us dinere Foto-Aasicht z'entfärne", + "no_assets_message": "KLICK, UM DIS ERSHCHTS FÖTELI UFEZLADE", + "no_assets_to_show": "Kei Vorschau vorhande", + "no_cast_devices_found": "Kei Grät zum Überträge gfunde", + "no_checksum_local": "PrÃŧäfsumme nÃļd verfÃŧegbar - chan lokali Datei/e nÃļd lade", + "no_checksum_remote": "PrÃŧäfsumme nÃļd verfÃŧegbar - chan entfernti Datei/e nÃļd lade", + "no_devices": "Kei verwändeti Grät", + "no_duplicates_found": "Es sind kei Duplikäät gfunde worde.", + "no_exif_info_available": "Kei EXIF-Infos vorhande", + "no_explore_results_message": "Lad wiiteri FÃļteli uufe, zum dini Sammlig z'entdäcke.", + "no_favorites_message": "FÃŧeg Favoriite dezue, zum dini beschte Bild und Videos schnäll finde", + "no_libraries_message": "Erstell e externi Bibliotheek, zum dini FÃļteli und Videos aluäge", + "no_local_assets_found": "Kei lokali Datei mit dä PrÃŧäfsumme gfunde", + "no_location_set": "Kei Standoort feschtgleit", + "no_locked_photos_message": "FÃļteli und Videos im gspärrte Ordner sind versteckt und wärded nÃļd aazeigt, wänn du dini Bibliotheek dursuächsch.", + "no_name": "Kei Name", + "no_notifications": "Kei Benochrichtigunge", + "no_people_found": "Kei passendi Persone gfunde", + "no_places": "Kei Ört", + "no_remote_assets_found": "Kei entfernti Dateie mit dä PrÃŧäfsumme gfunde", + "no_results": "Kei Ergebniss", + "no_results_description": "Versuech's mit eme SynonÃŧm oder eme allgemäinere Stichwort", + "no_shared_albums_message": "Erstell es Album, zum FÃļteli und Videos mit Persone i dim Näzwerk teile", + "no_uploads_in_progress": "Kei Upload am Laufä", + "not_allowed": "NÃļd erlaubt", + "not_available": "N/A", + "not_in_any_album": "I keinem Album", + "not_selected": "NÃļd usgwählt", + "note_apply_storage_label_to_previously_uploaded assets": "Hiwiis: Zum e Spycherpfad-Bezeichnig aawehde, start de", + "notes": "Notize", + "nothing_here_yet": "No nÃŧt do", + "notification_permission_dialog_content": "Zum Benachrichtige aktiviere, navigier zu Iistellige und drÃŧck \"Erlaube\".", + "notification_permission_list_tile_content": "Erlaub Berechtigunge fÃŧr Benochrichtigunge.", + "notification_permission_list_tile_enable_button": "Aktivier Benochrichtigunge", + "notification_permission_list_tile_title": "Benochrichtigungs-Berechtigig", + "notification_toggle_setting_description": "E-Mail-Benochrichtigunge aktiviere", + "notifications": "Benochrichtigunge", + "notifications_setting_description": "Benochrichtigunge verwalte", + "oauth": "OAuth", + "obtainium_configurator": "Obtainium Konfiguratior", + "obtainium_configurator_instructions": "Du chasch Obtainium bruuche, zum d'App direkt us de Github Releases z'instaliere oder z'aktualisiere. Bitte mach dezuene en API-SchlÃŧssel und wähl en Varianti us, zum en Obtainium-Konfigurationslink z'mache", + "ocr": "OCR", + "official_immich_resources": "Offizielli Immich Quelle", + "offline": "Offline", + "offset": "Verschiebig", + "ok": "Ok", + "oldest_first": "Älteschti zerscht", + "on_this_device": "Uf däm Grät", + "onboarding": "Iistig", + "onboarding_locale_description": "Wähl dini bevorzugti Sprooch. Du chasch die au spÃļter i dine Iistellige ändere.", + "onboarding_privacy_description": "Diä folgende (optionali) Funktione hänged vo externä Diänscht ab und chÃļnd jederziit i de Iistellige deaktiviärt wärde." +} diff --git a/i18n/gu.json b/i18n/gu.json index 0967ef424b..e942301430 100644 --- a/i18n/gu.json +++ b/i18n/gu.json @@ -1 +1,17 @@ -{} +{ + "about": "āĒĩāĒŋāĒļā̇", + "account": "āĒ–āĒžāǤā́āĒ‚", + "account_settings": "āĒ–āĒžāǤāĒžāǍāĒžāĒ‚ āǏā̇āǟāĒŋāĒ‚āĒ—āĢāǏ", + "active": "āǏāĒ•āĢāǰāĒŋāǝ", + "active_count": "āǏāĒ•āĢāǰāĒŋāǝ: {count}", + "activity": "āĒĒāĢāǰāĒĩā̃āǤāĢāǤāĒŋ", + "add": "āljāĒŽā̇āǰāĢ‹", + "add_a_description": "āĒāĒ• āĒĩāǰāĢāĒŖāǍ āljāĒŽā̇āǰāĢ‹", + "add_a_location": "āĒāĒ• āǏāĢāĒĨāĒžāǍ āljāĒŽā̇āǰāĢ‹", + "add_a_name": "āĒāĒ• āǍāĒžāĒŽ āljāĒŽā̇āǰāĢ‹", + "add_a_title": "āĒāĒ• āĒļāĢ€āǰāĢāǎāĒ• āljāĒŽā̇āǰāĢ‹", + "add_birthday": "āĒāĒ• āǜāǍāĢāĒŽāĒĻāĒŋāĒĩāǏ āljāĒŽā̇āǰāĢ‹", + "add_endpoint": "āĒāǍāĢāĒĄāĒĒāĢ‹āLJāǍāĢāǟ āljāĒŽā̇āǰāĢ‹", + "add_location": "āǏāĢāĒĨāĒžāǍ āljāĒŽā̇āǰāĢ‹", + "add_partner": "āǏāĒžāĒĨāĢ€ āljāĒŽā̇āǰāĢ‹" +} diff --git a/i18n/he.json b/i18n/he.json index 362f2b72d3..29acf7a029 100644 --- a/i18n/he.json +++ b/i18n/he.json @@ -7,6 +7,7 @@ "action_common_update": "×ĸדכון", "actions": "פ×ĸולו×Ē", "active": "פ×ĸיל", + "active_count": "פ×ĸיל: {count}", "activity": "פ×ĸילו×Ē", "activity_changed": "הפ×ĸילו×Ē {enabled, select, true {מופ×ĸל×Ē} other {מושב×Ē×Ē}}", "add": "הוספה", @@ -31,6 +32,7 @@ "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": "הוספ×Ē ×§×™×Š×•×¨", @@ -73,7 +75,7 @@ "disable_login": "השב×Ē ×›× ×™×Ą×”", "duplicate_detection_job_description": "הפ×ĸל למיד×Ē ×ž×›×•× ×” ×ĸל ×Ēמונו×Ē ×›×“×™ לזהו×Ē ×Ēמונו×Ē ×“×•×ž×•×Ē. נ׊×ĸן ×ĸל חיפוש חכם", "exclusion_pattern_description": "דפוסי החרגה מאפשרים לך לה×Ē×ĸלם מקב×Ļים ומ×Ēיקיו×Ē ×‘×ĸ×Ē ×Ą×¨×™×§×Ē ×”×Ą×¤×¨×™×™×” שלך. זה שימושי אם יש לך ×Ēיקיו×Ē ×”×ž×›×™×œ×•×Ē ×§×‘×Ļים שאינך רו×Ļה לייבא, כגון קוב×Ļי RAW.", - "external_library_management": "ניהול ספרייה חי×Ļוני×Ē", + "export_config_as_json_description": "הורד×Ē ×”×’×“×¨×•×Ē ×”×ž×ĸרכ×Ē ×”× ×•×›×—×™×•×Ē ×›×§×•×‘×Ĩ JSON", "face_detection": "אי×Ēור פנים", "face_detection_description": "א×Ēר א×Ē ×”×¤× ×™× ב×Ēמונו×Ē ×‘××ž×Ļ×ĸו×Ē ×œ×ž×™×“×Ē ×ž×›×•× ×”. ×ĸבור סרטונים, רק ה×Ēמונה הממוז×ĸר×Ē × ×œ×§×—×Ē ×‘×—×Š×‘×•×Ÿ. \"ר×ĸנון\" מ×ĸבד (מחדש) א×Ē ×›×œ ה×Ēמונו×Ē. \"איפוס\" מנקה ×‘× ×•×Ą×Ŗ א×Ē ×›×œ × ×Ēוני הפנים הנוכחיים. \"חסרים\" ×ž×•×Ą×™×Ŗ ל×Ēור ×Ēמונו×Ē ×Š×œ× ×ĸובדו ×ĸדיין. לאחר שאי×Ēור הפנים הושלם, פנים שאו×Ēרו י×ĸמדו ב×Ēור לזיהוי פנים המשייך או×Ēן לאנשים קיימים או חדשים.", "facial_recognition_job_description": "קב×Ĩ פנים שאו×Ēרו ל×Ēוך אנשים. שלב זה מור×Ĩ לאחר השלמ×Ē ××™×Ēור פנים. \"איפוס\" מקב×Ĩ (מחדש) א×Ē ×›×œ הפר×Ļופים. \"חסרים\" ×ž×•×Ą×™×Ŗ ל×Ēור פנים שלא הוק×Ļה להם אדם.", @@ -106,17 +108,19 @@ "job_not_concurrency_safe": "משימה זו אינה בטוחה במקביל.", "job_settings": "הגדרו×Ē ×ž×Š×™×ž×”", "job_settings_description": "ניהול בו-זמניו×Ē ×Š×œ משימה", - "job_status": "מ×Ļב משימה", "jobs_delayed": "{jobCount, plural, other {# ×ĸוכבו}}", "jobs_failed": "{jobCount, plural, other {# נכשלו}}", + "jobs_over_time": "משימו×Ē ×œ××•×¨×š זמן", "library_created": "נו×Ļרה ספרייה: {library}", "library_deleted": "ספרייה נמחקה", + "library_details": "פרטי ספריה", "library_scanning": "סריקה ×Ēקופ×Ēי×Ē", "library_scanning_description": "הגדר סריק×Ē ×Ą×¤×¨×™×™×” ×Ēקופ×Ēי×Ē", "library_scanning_enable_description": "אפ׊ר סריק×Ē ×Ą×¤×¨×™×™×” ×Ēקופ×Ēי×Ē", "library_settings": "ספרייה חי×Ļוני×Ē", "library_settings_description": "ניהול הגדרו×Ē ×Ą×¤×¨×™×™×” חי×Ļוני×Ē", "library_tasks_description": "סרוק ספריו×Ē ×—×™×Ļוניו×Ē ×ĸבור ×Ēמונו×Ē ×—×“×Š×•×Ē ×•/או שהש×Ēנו", + "library_updated": "ספריה מ×ĸודכנ×Ē", "library_watching_enable_description": "×ĸקוב אחר שינויי קב×Ļים בספריו×Ē ×—×™×Ļוניו×Ē", "library_watching_settings": "×Ļפייה בספרייה [ניסיוני]", "library_watching_settings_description": "×ĸקוב אוטומטי×Ē ××—×¨ שינויי קב×Ļים", @@ -171,6 +175,10 @@ "machine_learning_smart_search_enabled": "אפ׊ר חיפוש חכם", "machine_learning_smart_search_enabled_description": "אם מושב×Ē, ×Ēמונו×Ē ×œ× יקודדו לחיפוש חכם.", "machine_learning_url_description": "כ×Ēוב×Ē ×”-URL של ׊ר×Ē ×œ×ž×™×“×Ē ×”×ž×›×•× ×”. אם ני×Ē× ×Ē ×™×•×Ēר מכ×Ēוב×Ē URL אח×Ē, כל ׊ר×Ē ×™× ×•×Ą×” ניסיון אחד בכל פ×ĸם ×ĸד שאחד מהם יגיב בה×Ļלחה, לפי הסדר מהראשון ×ĸד האחרון. ׊ר×Ēים שלא מגיבים יוזנחו זמני×Ē ×ĸד שיחזרו להיו×Ē ×ž×§×•×•× ×™×.", + "maintenance_settings": "×Ēחזוקה", + "maintenance_settings_description": "ה×ĸבר×Ē Immich למ×Ļב ×Ēחזוקה.", + "maintenance_start": "ה×Ēחל×Ē ×ž×Ļב ×Ēחזוקה", + "maintenance_start_error": "ה×Ēחל×Ē ×ž×Ļב ×Ēחזוקה נכשלה.", "manage_concurrency": "ניהול בו-זמניו×Ē", "manage_log_settings": "ניהול הגדרו×Ē ×¨×™×Š×•× ביומן", "map_dark_style": "×ĸי×Ļוב כהה", @@ -261,10 +269,14 @@ "password_settings_description": "ניהול הגדרו×Ē ×Ą×™×Ą×ž×Ē ×”×Ēחברו×Ē", "paths_validated_successfully": "כל הנ×Ēיבים אומ×Ēו בה×Ļלחה", "person_cleanup_job": "ניקוי אדם", + "queue_details": "פרטי ה×Ēור", + "queues": "×Ēורי משימו×Ē", + "queues_page_description": "×ĸמוד ניהול ×Ēורי משימו×Ē", "quota_size_gib": "גודל מכסה (GiB)", "refreshing_all_libraries": "מר×ĸנן א×Ē ×›×œ הספריו×Ē", "registration": "רישום מנהל מ×ĸרכ×Ē", "registration_description": "מכיוון ׊א×Ēה המש×Ēמ׊ הראשון במ×ĸרכ×Ē, א×Ēה ×Ēוק×Ļה כמנהל וא×Ēה אחראי ×ĸל משימו×Ē × ×™×”×•×œ, ומש×Ēמשים נוספים ייוו×Ļרו ×ĸל ידך.", + "remove_failed_jobs": "הסר×Ē ×ž×Š×™×ž×•×Ē ×Š× ×›×Š×œ×•", "require_password_change_on_login": "דרוש מהמש×Ēמ׊ לשנו×Ē ×Ą×™×Ą×ž×” בכניסה הראשונה", "reset_settings_to_default": "אפץ הגדרו×Ē ×œ×‘×¨×™×¨×Ē ×”×ž×—×“×œ", "reset_settings_to_recent_saved": "אפץ הגדרו×Ē ×œ×”×’×“×¨×•×Ē ×Š× ×Š×ž×¨×• לאחרונה", @@ -277,8 +289,10 @@ "server_public_users_description": "כל המש×Ēמשים (׊ם ודוא\"ל) מופי×ĸים ב×ĸ×Ē ×”×•×Ą×¤×Ē ×ž×Š×Ēמ׊ לאלבומים משו×Ēפים. כאשר ה×Ēכונה מושב×Ē×Ē, רשימ×Ē ×”×ž×Š×Ēמשים ×Ēהיה זמינה רק למש×Ēמשים ב×ĸלי הרשאו×Ē × ×™×”×•×œ.", "server_settings": "הגדרו×Ē ×Š×¨×Ē", "server_settings_description": "ניהול הגדרו×Ē ×Š×¨×Ē", + "server_stats_page_description": "×ĸמוד ניהול סטטיסטיקו×Ē ×Š×¨×Ē", "server_welcome_message": "הוד×ĸ×Ē ×¤×Ēיחה", "server_welcome_message_description": "הוד×ĸה שמו×Ļג×Ē ×‘×ž×Ą×š הה×Ēחברו×Ē.", + "settings_page_description": "×ĸמוד ניהול הגדרו×Ē", "sidecar_job": "מטא-× ×Ēונים נלווים", "sidecar_job_description": "גלה או סנכרן מטא-× ×Ēונים נלווים ממ×ĸרכ×Ē ×”×§×‘×Ļים", "slideshow_duration_description": "מספר שניו×Ē ×œ×”×Ļג×Ē ×›×œ ×Ēמונה", @@ -398,6 +412,7 @@ "user_settings": "הגדרו×Ē ×ž×Š×Ēמ׊", "user_settings_description": "ניהול הגדרו×Ē ×ž×Š×Ēמ׊", "user_successfully_removed": "המש×Ēמ׊ {email} הוסר בה×Ļלחה.", + "users_page_description": "×ĸמוד ניהול מ׊×Ēמשים", "version_check_enabled_description": "אפ׊ר בדיק×Ē ×’×¨×Ą×”", "version_check_implications": "×Ēכונ×Ē ×‘×“×™×§×Ē ×”×’×¨×Ą×” מס×Ēמכ×Ē ×ĸל ×Ēקשור×Ē ×Ēקופ×Ēי×Ē ×ĸם github.com", "version_check_settings": "בדיק×Ē ×’×¨×Ą×”", @@ -428,6 +443,7 @@ "age_months": "גיל {months, plural, one {חודש #} other {# חודשים}}", "age_year_months": "גיל שנה 1, {months, plural, one {חודש #} other {# חודשים}}", "age_years": "{years, plural, other {גיל #}}", + "album": "אלבום", "album_added": "אלבום × ×•×Ą×Ŗ", "album_added_notification_setting_description": "קבל×Ē ×”×•×“×ĸ×Ē ×“×•×\"ל כאשר מוסיפים או×Ēך לאלבום משו×Ē×Ŗ", "album_cover_updated": "×ĸטיפ×Ē ×”××œ×‘×•× ×ĸודכנה", @@ -473,6 +489,7 @@ "allow_edits": "אפ׊ר ×ĸריכו×Ē", "allow_public_user_to_download": "אפ׊ר למש×Ēמ׊ ×Ļיבורי להוריד", "allow_public_user_to_upload": "אפ׊ר למש×Ēמ׊ ×Ļיבורי לה×ĸלו×Ē", + "allowed": "מורשה", "alt_text_qr_code": "×Ēמונ×Ē ×§×•×“ QR", "anti_clockwise": "נגד כיוון הש×ĸון", "api_key": "מפ×Ēח API", @@ -694,6 +711,7 @@ "check_corrupt_asset_backup_button": "ב×Ļ×ĸ בדיקה", "check_corrupt_asset_backup_description": "הר×Ĩ בדיקה זו רק ×ĸל Wi-Fi ולאחר שכל ה×Ēמונו×Ē ×’×•×‘×•. ההליך ×ĸשוי לקח×Ē ×›×ž×” דקו×Ē.", "check_logs": "בדוק יומני רישום", + "checksum": "Checksum", "choose_matching_people_to_merge": "בחר אנשים ×Ēואמים למיזוג", "city": "×ĸיר", "clear": "נקה", @@ -716,6 +734,7 @@ "collapse_all": "כוו×Ĩ הכל", "color": "×Ļב×ĸ", "color_theme": "×Ļב×ĸ ×ĸרכ×Ē × ×•×Š×", + "command": "פקודה", "comment_deleted": "×Ēגובה נמחקה", "comment_options": "אפשרויו×Ē ×Ēגובה", "comments_and_likes": "×Ēגובו×Ē & לייקים", @@ -964,6 +983,7 @@ "failed_to_unstack_assets": "ביטול ×ĸרימ×Ē ×Ēמונו×Ē × ×›×Š×œ×”", "failed_to_update_notification_status": "שגיאה ב×ĸדכון הה×Ēראה", "incorrect_email_or_password": "דוא\"ל או סיסמה שגויים", + "library_folder_already_exists": "מסלול הייבוא כבר מוגדר.", "paths_validation_failed": "{paths, plural, one {× ×Ēיב # נכשל} other {# × ×Ēיבים נכשלו}} אימו×Ē", "profile_picture_transparent_pixels": "×Ēמונו×Ē ×¤×¨×•×¤×™×œ אינן יכולו×Ē ×œ×›×œ×•×œ פיקסלים שקופים. נא להגדיל ו/או להזיז א×Ē ×”×Ēמונה.", "quota_higher_than_disk_size": "הגדר×Ē ×ž×›×Ą×” גבוהה יו×Ēר מגודל הדיסק", @@ -1078,6 +1098,7 @@ "external_network_sheet_info": "אם אינך מחובר ל־Wi‑Fi מו×ĸדת, האפליק×Ļיה ×Ēנסה לה×Ēחבר לשר×Ē ×œ×¤×™ הסדר מהרשימה שלמטה (מלמ×ĸלה למטה)", "face_unassigned": "לא מוק×Ļה", "failed": "נכשלו", + "failed_count": "נכשלו: {count}", "failed_to_authenticate": "ההזדהו×Ē × ×›×Š×œ×”", "failed_to_load_assets": "ט×ĸינ×Ē ×Ēמונו×Ē × ×›×Š×œ×”", "failed_to_load_folder": "ט×ĸינ×Ē ×Ēיקיה נכשלה", @@ -1107,6 +1128,7 @@ "folders_feature_description": "×ĸיון ב×Ē×Ļוג×Ē ×”×Ēיקייה ×ĸבור ה×Ēמונו×Ē ×•×”×Ą×¨×˜×•× ×™× שבמ×ĸרכ×Ē ×”×§×‘×Ļים", "forgot_pin_code_question": "שחכ×Ē ××Ē ×”-PIN שלך?", "forward": "קדימה", + "full_path": "מסלול מלא: {path}", "gcast_enabled": "Google Cast", "gcast_enabled_description": "×Ēכונה זא×Ē ×˜×•×ĸ× ×Ē ×ž×Š××‘×™× חי×Ļוניים מגוגל בכדי לפ×ĸול.", "general": "כללי", @@ -1137,12 +1159,14 @@ "header_settings_header_name_input": "׊ם כו×Ēר×Ē", "header_settings_header_value_input": "×ĸרך כו×Ēר×Ē", "headers_settings_tile_title": "כו×Ēרו×Ē ×¤×¨×•×§×Ą×™ מו×Ēאמו×Ē", + "height": "גובה", "hi_user": "היי {name}, ({email})", "hide_all_people": "הס×Ēר א×Ē ×›×œ האנשים", "hide_gallery": "הס×Ēר גלרייה", "hide_named_person": "הס×Ēר אדם {name}", "hide_password": "הס×Ēר סיסמה", "hide_person": "הס×Ēר אדם", + "hide_text_recognition": "הס×Ēר×Ē ×–×™×”×•×™ טקץט", "hide_unnamed_people": "הס×Ēר אנשים ללא ׊ם", "home_page_add_to_album_conflicts": "{added} ×Ēמונו×Ē × ×•×Ą×¤×• לאלבום {album}. {failed} ×Ēמונו×Ē ×›×‘×¨ נמ×Ļאו×Ē ×‘××œ×‘×•×.", "home_page_add_to_album_err_local": "לא ני×Ēן ×œ×”×•×Ą×™×Ŗ ×Ēמונו×Ē ×ž×§×•×ž×™×•×Ē ×œ××œ×‘×•× ×ĸדיין, מדלג", @@ -1188,6 +1212,7 @@ "import_path": "× ×Ēיב ייבוא", "in_albums": "ב{count, plural, one {אלבום #} other {# אלבומים}}", "in_archive": "בארכיון", + "in_year": "ב×ĸוד {year}", "include_archived": "כלול ארכיון", "include_shared_albums": "כלול אלבומים משו×Ēפים", "include_shared_partner_assets": "כלול ×Ēמונו×Ē ×Š×Š×•×Ēפו ×ĸ\"י השו×Ē×Ŗ", @@ -1233,6 +1258,8 @@ "let_others_respond": "אפ׊ר לאחרים להגיב", "level": "רמה", "library": "ספרייה", + "library_add_folder": "הוספ×Ē ×Ą×¤×¨×™×”", + "library_edit_folder": "×ĸריכ×Ē ×Ą×¤×¨×™×”", "library_options": "אפשרויו×Ē ×Ą×¤×¨×™×™×”", "library_page_device_albums": "אלבומים במכשיר", "library_page_new_album": "אלבום חדש", diff --git a/i18n/hi.json b/i18n/hi.json index 7f4f3dfb29..97c5443bd4 100644 --- a/i18n/hi.json +++ b/i18n/hi.json @@ -74,7 +74,6 @@ "disable_login": "⤞āĨ‰ā¤—ā¤ŋ⤍ ⤅⤕āĨā¤ˇā¤Ž ⤕⤰āĨ‡ā¤‚", "duplicate_detection_job_description": "ā¤¸ā¤Žā¤žā¤¨ ⤛ā¤ĩā¤ŋ⤝āĨ‹ā¤‚ ā¤•ā¤ž ā¤Ēā¤¤ā¤ž ā¤˛ā¤—ā¤žā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤏⤂ā¤Ē⤤āĨā¤¤ā¤ŋ⤝āĨ‹ā¤‚ ā¤Ē⤰ ā¤Žā¤ļāĨ€ā¤¨ ⤞⤰āĨā¤¨ā¤ŋ⤂⤗ ā¤šā¤˛ā¤žā¤ā¤‚āĨ¤ ā¤¯ā¤š ā¤•ā¤žā¤°āĨā¤¯ā¤•āĨā¤ˇā¤Žā¤¤ā¤ž ⤏āĨā¤Žā¤žā¤°āĨā¤Ÿ ⤖āĨ‹ā¤œ ā¤Ē⤰ ⤍ā¤ŋ⤰āĨā¤­ā¤° ⤕⤰⤤āĨ€ ā¤šāĨˆ", "exclusion_pattern_description": "Exclusion ā¤ĒāĨˆā¤Ÿā¤°āĨā¤¨ ⤆ā¤Ē⤕āĨ‹ ⤅ā¤Ē⤍āĨ€ ā¤˛ā¤žā¤‡ā¤ŦāĨā¤°āĨ‡ā¤°āĨ€ ⤕āĨ‹ ⤏āĨā¤•āĨˆā¤¨ ⤕⤰⤤āĨ‡ ā¤¸ā¤Žā¤¯ ā¤Ģā¤ŧā¤žā¤‡ā¤˛āĨ‹ā¤‚ ⤔⤰ ā¤Ģā¤ŧāĨ‹ā¤˛āĨā¤Ąā¤°āĨ‹ā¤‚ ⤕āĨ‹ ⤅⤍ā¤ĻāĨ‡ā¤–ā¤ž ⤕⤰⤍āĨ‡ ā¤ĻāĨ‡ā¤¤ā¤ž ā¤šāĨˆāĨ¤ ā¤¯ā¤š ⤉ā¤Ē⤝āĨ‹ā¤—āĨ€ ā¤šāĨˆ ⤝ā¤Ļā¤ŋ ⤆ā¤Ē⤕āĨ‡ ā¤Ēā¤žā¤¸ ⤐⤏āĨ‡ ā¤Ģā¤ŧāĨ‹ā¤˛āĨā¤Ąā¤° ā¤šāĨˆā¤‚ ⤜ā¤ŋā¤¨ā¤ŽāĨ‡ā¤‚ ⤐⤏āĨ€ ā¤Ģā¤ŧā¤žā¤‡ā¤˛āĨ‡ā¤‚ ā¤šāĨˆā¤‚ ⤜ā¤ŋ⤍āĨā¤šāĨ‡ā¤‚ ⤆ā¤Ē ā¤†ā¤¯ā¤žā¤¤ ā¤¨ā¤šāĨ€ā¤‚ ā¤•ā¤°ā¤¨ā¤ž ā¤šā¤žā¤šā¤¤āĨ‡ ā¤šāĨˆā¤‚, ⤜āĨˆā¤¸āĨ‡ RAW ā¤Ģā¤ŧā¤žā¤‡ā¤˛āĨ‡ā¤‚āĨ¤", - "external_library_management": "ā¤Ŧā¤žā¤šā¤°āĨ€ ā¤˛ā¤žā¤‡ā¤ŦāĨā¤°āĨ‡ā¤°āĨ€ ā¤ĒāĨā¤°ā¤Ŧ⤂⤧⤍", "face_detection": "ā¤ŽāĨā¤– ⤏⤂ā¤ļāĨ‹ā¤§ā¤¨", "face_detection_description": "ā¤Žā¤ļāĨ€ā¤¨ ⤞⤰āĨā¤¨ā¤ŋ⤂⤗ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤕āĨ‡ ⤏⤂ā¤Ē⤤āĨā¤¤ā¤ŋ⤝āĨ‹ā¤‚ ā¤ŽāĨ‡ā¤‚ ⤚āĨ‡ā¤šā¤°āĨ‹ā¤‚ ā¤•ā¤ž ā¤Ēā¤¤ā¤ž ā¤˛ā¤—ā¤žā¤ā¤‚āĨ¤ ā¤ĩāĨ€ā¤Ąā¤ŋ⤝āĨ‹ ⤕āĨ‡ ⤞ā¤ŋā¤, ⤕āĨ‡ā¤ĩ⤞ ā¤Ĩ⤂ā¤Ŧ⤍āĨ‡ā¤˛ ā¤Ē⤰ ā¤ĩā¤ŋā¤šā¤žā¤° ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆāĨ¤ \"⤏⤭āĨ€\" ā¤Ē⤰ā¤ŋ⤏⤂ā¤Ē⤤āĨā¤¤ā¤ŋ⤝āĨ‹ā¤‚ ⤕āĨ‹ (ā¤ĒāĨā¤¨ā¤ƒ) ā¤¸ā¤‚ā¤¸ā¤žā¤§ā¤ŋ⤤ ā¤•ā¤°ā¤¤ā¤ž ā¤šāĨˆāĨ¤ \"ā¤˛ā¤žā¤Ēā¤¤ā¤ž\" ⤉⤍ ā¤Ē⤰ā¤ŋ⤏⤂ā¤Ē⤤āĨā¤¤ā¤ŋ⤝āĨ‹ā¤‚ ⤕āĨ‹ ā¤•ā¤¤ā¤žā¤°ā¤Ŧā¤ĻāĨā¤§ ā¤•ā¤°ā¤¤ā¤ž ā¤šāĨˆ ⤜ā¤ŋ⤍āĨā¤šāĨ‡ā¤‚ ⤅⤭āĨ€ ⤤⤕ ā¤¸ā¤‚ā¤¸ā¤žā¤§ā¤ŋ⤤ ā¤¨ā¤šāĨ€ā¤‚ ⤕ā¤ŋā¤¯ā¤ž ā¤—ā¤¯ā¤ž ā¤šāĨˆāĨ¤ ā¤ĢāĨ‡ā¤¸ ā¤Ąā¤ŋ⤟āĨ‡ā¤•āĨā¤ļ⤍ ā¤ĒāĨ‚ā¤°ā¤ž ā¤šāĨ‹ā¤¨āĨ‡ ⤕āĨ‡ ā¤Ŧā¤žā¤Ļ ā¤Ēā¤šā¤šā¤žā¤¨āĨ‡ ā¤—ā¤ ⤚āĨ‡ā¤šā¤°āĨ‹ā¤‚ ⤕āĨ‹ ⤚āĨ‡ā¤šā¤°āĨ‡ ⤕āĨ€ ā¤Ēā¤šā¤šā¤žā¤¨ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤•ā¤¤ā¤žā¤°ā¤Ŧā¤ĻāĨā¤§ ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤ā¤—ā¤ž, ⤉⤍āĨā¤šāĨ‡ā¤‚ ā¤ŽāĨŒā¤œāĨ‚ā¤Ļā¤ž ā¤¯ā¤ž ā¤¨ā¤ ⤞āĨ‹ā¤—āĨ‹ā¤‚ ā¤ŽāĨ‡ā¤‚ ā¤¸ā¤ŽāĨ‚ā¤šā¤ŋ⤤ ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤ā¤—ā¤žāĨ¤", "facial_recognition_job_description": "ā¤¸ā¤ŽāĨ‚ā¤š ⤍āĨ‡ ⤞āĨ‹ā¤—āĨ‹ā¤‚ ā¤ŽāĨ‡ā¤‚ ⤚āĨ‡ā¤šā¤°āĨ‹ā¤‚ ā¤•ā¤ž ā¤Ēā¤¤ā¤ž ā¤˛ā¤—ā¤žā¤¯ā¤žāĨ¤ ā¤¯ā¤š ⤚⤰⤪ ā¤ĢāĨ‡ā¤¸ ā¤Ąā¤ŋ⤟āĨ‡ā¤•āĨā¤ļ⤍ ā¤ĒāĨ‚ā¤°ā¤ž ā¤šāĨ‹ā¤¨āĨ‡ ⤕āĨ‡ ā¤Ŧā¤žā¤Ļ ā¤šā¤˛ā¤¤ā¤ž ā¤šāĨˆāĨ¤ \"⤏⤭āĨ€\" ⤚āĨ‡ā¤šā¤°āĨ‹ā¤‚ ⤕āĨ‹ (ā¤ĒāĨā¤¨ā¤ƒ) ā¤¸ā¤ŽāĨ‚ā¤šā¤ŋ⤤ ā¤•ā¤°ā¤¤ā¤ž ā¤šāĨˆāĨ¤ \"ā¤˛ā¤žā¤Ēā¤¤ā¤ž\" ā¤•ā¤¤ā¤žā¤° ā¤ŽāĨ‡ā¤‚ ā¤ĩāĨ‡ ⤚āĨ‡ā¤šā¤°āĨ‡ ā¤šāĨˆā¤‚ ⤜ā¤ŋ⤍⤕āĨ‡ ⤞ā¤ŋā¤ ⤕āĨ‹ā¤ˆ ā¤ĩāĨā¤¯ā¤•āĨā¤¤ā¤ŋ ⤍ā¤ŋ⤝āĨā¤•āĨā¤¤ ā¤¨ā¤šāĨ€ā¤‚ ā¤šāĨˆāĨ¤", @@ -107,17 +106,21 @@ "job_not_concurrency_safe": "ā¤¯ā¤š ā¤•ā¤žā¤°āĨā¤¯ (⤜āĨ‰ā¤Ŧ) ā¤¸ā¤Žā¤ĩ⤰āĨā¤¤āĨ€-⤏āĨā¤°ā¤•āĨā¤ˇā¤ŋ⤤ ā¤¨ā¤šāĨ€ā¤‚ ā¤šāĨˆāĨ¤", "job_settings": "ā¤•ā¤žā¤°āĨā¤¯ (⤜āĨ‰ā¤Ŧ) ⤏āĨ‡ā¤Ÿā¤ŋ⤂⤗āĨā¤¸", "job_settings_description": "ā¤•ā¤žā¤°āĨā¤¯ (⤜āĨ‰ā¤Ŧ) ā¤¸ā¤Žā¤ĩ⤰āĨā¤¤āĨ€ā¤¤ā¤ž ā¤ĒāĨā¤°ā¤Ŧ⤂⤧ā¤ŋ⤤ ⤕⤰āĨ‡ā¤‚", - "job_status": "ā¤•ā¤žā¤°āĨā¤¯ (⤜āĨ‰ā¤Ŧ) ⤏āĨā¤Ĩā¤ŋ⤤ā¤ŋ", "jobs_delayed": "{jobCount, plural, other {# ā¤ĩā¤ŋ⤞⤂ā¤Ŧā¤ŋ⤤}}", "jobs_failed": "{jobCount, plural, other {# ⤅⤏ā¤Ģ⤞}}", "library_created": "⤍ā¤ŋ⤰āĨā¤Žā¤ŋ⤤ ⤏⤂⤗āĨā¤°ā¤š: {library}", "library_deleted": "⤏⤂⤗āĨā¤°ā¤š ā¤šā¤Ÿā¤ž ā¤Ļā¤ŋā¤¯ā¤ž ā¤—ā¤¯ā¤ž", + "library_details": "⤏⤂⤗āĨā¤°ā¤š ā¤ĩā¤ŋā¤ĩ⤰⤪", + "library_folder_description": "⤇⤂ā¤ĒāĨ‹ā¤°āĨā¤Ÿ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤ā¤• ā¤Ģā¤ŧāĨ‹ā¤˛āĨā¤Ąā¤° ā¤Ŧā¤¤ā¤žā¤ā¤‚āĨ¤ ⤇⤏ ā¤Ģā¤ŧāĨ‹ā¤˛āĨā¤Ąā¤° ⤕āĨ‹, ⤏ā¤Ŧā¤Ģā¤ŧāĨ‹ā¤˛āĨā¤Ąā¤°āĨā¤¸ ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ, ā¤‡ā¤ŽāĨ‡ā¤œ ⤔⤰ ā¤ĩāĨ€ā¤Ąā¤ŋ⤝āĨ‹ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤏āĨā¤•āĨˆā¤¨ ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤ā¤—ā¤žāĨ¤", + "library_remove_exclusion_pattern_prompt": "⤕āĨā¤¯ā¤ž ⤆ā¤Ē ā¤ĩā¤žā¤•ā¤ˆ ⤇⤏ ā¤ā¤•āĨā¤¸ā¤•āĨā¤˛āĨ‚ā¤œā¤¨ ā¤ĒāĨˆā¤Ÿā¤°āĨā¤¨ ⤕āĨ‹ ā¤šā¤Ÿā¤žā¤¨ā¤ž ā¤šā¤žā¤šā¤¤āĨ‡ ā¤šāĨˆā¤‚?", + "library_remove_folder_prompt": "⤕āĨā¤¯ā¤ž ⤆ā¤Ē ā¤ĩā¤žā¤•ā¤ˆ ⤇⤏ ⤇⤂ā¤ĒāĨ‹ā¤°āĨā¤Ÿ ā¤Ģā¤ŧāĨ‹ā¤˛āĨā¤Ąā¤° ⤕āĨ‹ ā¤šā¤Ÿā¤žā¤¨ā¤ž ā¤šā¤žā¤šā¤¤āĨ‡ ā¤šāĨˆā¤‚?", "library_scanning": "ā¤¸ā¤žā¤Žā¤¯ā¤ŋ⤕ ⤏āĨā¤•āĨˆā¤¨ā¤ŋ⤂⤗", "library_scanning_description": "ā¤¸ā¤žā¤Žā¤¯ā¤ŋ⤕ ā¤˛ā¤žā¤‡ā¤ŦāĨā¤°āĨ‡ā¤°āĨ€ ⤏āĨā¤•āĨˆā¤¨ā¤ŋ⤂⤗ ⤕āĨ‰ā¤¨āĨā¤Ģā¤ŧā¤ŋ⤗⤰ ⤕⤰āĨ‡ā¤‚", "library_scanning_enable_description": "ā¤¸ā¤žā¤Žā¤¯ā¤ŋ⤕ ā¤˛ā¤žā¤‡ā¤ŦāĨā¤°āĨ‡ā¤°āĨ€ ⤏āĨā¤•āĨˆā¤¨ā¤ŋ⤂⤗ ⤏⤕āĨā¤ˇā¤Ž ⤕⤰āĨ‡ā¤‚", "library_settings": "ā¤Ŧā¤žā¤šā¤°āĨ€ ⤏⤂⤗āĨā¤°ā¤š", "library_settings_description": "ā¤Ŧā¤žā¤šā¤°āĨ€ ⤏⤂⤗āĨā¤°ā¤š ⤏āĨ‡ā¤Ÿā¤ŋ⤂⤗ ā¤ĒāĨā¤°ā¤Ŧ⤂⤧ā¤ŋ⤤ ⤕⤰āĨ‡ā¤‚", "library_tasks_description": "⤍⤈ ⤔⤰/ā¤¯ā¤ž ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨā¤¤ā¤ŋ⤤ ⤏⤂ā¤Ē⤤āĨā¤¤ā¤ŋ⤝āĨ‹ā¤‚ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤Ŧā¤žā¤šā¤°āĨ€ ā¤˛ā¤žā¤‡ā¤ŦāĨā¤°āĨ‡ā¤°āĨ€ā¤œā¤ŧ ⤕āĨ‹ ⤏āĨā¤•āĨˆā¤¨ ⤕⤰āĨ‡ā¤‚", + "library_updated": "⤅ā¤ĻāĨā¤¯ā¤¤ā¤ŋ⤤ ā¤ĒāĨā¤¸āĨā¤¤ā¤•ā¤žā¤˛ā¤¯", "library_watching_enable_description": "ā¤ā¤•āĨā¤¸ā¤Ÿā¤°āĨā¤¨ā¤˛ ā¤˛ā¤žā¤‡ā¤ŦāĨā¤°āĨ‡ā¤°āĨ€ā¤œ ā¤ŽāĨ‡ā¤‚ ā¤Ŧā¤Ļā¤˛ā¤žā¤ĩāĨ‹ā¤‚ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤍ā¤ŋā¤—ā¤°ā¤žā¤¨āĨ€ ⤰⤖āĨ‡ā¤‚", "library_watching_settings": "ā¤ĒāĨā¤¸āĨā¤¤ā¤•ā¤žā¤˛ā¤¯ ⤍ā¤ŋā¤—ā¤°ā¤žā¤¨āĨ€ [ā¤ĒāĨā¤°ā¤žā¤¯āĨ‹ā¤—ā¤ŋ⤕]", "library_watching_settings_description": "ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨā¤¤ā¤ŋ⤤ ā¤Ģā¤ŧā¤žā¤‡ā¤˛āĨ‹ā¤‚ ā¤Ē⤰ ⤏āĨā¤ĩā¤šā¤žā¤˛ā¤ŋ⤤ ⤰āĨ‚ā¤Ē ⤏āĨ‡ ⤍⤜ā¤ŧ⤰ ⤰⤖āĨ‡ā¤‚", @@ -402,7 +405,6 @@ "user_restore_scheduled_removal": "⤉ā¤Ē⤝āĨ‹ā¤—⤕⤰āĨā¤¤ā¤ž ⤕āĨ‹ ā¤ĒāĨā¤¨ā¤°āĨā¤¸āĨā¤Ĩā¤žā¤Ēā¤ŋ⤤ ⤕⤰āĨ‡ā¤‚ - {date, date, long} ā¤Ē⤰ ā¤šā¤Ÿā¤žā¤¯ā¤ž ā¤œā¤žā¤¨ā¤ž ⤍ā¤ŋ⤰āĨā¤§ā¤žā¤°ā¤ŋ⤤ ā¤šāĨˆ", "user_settings": "⤉ā¤Ē⤝āĨ‹ā¤—⤕⤰āĨā¤¤ā¤ž ⤏āĨ‡ā¤Ÿā¤ŋ⤂⤗", "user_settings_description": "⤉ā¤Ē⤝āĨ‹ā¤—⤕⤰āĨā¤¤ā¤ž ⤏āĨ‡ā¤Ÿā¤ŋ⤂⤗ ā¤ĒāĨā¤°ā¤Ŧ⤂⤧ā¤ŋ⤤ ⤕⤰āĨ‡ā¤‚", - "user_successfully_removed": "⤉ā¤Ē⤝āĨ‹ā¤—⤕⤰āĨā¤¤ā¤ž {email} ⤕āĨ‹ ⤏ā¤Ģā¤˛ā¤¤ā¤žā¤ĒāĨ‚⤰āĨā¤ĩ⤕ ā¤šā¤Ÿā¤ž ā¤Ļā¤ŋā¤¯ā¤ž ā¤—ā¤¯ā¤ž ā¤šāĨˆāĨ¤", "version_check_enabled_description": "⤍⤈ ⤰ā¤ŋ⤞āĨ€ā¤œā¤ŧ ⤕āĨ€ ā¤œā¤žā¤ā¤š ⤕āĨ‡ ⤞ā¤ŋā¤ GitHub ā¤Ē⤰ ⤆ā¤ĩ⤧ā¤ŋ⤕ ⤅⤍āĨā¤°āĨ‹ā¤§ ⤏⤕āĨā¤ˇā¤Ž ⤕⤰āĨ‡ā¤‚", "version_check_implications": "⤏⤂⤏āĨā¤•⤰⤪ ā¤œā¤žā¤ā¤š ⤏āĨā¤ĩā¤ŋā¤§ā¤ž github.com ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ⤆ā¤ĩ⤧ā¤ŋ⤕ ā¤¸ā¤‚ā¤šā¤žā¤° ā¤Ē⤰ ⤍ā¤ŋ⤰āĨā¤­ā¤° ⤕⤰⤤āĨ€ ā¤šāĨˆ", "version_check_settings": "⤏⤂⤏āĨā¤•⤰⤪ ⤚āĨ‡ā¤•", @@ -971,6 +973,7 @@ "failed_to_unstack_assets": "ā¤Ē⤰ā¤ŋ⤏⤂ā¤Ē⤤āĨā¤¤ā¤ŋ⤝āĨ‹ā¤‚ ā¤•ā¤ž ā¤ĸāĨ‡ā¤° ⤖āĨ‹ā¤˛ā¤¨āĨ‡ ā¤ŽāĨ‡ā¤‚ ā¤ĩā¤ŋā¤Ģ⤞", "failed_to_update_notification_status": "⤏āĨ‚ā¤šā¤¨ā¤ž ⤕āĨ€ ⤏āĨā¤Ĩā¤ŋ⤤ā¤ŋ ⤅ā¤Ēā¤ĄāĨ‡ā¤Ÿ ⤕⤰⤍āĨ‡ ā¤ŽāĨ‡ā¤‚ ā¤ĩā¤ŋā¤Ģ⤞", "incorrect_email_or_password": "⤗⤞⤤ ā¤ˆā¤ŽāĨ‡ā¤˛ ā¤¯ā¤ž ā¤Ēā¤žā¤¸ā¤ĩ⤰āĨā¤Ą", + "library_folder_already_exists": "ā¤¯ā¤š ⤇⤂ā¤ĒāĨ‹ā¤°āĨā¤Ÿ ā¤Ēā¤žā¤Ĩ ā¤Ēā¤šā¤˛āĨ‡ ⤏āĨ‡ ā¤ŽāĨŒā¤œāĨ‚ā¤Ļ ā¤šāĨˆāĨ¤", "paths_validation_failed": "{paths, plural, one {# ā¤Ēā¤Ĩ} other {# ā¤Ēā¤Ĩ}} ⤏⤤āĨā¤¯ā¤žā¤Ē⤍ ā¤ŽāĨ‡ā¤‚ ā¤ĩā¤ŋā¤Ģ⤞ ā¤°ā¤šāĨ‡", "profile_picture_transparent_pixels": "ā¤ĒāĨā¤°āĨ‹ā¤Ģā¤ŧā¤žā¤‡ā¤˛ ⤚ā¤ŋ⤤āĨā¤°āĨ‹ā¤‚ ā¤ŽāĨ‡ā¤‚ ā¤Ēā¤žā¤°ā¤Ļ⤰āĨā¤ļāĨ€ ā¤Ēā¤ŋ⤕āĨā¤¸āĨ‡ā¤˛ ā¤¨ā¤šāĨ€ā¤‚ ā¤šāĨ‹ ⤏⤕⤤āĨ‡āĨ¤", "quota_higher_than_disk_size": "⤆ā¤Ē⤍āĨ‡ ā¤Ąā¤ŋ⤏āĨā¤• ā¤†ā¤•ā¤žā¤° ⤏āĨ‡ ⤅⤧ā¤ŋ⤕ ⤕āĨ‹ā¤Ÿā¤ž ⤍ā¤ŋ⤰āĨā¤§ā¤žā¤°ā¤ŋ⤤ ⤕ā¤ŋā¤¯ā¤ž ā¤šāĨˆ", @@ -1055,6 +1058,7 @@ "unable_to_update_user": "⤉ā¤Ē⤝āĨ‹ā¤—⤕⤰āĨā¤¤ā¤ž ⤕āĨ‹ ⤅ā¤ĻāĨā¤¯ā¤¤ā¤¨ ⤕⤰⤍āĨ‡ ā¤ŽāĨ‡ā¤‚ ā¤…ā¤¸ā¤Žā¤°āĨā¤Ĩ", "unable_to_upload_file": "ā¤Ģā¤žā¤‡ā¤˛ ⤅ā¤Ē⤞āĨ‹ā¤Ą ⤕⤰⤍āĨ‡ ā¤ŽāĨ‡ā¤‚ ā¤…ā¤¸ā¤Žā¤°āĨā¤Ĩ" }, + "exclusion_pattern": "ā¤Ŧā¤šā¤ŋ⤎āĨā¤•⤰⤪ ā¤ĒāĨˆā¤Ÿā¤°āĨā¤¨", "exif": "ā¤ā¤•āĨā¤¸ā¤ŋā¤Ģ", "exif_bottom_sheet_description": "ā¤ĩā¤ŋā¤ĩ⤰⤪ ⤜āĨ‹ā¤Ąā¤ŧāĨ‡ā¤‚..āĨ¤", "exif_bottom_sheet_description_error": "ā¤ĩā¤ŋā¤ĩ⤰⤪ ⤕āĨ‡ ⤆⤧āĨā¤¨āĨ€ā¤•⤰⤪ ⤕⤰⤍āĨ‡ ā¤ŽāĨ‡ā¤‚ ⤤āĨā¤°āĨā¤Ÿā¤ŋ ā¤šāĨā¤ˆ", @@ -1114,6 +1118,7 @@ "folders_feature_description": "ā¤Ģā¤ŧā¤žā¤‡ā¤˛ ⤏ā¤ŋ⤏āĨā¤Ÿā¤Ž ā¤Ē⤰ ā¤Ģā¤ŧāĨ‹ā¤ŸāĨ‹ ⤔⤰ ā¤ĩāĨ€ā¤Ąā¤ŋ⤝āĨ‹ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤Ģā¤ŧāĨ‹ā¤˛āĨā¤Ąā¤° ā¤ĻāĨƒā¤ļāĨā¤¯ ā¤ŦāĨā¤°ā¤žā¤‰ā¤œā¤ŧ ā¤•ā¤°ā¤¨ā¤ž", "forgot_pin_code_question": "⤅ā¤Ēā¤¨ā¤ž ā¤Ēā¤ŋ⤍ ⤭āĨ‚⤞ ā¤—ā¤?", "forward": "⤆⤗āĨ‡", + "full_path": "ā¤ĒāĨ‚ā¤°ā¤ž ā¤Ēā¤Ĩ: {path}", "gcast_enabled": "⤗āĨ‚⤗⤞ ā¤•ā¤žā¤¸āĨā¤Ÿ", "gcast_enabled_description": "ā¤¯ā¤š ⤏āĨā¤ĩā¤ŋā¤§ā¤ž ā¤•ā¤žā¤Ž ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤗āĨ‚⤗⤞ ⤏āĨ‡ ā¤Ŧā¤žā¤šāĨā¤¯ ā¤¸ā¤‚ā¤¸ā¤žā¤§ā¤¨ ⤞āĨ‹ā¤Ą ⤕⤰⤤āĨ€ ā¤šāĨˆāĨ¤", "general": "ā¤¸ā¤žā¤Žā¤žā¤¨āĨā¤¯", @@ -1150,6 +1155,7 @@ "hide_named_person": "ā¤ĩāĨā¤¯ā¤•āĨā¤¤ā¤ŋ ⤕āĨ‹ ⤛ā¤ŋā¤Ēā¤žā¤ā¤ {name}", "hide_password": "ā¤Ēā¤žā¤¸ā¤ĩ⤰āĨā¤Ą ⤛ā¤ŋā¤Ēā¤žā¤ā¤‚", "hide_person": "ā¤ĩāĨā¤¯ā¤•āĨā¤¤ā¤ŋ ⤛ā¤ŋā¤Ēā¤žā¤ā¤", + "hide_text_recognition": "⤟āĨ‡ā¤•āĨā¤¸āĨā¤Ÿ ā¤Ēā¤šā¤šā¤žā¤¨ ⤛ā¤ŋā¤Ēā¤žā¤ā¤", "hide_unnamed_people": "ā¤…ā¤¨ā¤žā¤Ž ⤞āĨ‹ā¤—āĨ‹ā¤‚ ⤕āĨ‹ ⤛āĨā¤Ēā¤žā¤ā¤‚", "home_page_add_to_album_conflicts": "{added} ⤏⤂ā¤Ē⤤āĨā¤¤ā¤ŋā¤¯ā¤žā¤‚ ā¤ā¤˛āĨā¤Ŧā¤Ž {album} ā¤ŽāĨ‡ā¤‚ ⤜āĨ‹ā¤Ąā¤ŧāĨ€ ā¤—ā¤ˆā¤‚. {failed} ⤏⤂ā¤Ē⤤āĨā¤¤ā¤ŋā¤¯ā¤žā¤‚ ā¤Ēā¤šā¤˛āĨ‡ ⤏āĨ‡ ā¤šāĨ€ ā¤ā¤˛āĨā¤Ŧā¤Ž ā¤ŽāĨ‡ā¤‚ ā¤šāĨˆā¤‚āĨ¤", "home_page_add_to_album_err_local": "⤅⤭āĨ€ ⤤⤕ ā¤ā¤˛āĨā¤Ŧā¤Ž ā¤ŽāĨ‡ā¤‚ ⤏āĨā¤Ĩā¤žā¤¨āĨ€ā¤¯ ⤏⤂ā¤Ē⤤āĨā¤¤ā¤ŋā¤¯ā¤žā¤‚ ā¤¨ā¤šāĨ€ā¤‚ ⤜āĨ‹ā¤Ąā¤ŧāĨ€ ā¤œā¤ž ⤏⤕āĨ€ā¤‚, ⤛āĨ‹ā¤Ąā¤ŧ ā¤Ļā¤ŋā¤¯ā¤ž ā¤—ā¤¯ā¤ž", @@ -1243,6 +1249,8 @@ "let_others_respond": "ā¤ĻāĨ‚⤏⤰āĨ‹ā¤‚ ⤕āĨ‹ ⤜ā¤ĩā¤žā¤Ŧ ā¤ĻāĨ‡ā¤¨āĨ‡ ā¤ĻāĨ‡ā¤‚", "level": "⤏āĨā¤¤ā¤°", "library": "ā¤ĒāĨā¤¸āĨā¤¤ā¤•ā¤žā¤˛ā¤¯", + "library_add_folder": "ā¤Ģā¤ŧāĨ‹ā¤˛āĨā¤Ąā¤° ⤜āĨ‹ā¤Ąā¤ŧāĨ‡ā¤‚", + "library_edit_folder": "ā¤Ģā¤ŧāĨ‹ā¤˛āĨā¤Ąā¤° ⤏⤂ā¤Ēā¤žā¤Ļā¤ŋ⤤ ⤕⤰āĨ‡ā¤‚", "library_options": "ā¤ĒāĨā¤¸āĨā¤¤ā¤•ā¤žā¤˛ā¤¯ ā¤ĩā¤ŋ⤕⤞āĨā¤Ē", "library_page_device_albums": "ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ā¤Ē⤰ ā¤ā¤˛āĨā¤Ŧā¤Ž", "library_page_new_album": "ā¤¨ā¤¯ā¤ž ā¤ā¤˛āĨā¤Ŧā¤Ž", @@ -1441,6 +1449,7 @@ "no_favorites_message": "⤅ā¤Ē⤍āĨ€ ⤏⤰āĨā¤ĩā¤ļāĨā¤°āĨ‡ā¤ˇāĨā¤  ⤤⤏āĨā¤ĩāĨ€ā¤°āĨ‡ā¤‚ ⤔⤰ ā¤ĩāĨ€ā¤Ąā¤ŋ⤝āĨ‹ ⤤āĨā¤°ā¤‚⤤ ā¤ĸāĨ‚⤂ā¤ĸ⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤Ē⤏⤂ā¤ĻāĨ€ā¤Ļā¤ž ⤜āĨ‹ā¤Ąā¤ŧāĨ‡ā¤‚", "no_libraries_message": "⤅ā¤Ē⤍āĨ€ ā¤Ģā¤ŧāĨ‹ā¤ŸāĨ‹ ⤔⤰ ā¤ĩāĨ€ā¤Ąā¤ŋ⤝āĨ‹ ā¤ĻāĨ‡ā¤–⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤ā¤• ā¤Ŧā¤žā¤šā¤°āĨ€ ā¤˛ā¤žā¤‡ā¤ŦāĨā¤°āĨ‡ā¤°āĨ€ ā¤Ŧā¤¨ā¤žā¤ā¤‚", "no_local_assets_found": "⤇⤏ ⤚āĨ‡ā¤•ā¤¸ā¤Ž ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ⤕āĨ‹ā¤ˆ ⤏āĨā¤Ĩā¤žā¤¨āĨ€ā¤¯ ⤏⤂ā¤Ē⤤āĨā¤¤ā¤ŋ ā¤¨ā¤šāĨ€ā¤‚ ā¤Žā¤ŋ⤞āĨ€", + "no_location_set": "⤕āĨ‹ā¤ˆ ⤏āĨā¤Ĩā¤žā¤¨ ⤍ā¤ŋ⤰āĨā¤§ā¤žā¤°ā¤ŋ⤤ ā¤¨ā¤šāĨ€ā¤‚", "no_locked_photos_message": "⤞āĨ‰ā¤• ⤕ā¤ŋā¤ ā¤—ā¤ ā¤Ģā¤ŧāĨ‹ā¤˛āĨā¤Ąā¤° ā¤ŽāĨ‡ā¤‚ ā¤ŽāĨŒā¤œāĨ‚ā¤Ļ ā¤Ģā¤ŧāĨ‹ā¤ŸāĨ‹ ⤔⤰ ā¤ĩāĨ€ā¤Ąā¤ŋ⤝āĨ‹ ⤛ā¤ŋā¤ĒāĨ‡ ā¤šāĨā¤ ā¤šāĨˆā¤‚ ⤔⤰ ⤜ā¤Ŧ ⤆ā¤Ē ⤅ā¤Ē⤍āĨ€ ā¤˛ā¤žā¤‡ā¤ŦāĨā¤°āĨ‡ā¤°āĨ€ ā¤ŦāĨā¤°ā¤žā¤‰ā¤œā¤ŧ ā¤¯ā¤ž ⤖āĨ‹ā¤œāĨ‡ā¤‚⤗āĨ‡ ⤤āĨ‹ ā¤ĩāĨ‡ ā¤Ļā¤ŋā¤–ā¤žā¤ˆ ā¤¨ā¤šāĨ€ā¤‚ ā¤ĻāĨ‡ā¤‚⤗āĨ‡āĨ¤", "no_name": "⤕āĨ‹ā¤ˆ ā¤¨ā¤žā¤Ž ā¤¨ā¤šāĨ€ā¤‚", "no_notifications": "⤕āĨ‹ā¤ˆ ⤏āĨ‚ā¤šā¤¨ā¤ž ā¤¨ā¤šāĨ€ā¤‚", @@ -1646,7 +1655,7 @@ "readonly_mode_enabled": "⤕āĨ‡ā¤ĩ⤞-ā¤Ēā¤ĸā¤ŧ⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤ŽāĨ‹ā¤Ą ⤏⤕āĨā¤ˇā¤Ž", "ready_for_upload": "⤅ā¤Ē⤞āĨ‹ā¤Ą ⤕āĨ‡ ⤞ā¤ŋā¤ ⤤āĨˆā¤¯ā¤žā¤°", "reassign": "ā¤ĒāĨā¤¨ā¤ƒ ā¤…ā¤¸ā¤žā¤‡ā¤¨", - "reassigned_assets_to_existing_person": "{count, plural, one {# asset} other {# assets}} ⤕āĨ‹ {name, select, null {an existing person} other {{name}}} ⤕āĨ‹ ā¤Ģā¤ŋ⤰ ⤏āĨ‡ ā¤…ā¤¸ā¤žā¤‡ā¤¨ ⤕ā¤ŋā¤¯ā¤ž ā¤—ā¤¯ā¤ž", + "reassigned_assets_to_existing_person": "{count, plural, one {# asset} other {# assets}} ⤕āĨ‹ {name, select, null {an existing person} other {{name}}}⤕āĨ‹ ā¤Ģā¤ŋ⤰ ⤏āĨ‡ ā¤…ā¤¸ā¤žā¤‡ā¤¨ ⤕ā¤ŋā¤¯ā¤ž ā¤—ā¤¯ā¤ž", "reassigned_assets_to_new_person": "{count, plural, one {# asset} other {# assets}} ⤕āĨ‹ ā¤ā¤• ā¤¨ā¤ ā¤ĩāĨā¤¯ā¤•āĨā¤¤ā¤ŋ ⤕āĨ‹ ā¤Ģā¤ŋ⤰ ⤏āĨ‡ ā¤…ā¤¸ā¤žā¤‡ā¤¨ ⤕ā¤ŋā¤¯ā¤ž ā¤—ā¤¯ā¤ž", "reassing_hint": "⤚⤝⤍ā¤ŋ⤤ ⤏⤂ā¤Ē⤤āĨā¤¤ā¤ŋ⤝āĨ‹ā¤‚ ⤕āĨ‹ ⤕ā¤ŋ⤏āĨ€ ā¤ŽāĨŒā¤œāĨ‚ā¤Ļā¤ž ā¤ĩāĨā¤¯ā¤•āĨā¤¤ā¤ŋ ⤕āĨ‹ ⤏āĨŒā¤‚ā¤ĒāĨ‡ā¤‚", "recent": "ā¤šā¤žā¤˛ ā¤šāĨ€ ā¤•ā¤ž", @@ -1956,6 +1965,7 @@ "show_slideshow_transition": "⤏āĨā¤˛ā¤žā¤‡ā¤Ą ā¤ļāĨ‹ ⤟āĨā¤°ā¤žā¤‚ā¤œā¤ŧā¤ŋā¤ļ⤍ ā¤Ļā¤ŋā¤–ā¤žā¤ā¤", "show_supporter_badge": "ā¤¸ā¤Žā¤°āĨā¤Ĩ⤕ ā¤Ŧā¤ŋ⤞āĨā¤˛ā¤ž", "show_supporter_badge_description": "ā¤¸ā¤Žā¤°āĨā¤Ĩ⤕ ā¤ŦāĨˆā¤œ ā¤Ļā¤ŋā¤–ā¤žā¤ā¤", + "show_text_recognition": "ā¤Ēā¤žā¤  ā¤Ēā¤šā¤šā¤žā¤¨ ā¤Ļā¤ŋā¤–ā¤žā¤ā¤", "show_text_search_menu": "⤟āĨ‡ā¤•āĨā¤¸āĨā¤Ÿ ⤖āĨ‹ā¤œ ā¤ŽāĨ‡ā¤¨āĨ‚ ā¤Ļā¤ŋā¤–ā¤žā¤ā¤", "shuffle": "ā¤Žā¤ŋā¤ļāĨā¤°ā¤Ŗ", "sidebar": "ā¤¸ā¤žā¤‡ā¤Ą ā¤Ŧā¤žā¤°", @@ -2026,6 +2036,7 @@ "tags": "⤟āĨˆā¤—āĨā¤¸", "tap_to_run_job": "⤜āĨ‰ā¤Ŧ ā¤šā¤˛ā¤žā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤟āĨˆā¤Ē ⤕⤰āĨ‡ā¤‚", "template": "ā¤–ā¤žā¤•ā¤ž", + "text_recognition": "ā¤Ēā¤žā¤  ā¤Ēā¤šā¤šā¤žā¤¨", "theme": "ā¤ĩā¤ŋ⤎⤝", "theme_selection": "ā¤ĨāĨ€ā¤Ž ⤚⤝⤍", "theme_selection_description": "⤆ā¤Ē⤕āĨ‡ ā¤ŦāĨā¤°ā¤žā¤‰ā¤œā¤ŧ⤰ ⤕āĨ€ ⤏ā¤ŋ⤏āĨā¤Ÿā¤Ž ā¤ĒāĨā¤°ā¤žā¤Ĩā¤Žā¤ŋā¤•ā¤¤ā¤ž ⤕āĨ‡ ā¤†ā¤§ā¤žā¤° ā¤Ē⤰ ā¤ĨāĨ€ā¤Ž ⤕āĨ‹ ⤏āĨā¤ĩā¤šā¤žā¤˛ā¤ŋ⤤ ⤰āĨ‚ā¤Ē ⤏āĨ‡ ā¤ĒāĨā¤°ā¤•ā¤žā¤ļ ā¤¯ā¤ž ⤅⤂⤧āĨ‡ā¤°āĨ‡ ā¤Ē⤰ ⤏āĨ‡ā¤Ÿ ⤕⤰āĨ‡ā¤‚", diff --git a/i18n/hr.json b/i18n/hr.json index 3dfed04233..f6fb458ce5 100644 --- a/i18n/hr.json +++ b/i18n/hr.json @@ -7,6 +7,7 @@ "action_common_update": "AÅžuriranje", "actions": "Akcije", "active": "Aktivno", + "active_count": "Aktivno:{count}", "activity": "Aktivnost", "activity_changed": "Aktivnost je {enabled, select, true {omogućena} other {onemogućena}}", "add": "Dodaj", @@ -31,6 +32,7 @@ "add_to_album_toggle": "Uključi/isključi odabir za {album}", "add_to_albums": "Dodaj u albume", "add_to_albums_count": "Dodaj u albume ({count})", + "add_to_bottom_bar": "Dodaj u", "add_to_shared_album": "Dodaj u dijeljeni album", "add_upload_to_stack": "Dodaj preneseno u skup", "add_url": "Dodaj URL", @@ -66,6 +68,7 @@ "confirm_reprocess_all_faces": "Jeste li sigurni da Åželite ponovno obraditi sva lica? Ovo će također obrisati imenovane osobe.", "confirm_user_password_reset": "Jeste li sigurni da Åželite poniÅĄtiti lozinku korisnika {user}?", "confirm_user_pin_code_reset": "Jeste li sigurni da Åželite resetirati PIN korisnika {user}?", + "copy_config_to_clipboard_description": "Kopiraj trenutne postavke sustava kao JSON objekt u međuspremnik", "create_job": "Stvori posao", "cron_expression": "Cron izraz", "cron_expression_description": "Postavite interval skeniranja koristeći cron format. Za viÅĄe informacija pogledajte npr. Crontab Guru", @@ -73,7 +76,8 @@ "disable_login": "Onemogući prijavu", "duplicate_detection_job_description": "Pokrenite strojno učenje na stavkama kako biste otkrili slične slike. Oslanja se na Pametno pretraÅživanje", "exclusion_pattern_description": "Uzorci izuzimanja omogućuju vam da ignorirate datoteke i mape prilikom skeniranja svoje biblioteke. Ovo je korisno ako imate mape koje sadrÅže datoteke koje ne Åželite uvesti, kao ÅĄto su RAW datoteke.", - "external_library_management": "Upravljanje vanjskom bibliotekom", + "export_config_as_json_description": "Preuzmi trenutnu konfiguraciju sustava kao JSON datoteku", + "external_libraries_page_description": "Administracijska stranica vanjskih programskih biblioteka", "face_detection": "Detekcija lica", "face_detection_description": "Detektirajte lica u stavkama pomoću strojnog učenja. Za videozapise se uzima u obzir samo sličica. \"OsvjeÅži\" (ponovno) obrađuje sve stavke. \"PoniÅĄti\" dodatno briÅĄe sve trenutne podatke o licu. \"Nedostaje\" stavlja u red čekanja stavke koje joÅĄ nisu obrađene. Detektirana lica bit će stavljena u red čekanja za prepoznavanje lica nakon ÅĄto se dovrÅĄi detekcija lica, grupirajući ih u postojeće ili nove osobe.", "facial_recognition_job_description": "Grupirajte otkrivena lica u osobe. Ovaj korak se izvrÅĄava nakon ÅĄto je Detekcija lica dovrÅĄena. \"Resetiraj\" (ponovno) grupira sva lica. \"Nedostaje\" stavlja u red lica kojima nije dodijeljena osoba.", @@ -101,22 +105,28 @@ "image_thumbnail_description": "Mala minijatura s ogoljenim metapodacima, koristi se pri gledanju grupa fotografija poput glavne vremenske trake", "image_thumbnail_quality_description": "Kvaliteta sličica od 1-100. ViÅĄe je bolje, ali proizvodi veće datoteke i moÅže smanjiti odziv aplikacije.", "image_thumbnail_title": "Postavke sličica", + "import_config_from_json_description": "Učitaj konfiguraciju sustava učitavanjem JSON datoteke konfiguracije", "job_concurrency": "{job} istovremenost", "job_created": "Zadatak je kreiran", "job_not_concurrency_safe": "Ovaj posao nije siguran za istovremenost.", "job_settings": "Postavke posla", "job_settings_description": "Upravljajte istovremenoÅĄÄ‡u poslova", - "job_status": "Status posla", "jobs_delayed": "{jobCount, plural, other {# odgođenih}}", "jobs_failed": "{jobCount, plural, one {# neuspjeÅĄan} few {# neuspjeÅĄna} other {# neuspjeÅĄnih}}", + "jobs_over_time": "Zadaci kroz vrijeme", "library_created": "Stvorena biblioteka: {library}", "library_deleted": "Biblioteka izbrisana", + "library_details": "Detalji biblioteke", + "library_folder_description": "Odredi mapu za učitavanje. U ovoj mapi, uključujući podmape, će se pretraÅžiti slike i videi.", + "library_remove_exclusion_pattern_prompt": "Jeste li sigurni da Åželite ukloniti ovaj uzorak isključivanja?", + "library_remove_folder_prompt": "Jeste li sigurni da Åželite ukloniti ovu mapu označenu za učitavanje?", "library_scanning": "Periodično skeniranje", "library_scanning_description": "Konfigurirajte periodično skeniranje biblioteke", "library_scanning_enable_description": "Omogući periodično skeniranje biblioteke", "library_settings": "Vanjska biblioteka", "library_settings_description": "Upravljajte postavkama vanjske biblioteke", "library_tasks_description": "Skeniraj vanjske biblioteke za nove i/ili promijenjene stavke", + "library_updated": "AÅžurirana programska biblioteka", "library_watching_enable_description": "Pratite vanjske biblioteke za promjena datoteke", "library_watching_settings": "Gledanje biblioteke [EKSPERIMENTALNO]", "library_watching_settings_description": "Automatsko praćenje promijenjenih datoteke", @@ -124,9 +134,12 @@ "logging_level_description": "Kada je omogućeno, koju razinu zapisivanja koristiti.", "logging_settings": "Zapisivanje", "machine_learning_availability_checks": "Provjere dostupnosti", + "machine_learning_availability_checks_description": "Automatski detektiraj i preferiraj dostupne servere maÅĄinskog učenja", "machine_learning_availability_checks_enabled": "Omogući provjere dostupnosti", "machine_learning_availability_checks_interval": "Provjeri interval", "machine_learning_availability_checks_interval_description": "Interval u milisekundama između provjera dostupnosti", + "machine_learning_availability_checks_timeout": "Zahtjev istekao", + "machine_learning_availability_checks_timeout_description": "Vrijeme čekanja u milisekundama za provjeru dostupnosti", "machine_learning_clip_model": "CLIP model", "machine_learning_clip_model_description": "Naziv CLIP modela navedenog ovdje. Imajte na umu da morate ponovno pokrenuti posao 'Pametno PretraÅživanje' za sve slike nakon promjene modela.", "machine_learning_duplicate_detection": "Detekcija duplikata", @@ -149,6 +162,13 @@ "machine_learning_min_detection_score_description": "Minimalni rezultat pouzdanosti za detektirano lice od 0-1. NiÅže vrijednosti otkrit će viÅĄe lica, ali mogu dovesti do laÅžno pozitivnih rezultata.", "machine_learning_min_recognized_faces": "Minimum prepoznatih lica", "machine_learning_min_recognized_faces_description": "Najmanji broj prepoznatih lica za osobu koja se stvara. Povećanje toga čini Prepoznavanje lica preciznijim po cijenu povećanja ÅĄanse da lice nije dodijeljeno osobi.", + "machine_learning_ocr": "OCR", + "machine_learning_ocr_description": "Koristi strojno učenje za prepoznavanje teksta u slikama", + "machine_learning_ocr_enabled": "Omogući OCR", + "machine_learning_ocr_enabled_description": "Ukoliko se onemogući, slike neće prolaziti kroz postupak prepoznavanja teksta.", + "machine_learning_ocr_max_resolution": "Maksimalna razlučivost", + "machine_learning_ocr_max_resolution_description": "Pregledi preko ove razlučivosti će promijeniti veličinu poÅĄtujući omjer slike. Veće vrijednosti su točnije, ali trebaju viÅĄe vremena za obradu i koriste viÅĄe memorije.", + "machine_learning_ocr_min_detection_score": "Minimalna ocjena prepoznavanja", "machine_learning_settings": "Postavke strojnog učenja", "machine_learning_settings_description": "Upravljajte značajkama i postavkama strojnog učenja", "machine_learning_smart_search": "Pametna pretraga", @@ -381,7 +401,6 @@ "user_restore_scheduled_removal": "Vrati korisnika - zakazano uklanjanje {date, date, long}", "user_settings": "Korisničke postavke", "user_settings_description": "Upravljanje korisničkim postavkama", - "user_successfully_removed": "Korisnik {email} je uspjeÅĄno uklonjen.", "version_check_enabled_description": "Omogući provjeru verzije", "version_check_implications": "Značajka provjere verzije oslanja se na periodičnu komunikaciju s github.com", "version_check_settings": "Provjera verzije", @@ -539,8 +558,10 @@ "autoplay_slideshow": "Automatsko prikazivanje slajdova", "back": "Nazad", "back_close_deselect": "Natrag, zatvorite ili poniÅĄtite odabir", + "background_backup_running_error": "Sigurnosno kopiranje u pozadini je trenutno aktivno, ručno sigurnosno kopiranje nije moguće pokrenuti", "background_location_permission": "Dozvola za lokaciju u pozadini", "background_location_permission_content": "Kako bi prebacivao mreÅže dok radi u pozadini, Immich mora *uvijek* imati pristup preciznoj lokaciji kako bi aplikacija mogla pročitati naziv Wi-Fi mreÅže", + "background_options": "Pozadinske opcije", "backup": "Sigurnosna kopija", "backup_album_selection_page_albums_device": "Albumi na uređaju ({count})", "backup_album_selection_page_albums_tap": "Dodirnite za uključivanje, dvostruki dodir za isključivanje", @@ -548,6 +569,7 @@ "backup_album_selection_page_select_albums": "Odabrani albumi", "backup_album_selection_page_selection_info": "Informacije o odabiru", "backup_album_selection_page_total_assets": "Ukupan broj jedinstvenih stavki", + "backup_albums_sync": "Sinkronizacija sigurnosnih kopija albuma", "backup_all": "Sve", "backup_background_service_backup_failed_message": "NeuspjeÅĄno sigurnosno kopiranje stavki. Ponovno pokuÅĄavanjeâ€Ļ", "backup_background_service_complete_notification": "Sigurnosno kopiranje stavki dovrÅĄeno", @@ -598,6 +620,7 @@ "backup_controller_page_turn_on": "Uključite sigurnosno kopiranje u prvom planu", "backup_controller_page_uploading_file_info": "Slanje informacija o datoteci", "backup_err_only_album": "Nije moguće ukloniti jedini album", + "backup_error_sync_failed": "Sinkronizacija nije uspjela. Sigurnosna kopija se ne moÅže obraditi.", "backup_info_card_assets": "stavke", "backup_manual_cancelled": "Otkazano", "backup_manual_in_progress": "Slanje već u tijeku. PokÅĄuajte nakon nekog vremena", @@ -659,12 +682,16 @@ "change_password_description": "Ovo je ili prvi put da se prijavljujete u sustav ili je poslan zahtjev za promjenom lozinke. Unesite novu lozinku ispod.", "change_password_form_confirm_password": "Potvrdi lozinku", "change_password_form_description": "Pozdrav {name},\n\nOvo je ili prvi put da se prijavljujete u sustav ili je zatraÅžena promjena vaÅĄe lozinke. Molimo unesite novu lozinku dolje.", + "change_password_form_log_out": "Odjavi se iz svih uređaja", + "change_password_form_log_out_description": "Preporučeno je odjaviti se sa svih uređaja", "change_password_form_new_password": "Nova lozinka", "change_password_form_password_mismatch": "Lozinke se ne podudaraju", "change_password_form_reenter_new_password": "Ponovno unesite novu lozinku", "change_pin_code": "Promijeni PIN kod", "change_your_password": "Promijenite lozinku", "changed_visibility_successfully": "Vidljivost je uspjeÅĄno promijenjena", + "charging": "Punjenje", + "charging_requirement_mobile_backup": "Za izradu sigurnosne kopije u pozadini potrebno je punjenje uređaja", "check_corrupt_asset_backup": "Provjeri oÅĄtećene sigurnosne kopije stavki", "check_corrupt_asset_backup_button": "IzvrÅĄi provjeru", "check_corrupt_asset_backup_description": "Pokrenite ovu provjeru samo putem Wi-Fi mreÅže i nakon ÅĄto su sve stavke sigurnosno kopirane. Postupak moÅže potrajati nekoliko minuta.", @@ -691,6 +718,7 @@ "collapse_all": "SaÅžmi sve", "color": "Boja", "color_theme": "Tema boja", + "command": "Naredba", "comment_deleted": "Komentar izbrisan", "comment_options": "Opcije komentara", "comments_and_likes": "Komentari i lajkovi", @@ -734,6 +762,7 @@ "create": "Kreiraj", "create_album": "Kreiraj album", "create_album_page_untitled": "Bez naslova", + "create_api_key": "Izradi API ključ", "create_library": "Kreiraj Biblioteku", "create_link": "Kreiraj poveznicu", "create_link_to_share": "Izradite vezu za dijeljenje", @@ -750,6 +779,7 @@ "create_user": "Stvori korisnika", "created": "Stvoreno", "created_at": "Kreirano", + "creating_linked_albums": "Izradi povezane albume...", "crop": "ObreÅži", "curated_object_page_title": "Stvari", "current_device": "Trenutačni uređaj", @@ -762,6 +792,7 @@ "daily_title_text_date_year": "E, MMM dd, yyyy", "dark": "Tamno", "dark_theme": "Prebaci tamnu temu", + "date": "Datum", "date_after": "Datum nakon", "date_and_time": "Datum i Vrijeme", "date_before": "Datum prije", @@ -896,7 +927,9 @@ "error": "GreÅĄka", "error_change_sort_album": "Nije moguće promijeniti redoslijed albuma", "error_delete_face": "PogreÅĄka pri brisanju lica sa stavke", + "error_getting_places": "GreÅĄka prilikom dohvaćanja lokacija", "error_loading_image": "PogreÅĄka pri učitavanju slike", + "error_loading_partners": "GreÅĄka prilikom učitavanja partnera:{error}", "error_saving_image": "PogreÅĄka: {error}", "error_tag_face_bounding_box": "PogreÅĄka pri označavanju lica – nije moguće dohvatiti koordinate granica (bounding box)", "error_title": "GreÅĄka - NeÅĄto je poÅĄlo krivo", @@ -934,6 +967,7 @@ "failed_to_unstack_assets": "Razdvajanje stavki nije uspjelo", "failed_to_update_notification_status": "NeuspjeÅĄno aÅžuriranje statusa obavijesti", "incorrect_email_or_password": "Netočna adresa e-poÅĄte ili lozinka", + "library_folder_already_exists": "Ova putanja unosa već postoji.", "paths_validation_failed": "{paths, plural, one {# putanja nije proÅĄla} other {# putanje nisu proÅĄle}} provjeru valjanosti", "profile_picture_transparent_pixels": "Profilne slike ne smiju imati prozirne piksele. Povećajte i/ili pomaknite sliku.", "quota_higher_than_disk_size": "Postavili ste kvotu veću od veličine diska", @@ -1018,11 +1052,13 @@ "unable_to_update_user": "Nije moguće aÅžurirati korisnika", "unable_to_upload_file": "Nije moguće učitati datoteku" }, + "exclusion_pattern": "Uzorak isključenja", "exif": "Exif", "exif_bottom_sheet_description": "Dodaj opis...", "exif_bottom_sheet_description_error": "PogreÅĄka pri aÅžuriranju opisa", "exif_bottom_sheet_details": "DETALJI", "exif_bottom_sheet_location": "LOKACIJA", + "exif_bottom_sheet_no_description": "Bez opisa", "exif_bottom_sheet_people": "OSOBE", "exif_bottom_sheet_person_add_person": "Dodaj ime", "exit_slideshow": "Izađi iz projekcije slideova", @@ -1047,6 +1083,7 @@ "external_network_sheet_info": "Kada niste na Åželjenoj Wi-Fi mreÅži, aplikacija će se povezati s posluÅžiteljem putem prve dostupne URL adrese s popisa ispod, redom od vrha prema dnu", "face_unassigned": "Nedodijeljeno", "failed": "NeuspjeÅĄno", + "failed_count": "Neuspjelo:{count}", "failed_to_authenticate": "NeuspjeÅĄna autentikacija", "failed_to_load_assets": "Učitavanje stavki nije uspjelo", "failed_to_load_folder": "Neuspjelo učitavanje mape", @@ -1057,9 +1094,11 @@ "favorites_page_no_favorites": "Nema pronađenih favorita", "feature_photo_updated": "Istaknuta fotografija aÅžurirana", "features": "Značajke", + "features_in_development": "Značajke u razvoju", "features_setting_description": "Upravljajte značajkama aplikacije", "file_name": "Naziv datoteke", "file_name_or_extension": "Naziv ili ekstenzija datoteke", + "file_size": "Veličina datoteke", "filename": "Naziv datoteke", "filetype": "Vrsta datoteke", "filter": "Filtar", @@ -1074,6 +1113,7 @@ "folders_feature_description": "Pregledavanje prikaza mape za fotografije i videozapise u sustavu datoteka", "forgot_pin_code_question": "Zaboravili ste svoj PIN?", "forward": "Naprijed", + "full_path": "Puna putanja:{path}", "gcast_enabled": "Google Cast", "gcast_enabled_description": "Ova značajka učitava vanjske stavke s Googlea kako bi radila.", "general": "Općenito", @@ -1084,6 +1124,8 @@ "go_back": "Idi natrag", "go_to_folder": "Idi u mapu", "go_to_search": "Idi na pretragu", + "gps": "GPS", + "gps_missing": "Bez GPSa", "grant_permission": "Dodijeli dopuÅĄtenje", "group_albums_by": "Grupiraj albume po...", "group_country": "Grupiraj po zemlji", @@ -1108,6 +1150,7 @@ "hide_named_person": "Sakrij osobu {name}", "hide_password": "Sakrij lozinku", "hide_person": "Sakrij osobu", + "hide_text_recognition": "Sakrij prepoznavanje teksta", "hide_unnamed_people": "Sakrij neimenovane osobe", "home_page_add_to_album_conflicts": "Dodano {added} stavki u album {album}. {failed} stavki je već u albumu.", "home_page_add_to_album_err_local": "Lokalne stavke joÅĄ nije moguće dodati u albume, preskakanje", @@ -1341,16 +1384,20 @@ "name_or_nickname": "Ime ili nadimak", "network_requirement_photos_upload": "Koristi mobilne podatke za sigurnosno kopiranje fotografija", "network_requirement_videos_upload": "Koristi mobilne podatke za sigurnosno kopiranje videozapisa", + "network_requirements": "MreÅžni zahtjevi", "network_requirements_updated": "Zahtjevi za mreÅžu su se promijenili, red za sigurnosno kopiranje se resetira", "networking_settings": "UmreÅžavanje", "networking_subtitle": "Upravljajte postavkama krajnje točke posluÅžitelja", "never": "Nikada", "new_album": "Novi Album", "new_api_key": "Novi API ključ", + "new_date_range": "Novi raspon datuma", "new_password": "Nova lozinka", "new_person": "Nova osoba", "new_pin_code": "Novi PIN kod", "new_pin_code_subtitle": "Ovo je vaÅĄ prvi pristup zaključanoj mapi. Kreirajte PIN kod za siguran pristup ovoj stranici", + "new_timeline": "Nova vremenska lenta", + "new_update": "Novo aÅžuriranje", "new_user_created": "Stvoren novi korisnik", "new_version_available": "DOSTUPNA NOVA VERZIJA", "newest_first": "Prvo najnovije", @@ -1366,12 +1413,14 @@ "no_cast_devices_found": "Nisu pronađeni uređaji za reprodukciju", "no_checksum_local": "Nema dostupnog kontrolnog zbroja - nije moguće dohvatiti lokalne stavke", "no_checksum_remote": "Nema dostupnog kontrolnog zbroja - nije moguće dohvatiti udaljenu stavku", + "no_devices": "Nema autoriziranih uređaja", "no_duplicates_found": "Nisu pronađeni duplikati.", "no_exif_info_available": "Nema dostupnih exif podataka", "no_explore_results_message": "Prenesite viÅĄe fotografija da istraÅžite svoju zbirku.", "no_favorites_message": "Dodajte favorite kako biste brzo pronaÅĄli svoje najbolje slike i videozapise", "no_libraries_message": "Stvorite vanjsku biblioteku za pregled svojih fotografija i videozapisa", "no_local_assets_found": "Nisu pronađene lokalne stavke s ovim kontrolnim zbrojem", + "no_location_set": "Lokacija nije postavljena", "no_locked_photos_message": "Fotografije i videozapisi u zaključanoj mapi su skriveni i neće se prikazivati dok pregledavate ili pretraÅžujete svoju biblioteku.", "no_name": "Bez imena", "no_notifications": "Nema notifikacija", @@ -1382,6 +1431,8 @@ "no_results_description": "PokuÅĄajte sa sinonimom ili općenitijom ključnom riječi", "no_shared_albums_message": "Stvorite album za dijeljenje fotografija i videozapisa s osobama u svojoj mreÅži", "no_uploads_in_progress": "Nema aktivnih prijenosa", + "not_allowed": "Zabranjeno", + "not_available": "N/A", "not_in_any_album": "Ni u jednom albumu", "not_selected": "Nije odabrano", "note_apply_storage_label_to_previously_uploaded assets": "Napomena: Da biste primijenili oznaku pohrane na prethodno prenesene stavke, pokrenite", @@ -1395,6 +1446,7 @@ "notifications": "Obavijesti", "notifications_setting_description": "Upravljanje obavijestima", "oauth": "OAuth", + "obtainium_configurator": "Obtainium konfigurator", "official_immich_resources": "SluÅžbeni Immich resursi", "offline": "Izvan mreÅže", "offset": "Pomak", @@ -1502,6 +1554,7 @@ "port": "Port", "preferences_settings_subtitle": "Upravljajte postavkama aplikacije", "preferences_settings_title": "Postavke", + "preparing": "Pripremanje", "preset": "Unaprijed postavljeno", "preview": "Pregled", "previous": "Prethodno", @@ -1516,6 +1569,7 @@ "profile_drawer_app_logs": "Zapisnici", "profile_drawer_client_server_up_to_date": "Klijent i posluÅžitelj su aÅžurirani", "profile_drawer_github": "GitHub", + "profile_drawer_readonly_mode": "Omogućen je način rada samo za čitanje. Dugo pritisnite ikonu korisničkog avatara za izlaz.", "profile_image_of_user": "Profilna slika korisnika {user}", "profile_picture_set": "Profilna slika postavljena.", "public_album": "Javni album", @@ -1560,6 +1614,9 @@ "rating_description": "PrikaÅži EXIF ocjenu na info ploči", "reaction_options": "Mogućnosti reakcije", "read_changelog": "Pročitajte Dnevnik promjena", + "readonly_mode_disabled": "Onemogućen način rada samo za čitanje", + "readonly_mode_enabled": "Omogućen način rada samo za čitanje", + "ready_for_upload": "Spremno za prijenos", "reassign": "Ponovno dodijeli", "reassigned_assets_to_existing_person": "Ponovno dodijeljeno {count, plural, one {# stavka} few {# stavke} other {# stavki}} {name, select, null {postojećoj osobi} other {{name}}}", "reassigned_assets_to_new_person": "{count, plural, one {# stavka ponovno dodijeljena} few {# stavke ponovno dodijeljene} other {# stavki ponovno dodijeljeno}} novoj osobi", @@ -1661,6 +1718,7 @@ "search_by_description_example": "Planinarenje u Sapi", "search_by_filename": "PretraÅžujte prema nazivu datoteke ili ekstenziji", "search_by_filename_example": "npr. IMG_1234.JPG ili PNG", + "search_camera_lens_model": "PretraÅži model objektiva...", "search_camera_make": "PretraÅžite marku kamere...", "search_camera_model": "PretraÅžite model kamere...", "search_city": "PretraÅžite grad...", @@ -1677,6 +1735,7 @@ "search_filter_location_title": "Odaberi lokaciju", "search_filter_media_type": "Vrsta medija", "search_filter_media_type_title": "Odaberi vrstu medija", + "search_filter_ocr": "PretraÅži OCRom", "search_filter_people_title": "Odaberi osobe", "search_for": "TraÅži", "search_for_existing_person": "PotraÅžite postojeću osobu", @@ -1729,6 +1788,7 @@ "select_user_for_sharing_page_err_album": "Nije uspjelo kreiranje albuma", "selected": "Odabrano", "selected_count": "{count, plural, =1 {# odabran} few {# odabrana} other {# odabranih}}", + "selected_gps_coordinates": "Odaberi GPS koordinate", "send_message": "PoÅĄalji poruku", "send_welcome_email": "PoÅĄalji email dobrodoÅĄlice", "server_endpoint": "Krajnja točka posluÅžitelja", @@ -1737,7 +1797,10 @@ "server_offline": "Server izvan mreÅže", "server_online": "Server na mreÅži", "server_privacy": "Privatnost posluÅžitelja", + "server_restarting_description": "Ova stranica će se odmah osvjeÅžiti.", + "server_restarting_title": "PosluÅžitelj se ponovno pokreće", "server_stats": "Statistike servera", + "server_update_available": "AÅžuriranje posluÅžitelja dostupno", "server_version": "Verzija servera", "set": "Postavi", "set_as_album_cover": "Postavi kao naslovnicu albuma", @@ -1766,6 +1829,8 @@ "setting_notifications_subtitle": "Prilagodite postavke obavijesti", "setting_notifications_total_progress_subtitle": "Ukupni napredak prijenosa (zavrÅĄeno/ukupan broj stavki)", "setting_notifications_total_progress_title": "PrikaÅži ukupni napredak sigurnosnog kopiranja u pozadini", + "setting_video_viewer_auto_play_subtitle": "Automatski započni reprodukciju videa kad se otvori", + "setting_video_viewer_auto_play_title": "Automatski pokreni videe", "setting_video_viewer_looping_title": "Ponavljanje", "setting_video_viewer_original_video_subtitle": "Prilikom strujanja videozapisa s posluÅžitelja, reproducirajte original čak i kada je dostupna transkodirana verzija. MoÅže doći do međuspremanja. Videozapisi dostupni lokalno reproduciraju se u originalnoj kvaliteti bez obzira na ovu postavku.", "setting_video_viewer_original_video_title": "Forsiraj originalni videozapis", @@ -1857,6 +1922,8 @@ "show_slideshow_transition": "PrikaÅži prijelaz prezentacije", "show_supporter_badge": "Značka podrÅžavatelja", "show_supporter_badge_description": "PrikaÅži značku podrÅžavatelja", + "show_text_recognition": "PokaÅži prepoznavanje teksta", + "show_text_search_menu": "PokaÅži meni pretrage teksta", "shuffle": "Nasumični redoslijed", "sidebar": "Bočna traka", "sidebar_display_description": "PrikaÅži poveznicu na prikaz u bočnoj traci", @@ -1887,6 +1954,7 @@ "stacktrace": "Pracenje stoga", "start": "Početak", "start_date": "Datum početka", + "start_date_before_end_date": "Početni datum mora biti prije krajnjeg datuma", "state": "Stanje", "status": "Status", "stop_casting": "Zaustavi reprodukciju", @@ -1925,6 +1993,7 @@ "tags": "Oznake", "tap_to_run_job": "Dodirnite za pokretanje zadatka", "template": "PredloÅžak", + "text_recognition": "Prepoznavanje teksta", "theme": "Tema", "theme_selection": "Izbor teme", "theme_selection_description": "Automatski postavite temu na svijetlu ili tamnu ovisno o postavkama sustava vaÅĄeg preglednika", @@ -1943,16 +2012,21 @@ "theme_setting_three_stage_loading_title": "Omogući trostupanjsko učitavanje", "they_will_be_merged_together": "Oni ću biti spojeni zajedno", "third_party_resources": "Resursi trećih strana", + "time": "Vrijeme", "time_based_memories": "Uspomene temeljene na vremenu", + "time_based_memories_duration": "Broj sekundi za prikazivanje svake slike.", "timeline": "Vremenska crta", "timezone": "Vremenska zona", "to_archive": "Arhivaj", "to_change_password": "Promjeni lozinku", "to_favorite": "Omiljeni", "to_login": "Prijava", + "to_multi_select": "prema viÅĄestrukom odabiru", "to_parent": "Idi na roditelja", + "to_select": "prema odabiranju", "to_trash": "Smeće", "toggle_settings": "Uključi/isključi postavke", + "toggle_theme_description": "Odaberi temu", "total": "Ukupno", "total_usage": "Ukupna upotreba", "trash": "Smeće", @@ -1970,8 +2044,10 @@ "trash_page_select_assets_btn": "Odaberi stavke", "trash_page_title": "Smeće ({count})", "trashed_items_will_be_permanently_deleted_after": "Stavke bačene u smeće trajno će se izbrisati nakon {days, plural, one {# day} other {# days}}.", + "troubleshoot": "RjeÅĄavanje problema", "type": "Vrsta", "unable_to_change_pin_code": "Nije moguće promijeniti PIN kod", + "unable_to_check_version": "Nije moguće provjeriti verziju aplikacije ili posluÅžitelja", "unable_to_setup_pin_code": "Nije moguće postaviti PIN kod", "unarchive": "PoniÅĄti arhiviranje", "unarchive_action_prompt": "{count} uklonjeno iz arhive", @@ -2059,6 +2135,7 @@ "view_album": "PrikaÅži album", "view_all": "PrikaÅži sve", "view_all_users": "PrikaÅži sve korisnike", + "view_asset_owners": "Pogledaj vlasnike resursa", "view_details": "PrikaÅži pojedinosti", "view_in_timeline": "PrikaÅži na vremenskoj crti", "view_link": "PrikaÅži poveznicu", @@ -2067,6 +2144,7 @@ "view_next_asset": "PrikaÅži sljedeću stavku", "view_previous_asset": "PrikaÅži prethodnu stavku", "view_qr_code": "PrikaÅži QR kod", + "view_similar_photos": "Pregledaj slične slike", "view_stack": "PrikaÅži sloÅžene", "view_user": "PrikaÅži korisnika", "viewer_remove_from_stack": "Ukloni iz sloÅženih", @@ -2074,16 +2152,19 @@ "viewer_unstack": "Razdvoji", "visibility_changed": "Vidljivost promijenjena za {count, plural, =1 {# osobu} few {# osobe} other {# osoba}}", "waiting": "Čekanje", + "waiting_count": "Čekanje:{count}", "warning": "Upozorenje", "week": "Tjedan", "welcome": "DobrodoÅĄli", "welcome_to_immich": "DobrodoÅĄli u Immich", "wifi_name": "Naziv Wi-Fi mreÅže", + "workflow": "Način rada", "wrong_pin_code": "Krivi PIN kod", "year": "Godina", "years_ago": "prije {years, plural, =1 {# godinu} few {# godine} other {# godina}}", "yes": "Da", "you_dont_have_any_shared_links": "Nemate nijednu dijeljenu poveznicu", "your_wifi_name": "Naziv vaÅĄe Wi-Fi mreÅže", - "zoom_image": "Povećaj sliku" + "zoom_image": "Povećaj sliku", + "zoom_to_bounds": "Zumiraj do granica" } diff --git a/i18n/hu.json b/i18n/hu.json index 37cfe562a0..5a93b4085b 100644 --- a/i18n/hu.json +++ b/i18n/hu.json @@ -4,16 +4,17 @@ "account_settings": "FiÃŗk BeÃĄllítÃĄsok", "acknowledge": "MegÊrtettem", "action": "MÅąvelet", - "action_common_update": "Frissít", + "action_common_update": "FrissítÊs", "actions": "MÅąveletek", "active": "FeldolgozÃĄs alatt", + "active_count": "Aktív: {count}", "activity": "TevÊkenysÊg", "activity_changed": "A tevÊkenysÊg {enabled, select, true {bekapcsolva} other {kikapcsolva}}", "add": "HozzÃĄadÃĄs", "add_a_description": "LeírÃĄs hozzÃĄadÃĄsa", "add_a_location": "Helyszín hozzÃĄadÃĄsa", "add_a_name": "NÊv megadÃĄsa", - "add_a_title": "CímadÃĄs", + "add_a_title": "Cím megadÃĄsa", "add_birthday": "SzÃŧletÊsnap hozzÃĄadÃĄsa", "add_endpoint": "VÊgpont megadÃĄsa", "add_exclusion_pattern": "KihagyÃĄsi minta (pattern) hozzÃĄadÃĄsa", @@ -31,6 +32,7 @@ "add_to_album_toggle": "{album} kijelÃļlÊsÊnek vÃĄltÃĄsa", "add_to_albums": "HozzÃĄadÃĄs albumokhoz", "add_to_albums_count": "HozzÃĄadÃĄs albumokhoz ({count})", + "add_to_bottom_bar": "HozzÃĄadÃĄs ehhez", "add_to_shared_album": "FelvÊtel megosztott albumba", "add_upload_to_stack": "FeltÃļltÊs hozzÃĄadÃĄsa csoporthoz", "add_url": "URL hozzÃĄadÃĄsa", @@ -44,7 +46,7 @@ "authentication_settings": "HitelesítÊsi beÃĄllítÃĄsok", "authentication_settings_description": "JelszÃŗ, OAuth Ês egyÊb hitelesítÊsi beÃĄllítÃĄsok kezelÊse", "authentication_settings_disable_all": "Biztosan letiltod az Ãļsszes bejelentkezÊsi mÃŗdot? A bejelentkezÊs teljesen le lesz tiltva.", - "authentication_settings_reenable": "Az ÃējbÃŗli engedÊlyezÊshez hasznÃĄlj egySzerver Parancsot.", + "authentication_settings_reenable": "Az ÃējbÃŗli engedÊlyezÊshez hasznÃĄlj egy Szerver Parancsot.", "background_task_job": "HÃĄttÊrfeladatok", "backup_database": "AdatbÃĄzis lementÊse", "backup_database_enable_description": "AdatbÃĄzis mentÊsek engedÊlyezÊse", @@ -66,6 +68,7 @@ "confirm_reprocess_all_faces": "Biztos vagy benne, hogy Ãējra fel szeretnÊd dolgozni az Ãļsszes arcot? Ez a mÃĄr elnevezett szemÊlyeket is tÃļrli.", "confirm_user_password_reset": "Biztosan vissza szeretnÊd ÃĄllítani {user} jelszavÃĄt?", "confirm_user_pin_code_reset": "Biztos, hogy vissza akarod ÃĄllítani {user} PIN-kÃŗdjÃĄt?", + "copy_config_to_clipboard_description": "Jelenlegi rendszer konfigurÃĄciÃŗ mÃĄsolÃĄsa a vÃĄgÃŗlapra JSON objektumkÊnt", "create_job": "Feladat lÊtrehozÃĄsa", "cron_expression": "Cron kifejezÊs", "cron_expression_description": "A beolvasÃĄsi időkÃļz beÃĄllítÃĄsa a cron formÃĄtummal. TovÃĄbbi informÃĄciÃŗÃŠrt lÃĄsd pl. Crontab Guru", @@ -73,7 +76,8 @@ "disable_login": "BelÊpÊs letiltÃĄsa", "duplicate_detection_job_description": "GÊpi tanulÃĄs futtatÃĄsa a hasonlÃŗ elemek megtalÃĄlÃĄsa cÊljÃĄbÃŗl. Ez az Okos KeresÊs funkciÃŗt hasznÃĄlja", "exclusion_pattern_description": "A kihagyÃĄsi mintÃĄk (pattern) hasznÃĄlatakor a mintÃĄnak megfelelő fÃĄjlok vagy mappÃĄk ÃĄt lesznek ugorva a kÊptÃĄr ÃĄtfÊsÃŧlÊsekor. Akkor hasznos, ha a mappÃĄkban vannak olyan fÃĄjlok is, amelyeket nem szeretnÊl importÃĄlni, pl. nyers (RAW) fÃĄjlok.", - "external_library_management": "KÃŧlső KÊptÃĄrak KezelÊse", + "export_config_as_json_description": "Jelenlegi rendszer konfigurÃĄciÃŗ mentÊse JSON fÃĄjlkÊnt", + "external_libraries_page_description": "Admin kÃŧlső kÃļnyvtÃĄr oldala", "face_detection": "ArckeresÊs", "face_detection_description": "GÊpi tanulÃĄs segítsÊgÊvel megkeresi, hogy hol talÃĄlhatÃŗak arcok az elemeken. VideÃŗk esetÊben csak a bÊlyegkÊpeken keres. \"FrissítÊs\" (Ãējra) feldolgozza az Ãļsszes elemet. \"VisszaÃĄllítÃĄs\" ezen felÃŧl tÃļrli az Ãļsszes aktuÃĄlis arcadatot. \"HiÃĄnyzÃŗk\" sorba ÃĄllítja azokat az elemeket, amelyek eddig mÊg nem lettek feldolgozva. A megtalÃĄlt arcok ezutÃĄn sorba lesznek ÃĄllítva az ArcfelismerÊshez, ami ezutÃĄn az arcokat csoportosítja Ês meglevő vagy Ãēj szemÊlyekhez rendeli.", "facial_recognition_job_description": "A megtalÃĄlt arcokat szemÊlyekhez csoportosítja. Ez a lÊpÊs azutÃĄn kÃļvetkezik, amikor az ArckeresÊs lefutott. \"VisszaÃĄllítÃĄs\" (Ãējra)csoportosítja az Ãļsszes arcot. \"HiÃĄnyzÃŗk\" csak azokkal az arcokkal foglalkozik, amelyekhez mÊg nincsen ember rendelve.", @@ -101,22 +105,28 @@ "image_thumbnail_description": "Kicsi bÊlyegkÊp eltÃĄvolított metaadatokkal, sok kis kÊp (pl idővonal) megjelenítÊsÊhez", "image_thumbnail_quality_description": "BÊlyegkÊp minősÊge 1-100 kÃļzÃļtt. A magasabb szÃĄm jobb minősÊget, de nagyobb fÃĄjlmÊretet eredmÊnyez Ês belassíthatja az alkalmazÃĄst.", "image_thumbnail_title": "BÊlyegkÊp BeÃĄllítÃĄsok", + "import_config_from_json_description": "Rendszer konfigurÃĄciÃŗ importÃĄlÃĄsa JSON fÃĄjlbÃŗl", "job_concurrency": "{job} pÃĄrhuzamossÃĄg", "job_created": "Feladat lÊtrehozva", "job_not_concurrency_safe": "Ez a feladat nem pÃĄrhuzamossÃĄg-biztos.", "job_settings": "Feladat BeÃĄllítÃĄsok", "job_settings_description": "Feladatok pÃĄrhuzamossÃĄgÃĄnak kezelÊse", - "job_status": "Feladat Állapota", "jobs_delayed": "{jobCount, plural, other {# kÊsik}}", "jobs_failed": "{jobCount, plural, other {# sikertelen}}", + "jobs_over_time": "Feladatok idővel", "library_created": "KÊptÃĄr lÊtrehozva: {library}", "library_deleted": "KÊptÃĄr tÃļrÃļlve", + "library_details": "KÃļnyvtÃĄr rÊszletei", + "library_folder_description": "Adja meg az importÃĄlandÃŗ mappÃĄt. Ez a mappa, az almappÃĄkkal egyÃŧtt, ÃĄt lesz vizsgÃĄlva kÊpek Ês videÃŗk utÃĄn.", + "library_remove_exclusion_pattern_prompt": "Biztosan tÃļrÃļlni szeretnÊ ezt a kizÃĄrÃĄsi mintÃĄt?", + "library_remove_folder_prompt": "Biztosan tÃļrÃļlni szeretnÊ ezt az import mappÃĄt?", "library_scanning": "Időszakos ÁtfÊsÃŧlÊs", "library_scanning_description": "A kÊptÃĄr időszakos ÃĄtfÊsÃŧlÊsÊnek beÃĄllítÃĄsa", "library_scanning_enable_description": "KÊptÃĄr időszakos ÃĄtfÊsÃŧlÊsÊnek engedÊlyezÊse", "library_settings": "KÃŧlső KÊptÃĄr", "library_settings_description": "KÃŧlső kÊptÃĄr beÃĄllítÃĄsainak kezelÊse", "library_tasks_description": "KÃŧlső kÃļnyvtÃĄrak szkennelÊse Ãēj Ês/vagy mÃŗdosított elemek utÃĄn", + "library_updated": "KÃļnyvtÃĄr frissítve", "library_watching_enable_description": "KÃŧlső kÊptÃĄr vÃĄltozÃĄsainak figyelÊse", "library_watching_settings": "KÃļnyvtÃĄr figyelÊse [KÍSÉRLETI]", "library_watching_settings_description": "MegvÃĄltozott fÃĄjlok automatikus ÊszlelÊse", @@ -171,7 +181,12 @@ "machine_learning_smart_search_enabled": "Okos keresÊs engedÊlyezÊse", "machine_learning_smart_search_enabled_description": "Ha ki van kapcsolva, a kÊpek nem lesznek ÃĄtalakítva okos keresÊshez.", "machine_learning_url_description": "GÊpi tanulÃĄs szerver URL címe. Ha tÃļbbi, mint egy URL van megadva, mindegyik szervert egyenkÊnt prÃŗbÃĄlja meg, amíg az egyik sikeresen nem vÃĄlaszol, sorrendben az elsőtől az utÃŗlsÃŗig. A nem elÊrhető szervereket ÃĄtmenetileg figyelmen kívÃŧl lesznek hagyva, amíg Ãējra online nem lesznek.", + "maintenance_settings": "KarbantartÃĄs", + "maintenance_settings_description": "Az Immich karbantartÃĄsi mÃŗdjÃĄnak beÃĄllítÃĄsa.", + "maintenance_start": "KarbantartÃĄsi mÃŗd bekapcsolÃĄsa", + "maintenance_start_error": "Hiba tÃļrtÊnt a karbantartÃĄsi mÃŗd bekapcsolÃĄs kÃļzben.", "manage_concurrency": "PÃĄrhuzamos Feladatok KezelÊse", + "manage_concurrency_description": "NavigÃĄlÃĄs a feladatok oldalra az egyidejÅą munkavÊgzÊs kezelÊsÊhez", "manage_log_settings": "NaplÃŗzÃĄsi beÃĄllítÃĄsok kezelÊse", "map_dark_style": "SÃļtÊt stílus", "map_enable_description": "TÊrkÊp funkciÃŗk engedÊlyezÊse", @@ -261,10 +276,14 @@ "password_settings_description": "Jelszavas bejelentkezÊs beÃĄllítÃĄsok kezelÊse", "paths_validated_successfully": "Összes Ãētvonal sikeresen ÊrvÊnyesítve", "person_cleanup_job": "SzemÊlyek kipucolÃĄsa", + "queue_details": "Sor rÊszletei", + "queues": "Feladatsor", + "queues_page_description": "Admin feladatsor oldala", "quota_size_gib": "KvÃŗta MÊrete (GiB)", "refreshing_all_libraries": "Összes kÊptÃĄr frissítÊse", "registration": "Admin RegisztrÃĄciÃŗ", "registration_description": "Mivel ez az első felhasznÃĄlÃŗ a rendszerben, ezÊrt te leszel az Admin, aki az adminisztratív teendőkÊrt felelős Ês tovÃĄbbi felhasznÃĄlÃŗkat tud lÊtrehozni.", + "remove_failed_jobs": "Sikertelen feladatok eltÃĄvolítÃĄsa", "require_password_change_on_login": "KÃļtelező jelszÃŗmÃŗdosítÃĄs az első bejelentkezÊskor", "reset_settings_to_default": "BeÃĄllítÃĄsok visszaÃĄllítÃĄsa az alapÊrtelmezettre", "reset_settings_to_recent_saved": "BeÃĄllítÃĄsok visszaÃĄllítÃĄsa a legutÃŗbb mentettre", @@ -277,8 +296,10 @@ "server_public_users_description": "Az Ãļsszes felhasznÃĄlÃŗ (nÊv Ês email) ki van írva, amikor egy felhasznÃĄlÃŗt adsz hozzÃĄ egy megosztott albumhoz. Amikor le van tiltva, a felhasznÃĄlÃŗlista csak adminok szÃĄmÃĄra lesz elÊrhető.", "server_settings": "Szerver BeÃĄllítÃĄsok", "server_settings_description": "Szerver beÃĄllítÃĄsok kezelÊse", + "server_stats_page_description": "Admin szerver statisztikai oldala", "server_welcome_message": "ÜdvÃļzlő Ãŧzenet", "server_welcome_message_description": "A bejelentkezőoldalon megjelenő Ãŧzenet.", + "settings_page_description": "Admin beÃĄllítÃĄsok oldala", "sidecar_job": "SegÊdfÃĄjl metaadatok", "sidecar_job_description": "Metaadatok keresÊse vagy szinkronizÃĄlÃĄsa a fÃĄjlrendszeren lÊvő segÊdfÃĄjlokbÃŗl", "slideshow_duration_description": "Az egyes kÊpek megjelenítÊsÊnek időtartama mÃĄsodpercben", @@ -397,7 +418,8 @@ "user_restore_scheduled_removal": "FelhasznÃĄlÃŗ visszaÃĄllítÃĄsa - tÃļrlÊsre jelÃļlve: {date, date, long}", "user_settings": "FelhasznÃĄlÃŗ BeÃĄllítÃĄsok", "user_settings_description": "FelhasznÃĄlÃŗ beÃĄllítÃĄsok kezelÊse", - "user_successfully_removed": "{email} felhasznÃĄlÃŗ sikeresen tÃļrlÊsre kerÃŧlt.", + "user_successfully_removed": "{email} felhasznÃĄlÃŗ sikeresen eltÃĄvolítva.", + "users_page_description": "Admin felhasznÃĄlÃŗk oldala", "version_check_enabled_description": "Új verziÃŗk elÊrhetősÊgÊnek ellenőrzÊse", "version_check_implications": "Az Ãēj verziÃŗk ellenőrzÊse időszakos kommunikÃĄciÃŗt igÊnyel a github.com oldallal", "version_check_settings": "VerziÃŗ EllenőrzÊs", @@ -428,6 +450,7 @@ "age_months": "Kor {months, plural, one {# hÃŗnap} other {# hÃŗnap}}", "age_year_months": "Kor 1 Êv, {months, plural, one {# hÃŗnap} other {# hÃŗnap}}", "age_years": "{years, plural, other {# Êv}}", + "album": "Album", "album_added": "Album hozzÃĄadva", "album_added_notification_setting_description": "Email Êrtesítőt kapsz, amikor hozzÃĄadnak egy megosztott albumhoz", "album_cover_updated": "Album borítÃŗ frissítve", @@ -473,6 +496,7 @@ "allow_edits": "MÃŗdosítÃĄsok engedÊlyezÊse", "allow_public_user_to_download": "EngedÊlyezi a letÃļltÊst publikus felhasznÃĄlÃŗ szÃĄmÃĄra", "allow_public_user_to_upload": "EngedÊlyezi a feltÃļltÊst publikus felhasznÃĄlÃŗ szÃĄmÃĄra", + "allowed": "EngedÊlyezett", "alt_text_qr_code": "QR kÃŗd kÊp", "anti_clockwise": "ÓramutatÃŗ jÃĄrÃĄsÃĄval ellentÊtes irÃĄny", "api_key": "API Kulcs", @@ -580,7 +604,7 @@ "backup_controller_page_albums": "Albumok MentÊse", "backup_controller_page_background_app_refresh_disabled_content": "EngedÊlyezd a hÃĄttÊrben tÃļrtÊnő frissítÊst a BeÃĄllítÃĄsok > ÁltalÃĄnos > HÃĄttÊrben FrissítÊs menÃŧpontban.", "backup_controller_page_background_app_refresh_disabled_title": "HÃĄttÊrben frissítÊs kikapcsolva", - "backup_controller_page_background_app_refresh_enable_button_text": "BeÃĄllítÃĄsok megnyitÃĄsa", + "backup_controller_page_background_app_refresh_enable_button_text": "UgrÃĄs a beÃĄllítÃĄsokhoz", "backup_controller_page_background_battery_info_link": "Mutasd meg hogyan", "backup_controller_page_background_battery_info_message": "A sikeres hÃĄttÊrben tÃļrtÊnő mentÊshez kÊrjÃŧk, tiltsd le az Immich akkumulÃĄtor optimalizÃĄlÃĄsÃĄt.\n\nMivel ezt a kÃŧlÃļnfÊle eszkÃļzÃļkÃļn mÃĄshogy kell, ezÊrt kÊrjÃŧk, az eszkÃļzÃļd gyÃĄrtÃŗjÃĄtÃŗl tudd meg, hogyan kell.", "backup_controller_page_background_battery_info_ok": "OK", @@ -628,6 +652,7 @@ "backup_options_page_title": "BiztonÃĄgi mentÊs beÃĄllítÃĄsai", "backup_setting_subtitle": "A hÃĄttÊrben Ês előtÊrben mentÊs beÃĄllítÃĄsainak kezelÊse", "backup_settings_subtitle": "FeltÃļltÊs beÃĄllítÃĄsai", + "backup_upload_details_page_more_details": "Érintse meg tovÃĄbbi rÊszletekhez", "backward": "Visszafele", "biometric_auth_enabled": "Biometrikus azonosítÃĄs engedÊlyezve", "biometric_locked_out": "Ki vagy zÃĄrva a biometrikus azonosítÃĄsbÃŗl", @@ -716,6 +741,7 @@ "collapse_all": "Mindet Ãļsszecsuk", "color": "Szín", "color_theme": "SzíntÊma", + "command": "Parancs", "comment_deleted": "MegjegyzÊs tÃļrÃļlve", "comment_options": "MegjegyzÊs beÃĄllítÃĄsok", "comments_and_likes": "MegjegyzÊsek Ês reakciÃŗk", @@ -964,6 +990,7 @@ "failed_to_unstack_assets": "Csoportosított elemek szÊtszedÊse sikertelen", "failed_to_update_notification_status": "ÉrtesítÊs stÃĄtusz frissítÊse sikertelen", "incorrect_email_or_password": "Helytelen email vagy jelszÃŗ", + "library_folder_already_exists": "Az import mappa elÊrÊsi Ãētja mÃĄr lÊtezik.", "paths_validation_failed": "A(z) {paths, plural, one {# elÊrÊsi Ãētvonal} other {# elÊrÊsi Ãētvonal}} ÊrvÊnyesítÊse sikertelen", "profile_picture_transparent_pixels": "ProfilkÊpek nem tartalmazhatnak ÃĄtlÃĄtszÃŗ pixeleket. KÃļzelíts rÃĄ Ês/vagy mozgasd a kÊpet.", "quota_higher_than_disk_size": "Az elÊrhető lemezmÊretnÊl nagyobb kvÃŗtÃĄt ÃĄllítottÃĄl be", @@ -1048,6 +1075,7 @@ "unable_to_update_user": "FelhasznÃĄlÃŗ mÃŗdosítÃĄsa sikertelen", "unable_to_upload_file": "FÃĄjlfeltÃļltÊs sikertelen" }, + "exclusion_pattern": "KizÃĄrÃĄsi minta", "exif": "Exif", "exif_bottom_sheet_description": "LeírÃĄs HozzÃĄadÃĄsa...", "exif_bottom_sheet_description_error": "Hiba a leírÃĄs frissítÊsekor", @@ -1107,6 +1135,7 @@ "folders_feature_description": "A fÃĄjlrendszerben lÊvő fÊnykÊpek Ês videÃŗk mappanÊzetben valÃŗ bÃļngÊszÊse", "forgot_pin_code_question": "Elfelejtetted a PIN kÃŗdod?", "forward": "Előre", + "full_path": "Teljes elÊrÊi Ãētvonal: {path}", "gcast_enabled": "Google Cast", "gcast_enabled_description": "Ez a funkciÃŗ a Google-től tÃļlti be a mÅąkÃļdÊsÊhez szÃŧksÊges kÃŧlső adatokat.", "general": "ÁltalÃĄnos", @@ -1143,6 +1172,7 @@ "hide_named_person": "{name} elrejtÊse", "hide_password": "JelszÃŗ elrejtÊse", "hide_person": "SzemÊly elrejtÊse", + "hide_text_recognition": "SzÃļvegfelismerÊs elrejtÊse", "hide_unnamed_people": "NÊv nÊlkÃŧli szemÊlyek elrejtÊse", "home_page_add_to_album_conflicts": "{added} elem hozzÃĄadva a(z) \"{album}\" albumhoz. {failed} elem mÃĄr eleve az albumban volt.", "home_page_add_to_album_err_local": "Helyi elemeket mÊg nem lehet albumba tenni, ki lesznek hagyva", @@ -1188,6 +1218,8 @@ "import_path": "ImportÃĄlÃĄsi Ãētvonal", "in_albums": "{count, plural, one {# albumban} other {# albumban}}", "in_archive": "Archívumban", + "in_year": "Ebben az Êvben: {year}", + "in_year_selector": "Ebben az Êvben", "include_archived": "ArchivÃĄltakkal egyÃŧtt", "include_shared_albums": "Megosztott albumokkal egyÃŧtt", "include_shared_partner_assets": "Partner ÃĄltal megosztott elemekkel egyÃŧtt", @@ -1224,7 +1256,8 @@ "language_setting_description": "VÃĄlaszd ki preferÃĄlt nyelvet", "large_files": "Nagy FÃĄjlok", "last": "UtolsÃŗ", - "last_seen": "UtoljÃĄra lÃĄttuk", + "last_months": "{count, plural, one {UtolsÃŗ hÃŗnap} other {UtolsÃŗ # hÃŗnap}}", + "last_seen": "UtoljÃĄra bejelentkezve", "latest_version": "Legfrissebb VerziÃŗ", "latitude": "SzÊlessÊg", "leave": "ElhagyÃĄs", @@ -1233,6 +1266,8 @@ "let_others_respond": "MÃĄsok is reagÃĄlhatnak", "level": "Szint", "library": "KÊptÃĄr", + "library_add_folder": "KÃļnyvtÃĄr hozzÃĄadÃĄsa", + "library_edit_folder": "KÃļnyvtÃĄr szerkesztÊse", "library_options": "KÊptÃĄr beÃĄllítÃĄsok", "library_page_device_albums": "Albumok az EszkÃļzÃļn", "library_page_new_album": "Új album", @@ -1304,8 +1339,17 @@ "loop_videos_description": "EngedÊlyezi a videÃŗk folyamatosan ismÊtelt lejÃĄtszÃĄsÃĄt.", "main_branch_warning": "Fejlesztői verziÃŗt hasznÃĄlsz. Javasoljuk a stabil verziÃŗ hasznÃĄlatÃĄt!", "main_menu": "FőmenÃŧ", + "maintenance_description": "Az Immich maintenance mode-ba lett ÃĄllítva.", + "maintenance_end": "KarbantartÃĄsi mÃŗd kikapcsolÃĄsa", + "maintenance_end_error": "KarbantartÃĄsi mÃŗd kikapcsolÃĄsa sikertelen.", + "maintenance_logged_in_as": "Bejelentkezve mint: {user}", + "maintenance_title": "Átmenetileg nem elÊrhető", "make": "GyÃĄrtÃŗ", "manage_geolocation": "Helyadatok kezelÊse", + "manage_media_access_rationale": "Ez az engedÊly szÃŧksÊges a mozgathatÃŗ eszkÃļzÃļk kukÃĄba valÃŗ ÃĄthelyezÊshez Ês onnan valÃŗ visszaÃĄllítÃĄshoz.", + "manage_media_access_settings": "BeÃĄllítÃĄsok megnyitÃĄsa", + "manage_media_access_subtitle": "EngedÊlyezze az Immichnek a mÊdiafÃĄjlok kezelÊsÊt Ês ÃĄthelyezÊsÊt.", + "manage_media_access_title": "MÊdiakezelÊs hozzÃĄfÊrÊs", "manage_shared_links": "MegosztÃĄsi linkek kezelÊse", "manage_sharing_with_partners": "Partnerekkel valÃŗ megosztÃĄs kezelÊse", "manage_the_app_settings": "AlkalmazÃĄs beÃĄllítÃĄsainak kezelÊse", @@ -1369,6 +1413,7 @@ "more": "TovÃĄbbiak", "move": "ÁthelyezÊs", "move_off_locked_folder": "ÁtmozgatÃĄs a zÃĄrolt mappÃĄbÃŗl", + "move_to": "MozgatÃĄs", "move_to_lock_folder_action_prompt": "{count} hozzÃĄadva a zÃĄrolt mappÃĄhoz", "move_to_locked_folder": "ÁthelyezÊs a zÃĄrolt mappÃĄba", "move_to_locked_folder_confirmation": "Ezek a kÊpek Ês videÃŗk az Ãļsszes albumbÃŗl kikerÃŧlnek, Ês csak a zÃĄrolt mappÃĄban lesznek elÊrhetőek", @@ -1398,6 +1443,7 @@ "new_pin_code": "Új PIN kÃŗd", "new_pin_code_subtitle": "Ez az első alkalom hogy megnyitod a zÃĄrolt mappÃĄt. Hozz lÊtre egy jelszÃŗt a mappa biztonsÃĄgos elÊrÊsÊhez", "new_timeline": "Új idővonal", + "new_update": "Új frissítÊs", "new_user_created": "Új felhasznÃĄlÃŗ lÊtrehozva", "new_version_available": "ÚJ VERZIÓ ÉRHETŐ EL", "newest_first": "LegÃējabb előszÃļr", @@ -1413,12 +1459,14 @@ "no_cast_devices_found": "Nem talÃĄlhatÃŗ eszkÃļz vetítÊshez", "no_checksum_local": "Nincs elÊrhető ellenőrzőÃļsszeg - a helyi eszkÃļzÃļk nem kÊrhetők le", "no_checksum_remote": "Nincs elÊrhető ellenőrzőÃļsszeg - a tÃĄvoli eszkÃļz nem kÊrhető le", + "no_devices": "Nincs engedÊlyezett eszkÃļz", "no_duplicates_found": "Nem talÃĄlhatÃŗk duplikÃĄtumok.", "no_exif_info_available": "Nincs elÊrhető Exif informÃĄciÃŗ", "no_explore_results_message": "TÃļlts fel tÃļbb kÊpet, hogy bÃļngÊszhesd a gyÅąjtemÊnyed.", "no_favorites_message": "Add hozzÃĄ a kedvencekhez, hogy gyorsan megtalÃĄld a legjobb kÊpeidet Ês videÃŗidat", "no_libraries_message": "Hozz lÊtre kÃŧlső kÊptÃĄrat a fÊnykÊpeid Ês videÃŗid megtekintÊsÊhez", "no_local_assets_found": "Nem talÃĄlhatÃŗk helyi eszkÃļzÃļk ezzel az ellenőrzőÃļsszeggel", + "no_location_set": "Nincs hely megadva", "no_locked_photos_message": "A zÃĄrolt mappÃĄban elhelyezett fotÃŗk Ês videÃŗk rejtettek, Ês nem jelennek meg a kÃļnyvtÃĄrad bÃļngÊszÊse vagy keresÊse kÃļzben sem.", "no_name": "Nincs NÊv", "no_notifications": "Nincsenek ÊrtesítÊsek", @@ -1429,6 +1477,7 @@ "no_results_description": "PrÃŗbÃĄlkozz szinonimÃĄkkal vagy ÃĄltalÃĄnosabb kulcsszavakkal", "no_shared_albums_message": "Hozz lÊtre egy Ãēj albumot, hogy megoszthasd fÊnykÊpeid Ês videÃŗid mÃĄsokkal", "no_uploads_in_progress": "Nincs folyamatban lÊvő feltÃļltÊs", + "not_allowed": "Nem engedÊlyezett", "not_available": "N/A", "not_in_any_album": "Nincs albumban", "not_selected": "Nincs kivÃĄlasztva", @@ -1477,6 +1526,7 @@ "other_variables": "EgyÊb vÃĄltozÃŗk", "owned": "Tulajdonos", "owner": "Tulajdonos", + "page": "Oldal", "partner": "Partner", "partner_can_access": "{partner} hozzÃĄfÊrhet", "partner_can_access_assets": "Minden fÊnykÊped Ês videÃŗd, kivÊve az ArchivÃĄltak Ês a TÃļrÃļltek", @@ -1522,7 +1572,7 @@ "permission_onboarding_back": "Vissza", "permission_onboarding_continue_anyway": "FolytatÃĄs mindenkÊpp", "permission_onboarding_get_started": "VÃĄgjunk bele", - "permission_onboarding_go_to_settings": "BeÃĄllítÃĄsok megnyitÃĄsa", + "permission_onboarding_go_to_settings": "UgrÃĄs a beÃĄllítÃĄsokhoz", "permission_onboarding_permission_denied": "HozzÃĄfÊrÊs megtagadva. Az Immich hasznÃĄlatÃĄhoz engedÊlyezni kell a fotÃŗ Ês videÃŗ hozzÃĄfÊrÊst a BeÃĄllítÃĄsokban.", "permission_onboarding_permission_granted": "HozzÃĄfÊrÊs engedÊlyezve! Minden kÊszen ÃĄll.", "permission_onboarding_permission_limited": "KorlÃĄtozott hozzÃĄfÊrÊs. Ha szeretnÊd, hogy az Immich a teljes galÊria gyÅąjtemÊnyedet mentse Ês kezelje, akkor a BeÃĄllítÃĄsokban engedÊlyezd a fotÃŗ Ês videÃŗ jogosultsÃĄgokat.", @@ -1539,6 +1589,8 @@ "photos_count": "{count, plural, one {{count, number} FotÃŗ} other {{count, number} FotÃŗ}}", "photos_from_previous_years": "FÊnykÊpek az előző Êvekből", "pick_a_location": "Hely vÃĄlasztÃĄsa", + "pick_custom_range": "Egyedi tartomÃĄny", + "pick_date_range": "VÃĄlasszon egy dÃĄtumtartomÃĄnyt", "pin_code_changed_successfully": "Sikeres PIN kÃŗd vÃĄltoztatÃĄs", "pin_code_reset_successfully": "Sikeres PIN kÃŗd visszaÃĄllítÃĄs", "pin_code_setup_successfully": "Sikeres PIN kÃŗd beÃĄllítÃĄs", @@ -1708,6 +1760,7 @@ "running": "FutÃŗ", "save": "MentÊs", "save_to_gallery": "MentÊs a galÊriÃĄba", + "saved": "Mentve", "saved_api_key": "API Kulcs Elmentve", "saved_profile": "Profil elmentve", "saved_settings": "Elmentett beÃĄllítÃĄsok", @@ -1805,6 +1858,8 @@ "server_offline": "Szerver Nem ElÊrhető", "server_online": "Szerver ElÊrhető", "server_privacy": "Szerver biztonsÃĄg", + "server_restarting_description": "Az oldal pillanatokon belÃŧl frissÃŧl.", + "server_restarting_title": "A szerver Ãējraindul", "server_stats": "Szerver StatisztikÃĄk", "server_update_available": "SzerverfrissítÊs Êrhető el", "server_version": "Szerver VerziÃŗ", @@ -1928,6 +1983,7 @@ "show_slideshow_transition": "VetítÊs ÃĄttÅąnÊsi effekt mutatÃĄsa", "show_supporter_badge": "TÃĄmogatÃŗ jelvÊny", "show_supporter_badge_description": "TÃĄmogatÃŗ jelvÊny mutatÃĄsa", + "show_text_recognition": "Mutasd a szÃļvegfelismerÊst", "show_text_search_menu": "Mutasd a szÃļvegkeresÊsi menÃŧt", "shuffle": "VÊletlenszerÅą", "sidebar": "OldalsÃĄv", @@ -1998,6 +2054,7 @@ "tags": "CímkÊk", "tap_to_run_job": "Érintsd meg a feladat futtatÃĄsÃĄhoz", "template": "Sablon", + "text_recognition": "SzÃļvegfelismerÊs", "theme": "TÊma", "theme_selection": "TÊmavÃĄlasztÃĄs", "theme_selection_description": "A bÃļngÊsző beÃĄllítÃĄsÃĄnak megfelelően automatikusan hasznÃĄljon vilÃĄgos vagy sÃļtÊt tÊmÃĄt", @@ -2018,6 +2075,7 @@ "third_party_resources": "Harmadik FÊltől SzÃĄrmazÃŗ ForrÃĄsok", "time": "Idő", "time_based_memories": "EmlÊkek idő alapjÃĄn", + "time_based_memories_duration": "MÃĄsodpercek szÃĄma, egyes kÊpek mutatÃĄsÃĄra.", "timeline": "Idővonal", "timezone": "IdőzÃŗna", "to_archive": "ArchivÃĄlÃĄs", @@ -2029,6 +2087,7 @@ "to_select": "a kivÃĄlasztÃĄshoz", "to_trash": "LomtÃĄrba helyezÊs", "toggle_settings": "BeÃĄllítÃĄsok ÃĄtÃĄllítÃĄsa", + "toggle_theme_description": "TÊma vÃĄltÃĄsa", "total": "Összesen", "total_usage": "Összesen hasznÃĄlatban", "trash": "LomtÃĄr", @@ -2137,6 +2196,7 @@ "view_album": "Album MegtekintÊse", "view_all": "Összes MegtekintÊse", "view_all_users": "Minden FelhasznÃĄlÃŗ MegtekintÊse", + "view_asset_owners": "Elemtulajdonosok megtekintÊse", "view_details": "RÊszletek MegtekintÊse", "view_in_timeline": "MegtekintÊs az idővonalon", "view_link": "Link megtekintÊse", @@ -2158,6 +2218,7 @@ "welcome": "ÜdvÃļzlÃŧnk", "welcome_to_immich": "ÜdvÃļzÃļl az Immich", "wifi_name": "Wi-Fi Neve", + "workflow": "Munkafolyamat", "wrong_pin_code": "HibÃĄs PIN kÃŗd", "year": "Év", "years_ago": "{years, plural, one {# Êvvel} other {# Êvvel}} ezelőtt", diff --git a/i18n/id.json b/i18n/id.json index 0bc2e22136..6f0f950a4c 100644 --- a/i18n/id.json +++ b/i18n/id.json @@ -31,6 +31,7 @@ "add_to_album_toggle": "Masukkan ke {album} / Batalkan dari {album}", "add_to_albums": "Tambahkan ke album", "add_to_albums_count": "Tambahkan ke album ({count})", + "add_to_bottom_bar": "Tambahkan ke", "add_to_shared_album": "Tambahkan ke album terbagi", "add_upload_to_stack": "Tambahkan unggahan ke tumpukan", "add_url": "Tambahkan URL", @@ -66,6 +67,7 @@ "confirm_reprocess_all_faces": "Apakah Anda yakin ingin memproses semua wajah? Ini juga akan menghapus nama orang.", "confirm_user_password_reset": "Apakah Anda yakin ingin mengatur ulang kata sandi {user}?", "confirm_user_pin_code_reset": "Apakah Anda yakin ingin mereset kode PIN milik {user}?", + "copy_config_to_clipboard_description": "Salin konfigurasi sistem saat ini sebagai objek JSON ke papan klip", "create_job": "Buat tugas", "cron_expression": "Ekspresi cron", "cron_expression_description": "Tetapkan interval pemindaian menggunakan format cron. Untuk informasi lebih lanjut, silakan merujuk misalnya ke Crontab Guru", @@ -73,7 +75,8 @@ "disable_login": "Nonaktifkan log masuk", "duplicate_detection_job_description": "Jalankan pembelajaran mesin pada aset untuk mendeteksi gambar yang serupa. Bergantung pada Pencarian Pintar", "exclusion_pattern_description": "Pola pengecualian memungkinkan Anda mengabaikan berkas dan folder ketika memindai pustaka Anda. Ini berguna jika Anda memiliki folder yang berisi berkas yang tidak ingin diimpor, seperti berkas RAW.", - "external_library_management": "Pengelolaan Pustaka Eksternal", + "export_config_as_json_description": "Unduh konfigurasi sistem saat ini sebagai berkas JSON", + "external_libraries_page_description": "Halaman pustaka eksternal admin", "face_detection": "Deteksi wajah", "face_detection_description": "Deteksikan wajah dalam aset menggunakan pembelajaran mesin. Untuk video, hanya gambar kecilnya yang disertakan. \"Segarkan\" memproses (ulang) semua aset. \"Segarkan\" juga menghapus data wajah terkini. \"Hilang\" mengantrekan aset yang belum diproses. Wajah yang dideteksi akan diantrekan untuk Pengenalan Wajah setelah Pendeteksian Wajah selesai, mengelompokkan mereka dalam orang yang sudah ada atau yang baru.", "facial_recognition_job_description": "Kelompokkan wajah yang telah dideteksi menjadi orang. Langkah ini berjalan setelah Deteksi Wajah selesai. \"Segarkan\" mengelompokkan (ulang) semua wajah. \"Hilang\" mengantrekan wajah yang belum ditetapkan dengan seseorang.", @@ -101,22 +104,27 @@ "image_thumbnail_description": "Gambar kecil tanpa metadata, digunakan ketika melihat kelompok foto seperti lini masa utama", "image_thumbnail_quality_description": "Kualitas gambar kecil dari 1-100. Lebih tinggi lebih baik, tetapi menghasilkan berkas lebih besar dan dapat mengurangi respons aplikasi.", "image_thumbnail_title": "Pengaturan Gambar Kecil", + "import_config_from_json_description": "Impor konfigurasi sistem dengan mengunggah berkas konfigurasi JSON", "job_concurrency": "Konkurensi {job}", "job_created": "Tugas telah dibuat", "job_not_concurrency_safe": "Tugas ini tidak aman untuk konkurensi.", "job_settings": "Pengaturan Tugas", "job_settings_description": "Kelola konkurensi tugas", - "job_status": "Status Tugas", "jobs_delayed": "{jobCount, plural, other {# tertunda}}", "jobs_failed": "{jobCount, plural, other {# gagal}}", "library_created": "Pustaka dibuat: {library}", "library_deleted": "Pustaka dihapus", + "library_details": "Detail pustaka", + "library_folder_description": "Tentukan folder untuk diimpor. Folder ini beserta subfoldernya akan dipindai untuk gambar dan video.", + "library_remove_exclusion_pattern_prompt": "Yakin ingin menghapus pola pengecualian ini?", + "library_remove_folder_prompt": "Yakin ingin menghapus folder impor ini?", "library_scanning": "Pemindaian Berkala", "library_scanning_description": "Atur pemindaian pustaka berkala", "library_scanning_enable_description": "Aktifkan pemindaian pustaka berkala", "library_settings": "Pustaka Eksternal", "library_settings_description": "Kelola pengaturan pustaka eksternal", "library_tasks_description": "Pindai pustaka eksternal untuk aset baru dan/atau berubah", + "library_updated": "Pustaka yang diperbarui", "library_watching_enable_description": "Pantau perubahan berkas dalam pustaka eksternal", "library_watching_settings": "Pemantauan pustaka [UJI COBA]", "library_watching_settings_description": "Pantau berkas yang telah diubah secara otomatis", @@ -171,6 +179,10 @@ "machine_learning_smart_search_enabled": "Aktifkan pencarian pintar", "machine_learning_smart_search_enabled_description": "Jika dinonaktifkan, gambar tidak akan dienkode untuk pencarian pintar.", "machine_learning_url_description": "URL server pembelajaran mesin. Jika lebih dari satu URL disediakan, setiap server akan dicoba satu per satu sampai salah satu berhasil merespons, dari urutan pertama sampai terakhir. Server yang tidak merespons akan diabaikan sementara sampai kembali daring.", + "maintenance_settings": "Pemeliharaan", + "maintenance_settings_description": "Setel mode pemeliharaan Immich", + "maintenance_start": "Mulai mode pemeliharaan", + "maintenance_start_error": "Gagal memulai mode pemeliharaan.", "manage_concurrency": "Kelola Konkurensi", "manage_log_settings": "Kelola pengaturan log", "map_dark_style": "Gaya gelap", @@ -397,7 +409,6 @@ "user_restore_scheduled_removal": "Pulihkan pengguna - jadwalkan pelepasan pada {date, date, long}", "user_settings": "Pengaturan Pengguna", "user_settings_description": "Kelola pengaturan pengguna", - "user_successfully_removed": "Pengguna {email} berhasil dikeluarkan.", "version_check_enabled_description": "Aktifkan pemeriksaan versi", "version_check_implications": "Fitur pemeriksaan versi tergantung komunikasi berkala dengan github.com", "version_check_settings": "Pemeriksaan Versi", @@ -473,6 +484,7 @@ "allow_edits": "Perbolehkan penyuntingan", "allow_public_user_to_download": "Perbolehkan pengguna publik untuk mengunduh", "allow_public_user_to_upload": "Perbolehkan pengguna publik untuk mengunggah", + "allowed": "Diijinkan", "alt_text_qr_code": "Gambar kode QR", "anti_clockwise": "Berlawanan arah jarum jam", "api_key": "Kunci API", @@ -952,8 +964,8 @@ "failed_to_create_album": "Gagal membuat album", "failed_to_create_shared_link": "Gagal membuat tautan terbagi", "failed_to_edit_shared_link": "Gagal menyunting tautan terbagi", - "failed_to_get_people": "Gagal mendapatkan orang", - "failed_to_keep_this_delete_others": "Gagal mempertahankan aset ini dan hapus aset-aset lainnya", + "failed_to_get_people": "Gagal menangkap orang", + "failed_to_keep_this_delete_others": "Gagal menyimpan aset ini dan menghapus aset-aset lainnya", "failed_to_load_asset": "Gagal membuka aset", "failed_to_load_assets": "Gagal membuka aset-aset", "failed_to_load_notifications": "Gagal memuat notifikasi", @@ -966,13 +978,13 @@ "incorrect_email_or_password": "Surel atau kata sandi tidak benar", "paths_validation_failed": "{paths, plural, one {# jalur} other {# jalur}} gagal validasi", "profile_picture_transparent_pixels": "Foto profil tidak dapat memiliki piksel transparan. Silakan perbesar dan/atau pindah posisi gambar.", - "quota_higher_than_disk_size": "Anda menetapkan kuota lebih tinggi dari ukuran diska", + "quota_higher_than_disk_size": "Anda menetapkan kuota lebih tinggi dari ukuran disk", "something_went_wrong": "Terjadi kesalahan", "unable_to_add_album_users": "Tidak dapat menambahkan pengguna ke album", "unable_to_add_assets_to_shared_link": "Tidak dapat menambahkan aset ke tautan terbagi", "unable_to_add_comment": "Tidak dapat menambahkan komentar", "unable_to_add_exclusion_pattern": "Tidak dapat menambahkan pola pengecualian", - "unable_to_add_partners": "Tidak dapat menambahkan partner", + "unable_to_add_partners": "Tidak dapat menambahkan rekan", "unable_to_add_remove_archive": "Tidak dapat {archived, select, true {menghapus aset dari} other {menambahkan aset ke}} arsip", "unable_to_add_remove_favorites": "Tidak dapat {favorite, select, true {menambahkan aset ke} other {menghapus aset dari}} favorit", "unable_to_archive_unarchive": "Tidak dapat {archived, select, true {mengarsipkan} other {membatalkan pengarsipan}}", diff --git a/i18n/is.json b/i18n/is.json index 0967ef424b..d534e62cd4 100644 --- a/i18n/is.json +++ b/i18n/is.json @@ -1 +1,1139 @@ -{} +{ + "about": "Um", + "account": "Aðgangur", + "account_settings": "Aðgangs stillingar", + "acknowledge": "Staðfesta", + "action": "Aðgerð", + "action_common_update": "UppfÃĻra", + "actions": "Aðgerðir", + "active": "Virkt", + "active_count": "Virk: {count}", + "activity": "Virkni", + "activity_changed": "Virkni er {enabled, select, true {enabled} other {disabled}}", + "add": "BÃĻta við", + "add_a_description": "BÃĻta við lÃŊsingu", + "add_a_location": "Setja inn staðsetningu", + "add_a_name": "BÃĻta við nafni", + "add_a_title": "BÃĻta við titli", + "add_birthday": "BÃĻta við afmÃĻlisdegi", + "add_endpoint": "BÃĻta við endapunkti", + "add_exclusion_pattern": "BÃĻta við Ãētilokunarmynstri", + "add_location": "BÃĻta við staðsetningu", + "add_more_users": "BÃĻta við fleiri notendum", + "add_partner": "BÃĻta við maka", + "add_path": "BÃĻta við slÃŗÃ°", + "add_photos": "BÃĻta við myndum", + "add_tag": "BÃĻta við merki", + "add_to": "BÃĻta íâ€Ļ", + "add_to_album": "BÃĻta í albÃēm", + "add_to_album_bottom_sheet_added": "BÃĻtt við {album}", + "add_to_album_bottom_sheet_already_exists": "Þegar í {album}", + "add_to_album_bottom_sheet_some_local_assets": "Ekki gekk að bÃĻta sumum staðvÃĻrum eignum í myndasafn", + "add_to_album_toggle": "Breyta vali fyrir {album}", + "add_to_albums": "BÃĻta í albÃēm", + "add_to_albums_count": "BÃĻtt í albÃēm ({count})", + "add_to_bottom_bar": "BÃĻta í", + "add_to_shared_album": "BÃĻta í deilt albÃēm", + "add_upload_to_stack": "BÃĻta upphleðslu í hrÃēgu", + "add_url": "Setja inn URL", + "added_to_archive": "BÃĻtt í geymslu", + "added_to_favorites": "BÃĻtt í uppÃĄhalds", + "added_to_favorites_count": "BÃĻtti {count, number} í uppÃĄhalds", + "admin": { + "add_exclusion_pattern_description": "BÃĻta við Ãētolokunarmynstri. AlgildisstÃļfun með *, ** og ? er stutt. Til að hundsa allar skrÃĄr í Ãļllum mÃļppum sem heita \"Raw\", notið \"**/Raw/**\". Til að hundsa allar skrÃĄr sem enda ÃĄ \".tif\", notið \"**/*.tif\". Til að hundsa beinar slÃŗÃ°ir notið \"/sleppt/slÃŗÃ°/**\".", + "admin_user": "StjÃŗrnandi", + "asset_offline_description": "Þessi utanaðkomandi skrÃĄ í safninu finnst ekki lengur ÃĄ disknum og hefur verið fÃĻrð í ruslið. Ef skrÃĄin var fÃĻrð til innan safnsins skaltu athuga tímalínuna fyrir nÃŊja, samsvarandi skrÃĄ. Til að endurheimta Þessa skrÃĄ skaltu tryggja að Immich hafi aðgang að skrÃĄarslÃŗÃ°inni hÊr að neðan og skanna síðan safnið aftur.", + "authentication_settings": "Auðkenningarstillingar", + "authentication_settings_description": "SÃŊsla með lykilorð, OAuth og aðrar auðkennisstillingar", + "authentication_settings_disable_all": "Ertu viss um að ÞÃē viljir slÃļkkva ÃĄ Ãļllum innskrÃĄningar aðferðum? InnskrÃĄning mun vera algjÃļrlega slÃļkkt.", + "authentication_settings_reenable": "Til að kveikja aftur, notaðu ÞjÃŗns skipun.", + "background_task_job": "Bakgrunns verk", + "backup_database": "BÃēa til gagnagrunnsafrit", + "backup_database_enable_description": "Virkja gagnagrunnsafrit", + "backup_keep_last_amount": "FjÃļldi afrita sem ÃĄ að geyma", + "backup_onboarding_1_description": "fjar afrit í skÃŊinu eða ÃĄ Ãļðrum stað.", + "backup_onboarding_2_description": "afrit sem geymd eru ÃĄ staðnum ÃĄ fleiri en einu tÃĻki. Þetta nÃĻr bÃĻði yfir upprunalegu gÃļgnin og staðbundið Ãļryggisafrit Þeirra.", + "backup_onboarding_3_description": "heildar afrit af gÃļgnunum Þínum, Þar ÃĄ meðal upprunanlegu skrÃĄrnar. ÃžÃĄ er um að rÃĻða 1 fjar afrit og 2 afrit ÃĄ staðnum.", + "backup_onboarding_description": "MÃĻlt er með 3-2-1 afritun til að vedna gÃļgnin Þín. ÞÃē ÃĻttir að eiga afrit af upphlÃļðnum myndum/myndbÃļndum sem og Immich gagnagrunninum sem alhliða afritunar lausn.", + "backup_onboarding_footer": "Fyrir frekari upplÃŊsingar um afritun fyrir Immich ÃžÃĄ bendum við ÃĄ handbÃŗkina.", + "backup_onboarding_parts_title": "3-2-1 afrit er:", + "backup_onboarding_title": "Afrit", + "backup_settings": "Stillingar fyrir gagnagrunnsafritun", + "backup_settings_description": "StjÃŗrna stillingum fyrir gagnagrunnsafrit.", + "cleared_jobs": "Hreinsaði ferla fyrir: {job}", + "config_set_by_file": "Stillingar eru skilgreindar í stilliskrÃĄ eins og er", + "confirm_delete_library": "Ertu viss um að ÞÃē viljir eyða safni {library}?", + "confirm_delete_library_assets": "Ertu viss um að ÞÃē viljir eyða Þessu safni? Þetta mun eyða {count, plural, one {# contained asset} other {all # contained assets}} Ãēr Immich og er ekki hÃĻgt að afturkalla. SkrÃĄr munu ekki eyðast af diski.", + "confirm_email_below": "Skrifaðu \"{email}\" hÊr að neðan til staðfestingar", + "confirm_reprocess_all_faces": "Ertu viss um að ÞÃē viljir endurskanna Ãļll andlit? Þetta mun einnig hreinsa nefnt fÃŗlk.", + "confirm_user_password_reset": "Ertu viss um að ÞÃē viljir endursetja lykilorð fyrir {user}?", + "confirm_user_pin_code_reset": "Ertu viss um að ÞÃē viljir endursetja PIN kÃŗÃ°a fyrir {user}?", + "copy_config_to_clipboard_description": "Afrita nÃēverandi stillingar sem JSON", + "create_job": "BÃēa til feril", + "cron_expression": "Cron segð", + "cron_expression_description": "Setja tímabil milli skoðana ÃĄ cron formi. SjÃĄ Crontab Guru fyrir frekari upplÃŊsingar", + "cron_expression_presets": "Forstilltar cron segðir", + "disable_login": "Afvirkja innskrÃĄningu", + "duplicate_detection_job_description": "Keyra vÊlnÃĄm ÃĄ eignir til að greina svipaðar myndir. Reiðir sig ÃĄ Snjallleit", + "exclusion_pattern_description": "Útilokunarmynstur mÃĄ nota til að hundsa skrÃĄr og mÃļppur Þegar myndasÃļfn eru skÃļnnuð. Þetta nÃŊtist Þegar sleppa ÃĄ vissum skrÃĄm eins og t.d. RAW skrÃĄm.", + "export_config_as_json_description": "Niðurhala nÃēverandi kerfisstillingum sem JSON skrÃĄ", + "external_libraries_page_description": "StjÃŗrnunarsíða utanÃĄliggjandi myndasafna", + "face_detection": "Andlitsgreining", + "face_detection_description": "Greina andlit ÃĄ eignum með vÊlnÃĄmi. Aðeins gaummynd er unnin í tilfelli myndbanda. \"EndurnÃŊja\" (endur-)skoðar allar eignir. \"Endursetja\" hreinsar einnig nÃēverandi andlitsgÃļgn. \"Óunnið\" setur eignir í biðrÃļð sem hafa ekki enn verið unnar. Greind andlit fara í biðrÃļð fyrir andlitakennsl eftir að andlitsgreiningu er lokið og safnar Þeim saman í nÃēverandi eða nÃŊtt fÃŗlk.", + "facial_recognition_job_description": "Safna greindum andlitum saman í fÃŗlk. Þetta skref keyrir að Andlitsgreiningu lokinni. \"Endursetja\" (endur-)hÃŗpar Ãļllum andlitum saman. \"Óunnið\" setur andlit í biðrÃļð sem hafa ekki verið tengd við manneskju.", + "failed_job_command": "Skipun {command} klÃēðraðist fyrir ferli: {job}", + "force_delete_user_warning": "AÐVÖRUN: Þetta mun fjarlÃĻgja notanda og allar eignir ÃĄ stundinni. Þetta er ekki hÃĻgt að afturkalla og skrÃĄr geta ekki verið endurheimtar.", + "image_format": "Snið", + "image_format_description": "WebP framkallar smÃĻrri skrÃĄr en JPEG, en er hÃĻgvirkara í kÃŗÃ°un.", + "image_fullsize_description": "Mynd í fullri stÃĻrð ÃĄn lÃŊsigagna, notað Þegar Þysjað er að", + "image_fullsize_enabled": "Virkja framleiðslu mynda í fullri stÃĻrð", + "image_fullsize_enabled_description": "Framleiða myndir í fullri stÃĻrð fyrir snið Ãŗtilfallin vefnum. Þegar \"KjÃŗsa innbyggða gÃĻgjumynd\" er valið ÃžÃĄ er innbyggð gÃĻgjumynd notuð ÃĄn umskrÃĄningar. Hefur ekki ÃĄhrif ÃĄ snið tilfallin vefnum eins og JPEG.", + "image_fullsize_quality_description": "MyndgÃĻði myndar í fullri stÃĻrð frÃĄ 1-100. HÃĻrra er betra en skrÃĄastÃĻrðin verður meiri.", + "image_fullsize_title": "Stillingar Mynda í Fullri StÃĻrð", + "image_prefer_embedded_preview": "KjÃŗsa innbyggða gaummynd", + "image_prefer_embedded_preview_setting_description": "Nota innbyggða gaummynd í RAW myndum sem inntakið í myndvinnslu Þegar hÃĻgt er. Þetta gÃĻti framleitt nÃĄkvÃĻmari liti fyrir sumar myndir, en gÃĻði gaummyndarinnar er hÃĄÃ° myndavÊlinni og myndin gÃĻti haft lÃŊti vegna ÞjÃļppunar.", + "image_prefer_wide_gamut": "KjÃŗsa vítt litrÃŗf", + "image_prefer_wide_gamut_setting_description": "Nota Display P3 fyrir gaummyndir. Þetta viðheldur litríki mynda með víða litrÃŊmd, en myndir gÃĻtu birst mismunandi ÃĄ gÃļmlum tÃĻkjum með gamla vafra. Myndir með sRGB litrÃŊmd er haldið í sRGB til að komast hjÃĄ hliðrun lita.", + "image_preview_description": "Mynd í miðstÃĻrð ÃĄn lÃŊsigagna, notað við skoðun stakrar myndar og fyrir vÊlnÃĄm", + "image_preview_quality_description": "MyndgÃĻði gaummyndar frÃĄ 1-100. HÃĻrra er betra, en stÃĻrð skrÃĄar verður meiri sem gÃĻti haft ÃĄhrif ÃĄ snerpu forritsins. LÃĄgt gildi gÃĻti haft ÃĄhrif ÃĄ gÃĻði vÊlnÃĄms.", + "image_preview_title": "Stillingar Forskoðunar", + "image_quality": "GÃĻði", + "image_resolution": "Upplausn", + "image_resolution_description": "HÃĻrri upplausn getur varðveitt smÃĄatriði í myndum en tekur lengri tíma í kÃŗÃ°un, bÃŊr til stÃĻrri skrÃĄr og getur haft ÃĄhrif ÃĄ snerpu forritsins.", + "image_settings": "Stillingar Mynda", + "image_settings_description": "SÃŊsla með gÃĻði og upplausn framleiddra mynda", + "image_thumbnail_description": "Lítil gaummynd ÃĄn lÃŊsigagna, notað Þegar margar myndir eru skoðaðar eins og ÃĄ tímalínunni", + "image_thumbnail_quality_description": "GÃĻði gaummynda frÃĄ 1-100. HÃĻrra er betra, en bÃŊr til stÃĻrri skrÃĄr sem geta haft ÃĄhrif ÃĄ snerpu forritsins.", + "image_thumbnail_title": "Stillingar Gaummynda", + "import_config_from_json_description": "FÃĻra inn kerfisstillingar með Því að hlaða upp JSON skrÃĄ", + "job_concurrency": "samvinnsla {job}", + "job_created": "Ferill bÃēinn til", + "job_not_concurrency_safe": "Þessi ferill er ekki Ãļruggur í samvinnslu.", + "job_settings": "Stillingar Ferla", + "job_settings_description": "SÃŊsla með samvinnslu ferla", + "jobs_delayed": "{jobCount, plural, other {# seinkað}}", + "jobs_failed": "{jobCount, plural, other {# klÃēður}}", + "jobs_over_time": "Ferlar yfir tíma", + "library_created": "BjÃŗ til myndasafn: {library}", + "library_deleted": "Myndasafni eytt", + "library_details": "SmÃĄatriði myndasafns", + "library_folder_description": "Tilgreindu mÃļppu til að hlaða inn. Þessi mappa og undirmÃļppur hennar verða skannaðar m.t.t. mynda og myndbanda.", + "library_remove_exclusion_pattern_prompt": "Ertu viss um að ÞÃē viljir fjarlÃĻgja Þetta Ãētilokunarmynstur?", + "library_remove_folder_prompt": "Ertu viss um að ÞÃē viljir fjarlÃĻgja Þessa innfluttu mÃļppu?", + "library_scanning": "Lotubundin SkÃļnnun", + "library_scanning_description": "SÃŊsla með lotubundna skÃļnnun myndasafna", + "library_scanning_enable_description": "Virkja lotubundna skÃļnnun myndasafna", + "library_settings": "Utanaðkomandi Myndasafn", + "library_settings_description": "SÃŊsla með stillingar utanaðkomandi myndasafna", + "library_tasks_description": "Skanna utanaðkomandi myndasÃļfn m.t.t. nÃŊrra og/eða breyttra eigna", + "library_updated": "UppfÃĻrði myndasafn", + "library_watching_enable_description": "Fylgjast með breytingum í utanaðkomandi myndasÃļfnum", + "library_watching_settings": "VÃļktun myndasafna [Á TILRAUNASTIGI]", + "library_watching_settings_description": "Fylgjast sjÃĄlfkrafa með breytingum ÃĄ skrÃĄm", + "logging_enable_description": "Virkja atburðaskrÃĄningu", + "logging_level_description": "Þegar virkjað, hvaða stig atburðaskrÃĄninga skal nota.", + "logging_settings": "AtburðaskrÃĄning", + "machine_learning_availability_checks": "Athuganir ÃĄ tiltÃĻkileika", + "machine_learning_availability_checks_description": "SjÃĄlfkrafa nema og nota frekar tiltÃĻkilega vÊlnÃĄmsÞjÃŗna", + "machine_learning_availability_checks_enabled": "Virkja athuganir ÃĄ tiltÃĻkileika", + "machine_learning_availability_checks_interval": "Lota athugana", + "machine_learning_availability_checks_interval_description": "Bil í millisekÃēndum ÃĄ milli athugana ÃĄ tiltÃĻkileika", + "machine_learning_availability_checks_timeout": "TímamÃļrk beiðnar", + "machine_learning_availability_checks_timeout_description": "TímamÃļrk í millisekÃēndum fyrir athuganir ÃĄ tiltÃĻkileika", + "machine_learning_clip_model": "CLIP mÃŗdel", + "machine_learning_clip_model_description": "Nafn CLIP mÃŗdels ÃĄ lista. Athugaðu að keyra Þarf feril fyrir 'Snjalleit' ÃĄ allar myndir ef mÃŗdeli er breytt.", + "machine_learning_duplicate_detection": "Greina FjÃļlfÃļldun", + "machine_learning_duplicate_detection_enabled": "Virkja greiningu fjÃļlfÃļldunar", + "machine_learning_duplicate_detection_enabled_description": "Ef Ãŗvirkjað verða samt nÃĄkvÃĻmlega eins eignir einfaldaðar.", + "machine_learning_duplicate_detection_setting_description": "Nota CLIP ívaf til að finna líklegar fjÃļlfaldanir", + "machine_learning_enabled": "Virkja vÊlnÃĄm", + "machine_learning_enabled_description": "Ef Ãŗvirkjað verður Ãļll vÊlnÃĄmsvirkni Ãŗvirkjuð, burtsÊð frÃĄ stillingum að neðan.", + "machine_learning_facial_recognition": "Andlitskennsl", + "machine_learning_facial_recognition_description": "Nema, greina og hÃŗpa andlit ÃĄ myndum", + "machine_learning_facial_recognition_model": "MÃŗdel andlitskennsla", + "machine_learning_facial_recognition_model_description": "MÃŗdel eru listuð í minnkandi stÃĻrðarrÃļð. StÃĻrri mÃŗdel eru hÃĻgvirkari og minnisfrekari, en skila betri niðurstÃļðum. Athugaðu að keyra Þarf feril fyrir Andlitsgreiningu ÃĄ allar myndir ef mÃŗdeli er breytt.", + "machine_learning_facial_recognition_setting": "Virkja andlitsgreiningu", + "machine_learning_facial_recognition_setting_description": "Ef Ãŗvirkjað verða myndir ekki kÃŗÃ°aðar fyrir andlitsgreiningu og munu ekki fylla FÃŗlk hlutann undir Skoða síðunni.", + "machine_learning_max_detection_distance": "HÃĄmarks greiningarfjarlÃĻgð", + "machine_learning_max_detection_distance_description": "HÃĄmark fjarlÃĻgðar ÃĄ milli tveggja mynda Þannig að um tvítekningu sÊ að rÃĻða ÃĄ bilinu 0.001-0.1 HÃĻrri gildi greina fleiri fjÃļlfaldanir ÃĄ kostnað rÊttleika.", + "machine_learning_max_recognition_distance": "HÃĄmarks greiningarfjarðlÃĻgð", + "machine_learning_max_recognition_distance_description": "HÃĄmarks fjarlÃĻgð ÃĄ milli tveggja andlita, ÃĄ bilinu 0-2, svo Þau sÊu talin tilheyra sÃļmu manneskjunni. SÊ gildið lÃĻkkað gÃĻti Það komið í veg fyrir að tvÃĻr aðskildar manneskjur sÊu merktar sem sÃē sama, en hÃĻkkun ÃĄ gildinu kÃĻmi í veg fyrir að sama manneskjan sÊ talin vera margar. Athugið að Það er auðveldara að sameina tvÃĻr manneskjur en Það er að skipta einni í tvennt, svo betra er að vera í lÃĻgri kantinum.", + "machine_learning_min_detection_score": "LÃĻgsta greiningargildi", + "machine_learning_min_detection_score_description": "LÃĄgmarks traustgildi Þess að andlit sÊ greint, frÃĄ 0-1. LÃĻgri gildi greina fleiri andlit en gera fleiri mistÃļk.", + "machine_learning_min_recognized_faces": "LÃĄgmark greindra andlita", + "machine_learning_min_recognized_faces_description": "LÃĄgmarks fjÃļldi greindra andlita sem Þarf til að persÃŗna sÊ skÃļpuð. HÃĻrri gildi gerir Andlitskennsl nÃĄkvÃĻmari ÃĄ kostnað Þess að líklegra sÊ að andlit sÊ ekki kennt við persÃŗnu.", + "machine_learning_ocr": "BÃŗkstafagreining", + "machine_learning_ocr_description": "Nota vÊlanÃĄm til að bera kenns ÃĄ texta í myndum", + "machine_learning_ocr_enabled": "Virkja BÃŗkstafagreiningu", + "machine_learning_ocr_enabled_description": "Ef Ãŗvirkt, verður ekki skimað eftir texta í myndum.", + "machine_learning_ocr_max_resolution": "HÃĄmarks upplausn", + "machine_learning_ocr_max_resolution_description": "StÃĻrð gaummynda með hÃĻrri upplausn en tilgreint er hÊr verður breytt ÃĄn Þess að breyta hlutfÃļllum myndarinnar. HÃĻrri gildi lÃŊsa myndinni betur, en nota meira minni og afl.", + "machine_learning_ocr_min_detection_score": "LÃĄgmarks greinigargildi", + "machine_learning_ocr_min_detection_score_description": "LÃĄgmark traustgildi Þess að texti sÊ greindur, frÃĄ 0-1. LÃĻgri gildi greina meiri texta ÃĄ kostnað rÊttleika.", + "machine_learning_ocr_min_recognition_score": "LÃĄgmarks greiningargildi", + "machine_learning_ocr_min_score_recognition_description": "LÃĄmarks greiningargildi krafist til að texti sÊ greindur frÃĄ 0-1. LÃĻgri gildi munu greina meiri texta en geta valdið villum.", + "machine_learning_ocr_model": "BÃŗkstafagreiningar mÃŗdel", + "machine_learning_ocr_model_description": "VÊlÞjÃŗnalíkÃļn eru nÃĄkvÃĻmari en farandslíkÃļn ÃĄ kostnað tíma og minnisnotkunar.", + "machine_learning_settings": "Stillingar VÊlnÃĄms", + "machine_learning_settings_description": "SÃŊsla með eiginleika og stillingar vÊlnÃĄms", + "machine_learning_smart_search": "SnjÃļll Leit", + "machine_learning_smart_search_description": "Leita merkingarlega að myndum með CLIP ívafi", + "machine_learning_smart_search_enabled": "Virkja snjalla leit", + "machine_learning_smart_search_enabled_description": "Myndir verða ekki kÃŗÃ°aðar fyrir snjallleit sÊ slÃļkkt ÃĄ Þessu.", + "machine_learning_url_description": "Veffang vÊlnÃĄmsÞjÃŗnsins. Ef fleira en eitt veffang er tilgreint verður haft samband við eitt Þeirra í einu Þar til eitthvað svarar, í Þeirri rÃļð sem Þau eru tilgreind.", + "maintenance_settings": "Viðhald", + "maintenance_settings_description": "Setja Immich í viðhaldsham.", + "maintenance_start": "Virkja viðhaldsham", + "maintenance_start_error": "Ekki gekk að virkja viðhaldsham.", + "manage_concurrency": "SÃŊsla með samvinnslu", + "manage_concurrency_description": "Farðu ÃĄ stillingasíðuna til að sÃŊsla með samvinnslu", + "manage_log_settings": "SÃŊsla með atburðaskrÃĄ", + "map_dark_style": "DÃļkk ÃĄsjÃĄ", + "map_enable_description": "Virkja kortamÃļguleika", + "map_gps_settings": "Kort & GPS stillingar", + "map_gps_settings_description": "SÃŊsla með Kort og GPS (afturvirk landkÃŗÃ°un)", + "map_implications": "Kortaeiginleikinn krefst utanaðkomandi ÞjÃŗnustu (tiles.immich.cloud)", + "map_light_style": "LjÃŗs ÃĄsjÃĄ", + "map_manage_reverse_geocoding_settings": "SÃŊsla með Afturvirka LandkÃŗÃ°un", + "map_reverse_geocoding": "Afturvirk LandkÃŗÃ°un", + "map_reverse_geocoding_enable_description": "Virkja afturvirka landkÃŗÃ°un", + "map_reverse_geocoding_settings": "Stillingar Afturvirkrar LandkÃŗÃ°unar", + "map_settings": "Kort", + "map_settings_description": "Breyta kortastillingum", + "map_style_description": "Veffang sem vísar ÃĄ style.json kortaÞema", + "memory_cleanup_job": "Hreinsa geymsluplÃĄss", + "memory_generate_job": "Framleiðsla minnis", + "metadata_extraction_job": "SÃĻkja lÃŊsigÃļgn", + "metadata_extraction_job_description": "SÃĻkja lÃŊsigÃļgn frÃĄ sÊrhverri eign, t.a.m. GPS, andlit og upplausn", + "metadata_faces_import_setting": "Virkja innflutning andlita", + "metadata_faces_import_setting_description": "Flytja inn andlit Ãēr EXIF gÃļgnum og fylgiskrÃĄm", + "metadata_settings": "Stillingar LÃŊsigagna", + "metadata_settings_description": "SÃŊsla með lÃŊsigÃļgn", + "migration_job": "Flutningar", + "migration_job_description": "Flytja gaummyndir eigna og andlita í nÃŊjasta skrÃĄaskipulag", + "nightly_tasks_cluster_faces_setting_description": "Keyra andlitakennsl ÃĄ nÃŊlega greind andlit", + "nightly_tasks_cluster_new_faces_setting": "HÃŗpa nÃŊ andlit", + "nightly_tasks_database_cleanup_setting": "Ferlar hreinsunar gagnagrunns", + "nightly_tasks_database_cleanup_setting_description": "Hreinsa upp gÃļmul Ãētrunnin gÃļgn Ãēr gagnagrunni", + "nightly_tasks_generate_memories_setting": "Framleiða minningar", + "nightly_tasks_generate_memories_setting_description": "BÃēa til nÃŊjar minningar Ãēr eign", + "nightly_tasks_missing_thumbnails_setting": "Framleiða gaummyndir Þar sem vantar", + "nightly_tasks_missing_thumbnails_setting_description": "Setja eignir ÃĄn gaummynda í biðrÃļð fyrir framleiðslu gaummynda", + "nightly_tasks_settings": "Stillingar nÃĻturferla", + "nightly_tasks_settings_description": "SÃŊsla með nÃĻturferla", + "nightly_tasks_start_time_setting": "Upphafstími", + "nightly_tasks_start_time_setting_description": "SÃĄ tími Þegar vÊlÞjÃŗnninn hefur keyrslu nÃĻturferilsins", + "nightly_tasks_sync_quota_usage_setting": "Notkun Ãēthlutaðs plÃĄss", + "nightly_tasks_sync_quota_usage_setting_description": "UppfÃĻra Ãēthlutað plÃĄss notanda, byggt ÃĄ nÃēverandi notkun", + "no_paths_added": "Engum slÃŗÃ°um bÃĻtt við", + "no_pattern_added": "Engu mynstri bÃĻtt við", + "note_apply_storage_label_previous_assets": "Athugið: Til að beita Geymslumerkingu ÃĄ fyrirliggjandi eignir, keyrðu", + "note_cannot_be_changed_later": "ATHUGIÐ: Þessu getur ekki verið breytt seinna!", + "notification_email_from_address": "FrÃĄ tÃļlvupÃŗstfang", + "notification_email_from_address_description": "Netfang sendanda, til dÃĻmis \"Immich myndaÞjÃŗnn \". Notið netfang sem Þið hafið leyfi til að senda frÃĄ.", + "notification_email_host_description": "HÃŊsill tÃļlvupÃŗstÞjÃŗnsins (t.d. smtp.immich.app)", + "notification_email_ignore_certificate_errors": "Hundsa villur í TLS skírteini", + "notification_email_ignore_certificate_errors_description": "Hundsa villur í sannreynslu TLS skírteinis (slÃĻm hugmynd)", + "notification_email_password_description": "Lykilorð til auðkenningar ÃĄ pÃŗstÞjÃŗninum", + "notification_email_port_description": "Tengi pÃŗstÞjÃŗnustunnar (t.d. 25, 465 eða 587)", + "notification_email_secure": "SMTPS", + "notification_email_secure_description": "Nota SMTPS (SMTP yfir TLS)", + "notification_email_sent_test_email_button": "Senda prufupÃŗst og vista", + "notification_email_setting_description": "Stillingar fyrir tÃļlvupÃŗstmeldingar", + "notification_email_test_email": "Senda prufupÃŗst", + "notification_email_test_email_failed": "Ekki gekk að senda prufupÃŗst, athugið stillingar", + "notification_email_test_email_sent": "PrufupÃŗstur hefur verið sendur ÃĄ {email}. Vinsamlega kíktu í pÃŗsthÃŗlfið Þitt.", + "notification_email_username_description": "Notandanafn til auðkenningar ÃĄ pÃŗstÞjÃŗni", + "notification_enable_email_notifications": "Virkja meldingar í tÃļlvupÃŗsti", + "notification_settings": "Stillingar fyrir meldingar", + "notification_settings_description": "SÃŊsla með meldingar, Þ.ÃĄ.m. tÃļlvupÃŗst", + "oauth_auto_launch": "Hefja sjÃĄlfkrafa", + "oauth_auto_launch_description": "Hefja OAuth innskrÃĄninguna sjÃĄlfkrafa Þegar farið er ÃĄ innskrÃĄningarsíðuna", + "oauth_auto_register": "SjÃĄlfvirk skrÃĄning", + "oauth_auto_register_description": "SkrÃĄ nÃŊja notendur sjÃĄlfkrafa eftir að Þeir hafa skrÃĄÃ° sig inn með OAuth", + "oauth_button_text": "Texti ÃĄ takka", + "oauth_client_secret_description": "Krafist ef PKCE (Proof Key for Code Exchange) er ekki stutt af OAuth aðila", + "oauth_enable_description": "SkrÃĄ inn með OAuth", + "oauth_mobile_redirect_uri": "Veffang endurbeiningar", + "oauth_mobile_redirect_uri_override": "Yfirtaka veffangs endurbeiningar", + "oauth_mobile_redirect_uri_override_description": "Virkja Þegar OAuth aðili leyfir ekki endurbeiningar ÃĄ borð við \"{callback}\"", + "oauth_role_claim": "Hlutverkakrafa", + "oauth_role_claim_description": "Veita stjÃŗrunaraðgang sjÃĄlfkrafa byggt ÃĄ verund Þessarar krÃļfu. Krafan getur annað hvort verið 'user' eða 'admin'.", + "oauth_settings": "OAuth", + "oauth_settings_description": "SÃŊsla með OAuth innskrÃĄningu", + "oauth_settings_more_details": "Fyrir frekari upplÃŊsingar um Þennan eiginleika, kíktu í leiðbeiningarnar.", + "oauth_storage_label_claim": "Krafa geymslumerkingar", + "oauth_storage_label_claim_description": "Stilla geymslumerkingar notanda sjÃĄlfkrafa samkvÃĻmt gildi Þessarar krÃļfu.", + "oauth_storage_quota_claim": "Krafa Ãēthlutaðs plÃĄss", + "oauth_storage_quota_claim_description": "Stilla Ãēthlutað plÃĄss notanda sjÃĄlfkrafa samkvÃĻmt gildi Þessarar krÃļfu.", + "oauth_storage_quota_default": "SjÃĄlfgefin stÃĻrð Ãēthlutaðs plÃĄss í GiB", + "oauth_storage_quota_default_description": "Úthlutað plÃĄss í GiB Þegar engin krafa er gefin.", + "oauth_timeout": "TímamÃļrk beiðna", + "oauth_timeout_description": "TímamÃļrk fyrir beiðnir í millisekÃēndum", + "ocr_job_description": "Notkun vÊlnÃĄms til að greina texta í myndum", + "password_enable_description": "SkrÃĄ inn með netfangi og lykilorði", + "password_settings": "InnskrÃĄning með lykilorði", + "password_settings_description": "SÃŊsla með innskrÃĄningar með lykilorðum", + "paths_validated_successfully": "Allar slÃŗÃ°ir hafa verið sannreyndar", + "person_cleanup_job": "Hreinsun manneskja", + "queue_details": "UpplÃŊsingar um biðrÃļð", + "queues": "Biðraðir ferla", + "queues_page_description": "Síða biðraða stjÃŗrnunarferla", + "quota_size_gib": "StÃĻrð Ãēthlutaðs plÃĄss (GiB)", + "refreshing_all_libraries": "Fríska upp ÃĄ Ãļll myndasÃļfn", + "registration": "SkrÃĄning stjÃŗrnenda", + "registration_description": "Þar sem ÞÃē ert fyrsti notandi kerfisins verður ÞÃē gerður að StjÃŗrnanda og ert sem slíkur ÃĄbyrgur fyrir stjÃŗrnunarverkum og fleiri notendur verða bÃēnir til af ÞÊr.", + "remove_failed_jobs": "FjarlÃĻgja brostna ferla", + "require_password_change_on_login": "Notandi Þarf að breyta lykilorði við innskrÃĄningu", + "reset_settings_to_default": "Endurstilla í sjÃĄlfgefin gildi", + "reset_settings_to_recent_saved": "Endurstilla í nÃŊlega vistaðar stillingar", + "scanning_library": "Skanna myndasafn", + "search_jobs": "Leitarferlarâ€Ļ", + "send_welcome_email": "Senda kveðju í tÃļlvupÃŗsti", + "server_external_domain_settings": "Utanaðkomandi lÊn", + "server_external_domain_settings_description": "LÊn fyrir deilda hlekki, með http(s)://", + "server_public_users": "Almennir notendur", + "server_public_users_description": "Allir notendur (nafn og netfang) eru listaðir upp Þegar notanda er bÃĻtt við deilt myndasafn. Listinn verður aðeins aðgengilegur stjÃŗrnendum sÊ slÃļkkt ÃĄ Þessu.", + "server_settings": "Stillingar vÊlÞjÃŗns", + "server_settings_description": "SÃŊsla með vÊlÞjÃŗn", + "server_stats_page_description": "StjÃŗrnunarsíða fyrir tÃļlfrÃĻði vÊlÞjÃŗns", + "server_welcome_message": "Kveðja", + "server_welcome_message_description": "Skilaboð sem eru birt ÃĄ innskrÃĄningarsíðunni.", + "settings_page_description": "StjÃŗrnstillingar", + "sidecar_job": "LÃŊsigÃļgn í fylgiskrÃĄm", + "sidecar_job_description": "UppgÃļtva eða samrÃĻma lÃŊsigÃļgn í fylgiskrÃĄm ÃĄ skrÃĄakerfi", + "slideshow_duration_description": "FjÃļldi sekÃēndna sem hver mynd er sÃŊnd", + "smart_search_job_description": "Keyra vÊlnÃĄm ÃĄ eignir til að styða snjalla leit", + "storage_template_date_time_description": "Tímistimpill uppruna eignarinnar er notaður í tímaupplÃŊsingar", + "storage_template_date_time_sample": "SÃŊnishorn tíma {date}", + "storage_template_enable_description": "Virkja sniðmÃĄt fyrir gagnageymslu", + "storage_template_hash_verification_enabled": "Hakkagildi sannreynd", + "storage_template_hash_verification_enabled_description": "Sannreynir hakkagildi, ekki slÃļkkva ÃĄ Þessu ÃĄn Þess að gera ÞÊr grein fyrir afleiðingunum", + "storage_template_migration": "YfirfÃĻrsla ÃĄ geymslusniðmÃĄti", + "storage_template_migration_description": "Beita nÃēverandi {template} ÃĄ eignir sem hafa nÃē Þegar verið fÃĻrðar inn", + "storage_template_migration_info": "GeymslusniðmÃĄtið mun breyta Ãļllum nafnaukum í lÃĄgstafi. Breytingar ÃĄ sniðmÃĄti eiga bara við nÃŊjar eignir. Til að beita breytingum ÃĄ fyrirliggjandi eignir mÃĄ keyra ferilinn {job}.", + "storage_template_migration_job": "Ferill yfirfÃĻrslu geymslusniðmÃĄts", + "storage_template_more_details": "Frekari upplÃŊsingar um Þennan eiginleika, sjÃĄ GeymslusniðmÃĄtið og afleiðingar Þess", + "storage_template_onboarding_description_v2": "Þetta virkjar sjÃĄlfvirkt skipulag ÃĄ skrÃĄm samkvÃĻmt fyrirfram skilgreindum sniðmÃĄtum. SjÃĄ leiðbeiningar fyrir frekari upplÃŊsingar.", + "storage_template_path_length": "GrÃŗft takmark ÃĄ lengd slÃŗÃ°ar: {length,number}/{limit,number}", + "storage_template_settings": "GeymslusniðmÃĄt", + "storage_template_settings_description": "SÃŊsla með uppbyggingu skrÃĄakerfis og heiti eigna sem fÃĻrðar eru inn", + "storage_template_user_label": "{label} er Geymslumerki notandans", + "system_settings": "Kerfisstillingar", + "tag_cleanup_job": "Hreinsun ÃĄ merkjum", + "template_email_available_tags": "ÞÃē getur notað eftirfarandi breytur í sniðmÃĄtinu: {tags}", + "template_email_if_empty": "Ef sniðmÃĄtið er tÃŗmt mun sjÃĄlfgefna netfangið vera notað.", + "template_email_invite_album": "SniðmÃĄt Boðs í Myndasafn", + "template_email_preview": "Forskoðun", + "template_email_settings": "SniðmÃĄt TÃļlvupÃŗsts", + "template_email_update_album": "UppfÃĻra SniðmÃĄt Myndasafna", + "template_email_welcome": "SniðmÃĄt kveðjupÃŗsts", + "template_settings": "SniðmÃĄt meldinga", + "template_settings_description": "SÃŊsla með sÊrsniðin sniðmÃĄt fyrir meldingar", + "theme_custom_css_settings": "SÊrsniðið CSS", + "theme_custom_css_settings_description": "StÃļlluð StílblÃļð leyfa ÞÊr að breyta hÃļnnun Immich.", + "theme_settings": "Þemastillingar", + "theme_settings_description": "SÃŊsla með sÊrstillingar vefviðmÃŗts Immich", + "thumbnail_generation_job": "Framleiða Gaummyndir", + "thumbnail_generation_job_description": "Framleiða stÃŗrar, smÃĄar og skÃŊjaðar gaummyndir fyrir sÊrhverja eign, sem og gaummynd fyrir hverja manneskju", + "transcoding_acceleration_api": "Forritaskil HrÃļðunar", + "transcoding_acceleration_api_description": "Forritaskilin sem tala við tÃĻkið Þitt til að hraða kÃŗÃ°un. Þessi stilling er eftir 'bestu getu: Það fellur til baka ÃĄ kÃŗÃ°un í hugbÃēnaði við villu. VP9 virkar kannski, fer eftir vÊlbÃēnaði.", + "transcoding_acceleration_nvenc": "NVENC (krefst NVIDIA GPU)", + "transcoding_acceleration_qsv": "Quick Sync (krefst Intel Ãļrgjafa af 7. kynslÃŗÃ° eða nÃŊrri)", + "transcoding_acceleration_rkmpp": "RKMPP (einungis ÃĄ Rockchip SOC)", + "transcoding_acceleration_vaapi": "VAAPI", + "transcoding_accepted_audio_codecs": "Leyfðir víxlbreytar hljÃŗÃ°s", + "transcoding_accepted_audio_codecs_description": "Velja hvaða víxlbreytar hljÃŗÃ°s Þarf ekki að umkÃŗÃ°a. Aðeins notað í sumum umkÃŗÃ°unarreglum.", + "transcoding_accepted_containers": "Leyfðir kassar", + "transcoding_accepted_containers_description": "Velja hvaða kassasnið Þarf ekki að endurblanda í MP4. Aðeins notað í sumum umkÃŗÃ°unarreglum.", + "transcoding_accepted_video_codecs": "Leyfðir víxlbreytar myndbands", + "transcoding_accepted_video_codecs_description": "Velja hvaða víxlbreytar myndbands Þarf ekki að umkÃŗÃ°a. Aðeins notað í sumum umkÃŗÃ°unarreglum.", + "transcoding_advanced_options_description": "ValmÃļguleikar sem flestir notendur ÃĻttu ekki að Þurfa að breyta", + "transcoding_audio_codec": "Víxlbreytir hljÃŗÃ°s", + "transcoding_audio_codec_description": "Opus gefur mestu gÃĻðin, en hefur verra samhÃĻfi með eldri vÊl- og hugbÃēnaði.", + "transcoding_bitrate_description": "MyndbÃļnd með hÃĻrri en hÃĄmarks bitahraða eru ekki í leyfðu sniði", + "transcoding_codecs_learn_more": "SjÃĄ leiðbeiningar fyrir H.264 víxlbreyti, HEVC víxlbreyti og VP9 víxlbreyti til að lÃĻra meira um íðorðastaðalinn í notkun hÊr.", + "transcoding_constant_quality_mode": "Hamur stÃļðugra gÃĻða", + "transcoding_constant_quality_mode_description": "ICQ er betra en CQP, en vÊlbÃēnaðarhrÃļðun sumra tÃĻkja styður Það ekki. Þessi valmÃļguleiki mun kjÃŗsa tilgreinda haminn Þegar gÃĻða-byggð kÃŗÃ°un er notuð. Hundsað af NVENC Þar sem Það styður ekki ICQ.", + "transcoding_constant_rate_factor": "Stuðull stÃļðugs hraða (-crf)", + "transcoding_constant_rate_factor_description": "GÃĻðastig myndbanda. Algeng gildi eru 23 fyrir H.264, 28 fyrir HEVC, 31 fyrir VP9 og 35 fyrir AV1. LÃĻgra er betra, en bÃŊr til stÃĻrri skrÃĄr.", + "transcoding_disabled_description": "Ekki umkÃŗÃ°a nein myndbÃļnd, gÃĻti brotið afspilun hjÃĄ sumum", + "transcoding_encoding_options": "ValmÃļguleikar kÃŗÃ°unar", + "transcoding_encoding_options_description": "Stilla víxlbreyta, upplausn, gÃĻði og fleira fyrir kÃŗÃ°un myndbanda", + "transcoding_hardware_acceleration": "VÊlhrÃļðun", + "transcoding_hardware_acceleration_description": "Á tilraunastigi: hraðari kÃŗÃ°abreyting ÃĄ kostnað gÃĻða ÃĄ stÃļðugum bitahraða", + "transcoding_hardware_decoding": "AfkÃŗÃ°un með vÊlbÃēnaði", + "transcoding_hardware_decoding_setting_description": "Virkjar hrÃļðun milli enda í stað hrÃļðunar ÃĄ kÃŗÃ°un einni og sÊr. Virkar kannski ekki ÃĄ Ãļll myndbÃļnd.", + "transcoding_max_b_frames": "HÃĄmarks B-rammar", + "transcoding_max_b_frames_description": "HÃĻrri gildi bÃĻta afkÃļst í ÞjÃļppun ÃĄ kostnað kÃŗÃ°unarhraða. GÃĻti verið ÃŗsamhÃĻft vÊlhrÃļðun ÃĄ eldri tÃĻkjum. 0 slekkur ÃĄ B-rÃļmmum ÃĄ meðan -1 velur gildi sjÃĄlfkrafa.", + "transcoding_max_bitrate": "HÃĄmarks bitahraði", + "transcoding_max_bitrate_description": "HÃĄmarks bitahraði gefur fyrirsjÃĄanlegri skrÃĄastÃĻrðir ÃĄ lítinn kostnað gÃĻða. TÃŊpísk gildi fyrir 720p gÃĻða skrÃĄ eru 2600kbit/s fyrir VP9 eða HEVC, eða 4500kbit/s fyrir H.264. Óvirkt ef gildi er 0. Þegar eining er Ãŗskilgreind er gert rÃĄÃ° fyrir k fyrir kbit/s; 5000, 5000k og 5M (fyrir Mbit/s) eru Því jafngild.", + "transcoding_max_keyframe_interval": "HÃĄmarks millibil lyklaramma", + "transcoding_max_keyframe_interval_description": "Setur hÃĄmarksfjarlÃĻgð ramma ÃĄ milli lyklaramma. LÃĻgri gildi bÃĻta leitartíma og gÃĻði í senum með snÃļggum hreyfingum ÃĄ kostnað afkasta ÞjÃļppunar. 0 velur gildið sjÃĄlfkrafa.", + "transcoding_optimal_description": "MyndbÃļnd með hÃĻrri upplausn en miðað er ÃĄ eða ekki í leyfðu sniði", + "transcoding_policy": "Reglur umkÃŗÃ°unar", + "transcoding_policy_description": "Stillt Þegar myndband mun vera umkÃŗÃ°að", + "transcoding_preferred_hardware_device": "ÁkjÃŗsanlegur vÊlbÃēnaður", + "transcoding_preferred_hardware_device_description": "Á aðeins við um VAAPI og QSV. Stillir dri nÃŗÃ°una sem er notuð í vÊlhrÃļðun.", + "transcoding_preset_preset": "Forstilling (-preset)", + "transcoding_preset_preset_description": "Hraði ÞjÃļppunar. LÃĻgri forstillingar framleiða smÃĻrri skrÃĄr og bÃĻta gÃĻði Þegar ÃĄtt er við ÃĄkveðna bitahraða. VP9 hundsar hÃĻrri gildi en 'hraðara'.", + "transcoding_reference_frames": "Viðmiðunarrammar", + "transcoding_reference_frames_description": "FjÃļldi ramma til að miða við Þegar gefinn rammi er Þjappaður. HÃĻrri vildi bÃĻta afkÃļst ÞjÃļppunar ÃĄ kostnað hraða kÃŗÃ°unar. 0 stillir gildið sjÃĄlfkrafa.", + "transcoding_required_description": "Aðeins myndbÃļnd í Ãŗleyfðum sniðum", + "transcoding_settings": "Stillingar fyrir umkÃŗÃ°un myndbanda", + "transcoding_settings_description": "SÃŊsla með hvaða myndbÃļnd eru umkÃŗÃ°uð og hvernig", + "transcoding_target_resolution": "Markupplausn", + "transcoding_target_resolution_description": "HÃĻrri upplausn gÃĻti varðveitt smÃĄatriði ÃĄ kostnað hraða kÃŗÃ°unar, skrÃĄastÃĻrð og snerpu forritsins.", + "transcoding_temporal_aq": "Temporal AQ", + "transcoding_temporal_aq_description": "Á aðeins við um NVENC. Temporal Adaptive Quantization eykur gÃĻði í senum með miklum smÃĄatriðum og lítilli hreyfingu. MÃļgulega ÃŗsamhÃĻft eldri tÃĻkjum.", + "transcoding_threads": "ÞrÃĻðir", + "transcoding_threads_description": "HÃĻrri gildi samsvara hraðari kÃŗÃ°un, en heldur vÊlÞjÃŗni uppteknum ÃĄ meðan Það er í gangi. Þetta gildi ÃĻtti ekki að vera hÃĻrra en fjÃļldi kjarna í Ãļrgjafa. HÃĄmarkar afkÃļst ef stillt í 0.", + "transcoding_tone_mapping": "TÃŗnavÃļrpun", + "transcoding_tone_mapping_description": "Tilraunir til að varðveita Ãētlit HDR myndbanda Þegar Þeim er breytt í SDR. Hvert algrím fÃŗrnar ÃŊmist lit, smÃĄatriðum og birtu. Hable varðveitir smÃĄatriði, Mobius viðheldur lit og Reinhard viðheldur birtu.", + "transcoding_transcode_policy": "Reglur umkÃŗÃ°unar", + "transcoding_transcode_policy_description": "Reglur varðandi hvenÃĻr ÃĻtti að umkÃŗÃ°a myndbÃļnd. HRD myndbÃļnd verða alltaf umkÃŗÃ°uð (nema Þegar umkÃŗÃ°un er Ãŗvirk).", + "transcoding_two_pass_encoding": "TvítÃĻk kÃŗÃ°un", + "transcoding_two_pass_encoding_setting_description": "UmkÃŗÃ°a í tveimur atrennum til að skila betur kÃŗÃ°uðum myndbÃļndum. Þegar hÃĄmarks bitahraði er stilltur (skilyrði svo Það virki með H.264 og HEVC) notar Þessi hamur bitahraða ÃĄ bili sem er byggt ÃĄ hÃĄmarks bitahraðanum og hundsar CRF. CRF mÃĄ nota með VP9 ef hÃĄmarks bitahraði er Ãŗvirkur.", + "transcoding_video_codec": "Víxlbreytir myndbanda", + "transcoding_video_codec_description": "VP9 er afkastamikið og hentar vel ÃĄ vefnum en er lengri í umkÃŗÃ°un. HEVC er svipað en samhÃĻfist vef ekki jafn vel. H.264 er almennt samÃĻft flestu og er snÃļggt í umkÃŗÃ°un en Því fylgja stÃŗrar skrÃĄr. AV1 er afkastamesti víxlbreytirinn en er ÃŗsamhÃĻft eldri tÃĻkjum.", + "trash_enabled_description": "Virkja ruslatunnu", + "trash_number_of_days": "FjÃļldi daga", + "trash_number_of_days_description": "FjÃļldi daga sem eignum er haldið í rusli ÃĄÃ°ur en Þeim er eytt fyrir fullt og allt", + "trash_settings": "Stillingar ruslatunnu", + "trash_settings_description": "SÃŊsla með rusl", + "unlink_all_oauth_accounts": "Afhlekkja alla OAuth aðganga", + "unlink_all_oauth_accounts_description": "Munið að afhlekkja alla OAuth aðganga ÃĄÃ°ur en flutt er ÃĄ milli ÞjÃŗnustuaðila.", + "unlink_all_oauth_accounts_prompt": "Ertu viss um að ÞÃē viljir afhlekkja alla OAuth aðganga? Það endurstillir Ãļll OAuth auðkenni fyrir alla notendur og er ÃŗafturkrÃĻft.", + "user_cleanup_job": "Hreinsun notenda", + "user_delete_delay": "Aðgangurinn {user} og eignir hans verður eytt fyrir fullt og allt eftir {delay, plural, one {# dag} other {# daga}}.", + "user_delete_delay_settings": "Seinkun eyðingar", + "user_delete_delay_settings_description": "FjÃļldi daga eftir að aðgangur er fjarlÃĻgður sem eyða ÃĄ Ãļllum gÃļgnum tengdum honum. Ferill eyðingar notanda keyrir ÃĄ miðnÃĻtti og athuga hvara notendur eru tilbÃēnir fyrir eyðingu. Breytingar ÃĄ Þessum stillingum verka við nÃĻstu keyrslu ferilsins.", + "user_delete_immediately": "Aðganginum {user} og eignum hans verður eytt undir eins.", + "user_delete_immediately_checkbox": "Setja notanda og eignir í biðrÃļð fyrir eyðingu undir eins", + "user_details": "UpplÃŊsingar um notanda", + "user_management": "SÃŊsla með notanda", + "user_password_has_been_reset": "Lykilorð eftirfarandi notanda hefur verið endursett:", + "user_password_reset_description": "LÃĄtið notandann fÃĄ tímabundna lykilorðið og gerið honum grein fyrir Því að breyta Þurfi lykilorðinu við nÃĻstu innskrÃĄningu.", + "user_restore_description": "Aðgangurinn {user} verður endurheimtaður.", + "user_restore_scheduled_removal": "Endurheimta notanda - tímasett eyðing ÃĄ {date, date, long}", + "user_settings": "Stillingar notanda", + "user_settings_description": "SÃŊsla með stillingar notanda", + "user_successfully_removed": "Notandi {email} hefur verið fjarlÃĻgður.", + "users_page_description": "Síða stjÃŗrnunarnotanda", + "version_check_enabled_description": "Virkja athugun ÃĄ ÃētgÃĄfu", + "version_check_implications": "Þessi athugun hefur lotubundin samskipti við github.com", + "version_check_settings": "Athugun ÃētgÃĄfu", + "version_check_settings_description": "Af-/virkja meldingu um nÃŊja ÃētgÃĄfu", + "video_conversion_job": "UmkÃŗÃ°a myndbÃļnd", + "video_conversion_job_description": "UmkÃŗÃ°a myndbÃļnd fyrir betri samhÃĻfingu með vÃļfrum og tÃĻkjum" + }, + "admin_email": "Netfang stjÃŗrnanda", + "admin_password": "Lykilorð stjÃŗrnanda", + "administration": "StjÃŗrnun", + "advanced": "Fyrir lengra komna", + "advanced_settings_enable_alternate_media_filter_subtitle": "Notið Þessa stillingu til að sía efni Þegar Því er hlaðið inn byggt ÃĄ Ãļðrum eiginleikum. Reynið Þetta bara ef Immich ÃĄ í erfiðleikum með að greina Ãļll myndasÃļfn.", + "advanced_settings_enable_alternate_media_filter_title": "[Á TILRAUNASTIGI] Nota aðrar síur fyrir samstillingu myndasafna ÃĄ tÃĻki", + "advanced_settings_log_level_title": "Stig atburða: {level}", + "advanced_settings_prefer_remote_subtitle": "Sum tÃĻki eru agalega lengi að hlaða gaummyndum Ãēr staðvÃĻrum eignum. Virkið Þetta til að hlaða inn gaummyndum Ãēr fjarska í staðinn.", + "advanced_settings_prefer_remote_title": "KjÃŗsa myndir Ãēr fjarska", + "advanced_settings_proxy_headers_subtitle": "Skilgreinið vefselshausa sem Immich ÃĻtti að senda með hverri beiðni", + "advanced_settings_proxy_headers_title": "SÊrsniðnir vefselshausar [Á TILRAUNASTIGI]", + "advanced_settings_readonly_mode_subtitle": "Virkja skoðunarham Þar sem aðeins mÃĄ skoða myndir, aðgerðir ÃĄ borð við að velja margar myndir, deila, streyma og eyða eru allar bannaðar. Af-/virkið skoðunarham í gegnum notandateiknið ÃĄ aðalsíðunni", + "advanced_settings_readonly_mode_title": "Skoðunarhamur", + "advanced_settings_self_signed_ssl_subtitle": "Sleppir Því að sannreyna TLS skírteini frÃĄ vefÞjÃŗninum. Nauðsyn ef notast er við sjÃĄlfskrÃĄÃ° skírteini.", + "advanced_settings_self_signed_ssl_title": "Leyfa sjÃĄlfskrÃĄÃ° TLS skírteini [Á TILRAUNASTIGI]", + "advanced_settings_sync_remote_deletions_subtitle": "Eyða eða endurheimta eign sjÃĄlfkrafa ÃĄ Þessu tÃĻki Þegar Þetta er framkvÃĻmt ÃĄ vefnum", + "advanced_settings_sync_remote_deletions_title": "SamrÃĻma eyðingu Ãēr fjarska [Á TILRAUNASTIGI]", + "advanced_settings_tile_subtitle": "Notandastillingar fyrir lengra komna", + "advanced_settings_troubleshooting_subtitle": "Virkja frekari eiginleika fyrir bilanagreiningu", + "advanced_settings_troubleshooting_title": "Bilanagreining", + "age_months": "Aldur {months, plural, one {# mÃĄnuður} other {# mÃĄnuðir}}", + "age_year_months": "Aldur 1 ÃĄrs, {months, plural, one {# mÃĄnaða} other {# mÃĄnaða}}", + "age_years": "{years, plural, other {Aldur #}}", + "album": "Myndasafn", + "album_added": "Myndasafni bÃĻtt við", + "album_added_notification_setting_description": "FÃĄ meldingu í tÃļlvupÃŗsti Þegar mÊr er bÃĻtt við deilt myndasafn", + "album_cover_updated": "KÃĄpa myndasafns uppfÃĻrð", + "album_delete_confirmation": "Ertu viss um að ÞÃē viljir eyða myndasafni {album}?", + "album_delete_confirmation_description": "Ef Þessu myndasafni er deilt með Ãļðrum missa Þeir notendur aðgang að Því.", + "album_deleted": "Myndasafni eytt", + "album_info_card_backup_album_excluded": "SLEPPT", + "album_info_card_backup_album_included": "MEÐ TALIÐ", + "album_info_updated": "UpplÃŊsingar um myndasafn uppfÃĻrðar", + "album_leave": "Fara Ãēr myndasafni?", + "album_leave_confirmation": "Ertu viss um að ÞÃē viljir segja Þig Ãēr {album}?", + "album_name": "Nafn Myndasafns", + "album_options": "ValmÃļguleikar myndasafns", + "album_remove_user": "FjarlÃĻgja notanda?", + "album_remove_user_confirmation": "Ertu viss um að ÞÃē viljir fjarlÃĻgja {user}?", + "album_search_not_found": "Engin myndasÃļfn fundust sem uppfylla leitarskilyrðin", + "album_share_no_users": "Það lítur Ãēt fyrir að ÞÃē hafir deilt Þessu myndasafni með Ãļllum eða ÃžÃĄ að ÞÃē hafir enga til að deila Því með.", + "album_summary": "Samantekt myndasafns", + "album_updated": "Myndasafn uppfÃĻrt", + "album_updated_setting_description": "FÃĄ meldingu í tÃļlvupÃŗsti Þegar eignum er bÃĻtt í deilt myndasafn", + "album_user_left": "FÃŗr Ãēr {album}", + "album_user_removed": "FjarlÃĻgði {user}", + "album_viewer_appbar_delete_confirm": "Ertu viss um að ÞÃē viljir eyða Þessu myndasafni Ãēr aðgangnum Þínum?", + "album_viewer_appbar_share_err_delete": "Ekki gekk að eyða myndasafni", + "album_viewer_appbar_share_err_leave": "Ekki gekk að fara Ãēr myndasafni", + "album_viewer_appbar_share_err_remove": "Það eru vandamÃĄl við að fjarlÃĻgja eignir Ãēr Þessu myndasafni", + "album_viewer_appbar_share_err_title": "Ekki gekk að breyta titli ÃĄ myndasafni", + "album_viewer_appbar_share_leave": "Fara Ãēr myndasafni", + "album_viewer_appbar_share_to": "Deila til", + "album_viewer_page_share_add_users": "BÃĻta við notendum", + "album_with_link_access": "Leyfa hverjum sem hefur hlekkinn að sjÃĄ myndir og fÃŗlk í myndasafninu.", + "albums": "MyndasÃļfn", + "albums_count": "{count, plural, one {{count, number} Myndasafn} other {{count, number} MyndasÃļfn}}", + "albums_default_sort_order": "SjÃĄlfgefin rÃļðun myndasafna", + "albums_default_sort_order_description": "Upphafleg rÃļðun eigna Þegar nÃŊtt myndasafn er bÃēið til.", + "albums_feature_description": "Safn af eignum sem hÃĻgt er að deila með Ãļðrum notendum.", + "albums_on_device_count": "MyndasÃļfn ÃĄ tÃĻki ({count})", + "all": "Allt", + "all_albums": "Öll myndasÃļfn", + "all_people": "Allt fÃŗlk", + "all_videos": "Öll myndbÃļnd", + "allow_dark_mode": "Leyfa skuggaham", + "allow_edits": "Leyfa breytingar", + "allow_public_user_to_download": "Leyfa almennum notendum að hala niður", + "allow_public_user_to_upload": "Leyfa almennum notendum að hlaða upp", + "allowed": "Leyft", + "alt_text_qr_code": "Mynd af snarkÃŗÃ°a", + "anti_clockwise": "Öfugur sÃŗlarhringur", + "api_key": "API lykill", + "api_key_description": "Þetta gildi er aðeins sÃŊnt einu sinni. Afritaðu Það ÃĄÃ°ur en glugganum er lokað.", + "api_key_empty": "Heiti API lyklisins ÃĻtti ekki að vera tÃŗmt", + "api_keys": "API lyklar", + "app_architecture_variant": "Margbreytni (HÃļgun)", + "app_bar_signout_dialog_content": "Ertu viss um að ÞÃē viljir skrÃĄ Þig Ãēt?", + "app_bar_signout_dialog_ok": "JÃĄ", + "app_bar_signout_dialog_title": "SkrÃĄ Ãēt", + "app_download_links": "Hlekkir til að hala niður forriti", + "app_settings": "Stillingar forrits", + "app_stores": "ForritabÃēðir", + "app_update_available": "UppÃĻrsla er tiltÃĻkileg", + "appears_in": "Kemur fyrir í", + "apply_count": "Beita ({count, number})", + "archive": "Geymsla", + "archive_action_prompt": "{count} bÃĻtt í Geymslu", + "archive_or_unarchive_photo": "Setja í eða taka Ãēr geymslu", + "archive_page_no_archived_assets": "Engar eignir í geymslu fundust", + "archive_page_title": "Geymsla ({count})", + "archive_size": "StÃĻrð geymslu", + "archive_size_description": "Stillið stÃĻrð geymslu fyrir niðurhÃļl (í GiB)", + "archived": "Geymt", + "archived_count": "{count, plural, other {Geymt #}}", + "are_these_the_same_person": "Eru Þessi sama manneskjan?", + "are_you_sure_to_do_this": "Ertu viss um að ÞÃē viljir gera Þetta?", + "asset_action_delete_err_read_only": "Get ekki eytt eignum í skoðunarham, sleppi", + "asset_action_share_err_offline": "Get ekki sÃŗtt Ãŗtengdar eignir, sleppi", + "asset_added_to_album": "BÃĻtt í myndasafn", + "asset_adding_to_album": "BÃĻti í myndasafnâ€Ļ", + "asset_description_updated": "LÃŊsing eignarinnar hefur verið uppfÃĻrð", + "asset_filename_is_offline": "Eign {filename} er Ãŗtengd", + "asset_has_unassigned_faces": "Eign er með ÃŗskrÃĄÃ° andlit", + "asset_hashing": "Hakkaâ€Ļ", + "asset_list_group_by_sub_title": "HÃŗpa eftir", + "asset_list_layout_settings_dynamic_layout_title": "Kviklegt viðmÃŗt", + "asset_list_layout_settings_group_automatically": "SjÃĄlfvirkt", + "asset_list_layout_settings_group_by": "HÃŗpa eignir eftir", + "asset_list_layout_settings_group_by_month_day": "MÃĄnuður + dagur", + "asset_list_layout_sub_title": "ViðmÃŗt", + "asset_list_settings_subtitle": "Stillingar viðmÃŗts myndanets", + "asset_list_settings_title": "Myndanet", + "asset_offline": "Eign Ótengd", + "asset_offline_description": "Þessi utanaðkomandi eign finnst ekki lengur í skrÃĄakerfinu. Kallið ÃĄ hjÃĄlp frÃĄ ykkar Immich stjÃŗrnanda.", + "asset_restored_successfully": "Eign endurheimtuð", + "asset_skipped": "Sleppt", + "asset_skipped_in_trash": "Í rusli", + "asset_trashed": "Eign hent í ruslið", + "asset_troubleshoot": "Bilanagreina eign", + "asset_uploaded": "Hlaðið upp", + "asset_uploading": "Hleð uppâ€Ļ", + "asset_viewer_settings_subtitle": "SÃŊsla með skoðun myndasafns", + "asset_viewer_settings_title": "Skoðun Eigna", + "assets": "Eignir", + "assets_added_count": "BÃĻtti við {count, plural, one {# eign} other {# eignum}}", + "assets_added_to_album_count": "BÃĻtti við {count, plural, one {# eign} other {# eigum}} í myndasafnið", + "assets_added_to_albums_count": "BÃĻtti við {assetTotal, plural, one {# eign} other {# eignum}} í {albumTotal, plural, one {# myndasafn} other {# myndasÃļfn}}", + "assets_cannot_be_added_to_album_count": "Ekki hÃĻgt að bÃĻta {count, plural, one {eign} other {eignum}} í myndasafnið", + "assets_cannot_be_added_to_albums": "Ekki hÃĻgt að bÃĻta {count, plural, one {eign} other {eignum}} í neitt af Þessum myndasÃļfnum", + "assets_count": "{count, plural, one {# eign} other {# eignir}}", + "assets_deleted_permanently": "{count} eign/-um eytt fyrir fullt og allt", + "assets_deleted_permanently_from_server": "{count} eign/-um eytt fyrir fullt og allt af Immich ÞjÃŗninum", + "assets_downloaded_failed": "{count, plural, one {SÃŗtt # skrÃĄ - {error} skrÃĄ brast} other {SÃŗttar # skrÃĄr - {error} skrÃĄr brugðust}}", + "assets_downloaded_successfully": "{count, plural, one {SÃŗtti # skrÃĄ} other {SÃŗtti # skrÃĄr}}", + "assets_moved_to_trash_count": "FÃĻrði {count, plural, one {# eign} other {# eignir}} í ruslið", + "assets_permanently_deleted_count": "Eyddi {count, plural, one {# eign} other {# eignum}} fyrir fullt og allt", + "assets_removed_count": "FjarlÃĻgði {count, plural, one {# eign} other {# eignir}}", + "assets_removed_permanently_from_device": "{count} eign/-ir fjarlÃĻgðar af tÃĻkinu Þínu fyrir fullt og allt", + "assets_restore_confirmation": "Ertu viss um að ÞÃē viljir endurheimta allar eignir Ãēr ruslinu? ÞÃē getur ekki tekið Þetta til baka! Athugið að Ãŗtengdar eignir geta ekki verið endurheimtar ÃĄ Þennan hÃĄtt.", + "assets_restored_count": "Endurheimti {count, plural, one {# eign} other {# eignir}}", + "assets_restored_successfully": "{count} eign/-ir endurheimtar", + "assets_trashed": "{count} eign/-um hent í ruslið", + "assets_trashed_count": "Henti {count, plural, one {# eign} other {# eignum}} í ruslið", + "assets_trashed_from_server": "{count} eign/-um hent í ruslið ÃĄ Immich ÞjÃŗninum", + "assets_were_part_of_album_count": "{count, plural, one {Eign var} other {Eignir voru}} nÃē Þegar í myndasafninu", + "assets_were_part_of_albums_count": "{count, plural, one {Eign var} other {Eignir voru}} nÃē Þegar í myndasÃļfnunum", + "authorized_devices": "Leyfð TÃĻki", + "automatic_endpoint_switching_subtitle": "Tengjast staðvÃĻrt yfir tilgreint Wi-Fi Þegar Það er í boði og nota annarskonar tengingar annarsstaðar", + "automatic_endpoint_switching_title": "Skipta sjÃĄlfkrafa um vefslÃŗÃ°", + "autoplay_slideshow": "Spila glÃĻrusÃŊningu sjÃĄlfkrafa", + "back": "Til baka", + "back_close_deselect": "Til baka, loka eða hÃĻtta við val", + "background_backup_running_error": "Afritun er nÃē Þegar í gangi í bakgrunni, get ekki hafið handvirka afritun", + "background_location_permission": "Leyfi ÃĄ staðsetningu afritunar", + "background_location_permission_content": "Til að skipta um net í bakgrunni Þarf Immich *alltaf* að hafa nÃĄkvÃĻman aðgang að nÃĄkvÃĻmum staðsetningargÃļgnum svo að forritið geti lesið heitið ÃĄ Wi-Fi netinu", + "background_options": "BakgrunnsvalmÃļguleikar", + "backup": "Afrit", + "backup_album_selection_page_albums_device": "MyndasÃļfn ÃĄ tÃĻki ({count})", + "backup_album_selection_page_albums_tap": "Smelltu til að taka með, tvísmelltu til að sleppa", + "backup_album_selection_page_assets_scatter": "Eignum getur verið dreift ÃĄ milli margra myndasafna. Þannig er hÃĻgt að velja hvaða myndasÃļfn eru afrituð.", + "backup_album_selection_page_select_albums": "Velja myndasÃļfn", + "backup_album_selection_page_selection_info": "UpplÃŊsingar um val", + "backup_album_selection_page_total_assets": "HeildarfjÃļldi einkvÃĻmra eigna", + "backup_albums_sync": "Samstilling afritaðra myndasafna", + "backup_all": "Allt", + "backup_background_service_backup_failed_message": "Ekki gekk að afrita eignir. Reyni afturâ€Ļ", + "backup_background_service_complete_notification": "Afritun eigna lokið", + "backup_background_service_connection_failed_message": "Ekki gekk að tengjast ÞjÃŗni. Reyni afturâ€Ļ", + "backup_background_service_current_upload_notification": "Hleð upp {filename}", + "backup_background_service_default_notification": "Athuga með nÃŊjar eignirâ€Ļ", + "backup_background_service_error_title": "Afritunarvilla", + "backup_background_service_in_progress_notification": "Afrita eignirâ€Ļ", + "backup_background_service_upload_failure_notification": "Ekki gekk að hlaða upp {filename}", + "backup_controller_page_albums": "Afrituð MyndasÃļfn", + "backup_controller_page_background_app_refresh_disabled_content": "Virkið bakgrunnsvinnslu í Settings > General > Background App Refresh til að afrita gÃļgn í bakgrunni.", + "backup_controller_page_background_app_refresh_disabled_title": "Bakgrunnsvinnsla Ãŗvirk", + "backup_controller_page_background_app_refresh_enable_button_text": "Fara í stillingar", + "backup_controller_page_background_battery_info_link": "SÃŊndu mÊr hvernig", + "backup_controller_page_background_battery_info_message": "SlÃļkktu ÃĄ allri bestun ÃĄ rafhlÃļðunotkun fyrir Immich til að fÃĄ sem ÃĄreiðanlegasta bakgrunnsafritun.\n\nÞetta er mismunandi eftir framleiðanda, flettu upp leiðbeiningum frÃĄ Þínum framleiðanda.", + "backup_controller_page_background_battery_info_ok": "Í lagi", + "backup_controller_page_background_battery_info_title": "Bestun rafhlÃļðu", + "backup_controller_page_background_charging": "Aðeins Þegar í hleðslu", + "backup_controller_page_background_configure_error": "Ekki gekk að stilla bakgrunnsÞjÃŗnustuna", + "backup_controller_page_background_delay": "Seinka afritun nÃŊrrar eignar: {duration}", + "backup_controller_page_background_description": "Kveiktu ÃĄ bakgrunnsÞjÃŗnustum til að afrita nÃŊjar eignir sjÃĄlfkrafa ÃĄn Þess að Þurfa að opna forritið", + "backup_controller_page_background_is_off": "SjÃĄlfvirk afritun í bakgrunni er Ãŗvirk", + "backup_controller_page_background_is_on": "SjÃĄlfvirk afritun í bakgrunni er virk", + "backup_controller_page_background_turn_off": "SlÃļkkva ÃĄ bakgrunnsÞjÃŗnustu", + "backup_controller_page_background_turn_on": "Kveikja ÃĄ bakgrunnsÞjÃŗnustu", + "backup_controller_page_background_wifi": "Aðeins ÃĄ Wi-Fi", + "backup_controller_page_backup": "Afrit", + "backup_controller_page_backup_selected": "Valið: ", + "backup_controller_page_backup_sub": "Afritaðar myndir og myndbÃļnd", + "backup_controller_page_created": "BÃēið til ÃĄ: {date}", + "backup_controller_page_desc_backup": "Kveikið ÃĄ afritun í forgrunni til að afrita nÃŊjar eignir sjÃĄlfkrafa Þegar forritið er opnað.", + "backup_controller_page_excluded": "Sleppt: ", + "backup_controller_page_failed": "Brostið ({count})", + "backup_controller_page_filename": "SkrÃĄarheiti: {filename} [{size}]", + "backup_controller_page_id": "Auðkenni: {id}", + "backup_controller_page_info": "UpplÃŊsingar um Afrit", + "backup_controller_page_none_selected": "Ekkert valið", + "backup_controller_page_remainder": "Afgangur", + "backup_controller_page_remainder_sub": "Myndir og myndbÃļnd Ãēr vali sem ÃĄ eftir að afrita", + "backup_controller_page_server_storage": "PlÃĄss ÃĄ ÞjÃŗni", + "backup_controller_page_start_backup": "Hefja Afritun", + "backup_controller_page_status_off": "SjÃĄlfvirk afritun í forgrunni er Ãŗvirk", + "backup_controller_page_status_on": "SjÃĄlfvirk afritun í forgrunni er virk", + "backup_controller_page_storage_format": "{used} af {total} notað", + "backup_controller_page_to_backup": "MyndasÃļfn sem ÃĄ að afrita", + "backup_controller_page_total_sub": "Allar einkvÃĻmar myndir og myndbÃļnd Ãēr vÃļldum myndasÃļfnum", + "backup_controller_page_turn_off": "SlÃļkkva ÃĄ afritun í forgrunni", + "backup_controller_page_turn_on": "Kveikja ÃĄ afritun í forgrunni", + "backup_controller_page_uploading_file_info": "Hleð upp skrÃĄaupplÃŊsingum", + "backup_err_only_album": "Get ekki fjarlÃĻgt eina myndasafnið", + "backup_error_sync_failed": "SamrÃĻming gekk ekki. Get ekki unnið afrit.", + "backup_info_card_assets": "eignir", + "backup_manual_cancelled": "HÃĻtt við", + "backup_manual_in_progress": "Upphleðsla nÃē Þegar í gangi. Reyndu aftur seinna", + "backup_manual_success": "GlÃĻstur ÃĄrangur", + "backup_manual_title": "Staða upphleðslu", + "backup_options": "ValmÃļguleikar Afritunar", + "backup_options_page_title": "ValmÃļguleikar afritunar", + "backup_setting_subtitle": "SÃŊsla með upphleðslu í for- og bakgrunni", + "backup_settings_subtitle": "SÃŊsla með upphleðslu", + "backup_upload_details_page_more_details": "Smelltu fyrir frekari upplÃŊsingar", + "backward": "AfturÃĄbak", + "biometric_auth_enabled": "Auðkenning með lífkennum virk", + "biometric_locked_out": "ÞÃē ert lÃĻst Ãēt Ãēr auðkenningu með lífkennum", + "biometric_no_options": "Ekkert val ÃĄ lífkennum í boði", + "biometric_not_available": "Auðkenning með lífkennum er ekki í boði ÃĄ Þessu tÃĻki", + "birthdate_saved": "FÃĻðingardagur vistaður", + "birthdate_set_description": "FÃĻðingardagur er notaður til að reikna Ãēt aldur manneskju ÃĄ myndinni.", + "blurred_background": "SkÃŊjaður bakgrunnur", + "bugs_and_feature_requests": "PÃļddur og Beiðnir um NÃŊja Eiginleika", + "build": "Smíð", + "build_image": "Byggja Mynd", + "bulk_delete_duplicates_confirmation": "Ertu viss um að ÞÃē viljir eyða í magni {count, plural, one {# margfaldri eign} other {# margfÃļlduðum eignum}}? Það mun halda stÃĻrstu eigninni í hverjum hÃŗp og eyða Ãļllu Ãļðru fyrir fullt og allt. Þetta er ekki hÃĻgt að taka til baka!", + "bulk_keep_duplicates_confirmation": "Ertu viss um að ÞÃē viljir halda {count, plural, one {# margfaldri eign} other {# margfÃļldum eignum}}? Þetta leysir alla margfeldnihÃŗpa ÃĄn Þess að eyða neinu.", + "bulk_trash_duplicates_confirmation": "Ertu viss um að ÞÃē viljir eyða {count, plural, one {# margfaldri eign} other {# margfÃļldum eignum}}? StÃĻrsta skrÃĄin í hverjum hÃŗp verður geymd og Ãļðrum hent í ruslið.", + "buy": "Kaupa Immich", + "cache_settings_clear_cache_button": "Hreinsa skyndiminni", + "cache_settings_duplicated_assets_clear_button": "HREINSA", + "cache_settings_duplicated_assets_title": "Margfaldar Eignir ({count})", + "cache_settings_statistics_album": "Gaummyndir fyrir myndasÃļfn", + "cache_settings_statistics_full": "Myndir í fullum gÃĻðum", + "cache_settings_statistics_shared": "Gaummyndir fyrir sameiginleg myndasÃļfn", + "cache_settings_statistics_thumbnail": "Gaummynd", + "cache_settings_statistics_title": "Skyndiminni í notkun", + "cache_settings_subtitle": "SÃŊsla með hÃļgun skyndiminnis í smÃĄforriti Immich", + "cache_settings_tile_subtitle": "SÃŊsla með hÃļgun staðbundinnar geymslu", + "cache_settings_tile_title": "Staðbundin geymsla", + "cache_settings_title": "Stillingar Skyndiminnis", + "camera": "MyndavÊl", + "camera_brand": "Framleiðandi myndvÊlar", + "camera_model": "Gerð myndavÊlar", + "cancel": "HÃĻtta við", + "cancel_search": "HÃĻtta við leit", + "canceled": "HÃĻtt við", + "canceling": "HÃĻtti við", + "cannot_merge_people": "Get ekki sameinað fÃŗlk", + "cannot_undo_this_action": "ÞÃē getur ekki tekið Þetta til baka!", + "cannot_update_the_description": "Get ekki uppfÃĻrt lÃŊsingu", + "cast": "Kasta", + "cast_description": "Stilla tiltÃĻkilega staði kÃļstunar", + "change_date": "Breyta dagsetningu", + "change_description": "Breyta lÃŊsingu", + "change_display_order": "Breyta rÃļðun", + "change_expiration_time": "Breyta fyrningardagsetningu", + "change_location": "Breyta staðsetningu", + "change_name": "Breyta nafni", + "change_name_successfully": "Breytti heiti", + "change_password": "Breyta Lykilorði", + "change_password_description": "Þetta er annað hvort fyrsta innskrÃĄningin Þín, eða ÃžÃĄ að beiðni hefur verið gerð til að breyta lykilorðinu Þínu. Vinsamlega slÃĄÃ°u inn nÃŊtt lykilorð hÊr að neðan.", + "change_password_form_confirm_password": "Staðfestu Lykilorð", + "change_password_form_description": "HÃĻ {name}\n\nÞetta er annað hvort fyrsta innskrÃĄningin Þín, eða ÃžÃĄ að beiðni hefur verið gerð til að breyta lykilorðinu Þínu. Vinsamlega slÃĄÃ°u inn nÃŊtt lykilorð hÊr að neðan.", + "change_password_form_log_out": "SkrÃĄ Ãēt ÃĄ Ãļllum Ãļðrum tÃĻkjum", + "change_password_form_log_out_description": "MÃĻlt er með Því að skrÃĄ sig Ãēt af Ãļllum Ãļðrum tÃĻkjum", + "change_password_form_new_password": "NÃŊtt lykilorð", + "change_password_form_password_mismatch": "Lykilorð stemma ekki", + "change_password_form_reenter_new_password": "SlÃĄÃ°u lykilorðið inn aftur", + "change_pin_code": "Breyta PIN kÃŗÃ°a", + "change_your_password": "Breyta lykilorði", + "changed_visibility_successfully": "Breytti sÃŊn", + "charging": "Hleður", + "charging_requirement_mobile_backup": "Aftirun í bakgrunni krefst Þess að tÃĻkið sÊ í hleðslu", + "check_corrupt_asset_backup": "Athuga með spillt afritunargÃļgn", + "check_corrupt_asset_backup_button": "FramkvÃĻma athugun", + "check_corrupt_asset_backup_description": "Vertu ÃĄ Wi-Fi tengingu og með Ãļll afrit klÃĄr Þegar Þetta er keyrt. Þetta gÃĻti tekið nokkrar mínÃētur.", + "check_logs": "Athuga AtburðaskrÃĄ", + "checksum": "PrÃŗfsumma", + "choose_matching_people_to_merge": "Veldur samskonar fÃŗlk til að sameina", + "city": "Borg", + "clear": "Hreinsa", + "clear_all": "Hreinsa allt", + "clear_all_recent_searches": "Hreinsa allar nÃŊlegar leitir", + "clear_file_cache": "Hreinsa FlÃŊtiminni SkrÃĄa", + "clear_message": "Hreinsa skilboð", + "clear_value": "Hreinsa gildi", + "client_cert_dialog_msg_confirm": "Í lagi", + "client_cert_enter_password": "SlÃĄÃ°u inn lykilorð", + "client_cert_import": "Flytja inn", + "client_cert_import_success_msg": "Skírteini biðlara flutt inn", + "client_cert_invalid_msg": "Ógilt skírteini eða rangt lykilorð", + "client_cert_remove_msg": "Skírteini biðlara fjarlÃĻgt", + "client_cert_subtitle": "Styður einungis PKC12 (.p12, .ptx) snið. Einungis hÃĻgt að flytja inn/fjarlÃĻgja skírteini fyrir innskrÃĄningu", + "client_cert_title": "TLS skírteini biðlara [Á TILRAUNASTIGI]", + "clockwise": "SÃŗlarhringur", + "close": "Loka", + "collapse": "Fella upp", + "collapse_all": "Fella allt upp", + "color": "Litur", + "color_theme": "LitaÞema", + "command": "Skipun", + "comment_deleted": "Athugasemd eytt", + "comment_options": "ValmÃļguleikar athugasemda", + "comments_and_likes": "Athugasemdir og viðbrÃļgð", + "comments_are_disabled": "SlÃļkkt er ÃĄ athugasemdum", + "common_create_new_album": "BÃēa til nÃŊtt myndasafn", + "completed": "Lokið", + "confirm": "Staðfesta", + "confirm_admin_password": "Staðfesta Lykilorð StjÃŗra", + "confirm_delete_face": "Ertu viss um að ÞÃē viljir eyða andliti {name} Ãēr eigninni?", + "confirm_delete_shared_link": "Ertu viss um að ÞÃē viljir eyða deildum hlekki?", + "confirm_keep_this_delete_others": "Öllum Ãļðrum eignum í staflanum verður eytt nema Þessari. Ertu viss um að ÞÃē viljir halda ÃĄfram?", + "confirm_new_pin_code": "Staðfestu nÃŊja PIN kÃŗÃ°ann", + "confirm_password": "Staðfestu lykilorð", + "confirm_tag_face": "Viltu merkja Þetta andlit sem {name}?", + "confirm_tag_face_unnamed": "Viltu merkja Þetta andlit?", + "connected_device": "Tengt tÃĻki", + "connected_to": "Tengt við", + "contain": "Inniheldur", + "context": "Samhengi", + "continue": "Halda ÃĄfram", + "control_bottom_app_bar_create_new_album": "BÃēa til nÃŊtt myndasafn", + "control_bottom_app_bar_delete_from_immich": "Eyða Ãēr Immich", + "control_bottom_app_bar_delete_from_local": "Eyða Ãēr tÃĻki", + "control_bottom_app_bar_edit_location": "Breyta Staðsetningu", + "control_bottom_app_bar_edit_time": "Breyta Tíma og Dagsetningu", + "control_bottom_app_bar_share_link": "Deila Hlekk", + "control_bottom_app_bar_share_to": "Deila Til", + "control_bottom_app_bar_trash_from_immich": "FÃĻra í Ruslið", + "copied_image_to_clipboard": "Afritaði mynd ÃĄ klemmuspjald.", + "copied_to_clipboard": "Afritað ÃĄ klemmuspjald!", + "copy_error": "Villa við að afrita", + "copy_file_path": "Afrita slÃŗÃ°", + "copy_image": "Afrita Mynd", + "copy_link": "Afrita hlekk", + "copy_link_to_clipboard": "Afrita hlekk ÃĄ klemmuspjald", + "copy_password": "Afrita lykilorð", + "copy_to_clipboard": "Afrita ÃĄ Klemmuspjald", + "country": "Land", + "cover": "KÃĄpumynd", + "covers": "KÃĄpumyndir", + "create": "BÃēa til", + "create_album": "BÃēa til myndasafn", + "create_album_page_untitled": "Ótitlað", + "create_api_key": "BÃēa til API lykil", + "create_library": "BÃēa til Myndasafn", + "create_link": "BÃēa til hlekk", + "create_link_to_share": "BÃēa til hlekk til að deila", + "create_link_to_share_description": "Leyfðu hverjum sem bÃŊr yfir hlekknum að sjÃĄ valdar myndir", + "create_new": "BÚA TIL NÝTT", + "create_new_person": "Stofna nÃŊja manneskju", + "created_at": "BÃēið til", + "download_finished": "Niðurhali lokið", + "download_include_embedded_motion_videos": "Innfelld myndbÃļnd", + "download_include_embedded_motion_videos_description": "Haga innfelldum myndbÃļndum í ljÃŗsmyndum sem sjÃĄlfstÃĻðum skrÃĄm", + "download_notfound": "Niðurhal finnst ekki", + "download_paused": "Niðurhal í pÃĄsu", + "download_settings": "Niðurhal", + "download_settings_description": "SÃŊsla með stillingar er varða niðurhal ÃĄ eignum", + "download_started": "Niðurhal byrjað", + "download_sucess": "Niðurhal tÃŗkst", + "download_sucess_android": "Efninu hefur verið halað niður í DCIM/Immich", + "download_waiting_to_retry": "Bíð eftir annarri tilraun", + "downloading": "Hleð niður", + "downloading_asset_filename": "Hleð niður {filename}", + "downloading_media": "Hleð niður efni", + "drop_files_to_upload": "Slepptu skrÃĄ hvar sem er til að hlaða upp", + "duplicates": "Margfeldi", + "duplicates_description": "Leystu hvern hÃŗp með Því að tilgreina hvað er aukatekning, ef eitthvað", + "duration": "Tími", + "edit": "Breyta", + "edit_album": "Breyta myndasafni", + "edit_avatar": "Breyta teikn", + "edit_birthday": "Breyta afmÃĻli", + "edit_date": "Breyta dagsetningu", + "edit_date_and_time": "Breyta tíma og dagsetningu", + "edit_date_and_time_action_prompt": "{count} tímasetningum breytt", + "edit_date_and_time_by_offset": "Breyta dagsetningu með hliðrun", + "edit_date_and_time_by_offset_interval": "NÃŊtt tímabil: {from} - {to}", + "edit_description": "Breyta lÃŊsingu", + "edit_description_prompt": "Vinsamlega veldu nÃŊja lÃŊsingu:", + "edit_exclusion_pattern": "Breyta Ãētilokunarmynstri", + "edit_faces": "Haga andlitum", + "edit_key": "Breyta lykli", + "edit_link": "Breyta hlekk", + "edit_location": "Breyta staðsetningu", + "edit_location_action_prompt": "{count} staðsetningum breytt", + "edit_location_dialog_title": "Staðsetning", + "edit_name": "Breyta nafni", + "edit_people": "Haga manneskjum", + "edit_tag": "Breyta merki", + "edit_title": "Breyta Titli", + "edit_user": "Breyta notanda", + "editor": "Myndvinnsla", + "editor_close_without_save_prompt": "Breytingarnar verða ekki vistaðar", + "editor_close_without_save_title": "Loka myndvinnslu?", + "editor_crop_tool_h2_aspect_ratios": "HlutfÃļll", + "editor_crop_tool_h2_rotation": "SnÃēningur", + "email": "Netfang", + "email_notifications": "Meldingar í tÃļlvupÃŗsti", + "empty_folder": "Þessi mappa er tÃŗm", + "empty_trash": "TÃĻma rusl", + "empty_trash_confirmation": "Ertu viss um að ÞÃē viljir tÃĻma ruslið? Öllum eignum í ruslinu verður eytt Ãēr Immich fyrir fullt og allt.\nÞetta er ekki afturkrÃĻft!", + "enable": "Virkja", + "enable_backup": "Virkja Afritun", + "enable_biometric_auth_description": "SlÃĄÃ°u inn PIN kÃŗÃ°ann Þinn til að virkja auðkenningu með lífkennum", + "enabled": "Virkt", + "end_date": "Lokadagsetning", + "enqueued": "Sett í biðrÃļð", + "enter_wifi_name": "SlÃĄÃ°u inn Wi-Fi heitið", + "enter_your_pin_code": "SlÃĄÃ°u inn PIN nÃēmerið Þitt", + "enter_your_pin_code_subtitle": "SlÃĄÃ°u inn PIN nÃēmer til að fÃĄ aðgang að lÃĻstu mÃļppunni", + "error": "Villa", + "error_change_sort_album": "Ekki gekk að breyta flokkunarrÃļð myndasafna", + "error_delete_face": "Villa við að eyða andliti Ãēr eign", + "error_getting_places": "Villa við að sÃĻkja staði", + "error_loading_image": "Villa við að hlaða mynd", + "error_loading_partners": "Villa við að hlaða fÊlÃļgum: {error}", + "error_saving_image": "Villa: {error}", + "error_tag_face_bounding_box": "Villa við að merkja andlit - get ekki sÃŗt hnit hneppiramma", + "error_title": "Villa - Eitthvað fÃŗr Ãērskeiðis", + "errors": { + "cannot_navigate_next_asset": "Get ekki stiklað ÃĄ nÃĻstu eign", + "cannot_navigate_previous_asset": "Get ekki stiklað ÃĄ fyrri eign", + "cant_apply_changes": "Get ekki beitt breytingum", + "cant_change_activity": "Get ekki {enabled, select, true {afvirkjað} other {virkjað}} virkni", + "cant_change_asset_favorite": "Get ekki breytt uppÃĄhalds fyrir eign", + "cant_change_metadata_assets_count": "Get ekki breytt lÃŊsigÃļgnum {count, plural, one {# eignar} other {# eigna}}", + "cant_get_faces": "Get ekki sÃŗtt andlit", + "cant_get_number_of_comments": "Get ekki sÃŗtt fjÃļlda athugasemda", + "cant_search_people": "Get ekki leitað að fÃŗlki", + "cant_search_places": "Get ekki leitað að stÃļðum", + "error_adding_assets_to_album": "Villa við að bÃĻta eignum í safn", + "error_adding_users_to_album": "Villa við að bÃĻta notendum í safn", + "error_deleting_shared_user": "Villa við að eyða deildum notanda", + "error_downloading": "Villa við að hlaða niður {filename}", + "error_hiding_buy_button": "Villa við að fela kauptakkann", + "error_removing_assets_from_album": "Villa við að fjarlÃĻgja eignir Ãēr safni, athugið stjÃŗrnborð fyrir frekari upplÃŊsingar", + "error_selecting_all_assets": "Villa við að velja allar eignir", + "exclusion_pattern_already_exists": "Útilokunarmynstur er nÃē Þegar til.", + "failed_to_create_album": "Ekki gekk að bÃēa til myndasafn", + "failed_to_create_shared_link": "Ekki gekk að bÃēa til deilihlekk", + "failed_to_edit_shared_link": "Ekki gekk að breyta deilihlekk", + "failed_to_get_people": "Gat ekki sÃŗtt fÃŗlk", + "failed_to_keep_this_delete_others": "Ekki gekk að halda Þessari eign og eyða Ãļðrum", + "failed_to_load_asset": "Ekki gekk að hlaða eign", + "failed_to_load_assets": "Ekki gekk að hlaða eignum", + "failed_to_load_notifications": "Ekki gekk að hlaða meldingum", + "failed_to_load_people": "Ekki gekk að hlaða fÃŗlki", + "failed_to_remove_product_key": "Ekki gekk að fjarlÃĻgja vÃļrulykil", + "failed_to_reset_pin_code": "Ekki gekk að endursetja PIN nÃēmer", + "failed_to_stack_assets": "Ekki gekk að stafla eignum", + "failed_to_unstack_assets": "Ekki gekk að af-stafla eignum", + "failed_to_update_notification_status": "Ekki gekk að uppfÃĻra stÃļðu meldingar", + "incorrect_email_or_password": "Rangt netfang eða lykilorð", + "library_folder_already_exists": "SlÃŗÃ° innflutnings er nÃē Þegar til.", + "paths_validation_failed": "Ekki gekk að sannreyna {paths, plural, one {# slÃŗÃ°} other {# slÃŗÃ°ir}}", + "profile_picture_transparent_pixels": "PrÃŗfílmynd mÃĄ ekki vera með gagnsÃĻja pixla. Vinsamlega Þysjaðu inn og/eða fÃĻrðu myndina.", + "quota_higher_than_disk_size": "ÞÃē stilltir stÃĻrð sem er stÃĻrri en stÃĻrð disksins", + "something_went_wrong": "Eitthvað fÃŗr Ãērskeiðis", + "unable_to_add_album_users": "Get ekki bÃĻtt notendum við safn", + "unable_to_add_assets_to_shared_link": "Get ekki bÃĻtt eignum við deilihlekk", + "unable_to_add_comment": "Get ekki bÃĻtt við athugasemd", + "unable_to_add_exclusion_pattern": "Get ekki bÃĻtt við Ãētilokunarmynstri", + "unable_to_add_partners": "Get ekki bÃĻtt við fÊlÃļgum", + "unable_to_add_remove_archive": "Get ekki {archived, select, true {fjarlÃĻgt eignir Ãēr} other {bÃĻtt eignum í}} geymslu", + "unable_to_add_remove_favorites": "Get ekki {favorite, select, true {bÃĻtt eignum í} other {fjarlÃĻgt eignir Ãēr}} uppÃĄhalds", + "unable_to_archive_unarchive": "Get ekki {archived, select, true {sett í geymslu} other {tekið Ãēr geymslu}}", + "unable_to_change_album_user_role": "Get ekki breytt hlutverki notanda í safni", + "unable_to_change_date": "Get ekki breytt dagsetningu", + "unable_to_change_description": "Get ekki breytt lÃŊsingu", + "unable_to_change_favorite": "Get ekki breytt hvort mynd sÊ uppÃĄhalds", + "unable_to_change_location": "Get ekki breytt staðsetningu", + "unable_to_change_password": "Get ekki breytt lykilorði", + "unable_to_change_visibility": "Get ekki breytt sÃŊn fyrir {count, plural, one {# fÃŗlk} other {# fÃŗlk}}", + "unable_to_complete_oauth_login": "Get ekki lokið OAuth innskrÃĄningu", + "unable_to_connect": "Get ekki tengst", + "unable_to_copy_to_clipboard": "Get ekki afritað ÃĄ klemmuspjald, gakktu Ãēr skugga um að ÞÃē tengist Þessari síðu með TLS", + "unable_to_create_admin_account": "Get ekki bÃēð til stjÃŗrnunaraðgang", + "unable_to_create_api_key": "Get ekki bÃēð til nÃŊjan API lykil", + "unable_to_create_library": "Get ekki bÃēið til myndasafn", + "unable_to_create_user": "Get ekki bÃēið til notanda", + "unable_to_delete_album": "Get ekki eytt myndasafni", + "unable_to_delete_asset": "Get ekki eytt eign", + "unable_to_delete_assets": "Villa við að eyða eignum", + "unable_to_delete_exclusion_pattern": "Get ekki eytt Ãētilokunarmynstri", + "unable_to_delete_shared_link": "Get ekki eytt deilihlekk", + "unable_to_delete_user": "Get ekki eytt notanda", + "unable_to_download_files": "Get ekki hlaðið niður skrÃĄm", + "unable_to_edit_exclusion_pattern": "Get ekki breytt Ãētilokunarmynstri", + "unable_to_empty_trash": "Get ekki tÃĻmt rusl", + "unable_to_enter_fullscreen": "Get ekki fyllt skjÃĄinn", + "unable_to_exit_fullscreen": "Get ekki minnkað skjÃĄinn", + "unable_to_get_comments_number": "Get ekki sÃŗtt fjÃļlda athugasemda", + "unable_to_get_shared_link": "Get ekki sÃŗtt deilihlekk", + "unable_to_hide_person": "Get ekki falið manneskju", + "unable_to_link_motion_video": "Get ekki hlekkjað myndband", + "unable_to_link_oauth_account": "Get ekki hlekkjað OAuth aðgang", + "unable_to_log_out_all_devices": "Get ekki skrÃĄÃ° Ãēt af Ãļllum tÃĻkjum", + "unable_to_log_out_device": "Get ekki skrÃĄÃ° Ãēt af tÃĻki", + "unable_to_login_with_oauth": "Get ekki skrÃĄÃ° inn með OAuth", + "unable_to_play_video": "Get ekki spilað myndband", + "unable_to_reassign_assets_existing_person": "Get ekki endurÃēthlutað eign ÃĄ {name, select, null {fyrirliggjandi manneskju} other {{name}}}", + "unable_to_reassign_assets_new_person": "Get ekki endurÃēthlutað eign ÃĄ nÃŊja manneskju", + "unable_to_refresh_user": "Get ekki frískað upp ÃĄ notanda", + "unable_to_remove_album_users": "Get ekki fjarlÃĻgt notendur Ãēr myndasafni", + "unable_to_remove_api_key": "Get ekki fjarlÃĻgt API lykil", + "unable_to_remove_assets_from_shared_link": "Get ekki fjarlÃĻgt eignir Ãēr deilihlekk", + "unable_to_remove_library": "Get ekki fjarlÃĻgt myndasafn", + "unable_to_remove_partner": "Get ekki fjarlÃĻgt fÊlaga", + "unable_to_remove_reaction": "Get ekki fjarlÃĻgt viðbragð", + "unable_to_reset_password": "Get ekki endurstillt lykilorð", + "unable_to_reset_pin_code": "Get ekki endurstillt PIN nÃēmer", + "unable_to_resolve_duplicate": "Get ekki fundið Ãēt Ãēr margfeldi", + "unable_to_restore_assets": "Get ekki endurheimt eignir", + "unable_to_restore_trash": "Get ekki endurheimt rusl", + "unable_to_restore_user": "Get ekki endurheimt notanda", + "unable_to_save_album": "Get ekki vistað myndasafn", + "unable_to_save_api_key": "Get ekki vistað API lykil", + "unable_to_save_date_of_birth": "Get ekki vistað afmÃĻlisdag", + "unable_to_save_name": "Get ekki vistað nafn", + "unable_to_save_profile": "Get ekki vistað prÃŗfíl", + "unable_to_save_settings": "Get ekki vistað stillingar", + "unable_to_scan_libraries": "Get ekki skannað sÃļfn", + "unable_to_scan_library": "Get ekki skannað safn", + "unable_to_set_feature_photo": "Get ekki sett birtingarmynd", + "unable_to_set_profile_picture": "Get ekki stillt prÃŗfílmynd", + "unable_to_submit_job": "Get ekki sett inn beiðni", + "unable_to_trash_asset": "Get ekki hent eign í ruslið", + "unable_to_unlink_account": "Get ekki afhlekkjað aðgang", + "unable_to_unlink_motion_video": "Get ekki afhlekkjað myndband", + "unable_to_update_album_cover": "Get ekki uppfÃĻrt kÃĄpumynd safns", + "unable_to_update_album_info": "Get ekki uppfÃĻrt upplÃŊsingar um safn", + "unable_to_update_library": "Get ekki uppfÃĻrt safn", + "unable_to_update_location": "Get ekki uppfÃĻrt staðsetningu", + "unable_to_update_settings": "Get ekki uppfÃĻrt stillingar", + "unable_to_update_timeline_display_status": "Get ekki uppfÃĻrt skoðunarstillingar tímalínu", + "unable_to_update_user": "Get ekki uppfÃĻrt notanda", + "unable_to_upload_file": "Get ekki hlaðið upp skrÃĄ" + }, + "exclusion_pattern": "Útilokunarmynstur", + "exif": "Exif", + "exif_bottom_sheet_description": "BÃĻta við lÃŊsingu...", + "exif_bottom_sheet_description_error": "Villa við að uppfÃĻra lÃŊsingu", + "exif_bottom_sheet_details": "SMÁATRIÐI", + "exif_bottom_sheet_location": "STAÐSETNING", + "exif_bottom_sheet_no_description": "Engin lÃŊsing", + "exif_bottom_sheet_people": "FÓLK", + "exif_bottom_sheet_person_add_person": "BÃĻta við nafni", + "exit_slideshow": "HÃĻtta glÃĻrusÃŊningu", + "expand_all": "Fella allt niður", + "experimental_settings_new_asset_list_subtitle": "Í vinnslu", + "experimental_settings_new_asset_list_title": "Virkja myndanet ÃĄ tilraunastigi", + "experimental_settings_subtitle": "Notkun ÃĄ eigin ÃĄhÃĻttu!", + "experimental_settings_title": "Á tilraunastigi", + "expire_after": "Fyrnist eftir", + "expired": "Útrunnið", + "expires_date": "Fyrnist {date}", + "explore": "Skoða", + "explorer": "Vafri", + "export": "Flytja Ãēt", + "export_as_json": "Flytja Ãēt sem JSON", + "export_database": "Flytja gagnagrunn Ãēt", + "export_database_description": "Flytja Ãēt SQLite gagnagrunninn", + "extension": "Nafnauki", + "external": "UtanÃĄliggjandi", + "external_libraries": "UtanÃĄliggjandi SÃļfn", + "external_network": "Ytra net", + "external_network_sheet_info": "Þegar við erum ekki ÃĄ Wi-Fi netinu sem er í forgangi, ÃžÃĄ mun smÃĄforritið tengjast ÞjÃŗnunum í gegnum fyrstu vefslÃŗÃ°ina sem svarar í listanum hÊr að neðan", + "face_unassigned": "ÓÃēthlutað", + "failed": "MistÃŗkst", + "failed_count": "MistÃŗkst: {count}", + "failed_to_authenticate": "Auðkenning mistÃŗkst", + "failed_to_load_assets": "MistÃŗkst að hlaða eignum", + "failed_to_load_folder": "MistÃŗkst að hlaða mÃļppu", + "favorite": "UppÃĄhalds", + "favorite_action_prompt": "{count} bÃĻtt í UppÃĄhalds", + "favorite_or_unfavorite_photo": "Taka Ãēr eða setja í uppÃĄhalds", + "favorites": "UppÃĄhalds", + "favorites_page_no_favorites": "Engar uppÃĄhalds eignir fundust", + "feature_photo_updated": "Birtingarmynd uppfÃĻrð", + "features": "Eiginleikar", + "features_in_development": "Eiginleikar í ÞrÃŗun", + "features_setting_description": "SÃŊsla með eiginleika smÃĄforrits", + "file_name": "SkrÃĄarheiti", + "file_name_or_extension": "SkrÃĄarheiti eða nafnauki", + "file_size": "SkrÃĄarstÃĻrð", + "filename": "SkrÃĄarheiti", + "filetype": "SkrÃĄargerð", + "filter": "Sía", + "filter_people": "Sía fÃŗlk", + "filter_places": "Sía staði", + "find_them_fast": "Finndu Þau í snatri með leit að nafni", + "first": "Fyrst", + "fix_incorrect_match": "Laga ranga pÃļrun", + "folder": "Mappa", + "folder_not_found": "Mappa finnst ekki", + "folders": "MÃļppur", + "folders_feature_description": "Vafra í mÃļppum fyrir myndir og myndbÃļnd ÃĄ skrÃĄakerfinu", + "forgot_pin_code_question": "Gleymt PIN nÃēmer?", + "forward": "Áfram", + "full_path": "Full slÃŗÃ°: {path}", + "gcast_enabled": "Google Kast", + "gcast_enabled_description": "Þessi eiginleiki hleður inn efni frÃĄ Google til að virka.", + "general": "Almennt", + "geolocation_instruction_location": "Smelltu ÃĄ eign með GPS hnitum til að nota Þau, eða veldu staðsetningu ÃĄ korti", + "get_help": "FÃĄ HjÃĄlp", + "get_wifiname_error": "Gat ekki sÃŗtt Wi-Fi heiti. Gakktu Ãēr skugga um að rÊtt leyfi sÊu veitt og Wi-Fi tenging sÊ virk", + "getting_started": "Byrjunarskref", + "go_back": "Til baka", + "go_to_folder": "Fara í mÃļppu", + "go_to_search": "Fara í leit", + "gps": "GPS", + "gps_missing": "Ekkert GPS", + "grant_permission": "Veita leyfi", + "group_albums_by": "HÃŗpa sÃļfn eftir...", + "group_country": "HÃŗpa eftir lÃļndum", + "group_no": "Engin hÃŗpun", + "group_owner": "HÃŗpa eftir eigendum", + "group_places_by": "HÃŗpa staði eftir...", + "group_year": "HÃŗpa eftir ÃĄri", + "haptic_feedback_switch": "Virkja snertisvÃļrun", + "haptic_feedback_title": "SnertisvÃļrun", + "has_quota": "Er með Ãēthutaða notkun", + "hash_asset": "Hakka eign", + "hashed_assets": "Hakkaðar eignir", + "hashing": "HÃļkkun", + "header_settings_add_header_tip": "BÃĻta við haus", + "header_settings_field_validator_msg": "Gildi mÃĄ ekki vera tÃŗmt", + "header_settings_header_name_input": "Heiti hauss", + "header_settings_header_value_input": "Gildi hauss", + "headers_settings_tile_title": "SÊrsniðnir vefselshausar", + "height": "HÃĻð", + "hi_user": "HÃĻ {name} ({email})", + "hide_all_people": "Fela allt fÃŗlk", + "hide_gallery": "Fela safn", + "hide_named_person": "Fela {name}", + "hide_password": "Fela lykilorð", + "hide_person": "Fela manneskju", + "hide_text_recognition": "Fela textagreiningu", + "hide_unnamed_people": "Fela Ãŗnefnt fÃŗlk", + "home_page_add_to_album_conflicts": "BÃĻtti {added} eignum við safnið {album}. {failed} eignir eru nÃē Þegar í safninu.", + "home_page_add_to_album_err_local": "Get ekki bÃĻtt staðvÃĻrum eignum í safn, sleppi", + "home_page_add_to_album_success": "BÃĻtti {added} eignum í safnið {album}.", + "home_page_album_err_partner": "Get ekki bÃĻtt eignum fÊlaga í safn, sleppi", + "home_page_archive_err_local": "Get ekki sett staðvÃĻrar eignir í geymslu, sleppi", + "home_page_archive_err_partner": "Get ekki sett eignir fÊlaga í geymslu, sleppi", + "home_page_building_timeline": "Smíða tímalínu", + "home_page_delete_err_partner": "Get ekki eytt eignum fÊlaga, sleppi", + "home_page_delete_remote_err_local": "StaðvÃĻrar eignir í vali eigna í fjarska, sleppi", + "home_page_favorite_err_local": "Get ekki sett staðvÃĻrar eignir í uppÃĄhalds, sleppi", + "home_page_favorite_err_partner": "Get ekki sett eignir fÊlaga í uppÃĄhalds, sleppi", + "home_page_first_time_notice": "Ef ÞÃē ert að nota Þetta smÃĄforrit í fyrsta sinn, gakktu Ãēr skugga um að ÞÃē veljir myndasafn til að afrita svo að tímalínan fyllist af myndum og myndbÃļndum", + "home_page_locked_error_local": "Get ekki fÃĻrt staðvÃĻrar eignir í lÃĻsta mÃļppu, sleppi", + "home_page_locked_error_partner": "Get ekki fÃĻrt eignir fÊlaga í lÃĻsta mÃļppu, sleppi", + "home_page_share_err_local": "Get ekki deilt staðvÃĻrum eignum með hlekk, sleppi", + "home_page_upload_err_limit": "Get bara hlaðið upp 30 myndum að hÃĄmarki í einu, sleppi", + "host": "HÃŊsill", + "hour": "Klukkustund", + "hours": "Klukkustundir", + "id": "Auðkenni", + "idle": "Hvílandi", + "ignore_icloud_photos": "Hundsa myndir í iCloud", + "ignore_icloud_photos_description": "Myndum sem eru geymdar í iCloud verður ekki hlaðið upp ÃĄ Immich ÞjÃŗninn", + "image": "Mynd", + "image_alt_text_date": "{isVideo, select, true {Myndband} other {Mynd}} tekin ÃĄ {date}", + "image_alt_text_date_1_person": "{isVideo, select, true {Myndband} other {Mynd}} með {person1} ÃĄ {date}", + "image_alt_text_date_2_people": "{isVideo, select, true {Myndband} other {Mynd}} með {person1} og {person2} ÃĄ {date}", + "image_alt_text_date_3_people": "{isVideo, select, true {Myndband} other {Mynd}} með {person1}, {person2}, og {person3} ÃĄ {date}", + "image_alt_text_date_4_or_more_people": "{isVideo, select, true {Myndband} other {Mynd}} með {person1}, {person2}, og {additionalCount, number} Ãļðrum ÃĄ {date}", + "image_alt_text_date_place": "{isVideo, select, true {Myndband} other {Mynd}} í {city}, {country} ÃĄ {date}", + "image_alt_text_date_place_1_person": "{isVideo, select, true {Myndband} other {Mynd}} í {city}, {country} með {person1} ÃĄ {date}", + "image_alt_text_date_place_2_people": "{isVideo, select, true {Myndband} other {Mynd}} í {city}, {country} með {person1} og {person2} ÃĄ {date}", + "image_alt_text_date_place_3_people": "{isVideo, select, true {Myndband} other {Mynd}} í {city}, {country} með {person1}, {person2}, og {person3} ÃĄ {date}", + "image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Image}} í {city}, {country} með {person1}, {person2}, og {additionalCount, number} Ãļðrum ÃĄ {date}", + "image_saved_successfully": "Mynd vistuð", + "image_viewer_page_state_provider_download_started": "Niðurhal hafið", + "image_viewer_page_state_provider_download_success": "Niðurhal tÃŗkst", + "image_viewer_page_state_provider_share_error": "Villa við deilingu", + "immich_logo": "Immich merkið", + "immich_web_interface": "VefviðmÃŗt Immich", + "import_from_json": "Flytja inn Ãēr JSON", + "import_path": "SlÃŗÃ° innflutnings", + "in_albums": "Í {count, plural, one {# safni} other {# sÃļfnum}}", + "in_archive": "Í geymslu", + "in_year": "Á {year}", + "in_year_selector": "Í", + "include_archived": "Taka með Ãēr geymslu", + "include_shared_albums": "Taka með Ãēr deildum sÃļfnum", + "include_shared_partner_assets": "Taka með eignir fÊlaga", + "individual_share": "EinstÃļk deild", + "individual_shares": "Einstakar deildir", + "info": "UpplÃŊsingar", + "interval": { + "day_at_onepm": "Alla daga klukkan 13" + } +} diff --git a/i18n/it.json b/i18n/it.json index 97f486d951..fbc1b32e36 100644 --- a/i18n/it.json +++ b/i18n/it.json @@ -7,6 +7,7 @@ "action_common_update": "Aggiorna", "actions": "Azioni", "active": "Attivo", + "active_count": "Attivi: {count}", "activity": "Attività", "activity_changed": "L'attività è {enabled, select, true {abilitata} other {disabilitata}}", "add": "Aggiungi", @@ -67,6 +68,7 @@ "confirm_reprocess_all_faces": "Sei sicuro di voler riprocessare tutti i volti? Questo cancellerà anche tutte le persone associate.", "confirm_user_password_reset": "Sei sicuro di voler resettare la password di {user}?", "confirm_user_pin_code_reset": "Sicuro di voler resettare il codice PIN di {user}?", + "copy_config_to_clipboard_description": "Copia la configurazione attuale del sistema come oggetto JSON negli appunti", "create_job": "Crea Processo", "cron_expression": "Espressione Cron", "cron_expression_description": "Imposta il tempo di scansione utilizzando il formato Cron. Per ulteriori informazioni fare riferimento a Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "Disabilita login", "duplicate_detection_job_description": "Esegui il machine learning sugli assets per rilevare immagini simili. Basato su Ricerca Intelligente", "exclusion_pattern_description": "I modelli di esclusione ti permettono di ignorare file e cartelle durante la scansione della tua libreria. Questo è utile se hai cartelle che contengono file che non vuoi importare, come ad esempio, i file RAW.", - "external_library_management": "Gestione Librerie Esterne", + "export_config_as_json_description": "Scarica la configurazione attuale del sistema come file JSON", + "external_libraries_page_description": "Pagina librerie esterne (admin)", "face_detection": "Rilevamento Volti", "face_detection_description": "Rileva i volti presenti negli asset utilizzando il machine-learning. Per i video, viene presa in considerazione solo la miniatura. Utilizzare \"Ripristina\" per cancellare tutti i volti presenti, \"Ricarica\" per processare di nuovo tutti gli asset, \"Mancanti\" processa solo gli asset che non sono ancora stati processati. I volti rilevati verranno selezionati per il riconoscimento facciale dopo che il rilevamento dei volti sarà stato completato, raggruppandoli in persone esistenti e/o nuove.", "facial_recognition_job_description": "Raggruppa i volti rilevati in persone. Questo processo viene eseguito dopo che il rilevamento volti è stato completato. \"Reset\" (ri-)unisce tutti i volti. \"Mancanti\" processa i volti che non hanno una persona assegnata.", @@ -102,22 +105,28 @@ "image_thumbnail_description": "Miniatura piccola senza metadati, utilizzata durante la visualizzazione di gruppi di foto come nella galleria principale", "image_thumbnail_quality_description": "Qualità delle miniature da 1 a 100. Un valore piÚ alto è migliore ma produce file piÚ grandi e puÃ˛ ridurre la reattività dell'app.", "image_thumbnail_title": "Impostazioni delle miniature", + "import_config_from_json_description": "Importa la configurazione del sistema caricando un file JSON", "job_concurrency": "Concorrenza {job}", "job_created": "Processo creato", "job_not_concurrency_safe": "Questo processo non è eseguibile in maniera concorrente.", "job_settings": "Impostazioni dei processi", "job_settings_description": "Gestisci la concorrenza dei processi", - "job_status": "Stato Processi", "jobs_delayed": "{jobCount, plural, one {# posticipato} other {# posticipati}}", "jobs_failed": "{jobCount, plural, one {# fallito} other {# falliti}}", + "jobs_over_time": "Processi nel tempo", "library_created": "Creata libreria: {library}", "library_deleted": "Libreria eliminata", + "library_details": "Dettagli libreria", + "library_folder_description": "Specifica una cartella da importare. Questa cartella, incluse le sottocartelle, verrà analizzata alla ricerca di immagini e video.", + "library_remove_exclusion_pattern_prompt": "Vuoi davvero rimuovere questo pattern di esclusione?", + "library_remove_folder_prompt": "Vuoi davvero rimuovere questa cartella di importazione?", "library_scanning": "Scansione periodica", "library_scanning_description": "Configura la scansione periodica della libreria", "library_scanning_enable_description": "Attiva la scansione periodica della libreria", "library_settings": "Libreria Esterna", "library_settings_description": "Gestisci le impostazioni della libreria esterna", "library_tasks_description": "Scansiona le librerie esterne per risorse nuove o modificate", + "library_updated": "Libreria aggiornata", "library_watching_enable_description": "Osserva le librerie esterne per cambiamenti", "library_watching_settings": "Osserva librerie [SPERIMENTALE]", "library_watching_settings_description": "Osserva automaticamente i cambiamenti dei file", @@ -177,6 +186,7 @@ "maintenance_start": "Avvia modalità manutenzione", "maintenance_start_error": "Errore nell'avvio della modalità manutenzione.", "manage_concurrency": "Gestisci Concorrenza", + "manage_concurrency_description": "Vai alla pagina dei processi per gestire la concorrenza dei job", "manage_log_settings": "Gestisci le impostazioni dei log", "map_dark_style": "Tema scuro", "map_enable_description": "Abilita funzionalità della mappa", @@ -266,10 +276,14 @@ "password_settings_description": "Gestisci impostazioni del login con password", "paths_validated_successfully": "Percorsi validati con successo", "person_cleanup_job": "Pulizia Persona", + "queue_details": "Dettagli della Coda", + "queues": "Code dei processi", + "queues_page_description": "Pagina delle code dei job (admin)", "quota_size_gib": "Dimensione Archiviazione (GiB)", "refreshing_all_libraries": "Aggiornando tutte le librerie", "registration": "Registrazione amministratore", "registration_description": "PoichÊ sei il primo utente del sistema, sarai assegnato come Amministratore e sarai responsabile dei task amministrativi, e utenti aggiuntivi saranno creati da te.", + "remove_failed_jobs": "Rimuovi i job falliti", "require_password_change_on_login": "Richiedi all'utente di cambiare password al primo accesso", "reset_settings_to_default": "Ripristina impostazioni predefinite", "reset_settings_to_recent_saved": "Ripristina impostazioni alle impostazioni salvate di recente", @@ -282,8 +296,10 @@ "server_public_users_description": "Tutti gli utenti (nome ed e-mail) sono elencati quando si aggiunge un utente agli album condivisi. Quando disabilitato, l'elenco degli utenti sarà disponibile solo per gli utenti amministratori.", "server_settings": "Impostazioni Server", "server_settings_description": "Gestisci le impostazioni del server", + "server_stats_page_description": "Pagina delle statistiche del server (admin)", "server_welcome_message": "Messaggio di benvenuto", "server_welcome_message_description": "Un messaggio mostrato sulla pagina di login.", + "settings_page_description": "Pagina delle impostazioni (admin)", "sidecar_job": "Metadati sidecar", "sidecar_job_description": "Scopri o sincronizza metadati sidecar dal filesystem", "slideshow_duration_description": "Numero di secondi per cui mostrare ciascuna immagine", @@ -403,6 +419,7 @@ "user_settings": "Impostazione Utente", "user_settings_description": "Gestisci impostazioni utente", "user_successfully_removed": "L'utente {email} è stato rimosso con successo.", + "users_page_description": "Pagina utenti (admin)", "version_check_enabled_description": "Abilita controllo della versione", "version_check_implications": "La funzione di controllo della versione fa uso di una comunicazione periodica con github.com", "version_check_settings": "Controllo Versione", @@ -635,6 +652,7 @@ "backup_options_page_title": "Opzioni di Backup", "backup_setting_subtitle": "Gestisci le impostazioni di upload in primo piano e in background", "backup_settings_subtitle": "Gestisci le impostazioni di caricamento", + "backup_upload_details_page_more_details": "Tocca per maggiori informazioni", "backward": "Indietro", "biometric_auth_enabled": "Autenticazione biometrica attivata", "biometric_locked_out": "Sei stato bloccato dall'autenticazione biometrica", @@ -701,6 +719,7 @@ "check_corrupt_asset_backup_button": "Effettua controllo", "check_corrupt_asset_backup_description": "Effettua questo controllo solo sotto rete Wi-Fi e quando tutti gli asset sono stati sottoposti a backup. La procedura potrebbe impiegare qualche minuto.", "check_logs": "Controlla i log", + "checksum": "Checksum", "choose_matching_people_to_merge": "Scegli persone combacianti da unire", "city": "Città", "clear": "Pulisci", @@ -723,6 +742,7 @@ "collapse_all": "Comprimi tutto", "color": "Colore", "color_theme": "Colore Tema", + "command": "Comando", "comment_deleted": "Commento eliminato", "comment_options": "Opzioni per i commenti", "comments_and_likes": "Commenti & mi piace", @@ -971,6 +991,7 @@ "failed_to_unstack_assets": "Errore durante la separazione degli assets", "failed_to_update_notification_status": "Aggiornamento stato notifiche fallito", "incorrect_email_or_password": "Email o password non corretta", + "library_folder_already_exists": "Questo path di importazione esiste già.", "paths_validation_failed": "{paths, plural, one {# percorso} other {# percorsi}} hanno fallito la validazione", "profile_picture_transparent_pixels": "Le foto profilo non possono avere pixel trasparenti. Riprova ingrandendo e/o muovendo l'immagine.", "quota_higher_than_disk_size": "Hai impostato un limite piÚ alto della dimensione del disco", @@ -1055,6 +1076,7 @@ "unable_to_update_user": "Impossibile aggiornare l'utente", "unable_to_upload_file": "Impossibile caricare il file" }, + "exclusion_pattern": "Pattern di esclusione", "exif": "Exif", "exif_bottom_sheet_description": "Aggiungi una descrizione...", "exif_bottom_sheet_description_error": "Errore durante l'aggiornamento della descrizione", @@ -1085,6 +1107,7 @@ "external_network_sheet_info": "Quando non si è connessi alla rete Wi-Fi preferita, l'app si collegherà al server tramite il primo degli indirizzi della lista che riuscirà a raggiungere, dall'alto verso il basso", "face_unassigned": "Non assegnata", "failed": "Fallito", + "failed_count": "Falliti: {count}", "failed_to_authenticate": "Autenticazione non riuscita", "failed_to_load_assets": "Impossibile caricare gli asset", "failed_to_load_folder": "Impossibile caricare la cartella", @@ -1114,6 +1137,7 @@ "folders_feature_description": "Navigare la visualizzazione a cartelle per le foto e i video sul file system", "forgot_pin_code_question": "Hai dimenticato il tuo PIN?", "forward": "Avanti", + "full_path": "Percorso completo: {path}", "gcast_enabled": "Google Cast Abilitato", "gcast_enabled_description": "Questa funzione carica risorse esterne da Google per poter funzionare.", "general": "Generale", @@ -1144,12 +1168,14 @@ "header_settings_header_name_input": "Nome header", "header_settings_header_value_input": "Valore header", "headers_settings_tile_title": "Header proxy personalizzati", + "height": "Altezza", "hi_user": "Ciao {name} ({email})", "hide_all_people": "Nascondi tutte le persone", "hide_gallery": "Nascondi galleria", "hide_named_person": "Nascondi {name}", "hide_password": "Nascondi password", "hide_person": "Nascondi persona", + "hide_text_recognition": "Nascondi riconoscimento del testo", "hide_unnamed_people": "Nascondi persone senza nome", "home_page_add_to_album_conflicts": "Aggiunti {added} elementi all'album {album}. {failed} elementi erano già presenti nell'album.", "home_page_add_to_album_err_local": "Non puoi aggiungere in album risorse non ancora caricate, azione ignorata", @@ -1243,6 +1269,8 @@ "let_others_respond": "Permetti agli altri di rispondere", "level": "Livello", "library": "Libreria", + "library_add_folder": "Aggiungi cartella", + "library_edit_folder": "Modifica cartella", "library_options": "Impostazioni Libreria", "library_page_device_albums": "Album sul dispositivo", "library_page_new_album": "Nuovo Album", @@ -1263,6 +1291,7 @@ "local": "Locale", "local_asset_cast_failed": "Impossibile trasmettere una risorsa che non è caricata sul server", "local_assets": "Risorsa locale", + "local_id": "ID Locale", "local_media_summary": "Riepilogo dei Media Locali", "local_network": "Rete locale", "local_network_sheet_info": "L'app si collegherà al server tramite questo URL quando è in uso la rete Wi-Fi specificata", @@ -1441,6 +1470,7 @@ "no_favorites_message": "Aggiungi preferiti per trovare facilmente le tue migliori foto e video", "no_libraries_message": "Crea una libreria esterna per vedere le tue foto e i tuoi video", "no_local_assets_found": "Nessun asset locale trovato con questo checksum", + "no_location_set": "Nessuna posizione impostata", "no_locked_photos_message": "Le foto e i video nella cartella privata sono nascosti e non vengono visualizzati mentre navighi o cerchi nella tua libreria.", "no_name": "Nessun nome", "no_notifications": "Nessuna notifica", @@ -1500,6 +1530,7 @@ "other_variables": "Altre variabili", "owned": "Posseduti", "owner": "Proprietario", + "page": "Pagina", "partner": "Partner", "partner_can_access": "{partner} puÃ˛ accedere", "partner_can_access_assets": "Tutte le tue foto e i tuoi video eccetto quelli Archiviati e Cancellati", @@ -1956,6 +1987,7 @@ "show_slideshow_transition": "Mostra la transizione della presentazione", "show_supporter_badge": "Medaglia di Contributore", "show_supporter_badge_description": "Mostra la medaglia di contributore", + "show_text_recognition": "Mostra riconoscimento del testo", "show_text_search_menu": "Mostra il menu di ricerca del testo", "shuffle": "Casuale", "sidebar": "Barra laterale", @@ -2026,6 +2058,7 @@ "tags": "Tag", "tap_to_run_job": "Tocca per eseguire l'attività", "template": "Modello", + "text_recognition": "Riconoscimento del testo", "theme": "Tema", "theme_selection": "Selezione tema", "theme_selection_description": "Imposta automaticamente il tema chiaro o scuro in base all'impostazione del tuo browser", @@ -2058,6 +2091,7 @@ "to_select": "per selezionare", "to_trash": "Cancella", "toggle_settings": "Attiva/disattiva impostazioni", + "toggle_theme_description": "Cambia tema", "total": "Totale", "total_usage": "Utilizzo totale", "trash": "Cestino", @@ -2166,6 +2200,7 @@ "view_album": "Visualizza Album", "view_all": "Vedi tutto", "view_all_users": "Visualizza tutti gli utenti", + "view_asset_owners": "Visualizza proprietari dell'asset", "view_details": "Visualizza Dettagli", "view_in_timeline": "Visualizza in timeline", "view_link": "Visualizza link", @@ -2182,10 +2217,12 @@ "viewer_unstack": "Separa dal gruppo", "visibility_changed": "Visibilità modificata per {count, plural, one {# persona} other {# persone}}", "waiting": "In Attesa", + "waiting_count": "In attesa: {count}", "warning": "Attenzione", "week": "Settimana", "welcome": "Benvenuto", "welcome_to_immich": "Benvenuto in Immich", + "width": "Larghezza", "wifi_name": "Nome rete Wi-Fi", "workflow": "Flusso di lavoro", "wrong_pin_code": "Codice PIN errato", diff --git a/i18n/ja.json b/i18n/ja.json index 1fb9fbbd21..1ca31fd9e1 100644 --- a/i18n/ja.json +++ b/i18n/ja.json @@ -31,6 +31,7 @@ "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をčŋŊ加", @@ -73,7 +74,6 @@ "disable_login": "ãƒ­ã‚°ã‚¤ãƒŗã‚’į„ĄåŠšãĢする", "duplicate_detection_job_description": "抟æĸ°å­Ļįŋ’ã‚’į”¨ã„ãĻ類äŧŧį”ģ像ぎ検å‡ēã‚’čĄŒã„ãžã™ã€‚īŧˆã‚šãƒžãƒŧトã‚ĩãƒŧチãĢ䞝存īŧ‰", "exclusion_pattern_description": "除外パã‚ŋãƒŧãƒŗã‚’äŊŋį”¨ã™ã‚‹ã¨ã€ãƒŠã‚¤ãƒ–ãƒŠãƒĒã‚’ã‚šã‚­ãƒŖãƒŗã™ã‚‹éš›ãĢãƒ•ã‚Ąã‚¤ãƒĢやフりãƒĢãƒ€ã‚’į„ĄčĻ–ã™ã‚‹ã“ã¨ãŒã§ããžã™ã€‚RAWãƒ•ã‚Ąã‚¤ãƒĢãĒãŠã€ã‚¤ãƒŗãƒãƒŧトしたくãĒã„ãƒ•ã‚Ąã‚¤ãƒĢをåĢむフりãƒĢダがある場合ãĢäžŋ刊です。", - "external_library_management": "外部ナイブナãƒĒįŽĄį†", "face_detection": "éĄ”æ¤œå‡ē", "face_detection_description": "抟æĸ°å­Ļįŋ’ã‚’äŊŋį”¨ã—ãĻã‚ĸã‚ģãƒƒãƒˆå†…ãŽéĄ”ã‚’æ¤œå‡ēしぞす。動į”ģぎ場合は、ã‚ĩムネイãƒĢぎãŋãŒå¯žčąĄã¨ãĒりぞす。\"すずãĻ\" はすずãĻぎã‚ĸã‚ģットをīŧˆå†īŧ‰å‡Ļį†ã—ãžã™ã€‚ \"æŦ čŊ\" はぞだå‡Ļį†ã•ã‚ŒãĻいãĒいã‚ĸã‚ģットをキãƒĨãƒŧãĢå…Ĩã‚Œãžã™ã€‚éĄ”æ¤œå‡ēぎ厌äē†åžŒã€æ¤œå‡ēã•ã‚ŒãŸéĄ”ã¯éĄ”čĒč­˜ãŽã‚­ãƒĨãƒŧへå…Ĩれられ、æ—ĸ存ぞたは新čĻãŽäēēį‰ŠãĢグãƒĢãƒŧプ化されぞす。", "facial_recognition_job_description": "検å‡ēã•ã‚ŒãŸéĄ”ã‚’äēēį‰ŠãĢグãƒĢãƒŧãƒ—åŒ–ã—ãžã™ã€‚ã“ãŽã‚šãƒ†ãƒƒãƒ—ã¯éĄ”æ¤œå‡ēが厌äē†ã—た垌ãĢåŽŸčĄŒã•ã‚Œãžã™ã€‚ \"すずãĻ\" はすずãĻãŽéĄ”ã‚’īŧˆå†īŧ‰ã‚¯ãƒŠã‚šã‚ŋãƒĒãƒŗã‚°ã—ã€ \"æŦ čŊ\" はäēēį‰ŠãŒå‰˛ã‚ŠåŊ“ãĻられãĻいãĒã„éĄ”ã‚’ã‚­ãƒĨãƒŧãĢå…Ĩれぞす。", @@ -106,17 +106,21 @@ "job_not_concurrency_safe": "こぎジョブは厉全ãĢåŒæ™‚åŽŸčĄŒã§ããžã›ã‚“ã€‚", "job_settings": "ã‚¸ãƒ§ãƒ–č¨­åŽš", "job_settings_description": "ã‚¸ãƒ§ãƒ–ãŽåŒæ™‚åŽŸčĄŒã‚’įŽĄį†ã—ãžã™", - "job_status": "ジョブ ゚テãƒŧã‚ŋ゚", "jobs_delayed": "{jobCount, plural, other {#äģļ}}ぎ遅åģļ", "jobs_failed": "{jobCount, plural, other {#äģļ}}ãŽå¤ąæ•—", "library_created": "äŊœæˆã•れたナイブナãƒĒīŧš{library}", "library_deleted": "ナイブナãƒĒは削除されぞした", + "library_details": "ナイブナãƒĒãŽčŠŗį´°", + "library_folder_description": "ã‚¤ãƒŗãƒãƒŧトするフりãƒĢダを指厚しãĻください、ã‚ĩブフりãƒĢダãƒŧ内をåĢむį”ģ像と動į”ģãŒã‚šã‚­ãƒŖãƒŗã•ã‚Œãžã™", + "library_remove_exclusion_pattern_prompt": "こぎ除外パã‚ŋãƒŧãƒŗã‚’å‰Šé™¤ã—ãĻよいですかīŧŸ", + "library_remove_folder_prompt": "ã“ãŽã‚¤ãƒŗãƒãƒŧトフりãƒĢãƒ€ã‚’č§Ŗé™¤ã—ãžã™ã‹īŧŸ", "library_scanning": "åŽšæœŸã‚šã‚­ãƒŖãƒŗ", "library_scanning_description": "ナイブナãƒĒãŽåŽšæœŸã‚šã‚­ãƒŖãƒŗč¨­åŽš", "library_scanning_enable_description": "ナイブナãƒĒåŽšæœŸã‚šã‚­ãƒŖãƒŗãŽæœ‰åŠšåŒ–", "library_settings": "外部ナイブナãƒĒ", "library_settings_description": "外部ナイブナãƒĒč¨­åŽšã‚’įŽĄį†ã—ãžã™", "library_tasks_description": "ã‚ĸã‚ģットがčŋŊ加ぞたは変更された外部ナイブナãƒĒã‚’ã‚šã‚­ãƒŖãƒŗã™ã‚‹", + "library_updated": "更新されたナイブナãƒĒ", "library_watching_enable_description": "外部ナイブナãƒĒãŽãƒ•ã‚Ąã‚¤ãƒĢå¤‰æ›´ã‚’į›ŖčĻ–", "library_watching_settings": "ナイブナãƒĒᛪčĻ–īŧˆåŽŸé¨“įš„æŠŸčƒŊīŧ‰", "library_watching_settings_description": "å¤‰æ›´ã•ã‚ŒãŸãƒ•ã‚Ąã‚¤ãƒĢをč‡Ēå‹•įš„ãĢᛪčĻ–", @@ -381,7 +385,7 @@ "transcoding_video_codec_description": "VP9 はéĢ˜ã„åŠšįŽ‡ã¨Web äē’æ›æ€§ã‚’æŒãĄãžã™ãŒã€ãƒˆãƒŠãƒŗã‚šã‚ŗãƒŧドãĢ時間がかかりぞす。 HEVC も同様ですが、Web äē’æ›æ€§ãŒäŊŽããĒりぞす。 H.264 は嚅åēƒã„äē’æ›æ€§ãŒã‚ã‚ŠãƒˆãƒŠãƒŗã‚šã‚ŗãƒŧドがéĢ˜é€Ÿã§ã™ãŒã€į”Ÿæˆã•ã‚Œã‚‹ãƒ•ã‚Ąã‚¤ãƒĢははるかãĢ大きくãĒりぞす。 AV1 ã¯æœ€ã‚‚åŠšįŽ‡įš„ãĒã‚ŗãƒŧデックですが、古いデバイ゚ではã‚ĩポãƒŧトされãĻいぞせん。", "trash_enabled_description": "ごãŋįŽąæŠŸčƒŊを有劚化", "trash_number_of_days": "æ—Ĩ数", - "trash_number_of_days_description": "ã‚ĸã‚ģットを厌全ãĢ削除する前ãĢごãŋįŽąãĢäŋįŽĄã—ãĻおくæ—Ĩ数", + "trash_number_of_days_description": "é …į›Žã‚’åŽŒå…¨ãĢ削除する前ãĢごãŋįŽąãĢäŋįŽĄã—ãĻおくæ—Ĩ数", "trash_settings": "ごãŋįŽąãŽč¨­åŽš", "trash_settings_description": "ごãŋįŽąãŽč¨­åŽšã‚’įŽĄį†ã—ãžã™", "unlink_all_oauth_accounts": "全ãĻぎOAuthã‚ĸã‚Ģã‚Ļãƒŗãƒˆã‚’ãƒĒãƒŗã‚¯č§Ŗé™¤", @@ -401,7 +405,6 @@ "user_restore_scheduled_removal": "ãƒĻãƒŧã‚ļãƒŧを垊元 - {date, date, long}ãĢ削除äēˆåޚ", "user_settings": "ãƒĻãƒŧã‚ļãƒŧč¨­åŽš", "user_settings_description": "ãƒĻãƒŧã‚ļãƒŧč¨­åŽšã‚’įŽĄį†ã—ãžã™", - "user_successfully_removed": "ãƒĻãƒŧã‚ļãƒŧ {email} ã¯æ­Ŗå¸¸ãĢ削除されぞした。", "version_check_enabled_description": "バãƒŧã‚¸ãƒ§ãƒŗãŽįĸēčĒã‚’æœ‰åŠšãĢする", "version_check_implications": "こぎバãƒŧã‚¸ãƒ§ãƒŗįĸēčĒæŠŸčƒŊã¯åŽšæœŸįš„ãĒgithub.comとぎ通äŋĄãĢよりぞす", "version_check_settings": "バãƒŧã‚¸ãƒ§ãƒŗãƒã‚§ãƒƒã‚¯", @@ -424,7 +427,7 @@ "advanced_settings_readonly_mode_title": "čĒ­ãŋå–ã‚Šå°‚į”¨ãƒĸãƒŧド", "advanced_settings_self_signed_ssl_subtitle": "SSLぎチェックを゚キップする。č‡ĒåˇąįŊ˛åč¨ŧ明書がåŋ…čĻã§ã™ã€‚", "advanced_settings_self_signed_ssl_title": "č‡ĒåˇąįŊ˛åč¨ŧæ˜Žæ›¸ã‚’č¨ąå¯ã™ã‚‹ [åŽŸé¨“įš„]", - "advanced_settings_sync_remote_deletions_subtitle": "Webでこぎ操äŊœã‚’čĄŒãŖãŸéš›ãĢ、č‡Ēå‹•įš„ãĢこぎデバイ゚上からåŊ“čОã‚ĸã‚ģットを削除ぞたは垊元する", + "advanced_settings_sync_remote_deletions_subtitle": "Webでこぎ操äŊœã‚’čĄŒãŖãŸéš›ãĢ、č‡Ēå‹•įš„ãĢã“ãŽãƒ‡ãƒã‚¤ã‚šä¸Šã‹ã‚‰é …į›Žã‚’å‰Šé™¤ãžãŸã¯åžŠå…ƒã™ã‚‹", "advanced_settings_sync_remote_deletions_title": "ãƒĒãƒĸãƒŧト削除ぎ同期 [čŠĻ鍓運ᔍ]", "advanced_settings_tile_subtitle": "čŋŊ加ãƒĻãƒŧã‚ļãƒŧč¨­åŽš", "advanced_settings_troubleshooting_subtitle": "トナブãƒĢã‚ˇãƒĨãƒŧãƒ†ã‚Ŗãƒŗã‚°į”¨ãŽčŠŗį´°č¨­åŽšã‚’ã‚ĒãƒŗãĢする", @@ -452,7 +455,7 @@ "album_share_no_users": "こぎã‚ĸãƒĢバムを全ãĻぎãƒĻãƒŧã‚ļãƒŧã¨å…ąæœ‰ã—ãŸã‹ã€å…ąæœ‰ã™ã‚‹ãƒĻãƒŧã‚ļãƒŧがいãĒいようです。", "album_summary": "ã‚ĸãƒĢバムぎぞとめ", "album_updated": "ã‚ĸãƒĢバム更新", - "album_updated_setting_description": "å…ąæœ‰ã‚ĸãƒĢバムãĢ新しいã‚ĸã‚ģットがčŋŊ加されたとき通įŸĨを受け取る", + "album_updated_setting_description": "å…ąæœ‰ã‚ĸãƒĢバムãĢæ–°ã—ã„é …į›ŽãŒčŋŊ加されたとき通įŸĨを受け取る", "album_user_left": "{album} をåŽģりぞした", "album_user_removed": "{user} を削除しぞした", "album_viewer_appbar_delete_confirm": "æœŦåŊ“ãĢこぎã‚ĸãƒĢバムを削除しぞすかīŧŸ", @@ -485,6 +488,7 @@ "api_key_description": "こぎ値は一回ぎãŋ襨į¤ēされぞす。 ã‚Ļã‚Ŗãƒŗãƒ‰ã‚Ļを閉じる前ãĢåŋ…ãšã‚ŗãƒ”ãƒŧしãĻください。", "api_key_empty": "APIキãƒŧ名はįŠēį™ŊãĢできぞせん", "api_keys": "APIキãƒŧ", + "app_architecture_variant": "CPUã‚ĸãƒŧã‚­ãƒ†ã‚¯ãƒãƒŖ (ABI)", "app_bar_signout_dialog_content": "ã‚ĩã‚¤ãƒŗã‚ĸã‚ĻトしぞすかīŧŸ", "app_bar_signout_dialog_ok": "はい", "app_bar_signout_dialog_title": "ã‚ĩã‚¤ãƒŗã‚ĸã‚Ļト", @@ -509,9 +513,9 @@ "asset_action_share_err_offline": "ã‚Ēãƒ•ãƒŠã‚¤ãƒŗãŽé …į›Žã‚’ã‚˛ãƒƒãƒˆã§ããžã›ã‚“ã€‚ã‚šã‚­ãƒƒãƒ—ã—ãžã™", "asset_added_to_album": "ã‚ĸãƒĢバムãĢčŋŊ加", "asset_adding_to_album": "ã‚ĸãƒĢバムãĢčŋŊ加しãĻいぞすâ€Ļ", - "asset_description_updated": "ã‚ĸã‚ģットぎčĒŦ明が更新されぞした", - "asset_filename_is_offline": "ã‚ĸã‚ģット {filename} はã‚Ēãƒ•ãƒŠã‚¤ãƒŗã§ã™", - "asset_has_unassigned_faces": "ã‚ĸã‚ģットãĢはæœĒå‰˛ã‚ŠåŊ“ãĻãŽéĄ”ãŒã‚ã‚Šãžã™", + "asset_description_updated": "é …į›ŽãŽčĒŦ明文が更新されぞした", + "asset_filename_is_offline": "é …į›Ž {filename} がã‚Ēãƒ•ãƒŠã‚¤ãƒŗã§ã™", + "asset_has_unassigned_faces": "é …į›ŽãĢ名前ぎついãĻいãĒいäēēį‰ŠãŽéĄ”ãŒã‚ã‚Šãžã™", "asset_hashing": "ãƒãƒƒã‚ˇãƒĨč¨ˆįŽ—ä¸­â€Ļ", "asset_list_group_by_sub_title": "グãƒĢãƒŧプ分け", "asset_list_layout_settings_dynamic_layout_title": "ダイナミックãƒŦイã‚ĸã‚Ļト", @@ -521,8 +525,8 @@ "asset_list_layout_sub_title": "ãƒŦイã‚ĸã‚Ļト", "asset_list_settings_subtitle": "グãƒĒッドãĢé–ĸã™ã‚‹č¨­åŽš", "asset_list_settings_title": "グãƒĒッド", - "asset_offline": "ã‚ĸã‚ģットはã‚Ēãƒ•ãƒŠã‚¤ãƒŗã§ã™", - "asset_offline_description": "こぎã‚ĸã‚ģットはã‚Ēãƒ•ãƒŠã‚¤ãƒŗã§ã™ã€‚ Immichã¯ãƒ•ã‚Ąã‚¤ãƒĢぎ場所ãĢã‚ĸクã‚ģ゚できぞせん。 ã‚ĸã‚ģãƒƒãƒˆãŒåˆŠį”¨å¯čƒŊであることをįĸēčĒã—ãƒŠã‚¤ãƒ–ãƒŠãƒĒã‚’å†ã‚šã‚­ãƒŖãƒŗã—ãĻください。", + "asset_offline": "é …į›ŽãŒã‚Ēãƒ•ãƒŠã‚¤ãƒŗã§ã™", + "asset_offline_description": "ã“ãŽå¤–éƒ¨é …į›Žã¯ãƒ‡ã‚Ŗã‚šã‚¯ä¸ŠãĢもうありぞせん。Immichã‚ĩãƒŧバãƒŧãŽįŽĄį†č€…ãĢ逪įĩĄã‚’しãĻください。", "asset_restored_successfully": "垊元できぞした", "asset_skipped": "゚キップ済", "asset_skipped_in_trash": "ã‚´ãƒŸįŽąãŽä¸­", @@ -575,7 +579,7 @@ "backup_albums_sync": "ã‚ĸãƒĢバム同期įŠļ態をバックã‚ĸップ", "backup_all": "すずãĻ", "backup_background_service_backup_failed_message": "ã‚ĸップロãƒŧドãĢå¤ąæ•—ã—ãžã—ãŸã€‚ãƒĒトナイ中â€Ļ", - "backup_background_service_complete_notification": "ã‚ĸã‚ģットぎバックã‚ĸップが厌äē†ã—ぞした", + "backup_background_service_complete_notification": "å†™įœŸ/動į”ģぎバックã‚ĸップが厌äē†ã—ぞした", "backup_background_service_connection_failed_message": "ã‚ĩãƒŧバãƒŧãĢæŽĨįļšã§ããžã›ã‚“。ãƒĒトナイ中â€Ļ", "backup_background_service_current_upload_notification": "{filename}をã‚ĸップロãƒŧド中", "backup_background_service_default_notification": "æ–°ã—ã„å†™įœŸã‚’įĸēčĒä¸­â€Ļ", @@ -645,8 +649,8 @@ "build": "ビãƒĢド", "build_image": "ビãƒĢãƒ‰ã‚¤ãƒĄãƒŧジ", "bulk_delete_duplicates_confirmation": "æœŦåŊ“ãĢ {count, plural, one {#} other {#}}ãŽé‡č¤‡ã—ãŸé …į›Žã‚’ä¸€æ‹Ŧ削除しぞすか?これãĢã‚ˆã‚Šã€é‡č¤‡ã—ãŸį”ģ像それぞれぎ中で最もã‚ĩイã‚ēぎ大きいもぎを掋し、äģ–ぎ全ãĻãŽé‡č¤‡ãŒå‰Šé™¤ã•ã‚Œãžã™ã€‚ã“ãŽæ“äŊœã‚’å…ƒãĢæˆģすことはできぞせん!", - "bulk_keep_duplicates_confirmation": "æœŦåŊ“ãĢ{count, plural, one {#個} other {#個}}ãŽé‡č¤‡ã‚ĸã‚ģットをäŋæŒã—ぞすか?これãĢよりäŊ•も削除されずãĢé‡č¤‡ã‚°ãƒĢãƒŧãƒ—ãŒč§Ŗæąēされぞす。", - "bulk_trash_duplicates_confirmation": "æœŦåŊ“ãĢ{count, plural, one {#個} other {#個}}ãŽé‡č¤‡ã—ãŸã‚ĸã‚ģットを一æ‹ŦでごãŋįŽąãĢį§ģ動しぞすか?これãĢã‚ˆã‚Šå„é‡č¤‡ä¸­ãŽæœ€å¤§ãŽã‚ĸã‚ģットがäŋæŒã•れ、äģ–ぎ全ãĻãŽé‡č¤‡ã¯ã”ãŋįŽąãĢį§ģ動されぞす。", + "bulk_keep_duplicates_confirmation": "æœŦåŊ“ãĢ{count, plural, one {#個} other {#個}}ãŽé‡č¤‡ã—ãŸé …į›Žã‚’äŋæŒã—ぞすか?これãĢよりäŊ•も削除されずãĢé‡č¤‡ã‚°ãƒĢãƒŧãƒ—ãŒč§Ŗæąēされぞす。", + "bulk_trash_duplicates_confirmation": "æœŦåŊ“ãĢ{count, plural, one {#個} other {#個}}ãŽé‡č¤‡ã—ãŸé …į›Žã‚’ä¸€æ‹ŦでごãŋįŽąãĢį§ģ動しぞすか?これãĢã‚ˆã‚Šå„é‡č¤‡ä¸­ãŽæœ€å¤§ã‚ĩイã‚ēãŽé …į›ŽãŒäŋæŒã•れ、äģ–ぎ全ãĻãŽé‡č¤‡ã¯ã”ãŋįŽąãĢį§ģ動されぞす。", "buy": "Immichをčŗŧå…Ĩ", "cache_settings_clear_cache_button": "ã‚­ãƒŖãƒƒã‚ˇãƒĨをクãƒĒã‚ĸ", "cache_settings_clear_cache_button_title": "ã‚­ãƒŖãƒƒã‚ˇãƒĨを削除 (ã‚­ãƒŖãƒƒã‚ˇãƒĨãŒå†į”Ÿæˆã•ã‚Œã‚‹ãžã§ã€ã‚ĸプãƒĒぎパフりãƒŧãƒžãƒŗã‚šãŒč‘—ã—ãäŊŽä¸‹ã—ぞす)", @@ -771,7 +775,7 @@ "create_link_to_share_description": "ãƒĒãƒŗã‚¯ã‚’įŸĨãŖãĻいるäēēå…¨å“ĄãŒé¸æŠžã—ãŸå†™įœŸã‚’é–˛čĻ§ã§ãã‚‹ã‚ˆã†ãĢãĒりぞす", "create_new": "新čĻäŊœæˆ", "create_new_person": "新しいäēēį‰Šã‚’äŊœæˆ", - "create_new_person_hint": "選択されたã‚ĸã‚ģットを新しいäēēį‰ŠãĢå‰˛ã‚ŠåŊ“ãĻ", + "create_new_person_hint": "é¸æŠžã—ãŸå†™įœŸ/動į”ģを新しいäēēį‰Šã¨ã—ãĻå‰˛ã‚ŠåŊ“ãĻ", "create_new_user": "新čĻãƒĻãƒŧã‚ļãƒŧぎäŊœæˆ", "create_shared_album_page_share_add_assets": "å†™įœŸã‚’čŋŊ加", "create_shared_album_page_share_select_photos": "å†™įœŸã‚’é¸æŠž", @@ -807,7 +811,7 @@ "deduplication_criteria_1": "バイト単äŊãŽį”ģ像ã‚ĩイã‚ē", "deduplication_criteria_2": "EXIFデãƒŧã‚ŋ数", "deduplication_info": "é‡č¤‡æŽ’é™¤æƒ…å ą", - "deduplication_info_description": "ã‚ĸã‚ģットをč‡Ēå‹•įš„ãĢ選択しãĻé‡č¤‡ã‚’ä¸€æ‹Ŧで削除するãĢはæŦĄãŽã‚ˆã†ãĢしぞす:", + "deduplication_info_description": "å†™įœŸ/動į”ģをč‡Ēå‹•įš„ãĢ選択しãĻé‡č¤‡ã‚’ä¸€æ‹Ŧで削除するãĢはæŦĄãŽã‚ˆã†ãĢしぞす:", "default_locale": "デフりãƒĢãƒˆãŽãƒ­ã‚ąãƒŧãƒĢ", "default_locale_description": "ブナã‚Ļã‚ļãŽãƒ­ã‚ąãƒŧãƒĢãĢåŸēãĨいãĻæ—Ĩäģ˜ã¨æ•°å€¤ã‚’フりãƒŧマットしぞす", "delete": "削除", @@ -872,13 +876,13 @@ "download_notfound": "ダã‚Ļãƒŗãƒ­ãƒŧドがčĻ‹ã¤ã‹ã‚Šãžã›ã‚“", "download_paused": "ダã‚Ļãƒŗãƒ­ãƒŧド一時停æ­ĸ中", "download_settings": "ダã‚Ļãƒŗãƒ­ãƒŧド", - "download_settings_description": "ã‚ĸã‚ģットぎダã‚Ļãƒŗãƒ­ãƒŧドãĢé–ĸé€Ŗã™ã‚‹č¨­åŽšã‚’įŽĄį†ã—ãžã™", + "download_settings_description": "å†™įœŸ/動į”ģぎダã‚Ļãƒŗãƒ­ãƒŧドãĢé–ĸé€Ŗã™ã‚‹č¨­åŽšã‚’įŽĄį†ã—ãžã™", "download_started": "ダã‚Ļãƒŗãƒ­ãƒŧド開始", "download_sucess": "ダã‚Ļãƒŗãƒ­ãƒŧド成功", "download_sucess_android": "DCIM/ImmichãĢäŋå­˜ã•れぞした", "download_waiting_to_retry": "ãƒĒトナイ中", "downloading": "ダã‚Ļãƒŗãƒ­ãƒŧド中", - "downloading_asset_filename": "ã‚ĸã‚ģット {filename} をダã‚Ļãƒŗãƒ­ãƒŧド中", + "downloading_asset_filename": "å†™įœŸ/動į”ģ {filename} をダã‚Ļãƒŗãƒ­ãƒŧド中", "downloading_media": "ダã‚Ļãƒŗãƒ­ãƒŧド中", "drop_files_to_upload": "ãƒ•ã‚Ąã‚¤ãƒĢをドロップしãĻã‚ĸップロãƒŧド", "duplicates": "重複", @@ -916,7 +920,7 @@ "email_notifications": "EãƒĄãƒŧãƒĢ通įŸĨ", "empty_folder": "こぎフりãƒĢダãƒŧはįŠēです", "empty_trash": "ã‚´ãƒŸįŽąã‚’įŠēãĢする", - "empty_trash_confirmation": "æœŦåŊ“ãĢã‚´ãƒŸįŽąã‚’įŠēãĢしぞすか? これãĢã‚ˆã‚Šã€ã‚´ãƒŸįŽąå†…ãŽã™ãšãĻぎã‚ĸã‚ģットが Immich から永䚅ãĢ削除されぞす。\nこぎ操äŊœã‚’å…ƒãĢæˆģすことはできぞせん!", + "empty_trash_confirmation": "æœŦåŊ“ãĢã‚´ãƒŸįŽąã‚’įŠēãĢしぞすか? ã‚´ãƒŸįŽąå†…ãŽã™ãšãĻãŽå†™įœŸ/動į”ģが Immich から永䚅ãĢ削除されぞす。\nこぎ操äŊœã‚’å…ƒãĢæˆģすことはできぞせん!", "enable": "有劚化", "enable_backup": "バックã‚ĸップを有劚化", "enable_biometric_auth_description": "į”ŸäŊ“čĒč¨ŧを有劚化するためãĢ、PINã‚ŗãƒŧドをå…Ĩ力しãĻください", @@ -928,7 +932,7 @@ "enter_your_pin_code_subtitle": "éĩäģ˜ããƒ•りãƒĢダãƒŧį”¨ãŽPINã‚ŗãƒŧドをå…Ĩ力しãĻください", "error": "エナãƒŧ", "error_change_sort_album": "ã‚ĸãƒĢãƒãƒ ãŽčĄ¨į¤ē順ぎ変更ãĢå¤ąæ•—ã—ãžã—ãŸ", - "error_delete_face": "ã‚ĸã‚ģãƒƒãƒˆã‹ã‚‰éĄ”ãŽå‰Šé™¤ãŒã§ããžã›ã‚“ã§ã—ãŸ", + "error_delete_face": "å†™įœŸ/動į”ģã‹ã‚‰éĄ”ãŽå‰Šé™¤ãŒã§ããžã›ã‚“ã§ã—ãŸ", "error_getting_places": "場所ぎ取垗ãĢå¤ąæ•—ã—ãžã—ãŸ", "error_loading_image": "į”ģ像ぎčĒ­ãŋčžŧãŋエナãƒŧ", "error_loading_partners": "パãƒŧトナãƒŧぎčĒ­ãŋčžŧãŋãĢå¤ąæ•—ã—ãžã—ãŸ: {error}", @@ -936,50 +940,51 @@ "error_tag_face_bounding_box": "éĄ”ãŽį™ģ錞ãĢå¤ąæ•—ã—ãžã—ãŸ - éĄ”ã‚’å›˛ã‚€å››č§’åŊĸぎåē§æ¨™å–åž—ãĢå¤ąæ•—", "error_title": "エナãƒŧ - å•éĄŒãŒį™ēį”Ÿã—ãžã—ãŸ", "errors": { - "cannot_navigate_next_asset": "æŦĄãŽã‚ĸã‚ģットãĢį§ģ動できぞせん", - "cannot_navigate_previous_asset": "前ぎã‚ĸã‚ģットãĢį§ģ動できぞせん", + "cannot_navigate_next_asset": "æŦĄãŽå†™įœŸ/動į”ģãĢį§ģ動できぞせん", + "cannot_navigate_previous_asset": "å‰ãŽå†™įœŸ/動į”ģãĢį§ģ動できぞせん", "cant_apply_changes": "å¤‰æ›´ã‚’éŠį”¨ã§ããžã›ã‚“", "cant_change_activity": "ã‚ĸã‚¯ãƒ†ã‚Ŗãƒ“ãƒ†ã‚Ŗã‚’{enabled, select, true {į„ĄåŠšåŒ–} other {有劚化}}できぞせん", "cant_change_asset_favorite": "é …į›ŽãŽãŠæ°—ãĢå…Ĩりを変更できぞせん", - "cant_change_metadata_assets_count": "{count, plural, one {#個} other {#個}}ぎã‚ĸã‚ģãƒƒãƒˆãŽãƒĄã‚ŋデãƒŧã‚ŋを変更できぞせん", + "cant_change_metadata_assets_count": "{count, plural, one {#個} other {#個}}ãŽå†™įœŸ/動į”ģãŽãƒĄã‚ŋデãƒŧã‚ŋを変更できぞせん", "cant_get_faces": "éĄ”ã‚’å–åž—ã§ããžã›ã‚“", "cant_get_number_of_comments": "ã‚ŗãƒĄãƒŗãƒˆæ•°ã‚’å–åž—ã§ããžã›ã‚“", "cant_search_people": "äēēį‰Šã‚’æ¤œį´ĸできぞせん", "cant_search_places": "場所を検į´ĸできぞせん", - "error_adding_assets_to_album": "ã‚ĸã‚ģットをã‚ĸãƒĢバムãĢčŋŊ加中ぎエナãƒŧ", + "error_adding_assets_to_album": "エナãƒŧがį™ēį”Ÿã—ã€å†™įœŸ/動į”ģをã‚ĸãƒĢバムãĢčŋŊ加できぞせんでした", "error_adding_users_to_album": "ãƒĻãƒŧã‚ļãƒŧをã‚ĸãƒĢバムãĢčŋŊ加中ぎエナãƒŧ", "error_deleting_shared_user": "å…ąæœ‰ãƒĻãƒŧã‚ļを削除中ぎエナãƒŧ", "error_downloading": "{filename}をダã‚Ļãƒŗãƒ­ãƒŧド中ãĢエナãƒŧ", "error_hiding_buy_button": "čŗŧå…Ĩボã‚ŋãƒŗéžčĄ¨į¤ēぎエナãƒŧ", "error_removing_assets_from_album": "ã‚ĸãƒĢバムからã‚ĸã‚ģットを削除中ぎエナãƒŧã€čŠŗį´°ãĢついãĻã¯ã‚ŗãƒŗã‚ŊãƒŧãƒĢをįĸēčĒã—ãĻください", - "error_selecting_all_assets": "全ã‚ĸã‚ģット選択ぎエナãƒŧ", + "error_selecting_all_assets": "エナãƒŧがį™ēį”Ÿã—ã€å…¨å†™įœŸ/動į”ģを選択ãĢå¤ąæ•—ã—ãžã—ãŸ", "exclusion_pattern_already_exists": "こぎ除外パã‚ŋãƒŧãƒŗã¯æ—ĸãĢ存在しぞす。", "failed_to_create_album": "ã‚ĸãƒĢバムをäŊœæˆã§ããžã›ã‚“でした", "failed_to_create_shared_link": "å…ąæœ‰ãƒĒãƒŗã‚¯ã‚’äŊœæˆã§ããžã›ã‚“でした", "failed_to_edit_shared_link": "å…ąæœ‰ãƒĒãƒŗã‚¯ã‚’įˇ¨é›†ã§ããžã›ã‚“ã§ã—ãŸ", "failed_to_get_people": "äēēį‰Šã‚’å–åž—ã§ããžã›ã‚“ã§ã—ãŸ", "failed_to_keep_this_delete_others": "ã“ãŽé …į›ŽäģĨå¤–ãŽé …į›ŽãŽå‰Šé™¤ãĢå¤ąæ•—ã—ãžã—ãŸ", - "failed_to_load_asset": "ã‚ĸã‚ģットをčĒ­ãŋčžŧめぞせんでした", - "failed_to_load_assets": "ã‚ĸã‚ģットをčĒ­ãŋčžŧめぞせんでした", + "failed_to_load_asset": "å†™įœŸ/動į”ģをčĒ­ãŋčžŧめぞせんでした", + "failed_to_load_assets": "å†™įœŸ/動į”ģをčĒ­ãŋčžŧめぞせんでした", "failed_to_load_notifications": "通įŸĨぎčĒ­ãŋčžŧãŋãĢå¤ąæ•—ã—ãžã—ãŸ", "failed_to_load_people": "äēēį‰Šã‚’čĒ­ãŋčžŧめぞせんでした", "failed_to_remove_product_key": "プロダクトキãƒŧを削除できぞせんでした", "failed_to_reset_pin_code": "PINã‚ŗãƒŧドぎãƒĒã‚ģットãĢå¤ąæ•—ã—ãžã—ãŸ", - "failed_to_stack_assets": "ã‚ĸã‚ģットを゚ã‚ŋックできぞせんでした", - "failed_to_unstack_assets": "ã‚ĸã‚ģットを゚ã‚ŋãƒƒã‚¯ã‹ã‚‰č§Ŗé™¤ã™ã‚‹ã“ã¨ãŒã§ããžã›ã‚“ã§ã—ãŸ", + "failed_to_stack_assets": "å†™įœŸ/動į”ģを゚ã‚ŋックできぞせんでした", + "failed_to_unstack_assets": "å†™įœŸ/動į”ģを゚ã‚ŋãƒƒã‚¯č§Ŗé™¤ãŒã§ããžã›ã‚“ã§ã—ãŸ", "failed_to_update_notification_status": "通įŸĨ゚テãƒŧã‚ŋ゚ぎ更新ãĢå¤ąæ•—ã—ãžã—ãŸ", "incorrect_email_or_password": "ãƒĄãƒŧãƒĢã‚ĸドãƒŦ゚ぞたはパ゚ワãƒŧãƒ‰ãŒé–“é•ãŖãĻいぞす", + "library_folder_already_exists": "ã“ãŽã‚¤ãƒŗãƒãƒŧトパ゚はæ—ĸãĢ存在しぞす。", "paths_validation_failed": "{paths, plural, one {#個} other {#個}}ぎパ゚ぎ検č¨ŧãĢå¤ąæ•—ã—ãžã—ãŸ", "profile_picture_transparent_pixels": "ãƒ—ãƒ­ãƒ•ã‚ŖãƒŧãƒĢå†™įœŸãĢは透明ピクã‚ģãƒĢをåĢめることはできぞせん。į”ģåƒã‚’æ‹Ąå¤§/į¸Žå°ã—ãŸã‚Šį§ģ動しãĻください。", "quota_higher_than_disk_size": "ãƒ‡ã‚Ŗã‚šã‚¯åŽšé‡ã‚ˆã‚Šå¤§ãã„åŽšé‡ãŒæŒ‡åŽšã•ã‚Œãžã—ãŸ", "something_went_wrong": "å•éĄŒãŒį™ēį”Ÿã—ãžã—ãŸ", "unable_to_add_album_users": "ãƒĻãƒŧã‚ļãƒŧをã‚ĸãƒĢバムãĢčŋŊ加できぞせん", - "unable_to_add_assets_to_shared_link": "ã‚ĸã‚ģãƒƒãƒˆã‚’å…ąæœ‰ãƒĒãƒŗã‚¯ãĢčŋŊ加できぞせん", + "unable_to_add_assets_to_shared_link": "å†™įœŸ/動į”ģã‚’å…ąæœ‰ãƒĒãƒŗã‚¯ãĢčŋŊ加できぞせん", "unable_to_add_comment": "ã‚ŗãƒĄãƒŗãƒˆã‚’čŋŊ加できぞせん", "unable_to_add_exclusion_pattern": "除外パã‚ŋãƒŧãƒŗã‚’čŋŊ加できぞせん", "unable_to_add_partners": "パãƒŧトナãƒŧをčŋŊ加できぞせん", - "unable_to_add_remove_archive": "ã‚ĸãƒŧã‚Ģイブ{archived, select, true {からã‚ĸã‚ģットを削除} other {ãĢã‚ĸã‚ģットをčŋŊ加}}できぞせん", - "unable_to_add_remove_favorites": "é …į›Žã‚’ãŠæ°—ãĢå…Ĩり{favorite, select, true {ãĢčŋŊ加} other {ãŽč§Ŗé™¤}}できぞせんでした", + "unable_to_add_remove_archive": "ã‚ĸãƒŧã‚Ģイブ{archived, select, true {ã‹ã‚‰å†™įœŸ/動į”ģを削除} other {ãĢå†™įœŸ/動į”ģをčŋŊ加}}できぞせん", + "unable_to_add_remove_favorites": "å†™įœŸ/動į”ģをお気ãĢå…Ĩり{favorite, select, true {ãĢčŋŊ加} other {ãŽč§Ŗé™¤}}できぞせんでした", "unable_to_archive_unarchive": "{archived, select, true {ã‚ĸãƒŧã‚Ģイブ} other {ã‚ĸãƒŧã‚Ģã‚¤ãƒ–č§Ŗé™¤}}できぞせん", "unable_to_change_album_user_role": "ã‚ĸãƒĢバムぎãƒĻãƒŧã‚ļãƒŧロãƒŧãƒĢを変更できぞせん", "unable_to_change_date": "æ—Ĩäģ˜ã‚’変更できぞせん", @@ -1015,19 +1020,19 @@ "unable_to_log_out_device": "デバイ゚からログã‚ĸã‚Ļトできぞせん", "unable_to_login_with_oauth": "OAuth ã§ãƒ­ã‚°ã‚¤ãƒŗã§ããžã›ã‚“", "unable_to_play_video": "動į”ģã‚’å†į”Ÿã§ããžã›ã‚“", - "unable_to_reassign_assets_existing_person": "ã‚ĸã‚ģットを{name, select, null {æ—ĸ存ぎäēēį‰Š} other {{name}}}ãĢå†å‰˛ã‚ŠåŊ“ãĻできぞせん", - "unable_to_reassign_assets_new_person": "ã‚ĸã‚ģットを新しいäēēį‰ŠãĢå†å‰˛ã‚ŠåŊ“ãĻできぞせん", + "unable_to_reassign_assets_existing_person": "å†™įœŸ/動į”ģを{name, select, null {æ—ĸ存ぎäēēį‰Š} other {{name}}}ãĢå†å‰˛ã‚ŠåŊ“ãĻできぞせん", + "unable_to_reassign_assets_new_person": "å†™įœŸ/動į”ģを新しいäēēį‰ŠãĢå†å‰˛ã‚ŠåŊ“ãĻできぞせん", "unable_to_refresh_user": "ãƒĻãƒŧã‚ļãƒŧを更新できぞせん", "unable_to_remove_album_users": "ã‚ĸãƒĢバムからãƒĻãƒŧã‚ļãƒŧを削除できぞせん", "unable_to_remove_api_key": "API キãƒŧを削除できぞせん", - "unable_to_remove_assets_from_shared_link": "å…ąæœ‰ãƒĒãƒŗã‚¯ã‹ã‚‰ã‚ĸã‚ģットを削除できぞせん", + "unable_to_remove_assets_from_shared_link": "å…ąæœ‰ãƒĒãƒŗã‚¯ã‹ã‚‰å†™įœŸ/動į”ģを削除できぞせん", "unable_to_remove_library": "ナイブナãƒĒを削除できぞせん", "unable_to_remove_partner": "パãƒŧトナãƒŧを削除できぞせん", "unable_to_remove_reaction": "ãƒĒã‚ĸã‚¯ã‚ˇãƒ§ãƒŗã‚’å‰Šé™¤ã§ããžã›ã‚“", "unable_to_reset_password": "パ゚ワãƒŧドをãƒĒã‚ģットできぞせん", "unable_to_reset_pin_code": "PINã‚ŗãƒŧドをãƒĒã‚ģットできぞせんでした", "unable_to_resolve_duplicate": "é‡č¤‡ã‚’č§Ŗæąēできぞせん", - "unable_to_restore_assets": "ã‚ĸã‚ģットを垊元できぞせん", + "unable_to_restore_assets": "å†™įœŸ/動į”ģを垊元できぞせん", "unable_to_restore_trash": "ã‚´ãƒŸįŽąã‚’åžŠå…ƒã§ããžã›ã‚“", "unable_to_restore_user": "ãƒĻãƒŧã‚ļãƒŧを垊元できぞせん", "unable_to_save_album": "ã‚ĸãƒĢバムをäŋå­˜ã§ããžã›ã‚“", @@ -1041,7 +1046,7 @@ "unable_to_set_feature_photo": "ã‚ĸã‚¤ã‚­ãƒŖãƒƒãƒå†™įœŸã‚’č¨­åŽšã§ããžã›ã‚“", "unable_to_set_profile_picture": "ãƒ—ãƒ­ãƒ•ã‚ŖãƒŧãƒĢį”ģåƒã‚’č¨­åŽšã§ããžã›ã‚“", "unable_to_submit_job": "ジョブを送äŋĄã§ããžã›ã‚“", - "unable_to_trash_asset": "ã‚ĸã‚ģãƒƒãƒˆã‚’ã‚´ãƒŸįŽąãĢį§ģ動できぞせん", + "unable_to_trash_asset": "å†™įœŸ/動į”ģã‚’ã‚´ãƒŸįŽąãĢį§ģ動できぞせん", "unable_to_unlink_account": "ã‚ĸã‚Ģã‚ĻãƒŗãƒˆãŽãƒĒãƒŗã‚¯ã‚’č§Ŗé™¤ã§ããžã›ã‚“", "unable_to_unlink_motion_video": "ãƒĸãƒŧã‚ˇãƒ§ãƒŗãƒ“ãƒ‡ã‚ĒぎãƒĒãƒŗã‚¯ã‚’č§Ŗé™¤ã§ããžã›ã‚“", "unable_to_update_album_cover": "ã‚ĸãƒĢバムã‚Ģバãƒŧを更新できぞせん", @@ -1053,6 +1058,7 @@ "unable_to_update_user": "ãƒĻãƒŧã‚ļãƒŧを更新できぞせん", "unable_to_upload_file": "ãƒ•ã‚Ąã‚¤ãƒĢをã‚ĸップロãƒŧドできぞせん" }, + "exclusion_pattern": "除外パã‚ŋãƒŧãƒŗ", "exif": "Exif", "exif_bottom_sheet_description": "čĒŦ明をčŋŊ加", "exif_bottom_sheet_description_error": "čĒŦ明文をã‚ĸップデãƒŧトできぞせんでした", @@ -1084,7 +1090,7 @@ "face_unassigned": "æœĒå‰˛ã‚ŠåŊ“ãĻ", "failed": "å¤ąæ•—", "failed_to_authenticate": "čĒč¨ŧãĢå¤ąæ•—ã—ãžã—ãŸ", - "failed_to_load_assets": "ã‚ĸã‚ģットぎロãƒŧドãĢå¤ąæ•—ã—ãžã—ãŸ", + "failed_to_load_assets": "å†™įœŸ/動į”ģぎロãƒŧドãĢå¤ąæ•—ã—ãžã—ãŸ", "failed_to_load_folder": "フりãƒĢダãƒŧぎčĒ­ãŋčžŧãŋãĢå¤ąæ•—", "favorite": "お気ãĢå…Ĩり", "favorite_action_prompt": "{count}é …į›Žã‚’ãŠæ°—ãĢå…ĨりãĢčŋŊ加しぞした", @@ -1112,6 +1118,7 @@ "folders_feature_description": "ãƒ•ã‚Ąã‚¤ãƒĢã‚ˇã‚šãƒ†ãƒ ä¸ŠãŽå†™įœŸã¨å‹•į”ģぎフりãƒĢダビãƒĨãƒŧã‚’é–˛čĻ§ã™ã‚‹", "forgot_pin_code_question": "PINをåŋ˜ã‚Œãžã—たか?", "forward": "前へ", + "full_path": "フãƒĢパ゚: {path}", "gcast_enabled": "Google Cast", "gcast_enabled_description": "こぎ抟čƒŊは動äŊœãŽãŸã‚ãĢGoogleぎãƒĒã‚Ŋãƒŧ゚をčĒ­ãŋčžŧãŋぞす。", "general": "一čˆŦ", @@ -1148,10 +1155,11 @@ "hide_named_person": "äēēį‰Š {name} ã‚’éžčĄ¨į¤ē", "hide_password": "パ゚ワãƒŧドを隠す", "hide_person": "äēēį‰Šã‚’éžčĄ¨į¤ē", + "hide_text_recognition": "文字čĒč­˜ã‚’éžčĄ¨į¤ē", "hide_unnamed_people": "名前がãĒいäēēį‰Šã‚’éžčĄ¨į¤ē", - "home_page_add_to_album_conflicts": "{album}ãĢ{added}æžšå†™įœŸã‚’čŋŊ加しぞした。čŋŊ加済ãŋぎ{failed}枚ぱキップしぞした。", - "home_page_add_to_album_err_local": "ぞだã‚ĸップロãƒŧドされãĻãĒã„é …į›Žã¯ã€ã‚ĸãƒĢバムãĢį™ģéŒ˛ã§ããžã›ã‚“", - "home_page_add_to_album_success": "{album}ãĢ{added}æžšå†™įœŸã‚’čŋŊ加しぞした", + "home_page_add_to_album_conflicts": "{album}ãĢ{added}å€‹ãŽå†™įœŸ/動į”ģをčŋŊ加しぞした。čŋŊ加済ãŋぎ{failed}個ぱキップしぞした。", + "home_page_add_to_album_err_local": "ぞだã‚ĸップロãƒŧドされãĻãĒã„å†™įœŸ/動į”ģは、ã‚ĸãƒĢバムãĢčŋŊ加できぞせん", + "home_page_add_to_album_success": "{album}ãĢ{added}å€‹ãŽå†™įœŸ/動į”ģをčŋŊ加しぞした", "home_page_album_err_partner": "ぞだパãƒŧトナãƒŧãŽå†™įœŸã¯ã‚ĸãƒĢバムãĢčŋŊ加できぞせん。゚キップしぞす (ã‚ĸップデãƒŧãƒˆã‚’ãŠåž…ãĄãã ã•ã„)", "home_page_archive_err_local": "ぞだã‚ĸップロãƒŧドされãĻãĒã„é …į›Žã¯ã‚ĸãƒŧã‚Ģイブできぞせん", "home_page_archive_err_partner": "パãƒŧトナãƒŧãŽå†™įœŸã¯ã‚ĸãƒŧã‚Ģイブできぞせん。゚キップしぞす", @@ -1194,9 +1202,10 @@ "in_albums": "{count, plural, one {#äģļぎã‚ĸãƒĢバム} other {#äģļぎã‚ĸãƒĢバム}}ぎ中", "in_archive": "ã‚ĸãƒŧã‚Ģイブ済ãŋ", "in_year": "{year}åš´", + "in_year_selector": "æ’ŽåŊąåš´:", "include_archived": "ã‚ĸãƒŧã‚Ģイブ済ãŋをåĢめる", "include_shared_albums": "å…ąæœ‰ã‚ĸãƒĢバムをåĢめる", - "include_shared_partner_assets": "パãƒŧトナãƒŧãŒã‚ˇã‚§ã‚ĸしたã‚ĸã‚ģットをåĢめる", + "include_shared_partner_assets": "パãƒŧトナãƒŧãŒã‚ˇã‚§ã‚ĸã—ãŸå†™įœŸ/動į”ģをåĢめる", "individual_share": "1æžšãŽå…ąæœ‰", "individual_shares": "1æžšãšã¤ãŽå…ąæœ‰", "info": "æƒ…å ą", @@ -1221,7 +1230,7 @@ "keep": "äŋæŒ", "keep_all": "全ãĻäŋæŒ", "keep_this_delete_others": "これを掋しãĻãģかを削除する", - "kept_this_deleted_others": "こぎã‚ĸã‚ģットを掋しãĻ{count, plural, other {#äģļぎã‚ĸã‚ģット}}を削除する", + "kept_this_deleted_others": "ã“ãŽå†™įœŸ/動į”ģを掋しãĻ{count, plural, other {#äģļ}}を削除する", "keyboard_shortcuts": "キãƒŧボãƒŧãƒ‰ã‚ˇãƒ§ãƒŧトã‚Ģット", "language": "言čĒž", "language_no_results_subtitle": "検į´ĸワãƒŧドを変えãĻãŋãĻください", @@ -1230,6 +1239,7 @@ "language_setting_description": "å„Ēå…ˆč¨€čĒžã‚’é¸æŠžã—ãĻください", "large_files": "大きいã‚ĩイã‚ēãŽãƒ•ã‚Ąã‚¤ãƒĢ", "last": "最垌", + "last_months": "{count, plural, one {過åŽģ1ãƒļ月} other {過åŽģ#ãƒļ月}}", "last_seen": "最新ぎæ´ģ動", "latest_version": "最新バãƒŧã‚¸ãƒ§ãƒŗ", "latitude": "᎝åēĻ", @@ -1239,6 +1249,8 @@ "let_others_respond": "äģ–ぎãƒĻãƒŧã‚ļãƒŧぎčŋ”äŋĄã‚’č¨ąå¯ã™ã‚‹", "level": "ãƒŦベãƒĢ", "library": "ナイブナãƒĒ", + "library_add_folder": "フりãƒĢダãƒŧをčŋŊ加", + "library_edit_folder": "フりãƒĢダãƒŧã‚’įˇ¨é›†", "library_options": "ナイブナãƒĒč¨­åŽš", "library_page_device_albums": "デバイ゚上ぎã‚ĸãƒĢバム", "library_page_new_album": "新しいã‚ĸãƒĢバム", @@ -1317,6 +1329,7 @@ "maintenance_title": "ä¸€æ™‚įš„ãĢåˆŠį”¨ä¸å¯čƒŊ", "make": "ãƒĄãƒŧã‚Ģãƒŧ", "manage_geolocation": "äŊįŊŽæƒ…å ąã‚’įˇ¨é›†", + "manage_media_access_rationale": "é …į›Žã‚’ã‚´ãƒŸįŽąãĢį§ģ動したり、垊元をしたりするためãĢこぎ樊限がåŋ…čĻã§ã™ã€‚", "manage_media_access_settings": "č¨­åŽšã‚’é–‹ã", "manage_media_access_subtitle": "Immichã‚ĸプãƒĒãĢãƒĄãƒ‡ã‚Ŗã‚ĸãƒ•ã‚Ąã‚¤ãƒĢãŽįŽĄį†ã¨į§ģå‹•ã‚’č¨ąå¯ã™ã‚‹ã€‚", "manage_media_access_title": "ãƒĄãƒ‡ã‚Ŗã‚ĸįŽĄį†ã‚ĸクã‚ģ゚", @@ -1383,7 +1396,7 @@ "more": "ã‚‚ãŖã¨čĄ¨į¤ē", "move": "į§ģ動", "move_off_locked_folder": "éĩäģ˜ããƒ•りãƒĢダãƒŧからå‡ēす", - "move_to": "į§ģ動先は", + "move_to": "æŦĄãĢį§ģ動:", "move_to_lock_folder_action_prompt": "{count}é …į›Žã‚’éĩäģ˜ããƒ•りãƒĢダãƒŧãĢčŋŊ加しぞした", "move_to_locked_folder": "éĩäģ˜ããƒ•りãƒĢダãƒŧへį§ģ動", "move_to_locked_folder_confirmation": "ã“ã‚Œã‚‰ãŽå†™įœŸã‚„å‹•į”ģはすずãĻぎã‚ĸãƒĢバムから外され、éĩäģ˜ããƒ•りãƒĢダãƒŧ内でぎãŋ閲čĻ§å¯čƒŊãĢãĒりぞす", @@ -1397,6 +1410,7 @@ "name": "名前", "name_or_nickname": "名前ぞたはニックネãƒŧム", "navigate": "ãƒŠãƒ“ã‚˛ãƒŧト", + "navigate_to_time": "時間ãĢį§ģ動", "network_requirement_photos_upload": "ãƒĸバイãƒĢ通äŋĄã‚’äŊŋį”¨ã—ãĻå†™įœŸãŽãƒãƒƒã‚¯ã‚ĸãƒƒãƒ—ã‚’čĄŒã†", "network_requirement_videos_upload": "ãƒĸバイãƒĢ通äŋĄã‚’äŊŋį”¨ã—ãĻ動į”ģぎバックã‚ĸãƒƒãƒ—ã‚’čĄŒã†", "network_requirements": "ネットワãƒŧクぎčρäģļ", @@ -1435,6 +1449,7 @@ "no_favorites_message": "お気ãĢå…Ĩりį™ģéŒ˛ã™ã‚‹ã¨åĨŊきãĒå†™įœŸã‚„å‹•į”ģをすぐãĢčĻ‹ã¤ã‘ã‚‰ã‚Œãžã™", "no_libraries_message": "あãĒãŸãŽå†™įœŸã‚„å‹•į”ģã‚’čĄ¨į¤ēするためぎ外部ナイブナãƒĒをäŊœæˆã—ぞしょう", "no_local_assets_found": "こぎチェックã‚ĩãƒ ãŽé …į›Žã¯ãƒ‡ãƒã‚¤ã‚šä¸ŠãĢ存在しぞせん", + "no_location_set": "äŊįŊŽæƒ…å ąãŒæŒ‡åŽšã•ã‚ŒãĻいぞせん", "no_locked_photos_message": "éĩäģ˜ããƒ•りãƒĢダãƒŧå†…ãŽå†™įœŸã‚„å‹•į”ģは通常ぎナイブナãƒĒãĢ襨į¤ēされãĒくãĒりぞす。", "no_name": "名前ãĒし", "no_notifications": "通įŸĨãĒし", @@ -1556,6 +1571,7 @@ "photos_count": "{count, plural, one {{count, number}æžšãŽå†™įœŸ} other {{count, number}æžšãŽå†™įœŸ}}", "photos_from_previous_years": "äģĨå‰ãŽåš´ãŽå†™įœŸ", "pick_a_location": "場所を選択", + "pick_custom_range": "期間を指厚", "pick_date_range": "æ—Ĩäģ˜į¯„å›˛ãŽé¸æŠž", "pin_code_changed_successfully": "PINã‚ŗãƒŧドを変更しぞした", "pin_code_reset_successfully": "PINã‚ŗãƒŧドをãƒĒã‚ģットしぞした", @@ -1639,9 +1655,9 @@ "readonly_mode_enabled": "čĒ­ãŋå–ã‚Šå°‚į”¨ãƒĸãƒŧド有劚", "ready_for_upload": "ã‚ĸップロãƒŧドæē–å‚™åތäē†", "reassign": "å†å‰˛ã‚ŠåŊ“ãĻ", - "reassigned_assets_to_existing_person": "{count, plural, one {#個} other {#個}}ぎã‚ĸã‚ģットを{name, select, null {æ—ĸ存ぎäēēį‰Š} other {{name}}}ãĢå†å‰˛ã‚ŠåŊ“ãĻしぞした", - "reassigned_assets_to_new_person": "{count, plural, one {#個} other {#個}}ぎã‚ĸã‚ģットを新しいäēēį‰ŠãĢå‰˛ã‚ŠåŊ“ãĻぞした", - "reassing_hint": "選択されたã‚ĸã‚ģットをæ—ĸ存ぎäēēį‰ŠãĢå‰˛ã‚ŠåŊ“ãĻ", + "reassigned_assets_to_existing_person": "{count, plural, one {#個} other {#個}}ãŽå†™įœŸ/動į”ģを{name, select, null {æ—ĸ存ぎäēēį‰Š} other {{name}}}ãĢå†å‰˛ã‚ŠåŊ“ãĻしぞした", + "reassigned_assets_to_new_person": "{count, plural, one {#個} other {#個}}ãŽå†™įœŸ/動į”ģを新しいäēēį‰ŠãĢå‰˛ã‚ŠåŊ“ãĻぞした", + "reassing_hint": "é¸æŠžã•ã‚ŒãŸå†™įœŸ/動į”ģをæ—ĸ存ぎäēēį‰ŠãĢå‰˛ã‚ŠåŊ“ãĻ", "recent": "最čŋ‘", "recent-albums": "最čŋ‘ぎã‚ĸãƒĢバム", "recent_searches": "最čŋ‘ぎ検į´ĸ", @@ -1664,17 +1680,17 @@ "remote_assets": "ãƒĒãƒĸãƒŧãƒˆãŽé …į›Ž", "remote_media_summary": "ã‚ĩãƒŧバãƒŧä¸ŠãŽãƒĄãƒ‡ã‚Ŗã‚ĸぞとめ", "remove": "削除", - "remove_assets_album_confirmation": "æœŦåŊ“ãĢ{count, plural, one {#個} other {#個}}ぎã‚ĸã‚ģットをã‚ĸãƒĢバムから削除しぞすか?", - "remove_assets_shared_link_confirmation": "æœŦåŊ“ãĢã“ãŽå…ąæœ‰ãƒĒãƒŗã‚¯ã‹ã‚‰{count, plural, one {#個} other {#個}}ぎã‚ĸã‚ģットを削除しぞすか?", - "remove_assets_title": "ã‚ĸã‚ģットを削除しぞすか?", + "remove_assets_album_confirmation": "æœŦåŊ“ãĢ{count, plural, one {#個} other {#個}}ãŽå†™įœŸ/動į”ģをã‚ĸãƒĢバムから削除しぞすか?", + "remove_assets_shared_link_confirmation": "æœŦåŊ“ãĢã“ãŽå…ąæœ‰ãƒĒãƒŗã‚¯ã‹ã‚‰{count, plural, one {#個} other {#個}}ãŽå†™įœŸ/動į”ģを削除しぞすか?", + "remove_assets_title": "å†™įœŸ/動į”ģを削除しぞすか?", "remove_custom_date_range": "ã‚Ģ゚ã‚ŋムæ—Ĩäģ˜į¯„å›˛ã‚’å‰Šé™¤", - "remove_deleted_assets": "ã‚Ēãƒ•ãƒŠã‚¤ãƒŗãŽã‚ĸã‚ģットを削除", + "remove_deleted_assets": "ã‚Ēãƒ•ãƒŠã‚¤ãƒŗãŽå†™įœŸ/動į”ģを削除", "remove_from_album": "ã‚ĸãƒĢバムから削除", "remove_from_album_action_prompt": "{count}é …į›ŽãŒã‚ĸãƒĢバムから除かれぞした", "remove_from_favorites": "お気ãĢå…Ĩã‚Šč§Ŗé™¤", "remove_from_lock_folder_action_prompt": "{count}é …į›Žã‚’éĩäģ˜ããƒ•りãƒĢダãƒŧからå‡ēしぞした", "remove_from_locked_folder": "éĩäģ˜ããƒ•りãƒĢダãƒŧから取り除く", - "remove_from_locked_folder_confirmation": "é¸æŠžã—ãŸå†™įœŸãƒģ動į”ģをéĩäģ˜ããƒ•りãƒĢダãƒŧぎ外ãĢå‡ēしãĻよろしいですかīŧŸãƒŠã‚¤ãƒ–ナãƒĒãĢå†ãŗčĄ¨į¤ēされるようãĢãĒりぞす", + "remove_from_locked_folder_confirmation": "é¸æŠžã—ãŸå†™įœŸ/動į”ģをéĩäģ˜ããƒ•りãƒĢダãƒŧぎ外ãĢå‡ēしãĻよろしいですかīŧŸãƒŠã‚¤ãƒ–ナãƒĒãĢå†ãŗčĄ¨į¤ēされるようãĢãĒりぞす", "remove_from_shared_link": "å…ąæœ‰ãƒĒãƒŗã‚¯ã‹ã‚‰å‰Šé™¤", "remove_memory": "ãƒĄãƒĸãƒĒãƒŧぎ削除", "remove_photo_from_memory": "ãƒĄãƒĸãƒĒãƒŧã‹ã‚‰å†™įœŸã‚’å‰Šé™¤", @@ -1836,7 +1852,7 @@ "set_date_of_birth": "į”Ÿåš´æœˆæ—Ĩã‚’č¨­åŽš", "set_profile_picture": "ãƒ—ãƒ­ãƒ•ã‚ŖãƒŧãƒĢį”ģåƒã‚’č¨­åŽš", "set_slideshow_to_fullscreen": "ã‚šãƒŠã‚¤ãƒ‰ã‚ˇãƒ§ãƒŧをフãƒĢ゚クãƒĒãƒŧãƒŗãĢする", - "set_stack_primary_asset": "プナイマãƒĒã‚ĸã‚ģットとしãĻč¨­åŽš", + "set_stack_primary_asset": "ãƒĄã‚¤ãƒŗãŽå†™įœŸã¨ã—ãĻč¨­åŽš", "setting_image_viewer_help": "å†™įœŸã‚’ã‚ŋップするとã‚ĩムネイãƒĢãƒģ中į”ģčŗĒãƒģã‚ĒãƒĒジナãƒĢぎ順ãĢčĒ­ãŋčžŧãŋぞす", "setting_image_viewer_original_subtitle": "ã‚ĒãƒĒジナãƒĢぎį”ģåƒã‚’čĄ¨į¤ēしたいときãĢã‚ĒãƒŗãĢしãĻください。(最大į”ģčŗĒã§čĄ¨į¤ēされるぎで、デãƒŧã‚ŋとį̝æœĢぎ゚トãƒŦãƒŧジぎæļˆč˛ģ量がåĸ—えぞす)", "setting_image_viewer_original_title": "ã‚ĒãƒĒジナãƒĢをčĒ­ãŋčžŧむ", @@ -1949,6 +1965,7 @@ "show_slideshow_transition": "ã‚šãƒŠã‚¤ãƒ‰ã‚ˇãƒ§ãƒŧãŽãƒˆãƒŠãƒŗã‚¸ã‚ˇãƒ§ãƒŗã‚’čĄ¨į¤ē", "show_supporter_badge": "ã‚ĩポãƒŧã‚ŋãƒŧバッジ", "show_supporter_badge_description": "ã‚ĩポãƒŧã‚ŋãƒŧãƒãƒƒã‚¸ã‚’čĄ¨į¤ē", + "show_text_recognition": "文字čĒč­˜ã‚’čĄ¨į¤ē", "show_text_search_menu": "テキ゚ト検į´ĸãƒĄãƒ‹ãƒĨãƒŧã‚’čĄ¨į¤ē", "shuffle": "ãƒŠãƒŗãƒ€ãƒ ", "sidebar": "ã‚ĩイドバãƒŧ", @@ -2009,16 +2026,17 @@ "sync_status_subtitle": "åŒæœŸã‚ˇã‚šãƒ†ãƒ ã‚’įĸēčĒãƒģįŽĄį†", "sync_upload_album_setting_subtitle": "ã‚ĩãƒŧバãƒŧ上ぎã‚ĸãƒĢバムぎ内厚をį̝æœĢ上ぎã‚ĸãƒĢバムと同期しぞす (ã‚ĩãƒŧバãƒŧãĢã‚ĸãƒĢãƒãƒ ãŒį„Ąã„å ´åˆč‡Ē動でäŊœæˆã•れぞす。ぞた、ã‚ĸップロãƒŧドされãĻいãĒã„å†™įœŸã‚„å‹•į”ģは同期されぞせん)", "tag": "ã‚ŋグäģ˜ã‘する", - "tag_assets": "ã‚ĸã‚ģットãĢã‚ŋグäģ˜ã‘する", + "tag_assets": "å†™įœŸ/動į”ģãĢã‚ŋグäģ˜ã‘する", "tag_created": "ã‚ŋグ: {tag} をäŊœæˆã—ぞした", "tag_feature_description": "æ„å‘ŗã‚’æŒãŸã›ãŸã‚ŋグトでグãƒĢãƒŧプ化しãĻå†™įœŸã¨å‹•į”ģã‚’é–˛čĻ§ã™ã‚‹", "tag_not_found_question": "ã‚ŋグがčĻ‹ã¤ã‹ã‚Šãžã›ã‚“ã‹? ã“ãĄã‚‰ã‹ã‚‰ã‚ŋグをäŊœæˆã§ããžã™", "tag_people": "äēēį‰Šã‚ŋグ", "tag_updated": "ã‚ŋグ: {tag} を更新しぞした", - "tagged_assets": "{count, plural, one {#個ぎã‚ĸã‚ģット} other {#個ぎã‚ĸã‚ģット}}をã‚ŋグäģ˜ã‘しぞした", + "tagged_assets": "{count, plural, one {#個} other {#個}}ãŽå†™įœŸ/動į”ģãĢã‚ŋグäģ˜ã‘しぞした", "tags": "ã‚ŋグ", "tap_to_run_job": "ã‚ŋップでジョブを開始", "template": "ãƒ†ãƒŗãƒ—ãƒŦãƒŧト", + "text_recognition": "文字čĒč­˜", "theme": "テãƒŧマ", "theme_selection": "テãƒŧマ選択", "theme_selection_description": "ブナã‚Ļã‚ļãŽã‚ˇã‚šãƒ†ãƒ č¨­åŽšãĢåŸēãĨいãĻテãƒŧãƒžã‚’æ˜Žč‰˛ãžãŸã¯æš—č‰˛ãĢč‡Ēå‹•įš„ãĢč¨­åŽšã—ãžã™", @@ -2057,7 +2075,7 @@ "trash_action_prompt": "{count}é …į›Žã‚’ã‚´ãƒŸįŽąãĢį§ģ動しぞした", "trash_all": "全ãĻ削除", "trash_count": "{count, number}æžšã‚´ãƒŸįŽąã¸į§ģ動", - "trash_delete_asset": "ã‚ĸã‚ģãƒƒãƒˆã‚’ã‚´ãƒŸįŽąã¸į§ģ動/削除", + "trash_delete_asset": "å†™įœŸ/動į”ģã‚’ã‚´ãƒŸįŽąã¸į§ģ動/削除", "trash_emptied": "ã‚´ãƒŸįŽąã‚’įŠēãĢしぞした", "trash_no_results_message": "ã‚´ãƒŸįŽąãĢį§ģå‹•ã—ãŸå†™įœŸã‚„å‹•į”ģがここãĢ襨į¤ēされぞす。", "trash_page_delete_all": "すずãĻ削除", @@ -2097,7 +2115,7 @@ "unselect_all_in": "{group}ぎすずãĻãŽé¸æŠžã‚’č§Ŗé™¤", "unstack": "゚ã‚ŋãƒƒã‚¯ã‚’č§Ŗé™¤", "unstack_action_prompt": "{count}é …į›ŽãŽé‡ã­åˆã‚ã›ã‚’č§Ŗé™¤", - "unstacked_assets_count": "{count, plural, one {#個ぎã‚ĸã‚ģット} other {#個ぎã‚ĸã‚ģット}}を゚ã‚ŋãƒƒã‚¯ã‹ã‚‰č§Ŗé™¤ã—ãžã—ãŸ", + "unstacked_assets_count": "{count, plural, one {#個} other {#個}}ãŽå†™įœŸ/動į”ģを゚ã‚ŋãƒƒã‚¯ã‹ã‚‰č§Ŗé™¤ã—ãžã—ãŸ", "untagged": "ã‚ŋã‚°ã‚’č§Ŗé™¤", "up_next": "æŦĄã¸", "update_location_action_prompt": "{count}é …į›Žã‚’åŗč¨˜ãŽäŊįŊŽæƒ…å ąãĢã‚ĸップデãƒŧトしぞす:", @@ -2112,11 +2130,11 @@ "upload_errors": "ã‚ĸップロãƒŧドは{count, plural, one {#個} other {#個}}ぎエナãƒŧで厌äē†ã—ぞした、新しくã‚ĸップロãƒŧドされたã‚ĸã‚ģットをčĻ‹ã‚‹ãĢはペãƒŧジを更新しãĻください。", "upload_finished": "ã‚ĸップロãƒŧド厌äē†", "upload_progress": "掋り {remaining, number} - {processed, number}/{total, number} å‡Ļį†æ¸ˆãŋ", - "upload_skipped_duplicates": "{count, plural, one {#個} other {#個}}ãŽé‡č¤‡ã‚ĸã‚ģットを゚キップしぞした", + "upload_skipped_duplicates": "{count, plural, one {#個} other {#個}}ãŽé‡č¤‡ã—ãŸå†™įœŸ/動į”ģを゚キップしぞした", "upload_status_duplicates": "重複", "upload_status_errors": "エナãƒŧ", "upload_status_uploaded": "ã‚ĸップロãƒŧド済", - "upload_success": "ã‚ĸップロãƒŧド成功、新しくã‚ĸップロãƒŧドされたã‚ĸã‚ģットをčĻ‹ã‚‹ãĢはペãƒŧジを更新しãĻください。", + "upload_success": "ã‚ĸップロãƒŧド成功、新しくã‚ĸップロãƒŧãƒ‰ã•ã‚ŒãŸå†™įœŸ/動į”ģをčĻ‹ã‚‹ãĢはペãƒŧジを更新しãĻください。", "upload_to_immich": "ImmichãĢã‚ĸップロãƒŧド ({count})", "uploading": "ã‚ĸップロãƒŧド中", "uploading_media": "ãƒĄãƒ‡ã‚Ŗã‚ĸをã‚ĸップロãƒŧド中", @@ -2164,8 +2182,8 @@ "view_link": "ãƒĒãƒŗã‚¯ã‚’čĻ‹ã‚‹", "view_links": "ãƒĒãƒŗã‚¯ã‚’įĸēčĒã™ã‚‹", "view_name": "åˆ†éĄž", - "view_next_asset": "æŦĄãŽã‚ĸã‚ģットをčĻ‹ã‚‹", - "view_previous_asset": "前ぎã‚ĸã‚ģットをčĻ‹ã‚‹", + "view_next_asset": "æŦĄãŽå†™įœŸ/動į”ģをčĻ‹ã‚‹", + "view_previous_asset": "å‰ãŽå†™įœŸ/動į”ģをčĻ‹ã‚‹", "view_qr_code": "QRã‚ŗãƒŧドをčĻ‹ã‚‹", "view_similar_photos": "類äŧŧã™ã‚‹å†™įœŸã‚’čĻ‹ã‚‹", "view_stack": "ビãƒĨãƒŧ゚ã‚ŋック", diff --git a/i18n/ka.json b/i18n/ka.json index c756b9b708..dd15cdd721 100644 --- a/i18n/ka.json +++ b/i18n/ka.json @@ -15,6 +15,7 @@ "add_a_name": "დაამაáƒĸე სახელი", "add_a_title": "áƒ“áƒáƒáƒĄáƒáƒ—áƒáƒŖáƒ áƒ”", "add_birthday": "დაბადების დáƒĻიქ დამაáƒĸება", + "add_endpoint": "ბოლოáƒŦერáƒĸილის დამაáƒĸება", "add_exclusion_pattern": "დაამაáƒĸე გამონაკლისი áƒœáƒ˜áƒ›áƒŖáƒ¨áƒ˜", "add_location": "დაამაáƒĸე ადგილი", "add_more_users": "დაამაáƒĸე მომხმარებლები", @@ -56,7 +57,6 @@ "create_job": "შეáƒĨმენი დავალება", "cron_expression": "Cron áƒ’áƒáƒ›áƒáƒĄáƒáƒŽáƒŖáƒšáƒ”áƒ‘áƒ", "disable_login": "გამორთე ავáƒĸორიზაáƒĒია", - "external_library_management": "გარე ბიბლიოთეკების მართვა", "face_detection": "ქა჎იქ ამოáƒĒნობა", "image_format": "ფორმაáƒĸი", "image_format_description": "WebP ფორმაáƒĸი JPEG-ზე პაáƒĸარა ფაილებს აáƒŦარმოებს, მაგრამ მის დამზადებას áƒŖáƒ¤áƒ áƒ მეáƒĸი დრო სჭირდება.", diff --git a/i18n/km.json b/i18n/km.json index 0967ef424b..4a90cf5e38 100644 --- a/i18n/km.json +++ b/i18n/km.json @@ -1 +1,56 @@ -{} +{ + "about": "ážĸំពី", + "account": "គណនី", + "account_settings": "កážļរកំណត់គណនី", + "acknowledge": "បážļនដឹងនិងទទážŊលស្គážļល់", + "action": "សកម្មភážļព", + "action_common_update": "ធ្វើបច្ចážģប្បន្នភážļព", + "actions": "សកម្មភážļពផ្សេងៗ", + "active": "កំពážģងសកម្ម", + "active_count": "ដំណើរកážļរ :{count}", + "activity": "សកម្មភážļពផ្សេងៗ", + "add": "បន្ថែម", + "add_a_description": "បន្ថែមកážļរពិពណ៌នážļ", + "add_a_location": "បន្ថែមទីតážļំង", + "add_a_name": "បន្ងែមឈ្មោះ", + "add_a_title": "បន្ងែមចំណងជើង", + "add_birthday": "បន្ថែមថ្ងៃខែឆ្មážļំកំណើត", + "add_endpoint": "បន្ថែម Endpoint", + "add_exclusion_pattern": "បន្ថែមលំនážļំលើកលែង", + "add_location": "បន្ថែមទីតážļំង", + "add_more_users": "បន្ថែមážĸ្នកប្រើប្រážļស់", + "add_partner": "បន្ថែមដៃគážŧ", + "add_path": "បន្លែម 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": "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", + "added_to_archive": "បážļនបន្ថែមទៅក្នážģងបណ្ណសážļរ", + "added_to_favorites": "បážļនបន្ថែមទៅក្នážģងចំណង់ចំណážŧលចិត្ត", + "added_to_favorites_count": "បážļនបន្ថែម {count, number} ទៅក្នážģងចំណង់ចំណážŧលចិត្ត", + "admin": { + "admin_user": "ážĸ្នកប្រើប្រážļស់ážĸេតមីន", + "asset_offline_description": "Asset ​បណ្ណážļល័យ​ខážļង​ក្រៅ​នេះ​លែង​ត្រážŧវ​បážļន​រក​ឃើញ​នៅ​លើ​ថážļស​ហើយ​ត្រážŧវ​បážļន​ផ្លážļស់ទី​តážļំងទៅ​ធážģង​សំរážļម។ áž”áŸ’ážšážŸážˇáž“áž”ážžáž¯áž€ážŸážļរត្រážŧវបážļនផ្លážļស់ទីក្នážģងបណ្ណážļល័យ, សážŧមពិនិត្យមើលកážļរកំណត់ពេលវេលážļរបស់ážĸ្នកសម្រážļប់ Asset ដែលត្រážŧវគ្នážļថ្មី។ ដើម្បីស្ដážļរ Asset នេះឡើងវិញ សážŧមប្រážļកដថážļ Path ឯកសážļរខážļងក្រោមážĸážļចចážŧលប្រើបážļនដោយ Immich និងស្កេនបណ្ណážļល័យបážļន។", + "authentication_settings": "កážļរកំណត់កážļរផ្ទៀងផ្ទážļត់", + "authentication_settings_description": "គ្រប់គ្រងពážļក្យសំងážļត់, OAuth, និងកážļរកំណត់កážļរផ្ទៀងផ្ទážļត់ផ្សេងៗទៀត", + "authentication_settings_disable_all": "តើážĸ្នកប្រážļកដថážļចង់បិទវិធីសážļស្ត្រចážŧលទážļំងážĸស់មែនទេ? កážļរចážŧលនឹងត្រážŧវបážļនបិទទážļំងស្រážģង។", + "authentication_settings_reenable": "ដើម្បីបើកដំណើរកážļរឡើងវិញ, សážŧមប្រើServer Command។", + "background_task_job": "កិច្ចកážļរផ្ទៃខážļងក្រោយ", + "backup_database": "បង្កើតមážŧលដ្ឋážļនទិន្នន័យ​ Dump", + "backup_database_enable_description": "បើកមážŧលដ្ឋážļនទិន្នន័យ Dumps", + "backup_keep_last_amount": "ចំនážŊននៃ Dumps ពីមážģនដែលត្រážŧវរក្សážļទážģក", + "backup_onboarding_1_description": "ច្បážļប់ចម្លងក្រៅបណ្តážļញនៅក្នážģងពពក ážŦនៅកន្លែងផ្សេងទៀត។", + "backup_onboarding_2_description": "ឯកសážļរចម្លងនៅលើឧបករណ៍ផ្សេងៗ។ នេះរážŊមបញ្ចážŧលទážļំងឯកសážļរសំខážļន់ៗ និងកážļរបម្រážģងទážģកនៃឯកសážļរទážļំងនោះ។", + "backup_onboarding_3_description": "ចំនážŊនឯកសážļរចម្លងនៃទិន្នន័យរបស់ážĸ្នក, រážŊមបញ្ចážŧលទážļំងឯកសážļរដើម។ នេះរážŊមបញ្ចážŧលទážļំងច្បážļប់ចម្លងក្រៅបណ្តážļញ 1 និងច្បážļប់ចម្លងខážļងក្រៅ 2 ។" + } +} diff --git a/i18n/ko.json b/i18n/ko.json index 782069b939..d13416684b 100644 --- a/i18n/ko.json +++ b/i18n/ko.json @@ -7,6 +7,7 @@ "action_common_update": "ė—…ë°ė´íŠ¸", "actions": "ėž‘ė—…", "active": "í™œė„ą", + "active_count": "í™œė„ą: {count}", "activity": "활동", "activity_changed": "í™œë™ė´ {enabled, select, true {í™œė„ąí™”} other {ëš„í™œė„ąí™”}}ë˜ė—ˆėŠĩ니다.", "add": "ėļ”ę°€", @@ -31,6 +32,7 @@ "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 ėļ”ę°€", @@ -66,6 +68,7 @@ "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 í‘œí˜„ė‹", "cron_expression_description": "Cron í‘œí˜„ė‹ėœŧ로 늤ėē” ėŖŧ기ëĨŧ ė„¤ė •í•Šë‹ˆë‹¤. ėžė„¸í•œ ë‚´ėšŠė€ ë‹¤ėŒ 링íŦëĨŧ í™•ė¸í•˜ė„¸ėš”. Crontab Guru", @@ -73,7 +76,7 @@ "disable_login": "ëĄœęˇ¸ė¸ ëš„í™œė„ąí™”", "duplicate_detection_job_description": "揰溄 학ėŠĩėœŧ로 뜠ė‚Ŧ한 ė´ë¯¸ė§€ëĨŧ ę°ė§€í•Šë‹ˆë‹¤. ėŠ¤ë§ˆíŠ¸ ę˛€ėƒ‰ė´ í™œė„ąí™”ë˜ė–´ ėžˆė–´ė•ŧ 합니다.", "exclusion_pattern_description": "ëŧė´ë¸ŒëŸŦëĻŦ 늤ėē”ė—ė„œ ė œė™¸í•  파ėŧė´ë‚˜ 폴더 ęˇœėš™ė„ ė„¤ė •í•Šë‹ˆë‹¤. í´ë”ė— ė›í•˜ė§€ ė•ŠëŠ” 파ėŧ(RAW 파ėŧ 등)ė´ 함ęģ˜ ėĄ´ėžŦ하는 ę˛Ŋ뚰 ėœ ėšŠí•Šë‹ˆë‹¤.", - "external_library_management": "뙏ëļ€ ëŧė´ë¸ŒëŸŦëĻŦ 관ëĻŦ", + "export_config_as_json_description": "현ėžŦ ė‹œėŠ¤í…œ ęĩŦė„ąė„ JSON 파ėŧ로 ë‹¤ėš´ëĄœë“œí•Šë‹ˆë‹¤.", "face_detection": "ė–ŧęĩ´ 氐맀", "face_detection_description": "揰溄 학ėŠĩėœŧ로 항ëĒŠė—ė„œ ė–ŧęĩ´ė„ ę°ė§€í•Šë‹ˆë‹¤. ë™ė˜ėƒė˜ ę˛Ŋ뚰 ė„Ŧ네ėŧ만 ëļ„ė„ė— ė‚ŦėšŠëŠë‹ˆë‹¤. \"ėƒˆëĄœęŗ ėš¨\"ė€ ëĒ¨ë“  항ëĒŠė„ (ėžŦ)래ëĻŦ하며, \"ė´ˆę¸°í™”\"는 현ėžŦ ëĒ¨ë“  ė–ŧęĩ´ ë°ė´í„°ëĨŧ ėļ”ę°€ëĄœ ė‚­ė œí•Šë‹ˆë‹¤. \"누ëŊ\"ė€ 땄링 래ëĻŦë˜ė§€ ė•Šė€ 항ëĒŠė„ ëŒ€ę¸°ė—´ė— ėļ”ę°€í•Šë‹ˆë‹¤. ė–ŧęĩ´ 氐맀氀 ė™„ëŖŒë˜ëŠ´ ė–ŧęĩ´ ė¸ė‹ ë‹¨ęŗ„ëĄœ ë„˜ė–´ę°€ ę¸°ėĄ´ ė¸ëŦŧė´ë‚˜ ėƒˆëĄœėš´ ė¸ëŦŧ로 ęˇ¸ëŖší™”í•Šë‹ˆë‹¤.", "facial_recognition_job_description": "ę°ė§€ëœ ė–ŧęĩ´ė„ ė¸ëŦŧëŗ„ëĄœ ęˇ¸ëŖší™”í•Šë‹ˆë‹¤. ė´ ėž‘ė—…ė€ ė–ŧęĩ´ 氐맀 ėž‘ė—…ė´ ė™„ëŖŒëœ 후 ė§„í–‰ëŠë‹ˆë‹¤. \"ė´ˆę¸°í™”\"는 ëĒ¨ë“  ė–ŧęĩ´ė„ ë‹¤ė‹œ ęˇ¸ëŖší™”í•Šë‹ˆë‹¤. \"누ëŊ\"ė€ ęˇ¸ëŖší™”ë˜ė§€ ė•Šė€ ė–ŧęĩ´ė„ ëŒ€ę¸°ė—´ė— ėļ”ę°€í•Šë‹ˆë‹¤.", @@ -101,22 +104,26 @@ "image_thumbnail_description": "ëŠ”íƒ€ë°ė´í„°ę°€ ė œęą°ëœ ėž‘ė€ ė„Ŧ네ėŧ. ëŠ”ė¸ íƒ€ėž„ëŧė¸ ë“ąė—ė„œ ė—ŦëŸŦ ė‚Ŧė§„ė„ í‘œė‹œí•  때 ė‚ŦėšŠëŠë‹ˆë‹¤.", "image_thumbnail_quality_description": "ė„Ŧ네ėŧ í’ˆė§ˆė„ 1ė—ė„œ 100 ė‚Ŧė´ëĄœ ė„¤ė •í•Šë‹ˆë‹¤. ę°’ė„ ë†’ė´ëŠ´ í’ˆė§ˆė´ ėĸ‹ė•„ė§€ė§€ë§Œ 파ėŧ íŦ기가 ėģ¤ė§€ęŗ  ė•ą ë°˜ė‘ ė†ë„ę°€ ëŠë ¤ė§ˆ 눘 ėžˆėŠĩ니다.", "image_thumbnail_title": "ė„Ŧ네ėŧ 네렕", + "import_config_from_json_description": "JSON 파ėŧė„ ė—…ëĄœë“œí•˜ė—Ŧ ė‹œėŠ¤í…œ ęĩŦė„ąė„ 氀렏ė˜ĩ니다.", "job_concurrency": "{job} ë™ė‹œė„ą", "job_created": "ėž‘ė—…ė´ ėƒė„ąë˜ė—ˆėŠĩ니다.", "job_not_concurrency_safe": "ė´ ėž‘ė—…ė€ ë™ė‹œ ė‹¤í–‰ė— ė•ˆė „í•˜ė§€ ė•ŠėŠĩ니다.", "job_settings": "ėž‘ė—… 네렕", "job_settings_description": "각 ėž‘ė—…ė—ė„œ ë™ė‹œė— 래ëĻŦ할 항ëĒŠ 눘ëĨŧ ė§€ė •í•Šë‹ˆë‹¤.", - "job_status": "ėž‘ė—… ėƒíƒœ", "jobs_delayed": "{jobCount, plural, other {#氜}} 맀뗰", "jobs_failed": "{jobCount, plural, other {#氜}} ė‹¤íŒ¨", "library_created": "{library} ëŧė´ë¸ŒëŸŦëĻŦëĨŧ ėƒė„ąí–ˆėŠĩ니다.", "library_deleted": "ëŧė´ë¸ŒëŸŦëĻŦ가 ė‚­ė œë˜ė—ˆėŠĩ니다.", + "library_details": "ëŧė´ë¸ŒëŸŦëĻŦ ėƒė„¸", + "library_folder_description": "氀렏ė˜Ŧ 폴더ëĨŧ ė§€ė •í•Šë‹ˆë‹¤. 해당 폴더ëĨŧ íŦ함한 ëĒ¨ë“  í•˜ėœ„ í´ë”ė—ė„œ ė´ë¯¸ė§€ 및 ë™ė˜ėƒė„ 늤ėē”핊니다.", + "library_remove_exclusion_pattern_prompt": "ė´ ė œė™¸ ęˇœėš™ė„ ė‚­ė œí•˜ė‹œę˛ ėŠĩ니까?", "library_scanning": "ėŖŧę¸°ė ė¸ 늤ėē”", "library_scanning_description": "ėŖŧę¸°ė ė¸ ëŧė´ë¸ŒëŸŦëĻŦ 늤ėē”ė„ ęĩŦė„ąí•Šë‹ˆë‹¤.", "library_scanning_enable_description": "ėŖŧę¸°ė ė¸ ëŧė´ë¸ŒëŸŦëĻŦ 늤ėē” í™œė„ąí™”", "library_settings": "뙏ëļ€ ëŧė´ë¸ŒëŸŦëĻŦ", "library_settings_description": "뙏ëļ€ ëŧė´ë¸ŒëŸŦëĻŦ 늤ėē” ë° ę°ė‹œ 기ëŠĨė„ ė„¤ė •í•Šë‹ˆë‹¤.", "library_tasks_description": "뙏ëļ€ ëŧė´ë¸ŒëŸŦëĻŦė—ė„œ 냈 항ëĒŠ 또는 ëŗ€ę˛Ŋ된 항ëĒŠė„ 늤ėē”", + "library_updated": "ëŧė´ë¸ŒëŸŦëĻŦ ė—…ë°ė´íŠ¸ë¨", "library_watching_enable_description": "뙏ëļ€ ëŧė´ë¸ŒëŸŦëĻŦ 파ėŧ ëŗ€ę˛Ŋ ę°ė‹œ", "library_watching_settings": "ëŧė´ë¸ŒëŸŦëĻŦ ę°ė‹œ (ė‹¤í—˜ė )", "library_watching_settings_description": "ëŗ€ę˛Ŋ된 파ėŧė„ ėžë™ėœŧ로 ę°ė‹œí•Šë‹ˆë‹¤.", @@ -155,8 +162,15 @@ "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_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": "揰溄 학ėŠĩ 네렕", "machine_learning_settings_description": "揰溄 학ėŠĩ ė‹œ ė‚ŦėšŠí•  ëĒ¨ë¸ęŗŧ 넏ëļ€ ė„¤ė •ė„ 관ëĻŦ합니다.", "machine_learning_smart_search": "ėŠ¤ë§ˆíŠ¸ ę˛€ėƒ‰", @@ -254,10 +268,13 @@ "password_settings_description": "비밀번호 ëĄœęˇ¸ė¸ ė„¤ė •ė„ 관ëĻŦ합니다.", "paths_validated_successfully": "ëĒ¨ë“  ę˛Ŋ로가 검ėĻë˜ė—ˆėŠĩ니다.", "person_cleanup_job": "ė¸ëŦŧ ė •ëĻŦ", + "queue_details": "ëŒ€ę¸°ė—´ ėƒė„¸", + "queues": "ėž‘ė—… ëŒ€ę¸°ė—´", "quota_size_gib": "할당량 (GiB)", "refreshing_all_libraries": "ëĒ¨ë“  ëŧė´ë¸ŒëŸŦëĻŦëĨŧ ėƒˆëĄœęŗ ėš¨í•Šë‹ˆë‹¤.", "registration": "관ëĻŦėž 등록", "registration_description": "ė˛Ģ ë˛ˆė§¸ ė‚ŦėšŠėžė´ë¯€ëĄœ 관ëĻŦėž ęļŒí•œė´ ëļ€ė—Ŧ됩니다. 관ëĻŦ ėž‘ė—… 및 ė‚ŦėšŠėž ėƒė„ąė´ 가ëŠĨ합니다.", + "remove_failed_jobs": "ė‹¤íŒ¨í•œ ėž‘ė—… ė‚­ė œ", "require_password_change_on_login": "ėĩœė´ˆ ëĄœęˇ¸ė¸ ė‹œ 비밀번호 ëŗ€ę˛Ŋ ėš”ęĩŦ", "reset_settings_to_default": "ė„¤ė •ė„ ę¸°ëŗ¸ę°’ėœŧ로 ëŗĩ뛐", "reset_settings_to_recent_saved": "ë§ˆė§€ë§‰ė— ė €ėžĨ된 네렕ėœŧ로 ëŗĩ뛐", @@ -390,7 +407,6 @@ "user_restore_scheduled_removal": "{date, date, long}뗐 똈ė•Ŋ된 ė‚ŦėšŠėž ė‚­ė œ ėˇ¨ė†Œ", "user_settings": "ė‚ŦėšŠėž 네렕", "user_settings_description": "ė‚ŦėšŠėž ė„¤ė •ė„ 관ëĻŦ합니다.", - "user_successfully_removed": "ė‚ŦėšŠėž({email})가 ė œęą°ë˜ė—ˆėŠĩ니다.", "version_check_enabled_description": "ë˛„ė „ í™•ė¸ í™œė„ąí™”", "version_check_implications": "ėŖŧ揰렁ėœŧ로 Github뗐 ėš”ė˛­ė„ ëŗ´ë‚´ 냈 ë˛„ė „ė„ í™•ė¸í•Šë‹ˆë‹¤.", "version_check_settings": "ë˛„ė „ í™•ė¸", @@ -421,6 +437,7 @@ "age_months": "ėƒí›„ {months, plural, one {#ę°œė›”} other {#ę°œė›”}}", "age_year_months": "ėƒí›„ 1년 {months, plural, one {#ę°œė›”} other {#ę°œė›”}}", "age_years": "{years, plural, other {#넏}}", + "album": "ė•¨ë˛”", "album_added": "ęŗĩ뜠 ė•¨ë˛” ė´ˆëŒ€", "album_added_notification_setting_description": "ęŗĩ뜠 ė•¨ë˛”ė— ėļ”ę°€ëœ ę˛Ŋ뚰 ė´ëŠ”ėŧ ė•ŒëĻŧ 받기", "album_cover_updated": "ė•¨ë˛” ėģ¤ë˛„ ė—…ë°ė´íŠ¸ë¨", @@ -466,6 +483,7 @@ "allow_edits": "íŽ¸ė§‘ėžëĄœ 네렕", "allow_public_user_to_download": "ëĒ¨ë“  ė‚ŦėšŠėžė˜ ë‹¤ėš´ëĄœë“œ í—ˆėšŠ", "allow_public_user_to_upload": "ëĒ¨ë“  ė‚ŦėšŠėžė˜ ė—…ëĄœë“œ í—ˆėšŠ", + "allowed": "í—ˆėšŠë¨", "alt_text_qr_code": "QR ėŊ”드 ė´ë¯¸ė§€", "anti_clockwise": "ë°˜ė‹œęŗ„ ë°Ší–Ĩ", "api_key": "API 키", @@ -621,6 +639,7 @@ "backup_options_page_title": "ë°ąė—… ė˜ĩė…˜", "backup_setting_subtitle": "밹꡸ëŧėš´ë“œ 및 íŦ꡸ëŧėš´ë“œ ë°ąė—… ė„¤ė •ė„ 관ëĻŦ합니다.", "backup_settings_subtitle": "ė—…ëĄœë“œ ė„¤ė •ė„ 관ëĻŦ합니다.", + "backup_upload_details_page_more_details": "탭하ė—Ŧ ėƒė„¸ëŗ´ę¸°", "backward": "뒤로", "biometric_auth_enabled": "ėƒė˛´ ė¸ėĻė´ í™œė„ąí™”ë˜ė—ˆėŠĩ니다.", "biometric_locked_out": "ėƒė˛´ ė¸ėĻė´ ėŧė‹œė ėœŧ로 ëš„í™œė„ąí™”ë˜ė—ˆėŠĩ니다.", @@ -673,6 +692,7 @@ "change_password_description": "ė˛˜ėŒ ëĄœęˇ¸ė¸í•˜ęą°ë‚˜ 비밀번호 ė´ˆę¸°í™” ėš”ė˛­ė´ ėžˆėŠĩ니다. 냈 비밀번호ëĨŧ ėž…ë Ĩí•˜ė„¸ėš”.", "change_password_form_confirm_password": "현ėžŦ 비밀번호 ėž…ë Ĩ", "change_password_form_description": "ė•ˆë…•í•˜ė„¸ėš” {name}님,\n\nė˛˜ėŒ ëĄœęˇ¸ė¸í•˜ęą°ë‚˜ 비밀번호 ė´ˆę¸°í™” ėš”ė˛­ė´ ėžˆėŠĩ니다. 냈 비밀번호ëĨŧ ėž…ë Ĩí•˜ė„¸ėš”.", + "change_password_form_log_out": "다ëĨ¸ ëĒ¨ë“  ę¸°ę¸°ė—ė„œ ëĄœęˇ¸ė•„ė›ƒ", "change_password_form_new_password": "냈 비밀번호 ėž…ë Ĩ", "change_password_form_password_mismatch": "비밀번호가 ėŧėš˜í•˜ė§€ ė•ŠėŠĩ니다.", "change_password_form_reenter_new_password": "냈 비밀번호 í™•ė¸", @@ -685,6 +705,7 @@ "check_corrupt_asset_backup_button": "í™•ė¸ ėˆ˜í–‰", "check_corrupt_asset_backup_description": "ė´ 검ė‚Ŧ는 ëĒ¨ë“  항ëĒŠė´ ë°ąė—…ëœ 후 Wi-Fi가 ė—°ę˛°ëœ ėƒíƒœė—ė„œë§Œ ė‹¤í–‰í•˜ė„¸ėš”. ė´ ėž‘ė—…ė€ ëLJ ëļ„ ė •ë„ ė†Œėš”ë  눘 ėžˆėŠĩ니다.", "check_logs": "로그 í™•ė¸", + "checksum": "랴íŦė„Ŧ", "choose_matching_people_to_merge": "ëŗ‘í•Ší•  ė¸ëŦŧ ė„ íƒ", "city": "ë„ė‹œ", "clear": "ė§€ėš°ę¸°", @@ -954,6 +975,7 @@ "failed_to_unstack_assets": "항ëĒŠ ėŠ¤íƒ í’€ę¸°ė— ė‹¤íŒ¨í–ˆėŠĩ니다.", "failed_to_update_notification_status": "ė•ŒëĻŧ ėƒíƒœ ė—…ë°ė´íŠ¸ ė‹¤íŒ¨", "incorrect_email_or_password": "ėž˜ëĒģ된 ė´ëŠ”ėŧ 또는 비밀번호", + "library_folder_already_exists": "氀렏ė˜Ŧ ę˛Ŋ로가 ė´ë¯¸ ėĄ´ėžŦ합니다.", "paths_validation_failed": "{paths, plural, one {ę˛Ŋ로 #氜} other {ę˛Ŋ로 #氜}}가 ėœ íš¨ė„ą 검ė‚Ŧ뗐 ė‹¤íŒ¨í–ˆėŠĩ니다.", "profile_picture_transparent_pixels": "프로필 ė‚Ŧ맄뗐 íˆŦëĒ… í”Ŋė…€ė„ ė‚ŦėšŠí•  눘 ė—†ėŠĩ니다. ė‚Ŧė§„ė„ 확대하거나 ė´ë™í•˜ė„¸ėš”.", "quota_higher_than_disk_size": "í• ë‹šëŸ‰ė€ ë””ėŠ¤íŦ íŦę¸°ëŗ´ë‹¤ ėž‘ė•„ė•ŧ 합니다.", @@ -1038,6 +1060,7 @@ "unable_to_update_user": "ė‚ŦėšŠėžëĨŧ ė—…ë°ė´íŠ¸í•  눘 ė—†ėŠĩ니다.", "unable_to_upload_file": "파ėŧė„ ė—…ëĄœë“œí•  눘 ė—†ėŠĩ니다." }, + "exclusion_pattern": "ė œė™¸ ęˇœėš™", "exif": "EXIF", "exif_bottom_sheet_description": "네ëĒ… ėļ”ę°€...", "exif_bottom_sheet_description_error": "네ëĒ… ëŗ€ę˛Ŋ 뤑 똤ëĨ˜ ë°œėƒ", @@ -1068,6 +1091,7 @@ "external_network_sheet_info": "ė„ í˜¸í•˜ëŠ” Wi-Fi ë„¤íŠ¸ė›ŒíŦ뗐 ė—°ę˛°ë˜ė–´ ėžˆė§€ ė•Šė€ ę˛Ŋ뚰, ė•ąė€ ė•„ëž˜ ë‚˜ė—´ëœ URL 뤑 ėœ„ė—ė„œëļ€í„° ėˆœė„œëŒ€ëĄœ ė‚ŦėšŠ 가ëŠĨ한 ė˛Ģ ë˛ˆė§¸ URLė„ ė‚ŦėšŠí•˜ė—Ŧ ė—°ę˛°í•Šë‹ˆë‹¤.", "face_unassigned": "ė•Œ 눘 ė—†ėŒ", "failed": "ė‹¤íŒ¨í•¨", + "failed_count": "ė‹¤íŒ¨: {count}", "failed_to_authenticate": "ė¸ėĻė— ė‹¤íŒ¨í–ˆėŠĩ니다.", "failed_to_load_assets": "항ëĒŠ 로드 ė‹¤íŒ¨", "failed_to_load_folder": "폴더 로드 ė‹¤íŒ¨", @@ -1082,6 +1106,7 @@ "features_setting_description": "ė‚Ŧė§„ 및 ë™ė˜ėƒ 관ëĻŦ 기ëŠĨė„ ė„¤ė •í•Šë‹ˆë‹¤.", "file_name": "파ėŧ ė´ëĻ„", "file_name_or_extension": "파ėŧëĒ… 또는 확ėžĨėž", + "file_size": "파ėŧ íŦ기", "filename": "파ėŧëĒ…", "filetype": "파ėŧ í˜•ė‹", "filter": "필터", @@ -1096,6 +1121,7 @@ "folders_feature_description": "파ėŧ ė‹œėŠ¤í…œė˜ ė‚Ŧė§„ęŗŧ ë™ė˜ėƒė„ 폴더 ëŗ´ę¸°ëĄœ íƒėƒ‰í•Šë‹ˆë‹¤.", "forgot_pin_code_question": "PIN 번호ëĨŧ ėžŠė–´ë˛„ë ¸ë‚˜ėš”?", "forward": "ė•žėœŧ로", + "full_path": "렄랴 ę˛Ŋ로: {path}", "gcast_enabled": "ęĩŦ글 ėēėŠ¤íŠ¸", "gcast_enabled_description": "ė´ 기ëŠĨė€ Googleė˜ 뙏ëļ€ ëĻŦė†ŒėŠ¤ëĨŧ ė‚ŦėšŠí•Šë‹ˆë‹¤.", "general": "ėŧ반", @@ -1126,6 +1152,7 @@ "header_settings_header_name_input": "헤더 ė´ëĻ„", "header_settings_header_value_input": "헤더 값", "headers_settings_tile_title": "ė‚ŦėšŠėž 맀렕 í”„ëĄė‹œ 헤더", + "height": "ë†’ė´", "hi_user": "ė•ˆë…•í•˜ė„¸ėš” {name}님, ({email})", "hide_all_people": "ëĒ¨ë“  ė¸ëŦŧ 눍揰揰", "hide_gallery": "ę°¤ëŸŦëĻŦ 눍揰揰", @@ -1177,6 +1204,7 @@ "import_path": "氀렏ė˜Ŧ ę˛Ŋ로", "in_albums": "íŦ함된 ė•¨ë˛” {count, plural, one {#氜} other {#氜}}", "in_archive": "ëŗ´ę´€ëœ 항ëĒŠ", + "in_year": "{year}년도", "include_archived": "ëŗ´ę´€ëœ 항ëĒŠ íŦ함", "include_shared_albums": "ęŗĩ뜠 ė•¨ë˛” íŦ함", "include_shared_partner_assets": "파트너가 ęŗĩėœ í•œ 항ëĒŠ íŦ함", @@ -1198,7 +1226,7 @@ "ios_debug_info_no_processes_queued": "대기 ė¤‘ė¸ 밹꡸ëŧėš´ë“œ ėž‘ė—… ė—†ėŒ", "ios_debug_info_no_sync_yet": "밹꡸ëŧėš´ë“œ 동기화 ėž‘ė—…ė´ 땄링 ė‹¤í–‰ë˜ė§€ ė•ŠėŒ", "ios_debug_info_processes_queued": "{count, plural, one {밹꡸ëŧėš´ë“œ ėž‘ė—… {count}氜 대기 뤑} other {밹꡸ëŧėš´ë“œ ėž‘ė—… {count}氜 대기 뤑}}", - "ios_debug_info_processing_ran_at": "{dateTime}뗐 ė§„í–‰ë¨", + "ios_debug_info_processing_ran_at": "{dateTime}뗐 래ëĻŦ됨", "items_count": "{count, plural, one {#氜} other {#氜}} 항ëĒŠ", "jobs": "ėž‘ė—…", "keep": "ėœ ė§€", @@ -1213,6 +1241,7 @@ "language_setting_description": "ė‚ŦėšŠí•  떏떴ëĨŧ ė„ íƒí•˜ė„¸ėš”.", "large_files": "큰 파ėŧ", "last": "ë§ˆė§€ë§‰", + "last_months": "{count, plural, one {ė§€ë‚œ 1ę°œė›”} other {ė§€ë‚œ#ę°œė›”}}", "last_seen": "ėĩœęˇŧ 활동", "latest_version": "ėĩœė‹  ë˛„ė „", "latitude": "ėœ„ë„", @@ -1222,6 +1251,8 @@ "let_others_respond": "다ëĨ¸ ė‚ŦėšŠėžė˜ ë°˜ė‘ í—ˆėšŠ", "level": "레벨", "library": "ëŧė´ë¸ŒëŸŦëĻŦ", + "library_add_folder": "폴더 ėļ”ę°€", + "library_edit_folder": "폴더 ėˆ˜ė •", "library_options": "ëŧė´ë¸ŒëŸŦëĻŦ ė˜ĩė…˜", "library_page_device_albums": "ę¸°ę¸°ė˜ ė•¨ë˛”", "library_page_new_album": "ė•¨ë˛” ėƒė„ą", @@ -1245,6 +1276,7 @@ "local_media_summary": "로ėģŦ ë¯¸ë””ė–´ ėš”ė•Ŋ", "local_network": "로ėģŦ ë„¤íŠ¸ė›ŒíŦ", "local_network_sheet_info": "ė§€ė •ëœ Wi-FiëĨŧ ė‚ŦėšŠí•  때 ė•ąė´ ė•„ëž˜ URL로 ė„œë˛„ė— ė—°ę˛°í•Šë‹ˆë‹¤.", + "location": "ėœ„ėš˜", "location_permission": "ėœ„ėš˜ ęļŒí•œ", "location_permission_content": "ėžë™ ė „í™˜ 기ëŠĨė„ ė‚ŦėšŠí•˜ë ¤ëŠ´ Immich가 현ėžŦ ė—°ę˛°ëœ Wi-Fi ë„¤íŠ¸ė›ŒíŦ ė´ëĻ„ė„ í™•ė¸í•´ė•ŧ 하며, ė´ëĨŧ ėœ„í•´ 'ė •í™•í•œ ėœ„ėš˜' ęļŒí•œė´ í•„ėš”í•Šë‹ˆë‹¤.", "location_picker_choose_on_map": "ė§€ë„ė—ė„œ ė„ íƒ", @@ -1357,6 +1389,7 @@ "more": "ë”ëŗ´ę¸°", "move": "ė´ë™", "move_off_locked_folder": "ėž ę¸ˆ í´ë”ė—ė„œ í•´ė œ", + "move_to": "ë‹¤ėŒėœŧ로 ė´ë™", "move_to_lock_folder_action_prompt": "ėž ę¸ˆ 폴더로 항ëĒŠ {count}氜 ė´ë™ë¨", "move_to_locked_folder": "ėž ę¸ˆ 폴더로 ė´ë™", "move_to_locked_folder_confirmation": "ė„ íƒí•œ ė‚Ŧė§„ 또는 ë™ė˜ėƒė´ ëĒ¨ë“  ė•¨ë˛”ė—ė„œ ė œęą°ë˜ëŠ°, ėž ę¸ˆ í´ë”ė—ė„œë§Œ ëŗŧ 눘 ėžˆėŠĩ니다.", @@ -1417,6 +1450,7 @@ "no_results_description": "ë™ė˜ė–´ 또는 더 ėŧë°˜ė ė¸ ë‹¨ė–´ëĨŧ ė‚ŦėšŠí•´ ëŗ´ė„¸ėš”.", "no_shared_albums_message": "ė•¨ë˛”ė„ ë§Œë“¤ė–´ ėŖŧëŗ€ ė‚Ŧ람들ęŗŧ ė‚Ŧė§„ 및 ë™ė˜ėƒė„ ęŗĩėœ í•˜ė„¸ėš”.", "no_uploads_in_progress": "ė§„í–‰ ė¤‘ė¸ ė—…ëĄœë“œ ė—†ėŒ", + "not_allowed": "í—ˆėšŠë˜ė§€ ė•ŠėŒ", "not_available": "ė—†ėŒ", "not_in_any_album": "ė•¨ë˛”ė— ė—†ėŒ", "not_selected": "ė„ íƒë˜ė§€ ė•ŠėŒ", @@ -1526,6 +1560,8 @@ "photos_count": "ė‚Ŧė§„ {count, plural, one {{count, number}氜} other {{count, number}氜}}", "photos_from_previous_years": "ė§€ë‚œ ëLJ ë…„ę°„ė˜ ė‚Ŧė§„", "pick_a_location": "ėœ„ėš˜ ė„ íƒ", + "pick_custom_range": "ë˛”ėœ„ 맀렕", + "pick_date_range": "ë‚ ė§œ ë˛”ėœ„ ė„ íƒ", "pin_code_changed_successfully": "PIN ėŊ”ë“œę°€ ëŗ€ę˛Ŋë˜ė—ˆėŠĩ니다.", "pin_code_reset_successfully": "PIN ėŊ”드ëĨŧ ė´ˆę¸°í™”í–ˆėŠĩ니다.", "pin_code_setup_successfully": "PIN ėŊ”드ëĨŧ ė„¤ė •í–ˆėŠĩ니다.", @@ -1694,6 +1730,7 @@ "running": "ėž‘ë™ 뤑", "save": "ė €ėžĨ", "save_to_gallery": "ę°¤ëŸŦëĻŦ뗐 ė €ėžĨ", + "saved": "ė €ėžĨ됨", "saved_api_key": "API 키가 ėˆ˜ė •ë˜ė—ˆėŠĩ니다.", "saved_profile": "í”„ëĄœí•„ė´ ė €ėžĨë˜ė—ˆėŠĩ니다.", "saved_settings": "ė„¤ė •ė´ ė €ėžĨë˜ė—ˆėŠĩ니다.", @@ -2136,10 +2173,12 @@ "viewer_unstack": "ėŠ¤íƒ 풀기", "visibility_changed": "ė¸ëŦŧ {count, plural, one {#ëĒ…} other {#ëĒ…}}ė˜ í‘œė‹œ ė—Ŧëļ€ę°€ ëŗ€ę˛Ŋ됨", "waiting": "대기 뤑", + "waiting_count": "대기: {count}", "warning": "ę˛Ŋęŗ ", "week": "ėŖŧ", "welcome": "í™˜ė˜í•Šë‹ˆë‹¤", "welcome_to_immich": "í™˜ė˜í•Šë‹ˆë‹¤", + "width": "너비", "wifi_name": "W-Fi ė´ëĻ„", "wrong_pin_code": "ėž˜ëĒģ된 PIN ėŊ”드", "year": "년", diff --git a/i18n/lt.json b/i18n/lt.json index 38b86e6bae..5e02311666 100644 --- a/i18n/lt.json +++ b/i18n/lt.json @@ -72,7 +72,6 @@ "disable_login": "IÅĄjungti prisijungimą", "duplicate_detection_job_description": "Vykdyti maÅĄininį mokymąsi panaÅĄiÅŗ vaizdÅŗ aptikimui. Priklauso nuo iÅĄmaniosios paieÅĄkos", "exclusion_pattern_description": "IÅĄimčiÅŗ ÅĄablonai leidÅžia nepaisyti failÅŗ ir aplankÅŗ skenuojant jÅĢsÅŗ biblioteką. Tai yra naudinga, jei turite aplankÅŗ su failais, kuriÅŗ nenorite importuoti, pavyzdÅžiui, RAW failai.", - "external_library_management": "IÅĄoriniÅŗ bibliotekÅŗ tvarkymas", "face_detection": "VeidÅŗ aptikimas", "face_detection_description": "VeidÅŗ aptikimas bibliotekos elementuose naudojant maÅĄininį mokymąsi. Vaizdo įraÅĄÅŗ atveju naudojama tik miniatiÅĢra. \"Atnaujinti\" iÅĄ naujo nuskaito visus bibliotekos elementus. \"Atstatyti\" ne tik atnaujina, bet ir iÅĄvalo visus esamus veidÅŗ duomenis. \"TrÅĢkstami\" nuskaito tik dar nenuskaitytus bibliotekos elementus. VeidÅŗ aptikimo darbui pasibaigus, aptikti veidai patenka į veidÅŗ atpaÅžinimo darbÅŗ eilę, kur jie priskiriami jau esamiems ar naujai atpaÅžintiems Åžmonėms.", "facial_recognition_job_description": "AptiktÅŗ veidÅŗ atpaÅžinimas ir priskyrimas Åžmonėms. Å is darbas vykdomas pasibaigus \"veidÅŗ aptikimo\" darbui. \"Atstatyti\" (per)grupuoja visus aptiktus veidus. \"TrÅĢkstami\" apdoroja jokiam Åžmogui dar nepriskirtus aptiktus veidus.", @@ -105,7 +104,6 @@ "job_not_concurrency_safe": "Å i uÅžduotis nėra saugi apdoroti lygiagrečiai.", "job_settings": "UÅžduočiÅŗ nustatymai", "job_settings_description": "Keisti uÅžduočiÅŗ lygiagretumą", - "job_status": "UÅžduočiÅŗ bÅĢsenos", "jobs_delayed": "{jobCount, plural, one {# atidėtas} few {# atidėti} other {# atidėtÅŗ}}", "jobs_failed": "{jobCount, plural, other {# nepavyko}}", "library_created": "Sukurta biblioteka: {library}", @@ -384,7 +382,6 @@ "user_restore_scheduled_removal": "Atkurti naudotoją - suplanuotas paÅĄalinimas {date, date, long}", "user_settings": "Naudotojo nustatymai", "user_settings_description": "Valdyti naudotojo nustatymus", - "user_successfully_removed": "Naudotojas {email} sėkmingai paÅĄalintas.", "version_check_enabled_description": "ÄŽgalinti versijÅŗ tikrinimą", "version_check_implications": "VersijÅŗ tikrinimas reikalauja periodiÅĄkos komunikacijos su github.com", "version_check_settings": "Versijos tikrinimas", diff --git a/i18n/lv.json b/i18n/lv.json index 4af37ac5ba..bfdfac3bc9 100644 --- a/i18n/lv.json +++ b/i18n/lv.json @@ -31,6 +31,7 @@ "add_to_album_toggle": "Pārslēgt izvēli {album}", "add_to_albums": "Pievienot albumiem", "add_to_albums_count": "Pievienot albumiem ({count})", + "add_to_bottom_bar": "Pievienot", "add_to_shared_album": "Pievienot koplietotam albumam", "add_upload_to_stack": "Pievienot augÅĄupielādi kaudzei", "add_url": "Pievienot URL", @@ -73,7 +74,6 @@ "disable_login": "Atspējot pieteikÅĄanos", "duplicate_detection_job_description": "Analizēt failus ar maÅĄÄĢnmācÄĢÅĄanos, lai noteiktu lÄĢdzÄĢgus attēlus. Å ÄĢ funkcija izmanto viedo meklÄ“ÅĄanu", "exclusion_pattern_description": "IzslēgÅĄanas ÅĄabloni Äŧauj ignorēt failus un mapes, skenējot bibliotēku. Tas ir noderÄĢgi, ja jums ir mapes, kas satur failus, kurus nevēlaties importēt, piemēram, RAW failus.", - "external_library_management": "Ārējo bibliotēku pārvaldÄĢba", "face_detection": "Seju noteikÅĄana", "face_detection_description": "AtpazÄĢt attēlos sejas, izmantojot maÅĄÄĢnmācÄĢÅĄanos. Video gadÄĢjumā tiek ņemta vērā tikai sÄĢktēls. \"Atsvaidzināt\" atkārtoti apstrādā visus attēlus. \"AtiestatÄĢt\" izdzÄ“ÅĄ visus paÅĄreizējos seju datus. \"TrÅĢkstoÅĄie\" ierindo attēlus, kas vēl nav apstrādāti. Pēc seju noteikÅĄanas pabeigÅĄanas atrastās sejas tiek ierindotas seju atpazÄĢÅĄanai, grupējot tās pēc esoÅĄas vai jauns personas.", "facial_recognition_job_description": "Grupēt atpazÄĢtās sejas pēc cilvēkiem. Å is solis tiek veikts pēc seju noteikÅĄanas pabeigÅĄanas. \"AtiestatÄĢt\" atkārtoti sagrupē visas sejas. \"TrÅĢkstoÅĄie\" ierindo sejas, kurām nav pieÅĄÄˇirta persona.", @@ -106,9 +106,10 @@ "job_not_concurrency_safe": "Å is uzdevums nav droÅĄs vienlaicÄĢgai izpildei.", "job_settings": "Uzdevumu iestatÄĢjumi", "job_settings_description": "Uzdevumu izpildes vienlaicÄĢguma pārvaldÄĢba", - "job_status": "Uzdevumu statuss", "library_created": "Izveidoja bibliotēku: {library}", "library_deleted": "Bibliotēka dzēsta", + "library_details": "Bibliotēkas dati", + "library_folder_description": "Norādi importējamo mapi. Lai meklētu attēlus un videoklipus, tiks pārbaudÄĢta ÅĄÄĢ mape un tās apakÅĄmapes.", "library_scanning": "Periodiska skenÄ“ÅĄana", "library_scanning_description": "Konfigurē periodisku bibliotēku skenÄ“ÅĄanu", "library_scanning_enable_description": "Iespējot periodisku bibliotēku skenÄ“ÅĄanu", @@ -624,6 +625,7 @@ "create_shared_album_page_share_select_photos": "Fotoattēlu Izvēle", "create_user": "Izveidot lietotāju", "created_at": "Izveidots", + "crop": "Apcirpt", "curated_object_page_title": "Lietas", "current_pin_code": "EsoÅĄais PIN kods", "current_server_address": "PaÅĄreizējā servera adrese", @@ -766,7 +768,9 @@ "failed_to_unstack_assets": "Neizdevās atcelt failu apvienoÅĄanu kaudzē", "failed_to_update_notification_status": "Neizdevās mainÄĢt paziņojuma statusu", "incorrect_email_or_password": "Nepareizs e-pasts vai parole", + "library_folder_already_exists": "Å is importa ceÄŧÅĄ jau pastāv.", "profile_picture_transparent_pixels": "Profila attēlos nevar bÅĢt caurspÄĢdÄĢgi pikseÄŧi. LÅĢdzu, palielini un/vai pārvieto attēlu.", + "quota_higher_than_disk_size": "Tu esi iestatÄĢjis kvotu, kas pārsniedz diska izmēru", "something_went_wrong": "Kaut kas nogāja greizi", "unable_to_add_exclusion_pattern": "Neizdevās pievienot izslēgÅĄanas ÅĄablonu", "unable_to_change_description": "Neizdevās nomainÄĢt aprakstu", @@ -969,6 +973,7 @@ "location_picker_longitude_hint": "Ievadiet savu ÄŖeogrāfisko garumu ÅĄeit", "locked_folder": "Slēgtā mape", "log_out": "IzrakstÄĢties", + "logged_in_as": "Pieslēdzies kā {user}", "login": "Pieslēgties", "login_disabled": "PieslēgÅĄanās ir atslēgta", "login_form_api_exception": "API izņēmums. LÅĢdzu, pārbaudiet servera URL un mēĪiniet vēlreiz.", @@ -1127,6 +1132,7 @@ "onboarding_user_welcome_description": "Sāksim darbu!", "online": "TieÅĄsaistē", "only_favorites": "Tikai izlase", + "open": "Atvērt", "open_in_map_view": "Atvērt kartes skatā", "open_in_openstreetmap": "Atvērt OpenStreetMap", "open_the_search_filters": "Atvērt meklÄ“ÅĄanas filtrus", @@ -1439,6 +1445,7 @@ "shared_link_expires_second": "DerÄĢguma termiÅ†ÅĄ beigsies pēc {count} sekundes", "shared_link_expires_seconds": "DerÄĢguma termiÅ†ÅĄ beidzas pēc {count} sekundēm", "shared_link_individual_shared": "Individuāli kopÄĢgots", + "shared_link_info_chip_metadata": "EXIF", "shared_link_manage_links": "PārvaldÄĢt KopÄĢgotās saites", "shared_links": "KopÄĢgotās saites", "shared_with_partner": "KopÄĢgots ar {partner}", diff --git a/i18n/mk.json b/i18n/mk.json index c866b313fd..507beb15b2 100644 --- a/i18n/mk.json +++ b/i18n/mk.json @@ -72,7 +72,6 @@ "cron_expression_presets": "ĐŸŅ€ĐĩĐ´ĐĩŅ„Đ¸ĐŊĐ¸Ņ€Đ°ĐŊи Cron Đ¸ĐˇŅ€Đ°ĐˇĐ¸", "disable_login": "ОĐŊĐĩвОСĐŧĐžĐļи ĐŊĐ°Ņ˜Đ°Đ˛Đ°", "duplicate_detection_job_description": "ĐŸŅƒŅˆŅ‚Đ¸ ĐŧĐ°ŅˆĐ¸ĐŊҁĐēĐž ŅƒŅ‡ĐĩҚĐĩ ĐŊа ҁҀĐĩĐ´ŅŅ‚Đ˛Đ°Ņ‚Đ° Са да ҁĐĩ ĐžŅ‚ĐēŅ€Đ¸Ņ˜Đ°Ņ‚ ҁĐģĐ¸Ņ‡ĐŊи ҁĐģиĐēи. ĐĄĐĩ ĐŋĐžŅ‚ĐŋĐ¸Ņ€Đ° ĐŊа Smart Search", - "external_library_management": "МĐĩĐŊĐ°ŅŸĐŧĐĩĐŊŅ‚ ĐŊа ĐĐ°Đ´Đ˛ĐžŅ€Đĩ҈ĐŊа БибĐģĐ¸ĐžŅ‚ĐĩĐēа", "face_detection": "ДĐĩŅ‚ĐĩĐēŅ†Đ¸Ņ˜Đ° ĐŊа ĐģĐ¸Ņ†Đĩ", "force_delete_user_warning": "ĐŸĐ Đ•Đ”ĐŖĐŸĐ Đ•Đ”ĐŖĐ’ĐĐŠĐ•: Ова вĐĩĐ´ĐŊĐ°Ņˆ ҜĐĩ ĐŗĐž ĐžŅ‚ŅŅ‚Ņ€Đ°ĐŊи ĐēĐžŅ€Đ¸ŅĐŊиĐēĐžŅ‚ и ŅĐ¸Ņ‚Đĩ ҁҀĐĩĐ´ŅŅ‚Đ˛Đ°. Оваа аĐēŅ†Đ¸Ņ˜Đ° ĐŊĐĩ ĐŧĐžĐļĐĩ да ҁĐĩ ĐŋĐžĐŊĐ¸ŅˆŅ‚Đ¸ и Đ´Đ°Ņ‚ĐžŅ‚ĐĩĐēĐ¸Ņ‚Đĩ ĐŊĐĩĐŧа да ĐŧĐžĐļĐĩ да ҁĐĩ Đ˛Ņ€Đ°Ņ‚Đ°Ņ‚ ĐŊаСад.", "image_format": "Đ¤ĐžŅ€ĐŧĐ°Ņ‚", @@ -90,7 +89,6 @@ "job_not_concurrency_safe": "Оваа ĐˇĐ°Đ´Đ°Ņ‡Đ° ĐŊĐĩ Đĩ ĐēĐžĐŊĐēŅƒŅ€ĐĩŅ‚ĐŊĐž-ĐąĐĩСйĐĩĐ´ĐŊа.", "job_settings": "ĐŸĐžŅŅ‚Đ°Đ˛Đēи Са ĐˇĐ°Đ´Đ°Ņ‡Đ°", "job_settings_description": "ĐŖĐŋŅ€Đ°Đ˛ŅƒĐ˛Đ°Ņ˜ ŅĐž ĐēĐžĐŊĐēŅƒŅ€ĐĩĐŊŅ‚ĐŊĐžŅŅ‚ ĐŊа ĐˇĐ°Đ´Đ°Ņ‡Đ¸", - "job_status": "ĐĄŅ‚Đ°Ņ‚ŅƒŅ ĐŊа ĐˇĐ°Đ´Đ°Ņ‡Đ¸", "library_created": "ĐšŅ€ĐĩĐ¸Ņ€Đ°ĐŊа йийĐģĐ¸ĐžŅ‚ĐĩĐēа: {library}", "library_deleted": "БибĐģĐ¸ĐžŅ‚ĐĩĐēĐ°Ņ‚Đ° Đĩ Đ¸ĐˇĐąŅ€Đ¸ŅˆĐ°ĐŊа", "library_scanning": "ПĐĩŅ€Đ¸ĐžĐ´Đ¸Ņ‡ĐŊĐž ҁĐēĐĩĐŊĐ¸Ņ€Đ°ŅšĐĩ", diff --git a/i18n/ml.json b/i18n/ml.json index 8847103508..09877f7f53 100644 --- a/i18n/ml.json +++ b/i18n/ml.json @@ -31,7 +31,9 @@ "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 ⴚāĩ‡āĩŧā´•āĩā´•āĩā´•", "added_to_archive": "ā´†āĩŧā´•āĩā´•āĩˆā´ĩā´ŋā´˛āĩ‡ā´•āĩā´•āĩ ⴚāĩ‡āĩŧā´¤āĩā´¤āĩ", "added_to_favorites": "ā´Ēāĩā´°ā´ŋā´¯ā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´Ÿā´ĩā´¯ā´ŋā´˛āĩ‡ā´•āĩā´•āĩ ⴚāĩ‡āĩŧā´¤āĩā´¤āĩ", @@ -72,7 +74,6 @@ "disable_login": "ā´˛āĩ‹ā´—ā´ŋāĩģ ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´¨ā´°ā´šā´ŋā´¤ā´Žā´žā´•āĩā´•āĩā´•", "duplicate_detection_job_description": "ā´¸ā´Žā´žā´¨ ⴚā´ŋā´¤āĩā´°ā´™āĩā´™āĩž ā´•ā´Ŗāĩā´Ÿāĩ†ā´¤āĩā´¤ā´žāĩģ ā´…ā´¸ā´ąāĩā´ąāĩā´•ā´ŗā´ŋāĩŊ ā´Žāĩ†ā´ˇāĩ€āĩģ ā´˛āĩ‡ā´Ŗā´ŋā´‚ā´—āĩ ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´ŋā´Ēāĩā´Ēā´ŋā´•āĩā´•āĩā´•. ⴇⴤāĩ ā´¸āĩā´Žā´žāĩŧⴟāĩā´Ÿāĩ ā´¸āĩ†āĩŧⴚāĩā´šā´ŋā´¨āĩ† ā´†ā´ļāĩā´°ā´¯ā´ŋⴚāĩā´šā´ŋā´°ā´ŋā´•āĩā´•āĩā´¨āĩā´¨āĩ", "exclusion_pattern_description": "ā´¨ā´ŋā´™āĩā´™ā´ŗāĩā´Ÿāĩ† ā´˛āĩˆā´Ŧāĩā´°ā´ąā´ŋ ā´¸āĩā´•ā´žāĩģ ⴚāĩ†ā´¯āĩā´¯āĩā´Žāĩā´Ēāĩ‹āĩž ā´Ģⴝⴞāĩā´•ā´ŗāĩā´‚ ā´Ģāĩ‹āĩžā´Ąā´ąāĩā´•ā´ŗāĩā´‚ ā´’ā´´ā´ŋā´ĩā´žā´•āĩā´•ā´žāĩģ ā´Žā´•āĩā´¸āĩā´•āĩā´˛āĩ‚ā´ˇāĩģ ā´Ēā´žā´ąāĩā´ąāĩ‡ā´Ŗāĩā´•āĩž ā´¨ā´ŋā´™āĩā´™ā´ŗāĩ† ā´¸ā´šā´žā´¯ā´ŋā´•āĩā´•āĩā´¨āĩā´¨āĩ. ā´¨ā´ŋā´™āĩā´™āĩž ā´‡ā´Žāĩā´Ēāĩ‹āĩŧⴟāĩā´Ÿāĩ ⴚāĩ†ā´¯āĩā´¯ā´žāĩģ ⴆⴗāĩā´°ā´šā´ŋā´•āĩā´•ā´žā´¤āĩā´¤ ā´Ģⴝⴞāĩā´•āĩž ā´…ā´Ÿā´™āĩā´™ā´ŋā´¯ ā´Ģāĩ‹āĩžā´Ąā´ąāĩā´•āĩž (ā´‰ā´Ļā´žā´šā´°ā´Ŗā´¤āĩā´¤ā´ŋā´¨āĩ RAW ā´Ģⴝⴞāĩā´•āĩž) ⴉ⴪āĩā´Ÿāĩ†ā´™āĩā´•ā´ŋāĩŊ ⴇⴤāĩ ā´‰ā´Ēā´¯āĩ‹ā´—ā´Ēāĩā´°ā´Ļā´Žā´žā´Ŗāĩ.", - "external_library_management": "ā´Žā´•āĩā´¸āĩā´ąāĩā´ąāĩ‡ā´ŖāĩŊ ā´˛āĩˆā´Ŧāĩā´°ā´ąā´ŋ ā´Žā´žā´¨āĩ‡ā´œāĩā´Žāĩ†ā´¨āĩā´ąāĩ", "face_detection": "ā´Žāĩā´–ā´‚ ā´¤ā´ŋā´°ā´ŋⴚāĩā´šā´ąā´ŋā´¯āĩŊ", "face_detection_description": "ā´Žāĩ†ā´ˇāĩ€āĩģ ā´˛āĩ‡ā´Ŗā´ŋā´‚ā´—āĩ ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋⴚāĩā´šāĩ ā´…ā´¸ā´ąāĩā´ąāĩā´•ā´ŗā´ŋā´˛āĩ† ā´Žāĩā´–ā´™āĩā´™āĩž ā´•ā´Ŗāĩā´Ÿāĩ†ā´¤āĩā´¤āĩā´•. ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ā´•āĩžā´•āĩā´•ā´žā´¯ā´ŋ, ⴤⴂā´Ŧāĩā´¨āĩ†ā´¯ā´ŋāĩŊ ā´Žā´žā´¤āĩā´°ā´Žāĩ‡ ā´Ēā´°ā´ŋā´—ā´Ŗā´ŋā´•āĩā´•āĩ‚. \"ā´ąā´ŋā´Ģāĩā´°ā´ˇāĩ\" ā´Žā´˛āĩā´˛ā´ž ā´…ā´¸ā´ąāĩā´ąāĩā´•ā´ŗāĩā´‚ ā´ĩāĩ€ā´Ŗāĩā´Ÿāĩā´‚ ā´Ēāĩā´°āĩ‹ā´¸ā´¸āĩā´¸āĩ ⴚāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨āĩ. \"ā´ąāĩ€ā´¸āĩ†ā´ąāĩā´ąāĩ\" ā´¨ā´ŋā´˛ā´ĩā´ŋā´˛āĩā´ŗāĩā´ŗ ā´Žā´˛āĩā´˛ā´ž ā´Žāĩā´– ā´Ąā´žā´ąāĩā´ąā´¯āĩā´‚ ā´¨āĩ€ā´•āĩā´•ā´‚ā´šāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨āĩ. \"ā´Žā´ŋā´¸āĩā´¸ā´ŋā´‚ā´—āĩ\" ⴇⴤāĩā´ĩā´°āĩ† ā´Ēāĩā´°āĩ‹ā´¸ā´¸āĩā´¸āĩ ⴚāĩ†ā´¯āĩā´¯ā´žā´¤āĩā´¤ ā´…ā´¸ā´ąāĩā´ąāĩā´•ā´ŗāĩ† ā´•āĩā´¯āĩ‚ā´ĩā´ŋā´˛ā´žā´•āĩā´•āĩā´¨āĩā´¨āĩ. ā´Žāĩā´–ā´‚ ā´¤ā´ŋā´°ā´ŋⴚāĩā´šā´ąā´ŋā´¯āĩŊ ā´Ēāĩ‚āĩŧā´¤āĩā´¤ā´ŋā´¯ā´žā´¯ ā´ļāĩ‡ā´ˇā´‚, ā´•ā´Ŗāĩā´Ÿāĩ†ā´¤āĩā´¤ā´ŋā´¯ ā´Žāĩā´–ā´™āĩā´™āĩž ā´Ģāĩ‡ā´ˇāĩā´¯āĩŊ ā´ąāĩ†ā´•āĩā´•ā´—āĩā´¨ā´ŋā´ˇā´¨ā´žā´¯ā´ŋ ā´•āĩā´¯āĩ‚ ⴚāĩ†ā´¯āĩā´¯ā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´‚, ā´…ā´ĩā´¯āĩ† ā´¨ā´ŋā´˛ā´ĩā´ŋā´˛āĩā´ŗāĩā´ŗā´¤āĩ‹ ā´Ēāĩā´¤ā´ŋⴝⴤāĩ‹ ⴆⴝ ⴆⴺāĩā´•ā´ŗā´žā´¯ā´ŋ ⴤⴰⴂⴤā´ŋā´°ā´ŋā´•āĩā´•āĩā´‚.", "facial_recognition_job_description": "ā´•ā´Ŗāĩā´Ÿāĩ†ā´¤āĩā´¤ā´ŋā´¯ ā´Žāĩā´–ā´™āĩā´™ā´ŗāĩ† ⴆⴺāĩā´•ā´ŗā´žā´¯ā´ŋ ā´—āĩā´°āĩ‚ā´Ēāĩā´Ēāĩ ⴚāĩ†ā´¯āĩā´¯āĩā´•. ā´Žāĩā´–ā´‚ ā´•ā´Ŗāĩā´Ÿāĩ†ā´¤āĩā´¤āĩŊ ā´Ēāĩ‚āĩŧā´¤āĩā´¤ā´ŋā´¯ā´žā´¯ā´¤ā´ŋā´¨āĩ ā´ļāĩ‡ā´ˇā´Žā´žā´Ŗāĩ ⴈ ⴘⴟāĩā´Ÿā´‚ ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´ŋā´•āĩā´•āĩā´¨āĩā´¨ā´¤āĩ. \"ā´ąāĩ€ā´¸āĩ†ā´ąāĩā´ąāĩ\" ā´Žā´˛āĩā´˛ā´ž ā´Žāĩā´–ā´™āĩā´™ā´ŗāĩ†ā´¯āĩā´‚ ā´ĩāĩ€ā´Ŗāĩā´Ÿāĩā´‚ ā´•āĩā´˛ā´¸āĩā´ąāĩā´ąāĩŧ ⴚāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨āĩ. \"ā´Žā´ŋā´¸āĩā´¸ā´ŋā´‚ā´—āĩ\" ā´’ā´°āĩ ā´ĩāĩā´¯ā´•āĩā´¤ā´ŋā´¯āĩ†ā´¯āĩā´‚ ā´…ā´¸āĩˆāĩģ ⴚāĩ†ā´¯āĩā´¯ā´žā´¤āĩā´¤ ā´Žāĩā´–ā´™āĩā´™ā´ŗāĩ† ā´•āĩā´¯āĩ‚ā´ĩā´ŋā´˛ā´žā´•āĩā´•āĩā´¨āĩā´¨āĩ.", @@ -105,19 +106,23 @@ "job_not_concurrency_safe": "ⴈ ⴜāĩ‹ā´˛ā´ŋ ā´•āĩ‹āĩēā´•ā´ąāĩģā´¸ā´ŋ-ā´¸āĩ‡ā´Ģāĩ ā´…ā´˛āĩā´˛.", "job_settings": "ⴜāĩ‹ā´˛ā´ŋ ā´•āĩā´°ā´Žāĩ€ā´•ā´°ā´Ŗā´™āĩā´™āĩž", "job_settings_description": "ⴜāĩ‹ā´˛ā´ŋ ā´•āĩ‹āĩēā´•ā´ąāĩģā´¸ā´ŋ ā´•āĩˆā´•ā´žā´°āĩā´¯ā´‚ ⴚāĩ†ā´¯āĩā´¯āĩā´•", - "job_status": "ⴜāĩ‹ā´˛ā´ŋā´¯āĩā´Ÿāĩ† ā´¨ā´ŋā´˛", "jobs_delayed": "{jobCount, plural, one {# ⴜāĩ‹ā´˛ā´ŋ ā´ĩāĩˆā´•ā´ŋ} other {# ⴜāĩ‹ā´˛ā´ŋā´•āĩž ā´ĩāĩˆā´•ā´ŋ}}", "jobs_failed": "{jobCount, plural, one {# ⴜāĩ‹ā´˛ā´ŋ ā´Ēā´°ā´žā´œā´¯ā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´Ÿāĩ} other {# ⴜāĩ‹ā´˛ā´ŋā´•āĩž ā´Ēā´°ā´žā´œā´¯ā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´Ÿāĩ}}", "library_created": "{library} ā´Žā´¨āĩā´¨ ā´˛āĩˆā´Ŧāĩā´°ā´ąā´ŋ ā´¸āĩƒā´ˇāĩā´Ÿā´ŋⴚāĩā´šāĩ", "library_deleted": "ā´˛āĩˆā´Ŧāĩā´°ā´ąā´ŋ ⴇⴞāĩā´˛ā´žā´¤ā´žā´•āĩā´•ā´ŋ", + "library_details": "ā´˛āĩˆā´Ŧāĩā´°ā´ąā´ŋ ā´ĩā´ŋā´ĩā´°ā´™āĩā´™āĩž", + "library_folder_description": "ā´‡ā´Žāĩā´Ēāĩ‹āĩŧⴟāĩā´Ÿāĩā´šāĩ†ā´¯āĩā´¯ā´žā´¨āĩā´ŗāĩā´ŗ ā´Ģāĩ‹āĩžā´Ąāĩŧ ā´ĩāĩā´¯ā´•āĩā´¤ā´Žā´žā´•āĩā´•āĩā´•. ⴈ ā´Ģāĩ‹āĩžā´Ąā´ąāĩā´‚ ā´¸ā´Ŧāĩ ā´Ģāĩ‹āĩžā´Ąā´ąāĩā´•ā´ŗāĩā´‚ ⴚā´ŋā´¤āĩā´°ā´™āĩā´™āĩžā´•āĩā´•āĩā´‚ ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ā´•āĩžā´•āĩā´•āĩā´Žā´žā´¯ā´ŋ ā´¸āĩā´•ā´žāĩģ ⴚāĩ†ā´¯āĩā´¯āĩā´‚.", + "library_remove_exclusion_pattern_prompt": "ⴈ ā´’ā´´ā´ŋā´ĩā´žā´•āĩā´•āĩŊ ā´Ēā´žā´ąāĩā´ąāĩ‡āĩē ā´¨āĩ€ā´•āĩā´•ā´‚ ⴚāĩ†ā´¯āĩā´¯ā´Ŗā´Žāĩ†ā´¨āĩā´¨āĩ ā´¨ā´ŋā´™āĩā´™āĩžā´•āĩā´•āĩ ā´‰ā´ąā´Ēāĩā´Ēā´žā´Ŗāĩ‹?", + "library_remove_folder_prompt": "ⴈ ā´‡ā´Žāĩā´Ēāĩ‹āĩŧⴟāĩā´Ÿāĩ ā´Ģāĩ‹āĩžā´Ąāĩŧ ā´¨āĩ€ā´•āĩā´•ā´‚ ⴚāĩ†ā´¯āĩā´¯ā´Ŗā´Žāĩ†ā´¨āĩā´¨āĩ ā´¨ā´ŋā´™āĩā´™āĩžā´•āĩā´•āĩ ā´‰ā´ąā´Ēāĩā´Ēā´žā´Ŗāĩ‹?", "library_scanning": "ⴆⴍāĩā´•ā´žā´˛ā´ŋā´• ā´¸āĩā´•ā´žā´¨ā´ŋā´‚ā´—āĩ", "library_scanning_description": "ⴆⴍāĩā´•ā´žā´˛ā´ŋā´• ā´˛āĩˆā´Ŧāĩā´°ā´ąā´ŋ ā´¸āĩā´•ā´žā´¨ā´ŋā´‚ā´—āĩ ā´•āĩ‹āĩēā´Ģā´ŋā´—āĩŧ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "library_scanning_enable_description": "ⴆⴍāĩā´•ā´žā´˛ā´ŋā´• ā´˛āĩˆā´Ŧāĩā´°ā´ąā´ŋ ā´¸āĩā´•ā´žā´¨ā´ŋā´‚ā´—āĩ ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´¨ā´•āĩā´ˇā´Žā´Žā´žā´•āĩā´•āĩā´•", "library_settings": "ā´Žā´•āĩā´¸āĩā´ąāĩā´ąāĩ‡ā´ŖāĩŊ ā´˛āĩˆā´Ŧāĩā´°ā´ąā´ŋ", "library_settings_description": "ā´Žā´•āĩā´¸āĩā´ąāĩā´ąāĩ‡ā´ŖāĩŊ ā´˛āĩˆā´Ŧāĩā´°ā´ąā´ŋ ā´•āĩā´°ā´Žāĩ€ā´•ā´°ā´Ŗā´™āĩā´™āĩž ā´•āĩˆā´•ā´žā´°āĩā´¯ā´‚ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "library_tasks_description": "ā´Ēāĩā´¤ā´ŋⴝⴤāĩ‹ ā´Žā´žā´ąāĩā´ąā´‚ ā´ĩā´°āĩā´¤āĩā´¤ā´ŋⴝⴤāĩ‹ ⴆⴝ ā´…ā´¸ā´ąāĩā´ąāĩā´•āĩžā´•āĩā´•ā´žā´¯ā´ŋ ā´Žā´•āĩā´¸āĩā´ąāĩā´ąāĩ‡ā´ŖāĩŊ ā´˛āĩˆā´Ŧāĩā´°ā´ąā´ŋā´•āĩž ā´¸āĩā´•ā´žāĩģ ⴚāĩ†ā´¯āĩā´¯āĩā´•", + "library_updated": "ā´˛āĩˆā´Ŧāĩā´°ā´ąā´ŋ ā´…ā´Ēāĩâ€Œā´Ąāĩ‡ā´ąāĩā´ąāĩ ⴚāĩ†ā´¯āĩā´¤āĩ", "library_watching_enable_description": "ā´Ģā´¯āĩŊ ā´Žā´žā´ąāĩā´ąā´™āĩā´™āĩžā´•āĩā´•ā´žā´¯ā´ŋ ā´Žā´•āĩā´¸āĩā´ąāĩā´ąāĩ‡ā´ŖāĩŊ ā´˛āĩˆā´Ŧāĩā´°ā´ąā´ŋā´•āĩž ā´¨ā´ŋā´°āĩ€ā´•āĩā´ˇā´ŋā´•āĩā´•āĩā´•", - "library_watching_settings": "ā´˛āĩˆā´Ŧāĩā´°ā´ąā´ŋ ā´¨ā´ŋā´°āĩ€ā´•āĩā´ˇā´ŋā´•āĩā´•āĩŊ (ā´Ēā´°āĩ€ā´•āĩā´ˇā´Ŗā´žā´Ÿā´ŋā´¸āĩā´Ĩā´žā´¨ā´¤āĩā´¤ā´ŋāĩŊ)", + "library_watching_settings": "ā´˛āĩˆā´Ŧāĩā´°ā´ąā´ŋ ā´¨ā´ŋā´°āĩ€ā´•āĩā´ˇā´ŋā´•āĩā´•āĩŊ [ā´Ēā´°āĩ€ā´•āĩā´ˇā´Ŗā´žā´Ÿā´ŋā´¸āĩā´Ĩā´žā´¨ā´¤āĩā´¤ā´ŋāĩŊ]", "library_watching_settings_description": "ā´Žā´žā´ąāĩā´ąā´‚ ā´ĩā´¨āĩā´¨ ā´Ģⴝⴞāĩā´•āĩžā´•āĩā´•ā´žā´¯ā´ŋ ā´¯ā´žā´¨āĩā´¤āĩā´°ā´ŋā´•ā´Žā´žā´¯ā´ŋ ā´¨ā´ŋā´°āĩ€ā´•āĩā´ˇā´ŋā´•āĩā´•āĩā´•", "logging_enable_description": "ā´˛āĩ‹ā´—ā´ŋā´‚ā´—āĩ ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´¨ā´•āĩā´ˇā´Žā´Žā´žā´•āĩā´•āĩā´•", "logging_level_description": "ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´¨ā´•āĩā´ˇā´Žā´Žā´žā´•āĩā´•āĩā´Žāĩā´Ēāĩ‹āĩž, ā´ā´¤āĩ ā´˛āĩ‹ā´—āĩ ā´˛āĩ†ā´ĩāĩŊ ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋā´•āĩā´•ā´Ŗā´‚.", @@ -151,6 +156,18 @@ "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": "ā´’.ā´¸ā´ŋ.ā´†āĩŧ ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´¨ā´•āĩā´ˇā´Žā´Žā´žā´•āĩā´•āĩā´•", + "machine_learning_ocr_enabled_description": "ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´¨ā´°ā´šā´ŋā´¤ā´Žā´žā´•āĩā´•ā´ŋā´¯ā´žāĩŊ, ⴚā´ŋā´¤āĩā´°ā´™āĩā´™āĩž ⴟāĩ†ā´•āĩā´¸āĩā´ąāĩā´ąāĩ ā´¤ā´ŋā´°ā´ŋⴚāĩā´šā´ąā´ŋⴝⴞā´ŋā´¨āĩ ā´ĩā´ŋā´§āĩ‡ā´¯ā´Žā´žā´•ā´ŋā´˛āĩā´˛.", + "machine_learning_ocr_max_resolution": "ā´Ēā´°ā´Žā´žā´ĩā´§ā´ŋ ā´ąāĩ†ā´¸ā´˛āĩā´¯āĩ‚ā´ˇāĩģ", + "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": "ā´’.ā´¸ā´ŋ.ā´†āĩŧ ā´Žāĩ‹ā´ĄāĩŊ", + "machine_learning_ocr_model_description": "ā´¸āĩ†āĩŧā´ĩāĩŧ ā´Žāĩ‹ā´Ąā´˛āĩā´•āĩž ā´ŽāĩŠā´ŦāĩˆāĩŊ ā´Žāĩ‹ā´Ąā´˛āĩā´•ā´ŗāĩ‡ā´•āĩā´•ā´žāĩž ā´•āĩƒā´¤āĩā´¯ā´¤ā´¯āĩā´ŗāĩā´ŗā´¤ā´žā´Ŗāĩ, ā´Ēā´•āĩā´ˇāĩ‡ ā´Ēāĩā´°āĩ‹ā´¸ā´¸āĩā´¸āĩ ⴚāĩ†ā´¯āĩā´¯ā´žāĩģ ā´•āĩ‚ā´Ÿāĩā´¤āĩŊ ā´¸ā´Žā´¯ā´Žāĩ†ā´Ÿāĩā´•āĩā´•āĩā´•ā´¯āĩā´‚ ā´•āĩ‚ā´Ÿāĩā´¤āĩŊ ā´Žāĩ†ā´Žāĩā´Žā´ąā´ŋ ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋā´•āĩā´•āĩā´•ā´¯āĩā´‚ ⴚāĩ†ā´¯āĩā´¯āĩā´‚.", "machine_learning_settings": "ā´Žāĩ†ā´ˇāĩ€āĩģ ā´˛āĩ‡ā´Ŗā´ŋā´‚ā´—āĩ ā´•āĩā´°ā´Žāĩ€ā´•ā´°ā´Ŗā´™āĩā´™āĩž", "machine_learning_settings_description": "ā´Žāĩ†ā´ˇāĩ€āĩģ ā´˛āĩ‡ā´Ŗā´ŋā´‚ā´—āĩ ā´Ģāĩ€ā´šāĩā´šā´ąāĩā´•ā´ŗāĩā´‚ ā´•āĩā´°ā´Žāĩ€ā´•ā´°ā´Ŗā´™āĩā´™ā´ŗāĩā´‚ ā´•āĩˆā´•ā´žā´°āĩā´¯ā´‚ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "machine_learning_smart_search": "ā´¸āĩā´Žā´žāĩŧⴟāĩā´Ÿāĩ ā´¸āĩ†āĩŧⴚāĩā´šāĩ", @@ -158,6 +175,10 @@ "machine_learning_smart_search_enabled": "ā´¸āĩā´Žā´žāĩŧⴟāĩā´Ÿāĩ ā´¸āĩ†āĩŧⴚāĩā´šāĩ ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´¨ā´•āĩā´ˇā´Žā´Žā´žā´•āĩā´•āĩā´•", "machine_learning_smart_search_enabled_description": "ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´¨ā´°ā´šā´ŋā´¤ā´Žā´žā´•āĩā´•ā´ŋā´¯ā´žāĩŊ, ā´¸āĩā´Žā´žāĩŧⴟāĩā´Ÿāĩ ā´¸āĩ†āĩŧⴚāĩā´šā´ŋā´¨ā´žā´¯ā´ŋ ⴚā´ŋā´¤āĩā´°ā´™āĩā´™āĩž ā´Žāĩģā´•āĩ‹ā´Ąāĩ ⴚāĩ†ā´¯āĩā´¯ā´Ēāĩā´Ēāĩ†ā´Ÿā´ŋā´˛āĩā´˛.", "machine_learning_url_description": "ā´Žāĩ†ā´ˇāĩ€āĩģ ā´˛āĩ‡ā´Ŗā´ŋā´‚ā´—āĩ ā´¸āĩ†āĩŧā´ĩā´ąā´ŋā´¨āĩā´ąāĩ† URL. ā´’ā´¨āĩā´¨ā´ŋāĩŊ ā´•āĩ‚ā´Ÿāĩā´¤āĩŊ URL-ā´•āĩž ā´¨āĩŊā´•ā´ŋā´¯ā´ŋⴟāĩā´Ÿāĩā´Ŗāĩā´Ÿāĩ†ā´™āĩā´•ā´ŋāĩŊ, ā´“ā´°āĩ‹ ā´¸āĩ†āĩŧā´ĩā´ąāĩā´‚ ā´’ā´¨āĩā´¨ā´ŋā´¨āĩ ā´Ēāĩā´ąā´•āĩ† ā´’ā´¨āĩā´¨ā´žā´¯ā´ŋ ā´ĩā´ŋā´œā´¯ā´•ā´°ā´Žā´žā´¯ā´ŋ ā´Ēāĩā´°ā´¤ā´ŋā´•ā´°ā´ŋā´•āĩā´•āĩā´¨āĩā´¨ā´¤āĩā´ĩā´°āĩ† ā´ļāĩā´°ā´Žā´ŋā´•āĩā´•āĩā´‚. ā´Ēāĩā´°ā´¤ā´ŋā´•ā´°ā´ŋā´•āĩā´•ā´žā´¤āĩā´¤ ā´¸āĩ†āĩŧā´ĩā´ąāĩā´•āĩž ā´“āĩēā´˛āĩˆā´¨ā´ŋāĩŊ ā´¤ā´ŋā´°ā´ŋā´•āĩ† ā´ĩā´°āĩā´¨āĩā´¨ā´¤āĩā´ĩā´°āĩ† ā´¤ā´žāĩŊā´•āĩā´•ā´žā´˛ā´ŋā´•ā´Žā´žā´¯ā´ŋ ā´…ā´ĩā´—ā´Ŗā´ŋā´•āĩā´•ā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´‚.", + "maintenance_settings": "ā´…ā´ąāĩā´ąā´•āĩā´ąāĩā´ąā´Ēāĩā´Ēā´Ŗā´ŋ (Maintenance)", + "maintenance_settings_description": "ā´‡ā´Žāĩā´Žā´ŋā´•āĩā´•āĩ ā´Žāĩ†ā´¯ā´ŋā´¨āĩā´ąā´¨āĩģā´¸āĩ ā´Žāĩ‹ā´Ąā´ŋā´˛āĩ‡ā´•āĩā´•āĩ ā´Žā´žā´ąāĩā´ąāĩā´•.", + "maintenance_start": "ā´Žāĩ†ā´¯ā´ŋā´¨āĩā´ąā´¨āĩģā´¸āĩ ā´Žāĩ‹ā´Ąāĩ ⴆⴰⴂⴭā´ŋā´•āĩā´•āĩā´•", + "maintenance_start_error": "ā´Žāĩ†ā´¯ā´ŋā´¨āĩā´ąā´¨āĩģā´¸āĩ ā´Žāĩ‹ā´Ąāĩ ⴆⴰⴂⴭā´ŋā´•āĩā´•āĩā´¨āĩā´¨ā´¤ā´ŋāĩŊ ā´Ēā´°ā´žā´œā´¯ā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´Ÿāĩ.", "manage_concurrency": "ā´•āĩ‹āĩēā´•ā´ąāĩģā´¸ā´ŋ ā´•āĩˆā´•ā´žā´°āĩā´¯ā´‚ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "manage_log_settings": "ā´˛āĩ‹ā´—āĩ ā´•āĩā´°ā´Žāĩ€ā´•ā´°ā´Ŗā´™āĩā´™āĩž ā´•āĩˆā´•ā´žā´°āĩā´¯ā´‚ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "map_dark_style": "ā´Ąā´žāĩŧā´•āĩā´•āĩ ā´¸āĩā´ąāĩā´ąāĩˆāĩŊ", @@ -208,6 +229,8 @@ "notification_email_ignore_certificate_errors_description": "TLS ā´¸āĩŧⴟāĩā´Ÿā´ŋā´Ģā´ŋā´•āĩā´•ā´ąāĩā´ąāĩ ā´¸ā´žā´§āĩā´¤ā´ž ā´Ēā´ŋā´ļā´•āĩā´•āĩž ā´…ā´ĩā´—ā´Ŗā´ŋā´•āĩā´•āĩā´• (ā´ļāĩā´Ēā´žāĩŧā´ļ ⴚāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨ā´ŋā´˛āĩā´˛)", "notification_email_password_description": "ā´‡ā´Žāĩ†ā´¯ā´ŋāĩŊ ā´¸āĩ†āĩŧā´ĩā´ąāĩā´Žā´žā´¯ā´ŋ ā´Ēāĩā´°ā´žā´Žā´žā´Ŗāĩ€ā´•ā´°ā´ŋā´•āĩā´•āĩā´Žāĩā´Ēāĩ‹āĩž ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋā´•āĩā´•āĩ‡ā´Ŗāĩā´Ÿ ā´Ēā´žā´¸āĩâ€Œā´ĩāĩ‡ā´Ąāĩ", "notification_email_port_description": "ā´‡ā´Žāĩ†ā´¯ā´ŋāĩŊ ā´¸āĩ†āĩŧā´ĩā´ąā´ŋā´¨āĩā´ąāĩ† ā´Ēāĩ‹āĩŧⴟāĩā´Ÿāĩ (ā´‰ā´Ļā´ž. 25, 465, ā´…ā´˛āĩā´˛āĩ†ā´™āĩā´•ā´ŋāĩŊ 587)", + "notification_email_secure": "SMTPS", + "notification_email_secure_description": "SMTPS ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋā´•āĩā´•āĩā´• (SMTP over TLS)", "notification_email_sent_test_email_button": "ā´Ēā´°ā´ŋā´ļāĩ‹ā´§ā´¨ā´ž ā´‡ā´Žāĩ†ā´¯ā´ŋāĩŊ ā´…ā´¯ā´šāĩā´šāĩ ā´¸āĩ‡ā´ĩāĩ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "notification_email_setting_description": "ā´‡ā´Žāĩ†ā´¯ā´ŋāĩŊ ā´…ā´ąā´ŋā´¯ā´ŋā´Ēāĩā´Ēāĩā´•āĩž ⴅⴝⴕāĩā´•āĩā´¨āĩā´¨ā´¤ā´ŋā´¨āĩā´ŗāĩā´ŗ ā´•āĩā´°ā´Žāĩ€ā´•ā´°ā´Ŗā´™āĩā´™āĩž", "notification_email_test_email": "ā´Ēā´°ā´ŋā´ļāĩ‹ā´§ā´¨ā´ž ā´‡ā´Žāĩ†ā´¯ā´ŋāĩŊ ⴅⴝⴕāĩā´•āĩā´•", @@ -240,6 +263,7 @@ "oauth_storage_quota_default_description": "ā´•āĩā´˛āĩ†ā´¯ā´ŋā´‚ ā´’ā´¨āĩā´¨āĩā´‚ ā´¨āĩŊā´•ā´žā´¤āĩā´¤ā´Ēāĩā´Ēāĩ‹āĩž ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋā´•āĩā´•āĩ‡ā´Ŗāĩā´Ÿ ā´•āĩā´ĩā´žā´Ÿāĩā´Ÿ (GiB-ā´¯ā´ŋāĩŊ).", "oauth_timeout": "ā´…ā´­āĩā´¯āĩŧā´¤āĩā´Ĩⴍⴝāĩā´Ÿāĩ† ā´¸ā´Žā´¯ā´Ēā´°ā´ŋā´§ā´ŋ", "oauth_timeout_description": "ā´…ā´­āĩā´¯āĩŧā´¤āĩā´Ĩⴍⴕāĩžā´•āĩā´•āĩā´ŗāĩā´ŗ ā´¸ā´Žā´¯ā´Ēā´°ā´ŋā´§ā´ŋ (ā´Žā´ŋā´˛āĩā´˛ā´ŋā´¸āĩ†ā´•āĩā´•āĩģā´Ąā´ŋāĩŊ)", + "ocr_job_description": "ⴚā´ŋā´¤āĩā´°ā´™āĩā´™ā´ŗā´ŋā´˛āĩ† ⴟāĩ†ā´•āĩā´¸āĩā´ąāĩā´ąāĩ ā´¤ā´ŋā´°ā´ŋⴚāĩā´šā´ąā´ŋā´¯ā´žāĩģ ā´Žāĩ†ā´ˇāĩ€āĩģ ā´˛āĩ‡ā´Ŗā´ŋā´‚ā´—āĩ ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋā´•āĩā´•āĩā´•", "password_enable_description": "ā´‡ā´Žāĩ†ā´¯ā´ŋā´˛āĩā´‚ ā´Ēā´žā´¸āĩâ€Œā´ĩāĩ‡ā´Ąāĩā´‚ ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋⴚāĩā´šāĩ ā´˛āĩ‹ā´—ā´ŋāĩģ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "password_settings": "ā´Ēā´žā´¸āĩâ€Œā´ĩāĩ‡ā´Ąāĩ ā´˛āĩ‹ā´—ā´ŋāĩģ", "password_settings_description": "ā´Ēā´žā´¸āĩâ€Œā´ĩāĩ‡ā´Ąāĩ ā´˛āĩ‹ā´—ā´ŋāĩģ ā´•āĩā´°ā´Žāĩ€ā´•ā´°ā´Ŗā´™āĩā´™āĩž ā´•āĩˆā´•ā´žā´°āĩā´¯ā´‚ ⴚāĩ†ā´¯āĩā´¯āĩā´•", @@ -330,7 +354,7 @@ "transcoding_max_b_frames": "ā´Ēā´°ā´Žā´žā´ĩā´§ā´ŋ ā´Ŧā´ŋ-ā´Ģāĩā´°āĩ†ā´¯ā´ŋā´Žāĩā´•āĩž", "transcoding_max_b_frames_description": "ⴉⴝāĩŧā´¨āĩā´¨ ā´Žāĩ‚ā´˛āĩā´¯ā´™āĩā´™āĩž ā´•ā´‚ā´Ēāĩā´°ā´ˇāĩģ ā´•ā´žā´°āĩā´¯ā´•āĩā´ˇā´Žā´¤ ā´Žāĩ†ā´šāĩā´šā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´¤āĩā´¤āĩā´¨āĩā´¨āĩ, ā´Ēā´•āĩā´ˇāĩ‡ ā´Žāĩģā´•āĩ‹ā´Ąā´ŋā´‚ā´—āĩ ā´ĩāĩ‡ā´—ā´¤ ā´•āĩā´ąā´¯āĩā´•āĩā´•āĩā´¨āĩā´¨āĩ. ā´Ēā´´ā´¯ ā´‰ā´Ēā´•ā´°ā´Ŗā´™āĩā´™ā´ŗā´ŋā´˛āĩ† ā´šā´žāĩŧā´Ąāĩâ€Œā´ĩāĩ†ā´¯āĩŧ ⴆⴕāĩā´¸ā´ŋā´˛ā´ąāĩ‡ā´ˇā´¨āĩā´Žā´žā´¯ā´ŋ ā´ĒāĩŠā´°āĩā´¤āĩā´¤ā´Ēāĩā´Ēāĩ†ā´Ÿā´Ŗā´Žāĩ†ā´¨āĩā´¨ā´ŋā´˛āĩā´˛. 0 ā´Ŧā´ŋ-ā´Ģāĩā´°āĩ†ā´¯ā´ŋā´Žāĩā´•āĩž ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´¨ā´°ā´šā´ŋā´¤ā´Žā´žā´•āĩā´•āĩā´¨āĩā´¨āĩ, ā´…ā´¤āĩ‡ā´¸ā´Žā´¯ā´‚ -1 ⴈ ā´Žāĩ‚ā´˛āĩā´¯ā´‚ ā´¯ā´žā´¨āĩā´¤āĩā´°ā´ŋā´•ā´Žā´žā´¯ā´ŋ ⴏⴜāĩā´œāĩ€ā´•ā´°ā´ŋā´•āĩā´•āĩā´¨āĩā´¨āĩ.", "transcoding_max_bitrate": "ā´Ēā´°ā´Žā´žā´ĩā´§ā´ŋ ā´Ŧā´ŋā´ąāĩā´ąāĩā´ąāĩ‡ā´ąāĩā´ąāĩ", - "transcoding_max_bitrate_description": "ā´’ā´°āĩ ā´Ēā´°ā´Žā´žā´ĩā´§ā´ŋ ā´Ŧā´ŋā´ąāĩā´ąāĩā´ąāĩ‡ā´ąāĩā´ąāĩ ⴏⴜāĩā´œāĩ€ā´•ā´°ā´ŋā´•āĩā´•āĩā´¨āĩā´¨ā´¤āĩ ā´—āĩā´Ŗā´Žāĩ‡ā´¨āĩā´Žā´¯ā´ŋāĩŊ ⴚāĩ†ā´ąā´ŋā´¯āĩŠā´°āĩ ā´ĩā´ŋⴟāĩā´Ÿāĩā´ĩāĩ€ā´´āĩā´šā´¯āĩ‹ā´Ÿāĩ† ā´Ģā´¯āĩŊ ā´ĩā´˛āĩā´Ēāĩā´Ēā´™āĩā´™āĩž ā´•āĩ‚ā´Ÿāĩā´¤āĩŊ ā´Ēāĩā´°ā´ĩā´šā´¨ā´žā´¤āĩ€ā´¤ā´Žā´žā´•āĩā´•āĩā´‚. 720p-āĩŊ, ā´¸ā´žā´§ā´žā´°ā´Ŗ ā´Žāĩ‚ā´˛āĩā´¯ā´™āĩā´™āĩž VP9 ā´…ā´˛āĩā´˛āĩ†ā´™āĩā´•ā´ŋāĩŊ HEVC-ā´•āĩā´•āĩ 2600 kbit/s, ā´…ā´˛āĩā´˛āĩ†ā´™āĩā´•ā´ŋāĩŊ H.264-ā´¨āĩ 4500 kbit/s ⴆ⴪āĩ. 0 ⴆⴝā´ŋ ⴏⴜāĩā´œāĩ€ā´•ā´°ā´ŋⴚāĩā´šā´žāĩŊ ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´¨ā´°ā´šā´ŋā´¤ā´Žā´žā´•āĩā´‚.", + "transcoding_max_bitrate_description": "ā´Ēā´°ā´Žā´žā´ĩā´§ā´ŋ ā´Ŧā´ŋā´ąāĩā´ąāĩā´ąāĩ‡ā´ąāĩā´ąāĩ ⴏⴜāĩā´œāĩ€ā´•ā´°ā´ŋā´•āĩā´•āĩā´¨āĩā´¨ā´¤āĩ ā´—āĩā´Ŗā´Žāĩ‡ā´¨āĩā´Žā´¯ā´ŋāĩŊ ⴚāĩ†ā´ąā´ŋā´¯āĩŠā´°āĩ ā´•āĩā´ąā´ĩāĩā´Ŗāĩā´Ÿā´žā´•āĩā´•āĩā´Žāĩ†ā´™āĩā´•ā´ŋā´˛āĩā´‚ ā´Ģā´¯āĩŊ ā´ĩā´˛āĩā´Ēāĩā´Ēā´™āĩā´™āĩž ā´Žāĩāĩģā´•āĩ‚ā´Ÿāĩā´Ÿā´ŋ ā´Ēāĩā´°ā´ĩⴚā´ŋā´•āĩā´•ā´žāĩģ ā´¸ā´šā´žā´¯ā´ŋā´•āĩā´•āĩā´‚. 720p-āĩŊ, ā´¸ā´žā´§ā´žā´°ā´Ŗ ā´Žāĩ‚ā´˛āĩā´¯ā´™āĩā´™āĩž VP9 ā´…ā´˛āĩā´˛āĩ†ā´™āĩā´•ā´ŋāĩŊ HEVC-ā´•āĩā´•āĩ 2600 kbit/s, ā´…ā´˛āĩā´˛āĩ†ā´™āĩā´•ā´ŋāĩŊ H.264-ā´¨āĩ 4500 kbit/s ⴆ⴪āĩ. 0 ā´¨āĩŊā´•ā´ŋā´¯ā´žāĩŊ ⴇⴤāĩ ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´¨ā´°ā´šā´ŋā´¤ā´Žā´žā´•āĩā´‚. ā´¯āĩ‚ā´Ŗā´ŋā´ąāĩā´ąāĩ ā´¨āĩŊā´•ā´ŋā´¯ā´ŋā´˛āĩā´˛āĩ†ā´™āĩā´•ā´ŋāĩŊ, k (kbit/s) ⴆ⴪āĩ†ā´¨āĩā´¨āĩ ā´•ā´Ŗā´•āĩā´•ā´žā´•āĩā´•āĩā´‚; ā´…ā´¤āĩā´•āĩŠā´Ŗāĩā´Ÿāĩ 5000, 5000k, 5M (Mbit/s) ā´Žā´¨āĩā´¨ā´ŋā´ĩ ā´¤āĩā´˛āĩā´¯ā´Žā´žā´Ŗāĩ.", "transcoding_max_keyframe_interval": "ā´Ēā´°ā´Žā´žā´ĩā´§ā´ŋ ā´•āĩ€ā´Ģāĩā´°āĩ†ā´¯ā´ŋā´‚ ā´‡ā´Ÿā´ĩāĩ‡ā´ŗ", "transcoding_max_keyframe_interval_description": "ā´•āĩ€ā´Ģāĩā´°āĩ†ā´¯ā´ŋā´Žāĩā´•āĩžā´•āĩā´•ā´ŋⴟⴝā´ŋā´˛āĩā´ŗāĩā´ŗ ā´Ēā´°ā´Žā´žā´ĩā´§ā´ŋ ā´Ģāĩā´°āĩ†ā´¯ā´ŋā´‚ ā´Ļāĩ‚ā´°ā´‚ ⴏⴜāĩā´œā´Žā´žā´•āĩā´•āĩā´¨āĩā´¨āĩ. ā´•āĩā´ąā´žāĩā´ž ā´Žāĩ‚ā´˛āĩā´¯ā´™āĩā´™āĩž ā´•ā´‚ā´Ēāĩā´°ā´ˇāĩģ ā´•ā´žā´°āĩā´¯ā´•āĩā´ˇā´Žā´¤ ā´•āĩā´ąā´¯āĩā´•āĩā´•āĩā´¨āĩā´¨āĩ, ā´Ēā´•āĩā´ˇāĩ‡ ā´¸āĩ€ā´•āĩā´•āĩ ā´¸ā´Žā´¯ā´‚ ā´Žāĩ†ā´šāĩā´šā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´¤āĩā´¤āĩā´•ā´¯āĩā´‚ ā´ĩāĩ‡ā´—ⴤⴝāĩ‡ā´ąā´ŋā´¯ ā´šā´˛ā´¨ā´Žāĩā´ŗāĩā´ŗ ā´°ā´‚ā´—ā´™āĩā´™ā´ŗā´ŋāĩŊ ā´—āĩā´Ŗā´Žāĩ‡ā´¨āĩā´Ž ā´Žāĩ†ā´šāĩā´šā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´¤āĩā´¤āĩā´•ā´¯āĩā´‚ ⴚāĩ†ā´¯āĩā´¤āĩ‡ā´•āĩā´•ā´žā´‚. 0 ⴈ ā´Žāĩ‚ā´˛āĩā´¯ā´‚ ā´¯ā´žā´¨āĩā´¤āĩā´°ā´ŋā´•ā´Žā´žā´¯ā´ŋ ⴏⴜāĩā´œāĩ€ā´•ā´°ā´ŋā´•āĩā´•āĩā´¨āĩā´¨āĩ.", "transcoding_optimal_description": "ⴞⴕāĩā´ˇāĩā´¯ā´Žā´ŋⴟāĩā´Ÿ ā´ąāĩ†ā´¸ā´˛āĩā´¯āĩ‚ⴎⴍāĩ‡ā´•āĩā´•ā´žāĩž ⴉⴝāĩŧā´¨āĩā´¨ā´¤āĩ‹ ā´…ā´‚ā´—āĩ€ā´•āĩƒā´¤ ā´Ģāĩ‹āĩŧā´Žā´žā´ąāĩā´ąā´ŋāĩŊ ā´…ā´˛āĩā´˛ā´žā´¤āĩā´¤ā´¤āĩ‹ ⴆⴝ ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ā´•āĩž", @@ -348,7 +372,7 @@ "transcoding_target_resolution": "ⴞⴕāĩā´ˇāĩā´¯ā´Žā´ŋⴟāĩā´¨āĩā´¨ ā´ąāĩ†ā´¸ā´˛āĩā´¯āĩ‚ā´ˇāĩģ", "transcoding_target_resolution_description": "ⴉⴝāĩŧā´¨āĩā´¨ ā´ąāĩ†ā´¸ā´˛āĩā´¯āĩ‚ⴎⴍāĩā´•āĩžā´•āĩā´•āĩ ā´•āĩ‚ā´Ÿāĩā´¤āĩŊ ā´ĩā´ŋā´ļā´Ļā´žā´‚ā´ļā´™āĩā´™āĩž ⴏⴂⴰⴕāĩā´ˇā´ŋā´•āĩā´•ā´žāĩģ ā´•ā´´ā´ŋā´¯āĩā´‚, ā´Ēā´•āĩā´ˇāĩ‡ ā´Žāĩģā´•āĩ‹ā´Ąāĩ ⴚāĩ†ā´¯āĩā´¯ā´žāĩģ ā´•āĩ‚ā´Ÿāĩā´¤āĩŊ ā´¸ā´Žā´¯ā´Žāĩ†ā´Ÿāĩā´•āĩā´•āĩā´‚, ā´ĩā´˛ā´ŋā´¯ ā´Ģā´¯āĩŊ ā´ĩā´˛āĩā´Ēāĩā´Ēā´Žāĩā´Ŗāĩā´Ÿā´žā´•āĩā´‚, ā´•āĩ‚ā´Ÿā´žā´¤āĩ† ā´†ā´Ēāĩā´Ēā´ŋā´¨āĩā´ąāĩ† ā´Ēāĩā´°ā´¤ā´ŋā´•ā´°ā´Ŗā´ļāĩ‡ā´ˇā´ŋ ā´•āĩā´ąā´¯āĩā´•āĩā´•āĩā´•ā´¯āĩā´‚ ⴚāĩ†ā´¯āĩā´¯āĩā´‚.", "transcoding_temporal_aq": "ⴟāĩ†ā´Žāĩā´Ēā´ąāĩŊ AQ", - "transcoding_temporal_aq_description": "NVENC-ā´•āĩā´•āĩ ā´Žā´žā´¤āĩā´°ā´‚ ā´Ŧā´žā´§ā´•ā´‚. ⴉⴝāĩŧā´¨āĩā´¨ ā´ĩā´ŋā´ļā´Ļā´žā´‚ā´ļā´™āĩā´™ā´ŗāĩā´‚ ā´•āĩā´ąā´žāĩā´ž ⴚⴞⴍā´ĩāĩā´Žāĩā´ŗāĩā´ŗ ā´°ā´‚ā´—ā´™āĩā´™ā´ŗāĩā´Ÿāĩ† ā´—āĩā´Ŗā´Žāĩ‡ā´¨āĩā´Ž ā´ĩāĩŧā´Ļāĩā´§ā´ŋā´Ēāĩā´Ēā´ŋā´•āĩā´•āĩā´¨āĩā´¨āĩ. ā´Ēā´´ā´¯ ā´‰ā´Ēā´•ā´°ā´Ŗā´™āĩā´™ā´ŗāĩā´Žā´žā´¯ā´ŋ ā´ĒāĩŠā´°āĩā´¤āĩā´¤ā´Ēāĩā´Ēāĩ†ā´Ÿā´Ŗā´Žāĩ†ā´¨āĩā´¨ā´ŋā´˛āĩā´˛.", + "transcoding_temporal_aq_description": "NVENC-ā´•āĩā´•āĩ ā´Žā´žā´¤āĩā´°ā´‚ ā´Ŧā´žā´§ā´•ā´‚. ⴟāĩ†ā´Žāĩā´Ēā´ąāĩŊ ā´…ā´Ąā´žā´Ēāĩā´ąāĩā´ąāĩ€ā´ĩāĩ ā´•āĩā´ĩā´žā´Ŗāĩā´Ÿāĩˆā´¸āĩ‡ā´ˇāĩģ (Temporal Adaptive Quantization) ⴉⴝāĩŧā´¨āĩā´¨ ā´ĩā´ŋā´ļā´Ļā´žā´‚ā´ļā´™āĩā´™ā´ŗāĩā´‚ ā´•āĩā´ąā´žāĩā´ž ⴚⴞⴍā´ĩāĩā´Žāĩā´ŗāĩā´ŗ ā´°ā´‚ā´—ā´™āĩā´™ā´ŗāĩā´Ÿāĩ† ā´—āĩā´Ŗā´Žāĩ‡ā´¨āĩā´Ž ā´ĩāĩŧā´Ļāĩā´§ā´ŋā´Ēāĩā´Ēā´ŋā´•āĩā´•āĩā´¨āĩā´¨āĩ. ā´Ēā´´ā´¯ ā´‰ā´Ēā´•ā´°ā´Ŗā´™āĩā´™ā´ŗāĩā´Žā´žā´¯ā´ŋ ā´ĒāĩŠā´°āĩā´¤āĩā´¤ā´Ēāĩā´Ēāĩ†ā´Ÿā´Ŗā´Žāĩ†ā´¨āĩā´¨ā´ŋā´˛āĩā´˛.", "transcoding_threads": "ā´¤āĩā´°āĩ†ā´Ąāĩā´•āĩž", "transcoding_threads_description": "ⴉⴝāĩŧā´¨āĩā´¨ ā´Žāĩ‚ā´˛āĩā´¯ā´™āĩā´™āĩž ā´ĩāĩ‡ā´—ⴤⴝāĩ‡ā´ąā´ŋā´¯ ā´Žāĩģā´•āĩ‹ā´Ąā´ŋā´‚ā´—ā´ŋā´˛āĩ‡ā´•āĩā´•āĩ ⴍⴝā´ŋā´•āĩā´•āĩā´¨āĩā´¨āĩ, ā´Ēā´•āĩā´ˇāĩ‡ ā´¸āĩ†āĩŧā´ĩā´ąā´ŋā´¨āĩ ā´Žā´ąāĩā´ąāĩ ⴜāĩ‹ā´˛ā´ŋā´•āĩž ā´Ēāĩā´°āĩ‹ā´¸ā´¸āĩā´¸āĩ ⴚāĩ†ā´¯āĩā´¯ā´žāĩģ ā´•āĩā´ąā´šāĩā´šāĩ ā´‡ā´Ÿā´‚ ā´¨āĩŊā´•āĩā´¨āĩā´¨āĩ. ⴈ ā´Žāĩ‚ā´˛āĩā´¯ā´‚ ā´¸ā´ŋā´Ēā´ŋā´¯āĩ ā´•āĩ‹ā´ąāĩā´•ā´ŗāĩā´Ÿāĩ† ā´Žā´Ŗāĩā´Ŗā´¤āĩā´¤āĩ‡ā´•āĩā´•ā´žāĩž ā´•āĩ‚ā´Ÿāĩā´¤ā´˛ā´žā´•ā´°āĩā´¤āĩ. 0 ⴆⴝā´ŋ ⴏⴜāĩā´œāĩ€ā´•ā´°ā´ŋⴚāĩā´šā´žāĩŊ ā´‰ā´Ēā´¯āĩ‹ā´—ā´‚ ā´Ēā´°ā´Žā´žā´ĩā´§ā´ŋā´¯ā´žā´•āĩā´•āĩā´¨āĩā´¨āĩ.", "transcoding_tone_mapping": "ⴟāĩ‹āĩē-ā´Žā´žā´Ēāĩā´Ēā´ŋā´‚ā´—āĩ", @@ -381,7 +405,6 @@ "user_restore_scheduled_removal": "ā´‰ā´Ēā´¯āĩ‹ā´•āĩā´¤ā´žā´ĩā´ŋā´¨āĩ† ā´Ēāĩā´¨ā´ƒā´¸āĩā´Ĩā´žā´Ēā´ŋā´•āĩā´•āĩā´• - {date, date, long}-ā´¨āĩ ā´¨āĩ€ā´•āĩā´•ā´‚ā´šāĩ†ā´¯āĩā´¯ā´žāĩģ ā´ˇāĩ†ā´Ąāĩā´¯āĩ‚āĩž ⴚāĩ†ā´¯āĩâ€Œā´¤ā´ŋā´°ā´ŋā´•āĩā´•āĩā´¨āĩā´¨āĩ", "user_settings": "ā´‰ā´Ēā´¯āĩ‹ā´•āĩā´¤ā´žā´ĩā´ŋā´¨āĩā´ąāĩ† ā´•āĩā´°ā´Žāĩ€ā´•ā´°ā´Ŗā´™āĩā´™āĩž", "user_settings_description": "ā´‰ā´Ēā´¯āĩ‹ā´•āĩā´¤āĩƒ ā´•āĩā´°ā´Žāĩ€ā´•ā´°ā´Ŗā´™āĩā´™āĩž ā´•āĩˆā´•ā´žā´°āĩā´¯ā´‚ ⴚāĩ†ā´¯āĩā´¯āĩā´•", - "user_successfully_removed": "{email} ā´Žā´¨āĩā´¨ ā´‰ā´Ēā´¯āĩ‹ā´•āĩā´¤ā´žā´ĩā´ŋā´¨āĩ† ā´ĩā´ŋā´œā´¯ā´•ā´°ā´Žā´žā´¯ā´ŋ ā´¨āĩ€ā´•āĩā´•ā´‚ā´šāĩ†ā´¯āĩā´¤āĩ.", "version_check_enabled_description": "ā´Ēā´¤ā´ŋā´Ēāĩā´Ēāĩ ā´Ēā´°ā´ŋā´ļāĩ‹ā´§ā´¨ ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´¨ā´•āĩā´ˇā´Žā´Žā´žā´•āĩā´•āĩā´•", "version_check_implications": "ā´Ēā´¤ā´ŋā´Ēāĩā´Ēāĩ ā´Ēā´°ā´ŋā´ļāĩ‹ā´§ā´¨ ā´Ģāĩ€ā´šāĩā´šāĩŧ github.com-ā´Žā´žā´¯ā´ŋ ⴆⴍāĩā´•ā´žā´˛ā´ŋā´• ā´†ā´ļā´¯ā´ĩā´ŋā´¨ā´ŋā´Žā´¯ā´¤āĩā´¤āĩ† ā´†ā´ļāĩā´°ā´¯ā´ŋⴚāĩā´šā´ŋā´°ā´ŋā´•āĩā´•āĩā´¨āĩā´¨āĩ", "version_check_settings": "ā´Ēā´¤ā´ŋā´Ēāĩā´Ēāĩ ā´Ēā´°ā´ŋā´ļāĩ‹ā´§ā´¨", @@ -399,11 +422,11 @@ "advanced_settings_prefer_remote_subtitle": "ⴚā´ŋā´˛ ā´‰ā´Ēā´•ā´°ā´Ŗā´™āĩā´™ā´ŗā´ŋāĩŊ ā´Ēāĩā´°ā´žā´Ļāĩ‡ā´ļā´ŋā´• ā´…ā´¸ā´ąāĩā´ąāĩā´•ā´ŗā´ŋāĩŊ ā´¨ā´ŋā´¨āĩā´¨āĩ ⴤⴂā´Ŧāĩā´¨āĩ†ā´¯ā´ŋā´˛āĩā´•āĩž ā´˛āĩ‹ā´Ąāĩā´šāĩ†ā´¯āĩā´¯ā´žāĩģ ā´ĩā´ŗā´°āĩ† ā´ĩāĩ‡ā´—ā´¤ ā´•āĩā´ąā´ĩā´žā´Ŗāĩ. ā´Ēā´•ā´°ā´‚ ā´ąā´ŋā´Žāĩ‹ā´Ÿāĩā´Ÿāĩ ⴚā´ŋā´¤āĩā´°ā´™āĩā´™āĩž ā´˛āĩ‹ā´Ąāĩā´šāĩ†ā´¯āĩā´¯ā´žāĩģ ⴈ ā´•āĩā´°ā´Žāĩ€ā´•ā´°ā´Ŗā´‚ ⴏⴜāĩ€ā´ĩā´Žā´žā´•āĩā´•āĩā´•.", "advanced_settings_prefer_remote_title": "ā´ąā´ŋā´Žāĩ‹ā´Ÿāĩā´Ÿāĩ ⴚā´ŋā´¤āĩā´°ā´™āĩā´™āĩžā´•āĩā´•āĩ ā´Žāĩāĩģā´—ā´Ŗā´¨ ā´¨āĩŊā´•āĩā´•", "advanced_settings_proxy_headers_subtitle": "ā´“ā´°āĩ‹ ā´¨āĩ†ā´ąāĩā´ąāĩâ€Œā´ĩāĩŧā´•āĩā´•āĩ ā´…ā´­āĩā´¯āĩŧā´¤āĩā´Ĩⴍⴝāĩâ€Œā´•āĩā´•āĩŠā´Ēāĩā´Ēā´ĩāĩā´‚ Immich ⴅⴝⴝāĩâ€Œā´•āĩā´•āĩ‡ā´Ŗāĩā´Ÿ ā´Ēāĩā´°āĩ‹ā´•āĩā´¸ā´ŋ ā´šāĩ†ā´Ąā´ąāĩā´•āĩž ā´¨ā´ŋāĩŧā´ĩⴚā´ŋā´•āĩā´•āĩā´•", - "advanced_settings_proxy_headers_title": "ā´Ēāĩā´°āĩ‹ā´•āĩā´¸ā´ŋ ā´šāĩ†ā´Ąā´ąāĩā´•āĩž", + "advanced_settings_proxy_headers_title": "ā´•ā´¸āĩā´ąāĩā´ąā´‚ ā´Ēāĩā´°āĩ‹ā´•āĩā´¸ā´ŋ ā´šāĩ†ā´Ąā´ąāĩā´•āĩž [ā´Ēā´°āĩ€ā´•āĩā´ˇā´Ŗā´žā´Ÿā´ŋā´¸āĩā´Ĩā´žā´¨ā´¤āĩā´¤ā´ŋāĩŊ]", "advanced_settings_readonly_mode_subtitle": "ā´Ģāĩ‹ā´Ÿāĩā´Ÿāĩ‹ā´•āĩž ā´Žā´žā´¤āĩā´°ā´‚ ā´•ā´žā´Ŗā´žāĩģ ā´•ā´´ā´ŋā´¯āĩā´¨āĩā´¨ ā´ąāĩ€ā´Ąāĩ-ā´“āĩēā´˛ā´ŋ ā´Žāĩ‹ā´Ąāĩ ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´¨ā´•āĩā´ˇā´Žā´Žā´žā´•āĩā´•āĩā´¨āĩā´¨āĩ. ā´’ā´¨āĩā´¨ā´ŋⴞⴧā´ŋā´•ā´‚ ⴚā´ŋā´¤āĩā´°ā´™āĩā´™āĩž ā´¤ā´ŋā´°ā´žāĩā´žāĩ†ā´Ÿāĩā´•āĩā´•āĩŊ, ā´Ēā´™āĩā´•ā´ŋⴟāĩŊ, ā´•ā´žā´¸āĩā´ąāĩā´ąā´ŋā´‚ā´—āĩ, ⴇⴞāĩā´˛ā´žā´¤ā´žā´•āĩā´•āĩŊ ā´Žā´¨āĩā´¨ā´ŋā´ĩā´¯āĩ†ā´˛āĩā´˛ā´žā´‚ ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´¨ā´°ā´šā´ŋā´¤ā´Žā´žā´•āĩā´‚. ā´Ēāĩā´°ā´§ā´žā´¨ ā´¸āĩā´•āĩā´°āĩ€ā´¨ā´ŋā´˛āĩ† ā´‰ā´Ēā´¯āĩ‹ā´•āĩā´¤āĩƒ ā´…ā´ĩā´¤ā´žāĩŧ ā´ĩā´´ā´ŋ ā´ąāĩ€ā´Ąāĩ-ā´“āĩēā´˛ā´ŋ ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´¨ā´•āĩā´ˇā´Žā´Žā´žā´•āĩā´•āĩā´•/ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´¨ā´°ā´šā´ŋā´¤ā´Žā´žā´•āĩā´•āĩā´•.", "advanced_settings_readonly_mode_title": "ā´ąāĩ€ā´Ąāĩ-ā´“āĩēā´˛ā´ŋ ā´Žāĩ‹ā´Ąāĩ", "advanced_settings_self_signed_ssl_subtitle": "ā´¸āĩ†āĩŧā´ĩāĩŧ ā´Žāĩģā´Ąāĩâ€Œā´Ēāĩ‹ā´¯ā´ŋā´¨āĩā´ąā´ŋā´¨ā´žā´¯āĩā´ŗāĩā´ŗ SSL ā´¸āĩŧⴟāĩā´Ÿā´ŋā´Ģā´ŋā´•āĩā´•ā´ąāĩā´ąāĩ ā´Ēā´°ā´ŋā´ļāĩ‹ā´§ā´¨ ā´’ā´´ā´ŋā´ĩā´žā´•āĩā´•āĩā´¨āĩā´¨āĩ. ā´¸āĩā´ĩⴝⴂ ā´’ā´Ēāĩā´Ēā´ŋⴟāĩā´Ÿ ā´¸āĩŧⴟāĩā´Ÿā´ŋā´Ģā´ŋā´•āĩā´•ā´ąāĩā´ąāĩā´•āĩžā´•āĩā´•āĩ ā´†ā´ĩā´ļāĩā´¯ā´Žā´žā´Ŗāĩ.", - "advanced_settings_self_signed_ssl_title": "ā´¸āĩā´ĩⴝⴂ ā´’ā´Ēāĩā´Ēā´ŋⴟāĩā´Ÿ SSL ā´¸āĩŧⴟāĩā´Ÿā´ŋā´Ģā´ŋā´•āĩā´•ā´ąāĩā´ąāĩā´•āĩž ā´…ā´¨āĩā´ĩā´Ļā´ŋā´•āĩā´•āĩā´•", + "advanced_settings_self_signed_ssl_title": "ā´¸āĩā´ĩⴝⴂ ā´’ā´Ēāĩā´Ēā´ŋⴟāĩā´Ÿ SSL ā´¸āĩŧⴟāĩā´Ÿā´ŋā´Ģā´ŋā´•āĩā´•ā´ąāĩā´ąāĩā´•āĩž ā´…ā´¨āĩā´ĩā´Ļā´ŋā´•āĩā´•āĩā´• [ā´Ēā´°āĩ€ā´•āĩā´ˇā´Ŗā´žā´Ÿā´ŋā´¸āĩā´Ĩā´žā´¨ā´¤āĩā´¤ā´ŋāĩŊ]", "advanced_settings_sync_remote_deletions_subtitle": "ā´ĩāĩ†ā´Ŧā´ŋāĩŊ ā´† ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´¨ā´‚ ⴍⴟⴤāĩā´¤āĩā´Žāĩā´Ēāĩ‹āĩž ⴈ ā´‰ā´Ēā´•ā´°ā´Ŗā´¤āĩā´¤ā´ŋā´˛āĩ† ā´’ā´°āĩ ā´…ā´¸ā´ąāĩā´ąāĩ ā´¯ā´žā´¨āĩā´¤āĩā´°ā´ŋā´•ā´Žā´žā´¯ā´ŋ ⴇⴞāĩā´˛ā´žā´¤ā´žā´•āĩā´•āĩā´•ā´¯āĩ‹ ā´Ēāĩā´¨ā´ƒā´¸āĩā´Ĩā´žā´Ēā´ŋā´•āĩā´•āĩā´•ā´¯āĩ‹ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "advanced_settings_sync_remote_deletions_title": "ā´ąā´ŋā´Žāĩ‹ā´Ÿāĩā´Ÿāĩ ⴇⴞāĩā´˛ā´žā´¤ā´žā´•āĩā´•ā´˛āĩā´•āĩž ā´¸ā´ŋā´™āĩā´•āĩ ⴚāĩ†ā´¯āĩā´¯āĩā´• [ā´Ēā´°āĩ€ā´•āĩā´ˇā´Ŗā´žā´Ÿā´ŋā´¸āĩā´Ĩā´žā´¨ā´¤āĩā´¤ā´ŋāĩŊ]", "advanced_settings_tile_subtitle": "ā´ĩā´ŋā´Ēāĩā´˛ā´Žā´žā´¯ ā´‰ā´Ēā´¯āĩ‹ā´•āĩā´¤āĩƒ ā´•āĩā´°ā´Žāĩ€ā´•ā´°ā´Ŗā´™āĩā´™āĩž", @@ -412,6 +435,7 @@ "age_months": "ā´Ēāĩā´°ā´žā´¯ā´‚ {months, plural, one {# ā´Žā´žā´¸ā´‚} other {# ā´Žā´žā´¸ā´‚}}", "age_year_months": "ā´Ēāĩā´°ā´žā´¯ā´‚ 1 ā´ĩāĩŧⴎⴂ, {months, plural, one {# ā´Žā´žā´¸ā´‚} other {# ā´Žā´žā´¸ā´‚}}", "age_years": "{years, plural, other {ā´Ēāĩā´°ā´žā´¯ā´‚ #}}", + "album": "ā´†āĩŊā´Ŧā´‚", "album_added": "ā´†āĩŊā´Ŧā´‚ ⴚāĩ‡āĩŧā´¤āĩā´¤āĩ", "album_added_notification_setting_description": "ā´¨ā´ŋā´™āĩā´™ā´ŗāĩ† ā´’ā´°āĩ ā´Ēā´™āĩā´•ā´ŋⴟāĩā´Ÿ ā´†āĩŊā´Ŧā´¤āĩā´¤ā´ŋā´˛āĩ‡ā´•āĩā´•āĩ ⴚāĩ‡āĩŧā´•āĩā´•āĩā´Žāĩā´Ēāĩ‹āĩž ā´’ā´°āĩ ā´‡ā´Žāĩ†ā´¯ā´ŋāĩŊ ā´…ā´ąā´ŋā´¯ā´ŋā´Ēāĩā´Ēāĩ ā´¸āĩā´ĩāĩ€ā´•ā´°ā´ŋā´•āĩā´•āĩā´•", "album_cover_updated": "ā´†āĩŊā´Ŧā´‚ ā´•ā´ĩāĩŧ ā´…ā´Ēāĩā´Ąāĩ‡ā´ąāĩā´ąāĩ ⴚāĩ†ā´¯āĩā´¤āĩ", @@ -457,16 +481,21 @@ "allow_edits": "ā´Žā´Ąā´ŋā´ąāĩā´ąāĩā´•āĩž ā´…ā´¨āĩā´ĩā´Ļā´ŋā´•āĩā´•āĩā´•", "allow_public_user_to_download": "ā´ĒāĩŠā´¤āĩ ā´‰ā´Ēā´¯āĩ‹ā´•āĩā´¤ā´žā´ĩā´ŋā´¨āĩ† ā´Ąāĩ—āĩēā´˛āĩ‹ā´Ąāĩ ⴚāĩ†ā´¯āĩā´¯ā´žāĩģ ā´…ā´¨āĩā´ĩā´Ļā´ŋā´•āĩā´•āĩā´•", "allow_public_user_to_upload": "ā´ĒāĩŠā´¤āĩ ā´‰ā´Ēā´¯āĩ‹ā´•āĩā´¤ā´žā´ĩā´ŋā´¨āĩ† ā´…ā´Ēāĩâ€Œā´˛āĩ‹ā´Ąāĩ ⴚāĩ†ā´¯āĩā´¯ā´žāĩģ ā´…ā´¨āĩā´ĩā´Ļā´ŋā´•āĩā´•āĩā´•", + "allowed": "ā´…ā´¨āĩā´ĩā´Ļā´ŋⴚāĩā´šāĩ", "alt_text_qr_code": "QR ā´•āĩ‹ā´Ąāĩ ⴚā´ŋā´¤āĩā´°ā´‚", "anti_clockwise": "ā´…ā´Ēāĩā´°ā´Ļā´•āĩā´ˇā´ŋā´Ŗā´Žā´žā´¯ā´ŋ", "api_key": "API ā´•āĩ€", "api_key_description": "ⴈ ā´Žāĩ‚ā´˛āĩā´¯ā´‚ ā´’ā´°āĩ ā´¤ā´ĩā´Ŗ ā´Žā´žā´¤āĩā´°ā´Žāĩ‡ ā´•ā´žā´Ŗā´ŋā´•āĩā´•āĩ‚. ā´ĩā´ŋāĩģā´Ąāĩ‹ ā´…ā´Ÿā´¯āĩā´•āĩā´•āĩā´¨āĩā´¨ā´¤ā´ŋā´¨āĩ ā´Žāĩā´Žāĩā´Ēāĩ ⴇⴤāĩ ā´Ēā´•āĩŧā´¤āĩā´¤āĩā´¨āĩā´¨ā´¤āĩ ā´‰ā´ąā´Ēāĩā´Ēā´žā´•āĩā´•āĩā´•.", "api_key_empty": "ā´¨ā´ŋā´™āĩā´™ā´ŗāĩā´Ÿāĩ† API ā´•āĩ€ā´¯āĩā´Ÿāĩ† ā´Ēāĩ‡ā´°āĩ ā´ļāĩ‚ā´¨āĩā´¯ā´Žā´žā´•ā´°āĩā´¤āĩ", "api_keys": "API ā´•āĩ€ā´•āĩž", + "app_architecture_variant": "ā´ĩāĩ‡ā´°ā´ŋⴝⴍāĩā´ąāĩ (ā´†āĩŧā´•āĩā´•ā´ŋⴟāĩ†ā´•āĩā´šāĩŧ)", "app_bar_signout_dialog_content": "ā´¸āĩˆāĩģ ā´”ā´Ÿāĩā´Ÿāĩ ⴚāĩ†ā´¯āĩā´¯ā´Ŗā´Žāĩ†ā´¨āĩā´¨āĩ ā´¨ā´ŋā´™āĩā´™āĩžā´•āĩā´•āĩ ā´‰ā´ąā´Ēāĩā´Ēā´žā´Ŗāĩ‹?", "app_bar_signout_dialog_ok": "ā´…ā´¤āĩ†", "app_bar_signout_dialog_title": "ā´¸āĩˆāĩģ ā´”ā´Ÿāĩā´Ÿāĩ", + "app_download_links": "ā´†ā´Ēāĩā´Ēāĩ ā´Ąāĩ—āĩēā´˛āĩ‹ā´Ąāĩ ā´˛ā´ŋā´™āĩā´•āĩā´•āĩž", "app_settings": "ā´†ā´Ēāĩā´Ēāĩ ā´•āĩā´°ā´Žāĩ€ā´•ā´°ā´Ŗā´™āĩā´™āĩž", + "app_stores": "ā´†ā´Ēāĩā´Ēāĩ ā´¸āĩā´ąāĩā´ąāĩ‹ā´ąāĩā´•āĩž", + "app_update_available": "ā´†ā´Ēāĩā´Ēāĩ ā´…ā´Ēāĩâ€Œā´Ąāĩ‡ā´ąāĩā´ąāĩ ⴞⴭāĩā´¯ā´Žā´žā´Ŗāĩ", "appears_in": "ⴇⴤā´ŋāĩŊ ā´•ā´žā´Ŗā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´¨āĩā´¨āĩ", "apply_count": "ā´Ēāĩā´°ā´¯āĩ‹ā´—ā´ŋā´•āĩā´•āĩā´• ({count, number})", "archive": "ā´†āĩŧā´•āĩā´•āĩˆā´ĩāĩ", @@ -550,6 +579,7 @@ "backup_albums_sync": "ā´Ŧā´žā´•āĩā´•ā´Ēāĩā´Ēāĩ ā´†āĩŊā´Ŧā´‚ ā´¸ā´ŋāĩģā´•āĩā´°āĩŠā´Ŗāĩˆā´¸āĩ‡ā´ˇāĩģ", "backup_all": "ā´Žā´˛āĩā´˛ā´žā´‚ ā´Ŧā´žā´•āĩā´•ā´Ēāĩā´Ēāĩ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "backup_background_service_backup_failed_message": "ā´…ā´¸ā´ąāĩā´ąāĩā´•āĩž ā´Ŧā´žā´•āĩā´•ā´Ēāĩā´Ēāĩ ⴚāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨ā´¤ā´ŋāĩŊ ā´Ēā´°ā´žā´œā´¯ā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´Ÿāĩ. ā´ĩāĩ€ā´Ŗāĩā´Ÿāĩā´‚ ā´ļāĩā´°ā´Žā´ŋā´•āĩā´•āĩā´¨āĩā´¨āĩâ€Ļ", + "backup_background_service_complete_notification": "ā´…ā´¸ā´ąāĩā´ąāĩ ā´Ŧā´žā´•āĩā´•ā´Ēāĩā´Ēāĩ ā´Ēāĩ‚āĩŧā´¤āĩā´¤ā´ŋā´¯ā´žā´¯ā´ŋ", "backup_background_service_connection_failed_message": "ā´¸āĩ†āĩŧā´ĩā´ąā´ŋā´˛āĩ‡ā´•āĩā´•āĩ ā´•ā´Ŗā´•āĩā´ąāĩā´ąāĩā´šāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨ā´¤ā´ŋāĩŊ ā´Ēā´°ā´žā´œā´¯ā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´Ÿāĩ. ā´ĩāĩ€ā´Ŗāĩā´Ÿāĩā´‚ ā´ļāĩā´°ā´Žā´ŋā´•āĩā´•āĩā´¨āĩā´¨āĩâ€Ļ", "backup_background_service_current_upload_notification": "{filename} ā´…ā´Ēāĩâ€Œā´˛āĩ‹ā´Ąāĩ ⴚāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨āĩ", "backup_background_service_default_notification": "ā´Ēāĩā´¤ā´ŋā´¯ ā´…ā´¸ā´ąāĩā´ąāĩā´•āĩžā´•āĩā´•ā´žā´¯ā´ŋ ā´Ēā´°ā´ŋā´ļāĩ‹ā´§ā´ŋā´•āĩā´•āĩā´¨āĩā´¨āĩâ€Ļ", @@ -659,6 +689,8 @@ "change_password_description": "ⴇⴤāĩ ā´¨ā´ŋā´™āĩā´™āĩž ā´†ā´Ļāĩā´¯ā´Žā´žā´¯ā´ŋ ā´¸ā´ŋā´¸āĩā´ąāĩā´ąā´¤āĩā´¤ā´ŋāĩŊ ā´¸āĩˆāĩģ ā´‡āĩģ ⴚāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨ā´¤āĩā´•āĩŠā´Ŗāĩā´Ÿāĩ‹ ā´…ā´˛āĩā´˛āĩ†ā´™āĩā´•ā´ŋāĩŊ ā´¨ā´ŋā´™āĩā´™ā´ŗāĩā´Ÿāĩ† ā´Ēā´žā´¸āĩâ€Œā´ĩāĩ‡ā´Ąāĩ ā´Žā´žā´ąāĩā´ąā´žāĩģ ā´’ā´°āĩ ā´…ā´­āĩā´¯āĩŧā´¤āĩā´Ĩā´¨ ⴍⴟⴤāĩā´¤ā´ŋⴝⴤāĩā´•āĩŠā´Ŗāĩā´Ÿāĩ‹ ā´†ā´•ā´žā´‚. ā´Ļā´¯ā´ĩā´žā´¯ā´ŋ ā´¤ā´žā´´āĩ† ā´Ēāĩā´¤ā´ŋā´¯ ā´Ēā´žā´¸āĩâ€Œā´ĩāĩ‡ā´Ąāĩ ā´¨āĩŊā´•āĩā´•.", "change_password_form_confirm_password": "ā´Ēā´žā´¸āĩâ€Œā´ĩāĩ‡ā´Ąāĩ ā´¸āĩā´Ĩā´ŋā´°āĩ€ā´•ā´°ā´ŋā´•āĩā´•āĩā´•", "change_password_form_description": "ā´¨ā´Žā´¸āĩā´•ā´žā´°ā´‚ {name},\n\nⴇⴤāĩ ā´¨ā´ŋā´™āĩā´™āĩž ā´†ā´Ļāĩā´¯ā´Žā´žā´¯ā´ŋ ā´¸ā´ŋā´¸āĩā´ąāĩā´ąā´¤āĩā´¤ā´ŋāĩŊ ā´¸āĩˆāĩģ ā´‡āĩģ ⴚāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨ā´¤āĩā´•āĩŠā´Ŗāĩā´Ÿāĩ‹ ā´…ā´˛āĩā´˛āĩ†ā´™āĩā´•ā´ŋāĩŊ ā´¨ā´ŋā´™āĩā´™ā´ŗāĩā´Ÿāĩ† ā´Ēā´žā´¸āĩâ€Œā´ĩāĩ‡ā´Ąāĩ ā´Žā´žā´ąāĩā´ąā´žāĩģ ā´’ā´°āĩ ā´…ā´­āĩā´¯āĩŧā´¤āĩā´Ĩā´¨ ⴍⴟⴤāĩā´¤ā´ŋⴝⴤāĩā´•āĩŠā´Ŗāĩā´Ÿāĩ‹ ā´†ā´•ā´žā´‚. ā´Ļā´¯ā´ĩā´žā´¯ā´ŋ ā´¤ā´žā´´āĩ† ā´Ēāĩā´¤ā´ŋā´¯ ā´Ēā´žā´¸āĩâ€Œā´ĩāĩ‡ā´Ąāĩ ā´¨āĩŊā´•āĩā´•.", + "change_password_form_log_out": "ā´Žā´ąāĩā´ąāĩ†ā´˛āĩā´˛ā´ž ā´‰ā´Ēā´•ā´°ā´Ŗā´™āĩā´™ā´ŗā´ŋāĩŊ ā´¨ā´ŋā´¨āĩā´¨āĩā´‚ ā´˛āĩ‹ā´—āĩ ā´”ā´Ÿāĩā´Ÿāĩ ⴚāĩ†ā´¯āĩā´¯āĩā´•", + "change_password_form_log_out_description": "ā´Žā´ąāĩā´ąāĩ†ā´˛āĩā´˛ā´ž ā´‰ā´Ēā´•ā´°ā´Ŗā´™āĩā´™ā´ŗā´ŋāĩŊ ā´¨ā´ŋā´¨āĩā´¨āĩā´‚ ā´˛āĩ‹ā´—āĩ ā´”ā´Ÿāĩā´Ÿāĩ ⴚāĩ†ā´¯āĩā´¯ā´žāĩģ ā´ļāĩā´Ēā´žāĩŧā´ļ ⴚāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨āĩ", "change_password_form_new_password": "ā´Ēāĩā´¤ā´ŋā´¯ ā´Ēā´žā´¸āĩâ€Œā´ĩāĩ‡ā´Ąāĩ", "change_password_form_password_mismatch": "ā´Ēā´žā´¸āĩâ€Œā´ĩāĩ‡ā´Ąāĩā´•āĩž ā´ĒāĩŠā´°āĩā´¤āĩā´¤ā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´¨āĩā´¨ā´ŋā´˛āĩā´˛", "change_password_form_reenter_new_password": "ā´Ēāĩā´¤ā´ŋā´¯ ā´Ēā´žā´¸āĩâ€Œā´ĩāĩ‡ā´Ąāĩ ā´ĩāĩ€ā´Ŗāĩā´Ÿāĩā´‚ ā´¨āĩŊā´•āĩā´•", @@ -686,7 +718,7 @@ "client_cert_invalid_msg": "ā´…ā´¸ā´žā´§āĩā´ĩā´žā´¯ ā´¸āĩŧⴟāĩā´Ÿā´ŋā´Ģā´ŋā´•āĩā´•ā´ąāĩā´ąāĩ ā´Ģā´¯āĩŊ ā´…ā´˛āĩā´˛āĩ†ā´™āĩā´•ā´ŋāĩŊ ā´¤āĩ†ā´ąāĩā´ąā´žā´¯ ā´Ēā´žā´¸āĩâ€Œā´ĩāĩ‡ā´Ąāĩ", "client_cert_remove_msg": "ā´•āĩā´˛ā´¯ā´ŋā´¨āĩā´ąāĩ ā´¸āĩŧⴟāĩā´Ÿā´ŋā´Ģā´ŋā´•āĩā´•ā´ąāĩā´ąāĩ ā´¨āĩ€ā´•āĩā´•ā´‚ā´šāĩ†ā´¯āĩâ€Œā´¤āĩ", "client_cert_subtitle": "PKCS12 (.p12, .pfx) ā´Ģāĩ‹āĩŧā´Žā´žā´ąāĩā´ąāĩ ā´Žā´žā´¤āĩā´°ā´‚ ā´Ēā´ŋā´¨āĩā´¤āĩā´Ŗā´¯āĩā´•āĩā´•āĩā´¨āĩā´¨āĩ. ā´˛āĩ‹ā´—ā´ŋāĩģ ⴚāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨ā´¤ā´ŋā´¨āĩ ā´Žāĩā´Žāĩā´Ēāĩ ā´Žā´žā´¤āĩā´°ā´Žāĩ‡ ā´¸āĩŧⴟāĩā´Ÿā´ŋā´Ģā´ŋā´•āĩā´•ā´ąāĩā´ąāĩ ā´‡ā´Žāĩā´Ēāĩ‹āĩŧⴟāĩā´Ÿāĩ/ā´¨āĩ€ā´•āĩā´•ā´‚ā´šāĩ†ā´¯āĩā´¯āĩŊ ⴞⴭāĩā´¯ā´Žā´žā´•āĩ‚", - "client_cert_title": "SSL ā´•āĩā´˛ā´¯ā´ŋā´¨āĩā´ąāĩ ā´¸āĩŧⴟāĩā´Ÿā´ŋā´Ģā´ŋā´•āĩā´•ā´ąāĩā´ąāĩ", + "client_cert_title": "SSL ā´•āĩā´˛ā´¯ā´ŋā´¨āĩā´ąāĩ ā´¸āĩŧⴟāĩā´Ÿā´ŋā´Ģā´ŋā´•āĩā´•ā´ąāĩā´ąāĩ [ā´Ēā´°āĩ€ā´•āĩā´ˇā´Ŗā´žā´Ÿā´ŋā´¸āĩā´Ĩā´žā´¨ā´¤āĩā´¤ā´ŋāĩŊ]", "clockwise": "ā´Ēāĩā´°ā´Ļā´•āĩā´ˇā´ŋā´Ŗā´Žā´žā´¯ā´ŋ", "close": "ā´…ā´Ÿā´¯āĩā´•āĩā´•āĩā´•", "collapse": "ⴚāĩā´°āĩā´•āĩā´•āĩā´•", @@ -736,6 +768,7 @@ "create": "ā´¸āĩƒā´ˇāĩā´Ÿā´ŋā´•āĩā´•āĩā´•", "create_album": "ā´†āĩŊā´Ŧā´‚ ⴉ⴪āĩā´Ÿā´žā´•āĩā´•āĩā´•", "create_album_page_untitled": "ā´Ēāĩ‡ā´°ā´ŋā´˛āĩā´˛ā´žā´¤āĩā´¤ā´¤āĩ", + "create_api_key": "ā´Žā´Ēā´ŋⴐ ā´•āĩ€ ā´¸āĩƒā´ˇāĩā´Ÿā´ŋā´•āĩā´•āĩā´•", "create_library": "ā´˛āĩˆā´Ŧāĩā´°ā´ąā´ŋ ⴉ⴪āĩā´Ÿā´žā´•āĩā´•āĩā´•", "create_link": "ā´˛ā´ŋā´™āĩā´•āĩ ⴉ⴪āĩā´Ÿā´žā´•āĩā´•āĩā´•", "create_link_to_share": "ā´Ēā´™āĩā´•ā´ŋā´Ÿā´žāĩģ ā´˛ā´ŋā´™āĩā´•āĩ ⴉ⴪āĩā´Ÿā´žā´•āĩā´•āĩā´•", @@ -765,6 +798,7 @@ "daily_title_text_date_year": "E, MMM dd, yyyy", "dark": "ⴇⴰāĩā´Ŗāĩā´Ÿā´¤āĩ", "dark_theme": "ā´Ąā´žāĩŧā´•āĩā´•āĩ ā´¤āĩ€ā´‚ ⴟāĩ‹ā´—ā´ŋāĩž ⴚāĩ†ā´¯āĩā´¯āĩā´•", + "date": "ā´¤āĩ€ā´¯ā´¤ā´ŋ", "date_after": "ⴇⴤā´ŋā´¨āĩ ā´ļāĩ‡ā´ˇā´Žāĩā´ŗāĩā´ŗ ā´¤āĩ€ā´¯ā´¤ā´ŋ", "date_and_time": "ā´¤āĩ€ā´¯ā´¤ā´ŋā´¯āĩā´‚ ā´¸ā´Žā´¯ā´ĩāĩā´‚", "date_before": "ⴇⴤā´ŋā´¨āĩ ā´Žāĩā´Žāĩā´Ēāĩā´ŗāĩā´ŗ ā´¤āĩ€ā´¯ā´¤ā´ŋ", @@ -939,6 +973,7 @@ "failed_to_unstack_assets": "ā´…ā´¸ā´ąāĩā´ąāĩā´•āĩž ā´…āĩē-ā´¸āĩā´ąāĩā´ąā´žā´•āĩā´•āĩ ⴚāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨ā´¤ā´ŋāĩŊ ā´Ēā´°ā´žā´œā´¯ā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´Ÿāĩ", "failed_to_update_notification_status": "ā´…ā´ąā´ŋā´¯ā´ŋā´Ēāĩā´Ēā´ŋā´¨āĩā´ąāĩ† ā´¨ā´ŋā´˛ ā´…ā´Ēāĩā´Ąāĩ‡ā´ąāĩā´ąāĩ ⴚāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨ā´¤ā´ŋāĩŊ ā´Ēā´°ā´žā´œā´¯ā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´Ÿāĩ", "incorrect_email_or_password": "ā´¤āĩ†ā´ąāĩā´ąā´žā´¯ ā´‡ā´Žāĩ†ā´¯ā´ŋāĩŊ ā´…ā´˛āĩā´˛āĩ†ā´™āĩā´•ā´ŋāĩŊ ā´Ēā´žā´¸āĩâ€Œā´ĩāĩ‡ā´Ąāĩ", + "library_folder_already_exists": "ⴈ ā´‡ā´Žāĩā´Ēāĩ‹āĩŧⴟāĩā´Ÿāĩ ā´Ēā´žā´¤āĩā´¤āĩ ā´¨ā´ŋā´˛ā´ĩā´ŋā´˛āĩā´Ŗāĩā´Ÿāĩ.", "paths_validation_failed": "{paths, plural, one {# ā´Ēā´žā´¤āĩā´¤āĩ} other {# ā´Ēā´žā´¤āĩā´¤āĩā´•āĩž}} ā´¸ā´žā´§āĩ‚ā´•ā´°ā´Ŗā´¤āĩā´¤ā´ŋāĩŊ ā´Ēā´°ā´žā´œā´¯ā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´Ÿāĩ", "profile_picture_transparent_pixels": "ā´Ēāĩā´°āĩŠā´ĢāĩˆāĩŊ ⴚā´ŋā´¤āĩā´°ā´™āĩā´™āĩžā´•āĩā´•āĩ ā´¸āĩā´¤ā´žā´°āĩā´¯ā´Žā´žā´¯ ā´Ēā´ŋā´•āĩā´¸ā´˛āĩā´•āĩž ⴉ⴪āĩā´Ÿā´žā´•ā´°āĩā´¤āĩ. ā´Ļā´¯ā´ĩā´žā´¯ā´ŋ ā´¸āĩ‚ā´‚ ā´‡āĩģ ⴚāĩ†ā´¯āĩā´¯āĩā´• ā´•āĩ‚ā´Ÿā´žā´¤āĩ†/ā´…ā´˛āĩā´˛āĩ†ā´™āĩā´•ā´ŋāĩŊ ⴚā´ŋā´¤āĩā´°ā´‚ ā´¨āĩ€ā´•āĩā´•āĩā´•.", "quota_higher_than_disk_size": "ā´Ąā´ŋā´¸āĩā´•āĩ ā´ĩā´˛āĩā´Ēāĩā´Ēā´¤āĩā´¤āĩ‡ā´•āĩā´•ā´žāĩž ⴉⴝāĩŧā´¨āĩā´¨ ā´•āĩā´ĩā´žā´Ÿāĩā´Ÿ ā´¨ā´ŋā´™āĩā´™āĩž ⴏⴜāĩā´œā´Žā´žā´•āĩā´•ā´ŋā´¯ā´ŋā´°ā´ŋā´•āĩā´•āĩā´¨āĩā´¨āĩ", @@ -1023,11 +1058,13 @@ "unable_to_update_user": "ā´‰ā´Ēā´¯āĩ‹ā´•āĩā´¤ā´žā´ĩā´ŋā´¨āĩ† ā´…ā´Ēāĩā´Ąāĩ‡ā´ąāĩā´ąāĩ ⴚāĩ†ā´¯āĩā´¯ā´žāĩģ ā´•ā´´ā´ŋā´¯ā´ŋā´˛āĩā´˛", "unable_to_upload_file": "ā´Ģā´¯āĩŊ ā´…ā´Ēāĩâ€Œā´˛āĩ‹ā´Ąāĩ ⴚāĩ†ā´¯āĩā´¯ā´žāĩģ ā´•ā´´ā´ŋā´¯ā´ŋā´˛āĩā´˛" }, + "exclusion_pattern": "ā´’ā´´ā´ŋā´ĩā´žā´•āĩā´•āĩŊ ā´Ēā´žā´ąāĩā´ąāĩ‡āĩē", "exif": "Exif", "exif_bottom_sheet_description": "ā´ĩā´ŋā´ĩā´°ā´Ŗā´‚ ⴚāĩ‡āĩŧā´•āĩā´•āĩā´•...", "exif_bottom_sheet_description_error": "ā´ĩā´ŋā´ĩā´°ā´Ŗā´‚ ā´…ā´Ēāĩā´Ąāĩ‡ā´ąāĩā´ąāĩ ⴚāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨ā´¤ā´ŋāĩŊ ā´Ēā´ŋā´ļā´•āĩ", "exif_bottom_sheet_details": "ā´ĩā´ŋā´ļā´Ļā´žā´‚ā´ļā´™āĩā´™āĩž", "exif_bottom_sheet_location": "ā´¸āĩā´Ĩā´žā´¨ā´‚", + "exif_bottom_sheet_no_description": "ā´ĩā´ŋā´ĩā´°ā´Ŗā´Žā´ŋā´˛āĩā´˛", "exif_bottom_sheet_people": "ⴆⴺāĩā´•āĩž", "exif_bottom_sheet_person_add_person": "ā´Ēāĩ‡ā´°āĩ ⴚāĩ‡āĩŧā´•āĩā´•āĩā´•", "exit_slideshow": "ā´¸āĩā´˛āĩˆā´Ąāĩâ€Œā´ˇāĩ‹ā´¯ā´ŋāĩŊ ā´¨ā´ŋā´¨āĩā´¨āĩ ā´Ēāĩā´ąā´¤āĩā´¤āĩā´•ā´Ÿā´•āĩā´•āĩā´•", @@ -1066,6 +1103,7 @@ "features_setting_description": "ā´†ā´Ēāĩā´Ēāĩ ā´Ģāĩ€ā´šāĩā´šā´ąāĩā´•āĩž ā´•āĩˆā´•ā´žā´°āĩā´¯ā´‚ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "file_name": "ā´Ģⴝⴞā´ŋā´¨āĩā´ąāĩ† ā´Ēāĩ‡ā´°āĩ", "file_name_or_extension": "ā´Ģⴝⴞā´ŋā´¨āĩā´ąāĩ† ā´Ēāĩ‡ā´°āĩ ā´…ā´˛āĩā´˛āĩ†ā´™āĩā´•ā´ŋāĩŊ ā´Žā´•āĩā´¸āĩā´ąāĩā´ąāĩģā´ˇāĩģ", + "file_size": "ā´Ģā´¯āĩŊ ā´ĩā´˛ā´ŋā´Ēāĩā´Ēā´‚", "filename": "ā´Ģā´¯āĩŊā´¨ā´žā´Žā´‚", "filetype": "ā´Ģā´¯āĩŊ ⴤⴰⴂ", "filter": "ā´Ģā´ŋāĩŊⴟāĩā´Ÿāĩŧ ⴚāĩ†ā´¯āĩā´¯āĩā´•", @@ -1080,6 +1118,7 @@ "folders_feature_description": "ā´Ģā´¯āĩŊ ā´¸ā´ŋā´¸āĩā´ąāĩā´ąā´¤āĩā´¤ā´ŋā´˛āĩ† ā´Ģāĩ‹ā´Ÿāĩā´Ÿāĩ‹ā´•āĩžā´•āĩā´•āĩā´‚ ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ā´•āĩžā´•āĩā´•āĩā´Žā´žā´¯ā´ŋ ā´Ģāĩ‹āĩžā´Ąāĩŧ ā´•ā´žā´´āĩâ€Œā´š ā´Ŧāĩā´°āĩ—ā´¸āĩā´šāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨āĩ", "forgot_pin_code_question": "ā´¨ā´ŋā´™āĩā´™ā´ŗāĩā´Ÿāĩ† ā´Ēā´ŋāĩģ ā´Žā´ąā´¨āĩā´¨āĩ‹?", "forward": "ā´Žāĩā´¨āĩā´¨āĩ‹ā´Ÿāĩā´Ÿāĩ", + "full_path": "ā´Žāĩā´´āĩā´ĩāĩģ ā´Ēā´žā´¤āĩā´¤āĩ: {path}", "gcast_enabled": "ā´—āĩ‚ā´—ā´ŋāĩž ā´•ā´žā´¸āĩā´ąāĩā´ąāĩ", "gcast_enabled_description": "ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´ŋā´•āĩā´•āĩā´¨āĩā´¨ā´¤ā´ŋā´¨ā´žā´¯ā´ŋ ⴈ ā´Ģāĩ€ā´šāĩā´šāĩŧ ā´—āĩ‚ā´—ā´ŋā´ŗā´ŋāĩŊ ā´¨ā´ŋā´¨āĩā´¨āĩ ā´Ŧā´žā´šāĩā´¯ ā´‰ā´ąā´ĩā´ŋā´Ÿā´™āĩā´™āĩž ā´˛āĩ‹ā´Ąāĩā´šāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨āĩ.", "general": "ā´ĒāĩŠā´¤āĩā´ĩā´žā´¯ā´¤āĩ", @@ -1116,6 +1155,7 @@ "hide_named_person": "{name} ā´Žā´¨āĩā´¨ ā´ĩāĩā´¯ā´•āĩā´¤ā´ŋā´¯āĩ† ā´Žā´ąā´¯āĩā´•āĩā´•āĩā´•", "hide_password": "ā´Ēā´žā´¸āĩâ€Œā´ĩāĩ‡ā´Ąāĩ ā´Žā´ąā´¯āĩā´•āĩā´•āĩā´•", "hide_person": "ā´ĩāĩā´¯ā´•āĩā´¤ā´ŋā´¯āĩ† ā´Žā´ąā´¯āĩā´•āĩā´•āĩā´•", + "hide_text_recognition": "ⴟāĩ†ā´•āĩā´¸āĩā´ąāĩā´ąāĩ ā´¤ā´ŋā´°ā´ŋⴚāĩā´šā´ąā´ŋā´¯āĩŊ ā´Žā´ąā´¯āĩā´•āĩā´•āĩā´•", "hide_unnamed_people": "ā´Ēāĩ‡ā´°ā´ŋā´˛āĩā´˛ā´žā´¤āĩā´¤ ⴆⴺāĩā´•ā´ŗāĩ† ā´Žā´ąā´¯āĩā´•āĩā´•āĩā´•", "home_page_add_to_album_conflicts": "{album} ā´Žā´¨āĩā´¨ ā´†āĩŊā´Ŧā´¤āĩā´¤ā´ŋā´˛āĩ‡ā´•āĩā´•āĩ {added} ā´…ā´¸ā´ąāĩā´ąāĩā´•āĩž ⴚāĩ‡āĩŧā´¤āĩā´¤āĩ. {failed} ā´…ā´¸ā´ąāĩā´ąāĩā´•āĩž ⴇⴤā´ŋⴍⴕⴂ ā´†āĩŊā´Ŧā´¤āĩā´¤ā´ŋā´˛āĩā´Ŗāĩā´Ÿāĩ.", "home_page_add_to_album_err_local": "ā´Ēāĩā´°ā´žā´Ļāĩ‡ā´ļā´ŋā´• ā´…ā´¸ā´ąāĩā´ąāĩā´•āĩž ā´‡ā´Ēāĩā´Ēāĩ‹āĩž ā´†āĩŊā´Ŧā´™āĩā´™ā´ŗā´ŋā´˛āĩ‡ā´•āĩā´•āĩ ⴚāĩ‡āĩŧā´•āĩā´•ā´žāĩģ ā´•ā´´ā´ŋā´¯ā´ŋā´˛āĩā´˛, ā´’ā´´ā´ŋā´ĩā´žā´•āĩā´•āĩā´¨āĩā´¨āĩ", @@ -1161,6 +1201,8 @@ "import_path": "ā´‡ā´Žāĩā´Ēāĩ‹āĩŧⴟāĩā´Ÿāĩ ā´Ēā´žā´¤āĩā´¤āĩ", "in_albums": "{count, plural, one {# ā´†āĩŊā´Ŧā´¤āĩā´¤ā´ŋāĩŊ} other {# ā´†āĩŊā´Ŧā´™āĩā´™ā´ŗā´ŋāĩŊ}}", "in_archive": "ā´†āĩŧā´•āĩā´•āĩˆā´ĩā´ŋāĩŊ", + "in_year": "{year}-āĩŊ", + "in_year_selector": "ⴇⴤā´ŋāĩŊ", "include_archived": "ā´†āĩŧā´•āĩā´•āĩˆā´ĩāĩā´šāĩ†ā´¯āĩâ€Œā´¤ā´ĩ ā´‰āĩžā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´¤āĩā´¤āĩā´•", "include_shared_albums": "ā´Ēā´™āĩā´•ā´ŋⴟāĩā´Ÿ ā´†āĩŊā´Ŧā´™āĩā´™āĩž ā´‰āĩžā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´¤āĩā´¤āĩā´•", "include_shared_partner_assets": "ā´Ēā´™āĩā´•ā´ŋⴟāĩā´Ÿ ā´Ēā´™āĩā´•ā´žā´ŗā´ŋā´¯āĩā´Ÿāĩ† ā´…ā´¸ā´ąāĩā´ąāĩā´•āĩž ā´‰āĩžā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´¤āĩā´¤āĩā´•", @@ -1197,6 +1239,7 @@ "language_setting_description": "ā´¨ā´ŋā´™āĩā´™āĩžā´•āĩā´•ā´ŋā´ˇāĩā´Ÿā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´Ÿ ā´­ā´žā´ˇ ā´¤ā´ŋā´°ā´žāĩā´žāĩ†ā´Ÿāĩā´•āĩā´•āĩā´•", "large_files": "ā´ĩā´˛ā´ŋā´¯ ā´Ģⴝⴞāĩā´•āĩž", "last": "ā´…ā´ĩā´¸ā´žā´¨ā´¤āĩā´¤āĩ‡ā´¤āĩ", + "last_months": "{count, plural, one {ā´•ā´´ā´ŋā´žāĩā´ž ā´Žā´žā´¸ā´‚} other {ā´•ā´´ā´ŋā´žāĩā´ž # ā´Žā´žā´¸ā´™āĩā´™āĩž}}", "last_seen": "ā´…ā´ĩā´¸ā´žā´¨ā´‚ ā´•ā´Ŗāĩā´Ÿā´¤āĩ", "latest_version": "ā´ā´ąāĩā´ąā´ĩāĩā´‚ ā´Ēāĩā´¤ā´ŋā´¯ ā´Ēā´¤ā´ŋā´Ēāĩā´Ēāĩ", "latitude": "ā´…ā´•āĩā´ˇā´žā´‚ā´ļā´‚", @@ -1206,6 +1249,8 @@ "let_others_respond": "ā´Žā´ąāĩā´ąāĩā´ŗāĩā´ŗā´ĩā´°āĩ† ā´Ēāĩā´°ā´¤ā´ŋā´•ā´°ā´ŋā´•āĩā´•ā´žāĩģ ā´…ā´¨āĩā´ĩā´Ļā´ŋā´•āĩā´•āĩā´•", "level": "ⴤⴞⴂ", "library": "ā´˛āĩˆā´Ŧāĩā´°ā´ąā´ŋ", + "library_add_folder": "ā´Ģāĩ‹āĩžā´Ąāĩŧ ⴚāĩ‡āĩŧā´•āĩā´•āĩā´•", + "library_edit_folder": "ā´Ģāĩ‹āĩžā´Ąāĩŧ ā´Žā´Ąā´ŋā´ąāĩā´ąāĩ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "library_options": "ā´˛āĩˆā´Ŧāĩā´°ā´ąā´ŋ ā´“ā´Ēāĩā´ˇā´¨āĩā´•āĩž", "library_page_device_albums": "ā´‰ā´Ēā´•ā´°ā´Ŗā´¤āĩā´¤ā´ŋā´˛āĩ† ā´†āĩŊā´Ŧā´™āĩā´™āĩž", "library_page_new_album": "ā´Ēāĩā´¤ā´ŋā´¯ ā´†āĩŊā´Ŧā´‚", @@ -1229,6 +1274,7 @@ "local_media_summary": "ā´Ēāĩā´°ā´žā´Ļāĩ‡ā´ļā´ŋā´• ā´Žāĩ€ā´Ąā´ŋā´¯ ⴏⴂⴗāĩā´°ā´šā´‚", "local_network": "ā´Ēāĩā´°ā´žā´Ļāĩ‡ā´ļā´ŋā´• ā´¨āĩ†ā´ąāĩā´ąāĩâ€Œā´ĩāĩŧā´•āĩā´•āĩ", "local_network_sheet_info": "ā´¨ā´ŋāĩŧā´Ļāĩā´Ļā´ŋā´ˇāĩâ€Œā´Ÿ ā´ĩāĩˆ-ā´Ģāĩˆ ā´¨āĩ†ā´ąāĩā´ąāĩâ€Œā´ĩāĩŧā´•āĩā´•āĩ ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋā´•āĩā´•āĩā´Žāĩā´Ēāĩ‹āĩž ⴈ URL ā´ĩā´´ā´ŋ ā´†ā´Ēāĩā´Ēāĩ ā´¸āĩ†āĩŧā´ĩā´ąāĩā´Žā´žā´¯ā´ŋ ā´Ŧā´¨āĩā´§ā´ŋā´Ēāĩā´Ēā´ŋā´•āĩā´•āĩā´‚", + "location": "ā´¸āĩā´Ĩⴞⴂ", "location_permission": "ā´˛āĩŠā´•āĩā´•āĩ‡ā´ˇāĩģ ā´…ā´¨āĩā´Žā´¤ā´ŋ", "location_permission_content": "ā´¯ā´žā´¨āĩā´¤āĩā´°ā´ŋā´•-ā´¸āĩā´ĩā´ŋⴚāĩā´šā´ŋā´‚ā´—āĩ ā´Ģāĩ€ā´šāĩā´šāĩŧ ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋā´•āĩā´•āĩā´¨āĩā´¨ā´¤ā´ŋā´¨āĩ, Immich-ā´¨āĩ ā´•āĩƒā´¤āĩā´¯ā´Žā´žā´¯ ā´˛āĩŠā´•āĩā´•āĩ‡ā´ˇāĩģ ā´…ā´¨āĩā´Žā´¤ā´ŋ ā´†ā´ĩā´ļāĩā´¯ā´Žā´žā´Ŗāĩ, ā´…ā´¤āĩā´ĩā´´ā´ŋ ā´¨ā´ŋā´˛ā´ĩā´ŋā´˛āĩ† ā´ĩāĩˆ-ā´Ģāĩˆ ā´¨āĩ†ā´ąāĩā´ąāĩâ€Œā´ĩāĩŧā´•āĩā´•ā´ŋā´¨āĩā´ąāĩ† ā´Ēāĩ‡ā´°āĩ ā´ĩā´žā´¯ā´ŋā´•āĩā´•ā´žāĩģ ā´•ā´´ā´ŋā´¯āĩā´‚", "location_picker_choose_on_map": "ā´Žā´žā´Ēāĩā´Ēā´ŋāĩŊ ā´¤ā´ŋā´°ā´žāĩā´žāĩ†ā´Ÿāĩā´•āĩā´•āĩā´•", @@ -1276,8 +1322,17 @@ "loop_videos_description": "ā´ĩā´ŋā´ļā´Ļā´žā´‚ā´ļ ā´ĩāĩā´¯āĩ‚ā´ĩā´ąā´ŋāĩŊ ā´’ā´°āĩ ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ ā´¯ā´žā´¨āĩā´¤āĩā´°ā´ŋā´•ā´Žā´žā´¯ā´ŋ ā´˛āĩ‚ā´Ēāĩā´Ēāĩ ⴚāĩ†ā´¯āĩā´¯ā´žāĩģ ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´¨ā´•āĩā´ˇā´Žā´Žā´žā´•āĩā´•āĩā´•.", "main_branch_warning": "ā´¨ā´ŋā´™āĩā´™āĩž ā´’ā´°āĩ ā´Ąāĩ†ā´ĩā´˛ā´Ēāĩâ€Œā´Žāĩ†ā´¨āĩā´ąāĩ ā´Ēā´¤ā´ŋā´Ēāĩā´Ēā´žā´Ŗāĩ ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋā´•āĩā´•āĩā´¨āĩā´¨ā´¤āĩ; ā´’ā´°āĩ ā´ąā´ŋā´˛āĩ€ā´¸āĩ ā´Ēā´¤ā´ŋā´Ēāĩā´Ēāĩ ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋā´•āĩā´•ā´žāĩģ ā´žā´™āĩā´™āĩž ā´ļā´•āĩā´¤ā´Žā´žā´¯ā´ŋ ā´ļāĩā´Ēā´žāĩŧā´ļ ⴚāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨āĩ!", "main_menu": "ā´Ēāĩā´°ā´§ā´žā´¨ ā´Žāĩ†ā´¨āĩ", + "maintenance_description": "ā´‡ā´Žāĩā´Žā´ŋā´•āĩā´•āĩ ā´Žāĩ†ā´¯ā´ŋā´¨āĩā´ąā´¨āĩģā´¸āĩ ā´Žāĩ‹ā´Ąā´ŋā´˛āĩ‡ā´•āĩā´•āĩ ā´Žā´žā´ąāĩā´ąā´ŋā´¯ā´ŋā´°ā´ŋā´•āĩā´•āĩā´¨āĩā´¨āĩ.", + "maintenance_end": "ā´Žāĩ†ā´¯ā´ŋā´¨āĩā´ąā´¨āĩģā´¸āĩ ā´Žāĩ‹ā´Ąāĩ ā´…ā´ĩā´¸ā´žā´¨ā´ŋā´Ēāĩā´Ēā´ŋā´•āĩā´•āĩā´•", + "maintenance_end_error": "ā´Žāĩ†ā´¯ā´ŋā´¨āĩā´ąā´¨āĩģā´¸āĩ ā´Žāĩ‹ā´Ąāĩ ā´…ā´ĩā´¸ā´žā´¨ā´ŋā´Ēāĩā´Ēā´ŋā´•āĩā´•āĩā´¨āĩā´¨ā´¤ā´ŋāĩŊ ā´Ēā´°ā´žā´œā´¯ā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´Ÿāĩ.", + "maintenance_logged_in_as": "ā´¨ā´ŋā´˛ā´ĩā´ŋāĩŊ {user} ⴆⴝā´ŋ ā´˛āĩ‹ā´—ā´ŋāĩģ ⴚāĩ†ā´¯āĩā´¤ā´ŋā´°ā´ŋā´•āĩā´•āĩā´¨āĩā´¨āĩ", + "maintenance_title": "ā´¤ā´žāĩŊā´•āĩā´•ā´žā´˛ā´ŋā´•ā´Žā´žā´¯ā´ŋ ⴞⴭāĩā´¯ā´Žā´˛āĩā´˛", "make": "ā´¨ā´ŋāĩŧā´Žāĩā´Žā´žā´¤ā´žā´ĩāĩ", "manage_geolocation": "ā´¸āĩā´Ĩā´žā´¨ā´‚ ā´•āĩˆā´•ā´žā´°āĩā´¯ā´‚ ⴚāĩ†ā´¯āĩā´¯āĩā´•", + "manage_media_access_rationale": "ⴟāĩā´°ā´žā´ˇā´ŋā´˛āĩ‡ā´•āĩā´•āĩ ā´Ģⴝⴞāĩā´•āĩž ā´Žā´žā´ąāĩā´ąāĩā´¨āĩā´¨ā´¤ā´ŋā´¨āĩā´‚ ā´…ā´ĩ ā´ĩāĩ€ā´Ŗāĩā´Ÿāĩ†ā´Ÿāĩā´•āĩā´•āĩā´¨āĩā´¨ā´¤ā´ŋā´¨āĩā´‚ ⴈ ā´…ā´¨āĩā´Žā´¤ā´ŋ ā´†ā´ĩā´ļāĩā´¯ā´Žā´žā´Ŗāĩ.", + "manage_media_access_settings": "ā´•āĩā´°ā´Žāĩ€ā´•ā´°ā´Ŗā´™āĩā´™āĩž ā´¤āĩā´ąā´•āĩā´•āĩā´•", + "manage_media_access_subtitle": "ā´Žāĩ€ā´Ąā´ŋā´¯ ā´Ģⴝⴞāĩā´•āĩž ā´•āĩˆā´•ā´žā´°āĩā´¯ā´‚ ⴚāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨ā´¤ā´ŋā´¨āĩā´‚ ā´Žā´žā´ąāĩā´ąāĩā´¨āĩā´¨ā´¤ā´ŋā´¨āĩā´‚ ā´‡ā´Žāĩā´Žā´ŋā´•āĩā´•āĩ ā´†ā´Ēāĩā´Ēā´ŋā´¨āĩ† ā´…ā´¨āĩā´ĩā´Ļā´ŋā´•āĩā´•āĩā´•.", + "manage_media_access_title": "ā´Žāĩ€ā´Ąā´ŋā´¯ ā´Žā´žā´¨āĩ‡ā´œāĩā´Žāĩ†ā´¨āĩā´ąāĩ ⴆⴕāĩā´¸ā´¸āĩ", "manage_shared_links": "ā´Ēā´™āĩā´•ā´ŋⴟāĩā´Ÿ ā´˛ā´ŋā´™āĩā´•āĩā´•āĩž ā´•āĩˆā´•ā´žā´°āĩā´¯ā´‚ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "manage_sharing_with_partners": "ā´Ēā´™āĩā´•ā´žā´ŗā´ŋā´•ā´ŗāĩā´Žā´žā´¯āĩā´ŗāĩā´ŗ ā´Ēā´™āĩā´•ā´ŋⴟāĩŊ ā´•āĩˆā´•ā´žā´°āĩā´¯ā´‚ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "manage_the_app_settings": "ā´†ā´Ēāĩā´Ēāĩ ā´•āĩā´°ā´Žāĩ€ā´•ā´°ā´Ŗā´™āĩā´™āĩž ā´•āĩˆā´•ā´žā´°āĩā´¯ā´‚ ⴚāĩ†ā´¯āĩā´¯āĩā´•", @@ -1333,12 +1388,15 @@ "minute": "ā´Žā´ŋā´¨ā´ŋā´ąāĩā´ąāĩ", "minutes": "ā´Žā´ŋā´¨ā´ŋā´ąāĩā´ąāĩā´•āĩž", "missing": "ā´•ā´žā´Ŗā´žā´¨ā´ŋā´˛āĩā´˛", + "mobile_app": "ā´ŽāĩŠā´ŦāĩˆāĩŊ ā´†ā´Ēāĩā´Ēāĩ", + "mobile_app_download_onboarding_note": "ā´¤ā´žā´´āĩ† ā´Ēā´ąā´¯āĩā´¨āĩā´¨ ā´“ā´Ēāĩā´ˇā´¨āĩā´•āĩž ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋⴚāĩā´šāĩ ā´ŽāĩŠā´ŦāĩˆāĩŊ ā´†ā´Ēāĩā´Ēāĩ ā´Ąāĩ—āĩēā´˛āĩ‹ā´Ąāĩ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "model": "ā´Žāĩ‹ā´ĄāĩŊ", "month": "ā´Žā´žā´¸ā´‚", "monthly_title_text_date_format": "MMMM y", "more": "ā´•āĩ‚ā´Ÿāĩā´¤āĩŊ", "move": "ā´¨āĩ€ā´•āĩā´•āĩā´•", "move_off_locked_folder": "ā´˛āĩ‹ā´•āĩā´•āĩ ⴚāĩ†ā´¯āĩā´¤ ā´Ģāĩ‹āĩžā´Ąā´ąā´ŋāĩŊ ā´¨ā´ŋā´¨āĩā´¨āĩ ā´Žā´žā´ąāĩā´ąāĩā´•", + "move_to": "ⴇⴤā´ŋā´˛āĩ‡ā´•āĩā´•āĩ ā´Žā´žā´ąāĩā´ąāĩā´•", "move_to_lock_folder_action_prompt": "{count} ā´Žā´Ŗāĩā´Ŗā´‚ ā´˛āĩ‹ā´•āĩā´•āĩ ⴚāĩ†ā´¯āĩā´¤ ā´Ģāĩ‹āĩžā´Ąā´ąā´ŋā´˛āĩ‡ā´•āĩā´•āĩ ⴚāĩ‡āĩŧā´¤āĩā´¤āĩ", "move_to_locked_folder": "ā´˛āĩ‹ā´•āĩā´•āĩ ⴚāĩ†ā´¯āĩā´¤ ā´Ģāĩ‹āĩžā´Ąā´ąā´ŋā´˛āĩ‡ā´•āĩā´•āĩ ā´Žā´žā´ąāĩā´ąāĩā´•", "move_to_locked_folder_confirmation": "ⴈ ā´Ģāĩ‹ā´Ÿāĩā´Ÿāĩ‹ā´•ā´ŗāĩā´‚ ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ā´¯āĩā´‚ ā´Žā´˛āĩā´˛ā´ž ā´†āĩŊā´Ŧā´™āĩā´™ā´ŗā´ŋāĩŊ ā´¨ā´ŋā´¨āĩā´¨āĩā´‚ ā´¨āĩ€ā´•āĩā´•ā´‚ ⴚāĩ†ā´¯āĩā´¯ā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´‚, ā´˛āĩ‹ā´•āĩā´•āĩ ⴚāĩ†ā´¯āĩā´¤ ā´Ģāĩ‹āĩžā´Ąā´ąā´ŋāĩŊ ā´¨ā´ŋā´¨āĩā´¨āĩ ā´Žā´žā´¤āĩā´°ā´Žāĩ‡ ā´•ā´žā´Ŗā´žāĩģ ā´•ā´´ā´ŋā´¯āĩ‚", @@ -1351,6 +1409,8 @@ "my_albums": "ā´Žā´¨āĩā´ąāĩ† ā´†āĩŊā´Ŧā´™āĩā´™āĩž", "name": "ā´Ēāĩ‡ā´°āĩ", "name_or_nickname": "ā´Ēāĩ‡ā´°āĩ ā´…ā´˛āĩā´˛āĩ†ā´™āĩā´•ā´ŋāĩŊ ā´ĩā´ŋā´ŗā´ŋā´Ēāĩā´Ēāĩ‡ā´°āĩ", + "navigate": "ā´¨ā´žā´ĩā´ŋā´—āĩ‡ā´ąāĩā´ąāĩ ⴚāĩ†ā´¯āĩā´¯āĩā´•", + "navigate_to_time": "ā´¸ā´Žā´¯ā´¤āĩā´¤ā´ŋā´˛āĩ‡ā´•āĩā´•āĩ ā´¨ā´žā´ĩā´ŋā´—āĩ‡ā´ąāĩā´ąāĩ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "network_requirement_photos_upload": "ā´Ģāĩ‹ā´Ÿāĩā´Ÿāĩ‹ā´•āĩž ā´Ŧā´žā´•āĩā´•ā´Ēāĩā´Ēāĩ ⴚāĩ†ā´¯āĩā´¯ā´žāĩģ ā´¸āĩ†ā´˛āĩā´˛āĩā´˛ā´žāĩŧ ā´Ąā´žā´ąāĩā´ą ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋā´•āĩā´•āĩā´•", "network_requirement_videos_upload": "ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ā´•āĩž ā´Ŧā´žā´•āĩā´•ā´Ēāĩā´Ēāĩ ⴚāĩ†ā´¯āĩā´¯ā´žāĩģ ā´¸āĩ†ā´˛āĩā´˛āĩā´˛ā´žāĩŧ ā´Ąā´žā´ąāĩā´ą ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋā´•āĩā´•āĩā´•", "network_requirements": "ā´¨āĩ†ā´ąāĩā´ąāĩâ€Œā´ĩāĩŧā´•āĩā´•āĩ ā´†ā´ĩā´ļāĩā´¯ā´•ⴤⴕāĩž", @@ -1360,11 +1420,13 @@ "never": "ā´’ā´°ā´ŋā´•āĩā´•ā´˛āĩā´‚ ⴇⴞāĩā´˛", "new_album": "ā´Ēāĩā´¤ā´ŋā´¯ ā´†āĩŊā´Ŧā´‚", "new_api_key": "ā´Ēāĩā´¤ā´ŋā´¯ API ā´•āĩ€", + "new_date_range": "ā´Ēāĩā´¤ā´ŋā´¯ ā´¤āĩ€ā´¯ā´¤ā´ŋ ā´Ēā´°ā´ŋā´§ā´ŋ", "new_password": "ā´Ēāĩā´¤ā´ŋā´¯ ā´Ēā´žā´¸āĩâ€Œā´ĩāĩ‡ā´Ąāĩ", "new_person": "ā´Ēāĩā´¤ā´ŋā´¯ ā´ĩāĩā´¯ā´•āĩā´¤ā´ŋ", "new_pin_code": "ā´Ēāĩā´¤ā´ŋā´¯ ā´Ēā´ŋāĩģ ā´•āĩ‹ā´Ąāĩ", "new_pin_code_subtitle": "ā´¨ā´ŋā´™āĩā´™āĩž ā´†ā´Ļāĩā´¯ā´Žā´žā´¯ā´ŋⴟāĩā´Ÿā´žā´Ŗāĩ ā´˛āĩ‹ā´•āĩā´•āĩ ⴚāĩ†ā´¯āĩā´¤ ā´Ģāĩ‹āĩžā´Ąāĩŧ ⴆⴕāĩâ€Œā´¸ā´¸āĩ ⴚāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨ā´¤āĩ. ⴈ ā´Ēāĩ‡ā´œāĩ ā´¸āĩā´°ā´•āĩā´ˇā´ŋā´¤ā´Žā´žā´¯ā´ŋ ⴆⴕāĩâ€Œā´¸ā´¸āĩ ⴚāĩ†ā´¯āĩā´¯ā´žāĩģ ā´’ā´°āĩ ā´Ēā´ŋāĩģ ā´•āĩ‹ā´Ąāĩ ⴉ⴪āĩā´Ÿā´žā´•āĩā´•āĩā´•", "new_timeline": "ā´Ēāĩā´¤ā´ŋā´¯ ⴟāĩˆā´‚ā´˛āĩˆāĩģ", + "new_update": "ā´Ēāĩā´¤ā´ŋā´¯ ā´…ā´Ēāĩâ€Œā´Ąāĩ‡ā´ąāĩā´ąāĩ", "new_user_created": "ā´Ēāĩā´¤ā´ŋā´¯ ā´‰ā´Ēā´¯āĩ‹ā´•āĩā´¤ā´žā´ĩā´ŋā´¨āĩ† ⴉ⴪āĩā´Ÿā´žā´•āĩā´•ā´ŋ", "new_version_available": "ā´Ēāĩā´¤ā´ŋā´¯ ā´Ēā´¤ā´ŋā´Ēāĩā´Ēāĩ ⴞⴭāĩā´¯ā´Žā´žā´Ŗāĩ", "newest_first": "ā´ā´ąāĩā´ąā´ĩāĩā´‚ ā´Ēāĩā´¤ā´ŋⴝⴤāĩ ā´†ā´Ļāĩā´¯ā´‚", @@ -1380,12 +1442,14 @@ "no_cast_devices_found": "ā´•ā´žā´¸āĩā´ąāĩā´ąāĩ ā´‰ā´Ēā´•ā´°ā´Ŗā´™āĩā´™ā´ŗāĩŠā´¨āĩā´¨āĩā´‚ ā´•ā´Ŗāĩā´Ÿāĩ†ā´¤āĩā´¤ā´ŋā´¯ā´ŋā´˛āĩā´˛", "no_checksum_local": "ⴚāĩ†ā´•āĩā´•āĩā´¸ā´‚ ⴞⴭāĩā´¯ā´Žā´˛āĩā´˛ - ā´Ēāĩā´°ā´žā´Ļāĩ‡ā´ļā´ŋā´• ā´…ā´¸ā´ąāĩā´ąāĩā´•āĩž ⴞⴭāĩā´¯ā´Žā´žā´•āĩā´•ā´žāĩģ ā´•ā´´ā´ŋā´¯ā´ŋā´˛āĩā´˛", "no_checksum_remote": "ⴚāĩ†ā´•āĩā´•āĩā´¸ā´‚ ⴞⴭāĩā´¯ā´Žā´˛āĩā´˛ - ā´ąā´ŋā´Žāĩ‹ā´Ÿāĩā´Ÿāĩ ā´…ā´¸ā´ąāĩā´ąāĩ ⴞⴭāĩā´¯ā´Žā´žā´•āĩā´•ā´žāĩģ ā´•ā´´ā´ŋā´¯ā´ŋā´˛āĩā´˛", + "no_devices": "ā´…ā´‚ā´—āĩ€ā´•āĩƒā´¤ ā´‰ā´Ēā´•ā´°ā´Ŗā´™āĩā´™ā´ŗāĩŠā´¨āĩā´¨āĩā´Žā´ŋā´˛āĩā´˛", "no_duplicates_found": "ā´Ąāĩā´¯āĩ‚ā´Ēāĩā´˛ā´ŋā´•āĩā´•āĩ‡ā´ąāĩā´ąāĩā´•ā´ŗāĩŠā´¨āĩā´¨āĩā´‚ ā´•ā´Ŗāĩā´Ÿāĩ†ā´¤āĩā´¤ā´ŋā´¯ā´ŋā´˛āĩā´˛.", "no_exif_info_available": "Exif ā´ĩā´ŋā´ĩā´°ā´™āĩā´™āĩž ⴞⴭāĩā´¯ā´Žā´˛āĩā´˛", "no_explore_results_message": "ā´¨ā´ŋā´™āĩā´™ā´ŗāĩā´Ÿāĩ† ā´ļāĩ‡ā´–ā´°ā´‚ ā´Ēā´°āĩā´¯ā´ĩāĩ‡ā´•āĩā´ˇā´Ŗā´‚ ⴚāĩ†ā´¯āĩā´¯ā´žāĩģ ā´•āĩ‚ā´Ÿāĩā´¤āĩŊ ā´Ģāĩ‹ā´Ÿāĩā´Ÿāĩ‹ā´•āĩž ā´…ā´Ēāĩâ€Œā´˛āĩ‹ā´Ąāĩ ⴚāĩ†ā´¯āĩā´¯āĩā´•.", "no_favorites_message": "ā´¨ā´ŋā´™āĩā´™ā´ŗāĩā´Ÿāĩ† ā´Žā´ŋā´•ā´šāĩā´š ⴚā´ŋā´¤āĩā´°ā´™āĩā´™ā´ŗāĩā´‚ ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ā´•ā´ŗāĩā´‚ ā´ĩāĩ‡ā´—ā´¤āĩā´¤ā´ŋāĩŊ ā´•ā´Ŗāĩā´Ÿāĩ†ā´¤āĩā´¤ā´žāĩģ ā´Ēāĩā´°ā´ŋā´¯ā´Ēāĩā´Ēāĩ†ā´Ÿāĩā´Ÿā´ĩ ⴚāĩ‡āĩŧā´•āĩā´•āĩā´•", "no_libraries_message": "ā´¨ā´ŋā´™āĩā´™ā´ŗāĩā´Ÿāĩ† ā´Ģāĩ‹ā´Ÿāĩā´Ÿāĩ‹ā´•ā´ŗāĩā´‚ ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ā´•ā´ŗāĩā´‚ ā´•ā´žā´Ŗāĩā´¨āĩā´¨ā´¤ā´ŋā´¨āĩ ā´’ā´°āĩ ā´Ŧā´žā´šāĩā´¯ ā´˛āĩˆā´Ŧāĩā´°ā´ąā´ŋ ⴉ⴪āĩā´Ÿā´žā´•āĩā´•āĩā´•", "no_local_assets_found": "ⴈ ⴚāĩ†ā´•āĩā´•āĩā´¸ā´‚ ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋⴚāĩā´šāĩ ā´Ēāĩā´°ā´žā´Ļāĩ‡ā´ļā´ŋā´• ā´…ā´¸ā´ąāĩā´ąāĩā´•ā´ŗāĩŠā´¨āĩā´¨āĩā´‚ ā´•ā´Ŗāĩā´Ÿāĩ†ā´¤āĩā´¤ā´ŋā´¯ā´ŋā´˛āĩā´˛", + "no_location_set": "ā´¸āĩā´Ĩⴞⴂ ⴏⴜāĩā´œāĩ€ā´•ā´°ā´ŋⴚāĩā´šā´ŋⴟāĩā´Ÿā´ŋā´˛āĩā´˛", "no_locked_photos_message": "ā´˛āĩ‹ā´•āĩā´•āĩ ⴚāĩ†ā´¯āĩâ€Œā´¤ ā´Ģāĩ‹āĩžā´Ąā´ąā´ŋā´˛āĩ† ā´Ģāĩ‹ā´Ÿāĩā´Ÿāĩ‹ā´•ā´ŗāĩā´‚ ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ā´•ā´ŗāĩā´‚ ā´Žā´ąā´šāĩā´šā´ŋā´°ā´ŋā´•āĩā´•āĩā´¨āĩā´¨āĩ, ā´¨ā´ŋā´™āĩā´™āĩž ā´˛āĩˆā´Ŧāĩā´°ā´ąā´ŋ ā´Ŧāĩā´°āĩ—ā´¸āĩ ⴚāĩ†ā´¯āĩā´¯āĩā´Žāĩā´Ēāĩ‹ā´´āĩ‹ ā´¤ā´ŋā´°ā´¯āĩā´Žāĩā´Ēāĩ‹ā´´āĩ‹ ā´…ā´ĩ ā´Ļāĩƒā´ļāĩā´¯ā´Žā´žā´•ā´ŋā´˛āĩā´˛.", "no_name": "ā´Ēāĩ‡ā´°ā´ŋā´˛āĩā´˛", "no_notifications": "ā´…ā´ąā´ŋā´¯ā´ŋā´Ēāĩā´Ēāĩā´•ā´ŗāĩŠā´¨āĩā´¨āĩā´Žā´ŋā´˛āĩā´˛", @@ -1396,6 +1460,7 @@ "no_results_description": "ā´’ā´°āĩ ā´Ēā´°āĩā´¯ā´žā´¯ā´Ēā´Ļā´Žāĩ‹ ā´•āĩ‚ā´Ÿāĩā´¤āĩŊ ā´ĒāĩŠā´¤āĩā´ĩā´žā´¯ ā´•āĩ€ā´ĩāĩ‡ā´Ąāĩ‹ ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋⴚāĩā´šāĩ ā´ļāĩā´°ā´Žā´ŋā´•āĩā´•āĩā´•", "no_shared_albums_message": "ā´¨ā´ŋā´™āĩā´™ā´ŗāĩā´Ÿāĩ† ā´¨āĩ†ā´ąāĩā´ąāĩâ€Œā´ĩāĩŧā´•āĩā´•ā´ŋā´˛āĩ† ⴆⴺāĩā´•ā´ŗāĩā´Žā´žā´¯ā´ŋ ā´Ģāĩ‹ā´Ÿāĩā´Ÿāĩ‹ā´•ā´ŗāĩā´‚ ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ā´•ā´ŗāĩā´‚ ā´Ēā´™āĩā´•ā´ŋā´Ÿā´žāĩģ ā´’ā´°āĩ ā´†āĩŊā´Ŧā´‚ ⴉ⴪āĩā´Ÿā´žā´•āĩā´•āĩā´•", "no_uploads_in_progress": "ā´…ā´Ēāĩâ€Œā´˛āĩ‹ā´Ąāĩā´•ā´ŗāĩŠā´¨āĩā´¨āĩā´‚ ā´Ēāĩā´°āĩ‹ā´—ā´Žā´ŋā´•āĩā´•āĩā´¨āĩā´¨ā´ŋā´˛āĩā´˛", + "not_allowed": "ā´…ā´¨āĩā´ĩā´Ļā´¨āĩ€ā´¯ā´Žā´˛āĩā´˛", "not_available": "ⴞⴭāĩā´¯ā´Žā´˛āĩā´˛", "not_in_any_album": "ā´’ā´°āĩ ā´†āĩŊā´Ŧā´¤āĩā´¤ā´ŋā´˛āĩā´Žā´ŋā´˛āĩā´˛", "not_selected": "ā´¤ā´ŋā´°ā´žāĩā´žāĩ†ā´Ÿāĩā´¤āĩā´¤ā´ŋⴟāĩā´Ÿā´ŋā´˛āĩā´˛", @@ -1410,6 +1475,9 @@ "notifications": "ā´…ā´ąā´ŋā´¯ā´ŋā´Ēāĩā´Ēāĩā´•āĩž", "notifications_setting_description": "ā´…ā´ąā´ŋā´¯ā´ŋā´Ēāĩā´Ēāĩā´•āĩž ā´•āĩˆā´•ā´žā´°āĩā´¯ā´‚ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "oauth": "OAuth", + "obtainium_configurator": "ā´’ā´Ŧāĩâ€Œā´ąāĩā´ąāĩˆā´¨ā´ŋⴝⴂ ā´•āĩ‹āĩēā´Ģā´ŋā´—ā´ąāĩ‡ā´ąāĩā´ąāĩŧ", + "obtainium_configurator_instructions": "ā´‡ā´Žāĩā´Žā´ŋā´•āĩā´•āĩ ā´—ā´ŋā´ąāĩā´ąāĩā´šā´Ŧāĩ ā´ąā´ŋā´˛āĩ€ā´¸ā´ŋāĩŊ ā´¨ā´ŋā´¨āĩā´¨āĩ ā´¨āĩ‡ā´°ā´ŋⴟāĩā´Ÿāĩ ā´†āĩģā´Ąāĩā´°āĩ‹ā´¯ā´ŋā´Ąāĩ ā´†ā´Ēāĩā´Ēāĩ ā´‡āĩģā´¸āĩā´ąāĩā´ąā´žāĩž ⴚāĩ†ā´¯āĩā´¯ā´žā´¨āĩā´‚ ā´…ā´Ēāĩâ€Œā´Ąāĩ‡ā´ąāĩā´ąāĩ ⴚāĩ†ā´¯āĩā´¯ā´žā´¨āĩā´‚ ā´’ā´Ŧāĩâ€Œā´ąāĩā´ąāĩˆā´¨ā´ŋⴝⴂ ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋā´•āĩā´•āĩā´•. ā´’ā´°āĩ ā´Žā´Ēā´ŋⴐ ā´•āĩ€ ā´¸āĩƒā´ˇāĩā´Ÿā´ŋⴚāĩā´šāĩ ā´¨ā´ŋā´™āĩā´™ā´ŗāĩā´Ÿāĩ† ā´’ā´Ŧāĩâ€Œā´ąāĩā´ąāĩˆā´¨ā´ŋⴝⴂ ā´•āĩ‹āĩēā´Ģā´ŋā´—ā´ąāĩ‡ā´ˇāĩģ ā´˛ā´ŋā´™āĩā´•āĩ ā´¸āĩƒā´ˇāĩā´Ÿā´ŋā´•āĩā´•ā´žāĩģ ā´’ā´°āĩ ā´ĩāĩ‡ā´°ā´ŋⴝⴍāĩā´ąāĩ ā´¤ā´ŋā´°ā´žāĩā´žāĩ†ā´Ÿāĩā´•āĩā´•āĩā´•", + "ocr": "ā´’.ā´¸ā´ŋ.ā´†āĩŧ (OCR)", "official_immich_resources": "Immich-ā´¨āĩā´ąāĩ† ā´”ā´Ļāĩā´¯āĩ‹ā´—ā´ŋā´• ā´‰ā´ąā´ĩā´ŋā´Ÿā´™āĩā´™āĩž", "offline": "ā´“ā´Ģāĩâ€Œā´˛āĩˆāĩģ", "offset": "ā´“ā´Ģāĩā´¸āĩ†ā´ąāĩā´ąāĩ", @@ -1503,6 +1571,8 @@ "photos_count": "{count, plural, one {{count, number} ā´Ģāĩ‹ā´Ÿāĩā´Ÿāĩ‹} other {{count, number} ā´Ģāĩ‹ā´Ÿāĩā´Ÿāĩ‹ā´•āĩž}}", "photos_from_previous_years": "ā´Žāĩāĩģ ā´ĩāĩŧⴎⴙāĩā´™ā´ŗā´ŋā´˛āĩ† ā´Ģāĩ‹ā´Ÿāĩā´Ÿāĩ‹ā´•āĩž", "pick_a_location": "ā´’ā´°āĩ ā´¸āĩā´Ĩⴞⴂ ā´¤ā´ŋā´°ā´žāĩā´žāĩ†ā´Ÿāĩā´•āĩā´•āĩā´•", + "pick_custom_range": "ⴇⴎāĩā´Ÿā´žā´¨āĩā´¸āĩƒā´¤ ā´Ēā´°ā´ŋā´§ā´ŋ", + "pick_date_range": "ā´’ā´°āĩ ā´¤āĩ€ā´¯ā´¤ā´ŋ ā´Ēā´°ā´ŋā´§ā´ŋ ā´¤ā´ŋā´°ā´žāĩā´žāĩ†ā´Ÿāĩā´•āĩā´•āĩā´•", "pin_code_changed_successfully": "ā´Ēā´ŋāĩģ ā´•āĩ‹ā´Ąāĩ ā´ĩā´ŋā´œā´¯ā´•ā´°ā´Žā´žā´¯ā´ŋ ā´Žā´žā´ąāĩā´ąā´ŋ", "pin_code_reset_successfully": "ā´Ēā´ŋāĩģ ā´•āĩ‹ā´Ąāĩ ā´ĩā´ŋā´œā´¯ā´•ā´°ā´Žā´žā´¯ā´ŋ ā´ąāĩ€ā´¸āĩ†ā´ąāĩā´ąāĩ ⴚāĩ†ā´¯āĩā´¤āĩ", "pin_code_setup_successfully": "ā´Ēā´ŋāĩģ ā´•āĩ‹ā´Ąāĩ ā´ĩā´ŋā´œā´¯ā´•ā´°ā´Žā´žā´¯ā´ŋ ⴏⴜāĩā´œāĩ€ā´•ā´°ā´ŋⴚāĩā´šāĩ", @@ -1514,6 +1584,9 @@ "play_memories": "ā´“āĩŧā´Žāĩā´Žā´•āĩž ā´Ēāĩā´˛āĩ‡ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "play_motion_photo": "ⴚⴞā´ŋā´•āĩā´•āĩā´¨āĩā´¨ ā´Ģāĩ‹ā´Ÿāĩā´Ÿāĩ‹ ā´Ēāĩā´˛āĩ‡ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "play_or_pause_video": "ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ ā´Ēāĩā´˛āĩ‡ ⴚāĩ†ā´¯āĩā´¯āĩā´• ā´…ā´˛āĩā´˛āĩ†ā´™āĩā´•ā´ŋāĩŊ ā´¤ā´žāĩŊā´•āĩā´•ā´žā´˛ā´ŋā´•ā´Žā´žā´¯ā´ŋ ā´¨ā´ŋāĩŧā´¤āĩā´¤āĩā´•", + "play_original_video": "ā´’ā´ąā´ŋⴜā´ŋā´¨āĩŊ ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ ā´Ēāĩā´˛āĩ‡ ⴚāĩ†ā´¯āĩā´¯āĩā´•", + "play_original_video_setting_description": "ⴟāĩā´°ā´žāĩģā´¸āĩâ€Œā´•āĩ‹ā´Ąāĩ ⴚāĩ†ā´¯āĩā´¤ ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ā´•ā´ŗāĩ‡ā´•āĩā´•ā´žāĩž ā´’ā´ąā´ŋⴜā´ŋā´¨āĩŊ ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ā´•āĩž ā´Ēāĩā´˛āĩ‡ ⴚāĩ†ā´¯āĩā´¯ā´žāĩģ ā´Žāĩāĩģā´—ā´Ŗā´¨ ā´¨āĩŊā´•āĩā´•. ā´’ā´ąā´ŋⴜā´ŋā´¨āĩŊ ā´Ģā´¯āĩŊ ā´…ā´¨āĩā´¯āĩ‹ā´œāĩā´¯ā´Žā´˛āĩā´˛āĩ†ā´™āĩā´•ā´ŋāĩŊ ā´…ā´¤āĩ ā´ļā´°ā´ŋā´¯ā´žā´¯ā´ŋ ā´Ēāĩā´˛āĩ‡ ⴚāĩ†ā´¯āĩā´¤āĩ‡ā´•āĩā´•ā´ŋā´˛āĩā´˛.", + "play_transcoded_video": "ⴟāĩā´°ā´žāĩģā´¸āĩâ€Œā´•āĩ‹ā´Ąāĩ ⴚāĩ†ā´¯āĩā´¤ ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ ā´Ēāĩā´˛āĩ‡ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "please_auth_to_access": "ⴆⴕāĩâ€Œā´¸ā´¸āĩ ⴚāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨ā´¤ā´ŋā´¨āĩ ā´Ļā´¯ā´ĩā´žā´¯ā´ŋ ā´Ēāĩā´°ā´žā´Žā´žā´Ŗāĩ€ā´•ā´°ā´ŋā´•āĩā´•āĩā´•", "port": "ā´Ēāĩ‹āĩŧⴟāĩā´Ÿāĩ", "preferences_settings_subtitle": "ā´†ā´Ēāĩā´Ēā´ŋā´¨āĩā´ąāĩ† ā´Žāĩāĩģⴗ⴪ⴍⴕāĩž ā´•āĩˆā´•ā´žā´°āĩā´¯ā´‚ ⴚāĩ†ā´¯āĩā´¯āĩā´•", @@ -1650,6 +1723,7 @@ "reset_sqlite_confirmation": "SQLite ā´Ąā´žā´ąāĩā´ąā´žā´Ŧāĩ‡ā´¸āĩ ā´ąāĩ€ā´¸āĩ†ā´ąāĩā´ąāĩ ⴚāĩ†ā´¯āĩā´¯ā´Ŗā´Žāĩ†ā´¨āĩā´¨āĩ ā´¨ā´ŋā´™āĩā´™āĩžā´•āĩā´•āĩ ā´‰ā´ąā´Ēāĩā´Ēā´žā´Ŗāĩ‹? ā´Ąā´žā´ąāĩā´ą ā´ĩāĩ€ā´Ŗāĩā´Ÿāĩā´‚ ā´¸ā´ŋā´™āĩā´•āĩ ⴚāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨ā´¤ā´ŋā´¨āĩ ā´¨ā´ŋā´™āĩā´™āĩž ā´˛āĩ‹ā´—āĩ ā´”ā´Ÿāĩā´Ÿāĩ ⴚāĩ†ā´¯āĩā´¤āĩ ā´ĩāĩ€ā´Ŗāĩā´Ÿāĩā´‚ ā´˛āĩ‹ā´—ā´ŋāĩģ ⴚāĩ†ā´¯āĩā´¯āĩ‡ā´Ŗāĩā´Ÿā´ŋā´ĩā´°āĩā´‚", "reset_sqlite_success": "SQLite ā´Ąā´žā´ąāĩā´ąā´žā´Ŧāĩ‡ā´¸āĩ ā´ĩā´ŋā´œā´¯ā´•ā´°ā´Žā´žā´¯ā´ŋ ā´ąāĩ€ā´¸āĩ†ā´ąāĩā´ąāĩ ⴚāĩ†ā´¯āĩā´¤āĩ", "reset_to_default": "ā´Ąā´ŋā´Ģāĩ‹āĩžā´Ÿāĩā´Ÿā´ŋā´˛āĩ‡ā´•āĩā´•āĩ ā´Ēāĩā´¨ā´ƒā´¸ā´œāĩā´œā´Žā´žā´•āĩā´•āĩā´•", + "resolution": "ā´ąāĩ†ā´¸ā´˛āĩā´¯āĩ‚ā´ˇāĩģ", "resolve_duplicates": "ā´Ąāĩā´¯āĩ‚ā´Ēāĩā´˛ā´ŋā´•āĩā´•āĩ‡ā´ąāĩā´ąāĩā´•āĩž ā´Ēā´°ā´ŋā´šā´°ā´ŋā´•āĩā´•āĩā´•", "resolved_all_duplicates": "ā´Žā´˛āĩā´˛ā´ž ā´Ąāĩā´¯āĩ‚ā´Ēāĩā´˛ā´ŋā´•āĩā´•āĩ‡ā´ąāĩā´ąāĩā´•ā´ŗāĩā´‚ ā´Ēā´°ā´ŋā´šā´°ā´ŋⴚāĩā´šāĩ", "restore": "ā´Ēāĩā´¨ā´ƒā´¸āĩā´Ĩā´žā´Ēā´ŋā´•āĩā´•āĩā´•", @@ -1668,6 +1742,7 @@ "running": "ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´ŋā´•āĩā´•āĩā´¨āĩā´¨āĩ", "save": "ā´¸āĩ‡ā´ĩāĩ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "save_to_gallery": "ā´—ā´žā´˛ā´ąā´ŋā´¯ā´ŋā´˛āĩ‡ā´•āĩā´•āĩ ā´¸āĩ‡ā´ĩāĩ ⴚāĩ†ā´¯āĩā´¯āĩā´•", + "saved": "ā´¸āĩ‡ā´ĩāĩ ⴚāĩ†ā´¯āĩā´¤āĩ", "saved_api_key": "API ā´•āĩ€ ā´¸āĩ‡ā´ĩāĩ ⴚāĩ†ā´¯āĩā´¤āĩ", "saved_profile": "ā´Ēāĩā´°āĩŠā´ĢāĩˆāĩŊ ā´¸āĩ‡ā´ĩāĩ ⴚāĩ†ā´¯āĩā´¤āĩ", "saved_settings": "ā´•āĩā´°ā´Žāĩ€ā´•ā´°ā´Ŗā´™āĩā´™āĩž ā´¸āĩ‡ā´ĩāĩ ⴚāĩ†ā´¯āĩā´¤āĩ", @@ -1684,6 +1759,9 @@ "search_by_description_example": "ā´¸ā´Ēāĩā´Ēā´¯ā´ŋā´˛āĩ† ā´šāĩˆā´•āĩā´•ā´ŋā´‚ā´—āĩ ā´Ļā´ŋⴍⴂ", "search_by_filename": "ā´Ģā´¯āĩŊ ā´¨ā´žā´Žā´‚ ā´…ā´˛āĩā´˛āĩ†ā´™āĩā´•ā´ŋāĩŊ ā´Žā´•āĩā´¸āĩā´ąāĩā´ąāĩģā´ˇāĩģ ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋⴚāĩā´šāĩ ā´¤ā´ŋā´°ā´¯āĩā´•", "search_by_filename_example": "ā´‰ā´Ļā´ž. IMG_1234.JPG ā´…ā´˛āĩā´˛āĩ†ā´™āĩā´•ā´ŋāĩŊ PNG", + "search_by_ocr": "ā´’.ā´¸ā´ŋ.ā´†āĩŧ ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋⴚāĩā´šāĩ ā´¤ā´ŋā´°ā´¯āĩā´•", + "search_by_ocr_example": "ā´˛ā´žā´ąāĩā´ąāĩ† (Latte)", + "search_camera_lens_model": "ā´˛āĩ†āĩģā´¸āĩ ā´Žāĩ‹ā´ĄāĩŊ ā´¤ā´ŋā´°ā´¯āĩā´•...", "search_camera_make": "ā´•āĩā´¯ā´žā´Žā´ą ā´¨ā´ŋāĩŧā´Žāĩā´Žā´žā´¤ā´žā´ĩā´ŋā´¨ā´žā´¯ā´ŋ ā´¤ā´ŋā´°ā´¯āĩā´•...", "search_camera_model": "ā´•āĩā´¯ā´žā´Žā´ą ā´Žāĩ‹ā´Ąā´˛ā´ŋā´¨ā´žā´¯ā´ŋ ā´¤ā´ŋā´°ā´¯āĩā´•...", "search_city": "ⴍⴗⴰⴤāĩā´¤ā´ŋā´¨ā´žā´¯ā´ŋ ā´¤ā´ŋā´°ā´¯āĩā´•...", @@ -1700,6 +1778,7 @@ "search_filter_location_title": "ā´¸āĩā´Ĩā´žā´¨ā´‚ ā´¤ā´ŋā´°ā´žāĩā´žāĩ†ā´Ÿāĩā´•āĩā´•āĩā´•", "search_filter_media_type": "ā´Žāĩ€ā´Ąā´ŋā´¯ ⴤⴰⴂ", "search_filter_media_type_title": "ā´Žāĩ€ā´Ąā´ŋā´¯ ⴤⴰⴂ ā´¤ā´ŋā´°ā´žāĩā´žāĩ†ā´Ÿāĩā´•āĩā´•āĩā´•", + "search_filter_ocr": "ā´’.ā´¸ā´ŋ.ā´†āĩŧ ā´‰ā´Ēā´¯āĩ‹ā´—ā´ŋⴚāĩā´šāĩ ā´¤ā´ŋā´°ā´¯āĩā´•", "search_filter_people_title": "ⴆⴺāĩā´•ā´ŗāĩ† ā´¤ā´ŋā´°ā´žāĩā´žāĩ†ā´Ÿāĩā´•āĩā´•āĩā´•", "search_for": "ⴇⴤā´ŋā´¨ā´žā´¯ā´ŋ ā´¤ā´ŋā´°ā´¯āĩā´•", "search_for_existing_person": "ā´¨ā´ŋā´˛ā´ĩā´ŋā´˛āĩā´ŗāĩā´ŗ ā´ĩāĩā´¯ā´•āĩā´¤ā´ŋā´•āĩā´•ā´žā´¯ā´ŋ ā´¤ā´ŋā´°ā´¯āĩā´•", @@ -1761,7 +1840,10 @@ "server_offline": "ā´¸āĩ†āĩŧā´ĩāĩŧ ā´“ā´Ģāĩâ€Œā´˛āĩˆāĩģ", "server_online": "ā´¸āĩ†āĩŧā´ĩāĩŧ ā´“āĩēā´˛āĩˆāĩģ", "server_privacy": "ā´¸āĩ†āĩŧā´ĩāĩŧ ā´¸āĩā´ĩā´•ā´žā´°āĩā´¯ā´¤", + "server_restarting_description": "ⴈ ā´Ēāĩ‡ā´œāĩ ā´‰ā´Ÿāĩģ ⴤⴍāĩā´¨āĩ† ā´Ēāĩā´¤āĩā´•āĩā´•āĩā´‚.", + "server_restarting_title": "ā´¸āĩ†āĩŧā´ĩāĩŧ ā´ąāĩ€ā´¸āĩā´ąāĩā´ąā´žāĩŧⴟāĩā´Ÿāĩ ⴚāĩ†ā´¯āĩā´¯āĩā´¨āĩā´¨āĩ", "server_stats": "ā´¸āĩ†āĩŧā´ĩāĩŧ ā´¸āĩā´Ĩā´ŋā´¤ā´ŋā´ĩā´ŋā´ĩā´°ā´•āĩā´•ā´Ŗā´•āĩā´•āĩā´•āĩž", + "server_update_available": "ā´¸āĩ†āĩŧā´ĩāĩŧ ā´…ā´Ēāĩâ€Œā´Ąāĩ‡ā´ąāĩā´ąāĩ ⴞⴭāĩā´¯ā´Žā´žā´Ŗāĩ", "server_version": "ā´¸āĩ†āĩŧā´ĩāĩŧ ā´Ēā´¤ā´ŋā´Ēāĩā´Ēāĩ", "set": "ⴏⴜāĩā´œā´Žā´žā´•āĩā´•āĩā´•", "set_as_album_cover": "ā´†āĩŊā´Ŧā´‚ ā´•ā´ĩā´ąā´žā´¯ā´ŋ ⴏⴜāĩā´œā´Žā´žā´•āĩā´•āĩā´•", @@ -1790,6 +1872,8 @@ "setting_notifications_subtitle": "ā´¨ā´ŋā´™āĩā´™ā´ŗāĩā´Ÿāĩ† ā´…ā´ąā´ŋā´¯ā´ŋā´Ēāĩā´Ēāĩ ā´Žāĩāĩģⴗ⴪ⴍⴕāĩž ā´•āĩā´°ā´Žāĩ€ā´•ā´°ā´ŋā´•āĩā´•āĩā´•", "setting_notifications_total_progress_subtitle": "ā´ŽāĩŠā´¤āĩā´¤ā´¤āĩā´¤ā´ŋā´˛āĩā´ŗāĩā´ŗ ā´…ā´Ēāĩâ€Œā´˛āĩ‹ā´Ąāĩ ā´Ēāĩā´°āĩ‹ā´—ā´¤ā´ŋ (ⴚāĩ†ā´¯āĩā´¤ā´¤āĩ/ⴆⴕāĩ† ā´…ā´¸ā´ąāĩā´ąāĩā´•āĩž)", "setting_notifications_total_progress_title": "ā´Ēā´ļāĩā´šā´žā´¤āĩā´¤ā´˛ ā´Ŧā´žā´•āĩā´•ā´Ēāĩā´Ēā´ŋā´¨āĩā´ąāĩ† ā´ŽāĩŠā´¤āĩā´¤ā´‚ ā´Ēāĩā´°āĩ‹ā´—ā´¤ā´ŋ ā´•ā´žā´Ŗā´ŋā´•āĩā´•āĩā´•", + "setting_video_viewer_auto_play_subtitle": "ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ā´•āĩž ā´¤āĩā´ąā´•āĩā´•āĩā´Žāĩā´Ēāĩ‹āĩž ⴤⴍāĩā´¨āĩ† ā´Ēāĩā´˛āĩ‡ ⴚāĩ†ā´¯āĩā´¯ā´žāĩģ ⴆⴰⴂⴭā´ŋā´•āĩā´•āĩā´•", + "setting_video_viewer_auto_play_title": "ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ā´•āĩž ā´“ā´Ÿāĩā´Ÿāĩ‹ ā´Ēāĩā´˛āĩ‡ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "setting_video_viewer_looping_title": "ā´˛āĩ‚ā´Ēāĩā´Ēā´ŋā´‚ā´—āĩ", "setting_video_viewer_original_video_subtitle": "ā´¸āĩ†āĩŧā´ĩā´ąā´ŋāĩŊ ā´¨ā´ŋā´¨āĩā´¨āĩ ā´’ā´°āĩ ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ ā´¸āĩā´Ÿāĩā´°āĩ€ā´‚ ⴚāĩ†ā´¯āĩā´¯āĩā´Žāĩā´Ēāĩ‹āĩž, ā´’ā´°āĩ ⴟāĩā´°ā´žāĩģā´¸āĩâ€Œā´•āĩ‹ā´Ąāĩ ⴞⴭāĩā´¯ā´Žā´žā´Ŗāĩ†ā´™āĩā´•ā´ŋā´˛āĩā´‚ ā´¯ā´Ĩā´žāĩŧā´¤āĩā´Ĩ ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ ā´Ēāĩā´˛āĩ‡ ⴚāĩ†ā´¯āĩā´¯āĩā´•. ⴇⴤāĩ ā´Ŧā´Ģā´ąā´ŋā´‚ā´—ā´ŋā´¨āĩ ā´•ā´žā´°ā´Ŗā´Žā´žā´¯āĩ‡ā´•āĩā´•ā´žā´‚. ā´Ēāĩā´°ā´žā´Ļāĩ‡ā´ļā´ŋā´•ā´Žā´žā´¯ā´ŋ ⴞⴭāĩā´¯ā´Žā´žā´¯ ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ā´•āĩž ⴈ ā´•āĩā´°ā´Žāĩ€ā´•ā´°ā´Ŗā´‚ ā´Ēā´°ā´ŋā´—ā´Ŗā´ŋā´•āĩā´•ā´žā´¤āĩ† ⴤⴍāĩā´¨āĩ† ā´¯ā´Ĩā´žāĩŧā´¤āĩā´Ĩ ā´—āĩā´Ŗā´Žāĩ‡ā´¨āĩā´Žā´¯ā´ŋāĩŊ ā´Ēāĩā´˛āĩ‡ ⴚāĩ†ā´¯āĩā´¯āĩā´‚.", "setting_video_viewer_original_video_title": "ā´¯ā´Ĩā´žāĩŧā´¤āĩā´Ĩ ā´ĩāĩ€ā´Ąā´ŋā´¯āĩ‹ ā´¨ā´ŋāĩŧā´Ŧā´¨āĩā´§ā´Žā´žā´•āĩā´•āĩā´•", @@ -1881,6 +1965,7 @@ "show_slideshow_transition": "ā´¸āĩā´˛āĩˆā´Ąāĩâ€Œā´ˇāĩ‹ ⴏⴂⴕāĩā´°ā´Žā´Ŗā´‚ ā´•ā´žā´Ŗā´ŋā´•āĩā´•āĩā´•", "show_supporter_badge": "ā´¸ā´šā´žā´¯ā´ŋā´¯āĩā´Ÿāĩ† ā´Ŧā´žā´Ąāĩā´œāĩ", "show_supporter_badge_description": "ā´’ā´°āĩ ā´¸ā´šā´žā´¯ā´ŋā´¯āĩā´Ÿāĩ† ā´Ŧā´žā´Ąāĩā´œāĩ ā´•ā´žā´Ŗā´ŋā´•āĩā´•āĩā´•", + "show_text_recognition": "ⴟāĩ†ā´•āĩā´¸āĩā´ąāĩā´ąāĩ ā´¤ā´ŋā´°ā´ŋⴚāĩā´šā´ąā´ŋā´¯āĩŊ ā´•ā´žā´Ŗā´ŋā´•āĩā´•āĩā´•", "show_text_search_menu": "ⴟāĩ†ā´•āĩā´¸āĩā´ąāĩā´ąāĩ ā´¤ā´ŋā´°ā´¯āĩŊ ā´Žāĩ†ā´¨āĩ ā´•ā´žā´Ŗā´ŋā´•āĩā´•āĩā´•", "shuffle": "ā´ˇā´Ģā´ŋāĩž ⴚāĩ†ā´¯āĩā´¯āĩā´•", "sidebar": "ā´¸āĩˆā´Ąāĩâ€Œā´Ŧā´žāĩŧ", @@ -1951,6 +2036,7 @@ "tags": "ā´Ÿā´žā´—āĩā´•āĩž", "tap_to_run_job": "ⴜāĩ‹ā´˛ā´ŋ ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´ŋā´Ēāĩā´Ēā´ŋā´•āĩā´•ā´žāĩģ ā´Ÿā´žā´Ēāĩā´Ēāĩā´šāĩ†ā´¯āĩā´¯āĩā´•", "template": "ⴟāĩ†ā´‚ā´Ēāĩā´˛āĩ‡ā´ąāĩā´ąāĩ", + "text_recognition": "ⴟāĩ†ā´•āĩā´¸āĩā´ąāĩā´ąāĩ ā´¤ā´ŋā´°ā´ŋⴚāĩā´šā´ąā´ŋā´¯āĩŊ", "theme": "ā´¤āĩ€ā´‚", "theme_selection": "ā´¤āĩ€ā´‚ ā´¤ā´ŋā´°ā´žāĩā´žāĩ†ā´Ÿāĩā´•āĩā´•āĩŊ", "theme_selection_description": "ā´¨ā´ŋā´™āĩā´™ā´ŗāĩā´Ÿāĩ† ā´Ŧāĩā´°āĩ—ā´¸ā´ąā´ŋā´¨āĩā´ąāĩ† ā´¸ā´ŋā´¸āĩā´ąāĩā´ąā´‚ ā´Žāĩāĩģā´—ā´Ŗā´¨ ā´…ā´¨āĩā´¸ā´°ā´ŋⴚāĩā´šāĩ ā´¤āĩ€ā´‚ ā´˛āĩˆā´ąāĩā´ąāĩ ā´…ā´˛āĩā´˛āĩ†ā´™āĩā´•ā´ŋāĩŊ ā´Ąā´žāĩŧā´•āĩā´•āĩ ⴆⴝā´ŋ ā´¯ā´žā´¨āĩā´¤āĩā´°ā´ŋā´•ā´Žā´žā´¯ā´ŋ ⴏⴜāĩā´œā´Žā´žā´•āĩā´•āĩā´•", @@ -1969,7 +2055,9 @@ "theme_setting_three_stage_loading_title": "ā´Žāĩ‚ā´¨āĩā´¨āĩ-ⴘⴟāĩā´Ÿ ā´˛āĩ‹ā´Ąā´ŋā´‚ā´—āĩ ā´Ēāĩā´°ā´ĩāĩŧā´¤āĩā´¤ā´¨ā´•āĩā´ˇā´Žā´Žā´žā´•āĩā´•āĩā´•", "they_will_be_merged_together": "ā´…ā´ĩā´¯āĩ† ā´’ā´°āĩā´Žā´ŋⴚāĩā´šāĩ ⴞⴝā´ŋā´Ēāĩā´Ēā´ŋā´•āĩā´•āĩā´‚", "third_party_resources": "ā´Žāĩ‚ā´¨āĩā´¨ā´žā´‚ ā´•ā´•āĩā´ˇā´ŋ ā´‰ā´ąā´ĩā´ŋā´Ÿā´™āĩā´™āĩž", + "time": "ā´¸ā´Žā´¯ā´‚", "time_based_memories": "ā´¸ā´Žā´¯ā´‚ ā´…ā´Ÿā´ŋā´¸āĩā´Ĩā´žā´¨ā´Žā´žā´•āĩā´•ā´ŋā´¯āĩā´ŗāĩā´ŗ ā´“āĩŧā´Žāĩā´Žā´•āĩž", + "time_based_memories_duration": "ā´“ā´°āĩ‹ ⴚā´ŋā´¤āĩā´°ā´ĩāĩā´‚ ā´Ēāĩā´°ā´Ļāĩŧā´ļā´ŋā´Ēāĩā´Ēā´ŋā´•āĩā´•āĩ‡ā´Ŗāĩā´Ÿ ā´¸āĩ†ā´•āĩā´•āĩģā´Ąāĩā´•ā´ŗāĩā´Ÿāĩ† ā´Žā´Ŗāĩā´Ŗā´‚.", "timeline": "ⴟāĩˆā´‚ā´˛āĩˆāĩģ", "timezone": "ā´¸ā´Žā´¯ā´Žāĩ‡ā´–ā´˛", "to_archive": "ā´†āĩŧā´•āĩā´•āĩˆā´ĩāĩ ⴚāĩ†ā´¯āĩā´¯āĩā´•", @@ -2001,6 +2089,7 @@ "troubleshoot": "ⴟāĩā´°ā´Ŧā´ŋāĩžā´ˇāĩ‚ā´Ÿāĩā´Ÿāĩ", "type": "ⴤⴰⴂ", "unable_to_change_pin_code": "ā´Ēā´ŋāĩģ ā´•āĩ‹ā´Ąāĩ ā´Žā´žā´ąāĩā´ąā´žāĩģ ā´•ā´´ā´ŋā´¯ā´ŋā´˛āĩā´˛", + "unable_to_check_version": "ā´†ā´Ēāĩā´Ēāĩ ā´…ā´˛āĩā´˛āĩ†ā´™āĩā´•ā´ŋāĩŊ ā´¸āĩ†āĩŧā´ĩāĩŧ ā´Ēā´¤ā´ŋā´Ēāĩā´Ēāĩ ā´Ēā´°ā´ŋā´ļāĩ‹ā´§ā´ŋā´•āĩā´•ā´žāĩģ ā´•ā´´ā´ŋā´¯ā´ŋā´˛āĩā´˛", "unable_to_setup_pin_code": "ā´Ēā´ŋāĩģ ā´•āĩ‹ā´Ąāĩ ⴏⴜāĩā´œāĩ€ā´•ā´°ā´ŋā´•āĩā´•ā´žāĩģ ā´•ā´´ā´ŋā´¯ā´ŋā´˛āĩā´˛", "unarchive": "ā´…āĩēā´†āĩŧā´•āĩā´•āĩˆā´ĩāĩ ⴚāĩ†ā´¯āĩā´¯āĩā´•", "unarchive_action_prompt": "{count} ā´Žā´Ŗāĩā´Ŗā´‚ ā´†āĩŧā´•āĩā´•āĩˆā´ĩā´ŋāĩŊ ā´¨ā´ŋā´¨āĩā´¨āĩ ā´¨āĩ€ā´•āĩā´•ā´‚ ⴚāĩ†ā´¯āĩā´¤āĩ", @@ -2109,6 +2198,7 @@ "welcome": "ā´¸āĩā´ĩā´žā´—ā´¤ā´‚", "welcome_to_immich": "Immich-ā´˛āĩ‡ā´•āĩā´•āĩ ā´¸āĩā´ĩā´žā´—ā´¤ā´‚", "wifi_name": "ā´ĩāĩˆ-ā´Ģāĩˆā´¯āĩā´Ÿāĩ† ā´Ēāĩ‡ā´°āĩ", + "workflow": "ā´ĩāĩŧā´•āĩā´•āĩā´Ģāĩā´˛āĩ‹ (Workflow)", "wrong_pin_code": "ā´¤āĩ†ā´ąāĩā´ąā´žā´¯ ā´Ēā´ŋāĩģ ā´•āĩ‹ā´Ąāĩ", "year": "ā´ĩāĩŧⴎⴂ", "years_ago": "{years, plural, one {# ā´ĩāĩŧⴎⴂ} other {# ā´ĩāĩŧⴎⴙāĩā´™āĩž}} ā´Žāĩā´Žāĩā´Ēāĩ", diff --git a/i18n/mn.json b/i18n/mn.json index 62e40274af..fb87e18f48 100644 --- a/i18n/mn.json +++ b/i18n/mn.json @@ -50,7 +50,6 @@ "face_detection": "ĐŌ¯Ō¯Ņ€ иĐģŅ€Ō¯Ō¯ĐģŅŅ…", "image_quality": "ЧаĐŊĐ°Ņ€", "job_settings": "АĐļĐģŅ‹ĐŊ Ņ‚ĐžŅ…Đ¸Ņ€ĐŗĐžĐž", - "job_status": "АĐļĐģŅ‹ĐŊ Ņ‚ĶŠĐģĶŠĐ˛", "machine_learning_enabled": "ĐœĐ°ŅˆĐ¸ĐŊ ŅŅƒŅ€ĐŗĐ°ĐģŅ‚ Đ¸Đ´ŅĐ˛Ņ…ĐļŌ¯Ō¯ĐģŅŅ…", "machine_learning_enabled_description": "Đ˜Đ´ŅĐ˛Ņ…ĐŗŌ¯Đš йОĐģĐŗĐžŅĐžĐŊ Ō¯ĐĩĐ´ Đ´ĐžĐžŅ€Ņ… Ņ‚ĐžŅ…Đ¸Ņ€ĐŗĐžĐžĐŊĐžĐžŅ Ņ…Đ°ĐŧĐ°Đ°Ņ€Đ°Ņ…ĐŗŌ¯ĐšĐŗŅŅŅ€ ĐąŌ¯Ņ… ĐŧĐ°ŅˆĐ¸ĐŊ ŅŅƒŅ€ĐŗĐ°Đģ҂ҋĐŊ йОĐģĐžĐŧĐļ Đ¸Đ´ŅĐ˛Ņ…ĐŗŌ¯Đš йОĐģĐŊĐž.", "machine_learning_facial_recognition": "ĐŌ¯Ō¯Ņ€ Ņ‚Đ°ĐŊиĐģŅ‚", diff --git a/i18n/mr.json b/i18n/mr.json index 8404983db1..4b143e2488 100644 --- a/i18n/mr.json +++ b/i18n/mr.json @@ -58,7 +58,7 @@ "backup_onboarding_parts_title": "3-2-1 ā¤ŦāĨ…⤕⤅ā¤Ēā¤Žā¤§āĨā¤¯āĨ‡ ā¤¸ā¤Žā¤žā¤ĩā¤ŋ⤎āĨā¤Ÿ ā¤†ā¤šāĨ‡:", "backup_onboarding_title": "ā¤ŦāĨ…⤕⤅ā¤Ē", "backup_settings": "ā¤ĄāĨ‡ā¤Ÿā¤žā¤ŦāĨ‡ā¤¸ ā¤Ąā¤‚ā¤Ē ⤏āĨ‡ā¤Ÿā¤ŋ⤂⤗āĨā¤œ", - "backup_settings_description": "ā¤Žā¤žā¤šā¤ŋ⤤āĨ€ ā¤¸ā¤‚ā¤šā¤¯ ā¤ĒāĨā¤°ā¤¤ā¤ŋ⤞ā¤ŋā¤ĒāĨ€ ā¤ĩāĨā¤¯ā¤ĩ⤏āĨā¤Ĩā¤žā¤Ē⤍", + "backup_settings_description": "ā¤ĄāĨ‡ā¤Ÿā¤žā¤ŦāĨ‡ā¤¸ ā¤Ąā¤‚ā¤Ē ⤏āĨ‡ā¤Ÿā¤ŋ⤂⤗āĨā¤œ ā¤ĩāĨā¤¯ā¤ĩ⤏āĨā¤Ĩā¤žā¤Ēā¤ŋ⤤ ā¤•ā¤°ā¤žāĨ¤", "cleared_jobs": "{job}: ⤚āĨā¤¯ā¤ž ā¤•ā¤žā¤°āĨā¤¯ā¤ĩā¤žā¤šāĨā¤¯ā¤ž ā¤•ā¤žā¤ĸ⤞āĨā¤¯ā¤ž", "config_set_by_file": "ā¤¸ā¤‚ā¤°ā¤šā¤¨ā¤ž ⤏⤧āĨā¤¯ā¤ž ā¤¸ā¤‚ā¤°ā¤šā¤¨ā¤ž ā¤–ā¤¤ā¤žā¤ĩ⤪āĨ€ā¤ĻāĨā¤ĩā¤žā¤°āĨ‡ ⤍ā¤ŋā¤ļāĨā¤šā¤ŋ⤤ ⤕āĨ‡ā¤˛āĨ€ ā¤†ā¤šāĨ‡", "confirm_delete_library": "⤤āĨā¤ŽāĨā¤šā¤žā¤˛ā¤ž ⤍⤕āĨā¤•āĨ€ ā¤šāĨ‡ {library} ⤏⤂⤗āĨā¤°ā¤šā¤žā¤˛ā¤¯ ā¤šā¤Ÿā¤ĩā¤žā¤¯ā¤šāĨ‡ ā¤†ā¤šāĨ‡ ā¤•ā¤ž?", @@ -74,7 +74,6 @@ "disable_login": "ā¤ĒāĨā¤°ā¤ĩāĨ‡ā¤ļā¤žā¤§ā¤ŋ⤕⤰ ā¤ĩ⤰āĨā¤œāĨā¤¯ ā¤•ā¤°ā¤ž", "duplicate_detection_job_description": "ā¤¸ā¤žā¤°ā¤–āĨā¤¯ā¤ž ā¤›ā¤žā¤¯ā¤žā¤šā¤ŋ⤤āĨā¤°ā¤žā¤‚ā¤šā¤ž ā¤ļāĨ‹ā¤§ ⤘āĨ‡ā¤ŖāĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ā¤¯ā¤žā¤‚ā¤¤āĨā¤°ā¤ŋ⤕āĨ€ ā¤ĒāĨā¤°ā¤ļā¤ŋ⤕āĨā¤ˇā¤Ŗ ā¤ĻāĨā¤¯ā¤ž. ā¤šāĨ€ ā¤•ā¤žā¤°āĨā¤¯ā¤•āĨā¤ˇā¤Žā¤¤ā¤ž ⤚⤤āĨā¤° ā¤ļāĨ‹ā¤§ā¤ĒāĨā¤°ā¤Ŗā¤žā¤˛āĨ€ā¤ĩ⤰ ⤅ā¤ĩ⤞⤂ā¤ŦāĨ‚⤍ ā¤†ā¤šāĨ‡", "exclusion_pattern_description": "⤆ā¤Ē⤞āĨ‡ ⤏⤂⤗āĨā¤°ā¤šā¤žā¤˛ā¤¯ ā¤šā¤žā¤ŗā¤¤ā¤žā¤¨ā¤ž ⤅ā¤Ēā¤ĩā¤žā¤Ļ ā¤¨ā¤ŽāĨā¤¨āĨ‡ ⤆ā¤Ē⤞āĨā¤¯ā¤žā¤˛ā¤ž ā¤–ā¤¤ā¤žā¤ĩ⤪āĨā¤¯ā¤ž ⤆⤪ā¤ŋ ⤰āĨā¤¨ā¤ŋ⤰āĨā¤ĻāĨ‡ā¤ļā¤ŋ⤕āĨ‡ā¤˛ā¤ž ā¤ĻāĨā¤°āĨā¤˛ā¤•āĨā¤ˇāĨ€ā¤¤ ⤕⤰āĨ‚ ā¤ĻāĨ‡ā¤¤ā¤žā¤¤. ⤆ā¤Ē⤞āĨā¤¯ā¤žā¤•ā¤ĄāĨ‡ ā¤•ā¤šāĨā¤šāĨā¤¯ā¤ž ā¤–ā¤¤ā¤žā¤ĩ⤪āĨā¤¯ā¤ž ā¤¸ā¤žā¤°ā¤–āĨā¤¯ā¤ž ā¤†ā¤¯ā¤žā¤¤ ⤕⤰āĨ‚ ā¤‡ā¤šāĨā¤›ā¤ŋ⤤ ⤍⤏⤞āĨ‡ā¤˛āĨā¤¯ā¤ž ⤅⤏⤂ā¤Ēā¤žā¤Ļā¤ŋ⤤ (RAW) ā¤–ā¤¤ā¤žā¤ĩ⤪āĨā¤¯ā¤ž ⤅⤏⤞āĨ‡ā¤˛āĨā¤¯ā¤ž ⤍ā¤ŋ⤰āĨā¤ĻāĨ‡ā¤ļā¤ŋā¤•ā¤ž ⤅⤏⤞āĨā¤¯ā¤žā¤¸ ā¤šāĨ‡ ⤉ā¤Ē⤝āĨā¤•āĨā¤¤ ā¤†ā¤šāĨ‡.", - "external_library_management": "ā¤Ŧā¤žā¤šāĨā¤¯ ⤏⤂⤗āĨā¤°ā¤šā¤žā¤˛ā¤¯ ā¤ĩāĨā¤¯ā¤ĩ⤏āĨā¤Ĩā¤žā¤Ē⤍", "face_detection": "ā¤ŽāĨā¤– ⤏⤂ā¤ļāĨ‹ā¤§ā¤¨", "face_detection_description": "ā¤Žā¤ļāĨ€ā¤¨ ⤞⤰āĨā¤¨ā¤ŋ⤂⤗ ā¤ĩā¤žā¤Ē⤰āĨ‚⤍ ā¤Žā¤žā¤˛ā¤Žā¤¤āĨā¤¤ā¤žā¤‚ā¤Žā¤§āĨ€ā¤˛ ⤚āĨ‡ā¤šā¤°āĨ‡ ā¤ļāĨ‹ā¤§ā¤ž. ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋā¤“ā¤‚ā¤¸ā¤žā¤ āĨ€, ā¤Ģ⤕āĨā¤¤ ā¤Ĩ⤂ā¤Ŧ⤍āĨ‡ā¤˛ā¤šā¤ž ā¤ĩā¤ŋā¤šā¤žā¤° ⤕āĨ‡ā¤˛ā¤ž ā¤œā¤žā¤¤āĨ‹. \"⤰ā¤ŋā¤ĢāĨā¤°āĨ‡ā¤ļ\" (ā¤ĒāĨā¤¨āĨā¤šā¤ž) ⤏⤰āĨā¤ĩ ā¤Žā¤žā¤˛ā¤Žā¤¤āĨā¤¤ā¤žā¤‚ā¤ĩ⤰ ā¤ĒāĨā¤°ā¤•āĨā¤°ā¤ŋā¤¯ā¤ž ⤕⤰⤤āĨ‡. \"⤰āĨ€ā¤¸āĨ‡ā¤Ÿ\" ā¤¯ā¤žā¤ĩāĨā¤¯ā¤¤ā¤ŋ⤰ā¤ŋ⤕āĨā¤¤ ⤏⤰āĨā¤ĩ ā¤ĩ⤰āĨā¤¤ā¤Žā¤žā¤¨ ⤚āĨ‡ā¤šā¤°ā¤ž ā¤ĄāĨ‡ā¤Ÿā¤ž ā¤¸ā¤žā¤Ģ ⤕⤰⤤āĨ‡. \"ā¤—ā¤šā¤žā¤ŗ\" ā¤Žā¤žā¤˛ā¤Žā¤¤āĨā¤¤ā¤žā¤‚ā¤ĩ⤰ ⤅ā¤ĻāĨā¤¯ā¤žā¤Ē ā¤ĒāĨā¤°ā¤•āĨā¤°ā¤ŋā¤¯ā¤ž ⤍ ⤕āĨ‡ā¤˛āĨ‡ā¤˛āĨā¤¯ā¤ž ā¤°ā¤žā¤‚ā¤—āĨ‡ā¤¤ ⤠āĨ‡ā¤ĩ⤤āĨ‡. ā¤ļāĨ‹ā¤§ā¤˛āĨ‡ā¤˛āĨ‡ ⤚āĨ‡ā¤šā¤°āĨ‡ ā¤ĢāĨ‡ā¤¸ ā¤Ąā¤ŋ⤟āĨ‡ā¤•āĨā¤ļ⤍ ā¤ĒāĨ‚⤰āĨā¤Ŗ ā¤ā¤žā¤˛āĨā¤¯ā¤žā¤¨ā¤‚⤤⤰ ā¤ĢāĨ‡ā¤ļā¤ŋ⤝⤞ ⤰āĨ‡ā¤•⤗āĨā¤¨ā¤ŋā¤ļā¤¨ā¤¸ā¤žā¤ āĨ€ ā¤°ā¤žā¤‚ā¤—āĨ‡ā¤¤ ⤠āĨ‡ā¤ĩ⤞āĨ‡ ā¤œā¤žā¤¤āĨ€ā¤˛, ⤤āĨā¤¯ā¤žā¤‚ā¤¨ā¤ž ā¤ĩā¤ŋā¤ĻāĨā¤¯ā¤Žā¤žā¤¨ ⤕ā¤ŋ⤂ā¤ĩā¤ž ⤍ā¤ĩāĨ€ā¤¨ ⤞āĨ‹ā¤•ā¤žā¤‚ā¤Žā¤§āĨā¤¯āĨ‡ ā¤—ā¤Ÿā¤Ŧā¤ĻāĨā¤§ ⤕āĨ‡ā¤˛āĨ‡ ā¤œā¤žā¤ˆā¤˛.", "facial_recognition_job_description": "ā¤ļāĨ‹ā¤§ā¤˛āĨ‡ā¤˛āĨ‡ ⤚āĨ‡ā¤šā¤°āĨ‡ ⤞āĨ‹ā¤•ā¤žā¤‚ā¤Žā¤§āĨā¤¯āĨ‡ ā¤—ā¤Ÿā¤Ŧā¤ĻāĨā¤§ ā¤•ā¤°ā¤ž. ā¤šāĨ‡ ⤚⤰⤪ ⤚āĨ‡ā¤šā¤°ā¤ž ā¤ļāĨ‹ā¤§ā¤ŖāĨ‡ ā¤ĒāĨ‚⤰āĨā¤Ŗ ā¤ā¤žā¤˛āĨā¤¯ā¤žā¤¨ā¤‚⤤⤰ ā¤šā¤žā¤˛ā¤¤āĨ‡. \"⤰āĨ€ā¤¸āĨ‡ā¤Ÿ ā¤•ā¤°ā¤ž\" (ā¤ĒāĨā¤¨āĨā¤šā¤ž) ⤏⤰āĨā¤ĩ ⤚āĨ‡ā¤šā¤°āĨ‡ ⤕āĨā¤˛ā¤¸āĨā¤Ÿā¤° ⤕⤰. \"ā¤—ā¤šā¤žā¤ŗ\" ⤚āĨ‡ā¤šā¤°āĨ‡ ā¤°ā¤žā¤‚ā¤—āĨ‡ā¤¤ ā¤¸ā¤Žā¤žā¤ĩā¤ŋ⤎āĨā¤Ÿ ⤕⤰⤤āĨ‡ ⤜āĨā¤¯ā¤žā¤‚ā¤¨ā¤ž ⤍ā¤ŋ⤝āĨā¤•āĨā¤¤ ⤕āĨ‡ā¤˛āĨ‡ā¤˛āĨ€ ā¤ĩāĨā¤¯ā¤•āĨā¤¤āĨ€ ā¤¨ā¤žā¤šāĨ€.", @@ -107,19 +106,23 @@ "job_not_concurrency_safe": "ā¤šāĨ‡ ā¤•ā¤žā¤°āĨā¤¯ ā¤¸ā¤Žā¤žā¤‚ā¤¤ā¤°ā¤Ē⤪āĨ‡ ā¤šā¤žā¤˛ā¤ĩ⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ⤏āĨā¤°ā¤•āĨā¤ˇā¤ŋ⤤ ā¤¨ā¤žā¤šāĨ€.", "job_settings": "ā¤•ā¤žā¤°āĨā¤¯ ⤏āĨ‡ā¤Ÿā¤ŋ⤂⤗āĨā¤œ", "job_settings_description": "ā¤•ā¤žā¤°āĨā¤¯ā¤žā¤‚ā¤šāĨ€ ā¤¸ā¤Žā¤žā¤‚ā¤¤ā¤°ā¤¤ā¤ž ā¤ĩāĨā¤¯ā¤ĩ⤏āĨā¤Ĩā¤žā¤Ēā¤ŋ⤤ ā¤•ā¤°ā¤ž", - "job_status": "ā¤•ā¤žā¤°āĨā¤¯ ⤏āĨā¤Ĩā¤ŋ⤤āĨ€", "jobs_delayed": "{jobCount, plural, other {# ā¤ĩā¤ŋ⤞⤂ā¤Ŧā¤ŋ⤤}}", "jobs_failed": "{jobCount, plural, other {# ⤅⤝ā¤ļ⤏āĨā¤ĩāĨ€}}", "library_created": "⤏⤂⤗āĨā¤°ā¤š ā¤¤ā¤¯ā¤žā¤° ⤕āĨ‡ā¤˛ā¤ž: {library}", "library_deleted": "⤏⤂⤗āĨā¤°ā¤š ā¤šā¤Ÿā¤ĩā¤˛ā¤ž", + "library_details": "ā¤˛ā¤žā¤¯ā¤ŦāĨā¤°ā¤°āĨ€ ⤤ā¤Ēā¤ļāĨ€ā¤˛", + "library_folder_description": "ā¤‡ā¤ŽāĨā¤ĒāĨ‹ā¤°āĨā¤Ÿ ⤕⤰⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ā¤ĢāĨ‹ā¤˛āĨā¤Ąā¤° ⤍ā¤ŋā¤ĩā¤Ąā¤ž. ā¤šā¤ž ā¤ĢāĨ‹ā¤˛āĨā¤Ąā¤° ⤆⤪ā¤ŋ ⤤āĨā¤¯ā¤žā¤¤āĨ€ā¤˛ ⤏ā¤Ŧā¤ĢāĨ‹ā¤˛āĨā¤Ąā¤°āĨā¤¸ ā¤ĒāĨā¤°ā¤¤ā¤ŋā¤Žā¤ž ⤆⤪ā¤ŋ ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋā¤“ā¤‚ā¤¸ā¤žā¤ āĨ€ ⤏āĨā¤•āĨ…⤍ ⤕āĨ‡ā¤˛āĨ‡ ā¤œā¤žā¤¤āĨ€ā¤˛.", + "library_remove_exclusion_pattern_prompt": "⤤āĨā¤ŽāĨā¤šā¤žā¤˛ā¤ž ⤍⤕āĨā¤•āĨ€ ā¤šā¤ž ā¤ĩ⤗⤺⤪āĨā¤¯ā¤žā¤šā¤ž ā¤¨ā¤ŽāĨā¤¨ā¤ž ā¤•ā¤žā¤ĸāĨ‚⤍ ā¤Ÿā¤žā¤•ā¤žā¤¯ā¤šā¤ž ā¤†ā¤šāĨ‡ ā¤•ā¤ž?", + "library_remove_folder_prompt": "⤤āĨā¤ŽāĨā¤šā¤žā¤˛ā¤ž ⤍⤕āĨā¤•āĨ€ ā¤šā¤ž ā¤‡ā¤ŽāĨā¤ĒāĨ‹ā¤°āĨā¤Ÿ ā¤ĢāĨ‹ā¤˛āĨā¤Ąā¤° ā¤•ā¤žā¤ĸāĨ‚⤍ ā¤Ÿā¤žā¤•ā¤žā¤¯ā¤šā¤ž ā¤†ā¤šāĨ‡ ā¤•ā¤ž?", "library_scanning": "⤍ā¤ŋā¤¯ā¤Žā¤ŋ⤤ ⤏āĨā¤•āĨ…⤍ā¤ŋ⤂⤗", "library_scanning_description": "⤍ā¤ŋā¤¯ā¤Žā¤ŋ⤤ ā¤˛ā¤žā¤¯ā¤ŦāĨā¤°ā¤°āĨ€ ⤏āĨā¤•āĨ…⤍ā¤ŋ⤂⤗ ⤕āĨ‰ā¤¨āĨā¤Ģā¤ŋ⤗⤰ ā¤•ā¤°ā¤ž", "library_scanning_enable_description": "⤍ā¤ŋā¤¯ā¤Žā¤ŋ⤤ ā¤˛ā¤žā¤¯ā¤ŦāĨā¤°ā¤°āĨ€ ⤏āĨā¤•āĨ…⤍ā¤ŋ⤂⤗ ā¤šā¤žā¤˛āĨ‚ ā¤•ā¤°ā¤ž", "library_settings": "ā¤Ŧā¤žā¤šāĨā¤¯ ā¤ŽāĨ€ā¤Ąā¤ŋā¤¯ā¤ž ⤏⤂⤗āĨā¤°ā¤š", "library_settings_description": "ā¤Ŧā¤žā¤šāĨā¤¯ ā¤˛ā¤žā¤¯ā¤ŦāĨā¤°ā¤°āĨ€ ⤏āĨ‡ā¤Ÿā¤ŋ⤂⤗āĨā¤œ ā¤ĩāĨā¤¯ā¤ĩ⤏āĨā¤Ĩā¤žā¤Ēā¤ŋ⤤ ā¤•ā¤°ā¤ž", "library_tasks_description": "ā¤Ŧā¤žā¤šāĨā¤¯ ā¤˛ā¤žā¤¯ā¤ŦāĨā¤°ā¤°āĨ€ā¤¤āĨ€ā¤˛ ⤍ā¤ĩāĨ€ā¤¨ ⤕ā¤ŋ⤂ā¤ĩā¤ž ā¤Ŧā¤Ļ⤞⤞āĨ‡ā¤˛āĨā¤¯ā¤ž ā¤ĒāĨā¤°ā¤¤ā¤ŋā¤Žā¤ž ⤆⤪ā¤ŋ ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋā¤“ā¤‚ā¤¸ā¤žā¤ āĨ€ ⤏āĨā¤•āĨ…⤍ ā¤•ā¤°ā¤ž", + "library_updated": "ā¤˛ā¤žā¤¯ā¤ŦāĨā¤°ā¤°āĨ€ ⤅ā¤Ēā¤ĄāĨ‡ā¤Ÿ ⤕āĨ‡ā¤˛āĨ€", "library_watching_enable_description": "ā¤Ģā¤žā¤‡ā¤˛ ā¤Ŧā¤Ļā¤˛ā¤žā¤‚ā¤¸ā¤žā¤ āĨ€ ā¤Ŧā¤žā¤šāĨā¤¯ ā¤˛ā¤žā¤¯ā¤ŦāĨā¤°ā¤°āĨ€ ⤤ā¤Ēā¤žā¤¸ā¤ŖāĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ⤍ā¤ŋ⤰āĨ€ā¤•āĨā¤ˇā¤Ŗ ā¤•ā¤°ā¤ž", - "library_watching_settings": "ā¤˛ā¤žā¤¯ā¤ŦāĨā¤°ā¤°āĨ€ ⤍ā¤ŋ⤰āĨ€ā¤•āĨā¤ˇā¤Ŗ (ā¤ĒāĨā¤°ā¤žā¤¯āĨ‹ā¤—ā¤ŋ⤕)", + "library_watching_settings": "ā¤˛ā¤žā¤¯ā¤ŦāĨā¤°ā¤°āĨ€ ⤍ā¤ŋ⤰āĨ€ā¤•āĨā¤ˇā¤Ŗ [ā¤ĒāĨā¤°ā¤žā¤¯āĨ‹ā¤—ā¤ŋ⤕]", "library_watching_settings_description": "ā¤Ŧā¤Ļ⤞ ā¤ā¤žā¤˛āĨ‡ā¤˛āĨā¤¯ā¤ž ā¤Ģā¤žā¤‡ā¤˛āĨā¤¸ā¤ĩ⤰ ⤏āĨā¤ĩā¤¯ā¤‚ā¤šā¤˛ā¤ŋ⤤ā¤Ē⤪āĨ‡ ⤍ā¤ŋā¤—ā¤°ā¤žā¤ŖāĨ€ ā¤•ā¤°ā¤ž", "logging_enable_description": "⤞āĨ‰ā¤—ā¤ŋ⤂⤗ ⤏⤕āĨā¤ˇā¤Ž ā¤•ā¤°ā¤ž", "logging_level_description": "⤏⤕āĨā¤ˇā¤Ž ā¤ā¤žā¤˛āĨā¤¯ā¤žā¤ĩ⤰ ā¤ĩā¤žā¤Ē⤰⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ⤕āĨ‹ā¤Ŗā¤¤ā¤ž ⤞āĨ‰ā¤— ⤏āĨā¤¤ā¤° ⤍ā¤ŋā¤ĩā¤Ąā¤ž.", @@ -172,6 +175,10 @@ "machine_learning_smart_search_enabled": "⤏āĨā¤Žā¤žā¤°āĨā¤Ÿ ⤏⤰āĨā¤š ⤏⤕āĨā¤ˇā¤Ž ā¤•ā¤°ā¤ž", "machine_learning_smart_search_enabled_description": "⤅⤕āĨā¤ˇā¤Ž ⤕āĨ‡ā¤˛āĨā¤¯ā¤žā¤¸, ā¤ĒāĨā¤°ā¤¤ā¤ŋā¤Žā¤ž ⤏āĨā¤Žā¤žā¤°āĨā¤Ÿ ⤏⤰āĨā¤šā¤¸ā¤žā¤ āĨ€ ā¤ā¤¨āĨā¤•āĨ‹ā¤Ą ⤕āĨ‡ā¤˛āĨā¤¯ā¤ž ā¤œā¤žā¤Ŗā¤žā¤° ā¤¨ā¤žā¤šāĨ€ā¤¤.", "machine_learning_url_description": "ā¤Žā¤ļāĨ€ā¤¨ ⤞⤰āĨā¤¨ā¤ŋ⤂⤗ ⤏⤰āĨā¤ĩāĨā¤šā¤°ā¤šāĨ€ URL. ā¤ā¤•ā¤žā¤šāĨ‚⤍ ⤅⤧ā¤ŋ⤕ URL ā¤Ļā¤ŋ⤞āĨā¤¯ā¤žā¤¸, ā¤ĒāĨā¤°ā¤Ĩā¤Ž ⤤āĨ‡ ā¤Ļā¤ŋ⤞āĨ‡ā¤˛āĨā¤¯ā¤ž ⤕āĨā¤°ā¤Žā¤žā¤¨āĨ‡ ā¤ĒāĨā¤°ā¤¤āĨā¤¯āĨ‡ā¤• ⤏⤰āĨā¤ĩāĨā¤šā¤°ā¤ĩ⤰ ā¤ā¤•-ā¤ā¤• ⤕⤰āĨ‚⤍ ā¤ĒāĨā¤°ā¤¯ā¤¤āĨā¤¨ ⤕āĨ‡ā¤˛āĨ‡ ā¤œā¤žā¤¤āĨ€ā¤˛, ⤜āĨ‹ā¤Ē⤰āĨā¤¯ā¤‚⤤ ⤕āĨ‹ā¤ŖāĨ€ā¤¤ā¤°āĨ€ ⤝ā¤ļ⤏āĨā¤ĩāĨ€ ā¤ĒāĨā¤°ā¤¤ā¤ŋā¤¸ā¤žā¤Ļ ā¤ĻāĨ‡ā¤¤ ā¤¨ā¤žā¤šāĨ€ ⤤āĨ‹ā¤Ē⤰āĨā¤¯ā¤‚⤤. ⤜āĨ‡ ⤏⤰āĨā¤ĩāĨā¤šā¤° ā¤ĒāĨā¤°ā¤¤ā¤ŋā¤¸ā¤žā¤Ļ ā¤ĻāĨ‡ā¤¤ ā¤¨ā¤žā¤šāĨ€ā¤¤, ⤤āĨā¤¯ā¤žā¤‚ā¤¨ā¤ž ⤤āĨ‡ ā¤Ē⤰⤤ ā¤‘ā¤¨ā¤˛ā¤žā¤‡ā¤¨ ⤝āĨ‡ā¤ˆā¤Ē⤰āĨā¤¯ā¤‚⤤ ā¤¤ā¤žā¤¤āĨā¤ĒāĨā¤°ā¤¤āĨ‡ ā¤ĻāĨā¤°āĨā¤˛ā¤•āĨā¤ˇā¤ŋ⤤ ⤕āĨ‡ā¤˛āĨ‡ ā¤œā¤žā¤ˆā¤˛.", + "maintenance_settings": "ā¤ĻāĨ‡ā¤–ā¤­ā¤žā¤˛", + "maintenance_settings_description": "Immich ā¤˛ā¤ž ā¤ĻāĨ‡ā¤–ā¤­ā¤žā¤˛ ā¤ŽāĨ‹ā¤Ąā¤Žā¤§āĨā¤¯āĨ‡ ⤠āĨ‡ā¤ĩā¤ž.", + "maintenance_start": "ā¤ĻāĨ‡ā¤–ā¤­ā¤žā¤˛ ā¤ŽāĨ‹ā¤Ą ⤏āĨā¤°āĨ‚ ā¤•ā¤°ā¤ž", + "maintenance_start_error": "ā¤ĻāĨ‡ā¤–ā¤­ā¤žā¤˛ ā¤ŽāĨ‹ā¤Ą ⤏āĨā¤°āĨ‚ ⤕⤰⤪āĨā¤¯ā¤žā¤¤ ⤅⤝ā¤ļ⤏āĨā¤ĩāĨ€.", "manage_concurrency": "ā¤¸ā¤Žā¤žā¤‚ā¤¤ā¤°ā¤¤ā¤ž ā¤ĩāĨā¤¯ā¤ĩ⤏āĨā¤Ĩā¤žā¤Ēā¤ŋ⤤ ā¤•ā¤°ā¤ž", "manage_log_settings": "⤞āĨ‰ā¤— ⤏āĨ‡ā¤Ÿā¤ŋ⤂⤗āĨā¤œ ⤍ā¤ŋ⤝⤂⤤āĨā¤°ā¤Ŗ ā¤•ā¤°ā¤ž", "map_dark_style": "ā¤—ā¤Ąā¤Ļ ā¤ļāĨˆā¤˛āĨ€", @@ -222,6 +229,8 @@ "notification_email_ignore_certificate_errors_description": "TLS ā¤ĒāĨā¤°ā¤Žā¤žā¤Ŗā¤Ē⤤āĨā¤° ā¤Ēā¤Ąā¤¤ā¤žā¤ŗā¤ŖāĨ€ ⤤āĨā¤°āĨā¤ŸāĨ€ ā¤ĻāĨā¤°āĨā¤˛ā¤•āĨā¤ˇā¤ŋ⤤ ā¤•ā¤°ā¤ž (ā¤ļā¤ŋā¤Ģā¤žā¤°ā¤¸āĨ€ā¤¯ ā¤¨ā¤žā¤šāĨ€)", "notification_email_password_description": "ā¤ˆā¤ŽāĨ‡ā¤˛ ⤏⤰āĨā¤ĩāĨā¤šā¤°ā¤ĩ⤰ ā¤ĒāĨā¤°ā¤Žā¤žā¤ŖāĨ€ā¤•ā¤°ā¤Ŗā¤žā¤¸ā¤žā¤ āĨ€ ā¤ĩā¤žā¤Ē⤰⤪āĨā¤¯ā¤žā¤šā¤ž ā¤Ēā¤žā¤¸ā¤ĩ⤰āĨā¤Ą", "notification_email_port_description": "ā¤ˆā¤ŽāĨ‡ā¤˛ ⤏⤰āĨā¤ĩāĨā¤šā¤°ā¤šā¤ž ā¤ĒāĨ‹ā¤°āĨā¤Ÿ (⤉ā¤Ļā¤ž. 25, 465 ⤕ā¤ŋ⤂ā¤ĩā¤ž 587)", + "notification_email_secure": "ā¤ā¤¸ ā¤ā¤Ž ⤟āĨ€ ā¤ĒāĨ€ ā¤ā¤¸", + "notification_email_secure_description": "ā¤ā¤¸.ā¤ā¤Ž.⤟āĨ€.ā¤ĒāĨ€ ā¤ĩā¤žā¤Ēā¤°ā¤ž (⤟āĨ€.ā¤ā¤˛.ā¤ā¤¸ ā¤ĩ⤰āĨ€ā¤˛ ā¤ā¤¸.ā¤ā¤Ž.⤟āĨ€.ā¤ĒāĨ€)", "notification_email_sent_test_email_button": "ā¤šā¤žā¤šā¤ŖāĨ€ ā¤ˆā¤ŽāĨ‡ā¤˛ ā¤Ēā¤žā¤ ā¤ĩā¤ž ⤆⤪ā¤ŋ ⤜⤤⤍ ā¤•ā¤°ā¤ž", "notification_email_setting_description": "ā¤ˆā¤ŽāĨ‡ā¤˛ ⤏āĨ‚ā¤šā¤¨ā¤ž ā¤Ēā¤žā¤ ā¤ĩ⤪āĨā¤¯ā¤žā¤šāĨā¤¯ā¤ž ⤏āĨ‡ā¤Ÿā¤ŋ⤂⤗āĨā¤œ", "notification_email_test_email": "ā¤šā¤žā¤šā¤ŖāĨ€ ā¤ˆā¤ŽāĨ‡ā¤˛ ā¤Ēā¤žā¤ ā¤ĩā¤ž", @@ -254,6 +263,7 @@ "oauth_storage_quota_default_description": "⤕āĨā¤˛āĨ‡ā¤Ž ⤍ ā¤Ļā¤ŋ⤞āĨā¤¯ā¤žā¤¸ ā¤ĩā¤žā¤Ē⤰⤪āĨā¤¯ā¤žā¤¤ ⤝āĨ‡ā¤Ŗā¤žā¤°ā¤ž ⤏⤂⤗āĨā¤°ā¤šā¤Ŗ ⤕āĨ‹ā¤Ÿā¤ž (GiB)āĨ¤", "oauth_timeout": "ā¤ĩā¤ŋ⤍⤂⤤āĨ€ ā¤ĩāĨ‡ā¤ŗ ā¤Žā¤°āĨā¤¯ā¤žā¤Ļā¤ž", "oauth_timeout_description": "ā¤Žā¤ŋ⤞ā¤ŋ⤏āĨ‡ā¤•⤂ā¤Ļā¤žā¤‚ā¤Žā¤§āĨā¤¯āĨ‡ ā¤ĩā¤ŋ⤍⤂⤤āĨā¤¯ā¤žā¤‚ā¤¸ā¤žā¤ āĨ€ ā¤ĩāĨ‡ā¤ŗā¤¸ā¤Žā¤žā¤ĒāĨā¤¤āĨ€", + "ocr_job_description": "ā¤ĒāĨā¤°ā¤¤ā¤ŋā¤Žā¤žā¤‚ā¤Žā¤§āĨ€ā¤˛ ā¤Žā¤œā¤•āĨ‚⤰ ⤓⤺⤖⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ā¤Žā¤ļāĨ€ā¤¨ ⤞⤰āĨā¤¨ā¤ŋ⤂⤗ ā¤ĩā¤žā¤Ēā¤°ā¤ž", "password_enable_description": "ā¤ˆā¤ŽāĨ‡ā¤˛ ⤆⤪ā¤ŋ ā¤Ēā¤žā¤¸ā¤ĩ⤰āĨā¤Ąā¤¨āĨ‡ ⤞āĨ‰ā¤—ā¤ŋ⤍ ā¤•ā¤°ā¤ž", "password_settings": "ā¤Ēā¤žā¤¸ā¤ĩ⤰āĨā¤Ą ⤞āĨ‰ā¤—ā¤ŋ⤍", "password_settings_description": "ā¤Ēā¤žā¤¸ā¤ĩ⤰āĨā¤Ą ⤞āĨ‰ā¤—ā¤ŋ⤍ ⤏āĨ‡ā¤Ÿā¤ŋ⤂⤗āĨā¤œ ā¤ĩāĨā¤¯ā¤ĩ⤏āĨā¤Ĩā¤žā¤Ēā¤ŋ⤤ ā¤•ā¤°ā¤ž", @@ -344,7 +354,7 @@ "transcoding_max_b_frames": "ā¤•ā¤Žā¤žā¤˛ B-ā¤ĢāĨā¤°āĨ‡ā¤Ž", "transcoding_max_b_frames_description": "ā¤œā¤žā¤¸āĨā¤¤ ā¤ŽāĨ‚⤞āĨā¤¯āĨ‡ ⤏⤂⤕āĨā¤šā¤¨ ā¤•ā¤žā¤°āĨā¤¯ā¤•āĨā¤ˇā¤Žā¤¤āĨ‡ā¤¤ ⤏āĨā¤§ā¤žā¤°ā¤Ŗā¤ž ā¤•ā¤°ā¤¤ā¤žā¤¤, ā¤Ē⤰⤂⤤āĨ ā¤ā¤¨āĨā¤•āĨ‹ā¤Ąā¤ŋ⤂⤗ ā¤Žā¤‚ā¤Ļ ā¤•ā¤°ā¤¤ā¤žā¤¤. ⤜āĨā¤¨āĨā¤¯ā¤ž ⤉ā¤Ēā¤•ā¤°ā¤Ŗā¤žā¤‚ā¤ĩ⤰ ā¤šā¤žā¤°āĨā¤Ąā¤ĩāĨ‡ā¤…⤰ ⤤āĨā¤ĩā¤°ā¤Ŗā¤žā¤ļāĨ€ ⤏āĨā¤¸ā¤‚⤗⤤ ā¤¨ā¤¸ā¤žā¤¯ā¤šāĨ‡ ā¤ļ⤕āĨā¤¯ā¤¤ā¤ž. 0 ⤅⤏āĨ‡ā¤˛ ⤤⤰ B-ā¤ĢāĨā¤°āĨ‡ā¤Ž ⤍ā¤ŋ⤎āĨā¤•āĨā¤°ā¤ŋ⤝, -1 ⤠āĨ‡ā¤ĩ⤞āĨā¤¯ā¤žā¤¸ ⤏āĨā¤ĩā¤¯ā¤‚ā¤šā¤˛ā¤ŋ⤤ā¤Ē⤪āĨ‡ ⤏āĨ‡ā¤Ÿ ā¤šāĨ‹ā¤ˆā¤˛.", "transcoding_max_bitrate": "ā¤•ā¤Žā¤žā¤˛ ā¤Ŧā¤ŋ⤟⤰āĨ‡ā¤Ÿ", - "transcoding_max_bitrate_description": "ā¤•ā¤Žā¤žā¤˛ ā¤Ŧā¤ŋ⤟⤰āĨ‡ā¤Ÿ ⤏āĨ‡ā¤Ÿ ⤕āĨ‡ā¤˛āĨā¤¯ā¤žā¤¨āĨ‡ ā¤Ģā¤žā¤ˆā¤˛ ā¤¸ā¤žā¤‡ā¤œ ⤅⤧ā¤ŋ⤕ ā¤ĒāĨ‚⤰āĨā¤ĩā¤žā¤¨āĨā¤ŽāĨ‡ā¤¯ ā¤šāĨ‹ā¤¤ā¤žā¤¤, ⤕ā¤ŋā¤‚ā¤šā¤ŋ⤤ ⤗āĨā¤Ŗā¤ĩ⤤āĨā¤¤ā¤ž ⤖⤰āĨā¤šā¤žā¤¨āĨ‡. 720p ā¤¸ā¤žā¤ āĨ€ ā¤¸ā¤žā¤Žā¤žā¤¨āĨā¤¯ā¤¤ā¤ƒ VP9/HEVC ā¤¸ā¤žā¤ āĨ€ 2600 kbit/s, H.264 ā¤¸ā¤žā¤ āĨ€ 4500 kbit/s. 0 ⤕āĨ‡ā¤˛āĨā¤¯ā¤žā¤¸ ⤍ā¤ŋ⤎āĨā¤•āĨā¤°ā¤ŋ⤝.", + "transcoding_max_bitrate_description": "ā¤•ā¤Žā¤žā¤˛ ā¤Ŧā¤ŋ⤟⤰āĨ‡ā¤Ÿ ⤏āĨ‡ā¤Ÿ ⤕āĨ‡ā¤˛āĨā¤¯ā¤žā¤¨āĨ‡ ā¤ĨāĨ‹ā¤ĄāĨā¤¯ā¤ž ⤗āĨā¤Ŗā¤ĩ⤤āĨā¤¤āĨ‡ā¤šāĨā¤¯ā¤ž ⤕ā¤ŋā¤‚ā¤Žā¤¤āĨ€ā¤ĩ⤰ ā¤Ģā¤žā¤ˆā¤˛ ā¤¸ā¤žā¤‡ā¤œ ⤅⤧ā¤ŋ⤕ ⤅⤂ā¤Ļā¤žā¤œā¤¯āĨ‹ā¤—āĨā¤¯ ā¤šāĨ‹ā¤¤ā¤žā¤¤. 720p ā¤¸ā¤žā¤ āĨ€ VP9 ⤕ā¤ŋ⤂ā¤ĩā¤ž HEVC ā¤¸ā¤žā¤ āĨ€ ā¤¸ā¤žā¤§ā¤žā¤°ā¤Ŗ 2600 kbit/s ⤆⤪ā¤ŋ H.264 ā¤¸ā¤žā¤ āĨ€ 4500 kbit/s ⤝āĨ‹ā¤—āĨā¤¯ ā¤…ā¤¸ā¤¤ā¤žā¤¤. 0 ⤕āĨ‡ā¤˛āĨā¤¯ā¤žā¤¸ ā¤šāĨ‡ ⤏āĨ‡ā¤Ÿā¤ŋ⤂⤗ ⤍ā¤ŋ⤎āĨā¤•āĨā¤°ā¤ŋ⤝ ā¤šāĨ‹ā¤¤āĨ‡. ⤝āĨā¤¨ā¤ŋ⤟ ā¤Ļā¤ŋ⤞āĨ‡ ⤍⤏⤞āĨā¤¯ā¤žā¤¸ k (kbit/s) ⤗āĨƒā¤šā¤ŋ⤤ ⤧⤰⤞āĨ‡ ā¤œā¤žā¤¤āĨ‡; ⤤āĨā¤¯ā¤žā¤ŽāĨā¤ŗāĨ‡ 5000, 5000k ⤆⤪ā¤ŋ 5M (Mbit/s) ā¤šāĨ‡ ā¤¸ā¤Žā¤¤āĨā¤˛āĨā¤¯ ā¤Žā¤žā¤¨ā¤˛āĨ‡ ā¤œā¤žā¤¤ā¤žā¤¤.", "transcoding_max_keyframe_interval": "ā¤•ā¤Žā¤žā¤˛ ⤕āĨ€ā¤ĢāĨā¤°āĨ‡ā¤Ž ā¤…ā¤‚ā¤¤ā¤°ā¤žā¤˛", "transcoding_max_keyframe_interval_description": "⤕āĨ€ā¤ĢāĨā¤°āĨ‡ā¤Ž ā¤Ļā¤°ā¤ŽāĨā¤¯ā¤žā¤¨ ā¤•ā¤Žā¤žā¤˛ ā¤ĢāĨā¤°āĨ‡ā¤Ž ā¤…ā¤‚ā¤¤ā¤°ā¤žā¤˛ ⤠⤰ā¤ĩ⤤āĨ‡. ā¤•ā¤ŽāĨ€ ā¤ŽāĨ‚⤞āĨā¤¯āĨ‡ ⤏⤂⤕āĨā¤šā¤¨ ā¤•ā¤žā¤°āĨā¤¯ā¤•āĨā¤ˇā¤Žā¤¤āĨ‡ā¤¤ ⤘⤟ ā¤•ā¤°ā¤¤ā¤žā¤¤, ā¤Ē⤰⤂⤤āĨ ā¤ļāĨ‹ā¤§ ā¤ĩāĨ‡ā¤ŗ ⤏āĨā¤§ā¤žā¤°ā¤¤ā¤žā¤¤ ⤆⤪ā¤ŋ ā¤ĩāĨ‡ā¤—ā¤ĩā¤žā¤¨ ā¤šā¤žā¤˛ā¤šā¤žā¤˛āĨ€ā¤¤āĨ€ā¤˛ ā¤ĻāĨƒā¤ļāĨā¤¯ā¤žā¤‚ā¤šāĨ€ ⤗āĨā¤Ŗā¤ĩ⤤āĨā¤¤ā¤ž ⤏āĨā¤§ā¤žā¤°āĨ‚ ā¤ļā¤•ā¤¤ā¤žā¤¤. 0 ⤠āĨ‡ā¤ĩ⤞āĨā¤¯ā¤žā¤¸ ⤏āĨā¤ĩā¤¯ā¤‚ā¤šā¤˛ā¤ŋ⤤ā¤Ē⤪āĨ‡ ⤏āĨ‡ā¤Ÿ.", "transcoding_optimal_description": "⤞⤕āĨā¤ˇāĨā¤¯ ⤰ā¤ŋā¤āĨ‹ā¤˛āĨā¤¯āĨ‚ā¤ļ⤍ā¤ĒāĨ‡ā¤•āĨā¤ˇā¤ž ā¤œā¤žā¤¸āĨā¤¤ ⤕ā¤ŋ⤂ā¤ĩā¤ž ā¤Žā¤žā¤¨āĨā¤¯ ā¤ĒāĨā¤°ā¤žā¤°āĨ‚ā¤Ēā¤žā¤¤ ⤍⤏⤞āĨ‡ā¤˛āĨ‡ ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓", @@ -362,7 +372,7 @@ "transcoding_target_resolution": "⤞⤕āĨā¤ˇāĨā¤¯ ⤰ā¤ŋā¤āĨ‹ā¤˛āĨā¤¯āĨ‚ā¤ļ⤍", "transcoding_target_resolution_description": "ā¤‰ā¤šāĨā¤š ⤰ā¤ŋā¤āĨ‹ā¤˛āĨā¤¯āĨ‚ā¤ļ⤍ ⤅⤧ā¤ŋ⤕ ⤤ā¤Ēā¤ļāĨ€ā¤˛ ⤜ā¤Ē⤤āĨ‡, ā¤Ē⤰⤂⤤āĨ ā¤ā¤¨āĨā¤•āĨ‹ā¤Ą ⤕⤰⤪āĨā¤¯ā¤žā¤¤ ā¤œā¤žā¤¸āĨā¤¤ ā¤ĩāĨ‡ā¤ŗ ā¤˛ā¤žā¤—ā¤¤āĨ‹, ā¤Ģā¤žā¤‡ā¤˛ ā¤¸ā¤žā¤‡ā¤œ ā¤ŽāĨ‹ā¤ āĨ€ ā¤šāĨ‹ā¤¤āĨ‡ ⤆⤪ā¤ŋ ā¤ā¤Ē ā¤ĒāĨā¤°ā¤¤ā¤ŋā¤¸ā¤žā¤Ļ⤕āĨā¤ˇā¤Žā¤¤ā¤ž ā¤•ā¤ŽāĨ€ ā¤šāĨ‹ā¤Š ā¤ļ⤕⤤āĨ‡.", "transcoding_temporal_aq": "⤅⤏āĨā¤Ĩā¤žā¤¯āĨ€ AQ", - "transcoding_temporal_aq_description": "⤕āĨ‡ā¤ĩ⤺ NVENC ā¤¸ā¤žā¤ āĨ€ ā¤˛ā¤žā¤—āĨ‚. ā¤‰ā¤šāĨā¤š ⤤ā¤Ēā¤ļāĨ€ā¤˛ ⤆⤪ā¤ŋ ā¤•ā¤ŽāĨ€ ā¤šā¤žā¤˛ā¤šā¤žā¤˛āĨ€ ⤅⤏⤞āĨ‡ā¤˛āĨā¤¯ā¤ž ā¤ĻāĨƒā¤ļāĨā¤¯ā¤žā¤‚ā¤šāĨ€ ⤗āĨā¤Ŗā¤ĩ⤤āĨā¤¤ā¤ž ā¤ĩā¤žā¤ĸā¤ĩ⤤āĨ‡. ⤜āĨā¤¨āĨā¤¯ā¤ž ⤉ā¤Ēā¤•ā¤°ā¤Ŗā¤žā¤‚ā¤ĩ⤰ ⤏āĨā¤¸ā¤‚⤗⤤ ⤍⤏āĨ‡ā¤˛.", + "transcoding_temporal_aq_description": "ā¤šāĨ‡ ā¤Ģ⤕āĨā¤¤ NVENC ā¤¸ā¤žā¤ āĨ€ ā¤˛ā¤žā¤—āĨ‚ ā¤†ā¤šāĨ‡. Temporal Adaptive Quantization ā¤‰ā¤šāĨā¤š ⤤ā¤Ēā¤ļāĨ€ā¤˛ ⤅⤏⤞āĨ‡ā¤˛āĨā¤¯ā¤ž, ā¤•ā¤ŽāĨ€ ā¤šā¤žā¤˛ā¤šā¤žā¤˛āĨ€ā¤šāĨā¤¯ā¤ž ā¤ĻāĨƒā¤ļāĨā¤¯ā¤žā¤‚ā¤šāĨ€ ⤗āĨā¤Ŗā¤ĩ⤤āĨā¤¤ā¤ž ā¤ĩā¤žā¤ĸā¤ĩ⤤āĨ‡. ⤜āĨā¤¨āĨā¤¯ā¤ž ā¤Ąā¤ŋā¤ĩāĨā¤šā¤žā¤‡ā¤¸ā¤ļāĨ€ ⤏āĨā¤¸ā¤‚⤗⤤ ⤍⤏⤪āĨā¤¯ā¤žā¤šāĨ€ ā¤ļ⤕āĨā¤¯ā¤¤ā¤ž ā¤†ā¤šāĨ‡.", "transcoding_threads": "ā¤ĨāĨā¤°āĨ‡ā¤ĄāĨā¤¸", "transcoding_threads_description": "ā¤œā¤žā¤¸āĨā¤¤ ā¤ŽāĨ‚⤞āĨā¤¯āĨ‡ ā¤ā¤¨āĨā¤•āĨ‹ā¤Ąā¤ŋ⤂⤗ ⤜⤞ā¤Ļ ā¤•ā¤°ā¤¤ā¤žā¤¤, ā¤Ē⤰⤂⤤āĨ ⤏⤕āĨā¤°ā¤ŋ⤝ ā¤…ā¤¸ā¤¤ā¤žā¤¨ā¤ž ⤏⤰āĨā¤ĩāĨā¤šā¤°ā¤˛ā¤ž ⤇⤤⤰ ā¤•ā¤žā¤°āĨā¤¯āĨ‡ ā¤ĒāĨā¤°ā¤•āĨā¤°ā¤ŋā¤¯ā¤ž ⤕⤰⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ā¤•ā¤ŽāĨ€ ā¤œā¤žā¤—ā¤ž ā¤°ā¤žā¤šā¤¤āĨ‡. ā¤šāĨ‡ ā¤ŽāĨ‚⤞āĨā¤¯ CPU ⤕āĨ‹ā¤…⤰āĨā¤¸ā¤ĒāĨ‡ā¤•āĨā¤ˇā¤ž ā¤œā¤žā¤¸āĨā¤¤ ā¤¨ā¤¸ā¤žā¤ĩāĨ‡. 0 ⤠āĨ‡ā¤ĩ⤞āĨā¤¯ā¤žā¤¸ ⤏⤰āĨā¤ĩāĨā¤šā¤°ā¤šāĨ€ ā¤ĒāĨ‚⤰āĨā¤Ŗ ⤕āĨā¤ˇā¤Žā¤¤āĨ‡ā¤¨āĨ‡ ā¤ĩā¤žā¤Ē⤰ ā¤šāĨ‹ā¤¤āĨ‡.", "transcoding_tone_mapping": "⤟āĨ‹ā¤¨-ā¤ŽāĨ…ā¤Ēā¤ŋ⤂⤗", @@ -395,7 +405,6 @@ "user_restore_scheduled_removal": "ā¤ĩā¤žā¤Ē⤰⤕⤰āĨā¤¤ā¤ž ā¤ĒāĨā¤¨ā¤°āĨā¤¸ā¤‚ā¤šā¤¯ā¤ŋ⤤ ā¤•ā¤°ā¤ž – ⤍ā¤ŋ⤝āĨ‹ā¤œā¤ŋ⤤ ā¤šā¤Ÿā¤ĩā¤ŋ⤪āĨā¤¯ā¤žā¤šāĨ€ ā¤¤ā¤žā¤°āĨ€ā¤– {date, date, long}", "user_settings": "ā¤ĩā¤žā¤Ē⤰⤕⤰āĨā¤¤ā¤ž ⤏āĨ‡ā¤Ÿā¤ŋ⤂⤗āĨā¤œ", "user_settings_description": "ā¤ĩā¤žā¤Ē⤰⤕⤰āĨā¤¤ā¤ž ⤏āĨ‡ā¤Ÿā¤ŋ⤂⤗āĨā¤œ ā¤ĩāĨā¤¯ā¤ĩ⤏āĨā¤Ĩā¤žā¤Ēā¤ŋ⤤ ā¤•ā¤°ā¤ž", - "user_successfully_removed": "ā¤ĩā¤žā¤Ē⤰⤕⤰āĨā¤¤ā¤ž {email} ā¤¯ā¤žā¤‚ā¤šāĨ€ ⤝ā¤ļ⤏āĨā¤ĩāĨ€ā¤°ā¤ŋ⤤āĨā¤¯ā¤ž ā¤šā¤Ÿā¤ĩ⤪āĨ€ ā¤ā¤žā¤˛āĨ€ ā¤†ā¤šāĨ‡.", "version_check_enabled_description": "⤆ā¤ĩāĨƒā¤¤āĨā¤¤āĨ€ ⤤ā¤Ēā¤žā¤¸ā¤ŖāĨ€ ⤏⤕āĨā¤ˇā¤Ž ā¤•ā¤°ā¤ž", "version_check_implications": "⤆ā¤ĩāĨƒā¤¤āĨā¤¤āĨ€ ⤤ā¤Ēā¤žā¤¸ā¤ŖāĨ€ ā¤ĩāĨˆā¤ļā¤ŋ⤎āĨā¤ŸāĨā¤¯ GitHub.com ⤏āĨ‹ā¤Ŧ⤤ ⤆ā¤ĩ⤰āĨā¤¤āĨ€ ⤏⤂ā¤ĩā¤žā¤Ļā¤žā¤ĩ⤰ ⤅ā¤ĩ⤞⤂ā¤ŦāĨ‚⤍ ā¤†ā¤šāĨ‡", "version_check_settings": "⤆ā¤ĩāĨƒā¤¤āĨā¤¤āĨ€ ⤤ā¤Ēā¤žā¤¸ā¤ŖāĨ€", @@ -413,11 +422,11 @@ "advanced_settings_prefer_remote_subtitle": "ā¤•ā¤žā¤šāĨ€ ⤉ā¤Ē⤕⤰⤪āĨ‡ ⤏āĨā¤Ĩā¤žā¤¨ā¤ŋ⤕ ⤅āĨ…⤏āĨ‡ā¤Ÿā¤Žā¤§āĨ‚⤍ ā¤Ĩ⤂ā¤Ŧ⤍āĨ‡ā¤˛ ⤞āĨ‹ā¤Ą ⤕⤰⤪āĨā¤¯ā¤žā¤¤ ⤖āĨ‚ā¤Ē ā¤Žā¤‚ā¤Ļ ā¤†ā¤šāĨ‡ā¤¤. ⤤āĨā¤¯ā¤žā¤ā¤ĩ⤜āĨ€ ⤰ā¤ŋā¤ŽāĨ‹ā¤Ÿ ā¤ĒāĨā¤°ā¤¤ā¤ŋā¤Žā¤ž ⤞āĨ‹ā¤Ą ⤕⤰⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ā¤šā¤ž ⤏āĨ‡ā¤Ÿā¤ŋ⤂⤗ ⤏⤕āĨā¤ˇā¤Ž ā¤•ā¤°ā¤ž.", "advanced_settings_prefer_remote_title": "⤰ā¤ŋā¤ŽāĨ‹ā¤Ÿ ā¤ĒāĨā¤°ā¤¤ā¤ŋā¤Žā¤ž ā¤Ē⤏⤂⤤ ā¤•ā¤°ā¤ž", "advanced_settings_proxy_headers_subtitle": "ā¤ĒāĨā¤°ā¤¤āĨā¤¯āĨ‡ā¤• ⤍āĨ‡ā¤Ÿā¤ĩ⤰āĨā¤• ā¤ĩā¤ŋ⤍⤂⤤āĨ€ā¤¸āĨ‹ā¤Ŧ⤤ Immich ā¤Ēā¤žā¤ ā¤ĩā¤žā¤ĩā¤¯ā¤žā¤šāĨ‡ ā¤ĒāĨā¤°āĨ‰ā¤•āĨā¤¸āĨ€ ā¤šāĨ‡ā¤Ąā¤° ⤝āĨ‡ā¤ĨāĨ‡ ā¤Ē⤰ā¤ŋā¤­ā¤žā¤ˇā¤ŋ⤤ ā¤•ā¤°ā¤ž", - "advanced_settings_proxy_headers_title": "ā¤ĒāĨā¤°āĨ‰ā¤•āĨā¤¸āĨ€ ā¤šāĨ‡ā¤Ąā¤°", + "advanced_settings_proxy_headers_title": "⤕⤏āĨā¤Ÿā¤Ž ā¤ĒāĨā¤°āĨ‰ā¤•āĨā¤¸āĨ€ ā¤šāĨ‡ā¤Ąā¤°āĨā¤¸ [ā¤ĒāĨā¤°ā¤žā¤¯āĨ‹ā¤—ā¤ŋ⤕]", "advanced_settings_readonly_mode_subtitle": "ā¤¯ā¤ž ā¤ŽāĨ‹ā¤Ąā¤Žā¤§āĨā¤¯āĨ‡ ā¤ĢāĨ‹ā¤ŸāĨ‹ ā¤Ģ⤕āĨā¤¤ ā¤Ēā¤žā¤šā¤¤ā¤ž ⤝āĨ‡ā¤¤ā¤žā¤¤ - ⤅⤍āĨ‡ā¤• ā¤ĢāĨ‹ā¤ŸāĨ‹ ⤍ā¤ŋā¤ĩā¤Ąā¤ŖāĨ‡, ā¤ļāĨ‡ā¤…⤰ ⤕⤰⤪āĨ‡, ā¤•ā¤žā¤¸āĨā¤Ÿ ⤕⤰⤪āĨ‡ ⤆⤪ā¤ŋ ā¤šā¤Ÿā¤ĩ⤪āĨ‡ ⤅ā¤ļā¤ž ⤕āĨā¤°ā¤ŋā¤¯ā¤ž ⤍ā¤ŋ⤎āĨā¤•āĨā¤°ā¤ŋ⤝ ā¤°ā¤žā¤šā¤¤ā¤žā¤¤. ā¤ŽāĨā¤–āĨā¤¯ ⤏āĨā¤•āĨā¤°āĨ€ā¤¨ā¤ĩ⤰āĨ€ā¤˛ ā¤ĩā¤žā¤Ē⤰⤕⤰āĨā¤¤ā¤ž ⤅ā¤ĩā¤¤ā¤žā¤°ā¤žā¤¤āĨ‚⤍ ā¤šā¤ž ā¤ŽāĨ‹ā¤Ą ā¤šā¤žā¤˛āĨ‚ ⤕ā¤ŋ⤂ā¤ĩā¤ž ā¤Ŧ⤂ā¤Ļ ā¤•ā¤°ā¤ž", "advanced_settings_readonly_mode_title": "ā¤Ģ⤕āĨā¤¤ ā¤Ēā¤žā¤šā¤ŖāĨā¤¯ā¤žā¤šā¤ž ā¤ŽāĨ‹ā¤Ą", "advanced_settings_self_signed_ssl_subtitle": "⤏⤰āĨā¤ĩāĨā¤šā¤° ā¤ā¤‚ā¤Ąā¤ĒāĨ‰ā¤‡ā¤‚ā¤Ÿā¤¸ā¤žā¤ āĨ€ SSL ā¤ĒāĨā¤°ā¤Žā¤žā¤Ŗā¤Ē⤤āĨā¤° ⤏⤤āĨā¤¯ā¤žā¤Ē⤍ ā¤ĩ⤗⤺⤤āĨ‡. ⤏āĨā¤ĩā¤žā¤•āĨā¤ˇā¤°āĨ€ā¤¤ ā¤ĒāĨā¤°ā¤Žā¤žā¤Ŗā¤Ē⤤āĨā¤°ā¤žā¤‚ā¤¸ā¤žā¤ āĨ€ ⤆ā¤ĩā¤ļāĨā¤¯ā¤•.", - "advanced_settings_self_signed_ssl_title": "⤏āĨā¤ĩ⤤⤃ ⤏āĨā¤ĩā¤žā¤•āĨā¤ˇā¤°āĨ€ā¤¤ SSL ā¤ĒāĨā¤°ā¤Žā¤žā¤Ŗā¤Ē⤤āĨā¤°ā¤žā¤‚ā¤¨ā¤ž ā¤Ē⤰ā¤ĩā¤žā¤¨ā¤—āĨ€ ā¤ĻāĨā¤¯ā¤ž", + "advanced_settings_self_signed_ssl_title": "⤏āĨā¤ĩ⤤⤃ ⤏āĨā¤ĩā¤žā¤•āĨā¤ˇā¤°āĨ€ā¤¤ SSL ā¤ĒāĨā¤°ā¤Žā¤žā¤Ŗā¤Ē⤤āĨā¤°ā¤žā¤‚ā¤¨ā¤ž ā¤Ē⤰ā¤ĩā¤žā¤¨ā¤—āĨ€ ā¤ĻāĨā¤¯ā¤ž [ā¤ĒāĨā¤°ā¤žā¤¯āĨ‹ā¤—ā¤ŋ⤕]", "advanced_settings_sync_remote_deletions_subtitle": "ā¤ĩāĨ‡ā¤Ŧā¤ĩ⤰ ā¤šāĨ€ ⤕āĨā¤°ā¤ŋā¤¯ā¤ž ⤕āĨ‡ā¤˛āĨ€ ⤗āĨ‡ā¤˛āĨā¤¯ā¤žā¤ĩ⤰ ā¤¯ā¤ž ⤉ā¤Ēā¤•ā¤°ā¤Ŗā¤žā¤ĩ⤰ ⤅⤏⤞āĨ‡ā¤˛āĨ‡ ⤅āĨ…⤏āĨ‡ā¤Ÿ ⤆ā¤ĒāĨ‹ā¤†ā¤Ē ā¤šā¤Ÿā¤ĩā¤ž ⤕ā¤ŋ⤂ā¤ĩā¤ž ā¤ĒāĨā¤¨ā¤°āĨā¤¸ā¤‚ā¤šā¤¯ā¤ŋ⤤ ā¤•ā¤°ā¤ž", "advanced_settings_sync_remote_deletions_title": "⤰ā¤ŋā¤ŽāĨ‹ā¤Ÿ ā¤šā¤Ÿā¤ĩ⤪āĨā¤¯ā¤ž ⤏ā¤ŋ⤂⤕ ā¤•ā¤°ā¤ž [ā¤ĒāĨā¤°ā¤¯āĨ‹ā¤—ā¤žā¤¤āĨā¤Žā¤•]", "advanced_settings_tile_subtitle": "ā¤ĒāĨā¤°ā¤—⤤ ā¤ĩā¤žā¤Ē⤰⤕⤰āĨā¤¤ā¤ž ⤏āĨ‡ā¤Ÿā¤ŋ⤂⤗āĨā¤œ", @@ -426,6 +435,7 @@ "age_months": "ā¤ĩ⤝ {months, plural, one {ā¤ā¤• ā¤Žā¤šā¤ŋā¤¨ā¤ž} other {# ā¤Žā¤šā¤ŋ⤍āĨ‡}}", "age_year_months": "ā¤ĩ⤝ āĨ§ ā¤ĩ⤰āĨā¤ˇ, {months, plural, one {ā¤ā¤• ā¤Žā¤šā¤ŋā¤¨ā¤ž} other {# ā¤Žā¤šā¤ŋ⤍āĨ‡}}", "age_years": "{years, plural, other {ā¤ĩ⤝ #}}", + "album": "⤅⤞āĨā¤Ŧā¤Ž", "album_added": "⤅⤞āĨā¤Ŧā¤Ž ⤜āĨ‹ā¤Ąā¤˛āĨ‡", "album_added_notification_setting_description": "ā¤ļāĨ‡ā¤…⤰ ⤕āĨ‡ā¤˛āĨ‡ā¤˛āĨā¤¯ā¤ž ⤅⤞āĨā¤Ŧā¤Žā¤Žā¤§āĨā¤¯āĨ‡ ⤜āĨ‹ā¤Ąā¤˛āĨā¤¯ā¤žā¤ĩ⤰ ā¤ˆā¤ŽāĨ‡ā¤˛ ⤏āĨ‚ā¤šā¤¨ā¤ž ā¤Žā¤ŋ⤺ā¤ĩā¤ž", "album_cover_updated": "⤅⤞āĨā¤Ŧā¤Ž ⤕ā¤ĩāĨā¤šā¤° ⤅ā¤ĻāĨā¤¯ā¤¤ā¤¨ā¤ŋ⤤ ā¤ā¤žā¤˛āĨ‡", @@ -471,16 +481,21 @@ "allow_edits": "⤏⤂ā¤Ēā¤žā¤Ļā¤¨ā¤žā¤‚ā¤¨ā¤ž ā¤Ē⤰ā¤ĩā¤žā¤¨ā¤—āĨ€ ā¤ĻāĨā¤¯ā¤ž", "allow_public_user_to_download": "ā¤¸ā¤žā¤°āĨā¤ĩ⤜⤍ā¤ŋ⤕ ā¤ĩā¤žā¤Ē⤰⤕⤰āĨā¤¤āĨā¤¯ā¤žā¤‚ā¤¨ā¤ž ā¤Ąā¤žā¤‰ā¤¨ā¤˛āĨ‹ā¤Ą ⤕⤰⤪āĨā¤¯ā¤žā¤šāĨ€ ā¤Ē⤰ā¤ĩā¤žā¤¨ā¤—āĨ€ ā¤ĻāĨā¤¯ā¤ž", "allow_public_user_to_upload": "ā¤¸ā¤žā¤°āĨā¤ĩ⤜⤍ā¤ŋ⤕ ā¤ĩā¤žā¤Ē⤰⤕⤰āĨā¤¤āĨā¤¯ā¤žā¤‚ā¤¨ā¤ž ⤅ā¤Ē⤞āĨ‹ā¤Ą ⤕⤰⤪āĨā¤¯ā¤žā¤šāĨ€ ā¤Ē⤰ā¤ĩā¤žā¤¨ā¤—āĨ€ ā¤ĻāĨā¤¯ā¤ž", + "allowed": "ā¤Ē⤰ā¤ĩā¤žā¤¨ā¤—āĨ€ ā¤†ā¤šāĨ‡", "alt_text_qr_code": "QR ⤕āĨ‹ā¤Ą ā¤ĒāĨā¤°ā¤¤ā¤ŋā¤Žā¤ž", "anti_clockwise": "ā¤˜ā¤ĄāĨ€ā¤šāĨā¤¯ā¤ž ā¤‰ā¤˛ā¤Ÿ ā¤Ļā¤ŋā¤ļāĨ‡ā¤¨āĨ‡", "api_key": "ā¤ā¤ĒāĨ€ā¤†ā¤ˆ ⤕āĨ€", "api_key_description": "ā¤šā¤ž ā¤ŽāĨ‚⤞āĨā¤¯ ā¤ā¤•ā¤Ļā¤žā¤š ā¤Ļā¤žā¤–ā¤ĩā¤ŋā¤˛ā¤ž ā¤œā¤žā¤ˆā¤˛. ⤕āĨƒā¤Ēā¤¯ā¤ž ā¤ĩā¤ŋā¤‚ā¤ĄāĨ‹ ā¤Ŧ⤂ā¤Ļ ⤕⤰⤪āĨā¤¯ā¤žā¤ĒāĨ‚⤰āĨā¤ĩāĨ€ ⤤āĨ‡ ⤕āĨ‰ā¤ĒāĨ€ ā¤•ā¤°ā¤žā¤¯ā¤˛ā¤ž ā¤ĩā¤ŋ⤏⤰āĨ‚ ā¤¨ā¤•ā¤ž.", "api_key_empty": "⤆ā¤Ē⤞āĨ‡ API ⤕āĨ€ ā¤¨ā¤žā¤ĩ ⤰ā¤ŋ⤕āĨā¤¤ ⤅⤏āĨ‚ ⤍⤝āĨ‡", "api_keys": "API ⤕āĨ€ā¤œ", + "app_architecture_variant": "ā¤ĒāĨā¤°ā¤•ā¤žā¤° (⤆⤰āĨā¤•ā¤ŋ⤟āĨ‡ā¤•āĨā¤šā¤°)", "app_bar_signout_dialog_content": "⤤āĨā¤ŽāĨā¤šā¤žā¤˛ā¤ž ⤍⤕āĨā¤•āĨ€ ā¤¸ā¤žā¤‡ā¤¨ ā¤†ā¤‰ā¤Ÿ ā¤•ā¤°ā¤žā¤¯ā¤šāĨ‡ ā¤†ā¤šāĨ‡ ā¤•ā¤ž?", "app_bar_signout_dialog_ok": "ā¤šāĨ‹", "app_bar_signout_dialog_title": "ā¤¸ā¤žā¤‡ā¤¨ ā¤†ā¤‰ā¤Ÿ", + "app_download_links": "⤅āĨ…ā¤Ē ā¤Ąā¤žā¤‰ā¤¨ā¤˛āĨ‹ā¤Ą ⤞ā¤ŋ⤂⤕⤏āĨ", "app_settings": "ā¤…â€āĨ…ā¤Ē ⤏āĨ‡ā¤Ÿā¤ŋ⤂⤗āĨā¤œ", + "app_stores": "⤅āĨ…ā¤Ē ⤏āĨā¤ŸāĨ‹ā¤…⤰āĨā¤¸", + "app_update_available": "⤅āĨ…ā¤Ē ⤅ā¤Ēā¤ĄāĨ‡ā¤Ÿ ⤉ā¤Ē⤞ā¤ŦāĨā¤§ ā¤†ā¤šāĨ‡", "appears_in": "ā¤Ļā¤ŋ⤏⤤āĨ‡ (⤕āĨā¤ āĨ‡ ā¤Ļā¤ŋ⤏⤤āĨ‡)", "apply_count": "ā¤˛ā¤žā¤—āĨ‚ ā¤•ā¤°ā¤ž ({count, number})", "archive": "⤆⤰āĨā¤•ā¤žā¤‡ā¤ĩāĨā¤š", @@ -633,9 +648,9 @@ "bugs_and_feature_requests": "ā¤Ŧ⤗āĨā¤œ & ā¤Ģā¤ŋ⤚⤰ ā¤ĩā¤ŋ⤍⤂⤤āĨā¤¯ā¤ž", "build": "ā¤¤ā¤¯ā¤žā¤° ā¤•ā¤°ā¤ž", "build_image": "ā¤‡ā¤ŽāĨ‡ā¤œ ā¤¤ā¤¯ā¤žā¤° ā¤•ā¤°ā¤ž", - "bulk_delete_duplicates_confirmation": "⤆ā¤Ē⤪ {count, plural, one {1 ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤Ÿ ā¤Ģā¤žā¤ˆā¤˛ ā¤šā¤Ÿā¤ĩā¤Ŗā¤žā¤° ā¤†ā¤šā¤žā¤¤ ā¤•ā¤ž?} other {# ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤Ÿ ā¤Ģā¤žā¤ˆā¤˛āĨā¤¸ ā¤¸ā¤žā¤ŽāĨ‚ā¤šā¤ŋ⤕⤰ā¤ŋ⤤āĨā¤¯ā¤ž ā¤šā¤Ÿā¤ĩā¤Ŗā¤žā¤° ā¤†ā¤šāĨ‹ā¤¤ ā¤•ā¤ž?}} ā¤ĒāĨā¤°ā¤¤āĨā¤¯āĨ‡ā¤• ā¤—ā¤Ÿā¤žā¤¤āĨ€ā¤˛ ⤏⤰āĨā¤ĩā¤žā¤¤ ā¤ŽāĨ‹ā¤ āĨ€ ā¤Ģā¤žā¤ˆā¤˛ ⤠āĨ‡ā¤ĩ⤞āĨ€ ā¤œā¤žā¤ˆā¤˛; ⤇⤤⤰ ā¤•ā¤žā¤¯ā¤Žā¤¸āĨā¤ĩ⤰āĨ‚ā¤ĒāĨ€ ā¤šā¤Ÿā¤ĩ⤞āĨā¤¯ā¤ž ā¤œā¤žā¤¤āĨ€ā¤˛. ā¤šāĨ€ ⤕āĨā¤°ā¤ŋā¤¯ā¤ž ā¤ĒāĨ‚⤰āĨā¤ĩā¤ĩ⤤ ā¤•ā¤°ā¤¤ā¤ž ⤝āĨ‡ā¤Ŗā¤žā¤° ā¤¨ā¤žā¤šāĨ€!", - "bulk_keep_duplicates_confirmation": "⤆ā¤Ē⤪ {count, plural, one {1 ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤Ÿ ā¤Ģā¤žā¤ˆā¤˛} other {# ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤Ÿ ā¤Ģā¤žā¤ˆā¤˛āĨā¤¸}} ā¤°ā¤žā¤–ā¤Ŗā¤žā¤° ā¤†ā¤šā¤žā¤¤ ā¤•ā¤ž? ⤕āĨ‹ā¤Ŗā¤¤āĨ€ā¤šāĨ€ ā¤Ģā¤žā¤ˆā¤˛ ā¤šā¤Ÿā¤ĩ⤞āĨ€ ā¤œā¤žā¤Ŗā¤žā¤° ā¤¨ā¤žā¤šāĨ€.", - "bulk_trash_duplicates_confirmation": "⤆ā¤Ē⤪ {count, plural, one {1 ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤Ÿ ā¤Ģā¤žā¤ˆā¤˛ ⤟āĨā¤°āĨ…ā¤ļ ā¤•ā¤°ā¤Ŗā¤žā¤° ā¤†ā¤šā¤žā¤¤ ā¤•ā¤ž?} other {# ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤Ÿ ā¤Ģā¤žā¤ˆā¤˛āĨā¤¸ ⤟āĨā¤°āĨ…ā¤ļ ā¤•ā¤°ā¤Ŗā¤žā¤° ā¤†ā¤šāĨ‹ā¤¤ ā¤•ā¤ž?}} ā¤ĒāĨā¤°ā¤¤āĨā¤¯āĨ‡ā¤• ā¤—ā¤Ÿā¤žā¤¤āĨ€ā¤˛ ⤏⤰āĨā¤ĩā¤žā¤¤ ā¤ŽāĨ‹ā¤ āĨ€ ā¤Ģā¤žā¤ˆā¤˛ ⤠āĨ‡ā¤ĩ⤞āĨ€ ā¤œā¤žā¤ˆā¤˛; ⤇⤤⤰ ⤟āĨā¤°āĨ…ā¤ļ ⤕āĨ‡ā¤˛āĨā¤¯ā¤ž ā¤œā¤žā¤¤āĨ€ā¤˛.", + "bulk_delete_duplicates_confirmation": "⤆ā¤Ē⤪ {count, plural, one {# ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤Ÿ ⤅āĨ…⤏āĨ‡ā¤Ÿ ā¤¸ā¤žā¤ŽāĨ‚ā¤šā¤ŋ⤕⤰ā¤ŋ⤤āĨā¤¯ā¤ž ā¤šā¤Ÿā¤ĩā¤Ŗā¤žā¤° ā¤†ā¤šā¤žā¤¤ ā¤¯ā¤žā¤šāĨ€ ā¤–ā¤žā¤¤āĨā¤°āĨ€ ā¤†ā¤šāĨ‡ ā¤•ā¤ž} other {# ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤Ÿ ⤅āĨ…⤏āĨ‡ā¤ŸāĨā¤¸ ā¤¸ā¤žā¤ŽāĨ‚ā¤šā¤ŋ⤕⤰ā¤ŋ⤤āĨā¤¯ā¤ž ā¤šā¤Ÿā¤ĩā¤Ŗā¤žā¤° ā¤†ā¤šā¤žā¤¤ ā¤¯ā¤žā¤šāĨ€ ā¤–ā¤žā¤¤āĨā¤°āĨ€ ā¤†ā¤šāĨ‡ ā¤•ā¤ž}}? ā¤ĒāĨā¤°ā¤¤āĨā¤¯āĨ‡ā¤• ā¤—ā¤Ÿā¤žā¤¤āĨ€ā¤˛ ⤏⤰āĨā¤ĩā¤žā¤¤ ā¤ŽāĨ‹ā¤ āĨ‡ ⤅āĨ…⤏āĨ‡ā¤Ÿ ⤠āĨ‡ā¤ĩ⤞āĨ‡ ā¤œā¤žā¤ˆā¤˛ ⤆⤪ā¤ŋ ā¤Ŧā¤žā¤•āĨ€ ⤏⤰āĨā¤ĩ ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤ŸāĨā¤¸ ā¤•ā¤žā¤¯ā¤Žā¤¸āĨā¤ĩ⤰āĨ‚ā¤ĒāĨ€ ā¤šā¤Ÿā¤ĩ⤞āĨ‡ ā¤œā¤žā¤¤āĨ€ā¤˛. ā¤šāĨ€ ⤕āĨƒā¤¤āĨ€ ā¤ĒāĨ‚⤰āĨā¤ĩā¤ĩ⤤ ā¤•ā¤°ā¤¤ā¤ž ⤝āĨ‡ā¤Ŗā¤žā¤° ā¤¨ā¤žā¤šāĨ€!", + "bulk_keep_duplicates_confirmation": "⤆ā¤Ē⤪ {count, plural, one {# ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤Ÿ ⤅āĨ…⤏āĨ‡ā¤Ÿ ⤠āĨ‡ā¤ĩā¤Ŗā¤žā¤° ā¤†ā¤šā¤žā¤¤ ā¤¯ā¤žā¤šāĨ€ ā¤–ā¤žā¤¤āĨā¤°āĨ€ ā¤†ā¤šāĨ‡ ā¤•ā¤ž} other {# ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤Ÿ ⤅āĨ…⤏āĨ‡ā¤ŸāĨā¤¸ ⤠āĨ‡ā¤ĩā¤Ŗā¤žā¤° ā¤†ā¤šā¤žā¤¤ ā¤¯ā¤žā¤šāĨ€ ā¤–ā¤žā¤¤āĨā¤°āĨ€ ā¤†ā¤šāĨ‡ ā¤•ā¤ž}}? ā¤¯ā¤žā¤ŽāĨā¤ŗāĨ‡ ⤕āĨ‹ā¤Ŗā¤¤āĨ‡ā¤šāĨ€ ⤅āĨ…⤏āĨ‡ā¤Ÿ ⤍ ā¤šā¤Ÿā¤ĩā¤¤ā¤ž ⤏⤰āĨā¤ĩ ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤Ÿ ā¤—ā¤Ÿ ⤏āĨ‹ā¤Ąā¤ĩ⤞āĨ‡ ā¤œā¤žā¤¤āĨ€ā¤˛.", + "bulk_trash_duplicates_confirmation": "⤆ā¤Ē⤪ {count, plural, one {# ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤Ÿ ⤅āĨ…⤏āĨ‡ā¤Ÿ ⤟āĨā¤°āĨ…ā¤ļā¤Žā¤§āĨā¤¯āĨ‡ ā¤Ÿā¤žā¤•ā¤Ŗā¤žā¤° ā¤†ā¤šā¤žā¤¤ ā¤¯ā¤žā¤šāĨ€ ā¤–ā¤žā¤¤āĨā¤°āĨ€ ā¤†ā¤šāĨ‡ ā¤•ā¤ž} other {# ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤Ÿ ⤅āĨ…⤏āĨ‡ā¤ŸāĨā¤¸ ⤟āĨā¤°āĨ…ā¤ļā¤Žā¤§āĨā¤¯āĨ‡ ā¤Ÿā¤žā¤•ā¤Ŗā¤žā¤° ā¤†ā¤šā¤žā¤¤ ā¤¯ā¤žā¤šāĨ€ ā¤–ā¤žā¤¤āĨā¤°āĨ€ ā¤†ā¤šāĨ‡ ā¤•ā¤ž}}? ā¤ĒāĨā¤°ā¤¤āĨā¤¯āĨ‡ā¤• ā¤—ā¤Ÿā¤žā¤¤āĨ€ā¤˛ ⤏⤰āĨā¤ĩā¤žā¤¤ ā¤ŽāĨ‹ā¤ āĨ‡ ⤅āĨ…⤏āĨ‡ā¤Ÿ ⤠āĨ‡ā¤ĩ⤞āĨ‡ ā¤œā¤žā¤ˆā¤˛ ⤆⤪ā¤ŋ ā¤Ŧā¤žā¤•āĨ€ ⤏⤰āĨā¤ĩ ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤ŸāĨā¤¸ ⤟āĨā¤°āĨ…ā¤ļā¤Žā¤§āĨā¤¯āĨ‡ ā¤Ÿā¤žā¤•ā¤˛āĨ‡ ā¤œā¤žā¤¤āĨ€ā¤˛.", "buy": "Immich ⤖⤰āĨ‡ā¤ĻāĨ€ ā¤•ā¤°ā¤ž", "cache_settings_clear_cache_button": "⤕āĨ…ā¤ļ ā¤Žā¤ŋ⤟ā¤ĩā¤ž", "cache_settings_clear_cache_button_title": "⤅āĨ…ā¤Ē⤚āĨ‡ ⤕āĨ…ā¤ļ ā¤Žā¤ŋ⤟ā¤ĩ⤤āĨ‡. ⤕āĨ…ā¤ļ ā¤ĒāĨā¤¨āĨā¤šā¤ž ā¤¤ā¤¯ā¤žā¤° ā¤šāĨ‹ā¤ˆā¤Ē⤰āĨā¤¯ā¤‚⤤ ⤅āĨ…ā¤Ē⤚āĨ€ ā¤•ā¤žā¤Žā¤—ā¤ŋ⤰āĨ€ ā¤ĒāĨā¤°ā¤­ā¤žā¤ĩā¤ŋ⤤ ā¤šāĨ‹ā¤Š ā¤ļ⤕⤤āĨ‡.", @@ -674,6 +689,8 @@ "change_password_description": "ā¤ĒāĨā¤°ā¤Ĩā¤Žā¤š ā¤¸ā¤žā¤‡ā¤¨ ⤇⤍ ⤕ā¤ŋ⤂ā¤ĩā¤ž ⤏⤂⤕āĨ‡ā¤¤ā¤ļā¤ŦāĨā¤Ļ ā¤Ŧā¤Ļ⤞⤪āĨā¤¯ā¤žā¤šāĨ€ ā¤ĩā¤ŋ⤍⤂⤤āĨ€, ā¤–ā¤žā¤˛āĨ€ ⤍ā¤ĩāĨ€ā¤¨ ā¤Ēā¤žā¤¸ā¤ĩ⤰āĨā¤Ą ā¤Ÿā¤žā¤•ā¤žāĨ¤", "change_password_form_confirm_password": "⤏⤂⤕āĨ‡ā¤¤ā¤ļā¤ŦāĨā¤Ļ ā¤ĒāĨā¤ˇāĨā¤ŸāĨ€ ā¤•ā¤°ā¤ž", "change_password_form_description": "ā¤šā¤žā¤¯ {name}, \n\nā¤ĒāĨā¤°ā¤Ĩā¤Žā¤š ā¤¸ā¤žā¤‡ā¤¨ ⤇⤍ ⤕ā¤ŋ⤂ā¤ĩā¤ž ⤏⤂⤕āĨ‡ā¤¤ā¤ļā¤ŦāĨā¤Ļ ā¤Ŧā¤Ļ⤞⤪āĨā¤¯ā¤žā¤šāĨ€ ā¤ĩā¤ŋ⤍⤂⤤āĨ€ ā¤ā¤žā¤˛āĨ€ ā¤†ā¤šāĨ‡. ā¤–ā¤žā¤˛āĨ€ ⤍ā¤ĩāĨ€ā¤¨ ⤏⤂⤕āĨ‡ā¤¤ā¤ļā¤ŦāĨā¤Ļ ā¤ĒāĨā¤°ā¤ĩā¤ŋ⤎āĨā¤Ÿ ā¤•ā¤°ā¤ž.", + "change_password_form_log_out": "⤇⤤⤰ ⤏⤰āĨā¤ĩ ā¤Ąā¤ŋā¤ĩāĨā¤šā¤žā¤‡ā¤¸ā¤ĩ⤰āĨ‚⤍ ⤞āĨ‰ā¤— ā¤†ā¤Šā¤Ÿ ā¤•ā¤°ā¤ž", + "change_password_form_log_out_description": "⤇⤤⤰ ⤏⤰āĨā¤ĩ ā¤Ąā¤ŋā¤ĩāĨā¤šā¤žā¤‡ā¤¸āĨ‡ā¤¸ā¤ĩ⤰āĨ‚⤍ ⤞āĨ‰ā¤— ā¤†ā¤Šā¤Ÿ ⤕⤰⤪āĨā¤¯ā¤žā¤šāĨ€ ā¤ļā¤ŋā¤Ģā¤žā¤°ā¤¸ ⤕āĨ‡ā¤˛āĨ€ ā¤œā¤žā¤¤āĨ‡", "change_password_form_new_password": "⤍ā¤ĩāĨ€ā¤¨ ⤏⤂⤕āĨ‡ā¤¤ā¤ļā¤ŦāĨā¤Ļ", "change_password_form_password_mismatch": "ā¤Ēā¤žā¤¸ā¤ĩ⤰āĨā¤Ą ⤜āĨā¤ŗā¤¤ ā¤¨ā¤žā¤šāĨ€ā¤¤", "change_password_form_reenter_new_password": "⤍ā¤ĩāĨ€ā¤¨ ⤏⤂⤕āĨ‡ā¤¤ā¤ļā¤ŦāĨā¤Ļ ā¤ĒāĨā¤¨āĨā¤šā¤ž ā¤ĒāĨā¤°ā¤ĩā¤ŋ⤎āĨā¤Ÿ ā¤•ā¤°ā¤ž", @@ -700,8 +717,8 @@ "client_cert_import_success_msg": "⤕āĨā¤˛ā¤žā¤¯ā¤‚ā¤Ÿ ā¤ĒāĨā¤°ā¤Žā¤žā¤Ŗā¤Ē⤤āĨā¤° ā¤†ā¤¯ā¤žā¤¤ ā¤ā¤žā¤˛āĨ‡", "client_cert_invalid_msg": "⤅ā¤ĩāĨˆā¤§ ā¤ĒāĨā¤°ā¤Žā¤žā¤Ŗā¤Ē⤤āĨā¤° ā¤Ģā¤žā¤ˆā¤˛ ⤕ā¤ŋ⤂ā¤ĩā¤ž ⤚āĨā¤•āĨ€ā¤šā¤ž ⤏⤂⤕āĨ‡ā¤¤ā¤ļā¤ŦāĨā¤Ļ", "client_cert_remove_msg": "⤕āĨā¤˛ā¤žā¤¯ā¤‚ā¤Ÿ ā¤ĒāĨā¤°ā¤Žā¤žā¤Ŗā¤Ē⤤āĨā¤° ā¤•ā¤žā¤ĸāĨ‚⤍ ā¤Ÿā¤žā¤•ā¤˛āĨ‡", - "client_cert_subtitle": "ā¤Ģ⤕āĨā¤¤ PKCS12 (.p12, .pfx) ā¤ĢāĨ‰ā¤°ā¤ŽāĨ…ā¤Ÿā¤˛ā¤ž ā¤¸ā¤Žā¤°āĨā¤Ĩ⤍. ā¤†ā¤¯ā¤žā¤¤/ā¤•ā¤žā¤ĸ⤪āĨ‡ ⤕āĨ‡ā¤ĩ⤺ ⤞āĨ‰ā¤—ā¤ŋ⤍ā¤ĒāĨ‚⤰āĨā¤ĩāĨ€ ⤉ā¤Ē⤞ā¤ŦāĨā¤§", - "client_cert_title": "SSL ⤕āĨā¤˛ā¤žā¤¯ā¤‚ā¤Ÿ ā¤ĒāĨā¤°ā¤Žā¤žā¤Ŗā¤Ē⤤āĨā¤°", + "client_cert_subtitle": "ā¤Ģ⤕āĨā¤¤ PKCS12 (.p12, .pfx) ā¤ĢāĨ‰ā¤°ā¤ŽāĨ…ā¤Ÿā¤˛ā¤ž ā¤¸ā¤Žā¤°āĨā¤Ĩ⤍ ā¤†ā¤šāĨ‡. ⤏⤰āĨā¤Ÿā¤ŋā¤Ģā¤ŋ⤕āĨ‡ā¤Ÿ ā¤†ā¤¯ā¤žā¤¤/ā¤•ā¤žā¤ĸ⤪āĨ‡ ā¤Ģ⤕āĨā¤¤ ⤞āĨ‰ā¤—ā¤ŋ⤍ā¤ĒāĨ‚⤰āĨā¤ĩāĨ€ ⤉ā¤Ē⤞ā¤ŦāĨā¤§ ā¤†ā¤šāĨ‡", + "client_cert_title": "SSL ⤕āĨā¤˛ā¤žā¤¯ā¤‚ā¤Ÿ ā¤ĒāĨā¤°ā¤Žā¤žā¤Ŗā¤Ē⤤āĨā¤° [ā¤ĒāĨā¤°ā¤žā¤¯āĨ‹ā¤—ā¤ŋ⤕]", "clockwise": "ā¤¤ā¤žā¤¸ā¤žā¤šāĨā¤¯ā¤ž ā¤Ļā¤ŋā¤ļāĨ‡ā¤¨āĨ‡", "close": "ā¤Ŧ⤂ā¤Ļ ā¤•ā¤°ā¤ž", "collapse": "⤏⤂⤕āĨā¤šā¤ŋ⤤ ā¤•ā¤°ā¤ž", @@ -751,6 +768,7 @@ "create": "ā¤¤ā¤¯ā¤žā¤° ā¤•ā¤°ā¤ž", "create_album": "⤅⤞āĨā¤Ŧā¤Ž ā¤¤ā¤¯ā¤žā¤° ā¤•ā¤°ā¤ž", "create_album_page_untitled": "ā¤ļāĨ€ā¤°āĨā¤ˇā¤•āĨ‡ā¤¤ā¤°", + "create_api_key": "API ⤕āĨ€ ā¤¤ā¤¯ā¤žā¤° ā¤•ā¤°ā¤ž", "create_library": "ā¤˛ā¤žā¤¯ā¤ŦāĨā¤°ā¤°āĨ€ ā¤¤ā¤¯ā¤žā¤° ā¤•ā¤°ā¤ž", "create_link": "⤞ā¤ŋ⤂⤕ ā¤¤ā¤¯ā¤žā¤° ā¤•ā¤°ā¤ž", "create_link_to_share": "ā¤ļāĨ‡ā¤…⤰ ⤕⤰⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ⤞ā¤ŋ⤂⤕ ā¤¤ā¤¯ā¤žā¤° ā¤•ā¤°ā¤ž", @@ -780,6 +798,7 @@ "daily_title_text_date_year": "⤈, ā¤ā¤Žā¤ā¤Žā¤ā¤Ž ā¤Ļā¤ŋā¤ĩ⤏, ā¤ĩ⤰āĨā¤ˇ", "dark": "ā¤Ąā¤žā¤°āĨā¤•", "dark_theme": "ā¤Ąā¤žā¤°āĨā¤• ā¤ĨāĨ€ā¤Ž ā¤Ŧā¤Ļ⤞", + "date": "ā¤¤ā¤žā¤°āĨ€ā¤–", "date_after": "ā¤¨ā¤‚ā¤¤ā¤°ā¤šāĨ€ ā¤¤ā¤žā¤°āĨ€ā¤–", "date_and_time": "ā¤Ļā¤ŋā¤¨ā¤žā¤‚ā¤• ā¤ĩ ā¤ĩāĨ‡ā¤ŗ", "date_before": "ā¤ĒāĨ‚⤰āĨā¤ĩ⤚āĨ€ ā¤¤ā¤žā¤°āĨ€ā¤–", @@ -787,6 +806,7 @@ "date_of_birth_saved": "⤜⤍āĨā¤Žā¤¤ā¤žā¤°āĨ€ā¤– ⤜⤤⤍ ā¤ā¤žā¤˛āĨ€", "date_range": "ā¤¤ā¤žā¤°āĨ€ā¤– ā¤ļāĨā¤°āĨ‡ā¤ŖāĨ€", "day": "ā¤Ļā¤ŋā¤ĩ⤏", + "days": "⤅⤍āĨ‡ā¤• ā¤Ļā¤ŋā¤ĩ⤏", "deduplicate_all": "⤏⤰āĨā¤ĩ ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤Ÿ ā¤•ā¤žā¤ĸā¤ž", "deduplication_criteria_1": "ā¤ĒāĨā¤°ā¤¤ā¤ŋā¤ŽāĨ‡ā¤šā¤ž ā¤†ā¤•ā¤žā¤° (ā¤Ŧā¤žā¤‡ā¤ŸāĨā¤¸)", "deduplication_criteria_2": "EXIF ā¤ĄāĨ‡ā¤Ÿā¤ž ā¤ĒāĨā¤°ā¤Žā¤žā¤Ŗ", @@ -875,6 +895,8 @@ "edit_date": "ā¤¤ā¤žā¤°āĨ€ā¤– ⤏⤂ā¤Ēā¤žā¤Ļā¤ŋ⤤ ā¤•ā¤°ā¤ž", "edit_date_and_time": "ā¤¤ā¤žā¤°āĨ€ā¤– ā¤ĩ ā¤ĩāĨ‡ā¤ŗ ⤏⤂ā¤Ēā¤žā¤Ļā¤ŋ⤤ ā¤•ā¤°ā¤ž", "edit_date_and_time_action_prompt": "{count} ā¤¤ā¤žā¤°āĨ€ā¤– ⤆⤪ā¤ŋ ā¤ĩāĨ‡ā¤ŗ ⤏⤂ā¤Ēā¤žā¤Ļā¤ŋ⤤ ā¤ā¤žā¤˛āĨ‡", + "edit_date_and_time_by_offset": "⤑ā¤Ģ⤏āĨ‡ā¤Ÿā¤¨āĨā¤¸ā¤žā¤° ā¤¤ā¤žā¤°āĨ€ā¤– ā¤Ŧā¤Ļā¤˛ā¤ž", + "edit_date_and_time_by_offset_interval": "⤍ā¤ĩāĨ€ā¤¨ ā¤¤ā¤žā¤°āĨ€ā¤– ā¤ļāĨā¤°āĨ‡ā¤ŖāĨ€: {from}–{to}", "edit_description": "ā¤ĩ⤰āĨā¤Ŗā¤¨ ⤏⤂ā¤Ēā¤žā¤Ļā¤ŋ⤤ ā¤•ā¤°ā¤ž", "edit_description_prompt": "⤍ā¤ĩāĨ€ā¤¨ ā¤ĩ⤰āĨā¤Ŗā¤¨ ⤍ā¤ŋā¤ĩā¤Ąā¤ž:", "edit_exclusion_pattern": "ā¤ĩā¤—ā¤ŗā¤ž ā¤ĒāĨ…ā¤Ÿā¤°āĨā¤¨ ⤏⤂ā¤Ēā¤žā¤Ļā¤ŋ⤤ ā¤•ā¤°ā¤ž", @@ -911,6 +933,9 @@ "error": "⤤āĨā¤°āĨā¤ŸāĨ€", "error_change_sort_album": "⤅⤞āĨā¤Ŧā¤Ž ⤕āĨā¤°ā¤Ž ā¤Ŧā¤Ļ⤞⤪āĨā¤¯ā¤žā¤¤ ⤅⤝ā¤ļ⤏āĨā¤ĩāĨ€", "error_delete_face": "ā¤Ģā¤žā¤ˆā¤˛ā¤Žā¤§āĨ‚⤍ ⤚āĨ‡ā¤šā¤°ā¤ž ā¤šā¤Ÿā¤ĩā¤¤ā¤žā¤¨ā¤ž ⤤āĨā¤°āĨā¤ŸāĨ€", + "error_getting_places": "⤠ā¤ŋā¤•ā¤žā¤ŖāĨ‡ ā¤Žā¤ŋ⤺ā¤ĩā¤¤ā¤žā¤¨ā¤ž ⤤āĨā¤°āĨā¤ŸāĨ€", + "error_loading_image": "ā¤ĒāĨā¤°ā¤¤ā¤ŋā¤Žā¤ž ⤞āĨ‹ā¤Ą ā¤•ā¤°ā¤¤ā¤žā¤¨ā¤ž ⤤āĨā¤°āĨā¤ŸāĨ€", + "error_loading_partners": "ā¤Ēā¤žā¤°āĨā¤Ÿā¤¨ā¤°āĨā¤¸ ⤞āĨ‹ā¤Ą ā¤•ā¤°ā¤¤ā¤žā¤¨ā¤ž ⤤āĨā¤°āĨā¤ŸāĨ€: {error}", "error_saving_image": "⤤āĨā¤°āĨā¤ŸāĨ€: {error}", "error_tag_face_bounding_box": "⤚āĨ‡ā¤šā¤°ā¤ž ⤟āĨ…⤗ ā¤•ā¤°ā¤¤ā¤žā¤¨ā¤ž ⤤āĨā¤°āĨā¤ŸāĨ€ – ā¤Ŧā¤žā¤‰ā¤‚ā¤Ąā¤ŋ⤂⤗ ā¤ŦāĨ‰ā¤•āĨā¤¸ ⤍ā¤ŋ⤰āĨā¤ĻāĨ‡ā¤ļā¤žā¤‚ā¤• ā¤Žā¤ŋ⤺ā¤ĩā¤¤ā¤ž ⤝āĨ‡ā¤¤ ā¤¨ā¤žā¤šāĨ€ā¤¤", "error_title": "⤤āĨā¤°āĨā¤ŸāĨ€ – ā¤•ā¤žā¤šāĨ€ā¤¤ā¤°āĨ€ ⤚āĨā¤•⤞āĨ‡", @@ -918,9 +943,9 @@ "cannot_navigate_next_asset": "ā¤ĒāĨā¤ĸāĨ€ā¤˛ ā¤Ģā¤žā¤ˆā¤˛ā¤ĩ⤰ ā¤œā¤žā¤Š ā¤ļ⤕⤤ ā¤¨ā¤žā¤šāĨ€", "cannot_navigate_previous_asset": "ā¤Žā¤žā¤—āĨ€ā¤˛ ā¤Ģā¤žā¤ˆā¤˛ā¤ĩ⤰ ā¤œā¤žā¤Š ā¤ļ⤕⤤ ā¤¨ā¤žā¤šāĨ€", "cant_apply_changes": "ā¤Ŧā¤Ļ⤞ ā¤˛ā¤žā¤—āĨ‚ ā¤•ā¤°ā¤¤ā¤ž ⤝āĨ‡ā¤¤ ā¤¨ā¤žā¤šāĨ€", - "cant_change_activity": "{enabled, select, true{⤕āĨā¤°ā¤ŋā¤¯ā¤ž ⤅⤕āĨā¤ˇā¤Ž ā¤•ā¤°ā¤¤ā¤ž ⤝āĨ‡ā¤¤ ā¤¨ā¤žā¤šāĨ€} other{⤕āĨā¤°ā¤ŋā¤¯ā¤ž ⤏⤕āĨā¤ˇā¤Ž ā¤•ā¤°ā¤¤ā¤ž ⤝āĨ‡ā¤¤ ā¤¨ā¤žā¤šāĨ€}}", + "cant_change_activity": "⤕āĨā¤°ā¤ŋā¤¯ā¤ž {enabled, select, true {⤍ā¤ŋ⤎āĨā¤•āĨā¤°ā¤ŋ⤝} other {⤏⤕āĨā¤°ā¤ŋ⤝}} ⤕⤰āĨ‚ ā¤ļ⤕⤤ ā¤¨ā¤žā¤šāĨ€", "cant_change_asset_favorite": "ā¤Ģā¤žā¤ˆā¤˛ā¤¸ā¤žā¤ āĨ€ ⤆ā¤ĩā¤Ą ā¤Ŧā¤Ļā¤˛ā¤¤ā¤ž ⤝āĨ‡ā¤¤ ā¤¨ā¤žā¤šāĨ€", - "cant_change_metadata_assets_count": "{count, plural, one{ā¤ā¤•ā¤ž ā¤Ģā¤žā¤ˆā¤˛ā¤šāĨ‡ ā¤ŽāĨ‡ā¤Ÿā¤žā¤ĄāĨ‡ā¤Ÿā¤ž ā¤Ŧā¤Ļā¤˛ā¤¤ā¤ž ⤝āĨ‡ā¤¤ ā¤¨ā¤žā¤šāĨ€} other{# ā¤Ģā¤žā¤ˆā¤˛ā¤šāĨ‡ ā¤ŽāĨ‡ā¤Ÿā¤žā¤ĄāĨ‡ā¤Ÿā¤ž ā¤Ŧā¤Ļā¤˛ā¤¤ā¤ž ⤝āĨ‡ā¤¤ ā¤¨ā¤žā¤šāĨ€}}", + "cant_change_metadata_assets_count": "{count, plural, one {# ⤅āĨ…⤏āĨ‡ā¤Ÿā¤šāĨ‡ ā¤ŽāĨ‡ā¤Ÿā¤žā¤ĄāĨ‡ā¤Ÿā¤ž ā¤Ŧā¤Ļā¤˛ā¤¤ā¤ž ⤝āĨ‡ā¤¤ ā¤¨ā¤žā¤šāĨ€} other {# ⤅āĨ…⤏āĨ‡ā¤ŸāĨā¤¸ā¤šāĨ‡ ā¤ŽāĨ‡ā¤Ÿā¤žā¤ĄāĨ‡ā¤Ÿā¤ž ā¤Ŧā¤Ļā¤˛ā¤¤ā¤ž ⤝āĨ‡ā¤¤ ā¤¨ā¤žā¤šāĨ€}}", "cant_get_faces": "⤚āĨ‡ā¤šā¤ąāĨā¤¯ā¤žā¤‚ā¤šāĨ€ ā¤Žā¤žā¤šā¤ŋ⤤āĨ€ ā¤Žā¤ŋ⤺ā¤ĩā¤¤ā¤ž ⤝āĨ‡ā¤¤ ā¤¨ā¤žā¤šāĨ€", "cant_get_number_of_comments": "⤟ā¤ŋā¤ĒāĨā¤Ē⤪āĨā¤¯ā¤žā¤‚ā¤šāĨ€ ⤏⤂⤖āĨā¤¯ā¤ž ā¤Žā¤ŋ⤺ā¤ĩā¤¤ā¤ž ⤝āĨ‡ā¤¤ ā¤¨ā¤žā¤šāĨ€", "cant_search_people": "⤞āĨ‹ā¤• ā¤ļāĨ‹ā¤§ā¤¤ā¤ž ⤝āĨ‡ā¤¤ ā¤¨ā¤žā¤šāĨ€", @@ -943,20 +968,23 @@ "failed_to_load_notifications": "⤏āĨ‚ā¤šā¤¨ā¤ž ⤞āĨ‹ā¤Ą ⤕⤰⤪āĨā¤¯ā¤žā¤¤ ⤅⤝ā¤ļ⤏āĨā¤ĩāĨ€", "failed_to_load_people": "⤞āĨ‹ā¤• ⤞āĨ‹ā¤Ą ⤕⤰⤪āĨā¤¯ā¤žā¤¤ ⤅⤝ā¤ļ⤏āĨā¤ĩāĨ€", "failed_to_remove_product_key": "⤉⤤āĨā¤Ēā¤žā¤Ļ⤍ ⤕āĨ€ ā¤•ā¤žā¤ĸāĨ‚⤍ ā¤Ÿā¤žā¤•ā¤ŖāĨā¤¯ā¤žā¤¤ ⤅⤝ā¤ļ⤏āĨā¤ĩāĨ€", + "failed_to_reset_pin_code": "PIN ⤕āĨ‹ā¤Ą ⤰āĨ€ā¤¸āĨ‡ā¤Ÿ ⤕⤰⤪āĨā¤¯ā¤žā¤¤ ⤅⤝ā¤ļ⤏āĨā¤ĩāĨ€", "failed_to_stack_assets": "ā¤Ģā¤žā¤ˆā¤˛āĨā¤¸ ā¤ā¤•ā¤¤āĨā¤° ā¤•ā¤°ā¤¤ā¤ž ⤆⤞āĨā¤¯ā¤ž ā¤¨ā¤žā¤šāĨ€ā¤¤", "failed_to_unstack_assets": "ā¤Ģā¤žā¤ˆā¤˛āĨā¤¸ ā¤ĩā¤ŋā¤­ā¤žā¤œā¤ŋ⤤ ā¤•ā¤°ā¤¤ā¤ž ⤆⤞āĨā¤¯ā¤ž ā¤¨ā¤žā¤šāĨ€ā¤¤", "failed_to_update_notification_status": "⤏āĨ‚ā¤šā¤¨ā¤ž ⤏āĨā¤Ĩā¤ŋ⤤āĨ€ ⤅ā¤Ēā¤ĄāĨ‡ā¤Ÿ ⤕⤰⤪āĨā¤¯ā¤žā¤¤ ⤅⤝ā¤ļ⤏āĨā¤ĩāĨ€", "incorrect_email_or_password": "⤚āĨā¤•āĨ€ā¤šā¤ž ā¤ˆā¤ŽāĨ‡ā¤˛ ⤕ā¤ŋ⤂ā¤ĩā¤ž ⤏⤂⤕āĨ‡ā¤¤ā¤ļā¤ŦāĨā¤Ļ", + "library_folder_already_exists": "ā¤šā¤ž ā¤‡ā¤ŽāĨā¤ĒāĨ‹ā¤°āĨā¤Ÿ ā¤Ēā¤Ĩ ⤆⤧āĨ€ā¤š ⤅⤏āĨā¤¤ā¤ŋ⤤āĨā¤ĩā¤žā¤¤ ā¤†ā¤šāĨ‡.", "paths_validation_failed": "{paths, plural, one {ā¤ā¤• ā¤Žā¤žā¤°āĨā¤— ā¤ĩāĨˆā¤§ ā¤¨ā¤žā¤šāĨ€} other {# ā¤Žā¤žā¤°āĨā¤— ā¤ĩāĨˆā¤§ ā¤¨ā¤žā¤šāĨ€ā¤¤}}", "profile_picture_transparent_pixels": "ā¤ĒāĨā¤°āĨ‹ā¤Ģā¤žā¤‡ā¤˛ ⤚ā¤ŋ⤤āĨā¤°ā¤žā¤¤ ā¤Ēā¤žā¤°ā¤Ļ⤰āĨā¤ļ⤕ ā¤Ēā¤ŋ⤕āĨā¤¸āĨ‡ā¤˛ ⤅⤏āĨ‚ ā¤ļ⤕⤤ ā¤¨ā¤žā¤šāĨ€ā¤¤. ⤕āĨƒā¤Ēā¤¯ā¤ž ā¤āĨ‚ā¤Ž ā¤•ā¤°ā¤ž ⤕ā¤ŋ⤂ā¤ĩā¤ž ā¤ĒāĨā¤°ā¤¤ā¤ŋā¤Žā¤ž ā¤šā¤˛ā¤ĩā¤ž.", "quota_higher_than_disk_size": "⤤āĨā¤ŽāĨā¤šāĨ€ ā¤Ąā¤ŋ⤏āĨā¤• ā¤†ā¤•ā¤žā¤°ā¤žā¤ĒāĨ‡ā¤•āĨā¤ˇā¤ž ā¤ŽāĨ‹ā¤ ā¤ž ⤕āĨ‹ā¤Ÿā¤ž ⤏āĨ‡ā¤Ÿ ⤕āĨ‡ā¤˛ā¤ž ā¤†ā¤šāĨ‡", + "something_went_wrong": "ā¤•ā¤žā¤šāĨ€ā¤¤ā¤°āĨ€ ⤚āĨ‚⤕ ā¤ā¤žā¤˛āĨ€", "unable_to_add_album_users": "⤅⤞āĨā¤Ŧā¤Žā¤Žā¤§āĨā¤¯āĨ‡ ā¤ĩā¤žā¤Ē⤰⤕⤰āĨā¤¤āĨ‡ ⤜āĨ‹ā¤Ąā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€ā¤¤", "unable_to_add_assets_to_shared_link": "ā¤ļāĨ‡ā¤…⤰ ⤞ā¤ŋā¤‚ā¤•ā¤Žā¤§āĨā¤¯āĨ‡ ā¤Ģā¤žā¤ˆā¤˛āĨā¤¸ ⤜āĨ‹ā¤Ąā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€ā¤¤", "unable_to_add_comment": "⤟ā¤ŋā¤ĒāĨā¤Ē⤪āĨ€ ⤜āĨ‹ā¤Ąā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€", "unable_to_add_exclusion_pattern": "ā¤ĩ⤗⤺⤪āĨā¤¯ā¤žā¤šāĨ‡ ā¤ĒāĨ…ā¤Ÿā¤°āĨā¤¨ ⤜āĨ‹ā¤Ąā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€", "unable_to_add_partners": "ā¤¸ā¤šā¤¯āĨ‹ā¤—āĨ€ ⤜āĨ‹ā¤Ąā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€ā¤¤", - "unable_to_add_remove_archive": "{archived, select, true{⤅⤰āĨā¤•ā¤žā¤‡ā¤ĩāĨā¤šā¤Žā¤§āĨ‚⤍ ā¤Ģā¤žā¤ˆā¤˛ ā¤•ā¤žā¤ĸā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€} other{⤅⤰āĨā¤•ā¤žā¤‡ā¤ĩāĨā¤šā¤Žā¤§āĨā¤¯āĨ‡ ā¤Ģā¤žā¤ˆā¤˛ ⤜āĨ‹ā¤Ąā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€}}", - "unable_to_add_remove_favorites": "{favorite, select, true{ā¤Ģā¤žā¤ˆā¤˛ ⤆ā¤ĩā¤Ąā¤¤āĨā¤¯ā¤ž ā¤Žā¤§āĨā¤¯āĨ‡ ⤜āĨ‹ā¤Ąā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€} other{ā¤Ģā¤žā¤ˆā¤˛ ⤆ā¤ĩā¤Ąā¤¤āĨā¤¯ā¤ž ā¤Žā¤§āĨ‚⤍ ā¤•ā¤žā¤ĸā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€}}", + "unable_to_add_remove_archive": "{archived, select, true {⤆⤰āĨā¤•ā¤žā¤‡ā¤ĩāĨā¤šā¤Žā¤§āĨ‚⤍ ⤅āĨ…⤏āĨ‡ā¤Ÿ ā¤•ā¤žā¤ĸā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€} other {⤆⤰āĨā¤•ā¤žā¤‡ā¤ĩāĨā¤šā¤Žā¤§āĨā¤¯āĨ‡ ⤅āĨ…⤏āĨ‡ā¤Ÿ ⤜āĨ‹ā¤Ąā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€}}", + "unable_to_add_remove_favorites": "{favorite, select, true {⤆ā¤ĩā¤Ąā¤¤āĨā¤¯ā¤žā¤‚ā¤Žā¤§āĨā¤¯āĨ‡ ⤅āĨ…⤏āĨ‡ā¤Ÿ ⤜āĨ‹ā¤Ąā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€} other {⤆ā¤ĩā¤Ąā¤¤āĨā¤¯ā¤žā¤‚⤤āĨ‚⤍ ⤅āĨ…⤏āĨ‡ā¤Ÿ ā¤•ā¤žā¤ĸā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€}}", "unable_to_archive_unarchive": "{archived, select, true{⤆⤰āĨā¤•ā¤žā¤‡ā¤ĩāĨā¤š ā¤•ā¤°ā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€} other{⤅⤍⤆⤰āĨā¤•ā¤žā¤‡ā¤ĩāĨā¤š ā¤•ā¤°ā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€}}", "unable_to_change_album_user_role": "⤅⤞āĨā¤Ŧā¤Žā¤Žā¤§āĨ€ā¤˛ ā¤ĩā¤žā¤Ē⤰⤕⤰āĨā¤¤āĨā¤¯ā¤žā¤šāĨ€ ⤭āĨ‚ā¤Žā¤ŋā¤•ā¤ž ā¤Ŧā¤Ļā¤˛ā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€", "unable_to_change_date": "ā¤¤ā¤žā¤°āĨ€ā¤– ā¤Ŧā¤Ļā¤˛ā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€", @@ -1030,11 +1058,13 @@ "unable_to_update_user": "ā¤ĩā¤žā¤Ē⤰⤕⤰āĨā¤¤ā¤ž ⤅ā¤ĻāĨā¤¯ā¤¤ā¤¨ā¤ŋ⤤ ā¤•ā¤°ā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€", "unable_to_upload_file": "ā¤Ģā¤žā¤ˆā¤˛ ⤅ā¤Ē⤞āĨ‹ā¤Ą ā¤•ā¤°ā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€" }, + "exclusion_pattern": "ā¤ĩ⤗⤺⤪āĨā¤¯ā¤žā¤šā¤ž ā¤¨ā¤ŽāĨā¤¨ā¤ž", "exif": "ā¤ā¤•āĨā¤¸ā¤ŋā¤Ģ", "exif_bottom_sheet_description": "ā¤ĩ⤰āĨā¤Ŗā¤¨ ⤜āĨ‹ā¤Ąā¤žâ€Ļ", "exif_bottom_sheet_description_error": "ā¤ĩ⤰āĨā¤Ŗā¤¨ ⤅ā¤ĻāĨā¤¯ā¤¤ā¤¨ā¤ŋ⤤ ā¤•ā¤°ā¤¤ā¤žā¤¨ā¤ž ⤤āĨā¤°āĨā¤ŸāĨ€", "exif_bottom_sheet_details": "⤤ā¤Ēā¤ļāĨ€ā¤˛", "exif_bottom_sheet_location": "⤏āĨā¤Ĩā¤žā¤¨", + "exif_bottom_sheet_no_description": "ā¤ĩ⤰āĨā¤Ŗā¤¨ ā¤¨ā¤žā¤šāĨ€", "exif_bottom_sheet_people": "⤞āĨ‹ā¤•", "exif_bottom_sheet_person_add_person": "ā¤¨ā¤žā¤ĩ ⤜āĨ‹ā¤Ąā¤ž", "exit_slideshow": "⤏āĨā¤˛ā¤žā¤‡ā¤Ąā¤ļāĨ‹ ā¤Ŧ⤂ā¤Ļ ā¤•ā¤°ā¤ž", @@ -1069,9 +1099,11 @@ "favorites_page_no_favorites": "⤆ā¤ĩā¤ĄāĨ€ā¤¤āĨ€ā¤˛ ā¤Ģā¤žā¤ˆā¤˛āĨā¤¸ ā¤¸ā¤žā¤Ēā¤Ąā¤˛āĨā¤¯ā¤ž ā¤¨ā¤žā¤šāĨ€ā¤¤", "feature_photo_updated": "ā¤ĢāĨ€ā¤šā¤° ā¤ĢāĨ‹ā¤ŸāĨ‹ ⤅ā¤ĻāĨā¤¯ā¤¤ā¤¨ā¤ŋ⤤ ā¤ā¤žā¤˛ā¤ž", "features": "ā¤ĩāĨˆā¤ļā¤ŋ⤎āĨā¤ŸāĨā¤¯āĨ‡", + "features_in_development": "ā¤ĩā¤ŋā¤•ā¤žā¤¸ā¤žā¤§āĨ€ā¤¨ ā¤ĩāĨˆā¤ļā¤ŋ⤎āĨā¤ŸāĨā¤¯āĨ‡", "features_setting_description": "⤅āĨ…ā¤Ē⤚āĨ€ ā¤ĩāĨˆā¤ļā¤ŋ⤎āĨā¤ŸāĨā¤¯āĨ‡ ā¤ĩāĨā¤¯ā¤ĩ⤏āĨā¤Ĩā¤žā¤Ēā¤ŋ⤤ ā¤•ā¤°ā¤ž", "file_name": "ā¤Ģā¤žā¤ˆā¤˛ ā¤¨ā¤žā¤ĩ", "file_name_or_extension": "ā¤Ģā¤žā¤ˆā¤˛ ā¤¨ā¤žā¤ĩ ⤕ā¤ŋ⤂ā¤ĩā¤ž ā¤ā¤•āĨā¤¸āĨā¤ŸāĨ‡ā¤‚ā¤ļ⤍", + "file_size": "ā¤Ģā¤žā¤‡ā¤˛ ā¤¸ā¤žā¤‡ā¤œā¤ŧ", "filename": "ā¤Ģā¤žā¤‡ā¤˛ā¤¨ā¤žā¤ĩ", "filetype": "ā¤Ģā¤žā¤ˆā¤˛ ā¤ĒāĨā¤°ā¤•ā¤žā¤°", "filter": "ā¤Ģā¤ŋ⤞āĨā¤Ÿā¤°", @@ -1086,7 +1118,8 @@ "folders_feature_description": "ā¤Ģā¤žā¤ˆā¤˛ ⤏ā¤ŋ⤏āĨā¤ŸāĨ€ā¤Žā¤ĩ⤰āĨ€ā¤˛ ā¤ĢāĨ‹ā¤ŸāĨ‹-ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓ ā¤ĢāĨ‹ā¤˛āĨā¤Ąā¤° ā¤ĻāĨƒā¤ļāĨā¤¯ā¤žā¤¤ ā¤ŦāĨā¤°ā¤žā¤‰ā¤ ā¤•ā¤°ā¤ž", "forgot_pin_code_question": "PIN ā¤ĩā¤ŋā¤¸ā¤°ā¤˛ā¤žā¤¤?", "forward": "ā¤ĒāĨā¤ĸāĨ‡", - "gcast_enabled": "Google Cast", + "full_path": "ā¤ĒāĨ‚⤰āĨā¤Ŗ ā¤Ēā¤žā¤Ĩ: {path}", + "gcast_enabled": "⤗āĨ‚⤗⤞ ā¤•ā¤žā¤¸āĨā¤Ÿ", "gcast_enabled_description": "ā¤šāĨ€ ⤏āĨā¤ĩā¤ŋā¤§ā¤ž ā¤šā¤žā¤˛ā¤ŖāĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ Google ā¤•ā¤ĄāĨ€ā¤˛ ā¤Ŧā¤žā¤šāĨā¤¯ ā¤¸ā¤‚ā¤¸ā¤žā¤§ā¤¨āĨ‡ ⤞āĨ‹ā¤Ą ⤕⤰⤤āĨ‡.", "general": "ā¤¸ā¤žā¤Žā¤žā¤¨āĨā¤¯", "geolocation_instruction_location": "GPS ⤍ā¤ŋ⤰āĨā¤ĻāĨ‡ā¤ļā¤žā¤‚ā¤• ⤅⤏⤞āĨ‡ā¤˛āĨā¤¯ā¤ž ā¤ŽāĨ€ā¤Ąā¤ŋā¤¯ā¤ž ā¤˜ā¤Ÿā¤•ā¤žā¤ĩ⤰ ⤕āĨā¤˛ā¤ŋ⤕ ⤕⤰āĨ‚⤍ ⤤āĨā¤¯ā¤žā¤šāĨ‡ ⤏āĨā¤Ĩā¤žā¤¨ ā¤ĩā¤žā¤Ēā¤°ā¤ž, ⤕ā¤ŋ⤂ā¤ĩā¤ž ā¤ĨāĨ‡ā¤Ÿ ā¤¨ā¤•ā¤žā¤ļā¤žā¤ĩ⤰āĨ‚⤍ ⤏āĨā¤Ĩā¤žā¤¨ ⤍ā¤ŋā¤ĩā¤Ąā¤ž", @@ -1122,6 +1155,7 @@ "hide_named_person": "ā¤ĩāĨā¤¯ā¤•āĨā¤¤āĨ€ {name} ⤞ā¤Ēā¤ĩā¤ž", "hide_password": "⤏⤂⤕āĨ‡ā¤¤ā¤ļā¤ŦāĨā¤Ļ ⤞ā¤Ēā¤ĩā¤ž", "hide_person": "ā¤ĩāĨā¤¯ā¤•āĨā¤¤āĨ€ ⤞ā¤Ēā¤ĩā¤ž", + "hide_text_recognition": "ā¤Žā¤œā¤•āĨ‚⤰ ⤓⤺⤖ ⤞ā¤Ēā¤ĩā¤ž", "hide_unnamed_people": "ā¤¨ā¤žā¤ĩ ⤍⤏⤞āĨ‡ā¤˛āĨā¤¯ā¤ž ā¤ĩāĨā¤¯ā¤•āĨā¤¤āĨ€ ⤞ā¤Ēā¤ĩā¤ž", "home_page_add_to_album_conflicts": "⤅⤞āĨā¤Ŧā¤Ž {album} ā¤Žā¤§āĨā¤¯āĨ‡ {added} ā¤ŽāĨ€ā¤Ąā¤ŋā¤¯ā¤ž ā¤˜ā¤Ÿā¤• ⤜āĨ‹ā¤Ąā¤˛āĨ‡. {failed} ā¤ŽāĨ€ā¤Ąā¤ŋā¤¯ā¤ž ā¤˜ā¤Ÿā¤• ⤆⤧āĨ€ā¤š ⤤āĨā¤¯ā¤ž ⤅⤞āĨā¤Ŧā¤Žā¤Žā¤§āĨā¤¯āĨ‡ ā¤†ā¤šāĨ‡ā¤¤.", "home_page_add_to_album_err_local": "⤏āĨā¤Ĩā¤žā¤¨ā¤ŋ⤕ ā¤ŽāĨ€ā¤Ąā¤ŋā¤¯ā¤ž ā¤˜ā¤Ÿā¤• ā¤…ā¤œāĨ‚⤍ ⤅⤞āĨā¤Ŧā¤Žā¤Žā¤§āĨā¤¯āĨ‡ ⤜āĨ‹ā¤Ąā¤¤ā¤ž ⤝āĨ‡ā¤¤ ā¤¨ā¤žā¤šāĨ€ā¤¤, ā¤ĩ⤗⤺⤤ ā¤†ā¤šāĨ‡", @@ -1232,7 +1266,7 @@ "link_to_oauth": "OAuth ā¤ļāĨ€ ⤞ā¤ŋ⤂⤕ ā¤•ā¤°ā¤ž", "linked_oauth_account": "⤞ā¤ŋ⤂⤕ ⤕āĨ‡ā¤˛āĨ‡ā¤˛āĨ‡ OAuth ā¤–ā¤žā¤¤āĨ‡", "list": "ā¤¯ā¤žā¤ĻāĨ€", - "loading": "⤞āĨ‹ā¤Ą ā¤šāĨ‹ā¤¤ ā¤†ā¤šāĨ‡", + "loading": "⤞āĨ‹ā¤Ąā¤ŋ⤂⤗ ⤏āĨā¤°āĨ‚ ā¤†ā¤šāĨ‡", "loading_search_results_failed": "ā¤ļāĨ‹ā¤§ ⤍ā¤ŋā¤•ā¤žā¤˛ ⤞āĨ‹ā¤Ą ⤕⤰⤪āĨā¤¯ā¤žā¤¤ ⤅⤝ā¤ļ⤏āĨā¤ĩāĨ€", "local": "⤏āĨā¤Ĩā¤žā¤¨ā¤ŋ⤕", "local_asset_cast_failed": "⤏⤰āĨā¤ĩāĨā¤šā¤°ā¤ĩ⤰ ⤅ā¤Ē⤞āĨ‹ā¤Ą ⤍ ⤕āĨ‡ā¤˛āĨ‡ā¤˛āĨ‡ ⤅āĨ…⤏āĨ‡ā¤Ÿ ā¤•ā¤žā¤¸āĨā¤Ÿ ⤕⤰āĨ‚ ā¤ļ⤕⤤ ā¤¨ā¤žā¤šāĨ€", @@ -1277,8 +1311,8 @@ "login_form_server_empty": "⤏⤰āĨā¤ĩāĨā¤šā¤° URL ā¤­ā¤°ā¤ž.", "login_form_server_error": "⤏⤰āĨā¤ĩāĨā¤šā¤°ā¤ļāĨ€ ⤜āĨ‹ā¤Ąā¤¤ā¤ž ⤆⤞āĨ‡ ā¤¨ā¤žā¤šāĨ€.", "login_has_been_disabled": "⤞āĨ‰ā¤—ā¤ŋ⤍ ā¤Ŧ⤂ā¤Ļ ⤕āĨ‡ā¤˛āĨ‡ ā¤†ā¤šāĨ‡.", - "login_password_changed_error": "⤤āĨā¤Žā¤šā¤ž ā¤Ēā¤žā¤¸ā¤ĩ⤰āĨā¤Ą ⤅ā¤Ēā¤ĄāĨ‡ā¤Ÿ ā¤•ā¤°ā¤¤ā¤žā¤¨ā¤ž ⤤āĨā¤°āĨā¤ŸāĨ€ ⤆⤞āĨ€", - "login_password_changed_success": "ā¤Ēā¤žā¤¸ā¤ĩ⤰āĨā¤Ą ⤝ā¤ļ⤏āĨā¤ĩāĨ€ā¤Ē⤪āĨ‡ ⤅ā¤Ēā¤ĄāĨ‡ā¤Ÿ ā¤ā¤žā¤˛ā¤ž.", + "login_password_changed_error": "ā¤Ēā¤žā¤¸ā¤ĩ⤰āĨā¤Ą ⤅ā¤Ēā¤ĄāĨ‡ā¤Ÿ ā¤•ā¤°ā¤¤ā¤žā¤¨ā¤ž ⤤āĨā¤°āĨā¤ŸāĨ€ ⤆⤞āĨ€", + "login_password_changed_success": "ā¤Ēā¤žā¤¸ā¤ĩ⤰āĨā¤Ą ⤝ā¤ļ⤏āĨā¤ĩāĨ€ā¤Ē⤪āĨ‡ ⤅ā¤Ēā¤ĄāĨ‡ā¤Ÿ ā¤ā¤žā¤˛ā¤ž", "logout_all_device_confirmation": "⤤āĨā¤ŽāĨā¤šā¤žā¤˛ā¤ž ⤍⤕āĨā¤•āĨ€ ⤏⤰āĨā¤ĩ ā¤Ąā¤ŋā¤ĩāĨā¤šā¤žā¤‡ā¤¸ā¤ĩ⤰āĨ‚⤍ ⤞āĨ‰ā¤— ā¤†ā¤Šā¤Ÿ ā¤•ā¤°ā¤žā¤¯ā¤šāĨ‡ ā¤†ā¤šāĨ‡ ā¤•ā¤ž?", "logout_this_device_confirmation": "⤤āĨā¤ŽāĨā¤šā¤žā¤˛ā¤ž ⤍⤕āĨā¤•āĨ€ ā¤¯ā¤ž ā¤Ąā¤ŋā¤ĩāĨā¤šā¤žā¤‡ā¤¸ā¤ĩ⤰āĨ‚⤍ ⤞āĨ‰ā¤— ā¤†ā¤Šā¤Ÿ ā¤•ā¤°ā¤žā¤¯ā¤šāĨ‡ ā¤†ā¤šāĨ‡ ā¤•ā¤ž?", "logs": "⤞āĨ‰ā¤—āĨā¤¸", @@ -1390,7 +1424,7 @@ "new_password": "⤍ā¤ĩāĨ€ā¤¨ ā¤Ēā¤žā¤¸ā¤ĩ⤰āĨā¤Ą", "new_person": "⤍ā¤ĩāĨ€ā¤¨ ā¤ĩāĨā¤¯ā¤•āĨā¤¤āĨ€", "new_pin_code": "⤍ā¤ĩāĨ€ā¤¨ PIN ⤕āĨ‹ā¤Ą", - "new_pin_code_subtitle": "⤤āĨā¤ŽāĨā¤šāĨ€ ā¤ĒāĨā¤°ā¤Ĩā¤Žā¤š ⤞āĨ‰ā¤• ā¤ĢāĨ‹ā¤˛āĨā¤Ąā¤° ā¤‰ā¤˜ā¤Ąā¤¤ ā¤†ā¤šā¤žā¤¤. ā¤šāĨ‡ ā¤Ēā¤žā¤¨ ⤏āĨā¤°ā¤•āĨā¤ˇā¤ŋ⤤ā¤Ē⤪āĨ‡ ā¤‰ā¤˜ā¤Ąā¤ŖāĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ā¤ā¤• PIN ⤕āĨ‹ā¤Ą ā¤¤ā¤¯ā¤žā¤° ā¤•ā¤°ā¤ž", + "new_pin_code_subtitle": "⤤āĨā¤ŽāĨā¤šāĨ€ ā¤ĒāĨā¤°ā¤Ĩā¤Žā¤š ⤞āĨ‰ā¤• ā¤ĢāĨ‹ā¤˛āĨā¤Ąā¤° ā¤ĩā¤žā¤Ē⤰⤤ ā¤†ā¤šā¤žā¤¤. ā¤šāĨ‡ ā¤Ēā¤žā¤¨ ⤏āĨā¤°ā¤•āĨā¤ˇā¤ŋ⤤ā¤Ē⤪āĨ‡ ā¤‰ā¤˜ā¤Ąā¤ŖāĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ PIN ⤕āĨ‹ā¤Ą ā¤¤ā¤¯ā¤žā¤° ā¤•ā¤°ā¤ž", "new_timeline": "⤍ā¤ĩāĨ€ā¤¨ ā¤Ÿā¤žā¤‡ā¤Žā¤˛ā¤žā¤‡ā¤¨", "new_update": "⤍ā¤ĩāĨ€ā¤¨ ⤅ā¤Ēā¤ĄāĨ‡ā¤Ÿ", "new_user_created": "⤍ā¤ĩāĨ€ā¤¨ ā¤ĩā¤žā¤Ē⤰⤕⤰āĨā¤¤ā¤ž ā¤¤ā¤¯ā¤žā¤° ā¤ā¤žā¤˛ā¤ž", @@ -1402,29 +1436,30 @@ "no_albums_message": "⤤āĨā¤Žā¤šāĨ‡ ā¤ĢāĨ‹ā¤ŸāĨ‹ ⤆⤪ā¤ŋ ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓ ā¤ĩāĨā¤¯ā¤ĩ⤏āĨā¤Ĩā¤ŋ⤤ ⤕⤰⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ā¤ā¤• ⤅⤞āĨā¤Ŧā¤Ž ā¤¤ā¤¯ā¤žā¤° ā¤•ā¤°ā¤ž", "no_albums_with_name_yet": "ā¤¯ā¤ž ā¤¨ā¤žā¤ĩā¤žā¤šā¤ž ā¤…ā¤œāĨ‚⤍ ⤕āĨ‹ā¤Ŗā¤¤ā¤žā¤šāĨ€ ⤅⤞āĨā¤Ŧā¤Ž ā¤¨ā¤žā¤šāĨ€ ⤅⤏āĨ‡ ā¤Ļā¤ŋ⤏⤤āĨ‡.", "no_albums_yet": "ā¤…ā¤œāĨ‚⤍ ⤤āĨā¤Žā¤šāĨā¤¯ā¤žā¤•ā¤ĄāĨ‡ ⤕āĨ‹ā¤Ŗā¤¤āĨ‡ā¤šāĨ€ ⤅⤞āĨā¤Ŧā¤Ž ā¤¨ā¤žā¤šāĨ€ā¤¤ ⤅⤏āĨ‡ ā¤Ļā¤ŋ⤏⤤āĨ‡.", - "no_archived_assets_message": "⤤āĨā¤Žā¤šāĨā¤¯ā¤ž ā¤ĢāĨ‹ā¤ŸāĨ‹ ā¤ĻāĨƒā¤ļāĨā¤¯ā¤žā¤¤āĨ‚⤍ ⤞ā¤Ēā¤ĩ⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ā¤ĢāĨ‹ā¤ŸāĨ‹ ⤆⤪ā¤ŋ ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓ ⤆⤰āĨā¤•ā¤žā¤‡ā¤ĩāĨā¤š ā¤•ā¤°ā¤ž", - "no_assets_message": "⤤āĨā¤Žā¤šā¤ž ā¤Ēā¤šā¤ŋā¤˛ā¤ž ā¤ĢāĨ‹ā¤ŸāĨ‹ ⤅ā¤Ē⤞āĨ‹ā¤Ą ⤕⤰⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ⤕āĨā¤˛ā¤ŋ⤕ ā¤•ā¤°ā¤ž", - "no_assets_to_show": "ā¤Ļā¤žā¤–ā¤ĩ⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ⤕āĨ‹ā¤Ŗā¤¤āĨ‡ā¤šāĨ€ ⤅āĨ…⤏āĨ‡ā¤Ÿ ā¤¨ā¤žā¤šāĨ€ā¤¤", + "no_archived_assets_message": "ā¤ĢāĨ‹ā¤ŸāĨ‹ ⤆⤪ā¤ŋ ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓ ⤤āĨā¤Žā¤šāĨā¤¯ā¤ž ā¤ĢāĨ‹ā¤ŸāĨ‹ ā¤ĩāĨā¤šāĨā¤¯āĨ‚ā¤Žā¤§āĨ‚⤍ ⤞ā¤Ēā¤ĩ⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ⤤āĨā¤¯ā¤žā¤‚ā¤¨ā¤ž ⤆⤰āĨā¤•ā¤žā¤‡ā¤ĩāĨā¤š ā¤•ā¤°ā¤ž", + "no_assets_message": "⤤āĨā¤Žā¤šā¤ž ā¤Ēā¤šā¤ŋā¤˛ā¤ž ā¤ĢāĨ‹ā¤ŸāĨ‹ ⤜āĨ‹ā¤Ąā¤ŖāĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ⤕āĨā¤˛ā¤ŋ⤕ ā¤•ā¤°ā¤ž", + "no_assets_to_show": "ā¤Ļā¤žā¤–ā¤ĩ⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ⤕āĨ‹ā¤Ŗā¤¤āĨ‡ā¤šāĨ€ āĨ˛ā¤¸āĨ‡ā¤ŸāĨā¤¸ ā¤¨ā¤žā¤šāĨ€ā¤¤", "no_cast_devices_found": "⤕āĨ‹ā¤Ŗā¤¤āĨ‡ā¤šāĨ€ ā¤•ā¤žā¤¸āĨā¤Ÿ ā¤Ąā¤ŋā¤ĩāĨā¤šā¤žā¤‡ā¤¸ ā¤¸ā¤žā¤Ēā¤Ąā¤˛āĨ‡ ā¤¨ā¤žā¤šāĨ€", "no_checksum_local": "⤚āĨ‡ā¤•ā¤¸ā¤Ž ⤉ā¤Ē⤞ā¤ŦāĨā¤§ ā¤¨ā¤žā¤šāĨ€ — ⤏āĨā¤Ĩā¤žā¤¨ā¤ŋ⤕ ⤅āĨ…⤏āĨ‡ā¤ŸāĨā¤¸ ⤆⤪āĨ‚ ā¤ļ⤕⤤ ā¤¨ā¤žā¤šāĨ€", "no_checksum_remote": "⤚āĨ‡ā¤•ā¤¸ā¤Ž ⤉ā¤Ē⤞ā¤ŦāĨā¤§ ā¤¨ā¤žā¤šāĨ€ — ⤰ā¤ŋā¤ŽāĨ‹ā¤Ÿ ⤅āĨ…⤏āĨ‡ā¤Ÿ ⤆⤪āĨ‚ ā¤ļ⤕⤤ ā¤¨ā¤žā¤šāĨ€", "no_devices": "⤕āĨ‹ā¤Ŗā¤¤āĨ€ā¤šāĨ€ ⤅⤧ā¤ŋ⤕āĨƒā¤¤ ā¤Ąā¤ŋā¤ĩāĨā¤šā¤žā¤‡ā¤¸āĨ‡ā¤¸ ā¤¨ā¤žā¤šāĨ€ā¤¤", - "no_duplicates_found": "⤕āĨ‹ā¤Ŗā¤¤āĨ‡ā¤šāĨ€ ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤ŸāĨā¤¸ ā¤¸ā¤žā¤Ēā¤Ąā¤˛āĨ‡ ā¤¨ā¤žā¤šāĨ€ā¤¤.", + "no_duplicates_found": "⤕āĨ‹ā¤Ŗā¤¤āĨ‡ā¤šāĨ€ ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤Ÿ ā¤¸ā¤žā¤Ēā¤Ąā¤˛āĨ‡ ā¤¨ā¤žā¤šāĨ€ā¤¤.", "no_exif_info_available": "EXIF ā¤Žā¤žā¤šā¤ŋ⤤āĨ€ ⤉ā¤Ē⤞ā¤ŦāĨā¤§ ā¤¨ā¤žā¤šāĨ€", "no_explore_results_message": "⤤āĨā¤Žā¤šā¤ž ⤏⤂⤗āĨā¤°ā¤š ā¤ā¤•āĨā¤¸ā¤ĒāĨā¤˛āĨ‹ā¤° ⤕⤰⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ⤆⤪⤖āĨ€ ā¤ĢāĨ‹ā¤ŸāĨ‹ ⤅ā¤Ē⤞āĨ‹ā¤Ą ā¤•ā¤°ā¤ž.", "no_favorites_message": "⤤āĨā¤Žā¤šāĨ‡ ⤏⤰āĨā¤ĩāĨ‹ā¤¤āĨā¤¤ā¤Ž ā¤ĢāĨ‹ā¤ŸāĨ‹ ⤆⤪ā¤ŋ ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓ ā¤Ēā¤Ÿā¤•ā¤¨ ā¤ļāĨ‹ā¤§ā¤ŖāĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ⤤āĨā¤¯ā¤žā¤‚ā¤¨ā¤ž ⤆ā¤ĩā¤Ąā¤¤āĨā¤¯ā¤žā¤‚⤤ ⤜āĨ‹ā¤Ąā¤ž", "no_libraries_message": "⤤āĨā¤Žā¤šāĨ‡ ā¤ĢāĨ‹ā¤ŸāĨ‹ ⤆⤪ā¤ŋ ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓ ā¤Ēā¤žā¤šā¤ŖāĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ā¤Ŧā¤žā¤šāĨā¤¯ ā¤˛ā¤žā¤¯ā¤ŦāĨā¤°ā¤°āĨ€ ā¤¤ā¤¯ā¤žā¤° ā¤•ā¤°ā¤ž", "no_local_assets_found": "ā¤¯ā¤ž ⤚āĨ‡ā¤•ā¤¸ā¤Žā¤¸ā¤š ⤕āĨ‹ā¤Ŗā¤¤āĨ‡ā¤šāĨ€ ⤏āĨā¤Ĩā¤žā¤¨ā¤ŋ⤕ ⤅āĨ…⤏āĨ‡ā¤Ÿ ā¤¸ā¤žā¤Ēā¤Ąā¤˛āĨ‡ ā¤¨ā¤žā¤šāĨ€", + "no_location_set": "⤞āĨ‹ā¤•āĨ‡ā¤ļ⤍ ⤏āĨ‡ā¤Ÿ ⤕āĨ‡ā¤˛āĨ‡ā¤˛āĨ‡ ā¤¨ā¤žā¤šāĨ€", "no_locked_photos_message": "⤞āĨ‰ā¤• ā¤ĢāĨ‹ā¤˛āĨā¤Ąā¤°ā¤Žā¤§āĨ€ā¤˛ ā¤ĢāĨ‹ā¤ŸāĨ‹ ⤆⤪ā¤ŋ ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓ ⤞ā¤Ēā¤ĩ⤞āĨ‡ā¤˛āĨ‡ ā¤†ā¤šāĨ‡ā¤¤ ⤆⤪ā¤ŋ ā¤˛ā¤žā¤¯ā¤ŦāĨā¤°ā¤°āĨ€ ā¤ŦāĨā¤°ā¤žā¤‰ā¤œ ⤕ā¤ŋ⤂ā¤ĩā¤ž ā¤ļāĨ‹ā¤§ā¤¤ā¤žā¤¨ā¤ž ā¤Ļā¤ŋā¤¸ā¤Ŗā¤žā¤° ā¤¨ā¤žā¤šāĨ€ā¤¤.", - "no_name": "ā¤¨ā¤žā¤ĩ ā¤¨ā¤žā¤šāĨ€", + "no_name": "⤕āĨ‹ā¤Ŗā¤¤āĨ‡ā¤šāĨ€ ā¤¨ā¤žā¤ĩ ā¤¨ā¤žā¤šāĨ€", "no_notifications": "⤕āĨ‹ā¤Ŗā¤¤āĨā¤¯ā¤žā¤šāĨ€ ⤏āĨ‚ā¤šā¤¨ā¤ž ā¤¨ā¤žā¤šāĨ€ā¤¤", "no_people_found": "⤜āĨā¤ŗā¤Ŗā¤žā¤°āĨ‡ ⤕āĨ‹ā¤Ŗā¤¤āĨ‡ā¤šāĨ€ ⤞āĨ‹ā¤• ā¤¸ā¤žā¤Ēā¤Ąā¤˛āĨ‡ ā¤¨ā¤žā¤šāĨ€ā¤¤", "no_places": "⤕āĨ‹ā¤Ŗā¤¤āĨ€ā¤šāĨ€ ⤠ā¤ŋā¤•ā¤žā¤ŖāĨ‡ ā¤¨ā¤žā¤šāĨ€ā¤¤", "no_remote_assets_found": "ā¤¯ā¤ž ⤚āĨ‡ā¤•ā¤¸ā¤Žā¤¸ā¤š ⤕āĨ‹ā¤Ŗā¤¤āĨ‡ā¤šāĨ€ ⤰ā¤ŋā¤ŽāĨ‹ā¤Ÿ ⤅āĨ…⤏āĨ‡ā¤Ÿ ā¤¸ā¤žā¤Ēā¤Ąā¤˛āĨ‡ ā¤¨ā¤žā¤šāĨ€", "no_results": "⤕āĨ‹ā¤Ŗā¤¤āĨ‡ā¤šāĨ€ ⤍ā¤ŋā¤•ā¤žā¤˛ ā¤¨ā¤žā¤šāĨ€ā¤¤", "no_results_description": "ā¤¸ā¤Žā¤žā¤°āĨā¤Ĩ⤕ ā¤ļā¤ŦāĨā¤Ļ ⤕ā¤ŋ⤂ā¤ĩā¤ž ⤅⤧ā¤ŋ⤕ ⤏⤰āĨā¤ĩā¤¸ā¤žā¤§ā¤žā¤°ā¤Ŗ ⤕āĨ€ā¤ĩ⤰āĨā¤Ą ā¤ĩā¤žā¤Ē⤰āĨ‚⤍ ā¤Ēā¤žā¤šā¤ž", - "no_shared_albums_message": "⤤āĨā¤Žā¤šāĨā¤¯ā¤ž ⤍āĨ‡ā¤Ÿā¤ĩ⤰āĨā¤•ā¤Žā¤§āĨ€ā¤˛ ⤞āĨ‹ā¤•ā¤žā¤‚ā¤ļāĨ€ ā¤ĢāĨ‹ā¤ŸāĨ‹ ⤆⤪ā¤ŋ ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓ ā¤ļāĨ‡ā¤…⤰ ⤕⤰⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ⤅⤞āĨā¤Ŧā¤Ž ā¤¤ā¤¯ā¤žā¤° ā¤•ā¤°ā¤ž", - "no_uploads_in_progress": "⤕āĨ‹ā¤Ŗā¤¤āĨ‡ā¤šāĨ€ ⤅ā¤Ē⤞āĨ‹ā¤Ą ⤏āĨā¤°āĨ‚ ā¤¨ā¤žā¤šāĨ€", + "no_shared_albums_message": "⤤āĨā¤Žā¤šāĨā¤¯ā¤ž ⤍āĨ‡ā¤Ÿā¤ĩ⤰āĨā¤•ā¤Žā¤§āĨ€ā¤˛ ⤞āĨ‹ā¤•ā¤žā¤‚ā¤¸āĨ‹ā¤Ŧ⤤ ā¤ĢāĨ‹ā¤ŸāĨ‹ ⤆⤪ā¤ŋ ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓ ā¤ļāĨ‡ā¤…⤰ ⤕⤰⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ā¤ā¤• ⤅⤞āĨā¤Ŧā¤Ž ā¤¤ā¤¯ā¤žā¤° ā¤•ā¤°ā¤ž", + "no_uploads_in_progress": "⤕āĨ‹ā¤Ŗā¤¤āĨ‡ā¤šāĨ€ ⤅ā¤Ē⤞āĨ‹ā¤Ą ⤏āĨā¤°āĨ‚ ā¤¨ā¤žā¤šāĨ€ā¤¤", "not_allowed": "ā¤Ē⤰ā¤ĩā¤žā¤¨ā¤—āĨ€ ā¤¨ā¤žā¤šāĨ€", "not_available": "⤉ā¤Ē⤞ā¤ŦāĨā¤§ ā¤¨ā¤žā¤šāĨ€", "not_in_any_album": "⤕āĨ‹ā¤Ŗā¤¤āĨā¤¯ā¤žā¤šāĨ€ ⤅⤞āĨā¤Ŧā¤Žā¤Žā¤§āĨā¤¯āĨ‡ ā¤¨ā¤žā¤šāĨ€", @@ -1440,6 +1475,9 @@ "notifications": "⤏āĨ‚ā¤šā¤¨ā¤ž", "notifications_setting_description": "⤏āĨ‚ā¤šā¤¨ā¤ž ā¤ĩāĨā¤¯ā¤ĩ⤏āĨā¤Ĩā¤žā¤Ēā¤ŋ⤤ ā¤•ā¤°ā¤ž", "oauth": "OAuth", + "obtainium_configurator": "⤓ā¤ŦāĨā¤ŸāĨ‡ā¤¨ā¤ŋā¤¯ā¤Ž ⤕āĨ‰ā¤¨āĨā¤Ģā¤ŋ⤗⤰āĨ‡ā¤Ÿā¤°", + "obtainium_configurator_instructions": "Immich GitHub ⤰ā¤ŋ⤞āĨ€ā¤œā¤Žā¤§āĨ‚⤍ Android ⤅āĨ…ā¤Ē ā¤ĨāĨ‡ā¤Ÿ ⤇⤍āĨā¤¸āĨā¤ŸāĨ‰ā¤˛ ⤆⤪ā¤ŋ ⤅ā¤Ēā¤ĄāĨ‡ā¤Ÿ ⤕⤰⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ Obtainium ā¤ĩā¤žā¤Ēā¤°ā¤ž. API ⤕āĨ€ ā¤¤ā¤¯ā¤žā¤° ā¤•ā¤°ā¤ž ⤆⤪ā¤ŋ ā¤ā¤• ā¤ĩāĨā¤šāĨ‡ā¤°ā¤ŋā¤¯ā¤‚ā¤Ÿ ⤍ā¤ŋā¤ĩā¤ĄāĨ‚⤍ ⤤āĨā¤Žā¤šā¤ž Obtainium ⤕āĨ‰ā¤¨āĨā¤Ģā¤ŋ⤗⤰āĨ‡ā¤ļ⤍ ⤞ā¤ŋ⤂⤕ ā¤¤ā¤¯ā¤žā¤° ā¤•ā¤°ā¤ž", + "ocr": "⤓⤏āĨ€ā¤†ā¤°", "official_immich_resources": "⤅⤧ā¤ŋ⤕āĨƒā¤¤ Immich ā¤¸ā¤‚ā¤¸ā¤žā¤§ā¤¨āĨ‡", "offline": "⤑ā¤Ģā¤˛ā¤žā¤‡ā¤¨", "offset": "⤑ā¤Ģ⤏āĨ‡ā¤Ÿ", @@ -1533,6 +1571,8 @@ "photos_count": "{count, plural, one {{count, number} ā¤ĢāĨ‹ā¤ŸāĨ‹} other {{count, number} ā¤ĢāĨ‹ā¤ŸāĨ‹}}", "photos_from_previous_years": "ā¤Žā¤žā¤—āĨ€ā¤˛ ā¤ĩ⤰āĨā¤ˇā¤žā¤‚⤤āĨ€ā¤˛ ā¤ĢāĨ‹ā¤ŸāĨ‹", "pick_a_location": "⤏āĨā¤Ĩā¤žā¤¨ ⤍ā¤ŋā¤ĩā¤Ąā¤ž", + "pick_custom_range": "⤕⤏āĨā¤Ÿā¤Ž ā¤ļāĨā¤°āĨ‡ā¤ŖāĨ€", + "pick_date_range": "ā¤¤ā¤žā¤°āĨ€ā¤– ā¤ļāĨā¤°āĨ‡ā¤ŖāĨ€ ⤍ā¤ŋā¤ĩā¤Ąā¤ž", "pin_code_changed_successfully": "PIN ⤕āĨ‹ā¤Ą ⤝ā¤ļ⤏āĨā¤ĩāĨ€ā¤°ā¤ŋ⤤āĨā¤¯ā¤ž ā¤Ŧā¤Ļā¤˛ā¤˛ā¤ž", "pin_code_reset_successfully": "PIN ⤕āĨ‹ā¤Ą ⤝ā¤ļ⤏āĨā¤ĩāĨ€ā¤°ā¤ŋ⤤āĨā¤¯ā¤ž ⤰āĨ€ā¤¸āĨ‡ā¤Ÿ ⤕āĨ‡ā¤˛ā¤ž", "pin_code_setup_successfully": "PIN ⤕āĨ‹ā¤Ą ⤝ā¤ļ⤏āĨā¤ĩāĨ€ā¤°ā¤ŋ⤤āĨā¤¯ā¤ž ⤏āĨ‡ā¤Ÿ ⤕āĨ‡ā¤˛ā¤ž", @@ -1544,10 +1584,14 @@ "play_memories": "⤆⤠ā¤ĩ⤪āĨ€ ā¤ĒāĨā¤˛āĨ‡ ā¤•ā¤°ā¤ž", "play_motion_photo": "ā¤ŽāĨ‹ā¤ļ⤍ ā¤ĢāĨ‹ā¤ŸāĨ‹ ā¤ĒāĨā¤˛āĨ‡ ā¤•ā¤°ā¤ž", "play_or_pause_video": "ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓ ā¤ĒāĨā¤˛āĨ‡ ⤕ā¤ŋ⤂ā¤ĩā¤ž ā¤ĒāĨ‰ā¤œ ā¤•ā¤°ā¤ž", + "play_original_video": "ā¤ŽāĨ‚⤺ ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓ ā¤ĒāĨā¤˛āĨ‡ ā¤•ā¤°ā¤ž", + "play_original_video_setting_description": "⤟āĨā¤°ā¤žā¤¨āĨā¤¸ā¤•āĨ‹ā¤Ą ⤕āĨ‡ā¤˛āĨ‡ā¤˛āĨā¤¯ā¤ž ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓⤂ā¤ĒāĨ‡ā¤•āĨā¤ˇā¤ž ā¤ŽāĨ‚⤺ ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓ ā¤ĒāĨā¤˛āĨ‡ ⤕⤰⤪āĨā¤¯ā¤žā¤˛ā¤ž ā¤ĒāĨā¤°ā¤žā¤§ā¤žā¤¨āĨā¤¯ ā¤ĻāĨā¤¯ā¤ž. ā¤ŽāĨ‚⤺ ⤅āĨ…⤏āĨ‡ā¤Ÿ ⤏āĨā¤¸ā¤‚⤗⤤ ⤍⤏āĨ‡ā¤˛ ⤤⤰ ā¤ĒāĨā¤˛āĨ‡ā¤ŦāĨ…⤕ ⤝āĨ‹ā¤—āĨā¤¯ā¤°ā¤ŋ⤤āĨā¤¯ā¤ž ā¤šāĨ‹ā¤Š ā¤ļ⤕⤤ ā¤¨ā¤žā¤šāĨ€.", + "play_transcoded_video": "⤟āĨā¤°ā¤žā¤¨āĨā¤¸ā¤•āĨ‹ā¤Ą ⤕āĨ‡ā¤˛āĨ‡ā¤˛ā¤ž ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓ ā¤ĒāĨā¤˛āĨ‡ ā¤•ā¤°ā¤ž", "please_auth_to_access": "ā¤ĒāĨā¤°ā¤ĩāĨ‡ā¤ļā¤žā¤¸ā¤žā¤ āĨ€ ⤕āĨƒā¤Ēā¤¯ā¤ž ā¤ĒāĨā¤°ā¤Žā¤žā¤ŖāĨ€ā¤•⤰⤪ ā¤•ā¤°ā¤ž", "port": "ā¤ĒāĨ‹ā¤°āĨā¤Ÿ", "preferences_settings_subtitle": "ā¤…â€āĨ…ā¤Ē⤚āĨ€ ā¤ĒāĨā¤°ā¤žā¤§ā¤žā¤¨āĨā¤¯āĨ‡ ā¤ĩāĨā¤¯ā¤ĩ⤏āĨā¤Ĩā¤žā¤Ēā¤ŋ⤤ ā¤•ā¤°ā¤ž", "preferences_settings_title": "ā¤ĒāĨā¤°ā¤žā¤§ā¤žā¤¨āĨā¤¯āĨ‡", + "preparing": "ā¤¤ā¤¯ā¤žā¤° ⤕⤰⤤ ā¤†ā¤šāĨ‡", "preset": "ā¤ĒāĨā¤°ā¤ŋ⤏āĨ‡ā¤Ÿ", "preview": "ā¤ĒāĨ‚⤰āĨā¤ĩā¤žā¤ĩ⤞āĨ‹ā¤•⤍", "previous": "ā¤Žā¤žā¤—āĨ€ā¤˛", @@ -1609,6 +1653,7 @@ "read_changelog": "⤚āĨ‡ā¤‚ā¤œā¤˛āĨ‰ā¤— ā¤ĩā¤žā¤šā¤ž", "readonly_mode_disabled": "ā¤Ģ⤕āĨā¤¤-ā¤ĩā¤žā¤šā¤¨ ā¤ŽāĨ‹ā¤Ą ⤍ā¤ŋ⤎āĨā¤•āĨā¤°ā¤ŋ⤝ ⤕āĨ‡ā¤˛ā¤ž", "readonly_mode_enabled": "ā¤Ģ⤕āĨā¤¤-ā¤ĩā¤žā¤šā¤¨ ā¤ŽāĨ‹ā¤Ą ⤏⤕āĨā¤ˇā¤Ž ⤕āĨ‡ā¤˛ā¤ž", + "ready_for_upload": "⤅ā¤Ē⤞āĨ‹ā¤Ąā¤¸ā¤žā¤ āĨ€ ā¤¤ā¤¯ā¤žā¤°", "reassign": "ā¤ĒāĨā¤¨āĨā¤šā¤ž ⤍ā¤ŋ⤝āĨā¤•āĨā¤¤ ā¤•ā¤°ā¤ž", "reassigned_assets_to_existing_person": "{count, plural, one {# ā¤†ā¤¯ā¤Ÿā¤Ž} other {# ā¤†ā¤¯ā¤Ÿā¤Ž}} {name, select, null {ā¤ĩā¤ŋā¤ĻāĨā¤¯ā¤Žā¤žā¤¨ ā¤ĩāĨā¤¯ā¤•āĨā¤¤āĨ€ā¤•ā¤ĄāĨ‡} other {{name} ā¤•ā¤ĄāĨ‡}} ā¤ĒāĨā¤¨āĨā¤šā¤ž ⤍ā¤ŋ⤝āĨā¤•āĨā¤¤ ⤕āĨ‡ā¤˛āĨ‡", "reassigned_assets_to_new_person": "{count, plural, one {# ā¤†ā¤¯ā¤Ÿā¤Ž} other {# ā¤†ā¤¯ā¤Ÿā¤Ž}} ⤍ā¤ĩāĨā¤¯ā¤ž ā¤ĩāĨā¤¯ā¤•āĨā¤¤āĨ€ā¤•ā¤ĄāĨ‡ ā¤ĒāĨā¤¨āĨā¤šā¤ž ⤍ā¤ŋ⤝āĨā¤•āĨā¤¤ ⤕āĨ‡ā¤˛āĨ‡", @@ -1633,6 +1678,7 @@ "regenerating_thumbnails": "ā¤Ĩ⤂ā¤Ŧ⤍āĨ‡ā¤˛āĨā¤¸ ā¤ĒāĨā¤¨āĨā¤šā¤ž ā¤¤ā¤¯ā¤žā¤° ⤕⤰⤤ ā¤†ā¤šāĨ‡", "remote": "ā¤ĻāĨ‚⤰⤏āĨā¤Ĩ", "remote_assets": "ā¤ĻāĨ‚⤰⤏āĨā¤Ĩ ā¤†ā¤¯ā¤Ÿā¤Ž", + "remote_media_summary": "⤰ā¤ŋā¤ŽāĨ‹ā¤Ÿ ā¤ŽāĨ€ā¤Ąā¤ŋā¤¯ā¤žā¤šā¤ž ā¤¸ā¤žā¤°ā¤žā¤‚ā¤ļ", "remove": "ā¤•ā¤žā¤ĸā¤ž", "remove_assets_album_confirmation": "⤅⤞āĨā¤Ŧā¤Žā¤Žā¤§āĨ‚⤍ {count, plural, one {# ā¤†ā¤¯ā¤Ÿā¤Ž} other {# ā¤†ā¤¯ā¤Ÿā¤Ž}} ā¤•ā¤žā¤ĸā¤žā¤¯ā¤šāĨ‡ ā¤†ā¤šāĨ‡ā¤¤ ā¤•ā¤ž?", "remove_assets_shared_link_confirmation": "ā¤¯ā¤ž ā¤ļāĨ‡ā¤…⤰āĨā¤Ą ā¤ĻāĨā¤ĩāĨā¤¯ā¤žā¤¤āĨ‚⤍ {count, plural, one {# ā¤†ā¤¯ā¤Ÿā¤Ž} other {# ā¤†ā¤¯ā¤Ÿā¤Ž}} ā¤•ā¤žā¤ĸā¤žā¤¯ā¤šāĨ‡ ā¤†ā¤šāĨ‡ā¤¤ ā¤•ā¤ž?", @@ -1677,6 +1723,7 @@ "reset_sqlite_confirmation": "⤤āĨā¤ŽāĨā¤šā¤žā¤˛ā¤ž ⤍⤕āĨā¤•āĨ€ SQLite ā¤ĄāĨ‡ā¤Ÿā¤žā¤ŦāĨ‡ā¤¸ ⤰āĨ€ā¤¸āĨ‡ā¤Ÿ ā¤•ā¤°ā¤žā¤¯ā¤šā¤ž ā¤†ā¤šāĨ‡ ā¤•ā¤ž? ā¤ĄāĨ‡ā¤Ÿā¤ž ā¤ĒāĨā¤¨āĨā¤šā¤ž ā¤¸ā¤Žā¤•āĨā¤°ā¤Žā¤ŋ⤤ ⤕⤰⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ⤤āĨā¤ŽāĨā¤šā¤žā¤˛ā¤ž ⤞āĨ‰ā¤—ā¤†ā¤‰ā¤Ÿ ⤕⤰āĨ‚⤍ ā¤ĒāĨā¤¨āĨā¤šā¤ž ⤞āĨ‰ā¤—⤇⤍ ā¤•ā¤°ā¤žā¤ĩāĨ‡ ā¤˛ā¤žā¤—āĨ‡ā¤˛", "reset_sqlite_success": "SQLite ā¤ĄāĨ‡ā¤Ÿā¤žā¤ŦāĨ‡ā¤¸ ⤝ā¤ļ⤏āĨā¤ĩāĨ€ā¤°āĨ€ā¤¤āĨā¤¯ā¤ž ⤰āĨ€ā¤¸āĨ‡ā¤Ÿ ⤕āĨ‡ā¤˛ā¤ž", "reset_to_default": "ā¤ĄāĨ€ā¤ĢāĨ‰ā¤˛āĨā¤Ÿā¤ĩ⤰ ⤰āĨ€ā¤¸āĨ‡ā¤Ÿ ā¤•ā¤°ā¤ž", + "resolution": "⤰āĨ‡ā¤āĨ‹ā¤˛āĨā¤¯āĨ‚ā¤ļ⤍", "resolve_duplicates": "ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤ŸāĨā¤¸ ⤏āĨ‹ā¤Ąā¤ĩā¤ž", "resolved_all_duplicates": "⤏⤰āĨā¤ĩ ā¤ĄāĨā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤ŸāĨā¤¸ ⤏āĨ‹ā¤Ąā¤ĩ⤞āĨ‡", "restore": "ā¤ĒāĨā¤¨ā¤°āĨā¤¸ā¤‚ā¤šā¤¯ā¤ŋ⤤ ā¤•ā¤°ā¤ž", @@ -1695,6 +1742,7 @@ "running": "ā¤šā¤žā¤˛āĨ‚", "save": "⤜⤤⤍ ā¤•ā¤°ā¤ž", "save_to_gallery": "⤗āĨ…⤞⤰āĨ€ā¤Žā¤§āĨā¤¯āĨ‡ ⤜⤤⤍ ā¤•ā¤°ā¤ž", + "saved": "⤜⤤⤍ ⤕āĨ‡ā¤˛āĨ‡", "saved_api_key": "⤜⤤⤍ ⤕āĨ‡ā¤˛āĨ‡ā¤˛āĨ€ API ⤕āĨ€", "saved_profile": "⤜⤤⤍ ⤕āĨ‡ā¤˛āĨ‡ā¤˛āĨ‡ ā¤ĒāĨā¤°āĨ‹ā¤Ģā¤žā¤‡ā¤˛", "saved_settings": "⤜⤤⤍ ⤕āĨ‡ā¤˛āĨ‡ā¤˛āĨā¤¯ā¤ž ⤏āĨ‡ā¤Ÿā¤ŋ⤂⤗āĨā¤œ", @@ -1711,6 +1759,9 @@ "search_by_description_example": "ā¤¸ā¤žā¤Ēā¤ž ā¤Žā¤§āĨ€ā¤˛ ā¤šā¤žā¤¯ā¤•ā¤ŋā¤‚ā¤—ā¤šā¤ž ā¤Ļā¤ŋā¤ĩ⤏", "search_by_filename": "ā¤Ģā¤žā¤‡ā¤˛ ā¤¨ā¤žā¤ĩ/ā¤ā¤•āĨā¤¸āĨā¤ŸāĨ‡ā¤‚ā¤ļ⤍⤍āĨā¤¸ā¤žā¤° ā¤ļāĨ‹ā¤§ā¤ž", "search_by_filename_example": "⤉ā¤Ļā¤ž. IMG_1234.JPG ⤕ā¤ŋ⤂ā¤ĩā¤ž PNG", + "search_by_ocr": "OCR ā¤ĻāĨā¤ĩā¤žā¤°āĨ‡ ā¤ļāĨ‹ā¤§ā¤ž", + "search_by_ocr_example": "ā¤˛ā¤žā¤ŸāĨ‡", + "search_camera_lens_model": "⤞āĨ‡ā¤¨āĨā¤¸ ā¤ŽāĨ‰ā¤ĄāĨ‡ā¤˛ ā¤ļāĨ‹ā¤§ā¤žâ€Ļ", "search_camera_make": "⤕āĨ…ā¤ŽāĨ‡ā¤°ā¤ž ⤍ā¤ŋ⤰āĨā¤Žā¤žā¤¤ā¤ž ā¤ļāĨ‹ā¤§ā¤ž...", "search_camera_model": "⤕āĨ…ā¤ŽāĨ‡ā¤°ā¤ž ā¤ŽāĨ‰ā¤ĄāĨ‡ā¤˛ ā¤ļāĨ‹ā¤§ā¤ž...", "search_city": "ā¤ļā¤šā¤° ā¤ļāĨ‹ā¤§ā¤ž...", @@ -1727,6 +1778,7 @@ "search_filter_location_title": "⤏āĨā¤Ĩā¤žā¤¨ ⤍ā¤ŋā¤ĩā¤Ąā¤ž", "search_filter_media_type": "ā¤Žā¤žā¤§āĨā¤¯ā¤Ž ā¤ĒāĨā¤°ā¤•ā¤žā¤°", "search_filter_media_type_title": "ā¤Žā¤žā¤§āĨā¤¯ā¤Ž ā¤ĒāĨā¤°ā¤•ā¤žā¤° ⤍ā¤ŋā¤ĩā¤Ąā¤ž", + "search_filter_ocr": "OCR ā¤ĻāĨā¤ĩā¤žā¤°āĨ‡ ā¤ļāĨ‹ā¤§ā¤ž", "search_filter_people_title": "⤞āĨ‹ā¤• ⤍ā¤ŋā¤ĩā¤Ąā¤ž", "search_for": "ā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ā¤ļāĨ‹ā¤§ā¤ž", "search_for_existing_person": "ā¤ĩā¤ŋā¤ĻāĨā¤¯ā¤Žā¤žā¤¨ ā¤ĩāĨā¤¯ā¤•āĨā¤¤āĨ€ ā¤ļāĨ‹ā¤§ā¤ž", @@ -1788,7 +1840,10 @@ "server_offline": "⤏⤰āĨā¤ĩāĨā¤šā¤° ⤑ā¤Ģā¤˛ā¤žā¤‡ā¤¨", "server_online": "⤏⤰āĨā¤ĩāĨā¤šā¤° ā¤‘ā¤¨ā¤˛ā¤žā¤‡ā¤¨", "server_privacy": "⤏⤰āĨā¤ĩāĨā¤šā¤° ⤗āĨ‹ā¤Ē⤍āĨ€ā¤¯ā¤¤ā¤ž", + "server_restarting_description": "ā¤šāĨ‡ ā¤Ēā¤žā¤¨ ā¤ĨāĨ‹ā¤ĄāĨā¤¯ā¤žā¤š ā¤ĩāĨ‡ā¤ŗā¤žā¤¤ ⤰ā¤ŋā¤ĢāĨā¤°āĨ‡ā¤ļ ā¤šāĨ‹ā¤ˆā¤˛.", + "server_restarting_title": "⤏⤰āĨā¤ĩāĨā¤šā¤° ā¤ĒāĨā¤¨āĨā¤šā¤ž ⤏āĨā¤°āĨ‚ ā¤šāĨ‹ā¤¤ ā¤†ā¤šāĨ‡", "server_stats": "⤏⤰āĨā¤ĩāĨā¤šā¤° ā¤†ā¤•ā¤ĄāĨ‡ā¤ĩā¤žā¤°āĨ€", + "server_update_available": "⤏⤰āĨā¤ĩāĨā¤šā¤° ⤅ā¤Ēā¤ĄāĨ‡ā¤Ÿ ⤉ā¤Ē⤞ā¤ŦāĨā¤§ ā¤†ā¤šāĨ‡", "server_version": "⤏⤰āĨā¤ĩāĨā¤šā¤° ⤆ā¤ĩāĨƒā¤¤āĨā¤¤āĨ€", "set": "⤏āĨ‡ā¤Ÿ ā¤•ā¤°ā¤ž", "set_as_album_cover": "⤅⤞āĨā¤Ŧā¤Ž ⤕ā¤ĩāĨā¤šā¤° ā¤ŽāĨā¤šā¤ŖāĨ‚⤍ ⤏āĨ‡ā¤Ÿ ā¤•ā¤°ā¤ž", @@ -1817,6 +1872,8 @@ "setting_notifications_subtitle": "⤤āĨā¤Žā¤šāĨ€ ⤏āĨ‚ā¤šā¤¨ā¤ž ā¤ĒāĨā¤°ā¤žā¤§ā¤žā¤¨āĨā¤¯āĨ‡ ā¤¸ā¤Žā¤žā¤¯āĨ‹ā¤œā¤ŋ⤤ ā¤•ā¤°ā¤ž", "setting_notifications_total_progress_subtitle": "ā¤ā¤•āĨ‚⤪ ⤅ā¤Ē⤞āĨ‹ā¤Ą ā¤ĒāĨā¤°ā¤—⤤āĨ€ (ā¤ĒāĨ‚⤰āĨā¤Ŗ/ā¤ā¤•āĨ‚⤪ ā¤†ā¤¯ā¤Ÿā¤Ž)", "setting_notifications_total_progress_title": "ā¤Ēā¤žā¤°āĨā¤ļāĨā¤ĩ⤭āĨ‚ā¤ŽāĨ€ ā¤ŦāĨ…⤕⤅ā¤Ē⤚āĨ€ ā¤ā¤•āĨ‚⤪ ā¤ĒāĨā¤°ā¤—⤤āĨ€ ā¤Ļā¤žā¤–ā¤ĩā¤ž", + "setting_video_viewer_auto_play_subtitle": "ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓ ā¤‰ā¤˜ā¤Ąā¤˛āĨā¤¯ā¤žā¤ĩ⤰ ⤆ā¤ĒāĨ‹ā¤†ā¤Ē ā¤ĒāĨā¤˛āĨ‡ ā¤•ā¤°ā¤ž", + "setting_video_viewer_auto_play_title": "ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓ ā¤‘ā¤ŸāĨ‹ā¤ĒāĨā¤˛āĨ‡", "setting_video_viewer_looping_title": "⤞āĨ‚ā¤Ēā¤ŋ⤂⤗", "setting_video_viewer_original_video_subtitle": "⤏⤰āĨā¤ĩāĨā¤šā¤°ā¤ĩ⤰āĨ‚⤍ ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓ ⤏āĨā¤ŸāĨā¤°ā¤ŋā¤Ž ā¤•ā¤°ā¤¤ā¤žā¤¨ā¤ž ⤟āĨā¤°ā¤žā¤¨āĨā¤¸ā¤•āĨ‹ā¤Ą ⤉ā¤Ē⤞ā¤ŦāĨā¤§ ā¤…ā¤¸ā¤˛ā¤ž ⤤⤰āĨ€ ā¤ŽāĨ‚⤺ ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓ ā¤ĒāĨā¤˛āĨ‡ ā¤•ā¤°ā¤ž. ā¤Ŧā¤Ģ⤰ā¤ŋ⤂⤗ ā¤šāĨ‹ā¤Š ā¤ļ⤕⤤āĨ‡. ⤏āĨā¤Ĩā¤žā¤¨ā¤ŋ⤕⤰āĨ€ā¤¤āĨā¤¯ā¤ž ⤉ā¤Ē⤞ā¤ŦāĨā¤§ ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓ ā¤¯ā¤ž ⤏āĨ‡ā¤Ÿā¤ŋ⤂⤗ā¤Ēā¤žā¤¸āĨ‚⤍ ⤏āĨā¤ĩ⤤⤂⤤āĨā¤°ā¤Ē⤪āĨ‡ ā¤ŽāĨ‚⤺ ⤗āĨā¤Ŗā¤ĩ⤤āĨā¤¤āĨ‡ā¤¤ ā¤ĒāĨā¤˛āĨ‡ ā¤šāĨ‹ā¤¤ā¤žā¤¤.", "setting_video_viewer_original_video_title": "ā¤ŽāĨ‚⤺ ā¤ĩāĨā¤šā¤ŋā¤Ąā¤ŋ⤓ ⤏⤕āĨā¤¤āĨ€ā¤¨āĨ‡ ā¤ĒāĨā¤˛āĨ‡ ā¤•ā¤°ā¤ž", @@ -1908,6 +1965,8 @@ "show_slideshow_transition": "⤏āĨā¤˛ā¤žā¤‡ā¤Ąā¤ļāĨ‹ ⤟āĨā¤°ā¤žā¤‚ā¤ā¤ŋā¤ļ⤍ ā¤Ļā¤žā¤–ā¤ĩā¤ž", "show_supporter_badge": "ā¤¸ā¤Žā¤°āĨā¤Ĩ⤕ ā¤ŦāĨ…ā¤œ", "show_supporter_badge_description": "ā¤¸ā¤Žā¤°āĨā¤Ĩ⤕ ā¤ŦāĨ…ā¤œ ā¤Ļā¤žā¤–ā¤ĩā¤ž", + "show_text_recognition": "⤟āĨ‡ā¤•āĨā¤¸āĨā¤Ÿ ⤓⤺⤖ ā¤Ļā¤žā¤–ā¤ĩā¤ž", + "show_text_search_menu": "⤟āĨ‡ā¤•āĨā¤¸āĨā¤Ÿ ā¤ļāĨ‹ā¤§ ā¤ŽāĨ‡ā¤¨āĨ‚ ā¤Ļā¤žā¤–ā¤ĩā¤ž", "shuffle": "ā¤ļā¤Ģ⤞", "sidebar": "ā¤¸ā¤žā¤‡ā¤Ąā¤Ŧā¤žā¤°", "sidebar_display_description": "ā¤¸ā¤žā¤‡ā¤Ąā¤Ŧā¤žā¤°ā¤Žā¤§āĨā¤¯āĨ‡ ā¤ĻāĨƒā¤ļāĨā¤¯ā¤žā¤šā¤ž ā¤ĻāĨā¤ĩā¤ž ā¤Ļā¤žā¤–ā¤ĩā¤ž", @@ -1938,6 +1997,7 @@ "stacktrace": "⤏āĨā¤ŸāĨ…ā¤•ā¤ŸāĨā¤°āĨ‡ā¤¸", "start": "⤏āĨā¤°āĨ‚ ā¤•ā¤°ā¤ž", "start_date": "⤏āĨā¤°āĨā¤ĩā¤žā¤¤āĨ€ā¤šāĨ€ ā¤¤ā¤žā¤°āĨ€ā¤–", + "start_date_before_end_date": "⤏āĨā¤°āĨā¤ĩā¤žā¤¤āĨ€ā¤šāĨ€ ā¤¤ā¤žā¤°āĨ€ā¤– ā¤ļāĨ‡ā¤ĩ⤟⤚āĨā¤¯ā¤ž ā¤¤ā¤žā¤°ā¤–āĨ‡ā¤šāĨā¤¯ā¤ž ⤆⤧āĨ€ ā¤…ā¤¸ā¤žā¤ĩāĨ€", "state": "⤏āĨā¤Ĩā¤ŋ⤤āĨ€", "status": "⤏āĨā¤ŸāĨ‡ā¤Ÿā¤¸", "stop_casting": "ā¤•ā¤žā¤¸āĨā¤Ÿā¤ŋ⤂⤗ ā¤Ĩā¤žā¤‚ā¤Ŧā¤ĩā¤ž", @@ -1976,6 +2036,7 @@ "tags": "⤟āĨ…⤗āĨā¤¸", "tap_to_run_job": "⤜āĨ‰ā¤Ŧ ā¤šā¤žā¤˛ā¤ĩ⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ⤟āĨ…ā¤Ē ā¤•ā¤°ā¤ž", "template": "⤟āĨ‡ā¤ŽāĨā¤Ē⤞āĨ‡ā¤Ÿ", + "text_recognition": "ā¤Žā¤œā¤•āĨ‚⤰ ⤓⤺⤖", "theme": "ā¤ĨāĨ€ā¤Ž", "theme_selection": "ā¤ĨāĨ€ā¤Ž ⤍ā¤ŋā¤ĩā¤Ą", "theme_selection_description": "ā¤ŦāĨā¤°ā¤žā¤‰ā¤ā¤°ā¤šāĨā¤¯ā¤ž ⤏ā¤ŋ⤏āĨā¤Ÿā¤Ž ā¤Ē⤏⤂⤤āĨ€ā¤¨āĨā¤¸ā¤žā¤° ā¤ĨāĨ€ā¤Ž ⤆ā¤ĒāĨ‹ā¤†ā¤Ē ā¤˛ā¤žā¤‡ā¤Ÿ/ā¤Ąā¤žā¤°āĨā¤• ā¤•ā¤°ā¤ž", @@ -1994,7 +2055,9 @@ "theme_setting_three_stage_loading_title": "ā¤ĨāĨā¤°āĨ€-⤏āĨā¤ŸāĨ‡ā¤œ ⤞āĨ‹ā¤Ąā¤ŋ⤂⤗ ⤏āĨā¤°āĨ‚ ā¤•ā¤°ā¤ž", "they_will_be_merged_together": "⤤āĨ‡ ā¤ā¤•ā¤¤āĨā¤° ā¤ĩā¤ŋ⤞āĨ€ā¤¨ ⤕āĨ‡ā¤˛āĨ‡ ā¤œā¤žā¤¤āĨ€ā¤˛", "third_party_resources": "⤤āĨƒā¤¤āĨ€ā¤¯-ā¤Ē⤕āĨā¤ˇ ā¤¸ā¤‚ā¤¸ā¤žā¤§ā¤¨āĨ‡", + "time": "ā¤ĩāĨ‡ā¤ŗ", "time_based_memories": "ā¤ĩāĨ‡ā¤ŗ-ā¤†ā¤§ā¤žā¤°ā¤ŋ⤤ ā¤ŽāĨ‡ā¤Žā¤°āĨ€ā¤œ", + "time_based_memories_duration": "ā¤ĒāĨā¤°ā¤¤āĨā¤¯āĨ‡ā¤• ā¤ĒāĨā¤°ā¤¤ā¤ŋā¤Žā¤ž ā¤Ļā¤žā¤–ā¤ĩ⤪āĨā¤¯ā¤žā¤¸ā¤žā¤ āĨ€ ā¤˛ā¤žā¤—ā¤Ŗā¤žā¤ąāĨā¤¯ā¤ž ⤏āĨ‡ā¤•⤂ā¤Ļā¤žā¤‚ā¤šāĨ€ ⤏⤂⤖āĨā¤¯ā¤žāĨ¤", "timeline": "ā¤Ÿā¤žā¤‡ā¤Žā¤˛ā¤žā¤‡ā¤¨", "timezone": "ā¤ĩāĨ‡ā¤ŗā¤•āĨā¤ˇāĨ‡ā¤¤āĨā¤°", "to_archive": "⤆⤰āĨā¤•ā¤žā¤‡ā¤ĩāĨā¤š ā¤•ā¤°ā¤ž", @@ -2026,6 +2089,7 @@ "troubleshoot": "ā¤¸ā¤Žā¤¸āĨā¤¯ā¤ž ⤍ā¤ŋā¤ĩā¤žā¤°ā¤Ŗ", "type": "ā¤ĒāĨā¤°ā¤•ā¤žā¤°", "unable_to_change_pin_code": "PIN ⤕āĨ‹ā¤Ą ā¤Ŧā¤Ļā¤˛ā¤¤ā¤ž ⤝āĨ‡ā¤¤ ā¤¨ā¤žā¤šāĨ€", + "unable_to_check_version": "āĨ˛ā¤Ē ⤕ā¤ŋ⤂ā¤ĩā¤ž ⤏⤰āĨā¤ĩāĨā¤šā¤°ā¤šāĨ€ ⤆ā¤ĩāĨƒā¤¤āĨā¤¤āĨ€ ⤤ā¤Ēā¤žā¤¸ā¤¤ā¤ž ⤝āĨ‡ā¤¤ ā¤¨ā¤žā¤šāĨ€", "unable_to_setup_pin_code": "PIN ⤕āĨ‹ā¤Ą ⤏āĨ‡ā¤Ÿ ⤕⤰āĨ‚ ā¤ļ⤕⤤ ā¤¨ā¤žā¤šāĨ€", "unarchive": "⤅⤍⤆⤰āĨā¤•ā¤žā¤‡ā¤ĩāĨā¤š ā¤•ā¤°ā¤ž", "unarchive_action_prompt": "{count} ⤆⤰āĨā¤•ā¤žā¤‡ā¤ĩāĨā¤šā¤Žā¤§āĨ‚⤍ ā¤•ā¤žā¤ĸ⤞āĨ‡", @@ -2134,10 +2198,13 @@ "welcome": "⤏āĨā¤ĩā¤žā¤—ā¤¤ ā¤†ā¤šāĨ‡", "welcome_to_immich": "Immich ā¤Žā¤§āĨā¤¯āĨ‡ ⤆ā¤Ē⤞āĨ‡ ⤏āĨā¤ĩā¤žā¤—ā¤¤ ā¤†ā¤šāĨ‡", "wifi_name": "ā¤ĩā¤žā¤¯-ā¤Ģā¤žā¤¯ā¤šāĨ‡ ā¤¨ā¤žā¤ĩ", + "workflow": "ā¤•ā¤žā¤°āĨā¤¯ā¤ĒāĨā¤°ā¤ĩā¤žā¤š", "wrong_pin_code": "⤅ā¤ĩāĨˆā¤§ ā¤Ēā¤ŋ⤍ ⤕āĨ‹ā¤Ą", "year": "ā¤ĩ⤰āĨā¤ˇ", + "years_ago": "{years, plural, one {# ā¤ĩ⤰āĨā¤ˇā¤žā¤ĒāĨ‚⤰āĨā¤ĩāĨ€} other {# ā¤ĩ⤰āĨā¤ˇā¤žā¤‚ā¤ĒāĨ‚⤰āĨā¤ĩāĨ€}}", "yes": "ā¤šāĨ‹", "you_dont_have_any_shared_links": "⤆ā¤Ē⤞āĨā¤¯ā¤žā¤•ā¤ĄāĨ‡ ⤕āĨ‹ā¤Ŗā¤¤āĨ‡ā¤šāĨ€ ā¤¸ā¤žā¤Žā¤žā¤¯ā¤ŋ⤕ ā¤ĻāĨā¤ĩāĨ‡ ā¤¨ā¤žā¤šāĨ€ā¤¤", + "your_wifi_name": "⤤āĨā¤Žā¤šāĨā¤¯ā¤ž Wi-Fi ⤚āĨ‡ ā¤¨ā¤žā¤ĩ", "zoom_image": "ā¤ĒāĨā¤°ā¤¤ā¤ŋā¤Žā¤ž ā¤āĨ‚ā¤Ž ā¤•ā¤°ā¤ž", "zoom_to_bounds": "⤏āĨ€ā¤ŽāĨ‡ā¤Ē⤰āĨā¤¯ā¤‚⤤ ā¤āĨ‚ā¤Ž ā¤•ā¤°ā¤ž" } diff --git a/i18n/ms.json b/i18n/ms.json index 0491e3953c..8af92f9c69 100644 --- a/i18n/ms.json +++ b/i18n/ms.json @@ -27,9 +27,13 @@ "add_to_album": "Tambah ke album", "add_to_album_bottom_sheet_added": "Dimasukkan ke {album}", "add_to_album_bottom_sheet_already_exists": "Sudah ada di {album}", + "add_to_album_bottom_sheet_some_local_assets": "Sesetengah aset lokal tidak ditambahkan pada album", + "add_to_album_toggle": "Togol pilihan untuk {album}", "add_to_albums": "Tambah pada album", "add_to_albums_count": "Tambah pada album ({count})", + "add_to_bottom_bar": "Tambah ke", "add_to_shared_album": "Tambah ke album yang dikongsi", + "add_upload_to_stack": "Tambah muat naik ke timbunan", "add_url": "Tambah URL", "added_to_archive": "Tambah ke arkib", "added_to_favorites": "Ditambah ke kegemaran", @@ -66,7 +70,6 @@ "disable_login": "Lumpuhkan fungsi log masuk", "duplicate_detection_job_description": "Jalankan pembelajaran mesin pada aset untuk mengesan imej yang serupa. Bergantung pada Carian Pintar", "exclusion_pattern_description": "Corak pengecualian membolehkan anda mengabaikan fail dan folder semasa mengimbas pustaka anda. Ini berguna jika anda mempunyai folder yang mengandungi fail yang anda tidak mahu import, seperti fail RAW.", - "external_library_management": "Pengurusan Perpustakaan Luar", "face_detection": "Pengesanan wajah", "face_detection_description": "Kesan wajah dalam aset menggunakan pembelajaran mesin. Untuk video, hanya lakaran kecil dipertimbangkan. \"Segar Semula\" memproses semula semua aset. \"Tetapkan Semula\" juga mengosongkan semua data wajah semasa. \"Hilang\" baris gilir aset yang belum diproses lagi. Wajah yang dikesan akan beratur untuk Pengecaman Wajah selepas Pengesanan Wajah selesai, menghimpunkannya kepada orang sedia ada atau baharu.", "facial_recognition_job_description": "Kumpulan wajah yang dikesan ke dalam orang. Langkah ini dijalankan selepas Pengesanan Wajah selesai. \"Tetapkan semula\" mengelompokkan semula semua wajah. \"Hilang\" jalankan proses pada wajah yang tidak mempunyai orang yang ditetapkan.", @@ -99,7 +102,6 @@ "job_not_concurrency_safe": "Konkurensi tugas ini tidak selamat.", "job_settings": "Tetapan Tugas", "job_settings_description": "Urus konkurensi tugas", - "job_status": "Status Tugasan", "jobs_delayed": "{jobCount, plural, other {# tertangguh}}", "jobs_failed": "{jobCount, plural, other {# gagal}}", "library_created": "Pustaka dicipta: {library}", @@ -365,7 +367,6 @@ "user_restore_scheduled_removal": "Pulihkan pengguna – pemadaman dijadualkan pada {date, date, long}", "user_settings": "Tetapan Pengguna", "user_settings_description": "Urus tetapan pengguna", - "user_successfully_removed": "Pengguna {email} telah berjaya dipadam.", "version_check_enabled_description": "Dayakan semakan versi", "version_check_implications": "Ciri semakan versi bergantung kepada komunikasi berkala dengan github.com", "version_check_settings": "Semakan Versi", @@ -434,6 +435,11 @@ "downloading": "Memuat turun", "search_by_description": "Carian secara huraian", "search_by_description_example": "Hari mendaki di Sapa", + "text_recognition": "Pengecaman teks", + "theme": "Tema", + "theme_selection": "Pemilihan tema", + "theme_selection_description": "Tetapkan tema terang atau gelap secara automatik berdasarkan keutamaan sistem pada pelayar anda", + "theme_setting_asset_list_tiles_per_row_title": "Bilangan aset per lajar {count}", "timeline": "Garis masa", "total": "Jumlah", "user_usage_stats": "Statistik penggunaan akaun", diff --git a/i18n/nb_NO.json b/i18n/nb_NO.json index 4476f905d3..0c566fbfa7 100644 --- a/i18n/nb_NO.json +++ b/i18n/nb_NO.json @@ -7,6 +7,7 @@ "action_common_update": "Oppdater", "actions": "Handlinger", "active": "Aktiv", + "active_count": "Aktiv: {count}", "activity": "Aktivitet", "activity_changed": "Aktiviteten er {enabled, select, true {aktivert} other {deaktivert}}", "add": "Legg til", @@ -67,6 +68,7 @@ "confirm_reprocess_all_faces": "Vil du virkelig behandle alle ansikter pÃĨ nytt? Dette vil ogsÃĨ fjerne navngitte personer.", "confirm_user_password_reset": "Vil du virkelig tilbakestille passordet til {user}?", "confirm_user_pin_code_reset": "Vil du virkelig tilbakestille PIN-koden til {user} ?", + "copy_config_to_clipboard_description": "Kopier nÃĨvÃĻrende systemkonfigurasjon som ett JSON objekt til utklippsmenyen", "create_job": "Lag jobb", "cron_expression": "Cron uttrykk", "cron_expression_description": "Still inn skanneintervallet med cron-formatet. For mer informasjon henvises til f.eks. Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "Deaktiver innlogging", "duplicate_detection_job_description": "Kjør maskinlÃĻring pÃĨ filer for ÃĨ oppdage lignende bilder. Krever bruk av Smart Search", "exclusion_pattern_description": "Ekskluderingsmønstre lar deg ignorere filer og mapper nÃĨr du skanner biblioteket ditt. Dette er nyttig hvis du har mapper som inneholder filer du ikke vil importere, for eksempel RAW-filer.", - "external_library_management": "Administrasjon av eksterne biblioteker", + "export_config_as_json_description": "Last ned nÃĨvÃĻrende systemkonfigurasjon som en JSON fil", + "external_libraries_page_description": "Administrering for eksterne bibliotek", "face_detection": "Ansiktsgjenkjennelse", "face_detection_description": "Finn ansikter i bilder ved hjelp av maskinlÃĻring. For videoer brukes bare miniatyrbildet. \"Alle\" gÃĨr gjennom alle bilder (igjen). \"Tilbakestill\" fjerner all gjeldende ansiktsdata. \"Manglende\" legger til filer som ikke har blitt behandlet enda i køen. Oppdagede ansikter vil blir sendt til ansiktsgjenkjenning, og koblet til eksisterende eller nye personer.", "facial_recognition_job_description": "Kobler oppdagede ansikt til personer. Dette utføres etter at ansiktssøk er fullført. \"Tilbakestill\" (om-)grupperer alle ansikt pÃĨ nytt. \"Missing\" stiller opp ansikt som ikke har blitt tilordnet en person ennÃĨ.", @@ -102,17 +105,20 @@ "image_thumbnail_description": "SmÃĨ miniatyrbilder med strippet metadata, brukt nÃĨr du ser pÃĨ grupper av bilder som hovedtidslinjen", "image_thumbnail_quality_description": "Miniatyrbildekvalitet fra 1-100. Høyere er bedre, men produserer større filer og kan redusere appens respons.", "image_thumbnail_title": "Miniatyrbilde oppsett", + "import_config_from_json_description": "Importer systemkonfigurasjon ved ÃĨ laste opp en JSON konfigurasjonsfil", "job_concurrency": "{job} samtidighet", "job_created": "Oppgave laget", "job_not_concurrency_safe": "Denne jobben er ikke samtidlighet sikker.", "job_settings": "Jobbinnstillinger", "job_settings_description": "Administrer parallellkjøring for jobber", - "job_status": "Jobbstatus", "jobs_delayed": "{jobCount, plural, other {# forsinket}}", "jobs_failed": "{jobCount, plural, other {# mislyktes}}", + "jobs_over_time": "Jobber som kjører over tiden", "library_created": "Opprettet bibliotek: {library}", "library_deleted": "Bibliotek slettet", "library_details": "Bibliotekdetaljer", + "library_folder_description": "Angi en mappe som skal importeres. Denne mappen, inkludert undermapper, vil bli skannet for bilder og videoer.", + "library_remove_exclusion_pattern_prompt": "Er du sikker pÃĨ at du vil fjerne dette ekskluderingsmønsteret?", "library_remove_folder_prompt": "Er du sikker pÃĨ at du vil fjerne denne import-mappen?", "library_scanning": "Periodisk skanning", "library_scanning_description": "Konfigurer periodisk skanning av bibliotek", @@ -176,9 +182,11 @@ "machine_learning_smart_search_enabled_description": "Hvis deaktivert, vil bilder ikke bli enkodet for smart søk.", "machine_learning_url_description": "URL til maskinlÃĻrings-serveren. Hvis mer enn en URL er lagt inn, hver server vill bli forsøkt en om gangen frem til en svarer suksessfullt, i rekkefølge fra først til sist. Servere som ikke svarer vil midlertidig bli oversett frem til dem svarer igjen.", "maintenance_settings": "Vedlikehold", - "maintenance_settings_description": "Sett Immich i vedlikeholds modus.", + "maintenance_settings_description": "Sett Immich i vedlikeholdsmodus.", "maintenance_start": "Start vedlikeholdsmodus", + "maintenance_start_error": "Kunne ikke starte vedlikeholdsmodus.", "manage_concurrency": "Administrer samtidighet", + "manage_concurrency_description": "Naviger til jobb-siden for ÃĨ justere samtidige jobber", "manage_log_settings": "Administrer logginnstillinger", "map_dark_style": "Mørk stil", "map_enable_description": "Aktiver kartfunksjoner", @@ -268,10 +276,14 @@ "password_settings_description": "Administrer innstillinger for passordinnlogging", "paths_validated_successfully": "Alle filstier validert uten problemer", "person_cleanup_job": "Person opprydding", + "queue_details": "Kø-detaljer", + "queues": "Jobbkø", + "queues_page_description": "Administrer jobbkø-siden", "quota_size_gib": "Kvote (GiB)", "refreshing_all_libraries": "Oppdaterer alle biblioteker", "registration": "Administrator registrering", "registration_description": "Siden du er den første brukeren pÃĨ systemet, vil du bli utnevnt til administrator og ha ansvar for administrative oppgaver. Du vil ogsÃĨ opprette eventuelle nye brukere.", + "remove_failed_jobs": "Fjern feilede jobber", "require_password_change_on_login": "Krev at brukeren endrer passord ved første pÃĨlogging", "reset_settings_to_default": "Tilbakestill innstillinger til standard", "reset_settings_to_recent_saved": "Tilbakestill innstillingene til de nylig lagrede innstillingene", @@ -284,8 +296,10 @@ "server_public_users_description": "Alle brukere (navn og epost) blir vist nÃĨr en bruker blir lagt til et delt album. NÃĨr deaktivert, vil brukerne bare bli synlig for administratorer.", "server_settings": "Serverinstillinger", "server_settings_description": "Administrer serverinnstillinger", + "server_stats_page_description": "Administrer serverstatistikk", "server_welcome_message": "Velkomstmelding", "server_welcome_message_description": "En melding som vises pÃĨ innloggingssiden.", + "settings_page_description": "Administrer innatillinger", "sidecar_job": "Sidecar-metadata", "sidecar_job_description": "Oppdag eller synkroniser sidecar-metadata fra filsystemet", "slideshow_duration_description": "Antall sekunder for ÃĨ vise hvert bilde", @@ -404,7 +418,8 @@ "user_restore_scheduled_removal": "Gjenopprett bruker - planlagt sletting den {date, date, long}", "user_settings": "Brukerinnstillinger", "user_settings_description": "Administrer brukerinnstillinger", - "user_successfully_removed": "Brukeren {email} er nÃĨ fjernet.", + "user_successfully_removed": "Bruker {email} har blitt fjernet.", + "users_page_description": "Administrer brukere", "version_check_enabled_description": "Aktiver periodiske forespørsler til GitHub for ÃĨ sjekke etter nye utgivelser", "version_check_implications": "Versjonssjekkfunksjonen baserer seg pÃĨ periodisk kommunikasjon med github.com", "version_check_settings": "Versjonssjekk", @@ -435,6 +450,7 @@ "age_months": "Alder {months, plural, one {# mÃĨned} other {# mÃĨneder}}", "age_year_months": "Alder 1 ÃĨr, {months, plural, one {# mÃĨned} other {# mÃĨneder}}", "age_years": "{years, plural, other {Alder #}}", + "album": "Album", "album_added": "Album opprettet", "album_added_notification_setting_description": "Motta en e-postvarsling nÃĨr du legges til i et delt album", "album_cover_updated": "Albumomslag oppdatert", @@ -724,6 +740,7 @@ "collapse_all": "Kollaps alt", "color": "Farge", "color_theme": "Fargetema", + "command": "Kommando", "comment_deleted": "Kommentar slettet", "comment_options": "Kommentaralternativer", "comments_and_likes": "Kommentarer & likes", @@ -972,6 +989,7 @@ "failed_to_unstack_assets": "Mislyktes med ÃĨ avstable bilder", "failed_to_update_notification_status": "Kunne ikke oppdatere varslingsstatusen", "incorrect_email_or_password": "Feil epost eller passord", + "library_folder_already_exists": "Importstien eksisterer allerede.", "paths_validation_failed": "{paths, plural, one {# sti} other {# sti}} mislyktes validering", "profile_picture_transparent_pixels": "Profil bilde kan ikke ha gjennomsiktige piksler. Vennligst zoom inn og/eller flytt bilde.", "quota_higher_than_disk_size": "Du har satt kvoten større enn diskstørrelsen", @@ -1056,6 +1074,7 @@ "unable_to_update_user": "Kunne ikke oppdatere bruker", "unable_to_upload_file": "Kunne ikke laste opp fil" }, + "exclusion_pattern": "Ekskluderingsmønster", "exif": "EXIF", "exif_bottom_sheet_description": "Legg til beskrivelse ...", "exif_bottom_sheet_description_error": "Feil ved oppdatering av beskrivelsen", @@ -1086,6 +1105,7 @@ "external_network_sheet_info": "NÃĨr du ikke er pÃĨ det foretrukne Wi-Fi-nettverket, vil appen koble seg til serveren via den første av URL-ene nedenfor den kan nÃĨ, fra topp til bunn", "face_unassigned": "Ikke tilordnet", "failed": "Mislyktes", + "failed_count": "Feilede: {count}", "failed_to_authenticate": "Kunne ikke autentisere", "failed_to_load_assets": "Mislyktes med ÃĨ laste fil", "failed_to_load_folder": "Kunne ikke laste inn mappe", @@ -1115,6 +1135,7 @@ "folders_feature_description": "Utforsker mappe visning for bilder og videoer pÃĨ fil systemet", "forgot_pin_code_question": "Glemt PIN-koden?", "forward": "Fremover", + "full_path": "Full sti: {path}", "gcast_enabled": "Google Cast", "gcast_enabled_description": "Denne funksjonen laster eksterne ressurser fra Google for ÃĨ fungere.", "general": "Generelt", @@ -1151,6 +1172,7 @@ "hide_named_person": "Skjul {name}", "hide_password": "Skjul passord", "hide_person": "Skjul person", + "hide_text_recognition": "Skjul tekstgjenkjenning", "hide_unnamed_people": "Skjul mennesker uten navn", "home_page_add_to_album_conflicts": "Lagt til {added} elementer til album {album}. {failed} elementer er allerede i albumet.", "home_page_add_to_album_err_local": "Kunne ikke legge til lokale elementer til album enda, hopper over", @@ -1234,7 +1256,7 @@ "language_setting_description": "Velg ditt foretrukne sprÃĨk", "large_files": "Store Filer", "last": "Siste", - "last_months": "{count, plural, one {sist mÃĨned} other {siste # mÃĨned}}", + "last_months": "{count, plural, one {Sist mÃĨned} other {Siste # mÃĨneder}}", "last_seen": "Sist sett", "latest_version": "Siste versjon", "latitude": "Breddegrad", @@ -1244,6 +1266,8 @@ "let_others_respond": "La andre respondere", "level": "NivÃĨ", "library": "Bibliotek", + "library_add_folder": "Legg til mappe", + "library_edit_folder": "Endre mappe", "library_options": "Bibliotekalternativer", "library_page_device_albums": "Album pÃĨ enheten", "library_page_new_album": "Nytt album", @@ -1315,6 +1339,11 @@ "loop_videos_description": "Aktiver for ÃĨ automatisk loope en video i detaljeviseren.", "main_branch_warning": "Du bruker en utviklingsversjon; vi anbefaler pÃĨ det sterkeste og bruke en utgitt versjon!", "main_menu": "Hovedmeny", + "maintenance_description": "Immich er i Vedlikeholdsmodus.", + "maintenance_end": "Avslutt vedlikeholdsmodus", + "maintenance_end_error": "Kunne ikke avslutte vedlikeholdsmodus.", + "maintenance_logged_in_as": "Logged inn som {user}", + "maintenance_title": "Midlertidig utilgjengelig", "make": "Merke", "manage_geolocation": "Administrer plassering", "manage_media_access_rationale": "Denne tillatelsen er nødvendig for riktig hÃĨndtering av flytting av objekter til papirkurven og gjenoppretting av dem fra den.", @@ -1384,6 +1413,7 @@ "more": "Mer", "move": "Flytt", "move_off_locked_folder": "Flytt ut av lÃĨst mappe", + "move_to": "Flytt til", "move_to_lock_folder_action_prompt": "{count} lagt til i lÃĨst mappe", "move_to_locked_folder": "Flytt til lÃĨst mappe", "move_to_locked_folder_confirmation": "Disse bildene og videoene vil bli fjernet fra alle album, og kun tilgjengelige via den lÃĨste mappen", @@ -1436,6 +1466,7 @@ "no_favorites_message": "Legg til favoritter for ÃĨ finne dine beste bilder og videoer raskt", "no_libraries_message": "Opprett et eksternt bibliotek for ÃĨ se bildene og videoene dine", "no_local_assets_found": "Ingen lokale elementer funnet med denne sjekksummen", + "no_location_set": "Ingen lokasjon satt", "no_locked_photos_message": "Bilder og videoer i den lÃĨste mappen er skjult og vil ikke vises nÃĨr du blar i biblioteket.", "no_name": "Ingen navn", "no_notifications": "Ingen varsler", @@ -1495,6 +1526,7 @@ "other_variables": "Andre variabler", "owned": "Dine", "owner": "Eier", + "page": "Side", "partner": "Partner", "partner_can_access": "{partner} har tilgang", "partner_can_access_assets": "Alle bildene og videoene dine unntatt de i arkivert og slettet tilstand", @@ -1826,6 +1858,8 @@ "server_offline": "Server frakoblet", "server_online": "Server tilkoblet", "server_privacy": "Server personvern", + "server_restarting_description": "Siden vil oppdateres øyeblikkelig.", + "server_restarting_title": "Server restarter", "server_stats": "Serverstatistikk", "server_update_available": "Serveroppdatering er tilgjengelig", "server_version": "Server Versjon", @@ -1949,6 +1983,7 @@ "show_slideshow_transition": "Vis overgang til lysbildefremvisning", "show_supporter_badge": "Supportermerke", "show_supporter_badge_description": "Vis et supportermerke", + "show_text_recognition": "Vis tekstgjenkjenning", "show_text_search_menu": "Vis tekstsøk meny", "shuffle": "Bland", "sidebar": "Sidefelt", @@ -2019,6 +2054,7 @@ "tags": "Merker", "tap_to_run_job": "Trykk for ÃĨ kjøre jobben", "template": "Mal", + "text_recognition": "Tekstgjenkjenning", "theme": "Tema", "theme_selection": "Temavalg", "theme_selection_description": "Automatisk sett tema til lys eller mørk basert pÃĨ nettleserens systeminnstilling", @@ -2051,6 +2087,7 @@ "to_select": "for valg", "to_trash": "Papirkurv", "toggle_settings": "Bytt innstillinger", + "toggle_theme_description": "Aktiver tema", "total": "Total", "total_usage": "Totalt brukt", "trash": "Papirkurv", @@ -2159,6 +2196,7 @@ "view_album": "Vis album", "view_all": "Vis alle", "view_all_users": "Vis alle brukere", + "view_asset_owners": "Vis objekteiere", "view_details": "Vis detaljer", "view_in_timeline": "Vis i tidslinje", "view_link": "Vis lenke", @@ -2175,11 +2213,13 @@ "viewer_unstack": "avstable", "visibility_changed": "Synlighet endret for {count, plural, one {# person} other {# people}}", "waiting": "Venter", + "waiting_count": "Ventende: {count}", "warning": "Advarsel", "week": "Uke", "welcome": "Velkommen", "welcome_to_immich": "Velkommen til Immich", "wifi_name": "Wi-Fi-navn", + "workflow": "Arbeidsflyt", "wrong_pin_code": "Feil PIN-kode", "year": "År", "years_ago": "{years, plural, one {# ÃĨr} other {# ÃĨr}} siden", diff --git a/i18n/nl.json b/i18n/nl.json index 12d99f18da..48ad3ddbd2 100644 --- a/i18n/nl.json +++ b/i18n/nl.json @@ -1,20 +1,21 @@ { "about": "Over", "account": "Account", - "account_settings": "Accountinstellingen", + "account_settings": "Account­instellingen", "acknowledge": "Begrepen", "action": "Actie", "action_common_update": "Bijwerken", "actions": "Acties", "active": "Actief", + "active_count": "Actief: {count}", "activity": "Activiteit", "activity_changed": "Activiteit is {enabled, select, true {ingeschakeld} other {uitgeschakeld}}", "add": "Toevoegen", "add_a_description": "Beschrijving toevoegen", - "add_a_location": "Een locatie toevoegen", + "add_a_location": "Locatie toevoegen", "add_a_name": "Naam toevoegen", "add_a_title": "Titel toevoegen", - "add_birthday": "Voeg een verjaardag toe", + "add_birthday": "Verjaardag toevoegen", "add_endpoint": "Server toevoegen", "add_exclusion_pattern": "Uitsluitingspatroon toevoegen", "add_location": "Locatie toevoegen", @@ -67,6 +68,7 @@ "confirm_reprocess_all_faces": "Weet je zeker dat je alle gezichten opnieuw wilt verwerken? Hiermee worden ook alle mensen gewist.", "confirm_user_password_reset": "Weet je zeker dat je het wachtwoord van {user} wilt resetten?", "confirm_user_pin_code_reset": "Weet je zeker dat je de pincode van {user} wilt resetten?", + "copy_config_to_clipboard_description": "Kopieer de huidige systeem­configuratie als een JSON-object naar het klembord", "create_job": "Taak maken", "cron_expression": "Cron expressie", "cron_expression_description": "Stel het scaninterval in met het cron-formaat. Voor meer informatie kun je bijvoorbeeld kijken naar Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "Inloggen uitschakelen", "duplicate_detection_job_description": "Machine learning uitvoeren op items om vergelijkbare items te vinden. Dit is gebaseerd op Slim Zoeken", "exclusion_pattern_description": "Met uitsluitingspatronen kun je bestanden en mappen negeren bij het scannen van je bibliotheek. Dit is handig als je mappen hebt met bestanden die je niet wilt importeren, zoals RAW bestanden.", - "external_library_management": "Externe bibliotheek beheren", + "export_config_as_json_description": "Download de huidige systeem­configuratie als een JSON-bestand", + "external_libraries_page_description": "Externe-bibliotheek­pagina voor administrators", "face_detection": "Gezichtsdetectie", "face_detection_description": "Detecteer gezichten in items met behulp van machine learning. Voor video's wordt alleen de thumbnail gebruikt. \"Vernieuwen\" verwerkt alle items (opnieuw). \"Reset\" verwijdert daarnaast alle huidige gezichtgegevens. \"Missend\" plaatst items in de wachtrij die nog niet zijn verwerkt. Gedetecteerde gezichten worden in de wachtrij geplaatst voor gezichtsherkenning nadat gezichtsdetectie is voltooid, waarbij ze worden gegroepeerd in bestaande of nieuwe mensen.", "facial_recognition_job_description": "Groepeer gedetecteerde gezichten tot mensen. Deze stap wordt uitgevoerd nadat gezichtsdetectie is voltooid. \"Resetten\" (her-)clustert alle gezichten. \"Missend\" plaatst gezichten in de wachtrij waaraan geen persoon is toegewezen.", @@ -102,14 +105,15 @@ "image_thumbnail_description": "Kleine thumbnail zonder metadata, gebruikt voor het bekijken van groepen met foto's zoals de tijdlijn", "image_thumbnail_quality_description": "Thumbnail kwaliteit van 1-100. Hoger is beter, maar produceert grotere bestanden en kan de app vertragen.", "image_thumbnail_title": "Thumbnailinstellingen", + "import_config_from_json_description": "Importeer de systeem­configuratie door een JSON-configuratie­bestand te uploaden", "job_concurrency": "{job} gelijktijdigheid", "job_created": "Taak aangemaakt", "job_not_concurrency_safe": "Deze taak kan niet parallel worden uitgevoerd.", "job_settings": "Achtergrondtaak-instellingen", "job_settings_description": "Beheer aantal gelijktijdige taken", - "job_status": "Taakstatus", "jobs_delayed": "{jobCount, plural, other {# vertraagd}}", "jobs_failed": "{jobCount, plural, other {# mislukt}}", + "jobs_over_time": "Taken in de loop der tÄŗd", "library_created": "Bibliotheek aangemaakt: {library}", "library_deleted": "Bibliotheek verwijderd", "library_details": "Bibliotheek details", @@ -182,6 +186,7 @@ "maintenance_start": "Onderhouds­modus starten", "maintenance_start_error": "Onderhouds­modus starten mislukt.", "manage_concurrency": "Beheer gelijktijdigheid", + "manage_concurrency_description": "Navigeer naar de taken­pagina om de gelijk­tÄŗdigheid van taken te beheren", "manage_log_settings": "Beheer logboekinstellingen", "map_dark_style": "Donkere stijl", "map_enable_description": "Kaartfuncties inschakelen", @@ -271,10 +276,14 @@ "password_settings_description": "Beheer instellingen voor inloggen met wachtwoord", "paths_validated_successfully": "Alle paden succesvol gevalideerd", "person_cleanup_job": "Persoon opschoning", + "queue_details": "WachtrÄŗÂ­details", + "queues": "Taken­wachtrÄŗen", + "queues_page_description": "Admin takenlijst pagina", "quota_size_gib": "Opslaglimiet (GiB)", "refreshing_all_libraries": "Alle bibliotheken aan het vernieuwen", "registration": "Beheerdersregistratie", "registration_description": "Omdat je de eerste gebruiker in het systeem bent, word je toegewezen als beheerder en ben je verantwoordelijk voor administratieve taken. Extra gebruikers kunnen door jou worden aangemaakt.", + "remove_failed_jobs": "Verwijder mislukte taken", "require_password_change_on_login": "Vereisen dat de gebruiker het wachtwoord wijzigt bij de eerste keer inloggen", "reset_settings_to_default": "Instellingen teruggezet naar standaard", "reset_settings_to_recent_saved": "Instellingen zijn gereset naar de recent opgeslagen instellingen", @@ -287,8 +296,10 @@ "server_public_users_description": "Alle gebruikers (met naam en e-mailadres) worden weergegeven wanneer een gebruiker wordt toegevoegd aan gedeelde albums. Wanneer uitgeschakeld, is de gebruikerslijst alleen beschikbaar voor beheerders.", "server_settings": "Serverinstellingen", "server_settings_description": "Beheer serverinstellingen", + "server_stats_page_description": "Serverstatistieken­pagina voor administrators", "server_welcome_message": "Welkomstbericht", "server_welcome_message_description": "Een bericht dat op de inlogpagina wordt weergegeven.", + "settings_page_description": "Instellingen­pagina voor administrators", "sidecar_job": "Sidecar metagegevens", "sidecar_job_description": "Zoek of synchroniseer sidecar metadata van het bestandssysteem", "slideshow_duration_description": "Aantal seconden dat iedere afbeelding wordt getoond", @@ -407,7 +418,8 @@ "user_restore_scheduled_removal": "Herstel gebruiker - geplande verwijdering op {date, date, long}", "user_settings": "Gebruikersinstellingen", "user_settings_description": "Gebruikersinstellingen beheren", - "user_successfully_removed": "Gebruiker {email} is succesvol verwijderd.", + "user_successfully_removed": "Gebruiker {email} is succesvol verwÄŗderd.", + "users_page_description": "Gebruikers­pagina voor administrators", "version_check_enabled_description": "Versiecontrole inschakelen", "version_check_implications": "De versiecontrole is afhankelijk van periodieke communicatie met github.com", "version_check_settings": "Versiecontrole", @@ -640,6 +652,7 @@ "backup_options_page_title": "Back-up instellingen", "backup_setting_subtitle": "Beheer achtergrond en voorgrond uploadinstellingen", "backup_settings_subtitle": "Beheer upload instellingen", + "backup_upload_details_page_more_details": "Tik voor meer details", "backward": "Achteruit", "biometric_auth_enabled": "Biometrische authenticatie ingeschakeld", "biometric_locked_out": "Biometrische authenticatie is vergrendeld", @@ -706,6 +719,7 @@ "check_corrupt_asset_backup_button": "Controle uitvoeren", "check_corrupt_asset_backup_description": "Voer deze controle alleen uit via WiFi en nadat alle items zijn geback-upt. De procedure kan een paar minuten duren.", "check_logs": "Controleer logboek", + "checksum": "Controlegetal", "choose_matching_people_to_merge": "Kies overeenkomende mensen om samen te voegen", "city": "Stad", "clear": "Wissen", @@ -728,6 +742,7 @@ "collapse_all": "Alles inklappen", "color": "Kleur", "color_theme": "Kleurenthema", + "command": "Opdracht", "comment_deleted": "Opmerking verwijderd", "comment_options": "Opties voor opmerkingen", "comments_and_likes": "Opmerkingen & likes", @@ -976,7 +991,7 @@ "failed_to_unstack_assets": "Fout bij ontstapelen van items", "failed_to_update_notification_status": "Kon notificatiestatus niet updaten", "incorrect_email_or_password": "Onjuist e-mailadres of wachtwoord", - "library_folder_already_exists": "Dit importpad bestaat al.", + "library_folder_already_exists": "Dit import­pad bestaat al.", "paths_validation_failed": "validatie van {paths, plural, one {# pad} other {# paden}} mislukt", "profile_picture_transparent_pixels": "Profielfoto's kunnen geen transparante pixels bevatten. Zoom in en/of verplaats de afbeelding.", "quota_higher_than_disk_size": "Je hebt een opslaglimiet ingesteld die hoger is dan de schijfgrootte", @@ -1092,6 +1107,7 @@ "external_network_sheet_info": "Als je niet verbonden bent met het opgegeven WiFi-netwerk, maakt de app verbinding met de server via de eerst bereikbare URL in de onderstaande lijst, van boven naar beneden", "face_unassigned": "Niet toegewezen", "failed": "Mislukt", + "failed_count": "Mislukt: {count}", "failed_to_authenticate": "Authenticatie mislukt", "failed_to_load_assets": "Kan items niet laden", "failed_to_load_folder": "Laden van map mislukt", @@ -1121,6 +1137,7 @@ "folders_feature_description": "Bladeren door de mapweergave van de foto's en video's op het bestandssysteem", "forgot_pin_code_question": "Pincode vergeten?", "forward": "Vooruit", + "full_path": "Volledig pad: {path}", "gcast_enabled": "Google Cast", "gcast_enabled_description": "Deze functie gebruikt externe bronnen van Google om te kunnen werken.", "general": "Algemeen", @@ -1151,12 +1168,14 @@ "header_settings_header_name_input": "Header naam", "header_settings_header_value_input": "Header waarde", "headers_settings_tile_title": "Aangepaste proxy headers", + "height": "Hoogte", "hi_user": "Hallo {name} ({email})", "hide_all_people": "Verberg alle mensen", "hide_gallery": "Galerij verbergen", "hide_named_person": "Verberg persoon {name}", "hide_password": "Verberg wachtwoord", "hide_person": "Verberg persoon", + "hide_text_recognition": "Tekst­herkenning verbergen", "hide_unnamed_people": "Verberg mensen zonder naam", "home_page_add_to_album_conflicts": "{added} items toegevoegd aan album {album}. {failed} items staan al in het album.", "home_page_add_to_album_err_local": "Lokale items kunnen nog niet aan albums worden toegevoegd, overslaan", @@ -1272,6 +1291,7 @@ "local": "Lokaal", "local_asset_cast_failed": "Kan geen item casten die nog niet geÃŧpload is naar de server", "local_assets": "Lokale Items", + "local_id": "Lokaal ID", "local_media_summary": "Lokale media samenvatting", "local_network": "Lokaal netwerk", "local_network_sheet_info": "De app maakt verbinding met de server via deze URL wanneer het opgegeven WiFi-netwerk wordt gebruikt", @@ -1450,6 +1470,7 @@ "no_favorites_message": "Voeg favorieten toe om snel je beste foto's en video's te vinden", "no_libraries_message": "Maak een externe bibliotheek om je foto's en video's te bekijken", "no_local_assets_found": "Geen lokale assets gevonden met deze checksum", + "no_location_set": "Geen locatie ingesteld", "no_locked_photos_message": "Foto’s en video’s in de vergrendelde map zijn verborgen en worden niet weergegeven wanneer je door je bibliotheek bladert of zoekt.", "no_name": "Geen naam", "no_notifications": "Geen meldingen", @@ -1476,7 +1497,7 @@ "notifications_setting_description": "Beheer meldingen", "oauth": "OAuth", "obtainium_configurator": "Obtainium instellen", - "obtainium_configurator_instructions": "Met Obtainium kan je de Androidapp direct van de GitHub-releases installeren. Maak een API-sleutel aan en kies een variant om de Obtainium-configuratielink te maken", + "obtainium_configurator_instructions": "Gebruik Obtainium om de Android-app recht­streeks vanuit Immich's GitHub-releases te installeren en bij te werken. Maak een API-sleutel aan en selecteer een variant om je Obtainium-configuratielink te maken", "ocr": "OCR", "official_immich_resources": "OfficiÃĢle Immich bronnen", "offline": "Offline", @@ -1509,6 +1530,7 @@ "other_variables": "Andere variabelen", "owned": "Eigenaar", "owner": "Eigenaar", + "page": "Pagina", "partner": "Partner", "partner_can_access": "{partner} heeft toegang tot", "partner_can_access_assets": "Al je foto's en video's behalve die in het archief of de prullenbak", @@ -1965,6 +1987,7 @@ "show_slideshow_transition": "Diavoorstellingsovergang tonen", "show_supporter_badge": "Supportersbadge", "show_supporter_badge_description": "Toon een supportersbadge", + "show_text_recognition": "Tekst­herkenning tonen", "show_text_search_menu": "Laat tekst zoek menu zien", "shuffle": "Willekeurig", "sidebar": "Zijbalk", @@ -2035,6 +2058,7 @@ "tags": "Tags", "tap_to_run_job": "Klik om job te starten", "template": "Template", + "text_recognition": "Tekst­herkenning", "theme": "Thema", "theme_selection": "Thema selectie", "theme_selection_description": "Stel het thema automatisch in op licht of donker op basis van de systeemvoorkeuren van je browser", @@ -2067,6 +2091,7 @@ "to_select": "naar selecteren", "to_trash": "Prullenbak", "toggle_settings": "Zichtbaarheid instellingen wisselen", + "toggle_theme_description": "Thema omschakelen", "total": "Totaal", "total_usage": "Totaal gebruik", "trash": "Prullenbak", @@ -2175,6 +2200,7 @@ "view_album": "Bekijk album", "view_all": "Bekijk alle", "view_all_users": "Bekijk alle gebruikers", + "view_asset_owners": "Eigenaar van items bekijken", "view_details": "Bekijk details", "view_in_timeline": "Bekijk in tijdlijn", "view_link": "Bekijk link", @@ -2191,10 +2217,12 @@ "viewer_unstack": "Ontstapel", "visibility_changed": "Zichtbaarheid gewijzigd voor {count, plural, one {# persoon} other {# mensen}}", "waiting": "Wachtend", + "waiting_count": "In de wacht: {count}", "warning": "Waarschuwing", "week": "Week", "welcome": "Welkom", "welcome_to_immich": "Welkom bij Immich", + "width": "Breedte", "wifi_name": "WiFi-naam", "workflow": "Workflow", "wrong_pin_code": "Onjuiste pincode", diff --git a/i18n/nn.json b/i18n/nn.json index b9a59c8d78..73a9d02c14 100644 --- a/i18n/nn.json +++ b/i18n/nn.json @@ -70,7 +70,6 @@ "disable_login": "Deaktiver innlogging", "duplicate_detection_job_description": "Kjør maskinlÃĻring pÃĨ filer for ÃĨ oppdage liknande bilete. Krev bruk av Smart Search", "exclusion_pattern_description": "Utelatingsmønster let deg utelate filer og mapper nÃĨr du skannar biblioteket ditt. Det er nyttig om du har mapper som inneheld filer du ikkje ynskjer ÃĨ importere, til dømes RAW-filer.", - "external_library_management": "Handsaming av eksterne bibliotek", "face_detection": "Ansiktssøk", "face_detection_description": "Finn ansikt i bilete ved hjelp av maskinlÃĻring. For videoar vert berre miniatyrbilete bruka. \"Alle\" søkjer (opp att) gjennom alle bilete. \"Tilbakestill\" fjernar all gjeldande ansiktsdata. \"Manglande\" legg filer som ikkje vert behandla til i køa for ansiktssøk. Oppdaga ansikt vert lagt i køa for ansiktsattkjenning, og kopla til eksisterande eller nye personar.", "facial_recognition_job_description": "Koplar attkjende ansikt til personar. Det skjer fyrst nÃĨr anskiktssøkjet er ferdig. \"Tilbakestill\" fjernar alle koplingar til personar, og tilbakestiller ansiktsgrupper. \"Manglande\" legg ansikt som ikkje er oppkopla til i køa.", @@ -103,7 +102,6 @@ "job_not_concurrency_safe": "Kan ikke trygt utføre jobben samstundes.", "job_settings": "Jobbinnstillingar", "job_settings_description": "Handsam samstundes utføring av jobber", - "job_status": "Jobbstatus", "jobs_delayed": "{jobCount, plural, other {# forsinka}}", "jobs_failed": "{jobCount, plural, other {# mislykkast}}", "library_created": "Opprett bibliotek: {library}", diff --git a/i18n/package.json b/i18n/package.json new file mode 100644 index 0000000000..19d78c49b7 --- /dev/null +++ b/i18n/package.json @@ -0,0 +1,13 @@ +{ + "name": "immich-i18n", + "version": "1.0.0", + "private": true, + "scripts": { + "format": "prettier --check .", + "format:fix": "prettier --write ." + }, + "devDependencies": { + "prettier": "^3.7.4", + "prettier-plugin-sort-json": "^4.1.1" + } +} diff --git a/i18n/pl.json b/i18n/pl.json index 443b807115..12828dca83 100644 --- a/i18n/pl.json +++ b/i18n/pl.json @@ -7,6 +7,7 @@ "action_common_update": "Aktualizuj", "actions": "Akcje", "active": "Aktywne", + "active_count": "Aktywne: {count}", "activity": "Aktywność", "activity_changed": "Aktywność jest {enabled, select, true {włączona} other {wyłączona}}", "add": "Dodaj", @@ -67,6 +68,7 @@ "confirm_reprocess_all_faces": "Czy na pewno chcesz ponownie przetworzyć wszystkie twarze? Spowoduje to utratę nazwanych osÃŗb.", "confirm_user_password_reset": "Czy na pewno chcesz zresetować hasło uÅŧytkownika {user}?", "confirm_user_pin_code_reset": "Czy jesteś pewny, Åŧe chcesz zresetować kod pin dla uÅŧytkownika {user}?", + "copy_config_to_clipboard_description": "Skopiuj do schowka bieÅŧącą konfigurację systemu jako obiekt JSON", "create_job": "UtwÃŗrz zadanie", "cron_expression": "WyraÅŧenie Cron", "cron_expression_description": "Ustaw interwał skanowania przy pomocy formatu Cron'a. Po więcej informacji na temat formatu Cron zobacz . Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "Wyłącz logowanie", "duplicate_detection_job_description": "Włącz uczenie maszynowe na zasobie aby wykrywać podobne obrazy. Ta funkcja opiera się na inteligentnym wyszukiwaniu", "exclusion_pattern_description": "Wzory wykluczające pozwalają na ignorowanie plikÃŗw i folderÃŗw podczas skanowania Twojej biblioteki. Są one przydatne na przykład gdy nie chcesz importować zdjęć w formacie RAW.", - "external_library_management": "Zarządzanie Bibliotekami Zewnętrznymi", + "export_config_as_json_description": "Pobierz aktualną konfigurację systemu jako plik JSON", + "external_libraries_page_description": "Strona administracyjna do zarządzania bibliotekami zewnętrznymi", "face_detection": "Wykrywanie twarzy", "face_detection_description": "Wykrywanie twarzy w zasobach uÅŧywając uczenia maszynowego. Twarze w filmach wykryte zostaną tylko jeÅŧeli są widoczne w miniaturze. \"OdświeÅŧ\" ponownie przetwarza wszystkie zasoby. \"Reset\" dodatkowo usuwa wszystkie bieÅŧące dane twarzy. \"Brakujące\" dodaje do kolejki tylko zasoby, ktÃŗre nie zostały jeszcze przetworzone. Wykryte twarze zostaną dodane do kolejki Rozpoznawania Twarzy, aby związać je z istniejącą osobą albo stworzyć nową osobę.", "facial_recognition_job_description": "Grupuj wykryte twarze. Ten krok uruchamiany jest po zakończeniu wykrywania twarzy. „Wszystkie” – ponownie kategoryzuje wszystkie twarze. „Brakujące” – kategoryzuje twarze, do ktÃŗrych nie przypisano osoby.", @@ -102,14 +105,15 @@ "image_thumbnail_description": "Mała miniatura z wyczyszczonymi metadanymi, uÅŧywana podczas przeglądania grup zdjęć, takich jak gÅ‚Ãŗwna oś czasu", "image_thumbnail_quality_description": "Jakość miniatur od 1 do 100. WyÅŧsza jest lepsza, ale tworzy większe pliki i moÅŧe spowolnić reakcję aplikacji.", "image_thumbnail_title": "Ustawienia miniatur", + "import_config_from_json_description": "Zaimportuj konfigurację systemu poprzez wczytanie pliku konfiguracyjnego JSON", "job_concurrency": "{job} wspÃŗÅ‚bieÅŧność", "job_created": "Zadanie utworzone", "job_not_concurrency_safe": "To zadanie nie moÅŧe zostać wykonane w wielu wątkach.", "job_settings": "Ustawienia Zadań", "job_settings_description": "Zarządzaj wspÃŗÅ‚bieÅŧnością zadań", - "job_status": "Status Zadań", "jobs_delayed": "{jobCount, plural, one {# oczekujący} few {# oczekujące} other {# oczekujących}}", "jobs_failed": "{jobCount, plural, one {# nieudany} few {# nieudane} other {# nieudanych}}", + "jobs_over_time": "Zadania na przestrzeni czasu", "library_created": "Utworzono bibliotekę: {library}", "library_deleted": "Biblioteka usunięta", "library_details": "SzczegÃŗÅ‚y biblioteki", @@ -182,6 +186,7 @@ "maintenance_start": "Uruchom tryb konserwacji", "maintenance_start_error": "Nie udało się uruchomić trybu konserwacji.", "manage_concurrency": "Zarządzaj wspÃŗÅ‚bieÅŧnością zadań", + "manage_concurrency_description": "PrzejdÅē do strony zadań, aby zarządzać wspÃŗÅ‚bieÅŧnością zadań", "manage_log_settings": "Zarządzaj ustawieniami logÃŗw", "map_dark_style": "Styl ciemny", "map_enable_description": "Włącz funkcję mapy", @@ -271,10 +276,14 @@ "password_settings_description": "Zarządzaj ustawieniami logowania hasłem", "paths_validated_successfully": "Wszystkie ścieÅŧki zostały pomyślnie zweryfikowane", "person_cleanup_job": "Porządkowanie osÃŗb", + "queue_details": "SzczegÃŗÅ‚y kolejki", + "queues": "Kolejki zadań", + "queues_page_description": "Strona administracyjna do zarządzania kolejkami zadań", "quota_size_gib": "Wielkość Magazynu (GiB)", "refreshing_all_libraries": "Wszystkie biblioteki zostaną odświeÅŧone", "registration": "Rejestracja Administratora", "registration_description": "Jesteś pierwszym uÅŧytkownikiem aplikacji, więc twoje konto jest administratorem. MoÅŧesz zarządzać platformą, w tym dodawać nowych uÅŧytkownikÃŗw.", + "remove_failed_jobs": "Usuń nieudane zadania", "require_password_change_on_login": "Wymagaj zmiany hasła po pierwszym zalogowaniu", "reset_settings_to_default": "PrzywrÃŗÄ‡ ustawienia fabryczne", "reset_settings_to_recent_saved": "PrzywrÃŗÄ‡ ustawienia do ostatnio zapisanych", @@ -287,8 +296,10 @@ "server_public_users_description": "Wszyscy uÅŧytkownicy (nazwa i adres e-mail) są wymienieni podczas dodawania uÅŧytkownika do udostępnionych albumÃŗw. Po wyłączeniu lista uÅŧytkownikÃŗw będzie dostępna tylko dla administratorÃŗw.", "server_settings": "Ustawienia Serwera", "server_settings_description": "Zarządzaj ustawieniami serwera", + "server_stats_page_description": "Strona administracyjna ze statystykami serwera", "server_welcome_message": "Wiadomość powitalna", "server_welcome_message_description": "Wiadomość, ktÃŗra jest wyświetlania na stronie logowania.", + "settings_page_description": "Strona administracyjna z ustawieniami", "sidecar_job": "Poboczne metadane", "sidecar_job_description": "Wykryj lub zsynchronizuj poboczne metadane z systemu plikÃŗw", "slideshow_duration_description": "Liczba sekund wyświetlania kaÅŧdego obrazu", @@ -407,7 +418,8 @@ "user_restore_scheduled_removal": "PrzywrÃŗcenie uÅŧytkownika - zaplanowane usunięcie na {date, date, long}", "user_settings": "Ustawienia UÅŧytkownika", "user_settings_description": "Zarządzaj ustawieniami uÅŧytkownika", - "user_successfully_removed": "UÅŧytkownik {email} został usunięty pomyślnie.", + "user_successfully_removed": "UÅŧytkownik {email} został pomyślnie usunięty.", + "users_page_description": "Strona administracyjna do zarządzania uÅŧytkownikami", "version_check_enabled_description": "Włącz sprawdzanie wersji", "version_check_implications": "Funkcja sprawdzania wersji opiera się na okresowej komunikacji z github.com", "version_check_settings": "Sprawdzenie Wersji", @@ -640,6 +652,7 @@ "backup_options_page_title": "Opcje kopii zapasowej", "backup_setting_subtitle": "Zarządzaj ustawieniami przesyłania w tle i na pierwszym planie", "backup_settings_subtitle": "Zarządzanie ustawieniami przesyłania", + "backup_upload_details_page_more_details": "Dotknij, aby wyświetlić więcej szczegÃŗÅ‚Ãŗw", "backward": "Do tyłu", "biometric_auth_enabled": "Włączono logowanie biometryczne", "biometric_locked_out": "Uwierzytelnianie biometryczne jest dla Ciebie zablokowane", @@ -706,6 +719,7 @@ "check_corrupt_asset_backup_button": "Wykonaj sprawdzenie", "check_corrupt_asset_backup_description": "Uruchom sprawdzenie tylko przez Wi-Fi i po utworzeniu kopii zapasowej wszystkich zasobÃŗw. Procedura moÅŧe potrwać kilka minut.", "check_logs": "Diagnostyka", + "checksum": "Suma kontrolna", "choose_matching_people_to_merge": "Wybierz osoby, aby złączyć je w jedną", "city": "Miasto", "clear": "Wyczyść", @@ -728,6 +742,7 @@ "collapse_all": "Zwiń wszystko", "color": "Kolor", "color_theme": "Motyw kolorÃŗw", + "command": "Polecenie", "comment_deleted": "Usunięto komentarz", "comment_options": "Opcje komentarza", "comments_and_likes": "Komentarze i polubienia", @@ -1092,6 +1107,7 @@ "external_network_sheet_info": "Jeśli nie korzystasz z preferowanej sieci Wi-Fi aplikacja połączy się z serwerem za pośrednictwem pierwszego z dostępnych poniÅŧej adresÃŗw URL, zaczynając od gÃŗry do dołu", "face_unassigned": "Nieprzypisany", "failed": "Niepowodzenie", + "failed_count": "Nie powiodło się: {count}", "failed_to_authenticate": "Nie udało się uwierzytelnić", "failed_to_load_assets": "Nie udało się załadować zasobÃŗw", "failed_to_load_folder": "Nie udało się załadować folderu", @@ -1121,6 +1137,7 @@ "folders_feature_description": "Przeglądanie zdjęć i filmÃŗw w widoku folderÃŗw", "forgot_pin_code_question": "Nie pamiętasz kodu PIN?", "forward": "Do przodu", + "full_path": "Pełna ścieÅŧka: {path}", "gcast_enabled": "Google Cast", "gcast_enabled_description": "Ta funkcja , aby działać, ładuje zewnętrzne zasoby z Google.", "general": "OgÃŗlne", @@ -1151,12 +1168,14 @@ "header_settings_header_name_input": "Nazwa nagÅ‚Ãŗwka", "header_settings_header_value_input": "Wartość nagÅ‚Ãŗwka", "headers_settings_tile_title": "Niestandardowe nagÅ‚Ãŗwki proxy", + "height": "Wysokość", "hi_user": "Cześć {name} ({email})", "hide_all_people": "Ukryj wszystkie osoby", "hide_gallery": "Ukryj galerię", "hide_named_person": "Ukryj osobę {name}", "hide_password": "Ukryj hasło", "hide_person": "Ukryj osobę", + "hide_text_recognition": "Ukryj rozpoznawanie tekstu", "hide_unnamed_people": "Ukryj nienazwaną osobę", "home_page_add_to_album_conflicts": "Dodano {added} zasoby do albumu {album}. {failed} zasobÃŗw jest juÅŧ w albumie.", "home_page_add_to_album_err_local": "Nie moÅŧna dodawać zasobÃŗw lokalnych do albumÃŗw, pomijam", @@ -1272,6 +1291,7 @@ "local": "Lokalny", "local_asset_cast_failed": "Nie moÅŧna strumieniować zasobu, ktÃŗry nie został przesłany na serwer", "local_assets": "Zasoby lokalne", + "local_id": "Lokalne ID", "local_media_summary": "Podsumowanie lokalnych mediÃŗw", "local_network": "Sieć lokalna", "local_network_sheet_info": "Aplikacja połączy się z serwerem za pośrednictwem tego adresu URL podczas korzystania z określonej sieci Wi-Fi", @@ -1450,6 +1470,7 @@ "no_favorites_message": "Dodaj ulubione aby szybko znaleÅēć swoje najlepsze zdjęcia i filmy", "no_libraries_message": "StwÃŗrz bibliotekę zewnętrzną, aby przeglądać swoje zdjęcia i filmy", "no_local_assets_found": "Nie znaleziono Åŧadnych lokalnych zasobÃŗw o tej sumie kontrolnej", + "no_location_set": "Nie ustawiono lokalizacji", "no_locked_photos_message": "Zdjęcia i filmy w folderze zablokowanym są ukryte i nie będą wyświetlane podczas przeglądania biblioteki.", "no_name": "Brak Nazwy", "no_notifications": "Brak powiadomień", @@ -1509,6 +1530,7 @@ "other_variables": "Inne zmienne", "owned": "Posiadany", "owner": "Właściciel", + "page": "Strona", "partner": "Partner", "partner_can_access": "{partner} ma dostęp do", "partner_can_access_assets": "Wszystkie Twoje zdjęcia i filmy, oprÃŗcz tych w Archiwum i Koszu", @@ -1965,6 +1987,7 @@ "show_slideshow_transition": "PokaÅŧ przejście pokazu slajdÃŗw", "show_supporter_badge": "Odznaka wspierającego", "show_supporter_badge_description": "PokaÅŧ odznakę wspierającego", + "show_text_recognition": "PokaÅŧ rozpoznawanie tekstu", "show_text_search_menu": "PokaÅŧ menu wyszukiwania tekstowego", "shuffle": "Losuj", "sidebar": "Panel boczny", @@ -2035,6 +2058,7 @@ "tags": "Etykiety", "tap_to_run_job": "Uruchom zadanie", "template": "Szablon", + "text_recognition": "Rozpoznawanie tekstu", "theme": "Motyw", "theme_selection": "WybÃŗr motywu", "theme_selection_description": "Automatycznie zmień motyw na jasny lub ciemny zaleÅŧnie od ustawień przeglądarki", @@ -2067,6 +2091,7 @@ "to_select": "aby wybrać", "to_trash": "Kosz", "toggle_settings": "Przełącz ustawienia", + "toggle_theme_description": "Przełącz motyw", "total": "Razem", "total_usage": "Całkowite wykorzystanie", "trash": "Kosz", @@ -2175,6 +2200,7 @@ "view_album": "Wyświetl Album", "view_all": "PokaÅŧ wszystkie", "view_all_users": "PokaÅŧ wszystkich uÅŧytkownikÃŗw", + "view_asset_owners": "Wyświetl właścicieli zasobÃŗw", "view_details": "Zobacz szczegÃŗÅ‚y", "view_in_timeline": "PokaÅŧ na osi czasu", "view_link": "Zobacz link", @@ -2191,10 +2217,12 @@ "viewer_unstack": "Rozdziel stos", "visibility_changed": "Zmieniono widoczność dla {count, plural, one {# osoby} other {# osÃŗb}}", "waiting": "Oczekujące", + "waiting_count": "W oczekiwaniu: {count}", "warning": "OstrzeÅŧenie", "week": "Tydzień", "welcome": "Witaj", "welcome_to_immich": "Witamy w immich", + "width": "Szerokość", "wifi_name": "Nazwa Wi-Fi", "workflow": "Przepływ pracy", "wrong_pin_code": "Nieprawidłowy kod PIN", diff --git a/i18n/pt.json b/i18n/pt.json index 512f4dc20b..7cbf66f11b 100644 --- a/i18n/pt.json +++ b/i18n/pt.json @@ -7,6 +7,7 @@ "action_common_update": "Atualizar", "actions": "AçÃĩes", "active": "Em execuÃ§ÃŖo", + "active_count": "Ativas: {count}", "activity": "Atividade", "activity_changed": "A atividade estÃĄ {enabled, select, true {ativada} other {desativada}}", "add": "Adicionar", @@ -67,6 +68,7 @@ "confirm_reprocess_all_faces": "Tem a certeza de que deseja reprocessar todos os rostos? Isto tambÊm limparÃĄ os nomes das pessoas.", "confirm_user_password_reset": "Tem a certeza de que deseja redefinir a palavra-passe de {user}?", "confirm_user_pin_code_reset": "Tem a certeza de que quer repor o cÃŗdigo PIN de {user}?", + "copy_config_to_clipboard_description": "Copiar a configuraÃ§ÃŖo atual do sistema como um objeto JSON para a ÃĄrea de transferÃĒncia", "create_job": "Criar tarefa", "cron_expression": "ExpressÃŖo Cron", "cron_expression_description": "Definir o intervalo de anÃĄlise utilizando o formato Cron. Para mais informaçÃĩes, por favor consulte o Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "Desativar inicio de sessÃŖo", "duplicate_detection_job_description": "Executa a aprendizagem de mÃĄquina em ficheiros para detetar imagens semelhantes. Depende da Pesquisa Inteligente", "exclusion_pattern_description": "Os padrÃĩes de exclusÃŖo permitem ignorar ficheiros e pastas ao analisar a sua biblioteca. Isto Ê Ãētil se tiver pastas que contenham ficheiros que nÃŖo deseja importar, como ficheiros RAW.", - "external_library_management": "GestÃŖo de bibliotecas externas", + "export_config_as_json_description": "Descarregar a configuraÃ§ÃŖo atual do sistema como um ficheiro JSON", + "external_libraries_page_description": "PÃĄgina de administrador de bibliotecas externas", "face_detection": "DeteÃ§ÃŖo de Rostos", "face_detection_description": "Deteta rostos em ficheiros utilizando aprendizagem automÃĄtica. Para vídeos, apenas a miniatura Ê considerada. \"Atualizar\" (re)processa todos os ficheiros, enquanto \"Redefinir\" elimina todos os dados de rostos. \"Em falta\" coloca em fila ficheiros que ainda nÃŖo foram processados. Os rostos detetados serÃŖo colocados em fila para Reconhecimento Facial apÃŗs a conclusÃŖo da DeteÃ§ÃŖo de Rostos, agrupando-os em pessoas novas ou jÃĄ existentes.", "facial_recognition_job_description": "Agrupa rostos detetadas em pessoas. Esta etapa Ê executada apÃŗs a conclusÃŖo da DeteÃ§ÃŖo de Rostos. \"Redefinir\" (re)agrupa todos os rostos. \"Em falta\" coloca em fila rostos que ainda nÃŖo tÃĒm uma pessoa atribuída.", @@ -102,14 +105,15 @@ "image_thumbnail_description": "Miniatura de tamanho pequena e sem metadados, utilizada ao visualizar grupos de fotos como, por exemplo, na linha de tempo principal", "image_thumbnail_quality_description": "Qualidade das miniaturas de 1 a 100. Maior Ê melhor, mas produz tamanhos de ficheiro maiores e podem reduzir a capacidade de resposta da aplicaÃ§ÃŖo.", "image_thumbnail_title": "DefiniçÃĩes de Miniaturas", + "import_config_from_json_description": "Importar configuraÃ§ÃŖo do sistema ao carregar um ficheiro JSON", "job_concurrency": "{job} em simultÃĸneo", "job_created": "Tarefa criada", "job_not_concurrency_safe": "Esta tarefa nÃŖo pode ser executada em simultÃĸneo.", "job_settings": "DefiniçÃĩes de Tarefas", "job_settings_description": "Gerir tarefas executadas em simultÃĸneo", - "job_status": "Estado das Tarefas", "jobs_delayed": "{jobCount, plural, one {# adiado} other {# adiados}}", "jobs_failed": "{jobCount, plural, one {# falhou} other {# falharam}}", + "jobs_over_time": "Tarefas ao logo do tempo", "library_created": "Criada biblioteca: {library}", "library_deleted": "Biblioteca eliminada", "library_details": "Detalhes de Biblioteca", @@ -182,6 +186,7 @@ "maintenance_start": "Iniciar modo de manutenÃ§ÃŖo", "maintenance_start_error": "Ocorreu um erro ao iniciar o modo de manutenÃ§ÃŖo.", "manage_concurrency": "Gerir simultaneidade", + "manage_concurrency_description": "Navegar para a pÃĄgina das tarefas para gerir as tarefas em simultÃĸneo", "manage_log_settings": "Gerir definiçÃĩes de registo", "map_dark_style": "Tema Escuro", "map_enable_description": "Ativar funcionalidades de mapa", @@ -271,10 +276,14 @@ "password_settings_description": "Gerir definiçÃĩes de inicio de sessÃŖo e palavra-passe", "paths_validated_successfully": "Todos os caminhos validados com sucesso", "person_cleanup_job": "Limpeza de pessoas", + "queue_details": "Detalhes da fila", + "queues": "Filas de tarefas", + "queues_page_description": "PÃĄgina de administrador de filas de tarefas", "quota_size_gib": "Tamanho da quota (GiB)", "refreshing_all_libraries": "A atualizar todas as bibliotecas", "registration": "Registo de Administrador", "registration_description": "Como Ê o primeiro utilizador no sistema, serÃĄ marcado como administrador, e serÃĄ responsÃĄvel pelas tarefas administrativas, sendo que utilizadores adicionais serÃŖo criados por si.", + "remove_failed_jobs": "Remover tarefas falhadas", "require_password_change_on_login": "Exigir que o utilizador altere a palavra-passe no primeiro início de sessÃŖo", "reset_settings_to_default": "Redefinir as definiçÃĩes para o padrÃŖo", "reset_settings_to_recent_saved": "Redefinir as definiçÃĩes para as guardadas mais recentemente", @@ -287,8 +296,10 @@ "server_public_users_description": "Todos os utilizadores (nome e e-mail) serÃŖo listados quando adicionar um utilizador a ÃĄlbuns partilhados. Quando desativado, a lista de utilizadores sÃŗ serÃĄ visível a administradores.", "server_settings": "DefiniçÃĩes do Servidor", "server_settings_description": "Gerir definiçÃĩes do servidor", + "server_stats_page_description": "PÃĄgina de administrador das estatísticas do servidor", "server_welcome_message": "Mensagem de boas-vindas", "server_welcome_message_description": "Uma mensagem que Ê exibida na pÃĄgina de inicio de sessÃŖo.", + "settings_page_description": "PÃĄgina de administrador das definiçÃĩes", "sidecar_job": "Metadados secundÃĄrios", "sidecar_job_description": "Descobrir ou sincronizar metadados secundÃĄrios a partir do sistema de ficheiros", "slideshow_duration_description": "Tempo em segundos para exibir cada imagem", @@ -408,6 +419,7 @@ "user_settings": "DefiniçÃĩes do Utilizador", "user_settings_description": "Gerir definiçÃĩes do utilizador", "user_successfully_removed": "O utilizador {email} foi removido com sucesso.", + "users_page_description": "PÃĄgina de administador de utilizadores", "version_check_enabled_description": "Ativa verificaÃ§ÃŖo de novas versÃĩes", "version_check_implications": "A funcionalidade de verificaÃ§ÃŖo da versÃŖo necessita de comunicaÃ§ÃŖo periÃŗdica com o github.com", "version_check_settings": "VerificaÃ§ÃŖo de versÃŖo", @@ -640,6 +652,7 @@ "backup_options_page_title": "OpçÃĩes de cÃŗpia de segurança", "backup_setting_subtitle": "Gerenciar as configuraçÃĩes de envio em primeiro e segundo plano", "backup_settings_subtitle": "Gerir definiçÃĩes de carregamento", + "backup_upload_details_page_more_details": "Toque para mais detalhes", "backward": "Para trÃĄs", "biometric_auth_enabled": "AutenticaÃ§ÃŖo biomÊtrica ativada", "biometric_locked_out": "EstÃĄ impedido de utilizar a autenticaÃ§ÃŖo biomÊtrica", @@ -706,6 +719,7 @@ "check_corrupt_asset_backup_button": "Verificar", "check_corrupt_asset_backup_description": "Execute esta verificaÃ§ÃŖo apenas numa rede Wi-Fi e quando a cÃŗpia de segurança de todos os ficheiros jÃĄ estiver concluída. O processo pode demorar alguns minutos.", "check_logs": "Verificar registos", + "checksum": "Teste de soma de dados", "choose_matching_people_to_merge": "Escolha pessoas correspondentes para unir", "city": "Cidade/Localidade", "clear": "Limpar", @@ -728,6 +742,7 @@ "collapse_all": "Colapsar tudo", "color": "Cor", "color_theme": "Esquema de cores", + "command": "Comando", "comment_deleted": "ComentÃĄrio eliminado", "comment_options": "OpçÃĩes de comentÃĄrio", "comments_and_likes": "ComentÃĄrios e gostos", @@ -928,7 +943,7 @@ "enable_backup": "Ativar CÃŗpia de Segurança", "enable_biometric_auth_description": "Insira o cÃŗdigo PIN para ativar a autenticaÃ§ÃŖo biomÊtrica", "enabled": "Ativado", - "end_date": "Data final", + "end_date": "Data de fim", "enqueued": "Na fila", "enter_wifi_name": "Escreva o nome da rede Wi-Fi", "enter_your_pin_code": "Insira o cÃŗdigo PIN", @@ -1092,6 +1107,7 @@ "external_network_sheet_info": "Quando nÃŖo estiver ligado à rede Wi-Fi especificada, a aplicaÃ§ÃŖo irÃĄ ligar-se utilizando o primeiro URL abaixo que conseguir aceder, a começar do topo da lista para baixo", "face_unassigned": "Sem atribuiÃ§ÃŖo", "failed": "Ocorreu um erro", + "failed_count": "Falhadas: {count}", "failed_to_authenticate": "NÃŖo foi possível autenticar", "failed_to_load_assets": "Ocorreu um erro ao carregar ficheiros", "failed_to_load_folder": "Ocorreu um erro ao carregar a pasta", @@ -1121,7 +1137,7 @@ "folders_feature_description": "Navegar na vista de pastas por fotos e vídeos no sistema de ficheiros", "forgot_pin_code_question": "Esqueceu-se do seu PIN?", "forward": "Para a frente", - "full_path": "Caminho completo:{path}", + "full_path": "Caminho completo: {path}", "gcast_enabled": "Google Cast", "gcast_enabled_description": "Esta funcionalidade requer o carregamento de recursos externos da Google para poder funcionar.", "general": "Geral", @@ -1152,12 +1168,14 @@ "header_settings_header_name_input": "Nome do cabeçalho", "header_settings_header_value_input": "Valor do cabeçalho", "headers_settings_tile_title": "Cabeçalhos do Proxy customizados", + "height": "Altura", "hi_user": "OlÃĄ {name} ({email})", "hide_all_people": "Ocultar todas as pessoas", "hide_gallery": "Ocultar galeria", "hide_named_person": "Ocultar pessoa {name}", "hide_password": "Ocultar palavra-passe", "hide_person": "Ocultar pessoa", + "hide_text_recognition": "Esconder reconhecimento de texto", "hide_unnamed_people": "Ocultar pessoas sem nome", "home_page_add_to_album_conflicts": "Foram adicionados {added} ficheiros ao ÃĄlbum {album}. {failed} ficheiros jÃĄ estÃŖo no ÃĄlbum.", "home_page_add_to_album_err_local": "Ainda nÃŖo Ê possível adicionar recursos locais aos ÃĄlbuns, ignorando", @@ -1273,6 +1291,7 @@ "local": "Local", "local_asset_cast_failed": "NÃŖo Ê possível transmitir um ficheiro que nÃŖo tenha sido enviado antes para o servidor", "local_assets": "Ficheiros Locais", + "local_id": "ID Local", "local_media_summary": "SumÃĄrio de conteÃēdo local", "local_network": "Rede local", "local_network_sheet_info": "A aplicaÃ§ÃŖo irÃĄ ligar-se ao servidor atravÊs desta URL quando estiver na rede Wi-Fi especificada", @@ -1511,6 +1530,7 @@ "other_variables": "Outras variÃĄveis", "owned": "Seus", "owner": "Dono", + "page": "PÃĄgina", "partner": "Parceiro", "partner_can_access": "{partner} pode aceder", "partner_can_access_assets": "Todas as suas fotos e vídeos, exceto os Arquivados ou Eliminados", @@ -1967,6 +1987,7 @@ "show_slideshow_transition": "Mostrar transiçÃĩes no Modo de ApresentaÃ§ÃŖo", "show_supporter_badge": "Emblema de apoiante", "show_supporter_badge_description": "Mostrar um emblema de apoiante", + "show_text_recognition": "Mostrar reconhecimento de texto", "show_text_search_menu": "Mostrar menu de pesquisa de texto", "shuffle": "AleatÃŗrio", "sidebar": "Barra lateral", @@ -2037,6 +2058,7 @@ "tags": "Etiquetas", "tap_to_run_job": "Tocar para executar tarefa", "template": "Modelo", + "text_recognition": "Reconhecimento de texto", "theme": "Tema", "theme_selection": "Selecionar tema", "theme_selection_description": "Definir automaticamente o tema como claro ou escuro com base na preferÃĒncia do sistema do seu navegador", @@ -2069,6 +2091,7 @@ "to_select": "seleccionar", "to_trash": "Reciclagem", "toggle_settings": "Alternar configuraçÃĩes", + "toggle_theme_description": "Alternar tema", "total": "Total", "total_usage": "Total utilizado", "trash": "Reciclagem", @@ -2177,6 +2200,7 @@ "view_album": "Ver Álbum", "view_all": "Ver tudo", "view_all_users": "Ver todos os utilizadores", + "view_asset_owners": "Ver donos do ficheiro", "view_details": "Ver Detalhes", "view_in_timeline": "Ver na linha do tempo", "view_link": "Ver link", @@ -2193,10 +2217,12 @@ "viewer_unstack": "Desempilhar", "visibility_changed": "Visibilidade alterada para {count, plural, one {# pessoa} other {# pessoas}}", "waiting": "Em fila", + "waiting_count": "Em espera: {count}", "warning": "Aviso", "week": "Semana", "welcome": "Bem-vindo(a)", "welcome_to_immich": "Bem-vindo(a) ao Immich", + "width": "Largura", "wifi_name": "Nome da rede Wi-Fi", "workflow": "Fluxo de trabalho", "wrong_pin_code": "CÃŗdigo PIN errado", diff --git a/i18n/pt_BR.json b/i18n/pt_BR.json index c915344c55..20eb16a938 100644 --- a/i18n/pt_BR.json +++ b/i18n/pt_BR.json @@ -7,6 +7,7 @@ "action_common_update": "Atualizar", "actions": "AçÃĩes", "active": "Em execuÃ§ÃŖo", + "active_count": "Ativo: {count}", "activity": "Atividade", "activity_changed": "A atividade estÃĄ {enabled, select, true {ativada} other {desativada}}", "add": "Adicionar", @@ -67,6 +68,7 @@ "confirm_reprocess_all_faces": "Tem certeza de que deseja reprocessar todos os rostos? Isso tambÊm limparÃĄ as pessoas nomeadas.", "confirm_user_password_reset": "Tem certeza de que deseja redefinir a senha de {user}?", "confirm_user_pin_code_reset": "Tem certeza de que deseja redefinir o cÃŗdigo PIN do usuÃĄrio {user}?", + "copy_config_to_clipboard_description": "Copiar as configuraçÃĩes do sistema como um objeto JSON para a ÃĄrea de transferÃĒncia", "create_job": "Criar tarefa", "cron_expression": "ExpressÃŖo CRON", "cron_expression_description": "Defina o intervalo de anÃĄlise no formato Cron. Para mais informaçÃĩes, por favor veja o Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "Desabilitar login", "duplicate_detection_job_description": "Execute o aprendizado de mÃĄquina em arquivos para detectar imagens semelhantes. Depende da Pesquisa Inteligente", "exclusion_pattern_description": "Os padrÃĩes de exclusÃŖo permitem ignorar arquivos e pastas ao escanear sua biblioteca. Isso Ê Ãētil se vocÃĒ tiver pastas que contenham arquivos que nÃŖo deseja importar, como arquivos RAW.", - "external_library_management": "Gerenciamento de bibliotecas externas", + "export_config_as_json_description": "Baixar as configuraçÃĩes de sistema atuais para um arquivo JSON", + "external_libraries_page_description": "PÃĄgina de administraÃ§ÃŖo de biblioteca externa", "face_detection": "DetecÃ§ÃŖo de rostos", "face_detection_description": "Detectar rostos nos arquivos usando aprendizado de mÃĄquina. Para vídeos, apenas a miniatura Ê considerada. ‘Atualizar’ (re)processa todos os arquivos. ‘Resetar’ tambÊm limpa todos os dados de rosto atuais. ‘Faltando’ coloca em fila os arquivos que ainda nÃŖo foram processados. Rostos detectados serÃŖo colocados em fila para o Reconhecimento Facial apÃŗs a conclusÃŖo da DetecÃ§ÃŖo de Rostos, agrupando-os em pessoas existentes ou novas.", "facial_recognition_job_description": "Agrupar rostos detectados em pessoas. Esta etapa Ê executada apÃŗs a conclusÃŖo da DetecÃ§ÃŖo de Rostos. ‘Resetar’ (re)agruparÃĄ todos os rostos. ‘Faltando’ coloca em fila os rostos que nÃŖo tÃĒm uma pessoa atribuída.", @@ -102,14 +105,15 @@ "image_thumbnail_description": "Miniatura sem metadados, utilizado quando visualizar um grupos de fotos, como por exemplo, a linha do tempo principal", "image_thumbnail_quality_description": "Qualidade da miniatura, de 1 a 100. Maior Ê melhor, mas produz arquivos maiores e pode reduzir a velocidade do aplicativo.", "image_thumbnail_title": "ConfiguraçÃĩes de Miniaturas", + "import_config_from_json_description": "Importar configuraÃ§ÃŖo do sistema enviando um arquivo JSON de configuraÃ§ÃŖo", "job_concurrency": "{job} simultÃĸneo", "job_created": "Tarefa criada", "job_not_concurrency_safe": "Esta tarefa nÃŖo Ê compatível com simultaneidade.", "job_settings": "ConfiguraçÃĩes de Tarefa", "job_settings_description": "Gerenciar simultaneidade das tarefas", - "job_status": "Estado da Tarefa", "jobs_delayed": "{jobCount, plural, one {# atrasado} other {# atrasados}}", "jobs_failed": "{jobCount, plural, one {# falhou} other {# falharam}}", + "jobs_over_time": "Tarefas ao longo do tempo", "library_created": "Criado biblioteca: {library}", "library_deleted": "Biblioteca excluída", "library_details": "Detalhes da biblioteca", @@ -182,6 +186,7 @@ "maintenance_start": "Iniciar modo de manutenÃ§ÃŖo", "maintenance_start_error": "Ocorreu um erro ao iniciar o modo de manutenÃ§ÃŖo.", "manage_concurrency": "Gerenciar simultaneidade", + "manage_concurrency_description": "Acesse a pÃĄgina de tarefas para gerenciar a simultaneidade de tarefas", "manage_log_settings": "Gerenciar configuraçÃĩes de log", "map_dark_style": "Tema Escuro", "map_enable_description": "Ativar recursos do mapa", @@ -271,10 +276,14 @@ "password_settings_description": "Gerenciar configuraçÃĩes de login e senha", "paths_validated_successfully": "Todos os caminhos validados com sucesso", "person_cleanup_job": "Limpeza de pessoas", + "queue_details": "Detalhes da Fila", + "queues": "Fila de Tarefas", + "queues_page_description": "PÃĄgina de administraÃ§ÃŖo das filas de tarefas", "quota_size_gib": "Tamanho da cota (GiB)", "refreshing_all_libraries": "Atualizando todas as bibliotecas", "registration": "Registro de Administrador", "registration_description": "Como vocÃĒ ÃŠ o primeiro usuÃĄrio no sistema, serÃĄ designado como o Administrador e serÃĄ responsÃĄvel pelas tarefas administrativas. VocÃĒ tambÊm poderÃĄ criar usuÃĄrios adicionais.", + "remove_failed_jobs": "Remover tarefas que falharam", "require_password_change_on_login": "Exigir que o usuÃĄrio altere a senha no primeiro login", "reset_settings_to_default": "Redefinir as configuraçÃĩes para o padrÃŖo", "reset_settings_to_recent_saved": "Redefinir as configuraçÃĩes para as configuraçÃĩes salvas recentemente", @@ -287,8 +296,10 @@ "server_public_users_description": "Todos os usuÃĄrios (nome e e-mail) serÃŖo exibidos na lista de adicionar usuÃĄrios em ÃĄlbuns compartilhados. Quando desativado, essa lista de usuÃĄrios sÃŗ serÃĄ visível aos administradores.", "server_settings": "ConfiguraçÃĩes do servidor", "server_settings_description": "Gerenciar configuraçÃĩes do servidor", + "server_stats_page_description": "PÃĄgina de estatística do servidor Admin", "server_welcome_message": "Mensagem de boas-vindas", "server_welcome_message_description": "Uma mensagem exibida na pÃĄgina de login.", + "settings_page_description": "PÃĄgina de configuraçÃĩes do Admin", "sidecar_job": "Metadados secundÃĄrios", "sidecar_job_description": "Descubra ou sincronize metadados secundÃĄrios do sistema de arquivos", "slideshow_duration_description": "Tempo em segundos para exibir cada imagem", @@ -407,7 +418,8 @@ "user_restore_scheduled_removal": "Restaurar usuÃĄrio - A remoÃ§ÃŖo estÃĄ agendada para o dia {date, date, long}", "user_settings": "ConfiguraçÃĩes do UsuÃĄrio", "user_settings_description": "Gerenciar configuraçÃĩes do usuÃĄrio", - "user_successfully_removed": "O usuÃĄrio {email} foi removido com sucesso.", + "user_successfully_removed": "UsuÃĄrio {email} foi removido com sucesso.", + "users_page_description": "PÃĄgina de usuÃĄrios Admin", "version_check_enabled_description": "Ativa a verificaÃ§ÃŖo de versÃŖo", "version_check_implications": "A verificaÃ§ÃŖo de versÃŖo depende de uma comunicaÃ§ÃŖo periÃŗdica com github.com", "version_check_settings": "VerificaÃ§ÃŖo de versÃŖo", @@ -640,6 +652,7 @@ "backup_options_page_title": "OpçÃĩes de backup", "backup_setting_subtitle": "Gerenciar as configuraçÃĩes de envio em primeiro e segundo plano", "backup_settings_subtitle": "Gerenciar configuraçÃĩes de envio", + "backup_upload_details_page_more_details": "Toque para mais detalhes", "backward": "Para trÃĄs", "biometric_auth_enabled": "AutenticaÃ§ÃŖo por biometria ativada", "biometric_locked_out": "Sua autenticaÃ§ÃŖo por biometria estÃĄ bloqueada", @@ -706,6 +719,7 @@ "check_corrupt_asset_backup_button": "Verificar", "check_corrupt_asset_backup_description": "Execute esta verificaÃ§ÃŖo somente em uma rede Wi-Fi e quando o backup de todos os arquivos jÃĄ estiver concluído. O processo demora alguns minutos.", "check_logs": "Ver logs", + "checksum": "Checksum", "choose_matching_people_to_merge": "Escolha pessoas correspondentes para mesclar", "city": "Cidade", "clear": "Limpar", @@ -728,6 +742,7 @@ "collapse_all": "Colapsar tudo", "color": "Cor", "color_theme": "Tema de cores", + "command": "Comando", "comment_deleted": "ComentÃĄrio excluído", "comment_options": "OpçÃĩes de comentÃĄrio", "comments_and_likes": "ComentÃĄrios e curtidas", @@ -1092,6 +1107,7 @@ "external_network_sheet_info": "Quando nÃŖo estiver na rede Wi-Fi especificada, o aplicativo irÃĄ se conectar usando o primeiro endereço abaixo que obtiver sucesso, começando do topo da lista para baixo", "face_unassigned": "Sem nome", "failed": "Falhou", + "failed_count": "Falhas: {count}", "failed_to_authenticate": "NÃŖo foi possível autenticar", "failed_to_load_assets": "Falha ao carregar arquivos", "failed_to_load_folder": "Falha ao carregar a pasta", @@ -1121,6 +1137,7 @@ "folders_feature_description": "Navegar pelas pastas das fotos e vídeos no sistema de arquivos", "forgot_pin_code_question": "Esqueceu seu PIN?", "forward": "Para frente", + "full_path": "Caminho completo: {path}", "gcast_enabled": "Google Cast", "gcast_enabled_description": "Esta funcionalidade carrega recursos externos do Google para funcionar.", "general": "Geral", @@ -1151,12 +1168,14 @@ "header_settings_header_name_input": "Nome do cabeçalho", "header_settings_header_value_input": "Valor do cabeçalho", "headers_settings_tile_title": "Cabeçalhos de proxy personalizados", + "height": "Altura", "hi_user": "OlÃĄ {name} ({email})", "hide_all_people": "Esconder todas as pessoas", "hide_gallery": "Ocultar galeria", "hide_named_person": "Esconder {name}", "hide_password": "Ocultar senha", "hide_person": "Ocultar pessoa", + "hide_text_recognition": "Esconder reconhecimento de texto", "hide_unnamed_people": "Esconder pessoas sem nome", "home_page_add_to_album_conflicts": "{added} arquivos adicionados ao ÃĄlbum {album}. {failed} arquivos jÃĄ estÃŖo no ÃĄlbum.", "home_page_add_to_album_err_local": "Ainda nÃŖo Ê possível adicionar arquivos locais aos ÃĄlbuns, ignorando", @@ -1272,6 +1291,7 @@ "local": "Local", "local_asset_cast_failed": "NÃŖo Ê possível transmitir um arquivo que nÃŖo foi enviado ao servidor", "local_assets": "Arquivos no dispositivo", + "local_id": "ID Local", "local_media_summary": "Resumo das mídias locais", "local_network": "Rede local", "local_network_sheet_info": "O aplicativo irÃĄ se conectar ao servidor atravÊs deste endereço quando estiver na rede Wi-Fi especificada", @@ -1450,6 +1470,7 @@ "no_favorites_message": "Adicione aos favoritos para encontrar suas melhores fotos e vídeos rapidamente", "no_libraries_message": "Crie uma biblioteca externa para ver suas fotos e vídeos", "no_local_assets_found": "Nenhum arquivo local foi encontrado com este checksum", + "no_location_set": "Sem localizaÃ§ÃŖo", "no_locked_photos_message": "Fotos e vídeos na pasta com senha sÃŖo ocultos e nÃŖo serÃŖo exibidos enquanto explora ou pesquisa na biblioteca.", "no_name": "Sem Nome", "no_notifications": "Nenhuma notificaÃ§ÃŖo", @@ -1509,6 +1530,7 @@ "other_variables": "Outras variÃĄveis", "owned": "Seu", "owner": "Dono", + "page": "PÃĄgina", "partner": "Parceiro", "partner_can_access": "{partner} pode acessar", "partner_can_access_assets": "Todas suas fotos e vídeos, excetos os Arquivados ou Excluídos", @@ -1965,6 +1987,7 @@ "show_slideshow_transition": "Usar transiçÃĩes no modo de apresentaÃ§ÃŖo", "show_supporter_badge": "Insígnia de apoiador", "show_supporter_badge_description": "Mostrar uma insígnia de apoiador", + "show_text_recognition": "Exibir reconhecimento de texto", "show_text_search_menu": "Mostrar menu de pesquisa por texto", "shuffle": "AleatÃŗrio", "sidebar": "Barra lateral", @@ -2035,6 +2058,7 @@ "tags": "Marcadores", "tap_to_run_job": "Toque para executar", "template": "Modelo", + "text_recognition": "Reconhecimento de texto", "theme": "Tema", "theme_selection": "Selecionar tema", "theme_selection_description": "Defina automaticamente o tema como claro ou escuro com base na preferÃĒncia do sistema do seu navegador", @@ -2067,6 +2091,7 @@ "to_select": "selecionar", "to_trash": "Mover para a lixeira", "toggle_settings": "Alternar configuraçÃĩes", + "toggle_theme_description": "Alternar tema", "total": "Total", "total_usage": "UtilizaÃ§ÃŖo total", "trash": "Lixeira", @@ -2175,6 +2200,7 @@ "view_album": "Ver ÃĄlbum", "view_all": "Ver tudo", "view_all_users": "Ver todos os usuÃĄrios", + "view_asset_owners": "Vizualizar donos do arquivo", "view_details": "Ver Detalhes", "view_in_timeline": "Ver na linha do tempo", "view_link": "Ver link", @@ -2191,10 +2217,12 @@ "viewer_unstack": "Desagrupar", "visibility_changed": "A visibilidade de {count, plural, one {# pessoa foi alterada} other {# pessoas foram alteradas}}", "waiting": "Na fila", + "waiting_count": "Esperando: {count}", "warning": "Aviso", "week": "Semana", "welcome": "Bem-vindo(a)", "welcome_to_immich": "Bem-vindo(a) ao Immich", + "width": "Largura", "wifi_name": "Nome do Wi-Fi", "workflow": "AutomaÃ§ÃŖo", "wrong_pin_code": "CÃŗdigo PIN incorreto", diff --git a/i18n/ro.json b/i18n/ro.json index fc53f3caac..90cdc5ddbf 100644 --- a/i18n/ro.json +++ b/i18n/ro.json @@ -2,11 +2,12 @@ "about": "Despre", "account": "Cont", "account_settings": "Setări cont", - "acknowledge": "Văzut", + "acknowledge": "Confirmare", "action": "AcÅŖiune", "action_common_update": "Actualizează", "actions": "AcÅŖiuni", "active": "Active", + "active_count": "Activ: {count}", "activity": "Activitate", "activity_changed": "Activitatea este {enabled, select, true {activată} other {dezactivată}}", "add": "Adaugă", @@ -31,14 +32,15 @@ "add_to_album_toggle": "Selectează/deselectează {album}", "add_to_albums": "Adaugă la albume", "add_to_albums_count": "Adaugă la albume ({count})", + "add_to_bottom_bar": "Adaugă la", "add_to_shared_album": "Adaugă la album partajat", "add_upload_to_stack": "Încarcă și adaugă la stivă", - "add_url": "Adăugați adresa URL", + "add_url": "Adaugă adresa URL", "added_to_archive": "Adăugat la arhivă", "added_to_favorites": "Adaugă la favorite", "added_to_favorites_count": "Adăugat {count, number} la favorite", "admin": { - "add_exclusion_pattern_description": "Adăugați modele de excludere. Globing folosind *, ** și ? este suportat. Pentru a ignora toate fișierele din orice director numit „Raw”, utilizați „**/Raw/**”. Pentru a ignora toate fișierele care se termină ÃŽn „.tif”, utilizați „**/*.tif”. Pentru a ignora o cale absolută, utilizați „/path/to/ignore/**”.", + "add_exclusion_pattern_description": "Adaugă modele de excludere. Globing folosind *, ** și ? este suportat. Pentru a ignora toate fișierele din orice director numit „Raw”, utilizați „**/Raw/**”. Pentru a ignora toate fișierele care se termină ÃŽn „.tif”, utilizați „**/*.tif”. Pentru a ignora o cale absolută, utilizați „/path/to/ignore/**”.", "admin_user": "Utilizator admin", "asset_offline_description": "Acest material din biblioteca externă nu se mai găsește pe disc și a fost mutat ÃŽn coșul de gunoi. Dacă fișierul a fost mutat ÃŽn bibliotecă, verificați cronologia pentru noul material corespunzător. Pentru a restabili acest material, asigurați-vă că calea fișierului de mai jos poate fi accesată de Immich și scanați biblioteca.", "authentication_settings": "Setări de autentificare", @@ -66,6 +68,7 @@ "confirm_reprocess_all_faces": "Sigur doriți să reprocesați toate fețele? Acest lucru va șterge și persoanele cu nume.", "confirm_user_password_reset": "Sigur doriți să resetați parola utilizatorului {user}?", "confirm_user_pin_code_reset": "Ești sigur că vrei să resetezi codul PIN al {user}?", + "copy_config_to_clipboard_description": "Copiați configurația curentă a sistemului ca obiect JSON ÃŽn clipboard", "create_job": "Creează sarcină", "cron_expression": "Expresia cron", "cron_expression_description": "Setați intervalul de scanare folosind formatul cron. Pentru mai multe informații, consultați de ex. Crontab Guru", @@ -73,7 +76,8 @@ "disable_login": "Dezactivați autentificarea", "duplicate_detection_job_description": "Rulați ÃŽnvățarea automată pe materiale pentru a detecta imagini similare. Se bazează pe Căutare Inteligentă", "exclusion_pattern_description": "Modelele de excludere vă permit să ignorați fișierele și folderele atunci cÃĸnd vă scanați biblioteca. Acest lucru este util dacă aveți foldere care conțin fișiere pe care nu doriți să le importați, cum ar fi fișierele RAW.", - "external_library_management": "Gestionarea bibliotecilor externe", + "export_config_as_json_description": "Descărcați configurația actuală a sistemului ca fișier JSON", + "external_libraries_page_description": "Pagina bibliotecii externe Admin", "face_detection": "Detecție facială", "face_detection_description": "Detectează fețele din fișiere folosind ÃŽnvățare automată. Pentru videoclipuri, este luată ÃŽn considerare doar miniatura. „ReÃŽmprospătează” (re)procesează toate fișierele. „Resetează” adaugă ÃŽn coadă fișierele care nu au fost ÃŽncă procesate. Fețele detectate vor fi puse ÃŽn coadă pentru recunoașterea facială după finalizarea detectării feței, grupÃĸndu-le ÃŽn persoane existente sau noi.", "facial_recognition_job_description": "Grupați fețele detectate ÃŽn persoane. Acest pas rulează după ce Detectarea Feței este finalizată. „Resetează” (re)grupează toate fețele. „Lipsă” adaugă ÃŽn coadă fețe care nu au o persoană desemnată.", @@ -101,22 +105,27 @@ "image_thumbnail_description": "Miniatură mică cu metadate eliminate, utilizată la vizualizarea grupurilor de fotografii, cum ar fi ÃŽn cronologia principală", "image_thumbnail_quality_description": "Calitatea miniaturii de la 1 la 100. O valoare mai mare oferă o calitate mai bună, dar produce fișiere mai mari și poate reduce receptivitatea aplicației.", "image_thumbnail_title": "Setari miniaturi", + "import_config_from_json_description": "Importați configurația sistemului ÃŽncărcÃĸnd un fișier de configurare JSON", "job_concurrency": "Concurență {job}", "job_created": "Sarcină creată", "job_not_concurrency_safe": "Această sarcină nu este sigură pentru a rula ÃŽn concurență.", "job_settings": "Setări sarcină", "job_settings_description": "Administrează concurența sarcinilor", - "job_status": "Starea sarcinii", "jobs_delayed": "{jobCount, plural, other {# ÃŽntÃĸrziat}}", "jobs_failed": "{jobCount, plural, other {# eșuat}}", "library_created": "Librărie creată: {library}", "library_deleted": "Bibliotecă ștearsă", + "library_details": "Detalii bibliotecă", + "library_folder_description": "Specifică un folder pentru importare. Acest folder, incluzÃĸnd subfolderele, va fi scanat pentru imagini si video-uri.", + "library_remove_exclusion_pattern_prompt": "Sunteți sigur că doriți să eliminați acest model de excludere?", + "library_remove_folder_prompt": "Sunteți sigur că doriți să ștergeți acest folder de import?", "library_scanning": "Scanare periodică", "library_scanning_description": "Configurează scanarea periodică pentru bibliotecă", "library_scanning_enable_description": "Activează scanarea periodică pentru bibliotecă", "library_settings": "Bibliotecă externă", "library_settings_description": "Administrează setările pentru biblioteci externe", "library_tasks_description": "Scanează bibliotecile externe de active noi sau modificate", + "library_updated": "Bibliotecă actualizată", "library_watching_enable_description": "Urmărește bibliotecile externe pentru schimbări ale fișierelor", "library_watching_settings": "Urmărirea bibliotecii (EXPERIMENTAL)", "library_watching_settings_description": "Urmărește automat fișierele schimbate", @@ -168,17 +177,22 @@ "machine_learning_settings_description": "Gestionați caracteristicile și setările de ÃŽnvățare automată", "machine_learning_smart_search": "Căutare inteligentă", "machine_learning_smart_search_description": "Căutarea semantică a imaginilor utilizÃĸnd ÃŽncorporările CLIP", - "machine_learning_smart_search_enabled": "Activați căutarea inteligentă", + "machine_learning_smart_search_enabled": "Activează căutarea inteligentă", "machine_learning_smart_search_enabled_description": "Dacă este dezactivată, imaginile nu vor fi codificate pentru căutarea inteligentă.", "machine_learning_url_description": "URL-ul serverului de ÃŽnvățare automată. Dacă sunt furnizate mai multe URL-uri, fiecare server va fi ÃŽncercat pe rÃĸnd, pÃĸnă cÃĸnd unul răspunde cu succes, ÃŽn ordine de la primul pÃĸnă la ultimul. Serverele care nu răspund vor fi ignorate temporar pÃĸnă revin online.", + "maintenance_settings": "Întreținere", + "maintenance_settings_description": "Puneți Immich ÃŽn modul de ÃŽntreținere.", + "maintenance_start": "Pornește modul de ÃŽntreținere", + "maintenance_start_error": "Nu s-a putut porni modul de ÃŽntreținere.", "manage_concurrency": "Gestionarea simultaneității", + "manage_concurrency_description": "Accesează pagina de joburi pentru a gestiona concurența lor.", "manage_log_settings": "Administrați setările jurnalului", "map_dark_style": "Mod ÃŽntunecat", - "map_enable_description": "Activați funcțiile hărții", + "map_enable_description": "Activează funcțiile hărții", "map_gps_settings": "Setări hartă & GPS", "map_gps_settings_description": "Gestionare setări Hartă & GPS (localizare inversă)", "map_implications": "Caracteristica hărții se bazează pe un serviciu extern de planșe (tiles.immich.cloud)", - "map_light_style": "Mod deschis", + "map_light_style": "Mod luminos", "map_manage_reverse_geocoding_settings": "Gestionare setări Localizare Inversă", "map_reverse_geocoding": "Localizare inversă", "map_reverse_geocoding_enable_description": "Activați geocodarea inversă", @@ -261,6 +275,8 @@ "password_settings_description": "GestioneazĮŽ setĮŽrile de autentificare cu parola", "paths_validated_successfully": "Toate cĮŽile au fost validate cu succes", "person_cleanup_job": "Ștergere persoane", + "queue_details": "Detalii coadă", + "queues": "Cozi de joburi", "quota_size_gib": "Spațiu de stocare alocat (GiB)", "refreshing_all_libraries": "Bibliotecile sunt ÃŽn curs de reÃŽmprospĮŽtare", "registration": "Înregistrare Administratori", @@ -277,8 +293,10 @@ "server_public_users_description": "Toți utilizatorii (nume și e-mail) sunt listați atunci cÃĸnd adăugați un utilizator la albumele partajate. CÃĸnd este dezactivată, lista de utilizatori va fi disponibilă numai pentru utilizatorii admin.", "server_settings": "SetĮŽri Server", "server_settings_description": "GestioneazĮŽ setĮŽrile serverului", + "server_stats_page_description": "Pagina cu statistici ale serverului de administrare", "server_welcome_message": "Mesaj de bun-venit", "server_welcome_message_description": "Un mesaj ce este afișat pe pagina de autentificare.", + "settings_page_description": "Pagina setări administrator", "sidecar_job": "Metadate sidecar", "sidecar_job_description": "Descoperirea sau sincronizarea metadatelor sidecar din sistemul de fișiere", "slideshow_duration_description": "NumĮŽrul de secunde pentru afișarea fiecĮŽrei imagini", @@ -397,7 +415,8 @@ "user_restore_scheduled_removal": "Restaurare utilizator - ștergere programată pe {date, date, long}", "user_settings": "SetĮŽri utilizator", "user_settings_description": "GestioneazĮŽ setĮŽrile utilizatorului", - "user_successfully_removed": "Utilizatorul {email} a fost eliminat cu succes.", + "user_successfully_removed": "Utilizatorul {email} a fost șters cu succes.", + "users_page_description": "Pagina utilizatorilor administratori", "version_check_enabled_description": "Activează verificarea versiunii", "version_check_implications": "Funcția de verificare a versiunii se bazează pe comunicarea periodică cu github.com", "version_check_settings": "Verificare versiune", @@ -428,6 +447,7 @@ "age_months": "VÃĸrstă {months, plural, one {# lună} other {# luni}}", "age_year_months": "VÃĸrstă de 1 an, {months, plural, one {# lună} other {# luni}}", "age_years": "{years, plural, other {VÃĸrstă #}}", + "album": "Album", "album_added": "Album adăugat", "album_added_notification_setting_description": "Primiți o notificare prin e-mail cÃĸnd sunteți adăugat la un album partajat", "album_cover_updated": "Coperta albumului a fost actualizată", @@ -542,7 +562,7 @@ "assets_moved_to_trash_count": "Am mutat {count, plural, one {# resursă} other {# resurse}} ÃŽn coșul de gunoi", "assets_permanently_deleted_count": "Șters permanent {count, plural, one {# resursă} other {# resurse}}", "assets_removed_count": "Eliminat {count, plural, one {# resursă} other {# resurse}}", - "assets_removed_permanently_from_device": "{count} resursă(e) eliminate permanent din dispozitivul dvs.", + "assets_removed_permanently_from_device": "{count} resurse eliminate permanent din dispozitivul dvs.", "assets_restore_confirmation": "Ești sigur că vrei să restaurezi toate resursele tale din coșul de gunoi? Nu poți anula această acțiune! Ține minte că resursele offline nu se restaurează astfel.", "assets_restored_count": "Restaurat {count, plural, one {# resursă} other {# resurse}}", "assets_restored_successfully": "{count} resursă(e) restaurate cu succes", @@ -717,6 +737,7 @@ "collapse_all": "RestrÃĸngeți toate", "color": "Culoare", "color_theme": "Tema de culoare", + "command": "Comandă", "comment_deleted": "Comentariu șters", "comment_options": "Opțiuni comentariu", "comments_and_likes": "Comentarii & aprecieri", @@ -786,8 +807,8 @@ "custom_locale": "Setare Regională Personalizată", "custom_locale_description": "Formatați datele și numerele ÃŽn funcție de limbă și regiune", "custom_url": "URL personalizat", - "daily_title_text_date": "E, MMM dd", - "daily_title_text_date_year": "E, MMM dd, yyyy", + "daily_title_text_date": "E, LLL zz", + "daily_title_text_date_year": "E, LLL zz, aaaa", "dark": "Întunecat", "dark_theme": "Comută tema ÃŽntunecată", "date": "Dată", @@ -965,6 +986,7 @@ "failed_to_unstack_assets": "Eșec la desfășurarea resurselor", "failed_to_update_notification_status": "Nu s-a putut actualiza starea notificării", "incorrect_email_or_password": "E-mail sau parolă incorect/ă", + "library_folder_already_exists": "Această cale de import există deja.", "paths_validation_failed": "{paths, plural, one {# cale} other {# căi}} nu a trecut validarea", "profile_picture_transparent_pixels": "Pozele de profil nu pot avea pixeli transparenți. Te rugăm să mărești imaginea și/sau să o muți.", "quota_higher_than_disk_size": "Ați stabilit o valoare a spațiului de stocare mai mare decÃĸt dimensiunea discului", @@ -1049,6 +1071,7 @@ "unable_to_update_user": "Nu se poate actualiza utilizatorul", "unable_to_upload_file": "Nu se poate ÃŽncărca fișierul" }, + "exclusion_pattern": "Model de excludere", "exif": "Format comutabil pentru fișiere imagine", "exif_bottom_sheet_description": "Adaugă Descriere...", "exif_bottom_sheet_description_error": "Eroare la actualizarea descrierii", @@ -1056,7 +1079,7 @@ "exif_bottom_sheet_location": "LOCAȚIE", "exif_bottom_sheet_no_description": "Fără descriere", "exif_bottom_sheet_people": "PERSOANE", - "exif_bottom_sheet_person_add_person": "Adăugați nume", + "exif_bottom_sheet_person_add_person": "Adaugă nume", "exit_slideshow": "Ieșire din Prezentare", "expand_all": "Extindeți-le pe toate", "experimental_settings_new_asset_list_subtitle": "Acțiune ÃŽn desfășurare", @@ -1108,6 +1131,7 @@ "folders_feature_description": "Răsfoire ÃŽn conținutul folderului pentru fotografiile și videoclipurile din sistemul de fișiere", "forgot_pin_code_question": "Ai uitat codul PIN?", "forward": "Redirecționare", + "full_path": "Calea completă: {path}", "gcast_enabled": "Google Cast", "gcast_enabled_description": "Această funcție ÃŽncarcă resurse externe de la Google pentru a funcționa.", "general": "General", @@ -1116,7 +1140,7 @@ "get_wifiname_error": "Nu s-a putut obține numele rețelei Wi-Fi. Asigurați-vă că ați acordat permisiunile necesare și că sunteți conectat la o rețea Wi-Fi", "getting_started": "Noțiuni de Bază", "go_back": "Întoarcere", - "go_to_folder": "Accesați folderul", + "go_to_folder": "Accesează folderul", "go_to_search": "Spre căutare", "gps": "GPS", "gps_missing": "Fără GPS", @@ -1133,7 +1157,7 @@ "hash_asset": "Hash-ul resursei", "hashed_assets": "Resurse hashed", "hashing": "Generare hash", - "header_settings_add_header_tip": "Adăugați header", + "header_settings_add_header_tip": "Adaugă header", "header_settings_field_validator_msg": "Valoarea nu poate fi goală", "header_settings_header_name_input": "Numele antetului", "header_settings_header_value_input": "Valoarea antetului", @@ -1144,6 +1168,7 @@ "hide_named_person": "Ascundeți persoana {name}", "hide_password": "Ascundeți parola", "hide_person": "Ascundeți persoana", + "hide_text_recognition": "Ascunde recunoașterea textului", "hide_unnamed_people": "Ascundeți persoanele fără nume", "home_page_add_to_album_conflicts": "Au fost adăugate {added} de resurse ÃŽn albumul {album}. {failed} de resurse sunt deja adăugate ÃŽn album.", "home_page_add_to_album_err_local": "Resursele locale nu pot fi adăugate ÃŽn albume ÃŽncă, omitere", @@ -1158,7 +1183,7 @@ "home_page_favorite_err_partner": "Momentan nu se pot adăuga fișierele partenerului la favorite, omitere", "home_page_first_time_notice": "Dacă este prima dată cÃĸnd utilizezi aplicația, te rugăm să te asiguri că alegi unul sau mai multe albume de backup, astfel ÃŽncÃĸt cronologia să poată fi populată cu fotografiile și videoclipurile din aceste albume", "home_page_locked_error_local": "Nu se pot muta resursele locale ÃŽn folderul blocat, se omit", - "home_page_locked_error_partner": "Nu se pot muta resursele partenerului ÃŽn folderul blocat, se omit.", + "home_page_locked_error_partner": "Nu se pot muta resursele partenerului ÃŽn folderul blocat, omit", "home_page_share_err_local": "Nu se pot distribui fișiere locale prin link, omitere", "home_page_upload_err_limit": "Se pot ÃŽncărca maxim 30 de resurse odată, omitere", "host": "Gazdă", @@ -1189,6 +1214,8 @@ "import_path": "Calea de import", "in_albums": "În {count, plural, one {# album} other {# albume}}", "in_archive": "În arhivă", + "in_year": "În {year}", + "in_year_selector": "În", "include_archived": "Include resursele arhivate", "include_shared_albums": "Include albumele partajate", "include_shared_partner_assets": "Include resursele partenerilor partajați", @@ -1225,6 +1252,7 @@ "language_setting_description": "Selectați limba preferată", "large_files": "Fișiere mari", "last": "Ultimul", + "last_months": "{count, plural, one {luna trecută} other {ultimele # luni}}", "last_seen": "Văzut ultima dată", "latest_version": "Ultima Versiune", "latitude": "Latitudine", @@ -1234,6 +1262,8 @@ "let_others_respond": "Permite altora să răspundă", "level": "Nivel", "library": "Librărie", + "library_add_folder": "Adaugă folder", + "library_edit_folder": "Editați folderul", "library_options": "Opțiuni de bibliotecă", "library_page_device_albums": "Albume ÃŽn dispozitiv", "library_page_new_album": "Album nou", @@ -1305,8 +1335,17 @@ "loop_videos_description": "Activați pentru a rula in buclă automat un videoclip ÃŽn vizualizatorul de detalii.", "main_branch_warning": "Utilizați o versiune de dezvoltare; vă recomandăm insistent să utilizați o versiune de lansare!", "main_menu": "Meniu principal", + "maintenance_description": "Immich a fost pus ÃŽn modul de ÃŽntreținere.", + "maintenance_end": "Ieșire din modul de ÃŽntreținere", + "maintenance_end_error": "Nu s-a reușit ieșirea din modul de ÃŽntreținere.", + "maintenance_logged_in_as": "Conectat ÃŽn prezent ca {user}", + "maintenance_title": "Temporar indisponibil", "make": "Marcă", "manage_geolocation": "Gestionați locația", + "manage_media_access_rationale": "Această permisiune este necesară pentru gestionarea corespunzătoare a mutării activelor ÃŽn coșul de gunoi și restaurarea acestora din acesta.", + "manage_media_access_settings": "Deschideți setările", + "manage_media_access_subtitle": "Permiteți aplicației Immich să gestioneze și să mute fișierele media.", + "manage_media_access_title": "Acces la gestionarea mediilor", "manage_shared_links": "Administrați link-urile distribuite", "manage_sharing_with_partners": "Gestionați partajarea cu partenerii", "manage_the_app_settings": "Gestionați setările aplicației", @@ -1366,10 +1405,11 @@ "mobile_app_download_onboarding_note": "Descarcă aplicația mobilă folosind următoarele opțiuni", "model": "Model", "month": "Lună", - "monthly_title_text_date_format": "MMMM y", + "monthly_title_text_date_format": "LLLL a", "more": "Mai mult", "move": "Mută", "move_off_locked_folder": "Mutați din folderul blocat", + "move_to": "Mutare la", "move_to_lock_folder_action_prompt": "{count} adăugate ÃŽn dosarul blocat", "move_to_locked_folder": "Mută ÃŽn dosarul blocat", "move_to_locked_folder_confirmation": "Aceste fotografii și videoclipuri vor fi eliminate din toate albumele și vor putea fi vizualizate doar din dosarul blocat", @@ -1399,6 +1439,7 @@ "new_pin_code": "Cod PIN nou", "new_pin_code_subtitle": "Aceasta este prima dată cÃĸnd accesați folderul blocat. Creați un cod PIN pentru a accesa ÃŽn siguranță această pagină", "new_timeline": "Noua cronologie", + "new_update": "Nouă actualizare", "new_user_created": "Utilizator nou creat", "new_version_available": "VERSIUNE NOUĂ DISPONIBILĂ", "newest_first": "Cel mai nou primul", @@ -1414,12 +1455,14 @@ "no_cast_devices_found": "Nu s-au găsit dispozitive de difuzare", "no_checksum_local": "Nu există checksum – nu se pot prelua resursele locale", "no_checksum_remote": "Nu există checksum – nu se pot prelua resursele la distanță", + "no_devices": "Nu există dispozitive autorizate", "no_duplicates_found": "Nu au fost găsite duplicate.", "no_exif_info_available": "Nu există informații exif disponibile", "no_explore_results_message": "Încarcați mai multe fotografii pentru a vă explora colecția.", - "no_favorites_message": "Adăugați favorite pentru a găsi rapid cele mai bune fotografii și videoclipuri", + "no_favorites_message": "Adaugă favorite pentru a găsi rapid cele mai bune fotografii și videoclipuri", "no_libraries_message": "Creați o bibliotecă externă pentru a vă vizualiza fotografiile și videoclipurile", "no_local_assets_found": "Nicio resursă locală găsită cu acest checksum", + "no_location_set": "Locație neconfigurată", "no_locked_photos_message": "Fotografiile și videoclipurile din folderul blocat sunt ascunse și nu vor apărea atunci cÃĸnd răsfoiți sau căutați ÃŽn bibliotecă.", "no_name": "Fără Nume", "no_notifications": "Nicio notificare", @@ -1430,6 +1473,7 @@ "no_results_description": "Încercați un sinonim sau un cuvÃĸnt cheie mai general", "no_shared_albums_message": "Creați un album pentru a partaja fotografii și videoclipuri cu persoanele din rețeaua dvs", "no_uploads_in_progress": "Nicio ÃŽncărcare ÃŽn curs", + "not_allowed": "Nu este permis", "not_available": "N/A", "not_in_any_album": "Nu există ÃŽn niciun album", "not_selected": "Neselectat", @@ -1478,6 +1522,7 @@ "other_variables": "Alte variabile", "owned": "Deținut", "owner": "Proprietar", + "page": "Pagină", "partner": "Partener", "partner_can_access": "{partner} poate accesa", "partner_can_access_assets": "Toate fotografiile și videoclipurile tale, cu excepția celor din arhivate și sterse", @@ -1540,6 +1585,8 @@ "photos_count": "{count, plural, one {{count, number} imagine} other{{count, number} imagini}}", "photos_from_previous_years": "Fotografii din anii anteriori", "pick_a_location": "Alegeți o locație", + "pick_custom_range": "Interval personalizat", + "pick_date_range": "Selectați un interval de date", "pin_code_changed_successfully": "Codul PIN a fost modificat cu succes", "pin_code_reset_successfully": "Codul PIN a fost resetat cu succes", "pin_code_setup_successfully": "Configurarea cu succes a unui cod PIN", @@ -1727,7 +1774,7 @@ "search_by_filename": "Căutați după numele fișierului sau extensie", "search_by_filename_example": "i.e. IMG_1234.JPG sau PNG", "search_by_ocr": "Caută folosind OCR", - "search_by_ocr_example": "Latte", + "search_by_ocr_example": "Factură", "search_camera_lens_model": "Caută modelul lentilei...", "search_camera_make": "Se caută marca camerei...", "search_camera_model": "Se caută modelul camerei...", @@ -1807,6 +1854,8 @@ "server_offline": "Serverul este offline", "server_online": "Server online", "server_privacy": "Confidențialitatea serverului", + "server_restarting_description": "Această pagină se va reÃŽmprospăta ÃŽn scurt timp.", + "server_restarting_title": "Serverul se restartează", "server_stats": "Statistici server", "server_update_available": "Actualizare pentru server disponibilă", "server_version": "Versiune Server", @@ -1930,6 +1979,7 @@ "show_slideshow_transition": "Afișați tranziția de prezentare", "show_supporter_badge": "Insigna suporterului", "show_supporter_badge_description": "Arată o insignă de suporter", + "show_text_recognition": "Afișare recunoaștere text", "show_text_search_menu": "Afișează meniul de căutare text", "shuffle": "Amestecați", "sidebar": "Bara laterală", @@ -2000,6 +2050,7 @@ "tags": "Etichete", "tap_to_run_job": "Atingeți pentru a rula job-ul", "template": "Șablon", + "text_recognition": "Recunoașterea textului", "theme": "Temă", "theme_selection": "Selectarea temei", "theme_selection_description": "Setați automat tema la mod luminos sau ÃŽntunecată, ÃŽn funcție de preferințele de sistem ale browserului dvs", @@ -2020,6 +2071,7 @@ "third_party_resources": "Resurse Terță Parte", "time": "Timp", "time_based_memories": "Amintiri bazate pe timp", + "time_based_memories_duration": "Numărul de secunde pentru afișarea fiecărei imagini.", "timeline": "Cronologie", "timezone": "Fus orar", "to_archive": "Arhivă", @@ -2031,6 +2083,7 @@ "to_select": "a selecta", "to_trash": "Coș de gunoi", "toggle_settings": "Activați setările", + "toggle_theme_description": "Comută tema", "total": "Total", "total_usage": "Utilizare totală", "trash": "Coș de gunoi", @@ -2160,6 +2213,7 @@ "welcome": "Bun venit", "welcome_to_immich": "Bun venit la Immich", "wifi_name": "Nume Wi-Fi", + "workflow": "Flux de lucru", "wrong_pin_code": "Cod PIN greșit", "year": "An", "years_ago": "acum {years, plural, one {# an} other {# ani}} ÃŽn urmă", diff --git a/i18n/ru.json b/i18n/ru.json index f6a342b735..b7561b084c 100644 --- a/i18n/ru.json +++ b/i18n/ru.json @@ -7,6 +7,7 @@ "action_common_update": "ОбĐŊĐžĐ˛Đ¸Ņ‚ŅŒ", "actions": "ДĐĩĐšŅŅ‚Đ˛Đ¸Ņ", "active": "Đ’Ņ‹ĐŋĐžĐģĐŊŅĐĩŅ‚ŅŅ", + "active_count": "Đ’Ņ‹ĐŋĐžĐģĐŊŅŅŽŅ‚ŅŅ: {count}", "activity": "ДĐĩĐšŅŅ‚Đ˛Đ¸Ņ", "activity_changed": "АĐēŅ‚Đ¸Đ˛ĐŊĐžŅŅ‚ŅŒ {enabled, select, true {вĐēĐģŅŽŅ‡ĐĩĐŊа} other {ĐžŅ‚ĐēĐģŅŽŅ‡ĐĩĐŊа}}", "add": "Đ”ĐžĐąĐ°Đ˛Đ¸Ņ‚ŅŒ", @@ -67,6 +68,7 @@ "confirm_reprocess_all_faces": "Đ’Ņ‹ Đ´ĐĩĐšŅŅ‚Đ˛Đ¸Ņ‚ĐĩĐģҌĐŊĐž Ņ…ĐžŅ‚Đ¸Ņ‚Đĩ ĐŋĐĩŅ€ĐĩĐžĐŋŅ€ĐĩĐ´ĐĩĐģĐ¸Ņ‚ŅŒ Đ˛ŅĐĩ ĐģĐ¸Ņ†Đ°? ĐĸаĐēĐļĐĩ ĐąŅƒĐ´ŅƒŅ‚ ĐžŅ‡Đ¸Ņ‰ĐĩĐŊŅ‹ иĐŧĐĩĐŊа Đ˛ŅĐĩŅ… ĐģŅŽĐ´ĐĩĐš.", "confirm_user_password_reset": "Đ’Ņ‹ Đ´ĐĩĐšŅŅ‚Đ˛Đ¸Ņ‚ĐĩĐģҌĐŊĐž Ņ…ĐžŅ‚Đ¸Ņ‚Đĩ ŅĐąŅ€ĐžŅĐ¸Ņ‚ŅŒ ĐŋĐ°Ņ€ĐžĐģҌ ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅ {user}?", "confirm_user_pin_code_reset": "Đ’Ņ‹ Đ´ĐĩĐšŅŅ‚Đ˛Đ¸Ņ‚ĐĩĐģҌĐŊĐž Ņ…ĐžŅ‚Đ¸Ņ‚Đĩ ŅĐąŅ€ĐžŅĐ¸Ņ‚ŅŒ PIN-ĐēОд ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅ {user}?", + "copy_config_to_clipboard_description": "КоĐŋĐ¸Ņ€ĐžĐ˛Đ°Ņ‚ŅŒ Ņ‚ĐĩĐēŅƒŅ‰ŅƒŅŽ ĐēĐžĐŊŅ„Đ¸ĐŗŅƒŅ€Đ°Ņ†Đ¸ŅŽ ŅĐ¸ŅŅ‚ĐĩĐŧŅ‹ в JSON в ĐąŅƒŅ„ĐĩŅ€ ОйĐŧĐĩĐŊа", "create_job": "ĐĄĐžĐˇĐ´Đ°Ņ‚ŅŒ ĐˇĐ°Đ´Đ°Ņ‡Ņƒ", "cron_expression": "Đ Đ°ŅĐŋĐ¸ŅĐ°ĐŊиĐĩ (Đ˛Ņ‹Ņ€Đ°ĐļĐĩĐŊиĐĩ ĐŋĐģаĐŊĐ¸Ņ€ĐžĐ˛Ņ‰Đ¸Đēа cron)", "cron_expression_description": "Đ§Đ°ŅŅ‚ĐžŅ‚Đ° и Đ˛Ņ€ĐĩĐŧŅ Đ˛Ņ‹ĐŋĐžĐģĐŊĐĩĐŊĐ¸Ņ ĐˇĐ°Đ´Đ°Ņ‡Đ¸ в Ņ„ĐžŅ€ĐŧĐ°Ņ‚Đĩ ĐŋĐģаĐŊĐ¸Ņ€ĐžĐ˛Ņ‰Đ¸Đēа cron. Đ’ĐžŅĐŋĐžĐģŅŒĐˇŅƒĐšŅ‚ĐĩҁҌ ĐŋŅ€Đ¸ ĐŊĐĩĐžĐąŅ…ĐžĐ´Đ¸ĐŧĐžŅŅ‚Đ¸ Đ˛Đ¸ĐˇŅƒĐ°ĐģҌĐŊŅ‹Đŧ Ņ€ĐĩдаĐēŅ‚ĐžŅ€ĐžĐŧ Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "ĐžŅ‚ĐēĐģŅŽŅ‡Đ¸Ņ‚ŅŒ Đ˛Ņ…ĐžĐ´", "duplicate_detection_job_description": "ЗаĐŋ҃ҁĐēаĐĩŅ‚ ĐžĐŋŅ€ĐĩĐ´ĐĩĐģĐĩĐŊиĐĩ ĐŋĐžŅ…ĐžĐļĐ¸Ņ… Đ¸ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊиК ĐŋŅ€Đ¸ ĐŋĐžĐŧĐžŅ‰Đ¸ ĐŧĐ°ŅˆĐ¸ĐŊĐŊĐžĐŗĐž ĐˇŅ€ĐĩĐŊĐ¸Ņ (ĐˇĐ°Đ˛Đ¸ŅĐ¸Ņ‚ ĐžŅ‚ ҃ĐŧĐŊĐžĐŗĐž ĐŋĐžĐ¸ŅĐēа)", "exclusion_pattern_description": "ШайĐģĐžĐŊŅ‹ Đ¸ŅĐēĐģŅŽŅ‡ĐĩĐŊиК ĐŋОСвОĐģŅŅŽŅ‚ Đ¸ĐŗĐŊĐžŅ€Đ¸Ņ€ĐžĐ˛Đ°Ņ‚ŅŒ ĐŊĐĩĐēĐžŅ‚ĐžŅ€Ņ‹Đĩ Ņ„Đ°ĐšĐģŅ‹ и ĐŋаĐŋĐēи ĐŋŅ€Đ¸ ҁĐēаĐŊĐ¸Ņ€ĐžĐ˛Đ°ĐŊии йийĐģĐ¸ĐžŅ‚ĐĩĐēи. Đ­Ņ‚Đž ĐŋĐžĐģĐĩСĐŊĐž, ĐĩҁĐģи в ĐŋаĐŋĐēĐĩ ĐĩŅŅ‚ŅŒ Ņ„Đ°ĐšĐģŅ‹, ĐēĐžŅ‚ĐžŅ€Ņ‹Đĩ ĐŊĐĩ ĐŊ҃ĐļĐŊĐž иĐŧĐŋĐžŅ€Ņ‚Đ¸Ņ€ĐžĐ˛Đ°Ņ‚ŅŒ. НаĐŋŅ€Đ¸ĐŧĐĩŅ€ RAW-Ņ„Đ°ĐšĐģŅ‹.", - "external_library_management": "ĐŖĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиĐĩ вĐŊĐĩ҈ĐŊиĐŧи йийĐģĐ¸ĐžŅ‚ĐĩĐēаĐŧи", + "export_config_as_json_description": "ĐĄĐžŅ…Ņ€Đ°ĐŊĐ¸Ņ‚ŅŒ Ņ‚ĐĩĐēŅƒŅ‰ŅƒŅŽ ĐēĐžĐŊŅ„Đ¸ĐŗŅƒŅ€Đ°Ņ†Đ¸ŅŽ ŅĐ¸ŅŅ‚ĐĩĐŧŅ‹ в Ņ„Đ°ĐšĐģ JSON", + "external_libraries_page_description": "АдĐŧиĐŊĐ¸ŅŅ‚Ņ€Đ¸Ņ€ĐžĐ˛Đ°ĐŊиĐĩ вĐŊĐĩ҈ĐŊĐĩĐš йийĐģĐ¸ĐžŅ‚ĐĩĐēи", "face_detection": "ОбĐŊĐ°Ņ€ŅƒĐļĐĩĐŊиĐĩ ĐģĐ¸Ņ†", "face_detection_description": "ОбĐŊĐ°Ņ€ŅƒĐļиваĐĩŅ‚ ĐģĐ¸Ņ†Đ° ĐŊа ĐžĐąŅŠĐĩĐēŅ‚Đ°Ņ… ҁ Đ¸ŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиĐĩĐŧ ĐŧĐ°ŅˆĐ¸ĐŊĐŊĐžĐŗĐž ĐžĐąŅƒŅ‡ĐĩĐŊĐ¸Ņ. ДĐģŅ видĐĩĐž аĐŊаĐģĐ¸ĐˇĐ¸Ņ€ŅƒĐĩŅ‚ŅŅ Ņ‚ĐžĐģҌĐēĐž ĐŧиĐŊĐ¸Đ°Ņ‚ŅŽŅ€Đ°. КĐŊĐžĐŋĐēа \"ОбĐŊĐžĐ˛Đ¸Ņ‚ŅŒ\" СаĐŋ҃ҁĐēаĐĩŅ‚ ĐŋĐžĐ˛Ņ‚ĐžŅ€ĐŊŅƒŅŽ ĐžĐąŅ€Đ°ĐąĐžŅ‚Đē҃ Đ˛ŅĐĩŅ… ĐžĐąŅŠĐĩĐēŅ‚ĐžĐ˛. \"ĐĄĐąŅ€ĐžŅ\" — Đ´ĐžĐŋĐžĐģĐŊĐ¸Ņ‚ĐĩĐģҌĐŊĐž ŅƒĐ´Đ°ĐģŅĐĩŅ‚ Đ˛ŅĐĩ иĐŧĐĩŅŽŅ‰Đ¸ĐĩŅŅ даĐŊĐŊŅ‹Đĩ Đž ĐģĐ¸Ņ†Đ°Ņ…. \"ĐžŅ‚ŅŅƒŅ‚ŅŅ‚Đ˛ŅƒŅŽŅ‰Đ¸Đĩ\" — ŅŅ‚Đ°Đ˛Đ¸Ņ‚ в ĐžŅ‡ĐĩŅ€ĐĩĐ´ŅŒ ĐžĐąŅŠĐĩĐē҂ҋ, ĐēĐžŅ‚ĐžŅ€Ņ‹Đĩ Đĩ҉ґ ĐŊĐĩ ĐąŅ‹Đģи ĐžĐąŅ€Đ°ĐąĐžŅ‚Đ°ĐŊŅ‹. ОбĐŊĐ°Ņ€ŅƒĐļĐĩĐŊĐŊŅ‹Đĩ ĐģĐ¸Ņ†Đ° ĐŋĐžĐŧĐĩŅ‰Đ°ŅŽŅ‚ŅŅ в ĐžŅ‡ĐĩŅ€ĐĩĐ´ŅŒ Đ´ĐģŅ ĐˇĐ°Đ´Đ°Ņ‡Đ¸ Đ Đ°ŅĐŋОСĐŊаваĐŊиĐĩ ĐģĐ¸Ņ† и ĐŋĐžŅĐģĐĩĐ´ŅƒŅŽŅ‰ĐĩĐš Đ¸Ņ… ĐŋŅ€Đ¸Đ˛ŅĐˇĐēи Đē ŅŅƒŅ‰ĐĩŅŅ‚Đ˛ŅƒŅŽŅ‰Đ¸Đŧ иĐģи ĐŊĐžĐ˛Ņ‹Đŧ ĐģŅŽĐ´ŅĐŧ.", "facial_recognition_job_description": "Đ“Ņ€ŅƒĐŋĐŋĐ¸Ņ€ŅƒĐĩŅ‚ и ĐŊаСĐŊĐ°Ņ‡Đ°ĐĩŅ‚ ОйĐŊĐ°Ņ€ŅƒĐļĐĩĐŊĐŊŅ‹Đĩ ĐģĐ¸Ņ†Đ° ĐģŅŽĐ´ŅĐŧ. Đ’Ņ‹ĐŋĐžĐģĐŊŅĐĩŅ‚ŅŅ ĐŋĐžŅĐģĐĩ СавĐĩŅ€ŅˆĐĩĐŊĐ¸Ņ ĐˇĐ°Đ´Đ°Ņ‡Đ¸ ОбĐŊĐ°Ņ€ŅƒĐļĐĩĐŊиĐĩ ĐģĐ¸Ņ†. КĐŊĐžĐŋĐēа \"ĐĄĐąŅ€ĐžŅ\" (ĐŋĐĩŅ€Đĩ)ĐŊаСĐŊĐ°Ņ‡Đ°ĐĩŅ‚ Đ˛ŅĐĩ ĐģĐ¸Ņ†Đ°. \"ĐžŅ‚ŅŅƒŅ‚ŅŅ‚Đ˛ŅƒŅŽŅ‰Đ¸Đĩ\" — дОйавĐģŅĐĩŅ‚ в ĐžŅ‡ĐĩŅ€ĐĩĐ´ŅŒ ĐžĐąŅ€Đ°ĐąĐžŅ‚Đēи ĐģĐ¸Ņ†Đ°, ĐŊĐĩ ĐŋŅ€Đ¸Đ˛ŅĐˇĐ°ĐŊĐŊŅ‹Đĩ Đē ҇ĐĩĐģОвĐĩĐē҃.", @@ -102,14 +105,15 @@ "image_thumbnail_description": "МаĐģĐĩĐŊҌĐēĐ°Ņ ĐŧиĐŊĐ¸Đ°Ņ‚ŅŽŅ€Đ° ҁ ŅƒĐ´Đ°ĐģĐĩĐŊĐŊŅ‹Đŧи ĐŧĐĩŅ‚Đ°Đ´Đ°ĐŊĐŊŅ‹Đŧи, Đ¸ŅĐŋĐžĐģŅŒĐˇŅƒĐĩĐŧĐ°Ņ ĐŋŅ€Đ¸ ĐŋŅ€ĐžŅĐŧĐžŅ‚Ņ€Đĩ ĐŗŅ€ŅƒĐŋĐŋ Ņ„ĐžŅ‚ĐžĐŗŅ€Đ°Ņ„Đ¸Đš, Ņ‚Đ°ĐēĐ¸Ņ… ĐēаĐē ĐžŅĐŊОвĐŊĐ°Ņ Đ˛Ņ€ĐĩĐŧĐĩĐŊĐŊĐ°Ņ ҈ĐēаĐģа", "image_thumbnail_quality_description": "ĐšĐ°Ņ‡ĐĩŅŅ‚Đ˛Đž ĐŧиĐŊĐ¸Đ°Ņ‚ŅŽŅ€ ĐžŅ‚ 1 Đ´Đž 100. ЧĐĩĐŧ Đ˛Ņ‹ŅˆĐĩ ĐēĐ°Ņ‡ĐĩŅŅ‚Đ˛Đž, Ņ‚ĐĩĐŧ ĐģŅƒŅ‡ŅˆĐĩ, ĐŊĐž ĐŋŅ€Đ¸ ŅŅ‚ĐžĐŧ ŅĐžĐˇĐ´Đ°ŅŽŅ‚ŅŅ Ņ„Đ°ĐšĐģŅ‹ йОĐģҌ҈ĐĩĐŗĐž Ņ€Đ°ĐˇĐŧĐĩŅ€Đ° и ĐŧĐžĐļĐĩŅ‚ ҁĐŊĐ¸ĐˇĐ¸Ņ‚ŅŒŅŅ ҁĐēĐžŅ€ĐžŅŅ‚ŅŒ ĐžŅ‚ĐēĐģиĐēа ĐŋŅ€Đ¸ĐģĐžĐļĐĩĐŊĐ¸Ņ.", "image_thumbnail_title": "ĐĐ°ŅŅ‚Ņ€ĐžĐšĐēи ĐŧиĐŊĐ¸Đ°Ņ‚ŅŽŅ€", + "import_config_from_json_description": "ИĐŧĐŋĐžŅ€Ņ‚Đ¸Ņ€ĐžĐ˛Đ°Ņ‚ŅŒ ĐēĐžĐŊŅ„Đ¸ĐŗŅƒŅ€Đ°Ņ†Đ¸ŅŽ ŅĐ¸ŅŅ‚ĐĩĐŧŅ‹, ĐˇĐ°ĐŗŅ€ŅƒĐˇĐ¸Đ˛ JSON Ņ„Đ°ĐšĐģ ĐŊĐ°ŅŅ‚Ņ€ĐžĐĩĐē", "job_concurrency": "Đ§Đ¸ŅĐģĐž ĐŋĐ°Ņ€Đ°ĐģĐģĐĩĐģҌĐŊҋ҅ ĐŋĐžŅ‚ĐžĐēОв ĐˇĐ°Đ´Đ°Ņ‡Đ¸ {job}", "job_created": "Đ—Đ°Đ´Đ°Ņ‡Đ° ŅĐžĐˇĐ´Đ°ĐŊа", "job_not_concurrency_safe": "Đ­Ņ‚Đ° ĐˇĐ°Đ´Đ°Ņ‡Đ° ĐŊĐĩ ОйĐĩҁĐŋĐĩŅ‡Đ¸Đ˛Đ°ĐĩŅ‚ ĐąĐĩСОĐŋĐ°ŅĐŊĐžŅŅ‚ŅŒ ĐŋĐ°Ņ€Đ°ĐģĐģĐĩĐģҌĐŊĐžŅŅ‚Đ¸ Đ˛Ņ‹ĐŋĐžĐģĐŊĐĩĐŊĐ¸Ņ.", "job_settings": "ĐĐ°ŅŅ‚Ņ€ĐžĐšĐēи ĐˇĐ°Đ´Đ°Ņ‡", "job_settings_description": "ĐŖĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиĐĩ ĐŋĐ°Ņ€Đ°ĐģĐģĐĩĐģҌĐŊĐžŅŅ‚ŅŒŅŽ Đ˛Ņ‹ĐŋĐžĐģĐŊĐĩĐŊĐ¸Ņ ĐˇĐ°Đ´Đ°Ņ‡", - "job_status": "ĐĄĐžŅŅ‚ĐžŅĐŊиĐĩ Đ˛Ņ‹ĐŋĐžĐģĐŊĐĩĐŊĐ¸Ņ ĐˇĐ°Đ´Đ°Ņ‡", "jobs_delayed": "{jobCount, plural, one {# ĐžŅ‚ĐģĐžĐļĐĩĐŊа} other {# ĐžŅ‚ĐģĐžĐļĐĩĐŊĐž}}", "jobs_failed": "{jobCount, plural, other {# ĐŊĐĩ ŅƒĐ´Đ°ĐģĐžŅŅŒ Đ˛Ņ‹ĐŋĐžĐģĐŊĐ¸Ņ‚ŅŒ}}", + "jobs_over_time": "Đ—Đ°Đ´Đ°Ņ‡Đ¸ вО Đ˛Ņ€ĐĩĐŧĐĩĐŊи", "library_created": "ХОСдаĐŊа ĐŊĐžĐ˛Đ°Ņ йийĐģĐ¸ĐžŅ‚ĐĩĐēа: {library}", "library_deleted": "БибĐģĐ¸ĐžŅ‚ĐĩĐēа ŅƒĐ´Đ°ĐģĐĩĐŊа", "library_details": "ĐŸĐ°Ņ€Đ°ĐŧĐĩ҂Ҁҋ йийĐģĐ¸ĐžŅ‚ĐĩĐēи", @@ -182,6 +186,7 @@ "maintenance_start": "ВĐēĐģŅŽŅ‡Đ¸Ņ‚ŅŒ Ņ€ĐĩĐļиĐŧ ĐžĐąŅĐģ҃ĐļиваĐŊĐ¸Ņ", "maintenance_start_error": "НĐĩ ŅƒĐ´Đ°ĐģĐžŅŅŒ ĐŋĐĩŅ€ĐĩĐšŅ‚Đ¸ в Ņ€ĐĩĐļиĐŧ ĐžĐąŅĐģ҃ĐļиваĐŊĐ¸Ņ.", "manage_concurrency": "ĐŖĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиĐĩ ĐŋĐ°Ņ€Đ°ĐģĐģĐĩĐģҌĐŊĐžŅŅ‚ŅŒŅŽ", + "manage_concurrency_description": "ПĐĩŅ€ĐĩŅ…ĐžĐ´ ĐŊа ŅŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Ņƒ ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēи ĐˇĐ°Đ´Đ°Ņ‡ Đ´ĐģŅ ҃ĐŋŅ€Đ°Đ˛ĐģĐĩĐŊĐ¸Ņ ĐŋĐ°Ņ€Đ°ĐģĐģĐĩĐģҌĐŊĐžŅŅ‚ŅŒŅŽ Đ¸Ņ… Đ˛Ņ‹ĐŋĐžĐģĐŊĐĩĐŊĐ¸Ņ", "manage_log_settings": "ĐŖĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиĐĩ ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēаĐŧи ĐļŅƒŅ€ĐŊаĐģа", "map_dark_style": "ĐĸŅ‘ĐŧĐŊŅ‹Đš ŅŅ‚Đ¸ĐģҌ", "map_enable_description": "ВĐēĐģŅŽŅ‡Đ¸Ņ‚ŅŒ Ņ„ŅƒĐŊĐēŅ†Đ¸Đ¸ ĐēĐ°Ņ€Ņ‚Ņ‹", @@ -223,7 +228,7 @@ "no_paths_added": "ĐŸŅƒŅ‚Đ¸ ĐŊĐĩ дОйавĐģĐĩĐŊŅ‹", "no_pattern_added": "ШайĐģĐžĐŊ ĐŊĐĩ дОйавĐģĐĩĐŊ", "note_apply_storage_label_previous_assets": "ĐŸŅ€Đ¸ĐŧĐĩŅ‡Đ°ĐŊиĐĩ: Đ§Ņ‚ĐžĐąŅ‹ ĐŋŅ€Đ¸ĐŧĐĩĐŊĐ¸Ņ‚ŅŒ ĐŧĐĩŅ‚Đē҃ Ņ…Ņ€Đ°ĐŊиĐģĐ¸Ņ‰Đ° Đē Ņ€Đ°ĐŊĐĩĐĩ ĐˇĐ°ĐŗŅ€ŅƒĐļĐĩĐŊĐŊŅ‹Đŧ ĐžĐąŅŠĐĩĐēŅ‚Đ°Đŧ, СаĐŋŅƒŅŅ‚Đ¸Ņ‚Đĩ", - "note_cannot_be_changed_later": "ПРИМЕЧАНИЕ: Đ­Ņ‚Đž ĐŊĐĩвОСĐŧĐžĐļĐŊĐž иСĐŧĐĩĐŊĐ¸Ņ‚ŅŒ ĐŋОСĐļĐĩ!", + "note_cannot_be_changed_later": "ПРИМЕЧАНИЕ: ПозĐļĐĩ ĐŊĐĩĐģŅŒĐˇŅ ĐąŅƒĐ´ĐĩŅ‚ иСĐŧĐĩĐŊĐ¸Ņ‚ŅŒ!", "notification_email_from_address": "ĐĐ´Ņ€Đĩҁ ĐžŅ‚ĐŋŅ€Đ°Đ˛Đ¸Ņ‚ĐĩĐģŅ", "notification_email_from_address_description": "ĐĐ´Ņ€Đĩҁ ŅĐģĐĩĐēŅ‚Ņ€ĐžĐŊĐŊОК ĐŋĐžŅ‡Ņ‚Ņ‹ ĐžŅ‚ĐŋŅ€Đ°Đ˛Đ¸Ņ‚ĐĩĐģŅ, ĐŊаĐŋŅ€Đ¸ĐŧĐĩŅ€: \"Immich Photo Server \".", "notification_email_host_description": "ДоĐŧĐĩĐŊĐŊĐžĐĩ иĐŧŅ ĐŋĐžŅ‡Ņ‚ĐžĐ˛ĐžĐŗĐž ҁĐĩŅ€Đ˛ĐĩŅ€Đ° (ĐŊаĐŋŅ€Đ¸ĐŧĐĩŅ€, smtp.immich.app)", @@ -271,10 +276,14 @@ "password_settings_description": "ĐŖĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиĐĩ ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēаĐŧи Đ˛Ņ…ĐžĐ´Đ° ĐŋĐž ĐŋĐ°Ņ€ĐžĐģŅŽ", "paths_validated_successfully": "Đ’ŅĐĩ ĐŋŅƒŅ‚Đ¸ ҃ҁĐŋĐĩ҈ĐŊĐž ĐŋŅ€ĐžŅˆĐģи ĐŋŅ€ĐžĐ˛ĐĩŅ€Đē҃", "person_cleanup_job": "ĐžŅ‡Đ¸ŅŅ‚Đēа ĐŋĐĩŅ€ŅĐžĐŊŅ‹", + "queue_details": "ĐŸĐ°Ņ€Đ°ĐŧĐĩ҂Ҁҋ ĐžŅ‡ĐĩŅ€Đĩди", + "queues": "ĐžŅ‡ĐĩŅ€Đĩди ĐˇĐ°Đ´Đ°Ņ‡", + "queues_page_description": "ĐĄŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Đ° ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēи СаĐŋĐģаĐŊĐ¸Ņ€ĐžĐ˛Đ°ĐŊĐŊҋ҅ ĐˇĐ°Đ´Đ°Ņ‡", "quota_size_gib": "РаСĐŧĐĩŅ€ ĐēĐ˛ĐžŅ‚Ņ‹ (GiB)", "refreshing_all_libraries": "ОбĐŊОвĐģĐĩĐŊиĐĩ Đ˛ŅĐĩŅ… йийĐģĐ¸ĐžŅ‚ĐĩĐē", "registration": "Đ ĐĩĐŗĐ¸ŅŅ‚Ņ€Đ°Ņ†Đ¸Ņ адĐŧиĐŊĐ¸ŅŅ‚Ņ€Đ°Ņ‚ĐžŅ€Đ°", "registration_description": "ПĐĩŅ€Đ˛Ņ‹Đš ĐˇĐ°Ņ€ĐĩĐŗĐ¸ŅŅ‚Ņ€Đ¸Ņ€ĐžĐ˛Đ°ĐŊĐŊŅ‹Đš ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģҌ ĐąŅƒĐ´ĐĩŅ‚ ĐŊаСĐŊĐ°Ņ‡ĐĩĐŊ адĐŧиĐŊĐ¸ŅŅ‚Ņ€Đ°Ņ‚ĐžŅ€ĐžĐŧ. ОĐŊ ҁĐŧĐžĐļĐĩŅ‚ ҃ĐŋŅ€Đ°Đ˛ĐģŅŅ‚ŅŒ ҁĐĩŅ€Đ˛ĐĩŅ€ĐžĐŧ и ŅĐžĐˇĐ´Đ°Đ˛Đ°Ņ‚ŅŒ Đ´ĐžĐŋĐžĐģĐŊĐ¸Ņ‚ĐĩĐģҌĐŊҋ҅ ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģĐĩĐš.", + "remove_failed_jobs": "ĐŖĐ´Đ°ĐģĐ¸Ņ‚ŅŒ ĐˇĐ°Đ´Đ°Ņ‡Đ¸ ҁ ĐžŅˆĐ¸ĐąĐēаĐŧи", "require_password_change_on_login": "ĐĸŅ€ĐĩĐąĐžĐ˛Đ°Ņ‚ŅŒ ҁĐŧĐĩĐŊ҃ ĐŋĐ°Ņ€ĐžĐģŅ ĐŋŅ€Đ¸ ĐŋĐĩŅ€Đ˛ĐžĐŧ Đ˛Ņ…ĐžĐ´Đĩ", "reset_settings_to_default": "ĐĄĐąŅ€ĐžŅ ĐŊĐ°ŅŅ‚Ņ€ĐžĐĩĐē Đ´Đž СĐŊĐ°Ņ‡ĐĩĐŊиК ĐŋĐž ҃ĐŧĐžĐģŅ‡Đ°ĐŊĐ¸ŅŽ", "reset_settings_to_recent_saved": "НĐĩ ŅĐžŅ…Ņ€Đ°ĐŊŅ‘ĐŊĐŊŅ‹Đĩ иСĐŧĐĩĐŊĐĩĐŊĐ¸Ņ ŅĐąŅ€ĐžŅˆĐĩĐŊŅ‹ Đē ĐŋĐžŅĐģĐĩĐ´ĐŊиĐŧ ŅĐžŅ…Ņ€Đ°ĐŊĐĩĐŊĐŊŅ‹Đŧ СĐŊĐ°Ņ‡ĐĩĐŊĐ¸ŅĐŧ", @@ -287,8 +296,10 @@ "server_public_users_description": "Đ’Ņ‹Đ˛ĐžĐ´Đ¸Ņ‚ŅŒ ҁĐŋĐ¸ŅĐžĐē ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģĐĩĐš (иĐŧĐĩĐŊа и email) в ĐžĐąŅ‰Đ¸Ņ… аĐģŅŒĐąĐžĐŧĐ°Ņ…. ĐšĐžĐŗĐ´Đ° ĐžŅ‚ĐēĐģŅŽŅ‡ĐĩĐŊĐž, ҁĐŋĐ¸ŅĐžĐē Đ´ĐžŅŅ‚ŅƒĐŋĐĩĐŊ Ņ‚ĐžĐģҌĐēĐž адĐŧиĐŊĐ¸ŅŅ‚Ņ€Đ°Ņ‚ĐžŅ€Đ°Đŧ, ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģи ҁĐŧĐžĐŗŅƒŅ‚ Đ´ĐĩĐģĐ¸Ņ‚ŅŒŅŅ Ņ‚ĐžĐģҌĐēĐž ҁҁҋĐģĐēОК.", "server_settings": "ĐĐ°ŅŅ‚Ņ€ĐžĐšĐēи ҁĐĩŅ€Đ˛ĐĩŅ€Đ°", "server_settings_description": "ĐŖĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиĐĩ ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēаĐŧи ҁĐĩŅ€Đ˛ĐĩŅ€Đ°", + "server_stats_page_description": "ĐĄŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Đ° ŅŅ‚Đ°Ņ‚Đ¸ŅŅ‚Đ¸Đēи ҁĐĩŅ€Đ˛ĐĩŅ€Đ°", "server_welcome_message": "ĐŸŅ€Đ¸Đ˛ĐĩŅ‚ŅŅ‚Đ˛ĐĩĐŊĐŊĐžĐĩ ŅĐžĐžĐąŅ‰ĐĩĐŊиĐĩ", "server_welcome_message_description": "ĐĄĐžĐžĐąŅ‰ĐĩĐŊиĐĩ, ĐēĐžŅ‚ĐžŅ€ĐžĐĩ ĐąŅƒĐ´ĐĩŅ‚ ĐžŅ‚ĐžĐąŅ€Đ°ĐļĐ°Ņ‚ŅŒŅŅ ĐŊа ŅŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Đĩ Đ˛Ņ…ĐžĐ´Đ°.", + "settings_page_description": "ĐĄŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Đ° ĐŊĐ°ŅŅ‚Ņ€ĐžĐĩĐē ҁĐĩŅ€Đ˛ĐĩŅ€Đ°", "sidecar_job": "МĐĩŅ‚Đ°Đ´Đ°ĐŊĐŊŅ‹Đĩ иС sidecar-Ņ„Đ°ĐšĐģОв", "sidecar_job_description": "ОбĐŊĐ°Ņ€ŅƒĐļиваĐĩŅ‚ и ŅĐ¸ĐŊŅ…Ņ€ĐžĐŊĐ¸ĐˇĐ¸Ņ€ŅƒĐĩŅ‚ ĐŧĐĩŅ‚Đ°Đ´Đ°ĐŊĐŊŅ‹Đĩ иС sidecar-Ņ„Đ°ĐšĐģОв", "slideshow_duration_description": "ДĐģĐ¸Ņ‚ĐĩĐģҌĐŊĐžŅŅ‚ŅŒ ĐŋĐžĐēаСа ҁĐģаКдОв в ҁĐĩĐē҃ĐŊĐ´Đ°Ņ…", @@ -407,7 +418,8 @@ "user_restore_scheduled_removal": "Đ’ĐžŅŅŅ‚Đ°ĐŊĐžĐ˛Đ¸Ņ‚ŅŒ ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅ (ĐžĐēĐžĐŊŅ‡Đ°Ņ‚ĐĩĐģҌĐŊĐžĐĩ ŅƒĐ´Đ°ĐģĐĩĐŊиĐĩ СаĐŋĐģаĐŊĐ¸Ņ€ĐžĐ˛Đ°ĐŊĐž ĐŊа {date, date, long})", "user_settings": "ПоĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģҌҁĐēиĐĩ ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēи", "user_settings_description": "ĐŖĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиĐĩ ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēаĐŧи ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģĐĩĐš", - "user_successfully_removed": "ПоĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģҌ {email} ĐąŅ‹Đģ ҃ҁĐŋĐĩ҈ĐŊĐž ŅƒĐ´Đ°ĐģĐĩĐŊ.", + "user_successfully_removed": "ПоĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģҌ {email} ҃ҁĐŋĐĩ҈ĐŊĐž ŅƒĐ´Đ°ĐģĐĩĐŊ.", + "users_page_description": "ĐĄŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Đ° ҃ĐŋŅ€Đ°Đ˛ĐģĐĩĐŊĐ¸Ņ ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧи", "version_check_enabled_description": "ВĐēĐģŅŽŅ‡Đ¸Ņ‚ŅŒ ĐŋŅ€ĐžĐ˛ĐĩŅ€Đē҃ ĐŊаĐģĐ¸Ņ‡Đ¸Ņ ĐŊĐžĐ˛Ņ‹Ņ… вĐĩŅ€ŅĐ¸Đš", "version_check_implications": "Đ¤ŅƒĐŊĐēŅ†Đ¸Ņ ĐŋŅ€ĐžĐ˛ĐĩŅ€Đēи вĐĩŅ€ŅĐ¸Đ¸ ĐŋĐĩŅ€Đ¸ĐžĐ´Đ¸Ņ‡ĐĩҁĐēи ĐžĐąŅ€Đ°Ņ‰Đ°ĐĩŅ‚ŅŅ Đē ŅĐ°ĐšŅ‚Ņƒ github.com", "version_check_settings": "ĐŸŅ€ĐžĐ˛ĐĩŅ€Đēа вĐĩŅ€ŅĐ¸Đ¸", @@ -498,7 +510,7 @@ "app_download_links": "ĐĄŅŅ‹ĐģĐēи Đ´ĐģŅ ĐˇĐ°ĐŗŅ€ŅƒĐˇĐēи ĐŧОйиĐģҌĐŊĐžĐŗĐž ĐŋŅ€Đ¸ĐģĐžĐļĐĩĐŊĐ¸Ņ", "app_settings": "ĐŸĐ°Ņ€Đ°ĐŧĐĩ҂Ҁҋ ĐŋŅ€Đ¸ĐģĐžĐļĐĩĐŊĐ¸Ņ", "app_stores": "ĐœĐ°ĐŗĐ°ĐˇĐ¸ĐŊŅ‹ ĐŋŅ€Đ¸ĐģĐžĐļĐĩĐŊиК", - "app_update_available": "Đ”ĐžŅŅ‚ŅƒĐŋĐŊа ĐŊĐžĐ˛Đ°Ņ вĐĩŅ€ŅĐ¸Ņ ĐŋŅ€Đ¸ĐģĐžĐļĐĩĐŊĐ¸Ņ", + "app_update_available": "Đ•ŅŅ‚ŅŒ ĐŊĐžĐ˛Đ°Ņ вĐĩŅ€ŅĐ¸Ņ", "appears_in": "ДобавĐģĐĩĐŊĐž в", "apply_count": "ĐŸŅ€Đ¸ĐŧĐĩĐŊĐ¸Ņ‚ŅŒ ({count, number})", "archive": "ĐŅ€Ņ…Đ¸Đ˛", @@ -640,6 +652,7 @@ "backup_options_page_title": "Đ ĐĩСĐĩŅ€Đ˛ĐŊĐžĐĩ ĐēĐžĐŋĐ¸Ņ€ĐžĐ˛Đ°ĐŊиĐĩ", "backup_setting_subtitle": "ĐĐ°ŅŅ‚Ņ€ĐžĐšĐēа аĐēŅ‚Đ¸Đ˛ĐŊĐžĐŗĐž и Ņ„ĐžĐŊĐžĐ˛ĐžĐŗĐž Ņ€ĐĩСĐĩŅ€Đ˛ĐŊĐžĐŗĐž ĐēĐžĐŋĐ¸Ņ€ĐžĐ˛Đ°ĐŊĐ¸Ņ", "backup_settings_subtitle": "ĐĐ°ŅŅ‚Ņ€ĐžĐšĐēа ĐˇĐ°ĐŗŅ€ŅƒĐˇĐēи ĐžĐąŅŠĐĩĐēŅ‚ĐžĐ˛", + "backup_upload_details_page_more_details": "ĐŸĐžĐ´Ņ€ĐžĐąĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ", "backward": "Назад", "biometric_auth_enabled": "БиоĐŧĐĩŅ‚Ņ€Đ¸Ņ‡ĐĩҁĐēĐ°Ņ Đ°ŅƒŅ‚ĐĩĐŊŅ‚Đ¸Ņ„Đ¸ĐēĐ°Ņ†Đ¸Ņ вĐēĐģŅŽŅ‡ĐĩĐŊа", "biometric_locked_out": "ВаĐŧ СаĐēҀҋ҂ Đ´ĐžŅŅ‚ŅƒĐŋ Đē йиОĐŧĐĩŅ‚Ņ€Đ¸Ņ‡ĐĩҁĐēОК Đ°ŅƒŅ‚ĐĩĐŊŅ‚Đ¸Ņ„Đ¸ĐēĐ°Ņ†Đ¸Đ¸", @@ -706,6 +719,7 @@ "check_corrupt_asset_backup_button": "ĐŸŅ€ĐžĐ˛ĐĩŅ€Đ¸Ņ‚ŅŒ", "check_corrupt_asset_backup_description": "ЗаĐŋ҃ҁĐēĐ°ĐšŅ‚Đĩ ĐŋŅ€ĐžĐ˛ĐĩŅ€Đē҃ Ņ‚ĐžĐģҌĐēĐž ҇ĐĩŅ€ĐĩС Wi-Fi и ĐŋĐžŅĐģĐĩ ŅĐžĐˇĐ´Đ°ĐŊĐ¸Ņ Ņ€ĐĩСĐĩŅ€Đ˛ĐŊОК ĐēĐžĐŋии Đ˛ŅĐĩŅ… ĐžĐąŅŠĐĩĐēŅ‚ĐžĐ˛. ОĐŋĐĩŅ€Đ°Ņ†Đ¸Ņ ĐŧĐžĐļĐĩŅ‚ СаĐŊŅŅ‚ŅŒ ĐŊĐĩҁĐēĐžĐģҌĐēĐž ĐŧиĐŊŅƒŅ‚.", "check_logs": "ĐŸŅ€ĐžĐ˛ĐĩŅ€Đ¸Ņ‚ŅŒ ĐļŅƒŅ€ĐŊаĐģŅ‹", + "checksum": "КоĐŊŅ‚Ņ€ĐžĐģҌĐŊĐ°Ņ ҁ҃ĐŧĐŧа", "choose_matching_people_to_merge": "Đ’Ņ‹ĐąĐĩŅ€Đ¸Ņ‚Đĩ ĐŋĐžĐ´Ņ…ĐžĐ´ŅŅ‰Đ¸Ņ… ĐģŅŽĐ´ĐĩĐš Đ´ĐģŅ ҁĐģĐ¸ŅĐŊĐ¸Ņ", "city": "Đ“ĐžŅ€ĐžĐ´", "clear": "ĐžŅ‡Đ¸ŅŅ‚Đ¸Ņ‚ŅŒ", @@ -728,6 +742,7 @@ "collapse_all": "ХвĐĩŅ€ĐŊŅƒŅ‚ŅŒ Đ˛ŅŅ‘", "color": "ĐĻвĐĩŅ‚", "color_theme": "ĐĻвĐĩŅ‚ĐžĐ˛Đ°Ņ Ņ‚ĐĩĐŧа", + "command": "КоĐŧаĐŊда", "comment_deleted": "КоĐŧĐŧĐĩĐŊŅ‚Đ°Ņ€Đ¸Đš ŅƒĐ´Đ°ĐģŅ‘ĐŊ", "comment_options": "ДĐĩĐšŅŅ‚Đ˛Đ¸Ņ ҁ ĐēĐžĐŧĐŧĐĩĐŊŅ‚Đ°Ņ€Đ¸ĐĩĐŧ", "comments_and_likes": "КоĐŧĐŧĐĩĐŊŅ‚Đ°Ņ€Đ¸Đ¸ и ĐžŅ‚ĐŧĐĩŅ‚Đēи \"ĐŊŅ€Đ°Đ˛Đ¸Ņ‚ŅŅ\"", @@ -1092,6 +1107,7 @@ "external_network_sheet_info": "ĐšĐžĐŗĐ´Đ° ŅƒŅŅ‚Ņ€ĐžĐšŅŅ‚Đ˛Đž ĐŊĐĩ ĐŋОдĐēĐģŅŽŅ‡ĐĩĐŊĐž Đē ҃ĐēаСаĐŊĐŊОК Wi-Fi ҁĐĩŅ‚Đ¸, ĐŋŅ€Đ¸ĐģĐžĐļĐĩĐŊиĐĩ ĐąŅƒĐ´ĐĩŅ‚ ĐŋŅ‹Ņ‚Đ°Ņ‚ŅŒŅŅ ĐŋОдĐēĐģŅŽŅ‡Đ¸Ņ‚ŅŒŅŅ Đē ҁĐĩŅ€Đ˛ĐĩŅ€Ņƒ ĐŋĐž Đ°Đ´Ņ€ĐĩŅĐ°Đŧ ĐŊиĐļĐĩ, ŅĐ˛ĐĩŅ€Ņ…Ņƒ вĐŊиС Đ´Đž ҃ҁĐŋĐĩ҈ĐŊĐžĐŗĐž ĐŋОдĐēĐģŅŽŅ‡ĐĩĐŊĐ¸Ņ", "face_unassigned": "НĐĩ ĐŊаСĐŊĐ°Ņ‡ĐĩĐŊĐž", "failed": "ĐžŅˆĐ¸ĐąĐēа", + "failed_count": "ЗавĐĩŅ€ŅˆĐĩĐŊŅ‹ ҁ ĐžŅˆĐ¸ĐąĐēаĐŧи: {count}", "failed_to_authenticate": "ĐžŅˆĐ¸ĐąĐēа Đ°ŅƒŅ‚ĐĩĐŊŅ‚Đ¸Ņ„Đ¸ĐēĐ°Ņ†Đ¸Đ¸", "failed_to_load_assets": "НĐĩ ŅƒĐ´Đ°ĐģĐžŅŅŒ ĐˇĐ°ĐŗŅ€ŅƒĐˇĐ¸Ņ‚ŅŒ ĐžĐąŅŠĐĩĐē҂ҋ", "failed_to_load_folder": "ĐžŅˆĐ¸ĐąĐēа ĐŋŅ€Đ¸ ĐˇĐ°ĐŗŅ€ŅƒĐˇĐēĐĩ ĐŋаĐŋĐēи", @@ -1152,12 +1168,14 @@ "header_settings_header_name_input": "ИĐŧŅ ĐˇĐ°ĐŗĐžĐģОвĐēа", "header_settings_header_value_input": "ЗĐŊĐ°Ņ‡ĐĩĐŊиĐĩ ĐˇĐ°ĐŗĐžĐģОвĐēа", "headers_settings_tile_title": "ПоĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģҌҁĐēиĐĩ ĐˇĐ°ĐŗĐžĐģОвĐēи ĐŋŅ€ĐžĐēŅĐ¸", + "height": "Đ’Ņ‹ŅĐžŅ‚Đ°", "hi_user": "ĐŸŅ€Đ¸Đ˛ĐĩŅ‚ {name} ({email})", "hide_all_people": "ĐĄĐēŅ€Ņ‹Ņ‚ŅŒ Đ˛ŅĐĩŅ…", "hide_gallery": "ĐĄĐēŅ€Ņ‹Ņ‚ŅŒ ĐŗĐ°ĐģĐĩŅ€ĐĩŅŽ", "hide_named_person": "ĐĄĐēŅ€Ņ‹Ņ‚ŅŒ {name}", "hide_password": "ĐĄĐēŅ€Ņ‹Ņ‚ŅŒ ĐŋĐ°Ņ€ĐžĐģҌ", "hide_person": "ĐĄĐēŅ€Ņ‹Ņ‚ŅŒ ҇ĐĩĐģОвĐĩĐēа", + "hide_text_recognition": "ĐĄĐēŅ€Ņ‹Ņ‚ŅŒ Ņ€Đ°ŅĐŋОСĐŊаĐŊĐŊŅ‹Đš Ņ‚ĐĩĐēҁ҂", "hide_unnamed_people": "ĐĄĐēŅ€Ņ‹Ņ‚ŅŒ ĐģŅŽĐ´ĐĩĐš ĐąĐĩС иĐŧĐĩĐŊи", "home_page_add_to_album_conflicts": "ДобавĐģĐĩĐŊĐž {added} ĐŧĐĩдиа в аĐģŅŒĐąĐžĐŧ {album}. {failed} ĐŧĐĩдиа ҃ĐļĐĩ в аĐģŅŒĐąĐžĐŧĐĩ.", "home_page_add_to_album_err_local": "ПоĐēа ĐŊĐĩĐģŅŒĐˇŅ дОйавĐģŅŅ‚ŅŒ ĐģĐžĐēаĐģҌĐŊŅ‹Đĩ ĐžĐąŅŠĐĩĐē҂ҋ в аĐģŅŒĐąĐžĐŧŅ‹, ĐŋŅ€ĐžĐŋ҃ҁĐē", @@ -1273,6 +1291,7 @@ "local": "На ŅƒŅŅ‚Ņ€ĐžĐšŅŅ‚Đ˛Đĩ", "local_asset_cast_failed": "НĐĩвОСĐŧĐžĐļĐŊа Ņ‚Ņ€Đ°ĐŊҁĐģŅŅ†Đ¸Ņ ĐžĐąŅŠĐĩĐēŅ‚ĐžĐ˛, ĐēĐžŅ‚ĐžŅ€Ņ‹Đĩ Đĩ҉ґ ĐŊĐĩ ĐˇĐ°ĐŗŅ€ŅƒĐļĐĩĐŊŅ‹ ĐŊа ҁĐĩŅ€Đ˛ĐĩŅ€", "local_assets": "ĐžĐąŅŠĐĩĐē҂ҋ ĐŊа ŅƒŅŅ‚Ņ€ĐžĐšŅŅ‚Đ˛Đĩ", + "local_id": "ИдĐĩĐŊŅ‚Đ¸Ņ„Đ¸ĐēĐ°Ņ‚ĐžŅ€ ĐŊа ŅƒŅŅ‚Ņ€ĐžĐšŅŅ‚Đ˛Đĩ", "local_media_summary": "ИĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ Ой ĐžĐąŅŠĐĩĐēŅ‚Đĩ ĐŊа ŅƒŅŅ‚Ņ€ĐžĐšŅŅ‚Đ˛Đĩ", "local_network": "ЛоĐēаĐģҌĐŊĐ°Ņ ҁĐĩŅ‚ŅŒ", "local_network_sheet_info": "ĐŸŅ€Đ¸ĐģĐžĐļĐĩĐŊиĐĩ ĐąŅƒĐ´ĐĩŅ‚ ĐŋОдĐēĐģŅŽŅ‡Đ°Ņ‚ŅŒŅŅ Đē ҁĐĩŅ€Đ˛ĐĩŅ€Ņƒ ĐŋĐž ŅŅ‚ĐžĐŧ҃ Đ°Đ´Ņ€Đĩҁ҃, ĐēĐžĐŗĐ´Đ° ŅƒŅŅ‚Ņ€ĐžĐšŅŅ‚Đ˛Đž ĐŋОдĐēĐģŅŽŅ‡ĐĩĐŊĐž Đē ҃ĐēаСаĐŊĐŊОК Wi-Fi ҁĐĩŅ‚Đ¸", @@ -1511,6 +1530,7 @@ "other_variables": "Đ”Ņ€ŅƒĐŗĐ¸Đĩ ĐŋĐĩŅ€ĐĩĐŧĐĩĐŊĐŊŅ‹Đĩ", "owned": "Мои", "owner": "ВĐģадĐĩĐģĐĩ҆", + "page": "ĐĄŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Đ°", "partner": "ĐŸĐ°Ņ€Ņ‚ĐŊґҀ", "partner_can_access": "ПоĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅŽ {partner} Đ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹", "partner_can_access_assets": "Đ’ŅĐĩ Đ˛Đ°ŅˆĐ¸ Ņ„ĐžŅ‚Đž и видĐĩĐž, ĐēŅ€ĐžĐŧĐĩ Ņ‚ĐĩŅ…, Ņ‡Ņ‚Đž ĐŊĐ°Ņ…ĐžĐ´ŅŅ‚ŅŅ в Đ°Ņ€Ņ…Đ¸Đ˛Đĩ и ĐēĐžŅ€ĐˇĐ¸ĐŊĐĩ", @@ -1967,6 +1987,7 @@ "show_slideshow_transition": "ПĐģавĐŊŅ‹Đš ĐŋĐĩŅ€ĐĩŅ…ĐžĐ´", "show_supporter_badge": "ЗĐŊĐ°Ņ‡ĐžĐē ĐŋОддĐĩŅ€ĐļĐēи", "show_supporter_badge_description": "ПоĐēĐ°ĐˇĐ°Ņ‚ŅŒ СĐŊĐ°Ņ‡ĐžĐē ĐŋОддĐĩŅ€ĐļĐēи", + "show_text_recognition": "ПоĐēĐ°ĐˇĐ°Ņ‚ŅŒ Ņ€Đ°ŅĐŋОСĐŊаĐŊĐŊŅ‹Đš Ņ‚ĐĩĐēҁ҂", "show_text_search_menu": "ПоĐēĐ°ĐˇĐ°Ņ‚ŅŒ ĐŧĐĩĐŊŅŽ Ņ‚ĐĩĐēŅŅ‚ĐžĐ˛ĐžĐŗĐž ĐŋĐžĐ¸ŅĐēа", "shuffle": "ПĐĩŅ€ĐĩĐŧĐĩŅˆĐ°Ņ‚ŅŒ", "sidebar": "БоĐēĐžĐ˛Đ°Ņ ĐŋаĐŊĐĩĐģҌ", @@ -2037,6 +2058,7 @@ "tags": "ĐĸĐĩĐŗĐ¸", "tap_to_run_job": "НаĐļĐŧĐ¸Ņ‚Đĩ Đ´ĐģŅ СаĐŋ҃ҁĐēа ĐˇĐ°Đ´Đ°Ņ‡Đ¸", "template": "ШайĐģĐžĐŊ", + "text_recognition": "ĐĸĐĩĐēҁ҂", "theme": "ĐĸĐĩĐŧа", "theme_selection": "Đ’Ņ‹ĐąĐžŅ€ Ņ‚ĐĩĐŧŅ‹", "theme_selection_description": "ĐĐ˛Ņ‚ĐžĐŧĐ°Ņ‚Đ¸Ņ‡ĐĩҁĐēи ŅƒŅŅ‚Đ°ĐŊавĐģĐ¸Đ˛Đ°Ņ‚ŅŒ ŅĐ˛ĐĩŅ‚ĐģŅƒŅŽ иĐģи ҂ґĐŧĐŊŅƒŅŽ Ņ‚ĐĩĐŧ҃ в ĐˇĐ°Đ˛Đ¸ŅĐ¸ĐŧĐžŅŅ‚Đ¸ ĐžŅ‚ ĐŊĐ°ŅŅ‚Ņ€ĐžĐĩĐē Đ˛Đ°ŅˆĐĩĐŗĐž ĐąŅ€Đ°ŅƒĐˇĐĩŅ€Đ°", @@ -2069,6 +2091,7 @@ "to_select": "Đ˛Ņ‹ĐąŅ€Đ°Ņ‚ŅŒ", "to_trash": "ĐšĐžŅ€ĐˇĐ¸ĐŊа", "toggle_settings": "ПĐĩŅ€ĐĩĐēĐģŅŽŅ‡ĐĩĐŊиĐĩ ĐŊĐ°ŅŅ‚Ņ€ĐžĐĩĐē", + "toggle_theme_description": "ПĐĩŅ€ĐĩĐēĐģŅŽŅ‡Đ¸Ņ‚ŅŒ Ņ‚ĐĩĐŧ҃", "total": "Đ’ŅĐĩĐŗĐž", "total_usage": "ĐžĐąŅ‰Đ°Ņ ŅŅ‚Đ°Ņ‚Đ¸ŅŅ‚Đ¸Đēа", "trash": "ĐšĐžŅ€ĐˇĐ¸ĐŊа", @@ -2089,7 +2112,7 @@ "troubleshoot": "Đ”Đ¸Đ°ĐŗĐŊĐžŅŅ‚Đ¸Đēа", "type": "ĐĸиĐŋ", "unable_to_change_pin_code": "ĐžŅˆĐ¸ĐąĐēа ĐŋŅ€Đ¸ иСĐŧĐĩĐŊĐĩĐŊии PIN-ĐēОда", - "unable_to_check_version": "НĐĩ ŅƒĐ´Đ°ĐģĐžŅŅŒ ĐŋŅ€ĐžĐ˛ĐĩŅ€Đ¸Ņ‚ŅŒ ĐŊаĐģĐ¸Ņ‡Đ¸Đĩ ОйĐŊОвĐģĐĩĐŊиК", + "unable_to_check_version": "ĐžŅˆĐ¸ĐąĐēа ĐŋŅ€Đ¸ ĐŋŅ€ĐžĐ˛ĐĩŅ€ĐēĐĩ ОйĐŊОвĐģĐĩĐŊиК", "unable_to_setup_pin_code": "ĐžŅˆĐ¸ĐąĐēа ĐŋŅ€Đ¸ ŅĐžĐˇĐ´Đ°ĐŊии PIN-ĐēОда", "unarchive": "Đ’ĐžŅŅŅ‚Đ°ĐŊĐžĐ˛Đ¸Ņ‚ŅŒ", "unarchive_action_prompt": "ĐžĐąŅŠĐĩĐē҂ҋ ŅƒĐ´Đ°ĐģĐĩĐŊŅ‹ иС Đ°Ņ€Ņ…Đ¸Đ˛Đ° ({count} ŅˆŅ‚.)", @@ -2177,6 +2200,7 @@ "view_album": "ĐžŅ‚ĐēŅ€Ņ‹Ņ‚ŅŒ аĐģŅŒĐąĐžĐŧ", "view_all": "ĐŸĐžŅĐŧĐžŅ‚Ņ€ĐĩŅ‚ŅŒ Đ˛ŅŅ‘", "view_all_users": "ПоĐēĐ°ĐˇĐ°Ņ‚ŅŒ Đ˛ŅĐĩŅ… ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģĐĩĐš", + "view_asset_owners": "ĐžŅ‚ĐžĐąŅ€Đ°ĐļĐ°Ņ‚ŅŒ вĐģадĐĩĐģŅŒŅ†Đĩв ĐžĐąŅŠĐĩĐēŅ‚ĐžĐ˛", "view_details": "ĐŸĐžŅĐŧĐžŅ‚Ņ€ĐĩŅ‚ŅŒ ĐŋĐžĐ´Ņ€ĐžĐąĐŊĐžŅŅ‚Đ¸", "view_in_timeline": "ПоĐēĐ°ĐˇĐ°Ņ‚ŅŒ ĐŊа Đ˛Ņ€ĐĩĐŧĐĩĐŊĐŊОК ҈ĐēаĐģĐĩ", "view_link": "ПоĐēĐ°ĐˇĐ°Ņ‚ŅŒ ҁҁҋĐģĐē҃", @@ -2193,10 +2217,12 @@ "viewer_unstack": "Đ Đ°ĐˇĐŗŅ€ŅƒĐŋĐŋĐ¸Ņ€ĐžĐ˛Đ°Ņ‚ŅŒ", "visibility_changed": "ИСĐŧĐĩĐŊĐĩĐŊа видиĐŧĐžŅŅ‚ŅŒ ҃ {count, plural, one {# ҇ĐĩĐģОвĐĩĐēа} other {# ҇ĐĩĐģОвĐĩĐē}}", "waiting": "В ĐžŅ‡ĐĩŅ€Đĩди", + "waiting_count": "ОĐļĐ¸Đ´Đ°ŅŽŅ‚ СаĐŋ҃ҁĐēа: {count}", "warning": "ĐŸŅ€ĐĩĐ´ŅƒĐŋŅ€ĐĩĐļĐ´ĐĩĐŊиĐĩ", "week": "НĐĩĐ´ĐĩĐģŅ", "welcome": "Đ”ĐžĐąŅ€Đž ĐŋĐžĐļаĐģĐžĐ˛Đ°Ņ‚ŅŒ", "welcome_to_immich": "Đ”ĐžĐąŅ€Đž ĐŋĐžĐļаĐģĐžĐ˛Đ°Ņ‚ŅŒ в Immich", + "width": "Đ¨Đ¸Ņ€Đ¸ĐŊа", "wifi_name": "ИĐŧŅ ҁĐĩŅ‚Đ¸", "workflow": "Đ Đ°ĐąĐžŅ‡Đ¸Đš ĐŋŅ€ĐžŅ†Đĩҁҁ", "wrong_pin_code": "НĐĩвĐĩŅ€ĐŊŅ‹Đš PIN-ĐēОд", diff --git a/i18n/sk.json b/i18n/sk.json index 5deadabec0..e92d2f2541 100644 --- a/i18n/sk.json +++ b/i18n/sk.json @@ -7,6 +7,7 @@ "action_common_update": "AktualizovaÅĨ", "actions": "Akcie", "active": "Aktívne", + "active_count": "Aktívne: {count}", "activity": "Aktivita", "activity_changed": "Aktivita je {enabled, select, true{povolenÃĄ} other {zakÃĄzanÃĄ}}", "add": "PridaÅĨ", @@ -67,6 +68,7 @@ "confirm_reprocess_all_faces": "Naozaj chcete spracovaÅĨ vÅĄetky tvÃĄre znova? Tento proces vymaÅže pomenovanÃŊch Äžudí.", "confirm_user_password_reset": "Naozaj chcete obnoviÅĨ heslo pre {user}?", "confirm_user_pin_code_reset": "Ste si istí, Åže chcete opätovne nastaviÅĨ PIN kÃŗd pouŞívateÄža {user}?", + "copy_config_to_clipboard_description": "SkopírovaÅĨ aktuÃĄlnu konfigurÃĄciu systÊmu ako objekt JSON do schrÃĄnky", "create_job": "VytvoriÅĨ Ãēlohu", "cron_expression": "VÃŊraz cron", "cron_expression_description": "Nastavte interval skenovania pomocou formÃĄtu cron. Pre viac informÃĄcií navÅĄtívte Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "ZakÃĄzaÅĨ prihlÃĄsenie", "duplicate_detection_job_description": "Spustite strojovÊ učenie na poloÅžkÃĄch pre detekciu podobnÃŊch obrÃĄzkov. Spolieha sa na inteligentnÊ vyhÄžadÃĄvanie", "exclusion_pattern_description": "Vylučovacie vzory VÃĄm umoŞňujÃē ignorovaÅĨ sÃēbory a priečinky pri skenovaní VaÅĄej kniÅžnice. Toto je uÅžitočnÊ, ak mÃĄte priečinky obsahujÃēce sÃēbory, ktorÊ nechcete importovaÅĨ, napríklad RAW sÃēbory.", - "external_library_management": "Spravovanie externej kniÅžnice", + "export_config_as_json_description": "StiahnuÅĨ aktuÃĄlnu konfigurÃĄciu systÊmu ako sÃēbor JSON", + "external_libraries_page_description": "StrÃĄnka externej kniÅžnice sprÃĄvcu", "face_detection": "Detekcia tvÃĄrí", "face_detection_description": "Rozpoznajte tvÃĄre v poloÅžkÃĄch pomocou strojovÊho učenia. V prípade videí sa berie do Ãēvahy len nÃĄhÄžad. „AktualizovaÅĨ“ (znovu) spracuje vÅĄetky poloÅžky. „ObnoviÅĨ“ dodatočne vymaÅže vÅĄetky aktuÃĄlne Ãēdaje o tvÃĄrach. „ChÃŊbajÃēce“ zaradí do poradia mÊdiÃĄ, ktorÊ eÅĄte neboli spracovanÊ. ZistenÊ tvÃĄre sa po dokončení rozpoznÃĄvania tvÃĄrí zaradia do poradia na rozpoznÃĄvanie tvÃĄrí, pričom sa zoskupia do existujÃēcich alebo novÃŊch osôb.", "facial_recognition_job_description": "Zoskupte rozpoznanÊ tvÃĄre do osôb. Tento krok sa vykonÃĄ po dokončení rozpoznÃĄvania tvÃĄrí. „ObnoviÅĨ“ (znovu) zoskupí vÅĄetky tvÃĄre. „ChÃŊbajÃēce“ zaradí tvÃĄre, ktorÊ nemajÃē pridelenÃē osobu.", @@ -102,14 +105,15 @@ "image_thumbnail_description": "MalÃĄ miniatÃēra s odstrÃĄnenÃŊmi metadÃĄtami, ktorÃĄ sa pouŞíva pri prezeraní skupín fotografií ako na hlavnej časovej osi", "image_thumbnail_quality_description": "Kvalita miniatÃēry v stupnici od 1 do 100. VyÅĄÅĄia hodnota znamenÃĄ lepÅĄiu kvalitu, ale produkuje vÃ¤ÄÅĄie sÃēbory a môŞe zníŞiÅĨ odozvu aplikÃĄcie.", "image_thumbnail_title": "MiniatÃēry", + "import_config_from_json_description": "ImportovaÅĨ konfigurÃĄciu systÊmu nahraním konfiguračnÊho sÃēboru JSON", "job_concurrency": "SÃēbeÅžnosÅĨ Ãēlohy - {job}", "job_created": "Úloha bola vytvorenÃĄ", "job_not_concurrency_safe": "TÃĄto Ãēloha nie je bezpečnÃĄ pre sÃēbeÅžnÊ spracovanie.", "job_settings": "Úlohy", "job_settings_description": "SpravovaÅĨ sÃēbeÅžnosÅĨ Ãēloh", - "job_status": "Stav Ãēloh", "jobs_delayed": "{jobCount, plural, one {# oneskorenÃŊ} few {# oneskorenÊ} other {# oneskorenÃŊch}}", "jobs_failed": "{jobCount, plural, one {# neÃēspeÅĄnÃŊ} few {# neÃēspeÅĄnÊ} other {# neÃēspeÅĄnÃŊch}}", + "jobs_over_time": "Počet Ãēloh za čas", "library_created": "VytvorenÃĄ kniÅžnica: {library}", "library_deleted": "KniÅžnica bola vymazanÃĄ", "library_details": "Podrobnosti o kniÅžnici", @@ -182,6 +186,7 @@ "maintenance_start": "SpustiÅĨ reÅžim ÃēdrÅžby", "maintenance_start_error": "Nepodarilo sa spustiÅĨ reÅžim ÃēdrÅžby.", "manage_concurrency": "SpravovaÅĨ sÃēbeÅžnosÅĨ", + "manage_concurrency_description": "PrejsÅĨ na strÃĄnku Ãēloh, kde môŞete spravovaÅĨ sÃēbeÅžnosÅĨ Ãēloh", "manage_log_settings": "SpravovaÅĨ nastavenia ukladania zÃĄznamov", "map_dark_style": "TmavÃŊ ÅĄtÃŊl", "map_enable_description": "PovoliÅĨ funkcie mapy", @@ -271,10 +276,14 @@ "password_settings_description": "SpravovaÅĨ nastavenia prihlÃĄsenia cez heslo", "paths_validated_successfully": "VÅĄetky cesty boli ÃēspeÅĄne overenÊ", "person_cleanup_job": "Prečistenie osôb", + "queue_details": "Podrobnosti o poradí", + "queues": "Poradie Ãēloh", + "queues_page_description": "StrÃĄnka poradia Ãēloh sprÃĄvcu", "quota_size_gib": "VeÄžkosÅĨ kvÃŗty (GiB)", "refreshing_all_libraries": "ObnovujÃē sa vÅĄetky kniÅžnice", "registration": "RegistrÃĄcia administrÃĄtora", "registration_description": "KeďŞe ste prvÃŊm pouŞívateÄžom v systÊme, budÃē vÃĄm pridelenÊ sprÃĄvcovskÊ prÃĄva na vykonÃĄvanie vÅĄetkÃŊch Ãēloh a vrÃĄtane tvorby novÃŊch pouŞívateÄžov.", + "remove_failed_jobs": "OdstrÃĄniÅĨ neÃēspeÅĄnÊ Ãēlohy", "require_password_change_on_login": "VyÅžadovaÅĨ od pouŞívateÄža zmenu hesla pri prvom prihlÃĄsení", "reset_settings_to_default": "ObnoviÅĨ pôvodnÊ nastavenia", "reset_settings_to_recent_saved": "Nastavenia boli obnovenÊ na poslednÊ uloÅženÊ nastavenia", @@ -287,8 +296,10 @@ "server_public_users_description": "VÅĄetci pouŞívatelia (meno a email) sÃē uvedení pri pridÃĄvaní pouŞívateÄža do zdieÄžanÃŊch albumov. Ak je tÃĄto funkcia vypnutÃĄ, zoznam pouŞívateÄžov bude dostupnÃŊ iba sprÃĄvcom.", "server_settings": "Server", "server_settings_description": "SpravovaÅĨ nastavenia servera", + "server_stats_page_description": "StrÃĄnka serverovÃŊch ÅĄtatistík sprÃĄvcu", "server_welcome_message": "Uvítacia sprÃĄva", "server_welcome_message_description": "SprÃĄva, ktorÃĄ sa zobrazí na prihlasovacej strÃĄnke.", + "settings_page_description": "StrÃĄnka nastavení sprÃĄvcu", "sidecar_job": "PridruÅženÊ metadÃĄta", "sidecar_job_description": "Objavte alebo synchronizujte pridruÅženÊ metadÃĄta zo sÃēborovÊho systÊmu", "slideshow_duration_description": "Čas zobrazenia obrÃĄzku v sekundÃĄch", @@ -408,6 +419,7 @@ "user_settings": "Nastavenia pouŞívateÄža", "user_settings_description": "SpravovaÅĨ pouŞívateÄžskÊ nastavenia", "user_successfully_removed": "PouŞívateÄž {email} bol ÃēspeÅĄne odstrÃĄnenÃŊ.", + "users_page_description": "StrÃĄnka pouŞívateÄžov pre sprÃĄvcu", "version_check_enabled_description": "PovoliÅĨ kontrolu verzie", "version_check_implications": "Funkcia kontroly verzie sa spolieha na pravidelnÃē komunikÃĄciu s github.com", "version_check_settings": "Kontrola verzie", @@ -640,6 +652,7 @@ "backup_options_page_title": "MoÅžnosti zÃĄlohovania", "backup_setting_subtitle": "SpravovaÅĨ nastavenia odosielania na pozadí a v popredí", "backup_settings_subtitle": "SpravovaÅĨ nastavenia nahrÃĄvania", + "backup_upload_details_page_more_details": "Klikni pre viac info", "backward": "Dozadu", "biometric_auth_enabled": "BiometrickÊ overovanie je povolenÊ", "biometric_locked_out": "Ste vymknutí z biometrickÊho overovania", @@ -706,6 +719,7 @@ "check_corrupt_asset_backup_button": "VykonaÅĨ kontrolu", "check_corrupt_asset_backup_description": "SpustiÅĨ tÃēto kontrolu len cez Wi-Fi a po zÃĄlohovaní vÅĄetkÃŊch poloÅžiek. Tento postup môŞe trvaÅĨ niekoÄžko minÃēt.", "check_logs": "SkontrolovaÅĨ logy", + "checksum": "KontrolnÃŊ sÃēčet", "choose_matching_people_to_merge": "Vyberte rovnakÃŊch Äžudí na zlÃēčenie", "city": "Mesto", "clear": "VyčistiÅĨ", @@ -728,6 +742,7 @@ "collapse_all": "ZbaliÅĨ vÅĄetko", "color": "Farba", "color_theme": "Farba tÊmy", + "command": "Príkaz", "comment_deleted": "KomentÃĄr bol odstrÃĄnenÃŊ", "comment_options": "MoÅžnosti komentÃĄra", "comments_and_likes": "KomentÃĄre a pÃĄÄi sa mi to", @@ -1092,6 +1107,7 @@ "external_network_sheet_info": "Ak nie ste v preferovanej sieti Wi-Fi, aplikÃĄcia sa pripojí k serveru prostredníctvom prvej z niÅžÅĄie uvedenÃŊch adries URL, na ktorÃē sa dostane, počnÃēc zhora nadol", "face_unassigned": "NepriradenÃĄ", "failed": "NeÃēspeÅĄnÊ", + "failed_count": "Zlyhalo: {count}", "failed_to_authenticate": "Nepodarilo sa overiÅĨ", "failed_to_load_assets": "Nepodarilo sa načítaÅĨ poloÅžky", "failed_to_load_folder": "Nepodarilo sa načítaÅĨ priečinok", @@ -1152,12 +1168,14 @@ "header_settings_header_name_input": "NÃĄzov hlavičky", "header_settings_header_value_input": "Hodnota hlavičky", "headers_settings_tile_title": "VlastnÊ hlavičky proxy servera", + "height": "VÃŊÅĄka", "hi_user": "Ahoj {name} ({email})", "hide_all_people": "SkryÅĨ vÅĄetky osoby", "hide_gallery": "SkryÅĨ galÊriu", "hide_named_person": "SkryÅĨ osobu {name}", "hide_password": "SkryÅĨ heslo", "hide_person": "SkryÅĨ osobu", + "hide_text_recognition": "SkryÅĨ rozpoznÃĄvanie textu", "hide_unnamed_people": "SkryÅĨ osoby bez mena", "home_page_add_to_album_conflicts": "PridanÊ {added} poloÅžiek do albumu {album}. {failed} poloÅžiek uÅž je v albume.", "home_page_add_to_album_err_local": "ZatiaÄž nie je moÅžnÊ pridaÅĨ lokÃĄlne mÊdia do albumov, preskakuje sa", @@ -1273,6 +1291,7 @@ "local": "LokÃĄlne", "local_asset_cast_failed": "Nie je moÅžnÊ preniesÅĨ mÊdium, ktorÊ nie je nahranÊ na serveri", "local_assets": "LokÃĄlne poloÅžky", + "local_id": "LokÃĄlne ID", "local_media_summary": "SÃēhrn lokÃĄlnych mÊdií", "local_network": "Miestna sieÅĨ", "local_network_sheet_info": "Pri pouÅžití zadanej siete Wi-Fi sa aplikÃĄcia pripojí k serveru prostredníctvom tejto URL adresy", @@ -1511,6 +1530,7 @@ "other_variables": "OstatnÊ premennÊ", "owned": "VlastnÊ", "owner": "Vlastník", + "page": "StrÃĄnka", "partner": "Partner", "partner_can_access": "{partner} môŞe pristupovaÅĨ", "partner_can_access_assets": "VÅĄetky vaÅĄe fotky a videÃĄ, okrem ArchivovanÃŊch a OdstrÃĄnenÃŊch", @@ -1548,7 +1568,7 @@ "permanent_deletion_warning_setting_description": "ZobraziÅĨ varovanie pri trvalom zmazaní poloÅžky", "permanently_delete": "Trvalo zmazaÅĨ", "permanently_delete_assets_count": "Natrvalo vymazaÅĨ {count, plural, one {poloÅžku} few {poloÅžky} other {poloÅžiek}}", - "permanently_delete_assets_prompt": "Ste si istí, Åže chcete natrvalo vymazaÅĨ {count, plural, one {tÃēto poloÅžku?} few {tieto # poloÅžky?} other {tÃŊchto # poloÅžiek?}} TÃŊmto sa odstrÃĄni aj {count, plural, one {z jej albumu} other {zo svojich albumov}}.", + "permanently_delete_assets_prompt": "Ste si istí, Åže chcete natrvalo vymazaÅĨ {count, plural, one {tÃēto poloÅžku} few {tieto # poloÅžky} other {tÃŊchto # poloÅžiek}}? TÃŊmto sa {count, plural, one {odstrÃĄni aj z jej albumu} other {odstrÃĄnia aj zo svojich albumov}}.", "permanently_deleted_asset": "NavÅždy odstrÃĄnenÃĄ poloÅžka", "permanently_deleted_assets_count": "Natrvalo {count, plural, one {odstrÃĄnenÃĄ # poloÅžka} few {odstrÃĄnenÊ # poloÅžky} other {odstrÃĄnenÃŊch # poloÅžiek}}", "permission": "Povolenie", @@ -1967,6 +1987,7 @@ "show_slideshow_transition": "ZobraziÅĨ prechody v prezentÃĄcii", "show_supporter_badge": "Odznak podporovateÄža", "show_supporter_badge_description": "ZobraziÅĨ odznak podporovateÄža", + "show_text_recognition": "ZobraziÅĨ rozpoznÃĄvanie textu", "show_text_search_menu": "ZobraziÅĨ ponuku vyhÄžadÃĄvania textu", "shuffle": "NÃĄhodnÊ poradie", "sidebar": "BočnÃŊ panel", @@ -2037,6 +2058,7 @@ "tags": "Å títky", "tap_to_run_job": "Ťuknutím na poloÅžku spustíte Ãēlohu", "template": "Å ablÃŗna", + "text_recognition": "RozpoznÃĄvanie textu", "theme": "TÊma", "theme_selection": "VÃŊber tÊmy", "theme_selection_description": "Automaticky nastaví tÊmu na svetlÃē alebo tmavÃē podÄža systÊmovÃŊch predvolieb v prehliadači", @@ -2069,6 +2091,7 @@ "to_select": "na vÃŊber", "to_trash": "Do koÅĄa", "toggle_settings": "PrepnÃēÅĨ nastavenie", + "toggle_theme_description": "PrepnÃēÅĨ tÊmu", "total": "Celkom", "total_usage": "CelkovÊ vyuÅžitie", "trash": "KÃ´ÅĄ", @@ -2177,6 +2200,7 @@ "view_album": "ZobraziÅĨ Album", "view_all": "ZobraziÅĨ vÅĄetky", "view_all_users": "ZobraziÅĨ vÅĄetkÃŊch pouŞívateÄžov", + "view_asset_owners": "ZobraziÅĨ vlastníkov poloÅžky", "view_details": "ZobraziÅĨ podrobnosti", "view_in_timeline": "ZobraziÅĨ v časovej osi", "view_link": "ZobraziÅĨ odkaz", @@ -2193,10 +2217,12 @@ "viewer_unstack": "ZruÅĄiÅĨ zoskupenie", "visibility_changed": "ViditeÄžnosÅĨ zmenenÃĄ pre {count, plural, one {# osobu} few {# osoby} other {# osôb}}", "waiting": "ČakajÃēce", + "waiting_count": "V poradí: {count}", "warning": "Varovanie", "week": "TÃŊÅždeň", "welcome": "Vitajte", "welcome_to_immich": "Vitajte v Immich", + "width": "Šírka", "wifi_name": "NÃĄzov Wi-Fi", "workflow": "PracovnÃŊ postup", "wrong_pin_code": "NesprÃĄvny PIN kÃŗd", diff --git a/i18n/sl.json b/i18n/sl.json index 5a7887c365..0ff0bec8ca 100644 --- a/i18n/sl.json +++ b/i18n/sl.json @@ -7,6 +7,7 @@ "action_common_update": "Posodobi", "actions": "Dejanja", "active": "Aktivno", + "active_count": "Aktivno: {count}", "activity": "Aktivnost", "activity_changed": "Aktivnost je {enabled, select, true {omogočena} other {onemogočena}}", "add": "Dodaj", @@ -67,6 +68,7 @@ "confirm_reprocess_all_faces": "Ali ste prepričani, da Åželite znova obdelati vse obraze? S tem boste počistili tudi Åže imenovane osebe.", "confirm_user_password_reset": "Ali ste prepričani, da Åželite ponastaviti geslo uporabnika {user}?", "confirm_user_pin_code_reset": "Ali ste prepričani, da Åželite ponastaviti PIN kodo uporabnika {user}?", + "copy_config_to_clipboard_description": "Kopiraj trenutno sistemsko konfiguracijo kot objekt JSON v odloÅžiÅĄÄe", "create_job": "Ustvari opravilo", "cron_expression": "Nastavitveni izraz Cron", "cron_expression_description": "Nastavite interval skeniranja z uporabo zapisa cron. Za več informacij poglej npr. Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "Onemogoči prijavo", "duplicate_detection_job_description": "ZaÅženite strojno učenje na sredstvih, da zaznate podobne slike. ZanaÅĄa se na Pametno Iskanje", "exclusion_pattern_description": "Vzorci izključitev vam omogočajo, da prezrete datoteke in mape pri skeniranju knjiÅžnice. To je uporabno, če imate mape z datotekami, ki jih ne Åželite uvoziti, na primer datoteke RAW.", - "external_library_management": "Upravljanje zunanjih knjiÅžnic", + "export_config_as_json_description": "Prenesite trenutno konfiguracijo sistema kot datoteko JSON", + "external_libraries_page_description": "SkrbniÅĄka stran zunanje knjiÅžnice", "face_detection": "Zaznavanje obrazov", "face_detection_description": "Zaznavanje obrazov v sredstvih z uporabo strojnega učenja. Pri videoposnetkih se upoÅĄteva samo sličica. ÂģOsveÅžiÂĢ (ponovno) obdela vsa sredstva. ÂģPonastaviÂĢ dodatno izbriÅĄe vse trenutne podatke o obrazih. ÂģManjkajočaÂĢ uvrsti sredstva, ki ÅĄe niso bila obdelana, v čakalno vrsto. Zaznani obrazi bodo po končanem zaznavanju obrazov uvrÅĄÄeni v čakalno vrsto za prepoznavanje obrazov, pri čemer bodo zdruÅženi v obstoječe ali nove osebe.", "facial_recognition_job_description": "ZdruÅži zaznane obraze v osebe. Ta korak se izvede po končanem zaznavanju obrazov. ÂģPonastaviÂĢ (ponovno) zdruÅži vse obraze. ÂģManjkajočaÂĢ uvrsti obraze, ki jim ni dodeljena oseba, v čakalno vrsto.", @@ -102,14 +105,15 @@ "image_thumbnail_description": "Majhna sličica z odstranjenimi metapodatki, ki se uporablja pri ogledovanju skupin fotografij, kot je glavna časovnica", "image_thumbnail_quality_description": "Kakovost sličic od 1-100. ViÅĄje je boljÅĄe, vendar ustvarja večje datoteke in lahko zmanjÅĄa odzivnost aplikacije.", "image_thumbnail_title": "Nastavitve sličic", + "import_config_from_json_description": "Uvozite sistemsko konfiguracijo z nalaganjem konfiguracijske datoteke JSON", "job_concurrency": "{job} sočasnost", "job_created": "Opravilo ustvarjeno", "job_not_concurrency_safe": "To delo ni varno za sočasnost.", "job_settings": "Nastavitve opravil", "job_settings_description": "Upravljaj sočasnost opravil", - "job_status": "Status opravila", "jobs_delayed": "{jobCount, plural, other {# zadrÅžani}}", "jobs_failed": "{jobCount, plural, other {# neuspeÅĄni}}", + "jobs_over_time": "Opravila skozi čas", "library_created": "Ustvarjena knjiÅžnica: {library}", "library_deleted": "KnjiÅžnica izbrisana", "library_details": "Podrobnosti o knjiÅžnici", @@ -182,6 +186,7 @@ "maintenance_start": "ZaÅženi način vzdrÅževanja", "maintenance_start_error": "VzdrÅževalnega načina ni bilo mogoče zagnati.", "manage_concurrency": "Upravljanje sočasnosti", + "manage_concurrency_description": "Pomaknite se na stran z opravili, da upravljate sočasnost opravil", "manage_log_settings": "Upravljanje nastavitev dnevnika", "map_dark_style": "Temni način", "map_enable_description": "Omogoči funkcije zemljevida", @@ -271,10 +276,14 @@ "password_settings_description": "Upravljajte nastavitve prijave z geslom", "paths_validated_successfully": "Vse poti so bile uspeÅĄno potrjene", "person_cleanup_job": "ČiÅĄÄenje osebe", + "queue_details": "Podrobnosti čakalne vrste", + "queues": "Čakalne vrste opravil", + "queues_page_description": "SkrbniÅĄka stran s čakalnimi vrstami opravil", "quota_size_gib": "Velikost kvote (GiB)", "refreshing_all_libraries": "OsveÅževanje vseh knjiÅžnic", "registration": "Registracija administratorja", "registration_description": "Ker ste prvi uporabnik v sistemu, boste dodeljeni kot skrbnik in ste odgovorni za skrbniÅĄka opravila, dodatne uporabnike pa boste ustvarili sami.", + "remove_failed_jobs": "Odstrani neuspeÅĄna opravila", "require_password_change_on_login": "Od uporabnika zahtevajte spremembo gesla ob prvi prijavi", "reset_settings_to_default": "Ponastavi nastavitve na privzete", "reset_settings_to_recent_saved": "Ponastavite nastavitve na nedavno shranjene nastavitve", @@ -287,8 +296,10 @@ "server_public_users_description": "Vsi uporabniki (ime in e-poÅĄta) so navedeni pri dodajanju uporabnika v albume v skupni rabi. Ko je onemogočen, bo seznam uporabnikov na voljo samo skrbniÅĄkim uporabnikom.", "server_settings": "Nastavitve streÅžnika", "server_settings_description": "Upravljanje nastavitev streÅžnika", + "server_stats_page_description": "SkrbniÅĄka stran s statistiko streÅžnika", "server_welcome_message": "Pozdravno sporočilo", "server_welcome_message_description": "Sporočilo prikazano na prijavni strani.", + "settings_page_description": "Stran z nastavitvami za skrbnike", "sidecar_job": "Stranski metapodatki", "sidecar_job_description": "Odkrijte ali sinhronizirajte stranske metapodatke iz datotečnega sistema", "slideshow_duration_description": "Å tevilo sekund za prikaz posamezne slike", @@ -408,6 +419,7 @@ "user_settings": "UporabniÅĄke nastavitve", "user_settings_description": "Upravljanje uporabniÅĄkih nastavitev", "user_successfully_removed": "Uporabnik {email} je bil uspeÅĄno odstranjen.", + "users_page_description": "Stran skrbniÅĄkih uporabnikov", "version_check_enabled_description": "Omogoči preverjanje različice", "version_check_implications": "Funkcija preverjanja različic se opira na občasno komunikacijo z github.com", "version_check_settings": "Preverjanje različice", @@ -640,6 +652,7 @@ "backup_options_page_title": "MoÅžnosti varnostne kopije", "backup_setting_subtitle": "Upravljaj nastavitve nalaganja v ozadju in ospredju", "backup_settings_subtitle": "Upravljanje nastavitev nalaganja", + "backup_upload_details_page_more_details": "Dotaknite se za več podrobnosti", "backward": "Nazaj", "biometric_auth_enabled": "Biometrična avtentikacija omogočena", "biometric_locked_out": "Biometrična avtentikacija vam je onemogočena", @@ -706,6 +719,7 @@ "check_corrupt_asset_backup_button": "Izvedi preverjanje", "check_corrupt_asset_backup_description": "To preverjanje zaÅženite samo prek omreÅžja Wi-Fi in potem, ko so vsa sredstva varnostno kopirana. Postopek lahko traja nekaj minut.", "check_logs": "Preverite dnevnike", + "checksum": "Kontrolna vsota", "choose_matching_people_to_merge": "Izberite ujemajoče se osebe za zdruÅžitev", "city": "Mesto", "clear": "Počisti", @@ -728,6 +742,7 @@ "collapse_all": "Strni vse", "color": "Barva", "color_theme": "Barva teme", + "command": "Ukaz", "comment_deleted": "Komentar izbrisan", "comment_options": "MoÅžnosti komentiranja", "comments_and_likes": "Komentarji in vÅĄečki", @@ -1092,6 +1107,7 @@ "external_network_sheet_info": "Ko aplikacija ni v Åželenem omreÅžju Wi-Fi, se bo povezala s streÅžnikom prek prvega od spodnjih URL-jev, ki jih lahko doseÅže, začenÅĄi od zgoraj navzdol", "face_unassigned": "Nedodeljen", "failed": "Ni uspelo", + "failed_count": "NeuspeÅĄno: {count}", "failed_to_authenticate": "Preverjanje pristnosti ni uspelo", "failed_to_load_assets": "Sredstev ni bilo mogoče naloÅžiti", "failed_to_load_folder": "Mape ni bilo mogoče naloÅžiti", @@ -1152,6 +1168,7 @@ "header_settings_header_name_input": "Ime glave", "header_settings_header_value_input": "Vrednost glave", "headers_settings_tile_title": "Proxy glave po meri", + "height": "ViÅĄina", "hi_user": "ÅŊivijo {name} ({email})", "hide_all_people": "Skrij vse ljudi", "hide_gallery": "Skrij galerijo", @@ -1274,6 +1291,7 @@ "local": "Lokalno", "local_asset_cast_failed": "Sredstva, ki niso naloÅžena na streÅžnik, ni mogoče predvajati", "local_assets": "Lokalna sredstva", + "local_id": "Lokalni ID", "local_media_summary": "Povzetek lokalnih medijev", "local_network": "Lokalno omreÅžje", "local_network_sheet_info": "Aplikacija se bo povezala s streÅžnikom prek tega URL-ja, ko bo uporabljala navedeno omreÅžje Wi-Fi", @@ -1512,6 +1530,7 @@ "other_variables": "Druge spremenljivke", "owned": "V lasti", "owner": "Lastnik", + "page": "Stran", "partner": "Partner", "partner_can_access": "{partner} ima dostop", "partner_can_access_assets": "Vse vaÅĄe fotografije in videoposnetki, razen tistih v arhivu in izbrisanih", @@ -1575,7 +1594,7 @@ "photos_from_previous_years": "Fotografije iz prejÅĄnjih let", "pick_a_location": "Izberi lokacijo", "pick_custom_range": "Obseg po meri", - "pick_date_range": "Izberi datumsko obdobje", + "pick_date_range": "Izberi časovno obdobje", "pin_code_changed_successfully": "PIN koda je bila uspeÅĄno spremenjena", "pin_code_reset_successfully": "PIN koda je bila uspeÅĄno ponastavljena", "pin_code_setup_successfully": "UspeÅĄno nastavljena PIN koda", @@ -1763,7 +1782,7 @@ "search_by_filename": "Iskanje po imenu datoteke ali priponi", "search_by_filename_example": "na primer IMG_1234.JPG ali PNG", "search_by_ocr": "Iskanje po optičnem prepoznavanju znakov (OCR)", - "search_by_ocr_example": "Latte", + "search_by_ocr_example": "Bela kava", "search_camera_lens_model": "Iskanje modela objektiva...", "search_camera_make": "Iskanje proizvajalca kamere...", "search_camera_model": "IÅĄÄi model kamere...", @@ -1999,7 +2018,7 @@ "stacked_assets_count": "Nabor {count, plural, one {# sredstvo} two {# sredstvi} few {# sredstva} other {# sredstev}}", "stacktrace": "Sled nabora", "start": "Začetek", - "start_date": "Datum začetka", + "start_date": "Začetni datum", "start_date_before_end_date": "Začetni datum mora biti pred končnim datumom", "state": "DeÅžela", "status": "Status", @@ -2072,6 +2091,7 @@ "to_select": "na izbiro", "to_trash": "Smetnjak", "toggle_settings": "Preklopi na nastavitve", + "toggle_theme_description": "Preklopi temo", "total": "Skupno", "total_usage": "Skupna poraba", "trash": "Smetnjak", @@ -2180,6 +2200,7 @@ "view_album": "Ogled albuma", "view_all": "Poglej vse", "view_all_users": "Ogled vseh uporabnikov", + "view_asset_owners": "Ogled lastnikov sredstev", "view_details": "Ogled podrobnosti", "view_in_timeline": "Ogled na časovnici", "view_link": "Odpri povezavo", @@ -2196,10 +2217,12 @@ "viewer_unstack": "Razkladi", "visibility_changed": "Vidnost spremenjena za {count, plural, one {# osebo} two {# osebi} few {# osebe} other {# oseb}}", "waiting": "Čakanje", + "waiting_count": "Čakanje: {count}", "warning": "Opozorilo", "week": "Teden", "welcome": "DobrodoÅĄli", "welcome_to_immich": "DobrodoÅĄli v Immich", + "width": "Å irina", "wifi_name": "Wi-Fi ime", "workflow": "Potek dela", "wrong_pin_code": "Napačna PIN koda", diff --git a/i18n/sr_Cyrl.json b/i18n/sr_Cyrl.json index 8c3f25a3cf..d3ca352625 100644 --- a/i18n/sr_Cyrl.json +++ b/i18n/sr_Cyrl.json @@ -68,7 +68,6 @@ "disable_login": "ОĐŊĐĩĐŧĐžĐŗŅƒŅ›Đ¸ ĐŋŅ€Đ¸Ņ˜Đ°Đ˛Ņƒ", "duplicate_detection_job_description": "ПоĐēŅ€ĐĩĐŊĐ¸Ņ‚Đĩ ĐŧĐ°ŅˆĐ¸ĐŊҁĐēĐž ŅƒŅ‡ĐĩҚĐĩ ĐŊа ҁҀĐĩĐ´ŅŅ‚Đ˛Đ¸Đŧа да ĐąĐ¸ŅŅ‚Đĩ ĐžŅ‚ĐēŅ€Đ¸Đģи ҁĐģĐ¸Ņ‡ĐŊĐĩ ҁĐģиĐēĐĩ. ĐžŅĐģĐ°ŅšĐ° ҁĐĩ ĐŊа ĐŋаĐŧĐĩŅ‚ĐŊ҃ ĐŋŅ€ĐĩŅ‚Ņ€Đ°ĐŗŅƒ", "exclusion_pattern_description": "ĐžĐąŅ€Đ°ŅŅ†Đ¸ Đ¸ĐˇŅƒĐˇĐ¸ĐŧĐ°ŅšĐ° ваĐŧ ĐžĐŧĐžĐŗŅƒŅ›Đ°Đ˛Đ°Ņ˜Ņƒ да Đ¸ĐŗĐŊĐžŅ€Đ¸ŅˆĐĩŅ‚Đĩ Đ´Đ°Ņ‚ĐžŅ‚ĐĩĐēĐĩ и Ņ„Đ°ŅŅ†Đ¸ĐēĐģĐĩ Đēада ҁĐēĐĩĐŊĐ¸Ņ€Đ°Ņ‚Đĩ йийĐģĐ¸ĐžŅ‚ĐĩĐē҃. Ово ҘĐĩ ĐēĐžŅ€Đ¸ŅĐŊĐž аĐēĐž иĐŧĐ°Ņ‚Đĩ Ņ„Đ°ŅŅ†Đ¸ĐēĐģĐĩ ĐēĐžŅ˜Đĩ ŅĐ°Đ´Ņ€ĐļĐĩ Đ´Đ°Ņ‚ĐžŅ‚ĐĩĐēĐĩ ĐēĐžŅ˜Đĩ ĐŊĐĩ ĐļĐĩĐģĐ¸Ņ‚Đĩ да ŅƒĐ˛ĐĩСĐĩŅ‚Đĩ, ĐēаО ŅˆŅ‚Đž ҁ҃ RAW Đ´Đ°Ņ‚ĐžŅ‚ĐĩĐēĐĩ.", - "external_library_management": "ĐŖĐŋŅ€Đ°Đ˛Ņ™Đ°ŅšĐĩ ĐĩĐēҁ҂ĐĩŅ€ĐŊиĐŧ йийĐģĐ¸ĐžŅ‚ĐĩĐēаĐŧа", "face_detection": "ДĐĩŅ‚ĐĩĐēŅ†Đ¸Ņ˜Đ° ĐģĐ¸Ņ†Đ°", "face_detection_description": "ĐžŅ‚ĐēŅ€Đ¸Ņ˜Ņ‚Đĩ ĐģĐ¸Ņ†Đ° ҃ Đ´Đ°Ņ‚ĐžŅ‚ĐĩĐēаĐŧа ĐŋĐžĐŧĐžŅ›Ņƒ ĐŧĐ°ŅˆĐ¸ĐŊҁĐēĐžĐŗ ŅƒŅ‡ĐĩŅšĐ°. За видĐĩĐž ҁĐŊиĐŧĐēĐĩ ҁĐĩ ŅƒĐˇĐ¸Đŧа ҃ ĐžĐąĐˇĐ¸Ņ€ ŅĐ°ĐŧĐž ҁĐģĐ¸Ņ‡Đ¸Ņ†Đ°. â€žĐžŅĐ˛ĐĩĐļи“ (ĐŋĐžĐŊОвĐŊĐž) ĐžĐąŅ€Đ°Ņ’ŅƒŅ˜Đĩ ŅĐ˛Đĩ Đ´Đ°Ņ‚ĐžŅ‚ĐĩĐēĐĩ. „РĐĩҁĐĩŅ‚ĐžĐ˛Đ°ŅšĐĩ“ Đ´ĐžĐ´Đ°Ņ‚ĐŊĐž ĐąŅ€Đ¸ŅˆĐĩ ŅĐ˛Đĩ ҂ҀĐĩĐŊŅƒŅ‚ĐŊĐĩ ĐŋĐžĐ´Đ°Ņ‚ĐēĐĩ Đž ĐģĐ¸Ņ†Ņƒ. „НĐĩĐ´ĐžŅŅ‚Đ°Ņ˜ŅƒŅ›Đĩ“ Đ´ĐžĐ´Đ°Ņ˜Đĩ Đ´Đ°Ņ‚ĐžŅ‚ĐĩĐēĐĩ ĐēĐžŅ˜Đĩ Ņ˜ĐžŅˆ ĐŊĐ¸ŅŅƒ ĐžĐąŅ€Đ°Ņ’ĐĩĐŊĐĩ. ĐžŅ‚ĐēŅ€Đ¸Đ˛ĐĩĐŊа ĐģĐ¸Ņ†Đ° Ņ›Đĩ ĐąĐ¸Ņ‚Đ¸ ŅŅ‚Đ°Đ˛Ņ™ĐĩĐŊа ҃ Ņ€ĐĩĐ´ Са ĐŋŅ€ĐĩĐŋОСĐŊĐ°Đ˛Đ°ŅšĐĩ ĐģĐ¸Ņ†Đ° ĐŊаĐēĐžĐŊ ŅˆŅ‚Đž ҁĐĩ ĐžŅ‚ĐēŅ€Đ¸Đ˛Đ°ŅšĐĩ ĐģĐ¸Ņ†Đ° ĐˇĐ°Đ˛Ņ€ŅˆĐ¸, ĐŗŅ€ŅƒĐŋĐ¸ŅˆŅƒŅ›Đ¸ Đ¸Ņ… ҃ ĐŋĐžŅŅ‚ĐžŅ˜ĐĩŅ›Đĩ иĐģи ĐŊОвĐĩ ĐžŅĐžĐąĐĩ.", "facial_recognition_job_description": "Đ“Ņ€ŅƒĐŋĐ¸ŅˆĐĩ ĐžŅ‚ĐēŅ€Đ¸Đ˛Đ°ĐŊа ĐģĐ¸Ņ†Đ° и Đ´ĐžĐ´Đ°Ņ˜Đĩ Đ¸Ņ… ĐŋĐžŅŅ‚ĐžŅ˜ĐĩŅ›Đ¸Đŧ ĐžŅĐžĐąĐ°Đŧа. ĐžĐ˛Đ°Ņ˜ ĐēĐžŅ€Đ°Đē ҁĐĩ ĐŋĐžĐēŅ€ĐĩŅ›Đĩ ĐŊаĐēĐžĐŊ ŅˆŅ‚Đž ҘĐĩ ĐŋŅ€ĐĩĐŋОСĐŊĐ°Đ˛Đ°ŅšĐĩ ĐģĐ¸Ņ†Đ° ĐˇĐ°Đ˛Ņ€ŅˆĐĩĐŊĐž. „РĐĩҁĐĩŅ‚ŅƒŅ˜â€œ (ĐŋĐžĐŊОвĐŊĐž) ĐŗŅ€ŅƒĐŋĐ¸ŅˆĐĩ ŅĐ˛Đ° ĐģĐ¸Ņ†Đ°. „НĐĩĐ´ĐžŅŅ‚Đ°Ņ˜ŅƒŅ›Đ°â€œ Đ´ĐžĐ´Đ°Ņ˜Đĩ ĐģĐ¸Ņ†Đ° ĐēĐžŅ˜Đ¸Đŧа ĐŊĐ¸Ņ˜Đĩ дОдĐĩŅ™ĐĩĐŊа ĐžŅĐžĐąĐ°.", @@ -101,7 +100,6 @@ "job_not_concurrency_safe": "ĐžĐ˛Đ°Ņ˜ ĐŋĐžŅĐ°Đž ĐŊĐ¸Ņ˜Đĩ ĐąĐĩСйĐĩдаĐŊ да ĐąŅƒĐ´Đĩ ĐŋĐ°Ņ€Đ°ĐģĐĩĐģĐŊĐž аĐēŅ‚Đ¸Đ˛Đ°ĐŊ.", "job_settings": "ПодĐĩŅˆĐ°Đ˛Đ°ŅšĐ° ĐŋĐžŅĐģа", "job_settings_description": "ĐŖĐŋŅ€Đ°Đ˛Ņ™Đ°Ņ˜Ņ‚Đĩ ĐŋĐ°Ņ€Đ°ĐģĐĩĐģĐŊĐžŅˆŅ›Ņƒ ĐŋĐžŅĐģОва", - "job_status": "ĐĄŅ‚Đ°Ņ‚ŅƒŅ ĐŋĐžŅĐģа", "jobs_delayed": "{jobCount, plural, one {# ОдĐģĐžĐļĐĩĐŊи} few {# ОдĐģĐžĐļĐĩĐŊа} other {# ОдĐģĐžĐļĐĩĐŊĐ¸Ņ…}}", "jobs_failed": "{jobCount, plural, one {# ĐŊĐĩ҃ҁĐŋĐĩ҈ĐŊи} few {# ĐŊĐĩ҃ҁĐŋĐĩ҈ĐŊа} other {# ĐŊĐĩ҃ҁĐŋĐĩ҈ĐŊĐ¸Ņ…}}", "library_created": "НаĐŋŅ€Đ°Đ˛Ņ™ĐĩĐŊа йийĐģĐ¸ĐžŅ‚ĐĩĐēа: {library}", @@ -367,7 +365,6 @@ "user_restore_scheduled_removal": "Đ’Ņ€Đ°Ņ‚Đ¸ ĐēĐžŅ€Đ¸ŅĐŊиĐēа - СаĐēаСаĐŊĐž ҃ĐēĐģĐ°ŅšĐ°ŅšĐĩ Са {date, date, ĐģĐžĐŊĐŗ}", "user_settings": "ПодĐĩŅˆĐ°Đ˛Đ°ŅšĐ° ĐēĐžŅ€Đ¸ŅĐŊиĐēа", "user_settings_description": "ĐŖĐŋŅ€Đ°Đ˛Ņ™Đ°Ņ˜Ņ‚Đĩ ĐēĐžŅ€Đ¸ŅĐŊĐ¸Ņ‡ĐēиĐŧ ĐŋОдĐĩŅˆĐ°Đ˛Đ°ŅšĐ¸Đŧа", - "user_successfully_removed": "ĐšĐžŅ€Đ¸ŅĐŊиĐē {email} ҘĐĩ ҃ҁĐŋĐĩ҈ĐŊĐž ҃ĐēĐģĐžŅšĐĩĐŊ.", "version_check_enabled_description": "ОĐŧĐžĐŗŅƒŅ›Đ¸ ĐŋŅ€ĐžĐ˛ĐĩŅ€Ņƒ ĐŊĐžĐ˛Đ¸Ņ… Đ¸ĐˇĐ´Đ°ŅšĐ°", "version_check_implications": "Đ¤ŅƒĐŊĐēŅ†Đ¸Ņ˜Đ° ĐŋŅ€ĐžĐ˛ĐĩŅ€Đĩ вĐĩŅ€ĐˇĐ¸Ņ˜Đĩ ҁĐĩ ĐžŅĐģĐ°ŅšĐ° ĐŊа ĐŋĐĩŅ€Đ¸ĐžĐ´Đ¸Ņ‡ĐŊ҃ ĐēĐžĐŧ҃ĐŊиĐēĐ°Ņ†Đ¸Ņ˜Ņƒ ŅĐ° ĐŗĐ¸Ņ‚Ņ…ŅƒĐą.Ņ†ĐžĐŧ", "version_check_settings": "ĐŸŅ€ĐžĐ˛ĐĩŅ€Đ° вĐĩŅ€ĐˇĐ¸Ņ˜Đĩ", diff --git a/i18n/sr_Latn.json b/i18n/sr_Latn.json index f17de2c8b1..ad490d491f 100644 --- a/i18n/sr_Latn.json +++ b/i18n/sr_Latn.json @@ -7,11 +7,12 @@ "action_common_update": "AÅžuriraj", "actions": "Postupci", "active": "Aktivni", + "active_count": "Aktivno: {count}", "activity": "Aktivnost", "activity_changed": "Aktivnost je {enabled, select, true {omogucˁena} other {onemogucˁena}}", "add": "Dodaj", "add_a_description": "Dodaj opis", - "add_a_location": "Dodaj Lokaciju", + "add_a_location": "Dodaj lokaciju", "add_a_name": "Dodaj ime", "add_a_title": "Dodaj naslov", "add_birthday": "Dodaj rođendan", @@ -71,7 +72,6 @@ "disable_login": "Onemogucˁi prijavu", "duplicate_detection_job_description": "Pokrenite maÅĄinsko učenje na sredstvima da biste otkrili slične slike. Oslanja se na pametnu pretragu", "exclusion_pattern_description": "Obrasci izuzimanja vam omogucˁavaju da ignoriÅĄete datoteke i fascikle kada skenirate biblioteku. Ovo je korisno ako imate fascikle koje sadrÅže datoteke koje ne Åželite da uvezete, kao ÅĄto su RAW datoteke.", - "external_library_management": "Upravljanje eksternim bibliotekama", "face_detection": "Detekcija lica", "face_detection_description": "Otkrijte lica u datotekama pomocˁu maÅĄinskog učenja. Za video snimke se uzima u obzir samo sličica. „OsveÅži“ (ponovno) obrađuje sve datoteke. „Resetovanje“ dodatno briÅĄe sve trenutne podatke o licu. „Nedostaju“ datoteke u redu koje joÅĄ nisu obrađene. Otkrivena lica cˁe biti stavljena u red za prepoznavanje lica nakon ÅĄto se prepoznavanje lica zavrÅĄi, grupiÅĄucˁi ih u postojecˁe ili nove osobe.", "facial_recognition_job_description": "Grupa je detektovala lica i dodala ih postojecˁim osobama. Ovaj korak se pokrecˁe nakon ÅĄto je prepoznavanje lica zavrÅĄeno. „Resetuj“ (ponovno) grupiÅĄe sva lica. „Nedostaju“ lica u redovima kojima nije dodeljena osoba.", @@ -104,7 +104,6 @@ "job_not_concurrency_safe": "Ovaj posao nije bezbedan da bude paralelno aktivan.", "job_settings": "PodeÅĄavanja posla", "job_settings_description": "Upravljajte paralelnoÅĄcˁu poslova", - "job_status": "Status posla", "jobs_delayed": "{jobCount, plural, one {# odloÅženi} few {# odloÅžena} other {# odloÅženih}}", "jobs_failed": "{jobCount, plural, one {# neuspeÅĄni} few {# neuspeÅĄna} other {# neuspeÅĄnih}}", "library_created": "Napravljena biblioteka: {library}", @@ -370,7 +369,6 @@ "user_restore_scheduled_removal": "Vrati korisnika - zakazano uklanjanje za {date, date, long}", "user_settings": "PodeÅĄavanja korisnika", "user_settings_description": "Upravljajte korisničkim podeÅĄavanjima", - "user_successfully_removed": "Korisnik {email} je uspeÅĄno uklonjen.", "version_check_enabled_description": "Omogucˁite proveru novih izdanja", "version_check_implications": "Funkcija provere verzije se oslanja na periodičnu komunikaciju sa github.com", "version_check_settings": "Provera verzije", diff --git a/i18n/sv.json b/i18n/sv.json index 0abe751be5..b8d33cd838 100644 --- a/i18n/sv.json +++ b/i18n/sv.json @@ -7,6 +7,7 @@ "action_common_update": "Uppdatera", "actions": "Händelser", "active": "Aktiva", + "active_count": "Aktiva: {count}", "activity": "Aktivitet", "activity_changed": "Aktiviteten är {enabled, select, true {aktiverad} other {inaktiverad}}", "add": "Tillägga", @@ -59,22 +60,24 @@ "backup_onboarding_title": "Säkerhetskopior", "backup_settings": "Inställningar databasdump", "backup_settings_description": "Hantera inställningar fÃļr databasdumpning.", - "cleared_jobs": "Rensade jobben fÃļr:{job}", + "cleared_jobs": "Rensade jobben fÃļr: {job}", "config_set_by_file": "Konfigurationen är satt av en konfigurationsfil", "confirm_delete_library": "Är du säker pÃĨ att du vill radera {library} album?", "confirm_delete_library_assets": "Är du säker pÃĨ att du vill radera detta album? {count, plural, one {# objekt} other {Samtliga # objekt}} kommer att tas bort frÃĨn Immich och ÃĨtgärden kan inte ÃĨngras. Filerna kommer att behÃĨllas pÃĨ hÃĨrddisken.", "confirm_email_below": "FÃļr att bekräfta, skriv ”{email}” nedan", "confirm_reprocess_all_faces": "Är du säker pÃĨ att du vill ÃĨterprocessa alla ansikten? Detta kommer ocksÃĨ rensa namngivna personer.", "confirm_user_password_reset": "Är du säker pÃĨ att du vill ÃĨterställa lÃļsenordet fÃļr {user}?", - "confirm_user_pin_code_reset": "Är du säker pÃĨ att du vill ÃĨterställa PIN-kod fÃļr {user}?", + "confirm_user_pin_code_reset": "Är du säker pÃĨ att du vill ÃĨterställa PIN-koden fÃļr {user}?", + "copy_config_to_clipboard_description": "Kopiera den aktuella systemkonfigurationen som ett JSON-objekt till urklipp", "create_job": "Skapa jobb", - "cron_expression": "Cron uttryck", - "cron_expression_description": "Sätt skanningsintervall genom att använda cron-format. FÃļr mer information se Crontab Guru", + "cron_expression": "Cron-uttryck", + "cron_expression_description": "Sätt skanningsintervallet genom att använda cron-format. FÃļr mer information se Crontab Guru", "cron_expression_presets": "Cron-uttryck fÃļrinställningar", "disable_login": "Inaktivera inloggning", "duplicate_detection_job_description": "KÃļr maskininlärning pÃĨ objekt fÃļr att upptäcka liknande bilder. Bygger pÃĨ Smart Search", "exclusion_pattern_description": "ExkluderingsmÃļnster tillÃĨter dig att ignorera filer och mappar när skanning gÃļrs av ditt album. Detta är användbart om du har mappar som innehÃĨller filer som du inte vill importera, t.ex. RAW-filer.", - "external_library_management": "Hantera externa bibliotek", + "export_config_as_json_description": "Ladda ner den aktuella systemkonfigurationen som en JSON-fil", + "external_libraries_page_description": "AdministratÃļrs externa bibliotekssida", "face_detection": "Ansiktsdetektering", "face_detection_description": "Identifiera ansikten i foton med hjälp av maskininlärning. FÃļr videor används endast miniatyrbilden. \"Ladda om\" gÃļr om sÃļkningen fÃļr alla objekt. \"Återställ\" rensar all gällande ansikts-data. \"Saknade\" letar i de objekt som ännu inte sÃļkts igenom. Alla identifierade ansikten läggs sedan i jobbkÃļn fÃļr ansiktsigenkänning där de mappas till nya eller befintliga personer.", "facial_recognition_job_description": "Gruppera upptäckta ansikten till personer. Det här steget kÃļrs efter att ansiktsdetektering är klar. \"Återställ\" (ÃĨter-)grupperar alla ansikten. \"Saknade\" kÃļar ansikten som inte har en person tilldelad.", @@ -102,22 +105,28 @@ "image_thumbnail_description": "Liten miniatyrbild med avskalad metadata, används när du tittar pÃĨ grupper av foton som huvudtidslinjen", "image_thumbnail_quality_description": "Miniatyrkvalitet frÃĨn 1-100. HÃļgre är bättre, men ger stÃļrre filer och kan minska appens fÃļljsamhet.", "image_thumbnail_title": "Miniatyrbildsinställningar", + "import_config_from_json_description": "Importera systemkonfiguration genom att ladda upp en JSON-konfigurationsfil", "job_concurrency": "{job} samtidighet", "job_created": "Jobb skapat", "job_not_concurrency_safe": "Det här jobbet är inte samtidighetssäkert.", "job_settings": "Jobbinställningar", "job_settings_description": "Hantera samtidiga jobb", - "job_status": "Jobbstatus", "jobs_delayed": "{jobCount, plural, one{# fÃļrsenad} other {# fÃļrsenade}}", "jobs_failed": "{jobCount, plural, other {# misslyckades}}", + "jobs_over_time": "Jobb Ãļver tid", "library_created": "Skapat bibliotek: {library}", "library_deleted": "Biblioteket har tagits bort", + "library_details": "Biblioteksdetaljer", + "library_folder_description": "Välj en mapp att importera. Denna mapp, inklusive undermappar, kommer sÃļkas igenom efter bilder och videor.", + "library_remove_exclusion_pattern_prompt": "Är du säker pÃĨ att du vill ta bort detta exkluderingsmÃļnster?", + "library_remove_folder_prompt": "Är du säker pÃĨ att du vill ta bort denna importmapp?", "library_scanning": "Periodisk skanning", "library_scanning_description": "Konfigurera periodisk biblioteksskanning", "library_scanning_enable_description": "Aktivera periodisk biblioteksskanning", "library_settings": "Externa bibliotek", "library_settings_description": "Hantera inställningar fÃļr externa bibliotek", "library_tasks_description": "SÃļk igenom externa bibliotek efter nya och/eller fÃļrändrade objekt", + "library_updated": "Bibliotek uppdaterat", "library_watching_enable_description": "Bevaka externa bibliotek fÃļr filändringar", "library_watching_settings": "Bevaka bibliotek [EXPERIMENTELLT]", "library_watching_settings_description": "Bevaka automatiskt filfÃļrändringar", @@ -134,7 +143,7 @@ "machine_learning_clip_model": "CLIP-modell", "machine_learning_clip_model_description": "Namnet pÃĨ en CLIP-modell listad här . Observera att du mÃĨste kÃļra ett \"Smart SÃļkning\" jobb fÃļr alla bilder när du ändrar modell.", "machine_learning_duplicate_detection": "Dubblettdetektering", - "machine_learning_duplicate_detection_enabled": "Aktivera dubblettdetektion", + "machine_learning_duplicate_detection_enabled": "Aktivera dubblettdetektering", "machine_learning_duplicate_detection_enabled_description": "Om den inaktiveras kommer exakt identiska tillgÃĨngar fortfarande att dedupliceras.", "machine_learning_duplicate_detection_setting_description": "Använd CLIP-inbäddningar fÃļr att hitta troliga dubbletter", "machine_learning_enabled": "Aktivera maskininlärning", @@ -172,7 +181,12 @@ "machine_learning_smart_search_enabled": "Aktivera smart sÃļkning", "machine_learning_smart_search_enabled_description": "Om inaktiverat kommer bilder inte att kodas fÃļr smart sÃļkning.", "machine_learning_url_description": "Maskininlärningsserverns URL. Om det är mer än en URL tillagd sÃĨ kommer ett fÃļrsÃļk per URL att utfÃļras tills nÃĨgon av dom svarar, fÃļrsÃļken gÃļrs i kronologisk ordning. Servrar som inte svarar kommer tillfälligt ignoreras tills de är nÃĨbara igen.", + "maintenance_settings": "UnderhÃĨll", + "maintenance_settings_description": "FÃļrsätt Immich i underhÃĨllsläge.", + "maintenance_start": "PÃĨbÃļrja underhÃĨllsläget", + "maintenance_start_error": "Misslyckades att starta underhÃĨllsläget.", "manage_concurrency": "Hantera samtidighet", + "manage_concurrency_description": "Navigera till jobbsidan fÃļr att hantera jobbens samtidighet", "manage_log_settings": "Hantera logginställningar", "map_dark_style": "MÃļrk stil", "map_enable_description": "Aktivera kartfunktioner", @@ -262,10 +276,14 @@ "password_settings_description": "Hantera inställningar fÃļr lÃļsenords-inloggning", "paths_validated_successfully": "Samtliga sÃļkvägar kunde bekräftas", "person_cleanup_job": "Person rensning", + "queue_details": "KÃļinformation", + "queues": "JobbkÃļer", + "queues_page_description": "Sida fÃļr administratÃļrsjobbkÃļer", "quota_size_gib": "Lagringskvot (GiB)", "refreshing_all_libraries": "Samtliga bibliotek uppdateras", "registration": "AdministratÃļrsregistrering", "registration_description": "Du utses till administratÃļr eftersom du är systemets fÃļrsta användare. Du ansvarar fÃļr administration och kan skapa ytterligare användare.", + "remove_failed_jobs": "Ta bort misslyckade jobb", "require_password_change_on_login": "Kräv av användaren att byta lÃļsenord vid fÃļrsta inloggning", "reset_settings_to_default": "Återställ inställningar till standard", "reset_settings_to_recent_saved": "Återställ inställningar till de senaste sparade", @@ -278,8 +296,10 @@ "server_public_users_description": "Alla användare (namn och e-post) är listade när man lägger till en användare till ett delat album. Om inaktiverat, kommer användarlistan endast vara synlig fÃļr administratÃļrer.", "server_settings": "Serverinställningar", "server_settings_description": "Hantera serverinställningar", + "server_stats_page_description": "Statistiksida fÃļr administratÃļrsservern", "server_welcome_message": "Välkomstmeddelande", "server_welcome_message_description": "Ett meddelande som visas pÃĨ inloggningssidan.", + "settings_page_description": "AdministratÃļrsinställningar", "sidecar_job": "MedfÃļljande metadata", "sidecar_job_description": "Upptäck eller synkronisera medfÃļljande metadata frÃĨn filsystemet", "slideshow_duration_description": "Antal sekunder att visa varje bild", @@ -399,6 +419,7 @@ "user_settings": "Användarinställningar", "user_settings_description": "Hantera användarinställningar", "user_successfully_removed": "Användaren {email} har tagits bort.", + "users_page_description": "AdministratÃļrsanvändare", "version_check_enabled_description": "Aktivera versionskontroll", "version_check_implications": "Funktionen fÃļr versionskontroll är beroende av periodisk kommunikation med github.com", "version_check_settings": "Versionskontroll", @@ -461,7 +482,7 @@ "album_viewer_appbar_share_to": "Dela Till", "album_viewer_page_share_add_users": "Lägg till användare", "album_with_link_access": "LÃĨt alla med länken se foton och personer i det här albumet.", - "albums": "Albumen", + "albums": "Album", "albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Album}}", "albums_default_sort_order": "Standard sorteringsordning fÃļr album", "albums_default_sort_order_description": "Standard sorteringsordning fÃļr mediefiler vid skapande av nytt album.", @@ -631,6 +652,7 @@ "backup_options_page_title": "Säkerhetskopieringsinställningar", "backup_setting_subtitle": "Hantera inställningar fÃļr fÃļr- och bakgrundsuppladdning", "backup_settings_subtitle": "Hantera uppladdningsinställningar", + "backup_upload_details_page_more_details": "Tryck fÃļr mer detaljer", "backward": "BakÃĨt", "biometric_auth_enabled": "Biometrisk autentisering aktiverad", "biometric_locked_out": "Du är utelÃĨst frÃĨn biometrisk autentisering", @@ -697,6 +719,7 @@ "check_corrupt_asset_backup_button": "Kontrollera", "check_corrupt_asset_backup_description": "KÃļr kontrollen endast Ãļver Wi-Fi och när alla objekt har säkerhetskopierats. Det kan ta nÃĨgra minuter.", "check_logs": "Kontrollera loggar", + "checksum": "Checksumma", "choose_matching_people_to_merge": "Välj matchande personer att slÃĨ samman", "city": "Stad", "clear": "Rensa", @@ -719,6 +742,7 @@ "collapse_all": "Kollapsa alla", "color": "Färg", "color_theme": "Färgtema", + "command": "Kommando", "comment_deleted": "Kommentar raderad", "comment_options": "Kommentarsalternativ", "comments_and_likes": "Kommentarer & likes", @@ -967,6 +991,7 @@ "failed_to_unstack_assets": "Det gick inte att avstapla objekt", "failed_to_update_notification_status": "Misslyckades med att uppdatera aviseringens status", "incorrect_email_or_password": "Felaktig e-postadress eller lÃļsenord", + "library_folder_already_exists": "Denna sÃļkväg är redan importerad.", "paths_validation_failed": "{paths, plural, one {# path} other {# paths}} misslyckades valideringen", "profile_picture_transparent_pixels": "Profilbilder kan inte ha genomskinliga pixlar. Zooma in och/eller flytta bilden.", "quota_higher_than_disk_size": "Du har angett en kvot som är hÃļgre än diskstorleken", @@ -1051,6 +1076,7 @@ "unable_to_update_user": "Kunde inte uppdatera användare", "unable_to_upload_file": "Det gÃĨr inte att ladda upp filen" }, + "exclusion_pattern": "ExkluderingsmÃļnster", "exif": "EXIF", "exif_bottom_sheet_description": "Lägg till beskrivning...", "exif_bottom_sheet_description_error": "Fel vid uppdatering av beskrivningen", @@ -1081,6 +1107,7 @@ "external_network_sheet_info": "När appen inte är ansluten till det fÃļredragna Wi-Fi-nätverket, kommer den att ansluta till servern via den fÃļrsta av fÃļljande URL:er den kan nÃĨ, frÃĨn toppen till botten", "face_unassigned": "Otilldelade", "failed": "Misslyckades", + "failed_count": "Misslyckade: {count}", "failed_to_authenticate": "Misslyckades med autentisering", "failed_to_load_assets": "Det gick inte att läsa in resurser", "failed_to_load_folder": "Kunde inte ladda mappen", @@ -1110,6 +1137,7 @@ "folders_feature_description": "Bläddra i mappvyn fÃļr foton och videoklipp i filsystemet", "forgot_pin_code_question": "GlÃļmt din pinkod?", "forward": "FramÃĨt", + "full_path": "Fullständig sÃļkväg: {path}", "gcast_enabled": "Google-Cast", "gcast_enabled_description": "Denna funktion läser in externa resurser frÃĨn Google fÃļr att fungera.", "general": "Allmänt", @@ -1140,12 +1168,14 @@ "header_settings_header_name_input": "Header-namn", "header_settings_header_value_input": "Header-värde", "headers_settings_tile_title": "Anpassade proxy-headers", + "height": "HÃļjd", "hi_user": "Hej {name} ({email})", "hide_all_people": "GÃļm alla personer", "hide_gallery": "DÃļlj galleri", "hide_named_person": "GÃļm personen {name}", "hide_password": "DÃļlj lÃļsenord", "hide_person": "DÃļlj person", + "hide_text_recognition": "DÃļlj textigenkänning", "hide_unnamed_people": "GÃļm personer utan namn", "home_page_add_to_album_conflicts": "Lade till {added} foton och videor i albumet {album}. {failed} foton och videor finns redan i albumet.", "home_page_add_to_album_err_local": "Kan inte lägga till lokala objekt till album ännu, hoppar Ãļver", @@ -1239,6 +1269,8 @@ "let_others_respond": "LÃĨt andra svara", "level": "NivÃĨ", "library": "Bibliotek", + "library_add_folder": "Lägg till mapp", + "library_edit_folder": "Redigera mapp", "library_options": "NivÃĨ alternativ", "library_page_device_albums": "Album pÃĨ Enheten", "library_page_new_album": "Nytt album", @@ -1259,6 +1291,7 @@ "local": "Lokalt", "local_asset_cast_failed": "Det gÃĨr inte att casta en tillgÃĨng som inte har laddats upp till servern", "local_assets": "Lokala tillgÃĨngar", + "local_id": "Lokalt ID", "local_media_summary": "Sammanfattning av lokala medier", "local_network": "Lokalt nätverk", "local_network_sheet_info": "Appen kommer ansluta till servern via denna URL när det specificerade WiFi-nätverket används", @@ -1310,6 +1343,11 @@ "loop_videos_description": "Aktivera fÃļr att automatiskt loopa en video i detaljvisaren.", "main_branch_warning": "Du använder en utvecklingsversion. Vi rekommenderar starkt att du använder en utgiven version!", "main_menu": "Huvudmeny", + "maintenance_description": "Immich har fÃļrsatts i underhÃĨllsläge.", + "maintenance_end": "Avsluta underhÃĨllsläge", + "maintenance_end_error": "Misslyckades att avsluta underhÃĨllsläge.", + "maintenance_logged_in_as": "FÃļr närvarande inloggad som {user}", + "maintenance_title": "Tillfälligt otillgänglig", "make": "Tillverkare", "manage_geolocation": "Hantera plats", "manage_media_access_rationale": "Denna behÃļrighet krävs fÃļr korrekt hantering av att flytta tillgÃĨngar till papperskorgen och ÃĨterställa dem frÃĨn den.", @@ -1432,6 +1470,7 @@ "no_favorites_message": "Lägg till favoriter fÃļr att snabbt hitta dina bästa bilder och videor", "no_libraries_message": "Skapa ett externt bibliotek fÃļr att se dina bilder och videor", "no_local_assets_found": "Inga lokala tillgÃĨngar hittades med denna kontrollsumma", + "no_location_set": "Ingen plats satt", "no_locked_photos_message": "Foton och videor i den lÃĨsta mappen är dolda och visas inte när du bläddrar eller sÃļker i ditt bibliotek.", "no_name": "Inget namn", "no_notifications": "Inga aviseringar", @@ -1491,6 +1530,7 @@ "other_variables": "Andra variabler", "owned": "Ägd", "owner": "Ägare", + "page": "Sida", "partner": "Partner", "partner_can_access": "{partner} har ÃĨtkomst", "partner_can_access_assets": "Alla dina foton och videoklipp fÃļrutom de i Arkiverade och Raderade", @@ -1822,6 +1862,8 @@ "server_offline": "Servern offline", "server_online": "Server online", "server_privacy": "Serversekretess", + "server_restarting_description": "Denna sida kommer läsas in pÃĨ nytt inom kort.", + "server_restarting_title": "Servern startas om", "server_stats": "Serverstatistik", "server_update_available": "Serveruppdatering är tillgänglig", "server_version": "Serverversion", @@ -1945,6 +1987,7 @@ "show_slideshow_transition": "Visa bildspelsÃļvergÃĨng", "show_supporter_badge": "Supporteremblem", "show_supporter_badge_description": "Visa supporteremblem", + "show_text_recognition": "Visa textigenkänning", "show_text_search_menu": "Visa textsÃļkningsmeny", "shuffle": "Blanda", "sidebar": "Sidopanel", @@ -2015,6 +2058,7 @@ "tags": "Taggar", "tap_to_run_job": "Tryck fÃļr att kÃļra jobbet", "template": "Mall", + "text_recognition": "Textigenkänning", "theme": "Tema", "theme_selection": "Val av tema", "theme_selection_description": "Ställ in temat automatiskt till ljust eller mÃļrkt baserat pÃĨ din webbläsares inställningar", @@ -2047,6 +2091,7 @@ "to_select": "fÃļr att välja", "to_trash": "Papperskorg", "toggle_settings": "Växla inställningar", + "toggle_theme_description": "Växla tema", "total": "Totalt", "total_usage": "Total användning", "trash": "Papperskorg", @@ -2155,6 +2200,7 @@ "view_album": "Visa Album", "view_all": "Visa alla", "view_all_users": "Visa alla användare", + "view_asset_owners": "Visa tillgÃĨngsägare", "view_details": "Visa detaljer", "view_in_timeline": "Visa i tidslinjen", "view_link": "Visa länk", @@ -2171,10 +2217,12 @@ "viewer_unstack": "Stapla Av", "visibility_changed": "Synlighet ändrad fÃļr {count, plural, one {# person} other {# personer}}", "waiting": "Väntar", + "waiting_count": "Väntande: {count}", "warning": "Varning", "week": "Vecka", "welcome": "Välkommen", "welcome_to_immich": "Välkommen till Immich", + "width": "Bredd", "wifi_name": "Wi-Fi-namn", "workflow": "ArbetsflÃļde", "wrong_pin_code": "Fel pinkod", diff --git a/i18n/ta.json b/i18n/ta.json index 55f674ee79..a686df7326 100644 --- a/i18n/ta.json +++ b/i18n/ta.json @@ -31,6 +31,7 @@ "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 āŽāŽšā¯ āŽšā¯‡āŽ°ā¯āŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", @@ -66,6 +67,7 @@ "confirm_reprocess_all_faces": "āŽŽāŽ˛ā¯āŽ˛āŽž āŽŽā¯āŽ•āŽ™ā¯āŽ•āŽŗā¯ˆāŽ¯ā¯āŽŽā¯ āŽŽā¯€āŽŖā¯āŽŸā¯āŽŽā¯ āŽšā¯†āŽ¯āŽ˛āŽžāŽ•ā¯āŽ• āŽĩāŽŋāŽ°ā¯āŽŽā¯āŽĒā¯āŽ•āŽŋāŽąā¯€āŽ°ā¯āŽ•āŽŗāŽž? āŽ‡āŽ¤ā¯ āŽĒā¯†āŽ¯āŽ°āŽŋāŽŸāŽĒā¯āŽĒāŽŸā¯āŽŸ āŽ¨āŽĒāŽ°ā¯āŽ•āŽŗā¯ˆāŽ¯ā¯āŽŽā¯ āŽ…āŽ´āŽŋāŽ•ā¯āŽ•ā¯āŽŽā¯.", "confirm_user_password_reset": "{user} āŽ‡āŽŠā¯ āŽ•āŽŸāŽĩā¯āŽšā¯āŽšā¯ŠāŽ˛ā¯āŽ˛ā¯ˆ āŽ¨āŽŋāŽšā¯āŽšāŽ¯āŽŽāŽžāŽ• āŽŽā¯€āŽŸā¯āŽŸāŽŽā¯ˆāŽ•ā¯āŽ• āŽĩāŽŋāŽ°ā¯āŽŽā¯āŽĒā¯āŽ•āŽŋāŽąā¯€āŽ°ā¯āŽ•āŽŗāŽž?", "confirm_user_pin_code_reset": "{user} āŽ‡āŽŠā¯ āŽĒāŽŋāŽŠā¯ āŽ•ā¯āŽąāŽŋāŽ¯ā¯€āŽŸā¯āŽŸā¯ˆ āŽŽā¯€āŽŸā¯āŽŸāŽŽā¯ˆāŽ•ā¯āŽ• āŽĩāŽŋāŽ°ā¯āŽŽā¯āŽĒā¯āŽ•āŽŋāŽąā¯€āŽ°ā¯āŽ•āŽŗāŽž?", + "copy_config_to_clipboard_description": "āŽ¤āŽąā¯āŽĒā¯‹āŽ¤ā¯ˆāŽ¯ āŽ•āŽŖāŽŋāŽŠāŽŋ āŽ‰āŽŗā¯āŽŗāŽŽā¯ˆāŽĩ❈ JSON āŽĒā¯ŠāŽ°ā¯āŽŗāŽžāŽ• āŽ•āŽŋāŽŗāŽŋāŽĒā¯āŽĒā¯‹āŽ°ā¯āŽŸā¯āŽ•ā¯āŽ•ā¯ āŽ¨āŽ•āŽ˛ā¯†āŽŸā¯āŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", "create_job": "āŽĩā¯‡āŽ˛ā¯ˆāŽ¯ā¯ˆ āŽ‰āŽ°ā¯āŽĩāŽžāŽ•ā¯āŽ•ā¯", "cron_expression": "āŽ•ā¯āŽ°ā¯‹āŽŠā¯ āŽĩā¯†āŽŗāŽŋāŽĒā¯āŽĒāŽžāŽŸā¯", "cron_expression_description": "CRON āŽĩāŽŸāŽŋāŽĩāŽŽā¯ˆāŽĒā¯āŽĒ❈āŽĒā¯ āŽĒāŽ¯āŽŠā¯āŽĒāŽŸā¯āŽ¤ā¯āŽ¤āŽŋ āŽšā¯āŽ•ā¯‡āŽŠāŽŋāŽ™ā¯ āŽ‡āŽŸā¯ˆāŽĩā¯†āŽŗāŽŋāŽ¯ā¯ˆ āŽ…āŽŽā¯ˆāŽ•ā¯āŽ•āŽĩā¯āŽŽā¯. āŽŽā¯‡āŽ˛ā¯āŽŽā¯ āŽ¤āŽ•āŽĩāŽ˛ā¯āŽ•ā¯āŽ•ā¯ āŽŽ.āŽ•āŽž. āŽ•ā¯āŽ°ā¯‹āŽŠā¯āŽŸāŽžāŽĒā¯ āŽ•ā¯āŽ°ā¯ ", @@ -73,7 +75,8 @@ "disable_login": "āŽ‰āŽŗā¯āŽ¨ā¯āŽ´ā¯ˆāŽĩ❈ āŽŽā¯āŽŸāŽ•ā¯āŽ•ā¯", "duplicate_detection_job_description": "āŽ’āŽ¤ā¯āŽ¤ āŽĒāŽŸāŽ™ā¯āŽ•āŽŗā¯ˆāŽ•ā¯ āŽ•āŽŖā¯āŽŸāŽąāŽŋāŽ¯, āŽšā¯ŠāŽ¤ā¯āŽ¤ā¯āŽ•ā¯āŽ•āŽŗāŽŋāŽ˛ā¯ āŽ‡āŽ¯āŽ¨ā¯āŽ¤āŽŋāŽ°āŽ•ā¯ āŽ•āŽąā¯āŽąāŽ˛ā¯ˆ āŽ‡āŽ¯āŽ•ā¯āŽ•āŽĩā¯āŽŽā¯. āŽ¸ā¯āŽŽāŽžāŽ°ā¯āŽŸā¯ āŽ¤ā¯‡āŽŸāŽ˛ā¯ˆ āŽ¨āŽŽā¯āŽĒāŽŋāŽ¯ā¯āŽŗā¯āŽŗāŽ¤ā¯", "exclusion_pattern_description": "āŽ‰āŽ™ā¯āŽ•āŽŗā¯ āŽ¨ā¯‚āŽ˛āŽ•āŽ¤ā¯āŽ¤ā¯ˆ āŽ¸ā¯āŽ•ā¯‡āŽŠā¯ āŽšā¯†āŽ¯ā¯āŽ¯ā¯āŽŽā¯ āŽĒā¯‹āŽ¤ā¯ āŽ•ā¯‹āŽĒā¯āŽĒā¯āŽ•āŽŗā¯ˆāŽ¯ā¯āŽŽā¯ āŽ•ā¯‹āŽĒā¯āŽĒā¯āŽąā¯ˆāŽ•āŽŗā¯ˆāŽ¯ā¯āŽŽā¯ āŽĒā¯āŽąāŽ•ā¯āŽ•āŽŖāŽŋāŽ•ā¯āŽ• āŽĩāŽŋāŽ˛āŽ•ā¯āŽ•ā¯ āŽĩāŽŸāŽŋāŽĩāŽ™ā¯āŽ•āŽŗā¯ āŽ‰āŽ™ā¯āŽ•āŽŗā¯ˆ āŽ…āŽŠā¯āŽŽāŽ¤āŽŋāŽ•ā¯āŽ•āŽŋāŽŠā¯āŽąāŽŠ. RAW āŽ•ā¯‹āŽĒā¯āŽĒā¯āŽ•āŽŗā¯ āŽĒā¯‹āŽŠā¯āŽą āŽ¨ā¯€āŽ™ā¯āŽ•āŽŗā¯ āŽ‡āŽąāŽ•ā¯āŽ•ā¯āŽŽāŽ¤āŽŋ āŽšā¯†āŽ¯ā¯āŽ¯ āŽĩāŽŋāŽ°ā¯āŽŽā¯āŽĒāŽžāŽ¤ āŽ•ā¯‹āŽĒā¯āŽĒā¯āŽ•āŽŗā¯ˆāŽ•ā¯ āŽ•ā¯ŠāŽŖā¯āŽŸ āŽ•ā¯‹āŽĒā¯āŽĒā¯āŽąā¯ˆāŽ•āŽŗā¯ āŽ‰āŽ™ā¯āŽ•āŽŗāŽŋāŽŸāŽŽā¯ āŽ‡āŽ°ā¯āŽ¨ā¯āŽ¤āŽžāŽ˛ā¯ āŽ‡āŽ¤ā¯ āŽĒāŽ¯āŽŠā¯āŽŗā¯āŽŗāŽ¤āŽžāŽ• āŽ‡āŽ°ā¯āŽ•ā¯āŽ•ā¯āŽŽā¯.", - "external_library_management": "āŽĩā¯†āŽŗāŽŋāŽĒā¯āŽĒā¯āŽą āŽĒā¯āŽ•ā¯ˆāŽĒā¯āŽĒāŽŸ āŽ¨ā¯‚āŽ˛āŽ• āŽŽā¯‡āŽ˛āŽžāŽŖā¯āŽŽā¯ˆ", + "export_config_as_json_description": "āŽ¤āŽąā¯āŽĒā¯‹āŽ¤ā¯ˆāŽ¯ āŽ•āŽŖāŽŋāŽŠāŽŋ āŽ‰āŽŗā¯āŽŗāŽŽā¯ˆāŽĩ❈ JSON āŽ•ā¯‹āŽĒā¯āŽĒāŽžāŽ•āŽĒā¯ āŽĒāŽ¤āŽŋāŽĩāŽŋāŽąāŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", + "external_libraries_page_description": "āŽ¨āŽŋāŽ°ā¯āŽĩāŽžāŽ•āŽŋ āŽĩā¯†āŽŗāŽŋāŽĒā¯āŽĒā¯āŽą āŽ¨ā¯‚āŽ˛āŽ•āŽĒā¯ āŽĒāŽ•ā¯āŽ•āŽŽā¯", "face_detection": "āŽŽā¯āŽ•āŽŽā¯ āŽ•āŽŖā¯āŽŸāŽąāŽŋāŽ¤āŽ˛ā¯", "face_detection_description": "āŽ‡āŽ¯āŽ¨ā¯āŽ¤āŽŋāŽ° āŽ•āŽąā¯āŽąāŽ˛ā¯ˆāŽĒā¯ āŽĒāŽ¯āŽŠā¯āŽĒāŽŸā¯āŽ¤ā¯āŽ¤āŽŋ āŽšā¯ŠāŽ¤ā¯āŽ¤ā¯āŽ•ā¯āŽ•āŽŗāŽŋāŽ˛ā¯ āŽ‰āŽŗā¯āŽŗ āŽŽā¯āŽ•āŽ™ā¯āŽ•āŽŗā¯ˆāŽ•ā¯ āŽ•āŽŖā¯āŽŸāŽąāŽŋāŽ¯āŽĩā¯āŽŽā¯. āŽĩā¯€āŽŸāŽŋāŽ¯ā¯‹āŽ•ā¯āŽ•āŽŗā¯āŽ•ā¯āŽ•ā¯, āŽšāŽŋāŽąā¯āŽĒāŽŸāŽŽā¯ āŽŽāŽŸā¯āŽŸā¯āŽŽā¯‡ āŽ•āŽ°ā¯āŽ¤āŽĒā¯āŽĒāŽŸā¯āŽ•āŽŋāŽąāŽ¤ā¯. \"āŽ…āŽŠā¯ˆāŽ¤ā¯āŽ¤ā¯\" (āŽŽāŽąā¯-) āŽ…āŽŠā¯ˆāŽ¤ā¯āŽ¤ā¯ āŽšā¯ŠāŽ¤ā¯āŽ¤ā¯āŽ•āŽŗā¯ˆāŽ¯ā¯āŽŽā¯ āŽšā¯†āŽ¯āŽ˛āŽžāŽ•ā¯āŽ•ā¯āŽ•āŽŋāŽąāŽ¤ā¯. āŽ‡āŽ¤ā¯āŽĩāŽ°ā¯ˆ āŽšā¯†āŽ¯āŽ˛āŽžāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸāŽžāŽ¤ āŽĒā¯āŽ•ā¯ˆāŽĒā¯āŽĒāŽŸ āŽšā¯ŠāŽ¤ā¯āŽ¤ā¯āŽ•ā¯āŽ•āŽŗā¯ˆ \"āŽ•āŽžāŽŖāŽĩāŽŋāŽ˛ā¯āŽ˛ā¯ˆ\" āŽĩāŽ°āŽŋāŽšā¯ˆāŽĒā¯āŽĒāŽŸā¯āŽ¤ā¯āŽ¤ā¯āŽ•āŽŋāŽąāŽ¤ā¯. āŽŽā¯āŽ•āŽŽā¯ āŽ•āŽŖā¯āŽŸāŽąāŽŋāŽ¤āŽ˛ā¯ āŽŽā¯āŽŸāŽŋāŽ¨ā¯āŽ¤āŽ¤ā¯āŽŽā¯, āŽ•āŽŖā¯āŽŸāŽąāŽŋāŽ¯āŽĒā¯āŽĒāŽŸā¯āŽŸ āŽŽā¯āŽ•āŽ™ā¯āŽ•āŽŗā¯, āŽāŽąā¯āŽ•āŽŠāŽĩ❇ āŽ‡āŽ°ā¯āŽ•ā¯āŽ•ā¯āŽŽā¯ āŽ…āŽ˛ā¯āŽ˛āŽ¤ā¯ āŽĒā¯āŽ¤āŽŋāŽ¯ āŽ¨āŽĒāŽ°ā¯āŽ•āŽŗāŽžāŽ•āŽ•ā¯ āŽ•ā¯āŽ´ā¯āŽĩāŽžāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸā¯, āŽŽā¯āŽ• āŽ…āŽŸā¯ˆāŽ¯āŽžāŽŗāŽ¤ā¯āŽ¤āŽŋāŽąā¯āŽ•āŽžāŽ• āŽĩāŽ°āŽŋāŽšā¯ˆāŽ¯āŽŋāŽ˛ā¯ āŽ¨āŽŋāŽąā¯āŽ¤ā¯āŽ¤āŽĒā¯āŽĒāŽŸā¯āŽŽā¯.", "facial_recognition_job_description": "āŽ¨āŽĒāŽ°ā¯āŽ•āŽŗāŽŋāŽŠā¯ āŽŽā¯āŽ•āŽ™ā¯āŽ•āŽŗā¯ˆāŽ•ā¯ āŽ•ā¯āŽ´ā¯ āŽ•āŽŖā¯āŽŸāŽąāŽŋāŽ¨ā¯āŽ¤āŽ¤ā¯. āŽŽā¯āŽ•āŽŽā¯ āŽ•āŽŖā¯āŽŸāŽąāŽŋāŽ¤āŽ˛ā¯ āŽŽā¯āŽŸāŽŋāŽ¨ā¯āŽ¤āŽ¤ā¯āŽŽā¯ āŽ‡āŽ¨ā¯āŽ¤āŽĒā¯ āŽĒāŽŸāŽŋ āŽ‡āŽ¯āŽ™ā¯āŽ•ā¯āŽŽā¯. āŽ…āŽŠā¯ˆāŽ¤ā¯āŽ¤ā¯ āŽŽā¯āŽ•āŽ™ā¯āŽ•āŽŗā¯ˆāŽ¯ā¯āŽŽā¯ \"āŽ…āŽŠā¯ˆāŽ¤ā¯āŽ¤ā¯\" (āŽŽāŽąā¯-) āŽ•ā¯ŠāŽ¤ā¯āŽ¤ā¯āŽ•āŽŗā¯. \"āŽ•āŽžāŽŖāŽĩāŽŋāŽ˛ā¯āŽ˛ā¯ˆ\" āŽŽāŽŠā¯āŽĒāŽ¤ā¯ āŽ¨āŽĒāŽ°ā¯ āŽ¨āŽŋāŽ¯āŽŽāŽŋāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸāŽžāŽ¤ āŽŽā¯āŽ•āŽ™ā¯āŽ•āŽŗā¯ˆ āŽĩāŽ°āŽŋāŽšā¯ˆāŽĒā¯āŽĒāŽŸā¯āŽ¤ā¯āŽ¤ā¯āŽ•āŽŋāŽąāŽ¤ā¯.", @@ -101,22 +104,27 @@ "image_thumbnail_description": "āŽ…āŽ•āŽąā¯āŽąāŽĒā¯āŽĒāŽŸā¯āŽŸ āŽŽā¯†āŽŸā¯āŽŸāŽžāŽŸā¯‡āŽŸā¯āŽŸāŽžāŽĩā¯āŽŸāŽŠā¯ āŽšāŽŋāŽąāŽŋāŽ¯ āŽšāŽŋāŽąā¯āŽĒāŽŸāŽŽā¯, āŽŽā¯āŽ¤āŽŠā¯āŽŽā¯ˆāŽ¯āŽžāŽŠ āŽ•āŽžāŽ˛āŽĩāŽ°āŽŋāŽšā¯ˆ āŽĒā¯‹āŽŠā¯āŽą āŽĒā¯āŽ•ā¯ˆāŽĒā¯āŽĒāŽŸāŽ™ā¯āŽ•āŽŗāŽŋāŽŠā¯ āŽ•ā¯āŽ´ā¯āŽ•ā¯āŽ•āŽŗā¯ˆāŽĒā¯ āŽĒāŽžāŽ°ā¯āŽ•ā¯āŽ•ā¯āŽŽā¯āŽĒā¯‹āŽ¤ā¯ āŽĒāŽ¯āŽŠā¯āŽĒāŽŸā¯āŽ¤ā¯āŽ¤āŽĒā¯āŽĒāŽŸā¯āŽ•āŽŋāŽąāŽ¤ā¯", "image_thumbnail_quality_description": "1-100 āŽŽā¯āŽ¤āŽ˛ā¯ āŽšāŽŋāŽąā¯ āŽ¤āŽ•ā¯āŽ¤āŽŋ. āŽ‰āŽ¯āŽ°ā¯āŽ¨ā¯āŽ¤āŽ¤ā¯ āŽšāŽŋāŽąāŽ¨ā¯āŽ¤āŽ¤ā¯, āŽ†āŽŠāŽžāŽ˛ā¯ āŽĒā¯†āŽ°āŽŋāŽ¯ āŽ•ā¯‹āŽĒā¯āŽĒā¯āŽ•āŽŗā¯ˆ āŽ‰āŽ°ā¯āŽĩāŽžāŽ•ā¯āŽ•ā¯āŽ•āŽŋāŽąāŽ¤ā¯ āŽŽāŽąā¯āŽąā¯āŽŽā¯ āŽĒāŽ¯āŽŠā¯āŽĒāŽžāŽŸā¯āŽŸā¯ āŽŽāŽąā¯āŽŽā¯ŠāŽ´āŽŋāŽ¯ā¯ˆāŽ•ā¯ āŽ•ā¯āŽąā¯ˆāŽ•ā¯āŽ•ā¯āŽŽā¯.", "image_thumbnail_title": "āŽšāŽŋāŽąā¯ āŽ…āŽŽā¯ˆāŽĒā¯āŽĒā¯āŽ•āŽŗā¯", + "import_config_from_json_description": "JSON āŽ•āŽŸā¯āŽŸāŽŽā¯ˆāŽĒā¯āŽĒ❁ āŽ•ā¯‹āŽĒā¯āŽĒ❈ āŽĒāŽ¤āŽŋāŽĩā¯‡āŽąā¯āŽąā¯āŽĩāŽ¤āŽŠā¯ āŽŽā¯‚āŽ˛āŽŽā¯ āŽ•āŽŖāŽŋāŽŠāŽŋ āŽ•āŽŸā¯āŽŸāŽŽā¯ˆāŽĒā¯āŽĒ❈ āŽ‡āŽąāŽ•ā¯āŽ•ā¯āŽŽāŽ¤āŽŋ āŽšā¯†āŽ¯ā¯āŽ¯āŽĩā¯āŽŽā¯", "job_concurrency": "{job} āŽ’āŽ¤ā¯āŽ¤āŽŋāŽšā¯ˆāŽĩ❁", - "job_created": "āŽ‰āŽ°ā¯āŽĩāŽžāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸāŽ¤ā¯", + "job_created": "āŽĩā¯‡āŽ˛ā¯ˆ āŽ‰āŽ°ā¯āŽĩāŽžāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸāŽ¤ā¯", "job_not_concurrency_safe": "āŽ‡āŽ¨ā¯āŽ¤ āŽĩā¯‡āŽ˛ā¯ˆ āŽ’āŽ°ā¯‡ āŽ¨ā¯‡āŽ°āŽ¤ā¯āŽ¤āŽŋāŽ˛ā¯ āŽĒāŽžāŽ¤ā¯āŽ•āŽžāŽĒā¯āŽĒāŽžāŽŠāŽ¤ā¯ āŽ…āŽ˛ā¯āŽ˛.", "job_settings": "āŽĩā¯‡āŽ˛ā¯ˆ āŽ…āŽŽā¯ˆāŽĒā¯āŽĒā¯āŽ•āŽŗā¯", "job_settings_description": "āŽĩā¯‡āŽ˛ā¯ˆ āŽ’āŽ¤ā¯āŽ¤āŽŋāŽšā¯ˆāŽĩ❈ āŽ¨āŽŋāŽ°ā¯āŽĩāŽ•āŽŋāŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", - "job_status": "āŽĩā¯‡āŽ˛ā¯ˆ āŽ¨āŽŋāŽ˛ā¯ˆ", "jobs_delayed": "{jobCount, plural, other {# āŽ¤āŽžāŽŽāŽ¤āŽŽāŽžāŽŠāŽ¤ā¯}}", "jobs_failed": "{jobCount, plural, other {# āŽ¤ā¯‹āŽ˛ā¯āŽĩāŽŋāŽ¯ā¯āŽąā¯āŽąāŽ¤ā¯}}", - "library_created": "āŽ‰āŽ°ā¯āŽĩāŽžāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸ āŽĒā¯āŽ•ā¯ˆāŽĒā¯āŽĒāŽŸ āŽ¨ā¯‚āŽ˛āŽ•āŽŽā¯: {library}", + "library_created": "āŽ‰āŽ°ā¯āŽĩāŽžāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸ āŽ¨ā¯‚āŽ˛āŽ•āŽŽā¯: {library}", "library_deleted": "āŽĒā¯āŽ•ā¯ˆāŽĒā¯āŽĒāŽŸ āŽ¨ā¯‚āŽ˛āŽ•āŽŽā¯ āŽ¨ā¯€āŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸāŽ¤ā¯", + "library_details": "āŽ¨ā¯‚āŽ˛āŽ• āŽĩāŽŋāŽĩāŽ°āŽ™ā¯āŽ•āŽŗā¯", + "library_folder_description": "āŽ‡āŽąāŽ•ā¯āŽ•ā¯āŽŽāŽ¤āŽŋ āŽšā¯†āŽ¯ā¯āŽ¯ āŽ’āŽ°ā¯ āŽ•ā¯‹āŽĒā¯āŽĒā¯āŽąā¯ˆāŽ¯ā¯ˆāŽ•ā¯ āŽ•ā¯āŽąāŽŋāŽĒā¯āŽĒāŽŋāŽŸāŽĩā¯āŽŽā¯. āŽ‡āŽ¨ā¯āŽ¤āŽ•ā¯ āŽ•ā¯‹āŽĒā¯āŽĒā¯āŽąā¯ˆ, āŽ¤ā¯āŽŖā¯ˆ āŽ•ā¯‹āŽĒā¯āŽĒā¯āŽąā¯ˆāŽ•āŽŗā¯ āŽ‰āŽŸā¯āŽĒāŽŸ āŽĒāŽŸāŽ™ā¯āŽ•āŽŗā¯ āŽŽāŽąā¯āŽąā¯āŽŽā¯ āŽĩā¯€āŽŸāŽŋāŽ¯ā¯‹āŽ•ā¯āŽ•āŽŗā¯āŽ•ā¯āŽ•āŽžāŽ• āŽ¸ā¯āŽ•ā¯‡āŽŠā¯ āŽšā¯†āŽ¯ā¯āŽ¯āŽĒā¯āŽĒāŽŸā¯āŽŽā¯.", + "library_remove_exclusion_pattern_prompt": "āŽ‡āŽ¨ā¯āŽ¤ āŽĩāŽŋāŽ˛āŽ•ā¯āŽ•ā¯ āŽŽā¯āŽąā¯ˆāŽ¯ā¯ˆ āŽ¨ā¯€āŽ•ā¯āŽ• āŽĩāŽŋāŽ°ā¯āŽŽā¯āŽĒā¯āŽ•āŽŋāŽąā¯€āŽ°ā¯āŽ•āŽŗāŽž?", + "library_remove_folder_prompt": "āŽ‡āŽ¨ā¯āŽ¤ āŽ‡āŽąāŽ•ā¯āŽ•ā¯āŽŽāŽ¤āŽŋ āŽ•ā¯‹āŽĒā¯āŽĒā¯āŽąā¯ˆāŽ¯ā¯ˆ āŽ¨ā¯€āŽ•ā¯āŽ• āŽĩāŽŋāŽ°ā¯āŽŽā¯āŽĒā¯āŽ•āŽŋāŽąā¯€āŽ°ā¯āŽ•āŽŗāŽž?", "library_scanning": "āŽ…āŽĩā¯āŽĩāŽĒā¯āŽĒā¯‹āŽ¤ā¯ āŽ¸ā¯āŽ•ā¯‡āŽŠāŽŋāŽ™ā¯", "library_scanning_description": "āŽ¨āŽŋāŽ¯āŽŽāŽŋāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸ āŽĒā¯āŽ•ā¯ˆāŽĒā¯āŽĒāŽŸ āŽ¨ā¯‚āŽ˛āŽ• āŽ¸ā¯āŽ•ā¯‡āŽŠāŽŋāŽ™ā¯āŽ•ā¯ˆ āŽ…āŽŽā¯ˆāŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", "library_scanning_enable_description": "āŽ¨āŽŋāŽ¯āŽŽāŽŋāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸ āŽĒā¯āŽ•ā¯ˆāŽĒā¯āŽĒāŽŸ āŽ¨ā¯‚āŽ˛āŽ• āŽ¸ā¯āŽ•ā¯‡āŽŠāŽŋāŽ™ā¯āŽ•ā¯ˆ āŽ‡āŽ¯āŽ•ā¯āŽ•ā¯", "library_settings": "āŽĩā¯†āŽŗāŽŋāŽĒā¯āŽĒā¯āŽą āŽĒā¯āŽ•ā¯ˆāŽĒā¯āŽĒāŽŸ āŽ¨ā¯‚āŽ˛āŽ•āŽŽā¯", "library_settings_description": "āŽĩā¯†āŽŗāŽŋāŽĒā¯āŽĒā¯āŽą āŽĒā¯āŽ•ā¯ˆāŽĒā¯āŽĒāŽŸ āŽ¨ā¯‚āŽ˛āŽ• āŽ…āŽŽā¯ˆāŽĒā¯āŽĒā¯āŽ•āŽŗā¯ˆ āŽŽā¯‡āŽ˛āŽžāŽŖā¯āŽŽā¯ˆ āŽšā¯†āŽ¯ā¯āŽ¯āŽĩā¯āŽŽā¯", "library_tasks_description": "āŽĒā¯āŽ¤āŽŋāŽ¯ āŽŽāŽąā¯āŽąā¯āŽŽā¯/āŽ…āŽ˛ā¯āŽ˛āŽ¤ā¯ āŽŽāŽžāŽąā¯āŽąāŽĒā¯āŽĒāŽŸā¯āŽŸ āŽšā¯ŠāŽ¤ā¯āŽ¤ā¯āŽ•ā¯āŽ•āŽŗā¯āŽ•ā¯āŽ•ā¯ āŽĩā¯†āŽŗāŽŋāŽĒā¯āŽĒā¯āŽą āŽ¨ā¯‚āŽ˛āŽ•āŽ™ā¯āŽ•āŽŗā¯ˆ āŽĩāŽ°ā¯āŽŸāŽĩā¯āŽŽā¯", + "library_updated": "āŽĒā¯āŽ¤ā¯āŽĒā¯āŽĒāŽŋāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸ āŽ¨ā¯‚āŽ˛āŽ•āŽŽā¯", "library_watching_enable_description": "āŽ•ā¯‹āŽĒā¯āŽĒ❁ āŽŽāŽžāŽąā¯āŽąāŽ™ā¯āŽ•āŽŗā¯āŽ•ā¯āŽ•ā¯ āŽĩā¯†āŽŗāŽŋāŽĒā¯āŽĒā¯āŽą āŽ¨ā¯‚āŽ˛āŽ•āŽ™ā¯āŽ•āŽŗā¯ˆāŽĒā¯ āŽĒāŽžāŽ°ā¯āŽ™ā¯āŽ•āŽŗā¯", "library_watching_settings": "āŽ¨ā¯‚āŽ˛āŽ•āŽĒā¯ āŽĒāŽžāŽ°ā¯āŽĒā¯āŽĒāŽ¤ā¯ [āŽšā¯‹āŽ¤āŽŠā¯ˆ]", "library_watching_settings_description": "āŽŽāŽžāŽąā¯āŽąāŽĒā¯āŽĒāŽŸā¯āŽŸ āŽĒā¯āŽ•ā¯ˆāŽĒā¯āŽĒāŽŸāŽ™ā¯āŽ•āŽŗā¯ˆāŽ¤ā¯ āŽ¤āŽžāŽŠāŽžāŽ•āŽĩ❇ āŽĒāŽžāŽ°ā¯āŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", @@ -171,7 +179,12 @@ "machine_learning_smart_search_enabled": "āŽ¸ā¯āŽŽāŽžāŽ°ā¯āŽŸā¯ āŽ¤ā¯‡āŽŸāŽ˛ā¯ˆ āŽ‡āŽ¯āŽ•ā¯āŽ•ā¯", "machine_learning_smart_search_enabled_description": "āŽŽā¯āŽŸāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸāŽŋāŽ°ā¯āŽ¨ā¯āŽ¤āŽžāŽ˛ā¯, āŽ¸ā¯āŽŽāŽžāŽ°ā¯āŽŸā¯ āŽ¤ā¯‡āŽŸāŽ˛ā¯āŽ•ā¯āŽ•āŽžāŽ• āŽĒāŽŸāŽ™ā¯āŽ•āŽŗā¯ āŽ•ā¯āŽąāŽŋāŽ¯āŽžāŽ•ā¯āŽ•āŽŽā¯ āŽšā¯†āŽ¯ā¯āŽ¯āŽĒā¯āŽĒāŽŸāŽžāŽ¤ā¯.", "machine_learning_url_description": "āŽ‡āŽ¯āŽ¨ā¯āŽ¤āŽŋāŽ° āŽ•āŽąā¯āŽąāŽ˛ā¯ āŽšā¯‡āŽĩā¯ˆāŽ¯āŽ•āŽ¤ā¯āŽ¤āŽŋāŽŠā¯ āŽŽā¯āŽ•āŽĩāŽ°āŽŋ. āŽ’āŽŠā¯āŽąā¯āŽ•ā¯āŽ•ā¯ āŽŽā¯‡āŽąā¯āŽĒāŽŸā¯āŽŸ āŽŽā¯āŽ•āŽĩāŽ°āŽŋ āŽĩāŽ´āŽ™ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸāŽžāŽ˛ā¯, āŽ’āŽĩā¯āŽĩā¯ŠāŽ°ā¯ āŽšā¯‡āŽĩā¯ˆāŽ¯āŽ•āŽŽā¯āŽŽā¯ āŽ’āŽĩā¯āŽĩā¯ŠāŽŠā¯āŽąāŽžāŽ• āŽĩā¯†āŽąā¯āŽąāŽŋāŽ•āŽ°āŽŽāŽžāŽ• āŽĒāŽ¤āŽŋāŽ˛āŽŗāŽŋāŽ•ā¯āŽ•ā¯āŽŽā¯ āŽĩāŽ°ā¯ˆ, āŽŽā¯āŽ¤āŽ˛āŽŋāŽ˛ā¯ āŽ‡āŽ°ā¯āŽ¨ā¯āŽ¤ā¯ āŽ•āŽŸā¯ˆāŽšāŽŋ āŽĩāŽ°ā¯ˆ āŽŽā¯āŽ¯āŽąā¯āŽšāŽŋāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŽā¯. āŽĒāŽ¤āŽŋāŽ˛āŽŗāŽŋāŽ•ā¯āŽ•āŽžāŽ¤ āŽšā¯‡āŽĩā¯ˆāŽ¯āŽ•āŽ™ā¯āŽ•āŽŗā¯ āŽŽā¯€āŽŖā¯āŽŸā¯āŽŽā¯ āŽ†āŽŠā¯āŽ˛ā¯ˆāŽŠāŽŋāŽ˛ā¯ āŽĩāŽ°ā¯āŽŽā¯ āŽĩāŽ°ā¯ˆ āŽ¤āŽąā¯āŽ•āŽžāŽ˛āŽŋāŽ•āŽŽāŽžāŽ•āŽĒā¯ āŽĒā¯āŽąāŽ•ā¯āŽ•āŽŖāŽŋāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŽā¯.", + "maintenance_settings": "āŽĒāŽ°āŽžāŽŽāŽ°āŽŋāŽĒā¯āŽĒ❁", + "maintenance_settings_description": "āŽ‡āŽŽā¯āŽŽāŽŋāŽšā¯āŽšā¯ˆ āŽĒāŽ°āŽžāŽŽāŽ°āŽŋāŽĒā¯āŽĒ❁ āŽŽā¯āŽąā¯ˆāŽ¯āŽŋāŽ˛ā¯ āŽĩā¯ˆāŽ•ā¯āŽ•āŽĩā¯āŽŽā¯.", + "maintenance_start": "āŽĒāŽ°āŽžāŽŽāŽ°āŽŋāŽĒā¯āŽĒ❁ āŽĒāŽ¯āŽŠā¯āŽŽā¯āŽąā¯ˆāŽ¯ā¯ˆāŽ¤ā¯ āŽ¤ā¯ŠāŽŸāŽ™ā¯āŽ•ā¯", + "maintenance_start_error": "āŽĒāŽ°āŽžāŽŽāŽ°āŽŋāŽĒā¯āŽĒ❁ āŽĒāŽ¯āŽŠā¯āŽŽā¯āŽąā¯ˆāŽ¯ā¯ˆāŽ¤ā¯ āŽ¤ā¯ŠāŽŸāŽ™ā¯āŽ• āŽŽā¯āŽŸāŽŋāŽ¯āŽĩāŽŋāŽ˛ā¯āŽ˛ā¯ˆ.", "manage_concurrency": "āŽ’āŽ¤ā¯āŽ¤āŽŋāŽšā¯ˆāŽĩ❈ āŽ¨āŽŋāŽ°ā¯āŽĩāŽ•āŽŋāŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", + "manage_concurrency_description": "āŽĩā¯‡āŽ˛ā¯ˆ āŽ’āŽ°ā¯āŽ™ā¯āŽ•āŽŋāŽŖā¯ˆāŽĩ❈ āŽ¨āŽŋāŽ°ā¯āŽĩāŽ•āŽŋāŽ•ā¯āŽ• āŽĩā¯‡āŽ˛ā¯ˆāŽ•āŽŗā¯ āŽĒāŽ•ā¯āŽ•āŽ¤ā¯āŽ¤āŽŋāŽąā¯āŽ•ā¯āŽšā¯ āŽšā¯†āŽ˛ā¯āŽ˛āŽĩā¯āŽŽā¯", "manage_log_settings": "āŽĒāŽ¤āŽŋāŽĩ❁ āŽ…āŽŽā¯ˆāŽĒā¯āŽĒā¯āŽ•āŽŗā¯ˆ āŽ¨āŽŋāŽ°ā¯āŽĩāŽ•āŽŋāŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", "map_dark_style": "āŽ‡āŽ°ā¯āŽŖā¯āŽŸ āŽ¤ā¯€āŽŽā¯", "map_enable_description": "āŽŽā¯‡āŽĒā¯āŽĒāŽŋāŽ™ā¯ āŽ…āŽŽā¯āŽšāŽ™ā¯āŽ•āŽŗā¯ˆ āŽ‡āŽ¯āŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", @@ -277,8 +290,10 @@ "server_public_users_description": "āŽĒāŽ•āŽŋāŽ°āŽĒā¯āŽĒāŽŸā¯āŽŸ āŽ†āŽ˛ā¯āŽĒāŽ™ā¯āŽ•āŽŗāŽŋāŽ˛ā¯ āŽĒāŽ¯āŽŠāŽ°ā¯ˆāŽšā¯ āŽšā¯‡āŽ°ā¯āŽ•ā¯āŽ•ā¯āŽŽā¯āŽĒā¯‹āŽ¤ā¯ āŽ…āŽŠā¯ˆāŽ¤ā¯āŽ¤ā¯ āŽĒāŽ¯āŽŠāŽ°ā¯āŽ•āŽŗā¯āŽŽā¯ (āŽĒā¯†āŽ¯āŽ°ā¯ āŽŽāŽąā¯āŽąā¯āŽŽā¯ āŽŽāŽŋāŽŠā¯āŽŠāŽžā¯āŽšāŽ˛ā¯) āŽĒāŽŸā¯āŽŸāŽŋāŽ¯āŽ˛āŽŋāŽŸāŽĒā¯āŽĒāŽŸā¯āŽŸā¯āŽŗā¯āŽŗāŽŠ. āŽŽā¯āŽŸāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸāŽžāŽ˛ā¯, āŽĒāŽ¯āŽŠāŽ°ā¯ āŽĒāŽŸā¯āŽŸāŽŋāŽ¯āŽ˛ā¯ āŽ¨āŽŋāŽ°ā¯āŽĩāŽžāŽ• āŽĒāŽ¯āŽŠāŽ°ā¯āŽ•āŽŗā¯āŽ•ā¯āŽ•ā¯ āŽŽāŽŸā¯āŽŸā¯āŽŽā¯‡ āŽ•āŽŋāŽŸā¯ˆāŽ•ā¯āŽ•ā¯āŽŽā¯.", "server_settings": "āŽšā¯‡āŽĩā¯ˆāŽ¯āŽ• āŽ…āŽŽā¯ˆāŽĒā¯āŽĒā¯āŽ•āŽŗā¯", "server_settings_description": "āŽšā¯‡āŽĩā¯ˆāŽ¯āŽ• āŽ…āŽŽā¯ˆāŽĒā¯āŽĒā¯āŽ•āŽŗā¯ˆ āŽ¨āŽŋāŽ°ā¯āŽĩāŽ•āŽŋāŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", + "server_stats_page_description": "āŽ¨āŽŋāŽ°ā¯āŽĩāŽžāŽ• āŽšā¯‡āŽĩā¯ˆāŽ¯āŽ• āŽĒā¯āŽŗā¯āŽŗāŽŋāŽĩāŽŋāŽĩāŽ°āŽĒā¯ āŽĒāŽ•ā¯āŽ•āŽŽā¯", "server_welcome_message": "āŽĩāŽ°āŽĩā¯‡āŽąā¯āŽĒ❁ āŽšā¯†āŽ¯ā¯āŽ¤āŽŋ", "server_welcome_message_description": "āŽ‰āŽŗā¯āŽ¨ā¯āŽ´ā¯ˆāŽĩ❁ (āŽ˛ā¯‹āŽ•āŽŋāŽŠā¯) āŽĒāŽ•ā¯āŽ•āŽ¤ā¯āŽ¤āŽŋāŽ˛ā¯ āŽ•āŽžāŽŸā¯āŽŸāŽĒā¯āŽĒāŽŸā¯āŽŽā¯ āŽ’āŽ°ā¯ āŽšā¯†āŽ¯ā¯āŽ¤āŽŋ.", + "settings_page_description": "āŽ¨āŽŋāŽ°ā¯āŽĩāŽžāŽ• āŽ…āŽŽā¯ˆāŽĒā¯āŽĒā¯āŽ•āŽŗā¯ āŽĒāŽ•ā¯āŽ•āŽŽā¯", "sidecar_job": "āŽšā¯ˆāŽŸā¯āŽ•āŽžāŽ°ā¯ āŽŽā¯†āŽŸā¯āŽŸāŽžāŽŸā¯‡āŽŸā¯āŽŸāŽž", "sidecar_job_description": "āŽƒāŽĒā¯ˆāŽ˛ā¯āŽ¸āŽŋāŽ˛āŽŋāŽ°ā¯āŽ¨ā¯āŽ¤ā¯ āŽšā¯ˆāŽŸā¯āŽ•āŽžāŽ°ā¯ āŽŽā¯†āŽŸā¯āŽŸāŽžāŽŸā¯‡āŽŸā¯āŽŸāŽžāŽĩā¯ˆāŽ•ā¯ āŽ•āŽŖā¯āŽŸāŽąāŽŋāŽ¯āŽĩā¯āŽŽā¯ āŽ…āŽ˛ā¯āŽ˛āŽ¤ā¯ āŽ’āŽ¤ā¯āŽ¤āŽŋāŽšā¯ˆāŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", "slideshow_duration_description": "āŽ’āŽĩā¯āŽĩā¯ŠāŽ°ā¯ āŽĒāŽŸāŽ¤ā¯āŽ¤ā¯ˆāŽ¯ā¯āŽŽā¯ āŽ•āŽžāŽŸā¯āŽŸ āŽĩā¯‡āŽŖā¯āŽŸāŽŋāŽ¯ āŽĩāŽŋāŽŠāŽžāŽŸāŽŋāŽ•āŽŗāŽŋāŽŠā¯ āŽŽāŽŖā¯āŽŖāŽŋāŽ•ā¯āŽ•ā¯ˆ", @@ -398,8 +413,9 @@ "user_settings": "āŽĒāŽ¯āŽŠāŽ°ā¯ āŽ…āŽŽā¯ˆāŽĒā¯āŽĒā¯āŽ•āŽŗā¯", "user_settings_description": "āŽĒāŽ¯āŽŠāŽ°ā¯ āŽ…āŽŽā¯ˆāŽĒā¯āŽĒā¯āŽ•āŽŗā¯ˆ āŽ¨āŽŋāŽ°ā¯āŽĩāŽ•āŽŋāŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", "user_successfully_removed": "āŽĒāŽ¯āŽŠāŽ°ā¯ {email} āŽĩā¯†āŽąā¯āŽąāŽŋāŽ•āŽ°āŽŽāŽžāŽ• āŽ…āŽ•āŽąā¯āŽąāŽĒā¯āŽĒāŽŸā¯āŽŸāŽ¤ā¯.", - "version_check_enabled_description": "āŽĒāŽ¤āŽŋāŽĒā¯āŽĒ❁ āŽ•āŽžāŽšā¯‹āŽ˛ā¯ˆāŽ¯ā¯ˆ āŽ‡āŽ¯āŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", - "version_check_implications": "āŽĒāŽ¤āŽŋāŽĒā¯āŽĒ❁ āŽšā¯‹āŽ¤āŽŠā¯ˆ āŽ¨āŽąā¯āŽĒā¯ŠāŽ°ā¯āŽ¤ā¯āŽ¤āŽŽā¯ Kithub.com āŽ‰āŽŸāŽŠā¯ āŽ…āŽĩā¯āŽĩāŽĒā¯āŽĒā¯‹āŽ¤ā¯ āŽ¤āŽ•āŽĩāŽ˛ā¯āŽ¤ā¯ŠāŽŸāŽ°ā¯āŽĒā¯āŽ•āŽŗā¯ˆ āŽ¨āŽŽā¯āŽĒāŽŋāŽ¯ā¯āŽŗā¯āŽŗāŽ¤ā¯", + "users_page_description": "āŽ¨āŽŋāŽ°ā¯āŽĩāŽžāŽ• āŽĒāŽ¯āŽŠāŽ°ā¯āŽ•āŽŗā¯ āŽĒāŽ•ā¯āŽ•āŽŽā¯", + "version_check_enabled_description": "āŽĒāŽ¤āŽŋāŽĒā¯āŽĒ❁ āŽšāŽ°āŽŋāŽĒāŽžāŽ°ā¯āŽĒā¯āŽĒ❁ āŽ‡āŽ¯āŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", + "version_check_implications": "āŽĒāŽ¤āŽŋāŽĒā¯āŽĒ❁ āŽšāŽ°āŽŋāŽĒāŽžāŽ°ā¯āŽĒā¯āŽĒ❁ āŽ…āŽŽā¯āŽšāŽŽā¯ github .com āŽ‰āŽŸāŽŠāŽžāŽŠ āŽ…āŽĩā¯āŽĩāŽĒā¯āŽĒā¯‹āŽ¤ā¯ āŽ¤ā¯ŠāŽŸāŽ°ā¯āŽĒā¯āŽ•ā¯ŠāŽŗā¯āŽĩāŽ¤ā¯ˆ āŽ¨āŽŽā¯āŽĒāŽŋāŽ¯ā¯āŽŗā¯āŽŗāŽ¤ā¯", "version_check_settings": "āŽĒāŽ¤āŽŋāŽĒā¯āŽĒ❁ āŽšā¯‹āŽ¤āŽŠā¯ˆ", "version_check_settings_description": "āŽĒā¯āŽ¤āŽŋāŽ¯ āŽĒāŽ¤āŽŋāŽĒā¯āŽĒ❁ āŽ…āŽąāŽŋāŽĩāŽŋāŽĒā¯āŽĒ❈ āŽ‡āŽ¯āŽ•ā¯āŽ•āŽĩā¯āŽŽā¯/āŽŽā¯āŽŸāŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", "video_conversion_job": "āŽŸāŽŋāŽ°āŽžāŽŠā¯āŽšā¯āŽ•ā¯‹āŽŸā¯ āŽĩā¯€āŽŸāŽŋāŽ¯ā¯‹āŽ•ā¯āŽ•āŽŗā¯", @@ -428,6 +444,7 @@ "age_months": "āŽ…āŽ•āŽĩ❈ {months, plural, one {# āŽ¤āŽŋāŽ™ā¯āŽ•āŽŗā¯} other {# āŽ¤āŽŋāŽ™ā¯āŽ•āŽŗā¯āŽ•āŽŗā¯}}", "age_year_months": "āŽ…āŽ•āŽĩ❈ 1 āŽ†āŽŖā¯āŽŸā¯, {months, plural, one {# āŽ¤āŽŋāŽ™ā¯āŽ•āŽŗā¯} other {# āŽ¤āŽŋāŽ™ā¯āŽ•āŽŗā¯āŽ•āŽŗā¯}}", "age_years": "{years, plural, other {āŽ…āŽ•āŽĩ❈ #}}", + "album": "āŽ†āŽ˛ā¯āŽĒāŽŽā¯", "album_added": "āŽ†āŽ˛ā¯āŽĒāŽŽā¯ āŽšā¯‡āŽ°ā¯āŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸāŽ¤ā¯", "album_added_notification_setting_description": "āŽĒāŽ•āŽŋāŽ°āŽĒā¯āŽĒāŽŸā¯āŽŸ āŽ†āŽ˛ā¯āŽĒāŽ¤ā¯āŽ¤āŽŋāŽ˛ā¯ āŽ¨ā¯€āŽ™ā¯āŽ•āŽŗā¯ āŽšā¯‡āŽ°ā¯āŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŽā¯āŽĒā¯‹āŽ¤ā¯ āŽŽāŽŋāŽŠā¯āŽŠāŽžā¯āŽšāŽ˛ā¯ āŽ…āŽąāŽŋāŽĩāŽŋāŽĒā¯āŽĒ❈āŽĒā¯ āŽĒā¯†āŽąā¯āŽ™ā¯āŽ•āŽŗā¯", "album_cover_updated": "āŽ†āŽ˛ā¯āŽĒāŽŽā¯ āŽ•āŽĩāŽ°ā¯ āŽĒā¯āŽ¤ā¯āŽĒā¯āŽĒāŽŋāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸāŽ¤ā¯", @@ -717,6 +734,7 @@ "collapse_all": "āŽ…āŽŠā¯ˆāŽ¤ā¯āŽ¤ā¯ˆāŽ¯ā¯āŽŽā¯ āŽšāŽ°āŽ•ā¯āŽ•ā¯", "color": "āŽ¨āŽŋāŽąāŽŽā¯", "color_theme": "āŽĩāŽŖā¯āŽŖ āŽ•āŽ°ā¯āŽĒā¯āŽĒā¯ŠāŽ°ā¯āŽŗā¯", + "command": "āŽ•āŽŸā¯āŽŸāŽŗā¯ˆ", "comment_deleted": "āŽ•āŽ°ā¯āŽ¤ā¯āŽ¤ā¯ āŽ¨ā¯€āŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸāŽ¤ā¯", "comment_options": "āŽ•āŽ°ā¯āŽ¤ā¯āŽ¤ā¯ āŽĩāŽŋāŽ°ā¯āŽĒā¯āŽĒāŽ™ā¯āŽ•āŽŗā¯", "comments_and_likes": "āŽ•āŽ°ā¯āŽ¤ā¯āŽ¤ā¯āŽ•āŽŗā¯ āŽŽāŽąā¯āŽąā¯āŽŽā¯ āŽĩāŽŋāŽ°ā¯āŽĒā¯āŽĒāŽ™ā¯āŽ•āŽŗā¯", @@ -965,6 +983,7 @@ "failed_to_unstack_assets": "āŽ…āŽŠā¯-āŽšā¯āŽŸāŽžāŽ•ā¯ āŽšā¯ŠāŽ¤ā¯āŽ¤ā¯āŽ•ā¯āŽ•āŽŗāŽŋāŽ˛ā¯ āŽ¤ā¯‹āŽ˛ā¯āŽĩāŽŋāŽ¯ā¯āŽąā¯āŽąāŽ¤ā¯", "failed_to_update_notification_status": "āŽ…āŽąāŽŋāŽĩāŽŋāŽĒā¯āŽĒ❁ āŽ¨āŽŋāŽ˛ā¯ˆāŽ¯ā¯ˆāŽĒā¯ āŽĒā¯āŽ¤ā¯āŽĒā¯āŽĒāŽŋāŽ•ā¯āŽ•āŽ¤ā¯ āŽ¤āŽĩāŽąāŽŋāŽĩāŽŋāŽŸā¯āŽŸāŽ¤ā¯", "incorrect_email_or_password": "āŽ¤āŽĩāŽąāŽžāŽŠ āŽŽāŽŋāŽŠā¯āŽŠāŽžā¯āŽšāŽ˛ā¯ āŽ…āŽ˛ā¯āŽ˛āŽ¤ā¯ āŽ•āŽŸāŽĩā¯āŽšā¯āŽšā¯ŠāŽ˛ā¯", + "library_folder_already_exists": "āŽ‡āŽ¨ā¯āŽ¤ āŽ‡āŽąāŽ•ā¯āŽ•ā¯āŽŽāŽ¤āŽŋ āŽĒāŽžāŽ¤ā¯ˆ āŽāŽąā¯āŽ•āŽŠāŽĩ❇ āŽĒāŽ¯āŽŠā¯āŽĒāŽžāŽŸā¯āŽŸāŽŋāŽ˛ā¯ āŽ‰āŽŗā¯āŽŗāŽ¤ā¯.", "paths_validation_failed": "āŽ¤ā¯‹āŽ˛ā¯āŽĩāŽŋāŽ¯ā¯āŽąā¯āŽą āŽšāŽ°āŽŋāŽĒāŽžāŽ°ā¯āŽĒā¯āŽĒ❁ {paths, plural, one {# āŽĒāŽžāŽ¤ā¯ˆ} other {# āŽĒāŽžāŽ¤ā¯ˆāŽ•āŽŗā¯}}", "profile_picture_transparent_pixels": "āŽšā¯āŽ¯āŽĩāŽŋāŽĩāŽ°āŽĒā¯ āŽĒāŽŸāŽ™ā¯āŽ•āŽŗā¯āŽ•ā¯āŽ•ā¯ āŽĩā¯†āŽŗāŽŋāŽĒā¯āŽĒāŽŸā¯ˆāŽ¯āŽžāŽŠ āŽĒāŽŸāŽĒā¯āŽĒā¯āŽŗā¯āŽŗāŽŋāŽ•āŽŗā¯ āŽ‡āŽ°ā¯āŽ•ā¯āŽ• āŽŽā¯āŽŸāŽŋāŽ¯āŽžāŽ¤ā¯. āŽ¤āŽ¯āŽĩā¯āŽšā¯†āŽ¯ā¯āŽ¤ā¯ āŽĒā¯†āŽ°āŽŋāŽ¤āŽžāŽ•ā¯āŽ•āŽĩā¯āŽŽā¯/āŽ…āŽ˛ā¯āŽ˛āŽ¤ā¯ āŽĒāŽŸāŽ¤ā¯āŽ¤ā¯ˆ āŽ¨āŽ•āŽ°ā¯āŽ¤ā¯āŽ¤āŽĩā¯āŽŽā¯.", "quota_higher_than_disk_size": "āŽĩāŽŸā¯āŽŸā¯ āŽ…āŽŗāŽĩ❈ āŽĩāŽŋāŽŸ āŽ…āŽ¤āŽŋāŽ•āŽŽāŽžāŽ• āŽ’āŽ¤ā¯āŽ•ā¯āŽ•ā¯€āŽŸā¯āŽŸā¯ˆ āŽ…āŽŽā¯ˆāŽ¤ā¯āŽ¤ā¯āŽŗā¯āŽŗā¯€āŽ°ā¯āŽ•āŽŗā¯", @@ -1049,7 +1068,8 @@ "unable_to_update_user": "āŽĒāŽ¯āŽŠāŽ°ā¯ˆāŽĒā¯ āŽĒā¯āŽ¤ā¯āŽĒā¯āŽĒāŽŋāŽ•ā¯āŽ• āŽŽā¯āŽŸāŽŋāŽ¯āŽĩāŽŋāŽ˛ā¯āŽ˛ā¯ˆ", "unable_to_upload_file": "āŽ•ā¯‹āŽĒā¯āŽĒ❈āŽĒā¯ āŽĒāŽ¤āŽŋāŽĩā¯‡āŽąā¯āŽą āŽŽā¯āŽŸāŽŋāŽ¯āŽĩāŽŋāŽ˛ā¯āŽ˛ā¯ˆ" }, - "exif": "Exif", + "exclusion_pattern": "āŽĩāŽŋāŽ˛āŽ•ā¯āŽ•ā¯ āŽŽā¯āŽąā¯ˆ", + "exif": "āŽŽāŽ•ā¯āŽ¸āŽŋāŽƒāŽĒā¯", "exif_bottom_sheet_description": "āŽĩāŽŋāŽŗāŽ•ā¯āŽ•āŽ¤ā¯āŽ¤ā¯ˆāŽšā¯ āŽšā¯‡āŽ°ā¯āŽ•ā¯āŽ•āŽĩā¯āŽŽā¯ ...", "exif_bottom_sheet_description_error": "āŽĩāŽŋāŽŗāŽ•ā¯āŽ•āŽ¤ā¯āŽ¤ā¯ˆ āŽĒā¯āŽ¤ā¯āŽĒā¯āŽĒāŽŋāŽĒā¯āŽĒāŽ¤āŽŋāŽ˛ā¯ āŽĒāŽŋāŽ´ā¯ˆ", "exif_bottom_sheet_details": "āŽĩāŽŋāŽĩāŽ°āŽ™ā¯āŽ•āŽŗā¯", @@ -1108,6 +1128,7 @@ "folders_feature_description": "āŽ•ā¯‹āŽĒā¯āŽĒ❁ āŽŽā¯āŽąā¯ˆāŽŽā¯ˆāŽ¯āŽŋāŽ˛ā¯ āŽ‰āŽŗā¯āŽŗ āŽĒā¯āŽ•ā¯ˆāŽĒā¯āŽĒāŽŸāŽ™ā¯āŽ•āŽŗā¯ āŽŽāŽąā¯āŽąā¯āŽŽā¯ āŽĩā¯€āŽŸāŽŋāŽ¯ā¯‹āŽ•ā¯āŽ•āŽŗā¯āŽ•ā¯āŽ•āŽžāŽŠ āŽ•ā¯‹āŽĒā¯āŽĒā¯āŽąā¯ˆ āŽ•āŽžāŽŸā¯āŽšāŽŋāŽ¯ā¯ˆ āŽ‰āŽ˛āŽžāŽĩā¯āŽ¤āŽ˛ā¯", "forgot_pin_code_question": "āŽ‰āŽ™ā¯āŽ•āŽŗā¯ āŽŽā¯āŽŗā¯ āŽŽāŽąāŽ¨ā¯āŽ¤ā¯āŽĩāŽŋāŽŸā¯āŽŸā¯€āŽ°ā¯āŽ•āŽŗāŽž?", "forward": "āŽŽā¯āŽŠā¯āŽŠā¯‹āŽ•ā¯āŽ•āŽŋ", + "full_path": "āŽŽā¯āŽ´ā¯ āŽĒāŽžāŽ¤ā¯ˆ: {path}", "gcast_enabled": "āŽ•ā¯‚āŽ•āŽŋāŽŗā¯ āŽ¨āŽŸāŽŋāŽ•āŽ°ā¯āŽ•āŽŗā¯", "gcast_enabled_description": "āŽ‡āŽ¨ā¯āŽ¤ āŽ¨āŽąā¯āŽĒā¯ŠāŽ°ā¯āŽ¤ā¯āŽ¤āŽŽā¯ āŽĩā¯‡āŽ˛ā¯ˆ āŽšā¯†āŽ¯ā¯āŽĩāŽ¤āŽąā¯āŽ•āŽžāŽ• Google āŽ‡āŽ˛āŽŋāŽ°ā¯āŽ¨ā¯āŽ¤ā¯ āŽĩā¯†āŽŗāŽŋāŽĒā¯āŽĒā¯āŽą āŽĩāŽŗāŽ™ā¯āŽ•āŽŗā¯ˆ āŽāŽąā¯āŽąā¯āŽ•āŽŋāŽąāŽ¤ā¯.", "general": "āŽĒā¯†āŽžāŽ¤ā¯", @@ -1144,6 +1165,7 @@ "hide_named_person": "āŽ¨āŽĒāŽ°ā¯ˆ āŽŽāŽąā¯ˆāŽ•ā¯āŽ• {name}", "hide_password": "āŽ•āŽŸāŽĩā¯āŽšā¯āŽšā¯ŠāŽ˛ā¯āŽ˛ā¯ˆ āŽŽāŽąā¯ˆāŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", "hide_person": "āŽ¨āŽĒāŽ°ā¯ˆ āŽŽāŽąā¯ˆāŽ•ā¯āŽ•", + "hide_text_recognition": "āŽ‰āŽ°ā¯ˆ āŽ…āŽ™ā¯āŽ•ā¯€āŽ•āŽžāŽ°āŽ¤ā¯āŽ¤ā¯ˆ āŽŽāŽąā¯ˆ", "hide_unnamed_people": "āŽĒā¯†āŽ¯āŽ°āŽŋāŽŸāŽĒā¯āŽĒāŽŸāŽžāŽ¤āŽĩāŽ°ā¯āŽ•āŽŗā¯ˆ āŽŽāŽąā¯ˆāŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", "home_page_add_to_album_conflicts": "{album} āŽ†āŽ˛ā¯āŽĒāŽ¤ā¯āŽ¤āŽŋāŽ˛ā¯ {added} āŽšā¯ŠāŽ¤ā¯āŽ¤ā¯āŽ•ā¯āŽ•āŽŗā¯ āŽšā¯‡āŽ°ā¯āŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸāŽŠ. {failed} āŽšā¯ŠāŽ¤ā¯āŽ¤ā¯āŽ•ā¯āŽ•āŽŗā¯ āŽāŽąā¯āŽ•āŽŠāŽĩ❇ āŽ†āŽ˛ā¯āŽĒāŽ¤ā¯āŽ¤āŽŋāŽ˛ā¯ āŽ‰āŽŗā¯āŽŗāŽŠ.", "home_page_add_to_album_err_local": "āŽ†āŽ˛ā¯āŽĒāŽ™ā¯āŽ•āŽŗāŽŋāŽ˛ā¯ āŽ‰āŽŗā¯āŽŗāŽ• āŽšā¯ŠāŽ¤ā¯āŽ¤ā¯āŽ•ā¯āŽ•āŽŗā¯ˆ āŽ‡āŽŠā¯āŽŠā¯āŽŽā¯ āŽšā¯‡āŽ°ā¯āŽ•ā¯āŽ• āŽŽā¯āŽŸāŽŋāŽ¯āŽžāŽ¤ā¯, āŽ¤āŽĩāŽŋāŽ°ā¯āŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", @@ -1227,7 +1249,7 @@ "language_setting_description": "āŽ‰āŽ™ā¯āŽ•āŽŗā¯āŽ•ā¯āŽ•ā¯ āŽĩāŽŋāŽ°ā¯āŽĒā¯āŽĒāŽŽāŽžāŽŠ āŽŽā¯ŠāŽ´āŽŋāŽ¯ā¯ˆāŽ¤ā¯ āŽ¤ā¯‡āŽ°ā¯āŽ¨ā¯āŽ¤ā¯†āŽŸā¯āŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", "large_files": "āŽĒā¯†āŽ°āŽŋāŽ¯ āŽ•ā¯‹āŽĒā¯āŽĒā¯āŽ•āŽŗā¯", "last": "āŽ•āŽŸā¯ˆāŽšāŽŋ", - "last_months": "{count, plural, one {āŽ•āŽŸāŽ¨ā¯āŽ¤ āŽŽāŽžāŽ¤āŽŽā¯} other {āŽ•āŽŸāŽ¨ā¯āŽ¤ # āŽŽāŽžāŽ¤āŽ™ā¯āŽ•āŽŗā¯}}", + "last_months": "{count, plural, one {āŽ•āŽŸāŽ¨ā¯āŽ¤ āŽŽāŽžāŽ¤āŽŽā¯} other {āŽ•āŽŸāŽ¨ā¯āŽ¤ # āŽŽāŽžāŽ¤āŽ™ā¯āŽ•āŽŗā¯}}", "last_seen": "āŽ•āŽŸā¯ˆāŽšāŽŋāŽ¯āŽžāŽ• āŽĒāŽžāŽ°ā¯āŽ¤ā¯āŽ¤ā¯‡āŽŠā¯", "latest_version": "āŽ…āŽŖā¯āŽŽā¯ˆāŽ•ā¯ āŽ•āŽžāŽ˛ āŽĒāŽ¤āŽŋāŽĒā¯āŽĒ❁", "latitude": "āŽ…āŽ•āŽ˛āŽžāŽ™ā¯āŽ•ā¯", @@ -1237,6 +1259,8 @@ "let_others_respond": "āŽŽāŽąā¯āŽąāŽĩāŽ°ā¯āŽ•āŽŗā¯ āŽĒāŽ¤āŽŋāŽ˛āŽŗāŽŋāŽ•ā¯āŽ•āŽŸā¯āŽŸā¯āŽŽā¯", "level": "āŽ¨āŽŋāŽ˛ā¯ˆ", "library": "āŽ¨ā¯‚āŽ˛āŽ•āŽŽā¯", + "library_add_folder": "āŽ•ā¯‹āŽĒā¯āŽĒā¯āŽąā¯ˆāŽ¯ā¯ˆāŽšā¯ āŽšā¯‡āŽ°ā¯", + "library_edit_folder": "āŽ•ā¯‹āŽĒā¯āŽĒā¯āŽąā¯ˆāŽ¯ā¯ˆāŽ¤ā¯ āŽ¤āŽŋāŽ°ā¯āŽ¤ā¯āŽ¤ā¯", "library_options": "āŽ¨ā¯‚āŽ˛āŽ• āŽĩāŽŋāŽ°ā¯āŽĒā¯āŽĒāŽ™ā¯āŽ•āŽŗā¯", "library_page_device_albums": "āŽšāŽžāŽ¤āŽŠāŽ¤ā¯āŽ¤āŽŋāŽ˛ā¯ āŽ†āŽ˛ā¯āŽĒāŽ™ā¯āŽ•āŽŗā¯", "library_page_new_album": "āŽĒā¯āŽ¤āŽŋāŽ¯ āŽ†āŽ˛ā¯āŽĒāŽŽā¯", @@ -1308,6 +1332,11 @@ "loop_videos_description": "āŽĩāŽŋāŽ°āŽŋāŽĩāŽžāŽŠ āŽĒāŽžāŽ°ā¯āŽĩā¯ˆāŽ¯āŽžāŽŗāŽ°āŽŋāŽ˛ā¯ āŽ’āŽ°ā¯ āŽĩā¯€āŽŸāŽŋāŽ¯ā¯‹āŽĩ❈ āŽ¤āŽžāŽŠāŽžāŽ• āŽĩāŽŗā¯ˆāŽ¯āŽĒā¯āŽĒāŽŸā¯āŽ¤ā¯āŽ¤āŽĩā¯āŽŽā¯.", "main_branch_warning": "āŽ¨ā¯€āŽ™ā¯āŽ•āŽŗā¯ āŽ’āŽ°ā¯ āŽŽā¯‡āŽŽā¯āŽĒāŽžāŽŸā¯āŽŸā¯ āŽĒāŽ¤āŽŋāŽĒā¯āŽĒ❈āŽĒā¯ āŽĒāŽ¯āŽŠā¯āŽĒāŽŸā¯āŽ¤ā¯āŽ¤ā¯āŽ•āŽŋāŽąā¯€āŽ°ā¯āŽ•āŽŗā¯; āŽĩā¯†āŽŗāŽŋāŽ¯ā¯€āŽŸā¯āŽŸā¯ āŽĒāŽ¤āŽŋāŽĒā¯āŽĒ❈āŽĒā¯ āŽĒāŽ¯āŽŠā¯āŽĒāŽŸā¯āŽ¤ā¯āŽ¤ āŽ¨āŽžāŽ™ā¯āŽ•āŽŗā¯ āŽ•āŽŸā¯āŽŽā¯ˆāŽ¯āŽžāŽ• āŽĒāŽ°āŽŋāŽ¨ā¯āŽ¤ā¯āŽ°ā¯ˆāŽ•ā¯āŽ•āŽŋāŽąā¯‹āŽŽā¯!", "main_menu": "āŽĒāŽŸā¯āŽŸāŽŋāŽ¯āŽ˛ā¯ āŽĩāŽŋāŽŗā¯ˆāŽ¯āŽžāŽŸā¯āŽ™ā¯āŽ•āŽŗā¯", + "maintenance_description": "āŽ‡āŽŽā¯āŽŽāŽŋāŽšā¯ āŽĒāŽ°āŽžāŽŽāŽ°āŽŋāŽĒā¯āŽĒ❁ āŽĒāŽ¯āŽŠā¯āŽŽā¯āŽąā¯ˆāŽ¯āŽŋāŽ˛ā¯ āŽĩā¯ˆāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸā¯āŽŗā¯āŽŗāŽ¤ā¯.", + "maintenance_end": "āŽĒāŽ°āŽžāŽŽāŽ°āŽŋāŽĒā¯āŽĒ❁ āŽĒāŽ¯āŽŠā¯āŽŽā¯āŽąā¯ˆāŽ¯ā¯ˆ āŽŽā¯āŽŸāŽŋāŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", + "maintenance_end_error": "āŽĒāŽ°āŽžāŽŽāŽ°āŽŋāŽĒā¯āŽĒ❁ āŽŽā¯āŽąā¯ˆāŽ¯ā¯ˆ āŽŽā¯āŽŸāŽŋāŽ•ā¯āŽ• āŽŽā¯āŽŸāŽŋāŽ¯āŽĩāŽŋāŽ˛ā¯āŽ˛ā¯ˆ.", + "maintenance_logged_in_as": "āŽ¤āŽąā¯āŽĒā¯‹āŽ¤ā¯ {user} āŽ†āŽ• āŽ‰āŽŗā¯āŽ¨ā¯āŽ´ā¯ˆāŽ¨ā¯āŽ¤ā¯āŽŗā¯āŽŗā¯€āŽ°ā¯āŽ•āŽŗā¯", + "maintenance_title": "āŽ¤āŽąā¯āŽ•āŽžāŽ˛āŽŋāŽ•āŽŽāŽžāŽ• āŽ•āŽŋāŽŸā¯ˆāŽ•ā¯āŽ•āŽĩāŽŋāŽ˛ā¯āŽ˛ā¯ˆ", "make": "āŽ‰āŽ°ā¯āŽĩāŽžāŽ•ā¯āŽ•ā¯", "manage_geolocation": "āŽ‡āŽ°ā¯āŽĒā¯āŽĒāŽŋāŽŸāŽ¤ā¯āŽ¤ā¯ˆ āŽ¨āŽŋāŽ°ā¯āŽĩāŽ•āŽŋāŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", "manage_media_access_rationale": "āŽĒāŽŸāŽ™ā¯āŽ•āŽŗā¯ˆ āŽ•ā¯āŽĒā¯āŽĒā¯ˆāŽ•ā¯āŽ•ā¯ āŽ¨āŽ•āŽ°ā¯āŽ¤ā¯āŽ¤ā¯āŽĩāŽ¤ā¯ˆ āŽŽā¯āŽąā¯ˆāŽ¯āŽžāŽ•āŽ•ā¯ āŽ•ā¯ˆāŽ¯āŽžāŽŗā¯āŽĩāŽ¤āŽąā¯āŽ•ā¯āŽŽā¯ āŽ…āŽ¤āŽŋāŽ˛āŽŋāŽ°ā¯āŽ¨ā¯āŽ¤ā¯ āŽ…āŽĩāŽąā¯āŽąā¯ˆ āŽŽā¯€āŽŸā¯āŽŸā¯†āŽŸā¯āŽĒā¯āŽĒāŽ¤āŽąā¯āŽ•ā¯āŽŽā¯ āŽ‡āŽ¨ā¯āŽ¤ āŽ…āŽŠā¯āŽŽāŽ¤āŽŋ āŽ¤ā¯‡āŽĩ❈.", @@ -1377,6 +1406,7 @@ "more": "āŽŽā¯‡āŽ˛ā¯āŽŽā¯", "move": "āŽ¨āŽ•āŽ°ā¯āŽ¤ā¯āŽ¤āŽĩā¯āŽŽā¯", "move_off_locked_folder": "āŽĒā¯‚āŽŸā¯āŽŸāŽĒā¯āŽĒāŽŸā¯āŽŸ āŽ•ā¯‹āŽĒā¯āŽĒā¯āŽąā¯ˆāŽ¯āŽŋāŽ˛āŽŋāŽ°ā¯āŽ¨ā¯āŽ¤ā¯ āŽĩā¯†āŽŗāŽŋāŽ¯ā¯‡āŽąāŽĩā¯āŽŽā¯", + "move_to": "āŽ¨āŽ•āŽ°ā¯āŽ¤ā¯āŽ¤ā¯", "move_to_lock_folder_action_prompt": "āŽĒā¯‚āŽŸā¯āŽŸāŽŋāŽ¯ āŽ•ā¯‹āŽĒā¯āŽĒā¯āŽąā¯ˆāŽ¯āŽŋāŽ˛ā¯ {count} āŽšā¯‡āŽ°ā¯āŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸāŽ¤ā¯", "move_to_locked_folder": "āŽĒā¯‚āŽŸā¯āŽŸāŽĒā¯āŽĒāŽŸā¯āŽŸ āŽ•ā¯‹āŽĒā¯āŽĒā¯āŽąā¯ˆāŽ¯āŽŋāŽ˛ā¯ āŽšā¯†āŽ˛ā¯āŽ˛ā¯āŽ™ā¯āŽ•āŽŗā¯", "move_to_locked_folder_confirmation": "āŽ‡āŽ¨ā¯āŽ¤ āŽĒā¯āŽ•ā¯ˆāŽĒā¯āŽĒāŽŸāŽ™ā¯āŽ•āŽŗā¯ āŽŽāŽąā¯āŽąā¯āŽŽā¯ āŽĩā¯€āŽŸāŽŋāŽ¯ā¯‹ āŽ…āŽŠā¯ˆāŽ¤ā¯āŽ¤ā¯ āŽ†āŽ˛ā¯āŽĒāŽ™ā¯āŽ•āŽŗāŽŋāŽ˛āŽŋāŽ°ā¯āŽ¨ā¯āŽ¤ā¯āŽŽā¯ āŽ…āŽ•āŽąā¯āŽąāŽĒā¯āŽĒāŽŸā¯āŽŽā¯, āŽŽā¯‡āŽ˛ā¯āŽŽā¯ āŽĒā¯‚āŽŸā¯āŽŸāŽĒā¯āŽĒāŽŸā¯āŽŸ āŽ•ā¯‹āŽĒā¯āŽĒā¯āŽąā¯ˆāŽ¯āŽŋāŽ˛āŽŋāŽ°ā¯āŽ¨ā¯āŽ¤ā¯ āŽŽāŽŸā¯āŽŸā¯āŽŽā¯‡ āŽĒāŽžāŽ°ā¯āŽ•ā¯āŽ• āŽŽā¯āŽŸāŽŋāŽ¯ā¯āŽŽā¯", @@ -1429,6 +1459,7 @@ "no_favorites_message": "āŽ‰āŽ™ā¯āŽ•āŽŗā¯ āŽšāŽŋāŽąāŽ¨ā¯āŽ¤ āŽĒāŽŸāŽ™ā¯āŽ•āŽŗā¯ āŽŽāŽąā¯āŽąā¯āŽŽā¯ āŽĩā¯€āŽŸāŽŋāŽ¯ā¯‹āŽ•ā¯āŽ•āŽŗā¯ˆ āŽĩāŽŋāŽ°ā¯ˆāŽĩāŽžāŽ•āŽ•ā¯ āŽ•āŽŖā¯āŽŸā¯āŽĒāŽŋāŽŸāŽŋāŽ•ā¯āŽ• āŽĒāŽŋāŽŸāŽŋāŽ¤ā¯āŽ¤āŽĩā¯ˆāŽ•āŽŗā¯ˆāŽšā¯ āŽšā¯‡āŽ°ā¯āŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", "no_libraries_message": "āŽ‰āŽ™ā¯āŽ•āŽŗā¯ āŽĒā¯āŽ•ā¯ˆāŽĒā¯āŽĒāŽŸāŽ™ā¯āŽ•āŽŗā¯ āŽŽāŽąā¯āŽąā¯āŽŽā¯ āŽĩā¯€āŽŸāŽŋāŽ¯ā¯‹āŽ•ā¯āŽ•āŽŗā¯ˆāŽ•ā¯ āŽ•āŽžāŽŖ āŽĩā¯†āŽŗāŽŋāŽĒā¯āŽĒā¯āŽą āŽ¨ā¯‚āŽ˛āŽ•āŽ¤ā¯āŽ¤ā¯ˆ āŽ‰āŽ°ā¯āŽĩāŽžāŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", "no_local_assets_found": "āŽ‡āŽ¨ā¯āŽ¤ āŽšā¯†āŽ•ā¯āŽšāŽŽā¯ āŽŽā¯‚āŽ˛āŽŽā¯ āŽ‰āŽŗā¯āŽŗāŽ• āŽšā¯ŠāŽ¤ā¯āŽ¤ā¯āŽ•ā¯āŽ•āŽŗā¯ āŽŽāŽ¤ā¯āŽĩā¯āŽŽā¯ āŽ•āŽžāŽŖāŽĒā¯āŽĒāŽŸāŽĩāŽŋāŽ˛ā¯āŽ˛ā¯ˆ", + "no_location_set": "āŽ‡āŽŸāŽŽā¯ āŽ…āŽŽā¯ˆāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸāŽĩāŽŋāŽ˛ā¯āŽ˛ā¯ˆ", "no_locked_photos_message": "āŽĒā¯‚āŽŸā¯āŽŸāŽĒā¯āŽĒāŽŸā¯āŽŸ āŽ•ā¯‹āŽĒā¯āŽĒā¯āŽąā¯ˆāŽ¯āŽŋāŽ˛ā¯ āŽ‰āŽŗā¯āŽŗ āŽĒā¯āŽ•ā¯ˆāŽĒā¯āŽĒāŽŸāŽ™ā¯āŽ•āŽŗā¯ āŽŽāŽąā¯āŽąā¯āŽŽā¯ āŽĩā¯€āŽŸāŽŋāŽ¯ā¯‹āŽ•ā¯āŽ•āŽŗā¯ āŽŽāŽąā¯ˆāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸā¯āŽŗā¯āŽŗāŽŠ, āŽŽā¯‡āŽ˛ā¯āŽŽā¯ āŽ¨ā¯€āŽ™ā¯āŽ•āŽŗā¯ āŽ‰āŽ™ā¯āŽ•āŽŗā¯ āŽ¨ā¯‚āŽ˛āŽ•āŽ¤ā¯āŽ¤ā¯ˆ āŽ‰āŽ˛āŽžāŽĩā¯āŽŽā¯āŽĒā¯‹āŽ¤ā¯ āŽ…āŽ˛ā¯āŽ˛āŽ¤ā¯ āŽ¤ā¯‡āŽŸā¯āŽŽā¯āŽĒā¯‹āŽ¤ā¯ āŽ•āŽžāŽŖā¯āŽĒāŽŋāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸāŽžāŽ¤ā¯.", "no_name": "āŽĒā¯†āŽ¯āŽ°ā¯ āŽ‡āŽ˛ā¯āŽ˛ā¯ˆ", "no_notifications": "āŽ…āŽąāŽŋāŽĩāŽŋāŽĒā¯āŽĒā¯āŽ•āŽŗā¯ āŽ‡āŽ˛ā¯āŽ˛ā¯ˆ", @@ -1488,6 +1519,7 @@ "other_variables": "āŽĒāŽŋāŽą āŽŽāŽžāŽąāŽŋāŽ•āŽŗā¯", "owned": "āŽšā¯ŠāŽ¨ā¯āŽ¤āŽŽāŽžāŽŠāŽ¤ā¯", "owner": "āŽ‰āŽ°āŽŋāŽŽā¯ˆāŽ¯āŽžāŽŗāŽ°ā¯", + "page": "āŽĒāŽ•ā¯āŽ•āŽŽā¯", "partner": "āŽ•ā¯‚āŽŸā¯āŽŸāŽžāŽŗāŽ°ā¯", "partner_can_access": "{partner} āŽ…āŽŖā¯āŽ•āŽ˛āŽžāŽŽā¯", "partner_can_access_assets": "āŽ•āŽžāŽĒā¯āŽĒāŽ•āŽĒā¯āŽĒāŽŸā¯āŽ¤ā¯āŽ¤āŽĒā¯āŽĒāŽŸā¯āŽŸ āŽŽāŽąā¯āŽąā¯āŽŽā¯ āŽ¨ā¯€āŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸāŽĩ❈ āŽ¤āŽĩāŽŋāŽ° āŽ‰āŽ™ā¯āŽ•āŽŗā¯ āŽĒā¯āŽ•ā¯ˆāŽĒā¯āŽĒāŽŸāŽ™ā¯āŽ•āŽŗā¯ āŽŽāŽąā¯āŽąā¯āŽŽā¯ āŽĩā¯€āŽŸāŽŋāŽ¯ā¯‹āŽ•ā¯āŽ•āŽŗā¯ āŽ…āŽŠā¯ˆāŽ¤ā¯āŽ¤ā¯āŽŽā¯", @@ -1819,6 +1851,8 @@ "server_offline": "āŽšā¯‡āŽĩā¯ˆāŽ¯āŽ•āŽŽā¯ āŽ‡āŽŖā¯ˆāŽĒā¯āŽĒāŽŋāŽ˛ā¯āŽ˛āŽžāŽ¤", "server_online": "āŽ†āŽŠā¯āŽ˛ā¯ˆāŽŠāŽŋāŽ˛ā¯ āŽšā¯‡āŽĩā¯ˆāŽ¯āŽ•āŽŽā¯", "server_privacy": "āŽšā¯‡āŽĩā¯ˆāŽ¯āŽ• āŽ¤āŽŠāŽŋāŽ¯ā¯āŽ°āŽŋāŽŽā¯ˆ", + "server_restarting_description": "āŽ‡āŽ¨ā¯āŽ¤āŽĒā¯ āŽĒāŽ•ā¯āŽ•āŽŽā¯ āŽšāŽŋāŽąāŽŋāŽ¤ā¯ āŽ¨ā¯‡āŽ°āŽ¤ā¯āŽ¤āŽŋāŽ˛ā¯ āŽĒā¯āŽ¤ā¯āŽĒā¯āŽĒāŽŋāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŽā¯.", + "server_restarting_title": "āŽšā¯‡āŽĩā¯ˆāŽ¯āŽ•āŽŽā¯ āŽŽāŽąā¯āŽ¤ā¯ŠāŽŸāŽ•ā¯āŽ•āŽŽā¯ āŽšā¯†āŽ¯ā¯āŽ¯āŽĒā¯āŽĒāŽŸā¯āŽ•āŽŋāŽąāŽ¤ā¯", "server_stats": "āŽšā¯‡āŽĩā¯ˆāŽ¯āŽ• āŽĒā¯āŽŗā¯āŽŗāŽŋāŽĩāŽŋāŽĩāŽ°āŽ™ā¯āŽ•āŽŗā¯", "server_update_available": "āŽšā¯‡āŽĩā¯ˆāŽ¯āŽ• āŽĒā¯āŽ¤ā¯āŽĒā¯āŽĒāŽŋāŽĒā¯āŽĒ❁ āŽ•āŽŋāŽŸā¯ˆāŽ•ā¯āŽ•āŽŋāŽąāŽ¤ā¯", "server_version": "āŽšā¯‡āŽĩā¯ˆāŽ¯āŽ• āŽĒāŽ¤āŽŋāŽĒā¯āŽĒ❁", @@ -1942,6 +1976,7 @@ "show_slideshow_transition": "āŽšā¯āŽ˛ā¯ˆāŽŸā¯āŽšā¯‹ āŽŽāŽžāŽąā¯āŽąāŽ¤ā¯āŽ¤ā¯ˆāŽ•ā¯ āŽ•āŽžāŽŸā¯āŽŸā¯", "show_supporter_badge": "āŽ†āŽ¤āŽ°āŽĩāŽžāŽŗāŽ°ā¯ āŽ’āŽŸā¯āŽŸā¯", "show_supporter_badge_description": "āŽ’āŽ°ā¯ āŽ†āŽ¤āŽ°āŽĩāŽžāŽŗāŽ°ā¯ āŽĒā¯‡āŽŸā¯āŽšā¯ˆāŽ•ā¯ āŽ•āŽžāŽŸā¯āŽŸā¯", + "show_text_recognition": "āŽ‰āŽ°ā¯ˆ āŽ…āŽ™ā¯āŽ•ā¯€āŽ•āŽžāŽ°āŽ¤ā¯āŽ¤ā¯ˆāŽ•ā¯ āŽ•āŽžāŽŸā¯āŽŸā¯", "show_text_search_menu": "āŽ‰āŽ°ā¯ˆ āŽ¤ā¯‡āŽŸāŽ˛ā¯ āŽŽā¯†āŽŠā¯āŽĩā¯ˆāŽ•ā¯ āŽ•āŽžāŽŸā¯āŽŸā¯", "shuffle": "āŽ•āŽ˛āŽ•ā¯āŽ•ā¯", "sidebar": "āŽĒāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŸāŽŋ", @@ -2012,6 +2047,7 @@ "tags": "āŽ•ā¯āŽąāŽŋāŽšā¯āŽšā¯†āŽžāŽąā¯āŽ•āŽŗā¯", "tap_to_run_job": "āŽĩā¯‡āŽ˛ā¯ˆāŽ¯ā¯ˆ āŽ‡āŽ¯āŽ•ā¯āŽ• āŽ¤āŽŸā¯āŽŸāŽĩā¯āŽŽā¯", "template": "āŽĩāŽžāŽ°ā¯āŽĒā¯āŽĒā¯āŽ°ā¯", + "text_recognition": "āŽ‰āŽ°ā¯ˆ āŽ…āŽ™ā¯āŽ•ā¯€āŽ•āŽžāŽ°āŽŽā¯", "theme": "āŽ•āŽ°ā¯āŽĒā¯āŽĒā¯ŠāŽ°ā¯āŽŗā¯", "theme_selection": "āŽ•āŽ°ā¯āŽĒā¯āŽĒā¯ŠāŽ°ā¯āŽŗā¯ āŽ¤ā¯‡āŽ°ā¯āŽĩ❁", "theme_selection_description": "āŽ‰āŽ™ā¯āŽ•āŽŗā¯ āŽ‰āŽ˛āŽžāŽĩāŽŋāŽ¯āŽŋāŽŠā¯ āŽ•āŽŖāŽŋāŽŠāŽŋ āŽĩāŽŋāŽ°ā¯āŽĒā¯āŽĒāŽ¤ā¯āŽ¤āŽŋāŽŠā¯ āŽ…āŽŸāŽŋāŽĒā¯āŽĒāŽŸā¯ˆāŽ¯āŽŋāŽ˛ā¯ āŽ¤āŽžāŽŠāŽžāŽ•āŽĩ❇ āŽ•āŽ°ā¯āŽĒā¯āŽĒā¯ŠāŽ°ā¯āŽŗā¯ āŽ’āŽŗāŽŋ āŽ…āŽ˛ā¯āŽ˛āŽ¤ā¯ āŽ‡āŽ°ā¯āŽŸā¯āŽŸāŽžāŽ• āŽ…āŽŽā¯ˆāŽ•ā¯āŽ•āŽĩā¯āŽŽā¯", @@ -2044,13 +2080,14 @@ "to_select": "āŽ¤ā¯‡āŽ°ā¯āŽ¨ā¯āŽ¤ā¯†āŽŸā¯āŽ•ā¯āŽ•", "to_trash": "āŽ•ā¯āŽĒā¯āŽĒ❈", "toggle_settings": "āŽ…āŽŽā¯ˆāŽĒā¯āŽĒā¯āŽ•āŽŗā¯ˆ āŽŽāŽžāŽąā¯āŽąāŽĩā¯āŽŽā¯", + "toggle_theme_description": "āŽ•āŽ°ā¯āŽĒā¯āŽĒā¯ŠāŽ°ā¯āŽŗā¯ āŽŽāŽžāŽąā¯āŽąā¯", "total": "āŽŽā¯ŠāŽ¤ā¯āŽ¤āŽŽā¯", "total_usage": "āŽŽā¯ŠāŽ¤ā¯āŽ¤ āŽĒāŽ¯āŽŠā¯āŽĒāŽžāŽŸā¯", "trash": "āŽ•ā¯āŽĒā¯āŽĒ❈", "trash_action_prompt": "{count} āŽ•ā¯āŽĒā¯āŽĒā¯ˆāŽ•ā¯āŽ•ā¯ āŽ¨āŽ•āŽ°ā¯āŽ¤ā¯āŽ¤āŽĒā¯āŽĒāŽŸā¯āŽŸāŽ¤ā¯", - "trash_all": "āŽ…āŽŠā¯ˆāŽ¤ā¯āŽ¤ā¯ˆāŽ¯ā¯āŽŽā¯ āŽ•ā¯āŽĒā¯āŽĒ❈", + "trash_all": "āŽ…āŽŠā¯ˆāŽ¤ā¯āŽ¤ā¯ˆāŽ¯ā¯āŽŽā¯ āŽ•ā¯āŽĒā¯āŽĒā¯ˆāŽ•ā¯āŽ•ā¯ āŽ¨ā¯€āŽ•ā¯āŽ•ā¯", "trash_count": "āŽ•ā¯āŽĒā¯āŽĒ❈ {count, number}", - "trash_delete_asset": "āŽ•ā¯āŽĒā¯āŽĒ❈/āŽšā¯ŠāŽ¤ā¯āŽ¤ā¯ˆ āŽ¨ā¯€āŽ•ā¯āŽ•ā¯", + "trash_delete_asset": "āŽ•ā¯āŽĒā¯āŽĒ❈/āŽ¨ā¯€āŽ•ā¯āŽ•ā¯ āŽšā¯ŠāŽ¤ā¯āŽ¤ā¯ˆ", "trash_emptied": "āŽ•āŽžāŽ˛āŽŋāŽ¯āŽžāŽ• āŽ•ā¯āŽĒā¯āŽĒ❈", "trash_no_results_message": "āŽ•ā¯āŽĒā¯āŽĒā¯ˆāŽ¤ā¯ āŽ¤ā¯ŠāŽŸā¯āŽŸāŽŋāŽ•āŽŗā¯ āŽŽāŽąā¯āŽąā¯āŽŽā¯ āŽĩā¯€āŽŸāŽŋāŽ¯ā¯‹āŽ•ā¯āŽ•āŽŗā¯ āŽ‡āŽ™ā¯āŽ•ā¯‡ āŽ•āŽžāŽŖā¯āŽĒāŽŋāŽ•ā¯āŽ•āŽĒā¯āŽĒāŽŸā¯āŽŽā¯.", "trash_page_delete_all": "āŽ…āŽŠā¯ˆāŽ¤ā¯āŽ¤ā¯ˆāŽ¯ā¯āŽŽā¯ āŽ¨ā¯€āŽ•ā¯āŽ•ā¯", @@ -2152,6 +2189,7 @@ "view_album": "āŽ†āŽ˛ā¯āŽĒāŽ¤ā¯āŽ¤ā¯ˆāŽ•ā¯ āŽ•āŽžāŽŖā¯āŽ•", "view_all": "āŽ…āŽŠā¯ˆāŽ¤ā¯āŽ¤ā¯ˆāŽ¯ā¯āŽŽā¯ āŽ•āŽžāŽŖā¯āŽ•", "view_all_users": "āŽ…āŽŠā¯ˆāŽ¤ā¯āŽ¤ā¯ āŽĒāŽ¯āŽŠāŽ°ā¯āŽ•āŽŗā¯ˆāŽ¯ā¯āŽŽā¯ āŽ•āŽžāŽŖā¯āŽ•", + "view_asset_owners": "āŽšā¯ŠāŽ¤ā¯āŽ¤ā¯ āŽ‰āŽ°āŽŋāŽŽā¯ˆāŽ¯āŽžāŽŗāŽ°ā¯āŽ•āŽŗā¯ˆāŽ•ā¯ āŽ•āŽžāŽŖā¯āŽ•", "view_details": "āŽĩāŽŋāŽĩāŽ°āŽ™ā¯āŽ•āŽŗā¯ˆāŽĒā¯ āŽĒāŽžāŽ°ā¯", "view_in_timeline": "āŽ•āŽžāŽ˛āŽĩāŽ°āŽŋāŽšā¯ˆāŽ¯āŽŋāŽ˛ā¯ āŽ•āŽžāŽŖā¯āŽ•", "view_link": "āŽ‡āŽŖā¯ˆāŽĒā¯āŽĒā¯ˆāŽ•ā¯ āŽ•āŽžāŽŖā¯āŽ•", @@ -2173,6 +2211,7 @@ "welcome": "āŽĩāŽ°āŽĩā¯‡āŽąā¯āŽ•āŽŋāŽąā¯‹āŽŽā¯", "welcome_to_immich": "āŽ‡āŽŽā¯āŽŽāŽŋāŽšā¯āŽšāŽŋāŽąā¯āŽ•ā¯ āŽĩāŽ°ā¯āŽ•", "wifi_name": "āŽĩā¯ˆāŽƒāŽĒ❈ āŽĒā¯†āŽ¯āŽ°ā¯", + "workflow": "āŽĒāŽŖāŽŋāŽĒā¯āŽĒāŽžāŽ¯ā¯āŽĩ❁", "wrong_pin_code": "āŽ¤āŽĩāŽąāŽžāŽŠ āŽĒāŽŋāŽŠā¯ āŽ•ā¯āŽąāŽŋāŽ¯ā¯€āŽŸā¯", "year": "āŽ†āŽŖā¯āŽŸā¯", "years_ago": "{years, plural, one {# āŽ†āŽŖā¯āŽŸā¯} other {# āŽ†āŽŖā¯āŽŸā¯āŽ•āŽŗā¯}} āŽŽā¯āŽŠā¯āŽĒ❁", diff --git a/i18n/te.json b/i18n/te.json index 98f722da2b..c146609e13 100644 --- a/i18n/te.json +++ b/i18n/te.json @@ -25,10 +25,15 @@ "add_tag": "ā°Ÿāąā°¯ā°žā°—āą ā°œāą‹ā°Ąā°ŋā°‚ā°šā°‚ā°Ąā°ŋ", "add_to": "ā°œāą‹ā°Ąā°ŋā°‚ā°šā°‚ā°Ąā°ŋâ€Ļ", "add_to_album": "ā°†ā°˛āąā°Ŧā°Žāąâ€Œā°•āą ā°œāą‹ā°Ąā°ŋā°‚ā°šā°‚ā°Ąā°ŋ", - "add_to_album_bottom_sheet_added": "ā°†ā°˛āąā°Ŧā°Žāąā°•āą ā°œāą‹ā°Ąā°ŋā°‚ā°šā°Ŧā°Ąā°ŋā°‚ā°Ļā°ŋ", - "add_to_album_bottom_sheet_already_exists": "ā°†ā°˛āąā°Ŧā°Žāąâ€Œā°˛āą‹ ā°‡ā°Ēāąā°ĒⰟā°ŋā°•āą‡ ā°œāą‹ā°Ąā°ŋā°‚ā°šā°Ŧā°Ąā°ŋā°‚ā°Ļā°ŋ", + "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ā°¨ā°ŋ ā°œāą‹ā°Ąā°ŋā°‚ā°šā°‚ā°Ąā°ŋ", "added_to_archive": "ā°†ā°°āąā°•āąˆā°ĩāąâ€Œā°•ā°ŋ ā°œāą‹ā°Ąā°ŋā°‚ā°šā°Ŧā°Ąā°ŋā°‚ā°Ļā°ŋ", "added_to_favorites": "ā°‡ā°ˇāąā°Ÿā°Žāąˆā°¨ ā°ĩā°žā°Ÿā°ŋā°•ā°ŋ ā°œāą‹ā°Ąā°ŋā°‚ā°šā°Ŧā°Ąā°ŋā°‚ā°Ļā°ŋ", @@ -42,9 +47,16 @@ "authentication_settings_disable_all": "ā°Žāą€ā°°āą ā°–ā°šāąā°šā°ŋā°¤ā°‚ā°—ā°ž ā°…ā°¨āąā°¨ā°ŋ ā°˛ā°žā°—ā°ŋā°¨āą ā°Ēā°Ļāąā°§ā°¤āąā°˛ā°¨āą ā°¨ā°ŋā°˛ā°ŋā°Ēā°ŋā°ĩāą‡ā°¯ā°žā°˛ā°¨āąā°•āąā°‚ā°Ÿāąā°¨āąā°¨ā°žā°°ā°ž? ā°˛ā°žā°—ā°ŋā°¨āą ā°Ēāą‚ā°°āąā°¤ā°ŋā°—ā°ž ā°¨ā°ŋā°˛ā°ŋā°Ēā°ŋā°ĩāą‡ā°¯ā°Ŧā°Ąāąā°¤āąā°‚ā°Ļā°ŋ.", "authentication_settings_reenable": "ā°Žā°ŗāąā°˛āą€ ā°Ēāąā°°ā°žā°°ā°‚ā°Ŧā°ŋā°‚ā°šā°Ÿā°žā°¨ā°ŋā°•ā°ŋ, Server Commandā°¨ā°ŋ ā°‰ā°Ēā°¯āą‹ā°—ā°ŋā°‚ā°šā°‚ā°Ąā°ŋ.", "background_task_job": "ā°¨āą‡ā°Ēā°Ĩāąā°¯ ā°Ēā°¨āąā°˛āą", - "backup_database": "ā°Ąāą‡ā°Ÿā°žā°Ŧāą‡ā°¸āą ā°¨āą ā°¸āąƒā°ˇāąā°Ÿā°ŋā°‚ā°šāą", + "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": "ā°Žāą€ ā°Ąāą‡ā°Ÿā°žā°¨āą ā°°ā°•āąā°ˇā°ŋā°‚ā°šā°Ąā°žā°¨ā°ŋā°•ā°ŋ 3-2-1 ā°Ŧāąā°¯ā°žā°•ā°Ēāą ā°ĩāąā°¯āą‚ā°šā°‚ ā°¸ā°ŋā°Ģā°žā°°āąā°¸āą ā°šāą‡ā°¯ā°Ŧā°Ąā°ŋā°‚ā°Ļā°ŋ. ā°Ēāą‚ā°°āąā°¤ā°ŋ ā°¸āąā°Ĩā°žā°¯ā°ŋ ā°Ŧāąā°¯ā°žā°•ā°Ēāą ā°Ēā°°ā°ŋā°ˇāąā°•ā°žā°°ā°‚ ā°•āą‹ā°¸ā°‚ ā°Žāą€ā°°āą ā°…ā°Ēāąā°˛āą‹ā°Ąāą ā°šāą‡ā°¸ā°ŋā°¨ ā°Ģāą‹ā°Ÿāą‹ā°˛āą/ā°ĩāą€ā°Ąā°ŋā°¯āą‹ā°˛ ā°•ā°žā°Ēāą€ā°˛āą ā°Žā°°ā°ŋā°¯āą Immich ā°Ąāą‡ā°Ÿā°žā°Ŧāą‡ā°¸āą ā°•ā°žā°Ēāą€ā°¨ā°ŋ ā°‰ā°‚ā°šā°žā°˛ā°ŋ.", + "backup_onboarding_footer": "Immich ā°Ŧāąā°¯ā°žā°•ā°Ēāąâ€Œā°Ēāąˆ ā°Žā°°ā°ŋā°¨āąā°¨ā°ŋ ā°ĩā°ŋā°ĩā°°ā°žā°˛ā°•āą ā°Ąā°žā°•āąā°¯āąā°Žāą†ā°‚ā°Ÿāą‡ā°ˇā°¨āą ā°šāą‚ā°Ąā°‚ā°Ąā°ŋ.", + "backup_onboarding_parts_title": "3-2-1 ā°Ŧāąā°¯ā°žā°•ā°Ēāąâ€Œā°˛āą‹:", + "backup_onboarding_title": "ā°Ŧāąā°¯ā°žā°•ā°Ēāąā°˛āą", "backup_settings": "ā°Ąāą‡ā°Ÿā°žā°Ŧāą‡ā°¸āą ā°Ēā°Ąā°ĩāą†ā°¸āą‡ ā°¸āą†ā°Ÿāąā°Ÿā°ŋā°‚ā°—āąâ€Œā°˛āą", "backup_settings_description": "ā°Ąāą‡ā°Ÿā°žā°Ŧāą‡ā°¸āą ā°Ēā°Ąā°ĩāą†ā°¸āą‡ ā°¸āą†ā°Ÿāąā°Ÿā°ŋā°‚ā°—āąâ€Œā°˛ā°¨āą ā°¨ā°ŋā°°āąā°ĩā°šā°ŋā°‚ā°šā°‚ā°Ąā°ŋ", "cleared_jobs": "ā°Ļāą€ā°¨ā°ŋ ā°•āą‹ā°¸ā°‚ ā°‰ā°Ļāąā°¯āą‹ā°—ā°žā°˛āą ā°•āąā°˛ā°ŋā°¯ā°°āą ā°šāą‡ā°¯ā°Ŧā°Ąāąā°Ąā°žā°¯ā°ŋ: {job}", @@ -62,7 +74,6 @@ "disable_login": "ā°˛ā°žā°—ā°ŋā°¨āąâ€Œā°¨āą ā°¨ā°ŋā°˛ā°ŋā°Ēā°ŋā°ĩāą‡ā°¯ā°‚ā°Ąā°ŋ", "duplicate_detection_job_description": "ā°¸ā°žā°°āą‚ā°Ēāąā°¯ Ⱊā°ŋā°¤āąā°°ā°žā°˛ā°¨āą ā°—āąā°°āąā°¤ā°ŋā°‚ā°šā°Ąā°žā°¨ā°ŋā°•ā°ŋ ā°†ā°¸āąā°¤āąā°˛ā°Ēāąˆ ā°¯ā°‚ā°¤āąā°° ā°…ā°­āąā°¯ā°žā°¸ā°žā°¨āąā°¨ā°ŋ ā°…ā°Žā°˛āą ā°šāą‡ā°¯ā°‚ā°Ąā°ŋ. ā°¸āąā°Žā°žā°°āąā°Ÿāą ā°ļāą‹ā°§ā°¨ā°Ēāąˆ ā°†ā°§ā°žā°°ā°Ēā°Ąāąā°¤āąā°‚ā°Ļā°ŋ", "exclusion_pattern_description": "ā°Žā°ŋā°¨ā°šā°žā°¯ā°ŋā°‚ā°Ēāą ā°¨ā°Žāą‚ā°¨ā°žā°˛āą ā°Žāą€ ā°˛āąˆā°Ŧāąā°°ā°°āą€ā°¨ā°ŋ ā°¸āąā°•ā°žā°¨āą ā°šāą‡ā°¸āąā°¤āąā°¨āąā°¨ā°Ēāąā°Ēāąā°Ąāą ā°Ģāąˆā°˛āąâ€Œā°˛āą ā°Žā°°ā°ŋā°¯āą ā°Ģāą‹ā°˛āąā°Ąā°°āąâ€Œā°˛ā°¨āą ā°ĩā°ŋā°¸āąā°Žā°°ā°ŋā°‚ā°šā°Ąā°žā°¨ā°ŋā°•ā°ŋ ā°Žā°ŋā°Žāąā°Žā°˛āąā°¨ā°ŋ ā°…ā°¨āąā°Žā°¤ā°ŋā°¸āąā°¤ā°žā°¯ā°ŋ. ā°Žāą€ā°°āą ā°Ļā°ŋā°—āąā°Žā°¤ā°ŋ ā°šāą‡ā°¯ā°•āą‚ā°Ąā°Ļā°¨āąā°•āąā°¨āą‡ RAW ā°Ģāąˆā°˛āąâ€Œā°˛āą ā°ĩā°‚ā°Ÿā°ŋ ā°Ģāą‹ā°˛āąā°Ąā°°āąâ€Œā°˛ā°¨āą ā°•ā°˛ā°ŋā°—ā°ŋ ā°‰ā°¨āąā°¨ā°Ÿāąā°˛ā°¯ā°ŋā°¤āą‡ ā°‡ā°Ļā°ŋ ā°‰ā°Ēā°¯āą‹ā°—ā°•ā°°ā°‚ā°—ā°ž ā°‰ā°‚ā°Ÿāąā°‚ā°Ļā°ŋ.", - "external_library_management": "ā°Ŧā°žā°šāąā°¯ ā°˛āąˆā°Ŧāąā°°ā°°āą€ ā°¨ā°ŋā°°āąā°ĩā°šā°Ŗ", "face_detection": "ā°Žāąā°– ā°—ā°Žā°¨ā°ŋā°‚ā°Ēāą", "face_detection_description": "ā°Žāą†ā°ˇā°ŋā°¨āą ā°˛āą†ā°°āąā°¨ā°ŋā°‚ā°—āą ā°‰ā°Ēā°¯āą‹ā°—ā°ŋā°‚ā°šā°ŋ ā°†ā°¸āąā°¤āąā°˛ā°˛āą‹ ā°Žāąā°–ā°žā°˛ā°¨āą ā°—āąā°°āąā°¤ā°ŋā°‚ā°šā°‚ā°Ąā°ŋ. ā°ĩāą€ā°Ąā°ŋā°¯āą‹ā°˛ ā°•āą‹ā°¸ā°‚, ā°¸āą‚ā°•āąā°ˇāąā°Žā°šā°ŋā°¤āąā°°ā°‚ ā°Žā°žā°¤āąā°°ā°Žāą‡ ā°Ēā°°ā°ŋā°—ā°Ŗā°ŋā°‚ā°šā°Ŧā°Ąāąā°¤āąā°‚ā°Ļā°ŋ. \"ā°…ā°¨āąā°¨āą€\" (ā°Ēāąā°¨ā°ƒ) ā°…ā°¨āąā°¨ā°ŋ ā°†ā°¸āąā°¤āąā°˛ā°¨āą ā°Ēāąā°°ā°žā°¸āą†ā°¸āą ā°šāą‡ā°¸āąā°¤āąā°‚ā°Ļā°ŋ. ā°‡ā°‚ā°•ā°ž ā°Ēāąā°°ā°žā°¸āą†ā°¸āą ā°šāą‡ā°¯ā°¨ā°ŋ ā°†ā°¸āąā°¤āąā°˛ā°¨āą \"ā°Žā°ŋā°¸āąā°¸ā°ŋā°‚ā°—āą\" ā°•āąā°¯āą‚ā°˛āą ā°šāą‡ā°¸āąā°¤āąā°‚ā°Ļā°ŋ. ā°—āąā°°āąā°¤ā°ŋā°‚ā°šā°Ŧā°Ąā°ŋā°¨ ā°Žāąā°–ā°žā°˛āą ā°‡ā°Ēāąā°ĒⰟā°ŋā°•āą‡ ā°‰ā°¨āąā°¨ ā°˛āą‡ā°Ļā°ž ā°•āąŠā°¤āąā°¤ ā°ĩāąā°¯ā°•āąā°¤āąā°˛ā°¤āą‹ ā°¸ā°Žāą‚ā°šā°Ēā°°ā°šā°Ąā°‚ ā°Ēāą‚ā°°āąā°¤ā°¯ā°ŋā°¨ ā°¤ā°°āąā°ĩā°žā°¤ ā°Žāąā°– ā°—āąā°°āąā°¤ā°ŋā°‚ā°Ēāą ā°•āą‹ā°¸ā°‚ ā°•āąā°¯āą‚ā°˛āą‹ ā°‰ā°‚ā°šā°Ŧā°Ąā°¤ā°žā°¯ā°ŋ.", "facial_recognition_job_description": "ā°¸ā°Žāą‚ā°šā°‚ ā°ĩāąā°¯ā°•āąā°¤āąā°˛ ā°Žāąā°–ā°žā°˛ā°¨āą ā°—āąā°°āąā°¤ā°ŋā°‚ā°šā°ŋā°‚ā°Ļā°ŋ. ā°Ģāą‡ā°¸āą ā°Ąā°ŋā°Ÿāą†ā°•āąā°ˇā°¨āą ā°Ēāą‚ā°°āąā°¤ā°¯ā°ŋā°¨ ā°¤ā°°āąā°ĩā°žā°¤ Ⰸ ā°Ļā°ļ ā°…ā°Žā°˛ā°ĩāąā°¤āąā°‚ā°Ļā°ŋ. \"ā°…ā°¨āąā°¨ā°ŋ\" (ā°Ēāąā°¨ā°ƒ) ā°…ā°¨āąā°¨ā°ŋ ā°Žāąā°–ā°žā°˛ā°¨āą ā°•āąā°˛ā°¸āąā°Ÿā°°āąâ€Œā°˛āą ā°šāą‡ā°¸āąā°¤āąā°‚ā°Ļā°ŋ. \"ā°¤ā°Ēāąā°Ēā°ŋā°Ēāą‹ā°¯ā°ŋā°¨\" ā°ĩāąā°¯ā°•āąā°¤ā°ŋā°¨ā°ŋ ā°•āą‡ā°Ÿā°žā°¯ā°ŋā°‚ā°šā°¨ā°ŋ ā°Žāąā°–ā°žā°˛ā°¨āą ā°•āąā°¯āą‚ā°˛āą‹ ā°‰ā°‚ā°šāąā°¤āąā°‚ā°Ļā°ŋ.", @@ -70,6 +81,9 @@ "force_delete_user_warning": "ā°šāą†ā°šāąā°šā°°ā°ŋā°•: ā°‡ā°Ļā°ŋ ā°ĩā°ŋā°¨ā°ŋā°¯āą‹ā°—ā°Ļā°žā°°āąā°¨ā°ŋ ā°Žā°°ā°ŋā°¯āą ā°…ā°¨āąā°¨ā°ŋ ā°†ā°¸āąā°¤āąā°˛ā°¨āą ā°ĩāą†ā°‚ā°Ÿā°¨āą‡ ā°¤āą€ā°¸ā°ŋā°ĩāą‡ā°¸āąā°¤āąā°‚ā°Ļā°ŋ. ā°‡ā°Ļā°ŋ ā°°ā°Ļāąā°Ļāą ā°šāą‡ā°¯ā°Ŧā°Ąā°Ļāą ā°Žā°°ā°ŋā°¯āą ā°Ģāąˆā°˛āąâ€Œā°˛ā°¨āą ā°¤ā°ŋā°°ā°ŋā°—ā°ŋ ā°ĒāąŠā°‚ā°Ļā°Ąā°‚ ā°¸ā°žā°§āąā°¯ā°‚ ā°•ā°žā°Ļāą.", "image_format": "ā°Ģā°žā°°āąā°Žā°žā°Ÿāą", "image_format_description": "WebP JPEG ā°•ā°‚ā°Ÿāą‡ Ⱊā°ŋā°¨āąā°¨ ā°Ģāąˆā°˛āąâ€Œā°˛ā°¨āą ā°‰ā°¤āąā°Ēā°¤āąā°¤ā°ŋ ā°šāą‡ā°¸āąā°¤āąā°‚ā°Ļā°ŋ, ā°•ā°žā°¨āą€ ā°Žā°¨āąâ€Œā°•āą‹ā°Ąāą ā°šāą‡ā°¯ā°Ąā°‚ ā°¨āą†ā°Žāąā°Žā°Ļā°ŋā°—ā°ž ā°‰ā°‚ā°Ÿāąā°‚ā°Ļā°ŋ.", + "image_fullsize_description": "ā°œāą‚ā°Žāą ā°šāą‡ā°¸ā°ŋā°¨ā°Ēāąā°Ēāąā°Ąāą ā°‰ā°Ēā°¯āą‹ā°—ā°ŋā°‚ā°šāą‡, ā°Žāą†ā°Ÿā°žā°Ąāą‡ā°Ÿā°ž ā°¤āą€ā°¸ā°ŋā°¨ ā°Ēāą‚ā°°āąā°¤ā°ŋ ā°Ēā°°ā°ŋā°Žā°žā°Ŗ Ⱊā°ŋā°¤āąā°°ā°Žāą", + "image_fullsize_enabled": "ā°Ģāąā°˛āą-ā°¸āąˆā°œāą Ⱊā°ŋā°¤āąā°°ā°‚ ā°¤ā°¯ā°žā°°āą€ā°¨ā°ŋ ā°Ēāąā°°ā°žā°°ā°‚ā°­ā°ŋā°‚ā°šāą", + "image_fullsize_enabled_description": "ā°ĩāą†ā°Ŧāąâ€Œā°•āą ā°…ā°¨āąā°•āą‚ā°˛ā°‚ ā°•ā°žā°¨ā°ŋ ā°Ģā°žā°°āąā°Žā°žā°Ÿāąā°˛ ā°•āą‹ā°¸ā°‚ ā°Ģāąā°˛āą-ā°¸āąˆā°œāą Ⱊā°ŋā°¤āąā°°ā°žā°¨āąā°¨ā°ŋ ā°¸āąƒā°ˇāąā°Ÿā°ŋā°‚ā°šāą. \"ā°Žā°‚ā°Ŧāą†ā°Ąāąā°Ąāą†ā°Ąāą ā°Ēāąā°°āą€ā°ĩāąā°¯āą‚ ā°Ēāąā°°ā°ŋā°Ģā°°āą\" ā°Ēāąā°°ā°žā°°ā°‚ā°­ā°ŋā°‚ā°šā°ŋā°¨ā°Ēāąā°Ēāąā°Ąāą, ā°Žā°‚ā°Ŧāą†ā°Ąāąā°Ąāą†ā°Ąāą ā°Ēāąā°°āą€ā°ĩāąā°¯āą‚ā°˛ā°¨āą ā°Žā°žā°°āąā°Ēā°ŋā°Ąā°ŋā°˛āą‡ā°•āąā°‚ā°Ąā°ž ā°¨āą‡ā°°āąā°—ā°ž ā°‰ā°Ēā°¯āą‹ā°—ā°ŋā°¸āąā°¤ā°žā°°āą. JPEG ā°ĩā°‚ā°Ÿā°ŋ ā°ĩāą†ā°Ŧāą-ā°Ģāąā°°āą†ā°‚ā°Ąāąā°˛āą€ ā°Ģā°žā°°āąā°Žā°žā°Ÿāąā°˛ā°Ēāąˆ ā°‡ā°Ļā°ŋ ā°Ēāąā°°ā°­ā°žā°ĩā°‚ ā°šāą‚ā°Ēā°Ļāą.", "image_prefer_embedded_preview": "ā°ĒāąŠā°‚ā°Ļāąā°Ēā°°ā°ŋⰚā°ŋā°¨ ā°Ēā°°ā°ŋā°Ļāąƒā°ļāąā°¯ā°žā°¨ā°ŋā°•ā°ŋ ā°Ēāąā°°ā°žā°§ā°žā°¨āąā°¯ā°¤ ā°‡ā°ĩāąā°ĩā°‚ā°Ąā°ŋ", "image_prefer_embedded_preview_setting_description": "ā°…ā°‚ā°Ļāąā°Ŧā°žā°Ÿāąā°˛āą‹ ā°‰ā°¨āąā°¨ā°Ēāąā°Ēāąā°Ąāą ā°Žā°°ā°ŋā°¯āą ā°‡ā°Žāą‡ā°œāą ā°Ēāąā°°ā°žā°¸āą†ā°¸ā°ŋā°‚ā°—āąâ€Œā°•āą ā°‡ā°¨āąâ€Œā°Ēāąā°Ÿāąâ€Œā°—ā°ž RAW ā°Ģāą‹ā°Ÿāą‹ā°˛ā°˛āą‹ ā°Žā°‚ā°Ŧāą†ā°Ąāą†ā°Ąāą ā°Ēāąā°°ā°ŋā°ĩāąā°¯āą‚ā°˛ā°¨āą ā°‰ā°Ēā°¯āą‹ā°—ā°ŋā°‚ā°šā°‚ā°Ąā°ŋ. ā°‡ā°Ļā°ŋ ā°•āąŠā°¨āąā°¨ā°ŋ Ⱊā°ŋā°¤āąā°°ā°žā°˛ā°•āą ā°Žā°°ā°ŋā°‚ā°¤ ā°–ā°šāąā°šā°ŋā°¤ā°Žāąˆā°¨ ā°°ā°‚ā°—āąā°˛ā°¨āą ā°‰ā°¤āąā°Ēā°¤āąā°¤ā°ŋ ā°šāą‡ā°¯ā°—ā°˛ā°Ļāą, ā°…ā°¯ā°ŋā°¤āą‡ ā°Ēāąā°°ā°ŋā°ĩāąā°¯āą‚ ā°¨ā°žā°Ŗāąā°¯ā°¤ ā°•āą†ā°Žāą†ā°°ā°žā°Ēāąˆ ā°†ā°§ā°žā°°ā°Ēā°Ąā°ŋ ā°‰ā°‚ā°Ÿāąā°‚ā°Ļā°ŋ ā°Žā°°ā°ŋā°¯āą Ⱊā°ŋā°¤āąā°°ā°‚ ā°Žā°°ā°ŋā°¨āąā°¨ā°ŋ ā°•āąā°Ļā°ŋā°‚ā°Ēāą ā°•ā°ŗā°žā°–ā°‚ā°Ąā°žā°˛ā°¨āą ā°•ā°˛ā°ŋā°—ā°ŋ ā°‰ā°‚ā°Ąā°ĩā°šāąā°šāą.", "image_prefer_wide_gamut": "ā°ĩā°ŋā°¸āąā°¤āąƒā°¤ ā°¸āąā°ĩā°°ā°¸ā°Ēāąā°¤ā°•ā°žā°¨ā°ŋā°•ā°ŋ ā°Ēāąā°°ā°žā°§ā°žā°¨āąā°¯ā°¤ ā°‡ā°ĩāąā°ĩā°‚ā°Ąā°ŋ", @@ -90,7 +104,6 @@ "job_not_concurrency_safe": "Ⰸ ā°‰ā°Ļāąā°¯āą‹ā°—ā°‚ ā°¸ā°Žāąā°Žā°¤ā°ŋ-ā°¸āąā°°ā°•āąā°ˇā°ŋā°¤ā°Žāąˆā°¨ā°Ļā°ŋ ā°•ā°žā°Ļāą.", "job_settings": "ā°‰ā°Ļāąā°¯āą‹ā°— ā°¸āą†ā°Ÿāąā°Ÿā°ŋā°‚ā°—āąâ€Œā°˛āą", "job_settings_description": "ā°‰ā°Ļāąā°¯āą‹ā°— ā°¸ā°Žāąā°Žā°¤ā°ŋā°¨ā°ŋ ā°¨ā°ŋā°°āąā°ĩā°šā°ŋā°‚ā°šā°‚ā°Ąā°ŋ", - "job_status": "ā°‰ā°Ļāąā°¯āą‹ā°— ā°¸āąā°Ĩā°ŋā°¤ā°ŋ", "jobs_delayed": "{jobCount, plural, other {# ā°†ā°˛ā°¸āąā°¯ā°Žāąˆā°‚ā°Ļā°ŋ}}", "jobs_failed": "{jobCount, plural, other {# ā°ĩā°ŋā°Ģā°˛ā°Žāąˆā°‚ā°Ļā°ŋ}}", "library_created": "ā°˛āąˆā°Ŧāąā°°ā°°āą€ ā°¸āąƒā°ˇāąā°Ÿā°ŋā°‚ā°šā°Ŧā°Ąā°ŋā°‚ā°Ļā°ŋ: {library}", @@ -335,7 +348,6 @@ "user_restore_scheduled_removal": "ā°ĩā°ŋā°¨ā°ŋā°¯āą‹ā°—ā°Ļā°žā°°āąā°¨ā°ŋ ā°Ēāąā°¨ā°°āąā°Ļāąā°§ā°°ā°ŋā°‚ā°šāą - {date, date, long}ā°¨ ā°¤āąŠā°˛ā°—ā°ŋā°‚ā°Ēāą ā°ˇāą†ā°Ąāąā°¯āą‚ā°˛āą ā°šāą‡ā°¯ā°Ŧā°Ąā°ŋā°‚ā°Ļā°ŋ", "user_settings": "ā°ĩā°žā°Ąāąā°•ā°°ā°ŋ ā°¸āą†ā°Ÿāąā°Ÿā°ŋā°‚ā°—āąâ€Œā°˛āą", "user_settings_description": "ā°ĩā°žā°Ąāąā°•ā°°ā°ŋ ā°¸āą†ā°Ÿāąā°Ÿā°ŋā°‚ā°—āąâ€Œā°˛ā°¨āą ā°¨ā°ŋā°°āąā°ĩā°šā°ŋā°‚ā°šā°‚ā°Ąā°ŋ", - "user_successfully_removed": "ā°ĩā°žā°Ąāąā°•ā°°ā°ŋ {email} ā°ĩā°ŋⰜⰝā°ĩā°‚ā°¤ā°‚ā°—ā°ž ā°¤āą€ā°¸ā°ŋā°ĩāą‡ā°¯ā°Ŧā°Ąā°ŋā°‚ā°Ļā°ŋ.", "version_check_enabled_description": "ā°ĩā°°āąā°ˇā°¨āą ⰤⰍā°ŋā°–āą€ā°¨ā°ŋ ā°šāą‡ā°¯ā°‚ā°Ąā°ŋ", "version_check_implications": "ā°ĩā°°āąā°ˇā°¨āą ⰤⰍā°ŋā°–āą€ ā°Ģāą€ā°šā°°āą github.comā°¤āą‹ ā°•āąā°°ā°Žā°žā°¨āąā°—ā°¤ ā°•ā°Žāąā°¯āą‚ā°¨ā°ŋā°•āą‡ā°ˇā°¨āąâ€Œā°Ēāąˆ ā°†ā°§ā°žā°°ā°Ēā°Ąāąā°¤āąā°‚ā°Ļā°ŋ", "version_check_settings": "ā°ĩā°°āąā°ˇā°¨āą ⰤⰍā°ŋā°–āą€", diff --git a/i18n/th.json b/i18n/th.json index 9bbb6f706c..c960fd8cb9 100644 --- a/i18n/th.json +++ b/i18n/th.json @@ -72,7 +72,6 @@ "disable_login": "⏛⏴⏔⏁⏞⏪ā¸Ĩāš‡ā¸­ā¸ā¸­ā¸´ā¸™", "duplicate_detection_job_description": "āšƒā¸Šāš‰ machine learning ā¸ā¸ąā¸šā¸Ēā¸ĩāšˆā¸­āš€ā¸žā¸ˇāšˆā¸­ā¸•ā¸Ŗā¸§ā¸ˆā¸ˆā¸ąā¸šā¸Ŗā¸šā¸›ā¸ ā¸˛ā¸žā¸—ā¸ĩāšˆā¸„ā¸Ĩāš‰ā¸˛ā¸ĸā¸ā¸ąā¸™ āš‚ā¸”ā¸ĸāšƒā¸Šāš‰ā¸ā¸˛ā¸Ŗā¸„āš‰ā¸™ā¸Ģā¸˛ā¸­ā¸ąā¸ˆā¸‰ā¸Ŗā¸´ā¸ĸ⏰", "exclusion_pattern_description": "ā¸‚āš‰ā¸­ā¸ĸā¸āš€ā¸§āš‰ā¸™ā¸Ēā¸˛ā¸Ąā¸˛ā¸Ŗā¸–ā¸Ĩā¸°āš€ā¸§āš‰ā¸™āš„ā¸Ÿā¸ĨāšŒāšā¸Ĩā¸°āš‚ā¸Ÿā¸Ĩāš€ā¸”ā¸­ā¸ŖāšŒā¸‚ā¸“ā¸°ā¸Ēāšā¸ā¸™ā¸„ā¸Ĩā¸ąā¸‡ā¸ ā¸˛ā¸žā¸‚ā¸­ā¸‡ā¸„ā¸¸ā¸“ ā¸Ąā¸ĩā¸›ā¸Ŗā¸°āš‚ā¸ĸā¸Šā¸™āšŒāš€ā¸Ąā¸ˇāšˆā¸­āš‚ā¸Ÿā¸Ĩāš€ā¸”ā¸­ā¸ŖāšŒā¸Ąā¸ĩāš„ā¸Ÿā¸ĨāšŒā¸—ā¸ĩāšˆāš„ā¸Ąāšˆā¸­ā¸ĸā¸˛ā¸ā¸™ā¸ŗāš€ā¸‚āš‰ā¸˛ āš€ā¸Šāšˆā¸™āš„ā¸Ÿā¸ĨāšŒ RAW", - "external_library_management": "ā¸ā¸˛ā¸Ŗā¸ˆā¸ąā¸”ā¸ā¸˛ā¸Ŗā¸„ā¸Ĩā¸ąā¸‡ā¸ ā¸˛ā¸žā¸ ā¸˛ā¸ĸ⏙⏭⏁", "face_detection": "ā¸ā¸˛ā¸Ŗā¸•ā¸Ŗā¸§ā¸ˆā¸ˆā¸ąā¸šāšƒā¸šā¸Ģā¸™āš‰ā¸˛", "face_detection_description": "ā¸•ā¸Ŗā¸§ā¸ˆā¸ˆā¸ąā¸šāšƒā¸šā¸Ģā¸™āš‰ā¸˛āšƒā¸™ā¸Ēā¸ĩāšˆā¸­āš‚ā¸”ā¸ĸāšƒā¸Šāš‰ machine learning ⏧⏴⏔ā¸ĩāš‚ā¸­ā¸ˆā¸°āšƒā¸Šāš‰ā¸ ā¸˛ā¸žā¸•ā¸ąā¸§ā¸­ā¸ĸāšˆā¸˛ā¸‡ā¸ˆā¸˛ā¸ā¸§ā¸´ā¸”ā¸ĩāš‚ā¸­āš€ā¸—āšˆā¸˛ā¸™ā¸ąāš‰ā¸™ \"ā¸—ā¸ąāš‰ā¸‡ā¸Ģā¸Ąā¸”\" ā¸ˆā¸°ā¸›ā¸Ŗā¸°ā¸Ąā¸§ā¸Ĩ⏜ā¸Ĩā¸Ēā¸ĩāšˆā¸­ā¸—ā¸ąāš‰ā¸‡ā¸Ģā¸Ąā¸” \"⏂⏞⏔ā¸Ģ⏞ā¸ĸ\" ā¸ˆā¸°ā¸›ā¸Ŗā¸°ā¸Ąā¸§ā¸Ĩ⏜ā¸Ĩā¸Ēā¸ĩāšˆā¸­ā¸—ā¸ĩāšˆā¸ĸā¸ąā¸‡āš„ā¸Ąāšˆāš„ā¸”āš‰ā¸›ā¸Ŗā¸°ā¸Ąā¸§ā¸Ĩ⏜ā¸Ĩ āšƒā¸šā¸Ģā¸™āš‰ā¸˛ā¸—ā¸ĩāšˆā¸–ā¸šā¸ā¸•ā¸Ŗā¸§ā¸ˆā¸ˆā¸ąā¸šāšā¸Ĩāš‰ā¸§ā¸ˆā¸°ā¸–ā¸šā¸āš€ā¸‚āš‰ā¸˛ā¸„ā¸´ā¸§ā¸›ā¸Ŗā¸°ā¸Ąā¸§ā¸Ĩ⏜ā¸Ĩā¸ā¸˛ā¸Ŗā¸ˆā¸”ā¸ˆā¸ŗāšƒā¸šā¸Ģā¸™āš‰ā¸˛ āš€ā¸žā¸´āšˆā¸Ąāš€ā¸‚āš‰ā¸˛āš„ā¸›āšƒā¸™ā¸ā¸Ĩā¸¸āšˆā¸Ąā¸—ā¸ĩāšˆā¸Ąā¸ĩ⏭ā¸ĸā¸šāšˆāšā¸Ĩāš‰ā¸§ā¸Ģā¸Ŗā¸ˇā¸­ā¸„ā¸™āšƒā¸Ģā¸Ąāšˆ", "facial_recognition_job_description": "ā¸™ā¸ŗāšƒā¸šā¸Ģā¸™āš‰ā¸˛ā¸—ā¸ĩāšˆā¸•ā¸Ŗā¸§ā¸ˆā¸ˆā¸ąā¸šāš„ā¸”āš‰āš„ā¸›ā¸ˆā¸ąā¸šā¸ā¸Ĩā¸¸āšˆā¸Ąā¸•ā¸˛ā¸Ąā¸œā¸šāš‰ā¸„ā¸™ ā¸‚ā¸ąāš‰ā¸™ā¸•ā¸­ā¸™ā¸™ā¸ĩāš‰ā¸—ā¸ŗā¸‡ā¸˛ā¸™ā¸Ģā¸Ĩā¸ąā¸‡ā¸ˆā¸˛ā¸ā¸•ā¸Ŗā¸§ā¸ˆā¸ˆā¸ąā¸šāšƒā¸šā¸Ģā¸™āš‰ā¸˛ā¸Ēā¸ŗāš€ā¸Ŗāš‡ā¸ˆ \"ā¸—ā¸ąāš‰ā¸‡ā¸Ģā¸Ąā¸”\" ⏈⏰⏈⏺⏁ā¸Ĩā¸¸āšˆā¸Ąāšƒā¸šā¸Ģā¸™āš‰ā¸˛ā¸—ā¸ąāš‰ā¸‡ā¸Ģā¸Ąā¸”āšƒā¸Ģā¸Ąāšˆ \"⏂⏞⏔ā¸Ģ⏞ā¸ĸ\" ā¸ˆā¸°ā¸ˆā¸ąā¸”ā¸„ā¸´ā¸§āšƒā¸šā¸Ģā¸™āš‰ā¸˛ā¸—ā¸ĩāšˆā¸ĸā¸ąā¸‡āš„ā¸Ąāšˆāš„ā¸”āš‰ā¸Ŗā¸°ā¸šā¸¸ā¸„ā¸™", @@ -105,7 +104,6 @@ "job_not_concurrency_safe": "⏇⏞⏙⏙ā¸ĩāš‰ā¸—ā¸ŗā¸‡ā¸˛ā¸™ā¸žā¸Ŗāš‰ā¸­ā¸Ąā¸ā¸ąā¸™āšā¸šā¸šā¸›ā¸Ĩā¸­ā¸”ā¸ ā¸ąā¸ĸāš„ā¸Ąāšˆāš„ā¸”āš‰", "job_settings": "ā¸ā¸˛ā¸Ŗā¸•ā¸ąāš‰ā¸‡ā¸„āšˆā¸˛ā¸‡ā¸˛ā¸™", "job_settings_description": "ā¸ˆā¸ąā¸”ā¸ā¸˛ā¸Ŗā¸ā¸˛ā¸Ŗā¸—ā¸ŗā¸Ģā¸Ĩ⏞ā¸ĸā¸‡ā¸˛ā¸™ā¸žā¸Ŗāš‰ā¸­ā¸Ąā¸ā¸ąā¸™", - "job_status": "ā¸Ē⏖⏞⏙⏰⏇⏞⏙", "jobs_delayed": "{jobCount, plural, other {# ā¸Ĩāšˆā¸˛ā¸Šāš‰ā¸˛}}", "jobs_failed": "{jobCount, plural, other {# ā¸Ĩāš‰ā¸Ąāš€ā¸Ģā¸Ĩ⏧}}", "library_created": "ā¸Ēā¸Ŗāš‰ā¸˛ā¸‡ā¸„ā¸Ĩā¸ąā¸‡ā¸ ā¸˛ā¸ž: {library}", @@ -372,7 +370,6 @@ "user_restore_scheduled_removal": "ā¸ā¸šāš‰ā¸„ā¸ˇā¸™ā¸œā¸šāš‰āšƒā¸Šāš‰ - ⏁⏺ā¸Ģ⏙⏔⏁⏞⏪ā¸Ĩā¸šāšƒā¸™ā¸§ā¸ąā¸™ā¸—ā¸ĩāšˆ {date, date,long}", "user_settings": "ā¸ā¸˛ā¸Ŗā¸•ā¸ąāš‰ā¸‡ā¸„āšˆā¸˛ā¸œā¸šāš‰āšƒā¸Šāš‰", "user_settings_description": "ā¸ˆā¸ąā¸”ā¸ā¸˛ā¸Ŗā¸ā¸˛ā¸Ŗā¸•ā¸ąāš‰ā¸‡ā¸„āšˆā¸˛ā¸œā¸šāš‰āšƒā¸Šāš‰", - "user_successfully_removed": "ā¸Ĩā¸šā¸œā¸šāš‰āšƒā¸Šāš‰ {email} āš€ā¸Ŗā¸ĩā¸ĸā¸šā¸Ŗāš‰ā¸­ā¸ĸāšā¸Ĩāš‰ā¸§", "version_check_enabled_description": "āš€ā¸Šāš‡ā¸„ GitHub āš€ā¸›āš‡ā¸™ā¸Ŗā¸°ā¸ĸ⏰ āš† āš€ā¸žā¸ˇāšˆā¸­ā¸•ā¸Ŗā¸§ā¸ˆā¸Ēā¸­ā¸šā¸Ŗā¸¸āšˆā¸™āšƒā¸Ģā¸Ąāšˆ", "version_check_implications": "ā¸ā¸˛ā¸Ŗā¸•ā¸Ŗā¸§ā¸ˆā¸Ēā¸­ā¸šāš€ā¸§ā¸­ā¸ŖāšŒā¸Šā¸ąā¸™āšƒā¸Ģā¸Ąāšˆā¸ˆā¸°ā¸•āš‰ā¸­ā¸‡ā¸•ā¸´ā¸”ā¸•āšˆā¸­ā¸ā¸ąā¸š github.com āš€ā¸›āš‡ā¸™ā¸Ŗā¸°ā¸ĸ⏰", "version_check_settings": "ā¸•ā¸Ŗā¸§ā¸ˆā¸Ēā¸­ā¸šā¸Ŗā¸¸āšˆā¸™", diff --git a/i18n/tr.json b/i18n/tr.json index 8fb386b9e7..c2333d6ded 100644 --- a/i18n/tr.json +++ b/i18n/tr.json @@ -7,6 +7,7 @@ "action_common_update": "GÃŧncelle", "actions": "Eylemler", "active": "Aktif", + "active_count": "Aktif: {count}", "activity": "Etkinlik", "activity_changed": "Etkinlik {enabled, select, true {etkin} other {devre dÄąÅŸÄą}}", "add": "Ekle", @@ -67,6 +68,7 @@ "confirm_reprocess_all_faces": "TÃŧm yÃŧzleri tekrardan işlemek istediğinize emin misiniz? Bu işlem isimlendirilmiş insanlarÄą da silecek.", "confirm_user_password_reset": "{user} adlÄą kullanÄącÄąnÄąn şifresini sÄąfÄąrlamak istediğinize emin misiniz?", "confirm_user_pin_code_reset": "{user} adlÄą kullanÄącÄąnÄąn PIN kodunu sÄąfÄąrlamak istediğinize emin misiniz?", + "copy_config_to_clipboard_description": "Geçerli sistem yapÄąlandÄąrmasÄąnÄą bir JSON nesnesi olarak panoya kopyala", "create_job": "GÃļrev oluştur", "cron_expression": "Cron ifadesi", "cron_expression_description": "Cron formatÄąnÄą kullanarak tarama aralığınÄą belirle. Daha fazla bilgi için Ãļrneğin Crontab Guru’ya bakÄąn", @@ -74,7 +76,8 @@ "disable_login": "Girişi devre dÄąÅŸÄą bÄąrak", "duplicate_detection_job_description": "Benzer fotoğraflarÄą bulmak için makine Ãļğrenmesini çalÄąÅŸtÄąr. Bu işlem AkÄąllÄą Arama'ya bağlÄądÄąr", "exclusion_pattern_description": "KÃŧtÃŧphaneyi tararken dosya ve klasÃļrleri gÃļrmezden gelmek için dÄąÅŸlama desenlerini kullanabilirsiniz. RAW dosyalarÄą gibi bazÄą dosya ve klasÃļrleri içe aktarmak istemediğinizde bu seçeneği kullanabilirsiniz.", - "external_library_management": "DÄąÅŸ KÃŧtÃŧphane YÃļnetimi", + "export_config_as_json_description": "Geçerli sistem yapÄąlandÄąrmasÄąnÄą JSON dosyasÄą olarak indir", + "external_libraries_page_description": "YÃļnetici harici kÃŧtÃŧphane sayfasÄą", "face_detection": "YÃŧz tarama", "face_detection_description": "Makine Ãļğrenimi kullanarak varlÄąklardaki yÃŧzleri tespit et. Videolar için sadece kÃŧçÃŧk resim (thumbnail) dikkate alÄąnÄąr. 'Yenile' tÃŧm varlÄąklarÄą yeniden işler. 'SÄąfÄąrla', mevcut tÃŧm yÃŧz verilerini temizleyerek işlemi yeniden başlatÄąr. 'Eksik' henÃŧz işlenmemiş varlÄąklarÄą sÄąraya alÄąr. Tespit edilen yÃŧzler, YÃŧz TanÄąma işlemi tamamlandÄąktan sonra mevcut ya da yeni kişilere gruplanmak Ãŧzere YÃŧz TanÄąma için sÄąraya alÄąnacaktÄąr.", "facial_recognition_job_description": "AlgÄąlanan yÃŧzleri kişilere grupla. Bu adÄąm, YÃŧz Tespit işlemi tamamlandÄąktan sonra çalÄąÅŸÄąr. \"SÄąfÄąrla\", tÃŧm yÃŧzleri yeniden gruplandÄąrÄąr. \"Eksik\" ise henÃŧz bir kişiye atanmamÄąÅŸ yÃŧzleri sÄąraya alÄąr.", @@ -102,14 +105,15 @@ "image_thumbnail_description": "Meta verisi Ã§ÄąkarÄąlmÄąÅŸ kÃŧçÃŧk boyutlu kÃŧçÃŧk resim, ana zaman çizelgesi gibi fotoğraf gruplarÄąnÄą gÃļrÃŧntÃŧlerken kullanÄąlÄąr", "image_thumbnail_quality_description": "KÃŧçÃŧk resim kalitesi 1-100 arasÄąnda. Daha yÃŧksek değerler daha iyidir, ancak daha bÃŧyÃŧk dosyalar Ãŧretir ve uygulamanÄąn yanÄąt hÄązÄąnÄą azaltabilir.", "image_thumbnail_title": "KÃŧçÃŧk Fotoğraf AyarlarÄą", + "import_config_from_json_description": "JSON yapÄąlandÄąrma dosyasÄą yÃŧkleyerek sistem yapÄąlandÄąrmasÄąnÄą içe aktar", "job_concurrency": "{job} eş zamanlÄąlÄąk", "job_created": "GÃļrev oluşturuldu", "job_not_concurrency_safe": "Bu işlem eşzamanlama için uygun değil.", "job_settings": "GÃļrev AyarlarÄą", "job_settings_description": "AynÄą anda çalÄąÅŸacak gÃļrevleri yÃļnet", - "job_status": "GÃļrev Durumu", "jobs_delayed": "{jobCount, plural, other {# gecikmeli}}", "jobs_failed": "{jobCount, plural, other {# BaşarÄąsÄąz}}", + "jobs_over_time": "Zaman içinde işler", "library_created": "Oluşturulan kÃŧtÃŧphane : {library}", "library_deleted": "KÃŧtÃŧphane silindi", "library_details": "KÃŧtÃŧphane detaylarÄą", @@ -182,6 +186,7 @@ "maintenance_start": "BakÄąm modunu başlat", "maintenance_start_error": "BakÄąm modu başlatÄąlamadÄą.", "manage_concurrency": "AynÄą anda çalÄąÅŸmayÄą yÃļnet", + "manage_concurrency_description": "İş eşzamanlÄąlığınÄą yÃļnetmek için işler sayfasÄąna gidin", "manage_log_settings": "GÃŧnlÃŧk ayarlarÄąnÄą yÃļnet", "map_dark_style": "Koyu mod", "map_enable_description": "Harita ayarlarÄąnÄą etkinleştir", @@ -271,10 +276,14 @@ "password_settings_description": "Şifre giriş ayarlarÄąnÄą yÃļnet", "paths_validated_successfully": "TÃŧm yollar başarÄąyla doğrulandÄą", "person_cleanup_job": "Kişi temizleme", + "queue_details": "Kuyruk DetaylarÄą", + "queues": "İş KuyruklarÄą", + "queues_page_description": "YÃļnetici iş kuyruklarÄą sayfasÄą", "quota_size_gib": "Kota Boyutu (GiB)", "refreshing_all_libraries": "TÃŧm kÃŧtÃŧphaneler yenileniyor", "registration": "YÃļnetici KaydÄą", "registration_description": "Sistemdeki ilk kullanÄącÄą olduğunuz için hesabÄąnÄąz YÃļnetici olarak ayarlandÄą. Yeni oluşturulan Ãŧyeliklerin, ve yÃļnetici gÃļrevlerinin sorumlusu olarak atandÄąnÄąz.", + "remove_failed_jobs": "BaşarÄąsÄąz işleri kaldÄąr", "require_password_change_on_login": "KullanÄącÄąnÄąn ilk girişinde şifre değiştirmesini zorunlu kÄąl", "reset_settings_to_default": "AyarlarÄą varsayÄąlana sÄąfÄąrla", "reset_settings_to_recent_saved": "AyarlarÄą kaydedilmiş Ãļnceki ayarlara dÃļndÃŧr", @@ -287,8 +296,10 @@ "server_public_users_description": "PaylaÅŸÄąlan albÃŧmlere bir kullanÄącÄą eklenirken tÃŧm kullanÄącÄąlar (ad ve e-posta) listelenir. Devre dÄąÅŸÄą bÄąrakÄąldığında, kullanÄącÄą listesi yalnÄązca yÃļnetici kullanÄącÄąlar tarafÄąndan kullanÄąlabilir.", "server_settings": "Sunucu AyarlarÄą", "server_settings_description": "Sunucu ayarlarÄąnÄą yÃļnet", + "server_stats_page_description": "YÃļnetici sunucu istatistikleri sayfasÄą", "server_welcome_message": "Hoş geldin mesajÄą", "server_welcome_message_description": "Giriş sayfasÄąnda gÃļsterilen mesaj.", + "settings_page_description": "YÃļnetici ayarlar sayfasÄą", "sidecar_job": "Ek dosya ile taÅŸÄąnan metadata", "sidecar_job_description": "Dosya sisteminden yan araç meta verilerini keşfedin veya eşzamanlayÄąn", "slideshow_duration_description": "Her fotoğrafÄąn kaç saniye gÃļrÃŧntÃŧleneceği", @@ -408,6 +419,7 @@ "user_settings": "KullanÄącÄą AyarlarÄą", "user_settings_description": "KullanÄącÄą ayarlarÄąnÄą yÃļnet", "user_successfully_removed": "KullanÄącÄą {email} başarÄąyla kaldÄąrÄąldÄą.", + "users_page_description": "YÃļnetici kullanÄącÄąlar sayfasÄą", "version_check_enabled_description": "SÃŧrÃŧm kontrolÃŧ etkin", "version_check_implications": "SÃŧrÃŧm kontrol Ãļzelliği, github.com ile periyodik iletişime dayanÄąr", "version_check_settings": "SÃŧrÃŧm KontrolÃŧ", @@ -640,6 +652,7 @@ "backup_options_page_title": "Yedekleme seçenekleri", "backup_setting_subtitle": "Arka planda ve Ãļn planda yÃŧkleme ayarlarÄąnÄą dÃŧzenle", "backup_settings_subtitle": "YÃŧkleme ayarlarÄąnÄą yÃļnet", + "backup_upload_details_page_more_details": "Daha fazla ayrÄąntÄą için dokunun", "backward": "Geriye doğru", "biometric_auth_enabled": "Biyometrik kimlik doğrulama etkin", "biometric_locked_out": "Biyometrik kimlik doğrulamasÄą kilitli", @@ -706,6 +719,7 @@ "check_corrupt_asset_backup_button": "Kontrol et", "check_corrupt_asset_backup_description": "Bu kontrolÃŧ yalnÄązca Wi-Fi Ãŧzerinden ve tÃŧm Ãļğeler yedeklendikten sonra çalÄąÅŸtÄąrÄąn. İşlem birkaç dakika sÃŧrebilir.", "check_logs": "GÃŧnlÃŧkleri Kontrol Et", + "checksum": "Sağlama toplamÄą", "choose_matching_people_to_merge": "Birleştirmek için eşleşen kişileri seçiniz", "city": "Şehir", "clear": "Temizle", @@ -728,6 +742,7 @@ "collapse_all": "TÃŧmÃŧnÃŧ Daralt", "color": "Renk", "color_theme": "Renk temasÄą", + "command": "Komut", "comment_deleted": "Yorum silindi", "comment_options": "Yorum seçenekleri", "comments_and_likes": "Yorumlar & beğeniler", @@ -1092,6 +1107,7 @@ "external_network_sheet_info": "Belirlenmiş Wi-Fi ağına bağlÄą olmadığında uygulama, yukarÄądan aşağıya doğru ulaşabileceği aşağıdaki URL'lerden ilki aracÄąlığıyla sunucuya bağlanacaktÄąr", "face_unassigned": "YÃŧz atanmadÄą", "failed": "BaşarÄąsÄąz", + "failed_count": "BaşarÄąsÄąz: {count}", "failed_to_authenticate": "Kimlik doğrulamasÄą yapÄąlamadÄą", "failed_to_load_assets": "Öğeler yÃŧklenemedi", "failed_to_load_folder": "KlasÃļr yÃŧklenemedi", @@ -1152,12 +1168,14 @@ "header_settings_header_name_input": "Header adÄą", "header_settings_header_value_input": "Header değeri", "headers_settings_tile_title": "Özel proxy headers", + "height": "YÃŧkseklik", "hi_user": "Merhaba {name} {email}", "hide_all_people": "TÃŧm kişileri gizle", "hide_gallery": "Galeriyi gizle", "hide_named_person": "{name} adlÄą kişiyi gizle", "hide_password": "Şifreyi gizle", "hide_person": "Kişiyi gizle", + "hide_text_recognition": "Metin tanÄąmayÄą gizle", "hide_unnamed_people": "İsimsiz kişileri gizle", "home_page_add_to_album_conflicts": "{album} albÃŧmÃŧne {added} Ãļğe eklendi. {failed} Ãļğe zaten albÃŧmdeydi.", "home_page_add_to_album_err_local": "Yerel Ãļğeler henÃŧz albÃŧmlere eklenemiyor, atlanÄąyor", @@ -1273,6 +1291,7 @@ "local": "Yerel", "local_asset_cast_failed": "Sunucuya yÃŧklenmemiş bir Ãļğe yansÄątÄąlamaz", "local_assets": "Yerel Öğeler", + "local_id": "Yerel Kimlik", "local_media_summary": "Yerel Medya Özeti", "local_network": "Yerel ağ", "local_network_sheet_info": "Uygulama belirlenmiş Wi-Fi ağınÄą kullanÄąrken bu URL Ãŧzerinden sunucuya bağlanacaktÄąr", @@ -1511,6 +1530,7 @@ "other_variables": "Diğer değişkenler", "owned": "Sahip olunan", "owner": "Sahip", + "page": "Sayfa", "partner": "Ortak", "partner_can_access": "{partner} erişebilir", "partner_can_access_assets": "Arşivlenenler ve Silinenler dÄąÅŸÄąndaki tÃŧm fotoğraf ve videolarÄąnÄąz", @@ -1967,6 +1987,7 @@ "show_slideshow_transition": "Slayt gÃļsterisi geçişini gÃļster", "show_supporter_badge": "Destekçi rozeti", "show_supporter_badge_description": "Destekçi rozetini gÃļster", + "show_text_recognition": "Metin tanÄąmayÄą gÃļster", "show_text_search_menu": "Metin arama menÃŧsÃŧnÃŧ gÃļster", "shuffle": "KarÄąÅŸtÄąr", "sidebar": "Yan panel", @@ -2037,6 +2058,7 @@ "tags": "Etiketler", "tap_to_run_job": "Başlatmak için dokunun", "template": "Şablon", + "text_recognition": "Metin tanÄąma", "theme": "Tema", "theme_selection": "Tema seçimi", "theme_selection_description": "TemayÄą otomatik olarak tarayÄącÄąnÄązÄąn sistem tercihine gÃļre aÃ§Äąk veya koyu ayarlayÄąn", @@ -2069,6 +2091,7 @@ "to_select": "seçmek için", "to_trash": "ÇÃļpe taÅŸÄą", "toggle_settings": "AyarlarÄą değiştir", + "toggle_theme_description": "TemayÄą değiştir", "total": "Toplam", "total_usage": "Toplam kullanÄąm", "trash": "ÇÃļp", @@ -2177,6 +2200,7 @@ "view_album": "AlbÃŧmÃŧ gÃļrÃŧntÃŧle", "view_all": "TÃŧmÃŧnÃŧ gÃļr", "view_all_users": "TÃŧm kullanÄącÄąlarÄą gÃļrÃŧntÃŧle", + "view_asset_owners": "Öğe sahiplerini gÃļrÃŧntÃŧle", "view_details": "AyrÄąntÄąlarÄą GÃļrÃŧntÃŧle", "view_in_timeline": "Zaman çizelgesinde gÃļrÃŧntÃŧle", "view_link": "BağlantÄąyÄą gÃļster", @@ -2193,10 +2217,12 @@ "viewer_unstack": "YığınÄą KaldÄąr", "visibility_changed": "GÃļrÃŧnÃŧrlÃŧk {count, plural, one {# kişi} other {# kişi}} için değiştirildi", "waiting": "Bekleniyor", + "waiting_count": "Bekleyen: {count}", "warning": "UyarÄą", "week": "Hafta", "welcome": "Hoş geldiniz", "welcome_to_immich": "Immich'e hoş geldiniz", + "width": "Genişlik", "wifi_name": "Wi-Fi AdÄą", "workflow": "İş akÄąÅŸÄą", "wrong_pin_code": "YanlÄąÅŸ PIN kodu", diff --git a/i18n/uk.json b/i18n/uk.json index 3fbdc0daba..b58c8bcb78 100644 --- a/i18n/uk.json +++ b/i18n/uk.json @@ -7,12 +7,13 @@ "action_common_update": "ОĐŊĐžĐ˛Đ¸Ņ‚Đ¸", "actions": "Đ”Ņ–Ņ—", "active": "ВиĐēĐžĐŊŅƒŅ”Ņ‚ŅŒŅŅ", + "active_count": "АĐēŅ‚Đ¸Đ˛ĐŊиК: {count}", "activity": "АĐēŅ‚Đ¸Đ˛ĐŊŅ–ŅŅ‚ŅŒ", "activity_changed": "АĐēŅ‚Đ¸Đ˛ĐŊŅ–ŅŅ‚ŅŒ {enabled, select, true {ŅƒĐ˛Ņ–ĐŧĐēĐŊĐĩĐŊĐž} other {виĐŧĐēĐŊĐĩĐŊĐž}}", "add": "Đ”ĐžĐ´Đ°Ņ‚Đ¸", "add_a_description": "Đ”ĐžĐ´Đ°Ņ‚Đ¸ ĐžĐŋĐ¸Ņ", "add_a_location": "Đ”ĐžĐ´Đ°Ņ‚Đ¸ ĐŧҖҁ҆ĐĩСĐŊĐ°Ņ…ĐžĐ´ĐļĐĩĐŊĐŊŅ", - "add_a_name": "Đ”ĐžĐ´Đ°Ņ‚Đ¸ ҃ Ņ–Đŧ'Ņ", + "add_a_name": "Đ”ĐžĐ´Đ°Ņ‚Đ¸ Ņ–Đŧ'Ņ", "add_a_title": "Đ”ĐžĐ´Đ°Ņ‚Đ¸ ĐŊĐ°ĐˇĐ˛Ņƒ", "add_birthday": "Đ”ĐžĐ´Đ°Ņ‚Đ¸ Đ´ĐĩĐŊҌ ĐŊĐ°Ņ€ĐžĐ´ĐļĐĩĐŊĐŊŅ", "add_endpoint": "Đ”ĐžĐ´Đ°Ņ‚Đ¸ Đ°Đ´Ņ€Đĩҁ҃ ҁĐĩŅ€Đ˛ĐĩŅ€Ņƒ", @@ -67,6 +68,7 @@ "confirm_reprocess_all_faces": "Ви вĐŋĐĩвĐŊĐĩĐŊŅ–, Ņ‰Đž Ņ…ĐžŅ‡ĐĩŅ‚Đĩ ĐŋĐžĐ˛Ņ‚ĐžŅ€ĐŊĐž виСĐŊĐ°Ņ‡Đ¸Ņ‚Đ¸ Đ˛ŅŅ– ОйĐģĐ¸Ņ‡Ņ‡Ņ? ĐĻĐĩ Ņ‚Đ°ĐēĐžĐļ ĐŋŅ€Đ¸ĐˇĐ˛ĐĩĐ´Đĩ Đ´Đž видаĐģĐĩĐŊĐŊŅ Ņ–ĐŧĐĩĐŊ С ŅƒŅŅ–Ņ… ОйĐģĐ¸Ņ‡.", "confirm_user_password_reset": "Ви вĐŋĐĩвĐŊĐĩĐŊŅ–, Ņ‰Đž Ņ…ĐžŅ‡ĐĩŅ‚Đĩ ҁĐēиĐŊŅƒŅ‚Đ¸ ĐŋĐ°Ņ€ĐžĐģҌ ĐēĐžŅ€Đ¸ŅŅ‚ŅƒĐ˛Đ°Ņ‡Đ° {user}?", "confirm_user_pin_code_reset": "Ви вĐŋĐĩвĐŊĐĩĐŊŅ–, Ņ‰Đž Ņ…ĐžŅ‡ĐĩŅ‚Đĩ ҁĐēиĐŊŅƒŅ‚Đ¸ PIN-ĐēОд {user}?", + "copy_config_to_clipboard_description": "ĐĄĐēĐžĐŋŅ–ŅŽĐšŅ‚Đĩ ĐŋĐžŅ‚ĐžŅ‡ĐŊ҃ ĐēĐžĐŊŅ„Ņ–ĐŗŅƒŅ€Đ°Ņ†Ņ–ŅŽ ŅĐ¸ŅŅ‚ĐĩĐŧи ŅĐē Ой'Ņ”ĐēŅ‚ JSON ҃ ĐąŅƒŅ„ĐĩŅ€ ОйĐŧŅ–ĐŊ҃", "create_job": "ĐĄŅ‚Đ˛ĐžŅ€Đ¸Ņ‚Đ¸ СавдаĐŊĐŊŅ", "cron_expression": "Cron Đ˛Đ¸Ņ€Đ°Đˇ", "cron_expression_description": "Đ’ŅŅ‚Đ°ĐŊĐžĐ˛Ņ–Ņ‚ŅŒ Ņ–ĐŊŅ‚ĐĩŅ€Đ˛Đ°Đģ ҁĐēаĐŊŅƒĐ˛Đ°ĐŊĐŊŅ, виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅŽŅ‡Đ¸ Ņ„ĐžŅ€ĐŧĐ°Ņ‚ cron. ДĐģŅ ĐžŅ‚Ņ€Đ¸ĐŧаĐŊĐŊŅ Đ´ĐžĐ´Đ°Ņ‚ĐēĐžĐ˛ĐžŅ— Ņ–ĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Ņ–Ņ— СвĐĩŅ€ĐŊŅ–Ņ‚ŅŒŅŅ Đ´Đž ĐŊаĐŋŅ€. Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "ВиĐŧĐēĐŊŅƒŅ‚Đ¸ Đ˛Ņ…Ņ–Đ´", "duplicate_detection_job_description": "ЗаĐŋŅƒŅŅ‚Đ¸Ņ‚Đ¸ ĐŧĐ°ŅˆĐ¸ĐŊĐŊĐĩ ĐŊĐ°Đ˛Ņ‡Đ°ĐŊĐŊŅ ĐŊа Ņ€ĐĩŅŅƒŅ€ŅĐ°Ņ… Đ´ĐģŅ Đ˛Đ¸ŅĐ˛ĐģĐĩĐŊĐŊŅ ŅŅ…ĐžĐļĐ¸Ņ… ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊҌ. ВиĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅ” Ņ–ĐŊŅ‚ĐĩĐģĐĩĐēŅ‚ŅƒĐ°ĐģҌĐŊиК ĐŋĐžŅˆŅƒĐē", "exclusion_pattern_description": "ШайĐģĐžĐŊи виĐēĐģŅŽŅ‡ĐĩĐŊҌ дОСвОĐģŅŅŽŅ‚ŅŒ Ņ–ĐŗĐŊĐžŅ€ŅƒĐ˛Đ°Ņ‚Đ¸ Ņ„Đ°ĐšĐģи Ņ‚Đ° ĐŋаĐŋĐēи ĐŋŅ–Đ´ Ņ‡Đ°Ņ ҁĐēаĐŊŅƒĐ˛Đ°ĐŊĐŊŅ Đ˛Đ°ŅˆĐžŅ— ĐąŅ–ĐąĐģŅ–ĐžŅ‚ĐĩĐēи. ĐĻĐĩ ĐēĐžŅ€Đ¸ŅĐŊĐž, ŅĐēŅ‰Đž ҃ Đ˛Đ°Ņ Ņ” ĐŋаĐŋĐēи, ŅĐēŅ– ĐŧŅ–ŅŅ‚ŅŅ‚ŅŒ Ņ„Đ°ĐšĐģи, ŅĐēŅ– ви ĐŊĐĩ Ņ…ĐžŅ‡ĐĩŅ‚Đĩ Ņ–ĐŧĐŋĐžŅ€Ņ‚ŅƒĐ˛Đ°Ņ‚Đ¸, ĐŊаĐŋŅ€Đ¸ĐēĐģад, RAW-Ņ„Đ°ĐšĐģи.", - "external_library_management": "КĐĩŅ€ŅƒĐ˛Đ°ĐŊĐŊŅ СОвĐŊŅ–ŅˆĐŊŅ–Đŧи ĐąŅ–ĐąĐģŅ–ĐžŅ‚ĐĩĐēаĐŧи", + "export_config_as_json_description": "ЗаваĐŊŅ‚Đ°ĐļĐ¸Ņ‚Đ¸ ĐŋĐžŅ‚ĐžŅ‡ĐŊ҃ ĐēĐžĐŊŅ„Ņ–ĐŗŅƒŅ€Đ°Ņ†Ņ–ŅŽ ŅĐ¸ŅŅ‚ĐĩĐŧи ҃ Ņ„ĐžŅ€ĐŧĐ°Ņ‚Ņ– JSON", + "external_libraries_page_description": "ĐĄŅ‚ĐžŅ€Ņ–ĐŊĐēа СОвĐŊŅ–ŅˆĐŊŅŒĐžŅ— ĐąŅ–ĐąĐģŅ–ĐžŅ‚ĐĩĐēи адĐŧŅ–ĐŊŅ–ŅŅ‚Ņ€Đ°Ņ‚ĐžŅ€Đ°", "face_detection": "Đ’Đ¸ŅĐ˛ĐģĐĩĐŊĐŊŅ ОйĐģĐ¸Ņ‡Ņ‡Ņ", "face_detection_description": "Đ’Đ¸ŅĐ˛ĐģĐĩĐŊĐŊŅ ОйĐģĐ¸Ņ‡ ĐŊа ĐŧĐĩĐ´Ņ–Đ°Ņ„Đ°ĐšĐģĐ°Ņ… Са Đ´ĐžĐŋĐžĐŧĐžĐŗĐžŅŽ ĐŧĐ°ŅˆĐ¸ĐŊĐŊĐžĐŗĐž ĐŊĐ°Đ˛Ņ‡Đ°ĐŊĐŊŅ. ДĐģŅ Đ˛Ņ–Đ´ĐĩĐž ĐžĐąŅ€ĐžĐąĐģŅŅ”Ņ‚ŅŒŅŅ ĐģĐ¸ŅˆĐĩ ĐĩҁĐēŅ–Đˇ. \"ОĐŊĐžĐ˛Đ¸Ņ‚Đ¸\" ĐŋĐžĐ˛Ņ‚ĐžŅ€ĐŊĐž ĐžĐąŅ€ĐžĐąĐģŅŅ” Đ˛ŅŅ– Ņ„Đ°ĐšĐģи. \"ĐĄĐēиĐŊŅƒŅ‚Đ¸\" Đ´ĐžĐ´Đ°Ņ‚ĐēОвО ĐžŅ‡Đ¸Ņ‰Đ°Ņ” Đ˛ŅŅ– ĐŋĐžŅ‚ĐžŅ‡ĐŊŅ– даĐŊŅ– ĐŋŅ€Đž ОйĐģĐ¸Ņ‡Ņ‡Ņ. \"Đ’Ņ–Đ´ŅŅƒŅ‚ĐŊŅ–\" ŅŅ‚Đ°Đ˛Đ¸Ņ‚ŅŒ ҃ ҇ĐĩŅ€ĐŗŅƒ Ņ„Đ°ĐšĐģи, ŅĐēŅ– ҉Đĩ ĐŊĐĩ ĐąŅƒĐģи ĐžĐąŅ€ĐžĐąĐģĐĩĐŊŅ–. Đ’Đ¸ŅĐ˛ĐģĐĩĐŊŅ– ОйĐģĐ¸Ņ‡Ņ‡Ņ ĐąŅƒĐ´ŅƒŅ‚ŅŒ ĐŋĐžŅŅ‚Đ°Đ˛ĐģĐĩĐŊŅ– в ҇ĐĩŅ€ĐŗŅƒ Đ´ĐģŅ Ņ€ĐžĐˇĐŋŅ–ĐˇĐŊаваĐŊĐŊŅ ĐŋҖҁĐģŅ СавĐĩŅ€ŅˆĐĩĐŊĐŊŅ Đ˛Đ¸ŅĐ˛ĐģĐĩĐŊĐŊŅ, ĐŗŅ€ŅƒĐŋŅƒŅŽŅ‡Đ¸ Ņ—Ņ… ҃ вĐļĐĩ ҖҁĐŊŅƒŅŽŅ‡Đ¸Ņ… айО ĐŊĐžĐ˛Đ¸Ņ… ĐģŅŽĐ´ĐĩĐš.", "facial_recognition_job_description": "Đ“Ņ€ŅƒĐŋŅƒĐ˛Đ°ĐŊĐŊŅ Đ˛Đ¸ŅĐ˛ĐģĐĩĐŊĐ¸Ņ… ОйĐģĐ¸Ņ‡ ҃ ĐģŅŽĐ´ĐĩĐš. ĐĻĐĩĐš ĐēŅ€ĐžĐē виĐēĐžĐŊŅƒŅ”Ņ‚ŅŒŅŅ ĐŋҖҁĐģŅ СавĐĩŅ€ŅˆĐĩĐŊĐŊŅ Đ˛Đ¸ŅĐ˛ĐģĐĩĐŊĐŊŅ ОйĐģĐ¸Ņ‡. \"ĐĄĐēиĐŊŅƒŅ‚Đ¸\" ĐŋĐžĐ˛Ņ‚ĐžŅ€ĐŊĐž ĐēĐģĐ°ŅŅ‚ĐĩŅ€Đ¸ĐˇŅƒŅ” Đ˛ŅŅ– ОйĐģĐ¸Ņ‡Ņ‡Ņ. \"Đ’Ņ–Đ´ŅŅƒŅ‚ĐŊŅ–\" ŅŅ‚Đ°Đ˛Đ¸Ņ‚ŅŒ ҃ ҇ĐĩŅ€ĐŗŅƒ ОйĐģĐ¸Ņ‡Ņ‡Ņ, ŅĐēиĐŧ ҉Đĩ ĐŊĐĩ ĐŋŅ€Đ¸ĐˇĐŊĐ°Ņ‡ĐĩĐŊĐž ĐģŅŽĐ´Đ¸ĐŊ҃.", @@ -102,14 +105,15 @@ "image_thumbnail_description": "МаĐģĐĩĐŊҌĐēа ĐŧŅ–ĐŊŅ–Đ°Ņ‚ŅŽŅ€Đ° Ņ–Đˇ видаĐģĐĩĐŊиĐŧи ĐŧĐĩŅ‚Đ°Đ´Đ°ĐŊиĐŧи, Ņ‰Đž виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅ”Ņ‚ŅŒŅŅ Đ´ĐģŅ ĐŋĐĩŅ€ĐĩĐŗĐģŅĐ´Ņƒ ĐŗŅ€ŅƒĐŋ Ņ„ĐžŅ‚ĐžĐŗŅ€Đ°Ņ„Ņ–Đš, ĐŊаĐŋŅ€Đ¸ĐēĐģад, ĐŊа ĐžŅĐŊОвĐŊŅ–Đš ĐģŅ–ĐŊŅ–Ņ— Ņ‡Đ°ŅŅƒ", "image_thumbnail_quality_description": "Đ¯ĐēŅ–ŅŅ‚ŅŒ ĐŧŅ–ĐŊŅ–Đ°Ņ‚ŅŽŅ€Đ¸ Đ˛Ņ–Đ´ 1 Đ´Đž 100. Đ’Đ¸Ņ‰Đ° ĐžŅ†Ņ–ĐŊĐēа ОСĐŊĐ°Ņ‡Đ°Ņ” ĐēŅ€Đ°Ņ‰Ņƒ ŅĐēŅ–ŅŅ‚ŅŒ, аĐģĐĩ ŅŅ‚Đ˛ĐžŅ€ŅŽŅ” ĐąŅ–ĐģŅŒŅˆŅ– Ņ„Đ°ĐšĐģи Ņ‚Đ° ĐŧĐžĐļĐĩ СĐŧĐĩĐŊŅˆĐ¸Ņ‚Đ¸ ŅˆĐ˛Đ¸Đ´ĐēŅ–ŅŅ‚ŅŒ Ņ€ĐžĐąĐžŅ‚Đ¸ ĐŋŅ€ĐžĐŗŅ€Đ°Đŧи.", "image_thumbnail_title": "НаĐģĐ°ŅˆŅ‚ŅƒĐ˛Đ°ĐŊĐŊŅ ĐŧŅ–ĐŊŅ–Đ°Ņ‚ŅŽŅ€", + "import_config_from_json_description": "ІĐŧĐŋĐžŅ€Ņ‚ŅƒĐšŅ‚Đĩ ĐēĐžĐŊŅ„Ņ–ĐŗŅƒŅ€Đ°Ņ†Ņ–ŅŽ ŅĐ¸ŅŅ‚ĐĩĐŧи, СаваĐŊŅ‚Đ°ĐļĐ¸Đ˛ŅˆĐ¸ Ņ„Đ°ĐšĐģ ĐēĐžĐŊŅ„Ņ–ĐŗŅƒŅ€Đ°Ņ†Ņ–Ņ— JSON", "job_concurrency": "{job} ОдĐŊĐžŅ‡Đ°ŅĐŊĐž", "job_created": "ЗавдаĐŊĐŊŅ ŅŅ‚Đ˛ĐžŅ€ĐĩĐŊĐž", "job_not_concurrency_safe": "ĐĻĐĩ СавдаĐŊĐŊŅ ĐŊĐĩ Ņ” ĐąĐĩСĐŋĐĩ҇ĐŊиĐŧ Đ´ĐģŅ ОдĐŊĐžŅ‡Đ°ŅĐŊĐžĐŗĐž виĐēĐžĐŊаĐŊĐŊŅ.", "job_settings": "НаĐģĐ°ŅˆŅ‚ŅƒĐ˛Đ°ĐŊĐŊŅ СавдаĐŊҌ", "job_settings_description": "ĐŖĐŋŅ€Đ°Đ˛ĐģŅ–ĐŊĐŊŅ ĐŋĐ°Ņ€Đ°ĐģĐĩĐģҌĐŊŅ–ŅŅ‚ŅŽ СавдаĐŊҌ", - "job_status": "ĐĄŅ‚Đ°Ņ‚ŅƒŅ СавдаĐŊĐŊŅ", "jobs_delayed": "{jobCount, plural, other {# Đ˛Ņ–Đ´ĐēĐģадĐĩĐŊĐž}}", "jobs_failed": "{jobCount, plural, other {# ĐŊĐĩ вдаĐģĐžŅŅ}}", + "jobs_over_time": "Đ ĐžĐąĐžŅ‚Đ° С ĐŋĐģиĐŊĐžĐŧ Ņ‡Đ°ŅŅƒ", "library_created": "ĐĄŅ‚Đ˛ĐžŅ€ĐĩĐŊа ĐąŅ–ĐąĐģŅ–ĐžŅ‚ĐĩĐēа: {library}", "library_deleted": "Đ‘Ņ–ĐąĐģŅ–ĐžŅ‚ĐĩĐē҃ видаĐģĐĩĐŊĐž", "library_details": "ДĐĩŅ‚Đ°ĐģŅ– ĐąŅ–ĐąĐģŅ–ĐžŅ‚ĐĩĐēи", @@ -182,6 +186,7 @@ "maintenance_start": "РОСĐŋĐžŅ‡Đ°Ņ‚Đ¸ Ņ€ĐĩĐļиĐŧ ĐžĐąŅĐģŅƒĐŗĐžĐ˛ŅƒĐ˛Đ°ĐŊĐŊŅ", "maintenance_start_error": "НĐĩ вдаĐģĐžŅŅ СаĐŋŅƒŅŅ‚Đ¸Ņ‚Đ¸ Ņ€ĐĩĐļиĐŧ ĐžĐąŅĐģŅƒĐŗĐžĐ˛ŅƒĐ˛Đ°ĐŊĐŊŅ.", "manage_concurrency": "КĐĩŅ€ŅƒĐ˛Đ°ĐŊĐŊŅ ĐŋĐ°Ņ€Đ°ĐģĐĩĐģҌĐŊŅ–ŅŅ‚ŅŽ СавдаĐŊҌ", + "manage_concurrency_description": "ПĐĩŅ€ĐĩĐšĐ´Ņ–Ņ‚ŅŒ ĐŊа ŅŅ‚ĐžŅ€Ņ–ĐŊĐē҃ СавдаĐŊҌ, Ņ‰ĐžĐą ĐēĐĩŅ€ŅƒĐ˛Đ°Ņ‚Đ¸ ĐŋĐ°Ņ€Đ°ĐģĐĩĐģҌĐŊŅ–ŅŅ‚ŅŽ СавдаĐŊҌ", "manage_log_settings": "КĐĩŅ€ŅƒĐ˛Đ°ĐŊĐŊŅ ĐŊаĐģĐ°ŅˆŅ‚ŅƒĐ˛Đ°ĐŊĐŊŅĐŧи ĐļŅƒŅ€ĐŊаĐģ҃", "map_dark_style": "ĐĸĐĩĐŧĐŊиК ŅŅ‚Đ¸ĐģҌ", "map_enable_description": "ĐŖĐ˛Ņ–ĐŧĐēĐŊŅƒŅ‚Đ¸ Ņ„ŅƒĐŊĐē҆Җҗ ĐŧаĐŋи", @@ -271,10 +276,14 @@ "password_settings_description": "КĐĩŅ€ŅƒĐ˛Đ°ĐŊĐŊŅ ĐŊаĐģĐ°ŅˆŅ‚ŅƒĐ˛Đ°ĐŊĐŊŅĐŧи Đ˛Ņ…ĐžĐ´Ņƒ Са ĐŋĐ°Ņ€ĐžĐģĐĩĐŧ", "paths_validated_successfully": "ĐŖŅŅ– ҈ĐģŅŅ…Đ¸ ҃ҁĐŋŅ–ŅˆĐŊĐž ĐŋĐĩŅ€ĐĩĐ˛Ņ–Ņ€ĐĩĐŊĐž", "person_cleanup_job": "ĐžŅ‡Đ¸Ņ‰ĐĩĐŊĐŊŅ ĐžŅĐžĐąĐ¸", + "queue_details": "ДĐĩŅ‚Đ°ĐģŅ– ҇ĐĩŅ€ĐŗĐ¸", + "queues": "ЧĐĩŅ€ĐŗĐ¸ СавдаĐŊҌ", + "queues_page_description": "ĐĄŅ‚ĐžŅ€Ņ–ĐŊĐēа ҇ĐĩŅ€Đŗ СавдаĐŊҌ адĐŧŅ–ĐŊŅ–ŅŅ‚Ņ€Đ°Ņ‚ĐžŅ€Đ°", "quota_size_gib": "РОСĐŧŅ–Ņ€ ĐēĐ˛ĐžŅ‚Đ¸ (GiB)", "refreshing_all_libraries": "ОĐŊОвĐģĐĩĐŊĐŊŅ Đ˛ŅŅ–Ņ… ĐąŅ–ĐąĐģŅ–ĐžŅ‚ĐĩĐē", "registration": "Đ ĐĩŅ”ŅŅ‚Ņ€Đ°Ņ†Ņ–Ņ адĐŧŅ–ĐŊŅ–ŅŅ‚Ņ€Đ°Ņ‚ĐžŅ€Đ°", "registration_description": "ĐžŅĐēŅ–ĐģҌĐēи ви ĐŋĐĩŅ€ŅˆĐ¸Đš ĐēĐžŅ€Đ¸ŅŅ‚ŅƒĐ˛Đ°Ņ‡ в ŅĐ¸ŅŅ‚ĐĩĐŧŅ–, ви ĐąŅƒĐ´ĐĩŅ‚Đĩ ĐŋŅ€Đ¸ĐˇĐŊĐ°Ņ‡ĐĩĐŊŅ– АдĐŧŅ–ĐŊŅ–ŅŅ‚Ņ€Đ°Ņ‚ĐžŅ€ĐžĐŧ Ņ– Đ˛Ņ–Đ´ĐŋĐžĐ˛Ņ–Đ´Đ°Ņ‚Đ¸ĐŧĐĩŅ‚Đĩ Са адĐŧŅ–ĐŊŅ–ŅŅ‚Ņ€Đ°Ņ‚Đ¸Đ˛ĐŊŅ– СавдаĐŊĐŊŅ, а Đ´ĐžĐ´Đ°Ņ‚ĐēĐžĐ˛Ņ– ĐēĐžŅ€Đ¸ŅŅ‚ŅƒĐ˛Đ°Ņ‡Ņ– ĐąŅƒĐ´ŅƒŅ‚ŅŒ ŅŅ‚Đ˛ĐžŅ€ĐĩĐŊŅ– ваĐŧи.", + "remove_failed_jobs": "ВиĐģŅƒŅ‡Đ¸Ņ‚Đ¸ ĐŊĐĩвдаĐģŅ– СавдаĐŊĐŊŅ", "require_password_change_on_login": "ВиĐŧĐ°ĐŗĐ°Ņ‚Đ¸ СĐŧŅ–ĐŊи ĐŋĐ°Ņ€ĐžĐģŅ ĐēĐžŅ€Đ¸ŅŅ‚ŅƒĐ˛Đ°Ņ‡Đ° ĐŋŅ€Đ¸ ĐŋĐĩŅ€ŅˆĐžĐŧ҃ Đ˛Ņ…ĐžĐ´Ņ–", "reset_settings_to_default": "ĐĄĐēиĐŊŅƒŅ‚Đ¸ ĐŊаĐģĐ°ŅˆŅ‚ŅƒĐ˛Đ°ĐŊĐŊŅ Đ´Đž ĐˇĐ°Đ˛ĐžĐ´ŅŅŒĐēĐ¸Ņ… СĐŊĐ°Ņ‡ĐĩĐŊҌ", "reset_settings_to_recent_saved": "ĐĄĐēиĐŊŅƒŅ‚Đ¸ ĐŊаĐģĐ°ŅˆŅ‚ŅƒĐ˛Đ°ĐŊĐŊŅ Đ´Đž ĐŊĐĩдавĐŊĐž СйĐĩŅ€ĐĩĐļĐĩĐŊĐ¸Ņ… ĐŊаĐģĐ°ŅˆŅ‚ŅƒĐ˛Đ°ĐŊҌ", @@ -287,8 +296,10 @@ "server_public_users_description": "ĐŖŅŅ– ĐēĐžŅ€Đ¸ŅŅ‚ŅƒĐ˛Đ°Ņ‡Ņ– (Ņ–Đŧ'Ņ Ņ‚Đ° ĐĩĐģĐĩĐēŅ‚Ņ€ĐžĐŊĐŊа ĐŋĐžŅˆŅ‚Đ°) Đ˛Ņ–Đ´ĐžĐąŅ€Đ°ĐļĐ°ŅŽŅ‚ŅŒŅŅ ĐŋŅ–Đ´ Ņ‡Đ°Ņ дОдаваĐŊĐŊŅ ĐēĐžŅ€Đ¸ŅŅ‚ŅƒĐ˛Đ°Ņ‡Đ° Đ´Đž ҁĐŋŅ–ĐģҌĐŊĐ¸Ņ… аĐģŅŒĐąĐžĐŧŅ–Đ˛. Đ¯ĐēŅ‰Đž виĐŧĐēĐŊĐĩĐŊĐž, ҁĐŋĐ¸ŅĐžĐē ĐēĐžŅ€Đ¸ŅŅ‚ŅƒĐ˛Đ°Ņ‡Ņ–Đ˛ ĐąŅƒĐ´Đĩ Đ´ĐžŅŅ‚ŅƒĐŋĐŊиК ĐģĐ¸ŅˆĐĩ адĐŧŅ–ĐŊŅ–ŅŅ‚Ņ€Đ°Ņ‚ĐžŅ€Đ°Đŧ.", "server_settings": "НаĐģĐ°ŅˆŅ‚ŅƒĐ˛Đ°ĐŊĐŊŅ ҁĐĩŅ€Đ˛ĐĩŅ€Đ°", "server_settings_description": "КĐĩŅ€ŅƒĐ˛Đ°ĐŊĐŊŅ ĐŊаĐģĐ°ŅˆŅ‚ŅƒĐ˛Đ°ĐŊĐŊŅĐŧи ҁĐĩŅ€Đ˛ĐĩŅ€Đ°", + "server_stats_page_description": "ĐĄŅ‚ĐžŅ€Ņ–ĐŊĐēа ŅŅ‚Đ°Ņ‚Đ¸ŅŅ‚Đ¸Đēи ҁĐĩŅ€Đ˛ĐĩŅ€Đ° адĐŧŅ–ĐŊŅ–ŅŅ‚Ņ€Đ°Ņ‚ĐžŅ€Đ°", "server_welcome_message": "Đ’Ņ–Ņ‚Đ°ĐģҌĐŊĐĩ ĐŋĐžĐ˛Ņ–Đ´ĐžĐŧĐģĐĩĐŊĐŊŅ", "server_welcome_message_description": "ĐŸĐžĐ˛Ņ–Đ´ĐžĐŧĐģĐĩĐŊĐŊŅ, ŅĐēĐĩ Đ˛Ņ–Đ´ĐžĐąŅ€Đ°ĐļĐ°Ņ”Ņ‚ŅŒŅŅ ĐŊа ŅŅ‚ĐžŅ€Ņ–ĐŊ҆Җ Đ˛Ņ…ĐžĐ´Ņƒ.", + "settings_page_description": "ĐĄŅ‚ĐžŅ€Ņ–ĐŊĐēа ĐŊаĐģĐ°ŅˆŅ‚ŅƒĐ˛Đ°ĐŊҌ адĐŧŅ–ĐŊŅ–ŅŅ‚Ņ€Đ°Ņ‚ĐžŅ€Đ°", "sidecar_job": "МĐĩŅ‚Đ°Đ´Đ°ĐŊŅ– С sidecar-Ņ„Đ°ĐšĐģŅ–Đ˛", "sidecar_job_description": "ĐŸĐžŅˆŅƒĐē айО ŅĐ¸ĐŊŅ…Ņ€ĐžĐŊŅ–ĐˇĐ°Ņ†Ņ–Ņ ŅĐ°ĐšĐ´ĐēĐ°Ņ€-ĐŧĐĩŅ‚Đ°Đ´Đ°ĐŊĐ¸Ņ… С Ņ„Đ°ĐšĐģĐžĐ˛ĐžŅ— ŅĐ¸ŅŅ‚ĐĩĐŧи", "slideshow_duration_description": "ĐšŅ–ĐģҌĐēŅ–ŅŅ‚ŅŒ ҁĐĩĐē҃ĐŊĐ´ Đ´ĐģŅ Đ˛Ņ–Đ´ĐžĐąŅ€Đ°ĐļĐĩĐŊĐŊŅ ĐēĐžĐļĐŊĐžĐŗĐž ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊĐŊŅ", @@ -407,7 +418,8 @@ "user_restore_scheduled_removal": "Đ’Ņ–Đ´ĐŊĐžĐ˛Đ¸Ņ‚Đ¸ ĐēĐžŅ€Đ¸ŅŅ‚ŅƒĐ˛Đ°Ņ‡Đ° - СаĐŋĐģаĐŊОваĐŊĐž ĐŊа видаĐģĐĩĐŊĐŊŅ {date, date, long}", "user_settings": "НаĐģĐ°ŅˆŅ‚ŅƒĐ˛Đ°ĐŊĐŊŅ ĐēĐžŅ€Đ¸ŅŅ‚ŅƒĐ˛Đ°Ņ‡Đ°", "user_settings_description": "КĐĩŅ€ŅƒĐ˛Đ°ĐŊĐŊŅ ĐŊаĐģĐ°ŅˆŅ‚ŅƒĐ˛Đ°ĐŊĐŊŅĐŧи ĐēĐžŅ€Đ¸ŅŅ‚ŅƒĐ˛Đ°Ņ‡Ņ–Đ˛", - "user_successfully_removed": "ĐšĐžŅ€Đ¸ŅŅ‚ŅƒĐ˛Đ°Ņ‡Đ° С ĐĩĐģĐĩĐēŅ‚Ņ€ĐžĐŊĐŊĐžŅŽ ĐŋĐžŅˆŅ‚ĐžŅŽ {email} ҃ҁĐŋŅ–ŅˆĐŊĐž видаĐģĐĩĐŊĐž.", + "user_successfully_removed": "ĐšĐžŅ€Đ¸ŅŅ‚ŅƒĐ˛Đ°Ņ‡Đ° {email} ҃ҁĐŋŅ–ŅˆĐŊĐž видаĐģĐĩĐŊĐž.", + "users_page_description": "ĐĄŅ‚ĐžŅ€Ņ–ĐŊĐēа адĐŧŅ–ĐŊŅ–ŅŅ‚Ņ€Đ°Ņ‚ĐžŅ€Ņ–Đ˛", "version_check_enabled_description": "ĐŖĐ˛Ņ–ĐŧĐēĐŊŅƒŅ‚Đ¸ ĐŋĐĩŅ€ĐĩĐ˛Ņ–Ņ€Đē҃ вĐĩҀҁҖҗ", "version_check_implications": "Đ¤ŅƒĐŊĐēŅ†Ņ–Ņ ĐŋĐĩŅ€ĐĩĐ˛Ņ–Ņ€Đēи вĐĩҀҁҖҗ СаĐģĐĩĐļĐ¸Ņ‚ŅŒ Đ˛Ņ–Đ´ ĐŋĐĩŅ€Ņ–ĐžĐ´Đ¸Ņ‡ĐŊĐžŅ— ĐēĐžĐŧ҃ĐŊŅ–ĐēĐ°Ņ†Ņ–Ņ— С github.com", "version_check_settings": "ПĐĩŅ€ĐĩĐ˛Ņ–Ņ€Đēа вĐĩҀҁҖҗ", @@ -640,6 +652,7 @@ "backup_options_page_title": "Đ ĐĩСĐĩŅ€Đ˛ĐŊĐĩ ĐēĐžĐŋŅ–ŅŽĐ˛Đ°ĐŊĐŊŅ", "backup_setting_subtitle": "ĐŖĐŋŅ€Đ°Đ˛ĐģŅ–ĐŊĐŊŅ ĐŊаĐģĐ°ŅˆŅ‚ŅƒĐ˛Đ°ĐŊĐŊŅĐŧи СаваĐŊŅ‚Đ°ĐļĐĩĐŊĐŊŅ ҃ Ņ„ĐžĐŊОвОĐŧ҃ Ņ‚Đ° аĐēŅ‚Đ¸Đ˛ĐŊĐžĐŧ҃ Ņ€ĐĩĐļиĐŧŅ–", "backup_settings_subtitle": "КĐĩŅ€ŅƒĐ˛Đ°ĐŊĐŊŅ ĐŊаĐģĐ°ŅˆŅ‚ŅƒĐ˛Đ°ĐŊĐŊŅĐŧи СаваĐŊŅ‚Đ°ĐļĐĩĐŊĐŊŅ", + "backup_upload_details_page_more_details": "ĐĐ°Ņ‚Đ¸ŅĐŊŅ–Ņ‚ŅŒ, Ņ‰ĐžĐą Đ´Ņ–ĐˇĐŊĐ°Ņ‚Đ¸ŅŅ ĐąŅ–ĐģҌ҈Đĩ", "backward": "Đ—Đ˛ĐžŅ€ĐžŅ‚ĐŊŅ–Đš", "biometric_auth_enabled": "Đ‘Ņ–ĐžĐŧĐĩŅ‚Ņ€Đ¸Ņ‡ĐŊа Đ°Đ˛Ņ‚ĐĩĐŊŅ‚Đ¸Ņ„Ņ–ĐēĐ°Ņ†Ņ–Ņ ŅƒĐ˛Ņ–ĐŧĐēĐŊĐĩĐŊа", "biometric_locked_out": "ВаĐŧ СаĐēŅ€Đ¸Ņ‚Đž Đ´ĐžŅŅ‚ŅƒĐŋ Đ´Đž ĐąŅ–ĐžĐŧĐĩŅ‚Ņ€Đ¸Ņ‡ĐŊĐžŅ— Đ°Đ˛Ņ‚ĐĩĐŊŅ‚Đ¸Ņ„Ņ–ĐēĐ°Ņ†Ņ–Ņ—", @@ -706,6 +719,7 @@ "check_corrupt_asset_backup_button": "ВиĐēĐžĐŊĐ°Ņ‚Đ¸ ĐŋĐĩŅ€ĐĩĐ˛Ņ–Ņ€Đē҃", "check_corrupt_asset_backup_description": "ЗаĐŋŅƒŅŅ‚Đ¸Ņ‚Đ¸ Ņ†ŅŽ ĐŋĐĩŅ€ĐĩĐ˛Ņ–Ņ€Đē҃ ĐģĐ¸ŅˆĐĩ ҇ĐĩŅ€ĐĩС Wi-Fi Ņ‚Đ° ĐŋҖҁĐģŅ Ņ‚ĐžĐŗĐž, ŅĐē Đ˛ŅŅ– Ņ€ĐĩŅŅƒŅ€ŅĐ¸ ĐąŅƒĐ´ŅƒŅ‚ŅŒ СаваĐŊŅ‚Đ°ĐļĐĩĐŊŅ– ĐŊа ҁĐĩŅ€Đ˛ĐĩŅ€. ĐŸŅ€ĐžŅ†Đĩҁ ĐŧĐžĐļĐĩ СаКĐŊŅŅ‚Đ¸ ĐēŅ–ĐģҌĐēа Ņ…Đ˛Đ¸ĐģиĐŊ.", "check_logs": "ПĐĩŅ€ĐĩĐ˛Ņ–Ņ€Đ¸Ņ‚Đ¸ ĐļŅƒŅ€ĐŊаĐģи", + "checksum": "КоĐŊŅ‚Ņ€ĐžĐģҌĐŊа ҁ҃Đŧа", "choose_matching_people_to_merge": "ВибĐĩŅ€Ņ–Ņ‚ŅŒ ĐģŅŽĐ´ĐĩĐš Đ´ĐģŅ Ой'Ņ”Đ´ĐŊаĐŊĐŊŅ", "city": "ĐœŅ–ŅŅ‚Đž", "clear": "ĐžŅ‡Đ¸ŅŅ‚Đ¸Ņ‚Đ¸", @@ -728,6 +742,7 @@ "collapse_all": "Đ—ĐŗĐžŅ€ĐŊŅƒŅ‚Đ¸ Đ˛ŅĐĩ", "color": "КоĐģŅ–Ņ€", "color_theme": "КоĐģŅŒĐžŅ€ĐžĐ˛Đ° Ņ‚ĐĩĐŧа", + "command": "КоĐŧаĐŊда", "comment_deleted": "КоĐŧĐĩĐŊŅ‚Đ°Ņ€ видаĐģĐĩĐŊĐž", "comment_options": "ĐŸĐ°Ņ€Đ°ĐŧĐĩŅ‚Ņ€Đ¸ ĐēĐžĐŧĐĩĐŊŅ‚Đ°Ņ€Ņ–Đ˛", "comments_and_likes": "КоĐŧĐĩĐŊŅ‚Đ°Ņ€Ņ– Ņ‚Đ° ĐģаКĐēи", @@ -1092,6 +1107,7 @@ "external_network_sheet_info": "КоĐģи ви ĐŊĐĩ ĐŋŅ–Đ´ĐēĐģŅŽŅ‡ĐĩĐŊŅ– Đ´Đž ĐžĐąŅ€Đ°ĐŊĐžŅ— ĐŧĐĩŅ€ĐĩĐļŅ– Wi-Fi, ĐˇĐ°ŅŅ‚ĐžŅŅƒĐŊĐžĐē ĐŋŅ–Đ´ĐēĐģŅŽŅ‡Đ°Ņ‚Đ¸ĐŧĐĩŅ‚ŅŒŅŅ Đ´Đž ҁĐĩŅ€Đ˛ĐĩŅ€Đ° ҇ĐĩŅ€ĐĩС ĐŋĐĩŅ€ŅˆŅƒ С ĐŊавĐĩĐ´ĐĩĐŊĐ¸Ņ… ĐŊиĐļ҇Đĩ URL-Đ°Đ´Ņ€Đĩҁ, ŅĐē҃ Đ˛Ņ–ĐŊ СĐŧĐžĐļĐĩ Đ´ĐžŅŅĐŗŅ‚Đ¸, ĐŋĐžŅ‡Đ¸ĐŊĐ°ŅŽŅ‡Đ¸ СвĐĩŅ€Ņ…Ņƒ вĐŊиС", "face_unassigned": "НĐĩ ĐŋŅ€Đ¸ĐˇĐŊĐ°Ņ‡ĐĩĐŊĐž", "failed": "НĐĩ вдаĐģĐžŅŅ", + "failed_count": "НĐĩ вдаĐģĐžŅŅ: {count}", "failed_to_authenticate": "ПоĐŧиĐģĐēа Đ°Đ˛Ņ‚ĐĩĐŊŅ‚Đ¸Ņ„Ņ–ĐēĐ°Ņ†Ņ–Ņ—", "failed_to_load_assets": "НĐĩ вдаĐģĐžŅŅ СаваĐŊŅ‚Đ°ĐļĐ¸Ņ‚Đ¸ Ņ€ĐĩŅŅƒŅ€ŅĐ¸", "failed_to_load_folder": "НĐĩ вдаĐģĐžŅŅ СаваĐŊŅ‚Đ°ĐļĐ¸Ņ‚Đ¸ ĐŋаĐŋĐē҃", @@ -1152,6 +1168,7 @@ "header_settings_header_name_input": "ІĐŧ'Ņ ĐˇĐ°ĐŗĐžĐģОвĐē҃", "header_settings_header_value_input": "ЗĐŊĐ°Ņ‡ĐĩĐŊĐŊŅ ĐˇĐ°ĐŗĐžĐģОвĐē҃", "headers_settings_tile_title": "ĐšĐžŅ€Đ¸ŅŅ‚ŅƒĐ˛Đ°ĐģҌĐŊĐ¸Ņ†ŅŒĐēŅ– ĐˇĐ°ĐŗĐžĐģОвĐēи ĐŋŅ€ĐžĐēҁҖ", + "height": "Đ’Đ¸ŅĐžŅ‚Đ°", "hi_user": "ĐŸŅ€Đ¸Đ˛Ņ–Ņ‚ {name} ({email})", "hide_all_people": "ĐĄŅ…ĐžĐ˛Đ°Ņ‚Đ¸ Đ˛ŅŅ–Ņ…", "hide_gallery": "ĐŸŅ€Đ¸Ņ…ĐžĐ˛Đ°Ņ‚Đ¸ ĐŗĐ°ĐģĐĩŅ€ĐĩŅŽ", @@ -1274,6 +1291,7 @@ "local": "На ĐŋŅ€Đ¸ŅŅ‚Ņ€ĐžŅ—", "local_asset_cast_failed": "НĐĩĐŧĐžĐļĐģивО Ņ‚Ņ€Đ°ĐŊҁĐģŅŽĐ˛Đ°Ņ‚Đ¸ Ņ€ĐĩŅŅƒŅ€Ņ, ŅĐēиК ĐŊĐĩ СаваĐŊŅ‚Đ°ĐļĐĩĐŊĐž ĐŊа ҁĐĩŅ€Đ˛ĐĩŅ€", "local_assets": "ЛоĐēаĐģҌĐŊŅ– Ņ„ĐžŅ‚Đž Ņ‚Đ° Đ˛Ņ–Đ´ĐĩĐž", + "local_id": "ĐœŅ–ŅŅ†ĐĩвиК Ņ–Đ´ĐĩĐŊŅ‚Đ¸Ņ„Ņ–ĐēĐ°Ņ‚ĐžŅ€", "local_media_summary": "ЗвĐĩĐ´ĐĩĐŊĐŊŅ ĐŧҖҁ҆ĐĩĐ˛Đ¸Ņ… ЗМІ", "local_network": "ЛоĐēаĐģҌĐŊа ĐŧĐĩŅ€ĐĩĐļа", "local_network_sheet_info": "Đ—Đ°ŅŅ‚ĐžŅŅƒĐŊĐžĐē ĐŋŅ–Đ´ĐēĐģŅŽŅ‡Đ°Ņ‚Đ¸ĐŧĐĩŅ‚ŅŒŅŅ Đ´Đž ҁĐĩŅ€Đ˛ĐĩŅ€Đ° ҇ĐĩŅ€ĐĩС ҆ĐĩĐš URL, ĐēĐžĐģи виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅ”Ņ‚ŅŒŅŅ вĐēаСаĐŊа Wi-Fi ĐŧĐĩŅ€ĐĩĐļа", @@ -1419,7 +1437,7 @@ "network_requirements": "ВиĐŧĐžĐŗĐ¸ Đ´Đž ĐŧĐĩŅ€ĐĩĐļŅ–", "network_requirements_updated": "ВиĐŧĐžĐŗĐ¸ Đ´Đž ĐŧĐĩŅ€ĐĩĐļŅ– СĐŧŅ–ĐŊиĐģĐ¸ŅŅ, ҇ĐĩŅ€ĐŗĐ° Ņ€ĐĩСĐĩŅ€Đ˛ĐŊĐžĐŗĐž ĐēĐžĐŋŅ–ŅŽĐ˛Đ°ĐŊĐŊŅ ĐžŅ‡Đ¸Ņ‰ĐĩĐŊа", "networking_settings": "МĐĩŅ€ĐĩĐļĐĩĐ˛Ņ– ĐŊаĐģĐ°ŅˆŅ‚ŅƒĐ˛Đ°ĐŊĐŊŅ", - "networking_subtitle": "КĐĩŅ€ŅƒĐ˛Đ°ĐŊĐŊŅ ĐŊаĐģĐ°ŅˆŅ‚ŅƒĐ˛Đ°ĐŊĐŊŅĐŧи ĐēŅ–ĐŊ҆ĐĩĐ˛ĐžŅ— Ņ‚ĐžŅ‡Đēи ҁĐĩŅ€Đ˛ĐĩŅ€Đ°", + "networking_subtitle": "КĐĩŅ€ŅƒĐ˛Đ°ĐŊĐŊŅ ĐŊаĐģĐ°ŅˆŅ‚ŅƒĐ˛Đ°ĐŊĐŊŅĐŧ Đ°Đ´Ņ€ĐĩŅĐ¸ ҁĐĩŅ€Đ˛ĐĩŅ€Ņƒ", "never": "ĐŊŅ–ĐēĐžĐģи", "new_album": "Новий аĐģŅŒĐąĐžĐŧ", "new_api_key": "Новий ĐēĐģŅŽŅ‡ API", @@ -1512,6 +1530,7 @@ "other_variables": "ІĐŊŅˆŅ– СĐŧŅ–ĐŊĐŊŅ–", "owned": "ВĐģĐ°ŅĐŊŅ–", "owner": "ВĐģĐ°ŅĐŊиĐē", + "page": "ĐĄŅ‚ĐžŅ€Ņ–ĐŊĐēа", "partner": "ĐŸĐ°Ņ€Ņ‚ĐŊĐĩŅ€", "partner_can_access": "{partner} ĐŧĐ°Ņ” Đ´ĐžŅŅ‚ŅƒĐŋ", "partner_can_access_assets": "Đ’ŅŅ– Đ˛Đ°ŅˆŅ– Ņ„ĐžŅ‚ĐžĐŗŅ€Đ°Ņ„Ņ–Ņ— Ņ‚Đ° Đ˛Ņ–Đ´ĐĩĐž, ĐžĐēҀҖĐŧ Ņ‚Đ¸Ņ…, Ņ‰Đž СĐŊĐ°Ņ…ĐžĐ´ŅŅ‚ŅŒŅŅ в ĐŅ€Ņ…Ņ–Đ˛Ņ– Ņ‚Đ° ВидаĐģĐĩĐŊŅ–", @@ -1837,7 +1856,7 @@ "selected_gps_coordinates": "Đ’Đ¸ĐąŅ€Đ°ĐŊŅ– GPS-ĐēĐžĐžŅ€Đ´Đ¸ĐŊĐ°Ņ‚Đ¸", "send_message": "ĐĐ°Đ´Ņ–ŅĐģĐ°Ņ‚Đ¸ ĐŋĐžĐ˛Ņ–Đ´ĐžĐŧĐģĐĩĐŊĐŊŅ", "send_welcome_email": "ĐĐ°Đ´Ņ–ŅˆĐģŅ–Ņ‚ŅŒ Đ˛Ņ–Ņ‚Đ°ĐģҌĐŊиК ĐģĐ¸ŅŅ‚", - "server_endpoint": "ĐšŅ–ĐŊ҆Đĩва Ņ‚ĐžŅ‡Đēа ҁĐĩŅ€Đ˛ĐĩŅ€Đ°", + "server_endpoint": "ĐĐ´Ņ€ĐĩŅĐ° ҁĐĩŅ€Đ˛ĐĩŅ€Ņƒ", "server_info_box_app_version": "ВĐĩŅ€ŅŅ–Ņ ĐˇĐ°ŅŅ‚ĐžŅŅƒĐŊĐē҃", "server_info_box_server_url": "URL ҁĐĩŅ€Đ˛ĐĩŅ€Đ°", "server_offline": "ĐĄĐĩŅ€Đ˛ĐĩŅ€ ĐžŅ„ĐģаКĐŊ", @@ -2072,6 +2091,7 @@ "to_select": "Đ˛Đ¸ĐąŅ€Đ°Ņ‚Đ¸", "to_trash": "ĐšĐžŅˆĐ¸Đē", "toggle_settings": "ПĐĩŅ€ĐĩĐŧиĐēаĐŊĐŊŅ ĐŊаĐģĐ°ŅˆŅ‚ŅƒĐ˛Đ°ĐŊҌ", + "toggle_theme_description": "ПĐĩŅ€ĐĩĐŧĐēĐŊŅƒŅ‚Đ¸ Ņ‚ĐĩĐŧ҃", "total": "ĐŖŅŅŒĐžĐŗĐž", "total_usage": "Đ—Đ°ĐŗĐ°ĐģҌĐŊĐĩ виĐēĐžŅ€Đ¸ŅŅ‚Đ°ĐŊĐŊŅ", "trash": "ĐšĐžŅˆĐ¸Đē", @@ -2180,6 +2200,7 @@ "view_album": "ПĐĩŅ€ĐĩĐŗĐģŅĐŊŅƒŅ‚Đ¸ аĐģŅŒĐąĐžĐŧ", "view_all": "ПĐĩŅ€ĐĩĐŗĐģŅĐŊŅƒŅ‚Đ¸ ŅƒŅŅ–", "view_all_users": "ПĐĩŅ€ĐĩĐŗĐģŅĐŊŅƒŅ‚Đ¸ Đ˛ŅŅ–Ņ… ĐēĐžŅ€Đ¸ŅŅ‚ŅƒĐ˛Đ°Ņ‡Ņ–Đ˛", + "view_asset_owners": "ПĐĩŅ€ĐĩĐŗĐģŅĐŊŅƒŅ‚Đ¸ вĐģĐ°ŅĐŊиĐēŅ–Đ˛ аĐēŅ‚Đ¸Đ˛Ņ–Đ˛", "view_details": "ДĐĩŅ‚Đ°ĐģҌĐŊŅ–ŅˆĐĩ", "view_in_timeline": "ПĐĩŅ€ĐĩĐŗĐģŅĐŊŅƒŅ‚Đ¸ в Ņ…Ņ€ĐžĐŊĐžĐģĐžĐŗŅ–Ņ—", "view_link": "ПĐĩŅ€ĐĩĐŗĐģŅĐŊŅƒŅ‚Đ¸ ĐŋĐžŅĐ¸ĐģаĐŊĐŊŅ", @@ -2196,10 +2217,12 @@ "viewer_unstack": "Đ ĐžĐˇŅ–ĐąŅ€Đ°Ņ‚Đ¸ ҁ҂ĐĩĐē", "visibility_changed": "ВидиĐŧŅ–ŅŅ‚ŅŒ СĐŧŅ–ĐŊĐĩĐŊĐž Đ´ĐģŅ {count, plural, one {# ĐžŅĐžĐąĐ¸} few {# ĐžŅŅ–Đą} many {# ĐžŅŅ–Đą} other {# ĐžŅŅ–Đą}}", "waiting": "ĐžŅ‡Ņ–ĐēŅƒŅŽŅ‚ŅŒ", + "waiting_count": "ĐžŅ‡Ņ–ĐēŅƒĐ˛Đ°ĐŊĐŊŅ: {count}", "warning": "ПоĐŋĐĩŅ€ĐĩĐ´ĐļĐĩĐŊĐŊŅ", "week": "ĐĸиĐļĐ´ĐĩĐŊҌ", "welcome": "Đ›Đ°ŅĐēавО ĐŋŅ€ĐžŅĐ¸ĐŧĐž", "welcome_to_immich": "Đ›Đ°ŅĐēавО ĐŋŅ€ĐžŅĐ¸ĐŧĐž Đ´Đž Immich", + "width": "Đ¨Đ¸Ņ€Đ¸ĐŊа", "wifi_name": "Назва Wi-Fi", "workflow": "Đ ĐžĐąĐžŅ‡Đ¸Đš ĐŋŅ€ĐžŅ†Đĩҁ", "wrong_pin_code": "НĐĩĐŋŅ€Đ°Đ˛Đ¸ĐģҌĐŊиК PIN-ĐēОд", diff --git a/i18n/ur.json b/i18n/ur.json index 6d6c5232e9..06ae5d60c3 100644 --- a/i18n/ur.json +++ b/i18n/ur.json @@ -7,6 +7,7 @@ "action_common_update": "Ø§ŲžÚˆÛŒŲš ÚŠØąÛŒÚē", "actions": "Ø§ØšŲ…Ø§Ų„", "active": "ŲØšØ§Ų„", + "active_count": "ŲØšØ§Ų„: {ØĒؚداد}", "activity": "ØŗØąÚ¯ØąŲ…ÛŒ", "activity_changed": "ØŗØąÚ¯ØąŲ…ÛŒ {enabled, select, true {ŲØšØ§Ų„ ہے} other {ØēÛŒØą ŲØšØ§Ų„ ہے}}", "add": "Ø´Ø§Ų…Ų„ ÚŠØąÛŒÚē", @@ -27,6 +28,11 @@ "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_url": "URL Ø´Ø§Ų…Ų„ ÚŠØąÛŒÚē", "added_to_archive": "ØĸØąÚŠØ§ØĻÛŒŲˆ Ų…ÛŒÚē Ø´Ø§Ų…Ų„ ÚŠØą دیا گیا", diff --git a/i18n/vi.json b/i18n/vi.json index 00c46a5baf..0f0fce413f 100644 --- a/i18n/vi.json +++ b/i18n/vi.json @@ -5,16 +5,17 @@ "acknowledge": "Ghi nháē­n", "action": "Hành đáģ™ng", "action_common_update": "Cáē­p nháē­t", - "actions": "hành đáģ™ng", + "actions": "Hành đáģ™ng", "active": "Đang hoáēĄt đáģ™ng", + "active_count": "HoáēĄt đáģ™ng: {count}", "activity": "HoáēĄt đáģ™ng", - "activity_changed": "HoáēĄt đáģ™ng Ä‘ÃŖ đưáģŖc {báē­t, cháģn, báē­t khÃĄc {táē¯t}}", + "activity_changed": "HoáēĄt đáģ™ng Ä‘ÃŖ {enabled, select, true {báē­t} other {táē¯t}}", "add": "ThÃĒm", "add_a_description": "ThÃĒm mô táēŖ", "add_a_location": "ThÃĒm đáģ‹a điáģƒm", "add_a_name": "ThÃĒm tÃĒn", - "add_a_title": "ThÃĒm tiÃĒu đáģ", - "add_birthday": "ThÃĒm ngày sinh", + "add_a_title": "ThÃĒm tÃĒn", + "add_birthday": "ThÃĒm sinh nháē­t", "add_endpoint": "ThÃĒm endpoint", "add_exclusion_pattern": "ThÃĒm quy táē¯c loáēĄi tráģĢ", "add_location": "ThÃĒm đáģ‹a điáģƒm", @@ -27,135 +28,166 @@ "add_to_album": "ThÃĒm vào album", "add_to_album_bottom_sheet_added": "ÄÃŖ thÃĒm vào {album}", "add_to_album_bottom_sheet_already_exists": "ÄÃŖ cÃŗ sáēĩn trong {album}", + "add_to_album_bottom_sheet_some_local_assets": "Máģ™t sáģ‘ táģ‡p trÃĒn thiáēŋt báģ‹ không tháģƒ Ä‘Æ°áģŖc thÃĒm vào album", "add_to_album_toggle": "Báē­t táē¯t tÚy cháģn cho {album}", - "add_to_albums": "ThÃĒm vào albums", - "add_to_albums_count": "ÄÃŖ thÃĒm {count} vào albums", + "add_to_albums": "ThÃĒm vào album", + "add_to_albums_count": "ÄÃŖ thÃĒm vào album {count}", "add_to_bottom_bar": "ThÃĒm vào", "add_to_shared_album": "ThÃĒm vào album chia sáēģ", + "add_upload_to_stack": "TáēŖi lÃĒn thÃĒm vào nhÃŗm", "add_url": "ThÃĒm URL", "added_to_archive": "ÄÃŖ lưu tráģ¯", "added_to_favorites": "ÄÃŖ thích", "added_to_favorites_count": "ÄÃŖ thích {count, number} máģĨc", "admin": { - "add_exclusion_pattern_description": "ThÃĒm quy táē¯c loáēĄi tráģĢ. Háģ— tráģŖ sáģ­ dáģĨng kÃŊ táģą *, **, và ?. Đáģƒ báģ qua táēĨt cáēŖ cÃĄc táē­p tin báēĨt káģŗ trong thư máģĨc tÃĒn \"Raw\", hÃŖy dÚng \"**/Raw/**\". Đáģƒ báģ qua cÃĄc táē­p tin cÃŗ đuôi \".tif\", hÃŖy dÚng \"**/*.tif\". Đáģƒ báģ qua máģ™t đưáģng dáēĢn cáģ‘ Ä‘áģ‹nh, hÃŖy dÚng \"/path/to/ignore/**\".", - "admin_user": "Ngưáģi dÚng quáēŖn tráģ‹", - "asset_offline_description": "áēĸnh thư viáģ‡n bÃĒn ngoài này không cÃ˛n trÃĒn áģ• Ä‘ÄŠa và Ä‘ÃŖ báģ‹ chuyáģƒn vào thÚng rÃĄc. Náēŋu áēŖnh Ä‘ÃŖ báģ‹ di chuyáģƒn trong thư viáģ‡n, kiáģƒm tra dÃ˛ng tháģi gian cáģ§a báēĄn đáģƒ tÃŦm áēŖnh máģ›i tÆ°ÆĄng áģŠng. Đáģƒ khôi pháģĨc, hÃŖy đáēŖm báēŖo Immich cÃŗ tháģƒ truy cáē­p đưáģng dáēĢn áēŖnh bÃĒn dưáģ›i và quÊt láēĄi thư viáģ‡n.", - "authentication_settings": "Đăng nháē­p", + "add_exclusion_pattern_description": "ThÃĒm quy táē¯c loáēĄi tráģĢ. Háģ— tráģŖ sáģ­ dáģĨng kÃŊ táģą *, **, và ?. Đáģƒ báģ qua báēĨt káģŗ táģ‡p trong thư máģĨc tÃĒn \"Raw\", hÃŖy dÚng \"**/Raw/**\". Đáģƒ báģ qua cÃĄc táģ‡p cÃŗ đuôi \".tif\", hÃŖy dÚng \"**/*.tif\". Đáģƒ báģ qua máģ™t đưáģng dáēĢn cáģ‘ Ä‘áģ‹nh, hÃŖy dÚng \"/path/to/ignore/**\".", + "admin_user": "QuáēŖn tráģ‹ viÃĒn", + "asset_offline_description": "Táģ‡p thư viáģ‡n bÃĒn ngoài này không cÃ˛n trÃĒn áģ• Ä‘ÄŠa và Ä‘ÃŖ báģ‹ chuyáģƒn vào thÚng rÃĄc. Náēŋu táģ‡p Ä‘ÃŖ báģ‹ di chuyáģƒn trong thư viáģ‡n, kiáģƒm tra dÃ˛ng tháģi gian cáģ§a báēĄn đáģƒ tÃŦm áēŖnh máģ›i tÆ°ÆĄng áģŠng. Đáģƒ khôi pháģĨc, hÃŖy đáēŖm báēŖo Immich cÃŗ tháģƒ truy cáē­p đưáģng dáēĢn táģ‡p bÃĒn dưáģ›i và quÊt láēĄi thư viáģ‡n.", + "authentication_settings": "XÃĄc tháģąc", "authentication_settings_description": "QuáēŖn lÃŊ máē­t kháēŠu, OAuth và cÃĄc cài đáēˇt xÃĄc tháģąc khÃĄc", - "authentication_settings_disable_all": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n vô hiáģ‡u hoÃĄ táēĨt cáēŖ cÃĄc phÆ°ÆĄng tháģŠc đăng nháē­p? Đăng nháē­p sáēŊ báģ‹ vô hiáģ‡u hÃŗa hoàn toàn.", + "authentication_settings_disable_all": "BáēĄn cÃŗ cháē¯c muáģ‘n vô hiáģ‡u hÃŗa máģi phÆ°ÆĄng tháģŠc đăng nháē­p? Đăng nháē­p sáēŊ báģ‹ vô hiáģ‡u hÃŗa hoàn toàn.", "authentication_settings_reenable": "Đáģƒ báē­t láēĄi, dÚng Láģ‡nh MÃĄy cháģ§.", "background_task_job": "CÃĄc tÃĄc váģĨ náģn", "backup_database": "TáēĄo báēŖn sao lưu CSDL", "backup_database_enable_description": "Báē­t sao lưu cÆĄ sáģŸ dáģ¯ liáģ‡u", "backup_keep_last_amount": "Sáģ‘ lưáģŖng cÃĄc báēŖn sao lưu CSDL trưáģ›c Ä‘Ãŗ đưáģŖc giáģ¯ láēĄi", + "backup_onboarding_1_description": "sao chÊp ngoài trang web trÃĒn Ä‘ÃĄm mÃĸy hoáēˇc táēĄi máģ™t váģ‹ trí váē­t lÃŊ khÃĄc.", + "backup_onboarding_2_description": "báēŖn sao cáģĨc báģ™ trÃĒn cÃĄc thiáēŋt báģ‹ khÃĄc nhau. Bao gáģ“m cÃĄc táģ‡p chính và báēŖn sao lưu cáģĨc báģ™ cáģ§a cÃĄc táģ‡p Ä‘Ãŗ.", + "backup_onboarding_3_description": "táģ•ng sáģ‘ báēŖn sao dáģ¯ liáģ‡u cáģ§a báēĄn, bao gáģ“m cáēŖ táģ‡p gáģ‘c. Bao gáģ“m 1 báēŖn sao lưu tráģ¯ ngoài và 2 báēŖn sao lưu tráģ¯ cáģĨc báģ™.", + "backup_onboarding_description": "Chiáēŋn thuáē­t sao lưu 3-2-1 đưáģŖc đáģ xuáēĨt đáģƒ báēŖo váģ‡ dáģ¯ liáģ‡u cáģ§a báēĄn. BáēĄn nÃĒn lưu giáģ¯ báēŖn sao áēŖnh/video Ä‘ÃŖ táēŖi lÃĒn cÅŠng như cÆĄ sáģŸ dáģ¯ liáģ‡u Immich đáģƒ cÃŗ giáēŖi phÃĄp sao lưu toàn diáģ‡n.", "backup_onboarding_footer": "Đáģƒ biáēŋt thÃĒm thông tin váģ sao lưu Immich, hÃŖy xem hưáģ›ng dáēĢn.", "backup_onboarding_parts_title": "PhÆ°ÆĄng phÃĄp sao lưu 3-2-1 bao gáģ“m:", "backup_onboarding_title": "Sao lưu", "backup_settings": "Cài đáēˇt sao lưu cÆĄ sáģŸ dáģ¯ liáģ‡u", "backup_settings_description": "QuáēŖn lÃŊ cài đáēˇt sao lưu CSDL.", - "cleared_jobs": "ÄÃŖ xoÃĄ cÃĄc tÃĄc váģĨ: {job}", - "config_set_by_file": "CáēĨu hÃŦnh hiáģ‡n táēĄi đang đưáģŖc đáēˇt báģŸi máģ™t táē­p tin cáēĨu hÃŦnh", - "confirm_delete_library": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n xÃŗa thư viáģ‡n {library} không?", - "confirm_delete_library_assets": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n xÃŗa thư viáģ‡n này không? Thao tÃĄc này sáēŊ xÃŗa {count, plural, one {# áēŖnh} other {táēĨt cáēŖ # áēŖnh}} cÃŗ trong Immich và không tháģƒ hoàn tÃĄc. CÃĄc táē­p tin sáēŊ váēĢn cÃ˛n trÃĒn áģ• Ä‘ÄŠa.", + "cleared_jobs": "ÄÃŖ xÃŗa cÃĄc tÃĄc váģĨ: {job}", + "config_set_by_file": "CáēĨu hÃŦnh hiáģ‡n táēĄi đang đưáģŖc đáēˇt báģŸi máģ™t táģ‡p cáēĨu hÃŦnh", + "confirm_delete_library": "BáēĄn cÃŗ cháē¯c muáģ‘n xÃŗa thư viáģ‡n {library}?", + "confirm_delete_library_assets": "BáēĄn cÃŗ cháē¯c muáģ‘n xÃŗa thư viáģ‡n này? Thao tÃĄc này sáēŊ xÃŗa {count, plural, one {# táģ‡p} other {táēĨt cáēŖ # táģ‡p}} kháģi Immich và không tháģƒ hoàn tÃĄc. CÃĄc táģ‡p sáēŊ váēĢn cÃ˛n trÃĒn áģ• Ä‘ÄŠa.", "confirm_email_below": "Đáģƒ xÃĄc nháē­n, nháē­p \"{email}\" bÃĒn dưáģ›i", - "confirm_reprocess_all_faces": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n xáģ­ lÃŊ láēĄi táēĨt cáēŖ cÃĄc khuôn máēˇt? Thao tÃĄc này sáēŊ xoÃĄ tÃĒn ngưáģi Ä‘ÃŖ đưáģŖc gÃĄn.", - "confirm_user_password_reset": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n đáēˇt láēĄi máē­t kháēŠu cáģ§a {user}?", - "confirm_user_pin_code_reset": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n đáēˇt láēĄi mÃŖ PIN cáģ§a {user} không?", + "confirm_reprocess_all_faces": "BáēĄn cÃŗ cháē¯c muáģ‘n xáģ­ lÃŊ láēĄi táēĨt cáēŖ khuôn máēˇt? Thao tÃĄc này sáēŊ xÃŗa tÃĒn ngưáģi Ä‘ÃŖ đưáģŖc gÃĄn.", + "confirm_user_password_reset": "BáēĄn cÃŗ cháē¯c muáģ‘n đáēˇt láēĄi máē­t kháēŠu cáģ§a {user}?", + "confirm_user_pin_code_reset": "BáēĄn cÃŗ cháē¯c muáģ‘n đáēˇt láēĄi mÃŖ PIN cáģ§a {user}?", + "copy_config_to_clipboard_description": "Sao chÊp cáēĨu hÃŦnh háģ‡ tháģ‘ng hiáģ‡n táēĄi dưáģ›i dáēĄng đáģ‘i tưáģŖng JSON vào báģ™ nháģ› táēĄm", "create_job": "TáēĄo tÃĄc váģĨ", "cron_expression": "Biáģƒu tháģŠc Cron", "cron_expression_description": "Thiáēŋt láē­p khoáēŖng tháģi gian đáģƒ quÊt báēąng biáģƒu tháģŠc cron. Tham kháēŖo Crontab Guru đáģƒ biáēŋt thÃĒm thông tin", "cron_expression_presets": "MáēĢu biáģƒu tháģŠc Cron", - "disable_login": "Vô hiáģ‡u hoÃĄ đăng nháē­p", + "disable_login": "Vô hiáģ‡u hÃŗa đăng nháē­p", "duplicate_detection_job_description": "CháēĄy háģc mÃĄy đáģƒ phÃĄt hiáģ‡n cÃĄc hÃŦnh áēŖnh giáģ‘ng nhau. Dáģąa vào TÃŦm kiáēŋm Thông Minh", - "exclusion_pattern_description": "Quy táē¯c loáēĄi tráģĢ cho báēĄn báģ qua cÃĄc táē­p tin và thư máģĨc khi quÊt thư viáģ‡n cáģ§a báēĄn. Điáģu này háģ¯u ích náēŋu báēĄn cÃŗ cÃĄc thư máģĨc cháģŠa táē­p tin báēĄn không muáģ‘n nháē­p, cháēŗng háēĄn như cÃĄc táē­p tin RAW.", - "external_library_management": "QuáēŖn lÃŊ thư viáģ‡n bÃĒn ngoài", - "face_detection": "PhÃĄt hiáģ‡n khuôn máēˇt", - "face_detection_description": "Sáģ­ dáģĨng háģc mÃĄy đáģƒ nháē­n dáēĄng khuôn máēˇt trong áēŖnh. Đáģ‘i váģ›i video, sáēŊ sáģ­ dáģĨng hÃŦnh áēŖnh thu nháģ. \"Làm Máģ›i\" sáēŊ xáģ­ lÃŊ láēĄi táēĨt cáēŖ cÃĄc hÃŦnh. \"Xáģ­ LÃŊ LáēĄi\" sáēŊ xoÃĄ háēŋt táēĨt cáēŖ dáģ¯ liáģ‡u khuôn máēˇt và nháē­n dáēĄng láēĄi. \"CÃ˛n Thiáēŋu\" sáēŊ xáģ­ lÃŊ cÃĄc áēŖnh cÃ˛n thiáēŋu. CÃĄc khuôn máēˇt đưáģŖc phÃĄt hiáģ‡n sáēŊ đưáģŖc xáģ­ lÃŊ báģŸi tÃĄc váģĨ Nháē­n DáēĄng Khuôn Máēˇt đáģƒ nhÃŗm chÃēng vào nháģ¯ng ngưáģi Ä‘ÃŖ cÃŗ hoáēˇc ngưáģi máģ›i.", - "facial_recognition_job_description": "NhÃŗm cÃĄc khuôn máēˇt Ä‘ÃŖ phÃĄt hiáģ‡n thành ngưáģi. Bưáģ›c này đưáģŖc tháģąc hiáģ‡n sau khi tÃĄc váģĨ PhÃĄt hiáģ‡n Khuôn máēˇt hoàn táēĨt. \"Xáģ­ LÃŊ LáēĄi\" sáēŊ nhÃŗm láēĄi táēĨt cáēŖ cÃĄc khuôn máēˇt. \"CÃ˛n Thiáēŋu\" sáēŊ xáģ­ lÃŊ cÃĄc khuôn máēˇt chưa cÃŗ gÃĄn váģ›i ngưáģi nào.", + "exclusion_pattern_description": "Quy táē¯c loáēĄi tráģĢ dÚng đáģƒ báģ qua cÃĄc táģ‡p và thư máģĨc khi quÊt thư viáģ‡n cáģ§a báēĄn. Điáģu này háģ¯u ích náēŋu báēĄn cÃŗ cÃĄc thư máģĨc cháģŠa táģ‡p báēĄn không muáģ‘n nháē­p, cháēŗng háēĄn như cÃĄc táģ‡p RAW.", + "export_config_as_json_description": "TáēŖi xuáģ‘ng cáēĨu hÃŦnh háģ‡ tháģ‘ng hiáģ‡n táēĄi dưáģ›i dáēĄng táģ‡p JSON", + "external_libraries_page_description": "Trang thư viáģ‡n bÃĒn ngoài cáģ§a quáēŖn tráģ‹ viÃĒn", + "face_detection": "Nháē­n diáģ‡n khuôn máēˇt", + "face_detection_description": "Sáģ­ dáģĨng háģc mÃĄy đáģƒ nháē­n diáģ‡n khuôn máēˇt trong áēŖnh. Đáģ‘i váģ›i video, sáēŊ sáģ­ dáģĨng áēŖnh thu nháģ. \"Làm máģ›i\" sáēŊ xáģ­ lÃŊ láēĄi táēĨt cáēŖ táģ‡p. \"Đáēˇt láēĄi\" sáēŊ xÃŗa háēŋt táēĨt cáēŖ dáģ¯ liáģ‡u khuôn máēˇt và nháē­n dáēĄng láēĄi. \"CÃ˛n thiáēŋu\" sáēŊ xáģ­ lÃŊ cÃĄc áēŖnh cÃ˛n thiáēŋu. CÃĄc khuôn máēˇt đưáģŖc phÃĄt hiáģ‡n sáēŊ đưáģŖc xáģ­ lÃŊ báģŸi tÃĄc váģĨ Nháē­n diáģ‡n khuôn máēˇt đáģƒ nhÃŗm chÃēng vào nháģ¯ng ngưáģi Ä‘ÃŖ cÃŗ hoáēˇc ngưáģi máģ›i.", + "facial_recognition_job_description": "Xáēŋp nhÃŗm nháģ¯ng khuôn máēˇt Ä‘ÃŖ nháē­n diáģ‡n thành ngưáģi. Bưáģ›c này đưáģŖc tháģąc hiáģ‡n sau khi tÃĄc váģĨ Nháē­n diáģ‡n khuôn máēˇt hoàn táēĨt. \"Đáēˇt láēĄi\" sáēŊ xáēŋp nhÃŗm láēĄi táēĨt cáēŖ khuôn máēˇt. \"CÃ˛n thiáēŋu\" sáēŊ xáģ­ lÃŊ cÃĄc khuôn máēˇt chưa gÃĄn váģ›i ngưáģi nào.", "failed_job_command": "Láģ‡nh {command} không tháģąc hiáģ‡n đưáģŖc tÃĄc váģĨ: {job}", - "force_delete_user_warning": "CáēĸNH BÁO: Thao tÃĄc này sáēŊ ngay láē­p táģŠc xoÃĄ ngưáģi dÚng và táēĨt cáēŖ áēŖnh. Hành đáģ™ng này không tháģƒ hoàn tÃĄc và cÃĄc táē­p tin không tháģƒ khôi pháģĨc.", + "force_delete_user_warning": "CáēĸNH BÁO: Thao tÃĄc này sáēŊ ngay láē­p táģŠc xÃŗa ngưáģi dÚng và táēĨt cáēŖ áēŖnh. Điáģu không tháģƒ hoàn tÃĄc và cÃĄc táģ‡p không tháģƒ khôi pháģĨc.", "image_format": "Đáģ‹nh dáēĄng", "image_format_description": "Đáģ‹nh dáēĄng WebP dung lưáģŖng nháģ hÆĄn JPEG, nhưng mÃŖ hÃŗa cháē­m hÆĄn.", "image_fullsize_description": "áēĸnh kích thưáģ›c đáēŠy đáģ§ váģ›i thông tin metadata báģ‹ loáēĄi báģ, đưáģŖc dÚng khi phÃŗng to", "image_fullsize_enabled": "Cho phÊp sinh áēŖnh đáē§y đáģ§ kích thưáģ›c", - "image_fullsize_enabled_description": "Sinh áēŖnh đáē§y đáģ§ kích thưáģ›c cho cÃĄc đáģ‹nh dáēĄng không thÃĸn thiáģ‡n váģ›i web. Khi tÚy cháģn \"Ưu tiÃĒn xem trưáģ›c dáēĄng nhÃēng\" đưáģŖc báē­t, viáģ‡c xem trưáģ›c dáēĄng nhÃēng dưáģŖc sáģ­ dáģĨng tráģąc tiáēŋp mà không thông viecj chueyern đáģ•i đáģ‹nh dáēĄng. Không áēŖnh hưáģŸng đáēŋn cÃĄc đáģ‹nh dáēĄng thÃĸn thiáģ‡n váģ›i web như JPEG.", - "image_fullsize_quality_description": "CháēĨt lưáģŖng áēŖnh kích thưáģ›c đáē§y đáģ§ táģĢ 1-100. Sáģ‘ láģ›n hÆĄn là áēŖnh cháēĨt lưáģŖng táģ‘t hÆĄn, nhưng không sinh ra file cÃŗ kích thưáģ›c láģ›n hÆĄn.", + "image_fullsize_enabled_description": "Sinh áēŖnh đáē§y đáģ§ kích thưáģ›c cho cÃĄc đáģ‹nh dáēĄng không thÃĸn thiáģ‡n váģ›i web. Khi tÚy cháģn \"Ưu tiÃĒn xem trưáģ›c dáēĄng nhÃēng\" đưáģŖc báē­t, viáģ‡c xem trưáģ›c dáēĄng nhÃēng dưáģŖc sáģ­ dáģĨng tráģąc tiáēŋp mà không thông viáģ‡c chuyáģƒn đáģ•i đáģ‹nh dáēĄng. Không áēŖnh hưáģŸng đáēŋn cÃĄc đáģ‹nh dáēĄng thÃĸn thiáģ‡n váģ›i web như JPEG.", + "image_fullsize_quality_description": "CháēĨt lưáģŖng áēŖnh kích thưáģ›c đáē§y đáģ§ táģĢ 1-100. Sáģ‘ láģ›n hÆĄn là áēŖnh cháēĨt lưáģŖng táģ‘t hÆĄn, nhưng sinh ra táģ‡p cÃŗ kích thưáģ›c láģ›n hÆĄn.", "image_fullsize_title": "Cài đáēˇt áēŖnh kích thưáģ›c đáē§y đáģ§", - "image_prefer_embedded_preview": "Ưu tiÃĒn áēŖnh xem trưáģ›c đi kèm", + "image_prefer_embedded_preview": "Ưu tiÃĒn áēŖnh xem trưáģ›c dáēĄng nhÃēng", "image_prefer_embedded_preview_setting_description": "DÚng áēŖnh xem trưáģ›c trong áēŖnh RAW khi cÃŗ sáēĩn đáģƒ xáģ­ lÃŊ hÃŦnh áēŖnh. Điáģu này cÃŗ tháģƒ giÃēp tÃĄi táēĄo màu sáē¯c chính xÃĄc hÆĄn cho máģ™t sáģ‘ áēŖnh, nhưng cháēĨt lưáģŖng cáģ§a áēŖnh xem trưáģ›c pháģĨ thuáģ™c vào mÃĄy áēŖnh và cÃŗ tháģƒ báģ‹ nhiáģ…u do nÊn.", "image_prefer_wide_gamut": "Ưu tiÃĒn gam màu máģŸ ráģ™ng", - "image_prefer_wide_gamut_setting_description": "Hiáģƒn tháģ‹ hÃŦnh thu nháģ áģŸ gam màu Display P3. Điáģu này giÃēp giáģ¯ màu sáē¯c ráģąc ráģĄ cáģ§a nháģ¯ng hÃŦnh áēŖnh cÃŗ gam màu ráģ™ng, nhưng hÃŦnh áēŖnh cÃŗ tháģƒ trông khÃĄc trÃĒn cÃĄc thiáēŋt báģ‹ cÅŠ và trÃŦnh duyáģ‡t cÅŠ. HÃŦnh áēŖnh sRGB đưáģŖc giáģ¯ nguyÃĒn đáģƒ trÃĄnh thay đáģ•i màu sáē¯c.", - "image_preview_description": "HÃŦnh áēŖnh kích thưáģ›c trung bÃŦnh Ä‘ÃŖ loáēĄi báģ metadata, đưáģŖc sáģ­ dáģĨng khi xem máģ™t hÃŦnh duy nháēĨt và cho háģc mÃĄy", - "image_preview_quality_description": "CháēĨt lưáģŖng xem trưáģ›c táģĢ 1-100. Càng cao càng táģ‘t, nhưng sáēŊ táēĄo ra cÃĄc táē­p tin láģ›n hÆĄn cÃŗ tháģƒ làm giáēŖm kháēŖ năng pháēŖn háģ“i cáģ§a áģŠng dáģĨng. Sáģ­ dáģĨng giÃĄ tráģ‹ tháēĨp cÃŗ tháģƒ áēŖnh hưáģŸng đáēŋn cháēĨt lưáģŖng tÃĄc váģĨ háģc mÃĄy.", + "image_prefer_wide_gamut_setting_description": "DÚng gam màu Display P3 đáģƒ hiáģƒn tháģ‹ áēŖnh thu nháģ. Điáģu này giÃēp giáģ¯ màu sáē¯c ráģąc ráģĄ cáģ§a nháģ¯ng hÃŦnh áēŖnh cÃŗ gam màu ráģ™ng, nhưng áēŖnh cÃŗ tháģƒ trông khÃĄc trÃĒn cÃĄc thiáēŋt báģ‹ và trÃŦnh duyáģ‡t cÅŠ. áēĸnh sRGB đưáģŖc giáģ¯ nguyÃĒn đáģƒ trÃĄnh thay đáģ•i màu sáē¯c.", + "image_preview_description": "áēĸnh kích thưáģ›c trung bÃŦnh Ä‘ÃŖ loáēĄi báģ metadata, đưáģŖc sáģ­ dáģĨng khi xem máģ™t táģ‡p duy nháēĨt và cho háģc mÃĄy", + "image_preview_quality_description": "CháēĨt lưáģŖng xem trưáģ›c táģĢ 1-100. Càng cao càng táģ‘t, nhưng sáēŊ táēĄo ra cÃĄc táģ‡p láģ›n cÃŗ tháģƒ làm giáēŖm kháēŖ năng pháēŖn háģ“i cáģ§a app. Sáģ­ dáģĨng giÃĄ tráģ‹ tháēĨp cÃŗ tháģƒ áēŖnh hưáģŸng đáēŋn cháēĨt lưáģŖng tÃĄc váģĨ háģc mÃĄy.", "image_preview_title": "Cài đáēˇt Xem trưáģ›c", "image_quality": "CháēĨt lưáģŖng", "image_resolution": "Đáģ™ phÃĸn giáēŖi", - "image_resolution_description": "Đáģ™ phÃĸn giáēŖi cao hÆĄn sáēŊ rÃĩ nÊt hÆĄn nhưng táģ‘n nhiáģu tháģi gian hÆĄn đáģƒ mÃŖ hÃŗa, kích thưáģ›c táē­p tin láģ›n hÆĄn và cÃŗ tháģƒ làm giáēŖm kháēŖ năng pháēŖn háģ“i cáģ§a áģŠng dáģĨng.", - "image_settings": "HÃŦnh áēŖnh", - "image_settings_description": "QuáēŖn lÃŊ cháēĨt lưáģŖng và đáģ™ phÃĸn giáēŖi cáģ§a hÃŦnh áēŖnh đưáģŖc táēĄo", - "image_thumbnail_description": "HÃŦnh thu nháģ kích thưáģ›c nháģ Ä‘ÃŖ loáēĄi báģ metadata, dÚng khi xem nhiáģu áēŖnh cÚng lÃēc, ví dáģĨ như xem DÃ˛ng Tháģi gian chính", - "image_thumbnail_quality_description": "CháēĨt lưáģŖng hÃŦnh thu nháģ táģĢ 1-100. Càng cao càng táģ‘t, nhưng sáēŊ táēĄo ra cÃĄc táē­p tin láģ›n hÆĄn cÃŗ tháģƒ làm giáēŖm kháēŖ năng pháēŖn háģ“i cáģ§a áģŠng dáģĨng.", - "image_thumbnail_title": "Cài đáēˇt hÃŦnh thu nháģ", + "image_resolution_description": "Đáģ™ phÃĸn giáēŖi cao hÆĄn sáēŊ rÃĩ nÊt hÆĄn nhưng táģ‘n nhiáģu tháģi gian đáģƒ mÃŖ hÃŗa, kích cáģĄ táģ‡p láģ›n hÆĄn và cÃŗ tháģƒ làm giáēŖm kháēŖ năng pháēŖn háģ“i cáģ§a app.", + "image_settings": "áēĸnh", + "image_settings_description": "QuáēŖn lÃŊ cháēĨt lưáģŖng và đáģ™ phÃĸn giáēŖi cáģ§a áēŖnh đưáģŖc táēĄo", + "image_thumbnail_description": "áēĸnh thu nháģ kích thưáģ›c nháģ Ä‘ÃŖ loáēĄi báģ metadata, dÚng khi xem nhiáģu áēŖnh cÚng lÃēc, ví dáģĨ như DÃ˛ng tháģi gian", + "image_thumbnail_quality_description": "CháēĨt lưáģŖng áēŖnh thu nháģ táģĢ 1-100. Càng cao càng táģ‘t, nhưng sáēŊ táēĄo ra cÃĄc táģ‡p láģ›n hÆĄn cÃŗ tháģƒ làm giáēŖm kháēŖ năng pháēŖn háģ“i cáģ§a app.", + "image_thumbnail_title": "Cài đáēˇt áēĸnh thu nháģ", + "import_config_from_json_description": "Nháē­p cáēĨu hÃŦnh háģ‡ tháģ‘ng báēąng cÃĄch táēŖi lÃĒn táģ‡p cáēĨu hÃŦnh JSON", "job_concurrency": "{job} cháēĄy đáģ“ng tháģi", "job_created": "TÃĄc váģĨ Ä‘ÃŖ đưáģŖc táēĄo", "job_not_concurrency_safe": "TÃĄc váģĨ này không an toàn đáģƒ cháēĄy đáģ“ng tháģi.", "job_settings": "TÃĄc váģĨ", "job_settings_description": "QuáēŖn lÃŊ sáģ‘ lưáģŖng tÃĄc váģĨ cháēĄy đáģ“ng tháģi", - "job_status": "TráēĄng thÃĄi tÃĄc váģĨ", - "jobs_delayed": "{jobCount, plural, other {# tÃĄc váģĨ báģ‹ hoÃŖn láēĄi}}", - "jobs_failed": "{jobCount, plural, other {# tÃĄc váģĨ báģ‹ tháēĨt báēĄi}}", + "jobs_delayed": "{jobCount, plural, other {# báģ‹ hoÃŖn láēĄi}}", + "jobs_failed": "{jobCount, plural, other {# tháēĨt báēĄi}}", + "jobs_over_time": "TÃĄc váģĨ quÃĄ tháģi gian", "library_created": "ÄÃŖ táēĄo thư viáģ‡n: {library}", - "library_deleted": "Thư viáģ‡n Ä‘ÃŖ báģ‹ xoÃĄ", + "library_deleted": "Thư viáģ‡n Ä‘ÃŖ báģ‹ xÃŗa", + "library_details": "Chi tiáēŋt thư viáģ‡n", + "library_folder_description": "Cháģn thư máģĨc đáģƒ nháē­p. Thư máģĨc này và cáēŖ cÃĄc thư máģĨc con sáēŊ đưáģŖc quÊt tÃŦm áēŖnh và video.", + "library_remove_exclusion_pattern_prompt": "BáēĄn cÃŗ cháē¯c muáģ‘n xÃŗa máēĢu loáēĄi tráģĢ này?", + "library_remove_folder_prompt": "BáēĄn cÃŗ cháē¯c muáģ‘n gáģĄ thư máģĨc nháē­p này?", "library_scanning": "QuÊt đáģ‹nh káģŗ", "library_scanning_description": "CáēĨu hÃŦnh quÊt thư viáģ‡n đáģ‹nh káģŗ", "library_scanning_enable_description": "Báē­t quÊt thư viáģ‡n đáģ‹nh káģŗ", "library_settings": "Thư viáģ‡n bÃĒn ngoài", "library_settings_description": "QuáēŖn lÃŊ cài đáēˇt thư viáģ‡n bÃĒn ngoài", "library_tasks_description": "QuÊt thư viáģ‡n ngoài đáģƒ tÃŦm áēŖnh máģ›i thÃĒm hoáēˇc báģ‹ thay đáģ•i", - "library_watching_enable_description": "Táģą Ä‘áģ™ng cáē­p nháē­t cÃĄc táē­p tin báģ‹ thay đáģ•i trong thư viáģ‡n bÃĒn ngoài", + "library_updated": "ÄÃŖ cáē­p nháē­t thư viáģ‡n", + "library_watching_enable_description": "Táģą Ä‘áģ™ng cáē­p nháē­t cÃĄc táģ‡p báģ‹ thay đáģ•i trong thư viáģ‡n bÃĒn ngoài", "library_watching_settings": "Theo dÃĩi thư viáģ‡n (THáģŦ NGHIáģ†M)", - "library_watching_settings_description": "Táģą Ä‘áģ™ng cáē­p nháē­t khi cÃĄc táē­p tin báģ‹ thay đáģ•i", - "logging_enable_description": "Báē­t ghi nháē­t kÃŊ", - "logging_level_description": "Khi đưáģŖc báē­t, thiáēŋt láē­p máģŠc ghi nháē­t kÃŊ.", - "logging_settings": "Ghi nháē­t kÃŊ", + "library_watching_settings_description": "Táģą Ä‘áģ™ng cáē­p nháē­t khi cÃĄc táģ‡p báģ‹ thay đáģ•i", + "logging_enable_description": "Báē­t ghi log", + "logging_level_description": "Khi đưáģŖc báē­t, thiáēŋt láē­p máģŠc ghi log.", + "logging_settings": "Ghi log", + "machine_learning_availability_checks": "Kiáģƒm tra kháēŖ dáģĨng", "machine_learning_availability_checks_description": "Táģą Ä‘áģ™ng phÃĄt hiáģ‡n và ưu tiÃĒn mÃĄy cháģ§ háģc mÃĄy kháēŖ dáģĨng", + "machine_learning_availability_checks_enabled": "Báē­t kiáģƒm tra tính kháēŖ dáģĨng", + "machine_learning_availability_checks_interval": "Kiáģƒm tra khoáēŖng tháģi gian", + "machine_learning_availability_checks_interval_description": "KhoáēŖng tháģi gian tính báēąng mili giÃĸy giáģ¯a cÃĄc láē§n kiáģƒm tra tính kháēŖ dáģĨng", + "machine_learning_availability_checks_timeout": "Tháģi gian cháģ pháēŖn háģ“i", + "machine_learning_availability_checks_timeout_description": "Tháģi gian cháģ tính báēąng mili giÃĸy đáģƒ kiáģƒm tra tính kháēŖ dáģĨng", "machine_learning_clip_model": "Mô hÃŦnh CLIP", - "machine_learning_clip_model_description": "TÃĒn cáģ§a mô hÃŦnh CLIP đưáģŖc liáģ‡t kÃĒ táēĄi đÃĸy. BáēĄn cáē§n cháēĄy láēĄi tÃĄc váģĨ \"TÃŦm kiáēŋm thông minh\" cho táēĨt cáēŖ hÃŦnh áēŖnh sau khi thay đáģ•i mô hÃŦnh.", - "machine_learning_duplicate_detection": "PhÃĄt hiáģ‡n TrÚng láēˇp", - "machine_learning_duplicate_detection_enabled": "Báē­t phÃĄt hiáģ‡n áēŖnh trÚng láēˇp", + "machine_learning_clip_model_description": "TÃĒn cáģ§a mô hÃŦnh CLIP đưáģŖc liáģ‡t kÃĒ táēĄi đÃĸy. BáēĄn cáē§n cháēĄy láēĄi tÃĄc váģĨ \"TÃŦm kiáēŋm thông minh\" cho táēĨt cáēŖ áēŖnh sau khi thay đáģ•i mô hÃŦnh.", + "machine_learning_duplicate_detection": "TÃŦm trÚng láēˇp", + "machine_learning_duplicate_detection_enabled": "Báē­t tÃŦm áēŖnh trÚng láēˇp", "machine_learning_duplicate_detection_enabled_description": "Náēŋu báģ‹ táē¯t, cÃĄc áēŖnh trÚng láēˇp giáģ‘ng háģ‡t nhau váēĢn sáēŊ báģ‹ loáēĄi báģ.", "machine_learning_duplicate_detection_setting_description": "Sáģ­ dáģĨng vector nhÃēng CLIP đáģƒ tÃŦm kiáēŋm áēŖnh trÚng láēˇp", "machine_learning_enabled": "Báē­t háģc mÃĄy", - "machine_learning_enabled_description": "Náēŋu báģ‹ táē¯t, táēĨt cáēŖ cÃĄc tính năng và cài đáēˇt háģc mÃĄy sáēŊ báģ‹ loáēĄi báģ.", - "machine_learning_facial_recognition": "Nháē­n dáēĄng Khuôn máēˇt", - "machine_learning_facial_recognition_description": "PhÃĄt hiáģ‡n, nháē­n dáēĄng và nhÃŗm cÃĄc khuôn máēˇt trong áēŖnh", + "machine_learning_enabled_description": "Náēŋu báģ‹ táē¯t, táēĨt cáēŖ tính năng và cài đáēˇt háģc mÃĄy sáēŊ báģ‹ loáēĄi báģ.", + "machine_learning_facial_recognition": "Nháē­n diáģ‡n khuôn máēˇt", + "machine_learning_facial_recognition_description": "PhÃĄt hiáģ‡n, nháē­n diáģ‡n và nhÃŗm cÃĄc khuôn máēˇt trong áēŖnh", "machine_learning_facial_recognition_model": "Mô hÃŦnh nháē­n dáēĄng khuôn máēˇt", - "machine_learning_facial_recognition_model_description": "CÃĄc mô hÃŦnh đưáģŖc liáģ‡t kÃĒ theo tháģŠ táģą kích thưáģ›c giáēŖm dáē§n. Mô hÃŦnh càng láģ›n, káēŋt quáēŖ càng chính xÃĄc nhưng sáēŊ cháēĄy cháē­m và táģ‘n nhiáģu báģ™ nháģ› hÆĄn. Lưu ÃŊ ráēąng sau khi thay đáģ•i mô hÃŦnh, báēĄn cáē§n cháēĄy láēĄi tÃĄc váģĨ \"PhÃĄt hiáģ‡n Khuôn máēˇt\" cho táēĨt cáēŖ hÃŦnh áēŖnh.", - "machine_learning_facial_recognition_setting": "Báē­t nháē­n dáēĄng khuôn máēˇt", - "machine_learning_facial_recognition_setting_description": "Náēŋu tính năng này báģ‹ táē¯t, hÃŦnh áēŖnh sáēŊ không đưáģŖc mÃŖ hÃŗa đáģƒ nháē­n dáēĄng khuôn máēˇt và sáēŊ không xuáēĨt hiáģ‡n trong máģĨc Máģi ngưáģi trÃĒn trang KhÃĄm phÃĄ.", + "machine_learning_facial_recognition_model_description": "CÃĄc mô hÃŦnh đưáģŖc liáģ‡t kÃĒ theo tháģŠ táģą kích thưáģ›c giáēŖm dáē§n. Mô hÃŦnh càng láģ›n, káēŋt quáēŖ càng chính xÃĄc nhưng sáēŊ cháēĄy cháē­m và táģ‘n nhiáģu báģ™ nháģ› hÆĄn. Lưu ÃŊ ráēąng sau khi thay đáģ•i mô hÃŦnh, báēĄn cáē§n cháēĄy láēĄi tÃĄc váģĨ \"Nháē­n diáģ‡n khuôn máēˇt\" cho táēĨt cáēŖ áēŖnh.", + "machine_learning_facial_recognition_setting": "Báē­t nháē­n diáģ‡n khuôn máēˇt", + "machine_learning_facial_recognition_setting_description": "Náēŋu báģ‹ táē¯t, áēŖnh sáēŊ không đưáģŖc mÃŖ hÃŗa đáģƒ nháē­n diáģ‡n khuôn máēˇt và sáēŊ không xuáēĨt hiáģ‡n trong máģĨc Máģi ngưáģi trÃĒn trang KhÃĄm phÃĄ.", "machine_learning_max_detection_distance": "KhoáēŖng cÃĄch phÃĄt hiáģ‡n táģ‘i đa", "machine_learning_max_detection_distance_description": "KhoáēŖng cÃĄch táģ‘i đa đáģƒ hai áēŖnh đưáģŖc coi là trÚng láēˇp, dao đáģ™ng táģĢ 0,001 đáēŋn 0,1. GiÃĄ tráģ‹ càng cao sáēŊ phÃĄt hiáģ‡n đưáģŖc nhiáģu áēŖnh trÚng láēˇp hÆĄn, nhưng cÃŗ tháģƒ bao gáģ“m cáēŖ áēŖnh không tháģąc sáģą giáģ‘ng nhau.", - "machine_learning_max_recognition_distance": "KhoáēŖng cÃĄch nháē­n dáēĄng táģ‘i đa", + "machine_learning_max_recognition_distance": "KhoáēŖng cÃĄch nháē­n diáģ‡n táģ‘i đa", "machine_learning_max_recognition_distance_description": "KhoáēŖng cÃĄch táģ‘i đa đáģƒ hai khuôn máēˇt đưáģŖc coi là cÚng máģ™t ngưáģi, dao đáģ™ng táģĢ 0-2. GiáēŖm giÃĄ tráģ‹ này cÃŗ tháģƒ ngăn cháēˇn viáģ‡c gÃĄn nhÃŖn hai ngưáģi cÚng máģ™t ngưáģi, trong khi tăng giÃĄ tráģ‹ này cÃŗ tháģƒ ngăn cháēˇn viáģ‡c gÃĄn nhÃŖn cÚng máģ™t ngưáģi là hai ngưáģi khÃĄc nhau. Lưu ÃŊ ráēąng viáģ‡c háģŖp nháēĨt hai ngưáģi láēĄi váģ›i nhau dáģ… dàng hÆĄn là tÃĄch máģ™t ngưáģi thành hai, vÃŦ váē­y hÃŖy ưu tiÃĒn giÃĄ tráģ‹ tháēĨp khi cÃŗ tháģƒ.", "machine_learning_min_detection_score": "MáģŠc phÃĄt hiáģ‡n táģ‘i thiáģƒu", "machine_learning_min_detection_score_description": "MáģŠc điáģƒm tin cáē­y táģ‘i thiáģƒu đáģƒ phÃĄt hiáģ‡n khuôn máēˇt, táģĢ 0 đáēŋn 1. GiÃĄ tráģ‹ càng tháēĨp, nhiáģu khuôn máēˇt sáēŊ đưáģŖc phÃĄt hiáģ‡n nhưng cÃŗ tháģƒ tăng kháēŖ năng phÃĄt hiáģ‡n sai.", - "machine_learning_min_recognized_faces": "Sáģ‘ khuôn máēˇt táģ‘i thiáģƒu đáģƒ nháē­n dáēĄng", - "machine_learning_min_recognized_faces_description": "Sáģ‘ khuôn máēˇt táģ‘i thiáģƒu cáē§n nháē­n dáēĄng đáģƒ táēĄo thành máģ™t ngưáģi. Tăng sáģ‘ lưáģŖng này sáēŊ làm cho Nháē­n dáēĄng khuôn máēˇt chính xÃĄc hÆĄn, nhưng sáēŊ tăng kháēŖ năng máģ™t khuôn máēˇt không đưáģŖc gÃĄn cho ngưáģi phÚ háģŖp.", + "machine_learning_min_recognized_faces": "Sáģ‘ khuôn máēˇt táģ‘i thiáģƒu đáģƒ nháē­n diáģ‡n", + "machine_learning_min_recognized_faces_description": "Sáģ‘ khuôn máēˇt táģ‘i thiáģƒu cáē§n nháē­n dáēĄng đáģƒ táēĄo thành máģ™t ngưáģi. Tăng sáģ‘ lưáģŖng này sáēŊ làm cho Nháē­n diáģ‡nkhuôn máēˇt chính xÃĄc hÆĄn, nhưng sáēŊ tăng kháēŖ năng máģ™t khuôn máēˇt không đưáģŖc gÃĄn cho ngưáģi phÚ háģŖp.", + "machine_learning_ocr": "OCR", "machine_learning_ocr_description": "DÚng háģc mÃĄy đáģƒ nháē­n diáģ‡n cháģ¯ trong áēŖnh", "machine_learning_ocr_enabled": "Báē­t OCR", "machine_learning_ocr_enabled_description": "Náēŋu táē¯t, cháģ¯ viáēŋt trong áēŖnh sáēŊ không đưáģŖc nháē­n diáģ‡n.", "machine_learning_ocr_max_resolution": "Đáģ™ phÃĸn giáēŖi táģ‘i đa", + "machine_learning_ocr_max_resolution_description": "BáēŖn xem trưáģ›c cÃŗ đáģ™ phÃĸn giáēŖi cao hÆĄn máģŠc này sáēŊ đưáģŖc thay đáģ•i kích thưáģ›c mà váēĢn giáģ¯ nguyÃĒn táģˇ láģ‡ khung hÃŦnh. GiÃĄ tráģ‹ cao hÆĄn sáēŊ chính xÃĄc hÆĄn, nhưng máēĨt nhiáģu tháģi gian xáģ­ lÃŊ hÆĄn và sáģ­ dáģĨng nhiáģu báģ™ nháģ› hÆĄn.", + "machine_learning_ocr_min_detection_score": "Điáģƒm phÃĄt hiáģ‡n táģ‘i thiáģƒu", "machine_learning_ocr_min_detection_score_description": "MáģŠc điáģƒm tin cáē­y táģ‘i thiáģƒu đáģƒ phÃĄt hiáģ‡n cháģ¯ viáēŋt, táģĢ 0 đáēŋn 1. GiÃĄ tráģ‹ càng tháēĨp, càng nhiáģu cháģ¯ viáēŋt sáēŊ đưáģŖc phÃĄt hiáģ‡n nhưng cÃŗ tháģƒ tăng kháēŖ năng phÃĄt hiáģ‡n sai (dÆ°ÆĄng tính giáēŖ).", + "machine_learning_ocr_min_recognition_score": "Điáģƒm nháē­n dáēĄng táģ‘i thiáģƒu", + "machine_learning_ocr_min_score_recognition_description": "Điáģƒm tin cáē­y táģ‘i thiáģƒu đáģƒ nháē­n dáēĄng văn báēŖn đưáģŖc phÃĄt hiáģ‡n là táģĢ 0-1. GiÃĄ tráģ‹ tháēĨp hÆĄn sáēŊ nháē­n dáēĄng đưáģŖc nhiáģu văn báēŖn hÆĄn nhưng cÃŗ tháģƒ dáēĢn đáēŋn káēŋt quáēŖ dÆ°ÆĄng tính giáēŖ.", "machine_learning_ocr_model": "Mô hÃŦnh OCR", + "machine_learning_ocr_model_description": "Mô hÃŦnh mÃĄy cháģ§ chính xÃĄc hÆĄn mô hÃŦnh di đáģ™ng, nhưng máēĨt nhiáģu tháģi gian xáģ­ lÃŊ hÆĄn và sáģ­ dáģĨng nhiáģu báģ™ nháģ› hÆĄn.", "machine_learning_settings": "Cài đáēˇt Háģc mÃĄy", "machine_learning_settings_description": "QuáēŖn lÃŊ cÃĄc tính năng và cài đáēˇt háģc mÃĄy", "machine_learning_smart_search": "TÃŦm kiáēŋm Thông minh", "machine_learning_smart_search_description": "TÃŦm kiáēŋm hÃŦnh áēŖnh theo ngáģ¯ cáēŖnh váģ›i CLIP", "machine_learning_smart_search_enabled": "Báē­t TÃŦm kiáēŋm Thông minh", - "machine_learning_smart_search_enabled_description": "Náēŋu táē¯t, hÃŦnh áēŖnh sáēŊ không đưáģŖc mÃŖ hoÃĄ đáģƒ tÃŦm kiáēŋm thông minh.", + "machine_learning_smart_search_enabled_description": "Náēŋu táē¯t, áēŖnh sáēŊ không đưáģŖc mÃŖ hÃŗa đáģƒ tÃŦm kiáēŋm thông minh.", "machine_learning_url_description": "Đáģ‹a cháģ‰ mÃĄy cháģ§ háģc mÃĄy. Náēŋu cÃŗ nhiáģu hÆĄn máģ™t đáģ‹a cháģ‰ Ä‘Æ°áģŖc cung cáēĨp, máģ—i mÃĄy cháģ§ sáēŊ đưáģŖc kiáģƒm tra máģ™t láē§n cho đáēŋn khi cÃŗ máģ™t mÃĄy cháģ§ tráēŖ láģi thành công, theo tháģŠ táģą táģĢ mÃĄy cháģ§ Ä‘áē§u tiÃĒn đáēŋn mÃĄy cháģ§ cuáģ‘i cÚng. MÃĄy cháģ§ không pháēŖn háģ“i sáēŊ táēĄm tháģi đưáģŖc báģ qua cho đáēŋn khi mÃĄy cháģ§ online tráģŸ láēĄi.", + "maintenance_settings": "BáēŖo trÃŦ", + "maintenance_settings_description": "Đáēˇt [immich] vào cháēŋ đáģ™ báēŖo trÃŦ.", + "maintenance_start": "Báē¯t đáē§u cháēŋ đáģ™ báēŖo trÃŦ", + "maintenance_start_error": "Không tháģƒ báē¯t đáē§u cháēŋ đáģ™ báēŖo trÃŦ.", "manage_concurrency": "QuáēŖn lÃŊ TÃĄc váģĨ", - "manage_log_settings": "QuáēŖn lÃŊ cài đáēˇt nháē­t kÃŊ", + "manage_concurrency_description": "Điáģu hưáģ›ng đáēŋn trang tÃĄc váģĨ đáģƒ quáēŖn lÃŊ tÃĄc váģĨ đáģ“ng tháģi", + "manage_log_settings": "QuáēŖn lÃŊ cài đáēˇt log", "map_dark_style": "Giao diáģ‡n táģ‘i", "map_enable_description": "Báē­t tính năng báēŖn đáģ“", "map_gps_settings": "BáēŖn đáģ“ & GPS", @@ -163,36 +195,49 @@ "map_implications": "Tính năng báēŖn đáģ“ pháģĨ thuáģ™c vào dáģ‹ch váģĨ tháēģ báēŖn đáģ“ bÃĒn ngoài (tiles.immich.cloud)", "map_light_style": "Giao diáģ‡n sÃĄng", "map_manage_reverse_geocoding_settings": "QuáēŖn lÃŊ cài đáēˇt MÃŖ hÃŗa đáģ‹a lÃŊ ngưáģŖc", - "map_reverse_geocoding": "MÃŖ hoÃĄ Đáģ‹a lÃŊ NgưáģŖc (Reverse Geocoding)", - "map_reverse_geocoding_enable_description": "Báē­t mÃŖ hoÃĄ đáģ‹a lÃŊ ngưáģŖc", - "map_reverse_geocoding_settings": "Cài đáēˇt MÃŖ hoÃĄ Đáģ‹a lÃŊ NgưáģŖc (Reverse Geocoding)", + "map_reverse_geocoding": "MÃŖ hÃŗa Đáģ‹a lÃŊ NgưáģŖc (Reverse Geocoding)", + "map_reverse_geocoding_enable_description": "Báē­t mÃŖ hÃŗa đáģ‹a lÃŊ ngưáģŖc", + "map_reverse_geocoding_settings": "Cài đáēˇt MÃŖ hÃŗa Đáģ‹a lÃŊ NgưáģŖc (Reverse Geocoding)", "map_settings": "BáēŖn đáģ“", "map_settings_description": "QuáēŖn lÃŊ cài đáēˇt báēŖn đáģ“", - "map_style_description": "Đưáģng dáēĢn URL đáēŋn táē­p tin tÚy biáēŋn báēŖn đáģ“ style.json", + "map_style_description": "URL tráģ Ä‘áēŋn táģ‡p tÚy biáēŋn báēŖn đáģ“ style.json", "memory_cleanup_job": "Dáģn dáēšp káģˇ niáģ‡m", "memory_generate_job": "TáēĄo káģˇ niáģ‡m", "metadata_extraction_job": "Trích xuáēĨt Metadata", "metadata_extraction_job_description": "Trích xuáēĨt Metadata táģĢ máģ—i áēŖnh, cháēŗng háēĄn như GPS, khuôn máēˇt và đáģ™ phÃĸn giáēŖi", "metadata_faces_import_setting": "Báē­t tính năng nháē­p khuôn máēˇt", - "metadata_faces_import_setting_description": "Nháē­p khuôn máēˇt táģĢ dáģ¯ liáģ‡u EXIF hÃŦnh áēŖnh và táē­p tin đi kèm", + "metadata_faces_import_setting_description": "Nháē­p khuôn máēˇt táģĢ dáģ¯ liáģ‡u EXIF áēŖnh và táģ‡p đi kèm", "metadata_settings": "Cài đáēˇt Metadata", "metadata_settings_description": "QuáēŖn lÃŊ cài đáēˇt Metadata", "migration_job": "Di chuyáģƒn dáģ¯ liáģ‡u", - "migration_job_description": "Di chuyáģƒn hÃŦnh thu nháģ cáģ§a cÃĄc áēŖnh và khuôn máēˇt sang cáēĨu trÃēc thư máģĨc máģ›i", + "migration_job_description": "Di chuyáģƒn áēŖnh thu nháģ cáģ§a áēŖnh và khuôn máēˇt sang cáēĨu trÃēc thư máģĨc máģ›i", "nightly_tasks_cluster_faces_setting_description": "CháēĄy nháē­n diáģ‡n khuôn máēˇt trÃĒn nháģ¯ng khuôn máēˇt máģ›i đưáģŖc phÃĄt hiáģ‡n", - "nightly_tasks_settings": "Cài đáēˇt cÃĄc nhiáģ‡m váģĨ hàng đÃĒm", - "nightly_tasks_settings_description": "QuáēŖn lÃŊ cÃĄc nhiáģ‡m váģĨ hàng đÃĒm", + "nightly_tasks_cluster_new_faces_setting": "NhÃŗm cÃĄc khuôn máēˇt máģ›i", + "nightly_tasks_database_cleanup_setting": "TÃĄc váģĨ dáģn dáēšp cÆĄ sáģŸ dáģ¯ liáģ‡u", + "nightly_tasks_database_cleanup_setting_description": "Làm sáēĄch dáģ¯ liáģ‡u cÅŠ, háēŋt háēĄn trong CSDL", + "nightly_tasks_generate_memories_setting": "TáēĄo káģˇ niáģ‡m", + "nightly_tasks_generate_memories_setting_description": "TáēĄo ra nháģ¯ng káģˇ niáģ‡m máģ›i táģĢ táģ‡p", + "nightly_tasks_missing_thumbnails_setting": "TáēĄo áēŖnh đáēĄi diáģ‡n báģ‹ thiáēŋu", + "nightly_tasks_missing_thumbnails_setting_description": "Xáēŋp hàng cÃĄc táģ‡p không cÃŗ áēŖnh thu nháģ Ä‘áģƒ táēĄo áēŖnh thu nháģ", + "nightly_tasks_settings": "Cài đáēˇt cÃĄc tÃĄc váģĨ hàng đÃĒm", + "nightly_tasks_settings_description": "QuáēŖn lÃŊ cÃĄc tÃĄc váģĨ hàng đÃĒm", + "nightly_tasks_start_time_setting": "Tháģi gian báē¯t đáē§u", + "nightly_tasks_start_time_setting_description": "Tháģi điáģƒm mÃĄy cháģ§ báē¯t đáē§u cháēĄy cÃĄc tÃĄc váģĨ ban đÃĒm", + "nightly_tasks_sync_quota_usage_setting": "Sáģ­ dáģĨng háēĄn máģŠc đáģ“ng báģ™", + "nightly_tasks_sync_quota_usage_setting_description": "Cáē­p nháē­t háēĄn máģŠc dung lưáģŖng cáģ§a ngưáģi dÚng, dáģąa trÃĒn máģŠc sáģ­ dáģĨng hiáģ‡n táēĄi", "no_paths_added": "Không cÃŗ đưáģng dáēĢn nào đưáģŖc thÃĒm vào", "no_pattern_added": "Không cÃŗ quy táē¯c nào đưáģŖc thÃĒm vào", "note_apply_storage_label_previous_assets": "Lưu ÃŊ: Đáģƒ ÃĄp dáģĨng NhÃŖn lưu tráģ¯ cho náģ™i dung Ä‘ÃŖ táēŖi lÃĒn trưáģ›c Ä‘Ãŗ, hÃŖy cháēĄy", "note_cannot_be_changed_later": "LƯU Ý: Cài đáēˇt này không tháģƒ thay đáģ•i đưáģŖc sau khi lưu!", "notification_email_from_address": "Đáģ‹a cháģ‰ email ngưáģi gáģ­i", - "notification_email_from_address_description": "Đáģ‹a cháģ‰ email cáģ§a ngưáģi gáģ­i, ví dáģĨ: \"Immich Photo Server \"", + "notification_email_from_address_description": "Đáģ‹a cháģ‰ email cáģ§a ngưáģi gáģ­i, ví dáģĨ: \"Immich Photo Server \". HÃŖy cháē¯c là báēĄn dÚng máģ™t đáģ‹a cháģ‰ mà báēĄn đưáģŖc phÊp gáģ­i email ra.", "notification_email_host_description": "Đáģ‹a cháģ‰ mÃĄy cháģ§ email (ví dáģĨ: smtp.immich.app)", - "notification_email_ignore_certificate_errors": "Báģ qua cÃĄc láģ—i cháģŠng cháģ‰", - "notification_email_ignore_certificate_errors_description": "Báģ qua láģ—i xÃĄc tháģąc cháģŠng cháģ‰ TLS (không khuyáēŋn ngháģ‹)", + "notification_email_ignore_certificate_errors": "Báģ qua láģ—i cháģŠng cháģ‰", + "notification_email_ignore_certificate_errors_description": "Báģ qua láģ—i xÃĄc tháģąc cháģŠng cháģ‰ TLS (không đáģ xuáēĨt)", "notification_email_password_description": "Máē­t kháēŠu dÚng đáģƒ xÃĄc tháģąc váģ›i mÃĄy cháģ§ email", "notification_email_port_description": "Cáģ•ng cáģ§a mÃĄy cháģ§ email (ví dáģĨ 25, 465, hoáēˇc 587)", + "notification_email_secure": "SMTPS", + "notification_email_secure_description": "DÚng SMTPS (ưu tiÃĒn SMTP hÆĄnTLS)", "notification_email_sent_test_email_button": "Gáģ­i email kiáģƒm tra và lưu", "notification_email_setting_description": "Cài đáēˇt gáģ­i thông bÃĄo qua email", "notification_email_test_email": "ÄÃŖ gáģ­i email kiáģƒm tra", @@ -206,32 +251,39 @@ "oauth_auto_launch_description": "Táģą Ä‘áģ™ng đăng nháē­p báēąng tài khoáēŖn OAuth khi báēĄn truy cáē­p trang đăng nháē­p", "oauth_auto_register": "Táģą Ä‘áģ™ng đăng kÃŊ", "oauth_auto_register_description": "Táģą Ä‘áģ™ng đăng kÃŊ ngưáģi dÚng máģ›i sau khi đăng nháē­p váģ›i OAuth", - "oauth_button_text": "Náģ™i dung văn báēŖn nÃēt báēĨm", + "oauth_button_text": "Náģ™i dung nÃēt báēĨm", "oauth_client_secret_description": "Báē¯t buáģ™c náēŋu nhà cung cáēĨp OAuth không háģ— tráģŖ PKCE (Proof Key for Code Exchange)", "oauth_enable_description": "Đăng nháē­p váģ›i OAuth", "oauth_mobile_redirect_uri": "URI chuyáģƒn hưáģ›ng trÃĒn thiáēŋt báģ‹ di đáģ™ng", "oauth_mobile_redirect_uri_override": "Ghi đè URI chuyáģƒn hưáģ›ng cho thiáēŋt báģ‹ di đáģ™ng", "oauth_mobile_redirect_uri_override_description": "Báē­t khi nhà cung cáēĨp OAuth không cho phÊp URI di đáģ™ng, như ''{callback}''", + "oauth_role_claim": "Vai trÃ˛ claim", + "oauth_role_claim_description": "Táģą Ä‘áģ™ng cáēĨp quyáģn quáēŖn tráģ‹ dáģąa trÃĒn sáģą hiáģ‡n diáģ‡n cáģ§a yÃĒu cáē§u này. YÃĒu cáē§u này cÃŗ tháģƒ cÃŗ tÃĒn là 'ngưáģi dÚng' hoáēˇc 'quáēŖn tráģ‹ viÃĒn'.", "oauth_settings": "OAuth", "oauth_settings_description": "QuáēŖn lÃŊ cài đáēˇt đăng nháē­p OAuth", "oauth_settings_more_details": "Đáģƒ biáēŋt thÃĒm chi tiáēŋt váģ tính năng này, hÃŖy tham kháēŖo tài liáģ‡u.", "oauth_storage_label_claim": "Claim cho nhÃŖn lưu tráģ¯", "oauth_storage_label_claim_description": "Táģą Ä‘áģ™ng đáēˇt nhÃŖn lưu tráģ¯ cáģ§a ngưáģi dÚng theo giÃĄ tráģ‹ cáģ§a claim này.", - "oauth_storage_quota_claim": "Claim cho háēĄn máģŠc lưu tráģ¯", + "oauth_storage_quota_claim": "Claim háēĄn máģŠc lưu tráģ¯", "oauth_storage_quota_claim_description": "Táģą Ä‘áģ™ng đáēˇt háēĄn máģŠc lưu tráģ¯ cáģ§a ngưáģi dÚng theo giÃĄ tráģ‹ cáģ§a claim này.", "oauth_storage_quota_default": "HáēĄn máģŠc lưu tráģ¯ máēˇc đáģ‹nh (GiB)", - "oauth_storage_quota_default_description": "HáēĄn máģŠc (GiB) sáēŊ đưáģŖc sáģ­ dáģĨng khi không cÃŗ yÃĒu cáē§u nào đưáģŖc cung cáēĨp (Nháē­p 0 đáģƒ háēĄn máģŠc không giáģ›i háēĄn).", + "oauth_storage_quota_default_description": "HáēĄn máģŠc (GiB) đưáģŖc dÚng khi không cung cáēĨp yÃĒu cáē§u nào.", "oauth_timeout": "Tháģi gian cháģ pháēŖn háģ“i", "oauth_timeout_description": "Đáēˇt tháģi gian cháģ pháēŖn háģ“i báēąng mili giÃĸy", + "ocr_job_description": "Sáģ­ dáģĨng háģc mÃĄy đáģƒ nháē­n dáēĄng cháģ¯ viáēŋt trong áēŖnh", "password_enable_description": "Đăng nháē­p váģ›i email và máē­t kháēŠu", "password_settings": "Máē­t kháēŠu đăng nháē­p", "password_settings_description": "QuáēŖn lÃŊ cài đáēˇt máē­t kháēŠu đăng nháē­p", - "paths_validated_successfully": "TáēĨt cáēŖ cÃĄc đưáģng dáēĢn đưáģŖc xÃĄc minh thành công", + "paths_validated_successfully": "TáēĨt cáēŖ Ä‘Æ°áģng dáēĢn đưáģŖc xÃĄc minh thành công", "person_cleanup_job": "Dáģn dáēšp ngưáģi", + "queue_details": "Chi tiáēŋt hàng đáģŖi", + "queues": "Hàng đáģŖi tÃĄc váģĨ", + "queues_page_description": "Trang hàng đáģŖi công viáģ‡c cáģ§a quáēŖn tráģ‹ viÃĒn", "quota_size_gib": "HáēĄn máģŠc (GiB)", - "refreshing_all_libraries": "Làm máģ›i táēĨt cáēŖ cÃĄc thư viáģ‡n", + "refreshing_all_libraries": "Làm máģ›i táēĨt cáēŖ thư viáģ‡n", "registration": "Đăng kÃŊ QuáēŖn tráģ‹ viÃĒn", "registration_description": "VÃŦ báēĄn là ngưáģi dÚng đáē§u tiÃĒn, báēĄn sáēŊ tráģŸ thành QuáēŖn tráģ‹ viÃĒn và cháģ‹u trÃĄch nhiáģ‡m cho viáģ‡c quáēŖn lÃŊ háģ‡ tháģ‘ng. Ngoài ra, báēĄn cÃŗ tháģƒ thÃĒm cÃĄc ngưáģi dÚng khÃĄc.", + "remove_failed_jobs": "XÃŗa cÃĄc tÃĄc váģĨ không thành công", "require_password_change_on_login": "YÃĒu cáē§u ngưáģi dÚng thay đáģ•i máē­t kháēŠu trong láē§n đăng nháē­p đáē§u tiÃĒn", "reset_settings_to_default": "Đáēˇt láēĄi cài đáēˇt váģ máēˇc đáģ‹nh", "reset_settings_to_recent_saved": "Đáēˇt láēĄi cài đáēˇt váģ cài đáēˇt trưáģ›c Ä‘Ãŗ", @@ -244,13 +296,15 @@ "server_public_users_description": "TáēĨt cáēŖ ngưáģi dÚng (tÃĒn và email) đưáģŖc liáģ‡t kÃĒ khi thÃĒm máģ™t ngưáģi dÚng vào máģ™t album đưáģŖc chia sáēģ. Khi táē¯t láģąa cháģn này, danh sÃĄch ngưáģi dÚng cháģ‰ cÃŗ tháģƒ Ä‘Æ°áģŖc tháēĨy báģŸi ngưáģi dÚng quáēŖn tráģ‹.", "server_settings": "MÃĄy cháģ§", "server_settings_description": "QuáēŖn lÃŊ cài đáēˇt mÃĄy cháģ§", + "server_stats_page_description": "Trang tháģ‘ng kÃĒ quáēŖn tráģ‹ mÃĄy cháģ§", "server_welcome_message": "Thông điáģ‡p chào máģĢng", "server_welcome_message_description": "Thông điáģ‡p chào máģĢng đưáģŖc hiáģƒn tháģ‹ trÃĒn trang đăng nháē­p.", + "settings_page_description": "Trang cài đáēˇt quáēŖn tráģ‹", "sidecar_job": "SiÃĒu dáģ¯ liáģ‡u đi kèm", - "sidecar_job_description": "TÃŦm hoáēˇc đáģ“ng báģ™ cÃĄc táē­p tin siÃĒu dáģ¯ liáģ‡u đi kèm táģĢ háģ‡ tháģ‘ng", - "slideshow_duration_description": "Sáģ‘ giÃĸy đáģƒ hiáģƒn tháģ‹ cho táģĢng áēŖnh", + "sidecar_job_description": "TÃŦm hoáēˇc đáģ“ng báģ™ cÃĄc táģ‡p siÃĒu dáģ¯ liáģ‡u đi kèm táģĢ háģ‡ tháģ‘ng", + "slideshow_duration_description": "Sáģ‘ giÃĸy hiáģƒn tháģ‹ táģĢng áēŖnh", "smart_search_job_description": "CháēĄy háģc mÃĄy trÃĒn toàn báģ™ áēŖnh đáģƒ háģ— tráģŖ tÃŦm kiáēŋm thông minh", - "storage_template_date_time_description": "Máģ‘c tháģi gian táēĄo áēŖnh đưáģŖc dÚng làm thông tin ngày giáģ", + "storage_template_date_time_description": "Máģ‘c tháģi gian táēĄo táģ‡p đưáģŖc dÚng làm thông tin ngày giáģ", "storage_template_date_time_sample": "Tháģi gian máēĢu {date}", "storage_template_enable_description": "Báē­t công cáģĨ máēĢu lưu tráģ¯", "storage_template_hash_verification_enabled": "Báē­t xÃĄc minh băm", @@ -260,13 +314,14 @@ "storage_template_migration_info": "MáēĢu lưu tráģ¯ sáēŊ chuyáģƒn táēĨt cáēŖ Ä‘áģ‹nh dáēĄng táē­p tin thành cháģ¯ thưáģng. Nháģ¯ng thay đáģ•i cáģ§a máēĢu này cháģ‰ ÃĄp dáģĨng cho cÃĄc áēŖnh máģ›i táēŖi lÃĒn. Đáģƒ ÃĄp dáģĨng máēĢu này cho cÃĄc áēŖnh Ä‘ÃŖ táēŖi lÃĒn trưáģ›c đÃĸy, hÃŖy cháēĄy {job}.", "storage_template_migration_job": "TÃĄc váģĨ di chuyáģƒn máēĢu lưu tráģ¯", "storage_template_more_details": "Cáē§n thÃĒm thông tin chi tiáēŋt váģ tính năng này, vui lÃ˛ng tham kháēŖo MáēĢu lưu tráģ¯ và cÃĄc háģ‡ quáēŖ cáģ§a nÃŗ", + "storage_template_onboarding_description_v2": "Khi đưáģŖc báē­t, tính năng này sáēŊ táģą Ä‘áģ™ng sáē¯p xáēŋp cÃĄc táģ‡p dáģąa trÃĒn máēĢu do ngưáģi dÚng xÃĄc đáģ‹nh. Đáģƒ biáēŋt thÃĒm thông tin, vui lÃ˛ng xem tài liáģ‡u.", "storage_template_path_length": "Giáģ›i háēĄn đáģ™ dài đưáģng dáēĢn xáēĨp xáģ‰: {length, number}/{limit, number}", "storage_template_settings": "MáēĢu lưu tráģ¯", - "storage_template_settings_description": "QuáēŖn lÃŊ cáēĨu trÃēc thư máģĨc và tÃĒn táē­p tin cáģ§a áēŖnh táēŖi lÃĒn", + "storage_template_settings_description": "QuáēŖn lÃŊ cáēĨu trÃēc thư máģĨc và tÃĒn táģ‡p cáģ§a áēŖnh táēŖi lÃĒn", "storage_template_user_label": "CáģĨm táģĢ {label} là NhÃŖn lưu tráģ¯ cáģ§a ngưáģi dÚng", "system_settings": "Cài đáēˇt háģ‡ tháģ‘ng", "tag_cleanup_job": "Dáģn dáēšp tháēģ", - "template_email_available_tags": "BáēĄn cÃŗ tháģƒ sáģ­ dáģĨng cÃĄc biáēŋn sau trong máēĢu cáģ§a báēĄn: {tags}", + "template_email_available_tags": "BáēĄn cÃŗ tháģƒ sáģ­ dáģĨng cÃĄc tham sáģ‘ sau trong máēĢu cáģ§a báēĄn: {tags}", "template_email_if_empty": "Náēŋu máēĢu đáģƒ tráģ‘ng, email máēˇc đáģ‹nh sáēŊ đưáģŖc sáģ­ dáģĨng.", "template_email_invite_album": "MáēĢu máģi tham gia album", "template_email_preview": "Xem trưáģ›c", @@ -278,11 +333,11 @@ "theme_custom_css_settings": "CSS tÚy cháģ‰nh", "theme_custom_css_settings_description": "Cascading Style Sheets cho phÊp tÚy cháģ‰nh thiáēŋt káēŋ cáģ§a Immich.", "theme_settings": "Cháģ§ Ä‘áģ", - "theme_settings_description": "QuáēŖn lÃŊ tÚy cháģ‰nh giao diáģ‡n web cáģ§a Immich", - "thumbnail_generation_job": "TáēĄo hÃŦnh thu nháģ", - "thumbnail_generation_job_description": "TáēĄo hÃŦnh thu nháģ láģ›n, nháģ và máģ cho máģ—i áēŖnh, cÅŠng như hÃŦnh thu nháģ cho máģ—i ngưáģi", - "transcoding_acceleration_api": "API Tăng táģ‘c", - "transcoding_acceleration_api_description": "API này sáēŊ tÆ°ÆĄng tÃĄc váģ›i thiáēŋt báģ‹ cáģ§a báēĄn đáģƒ tăng táģ‘c quÃĄ trÃŦnh chuyáģƒn mÃŖ. Cài đáēˇt này hoáēĄt đáģ™ng theo nguyÃĒn táē¯c 'cáģ‘ gáē¯ng háēŋt sáģŠc'': nÃŗ sáēŊ quay láēĄi chuyáģƒn mÃŖ pháē§n máģm náēŋu gáēˇp láģ—i. VP9 cÃŗ tháģƒ hoáēĄt đáģ™ng hoáēˇc không tÚy thuáģ™c vào pháē§n cáģŠng cáģ§a báēĄn.", + "theme_settings_description": "TÚy biáēŋn giao diáģ‡n web cáģ§a Immich", + "thumbnail_generation_job": "TáēĄo áēŖnh thu nháģ", + "thumbnail_generation_job_description": "TáēĄo áēŖnh thu nháģ láģ›n, nháģ và máģ cho máģ—i áēŖnh, cÅŠng như áēŖnh thu nháģ cho máģ—i ngưáģi", + "transcoding_acceleration_api": "API Gia táģ‘c", + "transcoding_acceleration_api_description": "API này sáēŊ tÆ°ÆĄng tÃĄc váģ›i thiáēŋt báģ‹ cáģ§a báēĄn đáģƒ gia táģ‘c quÃĄ trÃŦnh chuyáģƒn mÃŖ. Cài đáēˇt này hoáēĄt đáģ™ng theo nguyÃĒn táē¯c 'cáģ‘ gáē¯ng háēŋt sáģŠc'': nÃŗ sáēŊ quay láēĄi chuyáģƒn mÃŖ pháē§n máģm náēŋu gáēˇp láģ—i. VP9 cÃŗ tháģƒ hoáēĄt đáģ™ng hoáēˇc không tÚy thuáģ™c vào pháē§n cáģŠng cáģ§a báēĄn.", "transcoding_acceleration_nvenc": "NVENC (yÃĒu cáē§u GPU NVIDIA)", "transcoding_acceleration_qsv": "Quick Sync (yÃĒu cáē§u CPU Intel tháēŋ háģ‡ 7 hoáēˇc máģ›i hÆĄn)", "transcoding_acceleration_rkmpp": "RKMPP (cháģ‰ trÃĒn cÃĄc SOC cáģ§a Rockchip)", @@ -290,14 +345,14 @@ "transcoding_accepted_audio_codecs": "CÃĄc chuáēŠn nÊn Ãĸm thanh đưáģŖc cháēĨp nháē­n", "transcoding_accepted_audio_codecs_description": "Cháģn cÃĄc chuáēŠn nÊn Ãĸm thanh không cáē§n pháēŖi chuyáģƒn mÃŖ. Cháģ‰ Ä‘Æ°áģŖc sáģ­ dáģĨng cho máģ™t sáģ‘ quy táē¯c chuyáģƒn mÃŖ nháēĨt đáģ‹nh.", "transcoding_accepted_containers": "CÃĄc đáģ‹nh dáēĄng video đưáģŖc cháēĨp nháē­n", - "transcoding_accepted_containers_description": "Cháģn cÃĄc đáģ‹nh dáēĄng táē­p tin không cáē§n chuyáģƒn đáģ•i sang MP4. Cháģ‰ Ä‘Æ°áģŖc sáģ­ dáģĨng cho máģ™t sáģ‘ quy táē¯c chuyáģƒn mÃŖ nháēĨt đáģ‹nh.", + "transcoding_accepted_containers_description": "Cháģn cÃĄc đáģ‹nh dáēĄng táģ‡p không cáē§n chuyáģƒn đáģ•i sang MP4. Cháģ‰ Ä‘Æ°áģŖc sáģ­ dáģĨng cho máģ™t sáģ‘ quy táē¯c chuyáģƒn mÃŖ nháēĨt đáģ‹nh.", "transcoding_accepted_video_codecs": "CÃĄc chuáēŠn nÊn video đưáģŖc cháēĨp nháē­n", "transcoding_accepted_video_codecs_description": "Cháģn cÃĄc chuáēŠn nÊn video không cáē§n pháēŖi chuyáģƒn mÃŖ. Cháģ‰ Ä‘Æ°áģŖc sáģ­ dáģĨng cho máģ™t sáģ‘ quy táē¯c chuyáģƒn mÃŖ nháēĨt đáģ‹nh.", "transcoding_advanced_options_description": "CÃĄc tÚy cháģn mà háē§u háēŋt ngưáģi dÚng không cáē§n pháēŖi thay đáģ•i", "transcoding_audio_codec": "ChuáēŠn nÊn Ãĸm thanh", "transcoding_audio_codec_description": "Opus là tÚy cháģn cháēĨt lưáģŖng cao nháēĨt, nhưng cÃŗ tính tÆ°ÆĄng thích tháēĨp hÆĄn váģ›i cÃĄc thiáēŋt báģ‹ hoáēˇc pháē§n máģm cÅŠ.", "transcoding_bitrate_description": "Video cÃŗ bitrate cao hÆĄn hoáēˇc không áģŸ Ä‘áģ‹nh dáēĄng đưáģŖc cháēĨp nháē­n", - "transcoding_codecs_learn_more": "Đáģƒ tÃŦm hiáģƒu thÃĒm váģ thuáē­t ngáģ¯ Ä‘Æ°áģŖc sáģ­ dáģĨng áģŸ Ä‘Ãĸy, hÃŖy tham kháēŖo tài liáģ‡u FFmpeg cho codec H.264, codec HEVC và codec VP9.", + "transcoding_codecs_learn_more": "Đáģƒ hiáģƒu thÃĒm váģ thuáē­t ngáģ¯ áģŸ Ä‘Ãĸy, hÃŖy tham kháēŖo tài liáģ‡u FFmpeg cho codec H.264, codec HEVC và codec VP9.", "transcoding_constant_quality_mode": "Cháēŋ đáģ™ cháēĨt lưáģŖng cáģ‘ Ä‘áģ‹nh", "transcoding_constant_quality_mode_description": "ICQ táģ‘t hÆĄn CQP, nhưng máģ™t sáģ‘ thiáēŋt báģ‹ tăng táģ‘c pháē§n cáģŠng không háģ— tráģŖ cháēŋ đáģ™ này. Cài đáēˇt tÚy cháģn này sáēŊ ưu tiÃĒn cháēŋ đáģ™ Ä‘Æ°áģŖc cháģ‰ Ä‘áģ‹nh khi sáģ­ dáģĨng mÃŖ hÃŗa dáģąa trÃĒn cháēĨt lưáģŖng. Báģ‹ báģ qua báģŸi NVENC vÃŦ nÃŗ không háģ— tráģŖ ICQ.", "transcoding_constant_rate_factor": "Háģ‡ sáģ‘ táģˇ láģ‡ cáģ‘ Ä‘áģ‹nh (-crf)", @@ -312,25 +367,25 @@ "transcoding_max_b_frames": "Sáģ‘ B-frame táģ‘i đa", "transcoding_max_b_frames_description": "GiÃĄ tráģ‹ cao hÆĄn cáēŖi thiáģ‡n hiáģ‡u quáēŖ nÊn, nhưng làm cháē­m mÃŖ hÃŗa. CÃŗ tháģƒ không tÆ°ÆĄng thích váģ›i tăng táģ‘c pháē§n cáģŠng trÃĒn cÃĄc thiáēŋt báģ‹ cÅŠ. GiÃĄ tráģ‹ 0 đáģƒ táē¯t B-frames, trong khi giÃĄ tráģ‹ -1 đáģƒ táģą Ä‘áģ™ng thiáēŋt láē­p giÃĄ tráģ‹ này.", "transcoding_max_bitrate": "Bitrate táģ‘i đa", - "transcoding_max_bitrate_description": "Cài đáēˇt giáģ›i háēĄn bitrate táģ‘i đa cÃŗ tháģƒ giÃēp kích thưáģ›c video dáģ… dáģą Ä‘oÃĄn hÆĄn, váģ›i máģ™t chÃēt hy sinh váģ cháēĨt lưáģŖng. áģž Ä‘áģ™ phÃĸn giáēŖi 720p, giÃĄ tráģ‹ Ä‘iáģƒn hÃŦnh là 2600 kbit/s cho VP9 hoáēˇc HEVC, hoáēˇc 4500 kbit/s cho H.264. Náēŋu đáēˇt thành 0, cháģŠc năng này sáēŊ báģ‹ vô hiáģ‡u hÃŗa.", + "transcoding_max_bitrate_description": "Cài đáēˇt giáģ›i háēĄn bitrate táģ‘i đa cÃŗ tháģƒ giÃēp kích thưáģ›c video dáģ… dáģą Ä‘oÃĄn hÆĄn, váģ›i máģ™t chÃēt hy sinh váģ cháēĨt lưáģŖng. áģž Ä‘áģ™ phÃĸn giáēŖi 720p, giÃĄ tráģ‹ Ä‘iáģƒn hÃŦnh là 2600 kbit/s cho VP9 hoáēˇc HEVC, hoáēˇc 4500 kbit/s cho H.264. Náēŋu đáēˇt thành 0, cháģŠc năng này sáēŊ báģ‹ vô hiáģ‡u hÃŗa. Khi không cÃŗ Ä‘ÆĄn váģ‹ nào đưáģŖc cháģ‰ Ä‘áģ‹nh, giáēŖ Ä‘áģ‹nh sáēŊ là k (đáģ‘i váģ›i kbit/giÃĸy); do Ä‘Ãŗ 5000, 5000k và 5M (đáģ‘i váģ›i Mbit/giÃĸy) là tÆ°ÆĄng Ä‘Æ°ÆĄng.", "transcoding_max_keyframe_interval": "KhoáēŖng cÃĄch táģ‘i đa giáģ¯a cÃĄc khung hÃŦnh chính", "transcoding_max_keyframe_interval_description": "Thiáēŋt láē­p khoáēŖng tháģi gian táģ‘i đa giáģ¯a cÃĄc khung hÃŦnh chính. GiÃĄ tráģ‹ tháēĨp hÆĄn làm giáēŖm hiáģ‡u suáēĨt nÊn, nhưng cáēŖi thiáģ‡n tháģi gian tÃŦm kiáēŋm và cÃŗ tháģƒ cáēŖi thiáģ‡n cháēĨt lưáģŖng trong cÃĄc cáēŖnh cÃŗ chuyáģƒn đáģ™ng nhanh. GiÃĄ tráģ‹ 0 đáģƒ táģą Ä‘áģ™ng thiáēŋt láē­p giÃĄ tráģ‹ này.", "transcoding_optimal_description": "Video cÃŗ đáģ™ phÃĸn giáēŖi cao hÆĄn máģĨc tiÃĒu hoáēˇc không áģŸ Ä‘áģ‹nh dáēĄng đưáģŖc cháēĨp nháē­n", "transcoding_policy": "Quy táē¯c chuyáģƒn mÃŖ video", "transcoding_policy_description": "Cháģn khi nào video sáēŊ chuyáģƒn mÃŖ", - "transcoding_preferred_hardware_device": "Thiáēŋt báģ‹ pháē§n cáģŠng ưa tiÃĒn", + "transcoding_preferred_hardware_device": "Thiáēŋt báģ‹ pháē§n cáģŠng ưu tiÃĒn", "transcoding_preferred_hardware_device_description": "Cháģ‰ ÃĄp dáģĨng cho VAAPI và QSV. Thiáēŋt láē­p nÃēt dri đưáģŖc sáģ­ dáģĨng cho chuyáģƒn mÃŖ pháē§n cáģŠng.", "transcoding_preset_preset": "MáēĢu cÃŗ sáēĩn (-preset)", - "transcoding_preset_preset_description": "Táģ‘c đáģ™ nÊn. CÃĄc máēĢu cÃŗ sáēĩn cháē­m hÆĄn táēĄo ra cÃĄc táē­p tin nháģ hÆĄn và cáēŖi thiáģ‡n cháēĨt lưáģŖng khi máģĨc tiÃĒu là máģ™t bitrate cáģĨ tháģƒ. VP9 cháģ‰ háģ— tráģŖ cÃĄc máēĢu cÃŗ sáēĩn táģĢ 'ultrafast' đáēŋn 'faster'.", + "transcoding_preset_preset_description": "Táģ‘c đáģ™ nÊn. CÃĄc máēĢu cÃŗ sáēĩn cháē­m hÆĄn táēĄo ra cÃĄc táģ‡p nháģ hÆĄn và cáēŖi thiáģ‡n cháēĨt lưáģŖng khi máģĨc tiÃĒu là máģ™t bitrate cáģĨ tháģƒ. VP9 cháģ‰ háģ— tráģŖ cÃĄc máēĢu cÃŗ sáēĩn táģĢ 'ultrafast' đáēŋn 'faster'.", "transcoding_reference_frames": "Khung hÃŦnh tham chiáēŋu", "transcoding_reference_frames_description": "Sáģ‘ lưáģŖng khung hÃŦnh tham chiáēŋu khi nÊn máģ™t khung hÃŦnh nháēĨt đáģ‹nh. GiÃĄ tráģ‹ cao hÆĄn cáēŖi thiáģ‡n hiáģ‡u suáēĨt nÊn nhưng làm cháē­m quÃĄ trÃŦnh mÃŖ hÃŗa. GiÃĄ tráģ‹ 0 đáģƒ táģą Ä‘áģ™ng thiáēŋt láē­p giÃĄ tráģ‹ này.", "transcoding_required_description": "Cháģ‰ video không áģŸ Ä‘áģ‹nh dáēĄng đưáģŖc cháēĨp nháē­n", "transcoding_settings": "Chuyáģƒn mÃŖ video", "transcoding_settings_description": "QuáēŖn lÃŊ video chuyáģƒn mÃŖ và cÃĄch xáģ­ lÃŊ", "transcoding_target_resolution": "Đáģ™ phÃĸn giáēŖi máģĨc tiÃĒu", - "transcoding_target_resolution_description": "Đáģ™ phÃĸn giáēŖi cao hÆĄn cÃŗ tháģƒ giáģ¯ láēĄi nhiáģu chi tiáēŋt hÆĄn nhưng máēĨt nhiáģu tháģi gian hÆĄn đáģƒ mÃŖ hÃŗa, cÃŗ kích thưáģ›c táē­p tin láģ›n hÆĄn và cÃŗ tháģƒ làm giáēŖm kháēŖ năng pháēŖn háģ“i cáģ§a áģŠng dáģĨng.", + "transcoding_target_resolution_description": "Đáģ™ phÃĸn giáēŖi cao hÆĄn cÃŗ tháģƒ giáģ¯ láēĄi nhiáģu chi tiáēŋt hÆĄn nhưng máēĨt nhiáģu tháģi gian hÆĄn đáģƒ mÃŖ hÃŗa, cÃŗ kích thưáģ›c táē­p tin láģ›n hÆĄn và cÃŗ tháģƒ làm giáēŖm kháēŖ năng pháēŖn háģ“i cáģ§a app.", "transcoding_temporal_aq": "LưáģŖng táģ­ hÃŗa thích áģŠng (Temporal AQ)", - "transcoding_temporal_aq_description": "Cháģ‰ ÃĄp dáģĨng cho NVENC. Tăng cháēĨt lưáģŖng cho cÃĄc cáēŖnh cÃŗ nhiáģu chi tiáēŋt và ít chuyáģƒn đáģ™ng. CÃŗ tháģƒ không tÆ°ÆĄng thích váģ›i cÃĄc thiáēŋt báģ‹ cÅŠ.", + "transcoding_temporal_aq_description": "Cháģ‰ ÃĄp dáģĨng cho NVENC. LưáģŖng táģ­ hÃŗa Thích áģŠng Tháģi gian tăng cháēĨt lưáģŖng cho cÃĄc cáēŖnh cÃŗ nhiáģu chi tiáēŋt và ít chuyáģƒn đáģ™ng. CÃŗ tháģƒ không tÆ°ÆĄng thích váģ›i cÃĄc thiáēŋt báģ‹ cÅŠ.", "transcoding_threads": "Luáģ“ng", "transcoding_threads_description": "GiÃĄ tráģ‹ cao hÆĄn dáēĢn đáēŋn mÃŖ hÃŗa nhanh hÆĄn nhưng đáģƒ láēĄi ít không gian hÆĄn cho mÃĄy cháģ§ xáģ­ lÃŊ cÃĄc tÃĄc váģĨ khÃĄc khi đang hoáēĄt đáģ™ng. GiÃĄ tráģ‹ này không nÃĒn vưáģŖt quÃĄ sáģ‘ lưáģŖng lÃĩi CPU. Táģ‘i đa hÃŗa sáģ­ dáģĨng náēŋu đáēˇt thành 0.", "transcoding_tone_mapping": "Ánh XáēĄ Sáē¯c ThÃĄi (Tone-mapping)", @@ -346,12 +401,15 @@ "trash_number_of_days_description": "Sáģ‘ ngày giáģ¯ cÃĄc áēŖnh trong thÚng rÃĄc trưáģ›c khi xÃŗa chÃēng vÄŠnh viáģ…n", "trash_settings": "ThÚng rÃĄc", "trash_settings_description": "QuáēŖn lÃŊ cài đáēˇt thÚng rÃĄc", + "unlink_all_oauth_accounts": "Háģ§y liÃĒn káēŋt táēĨt cáēŖ tài khoáēŖn OAuth", + "unlink_all_oauth_accounts_description": "HÃŖy nháģ› háģ§y liÃĒn káēŋt táēĨt cáēŖ tài khoáēŖn OAuth trưáģ›c khi di chuyáģƒn sang nhà cung cáēĨp máģ›i.", + "unlink_all_oauth_accounts_prompt": "BáēĄn cÃŗ cháē¯c muáģ‘n háģ§y liÃĒn káēŋt táēĨt cáēŖ tài khoáēŖn OAuth không? Thao tÃĄc này sáēŊ đáēˇt láēĄi ID OAuth cho máģ—i ngưáģi dÚng và không tháģƒ hoàn tÃĄc.", "user_cleanup_job": "Dáģn dáēšp ngưáģi dÚng", - "user_delete_delay": "Tài khoáēŖn và cÃĄc áēŖnh cáģ§a {user} sáēŊ đưáģŖc lÃĒn láģ‹ch xÃŗa vÄŠnh viáģ…n sau {delay, plural, one {# ngày} other {# ngày}}.", + "user_delete_delay": "Tài khoáēŖn và táģ‡p cáģ§a {user} sáēŊ đưáģŖc lÃĒn láģ‹ch xÃŗa vÄŠnh viáģ…n sau {delay, plural, one {# ngày} other {# ngày}}.", "user_delete_delay_settings": "Tháģi gian xÃŗa", - "user_delete_delay_settings_description": "Sáģ‘ ngày cháģ xÃŗa đáģƒ xÃŗa vÄŠnh viáģ…n tài khoáēŖn và cÃĄc áēŖnh cáģ§a ngưáģi dÚng. TÃĄc váģĨ xÃŗa ngưáģi dÚng cháēĄy vào giáģ¯a đÃĒm đáģƒ kiáģƒm tra cÃĄc ngưáģi dÚng sáēĩn sàng báģ‹ xÃŗa. Thay đáģ•i cài đáēˇt này sáēŊ đưáģŖc Ä‘ÃĄnh giÃĄ vào láē§n tháģąc hiáģ‡n tiáēŋp theo.", - "user_delete_immediately": "Tài khoáēŖn và cÃĄc áēŖnh cáģ§a {user} sáēŊ đưáģŖc đưa vào hàng đáģŖi đáģƒ xÃŗa vÄŠnh viáģ…n ngay láē­p táģŠc.", - "user_delete_immediately_checkbox": "Xáēŋp hàng ngưáģi dÚng và cÃĄc áēŖnh đáģƒ xÃŗa ngay láē­p táģŠc", + "user_delete_delay_settings_description": "Sáģ‘ ngày cháģ xÃŗa đáģƒ xÃŗa vÄŠnh viáģ…n tài khoáēŖn và táģ‡p cáģ§a ngưáģi dÚng. TÃĄc váģĨ xÃŗa ngưáģi dÚng cháēĄy vào giáģ¯a đÃĒm đáģƒ kiáģƒm tra cÃĄc ngưáģi dÚng sáēĩn sàng báģ‹ xÃŗa. Thay đáģ•i cài đáēˇt này sáēŊ đưáģŖc Ä‘ÃĄnh giÃĄ vào láē§n tháģąc hiáģ‡n tiáēŋp theo.", + "user_delete_immediately": "Tài khoáēŖn và áēŖnh cáģ§a {user} sáēŊ đưáģŖc đưa vào hàng đáģŖi đáģƒ xÃŗa vÄŠnh viáģ…n ngay láē­p táģŠc.", + "user_delete_immediately_checkbox": "Xáēŋp hàng ngưáģi dÚng và áēŖnh đáģƒ xÃŗa ngay láē­p táģŠc", "user_details": "Chi tiáēŋt Ngưáģi dÚng", "user_management": "QuáēŖn lÃŊ ngưáģi dÚng", "user_password_has_been_reset": "Máē­t kháēŠu cáģ§a ngưáģi dÚng Ä‘ÃŖ đưáģŖc đáēˇt láēĄi:", @@ -361,6 +419,7 @@ "user_settings": "Ngưáģi dÚng", "user_settings_description": "QuáēŖn lÃŊ cài đáēˇt ngưáģi dÚng", "user_successfully_removed": "Ngưáģi dÚng {email} Ä‘ÃŖ đưáģŖc xÃŗa thành công.", + "users_page_description": "Trang quáēŖn tráģ‹ ngưáģi dÚng", "version_check_enabled_description": "Báē­t kiáģƒm tra phiÃĒn báēŖn", "version_check_implications": "Tính năng kiáģƒm tra phiÃĒn báēŖn yÃĒu cáē§u káēŋt náģ‘i thưáģng xuyÃĒn đáēŋn github.com", "version_check_settings": "Kiáģƒm tra phiÃĒn báēŖn", @@ -372,48 +431,53 @@ "admin_password": "Máē­t kháēŠu QuáēŖn tráģ‹ viÃĒn", "administration": "QuáēŖn tráģ‹", "advanced": "NÃĸng cao", - "advanced_settings_enable_alternate_media_filter_subtitle": "DÚng tÚy cháģn này đáģƒ láģc phÆ°ÆĄng tiáģ‡n khi đáģ“ng báģ™ theo tiÃĒu chí khÃĄc. Cháģ‰ tháģ­ khi áģŠng dáģĨng không nháē­n diáģ‡n đưáģŖc táēĨt cáēŖ cÃĄc album.", + "advanced_settings_enable_alternate_media_filter_subtitle": "DÚng tÚy cháģn này đáģƒ láģc phÆ°ÆĄng tiáģ‡n khi đáģ“ng báģ™ theo tiÃĒu chí khÃĄc. Cháģ‰ tháģ­ khi app không nháē­n diáģ‡n đưáģŖc táēĨt cáēŖ cÃĄc album.", "advanced_settings_enable_alternate_media_filter_title": "[THáģŦ NGHIáģ†M] DÚng báģ™ láģc đáģ“ng báģ™ album thay tháēŋ", - "advanced_settings_log_level_title": "PhÃĸn loáēĄi nháē­t kÃŊ: {level}", - "advanced_settings_prefer_remote_subtitle": "TrÃĒn máģ™t sáģ‘ thiáēŋt báģ‹, viáģ‡c táēŖi hÃŦnh thu nháģ táģĢ áēŖnh trÃĒn thiáēŋt báģ‹ diáģ…n ra cháē­m. Kích hoáēĄt cài đáēˇt này đáģƒ táēŖi áēŖnh táģĢ mÃĄy cháģ§.", + "advanced_settings_log_level_title": "PhÃĸn loáēĄi log: {level}", + "advanced_settings_prefer_remote_subtitle": "Viáģ‡c táēŖi áēŖnh thu nháģ táģĢ áēŖnh trÃĒn máģ™t sáģ‘ thiáēŋt báģ‹ cÃŗ tháģƒ diáģ…n ra cháē­m. Kích hoáēĄt cài đáēˇt này đáģƒ táēŖi áēŖnh táģĢ mÃĄy cháģ§.", "advanced_settings_prefer_remote_title": "Ưu tiÃĒn áēŖnh táģĢ mÃĄy cháģ§", "advanced_settings_proxy_headers_subtitle": "XÃĄc đáģ‹nh cÃĄc tiÃĒu đáģ proxy Immich sáēŊ gáģ­i kèm máģ—i yÃĒu cáē§u máēĄng", - "advanced_settings_proxy_headers_title": "TiÃĒu đáģ proxy", - "advanced_settings_readonly_mode_title": "Cháēŋ đáģ™ cháģ‰ Ä‘áģc", - "advanced_settings_self_signed_ssl_subtitle": "Báģ qua xÃĄc minh cháģŠng cháģ‰ SSL cho mÃĄy cháģ§ cuáģ‘i. YÃĒu cáē§u cho cháģŠng cháģ‰ táģą kÃŊ.", - "advanced_settings_self_signed_ssl_title": "Cho phÊp cháģŠng cháģ‰ SSL táģą kÃŊ", + "advanced_settings_proxy_headers_title": "TÚy cháģ‰nh tiÃĒu đáģ proxy [THáģŦ NGHIáģ†M]", + "advanced_settings_readonly_mode_subtitle": "Cháēŋ đáģ™ cháģ‰-xem cháģ‰ cho phÊp xem áēŖnh, cÃĄc tính năng như cháģn nhiáģu áēŖnh, chia sáēģ, phÃĄt, xÃŗa đáģu báģ‹ vô hiáģ‡u hÃŗa. Báē­t/Táē¯t cháēŋ đáģ™ cháģ‰-xem thông qua áēŖnh đáēĄi diáģ‡n ngưáģi dÚng táģĢ màn hÃŦnh chính", + "advanced_settings_readonly_mode_title": "Cháēŋ đáģ™ cháģ‰-xem", + "advanced_settings_self_signed_ssl_subtitle": "Báģ qua xÃĄc minh cháģŠng cháģ‰ SSL cho endpoint mÃĄy cháģ§. YÃĒu cáē§u cho cháģŠng cháģ‰ táģą kÃŊ.", + "advanced_settings_self_signed_ssl_title": "Cho phÊp cháģŠng cháģ‰ SSL táģą kÃŊ [THáģŦ NGHIáģ†M]", "advanced_settings_sync_remote_deletions_subtitle": "Táģą Ä‘áģ™ng xÃŗa hoáēˇc khôi pháģĨc dáģ¯ liáģ‡u trÃĒn thiáēŋt báģ‹ này khi báēĄn thao tÃĄc trÃĒn web", "advanced_settings_sync_remote_deletions_title": "Đáģ“ng báģ™ viáģ‡c xÃŗa táģĢ thiáēŋt báģ‹ khÃĄc [THáģŦ NGHIáģ†M]", - "advanced_settings_tile_subtitle": "Cài đáēˇt cho ngưáģi dÚng nÃĸng cao", + "advanced_settings_tile_subtitle": "Dành cho ngưáģi dÚng nÃĸng cao", "advanced_settings_troubleshooting_subtitle": "Báē­t cÃĄc tính năng báģ• sung đáģƒ xáģ­ lÃŊ sáģą cáģ‘", "advanced_settings_troubleshooting_title": "Xáģ­ lÃŊ sáģą cáģ‘", "age_months": "{months, plural, one {# thÃĄng} other {# thÃĄng}} tuáģ•i", "age_year_months": "1 tuáģ•i, {months, plural, one {# thÃĄng} other {# thÃĄng}}", "age_years": "{years, plural, other {# tuáģ•i}}", + "album": "Album", "album_added": "ÄÃŖ thÃĒm album", "album_added_notification_setting_description": "Nháē­n thông bÃĄo qua email khi báēĄn đưáģŖc thÃĒm vào máģ™t album chia sáēģ", "album_cover_updated": "ÄÃŖ cáē­p nháē­t áēŖnh bÃŦa album", - "album_delete_confirmation": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n xÃŗa album {album} không?", + "album_delete_confirmation": "BáēĄn cÃŗ cháē¯c muáģ‘n xÃŗa album {album}?", "album_delete_confirmation_description": "Náēŋu album này đưáģŖc chia sáēģ, cÃĄc ngưáģi dÚng khÃĄc sáēŊ không cÃ˛n truy cáē­p đưáģŖc náģ¯a.", + "album_deleted": "ÄÃŖ xÃŗa album", "album_info_card_backup_album_excluded": "Đà BáģŽ QUA", "album_info_card_backup_album_included": "Đà THÊM", "album_info_updated": "ÄÃŖ cáē­p nháē­t thông tin album", "album_leave": "Ráģi album?", - "album_leave_confirmation": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n ráģi kháģi {album} không?", + "album_leave_confirmation": "BáēĄn cÃŗ cháē¯c muáģ‘n ráģi kháģi {album}?", "album_name": "TÃĒn album", "album_options": "TÚy cháģn album", "album_remove_user": "XÃŗa ngưáģi dÚng?", - "album_remove_user_confirmation": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n xÃŗa {user} không?", + "album_remove_user_confirmation": "BáēĄn cÃŗ cháē¯c muáģ‘n xÃŗa {user}?", + "album_search_not_found": "Không tÃŦm tháēĨy album trÚng kháģ›p", "album_share_no_users": "CÃŗ váēģ như báēĄn Ä‘ÃŖ chia sáēģ album này váģ›i táēĨt cáēŖ ngưáģi dÚng hoáēˇc báēĄn không cÃŗ ngưáģi dÚng nào đáģƒ chia sáēģ.", + "album_summary": "Mô táēŖ album", "album_updated": "ÄÃŖ cáē­p nháē­t album", "album_updated_setting_description": "Nháē­n thông bÃĄo qua email khi máģ™t album chia sáēģ cÃŗ cÃĄc áēŖnh máģ›i", "album_user_left": "ÄÃŖ ráģi kháģi {album}", "album_user_removed": "ÄÃŖ xÃŗa {user}", - "album_viewer_appbar_delete_confirm": "BáēĄn cÃŗ muáģ‘n xÃŗa album này kháģi tài khoáēŖn cáģ§a mÃŦnh không?", - "album_viewer_appbar_share_err_delete": "XoÃĄ album tháēĨt báēĄi", + "album_viewer_appbar_delete_confirm": "BáēĄn cÃŗ muáģ‘n xÃŗa album này kháģi tài khoáēŖn cáģ§a mÃŦnh?", + "album_viewer_appbar_share_err_delete": "XÃŗa album tháēĨt báēĄi", "album_viewer_appbar_share_err_leave": "Ráģi kháģi album tháēĨt báēĄi", - "album_viewer_appbar_share_err_remove": "CÃŗ váēĨn đáģ khi xoÃĄ áēŖnh kháģi album", - "album_viewer_appbar_share_err_title": "Thay đáģ•i tiÃĒu đáģ album tháēĨt báēĄi", + "album_viewer_appbar_share_err_remove": "CÃŗ váēĨn đáģ khi xÃŗa áēŖnh kháģi album", + "album_viewer_appbar_share_err_title": "Thay đáģ•i tÃĒn album tháēĨt báēĄi", "album_viewer_appbar_share_leave": "Ráģi kháģi album", "album_viewer_appbar_share_to": "Chia sáēģ váģ›i", "album_viewer_page_share_add_users": "ThÃĒm ngưáģi dÚng", @@ -422,7 +486,8 @@ "albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Album}}", "albums_default_sort_order": "TháģŠ táģą sáē¯p xáēŋp album máēˇc đáģ‹nh", "albums_default_sort_order_description": "TháģŠ táģą sáē¯p xáēŋp ban đáē§u cho cÃĄc áēŖnh khi táēĄo album máģ›i.", - "albums_feature_description": "CÃĄc báģ™ sưu táē­p áēŖnh cÃŗ tháģƒ Ä‘Æ°áģŖc chia sáēģ váģ›i nháģ¯ng ngưáģi dÚng khÃĄc.", + "albums_feature_description": "CÃĄc báģ™ sưu táē­p táģ‡p cÃŗ tháģƒ Ä‘Æ°áģŖc chia sáēģ váģ›i nháģ¯ng ngưáģi dÚng khÃĄc.", + "albums_on_device_count": "Album trÃĒn thiáēŋt báģ‹ ({count})", "all": "TáēĨt cáēŖ", "all_albums": "TáēĨt cáēŖ album", "all_people": "TáēĨt cáēŖ máģi ngưáģi", @@ -431,106 +496,123 @@ "allow_edits": "Cho phÊp cháģ‰nh sáģ­a", "allow_public_user_to_download": "Cho phÊp ngưáģi dÚng công khai táēŖi xuáģ‘ng", "allow_public_user_to_upload": "Cho phÊp ngưáģi dÚng công khai táēŖi lÃĒn", + "allowed": "Cho phÊp", "alt_text_qr_code": "áēĸnh mÃŖ QR", "anti_clockwise": "Xoay trÃĄi", "api_key": "KhÃŗa API", "api_key_description": "GiÃĄ tráģ‹ này cháģ‰ Ä‘Æ°áģŖc hiáģƒn tháģ‹ máģ™t láē§n. Vui lÃ˛ng sao chÊp nÃŗ trưáģ›c khi Ä‘Ãŗng cáģ­a sáģ•.", "api_key_empty": "TÃĒn khÃŗa API cáģ§a báēĄn không đưáģŖc đáģƒ tráģ‘ng", "api_keys": "KhÃŗa API", + "app_architecture_variant": "Variant (Kiáēŋn trÃēc)", "app_bar_signout_dialog_content": "BáēĄn cÃŗ muáģ‘n đăng xuáēĨt?", "app_bar_signout_dialog_ok": "CÃŗ", "app_bar_signout_dialog_title": "Đăng xuáēĨt", - "app_settings": "áģ¨ng dáģĨng", + "app_download_links": "LiÃĒn káēŋt táēŖi app", + "app_settings": "App", + "app_stores": "Cáģ­a hàng app", + "app_update_available": "ÄÃŖ cÃŗ báēŖn cáē­p nháē­t app", "appears_in": "XuáēĨt hiáģ‡n trong", + "apply_count": "Áp dáģĨng ({count, number})", "archive": "Lưu tráģ¯", - "archive_or_unarchive_photo": "Lưu tráģ¯ hoáēˇc huáģˇ lưu tráģ¯ áēŖnh", - "archive_page_no_archived_assets": "Không tÃŦm tháēĨy áēŖnh Ä‘ÃŖ lưu tráģ¯", + "archive_action_prompt": "{count} Ä‘ÃŖ đưáģŖc thÃĒm vào Lưu tráģ¯", + "archive_or_unarchive_photo": "Lưu tráģ¯ hoáēˇc báģ lưu tráģ¯ áēŖnh", + "archive_page_no_archived_assets": "Không tÃŦm tháēĨy táģ‡p Ä‘ÃŖ lưu tráģ¯", "archive_page_title": "Kho lưu tráģ¯ ({count})", - "archive_size": "Kích thưáģ›c gÃŗi nÊn", - "archive_size_description": "CáēĨu hÃŦnh kích thưáģ›c nÊn cho cÃĄc táē­p tin táēŖi xuáģ‘ng (Ä‘ÆĄn váģ‹ GiB)", + "archive_size": "Kích cáģĄ lưu tráģ¯", + "archive_size_description": "CáēĨu hÃŦnh kích cáģĄ nÊn cho cÃĄc táģ‡p táēŖi xuáģ‘ng (Ä‘ÆĄn váģ‹ GiB)", "archived": "Lưu tráģ¯", "archived_count": "{count, plural, other {ÄÃŖ lưu tráģ¯ # máģĨc}}", "are_these_the_same_person": "ĐÃĸy cÃŗ pháēŖi cÚng máģ™t ngưáģi không?", - "are_you_sure_to_do_this": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n tháģąc hiáģ‡n điáģu này không?", - "asset_action_delete_err_read_only": "Không tháģƒ xoÃĄ áēŖnh cháģ‰ cÃŗ quyáģn đáģc, báģ qua", - "asset_action_share_err_offline": "Không tháģƒ táēŖi áēŖnh ngoáēĄi tuyáēŋn, báģ qua", + "are_you_sure_to_do_this": "BáēĄn cÃŗ cháē¯c muáģ‘n tháģąc hiáģ‡n điáģu này?", + "asset_action_delete_err_read_only": "Không tháģƒ xÃŗa táģ‡p cháģ‰ cÃŗ quyáģn đáģc, báģ qua", + "asset_action_share_err_offline": "Không tháģƒ táēŖi táģ‡p ngoáēĄi tuyáēŋn, báģ qua", "asset_added_to_album": "ÄÃŖ thÃĒm vào album", "asset_adding_to_album": "Đang thÃĒm vào albumâ€Ļ", "asset_description_updated": "Mô táēŖ áēŖnh Ä‘ÃŖ đưáģŖc cáē­p nháē­t", - "asset_filename_is_offline": "áēĸnh {filename} đang ngoáēĄi tuyáēŋn", - "asset_has_unassigned_faces": "áēĸnh chưa đưáģŖc gÃĄn khuôn máēˇt", + "asset_filename_is_offline": "Táģ‡p {filename} đang ngoáēĄi tuyáēŋn", + "asset_has_unassigned_faces": "Táģ‡p chưa đưáģŖc gÃĄn khuôn máēˇt", "asset_hashing": "Đang bămâ€Ļ", "asset_list_group_by_sub_title": "NhÃŗm theo", "asset_list_layout_settings_dynamic_layout_title": "Báģ‘ cáģĨc đáģ™ng", "asset_list_layout_settings_group_automatically": "Táģą Ä‘áģ™ng", - "asset_list_layout_settings_group_by": "NhÃŗm áēŖnh theo", + "asset_list_layout_settings_group_by": "NhÃŗm táģ‡p theo", "asset_list_layout_settings_group_by_month_day": "ThÃĄng + ngày", "asset_list_layout_sub_title": "Báģ‘ cáģĨc", - "asset_list_settings_subtitle": "Cài đáēˇt báģ‘ cáģĨc lưáģ›i áēŖnh", + "asset_list_settings_subtitle": "Báģ‘ cáģĨc lưáģ›i áēŖnh", "asset_list_settings_title": "Lưáģ›i áēŖnh", - "asset_offline": "áēĸnh NgoáēĄi tuyáēŋn", - "asset_offline_description": "Táē­p tin bÃĒn ngoài này không cÃ˛n trÃĒn áģ• Ä‘ÄŠa. Vui lÃ˛ng liÃĒn háģ‡ quáēŖn tráģ‹ viÃĒn Immich cáģ§a báēĄn đáģƒ Ä‘Æ°áģŖc tráģŖ giÃēp.", - "asset_restored_successfully": "ÄÃŖ khôi pháģĨc áēŖnh thành công", + "asset_offline": "Táģ‡p NgoáēĄi tuyáēŋn", + "asset_offline_description": "Táģ‡p bÃĒn ngoài này không cÃ˛n trÃĒn áģ• Ä‘ÄŠa. Vui lÃ˛ng liÃĒn háģ‡ quáēŖn tráģ‹ viÃĒn Immich cáģ§a báēĄn đáģƒ Ä‘Æ°áģŖc tráģŖ giÃēp.", + "asset_restored_successfully": "ÄÃŖ khôi pháģĨc táģ‡p thành công", "asset_skipped": "ÄÃŖ báģ qua", "asset_skipped_in_trash": "Trong thÚng rÃĄc", + "asset_trashed": "ÄÃŖ chuyáģƒn táģ‡p đáēŋn thÚng rÃĄc", + "asset_troubleshoot": "Kháē¯c pháģĨc sáģą cáģ‘ táģ‡p", "asset_uploaded": "ÄÃŖ táēŖi lÃĒn", "asset_uploading": "Đang táēŖi lÃĒnâ€Ļ", - "asset_viewer_settings_subtitle": "QuáēŖn lÃŊ hiáģƒn tháģ‹ thư viáģ‡n", - "asset_viewer_settings_title": "TrÃŦnh xem áēŖnh", - "assets": "CÃĄc táē­p tin", - "assets_added_count": "ÄÃŖ thÃĒm {count, plural, one {# máģĨc} other {# máģĨc}}", - "assets_added_to_album_count": "ÄÃŖ thÃĒm {count, plural, one {# máģĨc} other {# máģĨc}} vào album", - "assets_count": "{count, plural, one {# máģĨc} other {# máģĨc}}", - "assets_deleted_permanently": "ÄÃŖ xoÃĄ vÄŠnh viáģ…n {count} máģĨc", - "assets_deleted_permanently_from_server": "ÄÃŖ xoÃĄ vÄŠnh viáģ…n {count} máģĨc kháģi mÃĄy cháģ§ Immich", - "assets_downloaded_failed": "{count, plural, one {ÄÃŖ táēŖi xuáģ‘ng # táē­p tin - {error} táē­p tin tháēĨt báēĄi} other {ÄÃŖ táēŖi xuáģ‘ng # táē­p tin - {error} táē­p tin tháēĨt báēĄi}}", - "assets_downloaded_successfully": "{count, plural, one {ÄÃŖ táēŖi xuáģ‘ng # táē­p tin thành công} other {ÄÃŖ táēŖi xuáģ‘ng # táē­p tin thành công}}", - "assets_moved_to_trash_count": "ÄÃŖ chuyáģƒn {count, plural, one {# máģĨc} other {# máģĨc}} vào thÚng rÃĄc", - "assets_permanently_deleted_count": "ÄÃŖ xÃŗa vÄŠnh viáģ…n {count, plural, one {# máģĨc} other {# máģĨc}}", - "assets_removed_count": "ÄÃŖ xÃŗa {count, plural, one {# máģĨc} other {# máģĨc}}", - "assets_removed_permanently_from_device": "ÄÃŖ xoÃĄ vÄŠnh viáģ…n {count} máģĨc kháģi thiáēŋt báģ‹ cáģ§a báēĄn", - "assets_restore_confirmation": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n khôi pháģĨc táēĨt cáēŖ cÃĄc máģĨc Ä‘ÃŖ xÃŗa cáģ§a mÃŦnh không? BáēĄn không tháģƒ hoàn tÃĄc hành đáģ™ng này! Lưu ÃŊ ráēąng không tháģƒ khôi pháģĨc cÃĄc áēŖnh ngoáēĄi tuyáēŋn theo cÃĄch này.", - "assets_restored_count": "ÄÃŖ khôi pháģĨc {count, plural, one {# máģĨc} other {# máģĨc}}", - "assets_restored_successfully": "ÄÃŖ khôi pháģĨc {count} máģĨc thành công", - "assets_trashed": "ÄÃŖ chuyáģƒn {count} máģĨc vào thÚng rÃĄc", - "assets_trashed_count": "ÄÃŖ chuyáģƒn {count, plural, one {# máģĨc} other {# máģĨc}} vào thÚng rÃĄc", - "assets_trashed_from_server": "ÄÃŖ chuyáģƒn {count} máģĨc táģĢ mÃĄy cháģ§ Immich vào thÚng rÃĄc", - "assets_were_part_of_album_count": "{count, plural, one {MáģĨc Ä‘ÃŖ} other {CÃĄc máģĨc Ä‘ÃŖ}} cÃŗ trong album", + "asset_viewer_settings_subtitle": "CÃĄch thư viáģ‡n hiáģƒn tháģ‹", + "asset_viewer_settings_title": "TrÃŦnh xem táģ‡p", + "assets": "Táģ‡p", + "assets_added_count": "ÄÃŖ thÃĒm {count, plural, one {# táģ‡p} other {# táģ‡p}}", + "assets_added_to_album_count": "ÄÃŖ thÃĒm {count, plural, one {# táģ‡p} other {# táģ‡p}} vào album", + "assets_added_to_albums_count": "ÄÃŖ thÃĒm {assetTotal, plural, one {# táģ‡p} other {# táģ‡p}} vào {albumTotal, plural, one {# album} other {# album}}", + "assets_cannot_be_added_to_album_count": "{count, plural, one {Táģ‡p} other {Táģ‡p}} không tháģƒ thÃĒm vào album", + "assets_cannot_be_added_to_albums": "{count, plural, one {Táģ‡p} other {Táģ‡p}} không tháģƒ thÃĒm vào báēĨt káģŗ album nào", + "assets_count": "{count, plural, one {# táģ‡p} other {# táģ‡p}}", + "assets_deleted_permanently": "ÄÃŖ xÃŗa vÄŠnh viáģ…n {count} táģ‡p", + "assets_deleted_permanently_from_server": "ÄÃŖ xÃŗa vÄŠnh viáģ…n {count} táģ‡p kháģi mÃĄy cháģ§ Immich", + "assets_downloaded_failed": "{count, plural, one {ÄÃŖ táēŖi xuáģ‘ng # táģ‡p - {error} táģ‡p tháēĨt báēĄi} other {ÄÃŖ táēŖi xuáģ‘ng # táģ‡p - {error} táģ‡p tháēĨt báēĄi}}", + "assets_downloaded_successfully": "{count, plural, one {ÄÃŖ táēŖi xuáģ‘ng # táģ‡p thành công} other {ÄÃŖ táēŖi xuáģ‘ng # táģ‡p thành công}}", + "assets_moved_to_trash_count": "ÄÃŖ chuyáģƒn {count, plural, one {# táģ‡p} other {# táģ‡p}} vào thÚng rÃĄc", + "assets_permanently_deleted_count": "ÄÃŖ xÃŗa vÄŠnh viáģ…n {count, plural, one {# táģ‡p} other {# táģ‡p}}", + "assets_removed_count": "ÄÃŖ xÃŗa {count, plural, one {# táģ‡p} other {# táģ‡p}}", + "assets_removed_permanently_from_device": "ÄÃŖ xÃŗa vÄŠnh viáģ…n {count} táģ‡p kháģi thiáēŋt báģ‹ cáģ§a báēĄn", + "assets_restore_confirmation": "BáēĄn cÃŗ cháē¯c muáģ‘n khôi pháģĨc táēĨt cáēŖ máģĨc Ä‘ÃŖ xÃŗa cáģ§a mÃŦnh không? BáēĄn không tháģƒ hoàn tÃĄc hành đáģ™ng này! Lưu ÃŊ ráēąng không tháģƒ khôi pháģĨc cÃĄc áēŖnh ngoáēĄi tuyáēŋn theo cÃĄch này.", + "assets_restored_count": "ÄÃŖ khôi pháģĨc {count, plural, one {# táģ‡p} other {# táģ‡p}}", + "assets_restored_successfully": "ÄÃŖ khôi pháģĨc {count} táģ‡p thành công", + "assets_trashed": "ÄÃŖ chuyáģƒn {count} táģ‡p vào thÚng rÃĄc", + "assets_trashed_count": "ÄÃŖ chuyáģƒn {count, plural, one {# táģ‡p} other {# táģ‡p}} vào thÚng rÃĄc", + "assets_trashed_from_server": "ÄÃŖ chuyáģƒn {count} táģ‡p táģĢ mÃĄy cháģ§ Immich vào thÚng rÃĄc", + "assets_were_part_of_album_count": "{count, plural, one {Táģ‡p Ä‘ÃŖ} other {CÃĄc táģ‡p Ä‘ÃŖ}} cÃŗ sáēĩn trong album", + "assets_were_part_of_albums_count": "{count, plural, one {Táģ‡p Ä‘ÃŖ} other {Táģ‡p Ä‘ÃŖ}} cÃŗ sáēĩn trong album", "authorized_devices": "Thiáēŋt báģ‹", "automatic_endpoint_switching_subtitle": "Káēŋt náģ‘i náģ™i báģ™ qua Wi-Fi đưáģŖc cháģ‰ Ä‘áģ‹nh khi káēŋt náģ‘i đưáģŖc và sáģ­ dáģĨng cÃĄc káēŋt náģ‘i thay tháēŋ áģŸ nÆĄi khÃĄc", "automatic_endpoint_switching_title": "Táģą Ä‘áģ™ng chuyáģƒn đáģ•i đáģ‹a cháģ‰ mÃĄy cháģ§", "autoplay_slideshow": "Táģą Ä‘áģ™ng phÃĄt trÃŦnh chiáēŋu", "back": "Quay láēĄi", "back_close_deselect": "Quay láēĄi, Ä‘Ãŗng, hoáēˇc báģ cháģn", - "background_location_permission": "Quyáģn truy cáē­p váģ‹ trí áģŸ náģn", - "background_location_permission_content": "Đáģƒ chuyáģƒn đáģ•i máēĄng khi cháēĄy áģŸ cháēŋ đáģ™ náģn, Immich *luôn* pháēŖi cÃŗ quyáģn truy cáē­p váģ‹ trí chính xÃĄc đáģƒ áģŠng dáģĨng cÃŗ tháģƒ Ä‘áģc tÃĒn máēĄng Wi-Fi", + "background_backup_running_error": "Sao lưu náģn hiáģ‡n đang cháēĄy, không tháģƒ báē¯t đáē§u sao lưu tháģ§ công", + "background_location_permission": "Quyáģn truy cáē­p váģ‹ trí khi cháēĄy náģn", + "background_location_permission_content": "Đáģƒ chuyáģƒn đáģ•i máēĄng khi cháēĄy áģŸ cháēŋ đáģ™ náģn, Immich *luôn* pháēŖi cÃŗ quyáģn truy cáē­p váģ‹ trí chính xÃĄc đáģƒ cÃŗ tháģƒ Ä‘áģc tÃĒn máēĄng Wi-Fi", + "background_options": "TÚy cháģn náģn", "backup": "Sao lưu", "backup_album_selection_page_albums_device": "Album trÃĒn thiáēŋt báģ‹ ({count})", "backup_album_selection_page_albums_tap": "NháēĨn đáģƒ cháģn, nháēĨn đÃēp đáģƒ báģ qua", "backup_album_selection_page_assets_scatter": "áēĸnh cÃŗ tháģƒ cÃŗ trong nhiáģu album khÃĄc nhau. Trong quÃĄ trÃŦnh sao lưu, báēĄn cÃŗ tháģƒ cháģn đáģƒ sao lưu táēĨt cáēŖ cÃĄc album hoáēˇc cháģ‰ máģ™t sáģ‘ album nháēĨt đáģ‹nh.", "backup_album_selection_page_select_albums": "Cháģn album", "backup_album_selection_page_selection_info": "Thông tin cÃĄc máģĨc Ä‘ÃŖ cháģn", - "backup_album_selection_page_total_assets": "Táģ•ng sáģ‘ áēŖnh không trÚng láēˇp", + "backup_album_selection_page_total_assets": "Táģ•ng sáģ‘ táģ‡p không trÚng láēˇp", + "backup_albums_sync": "Đáģ“ng báģ™ hÃŗa album sao lưu", "backup_all": "TáēĨt cáēŖ", - "backup_background_service_backup_failed_message": "Sao lưu áēŖnh tháēĨt báēĄi. Đang tháģ­ láēĄiâ€Ļ", + "backup_background_service_backup_failed_message": "Sao lưu táģ‡p tháēĨt báēĄi. Đang tháģ­ láēĄiâ€Ļ", + "backup_background_service_complete_notification": "Hoàn táēĨt sao lưu táģ‡p", "backup_background_service_connection_failed_message": "Káēŋt náģ‘i táģ›i mÃĄy cháģ§ tháēĨt báēĄi. Đang tháģ­ láēĄiâ€Ļ", "backup_background_service_current_upload_notification": "Đang táēŖi lÃĒn {filename}", - "backup_background_service_default_notification": "Đang kiáģƒm tra áēŖnh máģ›iâ€Ļ", + "backup_background_service_default_notification": "Đang kiáģƒm tra táģ‡p máģ›iâ€Ļ", "backup_background_service_error_title": "Sao lưu không thành công", - "backup_background_service_in_progress_notification": "Đang sao lưu áēŖnh cáģ§a báēĄnâ€Ļ", + "backup_background_service_in_progress_notification": "Đang sao lưu táģ‡p cáģ§a báēĄnâ€Ļ", "backup_background_service_upload_failure_notification": "TáēŖi lÃĒn {filename} tháēĨt báēĄi", "backup_controller_page_albums": "Album sao lưu", - "backup_controller_page_background_app_refresh_disabled_content": "Báē­t làm máģ›i áģŠng dáģĨng trong náģn táēĄi Cài đáēˇt > Cài đáēˇt chung > Làm máģ›i áģŠng dáģĨng trong náģn đáģƒ dÚng sao lưu náģn.", - "backup_controller_page_background_app_refresh_disabled_title": "Làm máģ›i áģŠng dáģĨng trong náģn báģ‹ vô hiáģ‡u hoÃĄ", + "backup_controller_page_background_app_refresh_disabled_content": "Báē­t làm máģ›i app trong náģn táēĄi Cài đáēˇt > Cài đáēˇt chung > Làm máģ›i app trong náģn đáģƒ dÚng sao lưu náģn.", + "backup_controller_page_background_app_refresh_disabled_title": "Làm máģ›i app trong náģn báģ‹ vô hiáģ‡u hoÃĄ", "backup_controller_page_background_app_refresh_enable_button_text": "Đi táģ›i cài đáēˇt", - "backup_controller_page_background_battery_info_link": "HÃŖy cháģ‰ cho tôi cÃĄch làm", + "backup_controller_page_background_battery_info_link": "Hưáģ›ng dáēĢn tôi", "backup_controller_page_background_battery_info_message": "Đáģƒ cÃŗ tráēŖi nghiáģ‡m sao lưu náģn táģ‘t nháēĨt, vui lÃ˛ng vô hiáģ‡u hÃŗa báēĨt káģŗ táģ‘i ưu hÃŗa pin nào đang háēĄn cháēŋ hoáēĄt đáģ™ng náģn cáģ§a Immich.\n\nVÃŦ điáģu này pháģĨ thuáģ™c vào thiáēŋt báģ‹, vui lÃ˛ng tham kháēŖo thông tin cáē§n thiáēŋt cáģ§a nhà sáēŖn xuáēĨt thiáēŋt báģ‹ cáģ§a báēĄn.", "backup_controller_page_background_battery_info_ok": "Đáģ“ng ÃŊ", "backup_controller_page_background_battery_info_title": "Tiáēŋt kiáģ‡m pin", "backup_controller_page_background_charging": "Cháģ‰ khi đang sáēĄc", "backup_controller_page_background_configure_error": "CáēĨu hÃŦnh dáģ‹ch váģĨ náģn tháēĨt báēĄi", - "backup_controller_page_background_delay": "TrÃŦ hoÃŖn sao lưu áēŖnh máģ›i: {duration}", - "backup_controller_page_background_description": "Báē­t dáģ‹ch váģĨ náģn đáģƒ táģą Ä‘áģ™ng sao lưu áēŖnh máģ›i mà không cáē§n máģŸ áģŠng dáģĨng", + "backup_controller_page_background_delay": "TrÃŦ hoÃŖn sao lưu táģ‡p máģ›i: {duration}", + "backup_controller_page_background_description": "Báē­t dáģ‹ch váģĨ náģn đáģƒ táģą Ä‘áģ™ng sao lưu táģ‡p máģ›i mà không cáē§n máģŸ app", "backup_controller_page_background_is_off": "Sao lưu táģą Ä‘áģ™ng trong náģn đang táē¯t", "backup_controller_page_background_is_on": "Sao lưu táģą Ä‘áģ™ng trong náģn đang báē­t", "backup_controller_page_background_turn_off": "Táē¯t dáģ‹ch váģĨ náģn", @@ -540,7 +622,7 @@ "backup_controller_page_backup_selected": "ÄÃŖ cháģn: ", "backup_controller_page_backup_sub": "áēĸnh và video Ä‘ÃŖ sao lưu", "backup_controller_page_created": "TáēĄo vào: {date}", - "backup_controller_page_desc_backup": "Báē­t sao lưu khi áģŠng dáģĨng hoáēĄt đáģ™ng đáģƒ táģą Ä‘áģ™ng sao lưu áēŖnh máģ›i lÃĒn mÃĄy cháģ§ khi máģŸ áģŠng dáģĨng.", + "backup_controller_page_desc_backup": "Báē­t sao lưu khi app hoáēĄt đáģ™ng đáģƒ táģą Ä‘áģ™ng sao lưu táģ‡p máģ›i lÃĒn mÃĄy cháģ§ khi máģŸ app.", "backup_controller_page_excluded": "ÄÃŖ báģ qua: ", "backup_controller_page_failed": "TháēĨt báēĄi ({count})", "backup_controller_page_filename": "TÃĒn táģ‡p: {filename} [{size}]", @@ -549,52 +631,54 @@ "backup_controller_page_none_selected": "Không cÃŗ máģĨc nào đưáģŖc cháģn", "backup_controller_page_remainder": "CÃ˛n láēĄi", "backup_controller_page_remainder_sub": "Sáģ‘ lưáģŖng áēŖnh và video Ä‘ÃŖ cháģn chưa đưáģŖc sao lưu", - "backup_controller_page_server_storage": "Báģ™ nháģ› mÃĄy cháģ§", + "backup_controller_page_server_storage": "Dung lưáģŖng mÃĄy cháģ§", "backup_controller_page_start_backup": "Báē¯t đáē§u sao lưu", - "backup_controller_page_status_off": "Sao lưu táģą Ä‘áģ™ng khi áģŠng dáģĨng hoáēĄt đáģ™ng đang táē¯t", - "backup_controller_page_status_on": "Sao lưu táģą Ä‘áģ™ng khi áģŠng dáģĨng hoáēĄt đáģ™ng đang báē­t", + "backup_controller_page_status_off": "Sao lưu táģą Ä‘áģ™ng khi app hoáēĄt đáģ™ng đang táē¯t", + "backup_controller_page_status_on": "Sao lưu táģą Ä‘áģ™ng khi app hoáēĄt đáģ™ng đang báē­t", "backup_controller_page_storage_format": "ÄÃŖ dÚng {used} cáģ§a {total}", "backup_controller_page_to_backup": "CÃĄc album cáē§n đưáģŖc sao lưu", "backup_controller_page_total_sub": "TáēĨt cáēŖ áēŖnh và video không trÚng láē­p táģĢ cÃĄc album đưáģŖc cháģn", - "backup_controller_page_turn_off": "Táē¯t sao lưu khi áģŠng dáģĨng hoáēĄt đáģ™ng", - "backup_controller_page_turn_on": "Báē­t sao lưu khi máģŸ áģŠng dáģĨng", + "backup_controller_page_turn_off": "Táē¯t sao lưu khi app hoáēĄt đáģ™ng", + "backup_controller_page_turn_on": "Báē­t sao lưu khi máģŸ app", "backup_controller_page_uploading_file_info": "Thông tin táģ‡p đang táēŖi lÃĒn", "backup_err_only_album": "Không tháģƒ xÃŗa album duy nháēĨt", "backup_error_sync_failed": "Đáģ“ng báģ™ tháēĨt báēĄi. Không tháģƒ tiáēŋn hành sao lưu.", - "backup_info_card_assets": "áēŖnh", + "backup_info_card_assets": "táģ‡p", "backup_manual_cancelled": "ÄÃŖ háģ§y", "backup_manual_in_progress": "Đang táēŖi lÃĒn. Vui lÃ˛ng tháģ­ láēĄi sau", "backup_manual_success": "Thành công", "backup_manual_title": "TráēĄng thÃĄi táēŖi lÃĒn", - "backup_options_page_title": "CÃĄc tÚy cháģn sao lưu", + "backup_options": "TÚy cháģn sao lưu", + "backup_options_page_title": "TÚy cháģn sao lưu", "backup_setting_subtitle": "QuáēŖn lÃŊ cài đáēˇt táēŖi lÃĒn áģŸ cháēŋ đáģ™ náģn và khi đang máģŸ", "backup_settings_subtitle": "Cài đáēˇt viáģ‡c táēŖi lÃĒn", + "backup_upload_details_page_more_details": "NháēĨn đáģƒ hiáģ‡n chi tiáēŋt", "backward": "LÚi láēĄi", "biometric_auth_enabled": "ÄÃŖ báē­t xÃĄc tháģąc sinh tráē¯c háģc", "biometric_locked_out": "BáēĄn Ä‘ÃŖ báģ‹ khÃŗa xÃĄc tháģąc báēąng sinh tráē¯c háģc", "biometric_no_options": "Không cÃŗ tÚy cháģn báēąng sinh tráē¯c háģc", "biometric_not_available": "XÃĄc tháģąc sinh tráē¯c háģc không kháēŖ dáģĨng trÃĒn thiáēŋt báģ‹ này", - "birthdate_saved": "Ngày sinh Ä‘ÃŖ đưáģŖc lưu thành công", - "birthdate_set_description": "Ngày sinh đưáģŖc sáģ­ dáģĨng đáģƒ tính tuáģ•i cáģ§a ngưáģi này táēĄi tháģi điáģƒm cháģĨp áēŖnh.", + "birthdate_saved": "Sinh nháē­t Ä‘ÃŖ đưáģŖc lưu thành công", + "birthdate_set_description": "Sinh nháē­t đưáģŖc sáģ­ dáģĨng đáģƒ tính tuáģ•i cáģ§a ngưáģi này táēĄi tháģi điáģƒm cháģĨp áēŖnh.", "blurred_background": "Náģn máģ", - "bugs_and_feature_requests": "Láģ—i & YÃĒu cáē§u tính năng", + "bugs_and_feature_requests": "BÃĄo láģ—i & Đáģ xuáēĨt tính năng", "build": "Dáģąng", "build_image": "BáēŖn dáģąng", - "bulk_delete_duplicates_confirmation": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n xÃŗa hàng loáēĄt {count, plural, one {# máģĨc trÚng láēˇp} other {# máģĨc trÚng láēˇp}} không? Điáģu này sáēŊ giáģ¯ láēĄi áēŖnh cháēĨt lưáģŖng nháēĨt cáģ§a máģ—i nhÃŗm và xÃŗa vÄŠnh viáģ…n táēĨt cáēŖ cÃĄc báēŖn trÚng láēˇp khÃĄc. BáēĄn không tháģƒ hoàn tÃĄc hành đáģ™ng này!", - "bulk_keep_duplicates_confirmation": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n giáģ¯ láēĄi {count, plural, one {# máģĨc trÚng láēˇp} other {# máģĨc trÚng láēˇp}} không? Điáģu này sáēŊ xáģ­ lÃŊ táēĨt cáēŖ cÃĄc nhÃŗm áēŖnh trÚng láēˇp mà không xÃŗa báēĨt káģŗ tháģŠ gÃŦ.", - "bulk_trash_duplicates_confirmation": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n đưa {count, plural, one {# máģĨc trÚng láēˇp} other {# máģĨc trÚng láēˇp}} vào thÚng rÃĄc không? Điáģu này sáēŊ giáģ¯ láēĄi áēŖnh cháēĨt lưáģŖng nháēĨt cáģ§a máģ—i nhÃŗm và đưa táēĨt cáēŖ cÃĄc báēŖn trÚng láēˇp khÃĄc vào thÚng rÃĄc.", + "bulk_delete_duplicates_confirmation": "BáēĄn cÃŗ cháē¯c muáģ‘n xÃŗa hàng loáēĄt {count, plural, one {# táģ‡p trÚng láēˇp} other {# táģ‡p trÚng láēˇp}}? Điáģu này sáēŊ giáģ¯ láēĄi áēŖnh cháēĨt lưáģŖng nháēĨt cáģ§a máģ—i nhÃŗm và xÃŗa vÄŠnh viáģ…n táēĨt cáēŖ cÃĄc báēŖn trÚng láēˇp khÃĄc. BáēĄn không tháģƒ hoàn tÃĄc hành đáģ™ng này!", + "bulk_keep_duplicates_confirmation": "BáēĄn cÃŗ cháē¯c muáģ‘n giáģ¯ láēĄi {count, plural, one {# táģ‡p trÚng láēˇp} other {# táģ‡p trÚng láēˇp}}? Điáģu này sáēŊ xáģ­ lÃŊ táēĨt cáēŖ cÃĄc nhÃŗm áēŖnh trÚng láēˇp mà không xÃŗa báēĨt káģŗ tháģŠ gÃŦ.", + "bulk_trash_duplicates_confirmation": "BáēĄn cÃŗ cháē¯c muáģ‘n đưa {count, plural, one {# táģ‡p trÚng láēˇp} other {# táģ‡p trÚng láēˇp}} vào thÚng rÃĄc? Điáģu này sáēŊ giáģ¯ láēĄi áēŖnh cháēĨt lưáģŖng nháēĨt cáģ§a máģ—i nhÃŗm và đưa táēĨt cáēŖ cÃĄc báēŖn trÚng láēˇp khÃĄc vào thÚng rÃĄc.", "buy": "Mua Immich", - "cache_settings_clear_cache_button": "XoÃĄ báģ™ nháģ› Ä‘áģ‡m", - "cache_settings_clear_cache_button_title": "XÃŗa báģ™ nháģ› Ä‘áģ‡m cáģ§a áģŠng dáģĨng. Điáģu này sáēŊ áēŖnh hưáģŸng đáēŋn hiáģ‡u suáēĨt cáģ§a áģŠng dáģĨng đáēŋn khi báģ™ nháģ› Ä‘áģ‡m đưáģŖc táēĄo láēĄi.", - "cache_settings_duplicated_assets_clear_button": "XOÁ", - "cache_settings_duplicated_assets_subtitle": "áēĸnh và video không đưáģŖc phÊp hiáģƒn tháģ‹ trÃĒn áģŠng dáģĨng", - "cache_settings_duplicated_assets_title": "áēĸnh báģ‹ trÚng láēˇp ({count})", - "cache_settings_statistics_album": "Thư viáģ‡n hÃŦnh thu nháģ", + "cache_settings_clear_cache_button": "XÃŗa báģ™ nháģ› Ä‘áģ‡m", + "cache_settings_clear_cache_button_title": "XÃŗa báģ™ nháģ› Ä‘áģ‡m cáģ§a app. Điáģu này sáēŊ áēŖnh hưáģŸng đáēŋn hiáģ‡u suáēĨt cáģ§a app đáēŋn khi báģ™ nháģ› Ä‘áģ‡m đưáģŖc táēĄo láēĄi.", + "cache_settings_duplicated_assets_clear_button": "XÓA", + "cache_settings_duplicated_assets_subtitle": "áēĸnh và video không đưáģŖc phÊp hiáģƒn tháģ‹ trÃĒn app", + "cache_settings_duplicated_assets_title": "Táģ‡p báģ‹ trÚng ({count})", + "cache_settings_statistics_album": "áēĸnh thu nháģ thư viáģ‡n", "cache_settings_statistics_full": "áēĸnh đáē§y đáģ§", - "cache_settings_statistics_shared": "HÃŦnh thu nháģ album chia sáēģ", - "cache_settings_statistics_thumbnail": "HÃŦnh thu nháģ", + "cache_settings_statistics_shared": "áēĸnh thu nháģ album chia sáēģ", + "cache_settings_statistics_thumbnail": "áēĸnh thu nháģ", "cache_settings_statistics_title": "MáģŠc sáģ­ dáģĨng báģ™ nháģ› Ä‘áģ‡m", - "cache_settings_subtitle": "Kiáģƒm soÃĄt hành vi báģ™ nháģ› Ä‘áģ‡m cáģ§a áģŠng dáģĨng Immich", + "cache_settings_subtitle": "Kiáģƒm soÃĄt hành vi báģ™ nháģ› Ä‘áģ‡m cáģ§a app Immich", "cache_settings_tile_subtitle": "Kiáģƒm soÃĄt cÃĄch xáģ­ lÃŊ lưu tráģ¯ cáģĨc báģ™", "cache_settings_tile_title": "Lưu tráģ¯ cáģĨc báģ™", "cache_settings_title": "Cài đáēˇt báģ™ nháģ› Ä‘áģ‡m", @@ -603,7 +687,7 @@ "camera_model": "DÃ˛ng mÃĄy áēŖnh", "cancel": "Háģ§y", "cancel_search": "Háģ§y tÃŦm kiáēŋm", - "canceled": "Huáģˇ báģ", + "canceled": "Háģ§y báģ", "canceling": "Đang háģ§y", "cannot_merge_people": "Không tháģƒ háģŖp nháēĨt ngưáģi", "cannot_undo_this_action": "BáēĄn không tháģƒ hoàn tÃĄc hành đáģ™ng này!", @@ -615,43 +699,50 @@ "change_display_order": "Sáē¯p xáēŋp hiáģƒn tháģ‹", "change_expiration_time": "Thay đáģ•i tháģi gian háēŋt háēĄn", "change_location": "Thay đáģ•i váģ‹ trí", - "change_name": "Thay đáģ•i tÃĒn", - "change_name_successfully": "ÄÃŖ thay đáģ•i tÃĒn thành công", - "change_password": "Thay đáģ•i máē­t kháēŠu", + "change_name": "Đáģ•i tÃĒn", + "change_name_successfully": "ÄÃŖ đáģ•i tÃĒn thành công", + "change_password": "Đáģ•i máē­t kháēŠu", "change_password_description": "ĐÃĸy cÃŗ tháģƒ là láē§n đáē§u tiÃĒn báēĄn đăng nháē­p vào háģ‡ tháģ‘ng hoáēˇc cÃŗ yÃĒu cáē§u thay đáģ•i máē­t kháēŠu cáģ§a báēĄn. Vui lÃ˛ng nháē­p máē­t kháēŠu máģ›i bÃĒn dưáģ›i.", "change_password_form_confirm_password": "XÃĄc nháē­n máē­t kháēŠu", "change_password_form_description": "Xin chào {name},\n\nĐÃĸy là láē§n đáē§u tiÃĒn báēĄn đăng nháē­p vào háģ‡ tháģ‘ng hoáēˇc Ä‘ÃŖ cÃŗ yÃĒu cáē§u thay đáģ•i máē­t kháēŠu. Vui lÃ˛ng nháē­p máē­t kháēŠu máģ›i bÃĒn dưáģ›i.", + "change_password_form_log_out": "Đăng xuáēĨt táēĨt cáēŖ thiáēŋt báģ‹ khÃĄc", + "change_password_form_log_out_description": "ĐưáģŖc đáģ xuáēĨt", "change_password_form_new_password": "Máē­t kháēŠu máģ›i", "change_password_form_password_mismatch": "Máē­t kháēŠu không giáģ‘ng nhau", "change_password_form_reenter_new_password": "Nháē­p láēĄi máē­t kháēŠu máģ›i", "change_pin_code": "Thay đáģ•i mÃŖ PIN", - "change_your_password": "Thay đáģ•i máē­t kháēŠu cáģ§a báēĄn", - "changed_visibility_successfully": "ÄÃŖ thay đáģ•i tráēĄng thÃĄi hiáģƒn tháģ‹ thành công", - "check_corrupt_asset_backup": "Kiáģƒm tra táē­p tin báģ‹ háģng", + "change_your_password": "Đáģ•i máē­t kháēŠu cáģ§a báēĄn", + "changed_visibility_successfully": "ÄÃŖ đáģ•i tráēĄng thÃĄi hiáģƒn tháģ‹ thành công", + "charging": "SáēĄc", + "charging_requirement_mobile_backup": "Sao lưu dưáģ›i náģn yÃĒu cáē§u thiáēŋt báģ‹ pháēŖi đang sáēĄc", + "check_corrupt_asset_backup": "Kiáģƒm tra táģ‡p báģ‹ háģng", "check_corrupt_asset_backup_button": "Tiáēŋn hành kiáģƒm tra", "check_corrupt_asset_backup_description": "Cháģ‰ cháēĄy kiáģƒm tra này khi cÃŗ Wi-Fi và sau khi Ä‘ÃŖ sao lưu toàn báģ™ dáģ¯ liáģ‡u. QuÃĄ trÃŦnh cÃŗ tháģƒ máēĨt vài phÃēt.", - "check_logs": "Kiáģƒm tra nháē­t kÃŊ", + "check_logs": "Kiáģƒm tra log", + "checksum": "Checksum", "choose_matching_people_to_merge": "Cháģn nháģ¯ng ngưáģi trÚng kháģ›p đáģƒ háģŖp nháēĨt", "city": "Thành pháģ‘", "clear": "XÃŗa", "clear_all": "XÃŗa táēĨt cáēŖ", "clear_all_recent_searches": "XÃŗa táēĨt cáēŖ tÃŦm kiáēŋm gáē§n đÃĸy", - "clear_message": "XÃŗa tin nháē¯n", + "clear_file_cache": "XÃŗa báģ™ nháģ› Ä‘áģ‡m", + "clear_message": "XÃŗa thông điáģ‡p", "clear_value": "XÃŗa giÃĄ tráģ‹", "client_cert_dialog_msg_confirm": "Đáģ“ng ÃŊ", "client_cert_enter_password": "Nháē­p máē­t kháēŠu", "client_cert_import": "Nháē­p", "client_cert_import_success_msg": "CháģŠng cháģ‰ khÃĄch Ä‘ÃŖ đưáģŖc nháē­p", - "client_cert_invalid_msg": "Táē­p tin cháģŠng cháģ‰ không háģŖp láģ‡ hoáēˇc sai máē­t kháēŠu", - "client_cert_remove_msg": "CháģŠng cháģ‰ khÃĄch Ä‘ÃŖ báģ‹ xoÃĄ", + "client_cert_invalid_msg": "Táģ‡p cháģŠng cháģ‰ không háģŖp láģ‡ hoáēˇc sai máē­t kháēŠu", + "client_cert_remove_msg": "CháģŠng cháģ‰ khÃĄch Ä‘ÃŖ báģ‹ xÃŗa", "client_cert_subtitle": "Cháģ‰ háģ— tráģŖ Ä‘áģ‹nh dáēĄng PKCS12 (.p12, .pfx). Cháģ‰ cÃŗ tháģƒ nháē­p/xÃŗa cháģŠng cháģ‰ trưáģ›c khi đăng nháē­p", - "client_cert_title": "CháģŠng cháģ‰ khÃĄch SSL", + "client_cert_title": "CháģŠng cháģ‰ khÃĄch SSL [THáģŦ NGHIáģ†M]", "clockwise": "Xoay pháēŖi", "close": "ÄÃŗng", "collapse": "Thu gáģn", "collapse_all": "Thu gáģn táēĨt cáēŖ", "color": "Màu", - "color_theme": "Cháģ§ Ä‘áģ màu sáē¯c", + "color_theme": "Màu cháģ§ Ä‘áģ", + "command": "DÃ˛ng láģ‡nh", "comment_deleted": "BÃŦnh luáē­n Ä‘ÃŖ báģ‹ xÃŗa", "comment_options": "TÚy cháģn bÃŦnh luáē­n", "comments_and_likes": "BÃŦnh luáē­n & lưáģŖt thích", @@ -660,13 +751,14 @@ "completed": "Hoàn táēĨt", "confirm": "XÃĄc nháē­n", "confirm_admin_password": "XÃĄc nháē­n máē­t kháēŠu quáēŖn tráģ‹ viÃĒn", - "confirm_delete_face": "BáēĄn cÃŗ cháē¯c muáģ‘n xÃŗa khuôn máēˇt {name} kháģi áēŖnh này không?", - "confirm_delete_shared_link": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n xÃŗa liÃĒn káēŋt chia sáēģ này không?", - "confirm_keep_this_delete_others": "CÃĄc áēŖnh cÃ˛n láēĄi trong nhÃŗm sáēŊ báģ‹ xoÃĄ ngoáēĄi tráģĢ áēŖnh này. BáēĄn cÃŗ cháē¯c cháē¯n tiáēŋp táģĨc không?", + "confirm_delete_face": "BáēĄn cÃŗ cháē¯c muáģ‘n xÃŗa khuôn máēˇt {name} kháģi táģ‡p?", + "confirm_delete_shared_link": "BáēĄn cÃŗ cháē¯c muáģ‘n xÃŗa liÃĒn káēŋt chia sáēģ này?", + "confirm_keep_this_delete_others": "CÃĄc áēŖnh cÃ˛n láēĄi trong nhÃŗm sáēŊ báģ‹ xÃŗa ngoáēĄi tráģĢ áēŖnh này. BáēĄn cÃŗ cháē¯c muáģ‘n tiáēŋp táģĨc?", "confirm_new_pin_code": "XÃĄc nháē­n mÃŖ PIN máģ›i", "confirm_password": "XÃĄc nháē­n máē­t kháēŠu", - "confirm_tag_face": "BáēĄn cÃŗ muáģ‘n gáē¯n tháēģ gÆ°ÆĄng máēˇt này là {name} không?", - "confirm_tag_face_unnamed": "BáēĄn cÃŗ muáģ‘n gáē¯n tháēģ gÆ°ÆĄng máēˇt này không?", + "confirm_tag_face": "BáēĄn cÃŗ muáģ‘n gáē¯n tháēģ gÆ°ÆĄng máēˇt này là {name}?", + "confirm_tag_face_unnamed": "BáēĄn cÃŗ muáģ‘n gáē¯n tháēģ gÆ°ÆĄng máēˇt này?", + "connected_device": "Thiáēŋt báģ‹ Ä‘Æ°áģŖc káēŋt náģ‘i", "connected_to": "ÄÃŖ káēŋt náģ‘i táģ›i", "contain": "CháģŠa", "context": "Ngáģ¯ cáēŖnh", @@ -676,24 +768,25 @@ "control_bottom_app_bar_delete_from_local": "XÃŗa kháģi thiáēŋt báģ‹", "control_bottom_app_bar_edit_location": "Cháģ‰nh sáģ­a váģ‹ trí", "control_bottom_app_bar_edit_time": "Cháģ‰nh sáģ­a Ngày và Giáģ", - "control_bottom_app_bar_share_link": "LiÃĒn káēŋt chia sáēģ", + "control_bottom_app_bar_share_link": "Chia sáēģ liÃĒn káēŋt", "control_bottom_app_bar_share_to": "Chia sáēģ váģ›i", "control_bottom_app_bar_trash_from_immich": "Di chuyáģƒn đáēŋn ThÚng rÃĄc", - "copied_image_to_clipboard": "ÄÃŖ sao chÊp hÃŦnh áēŖnh vào clipboard.", - "copied_to_clipboard": "ÄÃŖ sao chÊp vào clipboard!", + "copied_image_to_clipboard": "ÄÃŖ sao chÊp áēŖnh vào báģ™ nháģ› táēĄm.", + "copied_to_clipboard": "ÄÃŖ sao chÊp vào báģ™ nháģ› táēĄm!", "copy_error": "Sao chÊp láģ—i", - "copy_file_path": "Sao chÊp đưáģng dáēĢn táē­p tin", - "copy_image": "Sao chÊp hÃŦnh áēŖnh", + "copy_file_path": "Sao chÊp đưáģng dáēĢn táģ‡p", + "copy_image": "Sao chÊp áēŖnh", "copy_link": "Sao chÊp liÃĒn káēŋt", - "copy_link_to_clipboard": "Sao chÊp liÃĒn káēŋt vào clipboard", + "copy_link_to_clipboard": "Sao chÊp liÃĒn káēŋt vào báģ™ nháģ› táēĄm", "copy_password": "Sao chÊp máē­t kháēŠu", - "copy_to_clipboard": "Sao chÊp vào clipboard", + "copy_to_clipboard": "Sao chÊp vào báģ™ nháģ› táēĄm", "country": "Quáģ‘c gia", - "cover": "BÃŦa", + "cover": "áēĸnh bÃŦa", "covers": "áēĸnh bÃŦa", "create": "TáēĄo", "create_album": "TáēĄo album", - "create_album_page_untitled": "Không tiÃĒu đáģ", + "create_album_page_untitled": "Không tÃĒn", + "create_api_key": "TáēĄo khÃŗa API", "create_library": "TáēĄo thư viáģ‡n", "create_link": "TáēĄo liÃĒn káēŋt", "create_link_to_share": "TáēĄo liÃĒn káēŋt đáģƒ chia sáēģ", @@ -702,7 +795,7 @@ "create_new_person": "TáēĄo ngưáģi máģ›i", "create_new_person_hint": "GÃĄn cÃĄc áēŖnh Ä‘ÃŖ cháģn cho máģ™t ngưáģi máģ›i", "create_new_user": "TáēĄo ngưáģi dÚng máģ›i", - "create_shared_album_page_share_add_assets": "THÊM áēĸNH", + "create_shared_album_page_share_add_assets": "THÊM Táģ†P", "create_shared_album_page_share_select_photos": "Cháģn áēŖnh", "create_shared_link": "Chia sáēģ qua liÃĒn káēŋt", "create_tag": "TáēĄo tháēģ", @@ -710,104 +803,118 @@ "create_user": "TáēĄo ngưáģi dÚng", "created": "ÄÃŖ táēĄo", "created_at": "ÄÃŖ táēĄo", + "creating_linked_albums": "Đang táēĄo album đưáģŖc liÃĒn káēŋt...", "crop": "Cáē¯t", - "curated_object_page_title": "Sáģą váē­t", + "curated_object_page_title": "Đáģ‘i tưáģŖng", "current_device": "Thiáēŋt báģ‹ hiáģ‡n táēĄi", "current_pin_code": "MÃŖ PIN hiáģ‡n táēĄi", "current_server_address": "Đáģ‹a cháģ§ mÃĄy cháģ§ hiáģ‡n táēĄi", - "custom_locale": "Ngôn ngáģ¯ và khu váģąc tÚy cháģ‰nh", + "custom_locale": "Ngôn ngáģ¯ và khu váģąc", "custom_locale_description": "Đáģ‹nh dáēĄng ngày và sáģ‘ dáģąa trÃĒn ngôn ngáģ¯ và khu váģąc", "custom_url": "URL tÚy cháģ‰nh", "daily_title_text_date": "E, dd MMM", "daily_title_text_date_year": "E, dd MMM, yyyy", "dark": "Táģ‘i", "dark_theme": "Đáģ•i giao diáģ‡n", + "date": "Ngày", "date_after": "Ngày sau", "date_and_time": "Ngày và giáģ", "date_before": "Ngày trưáģ›c", "date_format": "E, d LLL, y â€ĸ h:mm a", - "date_of_birth_saved": "Ngày sinh Ä‘ÃŖ đưáģŖc lưu thành công", + "date_of_birth_saved": "Sinh nháē­t Ä‘ÃŖ đưáģŖc lưu thành công", "date_range": "KhoáēŖng tháģi gian", "day": "Ngày", "days": "Ngày", "deduplicate_all": "XÃŗa táēĨt cáēŖ máģĨc trÚng láēˇp", - "deduplication_criteria_1": "Kích thưáģ›c hÃŦnh áēŖnh theo byte", + "deduplication_criteria_1": "Kích cáģĄ áēŖnh theo byte", "deduplication_criteria_2": "Sáģ‘ lưáģŖng dáģ¯ liáģ‡u EXIF", "deduplication_info": "Thông tin loáēĄi báģ dáģ¯ liáģ‡u trÚng láēˇp", - "deduplication_info_description": "Đáģƒ táģą Ä‘áģ™ng cháģn trưáģ›c và loáēĄi báģ cÃĄc máģĨc trÚng láēˇp hàng loáēĄt, chÃēng tôi sáēŊ xem xÊt dáģąa trÃĒn:", + "deduplication_info_description": "Đáģƒ táģą Ä‘áģ™ng cháģn trưáģ›c và loáēĄi báģ cÃĄc táģ‡p trÚng láēˇp hàng loáēĄt, chÃēng tôi sáēŊ xem xÊt dáģąa trÃĒn:", "default_locale": "Đáģ‹nh dáēĄng ngày giáģ", "default_locale_description": "Dáģąa theo trÃŦnh duyáģ‡t cáģ§a báēĄn", "delete": "XÃŗa", + "delete_action_confirmation_message": "BáēĄn cÃŗ cháē¯c muáģ‘n xÃŗa táģ‡p này? Thao tÃĄc này sáēŊ chuyáģƒn táģ‡p vào thÚng rÃĄc cáģ§a mÃĄy cháģ§ và sáēŊ háģi báēĄn cÃŗ muáģ‘n xÃŗa nÃŗ cáģĨc báģ™ không", + "delete_action_prompt": "{count} Ä‘ÃŖ xÃŗa", "delete_album": "XÃŗa album", - "delete_api_key_prompt": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n xÃŗa khÃŗa API này không?", + "delete_api_key_prompt": "BáēĄn cÃŗ cháē¯c muáģ‘n xÃŗa khÃŗa API này?", "delete_dialog_alert": "Nháģ¯ng máģĨc này sáēŊ báģ‹ xÃŗa vÄŠnh viáģ…n kháģi Immich và thiáēŋt báģ‹ cáģ§a báēĄn", "delete_dialog_alert_local": "Nháģ¯ng máģĨc này sáēŊ báģ‹ xÃŗa vÄŠnh viáģ…n kháģi thiáēŋt báģ‹ cáģ§a báēĄn nhưng váēĢn cÃ˛n lưu tráģ¯ trÃĒn mÃĄy cháģ§ Immich", "delete_dialog_alert_local_non_backed_up": "Máģ™t sáģ‘ máģĨc chưa đưáģŖc sao lưu lÃĒn Immich và sáēŊ báģ‹ xÃŗa vÄŠnh viáģ…n kháģi thiáēŋt báģ‹ cáģ§a báēĄn", "delete_dialog_alert_remote": "Nháģ¯ng máģĨc này sáēŊ báģ‹ xÃŗa vÄŠnh viáģ…n kháģi mÃĄy cháģ§ Immich", "delete_dialog_ok_force": "XÃŗa VÄŠnh Viáģ…n", - "delete_dialog_title": "XoÃĄ vÄŠnh viáģ…n", - "delete_duplicates_confirmation": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n xÃŗa vÄŠnh viáģ…n cÃĄc báēŖn trÚng láēˇp này không?", + "delete_dialog_title": "XÃŗa vÄŠnh viáģ…n", + "delete_duplicates_confirmation": "BáēĄn cÃŗ cháē¯c muáģ‘n xÃŗa vÄŠnh viáģ…n cÃĄc báēŖn trÚng láēˇp này?", "delete_face": "XÃŗa khuôn máēˇt", "delete_key": "XÃŗa khÃŗa", "delete_library": "XÃŗa Thư viáģ‡n", "delete_link": "XÃŗa liÃĒn káēŋt", - "delete_local_dialog_ok_backed_up_only": "XoÃĄ áēŖnh Ä‘ÃŖ sao lưu", - "delete_local_dialog_ok_force": "VáēĢn xoÃĄ", - "delete_others": "XoÃĄ áēŖnh cÃ˛n láēĄi", + "delete_local_action_prompt": "{count} Ä‘ÃŖ xÃŗa trÃĒn thiáēŋt báģ‹", + "delete_local_dialog_ok_backed_up_only": "XÃŗa áēŖnh Ä‘ÃŖ sao lưu", + "delete_local_dialog_ok_force": "VáēĢn xÃŗa", + "delete_others": "XÃŗa áēŖnh cÃ˛n láēĄi", + "delete_permanently": "XÃŗa vÄŠnh viáģ…n", + "delete_permanently_action_prompt": "{count} Ä‘ÃŖ xÃŗa vÄŠnh viáģ…n", "delete_shared_link": "XÃŗa liÃĒn káēŋt chia sáēģ", - "delete_shared_link_dialog_title": "XoÃĄ liÃĒn káēŋt Ä‘ÃŖ chia sáēģ", + "delete_shared_link_dialog_title": "XÃŗa liÃĒn káēŋt Ä‘ÃŖ chia sáēģ", "delete_tag": "XÃŗa tháēģ", - "delete_tag_confirmation_prompt": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n xÃŗa tháēģ {tagName} không?", + "delete_tag_confirmation_prompt": "BáēĄn cÃŗ cháē¯c muáģ‘n xÃŗa tháēģ {tagName}?", "delete_user": "XÃŗa ngưáģi dÚng", "deleted_shared_link": "ÄÃŖ xÃŗa liÃĒn káēŋt chia sáēģ", "deletes_missing_assets": "XÃŗa cÃĄc áēŖnh không cÃ˛n táģ“n táēĄi trÃĒn áģ• Ä‘ÄŠa", "description": "Mô táēŖ", "description_input_hint_text": "ThÃĒm mô táēŖ...", - "description_input_submit_error": "Cáē­p nháē­t mô táēŖ không thành công, vui lÃ˛ng kiáģƒm tra nháē­t kÃŊ đáģƒ biáēŋt thÃĒm chi tiáēŋt", + "description_input_submit_error": "Cáē­p nháē­t mô táēŖ không thành công, vui lÃ˛ng kiáģƒm tra log đáģƒ biáēŋt thÃĒm chi tiáēŋt", + "deselect_all": "Báģ cháģn táēĨt cáēŖ", "details": "Chi tiáēŋt", "direction": "Hưáģ›ng", - "disabled": "Táē¯t", + "disabled": "ÄÃŖ táē¯t", "disallow_edits": "Không cho phÊp cháģ‰nh sáģ­a", "discord": "Discord", "discover": "KhÃĄm phÃĄ", + "discovered_devices": "KhÃĄm phÃĄ thiáēŋt báģ‹", "dismiss_all_errors": "Báģ qua táēĨt cáēŖ láģ—i", "dismiss_error": "Báģ qua láģ—i", "display_options": "TÚy cháģn hiáģƒn tháģ‹", "display_order": "TháģŠ táģą hiáģƒn tháģ‹", "display_original_photos": "Hiáģƒn tháģ‹ áēŖnh gáģ‘c", - "display_original_photos_setting_description": "Ưu tiÃĒn hiáģƒn tháģ‹ áēŖnh gáģ‘c khi xem áēŖnh thay vÃŦ hÃŦnh thu nháģ khi áēŖnh gáģ‘c tÆ°ÆĄng thích váģ›i web. Điáģu này cÃŗ tháģƒ dáēĢn đáēŋn táģ‘c đáģ™ hiáģƒn tháģ‹ áēŖnh cháē­m hÆĄn.", - "do_not_show_again": "Không hiáģƒn tháģ‹ thông bÃĄo này náģ¯a", + "display_original_photos_setting_description": "Ưu tiÃĒn hiáģƒn tháģ‹ áēŖnh gáģ‘c thay vÃŦ áēŖnh thu nháģ, khi áēŖnh gáģ‘c tÆ°ÆĄng thích váģ›i web. Điáģu này cÃŗ tháģƒ khiáēŋn táģ‘c đáģ™ hiáģƒn tháģ‹ áēŖnh cháē­m hÆĄn.", + "do_not_show_again": "Không hiáģ‡n thông bÃĄo này náģ¯a", "documentation": "Tài liáģ‡u", "done": "Xong", "download": "TáēŖi xuáģ‘ng", + "download_action_prompt": "Đang táēŖi {count} táģ‡p", "download_canceled": "ÄÃŖ háģ§y táēŖi xuáģ‘ng", "download_complete": "TáēŖi xuáģ‘ng hoàn táēĨt", "download_enqueue": "TáēŖi xuáģ‘ng đang cháģ", "download_error": "Láģ—i táēŖi xuáģ‘ng", "download_failed": "TáēŖi xuáģ‘ng tháēĨt báēĄi", "download_finished": "TáēŖi xuáģ‘ng hoàn táēĨt", - "download_include_embedded_motion_videos": "CÃĄc video nhÃēng", - "download_include_embedded_motion_videos_description": "Gáģ“m cÃĄc video đưáģŖc nhÃēng trong áēŖnh chuyáģƒn đáģ™ng thành máģ™t táē­p tin riÃĒng", + "download_include_embedded_motion_videos": "Video nhÃēng", + "download_include_embedded_motion_videos_description": "Gáģ“m cÃĄc video đưáģŖc nhÃēng trong áēŖnh chuyáģƒn đáģ™ng thành máģ™t táģ‡p riÃĒng", "download_notfound": "Không tÃŦm tháēĨy táēŖi xuáģ‘ng", "download_paused": "ÄÃŖ táēĄm dáģĢng táēŖi xuáģ‘ng", "download_settings": "TáēŖi xuáģ‘ng", "download_settings_description": "QuáēŖn lÃŊ cài đáēˇt liÃĒn quan đáēŋn viáģ‡c táēŖi áēŖnh xuáģ‘ng", "download_started": "ÄÃŖ báē¯t đáē§u táēŖi xuáģ‘ng", "download_sucess": "TáēŖi xuáģ‘ng thành công", - "download_sucess_android": "PhÆ°ÆĄng tiáģ‡n Ä‘ÃŖ đưáģŖc táēŖi vào DCIM/Immich", + "download_sucess_android": "PhÆ°ÆĄng tiáģ‡n Ä‘ÃŖ đưáģŖc lưu vào DCIM/Immich", "download_waiting_to_retry": "Đang cháģ tháģ­ láēĄi", "downloading": "Đang táēŖi xuáģ‘ng", - "downloading_asset_filename": "Đang táēŖi xuáģ‘ng táē­p tin {filename}", + "downloading_asset_filename": "Đang táēŖi xuáģ‘ng táģ‡p {filename}", "downloading_media": "Đang táēŖi xuáģ‘ng phÆ°ÆĄng tiáģ‡n", - "drop_files_to_upload": "KÊo tháēŖ cÃĄc táē­p tin đáģƒ táēŖi lÃĒn", - "duplicates": "MáģĨc trÚng láēˇp", + "drop_files_to_upload": "KÊo tháēŖ cÃĄc táģ‡p đáģƒ táēŖi lÃĒn", + "duplicates": "Táģ‡p trÚng láēˇp", "duplicates_description": "Xem láēĄi cÃĄc nhÃŗm áēŖnh báģ‹ nghi ngáģ trÚng láēˇp và cháģn nháģ¯ng máģĨc báēĄn muáģ‘n giáģ¯ hoáēˇc xÃŗa", "duration": "Tháģi gian", "edit": "Cháģ‰nh sáģ­a", "edit_album": "Cháģ‰nh sáģ­a album", "edit_avatar": "Cháģ‰nh sáģ­a áēŖnh đáēĄi diáģ‡n", + "edit_birthday": "Sáģ­a ngày sinh", "edit_date": "Cháģ‰nh sáģ­a ngày", "edit_date_and_time": "Cháģ‰nh sáģ­a ngày và giáģ", + "edit_date_and_time_action_prompt": "{count} Ä‘ÃŖ sáģ­a ngày và giáģ", + "edit_date_and_time_by_offset": "Thay đáģ•i ngày theo đáģ™ láģ‡ch", + "edit_date_and_time_by_offset_interval": "KhoáēŖng ngày máģ›i: {from} - {to}", "edit_description": "Cháģ‰nh sáģ­a mô táēŖ", "edit_description_prompt": "Vui lÃ˛ng cháģn máģ™t mô táēŖ máģ›i:", "edit_exclusion_pattern": "Cháģ‰nh sáģ­a quy táē¯c loáēĄi tráģĢ", @@ -815,6 +922,7 @@ "edit_key": "Cháģ‰nh sáģ­a khÃŗa", "edit_link": "Cháģ‰nh sáģ­a liÃĒn káēŋt", "edit_location": "Cháģ‰nh sáģ­a váģ‹ trí", + "edit_location_action_prompt": "{count} Ä‘ÃŖ sáģ­a váģ‹ trí", "edit_location_dialog_title": "Váģ‹ trí", "edit_name": "Cháģ‰nh sáģ­a tÃĒn", "edit_people": "Cháģ‰nh sáģ­a ngưáģi", @@ -828,10 +936,11 @@ "editor_crop_tool_h2_rotation": "Xoay", "email": "Email", "email_notifications": "Thông bÃĄo qua email", - "empty_folder": "Thư máģĨc ráģ—ng", + "empty_folder": "Thư máģĨc tráģ‘ng", "empty_trash": "Dáģn sáēĄch thÚng rÃĄc", - "empty_trash_confirmation": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n dáģn sáēĄch thÚng rÃĄc không? Điáģu này sáēŊ xÃŗa vÄŠnh viáģ…n táēĨt cáēŖ cÃĄc máģĨc trong thÚng rÃĄc kháģi Immich.\nBáēĄn không tháģƒ hoàn tÃĄc hành đáģ™ng này!", + "empty_trash_confirmation": "BáēĄn cÃŗ cháē¯c muáģ‘n dáģn sáēĄch thÚng rÃĄc? Điáģu này sáēŊ xÃŗa vÄŠnh viáģ…n táēĨt cáēŖ cÃĄc táģ‡p trong thÚng rÃĄc kháģi Immich.\nBáēĄn không tháģƒ hoàn tÃĄc hành đáģ™ng này!", "enable": "Báē­t", + "enable_backup": "Báē­t sao lưu", "enable_biometric_auth_description": "Nháē­p mÃŖ PIN cáģ§a báēĄn đáģƒ báē­t xÃĄc tháģąc sinh tráē¯c háģc", "enabled": "ÄÃŖ báē­t", "end_date": "Ngày káēŋt thÃēc", @@ -841,76 +950,81 @@ "enter_your_pin_code_subtitle": "Nháē­p mÃŖ PIN cáģ§a báēĄn đáģƒ truy cáē­p thư máģĨc KhÃŗa", "error": "Láģ—i", "error_change_sort_album": "Thay đáģ•i tháģŠ táģą sáē¯p xáēŋp album tháēĨt báēĄi", - "error_delete_face": "Láģ—i khi xÃŗa khuôn máēˇt kháģi áēŖnh", + "error_delete_face": "Láģ—i khi xÃŗa khuôn máēˇt kháģi táģ‡p", + "error_getting_places": "Láģ—i khi láēĨy đáģ‹a điáģƒm", "error_loading_image": "Láģ—i táēŖi áēŖnh", + "error_loading_partners": "Láģ—i khi láēĨy ngưáģi thÃĸn: {error}", "error_saving_image": "Láģ—i: {error}", "error_tag_face_bounding_box": "Láģ—i gáē¯n tháēģ khuôn máēˇt: - không tháģƒ láēĨy đưáģŖc táģa đáģ™ khung bao", "error_title": "Láģ—i - CÃŗ điáģu gÃŦ Ä‘Ãŗ không đÃēng", "errors": { - "cannot_navigate_next_asset": "Không tháģƒ Ä‘iáģu hưáģ›ng đáēŋn áēŖnh tiáēŋp theo", - "cannot_navigate_previous_asset": "Không tháģƒ Ä‘iáģu hưáģ›ng đáēŋn áēŖnh trưáģ›c Ä‘Ãŗ", + "cannot_navigate_next_asset": "Không tháģƒ chuyáģƒn đáēŋn táģ‡p tiáēŋp theo", + "cannot_navigate_previous_asset": "Không tháģƒ chuyáģƒn đáēŋn táģ‡p trưáģ›c Ä‘Ãŗ", "cant_apply_changes": "Không tháģƒ ÃĄp dáģĨng thay đáģ•i", "cant_change_activity": "Không tháģƒ {enabled, select, true {disable} other {enable}} hoáēĄt đáģ™ng", - "cant_change_asset_favorite": "Không tháģƒ thay đáģ•i yÃĒu thích cho áēŖnh", - "cant_change_metadata_assets_count": "Không tháģƒ thay đáģ•i siÃĒu dáģ¯ liáģ‡u cáģ§a {count, plural, one {# máģĨc} other {# máģĨc}}", + "cant_change_asset_favorite": "Không tháģƒ thay đáģ•i viáģ‡c thích táģ‡p", + "cant_change_metadata_assets_count": "Không tháģƒ thay đáģ•i siÃĒu dáģ¯ liáģ‡u cáģ§a {count, plural, one {# táģ‡p} other {# táģ‡p}}", "cant_get_faces": "Không tháģƒ táēŖi khuôn máēˇt", "cant_get_number_of_comments": "Không tháģƒ táēŖi sáģ‘ lưáģŖng bÃŦnh luáē­n", "cant_search_people": "Không tháģƒ tÃŦm kiáēŋm ngưáģi", "cant_search_places": "Không tháģƒ tÃŦm kiáēŋm đáģ‹a điáģƒm", - "error_adding_assets_to_album": "Láģ—i khi thÃĒm áēŖnh vào album", + "error_adding_assets_to_album": "Láģ—i khi thÃĒm táģ‡p vào album", "error_adding_users_to_album": "Láģ—i khi thÃĒm ngưáģi dÚng vào album", "error_deleting_shared_user": "Láģ—i khi xÃŗa ngưáģi dÚng chia sáēģ", "error_downloading": "Láģ—i khi táēŖi xuáģ‘ng {filename}", "error_hiding_buy_button": "Láģ—i khi áēŠn nÃēt mua", - "error_removing_assets_from_album": "Láģ—i khi xÃŗa áēŖnh kháģi album, kiáģƒm tra báēŖng điáģu khiáģƒn đáģƒ biáēŋt thÃĒm chi tiáēŋt", - "error_selecting_all_assets": "Láģ—i khi cháģn táēĨt cáēŖ áēŖnh", + "error_removing_assets_from_album": "Láģ—i khi xÃŗa táģ‡p kháģi album, kiáģƒm tra báēŖng điáģu khiáģƒn đáģƒ biáēŋt thÃĒm chi tiáēŋt", + "error_selecting_all_assets": "Láģ—i khi cháģn táēĨt cáēŖ táģ‡p", "exclusion_pattern_already_exists": "Quy táē¯c loáēĄi tráģĢ này Ä‘ÃŖ táģ“n táēĄi.", "failed_to_create_album": "TáēĄo album tháēĨt báēĄi", "failed_to_create_shared_link": "Không tháģƒ táēĄo liÃĒn káēŋt chia sáēģ", "failed_to_edit_shared_link": "Không tháģƒ cháģ‰nh sáģ­a liÃĒn káēŋt chia sáēģ", "failed_to_get_people": "Không tháģƒ táēŖi ngưáģi", - "failed_to_keep_this_delete_others": "CÃŗ láģ—i trong quÃĄ trÃŦnh xoÃĄ cÃĄc hÃŦnh", - "failed_to_load_asset": "Không tháģƒ táēŖi áēŖnh", - "failed_to_load_assets": "Không tháģƒ táēŖi cÃĄc áēŖnh", + "failed_to_keep_this_delete_others": "XáēŖy ra láģ—i trong quÃĄ trÃŦnh xÃŗa táģ‡p", + "failed_to_load_asset": "Không tháģƒ táēŖi táģ‡p", + "failed_to_load_assets": "Không tháģƒ táēŖi cÃĄc táģ‡p", "failed_to_load_notifications": "Không tháģƒ táēŖi cÃĄc thông bÃĄo", "failed_to_load_people": "Không tháģƒ táēŖi ngưáģi", "failed_to_remove_product_key": "Không tháģƒ xÃŗa khÃŗa sáēŖn pháēŠm", - "failed_to_stack_assets": "Không tháģƒ nhÃŗm cÃĄc áēŖnh", - "failed_to_unstack_assets": "Không tháģƒ huáģˇ xáēŋp nhÃŗm cÃĄc áēŖnh", + "failed_to_reset_pin_code": "Đáēˇt láēĄi mÃŖ PIN không thành công", + "failed_to_stack_assets": "Không tháģƒ xáēŋp nhÃŗm táģ‡p", + "failed_to_unstack_assets": "Không tháģƒ háģ§y xáēŋp nhÃŗm táģ‡p", "failed_to_update_notification_status": "Cáē­p nháē­t tráēĄng thÃĄi thông bÃĄo tháēĨt báēĄi", "incorrect_email_or_password": "Email hoáēˇc máē­t kháēŠu không chính xÃĄc", + "library_folder_already_exists": "Đưáģng dáēĢn nháē­p này Ä‘ÃŖ táģ“n táēĄi.", "paths_validation_failed": "{paths, plural, one {# đưáģng dáēĢn} other {# đưáģng dáēĢn}} không háģŖp láģ‡", "profile_picture_transparent_pixels": "áēĸnh đáēĄi diáģ‡n không tháģƒ cÃŗ điáģƒm áēŖnh trong suáģ‘t. Vui lÃ˛ng phÃŗng to và/hoáēˇc di chuyáģƒn hÃŦnh áēŖnh.", - "quota_higher_than_disk_size": "BáēĄn Ä‘ÃŖ đáēˇt háēĄn máģŠc cao hÆĄn kích thưáģ›c áģ• Ä‘ÄŠa", + "quota_higher_than_disk_size": "BáēĄn Ä‘ÃŖ đáēˇt háēĄn máģŠc cao hÆĄn dung lưáģŖng áģ• Ä‘ÄŠa", + "something_went_wrong": "CÃŗ gÃŦ Ä‘Ãŗ không đÃēng", "unable_to_add_album_users": "Không tháģƒ thÃĒm ngưáģi dÚng vào album", - "unable_to_add_assets_to_shared_link": "Không tháģƒ thÃĒm áēŖnh vào liÃĒn káēŋt chia sáēģ", + "unable_to_add_assets_to_shared_link": "Không tháģƒ thÃĒm táģ‡p vào liÃĒn káēŋt chia sáēģ", "unable_to_add_comment": "Không tháģƒ thÃĒm bÃŦnh luáē­n", "unable_to_add_exclusion_pattern": "Không tháģƒ thÃĒm quy táē¯c loáēĄi tráģĢ", "unable_to_add_partners": "Không tháģƒ thÃĒm ngưáģi thÃĸn", - "unable_to_add_remove_archive": "Không tháģƒ {archived, select, true {xÃŗa áēŖnh kháģi} other {thÃĒm áēŖnh vào}} Kho lưu tráģ¯", - "unable_to_add_remove_favorites": "Không tháģƒ {favorite, select, true {thÃĒm áēŖnh vào} other {xÃŗa áēŖnh kháģi}} MáģĨc yÃĒu thích", - "unable_to_archive_unarchive": "Không tháģƒ {archived, select, true {lưu tráģ¯} other {huáģˇ lưu tráģ¯}}", + "unable_to_add_remove_archive": "Không tháģƒ {archived, select, true {xÃŗa táģ‡p kháģi} other {thÃĒm táģ‡p vào}} Kho lưu tráģ¯", + "unable_to_add_remove_favorites": "Không tháģƒ {favorite, select, true {thÃĒm táģ‡p vào} other {xÃŗa táģ‡p kháģi}} MáģĨc yÃĒu thích", + "unable_to_archive_unarchive": "Không tháģƒ {archived, select, true {lưu tráģ¯} other {báģ lưu tráģ¯}}", "unable_to_change_album_user_role": "Không tháģƒ thay đáģ•i vai trÃ˛ cáģ§a ngưáģi dÚng album", "unable_to_change_date": "Không tháģƒ thay đáģ•i ngày", "unable_to_change_description": "Không tháģƒ thay đáģ•i mô táēŖ", - "unable_to_change_favorite": "Không tháģƒ thay đáģ•i yÃĒu thích cho áēŖnh", + "unable_to_change_favorite": "Không tháģƒ thay đáģ•i viáģ‡c thích táģ‡p", "unable_to_change_location": "Không tháģƒ thay đáģ•i váģ‹ trí", "unable_to_change_password": "Không tháģƒ thay đáģ•i máē­t kháēŠu", "unable_to_change_visibility": "Không tháģƒ thay đáģ•i tráēĄng thÃĄi hiáģƒn tháģ‹ cho {count, plural, one {# ngưáģi} other {# ngưáģi}}", "unable_to_complete_oauth_login": "Không tháģƒ hoàn táēĨt đăng nháē­p OAuth", "unable_to_connect": "Không tháģƒ káēŋt náģ‘i", - "unable_to_copy_to_clipboard": "Không tháģƒ sao chÊp vào clipboard, hÃŖy đáēŖm báēŖo báēĄn đang truy cáē­p trang qua https", + "unable_to_copy_to_clipboard": "Không tháģƒ sao chÊp vào báģ™ nháģ› táēĄm, hÃŖy đáēŖm báēŖo báēĄn đang truy cáē­p trang qua https", "unable_to_create_admin_account": "Không tháģƒ táēĄo tài khoáēŖn quáēŖn tráģ‹ viÃĒn", "unable_to_create_api_key": "Không tháģƒ táēĄo khÃŗa API máģ›i", "unable_to_create_library": "Không tháģƒ táēĄo thư viáģ‡n", "unable_to_create_user": "Không tháģƒ táēĄo ngưáģi dÚng", "unable_to_delete_album": "Không tháģƒ xÃŗa album", - "unable_to_delete_asset": "Không tháģƒ xÃŗa áēŖnh", - "unable_to_delete_assets": "Láģ—i khi xÃŗa cÃĄc áēŖnh", + "unable_to_delete_asset": "Không tháģƒ xÃŗa táģ‡p", + "unable_to_delete_assets": "Láģ—i khi xÃŗa cÃĄc táģ‡p", "unable_to_delete_exclusion_pattern": "Không tháģƒ xÃŗa quy táē¯c loáēĄi tráģĢ", "unable_to_delete_shared_link": "Không tháģƒ xÃŗa liÃĒn káēŋt chia sáēģ", "unable_to_delete_user": "Không tháģƒ xÃŗa ngưáģi dÚng", - "unable_to_download_files": "Không tháģƒ táēŖi xuáģ‘ng táē­p tin", + "unable_to_download_files": "Không tháģƒ táēŖi xuáģ‘ng táģ‡p", "unable_to_edit_exclusion_pattern": "Không tháģƒ cháģ‰nh sáģ­a quy táē¯c loáēĄi tráģĢ", "unable_to_empty_trash": "Không tháģƒ dáģn sáēĄch thÚng rÃĄc", "unable_to_enter_fullscreen": "Không tháģƒ vào cháēŋ đáģ™ toàn màn hÃŦnh", @@ -920,11 +1034,11 @@ "unable_to_hide_person": "Không tháģƒ áēŠn ngưáģi", "unable_to_link_motion_video": "Không tháģƒ liÃĒn káēŋt video chuyáģƒn đáģ™ng", "unable_to_link_oauth_account": "Không tháģƒ liÃĒn káēŋt tài khoáēŖn OAuth", - "unable_to_log_out_all_devices": "Không tháģƒ Ä‘Äƒng xuáēĨt kháģi táēĨt cáēŖ cÃĄc thiáēŋt báģ‹", + "unable_to_log_out_all_devices": "Không tháģƒ Ä‘Äƒng xuáēĨt kháģi táēĨt cáēŖ thiáēŋt báģ‹", "unable_to_log_out_device": "Không tháģƒ Ä‘Äƒng xuáēĨt kháģi thiáēŋt báģ‹", "unable_to_login_with_oauth": "Không tháģƒ Ä‘Äƒng nháē­p váģ›i OAuth", "unable_to_play_video": "Không tháģƒ phÃĄt video", - "unable_to_reassign_assets_existing_person": "Không tháģƒ gÃĄn láēĄi áēŖnh cho {name, select, null {máģ™t ngưáģi hiáģ‡n cÃŗ} other {{name}}}", + "unable_to_reassign_assets_existing_person": "Không tháģƒ gÃĄn láēĄi táģ‡p cho {name, select, null {máģ™t ngưáģi hiáģ‡n cÃŗ} other {{name}}}", "unable_to_reassign_assets_new_person": "Không tháģƒ gÃĄn láēĄi áēŖnh cho máģ™t ngưáģi máģ›i", "unable_to_refresh_user": "Không tháģƒ làm máģ›i ngưáģi dÚng", "unable_to_remove_album_users": "Không tháģƒ xÃŗa ngưáģi dÚng kháģi album", @@ -936,12 +1050,12 @@ "unable_to_reset_password": "Không tháģƒ Ä‘áēˇt láēĄi máē­t kháēŠu", "unable_to_reset_pin_code": "Không tháģƒ Ä‘áēˇt láēĄi mÃŖ PIN", "unable_to_resolve_duplicate": "Không tháģƒ xáģ­ lÃŊ trÚng láēˇp", - "unable_to_restore_assets": "Không tháģƒ khôi pháģĨc áēŖnh", + "unable_to_restore_assets": "Không tháģƒ khôi pháģĨc táģ‡p", "unable_to_restore_trash": "Không tháģƒ khôi pháģĨc thÚng rÃĄc", "unable_to_restore_user": "Không tháģƒ khôi pháģĨc ngưáģi dÚng", "unable_to_save_album": "Không tháģƒ lưu album", "unable_to_save_api_key": "Không tháģƒ lưu khÃŗa API", - "unable_to_save_date_of_birth": "Không tháģƒ lưu ngày sinh", + "unable_to_save_date_of_birth": "Không tháģƒ lưu sinh nháē­t", "unable_to_save_name": "Không tháģƒ lưu tÃĒn", "unable_to_save_profile": "Không tháģƒ lưu háģ“ sÆĄ", "unable_to_save_settings": "Không tháģƒ lưu cài đáēˇt", @@ -960,20 +1074,23 @@ "unable_to_update_settings": "Không tháģƒ cáē­p nháē­t cài đáēˇt", "unable_to_update_timeline_display_status": "Không tháģƒ cáē­p nháē­t tráēĄng thÃĄi hiáģƒn tháģ‹ dÃ˛ng tháģi gian", "unable_to_update_user": "Không tháģƒ cáē­p nháē­t ngưáģi dÚng", - "unable_to_upload_file": "Không tháģƒ táēŖi táē­p tin lÃĒn" + "unable_to_upload_file": "Không tháģƒ táēŖi táģ‡p lÃĒn" }, + "exclusion_pattern": "MáēĢu ngoáēĄi láģ‡", "exif": "Exif", "exif_bottom_sheet_description": "ThÃĒm mô táēŖ...", + "exif_bottom_sheet_description_error": "Láģ—i cáē­p nháē­t mô táēŖ", "exif_bottom_sheet_details": "CHI TIáēžT", "exif_bottom_sheet_location": "ĐáģŠA ĐIáģ‚M", + "exif_bottom_sheet_no_description": "Không cÃŗ mô táēŖ", "exif_bottom_sheet_people": "MáģŒI NGƯáģœI", "exif_bottom_sheet_person_add_person": "ThÃĒm tÃĒn", "exit_slideshow": "ThoÃĄt trÃŦnh chiáēŋu", "expand_all": "MáģŸ ráģ™ng táēĨt cáēŖ", - "experimental_settings_new_asset_list_subtitle": "Đang trong quÃĄ trÃŦnh phÃĄt triáģƒn", + "experimental_settings_new_asset_list_subtitle": "Đang phÃĄt triáģƒn", "experimental_settings_new_asset_list_title": "Báē­t lưáģ›i áēŖnh tháģ­ nghiáģ‡m", "experimental_settings_subtitle": "Sáģ­ dáģĨng cÃŗ tháģƒ ráģ§i ro!", - "experimental_settings_title": "Chưa hoàn thiáģ‡n", + "experimental_settings_title": "Tháģ­ nghiáģ‡m", "expire_after": "Háēŋt háēĄn sau", "expired": "Háēŋt háēĄn", "expires_date": "Háēŋt háēĄn vào {date}", @@ -981,102 +1098,119 @@ "explorer": "KhÃĄm phÃĄ", "export": "XuáēĨt", "export_as_json": "XuáēĨt dưáģ›i dáēĄng JSON", + "export_database": "XuáēĨt cÆĄ sáģŸ dáģ¯ liáģ‡u", + "export_database_description": "XuáēĨt cÆĄ sáģŸ dáģ¯ liáģ‡u SQLite", "extension": "Pháē§n máģŸ ráģ™ng", "external": "BÃĒn ngoài", "external_libraries": "Thư viáģ‡n bÃĒn ngoài", "external_network": "MáēĄng bÃĒn ngoài", - "external_network_sheet_info": "Khi không áģŸ trÃĒn máēĄng Wi-Fi ưu tiÃĒn, áģŠng dáģĨng sáēŊ káēŋt náģ‘i váģ›i mÃĄy cháģ§ thông qua URL đáē§u tiÃĒn bÃĒn dưáģ›i mà nÃŗ cÃŗ tháģƒ truy cáē­p, báē¯t đáē§u táģĢ trÃĒn xuáģ‘ng dưáģ›i", + "external_network_sheet_info": "Khi không áģŸ trÃĒn máēĄng Wi-Fi ưu tiÃĒn, app sáēŊ káēŋt náģ‘i váģ›i mÃĄy cháģ§ thông qua URL đáē§u tiÃĒn bÃĒn dưáģ›i mà nÃŗ cÃŗ tháģƒ truy cáē­p, báē¯t đáē§u táģĢ trÃĒn xuáģ‘ng dưáģ›i", "face_unassigned": "Chưa đưáģŖc gÃĄn", "failed": "TháēĨt báēĄi", + "failed_count": "TháēĨt báēĄi: {count}", "failed_to_authenticate": "XÃĄc tháģąc tháēĨt báēĄi", - "failed_to_load_assets": "Không táēŖi đưáģŖc áēŖnh", + "failed_to_load_assets": "Không táēŖi đưáģŖc táģ‡p", "failed_to_load_folder": "Không táēŖi đưáģŖc thư máģĨc", - "favorite": "YÃĒu thích", - "favorite_or_unfavorite_photo": "YÃĒu thích hoáēˇc báģ yÃĒu thích áēŖnh", - "favorites": "áēĸnh yÃĒu thích", - "favorites_page_no_favorites": "Không tÃŦm tháēĨy áēŖnh yÃĒu thích", + "favorite": "ÄÃŖ thích", + "favorite_action_prompt": "{count} Ä‘ÃŖ thÃĒm vào ÄÃŖ thích", + "favorite_or_unfavorite_photo": "Thích hoáēˇc báģ thích áēŖnh", + "favorites": "ÄÃŖ thích", + "favorites_page_no_favorites": "Không tÃŦm tháēĨy táģ‡p yÃĒu thích", "feature_photo_updated": "ÄÃŖ cáē­p nháē­t áēŖnh náģ•i báē­t", "features": "Tính năng", - "features_setting_description": "QuáēŖn lÃŊ cÃĄc tính năng áģŠng dáģĨng", - "file_name": "TÃĒn táē­p tin", + "features_in_development": "Tính năng đang đưáģŖc phÃĄt triáģƒn", + "features_setting_description": "QuáēŖn lÃŊ cÃĄc tính năng app", + "file_name": "TÃĒn táģ‡p", "file_name_or_extension": "TÃĒn hoáēˇc pháē§n máģŸ ráģ™ng táē­p tin", - "filename": "TÃĒn táē­p tin", - "filetype": "LoáēĄi táē­p tin", + "file_size": "Kích cáģĄ táģ‡p tin", + "filename": "TÃĒn táģ‡p", + "filetype": "LoáēĄi táģ‡p", "filter": "Báģ™ láģc", "filter_people": "Láģc ngưáģi", "filter_places": "Láģc đáģ‹a điáģƒm", "find_them_fast": "TÃŦm nhanh báēąng tÃĒn váģ›i tÃŦm kiáēŋm", + "first": "Đáē§u tiÃĒn", "fix_incorrect_match": "Sáģ­a láģ—i trÚng kháģ›p không chính xÃĄc", "folder": "Thư máģĨc", "folder_not_found": "Không tÃŦm tháēĨy thư máģĨc", "folders": "Thư máģĨc", - "folders_feature_description": "Duyáģ‡t áēŖnh và video theo thư máģĨc trÃĒn háģ‡ tháģ‘ng táē­p tin", - "forgot_pin_code_question": "QuÃĒn mÃŖ PIN cáģ§a báēĄn?", - "forward": "Tiáēŋn váģ phía trưáģ›c", + "folders_feature_description": "Duyáģ‡t áēŖnh và video theo thư máģĨc trÃĒn háģ‡ tháģ‘ng táģ‡p", + "forgot_pin_code_question": "QuÃĒn mÃŖ PIN?", + "forward": "Tiáēŋn váģ trưáģ›c", + "full_path": "Đưáģng dáēĢn đáē§y đáģ§: {path}", "gcast_enabled": "Google Cast", "gcast_enabled_description": "Tính năng này táēŖi cÃĄc tài nguyÃĒn bÃĒn ngoài táģĢ Google đáģƒ hoáēĄt đáģ™ng.", "general": "Chung", + "geolocation_instruction_location": "NháēĨn vào máģ™t táģ‡p cÃŗ táģa đáģ™ GPS đáģƒ sáģ­ dáģĨng váģ‹ trí cáģ§a nÃŗ hoáēˇc cháģn váģ‹ trí tráģąc tiáēŋp táģĢ báēŖn đáģ“", "get_help": "Nháē­n tráģŖ giÃēp", "get_wifiname_error": "Không tháģƒ láēĨy tÃĒn Wi-Fi. HÃŖy đáēŖm báēŖo báēĄn Ä‘ÃŖ cáēĨp cÃĄc quyáģn cáē§n thiáēŋt và đưáģŖc káēŋt náģ‘i váģ›i máēĄng Wi-Fi", "getting_started": "Báē¯t đáē§u", "go_back": "Quay láēĄi", "go_to_folder": "Đi táģ›i thư máģĨc", "go_to_search": "Đi táģ›i tÃŦm kiáēŋm", + "gps": "GPS", + "gps_missing": "Không GPS", "grant_permission": "CáēĨp quyáģn", - "group_albums_by": "NhÃŗm album theo...", + "group_albums_by": "Xáēŋp nhÃŗm album theo...", "group_country": "NhÃŗm theo quáģ‘c gia", "group_no": "Không nhÃŗm", - "group_owner": "NhÃŗm theo cháģ§ sáģŸ háģ¯u", + "group_owner": "Xáēŋp nhÃŗm theo cháģ§ sáģŸ háģ¯u", "group_places_by": "NhÃŗm đáģ‹a điáģƒm theoâ€Ļ", - "group_year": "NhÃŗm theo năm", + "group_year": "Xáēŋp nhÃŗm theo năm", "haptic_feedback_switch": "Báē­t pháēŖn háģ“i haptic", "haptic_feedback_title": "PháēŖn háģ“i Hapic", "has_quota": "HáēĄn máģŠc", - "header_settings_add_header_tip": "ThÃĒm Header", - "header_settings_field_validator_msg": "Trưáģng này không đưáģŖc đáģƒ tráģ‘ng", + "hash_asset": "MÃŖ hÃŗa táģ‡p", + "hashed_assets": "Táģ‡p mÃŖ hÃŗa", + "hashing": "Đang băm", + "header_settings_add_header_tip": "ThÃĒm header", + "header_settings_field_validator_msg": "Không đưáģŖc đáģƒ tráģ‘ng", "header_settings_header_name_input": "TÃĒn Header", "header_settings_header_value_input": "GiÃĄ tráģ‹ Header", "headers_settings_tile_title": "TiÃĒu đáģ proxy tÚy cháģ‰nh", + "height": "Chiáģu cao", "hi_user": "Chào {name} ({email})", "hide_all_people": "áē¨n táēĨt cáēŖ máģi ngưáģi", "hide_gallery": "áē¨n thư viáģ‡n", "hide_named_person": "áē¨n ngưáģi {name}", "hide_password": "áē¨n máē­t kháēŠu", "hide_person": "áē¨n ngưáģi", + "hide_text_recognition": "áē¨n nháē­n dáēĄng văn báēŖn", "hide_unnamed_people": "áē¨n nháģ¯ng ngưáģi không tÃĒn", - "home_page_add_to_album_conflicts": "ÄÃŖ thÃĒm {added} máģĨc vào album {album}. {failed} máģĨc Ä‘ÃŖ cÃŗ sáēĩn trong album.", - "home_page_add_to_album_err_local": "Không tháģƒ thÃĒm áēŖnh cáģĨc báģ™ vào album, báģ qua", - "home_page_add_to_album_success": "ÄÃŖ thÃĒm {added} máģĨc vào album {album}.", - "home_page_album_err_partner": "Không tháģƒ thÃĒm áēŖnh cáģ§a nguáģi thÃĸn vào album, báģ qua", - "home_page_archive_err_local": "Không tháģƒ lưu tráģ¯ áēŖnh cáģĨc báģ™, báģ qua", - "home_page_archive_err_partner": "Không tháģƒ lưu tráģ¯ áēŖnh cáģ§a ngưáģi thÃĸn, báģ qua", - "home_page_building_timeline": "Đang dáģąng dÃ˛ng tháģi gian áēŖnh", - "home_page_delete_err_partner": "Không tháģƒ xoÃĄ áēŖnh cáģ§a ngưáģi thÃĸn, báģ qua", - "home_page_delete_remote_err_local": "áēĸnh cáģĨc báģ™ trong láģąa cháģn xÃŗa táģĢ xa, báģ qua", - "home_page_favorite_err_local": "Không tháģƒ yÃĒu thích áēŖnh cáģĨc báģ™, báģ qua", - "home_page_favorite_err_partner": "Không tháģƒ yÃĒu thích áēŖnh cáģ§a ngưáģi thÃĸn, báģ qua", - "home_page_first_time_notice": "Náēŋu đÃĸy là láē§n đáē§u báēĄn dÚng áģŠng dáģĨng, hÃŖy cháģn máģ™t album sao lưu đáģƒ dÃ˛ng tháģi gian cÃŗ tháģƒ hiáģƒn tháģ‹ áēŖnh và video cáģ§a báēĄn", - "home_page_locked_error_local": "Không tháģƒ di chuyáģƒn áēŖnh cáģĨc báģ™ Ä‘áēŋn thư máģĨc KhÃŗa, báģ qua", - "home_page_locked_error_partner": "Không tháģƒ di chuyáģƒn áēŖnh ngưáģi thÃĸn đáēŋn thư máģĨc KhÃŗa, báģ qua", - "home_page_share_err_local": "Không tháģƒ chia sáēģ áēŖnh cáģĨc báģ™ qua liÃĒn káēŋt, báģ qua", - "home_page_upload_err_limit": "Cháģ‰ cÃŗ tháģƒ táēŖi lÃĒn táģ‘i đa 30 áēŖnh cÚng máģ™t lÃēc, báģ qua", - "host": "MÃĄy cháģ§", + "home_page_add_to_album_conflicts": "ÄÃŖ thÃĒm {added} táģ‡p vào album {album}. {failed} táģ‡p Ä‘ÃŖ cÃŗ sáēĩn trong album.", + "home_page_add_to_album_err_local": "Không tháģƒ thÃĒm táģ‡p trÃĒn thiáēŋt báģ‹ vào album, báģ qua", + "home_page_add_to_album_success": "ÄÃŖ thÃĒm {added} táģ‡p vào album {album}.", + "home_page_album_err_partner": "Không tháģƒ thÃĒm táģ‡p cáģ§a nguáģi thÃĸn vào album, báģ qua", + "home_page_archive_err_local": "Không tháģƒ lưu tráģ¯ táģ‡p trÃĒn thiáēŋt báģ‹, báģ qua", + "home_page_archive_err_partner": "Không tháģƒ lưu tráģ¯ táģ‡p cáģ§a ngưáģi thÃĸn, báģ qua", + "home_page_building_timeline": "Đang táēĄo dÃ˛ng tháģi gian áēŖnh", + "home_page_delete_err_partner": "Không tháģƒ xÃŗa táģ‡p cáģ§a ngưáģi thÃĸn, báģ qua", + "home_page_delete_remote_err_local": "Táģ‡p trÃĒn thiáēŋt báģ‹ trong láģąa cháģn xÃŗa táģĢ xa, báģ qua", + "home_page_favorite_err_local": "Không tháģƒ thích táģ‡p trÃĒn thiáēŋt báģ‹, báģ qua", + "home_page_favorite_err_partner": "Không tháģƒ thích táģ‡p cáģ§a ngưáģi thÃĸn, báģ qua", + "home_page_first_time_notice": "Náēŋu đÃĸy là láē§n đáē§u báēĄn dÚng app, hÃŖy cháģn máģ™t album sao lưu đáģƒ dÃ˛ng tháģi gian cÃŗ tháģƒ hiáģƒn tháģ‹ áēŖnh và video cáģ§a báēĄn", + "home_page_locked_error_local": "Không tháģƒ di chuyáģƒn táģ‡p trÃĒn thiáēŋt báģ‹ Ä‘áēŋn thư máģĨc KhÃŗa, báģ qua", + "home_page_locked_error_partner": "Không tháģƒ di chuyáģƒn táģ‡p cáģ§a ngưáģi thÃĸn đáēŋn thư máģĨc KhÃŗa, báģ qua", + "home_page_share_err_local": "Không tháģƒ chia sáēģ táģ‡p trÃĒn thiáēŋt báģ‹ qua liÃĒn káēŋt, báģ qua", + "home_page_upload_err_limit": "Cháģ‰ cÃŗ tháģƒ táēŖi lÃĒn táģ‘i đa 30 táģ‡p cÚng lÃēc, báģ qua", + "host": "Host", "hour": "Giáģ", "hours": "Giáģ", "id": "ID", + "idle": "Nhàn ráģ—i", "ignore_icloud_photos": "Báģ qua áēŖnh iCloud", "ignore_icloud_photos_description": "áēĸnh đưáģŖc lưu tráģ¯ trÃĒn iCloud sáēŊ không đưáģŖc táēŖi lÃĒn mÃĄy cháģ§ Immich", - "image": "HÃŦnh áēŖnh", - "image_alt_text_date": "{isVideo, select, true {Video} other {HÃŦnh áēŖnh}} đưáģŖc cháģĨp vào {date}", - "image_alt_text_date_1_person": "{isVideo, select, true {Video} other {HÃŦnh áēŖnh}} đưáģŖc cháģĨp váģ›i {person1} vào {date}", - "image_alt_text_date_2_people": "{isVideo, select, true {Video} other {HÃŦnh áēŖnh}} đưáģŖc cháģĨp váģ›i {person1} và {person2} vào {date}", - "image_alt_text_date_3_people": "{isVideo, select, true {Video} other {HÃŦnh áēŖnh}} đưáģŖc cháģĨp váģ›i {person1}, {person2}, và {person3} vào {date}", - "image_alt_text_date_4_or_more_people": "{isVideo, select, true {Video} other {HÃŦnh áēŖnh}} đưáģŖc cháģĨp váģ›i {person1}, {person2}, và {additionalCount, number} ngưáģi khÃĄc vào {date}", - "image_alt_text_date_place": "{isVideo, select, true {Video} other {HÃŦnh áēŖnh}} đưáģŖc cháģĨp táēĄi {city}, {country} vào {date}", - "image_alt_text_date_place_1_person": "{isVideo, select, true {Video} other {HÃŦnh áēŖnh}} đưáģŖc cháģĨp táēĄi {city}, {country} váģ›i {person1} vào {date}", - "image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {HÃŦnh áēŖnh}} đưáģŖc cháģĨp táēĄi {city}, {country} váģ›i {person1} và {person2} vào {date}", - "image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {HÃŦnh áēŖnh}} đưáģŖc cháģĨp táēĄi {city}, {country} váģ›i {person1}, {person2}, và {person3} vào {date}", - "image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {HÃŦnh áēŖnh}} đưáģŖc cháģĨp táēĄi {city}, {country} váģ›i {person1}, {person2}, và {additionalCount, number} ngưáģi khÃĄc vào {date}", + "image": "áēĸnh", + "image_alt_text_date": "{isVideo, select, true {Video} other {áēĸnh}} đưáģŖc cháģĨp vào {date}", + "image_alt_text_date_1_person": "{isVideo, select, true {Video} other {áēĸnh}} đưáģŖc cháģĨp váģ›i {person1} vào {date}", + "image_alt_text_date_2_people": "{isVideo, select, true {Video} other {áēĸnh}} đưáģŖc cháģĨp váģ›i {person1} và {person2} vào {date}", + "image_alt_text_date_3_people": "{isVideo, select, true {Video} other {áēĸnh}} đưáģŖc cháģĨp váģ›i {person1}, {person2}, và {person3} vào {date}", + "image_alt_text_date_4_or_more_people": "{isVideo, select, true {Video} other {áēĸnh}} đưáģŖc cháģĨp váģ›i {person1}, {person2}, và {additionalCount, number} ngưáģi khÃĄc vào {date}", + "image_alt_text_date_place": "{isVideo, select, true {Video} other {áēĸnh}} đưáģŖc cháģĨp táēĄi {city}, {country} vào {date}", + "image_alt_text_date_place_1_person": "{isVideo, select, true {Video} other {áēĸnh}} đưáģŖc cháģĨp táēĄi {city}, {country} váģ›i {person1} vào {date}", + "image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {áēĸnh}} đưáģŖc cháģĨp táēĄi {city}, {country} váģ›i {person1} và {person2} vào {date}", + "image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {áēĸnh}} đưáģŖc cháģĨp táēĄi {city}, {country} váģ›i {person1}, {person2}, và {person3} vào {date}", + "image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {áēĸnh}} đưáģŖc cháģĨp táēĄi {city}, {country} váģ›i {person1}, {person2}, và {additionalCount, number} ngưáģi khÃĄc vào {date}", "image_saved_successfully": "ÄÃŖ lưu áēŖnh", "image_viewer_page_state_provider_download_started": "ÄÃŖ báē¯t đáē§u táēŖi xuáģ‘ng", "image_viewer_page_state_provider_download_success": "TáēŖi xuáģ‘ng thành công", @@ -1087,10 +1221,12 @@ "import_path": "Đưáģng dáēĢn nháē­p", "in_albums": "Trong {count, plural, one {# album} other {# album}}", "in_archive": "Trong kho lưu tráģ¯", - "include_archived": "Bao gáģ“m cÃĄc áēŖnh lưu tráģ¯", - "include_shared_albums": "Bao gáģ“m cÃĄc album chia sáēģ", - "include_shared_partner_assets": "Bao gáģ“m cÃĄc áēŖnh ngưáģi thÃĸn chia sáēģ", - "individual_share": "Chia sáēģ cÃĄ nhÃĸn", + "in_year": "Vào {year}", + "in_year_selector": "Năm", + "include_archived": "Bao gáģ“m áēŖnh lưu tráģ¯", + "include_shared_albums": "Bao gáģ“m album chia sáēģ", + "include_shared_partner_assets": "Bao gáģ“m áēŖnh ngưáģi thÃĸn chia sáēģ", + "individual_share": "Chia sáēģ riÃĒng láēģ", "individual_shares": "Chia sáēģ cÃĄ nhÃĸn", "info": "Thông tin", "interval": { @@ -1113,44 +1249,52 @@ "jobs": "TÃĄc váģĨ", "keep": "Giáģ¯", "keep_all": "Giáģ¯ táēĨt cáēŖ", - "keep_this_delete_others": "Giáģ¯ áēŖnh này, xÃŗa cÃĄc áēŖnh khÃĄc", - "kept_this_deleted_others": "ÄÃŖ giáģ¯ láēĄi máģĨc này và xÃŗa {count, plural, one {# máģĨc} other {# máģĨc}}", + "keep_this_delete_others": "Giáģ¯ táģ‡p này, xÃŗa cÃĄc táģ‡p khÃĄc", + "kept_this_deleted_others": "ÄÃŖ giáģ¯ láēĄi táģ‡p này và xÃŗa {count, plural, one {# táģ‡p} other {# táģ‡p}}", "keyboard_shortcuts": "Phím táē¯t", "language": "Ngôn ngáģ¯", - "language_no_results_subtitle": "Tháģ­ Ä‘iáģu cháģ‰nh táģĢ khÃŗa tÃŦm kiáēŋm", + "language_no_results_subtitle": "Tháģ­ Ä‘iáģu cháģ‰nh quy táē¯c tÃŦm kiáēŋm", "language_no_results_title": "Không tÃŦm tháēĨy ngôn ngáģ¯", "language_search_hint": "TÃŦm kiáēŋm ngôn ngáģ¯...", "language_setting_description": "Cháģn ngôn ngáģ¯ Æ°a thích cáģ§a báēĄn", "large_files": "Táģ‡p láģ›n", + "last": "Cuáģ‘i cÚng", + "last_months": "{count, plural, one {ThÃĄng trưáģ›c} other {# thÃĄng}} trưáģ›c", "last_seen": "Láē§n cuáģ‘i nhÃŦn tháēĨy", "latest_version": "PhiÃĒn báēŖn máģ›i nháēĨt", "latitude": "VÄŠ đáģ™", "leave": "Ráģi kháģi", - "lens_model": "Kiáģƒu tháēĨu kính", + "leave_album": "Ráģi kháģi album", + "lens_model": "Lens", "let_others_respond": "Cho phÊp bÃŦnh luáē­n", - "level": "CáēĨp đáģ™", + "level": "MáģŠc đáģ™", "library": "Thư viáģ‡n", "library_add_folder": "ThÃĒm thư máģĨc", "library_edit_folder": "Sáģ­a thư máģĨc", "library_options": "TÚy cháģn thư viáģ‡n", "library_page_device_albums": "Album trÃĒn thiáēŋt báģ‹", "library_page_new_album": "Album máģ›i", - "library_page_sort_asset_count": "Sáģ‘ lưáģŖng áēŖnh", + "library_page_sort_asset_count": "Sáģ‘ lưáģŖng táģ‡p", "library_page_sort_created": "Máģ›i táēĄo gáē§n đÃĸy", "library_page_sort_last_modified": "Sáģ­a đáģ•i láē§n cuáģ‘i", - "library_page_sort_title": "TiÃĒu đáģ album", + "library_page_sort_title": "TÃĒn album", "licenses": "GiáēĨy phÊp", "light": "SÃĄng", "like": "Thích", - "like_deleted": "ÄÃŖ xoÃĄ thích", + "like_deleted": "ÄÃŖ báģ thích", "link_motion_video": "LiÃĒn káēŋt video chuyáģƒn đáģ™ng", "link_to_oauth": "LiÃĒn káēŋt đáēŋn OAuth", "linked_oauth_account": "Tài khoáēŖn OAuth Ä‘ÃŖ liÃĒn káēŋt", "list": "Danh sÃĄch", "loading": "Đang táēŖi", "loading_search_results_failed": "TáēŖi káēŋt quáēŖ tÃŦm kiáēŋm không thành công", + "local": "TrÃĒn thiáēŋt báģ‹", + "local_asset_cast_failed": "Không tháģƒ chiáēŋu náģ™i dung chưa đưáģŖc táēŖi lÃĒn mÃĄy cháģ§", + "local_assets": "Táģ‡p trÃĒn thiáēŋt báģ‹", + "local_id": "ID cáģĨc báģ™", + "local_media_summary": "TÃŗm táē¯t phÆ°ÆĄng tiáģ‡n thiáēŋt báģ‹", "local_network": "MáēĄng náģ™i báģ™", - "local_network_sheet_info": "áģ¨ng dáģĨng sáēŊ káēŋt náģ‘i váģ›i mÃĄy cháģ§ qua URL này khi sáģ­ dáģĨng máēĄng Wi-Fi đưáģŖc cháģ‰ Ä‘áģ‹nh", + "local_network_sheet_info": "App sáēŊ káēŋt náģ‘i váģ›i mÃĄy cháģ§ qua URL này khi sáģ­ dáģĨng máēĄng Wi-Fi đưáģŖc cháģ‰ Ä‘áģ‹nh", "location": "Đáģ‹a điáģƒm", "location_permission": "Quyáģn truy cáē­p váģ‹ trí", "location_permission_content": "Đáģƒ sáģ­ dáģĨng tính năng táģą Ä‘áģ™ng chuyáģƒn đáģ•i, Immich cáē§n cÃŗ quyáģn váģ‹ trí chính xÃĄc đáģƒ cÃŗ tháģƒ Ä‘áģc tÃĒn cáģ§a máēĄng Wi-Fi hiáģ‡n táēĄi", @@ -1161,8 +1305,10 @@ "location_picker_longitude_hint": "Nháē­p kinh đáģ™ cáģ§a báēĄn", "lock": "KhÃŗa", "locked_folder": "KhÃŗa", + "log_detail_title": "Chi tiáēŋt log", "log_out": "Đăng xuáēĨt", - "log_out_all_devices": "Đăng xuáēĨt táēĨt cáēŖ cÃĄc thiáēŋt báģ‹", + "log_out_all_devices": "Đăng xuáēĨt táēĨt cáēŖ thiáēŋt báģ‹", + "logged_in_as": "ÄÃŖ đăng nháē­p {user}", "logged_out_all_devices": "TáēĨt cáēŖ cÃĄc thiáēŋt báģ‹ Ä‘ÃŖ đăng xuáēĨt", "logged_out_device": "Thiáēŋt báģ‹ Ä‘ÃŖ đăng xuáēĨt", "login": "Đăng nháē­p", @@ -1188,35 +1334,44 @@ "login_has_been_disabled": "Đăng nháē­p Ä‘ÃŖ báģ‹ vô hiáģ‡u hÃŗa.", "login_password_changed_error": "Thay đáģ•i máē­t kháēŠu không thành công", "login_password_changed_success": "Cáē­p nháē­t máē­t kháēŠu thành công", - "logout_all_device_confirmation": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n đăng xuáēĨt táēĨt cáēŖ cÃĄc thiáēŋt báģ‹ không?", - "logout_this_device_confirmation": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n đăng xuáēĨt thiáēŋt báģ‹ này không?", + "logout_all_device_confirmation": "BáēĄn cÃŗ cháē¯c muáģ‘n đăng xuáēĨt táēĨt cáēŖ thiáēŋt báģ‹?", + "logout_this_device_confirmation": "BáēĄn cÃŗ cháē¯c muáģ‘n đăng xuáēĨt thiáēŋt báģ‹ này?", + "logs": "Log", "longitude": "Kinh đáģ™", "look": "Xem", "loop_videos": "Láēˇp video", "loop_videos_description": "Báē­t đáģƒ video táģą Ä‘áģ™ng láēˇp láēĄi trong trÃŦnh xem chi tiáēŋt.", "main_branch_warning": "BáēĄn đang dÚng phiÃĒn báēŖn đang phÃĄt triáģƒn; chÃēng tôi khuyÃĒn báēĄn nÃĒn dÚng phiÃĒn báēŖn phÃĄt hành!", "main_menu": "Menu chính", + "maintenance_description": "Immich Ä‘ÃŖ đưáģŖc đáēˇt vào cháēŋ đáģ™ báēŖo trÃŦ.", + "maintenance_end": "Káēŋt thÃēc cháēŋ đáģ™ báēŖo trÃŦ", + "maintenance_end_error": "Không tháģƒ káēŋt thÃēc cháēŋ đáģ™ báēŖo trÃŦ.", + "maintenance_logged_in_as": "Hiáģ‡n táēĄi Ä‘ÃŖ đăng nháē­p {user}", "maintenance_title": "TáēĄm tháģi không kháēŖ dáģĨng", "make": "ThÆ°ÆĄng hiáģ‡u", "manage_geolocation": "QuáēŖn lÃŊ đáģ‹a điáģƒm", + "manage_media_access_rationale": "Đáģƒ cÃŗ tháģƒ di chuyáģƒn táģ‡p vào thÚng rÃĄc và khôi pháģĨc chÃēng táģĢ Ä‘Ãŗ.", + "manage_media_access_settings": "MáģŸ cài đáēˇt", + "manage_media_access_subtitle": "Cho phÊp app [Immich] quáēŖn lÃŊ và di chuyáģƒn táģ‡p.", + "manage_media_access_title": "QuáēŖn lÃŊ phÆ°ÆĄng tiáģ‡n", "manage_shared_links": "QuáēŖn lÃŊ liÃĒn káēŋt chia sáēģ", "manage_sharing_with_partners": "QuáēŖn lÃŊ chia sáēģ váģ›i ngưáģi thÃĸn", - "manage_the_app_settings": "QuáēŖn lÃŊ cài đáēˇt áģŠng dáģĨng", + "manage_the_app_settings": "QuáēŖn lÃŊ cài đáēˇt app", "manage_your_account": "QuáēŖn lÃŊ tài khoáēŖn cáģ§a báēĄn", "manage_your_api_keys": "QuáēŖn lÃŊ cÃĄc khÃŗa API cáģ§a báēĄn", "manage_your_devices": "QuáēŖn lÃŊ cÃĄc thiáēŋt báģ‹ Ä‘ÃŖ đăng nháē­p cáģ§a báēĄn", "manage_your_oauth_connection": "QuáēŖn lÃŊ káēŋt náģ‘i OAuth cáģ§a báēĄn", "map": "BáēŖn đáģ“", - "map_assets_in_bounds": "{count} áēŖnh", + "map_assets_in_bounds": "{count, plural, =0 {Không cÃŗ áēŖnh áģŸ khu váģąc này} one {# áēŖnh} other {# áēŖnh}}", "map_cannot_get_user_location": "Không tháģƒ xÃĄc đáģ‹nh váģ‹ trí cáģ§a báēĄn", "map_location_dialog_yes": "CÃŗ", "map_location_picker_page_use_location": "DÚng váģ‹ trí này", "map_location_service_disabled_content": "Cáē§n báē­t dáģ‹ch váģĨ đáģ‹nh váģ‹ Ä‘áģƒ hiáģƒn tháģ‹ áēŖnh hoáēˇc video táģĢ váģ‹ trí hiáģ‡n táēĄi cáģ§a báēĄn. BáēĄn cÃŗ muáģ‘n báē­t nÃŗ ngay bÃĸy giáģ không?", "map_location_service_disabled_title": "Dáģ‹ch váģĨ váģ‹ trí báģ‹ vô hiáģ‡u hoÃĄ", - "map_marker_for_images": "ÄÃĄnh dáēĨu báēŖn đáģ“ cho hÃŦnh áēŖnh cháģĨp táēĄi {city}, {country}", - "map_marker_with_image": "ÄÃĄnh dáēĨu báēŖn đáģ“ váģ›i hÃŦnh áēŖnh", - "map_no_location_permission_content": "Cáē§n quyáģn truy cáē­p váģ‹ trí đáģƒ hiáģƒn tháģ‹ áēŖnh táģĢ váģ‹ trí hiáģ‡n táēĄi cáģ§a báēĄn. BáēĄn cÃŗ muáģ‘n cho phÊp ngay bÃĸy giáģ không?", - "map_no_location_permission_title": "áģ¨ng dáģĨng không đưáģŖc phÊp truy cáē­p váģ‹ trí", + "map_marker_for_images": "ÄÃĄnh dáēĨu báēŖn đáģ“ cho áēŖnh cháģĨp táēĄi {city}, {country}", + "map_marker_with_image": "ÄÃĄnh dáēĨu báēŖn đáģ“ váģ›i áēŖnh", + "map_no_location_permission_content": "Cáē§n quyáģn truy cáē­p váģ‹ trí đáģƒ hiáģƒn tháģ‹ táģ‡p táģĢ váģ‹ trí hiáģ‡n táēĄi cáģ§a báēĄn. BáēĄn cÃŗ muáģ‘n cho phÊp ngay bÃĸy giáģ không?", + "map_no_location_permission_title": "App không đưáģŖc phÊp truy cáē­p váģ‹ trí", "map_settings": "Cài đáēˇt báēŖn đáģ“", "map_settings_dark_mode": "Cháēŋ đáģ™ táģ‘i", "map_settings_date_range_option_day": "Trong vÃ˛ng 24 giáģ qua", @@ -1233,6 +1388,7 @@ "mark_as_read": "ÄÃĄnh dáēĨu Ä‘ÃŖ đáģc", "marked_all_as_read": "ÄÃŖ Ä‘ÃĄnh dáēĨu táēĨt cáēŖ Ä‘ÃŖ đáģc", "matches": "Kháģ›p", + "matching_assets": "Táģ‡p trÚng kháģ›p", "media_type": "LoáēĄi phÆ°ÆĄng tiáģ‡n", "memories": "Káģˇ niáģ‡m", "memories_all_caught_up": "BáēĄn Ä‘ÃŖ xem háēŋt ráģ“i", @@ -1246,42 +1402,51 @@ "merge": "HáģŖp nháēĨt", "merge_people": "HáģŖp nháēĨt ngưáģi", "merge_people_limit": "BáēĄn cháģ‰ cÃŗ tháģƒ háģŖp nháēĨt táģ‘i đa 5 khuôn máēˇt cÚng máģ™t lÃēc", - "merge_people_prompt": "BáēĄn cÃŗ muáģ‘n háģŖp nháēĨt nháģ¯ng ngưáģi này không? Hành đáģ™ng này không tháģƒ hoàn tÃĄc.", + "merge_people_prompt": "BáēĄn cÃŗ muáģ‘n háģŖp nháēĨt nháģ¯ng ngưáģi này? Hành đáģ™ng này không tháģƒ hoàn tÃĄc.", "merge_people_successfully": "HáģŖp nháēĨt ngưáģi thành công", "merged_people_count": "ÄÃŖ háģŖp nháēĨt {count, plural, one {# ngưáģi} other {# ngưáģi}}", "minimize": "Thu nháģ", "minute": "PhÃēt", "minutes": "PhÃēt", "missing": "Thiáēŋu", + "mobile_app": "áģ¨ng dáģĨng di đáģ™ng", + "mobile_app_download_onboarding_note": "TáēŖi xuáģ‘ng app đáģ“ng hành báēąng cÃĄc tÚy cháģn sau", "model": "DÃ˛ng", "month": "ThÃĄng", "monthly_title_text_date_format": "MMMM y", "more": "ThÃĒm", "move": "Di chuyáģƒn", "move_off_locked_folder": "Di chuyáģƒn ra kháģi thư máģĨc KhÃŗa", + "move_to": "Chuyáģƒn đáēŋn", "move_to_lock_folder_action_prompt": "{count} Ä‘ÃŖ đưáģŖc thÃĒm vào thư máģĨc KhÃŗa", "move_to_locked_folder": "Di chuyáģƒn đáēŋn thư máģĨc KhÃŗa", "move_to_locked_folder_confirmation": "áēĸnh và video này sáēŊ báģ‹ xÃŗa kháģi cÃĄc album, cháģ‰ cÃŗ tháģƒ xem đưáģŖc trong thư máģĨc KhÃŗa", - "moved_to_archive": "ÄÃŖ di chuyáģƒn {count, plural, one {# áēŖnh} other {# áēŖnh}} đáēŋn lưu tráģ¯", - "moved_to_library": "ÄÃŖ di chuyáģƒn {count, plural, one {# áēŖnh} other {# áēŖnh}} đáēŋn thư viáģ‡n", + "moved_to_archive": "ÄÃŖ di chuyáģƒn {count, plural, one {# táģ‡p} other {# táģ‡p}} đáēŋn lưu tráģ¯", + "moved_to_library": "ÄÃŖ di chuyáģƒn {count, plural, one {# táģ‡p} other {# táģ‡p}} đáēŋn thư viáģ‡n", "moved_to_trash": "ÄÃŖ chuyáģƒn vào thÚng rÃĄc", - "multiselect_grid_edit_date_time_err_read_only": "Không tháģƒ cháģ‰nh sáģ­a ngày cáģ§a áēŖnh cháģ‰ cÃŗ quyáģn đáģc, báģ qua", - "multiselect_grid_edit_gps_err_read_only": "Không tháģƒ cháģ‰nh sáģ­a váģ‹ trí cáģ§a áēŖnh cháģ‰ cÃŗ quyáģn đáģc, báģ qua", + "multiselect_grid_edit_date_time_err_read_only": "Không tháģƒ cháģ‰nh sáģ­a ngày cáģ§a táģ‡p cháģ‰ cÃŗ quyáģn đáģc, báģ qua", + "multiselect_grid_edit_gps_err_read_only": "Không tháģƒ cháģ‰nh sáģ­a váģ‹ trí cáģ§a táģ‡p cháģ‰ cÃŗ quyáģn đáģc, báģ qua", "mute_memories": "Táē¯t tiáēŋng Káģˇ niáģ‡m", "my_albums": "Album cáģ§a tôi", "name": "TÃĒn", "name_or_nickname": "TÃĒn hoáēˇc biáģ‡t danh", + "navigate": "Điáģu hưáģ›ng", + "navigate_to_time": "Xem Tháģi gian", "network_requirement_photos_upload": "DÚng dáģ¯ liáģ‡u di đáģ™ng sao lưu áēŖnh", "network_requirement_videos_upload": "DÚng dáģ¯ liáģ‡u di đáģ™ng sao lưu video", + "network_requirements": "Káēŋt náģ‘i máēĄng", + "network_requirements_updated": "Káēŋt náģ‘i máēĄng Ä‘ÃŖ thay đáģ•i, đang đáēˇt láēĄi hàng đáģŖi sao lưu", "networking_settings": "MáēĄng", - "networking_subtitle": "QuáēŖn lÃŊ cÃĄc đáģ‹a cháģ‰ mÃĄy cháģ§", + "networking_subtitle": "CÃĄc đáģ‹a cháģ‰ mÃĄy cháģ§", "never": "Không bao giáģ", "new_album": "Album máģ›i", "new_api_key": "KhÃŗa API máģ›i", + "new_date_range": "KhoáēŖng ngày máģ›i", "new_password": "Máē­t kháēŠu máģ›i", "new_person": "Ngưáģi máģ›i", "new_pin_code": "MÃŖ PIN máģ›i", "new_pin_code_subtitle": "ĐÃĸy là láē§n đáē§u báēĄn vào thư máģĨc KhÃŗa. HÃŖy táēĄo mÃŖ PIN đáģƒ truy cáē­p an toàn", + "new_timeline": "DÃ˛ng tháģi gian kiáģƒu máģ›i", "new_update": "Cáē­p nháē­t máģ›i", "new_user_created": "Ngưáģi dÚng máģ›i Ä‘ÃŖ đưáģŖc táēĄo", "new_version_available": "CÓ PHIÊN BáēĸN MáģšI", @@ -1289,26 +1454,34 @@ "next": "Tiáēŋp theo", "next_memory": "Káģˇ niáģ‡m tiáēŋp theo", "no": "Không", - "no_albums_message": "TáēĄo album đáģƒ táģ• sáē¯p xáēŋp áēŖnh và video cáģ§a báēĄn", + "no_albums_message": "TáēĄo album đáģƒ sáē¯p xáēŋp áēŖnh và video cáģ§a báēĄn", "no_albums_with_name_yet": "CÃŗ váēģ như báēĄn chưa cÃŗ báēĨt káģŗ album nào váģ›i tÃĒn này.", "no_albums_yet": "CÃŗ váēģ như báēĄn chưa cÃŗ báēĨt káģŗ album nào.", "no_archived_assets_message": "Lưu tráģ¯ áēŖnh và video đáģƒ áēŠn chÃēng kháģi thư viáģ‡n áēĸnh cáģ§a báēĄn", - "no_assets_message": "NHáē¤P VÀO Đáģ‚ TáēĸI LÊN áēĸNH ĐáēĻU TIÊN CáģĻA Báē N", - "no_assets_to_show": "Không cÃŗ máģĨc nào đáģƒ hiáģƒn tháģ‹", + "no_assets_message": "NHáē¤N VÀO Đáģ‚ TáēĸI LÊN áēĸNH ĐáēĻU TIÊN CáģĻA Báē N", + "no_assets_to_show": "Không cÃŗ gÃŦ đáģƒ hiáģƒn tháģ‹", + "no_cast_devices_found": "Không tÃŦm tháēĨy thiáēŋt báģ‹ chiáēŋu", + "no_checksum_local": "Không cÃŗ checksum kháēŖ dáģĨng - không tháģƒ truy xuáēĨt táģ‡p trÃĒn thiáēŋt báģ‹", + "no_checksum_remote": "Không cÃŗ checksum kháēŖ dáģĨng - không tháģƒ truy xuáēĨt táģ‡p trÃĒn mÃĸy", + "no_devices": "Không cÃŗ thiáēŋt báģ‹ Ä‘Æ°áģŖc cáēĨp quyáģn", "no_duplicates_found": "Không tÃŦm tháēĨy cÃĄc máģĨc trÚng láēˇp.", "no_exif_info_available": "Không cÃŗ thông tin exif", "no_explore_results_message": "TáēŖi thÃĒm áēŖnh lÃĒn đáģƒ khÃĄm phÃĄ báģ™ sưu táē­p cáģ§a báēĄn.", "no_favorites_message": "ThÃĒm áēŖnh yÃĒu thích đáģƒ nhanh chÃŗng tÃŦm tháēĨy nháģ¯ng báģŠc áēŖnh và video đáēšp nháēĨt cáģ§a báēĄn", "no_libraries_message": "TáēĄo máģ™t thư viáģ‡n bÃĒn ngoài đáģƒ xem áēŖnh và video cáģ§a báēĄn", + "no_local_assets_found": "Không tÃŦm tháēĨy táģ‡p trÃĒn thiáēŋt báģ‹ nào váģ›i checksum này", "no_location_set": "Chưa cÃŗ đáģ‹a điáģƒm đưáģŖc đáēˇt", "no_locked_photos_message": "áēĸnh và video trong thư máģĨc KhÃŗa sáēŊ đưáģŖc áēŠn đi và không hiáģƒn tháģ‹ khi báēĄn duyáģ‡t hay tÃŦm kiáēŋm trong thư viáģ‡n.", "no_name": "Không cÃŗ tÃĒn", "no_notifications": "Không cÃŗ thông bÃĄo", "no_people_found": "Không cÃŗ ngưáģi nào kháģ›p váģ›i tÃŦm kiáēŋm", "no_places": "Không cÃŗ đáģ‹a điáģƒm", + "no_remote_assets_found": "Không tÃŦm tháēĨy táģ‡p trÃĒn mÃĸy nào váģ›i checksum này", "no_results": "Không cÃŗ káēŋt quáēŖ", "no_results_description": "Tháģ­ máģ™t táģĢ Ä‘áģ“ng nghÄŠa hoáēˇc táģĢ khÃŗa táģ•ng quÃĄt hÆĄn", "no_shared_albums_message": "TáēĄo máģ™t album đáģƒ chia sáēģ áēŖnh và video váģ›i máģi ngưáģi trong máēĄng cáģ§a báēĄn", + "no_uploads_in_progress": "Không cÃŗ táēŖi lÃĒn nào đang tiáēŋn hành", + "not_allowed": "Không cho phÊp", "not_available": "Thiáēŋu", "not_in_any_album": "Không thuáģ™c album nào", "not_selected": "Không đưáģŖc cháģn", @@ -1323,34 +1496,41 @@ "notifications": "Thông bÃĄo", "notifications_setting_description": "QuáēŖn lÃŊ thông bÃĄo", "oauth": "OAuth", + "obtainium_configurator": "CáēĨu hÃŦnh Obtainium", + "obtainium_configurator_instructions": "Sáģ­ dáģĨng Obtainium đáģƒ cài đáēˇt và cáē­p nháē­t áģŠng dáģĨng Android tráģąc tiáēŋp táģĢ báēŖn phÃĄt hành GitHub cáģ§a Immich. TáēĄo khÃŗa API và cháģn máģ™t biáēŋn tháģƒ Ä‘áģƒ táēĄo liÃĒn káēŋt cáēĨu hÃŦnh Obtainium cáģ§a báēĄn", + "ocr": "OCR", "official_immich_resources": "Tài nguyÃĒn chính tháģŠc cáģ§a Immich", "offline": "NgoáēĄi tuyáēŋn", "offset": "Đáģ™ láģ‡ch", "ok": "Đáģ“ng ÃŊ", "oldest_first": "CÅŠ nháēĨt trưáģ›c", - "on_this_device": "TrÃĒn mÃĄy này", + "on_this_device": "TrÃĒn thiáēŋt báģ‹ này", "onboarding": "Hưáģ›ng dáēĢn sáģ­ dáģĨng", "onboarding_locale_description": "Cháģn ngôn ngáģ¯ Æ°a thích cáģ§a báēĄn. BáēĄn cÃŗ tháģƒ thay đáģ•i láēĄi sau trong cài đáēˇt.", "onboarding_privacy_description": "CÃĄc tính năng (tÚy cháģn) sau đÃĸy pháģĨ thuáģ™c vào cÃĄc dáģ‹ch váģĨ bÃĒn ngoài và cÃŗ tháģƒ báģ‹ táē¯t báēĨt káģŗ lÃēc nào trong cài đáēˇt.", - "onboarding_server_welcome_description": "HÃŖy thiáēŋt láē­p phiÃĒn báēŖn cáģ§a báēĄn váģ›i máģ™t sáģ‘ cài đáēˇt pháģ• biáēŋn.", - "onboarding_theme_description": "Cháģn cháģ§ Ä‘áģ màu sáē¯c cho tài khoáēŖn riÃĒng cáģ§a báēĄn. BáēĄn cÃŗ tháģƒ thay đáģ•i điáģu này sau trong cài đáēˇt cáģ§a báēĄn.", + "onboarding_server_welcome_description": "HÃŖy thiáēŋt láē­p mÃĄy cháģ§ cáģ§a báēĄn váģ›i máģ™t sáģ‘ cài đáēˇt pháģ• biáēŋn.", + "onboarding_theme_description": "Cháģn màu cháģ§ Ä‘áģ cho tài khoáēŖn riÃĒng cáģ§a báēĄn. BáēĄn cÃŗ tháģƒ thay đáģ•i điáģu này sau trong cài đáēˇt cáģ§a báēĄn.", "onboarding_user_welcome_description": "Báē¯t đáē§u thôi nào!", "onboarding_welcome_user": "Chào máģĢng, {user}", "online": "Tráģąc tuyáēŋn", - "only_favorites": "Cháģ‰ yÃĒu thích", + "only_favorites": "Cháģ‰ lưáģŖt thích", "open": "MáģŸ", "open_in_map_view": "MáģŸ trong báēŖn đáģ“", "open_in_openstreetmap": "MáģŸ trong OpenStreetMap", "open_the_search_filters": "MáģŸ báģ™ láģc tÃŦm kiáēŋm", "options": "TÚy cháģn", "or": "hoáēˇc", + "organize_into_albums": "Sáē¯p xáēŋp thành album", + "organize_into_albums_description": "Đưa áēŖnh hiáģ‡n cÃŗ vào album báēąng cÃĄch sáģ­ dáģĨng cài đáēˇt đáģ“ng báģ™ hiáģ‡n táēĄi", "organize_your_library": "Sáē¯p xáēŋp thư viáģ‡n cáģ§a báēĄn", - "original": "Gáģ‘c", + "original": "gáģ‘c", "other": "KhÃĄc", "other_devices": "Thiáēŋt báģ‹ khÃĄc", + "other_entities": "CÃĄc tháģąc tháģƒ khÃĄc", "other_variables": "CÃĄc tham sáģ‘ khÃĄc", "owned": "SáģŸ háģ¯u", "owner": "Cháģ§ sáģŸ háģ¯u", + "page": "Trang", "partner": "Ngưáģi thÃĸn", "partner_can_access": "{partner} cÃŗ tháģƒ truy cáē­p", "partner_can_access_assets": "TáēĨt cáēŖ áēŖnh và video cáģ§a báēĄn ngoáēĄi tráģĢ nháģ¯ng áēŖnh và video trong máģĨc ÄÃŖ lưu tráģ¯ và ÄÃŖ xÃŗa", @@ -1382,15 +1562,15 @@ "pending": "Đang cháģ xáģ­ lÃŊ", "people": "Máģi ngưáģi", "people_edits_count": "ÄÃŖ cháģ‰nh sáģ­a {count, plural, one {# ngưáģi} other {# ngưáģi}}", - "people_feature_description": "Duyáģ‡t áēŖnh và video đưáģŖc nhÃŗm theo ngưáģi", + "people_feature_description": "Duyáģ‡t áēŖnh và video đưáģŖc xáēŋp nhÃŗm theo ngưáģi", "people_sidebar_description": "Hiáģƒn tháģ‹ máģĨc Máģi ngưáģi trong thanh bÃĒn", "permanent_deletion_warning": "CáēŖnh bÃĄo xÃŗa vÄŠnh viáģ…n", "permanent_deletion_warning_setting_description": "Hiáģƒn tháģ‹ cáēŖnh bÃĄo khi xÃŗa vÄŠnh viáģ…n áēŖnh", "permanently_delete": "XÃŗa vÄŠnh viáģ…n", - "permanently_delete_assets_count": "XÃŗa vÄŠnh viáģ…n {count, plural, one {máģĨc} other {máģĨc}}", - "permanently_delete_assets_prompt": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n xÃŗa vÄŠnh viáģ…n {count, plural, one {máģĨc này?} other {# máģĨc này?}} Điáģu này cÅŠng sáēŊ xÃŗa {count, plural, one {nÃŗ kháģi} other {chÃēng kháģi}} cÃĄc album.", - "permanently_deleted_asset": "áēĸnh Ä‘ÃŖ báģ‹ xÃŗa vÄŠnh viáģ…n", - "permanently_deleted_assets_count": "ÄÃŖ xÃŗa vÄŠnh viáģ…n {count, plural, one {# máģĨc} other {# máģĨc}}", + "permanently_delete_assets_count": "XÃŗa vÄŠnh viáģ…n {count, plural, one {táģ‡p} other {táģ‡p}}", + "permanently_delete_assets_prompt": "BáēĄn cÃŗ cháē¯c muáģ‘n xÃŗa vÄŠnh viáģ…n {count, plural, one {táģ‡p này?} other {# táģ‡p này?}} Điáģu này cÅŠng sáēŊ xÃŗa {count, plural, one {nÃŗ kháģi} other {chÃēng kháģi}} cÃĄc album.", + "permanently_deleted_asset": "Táģ‡p Ä‘ÃŖ báģ‹ xÃŗa vÄŠnh viáģ…n", + "permanently_deleted_assets_count": "ÄÃŖ xÃŗa vÄŠnh viáģ…n {count, plural, one {# táģ‡p} other {# táģ‡p}}", "permission": "Quyáģn", "permission_empty": "Quyáģn cáģ§a báēĄn không đưáģŖc đáģƒ tráģ‘ng", "permission_onboarding_back": "Quay láēĄi", @@ -1402,6 +1582,9 @@ "permission_onboarding_permission_limited": "Quyáģn truy cáē­p vào áēŖnh cáģ§a báēĄn báģ‹ háēĄn cháēŋ. Đáģƒ Immich sao lưu và quáēŖn lÃŊ toàn báģ™ thư viáģ‡n áēŖnh cáģ§a báēĄn, hÃŖy cáēĨp quyáģn truy cáē­p toàn báģ™ áēŖnh trong Cài đáēˇt.", "permission_onboarding_request": "Immich cáē§n quyáģn đáģƒ xem áēŖnh và video cáģ§a báēĄn.", "person": "Máģi ngưáģi", + "person_age_months": "{months, plural, one {# thÃĄng} other {# thÃĄng}} tuáģ•i", + "person_age_year_months": "1 năm, {months, plural, one {# thÃĄng} other {# thÃĄng}} tuáģ•i", + "person_age_years": "{years, plural, other {# năm}} tuáģ•i", "person_birthdate": "Sinh vào {date}", "person_hidden": "{name}{hidden, select, true { (Ä‘ÃŖ áēŠn)} other {}}", "photo_shared_all_users": "CÃŗ váēģ như báēĄn Ä‘ÃŖ chia sáēģ áēŖnh cáģ§a mÃŦnh váģ›i táēĨt cáēŖ ngưáģi dÚng hoáēˇc báēĄn không cÃŗ ngưáģi dÚng nào đáģƒ chia sáēģ.", @@ -1410,6 +1593,8 @@ "photos_count": "{count, plural, one {{count, number} áēĸnh} other {{count, number} áēĸnh}}", "photos_from_previous_years": "áēĸnh táģĢ cÃĄc năm trưáģ›c", "pick_a_location": "Cháģn máģ™t váģ‹ trí", + "pick_custom_range": "TÚy cháģ‰nh khoáēŖng", + "pick_date_range": "Cháģn khoáēŖng ngày", "pin_code_changed_successfully": "Thay đáģ•i mÃŖ PIN thành công", "pin_code_reset_successfully": "Đáēˇt láēĄi mÃŖ PIN thành công", "pin_code_setup_successfully": "Thiáēŋt láē­p mÃŖ PIN thành công", @@ -1420,11 +1605,15 @@ "play": "PhÃĄt", "play_memories": "PhÃĄt káģˇ niáģ‡m", "play_motion_photo": "PhÃĄt áēŖnh chuyáģƒn đáģ™ng", - "play_or_pause_video": "PhÃĄt hoáēˇc táēĄm dáģĢng video", + "play_or_pause_video": "PhÃĄt hoáēˇc dáģĢng video", + "play_original_video": "PhÃĄt video gáģ‘c", + "play_original_video_setting_description": "NÃĒn phÃĄt video gáģ‘c thay vÃŦ video Ä‘ÃŖ chuyáģƒn mÃŖ. Náēŋu táģ‡p gáģ‘c không tÆ°ÆĄng thích, video cÃŗ tháģƒ không phÃĄt đưáģŖc.", + "play_transcoded_video": "PhÃĄt video Ä‘ÃŖ chuyáģƒn mÃŖ", "please_auth_to_access": "Vui lÃ˛ng xÃĄc tháģąc đáģƒ truy cáē­p", "port": "Cáģ•ng", - "preferences_settings_subtitle": "QuáēŖn lÃŊ tÚy cháģn cáģ§a áģŠng dáģĨng", - "preferences_settings_title": "TÚy cháģn", + "preferences_settings_subtitle": "TÚy cháģ‰nh tráēŖi nghiáģ‡m app", + "preferences_settings_title": "CÃĄ nhÃĸn hÃŗa", + "preparing": "Đang chuáēŠn báģ‹", "preset": "MáēĢu cÃŗ sáēĩn", "preview": "Xem trưáģ›c", "previous": "Trưáģ›c", @@ -1436,10 +1625,11 @@ "primary": "Chính", "privacy": "BáēŖo máē­t", "profile": "Háģ“ sÆĄ", - "profile_drawer_app_logs": "Nháē­t kÃŊ", + "profile_drawer_app_logs": "Log", "profile_drawer_client_server_up_to_date": "MÃĄy khÃĄch và mÃĄy cháģ§ Ä‘ÃŖ cáē­p nháē­t", "profile_drawer_github": "GitHub", - "profile_image_of_user": "áēĸnh đáēĄi diáģ‡ncáģ§a {user}", + "profile_drawer_readonly_mode": "ÄÃŖ báē­t cháēŋ đáģ™ cháģ‰-xem. NháēĨn giáģ¯ áēŖnh đáēĄi diáģ‡n ngưáģi dÚng đáģƒ táē¯t.", + "profile_image_of_user": "áēĸnh đáēĄi diáģ‡n cáģ§a {user}", "profile_picture_set": "áēĸnh đáēĄi diáģ‡n Ä‘ÃŖ đưáģŖc đáēˇt.", "public_album": "Album công khai", "public_share": "Chia sáēģ công khai", @@ -1463,24 +1653,29 @@ "purchase_lifetime_description": "Mua tráģn đáģi", "purchase_option_title": "TÙY CHáģŒN MUA HÀNG", "purchase_panel_info_1": "Viáģ‡c xÃĸy dáģąng Immich táģ‘n nhiáģu tháģi gian và công sáģŠc, và chÃēng tôi cÃŗ cÃĄc káģš sư toàn tháģi gian làm viáģ‡c đáģƒ làm cho nÃŗ táģ‘t nháēĨt cÃŗ tháģƒ. SáģŠ máģ‡nh cáģ§a chÃēng tôi là pháē§n máģm mÃŖ nguáģ“n máģŸ và cÃĄc hoáēĄt đáģ™ng kinh doanh cÃŗ đáēĄo đáģŠc tráģŸ thành nguáģ“n thu nháē­p báģn váģ¯ng cho cÃĄc nhà phÃĄt triáģƒn, đáģ“ng tháģi táēĄo ra máģ™t háģ‡ sinh thÃĄi báēŖo váģ‡ quyáģn riÃĒng tư váģ›i cÃĄc láģąa cháģn thay tháēŋ tháģąc sáģą cho cÃĄc dáģ‹ch váģĨ Ä‘ÃĄm mÃĸy láģŖi dáģĨng ngưáģi dÚng.", - "purchase_panel_info_2": "VÃŦ chÃēng tôi cam káēŋt không thÃĒm cÃĄc tưáģng thu phí, viáģ‡c mua này sáēŊ không cáēĨp cho báēĄn báēĨt káģŗ tính năng báģ• sung nào trong Immich. ChÃēng tôi pháģĨ thuáģ™c vào nháģ¯ng ngưáģi dÚng như báēĄn đáģƒ háģ— tráģŖ sáģą phÃĄt triáģƒn liÃĒn táģĨc cáģ§a Immich.", + "purchase_panel_info_2": "VÃŦ chÃēng tôi cam káēŋt không thu phí thÃĒm, viáģ‡c mua này sáēŊ không cáēĨp cho báēĄn báēĨt káģŗ tính năng báģ• sung nào trong Immich. ChÃēng tôi pháģĨ thuáģ™c vào nháģ¯ng ngưáģi dÚng như báēĄn đáģƒ háģ— tráģŖ sáģą phÃĄt triáģƒn liÃĒn táģĨc cáģ§a Immich.", "purchase_panel_title": "Háģ— tráģŖ dáģą ÃĄn", "purchase_per_server": "Máģ—i mÃĄy cháģ§", "purchase_per_user": "Máģ—i ngưáģi dÚng", "purchase_remove_product_key": "XÃŗa khÃŗa sáēŖn pháēŠm", - "purchase_remove_product_key_prompt": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n xoÃĄ khÃŗa sáēŖn pháēŠm?", + "purchase_remove_product_key_prompt": "BáēĄn cÃŗ cháē¯c muáģ‘n xoÃĄ khÃŗa sáēŖn pháēŠm?", "purchase_remove_server_product_key": "XÃŗa khÃŗa sáēŖn pháēŠm mÃĄy cháģ§", - "purchase_remove_server_product_key_prompt": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n xoÃĄ khÃŗa sáēŖn pháēŠm mÃĄy cháģ§?", + "purchase_remove_server_product_key_prompt": "BáēĄn cÃŗ cháē¯c muáģ‘n xoÃĄ khÃŗa sáēŖn pháēŠm mÃĄy cháģ§?", "purchase_server_description_1": "Dành cho toàn báģ™ mÃĄy cháģ§", "purchase_server_description_2": "TráēĄng thÃĄi ngưáģi háģ— tráģŖ", "purchase_server_title": "MÃĄy cháģ§", "purchase_settings_server_activated": "KhÃŗa sáēŖn pháēŠm mÃĄy cháģ§ Ä‘Æ°áģŖc quáēŖn lÃŊ báģŸi quáēŖn tráģ‹ viÃĒn", - "rating": "ÄÃĄnh giÃĄ sao", + "query_asset_id": "Truy váēĨn ID táģ‡p", + "queue_status": "Xáēŋp hàng {count}/{total}", + "rating": "Xáēŋp háēĄng sao", "rating_clear": "XÃŗa xáēŋp háēĄng", "rating_count": "{count, plural, one {# sao} other {# sao}}", "rating_description": "Hiáģƒn tháģ‹ xáēŋp háēĄng EXIF trong báēŖng thông tin", "reaction_options": "TÚy cháģn pháēŖn áģŠng", "read_changelog": "Đáģc nháē­t kÃŊ thay đáģ•i", + "readonly_mode_disabled": "ÄÃŖ táē¯t cháēŋ đáģ™ cháģ‰-xem", + "readonly_mode_enabled": "ÄÃŖ báē­t cháēŋ đáģ™ cháģ‰-xem", + "ready_for_upload": "Sáēĩn sàng táēŖi lÃĒn", "reassign": "GÃĄn láēĄi", "reassigned_assets_to_existing_person": "ÄÃŖ gÃĄn láēĄi {count, plural, one {# áēŖnh} other {# áēŖnh}} cho {name, select, null {máģ™t ngưáģi hiáģ‡n cÃŗ} other {{name}}}", "reassigned_assets_to_new_person": "ÄÃŖ gÃĄn láēĄi {count, plural, one {# áēŖnh} other {# áēŖnh}} cho máģ™t ngưáģi máģ›i", @@ -1495,41 +1690,46 @@ "refresh": "Làm máģ›i", "refresh_encoded_videos": "Làm máģ›i video Ä‘ÃŖ mÃŖ hÃŗa", "refresh_faces": "Làm máģ›i khuôn máēˇt", - "refresh_metadata": "Làm máģ›i siÃĒu dáģ¯ liáģ‡u", - "refresh_thumbnails": "Làm máģ›i hÃŦnh thu nháģ", + "refresh_metadata": "Làm máģ›i metadata", + "refresh_thumbnails": "Làm máģ›i áēŖnh thu nháģ", "refreshed": "ÄÃŖ làm máģ›i", - "refreshes_every_file": "Đáģc láēĄi táēĨt cáēŖ táē­p tin máģ›i và hiáģ‡n cÃŗ", + "refreshes_every_file": "Đáģc láēĄi táēĨt cáēŖ táģ‡p máģ›i và hiáģ‡n cÃŗ", "refreshing_encoded_video": "Đang làm máģ›i video Ä‘ÃŖ mÃŖ hÃŗa", "refreshing_faces": "Đang làm máģ›i khuôn máēˇt", - "refreshing_metadata": "Đang làm máģ›i siÃĒu dáģ¯ liáģ‡u", - "regenerating_thumbnails": "Đang táēĄo láēĄi hÃŦnh thu nháģ", + "refreshing_metadata": "Đang làm máģ›i metadata", + "regenerating_thumbnails": "Đang táēĄo láēĄi áēŖnh thu nháģ", + "remote": "TrÃĒn mÃĸy", + "remote_assets": "Táģ‡p trÃĒn mÃĸy", + "remote_media_summary": "TÃŗm táē¯t phÆ°ÆĄng tiáģ‡n trÃĒn mÃĸy", "remove": "XÃŗa", - "remove_assets_album_confirmation": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n xoÃĄ {count, plural, one {# máģĨc} other {# máģĨc}} kháģi album?", - "remove_assets_shared_link_confirmation": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n xoÃĄ {count, plural, one {# máģĨc} other {# máģĨc}} kháģi liÃĒn káēŋt chia sáēģ này?", - "remove_assets_title": "XÃŗa máģĨc?", + "remove_assets_album_confirmation": "BáēĄn cÃŗ cháē¯c muáģ‘n xÃŗa {count, plural, one {# táģ‡p} other {# táģ‡p}} kháģi album?", + "remove_assets_shared_link_confirmation": "BáēĄn cÃŗ cháē¯c muáģ‘n xÃŗa {count, plural, one {# táģ‡p} other {# táģ‡p}} kháģi liÃĒn káēŋt chia sáēģ này?", + "remove_assets_title": "XÃŗa táģ‡p?", "remove_custom_date_range": "Báģ cháģn khoáēŖng ngày tÚy cháģ‰nh", - "remove_deleted_assets": "LoáēĄi báģ táē­p tin ngoáēĄi tuyáēŋn", + "remove_deleted_assets": "LoáēĄi báģ táģ‡p ngoáēĄi tuyáēŋn", "remove_from_album": "XÃŗa kháģi album", + "remove_from_album_action_prompt": "{count} Ä‘ÃŖ gáģĄ kháģi album", "remove_from_favorites": "XÃŗa kháģi MáģĨc yÃĒu thích", "remove_from_lock_folder_action_prompt": "{count} Ä‘ÃŖ đưáģŖc xÃŗa kháģi thư máģĨc KhÃŗa", "remove_from_locked_folder": "XÃŗa kháģi thư máģĨc KhÃŗa", - "remove_from_locked_folder_confirmation": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n di chuyáģƒn áēŖnh và video này kháģi thư máģĨc KhÃŗa không? ChÃēng sáēŊ hiáģ‡n trong thư viáģ‡n cáģ§a báēĄn.", + "remove_from_locked_folder_confirmation": "BáēĄn cÃŗ cháē¯c muáģ‘n di chuyáģƒn áēŖnh và video này kháģi thư máģĨc KhÃŗa? ChÃēng sáēŊ hiáģ‡n trong thư viáģ‡n cáģ§a báēĄn.", "remove_from_shared_link": "XÃŗa kháģi liÃĒn káēŋt chia sáēģ", "remove_memory": "XÃŗa káģˇ niáģ‡m", "remove_photo_from_memory": "XÃŗa áēŖnh kháģi káģˇ niáģ‡m này", + "remove_tag": "GáģĄ tháēģ", "remove_url": "XÃŗa URL", "remove_user": "XÃŗa ngưáģi dÚng", "removed_api_key": "KhÃŗa API Ä‘ÃŖ xÃŗa: {name}", - "removed_from_archive": "ÄÃŖ xoÃĄ kháģi Kho lưu tráģ¯", - "removed_from_favorites": "ÄÃŖ xoÃĄ kháģi MáģĨc yÃĒu thích", - "removed_from_favorites_count": "{count, plural, other {ÄÃŖ xoÃĄ #}} kháģi MáģĨc yÃĒu thích", + "removed_from_archive": "ÄÃŖ xÃŗa kháģi Kho lưu tráģ¯", + "removed_from_favorites": "ÄÃŖ xÃŗa kháģi MáģĨc yÃĒu thích", + "removed_from_favorites_count": "{count, plural, other {ÄÃŖ xÃŗa #}} kháģi MáģĨc yÃĒu thích", "removed_memory": "ÄÃŖ xÃŗa káģˇ niáģ‡m", "removed_photo_from_memory": "ÄÃŖ xÃŗa áēŖnh kháģi káģˇ niáģ‡m", - "removed_tagged_assets": "ÄÃŖ xÃŗa tháēģ kháģi {count, plural, one {# máģĨc} other {# máģĨc}}", + "removed_tagged_assets": "ÄÃŖ xÃŗa tháēģ kháģi {count, plural, one {# táģ‡p} other {# táģ‡p}}", "rename": "Đáģ•i tÃĒn", "repair": "Sáģ­a cháģ¯a", - "repair_no_results_message": "CÃĄc táē­p tin không đưáģŖc theo dÃĩi và báģ‹ máēĨt sáēŊ xuáēĨt hiáģ‡n áģŸ Ä‘Ãĸy", - "replace_with_upload": "Thay tháēŋ táē­p tin khÃĄc", + "repair_no_results_message": "CÃĄc táģ‡p không đưáģŖc theo dÃĩi và báģ‹ thiáēŋu sáēŊ xuáēĨt hiáģ‡n áģŸ Ä‘Ãĸy", + "replace_with_upload": "Thay tháēŋ táģ‡p khÃĄc", "repository": "Kho lưu tráģ¯", "require_password": "YÃĒu cáē§u máē­t kháēŠu", "require_user_to_change_password_on_first_login": "YÃĒu cáē§u ngưáģi dÚng thay đáģ•i máē­t kháēŠu áģŸ láē§n đáē§u đăng nháē­p", @@ -1538,24 +1738,34 @@ "reset_password": "Đáēˇt láēĄi máē­t kháēŠu", "reset_people_visibility": "Đáēˇt láēĄi tráēĄng thÃĄi hiáģƒn tháģ‹ cáģ§a máģi ngưáģi", "reset_pin_code": "Đáēˇt láēĄi mÃŖ PIN", + "reset_pin_code_description": "Náēŋu báēĄn quÃĒn mÃŖ PIN, báēĄn cÃŗ tháģƒ liÃĒn háģ‡ quáēŖn tráģ‹ viÃĒn đáģƒ Ä‘áēˇt láēĄi", + "reset_pin_code_success": "Đáēˇt láēĄi mÃŖ PIN thành công", "reset_pin_code_with_password": "BáēĄn luôn cÃŗ tháģƒ Ä‘áēˇt láēĄi mÃŖ PIN cáģ§a báēĄn báēąng máē­t kháēŠu cáģ§a báēĄn", + "reset_sqlite": "Đáēˇt láēĄi cÆĄ sáģŸ dáģ¯ liáģ‡u SQLite", + "reset_sqlite_confirmation": "BáēĄn cÃŗ cháē¯c muáģ‘n đáēˇt láēĄi cÆĄ sáģŸ dáģ¯ liáģ‡u SQLite? BáēĄn sáēŊ cáē§n đăng xuáēĨt và đăng nháē­p láēĄi đáģƒ Ä‘áģ“ng báģ™ láēĄi dáģ¯ liáģ‡u", + "reset_sqlite_success": "ÄÃŖ thiáēŋt láē­p láēĄi cÆĄ sáģŸ dáģ¯ liáģ‡u SQLite thành công", "reset_to_default": "Đáēˇt láēĄi váģ máēˇc đáģ‹nh", + "resolution": "Đáģ™ phÃĸn giáēŖi", "resolve_duplicates": "Xáģ­ lÃŊ cÃĄc báēŖn trÚng láēˇp", "resolved_all_duplicates": "ÄÃŖ xáģ­ lÃŊ táēĨt cáēŖ cÃĄc báēŖn trÚng láēˇp", "restore": "Khôi pháģĨc", "restore_all": "Khôi pháģĨc táēĨt cáēŖ", + "restore_trash_action_prompt": "{count} Ä‘ÃŖ khôi pháģĨc táģĢ thÚng rÃĄc", "restore_user": "Khôi pháģĨc ngưáģi dÚng", - "restored_asset": "áēĸnh Ä‘ÃŖ đưáģŖc khôi pháģĨc", + "restored_asset": "Táģ‡p Ä‘ÃŖ đưáģŖc khôi pháģĨc", "resume": "Tiáēŋp táģĨc", + "resume_paused_jobs": "Tiáēŋp táģĨc {count, plural, one {# tÃĄc váģĨ Ä‘ÃŖ dáģĢng} other {# tÃĄc váģĨ Ä‘ÃŖ dáģĢng}}", "retry_upload": "Tháģ­ táēŖi lÃĒn láēĄi", "review_duplicates": "Xem láēĄi cÃĄc máģĨc trÚng láēˇp", - "review_large_files": "Xem láēĄi táē­p tin dung lưáģŖng láģ›n", + "review_large_files": "Xem láēĄi táģ‡p dung lưáģŖng láģ›n", "role": "Vai trÃ˛", "role_editor": "Ngưáģi cháģ‰nh sáģ­a", "role_viewer": "Ngưáģi xem", + "running": "Đang cháēĄy", "save": "Lưu", "save_to_gallery": "Lưu vào thư viáģ‡n", - "saved_api_key": "KhoÃĄ API Ä‘ÃŖ lưu", + "saved": "ÄÃŖ lưu", + "saved_api_key": "KhÃŗa API Ä‘ÃŖ lưu", "saved_profile": "Háģ“ sÆĄ Ä‘ÃŖ lưu", "saved_settings": "Cài đáēˇt Ä‘ÃŖ lưu", "say_something": "NÃŗi điáģu gÃŦ Ä‘Ãŗ", @@ -1565,31 +1775,35 @@ "scan_settings": "Cài đáēˇt quÊt", "scanning_for_album": "Đang quÊt album...", "search": "TÃŦm kiáēŋm", - "search_albums": "TÃŦm kiáēŋm album", - "search_by_context": "TÃŦm kiáēŋm theo ngáģ¯ cáēŖnh", - "search_by_description": "TÃŦm kiáēŋm theo náģ™i dung", + "search_albums": "TÃŦm album", + "search_by_context": "TÃŦm theo ngáģ¯ cáēŖnh", + "search_by_description": "TÃŦm theo mô táēŖ", "search_by_description_example": "DáēĄo chÆĄi Sa Pa", - "search_by_filename": "TÃŦm kiáēŋm theo tÃĒn hoáēˇc pháē§n máģŸ ráģ™ng táē­p tin", + "search_by_filename": "TÃŦm theo tÃĒn hoáēˇc đáģ‹nh dáēĄng táģ‡p", "search_by_filename_example": "Ví dáģĨ: IMG_1234.JPG hoáēˇc PNG", - "search_camera_make": "TÃŦm kiáēŋm thÆ°ÆĄng hiáģ‡u mÃĄy áēŖnh...", - "search_camera_model": "TÃŦm kiáēŋm dÃ˛ng mÃĄy áēŖnh...", - "search_city": "TÃŦm kiáēŋm thành pháģ‘...", - "search_country": "TÃŦm kiáēŋm quáģ‘c gia...", + "search_by_ocr": "TÃŦm báēąng OCR", + "search_by_ocr_example": "Latte", + "search_camera_lens_model": "TÃŦm dÃ˛ng lens...", + "search_camera_make": "TÃŦm thÆ°ÆĄng hiáģ‡u mÃĄy áēŖnh...", + "search_camera_model": "TÃŦm dÃ˛ng mÃĄy áēŖnh...", + "search_city": "TÃŦm thành pháģ‘...", + "search_country": "TÃŦm quáģ‘c gia...", "search_filter_apply": "Áp dáģĨng báģ™ láģc", "search_filter_camera_title": "Cháģn loáēĄi mÃĄy áēŖnh", "search_filter_date": "Ngày", "search_filter_date_interval": "{start} đáēŋn {end}", "search_filter_date_title": "Cháģn khoáēŖng ngày", "search_filter_display_option_not_in_album": "Không náēąm trong album", - "search_filter_display_options": "Tuáģŗ cháģn hiáģƒn tháģ‹", - "search_filter_filename": "TÃŦm kiáēŋm theo tÃĒn táē­p tin", + "search_filter_display_options": "TÚy cháģn hiáģƒn tháģ‹", + "search_filter_filename": "TÃŦm theo tÃĒn táģ‡p", "search_filter_location": "Váģ‹ trí", "search_filter_location_title": "Cháģn váģ‹ trí", - "search_filter_media_type": "LoáēĄi phÆ°ÆĄng tiáģ‡n", + "search_filter_media_type": "PhÆ°ÆĄng tiáģ‡n", "search_filter_media_type_title": "Cháģn loáēĄi phÆ°ÆĄng tiáģ‡n", + "search_filter_ocr": "TÃŦm báēąng OCR", "search_filter_people_title": "Cháģn ngưáģi", "search_for": "TÃŦm kiáēŋm", - "search_for_existing_person": "TÃŦm kiáēŋm ngưáģi hiáģ‡n cÃŗ", + "search_for_existing_person": "TÃŦm ngưáģi hiáģ‡n cÃŗ", "search_no_more_result": "Không cÃ˛n káēŋt quáēŖ", "search_no_people": "Không cÃŗ ngưáģi", "search_no_people_named": "Không cÃŗ ngưáģi tÃĒn \"{name}\"", @@ -1597,12 +1811,12 @@ "search_options": "TÚy cháģn tÃŦm kiáēŋm", "search_page_categories": "Danh máģĨc", "search_page_motion_photos": "áēĸnh đáģ™ng", - "search_page_no_objects": "Không cÃŗ thông tin sáģą váē­t", + "search_page_no_objects": "Không cÃŗ thông tin đáģ‘i tưáģŖng", "search_page_no_places": "Không cÃŗ thông tin đáģ‹a điáģƒm nào", - "search_page_screenshots": "áēĸnh màn hÃŦnh", + "search_page_screenshots": "áēĸnh cháģĨp màn hÃŦnh", "search_page_search_photos_videos": "TÃŦm áēŖnh và video cáģ§a báēĄn", "search_page_selfies": "áēĸnh selfie", - "search_page_things": "Sáģą váē­t", + "search_page_things": "Đáģ‘i tưáģŖng", "search_page_view_all_button": "Xem táēĨt cáēŖ", "search_page_your_activity": "HoáēĄt đáģ™ng cáģ§a báēĄn", "search_page_your_map": "BáēŖn đáģ“ cáģ§a báēĄn", @@ -1612,12 +1826,12 @@ "search_result_page_new_search_hint": "TÃŦm kiáēŋm máģ›i", "search_settings": "TÃŦm kiáēŋm cài đáēˇt", "search_state": "TÃŦm kiáēŋm táģ‰nh...", - "search_suggestion_list_smart_search_hint_1": "TÃŦm kiáēŋm thông minh đưáģŖc báē­t máēˇc đáģ‹nh, đáģƒ tÃŦm kiáēŋm siÃĒu dáģ¯ liáģ‡u hÃŖy sáģ­ dáģĨng cÃē phÃĄp ", + "search_suggestion_list_smart_search_hint_1": "TÃŦm kiáēŋm thông minh đưáģŖc báē­t máēˇc đáģ‹nh, đáģƒ tÃŦm kiáēŋm metadata hÃŖy sáģ­ dáģĨng cÃē phÃĄp ", "search_suggestion_list_smart_search_hint_2": "m:cáģĨm-táģĢ-tÃŦm-kiáēŋm-cáģ§a-báēĄn", "search_tags": "TÃŦm kiáēŋm tháēģ...", "search_timezone": "TÃŦm kiáēŋm mÃēi giáģ...", - "search_type": "LoáēĄi tÃŦm kiáēŋm", - "search_your_photos": "TÃŦm kiáēŋm áēŖnh cáģ§a báēĄn", + "search_type": "Kiáģƒu tÃŦm kiáēŋm", + "search_your_photos": "TÃŦm áēŖnh cáģ§a báēĄn", "searching_locales": "Đang tÃŦm kiáēŋm khu váģąc...", "second": "GiÃĸy", "see_all_people": "Xem táēĨt cáēŖ máģi ngưáģi", @@ -1625,6 +1839,7 @@ "select_album_cover": "Cháģn áēŖnh bÃŦa album", "select_all": "Cháģn táēĨt cáēŖ", "select_all_duplicates": "Cháģn táēĨt cáēŖ cÃĄc báēŖn trÚng láēˇp", + "select_all_in": "Cháģn táēĨt cáēŖ trong {group}", "select_avatar_color": "Cháģn màu áēŖnh đáēĄi diáģ‡n", "select_face": "Cháģn khuôn máēˇt", "select_featured_photo": "Cháģn áēŖnh náģ•i báē­t", @@ -1634,36 +1849,40 @@ "select_new_face": "Cháģn khuôn máēˇt máģ›i", "select_person_to_tag": "Cháģn ngưáģi đáģƒ gáē¯n tháēģ", "select_photos": "Cháģn áēŖnh", - "select_trash_all": "Cháģn xoÃĄ táēĨt cáēŖ", + "select_trash_all": "Cháģn xÃŗa táēĨt cáēŖ", "select_user_for_sharing_page_err_album": "TáēĄo album tháēĨt báēĄi", "selected": "ÄÃŖ cháģn", "selected_count": "{count, plural, other {ÄÃŖ cháģn # máģĨc}}", + "selected_gps_coordinates": "Táģa đáģ™ GPS Ä‘ÃŖ cháģn", "send_message": "Gáģ­i tin nháē¯n", "send_welcome_email": "Gáģ­i email chào máģĢng", "server_endpoint": "Đáģ‹a cháģ‰ mÃĄy cháģ§", - "server_info_box_app_version": "PhiÃĒn báēŖn áģŠng dáģĨng", + "server_info_box_app_version": "PhiÃĒn báēŖn app", "server_info_box_server_url": "URL mÃĄy cháģ§", "server_offline": "MÃĄy cháģ§ ngoáēĄi tuyáēŋn", "server_online": "PhiÃĒn báēŖn", "server_privacy": "Quyáģn riÃĒng tư mÃĄy cháģ§", + "server_restarting_description": "Trang này sáēŊ làm máģ›i trong giÃĸy lÃĄt.", "server_restarting_title": "MÃĄy cháģ§ Ä‘ang kháģŸi đáģ™ng láēĄi", "server_stats": "Tháģ‘ng kÃĒ mÃĄy cháģ§", + "server_update_available": "CÃŗ báēŖn cáē­p nháē­t mÃĄy cháģ§", "server_version": "PhiÃĒn báēŖn mÃĄy cháģ§", "set": "Đáēˇt", "set_as_album_cover": "Đáēˇt làm áēŖnh bÃŦa album", "set_as_featured_photo": "Đáēˇt làm áēŖnh náģ•i báē­t", "set_as_profile_picture": "Đáēˇt làm áēŖnh đáēĄi diáģ‡n", - "set_date_of_birth": "Đáēˇt ngày sinh", + "set_date_of_birth": "Đáēˇt sinh nháē­t", "set_profile_picture": "Đáēˇt áēŖnh đáēĄi diáģ‡n", "set_slideshow_to_fullscreen": "Đáēˇt trÃŦnh chiáēŋu áģŸ cháēŋ đáģ™ toàn màn hÃŦnh", - "setting_image_viewer_help": "TrÃŦnh xem áēŖnh táēŖi hÃŦnh thu nháģ kích thưáģ›c nháģ trưáģ›c, sau Ä‘Ãŗ táēŖi báēŖn xem trưáģ›c cÃŗ kích thưáģ›c trung bÃŦnh (náēŋu đưáģŖc báē­t), cuáģ‘i cÚng táēŖi báēŖn gáģ‘c (náēŋu đưáģŖc báē­t).", + "set_stack_primary_asset": "Đáēˇt làm tài sáēŖn chính", + "setting_image_viewer_help": "TrÃŦnh xem áēŖnh táēŖi áēŖnh thu nháģ cáģĄ nháģ trưáģ›c, sau Ä‘Ãŗ táēŖi cáģĄ trung bÃŦnh (náēŋu đưáģŖc báē­t), cuáģ‘i cÚng táēŖi báēŖn gáģ‘c (náēŋu đưáģŖc báē­t).", "setting_image_viewer_original_subtitle": "Báē­t đáģƒ táēŖi áēŖnh gáģ‘c áģŸ Ä‘áģ™ phÃĸn giáēŖi đáē§y đáģ§ (dung lưáģŖng láģ›n). Táē¯t đáģƒ giáēŖm máģŠc sáģ­ dáģĨng dáģ¯ liáģ‡u (máģŠc sáģ­ dáģĨng máēĄng và báģ™ nháģ› Ä‘áģ‡m trÃĒn thiáēŋt báģ‹).", "setting_image_viewer_original_title": "TáēŖi áēŖnh gáģ‘c", - "setting_image_viewer_preview_subtitle": "Báē­t đáģƒ táēŖi áēŖnh đáģ™ phÃĸn giáēŖi trung bÃŦnh. Táē¯t đáģƒ táēŖi tráģąc tiáēŋp áēŖnh gáģ‘c hoáēˇc cháģ‰ sáģ­ dáģĨng hÃŦnh thu nháģ.", + "setting_image_viewer_preview_subtitle": "Báē­t đáģƒ táēŖi áēŖnh đáģ™ phÃĸn giáēŖi trung bÃŦnh. Táē¯t đáģƒ táēŖi tráģąc tiáēŋp áēŖnh gáģ‘c hoáēˇc cháģ‰ sáģ­ dáģĨng áēŖnh thu nháģ.", "setting_image_viewer_preview_title": "TáēŖi áēŖnh xem trưáģ›c", - "setting_image_viewer_title": "HÃŦnh áēŖnh", + "setting_image_viewer_title": "áēĸnh", "setting_languages_apply": "Áp dáģĨng", - "setting_languages_subtitle": "Thay đáģ•i ngôn ngáģ¯ cáģ§a áģŠng dáģĨng", + "setting_languages_subtitle": "Ngôn ngáģ¯ app", "setting_notifications_notify_failures_grace_period": "Thông bÃĄo láģ—i sao lưu náģn: {duration}", "setting_notifications_notify_hours": "{count} giáģ", "setting_notifications_notify_immediately": "ngay láē­p táģŠc", @@ -1671,10 +1890,12 @@ "setting_notifications_notify_never": "không bao giáģ", "setting_notifications_notify_seconds": "{count} giÃĸy", "setting_notifications_single_progress_subtitle": "Thông tin chi tiáēŋt cáģ§a táģĢng áēŖnh đang táēŖi lÃĒn", - "setting_notifications_single_progress_title": "Hiáģƒn tháģ‹ chi tiáēŋt sao lưu náģn đang tháģąc hiáģ‡n", - "setting_notifications_subtitle": "TÚy cháģ‰nh thông bÃĄo cáģ§a báēĄn", - "setting_notifications_total_progress_subtitle": "Toàn báģ™ quÃĄ trÃŦnh táēŖi lÃĒn (hoàn thành/táģ•ng sáģ‘ áēŖnh)", - "setting_notifications_total_progress_title": "Hiáģ‡n tháģ‹ toàn báģ™ sao lưu náģn đang tháģąc hiáģ‡n", + "setting_notifications_single_progress_title": "Hiáģ‡n chi tiáēŋt sao lưu náģn đang tháģąc hiáģ‡n", + "setting_notifications_subtitle": "CÃĄc loáēĄi thông bÃĄo", + "setting_notifications_total_progress_subtitle": "Toàn báģ™ quÃĄ trÃŦnh táēŖi lÃĒn (hoàn thành/táģ•ng sáģ‘ táģ‡p)", + "setting_notifications_total_progress_title": "Hiáģ‡n quÃĄ trÃŦnh sao lưu náģn đang tháģąc hiáģ‡n", + "setting_video_viewer_auto_play_subtitle": "Khi máģŸ video", + "setting_video_viewer_auto_play_title": "Táģą Ä‘áģ™ng phÃĄt video", "setting_video_viewer_looping_title": "Láēˇp láēĄi", "setting_video_viewer_original_video_subtitle": "Khi phÃĄt tráģąc tuyáēŋn video táģĢ mÃĄy cháģ§, hÃŖy phÃĄt video gáģ‘c ngay cáēŖ khi cÃŗ báēŖn chuyáģƒn mÃŖ. CÃŗ tháģƒ dáēĢn đáēŋn tÃŦnh tráēĄng cháģ. Video cÃŗ sáēĩn trÃĒn mÃĄy đưáģŖc phÃĄt áģŸ cháēĨt lưáģŖng gáģ‘c báēĨt káģƒ cài đáēˇt này.", "setting_video_viewer_original_video_title": "DÚng video gáģ‘c", @@ -1683,15 +1904,16 @@ "settings_saved": "ÄÃŖ lưu cài đáēˇt", "setup_pin_code": "Thiáēŋt láē­p mÃŖ PIN", "share": "Chia sáēģ", + "share_action_prompt": "ÄÃŖ chia sáēģ {count} táģ‡p", "share_add_photos": "ThÃĒm áēŖnh", "share_assets_selected": "{count} Ä‘ÃŖ cháģn", "share_dialog_preparing": "Đang xáģ­ lÃŊ...", "share_link": "LiÃĒn káēŋt chia sáēģ", - "shared": "ĐưáģŖc chia sáēģ", + "shared": "ÄÃŖ chia sáēģ", "shared_album_activities_input_disable": "Nháē­n xÊt hiáģ‡n Ä‘ÃŖ táē¯t", - "shared_album_activity_remove_content": "BáēĄn cÃŗ muáģ‘n xoÃĄ hoáēĄt đáģ™ng này?", - "shared_album_activity_remove_title": "XoÃĄ hoáēĄt đáģ™ng", - "shared_album_section_people_action_error": "Láģ—i khi xoÃĄ kháģi album", + "shared_album_activity_remove_content": "BáēĄn cÃŗ muáģ‘n xÃŗa hoáēĄt đáģ™ng này?", + "shared_album_activity_remove_title": "XÃŗa hoáēĄt đáģ™ng", + "shared_album_section_people_action_error": "Láģ—i khi xÃŗa kháģi album", "shared_album_section_people_action_leave": "XÃŗa ngưáģi dÚng kháģi album", "shared_album_section_people_action_remove_user": "XÃŗa ngưáģi dÚng kháģi album", "shared_album_section_people_title": "MáģŒI NGƯáģœI", @@ -1700,8 +1922,8 @@ "shared_by_you": "ĐưáģŖc chia sáēģ báģŸi báēĄn", "shared_from_partner": "áēĸnh táģĢ {partner}", "shared_intent_upload_button_progress_text": "{current} / {total} ÄÃŖ táēŖi lÃĒn", - "shared_link_app_bar_title": "LiÃĒn káēŋt chia sáēģ", - "shared_link_clipboard_copied_massage": "ÄÃŖ sao chÊp táģ›i báēŖn ghi táēĄm", + "shared_link_app_bar_title": "LiÃĒn káēŋt Ä‘ÃŖ chia sáēģ", + "shared_link_clipboard_copied_massage": "ÄÃŖ sao chÊp vào báģ™ nháģ› táēĄm", "shared_link_clipboard_text": "LiÃĒn káēŋt: {link}\nMáē­t kháēŠu: {password}", "shared_link_create_error": "TáēĄo liÃĒn káēŋt chia sáēģ không thành công", "shared_link_custom_url_description": "Truy cáē­p liÃĒn káēŋt chia sáēģ váģ›i máģ™t URL tÚy cháģ‰nh", @@ -1717,25 +1939,25 @@ "shared_link_edit_password_hint": "Nháē­p máē­t kháēŠu chia sáēģ", "shared_link_edit_submit_button": "Cáē­p nháē­t liÃĒn káēŋt", "shared_link_error_server_url_fetch": "Không tháģƒ káēŋt náģ‘i đáģ‹a cháģ‰ mÃĄy cháģ§", - "shared_link_expires_day": "Háēŋt háēĄn trong {count} ngày", - "shared_link_expires_days": "Háēŋt háēĄn trong {count} ngày", - "shared_link_expires_hour": "Háēŋt háēĄn trong {count} giáģ", - "shared_link_expires_hours": "Háēŋt háēĄn trong {count} giáģ", - "shared_link_expires_minute": "Háēŋt háēĄn trong {count} phÃēt", - "shared_link_expires_minutes": "Háēŋt háēĄn trong {count} phÃēt", - "shared_link_expires_never": "Háēŋt háēĄn ∞", - "shared_link_expires_second": "Háēŋt háēĄn trong {count} giÃĸy", - "shared_link_expires_seconds": "Háēŋt háēĄn trong {count} giÃĸy", + "shared_link_expires_day": "Háēŋt háēĄn sau {count} ngày", + "shared_link_expires_days": "Háēŋt háēĄn sau {count} ngày", + "shared_link_expires_hour": "Háēŋt háēĄn sau {count} giáģ", + "shared_link_expires_hours": "Háēŋt háēĄn sau {count} giáģ", + "shared_link_expires_minute": "Háēŋt háēĄn sau {count} phÃēt", + "shared_link_expires_minutes": "Háēŋt háēĄn sau {count} phÃēt", + "shared_link_expires_never": "Vô háēĄn ∞", + "shared_link_expires_second": "Háēŋt háēĄn sau {count} giÃĸy", + "shared_link_expires_seconds": "Háēŋt háēĄn sau {count} giÃĸy", "shared_link_individual_shared": "Chia sáēģ riÃĒng tư", "shared_link_info_chip_metadata": "Dáģ¯ liáģ‡u EXIF", - "shared_link_manage_links": "QuáēŖn lÃŊ liÃĒn káēŋt đưáģŖc chia sáēģ", + "shared_link_manage_links": "QuáēŖn lÃŊ liÃĒn káēŋt Ä‘ÃŖ chia sáēģ", "shared_link_options": "TÚy cháģn liÃĒn káēŋt chia sáēģ", "shared_link_password_description": "Báē¯t buáģ™c đáģƒ truy cáē­p liÃĒn káēŋt chia sáēģ này", "shared_links": "LiÃĒn káēŋt chia sáēģ", "shared_links_description": "Chia sáēģ áēŖnh và video báēąng liÃĒn káēŋt", "shared_photos_and_videos_count": "{assetCount, plural, other {# áēŖnh & video Ä‘ÃŖ chia sáēģ.}}", "shared_with_me": "Chia sáēģ váģ›i tôi", - "shared_with_partner": "ĐưáģŖc chia sáēģ váģ›i {partner}", + "shared_with_partner": "ÄÃŖ chia sáēģ váģ›i {partner}", "sharing": "Chia sáēģ", "sharing_enter_password": "Vui lÃ˛ng nháē­p máē­t kháēŠu đáģƒ xem trang này.", "sharing_page_album": "Album chia sáēģ", @@ -1744,9 +1966,9 @@ "sharing_sidebar_description": "Hiáģƒn tháģ‹ máģĨc Chia sáēģ trong thanh bÃĒn", "sharing_silver_appbar_create_shared_album": "TáēĄo album chia sáēģ", "sharing_silver_appbar_share_partner": "Chia sáēģ váģ›i ngưáģi thÃĸn", - "shift_to_permanent_delete": "nháēĨn ⇧ đáģƒ xÃŗa vÄŠnh viáģ…n áēŖnh", + "shift_to_permanent_delete": "nháēĨn ⇧ đáģƒ xÃŗa vÄŠnh viáģ…n táģ‡p", "show_album_options": "Hiáģ‡n tÚy cháģn album", - "show_albums": "Hiáģƒn tháģ‹ album", + "show_albums": "Hiáģ‡n album", "show_all_people": "Hiáģƒn tháģ‹ táēĨt cáēŖ máģi ngưáģi", "show_and_hide_people": "Hiáģƒn tháģ‹ & áēŠn ngưáģi", "show_file_location": "Hiáģƒn tháģ‹ váģ‹ trí táē­p tin", @@ -1755,7 +1977,7 @@ "show_in_timeline": "Hiáģƒn tháģ‹ trÃĒn dÃ˛ng tháģi gian", "show_in_timeline_setting_description": "Hiáģƒn tháģ‹ áēŖnh và video táģĢ ngưáģi dÚng này trong dÃ˛ng tháģi gian cáģ§a báēĄn", "show_keyboard_shortcuts": "Hiáģ‡n phím táē¯t", - "show_metadata": "Hiáģƒn tháģ‹ siÃĒu dáģ¯ liáģ‡u", + "show_metadata": "Hiáģƒn tháģ‹ metadata", "show_or_hide_info": "Hiáģƒn tháģ‹ hoáēˇc áēŠn thông tin", "show_password": "Hiáģƒn tháģ‹ máē­t kháēŠu", "show_person_options": "Hiáģ‡n tÚy cháģn ngưáģi", @@ -1765,13 +1987,15 @@ "show_slideshow_transition": "Hiáģƒn tháģ‹ hiáģ‡u áģŠng chuyáģƒn tiáēŋp", "show_supporter_badge": "Huy hiáģ‡u ngưáģi áģ§ng háģ™", "show_supporter_badge_description": "Hiáģƒn tháģ‹ huy hiáģ‡u ngưáģi áģ§ng háģ™", - "shuffle": "XÃĄo tráģ™n", + "show_text_recognition": "Hiáģƒn tháģ‹ nháē­n dáēĄng văn báēŖn", + "show_text_search_menu": "Hiáģƒn tháģ‹ menu tÃŦm kiáēŋm văn báēŖn", + "shuffle": "NgáēĢu nhiÃĒn", "sidebar": "Thanh bÃĒn", "sidebar_display_description": "Hiáģƒn tháģ‹ liÃĒn káēŋt đáēŋn cháēŋ đáģ™ xem trong thanh bÃĒn", "sign_out": "Đăng xuáēĨt", "sign_up": "Đăng kÃŊ", "size": "Kích thưáģ›c", - "skip_to_content": "Báģ qua náģ™i dung", + "skip_to_content": "Chuyáģƒn đáēŋn náģ™i dung", "skip_to_folders": "Chuyáģƒn đáēŋn thư máģĨc", "skip_to_tags": "Chuyáģƒn đáēŋn tháēģ", "slideshow": "TrÃŦnh chiáēŋu", @@ -1787,15 +2011,18 @@ "sort_title": "TiÃĒu đáģ", "source": "Nguáģ“n", "stack": "NhÃŗm áēŖnh", + "stack_action_prompt": "{count} Ä‘ÃŖ đưáģŖc nhÃŗm", "stack_duplicates": "NhÃŗm máģĨc trÚng láēˇp", "stack_select_one_photo": "Cháģn áēŖnh chính cho nhÃŗm áēŖnh", "stack_selected_photos": "NhÃŗm cÃĄc áēŖnh Ä‘ÃŖ cháģn", - "stacked_assets_count": "ÄÃŖ nhÃŗm {count, plural, one {# máģĨc} other {# máģĨc}}", + "stacked_assets_count": "ÄÃŖ nhÃŗm {count, plural, one {# táģ‡p} other {# táģ‡p}}", "stacktrace": "Thông tin chi tiáēŋt láģ—i", - "start": "CháēĄy", + "start": "Báē¯t đáē§u", "start_date": "Ngày báē¯t đáē§u", + "start_date_before_end_date": "Ngày báē¯t đáē§u pháēŖi trưáģ›c ngày káēŋt thÃēc", "state": "Táģ‰nh", "status": "TráēĄng thÃĄi", + "stop_casting": "DáģĢng chiáēŋu", "stop_motion_photo": "DáģĢng áēŖnh chuyáģƒn đáģ™ng", "stop_photo_sharing": "DáģĢng chia sáēģ áēŖnh cáģ§a báēĄn?", "stop_photo_sharing_description": "{partner} sáēŊ không tháģƒ truy cáē­p đưáģŖc áēŖnh cáģ§a báēĄn.", @@ -1805,6 +2032,7 @@ "storage_quota": "HáēĄn máģŠc dung lưáģŖng", "storage_usage": "ÄÃŖ dÚng {used} cáģ§a {available}", "submit": "Gáģ­i", + "success": "Thành công", "suggestions": "GáģŖi ÃŊ", "sunrise_on_the_beach": "BÃŦnh minh trÃĒn bÃŖi biáģƒn", "support": "Háģ— tráģŖ", @@ -1814,7 +2042,10 @@ "sync": "Đáģ“ng báģ™", "sync_albums": "Đáģ“ng báģ™ album", "sync_albums_manual_subtitle": "Đáģ“ng báģ™ hÃŗa táēĨt cáēŖ video và áēŖnh Ä‘ÃŖ táēŖi lÃĒn vào album sao lưu Ä‘ÃŖ cháģn", - "sync_status_subtitle": "Xem và quáēŖn lÃŊ háģ‡ tháģ‘ng đáģ“ng báģ™", + "sync_local": "Đáģ“ng báģ™ hÃŗa thiáēŋt báģ‹", + "sync_remote": "Đáģ“ng báģ™ hÃŗa trÃĒn mÃĸy", + "sync_status": "TráēĄng thÃĄi đáģ“ng báģ™", + "sync_status_subtitle": "Tháģ‘ng kÃĒ váģ viáģ‡c đáģ“ng báģ™", "sync_upload_album_setting_subtitle": "TáēĄo và táēŖi lÃĒn áēŖnh và video cáģ§a báēĄn vào album Ä‘ÃŖ cháģn trÃĒn Immich", "tag": "Tháēģ", "tag_assets": "Gáē¯n tháēģ", @@ -1823,121 +2054,141 @@ "tag_not_found_question": "Không tÃŦm tháēĨy tháēģ? TáēĄo máģ™t tháēģ máģ›i", "tag_people": "Gáē¯n tháēģ Máģi ngưáģi", "tag_updated": "ÄÃŖ cáē­p nháē­t tháēģ: {tag}", - "tagged_assets": "ÄÃŖ gáē¯n tháēģ {count, plural, one {# máģĨc} other {# máģĨc}}", + "tagged_assets": "ÄÃŖ gáē¯n tháēģ {count, plural, one {# táģ‡p} other {# táģ‡p}}", "tags": "Tháēģ", + "tap_to_run_job": "NháēĨn đáģƒ cháēĄy tÃĄc váģĨ", "template": "MáēĢu", + "text_recognition": "Nháē­n dáēĄng văn báēŖn", "theme": "Cháģ§ Ä‘áģ", "theme_selection": "Cháģ§ Ä‘áģ", "theme_selection_description": "Dáģąa theo trÃŦnh duyáģ‡t cáģ§a báēĄn", - "theme_setting_asset_list_storage_indicator_title": "Hiáģƒn tháģ‹ tráēĄng thÃĄi sao lưu áēŖnh trÃĒn hÃŦnh thu nháģ", - "theme_setting_asset_list_tiles_per_row_title": "Sáģ‘ lưáģŖng áēŖnh trÃĒn máģ™t dÃ˛ng ({count})", - "theme_setting_colorful_interface_subtitle": "Áp dáģĨng màu cháģ§ Ä‘áēĄo cho náģn áģŠng dáģĨng.", - "theme_setting_colorful_interface_title": "Giao diáģ‡n màu sáē¯c", + "theme_setting_asset_list_storage_indicator_title": "Hiáģ‡n tráēĄng thÃĄi sao lưu trÃĒn áēŖnh thu nháģ", + "theme_setting_asset_list_tiles_per_row_title": "Sáģ‘ lưáģŖng táģ‡p trÃĒn máģ—i hàng ({count})", + "theme_setting_colorful_interface_subtitle": "Áp dáģĨng màu cháģ§ Ä‘áēĄo cho náģn app.", + "theme_setting_colorful_interface_title": "Giao diáģ‡n sinh đáģ™ng", "theme_setting_image_viewer_quality_subtitle": "Điáģu cháģ‰nh cháēĨt lưáģŖng cáģ§a trÃŦnh xem áēŖnh", "theme_setting_image_viewer_quality_title": "CháēĨt lưáģŖng trÃŦnh xem áēŖnh", "theme_setting_primary_color_subtitle": "Cháģn màu cho cÃĄc hành đáģ™ng chính và điáģƒm nháēĨn.", "theme_setting_primary_color_title": "Màu cháģ§ Ä‘áēĄo", "theme_setting_system_primary_color_title": "DÚng màu háģ‡ tháģ‘ng", "theme_setting_system_theme_switch": "Táģą Ä‘áģ™ng (Giáģ‘ng thiáēŋt báģ‹)", - "theme_setting_theme_subtitle": "Cháģn cài đáēˇt giao diáģ‡n áģŠng dáģĨng", + "theme_setting_theme_subtitle": "Cháģn cài đáēˇt giao diáģ‡n app", "theme_setting_three_stage_loading_subtitle": "TáēŖi ba giai đoáēĄn cÃŗ tháģƒ tăng táģ‘c đáģ™ táēŖi áēŖnh nhưng sáēŊ táģ‘n dáģ¯ liáģ‡u máēĄng Ä‘ÃĄng káģƒ", "theme_setting_three_stage_loading_title": "Báē­t táēŖi ba giai đoáēĄn", "they_will_be_merged_together": "ChÃēng sáēŊ đưáģŖc háģŖp nháēĨt váģ›i nhau", "third_party_resources": "Tài nguyÃĒn bÃĒn tháģŠ ba", + "time": "Tháģi gian", "time_based_memories": "Káģˇ niáģ‡m dáģąa trÃĒn tháģi gian", + "time_based_memories_duration": "Sáģ‘ giÃĸy hiáģƒn tháģ‹ máģ—i áēŖnh.", "timeline": "DÃ˛ng tháģi gian", "timezone": "MÃēi giáģ", "to_archive": "Lưu tráģ¯", "to_change_password": "Đáģ•i máē­t kháēŠu", - "to_favorite": "YÃĒu thích", + "to_favorite": "Thích", "to_login": "Đăng nháē­p", + "to_multi_select": "đáģƒ cháģn-nhiáģu", "to_parent": "Váģ thư máģĨc gáģ‘c", + "to_select": "đáģƒ cháģn", "to_trash": "XÃŗa", "toggle_settings": "Chuyáģƒn đáģ•i cài đáēˇt", + "toggle_theme_description": "Đáģ•i cháģ§ Ä‘áģ", "total": "Táģ•ng cáģ™ng", - "total_usage": "Táģ•ng dung lưáģŖng Ä‘ÃŖ sáģ­ dáģĨng", + "total_usage": "Dung lưáģŖng Ä‘ÃŖ dÚng", "trash": "ThÚng rÃĄc", + "trash_action_prompt": "{count} Ä‘ÃŖ chuyáģƒn vào thÚng rÃĄc", "trash_all": "XÃŗa háēŋt", "trash_count": "XÃŗa {count, number} máģĨc", "trash_delete_asset": "Chuyáģƒn vào thÚng rÃĄc/XÃŗa vÄŠnh viáģ…n", "trash_emptied": "ÄÃŖ dáģn sáēĄch thÚng rÃĄc", - "trash_no_results_message": "áēĸnh và video Ä‘ÃŖ báģ‹ xoÃĄ sáēŊ hiáģƒn tháģ‹ áģŸ Ä‘Ãĸy.", - "trash_page_delete_all": "XoÃĄ táēĨt cáēŖ", - "trash_page_empty_trash_dialog_content": "BáēĄn cÃŗ muáģ‘n dáģn sáēĄch thÚng rÃĄc cáģ§a mÃŦnh không? Nháģ¯ng máģĨc này sáēŊ báģ‹ xoÃĄ vÄŠnh viáģ…n kháģi Immich", - "trash_page_info": "Nháģ¯ng máģĨc này sáēŊ báģ‹ xoÃĄ sau {days} ngày", - "trash_page_no_assets": "Không cÃŗ máģĨc nào", + "trash_no_results_message": "áēĸnh và video Ä‘ÃŖ báģ‹ xÃŗa sáēŊ hiáģƒn tháģ‹ áģŸ Ä‘Ãĸy.", + "trash_page_delete_all": "XÃŗa táēĨt cáēŖ", + "trash_page_empty_trash_dialog_content": "BáēĄn cÃŗ muáģ‘n dáģn sáēĄch thÚng rÃĄc cáģ§a mÃŦnh không? Nháģ¯ng máģĨc này sáēŊ báģ‹ xÃŗa vÄŠnh viáģ…n kháģi Immich", + "trash_page_info": "Nháģ¯ng máģĨc này sáēŊ báģ‹ xÃŗa sau {days} ngày", + "trash_page_no_assets": "Không cÃŗ táģ‡p nào", "trash_page_restore_all": "Khôi pháģĨc táēĨt cáēŖ", - "trash_page_select_assets_btn": "Cháģn áēŖnh", + "trash_page_select_assets_btn": "Cháģn táģ‡p", "trash_page_title": "ThÚng rÃĄc ({count})", "trashed_items_will_be_permanently_deleted_after": "CÃĄc máģĨc Ä‘ÃŖ xÃŗa sáēŊ báģ‹ xÃŗa vÄŠnh viáģ…n sau {days, plural, one {# ngày} other {# ngày}}.", + "troubleshoot": "Kháē¯c pháģĨc sáģą cáģ‘", "type": "LoáēĄi", "unable_to_change_pin_code": "Thay đáģ•i mÃŖ PIN tháēĨt báēĄi", + "unable_to_check_version": "Không tháģƒ kiáģƒm tra phiÃĒn báēŖn app hoáēˇc mÃĄy cháģ§", "unable_to_setup_pin_code": "Thiáēŋt láē­p mÃŖ PIN tháēĨt báēĄi", - "unarchive": "Huáģˇ lưu tráģ¯", - "unarchived_count": "{count, plural, other {ÄÃŖ huáģˇ lưu tráģ¯ # máģĨc}}", + "unarchive": "Báģ lưu tráģ¯", + "unarchive_action_prompt": "{count} Ä‘ÃŖ báģ kháģi Lưu tráģ¯", + "unarchived_count": "{count, plural, other {ÄÃŖ báģ lưu tráģ¯ # máģĨc}}", "undo": "Hoàn tÃĄc", "unfavorite": "Báģ yÃĒu thích", + "unfavorite_action_prompt": "{count} Ä‘ÃŖ báģ kháģi ÄÃŖ thích", "unhide_person": "Hiáģ‡n ngưáģi", "unknown": "Không xÃĄc đáģ‹nh", - "unknown_country": "Quáģ‘c gia không xÃĄc đáģ‹nh", - "unknown_year": "Năm không xÃĄc đáģ‹nh", + "unknown_country": "Quáģ‘c gia chưa rÃĩ", + "unknown_year": "Năm không rÃĩ", "unlimited": "Không giáģ›i háēĄn", "unlink_motion_video": "Háģ§y liÃĒn káēŋt video chuyáģƒn đáģ™ng", - "unlink_oauth": "Huáģˇ liÃĒn káēŋt OAuth", - "unlinked_oauth_account": "ÄÃŖ huáģˇ liÃĒn káēŋt tài khoáēŖn OAuth", + "unlink_oauth": "Háģ§y liÃĒn káēŋt OAuth", + "unlinked_oauth_account": "ÄÃŖ háģ§y liÃĒn káēŋt tài khoáēŖn OAuth", "unmute_memories": "Báē­t tiáēŋng Káģˇ niáģ‡m", "unnamed_album": "Album chưa đáēˇt tÃĒn", - "unnamed_album_delete_confirmation": "BáēĄn cÃŗ cháē¯c cháē¯n muáģ‘n xÃŗa album này không?", + "unnamed_album_delete_confirmation": "BáēĄn cÃŗ cháē¯c muáģ‘n xÃŗa album này?", "unnamed_share": "Chia sáēģ chưa đáēˇt tÃĒn", - "unsaved_change": "Thay đáģ•i chưa lưu", + "unsaved_change": "Chưa lưu thay đáģ•i", "unselect_all": "Báģ cháģn táēĨt cáēŖ", "unselect_all_duplicates": "Báģ cháģn táēĨt cáēŖ cÃĄc báēŖn trÚng láēˇp", - "unstack": "Huáģˇ xáēŋp nhÃŗm", - "unstacked_assets_count": "ÄÃŖ huáģˇ xáēŋp nhÃŗm {count, plural, one {# máģĨc} other {# máģĨc}}", + "unselect_all_in": "Báģ cháģn táēĨt cáēŖ trong {group}", + "unstack": "Háģ§y xáēŋp nhÃŗm", + "unstack_action_prompt": "{count} Ä‘ÃŖ báģ nhÃŗm", + "unstacked_assets_count": "ÄÃŖ háģ§y xáēŋp nhÃŗm {count, plural, one {# táģ‡p} other {# táģ‡p}}", + "untagged": "Chưa gáē¯n tháēģ", "up_next": "Tiáēŋp theo", + "update_location_action_prompt": "Cáē­p nháē­t đáģ‹a điáģƒm cáģ§a {count} táģ‡p Ä‘ÃŖ cháģn váģ›i:", "updated_at": "ÄÃŖ cáē­p nháē­t", "updated_password": "ÄÃŖ cáē­p nháē­t máē­t kháēŠu", "upload": "TáēŖi lÃĒn", + "upload_action_prompt": "{count} cháģ Ä‘áģƒ táēŖi lÃĒn", "upload_concurrency": "TáēŖi lÃĒn đáģ“ng tháģi", - "upload_dialog_info": "BáēĄn cÃŗ muáģ‘n sao lưu nháģ¯ng máģĨc Ä‘ÃŖ cháģn táģ›i mÃĄy cháģ§ không?", - "upload_dialog_title": "TáēŖi lÃĒn áēŖnh", - "upload_errors": "TáēŖi lÃĒn Ä‘ÃŖ hoàn táēĨt váģ›i {count, plural, one {# láģ—i} other {# láģ—i}}, làm máģ›i trang đáģƒ xem cÃĄc áēŖnh máģ›i táēŖi lÃĒn.", + "upload_details": "Chi tiáēŋt táēŖi lÃĒn", + "upload_dialog_info": "BáēĄn cÃŗ muáģ‘n sao lưu nháģ¯ng táģ‡p Ä‘ÃŖ cháģn lÃĒn mÃĄy cháģ§ không?", + "upload_dialog_title": "TáēŖi lÃĒn táģ‡p", + "upload_errors": "ÄÃŖ hoàn táēĨt táēŖi lÃĒn váģ›i {count, plural, one {# láģ—i} other {# láģ—i}}, làm máģ›i trang đáģƒ xem cÃĄc táģ‡p váģĢa táēŖi lÃĒn.", "upload_finished": "ÄÃŖ hoàn táēĨt táēŖi lÃĒn", "upload_progress": "CÃ˛n láēĄi {remaining, number} - ÄÃŖ xáģ­ lÃŊ {processed, number}/{total, number}", - "upload_skipped_duplicates": "ÄÃŖ báģ qua {count, plural, one {# máģĨc trÚng láēˇp} other {# máģĨc trÚng láēˇp}}", - "upload_status_duplicates": "MáģĨc trÚng láēˇp", + "upload_skipped_duplicates": "ÄÃŖ báģ qua {count, plural, one {# táģ‡p trÚng láēˇp} other {# táģ‡p trÚng láēˇp}}", + "upload_status_duplicates": "Táģ‡p trÚng láēˇp", "upload_status_errors": "Láģ—i", "upload_status_uploaded": "ÄÃŖ táēŖi lÃĒn", - "upload_success": "TáēŖi lÃĒn thành công, làm máģ›i trang đáģƒ xem cÃĄc táē­p tin máģ›i táēŖi lÃĒn.", + "upload_success": "TáēŖi lÃĒn thành công, làm máģ›i trang đáģƒ xem cÃĄc táģ‡p váģĢa táēŖi lÃĒn.", "upload_to_immich": "TáēŖi lÃĒn Immich ({count})", "uploading": "Đang táēŖi lÃĒn", + "uploading_media": "Đang táēŖi lÃĒn phÆ°ÆĄng tiáģ‡n", "url": "URL", "usage": "Sáģ­ dáģĨng", "use_biometric": "DÚng sinh tráē¯c háģc", "use_current_connection": "dÚng káēŋt náģ‘i hiáģ‡n táēĄi", - "use_custom_date_range": "Sáģ­ dáģĨng khoáēŖng tháģi gian tÚy cháģ‰nh", + "use_custom_date_range": "Cháģn khoáēŖng tháģi gian tÚy cháģ‰nh", "user": "Ngưáģi dÚng", "user_has_been_deleted": "Ngưáģi dÚng này Ä‘ÃŖ báģ‹ xÃŗa.", "user_id": "ID ngưáģi dÚng", - "user_liked": "{user} Ä‘ÃŖ thích {type, select, photo {áēŖnh này} video {video này} asset {máģĨc này} other {nÃŗ}}", + "user_liked": "{user} Ä‘ÃŖ thích {type, select, photo {áēŖnh này} video {video này} asset {táģ‡p này} other {nÃŗ}}", "user_pin_code_settings": "MÃŖ PIN", "user_pin_code_settings_description": "QuáēŖn lÃŊ mÃŖ PIN cáģ§a báēĄn", "user_privacy": "Quyáģn riÃĒng tư ngưáģi dÚng", "user_purchase_settings": "Mua", - "user_purchase_settings_description": "QuáēŖn lÃŊ máģĨc mua cáģ§a báēĄn", - "user_role_set": "Đáēˇt {user} làm {role}", + "user_purchase_settings_description": "QuáēŖn lÃŊ Ä‘ÆĄn mua cáģ§a báēĄn", + "user_role_set": "Cháģn {user} làm {role}", "user_usage_detail": "Chi tiáēŋt sáģ­ dáģĨng cáģ§a ngưáģi dÚng", "user_usage_stats": "Tháģ‘ng kÃĒ", "user_usage_stats_description": "Xem tháģ‘ng kÃĒ sáģ­ dáģĨng cáģ§a tài khoáēŖn", "username": "TÃĒn ngưáģi dÚng", "users": "Ngưáģi dÚng", + "users_added_to_album_count": "ÄÃŖ thÃĒm {count, plural, one {# ngưáģi dÚng} other {# ngưáģi dÚng}} vào album", "utilities": "Tiáģ‡n ích", "validate": "XÃĄc minh", "validate_endpoint_error": "Vui lÃ˛ng nháē­p URL háģŖp láģ‡", "variables": "CÃĄc tham sáģ‘", "version": "PhiÃĒn báēŖn", "version_announcement_closing": "BáēĄn cáģ§a báēĄn, Alex", - "version_announcement_message": "Chào báēĄn! Máģ™t phiÃĒn báēŖn máģ›i cáģ§a Immich Ä‘ÃŖ phÃĄt hành. Vui lÃ˛ng dành tháģi gian đáģƒ xem danh sÃĄch thay đáģ•i đáģƒ Ä‘áēŖm báēŖo cáēĨu hÃŦnh cáģ§a báēĄn đưáģŖc cáē­p nháē­t đáģƒ trÃĄnh láģ—i cáēĨu hÃŦnh sai, đáēˇc biáģ‡t náēŋu báēĄn sáģ­ dáģĨng WatchTower hoáēˇc báēĨt káģŗ cÆĄ cháēŋ táģą Ä‘áģ™ng cáē­p nháē­t Immich cáģ§a báēĄn.", + "version_announcement_message": "Chào báēĄn! Máģ™t phiÃĒn báēŖn máģ›i cáģ§a Immich Ä‘ÃŖ ra máē¯t. Vui lÃ˛ng dành tháģi gian đáģƒ xem danh sÃĄch thay đáģ•i đáģƒ Ä‘áēŖm báēŖo cáēĨu hÃŦnh cáģ§a báēĄn đưáģŖc cáē­p nháē­t đáģƒ trÃĄnh láģ—i cáēĨu hÃŦnh sai, đáēˇc biáģ‡t náēŋu báēĄn sáģ­ dáģĨng WatchTower hoáēˇc báēĨt káģŗ cÆĄ cháēŋ táģą Ä‘áģ™ng cáē­p nháē­t Immich cáģ§a báēĄn.", "version_history": "Láģ‹ch sáģ­ phiÃĒn báēŖn", "version_history_item": "ÄÃŖ cài đáēˇt {version} vào {date}", "video": "Video", @@ -1949,32 +2200,37 @@ "view_album": "Xem Album", "view_all": "Xem táēĨt cáēŖ", "view_all_users": "Xem táēĨt cáēŖ ngưáģi dÚng", + "view_asset_owners": "Xem cháģ§ sáģŸ háģ¯u táģ‡p", "view_details": "Xem thông tin chi tiáēŋt", "view_in_timeline": "Xem trong dÃ˛ng tháģi gian", "view_link": "Xem liÃĒn káēŋt", "view_links": "Xem cÃĄc liÃĒn káēŋt", "view_name": "Giao diáģ‡n", - "view_next_asset": "Xem áēŖnh tiáēŋp theo", - "view_previous_asset": "Xem áēŖnh trưáģ›c Ä‘Ãŗ", + "view_next_asset": "Xem táģ‡p tiáēŋp theo", + "view_previous_asset": "Xem táģ‡p trưáģ›c Ä‘Ãŗ", "view_qr_code": "Xem mÃŖ QR", "view_similar_photos": "Xem áēŖnh tÆ°ÆĄng táģą", "view_stack": "Xem nhÃŗm áēŖnh", "view_user": "Xem Ngưáģi dÚng", - "viewer_remove_from_stack": "XoÃĄ kháģi nhÃŗm", - "viewer_stack_use_as_main_asset": "Đáēˇt làm láģąa cháģn hàng đáē§u", - "viewer_unstack": "Huáģˇ xáēŋp nhÃŗm", + "viewer_remove_from_stack": "XÃŗa kháģi nhÃŗm", + "viewer_stack_use_as_main_asset": "Đáēˇt làm báģ™ táģ‡p chính", + "viewer_unstack": "Háģ§y xáēŋp nhÃŗm", "visibility_changed": "ÄÃŖ thay đáģ•i tráēĄng thÃĄi hiáģƒn tháģ‹ cho {count, plural, one {# ngưáģi} other {# ngưáģi}}", "waiting": "Đang cháģ", + "waiting_count": "Đang cháģ: {count}", "warning": "CáēŖnh bÃĄo", "week": "Tuáē§n", "welcome": "Chào máģĢng", "welcome_to_immich": "Chào máģĢng đáēŋn váģ›i Immich", + "width": "Chiáģu ráģ™ng", "wifi_name": "TÃĒn Wi-Fi", + "workflow": "Workflow", "wrong_pin_code": "MÃŖ PIN không đÃēng", "year": "Năm", "years_ago": "{years, plural, one {# năm} other {# năm}} trưáģ›c", "yes": "Đáģ“ng ÃŊ", "you_dont_have_any_shared_links": "BáēĄn không cÃŗ liÃĒn káēŋt chia sáēģ nào", "your_wifi_name": "TÃĒn Wi-Fi cáģ§a báēĄn", - "zoom_image": "Thu phÃŗng áēŖnh" + "zoom_image": "Thu phÃŗng áēŖnh", + "zoom_to_bounds": "Thu phÃŗng đáēŋn giáģ›i háēĄn" } diff --git a/i18n/yue_Hant.json b/i18n/yue_Hant.json index 0967ef424b..e88c5da1b0 100644 --- a/i18n/yue_Hant.json +++ b/i18n/yue_Hant.json @@ -1 +1,7 @@ -{} +{ + "about": "關æ–ŧ", + "account": "å¸ŗč™Ÿ", + "account_settings": "å¸ŗč™Ÿč¨­åŽš", + "action": "動äŊœ", + "week": "星期" +} diff --git a/i18n/zh_Hant.json b/i18n/zh_Hant.json index ca066bedb3..bd4073d52c 100644 --- a/i18n/zh_Hant.json +++ b/i18n/zh_Hant.json @@ -7,6 +7,7 @@ "action_common_update": "更新", "actions": "é€˛čĄŒå‹•äŊœ", "active": "處ᐆ䏭", + "active_count": "處ᐆ䏭īŧš{count}", "activity": "動態", "activity_changed": "å‹•æ…‹åˇ˛{enabled, select, true {開啟} other {關閉}}", "add": "加å…Ĩ", @@ -67,6 +68,7 @@ "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 表達åŧ", "cron_expression_description": "äŊŋᔍ Cron æ ŧåŧč¨­åŽšæŽƒæé–“éš”ã€‚æ›´å¤ščŗ‡č¨ŠčĢ‹åƒé–ą Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "åœį”¨į™ģå…Ĩ", "duplicate_detection_job_description": "䞝靠æ™ēæ…§æœå°‹ã€‚å°é …į›ŽåŸˇčĄŒæŠŸå™¨å­¸įŋ’䞆åĩæ¸Ŧᛏäŧŧåœ–į‰‡", "exclusion_pattern_description": "排除čĻå‰‡å¯čŽ“æ‚¨åœ¨æŽƒæåĒ’éĢ”åēĢæ™‚åŋŊį•Ĩį‰šåŽšįš„æĒ”æĄˆå’Œčŗ‡æ–™å¤žã€‚é€™åœ¨æ‚¨æœ‰äē›čŗ‡æ–™å¤žåŒ…åĢä¸æƒŗåŒ¯å…Ĩįš„æĒ”æĄˆīŧˆäž‹åĻ‚ RAW æĒ”īŧ‰æ™‚į‰šåˆĨæœ‰į”¨ã€‚", - "external_library_management": "外部åĒ’éĢ”åēĢįŽĄį†", + "export_config_as_json_description": "將į•ļ前įŗģįĩąé…å¯˜ä¸‹čŧ‰į‚ēJSONæĒ”æĄˆ", + "external_libraries_page_description": "įŽĄį†å¤–éƒ¨åēĢ頁éĸ", "face_detection": "臉孔åĩæ¸Ŧ", "face_detection_description": "äŊŋį”¨æŠŸå™¨å­¸įŋ’åĩæ¸ŦåĒ’éĢ”æĒ”æĄˆä¸­įš„č‡‰å­”ã€‚å°æ–ŧåŊąį‰‡īŧŒåƒ…æœƒåˆ†æžį¸Žåœ–ã€‚ã€Œé‡æ–°æ•´į†ã€æœƒīŧˆé‡æ–°īŧ‰č™•į†æ‰€æœ‰åĒ’éĢ”æĒ”æĄˆã€‚ã€Œé‡č¨­ã€å‰‡æœƒéĄå¤–æ¸…é™¤į›Žå‰įš„æ‰€æœ‰äēēč‡‰čŗ‡æ–™ã€‚ã€ŒæŽ’å…ĨæœĒč™•į†ã€æœƒå°‡å°šæœĒč™•į†éŽįš„åĒ’éĢ”æĒ”æĄˆåŠ å…ĨäŊ‡åˆ—ã€‚åœ¨åŽŒæˆã€Œč‡‰å­”åĩæ¸Ŧ』垌īŧŒåĩæ¸Ŧåˆ°įš„č‡‰å­”å°‡æœƒčĸĢ加å…Ĩã€Œč‡‰å­”čž¨č­˜ã€įš„äŊ‡åˆ—īŧŒä¸Ļäžį…§čž¨č­˜įĩæžœæ­¸éĄžåˆ°įžæœ‰æˆ–æ–°įš„äēēį‰Šįž¤įĩ„中。", "facial_recognition_job_description": "將åĩæ¸Ŧåˆ°įš„č‡‰å­”äžį…§äēēį‰Šåˆ†éĄžã€‚æ­¤æ­ĨéŠŸæœƒåœ¨č‡‰å­”åĩæ¸ŦåŽŒæˆåžŒåŸˇčĄŒã€‚é¸æ“‡ã€Œé‡č¨­ã€æœƒé‡æ–°åˆ†įĩ„æ‰€æœ‰č‡‰å­”ã€‚é¸æ“‡ã€ŒæŽ’å…ĨæœĒč™•į†ã€æœƒå°‡å°šæœĒ指洞äēēį‰Šįš„č‡‰å­”åŠ å…ĨäŊ‡åˆ—。", @@ -102,22 +105,28 @@ "image_thumbnail_description": "į§ģ除中įšŧčŗ‡æ–™įš„å°åž‹į¸Žåœ–īŧŒäģĨᔍæ–ŧæĒĸčĻ–å¤§é‡į…§į‰‡æ™‚äŊŋᔍīŧŒäž‹åĻ‚ä¸ģ時間čģ¸", "image_thumbnail_quality_description": "į¸Žåœ–å“čŗĒį¯„åœį‚ē 1 到 100。數å€ŧčļŠéĢ˜å“čŗĒčļŠåĨŊīŧŒäŊ†æĒ”æĄˆä🿜ƒæ›´å¤§īŧŒä¸Ļ可čƒŊ降äŊŽæ‡‰į”¨į¨‹åŧįš„回應速åēĻ。", "image_thumbnail_title": "į¸Žåœ–č¨­åŽš", + "import_config_from_json_description": "é€šéŽä¸Šå‚ŗJSONč¨­åŽšæĒ”å°Žå…Ĩįŗģįĩąé…å¯˜", "job_concurrency": "{job}äŊĩį™ŧ", "job_created": "厞åģēįĢ‹äģģ務", "job_not_concurrency_safe": "這個äģģ務äŊĩį™ŧä¸Ļ不厉全。", "job_settings": "äģģå‹™č¨­åŽš", "job_settings_description": "äŊĩį™ŧäģģå‹™įŽĄį†", - "job_status": "äģģå‹™į‹€æ…‹", "jobs_delayed": "{jobCount, plural, other {# 項äģģ務厞åģļ垌}}", "jobs_failed": "{jobCount, plural, other {# 項äģģå‹™åˇ˛å¤ąæ•—}}", + "jobs_over_time": "įĩ„į𔿙‚é–“äģģ務數", "library_created": "厞åģēįĢ‹åĒ’éĢ”åēĢīŧš{library}", "library_deleted": "åĒ’éĢ”åēĢ厞åˆĒ除", + "library_details": "åĒ’éĢ”åēĢčŠŗæƒ…", + "library_folder_description": "指厚čĻå°Žå…Ĩįš„čŗ‡æ–™å¤žã€‚ å°‡æŽƒææ­¤čŗ‡æ–™å¤žīŧˆåŒ…æ‹Ŧå­čŗ‡æ–™å¤žīŧ‰ä¸­įš„åŊąåƒå’ŒčĻ–é ģ。", + "library_remove_exclusion_pattern_prompt": "您įĸē厚čĻåˆ é™¤æ­¤æŽ’é™¤æ¨Ąåŧå—ŽīŧŸ", + "library_remove_folder_prompt": "您įĸē厚čĻåˆ é™¤æ­¤å°Žå…Ĩčŗ‡æ–™å¤žå—ŽīŧŸ", "library_scanning": "厚期掃描", "library_scanning_description": "厚期åĒ’éĢ”åēĢæŽƒæč¨­åޚ", "library_scanning_enable_description": "å•Ÿį”¨åĒ’éĢ”åēĢ厚期掃描", "library_settings": "外部åĒ’éĢ”åēĢ", "library_settings_description": "įŽĄį†å¤–éƒ¨åĒ’éĢ”åēĢč¨­åŽš", "library_tasks_description": "掃描外部åĒ’éĢ”åēĢäģĨ尋扞新åĸžæˆ–čŽŠæ›´įš„é …į›Ž", + "library_updated": "更新åĒ’éĢ”åēĢ", "library_watching_enable_description": "į›ŖæŽ§å¤–éƒ¨åĒ’éĢ”åēĢįš„æĒ”æĄˆčŽŠåŒ–", "library_watching_settings": "åĒ’éĢ”åēĢį›ŖæŽ§[å¯Ļ銗性]", "library_watching_settings_description": "č‡Ēå‹•į›ŖæŽ§æĒ”æĄˆįš„čŽŠåŒ–", @@ -177,6 +186,7 @@ "maintenance_start": "啟動įļ­č­ˇæ¨Ąåŧ", "maintenance_start_error": "啟動įļ­č­ˇæ¨Ąåŧå¤ąæ•—。", "manage_concurrency": "įŽĄį†äŊĩį™ŧ", + "manage_concurrency_description": "導čˆĒ到äģģ務頁éĸäģĨįŽĄį†äģģ務äŊĩį™ŧ性", "manage_log_settings": "įŽĄį†æ—ĨčĒŒč¨­åŽš", "map_dark_style": "æˇąč‰˛æ¨Ŗåŧ", "map_enable_description": "å•Ÿį”¨åœ°åœ–åŠŸčƒŊ", @@ -266,10 +276,14 @@ "password_settings_description": "įŽĄį†å¯†įĸŧį™ģå…Ĩč¨­åŽš", "paths_validated_successfully": "æ‰€æœ‰čˇ¯åž‘éŠ—č­‰æˆåŠŸ", "person_cleanup_job": "æ¸…į†äēēį‰Š", + "queue_details": "äŊ‡åˆ—čŗ‡č¨Š", + "queues": "äģģ務äŊ‡åˆ—", + "queues_page_description": "įŽĄį†č€…äŊ‡åˆ—頁éĸ", "quota_size_gib": "é…éĄå¤§å°īŧˆGiBīŧ‰", "refreshing_all_libraries": "æ­Ŗåœ¨é‡æ–°æ•´į†æ‰€æœ‰åĒ’éĢ”åēĢ", "registration": "įŽĄį†č€…č¨ģ冊", "registration_description": "į”ąæ–ŧ您是įŗģįĩąä¸Šįš„įŦŦ一äŊäŊŋᔍ者īŧŒæ‚¨å°‡čĸĢæŒ‡æ´žį‚ēįŗģįĩąįŽĄį†å“ĄīŧŒä¸Ļ負č˛ŦįŽĄį†į›¸é—œäē‹å‹™īŧŒåžŒįēŒįš„å…ļäģ–äŊŋį”¨č€…äšŸå°‡į”ąæ‚¨åģēįĢ‹ã€‚", + "remove_failed_jobs": "į§ģé™¤å¤ąæ•—äģģ務", "require_password_change_on_login": "čĻæą‚äŊŋį”¨č€…åœ¨éĻ–æŦĄį™ģå…Ĩæ™‚čŽŠæ›´å¯†įĸŧ", "reset_settings_to_default": "å°‡č¨­åŽšé‡č¨­į‚ē預設å€ŧ", "reset_settings_to_recent_saved": "å°‡č¨­åŽšé‡č¨­į‚ē最čŋ‘å„˛å­˜įš„č¨­åޚ", @@ -282,8 +296,10 @@ "server_public_users_description": "在將äŊŋį”¨č€…æ–°åĸžåˆ°å…ąäēĢᛏį°ŋ時īŧŒæœƒåˆ—å‡ē所有äŊŋį”¨č€…įš„å§“åčˆ‡é›ģ子éƒĩäģļã€‚åœį”¨æ­¤åŠŸčƒŊ垌īŧŒäŊŋį”¨č€…æ¸…å–Žå°‡åƒ…äž›įŗģįĩąįŽĄį†å“ĄæĒĸčĻ–ã€‚", "server_settings": "äŧ翜å™¨č¨­åޚ", "server_settings_description": "įŽĄį†äŧ翜å™¨č¨­åޚ", + "server_stats_page_description": "įŽĄį†æœå‹™å™¨įĩąč¨ˆé éĸ", "server_welcome_message": "æ­ĄčŋŽč¨Šæ¯", "server_welcome_message_description": "在į™ģå…Ĩ頁éĸéĄ¯į¤ēįš„č¨Šæ¯ã€‚", + "settings_page_description": "įŽĄį†č¨­åŽšé éĸ", "sidecar_job": "側æŽĨæĒ”æĄˆä¸­įšŧčŗ‡æ–™", "sidecar_job_description": "åžžæĒ”æĄˆįŗģįĩąåĩæ¸Ŧ或同æ­Ĩ側æŽĨæĒ”æĄˆä¸­įšŧčŗ‡æ–™", "slideshow_duration_description": "每åŧĩåœ–į‰‡æ”žæ˜ įš„į§’æ•¸", @@ -402,7 +418,8 @@ "user_restore_scheduled_removal": "還原äŊŋᔍ者 - 預厚æ–ŧ {date, date, long} į§ģ除", "user_settings": "äŊŋį”¨č€…č¨­åŽš", "user_settings_description": "įŽĄį†äŊŋį”¨č€…č¨­åŽš", - "user_successfully_removed": "äŊŋᔍ者 {email} åˇ˛æˆåŠŸį§ģ除。", + "user_successfully_removed": "ᔍæˆļ{email}åˇ˛æˆåŠŸåˆ é™¤ã€‚", + "users_page_description": "įŽĄį†į”¨æˆļ頁éĸ", "version_check_enabled_description": "å•Ÿį”¨į‰ˆæœŦæĒĸæŸĨ", "version_check_implications": "į‰ˆæœŦæĒĸæŸĨ功čƒŊæœƒåŽšæœŸčˆ‡ github.com 通訊", "version_check_settings": "į‰ˆæœŦæĒĸæŸĨ", @@ -635,6 +652,7 @@ "backup_options_page_title": "備äģŊ選項", "backup_setting_subtitle": "įŽĄį†čƒŒæ™¯čˆ‡å‰č‡ēä¸Šå‚ŗč¨­åŽš", "backup_settings_subtitle": "įŽĄį†ä¸Šå‚ŗč¨­åŽš", + "backup_upload_details_page_more_details": "éģžæ“ŠæŸĨįœ‹æ›´å¤ščŠŗį´°čŗ‡č¨Š", "backward": "į”ąčˆŠč‡ŗæ–°", "biometric_auth_enabled": "į”Ÿį‰Ščž¨č­˜éŠ—č­‰åˇ˛å•Ÿį”¨", "biometric_locked_out": "æ‚¨åˇ˛čĸĢéŽ–åŽšį„Ąæŗ•äŊŋį”¨į”Ÿį‰Ščž¨č­˜éŠ—č­‰", @@ -701,6 +719,7 @@ "check_corrupt_asset_backup_button": "åŸˇčĄŒæĒĸæŸĨ", "check_corrupt_asset_backup_description": "åƒ…åœ¨åˇ˛é€Ŗįˇšč‡ŗ Wi-Fi 且所有åĒ’éĢ”åˇ˛åŽŒæˆå‚™äģŊåžŒåŸˇčĄŒæ­¤æĒĸæŸĨã€‚æ­¤į¨‹åŧå¯čƒŊ需čĻæ•¸åˆ†é˜ã€‚", "check_logs": "æĒĸæŸĨæ—Ĩčnj", + "checksum": "æ ĄéŠ—å’Œ", "choose_matching_people_to_merge": "選擇čρ合äŊĩįš„į›¸įŦĻäēēį‰Š", "city": "城市", "clear": "清įŠē", @@ -723,6 +742,7 @@ "collapse_all": "å…¨éƒ¨æŠ˜į–Š", "color": "顏色", "color_theme": "色åŊŠä¸ģ題", + "command": "å‘Ŋäģ¤", "comment_deleted": "ᕙ荀厞åˆĒ除", "comment_options": "ᕙ荀遏項", "comments_and_likes": "į•™č¨€čˆ‡å–œæ­Ą", @@ -971,6 +991,7 @@ "failed_to_unstack_assets": "觪除åĒ’éĢ”å †į–Šå¤ąæ•—", "failed_to_update_notification_status": "į„Ąæŗ•æ›´æ–°é€šįŸĨį‹€æ…‹", "incorrect_email_or_password": "é›ģ子éƒĩäģ￈–密įĸŧ錯čǤ", + "library_folder_already_exists": "此導å…Ĩčˇ¯åž‘åˇ˛å­˜åœ¨ã€‚", "paths_validation_failed": "{paths, plural, one {# å€‹čˇ¯åž‘} other {# å€‹čˇ¯åž‘}} éŠ—č­‰å¤ąæ•—", "profile_picture_transparent_pixels": "個äēēčŗ‡æ–™åœ–į‰‡ä¸čƒŊ有透明į•Ģį´ ã€‚čĢ‹æ”žå¤§ä¸Ļ/或į§ģ動åŊąåƒã€‚", "quota_higher_than_disk_size": "æ‚¨æ‰€č¨­åŽšįš„é…éĄå¤§æ–ŧ᪁įĸŸå¤§å°", @@ -1055,6 +1076,7 @@ "unable_to_update_user": "į„Ąæŗ•æ›´æ–°äŊŋᔍ者", "unable_to_upload_file": "į„Ąæŗ•ä¸Šå‚ŗæĒ”æĄˆ" }, + "exclusion_pattern": "æŽ’é™¤æ¨Ąåŧ", "exif": "EXIF 可ä礿›åŊąåƒæĒ”æ ŧåŧ", "exif_bottom_sheet_description": "新åĸžæčŋ°...", "exif_bottom_sheet_description_error": "更新描čŋ°æ™‚į™ŧį”ŸéŒ¯čǤ", @@ -1085,6 +1107,7 @@ "external_network_sheet_info": "č‹ĨæœĒé€Ŗįˇšč‡ŗååĨŊįš„ Wi-FiīŧŒå°‡äžåˆ—čĄ¨åžžä¸Šåˆ°ä¸‹é¸æ“‡å¯é€Ŗįˇšįš„äŧ翜å™¨įļ˛å€", "face_unassigned": "æœĒ指厚", "failed": "å¤ąæ•—", + "failed_count": "å¤ąæ•—īŧš{count}", "failed_to_authenticate": "čēĢäģŊéŠ—č­‰å¤ąæ•—", "failed_to_load_assets": "į„Ąæŗ•čŧ‰å…ĨåĒ’éĢ”", "failed_to_load_folder": "į„Ąæŗ•čŧ‰å…Ĩčŗ‡æ–™å¤ž", @@ -1114,6 +1137,7 @@ "folders_feature_description": "é€éŽčŗ‡æ–™å¤žæĒĸčĻ–į€čĻŊæĒ”æĄˆįŗģįĩąä¸­įš„į›¸į‰‡čˆ‡åŊąį‰‡", "forgot_pin_code_question": "åŋ˜č¨˜æ‚¨įš„ PIN įĸŧīŧŸ", "forward": "į”ąæ–°č‡ŗčˆŠ", + "full_path": "åŽŒæ•´čˇ¯åž‘īŧš{path}", "gcast_enabled": "Google Cast", "gcast_enabled_description": "此功čƒŊ需čĻåžž Google čŧ‰å…Ĩå¤–éƒ¨čŗ‡æēæ‰čƒŊæ­Ŗå¸¸é‹äŊœã€‚", "general": "一čˆŦ", @@ -1144,12 +1168,14 @@ "header_settings_header_name_input": "æ¨™é ­åį¨ą", "header_settings_header_value_input": "標頭å€ŧ", "headers_settings_tile_title": "č‡Ē訂äģŖį†æ¨™é ­", + "height": "é̘åēĻ", "hi_user": "嗨īŧ{name}īŧˆ{email}īŧ‰", "hide_all_people": "éšąč—æ‰€æœ‰äēēį‰Š", "hide_gallery": "隱藏åĒ’éĢ”åēĢ", "hide_named_person": "隱藏 {name}", "hide_password": "éšąč—å¯†įĸŧ", "hide_person": "隱藏äēēį‰Š", + "hide_text_recognition": "éšąč—æ–‡å­—č­˜åˆĨ", "hide_unnamed_people": "隱藏æœĒå‘Ŋåįš„äēēį‰Š", "home_page_add_to_album_conflicts": "厞將 {added} 個åĒ’éĢ”æ–°åĸžåˆ°į›¸į°ŋ {album}。{failed} 個åĒ’éĢ”åˇ˛åœ¨čŠ˛į›¸į°ŋ中。", "home_page_add_to_album_err_local": "æšĢ時不čƒŊ將æœŦ抟åĒ’éĢ”æ–°åĸžåˆ°į›¸į°ŋīŧŒåˇ˛į•Ĩ過", @@ -1243,6 +1269,8 @@ "let_others_respond": "å…č¨ąäģ–äēē回čφ", "level": "į­‰į´š", "library": "ᛏį°ŋ", + "library_add_folder": "æˇģåŠ čŗ‡æ–™å¤ž", + "library_edit_folder": "ᎍčŧ¯čŗ‡æ–™å¤ž", "library_options": "čŗ‡æ–™åēĢ選項", "library_page_device_albums": "čŖįŊŽä¸Šįš„ᛏį°ŋ", "library_page_new_album": "新åĸžį›¸į°ŋ", @@ -1263,6 +1291,7 @@ "local": "æœŦ抟", "local_asset_cast_failed": "į„Ąæŗ•æŠ•æ”žæœĒä¸Šå‚ŗč‡ŗäŧ翜å™¨įš„é …į›Ž", "local_assets": "æœŦæŠŸé …į›Ž", + "local_id": "æœŦ地ID", "local_media_summary": "æœŦ抟åĒ’éĢ”æ‘˜čρ", "local_network": "æœŦ抟įļ˛čˇ¯", "local_network_sheet_info": "į•ļäŊŋį”¨æŒ‡åŽšįš„ Wi-Fi įļ˛čˇ¯æ™‚īŧŒæ‡‰į”¨į¨‹åŧå°‡é€éŽæ­¤įļ˛å€é€Ŗįˇšč‡ŗäŧ翜å™¨", @@ -1441,6 +1470,7 @@ "no_favorites_message": "加å…Ĩæ”ļ藏īŧŒåŠ é€Ÿå°‹æ‰žåŊąåƒ", "no_libraries_message": "åģēįĢ‹å¤–éƒ¨åĒ’éĢ”åēĢäģĨæĒĸčĻ–æ‚¨įš„į…§į‰‡å’ŒåŊąį‰‡", "no_local_assets_found": "æœĒæ‰žåˆ°å…ˇæœ‰æ­¤æ ĄéŠ—å’Œįš„æœŦæŠŸčŗ‡į”ĸ", + "no_location_set": "æœĒč¨­åŽšäŊįŊŽ", "no_locked_photos_message": "éŽ–åŽšįš„čŗ‡æ–™å¤žä¸­įš„į…§į‰‡å’ŒåŊąį‰‡æœƒčĸĢ隱藏īŧŒį•ļæ‚¨į€čĻŊæˆ–æœå°‹į›¸į°ŋæ™‚ä¸æœƒéĄ¯į¤ē。", "no_name": "į„Ąå", "no_notifications": "æ˛’æœ‰é€šįŸĨ", @@ -1500,6 +1530,7 @@ "other_variables": "å…ļäģ–čŽŠæ•¸", "owned": "æˆ‘įš„", "owner": "æ‰€æœ‰č€…", + "page": "頁", "partner": "čĻĒæœ‹åĨŊ友", "partner_can_access": "{partner} 可äģĨ存取", "partner_can_access_assets": "除äē†åˇ˛å°å­˜å’Œåˇ˛åˆĒ除䚋外īŧŒæ‚¨æ‰€æœ‰įš„į…§į‰‡å’ŒåŊąį‰‡", @@ -1956,6 +1987,7 @@ "show_slideshow_transition": "éĄ¯į¤ēåšģį‡ˆį‰‡čŊ‰å ´", "show_supporter_badge": "æ“č­ˇč€…åžŊįĢ ", "show_supporter_badge_description": "éĄ¯į¤ēæ“č­ˇč€…åžŊįĢ ", + "show_text_recognition": "éĄ¯į¤ēæ–‡å­—č­˜åˆĨ", "show_text_search_menu": "éĄ¯į¤ēæ–‡å­—č’į´ĸ選喎", "shuffle": "隨抟排åē", "sidebar": "側邊æŦ„", @@ -2026,6 +2058,7 @@ "tags": "æ¨™įą¤", "tap_to_run_job": "éģžé¸äģĨ進行äŊœæĨ­", "template": "æ¨Ąæŋ", + "text_recognition": "æ–‡å­—č­˜åˆĨ", "theme": "ä¸ģ題", "theme_selection": "ä¸ģ題選項", "theme_selection_description": "äžį€čĻŊ器įŗģįĩąååĨŊč‡Ēå‹•č¨­åŽšæˇąã€æˇē色ä¸ģ題", @@ -2058,6 +2091,7 @@ "to_select": "選擇", "to_trash": "垃圞æĄļ", "toggle_settings": "åˆ‡æ›č¨­åŽš", + "toggle_theme_description": "切換ä¸ģ題", "total": "įĩąč¨ˆ", "total_usage": "į¸Ŋį”¨é‡", "trash": "垃圞æĄļ", @@ -2166,6 +2200,7 @@ "view_album": "æĒĸčϖᛏį°ŋ", "view_all": "į€čĻŊ全部", "view_all_users": "æĒĸčĻ–æ‰€æœ‰äŊŋᔍ者", + "view_asset_owners": "æŸĨįœ‹čŗ‡į”ĸæ‰€æœ‰č€…", "view_details": "æĒĸčĻ–čŠŗį´°čŗ‡č¨Š", "view_in_timeline": "在時間čģ¸ä¸­æĒĸčĻ–", "view_link": "æĒĸčϖ逪įĩ", @@ -2182,10 +2217,12 @@ "viewer_unstack": "取æļˆå †į–Š", "visibility_changed": "åˇ˛čŽŠæ›´ {count, plural, other {# äŊäēēį‰Š}}įš„å¯čĻ‹æ€§", "waiting": "åž…č™•į†", + "waiting_count": "åž…č™•į†īŧš{count}", "warning": "č­Ļ告", "week": "週", "welcome": "æ­ĄčŋŽ", "welcome_to_immich": "æ­ĄčŋŽäŊŋᔍ Immich", + "width": "å¯ŦåēĻ", "wifi_name": "Wi-Fi åį¨ą", "workflow": "åˇĨäŊœæĩį¨‹", "wrong_pin_code": "PIN įĸŧ錯čǤ", diff --git a/i18n/zh_SIMPLIFIED.json b/i18n/zh_SIMPLIFIED.json index f799a803a3..6e16116d32 100644 --- a/i18n/zh_SIMPLIFIED.json +++ b/i18n/zh_SIMPLIFIED.json @@ -7,6 +7,7 @@ "action_common_update": "更新", "actions": "操äŊœ", "active": "æ­Ŗåœ¨å¤„į†", + "active_count": "æ´ģ动: {count}", "activity": "æ´ģ动", "activity_changed": "æ´ģ劍厞{enabled, select, true {吝ᔍ} other {åœį”¨}}", "add": "æˇģ加", @@ -67,6 +68,7 @@ "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 襨螞åŧ", "cron_expression_description": "äŊŋᔍ Cron æ ŧåŧčŽžįŊŽæ‰Ģ描间隔。更多č¯Ļįģ†äŋĄæ¯č¯ˇå‚阅 Crontab Guru", @@ -74,7 +76,8 @@ "disable_login": "įρᔍį™ģåŊ•", "duplicate_detection_job_description": "å¯šį…§į‰‡čŋ›čĄŒæœē器å­Ļäš å¤„į†æĨæŖ€æĩ‹į›¸äŧŧéĄšį›ŽīŧŒäžčĩ–äēŽæ™ēčƒŊ搜į´ĸ", "exclusion_pattern_description": "æŽ’é™¤č§„åˆ™å…čŽ¸åœ¨æ‰Ģ描回å瓿—ļåŋŊį•Ĩ文äģļ和文äģļ多。åĻ‚æžœæœ‰åŒ…åĢä¸æƒŗå¯ŧå…Ĩįš„æ–‡äģļįš„æ–‡äģļ多īŧŒäž‹åĻ‚ RAW 文äģļīŧŒæŽ’é™¤č§„åˆ™å°†éžå¸¸æœ‰į”¨ã€‚", - "external_library_management": "外部回åē“įŽĄį†", + "export_config_as_json_description": "将åŊ“前įŗģįģŸé…įŊŽä¸‹čŊŊä¸ēJSON文äģļ", + "external_libraries_page_description": "įŽĄį†å¤–éƒ¨åē“éĄĩéĸ", "face_detection": "äēēč„¸æŖ€æĩ‹", "face_detection_description": "äŊŋᔍæœē器å­Ļäš æŖ€æĩ‹éĄšį›Žä¸­įš„äēē脸īŧˆč§†éĸ‘åĒæŖ€æĩ‹å…ļįŧŠį•Ĩå›žä¸­įš„äēē脸īŧ‰ã€‚é€‰æ‹Šâ€œåˆˇæ–°â€å°†äŧšīŧˆé‡æ–°īŧ‰å¤„į†æ‰€æœ‰éĄšį›Žã€‚é€‰æ‹Šâ€œé‡įŊŽâ€čŋ˜äŧšæ¸…é™¤æ‰€æœ‰åŊ“前éĸ部数捎。选拊“įŧēå¤ąâ€å°†å°šæœĒå¤„į†įš„éĄšį›Žčŋ›čĄŒæŽ’é˜Ÿå¤„į†ã€‚äēēč„¸æŖ€æĩ‹åŽŒæˆåŽīŧŒæŖ€æĩ‹åˆ°įš„äēēč„¸å°†æŽ’é˜Ÿčŋ›čĄŒéĸéƒ¨č¯†åˆĢīŧŒå°†åރäģŦ分įģ„åˆ°įŽ°æœ‰įš„æˆ–æ–°įš„äēēį‰Šä¸­ã€‚", "facial_recognition_job_description": "å°†æŖ€æĩ‹åˆ°įš„äēēč„¸æŒ‰į…§äēēį‰Šåˆ†įģ„。čŋ™ä¸€æ­Ĩ将在äēēč„¸æŖ€æĩ‹åŽŒæˆåŽæ‰§čĄŒã€‚é€‰æ‹Šâ€œé‡įŊŽâ€å°†äŧšīŧˆé‡æ–°īŧ‰åˆ†į섿‰€æœ‰äēēč„¸ã€‚é€‰æ‹Šâ€œįŧēå¤ąâ€å°†å°šæœĒåˆ†é…įš„äēē脸įŊŽäēŽé˜Ÿåˆ—中。", @@ -102,14 +105,15 @@ "image_thumbnail_description": "å‰ĨįĻģå…ƒæ•°æŽįš„å°įŧŠį•Ĩ回īŧŒį”¨äēŽæĩč§ˆä¸ģæ—ļ间įēŋᭉᅧቇįģ„", "image_thumbnail_quality_description": "įŧŠį•Ĩå›žč´¨é‡äģŽ 1 到 100。čļŠé̘čļŠåĨŊīŧŒäŊ†äŧšäē§į”Ÿæ›´å¤§įš„æ–‡äģļīŧŒåšļ且äŧšé™äŊŽįŗģįģŸįš„响åē”čƒŊ力。", "image_thumbnail_title": "įŧŠį•Ĩå›žčŽžįŊŽ", + "import_config_from_json_description": "通čŋ‡ä¸Šäŧ JSON配įŊŽæ–‡äģļå¯ŧå…ĨįŗģįģŸé…įŊŽ", "job_concurrency": "{job}äģģåŠĄåšļ发", "job_created": "äģģåŠĄåˇ˛åˆ›åģē", "job_not_concurrency_safe": "æ­¤äģģåŠĄåšļ发åšļ不厉全。", "job_settings": "äģģåŠĄčŽžįŊŽ", "job_settings_description": "įŽĄį†äģģåŠĄåšļ发", - "job_status": "äģģåŠĄįŠļ态", "jobs_delayed": "{jobCount, plural, other {#饚äģģåŠĄåˇ˛æŽ¨čŋŸ}}", "jobs_failed": "{jobCount, plural, other {#éĄšå¤ąč´Ĩ}}", + "jobs_over_time": "单äŊæ—ļ间äģģåŠĄæ•°", "library_created": "åˇ˛åˆ›åģē回åē“īŧš{library}", "library_deleted": "回åē“åˇ˛åˆ é™¤", "library_details": "回åē“č¯Ļ情", @@ -182,6 +186,7 @@ "maintenance_start": "åŧ€å¯įģ´æŠ¤æ¨Ąåŧ", "maintenance_start_error": "åŧ€å¯įģ´æŠ¤æ¨Ąåŧå¤ąč´Ĩ。", "manage_concurrency": "įŽĄį†äģģåŠĄåšļ发", + "manage_concurrency_description": "å¯ŧčˆĒ到äģģåŠĄéĄĩéĸäģĨįŽĄį†äģģåŠĄåšļ发性", "manage_log_settings": "įŽĄį†æ—Ĩåŋ—莞įŊŽ", "map_dark_style": "æˇąč‰˛æ¨Ąåŧ", "map_enable_description": "å¯į”¨åœ°å›žåŠŸčƒŊ", @@ -271,10 +276,14 @@ "password_settings_description": "įŽĄį†å¯†į į™ģåŊ•莞įŊŽ", "paths_validated_successfully": "æ‰€æœ‰čˇ¯åž„éĒŒč¯æˆåŠŸ", "person_cleanup_job": "æ¸…į†äēēį‰Š", + "queue_details": "队列č¯Ļ情", + "queues": "äģģåŠĄé˜Ÿåˆ—", + "queues_page_description": "įŽĄį†äŊœä¸šé˜Ÿåˆ—éĄĩéĸ", "quota_size_gib": "配éĸå¤§å°īŧˆGiBīŧ‰", "refreshing_all_libraries": "åˆˇæ–°æ‰€æœ‰å›žåē“", "registration": "æŗ¨å†ŒįŽĄį†å‘˜", "registration_description": "į”ąäēŽæ‚¨æ˜¯įŗģįģŸä¸Šįš„įŦŦ一ä¸Ēį”¨æˆˇīŧŒæ‚¨å°†čĸĢæŒ‡åޚä¸ēįŽĄį†å‘˜åšļč´Ÿč´ŖįŽĄį†äģģåŠĄīŧŒį”ąæ‚¨æĨ创åģēæ–°įš„į”¨æˆˇã€‚", + "remove_failed_jobs": "åˆ é™¤å¤ąč´Ĩįš„äŊœä¸š", "require_password_change_on_login": "čĻæą‚į”¨æˆˇéĻ–æŦĄį™ģåŊ•æ—ļæ›´æ”šå¯†į ", "reset_settings_to_default": "æĸ复éģ˜čŽ¤čŽžįŊŽ", "reset_settings_to_recent_saved": "æĸ复到最čŋ‘äŋå­˜įš„莞įŊŽ", @@ -287,8 +296,10 @@ "server_public_users_description": "å°†į”¨æˆˇæˇģåŠ åˆ°å…ąäēĢį›¸å†Œæ—ļīŧŒäŧšåˆ—å‡ēæ‰€æœ‰į”¨æˆˇīŧˆå§“åå’Œé‚ŽįŽąīŧ‰ã€‚įĻį”¨åŽīŧŒį”¨æˆˇåˆ—čĄ¨å°†äģ…å¯šįŽĄį†å‘˜į”¨æˆˇå¯į”¨ã€‚", "server_settings": "æœåŠĄå™¨čŽžįŊŽ", "server_settings_description": "įŽĄį†æœåŠĄå™¨čŽžįŊŽ", + "server_stats_page_description": "įŽĄį†æœåŠĄå™¨įģŸčŽĄéĄĩéĸ", "server_welcome_message": "æŦĸčŋŽæļˆæ¯", "server_welcome_message_description": "昞į¤ē在į™ģåŊ•éĄĩéĸä¸Šįš„æļˆæ¯ã€‚", + "settings_page_description": "įŽĄį†å‘˜čŽžįŊŽéĄĩéĸ", "sidecar_job": "čž…åŠŠå…ƒæ•°æŽ", "sidecar_job_description": "äģŽæ–‡äģļįŗģįģŸä¸­å‘įŽ°æˆ–åŒæ­Ĩčž…åŠŠå…ƒæ•°æŽ", "slideshow_duration_description": "昞į¤ē每åŧ å›žåƒįš„į§’æ•°", @@ -407,7 +418,8 @@ "user_restore_scheduled_removal": "æĸå¤į”¨æˆˇ - čŽĄåˆ’äēŽ{date, date, long}删除", "user_settings": "į”¨æˆˇčŽžįŊŽ", "user_settings_description": "įŽĄį†į”¨æˆˇčŽžįŊŽ", - "user_successfully_removed": "į”¨æˆˇâ€œ{email}â€åˇ˛čĸĢæˆåŠŸåˆ é™¤ã€‚", + "user_successfully_removed": "į”¨æˆˇ {email} åˇ˛æˆåŠŸåˆ é™¤ã€‚", + "users_page_description": "įŽĄį†į”¨æˆˇéĄĩéĸ", "version_check_enabled_description": "å¯į”¨į‰ˆæœŦæŖ€æĩ‹", "version_check_implications": "į‰ˆæœŦæŖ€æŸĨ功čƒŊ䞝čĩ–äēŽä¸Ž github.com įš„åŽšæœŸé€šäŋĄ", "version_check_settings": "į‰ˆæœŦæŖ€æŸĨ", @@ -640,6 +652,7 @@ "backup_options_page_title": "备äģŊ选项", "backup_setting_subtitle": "įŽĄį†åŽå°å’Œå‰å°ä¸Šäŧ čŽžįŊŽ", "backup_settings_subtitle": "įŽĄį†ä¸Šäŧ čŽžįŊŽ", + "backup_upload_details_page_more_details": "į‚šå‡ģäē†č§Ŗč¯Ļ情", "backward": "后退", "biometric_auth_enabled": "į”Ÿį‰Šč¯†åˆĢčēĢäģŊéĒŒč¯åˇ˛å¯į”¨", "biometric_locked_out": "您čĸĢé”åŽšåœ¨į”Ÿį‰Šč¯†åˆĢčēĢäģŊéĒŒč¯äš‹å¤–", @@ -706,6 +719,7 @@ "check_corrupt_asset_backup_button": "æ‰§čĄŒæŖ€æŸĨ", "check_corrupt_asset_backup_description": "äģ…在čŋžæŽĨ到 Wi-Fi åšļåŽŒæˆæ‰€æœ‰éĄšį›Žå¤‡äģŊåŽæ‰§čĄŒæ­¤æŖ€æŸĨ。č¯Ĩčŋ‡į¨‹å¯čƒŊ需čĻå‡ åˆ†é’Ÿã€‚", "check_logs": "æŖ€æŸĨæ—Ĩåŋ—", + "checksum": "æ ĄéĒŒå’Œ", "choose_matching_people_to_merge": "é€‰æ‹ŠåŒšé…įš„äēēčŋ›čĄŒåˆåšļ", "city": "城市", "clear": "清įŠē", @@ -728,6 +742,7 @@ "collapse_all": "全部折叠", "color": "éĸœč‰˛", "color_theme": "éĸœč‰˛ä¸ģéĸ˜", + "command": "å‘Ŋäģ¤", "comment_deleted": "蝄čŽēåˇ˛åˆ é™¤", "comment_options": "蝄čŽē选项", "comments_and_likes": "蝄čŽē & į‚ščĩž", @@ -1092,6 +1107,7 @@ "external_network_sheet_info": "åŊ“æœĒčŋžæŽĨåˆ°æŒ‡åŽšįš„ Wi-Fi įŊ‘į윿—ļīŧŒåē”ᔍፋåēå°†é€ščŋ‡ä¸‹æ–šįŦŦ一ä¸Ē可čŋžé€šįš„ URL čŽŋé—ŽæœåŠĄå™¨", "face_unassigned": "æœĒ指洞", "failed": "å¤ąč´Ĩ", + "failed_count": "å¤ąč´Ĩ: {count}", "failed_to_authenticate": "čēĢäģŊéĒŒč¯å¤ąč´Ĩ", "failed_to_load_assets": "加čŊŊéĄšį›Žå¤ąč´Ĩ", "failed_to_load_folder": "加čŊŊ文äģļå¤šå¤ąč´Ĩ", @@ -1152,12 +1168,14 @@ "header_settings_header_name_input": "æ ‡å¤´åį§°", "header_settings_header_value_input": "标头å€ŧ", "headers_settings_tile_title": "č‡Ē厚䚉äģŖį†æ ‡å¤´", + "height": "é̘åēĻ", "hi_user": "您åĨŊīŧŒ{name}īŧˆ{email}īŧ‰", "hide_all_people": "éšč—æ‰€æœ‰äēēį‰Š", "hide_gallery": "éšč—į›¸å†Œ", "hide_named_person": "隐藏äēēį‰Šâ€œ{name}”", "hide_password": "éšč—å¯†į ", "hide_person": "隐藏äēēį‰Š", + "hide_text_recognition": "éšč—æ–‡æœŦ蝆åˆĢ", "hide_unnamed_people": "隐藏æœĒå‘Ŋåįš„äēēį‰Š", "home_page_add_to_album_conflicts": "åˇ˛å‘į›¸å†Œ {album} 中æˇģ加 {added} éĄšã€‚å…ļ中 {failed} éĄšåœ¨į›¸å†Œä¸­åˇ˛å­˜åœ¨ã€‚", "home_page_add_to_album_err_local": "暂不čƒŊ将æœŦåœ°éĄšį›ŽæˇģåŠ åˆ°į›¸å†Œä¸­īŧŒčˇŗčŋ‡", @@ -1273,6 +1291,7 @@ "local": "æœŦ地", "local_asset_cast_failed": "æ— æŗ•æŠ•æ”žæœĒ上äŧ č‡ŗæœåŠĄå™¨įš„éĄšį›Ž", "local_assets": "æœŦåœ°éĄšį›Ž", + "local_id": "æœŦ地 ID", "local_media_summary": "æœŦ地åĒ’äŊ“摘čρ", "local_network": "æœŦ地įŊ‘įģœ", "local_network_sheet_info": "åŊ“äŊŋį”¨æŒ‡åŽšįš„ Wi-Fi įŊ‘į윿—ļīŧŒåē”ᔍፋåēå°†é€ščŋ‡æ­¤ URL čŽŋé—ŽæœåŠĄå™¨", @@ -1511,6 +1530,7 @@ "other_variables": "å…ļ厃变量", "owned": "æˆ‘įš„", "owner": "æ‰€æœ‰č€…", + "page": "éĄĩéĸ", "partner": "同äŧ´", "partner_can_access": "{partner}可äģĨčŽŋ问", "partner_can_access_assets": "除åŊ’æĄŖå’Œåˆ é™¤äš‹å¤–įš„æ‰€æœ‰į…§į‰‡å’Œč§†éĸ‘", @@ -1967,6 +1987,7 @@ "show_slideshow_transition": "昞į¤ēåšģၝቇčŋ‡æ¸Ąæ•ˆæžœ", "show_supporter_badge": "æ”¯æŒč€…åžŊįĢ ", "show_supporter_badge_description": "åą•į¤ēæ”¯æŒč€…åžŊįĢ ", + "show_text_recognition": "昞į¤ē文æœŦ蝆åˆĢ", "show_text_search_menu": "昞į¤ē文æœŦ搜į´ĸčœå•", "shuffle": "随æœē", "sidebar": "äž§čžšæ ", @@ -2037,6 +2058,7 @@ "tags": "æ ‡į­ž", "tap_to_run_job": "į‚šå‡ģčŋčĄŒäģģåŠĄ", "template": "æ¨Ąį‰ˆ", + "text_recognition": "文æœŦ蝆åˆĢ", "theme": "ä¸ģéĸ˜", "theme_selection": "ä¸ģéĸ˜é€‰éĄš", "theme_selection_description": "跟随æĩč§ˆå™¨č‡ĒåŠ¨čŽžįŊŽä¸ģéĸ˜éĸœč‰˛", @@ -2069,6 +2091,7 @@ "to_select": "选拊", "to_trash": "攞å…Ĩ回æ”ļįĢ™", "toggle_settings": "切æĸ莞įŊŽ", + "toggle_theme_description": "切æĸä¸ģéĸ˜", "total": "æ€ģ莥", "total_usage": "æ€ģį”¨é‡", "trash": "回æ”ļįĢ™", @@ -2177,6 +2200,7 @@ "view_album": "æŸĨįœ‹į›¸å†Œ", "view_all": "æŸĨįœ‹å…¨éƒ¨", "view_all_users": "æŸĨįœ‹å…¨éƒ¨į”¨æˆˇ", + "view_asset_owners": "æŸĨįœ‹čĩ„äē§æ‰€æœ‰č€…", "view_details": "æŸĨįœ‹č¯Ļ情", "view_in_timeline": "在æ—ļ间čŊ´ä¸­æŸĨįœ‹", "view_link": "æŸĨįœ‹é“žæŽĨ", @@ -2193,12 +2217,14 @@ "viewer_unstack": "取æļˆå †å ", "visibility_changed": "{count, plural, one {#ä¸Ēäēēį‰Š} other {#ä¸Ēäēēį‰Š}}įš„å¯č§æ€§åˇ˛äŋŽæ”š", "waiting": "准备处ᐆ", + "waiting_count": "į­‰åž…: {count}", "warning": "č­Ļ告", "week": "周", "welcome": "æŦĸčŋŽ", "welcome_to_immich": "æŦĸčŋŽäŊŋᔍ Immich", + "width": "åŽŊåēĻ", "wifi_name": "Wi-Fi åį§°", - "workflow": "æĩį¨‹", + "workflow": "åˇĨäŊœæĩ", "wrong_pin_code": "é”™č¯¯įš„PIN᠁", "year": "åš´", "years_ago": "{years, plural, one {#åš´} other {#åš´}}前", diff --git a/machine-learning/Dockerfile b/machine-learning/Dockerfile index 6c976d4612..32b2bc6db0 100644 --- a/machine-learning/Dockerfile +++ b/machine-learning/Dockerfile @@ -1,8 +1,8 @@ ARG DEVICE=cpu -FROM python:3.11-bookworm@sha256:e39286476f84ffedf7c3564b0b74e32c9e1193ec9ca32ee8a11f8c09dbf6aafe AS builder-cpu +FROM python:3.11-bookworm@sha256:667cf70698924920f29ebdb8d749ab665811503b87093d4f11826d114fd7255e AS builder-cpu -FROM builder-cpu AS builder-openvino +FROM python:3.13-slim-trixie@sha256:0222b795db95bf7412cede36ab46a266cfb31f632e64051aac9806dabf840a61 AS builder-openvino FROM builder-cpu AS builder-cuda @@ -22,20 +22,18 @@ FROM builder-cpu AS builder-rknn # Warning: 25GiB+ disk space required to pull this image # TODO: find a way to reduce the image size -FROM rocm/dev-ubuntu-22.04:6.4.3-complete@sha256:6cda50e312f3aac068cea9ec06c560ca1f522ad546bc8b3d2cf06da0fe8e8a76 AS builder-rocm +FROM rocm/dev-ubuntu-24.04:6.4.4-complete@sha256:31418ac10a3769a71eaef330c07280d1d999d7074621339b8f93c484c35f6078 AS builder-rocm # renovate: datasource=github-releases depName=Microsoft/onnxruntime ARG ONNXRUNTIME_VERSION="v1.22.1" WORKDIR /code -RUN apt-get update && apt-get install -y --no-install-recommends wget git python3.10-venv -RUN wget -nv https://github.com/Kitware/CMake/releases/download/v3.30.1/cmake-3.30.1-linux-x86_64.sh && \ - chmod +x cmake-3.30.1-linux-x86_64.sh && \ - mkdir -p /code/cmake-3.30.1-linux-x86_64 && \ - ./cmake-3.30.1-linux-x86_64.sh --skip-license --prefix=/code/cmake-3.30.1-linux-x86_64 && \ - rm cmake-3.30.1-linux-x86_64.sh - -ENV PATH=/code/cmake-3.30.1-linux-x86_64/bin:${PATH} +RUN apt-get update && apt-get install -y --no-install-recommends wget git +RUN wget -nv https://github.com/Kitware/CMake/releases/download/v3.31.9/cmake-3.31.9-linux-x86_64.sh && \ + chmod +x cmake-3.31.9-linux-x86_64.sh && \ + mkdir -p /code/cmake-3.31.9-linux-x86_64 && \ + ./cmake-3.31.9-linux-x86_64.sh --skip-license --prefix=/code/cmake-3.31.9-linux-x86_64 && \ + rm cmake-3.31.9-linux-x86_64.sh RUN git clone --single-branch --branch "${ONNXRUNTIME_VERSION}" --recursive "https://github.com/Microsoft/onnxruntime" onnxruntime WORKDIR /code/onnxruntime @@ -45,9 +43,26 @@ COPY ./patches/* /tmp/ RUN git apply /tmp/*.patch RUN /bin/sh ./dockerfiles/scripts/install_common_deps.sh + +ENV PATH=/opt/rocm-venv/bin:/code/cmake-3.31.9-linux-x86_64/bin:${PATH} +ENV CCACHE_DIR="/ccache" # Note: the `parallel` setting uses a substantial amount of RAM -RUN ./build.sh --allow_running_as_root --config Release --build_wheel --update --build --parallel 17 --cmake_extra_defines\ - ONNXRUNTIME_VERSION="${ONNXRUNTIME_VERSION}" --skip_tests --use_rocm --rocm_home=/opt/rocm +RUN --mount=type=cache,target=/ccache \ + ./build.sh \ + --allow_running_as_root \ + --config Release \ + --build_wheel \ + --update \ + --build \ + --parallel 17 \ + --cmake_extra_defines \ + ONNXRUNTIME_VERSION="${ONNXRUNTIME_VERSION}" \ + CMAKE_HIP_ARCHITECTURES="gfx900;gfx906;gfx908;gfx90a;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101;gfx1102;gfx1200;gfx1201" \ + --skip_tests \ + --use_rocm \ + --rocm_home=/opt/rocm \ + --use_cache \ + --compile_no_warning_as_error RUN mv /code/onnxruntime/build/Linux/Release/dist/*.whl /opt/ FROM builder-${DEVICE} AS builder @@ -68,20 +83,23 @@ RUN if [ "$DEVICE" = "rocm" ]; then \ uv pip install /opt/onnxruntime_rocm-*.whl; \ fi -FROM python:3.11-slim-bookworm@sha256:2c5bc243b1cc47985ee4fb768bb0bbd4490481c5d0897a62da31b7f30b7304a7 AS prod-cpu +FROM python:3.11-slim-bookworm@sha256:917ec0e42cd6af87657a768449c2f604a6b67c7ab8e10ff917b8724799f816d3 AS prod-cpu ENV LD_PRELOAD=/usr/lib/libmimalloc.so.2 \ MACHINE_LEARNING_MODEL_ARENA=false -FROM python:3.11-slim-bookworm@sha256:2c5bc243b1cc47985ee4fb768bb0bbd4490481c5d0897a62da31b7f30b7304a7 AS prod-openvino +FROM python:3.13-slim-trixie@sha256:0222b795db95bf7412cede36ab46a266cfb31f632e64051aac9806dabf840a61 AS prod-openvino RUN apt-get update && \ apt-get install --no-install-recommends -yqq ocl-icd-libopencl1 wget && \ - wget -nv https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17384.11/intel-igc-core_1.0.17384.11_amd64.deb && \ - wget -nv https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17384.11/intel-igc-opencl_1.0.17384.11_amd64.deb && \ - wget -nv https://github.com/intel/compute-runtime/releases/download/24.31.30508.7/intel-opencl-icd_24.31.30508.7_amd64.deb && \ + wget -nv https://github.com/intel/intel-graphics-compiler/releases/download/v2.24.8/intel-igc-core-2_2.24.8+20344_amd64.deb && \ + wget -nv https://github.com/intel/intel-graphics-compiler/releases/download/v2.24.8/intel-igc-opencl-2_2.24.8+20344_amd64.deb && \ + wget -nv https://github.com/intel/compute-runtime/releases/download/25.48.36300.8/intel-opencl-icd_25.48.36300.8-0_amd64.deb && \ + wget -nv https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17537.24/intel-igc-core_1.0.17537.24_amd64.deb && \ + wget -nv https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17537.24/intel-igc-opencl_1.0.17537.24_amd64.deb && \ + wget -nv https://github.com/intel/compute-runtime/releases/download/24.35.30872.36/intel-opencl-icd-legacy1_24.35.30872.36_amd64.deb && \ # TODO: Figure out how to get renovate to manage this differently versioned libigdgmm file - wget -nv https://github.com/intel/compute-runtime/releases/download/24.31.30508.7/libigdgmm12_22.4.1_amd64.deb && \ + wget -nv https://github.com/intel/compute-runtime/releases/download/25.48.36300.8/libigdgmm12_22.8.2_amd64.deb && \ dpkg -i *.deb && \ rm *.deb && \ apt-get remove wget -yqq && \ @@ -102,7 +120,7 @@ COPY --from=builder-cuda /usr/local/bin/python3 /usr/local/bin/python3 COPY --from=builder-cuda /usr/local/lib/python3.11 /usr/local/lib/python3.11 COPY --from=builder-cuda /usr/local/lib/libpython3.11.so /usr/local/lib/libpython3.11.so -FROM rocm/dev-ubuntu-22.04:6.4.3-complete@sha256:6cda50e312f3aac068cea9ec06c560ca1f522ad546bc8b3d2cf06da0fe8e8a76 AS prod-rocm +FROM rocm/dev-ubuntu-24.04:6.4.4-complete@sha256:31418ac10a3769a71eaef330c07280d1d999d7074621339b8f93c484c35f6078 AS prod-rocm FROM prod-cpu AS prod-armnn diff --git a/machine-learning/immich_ml/main.py b/machine-learning/immich_ml/main.py index 3d34d9bf9d..e7e3a719bb 100644 --- a/machine-learning/immich_ml/main.py +++ b/machine-learning/immich_ml/main.py @@ -36,7 +36,7 @@ from .schemas import ( T, ) -MultiPartParser.max_file_size = 2**26 # spools to disk if payload is 64 MiB or larger +MultiPartParser.spool_max_size = 2**26 # spools to disk if payload is 64 MiB or larger model_cache = ModelCache(revalidate=settings.model_ttl > 0) thread_pool: ThreadPoolExecutor | None = None diff --git a/machine-learning/patches/0002-install-system-deps.patch b/machine-learning/patches/0002-install-system-deps.patch new file mode 100644 index 0000000000..6e76b1e243 --- /dev/null +++ b/machine-learning/patches/0002-install-system-deps.patch @@ -0,0 +1,33 @@ +diff --git a/dockerfiles/scripts/install_common_deps.sh b/dockerfiles/scripts/install_common_deps.sh +index bbb672a99e..0dc652fbda 100644 +--- a/dockerfiles/scripts/install_common_deps.sh ++++ b/dockerfiles/scripts/install_common_deps.sh +@@ -8,16 +8,23 @@ apt-get update && apt-get install -y --no-install-recommends \ + curl \ + libcurl4-openssl-dev \ + libssl-dev \ +- python3-dev ++ python3-dev \ ++ ccache + + # Dependencies: conda +-wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-4.5.11-Linux-x86_64.sh -O ~/miniconda.sh --no-check-certificate && /bin/bash ~/miniconda.sh -b -p /opt/miniconda ++wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-py312_25.9.1-1-Linux-x86_64.sh -O ~/miniconda.sh && /bin/bash ~/miniconda.sh -b -p /opt/miniconda + rm ~/miniconda.sh + /opt/miniconda/bin/conda clean -ya + +-pip install numpy +-pip install packaging +-pip install "wheel>=0.35.1" ++# Dependencies: venv and packages ++/opt/miniconda/bin/python3 -m venv /opt/rocm-venv ++/opt/rocm-venv/bin/pip install --no-cache-dir --upgrade pip ++/opt/rocm-venv/bin/pip install --no-cache-dir \ ++ "numpy==2.3.4" \ ++ "packaging==25.0" \ ++ "wheel==0.45.1" \ ++ "setuptools==80.9.0" ++ + rm -rf /opt/miniconda/pkgs + + # Dependencies: cmake diff --git a/machine-learning/patches/0002-target-gfx900-gfx1102.patch b/machine-learning/patches/0002-target-gfx900-gfx1102.patch deleted file mode 100644 index 11c1ab0367..0000000000 --- a/machine-learning/patches/0002-target-gfx900-gfx1102.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt -index 2714e6f59..a69da76b4 100644 ---- a/cmake/CMakeLists.txt -+++ b/cmake/CMakeLists.txt -@@ -338,7 +338,7 @@ if (onnxruntime_USE_ROCM) - if (ROCM_VERSION_DEV VERSION_LESS "6.2") - message(FATAL_ERROR "CMAKE_HIP_ARCHITECTURES is not set when ROCm version < 6.2") - else() -- set(CMAKE_HIP_ARCHITECTURES "gfx908;gfx90a;gfx1030;gfx1100;gfx1101;gfx940;gfx941;gfx942;gfx1200;gfx1201") -+ set(CMAKE_HIP_ARCHITECTURES "gfx900;gfx908;gfx90a;gfx1030;gfx1100;gfx1101;gfx1102;gfx940;gfx941;gfx942;gfx1200;gfx1201") - endif() - endif() - diff --git a/machine-learning/pyproject.toml b/machine-learning/pyproject.toml index 436dbb7db1..04a10aa09b 100644 --- a/machine-learning/pyproject.toml +++ b/machine-learning/pyproject.toml @@ -1,9 +1,9 @@ [project] name = "immich-ml" -version = "2.3.1" +version = "2.4.1" description = "" authors = [{ name = "Hau Tran", email = "alex.tran1502@gmail.com" }] -requires-python = ">=3.10,<4.0" +requires-python = ">=3.11,<4.0" readme = "README.md" dependencies = [ "aiocache>=0.12.1,<1.0", @@ -12,7 +12,7 @@ dependencies = [ "gunicorn>=21.1.0", "huggingface-hub>=0.20.1,<1.0", "insightface>=0.7.3,<1.0", - "numpy<2", + "numpy>=2.3.4", "opencv-python-headless>=4.7.0.72,<5.0", "orjson>=3.9.5", "pillow>=9.5.0,<11.0", @@ -49,24 +49,16 @@ lint = [ dev = ["locust>=2.15.1", { include-group = "test" }, { include-group = "lint" }] [project.optional-dependencies] -cpu = ["onnxruntime>=1.15.0,<2"] -cuda = ["onnxruntime-gpu>=1.17.0,<2"] -openvino = ["onnxruntime-openvino>=1.17.1,<1.19.0"] -armnn = ["onnxruntime>=1.15.0,<2"] -rknn = ["onnxruntime>=1.15.0,<2", "rknn-toolkit-lite2>=2.3.0,<3"] +cpu = ["onnxruntime>=1.23.2,<2"] +cuda = ["onnxruntime-gpu>=1.23.2,<2"] +openvino = ["onnxruntime-openvino>=1.23.0,<2"] +armnn = ["onnxruntime>=1.23.2,<2"] +rknn = ["onnxruntime>=1.23.2,<2", "rknn-toolkit-lite2>=2.3.0,<3"] rocm = [] [tool.uv] compile-bytecode = true -[[tool.uv.index]] -name = "cuda12" -url = "https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/" -explicit = true - -[tool.uv.sources] -onnxruntime-gpu = { index = "cuda12" } - [tool.hatch.build.targets.sdist] include = ["immich_ml"] diff --git a/machine-learning/uv.lock b/machine-learning/uv.lock index 356e954ef4..e040dcb5f7 100644 --- a/machine-learning/uv.lock +++ b/machine-learning/uv.lock @@ -1,22 +1,16 @@ version = 1 revision = 3 -requires-python = ">=3.10, <4.0" +requires-python = ">=3.11, <4.0" resolution-markers = [ - "python_full_version >= '3.14' and sys_platform == 'darwin'", - "python_full_version == '3.13.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and sys_platform == 'darwin'", - "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.14' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.14' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.13.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version < '3.11' and sys_platform == 'darwin'", - "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.12' and sys_platform == 'darwin'", + "python_full_version < '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", ] [[package]] @@ -38,8 +32,7 @@ dependencies = [ { name = "pyyaml" }, { name = "qudida" }, { name = "scikit-image" }, - { name = "scipy", version = "1.11.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "scipy", version = "1.16.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "scipy" }, ] sdist = { url = "https://files.pythonhosted.org/packages/14/d6/8dd5b690d28a332a0b2c3179a345808b5d4c7ad5ddc079b7e116098dff35/albumentations-1.3.1.tar.gz", hash = "sha256:a6a38388fe546c568071e8c82f414498e86c9ed03c08b58e7a88b31cf7a244c6", size = 176371, upload-time = "2023-06-10T07:44:32.36Z" } wheels = [ @@ -75,25 +68,14 @@ name = "anyio" version = "4.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "idna" }, { name = "sniffio" }, - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/2d/b8/7333d87d5f03247215d86a86362fd3e324111788c6cdd8d2e6196a6ba833/anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f", size = 158770, upload-time = "2023-12-16T17:06:57.709Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/bf/cd/d6d9bb1dadf73e7af02d18225cbd2c93f8552e13130484f1c8dcfece292b/anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee", size = 85481, upload-time = "2023-12-16T17:06:55.989Z" }, ] -[[package]] -name = "backports-asyncio-runner" -version = "1.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8e/ff/70dca7d7cb1cbc0edb2c6cc0c38b65cba36cccc491eca64cabd5fe7f8670/backports_asyncio_runner-1.2.0.tar.gz", hash = "sha256:a5aa7b2b7d8f8bfcaa2b57313f70792df84e32a2a746f585213373f900b42162", size = 69893, upload-time = "2025-07-02T02:27:15.685Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/59/76ab57e3fe74484f48a53f8e337171b4a2349e506eabe136d7e01d059086/backports_asyncio_runner-1.2.0-py3-none-any.whl", hash = "sha256:0da0a936a8aeb554eccb426dc55af3ba63bcdc69fa1a600b5bb305413a4477b5", size = 12313, upload-time = "2025-07-02T02:27:14.263Z" }, -] - [[package]] name = "bidict" version = "0.23.1" @@ -105,7 +87,7 @@ wheels = [ [[package]] name = "black" -version = "25.11.0" +version = "25.12.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, @@ -114,32 +96,30 @@ dependencies = [ { name = "pathspec" }, { name = "platformdirs" }, { name = "pytokens" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8c/ad/33adf4708633d047950ff2dfdea2e215d84ac50ef95aff14a614e4b6e9b2/black-25.11.0.tar.gz", hash = "sha256:9a323ac32f5dc75ce7470501b887250be5005a01602e931a15e45593f70f6e08", size = 655669, upload-time = "2025-11-10T01:53:50.558Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c4/d9/07b458a3f1c525ac392b5edc6b191ff140b596f9d77092429417a54e249d/black-25.12.0.tar.gz", hash = "sha256:8d3dd9cea14bff7ddc0eb243c811cdb1a011ebb4800a5f0335a01a68654796a7", size = 659264, upload-time = "2025-12-08T01:40:52.501Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/d2/6caccbc96f9311e8ec3378c296d4f4809429c43a6cd2394e3c390e86816d/black-25.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ec311e22458eec32a807f029b2646f661e6859c3f61bc6d9ffb67958779f392e", size = 1743501, upload-time = "2025-11-10T01:59:06.202Z" }, - { url = "https://files.pythonhosted.org/packages/69/35/b986d57828b3f3dccbf922e2864223197ba32e74c5004264b1c62bc9f04d/black-25.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1032639c90208c15711334d681de2e24821af0575573db2810b0763bcd62e0f0", size = 1597308, upload-time = "2025-11-10T01:57:58.633Z" }, - { url = "https://files.pythonhosted.org/packages/39/8e/8b58ef4b37073f52b64a7b2dd8c9a96c84f45d6f47d878d0aa557e9a2d35/black-25.11.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0c0f7c461df55cf32929b002335883946a4893d759f2df343389c4396f3b6b37", size = 1656194, upload-time = "2025-11-10T01:57:10.909Z" }, - { url = "https://files.pythonhosted.org/packages/8d/30/9c2267a7955ecc545306534ab88923769a979ac20a27cf618d370091e5dd/black-25.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:f9786c24d8e9bd5f20dc7a7f0cdd742644656987f6ea6947629306f937726c03", size = 1347996, upload-time = "2025-11-10T01:57:22.391Z" }, - { url = "https://files.pythonhosted.org/packages/c4/62/d304786b75ab0c530b833a89ce7d997924579fb7484ecd9266394903e394/black-25.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:895571922a35434a9d8ca67ef926da6bc9ad464522a5fe0db99b394ef1c0675a", size = 1727891, upload-time = "2025-11-10T02:01:40.507Z" }, - { url = "https://files.pythonhosted.org/packages/82/5d/ffe8a006aa522c9e3f430e7b93568a7b2163f4b3f16e8feb6d8c3552761a/black-25.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cb4f4b65d717062191bdec8e4a442539a8ea065e6af1c4f4d36f0cdb5f71e170", size = 1581875, upload-time = "2025-11-10T01:57:51.192Z" }, - { url = "https://files.pythonhosted.org/packages/cb/c8/7c8bda3108d0bb57387ac41b4abb5c08782b26da9f9c4421ef6694dac01a/black-25.11.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d81a44cbc7e4f73a9d6ae449ec2317ad81512d1e7dce7d57f6333fd6259737bc", size = 1642716, upload-time = "2025-11-10T01:56:51.589Z" }, - { url = "https://files.pythonhosted.org/packages/34/b9/f17dea34eecb7cc2609a89627d480fb6caea7b86190708eaa7eb15ed25e7/black-25.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:7eebd4744dfe92ef1ee349dc532defbf012a88b087bb7ddd688ff59a447b080e", size = 1352904, upload-time = "2025-11-10T01:59:26.252Z" }, - { url = "https://files.pythonhosted.org/packages/7f/12/5c35e600b515f35ffd737da7febdb2ab66bb8c24d88560d5e3ef3d28c3fd/black-25.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:80e7486ad3535636657aa180ad32a7d67d7c273a80e12f1b4bfa0823d54e8fac", size = 1772831, upload-time = "2025-11-10T02:03:47Z" }, - { url = "https://files.pythonhosted.org/packages/1a/75/b3896bec5a2bb9ed2f989a970ea40e7062f8936f95425879bbe162746fe5/black-25.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6cced12b747c4c76bc09b4db057c319d8545307266f41aaee665540bc0e04e96", size = 1608520, upload-time = "2025-11-10T01:58:46.895Z" }, - { url = "https://files.pythonhosted.org/packages/f3/b5/2bfc18330eddbcfb5aab8d2d720663cd410f51b2ed01375f5be3751595b0/black-25.11.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6cb2d54a39e0ef021d6c5eef442e10fd71fcb491be6413d083a320ee768329dd", size = 1682719, upload-time = "2025-11-10T01:56:55.24Z" }, - { url = "https://files.pythonhosted.org/packages/96/fb/f7dc2793a22cdf74a72114b5ed77fe3349a2e09ef34565857a2f917abdf2/black-25.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:ae263af2f496940438e5be1a0c1020e13b09154f3af4df0835ea7f9fe7bfa409", size = 1362684, upload-time = "2025-11-10T01:57:07.639Z" }, - { url = "https://files.pythonhosted.org/packages/ad/47/3378d6a2ddefe18553d1115e36aea98f4a90de53b6a3017ed861ba1bd3bc/black-25.11.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0a1d40348b6621cc20d3d7530a5b8d67e9714906dfd7346338249ad9c6cedf2b", size = 1772446, upload-time = "2025-11-10T02:02:16.181Z" }, - { url = "https://files.pythonhosted.org/packages/ba/4b/0f00bfb3d1f7e05e25bfc7c363f54dc523bb6ba502f98f4ad3acf01ab2e4/black-25.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:51c65d7d60bb25429ea2bf0731c32b2a2442eb4bd3b2afcb47830f0b13e58bfd", size = 1607983, upload-time = "2025-11-10T02:02:52.502Z" }, - { url = "https://files.pythonhosted.org/packages/99/fe/49b0768f8c9ae57eb74cc10a1f87b4c70453551d8ad498959721cc345cb7/black-25.11.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:936c4dd07669269f40b497440159a221ee435e3fddcf668e0c05244a9be71993", size = 1682481, upload-time = "2025-11-10T01:57:12.35Z" }, - { url = "https://files.pythonhosted.org/packages/55/17/7e10ff1267bfa950cc16f0a411d457cdff79678fbb77a6c73b73a5317904/black-25.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:f42c0ea7f59994490f4dccd64e6b2dd49ac57c7c84f38b8faab50f8759db245c", size = 1363869, upload-time = "2025-11-10T01:58:24.608Z" }, - { url = "https://files.pythonhosted.org/packages/67/c0/cc865ce594d09e4cd4dfca5e11994ebb51604328489f3ca3ae7bb38a7db5/black-25.11.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:35690a383f22dd3e468c85dc4b915217f87667ad9cce781d7b42678ce63c4170", size = 1771358, upload-time = "2025-11-10T02:03:33.331Z" }, - { url = "https://files.pythonhosted.org/packages/37/77/4297114d9e2fd2fc8ab0ab87192643cd49409eb059e2940391e7d2340e57/black-25.11.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:dae49ef7369c6caa1a1833fd5efb7c3024bb7e4499bf64833f65ad27791b1545", size = 1612902, upload-time = "2025-11-10T01:59:33.382Z" }, - { url = "https://files.pythonhosted.org/packages/de/63/d45ef97ada84111e330b2b2d45e1dd163e90bd116f00ac55927fb6bf8adb/black-25.11.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bd4a22a0b37401c8e492e994bce79e614f91b14d9ea911f44f36e262195fdda", size = 1680571, upload-time = "2025-11-10T01:57:04.239Z" }, - { url = "https://files.pythonhosted.org/packages/ff/4b/5604710d61cdff613584028b4cb4607e56e148801ed9b38ee7970799dab6/black-25.11.0-cp314-cp314-win_amd64.whl", hash = "sha256:aa211411e94fdf86519996b7f5f05e71ba34835d8f0c0f03c00a26271da02664", size = 1382599, upload-time = "2025-11-10T01:57:57.427Z" }, - { url = "https://files.pythonhosted.org/packages/00/5d/aed32636ed30a6e7f9efd6ad14e2a0b0d687ae7c8c7ec4e4a557174b895c/black-25.11.0-py3-none-any.whl", hash = "sha256:e3f562da087791e96cefcd9dda058380a442ab322a02e222add53736451f604b", size = 204918, upload-time = "2025-11-10T01:53:48.917Z" }, + { url = "https://files.pythonhosted.org/packages/60/ad/7ac0d0e1e0612788dbc48e62aef8a8e8feffac7eb3d787db4e43b8462fa8/black-25.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d0cfa263e85caea2cff57d8f917f9f51adae8e20b610e2b23de35b5b11ce691a", size = 1877003, upload-time = "2025-12-08T01:43:29.967Z" }, + { url = "https://files.pythonhosted.org/packages/e8/dd/a237e9f565f3617a88b49284b59cbca2a4f56ebe68676c1aad0ce36a54a7/black-25.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1a2f578ae20c19c50a382286ba78bfbeafdf788579b053d8e4980afb079ab9be", size = 1712639, upload-time = "2025-12-08T01:52:46.756Z" }, + { url = "https://files.pythonhosted.org/packages/12/80/e187079df1ea4c12a0c63282ddd8b81d5107db6d642f7d7b75a6bcd6fc21/black-25.12.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d3e1b65634b0e471d07ff86ec338819e2ef860689859ef4501ab7ac290431f9b", size = 1758143, upload-time = "2025-12-08T01:45:29.137Z" }, + { url = "https://files.pythonhosted.org/packages/93/b5/3096ccee4f29dc2c3aac57274326c4d2d929a77e629f695f544e159bfae4/black-25.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:a3fa71e3b8dd9f7c6ac4d818345237dfb4175ed3bf37cd5a581dbc4c034f1ec5", size = 1420698, upload-time = "2025-12-08T01:45:53.379Z" }, + { url = "https://files.pythonhosted.org/packages/7e/39/f81c0ffbc25ffbe61c7d0385bf277e62ffc3e52f5ee668d7369d9854fadf/black-25.12.0-cp311-cp311-win_arm64.whl", hash = "sha256:51e267458f7e650afed8445dc7edb3187143003d52a1b710c7321aef22aa9655", size = 1229317, upload-time = "2025-12-08T01:46:35.606Z" }, + { url = "https://files.pythonhosted.org/packages/d1/bd/26083f805115db17fda9877b3c7321d08c647df39d0df4c4ca8f8450593e/black-25.12.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:31f96b7c98c1ddaeb07dc0f56c652e25bdedaac76d5b68a059d998b57c55594a", size = 1924178, upload-time = "2025-12-08T01:49:51.048Z" }, + { url = "https://files.pythonhosted.org/packages/89/6b/ea00d6651561e2bdd9231c4177f4f2ae19cc13a0b0574f47602a7519b6ca/black-25.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:05dd459a19e218078a1f98178c13f861fe6a9a5f88fc969ca4d9b49eb1809783", size = 1742643, upload-time = "2025-12-08T01:49:59.09Z" }, + { url = "https://files.pythonhosted.org/packages/6d/f3/360fa4182e36e9875fabcf3a9717db9d27a8d11870f21cff97725c54f35b/black-25.12.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c1f68c5eff61f226934be6b5b80296cf6939e5d2f0c2f7d543ea08b204bfaf59", size = 1800158, upload-time = "2025-12-08T01:44:27.301Z" }, + { url = "https://files.pythonhosted.org/packages/f8/08/2c64830cb6616278067e040acca21d4f79727b23077633953081c9445d61/black-25.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:274f940c147ddab4442d316b27f9e332ca586d39c85ecf59ebdea82cc9ee8892", size = 1426197, upload-time = "2025-12-08T01:45:51.198Z" }, + { url = "https://files.pythonhosted.org/packages/d4/60/a93f55fd9b9816b7432cf6842f0e3000fdd5b7869492a04b9011a133ee37/black-25.12.0-cp312-cp312-win_arm64.whl", hash = "sha256:169506ba91ef21e2e0591563deda7f00030cb466e747c4b09cb0a9dae5db2f43", size = 1237266, upload-time = "2025-12-08T01:45:10.556Z" }, + { url = "https://files.pythonhosted.org/packages/c8/52/c551e36bc95495d2aa1a37d50566267aa47608c81a53f91daa809e03293f/black-25.12.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a05ddeb656534c3e27a05a29196c962877c83fa5503db89e68857d1161ad08a5", size = 1923809, upload-time = "2025-12-08T01:46:55.126Z" }, + { url = "https://files.pythonhosted.org/packages/a0/f7/aac9b014140ee56d247e707af8db0aae2e9efc28d4a8aba92d0abd7ae9d1/black-25.12.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9ec77439ef3e34896995503865a85732c94396edcc739f302c5673a2315e1e7f", size = 1742384, upload-time = "2025-12-08T01:49:37.022Z" }, + { url = "https://files.pythonhosted.org/packages/74/98/38aaa018b2ab06a863974c12b14a6266badc192b20603a81b738c47e902e/black-25.12.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e509c858adf63aa61d908061b52e580c40eae0dfa72415fa47ac01b12e29baf", size = 1798761, upload-time = "2025-12-08T01:46:05.386Z" }, + { url = "https://files.pythonhosted.org/packages/16/3a/a8ac542125f61574a3f015b521ca83b47321ed19bb63fe6d7560f348bfe1/black-25.12.0-cp313-cp313-win_amd64.whl", hash = "sha256:252678f07f5bac4ff0d0e9b261fbb029fa530cfa206d0a636a34ab445ef8ca9d", size = 1429180, upload-time = "2025-12-08T01:45:34.903Z" }, + { url = "https://files.pythonhosted.org/packages/e6/2d/bdc466a3db9145e946762d52cd55b1385509d9f9004fec1c97bdc8debbfb/black-25.12.0-cp313-cp313-win_arm64.whl", hash = "sha256:bc5b1c09fe3c931ddd20ee548511c64ebf964ada7e6f0763d443947fd1c603ce", size = 1239350, upload-time = "2025-12-08T01:46:09.458Z" }, + { url = "https://files.pythonhosted.org/packages/35/46/1d8f2542210c502e2ae1060b2e09e47af6a5e5963cb78e22ec1a11170b28/black-25.12.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:0a0953b134f9335c2434864a643c842c44fba562155c738a2a37a4d61f00cad5", size = 1917015, upload-time = "2025-12-08T01:53:27.987Z" }, + { url = "https://files.pythonhosted.org/packages/41/37/68accadf977672beb8e2c64e080f568c74159c1aaa6414b4cd2aef2d7906/black-25.12.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2355bbb6c3b76062870942d8cc450d4f8ac71f9c93c40122762c8784df49543f", size = 1741830, upload-time = "2025-12-08T01:54:36.861Z" }, + { url = "https://files.pythonhosted.org/packages/ac/76/03608a9d8f0faad47a3af3a3c8c53af3367f6c0dd2d23a84710456c7ac56/black-25.12.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9678bd991cc793e81d19aeeae57966ee02909877cb65838ccffef24c3ebac08f", size = 1791450, upload-time = "2025-12-08T01:44:52.581Z" }, + { url = "https://files.pythonhosted.org/packages/06/99/b2a4bd7dfaea7964974f947e1c76d6886d65fe5d24f687df2d85406b2609/black-25.12.0-cp314-cp314-win_amd64.whl", hash = "sha256:97596189949a8aad13ad12fcbb4ae89330039b96ad6742e6f6b45e75ad5cfd83", size = 1452042, upload-time = "2025-12-08T01:46:13.188Z" }, + { url = "https://files.pythonhosted.org/packages/b2/7c/d9825de75ae5dd7795d007681b752275ea85a1c5d83269b4b9c754c2aaab/black-25.12.0-cp314-cp314-win_arm64.whl", hash = "sha256:778285d9ea197f34704e3791ea9404cd6d07595745907dd2ce3da7a13627b29b", size = 1267446, upload-time = "2025-12-08T01:46:14.497Z" }, + { url = "https://files.pythonhosted.org/packages/68/11/21331aed19145a952ad28fca2756a1433ee9308079bd03bd898e903a2e53/black-25.12.0-py3-none-any.whl", hash = "sha256:48ceb36c16dbc84062740049eef990bb2ce07598272e673c17d1a7720c71c828", size = 206191, upload-time = "2025-12-08T01:40:50.963Z" }, ] [[package]] @@ -157,22 +137,6 @@ version = "1.1.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/2f/c2/f9e977608bdf958650638c3f1e28f85a1b075f075ebbe77db8555463787b/Brotli-1.1.0.tar.gz", hash = "sha256:81de08ac11bcb85841e440c13611c00b67d3bf82698314928d0b676362546724", size = 7372270, upload-time = "2023-09-07T14:05:41.643Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/3a/dbf4fb970c1019a57b5e492e1e0eae745d32e59ba4d6161ab5422b08eefe/Brotli-1.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e1140c64812cb9b06c922e77f1c26a75ec5e3f0fb2bf92cc8c58720dec276752", size = 873045, upload-time = "2023-09-07T14:03:16.894Z" }, - { url = "https://files.pythonhosted.org/packages/dd/11/afc14026ea7f44bd6eb9316d800d439d092c8d508752055ce8d03086079a/Brotli-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8fd5270e906eef71d4a8d19b7c6a43760c6abcfcc10c9101d14eb2357418de9", size = 446218, upload-time = "2023-09-07T14:03:18.917Z" }, - { url = "https://files.pythonhosted.org/packages/36/83/7545a6e7729db43cb36c4287ae388d6885c85a86dd251768a47015dfde32/Brotli-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ae56aca0402a0f9a3431cddda62ad71666ca9d4dc3a10a142b9dce2e3c0cda3", size = 2903872, upload-time = "2023-09-07T14:03:20.398Z" }, - { url = "https://files.pythonhosted.org/packages/32/23/35331c4d9391fcc0f29fd9bec2c76e4b4eeab769afbc4b11dd2e1098fb13/Brotli-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:43ce1b9935bfa1ede40028054d7f48b5469cd02733a365eec8a329ffd342915d", size = 2941254, upload-time = "2023-09-07T14:03:21.914Z" }, - { url = "https://files.pythonhosted.org/packages/3b/24/1671acb450c902edb64bd765d73603797c6c7280a9ada85a195f6b78c6e5/Brotli-1.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7c4855522edb2e6ae7fdb58e07c3ba9111e7621a8956f481c68d5d979c93032e", size = 2857293, upload-time = "2023-09-07T14:03:24Z" }, - { url = "https://files.pythonhosted.org/packages/d5/00/40f760cc27007912b327fe15bf6bfd8eaecbe451687f72a8abc587d503b3/Brotli-1.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:38025d9f30cf4634f8309c6874ef871b841eb3c347e90b0851f63d1ded5212da", size = 3002385, upload-time = "2023-09-07T14:03:26.248Z" }, - { url = "https://files.pythonhosted.org/packages/b8/cb/8aaa83f7a4caa131757668c0fb0c4b6384b09ffa77f2fba9570d87ab587d/Brotli-1.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e6a904cb26bfefc2f0a6f240bdf5233be78cd2488900a2f846f3c3ac8489ab80", size = 2911104, upload-time = "2023-09-07T14:03:27.849Z" }, - { url = "https://files.pythonhosted.org/packages/bc/c4/65456561d89d3c49f46b7fbeb8fe6e449f13bdc8ea7791832c5d476b2faf/Brotli-1.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a37b8f0391212d29b3a91a799c8e4a2855e0576911cdfb2515487e30e322253d", size = 2809981, upload-time = "2023-09-07T14:03:29.92Z" }, - { url = "https://files.pythonhosted.org/packages/05/1b/cf49528437bae28abce5f6e059f0d0be6fecdcc1d3e33e7c54b3ca498425/Brotli-1.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e84799f09591700a4154154cab9787452925578841a94321d5ee8fb9a9a328f0", size = 2935297, upload-time = "2023-09-07T14:03:32.035Z" }, - { url = "https://files.pythonhosted.org/packages/81/ff/190d4af610680bf0c5a09eb5d1eac6e99c7c8e216440f9c7cfd42b7adab5/Brotli-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f66b5337fa213f1da0d9000bc8dc0cb5b896b726eefd9c6046f699b169c41b9e", size = 2930735, upload-time = "2023-09-07T14:03:33.801Z" }, - { url = "https://files.pythonhosted.org/packages/80/7d/f1abbc0c98f6e09abd3cad63ec34af17abc4c44f308a7a539010f79aae7a/Brotli-1.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5dab0844f2cf82be357a0eb11a9087f70c5430b2c241493fc122bb6f2bb0917c", size = 2933107, upload-time = "2024-10-18T12:32:09.016Z" }, - { url = "https://files.pythonhosted.org/packages/34/ce/5a5020ba48f2b5a4ad1c0522d095ad5847a0be508e7d7569c8630ce25062/Brotli-1.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e4fe605b917c70283db7dfe5ada75e04561479075761a0b3866c081d035b01c1", size = 2845400, upload-time = "2024-10-18T12:32:11.134Z" }, - { url = "https://files.pythonhosted.org/packages/44/89/fa2c4355ab1eecf3994e5a0a7f5492c6ff81dfcb5f9ba7859bd534bb5c1a/Brotli-1.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:1e9a65b5736232e7a7f91ff3d02277f11d339bf34099a56cdab6a8b3410a02b2", size = 3031985, upload-time = "2024-10-18T12:32:12.813Z" }, - { url = "https://files.pythonhosted.org/packages/af/a4/79196b4a1674143d19dca400866b1a4d1a089040df7b93b88ebae81f3447/Brotli-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:58d4b711689366d4a03ac7957ab8c28890415e267f9b6589969e74b6e42225ec", size = 2927099, upload-time = "2024-10-18T12:32:14.733Z" }, - { url = "https://files.pythonhosted.org/packages/e9/54/1c0278556a097f9651e657b873ab08f01b9a9ae4cac128ceb66427d7cd20/Brotli-1.1.0-cp310-cp310-win32.whl", hash = "sha256:be36e3d172dc816333f33520154d708a2657ea63762ec16b62ece02ab5e4daf2", size = 333172, upload-time = "2023-09-07T14:03:35.212Z" }, - { url = "https://files.pythonhosted.org/packages/f7/65/b785722e941193fd8b571afd9edbec2a9b838ddec4375d8af33a50b8dab9/Brotli-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:0c6244521dda65ea562d5a69b9a26120769b7a9fb3db2fe9545935ed6735b128", size = 357255, upload-time = "2023-09-07T14:03:36.447Z" }, { url = "https://files.pythonhosted.org/packages/96/12/ad41e7fadd5db55459c4c401842b47f7fee51068f86dd2894dd0dcfc2d2a/Brotli-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a3daabb76a78f829cafc365531c972016e4aa8d5b4bf60660ad8ecee19df7ccc", size = 873068, upload-time = "2023-09-07T14:03:37.779Z" }, { url = "https://files.pythonhosted.org/packages/95/4e/5afab7b2b4b61a84e9c75b17814198ce515343a44e2ed4488fac314cd0a9/Brotli-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c8146669223164fc87a7e3de9f81e9423c67a79d6b3447994dfb9c95da16e2d6", size = 446244, upload-time = "2023-09-07T14:03:39.223Z" }, { url = "https://files.pythonhosted.org/packages/9d/e6/f305eb61fb9a8580c525478a4a34c5ae1a9bcb12c3aee619114940bc513d/Brotli-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30924eb4c57903d5a7526b08ef4a584acc22ab1ffa085faceb521521d2de32dd", size = 2906500, upload-time = "2023-09-07T14:03:40.858Z" }, @@ -223,11 +187,11 @@ wheels = [ [[package]] name = "certifi" -version = "2023.11.17" +version = "2025.11.12" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d4/91/c89518dd4fe1f3a4e3f6ab7ff23cb00ef2e8c9adf99dacc618ad5e068e28/certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1", size = 163637, upload-time = "2023-11-18T02:54:02.397Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/8c/58f469717fa48465e4a50c014a0400602d3c437d7c0c468e17ada824da3a/certifi-2025.11.12.tar.gz", hash = "sha256:d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316", size = 160538, upload-time = "2025-11-12T02:54:51.517Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/64/62/428ef076be88fa93716b576e4a01f919d25968913e817077a386fcbe4f42/certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474", size = 162530, upload-time = "2023-11-18T02:54:00.083Z" }, + { url = "https://files.pythonhosted.org/packages/70/7d/9bc192684cea499815ff478dfcdc13835ddf401365057044fb721ec6bddb/certifi-2025.11.12-py3-none-any.whl", hash = "sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b", size = 159438, upload-time = "2025-11-12T02:54:49.735Z" }, ] [[package]] @@ -239,18 +203,6 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191, upload-time = "2024-09-04T20:43:30.027Z" }, - { url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592, upload-time = "2024-09-04T20:43:32.108Z" }, - { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024, upload-time = "2024-09-04T20:43:34.186Z" }, - { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188, upload-time = "2024-09-04T20:43:36.286Z" }, - { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571, upload-time = "2024-09-04T20:43:38.586Z" }, - { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687, upload-time = "2024-09-04T20:43:40.084Z" }, - { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211, upload-time = "2024-09-04T20:43:41.526Z" }, - { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325, upload-time = "2024-09-04T20:43:43.117Z" }, - { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784, upload-time = "2024-09-04T20:43:45.256Z" }, - { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564, upload-time = "2024-09-04T20:43:46.779Z" }, - { url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804, upload-time = "2024-09-04T20:43:48.186Z" }, - { url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299, upload-time = "2024-09-04T20:43:49.812Z" }, { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264, upload-time = "2024-09-04T20:43:51.124Z" }, { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651, upload-time = "2024-09-04T20:43:52.872Z" }, { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259, upload-time = "2024-09-04T20:43:56.123Z" }, @@ -293,21 +245,6 @@ version = "3.3.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/63/09/c1bc53dab74b1816a00d8d030de5bf98f724c52c1635e07681d312f20be8/charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5", size = 104809, upload-time = "2023-11-01T04:04:59.997Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2b/61/095a0aa1a84d1481998b534177c8566fdc50bb1233ea9a0478cd3cc075bd/charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3", size = 194219, upload-time = "2023-11-01T04:02:29.048Z" }, - { url = "https://files.pythonhosted.org/packages/cc/94/f7cf5e5134175de79ad2059edf2adce18e0685ebdb9227ff0139975d0e93/charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027", size = 122521, upload-time = "2023-11-01T04:02:32.452Z" }, - { url = "https://files.pythonhosted.org/packages/46/6a/d5c26c41c49b546860cc1acabdddf48b0b3fb2685f4f5617ac59261b44ae/charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03", size = 120383, upload-time = "2023-11-01T04:02:34.11Z" }, - { url = "https://files.pythonhosted.org/packages/b8/60/e2f67915a51be59d4539ed189eb0a2b0d292bf79270410746becb32bc2c3/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d", size = 138223, upload-time = "2023-11-01T04:02:36.213Z" }, - { url = "https://files.pythonhosted.org/packages/05/8c/eb854996d5fef5e4f33ad56927ad053d04dc820e4a3d39023f35cad72617/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e", size = 148101, upload-time = "2023-11-01T04:02:38.067Z" }, - { url = "https://files.pythonhosted.org/packages/f6/93/bb6cbeec3bf9da9b2eba458c15966658d1daa8b982c642f81c93ad9b40e1/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6", size = 140699, upload-time = "2023-11-01T04:02:39.436Z" }, - { url = "https://files.pythonhosted.org/packages/da/f1/3702ba2a7470666a62fd81c58a4c40be00670e5006a67f4d626e57f013ae/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5", size = 142065, upload-time = "2023-11-01T04:02:41.357Z" }, - { url = "https://files.pythonhosted.org/packages/3f/ba/3f5e7be00b215fa10e13d64b1f6237eb6ebea66676a41b2bcdd09fe74323/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537", size = 144505, upload-time = "2023-11-01T04:02:43.108Z" }, - { url = "https://files.pythonhosted.org/packages/33/c3/3b96a435c5109dd5b6adc8a59ba1d678b302a97938f032e3770cc84cd354/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c", size = 139425, upload-time = "2023-11-01T04:02:45.427Z" }, - { url = "https://files.pythonhosted.org/packages/43/05/3bf613e719efe68fb3a77f9c536a389f35b95d75424b96b426a47a45ef1d/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12", size = 145287, upload-time = "2023-11-01T04:02:46.705Z" }, - { url = "https://files.pythonhosted.org/packages/58/78/a0bc646900994df12e07b4ae5c713f2b3e5998f58b9d3720cce2aa45652f/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f", size = 149929, upload-time = "2023-11-01T04:02:48.098Z" }, - { url = "https://files.pythonhosted.org/packages/eb/5c/97d97248af4920bc68687d9c3b3c0f47c910e21a8ff80af4565a576bd2f0/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269", size = 141605, upload-time = "2023-11-01T04:02:49.605Z" }, - { url = "https://files.pythonhosted.org/packages/a8/31/47d018ef89f95b8aded95c589a77c072c55e94b50a41aa99c0a2008a45a4/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519", size = 142646, upload-time = "2023-11-01T04:02:51.35Z" }, - { url = "https://files.pythonhosted.org/packages/ae/d5/4fecf1d58bedb1340a50f165ba1c7ddc0400252d6832ff619c4568b36cc0/charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73", size = 92846, upload-time = "2023-11-01T04:02:52.679Z" }, - { url = "https://files.pythonhosted.org/packages/a2/a0/4af29e22cb5942488cf45630cbdd7cefd908768e69bdd90280842e4e8529/charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09", size = 100343, upload-time = "2023-11-01T04:02:53.915Z" }, { url = "https://files.pythonhosted.org/packages/68/77/02839016f6fbbf808e8b38601df6e0e66c17bbab76dff4613f7511413597/charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db", size = 191647, upload-time = "2023-11-01T04:02:55.329Z" }, { url = "https://files.pythonhosted.org/packages/3e/33/21a875a61057165e92227466e54ee076b73af1e21fe1b31f1e292251aa1e/charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96", size = 121434, upload-time = "2023-11-01T04:02:57.173Z" }, { url = "https://files.pythonhosted.org/packages/dd/51/68b61b90b24ca35495956b718f35a9756ef7d3dd4b3c1508056fa98d1a1b/charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e", size = 118979, upload-time = "2023-11-01T04:02:58.442Z" }, @@ -395,72 +332,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/31/28/d28211d29bcc3620b1fece85a65ce5bb22f18670a03cd28ea4b75ede270c/configargparse-1.7.1-py3-none-any.whl", hash = "sha256:8b586a31f9d873abd1ca527ffbe58863c99f36d896e2829779803125e83be4b6", size = 25607, upload-time = "2025-05-23T14:26:15.923Z" }, ] -[[package]] -name = "contourpy" -version = "1.2.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version < '3.11' and sys_platform == 'darwin'", - "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", -] -dependencies = [ - { name = "numpy", marker = "python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/11/a3/48ddc7ae832b000952cf4be64452381d150a41a2299c2eb19237168528d1/contourpy-1.2.0.tar.gz", hash = "sha256:171f311cb758de7da13fc53af221ae47a5877be5a0843a9fe150818c51ed276a", size = 13455881, upload-time = "2023-11-03T17:01:03.144Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e8/ea/f6e90933d82cc5aacf52f886a1c01f47f96eba99108ca2929c7b3ef45f82/contourpy-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0274c1cb63625972c0c007ab14dd9ba9e199c36ae1a231ce45d725cbcbfd10a8", size = 256873, upload-time = "2023-11-03T16:56:34.548Z" }, - { url = "https://files.pythonhosted.org/packages/fe/26/43821d61b7ee62c1809ec852bc572aaf4c27f101ebcebbbcce29a5ee0445/contourpy-1.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ab459a1cbbf18e8698399c595a01f6dcc5c138220ca3ea9e7e6126232d102bb4", size = 242211, upload-time = "2023-11-03T16:56:38.028Z" }, - { url = "https://files.pythonhosted.org/packages/9b/99/c8fb63072a7573fe7682e1786a021f29f9c5f660a3aafcdce80b9ee8348d/contourpy-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fdd887f17c2f4572ce548461e4f96396681212d858cae7bd52ba3310bc6f00f", size = 293195, upload-time = "2023-11-03T16:56:41.598Z" }, - { url = "https://files.pythonhosted.org/packages/c7/a7/ae0b4bb8e0c865270d02ee619981413996dc10ddf1fd2689c938173ff62f/contourpy-1.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d16edfc3fc09968e09ddffada434b3bf989bf4911535e04eada58469873e28e", size = 332279, upload-time = "2023-11-03T16:56:46.08Z" }, - { url = "https://files.pythonhosted.org/packages/94/7c/682228b9085ff323fb7e946fe139072e5f21b71360cf91f36ea079d4ea95/contourpy-1.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c203f617abc0dde5792beb586f827021069fb6d403d7f4d5c2b543d87edceb9", size = 305326, upload-time = "2023-11-03T16:56:49.647Z" }, - { url = "https://files.pythonhosted.org/packages/58/56/e2c43dcfa1f9c7db4d5e3d6f5134b24ed953f4e2133a4b12f0062148db58/contourpy-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b69303ceb2e4d4f146bf82fda78891ef7bcd80c41bf16bfca3d0d7eb545448aa", size = 310732, upload-time = "2023-11-03T16:56:53.773Z" }, - { url = "https://files.pythonhosted.org/packages/94/0b/8495c4582057abc8377f945f6e11a86f1c07ad7b32fd4fdc968478cd0324/contourpy-1.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:884c3f9d42d7218304bc74a8a7693d172685c84bd7ab2bab1ee567b769696df9", size = 803420, upload-time = "2023-11-03T16:57:00.669Z" }, - { url = "https://files.pythonhosted.org/packages/d5/1f/40399c7da649297147d404aedaa675cc60018f48ad284630c0d1406133e3/contourpy-1.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4a1b1208102be6e851f20066bf0e7a96b7d48a07c9b0cfe6d0d4545c2f6cadab", size = 829204, upload-time = "2023-11-03T16:57:07.813Z" }, - { url = "https://files.pythonhosted.org/packages/8b/01/4be433b60dce7cbce8315cbcdfc016e7d25430a8b94e272355dff79cc3a8/contourpy-1.2.0-cp310-cp310-win32.whl", hash = "sha256:34b9071c040d6fe45d9826cbbe3727d20d83f1b6110d219b83eb0e2a01d79488", size = 165434, upload-time = "2023-11-03T16:57:10.601Z" }, - { url = "https://files.pythonhosted.org/packages/fd/7c/168f8343f33d861305e18c56901ef1bb675d3c7f977f435ec72751a71a54/contourpy-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:bd2f1ae63998da104f16a8b788f685e55d65760cd1929518fd94cd682bf03e41", size = 186652, upload-time = "2023-11-03T16:57:13.57Z" }, - { url = "https://files.pythonhosted.org/packages/9b/54/1dafec3c84df1d29119037330f7289db84a679cb2d5283af4ef24d89f532/contourpy-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dd10c26b4eadae44783c45ad6655220426f971c61d9b239e6f7b16d5cdaaa727", size = 258243, upload-time = "2023-11-03T16:57:16.604Z" }, - { url = "https://files.pythonhosted.org/packages/5b/ac/26fa1057f62beaa2af4c55c6ac733b114a403b746cfe0ce3dc6e4aec921a/contourpy-1.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c6b28956b7b232ae801406e529ad7b350d3f09a4fde958dfdf3c0520cdde0dd", size = 243408, upload-time = "2023-11-03T16:57:20.021Z" }, - { url = "https://files.pythonhosted.org/packages/b7/33/cd0ecc80123f499d76d2fe2807cb4d5638ef8730735c580c8a8a03e1928e/contourpy-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebeac59e9e1eb4b84940d076d9f9a6cec0064e241818bcb6e32124cc5c3e377a", size = 294142, upload-time = "2023-11-03T16:57:23.48Z" }, - { url = "https://files.pythonhosted.org/packages/6d/75/1b7bf20bf6394e01df2c4b4b3d44d3dc280c16ddaff72724639100bd4314/contourpy-1.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:139d8d2e1c1dd52d78682f505e980f592ba53c9f73bd6be102233e358b401063", size = 333129, upload-time = "2023-11-03T16:57:27.141Z" }, - { url = "https://files.pythonhosted.org/packages/22/5b/fedd961dff1877e5d3b83c5201295cfdcdc2438884c2851aa7ecf6cec045/contourpy-1.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e9dc350fb4c58adc64df3e0703ab076f60aac06e67d48b3848c23647ae4310e", size = 307461, upload-time = "2023-11-03T16:57:30.537Z" }, - { url = "https://files.pythonhosted.org/packages/e2/83/29a63bbc72839cc6b24b5a0e3d004d4ed4e8439f26460ad9a34e39251904/contourpy-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18fc2b4ed8e4a8fe849d18dce4bd3c7ea637758c6343a1f2bae1e9bd4c9f4686", size = 313352, upload-time = "2023-11-03T16:57:34.937Z" }, - { url = "https://files.pythonhosted.org/packages/4b/c7/4bac0fc4f1e802ab47e75076d83d2e1448e0668ba6cc9000cf4e9d5bd94a/contourpy-1.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:16a7380e943a6d52472096cb7ad5264ecee36ed60888e2a3d3814991a0107286", size = 804127, upload-time = "2023-11-03T16:57:42.201Z" }, - { url = "https://files.pythonhosted.org/packages/e3/47/b3fd5bdc2f6ec13502d57a5bc390ffe62648605ed1689c93b0015150a784/contourpy-1.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8d8faf05be5ec8e02a4d86f616fc2a0322ff4a4ce26c0f09d9f7fb5330a35c95", size = 829561, upload-time = "2023-11-03T16:57:49.667Z" }, - { url = "https://files.pythonhosted.org/packages/5c/04/be16038e754169caea4d02d82f8e5cd97dece593e5ac9e05735da0afd0c5/contourpy-1.2.0-cp311-cp311-win32.whl", hash = "sha256:67b7f17679fa62ec82b7e3e611c43a016b887bd64fb933b3ae8638583006c6d6", size = 166197, upload-time = "2023-11-03T16:57:52.682Z" }, - { url = "https://files.pythonhosted.org/packages/ca/2a/d197a412ec474391ee878b1218cf2fe9c6e963903755887fc5654c06636a/contourpy-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:99ad97258985328b4f207a5e777c1b44a83bfe7cf1f87b99f9c11d4ee477c4de", size = 187556, upload-time = "2023-11-03T16:57:55.286Z" }, - { url = "https://files.pythonhosted.org/packages/4f/03/839da46999173226bead08794cbd7b4d37c9e6b02686ca74c93556b43258/contourpy-1.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:575bcaf957a25d1194903a10bc9f316c136c19f24e0985a2b9b5608bdf5dbfe0", size = 259253, upload-time = "2023-11-03T16:57:58.572Z" }, - { url = "https://files.pythonhosted.org/packages/f3/9e/8fb3f53144269d3fecdd8786d3a4686eeff55b9b35a3c0772a3f62f71e36/contourpy-1.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9e6c93b5b2dbcedad20a2f18ec22cae47da0d705d454308063421a3b290d9ea4", size = 242555, upload-time = "2023-11-03T16:58:01.48Z" }, - { url = "https://files.pythonhosted.org/packages/a6/85/9815ccb5a18ee8c9a46bd5ef20d02b292cd4a99c62553f38c87015f16d59/contourpy-1.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:464b423bc2a009088f19bdf1f232299e8b6917963e2b7e1d277da5041f33a779", size = 288108, upload-time = "2023-11-03T16:58:05.546Z" }, - { url = "https://files.pythonhosted.org/packages/5a/d9/4df5c26bd0f496c8cd7940fd53db95d07deeb98518f02f805ce570590da8/contourpy-1.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:68ce4788b7d93e47f84edd3f1f95acdcd142ae60bc0e5493bfd120683d2d4316", size = 330810, upload-time = "2023-11-03T16:58:09.568Z" }, - { url = "https://files.pythonhosted.org/packages/67/d4/8aae9793a0cfde72959312521ebd3aa635c260c3d580448e8db6bdcdd1aa/contourpy-1.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d7d1f8871998cdff5d2ff6a087e5e1780139abe2838e85b0b46b7ae6cc25399", size = 305290, upload-time = "2023-11-03T16:58:13.017Z" }, - { url = "https://files.pythonhosted.org/packages/20/84/ffddcdcc579cbf7213fd92a3578ca08a931a3bf879a22deb5a83ffc5002c/contourpy-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e739530c662a8d6d42c37c2ed52a6f0932c2d4a3e8c1f90692ad0ce1274abe0", size = 303937, upload-time = "2023-11-03T16:58:16.426Z" }, - { url = "https://files.pythonhosted.org/packages/d8/ad/6e570cf525f909da94559ed716189f92f529bc7b5f78645733c44619a0e2/contourpy-1.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:247b9d16535acaa766d03037d8e8fb20866d054d3c7fbf6fd1f993f11fc60ca0", size = 801977, upload-time = "2023-11-03T16:58:23.539Z" }, - { url = "https://files.pythonhosted.org/packages/36/b4/55f23482c596eca36d16fc668b147865c56fcf90353f4c57f073d8d5e532/contourpy-1.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:461e3ae84cd90b30f8d533f07d87c00379644205b1d33a5ea03381edc4b69431", size = 827442, upload-time = "2023-11-03T16:58:30.724Z" }, - { url = "https://files.pythonhosted.org/packages/e9/47/9c081b1f11d6053cb0aa4c46b7de2ea2849a4a8d40de81c7bc3f99773b02/contourpy-1.2.0-cp312-cp312-win32.whl", hash = "sha256:1c2559d6cffc94890b0529ea7eeecc20d6fadc1539273aa27faf503eb4656d8f", size = 165363, upload-time = "2023-11-03T16:58:33.54Z" }, - { url = "https://files.pythonhosted.org/packages/8e/ae/a6353db548bff1a592b85ae6bb80275f0a51dc25a0410d059e5b33183e36/contourpy-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:491b1917afdd8638a05b611a56d46587d5a632cabead889a5440f7c638bc6ed9", size = 187731, upload-time = "2023-11-03T16:58:36.585Z" }, -] - [[package]] name = "contourpy" version = "1.3.3" source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14' and sys_platform == 'darwin'", - "python_full_version == '3.13.*' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and sys_platform == 'darwin'", - "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.14' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.14' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.13.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", -] dependencies = [ - { name = "numpy", marker = "python_full_version >= '3.11'" }, + { name = "numpy" }, ] sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } wheels = [ @@ -539,101 +416,50 @@ wheels = [ [[package]] name = "coverage" -version = "7.12.0" +version = "7.6.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/89/26/4a96807b193b011588099c3b5c89fbb05294e5b90e71018e065465f34eb6/coverage-7.12.0.tar.gz", hash = "sha256:fc11e0a4e372cb5f282f16ef90d4a585034050ccda536451901abfb19a57f40c", size = 819341, upload-time = "2025-11-18T13:34:20.766Z" } +sdist = { url = "https://files.pythonhosted.org/packages/52/12/3669b6382792783e92046730ad3327f53b2726f0603f4c311c4da4824222/coverage-7.6.4.tar.gz", hash = "sha256:29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73", size = 798716, upload-time = "2024-10-20T22:57:39.682Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/26/4a/0dc3de1c172d35abe512332cfdcc43211b6ebce629e4cc42e6cd25ed8f4d/coverage-7.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:32b75c2ba3f324ee37af3ccee5b30458038c50b349ad9b88cee85096132a575b", size = 217409, upload-time = "2025-11-18T13:31:53.122Z" }, - { url = "https://files.pythonhosted.org/packages/01/c3/086198b98db0109ad4f84241e8e9ea7e5fb2db8c8ffb787162d40c26cc76/coverage-7.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cb2a1b6ab9fe833714a483a915de350abc624a37149649297624c8d57add089c", size = 217927, upload-time = "2025-11-18T13:31:54.458Z" }, - { url = "https://files.pythonhosted.org/packages/5d/5f/34614dbf5ce0420828fc6c6f915126a0fcb01e25d16cf141bf5361e6aea6/coverage-7.12.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5734b5d913c3755e72f70bf6cc37a0518d4f4745cde760c5d8e12005e62f9832", size = 244678, upload-time = "2025-11-18T13:31:55.805Z" }, - { url = "https://files.pythonhosted.org/packages/55/7b/6b26fb32e8e4a6989ac1d40c4e132b14556131493b1d06bc0f2be169c357/coverage-7.12.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b527a08cdf15753279b7afb2339a12073620b761d79b81cbe2cdebdb43d90daa", size = 246507, upload-time = "2025-11-18T13:31:57.05Z" }, - { url = "https://files.pythonhosted.org/packages/06/42/7d70e6603d3260199b90fb48b537ca29ac183d524a65cc31366b2e905fad/coverage-7.12.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9bb44c889fb68004e94cab71f6a021ec83eac9aeabdbb5a5a88821ec46e1da73", size = 248366, upload-time = "2025-11-18T13:31:58.362Z" }, - { url = "https://files.pythonhosted.org/packages/2d/4a/d86b837923878424c72458c5b25e899a3c5ca73e663082a915f5b3c4d749/coverage-7.12.0-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4b59b501455535e2e5dde5881739897967b272ba25988c89145c12d772810ccb", size = 245366, upload-time = "2025-11-18T13:31:59.572Z" }, - { url = "https://files.pythonhosted.org/packages/e6/c2/2adec557e0aa9721875f06ced19730fdb7fc58e31b02b5aa56f2ebe4944d/coverage-7.12.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d8842f17095b9868a05837b7b1b73495293091bed870e099521ada176aa3e00e", size = 246408, upload-time = "2025-11-18T13:32:00.784Z" }, - { url = "https://files.pythonhosted.org/packages/5a/4b/8bd1f1148260df11c618e535fdccd1e5aaf646e55b50759006a4f41d8a26/coverage-7.12.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c5a6f20bf48b8866095c6820641e7ffbe23f2ac84a2efc218d91235e404c7777", size = 244416, upload-time = "2025-11-18T13:32:01.963Z" }, - { url = "https://files.pythonhosted.org/packages/0e/13/3a248dd6a83df90414c54a4e121fd081fb20602ca43955fbe1d60e2312a9/coverage-7.12.0-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:5f3738279524e988d9da2893f307c2093815c623f8d05a8f79e3eff3a7a9e553", size = 244681, upload-time = "2025-11-18T13:32:03.408Z" }, - { url = "https://files.pythonhosted.org/packages/76/30/aa833827465a5e8c938935f5d91ba055f70516941078a703740aaf1aa41f/coverage-7.12.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e0d68c1f7eabbc8abe582d11fa393ea483caf4f44b0af86881174769f185c94d", size = 245300, upload-time = "2025-11-18T13:32:04.686Z" }, - { url = "https://files.pythonhosted.org/packages/38/24/f85b3843af1370fb3739fa7571819b71243daa311289b31214fe3e8c9d68/coverage-7.12.0-cp310-cp310-win32.whl", hash = "sha256:7670d860e18b1e3ee5930b17a7d55ae6287ec6e55d9799982aa103a2cc1fa2ef", size = 220008, upload-time = "2025-11-18T13:32:05.806Z" }, - { url = "https://files.pythonhosted.org/packages/3a/a2/c7da5b9566f7164db9eefa133d17761ecb2c2fde9385d754e5b5c80f710d/coverage-7.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:f999813dddeb2a56aab5841e687b68169da0d3f6fc78ccf50952fa2463746022", size = 220943, upload-time = "2025-11-18T13:32:07.166Z" }, - { url = "https://files.pythonhosted.org/packages/5a/0c/0dfe7f0487477d96432e4815537263363fb6dd7289743a796e8e51eabdf2/coverage-7.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aa124a3683d2af98bd9d9c2bfa7a5076ca7e5ab09fdb96b81fa7d89376ae928f", size = 217535, upload-time = "2025-11-18T13:32:08.812Z" }, - { url = "https://files.pythonhosted.org/packages/9b/f5/f9a4a053a5bbff023d3bec259faac8f11a1e5a6479c2ccf586f910d8dac7/coverage-7.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d93fbf446c31c0140208dcd07c5d882029832e8ed7891a39d6d44bd65f2316c3", size = 218044, upload-time = "2025-11-18T13:32:10.329Z" }, - { url = "https://files.pythonhosted.org/packages/95/c5/84fc3697c1fa10cd8571919bf9693f693b7373278daaf3b73e328d502bc8/coverage-7.12.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:52ca620260bd8cd6027317bdd8b8ba929be1d741764ee765b42c4d79a408601e", size = 248440, upload-time = "2025-11-18T13:32:12.536Z" }, - { url = "https://files.pythonhosted.org/packages/f4/36/2d93fbf6a04670f3874aed397d5a5371948a076e3249244a9e84fb0e02d6/coverage-7.12.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f3433ffd541380f3a0e423cff0f4926d55b0cc8c1d160fdc3be24a4c03aa65f7", size = 250361, upload-time = "2025-11-18T13:32:13.852Z" }, - { url = "https://files.pythonhosted.org/packages/5d/49/66dc65cc456a6bfc41ea3d0758c4afeaa4068a2b2931bf83be6894cf1058/coverage-7.12.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f7bbb321d4adc9f65e402c677cd1c8e4c2d0105d3ce285b51b4d87f1d5db5245", size = 252472, upload-time = "2025-11-18T13:32:15.068Z" }, - { url = "https://files.pythonhosted.org/packages/35/1f/ebb8a18dffd406db9fcd4b3ae42254aedcaf612470e8712f12041325930f/coverage-7.12.0-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:22a7aade354a72dff3b59c577bfd18d6945c61f97393bc5fb7bd293a4237024b", size = 248592, upload-time = "2025-11-18T13:32:16.328Z" }, - { url = "https://files.pythonhosted.org/packages/da/a8/67f213c06e5ea3b3d4980df7dc344d7fea88240b5fe878a5dcbdfe0e2315/coverage-7.12.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3ff651dcd36d2fea66877cd4a82de478004c59b849945446acb5baf9379a1b64", size = 250167, upload-time = "2025-11-18T13:32:17.687Z" }, - { url = "https://files.pythonhosted.org/packages/f0/00/e52aef68154164ea40cc8389c120c314c747fe63a04b013a5782e989b77f/coverage-7.12.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:31b8b2e38391a56e3cea39d22a23faaa7c3fc911751756ef6d2621d2a9daf742", size = 248238, upload-time = "2025-11-18T13:32:19.2Z" }, - { url = "https://files.pythonhosted.org/packages/1f/a4/4d88750bcf9d6d66f77865e5a05a20e14db44074c25fd22519777cb69025/coverage-7.12.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:297bc2da28440f5ae51c845a47c8175a4db0553a53827886e4fb25c66633000c", size = 247964, upload-time = "2025-11-18T13:32:21.027Z" }, - { url = "https://files.pythonhosted.org/packages/a7/6b/b74693158899d5b47b0bf6238d2c6722e20ba749f86b74454fac0696bb00/coverage-7.12.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6ff7651cc01a246908eac162a6a86fc0dbab6de1ad165dfb9a1e2ec660b44984", size = 248862, upload-time = "2025-11-18T13:32:22.304Z" }, - { url = "https://files.pythonhosted.org/packages/18/de/6af6730227ce0e8ade307b1cc4a08e7f51b419a78d02083a86c04ccceb29/coverage-7.12.0-cp311-cp311-win32.whl", hash = "sha256:313672140638b6ddb2c6455ddeda41c6a0b208298034544cfca138978c6baed6", size = 220033, upload-time = "2025-11-18T13:32:23.714Z" }, - { url = "https://files.pythonhosted.org/packages/e2/a1/e7f63021a7c4fe20994359fcdeae43cbef4a4d0ca36a5a1639feeea5d9e1/coverage-7.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1783ed5bd0d5938d4435014626568dc7f93e3cb99bc59188cc18857c47aa3c4", size = 220966, upload-time = "2025-11-18T13:32:25.599Z" }, - { url = "https://files.pythonhosted.org/packages/77/e8/deae26453f37c20c3aa0c4433a1e32cdc169bf415cce223a693117aa3ddd/coverage-7.12.0-cp311-cp311-win_arm64.whl", hash = "sha256:4648158fd8dd9381b5847622df1c90ff314efbfc1df4550092ab6013c238a5fc", size = 219637, upload-time = "2025-11-18T13:32:27.265Z" }, - { url = "https://files.pythonhosted.org/packages/02/bf/638c0427c0f0d47638242e2438127f3c8ee3cfc06c7fdeb16778ed47f836/coverage-7.12.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:29644c928772c78512b48e14156b81255000dcfd4817574ff69def189bcb3647", size = 217704, upload-time = "2025-11-18T13:32:28.906Z" }, - { url = "https://files.pythonhosted.org/packages/08/e1/706fae6692a66c2d6b871a608bbde0da6281903fa0e9f53a39ed441da36a/coverage-7.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8638cbb002eaa5d7c8d04da667813ce1067080b9a91099801a0053086e52b736", size = 218064, upload-time = "2025-11-18T13:32:30.161Z" }, - { url = "https://files.pythonhosted.org/packages/a9/8b/eb0231d0540f8af3ffda39720ff43cb91926489d01524e68f60e961366e4/coverage-7.12.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:083631eeff5eb9992c923e14b810a179798bb598e6a0dd60586819fc23be6e60", size = 249560, upload-time = "2025-11-18T13:32:31.835Z" }, - { url = "https://files.pythonhosted.org/packages/e9/a1/67fb52af642e974d159b5b379e4d4c59d0ebe1288677fbd04bbffe665a82/coverage-7.12.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:99d5415c73ca12d558e07776bd957c4222c687b9f1d26fa0e1b57e3598bdcde8", size = 252318, upload-time = "2025-11-18T13:32:33.178Z" }, - { url = "https://files.pythonhosted.org/packages/41/e5/38228f31b2c7665ebf9bdfdddd7a184d56450755c7e43ac721c11a4b8dab/coverage-7.12.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e949ebf60c717c3df63adb4a1a366c096c8d7fd8472608cd09359e1bd48ef59f", size = 253403, upload-time = "2025-11-18T13:32:34.45Z" }, - { url = "https://files.pythonhosted.org/packages/ec/4b/df78e4c8188f9960684267c5a4897836f3f0f20a20c51606ee778a1d9749/coverage-7.12.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6d907ddccbca819afa2cd014bc69983b146cca2735a0b1e6259b2a6c10be1e70", size = 249984, upload-time = "2025-11-18T13:32:35.747Z" }, - { url = "https://files.pythonhosted.org/packages/ba/51/bb163933d195a345c6f63eab9e55743413d064c291b6220df754075c2769/coverage-7.12.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b1518ecbad4e6173f4c6e6c4a46e49555ea5679bf3feda5edb1b935c7c44e8a0", size = 251339, upload-time = "2025-11-18T13:32:37.352Z" }, - { url = "https://files.pythonhosted.org/packages/15/40/c9b29cdb8412c837cdcbc2cfa054547dd83affe6cbbd4ce4fdb92b6ba7d1/coverage-7.12.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:51777647a749abdf6f6fd8c7cffab12de68ab93aab15efc72fbbb83036c2a068", size = 249489, upload-time = "2025-11-18T13:32:39.212Z" }, - { url = "https://files.pythonhosted.org/packages/c8/da/b3131e20ba07a0de4437a50ef3b47840dfabf9293675b0cd5c2c7f66dd61/coverage-7.12.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:42435d46d6461a3b305cdfcad7cdd3248787771f53fe18305548cba474e6523b", size = 249070, upload-time = "2025-11-18T13:32:40.598Z" }, - { url = "https://files.pythonhosted.org/packages/70/81/b653329b5f6302c08d683ceff6785bc60a34be9ae92a5c7b63ee7ee7acec/coverage-7.12.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5bcead88c8423e1855e64b8057d0544e33e4080b95b240c2a355334bb7ced937", size = 250929, upload-time = "2025-11-18T13:32:42.915Z" }, - { url = "https://files.pythonhosted.org/packages/a3/00/250ac3bca9f252a5fb1338b5ad01331ebb7b40223f72bef5b1b2cb03aa64/coverage-7.12.0-cp312-cp312-win32.whl", hash = "sha256:dcbb630ab034e86d2a0f79aefd2be07e583202f41e037602d438c80044957baa", size = 220241, upload-time = "2025-11-18T13:32:44.665Z" }, - { url = "https://files.pythonhosted.org/packages/64/1c/77e79e76d37ce83302f6c21980b45e09f8aa4551965213a10e62d71ce0ab/coverage-7.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:2fd8354ed5d69775ac42986a691fbf68b4084278710cee9d7c3eaa0c28fa982a", size = 221051, upload-time = "2025-11-18T13:32:46.008Z" }, - { url = "https://files.pythonhosted.org/packages/31/f5/641b8a25baae564f9e52cac0e2667b123de961985709a004e287ee7663cc/coverage-7.12.0-cp312-cp312-win_arm64.whl", hash = "sha256:737c3814903be30695b2de20d22bcc5428fdae305c61ba44cdc8b3252984c49c", size = 219692, upload-time = "2025-11-18T13:32:47.372Z" }, - { url = "https://files.pythonhosted.org/packages/b8/14/771700b4048774e48d2c54ed0c674273702713c9ee7acdfede40c2666747/coverage-7.12.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:47324fffca8d8eae7e185b5bb20c14645f23350f870c1649003618ea91a78941", size = 217725, upload-time = "2025-11-18T13:32:49.22Z" }, - { url = "https://files.pythonhosted.org/packages/17/a7/3aa4144d3bcb719bf67b22d2d51c2d577bf801498c13cb08f64173e80497/coverage-7.12.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ccf3b2ede91decd2fb53ec73c1f949c3e034129d1e0b07798ff1d02ea0c8fa4a", size = 218098, upload-time = "2025-11-18T13:32:50.78Z" }, - { url = "https://files.pythonhosted.org/packages/fc/9c/b846bbc774ff81091a12a10203e70562c91ae71badda00c5ae5b613527b1/coverage-7.12.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:b365adc70a6936c6b0582dc38746b33b2454148c02349345412c6e743efb646d", size = 249093, upload-time = "2025-11-18T13:32:52.554Z" }, - { url = "https://files.pythonhosted.org/packages/76/b6/67d7c0e1f400b32c883e9342de4a8c2ae7c1a0b57c5de87622b7262e2309/coverage-7.12.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:bc13baf85cd8a4cfcf4a35c7bc9d795837ad809775f782f697bf630b7e200211", size = 251686, upload-time = "2025-11-18T13:32:54.862Z" }, - { url = "https://files.pythonhosted.org/packages/cc/75/b095bd4b39d49c3be4bffbb3135fea18a99a431c52dd7513637c0762fecb/coverage-7.12.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:099d11698385d572ceafb3288a5b80fe1fc58bf665b3f9d362389de488361d3d", size = 252930, upload-time = "2025-11-18T13:32:56.417Z" }, - { url = "https://files.pythonhosted.org/packages/6e/f3/466f63015c7c80550bead3093aacabf5380c1220a2a93c35d374cae8f762/coverage-7.12.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:473dc45d69694069adb7680c405fb1e81f60b2aff42c81e2f2c3feaf544d878c", size = 249296, upload-time = "2025-11-18T13:32:58.074Z" }, - { url = "https://files.pythonhosted.org/packages/27/86/eba2209bf2b7e28c68698fc13437519a295b2d228ba9e0ec91673e09fa92/coverage-7.12.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:583f9adbefd278e9de33c33d6846aa8f5d164fa49b47144180a0e037f0688bb9", size = 251068, upload-time = "2025-11-18T13:32:59.646Z" }, - { url = "https://files.pythonhosted.org/packages/ec/55/ca8ae7dbba962a3351f18940b359b94c6bafdd7757945fdc79ec9e452dc7/coverage-7.12.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b2089cc445f2dc0af6f801f0d1355c025b76c24481935303cf1af28f636688f0", size = 249034, upload-time = "2025-11-18T13:33:01.481Z" }, - { url = "https://files.pythonhosted.org/packages/7a/d7/39136149325cad92d420b023b5fd900dabdd1c3a0d1d5f148ef4a8cedef5/coverage-7.12.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:950411f1eb5d579999c5f66c62a40961f126fc71e5e14419f004471957b51508", size = 248853, upload-time = "2025-11-18T13:33:02.935Z" }, - { url = "https://files.pythonhosted.org/packages/fe/b6/76e1add8b87ef60e00643b0b7f8f7bb73d4bf5249a3be19ebefc5793dd25/coverage-7.12.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b1aab7302a87bafebfe76b12af681b56ff446dc6f32ed178ff9c092ca776e6bc", size = 250619, upload-time = "2025-11-18T13:33:04.336Z" }, - { url = "https://files.pythonhosted.org/packages/95/87/924c6dc64f9203f7a3c1832a6a0eee5a8335dbe5f1bdadcc278d6f1b4d74/coverage-7.12.0-cp313-cp313-win32.whl", hash = "sha256:d7e0d0303c13b54db495eb636bc2465b2fb8475d4c8bcec8fe4b5ca454dfbae8", size = 220261, upload-time = "2025-11-18T13:33:06.493Z" }, - { url = "https://files.pythonhosted.org/packages/91/77/dd4aff9af16ff776bf355a24d87eeb48fc6acde54c907cc1ea89b14a8804/coverage-7.12.0-cp313-cp313-win_amd64.whl", hash = "sha256:ce61969812d6a98a981d147d9ac583a36ac7db7766f2e64a9d4d059c2fe29d07", size = 221072, upload-time = "2025-11-18T13:33:07.926Z" }, - { url = "https://files.pythonhosted.org/packages/70/49/5c9dc46205fef31b1b226a6e16513193715290584317fd4df91cdaf28b22/coverage-7.12.0-cp313-cp313-win_arm64.whl", hash = "sha256:bcec6f47e4cb8a4c2dc91ce507f6eefc6a1b10f58df32cdc61dff65455031dfc", size = 219702, upload-time = "2025-11-18T13:33:09.631Z" }, - { url = "https://files.pythonhosted.org/packages/9b/62/f87922641c7198667994dd472a91e1d9b829c95d6c29529ceb52132436ad/coverage-7.12.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:459443346509476170d553035e4a3eed7b860f4fe5242f02de1010501956ce87", size = 218420, upload-time = "2025-11-18T13:33:11.153Z" }, - { url = "https://files.pythonhosted.org/packages/85/dd/1cc13b2395ef15dbb27d7370a2509b4aee77890a464fb35d72d428f84871/coverage-7.12.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:04a79245ab2b7a61688958f7a855275997134bc84f4a03bc240cf64ff132abf6", size = 218773, upload-time = "2025-11-18T13:33:12.569Z" }, - { url = "https://files.pythonhosted.org/packages/74/40/35773cc4bb1e9d4658d4fb669eb4195b3151bef3bbd6f866aba5cd5dac82/coverage-7.12.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:09a86acaaa8455f13d6a99221d9654df249b33937b4e212b4e5a822065f12aa7", size = 260078, upload-time = "2025-11-18T13:33:14.037Z" }, - { url = "https://files.pythonhosted.org/packages/ec/ee/231bb1a6ffc2905e396557585ebc6bdc559e7c66708376d245a1f1d330fc/coverage-7.12.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:907e0df1b71ba77463687a74149c6122c3f6aac56c2510a5d906b2f368208560", size = 262144, upload-time = "2025-11-18T13:33:15.601Z" }, - { url = "https://files.pythonhosted.org/packages/28/be/32f4aa9f3bf0b56f3971001b56508352c7753915345d45fab4296a986f01/coverage-7.12.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9b57e2d0ddd5f0582bae5437c04ee71c46cd908e7bc5d4d0391f9a41e812dd12", size = 264574, upload-time = "2025-11-18T13:33:17.354Z" }, - { url = "https://files.pythonhosted.org/packages/68/7c/00489fcbc2245d13ab12189b977e0cf06ff3351cb98bc6beba8bd68c5902/coverage-7.12.0-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:58c1c6aa677f3a1411fe6fb28ec3a942e4f665df036a3608816e0847fad23296", size = 259298, upload-time = "2025-11-18T13:33:18.958Z" }, - { url = "https://files.pythonhosted.org/packages/96/b4/f0760d65d56c3bea95b449e02570d4abd2549dc784bf39a2d4721a2d8ceb/coverage-7.12.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4c589361263ab2953e3c4cd2a94db94c4ad4a8e572776ecfbad2389c626e4507", size = 262150, upload-time = "2025-11-18T13:33:20.644Z" }, - { url = "https://files.pythonhosted.org/packages/c5/71/9a9314df00f9326d78c1e5a910f520d599205907432d90d1c1b7a97aa4b1/coverage-7.12.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:91b810a163ccad2e43b1faa11d70d3cf4b6f3d83f9fd5f2df82a32d47b648e0d", size = 259763, upload-time = "2025-11-18T13:33:22.189Z" }, - { url = "https://files.pythonhosted.org/packages/10/34/01a0aceed13fbdf925876b9a15d50862eb8845454301fe3cdd1df08b2182/coverage-7.12.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:40c867af715f22592e0d0fb533a33a71ec9e0f73a6945f722a0c85c8c1cbe3a2", size = 258653, upload-time = "2025-11-18T13:33:24.239Z" }, - { url = "https://files.pythonhosted.org/packages/8d/04/81d8fd64928acf1574bbb0181f66901c6c1c6279c8ccf5f84259d2c68ae9/coverage-7.12.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:68b0d0a2d84f333de875666259dadf28cc67858bc8fd8b3f1eae84d3c2bec455", size = 260856, upload-time = "2025-11-18T13:33:26.365Z" }, - { url = "https://files.pythonhosted.org/packages/f2/76/fa2a37bfaeaf1f766a2d2360a25a5297d4fb567098112f6517475eee120b/coverage-7.12.0-cp313-cp313t-win32.whl", hash = "sha256:73f9e7fbd51a221818fd11b7090eaa835a353ddd59c236c57b2199486b116c6d", size = 220936, upload-time = "2025-11-18T13:33:28.165Z" }, - { url = "https://files.pythonhosted.org/packages/f9/52/60f64d932d555102611c366afb0eb434b34266b1d9266fc2fe18ab641c47/coverage-7.12.0-cp313-cp313t-win_amd64.whl", hash = "sha256:24cff9d1f5743f67db7ba46ff284018a6e9aeb649b67aa1e70c396aa1b7cb23c", size = 222001, upload-time = "2025-11-18T13:33:29.656Z" }, - { url = "https://files.pythonhosted.org/packages/77/df/c303164154a5a3aea7472bf323b7c857fed93b26618ed9fc5c2955566bb0/coverage-7.12.0-cp313-cp313t-win_arm64.whl", hash = "sha256:c87395744f5c77c866d0f5a43d97cc39e17c7f1cb0115e54a2fe67ca75c5d14d", size = 220273, upload-time = "2025-11-18T13:33:31.415Z" }, - { url = "https://files.pythonhosted.org/packages/bf/2e/fc12db0883478d6e12bbd62d481210f0c8daf036102aa11434a0c5755825/coverage-7.12.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:a1c59b7dc169809a88b21a936eccf71c3895a78f5592051b1af8f4d59c2b4f92", size = 217777, upload-time = "2025-11-18T13:33:32.86Z" }, - { url = "https://files.pythonhosted.org/packages/1f/c1/ce3e525d223350c6ec16b9be8a057623f54226ef7f4c2fee361ebb6a02b8/coverage-7.12.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8787b0f982e020adb732b9f051f3e49dd5054cebbc3f3432061278512a2b1360", size = 218100, upload-time = "2025-11-18T13:33:34.532Z" }, - { url = "https://files.pythonhosted.org/packages/15/87/113757441504aee3808cb422990ed7c8bcc2d53a6779c66c5adef0942939/coverage-7.12.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5ea5a9f7dc8877455b13dd1effd3202e0bca72f6f3ab09f9036b1bcf728f69ac", size = 249151, upload-time = "2025-11-18T13:33:36.135Z" }, - { url = "https://files.pythonhosted.org/packages/d9/1d/9529d9bd44049b6b05bb319c03a3a7e4b0a8a802d28fa348ad407e10706d/coverage-7.12.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fdba9f15849534594f60b47c9a30bc70409b54947319a7c4fd0e8e3d8d2f355d", size = 251667, upload-time = "2025-11-18T13:33:37.996Z" }, - { url = "https://files.pythonhosted.org/packages/11/bb/567e751c41e9c03dc29d3ce74b8c89a1e3396313e34f255a2a2e8b9ebb56/coverage-7.12.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a00594770eb715854fb1c57e0dea08cce6720cfbc531accdb9850d7c7770396c", size = 253003, upload-time = "2025-11-18T13:33:39.553Z" }, - { url = "https://files.pythonhosted.org/packages/e4/b3/c2cce2d8526a02fb9e9ca14a263ca6fc074449b33a6afa4892838c903528/coverage-7.12.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5560c7e0d82b42eb1951e4f68f071f8017c824ebfd5a6ebe42c60ac16c6c2434", size = 249185, upload-time = "2025-11-18T13:33:42.086Z" }, - { url = "https://files.pythonhosted.org/packages/0e/a7/967f93bb66e82c9113c66a8d0b65ecf72fc865adfba5a145f50c7af7e58d/coverage-7.12.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d6c2e26b481c9159c2773a37947a9718cfdc58893029cdfb177531793e375cfc", size = 251025, upload-time = "2025-11-18T13:33:43.634Z" }, - { url = "https://files.pythonhosted.org/packages/b9/b2/f2f6f56337bc1af465d5b2dc1ee7ee2141b8b9272f3bf6213fcbc309a836/coverage-7.12.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:6e1a8c066dabcde56d5d9fed6a66bc19a2883a3fe051f0c397a41fc42aedd4cc", size = 248979, upload-time = "2025-11-18T13:33:46.04Z" }, - { url = "https://files.pythonhosted.org/packages/f4/7a/bf4209f45a4aec09d10a01a57313a46c0e0e8f4c55ff2965467d41a92036/coverage-7.12.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:f7ba9da4726e446d8dd8aae5a6cd872511184a5d861de80a86ef970b5dacce3e", size = 248800, upload-time = "2025-11-18T13:33:47.546Z" }, - { url = "https://files.pythonhosted.org/packages/b8/b7/1e01b8696fb0521810f60c5bbebf699100d6754183e6cc0679bf2ed76531/coverage-7.12.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e0f483ab4f749039894abaf80c2f9e7ed77bbf3c737517fb88c8e8e305896a17", size = 250460, upload-time = "2025-11-18T13:33:49.537Z" }, - { url = "https://files.pythonhosted.org/packages/71/ae/84324fb9cb46c024760e706353d9b771a81b398d117d8c1fe010391c186f/coverage-7.12.0-cp314-cp314-win32.whl", hash = "sha256:76336c19a9ef4a94b2f8dc79f8ac2da3f193f625bb5d6f51a328cd19bfc19933", size = 220533, upload-time = "2025-11-18T13:33:51.16Z" }, - { url = "https://files.pythonhosted.org/packages/e2/71/1033629deb8460a8f97f83e6ac4ca3b93952e2b6f826056684df8275e015/coverage-7.12.0-cp314-cp314-win_amd64.whl", hash = "sha256:7c1059b600aec6ef090721f8f633f60ed70afaffe8ecab85b59df748f24b31fe", size = 221348, upload-time = "2025-11-18T13:33:52.776Z" }, - { url = "https://files.pythonhosted.org/packages/0a/5f/ac8107a902f623b0c251abdb749be282dc2ab61854a8a4fcf49e276fce2f/coverage-7.12.0-cp314-cp314-win_arm64.whl", hash = "sha256:172cf3a34bfef42611963e2b661302a8931f44df31629e5b1050567d6b90287d", size = 219922, upload-time = "2025-11-18T13:33:54.316Z" }, - { url = "https://files.pythonhosted.org/packages/79/6e/f27af2d4da367f16077d21ef6fe796c874408219fa6dd3f3efe7751bd910/coverage-7.12.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:aa7d48520a32cb21c7a9b31f81799e8eaec7239db36c3b670be0fa2403828d1d", size = 218511, upload-time = "2025-11-18T13:33:56.343Z" }, - { url = "https://files.pythonhosted.org/packages/67/dd/65fd874aa460c30da78f9d259400d8e6a4ef457d61ab052fd248f0050558/coverage-7.12.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:90d58ac63bc85e0fb919f14d09d6caa63f35a5512a2205284b7816cafd21bb03", size = 218771, upload-time = "2025-11-18T13:33:57.966Z" }, - { url = "https://files.pythonhosted.org/packages/55/e0/7c6b71d327d8068cb79c05f8f45bf1b6145f7a0de23bbebe63578fe5240a/coverage-7.12.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ca8ecfa283764fdda3eae1bdb6afe58bf78c2c3ec2b2edcb05a671f0bba7b3f9", size = 260151, upload-time = "2025-11-18T13:33:59.597Z" }, - { url = "https://files.pythonhosted.org/packages/49/ce/4697457d58285b7200de6b46d606ea71066c6e674571a946a6ea908fb588/coverage-7.12.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:874fe69a0785d96bd066059cd4368022cebbec1a8958f224f0016979183916e6", size = 262257, upload-time = "2025-11-18T13:34:01.166Z" }, - { url = "https://files.pythonhosted.org/packages/2f/33/acbc6e447aee4ceba88c15528dbe04a35fb4d67b59d393d2e0d6f1e242c1/coverage-7.12.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5b3c889c0b8b283a24d721a9eabc8ccafcfc3aebf167e4cd0d0e23bf8ec4e339", size = 264671, upload-time = "2025-11-18T13:34:02.795Z" }, - { url = "https://files.pythonhosted.org/packages/87/ec/e2822a795c1ed44d569980097be839c5e734d4c0c1119ef8e0a073496a30/coverage-7.12.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8bb5b894b3ec09dcd6d3743229dc7f2c42ef7787dc40596ae04c0edda487371e", size = 259231, upload-time = "2025-11-18T13:34:04.397Z" }, - { url = "https://files.pythonhosted.org/packages/72/c5/a7ec5395bb4a49c9b7ad97e63f0c92f6bf4a9e006b1393555a02dae75f16/coverage-7.12.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:79a44421cd5fba96aa57b5e3b5a4d3274c449d4c622e8f76882d76635501fd13", size = 262137, upload-time = "2025-11-18T13:34:06.068Z" }, - { url = "https://files.pythonhosted.org/packages/67/0c/02c08858b764129f4ecb8e316684272972e60777ae986f3865b10940bdd6/coverage-7.12.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:33baadc0efd5c7294f436a632566ccc1f72c867f82833eb59820ee37dc811c6f", size = 259745, upload-time = "2025-11-18T13:34:08.04Z" }, - { url = "https://files.pythonhosted.org/packages/5a/04/4fd32b7084505f3829a8fe45c1a74a7a728cb251aaadbe3bec04abcef06d/coverage-7.12.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:c406a71f544800ef7e9e0000af706b88465f3573ae8b8de37e5f96c59f689ad1", size = 258570, upload-time = "2025-11-18T13:34:09.676Z" }, - { url = "https://files.pythonhosted.org/packages/48/35/2365e37c90df4f5342c4fa202223744119fe31264ee2924f09f074ea9b6d/coverage-7.12.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e71bba6a40883b00c6d571599b4627f50c360b3d0d02bfc658168936be74027b", size = 260899, upload-time = "2025-11-18T13:34:11.259Z" }, - { url = "https://files.pythonhosted.org/packages/05/56/26ab0464ca733fa325e8e71455c58c1c374ce30f7c04cebb88eabb037b18/coverage-7.12.0-cp314-cp314t-win32.whl", hash = "sha256:9157a5e233c40ce6613dead4c131a006adfda70e557b6856b97aceed01b0e27a", size = 221313, upload-time = "2025-11-18T13:34:12.863Z" }, - { url = "https://files.pythonhosted.org/packages/da/1c/017a3e1113ed34d998b27d2c6dba08a9e7cb97d362f0ec988fcd873dcf81/coverage-7.12.0-cp314-cp314t-win_amd64.whl", hash = "sha256:e84da3a0fd233aeec797b981c51af1cabac74f9bd67be42458365b30d11b5291", size = 222423, upload-time = "2025-11-18T13:34:15.14Z" }, - { url = "https://files.pythonhosted.org/packages/4c/36/bcc504fdd5169301b52568802bb1b9cdde2e27a01d39fbb3b4b508ab7c2c/coverage-7.12.0-cp314-cp314t-win_arm64.whl", hash = "sha256:01d24af36fedda51c2b1aca56e4330a3710f83b02a5ff3743a6b015ffa7c9384", size = 220459, upload-time = "2025-11-18T13:34:17.222Z" }, - { url = "https://files.pythonhosted.org/packages/ce/a3/43b749004e3c09452e39bb56347a008f0a0668aad37324a99b5c8ca91d9e/coverage-7.12.0-py3-none-any.whl", hash = "sha256:159d50c0b12e060b15ed3d39f87ed43d4f7f7ad40b8a534f4dd331adbb51104a", size = 209503, upload-time = "2025-11-18T13:34:18.892Z" }, + { url = "https://files.pythonhosted.org/packages/87/31/9c0cf84f0dfcbe4215b7eb95c31777cdc0483c13390e69584c8150c85175/coverage-7.6.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:73d2b73584446e66ee633eaad1a56aad577c077f46c35ca3283cd687b7715b0b", size = 206819, upload-time = "2024-10-20T22:56:20.132Z" }, + { url = "https://files.pythonhosted.org/packages/53/ed/a38401079ad320ad6e054a01ec2b61d270511aeb3c201c80e99c841229d5/coverage-7.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51b44306032045b383a7a8a2c13878de375117946d68dcb54308111f39775a25", size = 207263, upload-time = "2024-10-20T22:56:21.88Z" }, + { url = "https://files.pythonhosted.org/packages/20/e7/c3ad33b179ab4213f0d70da25a9c214d52464efa11caeab438592eb1d837/coverage-7.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3fb02fe73bed561fa12d279a417b432e5b50fe03e8d663d61b3d5990f29546", size = 239205, upload-time = "2024-10-20T22:56:23.03Z" }, + { url = "https://files.pythonhosted.org/packages/36/91/fc02e8d8e694f557752120487fd982f654ba1421bbaa5560debf96ddceda/coverage-7.6.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed8fe9189d2beb6edc14d3ad19800626e1d9f2d975e436f84e19efb7fa19469b", size = 236612, upload-time = "2024-10-20T22:56:24.882Z" }, + { url = "https://files.pythonhosted.org/packages/cc/57/cb08f0eda0389a9a8aaa4fc1f9fec7ac361c3e2d68efd5890d7042c18aa3/coverage-7.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b369ead6527d025a0fe7bd3864e46dbee3aa8f652d48df6174f8d0bac9e26e0e", size = 238479, upload-time = "2024-10-20T22:56:26.749Z" }, + { url = "https://files.pythonhosted.org/packages/d5/c9/2c7681a9b3ca6e6f43d489c2e6653a53278ed857fd6e7010490c307b0a47/coverage-7.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ade3ca1e5f0ff46b678b66201f7ff477e8fa11fb537f3b55c3f0568fbfe6e718", size = 237405, upload-time = "2024-10-20T22:56:27.958Z" }, + { url = "https://files.pythonhosted.org/packages/b5/4e/ebfc6944b96317df8b537ae875d2e57c27b84eb98820bc0a1055f358f056/coverage-7.6.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:27fb4a050aaf18772db513091c9c13f6cb94ed40eacdef8dad8411d92d9992db", size = 236038, upload-time = "2024-10-20T22:56:29.816Z" }, + { url = "https://files.pythonhosted.org/packages/13/f2/3a0bf1841a97c0654905e2ef531170f02c89fad2555879db8fe41a097871/coverage-7.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4f704f0998911abf728a7783799444fcbbe8261c4a6c166f667937ae6a8aa522", size = 236812, upload-time = "2024-10-20T22:56:31.654Z" }, + { url = "https://files.pythonhosted.org/packages/b9/9c/66bf59226b52ce6ed9541b02d33e80a6e816a832558fbdc1111a7bd3abd4/coverage-7.6.4-cp311-cp311-win32.whl", hash = "sha256:29155cd511ee058e260db648b6182c419422a0d2e9a4fa44501898cf918866cf", size = 209400, upload-time = "2024-10-20T22:56:33.569Z" }, + { url = "https://files.pythonhosted.org/packages/2a/a0/b0790934c04dfc8d658d4a62acb8f7ca0efdf3818456fcad757b11c6479d/coverage-7.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:8902dd6a30173d4ef09954bfcb24b5d7b5190cf14a43170e386979651e09ba19", size = 210243, upload-time = "2024-10-20T22:56:34.863Z" }, + { url = "https://files.pythonhosted.org/packages/7d/e7/9291de916d084f41adddfd4b82246e68d61d6a75747f075f7e64628998d2/coverage-7.6.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12394842a3a8affa3ba62b0d4ab7e9e210c5e366fbac3e8b2a68636fb19892c2", size = 207013, upload-time = "2024-10-20T22:56:36.034Z" }, + { url = "https://files.pythonhosted.org/packages/27/03/932c2c5717a7fa80cd43c6a07d3177076d97b79f12f40f882f9916db0063/coverage-7.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2b6b4c83d8e8ea79f27ab80778c19bc037759aea298da4b56621f4474ffeb117", size = 207251, upload-time = "2024-10-20T22:56:38.054Z" }, + { url = "https://files.pythonhosted.org/packages/d5/3f/0af47dcb9327f65a45455fbca846fe96eb57c153af46c4754a3ba678938a/coverage-7.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d5b8007f81b88696d06f7df0cb9af0d3b835fe0c8dbf489bad70b45f0e45613", size = 240268, upload-time = "2024-10-20T22:56:40.051Z" }, + { url = "https://files.pythonhosted.org/packages/8a/3c/37a9d81bbd4b23bc7d46ca820e16174c613579c66342faa390a271d2e18b/coverage-7.6.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b57b768feb866f44eeed9f46975f3d6406380275c5ddfe22f531a2bf187eda27", size = 237298, upload-time = "2024-10-20T22:56:41.929Z" }, + { url = "https://files.pythonhosted.org/packages/c0/70/6b0627e5bd68204ee580126ed3513140b2298995c1233bd67404b4e44d0e/coverage-7.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5915fcdec0e54ee229926868e9b08586376cae1f5faa9bbaf8faf3561b393d52", size = 239367, upload-time = "2024-10-20T22:56:43.141Z" }, + { url = "https://files.pythonhosted.org/packages/3c/eb/634d7dfab24ac3b790bebaf9da0f4a5352cbc125ce6a9d5c6cf4c6cae3c7/coverage-7.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0b58c672d14f16ed92a48db984612f5ce3836ae7d72cdd161001cc54512571f2", size = 238853, upload-time = "2024-10-20T22:56:44.33Z" }, + { url = "https://files.pythonhosted.org/packages/d9/0d/8e3ed00f1266ef7472a4e33458f42e39492e01a64281084fb3043553d3f1/coverage-7.6.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2fdef0d83a2d08d69b1f2210a93c416d54e14d9eb398f6ab2f0a209433db19e1", size = 237160, upload-time = "2024-10-20T22:56:46.258Z" }, + { url = "https://files.pythonhosted.org/packages/ce/9c/4337f468ef0ab7a2e0887a9c9da0e58e2eada6fc6cbee637a4acd5dfd8a9/coverage-7.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8cf717ee42012be8c0cb205dbbf18ffa9003c4cbf4ad078db47b95e10748eec5", size = 238824, upload-time = "2024-10-20T22:56:48.666Z" }, + { url = "https://files.pythonhosted.org/packages/5e/09/3e94912b8dd37251377bb02727a33a67ee96b84bbbe092f132b401ca5dd9/coverage-7.6.4-cp312-cp312-win32.whl", hash = "sha256:7bb92c539a624cf86296dd0c68cd5cc286c9eef2d0c3b8b192b604ce9de20a17", size = 209639, upload-time = "2024-10-20T22:56:50.664Z" }, + { url = "https://files.pythonhosted.org/packages/01/69/d4f3a4101171f32bc5b3caec8ff94c2c60f700107a6aaef7244b2c166793/coverage-7.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:1032e178b76a4e2b5b32e19d0fd0abbce4b58e77a1ca695820d10e491fa32b08", size = 210428, upload-time = "2024-10-20T22:56:52.468Z" }, + { url = "https://files.pythonhosted.org/packages/c2/4d/2dede4f7cb5a70fb0bb40a57627fddf1dbdc6b9c1db81f7c4dcdcb19e2f4/coverage-7.6.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:023bf8ee3ec6d35af9c1c6ccc1d18fa69afa1cb29eaac57cb064dbb262a517f9", size = 207039, upload-time = "2024-10-20T22:56:53.656Z" }, + { url = "https://files.pythonhosted.org/packages/3f/f9/d86368ae8c79e28f1fb458ebc76ae9ff3e8bd8069adc24e8f2fed03c58b7/coverage-7.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0ac3d42cb51c4b12df9c5f0dd2f13a4f24f01943627120ec4d293c9181219ba", size = 207298, upload-time = "2024-10-20T22:56:54.979Z" }, + { url = "https://files.pythonhosted.org/packages/64/c5/b4cc3c3f64622c58fbfd4d8b9a7a8ce9d355f172f91fcabbba1f026852f6/coverage-7.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8fe4984b431f8621ca53d9380901f62bfb54ff759a1348cd140490ada7b693c", size = 239813, upload-time = "2024-10-20T22:56:56.209Z" }, + { url = "https://files.pythonhosted.org/packages/8a/86/14c42e60b70a79b26099e4d289ccdfefbc68624d096f4481163085aa614c/coverage-7.6.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5fbd612f8a091954a0c8dd4c0b571b973487277d26476f8480bfa4b2a65b5d06", size = 236959, upload-time = "2024-10-20T22:56:58.06Z" }, + { url = "https://files.pythonhosted.org/packages/7f/f8/4436a643631a2fbab4b44d54f515028f6099bfb1cd95b13cfbf701e7f2f2/coverage-7.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dacbc52de979f2823a819571f2e3a350a7e36b8cb7484cdb1e289bceaf35305f", size = 238950, upload-time = "2024-10-20T22:56:59.329Z" }, + { url = "https://files.pythonhosted.org/packages/49/50/1571810ddd01f99a0a8be464a4ac8b147f322cd1e8e296a1528984fc560b/coverage-7.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dab4d16dfef34b185032580e2f2f89253d302facba093d5fa9dbe04f569c4f4b", size = 238610, upload-time = "2024-10-20T22:57:00.645Z" }, + { url = "https://files.pythonhosted.org/packages/f3/8c/6312d241fe7cbd1f0cade34a62fea6f333d1a261255d76b9a87074d8703c/coverage-7.6.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:862264b12ebb65ad8d863d51f17758b1684560b66ab02770d4f0baf2ff75da21", size = 236697, upload-time = "2024-10-20T22:57:01.944Z" }, + { url = "https://files.pythonhosted.org/packages/ce/5f/fef33dfd05d87ee9030f614c857deb6df6556b8f6a1c51bbbb41e24ee5ac/coverage-7.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5beb1ee382ad32afe424097de57134175fea3faf847b9af002cc7895be4e2a5a", size = 238541, upload-time = "2024-10-20T22:57:03.848Z" }, + { url = "https://files.pythonhosted.org/packages/a9/64/6a984b6e92e1ea1353b7ffa08e27f707a5e29b044622445859200f541e8c/coverage-7.6.4-cp313-cp313-win32.whl", hash = "sha256:bf20494da9653f6410213424f5f8ad0ed885e01f7e8e59811f572bdb20b8972e", size = 209707, upload-time = "2024-10-20T22:57:05.123Z" }, + { url = "https://files.pythonhosted.org/packages/5c/60/ce5a9e942e9543783b3db5d942e0578b391c25cdd5e7f342d854ea83d6b7/coverage-7.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:182e6cd5c040cec0a1c8d415a87b67ed01193ed9ad458ee427741c7d8513d963", size = 210439, upload-time = "2024-10-20T22:57:06.35Z" }, + { url = "https://files.pythonhosted.org/packages/78/53/6719677e92c308207e7f10561a1b16ab8b5c00e9328efc9af7cfd6fb703e/coverage-7.6.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a181e99301a0ae128493a24cfe5cfb5b488c4e0bf2f8702091473d033494d04f", size = 207784, upload-time = "2024-10-20T22:57:07.857Z" }, + { url = "https://files.pythonhosted.org/packages/fa/dd/7054928930671fcb39ae6a83bb71d9ab5f0afb733172543ced4b09a115ca/coverage-7.6.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:df57bdbeffe694e7842092c5e2e0bc80fff7f43379d465f932ef36f027179806", size = 208058, upload-time = "2024-10-20T22:57:09.845Z" }, + { url = "https://files.pythonhosted.org/packages/b5/7d/fd656ddc2b38301927b9eb3aae3fe827e7aa82e691923ed43721fd9423c9/coverage-7.6.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bcd1069e710600e8e4cf27f65c90c7843fa8edfb4520fb0ccb88894cad08b11", size = 250772, upload-time = "2024-10-20T22:57:11.147Z" }, + { url = "https://files.pythonhosted.org/packages/90/d0/eb9a3cc2100b83064bb086f18aedde3afffd7de6ead28f69736c00b7f302/coverage-7.6.4-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99b41d18e6b2a48ba949418db48159d7a2e81c5cc290fc934b7d2380515bd0e3", size = 246490, upload-time = "2024-10-20T22:57:13.02Z" }, + { url = "https://files.pythonhosted.org/packages/45/44/3f64f38f6faab8a0cfd2c6bc6eb4c6daead246b97cf5f8fc23bf3788f841/coverage-7.6.4-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1e54712ba3474f34b7ef7a41e65bd9037ad47916ccb1cc78769bae324c01a", size = 248848, upload-time = "2024-10-20T22:57:14.927Z" }, + { url = "https://files.pythonhosted.org/packages/5d/11/4c465a5f98656821e499f4b4619929bd5a34639c466021740ecdca42aa30/coverage-7.6.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53d202fd109416ce011578f321460795abfe10bb901b883cafd9b3ef851bacfc", size = 248340, upload-time = "2024-10-20T22:57:16.246Z" }, + { url = "https://files.pythonhosted.org/packages/f1/96/ebecda2d016cce9da812f404f720ca5df83c6b29f65dc80d2000d0078741/coverage-7.6.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:c48167910a8f644671de9f2083a23630fbf7a1cb70ce939440cd3328e0919f70", size = 246229, upload-time = "2024-10-20T22:57:17.546Z" }, + { url = "https://files.pythonhosted.org/packages/16/d9/3d820c00066ae55d69e6d0eae11d6149a5ca7546de469ba9d597f01bf2d7/coverage-7.6.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cc8ff50b50ce532de2fa7a7daae9dd12f0a699bfcd47f20945364e5c31799fef", size = 247510, upload-time = "2024-10-20T22:57:18.925Z" }, + { url = "https://files.pythonhosted.org/packages/8f/c3/4fa1eb412bb288ff6bfcc163c11700ff06e02c5fad8513817186e460ed43/coverage-7.6.4-cp313-cp313t-win32.whl", hash = "sha256:b8d3a03d9bfcaf5b0141d07a88456bb6a4c3ce55c080712fec8418ef3610230e", size = 210353, upload-time = "2024-10-20T22:57:20.891Z" }, + { url = "https://files.pythonhosted.org/packages/7e/77/03fc2979d1538884d921c2013075917fc927f41cd8526909852fe4494112/coverage-7.6.4-cp313-cp313t-win_amd64.whl", hash = "sha256:f3ddf056d3ebcf6ce47bdaf56142af51bb7fad09e4af310241e9db7a3a8022e1", size = 211502, upload-time = "2024-10-20T22:57:22.21Z" }, ] [package.optional-dependencies] @@ -656,14 +482,6 @@ version = "3.0.8" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/68/09/ffb61f29b8e3d207c444032b21328327d753e274ea081bc74e009827cc81/Cython-3.0.8.tar.gz", hash = "sha256:8333423d8fd5765e7cceea3a9985dd1e0a5dfeb2734629e1a2ed2d6233d39de6", size = 2744096, upload-time = "2024-01-10T11:01:02.155Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/63/f4/d2542e186fe33ec1cc542770fb17466421ed54f4ffe04d00fe9549d0a467/Cython-3.0.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a846e0a38e2b24e9a5c5dc74b0e54c6e29420d88d1dafabc99e0fc0f3e338636", size = 3100459, upload-time = "2024-01-10T11:33:49.545Z" }, - { url = "https://files.pythonhosted.org/packages/fc/27/2652f395aa708fb3081148e0df3ab700bd7288636c65332ef7febad6a380/Cython-3.0.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45523fdc2b78d79b32834cc1cc12dc2ca8967af87e22a3ee1bff20e77c7f5520", size = 3456626, upload-time = "2024-01-10T11:01:44.897Z" }, - { url = "https://files.pythonhosted.org/packages/f9/bd/e8a1d26d04c08a67bcc383f2ea5493a4e77f37a8770ead00a238b08ad729/Cython-3.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa0b7f3f841fe087410cab66778e2d3fb20ae2d2078a2be3dffe66c6574be39", size = 3621379, upload-time = "2024-01-10T11:01:48.777Z" }, - { url = "https://files.pythonhosted.org/packages/03/ae/ead7ec03d0062d439879d41b7830e4f2480213f7beabf2f7052a191cc6f7/Cython-3.0.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e87294e33e40c289c77a135f491cd721bd089f193f956f7b8ed5aa2d0b8c558f", size = 3671873, upload-time = "2024-01-10T11:01:51.858Z" }, - { url = "https://files.pythonhosted.org/packages/63/b0/81dad725604d7b529c492f873a7fa1b5800704a9f26e100ed25e9fd8d057/Cython-3.0.8-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a1df7a129344b1215c20096d33c00193437df1a8fcca25b71f17c23b1a44f782", size = 3463832, upload-time = "2024-01-10T11:01:55.364Z" }, - { url = "https://files.pythonhosted.org/packages/13/cd/72b8e0af597ac1b376421847acf6d6fa252e60059a2a00dcf05ceb16d28f/Cython-3.0.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:13c2a5e57a0358da467d97667297bf820b62a1a87ae47c5f87938b9bb593acbd", size = 3618325, upload-time = "2024-01-10T11:01:59.03Z" }, - { url = "https://files.pythonhosted.org/packages/ef/73/11a4355d8b8966504c751e5bcb25916c4140de27bb2ba1b54ff21994d7fe/Cython-3.0.8-cp310-cp310-win32.whl", hash = "sha256:96b028f044f5880e3cb18ecdcfc6c8d3ce9d0af28418d5ab464509f26d8adf12", size = 2571305, upload-time = "2024-01-10T11:02:02.589Z" }, - { url = "https://files.pythonhosted.org/packages/18/15/fdc0c3552d20f9337b134a36d786da24e47998fc39f62cb61c1534f26123/Cython-3.0.8-cp310-cp310-win_amd64.whl", hash = "sha256:8140597a8b5cc4f119a1190f5a2228a84f5ca6d8d9ec386cfce24663f48b2539", size = 2776113, upload-time = "2024-01-10T11:02:05.581Z" }, { url = "https://files.pythonhosted.org/packages/db/a7/f4a0bc9a80e23b380daa2ebb4879bf434aaa0b3b91f7ad8a7f9762b4bd1b/Cython-3.0.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aae26f9663e50caf9657148403d9874eea41770ecdd6caf381d177c2b1bb82ba", size = 3113615, upload-time = "2024-01-10T11:34:05.899Z" }, { url = "https://files.pythonhosted.org/packages/e9/e9/e9295df74246c165b91253a473bfa179debf739c9bee961cbb3ae56c2b79/Cython-3.0.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:547eb3cdb2f8c6f48e6865d5a741d9dd051c25b3ce076fbca571727977b28ac3", size = 3436320, upload-time = "2024-01-10T11:02:08.689Z" }, { url = "https://files.pythonhosted.org/packages/26/2c/6a887c957aa53e44f928119dea628a5dfacc8e875424034f5fecac9daba4/Cython-3.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a567d4b9ba70b26db89d75b243529de9e649a2f56384287533cf91512705bee", size = 3591755, upload-time = "2024-01-10T11:02:11.773Z" }, @@ -689,18 +507,9 @@ version = "1.11" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/0a/d2/deb3296d08097fedd622d423c0ec8b68b78c1704b3f1545326f6ce05c75c/easydict-1.11.tar.gz", hash = "sha256:dcb1d2ed28eb300c8e46cd371340373abc62f7c14d6dea74fdfc6f1069061c78", size = 6644, upload-time = "2023-10-23T23:01:37.686Z" } -[[package]] -name = "exceptiongroup" -version = "1.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8e/1c/beef724eaf5b01bb44b6338c8c3494eff7cab376fab4904cfbbc3585dc79/exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68", size = 26264, upload-time = "2023-11-21T08:42:17.407Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/9a/5028fd52db10e600f1c4674441b968cf2ea4959085bfb5b99fb1250e5f68/exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14", size = 16210, upload-time = "2023-11-21T08:42:15.525Z" }, -] - [[package]] name = "fastapi" -version = "0.122.0" +version = "0.127.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-doc" }, @@ -708,18 +517,18 @@ dependencies = [ { name = "starlette" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b2/de/3ee97a4f6ffef1fb70bf20561e4f88531633bb5045dc6cebc0f8471f764d/fastapi-0.122.0.tar.gz", hash = "sha256:cd9b5352031f93773228af8b4c443eedc2ac2aa74b27780387b853c3726fb94b", size = 346436, upload-time = "2025-11-24T19:17:47.95Z" } +sdist = { url = "https://files.pythonhosted.org/packages/96/8a/6b9ba6eb8ff3817caae83120495965d9e70afb4d6348cb120e464ee199f4/fastapi-0.127.1.tar.gz", hash = "sha256:946a87ee5d931883b562b6bada787d6c8178becee2683cb3f9b980d593206359", size = 391876, upload-time = "2025-12-26T13:04:47.075Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7a/93/aa8072af4ff37b795f6bbf43dcaf61115f40f49935c7dbb180c9afc3f421/fastapi-0.122.0-py3-none-any.whl", hash = "sha256:a456e8915dfc6c8914a50d9651133bd47ec96d331c5b44600baa635538a30d67", size = 110671, upload-time = "2025-11-24T19:17:45.96Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f3/a6858d147ed2645c095d11dc2440f94a5f1cd8f4df888e3377e6b5281a0f/fastapi-0.127.1-py3-none-any.whl", hash = "sha256:31d670a4f9373cc6d7994420f98e4dc46ea693145207abc39696746c83a44430", size = 112332, upload-time = "2025-12-26T13:04:45.329Z" }, ] [[package]] name = "filelock" -version = "3.13.1" +version = "3.20.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/70/70/41905c80dcfe71b22fb06827b8eae65781783d4a14194bce79d16a013263/filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e", size = 14553, upload-time = "2023-10-30T18:29:39.035Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/23/ce7a1126827cedeb958fc043d61745754464eb56c5937c35bbf2b8e26f34/filelock-3.20.1.tar.gz", hash = "sha256:b8360948b351b80f420878d8516519a2204b07aefcdcfd24912a5d33127f188c", size = 19476, upload-time = "2025-12-15T23:54:28.027Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/54/84d42a0bee35edba99dee7b59a8d4970eccdd44b99fe728ed912106fc781/filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c", size = 11740, upload-time = "2023-10-30T18:29:37.267Z" }, + { url = "https://files.pythonhosted.org/packages/e3/7f/a1a97644e39e7316d850784c642093c99df1290a460df4ede27659056834/filelock-3.20.1-py3-none-any.whl", hash = "sha256:15d9e9a67306188a44baa72f569d2bfd803076269365fdea0934385da4dc361a", size = 16666, upload-time = "2025-12-15T23:54:26.874Z" }, ] [[package]] @@ -774,35 +583,51 @@ wheels = [ [[package]] name = "fonttools" -version = "4.47.2" +version = "4.61.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e5/cd/75d24afa673edf92fd04657fad7d3b5e20c4abc3cad5bc14e5e30051c1f0/fonttools-4.47.2.tar.gz", hash = "sha256:7df26dd3650e98ca45f1e29883c96a0b9f5bb6af8d632a6a108bc744fa0bd9b3", size = 3410067, upload-time = "2024-01-11T11:22:45.293Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/ca/cf17b88a8df95691275a3d77dc0a5ad9907f328ae53acbe6795da1b2f5ed/fonttools-4.61.1.tar.gz", hash = "sha256:6675329885c44657f826ef01d9e4fb33b9158e9d93c537d84ad8399539bc6f69", size = 3565756, upload-time = "2025-12-12T17:31:24.246Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/30/02de0b7f3d72f2c4fce3e512b166c1bdbe5a687408474b61eb0114be921c/fonttools-4.47.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3b629108351d25512d4ea1a8393a2dba325b7b7d7308116b605ea3f8e1be88df", size = 2779949, upload-time = "2024-01-11T11:19:56.276Z" }, - { url = "https://files.pythonhosted.org/packages/9a/52/1a5e1373afb78a040ea0c371ab8a79da121060a8e518968bb8f41457ca90/fonttools-4.47.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c19044256c44fe299d9a73456aabee4b4d06c6b930287be93b533b4737d70aa1", size = 2281336, upload-time = "2024-01-11T11:20:08.835Z" }, - { url = "https://files.pythonhosted.org/packages/c5/ce/9d3b5bf51aafee024566ebb374f5b040381d92660cb04647af3c5860c611/fonttools-4.47.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8be28c036b9f186e8c7eaf8a11b42373e7e4949f9e9f370202b9da4c4c3f56c", size = 4541692, upload-time = "2024-01-11T11:20:13.378Z" }, - { url = "https://files.pythonhosted.org/packages/e8/68/af41b7cfd35c7418e17b6a43bb106be4b0f0e5feb405a88dee29b186f2a7/fonttools-4.47.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f83a4daef6d2a202acb9bf572958f91cfde5b10c8ee7fb1d09a4c81e5d851fd8", size = 4600529, upload-time = "2024-01-11T11:20:17.27Z" }, - { url = "https://files.pythonhosted.org/packages/ab/7e/428dbb4cfc342b7a05cbc9d349e134e7fad6588f4ce2a7128e8e3e58ad3b/fonttools-4.47.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4a5a5318ba5365d992666ac4fe35365f93004109d18858a3e18ae46f67907670", size = 4524215, upload-time = "2024-01-11T11:20:21.061Z" }, - { url = "https://files.pythonhosted.org/packages/a6/61/762fad1cc1debc4626f2eb373fa999591c63c231fce53d5073574a639531/fonttools-4.47.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8f57ecd742545362a0f7186774b2d1c53423ed9ece67689c93a1055b236f638c", size = 4584778, upload-time = "2024-01-11T11:20:25.815Z" }, - { url = "https://files.pythonhosted.org/packages/04/30/170ca22284c1d825470e8b5871d6b25d3a70e2f5b185ffb1647d5e11ee4d/fonttools-4.47.2-cp310-cp310-win32.whl", hash = "sha256:a1c154bb85dc9a4cf145250c88d112d88eb414bad81d4cb524d06258dea1bdc0", size = 2131876, upload-time = "2024-01-11T11:20:30.261Z" }, - { url = "https://files.pythonhosted.org/packages/df/07/4a30437bed355b838b8ce31d14c5983334c31adc97e70c6ecff90c60d6d2/fonttools-4.47.2-cp310-cp310-win_amd64.whl", hash = "sha256:3e2b95dce2ead58fb12524d0ca7d63a63459dd489e7e5838c3cd53557f8933e1", size = 2177937, upload-time = "2024-01-11T11:20:33.814Z" }, - { url = "https://files.pythonhosted.org/packages/dd/1d/670372323642eada0f7743cfcdd156de6a28d37769c916421fec2f32c814/fonttools-4.47.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:29495d6d109cdbabe73cfb6f419ce67080c3ef9ea1e08d5750240fd4b0c4763b", size = 2782908, upload-time = "2024-01-11T11:20:37.495Z" }, - { url = "https://files.pythonhosted.org/packages/c1/36/5f0bb863a6575db4c4b67fa9be7f98e4c551dd87638ef327bc180b988998/fonttools-4.47.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0a1d313a415eaaba2b35d6cd33536560deeebd2ed758b9bfb89ab5d97dc5deac", size = 2283501, upload-time = "2024-01-11T11:20:42.027Z" }, - { url = "https://files.pythonhosted.org/packages/bd/1e/95de682a86567426bcc40a56c9b118ffa97de6cbfcc293addf20994e329d/fonttools-4.47.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90f898cdd67f52f18049250a6474185ef6544c91f27a7bee70d87d77a8daf89c", size = 4848039, upload-time = "2024-01-11T11:20:47.038Z" }, - { url = "https://files.pythonhosted.org/packages/ef/95/92a0b5fc844c1db734752f8a51431de519cd6b02e7e561efa9e9fd415544/fonttools-4.47.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3480eeb52770ff75140fe7d9a2ec33fb67b07efea0ab5129c7e0c6a639c40c70", size = 4893166, upload-time = "2024-01-11T11:20:50.855Z" }, - { url = "https://files.pythonhosted.org/packages/ff/e6/ed9dd7ee1afd6cd70eb7237688118fe489dbde962e3765c91c86c095f84b/fonttools-4.47.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0255dbc128fee75fb9be364806b940ed450dd6838672a150d501ee86523ac61e", size = 4815529, upload-time = "2024-01-11T11:20:54.696Z" }, - { url = "https://files.pythonhosted.org/packages/6b/67/cdffa0b3cd8f863b45125c335bbd3d9dc16ec42f5a8d5b64dd1244c5ce6b/fonttools-4.47.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f791446ff297fd5f1e2247c188de53c1bfb9dd7f0549eba55b73a3c2087a2703", size = 4875414, upload-time = "2024-01-11T11:20:58.435Z" }, - { url = "https://files.pythonhosted.org/packages/b8/fb/41638e748c8f20f5483987afcf9be746d3ccb9e9600ca62128a27c791a82/fonttools-4.47.2-cp311-cp311-win32.whl", hash = "sha256:740947906590a878a4bde7dd748e85fefa4d470a268b964748403b3ab2aeed6c", size = 2130073, upload-time = "2024-01-11T11:21:02.056Z" }, - { url = "https://files.pythonhosted.org/packages/a0/ef/93321cf55180a778b4d97919b28739874c0afab90e7b9f5b232db70f47c2/fonttools-4.47.2-cp311-cp311-win_amd64.whl", hash = "sha256:63fbed184979f09a65aa9c88b395ca539c94287ba3a364517698462e13e457c9", size = 2178744, upload-time = "2024-01-11T11:21:05.88Z" }, - { url = "https://files.pythonhosted.org/packages/c0/bd/4dd1e8a9e632f325d9203ce543402f912f26efd213c8d9efec0180fbac64/fonttools-4.47.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4ec558c543609e71b2275c4894e93493f65d2f41c15fe1d089080c1d0bb4d635", size = 2754076, upload-time = "2024-01-11T11:21:09.745Z" }, - { url = "https://files.pythonhosted.org/packages/e6/4d/c2ebaac81dadbc3fc3c3c2fa5fe7b16429dc713b1b8ace49e11e92904d78/fonttools-4.47.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e040f905d542362e07e72e03612a6270c33d38281fd573160e1003e43718d68d", size = 2263784, upload-time = "2024-01-11T11:21:13.367Z" }, - { url = "https://files.pythonhosted.org/packages/d3/f6/9d484cd275845c7e503a8669a5952a7fa089c7a881babb4dce5ebe6fc5d1/fonttools-4.47.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6dd58cc03016b281bd2c74c84cdaa6bd3ce54c5a7f47478b7657b930ac3ed8eb", size = 4769142, upload-time = "2024-01-11T11:21:17.615Z" }, - { url = "https://files.pythonhosted.org/packages/7a/bf/c6ae0768a531b38245aac0bb8d30bc05d53d499e09fccdc5d72e7c8d28b6/fonttools-4.47.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32ab2e9702dff0dd4510c7bb958f265a8d3dd5c0e2547e7b5f7a3df4979abb07", size = 4853241, upload-time = "2024-01-11T11:21:21.16Z" }, - { url = "https://files.pythonhosted.org/packages/2b/f0/c06709666cb7722447efb70ea456c302bd6eb3b997d30076401fb32bca4b/fonttools-4.47.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a808f3c1d1df1f5bf39be869b6e0c263570cdafb5bdb2df66087733f566ea71", size = 4730447, upload-time = "2024-01-11T11:21:24.755Z" }, - { url = "https://files.pythonhosted.org/packages/3e/71/4c758ae5f4f8047904fc1c6bbbb828248c94cc7aa6406af3a62ede766f25/fonttools-4.47.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ac71e2e201df041a2891067dc36256755b1229ae167edbdc419b16da78732c2f", size = 4809265, upload-time = "2024-01-11T11:21:28.586Z" }, - { url = "https://files.pythonhosted.org/packages/81/f6/a6912c11280607d48947341e2167502605a3917925c835afcd7dfcabc289/fonttools-4.47.2-cp312-cp312-win32.whl", hash = "sha256:69731e8bea0578b3c28fdb43dbf95b9386e2d49a399e9a4ad736b8e479b08085", size = 2118363, upload-time = "2024-01-11T11:21:33.245Z" }, - { url = "https://files.pythonhosted.org/packages/81/4b/42d0488765ea5aa308b4e8197cb75366b2124240a73e86f98b6107ccf282/fonttools-4.47.2-cp312-cp312-win_amd64.whl", hash = "sha256:b3e1304e5f19ca861d86a72218ecce68f391646d85c851742d265787f55457a4", size = 2165866, upload-time = "2024-01-11T11:21:37.23Z" }, - { url = "https://files.pythonhosted.org/packages/af/2f/c34b0f99d46766cf49566d1ee2ee3606e4c9880b5a7d734257dc61c804e9/fonttools-4.47.2-py3-none-any.whl", hash = "sha256:7eb7ad665258fba68fd22228a09f347469d95a97fb88198e133595947a20a184", size = 1063011, upload-time = "2024-01-11T11:22:41.676Z" }, + { url = "https://files.pythonhosted.org/packages/69/12/bf9f4eaa2fad039356cc627587e30ed008c03f1cebd3034376b5ee8d1d44/fonttools-4.61.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c6604b735bb12fef8e0efd5578c9fb5d3d8532d5001ea13a19cddf295673ee09", size = 2852213, upload-time = "2025-12-12T17:29:46.675Z" }, + { url = "https://files.pythonhosted.org/packages/ac/49/4138d1acb6261499bedde1c07f8c2605d1d8f9d77a151e5507fd3ef084b6/fonttools-4.61.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5ce02f38a754f207f2f06557523cd39a06438ba3aafc0639c477ac409fc64e37", size = 2401689, upload-time = "2025-12-12T17:29:48.769Z" }, + { url = "https://files.pythonhosted.org/packages/e5/fe/e6ce0fe20a40e03aef906af60aa87668696f9e4802fa283627d0b5ed777f/fonttools-4.61.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:77efb033d8d7ff233385f30c62c7c79271c8885d5c9657d967ede124671bbdfb", size = 5058809, upload-time = "2025-12-12T17:29:51.701Z" }, + { url = "https://files.pythonhosted.org/packages/79/61/1ca198af22f7dd22c17ab86e9024ed3c06299cfdb08170640e9996d501a0/fonttools-4.61.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:75c1a6dfac6abd407634420c93864a1e274ebc1c7531346d9254c0d8f6ca00f9", size = 5036039, upload-time = "2025-12-12T17:29:53.659Z" }, + { url = "https://files.pythonhosted.org/packages/99/cc/fa1801e408586b5fce4da9f5455af8d770f4fc57391cd5da7256bb364d38/fonttools-4.61.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0de30bfe7745c0d1ffa2b0b7048fb7123ad0d71107e10ee090fa0b16b9452e87", size = 5034714, upload-time = "2025-12-12T17:29:55.592Z" }, + { url = "https://files.pythonhosted.org/packages/bf/aa/b7aeafe65adb1b0a925f8f25725e09f078c635bc22754f3fecb7456955b0/fonttools-4.61.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:58b0ee0ab5b1fc9921eccfe11d1435added19d6494dde14e323f25ad2bc30c56", size = 5158648, upload-time = "2025-12-12T17:29:57.861Z" }, + { url = "https://files.pythonhosted.org/packages/99/f9/08ea7a38663328881384c6e7777bbefc46fd7d282adfd87a7d2b84ec9d50/fonttools-4.61.1-cp311-cp311-win32.whl", hash = "sha256:f79b168428351d11e10c5aeb61a74e1851ec221081299f4cf56036a95431c43a", size = 2280681, upload-time = "2025-12-12T17:29:59.943Z" }, + { url = "https://files.pythonhosted.org/packages/07/ad/37dd1ae5fa6e01612a1fbb954f0927681f282925a86e86198ccd7b15d515/fonttools-4.61.1-cp311-cp311-win_amd64.whl", hash = "sha256:fe2efccb324948a11dd09d22136fe2ac8a97d6c1347cf0b58a911dcd529f66b7", size = 2331951, upload-time = "2025-12-12T17:30:02.254Z" }, + { url = "https://files.pythonhosted.org/packages/6f/16/7decaa24a1bd3a70c607b2e29f0adc6159f36a7e40eaba59846414765fd4/fonttools-4.61.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f3cb4a569029b9f291f88aafc927dd53683757e640081ca8c412781ea144565e", size = 2851593, upload-time = "2025-12-12T17:30:04.225Z" }, + { url = "https://files.pythonhosted.org/packages/94/98/3c4cb97c64713a8cf499b3245c3bf9a2b8fd16a3e375feff2aed78f96259/fonttools-4.61.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41a7170d042e8c0024703ed13b71893519a1a6d6e18e933e3ec7507a2c26a4b2", size = 2400231, upload-time = "2025-12-12T17:30:06.47Z" }, + { url = "https://files.pythonhosted.org/packages/b7/37/82dbef0f6342eb01f54bca073ac1498433d6ce71e50c3c3282b655733b31/fonttools-4.61.1-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:10d88e55330e092940584774ee5e8a6971b01fc2f4d3466a1d6c158230880796", size = 4954103, upload-time = "2025-12-12T17:30:08.432Z" }, + { url = "https://files.pythonhosted.org/packages/6c/44/f3aeac0fa98e7ad527f479e161aca6c3a1e47bb6996b053d45226fe37bf2/fonttools-4.61.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:15acc09befd16a0fb8a8f62bc147e1a82817542d72184acca9ce6e0aeda9fa6d", size = 5004295, upload-time = "2025-12-12T17:30:10.56Z" }, + { url = "https://files.pythonhosted.org/packages/14/e8/7424ced75473983b964d09f6747fa09f054a6d656f60e9ac9324cf40c743/fonttools-4.61.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e6bcdf33aec38d16508ce61fd81838f24c83c90a1d1b8c68982857038673d6b8", size = 4944109, upload-time = "2025-12-12T17:30:12.874Z" }, + { url = "https://files.pythonhosted.org/packages/c8/8b/6391b257fa3d0b553d73e778f953a2f0154292a7a7a085e2374b111e5410/fonttools-4.61.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5fade934607a523614726119164ff621e8c30e8fa1ffffbbd358662056ba69f0", size = 5093598, upload-time = "2025-12-12T17:30:15.79Z" }, + { url = "https://files.pythonhosted.org/packages/d9/71/fd2ea96cdc512d92da5678a1c98c267ddd4d8c5130b76d0f7a80f9a9fde8/fonttools-4.61.1-cp312-cp312-win32.whl", hash = "sha256:75da8f28eff26defba42c52986de97b22106cb8f26515b7c22443ebc9c2d3261", size = 2269060, upload-time = "2025-12-12T17:30:18.058Z" }, + { url = "https://files.pythonhosted.org/packages/80/3b/a3e81b71aed5a688e89dfe0e2694b26b78c7d7f39a5ffd8a7d75f54a12a8/fonttools-4.61.1-cp312-cp312-win_amd64.whl", hash = "sha256:497c31ce314219888c0e2fce5ad9178ca83fe5230b01a5006726cdf3ac9f24d9", size = 2319078, upload-time = "2025-12-12T17:30:22.862Z" }, + { url = "https://files.pythonhosted.org/packages/4b/cf/00ba28b0990982530addb8dc3e9e6f2fa9cb5c20df2abdda7baa755e8fe1/fonttools-4.61.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8c56c488ab471628ff3bfa80964372fc13504ece601e0d97a78ee74126b2045c", size = 2846454, upload-time = "2025-12-12T17:30:24.938Z" }, + { url = "https://files.pythonhosted.org/packages/5a/ca/468c9a8446a2103ae645d14fee3f610567b7042aba85031c1c65e3ef7471/fonttools-4.61.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dc492779501fa723b04d0ab1f5be046797fee17d27700476edc7ee9ae535a61e", size = 2398191, upload-time = "2025-12-12T17:30:27.343Z" }, + { url = "https://files.pythonhosted.org/packages/a3/4b/d67eedaed19def5967fade3297fed8161b25ba94699efc124b14fb68cdbc/fonttools-4.61.1-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:64102ca87e84261419c3747a0d20f396eb024bdbeb04c2bfb37e2891f5fadcb5", size = 4928410, upload-time = "2025-12-12T17:30:29.771Z" }, + { url = "https://files.pythonhosted.org/packages/b0/8d/6fb3494dfe61a46258cd93d979cf4725ded4eb46c2a4ca35e4490d84daea/fonttools-4.61.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c1b526c8d3f615a7b1867f38a9410849c8f4aef078535742198e942fba0e9bd", size = 4984460, upload-time = "2025-12-12T17:30:32.073Z" }, + { url = "https://files.pythonhosted.org/packages/f7/f1/a47f1d30b3dc00d75e7af762652d4cbc3dff5c2697a0dbd5203c81afd9c3/fonttools-4.61.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:41ed4b5ec103bd306bb68f81dc166e77409e5209443e5773cb4ed837bcc9b0d3", size = 4925800, upload-time = "2025-12-12T17:30:34.339Z" }, + { url = "https://files.pythonhosted.org/packages/a7/01/e6ae64a0981076e8a66906fab01539799546181e32a37a0257b77e4aa88b/fonttools-4.61.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b501c862d4901792adaec7c25b1ecc749e2662543f68bb194c42ba18d6eec98d", size = 5067859, upload-time = "2025-12-12T17:30:36.593Z" }, + { url = "https://files.pythonhosted.org/packages/73/aa/28e40b8d6809a9b5075350a86779163f074d2b617c15d22343fce81918db/fonttools-4.61.1-cp313-cp313-win32.whl", hash = "sha256:4d7092bb38c53bbc78e9255a59158b150bcdc115a1e3b3ce0b5f267dc35dd63c", size = 2267821, upload-time = "2025-12-12T17:30:38.478Z" }, + { url = "https://files.pythonhosted.org/packages/1a/59/453c06d1d83dc0951b69ef692d6b9f1846680342927df54e9a1ca91c6f90/fonttools-4.61.1-cp313-cp313-win_amd64.whl", hash = "sha256:21e7c8d76f62ab13c9472ccf74515ca5b9a761d1bde3265152a6dc58700d895b", size = 2318169, upload-time = "2025-12-12T17:30:40.951Z" }, + { url = "https://files.pythonhosted.org/packages/32/8f/4e7bf82c0cbb738d3c2206c920ca34ca74ef9dabde779030145d28665104/fonttools-4.61.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fff4f534200a04b4a36e7ae3cb74493afe807b517a09e99cb4faa89a34ed6ecd", size = 2846094, upload-time = "2025-12-12T17:30:43.511Z" }, + { url = "https://files.pythonhosted.org/packages/71/09/d44e45d0a4f3a651f23a1e9d42de43bc643cce2971b19e784cc67d823676/fonttools-4.61.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:d9203500f7c63545b4ce3799319fe4d9feb1a1b89b28d3cb5abd11b9dd64147e", size = 2396589, upload-time = "2025-12-12T17:30:45.681Z" }, + { url = "https://files.pythonhosted.org/packages/89/18/58c64cafcf8eb677a99ef593121f719e6dcbdb7d1c594ae5a10d4997ca8a/fonttools-4.61.1-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fa646ecec9528bef693415c79a86e733c70a4965dd938e9a226b0fc64c9d2e6c", size = 4877892, upload-time = "2025-12-12T17:30:47.709Z" }, + { url = "https://files.pythonhosted.org/packages/8a/ec/9e6b38c7ba1e09eb51db849d5450f4c05b7e78481f662c3b79dbde6f3d04/fonttools-4.61.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:11f35ad7805edba3aac1a3710d104592df59f4b957e30108ae0ba6c10b11dd75", size = 4972884, upload-time = "2025-12-12T17:30:49.656Z" }, + { url = "https://files.pythonhosted.org/packages/5e/87/b5339da8e0256734ba0dbbf5b6cdebb1dd79b01dc8c270989b7bcd465541/fonttools-4.61.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b931ae8f62db78861b0ff1ac017851764602288575d65b8e8ff1963fed419063", size = 4924405, upload-time = "2025-12-12T17:30:51.735Z" }, + { url = "https://files.pythonhosted.org/packages/0b/47/e3409f1e1e69c073a3a6fd8cb886eb18c0bae0ee13db2c8d5e7f8495e8b7/fonttools-4.61.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b148b56f5de675ee16d45e769e69f87623a4944f7443850bf9a9376e628a89d2", size = 5035553, upload-time = "2025-12-12T17:30:54.823Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b6/1f6600161b1073a984294c6c031e1a56ebf95b6164249eecf30012bb2e38/fonttools-4.61.1-cp314-cp314-win32.whl", hash = "sha256:9b666a475a65f4e839d3d10473fad6d47e0a9db14a2f4a224029c5bfde58ad2c", size = 2271915, upload-time = "2025-12-12T17:30:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/52/7b/91e7b01e37cc8eb0e1f770d08305b3655e4f002fc160fb82b3390eabacf5/fonttools-4.61.1-cp314-cp314-win_amd64.whl", hash = "sha256:4f5686e1fe5fce75d82d93c47a438a25bf0d1319d2843a926f741140b2b16e0c", size = 2323487, upload-time = "2025-12-12T17:30:59.804Z" }, + { url = "https://files.pythonhosted.org/packages/39/5c/908ad78e46c61c3e3ed70c3b58ff82ab48437faf84ec84f109592cabbd9f/fonttools-4.61.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:e76ce097e3c57c4bcb67c5aa24a0ecdbd9f74ea9219997a707a4061fbe2707aa", size = 2929571, upload-time = "2025-12-12T17:31:02.574Z" }, + { url = "https://files.pythonhosted.org/packages/bd/41/975804132c6dea64cdbfbaa59f3518a21c137a10cccf962805b301ac6ab2/fonttools-4.61.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:9cfef3ab326780c04d6646f68d4b4742aae222e8b8ea1d627c74e38afcbc9d91", size = 2435317, upload-time = "2025-12-12T17:31:04.974Z" }, + { url = "https://files.pythonhosted.org/packages/b0/5a/aef2a0a8daf1ebaae4cfd83f84186d4a72ee08fd6a8451289fcd03ffa8a4/fonttools-4.61.1-cp314-cp314t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a75c301f96db737e1c5ed5fd7d77d9c34466de16095a266509e13da09751bd19", size = 4882124, upload-time = "2025-12-12T17:31:07.456Z" }, + { url = "https://files.pythonhosted.org/packages/80/33/d6db3485b645b81cea538c9d1c9219d5805f0877fda18777add4671c5240/fonttools-4.61.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:91669ccac46bbc1d09e9273546181919064e8df73488ea087dcac3e2968df9ba", size = 5100391, upload-time = "2025-12-12T17:31:09.732Z" }, + { url = "https://files.pythonhosted.org/packages/6c/d6/675ba631454043c75fcf76f0ca5463eac8eb0666ea1d7badae5fea001155/fonttools-4.61.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c33ab3ca9d3ccd581d58e989d67554e42d8d4ded94ab3ade3508455fe70e65f7", size = 4978800, upload-time = "2025-12-12T17:31:11.681Z" }, + { url = "https://files.pythonhosted.org/packages/7f/33/d3ec753d547a8d2bdaedd390d4a814e8d5b45a093d558f025c6b990b554c/fonttools-4.61.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:664c5a68ec406f6b1547946683008576ef8b38275608e1cee6c061828171c118", size = 5006426, upload-time = "2025-12-12T17:31:13.764Z" }, + { url = "https://files.pythonhosted.org/packages/b4/40/cc11f378b561a67bea850ab50063366a0d1dd3f6d0a30ce0f874b0ad5664/fonttools-4.61.1-cp314-cp314t-win32.whl", hash = "sha256:aed04cabe26f30c1647ef0e8fbb207516fd40fe9472e9439695f5c6998e60ac5", size = 2335377, upload-time = "2025-12-12T17:31:16.49Z" }, + { url = "https://files.pythonhosted.org/packages/e4/ff/c9a2b66b39f8628531ea58b320d66d951267c98c6a38684daa8f50fb02f8/fonttools-4.61.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2180f14c141d2f0f3da43f3a81bc8aa4684860f6b0e6f9e165a4831f24e6a23b", size = 2400613, upload-time = "2025-12-12T17:31:18.769Z" }, + { url = "https://files.pythonhosted.org/packages/c7/4e/ce75a57ff3aebf6fc1f4e9d508b8e5810618a33d900ad6c19eb30b290b97/fonttools-4.61.1-py3-none-any.whl", hash = "sha256:17d2bf5d541add43822bcf0c43d7d847b160c9bb01d15d5007d84e2217aaa371", size = 1148996, upload-time = "2025-12-12T17:31:21.03Z" }, ] [[package]] @@ -838,14 +663,6 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/70/f0/be10ed5d7721ed2317d7feb59e167603217156c2a6d57f128523e24e673d/gevent-24.10.3.tar.gz", hash = "sha256:aa7ee1bd5cabb2b7ef35105f863b386c8d5e332f754b60cfc354148bd70d35d1", size = 6108837, upload-time = "2024-10-18T16:06:25.867Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/6f/a2100e7883c7bdfc2b45cb60b310ca748762a21596258b9dd01c5c093dbc/gevent-24.10.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:d7a1ad0f2da582f5bd238bca067e1c6c482c30c15a6e4d14aaa3215cbb2232f3", size = 3014382, upload-time = "2024-10-18T15:37:34.041Z" }, - { url = "https://files.pythonhosted.org/packages/7a/b1/460e4884ed6185d9eb9c4c2e9639d2b254197e46513301c0f63dec22dc90/gevent-24.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4e526fdc279c655c1e809b0c34b45844182c2a6b219802da5e411bd2cf5a8ad", size = 4853460, upload-time = "2024-10-18T16:19:39.515Z" }, - { url = "https://files.pythonhosted.org/packages/ca/f6/7ded98760d381229183ecce8db2edcce96f13e23807d31a90c66dae85304/gevent-24.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:57a5c4e0bdac482c5f02f240d0354e61362df73501ef6ebafce8ef635cad7527", size = 4977636, upload-time = "2024-10-18T16:18:45.464Z" }, - { url = "https://files.pythonhosted.org/packages/7d/21/7b928e6029eedb93ef94fc0aee701f497af2e601f0ec00aac0e72e3f450e/gevent-24.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d67daed8383326dc8b5e58d88e148d29b6b52274a489e383530b0969ae7b9cb9", size = 5058031, upload-time = "2024-10-18T16:23:10.719Z" }, - { url = "https://files.pythonhosted.org/packages/00/98/12c03fd004fbeeca01276ffc589f5a368fd741d02582ab7006d1bdef57e7/gevent-24.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e24ffea72e27987979c009536fd0868e52239b44afe6cf7135ce8aafd0f108e", size = 6683694, upload-time = "2024-10-18T15:59:35.475Z" }, - { url = "https://files.pythonhosted.org/packages/64/4c/ea14d971452d3da09e49267e052d8312f112c7835120aed78d22ef14efee/gevent-24.10.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c1d80090485da1ea3d99205fe97908b31188c1f4857f08b333ffaf2de2e89d18", size = 5286063, upload-time = "2024-10-18T16:38:24.113Z" }, - { url = "https://files.pythonhosted.org/packages/39/3f/397efff27e637d7306caa00d1560512c44028c25c70be1e72c46b79b1b66/gevent-24.10.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f0c129f81d60cda614acb4b0c5731997ca05b031fb406fcb58ad53a7ade53b13", size = 6817462, upload-time = "2024-10-18T16:02:48.427Z" }, - { url = "https://files.pythonhosted.org/packages/aa/5d/19939eaa7c5b7c0f37e0a0665a911ddfe1e35c25c512446fc356a065c16e/gevent-24.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:26ca7a6b42d35129617025ac801135118333cad75856ffc3217b38e707383eba", size = 1566631, upload-time = "2024-10-18T16:08:38.489Z" }, { url = "https://files.pythonhosted.org/packages/6e/01/1be5cf013826d8baae235976d6a94f3628014fd2db7c071aeec13f82b4d1/gevent-24.10.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:68c3a0d8402755eba7f69022e42e8021192a721ca8341908acc222ea597029b6", size = 2966909, upload-time = "2024-10-18T15:37:31.43Z" }, { url = "https://files.pythonhosted.org/packages/fe/3e/7fa9ab023f24d8689e2c77951981f8ea1f25089e0349a0bf8b35ee9b9277/gevent-24.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d850a453d66336272be4f1d3a8126777f3efdaea62d053b4829857f91e09755", size = 4913247, upload-time = "2024-10-18T16:19:41.792Z" }, { url = "https://files.pythonhosted.org/packages/db/63/6e40eaaa3c2abd1561faff11dc3e6781f8c25e975354b8835762834415af/gevent-24.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8e58ee3723f1fbe07d66892f1caa7481c306f653a6829b6fd16cb23d618a5915", size = 5049036, upload-time = "2024-10-18T16:18:47.419Z" }, @@ -870,7 +687,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a3/96/cc5f6ecba032a45fc312fe0db2908a893057fd81361eea93845d6c325556/gevent-24.10.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:1c3a828b033fb02b7c31da4d75014a1f82e6c072fc0523456569a57f8b025861", size = 5484356, upload-time = "2024-10-18T16:38:31.709Z" }, { url = "https://files.pythonhosted.org/packages/7c/97/e680b2b2f0c291ae4db9813ffbf02c22c2a0f14c8f1a613971385e29ef67/gevent-24.10.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:f2ae3efbbd120cdf4a68b7abc27a37e61e6f443c5a06ec2c6ad94c37cd8471ec", size = 6903191, upload-time = "2024-10-18T16:02:53.888Z" }, { url = "https://files.pythonhosted.org/packages/1b/1c/b4181957da062d1c060974ec6cb798cc24aeeb28e8cd2ece84eb4b4991f7/gevent-24.10.3-cp313-cp313-win_amd64.whl", hash = "sha256:9e1210334a9bc9f76c3d008e0785ca62214f8a54e1325f6c2ecab3b6a572a015", size = 1545117, upload-time = "2024-10-18T15:45:47.375Z" }, - { url = "https://files.pythonhosted.org/packages/89/2b/bf4af9950b8f9abd5b4025858f6311930de550e3498bbfeb47c914701a1d/gevent-24.10.3-pp310-pypy310_pp73-macosx_11_0_universal2.whl", hash = "sha256:e534e6a968d74463b11de6c9c67f4b4bf61775fb00f2e6e0f7fcdd412ceade18", size = 1271541, upload-time = "2024-10-18T15:37:53.146Z" }, ] [[package]] @@ -885,19 +701,6 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/8c/14/d4eddae757de44985718a9e38d9e6f2a923d764ed97d0f1cbc1a8aa2b0ef/geventhttpclient-2.3.1.tar.gz", hash = "sha256:b40ddac8517c456818942c7812f555f84702105c82783238c9fcb8dc12675185", size = 69345, upload-time = "2024-04-18T21:39:50.83Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/a5/5e49d6a581b3f1399425e22961c6e341e90c12fa2193ed0adee9afbd864c/geventhttpclient-2.3.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:da22ab7bf5af4ba3d07cffee6de448b42696e53e7ac1fe97ed289037733bf1c2", size = 71729, upload-time = "2024-04-18T21:38:06.866Z" }, - { url = "https://files.pythonhosted.org/packages/eb/23/4ff584e5f344dae64b5bc588b65c4ea81083f9d662b9f64cf5f28e5ae9cc/geventhttpclient-2.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2399e3d4e2fae8bbd91756189da6e9d84adf8f3eaace5eef0667874a705a29f8", size = 52062, upload-time = "2024-04-18T21:38:08.433Z" }, - { url = "https://files.pythonhosted.org/packages/bb/60/6bd8badb97b31a49f4c2b79466abce208a97dad95d447893c7546063fc8a/geventhttpclient-2.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d3e33e87d0d5b9f5782c4e6d3cb7e3592fea41af52713137d04776df7646d71b", size = 51645, upload-time = "2024-04-18T21:38:10.139Z" }, - { url = "https://files.pythonhosted.org/packages/e1/62/47d431bf05f74aa683d63163a11432bda8f576c86dec8c3bc9d6a156ee03/geventhttpclient-2.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c071db313866c3d0510feb6c0f40ec086ccf7e4a845701b6316c82c06e8b9b29", size = 117838, upload-time = "2024-04-18T21:38:12.036Z" }, - { url = "https://files.pythonhosted.org/packages/6c/8b/e7c9ae813bb41883a96ad9afcf86465219c3bb682daa8b09448481edef8a/geventhttpclient-2.3.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f36f0c6ef88a27e60af8369d9c2189fe372c6f2943182a7568e0f2ad33bb69f1", size = 123272, upload-time = "2024-04-18T21:38:13.704Z" }, - { url = "https://files.pythonhosted.org/packages/4d/26/71e9b2526009faadda9f588dac04f8bf837a5b97628ab44145efc3fa796e/geventhttpclient-2.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c4624843c03a5337282a42247d987c2531193e57255ee307b36eeb4f243a0c21", size = 114319, upload-time = "2024-04-18T21:38:15.097Z" }, - { url = "https://files.pythonhosted.org/packages/34/8c/1da2960293c42b7a6b01dbe3204b569e4cdb55b8289cb1c7154826500f19/geventhttpclient-2.3.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d614573621ba827c417786057e1e20e9f96c4f6b3878c55b1b7b54e1026693bc", size = 112705, upload-time = "2024-04-18T21:38:17.005Z" }, - { url = "https://files.pythonhosted.org/packages/a7/a1/4d08ecf0f213fdc63f78a217f87c07c1cb9891e68cdf74c8cbca76298bdb/geventhttpclient-2.3.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5d51330a40ac9762879d0e296c279c1beae8cfa6484bb196ac829242c416b709", size = 121236, upload-time = "2024-04-18T21:38:18.831Z" }, - { url = "https://files.pythonhosted.org/packages/4f/f7/42ece3e1f54602c518d74364a214da3b35b6be267b335564b7e9f0d37705/geventhttpclient-2.3.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bc9f2162d4e8cb86bb5322d99bfd552088a3eacd540a841298f06bb8bc1f1f03", size = 117859, upload-time = "2024-04-18T21:38:20.917Z" }, - { url = "https://files.pythonhosted.org/packages/1f/8e/de026b3697bffe5fa1a4938a3882107e378eea826905acf8e46c69b71ffd/geventhttpclient-2.3.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:06e59d3397e63c65ecc7a7561a5289f0cf2e2c2252e29632741e792f57f5d124", size = 127268, upload-time = "2024-04-18T21:38:22.676Z" }, - { url = "https://files.pythonhosted.org/packages/54/bf/1ee99a322467e6825a24612d306a46ca94b51088170d1b5de0df1c82ab2a/geventhttpclient-2.3.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4436eef515b3e0c1d4a453ae32e047290e780a623c1eddb11026ae9d5fb03d42", size = 116426, upload-time = "2024-04-18T21:38:24.228Z" }, - { url = "https://files.pythonhosted.org/packages/72/54/10c8ec745b3dcbfd52af62977fec85829749c0325e1a5429d050a4b45e75/geventhttpclient-2.3.1-cp310-cp310-win32.whl", hash = "sha256:5d1cf7d8a4f8e15cc8fd7d88ac4cdb058d6274203a42587e594cc9f0850ac862", size = 47599, upload-time = "2024-04-18T21:38:26.385Z" }, - { url = "https://files.pythonhosted.org/packages/da/0d/36a47cdeaa83c3b4efdbd18d77720fa27dc40600998f4dedd7c4a1259862/geventhttpclient-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:4deaebc121036f7ea95430c2d0f80ab085b15280e6ab677a6360b70e57020e7f", size = 48302, upload-time = "2024-04-18T21:38:28.297Z" }, { url = "https://files.pythonhosted.org/packages/56/ad/1fcbbea0465f04d4425960e3737d4d8ae6407043cfc88688fb17b9064160/geventhttpclient-2.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f0ae055b9ce1704f2ce72c0847df28f4e14dbb3eea79256cda6c909d82688ea3", size = 71733, upload-time = "2024-04-18T21:38:30.357Z" }, { url = "https://files.pythonhosted.org/packages/06/1a/10e547adb675beea407ff7117ecb4e5063534569ac14bb4360279d2888dd/geventhttpclient-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f087af2ac439495b5388841d6f3c4de8d2573ca9870593d78f7b554aa5cfa7f5", size = 52060, upload-time = "2024-04-18T21:38:32.561Z" }, { url = "https://files.pythonhosted.org/packages/e0/c0/9960ac6e8818a00702743cd2a9637d6f26909ac7ac59ca231f446e367b20/geventhttpclient-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:76c367d175810facfe56281e516c9a5a4a191eff76641faaa30aa33882ed4b2f", size = 51649, upload-time = "2024-04-18T21:38:34.265Z" }, @@ -924,11 +727,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ac/2f/b7fd96e9cfa9d9719b0c9feb50b4cbb341d1940e34fd3305006efa8c3e33/geventhttpclient-2.3.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:25d255383d3d6a6fbd643bb51ae1a7e4f6f7b0dbd5f3225b537d0bd0432eaf39", size = 117758, upload-time = "2024-04-18T21:39:11.287Z" }, { url = "https://files.pythonhosted.org/packages/fb/e0/1384c9a76379ab257b75df92283797861dcae592dd98e471df254f87c635/geventhttpclient-2.3.1-cp312-cp312-win32.whl", hash = "sha256:ad0b507e354d2f398186dcb12fe526d0594e7c9387b514fb843f7a14fdf1729a", size = 47595, upload-time = "2024-04-18T21:39:12.535Z" }, { url = "https://files.pythonhosted.org/packages/54/e3/6b8dbb24e3941e20abbe7736e59290c5d4182057ea1d984d46c853208bcd/geventhttpclient-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:7924e0883bc2b177cfe27aa65af6bb9dd57f3e26905c7675a2d1f3ef69df7cca", size = 48271, upload-time = "2024-04-18T21:39:14.479Z" }, - { url = "https://files.pythonhosted.org/packages/ee/9f/251b1b7e665523137a8711f0f0029196cf18b57741135f01aea80a56f16c/geventhttpclient-2.3.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c31431e38df45b3c79bf3c9427c796adb8263d622bc6fa25e2f6ba916c2aad93", size = 49827, upload-time = "2024-04-18T21:39:36.14Z" }, - { url = "https://files.pythonhosted.org/packages/74/c7/ad4c23de669191e1c83cfa28c51d3b50fc246d72e1ee40d4d5b330532492/geventhttpclient-2.3.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:855ab1e145575769b180b57accb0573a77cd6a7392f40a6ef7bc9a4926ebd77b", size = 54017, upload-time = "2024-04-18T21:39:37.577Z" }, - { url = "https://files.pythonhosted.org/packages/04/7b/59fc8c8fbd10596abfc46dc103654e3d9676de64229d8eee4b0a4ac2e890/geventhttpclient-2.3.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a374aad77c01539e786d0c7829bec2eba034ccd45733c1bf9811ad18d2a8ecd", size = 58359, upload-time = "2024-04-18T21:39:39.437Z" }, - { url = "https://files.pythonhosted.org/packages/94/b7/743552b0ecda75458c83d55d62937e29c9ee9a42598f57d4025d5de70004/geventhttpclient-2.3.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c1e97460608304f400485ac099736fff3566d3d8db2038533d466f8cf5de5a", size = 54262, upload-time = "2024-04-18T21:39:40.866Z" }, - { url = "https://files.pythonhosted.org/packages/18/60/10f6215b6cc76b5845a7f4b9c3d1f47d7ecd84ce8769b1e27e0482d605d7/geventhttpclient-2.3.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:4f843f81ee44ba4c553a1b3f73115e0ad8f00044023c24db29f5b1df3da08465", size = 48343, upload-time = "2024-04-18T21:39:42.173Z" }, ] [[package]] @@ -937,15 +735,6 @@ version = "3.1.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/2f/ff/df5fede753cc10f6a5be0931204ea30c35fa2f2ea7a35b25bdaf4fe40e46/greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467", size = 186022, upload-time = "2024-09-20T18:21:04.506Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/25/90/5234a78dc0ef6496a6eb97b67a42a8e96742a56f7dc808cb954a85390448/greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563", size = 271235, upload-time = "2024-09-20T17:07:18.761Z" }, - { url = "https://files.pythonhosted.org/packages/7c/16/cd631fa0ab7d06ef06387135b7549fdcc77d8d859ed770a0d28e47b20972/greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83", size = 637168, upload-time = "2024-09-20T17:36:43.774Z" }, - { url = "https://files.pythonhosted.org/packages/2f/b1/aed39043a6fec33c284a2c9abd63ce191f4f1a07319340ffc04d2ed3256f/greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0", size = 648826, upload-time = "2024-09-20T17:39:16.921Z" }, - { url = "https://files.pythonhosted.org/packages/76/25/40e0112f7f3ebe54e8e8ed91b2b9f970805143efef16d043dfc15e70f44b/greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120", size = 644443, upload-time = "2024-09-20T17:44:21.896Z" }, - { url = "https://files.pythonhosted.org/packages/fb/2f/3850b867a9af519794784a7eeed1dd5bc68ffbcc5b28cef703711025fd0a/greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc", size = 643295, upload-time = "2024-09-20T17:08:37.951Z" }, - { url = "https://files.pythonhosted.org/packages/cf/69/79e4d63b9387b48939096e25115b8af7cd8a90397a304f92436bcb21f5b2/greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617", size = 599544, upload-time = "2024-09-20T17:08:27.894Z" }, - { url = "https://files.pythonhosted.org/packages/46/1d/44dbcb0e6c323bd6f71b8c2f4233766a5faf4b8948873225d34a0b7efa71/greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7", size = 1125456, upload-time = "2024-09-20T17:44:11.755Z" }, - { url = "https://files.pythonhosted.org/packages/e0/1d/a305dce121838d0278cee39d5bb268c657f10a5363ae4b726848f833f1bb/greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6", size = 1149111, upload-time = "2024-09-20T17:09:22.104Z" }, - { url = "https://files.pythonhosted.org/packages/96/28/d62835fb33fb5652f2e98d34c44ad1a0feacc8b1d3f1aecab035f51f267d/greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80", size = 298392, upload-time = "2024-09-20T17:28:51.988Z" }, { url = "https://files.pythonhosted.org/packages/28/62/1c2665558618553c42922ed47a4e6d6527e2fa3516a8256c2f431c5d0441/greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70", size = 272479, upload-time = "2024-09-20T17:07:22.332Z" }, { url = "https://files.pythonhosted.org/packages/76/9d/421e2d5f07285b6e4e3a676b016ca781f63cfe4a0cd8eaecf3fd6f7a71ae/greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159", size = 640404, upload-time = "2024-09-20T17:36:45.588Z" }, { url = "https://files.pythonhosted.org/packages/e5/de/6e05f5c59262a584e502dd3d261bbdd2c97ab5416cc9c0b91ea38932a901/greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e", size = 652813, upload-time = "2024-09-20T17:39:19.052Z" }, @@ -996,11 +785,11 @@ wheels = [ [[package]] name = "h11" -version = "0.14.0" +version = "0.16.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f5/38/3af3d3633a34a3316095b39c8e8fb4853a28a536e55d347bd8d8e9a14b03/h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d", size = 100418, upload-time = "2022-09-25T15:40:01.519Z" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761", size = 58259, upload-time = "2022-09-25T15:39:59.68Z" }, + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, ] [[package]] @@ -1020,15 +809,15 @@ wheels = [ [[package]] name = "httpcore" -version = "1.0.2" +version = "1.0.9" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/18/56/78a38490b834fa0942cbe6d39bd8a7fd76316e8940319305a98d2b320366/httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535", size = 81036, upload-time = "2023-11-10T13:37:42.496Z" } +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/56/ba/78b0a99c4da0ff8b0f59defa2f13ca4668189b134bd9840b6202a93d9a0f/httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7", size = 76943, upload-time = "2023-11-10T13:37:40.937Z" }, + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, ] [[package]] @@ -1037,13 +826,6 @@ version = "0.6.4" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/a7/9a/ce5e1f7e131522e6d3426e8e7a490b3a01f39a6696602e1c4f33f9e94277/httptools-0.6.4.tar.gz", hash = "sha256:4e93eee4add6493b59a5c514da98c939b244fce4a0d8879cd3f466562f4b7d5c", size = 240639, upload-time = "2024-10-16T19:45:08.902Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/6f/972f8eb0ea7d98a1c6be436e2142d51ad2a64ee18e02b0e7ff1f62171ab1/httptools-0.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3c73ce323711a6ffb0d247dcd5a550b8babf0f757e86a52558fe5b86d6fefcc0", size = 198780, upload-time = "2024-10-16T19:44:06.882Z" }, - { url = "https://files.pythonhosted.org/packages/6a/b0/17c672b4bc5c7ba7f201eada4e96c71d0a59fbc185e60e42580093a86f21/httptools-0.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:345c288418f0944a6fe67be8e6afa9262b18c7626c3ef3c28adc5eabc06a68da", size = 103297, upload-time = "2024-10-16T19:44:08.129Z" }, - { url = "https://files.pythonhosted.org/packages/92/5e/b4a826fe91971a0b68e8c2bd4e7db3e7519882f5a8ccdb1194be2b3ab98f/httptools-0.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deee0e3343f98ee8047e9f4c5bc7cedbf69f5734454a94c38ee829fb2d5fa3c1", size = 443130, upload-time = "2024-10-16T19:44:09.45Z" }, - { url = "https://files.pythonhosted.org/packages/b0/51/ce61e531e40289a681a463e1258fa1e05e0be54540e40d91d065a264cd8f/httptools-0.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca80b7485c76f768a3bc83ea58373f8db7b015551117375e4918e2aa77ea9b50", size = 442148, upload-time = "2024-10-16T19:44:11.539Z" }, - { url = "https://files.pythonhosted.org/packages/ea/9e/270b7d767849b0c96f275c695d27ca76c30671f8eb8cc1bab6ced5c5e1d0/httptools-0.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:90d96a385fa941283ebd231464045187a31ad932ebfa541be8edf5b3c2328959", size = 415949, upload-time = "2024-10-16T19:44:13.388Z" }, - { url = "https://files.pythonhosted.org/packages/81/86/ced96e3179c48c6f656354e106934e65c8963d48b69be78f355797f0e1b3/httptools-0.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:59e724f8b332319e2875efd360e61ac07f33b492889284a3e05e6d13746876f4", size = 417591, upload-time = "2024-10-16T19:44:15.258Z" }, - { url = "https://files.pythonhosted.org/packages/75/73/187a3f620ed3175364ddb56847d7a608a6fc42d551e133197098c0143eca/httptools-0.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:c26f313951f6e26147833fc923f78f95604bbec812a43e5ee37f26dc9e5a686c", size = 88344, upload-time = "2024-10-16T19:44:16.54Z" }, { url = "https://files.pythonhosted.org/packages/7b/26/bb526d4d14c2774fe07113ca1db7255737ffbb119315839af2065abfdac3/httptools-0.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f47f8ed67cc0ff862b84a1189831d1d33c963fb3ce1ee0c65d3b0cbe7b711069", size = 199029, upload-time = "2024-10-16T19:44:18.427Z" }, { url = "https://files.pythonhosted.org/packages/a6/17/3e0d3e9b901c732987a45f4f94d4e2c62b89a041d93db89eafb262afd8d5/httptools-0.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0614154d5454c21b6410fdf5262b4a3ddb0f53f1e1721cfd59d55f32138c578a", size = 103492, upload-time = "2024-10-16T19:44:19.515Z" }, { url = "https://files.pythonhosted.org/packages/b7/24/0fe235d7b69c42423c7698d086d4db96475f9b50b6ad26a718ef27a0bce6/httptools-0.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8787367fbdfccae38e35abf7641dafc5310310a5987b689f4c32cc8cc3ee975", size = 462891, upload-time = "2024-10-16T19:44:21.067Z" }, @@ -1084,7 +866,7 @@ wheels = [ [[package]] name = "huggingface-hub" -version = "0.36.0" +version = "0.34.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "filelock" }, @@ -1096,9 +878,9 @@ dependencies = [ { name = "tqdm" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/63/4910c5fa9128fdadf6a9c5ac138e8b1b6cee4ca44bf7915bbfbce4e355ee/huggingface_hub-0.36.0.tar.gz", hash = "sha256:47b3f0e2539c39bf5cde015d63b72ec49baff67b6931c3d97f3f84532e2b8d25", size = 463358, upload-time = "2025-10-23T12:12:01.413Z" } +sdist = { url = "https://files.pythonhosted.org/packages/45/c9/bdbe19339f76d12985bc03572f330a01a93c04dffecaaea3061bdd7fb892/huggingface_hub-0.34.4.tar.gz", hash = "sha256:a4228daa6fb001be3f4f4bdaf9a0db00e1739235702848df00885c9b5742c85c", size = 459768, upload-time = "2025-08-08T09:14:52.365Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/bd/1a875e0d592d447cbc02805fd3fe0f497714d6a2583f59d14fa9ebad96eb/huggingface_hub-0.36.0-py3-none-any.whl", hash = "sha256:7bcc9ad17d5b3f07b57c78e79d527102d08313caa278a641993acddcb894548d", size = 566094, upload-time = "2025-10-23T12:11:59.557Z" }, + { url = "https://files.pythonhosted.org/packages/39/7b/bb06b061991107cd8783f300adff3e7b7f284e330fd82f507f2a1417b11d/huggingface_hub-0.34.4-py3-none-any.whl", hash = "sha256:9b365d781739c93ff90c359844221beef048403f1bc1f1c123c191257c3c890a", size = 561452, upload-time = "2025-08-08T09:14:50.159Z" }, ] [[package]] @@ -1115,11 +897,11 @@ wheels = [ [[package]] name = "idna" -version = "3.6" +version = "3.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bf/3f/ea4b9117521a1e9c50344b909be7886dd00a519552724809bb1f486986c2/idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca", size = 175426, upload-time = "2023-11-25T15:40:54.902Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/e7/a82b05cf63a603df6e68d59ae6a68bf5064484a0718ea5033660af4b54a9/idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f", size = 61567, upload-time = "2023-11-25T15:40:52.604Z" }, + { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, ] [[package]] @@ -1137,7 +919,7 @@ wheels = [ [[package]] name = "immich-ml" -version = "2.3.1" +version = "2.4.1" source = { editable = "." } dependencies = [ { name = "aiocache" }, @@ -1227,12 +1009,12 @@ requires-dist = [ { name = "gunicorn", specifier = ">=21.1.0" }, { name = "huggingface-hub", specifier = ">=0.20.1,<1.0" }, { name = "insightface", specifier = ">=0.7.3,<1.0" }, - { name = "numpy", specifier = "<2" }, - { name = "onnxruntime", marker = "extra == 'armnn'", specifier = ">=1.15.0,<2" }, - { name = "onnxruntime", marker = "extra == 'cpu'", specifier = ">=1.15.0,<2" }, - { name = "onnxruntime", marker = "extra == 'rknn'", specifier = ">=1.15.0,<2" }, - { name = "onnxruntime-gpu", marker = "extra == 'cuda'", specifier = ">=1.17.0,<2", index = "https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/" }, - { name = "onnxruntime-openvino", marker = "extra == 'openvino'", specifier = ">=1.17.1,<1.19.0" }, + { name = "numpy", specifier = ">=2.3.4" }, + { name = "onnxruntime", marker = "extra == 'armnn'", specifier = ">=1.23.2,<2" }, + { name = "onnxruntime", marker = "extra == 'cpu'", specifier = ">=1.23.2,<2" }, + { name = "onnxruntime", marker = "extra == 'rknn'", specifier = ">=1.23.2,<2" }, + { name = "onnxruntime-gpu", marker = "extra == 'cuda'", specifier = ">=1.23.2,<2" }, + { name = "onnxruntime-openvino", marker = "extra == 'openvino'", specifier = ">=1.23.0,<2" }, { name = "opencv-python-headless", specifier = ">=4.7.0.72,<5.0" }, { name = "orjson", specifier = ">=3.9.5" }, { name = "pillow", specifier = ">=9.5.0,<11.0" }, @@ -1306,18 +1088,15 @@ dependencies = [ { name = "albumentations" }, { name = "cython" }, { name = "easydict" }, - { name = "matplotlib", version = "3.8.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "matplotlib", version = "3.10.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "matplotlib" }, { name = "numpy" }, { name = "onnx" }, { name = "pillow" }, { name = "prettytable" }, { name = "requests" }, { name = "scikit-image" }, - { name = "scikit-learn", version = "1.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "scikit-learn", version = "1.7.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "scipy", version = "1.11.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "scipy", version = "1.16.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "scikit-learn" }, + { name = "scipy" }, { name = "tqdm" }, ] sdist = { url = "https://files.pythonhosted.org/packages/0b/8d/0f4af90999ca96cf8cb846eb5ae27c5ef5b390f9c090dd19e4fa76364c13/insightface-0.7.3.tar.gz", hash = "sha256:f191f719612ebb37018f41936814500544cd0f86e6fcd676c023f354c668ddf7", size = 439490, upload-time = "2023-04-02T08:01:54.541Z" } @@ -1358,21 +1137,6 @@ version = "1.4.5" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/b9/2d/226779e405724344fc678fcc025b812587617ea1a48b9442628b688e85ea/kiwisolver-1.4.5.tar.gz", hash = "sha256:e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec", size = 97552, upload-time = "2023-08-24T09:30:39.861Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f1/56/cb02dcefdaab40df636b91e703b172966b444605a0ea313549f3ffc05bd3/kiwisolver-1.4.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:05703cf211d585109fcd72207a31bb170a0f22144d68298dc5e61b3c946518af", size = 127397, upload-time = "2023-08-24T09:28:18.105Z" }, - { url = "https://files.pythonhosted.org/packages/0e/c1/d084f8edb26533a191415d5173157080837341f9a06af9dd1a75f727abb4/kiwisolver-1.4.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:146d14bebb7f1dc4d5fbf74f8a6cb15ac42baadee8912eb84ac0b3b2a3dc6ac3", size = 68125, upload-time = "2023-08-24T09:28:19.218Z" }, - { url = "https://files.pythonhosted.org/packages/23/11/6fb190bae4b279d712a834e7b1da89f6dcff6791132f7399aa28a57c3565/kiwisolver-1.4.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ef7afcd2d281494c0a9101d5c571970708ad911d028137cd558f02b851c08b4", size = 66211, upload-time = "2023-08-24T09:28:20.241Z" }, - { url = "https://files.pythonhosted.org/packages/b3/13/5e9e52feb33e9e063f76b2c5eb09cb977f5bba622df3210081bfb26ec9a3/kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9eaa8b117dc8337728e834b9c6e2611f10c79e38f65157c4c38e9400286f5cb1", size = 1637145, upload-time = "2023-08-24T09:28:21.439Z" }, - { url = "https://files.pythonhosted.org/packages/6f/40/4ab1fdb57fced80ce5903f04ae1aed7c1d5939dda4fd0c0aa526c12fe28a/kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec20916e7b4cbfb1f12380e46486ec4bcbaa91a9c448b97023fde0d5bbf9e4ff", size = 1617849, upload-time = "2023-08-24T09:28:23.004Z" }, - { url = "https://files.pythonhosted.org/packages/49/ca/61ef43bd0832c7253b370735b0c38972c140c8774889b884372a629a8189/kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39b42c68602539407884cf70d6a480a469b93b81b7701378ba5e2328660c847a", size = 1400921, upload-time = "2023-08-24T09:28:24.331Z" }, - { url = "https://files.pythonhosted.org/packages/68/6f/854f6a845c00b4257482468e08d8bc386f4929ee499206142378ba234419/kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa12042de0171fad672b6c59df69106d20d5596e4f87b5e8f76df757a7c399aa", size = 1513009, upload-time = "2023-08-24T09:28:25.636Z" }, - { url = "https://files.pythonhosted.org/packages/50/65/76f303377167d12eb7a9b423d6771b39fe5c4373e4a42f075805b1f581ae/kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a40773c71d7ccdd3798f6489aaac9eee213d566850a9533f8d26332d626b82c", size = 1444819, upload-time = "2023-08-24T09:28:27.547Z" }, - { url = "https://files.pythonhosted.org/packages/7e/ee/98cdf9dde129551467138b6e18cc1cc901e75ecc7ffb898c6f49609f33b1/kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:19df6e621f6d8b4b9c4d45f40a66839294ff2bb235e64d2178f7522d9170ac5b", size = 1817054, upload-time = "2023-08-24T09:28:28.839Z" }, - { url = "https://files.pythonhosted.org/packages/e6/5b/ab569016ec4abc7b496f6cb8a3ab511372c99feb6a23d948cda97e0db6da/kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:83d78376d0d4fd884e2c114d0621624b73d2aba4e2788182d286309ebdeed770", size = 1918613, upload-time = "2023-08-24T09:28:30.351Z" }, - { url = "https://files.pythonhosted.org/packages/93/ac/39b9f99d2474b1ac7af1ddfe5756ddf9b6a8f24c5f3a32cd4c010317fc6b/kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e391b1f0a8a5a10ab3b9bb6afcfd74f2175f24f8975fb87ecae700d1503cdee0", size = 1872650, upload-time = "2023-08-24T09:28:32.303Z" }, - { url = "https://files.pythonhosted.org/packages/40/5b/be568548266516b114d1776120281ea9236c732fb6032a1f8f3b1e5e921c/kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:852542f9481f4a62dbb5dd99e8ab7aedfeb8fb6342349a181d4036877410f525", size = 1827415, upload-time = "2023-08-24T09:28:34.141Z" }, - { url = "https://files.pythonhosted.org/packages/d4/80/c0c13d2a17a12937a19ef378bf35e94399fd171ed6ec05bcee0f038e1eaf/kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59edc41b24031bc25108e210c0def6f6c2191210492a972d585a06ff246bb79b", size = 1838094, upload-time = "2023-08-24T09:28:35.97Z" }, - { url = "https://files.pythonhosted.org/packages/70/d1/5ab93ee00ca5af708929cc12fbe665b6f1ed4ad58088e70dc00e87e0d107/kiwisolver-1.4.5-cp310-cp310-win32.whl", hash = "sha256:a6aa6315319a052b4ee378aa171959c898a6183f15c1e541821c5c59beaa0238", size = 46585, upload-time = "2023-08-24T09:28:37.326Z" }, - { url = "https://files.pythonhosted.org/packages/4a/a1/8a9c9be45c642fa12954855d8b3a02d9fd8551165a558835a19508fec2e6/kiwisolver-1.4.5-cp310-cp310-win_amd64.whl", hash = "sha256:d0ef46024e6a3d79c01ff13801cb19d0cad7fd859b15037aec74315540acc276", size = 56095, upload-time = "2023-08-24T09:28:38.325Z" }, { url = "https://files.pythonhosted.org/packages/2a/eb/9e099ad7c47c279995d2d20474e1821100a5f10f847739bd65b1c1f02442/kiwisolver-1.4.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:11863aa14a51fd6ec28688d76f1735f8f69ab1fabf388851a595d0721af042f5", size = 127403, upload-time = "2023-08-24T09:28:39.3Z" }, { url = "https://files.pythonhosted.org/packages/a6/94/695922e71288855fc7cace3bdb52edda9d7e50edba77abb0c9d7abb51e96/kiwisolver-1.4.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ab3919a9997ab7ef2fbbed0cc99bb28d3c13e6d4b1ad36e97e482558a91be90", size = 68156, upload-time = "2023-08-24T09:28:40.301Z" }, { url = "https://files.pythonhosted.org/packages/4a/fe/23d7fa78f7c66086d196406beb1fb2eaf629dd7adc01c3453033303d17fa/kiwisolver-1.4.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fcc700eadbbccbf6bc1bcb9dbe0786b4b1cb91ca0dcda336eef5c2beed37b797", size = 66166, upload-time = "2023-08-24T09:28:41.235Z" }, @@ -1407,16 +1171,82 @@ wheels = [ [[package]] name = "lazy-loader" -version = "0.3" +version = "0.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0e/3a/1630a735bfdf9eb857a3b9a53317a1e1658ea97a1b4b39dcb0f71dae81f8/lazy_loader-0.3.tar.gz", hash = "sha256:3b68898e34f5b2a29daaaac172c6555512d0f32074f147e2254e4a6d9d838f37", size = 12268, upload-time = "2023-06-30T21:12:55.362Z" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6f/6b/c875b30a1ba490860c93da4cabf479e03f584eba06fe5963f6f6644653d8/lazy_loader-0.4.tar.gz", hash = "sha256:47c75182589b91a4e1a85a136c074285a5ad4d9f39c63e0d7fb76391c4574cd1", size = 15431, upload-time = "2024-04-05T13:03:12.261Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/c3/65b3814e155836acacf720e5be3b5757130346670ac454fee29d3eda1381/lazy_loader-0.3-py3-none-any.whl", hash = "sha256:1e9e76ee8631e264c62ce10006718e80b2cfc74340d17d1031e0f84af7478554", size = 9087, upload-time = "2023-06-30T21:12:51.09Z" }, + { url = "https://files.pythonhosted.org/packages/83/60/d497a310bde3f01cb805196ac61b7ad6dc5dcf8dce66634dc34364b20b4f/lazy_loader-0.4-py3-none-any.whl", hash = "sha256:342aa8e14d543a154047afb4ba8ef17f5563baad3fc610d7b15b213b0f119efc", size = 12097, upload-time = "2024-04-05T13:03:10.514Z" }, +] + +[[package]] +name = "librt" +version = "0.7.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/93/e4/b59bdf1197fdf9888452ea4d2048cdad61aef85eb83e99dc52551d7fdc04/librt-0.7.4.tar.gz", hash = "sha256:3871af56c59864d5fd21d1ac001eb2fb3b140d52ba0454720f2e4a19812404ba", size = 145862, upload-time = "2025-12-15T16:52:43.862Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/64/44089b12d8b4714a7f0e2f33fb19285ba87702d4be0829f20b36ebeeee07/librt-0.7.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3485b9bb7dfa66167d5500ffdafdc35415b45f0da06c75eb7df131f3357b174a", size = 54709, upload-time = "2025-12-15T16:51:16.699Z" }, + { url = "https://files.pythonhosted.org/packages/26/ef/6fa39fb5f37002f7d25e0da4f24d41b457582beea9369eeb7e9e73db5508/librt-0.7.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:188b4b1a770f7f95ea035d5bbb9d7367248fc9d12321deef78a269ebf46a5729", size = 56663, upload-time = "2025-12-15T16:51:17.856Z" }, + { url = "https://files.pythonhosted.org/packages/9d/e4/cbaca170a13bee2469c90df9e47108610b4422c453aea1aec1779ac36c24/librt-0.7.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1b668b1c840183e4e38ed5a99f62fac44c3a3eef16870f7f17cfdfb8b47550ed", size = 161703, upload-time = "2025-12-15T16:51:19.421Z" }, + { url = "https://files.pythonhosted.org/packages/d0/32/0b2296f9cc7e693ab0d0835e355863512e5eac90450c412777bd699c76ae/librt-0.7.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0e8f864b521f6cfedb314d171630f827efee08f5c3462bcbc2244ab8e1768cd6", size = 171027, upload-time = "2025-12-15T16:51:20.721Z" }, + { url = "https://files.pythonhosted.org/packages/d8/33/c70b6d40f7342716e5f1353c8da92d9e32708a18cbfa44897a93ec2bf879/librt-0.7.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4df7c9def4fc619a9c2ab402d73a0c5b53899abe090e0100323b13ccb5a3dd82", size = 184700, upload-time = "2025-12-15T16:51:22.272Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c8/555c405155da210e4c4113a879d378f54f850dbc7b794e847750a8fadd43/librt-0.7.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f79bc3595b6ed159a1bf0cdc70ed6ebec393a874565cab7088a219cca14da727", size = 180719, upload-time = "2025-12-15T16:51:23.561Z" }, + { url = "https://files.pythonhosted.org/packages/6b/88/34dc1f1461c5613d1b73f0ecafc5316cc50adcc1b334435985b752ed53e5/librt-0.7.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77772a4b8b5f77d47d883846928c36d730b6e612a6388c74cba33ad9eb149c11", size = 174535, upload-time = "2025-12-15T16:51:25.031Z" }, + { url = "https://files.pythonhosted.org/packages/b6/5a/f3fafe80a221626bcedfa9fe5abbf5f04070989d44782f579b2d5920d6d0/librt-0.7.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:064a286e6ab0b4c900e228ab4fa9cb3811b4b83d3e0cc5cd816b2d0f548cb61c", size = 195236, upload-time = "2025-12-15T16:51:26.328Z" }, + { url = "https://files.pythonhosted.org/packages/d8/77/5c048d471ce17f4c3a6e08419be19add4d291e2f7067b877437d482622ac/librt-0.7.4-cp311-cp311-win32.whl", hash = "sha256:42da201c47c77b6cc91fc17e0e2b330154428d35d6024f3278aa2683e7e2daf2", size = 42930, upload-time = "2025-12-15T16:51:27.853Z" }, + { url = "https://files.pythonhosted.org/packages/fb/3b/514a86305a12c3d9eac03e424b07cd312c7343a9f8a52719aa079590a552/librt-0.7.4-cp311-cp311-win_amd64.whl", hash = "sha256:d31acb5886c16ae1711741f22504195af46edec8315fe69b77e477682a87a83e", size = 49240, upload-time = "2025-12-15T16:51:29.037Z" }, + { url = "https://files.pythonhosted.org/packages/ba/01/3b7b1914f565926b780a734fac6e9a4d2c7aefe41f4e89357d73697a9457/librt-0.7.4-cp311-cp311-win_arm64.whl", hash = "sha256:114722f35093da080a333b3834fff04ef43147577ed99dd4db574b03a5f7d170", size = 42613, upload-time = "2025-12-15T16:51:30.194Z" }, + { url = "https://files.pythonhosted.org/packages/f3/e7/b805d868d21f425b7e76a0ea71a2700290f2266a4f3c8357fcf73efc36aa/librt-0.7.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7dd3b5c37e0fb6666c27cf4e2c88ae43da904f2155c4cfc1e5a2fdce3b9fcf92", size = 55688, upload-time = "2025-12-15T16:51:31.571Z" }, + { url = "https://files.pythonhosted.org/packages/59/5e/69a2b02e62a14cfd5bfd9f1e9adea294d5bcfeea219c7555730e5d068ee4/librt-0.7.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9c5de1928c486201b23ed0cc4ac92e6e07be5cd7f3abc57c88a9cf4f0f32108", size = 57141, upload-time = "2025-12-15T16:51:32.714Z" }, + { url = "https://files.pythonhosted.org/packages/6e/6b/05dba608aae1272b8ea5ff8ef12c47a4a099a04d1e00e28a94687261d403/librt-0.7.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:078ae52ffb3f036396cc4aed558e5b61faedd504a3c1f62b8ae34bf95ae39d94", size = 165322, upload-time = "2025-12-15T16:51:33.986Z" }, + { url = "https://files.pythonhosted.org/packages/8f/bc/199533d3fc04a4cda8d7776ee0d79955ab0c64c79ca079366fbc2617e680/librt-0.7.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce58420e25097b2fc201aef9b9f6d65df1eb8438e51154e1a7feb8847e4a55ab", size = 174216, upload-time = "2025-12-15T16:51:35.384Z" }, + { url = "https://files.pythonhosted.org/packages/62/ec/09239b912a45a8ed117cb4a6616d9ff508f5d3131bd84329bf2f8d6564f1/librt-0.7.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b719c8730c02a606dc0e8413287e8e94ac2d32a51153b300baf1f62347858fba", size = 189005, upload-time = "2025-12-15T16:51:36.687Z" }, + { url = "https://files.pythonhosted.org/packages/46/2e/e188313d54c02f5b0580dd31476bb4b0177514ff8d2be9f58d4a6dc3a7ba/librt-0.7.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3749ef74c170809e6dee68addec9d2458700a8de703de081c888e92a8b015cf9", size = 183960, upload-time = "2025-12-15T16:51:37.977Z" }, + { url = "https://files.pythonhosted.org/packages/eb/84/f1d568d254518463d879161d3737b784137d236075215e56c7c9be191cee/librt-0.7.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b35c63f557653c05b5b1b6559a074dbabe0afee28ee2a05b6c9ba21ad0d16a74", size = 177609, upload-time = "2025-12-15T16:51:40.584Z" }, + { url = "https://files.pythonhosted.org/packages/5d/43/060bbc1c002f0d757c33a1afe6bf6a565f947a04841139508fc7cef6c08b/librt-0.7.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1ef704e01cb6ad39ad7af668d51677557ca7e5d377663286f0ee1b6b27c28e5f", size = 199269, upload-time = "2025-12-15T16:51:41.879Z" }, + { url = "https://files.pythonhosted.org/packages/ff/7f/708f8f02d8012ee9f366c07ea6a92882f48bd06cc1ff16a35e13d0fbfb08/librt-0.7.4-cp312-cp312-win32.whl", hash = "sha256:c66c2b245926ec15188aead25d395091cb5c9df008d3b3207268cd65557d6286", size = 43186, upload-time = "2025-12-15T16:51:43.149Z" }, + { url = "https://files.pythonhosted.org/packages/f1/a5/4e051b061c8b2509be31b2c7ad4682090502c0a8b6406edcf8c6b4fe1ef7/librt-0.7.4-cp312-cp312-win_amd64.whl", hash = "sha256:71a56f4671f7ff723451f26a6131754d7c1809e04e22ebfbac1db8c9e6767a20", size = 49455, upload-time = "2025-12-15T16:51:44.336Z" }, + { url = "https://files.pythonhosted.org/packages/d0/d2/90d84e9f919224a3c1f393af1636d8638f54925fdc6cd5ee47f1548461e5/librt-0.7.4-cp312-cp312-win_arm64.whl", hash = "sha256:419eea245e7ec0fe664eb7e85e7ff97dcdb2513ca4f6b45a8ec4a3346904f95a", size = 42828, upload-time = "2025-12-15T16:51:45.498Z" }, + { url = "https://files.pythonhosted.org/packages/fe/4d/46a53ccfbb39fd0b493fd4496eb76f3ebc15bb3e45d8c2e695a27587edf5/librt-0.7.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d44a1b1ba44cbd2fc3cb77992bef6d6fdb1028849824e1dd5e4d746e1f7f7f0b", size = 55745, upload-time = "2025-12-15T16:51:46.636Z" }, + { url = "https://files.pythonhosted.org/packages/7f/2b/3ac7f5212b1828bf4f979cf87f547db948d3e28421d7a430d4db23346ce4/librt-0.7.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c9cab4b3de1f55e6c30a84c8cee20e4d3b2476f4d547256694a1b0163da4fe32", size = 57166, upload-time = "2025-12-15T16:51:48.219Z" }, + { url = "https://files.pythonhosted.org/packages/e8/99/6523509097cbe25f363795f0c0d1c6a3746e30c2994e25b5aefdab119b21/librt-0.7.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:2857c875f1edd1feef3c371fbf830a61b632fb4d1e57160bb1e6a3206e6abe67", size = 165833, upload-time = "2025-12-15T16:51:49.443Z" }, + { url = "https://files.pythonhosted.org/packages/fe/35/323611e59f8fe032649b4fb7e77f746f96eb7588fcbb31af26bae9630571/librt-0.7.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b370a77be0a16e1ad0270822c12c21462dc40496e891d3b0caf1617c8cc57e20", size = 174818, upload-time = "2025-12-15T16:51:51.015Z" }, + { url = "https://files.pythonhosted.org/packages/41/e6/40fb2bb21616c6e06b6a64022802228066e9a31618f493e03f6b9661548a/librt-0.7.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d05acd46b9a52087bfc50c59dfdf96a2c480a601e8898a44821c7fd676598f74", size = 189607, upload-time = "2025-12-15T16:51:52.671Z" }, + { url = "https://files.pythonhosted.org/packages/32/48/1b47c7d5d28b775941e739ed2bfe564b091c49201b9503514d69e4ed96d7/librt-0.7.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:70969229cb23d9c1a80e14225838d56e464dc71fa34c8342c954fc50e7516dee", size = 184585, upload-time = "2025-12-15T16:51:54.027Z" }, + { url = "https://files.pythonhosted.org/packages/75/a6/ee135dfb5d3b54d5d9001dbe483806229c6beac3ee2ba1092582b7efeb1b/librt-0.7.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4450c354b89dbb266730893862dbff06006c9ed5b06b6016d529b2bf644fc681", size = 178249, upload-time = "2025-12-15T16:51:55.248Z" }, + { url = "https://files.pythonhosted.org/packages/04/87/d5b84ec997338be26af982bcd6679be0c1db9a32faadab1cf4bb24f9e992/librt-0.7.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:adefe0d48ad35b90b6f361f6ff5a1bd95af80c17d18619c093c60a20e7a5b60c", size = 199851, upload-time = "2025-12-15T16:51:56.933Z" }, + { url = "https://files.pythonhosted.org/packages/86/63/ba1333bf48306fe398e3392a7427ce527f81b0b79d0d91618c4610ce9d15/librt-0.7.4-cp313-cp313-win32.whl", hash = "sha256:21ea710e96c1e050635700695095962a22ea420d4b3755a25e4909f2172b4ff2", size = 43249, upload-time = "2025-12-15T16:51:58.498Z" }, + { url = "https://files.pythonhosted.org/packages/f9/8a/de2c6df06cdfa9308c080e6b060fe192790b6a48a47320b215e860f0e98c/librt-0.7.4-cp313-cp313-win_amd64.whl", hash = "sha256:772e18696cf5a64afee908662fbcb1f907460ddc851336ee3a848ef7684c8e1e", size = 49417, upload-time = "2025-12-15T16:51:59.618Z" }, + { url = "https://files.pythonhosted.org/packages/31/66/8ee0949efc389691381ed686185e43536c20e7ad880c122dd1f31e65c658/librt-0.7.4-cp313-cp313-win_arm64.whl", hash = "sha256:52e34c6af84e12921748c8354aa6acf1912ca98ba60cdaa6920e34793f1a0788", size = 42824, upload-time = "2025-12-15T16:52:00.784Z" }, + { url = "https://files.pythonhosted.org/packages/74/81/6921e65c8708eb6636bbf383aa77e6c7dad33a598ed3b50c313306a2da9d/librt-0.7.4-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4f1ee004942eaaed6e06c087d93ebc1c67e9a293e5f6b9b5da558df6bf23dc5d", size = 55191, upload-time = "2025-12-15T16:52:01.97Z" }, + { url = "https://files.pythonhosted.org/packages/0d/d6/3eb864af8a8de8b39cc8dd2e9ded1823979a27795d72c4eea0afa8c26c9f/librt-0.7.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d854c6dc0f689bad7ed452d2a3ecff58029d80612d336a45b62c35e917f42d23", size = 56898, upload-time = "2025-12-15T16:52:03.356Z" }, + { url = "https://files.pythonhosted.org/packages/49/bc/b1d4c0711fdf79646225d576faee8747b8528a6ec1ceb6accfd89ade7102/librt-0.7.4-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:a4f7339d9e445280f23d63dea842c0c77379c4a47471c538fc8feedab9d8d063", size = 163725, upload-time = "2025-12-15T16:52:04.572Z" }, + { url = "https://files.pythonhosted.org/packages/2c/08/61c41cd8f0a6a41fc99ea78a2205b88187e45ba9800792410ed62f033584/librt-0.7.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:39003fc73f925e684f8521b2dbf34f61a5deb8a20a15dcf53e0d823190ce8848", size = 172469, upload-time = "2025-12-15T16:52:05.863Z" }, + { url = "https://files.pythonhosted.org/packages/8b/c7/4ee18b4d57f01444230bc18cf59103aeab8f8c0f45e84e0e540094df1df1/librt-0.7.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6bb15ee29d95875ad697d449fe6071b67f730f15a6961913a2b0205015ca0843", size = 186804, upload-time = "2025-12-15T16:52:07.192Z" }, + { url = "https://files.pythonhosted.org/packages/a1/af/009e8ba3fbf830c936842da048eda1b34b99329f402e49d88fafff6525d1/librt-0.7.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:02a69369862099e37d00765583052a99d6a68af7e19b887e1b78fee0146b755a", size = 181807, upload-time = "2025-12-15T16:52:08.554Z" }, + { url = "https://files.pythonhosted.org/packages/85/26/51ae25f813656a8b117c27a974f25e8c1e90abcd5a791ac685bf5b489a1b/librt-0.7.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ec72342cc4d62f38b25a94e28b9efefce41839aecdecf5e9627473ed04b7be16", size = 175595, upload-time = "2025-12-15T16:52:10.186Z" }, + { url = "https://files.pythonhosted.org/packages/48/93/36d6c71f830305f88996b15c8e017aa8d1e03e2e947b40b55bbf1a34cf24/librt-0.7.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:776dbb9bfa0fc5ce64234b446995d8d9f04badf64f544ca036bd6cff6f0732ce", size = 196504, upload-time = "2025-12-15T16:52:11.472Z" }, + { url = "https://files.pythonhosted.org/packages/08/11/8299e70862bb9d704735bf132c6be09c17b00fbc7cda0429a9df222fdc1b/librt-0.7.4-cp314-cp314-win32.whl", hash = "sha256:0f8cac84196d0ffcadf8469d9ded4d4e3a8b1c666095c2a291e22bf58e1e8a9f", size = 39738, upload-time = "2025-12-15T16:52:12.962Z" }, + { url = "https://files.pythonhosted.org/packages/54/d5/656b0126e4e0f8e2725cd2d2a1ec40f71f37f6f03f135a26b663c0e1a737/librt-0.7.4-cp314-cp314-win_amd64.whl", hash = "sha256:037f5cb6fe5abe23f1dc058054d50e9699fcc90d0677eee4e4f74a8677636a1a", size = 45976, upload-time = "2025-12-15T16:52:14.441Z" }, + { url = "https://files.pythonhosted.org/packages/60/86/465ff07b75c1067da8fa7f02913c4ead096ef106cfac97a977f763783bfb/librt-0.7.4-cp314-cp314-win_arm64.whl", hash = "sha256:a5deebb53d7a4d7e2e758a96befcd8edaaca0633ae71857995a0f16033289e44", size = 39073, upload-time = "2025-12-15T16:52:15.621Z" }, + { url = "https://files.pythonhosted.org/packages/b3/a0/24941f85960774a80d4b3c2aec651d7d980466da8101cae89e8b032a3e21/librt-0.7.4-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:b4c25312c7f4e6ab35ab16211bdf819e6e4eddcba3b2ea632fb51c9a2a97e105", size = 57369, upload-time = "2025-12-15T16:52:16.782Z" }, + { url = "https://files.pythonhosted.org/packages/77/a0/ddb259cae86ab415786c1547d0fe1b40f04a7b089f564fd5c0242a3fafb2/librt-0.7.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:618b7459bb392bdf373f2327e477597fff8f9e6a1878fffc1b711c013d1b0da4", size = 59230, upload-time = "2025-12-15T16:52:18.259Z" }, + { url = "https://files.pythonhosted.org/packages/31/11/77823cb530ab8a0c6fac848ac65b745be446f6f301753b8990e8809080c9/librt-0.7.4-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1437c3f72a30c7047f16fd3e972ea58b90172c3c6ca309645c1c68984f05526a", size = 183869, upload-time = "2025-12-15T16:52:19.457Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ce/157db3614cf3034b3f702ae5ba4fefda4686f11eea4b7b96542324a7a0e7/librt-0.7.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c96cb76f055b33308f6858b9b594618f1b46e147a4d03a4d7f0c449e304b9b95", size = 194606, upload-time = "2025-12-15T16:52:20.795Z" }, + { url = "https://files.pythonhosted.org/packages/30/ef/6ec4c7e3d6490f69a4fd2803516fa5334a848a4173eac26d8ee6507bff6e/librt-0.7.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:28f990e6821204f516d09dc39966ef8b84556ffd648d5926c9a3f681e8de8906", size = 206776, upload-time = "2025-12-15T16:52:22.229Z" }, + { url = "https://files.pythonhosted.org/packages/ad/22/750b37bf549f60a4782ab80e9d1e9c44981374ab79a7ea68670159905918/librt-0.7.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bc4aebecc79781a1b77d7d4e7d9fe080385a439e198d993b557b60f9117addaf", size = 203205, upload-time = "2025-12-15T16:52:23.603Z" }, + { url = "https://files.pythonhosted.org/packages/7a/87/2e8a0f584412a93df5faad46c5fa0a6825fdb5eba2ce482074b114877f44/librt-0.7.4-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:022cc673e69283a42621dd453e2407cf1647e77f8bd857d7ad7499901e62376f", size = 196696, upload-time = "2025-12-15T16:52:24.951Z" }, + { url = "https://files.pythonhosted.org/packages/e5/ca/7bf78fa950e43b564b7de52ceeb477fb211a11f5733227efa1591d05a307/librt-0.7.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:2b3ca211ae8ea540569e9c513da052699b7b06928dcda61247cb4f318122bdb5", size = 217191, upload-time = "2025-12-15T16:52:26.194Z" }, + { url = "https://files.pythonhosted.org/packages/d6/49/3732b0e8424ae35ad5c3166d9dd5bcdae43ce98775e0867a716ff5868064/librt-0.7.4-cp314-cp314t-win32.whl", hash = "sha256:8a461f6456981d8c8e971ff5a55f2e34f4e60871e665d2f5fde23ee74dea4eeb", size = 40276, upload-time = "2025-12-15T16:52:27.54Z" }, + { url = "https://files.pythonhosted.org/packages/35/d6/d8823e01bd069934525fddb343189c008b39828a429b473fb20d67d5cd36/librt-0.7.4-cp314-cp314t-win_amd64.whl", hash = "sha256:721a7b125a817d60bf4924e1eec2a7867bfcf64cfc333045de1df7a0629e4481", size = 46772, upload-time = "2025-12-15T16:52:28.653Z" }, + { url = "https://files.pythonhosted.org/packages/36/e9/a0aa60f5322814dd084a89614e9e31139702e342f8459ad8af1984a18168/librt-0.7.4-cp314-cp314t-win_arm64.whl", hash = "sha256:76b2ba71265c0102d11458879b4d53ccd0b32b0164d14deb8d2b598a018e502f", size = 39724, upload-time = "2025-12-15T16:52:29.836Z" }, ] [[package]] name = "locust" -version = "2.42.5" +version = "2.42.6" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "configargparse" }, @@ -1434,18 +1264,17 @@ dependencies = [ { name = "pywin32", marker = "sys_platform == 'win32'" }, { name = "pyzmq" }, { name = "requests" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "typing-extensions", marker = "python_full_version < '3.12'" }, { name = "werkzeug" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8a/69/076f6a1eb4e5813eea864f5a9a5311385c5cc71c46377ed7cec824eca0a1/locust-2.42.5.tar.gz", hash = "sha256:83b8cfc38bd88b3d9daf9790be24239356ccd1160d9b357fa9c7af32907a8860", size = 1418586, upload-time = "2025-11-20T16:45:44.806Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d9/19/dd816835679c80eba9c339a4bfcb6380fa8b059a5da45894ac80d73bc504/locust-2.42.6.tar.gz", hash = "sha256:fa603f4ac1c48b9ac56f4c34355944ebfd92590f4197b6d126ea216bd81cc036", size = 1418806, upload-time = "2025-11-29T17:40:10.056Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2d/a9/ce92490466f719e658b5815a4778669c12a4b907ff7ca51e0a94baedf5b2/locust-2.42.5-py3-none-any.whl", hash = "sha256:fa654eb501bf4bad665310ead59c9d7b209d057717795fbbcc977f61af1fdf64", size = 1437168, upload-time = "2025-11-20T16:45:42.855Z" }, + { url = "https://files.pythonhosted.org/packages/51/4f/be2b7b87a4cea00d89adabeee5c61e8831c2af8a0eca3cbe931516f0e155/locust-2.42.6-py3-none-any.whl", hash = "sha256:2d02502489c8a2e959e2ca4b369c81bbd6b9b9e831d9422ab454541a3c2c6252", size = 1437376, upload-time = "2025-11-29T17:40:08.37Z" }, ] [[package]] name = "locust-cloud" -version = "1.29.3" +version = "1.30.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "configargparse" }, @@ -1453,11 +1282,10 @@ dependencies = [ { name = "platformdirs" }, { name = "python-engineio" }, { name = "python-socketio", extra = ["client"] }, - { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/35/51/7367b8f13df5fdda001b717574091ea223820be0e2d22caa0e9cfefba556/locust_cloud-1.29.3.tar.gz", hash = "sha256:1b88c1fa8eeb73557f3ab25e16b037283df9a48282be8e91fb4fae84ef7bb367", size = 457304, upload-time = "2025-11-26T13:37:19.318Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8d/86/cd6b611f008387ffce5bcb6132ba7431aec7d1b09d8ce27e152e96d94315/locust_cloud-1.30.0.tar.gz", hash = "sha256:324ae23754d49816df96d3f7472357a61cd10e56cebcb26e2def836675cb3c68", size = 457297, upload-time = "2025-12-15T13:35:50.342Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/31/4850f0ac5e109007278dbf7d1368565ce43b589aa74e6c6c481c597968db/locust_cloud-1.29.3-py3-none-any.whl", hash = "sha256:1898f09287865b1590d44d5eb71586a40a3895c52bf9bfc826fd6a384fb389d5", size = 413421, upload-time = "2025-11-26T13:37:16.613Z" }, + { url = "https://files.pythonhosted.org/packages/85/db/35c1cc8e01dfa570913255c55eb983a7e2e532060b4d1ee5f1fb543a6a0b/locust_cloud-1.30.0-py3-none-any.whl", hash = "sha256:2324b690efa1bfc8d1871340276953cf265328bd6333e07a5ba8ff7dc5e99e6c", size = 413446, upload-time = "2025-12-15T13:35:48.75Z" }, ] [[package]] @@ -1478,16 +1306,6 @@ version = "2.1.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/6d/7c/59a3248f411813f8ccba92a55feaac4bf360d29e2ff05ee7d8e1ef2d7dbf/MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad", size = 19132, upload-time = "2023-06-02T21:43:45.578Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/1d/713d443799d935f4d26a4f1510c9e61b1d288592fb869845e5cc92a1e055/MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa", size = 17846, upload-time = "2023-06-02T21:42:33.954Z" }, - { url = "https://files.pythonhosted.org/packages/f7/9c/86cbd8e0e1d81f0ba420f20539dd459c50537c7751e28102dbfee2b6f28c/MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57", size = 13720, upload-time = "2023-06-02T21:42:35.102Z" }, - { url = "https://files.pythonhosted.org/packages/a6/56/f1d4ee39e898a9e63470cbb7fae1c58cce6874f25f54220b89213a47f273/MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f", size = 26498, upload-time = "2023-06-02T21:42:36.608Z" }, - { url = "https://files.pythonhosted.org/packages/12/b3/d9ed2c0971e1435b8a62354b18d3060b66c8cb1d368399ec0b9baa7c0ee5/MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52", size = 25691, upload-time = "2023-06-02T21:42:37.778Z" }, - { url = "https://files.pythonhosted.org/packages/bf/b7/c5ba9b7ad9ad21fc4a60df226615cf43ead185d328b77b0327d603d00cc5/MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00", size = 25366, upload-time = "2023-06-02T21:42:39.441Z" }, - { url = "https://files.pythonhosted.org/packages/71/61/f5673d7aac2cf7f203859008bb3fc2b25187aa330067c5e9955e5c5ebbab/MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6", size = 30505, upload-time = "2023-06-02T21:42:41.088Z" }, - { url = "https://files.pythonhosted.org/packages/47/26/932140621773bfd4df3223fbdd9e78de3477f424f0d2987c313b1cb655ff/MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779", size = 29616, upload-time = "2023-06-02T21:42:42.273Z" }, - { url = "https://files.pythonhosted.org/packages/3c/c8/74d13c999cbb49e3460bf769025659a37ef4a8e884de629720ab4e42dcdb/MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7", size = 29891, upload-time = "2023-06-02T21:42:43.635Z" }, - { url = "https://files.pythonhosted.org/packages/96/e4/4db3b1abc5a1fe7295aa0683eafd13832084509c3b8236f3faf8dd4eff75/MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431", size = 16525, upload-time = "2023-06-02T21:42:45.271Z" }, - { url = "https://files.pythonhosted.org/packages/84/a8/c4aebb8a14a1d39d5135eb8233a0b95831cdc42c4088358449c3ed657044/MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559", size = 17083, upload-time = "2023-06-02T21:42:46.948Z" }, { url = "https://files.pythonhosted.org/packages/fe/09/c31503cb8150cf688c1534a7135cc39bb9092f8e0e6369ec73494d16ee0e/MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c", size = 17862, upload-time = "2023-06-02T21:42:48.569Z" }, { url = "https://files.pythonhosted.org/packages/c0/c7/171f5ac6b065e1425e8fabf4a4dfbeca76fd8070072c6a41bd5c07d90d8b/MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575", size = 13738, upload-time = "2023-06-02T21:42:49.727Z" }, { url = "https://files.pythonhosted.org/packages/a2/f7/9175ad1b8152092f7c3b78c513c1bdfe9287e0564447d1c2d3d1a2471540/MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee", size = 28891, upload-time = "2023-06-02T21:42:51.33Z" }, @@ -1510,85 +1328,23 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/44/44/dbaf65876e258facd65f586dde158387ab89963e7f2235551afc9c2e24c2/MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb", size = 16979, upload-time = "2023-09-07T16:00:57.77Z" }, ] -[[package]] -name = "matplotlib" -version = "3.8.2" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version < '3.11' and sys_platform == 'darwin'", - "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", -] -dependencies = [ - { name = "contourpy", version = "1.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "cycler", marker = "python_full_version < '3.11'" }, - { name = "fonttools", marker = "python_full_version < '3.11'" }, - { name = "kiwisolver", marker = "python_full_version < '3.11'" }, - { name = "numpy", marker = "python_full_version < '3.11'" }, - { name = "packaging", marker = "python_full_version < '3.11'" }, - { name = "pillow", marker = "python_full_version < '3.11'" }, - { name = "pyparsing", marker = "python_full_version < '3.11'" }, - { name = "python-dateutil", marker = "python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fb/ab/38a0e94cb01dacb50f06957c2bed1c83b8f9dac6618988a37b2487862944/matplotlib-3.8.2.tar.gz", hash = "sha256:01a978b871b881ee76017152f1f1a0cbf6bd5f7b8ff8c96df0df1bd57d8755a1", size = 35866957, upload-time = "2023-11-17T21:16:40.15Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/92/d0/fc5f6796a1956f5b9a33555611d01a3cec038f000c3d70ecb051b1631ac4/matplotlib-3.8.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:09796f89fb71a0c0e1e2f4bdaf63fb2cefc84446bb963ecdeb40dfee7dfa98c7", size = 7590640, upload-time = "2023-11-17T21:17:02.834Z" }, - { url = "https://files.pythonhosted.org/packages/57/44/007b592809f50883c910db9ec4b81b16dfa0136407250fb581824daabf03/matplotlib-3.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6f9c6976748a25e8b9be51ea028df49b8e561eed7809146da7a47dbecebab367", size = 7484350, upload-time = "2023-11-17T21:17:12.281Z" }, - { url = "https://files.pythonhosted.org/packages/01/87/c7b24f3048234fe10184560263be2173311376dc3d1fa329de7f012d6ce5/matplotlib-3.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b78e4f2cedf303869b782071b55fdde5987fda3038e9d09e58c91cc261b5ad18", size = 11382388, upload-time = "2023-11-17T21:17:26.461Z" }, - { url = "https://files.pythonhosted.org/packages/19/e5/a4ea514515f270224435c69359abb7a3d152ed31b9ee3ba5e63017461945/matplotlib-3.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e208f46cf6576a7624195aa047cb344a7f802e113bb1a06cfd4bee431de5e31", size = 11611959, upload-time = "2023-11-17T21:17:40.541Z" }, - { url = "https://files.pythonhosted.org/packages/09/23/ab5a562c9acb81e351b084bea39f65b153918417fb434619cf5a19f44a55/matplotlib-3.8.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:46a569130ff53798ea5f50afce7406e91fdc471ca1e0e26ba976a8c734c9427a", size = 9536938, upload-time = "2023-11-17T21:17:49.925Z" }, - { url = "https://files.pythonhosted.org/packages/46/37/b5e27ab30ecc0a3694c8a78287b5ef35dad0c3095c144fcc43081170bfd6/matplotlib-3.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:830f00640c965c5b7f6bc32f0d4ce0c36dfe0379f7dd65b07a00c801713ec40a", size = 7643836, upload-time = "2023-11-17T21:17:58.379Z" }, - { url = "https://files.pythonhosted.org/packages/a9/0d/53afb186adafc7326d093b8333e8a79974c495095771659f4304626c4bc7/matplotlib-3.8.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d86593ccf546223eb75a39b44c32788e6f6440d13cfc4750c1c15d0fcb850b63", size = 7593458, upload-time = "2023-11-17T21:18:06.141Z" }, - { url = "https://files.pythonhosted.org/packages/ce/25/a557ee10ac9dce1300850024707ce1850a6958f1673a9194be878b99d631/matplotlib-3.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9a5430836811b7652991939012f43d2808a2db9b64ee240387e8c43e2e5578c8", size = 7486840, upload-time = "2023-11-17T21:18:13.706Z" }, - { url = "https://files.pythonhosted.org/packages/e7/3d/72712b3895ee180f6e342638a8591c31912fbcc09ce9084cc256da16d0a0/matplotlib-3.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9576723858a78751d5aacd2497b8aef29ffea6d1c95981505877f7ac28215c6", size = 11387332, upload-time = "2023-11-17T21:18:23.699Z" }, - { url = "https://files.pythonhosted.org/packages/92/1a/cd3e0c90d1a763ad90073e13b189b4702f11becf4e71dbbad70a7a149811/matplotlib-3.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ba9cbd8ac6cf422f3102622b20f8552d601bf8837e49a3afed188d560152788", size = 11616911, upload-time = "2023-11-17T21:18:35.27Z" }, - { url = "https://files.pythonhosted.org/packages/78/4a/bad239071477305a3758eb4810615e310a113399cddd7682998be9f01e97/matplotlib-3.8.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:03f9d160a29e0b65c0790bb07f4f45d6a181b1ac33eb1bb0dd225986450148f0", size = 9549260, upload-time = "2023-11-17T21:18:44.836Z" }, - { url = "https://files.pythonhosted.org/packages/26/5a/27fd341e4510257789f19a4b4be8bb90d1113b8f176c3dab562b4f21466e/matplotlib-3.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:3773002da767f0a9323ba1a9b9b5d00d6257dbd2a93107233167cfb581f64717", size = 7645742, upload-time = "2023-11-17T21:18:53.448Z" }, - { url = "https://files.pythonhosted.org/packages/e4/1b/864d28d5a72d586ac137f4ca54d5afc8b869720e30d508dbd9adcce4d231/matplotlib-3.8.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:4c318c1e95e2f5926fba326f68177dee364aa791d6df022ceb91b8221bd0a627", size = 7590988, upload-time = "2023-11-17T21:19:01.119Z" }, - { url = "https://files.pythonhosted.org/packages/9a/b0/dd2b60f2dd90fbc21d1d3129c36a453c322d7995d5e3589f5b3c59ee528d/matplotlib-3.8.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:091275d18d942cf1ee9609c830a1bc36610607d8223b1b981c37d5c9fc3e46a4", size = 7483594, upload-time = "2023-11-17T21:19:09.865Z" }, - { url = "https://files.pythonhosted.org/packages/33/da/9942533ad9f96753bde0e5a5d48eacd6c21de8ea1ad16570e31bda8a017f/matplotlib-3.8.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b0f3b8ea0e99e233a4bcc44590f01604840d833c280ebb8fe5554fd3e6cfe8d", size = 11380843, upload-time = "2023-11-17T21:19:20.46Z" }, - { url = "https://files.pythonhosted.org/packages/fc/52/bfd36eb4745a3b21b3946c2c3a15679b620e14574fe2b98e9451b65ef578/matplotlib-3.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7b1704a530395aaf73912be741c04d181f82ca78084fbd80bc737be04848331", size = 11604608, upload-time = "2023-11-17T21:19:31.363Z" }, - { url = "https://files.pythonhosted.org/packages/6d/8c/0cdfbf604d4ea3dfa77435176c51e233cc408ad8f3efbf8d2c9f57cbdafb/matplotlib-3.8.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:533b0e3b0c6768eef8cbe4b583731ce25a91ab54a22f830db2b031e83cca9213", size = 9545252, upload-time = "2023-11-17T21:19:42.271Z" }, - { url = "https://files.pythonhosted.org/packages/2e/51/c77a14869b7eb9d6fb440e811b754fc3950d6868c38ace57d0632b674415/matplotlib-3.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:0f4fc5d72b75e2c18e55eb32292659cf731d9d5b312a6eb036506304f4675630", size = 7645067, upload-time = "2023-11-17T21:19:50.091Z" }, -] - [[package]] name = "matplotlib" version = "3.10.5" source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14' and sys_platform == 'darwin'", - "python_full_version == '3.13.*' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and sys_platform == 'darwin'", - "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.14' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.14' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.13.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", -] dependencies = [ - { name = "contourpy", version = "1.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "cycler", marker = "python_full_version >= '3.11'" }, - { name = "fonttools", marker = "python_full_version >= '3.11'" }, - { name = "kiwisolver", marker = "python_full_version >= '3.11'" }, - { name = "numpy", marker = "python_full_version >= '3.11'" }, - { name = "packaging", marker = "python_full_version >= '3.11'" }, - { name = "pillow", marker = "python_full_version >= '3.11'" }, - { name = "pyparsing", marker = "python_full_version >= '3.11'" }, - { name = "python-dateutil", marker = "python_full_version >= '3.11'" }, + { name = "contourpy" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, ] sdist = { url = "https://files.pythonhosted.org/packages/43/91/f2939bb60b7ebf12478b030e0d7f340247390f402b3b189616aad790c366/matplotlib-3.10.5.tar.gz", hash = "sha256:352ed6ccfb7998a00881692f38b4ca083c691d3e275b4145423704c34c909076", size = 34804044, upload-time = "2025-07-31T18:09:33.805Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/89/5355cdfe43242cb4d1a64a67cb6831398b665ad90e9702c16247cbd8d5ab/matplotlib-3.10.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5d4773a6d1c106ca05cb5a5515d277a6bb96ed09e5c8fab6b7741b8fcaa62c8f", size = 8229094, upload-time = "2025-07-31T18:07:36.507Z" }, - { url = "https://files.pythonhosted.org/packages/34/bc/ba802650e1c69650faed261a9df004af4c6f21759d7a1ec67fe972f093b3/matplotlib-3.10.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc88af74e7ba27de6cbe6faee916024ea35d895ed3d61ef6f58c4ce97da7185a", size = 8091464, upload-time = "2025-07-31T18:07:38.864Z" }, - { url = "https://files.pythonhosted.org/packages/ac/64/8d0c8937dee86c286625bddb1902efacc3e22f2b619f5b5a8df29fe5217b/matplotlib-3.10.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:64c4535419d5617f7363dad171a5a59963308e0f3f813c4bed6c9e6e2c131512", size = 8653163, upload-time = "2025-07-31T18:07:41.141Z" }, - { url = "https://files.pythonhosted.org/packages/11/dc/8dfc0acfbdc2fc2336c72561b7935cfa73db9ca70b875d8d3e1b3a6f371a/matplotlib-3.10.5-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a277033048ab22d34f88a3c5243938cef776493f6201a8742ed5f8b553201343", size = 9490635, upload-time = "2025-07-31T18:07:42.936Z" }, - { url = "https://files.pythonhosted.org/packages/54/02/e3fdfe0f2e9fb05f3a691d63876639dbf684170fdcf93231e973104153b4/matplotlib-3.10.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e4a6470a118a2e93022ecc7d3bd16b3114b2004ea2bf014fff875b3bc99b70c6", size = 9539036, upload-time = "2025-07-31T18:07:45.18Z" }, - { url = "https://files.pythonhosted.org/packages/c1/29/82bf486ff7f4dbedfb11ccc207d0575cbe3be6ea26f75be514252bde3d70/matplotlib-3.10.5-cp310-cp310-win_amd64.whl", hash = "sha256:7e44cada61bec8833c106547786814dd4a266c1b2964fd25daa3804f1b8d4467", size = 8093529, upload-time = "2025-07-31T18:07:49.553Z" }, { url = "https://files.pythonhosted.org/packages/aa/c7/1f2db90a1d43710478bb1e9b57b162852f79234d28e4f48a28cc415aa583/matplotlib-3.10.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:dcfc39c452c6a9f9028d3e44d2d721484f665304857188124b505b2c95e1eecf", size = 8239216, upload-time = "2025-07-31T18:07:51.947Z" }, { url = "https://files.pythonhosted.org/packages/82/6d/ca6844c77a4f89b1c9e4d481c412e1d1dbabf2aae2cbc5aa2da4a1d6683e/matplotlib-3.10.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:903352681b59f3efbf4546985142a9686ea1d616bb054b09a537a06e4b892ccf", size = 8102130, upload-time = "2025-07-31T18:07:53.65Z" }, { url = "https://files.pythonhosted.org/packages/1d/1e/5e187a30cc673a3e384f3723e5f3c416033c1d8d5da414f82e4e731128ea/matplotlib-3.10.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:080c3676a56b8ee1c762bcf8fca3fe709daa1ee23e6ef06ad9f3fc17332f2d2a", size = 8666471, upload-time = "2025-07-31T18:07:55.304Z" }, @@ -1631,9 +1387,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/12/09/d330d1e55dcca2e11b4d304cc5227f52e2512e46828d6249b88e0694176e/matplotlib-3.10.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:4fa40a8f98428f789a9dcacd625f59b7bc4e3ef6c8c7c80187a7a709475cf592", size = 9573932, upload-time = "2025-07-31T18:09:15.335Z" }, { url = "https://files.pythonhosted.org/packages/eb/3b/f70258ac729aa004aca673800a53a2b0a26d49ca1df2eaa03289a1c40f81/matplotlib-3.10.5-cp314-cp314t-win_amd64.whl", hash = "sha256:95672a5d628b44207aab91ec20bf59c26da99de12b88f7e0b1fb0a84a86ff959", size = 8322003, upload-time = "2025-07-31T18:09:17.416Z" }, { url = "https://files.pythonhosted.org/packages/5b/60/3601f8ce6d76a7c81c7f25a0e15fde0d6b66226dd187aa6d2838e6374161/matplotlib-3.10.5-cp314-cp314t-win_arm64.whl", hash = "sha256:2efaf97d72629e74252e0b5e3c46813e9eeaa94e011ecf8084a971a31a97f40b", size = 8153849, upload-time = "2025-07-31T18:09:19.673Z" }, - { url = "https://files.pythonhosted.org/packages/e4/eb/7d4c5de49eb78294e1a8e2be8a6ecff8b433e921b731412a56cd1abd3567/matplotlib-3.10.5-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b5fa2e941f77eb579005fb804026f9d0a1082276118d01cc6051d0d9626eaa7f", size = 8222360, upload-time = "2025-07-31T18:09:21.813Z" }, - { url = "https://files.pythonhosted.org/packages/16/8a/e435db90927b66b16d69f8f009498775f4469f8de4d14b87856965e58eba/matplotlib-3.10.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1fc0d2a3241cdcb9daaca279204a3351ce9df3c0e7e621c7e04ec28aaacaca30", size = 8087462, upload-time = "2025-07-31T18:09:23.504Z" }, - { url = "https://files.pythonhosted.org/packages/0b/dd/06c0e00064362f5647f318e00b435be2ff76a1bdced97c5eaf8347311fbe/matplotlib-3.10.5-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8dee65cb1424b7dc982fe87895b5613d4e691cc57117e8af840da0148ca6c1d7", size = 8659802, upload-time = "2025-07-31T18:09:25.256Z" }, { url = "https://files.pythonhosted.org/packages/dc/d6/e921be4e1a5f7aca5194e1f016cb67ec294548e530013251f630713e456d/matplotlib-3.10.5-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:160e125da27a749481eaddc0627962990f6029811dbeae23881833a011a0907f", size = 8233224, upload-time = "2025-07-31T18:09:27.512Z" }, { url = "https://files.pythonhosted.org/packages/ec/74/a2b9b04824b9c349c8f1b2d21d5af43fa7010039427f2b133a034cb09e59/matplotlib-3.10.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ac3d50760394d78a3c9be6b28318fe22b494c4fcf6407e8fd4794b538251899b", size = 8098539, upload-time = "2025-07-31T18:09:29.629Z" }, { url = "https://files.pythonhosted.org/packages/fc/66/cd29ebc7f6c0d2a15d216fb572573e8fc38bd5d6dec3bd9d7d904c0949f7/matplotlib-3.10.5-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6c49465bf689c4d59d174d0c7795fb42a21d4244d11d70e52b8011987367ac61", size = 8672192, upload-time = "2025-07-31T18:09:31.407Z" }, @@ -1648,6 +1401,43 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, ] +[[package]] +name = "ml-dtypes" +version = "0.5.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/78/a7/aad060393123cfb383956dca68402aff3db1e1caffd5764887ed5153f41b/ml_dtypes-0.5.3.tar.gz", hash = "sha256:95ce33057ba4d05df50b1f3cfefab22e351868a843b3b15a46c65836283670c9", size = 692316, upload-time = "2025-07-29T18:39:19.454Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/f1/720cb1409b5d0c05cff9040c0e9fba73fa4c67897d33babf905d5d46a070/ml_dtypes-0.5.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4a177b882667c69422402df6ed5c3428ce07ac2c1f844d8a1314944651439458", size = 667412, upload-time = "2025-07-29T18:38:25.275Z" }, + { url = "https://files.pythonhosted.org/packages/6a/d5/05861ede5d299f6599f86e6bc1291714e2116d96df003cfe23cc54bcc568/ml_dtypes-0.5.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9849ce7267444c0a717c80c6900997de4f36e2815ce34ac560a3edb2d9a64cd2", size = 4964606, upload-time = "2025-07-29T18:38:27.045Z" }, + { url = "https://files.pythonhosted.org/packages/db/dc/72992b68de367741bfab8df3b3fe7c29f982b7279d341aa5bf3e7ef737ea/ml_dtypes-0.5.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c3f5ae0309d9f888fd825c2e9d0241102fadaca81d888f26f845bc8c13c1e4ee", size = 4938435, upload-time = "2025-07-29T18:38:29.193Z" }, + { url = "https://files.pythonhosted.org/packages/81/1c/d27a930bca31fb07d975a2d7eaf3404f9388114463b9f15032813c98f893/ml_dtypes-0.5.3-cp311-cp311-win_amd64.whl", hash = "sha256:58e39349d820b5702bb6f94ea0cb2dc8ec62ee81c0267d9622067d8333596a46", size = 206334, upload-time = "2025-07-29T18:38:30.687Z" }, + { url = "https://files.pythonhosted.org/packages/1a/d8/6922499effa616012cb8dc445280f66d100a7ff39b35c864cfca019b3f89/ml_dtypes-0.5.3-cp311-cp311-win_arm64.whl", hash = "sha256:66c2756ae6cfd7f5224e355c893cfd617fa2f747b8bbd8996152cbdebad9a184", size = 157584, upload-time = "2025-07-29T18:38:32.187Z" }, + { url = "https://files.pythonhosted.org/packages/0d/eb/bc07c88a6ab002b4635e44585d80fa0b350603f11a2097c9d1bfacc03357/ml_dtypes-0.5.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:156418abeeda48ea4797db6776db3c5bdab9ac7be197c1233771e0880c304057", size = 663864, upload-time = "2025-07-29T18:38:33.777Z" }, + { url = "https://files.pythonhosted.org/packages/cf/89/11af9b0f21b99e6386b6581ab40fb38d03225f9de5f55cf52097047e2826/ml_dtypes-0.5.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1db60c154989af253f6c4a34e8a540c2c9dce4d770784d426945e09908fbb177", size = 4951313, upload-time = "2025-07-29T18:38:36.45Z" }, + { url = "https://files.pythonhosted.org/packages/d8/a9/b98b86426c24900b0c754aad006dce2863df7ce0bb2bcc2c02f9cc7e8489/ml_dtypes-0.5.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1b255acada256d1fa8c35ed07b5f6d18bc21d1556f842fbc2d5718aea2cd9e55", size = 4928805, upload-time = "2025-07-29T18:38:38.29Z" }, + { url = "https://files.pythonhosted.org/packages/50/c1/85e6be4fc09c6175f36fb05a45917837f30af9a5146a5151cb3a3f0f9e09/ml_dtypes-0.5.3-cp312-cp312-win_amd64.whl", hash = "sha256:da65e5fd3eea434ccb8984c3624bc234ddcc0d9f4c81864af611aaebcc08a50e", size = 208182, upload-time = "2025-07-29T18:38:39.72Z" }, + { url = "https://files.pythonhosted.org/packages/9e/17/cf5326d6867be057f232d0610de1458f70a8ce7b6290e4b4a277ea62b4cd/ml_dtypes-0.5.3-cp312-cp312-win_arm64.whl", hash = "sha256:8bb9cd1ce63096567f5f42851f5843b5a0ea11511e50039a7649619abfb4ba6d", size = 161560, upload-time = "2025-07-29T18:38:41.072Z" }, + { url = "https://files.pythonhosted.org/packages/2d/87/1bcc98a66de7b2455dfb292f271452cac9edc4e870796e0d87033524d790/ml_dtypes-0.5.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5103856a225465371fe119f2fef737402b705b810bd95ad5f348e6e1a6ae21af", size = 663781, upload-time = "2025-07-29T18:38:42.984Z" }, + { url = "https://files.pythonhosted.org/packages/fd/2c/bd2a79ba7c759ee192b5601b675b180a3fd6ccf48ffa27fe1782d280f1a7/ml_dtypes-0.5.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4cae435a68861660af81fa3c5af16b70ca11a17275c5b662d9c6f58294e0f113", size = 4956217, upload-time = "2025-07-29T18:38:44.65Z" }, + { url = "https://files.pythonhosted.org/packages/14/f3/091ba84e5395d7fe5b30c081a44dec881cd84b408db1763ee50768b2ab63/ml_dtypes-0.5.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6936283b56d74fbec431ca57ce58a90a908fdbd14d4e2d22eea6d72bb208a7b7", size = 4933109, upload-time = "2025-07-29T18:38:46.405Z" }, + { url = "https://files.pythonhosted.org/packages/bc/24/054036dbe32c43295382c90a1363241684c4d6aaa1ecc3df26bd0c8d5053/ml_dtypes-0.5.3-cp313-cp313-win_amd64.whl", hash = "sha256:d0f730a17cf4f343b2c7ad50cee3bd19e969e793d2be6ed911f43086460096e4", size = 208187, upload-time = "2025-07-29T18:38:48.24Z" }, + { url = "https://files.pythonhosted.org/packages/a6/3d/7dc3ec6794a4a9004c765e0c341e32355840b698f73fd2daff46f128afc1/ml_dtypes-0.5.3-cp313-cp313-win_arm64.whl", hash = "sha256:2db74788fc01914a3c7f7da0763427280adfc9cd377e9604b6b64eb8097284bd", size = 161559, upload-time = "2025-07-29T18:38:50.493Z" }, + { url = "https://files.pythonhosted.org/packages/12/91/e6c7a0d67a152b9330445f9f0cf8ae6eee9b83f990b8c57fe74631e42a90/ml_dtypes-0.5.3-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:93c36a08a6d158db44f2eb9ce3258e53f24a9a4a695325a689494f0fdbc71770", size = 689321, upload-time = "2025-07-29T18:38:52.03Z" }, + { url = "https://files.pythonhosted.org/packages/9e/6c/b7b94b84a104a5be1883305b87d4c6bd6ae781504474b4cca067cb2340ec/ml_dtypes-0.5.3-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0e44a3761f64bc009d71ddb6d6c71008ba21b53ab6ee588dadab65e2fa79eafc", size = 5274495, upload-time = "2025-07-29T18:38:53.797Z" }, + { url = "https://files.pythonhosted.org/packages/5b/38/6266604dffb43378055394ea110570cf261a49876fc48f548dfe876f34cc/ml_dtypes-0.5.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bdf40d2aaabd3913dec11840f0d0ebb1b93134f99af6a0a4fd88ffe924928ab4", size = 5285422, upload-time = "2025-07-29T18:38:56.603Z" }, + { url = "https://files.pythonhosted.org/packages/7c/88/8612ff177d043a474b9408f0382605d881eeb4125ba89d4d4b3286573a83/ml_dtypes-0.5.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:aec640bd94c4c85c0d11e2733bd13cbb10438fb004852996ec0efbc6cacdaf70", size = 661182, upload-time = "2025-07-29T18:38:58.414Z" }, + { url = "https://files.pythonhosted.org/packages/6f/2b/0569a5e88b29240d373e835107c94ae9256fb2191d3156b43b2601859eff/ml_dtypes-0.5.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bda32ce212baa724e03c68771e5c69f39e584ea426bfe1a701cb01508ffc7035", size = 4956187, upload-time = "2025-07-29T18:39:00.611Z" }, + { url = "https://files.pythonhosted.org/packages/51/66/273c2a06ae44562b104b61e6b14444da00061fd87652506579d7eb2c40b1/ml_dtypes-0.5.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c205cac07d24a29840c163d6469f61069ce4b065518519216297fc2f261f8db9", size = 4930911, upload-time = "2025-07-29T18:39:02.405Z" }, + { url = "https://files.pythonhosted.org/packages/93/ab/606be3e87dc0821bd360c8c1ee46108025c31a4f96942b63907bb441b87d/ml_dtypes-0.5.3-cp314-cp314-win_amd64.whl", hash = "sha256:cd7c0bb22d4ff86d65ad61b5dd246812e8993fbc95b558553624c33e8b6903ea", size = 216664, upload-time = "2025-07-29T18:39:03.927Z" }, + { url = "https://files.pythonhosted.org/packages/30/a2/e900690ca47d01dffffd66375c5de8c4f8ced0f1ef809ccd3b25b3e6b8fa/ml_dtypes-0.5.3-cp314-cp314-win_arm64.whl", hash = "sha256:9d55ea7f7baf2aed61bf1872116cefc9d0c3693b45cae3916897ee27ef4b835e", size = 160203, upload-time = "2025-07-29T18:39:05.671Z" }, + { url = "https://files.pythonhosted.org/packages/53/21/783dfb51f40d2660afeb9bccf3612b99f6a803d980d2a09132b0f9d216ab/ml_dtypes-0.5.3-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:e12e29764a0e66a7a31e9b8bf1de5cc0423ea72979f45909acd4292de834ccd3", size = 689324, upload-time = "2025-07-29T18:39:07.567Z" }, + { url = "https://files.pythonhosted.org/packages/09/f7/a82d249c711abf411ac027b7163f285487f5e615c3e0716c61033ce996ab/ml_dtypes-0.5.3-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:19f6c3a4f635c2fc9e2aa7d91416bd7a3d649b48350c51f7f715a09370a90d93", size = 5275917, upload-time = "2025-07-29T18:39:09.339Z" }, + { url = "https://files.pythonhosted.org/packages/7f/3c/541c4b30815ab90ebfbb51df15d0b4254f2f9f1e2b4907ab229300d5e6f2/ml_dtypes-0.5.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ab039ffb40f3dc0aeeeba84fd6c3452781b5e15bef72e2d10bcb33e4bbffc39", size = 5285284, upload-time = "2025-07-29T18:39:11.532Z" }, +] + [[package]] name = "mpmath" version = "1.3.0" @@ -1663,17 +1453,6 @@ version = "1.0.7" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/c2/d5/5662032db1571110b5b51647aed4b56dfbd01bfae789fa566a2be1f385d1/msgpack-1.0.7.tar.gz", hash = "sha256:572efc93db7a4d27e404501975ca6d2d9775705c2d922390d878fcf768d92c87", size = 166311, upload-time = "2023-09-28T13:20:36.726Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/41/3a/2e2e902afcd751738e38d88af976fc4010b16e8e821945f4cbf32f75f9c3/msgpack-1.0.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:04ad6069c86e531682f9e1e71b71c1c3937d6014a7c3e9edd2aa81ad58842862", size = 304827, upload-time = "2023-09-28T13:18:30.258Z" }, - { url = "https://files.pythonhosted.org/packages/86/a6/490792a524a82e855bdf3885ecb73d7b3a0b17744b3cf4a40aea13ceca38/msgpack-1.0.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cca1b62fe70d761a282496b96a5e51c44c213e410a964bdffe0928e611368329", size = 234959, upload-time = "2023-09-28T13:18:32.146Z" }, - { url = "https://files.pythonhosted.org/packages/ad/72/d39ed43bfb2ec6968d768318477adb90c474bdc59b2437170c6697ee4115/msgpack-1.0.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e50ebce52f41370707f1e21a59514e3375e3edd6e1832f5e5235237db933c98b", size = 231970, upload-time = "2023-09-28T13:18:34.134Z" }, - { url = "https://files.pythonhosted.org/packages/a2/90/2d769e693654f036acfb462b54dacb3ae345699999897ca34f6bd9534fe9/msgpack-1.0.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7b4f35de6a304b5533c238bee86b670b75b03d31b7797929caa7a624b5dda6", size = 522440, upload-time = "2023-09-28T13:18:35.866Z" }, - { url = "https://files.pythonhosted.org/packages/46/95/d0440400485eab1bf50f1efe5118967b539f3191d994c3dfc220657594cd/msgpack-1.0.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28efb066cde83c479dfe5a48141a53bc7e5f13f785b92ddde336c716663039ee", size = 530797, upload-time = "2023-09-28T13:18:37.653Z" }, - { url = "https://files.pythonhosted.org/packages/76/33/35df717bc095c6e938b3c65ed117b95048abc24d1614427685123fb2f0af/msgpack-1.0.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4cb14ce54d9b857be9591ac364cb08dc2d6a5c4318c1182cb1d02274029d590d", size = 520372, upload-time = "2023-09-28T13:18:39.685Z" }, - { url = "https://files.pythonhosted.org/packages/af/d1/abbdd58a43827fbec5d98427a7a535c620890289b9d927154465313d6967/msgpack-1.0.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b573a43ef7c368ba4ea06050a957c2a7550f729c31f11dd616d2ac4aba99888d", size = 527287, upload-time = "2023-09-28T13:18:41.051Z" }, - { url = "https://files.pythonhosted.org/packages/0c/ac/66625b05091b97ca2c7418eb2d2af152f033d969519f9315556a4ed800fe/msgpack-1.0.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ccf9a39706b604d884d2cb1e27fe973bc55f2890c52f38df742bc1d79ab9f5e1", size = 560715, upload-time = "2023-09-28T13:18:42.883Z" }, - { url = "https://files.pythonhosted.org/packages/de/4e/a0e8611f94bac32d2c1c4ad05bb1c0ae61132e3398e0b44a93e6d7830968/msgpack-1.0.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cb70766519500281815dfd7a87d3a178acf7ce95390544b8c90587d76b227681", size = 532614, upload-time = "2023-09-28T13:18:44.679Z" }, - { url = "https://files.pythonhosted.org/packages/9b/07/0b3f089684ca330602b2994248eda2898a7232e4b63882b9271164ef672e/msgpack-1.0.7-cp310-cp310-win32.whl", hash = "sha256:b610ff0f24e9f11c9ae653c67ff8cc03c075131401b3e5ef4b82570d1728f8a9", size = 216340, upload-time = "2023-09-28T13:18:46.588Z" }, - { url = "https://files.pythonhosted.org/packages/4b/14/c62fbc8dff118f1558e43b9469d56a1f37bbb35febadc3163efaedd01500/msgpack-1.0.7-cp310-cp310-win_amd64.whl", hash = "sha256:a40821a89dc373d6427e2b44b572efc36a2778d3f543299e2f24eb1a5de65415", size = 222828, upload-time = "2023-09-28T13:18:47.875Z" }, { url = "https://files.pythonhosted.org/packages/f9/b3/309de40dc7406b7f3492332c5ee2b492a593c2a9bb97ea48ebf2f5279999/msgpack-1.0.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:576eb384292b139821c41995523654ad82d1916da6a60cff129c715a6223ea84", size = 305096, upload-time = "2023-09-28T13:18:49.678Z" }, { url = "https://files.pythonhosted.org/packages/15/56/a677cd761a2cefb2e3ffe7e684633294dccb161d78e8ea6da9277e45b4a2/msgpack-1.0.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:730076207cb816138cf1af7f7237b208340a2c5e749707457d70705715c93b93", size = 235210, upload-time = "2023-09-28T13:18:51.039Z" }, { url = "https://files.pythonhosted.org/packages/f5/4e/1ab4a982cbd90f988e49f849fc1212f2c04a59870c59daabf8950617e2aa/msgpack-1.0.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:85765fdf4b27eb5086f05ac0491090fc76f4f2b28e09d9350c31aac25a5aaff8", size = 231952, upload-time = "2023-09-28T13:18:52.871Z" }, @@ -1700,47 +1479,41 @@ wheels = [ [[package]] name = "mypy" -version = "1.18.2" +version = "1.19.1" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "librt", marker = "platform_python_implementation != 'PyPy'" }, { name = "mypy-extensions" }, { name = "pathspec" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c0/77/8f0d0001ffad290cef2f7f216f96c814866248a0b92a722365ed54648e7e/mypy-1.18.2.tar.gz", hash = "sha256:06a398102a5f203d7477b2923dda3634c36727fa5c237d8f859ef90c42a9924b", size = 3448846, upload-time = "2025-09-19T00:11:10.519Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f5/db/4efed9504bc01309ab9c2da7e352cc223569f05478012b5d9ece38fd44d2/mypy-1.19.1.tar.gz", hash = "sha256:19d88bb05303fe63f71dd2c6270daca27cb9401c4ca8255fe50d1d920e0eb9ba", size = 3582404, upload-time = "2025-12-15T05:03:48.42Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/03/6f/657961a0743cff32e6c0611b63ff1c1970a0b482ace35b069203bf705187/mypy-1.18.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c1eab0cf6294dafe397c261a75f96dc2c31bffe3b944faa24db5def4e2b0f77c", size = 12807973, upload-time = "2025-09-19T00:10:35.282Z" }, - { url = "https://files.pythonhosted.org/packages/10/e9/420822d4f661f13ca8900f5fa239b40ee3be8b62b32f3357df9a3045a08b/mypy-1.18.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a780ca61fc239e4865968ebc5240bb3bf610ef59ac398de9a7421b54e4a207e", size = 11896527, upload-time = "2025-09-19T00:10:55.791Z" }, - { url = "https://files.pythonhosted.org/packages/aa/73/a05b2bbaa7005f4642fcfe40fb73f2b4fb6bb44229bd585b5878e9a87ef8/mypy-1.18.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:448acd386266989ef11662ce3c8011fd2a7b632e0ec7d61a98edd8e27472225b", size = 12507004, upload-time = "2025-09-19T00:11:05.411Z" }, - { url = "https://files.pythonhosted.org/packages/4f/01/f6e4b9f0d031c11ccbd6f17da26564f3a0f3c4155af344006434b0a05a9d/mypy-1.18.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f9e171c465ad3901dc652643ee4bffa8e9fef4d7d0eece23b428908c77a76a66", size = 13245947, upload-time = "2025-09-19T00:10:46.923Z" }, - { url = "https://files.pythonhosted.org/packages/d7/97/19727e7499bfa1ae0773d06afd30ac66a58ed7437d940c70548634b24185/mypy-1.18.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:592ec214750bc00741af1f80cbf96b5013d81486b7bb24cb052382c19e40b428", size = 13499217, upload-time = "2025-09-19T00:09:39.472Z" }, - { url = "https://files.pythonhosted.org/packages/9f/4f/90dc8c15c1441bf31cf0f9918bb077e452618708199e530f4cbd5cede6ff/mypy-1.18.2-cp310-cp310-win_amd64.whl", hash = "sha256:7fb95f97199ea11769ebe3638c29b550b5221e997c63b14ef93d2e971606ebed", size = 9766753, upload-time = "2025-09-19T00:10:49.161Z" }, - { url = "https://files.pythonhosted.org/packages/88/87/cafd3ae563f88f94eec33f35ff722d043e09832ea8530ef149ec1efbaf08/mypy-1.18.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:807d9315ab9d464125aa9fcf6d84fde6e1dc67da0b6f80e7405506b8ac72bc7f", size = 12731198, upload-time = "2025-09-19T00:09:44.857Z" }, - { url = "https://files.pythonhosted.org/packages/0f/e0/1e96c3d4266a06d4b0197ace5356d67d937d8358e2ee3ffac71faa843724/mypy-1.18.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:776bb00de1778caf4db739c6e83919c1d85a448f71979b6a0edd774ea8399341", size = 11817879, upload-time = "2025-09-19T00:09:47.131Z" }, - { url = "https://files.pythonhosted.org/packages/72/ef/0c9ba89eb03453e76bdac5a78b08260a848c7bfc5d6603634774d9cd9525/mypy-1.18.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1379451880512ffce14505493bd9fe469e0697543717298242574882cf8cdb8d", size = 12427292, upload-time = "2025-09-19T00:10:22.472Z" }, - { url = "https://files.pythonhosted.org/packages/1a/52/ec4a061dd599eb8179d5411d99775bec2a20542505988f40fc2fee781068/mypy-1.18.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1331eb7fd110d60c24999893320967594ff84c38ac6d19e0a76c5fd809a84c86", size = 13163750, upload-time = "2025-09-19T00:09:51.472Z" }, - { url = "https://files.pythonhosted.org/packages/c4/5f/2cf2ceb3b36372d51568f2208c021870fe7834cf3186b653ac6446511839/mypy-1.18.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3ca30b50a51e7ba93b00422e486cbb124f1c56a535e20eff7b2d6ab72b3b2e37", size = 13351827, upload-time = "2025-09-19T00:09:58.311Z" }, - { url = "https://files.pythonhosted.org/packages/c8/7d/2697b930179e7277529eaaec1513f8de622818696857f689e4a5432e5e27/mypy-1.18.2-cp311-cp311-win_amd64.whl", hash = "sha256:664dc726e67fa54e14536f6e1224bcfce1d9e5ac02426d2326e2bb4e081d1ce8", size = 9757983, upload-time = "2025-09-19T00:10:09.071Z" }, - { url = "https://files.pythonhosted.org/packages/07/06/dfdd2bc60c66611dd8335f463818514733bc763e4760dee289dcc33df709/mypy-1.18.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:33eca32dd124b29400c31d7cf784e795b050ace0e1f91b8dc035672725617e34", size = 12908273, upload-time = "2025-09-19T00:10:58.321Z" }, - { url = "https://files.pythonhosted.org/packages/81/14/6a9de6d13a122d5608e1a04130724caf9170333ac5a924e10f670687d3eb/mypy-1.18.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a3c47adf30d65e89b2dcd2fa32f3aeb5e94ca970d2c15fcb25e297871c8e4764", size = 11920910, upload-time = "2025-09-19T00:10:20.043Z" }, - { url = "https://files.pythonhosted.org/packages/5f/a9/b29de53e42f18e8cc547e38daa9dfa132ffdc64f7250e353f5c8cdd44bee/mypy-1.18.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d6c838e831a062f5f29d11c9057c6009f60cb294fea33a98422688181fe2893", size = 12465585, upload-time = "2025-09-19T00:10:33.005Z" }, - { url = "https://files.pythonhosted.org/packages/77/ae/6c3d2c7c61ff21f2bee938c917616c92ebf852f015fb55917fd6e2811db2/mypy-1.18.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01199871b6110a2ce984bde85acd481232d17413868c9807e95c1b0739a58914", size = 13348562, upload-time = "2025-09-19T00:10:11.51Z" }, - { url = "https://files.pythonhosted.org/packages/4d/31/aec68ab3b4aebdf8f36d191b0685d99faa899ab990753ca0fee60fb99511/mypy-1.18.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a2afc0fa0b0e91b4599ddfe0f91e2c26c2b5a5ab263737e998d6817874c5f7c8", size = 13533296, upload-time = "2025-09-19T00:10:06.568Z" }, - { url = "https://files.pythonhosted.org/packages/9f/83/abcb3ad9478fca3ebeb6a5358bb0b22c95ea42b43b7789c7fb1297ca44f4/mypy-1.18.2-cp312-cp312-win_amd64.whl", hash = "sha256:d8068d0afe682c7c4897c0f7ce84ea77f6de953262b12d07038f4d296d547074", size = 9828828, upload-time = "2025-09-19T00:10:28.203Z" }, - { url = "https://files.pythonhosted.org/packages/5f/04/7f462e6fbba87a72bc8097b93f6842499c428a6ff0c81dd46948d175afe8/mypy-1.18.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:07b8b0f580ca6d289e69209ec9d3911b4a26e5abfde32228a288eb79df129fcc", size = 12898728, upload-time = "2025-09-19T00:10:01.33Z" }, - { url = "https://files.pythonhosted.org/packages/99/5b/61ed4efb64f1871b41fd0b82d29a64640f3516078f6c7905b68ab1ad8b13/mypy-1.18.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ed4482847168439651d3feee5833ccedbf6657e964572706a2adb1f7fa4dfe2e", size = 11910758, upload-time = "2025-09-19T00:10:42.607Z" }, - { url = "https://files.pythonhosted.org/packages/3c/46/d297d4b683cc89a6e4108c4250a6a6b717f5fa96e1a30a7944a6da44da35/mypy-1.18.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3ad2afadd1e9fea5cf99a45a822346971ede8685cc581ed9cd4d42eaf940986", size = 12475342, upload-time = "2025-09-19T00:11:00.371Z" }, - { url = "https://files.pythonhosted.org/packages/83/45/4798f4d00df13eae3bfdf726c9244bcb495ab5bd588c0eed93a2f2dd67f3/mypy-1.18.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a431a6f1ef14cf8c144c6b14793a23ec4eae3db28277c358136e79d7d062f62d", size = 13338709, upload-time = "2025-09-19T00:11:03.358Z" }, - { url = "https://files.pythonhosted.org/packages/d7/09/479f7358d9625172521a87a9271ddd2441e1dab16a09708f056e97007207/mypy-1.18.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7ab28cc197f1dd77a67e1c6f35cd1f8e8b73ed2217e4fc005f9e6a504e46e7ba", size = 13529806, upload-time = "2025-09-19T00:10:26.073Z" }, - { url = "https://files.pythonhosted.org/packages/71/cf/ac0f2c7e9d0ea3c75cd99dff7aec1c9df4a1376537cb90e4c882267ee7e9/mypy-1.18.2-cp313-cp313-win_amd64.whl", hash = "sha256:0e2785a84b34a72ba55fb5daf079a1003a34c05b22238da94fcae2bbe46f3544", size = 9833262, upload-time = "2025-09-19T00:10:40.035Z" }, - { url = "https://files.pythonhosted.org/packages/5a/0c/7d5300883da16f0063ae53996358758b2a2df2a09c72a5061fa79a1f5006/mypy-1.18.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:62f0e1e988ad41c2a110edde6c398383a889d95b36b3e60bcf155f5164c4fdce", size = 12893775, upload-time = "2025-09-19T00:10:03.814Z" }, - { url = "https://files.pythonhosted.org/packages/50/df/2cffbf25737bdb236f60c973edf62e3e7b4ee1c25b6878629e88e2cde967/mypy-1.18.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8795a039bab805ff0c1dfdb8cd3344642c2b99b8e439d057aba30850b8d3423d", size = 11936852, upload-time = "2025-09-19T00:10:51.631Z" }, - { url = "https://files.pythonhosted.org/packages/be/50/34059de13dd269227fb4a03be1faee6e2a4b04a2051c82ac0a0b5a773c9a/mypy-1.18.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ca1e64b24a700ab5ce10133f7ccd956a04715463d30498e64ea8715236f9c9c", size = 12480242, upload-time = "2025-09-19T00:11:07.955Z" }, - { url = "https://files.pythonhosted.org/packages/5b/11/040983fad5132d85914c874a2836252bbc57832065548885b5bb5b0d4359/mypy-1.18.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d924eef3795cc89fecf6bedc6ed32b33ac13e8321344f6ddbf8ee89f706c05cb", size = 13326683, upload-time = "2025-09-19T00:09:55.572Z" }, - { url = "https://files.pythonhosted.org/packages/e9/ba/89b2901dd77414dd7a8c8729985832a5735053be15b744c18e4586e506ef/mypy-1.18.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:20c02215a080e3a2be3aa50506c67242df1c151eaba0dcbc1e4e557922a26075", size = 13514749, upload-time = "2025-09-19T00:10:44.827Z" }, - { url = "https://files.pythonhosted.org/packages/25/bc/cc98767cffd6b2928ba680f3e5bc969c4152bf7c2d83f92f5a504b92b0eb/mypy-1.18.2-cp314-cp314-win_amd64.whl", hash = "sha256:749b5f83198f1ca64345603118a6f01a4e99ad4bf9d103ddc5a3200cc4614adf", size = 9982959, upload-time = "2025-09-19T00:10:37.344Z" }, - { url = "https://files.pythonhosted.org/packages/87/e3/be76d87158ebafa0309946c4a73831974d4d6ab4f4ef40c3b53a385a66fd/mypy-1.18.2-py3-none-any.whl", hash = "sha256:22a1748707dd62b58d2ae53562ffc4d7f8bcc727e8ac7cbc69c053ddc874d47e", size = 2352367, upload-time = "2025-09-19T00:10:15.489Z" }, + { url = "https://files.pythonhosted.org/packages/ef/47/6b3ebabd5474d9cdc170d1342fbf9dddc1b0ec13ec90bf9004ee6f391c31/mypy-1.19.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d8dfc6ab58ca7dda47d9237349157500468e404b17213d44fc1cb77bce532288", size = 13028539, upload-time = "2025-12-15T05:03:44.129Z" }, + { url = "https://files.pythonhosted.org/packages/5c/a6/ac7c7a88a3c9c54334f53a941b765e6ec6c4ebd65d3fe8cdcfbe0d0fd7db/mypy-1.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e3f276d8493c3c97930e354b2595a44a21348b320d859fb4a2b9f66da9ed27ab", size = 12083163, upload-time = "2025-12-15T05:03:37.679Z" }, + { url = "https://files.pythonhosted.org/packages/67/af/3afa9cf880aa4a2c803798ac24f1d11ef72a0c8079689fac5cfd815e2830/mypy-1.19.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2abb24cf3f17864770d18d673c85235ba52456b36a06b6afc1e07c1fdcd3d0e6", size = 12687629, upload-time = "2025-12-15T05:02:31.526Z" }, + { url = "https://files.pythonhosted.org/packages/2d/46/20f8a7114a56484ab268b0ab372461cb3a8f7deed31ea96b83a4e4cfcfca/mypy-1.19.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a009ffa5a621762d0c926a078c2d639104becab69e79538a494bcccb62cc0331", size = 13436933, upload-time = "2025-12-15T05:03:15.606Z" }, + { url = "https://files.pythonhosted.org/packages/5b/f8/33b291ea85050a21f15da910002460f1f445f8007adb29230f0adea279cb/mypy-1.19.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f7cee03c9a2e2ee26ec07479f38ea9c884e301d42c6d43a19d20fb014e3ba925", size = 13661754, upload-time = "2025-12-15T05:02:26.731Z" }, + { url = "https://files.pythonhosted.org/packages/fd/a3/47cbd4e85bec4335a9cd80cf67dbc02be21b5d4c9c23ad6b95d6c5196bac/mypy-1.19.1-cp311-cp311-win_amd64.whl", hash = "sha256:4b84a7a18f41e167f7995200a1d07a4a6810e89d29859df936f1c3923d263042", size = 10055772, upload-time = "2025-12-15T05:03:26.179Z" }, + { url = "https://files.pythonhosted.org/packages/06/8a/19bfae96f6615aa8a0604915512e0289b1fad33d5909bf7244f02935d33a/mypy-1.19.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a8174a03289288c1f6c46d55cef02379b478bfbc8e358e02047487cad44c6ca1", size = 13206053, upload-time = "2025-12-15T05:03:46.622Z" }, + { url = "https://files.pythonhosted.org/packages/a5/34/3e63879ab041602154ba2a9f99817bb0c85c4df19a23a1443c8986e4d565/mypy-1.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffcebe56eb09ff0c0885e750036a095e23793ba6c2e894e7e63f6d89ad51f22e", size = 12219134, upload-time = "2025-12-15T05:03:24.367Z" }, + { url = "https://files.pythonhosted.org/packages/89/cc/2db6f0e95366b630364e09845672dbee0cbf0bbe753a204b29a944967cd9/mypy-1.19.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b64d987153888790bcdb03a6473d321820597ab8dd9243b27a92153c4fa50fd2", size = 12731616, upload-time = "2025-12-15T05:02:44.725Z" }, + { url = "https://files.pythonhosted.org/packages/00/be/dd56c1fd4807bc1eba1cf18b2a850d0de7bacb55e158755eb79f77c41f8e/mypy-1.19.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c35d298c2c4bba75feb2195655dfea8124d855dfd7343bf8b8c055421eaf0cf8", size = 13620847, upload-time = "2025-12-15T05:03:39.633Z" }, + { url = "https://files.pythonhosted.org/packages/6d/42/332951aae42b79329f743bf1da088cd75d8d4d9acc18fbcbd84f26c1af4e/mypy-1.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:34c81968774648ab5ac09c29a375fdede03ba253f8f8287847bd480782f73a6a", size = 13834976, upload-time = "2025-12-15T05:03:08.786Z" }, + { url = "https://files.pythonhosted.org/packages/6f/63/e7493e5f90e1e085c562bb06e2eb32cae27c5057b9653348d38b47daaecc/mypy-1.19.1-cp312-cp312-win_amd64.whl", hash = "sha256:b10e7c2cd7870ba4ad9b2d8a6102eb5ffc1f16ca35e3de6bfa390c1113029d13", size = 10118104, upload-time = "2025-12-15T05:03:10.834Z" }, + { url = "https://files.pythonhosted.org/packages/de/9f/a6abae693f7a0c697dbb435aac52e958dc8da44e92e08ba88d2e42326176/mypy-1.19.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e3157c7594ff2ef1634ee058aafc56a82db665c9438fd41b390f3bde1ab12250", size = 13201927, upload-time = "2025-12-15T05:02:29.138Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a4/45c35ccf6e1c65afc23a069f50e2c66f46bd3798cbe0d680c12d12935caa/mypy-1.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdb12f69bcc02700c2b47e070238f42cb87f18c0bc1fc4cdb4fb2bc5fd7a3b8b", size = 12206730, upload-time = "2025-12-15T05:03:01.325Z" }, + { url = "https://files.pythonhosted.org/packages/05/bb/cdcf89678e26b187650512620eec8368fded4cfd99cfcb431e4cdfd19dec/mypy-1.19.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f859fb09d9583a985be9a493d5cfc5515b56b08f7447759a0c5deaf68d80506e", size = 12724581, upload-time = "2025-12-15T05:03:20.087Z" }, + { url = "https://files.pythonhosted.org/packages/d1/32/dd260d52babf67bad8e6770f8e1102021877ce0edea106e72df5626bb0ec/mypy-1.19.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c9a6538e0415310aad77cb94004ca6482330fece18036b5f360b62c45814c4ef", size = 13616252, upload-time = "2025-12-15T05:02:49.036Z" }, + { url = "https://files.pythonhosted.org/packages/71/d0/5e60a9d2e3bd48432ae2b454b7ef2b62a960ab51292b1eda2a95edd78198/mypy-1.19.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:da4869fc5e7f62a88f3fe0b5c919d1d9f7ea3cef92d3689de2823fd27e40aa75", size = 13840848, upload-time = "2025-12-15T05:02:55.95Z" }, + { url = "https://files.pythonhosted.org/packages/98/76/d32051fa65ecf6cc8c6610956473abdc9b4c43301107476ac03559507843/mypy-1.19.1-cp313-cp313-win_amd64.whl", hash = "sha256:016f2246209095e8eda7538944daa1d60e1e8134d98983b9fc1e92c1fc0cb8dd", size = 10135510, upload-time = "2025-12-15T05:02:58.438Z" }, + { url = "https://files.pythonhosted.org/packages/de/eb/b83e75f4c820c4247a58580ef86fcd35165028f191e7e1ba57128c52782d/mypy-1.19.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:06e6170bd5836770e8104c8fdd58e5e725cfeb309f0a6c681a811f557e97eac1", size = 13199744, upload-time = "2025-12-15T05:03:30.823Z" }, + { url = "https://files.pythonhosted.org/packages/94/28/52785ab7bfa165f87fcbb61547a93f98bb20e7f82f90f165a1f69bce7b3d/mypy-1.19.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:804bd67b8054a85447c8954215a906d6eff9cabeabe493fb6334b24f4bfff718", size = 12215815, upload-time = "2025-12-15T05:02:42.323Z" }, + { url = "https://files.pythonhosted.org/packages/0a/c6/bdd60774a0dbfb05122e3e925f2e9e846c009e479dcec4821dad881f5b52/mypy-1.19.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:21761006a7f497cb0d4de3d8ef4ca70532256688b0523eee02baf9eec895e27b", size = 12740047, upload-time = "2025-12-15T05:03:33.168Z" }, + { url = "https://files.pythonhosted.org/packages/32/2a/66ba933fe6c76bd40d1fe916a83f04fed253152f451a877520b3c4a5e41e/mypy-1.19.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:28902ee51f12e0f19e1e16fbe2f8f06b6637f482c459dd393efddd0ec7f82045", size = 13601998, upload-time = "2025-12-15T05:03:13.056Z" }, + { url = "https://files.pythonhosted.org/packages/e3/da/5055c63e377c5c2418760411fd6a63ee2b96cf95397259038756c042574f/mypy-1.19.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:481daf36a4c443332e2ae9c137dfee878fcea781a2e3f895d54bd3002a900957", size = 13807476, upload-time = "2025-12-15T05:03:17.977Z" }, + { url = "https://files.pythonhosted.org/packages/cd/09/4ebd873390a063176f06b0dbf1f7783dd87bd120eae7727fa4ae4179b685/mypy-1.19.1-cp314-cp314-win_amd64.whl", hash = "sha256:8bb5c6f6d043655e055be9b542aa5f3bdd30e4f3589163e85f93f3640060509f", size = 10281872, upload-time = "2025-12-15T05:03:05.549Z" }, + { url = "https://files.pythonhosted.org/packages/8d/f4/4ce9a05ce5ded1de3ec1c1d96cf9f9504a04e54ce0ed55cfa38619a32b8d/mypy-1.19.1-py3-none-any.whl", hash = "sha256:f1235f5ea01b7db5468d53ece6aaddf1ad0b88d9e7462b86ef96fe04995d7247", size = 2471239, upload-time = "2025-12-15T05:03:07.248Z" }, ] [[package]] @@ -1763,34 +1536,83 @@ wheels = [ [[package]] name = "numpy" -version = "1.26.4" +version = "2.3.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/65/6e/09db70a523a96d25e115e71cc56a6f9031e7b8cd166c1ac8438307c14058/numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010", size = 15786129, upload-time = "2024-02-06T00:26:44.495Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/f4/098d2270d52b41f1bd7db9fc288aaa0400cb48c2a3e2af6fa365d9720947/numpy-2.3.4.tar.gz", hash = "sha256:a7d018bfedb375a8d979ac758b120ba846a7fe764911a64465fd87b8729f4a6a", size = 20582187, upload-time = "2025-10-15T16:18:11.77Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/94/ace0fdea5241a27d13543ee117cbc65868e82213fb31a8eb7fe9ff23f313/numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0", size = 20631468, upload-time = "2024-02-05T23:48:01.194Z" }, - { url = "https://files.pythonhosted.org/packages/20/f7/b24208eba89f9d1b58c1668bc6c8c4fd472b20c45573cb767f59d49fb0f6/numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a", size = 13966411, upload-time = "2024-02-05T23:48:29.038Z" }, - { url = "https://files.pythonhosted.org/packages/fc/a5/4beee6488160798683eed5bdb7eead455892c3b4e1f78d79d8d3f3b084ac/numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4", size = 14219016, upload-time = "2024-02-05T23:48:54.098Z" }, - { url = "https://files.pythonhosted.org/packages/4b/d7/ecf66c1cd12dc28b4040b15ab4d17b773b87fa9d29ca16125de01adb36cd/numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f", size = 18240889, upload-time = "2024-02-05T23:49:25.361Z" }, - { url = "https://files.pythonhosted.org/packages/24/03/6f229fe3187546435c4f6f89f6d26c129d4f5bed40552899fcf1f0bf9e50/numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a", size = 13876746, upload-time = "2024-02-05T23:49:51.983Z" }, - { url = "https://files.pythonhosted.org/packages/39/fe/39ada9b094f01f5a35486577c848fe274e374bbf8d8f472e1423a0bbd26d/numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2", size = 18078620, upload-time = "2024-02-05T23:50:22.515Z" }, - { url = "https://files.pythonhosted.org/packages/d5/ef/6ad11d51197aad206a9ad2286dc1aac6a378059e06e8cf22cd08ed4f20dc/numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07", size = 5972659, upload-time = "2024-02-05T23:50:35.834Z" }, - { url = "https://files.pythonhosted.org/packages/19/77/538f202862b9183f54108557bfda67e17603fc560c384559e769321c9d92/numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5", size = 15808905, upload-time = "2024-02-05T23:51:03.701Z" }, - { url = "https://files.pythonhosted.org/packages/11/57/baae43d14fe163fa0e4c47f307b6b2511ab8d7d30177c491960504252053/numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71", size = 20630554, upload-time = "2024-02-05T23:51:50.149Z" }, - { url = "https://files.pythonhosted.org/packages/1a/2e/151484f49fd03944c4a3ad9c418ed193cfd02724e138ac8a9505d056c582/numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef", size = 13997127, upload-time = "2024-02-05T23:52:15.314Z" }, - { url = "https://files.pythonhosted.org/packages/79/ae/7e5b85136806f9dadf4878bf73cf223fe5c2636818ba3ab1c585d0403164/numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e", size = 14222994, upload-time = "2024-02-05T23:52:47.569Z" }, - { url = "https://files.pythonhosted.org/packages/3a/d0/edc009c27b406c4f9cbc79274d6e46d634d139075492ad055e3d68445925/numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5", size = 18252005, upload-time = "2024-02-05T23:53:15.637Z" }, - { url = "https://files.pythonhosted.org/packages/09/bf/2b1aaf8f525f2923ff6cfcf134ae5e750e279ac65ebf386c75a0cf6da06a/numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a", size = 13885297, upload-time = "2024-02-05T23:53:42.16Z" }, - { url = "https://files.pythonhosted.org/packages/df/a0/4e0f14d847cfc2a633a1c8621d00724f3206cfeddeb66d35698c4e2cf3d2/numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a", size = 18093567, upload-time = "2024-02-05T23:54:11.696Z" }, - { url = "https://files.pythonhosted.org/packages/d2/b7/a734c733286e10a7f1a8ad1ae8c90f2d33bf604a96548e0a4a3a6739b468/numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20", size = 5968812, upload-time = "2024-02-05T23:54:26.453Z" }, - { url = "https://files.pythonhosted.org/packages/3f/6b/5610004206cf7f8e7ad91c5a85a8c71b2f2f8051a0c0c4d5916b76d6cbb2/numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2", size = 15811913, upload-time = "2024-02-05T23:54:53.933Z" }, - { url = "https://files.pythonhosted.org/packages/95/12/8f2020a8e8b8383ac0177dc9570aad031a3beb12e38847f7129bacd96228/numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218", size = 20335901, upload-time = "2024-02-05T23:55:32.801Z" }, - { url = "https://files.pythonhosted.org/packages/75/5b/ca6c8bd14007e5ca171c7c03102d17b4f4e0ceb53957e8c44343a9546dcc/numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b", size = 13685868, upload-time = "2024-02-05T23:55:56.28Z" }, - { url = "https://files.pythonhosted.org/packages/79/f8/97f10e6755e2a7d027ca783f63044d5b1bc1ae7acb12afe6a9b4286eac17/numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b", size = 13925109, upload-time = "2024-02-05T23:56:20.368Z" }, - { url = "https://files.pythonhosted.org/packages/0f/50/de23fde84e45f5c4fda2488c759b69990fd4512387a8632860f3ac9cd225/numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed", size = 17950613, upload-time = "2024-02-05T23:56:56.054Z" }, - { url = "https://files.pythonhosted.org/packages/4c/0c/9c603826b6465e82591e05ca230dfc13376da512b25ccd0894709b054ed0/numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a", size = 13572172, upload-time = "2024-02-05T23:57:21.56Z" }, - { url = "https://files.pythonhosted.org/packages/76/8c/2ba3902e1a0fc1c74962ea9bb33a534bb05984ad7ff9515bf8d07527cadd/numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0", size = 17786643, upload-time = "2024-02-05T23:57:56.585Z" }, - { url = "https://files.pythonhosted.org/packages/28/4a/46d9e65106879492374999e76eb85f87b15328e06bd1550668f79f7b18c6/numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110", size = 5677803, upload-time = "2024-02-05T23:58:08.963Z" }, - { url = "https://files.pythonhosted.org/packages/16/2e/86f24451c2d530c88daf997cb8d6ac622c1d40d19f5a031ed68a4b73a374/numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818", size = 15517754, upload-time = "2024-02-05T23:58:36.364Z" }, + { url = "https://files.pythonhosted.org/packages/60/e7/0e07379944aa8afb49a556a2b54587b828eb41dc9adc56fb7615b678ca53/numpy-2.3.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e78aecd2800b32e8347ce49316d3eaf04aed849cd5b38e0af39f829a4e59f5eb", size = 21259519, upload-time = "2025-10-15T16:15:19.012Z" }, + { url = "https://files.pythonhosted.org/packages/d0/cb/5a69293561e8819b09e34ed9e873b9a82b5f2ade23dce4c51dc507f6cfe1/numpy-2.3.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7fd09cc5d65bda1e79432859c40978010622112e9194e581e3415a3eccc7f43f", size = 14452796, upload-time = "2025-10-15T16:15:23.094Z" }, + { url = "https://files.pythonhosted.org/packages/e4/04/ff11611200acd602a1e5129e36cfd25bf01ad8e5cf927baf2e90236eb02e/numpy-2.3.4-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:1b219560ae2c1de48ead517d085bc2d05b9433f8e49d0955c82e8cd37bd7bf36", size = 5381639, upload-time = "2025-10-15T16:15:25.572Z" }, + { url = "https://files.pythonhosted.org/packages/ea/77/e95c757a6fe7a48d28a009267408e8aa382630cc1ad1db7451b3bc21dbb4/numpy-2.3.4-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:bafa7d87d4c99752d07815ed7a2c0964f8ab311eb8168f41b910bd01d15b6032", size = 6914296, upload-time = "2025-10-15T16:15:27.079Z" }, + { url = "https://files.pythonhosted.org/packages/a3/d2/137c7b6841c942124eae921279e5c41b1c34bab0e6fc60c7348e69afd165/numpy-2.3.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36dc13af226aeab72b7abad501d370d606326a0029b9f435eacb3b8c94b8a8b7", size = 14591904, upload-time = "2025-10-15T16:15:29.044Z" }, + { url = "https://files.pythonhosted.org/packages/bb/32/67e3b0f07b0aba57a078c4ab777a9e8e6bc62f24fb53a2337f75f9691699/numpy-2.3.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a7b2f9a18b5ff9824a6af80de4f37f4ec3c2aab05ef08f51c77a093f5b89adda", size = 16939602, upload-time = "2025-10-15T16:15:31.106Z" }, + { url = "https://files.pythonhosted.org/packages/95/22/9639c30e32c93c4cee3ccdb4b09c2d0fbff4dcd06d36b357da06146530fb/numpy-2.3.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9984bd645a8db6ca15d850ff996856d8762c51a2239225288f08f9050ca240a0", size = 16372661, upload-time = "2025-10-15T16:15:33.546Z" }, + { url = "https://files.pythonhosted.org/packages/12/e9/a685079529be2b0156ae0c11b13d6be647743095bb51d46589e95be88086/numpy-2.3.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:64c5825affc76942973a70acf438a8ab618dbd692b84cd5ec40a0a0509edc09a", size = 18884682, upload-time = "2025-10-15T16:15:36.105Z" }, + { url = "https://files.pythonhosted.org/packages/cf/85/f6f00d019b0cc741e64b4e00ce865a57b6bed945d1bbeb1ccadbc647959b/numpy-2.3.4-cp311-cp311-win32.whl", hash = "sha256:ed759bf7a70342f7817d88376eb7142fab9fef8320d6019ef87fae05a99874e1", size = 6570076, upload-time = "2025-10-15T16:15:38.225Z" }, + { url = "https://files.pythonhosted.org/packages/7d/10/f8850982021cb90e2ec31990291f9e830ce7d94eef432b15066e7cbe0bec/numpy-2.3.4-cp311-cp311-win_amd64.whl", hash = "sha256:faba246fb30ea2a526c2e9645f61612341de1a83fb1e0c5edf4ddda5a9c10996", size = 13089358, upload-time = "2025-10-15T16:15:40.404Z" }, + { url = "https://files.pythonhosted.org/packages/d1/ad/afdd8351385edf0b3445f9e24210a9c3971ef4de8fd85155462fc4321d79/numpy-2.3.4-cp311-cp311-win_arm64.whl", hash = "sha256:4c01835e718bcebe80394fd0ac66c07cbb90147ebbdad3dcecd3f25de2ae7e2c", size = 10462292, upload-time = "2025-10-15T16:15:42.896Z" }, + { url = "https://files.pythonhosted.org/packages/96/7a/02420400b736f84317e759291b8edaeee9dc921f72b045475a9cbdb26b17/numpy-2.3.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ef1b5a3e808bc40827b5fa2c8196151a4c5abe110e1726949d7abddfe5c7ae11", size = 20957727, upload-time = "2025-10-15T16:15:44.9Z" }, + { url = "https://files.pythonhosted.org/packages/18/90/a014805d627aa5750f6f0e878172afb6454552da929144b3c07fcae1bb13/numpy-2.3.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c2f91f496a87235c6aaf6d3f3d89b17dba64996abadccb289f48456cff931ca9", size = 14187262, upload-time = "2025-10-15T16:15:47.761Z" }, + { url = "https://files.pythonhosted.org/packages/c7/e4/0a94b09abe89e500dc748e7515f21a13e30c5c3fe3396e6d4ac108c25fca/numpy-2.3.4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f77e5b3d3da652b474cc80a14084927a5e86a5eccf54ca8ca5cbd697bf7f2667", size = 5115992, upload-time = "2025-10-15T16:15:50.144Z" }, + { url = "https://files.pythonhosted.org/packages/88/dd/db77c75b055c6157cbd4f9c92c4458daef0dd9cbe6d8d2fe7f803cb64c37/numpy-2.3.4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:8ab1c5f5ee40d6e01cbe96de5863e39b215a4d24e7d007cad56c7184fdf4aeef", size = 6648672, upload-time = "2025-10-15T16:15:52.442Z" }, + { url = "https://files.pythonhosted.org/packages/e1/e6/e31b0d713719610e406c0ea3ae0d90760465b086da8783e2fd835ad59027/numpy-2.3.4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:77b84453f3adcb994ddbd0d1c5d11db2d6bda1a2b7fd5ac5bd4649d6f5dc682e", size = 14284156, upload-time = "2025-10-15T16:15:54.351Z" }, + { url = "https://files.pythonhosted.org/packages/f9/58/30a85127bfee6f108282107caf8e06a1f0cc997cb6b52cdee699276fcce4/numpy-2.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4121c5beb58a7f9e6dfdee612cb24f4df5cd4db6e8261d7f4d7450a997a65d6a", size = 16641271, upload-time = "2025-10-15T16:15:56.67Z" }, + { url = "https://files.pythonhosted.org/packages/06/f2/2e06a0f2adf23e3ae29283ad96959267938d0efd20a2e25353b70065bfec/numpy-2.3.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:65611ecbb00ac9846efe04db15cbe6186f562f6bb7e5e05f077e53a599225d16", size = 16059531, upload-time = "2025-10-15T16:15:59.412Z" }, + { url = "https://files.pythonhosted.org/packages/b0/e7/b106253c7c0d5dc352b9c8fab91afd76a93950998167fa3e5afe4ef3a18f/numpy-2.3.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dabc42f9c6577bcc13001b8810d300fe814b4cfbe8a92c873f269484594f9786", size = 18578983, upload-time = "2025-10-15T16:16:01.804Z" }, + { url = "https://files.pythonhosted.org/packages/73/e3/04ecc41e71462276ee867ccbef26a4448638eadecf1bc56772c9ed6d0255/numpy-2.3.4-cp312-cp312-win32.whl", hash = "sha256:a49d797192a8d950ca59ee2d0337a4d804f713bb5c3c50e8db26d49666e351dc", size = 6291380, upload-time = "2025-10-15T16:16:03.938Z" }, + { url = "https://files.pythonhosted.org/packages/3d/a8/566578b10d8d0e9955b1b6cd5db4e9d4592dd0026a941ff7994cedda030a/numpy-2.3.4-cp312-cp312-win_amd64.whl", hash = "sha256:985f1e46358f06c2a09921e8921e2c98168ed4ae12ccd6e5e87a4f1857923f32", size = 12787999, upload-time = "2025-10-15T16:16:05.801Z" }, + { url = "https://files.pythonhosted.org/packages/58/22/9c903a957d0a8071b607f5b1bff0761d6e608b9a965945411f867d515db1/numpy-2.3.4-cp312-cp312-win_arm64.whl", hash = "sha256:4635239814149e06e2cb9db3dd584b2fa64316c96f10656983b8026a82e6e4db", size = 10197412, upload-time = "2025-10-15T16:16:07.854Z" }, + { url = "https://files.pythonhosted.org/packages/57/7e/b72610cc91edf138bc588df5150957a4937221ca6058b825b4725c27be62/numpy-2.3.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c090d4860032b857d94144d1a9976b8e36709e40386db289aaf6672de2a81966", size = 20950335, upload-time = "2025-10-15T16:16:10.304Z" }, + { url = "https://files.pythonhosted.org/packages/3e/46/bdd3370dcea2f95ef14af79dbf81e6927102ddf1cc54adc0024d61252fd9/numpy-2.3.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a13fc473b6db0be619e45f11f9e81260f7302f8d180c49a22b6e6120022596b3", size = 14179878, upload-time = "2025-10-15T16:16:12.595Z" }, + { url = "https://files.pythonhosted.org/packages/ac/01/5a67cb785bda60f45415d09c2bc245433f1c68dd82eef9c9002c508b5a65/numpy-2.3.4-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:3634093d0b428e6c32c3a69b78e554f0cd20ee420dcad5a9f3b2a63762ce4197", size = 5108673, upload-time = "2025-10-15T16:16:14.877Z" }, + { url = "https://files.pythonhosted.org/packages/c2/cd/8428e23a9fcebd33988f4cb61208fda832800ca03781f471f3727a820704/numpy-2.3.4-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:043885b4f7e6e232d7df4f51ffdef8c36320ee9d5f227b380ea636722c7ed12e", size = 6641438, upload-time = "2025-10-15T16:16:16.805Z" }, + { url = "https://files.pythonhosted.org/packages/3e/d1/913fe563820f3c6b079f992458f7331278dcd7ba8427e8e745af37ddb44f/numpy-2.3.4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4ee6a571d1e4f0ea6d5f22d6e5fbd6ed1dc2b18542848e1e7301bd190500c9d7", size = 14281290, upload-time = "2025-10-15T16:16:18.764Z" }, + { url = "https://files.pythonhosted.org/packages/9e/7e/7d306ff7cb143e6d975cfa7eb98a93e73495c4deabb7d1b5ecf09ea0fd69/numpy-2.3.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fc8a63918b04b8571789688b2780ab2b4a33ab44bfe8ccea36d3eba51228c953", size = 16636543, upload-time = "2025-10-15T16:16:21.072Z" }, + { url = "https://files.pythonhosted.org/packages/47/6a/8cfc486237e56ccfb0db234945552a557ca266f022d281a2f577b98e955c/numpy-2.3.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:40cc556d5abbc54aabe2b1ae287042d7bdb80c08edede19f0c0afb36ae586f37", size = 16056117, upload-time = "2025-10-15T16:16:23.369Z" }, + { url = "https://files.pythonhosted.org/packages/b1/0e/42cb5e69ea901e06ce24bfcc4b5664a56f950a70efdcf221f30d9615f3f3/numpy-2.3.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ecb63014bb7f4ce653f8be7f1df8cbc6093a5a2811211770f6606cc92b5a78fd", size = 18577788, upload-time = "2025-10-15T16:16:27.496Z" }, + { url = "https://files.pythonhosted.org/packages/86/92/41c3d5157d3177559ef0a35da50f0cda7fa071f4ba2306dd36818591a5bc/numpy-2.3.4-cp313-cp313-win32.whl", hash = "sha256:e8370eb6925bb8c1c4264fec52b0384b44f675f191df91cbe0140ec9f0955646", size = 6282620, upload-time = "2025-10-15T16:16:29.811Z" }, + { url = "https://files.pythonhosted.org/packages/09/97/fd421e8bc50766665ad35536c2bb4ef916533ba1fdd053a62d96cc7c8b95/numpy-2.3.4-cp313-cp313-win_amd64.whl", hash = "sha256:56209416e81a7893036eea03abcb91c130643eb14233b2515c90dcac963fe99d", size = 12784672, upload-time = "2025-10-15T16:16:31.589Z" }, + { url = "https://files.pythonhosted.org/packages/ad/df/5474fb2f74970ca8eb978093969b125a84cc3d30e47f82191f981f13a8a0/numpy-2.3.4-cp313-cp313-win_arm64.whl", hash = "sha256:a700a4031bc0fd6936e78a752eefb79092cecad2599ea9c8039c548bc097f9bc", size = 10196702, upload-time = "2025-10-15T16:16:33.902Z" }, + { url = "https://files.pythonhosted.org/packages/11/83/66ac031464ec1767ea3ed48ce40f615eb441072945e98693bec0bcd056cc/numpy-2.3.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:86966db35c4040fdca64f0816a1c1dd8dbd027d90fca5a57e00e1ca4cd41b879", size = 21049003, upload-time = "2025-10-15T16:16:36.101Z" }, + { url = "https://files.pythonhosted.org/packages/5f/99/5b14e0e686e61371659a1d5bebd04596b1d72227ce36eed121bb0aeab798/numpy-2.3.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:838f045478638b26c375ee96ea89464d38428c69170360b23a1a50fa4baa3562", size = 14302980, upload-time = "2025-10-15T16:16:39.124Z" }, + { url = "https://files.pythonhosted.org/packages/2c/44/e9486649cd087d9fc6920e3fc3ac2aba10838d10804b1e179fb7cbc4e634/numpy-2.3.4-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d7315ed1dab0286adca467377c8381cd748f3dc92235f22a7dfc42745644a96a", size = 5231472, upload-time = "2025-10-15T16:16:41.168Z" }, + { url = "https://files.pythonhosted.org/packages/3e/51/902b24fa8887e5fe2063fd61b1895a476d0bbf46811ab0c7fdf4bd127345/numpy-2.3.4-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:84f01a4d18b2cc4ade1814a08e5f3c907b079c847051d720fad15ce37aa930b6", size = 6739342, upload-time = "2025-10-15T16:16:43.777Z" }, + { url = "https://files.pythonhosted.org/packages/34/f1/4de9586d05b1962acdcdb1dc4af6646361a643f8c864cef7c852bf509740/numpy-2.3.4-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:817e719a868f0dacde4abdfc5c1910b301877970195db9ab6a5e2c4bd5b121f7", size = 14354338, upload-time = "2025-10-15T16:16:46.081Z" }, + { url = "https://files.pythonhosted.org/packages/1f/06/1c16103b425de7969d5a76bdf5ada0804b476fed05d5f9e17b777f1cbefd/numpy-2.3.4-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85e071da78d92a214212cacea81c6da557cab307f2c34b5f85b628e94803f9c0", size = 16702392, upload-time = "2025-10-15T16:16:48.455Z" }, + { url = "https://files.pythonhosted.org/packages/34/b2/65f4dc1b89b5322093572b6e55161bb42e3e0487067af73627f795cc9d47/numpy-2.3.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2ec646892819370cf3558f518797f16597b4e4669894a2ba712caccc9da53f1f", size = 16134998, upload-time = "2025-10-15T16:16:51.114Z" }, + { url = "https://files.pythonhosted.org/packages/d4/11/94ec578896cdb973aaf56425d6c7f2aff4186a5c00fac15ff2ec46998b46/numpy-2.3.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:035796aaaddfe2f9664b9a9372f089cfc88bd795a67bd1bfe15e6e770934cf64", size = 18651574, upload-time = "2025-10-15T16:16:53.429Z" }, + { url = "https://files.pythonhosted.org/packages/62/b7/7efa763ab33dbccf56dade36938a77345ce8e8192d6b39e470ca25ff3cd0/numpy-2.3.4-cp313-cp313t-win32.whl", hash = "sha256:fea80f4f4cf83b54c3a051f2f727870ee51e22f0248d3114b8e755d160b38cfb", size = 6413135, upload-time = "2025-10-15T16:16:55.992Z" }, + { url = "https://files.pythonhosted.org/packages/43/70/aba4c38e8400abcc2f345e13d972fb36c26409b3e644366db7649015f291/numpy-2.3.4-cp313-cp313t-win_amd64.whl", hash = "sha256:15eea9f306b98e0be91eb344a94c0e630689ef302e10c2ce5f7e11905c704f9c", size = 12928582, upload-time = "2025-10-15T16:16:57.943Z" }, + { url = "https://files.pythonhosted.org/packages/67/63/871fad5f0073fc00fbbdd7232962ea1ac40eeaae2bba66c76214f7954236/numpy-2.3.4-cp313-cp313t-win_arm64.whl", hash = "sha256:b6c231c9c2fadbae4011ca5e7e83e12dc4a5072f1a1d85a0a7b3ed754d145a40", size = 10266691, upload-time = "2025-10-15T16:17:00.048Z" }, + { url = "https://files.pythonhosted.org/packages/72/71/ae6170143c115732470ae3a2d01512870dd16e0953f8a6dc89525696069b/numpy-2.3.4-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:81c3e6d8c97295a7360d367f9f8553973651b76907988bb6066376bc2252f24e", size = 20955580, upload-time = "2025-10-15T16:17:02.509Z" }, + { url = "https://files.pythonhosted.org/packages/af/39/4be9222ffd6ca8a30eda033d5f753276a9c3426c397bb137d8e19dedd200/numpy-2.3.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:7c26b0b2bf58009ed1f38a641f3db4be8d960a417ca96d14e5b06df1506d41ff", size = 14188056, upload-time = "2025-10-15T16:17:04.873Z" }, + { url = "https://files.pythonhosted.org/packages/6c/3d/d85f6700d0a4aa4f9491030e1021c2b2b7421b2b38d01acd16734a2bfdc7/numpy-2.3.4-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:62b2198c438058a20b6704351b35a1d7db881812d8512d67a69c9de1f18ca05f", size = 5116555, upload-time = "2025-10-15T16:17:07.499Z" }, + { url = "https://files.pythonhosted.org/packages/bf/04/82c1467d86f47eee8a19a464c92f90a9bb68ccf14a54c5224d7031241ffb/numpy-2.3.4-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:9d729d60f8d53a7361707f4b68a9663c968882dd4f09e0d58c044c8bf5faee7b", size = 6643581, upload-time = "2025-10-15T16:17:09.774Z" }, + { url = "https://files.pythonhosted.org/packages/0c/d3/c79841741b837e293f48bd7db89d0ac7a4f2503b382b78a790ef1dc778a5/numpy-2.3.4-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bd0c630cf256b0a7fd9d0a11c9413b42fef5101219ce6ed5a09624f5a65392c7", size = 14299186, upload-time = "2025-10-15T16:17:11.937Z" }, + { url = "https://files.pythonhosted.org/packages/e8/7e/4a14a769741fbf237eec5a12a2cbc7a4c4e061852b6533bcb9e9a796c908/numpy-2.3.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d5e081bc082825f8b139f9e9fe42942cb4054524598aaeb177ff476cc76d09d2", size = 16638601, upload-time = "2025-10-15T16:17:14.391Z" }, + { url = "https://files.pythonhosted.org/packages/93/87/1c1de269f002ff0a41173fe01dcc925f4ecff59264cd8f96cf3b60d12c9b/numpy-2.3.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:15fb27364ed84114438fff8aaf998c9e19adbeba08c0b75409f8c452a8692c52", size = 16074219, upload-time = "2025-10-15T16:17:17.058Z" }, + { url = "https://files.pythonhosted.org/packages/cd/28/18f72ee77408e40a76d691001ae599e712ca2a47ddd2c4f695b16c65f077/numpy-2.3.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:85d9fb2d8cd998c84d13a79a09cc0c1091648e848e4e6249b0ccd7f6b487fa26", size = 18576702, upload-time = "2025-10-15T16:17:19.379Z" }, + { url = "https://files.pythonhosted.org/packages/c3/76/95650169b465ececa8cf4b2e8f6df255d4bf662775e797ade2025cc51ae6/numpy-2.3.4-cp314-cp314-win32.whl", hash = "sha256:e73d63fd04e3a9d6bc187f5455d81abfad05660b212c8804bf3b407e984cd2bc", size = 6337136, upload-time = "2025-10-15T16:17:22.886Z" }, + { url = "https://files.pythonhosted.org/packages/dc/89/a231a5c43ede5d6f77ba4a91e915a87dea4aeea76560ba4d2bf185c683f0/numpy-2.3.4-cp314-cp314-win_amd64.whl", hash = "sha256:3da3491cee49cf16157e70f607c03a217ea6647b1cea4819c4f48e53d49139b9", size = 12920542, upload-time = "2025-10-15T16:17:24.783Z" }, + { url = "https://files.pythonhosted.org/packages/0d/0c/ae9434a888f717c5ed2ff2393b3f344f0ff6f1c793519fa0c540461dc530/numpy-2.3.4-cp314-cp314-win_arm64.whl", hash = "sha256:6d9cd732068e8288dbe2717177320723ccec4fb064123f0caf9bbd90ab5be868", size = 10480213, upload-time = "2025-10-15T16:17:26.935Z" }, + { url = "https://files.pythonhosted.org/packages/83/4b/c4a5f0841f92536f6b9592694a5b5f68c9ab37b775ff342649eadf9055d3/numpy-2.3.4-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:22758999b256b595cf0b1d102b133bb61866ba5ceecf15f759623b64c020c9ec", size = 21052280, upload-time = "2025-10-15T16:17:29.638Z" }, + { url = "https://files.pythonhosted.org/packages/3e/80/90308845fc93b984d2cc96d83e2324ce8ad1fd6efea81b324cba4b673854/numpy-2.3.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:9cb177bc55b010b19798dc5497d540dea67fd13a8d9e882b2dae71de0cf09eb3", size = 14302930, upload-time = "2025-10-15T16:17:32.384Z" }, + { url = "https://files.pythonhosted.org/packages/3d/4e/07439f22f2a3b247cec4d63a713faae55e1141a36e77fb212881f7cda3fb/numpy-2.3.4-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:0f2bcc76f1e05e5ab58893407c63d90b2029908fa41f9f1cc51eecce936c3365", size = 5231504, upload-time = "2025-10-15T16:17:34.515Z" }, + { url = "https://files.pythonhosted.org/packages/ab/de/1e11f2547e2fe3d00482b19721855348b94ada8359aef5d40dd57bfae9df/numpy-2.3.4-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:8dc20bde86802df2ed8397a08d793da0ad7a5fd4ea3ac85d757bf5dd4ad7c252", size = 6739405, upload-time = "2025-10-15T16:17:36.128Z" }, + { url = "https://files.pythonhosted.org/packages/3b/40/8cd57393a26cebe2e923005db5134a946c62fa56a1087dc7c478f3e30837/numpy-2.3.4-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e199c087e2aa71c8f9ce1cb7a8e10677dc12457e7cc1be4798632da37c3e86e", size = 14354866, upload-time = "2025-10-15T16:17:38.884Z" }, + { url = "https://files.pythonhosted.org/packages/93/39/5b3510f023f96874ee6fea2e40dfa99313a00bf3ab779f3c92978f34aace/numpy-2.3.4-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85597b2d25ddf655495e2363fe044b0ae999b75bc4d630dc0d886484b03a5eb0", size = 16703296, upload-time = "2025-10-15T16:17:41.564Z" }, + { url = "https://files.pythonhosted.org/packages/41/0d/19bb163617c8045209c1996c4e427bccbc4bbff1e2c711f39203c8ddbb4a/numpy-2.3.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:04a69abe45b49c5955923cf2c407843d1c85013b424ae8a560bba16c92fe44a0", size = 16136046, upload-time = "2025-10-15T16:17:43.901Z" }, + { url = "https://files.pythonhosted.org/packages/e2/c1/6dba12fdf68b02a21ac411c9df19afa66bed2540f467150ca64d246b463d/numpy-2.3.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e1708fac43ef8b419c975926ce1eaf793b0c13b7356cfab6ab0dc34c0a02ac0f", size = 18652691, upload-time = "2025-10-15T16:17:46.247Z" }, + { url = "https://files.pythonhosted.org/packages/f8/73/f85056701dbbbb910c51d846c58d29fd46b30eecd2b6ba760fc8b8a1641b/numpy-2.3.4-cp314-cp314t-win32.whl", hash = "sha256:863e3b5f4d9915aaf1b8ec79ae560ad21f0b8d5e3adc31e73126491bb86dee1d", size = 6485782, upload-time = "2025-10-15T16:17:48.872Z" }, + { url = "https://files.pythonhosted.org/packages/17/90/28fa6f9865181cb817c2471ee65678afa8a7e2a1fb16141473d5fa6bacc3/numpy-2.3.4-cp314-cp314t-win_amd64.whl", hash = "sha256:962064de37b9aef801d33bc579690f8bfe6c5e70e29b61783f60bcba838a14d6", size = 13113301, upload-time = "2025-10-15T16:17:50.938Z" }, + { url = "https://files.pythonhosted.org/packages/54/23/08c002201a8e7e1f9afba93b97deceb813252d9cfd0d3351caed123dcf97/numpy-2.3.4-cp314-cp314t-win_arm64.whl", hash = "sha256:8b5a9a39c45d852b62693d9b3f3e0fe052541f804296ff401a72a1b60edafb29", size = 10547532, upload-time = "2025-10-15T16:17:53.48Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b6/64898f51a86ec88ca1257a59c1d7fd077b60082a119affefcdf1dd0df8ca/numpy-2.3.4-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6e274603039f924c0fe5cb73438fa9246699c78a6df1bd3decef9ae592ae1c05", size = 21131552, upload-time = "2025-10-15T16:17:55.845Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4c/f135dc6ebe2b6a3c77f4e4838fa63d350f85c99462012306ada1bd4bc460/numpy-2.3.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d149aee5c72176d9ddbc6803aef9c0f6d2ceeea7626574fc68518da5476fa346", size = 14377796, upload-time = "2025-10-15T16:17:58.308Z" }, + { url = "https://files.pythonhosted.org/packages/d0/a4/f33f9c23fcc13dd8412fc8614559b5b797e0aba9d8e01dfa8bae10c84004/numpy-2.3.4-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:6d34ed9db9e6395bb6cd33286035f73a59b058169733a9db9f85e650b88df37e", size = 5306904, upload-time = "2025-10-15T16:18:00.596Z" }, + { url = "https://files.pythonhosted.org/packages/28/af/c44097f25f834360f9fb960fa082863e0bad14a42f36527b2a121abdec56/numpy-2.3.4-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:fdebe771ca06bb8d6abce84e51dca9f7921fe6ad34a0c914541b063e9a68928b", size = 6819682, upload-time = "2025-10-15T16:18:02.32Z" }, + { url = "https://files.pythonhosted.org/packages/c5/8c/cd283b54c3c2b77e188f63e23039844f56b23bba1712318288c13fe86baf/numpy-2.3.4-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:957e92defe6c08211eb77902253b14fe5b480ebc5112bc741fd5e9cd0608f847", size = 14422300, upload-time = "2025-10-15T16:18:04.271Z" }, + { url = "https://files.pythonhosted.org/packages/b0/f0/8404db5098d92446b3e3695cf41c6f0ecb703d701cb0b7566ee2177f2eee/numpy-2.3.4-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13b9062e4f5c7ee5c7e5be96f29ba71bc5a37fed3d1d77c37390ae00724d296d", size = 16760806, upload-time = "2025-10-15T16:18:06.668Z" }, + { url = "https://files.pythonhosted.org/packages/95/8e/2844c3959ce9a63acc7c8e50881133d86666f0420bcde695e115ced0920f/numpy-2.3.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:81b3a59793523e552c4a96109dde028aa4448ae06ccac5a76ff6532a85558a7f", size = 12973130, upload-time = "2025-10-15T16:18:09.397Z" }, ] [[package]] @@ -1808,32 +1630,39 @@ wheels = [ [[package]] name = "onnx" -version = "1.16.0" +version = "1.19.1" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "ml-dtypes" }, { name = "numpy" }, { name = "protobuf" }, + { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b3/fe/0978403c8d710ece2f34006367e78de80410743fe0e7680c8f33f2dab20d/onnx-1.16.0.tar.gz", hash = "sha256:237c6987c6c59d9f44b6136f5819af79574f8d96a760a1fa843bede11f3822f7", size = 12303017, upload-time = "2024-03-25T15:33:46.091Z" } +sdist = { url = "https://files.pythonhosted.org/packages/27/2f/c619eb65769357e9b6de9212c9a821ab39cd484448e5d6b3fb5fb0a64c6d/onnx-1.19.1.tar.gz", hash = "sha256:737524d6eb3907d3499ea459c6f01c5a96278bb3a0f2ff8ae04786fb5d7f1ed5", size = 12033525, upload-time = "2025-10-10T04:01:34.342Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/0b/f4705e4a3fa6fd0de971302fdae17ad176b024eca8c24360f0e37c00f9df/onnx-1.16.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:9eadbdce25b19d6216f426d6d99b8bc877a65ed92cbef9707751c6669190ba4f", size = 16514483, upload-time = "2024-03-25T15:25:07.947Z" }, - { url = "https://files.pythonhosted.org/packages/b8/1c/50310a559857951fc6e069cf5d89deebe34287997d1c5928bca435456f62/onnx-1.16.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:034ae21a2aaa2e9c14119a840d2926d213c27aad29e5e3edaa30145a745048e1", size = 15012939, upload-time = "2024-03-25T15:25:11.632Z" }, - { url = "https://files.pythonhosted.org/packages/ef/6e/96be6692ebcd8da568084d753f386ce08efa1f99b216f346ee281edd6cc3/onnx-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec22a43d74eb1f2303373e2fbe7fbcaa45fb225f4eb146edfed1356ada7a9aea", size = 15791856, upload-time = "2024-03-25T15:25:15.36Z" }, - { url = "https://files.pythonhosted.org/packages/49/5f/d8e1a24247f506a77cbe22341c72ca91bea3b468c5d6bca2047d885ea3c6/onnx-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:298f28a2b5ac09145fa958513d3d1e6b349ccf86a877dbdcccad57713fe360b3", size = 15922279, upload-time = "2024-03-25T15:25:18.939Z" }, - { url = "https://files.pythonhosted.org/packages/cb/14/562e4ac22cdf41f4465e3b114ef1a9467d513eeff0b9c2285c2da5db6ed1/onnx-1.16.0-cp310-cp310-win32.whl", hash = "sha256:66300197b52beca08bc6262d43c103289c5d45fde43fb51922ed1eb83658cf0c", size = 14335703, upload-time = "2024-03-25T15:25:22.611Z" }, - { url = "https://files.pythonhosted.org/packages/3b/e2/471ff83b3862967791d67f630000afce038756afbdf0665a3d767677c851/onnx-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:ae0029f5e47bf70a1a62e7f88c80bca4ef39b844a89910039184221775df5e43", size = 14435099, upload-time = "2024-03-25T15:25:25.05Z" }, - { url = "https://files.pythonhosted.org/packages/a4/b8/7accf3f93eee498711f0b7f07f6e93906e031622473e85ce9cd3578f6a92/onnx-1.16.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:f51179d4af3372b4f3800c558d204b592c61e4b4a18b8f61e0eea7f46211221a", size = 16514376, upload-time = "2024-03-25T15:25:27.899Z" }, - { url = "https://files.pythonhosted.org/packages/cc/24/a328236b594d5fea23f70a3a8139e730cb43334f0b24693831c47c9064f0/onnx-1.16.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:5202559070afec5144332db216c20f2fff8323cf7f6512b0ca11b215eacc5bf3", size = 15012839, upload-time = "2024-03-25T15:25:31.16Z" }, - { url = "https://files.pythonhosted.org/packages/80/12/57187bab3f830a47fa65eafe4fbaef01dfdf5042cf82a41fa440fab68766/onnx-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77579e7c15b4df39d29465b216639a5f9b74026bdd9e4b6306cd19a32dcfe67c", size = 15791944, upload-time = "2024-03-25T15:25:34.778Z" }, - { url = "https://files.pythonhosted.org/packages/df/48/63f68b65d041aedffab41eea930563ca52aab70dbaa7d4820501618c1a70/onnx-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e60ca76ac24b65c25860d0f2d2cdd96d6320d062a01dd8ce87c5743603789b8", size = 15922450, upload-time = "2024-03-25T15:25:37.983Z" }, - { url = "https://files.pythonhosted.org/packages/08/1b/4bdf4534f5ff08973725ba5409f95bbf64e2789cd20be615880dae689973/onnx-1.16.0-cp311-cp311-win32.whl", hash = "sha256:81b4ee01bc554e8a2b11ac6439882508a5377a1c6b452acd69a1eebb83571117", size = 14335808, upload-time = "2024-03-25T15:25:40.523Z" }, - { url = "https://files.pythonhosted.org/packages/aa/d0/0514d02d2e84e7bb48a105877eae4065e54d7dabb60d0b60214fe2677346/onnx-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:7449241e70b847b9c3eb8dae622df8c1b456d11032a9d7e26e0ee8a698d5bf86", size = 14434905, upload-time = "2024-03-25T15:25:42.905Z" }, - { url = "https://files.pythonhosted.org/packages/42/87/577adadda30ee08041e81ef02a331ca9d1a8df93a2e4c4c53ec56fbbc2ac/onnx-1.16.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:03a627488b1a9975d95d6a55582af3e14c7f3bb87444725b999935ddd271d352", size = 16516304, upload-time = "2024-03-25T15:25:45.875Z" }, - { url = "https://files.pythonhosted.org/packages/e3/1b/6e1ea37e081cc49a28f0e4d3830b4c8525081354cf9f5529c6c92268fc77/onnx-1.16.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:c392faeabd9283ee344ccb4b067d1fea9dfc614fa1f0de7c47589efd79e15e78", size = 15016538, upload-time = "2024-03-25T15:25:49.396Z" }, - { url = "https://files.pythonhosted.org/packages/6d/07/f8fefd5eb0984be42ef677f0b7db7527edc4529224a34a3c31f7b12ec80d/onnx-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0efeb46985de08f0efe758cb54ad3457e821a05c2eaf5ba2ccb8cd1602c08084", size = 15790415, upload-time = "2024-03-25T15:25:51.929Z" }, - { url = "https://files.pythonhosted.org/packages/11/71/c219ce6d4b5205c77405af7f2de2511ad4eeffbfeb77a422151e893de0ea/onnx-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddf14a3d32234f23e44abb73a755cb96a423fac7f004e8f046f36b10214151ee", size = 15922224, upload-time = "2024-03-25T15:25:55.049Z" }, - { url = "https://files.pythonhosted.org/packages/8e/a4/554a6e5741b42406c5b1970d04685d7f2012019d4178408ed4b3ec953033/onnx-1.16.0-cp312-cp312-win32.whl", hash = "sha256:62a2e27ae8ba5fc9b4a2620301446a517b5ffaaf8566611de7a7c2160f5bcf4c", size = 14336234, upload-time = "2024-03-25T15:25:57.998Z" }, - { url = "https://files.pythonhosted.org/packages/e9/a1/8aecec497010ad34e7656408df1868d94483c5c56bc991f4088c06150896/onnx-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:3e0860fea94efde777e81a6f68f65761ed5e5f3adea2e050d7fbe373a9ae05b3", size = 14436591, upload-time = "2024-03-25T15:26:01.252Z" }, + { url = "https://files.pythonhosted.org/packages/36/07/0019c72924909e4f64b9199770630ab7b8d7914b912b03230e68f5eda7ae/onnx-1.19.1-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:17aaf5832126de0a5197a5864e4f09a764dd7681d3035135547959b4b6b77a09", size = 18320936, upload-time = "2025-10-10T04:00:04.235Z" }, + { url = "https://files.pythonhosted.org/packages/af/2f/5c47acf740dc35f0decc640844260fbbdc0efa0565657c93fd7ff30f13f3/onnx-1.19.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:01b292a4d0b197c45d8184545bbc8ae1df83466341b604187c1b05902cb9c920", size = 18044269, upload-time = "2025-10-10T04:00:07.449Z" }, + { url = "https://files.pythonhosted.org/packages/d5/61/6c457ee8c3a62a3cad0a4bfa4c5436bb3ac4df90c3551d40bee1224b5b51/onnx-1.19.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1839af08ab4a909e4af936b8149c27f8c64b96138981024e251906e0539d8bf9", size = 18218092, upload-time = "2025-10-10T04:00:11.135Z" }, + { url = "https://files.pythonhosted.org/packages/54/d5/ab832e1369505e67926a70e9a102061f89ad01f91aa296c4b1277cb81b25/onnx-1.19.1-cp311-cp311-win32.whl", hash = "sha256:0bdbb676e3722bd32f9227c465d552689f49086f986a696419d865cb4e70b989", size = 16344809, upload-time = "2025-10-10T04:00:14.634Z" }, + { url = "https://files.pythonhosted.org/packages/8b/b5/6eb4611d24b85002f878ba8476b4cecbe6f9784c0236a3c5eff85236cc0a/onnx-1.19.1-cp311-cp311-win_amd64.whl", hash = "sha256:1346853df5c1e3ebedb2e794cf2a51e0f33759affd655524864ccbcddad7035b", size = 16464319, upload-time = "2025-10-10T04:00:18.235Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ff/f0e1f06420c70e20d497fec7c94a864d069943b6312bedd4224c0ab946f8/onnx-1.19.1-cp311-cp311-win_arm64.whl", hash = "sha256:2d69c280c0e665b7f923f499243b9bb84fe97970b7a4668afa0032045de602c8", size = 16437503, upload-time = "2025-10-10T04:00:21.247Z" }, + { url = "https://files.pythonhosted.org/packages/50/07/f6c5b2cffef8c29e739616d1415aea22f7b7ef1f19c17f02b7cff71f5498/onnx-1.19.1-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:3612193a89ddbce5c4e86150869b9258780a82fb8c4ca197723a4460178a6ce9", size = 18327840, upload-time = "2025-10-10T04:00:24.259Z" }, + { url = "https://files.pythonhosted.org/packages/93/20/0568ebd52730287ae80cac8ac893a7301c793ea1630984e2519ee92b02a9/onnx-1.19.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6c2fd2f744e7a3880ad0c262efa2edf6d965d0bd02b8f327ec516ad4cb0f2f15", size = 18042539, upload-time = "2025-10-10T04:00:27.693Z" }, + { url = "https://files.pythonhosted.org/packages/14/fd/cd7a0fd10a04f8cc5ae436b63e0022e236fe51b9dbb8ee6317fd48568c72/onnx-1.19.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:485d3674d50d789e0ee72fa6f6e174ab81cb14c772d594f992141bd744729d8a", size = 18218271, upload-time = "2025-10-10T04:00:30.495Z" }, + { url = "https://files.pythonhosted.org/packages/65/68/cc8b8c05469fe08384b446304ad7e6256131ca0463bf6962366eebec98c0/onnx-1.19.1-cp312-cp312-win32.whl", hash = "sha256:638bc56ff1a5718f7441e887aeb4e450f37a81c6eac482040381b140bd9ba601", size = 16345111, upload-time = "2025-10-10T04:00:34.982Z" }, + { url = "https://files.pythonhosted.org/packages/c7/5e/d1cb16693598a512c2cf9ffe0841d8d8fd2c83ae8e889efd554f5aa427cf/onnx-1.19.1-cp312-cp312-win_amd64.whl", hash = "sha256:bc7e2e4e163e679721e547958b5a7db875bf822cad371b7c1304aa4401a7c7a4", size = 16465621, upload-time = "2025-10-10T04:00:39.107Z" }, + { url = "https://files.pythonhosted.org/packages/90/32/da116cc61fdef334782aa7f87a1738431dd1af1a5d1a44bd95d6d51ad260/onnx-1.19.1-cp312-cp312-win_arm64.whl", hash = "sha256:17c215b1c0f20fe93b4cbe62668247c1d2294b9bc7f6be0ca9ced28e980c07b7", size = 16437505, upload-time = "2025-10-10T04:00:42.255Z" }, + { url = "https://files.pythonhosted.org/packages/b4/b8/ab1fdfe2e8502f4dc4289fc893db35816bd20d080d8370f86e74dda5f598/onnx-1.19.1-cp313-cp313-macosx_12_0_universal2.whl", hash = "sha256:4e5f938c68c4dffd3e19e4fd76eb98d298174eb5ebc09319cdd0ec5fe50050dc", size = 18327815, upload-time = "2025-10-10T04:00:45.682Z" }, + { url = "https://files.pythonhosted.org/packages/04/40/eb875745a4b92aea10e5e32aa2830f409c4d7b6f7b48ca1c4eaad96636c5/onnx-1.19.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:86e20a5984b017feeef2dbf4ceff1c7c161ab9423254968dd77d3696c38691d0", size = 18041464, upload-time = "2025-10-10T04:00:48.557Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8e/8586135f40dbe4989cec4d413164bc8fc5c73d37c566f33f5ea3a7f2b6f6/onnx-1.19.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d9c467f0f29993c12f330736af87972f30adb8329b515f39d63a0db929cb2c", size = 18218244, upload-time = "2025-10-10T04:00:51.891Z" }, + { url = "https://files.pythonhosted.org/packages/51/b5/4201254b8683129db5da3fb55aa1f7e56d0a8d45c66ce875dec21ca1ff25/onnx-1.19.1-cp313-cp313-win32.whl", hash = "sha256:65eee353a51b4e4ca3e797784661e5376e2b209f17557e04921eac9166a8752e", size = 16345330, upload-time = "2025-10-10T04:00:54.858Z" }, + { url = "https://files.pythonhosted.org/packages/69/67/c6d239afbcdbeb6805432969b908b5c9f700c96d332b34e3f99518d76caf/onnx-1.19.1-cp313-cp313-win_amd64.whl", hash = "sha256:c3bc87e38b53554b1fc9ef7b275c81c6f5c93c90a91935bb0aa8d4d498a6d48e", size = 16465567, upload-time = "2025-10-10T04:00:57.893Z" }, + { url = "https://files.pythonhosted.org/packages/99/fe/89f1e40f5bc54595ff0dcf5391ce19e578b528973ccc74dd99800196d30d/onnx-1.19.1-cp313-cp313-win_arm64.whl", hash = "sha256:e41496f400afb980ec643d80d5164753a88a85234fa5c06afdeebc8b7d1ec252", size = 16437562, upload-time = "2025-10-10T04:01:00.703Z" }, + { url = "https://files.pythonhosted.org/packages/86/43/b186ccbc8fe7e93643a6a6d40bbf2bb6ce4fb9469bbd3453c77e270c50ad/onnx-1.19.1-cp313-cp313t-macosx_12_0_universal2.whl", hash = "sha256:5f6274abf0fd74e80e78ecbb44bd44509409634525c89a9b38276c8af47dc0a2", size = 18355703, upload-time = "2025-10-10T04:01:03.735Z" }, + { url = "https://files.pythonhosted.org/packages/60/f1/22ee4d8b8f9fa4cb1d1b9579da3b4b5187ddab33846ec5ac744af02c0e2b/onnx-1.19.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:07dcd4d83584eb4bf8f21ac04c82643712e5e93ac2a0ed10121ec123cb127e1e", size = 18047830, upload-time = "2025-10-10T04:01:06.552Z" }, + { url = "https://files.pythonhosted.org/packages/8e/a4/8f3d51e3a095d42cdf2039a590cff06d024f2a10efbd0b1a2a6b3825f019/onnx-1.19.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1975860c3e720db25d37f1619976582828264bdcc64fa7511c321ac4fc01add3", size = 18221126, upload-time = "2025-10-10T04:01:09.77Z" }, + { url = "https://files.pythonhosted.org/packages/4f/0d/f9d6c2237083f1aac14b37f0b03b0d81f1147a8e2af0c3828165e0a6a67b/onnx-1.19.1-cp313-cp313t-win_amd64.whl", hash = "sha256:9807d0e181f6070ee3a6276166acdc571575d1bd522fc7e89dba16fd6e7ffed9", size = 16465560, upload-time = "2025-10-10T04:01:13.212Z" }, + { url = "https://files.pythonhosted.org/packages/36/70/8418a58faa7d606d6a92cab69ae8d361b3b3969bf7e7e9a65a86d5d1b674/onnx-1.19.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b6ee83e6929d75005482d9f304c502ac7c9b8d6db153aa6b484dae74d0f28570", size = 18042812, upload-time = "2025-10-10T04:01:15.919Z" }, ] [[package]] @@ -1849,11 +1678,6 @@ dependencies = [ { name = "sympy" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/35/d6/311b1afea060015b56c742f3531168c1644650767f27ef40062569960587/onnxruntime-1.23.2-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:a7730122afe186a784660f6ec5807138bf9d792fa1df76556b27307ea9ebcbe3", size = 17195934, upload-time = "2025-10-27T23:06:14.143Z" }, - { url = "https://files.pythonhosted.org/packages/db/db/81bf3d7cecfbfed9092b6b4052e857a769d62ed90561b410014e0aae18db/onnxruntime-1.23.2-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:b28740f4ecef1738ea8f807461dd541b8287d5650b5be33bca7b474e3cbd1f36", size = 19153079, upload-time = "2025-10-27T23:05:57.686Z" }, - { url = "https://files.pythonhosted.org/packages/2e/4d/a382452b17cf70a2313153c520ea4c96ab670c996cb3a95cc5d5ac7bfdac/onnxruntime-1.23.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8f7d1fe034090a1e371b7f3ca9d3ccae2fabae8c1d8844fb7371d1ea38e8e8d2", size = 15219883, upload-time = "2025-10-22T03:46:21.66Z" }, - { url = "https://files.pythonhosted.org/packages/fb/56/179bf90679984c85b417664c26aae4f427cba7514bd2d65c43b181b7b08b/onnxruntime-1.23.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4ca88747e708e5c67337b0f65eed4b7d0dd70d22ac332038c9fc4635760018f7", size = 17370357, upload-time = "2025-10-22T03:46:57.968Z" }, - { url = "https://files.pythonhosted.org/packages/cd/6d/738e50c47c2fd285b1e6c8083f15dac1a5f6199213378a5f14092497296d/onnxruntime-1.23.2-cp310-cp310-win_amd64.whl", hash = "sha256:0be6a37a45e6719db5120e9986fcd30ea205ac8103fd1fb74b6c33348327a0cc", size = 13467651, upload-time = "2025-10-27T23:06:11.904Z" }, { url = "https://files.pythonhosted.org/packages/44/be/467b00f09061572f022ffd17e49e49e5a7a789056bad95b54dfd3bee73ff/onnxruntime-1.23.2-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:6f91d2c9b0965e86827a5ba01531d5b669770b01775b23199565d6c1f136616c", size = 17196113, upload-time = "2025-10-22T03:47:33.526Z" }, { url = "https://files.pythonhosted.org/packages/9f/a8/3c23a8f75f93122d2b3410bfb74d06d0f8da4ac663185f91866b03f7da1b/onnxruntime-1.23.2-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:87d8b6eaf0fbeb6835a60a4265fde7a3b60157cf1b2764773ac47237b4d48612", size = 19153857, upload-time = "2025-10-22T03:46:37.578Z" }, { url = "https://files.pythonhosted.org/packages/3f/d8/506eed9af03d86f8db4880a4c47cd0dffee973ef7e4f4cff9f1d4bcf7d22/onnxruntime-1.23.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bbfd2fca76c855317568c1b36a885ddea2272c13cb0e395002c402f2360429a6", size = 15220095, upload-time = "2025-10-22T03:46:24.769Z" }, @@ -1875,28 +1699,7 @@ wheels = [ [[package]] name = "onnxruntime-gpu" -version = "1.19.2" -source = { registry = "https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/" } -dependencies = [ - { name = "coloredlogs" }, - { name = "flatbuffers" }, - { name = "numpy" }, - { name = "packaging" }, - { name = "protobuf" }, - { name = "sympy" }, -] -wheels = [ - { url = "https://aiinfra.pkgs.visualstudio.com/2692857e-05ef-43b4-ba9c-ccf1c22c437c/_packaging/9387c3aa-d9ad-4513-968c-383f6f7f53b8/pypi/download/onnxruntime-gpu/1.19.2/onnxruntime_gpu-1.19.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a49740e079e7c5215830d30cde3df792e903df007aa0b0fd7aa797937061b27a" }, - { url = "https://aiinfra.pkgs.visualstudio.com/2692857e-05ef-43b4-ba9c-ccf1c22c437c/_packaging/9387c3aa-d9ad-4513-968c-383f6f7f53b8/pypi/download/onnxruntime-gpu/1.19.2/onnxruntime_gpu-1.19.2-cp310-cp310-win_amd64.whl", hash = "sha256:b895920bb5e4241299f68874e0becdc2635ea0142939c11e7ff5ae5b28993613" }, - { url = "https://aiinfra.pkgs.visualstudio.com/2692857e-05ef-43b4-ba9c-ccf1c22c437c/_packaging/9387c3aa-d9ad-4513-968c-383f6f7f53b8/pypi/download/onnxruntime-gpu/1.19.2/onnxruntime_gpu-1.19.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:562fc7c755393eaad9751e56149339dd201ffbfdb3ef5f43ff21d0619ba9045f" }, - { url = "https://aiinfra.pkgs.visualstudio.com/2692857e-05ef-43b4-ba9c-ccf1c22c437c/_packaging/9387c3aa-d9ad-4513-968c-383f6f7f53b8/pypi/download/onnxruntime-gpu/1.19.2/onnxruntime_gpu-1.19.2-cp311-cp311-win_amd64.whl", hash = "sha256:522f7495918176cb8c1a3c78bde7152d984f7096acc786c73a27643af8af87c9" }, - { url = "https://aiinfra.pkgs.visualstudio.com/2692857e-05ef-43b4-ba9c-ccf1c22c437c/_packaging/9387c3aa-d9ad-4513-968c-383f6f7f53b8/pypi/download/onnxruntime-gpu/1.19.2/onnxruntime_gpu-1.19.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:554a02a3fac0119707eb87327908afd21c4e6f0fa5bf9a034398f098adc316c5" }, - { url = "https://aiinfra.pkgs.visualstudio.com/2692857e-05ef-43b4-ba9c-ccf1c22c437c/_packaging/9387c3aa-d9ad-4513-968c-383f6f7f53b8/pypi/download/onnxruntime-gpu/1.19.2/onnxruntime_gpu-1.19.2-cp312-cp312-win_amd64.whl", hash = "sha256:e7c6165a405027e3c0f11d189ae7013b5d66919b3381f9bfb3405c0c0cf07968" }, -] - -[[package]] -name = "onnxruntime-openvino" -version = "1.18.0" +version = "1.23.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "coloredlogs" }, @@ -1907,10 +1710,34 @@ dependencies = [ { name = "sympy" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/57/e9a080f2477b2a4c16925f766e4615fc545098b0f4e20cf8ad803e7a9672/onnxruntime_openvino-1.18.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:565b874d21bcd48126da7d62f57db019f5ec0e1f82ae9b0740afa2ad91f8d331", size = 41971800, upload-time = "2024-06-25T06:30:37.042Z" }, - { url = "https://files.pythonhosted.org/packages/34/7d/b75913bce58f4ee9bf6a02d1b513b9fc82303a496ec698e6fb1f9d597cb4/onnxruntime_openvino-1.18.0-cp310-cp310-win_amd64.whl", hash = "sha256:7f1931060f710a6c8e32121bb73044c4772ef5925802fc8776d3fe1e87ab3f75", size = 5963263, upload-time = "2024-06-24T13:38:15.906Z" }, - { url = "https://files.pythonhosted.org/packages/7e/d3/8299b7285dc8fa7bd986b6f0d7c50b7f0fd13db50dd3b88b93ec269b1e08/onnxruntime_openvino-1.18.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:eb1723d386f70a8e26398d983ebe35d2c25ba56e9cdb382670ebbf1f5139f8ba", size = 41971927, upload-time = "2024-06-25T06:30:43.765Z" }, - { url = "https://files.pythonhosted.org/packages/88/d9/ca0bfd7ed37153d9664ccdcfb4d0e5b1963563553b05cb4338b46968feb2/onnxruntime_openvino-1.18.0-cp311-cp311-win_amd64.whl", hash = "sha256:874a1e263dd86674593e5a879257650b06a8609c4d5768c3d8ed8dc4ae874b9c", size = 5963464, upload-time = "2024-06-24T13:38:18.437Z" }, + { url = "https://files.pythonhosted.org/packages/43/a4/e3d7fbe32b44e814ae24ed642f05fac5d96d120efd82db7a7cac936e85a9/onnxruntime_gpu-1.23.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d76d1ac7a479ecc3ac54482eea4ba3b10d68e888a0f8b5f420f0bdf82c5eec59", size = 300525715, upload-time = "2025-10-22T16:56:19.928Z" }, + { url = "https://files.pythonhosted.org/packages/a9/5c/dba7c009e73dcce02e7f714574345b5e607c5c75510eb8d7bef682b45e5d/onnxruntime_gpu-1.23.2-cp311-cp311-win_amd64.whl", hash = "sha256:054282614c2fc9a4a27d74242afbae706a410f1f63cc35bc72f99709029a5ba4", size = 244506823, upload-time = "2025-10-22T16:55:09.526Z" }, + { url = "https://files.pythonhosted.org/packages/6c/d9/b7140a4f1615195938c7e358c0804bb84271f0d6886b5cbf105c6cb58aae/onnxruntime_gpu-1.23.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f2d1f720685d729b5258ec1b36dee1de381b8898189908c98cbeecdb2f2b5c2", size = 300509596, upload-time = "2025-10-22T16:56:31.728Z" }, + { url = "https://files.pythonhosted.org/packages/87/da/2685c79e5ea587beddebe083601fead0bdf3620bc2f92d18756e7de8a636/onnxruntime_gpu-1.23.2-cp312-cp312-win_amd64.whl", hash = "sha256:fe925a84b00e291e0ad3fac29bfd8f8e06112abc760cdc82cb711b4f3935bd95", size = 244508327, upload-time = "2025-10-22T16:55:19.397Z" }, + { url = "https://files.pythonhosted.org/packages/03/05/40d561636e4114b54aa06d2371bfbca2d03e12cfdf5d4b85814802f18a75/onnxruntime_gpu-1.23.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1e8f75af5da07329d0c3a5006087f4051d8abd133b4be7c9bae8cdab7bea4c26", size = 300515567, upload-time = "2025-10-22T16:56:43.794Z" }, + { url = "https://files.pythonhosted.org/packages/b6/3b/418300438063d403384c79eaef1cb13c97627042f2247b35a887276a355a/onnxruntime_gpu-1.23.2-cp313-cp313-win_amd64.whl", hash = "sha256:7f1b3f49e5e126b99e23ec86b4203db41c2a911f6165f7624f2bc8267aaca767", size = 244507535, upload-time = "2025-10-22T16:55:28.532Z" }, + { url = "https://files.pythonhosted.org/packages/b8/dc/80b145e3134d7eba31309b3299a2836e37c76e4c419a261ad9796f8f8d65/onnxruntime_gpu-1.23.2-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20959cd4ae358aab6579ab9123284a7b1498f7d51ec291d429a5edc26511306f", size = 300525759, upload-time = "2025-10-22T16:56:56.925Z" }, +] + +[[package]] +name = "onnxruntime-openvino" +version = "1.23.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coloredlogs" }, + { name = "flatbuffers" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "protobuf" }, + { name = "sympy" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/10/adcd4ac68ffc8dee003553125ef5c091be822e2d7c1077d0bb85690baa9c/onnxruntime_openvino-1.23.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:91938837e6e92e30c63d12fad68a8a4959c40d2eade2bd60f38bdd5b6392f8d3", size = 70481480, upload-time = "2025-10-14T15:19:45.882Z" }, + { url = "https://files.pythonhosted.org/packages/97/95/25f28d6fecf300aa0af393e96af9e00cc676e5dab650ab84f2122610df50/onnxruntime_openvino-1.23.0-cp311-cp311-win_amd64.whl", hash = "sha256:8f05d2d6a804fb70d3f4329d777ac62439773dcc2df827dd5f42644b10bf1fea", size = 13117353, upload-time = "2025-10-14T15:19:49.014Z" }, + { url = "https://files.pythonhosted.org/packages/42/0c/8d97419dfeedf419c5fe5293f3dbc59284855a63ad22e71f46c0010c9dc4/onnxruntime_openvino-1.23.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b963ea19bf9856f3d6b2f719d451f2eeae482a8f69c729906465aa4f27f4d39c", size = 70483359, upload-time = "2025-10-14T15:19:52.88Z" }, + { url = "https://files.pythonhosted.org/packages/29/30/ff6111b16ffb4187c462824aa4e95acc20fdd90f856d44a339d56c6dacd6/onnxruntime_openvino-1.23.0-cp312-cp312-win_amd64.whl", hash = "sha256:937e52657f94c56990a6e5bd4c3705bd6e970834c7c94e23d300dde6848f2889", size = 13117933, upload-time = "2025-10-14T15:19:58.319Z" }, + { url = "https://files.pythonhosted.org/packages/ce/48/e42f618a8ec5fcf825fed4fdc8125f7105256cc6020b84567ecb88d5e2b7/onnxruntime_openvino-1.23.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:2e93b9a8323e196b7433866054a59260f2206ab6fb0e7223dda91da71f1db8c5", size = 70483088, upload-time = "2025-10-14T15:20:02.425Z" }, + { url = "https://files.pythonhosted.org/packages/4a/f9/a531dc497dc113dc14df9a9de5aacb1676cadebc3ec6cc7cd3ca65cb3db0/onnxruntime_openvino-1.23.0-cp313-cp313-win_amd64.whl", hash = "sha256:0ebbf70929de4ce269371cb255536bbedef588932d744da0b40e66c38a620f35", size = 13118206, upload-time = "2025-10-14T15:20:05.587Z" }, ] [[package]] @@ -1949,83 +1776,70 @@ wheels = [ [[package]] name = "orjson" -version = "3.11.4" +version = "3.11.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c6/fe/ed708782d6709cc60eb4c2d8a361a440661f74134675c72990f2c48c785f/orjson-3.11.4.tar.gz", hash = "sha256:39485f4ab4c9b30a3943cfe99e1a213c4776fb69e8abd68f66b83d5a0b0fdc6d", size = 5945188, upload-time = "2025-10-24T15:50:38.027Z" } +sdist = { url = "https://files.pythonhosted.org/packages/04/b8/333fdb27840f3bf04022d21b654a35f58e15407183aeb16f3b41aa053446/orjson-3.11.5.tar.gz", hash = "sha256:82393ab47b4fe44ffd0a7659fa9cfaacc717eb617c93cde83795f14af5c2e9d5", size = 5972347, upload-time = "2025-12-06T15:55:39.458Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/30/5aed63d5af1c8b02fbd2a8d83e2a6c8455e30504c50dbf08c8b51403d873/orjson-3.11.4-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e3aa2118a3ece0d25489cbe48498de8a5d580e42e8d9979f65bf47900a15aba1", size = 243870, upload-time = "2025-10-24T15:48:28.908Z" }, - { url = "https://files.pythonhosted.org/packages/44/1f/da46563c08bef33c41fd63c660abcd2184b4d2b950c8686317d03b9f5f0c/orjson-3.11.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a69ab657a4e6733133a3dca82768f2f8b884043714e8d2b9ba9f52b6efef5c44", size = 130622, upload-time = "2025-10-24T15:48:31.361Z" }, - { url = "https://files.pythonhosted.org/packages/02/bd/b551a05d0090eab0bf8008a13a14edc0f3c3e0236aa6f5b697760dd2817b/orjson-3.11.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3740bffd9816fc0326ddc406098a3a8f387e42223f5f455f2a02a9f834ead80c", size = 129344, upload-time = "2025-10-24T15:48:32.71Z" }, - { url = "https://files.pythonhosted.org/packages/87/6c/9ddd5e609f443b2548c5e7df3c44d0e86df2c68587a0e20c50018cdec535/orjson-3.11.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65fd2f5730b1bf7f350c6dc896173d3460d235c4be007af73986d7cd9a2acd23", size = 136633, upload-time = "2025-10-24T15:48:34.128Z" }, - { url = "https://files.pythonhosted.org/packages/95/f2/9f04f2874c625a9fb60f6918c33542320661255323c272e66f7dcce14df2/orjson-3.11.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fdc3ae730541086158d549c97852e2eea6820665d4faf0f41bf99df41bc11ea", size = 137695, upload-time = "2025-10-24T15:48:35.654Z" }, - { url = "https://files.pythonhosted.org/packages/d2/c2/c7302afcbdfe8a891baae0e2cee091583a30e6fa613e8bdf33b0e9c8a8c7/orjson-3.11.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e10b4d65901da88845516ce9f7f9736f9638d19a1d483b3883dc0182e6e5edba", size = 136879, upload-time = "2025-10-24T15:48:37.483Z" }, - { url = "https://files.pythonhosted.org/packages/c6/3a/b31c8f0182a3e27f48e703f46e61bb769666cd0dac4700a73912d07a1417/orjson-3.11.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb6a03a678085f64b97f9d4a9ae69376ce91a3a9e9b56a82b1580d8e1d501aff", size = 136374, upload-time = "2025-10-24T15:48:38.624Z" }, - { url = "https://files.pythonhosted.org/packages/29/d0/fd9ab96841b090d281c46df566b7f97bc6c8cd9aff3f3ebe99755895c406/orjson-3.11.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2c82e4f0b1c712477317434761fbc28b044c838b6b1240d895607441412371ac", size = 140519, upload-time = "2025-10-24T15:48:39.756Z" }, - { url = "https://files.pythonhosted.org/packages/d6/ce/36eb0f15978bb88e33a3480e1a3fb891caa0f189ba61ce7713e0ccdadabf/orjson-3.11.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:d58c166a18f44cc9e2bad03a327dc2d1a3d2e85b847133cfbafd6bfc6719bd79", size = 406522, upload-time = "2025-10-24T15:48:41.198Z" }, - { url = "https://files.pythonhosted.org/packages/85/11/e8af3161a288f5c6a00c188fc729c7ba193b0cbc07309a1a29c004347c30/orjson-3.11.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:94f206766bf1ea30e1382e4890f763bd1eefddc580e08fec1ccdc20ddd95c827", size = 149790, upload-time = "2025-10-24T15:48:42.664Z" }, - { url = "https://files.pythonhosted.org/packages/ea/96/209d52db0cf1e10ed48d8c194841e383e23c2ced5a2ee766649fe0e32d02/orjson-3.11.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:41bf25fb39a34cf8edb4398818523277ee7096689db352036a9e8437f2f3ee6b", size = 140040, upload-time = "2025-10-24T15:48:44.042Z" }, - { url = "https://files.pythonhosted.org/packages/ef/0e/526db1395ccb74c3d59ac1660b9a325017096dc5643086b38f27662b4add/orjson-3.11.4-cp310-cp310-win32.whl", hash = "sha256:fa9627eba4e82f99ca6d29bc967f09aba446ee2b5a1ea728949ede73d313f5d3", size = 135955, upload-time = "2025-10-24T15:48:45.495Z" }, - { url = "https://files.pythonhosted.org/packages/e6/69/18a778c9de3702b19880e73c9866b91cc85f904b885d816ba1ab318b223c/orjson-3.11.4-cp310-cp310-win_amd64.whl", hash = "sha256:23ef7abc7fca96632d8174ac115e668c1e931b8fe4dde586e92a500bf1914dcc", size = 131577, upload-time = "2025-10-24T15:48:46.609Z" }, - { url = "https://files.pythonhosted.org/packages/63/1d/1ea6005fffb56715fd48f632611e163d1604e8316a5bad2288bee9a1c9eb/orjson-3.11.4-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:5e59d23cd93ada23ec59a96f215139753fbfe3a4d989549bcb390f8c00370b39", size = 243498, upload-time = "2025-10-24T15:48:48.101Z" }, - { url = "https://files.pythonhosted.org/packages/37/d7/ffed10c7da677f2a9da307d491b9eb1d0125b0307019c4ad3d665fd31f4f/orjson-3.11.4-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:5c3aedecfc1beb988c27c79d52ebefab93b6c3921dbec361167e6559aba2d36d", size = 128961, upload-time = "2025-10-24T15:48:49.571Z" }, - { url = "https://files.pythonhosted.org/packages/a2/96/3e4d10a18866d1368f73c8c44b7fe37cc8a15c32f2a7620be3877d4c55a3/orjson-3.11.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da9e5301f1c2caa2a9a4a303480d79c9ad73560b2e7761de742ab39fe59d9175", size = 130321, upload-time = "2025-10-24T15:48:50.713Z" }, - { url = "https://files.pythonhosted.org/packages/eb/1f/465f66e93f434f968dd74d5b623eb62c657bdba2332f5a8be9f118bb74c7/orjson-3.11.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8873812c164a90a79f65368f8f96817e59e35d0cc02786a5356f0e2abed78040", size = 129207, upload-time = "2025-10-24T15:48:52.193Z" }, - { url = "https://files.pythonhosted.org/packages/28/43/d1e94837543321c119dff277ae8e348562fe8c0fafbb648ef7cb0c67e521/orjson-3.11.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5d7feb0741ebb15204e748f26c9638e6665a5fa93c37a2c73d64f1669b0ddc63", size = 136323, upload-time = "2025-10-24T15:48:54.806Z" }, - { url = "https://files.pythonhosted.org/packages/bf/04/93303776c8890e422a5847dd012b4853cdd88206b8bbd3edc292c90102d1/orjson-3.11.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:01ee5487fefee21e6910da4c2ee9eef005bee568a0879834df86f888d2ffbdd9", size = 137440, upload-time = "2025-10-24T15:48:56.326Z" }, - { url = "https://files.pythonhosted.org/packages/1e/ef/75519d039e5ae6b0f34d0336854d55544ba903e21bf56c83adc51cd8bf82/orjson-3.11.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d40d46f348c0321df01507f92b95a377240c4ec31985225a6668f10e2676f9a", size = 136680, upload-time = "2025-10-24T15:48:57.476Z" }, - { url = "https://files.pythonhosted.org/packages/b5/18/bf8581eaae0b941b44efe14fee7b7862c3382fbc9a0842132cfc7cf5ecf4/orjson-3.11.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95713e5fc8af84d8edc75b785d2386f653b63d62b16d681687746734b4dfc0be", size = 136160, upload-time = "2025-10-24T15:48:59.631Z" }, - { url = "https://files.pythonhosted.org/packages/c4/35/a6d582766d351f87fc0a22ad740a641b0a8e6fc47515e8614d2e4790ae10/orjson-3.11.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ad73ede24f9083614d6c4ca9a85fe70e33be7bf047ec586ee2363bc7418fe4d7", size = 140318, upload-time = "2025-10-24T15:49:00.834Z" }, - { url = "https://files.pythonhosted.org/packages/76/b3/5a4801803ab2e2e2d703bce1a56540d9f99a9143fbec7bf63d225044fef8/orjson-3.11.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:842289889de515421f3f224ef9c1f1efb199a32d76d8d2ca2706fa8afe749549", size = 406330, upload-time = "2025-10-24T15:49:02.327Z" }, - { url = "https://files.pythonhosted.org/packages/80/55/a8f682f64833e3a649f620eafefee175cbfeb9854fc5b710b90c3bca45df/orjson-3.11.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3b2427ed5791619851c52a1261b45c233930977e7de8cf36de05636c708fa905", size = 149580, upload-time = "2025-10-24T15:49:03.517Z" }, - { url = "https://files.pythonhosted.org/packages/ad/e4/c132fa0c67afbb3eb88274fa98df9ac1f631a675e7877037c611805a4413/orjson-3.11.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3c36e524af1d29982e9b190573677ea02781456b2e537d5840e4538a5ec41907", size = 139846, upload-time = "2025-10-24T15:49:04.761Z" }, - { url = "https://files.pythonhosted.org/packages/54/06/dc3491489efd651fef99c5908e13951abd1aead1257c67f16135f95ce209/orjson-3.11.4-cp311-cp311-win32.whl", hash = "sha256:87255b88756eab4a68ec61837ca754e5d10fa8bc47dc57f75cedfeaec358d54c", size = 135781, upload-time = "2025-10-24T15:49:05.969Z" }, - { url = "https://files.pythonhosted.org/packages/79/b7/5e5e8d77bd4ea02a6ac54c42c818afb01dd31961be8a574eb79f1d2cfb1e/orjson-3.11.4-cp311-cp311-win_amd64.whl", hash = "sha256:e2d5d5d798aba9a0e1fede8d853fa899ce2cb930ec0857365f700dffc2c7af6a", size = 131391, upload-time = "2025-10-24T15:49:07.355Z" }, - { url = "https://files.pythonhosted.org/packages/0f/dc/9484127cc1aa213be398ed735f5f270eedcb0c0977303a6f6ddc46b60204/orjson-3.11.4-cp311-cp311-win_arm64.whl", hash = "sha256:6bb6bb41b14c95d4f2702bce9975fda4516f1db48e500102fc4d8119032ff045", size = 126252, upload-time = "2025-10-24T15:49:08.869Z" }, - { url = "https://files.pythonhosted.org/packages/63/51/6b556192a04595b93e277a9ff71cd0cc06c21a7df98bcce5963fa0f5e36f/orjson-3.11.4-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:d4371de39319d05d3f482f372720b841c841b52f5385bd99c61ed69d55d9ab50", size = 243571, upload-time = "2025-10-24T15:49:10.008Z" }, - { url = "https://files.pythonhosted.org/packages/1c/2c/2602392ddf2601d538ff11848b98621cd465d1a1ceb9db9e8043181f2f7b/orjson-3.11.4-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:e41fd3b3cac850eaae78232f37325ed7d7436e11c471246b87b2cd294ec94853", size = 128891, upload-time = "2025-10-24T15:49:11.297Z" }, - { url = "https://files.pythonhosted.org/packages/4e/47/bf85dcf95f7a3a12bf223394a4f849430acd82633848d52def09fa3f46ad/orjson-3.11.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:600e0e9ca042878c7fdf189cf1b028fe2c1418cc9195f6cb9824eb6ed99cb938", size = 130137, upload-time = "2025-10-24T15:49:12.544Z" }, - { url = "https://files.pythonhosted.org/packages/b4/4d/a0cb31007f3ab6f1fd2a1b17057c7c349bc2baf8921a85c0180cc7be8011/orjson-3.11.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7bbf9b333f1568ef5da42bc96e18bf30fd7f8d54e9ae066d711056add508e415", size = 129152, upload-time = "2025-10-24T15:49:13.754Z" }, - { url = "https://files.pythonhosted.org/packages/f7/ef/2811def7ce3d8576b19e3929fff8f8f0d44bc5eb2e0fdecb2e6e6cc6c720/orjson-3.11.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4806363144bb6e7297b8e95870e78d30a649fdc4e23fc84daa80c8ebd366ce44", size = 136834, upload-time = "2025-10-24T15:49:15.307Z" }, - { url = "https://files.pythonhosted.org/packages/00/d4/9aee9e54f1809cec8ed5abd9bc31e8a9631d19460e3b8470145d25140106/orjson-3.11.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad355e8308493f527d41154e9053b86a5be892b3b359a5c6d5d95cda23601cb2", size = 137519, upload-time = "2025-10-24T15:49:16.557Z" }, - { url = "https://files.pythonhosted.org/packages/db/ea/67bfdb5465d5679e8ae8d68c11753aaf4f47e3e7264bad66dc2f2249e643/orjson-3.11.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8a7517482667fb9f0ff1b2f16fe5829296ed7a655d04d68cd9711a4d8a4e708", size = 136749, upload-time = "2025-10-24T15:49:17.796Z" }, - { url = "https://files.pythonhosted.org/packages/01/7e/62517dddcfce6d53a39543cd74d0dccfcbdf53967017c58af68822100272/orjson-3.11.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97eb5942c7395a171cbfecc4ef6701fc3c403e762194683772df4c54cfbb2210", size = 136325, upload-time = "2025-10-24T15:49:19.347Z" }, - { url = "https://files.pythonhosted.org/packages/18/ae/40516739f99ab4c7ec3aaa5cc242d341fcb03a45d89edeeaabc5f69cb2cf/orjson-3.11.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:149d95d5e018bdd822e3f38c103b1a7c91f88d38a88aada5c4e9b3a73a244241", size = 140204, upload-time = "2025-10-24T15:49:20.545Z" }, - { url = "https://files.pythonhosted.org/packages/82/18/ff5734365623a8916e3a4037fcef1cd1782bfc14cf0992afe7940c5320bf/orjson-3.11.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:624f3951181eb46fc47dea3d221554e98784c823e7069edb5dbd0dc826ac909b", size = 406242, upload-time = "2025-10-24T15:49:21.884Z" }, - { url = "https://files.pythonhosted.org/packages/e1/43/96436041f0a0c8c8deca6a05ebeaf529bf1de04839f93ac5e7c479807aec/orjson-3.11.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:03bfa548cf35e3f8b3a96c4e8e41f753c686ff3d8e182ce275b1751deddab58c", size = 150013, upload-time = "2025-10-24T15:49:23.185Z" }, - { url = "https://files.pythonhosted.org/packages/1b/48/78302d98423ed8780479a1e682b9aecb869e8404545d999d34fa486e573e/orjson-3.11.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:525021896afef44a68148f6ed8a8bf8375553d6066c7f48537657f64823565b9", size = 139951, upload-time = "2025-10-24T15:49:24.428Z" }, - { url = "https://files.pythonhosted.org/packages/4a/7b/ad613fdcdaa812f075ec0875143c3d37f8654457d2af17703905425981bf/orjson-3.11.4-cp312-cp312-win32.whl", hash = "sha256:b58430396687ce0f7d9eeb3dd47761ca7d8fda8e9eb92b3077a7a353a75efefa", size = 136049, upload-time = "2025-10-24T15:49:25.973Z" }, - { url = "https://files.pythonhosted.org/packages/b9/3c/9cf47c3ff5f39b8350fb21ba65d789b6a1129d4cbb3033ba36c8a9023520/orjson-3.11.4-cp312-cp312-win_amd64.whl", hash = "sha256:c6dbf422894e1e3c80a177133c0dda260f81428f9de16d61041949f6a2e5c140", size = 131461, upload-time = "2025-10-24T15:49:27.259Z" }, - { url = "https://files.pythonhosted.org/packages/c6/3b/e2425f61e5825dc5b08c2a5a2b3af387eaaca22a12b9c8c01504f8614c36/orjson-3.11.4-cp312-cp312-win_arm64.whl", hash = "sha256:d38d2bc06d6415852224fcc9c0bfa834c25431e466dc319f0edd56cca81aa96e", size = 126167, upload-time = "2025-10-24T15:49:28.511Z" }, - { url = "https://files.pythonhosted.org/packages/23/15/c52aa7112006b0f3d6180386c3a46ae057f932ab3425bc6f6ac50431cca1/orjson-3.11.4-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2d6737d0e616a6e053c8b4acc9eccea6b6cce078533666f32d140e4f85002534", size = 243525, upload-time = "2025-10-24T15:49:29.737Z" }, - { url = "https://files.pythonhosted.org/packages/ec/38/05340734c33b933fd114f161f25a04e651b0c7c33ab95e9416ade5cb44b8/orjson-3.11.4-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:afb14052690aa328cc118a8e09f07c651d301a72e44920b887c519b313d892ff", size = 128871, upload-time = "2025-10-24T15:49:31.109Z" }, - { url = "https://files.pythonhosted.org/packages/55/b9/ae8d34899ff0c012039b5a7cb96a389b2476e917733294e498586b45472d/orjson-3.11.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38aa9e65c591febb1b0aed8da4d469eba239d434c218562df179885c94e1a3ad", size = 130055, upload-time = "2025-10-24T15:49:33.382Z" }, - { url = "https://files.pythonhosted.org/packages/33/aa/6346dd5073730451bee3681d901e3c337e7ec17342fb79659ec9794fc023/orjson-3.11.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f2cf4dfaf9163b0728d061bebc1e08631875c51cd30bf47cb9e3293bfbd7dcd5", size = 129061, upload-time = "2025-10-24T15:49:34.935Z" }, - { url = "https://files.pythonhosted.org/packages/39/e4/8eea51598f66a6c853c380979912d17ec510e8e66b280d968602e680b942/orjson-3.11.4-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:89216ff3dfdde0e4070932e126320a1752c9d9a758d6a32ec54b3b9334991a6a", size = 136541, upload-time = "2025-10-24T15:49:36.923Z" }, - { url = "https://files.pythonhosted.org/packages/9a/47/cb8c654fa9adcc60e99580e17c32b9e633290e6239a99efa6b885aba9dbc/orjson-3.11.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9daa26ca8e97fae0ce8aa5d80606ef8f7914e9b129b6b5df9104266f764ce436", size = 137535, upload-time = "2025-10-24T15:49:38.307Z" }, - { url = "https://files.pythonhosted.org/packages/43/92/04b8cc5c2b729f3437ee013ce14a60ab3d3001465d95c184758f19362f23/orjson-3.11.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c8b2769dc31883c44a9cd126560327767f848eb95f99c36c9932f51090bfce9", size = 136703, upload-time = "2025-10-24T15:49:40.795Z" }, - { url = "https://files.pythonhosted.org/packages/aa/fd/d0733fcb9086b8be4ebcfcda2d0312865d17d0d9884378b7cffb29d0763f/orjson-3.11.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1469d254b9884f984026bd9b0fa5bbab477a4bfe558bba6848086f6d43eb5e73", size = 136293, upload-time = "2025-10-24T15:49:42.347Z" }, - { url = "https://files.pythonhosted.org/packages/c2/d7/3c5514e806837c210492d72ae30ccf050ce3f940f45bf085bab272699ef4/orjson-3.11.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:68e44722541983614e37117209a194e8c3ad07838ccb3127d96863c95ec7f1e0", size = 140131, upload-time = "2025-10-24T15:49:43.638Z" }, - { url = "https://files.pythonhosted.org/packages/9c/dd/ba9d32a53207babf65bd510ac4d0faaa818bd0df9a9c6f472fe7c254f2e3/orjson-3.11.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:8e7805fda9672c12be2f22ae124dcd7b03928d6c197544fe12174b86553f3196", size = 406164, upload-time = "2025-10-24T15:49:45.498Z" }, - { url = "https://files.pythonhosted.org/packages/8e/f9/f68ad68f4af7c7bde57cd514eaa2c785e500477a8bc8f834838eb696a685/orjson-3.11.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:04b69c14615fb4434ab867bf6f38b2d649f6f300af30a6705397e895f7aec67a", size = 149859, upload-time = "2025-10-24T15:49:46.981Z" }, - { url = "https://files.pythonhosted.org/packages/b6/d2/7f847761d0c26818395b3d6b21fb6bc2305d94612a35b0a30eae65a22728/orjson-3.11.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:639c3735b8ae7f970066930e58cf0ed39a852d417c24acd4a25fc0b3da3c39a6", size = 139926, upload-time = "2025-10-24T15:49:48.321Z" }, - { url = "https://files.pythonhosted.org/packages/9f/37/acd14b12dc62db9a0e1d12386271b8661faae270b22492580d5258808975/orjson-3.11.4-cp313-cp313-win32.whl", hash = "sha256:6c13879c0d2964335491463302a6ca5ad98105fc5db3565499dcb80b1b4bd839", size = 136007, upload-time = "2025-10-24T15:49:49.938Z" }, - { url = "https://files.pythonhosted.org/packages/c0/a9/967be009ddf0a1fffd7a67de9c36656b28c763659ef91352acc02cbe364c/orjson-3.11.4-cp313-cp313-win_amd64.whl", hash = "sha256:09bf242a4af98732db9f9a1ec57ca2604848e16f132e3f72edfd3c5c96de009a", size = 131314, upload-time = "2025-10-24T15:49:51.248Z" }, - { url = "https://files.pythonhosted.org/packages/cb/db/399abd6950fbd94ce125cb8cd1a968def95174792e127b0642781e040ed4/orjson-3.11.4-cp313-cp313-win_arm64.whl", hash = "sha256:a85f0adf63319d6c1ba06fb0dbf997fced64a01179cf17939a6caca662bf92de", size = 126152, upload-time = "2025-10-24T15:49:52.922Z" }, - { url = "https://files.pythonhosted.org/packages/25/e3/54ff63c093cc1697e758e4fceb53164dd2661a7d1bcd522260ba09f54533/orjson-3.11.4-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:42d43a1f552be1a112af0b21c10a5f553983c2a0938d2bbb8ecd8bc9fb572803", size = 243501, upload-time = "2025-10-24T15:49:54.288Z" }, - { url = "https://files.pythonhosted.org/packages/ac/7d/e2d1076ed2e8e0ae9badca65bf7ef22710f93887b29eaa37f09850604e09/orjson-3.11.4-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:26a20f3fbc6c7ff2cb8e89c4c5897762c9d88cf37330c6a117312365d6781d54", size = 128862, upload-time = "2025-10-24T15:49:55.961Z" }, - { url = "https://files.pythonhosted.org/packages/9f/37/ca2eb40b90621faddfa9517dfe96e25f5ae4d8057a7c0cdd613c17e07b2c/orjson-3.11.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e3f20be9048941c7ffa8fc523ccbd17f82e24df1549d1d1fe9317712d19938e", size = 130047, upload-time = "2025-10-24T15:49:57.406Z" }, - { url = "https://files.pythonhosted.org/packages/c7/62/1021ed35a1f2bad9040f05fa4cc4f9893410df0ba3eaa323ccf899b1c90a/orjson-3.11.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aac364c758dc87a52e68e349924d7e4ded348dedff553889e4d9f22f74785316", size = 129073, upload-time = "2025-10-24T15:49:58.782Z" }, - { url = "https://files.pythonhosted.org/packages/e8/3f/f84d966ec2a6fd5f73b1a707e7cd876813422ae4bf9f0145c55c9c6a0f57/orjson-3.11.4-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d5c54a6d76e3d741dcc3f2707f8eeb9ba2a791d3adbf18f900219b62942803b1", size = 136597, upload-time = "2025-10-24T15:50:00.12Z" }, - { url = "https://files.pythonhosted.org/packages/32/78/4fa0aeca65ee82bbabb49e055bd03fa4edea33f7c080c5c7b9601661ef72/orjson-3.11.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f28485bdca8617b79d44627f5fb04336897041dfd9fa66d383a49d09d86798bc", size = 137515, upload-time = "2025-10-24T15:50:01.57Z" }, - { url = "https://files.pythonhosted.org/packages/c1/9d/0c102e26e7fde40c4c98470796d050a2ec1953897e2c8ab0cb95b0759fa2/orjson-3.11.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bfc2a484cad3585e4ba61985a6062a4c2ed5c7925db6d39f1fa267c9d166487f", size = 136703, upload-time = "2025-10-24T15:50:02.944Z" }, - { url = "https://files.pythonhosted.org/packages/df/ac/2de7188705b4cdfaf0b6c97d2f7849c17d2003232f6e70df98602173f788/orjson-3.11.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e34dbd508cb91c54f9c9788923daca129fe5b55c5b4eebe713bf5ed3791280cf", size = 136311, upload-time = "2025-10-24T15:50:04.441Z" }, - { url = "https://files.pythonhosted.org/packages/e0/52/847fcd1a98407154e944feeb12e3b4d487a0e264c40191fb44d1269cbaa1/orjson-3.11.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b13c478fa413d4b4ee606ec8e11c3b2e52683a640b006bb586b3041c2ca5f606", size = 140127, upload-time = "2025-10-24T15:50:07.398Z" }, - { url = "https://files.pythonhosted.org/packages/c1/ae/21d208f58bdb847dd4d0d9407e2929862561841baa22bdab7aea10ca088e/orjson-3.11.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:724ca721ecc8a831b319dcd72cfa370cc380db0bf94537f08f7edd0a7d4e1780", size = 406201, upload-time = "2025-10-24T15:50:08.796Z" }, - { url = "https://files.pythonhosted.org/packages/8d/55/0789d6de386c8366059db098a628e2ad8798069e94409b0d8935934cbcb9/orjson-3.11.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:977c393f2e44845ce1b540e19a786e9643221b3323dae190668a98672d43fb23", size = 149872, upload-time = "2025-10-24T15:50:10.234Z" }, - { url = "https://files.pythonhosted.org/packages/cc/1d/7ff81ea23310e086c17b41d78a72270d9de04481e6113dbe2ac19118f7fb/orjson-3.11.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1e539e382cf46edec157ad66b0b0872a90d829a6b71f17cb633d6c160a223155", size = 139931, upload-time = "2025-10-24T15:50:11.623Z" }, - { url = "https://files.pythonhosted.org/packages/77/92/25b886252c50ed64be68c937b562b2f2333b45afe72d53d719e46a565a50/orjson-3.11.4-cp314-cp314-win32.whl", hash = "sha256:d63076d625babab9db5e7836118bdfa086e60f37d8a174194ae720161eb12394", size = 136065, upload-time = "2025-10-24T15:50:13.025Z" }, - { url = "https://files.pythonhosted.org/packages/63/b8/718eecf0bb7e9d64e4956afaafd23db9f04c776d445f59fe94f54bdae8f0/orjson-3.11.4-cp314-cp314-win_amd64.whl", hash = "sha256:0a54d6635fa3aaa438ae32e8570b9f0de36f3f6562c308d2a2a452e8b0592db1", size = 131310, upload-time = "2025-10-24T15:50:14.46Z" }, - { url = "https://files.pythonhosted.org/packages/1a/bf/def5e25d4d8bfce296a9a7c8248109bf58622c21618b590678f945a2c59c/orjson-3.11.4-cp314-cp314-win_arm64.whl", hash = "sha256:78b999999039db3cf58f6d230f524f04f75f129ba3d1ca2ed121f8657e575d3d", size = 126151, upload-time = "2025-10-24T15:50:15.878Z" }, + { url = "https://files.pythonhosted.org/packages/fd/68/6b3659daec3a81aed5ab47700adb1a577c76a5452d35b91c88efee89987f/orjson-3.11.5-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9c8494625ad60a923af6b2b0bd74107146efe9b55099e20d7740d995f338fcd8", size = 245318, upload-time = "2025-12-06T15:54:02.355Z" }, + { url = "https://files.pythonhosted.org/packages/e9/00/92db122261425f61803ccf0830699ea5567439d966cbc35856fe711bfe6b/orjson-3.11.5-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:7bb2ce0b82bc9fd1168a513ddae7a857994b780b2945a8c51db4ab1c4b751ebc", size = 129491, upload-time = "2025-12-06T15:54:03.877Z" }, + { url = "https://files.pythonhosted.org/packages/94/4f/ffdcb18356518809d944e1e1f77589845c278a1ebbb5a8297dfefcc4b4cb/orjson-3.11.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67394d3becd50b954c4ecd24ac90b5051ee7c903d167459f93e77fc6f5b4c968", size = 132167, upload-time = "2025-12-06T15:54:04.944Z" }, + { url = "https://files.pythonhosted.org/packages/97/c6/0a8caff96f4503f4f7dd44e40e90f4d14acf80d3b7a97cb88747bb712d3e/orjson-3.11.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:298d2451f375e5f17b897794bcc3e7b821c0f32b4788b9bcae47ada24d7f3cf7", size = 130516, upload-time = "2025-12-06T15:54:06.274Z" }, + { url = "https://files.pythonhosted.org/packages/4d/63/43d4dc9bd9954bff7052f700fdb501067f6fb134a003ddcea2a0bb3854ed/orjson-3.11.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa5e4244063db8e1d87e0f54c3f7522f14b2dc937e65d5241ef0076a096409fd", size = 135695, upload-time = "2025-12-06T15:54:07.702Z" }, + { url = "https://files.pythonhosted.org/packages/87/6f/27e2e76d110919cb7fcb72b26166ee676480a701bcf8fc53ac5d0edce32f/orjson-3.11.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1db2088b490761976c1b2e956d5d4e6409f3732e9d79cfa69f876c5248d1baf9", size = 139664, upload-time = "2025-12-06T15:54:08.828Z" }, + { url = "https://files.pythonhosted.org/packages/d4/f8/5966153a5f1be49b5fbb8ca619a529fde7bc71aa0a376f2bb83fed248bcd/orjson-3.11.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2ed66358f32c24e10ceea518e16eb3549e34f33a9d51f99ce23b0251776a1ef", size = 137289, upload-time = "2025-12-06T15:54:09.898Z" }, + { url = "https://files.pythonhosted.org/packages/a7/34/8acb12ff0299385c8bbcbb19fbe40030f23f15a6de57a9c587ebf71483fb/orjson-3.11.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2021afda46c1ed64d74b555065dbd4c2558d510d8cec5ea6a53001b3e5e82a9", size = 138784, upload-time = "2025-12-06T15:54:11.022Z" }, + { url = "https://files.pythonhosted.org/packages/ee/27/910421ea6e34a527f73d8f4ee7bdffa48357ff79c7b8d6eb6f7b82dd1176/orjson-3.11.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b42ffbed9128e547a1647a3e50bc88ab28ae9daa61713962e0d3dd35e820c125", size = 141322, upload-time = "2025-12-06T15:54:12.427Z" }, + { url = "https://files.pythonhosted.org/packages/87/a3/4b703edd1a05555d4bb1753d6ce44e1a05b7a6d7c164d5b332c795c63d70/orjson-3.11.5-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:8d5f16195bb671a5dd3d1dbea758918bada8f6cc27de72bd64adfbd748770814", size = 413612, upload-time = "2025-12-06T15:54:13.858Z" }, + { url = "https://files.pythonhosted.org/packages/1b/36/034177f11d7eeea16d3d2c42a1883b0373978e08bc9dad387f5074c786d8/orjson-3.11.5-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c0e5d9f7a0227df2927d343a6e3859bebf9208b427c79bd31949abcc2fa32fa5", size = 150993, upload-time = "2025-12-06T15:54:15.189Z" }, + { url = "https://files.pythonhosted.org/packages/44/2f/ea8b24ee046a50a7d141c0227c4496b1180b215e728e3b640684f0ea448d/orjson-3.11.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:23d04c4543e78f724c4dfe656b3791b5f98e4c9253e13b2636f1af5d90e4a880", size = 141774, upload-time = "2025-12-06T15:54:16.451Z" }, + { url = "https://files.pythonhosted.org/packages/8a/12/cc440554bf8200eb23348a5744a575a342497b65261cd65ef3b28332510a/orjson-3.11.5-cp311-cp311-win32.whl", hash = "sha256:c404603df4865f8e0afe981aa3c4b62b406e6d06049564d58934860b62b7f91d", size = 135109, upload-time = "2025-12-06T15:54:17.73Z" }, + { url = "https://files.pythonhosted.org/packages/a3/83/e0c5aa06ba73a6760134b169f11fb970caa1525fa4461f94d76e692299d9/orjson-3.11.5-cp311-cp311-win_amd64.whl", hash = "sha256:9645ef655735a74da4990c24ffbd6894828fbfa117bc97c1edd98c282ecb52e1", size = 133193, upload-time = "2025-12-06T15:54:19.426Z" }, + { url = "https://files.pythonhosted.org/packages/cb/35/5b77eaebc60d735e832c5b1a20b155667645d123f09d471db0a78280fb49/orjson-3.11.5-cp311-cp311-win_arm64.whl", hash = "sha256:1cbf2735722623fcdee8e712cbaaab9e372bbcb0c7924ad711b261c2eccf4a5c", size = 126830, upload-time = "2025-12-06T15:54:20.836Z" }, + { url = "https://files.pythonhosted.org/packages/ef/a4/8052a029029b096a78955eadd68ab594ce2197e24ec50e6b6d2ab3f4e33b/orjson-3.11.5-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:334e5b4bff9ad101237c2d799d9fd45737752929753bf4faf4b207335a416b7d", size = 245347, upload-time = "2025-12-06T15:54:22.061Z" }, + { url = "https://files.pythonhosted.org/packages/64/67/574a7732bd9d9d79ac620c8790b4cfe0717a3d5a6eb2b539e6e8995e24a0/orjson-3.11.5-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:ff770589960a86eae279f5d8aa536196ebda8273a2a07db2a54e82b93bc86626", size = 129435, upload-time = "2025-12-06T15:54:23.615Z" }, + { url = "https://files.pythonhosted.org/packages/52/8d/544e77d7a29d90cf4d9eecd0ae801c688e7f3d1adfa2ebae5e1e94d38ab9/orjson-3.11.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed24250e55efbcb0b35bed7caaec8cedf858ab2f9f2201f17b8938c618c8ca6f", size = 132074, upload-time = "2025-12-06T15:54:24.694Z" }, + { url = "https://files.pythonhosted.org/packages/6e/57/b9f5b5b6fbff9c26f77e785baf56ae8460ef74acdb3eae4931c25b8f5ba9/orjson-3.11.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a66d7769e98a08a12a139049aac2f0ca3adae989817f8c43337455fbc7669b85", size = 130520, upload-time = "2025-12-06T15:54:26.185Z" }, + { url = "https://files.pythonhosted.org/packages/f6/6d/d34970bf9eb33f9ec7c979a262cad86076814859e54eb9a059a52f6dc13d/orjson-3.11.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:86cfc555bfd5794d24c6a1903e558b50644e5e68e6471d66502ce5cb5fdef3f9", size = 136209, upload-time = "2025-12-06T15:54:27.264Z" }, + { url = "https://files.pythonhosted.org/packages/e7/39/bc373b63cc0e117a105ea12e57280f83ae52fdee426890d57412432d63b3/orjson-3.11.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a230065027bc2a025e944f9d4714976a81e7ecfa940923283bca7bbc1f10f626", size = 139837, upload-time = "2025-12-06T15:54:28.75Z" }, + { url = "https://files.pythonhosted.org/packages/cb/aa/7c4818c8d7d324da220f4f1af55c343956003aa4d1ce1857bdc1d396ba69/orjson-3.11.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b29d36b60e606df01959c4b982729c8845c69d1963f88686608be9ced96dbfaa", size = 137307, upload-time = "2025-12-06T15:54:29.856Z" }, + { url = "https://files.pythonhosted.org/packages/46/bf/0993b5a056759ba65145effe3a79dd5a939d4a070eaa5da2ee3180fbb13f/orjson-3.11.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c74099c6b230d4261fdc3169d50efc09abf38ace1a42ea2f9994b1d79153d477", size = 139020, upload-time = "2025-12-06T15:54:31.024Z" }, + { url = "https://files.pythonhosted.org/packages/65/e8/83a6c95db3039e504eda60fc388f9faedbb4f6472f5aba7084e06552d9aa/orjson-3.11.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e697d06ad57dd0c7a737771d470eedc18e68dfdefcdd3b7de7f33dfda5b6212e", size = 141099, upload-time = "2025-12-06T15:54:32.196Z" }, + { url = "https://files.pythonhosted.org/packages/b9/b4/24fdc024abfce31c2f6812973b0a693688037ece5dc64b7a60c1ce69e2f2/orjson-3.11.5-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e08ca8a6c851e95aaecc32bc44a5aa75d0ad26af8cdac7c77e4ed93acf3d5b69", size = 413540, upload-time = "2025-12-06T15:54:33.361Z" }, + { url = "https://files.pythonhosted.org/packages/d9/37/01c0ec95d55ed0c11e4cae3e10427e479bba40c77312b63e1f9665e0737d/orjson-3.11.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e8b5f96c05fce7d0218df3fdfeb962d6b8cfff7e3e20264306b46dd8b217c0f3", size = 151530, upload-time = "2025-12-06T15:54:34.6Z" }, + { url = "https://files.pythonhosted.org/packages/f9/d4/f9ebc57182705bb4bbe63f5bbe14af43722a2533135e1d2fb7affa0c355d/orjson-3.11.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ddbfdb5099b3e6ba6d6ea818f61997bb66de14b411357d24c4612cf1ebad08ca", size = 141863, upload-time = "2025-12-06T15:54:35.801Z" }, + { url = "https://files.pythonhosted.org/packages/0d/04/02102b8d19fdcb009d72d622bb5781e8f3fae1646bf3e18c53d1bc8115b5/orjson-3.11.5-cp312-cp312-win32.whl", hash = "sha256:9172578c4eb09dbfcf1657d43198de59b6cef4054de385365060ed50c458ac98", size = 135255, upload-time = "2025-12-06T15:54:37.209Z" }, + { url = "https://files.pythonhosted.org/packages/d4/fb/f05646c43d5450492cb387de5549f6de90a71001682c17882d9f66476af5/orjson-3.11.5-cp312-cp312-win_amd64.whl", hash = "sha256:2b91126e7b470ff2e75746f6f6ee32b9ab67b7a93c8ba1d15d3a0caaf16ec875", size = 133252, upload-time = "2025-12-06T15:54:38.401Z" }, + { url = "https://files.pythonhosted.org/packages/dc/a6/7b8c0b26ba18c793533ac1cd145e131e46fcf43952aa94c109b5b913c1f0/orjson-3.11.5-cp312-cp312-win_arm64.whl", hash = "sha256:acbc5fac7e06777555b0722b8ad5f574739e99ffe99467ed63da98f97f9ca0fe", size = 126777, upload-time = "2025-12-06T15:54:39.515Z" }, + { url = "https://files.pythonhosted.org/packages/10/43/61a77040ce59f1569edf38f0b9faadc90c8cf7e9bec2e0df51d0132c6bb7/orjson-3.11.5-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:3b01799262081a4c47c035dd77c1301d40f568f77cc7ec1bb7db5d63b0a01629", size = 245271, upload-time = "2025-12-06T15:54:40.878Z" }, + { url = "https://files.pythonhosted.org/packages/55/f9/0f79be617388227866d50edd2fd320cb8fb94dc1501184bb1620981a0aba/orjson-3.11.5-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:61de247948108484779f57a9f406e4c84d636fa5a59e411e6352484985e8a7c3", size = 129422, upload-time = "2025-12-06T15:54:42.403Z" }, + { url = "https://files.pythonhosted.org/packages/77/42/f1bf1549b432d4a78bfa95735b79b5dac75b65b5bb815bba86ad406ead0a/orjson-3.11.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:894aea2e63d4f24a7f04a1908307c738d0dce992e9249e744b8f4e8dd9197f39", size = 132060, upload-time = "2025-12-06T15:54:43.531Z" }, + { url = "https://files.pythonhosted.org/packages/25/49/825aa6b929f1a6ed244c78acd7b22c1481fd7e5fda047dc8bf4c1a807eb6/orjson-3.11.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ddc21521598dbe369d83d4d40338e23d4101dad21dae0e79fa20465dbace019f", size = 130391, upload-time = "2025-12-06T15:54:45.059Z" }, + { url = "https://files.pythonhosted.org/packages/42/ec/de55391858b49e16e1aa8f0bbbb7e5997b7345d8e984a2dec3746d13065b/orjson-3.11.5-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7cce16ae2f5fb2c53c3eafdd1706cb7b6530a67cc1c17abe8ec747f5cd7c0c51", size = 135964, upload-time = "2025-12-06T15:54:46.576Z" }, + { url = "https://files.pythonhosted.org/packages/1c/40/820bc63121d2d28818556a2d0a09384a9f0262407cf9fa305e091a8048df/orjson-3.11.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e46c762d9f0e1cfb4ccc8515de7f349abbc95b59cb5a2bd68df5973fdef913f8", size = 139817, upload-time = "2025-12-06T15:54:48.084Z" }, + { url = "https://files.pythonhosted.org/packages/09/c7/3a445ca9a84a0d59d26365fd8898ff52bdfcdcb825bcc6519830371d2364/orjson-3.11.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d7345c759276b798ccd6d77a87136029e71e66a8bbf2d2755cbdde1d82e78706", size = 137336, upload-time = "2025-12-06T15:54:49.426Z" }, + { url = "https://files.pythonhosted.org/packages/9a/b3/dc0d3771f2e5d1f13368f56b339c6782f955c6a20b50465a91acb79fe961/orjson-3.11.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75bc2e59e6a2ac1dd28901d07115abdebc4563b5b07dd612bf64260a201b1c7f", size = 138993, upload-time = "2025-12-06T15:54:50.939Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a2/65267e959de6abe23444659b6e19c888f242bf7725ff927e2292776f6b89/orjson-3.11.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:54aae9b654554c3b4edd61896b978568c6daa16af96fa4681c9b5babd469f863", size = 141070, upload-time = "2025-12-06T15:54:52.414Z" }, + { url = "https://files.pythonhosted.org/packages/63/c9/da44a321b288727a322c6ab17e1754195708786a04f4f9d2220a5076a649/orjson-3.11.5-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:4bdd8d164a871c4ec773f9de0f6fe8769c2d6727879c37a9666ba4183b7f8228", size = 413505, upload-time = "2025-12-06T15:54:53.67Z" }, + { url = "https://files.pythonhosted.org/packages/7f/17/68dc14fa7000eefb3d4d6d7326a190c99bb65e319f02747ef3ebf2452f12/orjson-3.11.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:a261fef929bcf98a60713bf5e95ad067cea16ae345d9a35034e73c3990e927d2", size = 151342, upload-time = "2025-12-06T15:54:55.113Z" }, + { url = "https://files.pythonhosted.org/packages/c4/c5/ccee774b67225bed630a57478529fc026eda33d94fe4c0eac8fe58d4aa52/orjson-3.11.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c028a394c766693c5c9909dec76b24f37e6a1b91999e8d0c0d5feecbe93c3e05", size = 141823, upload-time = "2025-12-06T15:54:56.331Z" }, + { url = "https://files.pythonhosted.org/packages/67/80/5d00e4155d0cd7390ae2087130637671da713959bb558db9bac5e6f6b042/orjson-3.11.5-cp313-cp313-win32.whl", hash = "sha256:2cc79aaad1dfabe1bd2d50ee09814a1253164b3da4c00a78c458d82d04b3bdef", size = 135236, upload-time = "2025-12-06T15:54:57.507Z" }, + { url = "https://files.pythonhosted.org/packages/95/fe/792cc06a84808dbdc20ac6eab6811c53091b42f8e51ecebf14b540e9cfe4/orjson-3.11.5-cp313-cp313-win_amd64.whl", hash = "sha256:ff7877d376add4e16b274e35a3f58b7f37b362abf4aa31863dadacdd20e3a583", size = 133167, upload-time = "2025-12-06T15:54:58.71Z" }, + { url = "https://files.pythonhosted.org/packages/46/2c/d158bd8b50e3b1cfdcf406a7e463f6ffe3f0d167b99634717acdaf5e299f/orjson-3.11.5-cp313-cp313-win_arm64.whl", hash = "sha256:59ac72ea775c88b163ba8d21b0177628bd015c5dd060647bbab6e22da3aad287", size = 126712, upload-time = "2025-12-06T15:54:59.892Z" }, + { url = "https://files.pythonhosted.org/packages/c2/60/77d7b839e317ead7bb225d55bb50f7ea75f47afc489c81199befc5435b50/orjson-3.11.5-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e446a8ea0a4c366ceafc7d97067bfd55292969143b57e3c846d87fc701e797a0", size = 245252, upload-time = "2025-12-06T15:55:01.127Z" }, + { url = "https://files.pythonhosted.org/packages/f1/aa/d4639163b400f8044cef0fb9aa51b0337be0da3a27187a20d1166e742370/orjson-3.11.5-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:53deb5addae9c22bbe3739298f5f2196afa881ea75944e7720681c7080909a81", size = 129419, upload-time = "2025-12-06T15:55:02.723Z" }, + { url = "https://files.pythonhosted.org/packages/30/94/9eabf94f2e11c671111139edf5ec410d2f21e6feee717804f7e8872d883f/orjson-3.11.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82cd00d49d6063d2b8791da5d4f9d20539c5951f965e45ccf4e96d33505ce68f", size = 132050, upload-time = "2025-12-06T15:55:03.918Z" }, + { url = "https://files.pythonhosted.org/packages/3d/c8/ca10f5c5322f341ea9a9f1097e140be17a88f88d1cfdd29df522970d9744/orjson-3.11.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3fd15f9fc8c203aeceff4fda211157fad114dde66e92e24097b3647a08f4ee9e", size = 130370, upload-time = "2025-12-06T15:55:05.173Z" }, + { url = "https://files.pythonhosted.org/packages/25/d4/e96824476d361ee2edd5c6290ceb8d7edf88d81148a6ce172fc00278ca7f/orjson-3.11.5-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9df95000fbe6777bf9820ae82ab7578e8662051bb5f83d71a28992f539d2cda7", size = 136012, upload-time = "2025-12-06T15:55:06.402Z" }, + { url = "https://files.pythonhosted.org/packages/85/8e/9bc3423308c425c588903f2d103cfcfe2539e07a25d6522900645a6f257f/orjson-3.11.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92a8d676748fca47ade5bc3da7430ed7767afe51b2f8100e3cd65e151c0eaceb", size = 139809, upload-time = "2025-12-06T15:55:07.656Z" }, + { url = "https://files.pythonhosted.org/packages/e9/3c/b404e94e0b02a232b957c54643ce68d0268dacb67ac33ffdee24008c8b27/orjson-3.11.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa0f513be38b40234c77975e68805506cad5d57b3dfd8fe3baa7f4f4051e15b4", size = 137332, upload-time = "2025-12-06T15:55:08.961Z" }, + { url = "https://files.pythonhosted.org/packages/51/30/cc2d69d5ce0ad9b84811cdf4a0cd5362ac27205a921da524ff42f26d65e0/orjson-3.11.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa1863e75b92891f553b7922ce4ee10ed06db061e104f2b7815de80cdcb135ad", size = 138983, upload-time = "2025-12-06T15:55:10.595Z" }, + { url = "https://files.pythonhosted.org/packages/0e/87/de3223944a3e297d4707d2fe3b1ffb71437550e165eaf0ca8bbe43ccbcb1/orjson-3.11.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d4be86b58e9ea262617b8ca6251a2f0d63cc132a6da4b5fcc8e0a4128782c829", size = 141069, upload-time = "2025-12-06T15:55:11.832Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/81d5087ae74be33bcae3ff2d80f5ccaa4a8fedc6d39bf65a427a95b8977f/orjson-3.11.5-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:b923c1c13fa02084eb38c9c065afd860a5cff58026813319a06949c3af5732ac", size = 413491, upload-time = "2025-12-06T15:55:13.314Z" }, + { url = "https://files.pythonhosted.org/packages/d0/6f/f6058c21e2fc1efaf918986dbc2da5cd38044f1a2d4b7b91ad17c4acf786/orjson-3.11.5-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:1b6bd351202b2cd987f35a13b5e16471cf4d952b42a73c391cc537974c43ef6d", size = 151375, upload-time = "2025-12-06T15:55:14.715Z" }, + { url = "https://files.pythonhosted.org/packages/54/92/c6921f17d45e110892899a7a563a925b2273d929959ce2ad89e2525b885b/orjson-3.11.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:bb150d529637d541e6af06bbe3d02f5498d628b7f98267ff87647584293ab439", size = 141850, upload-time = "2025-12-06T15:55:15.94Z" }, + { url = "https://files.pythonhosted.org/packages/88/86/cdecb0140a05e1a477b81f24739da93b25070ee01ce7f7242f44a6437594/orjson-3.11.5-cp314-cp314-win32.whl", hash = "sha256:9cc1e55c884921434a84a0c3dd2699eb9f92e7b441d7f53f3941079ec6ce7499", size = 135278, upload-time = "2025-12-06T15:55:17.202Z" }, + { url = "https://files.pythonhosted.org/packages/e4/97/b638d69b1e947d24f6109216997e38922d54dcdcdb1b11c18d7efd2d3c59/orjson-3.11.5-cp314-cp314-win_amd64.whl", hash = "sha256:a4f3cb2d874e03bc7767c8f88adaa1a9a05cecea3712649c3b58589ec7317310", size = 133170, upload-time = "2025-12-06T15:55:18.468Z" }, + { url = "https://files.pythonhosted.org/packages/8f/dd/f4fff4a6fe601b4f8f3ba3aa6da8ac33d17d124491a3b804c662a70e1636/orjson-3.11.5-cp314-cp314-win_arm64.whl", hash = "sha256:38b22f476c351f9a1c43e5b07d8b5a02eb24a6ab8e75f700f7d479d4568346a5", size = 126713, upload-time = "2025-12-06T15:55:19.738Z" }, ] [[package]] @@ -2052,17 +1866,6 @@ version = "10.4.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/cd/74/ad3d526f3bf7b6d3f408b73fde271ec69dfac8b81341a318ce825f2b3812/pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", size = 46555059, upload-time = "2024-07-01T09:48:43.583Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0e/69/a31cccd538ca0b5272be2a38347f8839b97a14be104ea08b0db92f749c74/pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e", size = 3509271, upload-time = "2024-07-01T09:45:22.07Z" }, - { url = "https://files.pythonhosted.org/packages/9a/9e/4143b907be8ea0bce215f2ae4f7480027473f8b61fcedfda9d851082a5d2/pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d", size = 3375658, upload-time = "2024-07-01T09:45:25.292Z" }, - { url = "https://files.pythonhosted.org/packages/8a/25/1fc45761955f9359b1169aa75e241551e74ac01a09f487adaaf4c3472d11/pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856", size = 4332075, upload-time = "2024-07-01T09:45:27.94Z" }, - { url = "https://files.pythonhosted.org/packages/5e/dd/425b95d0151e1d6c951f45051112394f130df3da67363b6bc75dc4c27aba/pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f", size = 4444808, upload-time = "2024-07-01T09:45:30.305Z" }, - { url = "https://files.pythonhosted.org/packages/b1/84/9a15cc5726cbbfe7f9f90bfb11f5d028586595907cd093815ca6644932e3/pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b", size = 4356290, upload-time = "2024-07-01T09:45:32.868Z" }, - { url = "https://files.pythonhosted.org/packages/b5/5b/6651c288b08df3b8c1e2f8c1152201e0b25d240e22ddade0f1e242fc9fa0/pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc", size = 4525163, upload-time = "2024-07-01T09:45:35.279Z" }, - { url = "https://files.pythonhosted.org/packages/07/8b/34854bf11a83c248505c8cb0fcf8d3d0b459a2246c8809b967963b6b12ae/pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e", size = 4463100, upload-time = "2024-07-01T09:45:37.74Z" }, - { url = "https://files.pythonhosted.org/packages/78/63/0632aee4e82476d9cbe5200c0cdf9ba41ee04ed77887432845264d81116d/pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46", size = 4592880, upload-time = "2024-07-01T09:45:39.89Z" }, - { url = "https://files.pythonhosted.org/packages/df/56/b8663d7520671b4398b9d97e1ed9f583d4afcbefbda3c6188325e8c297bd/pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984", size = 2235218, upload-time = "2024-07-01T09:45:42.771Z" }, - { url = "https://files.pythonhosted.org/packages/f4/72/0203e94a91ddb4a9d5238434ae6c1ca10e610e8487036132ea9bf806ca2a/pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141", size = 2554487, upload-time = "2024-07-01T09:45:45.176Z" }, - { url = "https://files.pythonhosted.org/packages/bd/52/7e7e93d7a6e4290543f17dc6f7d3af4bd0b3dd9926e2e8a35ac2282bc5f4/pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1", size = 2243219, upload-time = "2024-07-01T09:45:47.274Z" }, { url = "https://files.pythonhosted.org/packages/a7/62/c9449f9c3043c37f73e7487ec4ef0c03eb9c9afc91a92b977a67b3c0bbc5/pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c", size = 3509265, upload-time = "2024-07-01T09:45:49.812Z" }, { url = "https://files.pythonhosted.org/packages/f4/5f/491dafc7bbf5a3cc1845dc0430872e8096eb9e2b6f8161509d124594ec2d/pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be", size = 3375655, upload-time = "2024-07-01T09:45:52.462Z" }, { url = "https://files.pythonhosted.org/packages/73/d5/c4011a76f4207a3c151134cd22a1415741e42fa5ddecec7c0182887deb3d/pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3", size = 4340304, upload-time = "2024-07-01T09:45:55.006Z" }, @@ -2096,13 +1899,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7b/f9/cfaa5082ca9bc4a6de66ffe1c12c2d90bf09c309a5f52b27759a596900e7/pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060", size = 2235603, upload-time = "2024-07-01T09:47:03.918Z" }, { url = "https://files.pythonhosted.org/packages/01/6a/30ff0eef6e0c0e71e55ded56a38d4859bf9d3634a94a88743897b5f96936/pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea", size = 2554972, upload-time = "2024-07-01T09:47:06.152Z" }, { url = "https://files.pythonhosted.org/packages/48/2c/2e0a52890f269435eee38b21c8218e102c621fe8d8df8b9dd06fabf879ba/pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d", size = 2243375, upload-time = "2024-07-01T09:47:09.065Z" }, - { url = "https://files.pythonhosted.org/packages/38/30/095d4f55f3a053392f75e2eae45eba3228452783bab3d9a920b951ac495c/pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4", size = 3493889, upload-time = "2024-07-01T09:48:04.815Z" }, - { url = "https://files.pythonhosted.org/packages/f3/e8/4ff79788803a5fcd5dc35efdc9386af153569853767bff74540725b45863/pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da", size = 3346160, upload-time = "2024-07-01T09:48:07.206Z" }, - { url = "https://files.pythonhosted.org/packages/d7/ac/4184edd511b14f760c73f5bb8a5d6fd85c591c8aff7c2229677a355c4179/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026", size = 3435020, upload-time = "2024-07-01T09:48:09.66Z" }, - { url = "https://files.pythonhosted.org/packages/da/21/1749cd09160149c0a246a81d646e05f35041619ce76f6493d6a96e8d1103/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e", size = 3490539, upload-time = "2024-07-01T09:48:12.529Z" }, - { url = "https://files.pythonhosted.org/packages/b6/f5/f71fe1888b96083b3f6dfa0709101f61fc9e972c0c8d04e9d93ccef2a045/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5", size = 3476125, upload-time = "2024-07-01T09:48:14.891Z" }, - { url = "https://files.pythonhosted.org/packages/96/b9/c0362c54290a31866c3526848583a2f45a535aa9d725fd31e25d318c805f/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885", size = 3579373, upload-time = "2024-07-01T09:48:17.601Z" }, - { url = "https://files.pythonhosted.org/packages/52/3b/ce7a01026a7cf46e5452afa86f97a5e88ca97f562cafa76570178ab56d8d/pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5", size = 2554661, upload-time = "2024-07-01T09:48:20.293Z" }, ] [[package]] @@ -2137,16 +1933,17 @@ wheels = [ [[package]] name = "protobuf" -version = "4.25.2" +version = "6.33.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/db/a5/05ea470f4e793c9408bc975ce1c6957447e3134ce7f7a58c13be8b2c216f/protobuf-4.25.2.tar.gz", hash = "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e", size = 380282, upload-time = "2024-01-10T19:37:42.958Z" } +sdist = { url = "https://files.pythonhosted.org/packages/34/44/e49ecff446afeec9d1a66d6bbf9adc21e3c7cea7803a920ca3773379d4f6/protobuf-6.33.2.tar.gz", hash = "sha256:56dc370c91fbb8ac85bc13582c9e373569668a290aa2e66a590c2a0d35ddb9e4", size = 444296, upload-time = "2025-12-06T00:17:53.311Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/36/2f/01f63896ddf22cbb0173ab51f54fde70b0208ca6c2f5e8416950977930e1/protobuf-4.25.2-cp310-abi3-win32.whl", hash = "sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6", size = 392408, upload-time = "2024-01-10T19:37:23.466Z" }, - { url = "https://files.pythonhosted.org/packages/c1/00/c3ae19cabb36cfabc94ff0b102aac21b471c9f91a1357f8aafffb9efe8e0/protobuf-4.25.2-cp310-abi3-win_amd64.whl", hash = "sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9", size = 413397, upload-time = "2024-01-10T19:37:26.321Z" }, - { url = "https://files.pythonhosted.org/packages/b3/81/0017aefacf23273d4efd1154ef958a27eed9c177c4cc09d2d4ba398fb47f/protobuf-4.25.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d", size = 394159, upload-time = "2024-01-10T19:37:28.932Z" }, - { url = "https://files.pythonhosted.org/packages/23/17/405ba44f60a693dfe96c7a18e843707cffa0fcfad80bd8fc4f227f499ea5/protobuf-4.25.2-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62", size = 293698, upload-time = "2024-01-10T19:37:30.666Z" }, - { url = "https://files.pythonhosted.org/packages/81/9e/63501b8d5b4e40c7260049836bd15ec3270c936e83bc57b85e4603cc212c/protobuf-4.25.2-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020", size = 294609, upload-time = "2024-01-10T19:37:32.777Z" }, - { url = "https://files.pythonhosted.org/packages/ff/52/5d23df1fe3b368133ec3e2436fb3dd4ccedf44c8d5ac7f4a88087c75180b/protobuf-4.25.2-py3-none-any.whl", hash = "sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830", size = 156463, upload-time = "2024-01-10T19:37:41.24Z" }, + { url = "https://files.pythonhosted.org/packages/bc/91/1e3a34881a88697a7354ffd177e8746e97a722e5e8db101544b47e84afb1/protobuf-6.33.2-cp310-abi3-win32.whl", hash = "sha256:87eb388bd2d0f78febd8f4c8779c79247b26a5befad525008e49a6955787ff3d", size = 425603, upload-time = "2025-12-06T00:17:41.114Z" }, + { url = "https://files.pythonhosted.org/packages/64/20/4d50191997e917ae13ad0a235c8b42d8c1ab9c3e6fd455ca16d416944355/protobuf-6.33.2-cp310-abi3-win_amd64.whl", hash = "sha256:fc2a0e8b05b180e5fc0dd1559fe8ebdae21a27e81ac77728fb6c42b12c7419b4", size = 436930, upload-time = "2025-12-06T00:17:43.278Z" }, + { url = "https://files.pythonhosted.org/packages/b2/ca/7e485da88ba45c920fb3f50ae78de29ab925d9e54ef0de678306abfbb497/protobuf-6.33.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d9b19771ca75935b3a4422957bc518b0cecb978b31d1dd12037b088f6bcc0e43", size = 427621, upload-time = "2025-12-06T00:17:44.445Z" }, + { url = "https://files.pythonhosted.org/packages/7d/4f/f743761e41d3b2b2566748eb76bbff2b43e14d5fcab694f494a16458b05f/protobuf-6.33.2-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:b5d3b5625192214066d99b2b605f5783483575656784de223f00a8d00754fc0e", size = 324460, upload-time = "2025-12-06T00:17:45.678Z" }, + { url = "https://files.pythonhosted.org/packages/b1/fa/26468d00a92824020f6f2090d827078c09c9c587e34cbfd2d0c7911221f8/protobuf-6.33.2-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:8cd7640aee0b7828b6d03ae518b5b4806fdfc1afe8de82f79c3454f8aef29872", size = 339168, upload-time = "2025-12-06T00:17:46.813Z" }, + { url = "https://files.pythonhosted.org/packages/56/13/333b8f421738f149d4fe5e49553bc2a2ab75235486259f689b4b91f96cec/protobuf-6.33.2-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:1f8017c48c07ec5859106533b682260ba3d7c5567b1ca1f24297ce03384d1b4f", size = 323270, upload-time = "2025-12-06T00:17:48.253Z" }, + { url = "https://files.pythonhosted.org/packages/0e/15/4f02896cc3df04fc465010a4c6a0cd89810f54617a32a70ef531ed75d61c/protobuf-6.33.2-py3-none-any.whl", hash = "sha256:7636aad9bb01768870266de5dc009de2d1b936771b38a793f73cbbf279c91c5c", size = 170501, upload-time = "2025-12-06T00:17:52.211Z" }, ] [[package]] @@ -2169,12 +1966,6 @@ version = "1.3.0.post6" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/4a/b2/550fe500e49c464d73fabcb8cb04d47e4885d6ca4cfc1f5b0a125a95b19a/pyclipper-1.3.0.post6.tar.gz", hash = "sha256:42bff0102fa7a7f2abdd795a2594654d62b786d0c6cd67b72d469114fdeb608c", size = 165909, upload-time = "2024-10-18T12:23:09.069Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/34/0dca299fe41e9a92e78735502fed5238a4ac734755e624488df9b2eeec46/pyclipper-1.3.0.post6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fa0f5e78cfa8262277bb3d0225537b3c2a90ef68fd90a229d5d24cf49955dcf4", size = 269504, upload-time = "2024-10-18T12:21:55.735Z" }, - { url = "https://files.pythonhosted.org/packages/8a/5b/81528b08134b3c2abdfae821e1eff975c0703802d41974b02dfb2e101c55/pyclipper-1.3.0.post6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a01f182d8938c1dc515e8508ed2442f7eebd2c25c7d5cb29281f583c1a8008a4", size = 142599, upload-time = "2024-10-18T12:21:57.401Z" }, - { url = "https://files.pythonhosted.org/packages/84/a4/3e304f6c0d000382cd54d4a1e5f0d8fc28e1ae97413a2ec1016a7b840319/pyclipper-1.3.0.post6-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:640f20975727994d4abacd07396f564e9e5665ba5cb66ceb36b300c281f84fa4", size = 912209, upload-time = "2024-10-18T12:21:59.408Z" }, - { url = "https://files.pythonhosted.org/packages/f5/6a/28ec55cc3f972368b211fca017e081cf5a71009d1b8ec3559767cda5b289/pyclipper-1.3.0.post6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a63002f6bb0f1efa87c0b81634cbb571066f237067e23707dabf746306c92ba5", size = 929511, upload-time = "2024-10-18T12:22:01.454Z" }, - { url = "https://files.pythonhosted.org/packages/c4/56/c326f3454c5f30a31f58a5c3154d891fce58ad73ccbf1d3f4aacfcbd344d/pyclipper-1.3.0.post6-cp310-cp310-win32.whl", hash = "sha256:106b8622cd9fb07d80cbf9b1d752334c55839203bae962376a8c59087788af26", size = 100126, upload-time = "2024-10-18T12:22:02.83Z" }, - { url = "https://files.pythonhosted.org/packages/f8/e6/f8239af6346848b20a3448c554782fe59298ab06c1d040490242dc7e3c26/pyclipper-1.3.0.post6-cp310-cp310-win_amd64.whl", hash = "sha256:9699e98862dadefd0bea2360c31fa61ca553c660cbf6fb44993acde1b959f58f", size = 110470, upload-time = "2024-10-18T12:22:04.411Z" }, { url = "https://files.pythonhosted.org/packages/50/a9/66ca5f252dcac93ca076698591b838ba17f9729591edf4b74fef7fbe1414/pyclipper-1.3.0.post6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c4247e7c44b34c87acbf38f99d48fb1acaf5da4a2cf4dcd601a9b24d431be4ef", size = 270930, upload-time = "2024-10-18T12:22:06.066Z" }, { url = "https://files.pythonhosted.org/packages/59/fe/2ab5818b3504e179086e54a37ecc245525d069267b8c31b18ec3d0830cbf/pyclipper-1.3.0.post6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:851b3e58106c62a5534a1201295fe20c21714dee2eda68081b37ddb0367e6caa", size = 143411, upload-time = "2024-10-18T12:22:07.598Z" }, { url = "https://files.pythonhosted.org/packages/09/f7/b58794f643e033a6d14da7c70f517315c3072f3c5fccdf4232fa8c8090c1/pyclipper-1.3.0.post6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16cc1705a915896d2aff52131c427df02265631279eac849ebda766432714cc0", size = 951754, upload-time = "2024-10-18T12:22:08.966Z" }, @@ -2206,7 +1997,7 @@ wheels = [ [[package]] name = "pydantic" -version = "2.12.5" +version = "2.11.7" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, @@ -2214,141 +2005,88 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49", size = 821591, upload-time = "2025-11-26T15:11:46.471Z" } +sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload-time = "2025-06-14T08:33:17.137Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580, upload-time = "2025-11-26T15:11:44.605Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782, upload-time = "2025-06-14T08:33:14.905Z" }, ] [[package]] name = "pydantic-core" -version = "2.41.5" +version = "2.33.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952, upload-time = "2025-11-04T13:43:49.098Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/90/32c9941e728d564b411d574d8ee0cf09b12ec978cb22b294995bae5549a5/pydantic_core-2.41.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:77b63866ca88d804225eaa4af3e664c5faf3568cea95360d21f4725ab6e07146", size = 2107298, upload-time = "2025-11-04T13:39:04.116Z" }, - { url = "https://files.pythonhosted.org/packages/fb/a8/61c96a77fe28993d9a6fb0f4127e05430a267b235a124545d79fea46dd65/pydantic_core-2.41.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dfa8a0c812ac681395907e71e1274819dec685fec28273a28905df579ef137e2", size = 1901475, upload-time = "2025-11-04T13:39:06.055Z" }, - { url = "https://files.pythonhosted.org/packages/5d/b6/338abf60225acc18cdc08b4faef592d0310923d19a87fba1faf05af5346e/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5921a4d3ca3aee735d9fd163808f5e8dd6c6972101e4adbda9a4667908849b97", size = 1918815, upload-time = "2025-11-04T13:39:10.41Z" }, - { url = "https://files.pythonhosted.org/packages/d1/1c/2ed0433e682983d8e8cba9c8d8ef274d4791ec6a6f24c58935b90e780e0a/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e25c479382d26a2a41b7ebea1043564a937db462816ea07afa8a44c0866d52f9", size = 2065567, upload-time = "2025-11-04T13:39:12.244Z" }, - { url = "https://files.pythonhosted.org/packages/b3/24/cf84974ee7d6eae06b9e63289b7b8f6549d416b5c199ca2d7ce13bbcf619/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f547144f2966e1e16ae626d8ce72b4cfa0caedc7fa28052001c94fb2fcaa1c52", size = 2230442, upload-time = "2025-11-04T13:39:13.962Z" }, - { url = "https://files.pythonhosted.org/packages/fd/21/4e287865504b3edc0136c89c9c09431be326168b1eb7841911cbc877a995/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f52298fbd394f9ed112d56f3d11aabd0d5bd27beb3084cc3d8ad069483b8941", size = 2350956, upload-time = "2025-11-04T13:39:15.889Z" }, - { url = "https://files.pythonhosted.org/packages/a8/76/7727ef2ffa4b62fcab916686a68a0426b9b790139720e1934e8ba797e238/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:100baa204bb412b74fe285fb0f3a385256dad1d1879f0a5cb1499ed2e83d132a", size = 2068253, upload-time = "2025-11-04T13:39:17.403Z" }, - { url = "https://files.pythonhosted.org/packages/d5/8c/a4abfc79604bcb4c748e18975c44f94f756f08fb04218d5cb87eb0d3a63e/pydantic_core-2.41.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:05a2c8852530ad2812cb7914dc61a1125dc4e06252ee98e5638a12da6cc6fb6c", size = 2177050, upload-time = "2025-11-04T13:39:19.351Z" }, - { url = "https://files.pythonhosted.org/packages/67/b1/de2e9a9a79b480f9cb0b6e8b6ba4c50b18d4e89852426364c66aa82bb7b3/pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:29452c56df2ed968d18d7e21f4ab0ac55e71dc59524872f6fc57dcf4a3249ed2", size = 2147178, upload-time = "2025-11-04T13:39:21Z" }, - { url = "https://files.pythonhosted.org/packages/16/c1/dfb33f837a47b20417500efaa0378adc6635b3c79e8369ff7a03c494b4ac/pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:d5160812ea7a8a2ffbe233d8da666880cad0cbaf5d4de74ae15c313213d62556", size = 2341833, upload-time = "2025-11-04T13:39:22.606Z" }, - { url = "https://files.pythonhosted.org/packages/47/36/00f398642a0f4b815a9a558c4f1dca1b4020a7d49562807d7bc9ff279a6c/pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:df3959765b553b9440adfd3c795617c352154e497a4eaf3752555cfb5da8fc49", size = 2321156, upload-time = "2025-11-04T13:39:25.843Z" }, - { url = "https://files.pythonhosted.org/packages/7e/70/cad3acd89fde2010807354d978725ae111ddf6d0ea46d1ea1775b5c1bd0c/pydantic_core-2.41.5-cp310-cp310-win32.whl", hash = "sha256:1f8d33a7f4d5a7889e60dc39856d76d09333d8a6ed0f5f1190635cbec70ec4ba", size = 1989378, upload-time = "2025-11-04T13:39:27.92Z" }, - { url = "https://files.pythonhosted.org/packages/76/92/d338652464c6c367e5608e4488201702cd1cbb0f33f7b6a85a60fe5f3720/pydantic_core-2.41.5-cp310-cp310-win_amd64.whl", hash = "sha256:62de39db01b8d593e45871af2af9e497295db8d73b085f6bfd0b18c83c70a8f9", size = 2013622, upload-time = "2025-11-04T13:39:29.848Z" }, - { url = "https://files.pythonhosted.org/packages/e8/72/74a989dd9f2084b3d9530b0915fdda64ac48831c30dbf7c72a41a5232db8/pydantic_core-2.41.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a3a52f6156e73e7ccb0f8cced536adccb7042be67cb45f9562e12b319c119da6", size = 2105873, upload-time = "2025-11-04T13:39:31.373Z" }, - { url = "https://files.pythonhosted.org/packages/12/44/37e403fd9455708b3b942949e1d7febc02167662bf1a7da5b78ee1ea2842/pydantic_core-2.41.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7f3bf998340c6d4b0c9a2f02d6a400e51f123b59565d74dc60d252ce888c260b", size = 1899826, upload-time = "2025-11-04T13:39:32.897Z" }, - { url = "https://files.pythonhosted.org/packages/33/7f/1d5cab3ccf44c1935a359d51a8a2a9e1a654b744b5e7f80d41b88d501eec/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:378bec5c66998815d224c9ca994f1e14c0c21cb95d2f52b6021cc0b2a58f2a5a", size = 1917869, upload-time = "2025-11-04T13:39:34.469Z" }, - { url = "https://files.pythonhosted.org/packages/6e/6a/30d94a9674a7fe4f4744052ed6c5e083424510be1e93da5bc47569d11810/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7b576130c69225432866fe2f4a469a85a54ade141d96fd396dffcf607b558f8", size = 2063890, upload-time = "2025-11-04T13:39:36.053Z" }, - { url = "https://files.pythonhosted.org/packages/50/be/76e5d46203fcb2750e542f32e6c371ffa9b8ad17364cf94bb0818dbfb50c/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6cb58b9c66f7e4179a2d5e0f849c48eff5c1fca560994d6eb6543abf955a149e", size = 2229740, upload-time = "2025-11-04T13:39:37.753Z" }, - { url = "https://files.pythonhosted.org/packages/d3/ee/fed784df0144793489f87db310a6bbf8118d7b630ed07aa180d6067e653a/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88942d3a3dff3afc8288c21e565e476fc278902ae4d6d134f1eeda118cc830b1", size = 2350021, upload-time = "2025-11-04T13:39:40.94Z" }, - { url = "https://files.pythonhosted.org/packages/c8/be/8fed28dd0a180dca19e72c233cbf58efa36df055e5b9d90d64fd1740b828/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f31d95a179f8d64d90f6831d71fa93290893a33148d890ba15de25642c5d075b", size = 2066378, upload-time = "2025-11-04T13:39:42.523Z" }, - { url = "https://files.pythonhosted.org/packages/b0/3b/698cf8ae1d536a010e05121b4958b1257f0b5522085e335360e53a6b1c8b/pydantic_core-2.41.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1df3d34aced70add6f867a8cf413e299177e0c22660cc767218373d0779487b", size = 2175761, upload-time = "2025-11-04T13:39:44.553Z" }, - { url = "https://files.pythonhosted.org/packages/b8/ba/15d537423939553116dea94ce02f9c31be0fa9d0b806d427e0308ec17145/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4009935984bd36bd2c774e13f9a09563ce8de4abaa7226f5108262fa3e637284", size = 2146303, upload-time = "2025-11-04T13:39:46.238Z" }, - { url = "https://files.pythonhosted.org/packages/58/7f/0de669bf37d206723795f9c90c82966726a2ab06c336deba4735b55af431/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:34a64bc3441dc1213096a20fe27e8e128bd3ff89921706e83c0b1ac971276594", size = 2340355, upload-time = "2025-11-04T13:39:48.002Z" }, - { url = "https://files.pythonhosted.org/packages/e5/de/e7482c435b83d7e3c3ee5ee4451f6e8973cff0eb6007d2872ce6383f6398/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c9e19dd6e28fdcaa5a1de679aec4141f691023916427ef9bae8584f9c2fb3b0e", size = 2319875, upload-time = "2025-11-04T13:39:49.705Z" }, - { url = "https://files.pythonhosted.org/packages/fe/e6/8c9e81bb6dd7560e33b9053351c29f30c8194b72f2d6932888581f503482/pydantic_core-2.41.5-cp311-cp311-win32.whl", hash = "sha256:2c010c6ded393148374c0f6f0bf89d206bf3217f201faa0635dcd56bd1520f6b", size = 1987549, upload-time = "2025-11-04T13:39:51.842Z" }, - { url = "https://files.pythonhosted.org/packages/11/66/f14d1d978ea94d1bc21fc98fcf570f9542fe55bfcc40269d4e1a21c19bf7/pydantic_core-2.41.5-cp311-cp311-win_amd64.whl", hash = "sha256:76ee27c6e9c7f16f47db7a94157112a2f3a00e958bc626e2f4ee8bec5c328fbe", size = 2011305, upload-time = "2025-11-04T13:39:53.485Z" }, - { url = "https://files.pythonhosted.org/packages/56/d8/0e271434e8efd03186c5386671328154ee349ff0354d83c74f5caaf096ed/pydantic_core-2.41.5-cp311-cp311-win_arm64.whl", hash = "sha256:4bc36bbc0b7584de96561184ad7f012478987882ebf9f9c389b23f432ea3d90f", size = 1972902, upload-time = "2025-11-04T13:39:56.488Z" }, - { url = "https://files.pythonhosted.org/packages/5f/5d/5f6c63eebb5afee93bcaae4ce9a898f3373ca23df3ccaef086d0233a35a7/pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7", size = 2110990, upload-time = "2025-11-04T13:39:58.079Z" }, - { url = "https://files.pythonhosted.org/packages/aa/32/9c2e8ccb57c01111e0fd091f236c7b371c1bccea0fa85247ac55b1e2b6b6/pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0", size = 1896003, upload-time = "2025-11-04T13:39:59.956Z" }, - { url = "https://files.pythonhosted.org/packages/68/b8/a01b53cb0e59139fbc9e4fda3e9724ede8de279097179be4ff31f1abb65a/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69", size = 1919200, upload-time = "2025-11-04T13:40:02.241Z" }, - { url = "https://files.pythonhosted.org/packages/38/de/8c36b5198a29bdaade07b5985e80a233a5ac27137846f3bc2d3b40a47360/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75", size = 2052578, upload-time = "2025-11-04T13:40:04.401Z" }, - { url = "https://files.pythonhosted.org/packages/00/b5/0e8e4b5b081eac6cb3dbb7e60a65907549a1ce035a724368c330112adfdd/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05", size = 2208504, upload-time = "2025-11-04T13:40:06.072Z" }, - { url = "https://files.pythonhosted.org/packages/77/56/87a61aad59c7c5b9dc8caad5a41a5545cba3810c3e828708b3d7404f6cef/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc", size = 2335816, upload-time = "2025-11-04T13:40:07.835Z" }, - { url = "https://files.pythonhosted.org/packages/0d/76/941cc9f73529988688a665a5c0ecff1112b3d95ab48f81db5f7606f522d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c", size = 2075366, upload-time = "2025-11-04T13:40:09.804Z" }, - { url = "https://files.pythonhosted.org/packages/d3/43/ebef01f69baa07a482844faaa0a591bad1ef129253ffd0cdaa9d8a7f72d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5", size = 2171698, upload-time = "2025-11-04T13:40:12.004Z" }, - { url = "https://files.pythonhosted.org/packages/b1/87/41f3202e4193e3bacfc2c065fab7706ebe81af46a83d3e27605029c1f5a6/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c", size = 2132603, upload-time = "2025-11-04T13:40:13.868Z" }, - { url = "https://files.pythonhosted.org/packages/49/7d/4c00df99cb12070b6bccdef4a195255e6020a550d572768d92cc54dba91a/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294", size = 2329591, upload-time = "2025-11-04T13:40:15.672Z" }, - { url = "https://files.pythonhosted.org/packages/cc/6a/ebf4b1d65d458f3cda6a7335d141305dfa19bdc61140a884d165a8a1bbc7/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1", size = 2319068, upload-time = "2025-11-04T13:40:17.532Z" }, - { url = "https://files.pythonhosted.org/packages/49/3b/774f2b5cd4192d5ab75870ce4381fd89cf218af999515baf07e7206753f0/pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d", size = 1985908, upload-time = "2025-11-04T13:40:19.309Z" }, - { url = "https://files.pythonhosted.org/packages/86/45/00173a033c801cacf67c190fef088789394feaf88a98a7035b0e40d53dc9/pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815", size = 2020145, upload-time = "2025-11-04T13:40:21.548Z" }, - { url = "https://files.pythonhosted.org/packages/f9/22/91fbc821fa6d261b376a3f73809f907cec5ca6025642c463d3488aad22fb/pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3", size = 1976179, upload-time = "2025-11-04T13:40:23.393Z" }, - { url = "https://files.pythonhosted.org/packages/87/06/8806241ff1f70d9939f9af039c6c35f2360cf16e93c2ca76f184e76b1564/pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9", size = 2120403, upload-time = "2025-11-04T13:40:25.248Z" }, - { url = "https://files.pythonhosted.org/packages/94/02/abfa0e0bda67faa65fef1c84971c7e45928e108fe24333c81f3bfe35d5f5/pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34", size = 1896206, upload-time = "2025-11-04T13:40:27.099Z" }, - { url = "https://files.pythonhosted.org/packages/15/df/a4c740c0943e93e6500f9eb23f4ca7ec9bf71b19e608ae5b579678c8d02f/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0", size = 1919307, upload-time = "2025-11-04T13:40:29.806Z" }, - { url = "https://files.pythonhosted.org/packages/9a/e3/6324802931ae1d123528988e0e86587c2072ac2e5394b4bc2bc34b61ff6e/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33", size = 2063258, upload-time = "2025-11-04T13:40:33.544Z" }, - { url = "https://files.pythonhosted.org/packages/c9/d4/2230d7151d4957dd79c3044ea26346c148c98fbf0ee6ebd41056f2d62ab5/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e", size = 2214917, upload-time = "2025-11-04T13:40:35.479Z" }, - { url = "https://files.pythonhosted.org/packages/e6/9f/eaac5df17a3672fef0081b6c1bb0b82b33ee89aa5cec0d7b05f52fd4a1fa/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2", size = 2332186, upload-time = "2025-11-04T13:40:37.436Z" }, - { url = "https://files.pythonhosted.org/packages/cf/4e/35a80cae583a37cf15604b44240e45c05e04e86f9cfd766623149297e971/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586", size = 2073164, upload-time = "2025-11-04T13:40:40.289Z" }, - { url = "https://files.pythonhosted.org/packages/bf/e3/f6e262673c6140dd3305d144d032f7bd5f7497d3871c1428521f19f9efa2/pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d", size = 2179146, upload-time = "2025-11-04T13:40:42.809Z" }, - { url = "https://files.pythonhosted.org/packages/75/c7/20bd7fc05f0c6ea2056a4565c6f36f8968c0924f19b7d97bbfea55780e73/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740", size = 2137788, upload-time = "2025-11-04T13:40:44.752Z" }, - { url = "https://files.pythonhosted.org/packages/3a/8d/34318ef985c45196e004bc46c6eab2eda437e744c124ef0dbe1ff2c9d06b/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e", size = 2340133, upload-time = "2025-11-04T13:40:46.66Z" }, - { url = "https://files.pythonhosted.org/packages/9c/59/013626bf8c78a5a5d9350d12e7697d3d4de951a75565496abd40ccd46bee/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858", size = 2324852, upload-time = "2025-11-04T13:40:48.575Z" }, - { url = "https://files.pythonhosted.org/packages/1a/d9/c248c103856f807ef70c18a4f986693a46a8ffe1602e5d361485da502d20/pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36", size = 1994679, upload-time = "2025-11-04T13:40:50.619Z" }, - { url = "https://files.pythonhosted.org/packages/9e/8b/341991b158ddab181cff136acd2552c9f35bd30380422a639c0671e99a91/pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11", size = 2019766, upload-time = "2025-11-04T13:40:52.631Z" }, - { url = "https://files.pythonhosted.org/packages/73/7d/f2f9db34af103bea3e09735bb40b021788a5e834c81eedb541991badf8f5/pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd", size = 1981005, upload-time = "2025-11-04T13:40:54.734Z" }, - { url = "https://files.pythonhosted.org/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a", size = 2119622, upload-time = "2025-11-04T13:40:56.68Z" }, - { url = "https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14", size = 1891725, upload-time = "2025-11-04T13:40:58.807Z" }, - { url = "https://files.pythonhosted.org/packages/23/04/e89c29e267b8060b40dca97bfc64a19b2a3cf99018167ea1677d96368273/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1", size = 1915040, upload-time = "2025-11-04T13:41:00.853Z" }, - { url = "https://files.pythonhosted.org/packages/84/a3/15a82ac7bd97992a82257f777b3583d3e84bdb06ba6858f745daa2ec8a85/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66", size = 2063691, upload-time = "2025-11-04T13:41:03.504Z" }, - { url = "https://files.pythonhosted.org/packages/74/9b/0046701313c6ef08c0c1cf0e028c67c770a4e1275ca73131563c5f2a310a/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869", size = 2213897, upload-time = "2025-11-04T13:41:05.804Z" }, - { url = "https://files.pythonhosted.org/packages/8a/cd/6bac76ecd1b27e75a95ca3a9a559c643b3afcd2dd62086d4b7a32a18b169/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2", size = 2333302, upload-time = "2025-11-04T13:41:07.809Z" }, - { url = "https://files.pythonhosted.org/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375", size = 2064877, upload-time = "2025-11-04T13:41:09.827Z" }, - { url = "https://files.pythonhosted.org/packages/18/66/e9db17a9a763d72f03de903883c057b2592c09509ccfe468187f2a2eef29/pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553", size = 2180680, upload-time = "2025-11-04T13:41:12.379Z" }, - { url = "https://files.pythonhosted.org/packages/d3/9e/3ce66cebb929f3ced22be85d4c2399b8e85b622db77dad36b73c5387f8f8/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90", size = 2138960, upload-time = "2025-11-04T13:41:14.627Z" }, - { url = "https://files.pythonhosted.org/packages/a6/62/205a998f4327d2079326b01abee48e502ea739d174f0a89295c481a2272e/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07", size = 2339102, upload-time = "2025-11-04T13:41:16.868Z" }, - { url = "https://files.pythonhosted.org/packages/3c/0d/f05e79471e889d74d3d88f5bd20d0ed189ad94c2423d81ff8d0000aab4ff/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb", size = 2326039, upload-time = "2025-11-04T13:41:18.934Z" }, - { url = "https://files.pythonhosted.org/packages/ec/e1/e08a6208bb100da7e0c4b288eed624a703f4d129bde2da475721a80cab32/pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23", size = 1995126, upload-time = "2025-11-04T13:41:21.418Z" }, - { url = "https://files.pythonhosted.org/packages/48/5d/56ba7b24e9557f99c9237e29f5c09913c81eeb2f3217e40e922353668092/pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf", size = 2015489, upload-time = "2025-11-04T13:41:24.076Z" }, - { url = "https://files.pythonhosted.org/packages/4e/bb/f7a190991ec9e3e0ba22e4993d8755bbc4a32925c0b5b42775c03e8148f9/pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0", size = 1977288, upload-time = "2025-11-04T13:41:26.33Z" }, - { url = "https://files.pythonhosted.org/packages/92/ed/77542d0c51538e32e15afe7899d79efce4b81eee631d99850edc2f5e9349/pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a", size = 2120255, upload-time = "2025-11-04T13:41:28.569Z" }, - { url = "https://files.pythonhosted.org/packages/bb/3d/6913dde84d5be21e284439676168b28d8bbba5600d838b9dca99de0fad71/pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3", size = 1863760, upload-time = "2025-11-04T13:41:31.055Z" }, - { url = "https://files.pythonhosted.org/packages/5a/f0/e5e6b99d4191da102f2b0eb9687aaa7f5bea5d9964071a84effc3e40f997/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c", size = 1878092, upload-time = "2025-11-04T13:41:33.21Z" }, - { url = "https://files.pythonhosted.org/packages/71/48/36fb760642d568925953bcc8116455513d6e34c4beaa37544118c36aba6d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612", size = 2053385, upload-time = "2025-11-04T13:41:35.508Z" }, - { url = "https://files.pythonhosted.org/packages/20/25/92dc684dd8eb75a234bc1c764b4210cf2646479d54b47bf46061657292a8/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d", size = 2218832, upload-time = "2025-11-04T13:41:37.732Z" }, - { url = "https://files.pythonhosted.org/packages/e2/09/f53e0b05023d3e30357d82eb35835d0f6340ca344720a4599cd663dca599/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9", size = 2327585, upload-time = "2025-11-04T13:41:40Z" }, - { url = "https://files.pythonhosted.org/packages/aa/4e/2ae1aa85d6af35a39b236b1b1641de73f5a6ac4d5a7509f77b814885760c/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660", size = 2041078, upload-time = "2025-11-04T13:41:42.323Z" }, - { url = "https://files.pythonhosted.org/packages/cd/13/2e215f17f0ef326fc72afe94776edb77525142c693767fc347ed6288728d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9", size = 2173914, upload-time = "2025-11-04T13:41:45.221Z" }, - { url = "https://files.pythonhosted.org/packages/02/7a/f999a6dcbcd0e5660bc348a3991c8915ce6599f4f2c6ac22f01d7a10816c/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3", size = 2129560, upload-time = "2025-11-04T13:41:47.474Z" }, - { url = "https://files.pythonhosted.org/packages/3a/b1/6c990ac65e3b4c079a4fb9f5b05f5b013afa0f4ed6780a3dd236d2cbdc64/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf", size = 2329244, upload-time = "2025-11-04T13:41:49.992Z" }, - { url = "https://files.pythonhosted.org/packages/d9/02/3c562f3a51afd4d88fff8dffb1771b30cfdfd79befd9883ee094f5b6c0d8/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470", size = 2331955, upload-time = "2025-11-04T13:41:54.079Z" }, - { url = "https://files.pythonhosted.org/packages/5c/96/5fb7d8c3c17bc8c62fdb031c47d77a1af698f1d7a406b0f79aaa1338f9ad/pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa", size = 1988906, upload-time = "2025-11-04T13:41:56.606Z" }, - { url = "https://files.pythonhosted.org/packages/22/ed/182129d83032702912c2e2d8bbe33c036f342cc735737064668585dac28f/pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c", size = 1981607, upload-time = "2025-11-04T13:41:58.889Z" }, - { url = "https://files.pythonhosted.org/packages/9f/ed/068e41660b832bb0b1aa5b58011dea2a3fe0ba7861ff38c4d4904c1c1a99/pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008", size = 1974769, upload-time = "2025-11-04T13:42:01.186Z" }, - { url = "https://files.pythonhosted.org/packages/11/72/90fda5ee3b97e51c494938a4a44c3a35a9c96c19bba12372fb9c634d6f57/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:b96d5f26b05d03cc60f11a7761a5ded1741da411e7fe0909e27a5e6a0cb7b034", size = 2115441, upload-time = "2025-11-04T13:42:39.557Z" }, - { url = "https://files.pythonhosted.org/packages/1f/53/8942f884fa33f50794f119012dc6a1a02ac43a56407adaac20463df8e98f/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:634e8609e89ceecea15e2d61bc9ac3718caaaa71963717bf3c8f38bfde64242c", size = 1930291, upload-time = "2025-11-04T13:42:42.169Z" }, - { url = "https://files.pythonhosted.org/packages/79/c8/ecb9ed9cd942bce09fc888ee960b52654fbdbede4ba6c2d6e0d3b1d8b49c/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e8740d7503eb008aa2df04d3b9735f845d43ae845e6dcd2be0b55a2da43cd2", size = 1948632, upload-time = "2025-11-04T13:42:44.564Z" }, - { url = "https://files.pythonhosted.org/packages/2e/1b/687711069de7efa6af934e74f601e2a4307365e8fdc404703afc453eab26/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f15489ba13d61f670dcc96772e733aad1a6f9c429cc27574c6cdaed82d0146ad", size = 2138905, upload-time = "2025-11-04T13:42:47.156Z" }, - { url = "https://files.pythonhosted.org/packages/09/32/59b0c7e63e277fa7911c2fc70ccfb45ce4b98991e7ef37110663437005af/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:7da7087d756b19037bc2c06edc6c170eeef3c3bafcb8f532ff17d64dc427adfd", size = 2110495, upload-time = "2025-11-04T13:42:49.689Z" }, - { url = "https://files.pythonhosted.org/packages/aa/81/05e400037eaf55ad400bcd318c05bb345b57e708887f07ddb2d20e3f0e98/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:aabf5777b5c8ca26f7824cb4a120a740c9588ed58df9b2d196ce92fba42ff8dc", size = 1915388, upload-time = "2025-11-04T13:42:52.215Z" }, - { url = "https://files.pythonhosted.org/packages/6e/0d/e3549b2399f71d56476b77dbf3cf8937cec5cd70536bdc0e374a421d0599/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c007fe8a43d43b3969e8469004e9845944f1a80e6acd47c150856bb87f230c56", size = 1942879, upload-time = "2025-11-04T13:42:56.483Z" }, - { url = "https://files.pythonhosted.org/packages/f7/07/34573da085946b6a313d7c42f82f16e8920bfd730665de2d11c0c37a74b5/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76d0819de158cd855d1cbb8fcafdf6f5cf1eb8e470abe056d5d161106e38062b", size = 2139017, upload-time = "2025-11-04T13:42:59.471Z" }, - { url = "https://files.pythonhosted.org/packages/e6/b0/1a2aa41e3b5a4ba11420aba2d091b2d17959c8d1519ece3627c371951e73/pydantic_core-2.41.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b5819cd790dbf0c5eb9f82c73c16b39a65dd6dd4d1439dcdea7816ec9adddab8", size = 2103351, upload-time = "2025-11-04T13:43:02.058Z" }, - { url = "https://files.pythonhosted.org/packages/a4/ee/31b1f0020baaf6d091c87900ae05c6aeae101fa4e188e1613c80e4f1ea31/pydantic_core-2.41.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5a4e67afbc95fa5c34cf27d9089bca7fcab4e51e57278d710320a70b956d1b9a", size = 1925363, upload-time = "2025-11-04T13:43:05.159Z" }, - { url = "https://files.pythonhosted.org/packages/e1/89/ab8e86208467e467a80deaca4e434adac37b10a9d134cd2f99b28a01e483/pydantic_core-2.41.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ece5c59f0ce7d001e017643d8d24da587ea1f74f6993467d85ae8a5ef9d4f42b", size = 2135615, upload-time = "2025-11-04T13:43:08.116Z" }, - { url = "https://files.pythonhosted.org/packages/99/0a/99a53d06dd0348b2008f2f30884b34719c323f16c3be4e6cc1203b74a91d/pydantic_core-2.41.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:16f80f7abe3351f8ea6858914ddc8c77e02578544a0ebc15b4c2e1a0e813b0b2", size = 2175369, upload-time = "2025-11-04T13:43:12.49Z" }, - { url = "https://files.pythonhosted.org/packages/6d/94/30ca3b73c6d485b9bb0bc66e611cff4a7138ff9736b7e66bcf0852151636/pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:33cb885e759a705b426baada1fe68cbb0a2e68e34c5d0d0289a364cf01709093", size = 2144218, upload-time = "2025-11-04T13:43:15.431Z" }, - { url = "https://files.pythonhosted.org/packages/87/57/31b4f8e12680b739a91f472b5671294236b82586889ef764b5fbc6669238/pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:c8d8b4eb992936023be7dee581270af5c6e0697a8559895f527f5b7105ecd36a", size = 2329951, upload-time = "2025-11-04T13:43:18.062Z" }, - { url = "https://files.pythonhosted.org/packages/7d/73/3c2c8edef77b8f7310e6fb012dbc4b8551386ed575b9eb6fb2506e28a7eb/pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:242a206cd0318f95cd21bdacff3fcc3aab23e79bba5cac3db5a841c9ef9c6963", size = 2318428, upload-time = "2025-11-04T13:43:20.679Z" }, - { url = "https://files.pythonhosted.org/packages/2f/02/8559b1f26ee0d502c74f9cca5c0d2fd97e967e083e006bbbb4e97f3a043a/pydantic_core-2.41.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d3a978c4f57a597908b7e697229d996d77a6d3c94901e9edee593adada95ce1a", size = 2147009, upload-time = "2025-11-04T13:43:23.286Z" }, - { url = "https://files.pythonhosted.org/packages/5f/9b/1b3f0e9f9305839d7e84912f9e8bfbd191ed1b1ef48083609f0dabde978c/pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2379fa7ed44ddecb5bfe4e48577d752db9fc10be00a6b7446e9663ba143de26", size = 2101980, upload-time = "2025-11-04T13:43:25.97Z" }, - { url = "https://files.pythonhosted.org/packages/a4/ed/d71fefcb4263df0da6a85b5d8a7508360f2f2e9b3bf5814be9c8bccdccc1/pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:266fb4cbf5e3cbd0b53669a6d1b039c45e3ce651fd5442eff4d07c2cc8d66808", size = 1923865, upload-time = "2025-11-04T13:43:28.763Z" }, - { url = "https://files.pythonhosted.org/packages/ce/3a/626b38db460d675f873e4444b4bb030453bbe7b4ba55df821d026a0493c4/pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58133647260ea01e4d0500089a8c4f07bd7aa6ce109682b1426394988d8aaacc", size = 2134256, upload-time = "2025-11-04T13:43:31.71Z" }, - { url = "https://files.pythonhosted.org/packages/83/d9/8412d7f06f616bbc053d30cb4e5f76786af3221462ad5eee1f202021eb4e/pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:287dad91cfb551c363dc62899a80e9e14da1f0e2b6ebde82c806612ca2a13ef1", size = 2174762, upload-time = "2025-11-04T13:43:34.744Z" }, - { url = "https://files.pythonhosted.org/packages/55/4c/162d906b8e3ba3a99354e20faa1b49a85206c47de97a639510a0e673f5da/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:03b77d184b9eb40240ae9fd676ca364ce1085f203e1b1256f8ab9984dca80a84", size = 2143141, upload-time = "2025-11-04T13:43:37.701Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f2/f11dd73284122713f5f89fc940f370d035fa8e1e078d446b3313955157fe/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:a668ce24de96165bb239160b3d854943128f4334822900534f2fe947930e5770", size = 2330317, upload-time = "2025-11-04T13:43:40.406Z" }, - { url = "https://files.pythonhosted.org/packages/88/9d/b06ca6acfe4abb296110fb1273a4d848a0bfb2ff65f3ee92127b3244e16b/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f14f8f046c14563f8eb3f45f499cc658ab8d10072961e07225e507adb700e93f", size = 2316992, upload-time = "2025-11-04T13:43:43.602Z" }, - { url = "https://files.pythonhosted.org/packages/36/c7/cfc8e811f061c841d7990b0201912c3556bfeb99cdcb7ed24adc8d6f8704/pydantic_core-2.41.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:56121965f7a4dc965bff783d70b907ddf3d57f6eba29b6d2e5dabfaf07799c51", size = 2145302, upload-time = "2025-11-04T13:43:46.64Z" }, + { url = "https://files.pythonhosted.org/packages/3f/8d/71db63483d518cbbf290261a1fc2839d17ff89fce7089e08cad07ccfce67/pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", size = 2028584, upload-time = "2025-04-23T18:31:03.106Z" }, + { url = "https://files.pythonhosted.org/packages/24/2f/3cfa7244ae292dd850989f328722d2aef313f74ffc471184dc509e1e4e5a/pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", size = 1855071, upload-time = "2025-04-23T18:31:04.621Z" }, + { url = "https://files.pythonhosted.org/packages/b3/d3/4ae42d33f5e3f50dd467761304be2fa0a9417fbf09735bc2cce003480f2a/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", size = 1897823, upload-time = "2025-04-23T18:31:06.377Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f3/aa5976e8352b7695ff808599794b1fba2a9ae2ee954a3426855935799488/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", size = 1983792, upload-time = "2025-04-23T18:31:07.93Z" }, + { url = "https://files.pythonhosted.org/packages/d5/7a/cda9b5a23c552037717f2b2a5257e9b2bfe45e687386df9591eff7b46d28/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", size = 2136338, upload-time = "2025-04-23T18:31:09.283Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/b8f9ec8dd1417eb9da784e91e1667d58a2a4a7b7b34cf4af765ef663a7e5/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", size = 2730998, upload-time = "2025-04-23T18:31:11.7Z" }, + { url = "https://files.pythonhosted.org/packages/47/bc/cd720e078576bdb8255d5032c5d63ee5c0bf4b7173dd955185a1d658c456/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", size = 2003200, upload-time = "2025-04-23T18:31:13.536Z" }, + { url = "https://files.pythonhosted.org/packages/ca/22/3602b895ee2cd29d11a2b349372446ae9727c32e78a94b3d588a40fdf187/pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", size = 2113890, upload-time = "2025-04-23T18:31:15.011Z" }, + { url = "https://files.pythonhosted.org/packages/ff/e6/e3c5908c03cf00d629eb38393a98fccc38ee0ce8ecce32f69fc7d7b558a7/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d", size = 2073359, upload-time = "2025-04-23T18:31:16.393Z" }, + { url = "https://files.pythonhosted.org/packages/12/e7/6a36a07c59ebefc8777d1ffdaf5ae71b06b21952582e4b07eba88a421c79/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", size = 2245883, upload-time = "2025-04-23T18:31:17.892Z" }, + { url = "https://files.pythonhosted.org/packages/16/3f/59b3187aaa6cc0c1e6616e8045b284de2b6a87b027cce2ffcea073adf1d2/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", size = 2241074, upload-time = "2025-04-23T18:31:19.205Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ed/55532bb88f674d5d8f67ab121a2a13c385df382de2a1677f30ad385f7438/pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", size = 1910538, upload-time = "2025-04-23T18:31:20.541Z" }, + { url = "https://files.pythonhosted.org/packages/fe/1b/25b7cccd4519c0b23c2dd636ad39d381abf113085ce4f7bec2b0dc755eb1/pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", size = 1952909, upload-time = "2025-04-23T18:31:22.371Z" }, + { url = "https://files.pythonhosted.org/packages/49/a9/d809358e49126438055884c4366a1f6227f0f84f635a9014e2deb9b9de54/pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", size = 1897786, upload-time = "2025-04-23T18:31:24.161Z" }, + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, + { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload-time = "2025-04-23T18:31:53.175Z" }, + { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload-time = "2025-04-23T18:31:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload-time = "2025-04-23T18:31:57.393Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload-time = "2025-04-23T18:31:59.065Z" }, + { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload-time = "2025-04-23T18:32:00.78Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload-time = "2025-04-23T18:32:02.418Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload-time = "2025-04-23T18:32:04.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload-time = "2025-04-23T18:32:06.129Z" }, + { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload-time = "2025-04-23T18:32:08.178Z" }, + { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload-time = "2025-04-23T18:32:10.242Z" }, + { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload-time = "2025-04-23T18:32:12.382Z" }, + { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload-time = "2025-04-23T18:32:14.034Z" }, + { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload-time = "2025-04-23T18:32:15.783Z" }, + { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload-time = "2025-04-23T18:32:18.473Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload-time = "2025-04-23T18:32:20.188Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload-time = "2025-04-23T18:32:22.354Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload-time = "2025-04-23T18:32:25.088Z" }, + { url = "https://files.pythonhosted.org/packages/7b/27/d4ae6487d73948d6f20dddcd94be4ea43e74349b56eba82e9bdee2d7494c/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", size = 2025200, upload-time = "2025-04-23T18:33:14.199Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b8/b3cb95375f05d33801024079b9392a5ab45267a63400bf1866e7ce0f0de4/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", size = 1859123, upload-time = "2025-04-23T18:33:16.555Z" }, + { url = "https://files.pythonhosted.org/packages/05/bc/0d0b5adeda59a261cd30a1235a445bf55c7e46ae44aea28f7bd6ed46e091/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", size = 1892852, upload-time = "2025-04-23T18:33:18.513Z" }, + { url = "https://files.pythonhosted.org/packages/3e/11/d37bdebbda2e449cb3f519f6ce950927b56d62f0b84fd9cb9e372a26a3d5/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", size = 2067484, upload-time = "2025-04-23T18:33:20.475Z" }, + { url = "https://files.pythonhosted.org/packages/8c/55/1f95f0a05ce72ecb02a8a8a1c3be0579bbc29b1d5ab68f1378b7bebc5057/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", size = 2108896, upload-time = "2025-04-23T18:33:22.501Z" }, + { url = "https://files.pythonhosted.org/packages/53/89/2b2de6c81fa131f423246a9109d7b2a375e83968ad0800d6e57d0574629b/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", size = 2069475, upload-time = "2025-04-23T18:33:24.528Z" }, + { url = "https://files.pythonhosted.org/packages/b8/e9/1f7efbe20d0b2b10f6718944b5d8ece9152390904f29a78e68d4e7961159/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", size = 2239013, upload-time = "2025-04-23T18:33:26.621Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/5309c905a93811524a49b4e031e9851a6b00ff0fb668794472ea7746b448/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", size = 2238715, upload-time = "2025-04-23T18:33:28.656Z" }, + { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757, upload-time = "2025-04-23T18:33:30.645Z" }, ] [[package]] name = "pydantic-settings" -version = "2.12.0" +version = "2.10.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, { name = "python-dotenv" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/43/4b/ac7e0aae12027748076d72a8764ff1c9d82ca75a7a52622e67ed3f765c54/pydantic_settings-2.12.0.tar.gz", hash = "sha256:005538ef951e3c2a68e1c08b292b5f2e71490def8589d4221b95dab00dafcfd0", size = 194184, upload-time = "2025-11-10T14:25:47.013Z" } +sdist = { url = "https://files.pythonhosted.org/packages/68/85/1ea668bbab3c50071ca613c6ab30047fb36ab0da1b92fa8f17bbc38fd36c/pydantic_settings-2.10.1.tar.gz", hash = "sha256:06f0062169818d0f5524420a360d632d5857b83cffd4d42fe29597807a1614ee", size = 172583, upload-time = "2025-06-24T13:26:46.841Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/60/5d4751ba3f4a40a6891f24eec885f51afd78d208498268c734e256fb13c4/pydantic_settings-2.12.0-py3-none-any.whl", hash = "sha256:fddb9fd99a5b18da837b29710391e945b1e30c135477f484084ee513adb93809", size = 51880, upload-time = "2025-11-10T14:25:45.546Z" }, + { url = "https://files.pythonhosted.org/packages/58/f0/427018098906416f580e3cf1366d3b1abfb408a0652e9f31600c24a1903c/pydantic_settings-2.10.1-py3-none-any.whl", hash = "sha256:a60952460b99cf661dc25c29c0ef171721f98bfcb52ef8d9ea4c943d7c8cc796", size = 45235, upload-time = "2025-06-24T13:26:45.485Z" }, ] [[package]] @@ -2380,20 +2118,18 @@ wheels = [ [[package]] name = "pytest" -version = "9.0.1" +version = "9.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, { name = "pygments" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/07/56/f013048ac4bc4c1d9be45afd4ab209ea62822fb1598f40687e6bf45dcea4/pytest-9.0.1.tar.gz", hash = "sha256:3e9c069ea73583e255c3b21cf46b8d3c56f6e3a1a8f6da94ccb0fcf57b9d73c8", size = 1564125, upload-time = "2025-11-12T13:05:09.333Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 1568901, upload-time = "2025-12-06T21:30:51.014Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/8b/6300fb80f858cda1c51ffa17075df5d846757081d11ab4aa35cef9e6258b/pytest-9.0.1-py3-none-any.whl", hash = "sha256:67be0030d194df2dfa7b556f2e56fb3c3315bd5c8822c6951162b92b32ce7dad", size = 373668, upload-time = "2025-11-12T13:05:07.379Z" }, + { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size = 374801, upload-time = "2025-12-06T21:30:49.154Z" }, ] [[package]] @@ -2401,7 +2137,6 @@ name = "pytest-asyncio" version = "1.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "backports-asyncio-runner", marker = "python_full_version < '3.11'" }, { name = "pytest" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] @@ -2412,28 +2147,28 @@ wheels = [ [[package]] name = "pytest-cov" -version = "7.0.0" +version = "6.2.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "coverage", extra = ["toml"] }, { name = "pluggy" }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5e/f7/c933acc76f5208b3b00089573cf6a2bc26dc80a8aece8f52bb7d6b1855ca/pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1", size = 54328, upload-time = "2025-09-09T10:57:02.113Z" } +sdist = { url = "https://files.pythonhosted.org/packages/18/99/668cade231f434aaa59bbfbf49469068d2ddd945000621d3d165d2e7dd7b/pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2", size = 69432, upload-time = "2025-06-12T10:47:47.684Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/49/1377b49de7d0c1ce41292161ea0f721913fa8722c19fb9c1e3aa0367eecb/pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861", size = 22424, upload-time = "2025-09-09T10:57:00.695Z" }, + { url = "https://files.pythonhosted.org/packages/bc/16/4ea354101abb1287856baa4af2732be351c7bee728065aed451b678153fd/pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5", size = 24644, upload-time = "2025-06-12T10:47:45.932Z" }, ] [[package]] name = "pytest-mock" -version = "3.15.1" +version = "3.14.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" } +sdist = { url = "https://files.pythonhosted.org/packages/71/28/67172c96ba684058a4d24ffe144d64783d2a270d0af0d9e792737bddc75c/pytest_mock-3.14.1.tar.gz", hash = "sha256:159e9edac4c451ce77a5cdb9fc5d1100708d2dd4ba3c3df572f14097351af80e", size = 33241, upload-time = "2025-05-26T13:58:45.167Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" }, + { url = "https://files.pythonhosted.org/packages/b2/05/77b60e520511c53d1c1ca75f1930c7dd8e971d0c4379b7f4b3f9644685ba/pytest_mock-3.14.1-py3-none-any.whl", hash = "sha256:178aefcd11307d874b4cd3100344e7e2d888d9791a6a1d9bfe90fbc1b74fd1d0", size = 9923, upload-time = "2025-05-26T13:58:43.487Z" }, ] [[package]] @@ -2471,24 +2206,24 @@ wheels = [ [[package]] name = "python-multipart" -version = "0.0.20" +version = "0.0.21" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f3/87/f44d7c9f274c7ee665a29b885ec97089ec5dc034c7f3fafa03da9e39a09e/python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13", size = 37158, upload-time = "2024-12-16T19:45:46.972Z" } +sdist = { url = "https://files.pythonhosted.org/packages/78/96/804520d0850c7db98e5ccb70282e29208723f0964e88ffd9d0da2f52ea09/python_multipart-0.0.21.tar.gz", hash = "sha256:7137ebd4d3bbf70ea1622998f902b97a29434a9e8dc40eb203bbcf7c2a2cba92", size = 37196, upload-time = "2025-12-17T09:24:22.446Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546, upload-time = "2024-12-16T19:45:44.423Z" }, + { url = "https://files.pythonhosted.org/packages/aa/76/03af049af4dcee5d27442f71b6924f01f3efb5d2bd34f23fcd563f2cc5f5/python_multipart-0.0.21-py3-none-any.whl", hash = "sha256:cf7a6713e01c87aa35387f4774e812c4361150938d20d232800f75ffcf266090", size = 24541, upload-time = "2025-12-17T09:24:21.153Z" }, ] [[package]] name = "python-socketio" -version = "5.15.0" +version = "5.16.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "bidict" }, { name = "python-engineio" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/a8/5f7c805dd6d0d6cba91d3ea215b4b88889d1b99b71a53c932629daba53f1/python_socketio-5.15.0.tar.gz", hash = "sha256:d0403ababb59aa12fd5adcfc933a821113f27bd77761bc1c54aad2e3191a9b69", size = 126439, upload-time = "2025-11-22T18:50:21.062Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b8/55/5d8af5884283b58e4405580bcd84af1d898c457173c708736e065f10ca4a/python_socketio-5.16.0.tar.gz", hash = "sha256:f79403c7f1ba8b84460aa8fe4c671414c8145b21a501b46b676f3740286356fd", size = 127120, upload-time = "2025-12-24T23:51:48.826Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cd/fa/1ef2f8537272a2f383d72b9301c3ef66a49710b3bb7dcb2bd138cf2920d1/python_socketio-5.15.0-py3-none-any.whl", hash = "sha256:e93363102f4da6d8e7a8872bf4908b866c40f070e716aa27132891e643e2687c", size = 79451, upload-time = "2025-11-22T18:50:19.416Z" }, + { url = "https://files.pythonhosted.org/packages/28/d2/2ccc2b69a187b80fda3152745670cfba936704f296a9fa54c6c8ac694d12/python_socketio-5.16.0-py3-none-any.whl", hash = "sha256:d95802961e15c7bd54ecf884c6e7644f81be8460f0a02ee66b473df58088ee8a", size = 79607, upload-time = "2025-12-24T23:51:47.2Z" }, ] [package.optional-dependencies] @@ -2508,17 +2243,21 @@ wheels = [ [[package]] name = "pywin32" -version = "306" +version = "311" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/08/dc/28c668097edfaf4eac4617ef7adf081b9cf50d254672fcf399a70f5efc41/pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d", size = 8506422, upload-time = "2023-03-26T03:27:46.303Z" }, - { url = "https://files.pythonhosted.org/packages/d3/d6/891894edec688e72c2e308b3243fad98b4066e1839fd2fe78f04129a9d31/pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8", size = 9226392, upload-time = "2023-03-26T03:27:53.591Z" }, - { url = "https://files.pythonhosted.org/packages/8b/1e/fc18ad83ca553e01b97aa8393ff10e33c1fb57801db05488b83282ee9913/pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407", size = 8507689, upload-time = "2023-03-25T23:50:08.499Z" }, - { url = "https://files.pythonhosted.org/packages/7e/9e/ad6b1ae2a5ad1066dc509350e0fbf74d8d50251a51e420a2a8feaa0cecbd/pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e", size = 9227547, upload-time = "2023-03-25T23:50:20.331Z" }, - { url = "https://files.pythonhosted.org/packages/91/20/f744bff1da8f43388498503634378dbbefbe493e65675f2cc52f7185c2c2/pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a", size = 10388324, upload-time = "2023-03-25T23:50:30.904Z" }, - { url = "https://files.pythonhosted.org/packages/14/91/17e016d5923e178346aabda3dfec6629d1a26efe587d19667542105cf0a6/pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b", size = 8507705, upload-time = "2023-03-25T23:50:40.279Z" }, - { url = "https://files.pythonhosted.org/packages/83/1c/25b79fc3ec99b19b0a0730cc47356f7e2959863bf9f3cd314332bddb4f68/pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e", size = 9227429, upload-time = "2023-03-25T23:50:50.222Z" }, - { url = "https://files.pythonhosted.org/packages/1c/43/e3444dc9a12f8365d9603c2145d16bf0a2f8180f343cf87be47f5579e547/pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040", size = 10388145, upload-time = "2023-03-25T23:51:01.401Z" }, + { url = "https://files.pythonhosted.org/packages/7c/af/449a6a91e5d6db51420875c54f6aff7c97a86a3b13a0b4f1a5c13b988de3/pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151", size = 8697031, upload-time = "2025-07-14T20:13:13.266Z" }, + { url = "https://files.pythonhosted.org/packages/51/8f/9bb81dd5bb77d22243d33c8397f09377056d5c687aa6d4042bea7fbf8364/pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503", size = 9508308, upload-time = "2025-07-14T20:13:15.147Z" }, + { url = "https://files.pythonhosted.org/packages/44/7b/9c2ab54f74a138c491aba1b1cd0795ba61f144c711daea84a88b63dc0f6c/pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2", size = 8703930, upload-time = "2025-07-14T20:13:16.945Z" }, + { url = "https://files.pythonhosted.org/packages/e7/ab/01ea1943d4eba0f850c3c61e78e8dd59757ff815ff3ccd0a84de5f541f42/pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31", size = 8706543, upload-time = "2025-07-14T20:13:20.765Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a8/a0e8d07d4d051ec7502cd58b291ec98dcc0c3fff027caad0470b72cfcc2f/pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067", size = 9495040, upload-time = "2025-07-14T20:13:22.543Z" }, + { url = "https://files.pythonhosted.org/packages/ba/3a/2ae996277b4b50f17d61f0603efd8253cb2d79cc7ae159468007b586396d/pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852", size = 8710102, upload-time = "2025-07-14T20:13:24.682Z" }, + { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700, upload-time = "2025-07-14T20:13:26.471Z" }, + { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700, upload-time = "2025-07-14T20:13:28.243Z" }, + { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318, upload-time = "2025-07-14T20:13:30.348Z" }, + { url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714, upload-time = "2025-07-14T20:13:32.449Z" }, + { url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800, upload-time = "2025-07-14T20:13:34.312Z" }, + { url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540, upload-time = "2025-07-14T20:13:36.379Z" }, ] [[package]] @@ -2527,15 +2266,6 @@ version = "6.0.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199, upload-time = "2024-08-06T20:31:40.178Z" }, - { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758, upload-time = "2024-08-06T20:31:42.173Z" }, - { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463, upload-time = "2024-08-06T20:31:44.263Z" }, - { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280, upload-time = "2024-08-06T20:31:50.199Z" }, - { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239, upload-time = "2024-08-06T20:31:52.292Z" }, - { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802, upload-time = "2024-08-06T20:31:53.836Z" }, - { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527, upload-time = "2024-08-06T20:31:55.565Z" }, - { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052, upload-time = "2024-08-06T20:31:56.914Z" }, - { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774, upload-time = "2024-08-06T20:31:58.304Z" }, { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612, upload-time = "2024-08-06T20:32:03.408Z" }, { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040, upload-time = "2024-08-06T20:32:04.926Z" }, { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829, upload-time = "2024-08-06T20:32:06.459Z" }, @@ -2567,51 +2297,60 @@ wheels = [ [[package]] name = "pyzmq" -version = "25.1.2" +version = "27.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "implementation_name == 'pypy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3a/33/1a3683fc9a4bd64d8ccc0290da75c8f042184a1a49c146d28398414d3341/pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226", size = 1402339, upload-time = "2023-12-05T07:34:47.976Z" } +sdist = { url = "https://files.pythonhosted.org/packages/04/0b/3c9baedbdf613ecaa7aa07027780b8867f57b6293b6ee50de316c9f3222b/pyzmq-27.1.0.tar.gz", hash = "sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540", size = 281750, upload-time = "2025-09-08T23:10:18.157Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5e/f4/901edb48b2b2c00ad73de0db2ee76e24ce5903ef815ad0ad10e14555d989/pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4", size = 1872310, upload-time = "2023-12-05T07:48:13.713Z" }, - { url = "https://files.pythonhosted.org/packages/5e/46/2de69c7c79fd78bf4c22a9e8165fa6312f5d49410f1be6ddab51a6fe7236/pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0", size = 1249619, upload-time = "2023-12-05T07:50:38.691Z" }, - { url = "https://files.pythonhosted.org/packages/d1/f5/d6b9755713843bf9701ae86bf6fd97ec294a52cf2af719cd14fdf9392f65/pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e", size = 897360, upload-time = "2023-12-05T07:42:26.268Z" }, - { url = "https://files.pythonhosted.org/packages/7c/88/c1aef8820f12e710d136024d231e70e24684a01314aa1814f0758960ba01/pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872", size = 1156959, upload-time = "2023-12-05T07:44:29.904Z" }, - { url = "https://files.pythonhosted.org/packages/82/1b/b25d2c4ac3b4dae238c98e63395dbb88daf11968b168948d3c6289c3e95c/pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d", size = 1100585, upload-time = "2023-12-05T07:45:05.518Z" }, - { url = "https://files.pythonhosted.org/packages/67/bf/6bc0977acd934b66eacab79cec303ecf08ae4a6150d57c628aa919615488/pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75", size = 1109267, upload-time = "2023-12-05T07:39:51.21Z" }, - { url = "https://files.pythonhosted.org/packages/64/fb/4f07424e56c6a5fb47306d9ba744c3c250250c2e7272f9c81efbf8daaccf/pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6", size = 1431853, upload-time = "2023-12-05T07:41:09.261Z" }, - { url = "https://files.pythonhosted.org/packages/a2/10/2b88c1d4beb59a1d45c13983c4b7c5dcd6ef7988db3c03d23b0cabc5adca/pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979", size = 1766212, upload-time = "2023-12-05T07:49:05.926Z" }, - { url = "https://files.pythonhosted.org/packages/bc/ab/c9a22eacfd5bd82620501ae426a3dd6ffa374ac335b21e54209d7a93d3fb/pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08", size = 1653737, upload-time = "2023-12-05T07:49:09.096Z" }, - { url = "https://files.pythonhosted.org/packages/d6/e5/71bd89e47eedb7ebec31ef9a49dcdb0517dbbb063bd5de363980a6911eb1/pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886", size = 906288, upload-time = "2023-12-05T07:42:05.509Z" }, - { url = "https://files.pythonhosted.org/packages/9d/5f/2defc8a579e8b5679d92720ab3a4cb93e3a77d923070bf4c1a103d3ae478/pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6", size = 1170923, upload-time = "2023-12-05T07:44:54.296Z" }, - { url = "https://files.pythonhosted.org/packages/35/de/7579518bc58cebf92568b48e354a702fb52525d0fab166dc544f2a0615dc/pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c", size = 1870360, upload-time = "2023-12-05T07:48:16.153Z" }, - { url = "https://files.pythonhosted.org/packages/ce/f9/58b6cc9a110b1832f666fa6b5a67dc4d520fabfc680ca87a8167b2061d5d/pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1", size = 1249008, upload-time = "2023-12-05T07:50:40.442Z" }, - { url = "https://files.pythonhosted.org/packages/bc/4a/ac6469c01813cb3652ab4e30ec4a37815cc9949afc18af33f64e2ec704aa/pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348", size = 904394, upload-time = "2023-12-05T07:42:27.815Z" }, - { url = "https://files.pythonhosted.org/packages/77/b7/8cee519b11bdd3f76c1a6eb537ab13c1bfef2964d725717705c86f524e4c/pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642", size = 1161453, upload-time = "2023-12-05T07:44:32.003Z" }, - { url = "https://files.pythonhosted.org/packages/b6/1d/c35a956a44b333b064ae1b1c588c2dfa0e01b7ec90884c1972bfcef119c3/pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840", size = 1105501, upload-time = "2023-12-05T07:45:07.18Z" }, - { url = "https://files.pythonhosted.org/packages/18/d1/b3d1e985318ed7287737ea9e6b6e21748cc7c89accc2443347cd2c8d5f0f/pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d", size = 1109513, upload-time = "2023-12-05T07:39:53.338Z" }, - { url = "https://files.pythonhosted.org/packages/14/9b/341cdfb47440069010101403298dc24d449150370c6cb322e73bfa1949bd/pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b", size = 1433541, upload-time = "2023-12-05T07:41:10.786Z" }, - { url = "https://files.pythonhosted.org/packages/fa/52/c6d4e76e020c554e965459d41a98201b4d45277a288648f53a4e5a2429cc/pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b", size = 1766133, upload-time = "2023-12-05T07:49:11.204Z" }, - { url = "https://files.pythonhosted.org/packages/1d/6d/0cbd8dd5b8979fd6b9cf1852ed067b9d2cd6fa0c09c3bafe6874d2d2e03c/pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3", size = 1653636, upload-time = "2023-12-05T07:49:13.787Z" }, - { url = "https://files.pythonhosted.org/packages/f5/af/d90eed9cf3840685d54d4a35d5f9e242a8a48b5410d41146f14c1e098302/pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097", size = 904865, upload-time = "2023-12-05T07:42:07.189Z" }, - { url = "https://files.pythonhosted.org/packages/20/d2/09443dc73053ad01c846d7fb77e09fe9d93c09d4e900215f3c8b7b56bfec/pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9", size = 1171332, upload-time = "2023-12-05T07:44:56.111Z" }, - { url = "https://files.pythonhosted.org/packages/6e/f0/d71cf69dc039c9adc8b625efc3bad3684f3660a570e47f0f0c64df787b41/pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a", size = 1871111, upload-time = "2023-12-05T07:48:17.868Z" }, - { url = "https://files.pythonhosted.org/packages/68/62/d365773edf56ad71993579ee574105f02f83530caf600ebf28bea15d88d0/pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e", size = 1248844, upload-time = "2023-12-05T07:50:42.922Z" }, - { url = "https://files.pythonhosted.org/packages/72/55/cc3163e20f40615a49245fa7041badec6103e8ee7e482dbb0feea00a7b84/pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27", size = 899373, upload-time = "2023-12-05T07:42:29.595Z" }, - { url = "https://files.pythonhosted.org/packages/40/aa/ae292bd85deda637230970bbc53c1dc53696a99e82fc7cd6d373ec173853/pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30", size = 1160901, upload-time = "2023-12-05T07:44:33.819Z" }, - { url = "https://files.pythonhosted.org/packages/93/b7/6e291eafbbbc66d0e87658dd21383ec2b4ab35edcfb283902c580a6db76f/pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee", size = 1101147, upload-time = "2023-12-05T07:45:10.058Z" }, - { url = "https://files.pythonhosted.org/packages/3a/f1/e296d5a507eac519d1fe1382851b1a4575f690bc2b2d2c8eca2ed7e4bd1f/pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537", size = 1105315, upload-time = "2023-12-05T07:39:55.851Z" }, - { url = "https://files.pythonhosted.org/packages/56/63/5c2abb556ab4cf013d98e01782d5bd642238a0ed9b019e965a7d7e957f56/pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181", size = 1427747, upload-time = "2023-12-05T07:41:13.219Z" }, - { url = "https://files.pythonhosted.org/packages/b1/71/5dba5f6b12ef54fb977c9b9279075e151c04fc0dd6851e9663d9e66b593f/pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe", size = 1762221, upload-time = "2023-12-05T07:49:16.352Z" }, - { url = "https://files.pythonhosted.org/packages/cf/49/54d7e8bb3df82a3509325b11491d33450dc91580d4826b62fa5e554bb9cf/pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737", size = 1649505, upload-time = "2023-12-05T07:49:18.952Z" }, - { url = "https://files.pythonhosted.org/packages/34/14/58e5037229bc37963e2ce804c2c075a3a541e3f84bf1c231e7c9779d36f1/pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d", size = 954891, upload-time = "2023-12-05T07:42:09.208Z" }, - { url = "https://files.pythonhosted.org/packages/2c/2d/04fab685ef3a8e6e955220fd2a54dc99efaee960a88675bf5c92cd277164/pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7", size = 1252773, upload-time = "2023-12-05T07:44:58.16Z" }, - { url = "https://files.pythonhosted.org/packages/6b/fe/ed38fe12c540bafc1cae32c3ff638e9df32528f5cf91b5e400e6a8f5b3ec/pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05", size = 963654, upload-time = "2023-12-05T07:47:03.874Z" }, - { url = "https://files.pythonhosted.org/packages/44/97/a760a2dff0672c408f22f726f2ea10a7a516ffa5001ca5a3641e355a45f9/pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8", size = 609436, upload-time = "2023-12-05T07:42:37.762Z" }, - { url = "https://files.pythonhosted.org/packages/41/81/ace39daa19c78b2f4fc12ef217d9d5f1ac658d5828d692bbbb68240cd55b/pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e", size = 843396, upload-time = "2023-12-05T07:44:43.727Z" }, - { url = "https://files.pythonhosted.org/packages/4c/43/150b0b203f5461a9aeadaa925c55167e2b4215c9322b6911a64360d2243e/pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4", size = 800856, upload-time = "2023-12-05T07:45:21.117Z" }, - { url = "https://files.pythonhosted.org/packages/5f/91/a618b56aaabe40dddcd25db85624d7408768fd32f5bfcf81bc0af5b1ce75/pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d", size = 413836, upload-time = "2023-12-05T07:53:22.583Z" }, + { url = "https://files.pythonhosted.org/packages/06/5d/305323ba86b284e6fcb0d842d6adaa2999035f70f8c38a9b6d21ad28c3d4/pyzmq-27.1.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:226b091818d461a3bef763805e75685e478ac17e9008f49fce2d3e52b3d58b86", size = 1333328, upload-time = "2025-09-08T23:07:45.946Z" }, + { url = "https://files.pythonhosted.org/packages/bd/a0/fc7e78a23748ad5443ac3275943457e8452da67fda347e05260261108cbc/pyzmq-27.1.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:0790a0161c281ca9723f804871b4027f2e8b5a528d357c8952d08cd1a9c15581", size = 908803, upload-time = "2025-09-08T23:07:47.551Z" }, + { url = "https://files.pythonhosted.org/packages/7e/22/37d15eb05f3bdfa4abea6f6d96eb3bb58585fbd3e4e0ded4e743bc650c97/pyzmq-27.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c895a6f35476b0c3a54e3eb6ccf41bf3018de937016e6e18748317f25d4e925f", size = 668836, upload-time = "2025-09-08T23:07:49.436Z" }, + { url = "https://files.pythonhosted.org/packages/b1/c4/2a6fe5111a01005fc7af3878259ce17684fabb8852815eda6225620f3c59/pyzmq-27.1.0-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bbf8d3630bf96550b3be8e1fc0fea5cbdc8d5466c1192887bd94869da17a63e", size = 857038, upload-time = "2025-09-08T23:07:51.234Z" }, + { url = "https://files.pythonhosted.org/packages/cb/eb/bfdcb41d0db9cd233d6fb22dc131583774135505ada800ebf14dfb0a7c40/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:15c8bd0fe0dabf808e2d7a681398c4e5ded70a551ab47482067a572c054c8e2e", size = 1657531, upload-time = "2025-09-08T23:07:52.795Z" }, + { url = "https://files.pythonhosted.org/packages/ab/21/e3180ca269ed4a0de5c34417dfe71a8ae80421198be83ee619a8a485b0c7/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bafcb3dd171b4ae9f19ee6380dfc71ce0390fefaf26b504c0e5f628d7c8c54f2", size = 2034786, upload-time = "2025-09-08T23:07:55.047Z" }, + { url = "https://files.pythonhosted.org/packages/3b/b1/5e21d0b517434b7f33588ff76c177c5a167858cc38ef740608898cd329f2/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e829529fcaa09937189178115c49c504e69289abd39967cd8a4c215761373394", size = 1894220, upload-time = "2025-09-08T23:07:57.172Z" }, + { url = "https://files.pythonhosted.org/packages/03/f2/44913a6ff6941905efc24a1acf3d3cb6146b636c546c7406c38c49c403d4/pyzmq-27.1.0-cp311-cp311-win32.whl", hash = "sha256:6df079c47d5902af6db298ec92151db82ecb557af663098b92f2508c398bb54f", size = 567155, upload-time = "2025-09-08T23:07:59.05Z" }, + { url = "https://files.pythonhosted.org/packages/23/6d/d8d92a0eb270a925c9b4dd039c0b4dc10abc2fcbc48331788824ef113935/pyzmq-27.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:190cbf120fbc0fc4957b56866830def56628934a9d112aec0e2507aa6a032b97", size = 633428, upload-time = "2025-09-08T23:08:00.663Z" }, + { url = "https://files.pythonhosted.org/packages/ae/14/01afebc96c5abbbd713ecfc7469cfb1bc801c819a74ed5c9fad9a48801cb/pyzmq-27.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:eca6b47df11a132d1745eb3b5b5e557a7dae2c303277aa0e69c6ba91b8736e07", size = 559497, upload-time = "2025-09-08T23:08:02.15Z" }, + { url = "https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc", size = 1306279, upload-time = "2025-09-08T23:08:03.807Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5e/c3c49fdd0f535ef45eefcc16934648e9e59dace4a37ee88fc53f6cd8e641/pyzmq-27.1.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113", size = 895645, upload-time = "2025-09-08T23:08:05.301Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e5/b0b2504cb4e903a74dcf1ebae157f9e20ebb6ea76095f6cfffea28c42ecd/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233", size = 652574, upload-time = "2025-09-08T23:08:06.828Z" }, + { url = "https://files.pythonhosted.org/packages/f8/9b/c108cdb55560eaf253f0cbdb61b29971e9fb34d9c3499b0e96e4e60ed8a5/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31", size = 840995, upload-time = "2025-09-08T23:08:08.396Z" }, + { url = "https://files.pythonhosted.org/packages/c2/bb/b79798ca177b9eb0825b4c9998c6af8cd2a7f15a6a1a4272c1d1a21d382f/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28", size = 1642070, upload-time = "2025-09-08T23:08:09.989Z" }, + { url = "https://files.pythonhosted.org/packages/9c/80/2df2e7977c4ede24c79ae39dcef3899bfc5f34d1ca7a5b24f182c9b7a9ca/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856", size = 2021121, upload-time = "2025-09-08T23:08:11.907Z" }, + { url = "https://files.pythonhosted.org/packages/46/bd/2d45ad24f5f5ae7e8d01525eb76786fa7557136555cac7d929880519e33a/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496", size = 1878550, upload-time = "2025-09-08T23:08:13.513Z" }, + { url = "https://files.pythonhosted.org/packages/e6/2f/104c0a3c778d7c2ab8190e9db4f62f0b6957b53c9d87db77c284b69f33ea/pyzmq-27.1.0-cp312-abi3-win32.whl", hash = "sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd", size = 559184, upload-time = "2025-09-08T23:08:15.163Z" }, + { url = "https://files.pythonhosted.org/packages/fc/7f/a21b20d577e4100c6a41795842028235998a643b1ad406a6d4163ea8f53e/pyzmq-27.1.0-cp312-abi3-win_amd64.whl", hash = "sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf", size = 619480, upload-time = "2025-09-08T23:08:17.192Z" }, + { url = "https://files.pythonhosted.org/packages/78/c2/c012beae5f76b72f007a9e91ee9401cb88c51d0f83c6257a03e785c81cc2/pyzmq-27.1.0-cp312-abi3-win_arm64.whl", hash = "sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f", size = 552993, upload-time = "2025-09-08T23:08:18.926Z" }, + { url = "https://files.pythonhosted.org/packages/60/cb/84a13459c51da6cec1b7b1dc1a47e6db6da50b77ad7fd9c145842750a011/pyzmq-27.1.0-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:93ad4b0855a664229559e45c8d23797ceac03183c7b6f5b4428152a6b06684a5", size = 1122436, upload-time = "2025-09-08T23:08:20.801Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b6/94414759a69a26c3dd674570a81813c46a078767d931a6c70ad29fc585cb/pyzmq-27.1.0-cp313-cp313-android_24_x86_64.whl", hash = "sha256:fbb4f2400bfda24f12f009cba62ad5734148569ff4949b1b6ec3b519444342e6", size = 1156301, upload-time = "2025-09-08T23:08:22.47Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ad/15906493fd40c316377fd8a8f6b1f93104f97a752667763c9b9c1b71d42d/pyzmq-27.1.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:e343d067f7b151cfe4eb3bb796a7752c9d369eed007b91231e817071d2c2fec7", size = 1341197, upload-time = "2025-09-08T23:08:24.286Z" }, + { url = "https://files.pythonhosted.org/packages/14/1d/d343f3ce13db53a54cb8946594e567410b2125394dafcc0268d8dda027e0/pyzmq-27.1.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:08363b2011dec81c354d694bdecaef4770e0ae96b9afea70b3f47b973655cc05", size = 897275, upload-time = "2025-09-08T23:08:26.063Z" }, + { url = "https://files.pythonhosted.org/packages/69/2d/d83dd6d7ca929a2fc67d2c3005415cdf322af7751d773524809f9e585129/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d54530c8c8b5b8ddb3318f481297441af102517602b569146185fa10b63f4fa9", size = 660469, upload-time = "2025-09-08T23:08:27.623Z" }, + { url = "https://files.pythonhosted.org/packages/3e/cd/9822a7af117f4bc0f1952dbe9ef8358eb50a24928efd5edf54210b850259/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f3afa12c392f0a44a2414056d730eebc33ec0926aae92b5ad5cf26ebb6cc128", size = 847961, upload-time = "2025-09-08T23:08:29.672Z" }, + { url = "https://files.pythonhosted.org/packages/9a/12/f003e824a19ed73be15542f172fd0ec4ad0b60cf37436652c93b9df7c585/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c65047adafe573ff023b3187bb93faa583151627bc9c51fc4fb2c561ed689d39", size = 1650282, upload-time = "2025-09-08T23:08:31.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/4a/e82d788ed58e9a23995cee70dbc20c9aded3d13a92d30d57ec2291f1e8a3/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:90e6e9441c946a8b0a667356f7078d96411391a3b8f80980315455574177ec97", size = 2024468, upload-time = "2025-09-08T23:08:33.543Z" }, + { url = "https://files.pythonhosted.org/packages/d9/94/2da0a60841f757481e402b34bf4c8bf57fa54a5466b965de791b1e6f747d/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:add071b2d25f84e8189aaf0882d39a285b42fa3853016ebab234a5e78c7a43db", size = 1885394, upload-time = "2025-09-08T23:08:35.51Z" }, + { url = "https://files.pythonhosted.org/packages/4f/6f/55c10e2e49ad52d080dc24e37adb215e5b0d64990b57598abc2e3f01725b/pyzmq-27.1.0-cp313-cp313t-win32.whl", hash = "sha256:7ccc0700cfdf7bd487bea8d850ec38f204478681ea02a582a8da8171b7f90a1c", size = 574964, upload-time = "2025-09-08T23:08:37.178Z" }, + { url = "https://files.pythonhosted.org/packages/87/4d/2534970ba63dd7c522d8ca80fb92777f362c0f321900667c615e2067cb29/pyzmq-27.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8085a9fba668216b9b4323be338ee5437a235fe275b9d1610e422ccc279733e2", size = 641029, upload-time = "2025-09-08T23:08:40.595Z" }, + { url = "https://files.pythonhosted.org/packages/f6/fa/f8aea7a28b0641f31d40dea42d7ef003fded31e184ef47db696bc74cd610/pyzmq-27.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:6bb54ca21bcfe361e445256c15eedf083f153811c37be87e0514934d6913061e", size = 561541, upload-time = "2025-09-08T23:08:42.668Z" }, + { url = "https://files.pythonhosted.org/packages/87/45/19efbb3000956e82d0331bafca5d9ac19ea2857722fa2caacefb6042f39d/pyzmq-27.1.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ce980af330231615756acd5154f29813d553ea555485ae712c491cd483df6b7a", size = 1341197, upload-time = "2025-09-08T23:08:44.973Z" }, + { url = "https://files.pythonhosted.org/packages/48/43/d72ccdbf0d73d1343936296665826350cb1e825f92f2db9db3e61c2162a2/pyzmq-27.1.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1779be8c549e54a1c38f805e56d2a2e5c009d26de10921d7d51cfd1c8d4632ea", size = 897175, upload-time = "2025-09-08T23:08:46.601Z" }, + { url = "https://files.pythonhosted.org/packages/2f/2e/a483f73a10b65a9ef0161e817321d39a770b2acf8bcf3004a28d90d14a94/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7200bb0f03345515df50d99d3db206a0a6bee1955fbb8c453c76f5bf0e08fb96", size = 660427, upload-time = "2025-09-08T23:08:48.187Z" }, + { url = "https://files.pythonhosted.org/packages/f5/d2/5f36552c2d3e5685abe60dfa56f91169f7a2d99bbaf67c5271022ab40863/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01c0e07d558b06a60773744ea6251f769cd79a41a97d11b8bf4ab8f034b0424d", size = 847929, upload-time = "2025-09-08T23:08:49.76Z" }, + { url = "https://files.pythonhosted.org/packages/c4/2a/404b331f2b7bf3198e9945f75c4c521f0c6a3a23b51f7a4a401b94a13833/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:80d834abee71f65253c91540445d37c4c561e293ba6e741b992f20a105d69146", size = 1650193, upload-time = "2025-09-08T23:08:51.7Z" }, + { url = "https://files.pythonhosted.org/packages/1c/0b/f4107e33f62a5acf60e3ded67ed33d79b4ce18de432625ce2fc5093d6388/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:544b4e3b7198dde4a62b8ff6685e9802a9a1ebf47e77478a5eb88eca2a82f2fd", size = 2024388, upload-time = "2025-09-08T23:08:53.393Z" }, + { url = "https://files.pythonhosted.org/packages/0d/01/add31fe76512642fd6e40e3a3bd21f4b47e242c8ba33efb6809e37076d9b/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cedc4c68178e59a4046f97eca31b148ddcf51e88677de1ef4e78cf06c5376c9a", size = 1885316, upload-time = "2025-09-08T23:08:55.702Z" }, + { url = "https://files.pythonhosted.org/packages/c4/59/a5f38970f9bf07cee96128de79590bb354917914a9be11272cfc7ff26af0/pyzmq-27.1.0-cp314-cp314t-win32.whl", hash = "sha256:1f0b2a577fd770aa6f053211a55d1c47901f4d537389a034c690291485e5fe92", size = 587472, upload-time = "2025-09-08T23:08:58.18Z" }, + { url = "https://files.pythonhosted.org/packages/70/d8/78b1bad170f93fcf5e3536e70e8fadac55030002275c9a29e8f5719185de/pyzmq-27.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:19c9468ae0437f8074af379e986c5d3d7d7bfe033506af442e8c879732bedbe0", size = 661401, upload-time = "2025-09-08T23:08:59.802Z" }, + { url = "https://files.pythonhosted.org/packages/81/d6/4bfbb40c9a0b42fc53c7cf442f6385db70b40f74a783130c5d0a5aa62228/pyzmq-27.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:dc5dbf68a7857b59473f7df42650c621d7e8923fb03fa74a526890f4d33cc4d7", size = 575170, upload-time = "2025-09-08T23:09:01.418Z" }, + { url = "https://files.pythonhosted.org/packages/4c/c6/c4dcdecdbaa70969ee1fdced6d7b8f60cfabe64d25361f27ac4665a70620/pyzmq-27.1.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:18770c8d3563715387139060d37859c02ce40718d1faf299abddcdcc6a649066", size = 836265, upload-time = "2025-09-08T23:09:49.376Z" }, + { url = "https://files.pythonhosted.org/packages/3e/79/f38c92eeaeb03a2ccc2ba9866f0439593bb08c5e3b714ac1d553e5c96e25/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:ac25465d42f92e990f8d8b0546b01c391ad431c3bf447683fdc40565941d0604", size = 800208, upload-time = "2025-09-08T23:09:51.073Z" }, + { url = "https://files.pythonhosted.org/packages/49/0e/3f0d0d335c6b3abb9b7b723776d0b21fa7f3a6c819a0db6097059aada160/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53b40f8ae006f2734ee7608d59ed661419f087521edbfc2149c3932e9c14808c", size = 567747, upload-time = "2025-09-08T23:09:52.698Z" }, + { url = "https://files.pythonhosted.org/packages/a1/cf/f2b3784d536250ffd4be70e049f3b60981235d70c6e8ce7e3ef21e1adb25/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f605d884e7c8be8fe1aa94e0a783bf3f591b84c24e4bc4f3e7564c82ac25e271", size = 747371, upload-time = "2025-09-08T23:09:54.563Z" }, + { url = "https://files.pythonhosted.org/packages/01/1b/5dbe84eefc86f48473947e2f41711aded97eecef1231f4558f1f02713c12/pyzmq-27.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c9f7f6e13dff2e44a6afeaf2cf54cee5929ad64afaf4d40b50f93c58fc687355", size = 544862, upload-time = "2025-09-08T23:09:56.509Z" }, ] [[package]] @@ -2621,8 +2360,7 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, { name = "opencv-python-headless" }, - { name = "scikit-learn", version = "1.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "scikit-learn", version = "1.7.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "scikit-learn" }, { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/3e/2d/bab8babd9dc9a9e4df6eb115540cee4322c1a74078fb6f3b3ebc452a22b3/qudida-0.0.4.tar.gz", hash = "sha256:db198e2887ab0c9aa0023e565afbff41dfb76b361f85fd5e13f780d75ba18cc8", size = 3100, upload-time = "2021-08-09T16:47:55.807Z" } @@ -2632,7 +2370,7 @@ wheels = [ [[package]] name = "rapidocr" -version = "3.4.2" +version = "3.4.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorlog" }, @@ -2648,12 +2386,12 @@ dependencies = [ { name = "tqdm" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/83/5b8c8075954c5b61d938b8954710d986134c4ca7c32a841ad7d8c844cf6c/rapidocr-3.4.2-py3-none-any.whl", hash = "sha256:17845fa8cc9a20a935111e59482f2214598bba1547000cfd960d8924dd4522a5", size = 15056674, upload-time = "2025-10-11T14:43:00.296Z" }, + { url = "https://files.pythonhosted.org/packages/be/5a/9a61f7c3250d7651c2043e763045e1181fe2fd12d0d5879f726f351818ad/rapidocr-3.4.5-py3-none-any.whl", hash = "sha256:6fb21ffb55b3aa49fee2a7c5cc5190851180e5be538b076b2166b7f44213cd5c", size = 15060573, upload-time = "2025-12-18T03:16:15.738Z" }, ] [[package]] name = "requests" -version = "2.32.3" +version = "2.32.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, @@ -2661,22 +2399,22 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218, upload-time = "2024-05-29T15:37:49.536Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928, upload-time = "2024-05-29T15:37:47.027Z" }, + { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload-time = "2025-06-09T16:43:05.728Z" }, ] [[package]] name = "rich" -version = "14.2.0" +version = "14.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown-it-py" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fb/d2/8920e102050a0de7bfabeb4c4614a49248cf8d5d7a8d01885fbb24dc767a/rich-14.2.0.tar.gz", hash = "sha256:73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4", size = 219990, upload-time = "2025-10-09T14:16:53.064Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/75/af448d8e52bf1d8fa6a9d089ca6c07ff4453d86c65c145d0a300bb073b9b/rich-14.1.0.tar.gz", hash = "sha256:e497a48b844b0320d45007cdebfeaeed8db2a4f4bcf49f15e455cfc4af11eaa8", size = 224441, upload-time = "2025-07-25T07:32:58.125Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl", hash = "sha256:76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd", size = 243393, upload-time = "2025-10-09T14:16:51.245Z" }, + { url = "https://files.pythonhosted.org/packages/e3/30/3c4d035596d3cf444529e0b2953ad0466f6049528a879d27534700580395/rich-14.1.0-py3-none-any.whl", hash = "sha256:536f5f1785986d6dbdea3c75205c473f970777b4a0d6c6dd1b696aa05a3fa04f", size = 243368, upload-time = "2025-07-25T07:32:56.73Z" }, ] [[package]] @@ -2689,7 +2427,6 @@ dependencies = [ { name = "ruamel-yaml" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/ab/db/76b40afe343f8a8c5222300da425e0dace30ce639a94776468b1d157311b/rknn_toolkit_lite2-2.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:821e80c95e6838308c133915660b1a6ae78bb8d079b2cbbd46a02dae61192d33", size = 559386, upload-time = "2025-04-09T09:39:54.414Z" }, { url = "https://files.pythonhosted.org/packages/c1/3d/e80e1742420f62cb628d40a8bf547d6f7c9dbe4e13dcb7b7e7c0b5620e74/rknn_toolkit_lite2-2.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bda74f1179e15fccb8726054a24898982522784b65bb340b20146955d254e800", size = 569160, upload-time = "2025-04-09T09:39:56.149Z" }, { url = "https://files.pythonhosted.org/packages/ff/db/64c756f3f06b219e92ff4f0fd4e000870ee49f214d505ff01c8b0275e26d/rknn_toolkit_lite2-2.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1e4ec691fed900c0e6fde5e7d8eeba17f806aa45092b63b361ee775e2c1b50e", size = 527458, upload-time = "2025-04-09T09:39:58.881Z" }, ] @@ -2712,15 +2449,6 @@ version = "0.2.12" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315, upload-time = "2024-10-20T10:10:56.22Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/70/57/40a958e863e299f0c74ef32a3bde9f2d1ea8d69669368c0c502a0997f57f/ruamel.yaml.clib-0.2.12-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:11f891336688faf5156a36293a9c362bdc7c88f03a8a027c2c1d8e0bcde998e5", size = 131301, upload-time = "2024-10-20T10:12:35.876Z" }, - { url = "https://files.pythonhosted.org/packages/98/a8/29a3eb437b12b95f50a6bcc3d7d7214301c6c529d8fdc227247fa84162b5/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:a606ef75a60ecf3d924613892cc603b154178ee25abb3055db5062da811fd969", size = 633728, upload-time = "2024-10-20T10:12:37.858Z" }, - { url = "https://files.pythonhosted.org/packages/35/6d/ae05a87a3ad540259c3ad88d71275cbd1c0f2d30ae04c65dcbfb6dcd4b9f/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd5415dded15c3822597455bc02bcd66e81ef8b7a48cb71a33628fc9fdde39df", size = 722230, upload-time = "2024-10-20T10:12:39.457Z" }, - { url = "https://files.pythonhosted.org/packages/7f/b7/20c6f3c0b656fe609675d69bc135c03aac9e3865912444be6339207b6648/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f66efbc1caa63c088dead1c4170d148eabc9b80d95fb75b6c92ac0aad2437d76", size = 686712, upload-time = "2024-10-20T10:12:41.119Z" }, - { url = "https://files.pythonhosted.org/packages/cd/11/d12dbf683471f888d354dac59593873c2b45feb193c5e3e0f2ebf85e68b9/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:22353049ba4181685023b25b5b51a574bce33e7f51c759371a7422dcae5402a6", size = 663936, upload-time = "2024-10-21T11:26:37.419Z" }, - { url = "https://files.pythonhosted.org/packages/72/14/4c268f5077db5c83f743ee1daeb236269fa8577133a5cfa49f8b382baf13/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:932205970b9f9991b34f55136be327501903f7c66830e9760a8ffb15b07f05cd", size = 696580, upload-time = "2024-10-21T11:26:39.503Z" }, - { url = "https://files.pythonhosted.org/packages/30/fc/8cd12f189c6405a4c1cf37bd633aa740a9538c8e40497c231072d0fef5cf/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a52d48f4e7bf9005e8f0a89209bf9a73f7190ddf0489eee5eb51377385f59f2a", size = 663393, upload-time = "2024-12-11T19:58:13.873Z" }, - { url = "https://files.pythonhosted.org/packages/80/29/c0a017b704aaf3cbf704989785cd9c5d5b8ccec2dae6ac0c53833c84e677/ruamel.yaml.clib-0.2.12-cp310-cp310-win32.whl", hash = "sha256:3eac5a91891ceb88138c113f9db04f3cebdae277f5d44eaa3651a4f573e6a5da", size = 100326, upload-time = "2024-10-20T10:12:42.967Z" }, - { url = "https://files.pythonhosted.org/packages/3a/65/fa39d74db4e2d0cd252355732d966a460a41cd01c6353b820a0952432839/ruamel.yaml.clib-0.2.12-cp310-cp310-win_amd64.whl", hash = "sha256:ab007f2f5a87bd08ab1499bdf96f3d5c6ad4dcfa364884cb4549aa0154b13a28", size = 118079, upload-time = "2024-10-20T10:12:44.117Z" }, { url = "https://files.pythonhosted.org/packages/fb/8f/683c6ad562f558cbc4f7c029abcd9599148c51c54b5ef0f24f2638da9fbb/ruamel.yaml.clib-0.2.12-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:4a6679521a58256a90b0d89e03992c15144c5f3858f40d7c18886023d7943db6", size = 132224, upload-time = "2024-10-20T10:12:45.162Z" }, { url = "https://files.pythonhosted.org/packages/3c/d2/b79b7d695e2f21da020bd44c782490578f300dd44f0a4c57a92575758a76/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:d84318609196d6bd6da0edfa25cedfbabd8dbde5140a0a23af29ad4b8f91fb1e", size = 641480, upload-time = "2024-10-20T10:12:46.758Z" }, { url = "https://files.pythonhosted.org/packages/68/6e/264c50ce2a31473a9fdbf4fa66ca9b2b17c7455b31ef585462343818bd6c/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb43a269eb827806502c7c8efb7ae7e9e9d0573257a46e8e952f4d4caba4f31e", size = 739068, upload-time = "2024-10-20T10:12:48.605Z" }, @@ -2752,33 +2480,33 @@ wheels = [ [[package]] name = "ruff" -version = "0.14.6" +version = "0.14.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/f0/62b5a1a723fe183650109407fa56abb433b00aa1c0b9ba555f9c4efec2c6/ruff-0.14.6.tar.gz", hash = "sha256:6f0c742ca6a7783a736b867a263b9a7a80a45ce9bee391eeda296895f1b4e1cc", size = 5669501, upload-time = "2025-11-21T14:26:17.903Z" } +sdist = { url = "https://files.pythonhosted.org/packages/57/08/52232a877978dd8f9cf2aeddce3e611b40a63287dfca29b6b8da791f5e8d/ruff-0.14.10.tar.gz", hash = "sha256:9a2e830f075d1a42cd28420d7809ace390832a490ed0966fe373ba288e77aaf4", size = 5859763, upload-time = "2025-12-18T19:28:57.98Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/67/d2/7dd544116d107fffb24a0064d41a5d2ed1c9d6372d142f9ba108c8e39207/ruff-0.14.6-py3-none-linux_armv6l.whl", hash = "sha256:d724ac2f1c240dbd01a2ae98db5d1d9a5e1d9e96eba999d1c48e30062df578a3", size = 13326119, upload-time = "2025-11-21T14:25:24.2Z" }, - { url = "https://files.pythonhosted.org/packages/36/6a/ad66d0a3315d6327ed6b01f759d83df3c4d5f86c30462121024361137b6a/ruff-0.14.6-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9f7539ea257aa4d07b7ce87aed580e485c40143f2473ff2f2b75aee003186004", size = 13526007, upload-time = "2025-11-21T14:25:26.906Z" }, - { url = "https://files.pythonhosted.org/packages/a3/9d/dae6db96df28e0a15dea8e986ee393af70fc97fd57669808728080529c37/ruff-0.14.6-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7f6007e55b90a2a7e93083ba48a9f23c3158c433591c33ee2e99a49b889c6332", size = 12676572, upload-time = "2025-11-21T14:25:29.826Z" }, - { url = "https://files.pythonhosted.org/packages/76/a4/f319e87759949062cfee1b26245048e92e2acce900ad3a909285f9db1859/ruff-0.14.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a8e7b9d73d8728b68f632aa8e824ef041d068d231d8dbc7808532d3629a6bef", size = 13140745, upload-time = "2025-11-21T14:25:32.788Z" }, - { url = "https://files.pythonhosted.org/packages/95/d3/248c1efc71a0a8ed4e8e10b4b2266845d7dfc7a0ab64354afe049eaa1310/ruff-0.14.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d50d45d4553a3ebcbd33e7c5e0fe6ca4aafd9a9122492de357205c2c48f00775", size = 13076486, upload-time = "2025-11-21T14:25:35.601Z" }, - { url = "https://files.pythonhosted.org/packages/a5/19/b68d4563fe50eba4b8c92aa842149bb56dd24d198389c0ed12e7faff4f7d/ruff-0.14.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:118548dd121f8a21bfa8ab2c5b80e5b4aed67ead4b7567790962554f38e598ce", size = 13727563, upload-time = "2025-11-21T14:25:38.514Z" }, - { url = "https://files.pythonhosted.org/packages/47/ac/943169436832d4b0e867235abbdb57ce3a82367b47e0280fa7b4eabb7593/ruff-0.14.6-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:57256efafbfefcb8748df9d1d766062f62b20150691021f8ab79e2d919f7c11f", size = 15199755, upload-time = "2025-11-21T14:25:41.516Z" }, - { url = "https://files.pythonhosted.org/packages/c9/b9/288bb2399860a36d4bb0541cb66cce3c0f4156aaff009dc8499be0c24bf2/ruff-0.14.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ff18134841e5c68f8e5df1999a64429a02d5549036b394fafbe410f886e1989d", size = 14850608, upload-time = "2025-11-21T14:25:44.428Z" }, - { url = "https://files.pythonhosted.org/packages/ee/b1/a0d549dd4364e240f37e7d2907e97ee80587480d98c7799d2d8dc7a2f605/ruff-0.14.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:29c4b7ec1e66a105d5c27bd57fa93203637d66a26d10ca9809dc7fc18ec58440", size = 14118754, upload-time = "2025-11-21T14:25:47.214Z" }, - { url = "https://files.pythonhosted.org/packages/13/ac/9b9fe63716af8bdfddfacd0882bc1586f29985d3b988b3c62ddce2e202c3/ruff-0.14.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:167843a6f78680746d7e226f255d920aeed5e4ad9c03258094a2d49d3028b105", size = 13949214, upload-time = "2025-11-21T14:25:50.002Z" }, - { url = "https://files.pythonhosted.org/packages/12/27/4dad6c6a77fede9560b7df6802b1b697e97e49ceabe1f12baf3ea20862e9/ruff-0.14.6-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:16a33af621c9c523b1ae006b1b99b159bf5ac7e4b1f20b85b2572455018e0821", size = 14106112, upload-time = "2025-11-21T14:25:52.841Z" }, - { url = "https://files.pythonhosted.org/packages/6a/db/23e322d7177873eaedea59a7932ca5084ec5b7e20cb30f341ab594130a71/ruff-0.14.6-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:1432ab6e1ae2dc565a7eea707d3b03a0c234ef401482a6f1621bc1f427c2ff55", size = 13035010, upload-time = "2025-11-21T14:25:55.536Z" }, - { url = "https://files.pythonhosted.org/packages/a8/9c/20e21d4d69dbb35e6a1df7691e02f363423658a20a2afacf2a2c011800dc/ruff-0.14.6-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:4c55cfbbe7abb61eb914bfd20683d14cdfb38a6d56c6c66efa55ec6570ee4e71", size = 13054082, upload-time = "2025-11-21T14:25:58.625Z" }, - { url = "https://files.pythonhosted.org/packages/66/25/906ee6a0464c3125c8d673c589771a974965c2be1a1e28b5c3b96cb6ef88/ruff-0.14.6-py3-none-musllinux_1_2_i686.whl", hash = "sha256:efea3c0f21901a685fff4befda6d61a1bf4cb43de16da87e8226a281d614350b", size = 13303354, upload-time = "2025-11-21T14:26:01.816Z" }, - { url = "https://files.pythonhosted.org/packages/4c/58/60577569e198d56922b7ead07b465f559002b7b11d53f40937e95067ca1c/ruff-0.14.6-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:344d97172576d75dc6afc0e9243376dbe1668559c72de1864439c4fc95f78185", size = 14054487, upload-time = "2025-11-21T14:26:05.058Z" }, - { url = "https://files.pythonhosted.org/packages/67/0b/8e4e0639e4cc12547f41cb771b0b44ec8225b6b6a93393176d75fe6f7d40/ruff-0.14.6-py3-none-win32.whl", hash = "sha256:00169c0c8b85396516fdd9ce3446c7ca20c2a8f90a77aa945ba6b8f2bfe99e85", size = 13013361, upload-time = "2025-11-21T14:26:08.152Z" }, - { url = "https://files.pythonhosted.org/packages/fb/02/82240553b77fd1341f80ebb3eaae43ba011c7a91b4224a9f317d8e6591af/ruff-0.14.6-py3-none-win_amd64.whl", hash = "sha256:390e6480c5e3659f8a4c8d6a0373027820419ac14fa0d2713bd8e6c3e125b8b9", size = 14432087, upload-time = "2025-11-21T14:26:10.891Z" }, - { url = "https://files.pythonhosted.org/packages/a5/1f/93f9b0fad9470e4c829a5bb678da4012f0c710d09331b860ee555216f4ea/ruff-0.14.6-py3-none-win_arm64.whl", hash = "sha256:d43c81fbeae52cfa8728d8766bbf46ee4298c888072105815b392da70ca836b2", size = 13520930, upload-time = "2025-11-21T14:26:13.951Z" }, + { url = "https://files.pythonhosted.org/packages/60/01/933704d69f3f05ee16ef11406b78881733c186fe14b6a46b05cfcaf6d3b2/ruff-0.14.10-py3-none-linux_armv6l.whl", hash = "sha256:7a3ce585f2ade3e1f29ec1b92df13e3da262178df8c8bdf876f48fa0e8316c49", size = 13527080, upload-time = "2025-12-18T19:29:25.642Z" }, + { url = "https://files.pythonhosted.org/packages/df/58/a0349197a7dfa603ffb7f5b0470391efa79ddc327c1e29c4851e85b09cc5/ruff-0.14.10-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:674f9be9372907f7257c51f1d4fc902cb7cf014b9980152b802794317941f08f", size = 13797320, upload-time = "2025-12-18T19:29:02.571Z" }, + { url = "https://files.pythonhosted.org/packages/7b/82/36be59f00a6082e38c23536df4e71cdbc6af8d7c707eade97fcad5c98235/ruff-0.14.10-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d85713d522348837ef9df8efca33ccb8bd6fcfc86a2cde3ccb4bc9d28a18003d", size = 12918434, upload-time = "2025-12-18T19:28:51.202Z" }, + { url = "https://files.pythonhosted.org/packages/a6/00/45c62a7f7e34da92a25804f813ebe05c88aa9e0c25e5cb5a7d23dd7450e3/ruff-0.14.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6987ebe0501ae4f4308d7d24e2d0fe3d7a98430f5adfd0f1fead050a740a3a77", size = 13371961, upload-time = "2025-12-18T19:29:04.991Z" }, + { url = "https://files.pythonhosted.org/packages/40/31/a5906d60f0405f7e57045a70f2d57084a93ca7425f22e1d66904769d1628/ruff-0.14.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16a01dfb7b9e4eee556fbfd5392806b1b8550c9b4a9f6acd3dbe6812b193c70a", size = 13275629, upload-time = "2025-12-18T19:29:21.381Z" }, + { url = "https://files.pythonhosted.org/packages/3e/60/61c0087df21894cf9d928dc04bcd4fb10e8b2e8dca7b1a276ba2155b2002/ruff-0.14.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7165d31a925b7a294465fa81be8c12a0e9b60fb02bf177e79067c867e71f8b1f", size = 14029234, upload-time = "2025-12-18T19:29:00.132Z" }, + { url = "https://files.pythonhosted.org/packages/44/84/77d911bee3b92348b6e5dab5a0c898d87084ea03ac5dc708f46d88407def/ruff-0.14.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c561695675b972effb0c0a45db233f2c816ff3da8dcfbe7dfc7eed625f218935", size = 15449890, upload-time = "2025-12-18T19:28:53.573Z" }, + { url = "https://files.pythonhosted.org/packages/e9/36/480206eaefa24a7ec321582dda580443a8f0671fdbf6b1c80e9c3e93a16a/ruff-0.14.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bb98fcbbc61725968893682fd4df8966a34611239c9fd07a1f6a07e7103d08e", size = 15123172, upload-time = "2025-12-18T19:29:23.453Z" }, + { url = "https://files.pythonhosted.org/packages/5c/38/68e414156015ba80cef5473d57919d27dfb62ec804b96180bafdeaf0e090/ruff-0.14.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f24b47993a9d8cb858429e97bdf8544c78029f09b520af615c1d261bf827001d", size = 14460260, upload-time = "2025-12-18T19:29:27.808Z" }, + { url = "https://files.pythonhosted.org/packages/b3/19/9e050c0dca8aba824d67cc0db69fb459c28d8cd3f6855b1405b3f29cc91d/ruff-0.14.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59aabd2e2c4fd614d2862e7939c34a532c04f1084476d6833dddef4afab87e9f", size = 14229978, upload-time = "2025-12-18T19:29:11.32Z" }, + { url = "https://files.pythonhosted.org/packages/51/eb/e8dd1dd6e05b9e695aa9dd420f4577debdd0f87a5ff2fedda33c09e9be8c/ruff-0.14.10-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:213db2b2e44be8625002dbea33bb9c60c66ea2c07c084a00d55732689d697a7f", size = 14338036, upload-time = "2025-12-18T19:29:09.184Z" }, + { url = "https://files.pythonhosted.org/packages/6a/12/f3e3a505db7c19303b70af370d137795fcfec136d670d5de5391e295c134/ruff-0.14.10-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b914c40ab64865a17a9a5b67911d14df72346a634527240039eb3bd650e5979d", size = 13264051, upload-time = "2025-12-18T19:29:13.431Z" }, + { url = "https://files.pythonhosted.org/packages/08/64/8c3a47eaccfef8ac20e0484e68e0772013eb85802f8a9f7603ca751eb166/ruff-0.14.10-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:1484983559f026788e3a5c07c81ef7d1e97c1c78ed03041a18f75df104c45405", size = 13283998, upload-time = "2025-12-18T19:29:06.994Z" }, + { url = "https://files.pythonhosted.org/packages/12/84/534a5506f4074e5cc0529e5cd96cfc01bb480e460c7edf5af70d2bcae55e/ruff-0.14.10-py3-none-musllinux_1_2_i686.whl", hash = "sha256:c70427132db492d25f982fffc8d6c7535cc2fd2c83fc8888f05caaa248521e60", size = 13601891, upload-time = "2025-12-18T19:28:55.811Z" }, + { url = "https://files.pythonhosted.org/packages/0d/1e/14c916087d8598917dbad9b2921d340f7884824ad6e9c55de948a93b106d/ruff-0.14.10-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5bcf45b681e9f1ee6445d317ce1fa9d6cba9a6049542d1c3d5b5958986be8830", size = 14336660, upload-time = "2025-12-18T19:29:16.531Z" }, + { url = "https://files.pythonhosted.org/packages/f2/1c/d7b67ab43f30013b47c12b42d1acd354c195351a3f7a1d67f59e54227ede/ruff-0.14.10-py3-none-win32.whl", hash = "sha256:104c49fc7ab73f3f3a758039adea978869a918f31b73280db175b43a2d9b51d6", size = 13196187, upload-time = "2025-12-18T19:29:19.006Z" }, + { url = "https://files.pythonhosted.org/packages/fb/9c/896c862e13886fae2af961bef3e6312db9ebc6adc2b156fe95e615dee8c1/ruff-0.14.10-py3-none-win_amd64.whl", hash = "sha256:466297bd73638c6bdf06485683e812db1c00c7ac96d4ddd0294a338c62fdc154", size = 14661283, upload-time = "2025-12-18T19:29:30.16Z" }, + { url = "https://files.pythonhosted.org/packages/74/31/b0e29d572670dca3674eeee78e418f20bdf97fa8aa9ea71380885e175ca0/ruff-0.14.10-py3-none-win_arm64.whl", hash = "sha256:e51d046cf6dda98a4633b8a8a771451107413b0f07183b2bef03f075599e44e6", size = 13729839, upload-time = "2025-12-18T19:28:48.636Z" }, ] [[package]] name = "scikit-image" -version = "0.22.0" +version = "0.25.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "imageio" }, @@ -2787,94 +2515,41 @@ dependencies = [ { name = "numpy" }, { name = "packaging" }, { name = "pillow" }, - { name = "scipy", version = "1.11.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "scipy", version = "1.16.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "scipy" }, { name = "tifffile" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/65/c1/a49da20845f0f0e1afbb1c2586d406dc0acb84c26ae293bad6d7e7f718bc/scikit_image-0.22.0.tar.gz", hash = "sha256:018d734df1d2da2719087d15f679d19285fce97cd37695103deadfaef2873236", size = 22685018, upload-time = "2023-10-03T21:36:34.274Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/a8/3c0f256012b93dd2cb6fda9245e9f4bff7dc0486880b248005f15ea2255e/scikit_image-0.25.2.tar.gz", hash = "sha256:e5a37e6cd4d0c018a7a55b9d601357e3382826d3888c10d0213fc63bff977dde", size = 22693594, upload-time = "2025-02-18T18:05:24.538Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9c/8c/381ae42b37cf3e9e99a1deb3ffe76ca5ff5dd18ffa368293476164507fad/scikit_image-0.22.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:74ec5c1d4693506842cc7c9487c89d8fc32aed064e9363def7af08b8f8cbb31d", size = 13905039, upload-time = "2023-10-03T21:35:27.279Z" }, - { url = "https://files.pythonhosted.org/packages/16/06/4bfba08f5cce26d5070bb2cf4e3f9f479480978806355d1c5bea6f26a17c/scikit_image-0.22.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:a05ae4fe03d802587ed8974e900b943275548cde6a6807b785039d63e9a7a5ff", size = 13279212, upload-time = "2023-10-03T21:35:30.864Z" }, - { url = "https://files.pythonhosted.org/packages/74/57/dbf744ca00eea2a09b1848c9dec28a43978c16dc049b1fba949cb050bedf/scikit_image-0.22.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a92dca3d95b1301442af055e196a54b5a5128c6768b79fc0a4098f1d662dee6", size = 14091779, upload-time = "2023-10-03T21:35:34.273Z" }, - { url = "https://files.pythonhosted.org/packages/f1/6c/49f5a0ce8ddcdbdac5ac69c129654938cc6de0a936303caa6cad495ceb2a/scikit_image-0.22.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3663d063d8bf2fb9bdfb0ca967b9ee3b6593139c860c7abc2d2351a8a8863938", size = 14682042, upload-time = "2023-10-03T21:35:37.787Z" }, - { url = "https://files.pythonhosted.org/packages/86/f0/18895318109f9b508f2310f136922e455a453550826a8240b412063c2528/scikit_image-0.22.0-cp310-cp310-win_amd64.whl", hash = "sha256:ebdbdc901bae14dab637f8d5c99f6d5cc7aaf4a3b6f4003194e003e9f688a6fc", size = 24492345, upload-time = "2023-10-03T21:35:41.122Z" }, - { url = "https://files.pythonhosted.org/packages/9f/d9/dc99e527d1a0050f0353d2fff3548273b4df6151884806e324f26572fd6b/scikit_image-0.22.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:95d6da2d8a44a36ae04437c76d32deb4e3c993ffc846b394b9949fd8ded73cb2", size = 13883619, upload-time = "2023-10-03T21:35:44.88Z" }, - { url = "https://files.pythonhosted.org/packages/80/37/7670020b112ff9a47e49b1e36f438d000db5b632aab8a8fd7e6be545d065/scikit_image-0.22.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:2c6ef454a85f569659b813ac2a93948022b0298516b757c9c6c904132be327e2", size = 13264761, upload-time = "2023-10-03T21:35:48.865Z" }, - { url = "https://files.pythonhosted.org/packages/ad/85/dadf1194793ac1c895370f3ed048bb91dda083775b42e11d9672a50494d5/scikit_image-0.22.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e87872f067444ee90a00dd49ca897208308645382e8a24bd3e76f301af2352cd", size = 14070710, upload-time = "2023-10-03T21:35:51.711Z" }, - { url = "https://files.pythonhosted.org/packages/d4/34/e27bf2bfe7b52b884b49bd71ea91ff81e4737246735ee5ea383314c31876/scikit_image-0.22.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5c378db54e61b491b9edeefff87e49fcf7fdf729bb93c777d7a5f15d36f743e", size = 14664172, upload-time = "2023-10-03T21:35:55.752Z" }, - { url = "https://files.pythonhosted.org/packages/ce/d0/a3f60c9f57ed295b3076e4acdb29a37bbd8823452562ab2ad51b03d6f377/scikit_image-0.22.0-cp311-cp311-win_amd64.whl", hash = "sha256:2bcb74adb0634258a67f66c2bb29978c9a3e222463e003b67ba12056c003971b", size = 24491321, upload-time = "2023-10-03T21:35:58.847Z" }, - { url = "https://files.pythonhosted.org/packages/da/a4/b0b69bde4d6360e801d647691591dc9967a25a18a4c63ecf7f87d94e3fac/scikit_image-0.22.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:003ca2274ac0fac252280e7179ff986ff783407001459ddea443fe7916e38cff", size = 13968808, upload-time = "2023-10-03T21:36:02.526Z" }, - { url = "https://files.pythonhosted.org/packages/e4/65/3c0f77e7a9bae100a8f7f5cebde410fca1a3cf64e1ecdd343666e27b11d4/scikit_image-0.22.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:cf3c0c15b60ae3e557a0c7575fbd352f0c3ce0afca562febfe3ab80efbeec0e9", size = 13323763, upload-time = "2023-10-03T21:36:05.504Z" }, - { url = "https://files.pythonhosted.org/packages/4a/ed/7faf9f7a55d5b3095d33990a85603b66866cce2a608b27f0e1487d70a451/scikit_image-0.22.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5b23908dd4d120e6aecb1ed0277563e8cbc8d6c0565bdc4c4c6475d53608452", size = 13877233, upload-time = "2023-10-03T21:36:08.352Z" }, - { url = "https://files.pythonhosted.org/packages/ae/9d/09d06f36ce71fa276e1d9453fb4b04250a7038292b13b8c273a5a1a8f7c0/scikit_image-0.22.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be79d7493f320a964f8fcf603121595ba82f84720de999db0fcca002266a549a", size = 14954814, upload-time = "2023-10-03T21:36:11.871Z" }, - { url = "https://files.pythonhosted.org/packages/dc/35/e6327ae498c6f557cb0a7c3fc284effe7958d2d1c43fb61cd77804fc2c4f/scikit_image-0.22.0-cp312-cp312-win_amd64.whl", hash = "sha256:722b970aa5da725dca55252c373b18bbea7858c1cdb406e19f9b01a4a73b30b2", size = 25004857, upload-time = "2023-10-03T21:36:15.457Z" }, -] - -[[package]] -name = "scikit-learn" -version = "1.3.2" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version < '3.11' and sys_platform == 'darwin'", - "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", -] -dependencies = [ - { name = "joblib", marker = "python_full_version < '3.11'" }, - { name = "numpy", marker = "python_full_version < '3.11'" }, - { name = "scipy", version = "1.11.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "threadpoolctl", marker = "python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/88/00/835e3d280fdd7784e76bdef91dd9487582d7951a7254f59fc8004fc8b213/scikit-learn-1.3.2.tar.gz", hash = "sha256:a2f54c76accc15a34bfb9066e6c7a56c1e7235dda5762b990792330b52ccfb05", size = 7510251, upload-time = "2023-10-23T13:47:55.287Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/53/570b55a6e10b8694ac1e3024d2df5cd443f1b4ff6d28430845da8b9019b3/scikit_learn-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e326c0eb5cf4d6ba40f93776a20e9a7a69524c4db0757e7ce24ba222471ee8a1", size = 10209999, upload-time = "2023-10-23T13:46:30.373Z" }, - { url = "https://files.pythonhosted.org/packages/70/d0/50ace22129f79830e3cf682d0a2bd4843ef91573299d43112d52790163a8/scikit_learn-1.3.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:535805c2a01ccb40ca4ab7d081d771aea67e535153e35a1fd99418fcedd1648a", size = 9479353, upload-time = "2023-10-23T13:46:34.368Z" }, - { url = "https://files.pythonhosted.org/packages/8f/46/fcc35ed7606c50d3072eae5a107a45cfa5b7f5fa8cc48610edd8cc8e8550/scikit_learn-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1215e5e58e9880b554b01187b8c9390bf4dc4692eedeaf542d3273f4785e342c", size = 10304705, upload-time = "2023-10-23T13:46:37.868Z" }, - { url = "https://files.pythonhosted.org/packages/d0/0b/26ad95cf0b747be967b15fb71a06f5ac67aba0fd2f9cd174de6edefc4674/scikit_learn-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ee107923a623b9f517754ea2f69ea3b62fc898a3641766cb7deb2f2ce450161", size = 10827807, upload-time = "2023-10-23T13:46:41.59Z" }, - { url = "https://files.pythonhosted.org/packages/69/8a/cf17d6443f5f537e099be81535a56ab68a473f9393fbffda38cd19899fc8/scikit_learn-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:35a22e8015048c628ad099da9df5ab3004cdbf81edc75b396fd0cff8699ac58c", size = 9255427, upload-time = "2023-10-23T13:46:44.826Z" }, - { url = "https://files.pythonhosted.org/packages/08/5d/e5acecd6e99a6b656e42e7a7b18284e2f9c9f512e8ed6979e1e75d25f05f/scikit_learn-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6fb6bc98f234fda43163ddbe36df8bcde1d13ee176c6dc9b92bb7d3fc842eb66", size = 10116376, upload-time = "2023-10-23T13:46:48.147Z" }, - { url = "https://files.pythonhosted.org/packages/40/c6/2e91eefb757822e70d351e02cc38d07c137212ae7c41ac12746415b4860a/scikit_learn-1.3.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:18424efee518a1cde7b0b53a422cde2f6625197de6af36da0b57ec502f126157", size = 9383415, upload-time = "2023-10-23T13:46:51.324Z" }, - { url = "https://files.pythonhosted.org/packages/fa/fd/b3637639e73bb72b12803c5245f2a7299e09b2acd85a0f23937c53369a1c/scikit_learn-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3271552a5eb16f208a6f7f617b8cc6d1f137b52c8a1ef8edf547db0259b2c9fb", size = 10279163, upload-time = "2023-10-23T13:46:54.642Z" }, - { url = "https://files.pythonhosted.org/packages/0c/2a/d3ff6091406bc2207e0adb832ebd15e40ac685811c7e2e3b432bfd969b71/scikit_learn-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc4144a5004a676d5022b798d9e573b05139e77f271253a4703eed295bde0433", size = 10884422, upload-time = "2023-10-23T13:46:58.087Z" }, - { url = "https://files.pythonhosted.org/packages/4e/ba/ce9bd1cd4953336a0e213b29cb80bb11816f2a93de8c99f88ef0b446ad0c/scikit_learn-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:67f37d708f042a9b8d59551cf94d30431e01374e00dc2645fa186059c6c5d78b", size = 9207060, upload-time = "2023-10-23T13:47:00.948Z" }, - { url = "https://files.pythonhosted.org/packages/26/7e/2c3b82c8c29aa384c8bf859740419278627d2cdd0050db503c8840e72477/scikit_learn-1.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8db94cd8a2e038b37a80a04df8783e09caac77cbe052146432e67800e430c028", size = 9979322, upload-time = "2023-10-23T13:47:03.977Z" }, - { url = "https://files.pythonhosted.org/packages/cf/fc/6c52ffeb587259b6b893b7cac268f1eb1b5426bcce1aa20e53523bfe6944/scikit_learn-1.3.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:61a6efd384258789aa89415a410dcdb39a50e19d3d8410bd29be365bcdd512d5", size = 9270688, upload-time = "2023-10-23T13:47:07.316Z" }, - { url = "https://files.pythonhosted.org/packages/e5/a7/6f4ae76f72ae9de162b97acbf1f53acbe404c555f968d13da21e4112a002/scikit_learn-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb06f8dce3f5ddc5dee1715a9b9f19f20d295bed8e3cd4fa51e1d050347de525", size = 10280398, upload-time = "2023-10-23T13:47:10.796Z" }, - { url = "https://files.pythonhosted.org/packages/5d/b7/ee35904c07a0666784349529412fbb9814a56382b650d30fd9d6be5e5054/scikit_learn-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b2de18d86f630d68fe1f87af690d451388bb186480afc719e5f770590c2ef6c", size = 10796478, upload-time = "2023-10-23T13:47:14.077Z" }, - { url = "https://files.pythonhosted.org/packages/fe/6b/db949ed5ac367987b1f250f070f340b7715d22f0c9c965bdf07de6ca75a3/scikit_learn-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:0402638c9a7c219ee52c94cbebc8fcb5eb9fe9c773717965c1f4185588ad3107", size = 9133979, upload-time = "2023-10-23T13:47:17.389Z" }, + { url = "https://files.pythonhosted.org/packages/c4/97/3051c68b782ee3f1fb7f8f5bb7d535cf8cb92e8aae18fa9c1cdf7e15150d/scikit_image-0.25.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f4bac9196fb80d37567316581c6060763b0f4893d3aca34a9ede3825bc035b17", size = 14003057, upload-time = "2025-02-18T18:04:30.395Z" }, + { url = "https://files.pythonhosted.org/packages/19/23/257fc696c562639826065514d551b7b9b969520bd902c3a8e2fcff5b9e17/scikit_image-0.25.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:d989d64ff92e0c6c0f2018c7495a5b20e2451839299a018e0e5108b2680f71e0", size = 13180335, upload-time = "2025-02-18T18:04:33.449Z" }, + { url = "https://files.pythonhosted.org/packages/ef/14/0c4a02cb27ca8b1e836886b9ec7c9149de03053650e9e2ed0625f248dd92/scikit_image-0.25.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2cfc96b27afe9a05bc92f8c6235321d3a66499995675b27415e0d0c76625173", size = 14144783, upload-time = "2025-02-18T18:04:36.594Z" }, + { url = "https://files.pythonhosted.org/packages/dd/9b/9fb556463a34d9842491d72a421942c8baff4281025859c84fcdb5e7e602/scikit_image-0.25.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24cc986e1f4187a12aa319f777b36008764e856e5013666a4a83f8df083c2641", size = 14785376, upload-time = "2025-02-18T18:04:39.856Z" }, + { url = "https://files.pythonhosted.org/packages/de/ec/b57c500ee85885df5f2188f8bb70398481393a69de44a00d6f1d055f103c/scikit_image-0.25.2-cp311-cp311-win_amd64.whl", hash = "sha256:b4f6b61fc2db6340696afe3db6b26e0356911529f5f6aee8c322aa5157490c9b", size = 12791698, upload-time = "2025-02-18T18:04:42.868Z" }, + { url = "https://files.pythonhosted.org/packages/35/8c/5df82881284459f6eec796a5ac2a0a304bb3384eec2e73f35cfdfcfbf20c/scikit_image-0.25.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8db8dd03663112783221bf01ccfc9512d1cc50ac9b5b0fe8f4023967564719fb", size = 13986000, upload-time = "2025-02-18T18:04:47.156Z" }, + { url = "https://files.pythonhosted.org/packages/ce/e6/93bebe1abcdce9513ffec01d8af02528b4c41fb3c1e46336d70b9ed4ef0d/scikit_image-0.25.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:483bd8cc10c3d8a7a37fae36dfa5b21e239bd4ee121d91cad1f81bba10cfb0ed", size = 13235893, upload-time = "2025-02-18T18:04:51.049Z" }, + { url = "https://files.pythonhosted.org/packages/53/4b/eda616e33f67129e5979a9eb33c710013caa3aa8a921991e6cc0b22cea33/scikit_image-0.25.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d1e80107bcf2bf1291acfc0bf0425dceb8890abe9f38d8e94e23497cbf7ee0d", size = 14178389, upload-time = "2025-02-18T18:04:54.245Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b5/b75527c0f9532dd8a93e8e7cd8e62e547b9f207d4c11e24f0006e8646b36/scikit_image-0.25.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a17e17eb8562660cc0d31bb55643a4da996a81944b82c54805c91b3fe66f4824", size = 15003435, upload-time = "2025-02-18T18:04:57.586Z" }, + { url = "https://files.pythonhosted.org/packages/34/e3/49beb08ebccda3c21e871b607c1cb2f258c3fa0d2f609fed0a5ba741b92d/scikit_image-0.25.2-cp312-cp312-win_amd64.whl", hash = "sha256:bdd2b8c1de0849964dbc54037f36b4e9420157e67e45a8709a80d727f52c7da2", size = 12899474, upload-time = "2025-02-18T18:05:01.166Z" }, + { url = "https://files.pythonhosted.org/packages/e6/7c/9814dd1c637f7a0e44342985a76f95a55dd04be60154247679fd96c7169f/scikit_image-0.25.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7efa888130f6c548ec0439b1a7ed7295bc10105458a421e9bf739b457730b6da", size = 13921841, upload-time = "2025-02-18T18:05:03.963Z" }, + { url = "https://files.pythonhosted.org/packages/84/06/66a2e7661d6f526740c309e9717d3bd07b473661d5cdddef4dd978edab25/scikit_image-0.25.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:dd8011efe69c3641920614d550f5505f83658fe33581e49bed86feab43a180fc", size = 13196862, upload-time = "2025-02-18T18:05:06.986Z" }, + { url = "https://files.pythonhosted.org/packages/4e/63/3368902ed79305f74c2ca8c297dfeb4307269cbe6402412668e322837143/scikit_image-0.25.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28182a9d3e2ce3c2e251383bdda68f8d88d9fff1a3ebe1eb61206595c9773341", size = 14117785, upload-time = "2025-02-18T18:05:10.69Z" }, + { url = "https://files.pythonhosted.org/packages/cd/9b/c3da56a145f52cd61a68b8465d6a29d9503bc45bc993bb45e84371c97d94/scikit_image-0.25.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8abd3c805ce6944b941cfed0406d88faeb19bab3ed3d4b50187af55cf24d147", size = 14977119, upload-time = "2025-02-18T18:05:13.871Z" }, + { url = "https://files.pythonhosted.org/packages/8a/97/5fcf332e1753831abb99a2525180d3fb0d70918d461ebda9873f66dcc12f/scikit_image-0.25.2-cp313-cp313-win_amd64.whl", hash = "sha256:64785a8acefee460ec49a354706db0b09d1f325674107d7fa3eadb663fb56d6f", size = 12885116, upload-time = "2025-02-18T18:05:17.844Z" }, + { url = "https://files.pythonhosted.org/packages/10/cc/75e9f17e3670b5ed93c32456fda823333c6279b144cd93e2c03aa06aa472/scikit_image-0.25.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:330d061bd107d12f8d68f1d611ae27b3b813b8cdb0300a71d07b1379178dd4cd", size = 13862801, upload-time = "2025-02-18T18:05:20.783Z" }, ] [[package]] name = "scikit-learn" version = "1.7.1" source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14' and sys_platform == 'darwin'", - "python_full_version == '3.13.*' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and sys_platform == 'darwin'", - "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.14' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.14' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.13.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", -] dependencies = [ - { name = "joblib", marker = "python_full_version >= '3.11'" }, - { name = "numpy", marker = "python_full_version >= '3.11'" }, - { name = "scipy", version = "1.16.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "threadpoolctl", marker = "python_full_version >= '3.11'" }, + { name = "joblib" }, + { name = "numpy" }, + { name = "scipy" }, + { name = "threadpoolctl" }, ] sdist = { url = "https://files.pythonhosted.org/packages/41/84/5f4af978fff619706b8961accac84780a6d298d82a8873446f72edb4ead0/scikit_learn-1.7.1.tar.gz", hash = "sha256:24b3f1e976a4665aa74ee0fcaac2b8fccc6ae77c8e07ab25da3ba6d3292b9802", size = 7190445, upload-time = "2025-07-18T08:01:54.5Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/74/88/0dd5be14ef19f2d80a77780be35a33aa94e8a3b3223d80bee8892a7832b4/scikit_learn-1.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:406204dd4004f0517f0b23cf4b28c6245cbd51ab1b6b78153bc784def214946d", size = 9338868, upload-time = "2025-07-18T08:01:00.25Z" }, - { url = "https://files.pythonhosted.org/packages/fd/52/3056b6adb1ac58a0bc335fc2ed2fcf599974d908855e8cb0ca55f797593c/scikit_learn-1.7.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:16af2e44164f05d04337fd1fc3ae7c4ea61fd9b0d527e22665346336920fe0e1", size = 8655943, upload-time = "2025-07-18T08:01:02.974Z" }, - { url = "https://files.pythonhosted.org/packages/fb/a4/e488acdece6d413f370a9589a7193dac79cd486b2e418d3276d6ea0b9305/scikit_learn-1.7.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2f2e78e56a40c7587dea9a28dc4a49500fa2ead366869418c66f0fd75b80885c", size = 9652056, upload-time = "2025-07-18T08:01:04.978Z" }, - { url = "https://files.pythonhosted.org/packages/18/41/bceacec1285b94eb9e4659b24db46c23346d7e22cf258d63419eb5dec6f7/scikit_learn-1.7.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b62b76ad408a821475b43b7bb90a9b1c9a4d8d125d505c2df0539f06d6e631b1", size = 9473691, upload-time = "2025-07-18T08:01:07.006Z" }, - { url = "https://files.pythonhosted.org/packages/12/7b/e1ae4b7e1dd85c4ca2694ff9cc4a9690970fd6150d81b975e6c5c6f8ee7c/scikit_learn-1.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:9963b065677a4ce295e8ccdee80a1dd62b37249e667095039adcd5bce6e90deb", size = 8900873, upload-time = "2025-07-18T08:01:09.332Z" }, { url = "https://files.pythonhosted.org/packages/b4/bd/a23177930abd81b96daffa30ef9c54ddbf544d3226b8788ce4c3ef1067b4/scikit_learn-1.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:90c8494ea23e24c0fb371afc474618c1019dc152ce4a10e4607e62196113851b", size = 9334838, upload-time = "2025-07-18T08:01:11.239Z" }, { url = "https://files.pythonhosted.org/packages/8d/a1/d3a7628630a711e2ac0d1a482910da174b629f44e7dd8cfcd6924a4ef81a/scikit_learn-1.7.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:bb870c0daf3bf3be145ec51df8ac84720d9972170786601039f024bf6d61a518", size = 8651241, upload-time = "2025-07-18T08:01:13.234Z" }, { url = "https://files.pythonhosted.org/packages/26/92/85ec172418f39474c1cd0221d611345d4f433fc4ee2fc68e01f524ccc4e4/scikit_learn-1.7.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:40daccd1b5623f39e8943ab39735cadf0bdce80e67cdca2adcb5426e987320a8", size = 9718677, upload-time = "2025-07-18T08:01:15.649Z" }, @@ -2897,60 +2572,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f2/20/f4777fcd5627dc6695fa6b92179d0edb7a3ac1b91bcd9a1c7f64fa7ade23/scikit_learn-1.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b1bd1d919210b6a10b7554b717c9000b5485aa95a1d0f177ae0d7ee8ec750da5", size = 9277310, upload-time = "2025-07-18T08:01:52.547Z" }, ] -[[package]] -name = "scipy" -version = "1.11.4" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version < '3.11' and sys_platform == 'darwin'", - "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", -] -dependencies = [ - { name = "numpy", marker = "python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6e/1f/91144ba78dccea567a6466262922786ffc97be1e9b06ed9574ef0edc11e1/scipy-1.11.4.tar.gz", hash = "sha256:90a2b78e7f5733b9de748f589f09225013685f9b218275257f8a8168ededaeaa", size = 56336202, upload-time = "2023-11-18T21:06:08.277Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/34/c6/a32add319475d21f89733c034b99c81b3a7c6c7c19f96f80c7ca3ff1bbd4/scipy-1.11.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc9a714581f561af0848e6b69947fda0614915f072dfd14142ed1bfe1b806710", size = 37293259, upload-time = "2023-11-18T21:01:18.805Z" }, - { url = "https://files.pythonhosted.org/packages/de/0d/4fa68303568c70fd56fbf40668b6c6807cfee4cad975f07d80bdd26d013e/scipy-1.11.4-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:cf00bd2b1b0211888d4dc75656c0412213a8b25e80d73898083f402b50f47e41", size = 29760656, upload-time = "2023-11-18T21:01:41.815Z" }, - { url = "https://files.pythonhosted.org/packages/13/e5/8012be7857db6cbbbdbeea8a154dbacdfae845e95e1e19c028e82236d4a0/scipy-1.11.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9999c008ccf00e8fbcce1236f85ade5c569d13144f77a1946bef8863e8f6eb4", size = 32922489, upload-time = "2023-11-18T21:01:50.637Z" }, - { url = "https://files.pythonhosted.org/packages/e0/9e/80e2205d138960a49caea391f3710600895dd8292b6868dc9aff7aa593f9/scipy-1.11.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:933baf588daa8dc9a92c20a0be32f56d43faf3d1a60ab11b3f08c356430f6e56", size = 36442040, upload-time = "2023-11-18T21:02:00.119Z" }, - { url = "https://files.pythonhosted.org/packages/69/60/30a9c3fbe5066a3a93eefe3e2d44553df13587e6f792e1bff20dfed3d17e/scipy-1.11.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8fce70f39076a5aa62e92e69a7f62349f9574d8405c0a5de6ed3ef72de07f446", size = 36643257, upload-time = "2023-11-18T21:02:06.798Z" }, - { url = "https://files.pythonhosted.org/packages/f8/ec/b46756f80e3f4c5f0989f6e4492c2851f156d9c239d554754a3c8cffd4e2/scipy-1.11.4-cp310-cp310-win_amd64.whl", hash = "sha256:6550466fbeec7453d7465e74d4f4b19f905642c89a7525571ee91dd7adabb5a3", size = 44149285, upload-time = "2023-11-18T21:02:15.592Z" }, - { url = "https://files.pythonhosted.org/packages/b8/f2/1aefbd5e54ebd8c6163ccf7f73e5d17bc8cb38738d312befc524fce84bb4/scipy-1.11.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f313b39a7e94f296025e3cffc2c567618174c0b1dde173960cf23808f9fae4be", size = 37159197, upload-time = "2023-11-18T21:02:21.959Z" }, - { url = "https://files.pythonhosted.org/packages/4b/48/20e77ddb1f473d4717a7d4d3fc8d15557f406f7708496054c59f635b7734/scipy-1.11.4-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1b7c3dca977f30a739e0409fb001056484661cb2541a01aba0bb0029f7b68db8", size = 29675057, upload-time = "2023-11-18T21:02:28.169Z" }, - { url = "https://files.pythonhosted.org/packages/75/2e/a781862190d0e7e76afa74752ef363488a9a9d6ea86e46d5e5506cee8df6/scipy-1.11.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00150c5eae7b610c32589dda259eacc7c4f1665aedf25d921907f4d08a951b1c", size = 32882747, upload-time = "2023-11-18T21:02:33.683Z" }, - { url = "https://files.pythonhosted.org/packages/6b/d4/d62ce38ba00dc67d7ec4ec5cc19d36958d8ed70e63778715ad626bcbc796/scipy-1.11.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:530f9ad26440e85766509dbf78edcfe13ffd0ab7fec2560ee5c36ff74d6269ff", size = 36402732, upload-time = "2023-11-18T21:02:39.762Z" }, - { url = "https://files.pythonhosted.org/packages/88/86/827b56aea1ed04adbb044a675672a73c84d81076a350092bbfcfc1ae723b/scipy-1.11.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5e347b14fe01003d3b78e196e84bd3f48ffe4c8a7b8a1afbcb8f5505cb710993", size = 36622138, upload-time = "2023-11-18T21:02:45.968Z" }, - { url = "https://files.pythonhosted.org/packages/43/d0/f3cd75b62e1b90f48dbf091261b2fc7ceec14a700e308c50f6a69c83d337/scipy-1.11.4-cp311-cp311-win_amd64.whl", hash = "sha256:acf8ed278cc03f5aff035e69cb511741e0418681d25fbbb86ca65429c4f4d9cd", size = 44095631, upload-time = "2023-11-18T21:02:52.859Z" }, - { url = "https://files.pythonhosted.org/packages/df/64/8a690570485b636da614acff35fd725fcbc487f8b1fa9bdb12871b77412f/scipy-1.11.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:028eccd22e654b3ea01ee63705681ee79933652b2d8f873e7949898dda6d11b6", size = 37053653, upload-time = "2023-11-18T21:03:00.107Z" }, - { url = "https://files.pythonhosted.org/packages/5e/43/abf331745a7e5f4af51f13d40e2a72f516048db41ecbcf3ac6f86ada54a3/scipy-1.11.4-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2c6ff6ef9cc27f9b3db93a6f8b38f97387e6e0591600369a297a50a8e96e835d", size = 29641601, upload-time = "2023-11-18T21:03:06.708Z" }, - { url = "https://files.pythonhosted.org/packages/47/9b/62d0ec086dd2871009da8769c504bec6e39b80f4c182c6ead0fcebd8b323/scipy-1.11.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b030c6674b9230d37c5c60ab456e2cf12f6784596d15ce8da9365e70896effc4", size = 32272137, upload-time = "2023-11-18T21:03:14.877Z" }, - { url = "https://files.pythonhosted.org/packages/08/77/f90f7306d755ac68bd159c50bb86fffe38400e533e8c609dd8484bd0f172/scipy-1.11.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad669df80528aeca5f557712102538f4f37e503f0c5b9541655016dd0932ca79", size = 35777534, upload-time = "2023-11-18T21:03:21.451Z" }, - { url = "https://files.pythonhosted.org/packages/00/de/b9f6938090c37b5092969ba1c67118e9114e8e6ef9d197251671444e839c/scipy-1.11.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ce7fff2e23ab2cc81ff452a9444c215c28e6305f396b2ba88343a567feec9660", size = 35963721, upload-time = "2023-11-18T21:03:27.85Z" }, - { url = "https://files.pythonhosted.org/packages/c6/a1/357e4cd43af2748e1e0407ae0e9a5ea8aaaa6b702833c81be11670dcbad8/scipy-1.11.4-cp312-cp312-win_amd64.whl", hash = "sha256:36750b7733d960d7994888f0d148d31ea3017ac15eef664194b4ef68d36a4a97", size = 43730653, upload-time = "2023-11-18T21:03:34.758Z" }, -] - [[package]] name = "scipy" version = "1.16.1" source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.14' and sys_platform == 'darwin'", - "python_full_version == '3.13.*' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and sys_platform == 'darwin'", - "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.14' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.14' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.13.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", -] dependencies = [ - { name = "numpy", marker = "python_full_version >= '3.11'" }, + { name = "numpy" }, ] sdist = { url = "https://files.pythonhosted.org/packages/f5/4a/b927028464795439faec8eaf0b03b011005c487bb2d07409f28bf30879c4/scipy-1.16.1.tar.gz", hash = "sha256:44c76f9e8b6e8e488a586190ab38016e4ed2f8a038af7cd3defa903c0a2238b3", size = 30580861, upload-time = "2025-07-27T16:33:30.834Z" } wheels = [ @@ -3028,14 +2655,6 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/ca/3c/2da625233f4e605155926566c0e7ea8dda361877f48e8b1655e53456f252/shapely-2.1.1.tar.gz", hash = "sha256:500621967f2ffe9642454808009044c21e5b35db89ce69f8a2042c2ffd0e2772", size = 315422, upload-time = "2025-05-19T11:04:41.265Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/82/fa/f18025c95b86116dd8f1ec58cab078bd59ab51456b448136ca27463be533/shapely-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d8ccc872a632acb7bdcb69e5e78df27213f7efd195882668ffba5405497337c6", size = 1825117, upload-time = "2025-05-19T11:03:43.547Z" }, - { url = "https://files.pythonhosted.org/packages/c7/65/46b519555ee9fb851234288be7c78be11e6260995281071d13abf2c313d0/shapely-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f24f2ecda1e6c091da64bcbef8dd121380948074875bd1b247b3d17e99407099", size = 1628541, upload-time = "2025-05-19T11:03:45.162Z" }, - { url = "https://files.pythonhosted.org/packages/29/51/0b158a261df94e33505eadfe737db9531f346dfa60850945ad25fd4162f1/shapely-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45112a5be0b745b49e50f8829ce490eb67fefb0cea8d4f8ac5764bfedaa83d2d", size = 2948453, upload-time = "2025-05-19T11:03:46.681Z" }, - { url = "https://files.pythonhosted.org/packages/a9/4f/6c9bb4bd7b1a14d7051641b9b479ad2a643d5cbc382bcf5bd52fd0896974/shapely-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c10ce6f11904d65e9bbb3e41e774903c944e20b3f0b282559885302f52f224a", size = 3057029, upload-time = "2025-05-19T11:03:48.346Z" }, - { url = "https://files.pythonhosted.org/packages/89/0b/ad1b0af491d753a83ea93138eee12a4597f763ae12727968d05934fe7c78/shapely-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:61168010dfe4e45f956ffbbaf080c88afce199ea81eb1f0ac43230065df320bd", size = 3894342, upload-time = "2025-05-19T11:03:49.602Z" }, - { url = "https://files.pythonhosted.org/packages/7d/96/73232c5de0b9fdf0ec7ddfc95c43aaf928740e87d9f168bff0e928d78c6d/shapely-2.1.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cacf067cdff741cd5c56a21c52f54ece4e4dad9d311130493a791997da4a886b", size = 4056766, upload-time = "2025-05-19T11:03:51.252Z" }, - { url = "https://files.pythonhosted.org/packages/43/cc/eec3c01f754f5b3e0c47574b198f9deb70465579ad0dad0e1cef2ce9e103/shapely-2.1.1-cp310-cp310-win32.whl", hash = "sha256:23b8772c3b815e7790fb2eab75a0b3951f435bc0fce7bb146cb064f17d35ab4f", size = 1523744, upload-time = "2025-05-19T11:03:52.624Z" }, - { url = "https://files.pythonhosted.org/packages/50/fc/a7187e6dadb10b91e66a9e715d28105cde6489e1017cce476876185a43da/shapely-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:2c7b2b6143abf4fa77851cef8ef690e03feade9a0d48acd6dc41d9e0e78d7ca6", size = 1703061, upload-time = "2025-05-19T11:03:54.695Z" }, { url = "https://files.pythonhosted.org/packages/19/97/2df985b1e03f90c503796ad5ecd3d9ed305123b64d4ccb54616b30295b29/shapely-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:587a1aa72bc858fab9b8c20427b5f6027b7cbc92743b8e2c73b9de55aa71c7a7", size = 1819368, upload-time = "2025-05-19T11:03:55.937Z" }, { url = "https://files.pythonhosted.org/packages/56/17/504518860370f0a28908b18864f43d72f03581e2b6680540ca668f07aa42/shapely-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9fa5c53b0791a4b998f9ad84aad456c988600757a96b0a05e14bba10cebaaaea", size = 1625362, upload-time = "2025-05-19T11:03:57.06Z" }, { url = "https://files.pythonhosted.org/packages/36/a1/9677337d729b79fce1ef3296aac6b8ef4743419086f669e8a8070eff8f40/shapely-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aabecd038841ab5310d23495253f01c2a82a3aedae5ab9ca489be214aa458aa7", size = 2999005, upload-time = "2025-05-19T11:03:58.692Z" }, @@ -3102,14 +2721,15 @@ wheels = [ [[package]] name = "starlette" -version = "0.41.2" +version = "0.50.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3e/da/1fb4bdb72ae12b834becd7e1e7e47001d32f91ec0ce8d7bc1b618d9f0bd9/starlette-0.41.2.tar.gz", hash = "sha256:9834fd799d1a87fd346deb76158668cfa0b0d56f85caefe8268e2d97c3468b62", size = 2573867, upload-time = "2024-10-27T08:20:02.818Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/b8/73a0e6a6e079a9d9cfa64113d771e421640b6f679a52eeb9b32f72d871a1/starlette-0.50.0.tar.gz", hash = "sha256:a2a17b22203254bcbc2e1f926d2d55f3f9497f769416b3190768befe598fa3ca", size = 2646985, upload-time = "2025-11-01T15:25:27.516Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/43/f185bfd0ca1d213beb4293bed51d92254df23d8ceaf6c0e17146d508a776/starlette-0.41.2-py3-none-any.whl", hash = "sha256:fbc189474b4731cf30fcef52f18a8d070e3f3b46c6a04c97579e85e6ffca942d", size = 73259, upload-time = "2024-10-27T08:20:00.052Z" }, + { url = "https://files.pythonhosted.org/packages/d9/52/1064f510b141bd54025f9b55105e26d1fa970b9be67ad766380a3c9b74b0/starlette-0.50.0-py3-none-any.whl", hash = "sha256:9e5391843ec9b6e472eed1365a78c8098cfceb7a74bfd4d6b1c0c0095efb3bca", size = 74033, upload-time = "2025-11-01T15:25:25.461Z" }, ] [[package]] @@ -3147,36 +2767,76 @@ wheels = [ [[package]] name = "tokenizers" -version = "0.22.1" +version = "0.21.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "huggingface-hub" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1c/46/fb6854cec3278fbfa4a75b50232c77622bc517ac886156e6afbfa4d8fc6e/tokenizers-0.22.1.tar.gz", hash = "sha256:61de6522785310a309b3407bac22d99c4db5dba349935e99e4d15ea2226af2d9", size = 363123, upload-time = "2025-09-19T09:49:23.424Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c2/2f/402986d0823f8d7ca139d969af2917fefaa9b947d1fb32f6168c509f2492/tokenizers-0.21.4.tar.gz", hash = "sha256:fa23f85fbc9a02ec5c6978da172cdcbac23498c3ca9f3645c5c68740ac007880", size = 351253, upload-time = "2025-07-28T15:48:54.325Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/33/f4b2d94ada7ab297328fc671fed209368ddb82f965ec2224eb1892674c3a/tokenizers-0.22.1-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:59fdb013df17455e5f950b4b834a7b3ee2e0271e6378ccb33aa74d178b513c73", size = 3069318, upload-time = "2025-09-19T09:49:11.848Z" }, - { url = "https://files.pythonhosted.org/packages/1c/58/2aa8c874d02b974990e89ff95826a4852a8b2a273c7d1b4411cdd45a4565/tokenizers-0.22.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:8d4e484f7b0827021ac5f9f71d4794aaef62b979ab7608593da22b1d2e3c4edc", size = 2926478, upload-time = "2025-09-19T09:49:09.759Z" }, - { url = "https://files.pythonhosted.org/packages/1e/3b/55e64befa1e7bfea963cf4b787b2cea1011362c4193f5477047532ce127e/tokenizers-0.22.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19d2962dd28bc67c1f205ab180578a78eef89ac60ca7ef7cbe9635a46a56422a", size = 3256994, upload-time = "2025-09-19T09:48:56.701Z" }, - { url = "https://files.pythonhosted.org/packages/71/0b/fbfecf42f67d9b7b80fde4aabb2b3110a97fac6585c9470b5bff103a80cb/tokenizers-0.22.1-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:38201f15cdb1f8a6843e6563e6e79f4abd053394992b9bbdf5213ea3469b4ae7", size = 3153141, upload-time = "2025-09-19T09:48:59.749Z" }, - { url = "https://files.pythonhosted.org/packages/17/a9/b38f4e74e0817af8f8ef925507c63c6ae8171e3c4cb2d5d4624bf58fca69/tokenizers-0.22.1-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d1cbe5454c9a15df1b3443c726063d930c16f047a3cc724b9e6e1a91140e5a21", size = 3508049, upload-time = "2025-09-19T09:49:05.868Z" }, - { url = "https://files.pythonhosted.org/packages/d2/48/dd2b3dac46bb9134a88e35d72e1aa4869579eacc1a27238f1577270773ff/tokenizers-0.22.1-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e7d094ae6312d69cc2a872b54b91b309f4f6fbce871ef28eb27b52a98e4d0214", size = 3710730, upload-time = "2025-09-19T09:49:01.832Z" }, - { url = "https://files.pythonhosted.org/packages/93/0e/ccabc8d16ae4ba84a55d41345207c1e2ea88784651a5a487547d80851398/tokenizers-0.22.1-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:afd7594a56656ace95cdd6df4cca2e4059d294c5cfb1679c57824b605556cb2f", size = 3412560, upload-time = "2025-09-19T09:49:03.867Z" }, - { url = "https://files.pythonhosted.org/packages/d0/c6/dc3a0db5a6766416c32c034286d7c2d406da1f498e4de04ab1b8959edd00/tokenizers-0.22.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2ef6063d7a84994129732b47e7915e8710f27f99f3a3260b8a38fc7ccd083f4", size = 3250221, upload-time = "2025-09-19T09:49:07.664Z" }, - { url = "https://files.pythonhosted.org/packages/d7/a6/2c8486eef79671601ff57b093889a345dd3d576713ef047776015dc66de7/tokenizers-0.22.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ba0a64f450b9ef412c98f6bcd2a50c6df6e2443b560024a09fa6a03189726879", size = 9345569, upload-time = "2025-09-19T09:49:14.214Z" }, - { url = "https://files.pythonhosted.org/packages/6b/16/32ce667f14c35537f5f605fe9bea3e415ea1b0a646389d2295ec348d5657/tokenizers-0.22.1-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:331d6d149fa9c7d632cde4490fb8bbb12337fa3a0232e77892be656464f4b446", size = 9271599, upload-time = "2025-09-19T09:49:16.639Z" }, - { url = "https://files.pythonhosted.org/packages/51/7c/a5f7898a3f6baa3fc2685c705e04c98c1094c523051c805cdd9306b8f87e/tokenizers-0.22.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:607989f2ea68a46cb1dfbaf3e3aabdf3f21d8748312dbeb6263d1b3b66c5010a", size = 9533862, upload-time = "2025-09-19T09:49:19.146Z" }, - { url = "https://files.pythonhosted.org/packages/36/65/7e75caea90bc73c1dd8d40438adf1a7bc26af3b8d0a6705ea190462506e1/tokenizers-0.22.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a0f307d490295717726598ef6fa4f24af9d484809223bbc253b201c740a06390", size = 9681250, upload-time = "2025-09-19T09:49:21.501Z" }, - { url = "https://files.pythonhosted.org/packages/30/2c/959dddef581b46e6209da82df3b78471e96260e2bc463f89d23b1bf0e52a/tokenizers-0.22.1-cp39-abi3-win32.whl", hash = "sha256:b5120eed1442765cd90b903bb6cfef781fd8fe64e34ccaecbae4c619b7b12a82", size = 2472003, upload-time = "2025-09-19T09:49:27.089Z" }, - { url = "https://files.pythonhosted.org/packages/b3/46/e33a8c93907b631a99377ef4c5f817ab453d0b34f93529421f42ff559671/tokenizers-0.22.1-cp39-abi3-win_amd64.whl", hash = "sha256:65fd6e3fb11ca1e78a6a93602490f134d1fdeb13bcef99389d5102ea318ed138", size = 2674684, upload-time = "2025-09-19T09:49:24.953Z" }, + { url = "https://files.pythonhosted.org/packages/98/c6/fdb6f72bf6454f52eb4a2510be7fb0f614e541a2554d6210e370d85efff4/tokenizers-0.21.4-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:2ccc10a7c3bcefe0f242867dc914fc1226ee44321eb618cfe3019b5df3400133", size = 2863987, upload-time = "2025-07-28T15:48:44.877Z" }, + { url = "https://files.pythonhosted.org/packages/8d/a6/28975479e35ddc751dc1ddc97b9b69bf7fcf074db31548aab37f8116674c/tokenizers-0.21.4-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:5e2f601a8e0cd5be5cc7506b20a79112370b9b3e9cb5f13f68ab11acd6ca7d60", size = 2732457, upload-time = "2025-07-28T15:48:43.265Z" }, + { url = "https://files.pythonhosted.org/packages/aa/8f/24f39d7b5c726b7b0be95dca04f344df278a3fe3a4deb15a975d194cbb32/tokenizers-0.21.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39b376f5a1aee67b4d29032ee85511bbd1b99007ec735f7f35c8a2eb104eade5", size = 3012624, upload-time = "2025-07-28T13:22:43.895Z" }, + { url = "https://files.pythonhosted.org/packages/58/47/26358925717687a58cb74d7a508de96649544fad5778f0cd9827398dc499/tokenizers-0.21.4-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2107ad649e2cda4488d41dfd031469e9da3fcbfd6183e74e4958fa729ffbf9c6", size = 2939681, upload-time = "2025-07-28T13:22:47.499Z" }, + { url = "https://files.pythonhosted.org/packages/99/6f/cc300fea5db2ab5ddc2c8aea5757a27b89c84469899710c3aeddc1d39801/tokenizers-0.21.4-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c73012da95afafdf235ba80047699df4384fdc481527448a078ffd00e45a7d9", size = 3247445, upload-time = "2025-07-28T15:48:39.711Z" }, + { url = "https://files.pythonhosted.org/packages/be/bf/98cb4b9c3c4afd8be89cfa6423704337dc20b73eb4180397a6e0d456c334/tokenizers-0.21.4-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f23186c40395fc390d27f519679a58023f368a0aad234af145e0f39ad1212732", size = 3428014, upload-time = "2025-07-28T13:22:49.569Z" }, + { url = "https://files.pythonhosted.org/packages/75/c7/96c1cc780e6ca7f01a57c13235dd05b7bc1c0f3588512ebe9d1331b5f5ae/tokenizers-0.21.4-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc88bb34e23a54cc42713d6d98af5f1bf79c07653d24fe984d2d695ba2c922a2", size = 3193197, upload-time = "2025-07-28T13:22:51.471Z" }, + { url = "https://files.pythonhosted.org/packages/f2/90/273b6c7ec78af547694eddeea9e05de771278bd20476525ab930cecaf7d8/tokenizers-0.21.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51b7eabb104f46c1c50b486520555715457ae833d5aee9ff6ae853d1130506ff", size = 3115426, upload-time = "2025-07-28T15:48:41.439Z" }, + { url = "https://files.pythonhosted.org/packages/91/43/c640d5a07e95f1cf9d2c92501f20a25f179ac53a4f71e1489a3dcfcc67ee/tokenizers-0.21.4-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:714b05b2e1af1288bd1bc56ce496c4cebb64a20d158ee802887757791191e6e2", size = 9089127, upload-time = "2025-07-28T15:48:46.472Z" }, + { url = "https://files.pythonhosted.org/packages/44/a1/dd23edd6271d4dca788e5200a807b49ec3e6987815cd9d0a07ad9c96c7c2/tokenizers-0.21.4-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:1340ff877ceedfa937544b7d79f5b7becf33a4cfb58f89b3b49927004ef66f78", size = 9055243, upload-time = "2025-07-28T15:48:48.539Z" }, + { url = "https://files.pythonhosted.org/packages/21/2b/b410d6e9021c4b7ddb57248304dc817c4d4970b73b6ee343674914701197/tokenizers-0.21.4-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:3c1f4317576e465ac9ef0d165b247825a2a4078bcd01cba6b54b867bdf9fdd8b", size = 9298237, upload-time = "2025-07-28T15:48:50.443Z" }, + { url = "https://files.pythonhosted.org/packages/b7/0a/42348c995c67e2e6e5c89ffb9cfd68507cbaeb84ff39c49ee6e0a6dd0fd2/tokenizers-0.21.4-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:c212aa4e45ec0bb5274b16b6f31dd3f1c41944025c2358faaa5782c754e84c24", size = 9461980, upload-time = "2025-07-28T15:48:52.325Z" }, + { url = "https://files.pythonhosted.org/packages/3d/d3/dacccd834404cd71b5c334882f3ba40331ad2120e69ded32cf5fda9a7436/tokenizers-0.21.4-cp39-abi3-win32.whl", hash = "sha256:6c42a930bc5f4c47f4ea775c91de47d27910881902b0f20e4990ebe045a415d0", size = 2329871, upload-time = "2025-07-28T15:48:56.841Z" }, + { url = "https://files.pythonhosted.org/packages/41/f2/fd673d979185f5dcbac4be7d09461cbb99751554ffb6718d0013af8604cb/tokenizers-0.21.4-cp39-abi3-win_amd64.whl", hash = "sha256:475d807a5c3eb72c59ad9b5fcdb254f6e17f53dfcbb9903233b0dfa9c943b597", size = 2507568, upload-time = "2025-07-28T15:48:55.456Z" }, ] [[package]] name = "tomli" -version = "2.0.1" +version = "2.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c0/3f/d7af728f075fb08564c5949a9c95e44352e23dee646869fa104a3b2060a3/tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f", size = 15164, upload-time = "2022-02-08T10:54:04.006Z" } +sdist = { url = "https://files.pythonhosted.org/packages/52/ed/3f73f72945444548f33eba9a87fc7a6e969915e7b1acc8260b30e1f76a2f/tomli-2.3.0.tar.gz", hash = "sha256:64be704a875d2a59753d80ee8a533c3fe183e3f06807ff7dc2232938ccb01549", size = 17392, upload-time = "2025-10-08T22:01:47.119Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", size = 12757, upload-time = "2022-02-08T10:54:02.017Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2e/299f62b401438d5fe1624119c723f5d877acc86a4c2492da405626665f12/tomli-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:88bd15eb972f3664f5ed4b57c1634a97153b4bac4479dcb6a495f41921eb7f45", size = 153236, upload-time = "2025-10-08T22:01:00.137Z" }, + { url = "https://files.pythonhosted.org/packages/86/7f/d8fffe6a7aefdb61bced88fcb5e280cfd71e08939da5894161bd71bea022/tomli-2.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:883b1c0d6398a6a9d29b508c331fa56adbcdff647f6ace4dfca0f50e90dfd0ba", size = 148084, upload-time = "2025-10-08T22:01:01.63Z" }, + { url = "https://files.pythonhosted.org/packages/47/5c/24935fb6a2ee63e86d80e4d3b58b222dafaf438c416752c8b58537c8b89a/tomli-2.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d1381caf13ab9f300e30dd8feadb3de072aeb86f1d34a8569453ff32a7dea4bf", size = 234832, upload-time = "2025-10-08T22:01:02.543Z" }, + { url = "https://files.pythonhosted.org/packages/89/da/75dfd804fc11e6612846758a23f13271b76d577e299592b4371a4ca4cd09/tomli-2.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0e285d2649b78c0d9027570d4da3425bdb49830a6156121360b3f8511ea3441", size = 242052, upload-time = "2025-10-08T22:01:03.836Z" }, + { url = "https://files.pythonhosted.org/packages/70/8c/f48ac899f7b3ca7eb13af73bacbc93aec37f9c954df3c08ad96991c8c373/tomli-2.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a154a9ae14bfcf5d8917a59b51ffd5a3ac1fd149b71b47a3a104ca4edcfa845", size = 239555, upload-time = "2025-10-08T22:01:04.834Z" }, + { url = "https://files.pythonhosted.org/packages/ba/28/72f8afd73f1d0e7829bfc093f4cb98ce0a40ffc0cc997009ee1ed94ba705/tomli-2.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:74bf8464ff93e413514fefd2be591c3b0b23231a77f901db1eb30d6f712fc42c", size = 245128, upload-time = "2025-10-08T22:01:05.84Z" }, + { url = "https://files.pythonhosted.org/packages/b6/eb/a7679c8ac85208706d27436e8d421dfa39d4c914dcf5fa8083a9305f58d9/tomli-2.3.0-cp311-cp311-win32.whl", hash = "sha256:00b5f5d95bbfc7d12f91ad8c593a1659b6387b43f054104cda404be6bda62456", size = 96445, upload-time = "2025-10-08T22:01:06.896Z" }, + { url = "https://files.pythonhosted.org/packages/0a/fe/3d3420c4cb1ad9cb462fb52967080575f15898da97e21cb6f1361d505383/tomli-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:4dc4ce8483a5d429ab602f111a93a6ab1ed425eae3122032db7e9acf449451be", size = 107165, upload-time = "2025-10-08T22:01:08.107Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b7/40f36368fcabc518bb11c8f06379a0fd631985046c038aca08c6d6a43c6e/tomli-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d7d86942e56ded512a594786a5ba0a5e521d02529b3826e7761a05138341a2ac", size = 154891, upload-time = "2025-10-08T22:01:09.082Z" }, + { url = "https://files.pythonhosted.org/packages/f9/3f/d9dd692199e3b3aab2e4e4dd948abd0f790d9ded8cd10cbaae276a898434/tomli-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:73ee0b47d4dad1c5e996e3cd33b8a76a50167ae5f96a2607cbe8cc773506ab22", size = 148796, upload-time = "2025-10-08T22:01:10.266Z" }, + { url = "https://files.pythonhosted.org/packages/60/83/59bff4996c2cf9f9387a0f5a3394629c7efa5ef16142076a23a90f1955fa/tomli-2.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:792262b94d5d0a466afb5bc63c7daa9d75520110971ee269152083270998316f", size = 242121, upload-time = "2025-10-08T22:01:11.332Z" }, + { url = "https://files.pythonhosted.org/packages/45/e5/7c5119ff39de8693d6baab6c0b6dcb556d192c165596e9fc231ea1052041/tomli-2.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f195fe57ecceac95a66a75ac24d9d5fbc98ef0962e09b2eddec5d39375aae52", size = 250070, upload-time = "2025-10-08T22:01:12.498Z" }, + { url = "https://files.pythonhosted.org/packages/45/12/ad5126d3a278f27e6701abde51d342aa78d06e27ce2bb596a01f7709a5a2/tomli-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e31d432427dcbf4d86958c184b9bfd1e96b5b71f8eb17e6d02531f434fd335b8", size = 245859, upload-time = "2025-10-08T22:01:13.551Z" }, + { url = "https://files.pythonhosted.org/packages/fb/a1/4d6865da6a71c603cfe6ad0e6556c73c76548557a8d658f9e3b142df245f/tomli-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b0882799624980785240ab732537fcfc372601015c00f7fc367c55308c186f6", size = 250296, upload-time = "2025-10-08T22:01:14.614Z" }, + { url = "https://files.pythonhosted.org/packages/a0/b7/a7a7042715d55c9ba6e8b196d65d2cb662578b4d8cd17d882d45322b0d78/tomli-2.3.0-cp312-cp312-win32.whl", hash = "sha256:ff72b71b5d10d22ecb084d345fc26f42b5143c5533db5e2eaba7d2d335358876", size = 97124, upload-time = "2025-10-08T22:01:15.629Z" }, + { url = "https://files.pythonhosted.org/packages/06/1e/f22f100db15a68b520664eb3328fb0ae4e90530887928558112c8d1f4515/tomli-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:1cb4ed918939151a03f33d4242ccd0aa5f11b3547d0cf30f7c74a408a5b99878", size = 107698, upload-time = "2025-10-08T22:01:16.51Z" }, + { url = "https://files.pythonhosted.org/packages/89/48/06ee6eabe4fdd9ecd48bf488f4ac783844fd777f547b8d1b61c11939974e/tomli-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5192f562738228945d7b13d4930baffda67b69425a7f0da96d360b0a3888136b", size = 154819, upload-time = "2025-10-08T22:01:17.964Z" }, + { url = "https://files.pythonhosted.org/packages/f1/01/88793757d54d8937015c75dcdfb673c65471945f6be98e6a0410fba167ed/tomli-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:be71c93a63d738597996be9528f4abe628d1adf5e6eb11607bc8fe1a510b5dae", size = 148766, upload-time = "2025-10-08T22:01:18.959Z" }, + { url = "https://files.pythonhosted.org/packages/42/17/5e2c956f0144b812e7e107f94f1cc54af734eb17b5191c0bbfb72de5e93e/tomli-2.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4665508bcbac83a31ff8ab08f424b665200c0e1e645d2bd9ab3d3e557b6185b", size = 240771, upload-time = "2025-10-08T22:01:20.106Z" }, + { url = "https://files.pythonhosted.org/packages/d5/f4/0fbd014909748706c01d16824eadb0307115f9562a15cbb012cd9b3512c5/tomli-2.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4021923f97266babc6ccab9f5068642a0095faa0a51a246a6a02fccbb3514eaf", size = 248586, upload-time = "2025-10-08T22:01:21.164Z" }, + { url = "https://files.pythonhosted.org/packages/30/77/fed85e114bde5e81ecf9bc5da0cc69f2914b38f4708c80ae67d0c10180c5/tomli-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4ea38c40145a357d513bffad0ed869f13c1773716cf71ccaa83b0fa0cc4e42f", size = 244792, upload-time = "2025-10-08T22:01:22.417Z" }, + { url = "https://files.pythonhosted.org/packages/55/92/afed3d497f7c186dc71e6ee6d4fcb0acfa5f7d0a1a2878f8beae379ae0cc/tomli-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ad805ea85eda330dbad64c7ea7a4556259665bdf9d2672f5dccc740eb9d3ca05", size = 248909, upload-time = "2025-10-08T22:01:23.859Z" }, + { url = "https://files.pythonhosted.org/packages/f8/84/ef50c51b5a9472e7265ce1ffc7f24cd4023d289e109f669bdb1553f6a7c2/tomli-2.3.0-cp313-cp313-win32.whl", hash = "sha256:97d5eec30149fd3294270e889b4234023f2c69747e555a27bd708828353ab606", size = 96946, upload-time = "2025-10-08T22:01:24.893Z" }, + { url = "https://files.pythonhosted.org/packages/b2/b7/718cd1da0884f281f95ccfa3a6cc572d30053cba64603f79d431d3c9b61b/tomli-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0c95ca56fbe89e065c6ead5b593ee64b84a26fca063b5d71a1122bf26e533999", size = 107705, upload-time = "2025-10-08T22:01:26.153Z" }, + { url = "https://files.pythonhosted.org/packages/19/94/aeafa14a52e16163008060506fcb6aa1949d13548d13752171a755c65611/tomli-2.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cebc6fe843e0733ee827a282aca4999b596241195f43b4cc371d64fc6639da9e", size = 154244, upload-time = "2025-10-08T22:01:27.06Z" }, + { url = "https://files.pythonhosted.org/packages/db/e4/1e58409aa78eefa47ccd19779fc6f36787edbe7d4cd330eeeedb33a4515b/tomli-2.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4c2ef0244c75aba9355561272009d934953817c49f47d768070c3c94355c2aa3", size = 148637, upload-time = "2025-10-08T22:01:28.059Z" }, + { url = "https://files.pythonhosted.org/packages/26/b6/d1eccb62f665e44359226811064596dd6a366ea1f985839c566cd61525ae/tomli-2.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c22a8bf253bacc0cf11f35ad9808b6cb75ada2631c2d97c971122583b129afbc", size = 241925, upload-time = "2025-10-08T22:01:29.066Z" }, + { url = "https://files.pythonhosted.org/packages/70/91/7cdab9a03e6d3d2bb11beae108da5bdc1c34bdeb06e21163482544ddcc90/tomli-2.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0eea8cc5c5e9f89c9b90c4896a8deefc74f518db5927d0e0e8d4a80953d774d0", size = 249045, upload-time = "2025-10-08T22:01:31.98Z" }, + { url = "https://files.pythonhosted.org/packages/15/1b/8c26874ed1f6e4f1fcfeb868db8a794cbe9f227299402db58cfcc858766c/tomli-2.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b74a0e59ec5d15127acdabd75ea17726ac4c5178ae51b85bfe39c4f8a278e879", size = 245835, upload-time = "2025-10-08T22:01:32.989Z" }, + { url = "https://files.pythonhosted.org/packages/fd/42/8e3c6a9a4b1a1360c1a2a39f0b972cef2cc9ebd56025168c4137192a9321/tomli-2.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b5870b50c9db823c595983571d1296a6ff3e1b88f734a4c8f6fc6188397de005", size = 253109, upload-time = "2025-10-08T22:01:34.052Z" }, + { url = "https://files.pythonhosted.org/packages/22/0c/b4da635000a71b5f80130937eeac12e686eefb376b8dee113b4a582bba42/tomli-2.3.0-cp314-cp314-win32.whl", hash = "sha256:feb0dacc61170ed7ab602d3d972a58f14ee3ee60494292d384649a3dc38ef463", size = 97930, upload-time = "2025-10-08T22:01:35.082Z" }, + { url = "https://files.pythonhosted.org/packages/b9/74/cb1abc870a418ae99cd5c9547d6bce30701a954e0e721821df483ef7223c/tomli-2.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:b273fcbd7fc64dc3600c098e39136522650c49bca95df2d11cf3b626422392c8", size = 107964, upload-time = "2025-10-08T22:01:36.057Z" }, + { url = "https://files.pythonhosted.org/packages/54/78/5c46fff6432a712af9f792944f4fcd7067d8823157949f4e40c56b8b3c83/tomli-2.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:940d56ee0410fa17ee1f12b817b37a4d4e4dc4d27340863cc67236c74f582e77", size = 163065, upload-time = "2025-10-08T22:01:37.27Z" }, + { url = "https://files.pythonhosted.org/packages/39/67/f85d9bd23182f45eca8939cd2bc7050e1f90c41f4a2ecbbd5963a1d1c486/tomli-2.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f85209946d1fe94416debbb88d00eb92ce9cd5266775424ff81bc959e001acaf", size = 159088, upload-time = "2025-10-08T22:01:38.235Z" }, + { url = "https://files.pythonhosted.org/packages/26/5a/4b546a0405b9cc0659b399f12b6adb750757baf04250b148d3c5059fc4eb/tomli-2.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a56212bdcce682e56b0aaf79e869ba5d15a6163f88d5451cbde388d48b13f530", size = 268193, upload-time = "2025-10-08T22:01:39.712Z" }, + { url = "https://files.pythonhosted.org/packages/42/4f/2c12a72ae22cf7b59a7fe75b3465b7aba40ea9145d026ba41cb382075b0e/tomli-2.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c5f3ffd1e098dfc032d4d3af5c0ac64f6d286d98bc148698356847b80fa4de1b", size = 275488, upload-time = "2025-10-08T22:01:40.773Z" }, + { url = "https://files.pythonhosted.org/packages/92/04/a038d65dbe160c3aa5a624e93ad98111090f6804027d474ba9c37c8ae186/tomli-2.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5e01decd096b1530d97d5d85cb4dff4af2d8347bd35686654a004f8dea20fc67", size = 272669, upload-time = "2025-10-08T22:01:41.824Z" }, + { url = "https://files.pythonhosted.org/packages/be/2f/8b7c60a9d1612a7cbc39ffcca4f21a73bf368a80fc25bccf8253e2563267/tomli-2.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:8a35dd0e643bb2610f156cca8db95d213a90015c11fee76c946aa62b7ae7e02f", size = 279709, upload-time = "2025-10-08T22:01:43.177Z" }, + { url = "https://files.pythonhosted.org/packages/7e/46/cc36c679f09f27ded940281c38607716c86cf8ba4a518d524e349c8b4874/tomli-2.3.0-cp314-cp314t-win32.whl", hash = "sha256:a1f7f282fe248311650081faafa5f4732bdbfef5d45fe3f2e702fbc6f2d496e0", size = 107563, upload-time = "2025-10-08T22:01:44.233Z" }, + { url = "https://files.pythonhosted.org/packages/84/ff/426ca8683cf7b753614480484f6437f568fd2fda2edbdf57a2d3d8b27a0b/tomli-2.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:70a251f8d4ba2d9ac2542eecf008b3c8a9fc5c3f9f02c56a9d7952612be2fdba", size = 119756, upload-time = "2025-10-08T22:01:45.234Z" }, + { url = "https://files.pythonhosted.org/packages/77/b8/0135fadc89e73be292b473cb820b4f5a08197779206b33191e801feeae40/tomli-2.3.0-py3-none-any.whl", hash = "sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b", size = 14408, upload-time = "2025-10-08T22:01:46.04Z" }, ] [[package]] @@ -3193,23 +2853,23 @@ wheels = [ [[package]] name = "types-pyyaml" -version = "6.0.12.20250915" +version = "6.0.12.20250822" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7e/69/3c51b36d04da19b92f9e815be12753125bd8bc247ba0470a982e6979e71c/types_pyyaml-6.0.12.20250915.tar.gz", hash = "sha256:0f8b54a528c303f0e6f7165687dd33fafa81c807fcac23f632b63aa624ced1d3", size = 17522, upload-time = "2025-09-15T03:01:00.728Z" } +sdist = { url = "https://files.pythonhosted.org/packages/49/85/90a442e538359ab5c9e30de415006fb22567aa4301c908c09f19e42975c2/types_pyyaml-6.0.12.20250822.tar.gz", hash = "sha256:259f1d93079d335730a9db7cff2bcaf65d7e04b4a56b5927d49a612199b59413", size = 17481, upload-time = "2025-08-22T03:02:16.209Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/e0/1eed384f02555dde685fff1a1ac805c1c7dcb6dd019c916fe659b1c1f9ec/types_pyyaml-6.0.12.20250915-py3-none-any.whl", hash = "sha256:e7d4d9e064e89a3b3cae120b4990cd370874d2bf12fa5f46c97018dd5d3c9ab6", size = 20338, upload-time = "2025-09-15T03:00:59.218Z" }, + { url = "https://files.pythonhosted.org/packages/32/8e/8f0aca667c97c0d76024b37cffa39e76e2ce39ca54a38f285a64e6ae33ba/types_pyyaml-6.0.12.20250822-py3-none-any.whl", hash = "sha256:1fe1a5e146aa315483592d292b72a172b65b946a6d98aa6ddd8e4aa838ab7098", size = 20314, upload-time = "2025-08-22T03:02:15.002Z" }, ] [[package]] name = "types-requests" -version = "2.32.4.20250913" +version = "2.32.4.20250809" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/36/27/489922f4505975b11de2b5ad07b4fe1dca0bca9be81a703f26c5f3acfce5/types_requests-2.32.4.20250913.tar.gz", hash = "sha256:abd6d4f9ce3a9383f269775a9835a4c24e5cd6b9f647d64f88aa4613c33def5d", size = 23113, upload-time = "2025-09-13T02:40:02.309Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/b0/9355adb86ec84d057fea765e4c49cce592aaf3d5117ce5609a95a7fc3dac/types_requests-2.32.4.20250809.tar.gz", hash = "sha256:d8060de1c8ee599311f56ff58010fb4902f462a1470802cf9f6ed27bc46c4df3", size = 23027, upload-time = "2025-08-09T03:17:10.664Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/20/9a227ea57c1285986c4cf78400d0a91615d25b24e257fd9e2969606bdfae/types_requests-2.32.4.20250913-py3-none-any.whl", hash = "sha256:78c9c1fffebbe0fa487a418e0fa5252017e9c60d1a2da394077f1780f655d7e1", size = 20658, upload-time = "2025-09-13T02:40:01.115Z" }, + { url = "https://files.pythonhosted.org/packages/2b/6f/ec0012be842b1d888d46884ac5558fd62aeae1f0ec4f7a581433d890d4b5/types_requests-2.32.4.20250809-py3-none-any.whl", hash = "sha256:f73d1832fb519ece02c85b1f09d5f0dd3108938e7d47e7f94bbfa18a6782b163", size = 20644, upload-time = "2025-08-09T03:17:09.716Z" }, ] [[package]] @@ -3241,46 +2901,45 @@ wheels = [ [[package]] name = "typing-extensions" -version = "4.15.0" +version = "4.12.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321, upload-time = "2024-06-07T18:52:15.995Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, + { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438, upload-time = "2024-06-07T18:52:13.582Z" }, ] [[package]] name = "typing-inspection" -version = "0.4.2" +version = "0.4.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } +sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222, upload-time = "2025-02-25T17:27:59.638Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, + { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125, upload-time = "2025-02-25T17:27:57.754Z" }, ] [[package]] name = "urllib3" -version = "2.1.0" +version = "2.6.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/36/dd/a6b232f449e1bc71802a5b7950dc3675d32c6dbc2a1bd6d71f065551adb6/urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54", size = 263900, upload-time = "2023-11-13T12:29:45.049Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1e/24/a2a2ed9addd907787d7aa0355ba36a6cadf1768b934c652ea78acbd59dcd/urllib3-2.6.2.tar.gz", hash = "sha256:016f9c98bb7e98085cb2b4b17b87d2c702975664e4f060c6532e64d1c1a5e797", size = 432930, upload-time = "2025-12-11T15:56:40.252Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/94/c31f58c7a7f470d5665935262ebd7455c7e4c7782eb525658d3dbf4b9403/urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3", size = 104579, upload-time = "2023-11-13T12:29:42.719Z" }, + { url = "https://files.pythonhosted.org/packages/6d/b9/4095b668ea3678bf6a0af005527f39de12fb026516fb3df17495a733b7f8/urllib3-2.6.2-py3-none-any.whl", hash = "sha256:ec21cddfe7724fc7cb4ba4bea7aa8e2ef36f607a4bab81aa6ce42a13dc3f03dd", size = 131182, upload-time = "2025-12-11T15:56:38.584Z" }, ] [[package]] name = "uvicorn" -version = "0.38.0" +version = "0.35.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, { name = "h11" }, - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cb/ce/f06b84e2697fef4688ca63bdb2fdf113ca0a3be33f94488f2cadb690b0cf/uvicorn-0.38.0.tar.gz", hash = "sha256:fd97093bdd120a2609fc0d3afe931d4d4ad688b6e75f0f929fde1bc36fe0e91d", size = 80605, upload-time = "2025-10-18T13:46:44.63Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/42/e0e305207bb88c6b8d3061399c6a961ffe5fbb7e2aa63c9234df7259e9cd/uvicorn-0.35.0.tar.gz", hash = "sha256:bc662f087f7cf2ce11a1d7fd70b90c9f98ef2e2831556dd078d131b96cc94a01", size = 78473, upload-time = "2025-06-28T16:15:46.058Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/d9/d88e73ca598f4f6ff671fb5fde8a32925c2e08a637303a1d12883c7305fa/uvicorn-0.38.0-py3-none-any.whl", hash = "sha256:48c0afd214ceb59340075b4a052ea1ee91c16fbc2a9b1469cca0e54566977b02", size = 68109, upload-time = "2025-10-18T13:46:42.958Z" }, + { url = "https://files.pythonhosted.org/packages/d2/e2/dc81b1bd1dcfe91735810265e9d26bc8ec5da45b4c0f6237e286819194c3/uvicorn-0.35.0-py3-none-any.whl", hash = "sha256:197535216b25ff9b785e29a0b79199f55222193d47f820816e7da751e9bc8d4a", size = 66406, upload-time = "2025-06-28T16:15:44.816Z" }, ] [package.optional-dependencies] @@ -3296,28 +2955,40 @@ standard = [ [[package]] name = "uvloop" -version = "0.19.0" +version = "0.22.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9c/16/728cc5dde368e6eddb299c5aec4d10eaf25335a5af04e8c0abd68e2e9d32/uvloop-0.19.0.tar.gz", hash = "sha256:0246f4fd1bf2bf702e06b0d45ee91677ee5c31242f39aab4ea6fe0c51aedd0fd", size = 2318492, upload-time = "2023-10-22T22:03:57.665Z" } +sdist = { url = "https://files.pythonhosted.org/packages/06/f0/18d39dbd1971d6d62c4629cc7fa67f74821b0dc1f5a77af43719de7936a7/uvloop-0.22.1.tar.gz", hash = "sha256:6c84bae345b9147082b17371e3dd5d42775bddce91f885499017f4607fdaf39f", size = 2443250, upload-time = "2025-10-16T22:17:19.342Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/36/c2/27bf858a576b1fa35b5c2c2029c8cec424a8789e87545ed2f25466d1f21d/uvloop-0.19.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de4313d7f575474c8f5a12e163f6d89c0a878bc49219641d49e6f1444369a90e", size = 1443484, upload-time = "2023-10-22T22:02:54.169Z" }, - { url = "https://files.pythonhosted.org/packages/4e/35/05b6064b93f4113412d1fd92bdcb6018607e78ae94d1712e63e533f9b2fa/uvloop-0.19.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5588bd21cf1fcf06bded085f37e43ce0e00424197e7c10e77afd4bbefffef428", size = 793850, upload-time = "2023-10-22T22:02:56.311Z" }, - { url = "https://files.pythonhosted.org/packages/aa/56/b62ab4e10458ce96bb30c98d327c127f989d3bb4ef899e4c410c739f7ef6/uvloop-0.19.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b1fd71c3843327f3bbc3237bedcdb6504fd50368ab3e04d0410e52ec293f5b8", size = 3418601, upload-time = "2023-10-22T22:02:58.717Z" }, - { url = "https://files.pythonhosted.org/packages/ab/ed/12729fba5e3b7e02ee70b3ea230b88e60a50375cf63300db22607694d2f0/uvloop-0.19.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a05128d315e2912791de6088c34136bfcdd0c7cbc1cf85fd6fd1bb321b7c849", size = 3416731, upload-time = "2023-10-22T22:03:01.043Z" }, - { url = "https://files.pythonhosted.org/packages/a2/23/80381a2d728d2a0c36e2eef202f5b77428990004d8fbdd3865558ff49fa5/uvloop-0.19.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cd81bdc2b8219cb4b2556eea39d2e36bfa375a2dd021404f90a62e44efaaf957", size = 4128572, upload-time = "2023-10-22T22:03:02.874Z" }, - { url = "https://files.pythonhosted.org/packages/6b/23/1ee41a15e1ad15182e2bd12cbfd37bcb6802f01d6bbcaddf6ca136cbb308/uvloop-0.19.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5f17766fb6da94135526273080f3455a112f82570b2ee5daa64d682387fe0dcd", size = 4129235, upload-time = "2023-10-22T22:03:05.361Z" }, - { url = "https://files.pythonhosted.org/packages/41/2a/608ad69f27f51280098abee440c33e921d3ad203e2c86f7262e241e49c99/uvloop-0.19.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4ce6b0af8f2729a02a5d1575feacb2a94fc7b2e983868b009d51c9a9d2149bef", size = 1357681, upload-time = "2023-10-22T22:03:07.158Z" }, - { url = "https://files.pythonhosted.org/packages/13/00/d0923d66d80c8717983493a4d7af747ce47f1c2147d82df057a846ba6bff/uvloop-0.19.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:31e672bb38b45abc4f26e273be83b72a0d28d074d5b370fc4dcf4c4eb15417d2", size = 746421, upload-time = "2023-10-22T22:03:09.4Z" }, - { url = "https://files.pythonhosted.org/packages/1f/c7/e494c367b0c6e6453f9bed5a78548f5b2ff49add36302cd915a91d347d88/uvloop-0.19.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:570fc0ed613883d8d30ee40397b79207eedd2624891692471808a95069a007c1", size = 3481000, upload-time = "2023-10-22T22:03:11.755Z" }, - { url = "https://files.pythonhosted.org/packages/86/cc/1829b3f740e4cb1baefff8240a1c6fc8db9e3caac7b93169aec7d4386069/uvloop-0.19.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5138821e40b0c3e6c9478643b4660bd44372ae1e16a322b8fc07478f92684e24", size = 3476361, upload-time = "2023-10-22T22:03:13.841Z" }, - { url = "https://files.pythonhosted.org/packages/7a/4c/ca87e8f5a30629ffa2038c20907c8ab455c5859ff10e810227b76e60d927/uvloop-0.19.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:91ab01c6cd00e39cde50173ba4ec68a1e578fee9279ba64f5221810a9e786533", size = 4169571, upload-time = "2023-10-22T22:03:15.618Z" }, - { url = "https://files.pythonhosted.org/packages/d2/a9/f947a00c47b1c87c937cac2423243a41ba08f0fb76d04eb0d1d170606e0a/uvloop-0.19.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:47bf3e9312f63684efe283f7342afb414eea4d3011542155c7e625cd799c3b12", size = 4170459, upload-time = "2023-10-22T22:03:17.988Z" }, - { url = "https://files.pythonhosted.org/packages/85/57/6736733bb0e86a4b5380d04082463b289c0baecaa205934ba81e8a1d5ea4/uvloop-0.19.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:da8435a3bd498419ee8c13c34b89b5005130a476bda1d6ca8cfdde3de35cd650", size = 1355376, upload-time = "2023-10-22T22:03:20.075Z" }, - { url = "https://files.pythonhosted.org/packages/eb/0c/51339463da912ed34b48d470538d98a91660749b2db56902f23db9b42fdd/uvloop-0.19.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:02506dc23a5d90e04d4f65c7791e65cf44bd91b37f24cfc3ef6cf2aff05dc7ec", size = 745031, upload-time = "2023-10-22T22:03:21.404Z" }, - { url = "https://files.pythonhosted.org/packages/e6/fc/f0daaf19f5b2116a2d26eb9f98c4a45084aea87bf03c33bcca7aa1ff36e5/uvloop-0.19.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2693049be9d36fef81741fddb3f441673ba12a34a704e7b4361efb75cf30befc", size = 4077630, upload-time = "2023-10-22T22:03:23.568Z" }, - { url = "https://files.pythonhosted.org/packages/fd/96/fdc318ffe82ae567592b213ec2fcd8ecedd927b5da068cf84d56b28c51a4/uvloop-0.19.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7010271303961c6f0fe37731004335401eb9075a12680738731e9c92ddd96ad6", size = 4159957, upload-time = "2023-10-22T22:03:25.278Z" }, - { url = "https://files.pythonhosted.org/packages/71/bc/092068ae7fc16dcf20f3e389126ba7800cee75ffba83f78bf1d167aee3cd/uvloop-0.19.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5daa304d2161d2918fa9a17d5635099a2f78ae5b5960e742b2fcfbb7aefaa593", size = 4014951, upload-time = "2023-10-22T22:03:27.055Z" }, - { url = "https://files.pythonhosted.org/packages/a6/f2/6ce1e73933eb038c89f929e26042e64b2cb8d4453410153eed14918ca9a8/uvloop-0.19.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7207272c9520203fea9b93843bb775d03e1cf88a80a936ce760f60bb5add92f3", size = 4100911, upload-time = "2023-10-22T22:03:29.39Z" }, + { url = "https://files.pythonhosted.org/packages/c7/d5/69900f7883235562f1f50d8184bb7dd84a2fb61e9ec63f3782546fdbd057/uvloop-0.22.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c60ebcd36f7b240b30788554b6f0782454826a0ed765d8430652621b5de674b9", size = 1352420, upload-time = "2025-10-16T22:16:21.187Z" }, + { url = "https://files.pythonhosted.org/packages/a8/73/c4e271b3bce59724e291465cc936c37758886a4868787da0278b3b56b905/uvloop-0.22.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b7f102bf3cb1995cfeaee9321105e8f5da76fdb104cdad8986f85461a1b7b77", size = 748677, upload-time = "2025-10-16T22:16:22.558Z" }, + { url = "https://files.pythonhosted.org/packages/86/94/9fb7fad2f824d25f8ecac0d70b94d0d48107ad5ece03769a9c543444f78a/uvloop-0.22.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53c85520781d84a4b8b230e24a5af5b0778efdb39142b424990ff1ef7c48ba21", size = 3753819, upload-time = "2025-10-16T22:16:23.903Z" }, + { url = "https://files.pythonhosted.org/packages/74/4f/256aca690709e9b008b7108bc85fba619a2bc37c6d80743d18abad16ee09/uvloop-0.22.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:56a2d1fae65fd82197cb8c53c367310b3eabe1bbb9fb5a04d28e3e3520e4f702", size = 3804529, upload-time = "2025-10-16T22:16:25.246Z" }, + { url = "https://files.pythonhosted.org/packages/7f/74/03c05ae4737e871923d21a76fe28b6aad57f5c03b6e6bfcfa5ad616013e4/uvloop-0.22.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40631b049d5972c6755b06d0bfe8233b1bd9a8a6392d9d1c45c10b6f9e9b2733", size = 3621267, upload-time = "2025-10-16T22:16:26.819Z" }, + { url = "https://files.pythonhosted.org/packages/75/be/f8e590fe61d18b4a92070905497aec4c0e64ae1761498cad09023f3f4b3e/uvloop-0.22.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:535cc37b3a04f6cd2c1ef65fa1d370c9a35b6695df735fcff5427323f2cd5473", size = 3723105, upload-time = "2025-10-16T22:16:28.252Z" }, + { url = "https://files.pythonhosted.org/packages/3d/ff/7f72e8170be527b4977b033239a83a68d5c881cc4775fca255c677f7ac5d/uvloop-0.22.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:fe94b4564e865d968414598eea1a6de60adba0c040ba4ed05ac1300de402cd42", size = 1359936, upload-time = "2025-10-16T22:16:29.436Z" }, + { url = "https://files.pythonhosted.org/packages/c3/c6/e5d433f88fd54d81ef4be58b2b7b0cea13c442454a1db703a1eea0db1a59/uvloop-0.22.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:51eb9bd88391483410daad430813d982010f9c9c89512321f5b60e2cddbdddd6", size = 752769, upload-time = "2025-10-16T22:16:30.493Z" }, + { url = "https://files.pythonhosted.org/packages/24/68/a6ac446820273e71aa762fa21cdcc09861edd3536ff47c5cd3b7afb10eeb/uvloop-0.22.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:700e674a166ca5778255e0e1dc4e9d79ab2acc57b9171b79e65feba7184b3370", size = 4317413, upload-time = "2025-10-16T22:16:31.644Z" }, + { url = "https://files.pythonhosted.org/packages/5f/6f/e62b4dfc7ad6518e7eff2516f680d02a0f6eb62c0c212e152ca708a0085e/uvloop-0.22.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b5b1ac819a3f946d3b2ee07f09149578ae76066d70b44df3fa990add49a82e4", size = 4426307, upload-time = "2025-10-16T22:16:32.917Z" }, + { url = "https://files.pythonhosted.org/packages/90/60/97362554ac21e20e81bcef1150cb2a7e4ffdaf8ea1e5b2e8bf7a053caa18/uvloop-0.22.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e047cc068570bac9866237739607d1313b9253c3051ad84738cbb095be0537b2", size = 4131970, upload-time = "2025-10-16T22:16:34.015Z" }, + { url = "https://files.pythonhosted.org/packages/99/39/6b3f7d234ba3964c428a6e40006340f53ba37993f46ed6e111c6e9141d18/uvloop-0.22.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:512fec6815e2dd45161054592441ef76c830eddaad55c8aa30952e6fe1ed07c0", size = 4296343, upload-time = "2025-10-16T22:16:35.149Z" }, + { url = "https://files.pythonhosted.org/packages/89/8c/182a2a593195bfd39842ea68ebc084e20c850806117213f5a299dfc513d9/uvloop-0.22.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:561577354eb94200d75aca23fbde86ee11be36b00e52a4eaf8f50fb0c86b7705", size = 1358611, upload-time = "2025-10-16T22:16:36.833Z" }, + { url = "https://files.pythonhosted.org/packages/d2/14/e301ee96a6dc95224b6f1162cd3312f6d1217be3907b79173b06785f2fe7/uvloop-0.22.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cdf5192ab3e674ca26da2eada35b288d2fa49fdd0f357a19f0e7c4e7d5077c8", size = 751811, upload-time = "2025-10-16T22:16:38.275Z" }, + { url = "https://files.pythonhosted.org/packages/b7/02/654426ce265ac19e2980bfd9ea6590ca96a56f10c76e63801a2df01c0486/uvloop-0.22.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e2ea3d6190a2968f4a14a23019d3b16870dd2190cd69c8180f7c632d21de68d", size = 4288562, upload-time = "2025-10-16T22:16:39.375Z" }, + { url = "https://files.pythonhosted.org/packages/15/c0/0be24758891ef825f2065cd5db8741aaddabe3e248ee6acc5e8a80f04005/uvloop-0.22.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0530a5fbad9c9e4ee3f2b33b148c6a64d47bbad8000ea63704fa8260f4cf728e", size = 4366890, upload-time = "2025-10-16T22:16:40.547Z" }, + { url = "https://files.pythonhosted.org/packages/d2/53/8369e5219a5855869bcee5f4d317f6da0e2c669aecf0ef7d371e3d084449/uvloop-0.22.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bc5ef13bbc10b5335792360623cc378d52d7e62c2de64660616478c32cd0598e", size = 4119472, upload-time = "2025-10-16T22:16:41.694Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ba/d69adbe699b768f6b29a5eec7b47dd610bd17a69de51b251126a801369ea/uvloop-0.22.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1f38ec5e3f18c8a10ded09742f7fb8de0108796eb673f30ce7762ce1b8550cad", size = 4239051, upload-time = "2025-10-16T22:16:43.224Z" }, + { url = "https://files.pythonhosted.org/packages/90/cd/b62bdeaa429758aee8de8b00ac0dd26593a9de93d302bff3d21439e9791d/uvloop-0.22.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3879b88423ec7e97cd4eba2a443aa26ed4e59b45e6b76aabf13fe2f27023a142", size = 1362067, upload-time = "2025-10-16T22:16:44.503Z" }, + { url = "https://files.pythonhosted.org/packages/0d/f8/a132124dfda0777e489ca86732e85e69afcd1ff7686647000050ba670689/uvloop-0.22.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4baa86acedf1d62115c1dc6ad1e17134476688f08c6efd8a2ab076e815665c74", size = 752423, upload-time = "2025-10-16T22:16:45.968Z" }, + { url = "https://files.pythonhosted.org/packages/a3/94/94af78c156f88da4b3a733773ad5ba0b164393e357cc4bd0ab2e2677a7d6/uvloop-0.22.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:297c27d8003520596236bdb2335e6b3f649480bd09e00d1e3a99144b691d2a35", size = 4272437, upload-time = "2025-10-16T22:16:47.451Z" }, + { url = "https://files.pythonhosted.org/packages/b5/35/60249e9fd07b32c665192cec7af29e06c7cd96fa1d08b84f012a56a0b38e/uvloop-0.22.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c1955d5a1dd43198244d47664a5858082a3239766a839b2102a269aaff7a4e25", size = 4292101, upload-time = "2025-10-16T22:16:49.318Z" }, + { url = "https://files.pythonhosted.org/packages/02/62/67d382dfcb25d0a98ce73c11ed1a6fba5037a1a1d533dcbb7cab033a2636/uvloop-0.22.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b31dc2fccbd42adc73bc4e7cdbae4fc5086cf378979e53ca5d0301838c5682c6", size = 4114158, upload-time = "2025-10-16T22:16:50.517Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/f1171b4a882a5d13c8b7576f348acfe6074d72eaf52cccef752f748d4a9f/uvloop-0.22.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:93f617675b2d03af4e72a5333ef89450dfaa5321303ede6e67ba9c9d26878079", size = 4177360, upload-time = "2025-10-16T22:16:52.646Z" }, + { url = "https://files.pythonhosted.org/packages/79/7b/b01414f31546caf0919da80ad57cbfe24c56b151d12af68cee1b04922ca8/uvloop-0.22.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:37554f70528f60cad66945b885eb01f1bb514f132d92b6eeed1c90fd54ed6289", size = 1454790, upload-time = "2025-10-16T22:16:54.355Z" }, + { url = "https://files.pythonhosted.org/packages/d4/31/0bb232318dd838cad3fa8fb0c68c8b40e1145b32025581975e18b11fab40/uvloop-0.22.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:b76324e2dc033a0b2f435f33eb88ff9913c156ef78e153fb210e03c13da746b3", size = 796783, upload-time = "2025-10-16T22:16:55.906Z" }, + { url = "https://files.pythonhosted.org/packages/42/38/c9b09f3271a7a723a5de69f8e237ab8e7803183131bc57c890db0b6bb872/uvloop-0.22.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:badb4d8e58ee08dad957002027830d5c3b06aea446a6a3744483c2b3b745345c", size = 4647548, upload-time = "2025-10-16T22:16:57.008Z" }, + { url = "https://files.pythonhosted.org/packages/c1/37/945b4ca0ac27e3dc4952642d4c900edd030b3da6c9634875af6e13ae80e5/uvloop-0.22.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b91328c72635f6f9e0282e4a57da7470c7350ab1c9f48546c0f2866205349d21", size = 4467065, upload-time = "2025-10-16T22:16:58.206Z" }, + { url = "https://files.pythonhosted.org/packages/97/cc/48d232f33d60e2e2e0b42f4e73455b146b76ebe216487e862700457fbf3c/uvloop-0.22.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:daf620c2995d193449393d6c62131b3fbd40a63bf7b307a1527856ace637fe88", size = 4328384, upload-time = "2025-10-16T22:16:59.36Z" }, + { url = "https://files.pythonhosted.org/packages/e4/16/c1fd27e9549f3c4baf1dc9c20c456cd2f822dbf8de9f463824b0c0357e06/uvloop-0.22.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6cde23eeda1a25c75b2e07d39970f3374105d5eafbaab2a4482be82f272d5a5e", size = 4296730, upload-time = "2025-10-16T22:17:00.744Z" }, ] [[package]] @@ -3329,18 +3000,6 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/66/79/0ee412e1228aaf6f9568aa180b43cb482472de52560fbd7c283c786534af/watchfiles-0.21.0.tar.gz", hash = "sha256:c76c635fabf542bb78524905718c39f736a98e5ab25b23ec6d4abede1a85a6a3", size = 37098, upload-time = "2023-10-13T13:06:39.809Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6e/85/ea2a035b7d86bf0a29ee1c32bc2df8ad4da77e6602806e679d9735ff28cb/watchfiles-0.21.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:27b4035013f1ea49c6c0b42d983133b136637a527e48c132d368eb19bf1ac6aa", size = 428182, upload-time = "2023-10-13T13:04:34.803Z" }, - { url = "https://files.pythonhosted.org/packages/b5/e5/240e5eb3ff0ee3da3b028ac5be2019c407bdd0f3fdb02bd75fdf3bd10aff/watchfiles-0.21.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c81818595eff6e92535ff32825f31c116f867f64ff8cdf6562cd1d6b2e1e8f3e", size = 418275, upload-time = "2023-10-13T13:04:36.632Z" }, - { url = "https://files.pythonhosted.org/packages/5b/79/ecd0dfb04443a1900cd3952d7ea6493bf655c2db9a0d3736a5d98a15da39/watchfiles-0.21.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6c107ea3cf2bd07199d66f156e3ea756d1b84dfd43b542b2d870b77868c98c03", size = 1379785, upload-time = "2023-10-13T13:04:38.641Z" }, - { url = "https://files.pythonhosted.org/packages/41/0e/3333b986b1889bb71f0e44b3fac0591824a679619b8b8ddd70ff8858edc4/watchfiles-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d9ac347653ebd95839a7c607608703b20bc07e577e870d824fa4801bc1cb124", size = 1349374, upload-time = "2023-10-13T13:04:41.711Z" }, - { url = "https://files.pythonhosted.org/packages/18/c4/ad5ad16cad900a29aaa792e0ed121ff70d76f74062b051661090d88c6dfd/watchfiles-0.21.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5eb86c6acb498208e7663ca22dbe68ca2cf42ab5bf1c776670a50919a56e64ab", size = 1348033, upload-time = "2023-10-13T13:04:43.324Z" }, - { url = "https://files.pythonhosted.org/packages/4e/d2/769254ff04ba88ceb179a6e892606ac4da17338eb010e85ca7a9c3339234/watchfiles-0.21.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303", size = 1464393, upload-time = "2023-10-13T13:04:44.818Z" }, - { url = "https://files.pythonhosted.org/packages/14/d0/662800e778ca20e7664dd5df57751aa79ef18b6abb92224b03c8c2e852a6/watchfiles-0.21.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d0f32ebfaa9c6011f8454994f86108c2eb9c79b8b7de00b36d558cadcedaa3d", size = 1542953, upload-time = "2023-10-13T13:04:46.714Z" }, - { url = "https://files.pythonhosted.org/packages/f7/4b/b90dcdc3bbaf3bb2db733e1beea2d01566b601c15fcf8e71dfcc8686c097/watchfiles-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6d45d9b699ecbac6c7bd8e0a2609767491540403610962968d258fd6405c17c", size = 1346961, upload-time = "2023-10-13T13:04:48.072Z" }, - { url = "https://files.pythonhosted.org/packages/92/ff/75cc1b30c5abcad13a2a72e75625ec619c7a393028a111d7d24dba578d5e/watchfiles-0.21.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:aff06b2cac3ef4616e26ba17a9c250c1fe9dd8a5d907d0193f84c499b1b6e6a9", size = 1464393, upload-time = "2023-10-13T13:04:49.638Z" }, - { url = "https://files.pythonhosted.org/packages/9a/65/12cbeb363bf220482a559c48107edfd87f09248f55e1ac315a36c2098a0f/watchfiles-0.21.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d9792dff410f266051025ecfaa927078b94cc7478954b06796a9756ccc7e14a9", size = 1463409, upload-time = "2023-10-13T13:04:51.762Z" }, - { url = "https://files.pythonhosted.org/packages/f2/08/92e28867c66f0d9638bb131feca739057efc48dbcd391fd7f0a55507e470/watchfiles-0.21.0-cp310-none-win32.whl", hash = "sha256:214cee7f9e09150d4fb42e24919a1e74d8c9b8a9306ed1474ecaddcd5479c293", size = 268101, upload-time = "2023-10-13T13:04:53.78Z" }, - { url = "https://files.pythonhosted.org/packages/4b/ea/80527adf1ad51488a96fc201715730af5879f4dfeccb5e2069ff82d890d4/watchfiles-0.21.0-cp310-none-win_amd64.whl", hash = "sha256:1ad7247d79f9f55bb25ab1778fd47f32d70cf36053941f07de0b7c4e96b5d235", size = 279675, upload-time = "2023-10-13T13:04:55.113Z" }, { url = "https://files.pythonhosted.org/packages/57/b9/2667286003dd305b81d3a3aa824d3dfc63dacbf2a96faae09e72d953c430/watchfiles-0.21.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:668c265d90de8ae914f860d3eeb164534ba2e836811f91fecc7050416ee70aa7", size = 428210, upload-time = "2023-10-13T13:04:56.894Z" }, { url = "https://files.pythonhosted.org/packages/a3/87/6793ac60d2e20c9c1883aec7431c2e7b501ee44a839f6da1b747c13baa23/watchfiles-0.21.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a23092a992e61c3a6a70f350a56db7197242f3490da9c87b500f389b2d01eef", size = 418196, upload-time = "2023-10-13T13:04:58.19Z" }, { url = "https://files.pythonhosted.org/packages/5d/12/e1d1d220c5b99196eea38c9a878964f30a2b55ec9d72fd713191725b35e8/watchfiles-0.21.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e7941bbcfdded9c26b0bf720cb7e6fd803d95a55d2c14b4bd1f6a2772230c586", size = 1380287, upload-time = "2023-10-13T13:04:59.923Z" }, @@ -3367,10 +3026,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/77/e4/8d2b3c67364671b0e1c0ce383895a5415f45ecb3e8586982deff4a8e85c9/watchfiles-0.21.0-cp312-none-win32.whl", hash = "sha256:9d09869f2c5a6f2d9df50ce3064b3391d3ecb6dced708ad64467b9e4f2c9bef3", size = 266789, upload-time = "2023-10-13T13:05:35.606Z" }, { url = "https://files.pythonhosted.org/packages/da/f2/6b1de38aeb21eb9dac1ae6a1ee4521566e79690117032036c737cfab52fa/watchfiles-0.21.0-cp312-none-win_amd64.whl", hash = "sha256:18722b50783b5e30a18a8a5db3006bab146d2b705c92eb9a94f78c72beb94094", size = 280292, upload-time = "2023-10-13T13:05:37.357Z" }, { url = "https://files.pythonhosted.org/packages/5a/a5/7aba9435beb863c2490bae3173a45f42044ac7a48155d3dd42ab49cfae45/watchfiles-0.21.0-cp312-none-win_arm64.whl", hash = "sha256:a3b9bec9579a15fb3ca2d9878deae789df72f2b0fdaf90ad49ee389cad5edab6", size = 268026, upload-time = "2023-10-13T13:05:38.591Z" }, - { url = "https://files.pythonhosted.org/packages/62/66/7463ceb43eabc6deaa795c7969ff4d4fd938de54e655035483dfd1e97c84/watchfiles-0.21.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:ab03a90b305d2588e8352168e8c5a1520b721d2d367f31e9332c4235b30b8994", size = 429092, upload-time = "2023-10-13T13:06:21.419Z" }, - { url = "https://files.pythonhosted.org/packages/fe/a3/42686af3a089f34aba35c39abac852869661938dae7025c1a0580dfe0fbf/watchfiles-0.21.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:927c589500f9f41e370b0125c12ac9e7d3a2fd166b89e9ee2828b3dda20bfe6f", size = 419188, upload-time = "2023-10-13T13:06:22.934Z" }, - { url = "https://files.pythonhosted.org/packages/37/17/4825999346f15d650f4c69093efa64fb040fbff4f706a20e8c4745f64070/watchfiles-0.21.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bd467213195e76f838caf2c28cd65e58302d0254e636e7c0fca81efa4a2e62c", size = 1350366, upload-time = "2023-10-13T13:06:24.254Z" }, - { url = "https://files.pythonhosted.org/packages/70/76/8d124e14cf51af4d6bba926c7473f253c6efd1539ba62577f079a2d71537/watchfiles-0.21.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02b73130687bc3f6bb79d8a170959042eb56eb3a42df3671c79b428cd73f17cc", size = 1346270, upload-time = "2023-10-13T13:06:25.742Z" }, ] [[package]] @@ -3397,17 +3052,6 @@ version = "12.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/2e/62/7a7874b7285413c954a4cca3c11fd851f11b2fe5b4ae2d9bee4f6d9bdb10/websockets-12.0.tar.gz", hash = "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b", size = 104994, upload-time = "2023-10-21T14:21:11.88Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/b9/360b86ded0920a93bff0db4e4b0aa31370b0208ca240b2e98d62aad8d082/websockets-12.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374", size = 124025, upload-time = "2023-10-21T14:19:28.387Z" }, - { url = "https://files.pythonhosted.org/packages/bb/d3/1eca0d8fb6f0665c96f0dc7c0d0ec8aa1a425e8c003e0c18e1451f65d177/websockets-12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2d225bb6886591b1746b17c0573e29804619c8f755b5598d875bb4235ea639be", size = 121261, upload-time = "2023-10-21T14:19:30.203Z" }, - { url = "https://files.pythonhosted.org/packages/4e/e1/f6c3ecf7f1bfd9209e13949db027d7fdea2faf090c69b5f2d17d1d796d96/websockets-12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eb809e816916a3b210bed3c82fb88eaf16e8afcf9c115ebb2bacede1797d2547", size = 121328, upload-time = "2023-10-21T14:19:31.765Z" }, - { url = "https://files.pythonhosted.org/packages/74/4d/f88eeceb23cb587c4aeca779e3f356cf54817af2368cb7f2bd41f93c8360/websockets-12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c588f6abc13f78a67044c6b1273a99e1cf31038ad51815b3b016ce699f0d75c2", size = 130925, upload-time = "2023-10-21T14:19:33.36Z" }, - { url = "https://files.pythonhosted.org/packages/16/17/f63d9ee6ffd9afbeea021d5950d6e8db84cd4aead306c6c2ca523805699e/websockets-12.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5aa9348186d79a5f232115ed3fa9020eab66d6c3437d72f9d2c8ac0c6858c558", size = 129930, upload-time = "2023-10-21T14:19:35.109Z" }, - { url = "https://files.pythonhosted.org/packages/9a/12/c7a7504f5bf74d6ee0533f6fc7d30d8f4b79420ab179d1df2484b07602eb/websockets-12.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6350b14a40c95ddd53e775dbdbbbc59b124a5c8ecd6fbb09c2e52029f7a9f480", size = 130245, upload-time = "2023-10-21T14:19:36.761Z" }, - { url = "https://files.pythonhosted.org/packages/e4/6a/3600c7771eb31116d2e77383d7345618b37bb93709d041e328c08e2a8eb3/websockets-12.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:70ec754cc2a769bcd218ed8d7209055667b30860ffecb8633a834dde27d6307c", size = 134966, upload-time = "2023-10-21T14:19:38.481Z" }, - { url = "https://files.pythonhosted.org/packages/22/26/df77c4b7538caebb78c9b97f43169ef742a4f445e032a5ea1aaef88f8f46/websockets-12.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e96f5ed1b83a8ddb07909b45bd94833b0710f738115751cdaa9da1fb0cb66e8", size = 134196, upload-time = "2023-10-21T14:19:40.264Z" }, - { url = "https://files.pythonhosted.org/packages/e5/18/18ce9a4a08203c8d0d3d561e3ea4f453daf32f099601fc831e60c8a9b0f2/websockets-12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4d87be612cbef86f994178d5186add3d94e9f31cc3cb499a0482b866ec477603", size = 134822, upload-time = "2023-10-21T14:19:41.836Z" }, - { url = "https://files.pythonhosted.org/packages/45/51/1f823a341fc20a880e67ae62f6c38c4880a24a4b60fbe544a38f516f39a1/websockets-12.0-cp310-cp310-win32.whl", hash = "sha256:befe90632d66caaf72e8b2ed4d7f02b348913813c8b0a32fae1cc5fe3730902f", size = 124454, upload-time = "2023-10-21T14:19:43.639Z" }, - { url = "https://files.pythonhosted.org/packages/41/b0/5ec054cfcf23adfc88d39359b85e81d043af8a141e3ac8ce40f45a5ce5f4/websockets-12.0-cp310-cp310-win_amd64.whl", hash = "sha256:363f57ca8bc8576195d0540c648aa58ac18cf85b76ad5202b9f976918f4219cf", size = 124974, upload-time = "2023-10-21T14:19:44.934Z" }, { url = "https://files.pythonhosted.org/packages/02/73/9c1e168a2e7fdf26841dc98f5f5502e91dea47428da7690a08101f616169/websockets-12.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4", size = 124047, upload-time = "2023-10-21T14:19:46.519Z" }, { url = "https://files.pythonhosted.org/packages/e4/2d/9a683359ad2ed11b2303a7a94800db19c61d33fa3bde271df09e99936022/websockets-12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f", size = 121282, upload-time = "2023-10-21T14:19:47.739Z" }, { url = "https://files.pythonhosted.org/packages/95/aa/75fa3b893142d6d98a48cb461169bd268141f2da8bfca97392d6462a02eb/websockets-12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3", size = 121325, upload-time = "2023-10-21T14:19:49.4Z" }, @@ -3430,11 +3074,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3c/98/1261f289dff7e65a38d59d2f591de6ed0a2580b729aebddec033c4d10881/websockets-12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9fdf06fd06c32205a07e47328ab49c40fc1407cdec801d698a7c41167ea45113", size = 136083, upload-time = "2023-10-21T14:20:13.451Z" }, { url = "https://files.pythonhosted.org/packages/a9/1c/f68769fba63ccb9c13fe0a25b616bd5aebeef1c7ddebc2ccc32462fb784d/websockets-12.0-cp312-cp312-win32.whl", hash = "sha256:baa386875b70cbd81798fa9f71be689c1bf484f65fd6fb08d051a0ee4e79924d", size = 124460, upload-time = "2023-10-21T14:20:14.719Z" }, { url = "https://files.pythonhosted.org/packages/20/52/8915f51f9aaef4e4361c89dd6cf69f72a0159f14e0d25026c81b6ad22525/websockets-12.0-cp312-cp312-win_amd64.whl", hash = "sha256:ae0a5da8f35a5be197f328d4727dbcfafa53d1824fac3d96cdd3a642fe09394f", size = 124985, upload-time = "2023-10-21T14:20:15.817Z" }, - { url = "https://files.pythonhosted.org/packages/43/8b/554a8a8bb6da9dd1ce04c44125e2192af7b7beebf6e3dbfa5d0e285cc20f/websockets-12.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:248d8e2446e13c1d4326e0a6a4e9629cb13a11195051a73acf414812700badbd", size = 121110, upload-time = "2023-10-21T14:20:48.335Z" }, - { url = "https://files.pythonhosted.org/packages/b0/8e/58b8812940d746ad74d395fb069497255cb5ef50748dfab1e8b386b1f339/websockets-12.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44069528d45a933997a6fef143030d8ca8042f0dfaad753e2906398290e2870", size = 123216, upload-time = "2023-10-21T14:20:50.083Z" }, - { url = "https://files.pythonhosted.org/packages/81/ee/272cb67ace1786ce6d9f39d47b3c55b335e8b75dd1972a7967aad39178b6/websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c4e37d36f0d19f0a4413d3e18c0d03d0c268ada2061868c1e6f5ab1a6d575077", size = 122821, upload-time = "2023-10-21T14:20:51.237Z" }, - { url = "https://files.pythonhosted.org/packages/a8/03/387fc902b397729df166763e336f4e5cec09fe7b9d60f442542c94a21be1/websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d829f975fc2e527a3ef2f9c8f25e553eb7bc779c6665e8e1d52aa22800bb38b", size = 122768, upload-time = "2023-10-21T14:20:52.59Z" }, - { url = "https://files.pythonhosted.org/packages/50/f0/5939fbc9bc1979d79a774ce5b7c4b33c0cefe99af22fb70f7462d0919640/websockets-12.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2c71bd45a777433dd9113847af751aae36e448bc6b8c361a566cb043eda6ec30", size = 125009, upload-time = "2023-10-21T14:20:54.419Z" }, { url = "https://files.pythonhosted.org/packages/79/4d/9cc401e7b07e80532ebc8c8e993f42541534da9e9249c59ee0139dcb0352/websockets-12.0-py3-none-any.whl", hash = "sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e", size = 118370, upload-time = "2023-10-21T14:21:10.075Z" }, ] @@ -3483,12 +3122,6 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/87/03/6b85c1df2dca1b9acca38b423d1e226d8ffdf30ebd78bcb398c511de8b54/zope.interface-6.1.tar.gz", hash = "sha256:2fdc7ccbd6eb6b7df5353012fbed6c3c5d04ceaca0038f75e601060e95345309", size = 293914, upload-time = "2023-10-05T11:24:38.943Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/ec/c1e7ce928dc10bfe02c6da7e964342d941aaf168f96f8084636167ea50d2/zope.interface-6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:43b576c34ef0c1f5a4981163b551a8781896f2a37f71b8655fd20b5af0386abb", size = 202417, upload-time = "2023-10-05T11:24:25.141Z" }, - { url = "https://files.pythonhosted.org/packages/f7/0b/12f269ad049fc40a7a3ab85445d7855b6bc6f1e774c5ca9dd6f5c32becb3/zope.interface-6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:67be3ca75012c6e9b109860820a8b6c9a84bfb036fbd1076246b98e56951ca92", size = 202528, upload-time = "2023-10-05T11:24:27.336Z" }, - { url = "https://files.pythonhosted.org/packages/7f/85/3a35144509eb4a5a2208b48ae8d116a969d67de62cc6513d85602144d9cd/zope.interface-6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b9bc671626281f6045ad61d93a60f52fd5e8209b1610972cf0ef1bbe6d808e3", size = 247532, upload-time = "2023-10-05T11:49:20.587Z" }, - { url = "https://files.pythonhosted.org/packages/50/d6/6176aaa1f6588378f5a5a4a9c6ad50a36824e902b2f844ca8de7f1b0c4a7/zope.interface-6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbe81def9cf3e46f16ce01d9bfd8bea595e06505e51b7baf45115c77352675fd", size = 241703, upload-time = "2023-10-05T11:25:33.542Z" }, - { url = "https://files.pythonhosted.org/packages/4f/20/94d4f221989b4bbdd09004b2afb329958e776b7015b7ea8bc915327e195a/zope.interface-6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dc998f6de015723196a904045e5a2217f3590b62ea31990672e31fbc5370b41", size = 247078, upload-time = "2023-10-05T11:25:48.235Z" }, - { url = "https://files.pythonhosted.org/packages/97/7e/b790b4ab9605010816a91df26a715f163e228d60eb36c947c3118fb65190/zope.interface-6.1-cp310-cp310-win_amd64.whl", hash = "sha256:239a4a08525c080ff833560171d23b249f7f4d17fcbf9316ef4159f44997616f", size = 204155, upload-time = "2023-10-05T11:37:56.715Z" }, { url = "https://files.pythonhosted.org/packages/4a/0b/1d8817b8a3631384a26ff7faa4c1f3e6726f7e4950c3442721cfef2c95eb/zope.interface-6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9ffdaa5290422ac0f1688cb8adb1b94ca56cee3ad11f29f2ae301df8aecba7d1", size = 202441, upload-time = "2023-10-05T11:24:20.414Z" }, { url = "https://files.pythonhosted.org/packages/3e/1f/43557bb2b6e8537002a5a26af9b899171e26ddfcdf17a00ff729b00c036b/zope.interface-6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:34c15ca9248f2e095ef2e93af2d633358c5f048c49fbfddf5fdfc47d5e263736", size = 202530, upload-time = "2023-10-05T11:24:22.975Z" }, { url = "https://files.pythonhosted.org/packages/37/a1/5d2b265f4b7371630cad5873d0873965e35ca3de993d11b9336c720f7259/zope.interface-6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b012d023b4fb59183909b45d7f97fb493ef7a46d2838a5e716e3155081894605", size = 249584, upload-time = "2023-10-05T11:49:22.978Z" }, diff --git a/misc/release/pump-version.sh b/misc/release/pump-version.sh index 2dc772ca91..deca397081 100755 --- a/misc/release/pump-version.sh +++ b/misc/release/pump-version.sh @@ -90,6 +90,7 @@ fi sed -i "s/\"android\.injected\.version\.name\" => \"$CURRENT_SERVER\",/\"android\.injected\.version\.name\" => \"$NEXT_SERVER\",/" mobile/android/fastlane/Fastfile sed -i "s/\"android\.injected\.version\.code\" => $CURRENT_MOBILE,/\"android\.injected\.version\.code\" => $NEXT_MOBILE,/" mobile/android/fastlane/Fastfile sed -i "s/^version: $CURRENT_SERVER+$CURRENT_MOBILE$/version: $NEXT_SERVER+$NEXT_MOBILE/" mobile/pubspec.yaml +perl -i -p0e "s/(CFBundleShortVersionString<\/key>\s*)$CURRENT_SERVER(<\/string>)/\${1}$NEXT_SERVER\${2}/s" mobile/ios/Runner/Info.plist ./misc/release/archive-version.js "$NEXT_SERVER" diff --git a/mise.toml b/mise.toml index 0b61f3c26a..a4f597662a 100644 --- a/mise.toml +++ b/mise.toml @@ -1,9 +1,9 @@ experimental_monorepo_root = true [tools] -node = "24.11.1" +node = "24.12.0" flutter = "3.35.7" -pnpm = "10.24.0" +pnpm = "10.27.0" terragrunt = "0.93.10" opentofu = "1.10.7" java = "25.0.1" @@ -34,4 +34,4 @@ run = { task = ":i18n:format-fix" } [tasks."i18n:format-fix"] dir = "i18n" -run = "pnpm dlx sort-json *.json" +run = "pnpm run format:fix" diff --git a/mobile/android/fastlane/Fastfile b/mobile/android/fastlane/Fastfile index b2e6c568c2..b20b29c4ee 100644 --- a/mobile/android/fastlane/Fastfile +++ b/mobile/android/fastlane/Fastfile @@ -35,8 +35,8 @@ platform :android do task: 'bundle', build_type: 'Release', properties: { - "android.injected.version.code" => 3028, - "android.injected.version.name" => "2.3.1", + "android.injected.version.code" => 3030, + "android.injected.version.name" => "2.4.1", } ) upload_to_play_store(skip_upload_apk: true, skip_upload_images: true, skip_upload_screenshots: true, aab: '../build/app/outputs/bundle/release/app-release.aab') diff --git a/mobile/ios/.gitignore b/mobile/ios/.gitignore index f1a46a2fef..63e84080df 100644 --- a/mobile/ios/.gitignore +++ b/mobile/ios/.gitignore @@ -33,4 +33,5 @@ Runner/GeneratedPluginRegistrant.* !default.perspectivev3 fastlane/report.xml -Gemfile.lock \ No newline at end of file +Gemfile.lock +certs/ \ No newline at end of file diff --git a/mobile/ios/Runner/Info.plist b/mobile/ios/Runner/Info.plist index b597912d0f..da52dc95cf 100644 --- a/mobile/ios/Runner/Info.plist +++ b/mobile/ios/Runner/Info.plist @@ -80,7 +80,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 2.2.1 + 2.4.1 CFBundleSignature ???? CFBundleURLTypes diff --git a/mobile/ios/fastlane/Fastfile b/mobile/ios/fastlane/Fastfile index d167d5fb2d..9c31ced00d 100644 --- a/mobile/ios/fastlane/Fastfile +++ b/mobile/ios/fastlane/Fastfile @@ -44,7 +44,7 @@ def get_version_from_pubspec end # Helper method to configure code signing for all targets - def configure_code_signing(bundle_id_suffix: "") + def configure_code_signing(bundle_id_suffix: "", profile_name_main:, profile_name_share:, profile_name_widget:) bundle_suffix = bundle_id_suffix.empty? ? "" : ".#{bundle_id_suffix}" # Runner (main app) @@ -54,7 +54,7 @@ end team_id: ENV["FASTLANE_TEAM_ID"] || TEAM_ID, code_sign_identity: CODE_SIGN_IDENTITY, bundle_identifier: "#{BASE_BUNDLE_ID}#{bundle_suffix}", - profile_name: "#{BASE_BUNDLE_ID}#{bundle_suffix} AppStore", + profile_name: profile_name_main, targets: ["Runner"] ) @@ -65,7 +65,7 @@ end team_id: ENV["FASTLANE_TEAM_ID"] || TEAM_ID, code_sign_identity: CODE_SIGN_IDENTITY, bundle_identifier: "#{BASE_BUNDLE_ID}#{bundle_suffix}.ShareExtension", - profile_name: "#{BASE_BUNDLE_ID}#{bundle_suffix}.ShareExtension AppStore", + profile_name: profile_name_share, targets: ["ShareExtension"] ) @@ -76,7 +76,7 @@ end team_id: ENV["FASTLANE_TEAM_ID"] || TEAM_ID, code_sign_identity: CODE_SIGN_IDENTITY, bundle_identifier: "#{BASE_BUNDLE_ID}#{bundle_suffix}.Widget", - profile_name: "#{BASE_BUNDLE_ID}#{bundle_suffix}.Widget AppStore", + profile_name: profile_name_widget, targets: ["WidgetExtension"] ) end @@ -87,7 +87,10 @@ end bundle_id_suffix: "", configuration: "Release", distribute_external: true, - version_number: nil + version_number: nil, + profile_name_main:, + profile_name_share:, + profile_name_widget: ) bundle_suffix = bundle_id_suffix.empty? ? "" : ".#{bundle_id_suffix}" app_identifier = "#{BASE_BUNDLE_ID}#{bundle_suffix}" @@ -115,9 +118,9 @@ end xcargs: "-skipMacroValidation CODE_SIGN_IDENTITY='#{CODE_SIGN_IDENTITY}' CODE_SIGN_STYLE=Manual", export_options: { provisioningProfiles: { - "#{app_identifier}" => "#{app_identifier} AppStore", - "#{app_identifier}.ShareExtension" => "#{app_identifier}.ShareExtension AppStore", - "#{app_identifier}.Widget" => "#{app_identifier}.Widget AppStore" + "#{app_identifier}" => profile_name_main, + "#{app_identifier}.ShareExtension" => profile_name_share, + "#{app_identifier}.Widget" => profile_name_widget }, signingStyle: "manual", signingCertificate: CODE_SIGN_IDENTITY @@ -136,20 +139,35 @@ end lane :gha_testflight_dev do api_key = get_api_key - # Install development provisioning profiles - install_provisioning_profile(path: "profile_dev.mobileprovision") - install_provisioning_profile(path: "profile_dev_share.mobileprovision") - install_provisioning_profile(path: "profile_dev_widget.mobileprovision") + # Download and install provisioning profiles from App Store Connect + # Certificate is imported by GHA workflow into build.keychain + # Capture profile names after each sigh call + sigh(api_key: api_key, app_identifier: "#{BASE_BUNDLE_ID}.development", force: true) + main_profile_name = lane_context[SharedValues::SIGH_NAME] - # Configure code signing for dev bundle IDs - configure_code_signing(bundle_id_suffix: "development") + sigh(api_key: api_key, app_identifier: "#{BASE_BUNDLE_ID}.development.ShareExtension", force: true) + share_profile_name = lane_context[SharedValues::SIGH_NAME] + + sigh(api_key: api_key, app_identifier: "#{BASE_BUNDLE_ID}.development.Widget", force: true) + widget_profile_name = lane_context[SharedValues::SIGH_NAME] + + # Configure code signing for dev bundle IDs using the downloaded profile names + configure_code_signing( + bundle_id_suffix: "development", + profile_name_main: main_profile_name, + profile_name_share: share_profile_name, + profile_name_widget: widget_profile_name + ) # Build and upload build_and_upload( api_key: api_key, bundle_id_suffix: "development", configuration: "Profile", - distribute_external: false + distribute_external: false, + profile_name_main: main_profile_name, + profile_name_share: share_profile_name, + profile_name_widget: widget_profile_name ) end @@ -157,20 +175,33 @@ end lane :gha_release_prod do api_key = get_api_key - # Install provisioning profiles - install_provisioning_profile(path: "profile.mobileprovision") - install_provisioning_profile(path: "profile_share.mobileprovision") - install_provisioning_profile(path: "profile_widget.mobileprovision") + # Download and install provisioning profiles from App Store Connect + # Certificate is imported by GHA workflow into build.keychain + sigh(api_key: api_key, app_identifier: BASE_BUNDLE_ID, force: true) + main_profile_name = lane_context[SharedValues::SIGH_NAME] + + sigh(api_key: api_key, app_identifier: "#{BASE_BUNDLE_ID}.ShareExtension", force: true) + share_profile_name = lane_context[SharedValues::SIGH_NAME] + + sigh(api_key: api_key, app_identifier: "#{BASE_BUNDLE_ID}.Widget", force: true) + widget_profile_name = lane_context[SharedValues::SIGH_NAME] # Configure code signing for production bundle IDs - configure_code_signing + configure_code_signing( + profile_name_main: main_profile_name, + profile_name_share: share_profile_name, + profile_name_widget: widget_profile_name + ) # Build and upload with version number build_and_upload( api_key: api_key, version_number: get_version_from_pubspec, distribute_external: false, + profile_name_main: main_profile_name, + profile_name_share: share_profile_name, + profile_name_widget: widget_profile_name ) end @@ -215,13 +246,26 @@ end # Use the same build process as production, just skip the upload # This ensures PR builds validate the same way as production builds - # Install provisioning profiles (use development profiles for PR builds) - install_provisioning_profile(path: "profile_dev.mobileprovision") - install_provisioning_profile(path: "profile_dev_share.mobileprovision") - install_provisioning_profile(path: "profile_dev_widget.mobileprovision") + api_key = get_api_key + + # Download and install provisioning profiles from App Store Connect + # Certificate is imported by GHA workflow into build.keychain + sigh(api_key: api_key, app_identifier: "#{BASE_BUNDLE_ID}.development", force: true) + main_profile_name = lane_context[SharedValues::SIGH_NAME] + + sigh(api_key: api_key, app_identifier: "#{BASE_BUNDLE_ID}.development.ShareExtension", force: true) + share_profile_name = lane_context[SharedValues::SIGH_NAME] + + sigh(api_key: api_key, app_identifier: "#{BASE_BUNDLE_ID}.development.Widget", force: true) + widget_profile_name = lane_context[SharedValues::SIGH_NAME] # Configure code signing for dev bundle IDs - configure_code_signing(bundle_id_suffix: "development") + configure_code_signing( + bundle_id_suffix: "development", + profile_name_main: main_profile_name, + profile_name_share: share_profile_name, + profile_name_widget: widget_profile_name + ) # Build the app (same as gha_testflight_dev but without upload) build_app( @@ -233,9 +277,9 @@ end xcargs: "-skipMacroValidation CODE_SIGN_IDENTITY='#{CODE_SIGN_IDENTITY}' CODE_SIGN_STYLE=Manual", export_options: { provisioningProfiles: { - "#{BASE_BUNDLE_ID}.development" => "#{BASE_BUNDLE_ID}.development AppStore", - "#{BASE_BUNDLE_ID}.development.ShareExtension" => "#{BASE_BUNDLE_ID}.development.ShareExtension AppStore", - "#{BASE_BUNDLE_ID}.development.Widget" => "#{BASE_BUNDLE_ID}.development.Widget AppStore" + "#{BASE_BUNDLE_ID}.development" => main_profile_name, + "#{BASE_BUNDLE_ID}.development.ShareExtension" => share_profile_name, + "#{BASE_BUNDLE_ID}.development.Widget" => widget_profile_name }, signingStyle: "manual", signingCertificate: CODE_SIGN_IDENTITY diff --git a/mobile/lib/constants/enums.dart b/mobile/lib/constants/enums.dart index 674b988aa2..c991493dd9 100644 --- a/mobile/lib/constants/enums.dart +++ b/mobile/lib/constants/enums.dart @@ -9,3 +9,7 @@ enum SortUserBy { id } enum ActionSource { timeline, viewer } enum ButtonPosition { bottomBar, kebabMenu, other } + +enum CleanupStep { selectDate, filterOptions, scan, delete } + +enum AssetFilterType { all, photosOnly, videosOnly } diff --git a/mobile/lib/domain/services/asset.service.dart b/mobile/lib/domain/services/asset.service.dart index 3d8fddc9b7..eb78ea0c8e 100644 --- a/mobile/lib/domain/services/asset.service.dart +++ b/mobile/lib/domain/services/asset.service.dart @@ -6,6 +6,8 @@ import 'package:immich_mobile/infrastructure/repositories/local_asset.repository import 'package:immich_mobile/infrastructure/repositories/remote_asset.repository.dart'; import 'package:immich_mobile/infrastructure/utils/exif.converter.dart'; +typedef _AssetVideoDimension = ({double? width, double? height, bool isFlipped}); + class AssetService { final RemoteAssetRepository _remoteAssetRepository; final DriftLocalAssetRepository _localAssetRepository; @@ -58,44 +60,48 @@ class AssetService { } Future getAspectRatio(BaseAsset asset) async { - bool isFlipped; - double? width; - double? height; + final dimension = asset is LocalAsset + ? await _getLocalAssetDimensions(asset) + : await _getRemoteAssetDimensions(asset as RemoteAsset); - if (asset.hasRemote) { - final exif = await getExif(asset); - isFlipped = ExifDtoConverter.isOrientationFlipped(exif?.orientation); - width = asset.width?.toDouble(); - height = asset.height?.toDouble(); - } else if (asset is LocalAsset) { - isFlipped = CurrentPlatform.isAndroid && (asset.orientation == 90 || asset.orientation == 270); - width = asset.width?.toDouble(); - height = asset.height?.toDouble(); - } else { - isFlipped = false; + if (dimension.width == null || dimension.height == null || dimension.height == 0) { + return 1.0; } + return dimension.isFlipped ? dimension.height! / dimension.width! : dimension.width! / dimension.height!; + } + + Future<_AssetVideoDimension> _getLocalAssetDimensions(LocalAsset asset) async { + double? width = asset.width?.toDouble(); + double? height = asset.height?.toDouble(); + int orientation = asset.orientation; + if (width == null || height == null) { - if (asset.hasRemote) { - final id = asset is LocalAsset ? asset.remoteId! : (asset as RemoteAsset).id; - final remoteAsset = await _remoteAssetRepository.get(id); - width = remoteAsset?.width?.toDouble(); - height = remoteAsset?.height?.toDouble(); - } else { - final id = asset is LocalAsset ? asset.id : (asset as RemoteAsset).localId!; - final localAsset = await _localAssetRepository.get(id); - width = localAsset?.width?.toDouble(); - height = localAsset?.height?.toDouble(); - } + final fetched = await _localAssetRepository.get(asset.id); + width = fetched?.width?.toDouble(); + height = fetched?.height?.toDouble(); + orientation = fetched?.orientation ?? 0; } - final orientedWidth = isFlipped ? height : width; - final orientedHeight = isFlipped ? width : height; - if (orientedWidth != null && orientedHeight != null && orientedHeight > 0) { - return orientedWidth / orientedHeight; + // On Android, local assets need orientation correction for 90°/270° rotations + // On iOS, the Photos framework pre-corrects dimensions + final isFlipped = CurrentPlatform.isAndroid && (orientation == 90 || orientation == 270); + return (width: width, height: height, isFlipped: isFlipped); + } + + Future<_AssetVideoDimension> _getRemoteAssetDimensions(RemoteAsset asset) async { + double? width = asset.width?.toDouble(); + double? height = asset.height?.toDouble(); + + if (width == null || height == null) { + final fetched = await _remoteAssetRepository.get(asset.id); + width = fetched?.width?.toDouble(); + height = fetched?.height?.toDouble(); } - return 1.0; + final exif = await getExif(asset); + final isFlipped = ExifDtoConverter.isOrientationFlipped(exif?.orientation); + return (width: width, height: height, isFlipped: isFlipped); } Future> getPlaces(String userId) { diff --git a/mobile/lib/domain/services/local_sync.service.dart b/mobile/lib/domain/services/local_sync.service.dart index c49ac49cce..1194331a6d 100644 --- a/mobile/lib/domain/services/local_sync.service.dart +++ b/mobile/lib/domain/services/local_sync.service.dart @@ -360,6 +360,7 @@ extension on Iterable { name: e.name, updatedAt: tryFromSecondsSinceEpoch(e.updatedAt, isUtc: true) ?? DateTime.timestamp(), assetCount: e.assetCount, + isIosSharedAlbum: e.isCloud, ), ).toList(); } diff --git a/mobile/lib/domain/services/timeline.service.dart b/mobile/lib/domain/services/timeline.service.dart index 96630f1eba..e866a965c4 100644 --- a/mobile/lib/domain/services/timeline.service.dart +++ b/mobile/lib/domain/services/timeline.service.dart @@ -79,6 +79,9 @@ class TimelineFactory { TimelineService fromAssets(List assets, TimelineOrigin type) => TimelineService(_timelineRepository.fromAssets(assets, type)); + TimelineService fromAssetsWithBuckets(List assets, TimelineOrigin type) => + TimelineService(_timelineRepository.fromAssetsWithBuckets(assets, type)); + TimelineService map(String userId, LatLngBounds bounds) => TimelineService(_timelineRepository.map(userId, bounds, groupBy)); } diff --git a/mobile/lib/infrastructure/entities/local_album.entity.dart b/mobile/lib/infrastructure/entities/local_album.entity.dart index 707d3326a4..641a5359f6 100644 --- a/mobile/lib/infrastructure/entities/local_album.entity.dart +++ b/mobile/lib/infrastructure/entities/local_album.entity.dart @@ -33,6 +33,7 @@ extension LocalAlbumEntityDataHelper on LocalAlbumEntityData { assetCount: assetCount, backupSelection: backupSelection, linkedRemoteAlbumId: linkedRemoteAlbumId, + isIosSharedAlbum: isIosSharedAlbum, ); } } diff --git a/mobile/lib/infrastructure/repositories/local_asset.repository.dart b/mobile/lib/infrastructure/repositories/local_asset.repository.dart index 4d30e09716..8cbce084cd 100644 --- a/mobile/lib/infrastructure/repositories/local_asset.repository.dart +++ b/mobile/lib/infrastructure/repositories/local_asset.repository.dart @@ -1,6 +1,7 @@ import 'package:collection/collection.dart'; import 'package:drift/drift.dart'; import 'package:immich_mobile/constants/constants.dart'; +import 'package:immich_mobile/constants/enums.dart'; import 'package:immich_mobile/domain/models/album/local_album.model.dart'; import 'package:immich_mobile/domain/models/asset/base_asset.model.dart'; import 'package:immich_mobile/infrastructure/entities/local_album.entity.dart'; @@ -126,4 +127,49 @@ class DriftLocalAssetRepository extends DriftDatabaseRepository { } return result; } + + Future> getRemovalCandidates( + String userId, + DateTime cutoffDate, { + AssetFilterType filterType = AssetFilterType.all, + bool keepFavorites = true, + }) async { + final iosSharedAlbumAssets = _db.localAlbumAssetEntity.selectOnly() + ..addColumns([_db.localAlbumAssetEntity.assetId]) + ..join([ + innerJoin( + _db.localAlbumEntity, + _db.localAlbumAssetEntity.albumId.equalsExp(_db.localAlbumEntity.id), + useColumns: false, + ), + ]) + ..where(_db.localAlbumEntity.isIosSharedAlbum.equals(true)); + + final query = _db.localAssetEntity.select().join([ + innerJoin(_db.remoteAssetEntity, _db.localAssetEntity.checksum.equalsExp(_db.remoteAssetEntity.checksum)), + ]); + + Expression whereClause = + _db.localAssetEntity.createdAt.isSmallerOrEqualValue(cutoffDate) & + _db.remoteAssetEntity.ownerId.equals(userId) & + _db.remoteAssetEntity.deletedAt.isNull(); + + // Exclude assets that are in iOS shared albums + whereClause = whereClause & _db.localAssetEntity.id.isNotInQuery(iosSharedAlbumAssets); + + if (filterType == AssetFilterType.photosOnly) { + whereClause = whereClause & _db.localAssetEntity.type.equalsValue(AssetType.image); + } else if (filterType == AssetFilterType.videosOnly) { + whereClause = whereClause & _db.localAssetEntity.type.equalsValue(AssetType.video); + } + + if (keepFavorites) { + whereClause = whereClause & _db.localAssetEntity.isFavorite.equals(false); + } + + query.where(whereClause); + + final rows = await query.get(); + return rows.map((row) => row.readTable(_db.localAssetEntity).toDto()).toList(); + } } diff --git a/mobile/lib/infrastructure/repositories/timeline.repository.dart b/mobile/lib/infrastructure/repositories/timeline.repository.dart index d21e1e905b..66ae47a0b5 100644 --- a/mobile/lib/infrastructure/repositories/timeline.repository.dart +++ b/mobile/lib/infrastructure/repositories/timeline.repository.dart @@ -253,6 +253,24 @@ class DriftTimelineRepository extends DriftDatabaseRepository { origin: origin, ); + TimelineQuery fromAssetsWithBuckets(List assets, TimelineOrigin origin) { + // Sort assets by date descending and group by day + final sorted = List.from(assets)..sort((a, b) => b.createdAt.compareTo(a.createdAt)); + final Map bucketCounts = {}; + for (final asset in sorted) { + final date = DateTime(asset.createdAt.year, asset.createdAt.month, asset.createdAt.day); + bucketCounts[date] = (bucketCounts[date] ?? 0) + 1; + } + + final buckets = bucketCounts.entries.map((e) => TimeBucket(date: e.key, assetCount: e.value)).toList(); + + return ( + bucketSource: () => Stream.value(buckets), + assetSource: (offset, count) => Future.value(sorted.skip(offset).take(count).toList(growable: false)), + origin: origin, + ); + } + TimelineQuery remote(String ownerId, GroupAssetsBy groupBy) => _remoteQueryBuilder( filter: (row) => row.deletedAt.isNull() & row.visibility.equalsValue(AssetVisibility.timeline) & row.ownerId.equals(ownerId), diff --git a/mobile/lib/main.dart b/mobile/lib/main.dart index c3804d97f6..83bc840df1 100644 --- a/mobile/lib/main.dart +++ b/mobile/lib/main.dart @@ -42,6 +42,7 @@ import 'package:immich_mobile/utils/http_ssl_options.dart'; import 'package:immich_mobile/utils/licenses.dart'; import 'package:immich_mobile/utils/migration.dart'; import 'package:immich_mobile/wm_executor.dart'; +import 'package:immich_ui/immich_ui.dart'; import 'package:intl/date_symbol_data_local.dart'; import 'package:logging/logging.dart'; import 'package:timezone/data/latest.dart'; @@ -252,6 +253,13 @@ class ImmichAppState extends ConsumerState with WidgetsBindingObserve themeMode: ref.watch(immichThemeModeProvider), darkTheme: getThemeData(colorScheme: immichTheme.dark, locale: context.locale), theme: getThemeData(colorScheme: immichTheme.light, locale: context.locale), + builder: (context, child) => ImmichTranslationProvider( + translations: ImmichTranslations( + submit: "submit".t(context: context), + password: "password".t(context: context), + ), + child: ImmichThemeProvider(colorScheme: context.colorScheme, child: child!), + ), routerConfig: router.config( deepLinkBuilder: _deepLinkBuilder, navigatorObservers: () => [AppNavigationObserver(ref: ref)], diff --git a/mobile/lib/pages/backup/drift_backup_album_selection.page.dart b/mobile/lib/pages/backup/drift_backup_album_selection.page.dart index cae9f0a408..5fe1dfb6a1 100644 --- a/mobile/lib/pages/backup/drift_backup_album_selection.page.dart +++ b/mobile/lib/pages/backup/drift_backup_album_selection.page.dart @@ -1,5 +1,4 @@ import 'dart:async'; -import 'dart:io'; import 'package:auto_route/auto_route.dart'; import 'package:easy_localization/easy_localization.dart'; @@ -242,8 +241,7 @@ class _DriftBackupAlbumSelectionPageState extends ConsumerState const AssetViewerSettings(), SettingSection.backup => Store.tryGet(StoreKey.betaTimeline) ?? false ? const DriftBackupSettings() : const BackupSettings(), + SettingSection.freeUpSpace => const FreeUpSpaceSettings(), SettingSection.languages => const LanguageSettings(), SettingSection.networking => const NetworkingSettings(), SettingSection.notifications => const NotificationSetting(), diff --git a/mobile/lib/presentation/pages/cleanup_preview.page.dart b/mobile/lib/presentation/pages/cleanup_preview.page.dart new file mode 100644 index 0000000000..556ed6412f --- /dev/null +++ b/mobile/lib/presentation/pages/cleanup_preview.page.dart @@ -0,0 +1,42 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:immich_mobile/domain/models/asset/base_asset.model.dart'; +import 'package:immich_mobile/domain/models/timeline.model.dart'; +import 'package:immich_mobile/domain/services/timeline.service.dart'; +import 'package:immich_mobile/extensions/build_context_extensions.dart'; +import 'package:immich_mobile/extensions/translate_extensions.dart'; +import 'package:immich_mobile/presentation/widgets/timeline/timeline.widget.dart'; +import 'package:immich_mobile/providers/infrastructure/timeline.provider.dart'; + +@RoutePage() +class CleanupPreviewPage extends StatelessWidget { + final List assets; + + const CleanupPreviewPage({super.key, required this.assets}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text('cleanup_preview_title'.t(context: context, args: {'count': assets.length.toString()})), + centerTitle: true, + elevation: 0, + scrolledUnderElevation: 0, + backgroundColor: context.colorScheme.surface, + ), + body: ProviderScope( + overrides: [ + timelineServiceProvider.overrideWith((ref) { + final timelineService = ref + .watch(timelineFactoryProvider) + .fromAssetsWithBuckets(assets.cast(), TimelineOrigin.search); + ref.onDispose(timelineService.dispose); + return timelineService; + }), + ], + child: const Timeline(appBar: null, bottomSheet: null, groupBy: GroupAssetsBy.day, readOnly: true), + ), + ); + } +} diff --git a/mobile/lib/presentation/pages/dev/ui_showcase.page.dart b/mobile/lib/presentation/pages/dev/ui_showcase.page.dart index 01fe928478..37c412a0e9 100644 --- a/mobile/lib/presentation/pages/dev/ui_showcase.page.dart +++ b/mobile/lib/presentation/pages/dev/ui_showcase.page.dart @@ -19,6 +19,17 @@ List _showcaseBuilder(Function(ImmichVariant variant, ImmichColor color) return children; } +class _ComponentTitle extends StatelessWidget { + final String title; + + const _ComponentTitle(this.title); + + @override + Widget build(BuildContext context) { + return Text(title, style: context.textTheme.titleLarge); + } +} + @RoutePage() class ImmichUIShowcasePage extends StatelessWidget { const ImmichUIShowcasePage({super.key}); @@ -35,13 +46,51 @@ class ImmichUIShowcasePage extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text("IconButton", style: context.textTheme.titleLarge), + const _ComponentTitle("IconButton"), ..._showcaseBuilder( (variant, color) => - ImmichIconButton(icon: Icons.favorite, color: color, variant: variant, onTap: () {}), + ImmichIconButton(icon: Icons.favorite, color: color, variant: variant, onPressed: () {}), + ), + const _ComponentTitle("CloseButton"), + ..._showcaseBuilder( + (variant, color) => ImmichCloseButton(color: color, variant: variant, onPressed: () {}), + ), + const _ComponentTitle("TextButton"), + + ImmichTextButton( + labelText: "Text Button", + onPressed: () {}, + variant: ImmichVariant.filled, + color: ImmichColor.primary, + ), + ImmichTextButton( + labelText: "Text Button", + onPressed: () {}, + variant: ImmichVariant.filled, + color: ImmichColor.primary, + loading: true, + ), + ImmichTextButton( + labelText: "Text Button", + onPressed: () {}, + variant: ImmichVariant.ghost, + color: ImmichColor.primary, + ), + ImmichTextButton( + labelText: "Text Button", + onPressed: () {}, + variant: ImmichVariant.ghost, + color: ImmichColor.primary, + loading: true, + ), + const _ComponentTitle("Form"), + ImmichForm( + onSubmit: () {}, + child: const Column( + spacing: 10, + children: [ImmichTextInput(label: "Title", hintText: "Enter a title")], + ), ), - Text("CloseButton", style: context.textTheme.titleLarge), - ..._showcaseBuilder((variant, color) => ImmichCloseButton(color: color, variant: variant, onTap: () {})), ], ), ), diff --git a/mobile/lib/presentation/pages/drift_remote_album.page.dart b/mobile/lib/presentation/pages/drift_remote_album.page.dart index 9a52f28deb..ba9ccf2ffd 100644 --- a/mobile/lib/presentation/pages/drift_remote_album.page.dart +++ b/mobile/lib/presentation/pages/drift_remote_album.page.dart @@ -171,67 +171,6 @@ class _RemoteAlbumPageState extends ConsumerState { unawaited(context.pushRoute(DriftActivitiesRoute(album: _album))); } - Future showOptionSheet(BuildContext context) async { - final user = ref.watch(currentUserProvider); - final isOwner = user != null ? user.id == _album.ownerId : false; - final canAddPhotos = - await ref.read(remoteAlbumServiceProvider).getUserRole(_album.id, user?.id ?? '') == AlbumUserRole.editor; - - unawaited( - showModalBottomSheet( - context: context, - backgroundColor: context.colorScheme.surface, - isScrollControlled: false, - builder: (context) { - return DriftRemoteAlbumOption( - onDeleteAlbum: isOwner - ? () async { - await deleteAlbum(context); - if (context.mounted) { - context.pop(); - } - } - : null, - onAddUsers: isOwner - ? () async { - await addUsers(context); - context.pop(); - } - : null, - onAddPhotos: isOwner || canAddPhotos - ? () async { - await addAssets(context); - context.pop(); - } - : null, - onToggleAlbumOrder: isOwner - ? () async { - await toggleAlbumOrder(); - context.pop(); - } - : null, - onEditAlbum: isOwner - ? () async { - context.pop(); - await showEditTitleAndDescription(context); - } - : null, - onCreateSharedLink: isOwner - ? () async { - context.pop(); - unawaited(context.pushRoute(SharedLinkEditRoute(albumId: _album.id))); - } - : null, - onShowOptions: () { - context.pop(); - context.pushRoute(DriftAlbumOptionsRoute(album: _album)); - }, - ); - }, - ), - ); - } - @override Widget build(BuildContext context) { final user = ref.watch(currentUserProvider); @@ -249,8 +188,16 @@ class _RemoteAlbumPageState extends ConsumerState { child: Timeline( appBar: RemoteAlbumSliverAppBar( icon: Icons.photo_album_outlined, - onShowOptions: () => showOptionSheet(context), - onToggleAlbumOrder: isOwner ? () => toggleAlbumOrder() : null, + kebabMenu: _AlbumKebabMenu( + album: _album, + onDeleteAlbum: () => deleteAlbum(context), + onAddUsers: () => addUsers(context), + onAddPhotos: () => addAssets(context), + onToggleAlbumOrder: () => toggleAlbumOrder(), + onEditAlbum: () => showEditTitleAndDescription(context), + onCreateSharedLink: () => unawaited(context.pushRoute(SharedLinkEditRoute(albumId: _album.id))), + onShowOptions: () => context.pushRoute(DriftAlbumOptionsRoute(album: _album)), + ), onEditTitle: isOwner ? () => showEditTitleAndDescription(context) : null, onActivity: () => showActivity(context), ), @@ -414,3 +361,77 @@ class _EditAlbumDialogState extends ConsumerState<_EditAlbumDialog> { ); } } + +class _AlbumKebabMenu extends ConsumerWidget { + final RemoteAlbum album; + final VoidCallback? onDeleteAlbum; + final VoidCallback? onAddUsers; + final VoidCallback? onAddPhotos; + final VoidCallback? onToggleAlbumOrder; + final VoidCallback? onEditAlbum; + final VoidCallback? onCreateSharedLink; + final VoidCallback? onShowOptions; + + const _AlbumKebabMenu({ + required this.album, + this.onDeleteAlbum, + this.onAddUsers, + this.onAddPhotos, + this.onToggleAlbumOrder, + this.onEditAlbum, + this.onCreateSharedLink, + this.onShowOptions, + }); + + double _calculateScrollProgress(FlexibleSpaceBarSettings? settings) { + if (settings?.maxExtent == null || settings?.minExtent == null) { + return 1.0; + } + + final deltaExtent = settings!.maxExtent - settings.minExtent; + if (deltaExtent <= 0.0) { + return 1.0; + } + + return (1.0 - (settings.currentExtent - settings.minExtent) / deltaExtent).clamp(0.0, 1.0); + } + + @override + Widget build(BuildContext context, WidgetRef ref) { + final settings = context.dependOnInheritedWidgetOfExactType(); + final scrollProgress = _calculateScrollProgress(settings); + + final iconColor = Color.lerp(Colors.white, context.primaryColor, scrollProgress); + final iconShadows = [ + if (scrollProgress < 0.95) + Shadow(offset: const Offset(0, 2), blurRadius: 5, color: Colors.black.withValues(alpha: 0.5)) + else + const Shadow(offset: Offset(0, 2), blurRadius: 0, color: Colors.transparent), + ]; + + final user = ref.watch(currentUserProvider); + final isOwner = user != null && user.id == album.ownerId; + + return FutureBuilder( + future: ref + .read(remoteAlbumServiceProvider) + .getUserRole(album.id, user?.id ?? '') + .then((role) => role == AlbumUserRole.editor), + builder: (context, snapshot) { + final canAddPhotos = snapshot.data ?? false; + + return DriftRemoteAlbumOption( + iconColor: iconColor, + iconShadows: iconShadows, + onDeleteAlbum: isOwner ? onDeleteAlbum : null, + onAddUsers: isOwner ? onAddUsers : null, + onAddPhotos: isOwner || canAddPhotos ? onAddPhotos : null, + onToggleAlbumOrder: isOwner ? onToggleAlbumOrder : null, + onEditAlbum: isOwner ? onEditAlbum : null, + onCreateSharedLink: isOwner ? onCreateSharedLink : null, + onShowOptions: onShowOptions, + ); + }, + ); + } +} diff --git a/mobile/lib/presentation/pages/editing/drift_crop.page.dart b/mobile/lib/presentation/pages/editing/drift_crop.page.dart index 1692140cd2..a213e4c640 100644 --- a/mobile/lib/presentation/pages/editing/drift_crop.page.dart +++ b/mobile/lib/presentation/pages/editing/drift_crop.page.dart @@ -37,7 +37,7 @@ class DriftCropImagePage extends HookWidget { icon: Icons.done_rounded, color: ImmichColor.primary, variant: ImmichVariant.ghost, - onTap: () async { + onPressed: () async { final croppedImage = await cropController.croppedImage(); unawaited(context.pushRoute(DriftEditImageRoute(asset: asset, image: croppedImage, isEdited: true))); }, @@ -79,13 +79,13 @@ class DriftCropImagePage extends HookWidget { icon: Icons.rotate_left, variant: ImmichVariant.ghost, color: ImmichColor.secondary, - onTap: () => cropController.rotateLeft(), + onPressed: () => cropController.rotateLeft(), ), ImmichIconButton( icon: Icons.rotate_right, variant: ImmichVariant.ghost, color: ImmichColor.secondary, - onTap: () => cropController.rotateRight(), + onPressed: () => cropController.rotateRight(), ), ], ), diff --git a/mobile/lib/presentation/widgets/action_buttons/base_action_button.widget.dart b/mobile/lib/presentation/widgets/action_buttons/base_action_button.widget.dart index 675b5bf219..1ca875e483 100644 --- a/mobile/lib/presentation/widgets/action_buttons/base_action_button.widget.dart +++ b/mobile/lib/presentation/widgets/action_buttons/base_action_button.widget.dart @@ -53,7 +53,7 @@ class BaseActionButton extends ConsumerWidget { style: MenuItemButton.styleFrom(alignment: Alignment.centerLeft, padding: const EdgeInsets.all(16)), leadingIcon: Icon(iconData, color: effectiveIconColor), onPressed: onPressed, - child: Text(label, style: theme.textTheme.labelLarge?.copyWith(fontSize: 16)), + child: Text(label, style: theme.textTheme.labelLarge?.copyWith(fontSize: 16, color: iconColor)), ); } diff --git a/mobile/lib/presentation/widgets/asset_viewer/asset_viewer.page.dart b/mobile/lib/presentation/widgets/asset_viewer/asset_viewer.page.dart index d992d243ee..2a7ac9c7fe 100644 --- a/mobile/lib/presentation/widgets/asset_viewer/asset_viewer.page.dart +++ b/mobile/lib/presentation/widgets/asset_viewer/asset_viewer.page.dart @@ -92,6 +92,8 @@ class AssetViewer extends ConsumerStatefulWidget { if (asset.isVideo || asset.isMotionPhoto) { ref.read(videoPlaybackValueProvider.notifier).reset(); ref.read(videoPlayerControlsProvider.notifier).pause(); + // Hide controls by default for videos and motion photos + ref.read(assetViewerProvider.notifier).setControls(false); } } } @@ -525,7 +527,13 @@ class _AssetViewerState extends ConsumerState { void _onScaleStateChanged(PhotoViewScaleState scaleState) { if (scaleState != PhotoViewScaleState.initial) { + ref.read(assetViewerProvider.notifier).setControls(false); ref.read(videoPlayerControlsProvider.notifier).pause(); + return; + } + + if (!showingBottomSheet) { + ref.read(assetViewerProvider.notifier).setControls(true); } } diff --git a/mobile/lib/presentation/widgets/bottom_sheet/general_bottom_sheet.widget.dart b/mobile/lib/presentation/widgets/bottom_sheet/general_bottom_sheet.widget.dart index 9436707c84..fea3da88e5 100644 --- a/mobile/lib/presentation/widgets/bottom_sheet/general_bottom_sheet.widget.dart +++ b/mobile/lib/presentation/widgets/bottom_sheet/general_bottom_sheet.widget.dart @@ -119,7 +119,7 @@ class _GeneralBottomSheetState extends ConsumerState { const MoveToLockFolderActionButton(source: ActionSource.timeline), if (multiselect.selectedAssets.length > 1) const StackActionButton(source: ActionSource.timeline), if (multiselect.hasStacked) const UnStackActionButton(source: ActionSource.timeline), - const DeleteActionButton(source: ActionSource.timeline), + if (multiselect.hasLocal || multiselect.hasMerged) const DeleteActionButton(source: ActionSource.timeline), ], if (multiselect.hasLocal || multiselect.hasMerged) const DeleteLocalActionButton(source: ActionSource.timeline), if (multiselect.hasLocal) const UploadActionButton(source: ActionSource.timeline), diff --git a/mobile/lib/presentation/widgets/map/map.widget.dart b/mobile/lib/presentation/widgets/map/map.widget.dart index 4e4ae45098..17dcffdade 100644 --- a/mobile/lib/presentation/widgets/map/map.widget.dart +++ b/mobile/lib/presentation/widgets/map/map.widget.dart @@ -12,6 +12,8 @@ import 'package:immich_mobile/extensions/translate_extensions.dart'; import 'package:immich_mobile/presentation/widgets/bottom_sheet/map_bottom_sheet.widget.dart'; import 'package:immich_mobile/presentation/widgets/map/map.state.dart'; import 'package:immich_mobile/presentation/widgets/map/map_utils.dart'; +import 'package:immich_mobile/providers/routes.provider.dart'; +import 'package:immich_mobile/routing/router.dart'; import 'package:immich_mobile/utils/async_mutex.dart'; import 'package:immich_mobile/utils/debounce.dart'; import 'package:immich_mobile/widgets/common/immich_toast.dart'; @@ -114,6 +116,14 @@ class _DriftMapState extends ConsumerState { return; } + // When the AssetViewer is open, the DriftMap route stays alive in the background. + // If we continue to update bounds, the map-scoped timeline service gets recreated and the previous one disposed, + // which can invalidate the TimelineService instance that was passed into AssetViewerRoute (causing "loading forever"). + final currentRoute = ref.read(currentRouteNameProvider); + if (currentRoute == AssetViewerRoute.name || currentRoute == GalleryViewerRoute.name) { + return; + } + final bounds = await controller.getVisibleRegion(); unawaited( _reloadMutex.run(() async { diff --git a/mobile/lib/presentation/widgets/remote_album/drift_album_option.widget.dart b/mobile/lib/presentation/widgets/remote_album/drift_album_option.widget.dart index b82d951b68..355e1a01a8 100644 --- a/mobile/lib/presentation/widgets/remote_album/drift_album_option.widget.dart +++ b/mobile/lib/presentation/widgets/remote_album/drift_album_option.widget.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:immich_mobile/extensions/build_context_extensions.dart'; import 'package:immich_mobile/extensions/translate_extensions.dart'; +import 'package:immich_mobile/presentation/widgets/action_buttons/base_action_button.widget.dart'; class DriftRemoteAlbumOption extends ConsumerWidget { const DriftRemoteAlbumOption({ @@ -14,6 +15,8 @@ class DriftRemoteAlbumOption extends ConsumerWidget { this.onToggleAlbumOrder, this.onEditAlbum, this.onShowOptions, + this.iconColor, + this.iconShadows, }); final VoidCallback? onAddPhotos; @@ -24,73 +27,131 @@ class DriftRemoteAlbumOption extends ConsumerWidget { final VoidCallback? onToggleAlbumOrder; final VoidCallback? onEditAlbum; final VoidCallback? onShowOptions; + final Color? iconColor; + final List? iconShadows; @override Widget build(BuildContext context, WidgetRef ref) { - TextStyle textStyle = Theme.of(context).textTheme.bodyLarge!.copyWith(fontWeight: FontWeight.w600); + final theme = context.themeData; + final menuChildren = []; - return SafeArea( - child: Padding( - padding: const EdgeInsets.symmetric(vertical: 24.0), - child: ListView( - shrinkWrap: true, - children: [ - if (onEditAlbum != null) - ListTile( - leading: const Icon(Icons.edit), - title: Text('edit_album'.t(context: context), style: textStyle), - onTap: onEditAlbum, - ), - if (onAddPhotos != null) - ListTile( - leading: const Icon(Icons.add_a_photo), - title: Text('add_photos'.t(context: context), style: textStyle), - onTap: onAddPhotos, - ), - if (onAddUsers != null) - ListTile( - leading: const Icon(Icons.group_add), - title: Text('album_viewer_page_share_add_users'.t(context: context), style: textStyle), - onTap: onAddUsers, - ), - if (onLeaveAlbum != null) - ListTile( - leading: const Icon(Icons.person_remove_rounded), - title: Text('leave_album'.t(context: context), style: textStyle), - onTap: onLeaveAlbum, - ), - if (onToggleAlbumOrder != null) - ListTile( - leading: const Icon(Icons.swap_vert_rounded), - title: Text('change_display_order'.t(context: context), style: textStyle), - onTap: onToggleAlbumOrder, - ), - if (onCreateSharedLink != null) - ListTile( - leading: const Icon(Icons.link), - title: Text('create_shared_link'.t(context: context), style: textStyle), - onTap: onCreateSharedLink, - ), - if (onShowOptions != null) - ListTile( - leading: const Icon(Icons.settings), - title: Text('options'.t(context: context), style: textStyle), - onTap: onShowOptions, - ), - if (onDeleteAlbum != null) ...[ - const Divider(indent: 16, endIndent: 16), - ListTile( - leading: Icon(Icons.delete, color: context.isDarkTheme ? Colors.red[400] : Colors.red[800]), - title: Text( - 'delete_album'.t(context: context), - style: textStyle.copyWith(color: context.isDarkTheme ? Colors.red[400] : Colors.red[800]), - ), - onTap: onDeleteAlbum, - ), - ], - ], + if (onEditAlbum != null) { + menuChildren.add( + BaseActionButton( + label: 'edit_album'.t(context: context), + iconData: Icons.edit, + onPressed: onEditAlbum, + menuItem: true, ), + ); + } + + if (onAddPhotos != null) { + menuChildren.add( + BaseActionButton( + label: 'add_photos'.t(context: context), + iconData: Icons.add_a_photo, + onPressed: onAddPhotos, + menuItem: true, + ), + ); + } + + if (onAddUsers != null) { + menuChildren.add( + BaseActionButton( + label: 'album_viewer_page_share_add_users'.t(context: context), + iconData: Icons.group_add, + onPressed: onAddUsers, + menuItem: true, + ), + ); + } + + if (onLeaveAlbum != null) { + menuChildren.add( + BaseActionButton( + label: 'leave_album'.t(context: context), + iconData: Icons.person_remove_rounded, + onPressed: onLeaveAlbum, + menuItem: true, + ), + ); + } + + if (onToggleAlbumOrder != null) { + menuChildren.add( + BaseActionButton( + label: 'change_display_order'.t(context: context), + iconData: Icons.swap_vert_rounded, + onPressed: onToggleAlbumOrder, + menuItem: true, + ), + ); + } + + if (onCreateSharedLink != null) { + menuChildren.add( + BaseActionButton( + label: 'create_shared_link'.t(context: context), + iconData: Icons.link, + onPressed: onCreateSharedLink, + menuItem: true, + ), + ); + } + + if (onShowOptions != null) { + menuChildren.add( + BaseActionButton( + label: 'options'.t(context: context), + iconData: Icons.settings, + onPressed: onShowOptions, + menuItem: true, + ), + ); + } + + if (onDeleteAlbum != null) { + menuChildren.add(const Divider(height: 1)); + menuChildren.add( + BaseActionButton( + label: 'delete_album'.t(context: context), + iconData: Icons.delete, + iconColor: context.isDarkTheme ? Colors.red[400] : Colors.red[800], + onPressed: onDeleteAlbum, + menuItem: true, + ), + ); + } + + return MenuAnchor( + consumeOutsideTap: true, + style: MenuStyle( + backgroundColor: WidgetStatePropertyAll(theme.scaffoldBackgroundColor), + surfaceTintColor: const WidgetStatePropertyAll(Colors.grey), + elevation: const WidgetStatePropertyAll(4), + shape: const WidgetStatePropertyAll( + RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(12))), + ), + padding: const WidgetStatePropertyAll(EdgeInsets.symmetric(vertical: 6)), ), + menuChildren: [ + ConstrainedBox( + constraints: const BoxConstraints(minWidth: 150), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: menuChildren, + ), + ), + ], + builder: (context, controller, child) { + return IconButton( + icon: Icon(Icons.more_vert_rounded, color: iconColor ?? Colors.white, shadows: iconShadows), + onPressed: () => controller.isOpen ? controller.close() : controller.open(), + ); + }, ); } } diff --git a/mobile/lib/presentation/widgets/timeline/timeline.widget.dart b/mobile/lib/presentation/widgets/timeline/timeline.widget.dart index a04e26d653..ac20e73190 100644 --- a/mobile/lib/presentation/widgets/timeline/timeline.widget.dart +++ b/mobile/lib/presentation/widgets/timeline/timeline.widget.dart @@ -42,6 +42,7 @@ class Timeline extends StatelessWidget { this.withScrubber = true, this.snapToMonth = true, this.initialScrollOffset, + this.readOnly = false, }); final Widget? topSliverWidget; @@ -54,6 +55,7 @@ class Timeline extends StatelessWidget { final bool withScrubber; final bool snapToMonth; final double? initialScrollOffset; + final bool readOnly; @override Widget build(BuildContext context) { @@ -73,6 +75,7 @@ class Timeline extends StatelessWidget { groupBy: groupBy, ), ), + if (readOnly) readonlyModeProvider.overrideWith(() => _AlwaysReadOnlyNotifier()), ], child: _SliverTimeline( topSliverWidget: topSliverWidget, @@ -89,6 +92,17 @@ class Timeline extends StatelessWidget { } } +class _AlwaysReadOnlyNotifier extends ReadOnlyModeNotifier { + @override + bool build() => true; + + @override + void setReadonlyMode(bool value) {} + + @override + void toggleReadonlyMode() {} +} + class _SliverTimeline extends ConsumerStatefulWidget { const _SliverTimeline({ this.topSliverWidget, diff --git a/mobile/lib/providers/asset_viewer/share_intent_upload.provider.dart b/mobile/lib/providers/asset_viewer/share_intent_upload.provider.dart index 0f9c32b410..881fdc359f 100644 --- a/mobile/lib/providers/asset_viewer/share_intent_upload.provider.dart +++ b/mobile/lib/providers/asset_viewer/share_intent_upload.provider.dart @@ -11,6 +11,7 @@ import 'package:immich_mobile/routing/router.dart'; import 'package:immich_mobile/services/api.service.dart'; import 'package:immich_mobile/services/share_intent_service.dart'; import 'package:immich_mobile/services/upload.service.dart'; +import 'package:logging/logging.dart'; import 'package:path/path.dart'; final shareIntentUploadProvider = StateNotifierProvider>( @@ -25,6 +26,7 @@ class ShareIntentUploadStateNotifier extends StateNotifier((ref) { final syncStatusNotifier = ref.read(syncStatusProvider.notifier); - final backupProvider = ref.read(driftBackupProvider.notifier); final manager = BackgroundSyncManager( onRemoteSyncStart: () { syncStatusNotifier.startRemoteSync(); - backupProvider.updateError(BackupError.none); + final backupProvider = ref.read(driftBackupProvider.notifier); + if (backupProvider.mounted) { + backupProvider.updateError(BackupError.none); + } }, onRemoteSyncComplete: (isSuccess) { syncStatusNotifier.completeRemoteSync(); - backupProvider.updateError(isSuccess == true ? BackupError.none : BackupError.syncFailed); + final backupProvider = ref.read(driftBackupProvider.notifier); + if (backupProvider.mounted) { + backupProvider.updateError(isSuccess == true ? BackupError.none : BackupError.syncFailed); + } }, onRemoteSyncError: syncStatusNotifier.errorRemoteSync, onLocalSyncStart: syncStatusNotifier.startLocalSync, diff --git a/mobile/lib/providers/backup/drift_backup.provider.dart b/mobile/lib/providers/backup/drift_backup.provider.dart index f52fc654f2..ec427613f1 100644 --- a/mobile/lib/providers/backup/drift_backup.provider.dart +++ b/mobile/lib/providers/backup/drift_backup.provider.dart @@ -212,8 +212,8 @@ class DriftBackupNotifier extends StateNotifier { ), ) { { - _uploadService.taskStatusStream.listen(_handleTaskStatusUpdate); - _uploadService.taskProgressStream.listen(_handleTaskProgressUpdate); + _statusSubscription = _uploadService.taskStatusStream.listen(_handleTaskStatusUpdate); + _progressSubscription = _uploadService.taskProgressStream.listen(_handleTaskProgressUpdate); } } @@ -224,6 +224,10 @@ class DriftBackupNotifier extends StateNotifier { /// Remove upload item from state void _removeUploadItem(String taskId) { + if (!mounted) { + _logger.warning("Skip _removeUploadItem: notifier disposed"); + return; + } if (state.uploadItems.containsKey(taskId)) { final updatedItems = Map.from(state.uploadItems); updatedItems.remove(taskId); @@ -232,6 +236,10 @@ class DriftBackupNotifier extends StateNotifier { } void _handleTaskStatusUpdate(TaskStatusUpdate update) { + if (!mounted) { + _logger.warning("Skip _handleTaskStatusUpdate: notifier disposed"); + return; + } final taskId = update.task.taskId; switch (update.status) { @@ -291,6 +299,10 @@ class DriftBackupNotifier extends StateNotifier { } void _handleTaskProgressUpdate(TaskProgressUpdate update) { + if (!mounted) { + _logger.warning("Skip _handleTaskProgressUpdate: notifier disposed"); + return; + } final taskId = update.task.taskId; final filename = update.task.displayName; final progress = update.progress; @@ -332,7 +344,15 @@ class DriftBackupNotifier extends StateNotifier { } Future getBackupStatus(String userId) async { + if (!mounted) { + _logger.warning("Skip getBackupStatus (pre-call): notifier disposed"); + return; + } final counts = await _uploadService.getBackupCounts(userId); + if (!mounted) { + _logger.warning("Skip getBackupStatus (post-call): notifier disposed"); + return; + } state = state.copyWith( totalCount: counts.total, @@ -343,6 +363,10 @@ class DriftBackupNotifier extends StateNotifier { } void updateError(BackupError error) async { + if (!mounted) { + _logger.warning("Skip updateError: notifier disposed"); + return; + } state = state.copyWith(error: error); } @@ -360,10 +384,18 @@ class DriftBackupNotifier extends StateNotifier { } Future cancel() async { + if (!mounted) { + _logger.warning("Skip cancel (pre-call): notifier disposed"); + return; + } dPrint(() => "Canceling backup tasks..."); state = state.copyWith(enqueueCount: 0, enqueueTotalCount: 0, isCanceling: true, error: BackupError.none); final activeTaskCount = await _uploadService.cancelBackup(); + if (!mounted) { + _logger.warning("Skip cancel (post-call): notifier disposed"); + return; + } if (activeTaskCount > 0) { dPrint(() => "$activeTaskCount tasks left, continuing to cancel..."); @@ -376,9 +408,17 @@ class DriftBackupNotifier extends StateNotifier { } Future handleBackupResume(String userId) async { + if (!mounted) { + _logger.warning("Skip handleBackupResume (pre-call): notifier disposed"); + return; + } _logger.info("Resuming backup tasks..."); state = state.copyWith(error: BackupError.none); final tasks = await _uploadService.getActiveTasks(kBackupGroup); + if (!mounted) { + _logger.warning("Skip handleBackupResume (post-call): notifier disposed"); + return; + } _logger.info("Found ${tasks.length} tasks"); if (tasks.isEmpty) { diff --git a/mobile/lib/providers/cleanup.provider.dart b/mobile/lib/providers/cleanup.provider.dart new file mode 100644 index 0000000000..5b3b152f34 --- /dev/null +++ b/mobile/lib/providers/cleanup.provider.dart @@ -0,0 +1,106 @@ +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:immich_mobile/constants/enums.dart'; +import 'package:immich_mobile/domain/models/asset/base_asset.model.dart'; +import 'package:immich_mobile/providers/user.provider.dart'; +import 'package:immich_mobile/services/cleanup.service.dart'; + +class CleanupState { + final DateTime? selectedDate; + final List assetsToDelete; + final bool isScanning; + final bool isDeleting; + final AssetFilterType filterType; + final bool keepFavorites; + + const CleanupState({ + this.selectedDate, + this.assetsToDelete = const [], + this.isScanning = false, + this.isDeleting = false, + this.filterType = AssetFilterType.all, + this.keepFavorites = true, + }); + + CleanupState copyWith({ + DateTime? selectedDate, + List? assetsToDelete, + bool? isScanning, + bool? isDeleting, + AssetFilterType? filterType, + bool? keepFavorites, + }) { + return CleanupState( + selectedDate: selectedDate ?? this.selectedDate, + assetsToDelete: assetsToDelete ?? this.assetsToDelete, + isScanning: isScanning ?? this.isScanning, + isDeleting: isDeleting ?? this.isDeleting, + filterType: filterType ?? this.filterType, + keepFavorites: keepFavorites ?? this.keepFavorites, + ); + } +} + +final cleanupProvider = StateNotifierProvider((ref) { + return CleanupNotifier(ref.watch(cleanupServiceProvider), ref.watch(currentUserProvider)?.id); +}); + +class CleanupNotifier extends StateNotifier { + final CleanupService _cleanupService; + final String? _userId; + + CleanupNotifier(this._cleanupService, this._userId) : super(const CleanupState()); + + void setSelectedDate(DateTime? date) { + state = state.copyWith(selectedDate: date, assetsToDelete: []); + } + + void setFilterType(AssetFilterType filterType) { + state = state.copyWith(filterType: filterType, assetsToDelete: []); + } + + void setKeepFavorites(bool keepFavorites) { + state = state.copyWith(keepFavorites: keepFavorites, assetsToDelete: []); + } + + Future scanAssets() async { + if (_userId == null || state.selectedDate == null) { + return; + } + + state = state.copyWith(isScanning: true); + try { + final assets = await _cleanupService.getRemovalCandidates( + _userId, + state.selectedDate!, + filterType: state.filterType, + keepFavorites: state.keepFavorites, + ); + state = state.copyWith(assetsToDelete: assets, isScanning: false); + } catch (e) { + state = state.copyWith(isScanning: false); + rethrow; + } + } + + Future deleteAssets() async { + if (state.assetsToDelete.isEmpty) { + return 0; + } + + state = state.copyWith(isDeleting: true); + try { + final deletedCount = await _cleanupService.deleteLocalAssets(state.assetsToDelete.map((a) => a.id).toList()); + + state = state.copyWith(assetsToDelete: [], isDeleting: false); + + return deletedCount; + } catch (e) { + state = state.copyWith(isDeleting: false); + rethrow; + } + } + + void reset() { + state = const CleanupState(); + } +} diff --git a/mobile/lib/routing/router.dart b/mobile/lib/routing/router.dart index 9c4a193381..9468b105e5 100644 --- a/mobile/lib/routing/router.dart +++ b/mobile/lib/routing/router.dart @@ -88,6 +88,7 @@ import 'package:immich_mobile/presentation/pages/drift_album_options.page.dart'; import 'package:immich_mobile/presentation/pages/drift_archive.page.dart'; import 'package:immich_mobile/presentation/pages/drift_asset_selection_timeline.page.dart'; import 'package:immich_mobile/presentation/pages/drift_asset_troubleshoot.page.dart'; +import 'package:immich_mobile/presentation/pages/cleanup_preview.page.dart'; import 'package:immich_mobile/presentation/pages/drift_create_album.page.dart'; import 'package:immich_mobile/presentation/pages/drift_favorite.page.dart'; import 'package:immich_mobile/presentation/pages/drift_library.page.dart'; @@ -338,6 +339,7 @@ class AppRouter extends RootStackRouter { AutoRoute(page: AssetTroubleshootRoute.page, guards: [_authGuard, _duplicateGuard]), AutoRoute(page: DownloadInfoRoute.page, guards: [_authGuard, _duplicateGuard]), AutoRoute(page: ImmichUIShowcaseRoute.page, guards: [_authGuard, _duplicateGuard]), + AutoRoute(page: CleanupPreviewRoute.page, guards: [_authGuard, _duplicateGuard]), // required to handle all deeplinks in deep_link.service.dart // auto_route_library#1722 RedirectRoute(path: '*', redirectTo: '/'), diff --git a/mobile/lib/routing/router.gr.dart b/mobile/lib/routing/router.gr.dart index 939bf73369..b287d73114 100644 --- a/mobile/lib/routing/router.gr.dart +++ b/mobile/lib/routing/router.gr.dart @@ -611,6 +611,43 @@ class ChangePasswordRoute extends PageRouteInfo { ); } +/// generated route for +/// [CleanupPreviewPage] +class CleanupPreviewRoute extends PageRouteInfo { + CleanupPreviewRoute({ + Key? key, + required List assets, + List? children, + }) : super( + CleanupPreviewRoute.name, + args: CleanupPreviewRouteArgs(key: key, assets: assets), + initialChildren: children, + ); + + static const String name = 'CleanupPreviewRoute'; + + static PageInfo page = PageInfo( + name, + builder: (data) { + final args = data.argsAs(); + return CleanupPreviewPage(key: args.key, assets: args.assets); + }, + ); +} + +class CleanupPreviewRouteArgs { + const CleanupPreviewRouteArgs({this.key, required this.assets}); + + final Key? key; + + final List assets; + + @override + String toString() { + return 'CleanupPreviewRouteArgs{key: $key, assets: $assets}'; + } +} + /// generated route for /// [CreateAlbumPage] class CreateAlbumRoute extends PageRouteInfo { diff --git a/mobile/lib/services/cleanup.service.dart b/mobile/lib/services/cleanup.service.dart new file mode 100644 index 0000000000..6a4318d209 --- /dev/null +++ b/mobile/lib/services/cleanup.service.dart @@ -0,0 +1,45 @@ +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:immich_mobile/constants/enums.dart'; +import 'package:immich_mobile/domain/models/asset/base_asset.model.dart'; +import 'package:immich_mobile/infrastructure/repositories/local_asset.repository.dart'; +import 'package:immich_mobile/providers/infrastructure/asset.provider.dart'; +import 'package:immich_mobile/repositories/asset_media.repository.dart'; + +final cleanupServiceProvider = Provider((ref) { + return CleanupService(ref.watch(localAssetRepository), ref.watch(assetMediaRepositoryProvider)); +}); + +class CleanupService { + final DriftLocalAssetRepository _localAssetRepository; + final AssetMediaRepository _assetMediaRepository; + + const CleanupService(this._localAssetRepository, this._assetMediaRepository); + + Future> getRemovalCandidates( + String userId, + DateTime cutoffDate, { + AssetFilterType filterType = AssetFilterType.all, + bool keepFavorites = true, + }) { + return _localAssetRepository.getRemovalCandidates( + userId, + cutoffDate, + filterType: filterType, + keepFavorites: keepFavorites, + ); + } + + Future deleteLocalAssets(List localIds) async { + if (localIds.isEmpty) { + return 0; + } + + final deletedIds = await _assetMediaRepository.deleteAll(localIds); + if (deletedIds.isNotEmpty) { + await _localAssetRepository.delete(deletedIds); + return deletedIds.length; + } + + return 0; + } +} diff --git a/mobile/lib/utils/migration.dart b/mobile/lib/utils/migration.dart index 35cdc7addf..30a9702b53 100644 --- a/mobile/lib/utils/migration.dart +++ b/mobile/lib/utils/migration.dart @@ -31,7 +31,7 @@ import 'package:isar/isar.dart'; // ignore: import_rule_photo_manager import 'package:photo_manager/photo_manager.dart'; -const int targetVersion = 19; +const int targetVersion = 20; Future migrateDatabaseIfNeeded(Isar db, Drift drift) async { final hasVersion = Store.tryGet(StoreKey.version) != null; @@ -86,6 +86,10 @@ Future migrateDatabaseIfNeeded(Isar db, Drift drift) async { } } + if (version < 20 && Store.isBetaTimelineEnabled) { + await _syncLocalAlbumIsIosSharedAlbum(drift); + } + if (targetVersion >= 12) { await Store.put(StoreKey.version, targetVersion); return; @@ -258,6 +262,25 @@ Future _populateLocalAssetTime(Drift db) async { } } +Future _syncLocalAlbumIsIosSharedAlbum(Drift db) async { + try { + final nativeApi = NativeSyncApi(); + final albums = await nativeApi.getAlbums(); + await db.batch((batch) { + for (final album in albums) { + batch.update( + db.localAlbumEntity, + LocalAlbumEntityCompanion(isIosSharedAlbum: Value(album.isCloud)), + where: (t) => t.id.equals(album.id), + ); + } + }); + dPrint(() => "[MIGRATION] Successfully updated isIosSharedAlbum for ${albums.length} albums"); + } catch (error) { + dPrint(() => "[MIGRATION] Error while syncing local album isIosSharedAlbum: $error"); + } +} + Future migrateDeviceAssetToSqlite(Isar db, Drift drift) async { try { final isarDeviceAssets = await db.deviceAssetEntitys.where().findAll(); diff --git a/mobile/lib/widgets/backup/backup_info_card.dart b/mobile/lib/widgets/backup/backup_info_card.dart index 2ef7e24cd7..7911679577 100644 --- a/mobile/lib/widgets/backup/backup_info_card.dart +++ b/mobile/lib/widgets/backup/backup_info_card.dart @@ -53,6 +53,7 @@ class BackupInfoCard extends StatelessWidget { info, style: context.textTheme.titleLarge?.copyWith( color: context.colorScheme.onSurface.withAlpha(isLoading ? 50 : 255), + fontFeatures: const [FontFeature.tabularFigures()], ), ), if (isLoading) diff --git a/mobile/lib/widgets/backup/drift_album_info_list_tile.dart b/mobile/lib/widgets/backup/drift_album_info_list_tile.dart index 596e46d934..84128ddde2 100644 --- a/mobile/lib/widgets/backup/drift_album_info_list_tile.dart +++ b/mobile/lib/widgets/backup/drift_album_info_list_tile.dart @@ -4,6 +4,7 @@ import 'package:fluttertoast/fluttertoast.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:immich_mobile/domain/models/album/local_album.model.dart'; import 'package:immich_mobile/extensions/build_context_extensions.dart'; +import 'package:immich_mobile/extensions/theme_extensions.dart'; import 'package:immich_mobile/providers/backup/backup_album.provider.dart'; import 'package:immich_mobile/providers/haptic_feedback.provider.dart'; import 'package:immich_mobile/routing/router.dart'; @@ -41,6 +42,13 @@ class DriftAlbumInfoListTile extends HookConsumerWidget { return Icon(Icons.circle, color: context.colorScheme.surfaceContainerHighest); } + Widget buildSubtitle() { + return Text( + album.isIosSharedAlbum ? '${album.assetCount} (iCloud Shared Album)' : album.assetCount.toString(), + style: context.textTheme.labelLarge?.copyWith(color: context.colorScheme.onSurfaceSecondary), + ); + } + return GestureDetector( onDoubleTap: () { ref.watch(hapticFeedbackProvider.notifier).selectionClick(); @@ -73,8 +81,8 @@ class DriftAlbumInfoListTile extends HookConsumerWidget { } }, leading: buildIcon(), - title: Text(album.name, style: const TextStyle(fontSize: 14, fontWeight: FontWeight.bold)), - subtitle: Text(album.assetCount.toString()), + title: Text(album.name, style: context.textTheme.titleSmall), + subtitle: buildSubtitle(), trailing: IconButton( onPressed: () { context.pushRoute(LocalTimelineRoute(album: album)); diff --git a/mobile/lib/widgets/common/remote_album_sliver_app_bar.dart b/mobile/lib/widgets/common/remote_album_sliver_app_bar.dart index c486d473b0..30eaf4c555 100644 --- a/mobile/lib/widgets/common/remote_album_sliver_app_bar.dart +++ b/mobile/lib/widgets/common/remote_album_sliver_app_bar.dart @@ -24,15 +24,13 @@ class RemoteAlbumSliverAppBar extends ConsumerStatefulWidget { const RemoteAlbumSliverAppBar({ super.key, this.icon = Icons.camera, - this.onShowOptions, - this.onToggleAlbumOrder, + required this.kebabMenu, this.onEditTitle, this.onActivity, }); final IconData icon; - final void Function()? onShowOptions; - final void Function()? onToggleAlbumOrder; + final Widget kebabMenu; final void Function()? onEditTitle; final void Function()? onActivity; @@ -91,21 +89,12 @@ class _MesmerizingSliverAppBarState extends ConsumerState context.maybePop(), ), actions: [ - if (widget.onToggleAlbumOrder != null) - IconButton( - icon: Icon(Icons.swap_vert_rounded, color: actionIconColor, shadows: actionIconShadows), - onPressed: widget.onToggleAlbumOrder, - ), if (currentAlbum.isActivityEnabled && currentAlbum.isShared) IconButton( icon: Icon(Icons.chat_outlined, color: actionIconColor, shadows: actionIconShadows), onPressed: widget.onActivity, ), - if (widget.onShowOptions != null) - IconButton( - icon: Icon(Icons.more_vert, color: actionIconColor, shadows: actionIconShadows), - onPressed: widget.onShowOptions, - ), + widget.kebabMenu, ], title: Builder( builder: (context) { diff --git a/mobile/lib/widgets/forms/login/login_form.dart b/mobile/lib/widgets/forms/login/login_form.dart index f810973298..71086fd803 100644 --- a/mobile/lib/widgets/forms/login/login_form.dart +++ b/mobile/lib/widgets/forms/login/login_form.dart @@ -14,6 +14,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:immich_mobile/domain/models/store.model.dart'; import 'package:immich_mobile/entities/store.entity.dart'; import 'package:immich_mobile/extensions/build_context_extensions.dart'; +import 'package:immich_mobile/extensions/translate_extensions.dart'; import 'package:immich_mobile/providers/auth.provider.dart'; import 'package:immich_mobile/providers/background_sync.provider.dart'; import 'package:immich_mobile/providers/backup/backup.provider.dart'; @@ -29,12 +30,7 @@ import 'package:immich_mobile/utils/version_compatibility.dart'; import 'package:immich_mobile/widgets/common/immich_logo.dart'; import 'package:immich_mobile/widgets/common/immich_title_text.dart'; import 'package:immich_mobile/widgets/common/immich_toast.dart'; -import 'package:immich_mobile/widgets/forms/login/email_input.dart'; -import 'package:immich_mobile/widgets/forms/login/loading_icon.dart'; -import 'package:immich_mobile/widgets/forms/login/login_button.dart'; -import 'package:immich_mobile/widgets/forms/login/o_auth_login_button.dart'; -import 'package:immich_mobile/widgets/forms/login/password_input.dart'; -import 'package:immich_mobile/widgets/forms/login/server_endpoint_input.dart'; +import 'package:immich_ui/immich_ui.dart'; import 'package:logging/logging.dart'; import 'package:openapi/api.dart'; import 'package:package_info_plus/package_info_plus.dart'; @@ -45,16 +41,33 @@ class LoginForm extends HookConsumerWidget { final log = Logger('LoginForm'); + String? _validateUrl(String? url) { + if (url == null || url.isEmpty) return null; + + final parsedUrl = Uri.tryParse(url); + if (parsedUrl == null || !parsedUrl.isAbsolute || !parsedUrl.scheme.startsWith("http") || parsedUrl.host.isEmpty) { + return 'login_form_err_invalid_url'.tr(); + } + + return null; + } + + String? _validateEmail(String? email) { + if (email == null || email == '') return null; + if (email.endsWith(' ')) return 'login_form_err_trailing_whitespace'.tr(); + if (email.startsWith(' ')) return 'login_form_err_leading_whitespace'.tr(); + if (email.contains(' ') || !email.contains('@')) { + return 'login_form_err_invalid_email'.tr(); + } + return null; + } + @override Widget build(BuildContext context, WidgetRef ref) { final emailController = useTextEditingController.fromValue(TextEditingValue.empty); final passwordController = useTextEditingController.fromValue(TextEditingValue.empty); final serverEndpointController = useTextEditingController.fromValue(TextEditingValue.empty); - final emailFocusNode = useFocusNode(); final passwordFocusNode = useFocusNode(); - final serverEndpointFocusNode = useFocusNode(); - final isLoading = useState(false); - final isLoadingServer = useState(false); final isOauthEnable = useState(false); final isPasswordLoginEnable = useState(false); final oAuthButtonLabel = useState('OAuth'); @@ -96,7 +109,6 @@ class LoginForm extends HookConsumerWidget { } try { - isLoadingServer.value = true; final endpoint = await ref.read(authProvider.notifier).validateServerUrl(serverUrl); // Fetch and load server config and features @@ -120,7 +132,6 @@ class LoginForm extends HookConsumerWidget { ); isOauthEnable.value = false; isPasswordLoginEnable.value = true; - isLoadingServer.value = false; } on HandshakeException { ImmichToast.show( context: context, @@ -130,7 +141,6 @@ class LoginForm extends HookConsumerWidget { ); isOauthEnable.value = false; isPasswordLoginEnable.value = true; - isLoadingServer.value = false; } catch (e) { ImmichToast.show( context: context, @@ -140,10 +150,7 @@ class LoginForm extends HookConsumerWidget { ); isOauthEnable.value = false; isPasswordLoginEnable.value = true; - isLoadingServer.value = false; } - - isLoadingServer.value = false; } useEffect(() { @@ -230,8 +237,6 @@ class LoginForm extends HookConsumerWidget { login() async { TextInput.finishAutofillContext(); - isLoading.value = true; - // Invalidate all api repository provider instance to take into account new access token invalidateAllApiRepositoryProviders(ref); @@ -261,8 +266,6 @@ class LoginForm extends HookConsumerWidget { toastType: ToastType.error, gravity: ToastGravity.TOP, ); - } finally { - isLoading.value = false; } } @@ -306,8 +309,6 @@ class LoginForm extends HookConsumerWidget { codeChallenge, ); - isLoading.value = true; - // Invalidate all api repository provider instance to take into account new access token invalidateAllApiRepositoryProviders(ref); } catch (error, stack) { @@ -319,7 +320,6 @@ class LoginForm extends HookConsumerWidget { toastType: ToastType.error, gravity: ToastGravity.TOP, ); - isLoading.value = false; return; } @@ -338,7 +338,6 @@ class LoginForm extends HookConsumerWidget { .saveAuthInfo(accessToken: loginResponseDto.accessToken); if (isSuccess) { - isLoading.value = false; final permission = ref.watch(galleryPermissionNotifier); final isBeta = Store.isBetaTimelineEnabled; if (!isBeta && (permission.isGranted || permission.isLimited)) { @@ -364,9 +363,7 @@ class LoginForm extends HookConsumerWidget { toastType: ToastType.error, gravity: ToastGravity.TOP, ); - } finally { - isLoading.value = false; - } + } finally {} } else { ImmichToast.show( context: context, @@ -374,66 +371,10 @@ class LoginForm extends HookConsumerWidget { toastType: ToastType.info, gravity: ToastGravity.TOP, ); - isLoading.value = false; return; } } - buildSelectServer() { - const buttonRadius = 25.0; - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - ServerEndpointInput( - controller: serverEndpointController, - focusNode: serverEndpointFocusNode, - onSubmit: getServerAuthSettings, - ), - const SizedBox(height: 18), - Row( - children: [ - Expanded( - child: ElevatedButton.icon( - style: ElevatedButton.styleFrom( - padding: const EdgeInsets.symmetric(vertical: 12), - shape: const RoundedRectangleBorder( - borderRadius: BorderRadius.only( - topLeft: Radius.circular(buttonRadius), - bottomLeft: Radius.circular(buttonRadius), - ), - ), - ), - onPressed: () => context.pushRoute(const SettingsRoute()), - icon: const Icon(Icons.settings_rounded), - label: const Text(""), - ), - ), - const SizedBox(width: 1), - Expanded( - flex: 3, - child: ElevatedButton.icon( - style: ElevatedButton.styleFrom( - padding: const EdgeInsets.symmetric(vertical: 12), - shape: const RoundedRectangleBorder( - borderRadius: BorderRadius.only( - topRight: Radius.circular(buttonRadius), - bottomRight: Radius.circular(buttonRadius), - ), - ), - ), - onPressed: isLoadingServer.value ? null : getServerAuthSettings, - icon: const Icon(Icons.arrow_forward_rounded), - label: const Text('next', style: TextStyle(fontSize: 14, fontWeight: FontWeight.bold)).tr(), - ), - ), - ], - ), - const SizedBox(height: 18), - if (isLoadingServer.value) const LoadingIcon(), - ], - ); - } - buildVersionCompatWarning() { checkVersionMismatch(); @@ -455,66 +396,102 @@ class LoginForm extends HookConsumerWidget { ); } - buildLogin() { - return AutofillGroup( - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - buildVersionCompatWarning(), - Text( - sanitizeUrl(serverEndpointController.text), - style: context.textTheme.displaySmall, - textAlign: TextAlign.center, + final serverSelectionOrLogin = serverEndpoint.value == null + ? Padding( + padding: const EdgeInsets.only(top: ImmichSpacing.md), + child: Column( + mainAxisSize: MainAxisSize.max, + children: [ + ImmichForm( + submitText: 'next'.t(context: context), + submitIcon: Icons.arrow_forward_rounded, + onSubmit: getServerAuthSettings, + child: ImmichTextInput( + controller: serverEndpointController, + label: 'login_form_endpoint_url'.t(context: context), + hintText: 'login_form_endpoint_hint'.t(context: context), + validator: _validateUrl, + keyboardAction: TextInputAction.next, + keyboardType: TextInputType.url, + autofillHints: const [AutofillHints.url], + onSubmit: (ctx, _) => ImmichForm.of(ctx).submit(), + ), + ), + ImmichTextButton( + labelText: 'settings'.t(context: context), + icon: Icons.settings, + variant: ImmichVariant.ghost, + onPressed: () => context.pushRoute(const SettingsRoute()), + ), + ], ), - if (isPasswordLoginEnable.value) ...[ - const SizedBox(height: 18), - EmailInput( - controller: emailController, - focusNode: emailFocusNode, - onSubmit: passwordFocusNode.requestFocus, - ), - const SizedBox(height: 8), - PasswordInput(controller: passwordController, focusNode: passwordFocusNode, onSubmit: login), - ], - - // Note: This used to have an AnimatedSwitcher, but was removed - // because of https://github.com/flutter/flutter/issues/120874 - isLoading.value - ? const LoadingIcon() - : Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const SizedBox(height: 18), - if (isPasswordLoginEnable.value) LoginButton(onPressed: login), - if (isOauthEnable.value) ...[ - if (isPasswordLoginEnable.value) - Padding( - padding: const EdgeInsets.symmetric(horizontal: 16.0), - child: Divider(color: context.isDarkTheme ? Colors.white : Colors.black), - ), - OAuthLoginButton( - serverEndpointController: serverEndpointController, - buttonLabel: oAuthButtonLabel.value, - isLoading: isLoading, - onPressed: oAuthLogin, + ) + : AutofillGroup( + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisSize: MainAxisSize.max, + children: [ + buildVersionCompatWarning(), + Padding( + padding: const EdgeInsets.only(bottom: ImmichSpacing.md), + child: Text( + sanitizeUrl(serverEndpointController.text), + style: context.textTheme.displaySmall, + textAlign: TextAlign.center, + ), + ), + if (isPasswordLoginEnable.value) + ImmichForm( + submitText: 'login'.t(context: context), + submitIcon: Icons.login_rounded, + onSubmit: login, + child: Column( + spacing: ImmichSpacing.md, + children: [ + ImmichTextInput( + controller: emailController, + label: 'email'.t(context: context), + hintText: 'login_form_email_hint'.t(context: context), + validator: _validateEmail, + keyboardAction: TextInputAction.next, + keyboardType: TextInputType.emailAddress, + autofillHints: const [AutofillHints.email], + onSubmit: (_, _) => passwordFocusNode.requestFocus(), + ), + ImmichPasswordInput( + controller: passwordController, + focusNode: passwordFocusNode, + label: 'password'.t(context: context), + hintText: 'login_form_password_hint'.t(context: context), + keyboardAction: TextInputAction.go, + onSubmit: (ctx, _) => ImmichForm.of(ctx).submit(), ), ], - ], + ), ), - if (!isOauthEnable.value && !isPasswordLoginEnable.value) Center(child: const Text('login_disabled').tr()), - const SizedBox(height: 12), - TextButton.icon( - icon: const Icon(Icons.arrow_back), - onPressed: () => serverEndpoint.value = null, - label: const Text('back').tr(), + if (isOauthEnable.value) + ImmichForm( + submitText: oAuthButtonLabel.value, + submitIcon: Icons.pin_outlined, + onSubmit: oAuthLogin, + child: isPasswordLoginEnable.value + ? Padding( + padding: const EdgeInsets.only(left: 18.0, right: 18.0, top: 12.0), + child: Divider(color: context.isDarkTheme ? Colors.white : Colors.black, height: 5), + ) + : const SizedBox.shrink(), + ), + if (!isOauthEnable.value && !isPasswordLoginEnable.value) + Center(child: const Text('login_disabled').tr()), + ImmichTextButton( + labelText: 'back'.t(context: context), + icon: Icons.arrow_back, + variant: ImmichVariant.ghost, + onPressed: () => serverEndpoint.value = null, + ), + ], ), - ], - ), - ); - } - - final serverSelectionOrLogin = serverEndpoint.value == null ? buildSelectServer() : buildLogin(); + ); return LayoutBuilder( builder: (context, constraints) { diff --git a/mobile/lib/widgets/forms/login/o_auth_login_button.dart b/mobile/lib/widgets/forms/login/o_auth_login_button.dart deleted file mode 100644 index 2d9b603b3c..0000000000 --- a/mobile/lib/widgets/forms/login/o_auth_login_button.dart +++ /dev/null @@ -1,31 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:immich_mobile/extensions/build_context_extensions.dart'; - -class OAuthLoginButton extends ConsumerWidget { - final TextEditingController serverEndpointController; - final ValueNotifier isLoading; - final String buttonLabel; - final Function() onPressed; - - const OAuthLoginButton({ - super.key, - required this.serverEndpointController, - required this.isLoading, - required this.buttonLabel, - required this.onPressed, - }); - - @override - Widget build(BuildContext context, WidgetRef ref) { - return ElevatedButton.icon( - style: ElevatedButton.styleFrom( - backgroundColor: context.primaryColor.withAlpha(230), - padding: const EdgeInsets.symmetric(vertical: 12), - ), - onPressed: onPressed, - icon: const Icon(Icons.pin_rounded), - label: Text(buttonLabel, style: const TextStyle(fontSize: 14, fontWeight: FontWeight.bold)), - ); - } -} diff --git a/mobile/lib/widgets/forms/login/password_input.dart b/mobile/lib/widgets/forms/login/password_input.dart deleted file mode 100644 index 5cdfcc9567..0000000000 --- a/mobile/lib/widgets/forms/login/password_input.dart +++ /dev/null @@ -1,37 +0,0 @@ -import 'package:easy_localization/easy_localization.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_hooks/flutter_hooks.dart'; -import 'package:hooks_riverpod/hooks_riverpod.dart'; - -class PasswordInput extends HookConsumerWidget { - final TextEditingController controller; - final FocusNode? focusNode; - final Function()? onSubmit; - - const PasswordInput({super.key, required this.controller, this.focusNode, this.onSubmit}); - - @override - Widget build(BuildContext context, WidgetRef ref) { - final isPasswordVisible = useState(false); - - return TextFormField( - obscureText: !isPasswordVisible.value, - controller: controller, - decoration: InputDecoration( - labelText: 'password'.tr(), - border: const OutlineInputBorder(), - hintText: 'login_form_password_hint'.tr(), - hintStyle: const TextStyle(fontWeight: FontWeight.normal, fontSize: 14), - suffixIcon: IconButton( - onPressed: () => isPasswordVisible.value = !isPasswordVisible.value, - icon: Icon(isPasswordVisible.value ? Icons.visibility_off_sharp : Icons.visibility_sharp), - ), - ), - autofillHints: const [AutofillHints.password], - keyboardType: TextInputType.text, - onFieldSubmitted: (_) => onSubmit?.call(), - focusNode: focusNode, - textInputAction: TextInputAction.go, - ); - } -} diff --git a/mobile/lib/widgets/forms/login/server_endpoint_input.dart b/mobile/lib/widgets/forms/login/server_endpoint_input.dart deleted file mode 100644 index f9bc1690af..0000000000 --- a/mobile/lib/widgets/forms/login/server_endpoint_input.dart +++ /dev/null @@ -1,46 +0,0 @@ -import 'package:easy_localization/easy_localization.dart'; -import 'package:flutter/material.dart'; -import 'package:immich_mobile/utils/url_helper.dart'; - -class ServerEndpointInput extends StatelessWidget { - final TextEditingController controller; - final FocusNode focusNode; - final Function()? onSubmit; - - const ServerEndpointInput({super.key, required this.controller, required this.focusNode, this.onSubmit}); - - String? _validateInput(String? url) { - if (url == null || url.isEmpty) return null; - - final parsedUrl = Uri.tryParse(sanitizeUrl(url)); - if (parsedUrl == null || !parsedUrl.isAbsolute || !parsedUrl.scheme.startsWith("http") || parsedUrl.host.isEmpty) { - return 'login_form_err_invalid_url'.tr(); - } - - return null; - } - - @override - Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.only(top: 16.0), - child: TextFormField( - controller: controller, - decoration: InputDecoration( - labelText: 'login_form_endpoint_url'.tr(), - border: const OutlineInputBorder(), - hintText: 'login_form_endpoint_hint'.tr(), - errorMaxLines: 4, - ), - validator: _validateInput, - autovalidateMode: AutovalidateMode.always, - focusNode: focusNode, - autofillHints: const [AutofillHints.url], - keyboardType: TextInputType.url, - autocorrect: false, - onFieldSubmitted: (_) => onSubmit?.call(), - textInputAction: TextInputAction.go, - ), - ); - } -} diff --git a/mobile/lib/widgets/settings/free_up_space_settings.dart b/mobile/lib/widgets/settings/free_up_space_settings.dart new file mode 100644 index 0000000000..7acb04686b --- /dev/null +++ b/mobile/lib/widgets/settings/free_up_space_settings.dart @@ -0,0 +1,702 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:immich_mobile/constants/enums.dart'; +import 'package:immich_mobile/domain/models/asset/base_asset.model.dart'; +import 'package:immich_mobile/extensions/build_context_extensions.dart'; +import 'package:immich_mobile/extensions/platform_extensions.dart'; +import 'package:immich_mobile/extensions/translate_extensions.dart'; +import 'package:immich_mobile/providers/cleanup.provider.dart'; +import 'package:immich_mobile/providers/haptic_feedback.provider.dart'; +import 'package:immich_mobile/routing/router.dart'; + +class FreeUpSpaceSettings extends ConsumerStatefulWidget { + const FreeUpSpaceSettings({super.key}); + + @override + ConsumerState createState() => _FreeUpSpaceSettingsState(); +} + +class _FreeUpSpaceSettingsState extends ConsumerState { + CleanupStep _currentStep = CleanupStep.selectDate; + bool _hasScanned = false; + + void _resetState() { + ref.read(cleanupProvider.notifier).reset(); + _hasScanned = false; + } + + CleanupStep get _calculatedStep { + final state = ref.read(cleanupProvider); + + if (state.assetsToDelete.isNotEmpty) { + return CleanupStep.delete; + } + + if (state.selectedDate != null) { + return CleanupStep.filterOptions; + } + + return CleanupStep.selectDate; + } + + void _goToFiltersStep() { + ref.read(hapticFeedbackProvider.notifier).mediumImpact(); + setState(() => _currentStep = CleanupStep.filterOptions); + } + + void _goToScanStep() { + ref.read(hapticFeedbackProvider.notifier).mediumImpact(); + setState(() => _currentStep = CleanupStep.scan); + } + + void _setPresetDate(int daysAgo) { + ref.read(hapticFeedbackProvider.notifier).mediumImpact(); + final date = DateTime.now().subtract(Duration(days: daysAgo)); + ref.read(cleanupProvider.notifier).setSelectedDate(date); + setState(() => _hasScanned = false); + } + + bool _isPresetSelected(int? daysAgo) { + final state = ref.read(cleanupProvider); + if (state.selectedDate == null) return false; + + final expectedDate = daysAgo != null ? DateTime.now().subtract(Duration(days: daysAgo)) : DateTime(2000); + + // Check if dates match (ignoring time component) + return state.selectedDate!.year == expectedDate.year && + state.selectedDate!.month == expectedDate.month && + state.selectedDate!.day == expectedDate.day; + } + + Future _selectDate() async { + final state = ref.read(cleanupProvider); + ref.read(hapticFeedbackProvider.notifier).mediumImpact(); + + final DateTime? picked = await showDatePicker( + context: context, + initialDate: state.selectedDate ?? DateTime.now(), + firstDate: DateTime(2000), + lastDate: DateTime.now(), + ); + + if (picked != null) { + ref.read(cleanupProvider.notifier).setSelectedDate(picked); + } + } + + Future _scanAssets() async { + ref.read(hapticFeedbackProvider.notifier).mediumImpact(); + + await ref.read(cleanupProvider.notifier).scanAssets(); + final state = ref.read(cleanupProvider); + + setState(() { + _hasScanned = true; + if (state.assetsToDelete.isNotEmpty) { + _currentStep = CleanupStep.delete; + } + }); + } + + Future _deleteAssets() async { + final state = ref.read(cleanupProvider); + + if (state.assetsToDelete.isEmpty || state.selectedDate == null) { + return; + } + + ref.read(hapticFeedbackProvider.notifier).mediumImpact(); + final confirmed = await showDialog( + context: context, + builder: (ctx) => + _DeleteConfirmationDialog(assetCount: state.assetsToDelete.length, cutoffDate: state.selectedDate!), + ); + + if (confirmed != true) { + return; + } + + final deletedCount = await ref.read(cleanupProvider.notifier).deleteAssets(); + + if (mounted && deletedCount > 0) { + ref.read(hapticFeedbackProvider.notifier).heavyImpact(); + + await showDialog( + context: context, + builder: (ctx) => _DeleteSuccessDialog(deletedCount: deletedCount), + ); + } + + setState(() => _currentStep = CleanupStep.selectDate); + } + + void _showAssetsPreview(List assets) { + ref.read(hapticFeedbackProvider.notifier).mediumImpact(); + context.pushRoute(CleanupPreviewRoute(assets: assets)); + } + + @override + Widget build(BuildContext context) { + final state = ref.watch(cleanupProvider); + final hasDate = state.selectedDate != null; + final hasAssets = _hasScanned && state.assetsToDelete.isNotEmpty; + + StepStyle styleForState(StepState stepState, {bool isDestructive = false}) { + switch (stepState) { + case StepState.complete: + return StepStyle( + color: context.colorScheme.primary, + indexStyle: TextStyle(color: context.colorScheme.onPrimary, fontWeight: FontWeight.w500), + ); + case StepState.disabled: + return StepStyle( + color: context.colorScheme.onSurface.withValues(alpha: 0.38), + indexStyle: TextStyle(color: context.colorScheme.surface, fontWeight: FontWeight.w500), + ); + case StepState.indexed: + case StepState.editing: + case StepState.error: + if (isDestructive) { + return StepStyle( + color: context.colorScheme.error, + indexStyle: TextStyle(color: context.colorScheme.onError, fontWeight: FontWeight.w500), + ); + } + return StepStyle( + color: context.colorScheme.onSurface.withValues(alpha: 0.6), + indexStyle: TextStyle(color: context.colorScheme.surface, fontWeight: FontWeight.w500), + ); + } + } + + final step1State = hasDate ? StepState.complete : StepState.indexed; + final step2State = hasDate ? StepState.complete : StepState.disabled; + final step3State = hasAssets + ? StepState.complete + : hasDate + ? StepState.indexed + : StepState.disabled; + final step4State = hasAssets ? StepState.indexed : StepState.disabled; + + String getFilterSubtitle() { + final parts = []; + switch (state.filterType) { + case AssetFilterType.all: + parts.add('all'.t(context: context)); + case AssetFilterType.photosOnly: + parts.add('photos_only'.t(context: context)); + case AssetFilterType.videosOnly: + parts.add('videos_only'.t(context: context)); + } + if (state.keepFavorites) { + parts.add('keep_favorites'.t(context: context)); + } + return parts.join(' â€ĸ '); + } + + return PopScope( + onPopInvokedWithResult: (didPop, result) { + if (didPop) { + _resetState(); + } + }, + child: SingleChildScrollView( + child: Column( + children: [ + Padding( + padding: const EdgeInsets.all(16.0), + child: Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: context.colorScheme.surfaceContainerLow, + borderRadius: const BorderRadius.all(Radius.circular(12)), + border: Border.all(color: context.primaryColor.withValues(alpha: 0.25)), + ), + child: Text( + 'free_up_space_description'.t(context: context), + style: context.textTheme.labelLarge?.copyWith(fontSize: 15), + ), + ), + ), + + Stepper( + physics: const NeverScrollableScrollPhysics(), + currentStep: _currentStep.index, + onStepTapped: (step) { + // Only allow going back or to completed steps + if (step <= _calculatedStep.index) { + setState(() => _currentStep = CleanupStep.values[step]); + } + }, + controlsBuilder: (_, __) => const SizedBox.shrink(), + steps: [ + // Step 1: Select Cutoff Date + Step( + stepStyle: styleForState(step1State), + title: Text( + 'select_cutoff_date'.t(context: context), + style: context.textTheme.titleMedium?.copyWith( + fontWeight: FontWeight.w600, + color: step1State == StepState.complete + ? context.colorScheme.primary + : context.colorScheme.onSurface, + ), + ), + subtitle: hasDate + ? Text( + DateFormat.yMMMd().format(state.selectedDate!), + style: context.textTheme.bodyMedium?.copyWith( + color: context.colorScheme.primary, + fontWeight: FontWeight.w500, + ), + ) + : null, + content: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Text('cutoff_date_description'.t(context: context), style: context.textTheme.labelLarge), + const SizedBox(height: 16), + GridView.count( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + crossAxisCount: 3, + mainAxisSpacing: 8, + crossAxisSpacing: 8, + childAspectRatio: 1.4, + children: [ + _DatePresetCard( + value: '30', + unit: 'cutoff_day'.t(context: context, args: {'count': '30'}), + onTap: () => _setPresetDate(30), + isSelected: _isPresetSelected(30), + ), + _DatePresetCard( + value: '60', + unit: 'cutoff_day'.t(context: context, args: {'count': '60'}), + + onTap: () => _setPresetDate(60), + isSelected: _isPresetSelected(60), + ), + _DatePresetCard( + value: '90', + unit: 'cutoff_day'.t(context: context, args: {'count': '90'}), + + onTap: () => _setPresetDate(90), + isSelected: _isPresetSelected(90), + ), + _DatePresetCard( + value: '1', + unit: 'cutoff_year'.t(context: context, args: {'count': '1'}), + onTap: () => _setPresetDate(365), + isSelected: _isPresetSelected(365), + ), + _DatePresetCard( + value: '2', + unit: 'cutoff_year'.t(context: context, args: {'count': '2'}), + onTap: () => _setPresetDate(730), + isSelected: _isPresetSelected(730), + ), + _DatePresetCard( + value: '3', + unit: 'cutoff_year'.t(context: context, args: {'count': '3'}), + onTap: () => _setPresetDate(1095), + isSelected: _isPresetSelected(1095), + ), + ], + ), + const SizedBox(height: 16), + OutlinedButton.icon( + onPressed: _selectDate, + icon: const Icon(Icons.calendar_today), + label: Text('custom_date'.t(context: context)), + style: OutlinedButton.styleFrom(minimumSize: const Size(double.infinity, 48)), + ), + const SizedBox(height: 16), + ElevatedButton.icon( + onPressed: hasDate ? () => _goToFiltersStep() : null, + icon: const Icon(Icons.arrow_forward), + label: Text('continue'.t(context: context)), + style: ElevatedButton.styleFrom(minimumSize: const Size(double.infinity, 48)), + ), + ], + ), + isActive: true, + state: step1State, + ), + + // Step 2: Select Filter Options + Step( + stepStyle: styleForState(step2State), + title: Text( + 'filter_options'.t(context: context), + style: context.textTheme.titleMedium?.copyWith( + fontWeight: FontWeight.w600, + color: step2State == StepState.complete + ? context.colorScheme.primary + : step2State == StepState.disabled + ? context.colorScheme.onSurface.withValues(alpha: 0.38) + : context.colorScheme.onSurface, + ), + ), + subtitle: hasDate + ? Text( + getFilterSubtitle(), + style: context.textTheme.bodyMedium?.copyWith( + color: context.colorScheme.primary, + fontWeight: FontWeight.w500, + ), + ) + : null, + content: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Text('cleanup_filter_description'.t(context: context), style: context.textTheme.labelLarge), + const SizedBox(height: 16), + SegmentedButton( + segments: [ + ButtonSegment( + value: AssetFilterType.all, + label: Text('all'.t(context: context)), + icon: const Icon(Icons.photo_library), + ), + ButtonSegment( + value: AssetFilterType.photosOnly, + label: Text('photos'.t(context: context)), + icon: const Icon(Icons.photo), + ), + ButtonSegment( + value: AssetFilterType.videosOnly, + label: Text('videos'.t(context: context)), + icon: const Icon(Icons.videocam), + ), + ], + selected: {state.filterType}, + onSelectionChanged: (selection) { + ref.read(cleanupProvider.notifier).setFilterType(selection.first); + setState(() => _hasScanned = false); + }, + ), + const SizedBox(height: 16), + SwitchListTile( + contentPadding: EdgeInsets.zero, + title: Text('keep_favorites'.t(context: context), style: context.textTheme.titleSmall), + subtitle: Text( + 'keep_favorites_description'.t(context: context), + style: context.textTheme.labelLarge, + ), + value: state.keepFavorites, + onChanged: (value) { + ref.read(cleanupProvider.notifier).setKeepFavorites(value); + setState(() => _hasScanned = false); + }, + ), + const SizedBox(height: 16), + ElevatedButton.icon( + onPressed: _goToScanStep, + icon: const Icon(Icons.arrow_forward), + label: Text('continue'.t(context: context)), + style: ElevatedButton.styleFrom(minimumSize: const Size(double.infinity, 48)), + ), + ], + ), + isActive: hasDate, + state: step2State, + ), + + // Step 3: Scan Assets + Step( + stepStyle: styleForState(step3State), + title: Text( + 'scan'.t(context: context), + style: context.textTheme.titleMedium?.copyWith( + fontWeight: FontWeight.w600, + color: step3State == StepState.complete + ? context.colorScheme.primary + : step3State == StepState.disabled + ? context.colorScheme.onSurface.withValues(alpha: 0.38) + : context.colorScheme.onSurface, + ), + ), + subtitle: _hasScanned + ? Text( + 'cleanup_found_assets'.t( + context: context, + args: {'count': state.assetsToDelete.length.toString()}, + ), + style: context.textTheme.bodyMedium?.copyWith( + color: state.assetsToDelete.isNotEmpty + ? context.colorScheme.primary + : context.colorScheme.onSurface.withValues(alpha: 0.6), + fontWeight: FontWeight.w500, + ), + ) + : null, + content: Column( + children: [ + Text( + 'cleanup_step3_description'.t(context: context), + style: context.textTheme.labelLarge?.copyWith(fontSize: 15), + ), + if (CurrentPlatform.isIOS) ...[ + const SizedBox(height: 12), + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: context.colorScheme.primaryContainer.withValues(alpha: 0.3), + borderRadius: const BorderRadius.all(Radius.circular(12)), + ), + child: Row( + children: [ + Icon(Icons.info_outline, color: context.colorScheme.primary), + const SizedBox(width: 12), + Expanded( + child: Text( + 'cleanup_icloud_shared_albums_excluded'.t(context: context), + style: context.textTheme.labelLarge, + ), + ), + ], + ), + ), + ], + const SizedBox(height: 16), + state.isScanning + ? SizedBox( + width: 28, + height: 28, + child: CircularProgressIndicator( + strokeWidth: 2, + backgroundColor: context.colorScheme.primary.withAlpha(50), + ), + ) + : ElevatedButton.icon( + onPressed: state.isScanning ? null : _scanAssets, + icon: const Icon(Icons.search), + label: Text(_hasScanned ? 'rescan'.t(context: context) : 'scan'.t(context: context)), + style: ElevatedButton.styleFrom(minimumSize: const Size(double.infinity, 48)), + ), + if (_hasScanned && state.assetsToDelete.isEmpty) ...[ + const SizedBox(height: 16), + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: Colors.orange.withValues(alpha: 0.1), + borderRadius: const BorderRadius.all(Radius.circular(8)), + ), + child: Row( + children: [ + const Icon(Icons.info, color: Colors.orange), + const SizedBox(width: 12), + Expanded( + child: Text( + 'cleanup_no_assets_found'.t(context: context), + style: context.textTheme.bodyMedium, + ), + ), + ], + ), + ), + ], + ], + ), + isActive: hasDate, + state: step3State, + ), + + // Step 4: Delete Assets + Step( + stepStyle: styleForState(step4State, isDestructive: true), + title: Text( + 'move_to_device_trash'.t(context: context), + style: context.textTheme.titleMedium?.copyWith( + fontWeight: FontWeight.w600, + color: step4State == StepState.disabled + ? context.colorScheme.onSurface.withValues(alpha: 0.38) + : context.colorScheme.error, + ), + ), + content: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: context.colorScheme.errorContainer.withValues(alpha: 0.3), + borderRadius: const BorderRadius.all(Radius.circular(12)), + border: Border.all(color: context.colorScheme.error.withValues(alpha: 0.3)), + ), + child: hasAssets + ? Text( + 'cleanup_step4_summary'.t( + context: context, + args: { + 'count': state.assetsToDelete.length.toString(), + 'date': DateFormat.yMMMd().format(state.selectedDate!), + }, + ), + style: context.textTheme.labelLarge?.copyWith(fontSize: 15), + ) + : null, + ), + const SizedBox(height: 16), + OutlinedButton.icon( + onPressed: () => _showAssetsPreview(state.assetsToDelete), + icon: const Icon(Icons.preview), + label: Text('preview'.t(context: context)), + style: OutlinedButton.styleFrom(minimumSize: const Size(double.infinity, 48)), + ), + const SizedBox(height: 12), + ElevatedButton.icon( + onPressed: state.isDeleting ? null : _deleteAssets, + icon: state.isDeleting + ? const SizedBox( + width: 20, + height: 20, + child: CircularProgressIndicator(strokeWidth: 2, color: Colors.white), + ) + : const Icon(Icons.delete_forever), + label: Text( + state.isDeleting + ? 'cleanup_deleting'.t(context: context) + : 'move_to_device_trash'.t(context: context), + ), + style: ElevatedButton.styleFrom( + backgroundColor: context.colorScheme.error, + foregroundColor: context.colorScheme.onError, + minimumSize: const Size(double.infinity, 56), + textStyle: const TextStyle(fontSize: 16, fontWeight: FontWeight.w600), + ), + ), + ], + ), + isActive: hasAssets, + state: step4State, + ), + ], + ), + ], + ), + ), + ); + } +} + +class _DeleteConfirmationDialog extends StatelessWidget { + final int assetCount; + final DateTime cutoffDate; + + const _DeleteConfirmationDialog({required this.assetCount, required this.cutoffDate}); + + @override + Widget build(BuildContext context) { + return AlertDialog( + title: Text('cleanup_confirm_prompt_title'.t(context: context)), + content: Text( + 'cleanup_confirm_description'.t( + context: context, + args: {'count': assetCount.toString(), 'date': DateFormat.yMMMd().format(cutoffDate)}, + ), + style: context.textTheme.labelLarge?.copyWith(fontSize: 15), + ), + actions: [ + TextButton( + onPressed: () => context.pop(false), + child: Text('cancel'.t(context: context)), + ), + ElevatedButton( + onPressed: () => context.pop(true), + style: ElevatedButton.styleFrom( + backgroundColor: context.colorScheme.error, + foregroundColor: context.colorScheme.onError, + ), + child: Text('confirm'.t(context: context)), + ), + ], + ); + } +} + +class _DeleteSuccessDialog extends StatelessWidget { + final int deletedCount; + + const _DeleteSuccessDialog({required this.deletedCount}); + + @override + Widget build(BuildContext context) { + return AlertDialog( + icon: Icon(Icons.check_circle, color: context.colorScheme.primary, size: 48), + title: Text('success'.t(context: context)), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + 'cleanup_deleted_assets'.t(context: context, args: {'count': deletedCount.toString()}), + style: context.textTheme.labelLarge?.copyWith(fontSize: 16), + textAlign: TextAlign.center, + ), + const SizedBox(height: 16), + Text( + 'cleanup_trash_hint'.t(context: context), + style: context.textTheme.labelLarge?.copyWith(fontSize: 16, color: context.primaryColor), + textAlign: TextAlign.center, + ), + ], + ), + actions: [ + ElevatedButton( + onPressed: () => context.pop(), + child: Text('done'.t(context: context)), + ), + ], + ); + } +} + +class _DatePresetCard extends StatelessWidget { + final String value; + final String unit; + final VoidCallback onTap; + final bool isSelected; + + const _DatePresetCard({required this.value, required this.unit, required this.onTap, required this.isSelected}); + + @override + Widget build(BuildContext context) { + return Material( + color: isSelected ? context.colorScheme.primaryContainer.withAlpha(100) : context.colorScheme.surfaceContainer, + borderRadius: const BorderRadius.all(Radius.circular(12)), + child: InkWell( + onTap: onTap, + borderRadius: const BorderRadius.all(Radius.circular(12)), + child: Container( + decoration: BoxDecoration( + borderRadius: const BorderRadius.all(Radius.circular(12)), + border: Border.all(color: isSelected ? context.colorScheme.primary : Colors.transparent, width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + value, + style: context.textTheme.headlineSmall?.copyWith( + fontWeight: FontWeight.bold, + color: isSelected ? context.colorScheme.primary : context.colorScheme.onSurface, + ), + ), + Text( + unit, + style: context.textTheme.bodySmall?.copyWith( + color: isSelected + ? context.colorScheme.primary + : context.colorScheme.onSurface.withValues(alpha: 0.7), + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/mobile/makefile b/mobile/makefile index b90e95c902..3b211bcd09 100644 --- a/mobile/makefile +++ b/mobile/makefile @@ -33,7 +33,7 @@ migration: dart run drift_dev make-migrations translation: - npm --prefix ../web run format:i18n + npm --prefix ../i18n run format:fix dart run easy_localization:generate -S ../i18n dart run bin/generate_keys.dart dart format lib/generated/codegen_loader.g.dart diff --git a/mobile/openapi/README.md b/mobile/openapi/README.md index 268c4849c5..657e62bf6d 100644 --- a/mobile/openapi/README.md +++ b/mobile/openapi/README.md @@ -3,7 +3,7 @@ Immich API This Dart package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 2.3.1 +- API version: 2.4.1 - Generator version: 7.8.0 - Build package: org.openapitools.codegen.languages.DartClientCodegen @@ -100,6 +100,7 @@ Class | Method | HTTP request | Description *AssetsApi* | [**copyAsset**](doc//AssetsApi.md#copyasset) | **PUT** /assets/copy | Copy asset *AssetsApi* | [**deleteAssetMetadata**](doc//AssetsApi.md#deleteassetmetadata) | **DELETE** /assets/{id}/metadata/{key} | Delete asset metadata by key *AssetsApi* | [**deleteAssets**](doc//AssetsApi.md#deleteassets) | **DELETE** /assets | Delete assets +*AssetsApi* | [**deleteBulkAssetMetadata**](doc//AssetsApi.md#deletebulkassetmetadata) | **DELETE** /assets/metadata | Delete asset metadata *AssetsApi* | [**downloadAsset**](doc//AssetsApi.md#downloadasset) | **GET** /assets/{id}/original | Download original asset *AssetsApi* | [**getAllUserAssetsByDeviceId**](doc//AssetsApi.md#getalluserassetsbydeviceid) | **GET** /assets/device/{deviceId} | Retrieve assets by device ID *AssetsApi* | [**getAssetInfo**](doc//AssetsApi.md#getassetinfo) | **GET** /assets/{id} | Retrieve an asset @@ -114,6 +115,7 @@ Class | Method | HTTP request | Description *AssetsApi* | [**updateAsset**](doc//AssetsApi.md#updateasset) | **PUT** /assets/{id} | Update an asset *AssetsApi* | [**updateAssetMetadata**](doc//AssetsApi.md#updateassetmetadata) | **PUT** /assets/{id}/metadata | Update asset metadata *AssetsApi* | [**updateAssets**](doc//AssetsApi.md#updateassets) | **PUT** /assets | Update assets +*AssetsApi* | [**updateBulkAssetMetadata**](doc//AssetsApi.md#updatebulkassetmetadata) | **PUT** /assets/metadata | Upsert asset metadata *AssetsApi* | [**uploadAsset**](doc//AssetsApi.md#uploadasset) | **POST** /assets | Upload asset *AssetsApi* | [**viewAsset**](doc//AssetsApi.md#viewasset) | **GET** /assets/{id}/thumbnail | View asset thumbnail *AuthenticationApi* | [**changePassword**](doc//AuthenticationApi.md#changepassword) | **POST** /auth/change-password | Change password @@ -199,6 +201,7 @@ Class | Method | HTTP request | Description *PeopleApi* | [**updatePeople**](doc//PeopleApi.md#updatepeople) | **PUT** /people | Update people *PeopleApi* | [**updatePerson**](doc//PeopleApi.md#updateperson) | **PUT** /people/{id} | Update person *PluginsApi* | [**getPlugin**](doc//PluginsApi.md#getplugin) | **GET** /plugins/{id} | Retrieve a plugin +*PluginsApi* | [**getPluginTriggers**](doc//PluginsApi.md#getplugintriggers) | **GET** /plugins/triggers | List all plugin triggers *PluginsApi* | [**getPlugins**](doc//PluginsApi.md#getplugins) | **GET** /plugins | List all plugins *QueuesApi* | [**emptyQueue**](doc//QueuesApi.md#emptyqueue) | **DELETE** /queues/{name}/jobs | Empty a queue *QueuesApi* | [**getQueue**](doc//QueuesApi.md#getqueue) | **GET** /queues/{name} | Retrieve a queue @@ -357,7 +360,11 @@ Class | Method | HTTP request | Description - [AssetMediaResponseDto](doc//AssetMediaResponseDto.md) - [AssetMediaSize](doc//AssetMediaSize.md) - [AssetMediaStatus](doc//AssetMediaStatus.md) - - [AssetMetadataKey](doc//AssetMetadataKey.md) + - [AssetMetadataBulkDeleteDto](doc//AssetMetadataBulkDeleteDto.md) + - [AssetMetadataBulkDeleteItemDto](doc//AssetMetadataBulkDeleteItemDto.md) + - [AssetMetadataBulkResponseDto](doc//AssetMetadataBulkResponseDto.md) + - [AssetMetadataBulkUpsertDto](doc//AssetMetadataBulkUpsertDto.md) + - [AssetMetadataBulkUpsertItemDto](doc//AssetMetadataBulkUpsertItemDto.md) - [AssetMetadataResponseDto](doc//AssetMetadataResponseDto.md) - [AssetMetadataUpsertDto](doc//AssetMetadataUpsertDto.md) - [AssetMetadataUpsertItemDto](doc//AssetMetadataUpsertItemDto.md) @@ -465,9 +472,10 @@ Class | Method | HTTP request | Description - [PinCodeSetupDto](doc//PinCodeSetupDto.md) - [PlacesResponseDto](doc//PlacesResponseDto.md) - [PluginActionResponseDto](doc//PluginActionResponseDto.md) - - [PluginContext](doc//PluginContext.md) + - [PluginContextType](doc//PluginContextType.md) - [PluginFilterResponseDto](doc//PluginFilterResponseDto.md) - [PluginResponseDto](doc//PluginResponseDto.md) + - [PluginTriggerResponseDto](doc//PluginTriggerResponseDto.md) - [PluginTriggerType](doc//PluginTriggerType.md) - [PurchaseResponse](doc//PurchaseResponse.md) - [PurchaseUpdate](doc//PurchaseUpdate.md) diff --git a/mobile/openapi/lib/api.dart b/mobile/openapi/lib/api.dart index 21730074aa..59f31d1392 100644 --- a/mobile/openapi/lib/api.dart +++ b/mobile/openapi/lib/api.dart @@ -109,7 +109,11 @@ part 'model/asset_jobs_dto.dart'; part 'model/asset_media_response_dto.dart'; part 'model/asset_media_size.dart'; part 'model/asset_media_status.dart'; -part 'model/asset_metadata_key.dart'; +part 'model/asset_metadata_bulk_delete_dto.dart'; +part 'model/asset_metadata_bulk_delete_item_dto.dart'; +part 'model/asset_metadata_bulk_response_dto.dart'; +part 'model/asset_metadata_bulk_upsert_dto.dart'; +part 'model/asset_metadata_bulk_upsert_item_dto.dart'; part 'model/asset_metadata_response_dto.dart'; part 'model/asset_metadata_upsert_dto.dart'; part 'model/asset_metadata_upsert_item_dto.dart'; @@ -217,9 +221,10 @@ part 'model/pin_code_reset_dto.dart'; part 'model/pin_code_setup_dto.dart'; part 'model/places_response_dto.dart'; part 'model/plugin_action_response_dto.dart'; -part 'model/plugin_context.dart'; +part 'model/plugin_context_type.dart'; part 'model/plugin_filter_response_dto.dart'; part 'model/plugin_response_dto.dart'; +part 'model/plugin_trigger_response_dto.dart'; part 'model/plugin_trigger_type.dart'; part 'model/purchase_response.dart'; part 'model/purchase_update.dart'; diff --git a/mobile/openapi/lib/api/assets_api.dart b/mobile/openapi/lib/api/assets_api.dart index 5020afc4b2..ac50d015ed 100644 --- a/mobile/openapi/lib/api/assets_api.dart +++ b/mobile/openapi/lib/api/assets_api.dart @@ -186,12 +186,12 @@ class AssetsApi { /// /// * [String] id (required): /// - /// * [AssetMetadataKey] key (required): - Future deleteAssetMetadataWithHttpInfo(String id, AssetMetadataKey key,) async { + /// * [String] key (required): + Future deleteAssetMetadataWithHttpInfo(String id, String key,) async { // ignore: prefer_const_declarations final apiPath = r'/assets/{id}/metadata/{key}' .replaceAll('{id}', id) - .replaceAll('{key}', key.toString()); + .replaceAll('{key}', key); // ignore: prefer_final_locals Object? postBody; @@ -222,8 +222,8 @@ class AssetsApi { /// /// * [String] id (required): /// - /// * [AssetMetadataKey] key (required): - Future deleteAssetMetadata(String id, AssetMetadataKey key,) async { + /// * [String] key (required): + Future deleteAssetMetadata(String id, String key,) async { final response = await deleteAssetMetadataWithHttpInfo(id, key,); if (response.statusCode >= HttpStatus.badRequest) { throw ApiException(response.statusCode, await _decodeBodyBytes(response)); @@ -278,6 +278,54 @@ class AssetsApi { } } + /// Delete asset metadata + /// + /// Delete metadata key-value pairs for multiple assets. + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [AssetMetadataBulkDeleteDto] assetMetadataBulkDeleteDto (required): + Future deleteBulkAssetMetadataWithHttpInfo(AssetMetadataBulkDeleteDto assetMetadataBulkDeleteDto,) async { + // ignore: prefer_const_declarations + final apiPath = r'/assets/metadata'; + + // ignore: prefer_final_locals + Object? postBody = assetMetadataBulkDeleteDto; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + const contentTypes = ['application/json']; + + + return apiClient.invokeAPI( + apiPath, + 'DELETE', + queryParams, + postBody, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + ); + } + + /// Delete asset metadata + /// + /// Delete metadata key-value pairs for multiple assets. + /// + /// Parameters: + /// + /// * [AssetMetadataBulkDeleteDto] assetMetadataBulkDeleteDto (required): + Future deleteBulkAssetMetadata(AssetMetadataBulkDeleteDto assetMetadataBulkDeleteDto,) async { + final response = await deleteBulkAssetMetadataWithHttpInfo(assetMetadataBulkDeleteDto,); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, await _decodeBodyBytes(response)); + } + } + /// Download original asset /// /// Downloads the original file of the specified asset. @@ -552,12 +600,12 @@ class AssetsApi { /// /// * [String] id (required): /// - /// * [AssetMetadataKey] key (required): - Future getAssetMetadataByKeyWithHttpInfo(String id, AssetMetadataKey key,) async { + /// * [String] key (required): + Future getAssetMetadataByKeyWithHttpInfo(String id, String key,) async { // ignore: prefer_const_declarations final apiPath = r'/assets/{id}/metadata/{key}' .replaceAll('{id}', id) - .replaceAll('{key}', key.toString()); + .replaceAll('{key}', key); // ignore: prefer_final_locals Object? postBody; @@ -588,8 +636,8 @@ class AssetsApi { /// /// * [String] id (required): /// - /// * [AssetMetadataKey] key (required): - Future getAssetMetadataByKey(String id, AssetMetadataKey key,) async { + /// * [String] key (required): + Future getAssetMetadataByKey(String id, String key,) async { final response = await getAssetMetadataByKeyWithHttpInfo(id, key,); if (response.statusCode >= HttpStatus.badRequest) { throw ApiException(response.statusCode, await _decodeBodyBytes(response)); @@ -1228,6 +1276,65 @@ class AssetsApi { } } + /// Upsert asset metadata + /// + /// Upsert metadata key-value pairs for multiple assets. + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [AssetMetadataBulkUpsertDto] assetMetadataBulkUpsertDto (required): + Future updateBulkAssetMetadataWithHttpInfo(AssetMetadataBulkUpsertDto assetMetadataBulkUpsertDto,) async { + // ignore: prefer_const_declarations + final apiPath = r'/assets/metadata'; + + // ignore: prefer_final_locals + Object? postBody = assetMetadataBulkUpsertDto; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + const contentTypes = ['application/json']; + + + return apiClient.invokeAPI( + apiPath, + 'PUT', + queryParams, + postBody, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + ); + } + + /// Upsert asset metadata + /// + /// Upsert metadata key-value pairs for multiple assets. + /// + /// Parameters: + /// + /// * [AssetMetadataBulkUpsertDto] assetMetadataBulkUpsertDto (required): + Future?> updateBulkAssetMetadata(AssetMetadataBulkUpsertDto assetMetadataBulkUpsertDto,) async { + final response = await updateBulkAssetMetadataWithHttpInfo(assetMetadataBulkUpsertDto,); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, await _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) { + final responseBody = await _decodeBodyBytes(response); + return (await apiClient.deserializeAsync(responseBody, 'List') as List) + .cast() + .toList(growable: false); + + } + return null; + } + /// Upload asset /// /// Uploads a new asset to the server. @@ -1246,8 +1353,6 @@ class AssetsApi { /// /// * [DateTime] fileModifiedAt (required): /// - /// * [List] metadata (required): - /// /// * [String] key: /// /// * [String] slug: @@ -1263,10 +1368,12 @@ class AssetsApi { /// /// * [String] livePhotoVideoId: /// + /// * [List] metadata: + /// /// * [MultipartFile] sidecarData: /// /// * [AssetVisibility] visibility: - Future uploadAssetWithHttpInfo(MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, List metadata, { String? key, String? slug, String? xImmichChecksum, String? duration, String? filename, bool? isFavorite, String? livePhotoVideoId, MultipartFile? sidecarData, AssetVisibility? visibility, }) async { + Future uploadAssetWithHttpInfo(MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, { String? key, String? slug, String? xImmichChecksum, String? duration, String? filename, bool? isFavorite, String? livePhotoVideoId, List? metadata, MultipartFile? sidecarData, AssetVisibility? visibility, }) async { // ignore: prefer_const_declarations final apiPath = r'/assets'; @@ -1373,8 +1480,6 @@ class AssetsApi { /// /// * [DateTime] fileModifiedAt (required): /// - /// * [List] metadata (required): - /// /// * [String] key: /// /// * [String] slug: @@ -1390,11 +1495,13 @@ class AssetsApi { /// /// * [String] livePhotoVideoId: /// + /// * [List] metadata: + /// /// * [MultipartFile] sidecarData: /// /// * [AssetVisibility] visibility: - Future uploadAsset(MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, List metadata, { String? key, String? slug, String? xImmichChecksum, String? duration, String? filename, bool? isFavorite, String? livePhotoVideoId, MultipartFile? sidecarData, AssetVisibility? visibility, }) async { - final response = await uploadAssetWithHttpInfo(assetData, deviceAssetId, deviceId, fileCreatedAt, fileModifiedAt, metadata, key: key, slug: slug, xImmichChecksum: xImmichChecksum, duration: duration, filename: filename, isFavorite: isFavorite, livePhotoVideoId: livePhotoVideoId, sidecarData: sidecarData, visibility: visibility, ); + Future uploadAsset(MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, { String? key, String? slug, String? xImmichChecksum, String? duration, String? filename, bool? isFavorite, String? livePhotoVideoId, List? metadata, MultipartFile? sidecarData, AssetVisibility? visibility, }) async { + final response = await uploadAssetWithHttpInfo(assetData, deviceAssetId, deviceId, fileCreatedAt, fileModifiedAt, key: key, slug: slug, xImmichChecksum: xImmichChecksum, duration: duration, filename: filename, isFavorite: isFavorite, livePhotoVideoId: livePhotoVideoId, metadata: metadata, sidecarData: sidecarData, visibility: visibility, ); if (response.statusCode >= HttpStatus.badRequest) { throw ApiException(response.statusCode, await _decodeBodyBytes(response)); } diff --git a/mobile/openapi/lib/api/plugins_api.dart b/mobile/openapi/lib/api/plugins_api.dart index 264d3049e8..5735fba379 100644 --- a/mobile/openapi/lib/api/plugins_api.dart +++ b/mobile/openapi/lib/api/plugins_api.dart @@ -73,6 +73,57 @@ class PluginsApi { return null; } + /// List all plugin triggers + /// + /// Retrieve a list of all available plugin triggers. + /// + /// Note: This method returns the HTTP [Response]. + Future getPluginTriggersWithHttpInfo() async { + // ignore: prefer_const_declarations + final apiPath = r'/plugins/triggers'; + + // ignore: prefer_final_locals + Object? postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + const contentTypes = []; + + + return apiClient.invokeAPI( + apiPath, + 'GET', + queryParams, + postBody, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + ); + } + + /// List all plugin triggers + /// + /// Retrieve a list of all available plugin triggers. + Future?> getPluginTriggers() async { + final response = await getPluginTriggersWithHttpInfo(); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, await _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) { + final responseBody = await _decodeBodyBytes(response); + return (await apiClient.deserializeAsync(responseBody, 'List') as List) + .cast() + .toList(growable: false); + + } + return null; + } + /// List all plugins /// /// Retrieve a list of plugins available to the authenticated user. diff --git a/mobile/openapi/lib/api/shared_links_api.dart b/mobile/openapi/lib/api/shared_links_api.dart index 79106e5db6..587a9640b4 100644 --- a/mobile/openapi/lib/api/shared_links_api.dart +++ b/mobile/openapi/lib/api/shared_links_api.dart @@ -160,7 +160,9 @@ class SharedLinksApi { /// Parameters: /// /// * [String] albumId: - Future getAllSharedLinksWithHttpInfo({ String? albumId, }) async { + /// + /// * [String] id: + Future getAllSharedLinksWithHttpInfo({ String? albumId, String? id, }) async { // ignore: prefer_const_declarations final apiPath = r'/shared-links'; @@ -174,6 +176,9 @@ class SharedLinksApi { if (albumId != null) { queryParams.addAll(_queryParams('', 'albumId', albumId)); } + if (id != null) { + queryParams.addAll(_queryParams('', 'id', id)); + } const contentTypes = []; @@ -196,8 +201,10 @@ class SharedLinksApi { /// Parameters: /// /// * [String] albumId: - Future?> getAllSharedLinks({ String? albumId, }) async { - final response = await getAllSharedLinksWithHttpInfo( albumId: albumId, ); + /// + /// * [String] id: + Future?> getAllSharedLinks({ String? albumId, String? id, }) async { + final response = await getAllSharedLinksWithHttpInfo( albumId: albumId, id: id, ); if (response.statusCode >= HttpStatus.badRequest) { throw ApiException(response.statusCode, await _decodeBodyBytes(response)); } diff --git a/mobile/openapi/lib/api_client.dart b/mobile/openapi/lib/api_client.dart index 041be67015..6f68e44cef 100644 --- a/mobile/openapi/lib/api_client.dart +++ b/mobile/openapi/lib/api_client.dart @@ -266,8 +266,16 @@ class ApiClient { return AssetMediaSizeTypeTransformer().decode(value); case 'AssetMediaStatus': return AssetMediaStatusTypeTransformer().decode(value); - case 'AssetMetadataKey': - return AssetMetadataKeyTypeTransformer().decode(value); + case 'AssetMetadataBulkDeleteDto': + return AssetMetadataBulkDeleteDto.fromJson(value); + case 'AssetMetadataBulkDeleteItemDto': + return AssetMetadataBulkDeleteItemDto.fromJson(value); + case 'AssetMetadataBulkResponseDto': + return AssetMetadataBulkResponseDto.fromJson(value); + case 'AssetMetadataBulkUpsertDto': + return AssetMetadataBulkUpsertDto.fromJson(value); + case 'AssetMetadataBulkUpsertItemDto': + return AssetMetadataBulkUpsertItemDto.fromJson(value); case 'AssetMetadataResponseDto': return AssetMetadataResponseDto.fromJson(value); case 'AssetMetadataUpsertDto': @@ -482,12 +490,14 @@ class ApiClient { return PlacesResponseDto.fromJson(value); case 'PluginActionResponseDto': return PluginActionResponseDto.fromJson(value); - case 'PluginContext': - return PluginContextTypeTransformer().decode(value); + case 'PluginContextType': + return PluginContextTypeTypeTransformer().decode(value); case 'PluginFilterResponseDto': return PluginFilterResponseDto.fromJson(value); case 'PluginResponseDto': return PluginResponseDto.fromJson(value); + case 'PluginTriggerResponseDto': + return PluginTriggerResponseDto.fromJson(value); case 'PluginTriggerType': return PluginTriggerTypeTypeTransformer().decode(value); case 'PurchaseResponse': diff --git a/mobile/openapi/lib/api_helper.dart b/mobile/openapi/lib/api_helper.dart index 2c97eeb314..1a5f703c78 100644 --- a/mobile/openapi/lib/api_helper.dart +++ b/mobile/openapi/lib/api_helper.dart @@ -67,9 +67,6 @@ String parameterToString(dynamic value) { if (value is AssetMediaStatus) { return AssetMediaStatusTypeTransformer().encode(value).toString(); } - if (value is AssetMetadataKey) { - return AssetMetadataKeyTypeTransformer().encode(value).toString(); - } if (value is AssetOrder) { return AssetOrderTypeTransformer().encode(value).toString(); } @@ -127,8 +124,8 @@ String parameterToString(dynamic value) { if (value is Permission) { return PermissionTypeTransformer().encode(value).toString(); } - if (value is PluginContext) { - return PluginContextTypeTransformer().encode(value).toString(); + if (value is PluginContextType) { + return PluginContextTypeTypeTransformer().encode(value).toString(); } if (value is PluginTriggerType) { return PluginTriggerTypeTypeTransformer().encode(value).toString(); diff --git a/mobile/openapi/lib/model/asset_metadata_bulk_delete_dto.dart b/mobile/openapi/lib/model/asset_metadata_bulk_delete_dto.dart new file mode 100644 index 0000000000..23c34d7152 --- /dev/null +++ b/mobile/openapi/lib/model/asset_metadata_bulk_delete_dto.dart @@ -0,0 +1,99 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.18 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: constant_identifier_names +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +class AssetMetadataBulkDeleteDto { + /// Returns a new [AssetMetadataBulkDeleteDto] instance. + AssetMetadataBulkDeleteDto({ + this.items = const [], + }); + + List items; + + @override + bool operator ==(Object other) => identical(this, other) || other is AssetMetadataBulkDeleteDto && + _deepEquality.equals(other.items, items); + + @override + int get hashCode => + // ignore: unnecessary_parenthesis + (items.hashCode); + + @override + String toString() => 'AssetMetadataBulkDeleteDto[items=$items]'; + + Map toJson() { + final json = {}; + json[r'items'] = this.items; + return json; + } + + /// Returns a new [AssetMetadataBulkDeleteDto] instance and imports its values from + /// [value] if it's a [Map], null otherwise. + // ignore: prefer_constructors_over_static_methods + static AssetMetadataBulkDeleteDto? fromJson(dynamic value) { + upgradeDto(value, "AssetMetadataBulkDeleteDto"); + if (value is Map) { + final json = value.cast(); + + return AssetMetadataBulkDeleteDto( + items: AssetMetadataBulkDeleteItemDto.listFromJson(json[r'items']), + ); + } + return null; + } + + static List listFromJson(dynamic json, {bool growable = false,}) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AssetMetadataBulkDeleteDto.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + static Map mapFromJson(dynamic json) { + final map = {}; + if (json is Map && json.isNotEmpty) { + json = json.cast(); // ignore: parameter_assignments + for (final entry in json.entries) { + final value = AssetMetadataBulkDeleteDto.fromJson(entry.value); + if (value != null) { + map[entry.key] = value; + } + } + } + return map; + } + + // maps a json object with a list of AssetMetadataBulkDeleteDto-objects as value to a dart map + static Map> mapListFromJson(dynamic json, {bool growable = false,}) { + final map = >{}; + if (json is Map && json.isNotEmpty) { + // ignore: parameter_assignments + json = json.cast(); + for (final entry in json.entries) { + map[entry.key] = AssetMetadataBulkDeleteDto.listFromJson(entry.value, growable: growable,); + } + } + return map; + } + + /// The list of required keys that must be present in a JSON. + static const requiredKeys = { + 'items', + }; +} + diff --git a/mobile/openapi/lib/model/asset_metadata_bulk_delete_item_dto.dart b/mobile/openapi/lib/model/asset_metadata_bulk_delete_item_dto.dart new file mode 100644 index 0000000000..a3a111f9f7 --- /dev/null +++ b/mobile/openapi/lib/model/asset_metadata_bulk_delete_item_dto.dart @@ -0,0 +1,107 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.18 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: constant_identifier_names +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +class AssetMetadataBulkDeleteItemDto { + /// Returns a new [AssetMetadataBulkDeleteItemDto] instance. + AssetMetadataBulkDeleteItemDto({ + required this.assetId, + required this.key, + }); + + String assetId; + + String key; + + @override + bool operator ==(Object other) => identical(this, other) || other is AssetMetadataBulkDeleteItemDto && + other.assetId == assetId && + other.key == key; + + @override + int get hashCode => + // ignore: unnecessary_parenthesis + (assetId.hashCode) + + (key.hashCode); + + @override + String toString() => 'AssetMetadataBulkDeleteItemDto[assetId=$assetId, key=$key]'; + + Map toJson() { + final json = {}; + json[r'assetId'] = this.assetId; + json[r'key'] = this.key; + return json; + } + + /// Returns a new [AssetMetadataBulkDeleteItemDto] instance and imports its values from + /// [value] if it's a [Map], null otherwise. + // ignore: prefer_constructors_over_static_methods + static AssetMetadataBulkDeleteItemDto? fromJson(dynamic value) { + upgradeDto(value, "AssetMetadataBulkDeleteItemDto"); + if (value is Map) { + final json = value.cast(); + + return AssetMetadataBulkDeleteItemDto( + assetId: mapValueOfType(json, r'assetId')!, + key: mapValueOfType(json, r'key')!, + ); + } + return null; + } + + static List listFromJson(dynamic json, {bool growable = false,}) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AssetMetadataBulkDeleteItemDto.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + static Map mapFromJson(dynamic json) { + final map = {}; + if (json is Map && json.isNotEmpty) { + json = json.cast(); // ignore: parameter_assignments + for (final entry in json.entries) { + final value = AssetMetadataBulkDeleteItemDto.fromJson(entry.value); + if (value != null) { + map[entry.key] = value; + } + } + } + return map; + } + + // maps a json object with a list of AssetMetadataBulkDeleteItemDto-objects as value to a dart map + static Map> mapListFromJson(dynamic json, {bool growable = false,}) { + final map = >{}; + if (json is Map && json.isNotEmpty) { + // ignore: parameter_assignments + json = json.cast(); + for (final entry in json.entries) { + map[entry.key] = AssetMetadataBulkDeleteItemDto.listFromJson(entry.value, growable: growable,); + } + } + return map; + } + + /// The list of required keys that must be present in a JSON. + static const requiredKeys = { + 'assetId', + 'key', + }; +} + diff --git a/mobile/openapi/lib/model/asset_metadata_bulk_response_dto.dart b/mobile/openapi/lib/model/asset_metadata_bulk_response_dto.dart new file mode 100644 index 0000000000..15c130930b --- /dev/null +++ b/mobile/openapi/lib/model/asset_metadata_bulk_response_dto.dart @@ -0,0 +1,123 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.18 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: constant_identifier_names +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +class AssetMetadataBulkResponseDto { + /// Returns a new [AssetMetadataBulkResponseDto] instance. + AssetMetadataBulkResponseDto({ + required this.assetId, + required this.key, + required this.updatedAt, + required this.value, + }); + + String assetId; + + String key; + + DateTime updatedAt; + + Object value; + + @override + bool operator ==(Object other) => identical(this, other) || other is AssetMetadataBulkResponseDto && + other.assetId == assetId && + other.key == key && + other.updatedAt == updatedAt && + other.value == value; + + @override + int get hashCode => + // ignore: unnecessary_parenthesis + (assetId.hashCode) + + (key.hashCode) + + (updatedAt.hashCode) + + (value.hashCode); + + @override + String toString() => 'AssetMetadataBulkResponseDto[assetId=$assetId, key=$key, updatedAt=$updatedAt, value=$value]'; + + Map toJson() { + final json = {}; + json[r'assetId'] = this.assetId; + json[r'key'] = this.key; + json[r'updatedAt'] = this.updatedAt.toUtc().toIso8601String(); + json[r'value'] = this.value; + return json; + } + + /// Returns a new [AssetMetadataBulkResponseDto] instance and imports its values from + /// [value] if it's a [Map], null otherwise. + // ignore: prefer_constructors_over_static_methods + static AssetMetadataBulkResponseDto? fromJson(dynamic value) { + upgradeDto(value, "AssetMetadataBulkResponseDto"); + if (value is Map) { + final json = value.cast(); + + return AssetMetadataBulkResponseDto( + assetId: mapValueOfType(json, r'assetId')!, + key: mapValueOfType(json, r'key')!, + updatedAt: mapDateTime(json, r'updatedAt', r'')!, + value: mapValueOfType(json, r'value')!, + ); + } + return null; + } + + static List listFromJson(dynamic json, {bool growable = false,}) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AssetMetadataBulkResponseDto.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + static Map mapFromJson(dynamic json) { + final map = {}; + if (json is Map && json.isNotEmpty) { + json = json.cast(); // ignore: parameter_assignments + for (final entry in json.entries) { + final value = AssetMetadataBulkResponseDto.fromJson(entry.value); + if (value != null) { + map[entry.key] = value; + } + } + } + return map; + } + + // maps a json object with a list of AssetMetadataBulkResponseDto-objects as value to a dart map + static Map> mapListFromJson(dynamic json, {bool growable = false,}) { + final map = >{}; + if (json is Map && json.isNotEmpty) { + // ignore: parameter_assignments + json = json.cast(); + for (final entry in json.entries) { + map[entry.key] = AssetMetadataBulkResponseDto.listFromJson(entry.value, growable: growable,); + } + } + return map; + } + + /// The list of required keys that must be present in a JSON. + static const requiredKeys = { + 'assetId', + 'key', + 'updatedAt', + 'value', + }; +} + diff --git a/mobile/openapi/lib/model/asset_metadata_bulk_upsert_dto.dart b/mobile/openapi/lib/model/asset_metadata_bulk_upsert_dto.dart new file mode 100644 index 0000000000..fe9d9ed251 --- /dev/null +++ b/mobile/openapi/lib/model/asset_metadata_bulk_upsert_dto.dart @@ -0,0 +1,99 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.18 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: constant_identifier_names +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +class AssetMetadataBulkUpsertDto { + /// Returns a new [AssetMetadataBulkUpsertDto] instance. + AssetMetadataBulkUpsertDto({ + this.items = const [], + }); + + List items; + + @override + bool operator ==(Object other) => identical(this, other) || other is AssetMetadataBulkUpsertDto && + _deepEquality.equals(other.items, items); + + @override + int get hashCode => + // ignore: unnecessary_parenthesis + (items.hashCode); + + @override + String toString() => 'AssetMetadataBulkUpsertDto[items=$items]'; + + Map toJson() { + final json = {}; + json[r'items'] = this.items; + return json; + } + + /// Returns a new [AssetMetadataBulkUpsertDto] instance and imports its values from + /// [value] if it's a [Map], null otherwise. + // ignore: prefer_constructors_over_static_methods + static AssetMetadataBulkUpsertDto? fromJson(dynamic value) { + upgradeDto(value, "AssetMetadataBulkUpsertDto"); + if (value is Map) { + final json = value.cast(); + + return AssetMetadataBulkUpsertDto( + items: AssetMetadataBulkUpsertItemDto.listFromJson(json[r'items']), + ); + } + return null; + } + + static List listFromJson(dynamic json, {bool growable = false,}) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AssetMetadataBulkUpsertDto.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + static Map mapFromJson(dynamic json) { + final map = {}; + if (json is Map && json.isNotEmpty) { + json = json.cast(); // ignore: parameter_assignments + for (final entry in json.entries) { + final value = AssetMetadataBulkUpsertDto.fromJson(entry.value); + if (value != null) { + map[entry.key] = value; + } + } + } + return map; + } + + // maps a json object with a list of AssetMetadataBulkUpsertDto-objects as value to a dart map + static Map> mapListFromJson(dynamic json, {bool growable = false,}) { + final map = >{}; + if (json is Map && json.isNotEmpty) { + // ignore: parameter_assignments + json = json.cast(); + for (final entry in json.entries) { + map[entry.key] = AssetMetadataBulkUpsertDto.listFromJson(entry.value, growable: growable,); + } + } + return map; + } + + /// The list of required keys that must be present in a JSON. + static const requiredKeys = { + 'items', + }; +} + diff --git a/mobile/openapi/lib/model/asset_metadata_bulk_upsert_item_dto.dart b/mobile/openapi/lib/model/asset_metadata_bulk_upsert_item_dto.dart new file mode 100644 index 0000000000..25a219537e --- /dev/null +++ b/mobile/openapi/lib/model/asset_metadata_bulk_upsert_item_dto.dart @@ -0,0 +1,115 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.18 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: constant_identifier_names +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +class AssetMetadataBulkUpsertItemDto { + /// Returns a new [AssetMetadataBulkUpsertItemDto] instance. + AssetMetadataBulkUpsertItemDto({ + required this.assetId, + required this.key, + required this.value, + }); + + String assetId; + + String key; + + Object value; + + @override + bool operator ==(Object other) => identical(this, other) || other is AssetMetadataBulkUpsertItemDto && + other.assetId == assetId && + other.key == key && + other.value == value; + + @override + int get hashCode => + // ignore: unnecessary_parenthesis + (assetId.hashCode) + + (key.hashCode) + + (value.hashCode); + + @override + String toString() => 'AssetMetadataBulkUpsertItemDto[assetId=$assetId, key=$key, value=$value]'; + + Map toJson() { + final json = {}; + json[r'assetId'] = this.assetId; + json[r'key'] = this.key; + json[r'value'] = this.value; + return json; + } + + /// Returns a new [AssetMetadataBulkUpsertItemDto] instance and imports its values from + /// [value] if it's a [Map], null otherwise. + // ignore: prefer_constructors_over_static_methods + static AssetMetadataBulkUpsertItemDto? fromJson(dynamic value) { + upgradeDto(value, "AssetMetadataBulkUpsertItemDto"); + if (value is Map) { + final json = value.cast(); + + return AssetMetadataBulkUpsertItemDto( + assetId: mapValueOfType(json, r'assetId')!, + key: mapValueOfType(json, r'key')!, + value: mapValueOfType(json, r'value')!, + ); + } + return null; + } + + static List listFromJson(dynamic json, {bool growable = false,}) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AssetMetadataBulkUpsertItemDto.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + static Map mapFromJson(dynamic json) { + final map = {}; + if (json is Map && json.isNotEmpty) { + json = json.cast(); // ignore: parameter_assignments + for (final entry in json.entries) { + final value = AssetMetadataBulkUpsertItemDto.fromJson(entry.value); + if (value != null) { + map[entry.key] = value; + } + } + } + return map; + } + + // maps a json object with a list of AssetMetadataBulkUpsertItemDto-objects as value to a dart map + static Map> mapListFromJson(dynamic json, {bool growable = false,}) { + final map = >{}; + if (json is Map && json.isNotEmpty) { + // ignore: parameter_assignments + json = json.cast(); + for (final entry in json.entries) { + map[entry.key] = AssetMetadataBulkUpsertItemDto.listFromJson(entry.value, growable: growable,); + } + } + return map; + } + + /// The list of required keys that must be present in a JSON. + static const requiredKeys = { + 'assetId', + 'key', + 'value', + }; +} + diff --git a/mobile/openapi/lib/model/asset_metadata_key.dart b/mobile/openapi/lib/model/asset_metadata_key.dart deleted file mode 100644 index 70186cd41c..0000000000 --- a/mobile/openapi/lib/model/asset_metadata_key.dart +++ /dev/null @@ -1,82 +0,0 @@ -// -// AUTO-GENERATED FILE, DO NOT MODIFY! -// -// @dart=2.18 - -// ignore_for_file: unused_element, unused_import -// ignore_for_file: always_put_required_named_parameters_first -// ignore_for_file: constant_identifier_names -// ignore_for_file: lines_longer_than_80_chars - -part of openapi.api; - - -class AssetMetadataKey { - /// Instantiate a new enum with the provided [value]. - const AssetMetadataKey._(this.value); - - /// The underlying value of this enum member. - final String value; - - @override - String toString() => value; - - String toJson() => value; - - static const mobileApp = AssetMetadataKey._(r'mobile-app'); - - /// List of all possible values in this [enum][AssetMetadataKey]. - static const values = [ - mobileApp, - ]; - - static AssetMetadataKey? fromJson(dynamic value) => AssetMetadataKeyTypeTransformer().decode(value); - - static List listFromJson(dynamic json, {bool growable = false,}) { - final result = []; - if (json is List && json.isNotEmpty) { - for (final row in json) { - final value = AssetMetadataKey.fromJson(row); - if (value != null) { - result.add(value); - } - } - } - return result.toList(growable: growable); - } -} - -/// Transformation class that can [encode] an instance of [AssetMetadataKey] to String, -/// and [decode] dynamic data back to [AssetMetadataKey]. -class AssetMetadataKeyTypeTransformer { - factory AssetMetadataKeyTypeTransformer() => _instance ??= const AssetMetadataKeyTypeTransformer._(); - - const AssetMetadataKeyTypeTransformer._(); - - String encode(AssetMetadataKey data) => data.value; - - /// Decodes a [dynamic value][data] to a AssetMetadataKey. - /// - /// If [allowNull] is true and the [dynamic value][data] cannot be decoded successfully, - /// then null is returned. However, if [allowNull] is false and the [dynamic value][data] - /// cannot be decoded successfully, then an [UnimplementedError] is thrown. - /// - /// The [allowNull] is very handy when an API changes and a new enum value is added or removed, - /// and users are still using an old app with the old code. - AssetMetadataKey? decode(dynamic data, {bool allowNull = true}) { - if (data != null) { - switch (data) { - case r'mobile-app': return AssetMetadataKey.mobileApp; - default: - if (!allowNull) { - throw ArgumentError('Unknown enum value to decode: $data'); - } - } - } - return null; - } - - /// Singleton [AssetMetadataKeyTypeTransformer] instance. - static AssetMetadataKeyTypeTransformer? _instance; -} - diff --git a/mobile/openapi/lib/model/asset_metadata_response_dto.dart b/mobile/openapi/lib/model/asset_metadata_response_dto.dart index af5769b9bb..cccf42ae87 100644 --- a/mobile/openapi/lib/model/asset_metadata_response_dto.dart +++ b/mobile/openapi/lib/model/asset_metadata_response_dto.dart @@ -18,7 +18,7 @@ class AssetMetadataResponseDto { required this.value, }); - AssetMetadataKey key; + String key; DateTime updatedAt; @@ -57,7 +57,7 @@ class AssetMetadataResponseDto { final json = value.cast(); return AssetMetadataResponseDto( - key: AssetMetadataKey.fromJson(json[r'key'])!, + key: mapValueOfType(json, r'key')!, updatedAt: mapDateTime(json, r'updatedAt', r'')!, value: mapValueOfType(json, r'value')!, ); diff --git a/mobile/openapi/lib/model/asset_metadata_upsert_item_dto.dart b/mobile/openapi/lib/model/asset_metadata_upsert_item_dto.dart index 4b7e6579a1..3d247f8572 100644 --- a/mobile/openapi/lib/model/asset_metadata_upsert_item_dto.dart +++ b/mobile/openapi/lib/model/asset_metadata_upsert_item_dto.dart @@ -17,7 +17,7 @@ class AssetMetadataUpsertItemDto { required this.value, }); - AssetMetadataKey key; + String key; Object value; @@ -51,7 +51,7 @@ class AssetMetadataUpsertItemDto { final json = value.cast(); return AssetMetadataUpsertItemDto( - key: AssetMetadataKey.fromJson(json[r'key'])!, + key: mapValueOfType(json, r'key')!, value: mapValueOfType(json, r'value')!, ); } diff --git a/mobile/openapi/lib/model/plugin_action_response_dto.dart b/mobile/openapi/lib/model/plugin_action_response_dto.dart index 75b23fc8a4..5ba54f6eb5 100644 --- a/mobile/openapi/lib/model/plugin_action_response_dto.dart +++ b/mobile/openapi/lib/model/plugin_action_response_dto.dart @@ -32,7 +32,7 @@ class PluginActionResponseDto { Object? schema; - List supportedContexts; + List supportedContexts; String title; @@ -90,7 +90,7 @@ class PluginActionResponseDto { methodName: mapValueOfType(json, r'methodName')!, pluginId: mapValueOfType(json, r'pluginId')!, schema: mapValueOfType(json, r'schema'), - supportedContexts: PluginContext.listFromJson(json[r'supportedContexts']), + supportedContexts: PluginContextType.listFromJson(json[r'supportedContexts']), title: mapValueOfType(json, r'title')!, ); } diff --git a/mobile/openapi/lib/model/plugin_context.dart b/mobile/openapi/lib/model/plugin_context_type.dart similarity index 51% rename from mobile/openapi/lib/model/plugin_context.dart rename to mobile/openapi/lib/model/plugin_context_type.dart index efb701c7d0..797d2c3d3b 100644 --- a/mobile/openapi/lib/model/plugin_context.dart +++ b/mobile/openapi/lib/model/plugin_context_type.dart @@ -11,9 +11,9 @@ part of openapi.api; -class PluginContext { +class PluginContextType { /// Instantiate a new enum with the provided [value]. - const PluginContext._(this.value); + const PluginContextType._(this.value); /// The underlying value of this enum member. final String value; @@ -23,24 +23,24 @@ class PluginContext { String toJson() => value; - static const asset = PluginContext._(r'asset'); - static const album = PluginContext._(r'album'); - static const person = PluginContext._(r'person'); + static const asset = PluginContextType._(r'asset'); + static const album = PluginContextType._(r'album'); + static const person = PluginContextType._(r'person'); - /// List of all possible values in this [enum][PluginContext]. - static const values = [ + /// List of all possible values in this [enum][PluginContextType]. + static const values = [ asset, album, person, ]; - static PluginContext? fromJson(dynamic value) => PluginContextTypeTransformer().decode(value); + static PluginContextType? fromJson(dynamic value) => PluginContextTypeTypeTransformer().decode(value); - static List listFromJson(dynamic json, {bool growable = false,}) { - final result = []; + static List listFromJson(dynamic json, {bool growable = false,}) { + final result = []; if (json is List && json.isNotEmpty) { for (final row in json) { - final value = PluginContext.fromJson(row); + final value = PluginContextType.fromJson(row); if (value != null) { result.add(value); } @@ -50,16 +50,16 @@ class PluginContext { } } -/// Transformation class that can [encode] an instance of [PluginContext] to String, -/// and [decode] dynamic data back to [PluginContext]. -class PluginContextTypeTransformer { - factory PluginContextTypeTransformer() => _instance ??= const PluginContextTypeTransformer._(); +/// Transformation class that can [encode] an instance of [PluginContextType] to String, +/// and [decode] dynamic data back to [PluginContextType]. +class PluginContextTypeTypeTransformer { + factory PluginContextTypeTypeTransformer() => _instance ??= const PluginContextTypeTypeTransformer._(); - const PluginContextTypeTransformer._(); + const PluginContextTypeTypeTransformer._(); - String encode(PluginContext data) => data.value; + String encode(PluginContextType data) => data.value; - /// Decodes a [dynamic value][data] to a PluginContext. + /// Decodes a [dynamic value][data] to a PluginContextType. /// /// If [allowNull] is true and the [dynamic value][data] cannot be decoded successfully, /// then null is returned. However, if [allowNull] is false and the [dynamic value][data] @@ -67,12 +67,12 @@ class PluginContextTypeTransformer { /// /// The [allowNull] is very handy when an API changes and a new enum value is added or removed, /// and users are still using an old app with the old code. - PluginContext? decode(dynamic data, {bool allowNull = true}) { + PluginContextType? decode(dynamic data, {bool allowNull = true}) { if (data != null) { switch (data) { - case r'asset': return PluginContext.asset; - case r'album': return PluginContext.album; - case r'person': return PluginContext.person; + case r'asset': return PluginContextType.asset; + case r'album': return PluginContextType.album; + case r'person': return PluginContextType.person; default: if (!allowNull) { throw ArgumentError('Unknown enum value to decode: $data'); @@ -82,7 +82,7 @@ class PluginContextTypeTransformer { return null; } - /// Singleton [PluginContextTypeTransformer] instance. - static PluginContextTypeTransformer? _instance; + /// Singleton [PluginContextTypeTypeTransformer] instance. + static PluginContextTypeTypeTransformer? _instance; } diff --git a/mobile/openapi/lib/model/plugin_filter_response_dto.dart b/mobile/openapi/lib/model/plugin_filter_response_dto.dart index 8ed6acec78..5873d72f07 100644 --- a/mobile/openapi/lib/model/plugin_filter_response_dto.dart +++ b/mobile/openapi/lib/model/plugin_filter_response_dto.dart @@ -32,7 +32,7 @@ class PluginFilterResponseDto { Object? schema; - List supportedContexts; + List supportedContexts; String title; @@ -90,7 +90,7 @@ class PluginFilterResponseDto { methodName: mapValueOfType(json, r'methodName')!, pluginId: mapValueOfType(json, r'pluginId')!, schema: mapValueOfType(json, r'schema'), - supportedContexts: PluginContext.listFromJson(json[r'supportedContexts']), + supportedContexts: PluginContextType.listFromJson(json[r'supportedContexts']), title: mapValueOfType(json, r'title')!, ); } diff --git a/mobile/openapi/lib/model/plugin_trigger_response_dto.dart b/mobile/openapi/lib/model/plugin_trigger_response_dto.dart new file mode 100644 index 0000000000..a6ee1c6b69 --- /dev/null +++ b/mobile/openapi/lib/model/plugin_trigger_response_dto.dart @@ -0,0 +1,107 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.18 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: constant_identifier_names +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +class PluginTriggerResponseDto { + /// Returns a new [PluginTriggerResponseDto] instance. + PluginTriggerResponseDto({ + required this.contextType, + required this.type, + }); + + PluginContextType contextType; + + PluginTriggerType type; + + @override + bool operator ==(Object other) => identical(this, other) || other is PluginTriggerResponseDto && + other.contextType == contextType && + other.type == type; + + @override + int get hashCode => + // ignore: unnecessary_parenthesis + (contextType.hashCode) + + (type.hashCode); + + @override + String toString() => 'PluginTriggerResponseDto[contextType=$contextType, type=$type]'; + + Map toJson() { + final json = {}; + json[r'contextType'] = this.contextType; + json[r'type'] = this.type; + return json; + } + + /// Returns a new [PluginTriggerResponseDto] instance and imports its values from + /// [value] if it's a [Map], null otherwise. + // ignore: prefer_constructors_over_static_methods + static PluginTriggerResponseDto? fromJson(dynamic value) { + upgradeDto(value, "PluginTriggerResponseDto"); + if (value is Map) { + final json = value.cast(); + + return PluginTriggerResponseDto( + contextType: PluginContextType.fromJson(json[r'contextType'])!, + type: PluginTriggerType.fromJson(json[r'type'])!, + ); + } + return null; + } + + static List listFromJson(dynamic json, {bool growable = false,}) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = PluginTriggerResponseDto.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + static Map mapFromJson(dynamic json) { + final map = {}; + if (json is Map && json.isNotEmpty) { + json = json.cast(); // ignore: parameter_assignments + for (final entry in json.entries) { + final value = PluginTriggerResponseDto.fromJson(entry.value); + if (value != null) { + map[entry.key] = value; + } + } + } + return map; + } + + // maps a json object with a list of PluginTriggerResponseDto-objects as value to a dart map + static Map> mapListFromJson(dynamic json, {bool growable = false,}) { + final map = >{}; + if (json is Map && json.isNotEmpty) { + // ignore: parameter_assignments + json = json.cast(); + for (final entry in json.entries) { + map[entry.key] = PluginTriggerResponseDto.listFromJson(entry.value, growable: growable,); + } + } + return map; + } + + /// The list of required keys that must be present in a JSON. + static const requiredKeys = { + 'contextType', + 'type', + }; +} + diff --git a/mobile/openapi/lib/model/sync_asset_metadata_delete_v1.dart b/mobile/openapi/lib/model/sync_asset_metadata_delete_v1.dart index c9a7ef4670..cf67b68dd2 100644 --- a/mobile/openapi/lib/model/sync_asset_metadata_delete_v1.dart +++ b/mobile/openapi/lib/model/sync_asset_metadata_delete_v1.dart @@ -19,7 +19,7 @@ class SyncAssetMetadataDeleteV1 { String assetId; - AssetMetadataKey key; + String key; @override bool operator ==(Object other) => identical(this, other) || other is SyncAssetMetadataDeleteV1 && @@ -52,7 +52,7 @@ class SyncAssetMetadataDeleteV1 { return SyncAssetMetadataDeleteV1( assetId: mapValueOfType(json, r'assetId')!, - key: AssetMetadataKey.fromJson(json[r'key'])!, + key: mapValueOfType(json, r'key')!, ); } return null; diff --git a/mobile/openapi/lib/model/sync_asset_metadata_v1.dart b/mobile/openapi/lib/model/sync_asset_metadata_v1.dart index 720fcef947..4fa6ed84ed 100644 --- a/mobile/openapi/lib/model/sync_asset_metadata_v1.dart +++ b/mobile/openapi/lib/model/sync_asset_metadata_v1.dart @@ -20,7 +20,7 @@ class SyncAssetMetadataV1 { String assetId; - AssetMetadataKey key; + String key; Object value; @@ -58,7 +58,7 @@ class SyncAssetMetadataV1 { return SyncAssetMetadataV1( assetId: mapValueOfType(json, r'assetId')!, - key: AssetMetadataKey.fromJson(json[r'key'])!, + key: mapValueOfType(json, r'key')!, value: mapValueOfType(json, r'value')!, ); } diff --git a/mobile/openapi/lib/model/workflow_response_dto.dart b/mobile/openapi/lib/model/workflow_response_dto.dart index 5132e7cb73..1ad36f300b 100644 --- a/mobile/openapi/lib/model/workflow_response_dto.dart +++ b/mobile/openapi/lib/model/workflow_response_dto.dart @@ -40,7 +40,7 @@ class WorkflowResponseDto { String ownerId; - WorkflowResponseDtoTriggerTypeEnum triggerType; + PluginTriggerType triggerType; @override bool operator ==(Object other) => identical(this, other) || other is WorkflowResponseDto && @@ -105,7 +105,7 @@ class WorkflowResponseDto { id: mapValueOfType(json, r'id')!, name: mapValueOfType(json, r'name'), ownerId: mapValueOfType(json, r'ownerId')!, - triggerType: WorkflowResponseDtoTriggerTypeEnum.fromJson(json[r'triggerType'])!, + triggerType: PluginTriggerType.fromJson(json[r'triggerType'])!, ); } return null; @@ -165,77 +165,3 @@ class WorkflowResponseDto { }; } - -class WorkflowResponseDtoTriggerTypeEnum { - /// Instantiate a new enum with the provided [value]. - const WorkflowResponseDtoTriggerTypeEnum._(this.value); - - /// The underlying value of this enum member. - final String value; - - @override - String toString() => value; - - String toJson() => value; - - static const assetCreate = WorkflowResponseDtoTriggerTypeEnum._(r'AssetCreate'); - static const personRecognized = WorkflowResponseDtoTriggerTypeEnum._(r'PersonRecognized'); - - /// List of all possible values in this [enum][WorkflowResponseDtoTriggerTypeEnum]. - static const values = [ - assetCreate, - personRecognized, - ]; - - static WorkflowResponseDtoTriggerTypeEnum? fromJson(dynamic value) => WorkflowResponseDtoTriggerTypeEnumTypeTransformer().decode(value); - - static List listFromJson(dynamic json, {bool growable = false,}) { - final result = []; - if (json is List && json.isNotEmpty) { - for (final row in json) { - final value = WorkflowResponseDtoTriggerTypeEnum.fromJson(row); - if (value != null) { - result.add(value); - } - } - } - return result.toList(growable: growable); - } -} - -/// Transformation class that can [encode] an instance of [WorkflowResponseDtoTriggerTypeEnum] to String, -/// and [decode] dynamic data back to [WorkflowResponseDtoTriggerTypeEnum]. -class WorkflowResponseDtoTriggerTypeEnumTypeTransformer { - factory WorkflowResponseDtoTriggerTypeEnumTypeTransformer() => _instance ??= const WorkflowResponseDtoTriggerTypeEnumTypeTransformer._(); - - const WorkflowResponseDtoTriggerTypeEnumTypeTransformer._(); - - String encode(WorkflowResponseDtoTriggerTypeEnum data) => data.value; - - /// Decodes a [dynamic value][data] to a WorkflowResponseDtoTriggerTypeEnum. - /// - /// If [allowNull] is true and the [dynamic value][data] cannot be decoded successfully, - /// then null is returned. However, if [allowNull] is false and the [dynamic value][data] - /// cannot be decoded successfully, then an [UnimplementedError] is thrown. - /// - /// The [allowNull] is very handy when an API changes and a new enum value is added or removed, - /// and users are still using an old app with the old code. - WorkflowResponseDtoTriggerTypeEnum? decode(dynamic data, {bool allowNull = true}) { - if (data != null) { - switch (data) { - case r'AssetCreate': return WorkflowResponseDtoTriggerTypeEnum.assetCreate; - case r'PersonRecognized': return WorkflowResponseDtoTriggerTypeEnum.personRecognized; - default: - if (!allowNull) { - throw ArgumentError('Unknown enum value to decode: $data'); - } - } - } - return null; - } - - /// Singleton [WorkflowResponseDtoTriggerTypeEnumTypeTransformer] instance. - static WorkflowResponseDtoTriggerTypeEnumTypeTransformer? _instance; -} - - diff --git a/mobile/openapi/lib/model/workflow_update_dto.dart b/mobile/openapi/lib/model/workflow_update_dto.dart index b36a396dc6..135c032b77 100644 --- a/mobile/openapi/lib/model/workflow_update_dto.dart +++ b/mobile/openapi/lib/model/workflow_update_dto.dart @@ -18,6 +18,7 @@ class WorkflowUpdateDto { this.enabled, this.filters = const [], this.name, + this.triggerType, }); List actions; @@ -48,13 +49,22 @@ class WorkflowUpdateDto { /// String? name; + /// + /// Please note: This property should have been non-nullable! Since the specification file + /// does not include a default value (using the "default:" property), however, the generated + /// source code must fall back to having a nullable type. + /// Consider adding a "default:" property in the specification file to hide this note. + /// + PluginTriggerType? triggerType; + @override bool operator ==(Object other) => identical(this, other) || other is WorkflowUpdateDto && _deepEquality.equals(other.actions, actions) && other.description == description && other.enabled == enabled && _deepEquality.equals(other.filters, filters) && - other.name == name; + other.name == name && + other.triggerType == triggerType; @override int get hashCode => @@ -63,10 +73,11 @@ class WorkflowUpdateDto { (description == null ? 0 : description!.hashCode) + (enabled == null ? 0 : enabled!.hashCode) + (filters.hashCode) + - (name == null ? 0 : name!.hashCode); + (name == null ? 0 : name!.hashCode) + + (triggerType == null ? 0 : triggerType!.hashCode); @override - String toString() => 'WorkflowUpdateDto[actions=$actions, description=$description, enabled=$enabled, filters=$filters, name=$name]'; + String toString() => 'WorkflowUpdateDto[actions=$actions, description=$description, enabled=$enabled, filters=$filters, name=$name, triggerType=$triggerType]'; Map toJson() { final json = {}; @@ -87,6 +98,11 @@ class WorkflowUpdateDto { } else { // json[r'name'] = null; } + if (this.triggerType != null) { + json[r'triggerType'] = this.triggerType; + } else { + // json[r'triggerType'] = null; + } return json; } @@ -104,6 +120,7 @@ class WorkflowUpdateDto { enabled: mapValueOfType(json, r'enabled'), filters: WorkflowFilterItemDto.listFromJson(json[r'filters']), name: mapValueOfType(json, r'name'), + triggerType: PluginTriggerType.fromJson(json[r'triggerType']), ); } return null; diff --git a/mobile/packages/ui/lib/immich_ui.dart b/mobile/packages/ui/lib/immich_ui.dart index 2417149f76..9f2a886ab3 100644 --- a/mobile/packages/ui/lib/immich_ui.dart +++ b/mobile/packages/ui/lib/immich_ui.dart @@ -1,3 +1,10 @@ -export 'src/buttons/close_button.dart'; -export 'src/buttons/icon_button.dart'; +export 'src/components/close_button.dart'; +export 'src/components/form.dart'; +export 'src/components/icon_button.dart'; +export 'src/components/password_input.dart'; +export 'src/components/text_button.dart'; +export 'src/components/text_input.dart'; +export 'src/constants.dart'; +export 'src/theme.dart'; +export 'src/translation.dart'; export 'src/types.dart'; diff --git a/mobile/packages/ui/lib/src/buttons/close_button.dart b/mobile/packages/ui/lib/src/components/close_button.dart similarity index 75% rename from mobile/packages/ui/lib/src/buttons/close_button.dart rename to mobile/packages/ui/lib/src/components/close_button.dart index c8c5d62a12..9308fdaadb 100644 --- a/mobile/packages/ui/lib/src/buttons/close_button.dart +++ b/mobile/packages/ui/lib/src/components/close_button.dart @@ -1,15 +1,16 @@ import 'package:flutter/material.dart'; -import 'package:immich_ui/src/buttons/icon_button.dart'; import 'package:immich_ui/src/types.dart'; +import 'icon_button.dart'; + class ImmichCloseButton extends StatelessWidget { - final VoidCallback? onTap; + final VoidCallback? onPressed; final ImmichVariant variant; final ImmichColor color; const ImmichCloseButton({ super.key, - this.onTap, + this.onPressed, this.color = ImmichColor.primary, this.variant = ImmichVariant.ghost, }); @@ -20,6 +21,6 @@ class ImmichCloseButton extends StatelessWidget { icon: Icons.close, color: color, variant: variant, - onTap: onTap ?? () => Navigator.of(context).pop(), + onPressed: onPressed ?? () => Navigator.of(context).pop(), ); } diff --git a/mobile/packages/ui/lib/src/components/form.dart b/mobile/packages/ui/lib/src/components/form.dart new file mode 100644 index 0000000000..9e8c161806 --- /dev/null +++ b/mobile/packages/ui/lib/src/components/form.dart @@ -0,0 +1,98 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:immich_ui/immich_ui.dart'; +import 'package:immich_ui/src/internal.dart'; + +class ImmichForm extends StatefulWidget { + final String? submitText; + final IconData? submitIcon; + final FutureOr Function()? onSubmit; + final Widget child; + + const ImmichForm({ + super.key, + this.submitText, + this.submitIcon, + required this.onSubmit, + required this.child, + }); + + @override + State createState() => ImmichFormState(); + + static ImmichFormState of(BuildContext context) { + final scope = context.dependOnInheritedWidgetOfExactType<_ImmichFormScope>(); + if (scope == null) { + throw FlutterError( + 'ImmichForm.of() called with a context that does not contain an ImmichForm.\n' + 'No ImmichForm ancestor could be found starting from the context that was passed to ' + 'ImmichForm.of(). This usually happens when the context provided is ' + 'from a widget above the ImmichForm.\n' + 'The context used was:\n' + '$context', + ); + } + return scope._formState; + } +} + +class ImmichFormState extends State { + final _formKey = GlobalKey(); + bool _isLoading = false; + + FutureOr submit() async { + final isValid = _formKey.currentState?.validate() ?? false; + if (!isValid) { + return; + } + + setState(() { + _isLoading = true; + }); + + try { + await widget.onSubmit?.call(); + } finally { + if (mounted) { + setState(() { + _isLoading = false; + }); + } + } + } + + @override + Widget build(BuildContext context) { + final submitText = widget.submitText ?? context.translations.submit; + return _ImmichFormScope( + formState: this, + child: Form( + key: _formKey, + child: Column( + spacing: ImmichSpacing.md, + children: [ + widget.child, + ImmichTextButton( + labelText: submitText, + icon: widget.submitIcon, + variant: ImmichVariant.filled, + loading: _isLoading, + onPressed: submit, + disabled: widget.onSubmit == null, + ), + ], + ), + ), + ); + } +} + +class _ImmichFormScope extends InheritedWidget { + const _ImmichFormScope({required super.child, required ImmichFormState formState}) : _formState = formState; + + final ImmichFormState _formState; + + @override + bool updateShouldNotify(_ImmichFormScope oldWidget) => oldWidget._formState != _formState; +} diff --git a/mobile/packages/ui/lib/src/buttons/icon_button.dart b/mobile/packages/ui/lib/src/components/icon_button.dart similarity index 60% rename from mobile/packages/ui/lib/src/buttons/icon_button.dart rename to mobile/packages/ui/lib/src/components/icon_button.dart index 5c62ee8eda..dc140b71f9 100644 --- a/mobile/packages/ui/lib/src/buttons/icon_button.dart +++ b/mobile/packages/ui/lib/src/components/icon_button.dart @@ -3,42 +3,48 @@ import 'package:immich_ui/src/types.dart'; class ImmichIconButton extends StatelessWidget { final IconData icon; - final VoidCallback onTap; + final VoidCallback onPressed; final ImmichVariant variant; final ImmichColor color; + final bool disabled; const ImmichIconButton({ super.key, required this.icon, - required this.onTap, + required this.onPressed, this.color = ImmichColor.primary, this.variant = ImmichVariant.filled, + this.disabled = false, }); @override Widget build(BuildContext context) { + final colorScheme = Theme.of(context).colorScheme; + final background = switch (variant) { ImmichVariant.filled => switch (color) { - ImmichColor.primary => Theme.of(context).colorScheme.primary, - ImmichColor.secondary => Theme.of(context).colorScheme.secondary, + ImmichColor.primary => colorScheme.primary, + ImmichColor.secondary => colorScheme.secondary, }, ImmichVariant.ghost => Colors.transparent, }; final foreground = switch (variant) { ImmichVariant.filled => switch (color) { - ImmichColor.primary => Theme.of(context).colorScheme.onPrimary, - ImmichColor.secondary => Theme.of(context).colorScheme.onSecondary, + ImmichColor.primary => colorScheme.onPrimary, + ImmichColor.secondary => colorScheme.onSecondary, }, ImmichVariant.ghost => switch (color) { - ImmichColor.primary => Theme.of(context).colorScheme.primary, - ImmichColor.secondary => Theme.of(context).colorScheme.secondary, + ImmichColor.primary => colorScheme.primary, + ImmichColor.secondary => colorScheme.secondary, }, }; + final effectiveOnPressed = disabled ? null : onPressed; + return IconButton( icon: Icon(icon), - onPressed: onTap, + onPressed: effectiveOnPressed, style: IconButton.styleFrom( backgroundColor: background, foregroundColor: foreground, diff --git a/mobile/packages/ui/lib/src/components/password_input.dart b/mobile/packages/ui/lib/src/components/password_input.dart new file mode 100644 index 0000000000..bd5a149354 --- /dev/null +++ b/mobile/packages/ui/lib/src/components/password_input.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; +import 'package:immich_ui/src/components/text_input.dart'; +import 'package:immich_ui/src/internal.dart'; + +class ImmichPasswordInput extends StatefulWidget { + final String? label; + final String? hintText; + final TextEditingController? controller; + final FocusNode? focusNode; + final String? Function(String?)? validator; + final void Function(BuildContext, String)? onSubmit; + final TextInputAction? keyboardAction; + + const ImmichPasswordInput({ + super.key, + this.controller, + this.focusNode, + this.label, + this.hintText, + this.validator, + this.onSubmit, + this.keyboardAction, + }); + + @override + State createState() => _ImmichPasswordInputState(); +} + +class _ImmichPasswordInputState extends State { + bool _visible = false; + + void _toggleVisibility() { + setState(() { + _visible = !_visible; + }); + } + + @override + Widget build(BuildContext context) { + return ImmichTextInput( + key: widget.key, + label: widget.label ?? context.translations.password, + hintText: widget.hintText, + controller: widget.controller, + focusNode: widget.focusNode, + validator: widget.validator, + onSubmit: widget.onSubmit, + keyboardAction: widget.keyboardAction, + obscureText: !_visible, + suffixIcon: IconButton( + onPressed: _toggleVisibility, + icon: Icon(_visible ? Icons.visibility_off_rounded : Icons.visibility_rounded), + ), + autofillHints: [AutofillHints.password], + keyboardType: TextInputType.text, + ); + } +} diff --git a/mobile/packages/ui/lib/src/components/text_button.dart b/mobile/packages/ui/lib/src/components/text_button.dart new file mode 100644 index 0000000000..6dc677aee2 --- /dev/null +++ b/mobile/packages/ui/lib/src/components/text_button.dart @@ -0,0 +1,87 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:immich_ui/src/constants.dart'; +import 'package:immich_ui/src/types.dart'; + +class ImmichTextButton extends StatelessWidget { + final String labelText; + final IconData? icon; + final FutureOr Function() onPressed; + final ImmichVariant variant; + final ImmichColor color; + final bool expanded; + final bool loading; + final bool disabled; + + const ImmichTextButton({ + super.key, + required this.labelText, + this.icon, + required this.onPressed, + this.variant = ImmichVariant.filled, + this.color = ImmichColor.primary, + this.expanded = true, + this.loading = false, + this.disabled = false, + }); + + Widget _buildButton(ImmichVariant variant) { + final Widget? effectiveIcon = loading + ? const SizedBox.square( + dimension: ImmichIconSize.md, + child: CircularProgressIndicator(strokeWidth: ImmichBorderWidth.lg), + ) + : icon != null + ? Icon(icon, fontWeight: FontWeight.w600) + : null; + final hasIcon = effectiveIcon != null; + + final label = Text(labelText, style: const TextStyle(fontSize: ImmichTextSize.body, fontWeight: FontWeight.bold)); + final style = ElevatedButton.styleFrom(padding: const EdgeInsets.symmetric(vertical: ImmichSpacing.md)); + + final effectiveOnPressed = disabled || loading ? null : onPressed; + + switch (variant) { + case ImmichVariant.filled: + if (hasIcon) { + return ElevatedButton.icon( + style: style, + onPressed: effectiveOnPressed, + icon: effectiveIcon, + label: label, + ); + } + + return ElevatedButton( + style: style, + onPressed: effectiveOnPressed, + child: label, + ); + case ImmichVariant.ghost: + if (hasIcon) { + return TextButton.icon( + style: style, + onPressed: effectiveOnPressed, + icon: effectiveIcon, + label: label, + ); + } + + return TextButton( + style: style, + onPressed: effectiveOnPressed, + child: label, + ); + } + } + + @override + Widget build(BuildContext context) { + final button = _buildButton(variant); + if (expanded) { + return SizedBox(width: double.infinity, child: button); + } + return button; + } +} diff --git a/mobile/packages/ui/lib/src/components/text_input.dart b/mobile/packages/ui/lib/src/components/text_input.dart new file mode 100644 index 0000000000..f335df49f4 --- /dev/null +++ b/mobile/packages/ui/lib/src/components/text_input.dart @@ -0,0 +1,88 @@ +import 'package:flutter/material.dart'; + +class ImmichTextInput extends StatefulWidget { + final String label; + final String? hintText; + final TextEditingController? controller; + final FocusNode? focusNode; + final String? Function(String?)? validator; + final void Function(BuildContext, String)? onSubmit; + final TextInputType keyboardType; + final TextInputAction? keyboardAction; + final List? autofillHints; + final Widget? suffixIcon; + final bool obscureText; + + const ImmichTextInput({ + super.key, + this.controller, + this.focusNode, + required this.label, + this.hintText, + this.validator, + this.onSubmit, + this.keyboardType = TextInputType.text, + this.keyboardAction, + this.autofillHints, + this.suffixIcon, + this.obscureText = false, + }); + + @override + State createState() => _ImmichTextInputState(); +} + +class _ImmichTextInputState extends State { + late final FocusNode _focusNode; + String? _error; + + @override + void initState() { + super.initState(); + _focusNode = widget.focusNode ?? FocusNode(); + } + + @override + void dispose() { + if (widget.focusNode == null) { + _focusNode.dispose(); + } + super.dispose(); + } + + String? _validateInput(String? value) { + setState(() { + _error = widget.validator?.call(value); + }); + return null; + } + + bool get _hasError => _error != null && _error!.isNotEmpty; + + @override + Widget build(BuildContext context) { + final themeData = Theme.of(context); + + return TextFormField( + controller: widget.controller, + focusNode: _focusNode, + decoration: InputDecoration( + hintText: widget.hintText, + labelText: widget.label, + labelStyle: themeData.inputDecorationTheme.labelStyle?.copyWith( + color: _hasError ? themeData.colorScheme.error : null, + ), + errorText: _error, + suffixIcon: widget.suffixIcon, + ), + obscureText: widget.obscureText, + validator: _validateInput, + keyboardType: widget.keyboardType, + textInputAction: widget.keyboardAction, + autofillHints: widget.autofillHints, + onTap: () => setState(() => _error = null), + onTapOutside: (_) => _focusNode.unfocus(), + onFieldSubmitted: (value) => widget.onSubmit?.call(context, value), + ); + } +} diff --git a/mobile/packages/ui/lib/src/constants.dart b/mobile/packages/ui/lib/src/constants.dart new file mode 100644 index 0000000000..96122c9b36 --- /dev/null +++ b/mobile/packages/ui/lib/src/constants.dart @@ -0,0 +1,199 @@ +/// Spacing constants for gaps between widgets +abstract class ImmichSpacing { + const ImmichSpacing._(); + + /// Extra small spacing: 4.0 + static const double xs = 4.0; + + /// Small spacing: 8.0 + static const double sm = 8.0; + + /// Medium spacing (default): 12.0 + static const double md = 12.0; + + /// Large spacing: 16.0 + static const double lg = 16.0; + + /// Extra large spacing: 24.0 + static const double xl = 24.0; + + /// Extra extra large spacing: 32.0 + static const double xxl = 32.0; + + /// Extra extra extra large spacing: 48.0 + static const double xxxl = 48.0; +} + +/// Border radius constants for consistent rounded corners +abstract class ImmichRadius { + const ImmichRadius._(); + + /// No radius: 0.0 + static const double none = 0.0; + + /// Extra small radius: 4.0 + static const double xs = 4.0; + + /// Small radius: 8.0 + static const double sm = 8.0; + + /// Medium radius (default): 12.0 + static const double md = 12.0; + + /// Large radius: 16.0 + static const double lg = 16.0; + + /// Extra large radius: 20.0 + static const double xl = 20.0; + + /// Extra extra large radius: 24.0 + static const double xxl = 24.0; + + /// Full circular radius: infinity + static const double full = double.infinity; +} + +/// Icon size constants for consistent icon sizing +abstract class ImmichIconSize { + const ImmichIconSize._(); + + /// Extra small icon: 16.0 + static const double xs = 16.0; + + /// Small icon: 20.0 + static const double sm = 20.0; + + /// Medium icon (default): 24.0 + static const double md = 24.0; + + /// Large icon: 32.0 + static const double lg = 32.0; + + /// Extra large icon: 40.0 + static const double xl = 40.0; + + /// Extra extra large icon: 48.0 + static const double xxl = 48.0; +} + +/// Animation duration constants for consistent timing +abstract class ImmichDuration { + const ImmichDuration._(); + + /// Extra fast: 100ms + static const Duration extraFast = Duration(milliseconds: 100); + + /// Fast: 150ms + static const Duration fast = Duration(milliseconds: 150); + + /// Normal: 200ms + static const Duration normal = Duration(milliseconds: 200); + + /// Moderate: 300ms + static const Duration moderate = Duration(milliseconds: 300); + + /// Slow: 500ms + static const Duration slow = Duration(milliseconds: 500); + + /// Extra slow: 700ms + static const Duration extraSlow = Duration(milliseconds: 700); +} + +/// Elevation constants for consistent shadows and depth +abstract class ImmichElevation { + const ImmichElevation._(); + + /// No elevation: 0.0 + static const double none = 0.0; + + /// Extra small elevation: 1.0 + static const double xs = 1.0; + + /// Small elevation: 2.0 + static const double sm = 2.0; + + /// Medium elevation: 4.0 + static const double md = 4.0; + + /// Large elevation: 8.0 + static const double lg = 8.0; + + /// Extra large elevation: 12.0 + static const double xl = 12.0; + + /// Extra extra large elevation: 16.0 + static const double xxl = 16.0; +} + +/// Border width constants (similar to Tailwind's border-* scale) +abstract class ImmichBorderWidth { + const ImmichBorderWidth._(); + + /// No border: 0.0 + static const double none = 0.0; + + /// Hairline border: 0.5 + static const double hairline = 0.5; + + /// Default border: 1.0 (border) + static const double base = 1.0; + + /// Medium border: 2.0 (border-2) + static const double md = 2.0; + + /// Large border: 3.0 (border-4) + static const double lg = 3.0; + + /// Extra large border: 4.0 + static const double xl = 4.0; +} + +/// Text size constants with semantic HTML-like naming +/// These follow a type scale for harmonious text hierarchy +abstract class ImmichTextSize { + const ImmichTextSize._(); + + /// Caption text: 10.0 + /// Use for: Tiny labels, legal text, metadata, timestamps + static const double caption = 10.0; + + /// Label text: 12.0 + /// Use for: Form labels, secondary text, helper text + static const double label = 12.0; + + /// Body text: 14.0 (default) + /// Use for: Main body text, paragraphs, default UI text + static const double body = 14.0; + + /// Body emphasized: 16.0 + /// Use for: Emphasized body text, button labels, tabs + static const double bodyLarge = 16.0; + + /// Heading 6: 18.0 (smallest heading) + /// Use for: Subtitles, card titles, section headers + static const double h6 = 18.0; + + /// Heading 5: 20.0 + /// Use for: Small headings, prominent labels + static const double h5 = 20.0; + + /// Heading 4: 24.0 + /// Use for: Page titles, dialog titles + static const double h4 = 24.0; + + /// Heading 3: 30.0 + /// Use for: Section headings, large headings + static const double h3 = 30.0; + + /// Heading 2: 36.0 + /// Use for: Major section headings + static const double h2 = 36.0; + + /// Heading 1: 48.0 (largest heading) + /// Use for: Page hero headings, main titles + static const double h1 = 48.0; + + /// Display text: 60.0 + /// Use for: Hero numbers, splash screens, extra large display + static const double display = 60.0; +} diff --git a/mobile/packages/ui/lib/src/internal.dart b/mobile/packages/ui/lib/src/internal.dart new file mode 100644 index 0000000000..7f503927ff --- /dev/null +++ b/mobile/packages/ui/lib/src/internal.dart @@ -0,0 +1,6 @@ +import 'package:flutter/material.dart'; +import 'package:immich_ui/src/translation.dart'; + +extension TranslationHelper on BuildContext { + ImmichTranslations get translations => ImmichTranslationProvider.of(this); +} diff --git a/mobile/packages/ui/lib/src/theme.dart b/mobile/packages/ui/lib/src/theme.dart new file mode 100644 index 0000000000..387723b8ce --- /dev/null +++ b/mobile/packages/ui/lib/src/theme.dart @@ -0,0 +1,42 @@ +import 'package:flutter/material.dart'; +import 'package:immich_ui/src/constants.dart'; + +class ImmichThemeProvider extends StatelessWidget { + final ColorScheme colorScheme; + final Widget child; + + const ImmichThemeProvider({super.key, required this.colorScheme, required this.child}); + + @override + Widget build(BuildContext context) { + return Theme( + data: Theme.of(context).copyWith( + colorScheme: colorScheme, + brightness: colorScheme.brightness, + inputDecorationTheme: InputDecorationTheme( + floatingLabelBehavior: FloatingLabelBehavior.always, + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: colorScheme.primary), + borderRadius: const BorderRadius.all(Radius.circular(ImmichRadius.md)), + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide(color: colorScheme.primary), + borderRadius: const BorderRadius.all(Radius.circular(ImmichRadius.md)), + ), + errorBorder: OutlineInputBorder( + borderSide: BorderSide(color: colorScheme.error), + borderRadius: const BorderRadius.all(Radius.circular(ImmichRadius.md)), + ), + focusedErrorBorder: OutlineInputBorder( + borderSide: BorderSide(color: colorScheme.error), + borderRadius: const BorderRadius.all(Radius.circular(ImmichRadius.md)), + ), + labelStyle: TextStyle(color: colorScheme.primary, fontWeight: FontWeight.w600), + hintStyle: const TextStyle(fontSize: ImmichTextSize.body), + errorStyle: TextStyle(color: colorScheme.error, fontWeight: FontWeight.w600), + ), + ), + child: child, + ); + } +} diff --git a/mobile/packages/ui/lib/src/translation.dart b/mobile/packages/ui/lib/src/translation.dart new file mode 100644 index 0000000000..cd51f74422 --- /dev/null +++ b/mobile/packages/ui/lib/src/translation.dart @@ -0,0 +1,31 @@ +import 'package:flutter/material.dart'; + +class ImmichTranslations { + late String submit; + late String password; + + ImmichTranslations({String? submit, String? password}) { + this.submit = submit ?? 'Submit'; + this.password = password ?? 'Password'; + } +} + +class ImmichTranslationProvider extends InheritedWidget { + final ImmichTranslations? translations; + + const ImmichTranslationProvider({ + super.key, + this.translations, + required super.child, + }); + + static ImmichTranslations of(BuildContext context) { + final provider = context.dependOnInheritedWidgetOfExactType(); + return provider?.translations ?? ImmichTranslations(); + } + + @override + bool updateShouldNotify(covariant ImmichTranslationProvider oldWidget) { + return oldWidget.translations != translations; + } +} diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml index 1633a54cb6..7d484f0c64 100644 --- a/mobile/pubspec.yaml +++ b/mobile/pubspec.yaml @@ -2,7 +2,7 @@ name: immich_mobile description: Immich - selfhosted backup media file on mobile phone publish_to: 'none' -version: 2.3.1+3028 +version: 2.4.1+3030 environment: sdk: '>=3.8.0 <4.0.0' diff --git a/mobile/test/domain/services/asset.service_test.dart b/mobile/test/domain/services/asset.service_test.dart index 5e7179ffa6..ca9defc332 100644 --- a/mobile/test/domain/services/asset.service_test.dart +++ b/mobile/test/domain/services/asset.service_test.dart @@ -87,6 +87,25 @@ void main() { verify(() => mockLocalAssetRepository.get('local-1')).called(1); }); + test('uses fetched asset orientation when dimensions are missing on Android', () async { + debugDefaultTargetPlatformOverride = TargetPlatform.android; + addTearDown(() => debugDefaultTargetPlatformOverride = null); + + // Original asset has default orientation 0, but dimensions are missing + final localAsset = TestUtils.createLocalAsset(id: 'local-1', width: null, height: null, orientation: 0); + + // Fetched asset has 90° orientation and proper dimensions + final fetchedAsset = TestUtils.createLocalAsset(id: 'local-1', width: 1920, height: 1080, orientation: 90); + + when(() => mockLocalAssetRepository.get('local-1')).thenAnswer((_) async => fetchedAsset); + + final result = await sut.getAspectRatio(localAsset); + + // Should flip dimensions since fetched asset has 90° orientation + expect(result, 1080 / 1920); + verify(() => mockLocalAssetRepository.get('local-1')).called(1); + }); + test('returns 1.0 when dimensions are still unavailable after fetching', () async { final remoteAsset = TestUtils.createRemoteAsset(id: 'remote-1', width: null, height: null); @@ -112,7 +131,9 @@ void main() { expect(result, 1.0); }); - test('handles local asset with remoteId and uses exif from remote', () async { + test('handles local asset with remoteId using local orientation not remote exif', () async { + // When a LocalAsset has a remoteId (merged), we should use local orientation + // because the width/height come from the local asset (pre-corrected on iOS) final localAsset = TestUtils.createLocalAsset( id: 'local-1', remoteId: 'remote-1', @@ -121,9 +142,24 @@ void main() { orientation: 0, ); - final exif = const ExifInfo(orientation: '6'); + final result = await sut.getAspectRatio(localAsset); - when(() => mockRemoteAssetRepository.getExif('remote-1')).thenAnswer((_) async => exif); + expect(result, 1920 / 1080); + // Should not call remote exif for LocalAsset + verifyNever(() => mockRemoteAssetRepository.getExif(any())); + }); + + test('handles local asset with remoteId and 90 degree rotation on Android', () async { + debugDefaultTargetPlatformOverride = TargetPlatform.android; + addTearDown(() => debugDefaultTargetPlatformOverride = null); + + final localAsset = TestUtils.createLocalAsset( + id: 'local-1', + remoteId: 'remote-1', + width: 1920, + height: 1080, + orientation: 90, + ); final result = await sut.getAspectRatio(localAsset); diff --git a/mobile/test/infrastructure/repositories/local_asset_repository_test.dart b/mobile/test/infrastructure/repositories/local_asset_repository_test.dart new file mode 100644 index 0000000000..0d686fbc09 --- /dev/null +++ b/mobile/test/infrastructure/repositories/local_asset_repository_test.dart @@ -0,0 +1,438 @@ +import 'package:drift/drift.dart'; +import 'package:drift/native.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:immich_mobile/constants/enums.dart'; +import 'package:immich_mobile/domain/models/album/local_album.model.dart'; +import 'package:immich_mobile/domain/models/asset/base_asset.model.dart'; +import 'package:immich_mobile/infrastructure/entities/local_album.entity.drift.dart'; +import 'package:immich_mobile/infrastructure/entities/local_album_asset.entity.drift.dart'; +import 'package:immich_mobile/infrastructure/entities/local_asset.entity.drift.dart'; +import 'package:immich_mobile/infrastructure/entities/remote_asset.entity.drift.dart'; +import 'package:immich_mobile/infrastructure/entities/user.entity.drift.dart'; +import 'package:immich_mobile/infrastructure/repositories/db.repository.dart'; +import 'package:immich_mobile/infrastructure/repositories/local_asset.repository.dart'; + +void main() { + late Drift db; + late DriftLocalAssetRepository repository; + + setUp(() { + db = Drift(DatabaseConnection(NativeDatabase.memory(), closeStreamsSynchronously: true)); + repository = DriftLocalAssetRepository(db); + }); + + tearDown(() async { + await db.close(); + }); + + group('getRemovalCandidates', () { + final userId = 'user-123'; + final otherUserId = 'user-456'; + final now = DateTime(2024, 1, 15); + final cutoffDate = DateTime(2024, 1, 10); + final beforeCutoff = DateTime(2024, 1, 5); + final afterCutoff = DateTime(2024, 1, 12); + + Future insertUser(String id, String email) async { + await db.into(db.userEntity).insert(UserEntityCompanion.insert(id: id, email: email, name: email)); + } + + setUp(() async { + await insertUser(userId, 'user@test.com'); + await insertUser(otherUserId, 'other@test.com'); + }); + + Future insertLocalAsset({ + required String id, + required String checksum, + required DateTime createdAt, + required AssetType type, + required bool isFavorite, + }) async { + await db + .into(db.localAssetEntity) + .insert( + LocalAssetEntityCompanion.insert( + id: id, + name: 'asset_$id.jpg', + checksum: Value(checksum), + type: type, + createdAt: Value(createdAt), + updatedAt: Value(createdAt), + isFavorite: Value(isFavorite), + ), + ); + } + + Future insertRemoteAsset({ + required String id, + required String checksum, + required String ownerId, + DateTime? deletedAt, + }) async { + await db + .into(db.remoteAssetEntity) + .insert( + RemoteAssetEntityCompanion.insert( + id: id, + name: 'remote_$id.jpg', + checksum: checksum, + type: AssetType.image, + createdAt: Value(now), + updatedAt: Value(now), + ownerId: ownerId, + visibility: AssetVisibility.timeline, + deletedAt: Value(deletedAt), + ), + ); + } + + Future insertLocalAlbum({required String id, required String name, required bool isIosSharedAlbum}) async { + await db + .into(db.localAlbumEntity) + .insert( + LocalAlbumEntityCompanion.insert( + id: id, + name: name, + updatedAt: Value(now), + backupSelection: BackupSelection.none, + isIosSharedAlbum: Value(isIosSharedAlbum), + ), + ); + } + + Future insertLocalAlbumAsset({required String albumId, required String assetId}) async { + await db + .into(db.localAlbumAssetEntity) + .insert(LocalAlbumAssetEntityCompanion.insert(albumId: albumId, assetId: assetId)); + } + + test('returns only assets that match all criteria', () async { + // Asset 1: Should be included - backed up, before cutoff, correct owner, not deleted, not favorite + await insertLocalAsset( + id: 'local-1', + checksum: 'checksum-1', + createdAt: beforeCutoff, + type: AssetType.image, + isFavorite: false, + ); + await insertRemoteAsset(id: 'remote-1', checksum: 'checksum-1', ownerId: userId); + + // Asset 2: Should NOT be included - not backed up (no remote asset) + await insertLocalAsset( + id: 'local-2', + checksum: 'checksum-2', + createdAt: beforeCutoff, + type: AssetType.image, + isFavorite: false, + ); + + // Asset 3: Should NOT be included - after cutoff date + await insertLocalAsset( + id: 'local-3', + checksum: 'checksum-3', + createdAt: afterCutoff, + type: AssetType.image, + isFavorite: false, + ); + await insertRemoteAsset(id: 'remote-3', checksum: 'checksum-3', ownerId: userId); + + // Asset 4: Should NOT be included - different owner + await insertLocalAsset( + id: 'local-4', + checksum: 'checksum-4', + createdAt: beforeCutoff, + type: AssetType.image, + isFavorite: false, + ); + await insertRemoteAsset(id: 'remote-4', checksum: 'checksum-4', ownerId: otherUserId); + + // Asset 5: Should NOT be included - remote asset is deleted + await insertLocalAsset( + id: 'local-5', + checksum: 'checksum-5', + createdAt: beforeCutoff, + type: AssetType.image, + isFavorite: false, + ); + await insertRemoteAsset(id: 'remote-5', checksum: 'checksum-5', ownerId: userId, deletedAt: now); + + // Asset 6: Should NOT be included - is favorite (when keepFavorites=true) + await insertLocalAsset( + id: 'local-6', + checksum: 'checksum-6', + createdAt: beforeCutoff, + type: AssetType.image, + isFavorite: true, + ); + await insertRemoteAsset(id: 'remote-6', checksum: 'checksum-6', ownerId: userId); + + final candidates = await repository.getRemovalCandidates(userId, cutoffDate, keepFavorites: true); + + expect(candidates.length, 1); + expect(candidates[0].id, 'local-1'); + }); + + test('includes favorites when keepFavorites is false', () async { + await insertLocalAsset( + id: 'local-favorite', + checksum: 'checksum-fav', + createdAt: beforeCutoff, + type: AssetType.image, + isFavorite: true, + ); + await insertRemoteAsset(id: 'remote-favorite', checksum: 'checksum-fav', ownerId: userId); + + final candidates = await repository.getRemovalCandidates(userId, cutoffDate, keepFavorites: false); + + expect(candidates.length, 1); + expect(candidates[0].id, 'local-favorite'); + expect(candidates[0].isFavorite, true); + }); + + test('filters by photos only', () async { + // Photo + await insertLocalAsset( + id: 'local-photo', + checksum: 'checksum-photo', + createdAt: beforeCutoff, + type: AssetType.image, + isFavorite: false, + ); + await insertRemoteAsset(id: 'remote-photo', checksum: 'checksum-photo', ownerId: userId); + + // Video + await insertLocalAsset( + id: 'local-video', + checksum: 'checksum-video', + createdAt: beforeCutoff, + type: AssetType.video, + isFavorite: false, + ); + await insertRemoteAsset(id: 'remote-video', checksum: 'checksum-video', ownerId: userId); + + final candidates = await repository.getRemovalCandidates( + userId, + cutoffDate, + filterType: AssetFilterType.photosOnly, + ); + + expect(candidates.length, 1); + expect(candidates[0].id, 'local-photo'); + expect(candidates[0].type, AssetType.image); + }); + + test('filters by videos only', () async { + // Photo + await insertLocalAsset( + id: 'local-photo', + checksum: 'checksum-photo', + createdAt: beforeCutoff, + type: AssetType.image, + isFavorite: false, + ); + await insertRemoteAsset(id: 'remote-photo', checksum: 'checksum-photo', ownerId: userId); + + // Video + await insertLocalAsset( + id: 'local-video', + checksum: 'checksum-video', + createdAt: beforeCutoff, + type: AssetType.video, + isFavorite: false, + ); + await insertRemoteAsset(id: 'remote-video', checksum: 'checksum-video', ownerId: userId); + + final candidates = await repository.getRemovalCandidates( + userId, + cutoffDate, + filterType: AssetFilterType.videosOnly, + ); + + expect(candidates.length, 1); + expect(candidates[0].id, 'local-video'); + expect(candidates[0].type, AssetType.video); + }); + + test('returns both photos and videos with filterType.all', () async { + // Photo + await insertLocalAsset( + id: 'local-photo', + checksum: 'checksum-photo', + createdAt: beforeCutoff, + type: AssetType.image, + isFavorite: false, + ); + await insertRemoteAsset(id: 'remote-photo', checksum: 'checksum-photo', ownerId: userId); + + // Video + await insertLocalAsset( + id: 'local-video', + checksum: 'checksum-video', + createdAt: beforeCutoff, + type: AssetType.video, + isFavorite: false, + ); + await insertRemoteAsset(id: 'remote-video', checksum: 'checksum-video', ownerId: userId); + + final candidates = await repository.getRemovalCandidates(userId, cutoffDate, filterType: AssetFilterType.all); + + expect(candidates.length, 2); + final ids = candidates.map((a) => a.id).toSet(); + expect(ids, containsAll(['local-photo', 'local-video'])); + }); + + test('excludes assets in iOS shared albums', () async { + // Regular album + await insertLocalAlbum(id: 'album-regular', name: 'Regular Album', isIosSharedAlbum: false); + + // iOS shared album + await insertLocalAlbum(id: 'album-shared', name: 'Shared Album', isIosSharedAlbum: true); + + // Asset in regular album (should be included) + await insertLocalAsset( + id: 'local-regular', + checksum: 'checksum-regular', + createdAt: beforeCutoff, + type: AssetType.image, + isFavorite: false, + ); + await insertRemoteAsset(id: 'remote-regular', checksum: 'checksum-regular', ownerId: userId); + await insertLocalAlbumAsset(albumId: 'album-regular', assetId: 'local-regular'); + + // Asset in iOS shared album (should be excluded) + await insertLocalAsset( + id: 'local-shared', + checksum: 'checksum-shared', + createdAt: beforeCutoff, + type: AssetType.image, + isFavorite: false, + ); + await insertRemoteAsset(id: 'remote-shared', checksum: 'checksum-shared', ownerId: userId); + await insertLocalAlbumAsset(albumId: 'album-shared', assetId: 'local-shared'); + + final candidates = await repository.getRemovalCandidates(userId, cutoffDate); + + expect(candidates.length, 1); + expect(candidates[0].id, 'local-regular'); + }); + + test('includes assets at exact cutoff date', () async { + await insertLocalAsset( + id: 'local-exact', + checksum: 'checksum-exact', + createdAt: cutoffDate, + type: AssetType.image, + isFavorite: false, + ); + await insertRemoteAsset(id: 'remote-exact', checksum: 'checksum-exact', ownerId: userId); + + final candidates = await repository.getRemovalCandidates(userId, cutoffDate); + + expect(candidates.length, 1); + expect(candidates[0].id, 'local-exact'); + }); + + test('returns empty list when no assets match criteria', () async { + // Only assets after cutoff + await insertLocalAsset( + id: 'local-after', + checksum: 'checksum-after', + createdAt: afterCutoff, + type: AssetType.image, + isFavorite: false, + ); + await insertRemoteAsset(id: 'remote-after', checksum: 'checksum-after', ownerId: userId); + + final candidates = await repository.getRemovalCandidates(userId, cutoffDate); + + expect(candidates, isEmpty); + }); + + test('handles multiple assets with same checksum', () async { + // Two local assets with same checksum (edge case, but should handle it) + await insertLocalAsset( + id: 'local-dup1', + checksum: 'checksum-dup', + createdAt: beforeCutoff, + type: AssetType.image, + isFavorite: false, + ); + await insertLocalAsset( + id: 'local-dup2', + checksum: 'checksum-dup', + createdAt: beforeCutoff, + type: AssetType.image, + isFavorite: false, + ); + await insertRemoteAsset(id: 'remote-dup', checksum: 'checksum-dup', ownerId: userId); + + final candidates = await repository.getRemovalCandidates(userId, cutoffDate); + + expect(candidates.length, 2); + expect(candidates.map((a) => a.checksum).toSet(), equals({'checksum-dup'})); + }); + + test('includes assets not in any album', () async { + // Asset not in any album should be included + await insertLocalAsset( + id: 'local-no-album', + checksum: 'checksum-no-album', + createdAt: beforeCutoff, + type: AssetType.image, + isFavorite: false, + ); + await insertRemoteAsset(id: 'remote-no-album', checksum: 'checksum-no-album', ownerId: userId); + + final candidates = await repository.getRemovalCandidates(userId, cutoffDate); + + expect(candidates.length, 1); + expect(candidates[0].id, 'local-no-album'); + }); + + test('excludes asset that is in both regular and iOS shared album', () async { + // Regular album + await insertLocalAlbum(id: 'album-regular', name: 'Regular Album', isIosSharedAlbum: false); + + // iOS shared album + await insertLocalAlbum(id: 'album-shared', name: 'Shared Album', isIosSharedAlbum: true); + + // Asset in BOTH albums - should be excluded because it's in an iOS shared album + await insertLocalAsset( + id: 'local-both', + checksum: 'checksum-both', + createdAt: beforeCutoff, + type: AssetType.image, + isFavorite: false, + ); + await insertRemoteAsset(id: 'remote-both', checksum: 'checksum-both', ownerId: userId); + await insertLocalAlbumAsset(albumId: 'album-regular', assetId: 'local-both'); + await insertLocalAlbumAsset(albumId: 'album-shared', assetId: 'local-both'); + + final candidates = await repository.getRemovalCandidates(userId, cutoffDate); + + expect(candidates, isEmpty); + }); + + test('excludes assets with null checksum (not backed up)', () async { + // Asset with null checksum cannot be matched to remote asset + await db + .into(db.localAssetEntity) + .insert( + LocalAssetEntityCompanion.insert( + id: 'local-null-checksum', + name: 'asset_null.jpg', + checksum: const Value.absent(), // null checksum + type: AssetType.image, + createdAt: Value(beforeCutoff), + updatedAt: Value(beforeCutoff), + isFavorite: const Value(false), + ), + ); + + final candidates = await repository.getRemovalCandidates(userId, cutoffDate); + + expect(candidates, isEmpty); + }); + }); +} diff --git a/mobile/test/presentation/widgets/remote_album/drift_album_option_widget_test.dart b/mobile/test/presentation/widgets/remote_album/drift_album_option_widget_test.dart new file mode 100644 index 0000000000..1706b4d307 --- /dev/null +++ b/mobile/test/presentation/widgets/remote_album/drift_album_option_widget_test.dart @@ -0,0 +1,500 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:immich_mobile/presentation/widgets/remote_album/drift_album_option.widget.dart'; + +import '../../../widget_tester_extensions.dart'; + +void main() { + group('DriftRemoteAlbumOption', () { + testWidgets('shows kebab menu icon button', (tester) async { + await tester.pumpConsumerWidget( + const DriftRemoteAlbumOption(), + ); + + expect(find.byIcon(Icons.more_vert_rounded), findsOneWidget); + }); + + testWidgets('opens menu when icon button is tapped', (tester) async { + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onEditAlbum: () {}, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.edit), findsOneWidget); + }); + + testWidgets('shows edit album option when onEditAlbum is provided', + (tester) async { + bool editCalled = false; + + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onEditAlbum: () => editCalled = true, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.edit), findsOneWidget); + + await tester.tap(find.byIcon(Icons.edit)); + await tester.pumpAndSettle(); + + expect(editCalled, isTrue); + }); + + testWidgets('hides edit album option when onEditAlbum is null', + (tester) async { + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onAddPhotos: () {}, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.edit), findsNothing); + }); + + testWidgets('shows add photos option when onAddPhotos is provided', + (tester) async { + bool addPhotosCalled = false; + + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onAddPhotos: () => addPhotosCalled = true, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.add_a_photo), findsOneWidget); + + await tester.tap(find.byIcon(Icons.add_a_photo)); + await tester.pumpAndSettle(); + + expect(addPhotosCalled, isTrue); + }); + + testWidgets('hides add photos option when onAddPhotos is null', + (tester) async { + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onEditAlbum: () {}, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.add_a_photo), findsNothing); + }); + + testWidgets('shows add users option when onAddUsers is provided', + (tester) async { + bool addUsersCalled = false; + + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onAddUsers: () => addUsersCalled = true, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.group_add), findsOneWidget); + + await tester.tap(find.byIcon(Icons.group_add)); + await tester.pumpAndSettle(); + + expect(addUsersCalled, isTrue); + }); + + testWidgets('hides add users option when onAddUsers is null', + (tester) async { + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onEditAlbum: () {}, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.group_add), findsNothing); + }); + + testWidgets('shows leave album option when onLeaveAlbum is provided', + (tester) async { + bool leaveAlbumCalled = false; + + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onLeaveAlbum: () => leaveAlbumCalled = true, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.person_remove_rounded), findsOneWidget); + + await tester.tap(find.byIcon(Icons.person_remove_rounded)); + await tester.pumpAndSettle(); + + expect(leaveAlbumCalled, isTrue); + }); + + testWidgets('hides leave album option when onLeaveAlbum is null', + (tester) async { + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onEditAlbum: () {}, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.person_remove_rounded), findsNothing); + }); + + testWidgets( + 'shows toggle album order option when onToggleAlbumOrder is provided', + (tester) async { + bool toggleOrderCalled = false; + + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onToggleAlbumOrder: () => toggleOrderCalled = true, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.swap_vert_rounded), findsOneWidget); + + await tester.tap(find.byIcon(Icons.swap_vert_rounded)); + await tester.pumpAndSettle(); + + expect(toggleOrderCalled, isTrue); + }); + + testWidgets('hides toggle album order option when onToggleAlbumOrder is null', + (tester) async { + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onEditAlbum: () {}, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.swap_vert_rounded), findsNothing); + }); + + testWidgets( + 'shows create shared link option when onCreateSharedLink is provided', + (tester) async { + bool createSharedLinkCalled = false; + + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onCreateSharedLink: () => createSharedLinkCalled = true, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.link), findsOneWidget); + + await tester.tap(find.byIcon(Icons.link)); + await tester.pumpAndSettle(); + + expect(createSharedLinkCalled, isTrue); + }); + + testWidgets('hides create shared link option when onCreateSharedLink is null', + (tester) async { + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onEditAlbum: () {}, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.link), findsNothing); + }); + + testWidgets('shows options option when onShowOptions is provided', + (tester) async { + bool showOptionsCalled = false; + + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onShowOptions: () => showOptionsCalled = true, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.settings), findsOneWidget); + + await tester.tap(find.byIcon(Icons.settings)); + await tester.pumpAndSettle(); + + expect(showOptionsCalled, isTrue); + }); + + testWidgets('hides options option when onShowOptions is null', + (tester) async { + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onEditAlbum: () {}, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.settings), findsNothing); + }); + + testWidgets('shows delete album option when onDeleteAlbum is provided', + (tester) async { + bool deleteAlbumCalled = false; + + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onDeleteAlbum: () => deleteAlbumCalled = true, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.delete), findsOneWidget); + + await tester.tap(find.byIcon(Icons.delete)); + await tester.pumpAndSettle(); + + expect(deleteAlbumCalled, isTrue); + }); + + testWidgets('hides delete album option when onDeleteAlbum is null', + (tester) async { + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onEditAlbum: () {}, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.delete), findsNothing); + }); + + testWidgets('shows divider before delete album option', (tester) async { + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onEditAlbum: () {}, + onDeleteAlbum: () {}, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byType(Divider), findsOneWidget); + }); + + testWidgets('shows all options when all callbacks are provided', + (tester) async { + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onEditAlbum: () {}, + onAddPhotos: () {}, + onAddUsers: () {}, + onLeaveAlbum: () {}, + onToggleAlbumOrder: () {}, + onCreateSharedLink: () {}, + onShowOptions: () {}, + onDeleteAlbum: () {}, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.edit), findsOneWidget); + expect(find.byIcon(Icons.add_a_photo), findsOneWidget); + expect(find.byIcon(Icons.group_add), findsOneWidget); + expect(find.byIcon(Icons.person_remove_rounded), findsOneWidget); + expect(find.byIcon(Icons.swap_vert_rounded), findsOneWidget); + expect(find.byIcon(Icons.link), findsOneWidget); + expect(find.byIcon(Icons.settings), findsOneWidget); + expect(find.byIcon(Icons.delete), findsOneWidget); + expect(find.byType(Divider), findsOneWidget); + }); + + testWidgets('shows no options when all callbacks are null', (tester) async { + await tester.pumpConsumerWidget( + const DriftRemoteAlbumOption(), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.edit), findsNothing); + expect(find.byIcon(Icons.add_a_photo), findsNothing); + expect(find.byIcon(Icons.group_add), findsNothing); + expect(find.byIcon(Icons.person_remove_rounded), findsNothing); + expect(find.byIcon(Icons.swap_vert_rounded), findsNothing); + expect(find.byIcon(Icons.link), findsNothing); + expect(find.byIcon(Icons.settings), findsNothing); + expect(find.byIcon(Icons.delete), findsNothing); + }); + + testWidgets('uses custom icon color when provided', (tester) async { + const customColor = Colors.red; + + await tester.pumpConsumerWidget( + const DriftRemoteAlbumOption( + iconColor: customColor, + ), + ); + + final iconButton = tester.widget(find.byType(IconButton)); + final icon = iconButton.icon as Icon; + + expect(icon.color, equals(customColor)); + }); + + testWidgets('uses default white color when iconColor is null', + (tester) async { + await tester.pumpConsumerWidget( + const DriftRemoteAlbumOption(), + ); + + final iconButton = tester.widget(find.byType(IconButton)); + final icon = iconButton.icon as Icon; + + expect(icon.color, equals(Colors.white)); + }); + + testWidgets('applies icon shadows when provided', (tester) async { + final shadows = [ + const Shadow(offset: Offset(0, 2), blurRadius: 5, color: Colors.black), + ]; + + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + iconShadows: shadows, + ), + ); + + final iconButton = tester.widget(find.byType(IconButton)); + final icon = iconButton.icon as Icon; + + expect(icon.shadows, equals(shadows)); + }); + + group('owner vs non-owner scenarios', () { + testWidgets('owner sees all management options', (tester) async { + // Simulating owner scenario - all callbacks provided + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onEditAlbum: () {}, + onAddPhotos: () {}, + onAddUsers: () {}, + onToggleAlbumOrder: () {}, + onCreateSharedLink: () {}, + onShowOptions: () {}, + onDeleteAlbum: () {}, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + // Owner should see all management options + expect(find.byIcon(Icons.edit), findsOneWidget); + expect(find.byIcon(Icons.add_a_photo), findsOneWidget); + expect(find.byIcon(Icons.group_add), findsOneWidget); + expect(find.byIcon(Icons.swap_vert_rounded), findsOneWidget); + expect(find.byIcon(Icons.link), findsOneWidget); + expect(find.byIcon(Icons.delete), findsOneWidget); + // Owner should NOT see leave album + expect(find.byIcon(Icons.person_remove_rounded), findsNothing); + }); + + testWidgets('non-owner with editor role sees limited options', + (tester) async { + // Simulating non-owner with editor role - can add photos, show options, leave + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onAddPhotos: () {}, + onShowOptions: () {}, + onLeaveAlbum: () {}, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + // Editor can add photos + expect(find.byIcon(Icons.add_a_photo), findsOneWidget); + // Can see options + expect(find.byIcon(Icons.settings), findsOneWidget); + // Can leave album + expect(find.byIcon(Icons.person_remove_rounded), findsOneWidget); + // Cannot see owner-only options + expect(find.byIcon(Icons.edit), findsNothing); + expect(find.byIcon(Icons.group_add), findsNothing); + expect(find.byIcon(Icons.swap_vert_rounded), findsNothing); + expect(find.byIcon(Icons.link), findsNothing); + expect(find.byIcon(Icons.delete), findsNothing); + }); + + testWidgets('non-owner viewer sees minimal options', (tester) async { + // Simulating viewer - can only show options and leave + await tester.pumpConsumerWidget( + DriftRemoteAlbumOption( + onShowOptions: () {}, + onLeaveAlbum: () {}, + ), + ); + + await tester.tap(find.byIcon(Icons.more_vert_rounded)); + await tester.pumpAndSettle(); + + // Can see options + expect(find.byIcon(Icons.settings), findsOneWidget); + // Can leave album + expect(find.byIcon(Icons.person_remove_rounded), findsOneWidget); + // Cannot see any other options + expect(find.byIcon(Icons.edit), findsNothing); + expect(find.byIcon(Icons.add_a_photo), findsNothing); + expect(find.byIcon(Icons.group_add), findsNothing); + expect(find.byIcon(Icons.swap_vert_rounded), findsNothing); + expect(find.byIcon(Icons.link), findsNothing); + expect(find.byIcon(Icons.delete), findsNothing); + }); + }); + }); +} diff --git a/open-api/immich-openapi-specs.json b/open-api/immich-openapi-specs.json index e21cf27beb..70f482c5b2 100644 --- a/open-api/immich-openapi-specs.json +++ b/open-api/immich-openapi-specs.json @@ -2528,6 +2528,16 @@ "required": true }, "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetMediaResponseDto" + } + } + }, + "description": "Asset is a duplicate" + }, "201": { "content": { "application/json": { @@ -2536,7 +2546,7 @@ } } }, - "description": "" + "description": "Asset uploaded successfully" } }, "security": [ @@ -2906,6 +2916,112 @@ "x-immich-state": "Stable" } }, + "/assets/metadata": { + "delete": { + "description": "Delete metadata key-value pairs for multiple assets.", + "operationId": "deleteBulkAssetMetadata", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetMetadataBulkDeleteDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Delete asset metadata", + "tags": [ + "Assets" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v2.5.0", + "state": "Beta" + } + ], + "x-immich-permission": "asset.update", + "x-immich-state": "Beta" + }, + "put": { + "description": "Upsert metadata key-value pairs for multiple assets.", + "operationId": "updateBulkAssetMetadata", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssetMetadataBulkUpsertDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/AssetMetadataBulkResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "Upsert asset metadata", + "tags": [ + "Assets" + ], + "x-immich-history": [ + { + "version": "v1", + "state": "Added" + }, + { + "version": "v2.5.0", + "state": "Beta" + } + ], + "x-immich-permission": "asset.update", + "x-immich-state": "Beta" + } + }, "/assets/random": { "get": { "deprecated": true, @@ -3340,7 +3456,7 @@ "required": true, "in": "path", "schema": { - "$ref": "#/components/schemas/AssetMetadataKey" + "type": "string" } } ], @@ -3399,7 +3515,7 @@ "required": true, "in": "path", "schema": { - "$ref": "#/components/schemas/AssetMetadataKey" + "type": "string" } } ], @@ -3637,7 +3753,7 @@ } } }, - "description": "" + "description": "Asset replaced successfully" } }, "security": [ @@ -8020,6 +8136,55 @@ "x-immich-state": "Alpha" } }, + "/plugins/triggers": { + "get": { + "description": "Retrieve a list of all available plugin triggers.", + "operationId": "getPluginTriggers", + "parameters": [], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/PluginTriggerResponseDto" + }, + "type": "array" + } + } + }, + "description": "" + } + }, + "security": [ + { + "bearer": [] + }, + { + "cookie": [] + }, + { + "api_key": [] + } + ], + "summary": "List all plugin triggers", + "tags": [ + "Plugins" + ], + "x-immich-history": [ + { + "version": "v2.3.0", + "state": "Added" + }, + { + "version": "v2.3.0", + "state": "Alpha" + } + ], + "x-immich-permission": "plugin.read", + "x-immich-state": "Alpha" + } + }, "/plugins/{id}": { "get": { "description": "Retrieve information about a specific plugin by its ID.", @@ -10332,6 +10497,21 @@ "format": "uuid", "type": "string" } + }, + { + "name": "id", + "required": false, + "in": "query", + "x-immich-history": [ + { + "version": "v2.5.0", + "state": "Added" + } + ], + "schema": { + "format": "uuid", + "type": "string" + } } ], "responses": { @@ -14268,7 +14448,7 @@ "info": { "title": "Immich", "description": "Immich API", - "version": "2.3.1", + "version": "2.4.1", "contact": {} }, "tags": [ @@ -15435,8 +15615,7 @@ "deviceAssetId", "deviceId", "fileCreatedAt", - "fileModifiedAt", - "metadata" + "fileModifiedAt" ], "type": "object" }, @@ -15511,20 +15690,98 @@ ], "type": "string" }, - "AssetMetadataKey": { - "enum": [ - "mobile-app" + "AssetMetadataBulkDeleteDto": { + "properties": { + "items": { + "items": { + "$ref": "#/components/schemas/AssetMetadataBulkDeleteItemDto" + }, + "type": "array" + } + }, + "required": [ + "items" ], - "type": "string" + "type": "object" + }, + "AssetMetadataBulkDeleteItemDto": { + "properties": { + "assetId": { + "format": "uuid", + "type": "string" + }, + "key": { + "type": "string" + } + }, + "required": [ + "assetId", + "key" + ], + "type": "object" + }, + "AssetMetadataBulkResponseDto": { + "properties": { + "assetId": { + "type": "string" + }, + "key": { + "type": "string" + }, + "updatedAt": { + "format": "date-time", + "type": "string" + }, + "value": { + "type": "object" + } + }, + "required": [ + "assetId", + "key", + "updatedAt", + "value" + ], + "type": "object" + }, + "AssetMetadataBulkUpsertDto": { + "properties": { + "items": { + "items": { + "$ref": "#/components/schemas/AssetMetadataBulkUpsertItemDto" + }, + "type": "array" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "AssetMetadataBulkUpsertItemDto": { + "properties": { + "assetId": { + "format": "uuid", + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "object" + } + }, + "required": [ + "assetId", + "key", + "value" + ], + "type": "object" }, "AssetMetadataResponseDto": { "properties": { "key": { - "allOf": [ - { - "$ref": "#/components/schemas/AssetMetadataKey" - } - ] + "type": "string" }, "updatedAt": { "format": "date-time", @@ -15558,11 +15815,7 @@ "AssetMetadataUpsertItemDto": { "properties": { "key": { - "allOf": [ - { - "$ref": "#/components/schemas/AssetMetadataKey" - } - ] + "type": "string" }, "value": { "type": "object" @@ -18282,7 +18535,7 @@ }, "supportedContexts": { "items": { - "$ref": "#/components/schemas/PluginContext" + "$ref": "#/components/schemas/PluginContextType" }, "type": "array" }, @@ -18301,7 +18554,7 @@ ], "type": "object" }, - "PluginContext": { + "PluginContextType": { "enum": [ "asset", "album", @@ -18329,7 +18582,7 @@ }, "supportedContexts": { "items": { - "$ref": "#/components/schemas/PluginContext" + "$ref": "#/components/schemas/PluginContextType" }, "type": "array" }, @@ -18401,6 +18654,29 @@ ], "type": "object" }, + "PluginTriggerResponseDto": { + "properties": { + "contextType": { + "allOf": [ + { + "$ref": "#/components/schemas/PluginContextType" + } + ] + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/PluginTriggerType" + } + ] + } + }, + "required": [ + "contextType", + "type" + ], + "type": "object" + }, "PluginTriggerType": { "enum": [ "AssetCreate", @@ -20564,11 +20840,7 @@ "type": "string" }, "key": { - "allOf": [ - { - "$ref": "#/components/schemas/AssetMetadataKey" - } - ] + "type": "string" } }, "required": [ @@ -20583,11 +20855,7 @@ "type": "string" }, "key": { - "allOf": [ - { - "$ref": "#/components/schemas/AssetMetadataKey" - } - ] + "type": "string" }, "value": { "type": "object" @@ -23316,11 +23584,11 @@ "type": "string" }, "triggerType": { - "enum": [ - "AssetCreate", - "PersonRecognized" - ], - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/PluginTriggerType" + } + ] } }, "required": [ @@ -23358,6 +23626,13 @@ }, "name": { "type": "string" + }, + "triggerType": { + "allOf": [ + { + "$ref": "#/components/schemas/PluginTriggerType" + } + ] } }, "type": "object" diff --git a/open-api/typescript-sdk/.nvmrc b/open-api/typescript-sdk/.nvmrc index 9e2934aa34..248216ad5b 100644 --- a/open-api/typescript-sdk/.nvmrc +++ b/open-api/typescript-sdk/.nvmrc @@ -1 +1 @@ -24.11.1 +24.12.0 diff --git a/open-api/typescript-sdk/package.json b/open-api/typescript-sdk/package.json index b033fdfd7b..832093fe23 100644 --- a/open-api/typescript-sdk/package.json +++ b/open-api/typescript-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@immich/sdk", - "version": "2.3.1", + "version": "2.4.1", "description": "Auto-generated TypeScript SDK for the Immich API", "type": "module", "main": "./build/index.js", @@ -19,7 +19,7 @@ "@oazapfts/runtime": "^1.0.2" }, "devDependencies": { - "@types/node": "^24.10.3", + "@types/node": "^24.10.4", "typescript": "^5.3.3" }, "repository": { @@ -28,6 +28,6 @@ "directory": "open-api/typescript-sdk" }, "volta": { - "node": "24.11.1" + "node": "24.12.0" } } diff --git a/open-api/typescript-sdk/src/fetch-client.ts b/open-api/typescript-sdk/src/fetch-client.ts index 7afee42e2c..afc583f91d 100644 --- a/open-api/typescript-sdk/src/fetch-client.ts +++ b/open-api/typescript-sdk/src/fetch-client.ts @@ -1,6 +1,6 @@ /** * Immich - * 2.3.1 + * 2.4.1 * DO NOT MODIFY - This file has been generated using oazapfts. * See https://www.npmjs.com/package/oazapfts */ @@ -8,7 +8,7 @@ import * as Oazapfts from "@oazapfts/runtime"; import * as QS from "@oazapfts/runtime/query"; export const defaults: Oazapfts.Defaults = { headers: {}, - baseUrl: "/api", + baseUrl: "/api" }; const oazapfts = Oazapfts.runtime(defaults); export const servers = { @@ -471,7 +471,7 @@ export type AssetBulkDeleteDto = { ids: string[]; }; export type AssetMetadataUpsertItemDto = { - key: AssetMetadataKey; + key: string; value: object; }; export type AssetMediaCreateDto = { @@ -484,7 +484,7 @@ export type AssetMediaCreateDto = { filename?: string; isFavorite?: boolean; livePhotoVideoId?: string; - metadata: AssetMetadataUpsertItemDto[]; + metadata?: AssetMetadataUpsertItemDto[]; sidecarData?: Blob; visibility?: AssetVisibility; }; @@ -543,6 +543,27 @@ export type AssetJobsDto = { assetIds: string[]; name: AssetJobName; }; +export type AssetMetadataBulkDeleteItemDto = { + assetId: string; + key: string; +}; +export type AssetMetadataBulkDeleteDto = { + items: AssetMetadataBulkDeleteItemDto[]; +}; +export type AssetMetadataBulkUpsertItemDto = { + assetId: string; + key: string; + value: object; +}; +export type AssetMetadataBulkUpsertDto = { + items: AssetMetadataBulkUpsertItemDto[]; +}; +export type AssetMetadataBulkResponseDto = { + assetId: string; + key: string; + updatedAt: string; + value: object; +}; export type UpdateAssetDto = { dateTimeOriginal?: string; description?: string; @@ -554,7 +575,7 @@ export type UpdateAssetDto = { visibility?: AssetVisibility; }; export type AssetMetadataResponseDto = { - key: AssetMetadataKey; + key: string; updatedAt: string; value: object; }; @@ -942,7 +963,7 @@ export type PluginActionResponseDto = { methodName: string; pluginId: string; schema: object | null; - supportedContexts: PluginContext[]; + supportedContexts: PluginContextType[]; title: string; }; export type PluginFilterResponseDto = { @@ -951,7 +972,7 @@ export type PluginFilterResponseDto = { methodName: string; pluginId: string; schema: object | null; - supportedContexts: PluginContext[]; + supportedContexts: PluginContextType[]; title: string; }; export type PluginResponseDto = { @@ -966,6 +987,10 @@ export type PluginResponseDto = { updatedAt: string; version: string; }; +export type PluginTriggerResponseDto = { + contextType: PluginContextType; + "type": PluginTriggerType; +}; export type QueueResponseDto = { isPaused: boolean; name: QueueName; @@ -1750,7 +1775,7 @@ export type WorkflowResponseDto = { id: string; name: string | null; ownerId: string; - triggerType: TriggerType; + triggerType: PluginTriggerType; }; export type WorkflowActionItemDto = { actionConfig?: object; @@ -1774,6 +1799,7 @@ export type WorkflowUpdateDto = { enabled?: boolean; filters?: WorkflowFilterItemDto[]; name?: string; + triggerType?: PluginTriggerType; }; /** * List all activities @@ -2364,6 +2390,9 @@ export function uploadAsset({ key, slug, xImmichChecksum, assetMediaCreateDto }: assetMediaCreateDto: AssetMediaCreateDto; }, opts?: Oazapfts.RequestOpts) { return oazapfts.ok(oazapfts.fetchJson<{ + status: 200; + data: AssetMediaResponseDto; + } | { status: 201; data: AssetMediaResponseDto; }>(`/assets${QS.query(QS.explode({ @@ -2457,6 +2486,33 @@ export function runAssetJobs({ assetJobsDto }: { body: assetJobsDto }))); } +/** + * Delete asset metadata + */ +export function deleteBulkAssetMetadata({ assetMetadataBulkDeleteDto }: { + assetMetadataBulkDeleteDto: AssetMetadataBulkDeleteDto; +}, opts?: Oazapfts.RequestOpts) { + return oazapfts.ok(oazapfts.fetchText("/assets/metadata", oazapfts.json({ + ...opts, + method: "DELETE", + body: assetMetadataBulkDeleteDto + }))); +} +/** + * Upsert asset metadata + */ +export function updateBulkAssetMetadata({ assetMetadataBulkUpsertDto }: { + assetMetadataBulkUpsertDto: AssetMetadataBulkUpsertDto; +}, opts?: Oazapfts.RequestOpts) { + return oazapfts.ok(oazapfts.fetchJson<{ + status: 200; + data: AssetMetadataBulkResponseDto[]; + }>("/assets/metadata", oazapfts.json({ + ...opts, + method: "PUT", + body: assetMetadataBulkUpsertDto + }))); +} /** * Get random assets */ @@ -2559,7 +2615,7 @@ export function updateAssetMetadata({ id, assetMetadataUpsertDto }: { */ export function deleteAssetMetadata({ id, key }: { id: string; - key: AssetMetadataKey; + key: string; }, opts?: Oazapfts.RequestOpts) { return oazapfts.ok(oazapfts.fetchText(`/assets/${encodeURIComponent(id)}/metadata/${encodeURIComponent(key)}`, { ...opts, @@ -2571,7 +2627,7 @@ export function deleteAssetMetadata({ id, key }: { */ export function getAssetMetadataByKey({ id, key }: { id: string; - key: AssetMetadataKey; + key: string; }, opts?: Oazapfts.RequestOpts) { return oazapfts.ok(oazapfts.fetchJson<{ status: 200; @@ -3656,6 +3712,17 @@ export function getPlugins(opts?: Oazapfts.RequestOpts) { ...opts })); } +/** + * List all plugin triggers + */ +export function getPluginTriggers(opts?: Oazapfts.RequestOpts) { + return oazapfts.ok(oazapfts.fetchJson<{ + status: 200; + data: PluginTriggerResponseDto[]; + }>("/plugins/triggers", { + ...opts + })); +} /** * Retrieve a plugin */ @@ -4202,14 +4269,16 @@ export function lockSession({ id }: { /** * Retrieve all shared links */ -export function getAllSharedLinks({ albumId }: { +export function getAllSharedLinks({ albumId, id }: { albumId?: string; + id?: string; }, opts?: Oazapfts.RequestOpts) { return oazapfts.ok(oazapfts.fetchJson<{ status: 200; data: SharedLinkResponseDto[]; }>(`/shared-links${QS.query(QS.explode({ - albumId + albumId, + id }))}`, { ...opts })); @@ -5345,9 +5414,6 @@ export enum Permission { AdminSessionRead = "adminSession.read", AdminAuthUnlinkAll = "adminAuth.unlinkAll" } -export enum AssetMetadataKey { - MobileApp = "mobile-app" -} export enum AssetMediaStatus { Created = "created", Replaced = "replaced", @@ -5418,11 +5484,15 @@ export enum PartnerDirection { SharedBy = "shared-by", SharedWith = "shared-with" } -export enum PluginContext { +export enum PluginContextType { Asset = "asset", Album = "album", Person = "person" } +export enum PluginTriggerType { + AssetCreate = "AssetCreate", + PersonRecognized = "PersonRecognized" +} export enum QueueJobStatus { Active = "active", Failed = "failed", @@ -5639,11 +5709,3 @@ export enum OAuthTokenEndpointAuthMethod { ClientSecretPost = "client_secret_post", ClientSecretBasic = "client_secret_basic" } -export enum TriggerType { - AssetCreate = "AssetCreate", - PersonRecognized = "PersonRecognized" -} -export enum PluginTriggerType { - AssetCreate = "AssetCreate", - PersonRecognized = "PersonRecognized" -} diff --git a/package.json b/package.json index a5421c0e36..9ebfc6dd04 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.0.1", "description": "Monorepo for Immich", "private": true, - "packageManager": "pnpm@10.24.0+sha512.01ff8ae71b4419903b65c60fb2dc9d34cf8bb6e06d03bde112ef38f7a34d6904c424ba66bea5cdcf12890230bf39f9580473140ed9c946fef328b6e5238a345a", + "packageManager": "pnpm@10.27.0+sha512.72d699da16b1179c14ba9e64dc71c9a40988cbdc65c264cb0e489db7de917f20dcf4d64d8723625f2969ba52d4b7e2a1170682d9ac2a5dcaeaab732b7e16f04a", "engines": { "pnpm": ">=10.0.0" } diff --git a/plugins/manifest.json b/plugins/manifest.json index 1172530c1e..4d2de275ca 100644 --- a/plugins/manifest.json +++ b/plugins/manifest.json @@ -1,30 +1,36 @@ { "name": "immich-core", - "version": "2.0.0", + "version": "2.0.1", "title": "Immich Core", "description": "Core workflow capabilities for Immich", "author": "Immich Team", - "wasm": { "path": "dist/plugin.wasm" }, - "filters": [ { "methodName": "filterFileName", "title": "Filter by filename", "description": "Filter assets by filename pattern using text matching or regular expressions", - "supportedContexts": ["asset"], + "supportedContexts": [ + "asset" + ], "schema": { "type": "object", "properties": { "pattern": { "type": "string", + "title": "Filename pattern", "description": "Text or regex pattern to match against filename" }, "matchType": { "type": "string", - "enum": ["contains", "regex", "exact"], + "title": "Match type", + "enum": [ + "contains", + "regex", + "exact" + ], "default": "contains", "description": "Type of pattern matching to perform" }, @@ -34,43 +40,57 @@ "description": "Whether matching should be case-sensitive" } }, - "required": ["pattern"] + "required": [ + "pattern" + ] } }, { "methodName": "filterFileType", "title": "Filter by file type", "description": "Filter assets by file type", - "supportedContexts": ["asset"], + "supportedContexts": [ + "asset" + ], "schema": { "type": "object", "properties": { "fileTypes": { "type": "array", + "title": "File types", "items": { "type": "string", - "enum": ["IMAGE", "VIDEO"] + "enum": [ + "image", + "video" + ] }, "description": "Allowed file types" } }, - "required": ["fileTypes"] + "required": [ + "fileTypes" + ] } }, { "methodName": "filterPerson", "title": "Filter by person", "description": "Filter by detected person", - "supportedContexts": ["person"], + "supportedContexts": [ + "person" + ], "schema": { "type": "object", "properties": { "personIds": { "type": "array", + "title": "Person IDs", "items": { "type": "string" }, - "description": "List of person to match" + "description": "List of person to match", + "subType": "people-picker" }, "matchAny": { "type": "boolean", @@ -78,24 +98,29 @@ "description": "Match any name (true) or require all names (false)" } }, - "required": ["personIds"] + "required": [ + "personIds" + ] } } ], - "actions": [ { "methodName": "actionArchive", "title": "Archive", "description": "Move the asset to archive", - "supportedContexts": ["asset"], + "supportedContexts": [ + "asset" + ], "schema": {} }, { "methodName": "actionFavorite", "title": "Favorite", "description": "Mark the asset as favorite or unfavorite", - "supportedContexts": ["asset"], + "supportedContexts": [ + "asset" + ], "schema": { "type": "object", "properties": { @@ -111,16 +136,23 @@ "methodName": "actionAddToAlbum", "title": "Add to Album", "description": "Add the item to a specified album", - "supportedContexts": ["asset", "person"], + "supportedContexts": [ + "asset", + "person" + ], "schema": { "type": "object", "properties": { "albumId": { "type": "string", - "description": "Target album ID" + "title": "Album ID", + "description": "Target album ID", + "subType": "album-picker" } }, - "required": ["albumId"] + "required": [ + "albumId" + ] } } ] diff --git a/plugins/package-lock.json b/plugins/package-lock.json index ca3c99b516..1d8b9cb1ad 100644 --- a/plugins/package-lock.json +++ b/plugins/package-lock.json @@ -15,9 +15,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.1.tgz", - "integrity": "sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", + "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", "cpu": [ "ppc64" ], @@ -32,9 +32,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.1.tgz", - "integrity": "sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", + "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", "cpu": [ "arm" ], @@ -49,9 +49,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.1.tgz", - "integrity": "sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", + "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", "cpu": [ "arm64" ], @@ -66,9 +66,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.1.tgz", - "integrity": "sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", + "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", "cpu": [ "x64" ], @@ -83,9 +83,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.1.tgz", - "integrity": "sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", + "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", "cpu": [ "arm64" ], @@ -100,9 +100,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.1.tgz", - "integrity": "sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", + "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", "cpu": [ "x64" ], @@ -117,9 +117,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.1.tgz", - "integrity": "sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", + "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", "cpu": [ "arm64" ], @@ -134,9 +134,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.1.tgz", - "integrity": "sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", + "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", "cpu": [ "x64" ], @@ -151,9 +151,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.1.tgz", - "integrity": "sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", + "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", "cpu": [ "arm" ], @@ -168,9 +168,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.1.tgz", - "integrity": "sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", + "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", "cpu": [ "arm64" ], @@ -185,9 +185,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.1.tgz", - "integrity": "sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", + "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", "cpu": [ "ia32" ], @@ -202,9 +202,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.1.tgz", - "integrity": "sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", + "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", "cpu": [ "loong64" ], @@ -219,9 +219,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.1.tgz", - "integrity": "sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", + "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", "cpu": [ "mips64el" ], @@ -236,9 +236,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.1.tgz", - "integrity": "sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", + "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", "cpu": [ "ppc64" ], @@ -253,9 +253,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.1.tgz", - "integrity": "sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", + "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", "cpu": [ "riscv64" ], @@ -270,9 +270,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.1.tgz", - "integrity": "sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", + "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", "cpu": [ "s390x" ], @@ -287,9 +287,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.1.tgz", - "integrity": "sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", + "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", "cpu": [ "x64" ], @@ -304,9 +304,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.1.tgz", - "integrity": "sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", + "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", "cpu": [ "arm64" ], @@ -321,9 +321,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.1.tgz", - "integrity": "sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", + "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", "cpu": [ "x64" ], @@ -338,9 +338,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.1.tgz", - "integrity": "sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", + "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", "cpu": [ "arm64" ], @@ -355,9 +355,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.1.tgz", - "integrity": "sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", + "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", "cpu": [ "x64" ], @@ -372,9 +372,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.1.tgz", - "integrity": "sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", + "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", "cpu": [ "arm64" ], @@ -389,9 +389,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.1.tgz", - "integrity": "sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", + "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", "cpu": [ "x64" ], @@ -406,9 +406,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.1.tgz", - "integrity": "sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", + "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", "cpu": [ "arm64" ], @@ -423,9 +423,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.1.tgz", - "integrity": "sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", + "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", "cpu": [ "ia32" ], @@ -440,9 +440,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.1.tgz", - "integrity": "sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", + "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", "cpu": [ "x64" ], @@ -467,9 +467,9 @@ } }, "node_modules/esbuild": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.1.tgz", - "integrity": "sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", + "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -480,32 +480,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.1", - "@esbuild/android-arm": "0.27.1", - "@esbuild/android-arm64": "0.27.1", - "@esbuild/android-x64": "0.27.1", - "@esbuild/darwin-arm64": "0.27.1", - "@esbuild/darwin-x64": "0.27.1", - "@esbuild/freebsd-arm64": "0.27.1", - "@esbuild/freebsd-x64": "0.27.1", - "@esbuild/linux-arm": "0.27.1", - "@esbuild/linux-arm64": "0.27.1", - "@esbuild/linux-ia32": "0.27.1", - "@esbuild/linux-loong64": "0.27.1", - "@esbuild/linux-mips64el": "0.27.1", - "@esbuild/linux-ppc64": "0.27.1", - "@esbuild/linux-riscv64": "0.27.1", - "@esbuild/linux-s390x": "0.27.1", - "@esbuild/linux-x64": "0.27.1", - "@esbuild/netbsd-arm64": "0.27.1", - "@esbuild/netbsd-x64": "0.27.1", - "@esbuild/openbsd-arm64": "0.27.1", - "@esbuild/openbsd-x64": "0.27.1", - "@esbuild/openharmony-arm64": "0.27.1", - "@esbuild/sunos-x64": "0.27.1", - "@esbuild/win32-arm64": "0.27.1", - "@esbuild/win32-ia32": "0.27.1", - "@esbuild/win32-x64": "0.27.1" + "@esbuild/aix-ppc64": "0.27.2", + "@esbuild/android-arm": "0.27.2", + "@esbuild/android-arm64": "0.27.2", + "@esbuild/android-x64": "0.27.2", + "@esbuild/darwin-arm64": "0.27.2", + "@esbuild/darwin-x64": "0.27.2", + "@esbuild/freebsd-arm64": "0.27.2", + "@esbuild/freebsd-x64": "0.27.2", + "@esbuild/linux-arm": "0.27.2", + "@esbuild/linux-arm64": "0.27.2", + "@esbuild/linux-ia32": "0.27.2", + "@esbuild/linux-loong64": "0.27.2", + "@esbuild/linux-mips64el": "0.27.2", + "@esbuild/linux-ppc64": "0.27.2", + "@esbuild/linux-riscv64": "0.27.2", + "@esbuild/linux-s390x": "0.27.2", + "@esbuild/linux-x64": "0.27.2", + "@esbuild/netbsd-arm64": "0.27.2", + "@esbuild/netbsd-x64": "0.27.2", + "@esbuild/openbsd-arm64": "0.27.2", + "@esbuild/openbsd-x64": "0.27.2", + "@esbuild/openharmony-arm64": "0.27.2", + "@esbuild/sunos-x64": "0.27.2", + "@esbuild/win32-arm64": "0.27.2", + "@esbuild/win32-ia32": "0.27.2", + "@esbuild/win32-x64": "0.27.2" } }, "node_modules/typescript": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 27c6c3f290..9980023d36 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -33,10 +33,10 @@ importers: version: 3.3.3 fastq: specifier: ^1.17.1 - version: 1.19.1 + version: 1.20.1 lodash-es: specifier: ^4.17.21 - version: 4.17.21 + version: 4.17.22 micromatch: specifier: ^4.0.8 version: 4.0.8 @@ -63,11 +63,11 @@ importers: specifier: ^4.13.1 version: 4.13.4 '@types/node': - specifier: ^24.10.3 + specifier: ^24.10.4 version: 24.10.4 '@vitest/coverage-v8': specifier: ^3.0.0 - version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@20.0.3(canvas@2.11.2))(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) byte-size: specifier: ^9.0.0 version: 9.0.1 @@ -106,19 +106,19 @@ importers: version: 5.9.3 typescript-eslint: specifier: ^8.28.0 - version: 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) vite: specifier: ^7.0.0 - version: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vite-tsconfig-paths: - specifier: ^5.0.0 - version: 5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + specifier: ^6.0.0 + version: 6.0.3(typescript@5.9.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) vitest: specifier: ^3.0.0 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@20.0.3(canvas@2.11.2))(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest-fetch-mock: specifier: ^0.4.0 - version: 0.4.5(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@20.0.3(canvas@2.11.2))(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + version: 0.4.5(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) yaml: specifier: ^2.3.1 version: 2.8.2 @@ -169,7 +169,7 @@ importers: version: 18.3.1(react@18.3.1) tailwindcss: specifier: ^3.2.4 - version: 3.4.19(yaml@2.8.2) + version: 3.4.19(tsx@4.21.0)(yaml@2.8.2) url: specifier: ^0.11.0 version: 0.11.4 @@ -201,6 +201,9 @@ importers: '@immich/cli': specifier: file:../cli version: link:../cli + '@immich/e2e-auth-server': + specifier: file:../e2e-auth-server + version: link:../e2e-auth-server '@immich/sdk': specifier: file:../open-api/typescript-sdk version: link:../open-api/typescript-sdk @@ -214,11 +217,8 @@ importers: specifier: ^3.4.2 version: 3.7.1 '@types/node': - specifier: ^24.10.3 + specifier: ^24.10.4 version: 24.10.4 - '@types/oidc-provider': - specifier: ^9.0.0 - version: 9.5.0 '@types/pg': specifier: ^8.15.1 version: 8.16.0 @@ -244,20 +244,14 @@ importers: specifier: ^62.0.0 version: 62.0.0(eslint@9.39.2(jiti@2.6.1)) exiftool-vendored: - specifier: ^34.0.0 - version: 34.1.0 + specifier: ^34.3.0 + version: 34.3.0 globals: specifier: ^16.0.0 version: 16.5.0 - jose: - specifier: ^5.6.3 - version: 5.10.0 luxon: specifier: ^3.4.4 version: 3.7.2 - oidc-provider: - specifier: ^9.0.0 - version: 9.6.0 pg: specifier: ^8.11.3 version: 8.16.3 @@ -275,7 +269,7 @@ importers: version: 0.34.5 socket.io-client: specifier: ^4.7.4 - version: 4.8.1 + version: 4.8.3 supertest: specifier: ^7.0.0 version: 7.1.4 @@ -284,13 +278,37 @@ importers: version: 5.9.3 typescript-eslint: specifier: ^8.28.0 - version: 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) utimes: specifier: ^5.2.1 version: 5.2.1(encoding@0.1.13) vitest: specifier: ^3.0.0 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@20.0.3(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + + e2e-auth-server: + devDependencies: + '@types/oidc-provider': + specifier: ^9.0.0 + version: 9.5.0 + jose: + specifier: ^5.6.3 + version: 5.10.0 + oidc-provider: + specifier: ^9.0.0 + version: 9.6.0 + tsx: + specifier: ^4.20.6 + version: 4.21.0 + + i18n: + devDependencies: + prettier: + specifier: ^3.7.4 + version: 3.7.4 + prettier-plugin-sort-json: + specifier: ^4.1.1 + version: 4.1.1(prettier@3.7.4) open-api/typescript-sdk: dependencies: @@ -299,7 +317,7 @@ importers: version: 1.1.0 devDependencies: '@types/node': - specifier: ^24.10.3 + specifier: ^24.10.4 version: 24.10.4 typescript: specifier: ^5.3.3 @@ -312,7 +330,7 @@ importers: version: 1.1.1 esbuild: specifier: ^0.27.0 - version: 0.27.1 + version: 0.27.2 typescript: specifier: ^5.3.2 version: 5.9.3 @@ -324,28 +342,28 @@ importers: version: 2.0.0-rc13 '@nestjs/bullmq': specifier: ^11.0.1 - version: 11.0.4(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(bullmq@5.66.0) + version: 11.0.4(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)(bullmq@5.66.4) '@nestjs/common': specifier: ^11.0.4 - version: 11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + version: 11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) '@nestjs/core': specifier: ^11.0.4 - version: 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(@nestjs/websockets@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2) + version: 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.11)(@nestjs/websockets@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2) '@nestjs/platform-express': specifier: ^11.0.4 - version: 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9) + version: 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11) '@nestjs/platform-socket.io': specifier: ^11.0.4 - version: 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.9)(rxjs@7.8.2) + version: 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.11)(rxjs@7.8.2) '@nestjs/schedule': specifier: ^6.0.0 - version: 6.1.0(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9) + version: 6.1.0(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11) '@nestjs/swagger': specifier: ^11.0.2 - version: 11.2.3(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2) + version: 11.2.3(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2) '@nestjs/websockets': specifier: ^11.0.4 - version: 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(@nestjs/platform-socket.io@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2) + version: 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)(@nestjs/platform-socket.io@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2) '@opentelemetry/api': specifier: ^1.9.0 version: 1.9.0 @@ -359,14 +377,14 @@ importers: specifier: ^0.208.0 version: 0.208.0(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation-ioredis': - specifier: ^0.56.0 - version: 0.56.0(@opentelemetry/api@1.9.0) + specifier: ^0.57.0 + version: 0.57.0(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation-nestjs-core': specifier: ^0.55.0 version: 0.55.0(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation-pg': specifier: ^0.61.0 - version: 0.61.1(@opentelemetry/api@1.9.0) + version: 0.61.2(@opentelemetry/api@1.9.0) '@opentelemetry/resources': specifier: ^2.0.1 version: 2.2.0(@opentelemetry/api@1.9.0) @@ -387,7 +405,7 @@ importers: version: 1.4.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@socket.io/redis-adapter': specifier: ^8.3.0 - version: 8.3.0(socket.io-adapter@2.5.5) + version: 8.3.0(socket.io-adapter@2.5.6) ajv: specifier: ^8.17.1 version: 8.17.1 @@ -405,7 +423,7 @@ importers: version: 2.2.1 bullmq: specifier: ^5.51.0 - version: 5.66.0 + version: 5.66.4 chokidar: specifier: ^4.0.3 version: 4.0.3 @@ -428,8 +446,8 @@ importers: specifier: 4.3.5 version: 4.3.5 exiftool-vendored: - specifier: ^34.0.0 - version: 34.1.0 + specifier: ^34.3.0 + version: 34.3.0 express: specifier: ^5.1.0 version: 5.2.1 @@ -480,19 +498,19 @@ importers: version: 2.0.2 nest-commander: specifier: ^3.16.0 - version: 3.20.1(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(@types/inquirer@8.2.12)(@types/node@24.10.4)(typescript@5.9.3) + version: 3.20.1(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)(@types/inquirer@8.2.12)(@types/node@24.10.4)(typescript@5.9.3) nestjs-cls: specifier: ^5.0.0 - version: 5.4.3(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2) + version: 5.4.3(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2) nestjs-kysely: specifier: 3.1.2 - version: 3.1.2(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(kysely@0.28.2)(reflect-metadata@0.2.2) + version: 3.1.2(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)(kysely@0.28.2)(reflect-metadata@0.2.2) nestjs-otel: specifier: ^7.0.0 - version: 7.0.1(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9) + version: 7.0.1(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11) nodemailer: specifier: ^7.0.0 - version: 7.0.11 + version: 7.0.12 openid-client: specifier: ^6.3.3 version: 6.8.1 @@ -540,10 +558,10 @@ importers: version: 3.0.2 socket.io: specifier: ^4.8.1 - version: 4.8.1 + version: 4.8.3 tailwindcss-preset-email: specifier: ^1.4.0 - version: 1.4.1(tailwindcss@3.4.19(yaml@2.8.2)) + version: 1.4.1(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2)) thumbhash: specifier: ^0.1.1 version: 0.1.1 @@ -555,23 +573,23 @@ importers: version: 11.1.0 validator: specifier: ^13.12.0 - version: 13.15.23 + version: 13.15.26 devDependencies: '@eslint/js': specifier: ^9.8.0 version: 9.39.2 '@nestjs/cli': specifier: ^11.0.2 - version: 11.0.14(@swc/core@1.15.5(@swc/helpers@0.5.17))(@types/node@24.10.4) + version: 11.0.14(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@24.10.4) '@nestjs/schematics': specifier: ^11.0.0 version: 11.0.9(chokidar@4.0.3)(typescript@5.9.3) '@nestjs/testing': specifier: ^11.0.4 - version: 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(@nestjs/platform-express@11.1.9) + version: 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)(@nestjs/platform-express@11.1.11) '@swc/core': specifier: ^1.4.14 - version: 1.15.5(@swc/helpers@0.5.17) + version: 1.15.8(@swc/helpers@0.5.17) '@types/archiver': specifier: ^7.0.0 version: 7.0.0 @@ -615,7 +633,7 @@ importers: specifier: ^2.0.0 version: 2.0.0 '@types/node': - specifier: ^24.10.3 + specifier: ^24.10.4 version: 24.10.4 '@types/nodemailer': specifier: ^7.0.0 @@ -646,7 +664,7 @@ importers: version: 13.15.10 '@vitest/coverage-v8': specifier: ^3.0.0 - version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@20.0.3(canvas@2.11.2))(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) eslint: specifier: ^9.14.0 version: 9.39.2(jiti@2.6.1) @@ -685,31 +703,31 @@ importers: version: 7.1.4 tailwindcss: specifier: ^3.4.0 - version: 3.4.19(yaml@2.8.2) + version: 3.4.19(tsx@4.21.0)(yaml@2.8.2) testcontainers: specifier: ^11.0.0 - version: 11.10.0 + version: 11.11.0 typescript: specifier: ^5.9.2 version: 5.9.3 typescript-eslint: specifier: ^8.28.0 - version: 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) unplugin-swc: specifier: ^1.4.5 - version: 1.5.9(@swc/core@1.15.5(@swc/helpers@0.5.17))(rollup@4.53.4) + version: 1.5.9(@swc/core@1.15.8(@swc/helpers@0.5.17))(rollup@4.53.4) vite-tsconfig-paths: - specifier: ^5.0.0 - version: 5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + specifier: ^6.0.0 + version: 6.0.3(typescript@5.9.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) vitest: specifier: ^3.0.0 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@20.0.3(canvas@2.11.2))(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) web: dependencies: '@formatjs/icu-messageformat-parser': - specifier: ^2.9.8 - version: 2.11.4 + specifier: ^3.0.0 + version: 3.2.1 '@immich/justified-layout-wasm': specifier: ^0.4.3 version: 0.4.3 @@ -717,8 +735,8 @@ importers: specifier: file:../open-api/typescript-sdk version: link:../open-api/typescript-sdk '@immich/ui': - specifier: ^0.50.1 - version: 0.50.1(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3) + specifier: ^0.54.0 + version: 0.54.0(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1) '@mapbox/mapbox-gl-rtl-text': specifier: 0.2.3 version: 0.2.3(mapbox-gl@1.13.3) @@ -751,10 +769,7 @@ importers: version: 0.41.4 '@zoom-image/svelte': specifier: ^0.3.0 - version: 0.3.8(svelte@5.43.3) - async-mutex: - specifier: ^0.5.0 - version: 0.5.0 + version: 0.3.8(svelte@5.46.1) dom-to-image: specifier: ^2.6.0 version: 2.6.0 @@ -774,23 +789,23 @@ importers: specifier: ^20.0.0 version: 20.0.11 intl-messageformat: - specifier: ^10.7.11 - version: 10.7.18 + specifier: ^11.0.0 + version: 11.0.8 justified-layout: specifier: ^4.1.0 version: 4.1.0 lodash-es: specifier: ^4.17.21 - version: 4.17.21 + version: 4.17.22 luxon: specifier: ^3.4.4 version: 3.7.2 maplibre-gl: specifier: ^5.6.2 - version: 5.14.0 + version: 5.15.0 pmtiles: specifier: ^4.3.0 - version: 4.3.0 + version: 4.3.2 qrcode: specifier: ^1.5.4 version: 1.5.4 @@ -799,19 +814,22 @@ importers: version: 15.22.0 socket.io-client: specifier: ~4.8.0 - version: 4.8.1 + version: 4.8.3 svelte-gestures: specifier: ^5.2.2 version: 5.2.2 svelte-i18n: specifier: ^4.0.1 - version: 4.0.1(svelte@5.43.3) + version: 4.0.1(svelte@5.46.1) + svelte-jsoneditor: + specifier: ^3.10.0 + version: 3.11.0(svelte@5.46.1) svelte-maplibre: specifier: ^1.2.5 - version: 1.2.5(svelte@5.43.3) + version: 1.2.5(svelte@5.46.1) svelte-persisted-store: specifier: ^0.12.0 - version: 0.12.0(svelte@5.43.3) + version: 0.12.0(svelte@5.46.1) tabbable: specifier: ^6.2.0 version: 6.3.0 @@ -836,25 +854,25 @@ importers: version: 3.1.2 '@sveltejs/adapter-static': specifier: ^3.0.8 - version: 3.0.10(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))) + version: 3.0.10(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@sveltejs/enhanced-img': specifier: ^0.9.0 - version: 0.9.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(rollup@4.53.4)(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + version: 0.9.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(rollup@4.53.4)(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@sveltejs/kit': specifier: ^2.27.1 - version: 2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + version: 2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@sveltejs/vite-plugin-svelte': specifier: 6.2.1 - version: 6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + version: 6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@tailwindcss/vite': specifier: ^4.1.7 - version: 4.1.18(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + version: 4.1.18(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@testing-library/jest-dom': specifier: ^6.4.2 version: 6.9.1 '@testing-library/svelte': specifier: ^5.2.8 - version: 5.2.9(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@20.0.3(canvas@2.11.2))(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + version: 5.3.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.0.3)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@testing-library/user-event': specifier: ^14.5.2 version: 14.6.1(@testing-library/dom@10.4.1) @@ -878,7 +896,7 @@ importers: version: 1.5.6 '@vitest/coverage-v8': specifier: ^3.0.0 - version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@20.0.3(canvas@2.11.2))(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.0.3)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) dotenv: specifier: ^17.0.0 version: 17.2.3 @@ -893,7 +911,7 @@ importers: version: 6.0.2(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-svelte: specifier: ^3.12.4 - version: 3.13.1(eslint@9.39.2(jiti@2.6.1))(svelte@5.43.3) + version: 3.13.1(eslint@9.39.2(jiti@2.6.1))(svelte@5.46.1) eslint-plugin-unicorn: specifier: ^62.0.0 version: 62.0.0(eslint@9.39.2(jiti@2.6.1)) @@ -914,19 +932,19 @@ importers: version: 4.1.1(prettier@3.7.4) prettier-plugin-svelte: specifier: ^3.3.3 - version: 3.4.1(prettier@3.7.4)(svelte@5.43.3) + version: 3.4.1(prettier@3.7.4)(svelte@5.46.1) rollup-plugin-visualizer: specifier: ^6.0.0 version: 6.0.5(rollup@4.53.4) svelte: - specifier: 5.43.3 - version: 5.43.3 + specifier: 5.46.1 + version: 5.46.1 svelte-check: specifier: ^4.1.5 - version: 4.3.4(picomatch@4.0.3)(svelte@5.43.3)(typescript@5.9.3) + version: 4.3.5(picomatch@4.0.3)(svelte@5.46.1)(typescript@5.9.3) svelte-eslint-parser: specifier: ^1.3.3 - version: 1.4.1(svelte@5.43.3) + version: 1.4.1(svelte@5.46.1) tailwindcss: specifier: ^4.1.7 version: 4.1.18 @@ -935,13 +953,13 @@ importers: version: 5.9.3 typescript-eslint: specifier: ^8.45.0 - version: 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) vite: specifier: ^7.1.2 - version: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) + version: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^3.0.0 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@20.0.3(canvas@2.11.2))(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) + version: 3.2.4(@types/debug@4.1.12)(@types/node@25.0.3)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) packages: @@ -1086,6 +1104,9 @@ packages: resolution: {integrity: sha512-J4Jarr0SohdrHcb40gTL4wGPCQ952IMWF1G/MSAQfBAPvA9ZKApYhpxcY7PmehVePve+ujpus1dGsJ7dPxz8Kg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@asamuzakjp/css-color@3.2.0': + resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + '@aws-crypto/sha256-browser@5.2.0': resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} @@ -1792,8 +1813,32 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} - '@borewit/text-codec@0.1.1': - resolution: {integrity: sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA==} + '@borewit/text-codec@0.2.1': + resolution: {integrity: sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==} + + '@codemirror/autocomplete@6.20.0': + resolution: {integrity: sha512-bOwvTOIJcG5FVo5gUUupiwYh8MioPLQ4UcqbcRf7UQ98X90tCa9E1kZ3Z7tqwpZxYyOvh1YTYbmZE9RTfTp5hg==} + + '@codemirror/commands@6.10.1': + resolution: {integrity: sha512-uWDWFypNdQmz2y1LaNJzK7fL7TYKLeUAU0npEC685OKTF3KcQ2Vu3klIM78D7I6wGhktme0lh3CuQLv0ZCrD9Q==} + + '@codemirror/lang-json@6.0.2': + resolution: {integrity: sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ==} + + '@codemirror/language@6.12.1': + resolution: {integrity: sha512-Fa6xkSiuGKc8XC8Cn96T+TQHYj4ZZ7RdFmXA3i9xe/3hLHfwPZdM+dqfX0Cp0zQklBKhVD8Yzc8LS45rkqcwpQ==} + + '@codemirror/lint@6.9.2': + resolution: {integrity: sha512-sv3DylBiIyi+xKwRCJAAsBZZZWo82shJ/RTMymLabAdtbkV5cSKwWDeCgtUq3v8flTaXS2y1kKkICuRYtUswyQ==} + + '@codemirror/search@6.5.11': + resolution: {integrity: sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==} + + '@codemirror/state@6.5.3': + resolution: {integrity: sha512-MerMzJzlXogk2fxWFU1nKp36bY5orBG59HnPiz0G9nLRebWa0zXuv2siH6PLIHBvv5TH8CkQRqjBs0MlxCZu+A==} + + '@codemirror/view@6.39.8': + resolution: {integrity: sha512-1rASYd9Z/mE3tkbC9wInRlCNyCkSn+nLsiQKZhEDUUJiUfs/5FHDpCUDaQpoTIaNGeDc6/bhaEAyLmeEucEFPw==} '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} @@ -2310,8 +2355,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.27.1': - resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==} + '@esbuild/aix-ppc64@0.27.2': + resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -2328,8 +2373,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.27.1': - resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==} + '@esbuild/android-arm64@0.27.2': + resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -2346,8 +2391,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.27.1': - resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==} + '@esbuild/android-arm@0.27.2': + resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -2364,8 +2409,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.27.1': - resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==} + '@esbuild/android-x64@0.27.2': + resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -2382,8 +2427,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.27.1': - resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==} + '@esbuild/darwin-arm64@0.27.2': + resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -2400,8 +2445,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.27.1': - resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==} + '@esbuild/darwin-x64@0.27.2': + resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -2418,8 +2463,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.27.1': - resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==} + '@esbuild/freebsd-arm64@0.27.2': + resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -2436,8 +2481,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.1': - resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==} + '@esbuild/freebsd-x64@0.27.2': + resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -2454,8 +2499,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.27.1': - resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==} + '@esbuild/linux-arm64@0.27.2': + resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -2472,8 +2517,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.27.1': - resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==} + '@esbuild/linux-arm@0.27.2': + resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -2490,8 +2535,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.27.1': - resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==} + '@esbuild/linux-ia32@0.27.2': + resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -2508,8 +2553,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.27.1': - resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==} + '@esbuild/linux-loong64@0.27.2': + resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -2526,8 +2571,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.27.1': - resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==} + '@esbuild/linux-mips64el@0.27.2': + resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -2544,8 +2589,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.27.1': - resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==} + '@esbuild/linux-ppc64@0.27.2': + resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -2562,8 +2607,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.27.1': - resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==} + '@esbuild/linux-riscv64@0.27.2': + resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -2580,8 +2625,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.27.1': - resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==} + '@esbuild/linux-s390x@0.27.2': + resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -2598,8 +2643,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.27.1': - resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==} + '@esbuild/linux-x64@0.27.2': + resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -2610,8 +2655,8 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.27.1': - resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==} + '@esbuild/netbsd-arm64@0.27.2': + resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -2628,8 +2673,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.1': - resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==} + '@esbuild/netbsd-x64@0.27.2': + resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -2640,8 +2685,8 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.27.1': - resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==} + '@esbuild/openbsd-arm64@0.27.2': + resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -2658,8 +2703,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.1': - resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==} + '@esbuild/openbsd-x64@0.27.2': + resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -2670,8 +2715,8 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.27.1': - resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==} + '@esbuild/openharmony-arm64@0.27.2': + resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -2688,8 +2733,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.27.1': - resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==} + '@esbuild/sunos-x64@0.27.2': + resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -2706,8 +2751,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.27.1': - resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==} + '@esbuild/win32-arm64@0.27.2': + resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -2724,8 +2769,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.27.1': - resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==} + '@esbuild/win32-ia32@0.27.2': + resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -2742,14 +2787,14 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.27.1': - resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==} + '@esbuild/win32-x64@0.27.2': + resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.9.0': - resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -2813,18 +2858,45 @@ packages: '@formatjs/ecma402-abstract@2.3.6': resolution: {integrity: sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw==} + '@formatjs/ecma402-abstract@3.0.7': + resolution: {integrity: sha512-U55Yulf37vBXN0C7gHm7hrxULVrcrhpQBcdLmIN2rpYpLfC5eIpa1JRX9efjU74gfzjK/MSmSG3Lxv3E4ZNZIw==} + '@formatjs/fast-memoize@2.2.7': resolution: {integrity: sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==} + '@formatjs/fast-memoize@3.0.2': + resolution: {integrity: sha512-YFApUDWFmjpPwAE7VcY7PYVjm6JaLZOAo0UfCQj1/OGi/1QtduG9kIBHmVC551M6AI01qvuP5kjbDebrZOT4Vg==} + '@formatjs/icu-messageformat-parser@2.11.4': resolution: {integrity: sha512-7kR78cRrPNB4fjGFZg3Rmj5aah8rQj9KPzuLsmcSn4ipLXQvC04keycTI1F7kJYDwIXtT2+7IDEto842CfZBtw==} + '@formatjs/icu-messageformat-parser@3.2.1': + resolution: {integrity: sha512-DEECn8HEHtI4dvfKtTfvDOZ9nCTAJ2ESXGPRGKe4dkn/RE9w/G0NjgP/kFAQJbwIKWHo+BRxpee1bQKJ4lF6pg==} + '@formatjs/icu-skeleton-parser@1.8.16': resolution: {integrity: sha512-H13E9Xl+PxBd8D5/6TVUluSpxGNvFSlN/b3coUp0e0JpuWXXnQDiavIpY3NnvSp4xhEMoXyyBvVfdFX8jglOHQ==} + '@formatjs/icu-skeleton-parser@2.0.7': + resolution: {integrity: sha512-/LEeQ2gOU7ujm7LJk07OYYOpsOtIH/6ma78vTHvZNGZ6m0wn3gxQqU39HEpXZfez6aIhGh7Psde2H2ILj5wb0Q==} + '@formatjs/intl-localematcher@0.6.2': resolution: {integrity: sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA==} + '@formatjs/intl-localematcher@0.7.4': + resolution: {integrity: sha512-AWsSZupIBMU/y04Nj24CjohyNVyfItMJPxSzX5OJwedDEIbGLOHkPxCjAeLeiLF2dw4xmQA8psktdi9MaebBQw==} + + '@fortawesome/fontawesome-common-types@7.1.0': + resolution: {integrity: sha512-l/BQM7fYntsCI//du+6sEnHOP6a74UixFyOYUyz2DLMXKx+6DEhfR3F2NYGE45XH1JJuIamacb4IZs9S0ZOWLA==} + engines: {node: '>=6'} + + '@fortawesome/free-regular-svg-icons@7.1.0': + resolution: {integrity: sha512-0e2fdEyB4AR+e6kU4yxwA/MonnYcw/CsMEP9lH82ORFi9svA6/RhDyhxIv5mlJaldmaHLLYVTb+3iEr+PDSZuQ==} + engines: {node: '>=6'} + + '@fortawesome/free-solid-svg-icons@7.1.0': + resolution: {integrity: sha512-Udu3K7SzAo9N013qt7qmm22/wo2hADdheXtBfxFTecp+ogsc0caQNRKEb7pkvvagUGOpG9wJC1ViH6WXs8oXIA==} + engines: {node: '>=6'} + '@golevelup/nestjs-discovery@5.0.0': resolution: {integrity: sha512-NaIWLCLI+XvneUK05LH2idHLmLNITYT88YnpOuUQmllKtiJNIS3woSt7QXrMZ5k3qUWuZpehEVz1JtlX4I1KyA==} peerDependencies: @@ -3012,8 +3084,8 @@ packages: peerDependencies: svelte: ^5.0.0 - '@immich/ui@0.50.1': - resolution: {integrity: sha512-fNlQGh75ZFa/UZAgJaYk9/ItHOXHNNzN4CunjCmE7WocVVkUZbUxopN9Ku3F5GULSqD/zJ5gNO6PQAZ1ZoSaaQ==} + '@immich/ui@0.54.0': + resolution: {integrity: sha512-6jvkvKhgsZ7LvspaJkbht/f8W5IRm+vjYkcZecShFAPaxaowbm7io9sO15MpJdIQfPdXg7vwLI527PV3vlBc6A==} peerDependencies: svelte: ^5.0.0 @@ -3216,6 +3288,18 @@ packages: '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + '@jsep-plugin/assignment@1.3.0': + resolution: {integrity: sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==} + engines: {node: '>= 10.16.0'} + peerDependencies: + jsep: ^0.4.0||^1.0.0 + + '@jsep-plugin/regex@1.0.4': + resolution: {integrity: sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg==} + engines: {node: '>= 10.16.0'} + peerDependencies: + jsep: ^0.4.0||^1.0.0 + '@jsonjoy.com/base64@1.1.2': resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} engines: {node: '>=10.0'} @@ -3252,6 +3336,10 @@ packages: peerDependencies: tslib: '2' + '@jsonquerylang/jsonquery@5.1.1': + resolution: {integrity: sha512-Fj4SoA6Ku09EF+t7OEI8QLipA2A+fJCdEOwnDWG84o5jXMRjkcN5NCMH7kFZb5fP62xz914XV5LBOiDdiUXObg==} + hasBin: true + '@koa/cors@5.0.0': resolution: {integrity: sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw==} engines: {node: '>= 14.0.0'} @@ -3268,6 +3356,18 @@ packages: '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + '@lezer/common@1.5.0': + resolution: {integrity: sha512-PNGcolp9hr4PJdXR4ix7XtixDrClScvtSCYW3rQG106oVMOOI+jFb+0+J3mbeL/53g1Zd6s0kJzaw6Ri68GmAA==} + + '@lezer/highlight@1.2.3': + resolution: {integrity: sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==} + + '@lezer/json@1.0.3': + resolution: {integrity: sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==} + + '@lezer/lr@1.4.6': + resolution: {integrity: sha512-u42yGuGBsHgodm86lwi0HAtUTNSs23yl9RoaI5em90B+OGm9/XuWkNiJ46sKkCgp8Tp4zgoBQbepcshfKLhFdw==} + '@lukeed/csprng@1.1.0': resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} engines: {node: '>=8'} @@ -3335,6 +3435,9 @@ packages: '@maplibre/vt-pbf@4.2.0': resolution: {integrity: sha512-bxrk/kQUwWXZgmqYgwOCnZCMONCRi3MJMqJdza4T3E4AeR5i+VyMnaJ8iDWtWxdfEAJRtrzIOeJtxZSy5mFrFA==} + '@marijn/find-cluster-break@1.0.2': + resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==} + '@mdi/js@7.4.47': resolution: {integrity: sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ==} @@ -3418,8 +3521,8 @@ packages: '@swc/core': optional: true - '@nestjs/common@11.1.9': - resolution: {integrity: sha512-zDntUTReRbAThIfSp3dQZ9kKqI+LjgLp5YZN5c1bgNRDuoeLySAoZg46Bg1a+uV8TMgIRziHocglKGNzr6l+bQ==} + '@nestjs/common@11.1.11': + resolution: {integrity: sha512-R/+A8XFqLgN8zNs2twhrOaE7dJbRQhdPX3g46am4RT/x8xGLqDphrXkUIno4cGUZHxbczChBAaAPTdPv73wDZA==} peerDependencies: class-transformer: '>=0.4.1' class-validator: '>=0.13.2' @@ -3431,8 +3534,8 @@ packages: class-validator: optional: true - '@nestjs/core@11.1.9': - resolution: {integrity: sha512-a00B0BM4X+9z+t3UxJqIZlemIwCQdYoPKrMcM+ky4z3pkqqG1eTWexjs+YXpGObnLnjtMPVKWlcZHp3adDYvUw==} + '@nestjs/core@11.1.11': + resolution: {integrity: sha512-H9i+zT3RvHi7tDc+lCmWHJ3ustXveABCr+Vcpl96dNOxgmrx4elQSTC4W93Mlav2opfLV+p0UTHY6L+bpUA4zA==} engines: {node: '>= 20'} peerDependencies: '@nestjs/common': ^11.0.0 @@ -3462,14 +3565,14 @@ packages: class-validator: optional: true - '@nestjs/platform-express@11.1.9': - resolution: {integrity: sha512-GVd3+0lO0mJq2m1kl9hDDnVrX3Nd4oH3oDfklz0pZEVEVS0KVSp63ufHq2Lu9cyPdSBuelJr9iPm2QQ1yX+Kmw==} + '@nestjs/platform-express@11.1.11': + resolution: {integrity: sha512-kyABSskdMRIAMWL0SlbwtDy4yn59RL4HDdwHDz/fxWuv7/53YP8Y2DtV3/sHqY5Er0msMVTZrM38MjqXhYL7gw==} peerDependencies: '@nestjs/common': ^11.0.0 '@nestjs/core': ^11.0.0 - '@nestjs/platform-socket.io@11.1.9': - resolution: {integrity: sha512-OaAW+voXo5BXbFKd9Ot3SL05tEucRMhZRdw5wdWZf/RpIl9hB6G6OHr8DDxNbUGvuQWzNnZHCDHx3EQJzjcIyA==} + '@nestjs/platform-socket.io@11.1.11': + resolution: {integrity: sha512-0z6pLg9CuTXtz7q2lRZoPOU94DN28OTa39f4cQrlZysKA6QrKM7w7z6xqb4g32qjF+LQHFNRmMJtE/pLrxBaig==} peerDependencies: '@nestjs/common': ^11.0.0 '@nestjs/websockets': ^11.0.0 @@ -3503,8 +3606,8 @@ packages: class-validator: optional: true - '@nestjs/testing@11.1.9': - resolution: {integrity: sha512-UFxerBDdb0RUNxQNj25pvkvNE7/vxKhXYWBt3QuwBFnYISzRIzhVlyIqLfoV5YI3zV0m0Nn4QAn1KM0zzwfEng==} + '@nestjs/testing@11.1.11': + resolution: {integrity: sha512-Po2aZKXlxuySDEh3Gi05LJ7/BtfTAPRZ3KPTrbpNrTmgGr3rFgEGYpQwN50wXYw0pywoICiFLZSZ/qXsplf6NA==} peerDependencies: '@nestjs/common': ^11.0.0 '@nestjs/core': ^11.0.0 @@ -3516,8 +3619,8 @@ packages: '@nestjs/platform-express': optional: true - '@nestjs/websockets@11.1.9': - resolution: {integrity: sha512-kkkdeTVcc3X7ZzvVqUVpOAJoh49kTRUjWNUXo5jmG+27OvZoHfs/vuSiqxidrrbIgydSqN15HUsf1wZwQUrxCQ==} + '@nestjs/websockets@11.1.11': + resolution: {integrity: sha512-apuP7C/gtMBIYNgA8IWt75GTZeWya5JQCnrLZFcOu+IZt00j9Xd/Bm7hbj/Qr/JVoM/7q6c/4p4oOZtBGx4aeA==} peerDependencies: '@nestjs/common': ^11.0.0 '@nestjs/core': ^11.0.0 @@ -3658,8 +3761,8 @@ packages: peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-ioredis@0.56.0': - resolution: {integrity: sha512-XSWeqsd3rKSsT3WBz/JKJDcZD4QYElZEa0xVdX8f9dh4h4QgXhKRLorVsVkK3uXFbC2sZKAS2Ds+YolGwD83Dg==} + '@opentelemetry/instrumentation-ioredis@0.57.0': + resolution: {integrity: sha512-o/PYGPbfFbS0Sq8EEQC8YUgDMiTGvwoMejPjV2d466yJoii+BUpffGejVQN0hC5V5/GT29m1B1jL+3yruNxwDw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 @@ -3670,8 +3773,8 @@ packages: peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-pg@0.61.1': - resolution: {integrity: sha512-VKKts/XcOCa7IPBxVjL2B4UyG+YTNa4Dh1Xx2vqL0jOEQBJlNsv++I12BUw/8NRLEr2K/gOM5tpVU7QqhWA65A==} + '@opentelemetry/instrumentation-pg@0.61.2': + resolution: {integrity: sha512-l1tN4dX8Ig1bKzMu81Q1EBXWFRy9wqchXbeHDRniJsXYND5dC8u1Uhah7wz1zZta3fbBWflP2mJZcDPWNsAMRg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 @@ -3765,6 +3868,88 @@ packages: '@paralleldrive/cuid2@2.3.1': resolution: {integrity: sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==} + '@parcel/watcher-android-arm64@2.5.1': + resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.5.1': + resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.1': + resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.1': + resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.1': + resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm-musl@2.5.1': + resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.5.1': + resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.5.1': + resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.5.1': + resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.5.1': + resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-win32-arm64@2.5.1': + resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.1': + resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.1': + resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.1': + resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} + engines: {node: '>= 10.0.0'} + '@photo-sphere-viewer/core@5.14.0': resolution: {integrity: sha512-V0JeDSB1D2Q60Zqn7+0FPjq8gqbKEwuxMzNdTLydefkQugVztLvdZykO+4k5XTpweZ2QAWPH/QOI1xZbsdvR9A==} @@ -3981,6 +4166,13 @@ packages: peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc + '@replit/codemirror-indentation-markers@6.5.3': + resolution: {integrity: sha512-hL5Sfvw3C1vgg7GolLe/uxX5T3tmgOA3ZzqlMv47zjU1ON51pzNWiVbS22oh6crYhtVhv8b3gdXwoYp++2ilHw==} + peerDependencies: + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + '@rollup/pluginutils@5.3.0': resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} @@ -4316,6 +4508,9 @@ packages: peerDependencies: socket.io-adapter: ^2.5.4 + '@sphinxxxx/color-conversion@2.2.2': + resolution: {integrity: sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==} + '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} @@ -4442,68 +4637,68 @@ packages: resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} engines: {node: '>=14'} - '@swc/core-darwin-arm64@1.15.5': - resolution: {integrity: sha512-RvdpUcXrIz12yONzOdQrJbEnq23cOc2IHOU1eB8kPxPNNInlm4YTzZEA3zf3PusNpZZLxwArPVLCg0QsFQoTYw==} + '@swc/core-darwin-arm64@1.15.8': + resolution: {integrity: sha512-M9cK5GwyWWRkRGwwCbREuj6r8jKdES/haCZ3Xckgkl8MUQJZA3XB7IXXK1IXRNeLjg6m7cnoMICpXv1v1hlJOg==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.15.5': - resolution: {integrity: sha512-ufJnz3UAff/8G5OfqZZc5cTQfGtXyXVLTB8TGT0xjkvEbfFg8jZUMDBnZT/Cn0k214JhMjiLCNl0A8aY/OKsYQ==} + '@swc/core-darwin-x64@1.15.8': + resolution: {integrity: sha512-j47DasuOvXl80sKJHSi2X25l44CMc3VDhlJwA7oewC1nV1VsSzwX+KOwE5tLnfORvVJJyeiXgJORNYg4jeIjYQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.15.5': - resolution: {integrity: sha512-Yqu92wIT0FZKLDWes+69kBykX97hc8KmnyFwNZGXJlbKUGIE0hAIhbuBbcY64FGSwey4aDWsZ7Ojk89KUu9Kzw==} + '@swc/core-linux-arm-gnueabihf@1.15.8': + resolution: {integrity: sha512-siAzDENu2rUbwr9+fayWa26r5A9fol1iORG53HWxQL1J8ym4k7xt9eME0dMPXlYZDytK5r9sW8zEA10F2U3Xwg==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.15.5': - resolution: {integrity: sha512-3gR3b5V1abe/K1GpD0vVyZgqgV+ykuB5QNecDYzVroX4QuN+amCzQaNSsVM8Aj6DbShQCBTh3hGHd2f3vZ8gCw==} + '@swc/core-linux-arm64-gnu@1.15.8': + resolution: {integrity: sha512-o+1y5u6k2FfPYbTRUPvurwzNt5qd0NTumCTFscCNuBksycloXY16J8L+SMW5QRX59n4Hp9EmFa3vpvNHRVv1+Q==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.15.5': - resolution: {integrity: sha512-Of+wmVh5h47tTpN9ghHVjfL0CJrgn99XmaJjmzWFW7agPdVY6gTDgkk6zQ6q4hcDQ7hXb0BGw6YFpuanBzNPow==} + '@swc/core-linux-arm64-musl@1.15.8': + resolution: {integrity: sha512-koiCqL09EwOP1S2RShCI7NbsQuG6r2brTqUYE7pV7kZm9O17wZ0LSz22m6gVibpwEnw8jI3IE1yYsQTVpluALw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.15.5': - resolution: {integrity: sha512-98kuPS0lZVgjmc/2uTm39r1/OfwKM0PM13ZllOAWi5avJVjRd/j1xA9rKeUzHDWt+ocH9mTCQsAT1jjKSq45bg==} + '@swc/core-linux-x64-gnu@1.15.8': + resolution: {integrity: sha512-4p6lOMU3bC+Vd5ARtKJ/FxpIC5G8v3XLoPEZ5s7mLR8h7411HWC/LmTXDHcrSXRC55zvAVia1eldy6zDLz8iFQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.15.5': - resolution: {integrity: sha512-Rk+OtNQP3W/dZExL74LlaakXAQn6/vbrgatmjFqJPO4RZkq+nLo5g7eDUVjyojuERh7R2yhqNvZ/ZZQe8JQqqA==} + '@swc/core-linux-x64-musl@1.15.8': + resolution: {integrity: sha512-z3XBnbrZAL+6xDGAhJoN4lOueIxC/8rGrJ9tg+fEaeqLEuAtHSW2QHDHxDwkxZMjuF/pZ6MUTjHjbp8wLbuRLA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.15.5': - resolution: {integrity: sha512-e3RTdJ769+PrN25iCAlxmsljEVu6iIWS7sE21zmlSiipftBQvSAOWuCDv2A8cH9lm5pSbZtwk8AUpIYCNsj2oQ==} + '@swc/core-win32-arm64-msvc@1.15.8': + resolution: {integrity: sha512-djQPJ9Rh9vP8GTS/Df3hcc6XP6xnG5c8qsngWId/BLA9oX6C7UzCPAn74BG/wGb9a6j4w3RINuoaieJB3t+7iQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.15.5': - resolution: {integrity: sha512-NmOdl6kyAw6zMz36zCdopTgaK2tcLA53NhUsTRopBc/796Fp87XdsslRHglybQ1HyXIGOQOKv2Y14IUbeci4BA==} + '@swc/core-win32-ia32-msvc@1.15.8': + resolution: {integrity: sha512-/wfAgxORg2VBaUoFdytcVBVCgf1isWZIEXB9MZEUty4wwK93M/PxAkjifOho9RN3WrM3inPLabICRCEgdHpKKQ==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.15.5': - resolution: {integrity: sha512-EPXJRf0A8eOi8woXf/qgVIWRl9yeSl0oN1ykGZNCGI7oElsfxUobJFmpJFJoVqKFfd1l0c+GPmWsN2xavTFkNw==} + '@swc/core-win32-x64-msvc@1.15.8': + resolution: {integrity: sha512-GpMePrh9Sl4d61o4KAHOOv5is5+zt6BEXCOCgs/H0FLGeii7j9bWDE8ExvKFy2GRRZVNR1ugsnzaGWHKM6kuzA==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.15.5': - resolution: {integrity: sha512-VRy+AEO0zqUkwV9uOgqXtdI5tNj3y3BZI+9u28fHNjNVTtWYVNIq3uYhoGgdBOv7gdzXlqfHKuxH5a9IFAvopQ==} + '@swc/core@1.15.8': + resolution: {integrity: sha512-T8keoJjXaSUoVBCIjgL6wAnhADIb09GOELzKg10CjNg+vLX48P93SME6jTfte9MZIm5m+Il57H3rTSk/0kzDUw==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -4622,8 +4817,14 @@ packages: resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - '@testing-library/svelte@5.2.9': - resolution: {integrity: sha512-p0Lg/vL1iEsEasXKSipvW9nBCtItQGhYvxL8OZ4w7/IDdC+LGoSJw4mMS5bndVFON/gWryitEhMr29AlO4FvBg==} + '@testing-library/svelte-core@1.0.0': + resolution: {integrity: sha512-VkUePoLV6oOYwSUvX6ShA8KLnJqZiYMIbP2JW2t0GLWLkJxKGvuH5qrrZBV/X7cXFnLGuFQEC7RheYiZOW68KQ==} + engines: {node: '>=16'} + peerDependencies: + svelte: ^3 || ^4 || ^5 || ^5.0.0-next.0 + + '@testing-library/svelte@5.3.1': + resolution: {integrity: sha512-8Ez7ZOqW5geRf9PF5rkuopODe5RGy3I9XR+kc7zHh26gBiktLaxTfKmhlGaSHYUOTQE7wFsLMN9xCJVCszw47w==} engines: {node: '>= 10'} peerDependencies: svelte: ^3 || ^4 || ^5 || ^5.0.0-next.0 @@ -4641,8 +4842,8 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' - '@tokenizer/inflate@0.3.1': - resolution: {integrity: sha512-4oeoZEBQdLdt5WmP/hx1KZ6D3/Oid/0cUb2nk4F0pTDAWy+KCH3/EnAkZF/bvckWo8I33EqBm01lIPgmgc8rCA==} + '@tokenizer/inflate@0.4.1': + resolution: {integrity: sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==} engines: {node: '>=18'} '@tokenizer/token@0.3.0': @@ -4901,6 +5102,9 @@ packages: '@types/node@24.10.4': resolution: {integrity: sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==} + '@types/node@25.0.3': + resolution: {integrity: sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==} + '@types/nodemailer@7.0.4': resolution: {integrity: sha512-ee8fxWqOchH+Hv6MDDNNy028kwvVnLplrStm4Zf/3uHWw5zzo8FoYYeffpJtGs2wWysEumMH0ZIdMGMY1eMAow==} @@ -5027,63 +5231,63 @@ packages: '@types/yargs@17.0.35': resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} - '@typescript-eslint/eslint-plugin@8.50.0': - resolution: {integrity: sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==} + '@typescript-eslint/eslint-plugin@8.51.0': + resolution: {integrity: sha512-XtssGWJvypyM2ytBnSnKtHYOGT+4ZwTnBVl36TA4nRO2f4PRNGz5/1OszHzcZCvcBMh+qb7I06uoCmLTRdR9og==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.50.0 + '@typescript-eslint/parser': ^8.51.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.50.0': - resolution: {integrity: sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==} + '@typescript-eslint/parser@8.51.0': + resolution: {integrity: sha512-3xP4XzzDNQOIqBMWogftkwxhg5oMKApqY0BAflmLZiFYHqyhSOxv/cd/zPQLTcCXr4AkaKb25joocY0BD1WC6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.50.0': - resolution: {integrity: sha512-Cg/nQcL1BcoTijEWyx4mkVC56r8dj44bFDvBdygifuS20f3OZCHmFbjF34DPSi07kwlFvqfv/xOLnJ5DquxSGQ==} + '@typescript-eslint/project-service@8.51.0': + resolution: {integrity: sha512-Luv/GafO07Z7HpiI7qeEW5NW8HUtZI/fo/kE0YbtQEFpJRUuR0ajcWfCE5bnMvL7QQFrmT/odMe8QZww8X2nfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.50.0': - resolution: {integrity: sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A==} + '@typescript-eslint/scope-manager@8.51.0': + resolution: {integrity: sha512-JhhJDVwsSx4hiOEQPeajGhCWgBMBwVkxC/Pet53EpBVs7zHHtayKefw1jtPaNRXpI9RA2uocdmpdfE7T+NrizA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.50.0': - resolution: {integrity: sha512-vxd3G/ybKTSlm31MOA96gqvrRGv9RJ7LGtZCn2Vrc5htA0zCDvcMqUkifcjrWNNKXHUU3WCkYOzzVSFBd0wa2w==} + '@typescript-eslint/tsconfig-utils@8.51.0': + resolution: {integrity: sha512-Qi5bSy/vuHeWyir2C8u/uqGMIlIDu8fuiYWv48ZGlZ/k+PRPHtaAu7erpc7p5bzw2WNNSniuxoMSO4Ar6V9OXw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.50.0': - resolution: {integrity: sha512-7OciHT2lKCewR0mFoBrvZJ4AXTMe/sYOe87289WAViOocEmDjjv8MvIOT2XESuKj9jp8u3SZYUSh89QA4S1kQw==} + '@typescript-eslint/type-utils@8.51.0': + resolution: {integrity: sha512-0XVtYzxnobc9K0VU7wRWg1yiUrw4oQzexCG2V2IDxxCxhqBMSMbjB+6o91A+Uc0GWtgjCa3Y8bi7hwI0Tu4n5Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.50.0': - resolution: {integrity: sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==} + '@typescript-eslint/types@8.51.0': + resolution: {integrity: sha512-TizAvWYFM6sSscmEakjY3sPqGwxZRSywSsPEiuZF6d5GmGD9Gvlsv0f6N8FvAAA0CD06l3rIcWNbsN1e5F/9Ag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.50.0': - resolution: {integrity: sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==} + '@typescript-eslint/typescript-estree@8.51.0': + resolution: {integrity: sha512-1qNjGqFRmlq0VW5iVlcyHBbCjPB7y6SxpBkrbhNWMy/65ZoncXCEPJxkRZL8McrseNH6lFhaxCIaX+vBuFnRng==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.50.0': - resolution: {integrity: sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg==} + '@typescript-eslint/utils@8.51.0': + resolution: {integrity: sha512-11rZYxSe0zabiKaCP2QAwRf/dnmgFgvTmeDTtZvUvXG3UuAdg/GU02NExmmIXzz3vLGgMdtrIosI84jITQOxUA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.50.0': - resolution: {integrity: sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==} + '@typescript-eslint/visitor-keys@8.51.0': + resolution: {integrity: sha512-mM/JRQOzhVN1ykejrvwnBRV3+7yTKK8tVANVN3o1O0t0v7o+jqdVu9crPy5Y9dov15TJk/FTIgoUGHrTOVL3Zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -5422,9 +5626,6 @@ packages: async-lock@1.4.1: resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==} - async-mutex@0.5.0: - resolution: {integrity: sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==} - async@0.2.10: resolution: {integrity: sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==} @@ -5637,8 +5838,8 @@ packages: resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} engines: {node: '>=18.20'} - bullmq@5.66.0: - resolution: {integrity: sha512-LSe8yEiVTllOOq97Q0C/EhczKS5Yd0AUJleGJCIh0cyJE5nWUqEpGC/uZQuuAYniBSoMT8LqwrxE7N5MZVrLoQ==} + bullmq@5.66.4: + resolution: {integrity: sha512-y2VRk2z7d1YNI2JQDD7iThoD0X/0iZZ3VEp8lqT5s5U0XDl9CIjXp1LQgmE9EKy6ReHtzmYXS1f328PnUbZGtQ==} bundle-name@4.1.0: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} @@ -5892,6 +6093,13 @@ packages: resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} engines: {node: '>=0.10.0'} + codemirror-wrapped-line-indent@1.0.9: + resolution: {integrity: sha512-oc976hHLt35u6Ojbhub+IWOxEpapZSqYieLEdGhsgFZ4rtYQtdb5KjxzgjCCyVe3t0yk+a6hmaIOEsjU/tZRxQ==} + peerDependencies: + '@codemirror/language': ^6.9.0 + '@codemirror/state': ^6.2.1 + '@codemirror/view': ^6.17.1 + collapse-white-space@2.1.0: resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} @@ -6107,6 +6315,9 @@ packages: resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} engines: {node: '>= 14'} + crelt@1.0.6: + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} + cron-parser@4.9.0: resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} engines: {node: '>=12.0.0'} @@ -6257,6 +6468,10 @@ packages: resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} + cssstyle@4.6.0: + resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} + engines: {node: '>=18'} + csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} @@ -6276,6 +6491,10 @@ packages: resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} + data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} + debounce@1.2.1: resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} @@ -6406,6 +6625,11 @@ packages: detect-europe-js@0.1.2: resolution: {integrity: sha512-lgdERlL3u0aUdHocoouzT10d9I89VVhk0qNRmll7mXdGfJT1/wqZ2ZLA4oJAjeACPY5fT1wsbq2AT+GkuInsow==} + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -6433,6 +6657,10 @@ packages: didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dijkstrajs@1.0.3: resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} @@ -6579,15 +6807,15 @@ packages: end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - engine.io-client@6.6.3: - resolution: {integrity: sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==} + engine.io-client@6.6.4: + resolution: {integrity: sha512-+kjUJnZGwzewFDw951CDWcwj35vMNf2fcj7xQWOctq1F2i1jkDdVvdFG9kM/BEChymCH36KgjnW0NsL58JYRxw==} engine.io-parser@5.2.3: resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} engines: {node: '>=10.0.0'} - engine.io@6.6.4: - resolution: {integrity: sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==} + engine.io@6.6.5: + resolution: {integrity: sha512-2RZdgEbXmp5+dVbRm0P7HQUImZpICccJy7rN7Tv+SFa55pH+lxnuw6/K1ZxxBfHoYpSkHLAO92oa8O4SwFXA2A==} engines: {node: '>=10.2.0'} enhanced-resolve@5.18.4: @@ -6664,8 +6892,8 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.27.1: - resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==} + esbuild@0.27.2: + resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} engines: {node: '>=18'} hasBin: true @@ -6872,17 +7100,17 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} - exiftool-vendored.exe@13.44.0: - resolution: {integrity: sha512-PzQrrz9k4YzxtcX1r/hEy+xzj6MKXXiEBCU+FhYlipr4fuKKeXgspB7kliPSfSSFAChYoSH294zd23ZUXgB4TQ==} + exiftool-vendored.exe@13.45.0: + resolution: {integrity: sha512-xa+gEnZ2Q9BAzaDr35xgADql+T6L92RqK0GjzOjzDuObwhr+sBr5RdySvZ3osHac9GJypxvk4cewNnj4OnPL3Q==} os: [win32] - exiftool-vendored.pl@13.44.0: - resolution: {integrity: sha512-KPqyZK5guU/HKJ4x7OdxC0bqwClz34AtQYeirvvGFBjvfpG6Ewt+Kx9TEd/JbvJyLgMS5k5GHvkH5R5iAL+Arg==} + exiftool-vendored.pl@13.45.0: + resolution: {integrity: sha512-uA58bMcXqdSQAqsZbHa/SMU6XKXsmoMcJSlKJjsCmLlQKEThncuAlpg8wGVNhULNXxYmRXXnYQ1756UYQY9VIA==} os: ['!win32'] hasBin: true - exiftool-vendored@34.1.0: - resolution: {integrity: sha512-piPUu8oaBT0JQcR0gH/ZLjnTrHu51lMs+GjAQPrtVyvt8bfB1vzTWYbw+9jN4qyO8HwCweJuj7xivmWS0/fa/A==} + exiftool-vendored@34.3.0: + resolution: {integrity: sha512-CpNH1FAhIQG5AlKndlTf05mNbuFxINyzG9629ZI/CKwr+39zWo8swxpnXc3GUfUvUfxkCCxumDPy2QVmi3XJkQ==} engines: {node: '>=20.0.0'} expect-type@1.3.0: @@ -6896,10 +7124,6 @@ packages: resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} engines: {node: '>= 0.10.0'} - express@5.1.0: - resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} - engines: {node: '>= 18'} - express@5.2.1: resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} engines: {node: '>= 18'} @@ -6957,8 +7181,8 @@ packages: resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} hasBin: true - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} @@ -7000,8 +7224,8 @@ packages: file-source@0.6.1: resolution: {integrity: sha512-1R1KneL7eTXmXfKxC10V/9NeGOdbsAXJ+lQ//fvvcHUgtaZcZDWNJNblxAoVOyV1cj45pOtUrR3vZTBwqcW8XA==} - file-type@21.1.0: - resolution: {integrity: sha512-boU4EHmP3JXkwDo4uhyBhTt5pPstxB6eEXKJBu2yu2l7aAMMm7QQYQEzssJmKReZYrFdFOJS8koVo6bXIBGDqA==} + file-type@21.2.0: + resolution: {integrity: sha512-vCYBgFOrJQLoTzDyAXAL/RFfKnXXpUYt4+tipVy26nJJhT7ftgGETf2tAQF59EEL61i3MrorV/PG6tf7LJK7eg==} engines: {node: '>=20'} fill-range@7.1.1: @@ -7201,6 +7425,9 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + get-tsconfig@4.13.0: + resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} + github-slugger@1.5.0: resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} @@ -7410,6 +7637,10 @@ packages: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} + html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -7563,6 +7794,12 @@ packages: immediate@3.3.0: resolution: {integrity: sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==} + immutable-json-patch@6.0.2: + resolution: {integrity: sha512-KwCA5DXJiyldda8SPha1zB+6+vbEi5/jRRcYii/6yFXlyu9ZjiSH/wPq8Ri2Hk8iGjjTMcHW3Z21S4MOpl7sOw==} + + immutable@5.1.4: + resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==} + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} @@ -7621,6 +7858,9 @@ packages: intl-messageformat@10.7.18: resolution: {integrity: sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g==} + intl-messageformat@11.0.8: + resolution: {integrity: sha512-q2Md8nj28CSkXxkBaAOWhTjQAdea24fpcZxqR1pMsCwzDYLQF68iOOPNTLgFFF+HKJKNUiJ+Mkjp0zXvG88UFA==} + invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} @@ -7880,6 +8120,10 @@ packages: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true + jmespath@0.16.0: + resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==} + engines: {node: '>= 0.6.0'} + joi@17.13.3: resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} @@ -7912,6 +8156,19 @@ packages: canvas: optional: true + jsdom@26.1.0: + resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} + engines: {node: '>=18'} + peerDependencies: + canvas: 2.11.2 + peerDependenciesMeta: + canvas: + optional: true + + jsep@1.4.0: + resolution: {integrity: sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==} + engines: {node: '>= 10.16.0'} + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -7932,6 +8189,9 @@ packages: json-schema@0.4.0: resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + json-source-map@0.6.1: + resolution: {integrity: sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==} + json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -7949,6 +8209,15 @@ packages: jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + jsonpath-plus@10.3.0: + resolution: {integrity: sha512-8TNmfeTCk2Le33A3vRRwtuworG/L5RrgMvdjhKZxvyShO+mBu2fP50OWUjRLNtvw344DdDarFh9buFAZs5ujeA==} + engines: {node: '>=18.0.0'} + hasBin: true + + jsonrepair@3.13.1: + resolution: {integrity: sha512-WJeiE0jGfxYmtLwBTEk8+y/mYcaleyLXWaqp5bJu0/ZTSeG0KQq/wWQ8pmnkKenEdN6pdnn6QtcoSUkbqDHWNw==} + hasBin: true + jsonwebtoken@9.0.3: resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==} engines: {node: '>=12', npm: '>=6'} @@ -8152,8 +8421,8 @@ packages: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lodash-es@4.17.22: + resolution: {integrity: sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==} lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} @@ -8284,8 +8553,8 @@ packages: resolution: {integrity: sha512-p8lJFEiqmEQlyv+DQxFAOG/XPWN0Wp7j/Psq93Zywz7qt9CcUKFYDBOoOEKzqe6gudHVJY8/Bhqw6VDpX2lSBg==} engines: {node: '>=6.4.0'} - maplibre-gl@5.14.0: - resolution: {integrity: sha512-O2ok6N/bQ9NA9nJ22r/PRQQYkUe9JwfDMjBPkQ+8OwsVH4TpA5skIAM2wc0k+rni5lVbAVONVyBvgi1rF2vEPA==} + maplibre-gl@5.15.0: + resolution: {integrity: sha512-pPeu/t4yPDX/+Uf9ibLUdmaKbNMlGxMAX+tBednYukol2qNk2TZXAlhdohWxjVvTO3is8crrUYv3Ok02oAaKzA==} engines: {node: '>=16.14.0', npm: '>=8.1.0'} mark.js@8.11.1: @@ -8390,6 +8659,9 @@ packages: memfs@4.51.1: resolution: {integrity: sha512-Eyt3XrufitN2ZL9c/uIRMyDwXanLI88h/L3MoWqNY747ha3dMR9dWqp8cRT5ntjZ0U1TNuq4U91ZXK0sMBjYOQ==} + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + memoizee@0.4.17: resolution: {integrity: sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==} engines: {node: '>=0.12'} @@ -8748,6 +9020,9 @@ packages: engines: {node: ^18 || >=20} hasBin: true + natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -8813,6 +9088,9 @@ packages: node-addon-api@4.3.0: resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + node-addon-api@8.5.0: resolution: {integrity: sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==} engines: {node: ^18 || ^20 || >= 21} @@ -8853,8 +9131,8 @@ packages: node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} - nodemailer@7.0.11: - resolution: {integrity: sha512-gnXhNRE0FNhD7wPSCGhdNh46Hs6nm+uTyg+Kq0cZukNQiYdnCsoQjodNP9BQVG9XrcK/v6/MgpAPBUFyzh9pvw==} + nodemailer@7.0.12: + resolution: {integrity: sha512-H+rnK5bX2Pi/6ms3sN4/jRQvYSMltV6vqup/0SFOrxYYY/qoNvhXPlYq3e+Pm9RFJRwrMGbMIwi81M4dxpomhA==} engines: {node: '>=6.0.0'} nopt@1.0.10: @@ -9241,8 +9519,8 @@ packages: pmtiles@3.2.1: resolution: {integrity: sha512-3R4fBwwoli5mw7a6t1IGwOtfmcSAODq6Okz0zkXhS1zi9sz1ssjjIfslwPvcWw5TNhdjNBUg9fgfPLeqZlH6ng==} - pmtiles@4.3.0: - resolution: {integrity: sha512-wnzQeSiYT/MyO63o7AVxwt7+uKqU0QUy2lHrivM7GvecNy0m1A4voVyGey7bujnEW5Hn+ZzLdvHPoFaqrOzbPA==} + pmtiles@4.3.2: + resolution: {integrity: sha512-Ath2F2U2E37QyNXjN1HOF+oLiNIbdrDYrk/K3C9K4Pgw2anwQX10y4WYWEH9O75vPiu0gBbSWIAbSG19svyvZg==} pngjs@5.0.0: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} @@ -10142,6 +10420,9 @@ packages: resolve-pathname@3.0.0: resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve-protobuf-schema@2.1.0: resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} @@ -10212,6 +10493,9 @@ packages: resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} engines: {node: '>= 18'} + rrweb-cssom@0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + rtlcss@4.3.0: resolution: {integrity: sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==} engines: {node: '>=12.0.0'} @@ -10265,6 +10549,11 @@ packages: sanitize-html@2.17.0: resolution: {integrity: sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==} + sass@1.97.1: + resolution: {integrity: sha512-uf6HoO8fy6ClsrShvMgaKUn14f2EHQLQRtpsZZLeU/Mv0Q1K5P0+x2uvH6Cub39TVVbWNSrraUhDAoFph6vh0A==} + engines: {node: '>=14.0.0'} + hasBin: true + sax@1.4.3: resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} @@ -10424,6 +10713,10 @@ packages: resolution: {integrity: sha512-i/w5Ie4tENfGYbdCo2iJ+oies0vOFd8QXWHopKOUzudfLCvnmeheF2PpHp89Z2azpc+c2su3lMiWO/SpP+429A==} engines: {node: '>=0.12.18'} + simple-icons@16.4.0: + resolution: {integrity: sha512-8CKtCvx1Zq3L0CBsR4RR1MjGCXkXbzdspwl2yCxs8oWkstbzj2+DatRKDee/tuj3Ffd/2CDzwEky9RgG2yggew==} + engines: {node: '>=0.12.18'} + sirv@2.0.4: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} @@ -10462,19 +10755,19 @@ packages: snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - socket.io-adapter@2.5.5: - resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} + socket.io-adapter@2.5.6: + resolution: {integrity: sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ==} - socket.io-client@4.8.1: - resolution: {integrity: sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==} + socket.io-client@4.8.3: + resolution: {integrity: sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g==} engines: {node: '>=10.0.0'} - socket.io-parser@4.2.4: - resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + socket.io-parser@4.2.5: + resolution: {integrity: sha512-bPMmpy/5WWKHea5Y/jYAP6k74A+hvmRCQaJuJB6I/ML5JZq/KfNieUVo/3Mh7SAqn7TyFdIo6wqYHInG1MU1bQ==} engines: {node: '>=10.0.0'} - socket.io@4.8.1: - resolution: {integrity: sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==} + socket.io@4.8.3: + resolution: {integrity: sha512-2Dd78bqzzjE6KPkD5fHZmDAKRNe3J15q+YHDrIsy9WEkqttc7GY+kT9OBLSMaPbQaEd0x1BjcmtMtXkfpc+T5A==} engines: {node: '>=10.2.0'} sockjs@0.3.24: @@ -10655,6 +10948,9 @@ packages: resolution: {integrity: sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==} engines: {node: '>=18'} + style-mod@4.1.3: + resolution: {integrity: sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==} + style-to-js@1.1.21: resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} @@ -10698,8 +10994,13 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svelte-check@4.3.4: - resolution: {integrity: sha512-DVWvxhBrDsd+0hHWKfjP99lsSXASeOhHJYyuKOFYJcP7ThfSCKgjVarE8XfuMWpS5JV3AlDf+iK1YGGo2TACdw==} + svelte-awesome@3.3.5: + resolution: {integrity: sha512-RIi+OI6CEn+fTdYy7UOgImEUWvdQSwP9SiMC44UKyFO+8+gjj+NgTG67hI8j2rTHQVvCP820Uj+4UoZG8CCUfA==} + peerDependencies: + svelte: '>= 3.43.1 < 6' + + svelte-check@4.3.5: + resolution: {integrity: sha512-e4VWZETyXaKGhpkxOXP+B/d0Fp/zKViZoJmneZWe/05Y2aqSKj3YN2nLfYPJBQ87WEiY4BQCQ9hWGu9mPT1a1Q==} engines: {node: '>= 18.0.0'} hasBin: true peerDependencies: @@ -10715,6 +11016,9 @@ packages: svelte: optional: true + svelte-floating-ui@1.5.8: + resolution: {integrity: sha512-dVvJhZ2bT+kQDHlE4Lep8t+sgEc0XD96fXLzAi2DDI2bsaegBbClxXVNMma0C2WsG+n9GJSYx292dTvA8CYRtw==} + svelte-gestures@5.2.2: resolution: {integrity: sha512-Y+chXPaSx8OsPoFppUwPk8PJzgrZ7xoDJKXeiEc7JBqyKKzXer9hlf8F9O34eFuAWB4/WQEvccACvyBplESL7A==} @@ -10728,6 +11032,11 @@ packages: peerDependencies: svelte: ^3 || ^4 || ^5 + svelte-jsoneditor@3.11.0: + resolution: {integrity: sha512-OypU/0ALZQPXc4wZWSokNGdkKPI5SZBbtsjhUmFuF3hq6Gjk6ll95mWPV4ckW/Wr4M53k7zuSLCqOHZCS7PZyw==} + peerDependencies: + svelte: ^5.0.0 + svelte-maplibre@1.2.5: resolution: {integrity: sha512-Uklcbi6inW9GA0MuSusbXmFr/MQPmXrjuP8hS1+yFX3ySvCQ477tsM3I7Jo/fUDK3XAxFSIHW6hZfucnM3kXwQ==} peerDependencies: @@ -10754,14 +11063,17 @@ packages: peerDependencies: svelte: ^3.48.0 || ^4 || ^5 + svelte-select@5.8.3: + resolution: {integrity: sha512-nQsvflWmTCOZjssdrNptzfD1Ok45hHVMTL5IHay5DINk7dfu5Er+8KsVJnZMJdSircqtR0YlT4YkCFlxOUhVPA==} + svelte-toolbelt@0.10.6: resolution: {integrity: sha512-YWuX+RE+CnWYx09yseAe4ZVMM7e7GRFZM6OYWpBKOb++s+SQ8RBIMMe+Bs/CznBMc0QPLjr+vDBxTAkozXsFXQ==} engines: {node: '>=18', pnpm: '>=8.7.0'} peerDependencies: svelte: ^5.30.2 - svelte@5.43.3: - resolution: {integrity: sha512-kjkAjCk41mJfvJZG56XcJNOdJSke94JxtcX8zFzzz2vrt47E0LnoBzU6azIZ1aBxJgUep8qegAkguSf1GjxLXQ==} + svelte@5.46.1: + resolution: {integrity: sha512-ynjfCHD3nP2el70kN5Pmg37sSi0EjOm9FgHYQdC4giWG/hzO3AatzXXJJgP305uIhGQxSufJLuYWtkY8uK/8RA==} engines: {node: '>=18'} svg-parser@2.0.4: @@ -10888,8 +11200,8 @@ packages: resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} - testcontainers@11.10.0: - resolution: {integrity: sha512-8hwK2EnrOZfrHPpDC7CPe03q7H8Vv8j3aXdcmFFyNV8dzpBzgZYmqyDtduJ8YQ5kbzj+A+jUXMQ6zI8B5U3z+g==} + testcontainers@11.11.0: + resolution: {integrity: sha512-nKTJn3n/gkyGg/3SVkOwX+isPOGSHlfI+CWMobSmvQrsj7YW01aWvl2pYIfV4LMd+C8or783yYrzKSK2JlP+Qw==} text-decoder@1.2.3: resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} @@ -10971,6 +11283,13 @@ packages: resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} engines: {node: '>=14.0.0'} + tldts-core@6.1.86: + resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} + + tldts@6.1.86: + resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} + hasBin: true + tmp@0.2.5: resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} @@ -10986,8 +11305,8 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} - token-types@6.1.1: - resolution: {integrity: sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ==} + token-types@6.1.2: + resolution: {integrity: sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==} engines: {node: '>=14.16'} totalist@3.0.1: @@ -10998,6 +11317,10 @@ packages: resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} + tough-cookie@5.1.2: + resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} + engines: {node: '>=16'} + tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -11005,6 +11328,10 @@ packages: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} + tr46@5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} + engines: {node: '>=18'} + tree-dump@1.1.0: resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} engines: {node: '>=10.0'} @@ -11023,8 +11350,8 @@ packages: truncate-utf8-bytes@1.0.2: resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} - ts-api-utils@2.1.0: - resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + ts-api-utils@2.4.0: + resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -11057,6 +11384,11 @@ packages: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} engines: {node: '>=0.6.x'} + tsx@4.21.0: + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} + engines: {node: '>=18.0.0'} + hasBin: true + tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} @@ -11093,8 +11425,8 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.50.0: - resolution: {integrity: sha512-Q1/6yNUmCpH94fbgMUMg2/BSAr/6U7GBk61kZTv1/asghQOWOjTlp9K8mixS5NcJmm2creY+UFfGeW/+OcA64A==} + typescript-eslint@8.51.0: + resolution: {integrity: sha512-jh8ZuM5oEh2PSdyQG9YAEM1TCGuWenLSuSUhf/irbVUNW9O5FhbFVONviN2TgMTBnUmyHv7E56rYnfLZK6TkiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -11138,8 +11470,8 @@ packages: undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - undici@7.16.0: - resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==} + undici@7.18.0: + resolution: {integrity: sha512-CfPufgPFHCYu0W4h1NiKW9+tNJ39o3kWm7Cm29ET1enSJx+AERfz7A2wAr26aY0SZbYzZlTBQtcHy15o60VZfQ==} engines: {node: '>=20.18.1'} unicode-canonical-property-names-ecmascript@2.0.1: @@ -11308,13 +11640,16 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - validator@13.15.23: - resolution: {integrity: sha512-4yoz1kEWqUjzi5zsPbAS/903QXSYp0UOtHsPpp7p9rHAw/W+dkInskAE386Fat3oKRROwO98d9ZB0G4cObgUyw==} + validator@13.15.26: + resolution: {integrity: sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA==} engines: {node: '>= 0.10'} value-equal@1.0.1: resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} + vanilla-picker@2.12.3: + resolution: {integrity: sha512-qVkT1E7yMbUsB2mmJNFmaXMWE2hF8ffqzMMwe9zdAikd8u2VfnsVY2HQcOUi2F38bgbxzlJBEdS1UUhOXdF9GQ==} + vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -11346,8 +11681,8 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite-tsconfig-paths@5.1.4: - resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==} + vite-tsconfig-paths@6.0.3: + resolution: {integrity: sha512-7bL7FPX/DSviaZGYUKowWF1AiDVWjMjxNbE8lyaVGDezkedWqfGhlnQ4BZXre0ZN5P4kAgIJfAlgFDVyjrCIyg==} peerDependencies: vite: '*' peerDependenciesMeta: @@ -11439,10 +11774,17 @@ packages: vt-pbf@3.1.3: resolution: {integrity: sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==} + w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + w3c-xmlserializer@4.0.0: resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} engines: {node: '>=14'} + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + watchpack@2.4.4: resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} engines: {node: '>=10.13.0'} @@ -11539,15 +11881,29 @@ packages: whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation + + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + whatwg-url@11.0.0: resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} engines: {node: '>=12'} + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -11620,18 +11976,6 @@ packages: utf-8-validate: optional: true - ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - ws@8.18.3: resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} engines: {node: '>=10.0.0'} @@ -11660,6 +12004,10 @@ packages: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} @@ -11946,6 +12294,15 @@ snapshots: transitivePeerDependencies: - chokidar + '@asamuzakjp/css-color@3.2.0': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + lru-cache: 10.4.3 + optional: true + '@aws-crypto/sha256-browser@5.2.0': dependencies: '@aws-crypto/sha256-js': 5.2.0 @@ -13101,7 +13458,58 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} - '@borewit/text-codec@0.1.1': {} + '@borewit/text-codec@0.2.1': {} + + '@codemirror/autocomplete@6.20.0': + dependencies: + '@codemirror/language': 6.12.1 + '@codemirror/state': 6.5.3 + '@codemirror/view': 6.39.8 + '@lezer/common': 1.5.0 + + '@codemirror/commands@6.10.1': + dependencies: + '@codemirror/language': 6.12.1 + '@codemirror/state': 6.5.3 + '@codemirror/view': 6.39.8 + '@lezer/common': 1.5.0 + + '@codemirror/lang-json@6.0.2': + dependencies: + '@codemirror/language': 6.12.1 + '@lezer/json': 1.0.3 + + '@codemirror/language@6.12.1': + dependencies: + '@codemirror/state': 6.5.3 + '@codemirror/view': 6.39.8 + '@lezer/common': 1.5.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.6 + style-mod: 4.1.3 + + '@codemirror/lint@6.9.2': + dependencies: + '@codemirror/state': 6.5.3 + '@codemirror/view': 6.39.8 + crelt: 1.0.6 + + '@codemirror/search@6.5.11': + dependencies: + '@codemirror/state': 6.5.3 + '@codemirror/view': 6.39.8 + crelt: 1.0.6 + + '@codemirror/state@6.5.3': + dependencies: + '@marijn/find-cluster-break': 1.0.2 + + '@codemirror/view@6.39.8': + dependencies: + '@codemirror/state': 6.5.3 + crelt: 1.0.6 + style-mod: 4.1.3 + w3c-keyname: 2.2.8 '@colors/colors@1.5.0': optional: true @@ -14194,7 +14602,7 @@ snapshots: '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/aix-ppc64@0.27.1': + '@esbuild/aix-ppc64@0.27.2': optional: true '@esbuild/android-arm64@0.19.12': @@ -14203,7 +14611,7 @@ snapshots: '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm64@0.27.1': + '@esbuild/android-arm64@0.27.2': optional: true '@esbuild/android-arm@0.19.12': @@ -14212,7 +14620,7 @@ snapshots: '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-arm@0.27.1': + '@esbuild/android-arm@0.27.2': optional: true '@esbuild/android-x64@0.19.12': @@ -14221,7 +14629,7 @@ snapshots: '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/android-x64@0.27.1': + '@esbuild/android-x64@0.27.2': optional: true '@esbuild/darwin-arm64@0.19.12': @@ -14230,7 +14638,7 @@ snapshots: '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.27.1': + '@esbuild/darwin-arm64@0.27.2': optional: true '@esbuild/darwin-x64@0.19.12': @@ -14239,7 +14647,7 @@ snapshots: '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/darwin-x64@0.27.1': + '@esbuild/darwin-x64@0.27.2': optional: true '@esbuild/freebsd-arm64@0.19.12': @@ -14248,7 +14656,7 @@ snapshots: '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.27.1': + '@esbuild/freebsd-arm64@0.27.2': optional: true '@esbuild/freebsd-x64@0.19.12': @@ -14257,7 +14665,7 @@ snapshots: '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.27.1': + '@esbuild/freebsd-x64@0.27.2': optional: true '@esbuild/linux-arm64@0.19.12': @@ -14266,7 +14674,7 @@ snapshots: '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm64@0.27.1': + '@esbuild/linux-arm64@0.27.2': optional: true '@esbuild/linux-arm@0.19.12': @@ -14275,7 +14683,7 @@ snapshots: '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-arm@0.27.1': + '@esbuild/linux-arm@0.27.2': optional: true '@esbuild/linux-ia32@0.19.12': @@ -14284,7 +14692,7 @@ snapshots: '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-ia32@0.27.1': + '@esbuild/linux-ia32@0.27.2': optional: true '@esbuild/linux-loong64@0.19.12': @@ -14293,7 +14701,7 @@ snapshots: '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-loong64@0.27.1': + '@esbuild/linux-loong64@0.27.2': optional: true '@esbuild/linux-mips64el@0.19.12': @@ -14302,7 +14710,7 @@ snapshots: '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-mips64el@0.27.1': + '@esbuild/linux-mips64el@0.27.2': optional: true '@esbuild/linux-ppc64@0.19.12': @@ -14311,7 +14719,7 @@ snapshots: '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-ppc64@0.27.1': + '@esbuild/linux-ppc64@0.27.2': optional: true '@esbuild/linux-riscv64@0.19.12': @@ -14320,7 +14728,7 @@ snapshots: '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.27.1': + '@esbuild/linux-riscv64@0.27.2': optional: true '@esbuild/linux-s390x@0.19.12': @@ -14329,7 +14737,7 @@ snapshots: '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-s390x@0.27.1': + '@esbuild/linux-s390x@0.27.2': optional: true '@esbuild/linux-x64@0.19.12': @@ -14338,13 +14746,13 @@ snapshots: '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/linux-x64@0.27.1': + '@esbuild/linux-x64@0.27.2': optional: true '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.27.1': + '@esbuild/netbsd-arm64@0.27.2': optional: true '@esbuild/netbsd-x64@0.19.12': @@ -14353,13 +14761,13 @@ snapshots: '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.27.1': + '@esbuild/netbsd-x64@0.27.2': optional: true '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.27.1': + '@esbuild/openbsd-arm64@0.27.2': optional: true '@esbuild/openbsd-x64@0.19.12': @@ -14368,13 +14776,13 @@ snapshots: '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.27.1': + '@esbuild/openbsd-x64@0.27.2': optional: true '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.27.1': + '@esbuild/openharmony-arm64@0.27.2': optional: true '@esbuild/sunos-x64@0.19.12': @@ -14383,7 +14791,7 @@ snapshots: '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/sunos-x64@0.27.1': + '@esbuild/sunos-x64@0.27.2': optional: true '@esbuild/win32-arm64@0.19.12': @@ -14392,7 +14800,7 @@ snapshots: '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-arm64@0.27.1': + '@esbuild/win32-arm64@0.27.2': optional: true '@esbuild/win32-ia32@0.19.12': @@ -14401,7 +14809,7 @@ snapshots: '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-ia32@0.27.1': + '@esbuild/win32-ia32@0.27.2': optional: true '@esbuild/win32-x64@0.19.12': @@ -14410,10 +14818,10 @@ snapshots: '@esbuild/win32-x64@0.25.12': optional: true - '@esbuild/win32-x64@0.27.1': + '@esbuild/win32-x64@0.27.2': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.6.1))': dependencies: eslint: 9.39.2(jiti@2.6.1) eslint-visitor-keys: 3.4.3 @@ -14490,29 +14898,66 @@ snapshots: decimal.js: 10.6.0 tslib: 2.8.1 + '@formatjs/ecma402-abstract@3.0.7': + dependencies: + '@formatjs/fast-memoize': 3.0.2 + '@formatjs/intl-localematcher': 0.7.4 + decimal.js: 10.6.0 + tslib: 2.8.1 + '@formatjs/fast-memoize@2.2.7': dependencies: tslib: 2.8.1 + '@formatjs/fast-memoize@3.0.2': + dependencies: + tslib: 2.8.1 + '@formatjs/icu-messageformat-parser@2.11.4': dependencies: '@formatjs/ecma402-abstract': 2.3.6 '@formatjs/icu-skeleton-parser': 1.8.16 tslib: 2.8.1 + '@formatjs/icu-messageformat-parser@3.2.1': + dependencies: + '@formatjs/ecma402-abstract': 3.0.7 + '@formatjs/icu-skeleton-parser': 2.0.7 + tslib: 2.8.1 + '@formatjs/icu-skeleton-parser@1.8.16': dependencies: '@formatjs/ecma402-abstract': 2.3.6 tslib: 2.8.1 + '@formatjs/icu-skeleton-parser@2.0.7': + dependencies: + '@formatjs/ecma402-abstract': 3.0.7 + tslib: 2.8.1 + '@formatjs/intl-localematcher@0.6.2': dependencies: tslib: 2.8.1 - '@golevelup/nestjs-discovery@5.0.0(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)': + '@formatjs/intl-localematcher@0.7.4': dependencies: - '@nestjs/common': 11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(@nestjs/websockets@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@formatjs/fast-memoize': 3.0.2 + tslib: 2.8.1 + + '@fortawesome/fontawesome-common-types@7.1.0': {} + + '@fortawesome/free-regular-svg-icons@7.1.0': + dependencies: + '@fortawesome/fontawesome-common-types': 7.1.0 + + '@fortawesome/free-solid-svg-icons@7.1.0': + dependencies: + '@fortawesome/fontawesome-common-types': 7.1.0 + + '@golevelup/nestjs-discovery@5.0.0(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)': + dependencies: + '@nestjs/common': 11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.11)(@nestjs/websockets@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2) lodash: 4.17.21 '@grpc/grpc-js@1.14.3': @@ -14649,19 +15094,19 @@ snapshots: '@immich/justified-layout-wasm@0.4.3': {} - '@immich/svelte-markdown-preprocess@0.1.0(svelte@5.43.3)': + '@immich/svelte-markdown-preprocess@0.1.0(svelte@5.46.1)': dependencies: - svelte: 5.43.3 + svelte: 5.46.1 - '@immich/ui@0.50.1(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3)': + '@immich/ui@0.54.0(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1)': dependencies: - '@immich/svelte-markdown-preprocess': 0.1.0(svelte@5.43.3) + '@immich/svelte-markdown-preprocess': 0.1.0(svelte@5.46.1) '@internationalized/date': 3.10.0 '@mdi/js': 7.4.47 - bits-ui: 2.14.4(@internationalized/date@3.10.0)(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3) + bits-ui: 2.14.4(@internationalized/date@3.10.0)(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1) luxon: 3.7.2 - simple-icons: 15.22.0 - svelte: 5.43.3 + simple-icons: 16.4.0 + svelte: 5.46.1 svelte-highlight: 7.9.0 tailwind-merge: 3.4.0 tailwind-variants: 3.2.2(tailwind-merge@3.4.0)(tailwindcss@4.1.18) @@ -14875,6 +15320,14 @@ snapshots: '@js-sdsl/ordered-map@4.4.2': {} + '@jsep-plugin/assignment@1.3.0(jsep@1.4.0)': + dependencies: + jsep: 1.4.0 + + '@jsep-plugin/regex@1.0.4(jsep@1.4.0)': + dependencies: + jsep: 1.4.0 + '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': dependencies: tslib: 2.8.1 @@ -14911,6 +15364,8 @@ snapshots: '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) tslib: 2.8.1 + '@jsonquerylang/jsonquery@5.1.1': {} + '@koa/cors@5.0.0': dependencies: vary: 1.1.2 @@ -14928,8 +15383,8 @@ snapshots: '@koddsson/eslint-plugin-tscompat@0.2.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@mdn/browser-compat-data': 6.1.5 - '@typescript-eslint/type-utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) browserslist: 4.28.1 transitivePeerDependencies: - eslint @@ -14938,6 +15393,22 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} + '@lezer/common@1.5.0': {} + + '@lezer/highlight@1.2.3': + dependencies: + '@lezer/common': 1.5.0 + + '@lezer/json@1.0.3': + dependencies: + '@lezer/common': 1.5.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.6 + + '@lezer/lr@1.4.6': + dependencies: + '@lezer/common': 1.5.0 + '@lukeed/csprng@1.1.0': {} '@mapbox/geojson-rewind@0.5.2': @@ -15036,6 +15507,8 @@ snapshots: pbf: 4.0.1 supercluster: 8.0.1 + '@marijn/find-cluster-break@1.0.2': {} + '@mdi/js@7.4.47': {} '@mdi/react@1.6.1': @@ -15104,21 +15577,21 @@ snapshots: '@namnode/store@0.1.0': {} - '@nestjs/bull-shared@11.0.4(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)': + '@nestjs/bull-shared@11.0.4(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)': dependencies: - '@nestjs/common': 11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(@nestjs/websockets@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.11)(@nestjs/websockets@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2) tslib: 2.8.1 - '@nestjs/bullmq@11.0.4(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(bullmq@5.66.0)': + '@nestjs/bullmq@11.0.4(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)(bullmq@5.66.4)': dependencies: - '@nestjs/bull-shared': 11.0.4(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9) - '@nestjs/common': 11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(@nestjs/websockets@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2) - bullmq: 5.66.0 + '@nestjs/bull-shared': 11.0.4(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11) + '@nestjs/common': 11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.11)(@nestjs/websockets@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2) + bullmq: 5.66.4 tslib: 2.8.1 - '@nestjs/cli@11.0.14(@swc/core@1.15.5(@swc/helpers@0.5.17))(@types/node@24.10.4)': + '@nestjs/cli@11.0.14(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@24.10.4)': dependencies: '@angular-devkit/core': 19.2.19(chokidar@4.0.3) '@angular-devkit/schematics': 19.2.19(chokidar@4.0.3) @@ -15129,26 +15602,26 @@ snapshots: chokidar: 4.0.3 cli-table3: 0.6.5 commander: 4.1.1 - fork-ts-checker-webpack-plugin: 9.1.0(typescript@5.9.3)(webpack@5.103.0(@swc/core@1.15.5(@swc/helpers@0.5.17))) + fork-ts-checker-webpack-plugin: 9.1.0(typescript@5.9.3)(webpack@5.103.0(@swc/core@1.15.8(@swc/helpers@0.5.17))) glob: 13.0.0 node-emoji: 1.11.0 ora: 5.4.1 tsconfig-paths: 4.2.0 tsconfig-paths-webpack-plugin: 4.2.0 typescript: 5.9.3 - webpack: 5.103.0(@swc/core@1.15.5(@swc/helpers@0.5.17)) + webpack: 5.103.0(@swc/core@1.15.8(@swc/helpers@0.5.17)) webpack-node-externals: 3.0.0 optionalDependencies: - '@swc/core': 1.15.5(@swc/helpers@0.5.17) + '@swc/core': 1.15.8(@swc/helpers@0.5.17) transitivePeerDependencies: - '@types/node' - esbuild - uglify-js - webpack-cli - '@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2)': + '@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2)': dependencies: - file-type: 21.1.0 + file-type: 21.2.0 iterare: 1.2.1 load-esm: 1.0.3 reflect-metadata: 0.2.2 @@ -15161,9 +15634,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@nestjs/core@11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(@nestjs/websockets@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2)': + '@nestjs/core@11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.11)(@nestjs/websockets@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2)': dependencies: - '@nestjs/common': 11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) '@nuxt/opencollective': 0.4.1 fast-safe-stringify: 2.1.1 iterare: 1.2.1 @@ -15173,45 +15646,45 @@ snapshots: tslib: 2.8.1 uid: 2.0.2 optionalDependencies: - '@nestjs/platform-express': 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9) - '@nestjs/websockets': 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(@nestjs/platform-socket.io@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/platform-express': 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11) + '@nestjs/websockets': 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)(@nestjs/platform-socket.io@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/mapped-types@2.1.0(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)': + '@nestjs/mapped-types@2.1.0(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)': dependencies: - '@nestjs/common': 11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) reflect-metadata: 0.2.2 optionalDependencies: class-transformer: 0.5.1 class-validator: 0.14.3 - '@nestjs/platform-express@11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)': + '@nestjs/platform-express@11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)': dependencies: - '@nestjs/common': 11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(@nestjs/websockets@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.11)(@nestjs/websockets@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2) cors: 2.8.5 - express: 5.1.0 + express: 5.2.1 multer: 2.0.2 path-to-regexp: 8.3.0 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@nestjs/platform-socket.io@11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.9)(rxjs@7.8.2)': + '@nestjs/platform-socket.io@11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.11)(rxjs@7.8.2)': dependencies: - '@nestjs/common': 11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/websockets': 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(@nestjs/platform-socket.io@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/websockets': 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)(@nestjs/platform-socket.io@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2) rxjs: 7.8.2 - socket.io: 4.8.1 + socket.io: 4.8.3 tslib: 2.8.1 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@nestjs/schedule@6.1.0(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)': + '@nestjs/schedule@6.1.0(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)': dependencies: - '@nestjs/common': 11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(@nestjs/websockets@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.11)(@nestjs/websockets@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2) cron: 4.3.5 '@nestjs/schematics@11.0.9(chokidar@4.0.3)(typescript@5.9.3)': @@ -15225,12 +15698,12 @@ snapshots: transitivePeerDependencies: - chokidar - '@nestjs/swagger@11.2.3(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)': + '@nestjs/swagger@11.2.3(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)': dependencies: '@microsoft/tsdoc': 0.16.0 - '@nestjs/common': 11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(@nestjs/websockets@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/mapped-types': 2.1.0(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2) + '@nestjs/common': 11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.11)(@nestjs/websockets@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/mapped-types': 2.1.0(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2) js-yaml: 4.1.1 lodash: 4.17.21 path-to-regexp: 8.3.0 @@ -15240,25 +15713,25 @@ snapshots: class-transformer: 0.5.1 class-validator: 0.14.3 - '@nestjs/testing@11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(@nestjs/platform-express@11.1.9)': + '@nestjs/testing@11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)(@nestjs/platform-express@11.1.11)': dependencies: - '@nestjs/common': 11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(@nestjs/websockets@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.11)(@nestjs/websockets@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2) tslib: 2.8.1 optionalDependencies: - '@nestjs/platform-express': 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9) + '@nestjs/platform-express': 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11) - '@nestjs/websockets@11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(@nestjs/platform-socket.io@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2)': + '@nestjs/websockets@11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)(@nestjs/platform-socket.io@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2)': dependencies: - '@nestjs/common': 11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(@nestjs/websockets@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.11)(@nestjs/websockets@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2) iterare: 1.2.1 object-hash: 3.0.0 reflect-metadata: 0.2.2 rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@nestjs/platform-socket.io': 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.9)(rxjs@7.8.2) + '@nestjs/platform-socket.io': 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.11)(rxjs@7.8.2) '@noble/hashes@1.8.0': {} @@ -15272,7 +15745,7 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 + fastq: 1.20.1 '@npmcli/agent@4.0.0': dependencies: @@ -15429,11 +15902,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-ioredis@0.56.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-ioredis@0.57.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) '@opentelemetry/redis-common': 0.38.2 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -15445,7 +15919,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-pg@0.61.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-pg@0.61.2(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) @@ -15575,6 +16049,67 @@ snapshots: dependencies: '@noble/hashes': 1.8.0 + '@parcel/watcher-android-arm64@2.5.1': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.1': + optional: true + + '@parcel/watcher-darwin-x64@2.5.1': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.1': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.1': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.1': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.1': + optional: true + + '@parcel/watcher-win32-arm64@2.5.1': + optional: true + + '@parcel/watcher-win32-ia32@2.5.1': + optional: true + + '@parcel/watcher-win32-x64@2.5.1': + optional: true + + '@parcel/watcher@2.5.1': + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.1 + '@parcel/watcher-darwin-arm64': 2.5.1 + '@parcel/watcher-darwin-x64': 2.5.1 + '@parcel/watcher-freebsd-x64': 2.5.1 + '@parcel/watcher-linux-arm-glibc': 2.5.1 + '@parcel/watcher-linux-arm-musl': 2.5.1 + '@parcel/watcher-linux-arm64-glibc': 2.5.1 + '@parcel/watcher-linux-arm64-musl': 2.5.1 + '@parcel/watcher-linux-x64-glibc': 2.5.1 + '@parcel/watcher-linux-x64-musl': 2.5.1 + '@parcel/watcher-win32-arm64': 2.5.1 + '@parcel/watcher-win32-ia32': 2.5.1 + '@parcel/watcher-win32-x64': 2.5.1 + optional: true + '@photo-sphere-viewer/core@5.14.0': dependencies: three: 0.179.1 @@ -15763,6 +16298,12 @@ snapshots: dependencies: react: 19.2.3 + '@replit/codemirror-indentation-markers@6.5.3(@codemirror/language@6.12.1)(@codemirror/state@6.5.3)(@codemirror/view@6.39.8)': + dependencies: + '@codemirror/language': 6.12.1 + '@codemirror/state': 6.5.3 + '@codemirror/view': 6.39.8 + '@rollup/pluginutils@5.3.0(rollup@4.53.4)': dependencies: '@types/estree': 1.0.8 @@ -16150,44 +16691,46 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@socket.io/redis-adapter@8.3.0(socket.io-adapter@2.5.5)': + '@socket.io/redis-adapter@8.3.0(socket.io-adapter@2.5.6)': dependencies: debug: 4.3.7 notepack.io: 3.0.1 - socket.io-adapter: 2.5.5 + socket.io-adapter: 2.5.6 uid2: 1.0.0 transitivePeerDependencies: - supports-color + '@sphinxxxx/color-conversion@2.2.2': {} + '@standard-schema/spec@1.1.0': {} '@sveltejs/acorn-typescript@1.0.8(acorn@8.15.0)': dependencies: acorn: 8.15.0 - '@sveltejs/adapter-static@3.0.10(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))': + '@sveltejs/adapter-static@3.0.10(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': dependencies: - '@sveltejs/kit': 2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + '@sveltejs/kit': 2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) - '@sveltejs/enhanced-img@0.9.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(rollup@4.53.4)(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))': + '@sveltejs/enhanced-img@0.9.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(rollup@4.53.4)(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) magic-string: 0.30.21 sharp: 0.34.5 - svelte: 5.43.3 - svelte-parse-markup: 0.1.5(svelte@5.43.3) - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) + svelte: 5.46.1 + svelte-parse-markup: 0.1.5(svelte@5.46.1) + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vite-imagetools: 9.0.2(rollup@4.53.4) zimmerframe: 1.1.4 transitivePeerDependencies: - rollup - supports-color - '@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))': + '@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@standard-schema/spec': 1.1.0 '@sveltejs/acorn-typescript': 1.0.8(acorn@8.15.0) - '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/cookie': 0.6.0 acorn: 8.15.0 cookie: 0.6.0 @@ -16199,29 +16742,29 @@ snapshots: sade: 1.8.1 set-cookie-parser: 2.7.2 sirv: 3.0.2 - svelte: 5.43.3 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) + svelte: 5.46.1 + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: '@opentelemetry/api': 1.9.0 - '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))': + '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) debug: 4.4.3 - svelte: 5.43.3 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) + svelte: 5.46.1 + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))': + '@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) debug: 4.4.3 deepmerge: 4.3.1 magic-string: 0.30.21 - svelte: 5.43.3 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) - vitefu: 1.1.1(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + svelte: 5.46.1 + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitefu: 1.1.1(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) transitivePeerDependencies: - supports-color @@ -16318,51 +16861,51 @@ snapshots: - supports-color - typescript - '@swc/core-darwin-arm64@1.15.5': + '@swc/core-darwin-arm64@1.15.8': optional: true - '@swc/core-darwin-x64@1.15.5': + '@swc/core-darwin-x64@1.15.8': optional: true - '@swc/core-linux-arm-gnueabihf@1.15.5': + '@swc/core-linux-arm-gnueabihf@1.15.8': optional: true - '@swc/core-linux-arm64-gnu@1.15.5': + '@swc/core-linux-arm64-gnu@1.15.8': optional: true - '@swc/core-linux-arm64-musl@1.15.5': + '@swc/core-linux-arm64-musl@1.15.8': optional: true - '@swc/core-linux-x64-gnu@1.15.5': + '@swc/core-linux-x64-gnu@1.15.8': optional: true - '@swc/core-linux-x64-musl@1.15.5': + '@swc/core-linux-x64-musl@1.15.8': optional: true - '@swc/core-win32-arm64-msvc@1.15.5': + '@swc/core-win32-arm64-msvc@1.15.8': optional: true - '@swc/core-win32-ia32-msvc@1.15.5': + '@swc/core-win32-ia32-msvc@1.15.8': optional: true - '@swc/core-win32-x64-msvc@1.15.5': + '@swc/core-win32-x64-msvc@1.15.8': optional: true - '@swc/core@1.15.5(@swc/helpers@0.5.17)': + '@swc/core@1.15.8(@swc/helpers@0.5.17)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.25 optionalDependencies: - '@swc/core-darwin-arm64': 1.15.5 - '@swc/core-darwin-x64': 1.15.5 - '@swc/core-linux-arm-gnueabihf': 1.15.5 - '@swc/core-linux-arm64-gnu': 1.15.5 - '@swc/core-linux-arm64-musl': 1.15.5 - '@swc/core-linux-x64-gnu': 1.15.5 - '@swc/core-linux-x64-musl': 1.15.5 - '@swc/core-win32-arm64-msvc': 1.15.5 - '@swc/core-win32-ia32-msvc': 1.15.5 - '@swc/core-win32-x64-msvc': 1.15.5 + '@swc/core-darwin-arm64': 1.15.8 + '@swc/core-darwin-x64': 1.15.8 + '@swc/core-linux-arm-gnueabihf': 1.15.8 + '@swc/core-linux-arm64-gnu': 1.15.8 + '@swc/core-linux-arm64-musl': 1.15.8 + '@swc/core-linux-x64-gnu': 1.15.8 + '@swc/core-linux-x64-musl': 1.15.8 + '@swc/core-win32-arm64-msvc': 1.15.8 + '@swc/core-win32-ia32-msvc': 1.15.8 + '@swc/core-win32-x64-msvc': 1.15.8 '@swc/helpers': 0.5.17 '@swc/counter@0.1.3': {} @@ -16440,12 +16983,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 - '@tailwindcss/vite@4.1.18(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))': + '@tailwindcss/vite@4.1.18(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@tailwindcss/node': 4.1.18 '@tailwindcss/oxide': 4.1.18 tailwindcss: 4.1.18 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@testing-library/dom@10.4.1': dependencies: @@ -16467,23 +17010,27 @@ snapshots: picocolors: 1.1.1 redent: 3.0.0 - '@testing-library/svelte@5.2.9(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@20.0.3(canvas@2.11.2))(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))': + '@testing-library/svelte-core@1.0.0(svelte@5.46.1)': + dependencies: + svelte: 5.46.1 + + '@testing-library/svelte@5.3.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.0.3)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@testing-library/dom': 10.4.1 - svelte: 5.43.3 + '@testing-library/svelte-core': 1.0.0(svelte@5.46.1) + svelte: 5.46.1 optionalDependencies: - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@20.0.3(canvas@2.11.2))(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.0.3)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': dependencies: '@testing-library/dom': 10.4.1 - '@tokenizer/inflate@0.3.1': + '@tokenizer/inflate@0.4.1': dependencies: debug: 4.4.3 - fflate: 0.8.2 - token-types: 6.1.1 + token-types: 6.1.2 transitivePeerDependencies: - supports-color @@ -16796,6 +17343,11 @@ snapshots: dependencies: undici-types: 7.16.0 + '@types/node@25.0.3': + dependencies: + undici-types: 7.16.0 + optional: true + '@types/nodemailer@7.0.4': dependencies: '@aws-sdk/client-sesv2': 3.952.0 @@ -16961,102 +17513,102 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.51.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.50.0 - '@typescript-eslint/type-utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/parser': 8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.51.0 + '@typescript-eslint/type-utils': 8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.51.0 eslint: 9.39.2(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.50.0 - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/scope-manager': 8.51.0 + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.51.0 debug: 4.4.3 eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.50.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.51.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.3) - '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/tsconfig-utils': 8.51.0(typescript@5.9.3) + '@typescript-eslint/types': 8.51.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.50.0': + '@typescript-eslint/scope-manager@8.51.0': dependencies: - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/visitor-keys': 8.51.0 - '@typescript-eslint/tsconfig-utils@8.50.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.51.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.2(jiti@2.6.1) - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.50.0': {} + '@typescript-eslint/types@8.51.0': {} - '@typescript-eslint/typescript-estree@8.50.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.51.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.50.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.3) - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/project-service': 8.51.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.51.0(typescript@5.9.3) + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/visitor-keys': 8.51.0 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 tinyglobby: 0.2.15 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.50.0 - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.51.0 + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.50.0': + '@typescript-eslint/visitor-keys@8.51.0': dependencies: - '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/types': 8.51.0 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} '@vercel/oidc@3.0.5': {} - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@20.0.3(canvas@2.11.2))(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -17071,7 +17623,26 @@ snapshots: std-env: 3.10.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@20.0.3(canvas@2.11.2))(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + transitivePeerDependencies: + - supports-color + + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.0.3)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 1.0.2 + ast-v8-to-istanbul: 0.3.8 + debug: 4.4.3 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.2.0 + magic-string: 0.30.21 + magicast: 0.3.5 + std-env: 3.10.0 + test-exclude: 7.0.1 + tinyrainbow: 2.0.0 + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.0.3)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -17083,13 +17654,21 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))': + '@vitest/mocker@3.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + + '@vitest/mocker@3.2.4(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + dependencies: + '@vitest/spy': 3.2.4 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@3.2.4': dependencies: @@ -17201,10 +17780,10 @@ snapshots: dependencies: '@namnode/store': 0.1.0 - '@zoom-image/svelte@0.3.8(svelte@5.43.3)': + '@zoom-image/svelte@0.3.8(svelte@5.46.1)': dependencies: '@zoom-image/core': 0.41.4 - svelte: 5.43.3 + svelte: 5.46.1 abab@2.0.6: optional: true @@ -17436,10 +18015,6 @@ snapshots: async-lock@1.4.1: {} - async-mutex@0.5.0: - dependencies: - tslib: 2.8.1 - async@0.2.10: {} async@3.2.6: {} @@ -17569,15 +18144,15 @@ snapshots: binary-extensions@2.3.0: {} - bits-ui@2.14.4(@internationalized/date@3.10.0)(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3): + bits-ui@2.14.4(@internationalized/date@3.10.0)(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1): dependencies: '@floating-ui/core': 1.7.3 '@floating-ui/dom': 1.7.4 '@internationalized/date': 3.10.0 esm-env: 1.2.2 - runed: 0.35.1(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3) - svelte: 5.43.3 - svelte-toolbelt: 0.10.6(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3) + runed: 0.35.1(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1) + svelte: 5.46.1 + svelte-toolbelt: 0.10.6(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1) tabbable: 6.3.0 transitivePeerDependencies: - '@sveltejs/kit' @@ -17692,7 +18267,7 @@ snapshots: builtin-modules@5.0.0: {} - bullmq@5.66.0: + bullmq@5.66.4: dependencies: cron-parser: 4.9.0 ioredis: 5.8.2 @@ -17901,7 +18476,7 @@ snapshots: dependencies: '@types/validator': 13.15.10 libphonenumber-js: 1.12.31 - validator: 13.15.23 + validator: 13.15.26 clean-css@5.3.3: dependencies: @@ -17971,6 +18546,12 @@ snapshots: cluster-key-slot@1.1.2: {} + codemirror-wrapped-line-indent@1.0.9(@codemirror/language@6.12.1)(@codemirror/state@6.5.3)(@codemirror/view@6.39.8): + dependencies: + '@codemirror/language': 6.12.1 + '@codemirror/state': 6.5.3 + '@codemirror/view': 6.39.8 + collapse-white-space@2.1.0: {} color-convert@2.0.1: @@ -18160,6 +18741,8 @@ snapshots: crc-32: 1.2.2 readable-stream: 4.7.0 + crelt@1.0.6: {} + cron-parser@4.9.0: dependencies: luxon: 3.7.2 @@ -18332,6 +18915,12 @@ snapshots: cssom: 0.3.8 optional: true + cssstyle@4.6.0: + dependencies: + '@asamuzakjp/css-color': 3.2.0 + rrweb-cssom: 0.8.0 + optional: true + csstype@3.2.3: {} d3-array@3.2.4: @@ -18354,6 +18943,12 @@ snapshots: whatwg-url: 11.0.0 optional: true + data-urls@5.0.0: + dependencies: + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + optional: true + debounce@1.2.1: {} debounce@2.2.0: {} @@ -18442,6 +19037,9 @@ snapshots: detect-europe-js@0.1.2: {} + detect-libc@1.0.3: + optional: true + detect-libc@2.1.2: {} detect-node@2.1.0: {} @@ -18468,6 +19066,8 @@ snapshots: didyoumean@1.2.2: {} + diff-sequences@29.6.3: {} + dijkstrajs@1.0.3: {} dir-glob@3.0.1: @@ -18634,12 +19234,12 @@ snapshots: dependencies: once: 1.4.0 - engine.io-client@6.6.3: + engine.io-client@6.6.4: dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7 + debug: 4.4.3 engine.io-parser: 5.2.3 - ws: 8.17.1 + ws: 8.18.3 xmlhttprequest-ssl: 2.1.2 transitivePeerDependencies: - bufferutil @@ -18648,7 +19248,7 @@ snapshots: engine.io-parser@5.2.3: {} - engine.io@6.6.4: + engine.io@6.6.5: dependencies: '@types/cors': 2.8.19 '@types/node': 24.10.4 @@ -18656,9 +19256,9 @@ snapshots: base64id: 2.0.0 cookie: 0.7.2 cors: 2.8.5 - debug: 4.3.7 + debug: 4.4.3 engine.io-parser: 5.2.3 - ws: 8.17.1 + ws: 8.18.3 transitivePeerDependencies: - bufferutil - supports-color @@ -18794,34 +19394,34 @@ snapshots: '@esbuild/win32-ia32': 0.25.12 '@esbuild/win32-x64': 0.25.12 - esbuild@0.27.1: + esbuild@0.27.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.1 - '@esbuild/android-arm': 0.27.1 - '@esbuild/android-arm64': 0.27.1 - '@esbuild/android-x64': 0.27.1 - '@esbuild/darwin-arm64': 0.27.1 - '@esbuild/darwin-x64': 0.27.1 - '@esbuild/freebsd-arm64': 0.27.1 - '@esbuild/freebsd-x64': 0.27.1 - '@esbuild/linux-arm': 0.27.1 - '@esbuild/linux-arm64': 0.27.1 - '@esbuild/linux-ia32': 0.27.1 - '@esbuild/linux-loong64': 0.27.1 - '@esbuild/linux-mips64el': 0.27.1 - '@esbuild/linux-ppc64': 0.27.1 - '@esbuild/linux-riscv64': 0.27.1 - '@esbuild/linux-s390x': 0.27.1 - '@esbuild/linux-x64': 0.27.1 - '@esbuild/netbsd-arm64': 0.27.1 - '@esbuild/netbsd-x64': 0.27.1 - '@esbuild/openbsd-arm64': 0.27.1 - '@esbuild/openbsd-x64': 0.27.1 - '@esbuild/openharmony-arm64': 0.27.1 - '@esbuild/sunos-x64': 0.27.1 - '@esbuild/win32-arm64': 0.27.1 - '@esbuild/win32-ia32': 0.27.1 - '@esbuild/win32-x64': 0.27.1 + '@esbuild/aix-ppc64': 0.27.2 + '@esbuild/android-arm': 0.27.2 + '@esbuild/android-arm64': 0.27.2 + '@esbuild/android-x64': 0.27.2 + '@esbuild/darwin-arm64': 0.27.2 + '@esbuild/darwin-x64': 0.27.2 + '@esbuild/freebsd-arm64': 0.27.2 + '@esbuild/freebsd-x64': 0.27.2 + '@esbuild/linux-arm': 0.27.2 + '@esbuild/linux-arm64': 0.27.2 + '@esbuild/linux-ia32': 0.27.2 + '@esbuild/linux-loong64': 0.27.2 + '@esbuild/linux-mips64el': 0.27.2 + '@esbuild/linux-ppc64': 0.27.2 + '@esbuild/linux-riscv64': 0.27.2 + '@esbuild/linux-s390x': 0.27.2 + '@esbuild/linux-x64': 0.27.2 + '@esbuild/netbsd-arm64': 0.27.2 + '@esbuild/netbsd-x64': 0.27.2 + '@esbuild/openbsd-arm64': 0.27.2 + '@esbuild/openbsd-x64': 0.27.2 + '@esbuild/openharmony-arm64': 0.27.2 + '@esbuild/sunos-x64': 0.27.2 + '@esbuild/win32-arm64': 0.27.2 + '@esbuild/win32-ia32': 0.27.2 + '@esbuild/win32-x64': 0.27.2 escalade@3.2.0: {} @@ -18870,9 +19470,9 @@ snapshots: '@types/eslint': 9.6.1 eslint-config-prettier: 10.1.8(eslint@9.39.2(jiti@2.6.1)) - eslint-plugin-svelte@3.13.1(eslint@9.39.2(jiti@2.6.1))(svelte@5.43.3): + eslint-plugin-svelte@3.13.1(eslint@9.39.2(jiti@2.6.1))(svelte@5.46.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) '@jridgewell/sourcemap-codec': 1.5.5 eslint: 9.39.2(jiti@2.6.1) esutils: 2.0.3 @@ -18882,16 +19482,16 @@ snapshots: postcss-load-config: 3.1.4(postcss@8.5.6) postcss-safe-parser: 7.0.1(postcss@8.5.6) semver: 7.7.3 - svelte-eslint-parser: 1.4.1(svelte@5.43.3) + svelte-eslint-parser: 1.4.1(svelte@5.46.1) optionalDependencies: - svelte: 5.43.3 + svelte: 5.46.1 transitivePeerDependencies: - ts-node eslint-plugin-unicorn@62.0.0(eslint@9.39.2(jiti@2.6.1)): dependencies: '@babel/helper-validator-identifier': 7.28.5 - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) '@eslint/plugin-kit': 0.4.1 change-case: 5.4.4 ci-info: 4.3.1 @@ -18926,7 +19526,7 @@ snapshots: eslint@9.39.2(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.2 @@ -19081,21 +19681,21 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - exiftool-vendored.exe@13.44.0: + exiftool-vendored.exe@13.45.0: optional: true - exiftool-vendored.pl@13.44.0: {} + exiftool-vendored.pl@13.45.0: {} - exiftool-vendored@34.1.0: + exiftool-vendored@34.3.0: dependencies: '@photostructure/tz-lookup': 11.3.0 '@types/luxon': 3.7.1 batch-cluster: 16.0.0 - exiftool-vendored.pl: 13.44.0 + exiftool-vendored.pl: 13.45.0 he: 1.2.0 luxon: 3.7.2 optionalDependencies: - exiftool-vendored.exe: 13.44.0 + exiftool-vendored.exe: 13.45.0 expect-type@1.3.0: {} @@ -19137,38 +19737,6 @@ snapshots: transitivePeerDependencies: - supports-color - express@5.1.0: - dependencies: - accepts: 2.0.0 - body-parser: 2.2.1 - content-disposition: 1.0.1 - content-type: 1.0.5 - cookie: 0.7.2 - cookie-signature: 1.2.2 - debug: 4.4.3 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 2.1.1 - fresh: 2.0.0 - http-errors: 2.0.1 - merge-descriptors: 2.0.0 - mime-types: 3.0.2 - on-finished: 2.4.1 - once: 1.4.0 - parseurl: 1.3.3 - proxy-addr: 2.0.7 - qs: 6.14.0 - range-parser: 1.2.1 - router: 2.2.0 - send: 1.2.1 - serve-static: 2.2.1 - statuses: 2.0.2 - type-is: 2.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - express@5.2.1: dependencies: accepts: 2.0.0 @@ -19257,7 +19825,7 @@ snapshots: dependencies: strnum: 2.1.2 - fastq@1.19.1: + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -19297,11 +19865,11 @@ snapshots: dependencies: stream-source: 0.3.5 - file-type@21.1.0: + file-type@21.2.0: dependencies: - '@tokenizer/inflate': 0.3.1 + '@tokenizer/inflate': 0.4.1 strtok3: 10.3.4 - token-types: 6.1.1 + token-types: 6.1.2 uint8array-extras: 1.5.0 transitivePeerDependencies: - supports-color @@ -19376,7 +19944,7 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - fork-ts-checker-webpack-plugin@9.1.0(typescript@5.9.3)(webpack@5.103.0(@swc/core@1.15.5(@swc/helpers@0.5.17))): + fork-ts-checker-webpack-plugin@9.1.0(typescript@5.9.3)(webpack@5.103.0(@swc/core@1.15.8(@swc/helpers@0.5.17))): dependencies: '@babel/code-frame': 7.27.1 chalk: 4.1.2 @@ -19391,7 +19959,7 @@ snapshots: semver: 7.7.3 tapable: 2.3.0 typescript: 5.9.3 - webpack: 5.103.0(@swc/core@1.15.5(@swc/helpers@0.5.17)) + webpack: 5.103.0(@swc/core@1.15.8(@swc/helpers@0.5.17)) form-data-encoder@2.1.4: {} @@ -19518,6 +20086,10 @@ snapshots: get-stream@6.0.1: {} + get-tsconfig@4.13.0: + dependencies: + resolve-pkg-maps: 1.0.0 + github-slugger@1.5.0: {} gl-matrix@3.4.4: {} @@ -19848,6 +20420,11 @@ snapshots: whatwg-encoding: 2.0.0 optional: true + html-encoding-sniffer@4.0.0: + dependencies: + whatwg-encoding: 3.1.1 + optional: true + html-escaper@2.0.2: {} html-minifier-terser@6.1.0: @@ -20032,6 +20609,10 @@ snapshots: immediate@3.3.0: {} + immutable-json-patch@6.0.2: {} + + immutable@5.1.4: {} + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 @@ -20098,6 +20679,13 @@ snapshots: '@formatjs/icu-messageformat-parser': 2.11.4 tslib: 2.8.1 + intl-messageformat@11.0.8: + dependencies: + '@formatjs/ecma402-abstract': 3.0.7 + '@formatjs/fast-memoize': 3.0.2 + '@formatjs/icu-messageformat-parser': 3.2.1 + tslib: 2.8.1 + invariant@2.2.4: dependencies: loose-envify: 1.4.0 @@ -20310,6 +20898,8 @@ snapshots: jiti@2.6.1: {} + jmespath@0.16.0: {} + joi@17.13.3: dependencies: '@hapi/hoek': 9.3.0 @@ -20335,42 +20925,6 @@ snapshots: dependencies: argparse: 2.0.1 - jsdom@20.0.3(canvas@2.11.2(encoding@0.1.13)): - dependencies: - abab: 2.0.6 - acorn: 8.15.0 - acorn-globals: 7.0.1 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 - decimal.js: 10.6.0 - domexception: 4.0.0 - escodegen: 2.1.0 - form-data: 4.0.5 - html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.23 - parse5: 7.3.0 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 4.1.4 - w3c-xmlserializer: 4.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - ws: 8.18.3 - xml-name-validator: 4.0.0 - optionalDependencies: - canvas: 2.11.2(encoding@0.1.13) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - optional: true - jsdom@20.0.3(canvas@2.11.2): dependencies: abab: 2.0.6 @@ -20407,6 +20961,68 @@ snapshots: - utf-8-validate optional: true + jsdom@26.1.0(canvas@2.11.2(encoding@0.1.13)): + dependencies: + cssstyle: 4.6.0 + data-urls: 5.0.0 + decimal.js: 10.6.0 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.23 + parse5: 7.3.0 + rrweb-cssom: 0.8.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 5.1.2 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + ws: 8.18.3 + xml-name-validator: 5.0.0 + optionalDependencies: + canvas: 2.11.2(encoding@0.1.13) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + optional: true + + jsdom@26.1.0(canvas@2.11.2): + dependencies: + cssstyle: 4.6.0 + data-urls: 5.0.0 + decimal.js: 10.6.0 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.23 + parse5: 7.3.0 + rrweb-cssom: 0.8.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 5.1.2 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + ws: 8.18.3 + xml-name-validator: 5.0.0 + optionalDependencies: + canvas: 2.11.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + optional: true + + jsep@1.4.0: {} + jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -20419,6 +21035,8 @@ snapshots: json-schema@0.4.0: {} + json-source-map@0.6.1: {} + json-stable-stringify-without-jsonify@1.0.1: {} json-stringify-pretty-compact@4.0.0: {} @@ -20433,6 +21051,14 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + jsonpath-plus@10.3.0: + dependencies: + '@jsep-plugin/assignment': 1.3.0(jsep@1.4.0) + '@jsep-plugin/regex': 1.0.4(jsep@1.4.0) + jsep: 1.4.0 + + jsonrepair@3.13.1: {} + jsonwebtoken@9.0.3: dependencies: jws: 4.0.1 @@ -20617,7 +21243,7 @@ snapshots: dependencies: p-locate: 6.0.0 - lodash-es@4.17.21: {} + lodash-es@4.17.22: {} lodash.camelcase@4.3.0: {} @@ -20763,7 +21389,7 @@ snapshots: tinyqueue: 2.0.3 vt-pbf: 3.1.3 - maplibre-gl@5.14.0: + maplibre-gl@5.15.0: dependencies: '@mapbox/geojson-rewind': 0.5.2 '@mapbox/jsonlint-lines-primitives': 2.0.2 @@ -21014,6 +21640,8 @@ snapshots: tree-dump: 1.1.0(tslib@2.8.1) tslib: 2.8.1 + memoize-one@6.0.0: {} + memoizee@0.4.17: dependencies: d: 1.0.2 @@ -21515,6 +22143,8 @@ snapshots: nanoid@5.1.6: {} + natural-compare-lite@1.4.0: {} + natural-compare@1.4.0: {} nearley@2.20.1: @@ -21532,12 +22162,12 @@ snapshots: neo-async@2.6.2: {} - nest-commander@3.20.1(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(@types/inquirer@8.2.12)(@types/node@24.10.4)(typescript@5.9.3): + nest-commander@3.20.1(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)(@types/inquirer@8.2.12)(@types/node@24.10.4)(typescript@5.9.3): dependencies: '@fig/complete-commander': 3.2.0(commander@11.1.0) - '@golevelup/nestjs-discovery': 5.0.0(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9) - '@nestjs/common': 11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(@nestjs/websockets@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@golevelup/nestjs-discovery': 5.0.0(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11) + '@nestjs/common': 11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.11)(@nestjs/websockets@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2) '@types/inquirer': 8.2.12 commander: 11.1.0 cosmiconfig: 8.3.6(typescript@5.9.3) @@ -21546,25 +22176,25 @@ snapshots: - '@types/node' - typescript - nestjs-cls@5.4.3(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2): + nestjs-cls@5.4.3(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2): dependencies: - '@nestjs/common': 11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(@nestjs/websockets@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.11)(@nestjs/websockets@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2) reflect-metadata: 0.2.2 rxjs: 7.8.2 - nestjs-kysely@3.1.2(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(kysely@0.28.2)(reflect-metadata@0.2.2): + nestjs-kysely@3.1.2(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11)(kysely@0.28.2)(reflect-metadata@0.2.2): dependencies: - '@nestjs/common': 11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(@nestjs/websockets@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.11)(@nestjs/websockets@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2) kysely: 0.28.2 reflect-metadata: 0.2.2 tslib: 2.8.1 - nestjs-otel@7.0.1(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9): + nestjs-otel@7.0.1(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.11): dependencies: - '@nestjs/common': 11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(@nestjs/websockets@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.11(@nestjs/common@11.1.11(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.11)(@nestjs/websockets@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2) '@opentelemetry/api': 1.9.0 '@opentelemetry/host-metrics': 0.36.2(@opentelemetry/api@1.9.0) response-time: 2.3.4 @@ -21581,6 +22211,9 @@ snapshots: node-addon-api@4.3.0: {} + node-addon-api@7.1.1: + optional: true + node-addon-api@8.5.0: {} node-emoji@1.11.0: @@ -21631,7 +22264,7 @@ snapshots: node-releases@2.0.27: {} - nodemailer@7.0.11: {} + nodemailer@7.0.12: {} nopt@1.0.10: dependencies: @@ -22035,7 +22668,7 @@ snapshots: '@types/leaflet': 1.9.21 fflate: 0.8.2 - pmtiles@4.3.0: + pmtiles@4.3.2: dependencies: fflate: 0.8.2 @@ -22208,12 +22841,13 @@ snapshots: optionalDependencies: postcss: 8.5.6 - postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.2): + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 1.21.7 postcss: 8.5.6 + tsx: 4.21.0 yaml: 2.8.2 postcss-loader@7.3.4(postcss@8.5.6)(typescript@5.9.3)(webpack@5.103.0): @@ -22557,10 +23191,10 @@ snapshots: dependencies: prettier: 3.7.4 - prettier-plugin-svelte@3.4.1(prettier@3.7.4)(svelte@5.43.3): + prettier-plugin-svelte@3.4.1(prettier@3.7.4)(svelte@5.46.1): dependencies: prettier: 3.7.4 - svelte: 5.43.3 + svelte: 5.46.1 prettier@3.7.4: {} @@ -22757,7 +23391,7 @@ snapshots: nypm: 0.6.0 ora: 8.2.0 prompts: 2.4.2 - socket.io: 4.8.1 + socket.io: 4.8.3 tsconfig-paths: 4.2.0 transitivePeerDependencies: - bufferutil @@ -23052,6 +23686,8 @@ snapshots: resolve-pathname@3.0.0: {} + resolve-pkg-maps@1.0.0: {} + resolve-protobuf-schema@2.1.0: dependencies: protocol-buffers-schema: 3.6.0 @@ -23142,6 +23778,9 @@ snapshots: transitivePeerDependencies: - supports-color + rrweb-cssom@0.8.0: + optional: true + rtlcss@4.3.0: dependencies: escalade: 3.2.0 @@ -23157,14 +23796,14 @@ snapshots: dependencies: queue-microtask: 1.2.3 - runed@0.35.1(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3): + runed@0.35.1(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1): dependencies: dequal: 2.0.3 esm-env: 1.2.2 lz-string: 1.5.0 - svelte: 5.43.3 + svelte: 5.46.1 optionalDependencies: - '@sveltejs/kit': 2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + '@sveltejs/kit': 2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) rw@1.3.3: {} @@ -23199,6 +23838,14 @@ snapshots: parse-srcset: 1.0.2 postcss: 8.5.6 + sass@1.97.1: + dependencies: + chokidar: 4.0.3 + immutable: 5.1.4 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.1 + sax@1.4.3: {} saxes@6.0.0: @@ -23452,6 +24099,8 @@ snapshots: simple-icons@15.22.0: {} + simple-icons@16.4.0: {} + sirv@2.0.4: dependencies: '@polka/url': 1.0.0-next.29 @@ -23490,42 +24139,42 @@ snapshots: dot-case: 3.0.4 tslib: 2.8.1 - socket.io-adapter@2.5.5: + socket.io-adapter@2.5.6: dependencies: - debug: 4.3.7 - ws: 8.17.1 + debug: 4.4.3 + ws: 8.18.3 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - socket.io-client@4.8.1: + socket.io-client@4.8.3: dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7 - engine.io-client: 6.6.3 - socket.io-parser: 4.2.4 + debug: 4.4.3 + engine.io-client: 6.6.4 + socket.io-parser: 4.2.5 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - socket.io-parser@4.2.4: + socket.io-parser@4.2.5: dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7 + debug: 4.4.3 transitivePeerDependencies: - supports-color - socket.io@4.8.1: + socket.io@4.8.3: dependencies: accepts: 1.3.8 base64id: 2.0.0 cors: 2.8.5 - debug: 4.3.7 - engine.io: 6.6.4 - socket.io-adapter: 2.5.5 - socket.io-parser: 4.2.4 + debug: 4.4.3 + engine.io: 6.6.5 + socket.io-adapter: 2.5.6 + socket.io-parser: 4.2.5 transitivePeerDependencies: - bufferutil - supports-color @@ -23716,6 +24365,8 @@ snapshots: dependencies: '@tokenizer/token': 0.3.0 + style-mod@4.1.3: {} + style-to-js@1.1.21: dependencies: style-to-object: 1.0.14 @@ -23779,19 +24430,23 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.3.4(picomatch@4.0.3)(svelte@5.43.3)(typescript@5.9.3): + svelte-awesome@3.3.5(svelte@5.46.1): + dependencies: + svelte: 5.46.1 + + svelte-check@4.3.5(picomatch@4.0.3)(svelte@5.46.1)(typescript@5.9.3): dependencies: '@jridgewell/trace-mapping': 0.3.31 chokidar: 4.0.3 fdir: 6.5.0(picomatch@4.0.3) picocolors: 1.1.1 sade: 1.8.1 - svelte: 5.43.3 + svelte: 5.46.1 typescript: 5.9.3 transitivePeerDependencies: - picomatch - svelte-eslint-parser@1.4.1(svelte@5.43.3): + svelte-eslint-parser@1.4.1(svelte@5.46.1): dependencies: eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -23800,7 +24455,12 @@ snapshots: postcss-scss: 4.0.9(postcss@8.5.6) postcss-selector-parser: 7.1.1 optionalDependencies: - svelte: 5.43.3 + svelte: 5.46.1 + + svelte-floating-ui@1.5.8: + dependencies: + '@floating-ui/core': 1.7.3 + '@floating-ui/dom': 1.7.4 svelte-gestures@5.2.2: {} @@ -23808,7 +24468,7 @@ snapshots: dependencies: highlight.js: 11.11.1 - svelte-i18n@4.0.1(svelte@5.43.3): + svelte-i18n@4.0.1(svelte@5.46.1): dependencies: cli-color: 2.0.4 deepmerge: 4.3.1 @@ -23816,36 +24476,72 @@ snapshots: estree-walker: 2.0.2 intl-messageformat: 10.7.18 sade: 1.8.1 - svelte: 5.43.3 + svelte: 5.46.1 tiny-glob: 0.2.9 - svelte-maplibre@1.2.5(svelte@5.43.3): + svelte-jsoneditor@3.11.0(svelte@5.46.1): + dependencies: + '@codemirror/autocomplete': 6.20.0 + '@codemirror/commands': 6.10.1 + '@codemirror/lang-json': 6.0.2 + '@codemirror/language': 6.12.1 + '@codemirror/lint': 6.9.2 + '@codemirror/search': 6.5.11 + '@codemirror/state': 6.5.3 + '@codemirror/view': 6.39.8 + '@fortawesome/free-regular-svg-icons': 7.1.0 + '@fortawesome/free-solid-svg-icons': 7.1.0 + '@jsonquerylang/jsonquery': 5.1.1 + '@lezer/highlight': 1.2.3 + '@replit/codemirror-indentation-markers': 6.5.3(@codemirror/language@6.12.1)(@codemirror/state@6.5.3)(@codemirror/view@6.39.8) + ajv: 8.17.1 + codemirror-wrapped-line-indent: 1.0.9(@codemirror/language@6.12.1)(@codemirror/state@6.5.3)(@codemirror/view@6.39.8) + diff-sequences: 29.6.3 + immutable-json-patch: 6.0.2 + jmespath: 0.16.0 + json-source-map: 0.6.1 + jsonpath-plus: 10.3.0 + jsonrepair: 3.13.1 + lodash-es: 4.17.22 + memoize-one: 6.0.0 + natural-compare-lite: 1.4.0 + sass: 1.97.1 + svelte: 5.46.1 + svelte-awesome: 3.3.5(svelte@5.46.1) + svelte-select: 5.8.3 + vanilla-picker: 2.12.3 + + svelte-maplibre@1.2.5(svelte@5.46.1): dependencies: d3-geo: 3.1.1 dequal: 2.0.3 just-compare: 2.3.0 - maplibre-gl: 5.14.0 + maplibre-gl: 5.15.0 pmtiles: 3.2.1 - svelte: 5.43.3 + svelte: 5.46.1 - svelte-parse-markup@0.1.5(svelte@5.43.3): + svelte-parse-markup@0.1.5(svelte@5.46.1): dependencies: - svelte: 5.43.3 + svelte: 5.46.1 - svelte-persisted-store@0.12.0(svelte@5.43.3): + svelte-persisted-store@0.12.0(svelte@5.46.1): dependencies: - svelte: 5.43.3 + svelte: 5.46.1 - svelte-toolbelt@0.10.6(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3): + svelte-select@5.8.3: + dependencies: + svelte-floating-ui: 1.5.8 + + svelte-toolbelt@0.10.6(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1): dependencies: clsx: 2.1.1 - runed: 0.35.1(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)))(svelte@5.43.3) + runed: 0.35.1(@sveltejs/kit@2.49.2(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.46.1) style-to-object: 1.0.14 - svelte: 5.43.3 + svelte: 5.46.1 transitivePeerDependencies: - '@sveltejs/kit' - svelte@5.43.3: + svelte@5.46.1: dependencies: '@jridgewell/remapping': 2.3.5 '@jridgewell/sourcemap-codec': 1.5.5 @@ -23855,6 +24551,7 @@ snapshots: aria-query: 5.3.2 axobject-query: 4.1.0 clsx: 2.1.1 + devalue: 5.6.1 esm-env: 1.2.2 esrap: 2.2.1 is-reference: 3.0.3 @@ -23905,21 +24602,21 @@ snapshots: optionalDependencies: tailwind-merge: 3.4.0 - tailwindcss-email-variants@3.0.5(tailwindcss@3.4.19(yaml@2.8.2)): + tailwindcss-email-variants@3.0.5(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2)): dependencies: - tailwindcss: 3.4.19(yaml@2.8.2) + tailwindcss: 3.4.19(tsx@4.21.0)(yaml@2.8.2) - tailwindcss-mso@2.0.3(tailwindcss@3.4.19(yaml@2.8.2)): + tailwindcss-mso@2.0.3(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2)): dependencies: - tailwindcss: 3.4.19(yaml@2.8.2) + tailwindcss: 3.4.19(tsx@4.21.0)(yaml@2.8.2) - tailwindcss-preset-email@1.4.1(tailwindcss@3.4.19(yaml@2.8.2)): + tailwindcss-preset-email@1.4.1(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2)): dependencies: - tailwindcss: 3.4.19(yaml@2.8.2) - tailwindcss-email-variants: 3.0.5(tailwindcss@3.4.19(yaml@2.8.2)) - tailwindcss-mso: 2.0.3(tailwindcss@3.4.19(yaml@2.8.2)) + tailwindcss: 3.4.19(tsx@4.21.0)(yaml@2.8.2) + tailwindcss-email-variants: 3.0.5(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2)) + tailwindcss-mso: 2.0.3(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2)) - tailwindcss@3.4.19(yaml@2.8.2): + tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -23938,7 +24635,7 @@ snapshots: postcss: 8.5.6 postcss-import: 15.1.0(postcss@8.5.6) postcss-js: 4.1.0(postcss@8.5.6) - postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.2) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2) postcss-nested: 6.2.0(postcss@8.5.6) postcss-selector-parser: 6.1.2 resolve: 1.22.11 @@ -24004,16 +24701,16 @@ snapshots: minizlib: 3.1.0 yallist: 5.0.0 - terser-webpack-plugin@5.3.16(@swc/core@1.15.5(@swc/helpers@0.5.17))(webpack@5.103.0(@swc/core@1.15.5(@swc/helpers@0.5.17))): + terser-webpack-plugin@5.3.16(@swc/core@1.15.8(@swc/helpers@0.5.17))(webpack@5.103.0(@swc/core@1.15.8(@swc/helpers@0.5.17))): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.44.1 - webpack: 5.103.0(@swc/core@1.15.5(@swc/helpers@0.5.17)) + webpack: 5.103.0(@swc/core@1.15.8(@swc/helpers@0.5.17)) optionalDependencies: - '@swc/core': 1.15.5(@swc/helpers@0.5.17) + '@swc/core': 1.15.8(@swc/helpers@0.5.17) terser-webpack-plugin@5.3.16(webpack@5.103.0): dependencies: @@ -24037,7 +24734,7 @@ snapshots: glob: 10.5.0 minimatch: 9.0.5 - testcontainers@11.10.0: + testcontainers@11.11.0: dependencies: '@balena/dockerignore': 1.0.2 '@types/dockerode': 3.3.47 @@ -24053,7 +24750,7 @@ snapshots: ssh-remote-port-forward: 1.0.4 tar-fs: 3.1.1 tmp: 0.2.5 - undici: 7.16.0 + undici: 7.18.0 transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -24125,6 +24822,14 @@ snapshots: tinyspy@4.0.4: {} + tldts-core@6.1.86: + optional: true + + tldts@6.1.86: + dependencies: + tldts-core: 6.1.86 + optional: true + tmp@0.2.5: {} to-regex-range@5.0.1: @@ -24138,9 +24843,9 @@ snapshots: toidentifier@1.0.1: {} - token-types@6.1.1: + token-types@6.1.2: dependencies: - '@borewit/text-codec': 0.1.1 + '@borewit/text-codec': 0.2.1 '@tokenizer/token': 0.3.0 ieee754: 1.2.1 @@ -24154,6 +24859,11 @@ snapshots: url-parse: 1.5.10 optional: true + tough-cookie@5.1.2: + dependencies: + tldts: 6.1.86 + optional: true + tr46@0.0.3: {} tr46@3.0.0: @@ -24161,6 +24871,11 @@ snapshots: punycode: 2.3.1 optional: true + tr46@5.1.1: + dependencies: + punycode: 2.3.1 + optional: true + tree-dump@1.1.0(tslib@2.8.1): dependencies: tslib: 2.8.1 @@ -24175,7 +24890,7 @@ snapshots: dependencies: utf8-byte-length: 1.0.5 - ts-api-utils@2.1.0(typescript@5.9.3): + ts-api-utils@2.4.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -24202,6 +24917,13 @@ snapshots: tsscmp@1.0.6: {} + tsx@4.21.0: + dependencies: + esbuild: 0.27.2 + get-tsconfig: 4.13.0 + optionalDependencies: + fsevents: 2.3.3 + tweetnacl@0.14.5: {} type-check@0.4.0: @@ -24233,12 +24955,12 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): + typescript-eslint@8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.51.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: @@ -24271,7 +24993,7 @@ snapshots: undici-types@7.16.0: {} - undici@7.16.0: {} + undici@7.18.0: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -24373,10 +25095,10 @@ snapshots: unpipe@1.0.0: {} - unplugin-swc@1.5.9(@swc/core@1.15.5(@swc/helpers@0.5.17))(rollup@4.53.4): + unplugin-swc@1.5.9(@swc/core@1.15.8(@swc/helpers@0.5.17))(rollup@4.53.4): dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.53.4) - '@swc/core': 1.15.5(@swc/helpers@0.5.17) + '@swc/core': 1.15.8(@swc/helpers@0.5.17) load-tsconfig: 0.2.5 unplugin: 2.3.11 transitivePeerDependencies: @@ -24468,10 +25190,14 @@ snapshots: uuid@8.3.2: {} - validator@13.15.23: {} + validator@13.15.26: {} value-equal@1.0.1: {} + vanilla-picker@2.12.3: + dependencies: + '@sphinxxxx/color-conversion': 2.2.2 + vary@1.1.2: {} vfile-location@3.2.0: {} @@ -24512,13 +25238,13 @@ snapshots: - rollup - supports-color - vite-node@3.2.4(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2): + vite-node@3.2.4(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' - jiti @@ -24533,20 +25259,41 @@ snapshots: - tsx - yaml - vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)): + vite-node@3.2.4(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + dependencies: + cac: 6.7.14 + debug: 4.4.3 + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite-tsconfig-paths@6.0.3(typescript@5.9.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) optionalDependencies: - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - typescript - vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2): + vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: - esbuild: 0.27.1 + esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 @@ -24557,22 +25304,42 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 lightningcss: 1.30.2 + sass: 1.97.1 terser: 5.44.1 + tsx: 4.21.0 yaml: 2.8.2 - vitefu@1.1.1(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)): - optionalDependencies: - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) - - vitest-fetch-mock@0.4.5(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@20.0.3(canvas@2.11.2))(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)): + vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@20.0.3(canvas@2.11.2))(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) + esbuild: 0.27.2 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.53.4 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 25.0.3 + fsevents: 2.3.3 + jiti: 2.6.1 + lightningcss: 1.30.2 + sass: 1.97.1 + terser: 5.44.1 + tsx: 4.21.0 + yaml: 2.8.2 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@20.0.3(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2): + vitefu@1.1.1(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): + optionalDependencies: + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + + vitest-fetch-mock@0.4.5(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): + dependencies: + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + '@vitest/mocker': 3.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -24590,14 +25357,14 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) - vite-node: 3.2.4(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite-node: 3.2.4(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 '@types/node': 24.10.4 happy-dom: 20.0.11 - jsdom: 20.0.3(canvas@2.11.2(encoding@0.1.13)) + jsdom: 26.1.0(canvas@2.11.2(encoding@0.1.13)) transitivePeerDependencies: - jiti - less @@ -24612,11 +25379,11 @@ snapshots: - tsx - yaml - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@20.0.3(canvas@2.11.2))(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.4)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)) + '@vitest/mocker': 3.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -24634,14 +25401,58 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) - vite-node: 3.2.4(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite-node: 3.2.4(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 '@types/node': 24.10.4 happy-dom: 20.0.11 - jsdom: 20.0.3(canvas@2.11.2) + jsdom: 26.1.0(canvas@2.11.2) + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.0.3)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + dependencies: + '@types/chai': 5.2.3 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/pretty-format': 3.2.4 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 + debug: 4.4.3 + expect-type: 1.3.0 + magic-string: 0.30.21 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 3.10.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tinypool: 1.1.1 + tinyrainbow: 2.0.0 + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite-node: 3.2.4(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/debug': 4.1.12 + '@types/node': 25.0.3 + happy-dom: 20.0.11 + jsdom: 26.1.0(canvas@2.11.2) transitivePeerDependencies: - jiti - less @@ -24662,11 +25473,18 @@ snapshots: '@mapbox/vector-tile': 1.3.1 pbf: 3.3.0 + w3c-keyname@2.2.8: {} + w3c-xmlserializer@4.0.0: dependencies: xml-name-validator: 4.0.0 optional: true + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + optional: true + watchpack@2.4.4: dependencies: glob-to-regexp: 0.4.1 @@ -24806,7 +25624,7 @@ snapshots: - esbuild - uglify-js - webpack@5.103.0(@swc/core@1.15.5(@swc/helpers@0.5.17)): + webpack@5.103.0(@swc/core@1.15.8(@swc/helpers@0.5.17)): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -24830,7 +25648,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.16(@swc/core@1.15.5(@swc/helpers@0.5.17))(webpack@5.103.0(@swc/core@1.15.5(@swc/helpers@0.5.17))) + terser-webpack-plugin: 5.3.16(@swc/core@1.15.8(@swc/helpers@0.5.17))(webpack@5.103.0(@swc/core@1.15.8(@swc/helpers@0.5.17))) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: @@ -24863,14 +25681,28 @@ snapshots: iconv-lite: 0.6.3 optional: true + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + optional: true + whatwg-mimetype@3.0.0: {} + whatwg-mimetype@4.0.0: + optional: true + whatwg-url@11.0.0: dependencies: tr46: 3.0.0 webidl-conversions: 7.0.0 optional: true + whatwg-url@14.2.0: + dependencies: + tr46: 5.1.1 + webidl-conversions: 7.0.0 + optional: true + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -24938,8 +25770,6 @@ snapshots: ws@7.5.10: {} - ws@8.17.1: {} - ws@8.18.3: {} wsl-utils@0.1.0: @@ -24955,6 +25785,9 @@ snapshots: xml-name-validator@4.0.0: optional: true + xml-name-validator@5.0.0: + optional: true + xmlchars@2.2.0: optional: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 33aaa744b0..f7f22e6f44 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,6 +2,8 @@ packages: - cli - docs - e2e + - e2e-auth-server + - i18n - open-api/typescript-sdk - server - plugins diff --git a/server/.nvmrc b/server/.nvmrc index 9e2934aa34..248216ad5b 100644 --- a/server/.nvmrc +++ b/server/.nvmrc @@ -1 +1 @@ -24.11.1 +24.12.0 diff --git a/server/Dockerfile b/server/Dockerfile index 918658e19f..566eb4c913 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -52,7 +52,7 @@ FROM builder AS plugins ARG TARGETPLATFORM -COPY --from=ghcr.io/jdx/mise:2025.11.3@sha256:ac26f5978c0e2783f3e68e58ce75eddb83e41b89bf8747c503bac2aa9baf22c5 /usr/local/bin/mise /usr/local/bin/mise +COPY --from=ghcr.io/jdx/mise:2026.1.1@sha256:a55c391f7582f34c58bce1a85090cd526596402ba77fc32b06c49b8404ef9c14 /usr/local/bin/mise /usr/local/bin/mise WORKDIR /usr/src/app COPY ./plugins/mise.toml ./plugins/ diff --git a/server/package.json b/server/package.json index 045bc950bd..81f1181e66 100644 --- a/server/package.json +++ b/server/package.json @@ -1,6 +1,6 @@ { "name": "immich", - "version": "2.3.1", + "version": "2.4.1", "description": "", "author": "", "private": true, @@ -47,7 +47,7 @@ "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/exporter-prometheus": "^0.208.0", "@opentelemetry/instrumentation-http": "^0.208.0", - "@opentelemetry/instrumentation-ioredis": "^0.56.0", + "@opentelemetry/instrumentation-ioredis": "^0.57.0", "@opentelemetry/instrumentation-nestjs-core": "^0.55.0", "@opentelemetry/instrumentation-pg": "^0.61.0", "@opentelemetry/resources": "^2.0.1", @@ -70,7 +70,7 @@ "cookie": "^1.0.2", "cookie-parser": "^1.4.7", "cron": "4.3.5", - "exiftool-vendored": "^34.0.0", + "exiftool-vendored": "^34.3.0", "express": "^5.1.0", "fast-glob": "^3.3.2", "fluent-ffmpeg": "^2.1.2", @@ -134,7 +134,7 @@ "@types/luxon": "^3.6.2", "@types/mock-fs": "^4.13.1", "@types/multer": "^2.0.0", - "@types/node": "^24.10.3", + "@types/node": "^24.10.4", "@types/nodemailer": "^7.0.0", "@types/picomatch": "^4.0.0", "@types/pngjs": "^6.0.5", @@ -162,11 +162,11 @@ "typescript": "^5.9.2", "typescript-eslint": "^8.28.0", "unplugin-swc": "^1.4.5", - "vite-tsconfig-paths": "^5.0.0", + "vite-tsconfig-paths": "^6.0.0", "vitest": "^3.0.0" }, "volta": { - "node": "24.11.1" + "node": "24.12.0" }, "overrides": { "sharp": "^0.34.5" diff --git a/server/src/constants.ts b/server/src/constants.ts index 33f8e3b4c5..96233429ff 100644 --- a/server/src/constants.ts +++ b/server/src/constants.ts @@ -5,7 +5,7 @@ import { SemVer } from 'semver'; import { ApiTag, DatabaseExtension, ExifOrientation, VectorIndex } from 'src/enum'; export const POSTGRES_VERSION_RANGE = '>=14.0.0'; -export const VECTORCHORD_VERSION_RANGE = '>=0.3 <0.6'; +export const VECTORCHORD_VERSION_RANGE = '>=0.3 <2'; export const VECTORS_VERSION_RANGE = '>=0.2 <0.4'; export const VECTOR_VERSION_RANGE = '>=0.5 <1'; diff --git a/server/src/controllers/asset-media.controller.ts b/server/src/controllers/asset-media.controller.ts index 843c2a3f3d..d52a40d7dd 100644 --- a/server/src/controllers/asset-media.controller.ts +++ b/server/src/controllers/asset-media.controller.ts @@ -15,7 +15,7 @@ import { UploadedFiles, UseInterceptors, } from '@nestjs/common'; -import { ApiBody, ApiConsumes, ApiHeader, ApiTags } from '@nestjs/swagger'; +import { ApiBody, ApiConsumes, ApiHeader, ApiResponse, ApiTags } from '@nestjs/swagger'; import { NextFunction, Request, Response } from 'express'; import { Endpoint, HistoryBuilder } from 'src/decorators'; import { @@ -62,6 +62,16 @@ export class AssetMediaController { required: false, }) @ApiBody({ description: 'Asset Upload Information', type: AssetMediaCreateDto }) + @ApiResponse({ + status: 200, + description: 'Asset is a duplicate', + type: AssetMediaResponseDto, + }) + @ApiResponse({ + status: 201, + description: 'Asset uploaded successfully', + type: AssetMediaResponseDto, + }) @Endpoint({ summary: 'Upload asset', description: 'Uploads a new asset to the server.', @@ -103,6 +113,11 @@ export class AssetMediaController { @Put(':id/original') @UseInterceptors(FileUploadInterceptor) @ApiConsumes('multipart/form-data') + @ApiResponse({ + status: 200, + description: 'Asset replaced successfully', + type: AssetMediaResponseDto, + }) @Endpoint({ summary: 'Replace asset', description: 'Replace the asset with new file, without changing its id.', diff --git a/server/src/controllers/asset.controller.spec.ts b/server/src/controllers/asset.controller.spec.ts index 649c80e850..56c9d18049 100644 --- a/server/src/controllers/asset.controller.spec.ts +++ b/server/src/controllers/asset.controller.spec.ts @@ -79,6 +79,74 @@ describe(AssetController.name, () => { }); }); + describe('PUT /assets/metadata', () => { + it('should be an authenticated route', async () => { + await request(ctx.getHttpServer()).put(`/assets/metadata`); + expect(ctx.authenticate).toHaveBeenCalled(); + }); + + it('should require a valid assetId', async () => { + const { status, body } = await request(ctx.getHttpServer()) + .put('/assets/metadata') + .send({ items: [{ assetId: '123', key: 'test', value: {} }] }); + expect(status).toBe(400); + expect(body).toEqual(factory.responses.badRequest(expect.arrayContaining(['items.0.assetId must be a UUID']))); + }); + + it('should require a key', async () => { + const { status, body } = await request(ctx.getHttpServer()) + .put('/assets/metadata') + .send({ items: [{ assetId: factory.uuid(), value: {} }] }); + expect(status).toBe(400); + expect(body).toEqual( + factory.responses.badRequest( + expect.arrayContaining(['items.0.key must be a string', 'items.0.key should not be empty']), + ), + ); + }); + + it('should work', async () => { + const { status } = await request(ctx.getHttpServer()) + .put('/assets/metadata') + .send({ items: [{ assetId: factory.uuid(), key: AssetMetadataKey.MobileApp, value: { iCloudId: '123' } }] }); + expect(status).toBe(200); + }); + }); + + describe('DELETE /assets/metadata', () => { + it('should be an authenticated route', async () => { + await request(ctx.getHttpServer()).delete(`/assets/metadata`); + expect(ctx.authenticate).toHaveBeenCalled(); + }); + + it('should require a valid assetId', async () => { + const { status, body } = await request(ctx.getHttpServer()) + .delete('/assets/metadata') + .send({ items: [{ assetId: '123', key: 'test' }] }); + expect(status).toBe(400); + expect(body).toEqual(factory.responses.badRequest(expect.arrayContaining(['items.0.assetId must be a UUID']))); + }); + + it('should require a key', async () => { + const { status, body } = await request(ctx.getHttpServer()) + .delete('/assets/metadata') + .send({ items: [{ assetId: factory.uuid() }] }); + expect(status).toBe(400); + expect(body).toEqual( + factory.responses.badRequest( + expect.arrayContaining(['items.0.key must be a string', 'items.0.key should not be empty']), + ), + ); + }); + + it('should work', async () => { + const { status } = await request(ctx.getHttpServer()) + .delete('/assets/metadata') + .send({ items: [{ assetId: factory.uuid(), key: AssetMetadataKey.MobileApp }] }); + expect(status).toBe(204); + }); + }); + describe('PUT /assets/:id', () => { it('should be an authenticated route', async () => { await request(ctx.getHttpServer()).get(`/assets/123`); @@ -169,12 +237,10 @@ describe(AssetController.name, () => { it('should require each item to have a valid key', async () => { const { status, body } = await request(ctx.getHttpServer()) .put(`/assets/${factory.uuid()}/metadata`) - .send({ items: [{ key: 'someKey' }] }); + .send({ items: [{ value: { some: 'value' } }] }); expect(status).toBe(400); expect(body).toEqual( - factory.responses.badRequest( - expect.arrayContaining([expect.stringContaining('items.0.key must be one of the following values')]), - ), + factory.responses.badRequest(['items.0.key must be a string', 'items.0.key should not be empty']), ); }); @@ -224,16 +290,6 @@ describe(AssetController.name, () => { expect(status).toBe(400); expect(body).toEqual(factory.responses.badRequest(expect.arrayContaining(['id must be a UUID']))); }); - - it('should require a valid key', async () => { - const { status, body } = await request(ctx.getHttpServer()).get(`/assets/${factory.uuid()}/metadata/invalid`); - expect(status).toBe(400); - expect(body).toEqual( - factory.responses.badRequest( - expect.arrayContaining([expect.stringContaining('key must be one of the following value')]), - ), - ); - }); }); describe('DELETE /assets/:id/metadata/:key', () => { @@ -247,13 +303,5 @@ describe(AssetController.name, () => { expect(status).toBe(400); expect(body).toEqual(factory.responses.badRequest(['id must be a UUID'])); }); - - it('should require a valid key', async () => { - const { status, body } = await request(ctx.getHttpServer()).delete(`/assets/${factory.uuid()}/metadata/invalid`); - expect(status).toBe(400); - expect(body).toEqual( - factory.responses.badRequest([expect.stringContaining('key must be one of the following values')]), - ); - }); }); }); diff --git a/server/src/controllers/asset.controller.ts b/server/src/controllers/asset.controller.ts index bcc13fbc06..ba9ec865f9 100644 --- a/server/src/controllers/asset.controller.ts +++ b/server/src/controllers/asset.controller.ts @@ -7,6 +7,9 @@ import { AssetBulkUpdateDto, AssetCopyDto, AssetJobsDto, + AssetMetadataBulkDeleteDto, + AssetMetadataBulkResponseDto, + AssetMetadataBulkUpsertDto, AssetMetadataResponseDto, AssetMetadataRouteParams, AssetMetadataUpsertDto, @@ -120,6 +123,32 @@ export class AssetController { return this.service.copy(auth, dto); } + @Put('metadata') + @Authenticated({ permission: Permission.AssetUpdate }) + @Endpoint({ + summary: 'Upsert asset metadata', + description: 'Upsert metadata key-value pairs for multiple assets.', + history: new HistoryBuilder().added('v1').beta('v2.5.0'), + }) + updateBulkAssetMetadata( + @Auth() auth: AuthDto, + @Body() dto: AssetMetadataBulkUpsertDto, + ): Promise { + return this.service.upsertBulkMetadata(auth, dto); + } + + @Delete('metadata') + @Authenticated({ permission: Permission.AssetUpdate }) + @HttpCode(HttpStatus.NO_CONTENT) + @Endpoint({ + summary: 'Delete asset metadata', + description: 'Delete metadata key-value pairs for multiple assets.', + history: new HistoryBuilder().added('v1').beta('v2.5.0'), + }) + deleteBulkAssetMetadata(@Auth() auth: AuthDto, @Body() dto: AssetMetadataBulkDeleteDto): Promise { + return this.service.deleteBulkMetadata(auth, dto); + } + @Put(':id') @Authenticated({ permission: Permission.AssetUpdate }) @Endpoint({ diff --git a/server/src/controllers/plugin.controller.ts b/server/src/controllers/plugin.controller.ts index a0a4d14b0b..52c833e93d 100644 --- a/server/src/controllers/plugin.controller.ts +++ b/server/src/controllers/plugin.controller.ts @@ -1,7 +1,7 @@ import { Controller, Get, Param } from '@nestjs/common'; import { ApiTags } from '@nestjs/swagger'; import { Endpoint, HistoryBuilder } from 'src/decorators'; -import { PluginResponseDto } from 'src/dtos/plugin.dto'; +import { PluginResponseDto, PluginTriggerResponseDto } from 'src/dtos/plugin.dto'; import { Permission } from 'src/enum'; import { Authenticated } from 'src/middleware/auth.guard'; import { PluginService } from 'src/services/plugin.service'; @@ -12,6 +12,17 @@ import { UUIDParamDto } from 'src/validation'; export class PluginController { constructor(private service: PluginService) {} + @Get('triggers') + @Authenticated({ permission: Permission.PluginRead }) + @Endpoint({ + summary: 'List all plugin triggers', + description: 'Retrieve a list of all available plugin triggers.', + history: new HistoryBuilder().added('v2.3.0').alpha('v2.3.0'), + }) + getPluginTriggers(): PluginTriggerResponseDto[] { + return this.service.getTriggers(); + } + @Get() @Authenticated({ permission: Permission.PluginRead }) @Endpoint({ diff --git a/server/src/dtos/asset-media.dto.ts b/server/src/dtos/asset-media.dto.ts index 755069d827..262e2f9637 100644 --- a/server/src/dtos/asset-media.dto.ts +++ b/server/src/dtos/asset-media.dto.ts @@ -78,7 +78,7 @@ export class AssetMediaCreateDto extends AssetMediaBase { @Optional() @ValidateNested({ each: true }) @IsArray() - metadata!: AssetMetadataUpsertItemDto[]; + metadata?: AssetMetadataUpsertItemDto[]; @ApiProperty({ type: 'string', format: 'binary', required: false }) [UploadFieldName.SIDECAR_DATA]?: any; diff --git a/server/src/dtos/asset.dto.ts b/server/src/dtos/asset.dto.ts index 03d1e31fb9..854c244ba9 100644 --- a/server/src/dtos/asset.dto.ts +++ b/server/src/dtos/asset.dto.ts @@ -17,9 +17,9 @@ import { ValidateNested, } from 'class-validator'; import { BulkIdsDto } from 'src/dtos/asset-ids.response.dto'; -import { AssetMetadataKey, AssetType, AssetVisibility } from 'src/enum'; +import { AssetType, AssetVisibility } from 'src/enum'; import { AssetStats } from 'src/repositories/asset.repository'; -import { IsNotSiblingOf, Optional, ValidateBoolean, ValidateEnum, ValidateUUID } from 'src/validation'; +import { IsNotSiblingOf, Optional, ValidateBoolean, ValidateEnum, ValidateString, ValidateUUID } from 'src/validation'; export class DeviceIdDto { @IsNotEmpty() @@ -142,8 +142,8 @@ export class AssetMetadataRouteParams { @ValidateUUID() id!: string; - @ValidateEnum({ enum: AssetMetadataKey, name: 'AssetMetadataKey' }) - key!: AssetMetadataKey; + @ValidateString() + key!: string; } export class AssetMetadataUpsertDto { @@ -154,26 +154,57 @@ export class AssetMetadataUpsertDto { } export class AssetMetadataUpsertItemDto { - @ValidateEnum({ enum: AssetMetadataKey, name: 'AssetMetadataKey' }) - key!: AssetMetadataKey; + @ValidateString() + key!: string; @IsObject() value!: object; } -export class AssetMetadataMobileAppDto { - @IsString() - @Optional() - iCloudId?: string; +export class AssetMetadataBulkUpsertDto { + @IsArray() + @ValidateNested({ each: true }) + @Type(() => AssetMetadataBulkUpsertItemDto) + items!: AssetMetadataBulkUpsertItemDto[]; +} + +export class AssetMetadataBulkUpsertItemDto { + @ValidateUUID() + assetId!: string; + + @ValidateString() + key!: string; + + @IsObject() + value!: object; +} + +export class AssetMetadataBulkDeleteDto { + @IsArray() + @ValidateNested({ each: true }) + @Type(() => AssetMetadataBulkDeleteItemDto) + items!: AssetMetadataBulkDeleteItemDto[]; +} + +export class AssetMetadataBulkDeleteItemDto { + @ValidateUUID() + assetId!: string; + + @ValidateString() + key!: string; } export class AssetMetadataResponseDto { - @ValidateEnum({ enum: AssetMetadataKey, name: 'AssetMetadataKey' }) - key!: AssetMetadataKey; + @ValidateString() + key!: string; value!: object; updatedAt!: Date; } +export class AssetMetadataBulkResponseDto extends AssetMetadataResponseDto { + assetId!: string; +} + export class AssetCopyDto { @ValidateUUID() sourceId!: string; diff --git a/server/src/dtos/env.dto.ts b/server/src/dtos/env.dto.ts index 2a9dd8b662..e088a33413 100644 --- a/server/src/dtos/env.dto.ts +++ b/server/src/dtos/env.dto.ts @@ -1,6 +1,6 @@ import { Transform, Type } from 'class-transformer'; import { IsEnum, IsInt, IsString, Matches } from 'class-validator'; -import { DatabaseSslMode, ImmichEnvironment, LogLevel } from 'src/enum'; +import { DatabaseSslMode, ImmichEnvironment, LogFormat, LogLevel } from 'src/enum'; import { IsIPRange, Optional, ValidateBoolean } from 'src/validation'; export class EnvDto { @@ -48,6 +48,10 @@ export class EnvDto { @Optional() IMMICH_LOG_LEVEL?: LogLevel; + @IsEnum(LogFormat) + @Optional() + IMMICH_LOG_FORMAT?: LogFormat; + @Optional() @Matches(/^\//, { message: 'IMMICH_MEDIA_LOCATION must be an absolute path' }) IMMICH_MEDIA_LOCATION?: string; @@ -58,7 +62,7 @@ export class EnvDto { IMMICH_MICROSERVICES_METRICS_PORT?: number; @ValidateBoolean({ optional: true }) - IMMICH_PLUGINS_ENABLED?: boolean; + IMMICH_ALLOW_EXTERNAL_PLUGINS?: boolean; @Optional() @Matches(/^\//, { message: 'IMMICH_PLUGINS_INSTALL_FOLDER must be an absolute path' }) @@ -113,6 +117,9 @@ export class EnvDto { @Optional() IMMICH_THIRD_PARTY_SUPPORT_URL?: string; + @ValidateBoolean({ optional: true }) + IMMICH_ALLOW_SETUP?: boolean; + @IsIPRange({ requireCIDR: false }, { each: true }) @Transform(({ value }) => value && typeof value === 'string' diff --git a/server/src/dtos/plugin.dto.ts b/server/src/dtos/plugin.dto.ts index ce80eccd65..a802bb1201 100644 --- a/server/src/dtos/plugin.dto.ts +++ b/server/src/dtos/plugin.dto.ts @@ -1,9 +1,16 @@ import { IsNotEmpty, IsString } from 'class-validator'; import { PluginAction, PluginFilter } from 'src/database'; -import { PluginContext } from 'src/enum'; +import { PluginContext as PluginContextType, PluginTriggerType } from 'src/enum'; import type { JSONSchema } from 'src/types/plugin-schema.types'; import { ValidateEnum } from 'src/validation'; +export class PluginTriggerResponseDto { + @ValidateEnum({ enum: PluginTriggerType, name: 'PluginTriggerType' }) + type!: PluginTriggerType; + @ValidateEnum({ enum: PluginContextType, name: 'PluginContextType' }) + contextType!: PluginContextType; +} + export class PluginResponseDto { id!: string; name!: string; @@ -24,8 +31,8 @@ export class PluginFilterResponseDto { title!: string; description!: string; - @ValidateEnum({ enum: PluginContext, name: 'PluginContext' }) - supportedContexts!: PluginContext[]; + @ValidateEnum({ enum: PluginContextType, name: 'PluginContextType' }) + supportedContexts!: PluginContextType[]; schema!: JSONSchema | null; } @@ -36,8 +43,8 @@ export class PluginActionResponseDto { title!: string; description!: string; - @ValidateEnum({ enum: PluginContext, name: 'PluginContext' }) - supportedContexts!: PluginContext[]; + @ValidateEnum({ enum: PluginContextType, name: 'PluginContextType' }) + supportedContexts!: PluginContextType[]; schema!: JSONSchema | null; } diff --git a/server/src/dtos/shared-link.dto.ts b/server/src/dtos/shared-link.dto.ts index 011707f1f7..82698ebddc 100644 --- a/server/src/dtos/shared-link.dto.ts +++ b/server/src/dtos/shared-link.dto.ts @@ -1,7 +1,7 @@ import { ApiProperty } from '@nestjs/swagger'; import { IsString } from 'class-validator'; -import _ from 'lodash'; import { SharedLink } from 'src/database'; +import { HistoryBuilder, Property } from 'src/decorators'; import { AlbumResponseDto, mapAlbumWithoutAssets } from 'src/dtos/album.dto'; import { AssetResponseDto, mapAsset } from 'src/dtos/asset-response.dto'; import { SharedLinkType } from 'src/enum'; @@ -10,6 +10,10 @@ import { Optional, ValidateBoolean, ValidateDate, ValidateEnum, ValidateUUID } f export class SharedLinkSearchDto { @ValidateUUID({ optional: true }) albumId?: string; + + @ValidateUUID({ optional: true }) + @Property({ history: new HistoryBuilder().added('v2.5.0') }) + id?: string; } export class SharedLinkCreateDto { @@ -113,10 +117,10 @@ export class SharedLinkResponseDto { slug!: string | null; } -export function mapSharedLink(sharedLink: SharedLink): SharedLinkResponseDto { - const linkAssets = sharedLink.assets || []; +export function mapSharedLink(sharedLink: SharedLink, options: { stripAssetMetadata: boolean }): SharedLinkResponseDto { + const assets = sharedLink.assets || []; - return { + const response = { id: sharedLink.id, description: sharedLink.description, password: sharedLink.password, @@ -125,35 +129,19 @@ export function mapSharedLink(sharedLink: SharedLink): SharedLinkResponseDto { type: sharedLink.type, createdAt: sharedLink.createdAt, expiresAt: sharedLink.expiresAt, - assets: linkAssets.map((asset) => mapAsset(asset)), - album: sharedLink.album ? mapAlbumWithoutAssets(sharedLink.album) : undefined, - allowUpload: sharedLink.allowUpload, - allowDownload: sharedLink.allowDownload, - showMetadata: sharedLink.showExif, - slug: sharedLink.slug, - }; -} - -export function mapSharedLinkWithoutMetadata(sharedLink: SharedLink): SharedLinkResponseDto { - const linkAssets = sharedLink.assets || []; - const albumAssets = (sharedLink?.album?.assets || []).map((asset) => asset); - - const assets = _.uniqBy([...linkAssets, ...albumAssets], (asset) => asset.id); - - return { - id: sharedLink.id, - description: sharedLink.description, - password: sharedLink.password, - userId: sharedLink.userId, - key: sharedLink.key.toString('base64url'), - type: sharedLink.type, - createdAt: sharedLink.createdAt, - expiresAt: sharedLink.expiresAt, - assets: assets.map((asset) => mapAsset(asset, { stripMetadata: true })), + assets: assets.map((asset) => mapAsset(asset, { stripMetadata: options.stripAssetMetadata })), album: sharedLink.album ? mapAlbumWithoutAssets(sharedLink.album) : undefined, allowUpload: sharedLink.allowUpload, allowDownload: sharedLink.allowDownload, showMetadata: sharedLink.showExif, slug: sharedLink.slug, }; + + // unless we select sharedLink.album.sharedLinks this will be wrong + if (response.album) { + response.album.hasSharedLink = true; + response.album.shared = true; + } + + return response; } diff --git a/server/src/dtos/sync.dto.ts b/server/src/dtos/sync.dto.ts index d6a557e2c5..7f811af371 100644 --- a/server/src/dtos/sync.dto.ts +++ b/server/src/dtos/sync.dto.ts @@ -4,7 +4,6 @@ import { ArrayMaxSize, IsInt, IsPositive, IsString } from 'class-validator'; import { AssetResponseDto } from 'src/dtos/asset-response.dto'; import { AlbumUserRole, - AssetMetadataKey, AssetOrder, AssetType, AssetVisibility, @@ -167,16 +166,14 @@ export class SyncAssetExifV1 { @ExtraModel() export class SyncAssetMetadataV1 { assetId!: string; - @ValidateEnum({ enum: AssetMetadataKey, name: 'AssetMetadataKey' }) - key!: AssetMetadataKey; + key!: string; value!: object; } @ExtraModel() export class SyncAssetMetadataDeleteV1 { assetId!: string; - @ValidateEnum({ enum: AssetMetadataKey, name: 'AssetMetadataKey' }) - key!: AssetMetadataKey; + key!: string; } @ExtraModel() diff --git a/server/src/dtos/workflow.dto.ts b/server/src/dtos/workflow.dto.ts index 7bfb90e11f..2dbff3b5e4 100644 --- a/server/src/dtos/workflow.dto.ts +++ b/server/src/dtos/workflow.dto.ts @@ -48,6 +48,9 @@ export class WorkflowCreateDto { } export class WorkflowUpdateDto { + @ValidateEnum({ enum: PluginTriggerType, name: 'PluginTriggerType', optional: true }) + triggerType?: PluginTriggerType; + @IsString() @IsNotEmpty() @Optional() @@ -74,6 +77,7 @@ export class WorkflowUpdateDto { export class WorkflowResponseDto { id!: string; ownerId!: string; + @ValidateEnum({ enum: PluginTriggerType, name: 'PluginTriggerType' }) triggerType!: PluginTriggerType; name!: string | null; description!: string; diff --git a/server/src/emails/components/footer.template.tsx b/server/src/emails/components/footer.template.tsx index c84246bf87..324d7dc003 100644 --- a/server/src/emails/components/footer.template.tsx +++ b/server/src/emails/components/footer.template.tsx @@ -7,14 +7,22 @@ export const ImmichFooter = () => (
- + Get it on Google Play
- Immich + Download on the App Store
diff --git a/server/src/enum.ts b/server/src/enum.ts index 9d0a2c0426..b150cdbfb3 100644 --- a/server/src/enum.ts +++ b/server/src/enum.ts @@ -454,6 +454,11 @@ export enum LogLevel { Fatal = 'fatal', } +export enum LogFormat { + Console = 'console', + Json = 'json', +} + export enum ApiCustomExtension { Permission = 'x-immich-permission', AdminOnly = 'x-immich-admin-only', diff --git a/server/src/maintenance/maintenance-websocket.repository.ts b/server/src/maintenance/maintenance-websocket.repository.ts index 5d8368cf69..cf04c0ad12 100644 --- a/server/src/maintenance/maintenance-websocket.repository.ts +++ b/server/src/maintenance/maintenance-websocket.repository.ts @@ -37,7 +37,13 @@ export class MaintenanceWebsocketRepository implements OnGatewayConnection, OnGa afterInit(websocketServer: Server) { this.logger.log('Initialized websocket server'); - websocketServer.on('AppRestart', () => this.appRepository.exitApp()); + + websocketServer.on('AppRestart', (event: ArgsOf<'AppRestart'>, ack?: (ok: 'ok') => void) => { + this.logger.log(`Restarting due to event... ${JSON.stringify(event)}`); + + ack?.('ok'); + this.appRepository.exitApp(); + }); } clientBroadcast(event: T, ...data: ClientEventMap[T]) { diff --git a/server/src/plugins.ts b/server/src/plugins.ts index 0c69483696..77f35e79f6 100644 --- a/server/src/plugins.ts +++ b/server/src/plugins.ts @@ -1,37 +1,17 @@ import { PluginContext, PluginTriggerType } from 'src/enum'; -import { JSONSchema } from 'src/types/plugin-schema.types'; export type PluginTrigger = { - name: string; type: PluginTriggerType; - description: string; - context: PluginContext; - schema: JSONSchema | null; + contextType: PluginContext; }; export const pluginTriggers: PluginTrigger[] = [ { - name: 'Asset Uploaded', type: PluginTriggerType.AssetCreate, - description: 'Triggered when a new asset is uploaded', - context: PluginContext.Asset, - schema: { - type: 'object', - properties: { - assetType: { - type: 'string', - description: 'Type of the asset', - default: 'ALL', - enum: ['Image', 'Video', 'All'], - }, - }, - }, + contextType: PluginContext.Asset, }, { - name: 'Person Recognized', type: PluginTriggerType.PersonRecognized, - description: 'Triggered when a person is detected in an asset', - context: PluginContext.Person, - schema: null, + contextType: PluginContext.Person, }, ]; diff --git a/server/src/queries/asset.job.repository.sql b/server/src/queries/asset.job.repository.sql index b736998e28..ae2b5110c2 100644 --- a/server/src/queries/asset.job.repository.sql +++ b/server/src/queries/asset.job.repository.sql @@ -493,6 +493,9 @@ select "asset"."fileCreatedAt", "asset_exif"."timeZone", "asset_exif"."fileSizeInByte", + "asset_exif"."make", + "asset_exif"."model", + "asset_exif"."lensModel", ( select coalesce(json_agg(agg), '[]') @@ -529,6 +532,9 @@ select "asset"."fileCreatedAt", "asset_exif"."timeZone", "asset_exif"."fileSizeInByte", + "asset_exif"."make", + "asset_exif"."model", + "asset_exif"."lensModel", ( select coalesce(json_agg(agg), '[]') diff --git a/server/src/queries/asset.repository.sql b/server/src/queries/asset.repository.sql index f25a0798d2..27e40139e1 100644 --- a/server/src/queries/asset.repository.sql +++ b/server/src/queries/asset.repository.sql @@ -76,6 +76,14 @@ where "assetId" = $1 and "key" = $2 +-- AssetRepository.deleteBulkMetadata +begin +delete from "asset_metadata" +where + "assetId" = $1 + and "key" = $2 +commit + -- AssetRepository.getByDayOfYear with "res" as ( diff --git a/server/src/queries/workflow.repository.sql b/server/src/queries/workflow.repository.sql index 3797c5bb06..27dc21dffe 100644 --- a/server/src/queries/workflow.repository.sql +++ b/server/src/queries/workflow.repository.sql @@ -7,6 +7,8 @@ from "workflow" where "id" = $1 +order by + "createdAt" desc -- WorkflowRepository.getWorkflowsByOwner select @@ -16,7 +18,7 @@ from where "ownerId" = $1 order by - "name" + "createdAt" desc -- WorkflowRepository.getWorkflowsByTrigger select diff --git a/server/src/repositories/app.repository.ts b/server/src/repositories/app.repository.ts index e6181ef7f3..96e413232f 100644 --- a/server/src/repositories/app.repository.ts +++ b/server/src/repositories/app.repository.ts @@ -1,5 +1,10 @@ import { Injectable } from '@nestjs/common'; +import { createAdapter } from '@socket.io/redis-adapter'; +import Redis from 'ioredis'; +import { Server as SocketIO } from 'socket.io'; import { ExitCode } from 'src/enum'; +import { ConfigRepository } from 'src/repositories/config.repository'; +import { AppRestartEvent } from 'src/repositories/event.repository'; @Injectable() export class AppRepository { @@ -17,4 +22,26 @@ export class AppRepository { setCloseFn(fn: () => Promise) { this.closeFn = fn; } + + async sendOneShotAppRestart(state: AppRestartEvent): Promise { + const server = new SocketIO(); + const { redis } = new ConfigRepository().getEnv(); + const pubClient = new Redis({ ...redis, lazyConnect: true }); + const subClient = pubClient.duplicate(); + + await Promise.all([pubClient.connect(), subClient.connect()]); + + server.adapter(createAdapter(pubClient, subClient)); + + // => corresponds to notification.service.ts#onAppRestart + server.emit('AppRestartV1', state, async () => { + const responses = await server.serverSideEmitWithAck('AppRestart', state); + if (responses.some((response) => response !== 'ok')) { + throw new Error("One or more node(s) returned a non-'ok' response to our restart request!"); + } + + pubClient.disconnect(); + subClient.disconnect(); + }); + } } diff --git a/server/src/repositories/asset-job.repository.ts b/server/src/repositories/asset-job.repository.ts index 214d42747f..8beb053aac 100644 --- a/server/src/repositories/asset-job.repository.ts +++ b/server/src/repositories/asset-job.repository.ts @@ -324,6 +324,9 @@ export class AssetJobRepository { 'asset.fileCreatedAt', 'asset_exif.timeZone', 'asset_exif.fileSizeInByte', + 'asset_exif.make', + 'asset_exif.model', + 'asset_exif.lensModel', ]) .select((eb) => withFiles(eb, AssetFileType.Sidecar)) .where('asset.deletedAt', 'is', null); diff --git a/server/src/repositories/asset.repository.ts b/server/src/repositories/asset.repository.ts index 7db3a76f12..e1d16b8a6a 100644 --- a/server/src/repositories/asset.repository.ts +++ b/server/src/repositories/asset.repository.ts @@ -5,11 +5,12 @@ import { InjectKysely } from 'nestjs-kysely'; import { LockableProperty, Stack } from 'src/database'; import { Chunked, ChunkedArray, DummyValue, GenerateSql } from 'src/decorators'; import { AuthDto } from 'src/dtos/auth.dto'; -import { AssetFileType, AssetMetadataKey, AssetOrder, AssetStatus, AssetType, AssetVisibility } from 'src/enum'; +import { AssetFileType, AssetOrder, AssetStatus, AssetType, AssetVisibility } from 'src/enum'; import { DB } from 'src/schema'; import { AssetExifTable } from 'src/schema/tables/asset-exif.table'; import { AssetFileTable } from 'src/schema/tables/asset-file.table'; import { AssetJobStatusTable } from 'src/schema/tables/asset-job-status.table'; +import { AssetMetadataTable } from 'src/schema/tables/asset-metadata.table'; import { AssetTable } from 'src/schema/tables/asset.table'; import { anyUuid, @@ -256,7 +257,11 @@ export class AssetRepository { .execute(); } - upsertMetadata(id: string, items: Array<{ key: AssetMetadataKey; value: object }>) { + upsertMetadata(id: string, items: Array<{ key: string; value: object }>) { + if (items.length === 0) { + return []; + } + return this.db .insertInto('asset_metadata') .values(items.map((item) => ({ assetId: id, ...item }))) @@ -269,8 +274,21 @@ export class AssetRepository { .execute(); } + upsertBulkMetadata(items: Insertable[]) { + return this.db + .insertInto('asset_metadata') + .values(items) + .onConflict((oc) => + oc + .columns(['assetId', 'key']) + .doUpdateSet((eb) => ({ key: eb.ref('excluded.key'), value: eb.ref('excluded.value') })), + ) + .returning(['assetId', 'key', 'value', 'updatedAt']) + .execute(); + } + @GenerateSql({ params: [DummyValue.UUID, DummyValue.STRING] }) - getMetadataByKey(assetId: string, key: AssetMetadataKey) { + getMetadataByKey(assetId: string, key: string) { return this.db .selectFrom('asset_metadata') .select(['key', 'value', 'updatedAt']) @@ -280,10 +298,23 @@ export class AssetRepository { } @GenerateSql({ params: [DummyValue.UUID, DummyValue.STRING] }) - async deleteMetadataByKey(id: string, key: AssetMetadataKey) { + async deleteMetadataByKey(id: string, key: string) { await this.db.deleteFrom('asset_metadata').where('assetId', '=', id).where('key', '=', key).execute(); } + @GenerateSql({ params: [[{ assetId: DummyValue.UUID, key: DummyValue.STRING }]] }) + async deleteBulkMetadata(items: Array<{ assetId: string; key: string }>) { + if (items.length === 0) { + return; + } + + await this.db.transaction().execute(async (tx) => { + for (const { assetId, key } of items) { + await tx.deleteFrom('asset_metadata').where('assetId', '=', assetId).where('key', '=', key).execute(); + } + }); + } + create(asset: Insertable) { return this.db.insertInto('asset').values(asset).returningAll().executeTakeFirstOrThrow(); } diff --git a/server/src/repositories/config.repository.spec.ts b/server/src/repositories/config.repository.spec.ts index 1641850583..a3dc8ba5cb 100644 --- a/server/src/repositories/config.repository.spec.ts +++ b/server/src/repositories/config.repository.spec.ts @@ -8,6 +8,8 @@ const getEnv = () => { const resetEnv = () => { for (const env of [ + 'IMMICH_ALLOW_EXTERNAL_PLUGINS', + 'IMMICH_ALLOW_SETUP', 'IMMICH_ENV', 'IMMICH_WORKERS_INCLUDE', 'IMMICH_WORKERS_EXCLUDE', @@ -75,6 +77,9 @@ describe('getEnv', () => { configFile: undefined, logLevel: undefined, }); + + expect(config.plugins.external).toEqual({ allow: false }); + expect(config.setup).toEqual({ allow: true }); }); describe('IMMICH_MEDIA_LOCATION', () => { @@ -84,6 +89,32 @@ describe('getEnv', () => { }); }); + describe('IMMICH_ALLOW_EXTERNAL_PLUGINS', () => { + it('should disable plugins', () => { + process.env.IMMICH_ALLOW_EXTERNAL_PLUGINS = 'false'; + const config = getEnv(); + expect(config.plugins.external).toEqual({ allow: false }); + }); + + it('should throw an error for invalid value', () => { + process.env.IMMICH_ALLOW_EXTERNAL_PLUGINS = 'invalid'; + expect(() => getEnv()).toThrowError('IMMICH_ALLOW_EXTERNAL_PLUGINS must be a boolean value'); + }); + }); + + describe('IMMICH_ALLOW_SETUP', () => { + it('should disable setup', () => { + process.env.IMMICH_ALLOW_SETUP = 'false'; + const { setup } = getEnv(); + expect(setup).toEqual({ allow: false }); + }); + + it('should throw an error for invalid value', () => { + process.env.IMMICH_ALLOW_SETUP = 'invalid'; + expect(() => getEnv()).toThrowError('IMMICH_ALLOW_SETUP must be a boolean value'); + }); + }); + describe('database', () => { it('should use defaults', () => { const { database } = getEnv(); diff --git a/server/src/repositories/config.repository.ts b/server/src/repositories/config.repository.ts index 60ec021b3b..54a5d1987f 100644 --- a/server/src/repositories/config.repository.ts +++ b/server/src/repositories/config.repository.ts @@ -17,6 +17,7 @@ import { ImmichHeader, ImmichTelemetry, ImmichWorker, + LogFormat, LogLevel, QueueName, } from 'src/enum'; @@ -29,6 +30,7 @@ export interface EnvData { environment: ImmichEnvironment; configFile?: string; logLevel?: LogLevel; + logFormat?: LogFormat; buildMetadata: { build?: string; @@ -90,6 +92,10 @@ export interface EnvData { redis: RedisOptions; + setup: { + allow: boolean; + }; + telemetry: { apiPort: number; microservicesPort: number; @@ -104,8 +110,10 @@ export interface EnvData { workers: ImmichWorker[]; plugins: { - enabled: boolean; - installFolder?: string; + external: { + allow: boolean; + installFolder?: string; + }; }; noColor: boolean; @@ -227,6 +235,7 @@ const getEnv = (): EnvData => { environment, configFile: dto.IMMICH_CONFIG_FILE, logLevel: dto.IMMICH_LOG_LEVEL, + logFormat: dto.IMMICH_LOG_FORMAT || LogFormat.Console, buildMetadata: { build: dto.IMMICH_BUILD, @@ -313,6 +322,10 @@ const getEnv = (): EnvData => { corePlugin: join(buildFolder, 'corePlugin'), }, + setup: { + allow: dto.IMMICH_ALLOW_SETUP ?? true, + }, + storage: { ignoreMountCheckErrors: !!dto.IMMICH_IGNORE_MOUNT_CHECK_ERRORS, mediaLocation: dto.IMMICH_MEDIA_LOCATION, @@ -327,8 +340,10 @@ const getEnv = (): EnvData => { workers, plugins: { - enabled: !!dto.IMMICH_PLUGINS_ENABLED, - installFolder: dto.IMMICH_PLUGINS_INSTALL_FOLDER, + external: { + allow: dto.IMMICH_ALLOW_EXTERNAL_PLUGINS ?? false, + installFolder: dto.IMMICH_PLUGINS_INSTALL_FOLDER, + }, }, noColor: !!dto.NO_COLOR, diff --git a/server/src/repositories/database.repository.ts b/server/src/repositories/database.repository.ts index 0fbaabf930..55ed2c1176 100644 --- a/server/src/repositories/database.repository.ts +++ b/server/src/repositories/database.repository.ts @@ -358,7 +358,7 @@ export class DatabaseRepository { } async runMigrations(): Promise { - this.logger.debug('Running migrations'); + this.logger.log('Running migrations'); const migrator = this.createMigrator(); @@ -379,7 +379,7 @@ export class DatabaseRepository { throw error; } - this.logger.debug('Finished running migrations'); + this.logger.log('Finished running migrations'); } async migrateFilePaths(sourceFolder: string, targetFolder: string): Promise { diff --git a/server/src/repositories/logging.repository.ts b/server/src/repositories/logging.repository.ts index 576ee6c810..39867b14d0 100644 --- a/server/src/repositories/logging.repository.ts +++ b/server/src/repositories/logging.repository.ts @@ -2,7 +2,7 @@ import { ConsoleLogger, Inject, Injectable, Scope } from '@nestjs/common'; import { isLogLevelEnabled } from '@nestjs/common/services/utils/is-log-level-enabled.util'; import { ClsService } from 'nestjs-cls'; import { Telemetry } from 'src/decorators'; -import { LogLevel } from 'src/enum'; +import { LogFormat, LogLevel } from 'src/enum'; import { ConfigRepository } from 'src/repositories/config.repository'; type LogDetails = any; @@ -27,10 +27,12 @@ export class MyConsoleLogger extends ConsoleLogger { constructor( private cls: ClsService | undefined, - options?: { color?: boolean; context?: string }, + options?: { json?: boolean; color?: boolean; context?: string }, ) { - super(options?.context || MyConsoleLogger.name); - this.isColorEnabled = options?.color || false; + super(options?.context || MyConsoleLogger.name, { + json: options?.json ?? false, + }); + this.isColorEnabled = !options?.json && (options?.color || false); } isLevelEnabled(level: LogLevel) { @@ -79,10 +81,17 @@ export class LoggingRepository { @Inject(ConfigRepository) configRepository: ConfigRepository | undefined, ) { let noColor = false; + let logFormat = LogFormat.Console; if (configRepository) { - noColor = configRepository.getEnv().noColor; + const env = configRepository.getEnv(); + noColor = env.noColor; + logFormat = env.logFormat ?? logFormat; } - this.logger = new MyConsoleLogger(cls, { context: LoggingRepository.name, color: !noColor }); + this.logger = new MyConsoleLogger(cls, { + context: LoggingRepository.name, + json: logFormat === LogFormat.Json, + color: !noColor, + }); } static create(context?: string) { diff --git a/server/src/repositories/shared-link.repository.ts b/server/src/repositories/shared-link.repository.ts index 7bfa9ac6ae..8fab087156 100644 --- a/server/src/repositories/shared-link.repository.ts +++ b/server/src/repositories/shared-link.repository.ts @@ -12,6 +12,7 @@ import { SharedLinkTable } from 'src/schema/tables/shared-link.table'; export type SharedLinkSearchOptions = { userId: string; + id?: string; albumId?: string; }; @@ -118,7 +119,7 @@ export class SharedLinkRepository { } @GenerateSql({ params: [{ userId: DummyValue.UUID, albumId: DummyValue.UUID }] }) - getAll({ userId, albumId }: SharedLinkSearchOptions) { + getAll({ userId, id, albumId }: SharedLinkSearchOptions) { return this.db .selectFrom('shared_link') .selectAll('shared_link') @@ -176,6 +177,7 @@ export class SharedLinkRepository { .select((eb) => eb.fn.toJson('album').$castTo().as('album')) .where((eb) => eb.or([eb('shared_link.type', '=', SharedLinkType.Individual), eb('album.id', 'is not', null)])) .$if(!!albumId, (eb) => eb.where('shared_link.albumId', '=', albumId!)) + .$if(!!id, (eb) => eb.where('shared_link.id', '=', id!)) .orderBy('shared_link.createdAt', 'desc') .distinctOn(['shared_link.createdAt']) .execute(); diff --git a/server/src/repositories/workflow.repository.ts b/server/src/repositories/workflow.repository.ts index 4ae657cfbf..deaf2aa2fc 100644 --- a/server/src/repositories/workflow.repository.ts +++ b/server/src/repositories/workflow.repository.ts @@ -12,12 +12,22 @@ export class WorkflowRepository { @GenerateSql({ params: [DummyValue.UUID] }) getWorkflow(id: string) { - return this.db.selectFrom('workflow').selectAll().where('id', '=', id).executeTakeFirst(); + return this.db + .selectFrom('workflow') + .selectAll() + .where('id', '=', id) + .orderBy('createdAt', 'desc') + .executeTakeFirst(); } @GenerateSql({ params: [DummyValue.UUID] }) getWorkflowsByOwner(ownerId: string) { - return this.db.selectFrom('workflow').selectAll().where('ownerId', '=', ownerId).orderBy('name').execute(); + return this.db + .selectFrom('workflow') + .selectAll() + .where('ownerId', '=', ownerId) + .orderBy('createdAt', 'desc') + .execute(); } @GenerateSql({ params: [PluginTriggerType.AssetCreate] }) diff --git a/server/src/schema/tables/asset-metadata-audit.table.ts b/server/src/schema/tables/asset-metadata-audit.table.ts index 3b94ce6d1a..16272eacf7 100644 --- a/server/src/schema/tables/asset-metadata-audit.table.ts +++ b/server/src/schema/tables/asset-metadata-audit.table.ts @@ -1,5 +1,4 @@ import { PrimaryGeneratedUuidV7Column } from 'src/decorators'; -import { AssetMetadataKey } from 'src/enum'; import { Column, CreateDateColumn, Generated, Table, Timestamp } from 'src/sql-tools'; @Table('asset_metadata_audit') @@ -11,7 +10,7 @@ export class AssetMetadataAuditTable { assetId!: string; @Column({ index: true }) - key!: AssetMetadataKey; + key!: string; @CreateDateColumn({ default: () => 'clock_timestamp()', index: true }) deletedAt!: Generated; diff --git a/server/src/schema/tables/asset-metadata.table.ts b/server/src/schema/tables/asset-metadata.table.ts index d529d6ad7b..8a7af1360f 100644 --- a/server/src/schema/tables/asset-metadata.table.ts +++ b/server/src/schema/tables/asset-metadata.table.ts @@ -32,7 +32,7 @@ export class AssetMetadataTable { assetId!: string; @PrimaryColumn({ type: 'character varying' }) - key!: AssetMetadataKey; + key!: AssetMetadataKey | string; @Column({ type: 'jsonb' }) value!: object; diff --git a/server/src/services/asset-media.service.ts b/server/src/services/asset-media.service.ts index 2bb8530c1c..5683c6ae15 100644 --- a/server/src/services/asset-media.service.ts +++ b/server/src/services/asset-media.service.ts @@ -433,7 +433,7 @@ export class AssetMediaService extends BaseService { originalFileName: dto.filename || file.originalName, }); - if (dto.metadata) { + if (dto.metadata?.length) { await this.assetRepository.upsertMetadata(asset.id, dto.metadata); } diff --git a/server/src/services/asset.service.ts b/server/src/services/asset.service.ts index 282d74a9b1..1e776bd256 100644 --- a/server/src/services/asset.service.ts +++ b/server/src/services/asset.service.ts @@ -11,6 +11,9 @@ import { AssetCopyDto, AssetJobName, AssetJobsDto, + AssetMetadataBulkDeleteDto, + AssetMetadataBulkResponseDto, + AssetMetadataBulkUpsertDto, AssetMetadataResponseDto, AssetMetadataUpsertDto, AssetStatsDto, @@ -19,16 +22,7 @@ import { } from 'src/dtos/asset.dto'; import { AuthDto } from 'src/dtos/auth.dto'; import { AssetOcrResponseDto } from 'src/dtos/ocr.dto'; -import { - AssetFileType, - AssetMetadataKey, - AssetStatus, - AssetVisibility, - JobName, - JobStatus, - Permission, - QueueName, -} from 'src/enum'; +import { AssetFileType, AssetStatus, AssetVisibility, JobName, JobStatus, Permission, QueueName } from 'src/enum'; import { BaseService } from 'src/services/base.service'; import { JobItem, JobOf } from 'src/types'; import { requireElevatedPermission } from 'src/utils/access'; @@ -144,14 +138,28 @@ export class AssetService extends BaseService { await this.requireAccess({ auth, permission: Permission.AssetUpdate, ids }); const assetDto = _.omitBy({ isFavorite, visibility, duplicateId }, _.isUndefined); - const exifDto = _.omitBy({ latitude, longitude, rating, description, dateTimeOriginal }, _.isUndefined); + const exifDto = _.omitBy( + { + latitude, + longitude, + rating, + description, + dateTimeOriginal, + }, + _.isUndefined, + ); + const extractedTimeZone = dateTimeOriginal ? DateTime.fromISO(dateTimeOriginal, { setZone: true }).zone : undefined; if (Object.keys(exifDto).length > 0) { await this.assetRepository.updateAllExif(ids, exifDto); } - if ((dateTimeRelative !== undefined && dateTimeRelative !== 0) || timeZone !== undefined) { - await this.assetRepository.updateDateTimeOriginal(ids, dateTimeRelative, timeZone); + if ( + (dateTimeRelative !== undefined && dateTimeRelative !== 0) || + timeZone !== undefined || + extractedTimeZone?.type === 'fixed' + ) { + await this.assetRepository.updateDateTimeOriginal(ids, dateTimeRelative, timeZone ?? extractedTimeZone?.name); } if (Object.keys(assetDto).length > 0) { @@ -367,12 +375,17 @@ export class AssetService extends BaseService { return this.ocrRepository.getByAssetId(id); } + async upsertBulkMetadata(auth: AuthDto, dto: AssetMetadataBulkUpsertDto): Promise { + await this.requireAccess({ auth, permission: Permission.AssetUpdate, ids: dto.items.map((item) => item.assetId) }); + return this.assetRepository.upsertBulkMetadata(dto.items); + } + async upsertMetadata(auth: AuthDto, id: string, dto: AssetMetadataUpsertDto): Promise { await this.requireAccess({ auth, permission: Permission.AssetUpdate, ids: [id] }); return this.assetRepository.upsertMetadata(id, dto.items); } - async getMetadataByKey(auth: AuthDto, id: string, key: AssetMetadataKey): Promise { + async getMetadataByKey(auth: AuthDto, id: string, key: string): Promise { await this.requireAccess({ auth, permission: Permission.AssetRead, ids: [id] }); const item = await this.assetRepository.getMetadataByKey(id, key); @@ -382,11 +395,16 @@ export class AssetService extends BaseService { return item; } - async deleteMetadataByKey(auth: AuthDto, id: string, key: AssetMetadataKey): Promise { + async deleteMetadataByKey(auth: AuthDto, id: string, key: string): Promise { await this.requireAccess({ auth, permission: Permission.AssetUpdate, ids: [id] }); return this.assetRepository.deleteMetadataByKey(id, key); } + async deleteBulkMetadata(auth: AuthDto, dto: AssetMetadataBulkDeleteDto) { + await this.requireAccess({ auth, permission: Permission.AssetUpdate, ids: dto.items.map((item) => item.assetId) }); + await this.assetRepository.deleteBulkMetadata(dto.items); + } + async run(auth: AuthDto, dto: AssetJobsDto) { await this.requireAccess({ auth, permission: Permission.AssetUpdate, ids: dto.assetIds }); @@ -436,7 +454,19 @@ export class AssetService extends BaseService { rating?: number; }) { const { id, description, dateTimeOriginal, latitude, longitude, rating } = dto; - const writes = _.omitBy({ description, dateTimeOriginal, latitude, longitude, rating }, _.isUndefined); + const extractedTimeZone = dateTimeOriginal ? DateTime.fromISO(dateTimeOriginal, { setZone: true }).zone : undefined; + const writes = _.omitBy( + { + description, + dateTimeOriginal, + timeZone: extractedTimeZone?.type === 'fixed' ? extractedTimeZone.name : undefined, + latitude, + longitude, + rating, + }, + _.isUndefined, + ); + if (Object.keys(writes).length > 0) { await this.assetRepository.upsertExif( updateLockedColumns({ diff --git a/server/src/services/auth.service.ts b/server/src/services/auth.service.ts index 1a68bbfce7..a6580f89dd 100644 --- a/server/src/services/auth.service.ts +++ b/server/src/services/auth.service.ts @@ -165,6 +165,11 @@ export class AuthService extends BaseService { } async adminSignUp(dto: SignUpDto): Promise { + const { setup } = this.configRepository.getEnv(); + if (!setup.allow) { + throw new BadRequestException('Admin setup is disabled'); + } + const adminUser = await this.userRepository.getAdmin(); if (adminUser) { throw new BadRequestException('The server already has an admin'); diff --git a/server/src/services/cli.service.spec.ts b/server/src/services/cli.service.spec.ts index 49fa5cf5b8..f4f14c3e68 100644 --- a/server/src/services/cli.service.spec.ts +++ b/server/src/services/cli.service.spec.ts @@ -89,6 +89,7 @@ describe(CliService.name, () => { alreadyDisabled: true, }); + expect(mocks.app.sendOneShotAppRestart).toHaveBeenCalledTimes(0); expect(mocks.systemMetadata.set).toHaveBeenCalledTimes(0); expect(mocks.event.emit).toHaveBeenCalledTimes(0); }); @@ -99,6 +100,7 @@ describe(CliService.name, () => { alreadyDisabled: false, }); + expect(mocks.app.sendOneShotAppRestart).toHaveBeenCalled(); expect(mocks.systemMetadata.set).toHaveBeenCalledWith(SystemMetadataKey.MaintenanceMode, { isMaintenanceMode: false, }); @@ -114,6 +116,7 @@ describe(CliService.name, () => { }), ); + expect(mocks.app.sendOneShotAppRestart).toHaveBeenCalledTimes(0); expect(mocks.systemMetadata.set).toHaveBeenCalledTimes(0); expect(mocks.event.emit).toHaveBeenCalledTimes(0); }); @@ -126,6 +129,7 @@ describe(CliService.name, () => { }), ); + expect(mocks.app.sendOneShotAppRestart).toHaveBeenCalled(); expect(mocks.systemMetadata.set).toHaveBeenCalledWith(SystemMetadataKey.MaintenanceMode, { isMaintenanceMode: true, secret: expect.stringMatching(/^\w{128}$/), diff --git a/server/src/services/cli.service.ts b/server/src/services/cli.service.ts index 3d248edc7a..8d2f1b0e99 100644 --- a/server/src/services/cli.service.ts +++ b/server/src/services/cli.service.ts @@ -5,7 +5,7 @@ import { MaintenanceAuthDto } from 'src/dtos/maintenance.dto'; import { UserAdminResponseDto, mapUserAdmin } from 'src/dtos/user.dto'; import { SystemMetadataKey } from 'src/enum'; import { BaseService } from 'src/services/base.service'; -import { createMaintenanceLoginUrl, generateMaintenanceSecret, sendOneShotAppRestart } from 'src/utils/maintenance'; +import { createMaintenanceLoginUrl, generateMaintenanceSecret } from 'src/utils/maintenance'; import { getExternalDomain } from 'src/utils/misc'; @Injectable() @@ -55,8 +55,7 @@ export class CliService extends BaseService { const state = { isMaintenanceMode: false as const }; await this.systemMetadataRepository.set(SystemMetadataKey.MaintenanceMode, state); - - sendOneShotAppRestart(state); + await this.appRepository.sendOneShotAppRestart(state); return { alreadyDisabled: false, @@ -89,7 +88,7 @@ export class CliService extends BaseService { secret, }); - sendOneShotAppRestart({ + await this.appRepository.sendOneShotAppRestart({ isMaintenanceMode: true, }); diff --git a/server/src/services/maintenance.service.ts b/server/src/services/maintenance.service.ts index e6808300bc..0f5fa06957 100644 --- a/server/src/services/maintenance.service.ts +++ b/server/src/services/maintenance.service.ts @@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common'; import { OnEvent } from 'src/decorators'; import { MaintenanceAuthDto } from 'src/dtos/maintenance.dto'; import { SystemMetadataKey } from 'src/enum'; +import { ArgOf } from 'src/repositories/event.repository'; import { BaseService } from 'src/services/base.service'; import { MaintenanceModeState } from 'src/types'; import { createMaintenanceLoginUrl, generateMaintenanceSecret, signMaintenanceJwt } from 'src/utils/maintenance'; @@ -31,7 +32,10 @@ export class MaintenanceService extends BaseService { } @OnEvent({ name: 'AppRestart', server: true }) - onRestart(): void { + onRestart(event: ArgOf<'AppRestart'>, ack?: (ok: 'ok') => void): void { + this.logger.log(`Restarting due to event... ${JSON.stringify(event)}`); + + ack?.('ok'); this.appRepository.exitApp(); } diff --git a/server/src/services/media.service.ts b/server/src/services/media.service.ts index 9027e89d66..917df1d8fd 100644 --- a/server/src/services/media.service.ts +++ b/server/src/services/media.service.ts @@ -158,7 +158,7 @@ export class MediaService extends BaseService { async handleGenerateThumbnails({ id }: JobOf): Promise { const asset = await this.assetJobRepository.getForGenerateThumbnailJob(id); if (!asset) { - this.logger.warn(`Thumbnail generation failed for asset ${id}: not found`); + this.logger.warn(`Thumbnail generation failed for asset ${id}: not found in database or missing metadata`); return JobStatus.Failed; } diff --git a/server/src/services/memory.service.ts b/server/src/services/memory.service.ts index 8e91c232f7..db682b6393 100644 --- a/server/src/services/memory.service.ts +++ b/server/src/services/memory.service.ts @@ -28,6 +28,7 @@ export class MemoryService extends BaseService { continue; } + this.logger.log(`Creating memories for ${target.toISO()}`); try { await Promise.all(users.map((owner) => this.createOnThisDayMemories(owner.id, target))); } catch (error) { diff --git a/server/src/services/metadata.service.ts b/server/src/services/metadata.service.ts index 8da7c88ecc..3e5b220c04 100644 --- a/server/src/services/metadata.service.ts +++ b/server/src/services/metadata.service.ts @@ -366,9 +366,13 @@ export class MetadataService extends BaseService { const isChanged = sidecarPath !== sidecarFile?.path; - this.logger.debug( - `Sidecar check found old=${sidecarFile?.path}, new=${sidecarPath} will ${isChanged ? 'update' : 'do nothing for'} asset ${asset.id}: ${asset.originalPath}`, - ); + if (sidecarFile?.path || sidecarPath) { + this.logger.debug( + `Sidecar check found old=${sidecarFile?.path}, new=${sidecarPath} will ${isChanged ? 'update' : 'do nothing for'} asset ${asset.id}: ${asset.originalPath}`, + ); + } else { + this.logger.verbose(`No sidecars found for asset ${asset.id}: ${asset.originalPath}`); + } if (!isChanged) { return JobStatus.Skipped; @@ -858,9 +862,13 @@ export class MetadataService extends BaseService { const result = firstDateTime(exifTags); const tag = result?.tag; const dateTime = result?.dateTime; - this.logger.verbose( - `Date and time is ${dateTime} using exifTag ${tag} for asset ${asset.id}: ${asset.originalPath}`, - ); + if (dateTime) { + this.logger.verbose( + `Date and time is ${dateTime} using exifTag ${tag} for asset ${asset.id}: ${asset.originalPath}`, + ); + } else { + this.logger.verbose(`No exif date time information found for asset ${asset.id}: ${asset.originalPath}`); + } // timezone let timeZone = exifTags.tz ?? null; diff --git a/server/src/services/plugin.service.ts b/server/src/services/plugin.service.ts index 9336f0003a..d78b8940d3 100644 --- a/server/src/services/plugin.service.ts +++ b/server/src/services/plugin.service.ts @@ -6,8 +6,9 @@ import { join } from 'node:path'; import { Asset, WorkflowAction, WorkflowFilter } from 'src/database'; import { OnEvent, OnJob } from 'src/decorators'; import { PluginManifestDto } from 'src/dtos/plugin-manifest.dto'; -import { mapPlugin, PluginResponseDto } from 'src/dtos/plugin.dto'; +import { mapPlugin, PluginResponseDto, PluginTriggerResponseDto } from 'src/dtos/plugin.dto'; import { JobName, JobStatus, PluginTriggerType, QueueName } from 'src/enum'; +import { pluginTriggers } from 'src/plugins'; import { ArgOf } from 'src/repositories/event.repository'; import { BaseService } from 'src/services/base.service'; import { PluginHostFunctions } from 'src/services/plugin-host.functions'; @@ -50,6 +51,10 @@ export class PluginService extends BaseService { await this.loadPlugins(); } + getTriggers(): PluginTriggerResponseDto[] { + return pluginTriggers; + } + // // CRUD operations for plugins // @@ -80,8 +85,8 @@ export class PluginService extends BaseService { this.logger.log(`Successfully processed core plugin: ${coreManifest.name} (version ${coreManifest.version})`); // Load external plugins - if (plugins.enabled && plugins.installFolder) { - await this.loadExternalPlugins(plugins.installFolder); + if (plugins.external.allow && plugins.external.installFolder) { + await this.loadExternalPlugins(plugins.external.installFolder); } } diff --git a/server/src/services/server.service.ts b/server/src/services/server.service.ts index af4d706061..30bc1f1f0d 100644 --- a/server/src/services/server.service.ts +++ b/server/src/services/server.service.ts @@ -115,8 +115,9 @@ export class ServerService extends BaseService { } async getSystemConfig(): Promise { + const { setup } = this.configRepository.getEnv(); const config = await this.getConfig({ withCache: false }); - const isInitialized = await this.userRepository.hasAdmin(); + const isInitialized = !setup.allow || (await this.userRepository.hasAdmin()); const onboarding = await this.systemMetadataRepository.get(SystemMetadataKey.AdminOnboarding); return { diff --git a/server/src/services/shared-link.service.spec.ts b/server/src/services/shared-link.service.spec.ts index 062214b975..90c212650e 100644 --- a/server/src/services/shared-link.service.spec.ts +++ b/server/src/services/shared-link.service.spec.ts @@ -55,7 +55,8 @@ describe(SharedLinkService.name, () => { }, }); mocks.sharedLink.get.mockResolvedValue(sharedLinkStub.readonlyNoExif); - await expect(sut.getMine(authDto, {})).resolves.toEqual(sharedLinkResponseStub.readonlyNoMetadata); + const response = await sut.getMine(authDto, {}); + expect(response.assets[0]).toMatchObject({ hasMetadata: false }); expect(mocks.sharedLink.get).toHaveBeenCalledWith(authDto.user.id, authDto.sharedLink?.id); }); diff --git a/server/src/services/shared-link.service.ts b/server/src/services/shared-link.service.ts index 3c1a6083e9..1440598084 100644 --- a/server/src/services/shared-link.service.ts +++ b/server/src/services/shared-link.service.ts @@ -6,7 +6,6 @@ import { AssetIdsDto } from 'src/dtos/asset.dto'; import { AuthDto } from 'src/dtos/auth.dto'; import { mapSharedLink, - mapSharedLinkWithoutMetadata, SharedLinkCreateDto, SharedLinkEditDto, SharedLinkPasswordDto, @@ -19,10 +18,10 @@ import { getExternalDomain, OpenGraphTags } from 'src/utils/misc'; @Injectable() export class SharedLinkService extends BaseService { - async getAll(auth: AuthDto, { albumId }: SharedLinkSearchDto): Promise { + async getAll(auth: AuthDto, { id, albumId }: SharedLinkSearchDto): Promise { return this.sharedLinkRepository - .getAll({ userId: auth.user.id, albumId }) - .then((links) => links.map((link) => mapSharedLink(link))); + .getAll({ userId: auth.user.id, id, albumId }) + .then((links) => links.map((link) => mapSharedLink(link, { stripAssetMetadata: false }))); } async getMine(auth: AuthDto, dto: SharedLinkPasswordDto): Promise { @@ -31,7 +30,7 @@ export class SharedLinkService extends BaseService { } const sharedLink = await this.findOrFail(auth.user.id, auth.sharedLink.id); - const response = this.mapToSharedLink(sharedLink, { withExif: sharedLink.showExif }); + const response = mapSharedLink(sharedLink, { stripAssetMetadata: !sharedLink.showExif }); if (sharedLink.password) { response.token = this.validateAndRefreshToken(sharedLink, dto); } @@ -41,7 +40,7 @@ export class SharedLinkService extends BaseService { async get(auth: AuthDto, id: string): Promise { const sharedLink = await this.findOrFail(auth.user.id, id); - return this.mapToSharedLink(sharedLink, { withExif: true }); + return mapSharedLink(sharedLink, { stripAssetMetadata: false }); } async create(auth: AuthDto, dto: SharedLinkCreateDto): Promise { @@ -81,7 +80,7 @@ export class SharedLinkService extends BaseService { slug: dto.slug || null, }); - return this.mapToSharedLink(sharedLink, { withExif: true }); + return mapSharedLink(sharedLink, { stripAssetMetadata: false }); } catch (error) { this.handleError(error); } @@ -108,7 +107,7 @@ export class SharedLinkService extends BaseService { showExif: dto.showMetadata, slug: dto.slug || null, }); - return this.mapToSharedLink(sharedLink, { withExif: true }); + return mapSharedLink(sharedLink, { stripAssetMetadata: false }); } catch (error) { this.handleError(error); } @@ -214,10 +213,6 @@ export class SharedLinkService extends BaseService { }; } - private mapToSharedLink(sharedLink: SharedLink, { withExif }: { withExif: boolean }) { - return withExif ? mapSharedLink(sharedLink) : mapSharedLinkWithoutMetadata(sharedLink); - } - private validateAndRefreshToken(sharedLink: SharedLink, dto: SharedLinkPasswordDto): string { const token = this.cryptoRepository.hashSha256(`${sharedLink.id}-${sharedLink.password}`); const sharedLinkTokens = dto.token?.split(',') || []; diff --git a/server/src/services/storage-template.service.spec.ts b/server/src/services/storage-template.service.spec.ts index d0d7ea3a3c..0b5d538cea 100644 --- a/server/src/services/storage-template.service.spec.ts +++ b/server/src/services/storage-template.service.spec.ts @@ -84,6 +84,7 @@ describe(StorageTemplateService.name, () => { '{{y}}/{{y}}-{{MM}}/{{assetId}}', '{{y}}/{{y}}-{{WW}}/{{assetId}}', '{{album}}/{{filename}}', + '{{make}}/{{model}}/{{lensModel}}/{{filename}}', ], secondOptions: ['s', 'ss', 'SSS'], weekOptions: ['W', 'WW'], @@ -615,6 +616,39 @@ describe(StorageTemplateService.name, () => { ); expect(mocks.asset.update).not.toHaveBeenCalled(); }); + + it('should migrate live photo motion video alongside the still image', async () => { + const newMotionPicturePath = `/data/library/${motionAsset.ownerId}/2022/2022-06-19/${motionAsset.originalFileName}`; + const newStillPicturePath = `/data/library/${stillAsset.ownerId}/2022/2022-06-19/${stillAsset.originalFileName}`; + + mocks.assetJob.streamForStorageTemplateJob.mockReturnValue(makeStream([stillAsset])); + mocks.user.getList.mockResolvedValue([userStub.user1]); + mocks.assetJob.getForStorageTemplateJob.mockResolvedValueOnce(motionAsset); + + mocks.move.create.mockResolvedValueOnce({ + id: '123', + entityId: stillAsset.id, + pathType: AssetPathType.Original, + oldPath: stillAsset.originalPath, + newPath: newStillPicturePath, + }); + + mocks.move.create.mockResolvedValueOnce({ + id: '124', + entityId: motionAsset.id, + pathType: AssetPathType.Original, + oldPath: motionAsset.originalPath, + newPath: newMotionPicturePath, + }); + + await sut.handleMigration(); + + expect(mocks.assetJob.streamForStorageTemplateJob).toHaveBeenCalled(); + expect(mocks.assetJob.getForStorageTemplateJob).toHaveBeenCalledWith(motionAsset.id); + expect(mocks.storage.checkFileExists).toHaveBeenCalledTimes(2); + expect(mocks.asset.update).toHaveBeenCalledWith({ id: stillAsset.id, originalPath: newStillPicturePath }); + expect(mocks.asset.update).toHaveBeenCalledWith({ id: motionAsset.id, originalPath: newMotionPicturePath }); + }); }); describe('file rename correctness', () => { diff --git a/server/src/services/storage-template.service.ts b/server/src/services/storage-template.service.ts index 864207bf05..cd641d7036 100644 --- a/server/src/services/storage-template.service.ts +++ b/server/src/services/storage-template.service.ts @@ -53,6 +53,7 @@ const storagePresets = [ '{{y}}/{{y}}-{{MM}}/{{assetId}}', '{{y}}/{{y}}-{{WW}}/{{assetId}}', '{{album}}/{{filename}}', + '{{make}}/{{model}}/{{lensModel}}/{{filename}}', ]; export interface MoveAssetMetadata { @@ -67,6 +68,9 @@ interface RenderMetadata { albumName: string | null; albumStartDate: Date | null; albumEndDate: Date | null; + make: string | null; + model: string | null; + lensModel: string | null; } @Injectable() @@ -115,6 +119,9 @@ export class StorageTemplateService extends BaseService { albumName: 'album', albumStartDate: new Date(), albumEndDate: new Date(), + make: 'FUJIFILM', + model: 'X-T50', + lensModel: 'XF27mm F2.8 R WR', }); } catch (error) { this.logger.warn(`Storage template validation failed: ${JSON.stringify(error)}`); @@ -181,6 +188,15 @@ export class StorageTemplateService extends BaseService { const storageLabel = user?.storageLabel || null; const filename = asset.originalFileName || asset.id; await this.moveAsset(asset, { storageLabel, filename }); + + // move motion part of live photo + if (asset.livePhotoVideoId) { + const livePhotoVideo = await this.assetJobRepository.getForStorageTemplateJob(asset.livePhotoVideoId); + if (livePhotoVideo) { + const motionFilename = getLivePhotoMotionFilename(filename, livePhotoVideo.originalPath); + await this.moveAsset(livePhotoVideo, { storageLabel, filename: motionFilename }); + } + } } this.logger.debug('Cleaning up empty directories...'); @@ -301,6 +317,9 @@ export class StorageTemplateService extends BaseService { albumName, albumStartDate, albumEndDate, + make: asset.make, + model: asset.model, + lensModel: asset.lensModel, }); const fullPath = path.normalize(path.join(rootPath, storagePath)); let destination = `${fullPath}.${extension}`; @@ -365,7 +384,7 @@ export class StorageTemplateService extends BaseService { } private render(template: HandlebarsTemplateDelegate, options: RenderMetadata) { - const { filename, extension, asset, albumName, albumStartDate, albumEndDate } = options; + const { filename, extension, asset, albumName, albumStartDate, albumEndDate, make, model, lensModel } = options; const substitutions: Record = { filename, ext: extension, @@ -375,6 +394,9 @@ export class StorageTemplateService extends BaseService { assetIdShort: asset.id.slice(-12), //just throw into the root if it doesn't belong to an album album: (albumName && sanitize(albumName.replaceAll(/\.+/g, ''))) || '', + make: make ?? '', + model: model ?? '', + lensModel: lensModel ?? '', }; const systemTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone; diff --git a/server/src/services/workflow.service.ts b/server/src/services/workflow.service.ts index 301931421f..1a65182b1f 100644 --- a/server/src/services/workflow.service.ts +++ b/server/src/services/workflow.service.ts @@ -16,10 +16,10 @@ import { BaseService } from 'src/services/base.service'; @Injectable() export class WorkflowService extends BaseService { async create(auth: AuthDto, dto: WorkflowCreateDto): Promise { - const trigger = this.getTriggerOrFail(dto.triggerType); + const context = this.getContextForTrigger(dto.triggerType); - const filterInserts = await this.validateAndMapFilters(dto.filters, trigger.context); - const actionInserts = await this.validateAndMapActions(dto.actions, trigger.context); + const filterInserts = await this.validateAndMapFilters(dto.filters, context); + const actionInserts = await this.validateAndMapActions(dto.actions, context); const workflow = await this.workflowRepository.createWorkflow( { @@ -56,11 +56,11 @@ export class WorkflowService extends BaseService { } const workflow = await this.findOrFail(id); - const trigger = this.getTriggerOrFail(workflow.triggerType); + const context = this.getContextForTrigger(dto.triggerType ?? workflow.triggerType); const { filters, actions, ...workflowUpdate } = dto; - const filterInserts = filters && (await this.validateAndMapFilters(filters, trigger.context)); - const actionInserts = actions && (await this.validateAndMapActions(actions, trigger.context)); + const filterInserts = filters && (await this.validateAndMapFilters(filters, context)); + const actionInserts = actions && (await this.validateAndMapActions(actions, context)); const updatedWorkflow = await this.workflowRepository.updateWorkflow( id, @@ -124,12 +124,12 @@ export class WorkflowService extends BaseService { })); } - private getTriggerOrFail(triggerType: PluginTriggerType) { - const trigger = pluginTriggers.find((t) => t.type === triggerType); + private getContextForTrigger(type: PluginTriggerType) { + const trigger = pluginTriggers.find((t) => t.type === type); if (!trigger) { - throw new BadRequestException(`Invalid trigger type: ${triggerType}`); + throw new BadRequestException(`Invalid trigger type: ${type}`); } - return trigger; + return trigger.contextType; } private async findOrFail(id: string) { diff --git a/server/src/types.ts b/server/src/types.ts index e404332fac..779de1ee37 100644 --- a/server/src/types.ts +++ b/server/src/types.ts @@ -472,6 +472,9 @@ export type StorageAsset = { originalFileName: string; fileSizeInByte: number | null; files: AssetFile[]; + make: string | null; + model: string | null; + lensModel: string | null; }; export type OnThisDayData = { year: number }; diff --git a/server/src/utils/database.ts b/server/src/utils/database.ts index 656e8e628a..95998eb44b 100644 --- a/server/src/utils/database.ts +++ b/server/src/utils/database.ts @@ -446,7 +446,7 @@ export function searchAssetBuilder(kysely: Kysely, options: AssetSearchBuild qb.where((eb) => eb.not(eb.exists((eb) => eb.selectFrom('album_asset').whereRef('assetId', '=', 'asset.id')))), ) .$if(!!options.withExif, withExifInner) - .$if(!!(options.withFaces || options.withPeople || options.personIds), (qb) => qb.select(withFacesAndPeople)) + .$if(!!(options.withFaces || options.withPeople), (qb) => qb.select(withFacesAndPeople)) .$if(!options.withDeleted, (qb) => qb.where('asset.deletedAt', 'is', null)); } diff --git a/server/src/utils/maintenance.ts b/server/src/utils/maintenance.ts index 22de2e4083..faa92395d6 100644 --- a/server/src/utils/maintenance.ts +++ b/server/src/utils/maintenance.ts @@ -1,55 +1,6 @@ -import { createAdapter } from '@socket.io/redis-adapter'; -import Redis from 'ioredis'; import { SignJWT } from 'jose'; import { randomBytes } from 'node:crypto'; -import { Server as SocketIO } from 'socket.io'; import { MaintenanceAuthDto } from 'src/dtos/maintenance.dto'; -import { ConfigRepository } from 'src/repositories/config.repository'; -import { AppRestartEvent } from 'src/repositories/event.repository'; - -export function sendOneShotAppRestart(state: AppRestartEvent): void { - const server = new SocketIO(); - const { redis } = new ConfigRepository().getEnv(); - const pubClient = new Redis(redis); - const subClient = pubClient.duplicate(); - server.adapter(createAdapter(pubClient, subClient)); - - /** - * Keep trying until we manage to stop Immich - * - * Sometimes there appear to be communication - * issues between to the other servers. - * - * This issue only occurs with this method. - */ - async function tryTerminate() { - while (true) { - try { - const responses = await server.serverSideEmitWithAck('AppRestart', state); - if (responses.length > 0) { - return; - } - } catch (error) { - console.error(error); - console.error('Encountered an error while telling Immich to stop.'); - } - - console.info( - "\nIt doesn't appear that Immich stopped, trying again in a moment.\nIf Immich is already not running, you can ignore this error.", - ); - - await new Promise((r) => setTimeout(r, 1e3)); - } - } - - // => corresponds to notification.service.ts#onAppRestart - server.emit('AppRestartV1', state, () => { - void tryTerminate().finally(() => { - pubClient.disconnect(); - subClient.disconnect(); - }); - }); -} export async function createMaintenanceLoginUrl( baseUrl: string, diff --git a/server/test/fixtures/asset.stub.ts b/server/test/fixtures/asset.stub.ts index f5935d5d0e..6e4193c110 100644 --- a/server/test/fixtures/asset.stub.ts +++ b/server/test/fixtures/asset.stub.ts @@ -65,6 +65,9 @@ export const assetStub = { originalFileName: 'IMG_123.jpg', fileSizeInByte: 12_345, files: [], + make: 'FUJIFILM', + model: 'X-T50', + lensModel: 'XF27mm F2.8 R WR', ...asset, }), noResizePath: Object.freeze({ diff --git a/server/test/fixtures/shared-link.stub.ts b/server/test/fixtures/shared-link.stub.ts index 19a62ad193..802b46a986 100644 --- a/server/test/fixtures/shared-link.stub.ts +++ b/server/test/fixtures/shared-link.stub.ts @@ -1,10 +1,7 @@ import { UserAdmin } from 'src/database'; -import { AlbumResponseDto } from 'src/dtos/album.dto'; -import { AssetResponseDto, MapAsset } from 'src/dtos/asset-response.dto'; -import { ExifResponseDto } from 'src/dtos/exif.dto'; +import { MapAsset } from 'src/dtos/asset-response.dto'; import { SharedLinkResponseDto } from 'src/dtos/shared-link.dto'; -import { mapUser } from 'src/dtos/user.dto'; -import { AssetOrder, AssetStatus, AssetType, AssetVisibility, SharedLinkType } from 'src/enum'; +import { AssetStatus, AssetType, AssetVisibility, SharedLinkType } from 'src/enum'; import { assetStub } from 'test/fixtures/asset.stub'; import { authStub } from 'test/fixtures/auth.stub'; import { userStub } from 'test/fixtures/user.stub'; @@ -20,89 +17,6 @@ const sharedLinkBytes = Buffer.from( 'hex', ); -const assetInfo: ExifResponseDto = { - make: 'camera-make', - model: 'camera-model', - exifImageWidth: 500, - exifImageHeight: 500, - fileSizeInByte: 100, - orientation: 'orientation', - dateTimeOriginal: today, - modifyDate: today, - timeZone: 'America/Los_Angeles', - lensModel: 'fancy', - fNumber: 100, - focalLength: 100, - iso: 100, - exposureTime: '1/16', - latitude: 100, - longitude: 100, - city: 'city', - state: 'state', - country: 'country', - description: 'description', - projectionType: null, -}; - -const assetResponse: AssetResponseDto = { - id: 'id_1', - createdAt: today, - deviceAssetId: 'device_asset_id_1', - ownerId: 'user_id_1', - deviceId: 'device_id_1', - type: AssetType.Video, - originalMimeType: 'image/jpeg', - originalPath: 'fake_path/jpeg', - originalFileName: 'asset_1.jpeg', - thumbhash: null, - fileModifiedAt: today, - isOffline: false, - fileCreatedAt: today, - localDateTime: today, - updatedAt: today, - isFavorite: false, - isArchived: false, - duration: '0:00:00.00000', - exifInfo: assetInfo, - livePhotoVideoId: null, - tags: [], - people: [], - checksum: 'ZmlsZSBoYXNo', - isTrashed: false, - libraryId: 'library-id', - hasMetadata: true, - visibility: AssetVisibility.Timeline, -}; - -const assetResponseWithoutMetadata = { - id: 'id_1', - type: AssetType.Video, - originalMimeType: 'image/jpeg', - thumbhash: null, - localDateTime: today, - duration: '0:00:00.00000', - livePhotoVideoId: null, - hasMetadata: false, -} as AssetResponseDto; - -const albumResponse: AlbumResponseDto = { - albumName: 'Test Album', - description: '', - albumThumbnailAssetId: null, - createdAt: today, - updatedAt: today, - id: 'album-123', - ownerId: 'admin_id', - owner: mapUser(userStub.admin), - albumUsers: [], - shared: false, - hasSharedLink: false, - assets: [], - assetCount: 1, - isActivityEnabled: true, - order: AssetOrder.Desc, -}; - export const sharedLinkStub = { individual: Object.freeze({ id: '123', @@ -161,7 +75,7 @@ export const sharedLinkStub = { id: '123', userId: authStub.admin.user.id, key: sharedLinkBytes, - type: SharedLinkType.Album, + type: SharedLinkType.Individual, createdAt: today, expiresAt: tomorrow, allowUpload: false, @@ -169,97 +83,80 @@ export const sharedLinkStub = { showExif: false, description: null, password: null, - assets: [], - slug: null, - albumId: 'album-123', - album: { - id: 'album-123', - updateId: '42', - ownerId: authStub.admin.user.id, - owner: userStub.admin, - albumName: 'Test Album', - description: '', - createdAt: today, - updatedAt: today, - deletedAt: null, - albumThumbnailAsset: null, - albumThumbnailAssetId: null, - albumUsers: [], - sharedLinks: [], - isActivityEnabled: true, - order: AssetOrder.Desc, - assets: [ - { - id: 'id_1', - status: AssetStatus.Active, - owner: undefined as unknown as UserAdmin, - ownerId: 'user_id_1', - deviceAssetId: 'device_asset_id_1', - deviceId: 'device_id_1', - type: AssetType.Video, - originalPath: 'fake_path/jpeg', - checksum: Buffer.from('file hash', 'utf8'), - fileModifiedAt: today, - fileCreatedAt: today, - localDateTime: today, - createdAt: today, + assets: [ + { + id: 'id_1', + status: AssetStatus.Active, + owner: undefined as unknown as UserAdmin, + ownerId: 'user_id_1', + deviceAssetId: 'device_asset_id_1', + deviceId: 'device_id_1', + type: AssetType.Video, + originalPath: 'fake_path/jpeg', + checksum: Buffer.from('file hash', 'utf8'), + fileModifiedAt: today, + fileCreatedAt: today, + localDateTime: today, + createdAt: today, + updatedAt: today, + isFavorite: false, + isArchived: false, + isExternal: false, + isOffline: false, + files: [], + thumbhash: null, + encodedVideoPath: '', + duration: null, + livePhotoVideo: null, + livePhotoVideoId: null, + originalFileName: 'asset_1.jpeg', + exifInfo: { + projectionType: null, + livePhotoCID: null, + assetId: 'id_1', + description: 'description', + exifImageWidth: 500, + exifImageHeight: 500, + fileSizeInByte: 100, + orientation: 'orientation', + dateTimeOriginal: today, + modifyDate: today, + timeZone: 'America/Los_Angeles', + latitude: 100, + longitude: 100, + city: 'city', + state: 'state', + country: 'country', + make: 'camera-make', + model: 'camera-model', + lensModel: 'fancy', + fNumber: 100, + focalLength: 100, + iso: 100, + exposureTime: '1/16', + fps: 100, + profileDescription: 'sRGB', + bitsPerSample: 8, + colorspace: 'sRGB', + autoStackId: null, + rating: 3, updatedAt: today, - isFavorite: false, - isArchived: false, - isExternal: false, - isOffline: false, - files: [], - thumbhash: null, - encodedVideoPath: '', - duration: null, - livePhotoVideo: null, - livePhotoVideoId: null, - originalFileName: 'asset_1.jpeg', - exifInfo: { - projectionType: null, - livePhotoCID: null, - assetId: 'id_1', - description: 'description', - exifImageWidth: 500, - exifImageHeight: 500, - fileSizeInByte: 100, - orientation: 'orientation', - dateTimeOriginal: today, - modifyDate: today, - timeZone: 'America/Los_Angeles', - latitude: 100, - longitude: 100, - city: 'city', - state: 'state', - country: 'country', - make: 'camera-make', - model: 'camera-model', - lensModel: 'fancy', - fNumber: 100, - focalLength: 100, - iso: 100, - exposureTime: '1/16', - fps: 100, - profileDescription: 'sRGB', - bitsPerSample: 8, - colorspace: 'sRGB', - autoStackId: null, - rating: 3, - updatedAt: today, - updateId: '42', - }, - sharedLinks: [], - faces: [], - sidecarPath: null, - deletedAt: null, - duplicateId: null, updateId: '42', - libraryId: null, - stackId: null, - visibility: AssetVisibility.Timeline, }, - ], - }, + sharedLinks: [], + faces: [], + sidecarPath: null, + deletedAt: null, + duplicateId: null, + updateId: '42', + libraryId: null, + stackId: null, + visibility: AssetVisibility.Timeline, + }, + ], + albumId: null, + album: null, + slug: null, }), passwordRequired: Object.freeze({ id: '123', @@ -312,20 +209,4 @@ export const sharedLinkResponseStub = { userId: 'admin_id', slug: null, }), - readonlyNoMetadata: Object.freeze({ - id: '123', - userId: 'admin_id', - key: sharedLinkBytes.toString('base64url'), - type: SharedLinkType.Album, - createdAt: today, - expiresAt: tomorrow, - description: null, - password: null, - allowUpload: false, - allowDownload: false, - showMetadata: false, - slug: null, - album: { ...albumResponse, startDate: assetResponse.localDateTime, endDate: assetResponse.localDateTime }, - assets: [{ ...assetResponseWithoutMetadata, exifInfo: undefined }], - }), }; diff --git a/server/test/medium.factory.ts b/server/test/medium.factory.ts index 82ea2cd1fc..44ca231d8f 100644 --- a/server/test/medium.factory.ts +++ b/server/test/medium.factory.ts @@ -56,6 +56,7 @@ import { AlbumTable } from 'src/schema/tables/album.table'; import { AssetExifTable } from 'src/schema/tables/asset-exif.table'; import { AssetFileTable } from 'src/schema/tables/asset-file.table'; import { AssetJobStatusTable } from 'src/schema/tables/asset-job-status.table'; +import { AssetMetadataTable } from 'src/schema/tables/asset-metadata.table'; import { AssetTable } from 'src/schema/tables/asset.table'; import { FaceSearchTable } from 'src/schema/tables/face-search.table'; import { MemoryTable } from 'src/schema/tables/memory.table'; @@ -68,6 +69,7 @@ import { UserTable } from 'src/schema/tables/user.table'; import { BASE_SERVICE_DEPENDENCIES, BaseService } from 'src/services/base.service'; import { MetadataService } from 'src/services/metadata.service'; import { SyncService } from 'src/services/sync.service'; +import { UploadFile } from 'src/types'; import { mockEnvData } from 'test/repositories/config.repository.mock'; import { newTelemetryRepositoryMock } from 'test/repositories/telemetry.repository.mock'; import { factory, newDate, newEmbedding, newUuid } from 'test/small.factory'; @@ -179,6 +181,12 @@ export class MediumTestContext { return { asset, result }; } + async newMetadata(dto: Insertable) { + const { assetId, ...item } = dto; + const result = await this.get(AssetRepository).upsertMetadata(assetId, [item]); + return { metadata: dto, result }; + } + async newAssetFile(dto: Insertable) { const result = await this.get(AssetRepository).upsertFile(dto); return { result }; @@ -739,6 +747,17 @@ const loginResponse = (): LoginResponseDto => { }; }; +const uploadFile = (file: Partial = {}) => { + return { + uuid: newUuid(), + checksum: randomBytes(32), + originalPath: '/path/to/file.jpg', + originalName: 'file.jpg', + size: 123_456, + ...file, + }; +}; + export const mediumFactory = { assetInsert, assetFaceInsert, @@ -753,4 +772,5 @@ export const mediumFactory = { loginDetails, loginResponse, tagInsert, + uploadFile, }; diff --git a/server/test/medium/specs/repositories/asset.repository.spec.ts b/server/test/medium/specs/repositories/asset.repository.spec.ts new file mode 100644 index 0000000000..a7af66f872 --- /dev/null +++ b/server/test/medium/specs/repositories/asset.repository.spec.ts @@ -0,0 +1,90 @@ +import { Kysely } from 'kysely'; +import { AssetRepository } from 'src/repositories/asset.repository'; +import { LoggingRepository } from 'src/repositories/logging.repository'; +import { DB } from 'src/schema'; +import { BaseService } from 'src/services/base.service'; +import { newMediumService } from 'test/medium.factory'; +import { getKyselyDB } from 'test/utils'; + +let defaultDatabase: Kysely; + +const setup = (db?: Kysely) => { + const { ctx } = newMediumService(BaseService, { + database: db || defaultDatabase, + real: [], + mock: [LoggingRepository], + }); + return { ctx, sut: ctx.get(AssetRepository) }; +}; + +beforeAll(async () => { + defaultDatabase = await getKyselyDB(); +}); + +describe(AssetRepository.name, () => { + describe('upsertExif', () => { + it('should append to locked columns', async () => { + const { ctx, sut } = setup(); + const { user } = await ctx.newUser(); + const { asset } = await ctx.newAsset({ ownerId: user.id }); + await ctx.newExif({ + assetId: asset.id, + dateTimeOriginal: '2023-11-19T18:11:00', + lockedProperties: ['dateTimeOriginal'], + }); + + await expect( + ctx.database + .selectFrom('asset_exif') + .select('lockedProperties') + .where('assetId', '=', asset.id) + .executeTakeFirstOrThrow(), + ).resolves.toEqual({ lockedProperties: ['dateTimeOriginal'] }); + + await sut.upsertExif( + { assetId: asset.id, lockedProperties: ['description'] }, + { lockedPropertiesBehavior: 'append' }, + ); + + await expect( + ctx.database + .selectFrom('asset_exif') + .select('lockedProperties') + .where('assetId', '=', asset.id) + .executeTakeFirstOrThrow(), + ).resolves.toEqual({ lockedProperties: ['description', 'dateTimeOriginal'] }); + }); + + it('should deduplicate locked columns', async () => { + const { ctx, sut } = setup(); + const { user } = await ctx.newUser(); + const { asset } = await ctx.newAsset({ ownerId: user.id }); + await ctx.newExif({ + assetId: asset.id, + dateTimeOriginal: '2023-11-19T18:11:00', + lockedProperties: ['dateTimeOriginal', 'description'], + }); + + await expect( + ctx.database + .selectFrom('asset_exif') + .select('lockedProperties') + .where('assetId', '=', asset.id) + .executeTakeFirstOrThrow(), + ).resolves.toEqual({ lockedProperties: ['dateTimeOriginal', 'description'] }); + + await sut.upsertExif( + { assetId: asset.id, lockedProperties: ['description'] }, + { lockedPropertiesBehavior: 'append' }, + ); + + await expect( + ctx.database + .selectFrom('asset_exif') + .select('lockedProperties') + .where('assetId', '=', asset.id) + .executeTakeFirstOrThrow(), + ).resolves.toEqual({ lockedProperties: ['description', 'dateTimeOriginal'] }); + }); + }); +}); diff --git a/server/test/medium/specs/services/asset-media.service.spec.ts b/server/test/medium/specs/services/asset-media.service.spec.ts new file mode 100644 index 0000000000..5089850b6f --- /dev/null +++ b/server/test/medium/specs/services/asset-media.service.spec.ts @@ -0,0 +1,100 @@ +import { Kysely } from 'kysely'; +import { AssetMediaStatus } from 'src/dtos/asset-media-response.dto'; +import { AccessRepository } from 'src/repositories/access.repository'; +import { AssetRepository } from 'src/repositories/asset.repository'; +import { EventRepository } from 'src/repositories/event.repository'; +import { JobRepository } from 'src/repositories/job.repository'; +import { LoggingRepository } from 'src/repositories/logging.repository'; +import { StorageRepository } from 'src/repositories/storage.repository'; +import { UserRepository } from 'src/repositories/user.repository'; +import { DB } from 'src/schema'; +import { AssetMediaService } from 'src/services/asset-media.service'; +import { AssetService } from 'src/services/asset.service'; +import { mediumFactory, newMediumService } from 'test/medium.factory'; +import { factory } from 'test/small.factory'; +import { getKyselyDB } from 'test/utils'; + +let defaultDatabase: Kysely; + +const setup = (db?: Kysely) => { + return newMediumService(AssetMediaService, { + database: db || defaultDatabase, + real: [AccessRepository, AssetRepository, UserRepository], + mock: [EventRepository, LoggingRepository, JobRepository, StorageRepository], + }); +}; + +beforeAll(async () => { + defaultDatabase = await getKyselyDB(); +}); + +describe(AssetService.name, () => { + describe('uploadAsset', () => { + it('should work', async () => { + const { sut, ctx } = setup(); + + ctx.getMock(StorageRepository).utimes.mockResolvedValue(); + ctx.getMock(EventRepository).emit.mockResolvedValue(); + ctx.getMock(JobRepository).queue.mockResolvedValue(); + + const { user } = await ctx.newUser(); + const { asset } = await ctx.newAsset({ ownerId: user.id }); + await ctx.newExif({ assetId: asset.id, fileSizeInByte: 12_345 }); + const auth = factory.auth({ user: { id: user.id } }); + const file = mediumFactory.uploadFile(); + + await expect( + sut.uploadAsset( + auth, + { + deviceId: 'some-id', + deviceAssetId: 'some-id', + fileModifiedAt: new Date(), + fileCreatedAt: new Date(), + assetData: Buffer.from('some data'), + }, + file, + ), + ).resolves.toEqual({ + id: expect.any(String), + status: AssetMediaStatus.CREATED, + }); + + expect(ctx.getMock(EventRepository).emit).toHaveBeenCalledWith('AssetCreate', { + asset: expect.objectContaining({ deviceAssetId: 'some-id' }), + }); + }); + + it('should work with an empty metadata list', async () => { + const { sut, ctx } = setup(); + + ctx.getMock(StorageRepository).utimes.mockResolvedValue(); + ctx.getMock(EventRepository).emit.mockResolvedValue(); + ctx.getMock(JobRepository).queue.mockResolvedValue(); + + const { user } = await ctx.newUser(); + const { asset } = await ctx.newAsset({ ownerId: user.id }); + await ctx.newExif({ assetId: asset.id, fileSizeInByte: 12_345 }); + const auth = factory.auth({ user: { id: user.id } }); + const file = mediumFactory.uploadFile(); + + await expect( + sut.uploadAsset( + auth, + { + deviceId: 'some-id', + deviceAssetId: 'some-id', + fileModifiedAt: new Date(), + fileCreatedAt: new Date(), + assetData: Buffer.from('some data'), + metadata: [], + }, + file, + ), + ).resolves.toEqual({ + id: expect.any(String), + status: AssetMediaStatus.CREATED, + }); + }); + }); +}); diff --git a/server/test/medium/specs/services/asset.service.spec.ts b/server/test/medium/specs/services/asset.service.spec.ts index 8b54019fcf..d0949c153c 100644 --- a/server/test/medium/specs/services/asset.service.spec.ts +++ b/server/test/medium/specs/services/asset.service.spec.ts @@ -1,5 +1,5 @@ import { Kysely } from 'kysely'; -import { AssetFileType, JobName, SharedLinkType } from 'src/enum'; +import { AssetFileType, AssetMetadataKey, JobName, SharedLinkType } from 'src/enum'; import { AccessRepository } from 'src/repositories/access.repository'; import { AlbumRepository } from 'src/repositories/album.repository'; import { AssetJobRepository } from 'src/repositories/asset-job.repository'; @@ -270,13 +270,13 @@ describe(AssetService.name, () => { }); describe('update', () => { - it('should update dateTimeOriginal', async () => { + it('should automatically lock lockable columns', async () => { const { sut, ctx } = setup(); ctx.getMock(JobRepository).queue.mockResolvedValue(); const { user } = await ctx.newUser(); const auth = factory.auth({ user }); const { asset } = await ctx.newAsset({ ownerId: user.id }); - await ctx.newExif({ assetId: asset.id, description: 'test' }); + await ctx.newExif({ assetId: asset.id, dateTimeOriginal: '2023-11-19T18:11:00' }); await expect( ctx.database @@ -285,7 +285,14 @@ describe(AssetService.name, () => { .where('assetId', '=', asset.id) .executeTakeFirstOrThrow(), ).resolves.toEqual({ lockedProperties: null }); - await sut.update(auth, asset.id, { dateTimeOriginal: '2023-11-19T18:11:00.000-07:00' }); + + await sut.update(auth, asset.id, { + latitude: 42, + longitude: 42, + rating: 3, + description: 'foo', + dateTimeOriginal: '2023-11-19T18:11:00+01:00', + }); await expect( ctx.database @@ -293,16 +300,83 @@ describe(AssetService.name, () => { .select('lockedProperties') .where('assetId', '=', asset.id) .executeTakeFirstOrThrow(), - ).resolves.toEqual({ lockedProperties: ['dateTimeOriginal'] }); + ).resolves.toEqual({ + lockedProperties: ['timeZone', 'rating', 'description', 'latitude', 'longitude', 'dateTimeOriginal'], + }); + }); + + it('should update dateTimeOriginal', async () => { + const { sut, ctx } = setup(); + ctx.getMock(JobRepository).queue.mockResolvedValue(); + const { user } = await ctx.newUser(); + const auth = factory.auth({ user }); + const { asset } = await ctx.newAsset({ ownerId: user.id }); + await ctx.newExif({ assetId: asset.id, description: 'test' }); + + await sut.update(auth, asset.id, { dateTimeOriginal: '2023-11-19T18:11:00' }); + await expect(ctx.get(AssetRepository).getById(asset.id, { exifInfo: true })).resolves.toEqual( expect.objectContaining({ - exifInfo: expect.objectContaining({ dateTimeOriginal: '2023-11-20T01:11:00+00:00' }), + exifInfo: expect.objectContaining({ dateTimeOriginal: '2023-11-19T18:11:00+00:00', timeZone: null }), + }), + ); + }); + + it('should update dateTimeOriginal with time zone', async () => { + const { sut, ctx } = setup(); + ctx.getMock(JobRepository).queue.mockResolvedValue(); + const { user } = await ctx.newUser(); + const auth = factory.auth({ user }); + const { asset } = await ctx.newAsset({ ownerId: user.id }); + await ctx.newExif({ assetId: asset.id, description: 'test' }); + + await sut.update(auth, asset.id, { dateTimeOriginal: '2023-11-19T18:11:00.000-07:00' }); + + await expect(ctx.get(AssetRepository).getById(asset.id, { exifInfo: true })).resolves.toEqual( + expect.objectContaining({ + exifInfo: expect.objectContaining({ dateTimeOriginal: '2023-11-20T01:11:00+00:00', timeZone: 'UTC-7' }), }), ); }); }); describe('updateAll', () => { + it('should automatically lock lockable columns', async () => { + const { sut, ctx } = setup(); + ctx.getMock(JobRepository).queueAll.mockResolvedValue(); + const { user } = await ctx.newUser(); + const auth = factory.auth({ user }); + const { asset } = await ctx.newAsset({ ownerId: user.id }); + await ctx.newExif({ assetId: asset.id, dateTimeOriginal: '2023-11-19T18:11:00' }); + + await expect( + ctx.database + .selectFrom('asset_exif') + .select('lockedProperties') + .where('assetId', '=', asset.id) + .executeTakeFirstOrThrow(), + ).resolves.toEqual({ lockedProperties: null }); + + await sut.updateAll(auth, { + ids: [asset.id], + latitude: 42, + description: 'foo', + longitude: 42, + rating: 3, + dateTimeOriginal: '2023-11-19T18:11:00+01:00', + }); + + await expect( + ctx.database + .selectFrom('asset_exif') + .select('lockedProperties') + .where('assetId', '=', asset.id) + .executeTakeFirstOrThrow(), + ).resolves.toEqual({ + lockedProperties: ['timeZone', 'rating', 'description', 'latitude', 'longitude', 'dateTimeOriginal'], + }); + }); + it('should relatively update assets', async () => { const { sut, ctx } = setup(); ctx.getMock(JobRepository).queueAll.mockResolvedValue(); @@ -313,13 +387,6 @@ describe(AssetService.name, () => { await sut.updateAll(auth, { ids: [asset.id], dateTimeRelative: -11 }); - await expect( - ctx.database - .selectFrom('asset_exif') - .select('lockedProperties') - .where('assetId', '=', asset.id) - .executeTakeFirstOrThrow(), - ).resolves.toEqual({ lockedProperties: ['timeZone', 'dateTimeOriginal'] }); await expect(ctx.get(AssetRepository).getById(asset.id, { exifInfo: true })).resolves.toEqual( expect.objectContaining({ exifInfo: expect.objectContaining({ @@ -328,5 +395,212 @@ describe(AssetService.name, () => { }), ); }); + + it('should update dateTimeOriginal', async () => { + const { sut, ctx } = setup(); + ctx.getMock(JobRepository).queueAll.mockResolvedValue(); + const { user } = await ctx.newUser(); + const auth = factory.auth({ user }); + const { asset } = await ctx.newAsset({ ownerId: user.id }); + await ctx.newExif({ assetId: asset.id, description: 'test' }); + + await sut.updateAll(auth, { ids: [asset.id], dateTimeOriginal: '2023-11-19T18:11:00' }); + + await expect(ctx.get(AssetRepository).getById(asset.id, { exifInfo: true })).resolves.toEqual( + expect.objectContaining({ + exifInfo: expect.objectContaining({ dateTimeOriginal: '2023-11-19T18:11:00+00:00', timeZone: null }), + }), + ); + }); + + it('should update dateTimeOriginal with time zone', async () => { + const { sut, ctx } = setup(); + ctx.getMock(JobRepository).queueAll.mockResolvedValue(); + const { user } = await ctx.newUser(); + const auth = factory.auth({ user }); + const { asset } = await ctx.newAsset({ ownerId: user.id }); + await ctx.newExif({ assetId: asset.id, description: 'test' }); + + await sut.updateAll(auth, { ids: [asset.id], dateTimeOriginal: '2023-11-19T18:11:00.000-07:00' }); + + await expect(ctx.get(AssetRepository).getById(asset.id, { exifInfo: true })).resolves.toEqual( + expect.objectContaining({ + exifInfo: expect.objectContaining({ dateTimeOriginal: '2023-11-20T01:11:00+00:00', timeZone: 'UTC-7' }), + }), + ); + }); + }); + + describe('upsertBulkMetadata', () => { + it('should work', async () => { + const { sut, ctx } = setup(); + const { user } = await ctx.newUser(); + const auth = factory.auth({ user }); + const { asset } = await ctx.newAsset({ ownerId: user.id }); + const items = [{ assetId: asset.id, key: AssetMetadataKey.MobileApp, value: { iCloudId: 'foo' } }]; + + await sut.upsertBulkMetadata(auth, { items }); + + const metadata = await ctx.get(AssetRepository).getMetadata(asset.id); + expect(metadata.length).toEqual(1); + expect(metadata[0]).toEqual( + expect.objectContaining({ key: AssetMetadataKey.MobileApp, value: { iCloudId: 'foo' } }), + ); + }); + + it('should work on conflict', async () => { + const { sut, ctx } = setup(); + const { user } = await ctx.newUser(); + const auth = factory.auth({ user }); + const { asset } = await ctx.newAsset({ ownerId: user.id }); + await ctx.newMetadata({ assetId: asset.id, key: AssetMetadataKey.MobileApp, value: { iCloudId: 'old-id' } }); + + // verify existing metadata + await expect(ctx.get(AssetRepository).getMetadata(asset.id)).resolves.toEqual([ + expect.objectContaining({ key: AssetMetadataKey.MobileApp, value: { iCloudId: 'old-id' } }), + ]); + + const items = [{ assetId: asset.id, key: AssetMetadataKey.MobileApp, value: { iCloudId: 'new-id' } }]; + await sut.upsertBulkMetadata(auth, { items }); + + // verify updated metadata + await expect(ctx.get(AssetRepository).getMetadata(asset.id)).resolves.toEqual([ + expect.objectContaining({ key: AssetMetadataKey.MobileApp, value: { iCloudId: 'new-id' } }), + ]); + }); + + it('should work with multiple assets', async () => { + const { sut, ctx } = setup(); + const { user } = await ctx.newUser(); + const auth = factory.auth({ user }); + const { asset: asset1 } = await ctx.newAsset({ ownerId: user.id }); + const { asset: asset2 } = await ctx.newAsset({ ownerId: user.id }); + + const items = [ + { assetId: asset1.id, key: AssetMetadataKey.MobileApp, value: { iCloudId: 'id1' } }, + { assetId: asset2.id, key: AssetMetadataKey.MobileApp, value: { iCloudId: 'id2' } }, + ]; + + await sut.upsertBulkMetadata(auth, { items }); + + const metadata1 = await ctx.get(AssetRepository).getMetadata(asset1.id); + expect(metadata1).toEqual([ + expect.objectContaining({ key: AssetMetadataKey.MobileApp, value: { iCloudId: 'id1' } }), + ]); + + const metadata2 = await ctx.get(AssetRepository).getMetadata(asset2.id); + expect(metadata2).toEqual([ + expect.objectContaining({ key: AssetMetadataKey.MobileApp, value: { iCloudId: 'id2' } }), + ]); + }); + + it('should work with multiple metadata for the same asset', async () => { + const { sut, ctx } = setup(); + const { user } = await ctx.newUser(); + const auth = factory.auth({ user }); + const { asset } = await ctx.newAsset({ ownerId: user.id }); + + const items = [ + { assetId: asset.id, key: AssetMetadataKey.MobileApp, value: { iCloudId: 'id1' } }, + { assetId: asset.id, key: 'some-other-key', value: { foo: 'bar' } }, + ]; + + await sut.upsertBulkMetadata(auth, { items }); + + const metadata = await ctx.get(AssetRepository).getMetadata(asset.id); + expect(metadata).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + key: AssetMetadataKey.MobileApp, + value: { iCloudId: 'id1' }, + }), + expect.objectContaining({ + key: 'some-other-key', + value: { foo: 'bar' }, + }), + ]), + ); + }); + }); + + describe('deleteBulkMetadata', () => { + it('should work', async () => { + const { sut, ctx } = setup(); + const { user } = await ctx.newUser(); + const auth = factory.auth({ user }); + const { asset } = await ctx.newAsset({ ownerId: user.id }); + await ctx.newMetadata({ assetId: asset.id, key: AssetMetadataKey.MobileApp, value: { iCloudId: 'foo' } }); + + await sut.deleteBulkMetadata(auth, { items: [{ assetId: asset.id, key: AssetMetadataKey.MobileApp }] }); + + const metadata = await ctx.get(AssetRepository).getMetadata(asset.id); + expect(metadata.length).toEqual(0); + }); + + it('should work even if the item does not exist', async () => { + const { sut, ctx } = setup(); + const { user } = await ctx.newUser(); + const auth = factory.auth({ user }); + const { asset } = await ctx.newAsset({ ownerId: user.id }); + + await sut.deleteBulkMetadata(auth, { items: [{ assetId: asset.id, key: AssetMetadataKey.MobileApp }] }); + + const metadata = await ctx.get(AssetRepository).getMetadata(asset.id); + expect(metadata.length).toEqual(0); + }); + + it('should work with multiple assets', async () => { + const { sut, ctx } = setup(); + const { user } = await ctx.newUser(); + const auth = factory.auth({ user }); + const { asset: asset1 } = await ctx.newAsset({ ownerId: user.id }); + await ctx.newMetadata({ assetId: asset1.id, key: AssetMetadataKey.MobileApp, value: { iCloudId: 'id1' } }); + const { asset: asset2 } = await ctx.newAsset({ ownerId: user.id }); + await ctx.newMetadata({ assetId: asset2.id, key: AssetMetadataKey.MobileApp, value: { iCloudId: 'id2' } }); + + await sut.deleteBulkMetadata(auth, { + items: [ + { assetId: asset1.id, key: AssetMetadataKey.MobileApp }, + { assetId: asset2.id, key: AssetMetadataKey.MobileApp }, + ], + }); + + await expect(ctx.get(AssetRepository).getMetadata(asset1.id)).resolves.toEqual([]); + await expect(ctx.get(AssetRepository).getMetadata(asset2.id)).resolves.toEqual([]); + }); + + it('should work with multiple metadata for the same asset', async () => { + const { sut, ctx } = setup(); + const { user } = await ctx.newUser(); + const auth = factory.auth({ user }); + const { asset } = await ctx.newAsset({ ownerId: user.id }); + await ctx.newMetadata({ assetId: asset.id, key: AssetMetadataKey.MobileApp, value: { iCloudId: 'id1' } }); + await ctx.newMetadata({ assetId: asset.id, key: 'some-other-key', value: { foo: 'bar' } }); + + await sut.deleteBulkMetadata(auth, { + items: [ + { assetId: asset.id, key: AssetMetadataKey.MobileApp }, + { assetId: asset.id, key: 'some-other-key' }, + ], + }); + + await expect(ctx.get(AssetRepository).getMetadata(asset.id)).resolves.toEqual([]); + }); + + it('should not delete unspecified keys', async () => { + const { sut, ctx } = setup(); + const { user } = await ctx.newUser(); + const auth = factory.auth({ user }); + const { asset } = await ctx.newAsset({ ownerId: user.id }); + await ctx.newMetadata({ assetId: asset.id, key: AssetMetadataKey.MobileApp, value: { iCloudId: 'id1' } }); + await ctx.newMetadata({ assetId: asset.id, key: 'some-other-key', value: { foo: 'bar' } }); + + await sut.deleteBulkMetadata(auth, { + items: [{ assetId: asset.id, key: AssetMetadataKey.MobileApp }], + }); + + const metadata = await ctx.get(AssetRepository).getMetadata(asset.id); + expect(metadata).toEqual([expect.objectContaining({ key: 'some-other-key', value: { foo: 'bar' } })]); + }); }); }); diff --git a/server/test/medium/specs/services/search.service.spec.ts b/server/test/medium/specs/services/search.service.spec.ts index 517e6cc277..f58ffb6a25 100644 --- a/server/test/medium/specs/services/search.service.spec.ts +++ b/server/test/medium/specs/services/search.service.spec.ts @@ -1,5 +1,6 @@ import { Kysely } from 'kysely'; import { AccessRepository } from 'src/repositories/access.repository'; +import { AssetRepository } from 'src/repositories/asset.repository'; import { DatabaseRepository } from 'src/repositories/database.repository'; import { LoggingRepository } from 'src/repositories/logging.repository'; import { PartnerRepository } from 'src/repositories/partner.repository'; @@ -16,7 +17,14 @@ let defaultDatabase: Kysely; const setup = (db?: Kysely) => { return newMediumService(SearchService, { database: db || defaultDatabase, - real: [AccessRepository, DatabaseRepository, SearchRepository, PartnerRepository, PersonRepository], + real: [ + AccessRepository, + AssetRepository, + DatabaseRepository, + SearchRepository, + PartnerRepository, + PersonRepository, + ], mock: [LoggingRepository], }); }; @@ -52,4 +60,32 @@ describe(SearchService.name, () => { expect.objectContaining({ id: assets[1].id }), ]); }); + + describe('searchStatistics', () => { + it('should return statistics when filtering by personIds', async () => { + const { sut, ctx } = setup(); + const { user } = await ctx.newUser(); + const { asset } = await ctx.newAsset({ ownerId: user.id }); + const { person } = await ctx.newPerson({ ownerId: user.id }); + await ctx.newAssetFace({ assetId: asset.id, personId: person.id }); + + const auth = factory.auth({ user: { id: user.id } }); + + const result = await sut.searchStatistics(auth, { personIds: [person.id] }); + + expect(result).toEqual({ total: 1 }); + }); + + it('should return zero when no assets match the personIds filter', async () => { + const { sut, ctx } = setup(); + const { user } = await ctx.newUser(); + const { person } = await ctx.newPerson({ ownerId: user.id }); + + const auth = factory.auth({ user: { id: user.id } }); + + const result = await sut.searchStatistics(auth, { personIds: [person.id] }); + + expect(result).toEqual({ total: 0 }); + }); + }); }); diff --git a/server/test/medium/specs/services/workflow.service.spec.ts b/server/test/medium/specs/services/workflow.service.spec.ts index 1fddc2a7cf..229737c531 100644 --- a/server/test/medium/specs/services/workflow.service.spec.ts +++ b/server/test/medium/specs/services/workflow.service.spec.ts @@ -611,6 +611,100 @@ describe(WorkflowService.name, () => { sut.update(auth, created.id, { actions: [{ pluginActionId: factory.uuid(), actionConfig: {} }] }), ).rejects.toThrow(); }); + + it('should update trigger type', async () => { + const { sut, ctx } = setup(); + const { user } = await ctx.newUser(); + const auth = factory.auth({ user }); + + const created = await sut.create(auth, { + triggerType: PluginTriggerType.PersonRecognized, + name: 'test-workflow', + description: 'Test', + enabled: true, + filters: [], + actions: [], + }); + + await sut.update(auth, created.id, { + triggerType: PluginTriggerType.AssetCreate, + }); + + const fetched = await sut.get(auth, created.id); + expect(fetched.triggerType).toBe(PluginTriggerType.AssetCreate); + }); + + it('should add filters', async () => { + const { sut, ctx } = setup(); + const { user } = await ctx.newUser(); + const auth = factory.auth({ user }); + + const created = await sut.create(auth, { + triggerType: PluginTriggerType.AssetCreate, + name: 'test-workflow', + description: 'Test', + enabled: true, + filters: [], + actions: [], + }); + + await sut.update(auth, created.id, { + filters: [ + { pluginFilterId: testFilterId, filterConfig: { first: true } }, + { pluginFilterId: testFilterId, filterConfig: { second: true } }, + ], + }); + + const fetched = await sut.get(auth, created.id); + expect(fetched.filters).toHaveLength(2); + expect(fetched.filters[0].filterConfig).toEqual({ first: true }); + expect(fetched.filters[1].filterConfig).toEqual({ second: true }); + }); + + it('should replace existing filters', async () => { + const { sut, ctx } = setup(); + const { user } = await ctx.newUser(); + const auth = factory.auth({ user }); + + const created = await sut.create(auth, { + triggerType: PluginTriggerType.AssetCreate, + name: 'test-workflow', + description: 'Test', + enabled: true, + filters: [{ pluginFilterId: testFilterId, filterConfig: { original: true } }], + actions: [], + }); + + await sut.update(auth, created.id, { + filters: [{ pluginFilterId: testFilterId, filterConfig: { replaced: true } }], + }); + + const fetched = await sut.get(auth, created.id); + expect(fetched.filters).toHaveLength(1); + expect(fetched.filters[0].filterConfig).toEqual({ replaced: true }); + }); + + it('should remove existing filters', async () => { + const { sut, ctx } = setup(); + const { user } = await ctx.newUser(); + const auth = factory.auth({ user }); + + const created = await sut.create(auth, { + triggerType: PluginTriggerType.AssetCreate, + name: 'test-workflow', + description: 'Test', + enabled: true, + filters: [{ pluginFilterId: testFilterId, filterConfig: { toRemove: true } }], + actions: [], + }); + + await sut.update(auth, created.id, { + filters: [], + }); + + const fetched = await sut.get(auth, created.id); + expect(fetched.filters).toHaveLength(0); + }); }); describe('delete', () => { diff --git a/server/test/repositories/asset.repository.mock.ts b/server/test/repositories/asset.repository.mock.ts index 5ba77ddc2f..4847c84a35 100644 --- a/server/test/repositories/asset.repository.mock.ts +++ b/server/test/repositories/asset.repository.mock.ts @@ -44,8 +44,10 @@ export const newAssetRepositoryMock = (): Mocked = (textarea, { height = 'auto' }) => { - const update = () => { - void tick().then(() => { - textarea.style.height = height; - textarea.style.height = `${textarea.scrollHeight}px`; - }); - }; - - update(); - return { update }; -}; diff --git a/web/src/lib/actions/drag-and-drop.ts b/web/src/lib/actions/drag-and-drop.ts new file mode 100644 index 0000000000..04de6d9744 --- /dev/null +++ b/web/src/lib/actions/drag-and-drop.ts @@ -0,0 +1,118 @@ +export interface DragAndDropOptions { + index: number; + onDragStart?: (index: number) => void; + onDragEnter?: (index: number) => void; + onDrop?: (e: DragEvent, index: number) => void; + onDragEnd?: () => void; + isDragging?: boolean; + isDragOver?: boolean; +} + +export function dragAndDrop(node: HTMLElement, options: DragAndDropOptions) { + let { index, onDragStart, onDragEnter, onDrop, onDragEnd, isDragging, isDragOver } = options; + + const isFormElement = (element: HTMLElement) => { + return element.tagName === 'INPUT' || element.tagName === 'TEXTAREA' || element.tagName === 'SELECT'; + }; + + const handleDragStart = (e: DragEvent) => { + // Prevent drag if it originated from an input, textarea, or select element + const target = e.target as HTMLElement; + if (isFormElement(target)) { + e.preventDefault(); + return; + } + onDragStart?.(index); + }; + + const handleDragEnter = () => { + onDragEnter?.(index); + }; + + const handleDragOver = (e: DragEvent) => { + e.preventDefault(); + }; + + const handleDrop = (e: DragEvent) => { + onDrop?.(e, index); + }; + + const handleDragEnd = () => { + onDragEnd?.(); + }; + + // Disable draggable when focusing on form elements (fixes Firefox input interaction) + const handleFocusIn = (e: FocusEvent) => { + const target = e.target as HTMLElement; + if (isFormElement(target)) { + node.setAttribute('draggable', 'false'); + } + }; + + const handleFocusOut = (e: FocusEvent) => { + const target = e.target as HTMLElement; + if (isFormElement(target)) { + node.setAttribute('draggable', 'true'); + } + }; + + node.setAttribute('draggable', 'true'); + node.setAttribute('role', 'button'); + node.setAttribute('tabindex', '0'); + + node.addEventListener('dragstart', handleDragStart); + node.addEventListener('dragenter', handleDragEnter); + node.addEventListener('dragover', handleDragOver); + node.addEventListener('drop', handleDrop); + node.addEventListener('dragend', handleDragEnd); + node.addEventListener('focusin', handleFocusIn); + node.addEventListener('focusout', handleFocusOut); + + // Update classes based on drag state + const updateClasses = (dragging: boolean, dragOver: boolean) => { + // Remove all drag-related classes first + node.classList.remove('opacity-50', 'border-gray-400', 'dark:border-gray-500', 'border-solid'); + + // Add back only the active ones + if (dragging) { + node.classList.add('opacity-50'); + } + + if (dragOver) { + node.classList.add('border-gray-400', 'dark:border-gray-500', 'border-solid'); + node.classList.remove('border-transparent'); + } else { + node.classList.add('border-transparent'); + } + }; + + updateClasses(isDragging || false, isDragOver || false); + + return { + update(newOptions: DragAndDropOptions) { + index = newOptions.index; + onDragStart = newOptions.onDragStart; + onDragEnter = newOptions.onDragEnter; + onDrop = newOptions.onDrop; + onDragEnd = newOptions.onDragEnd; + + const newIsDragging = newOptions.isDragging || false; + const newIsDragOver = newOptions.isDragOver || false; + + if (newIsDragging !== isDragging || newIsDragOver !== isDragOver) { + isDragging = newIsDragging; + isDragOver = newIsDragOver; + updateClasses(isDragging, isDragOver); + } + }, + destroy() { + node.removeEventListener('dragstart', handleDragStart); + node.removeEventListener('dragenter', handleDragEnter); + node.removeEventListener('dragover', handleDragOver); + node.removeEventListener('drop', handleDrop); + node.removeEventListener('dragend', handleDragEnd); + node.removeEventListener('focusin', handleFocusIn); + node.removeEventListener('focusout', handleFocusOut); + }, + }; +} diff --git a/web/src/lib/assets/empty-workflows.svg b/web/src/lib/assets/empty-workflows.svg new file mode 100644 index 0000000000..f601ca984a --- /dev/null +++ b/web/src/lib/assets/empty-workflows.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/lib/attachments/drag-and-drop.svelte.ts b/web/src/lib/attachments/drag-and-drop.svelte.ts new file mode 100644 index 0000000000..950e8e5b80 --- /dev/null +++ b/web/src/lib/attachments/drag-and-drop.svelte.ts @@ -0,0 +1,105 @@ +import type { Attachment } from 'svelte/attachments'; + +export interface DragAndDropOptions { + index: number; + onDragStart?: (index: number) => void; + onDragEnter?: (index: number) => void; + onDrop?: (e: DragEvent, index: number) => void; + onDragEnd?: () => void; + isDragging?: boolean; + isDragOver?: boolean; +} + +export function dragAndDrop(options: DragAndDropOptions): Attachment { + return (node: Element) => { + const element = node as HTMLElement; + const { index, onDragStart, onDragEnter, onDrop, onDragEnd, isDragging, isDragOver } = options; + + const isFormElement = (el: HTMLElement) => { + return el.tagName === 'INPUT' || el.tagName === 'TEXTAREA' || el.tagName === 'SELECT'; + }; + + const handleDragStart = (e: DragEvent) => { + // Prevent drag if it originated from an input, textarea, or select element + const target = e.target as HTMLElement; + if (isFormElement(target)) { + e.preventDefault(); + return; + } + onDragStart?.(index); + }; + + const handleDragEnter = () => { + onDragEnter?.(index); + }; + + const handleDragOver = (e: DragEvent) => { + e.preventDefault(); + }; + + const handleDrop = (e: DragEvent) => { + onDrop?.(e, index); + }; + + const handleDragEnd = () => { + onDragEnd?.(); + }; + + // Disable draggable when focusing on form elements (fixes Firefox input interaction) + const handleFocusIn = (e: FocusEvent) => { + const target = e.target as HTMLElement; + if (isFormElement(target)) { + element.setAttribute('draggable', 'false'); + } + }; + + const handleFocusOut = (e: FocusEvent) => { + const target = e.target as HTMLElement; + if (isFormElement(target)) { + element.setAttribute('draggable', 'true'); + } + }; + + // Update classes based on drag state + const updateClasses = (dragging: boolean, dragOver: boolean) => { + // Remove all drag-related classes first + element.classList.remove('opacity-50', 'border-light-500', 'border-solid'); + + // Add back only the active ones + if (dragging) { + element.classList.add('opacity-50'); + } + + if (dragOver) { + element.classList.add('border-light-500', 'border-solid'); + element.classList.remove('border-transparent'); + } else { + element.classList.add('border-transparent'); + } + }; + + element.setAttribute('draggable', 'true'); + element.setAttribute('role', 'button'); + element.setAttribute('tabindex', '0'); + + element.addEventListener('dragstart', handleDragStart); + element.addEventListener('dragenter', handleDragEnter); + element.addEventListener('dragover', handleDragOver); + element.addEventListener('drop', handleDrop); + element.addEventListener('dragend', handleDragEnd); + element.addEventListener('focusin', handleFocusIn); + element.addEventListener('focusout', handleFocusOut); + + updateClasses(isDragging || false, isDragOver || false); + + return () => { + element.removeEventListener('dragstart', handleDragStart); + element.removeEventListener('dragenter', handleDragEnter); + element.removeEventListener('dragover', handleDragOver); + element.removeEventListener('drop', handleDrop); + element.removeEventListener('dragend', handleDragEnd); + element.removeEventListener('focusin', handleFocusIn); + element.removeEventListener('focusout', handleFocusOut); + }; + }; +} diff --git a/web/src/lib/cast/cast-button.svelte b/web/src/lib/cast/cast-button.svelte deleted file mode 100644 index 392418daa5..0000000000 --- a/web/src/lib/cast/cast-button.svelte +++ /dev/null @@ -1,24 +0,0 @@ - - -{#if castManager.availableDestinations.length > 0 && castManager.availableDestinations[0].type === CastDestinationType.GCAST} - void GCastDestination.showCastDialog()} - aria-label={$t('cast')} - /> -{/if} diff --git a/web/src/lib/components/ActionButton.svelte b/web/src/lib/components/ActionButton.svelte index e0e7e1eff7..ae8d1199e0 100644 --- a/web/src/lib/components/ActionButton.svelte +++ b/web/src/lib/components/ActionButton.svelte @@ -1,4 +1,5 @@ -{#if action.$if?.() ?? true} +{#if icon && isEnabled(action)} onAction(action)} /> {/if} diff --git a/web/src/lib/components/ActionMenuItem.svelte b/web/src/lib/components/ActionMenuItem.svelte new file mode 100644 index 0000000000..d50d50bf0b --- /dev/null +++ b/web/src/lib/components/ActionMenuItem.svelte @@ -0,0 +1,16 @@ + + +{#if icon && isEnabled(action)} + onAction(action)} /> +{/if} diff --git a/web/src/lib/components/AdminCard.svelte b/web/src/lib/components/AdminCard.svelte new file mode 100644 index 0000000000..4aaf890ca4 --- /dev/null +++ b/web/src/lib/components/AdminCard.svelte @@ -0,0 +1,33 @@ + + + + +
+
+ + {title} +
+ {#if headerAction} + + {/if} +
+
+ +
+ {@render children?.()} +
+
+
diff --git a/web/src/lib/sidebars/AdminSidebar.svelte b/web/src/lib/components/AdminSidebar.svelte similarity index 95% rename from web/src/lib/sidebars/AdminSidebar.svelte rename to web/src/lib/components/AdminSidebar.svelte index 919c072527..fa660d7e2f 100644 --- a/web/src/lib/sidebars/AdminSidebar.svelte +++ b/web/src/lib/components/AdminSidebar.svelte @@ -9,7 +9,7 @@
- + diff --git a/web/src/lib/components/SharedLinkExpiration.svelte b/web/src/lib/components/SharedLinkExpiration.svelte index 735d9f8712..f8f6167084 100644 --- a/web/src/lib/components/SharedLinkExpiration.svelte +++ b/web/src/lib/components/SharedLinkExpiration.svelte @@ -1,7 +1,7 @@ -{#if action.$if?.() ?? true} - onAction(action)} /> +{#if icon && (action.$if?.() ?? true)} + onAction(action)} /> {/if} diff --git a/web/src/lib/components/TestWrapper.svelte b/web/src/lib/components/TestWrapper.svelte new file mode 100644 index 0000000000..918053cfc3 --- /dev/null +++ b/web/src/lib/components/TestWrapper.svelte @@ -0,0 +1,15 @@ + + + + + diff --git a/web/src/lib/components/admin-settings/StorageTemplateSettings.svelte b/web/src/lib/components/admin-settings/StorageTemplateSettings.svelte index e119e8d8b0..e8514358ee 100644 --- a/web/src/lib/components/admin-settings/StorageTemplateSettings.svelte +++ b/web/src/lib/components/admin-settings/StorageTemplateSettings.svelte @@ -60,6 +60,9 @@ assetId: 'a8312960-e277-447d-b4ea-56717ccba856', assetIdShort: '56717ccba856', album: $t('album_name'), + make: 'FUJIFILM', + model: 'X-T50', + lensModel: 'XF27mm F2.8 R WR', }; const dt = luxon.DateTime.fromISO(new Date('2022-02-03T04:56:05.250').toISOString()); diff --git a/web/src/lib/components/admin-settings/SupportedVariablesPanel.svelte b/web/src/lib/components/admin-settings/SupportedVariablesPanel.svelte index 74a05b553f..4274ac70bc 100644 --- a/web/src/lib/components/admin-settings/SupportedVariablesPanel.svelte +++ b/web/src/lib/components/admin-settings/SupportedVariablesPanel.svelte @@ -24,10 +24,8 @@
-

{$t('other')}

+

{$t('album')}

    -
  • {`{{assetId}}`} - Asset ID
  • -
  • {`{{assetIdShort}}`} - Asset ID (last 12 characters)
  • {`{{album}}`} - Album Name
  • {`{{album-startDate-x}}`} - Album Start Date and Time (e.g. album-startDate-yy). @@ -39,5 +37,20 @@
+
+

{$t('camera')}

+
    +
  • {`{{make}}`} - FUJIFILM
  • +
  • {`{{model}}`} - X-T50
  • +
  • {`{{lensModel}}`} - XF27mm F2.8 R WR
  • +
+
+
+

{$t('other')}

+
    +
  • {`{{assetId}}`} - Asset ID
  • +
  • {`{{assetIdShort}}`} - Asset ID (last 12 characters)
  • +
+
diff --git a/web/src/lib/components/album-page/__tests__/album-card.spec.ts b/web/src/lib/components/album-page/__tests__/album-card.spec.ts index 9e396bec3e..67ae2daf2e 100644 --- a/web/src/lib/components/album-page/__tests__/album-card.spec.ts +++ b/web/src/lib/components/album-page/__tests__/album-card.spec.ts @@ -1,4 +1,5 @@ import { sdkMock } from '$lib/__mocks__/sdk.mock'; +import { renderWithTooltips } from '$tests/helpers'; import { albumFactory } from '@test-data/factories/album-factory'; import '@testing-library/jest-dom'; import { render, waitFor, type RenderResult } from '@testing-library/svelte'; @@ -88,7 +89,7 @@ describe('AlbumCard component', () => { const album = Object.freeze(albumFactory.build({ albumThumbnailAssetId: null })); beforeEach(async () => { - sut = render(AlbumCard, { album, onShowContextMenu }); + sut = renderWithTooltips(AlbumCard, { album, onShowContextMenu }); const albumImgElement = sut.getByTestId('album-image'); await waitFor(() => expect(albumImgElement).toHaveAttribute('src')); diff --git a/web/src/lib/components/album-page/album-card-group.svelte b/web/src/lib/components/album-page/album-card-group.svelte index bfb642b82c..0d10b1baa1 100644 --- a/web/src/lib/components/album-page/album-card-group.svelte +++ b/web/src/lib/components/album-page/album-card-group.svelte @@ -65,7 +65,6 @@
{#each albums as album, index (album.id)} oncontextmenu(event, album)} diff --git a/web/src/lib/components/album-page/album-description.svelte b/web/src/lib/components/album-page/album-description.svelte index 46b424f93a..2b2a185c5b 100644 --- a/web/src/lib/components/album-page/album-description.svelte +++ b/web/src/lib/components/album-page/album-description.svelte @@ -1,8 +1,10 @@ {#if isOwned} - ({ + shortcut: { key: 'Enter', ctrl: true }, + onShortcut: (e) => e.currentTarget.blur(), + }))} /> {:else if description}

diff --git a/web/src/lib/components/album-page/album-viewer.svelte b/web/src/lib/components/album-page/album-viewer.svelte index d5fdb36822..b7fcaa88ec 100644 --- a/web/src/lib/components/album-page/album-viewer.svelte +++ b/web/src/lib/components/album-page/album-viewer.svelte @@ -1,6 +1,6 @@ + {#if sharedLink.allowUpload} - import { goto } from '$app/navigation'; - import { resolve } from '$app/paths'; import AlbumCardGroup from '$lib/components/album-page/album-card-group.svelte'; import AlbumsTable from '$lib/components/album-page/albums-table.svelte'; import OnEvents from '$lib/components/OnEvents.svelte'; import MenuOption from '$lib/components/shared-components/context-menu/menu-option.svelte'; import RightClickContextMenu from '$lib/components/shared-components/context-menu/right-click-context-menu.svelte'; - import ToastAction from '$lib/components/ToastAction.svelte'; - import { AppRoute } from '$lib/constants'; import AlbumEditModal from '$lib/modals/AlbumEditModal.svelte'; import AlbumShareModal from '$lib/modals/AlbumShareModal.svelte'; - import SharedLinkCreateModal from '$lib/modals/SharedLinkCreateModal.svelte'; import { handleDeleteAlbum, handleDownloadAlbum } from '$lib/services/album.service'; import { AlbumFilter, AlbumGroupBy, AlbumSortBy, AlbumViewMode, - SortOrder, locale, + SortOrder, type AlbumViewSettings, } from '$lib/stores/preferences.store'; import { user } from '$lib/stores/user.store'; import { userInteraction } from '$lib/stores/user.svelte'; import { getSelectedAlbumGroupOption, sortAlbums, stringToSortOrder, type AlbumGroup } from '$lib/utils/album-utils'; import type { ContextMenuPosition } from '$lib/utils/context-menu'; - import { handleError } from '$lib/utils/handle-error'; import { normalizeSearchString } from '$lib/utils/string-utils'; - import { addUsersToAlbum, type AlbumResponseDto, type AlbumUserAddDto } from '@immich/sdk'; - import { modalManager, toastManager } from '@immich/ui'; + import { type AlbumResponseDto, type SharedLinkResponseDto } from '@immich/sdk'; + import { modalManager } from '@immich/ui'; import { mdiDeleteOutline, mdiDownload, mdiRenameOutline, mdiShareVariantOutline } from '@mdi/js'; import { groupBy } from 'lodash-es'; import { onMount, type Snippet } from 'svelte'; @@ -199,31 +193,12 @@ switch (action) { case 'edit': { - const editedAlbum = await modalManager.show(AlbumEditModal, { album: selectedAlbum }); - if (editedAlbum) { - successEditAlbumInfo(editedAlbum); - } + await modalManager.show(AlbumEditModal, { album: selectedAlbum }); break; } case 'share': { - const result = await modalManager.show(AlbumShareModal, { album: selectedAlbum }); - switch (result?.action) { - case 'sharedUsers': { - await handleAddUsers(selectedAlbum, result.data); - break; - } - - case 'sharedLink': { - const success = await modalManager.show(SharedLinkCreateModal, { albumId: selectedAlbum.id }); - if (success) { - selectedAlbum.shared = true; - selectedAlbum.hasSharedLink = true; - updateAlbumInfo(selectedAlbum); - } - break; - } - } + await modalManager.show(AlbumShareModal, { album: selectedAlbum }); break; } @@ -244,62 +219,38 @@ await Promise.allSettled(albumsToRemove.map((album) => handleDeleteAlbum(album, { prompt: false, notify: false }))); }; - const updateAlbumInfo = (album: AlbumResponseDto) => { - ownedAlbums[ownedAlbums.findIndex(({ id }) => id === album.id)] = album; - sharedAlbums[sharedAlbums.findIndex(({ id }) => id === album.id)] = album; - }; - - const updateRecentAlbumInfo = (album: AlbumResponseDto) => { - for (const cachedAlbum of userInteraction.recentAlbums || []) { - if (cachedAlbum.id === album.id) { - Object.assign(cachedAlbum, { ...cachedAlbum, ...album }); - break; - } + const findAndUpdate = (albums: AlbumResponseDto[], album: AlbumResponseDto) => { + const target = albums.find(({ id }) => id === album.id); + if (target) { + Object.assign(target, album); } + + return albums; }; - const successEditAlbumInfo = (album: AlbumResponseDto) => { - toastManager.custom({ - component: ToastAction, - props: { - color: 'primary', - title: $t('success'), - description: $t('album_info_updated'), - button: { - text: $t('view_album'), - color: 'primary', - onClick() { - return goto(resolve(`${AppRoute.ALBUMS}/${album.id}`)); - }, - }, - }, - }); - - updateAlbumInfo(album); - updateRecentAlbumInfo(album); + const onUpdate = (album: AlbumResponseDto) => { + ownedAlbums = findAndUpdate(ownedAlbums, album); + sharedAlbums = findAndUpdate(sharedAlbums, album); }; - const handleAddUsers = async (album: AlbumResponseDto, albumUsers: AlbumUserAddDto[]) => { - try { - const updatedAlbum = await addUsersToAlbum({ - id: album.id, - addUsersDto: { - albumUsers, - }, - }); - updateAlbumInfo(updatedAlbum); - } catch (error) { - handleError(error, $t('errors.unable_to_add_album_users')); - } + const onAlbumUpdate = (album: AlbumResponseDto) => { + onUpdate(album); + userInteraction.recentAlbums = findAndUpdate(userInteraction.recentAlbums || [], album); }; const onAlbumDelete = (album: AlbumResponseDto) => { ownedAlbums = ownedAlbums.filter(({ id }) => id !== album.id); sharedAlbums = sharedAlbums.filter(({ id }) => id !== album.id); }; + + const onSharedLinkCreate = (sharedLink: SharedLinkResponseDto) => { + if (sharedLink.album) { + onUpdate(sharedLink.album); + } + }; - + {#if albums.length > 0} {#if userSettings.view === AlbumViewMode.Cover} diff --git a/web/src/lib/components/asset-viewer/actions/action.ts b/web/src/lib/components/asset-viewer/actions/action.ts index 6a807d2766..19cc5afa8d 100644 --- a/web/src/lib/components/asset-viewer/actions/action.ts +++ b/web/src/lib/components/asset-viewer/actions/action.ts @@ -5,8 +5,6 @@ import type { AlbumResponseDto, AssetResponseDto, PersonResponseDto, StackRespon type ActionMap = { [AssetAction.ARCHIVE]: { asset: TimelineAsset }; [AssetAction.UNARCHIVE]: { asset: TimelineAsset }; - [AssetAction.FAVORITE]: { asset: TimelineAsset }; - [AssetAction.UNFAVORITE]: { asset: TimelineAsset }; [AssetAction.TRASH]: { asset: TimelineAsset }; [AssetAction.DELETE]: { asset: TimelineAsset }; [AssetAction.RESTORE]: { asset: TimelineAsset }; @@ -20,6 +18,7 @@ type ActionMap = { [AssetAction.SET_VISIBILITY_LOCKED]: { asset: TimelineAsset }; [AssetAction.SET_VISIBILITY_TIMELINE]: { asset: TimelineAsset }; [AssetAction.SET_PERSON_FEATURED_PHOTO]: { asset: AssetResponseDto; person: PersonResponseDto }; + [AssetAction.RATING]: { asset: TimelineAsset; rating: number | null }; }; export type Action = { diff --git a/web/src/lib/components/asset-viewer/actions/close-action.svelte b/web/src/lib/components/asset-viewer/actions/close-action.svelte deleted file mode 100644 index 7b3f525a3a..0000000000 --- a/web/src/lib/components/asset-viewer/actions/close-action.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - - - - diff --git a/web/src/lib/components/asset-viewer/actions/delete-action.spec.ts b/web/src/lib/components/asset-viewer/actions/delete-action.spec.ts index e0b33ff48b..8ba3432464 100644 --- a/web/src/lib/components/asset-viewer/actions/delete-action.spec.ts +++ b/web/src/lib/components/asset-viewer/actions/delete-action.spec.ts @@ -1,20 +1,31 @@ +import { renderWithTooltips } from '$tests/helpers'; import type { AssetResponseDto } from '@immich/sdk'; import { assetFactory } from '@test-data/factories/asset-factory'; import '@testing-library/jest-dom'; -import { render } from '@testing-library/svelte'; import DeleteAction from './delete-action.svelte'; let asset: AssetResponseDto; describe('DeleteAction component', () => { + beforeEach(() => { + vi.mock(import('$lib/managers/feature-flags-manager.svelte'), () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return { featureFlagsManager: { init: vi.fn(), loadFeatureFlags: vi.fn(), value: { trash: true } } as any }; + }); + }); + describe('given an asset which is not trashed yet', () => { beforeEach(() => { asset = assetFactory.build({ isTrashed: false }); }); it('displays a button to move the asset to the trash bin', () => { - const { getByTitle, queryByTitle } = render(DeleteAction, { asset, onAction: vi.fn() }); - expect(getByTitle('delete')).toBeInTheDocument(); + const { getByLabelText, queryByTitle } = renderWithTooltips(DeleteAction, { + asset, + onAction: vi.fn(), + preAction: vi.fn(), + }); + expect(getByLabelText('delete')).toBeInTheDocument(); expect(queryByTitle('deletePermanently')).toBeNull(); }); }); @@ -25,8 +36,12 @@ describe('DeleteAction component', () => { }); it('displays a button to permanently delete the asset', () => { - const { getByTitle, queryByTitle } = render(DeleteAction, { asset, onAction: vi.fn() }); - expect(getByTitle('permanently_delete')).toBeInTheDocument(); + const { getByLabelText, queryByTitle } = renderWithTooltips(DeleteAction, { + asset, + onAction: vi.fn(), + preAction: vi.fn(), + }); + expect(getByLabelText('permanently_delete')).toBeInTheDocument(); expect(queryByTitle('delete')).toBeNull(); }); }); diff --git a/web/src/lib/components/asset-viewer/actions/delete-action.svelte b/web/src/lib/components/asset-viewer/actions/delete-action.svelte index 74d40c7cee..24ef7d941f 100644 --- a/web/src/lib/components/asset-viewer/actions/delete-action.svelte +++ b/web/src/lib/components/asset-viewer/actions/delete-action.svelte @@ -1,14 +1,14 @@ trashOrDelete(asset.isTrashed) }, + { shortcut: { key: 'Delete' }, onShortcut: () => trashOrDelete() }, { shortcut: { key: 'Delete', shift: true }, onShortcut: () => trashOrDelete(true) }, ]} /> @@ -73,13 +69,7 @@ color="secondary" shape="round" variant="ghost" - icon={asset.isTrashed ? mdiDeleteForeverOutline : mdiDeleteOutline} - aria-label={asset.isTrashed ? $t('permanently_delete') : $t('delete')} - onclick={() => trashOrDelete(asset.isTrashed)} + icon={forceDefault ? mdiDeleteForeverOutline : mdiDeleteOutline} + aria-label={forceDefault ? $t('permanently_delete') : $t('delete')} + onclick={() => trashOrDelete()} /> - -{#if showConfirmModal} - - (showConfirmModal = false)} onConfirm={deleteAsset} /> - -{/if} diff --git a/web/src/lib/components/asset-viewer/actions/download-action.svelte b/web/src/lib/components/asset-viewer/actions/download-action.svelte deleted file mode 100644 index f790569703..0000000000 --- a/web/src/lib/components/asset-viewer/actions/download-action.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - - - -{#if !menuItem} - -{:else} - -{/if} diff --git a/web/src/lib/components/asset-viewer/actions/favorite-action.svelte b/web/src/lib/components/asset-viewer/actions/favorite-action.svelte deleted file mode 100644 index ba23570d36..0000000000 --- a/web/src/lib/components/asset-viewer/actions/favorite-action.svelte +++ /dev/null @@ -1,51 +0,0 @@ - - - - - diff --git a/web/src/lib/components/asset-viewer/actions/motion-photo-action.svelte b/web/src/lib/components/asset-viewer/actions/motion-photo-action.svelte deleted file mode 100644 index ee09c2976b..0000000000 --- a/web/src/lib/components/asset-viewer/actions/motion-photo-action.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - - onClick(!isPlaying)} -/> diff --git a/web/src/lib/components/asset-viewer/actions/rating-action.svelte b/web/src/lib/components/asset-viewer/actions/rating-action.svelte new file mode 100644 index 0000000000..3791fccf23 --- /dev/null +++ b/web/src/lib/components/asset-viewer/actions/rating-action.svelte @@ -0,0 +1,55 @@ + + + rateAsset(null) }, + ...[1, 2, 3, 4, 5].map((rating) => ({ + shortcut: { key: String(rating) }, + onShortcut: () => rateAsset(rating), + })), + ] + : []} +/> diff --git a/web/src/lib/components/asset-viewer/actions/share-action.svelte b/web/src/lib/components/asset-viewer/actions/share-action.svelte deleted file mode 100644 index bfd3312f3b..0000000000 --- a/web/src/lib/components/asset-viewer/actions/share-action.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - - diff --git a/web/src/lib/components/asset-viewer/actions/show-detail-action.svelte b/web/src/lib/components/asset-viewer/actions/show-detail-action.svelte deleted file mode 100644 index 8ac087bca6..0000000000 --- a/web/src/lib/components/asset-viewer/actions/show-detail-action.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - - - - diff --git a/web/src/lib/components/asset-viewer/activity-status.svelte b/web/src/lib/components/asset-viewer/activity-status.svelte index dd06cf3ed0..6bd90fc5f0 100644 --- a/web/src/lib/components/asset-viewer/activity-status.svelte +++ b/web/src/lib/components/asset-viewer/activity-status.svelte @@ -1,4 +1,5 @@

@@ -25,7 +25,7 @@ {/if}
- - {/if} + {#each enabledActions as action, i (i)} + {/each}
diff --git a/web/src/lib/components/layouts/ErrorLayout.svelte b/web/src/lib/components/layouts/ErrorLayout.svelte index 1df1dbf422..f121684236 100644 --- a/web/src/lib/components/layouts/ErrorLayout.svelte +++ b/web/src/lib/components/layouts/ErrorLayout.svelte @@ -1,7 +1,19 @@ -
+
-
-
-
-
-
-

- 🚨 {$t('error_title')} -

-
- handleCopy()} - /> -
-
+
+
+ + + + + {$t('error_title')} + + + -
+ + {error?.message} (HTTP {error?.code}) + {#if error?.stack} + +
{error.stack}
+ {/if} +
-
-
-

{error?.message} ({error?.code})

- {#if error?.stack} - -
{error?.stack || 'No stack'}
- {/if} -
-
- -
- - -
-
+ + + + + {$t('get_help')} + + + + + + {$t('read_changelog')} + + + + + + {$t('check_logs')} + + + +
diff --git a/web/src/lib/components/layouts/user-page-layout.svelte b/web/src/lib/components/layouts/user-page-layout.svelte index 7f40bf7a6d..af85f5f37f 100644 --- a/web/src/lib/components/layouts/user-page-layout.svelte +++ b/web/src/lib/components/layouts/user-page-layout.svelte @@ -6,8 +6,11 @@ import { useActions, type ActionArray } from '$lib/actions/use-actions'; import NavigationBar from '$lib/components/shared-components/navigation-bar/navigation-bar.svelte'; import UserSidebar from '$lib/components/shared-components/side-bar/user-sidebar.svelte'; + import type { HeaderButtonActionItem } from '$lib/types'; import { openFileUploadDialog } from '$lib/utils/file-uploader'; + import { Button, ContextMenuButton, HStack, isMenuItemType, type MenuItemType } from '@immich/ui'; import type { Snippet } from 'svelte'; + import { t } from 'svelte-i18n'; interface Props { hideNavbar?: boolean; @@ -16,6 +19,7 @@ description?: string | undefined; scrollbar?: boolean; use?: ActionArray; + actions?: Array; header?: Snippet; sidebar?: Snippet; buttons?: Snippet; @@ -29,12 +33,19 @@ description = undefined, scrollbar = true, use = [], + actions = [], header, sidebar, buttons, children, }: Props = $props(); + const enabledActions = $derived( + actions + .filter((action): action is HeaderButtonActionItem => !isMenuItemType(action)) + .filter((action) => action.$if?.() ?? true), + ); + let scrollbarClass = $derived(scrollbar ? 'immich-scrollbar' : 'scrollbar-hidden'); let hasTitleClass = $derived(title ? 'top-16 h-[calc(100%-(--spacing(16)))]' : 'top-0 h-full'); @@ -74,7 +85,29 @@

{description}

{/if}
+ {@render buttons?.()} + + {#if enabledActions.length > 0} + + + + {/if}
{/if} diff --git a/web/src/lib/components/memory-page/memory-viewer.svelte b/web/src/lib/components/memory-page/memory-viewer.svelte index cfe11e1026..ff1597fedb 100644 --- a/web/src/lib/components/memory-page/memory-viewer.svelte +++ b/web/src/lib/components/memory-page/memory-viewer.svelte @@ -32,7 +32,7 @@ import { getAssetThumbnailUrl, handlePromiseError, memoryLaneTitle } from '$lib/utils'; import { cancelMultiselect } from '$lib/utils/asset-utils'; import { fromISODateTimeUTC, toTimelineAsset } from '$lib/utils/timeline-util'; - import { AssetMediaSize, getAssetInfo } from '@immich/sdk'; + import { AssetMediaSize, AssetTypeEnum, getAssetInfo } from '@immich/sdk'; import { IconButton, toastManager } from '@immich/ui'; import { mdiCardsOutline, @@ -67,7 +67,7 @@ let currentMemoryAssetFull = $derived.by(async () => current?.asset ? await getAssetInfo({ ...authManager.params, id: current.asset.id }) : undefined, ); - let currentTimelineAssets = $derived(current?.memory.assets.map((asset) => toTimelineAsset(asset)) || []); + let currentTimelineAssets = $derived(current?.memory.assets || []); let isSaved = $derived(current?.memory.isSaved); let viewerHeight = $state(0); @@ -270,7 +270,7 @@ }; afterNavigate(({ from, to }) => { - memoryStore.initialize().then( + memoryStore.ready().then( () => { let target = null; if (to?.params?.assetId) { @@ -396,7 +396,7 @@

- {#if currentTimelineAssets.some(({ isVideo }) => isVideo)} + {#if currentTimelineAssets.some((asset) => asset.type === AssetTypeEnum.Video)}
import { serverConfigManager } from '$lib/managers/server-config-manager.svelte'; - import { OnboardingRole } from '$lib/models/onboarding-role'; import { user } from '$lib/stores/user.store'; + import { OnboardingRole } from '$lib/types'; import { Logo } from '@immich/ui'; import { t } from 'svelte-i18n'; diff --git a/web/src/lib/components/photos-page/memory-lane.svelte b/web/src/lib/components/photos-page/memory-lane.svelte deleted file mode 100644 index 1d61b61b40..0000000000 --- a/web/src/lib/components/photos-page/memory-lane.svelte +++ /dev/null @@ -1,107 +0,0 @@ - - -{#if shouldRender} -
(offsetWidth = width)} - onscroll={onScroll} - > - {#if canScrollLeft || canScrollRight} -
- {#if canScrollLeft} -
- -
- {/if} - {#if canScrollRight} -
- -
- {/if} -
- {/if} -
(innerWidth = width)}> - {#each memoryStore.memories as memory (memory.id)} - - {$t('memory_lane_title', -
-

- {$memoryLaneTitle(memory)} -

-
- {/each} -
-
-{/if} - - diff --git a/web/src/lib/components/server-statistics/ServerStatisticsPanel.svelte b/web/src/lib/components/server-statistics/ServerStatisticsPanel.svelte index 1fc01faf9c..614b075cb8 100644 --- a/web/src/lib/components/server-statistics/ServerStatisticsPanel.svelte +++ b/web/src/lib/components/server-statistics/ServerStatisticsPanel.svelte @@ -3,7 +3,7 @@ import { locale } from '$lib/stores/preferences.store'; import { getByteUnitString, getBytesWithUnit } from '$lib/utils/byte-units'; import type { ServerStatsResponseDto } from '@immich/sdk'; - import { Icon } from '@immich/ui'; + import { Code, Heading, Icon, Text } from '@immich/ui'; import { mdiCameraIris, mdiChartPie, mdiPlayCircle } from '@mdi/js'; import { t } from 'svelte-i18n'; @@ -25,52 +25,53 @@ let [statsUsage, statsUsageUnit] = $derived(getBytesWithUnit(stats.usage, stats.usage > TiB ? 2 : 0)); -
+
-

{$t('total_usage')}

+ {$t('total_usage')} -