diff --git a/.devcontainer/mobile/container-compose-overrides.yml b/.devcontainer/mobile/container-compose-overrides.yml
index d6cd95018f..99e41cbece 100644
--- a/.devcontainer/mobile/container-compose-overrides.yml
+++ b/.devcontainer/mobile/container-compose-overrides.yml
@@ -6,28 +6,35 @@ services:
- IMMICH_SERVER_URL=http://127.0.0.1:2283/
volumes: !override # bind mount host to /workspaces/immich
- ..:/workspaces/immich
- - cli_node_modules:/workspaces/immich/cli/node_modules
- - e2e_node_modules:/workspaces/immich/e2e/node_modules
- - open_api_node_modules:/workspaces/immich/open-api/typescript-sdk/node_modules
- - server_node_modules:/workspaces/immich/server/node_modules
- - web_node_modules:/workspaces/immich/web/node_modules
- - ${UPLOAD_LOCATION}/photos:/data
+ - ${UPLOAD_LOCATION:-upload-devcontainer-volume}${UPLOAD_LOCATION:+/photos}:/data
+ - pnpm-store:/usr/src/app/.pnpm-store
+ - server-node_modules:/usr/src/app/server/node_modules
+ - web-node_modules:/usr/src/app/web/node_modules
+ - github-node_modules:/usr/src/app/.github/node_modules
+ - cli-node_modules:/usr/src/app/cli/node_modules
+ - docs-node_modules:/usr/src/app/docs/node_modules
+ - e2e-node_modules:/usr/src/app/e2e/node_modules
+ - sdk-node_modules:/usr/src/app/open-api/typescript-sdk/node_modules
+ - app-node_modules:/usr/src/app/node_modules
+ - sveltekit:/usr/src/app/web/.svelte-kit
+ - coverage:/usr/src/app/web/coverage
- /etc/localtime:/etc/localtime:ro
-
+ immich-web:
+ env_file: !reset []
+ immich-machine-learning:
+ env_file: !reset []
database:
+ env_file: !reset []
+ environment: !override
+ POSTGRES_PASSWORD: ${DB_PASSWORD-postgres}
+ POSTGRES_USER: ${DB_USERNAME-postgres}
+ POSTGRES_DB: ${DB_DATABASE_NAME-immich}
+ POSTGRES_INITDB_ARGS: '--data-checksums'
+ POSTGRES_HOST_AUTH_METHOD: md5
volumes:
- - ${UPLOAD_LOCATION}/postgres:/var/lib/postgresql/data
-
+ - ${UPLOAD_LOCATION:-postgres-devcontainer-volume}${UPLOAD_LOCATION:+/postgres}:/var/lib/postgresql/data
+ redis:
+ env_file: !reset []
volumes:
- # Node modules for each service to avoid conflicts and ensure consistent dependencies
- cli_node_modules:
- e2e_node_modules:
- open_api_node_modules:
- server_node_modules:
- web_node_modules:
-
- # UPLOAD_LOCATION must be set to a absolute path or vol-upload
- vol-upload:
-
- # DB_DATA_LOCATION must be set to a absolute path or vol-database
- vol-database:
+ upload-devcontainer-volume:
+ postgres-devcontainer-volume:
diff --git a/.devcontainer/mobile/devcontainer.json b/.devcontainer/mobile/devcontainer.json
index 0dbcc8e9c8..140a2ecac3 100644
--- a/.devcontainer/mobile/devcontainer.json
+++ b/.devcontainer/mobile/devcontainer.json
@@ -40,7 +40,7 @@
"userEnvProbe": "loginInteractiveShell",
"remoteEnv": {
// The location where your uploaded files are stored
- "UPLOAD_LOCATION": "${localEnv:UPLOAD_LOCATION:./Library}",
+ "UPLOAD_LOCATION": "${localEnv:UPLOAD_LOCATION:./library}",
// Connection secret for postgres. You should change it to a random password
// Please use only the characters `A-Za-z0-9`, without special characters or spaces
"DB_PASSWORD": "${localEnv:DB_PASSWORD:postgres}",
diff --git a/.github/.nvmrc b/.github/.nvmrc
index e2228113dd..0a492611a0 100644
--- a/.github/.nvmrc
+++ b/.github/.nvmrc
@@ -1 +1 @@
-22.19.0
+24.11.0
diff --git a/.github/labeler.yml b/.github/labeler.yml
index c0c52f1d7e..d0e4a3097b 100644
--- a/.github/labeler.yml
+++ b/.github/labeler.yml
@@ -6,7 +6,6 @@ cli:
documentation:
- changed-files:
- any-glob-to-any-file:
- - docs/blob/**
- docs/docs/**
- docs/src/**
- docs/static/**
@@ -32,7 +31,7 @@ documentation:
🧠machine-learning:
- changed-files:
- any-glob-to-any-file:
- - machine-learning/app/**
+ - machine-learning/**
changelog:translation:
- head-branch: ['^chore/translations$']
diff --git a/.github/mise.toml b/.github/mise.toml
new file mode 100644
index 0000000000..6930d41187
--- /dev/null
+++ b/.github/mise.toml
@@ -0,0 +1,10 @@
+[tasks.install]
+run = "pnpm install --filter github --frozen-lockfile"
+
+[tasks.format]
+env._.path = "./node_modules/.bin"
+run = "prettier --check ."
+
+[tasks."format-fix"]
+env._.path = "./node_modules/.bin"
+run = "prettier --write ."
diff --git a/.github/workflows/build-mobile.yml b/.github/workflows/build-mobile.yml
index 1b57731b23..c214ba564e 100644
--- a/.github/workflows/build-mobile.yml
+++ b/.github/workflows/build-mobile.yml
@@ -1,12 +1,16 @@
name: Build Mobile
on:
- workflow_dispatch:
workflow_call:
inputs:
ref:
required: false
type: string
+ environment:
+ description: 'Target environment'
+ required: true
+ default: 'development'
+ type: string
secrets:
KEY_JKS:
required: true
@@ -16,6 +20,30 @@ on:
required: true
ANDROID_STORE_PASSWORD:
required: true
+ APP_STORE_CONNECT_API_KEY_ID:
+ required: true
+ APP_STORE_CONNECT_API_KEY_ISSUER_ID:
+ required: true
+ APP_STORE_CONNECT_API_KEY:
+ required: true
+ IOS_CERTIFICATE_P12:
+ 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:
push:
branches: [main]
@@ -34,10 +62,17 @@ jobs:
outputs:
should_run: ${{ steps.check.outputs.should_run }}
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Check what should run
id: check
- uses: immich-app/devtools/actions/pre-job@24820aa4ef67959b0dcf69a438cccf00d7c7042b # pre-job-action-v1.0.1
+ uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
with:
+ github-token: ${{ steps.token.outputs.token }}
filters: |
mobile:
- 'mobile/**'
@@ -55,10 +90,17 @@ jobs:
runs-on: mich
steps:
- - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
ref: ${{ inputs.ref || github.sha }}
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
- name: Create the Keystore
env:
@@ -66,14 +108,14 @@ jobs:
working-directory: ./mobile
run: printf "%s" $KEY_JKS | base64 -d > android/key.jks
- - uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
+ - uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
with:
distribution: 'zulu'
java-version: '17'
- name: Restore Gradle Cache
id: cache-gradle-restore
- uses: actions/cache/restore@0400d5f644dc74513175e3cd8d07132dd4860809 # v4
+ uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: |
~/.gradle/caches
@@ -123,14 +165,14 @@ jobs:
fi
- name: Publish Android Artifact
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
+ uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.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@0400d5f644dc74513175e3cd8d07132dd4860809 # v4
+ uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
if: github.ref == 'refs/heads/main'
with:
path: |
@@ -140,3 +182,150 @@ jobs:
mobile/android/.gradle
mobile/.dart_tool
key: ${{ steps.cache-gradle-restore.outputs.cache-primary-key }}
+
+ build-sign-ios:
+ name: Build and sign iOS
+ needs: pre-job
+ permissions:
+ contents: read
+ # Run on main branch or workflow_dispatch, or on PRs/other branches (build only, no upload)
+ if: ${{ !github.event.pull_request.head.repo.fork && fromJSON(needs.pre-job.outputs.should_run).mobile == true }}
+ runs-on: macos-latest
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
+ with:
+ ref: ${{ inputs.ref || github.sha }}
+ persist-credentials: false
+
+ - name: Setup Flutter SDK
+ uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2
+ with:
+ channel: 'stable'
+ flutter-version-file: ./mobile/pubspec.yaml
+ cache: true
+
+ - name: Install Flutter dependencies
+ working-directory: ./mobile
+ run: flutter pub get
+
+ - name: Generate translation files
+ run: dart run easy_localization:generate -S ../i18n && dart run bin/generate_keys.dart
+ working-directory: ./mobile
+
+ - name: Generate platform APIs
+ run: make pigeon
+ working-directory: ./mobile
+
+ - name: Setup Ruby
+ uses: ruby/setup-ruby@v1
+ with:
+ ruby-version: '3.3'
+ working-directory: ./mobile/ios
+
+ - name: Install CocoaPods dependencies
+ working-directory: ./mobile/ios
+ run: |
+ pod install
+
+ - name: Install Fastlane
+ working-directory: ./mobile/ios
+ run: |
+ gem install bundler
+ bundle config set --local path 'vendor/bundle'
+ bundle install
+
+ - name: Create API Key
+ env:
+ API_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ID }}
+ API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ISSUER_ID }}
+ API_KEY_CONTENT: ${{ secrets.APP_STORE_CONNECT_API_KEY }}
+ working-directory: ./mobile/ios
+ run: |
+ 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
+ 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 }}
+ CERTIFICATE_PASSWORD: ${{ secrets.IOS_CERTIFICATE_PASSWORD }}
+ working-directory: ./mobile/ios
+ run: |
+ # Create keychain
+ security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
+ security default-keychain -s build.keychain
+ security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
+ security set-keychain-settings -t 3600 -u build.keychain
+
+ # Import certificate
+ security import certificate.p12 -k build.keychain -P "$CERTIFICATE_PASSWORD" -T /usr/bin/codesign -T /usr/bin/security
+ security set-key-partition-list -S apple-tool:,apple: -s -k "$KEYCHAIN_PASSWORD" build.keychain
+
+ # Verify certificate was imported
+ security find-identity -v -p codesigning build.keychain
+
+ - name: Build and deploy to TestFlight
+ env:
+ FASTLANE_TEAM_ID: ${{ secrets.FASTLANE_TEAM_ID }}
+ IOS_CERTIFICATE_PASSWORD: ${{ secrets.IOS_CERTIFICATE_PASSWORD }}
+ KEYCHAIN_NAME: build.keychain
+ KEYCHAIN_PASSWORD: ${{ secrets.IOS_CERTIFICATE_PASSWORD }}
+ APP_STORE_CONNECT_API_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ID }}
+ APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ISSUER_ID }}
+ ENVIRONMENT: ${{ inputs.environment || 'development' }}
+ BUNDLE_ID_SUFFIX: ${{ inputs.environment == 'production' && '' || 'development' }}
+ GITHUB_REF: ${{ github.ref }}
+ working-directory: ./mobile/ios
+ run: |
+ # Only upload to TestFlight on main branch
+ if [[ "$GITHUB_REF" == "refs/heads/main" ]]; then
+ if [[ "$ENVIRONMENT" == "development" ]]; then
+ bundle exec fastlane gha_testflight_dev
+ else
+ bundle exec fastlane gha_release_prod
+ fi
+ else
+ # Build only, no TestFlight upload for non-main branches
+ bundle exec fastlane gha_build_only
+ fi
+
+ - name: Clean up keychain
+ if: always()
+ run: |
+ security delete-keychain build.keychain || true
+
+ - name: Upload IPA artifact
+ uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.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 cdff8ed931..7d49d94791 100644
--- a/.github/workflows/cache-cleanup.yml
+++ b/.github/workflows/cache-cleanup.yml
@@ -18,14 +18,21 @@ jobs:
contents: read
actions: write
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Check out code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
- name: Cleanup
env:
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GH_TOKEN: ${{ steps.token.outputs.token }}
REF: ${{ github.ref }}
run: |
gh extension install actions/gh-actions-cache
diff --git a/.github/workflows/cli.yml b/.github/workflows/cli.yml
index 777f1898ec..fc2c9f6853 100644
--- a/.github/workflows/cli.yml
+++ b/.github/workflows/cli.yml
@@ -29,15 +29,22 @@ jobs:
working-directory: ./cli
steps:
- - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './cli/.nvmrc'
registry-url: 'https://registry.npmjs.org'
@@ -50,7 +57,7 @@ jobs:
- run: pnpm install --frozen-lockfile
- run: pnpm build
- - run: pnpm publish
+ - run: pnpm publish --no-git-checks
if: ${{ github.event_name == 'release' }}
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
@@ -64,19 +71,26 @@ jobs:
needs: publish
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Checkout
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
- name: Set up QEMU
- uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
+ uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Login to GitHub Container Registry
- uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
+ uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
if: ${{ !github.event.pull_request.head.repo.fork }}
with:
registry: ghcr.io
@@ -91,7 +105,7 @@ jobs:
- name: Generate docker image tags
id: metadata
- uses: docker/metadata-action@c1e51972afc2121e065aed6d45c65596fe445f3f # v5.8.0
+ uses: docker/metadata-action@318604b99e75e41977312d83839a89be02ca4893 # v5.9.0
with:
flavor: |
latest=false
diff --git a/.github/workflows/close-duplicates.yml b/.github/workflows/close-duplicates.yml
index 8470e0e18c..b3c79f81d8 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:d8ae47cf2e6cf4e2559bd57a60b73674fe44f897cba2c2bddff2987a05be10a4
+ image: ghcr.io/immich-app/mdq:main@sha256:9c905a4ff69f00c4b2f98b40b6090ab3ab18d1a15ed1379733b8691aa1fcb271
outputs:
checked: ${{ steps.get_checkbox.outputs.checked }}
steps:
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 503dd30d9a..34228843ad 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -43,14 +43,21 @@ jobs:
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Checkout repository
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3
+ uses: github/codeql-action/init@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -63,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@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3
+ uses: github/codeql-action/autobuild@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
# ℹ️ 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
@@ -76,6 +83,6 @@ jobs:
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3
+ uses: github/codeql-action/analyze@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
with:
category: '/language:${{matrix.language}}'
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index a630d27809..81b11c4aca 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -22,10 +22,17 @@ jobs:
outputs:
should_run: ${{ steps.check.outputs.should_run }}
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Check what should run
id: check
- uses: immich-app/devtools/actions/pre-job@24820aa4ef67959b0dcf69a438cccf00d7c7042b # pre-job-action-v1.0.1
+ uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
with:
+ github-token: ${{ steps.token.outputs.token }}
filters: |
server:
- 'server/**'
@@ -53,11 +60,12 @@ jobs:
suffix: ['', '-cuda', '-rocm', '-openvino', '-armnn', '-rknn']
steps:
- name: Login to GitHub Container Registry
- uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
+ uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
+
- name: Re-tag image
env:
REGISTRY_NAME: 'ghcr.io'
@@ -82,11 +90,12 @@ jobs:
suffix: ['']
steps:
- name: Login to GitHub Container Registry
- uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
+ uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
+
- name: Re-tag image
env:
REGISTRY_NAME: 'ghcr.io'
@@ -107,24 +116,23 @@ jobs:
matrix:
include:
- device: cpu
- tag-suffix: ''
- device: cuda
- tag-suffix: '-cuda'
+ suffixes: '-cuda'
platforms: linux/amd64
- device: openvino
- tag-suffix: '-openvino'
+ suffixes: '-openvino'
platforms: linux/amd64
- device: armnn
- tag-suffix: '-armnn'
+ suffixes: '-armnn'
platforms: linux/arm64
- device: rknn
- tag-suffix: '-rknn'
+ suffixes: '-rknn'
platforms: linux/arm64
- device: rocm
- tag-suffix: '-rocm'
+ suffixes: '-rocm'
platforms: linux/amd64
runner-mapping: '{"linux/amd64": "mich"}'
- uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@129aeda75a450666ce96e8bc8126652e717917a7 # multi-runner-build-workflow-0.1.1
+ uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@47a2ee86898ccff51592d6572391fb1abcd7f782 # multi-runner-build-workflow-v2.0.1
permissions:
contents: read
actions: read
@@ -138,7 +146,7 @@ jobs:
dockerfile: machine-learning/Dockerfile
platforms: ${{ matrix.platforms }}
runner-mapping: ${{ matrix.runner-mapping }}
- tag-suffix: ${{ matrix.tag-suffix }}
+ suffixes: ${{ matrix.suffixes }}
dockerhub-push: ${{ github.event_name == 'release' }}
build-args: |
DEVICE=${{ matrix.device }}
@@ -147,7 +155,7 @@ jobs:
name: Build and Push Server
needs: pre-job
if: ${{ fromJSON(needs.pre-job.outputs.should_run).server == true }}
- uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@129aeda75a450666ce96e8bc8126652e717917a7 # multi-runner-build-workflow-0.1.1
+ uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@47a2ee86898ccff51592d6572391fb1abcd7f782 # multi-runner-build-workflow-v2.0.1
permissions:
contents: read
actions: read
diff --git a/.github/workflows/docs-build.yml b/.github/workflows/docs-build.yml
index 9a35a0ae91..823aa98fc8 100644
--- a/.github/workflows/docs-build.yml
+++ b/.github/workflows/docs-build.yml
@@ -20,10 +20,17 @@ jobs:
outputs:
should_run: ${{ steps.check.outputs.should_run }}
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Check what should run
id: check
- uses: immich-app/devtools/actions/pre-job@24820aa4ef67959b0dcf69a438cccf00d7c7042b # pre-job-action-v1.0.1
+ uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
with:
+ github-token: ${{ steps.token.outputs.token }}
filters: |
docs:
- 'docs/**'
@@ -46,16 +53,23 @@ jobs:
working-directory: ./docs
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './docs/.nvmrc'
cache: 'pnpm'
@@ -71,7 +85,7 @@ jobs:
run: pnpm build
- name: Upload build output
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
+ uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.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 b504b811e3..5d01646fef 100644
--- a/.github/workflows/docs-deploy.yml
+++ b/.github/workflows/docs-deploy.yml
@@ -5,6 +5,9 @@ on:
types:
- completed
+env:
+ TG_NON_INTERACTIVE: 'true'
+
jobs:
checks:
name: Docs Deploy Checks
@@ -16,12 +19,19 @@ jobs:
parameters: ${{ steps.parameters.outputs.result }}
artifact: ${{ steps.get-artifact.outputs.result }}
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- if: ${{ github.event.workflow_run.conclusion != 'success' }}
run: echo 'The triggering workflow did not succeed' && exit 1
- name: Get artifact
id: get-artifact
- uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
+ uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
+ github-token: ${{ steps.token.outputs.token }}
script: |
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
@@ -38,10 +48,11 @@ jobs:
return { found: true, id: matchArtifact.id };
- name: Determine deploy parameters
id: parameters
- uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
+ uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
with:
+ github-token: ${{ steps.token.outputs.token }}
script: |
const eventType = context.payload.workflow_run.event;
const isFork = context.payload.workflow_run.repository.fork;
@@ -107,17 +118,28 @@ jobs:
pull-requests: write
if: ${{ fromJson(needs.checks.outputs.artifact).found && fromJson(needs.checks.outputs.parameters).shouldDeploy }}
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
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
- name: Load parameters
id: parameters
- uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
+ uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
PARAM_JSON: ${{ needs.checks.outputs.parameters }}
with:
+ github-token: ${{ steps.token.outputs.token }}
script: |
const parameters = JSON.parse(process.env.PARAM_JSON);
core.setOutput("event", parameters.event);
@@ -125,10 +147,11 @@ jobs:
core.setOutput("shouldDeploy", parameters.shouldDeploy);
- name: Download artifact
- uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
+ uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
ARTIFACT_JSON: ${{ needs.checks.outputs.artifact }}
with:
+ github-token: ${{ steps.token.outputs.token }}
script: |
let artifact = JSON.parse(process.env.ARTIFACT_JSON);
let download = await github.rest.actions.downloadArtifact({
@@ -150,12 +173,8 @@ jobs:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
TF_STATE_POSTGRES_CONN_STR: ${{ secrets.TF_STATE_POSTGRES_CONN_STR }}
- uses: gruntwork-io/terragrunt-action@aee21a7df999be8b471c2a8564c6cd853cb674e1 # v2.1.8
- with:
- tg_version: '0.58.12'
- tofu_version: '1.7.1'
- tg_dir: 'deployment/modules/cloudflare/docs'
- tg_command: 'apply'
+ working-directory: 'deployment/modules/cloudflare/docs'
+ run: 'mise run //deployment:tf apply'
- name: Deploy Docs Subdomain Output
id: docs-output
@@ -165,20 +184,12 @@ jobs:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
TF_STATE_POSTGRES_CONN_STR: ${{ secrets.TF_STATE_POSTGRES_CONN_STR }}
- uses: gruntwork-io/terragrunt-action@aee21a7df999be8b471c2a8564c6cd853cb674e1 # v2.1.8
- with:
- tg_version: '0.58.12'
- tofu_version: '1.7.1'
- tg_dir: 'deployment/modules/cloudflare/docs'
- tg_command: 'output -json'
-
- - name: Output Cleaning
- id: clean
- env:
- TG_OUTPUT: ${{ steps.docs-output.outputs.tg_action_output }}
+ working-directory: 'deployment/modules/cloudflare/docs'
run: |
- CLEANED=$(echo "$TG_OUTPUT" | sed 's|%0A|\n|g ; s|%3C|<|g' | jq -c .)
- echo "output=$CLEANED" >> $GITHUB_OUTPUT
+ mise run //deployment:tf output -- -json | jq -r '
+ "projectName=\(.pages_project_name.value)",
+ "subdomain=\(.immich_app_branch_subdomain.value)"
+ ' >> $GITHUB_OUTPUT
- name: Publish to Cloudflare Pages
# TODO: Action is deprecated
@@ -186,7 +197,7 @@ jobs:
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN_PAGES_UPLOAD }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
- projectName: ${{ fromJson(steps.clean.outputs.output).pages_project_name.value }}
+ projectName: ${{ steps.docs-output.outputs.projectName }}
workingDirectory: 'docs'
directory: 'build'
branch: ${{ steps.parameters.outputs.name }}
@@ -199,19 +210,16 @@ jobs:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
TF_STATE_POSTGRES_CONN_STR: ${{ secrets.TF_STATE_POSTGRES_CONN_STR }}
- uses: gruntwork-io/terragrunt-action@aee21a7df999be8b471c2a8564c6cd853cb674e1 # v2.1.8
- with:
- tg_version: '0.58.12'
- tofu_version: '1.7.1'
- tg_dir: 'deployment/modules/cloudflare/docs-release'
- tg_command: 'apply'
+ working-directory: 'deployment/modules/cloudflare/docs-release'
+ run: 'mise run //deployment:tf apply'
- name: Comment
uses: actions-cool/maintain-one-comment@4b2dbf086015f892dcb5e8c1106f5fccd6c1476b # v3.2.0
if: ${{ steps.parameters.outputs.event == 'pr' }}
with:
+ token: ${{ steps.token.outputs.token }}
number: ${{ fromJson(needs.checks.outputs.parameters).pr_number }}
body: |
- 📖 Documentation deployed to [${{ fromJson(steps.clean.outputs.output).immich_app_branch_subdomain.value }}](https://${{ fromJson(steps.clean.outputs.output).immich_app_branch_subdomain.value }})
+ 📖 Documentation deployed to [${{ steps.docs-output.outputs.subdomain }}](https://${{ steps.docs-output.outputs.subdomain }})
emojis: 'rocket'
body-include: ''
diff --git a/.github/workflows/docs-destroy.yml b/.github/workflows/docs-destroy.yml
index 37653c0990..3ad3f3558e 100644
--- a/.github/workflows/docs-destroy.yml
+++ b/.github/workflows/docs-destroy.yml
@@ -5,6 +5,9 @@ on:
permissions: {}
+env:
+ TG_NON_INTERACTIVE: 'true'
+
jobs:
deploy:
name: Docs Destroy
@@ -13,10 +16,20 @@ jobs:
contents: read
pull-requests: write
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
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
- name: Destroy Docs Subdomain
env:
@@ -25,16 +38,13 @@ jobs:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
TF_STATE_POSTGRES_CONN_STR: ${{ secrets.TF_STATE_POSTGRES_CONN_STR }}
- uses: gruntwork-io/terragrunt-action@aee21a7df999be8b471c2a8564c6cd853cb674e1 # v2.1.8
- with:
- tg_version: '0.58.12'
- tofu_version: '1.7.1'
- tg_dir: 'deployment/modules/cloudflare/docs'
- tg_command: 'destroy -refresh=false'
+ working-directory: 'deployment/modules/cloudflare/docs'
+ run: 'mise run //deployment:tf destroy -- -refresh=false'
- name: Comment
uses: actions-cool/maintain-one-comment@4b2dbf086015f892dcb5e8c1106f5fccd6c1476b # v3.2.0
with:
+ token: ${{ steps.token.outputs.token }}
number: ${{ github.event.number }}
delete: true
body-include: ''
diff --git a/.github/workflows/fix-format.yml b/.github/workflows/fix-format.yml
index bec34c2713..f7f34b929c 100644
--- a/.github/workflows/fix-format.yml
+++ b/.github/workflows/fix-format.yml
@@ -16,30 +16,30 @@ jobs:
steps:
- name: Generate a token
id: generate-token
- uses: actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.1
+ uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: 'Checkout'
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
ref: ${{ github.event.pull_request.head.ref }}
token: ${{ steps.generate-token.outputs.token }}
persist-credentials: true
- name: Setup pnpm
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
cache-dependency-path: '**/pnpm-lock.yaml'
- name: Fix formatting
- run: make install-all && make format-all
+ run: pnpm --recursive install && pnpm run --recursive --parallel fix:format
- name: Commit and push
uses: EndBug/add-and-commit@a94899bca583c204427a224a7af87c02f9b325d5 # v9.1.4
@@ -48,9 +48,10 @@ jobs:
message: 'chore: fix formatting'
- name: Remove label
- uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
+ uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
if: always()
with:
+ github-token: ${{ steps.generate-token.outputs.token }}
script: |
github.rest.issues.removeLabel({
issue_number: context.payload.pull_request.number,
diff --git a/.github/workflows/merge-translations.yml b/.github/workflows/merge-translations.yml
index a0329c8f73..32e1b1a138 100644
--- a/.github/workflows/merge-translations.yml
+++ b/.github/workflows/merge-translations.yml
@@ -10,6 +10,11 @@ on:
required: true
WEBLATE_TOKEN:
required: true
+ inputs:
+ skip:
+ description: 'Skip translations'
+ required: false
+ type: boolean
permissions: {}
@@ -23,10 +28,19 @@ jobs:
permissions:
pull-requests: write
steps:
+ - name: Generate a token
+ id: generate_token
+ if: ${{ inputs.skip != true }}
+ uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Find translation PR
id: find_pr
+ if: ${{ inputs.skip != true }}
env:
- GH_TOKEN: ${{ github.token }}
+ GH_TOKEN: ${{ steps.generate_token.outputs.token }}
run: |
set -euo pipefail
@@ -49,20 +63,15 @@ jobs:
exit 1
fi
- - name: Generate a token
- id: generate_token
- uses: actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.1
- with:
- app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
- private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
-
- name: Lock weblate
+ if: ${{ inputs.skip != true }}
env:
WEBLATE_TOKEN: ${{ secrets.WEBLATE_TOKEN }}
run: |
curl --fail-with-body -X POST -H "Authorization: Token $WEBLATE_TOKEN" "$WEBLATE_HOST/api/components/$WEBLATE_COMPONENT/lock/" -d lock=true
- name: Commit translations
+ if: ${{ inputs.skip != true }}
env:
WEBLATE_TOKEN: ${{ secrets.WEBLATE_TOKEN }}
run: |
@@ -71,6 +80,7 @@ jobs:
- name: Merge PR
id: merge_pr
+ if: ${{ inputs.skip != true }}
env:
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
PR_NUMBER: ${{ steps.find_pr.outputs.PR_NUMBER }}
@@ -83,6 +93,7 @@ jobs:
gh pr merge "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --auto --squash
- name: Wait for PR to merge
+ if: ${{ inputs.skip != true }}
env:
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
PR_NUMBER: ${{ steps.find_pr.outputs.PR_NUMBER }}
@@ -106,7 +117,12 @@ jobs:
exit 1
- name: Unlock weblate
+ if: ${{ inputs.skip != true }}
env:
WEBLATE_TOKEN: ${{ secrets.WEBLATE_TOKEN }}
run: |
curl --fail-with-body -X POST -H "Authorization: Token $WEBLATE_TOKEN" "$WEBLATE_HOST/api/components/$WEBLATE_COMPONENT/lock/" -d lock=false
+
+ - name: Report success
+ run: |
+ echo "Workflow completed successfully (or was skipped)"
diff --git a/.github/workflows/pr-label-validation.yml b/.github/workflows/pr-label-validation.yml
index 2c75be8653..0544de3dad 100644
--- a/.github/workflows/pr-label-validation.yml
+++ b/.github/workflows/pr-label-validation.yml
@@ -13,9 +13,16 @@ jobs:
issues: write
pull-requests: write
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Require PR to have a changelog label
uses: mheap/github-action-required-labels@8afbe8ae6ab7647d0c9f0cfa7c2f939650d22509 # v5.5.1
with:
+ token: ${{ steps.token.outputs.token }}
mode: exactly
count: 1
use_regex: true
diff --git a/.github/workflows/pr-labeler.yml b/.github/workflows/pr-labeler.yml
index ad73c78cf8..263426e548 100644
--- a/.github/workflows/pr-labeler.yml
+++ b/.github/workflows/pr-labeler.yml
@@ -11,4 +11,12 @@ jobs:
pull-requests: write
runs-on: ubuntu-latest
steps:
- - uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5.0.0
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
+ - uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # v6.0.1
+ with:
+ repo-token: ${{ steps.token.outputs.token }}
diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml
index add68ffbd7..6e7ee8f608 100644
--- a/.github/workflows/prepare-release.yml
+++ b/.github/workflows/prepare-release.yml
@@ -10,12 +10,17 @@ on:
type: choice
options:
- 'false'
+ - major
- minor
- patch
mobileBump:
description: 'Bump mobile build number'
required: false
type: boolean
+ skipTranslations:
+ description: 'Skip translations'
+ required: false
+ type: boolean
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-root
@@ -26,6 +31,8 @@ permissions: {}
jobs:
merge_translations:
uses: ./.github/workflows/merge-translations.yml
+ with:
+ skip: ${{ inputs.skipTranslations }}
permissions:
pull-requests: write
secrets:
@@ -35,31 +42,33 @@ jobs:
bump_version:
runs-on: ubuntu-latest
+ needs: [merge_translations]
outputs:
ref: ${{ steps.push-tag.outputs.commit_long_sha }}
permissions: {} # No job-level permissions are needed because it uses the app-token
steps:
- name: Generate a token
id: generate-token
- uses: actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.1
+ uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
token: ${{ steps.generate-token.outputs.token }}
persist-credentials: true
+ ref: main
- name: Install uv
- uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2
+ uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7.1.2
- name: Setup pnpm
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
@@ -90,8 +99,23 @@ jobs:
ALIAS: ${{ secrets.ALIAS }}
ANDROID_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }}
ANDROID_STORE_PASSWORD: ${{ secrets.ANDROID_STORE_PASSWORD }}
+ # iOS secrets
+ APP_STORE_CONNECT_API_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ID }}
+ APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ISSUER_ID }}
+ APP_STORE_CONNECT_API_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY }}
+ IOS_CERTIFICATE_P12: ${{ secrets.IOS_CERTIFICATE_P12 }}
+ IOS_CERTIFICATE_PASSWORD: ${{ secrets.IOS_CERTIFICATE_PASSWORD }}
+ IOS_PROVISIONING_PROFILE: ${{ secrets.IOS_PROVISIONING_PROFILE }}
+ IOS_PROVISIONING_PROFILE_SHARE_EXTENSION: ${{ secrets.IOS_PROVISIONING_PROFILE_SHARE_EXTENSION }}
+ IOS_PROVISIONING_PROFILE_WIDGET_EXTENSION: ${{ secrets.IOS_PROVISIONING_PROFILE_WIDGET_EXTENSION }}
+ IOS_DEVELOPMENT_PROVISIONING_PROFILE: ${{ secrets.IOS_DEVELOPMENT_PROVISIONING_PROFILE }}
+ IOS_DEVELOPMENT_PROVISIONING_PROFILE_SHARE_EXTENSION: ${{ secrets.IOS_DEVELOPMENT_PROVISIONING_PROFILE_SHARE_EXTENSION }}
+ IOS_DEVELOPMENT_PROVISIONING_PROFILE_WIDGET_EXTENSION: ${{ secrets.IOS_DEVELOPMENT_PROVISIONING_PROFILE_WIDGET_EXTENSION }}
+ FASTLANE_TEAM_ID: ${{ secrets.FASTLANE_TEAM_ID }}
+
with:
ref: ${{ needs.bump_version.outputs.ref }}
+ environment: production
prepare_release:
runs-on: ubuntu-latest
@@ -102,24 +126,25 @@ jobs:
steps:
- name: Generate a token
id: generate-token
- uses: actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.1
+ uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
token: ${{ steps.generate-token.outputs.token }}
persist-credentials: false
- name: Download APK
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
+ uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: release-apk-signed
+ github-token: ${{ steps.generate-token.outputs.token }}
- name: Create draft release
- uses: softprops/action-gh-release@6cbd405e2c4e67a21c47fa9e383d020e4e28b836 # v2.3.3
+ uses: softprops/action-gh-release@6da8fa9354ddfdc4aeace5fc48d7f679b5214090 # v2.4.1
with:
draft: true
tag_name: ${{ env.IMMICH_VERSION }}
diff --git a/.github/workflows/preview-label.yaml b/.github/workflows/preview-label.yaml
index 1d9a0060ad..8760b67fc0 100644
--- a/.github/workflows/preview-label.yaml
+++ b/.github/workflows/preview-label.yaml
@@ -13,10 +13,17 @@ jobs:
permissions:
pull-requests: write
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2.8.2
with:
+ github-token: ${{ steps.token.outputs.token }}
message-id: 'preview-status'
- message: 'Deploying preview environment to https://pr-${{ github.event.pull_request.number }}.preview.internal.immich.cloud/'
+ message: 'Deploying preview environment to https://pr-${{ github.event.pull_request.number }}.preview.internal.immich.build/'
remove-label:
runs-on: ubuntu-latest
@@ -24,8 +31,15 @@ jobs:
permissions:
pull-requests: write
steps:
- - uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
+ - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
+ with:
+ github-token: ${{ steps.token.outputs.token }}
script: |
github.rest.issues.removeLabel({
issue_number: context.payload.pull_request.number,
@@ -37,11 +51,13 @@ jobs:
- uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2.8.2
if: ${{ github.event.pull_request.head.repo.fork }}
with:
+ github-token: ${{ steps.token.outputs.token }}
message-id: 'preview-status'
message: 'PRs from forks cannot have preview environments.'
- uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2.8.2
if: ${{ !github.event.pull_request.head.repo.fork }}
with:
+ github-token: ${{ steps.token.outputs.token }}
message-id: 'preview-status'
message: 'Preview environment has been removed.'
diff --git a/.github/workflows/release-pr.yml b/.github/workflows/release-pr.yml
new file mode 100644
index 0000000000..524f6bc77c
--- /dev/null
+++ b/.github/workflows/release-pr.yml
@@ -0,0 +1,170 @@
+name: Manage release PR
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - main
+
+concurrency:
+ group: ${{ github.workflow }}
+ cancel-in-progress: true
+
+permissions: {}
+
+jobs:
+ bump:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Generate a token
+ id: generate-token
+ uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
+ - name: Checkout
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
+ with:
+ token: ${{ steps.generate-token.outputs.token }}
+ persist-credentials: true
+ ref: main
+
+ - name: Install uv
+ uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7.1.2
+
+ - name: Setup pnpm
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
+
+ - name: Setup Node
+ uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
+ with:
+ node-version-file: './server/.nvmrc'
+ cache: 'pnpm'
+ cache-dependency-path: '**/pnpm-lock.yaml'
+
+ - name: Determine release type
+ id: bump-type
+ uses: ietf-tools/semver-action@c90370b2958652d71c06a3484129a4d423a6d8a8 # v1.11.0
+ with:
+ token: ${{ steps.generate-token.outputs.token }}
+
+ - name: Bump versions
+ env:
+ TYPE: ${{ steps.bump-type.outputs.bump }}
+ run: |
+ if [ "$TYPE" == "none" ]; then
+ exit 1 # TODO: Is there a cleaner way to abort the workflow?
+ fi
+ misc/release/pump-version.sh -s $TYPE -m true
+
+ - name: Manage Outline release document
+ id: outline
+ uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
+ env:
+ OUTLINE_API_KEY: ${{ secrets.OUTLINE_API_KEY }}
+ NEXT_VERSION: ${{ steps.bump-type.outputs.next }}
+ with:
+ github-token: ${{ steps.generate-token.outputs.token }}
+ script: |
+ const fs = require('fs');
+
+ const outlineKey = process.env.OUTLINE_API_KEY;
+ const parentDocumentId = 'da856355-0844-43df-bd71-f8edce5382d9'
+ const collectionId = 'e2910656-714c-4871-8721-447d9353bd73';
+ const baseUrl = 'https://outline.immich.cloud';
+
+ const listResponse = await fetch(`${baseUrl}/api/documents.list`, {
+ method: 'POST',
+ headers: {
+ 'Authorization': `Bearer ${outlineKey}`,
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({ parentDocumentId })
+ });
+
+ if (!listResponse.ok) {
+ throw new Error(`Outline list failed: ${listResponse.statusText}`);
+ }
+
+ const listData = await listResponse.json();
+ const allDocuments = listData.data || [];
+
+ const document = allDocuments.find(doc => doc.title === 'next');
+
+ let documentId;
+ let documentUrl;
+ let documentText;
+
+ if (!document) {
+ // Create new document
+ console.log('No existing document found. Creating new one...');
+ const notesTmpl = fs.readFileSync('misc/release/notes.tmpl', 'utf8');
+ const createResponse = await fetch(`${baseUrl}/api/documents.create`, {
+ method: 'POST',
+ headers: {
+ 'Authorization': `Bearer ${outlineKey}`,
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({
+ title: 'next',
+ text: notesTmpl,
+ collectionId: collectionId,
+ parentDocumentId: parentDocumentId,
+ publish: true
+ })
+ });
+
+ if (!createResponse.ok) {
+ throw new Error(`Failed to create document: ${createResponse.statusText}`);
+ }
+
+ const createData = await createResponse.json();
+ documentId = createData.data.id;
+ const urlId = createData.data.urlId;
+ documentUrl = `${baseUrl}/doc/next-${urlId}`;
+ documentText = createData.data.text || '';
+ console.log(`Created new document: ${documentUrl}`);
+ } else {
+ documentId = document.id;
+ const docPath = document.url;
+ documentUrl = `${baseUrl}${docPath}`;
+ documentText = document.text || '';
+ console.log(`Found existing document: ${documentUrl}`);
+ }
+
+ // Generate GitHub release notes
+ console.log('Generating GitHub release notes...');
+ const releaseNotesResponse = await github.rest.repos.generateReleaseNotes({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ tag_name: `${process.env.NEXT_VERSION}`,
+ });
+
+ // Combine the content
+ const changelog = `
+ # ${process.env.NEXT_VERSION}
+
+ ${documentText}
+
+ ${releaseNotesResponse.data.body}
+
+ ---
+
+ `
+
+ const existingChangelog = fs.existsSync('CHANGELOG.md') ? fs.readFileSync('CHANGELOG.md', 'utf8') : '';
+ fs.writeFileSync('CHANGELOG.md', changelog + existingChangelog, 'utf8');
+
+ core.setOutput('document_url', documentUrl);
+
+ - name: Create PR
+ id: create-pr
+ uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
+ with:
+ token: ${{ steps.generate-token.outputs.token }}
+ commit-message: 'chore: release ${{ steps.bump-type.outputs.next }}'
+ title: 'chore: release ${{ steps.bump-type.outputs.next }}'
+ body: 'Release notes: ${{ steps.outline.outputs.document_url }}'
+ labels: 'changelog:skip'
+ branch: 'release/next'
+ draft: true
diff --git a/.github/workflows/sdk.yml b/.github/workflows/sdk.yml
index 460e7da4a7..12bdbc55bf 100644
--- a/.github/workflows/sdk.yml
+++ b/.github/workflows/sdk.yml
@@ -16,15 +16,22 @@ jobs:
run:
working-directory: ./open-api/typescript-sdk
steps:
- - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
# Setup .npmrc file to publish to npm
- - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './open-api/typescript-sdk/.nvmrc'
registry-url: 'https://registry.npmjs.org'
@@ -35,6 +42,6 @@ jobs:
- name: Build
run: pnpm build
- name: Publish
- run: pnpm publish
+ run: pnpm publish --no-git-checks
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
diff --git a/.github/workflows/static_analysis.yml b/.github/workflows/static_analysis.yml
index f5e68fb42d..99ee773af4 100644
--- a/.github/workflows/static_analysis.yml
+++ b/.github/workflows/static_analysis.yml
@@ -19,10 +19,17 @@ jobs:
outputs:
should_run: ${{ steps.check.outputs.should_run }}
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Check what should run
id: check
- uses: immich-app/devtools/actions/pre-job@24820aa4ef67959b0dcf69a438cccf00d7c7042b # pre-job-action-v1.0.1
+ uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
with:
+ github-token: ${{ steps.token.outputs.token }}
filters: |
mobile:
- 'mobile/**'
@@ -41,10 +48,17 @@ jobs:
run:
working-directory: ./mobile
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
- name: Setup Flutter SDK
uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2.21.0
@@ -58,7 +72,7 @@ jobs:
- name: Install DCM
uses: CQLabs/setup-dcm@8697ae0790c0852e964a6ef1d768d62a6675481a # v2.0.1
with:
- github-token: ${{ secrets.GITHUB_TOKEN }}
+ github-token: ${{ steps.token.outputs.token }}
version: auto
working-directory: ./mobile
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 773d14e171..44d7250f2f 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -16,10 +16,17 @@ jobs:
outputs:
should_run: ${{ steps.check.outputs.should_run }}
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Check what should run
id: check
- uses: immich-app/devtools/actions/pre-job@24820aa4ef67959b0dcf69a438cccf00d7c7042b # pre-job-action-v1.0.1
+ uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
with:
+ github-token: ${{ steps.token.outputs.token }}
filters: |
i18n:
- 'i18n/**'
@@ -55,14 +62,22 @@ jobs:
run:
working-directory: ./server
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
+
- name: Setup pnpm
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
@@ -92,14 +107,21 @@ jobs:
run:
working-directory: ./cli
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './cli/.nvmrc'
cache: 'pnpm'
@@ -132,14 +154,21 @@ jobs:
run:
working-directory: ./cli
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './cli/.nvmrc'
cache: 'pnpm'
@@ -167,14 +196,21 @@ jobs:
run:
working-directory: ./web
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './web/.nvmrc'
cache: 'pnpm'
@@ -185,7 +221,7 @@ jobs:
- name: Run pnpm install
run: pnpm rebuild && pnpm install --frozen-lockfile
- name: Run linter
- run: pnpm lint:p
+ run: pnpm lint
if: ${{ !cancelled() }}
- name: Run formatter
run: pnpm format
@@ -204,14 +240,21 @@ jobs:
run:
working-directory: ./web
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './web/.nvmrc'
cache: 'pnpm'
@@ -235,14 +278,21 @@ jobs:
permissions:
contents: read
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './web/.nvmrc'
cache: 'pnpm'
@@ -276,14 +326,21 @@ jobs:
run:
working-directory: ./e2e
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './e2e/.nvmrc'
cache: 'pnpm'
@@ -315,14 +372,22 @@ jobs:
run:
working-directory: ./server
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ submodules: 'recursive'
+ token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
@@ -346,15 +411,22 @@ jobs:
matrix:
runner: [ubuntu-latest, ubuntu-24.04-arm]
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
submodules: 'recursive'
+ token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './e2e/.nvmrc'
cache: 'pnpm'
@@ -394,15 +466,22 @@ jobs:
matrix:
runner: [ubuntu-latest, ubuntu-24.04-arm]
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
submodules: 'recursive'
+ token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './e2e/.nvmrc'
cache: 'pnpm'
@@ -441,9 +520,16 @@ jobs:
permissions:
contents: read
steps:
- - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
- name: Setup Flutter SDK
uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2.21.0
with:
@@ -466,12 +552,19 @@ jobs:
run:
working-directory: ./machine-learning
steps:
- - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
- name: Install uv
- uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2
- - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
+ uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7.1.2
+ - uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
# TODO: add caching when supported (https://github.com/actions/setup-python/pull/818)
# with:
# python-version: 3.11
@@ -502,14 +595,21 @@ jobs:
run:
working-directory: ./.github
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './.github/.nvmrc'
cache: 'pnpm'
@@ -525,9 +625,16 @@ jobs:
permissions:
contents: read
steps:
- - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
- name: Run ShellCheck
uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38 # 2.0.0
with:
@@ -539,14 +646,21 @@ jobs:
permissions:
contents: read
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
@@ -581,7 +695,7 @@ jobs:
contents: read
services:
postgres:
- image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3@sha256:da52bbead5d818adaa8077c8dcdaad0aaf93038c31ad8348b51f9f0ec1310a4d
+ image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3@sha256:dbf18b3ffea4a81434c65b71e20d27203baf903a0275f4341e4c16dfd901fd67
env:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
@@ -594,14 +708,21 @@ jobs:
run:
working-directory: ./server
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Checkout code
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
+ token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
diff --git a/.github/workflows/weblate-lock.yml b/.github/workflows/weblate-lock.yml
index 36544d4eed..1f0a7608d1 100644
--- a/.github/workflows/weblate-lock.yml
+++ b/.github/workflows/weblate-lock.yml
@@ -23,10 +23,17 @@ jobs:
outputs:
should_run: ${{ steps.check.outputs.should_run }}
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Check what should run
id: check
- uses: immich-app/devtools/actions/pre-job@24820aa4ef67959b0dcf69a438cccf00d7c7042b # pre-job-action-v1.0.1
+ uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
with:
+ github-token: ${{ steps.token.outputs.token }}
filters: |
i18n:
- 'i18n/!(en)**\.json'
@@ -40,10 +47,16 @@ jobs:
permissions: {}
if: ${{ fromJSON(needs.pre-job.outputs.should_run).i18n == true }}
steps:
+ - id: token
+ uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
+ with:
+ app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
+ private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
+
- name: Bot review status
env:
PR_NUMBER: ${{ github.event.pull_request.number || github.event.pull_request_review.pull_request.number }}
- GH_TOKEN: ${{ github.token }}
+ GH_TOKEN: ${{ steps.token.outputs.token }}
run: |
# Then check for APPROVED by the bot, if absent fail
gh pr view "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --json reviews | jq -e '.reviews | map(select(.author.login == env.BOT_NAME and .state == "APPROVED")) | length > 0' \
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 0cc9b256ca..9ed2bb77b8 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -18,6 +18,20 @@
"name": "Immich Workers",
"remoteRoot": "/usr/src/app/server",
"localRoot": "${workspaceFolder}/server"
+ },
+ {
+ "type": "node",
+ "request": "launch",
+ "name": "Immich CLI",
+ "program": "${workspaceFolder}/cli/dist/index.js",
+ "args": ["upload", "--help"],
+ "runtimeArgs": ["--enable-source-maps"],
+ "console": "integratedTerminal",
+ "resolveSourceMapLocations": ["${workspaceFolder}/cli/dist/**/*.js.map"],
+ "sourceMaps": true,
+ "outFiles": ["${workspaceFolder}/cli/dist/**/*.js"],
+ "skipFiles": ["
-
-## OAuth Integration 🎉
-
-I want to borrow this chance to express my gratitude to [@EnricoBilla](https://github.com/EnricoBilla), who has been the trailblazer for this feature since the beginning days of Immich. His PR has sparked ideas, suggestions, and discussion among the team member on how to integrate this feature successfully into the app. Thank you so much for your work and your time.
-
-OAuth is now integrated into the system. Please follow the guide [here](https://immich.app/docs/usage/oauth) to set up your OAuth integration
-
-After setting up the correct environment variables in the `.env` file, as shown below
-
-| Key | Type | Default | Description |
-| ------------------- | ------- | -------------------- | ------------------------------------------------------------------------- |
-| OAUTH_ENABLED | boolean | false | Enable/disable OAuth2 |
-| OAUTH_ISSUER_URL | URL | (required) | Required. Self-discovery URL for client |
-| OAUTH_CLIENT_ID | string | (required) | Required. Client ID |
-| OAUTH_CLIENT_SECRET | string | (required) | Required. Client Secret |
-| OAUTH_SCOPE | string | openid email profile | Full list of scopes to send with the request (space delimited) |
-| OAUTH_AUTO_REGISTER | boolean | true | When true, will automatically register a user the first time they sign in |
-| OAUTH_BUTTON_TEXT | string | Login with OAuth | Text for the OAuth button on the web |
-
-```bash title="Authentik Example"
-OAUTH_ENABLED=true
-OAUTH_ISSUER_URL=http://10.1.15.216:9000/application/o/immich-test/
-OAUTH_CLIENT_ID=30596v8f78a4b6a97d5985c3076b6b4c4d12ddc33
-OAUTH_CLIENT_SECRET=50f1eafdec353b95b1c638db390db4ab67ef035a51212dbec2f56175e2eb272b5d572c099176e6fe116ecf47ffdd544bgdb9e2edc588307ee0339d25eeccd88
-OAUTH_BUTTON_TEXT=Login with Authentik
-```
-
-The web will have the option to sign in with OAuth.
-
-
-
-The mobile app will check if the server has OAuth enabled before displaying the OAuth
-sign-in button.
-
-
-
-## Support
-
-
-
-If you find the project helpful and it helps you in some ways, you can support the project [one time](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502) or [monthly](https://github.com/sponsors/alextran1502) from GitHub Sponsor
-
-It is a great way to let me know that you want me to continue developing and working on this project for years to come.
-
-## Details
-
-For more details, please check out the [release note](https://github.com/immich-app/immich/releases/tag/v1.36.0_55-dev)
diff --git a/docs/blog/2023/06-24/update.mdx b/docs/blog/2023/06-24/update.mdx
deleted file mode 100644
index 464d3e44d9..0000000000
--- a/docs/blog/2023/06-24/update.mdx
+++ /dev/null
@@ -1,103 +0,0 @@
----
-title: Immich Update - June 2023
-authors: [alextran]
-tags: [update]
----
-
-Hello everybody, Alex here!
-
-I am back with another update on Immich. It has been only a month since my last update (May 18th, 2023), but it seems forever. I think the rapid releases of Immich and the amount of work make the perspective of time change in Immich’s world. We have some exciting updates that I think you will like.
-
-Before going into detail, on behalf of the core team, I would like to thank all of you for loving Immich and contributing to the project. Thank you for helping me make Immich an enjoyable alternative solution to Google Photos so that you have complete control of your data and privacy. I know we are still young and have a lot of work to do, but I am confident we will get there with help from the community. I appreciate all of you from the bottom of my heart!
-
-
-
-And now, to the exciting part, what is new in Immich’s world?
-
-- Initial support for existing gallery.
-- Memory feature.
-- Support XMP sidecar.
-- Support more raw formats.
-- Justified layout for web timeline and blurred thumbnail hash.
-- Mechanism to host machine learning on a completely different machine.
-
-## Support for existing gallery
-
-I know this is the most controversial feature when it comes to Immich’s way of ingesting photos and videos. For many users, having to upload photos and videos to Immich is simply not working. We listen, discuss, and digest this feature internally more than you imagine because it is not a simple feature to tackle while keeping the performance and the user experience at the top level, which is Immich’s primary goal.
-
-Thankfully, we have many great contributors and developers that want to make this come true. So we came up with an initial implementation of this feature in the form of a supporting read-only gallery.
-
-To be concise, Immich can now read in the gallery files, register the path into the database, and then generate necessary files and put them through Immich’s machine learning pipeline so you can use all the goodness of Immich without the need to upload them. Since this is the initial implementation, some actions/behavior are not yet supported, and we aim to build toward them in future releases, namely:
-
-- Assets are not automatically synced and must instead be manually synced with the CLI tool.
-- Only new files that are added to the gallery will be detected.
-- Deleted and moved files will not be detected.
-
-## Memory feature
-
-This is considered a fun feature that the team and I wanted to build for so long, but we had to put it off because of the refactoring of the code base. The code base is now in a good enough form to circle back and add more exciting features.
-
-This memory feature is very much similar to GPhotos' implementation of “x years since…”. We are aiming to add more categories of memories in the future, such as “Spotlight of the day” or “Day of the Week highlights”
-
-
-
-This feature is now available on the web and will be ported to the mobile app in the near future.
-
-## Support XMP Sidecar
-
-Immich can now import/upload XMP sidecars from the CLI and use the information as the metadata of assets.
-
-## Support more raw formats.
-
-With the recent updates on the dependencies of Immich, we are now extending and hardening support for multiple raw formats. So users with DSLR or mirrorless cameras can now upload their original files to Immich and have them displayed in high-quality thumbnails on the web and mobile view.
-
-## Justified layout for web timeline and blurred thumbnail hash
-
-This is an aesthetic improvement in user experience when browsing the timeline. Photos and videos are now displayed correctly with perspective orientation, making the browsing experience more pleasurable.
-
-To further improve the browsing experience, we now added a blur hash to the thumbnail, so the transition is more natural with a dreamy fade in effect, similar to how our brain goes from faded to vivid memory
-
-
-
-## Hosting machine learning container on a different machine
-
-With more capabilities Immich is building toward, machine learning will get more powerful and therefore require more resources to run effectively. However, we understand that users might not have the best server resources where they host the Immich instance. Therefore, we changed how machine learning interacts and receives the photos and videos to run through its inference pipeline.
-
-The machine learning container is now a headless system that can run on any machine. As long as your Immich instance can communicate with the system running the machine learning container, it can send the files and receive the required information to make Immich powerful in terms of searching and intelligence. This helps you to utilize a more powerful machine in your home/infrastructure to perform the CPU-intensive tasks while letting Immich only handle the I/O operations for a pleasant and smooth experience.
-
----
-
-So, those are the highlights for the team and the community after a busy month. There are a lot more changes and improvements. I encourage you to read some release notes, starting from version [v1.57.0](https://github.com/immich-app/immich/releases/tag/v1.57.0) to now.
-
-Thank you, and I am asking for your support for the project. I hope to be a full-time maintainer of Immich one day to dedicate myself to the project as my life works for the community and my family. You can find the support channels below:
-
-- Monthly donation via [GitHub Sponsors](https://github.com/sponsors/alextran1502)
-- One-time donation via [GitHub Sponsors](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502)
-- [Liberapay](https://liberapay.com/alex.tran1502/)
-- [buymeacoffee](https://www.buymeacoffee.com/altran1502)
-- Bitcoin: 3QVAb9dCHutquVejeNXitPqZX26Yg5kxb7
-- Give a project a star - the contributors love gazing at the stars and seeing their creations shining in the sky.
-
-Join our friendly [Discord](https://discord.immich.app) to talk and discuss Immich, tech, or anything
-
-Cheer!
-
-Until next time!
-
-Alex
diff --git a/docs/blog/2023/07-29/images/web-shortcuts-panel.png b/docs/blog/2023/07-29/images/web-shortcuts-panel.png
deleted file mode 100644
index 5a16c9f289..0000000000
Binary files a/docs/blog/2023/07-29/images/web-shortcuts-panel.png and /dev/null differ
diff --git a/docs/blog/2023/07-29/update.mdx b/docs/blog/2023/07-29/update.mdx
deleted file mode 100644
index 6d50ddfdc0..0000000000
--- a/docs/blog/2023/07-29/update.mdx
+++ /dev/null
@@ -1,151 +0,0 @@
----
-title: Immich Update - July 2023
-authors: [alextran]
-tags: [update, v1.64.0-v1.71.0]
----
-
-Hello, Immich fans, another month, another milestone. We hope you are staying cool and safe in this scorching hot summer across the globe.
-
-Immich recently got some good recognition when getting to the front page of HackerNews, which helped to let more people know about the project's existence. The project will help more and more people find a solution to control the privacy of their most precious moments. And with the gain in popularity and recognition, we have gotten new users and more questions from the community than ever.
-
-I want to express my gratitude to all the contributors and the community who have been tremendously helpful to new users' questions and provided technical support.
-
-Below are the highlights of new features we added to the application over the past month, along with countless bug fixes and improvements across the board, from developer experience to resource optimization and UI/UX improvement. I hope you find these topics as exciting as I am.
-
-## Highlights
-
-- Memories feature.
-- Facial recognition improvements.
-- Improvements on multi selection behavior on the web.
-- Shortcuts for common actions on the web.
-- Support viewer for 360-panorama photos.
-
-
-
----
-
-### Memories feature
-
-We've added the memory feature on the mobile app, so you can reminisce about your past memories.
-
-
-
-### Facial recognition improvements
-
-Over the past few releases, we have added many UI improvements to the facial recognition feature to help you manage the recognized people better. Some of the highlights:
-
-#### Choose a new feature photo for a person.
-
-
-
-#### Hide and show faces.
-
-You can now select irrelevant faces to hide them. The hidden faces won’t be displayed in search results and the people section in the info panel.
-
-#### Merge faces.
-
-This is useful when you have multiple faces of the same person in your photos, and you want to merge them into one.
-
-
-
-We also added a nifty mechanism that when naming a face, similar names will prompt you a merge face option for the convenience.
-
-
-
-### Improvements on multi selection behavior on the web
-
-We have added a new multi selection behavior on the web to help you select multiple items easier. You can now select a range of photos and videos by holding the `Shift` key.
-
-
-
-### Shortcuts for common actions on the web.
-
-Some of us only navigate the world and the web with a keyboard (looking at you, Vim and Emacs users). So it would take away the sacred weapon of choice to require many clicks to perform repetitive actions. So we added quick shortcuts for the following action on the web.
-
-
-
-### Support viewer for 360-panorama photos.
-
-Photos with the EXIF property of `ProjectionType` will now have a special viewer on the web to view all the angles of the panorama.
-
-The thumbnail of the 360 degrees panoramas will have a special icon on the top right of the thumbnail
-
-
-
-
:::note
-Some jobs ([External Libraries](/docs/features/libraries) scanning, Database Dump) are configured in their own sections in System Settings.
+Some jobs ([External Libraries](/features/libraries) scanning, Database Dump) are configured in their own sections in System Settings.
:::
+
+## Job processing order
+
+The below diagram shows the job run order for newly uploaded files
+
+```mermaid
+graph TD
+ A[Asset Upload] --> B[Metadata Extraction]
+ B --> C[Storage Template Migration]
+ C --> D["Thumbnail Generation (Large, small, blurred and person)"]
+ D --> E[Smart Search]
+ D --> F[Face Detection]
+ D --> G[Video Transcoding]
+ E --> H[Duplicate Detection]
+ F --> I[Facial Recognition]
+```
diff --git a/docs/docs/administration/oauth.md b/docs/docs/administration/oauth.md
index 55a0ce9469..47f4a96c6a 100644
--- a/docs/docs/administration/oauth.md
+++ b/docs/docs/administration/oauth.md
@@ -28,7 +28,7 @@ Before enabling OAuth in Immich, a new client application needs to be configured
2. Configure Redirect URIs/Origins
The **Sign-in redirect URIs** should include:
- - `app.immich:///oauth-callback` - for logging in with OAuth from the [Mobile App](/docs/features/mobile-app.mdx)
+ - `app.immich:///oauth-callback` - for logging in with OAuth from the [Mobile App](/features/mobile-app.mdx)
- `http://DOMAIN:PORT/auth/login` - for logging in with OAuth from the Web Client
- `http://DOMAIN:PORT/user-settings` - for manually linking OAuth in the Web Client
@@ -98,7 +98,7 @@ The redirect URI for the mobile app is `app.immich:///oauth-callback`, which is
2. Whitelist the new endpoint as a valid redirect URI with your provider.
3. Specify the new endpoint as the `Mobile Redirect URI Override`, in the OAuth settings.
-With these steps in place, you should be able to use OAuth from the [Mobile App](/docs/features/mobile-app.mdx) without a custom scheme redirect URI.
+With these steps in place, you should be able to use OAuth from the [Mobile App](/features/mobile-app.mdx) without a custom scheme redirect URI.
:::info
Immich has a route (`/api/oauth/mobile-redirect`) that is already configured to forward requests to `app.immich:///oauth-callback`, and can be used for step 1.
diff --git a/docs/docs/administration/postgres-standalone.md b/docs/docs/administration/postgres-standalone.md
index fd9b8a5e4d..2b7527623f 100644
--- a/docs/docs/administration/postgres-standalone.md
+++ b/docs/docs/administration/postgres-standalone.md
@@ -10,16 +10,19 @@ Running with a pre-existing Postgres server can unlock powerful administrative f
## Prerequisites
-You must install `pgvector` (`>= 0.7.0, < 1.0.0`), as it is a prerequisite for `vchord`.
+You must install pgvector as it is a prerequisite for VectorChord.
The easiest way to do this on Debian/Ubuntu is by adding the [PostgreSQL Apt repository][pg-apt] and then
running `apt install postgresql-NN-pgvector`, where `NN` is your Postgres version (e.g., `16`).
You must install VectorChord into your instance of Postgres using their [instructions][vchord-install]. After installation, add `shared_preload_libraries = 'vchord.so'` to your `postgresql.conf`. If you already have some `shared_preload_libraries` set, you can separate each extension with a comma. For example, `shared_preload_libraries = 'pg_stat_statements, vchord.so'`.
-:::note
-Immich is known to work with Postgres versions `>= 14, < 18`.
+:::note Supported versions
+Immich is known to work with Postgres versions `>= 14, < 19`.
-Make sure the installed version of VectorChord is compatible with your version of Immich. The current accepted range for VectorChord is `>= 0.3.0, < 0.5.0`.
+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`.
:::
## Specifying the connection URL
diff --git a/docs/docs/administration/reverse-proxy.md b/docs/docs/administration/reverse-proxy.md
index f13814d91f..5c9e47b010 100644
--- a/docs/docs/administration/reverse-proxy.md
+++ b/docs/docs/administration/reverse-proxy.md
@@ -6,6 +6,10 @@ Users can deploy a custom reverse proxy that forwards requests to Immich. This w
Immich does not support being served on a sub-path such as `location /immich {`. It has to be served on the root path of a (sub)domain.
:::
+:::info
+If your reverse proxy uses the [Let's Encrypt](https://letsencrypt.org/) [http-01 challenge](https://letsencrypt.org/docs/challenge-types/#http-01-challenge), you may want to verify that the Immich well-known endpoint (`/.well-known/immich`) gets correctly routed to Immich, otherwise it will likely be routed elsewhere and the mobile app may run into connection issues.
+:::
+
### Nginx example config
Below is an example config for nginx. Make sure to set `public_url` to the front-facing URL of your instance, and `backend_url` to the path of the Immich server.
@@ -37,29 +41,14 @@ server {
location / {
proxy_pass http://
diff --git a/docs/docs/features/sharing.md b/docs/docs/features/sharing.md
index ff0a03beea..c19b4f48e1 100644
--- a/docs/docs/features/sharing.md
+++ b/docs/docs/features/sharing.md
@@ -24,11 +24,11 @@ After creating an album, you can access the sharing options by clicking on the s
Partner sharing allows you to share your _entire_ library with other users of your choice. They can then view your library and download the assets.
-You can read this guide to learn more about [partner sharing](/docs/features/partner-sharing).
+You can read this guide to learn more about [partner sharing](/features/partner-sharing).
## Public sharing
-You can create a public link to share a group of photos or videos, or an album, with anyone. The public link can be shared via email, social media, or any other method. There are a varierity of options to customize the public link, such as setting an expiration date, password protection, and more. Public shared link is handy when you want to share a group of photos or videos with someone who doesn't have an Immich account and allow the shared user to upload their photos or videos to your account.
+You can create a public link to share a group of photos or videos, or an album, with anyone. The public link can be shared via email, social media, or any other method. There are a variety of options to customize the public link, such as setting an expiration date, password protection, and more. Public shared link is handy when you want to share a group of photos or videos with someone who doesn't have an Immich account and allow the shared user to upload their photos or videos to your account.
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.
diff --git a/docs/docs/features/tags.md b/docs/docs/features/tags.md
index a5b6752c81..79a9696d9a 100644
--- a/docs/docs/features/tags.md
+++ b/docs/docs/features/tags.md
@@ -1,6 +1,6 @@
# Tags
-Immich supports hierarchical tags, with the ability to read existing tags from the XMP `TagsList` field and IPTC `Keywords` field. Any changes to tags made through Immich are also written back to a [sidecar](/docs/features/xmp-sidecars) file. You can re-run the metadata extraction jobs for all assets to import your existing tags.
+Immich supports hierarchical tags, with the ability to read existing tags from the XMP `TagsList` field and IPTC `Keywords` field. Any changes to tags made through Immich are also written back to a [sidecar](/features/xmp-sidecars) file. You can re-run the metadata extraction jobs for all assets to import your existing tags.
## Enable tags feature
diff --git a/docs/docs/features/user-settings.md b/docs/docs/features/user-settings.md
index a2d0308541..402105cd43 100644
--- a/docs/docs/features/user-settings.md
+++ b/docs/docs/features/user-settings.md
@@ -15,9 +15,9 @@ You can access the [user settings](https://my.immich.app/user-settings) by click
---
:::tip Reset Password
-The admin can reset a user password through the [User Management](/docs/administration/user-management.mdx) screen.
+The admin can reset a user password through the [User Management](/administration/user-management.mdx) screen.
:::
:::tip Reset Admin Password
-The admin password can be reset using a [Server Command](/docs/administration/server-commands.md)
+The admin password can be reset using a [Server Command](/administration/server-commands.md)
:::
diff --git a/docs/docs/guides/better-facial-clusters.md b/docs/docs/guides/better-facial-clusters.md
index f4409b441c..40796983a5 100644
--- a/docs/docs/guides/better-facial-clusters.md
+++ b/docs/docs/guides/better-facial-clusters.md
@@ -10,7 +10,7 @@ This guide explains how to optimize facial recognition in systems with large ima
- **Best Suited For:** Large image libraries after importing a significant number of images.
- **Warning:** This method deletes all previously assigned names.
-- **Tip:** **Always take a [backup](/docs/administration/backup-and-restore#database) before proceeding!**
+- **Tip:** **Always take a [backup](/administration/backup-and-restore#database) before proceeding!**
---
diff --git a/docs/docs/guides/custom-locations.md b/docs/docs/guides/custom-locations.md
index af8ca438e7..e0274d3bd9 100644
--- a/docs/docs/guides/custom-locations.md
+++ b/docs/docs/guides/custom-locations.md
@@ -9,7 +9,7 @@ It is important to remember to update the backup settings after following the gu
In our `.env` file, we will define the paths we want to use. Note that you don't have to define all of these: UPLOAD_LOCATION will be the base folder that files are stored in by default, with the other paths acting as overrides.
```diff title=".env"
-# You can find documentation for all the supported environment variables [here](/docs/install/environment-variables)
+# You can find documentation for all the supported environment variables [here](/install/environment-variables)
# Custom location where your uploaded, thumbnails, and transcoded video files are stored
- UPLOAD_LOCATION=./library
diff --git a/docs/docs/guides/database-queries.md b/docs/docs/guides/database-queries.md
index 1a5c2ed193..c2328d2bb8 100644
--- a/docs/docs/guides/database-queries.md
+++ b/docs/docs/guides/database-queries.md
@@ -7,7 +7,7 @@ Keep in mind that mucking around in the database might set the Moon on fire. Avo
:::tip
Run `docker exec -it immich_postgres psql --dbname=
- In the dialog, select which user should own the new library
-
+
- Click the three-dots menu and select **Edit Import Paths**
diff --git a/docs/docs/guides/remote-access.md b/docs/docs/guides/remote-access.md
index 6f401dfc5a..518b003c3a 100644
--- a/docs/docs/guides/remote-access.md
+++ b/docs/docs/guides/remote-access.md
@@ -46,7 +46,7 @@ You can learn how to set up Tailscale together with Immich with the [tutorial vi
A reverse proxy is a service that sits between web servers and clients. A reverse proxy can either be hosted on the server itself or remotely. Clients can connect to the reverse proxy via https, and the proxy relays data to Immich. This setup makes most sense if you have your own domain and want to access your Immich instance just like any other website, from outside your LAN. You can also use a DDNS provider like DuckDNS or no-ip if you don't have a domain. This configuration allows the Immich Android and iphone apps to connect to your server without a VPN or tailscale app on the client side.
-If you're hosting your own reverse proxy, [Nginx](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/) is a great option. An example configuration for Nginx is provided [here](/docs/administration/reverse-proxy.md).
+If you're hosting your own reverse proxy, [Nginx](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/) is a great option. An example configuration for Nginx is provided [here](/administration/reverse-proxy.md).
You'll also need your own certificate to authenticate https connections. If you're making Immich publicly accessible, [Let's Encrypt](https://letsencrypt.org/) can provide a free certificate for your domain and is the recommended option. Alternatively, a [self-signed certificate](https://en.wikipedia.org/wiki/Self-signed_certificate) allows you to encrypt your connection to Immich, but it raises a security warning on the client's browser.
diff --git a/docs/docs/guides/remote-machine-learning.md b/docs/docs/guides/remote-machine-learning.md
index 72ae0e3fa1..0a8ddf2577 100644
--- a/docs/docs/guides/remote-machine-learning.md
+++ b/docs/docs/guides/remote-machine-learning.md
@@ -1,6 +1,6 @@
# Remote Machine Learning
-To alleviate [performance issues on low-memory systems](/docs/FAQ.mdx#why-is-immich-slow-on-low-memory-systems-like-the-raspberry-pi) like the Raspberry Pi, you may also host Immich's machine learning container on a more powerful system, such as your laptop or desktop computer. The server container will send requests containing the image preview to the remote machine learning container for processing. The machine learning container does not persist this data or associate it with a particular user.
+To alleviate [performance issues on low-memory systems](/FAQ.mdx#why-is-immich-slow-on-low-memory-systems-like-the-raspberry-pi) like the Raspberry Pi, you may also host Immich's machine learning container on a more powerful system, such as your laptop or desktop computer. The server container will send requests containing the image preview to the remote machine learning container for processing. The machine learning container does not persist this data or associate it with a particular user.
:::info
Smart Search and Face Detection will use this feature, but Facial Recognition will not. This is because Facial Recognition uses the _outputs_ of these models that have already been saved to the database. As such, its processing is between the server container and the database.
@@ -14,7 +14,7 @@ Image previews are sent to the remote machine learning container. Use this optio
2. Copy the following `docker-compose.yml` to the remote server
:::info
-If using hardware acceleration, the [hwaccel.ml.yml](https://github.com/immich-app/immich/releases/latest/download/hwaccel.ml.yml) file also needs to be added and the `docker-compose.yml` needs to be configured as described in the [hardware acceleration documentation](/docs/features/ml-hardware-acceleration)
+If using hardware acceleration, the [hwaccel.ml.yml](https://github.com/immich-app/immich/releases/latest/download/hwaccel.ml.yml) file also needs to be added and the `docker-compose.yml` needs to be configured as described in the [hardware acceleration documentation](/features/ml-hardware-acceleration)
:::
```yaml
diff --git a/docs/docs/guides/template-backup-script.md b/docs/docs/guides/template-backup-script.md
index 34381dd0ee..19647d4ae1 100644
--- a/docs/docs/guides/template-backup-script.md
+++ b/docs/docs/guides/template-backup-script.md
@@ -7,7 +7,7 @@ This script assumes you have a second hard drive connected to your server for on
The database is saved to your Immich upload folder in the `database-backup` subdirectory. The database is then backed up and versioned with your assets by Borg. This ensures that the database backup is in sync with your assets in every snapshot.
:::info
-This script makes backups of your database along with your photo/video library. This is redundant with the [automatic database backup tool](https://immich.app/docs/administration/backup-and-restore#automatic-database-backups) built into Immich. Using this script to backup your database has two advantages over the built-in backup tool:
+This script makes backups of your database along with your photo/video library. This is redundant with the [automatic database backup tool](/administration/backup-and-restore#automatic-database-dumps) built into Immich. Using this script to backup your database has two advantages over the built-in backup tool:
- This script uses storage more efficiently by versioning your backups instead of making multiple copies.
- The database backups are performed at the same time as the library backup, ensuring that the backups of your database and the library are always in sync.
diff --git a/docs/docs/install/config-file.md b/docs/docs/install/config-file.md
index 54d7c61bb3..a6aaae149b 100644
--- a/docs/docs/install/config-file.md
+++ b/docs/docs/install/config-file.md
@@ -16,48 +16,76 @@ The default configuration looks like this:
```json
{
- "ffmpeg": {
- "crf": 23,
- "threads": 0,
- "preset": "ultrafast",
- "targetVideoCodec": "h264",
- "acceptedVideoCodecs": ["h264"],
- "targetAudioCodec": "aac",
- "acceptedAudioCodecs": ["aac", "mp3", "libopus", "pcm_s16le"],
- "acceptedContainers": ["mov", "ogg", "webm"],
- "targetResolution": "720",
- "maxBitrate": "0",
- "bframes": -1,
- "refs": 0,
- "gopSize": 0,
- "temporalAQ": false,
- "cqMode": "auto",
- "twoPass": false,
- "preferredHwDevice": "auto",
- "transcode": "required",
- "tonemap": "hable",
- "accel": "disabled",
- "accelDecode": false
- },
"backup": {
"database": {
- "enabled": true,
"cronExpression": "0 02 * * *",
+ "enabled": true,
"keepLastAmount": 14
}
},
+ "ffmpeg": {
+ "accel": "disabled",
+ "accelDecode": false,
+ "acceptedAudioCodecs": ["aac", "mp3", "libopus"],
+ "acceptedContainers": ["mov", "ogg", "webm"],
+ "acceptedVideoCodecs": ["h264"],
+ "bframes": -1,
+ "cqMode": "auto",
+ "crf": 23,
+ "gopSize": 0,
+ "maxBitrate": "0",
+ "preferredHwDevice": "auto",
+ "preset": "ultrafast",
+ "refs": 0,
+ "targetAudioCodec": "aac",
+ "targetResolution": "720",
+ "targetVideoCodec": "h264",
+ "temporalAQ": false,
+ "threads": 0,
+ "tonemap": "hable",
+ "transcode": "required",
+ "twoPass": false
+ },
+ "image": {
+ "colorspace": "p3",
+ "extractEmbedded": false,
+ "fullsize": {
+ "enabled": false,
+ "format": "jpeg",
+ "quality": 80
+ },
+ "preview": {
+ "format": "jpeg",
+ "quality": 80,
+ "size": 1440
+ },
+ "thumbnail": {
+ "format": "webp",
+ "quality": 80,
+ "size": 250
+ }
+ },
"job": {
"backgroundTask": {
"concurrency": 5
},
- "smartSearch": {
+ "faceDetection": {
"concurrency": 2
},
+ "library": {
+ "concurrency": 5
+ },
"metadataExtraction": {
"concurrency": 5
},
- "faceDetection": {
- "concurrency": 2
+ "migration": {
+ "concurrency": 5
+ },
+ "notifications": {
+ "concurrency": 5
+ },
+ "ocr": {
+ "concurrency": 1
},
"search": {
"concurrency": 5
@@ -65,20 +93,23 @@ The default configuration looks like this:
"sidecar": {
"concurrency": 5
},
- "library": {
- "concurrency": 5
- },
- "migration": {
- "concurrency": 5
+ "smartSearch": {
+ "concurrency": 2
},
"thumbnailGeneration": {
"concurrency": 3
},
"videoConversion": {
"concurrency": 1
+ }
+ },
+ "library": {
+ "scan": {
+ "cronExpression": "0 0 * * *",
+ "enabled": true
},
- "notifications": {
- "concurrency": 5
+ "watch": {
+ "enabled": false
}
},
"logging": {
@@ -86,8 +117,11 @@ The default configuration looks like this:
"level": "log"
},
"machineLearning": {
- "enabled": true,
- "urls": ["http://immich-machine-learning:3003"],
+ "availabilityChecks": {
+ "enabled": true,
+ "interval": 30000,
+ "timeout": 2000
+ },
"clip": {
"enabled": true,
"modelName": "ViT-B-32__openai"
@@ -96,27 +130,59 @@ The default configuration looks like this:
"enabled": true,
"maxDistance": 0.01
},
+ "enabled": true,
"facialRecognition": {
"enabled": true,
- "modelName": "buffalo_l",
- "minScore": 0.7,
"maxDistance": 0.5,
- "minFaces": 3
- }
+ "minFaces": 3,
+ "minScore": 0.7,
+ "modelName": "buffalo_l"
+ },
+ "ocr": {
+ "enabled": true,
+ "maxResolution": 736,
+ "minDetectionScore": 0.5,
+ "minRecognitionScore": 0.8,
+ "modelName": "PP-OCRv5_mobile"
+ },
+ "urls": ["http://immich-machine-learning:3003"]
},
"map": {
+ "darkStyle": "https://tiles.immich.cloud/v1/style/dark.json",
"enabled": true,
- "lightStyle": "https://tiles.immich.cloud/v1/style/light.json",
- "darkStyle": "https://tiles.immich.cloud/v1/style/dark.json"
- },
- "reverseGeocoding": {
- "enabled": true
+ "lightStyle": "https://tiles.immich.cloud/v1/style/light.json"
},
"metadata": {
"faces": {
"import": false
}
},
+ "newVersionCheck": {
+ "enabled": true
+ },
+ "nightlyTasks": {
+ "clusterNewFaces": true,
+ "databaseCleanup": true,
+ "generateMemories": true,
+ "missingThumbnails": true,
+ "startTime": "00:00",
+ "syncQuotaUsage": true
+ },
+ "notifications": {
+ "smtp": {
+ "enabled": false,
+ "from": "",
+ "replyTo": "",
+ "transport": {
+ "host": "",
+ "ignoreCert": false,
+ "password": "",
+ "port": 587,
+ "secure": false,
+ "username": ""
+ }
+ }
+ },
"oauth": {
"autoLaunch": false,
"autoRegister": true,
@@ -128,70 +194,44 @@ The default configuration looks like this:
"issuerUrl": "",
"mobileOverrideEnabled": false,
"mobileRedirectUri": "",
+ "profileSigningAlgorithm": "none",
+ "roleClaim": "immich_role",
"scope": "openid email profile",
"signingAlgorithm": "RS256",
- "profileSigningAlgorithm": "none",
"storageLabelClaim": "preferred_username",
- "storageQuotaClaim": "immich_quota"
+ "storageQuotaClaim": "immich_quota",
+ "timeout": 30000,
+ "tokenEndpointAuthMethod": "client_secret_post"
},
"passwordLogin": {
"enabled": true
},
+ "reverseGeocoding": {
+ "enabled": true
+ },
+ "server": {
+ "externalDomain": "",
+ "loginPageMessage": "",
+ "publicUsers": true
+ },
"storageTemplate": {
"enabled": false,
"hashVerificationEnabled": true,
"template": "{{y}}/{{y}}-{{MM}}-{{dd}}/{{filename}}"
},
- "image": {
- "thumbnail": {
- "format": "webp",
- "size": 250,
- "quality": 80
- },
- "preview": {
- "format": "jpeg",
- "size": 1440,
- "quality": 80
- },
- "colorspace": "p3",
- "extractEmbedded": false
- },
- "newVersionCheck": {
- "enabled": true
- },
- "trash": {
- "enabled": true,
- "days": 30
+ "templates": {
+ "email": {
+ "albumInviteTemplate": "",
+ "albumUpdateTemplate": "",
+ "welcomeTemplate": ""
+ }
},
"theme": {
"customCss": ""
},
- "library": {
- "scan": {
- "enabled": true,
- "cronExpression": "0 0 * * *"
- },
- "watch": {
- "enabled": false
- }
- },
- "server": {
- "externalDomain": "",
- "loginPageMessage": ""
- },
- "notifications": {
- "smtp": {
- "enabled": false,
- "from": "",
- "replyTo": "",
- "transport": {
- "ignoreCert": false,
- "host": "",
- "port": 587,
- "username": "",
- "password": ""
- }
- }
+ "trash": {
+ "days": 30,
+ "enabled": true
},
"user": {
"deleteDelay": 7
@@ -209,7 +249,7 @@ So you can just grab it from there, paste it into a file and you're pretty much
### Step 2 - Specify the file location
In your `.env` file, set the variable `IMMICH_CONFIG_FILE` to the path of your config.
-For more information, refer to the [Environment Variables](/docs/install/environment-variables.md) section.
+For more information, refer to the [Environment Variables](/install/environment-variables.md) section.
:::tip
YAML-formatted config files are also supported.
diff --git a/docs/docs/install/docker-compose.mdx b/docs/docs/install/docker-compose.mdx
index 7a0b566f5d..46b144eb4a 100644
--- a/docs/docs/install/docker-compose.mdx
+++ b/docs/docs/install/docker-compose.mdx
@@ -29,4 +29,4 @@ If you get an error `can't set healthcheck.start_interval as feature require Doc
## Next Steps
-Read the [Post Installation](/docs/install/post-install.mdx) steps and [upgrade instructions](/docs/install/upgrading.md).
+Read the [Post Installation](/install/post-install.mdx) steps and [upgrade instructions](/install/upgrading.md).
diff --git a/docs/docs/install/environment-variables.md b/docs/docs/install/environment-variables.md
index 4e081c8966..55c226d507 100644
--- a/docs/docs/install/environment-variables.md
+++ b/docs/docs/install/environment-variables.md
@@ -42,7 +42,7 @@ These environment variables are used by the `docker-compose.yml` file and do **N
| `IMMICH_MICROSERVICES_METRICS_PORT` | Port for the OTEL metrics | `8082` | server | microservices |
| `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](/docs/administration/system-integrity) | | server | api, microservices |
+| `IMMICH_IGNORE_MOUNT_CHECK_ERRORS` | See [System Integrity](/administration/system-integrity) | | server | api, microservices |
\*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.
@@ -57,7 +57,7 @@ These environment variables are used by the `docker-compose.yml` file and do **N
| `IMMICH_WORKERS_EXCLUDE` | Do not run these workers. Matches against default workers, or `IMMICH_WORKERS_INCLUDE` if specified. | | server |
:::info
-Information on the current workers can be found [here](/docs/administration/jobs-workers).
+Information on the current workers can be found [here](/administration/jobs-workers).
:::
## Ports
@@ -149,28 +149,31 @@ Redis (Sentinel) URL example JSON before encoding:
## Machine Learning
-| Variable | Description | Default | Containers |
-| :---------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- | :-----------------------------: | :--------------- |
-| `MACHINE_LEARNING_MODEL_TTL` | Inactivity time (s) before a model is unloaded (disabled if \<= 0) | `300` | machine learning |
-| `MACHINE_LEARNING_MODEL_TTL_POLL_S` | Interval (s) between checks for the model TTL (disabled if \<= 0) | `10` | machine learning |
-| `MACHINE_LEARNING_CACHE_FOLDER` | Directory where models are downloaded | `/cache` | machine learning |
-| `MACHINE_LEARNING_REQUEST_THREADS`\*1 | Thread count of the request thread pool (disabled if \<= 0) | number of CPU cores | machine learning |
-| `MACHINE_LEARNING_MODEL_INTER_OP_THREADS` | Number of parallel model operations | `1` | machine learning |
-| `MACHINE_LEARNING_MODEL_INTRA_OP_THREADS` | Number of threads for each model operation | `2` | machine learning |
-| `MACHINE_LEARNING_WORKERS`\*2 | Number of worker processes to spawn | `1` | machine learning |
-| `MACHINE_LEARNING_HTTP_KEEPALIVE_TIMEOUT_S`\*3 | HTTP Keep-alive time in seconds | `2` | machine learning |
-| `MACHINE_LEARNING_WORKER_TIMEOUT` | Maximum time (s) of unresponsiveness before a worker is killed | `120` (`300` if using OpenVINO) | machine learning |
-| `MACHINE_LEARNING_PRELOAD__CLIP__TEXTUAL` | Comma-separated list of (textual) CLIP model(s) to preload and cache | | machine learning |
-| `MACHINE_LEARNING_PRELOAD__CLIP__VISUAL` | Comma-separated list of (visual) CLIP model(s) to preload and cache | | machine learning |
-| `MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__RECOGNITION` | Comma-separated list of (recognition) facial recognition model(s) to preload and cache | | machine learning |
-| `MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__DETECTION` | Comma-separated list of (detection) facial recognition model(s) to preload and cache | | machine learning |
-| `MACHINE_LEARNING_ANN` | Enable ARM-NN hardware acceleration if supported | `True` | machine learning |
-| `MACHINE_LEARNING_ANN_FP16_TURBO` | Execute operations in FP16 precision: increasing speed, reducing precision (applies only to ARM-NN) | `False` | machine learning |
-| `MACHINE_LEARNING_ANN_TUNING_LEVEL` | ARM-NN GPU tuning level (1: rapid, 2: normal, 3: exhaustive) | `2` | machine learning |
-| `MACHINE_LEARNING_DEVICE_IDS`\*4 | Device IDs to use in multi-GPU environments | `0` | machine learning |
-| `MACHINE_LEARNING_MAX_BATCH_SIZE__FACIAL_RECOGNITION` | Set the maximum number of faces that will be processed at once by the facial recognition model | None (`1` if using OpenVINO) | machine learning |
-| `MACHINE_LEARNING_RKNN` | Enable RKNN hardware acceleration if supported | `True` | machine learning |
-| `MACHINE_LEARNING_RKNN_THREADS` | How many threads of RKNN runtime should be spinned up while inferencing. | `1` | machine learning |
+| Variable | Description | Default | Containers |
+| :---------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- | :-----------------------------: | :--------------- |
+| `MACHINE_LEARNING_MODEL_TTL` | Inactivity time (s) before a model is unloaded (disabled if \<= 0) | `300` | machine learning |
+| `MACHINE_LEARNING_MODEL_TTL_POLL_S` | Interval (s) between checks for the model TTL (disabled if \<= 0) | `10` | machine learning |
+| `MACHINE_LEARNING_CACHE_FOLDER` | Directory where models are downloaded | `/cache` | machine learning |
+| `MACHINE_LEARNING_REQUEST_THREADS`\*1 | Thread count of the request thread pool (disabled if \<= 0) | number of CPU cores | machine learning |
+| `MACHINE_LEARNING_MODEL_INTER_OP_THREADS` | Number of parallel model operations | `1` | machine learning |
+| `MACHINE_LEARNING_MODEL_INTRA_OP_THREADS` | Number of threads for each model operation | `2` | machine learning |
+| `MACHINE_LEARNING_WORKERS`\*2 | Number of worker processes to spawn | `1` | machine learning |
+| `MACHINE_LEARNING_HTTP_KEEPALIVE_TIMEOUT_S`\*3 | HTTP Keep-alive time in seconds | `2` | machine learning |
+| `MACHINE_LEARNING_WORKER_TIMEOUT` | Maximum time (s) of unresponsiveness before a worker is killed | `120` (`300` if using OpenVINO) | machine learning |
+| `MACHINE_LEARNING_PRELOAD__CLIP__TEXTUAL` | Comma-separated list of (textual) CLIP model(s) to preload and cache | | machine learning |
+| `MACHINE_LEARNING_PRELOAD__CLIP__VISUAL` | Comma-separated list of (visual) CLIP model(s) to preload and cache | | machine learning |
+| `MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__RECOGNITION` | Comma-separated list of (recognition) facial recognition model(s) to preload and cache | | machine learning |
+| `MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__DETECTION` | Comma-separated list of (detection) facial recognition model(s) to preload and cache | | machine learning |
+| `MACHINE_LEARNING_ANN` | Enable ARM-NN hardware acceleration if supported | `True` | machine learning |
+| `MACHINE_LEARNING_ANN_FP16_TURBO` | Execute operations in FP16 precision: increasing speed, reducing precision (applies only to ARM-NN) | `False` | machine learning |
+| `MACHINE_LEARNING_ANN_TUNING_LEVEL` | ARM-NN GPU tuning level (1: rapid, 2: normal, 3: exhaustive) | `2` | machine learning |
+| `MACHINE_LEARNING_DEVICE_IDS`\*4 | Device IDs to use in multi-GPU environments | `0` | machine learning |
+| `MACHINE_LEARNING_MAX_BATCH_SIZE__FACIAL_RECOGNITION` | Set the maximum number of faces that will be processed at once by the facial recognition model | None (`1` if using OpenVINO) | machine learning |
+| `MACHINE_LEARNING_MAX_BATCH_SIZE__OCR` | Set the maximum number of boxes that will be processed at once by the OCR model | `6` | machine learning |
+| `MACHINE_LEARNING_RKNN` | Enable RKNN hardware acceleration if supported | `True` | machine learning |
+| `MACHINE_LEARNING_RKNN_THREADS` | How many threads of RKNN runtime should be spun up while inferencing. | `1` | machine learning |
+| `MACHINE_LEARNING_MODEL_ARENA` | Pre-allocates CPU memory to avoid memory fragmentation | true | machine learning |
+| `MACHINE_LEARNING_OPENVINO_PRECISION` | If set to FP16, uses half-precision floating-point operations for faster inference with reduced accuracy (one of [`FP16`, `FP32`], applies only to OpenVINO) | `FP32` | machine learning |
\*1: It is recommended to begin with this parameter when changing the concurrency levels of the machine learning service and then tune the other ones.
diff --git a/docs/docs/install/one-click.md b/docs/docs/install/one-click.md
new file mode 100644
index 0000000000..53fcb20d21
--- /dev/null
+++ b/docs/docs/install/one-click.md
@@ -0,0 +1,32 @@
+---
+sidebar_position: 65
+---
+
+# One-Click [Cloud Service]
+
+:::note
+This version of Immich is provided via cloud service providers' one-click marketplaces. Hosting costs are set by the cloud service providers.
+Support for these are provided by the individual cloud service providers.
+
+**Please report issues to the corresponding [Github Repository][github].**
+:::
+
+## Installation
+
+Go to the provider's marketplace and choose Immich, then follow the provided instructions.
+
+## One-Click Immich marketplace providers
+
+### DigitalOcean
+
+https://marketplace.digitalocean.com/apps/immich
+
+### Vultr
+
+https://www.vultr.com/marketplace/apps/immich
+
+## Issues
+
+For issues, open an issue on the associated [GitHub Repository][github].
+
+[github]: https://github.com/immich-app/immich/
diff --git a/docs/docs/install/portainer.md b/docs/docs/install/portainer.md
index 916d89a0d5..07fd255292 100644
--- a/docs/docs/install/portainer.md
+++ b/docs/docs/install/portainer.md
@@ -45,5 +45,5 @@ alt="Dot Env Example"
11. Click on "**Deploy the stack**".
:::tip
-For more information on how to use the application, please refer to the [Post Installation](/docs/install/post-install.mdx) guide.
+For more information on how to use the application, please refer to the [Post Installation](/install/post-install.mdx) guide.
:::
diff --git a/docs/docs/install/post-install.mdx b/docs/docs/install/post-install.mdx
index 636274aaea..b30e91f3cd 100644
--- a/docs/docs/install/post-install.mdx
+++ b/docs/docs/install/post-install.mdx
@@ -44,6 +44,6 @@ A list of common steps to take after installing Immich include:
## Setting up optional features
-- [External Libraries](/docs/features/libraries.md): Adding your existing photo library to Immich
-- [Hardware Transcoding](/docs/features/hardware-transcoding.md): Speeding up video transcoding
-- [Hardware-Accelerated Machine Learning](/docs/features/ml-hardware-acceleration.md): Speeding up various machine learning tasks in Immich
+- [External Libraries](/features/libraries.md): Adding your existing photo library to Immich
+- [Hardware Transcoding](/features/hardware-transcoding.md): Speeding up video transcoding
+- [Hardware-Accelerated Machine Learning](/features/ml-hardware-acceleration.md): Speeding up various machine learning tasks in Immich
diff --git a/docs/docs/install/script.md b/docs/docs/install/script.md
index 93d1fb166c..ce05dc82d9 100644
--- a/docs/docs/install/script.md
+++ b/docs/docs/install/script.md
@@ -5,12 +5,12 @@ sidebar_position: 20
# Install script [Experimental]
:::caution
-This method is experimental and not currently recommended for production use. For production, please refer to installing with [Docker Compose](/docs/install/docker-compose.mdx).
+This method is experimental and not currently recommended for production use. For production, please refer to installing with [Docker Compose](/install/docker-compose.mdx).
:::
## Requirements
-Follow the [requirements page](/docs/install/requirements) to get started.
+Follow the [requirements page](/install/requirements) to get started.
The install script only supports Linux operating systems and requires Docker to be already installed on the system.
@@ -32,5 +32,5 @@ The web application and mobile app will be available at `http://
-
-## Welcome!
-
-Hello, I am glad you are here.
-
-My name is Alex. I am an Electrical Engineer by schooling, then turned into a Software Engineer by trade and the pure love of problem solving.
-
-We were lying in bed with our newborn, and my wife said, "We are starting to accumulate a lot of photos and videos of our baby, and I don't want to pay for **_App-Which-Must-Not-Be-Named_** anymore. You always want to build something for me, so why don't you build me an app which can do that?"
-
-That was how the idea started to grow in my head. After that, I began to find existing solutions in the self-hosting space with similar backup functionality and the performance level of the **_App-Which-Must-Not-Be-Named_**. I found that the current solutions mainly focus on the gallery-type application. However, I want a simple-to-use backup tool with a native mobile app that can view photos and videos efficiently. So I set sail on this journey as a hungry engineer on the hunt.
-
-Another motivation that pushed me to deliver my execution of the **_App-Which-Must-Not-Be-Named_** alternative or replacement is for contributing back to the open source community that I have greatly benefited from over the years.
-
-I'm proud to share this creation with you, which values privacy, memories, and the joy of looking back at those moments in an easy-to-use and friendly interface.
-
-If you like the application or it helps you in some way, please consider [supporting](./support-the-project.md) the project. It will help me to continue to develop and maintain the application.
diff --git a/docs/docs/partials/_mobile-app-download.md b/docs/docs/partials/_mobile-app-download.md
index 72a3053440..31cf62bf81 100644
--- a/docs/docs/partials/_mobile-app-download.md
+++ b/docs/docs/partials/_mobile-app-download.md
@@ -1,5 +1,6 @@
The mobile app can be downloaded from the following places:
+- Obtainium: You can get your Obtainium config link from the [Utilities page of your Immich server](https://my.immich.app/utilities).
- [Google Play Store](https://play.google.com/store/apps/details?id=app.alextran.immich)
- [Apple App Store](https://apps.apple.com/us/app/immich/id1613945652)
- [F-Droid](https://f-droid.org/packages/app.alextran.immich)
diff --git a/docs/docs/partials/_server-backup.md b/docs/docs/partials/_server-backup.md
index b9479600aa..34e09670e9 100644
--- a/docs/docs/partials/_server-backup.md
+++ b/docs/docs/partials/_server-backup.md
@@ -1,7 +1,6 @@
Now that you have imported some pictures, you should setup server backups to preserve your memories.
-You can do so by following our [backup guide](/docs/administration/backup-and-restore.md).
+You can do so by following our [backup guide](/administration/backup-and-restore.md).
-:::danger
-Immich is still under heavy development _and_ handles very important data.
-It is essential that you set up good backups, and test them.
+:::info
+A 3-2-1 backup strategy is still crucial. The team has the responsibility to ensure that the application doesn’t cause loss of your precious memories; however, we cannot guarantee that hard drives will not fail, or an electrical event causes unexpected shutdown of your server/system, leading to data loss. Therefore, we still encourage users to follow best practices when safeguarding their data. Keep multiple copies of your most precious data: at least two local copies and one copy offsite in cold storage.
:::
diff --git a/docs/docs/partials/_storage-template.md b/docs/docs/partials/_storage-template.md
index 20e9caac43..84236e0ac1 100644
--- a/docs/docs/partials/_storage-template.md
+++ b/docs/docs/partials/_storage-template.md
@@ -1,7 +1,7 @@
-Immich allows the admin user to set the uploaded filename pattern at the directory and filename level as well as the [storage label for a user](/docs/administration/user-management/#set-storage-label-for-user).
+Immich allows the admin user to set the uploaded filename pattern at the directory and filename level as well as the [storage label for a user](/administration/user-management/#set-storage-label-for-user).
:::tip
-You can read more about the differences between storage template engine on and off [here](/docs/administration/backup-and-restore#asset-types-and-storage-locations)
+You can read more about the differences between storage template engine on and off [here](/administration/backup-and-restore#asset-types-and-storage-locations)
:::
The admin user can set the template by using the template builder in the `Administration -> Settings -> Storage Template`. Immich provides a set of variables that you can use in constructing the template, along with additional custom text. If the template produces [multiple files with the same filename, they won't be overwritten](https://github.com/immich-app/immich/discussions/3324) as a sequence number is appended to the filename.
diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js
index d612dda253..70e0189a00 100644
--- a/docs/docusaurus.config.js
+++ b/docs/docusaurus.config.js
@@ -7,7 +7,7 @@ const prism = require('prism-react-renderer');
const config = {
title: 'Immich',
tagline: 'High performance self-hosted photo and video backup solution directly from your mobile phone',
- url: 'https://immich.app',
+ url: 'https://docs.immich.app',
baseUrl: '/',
onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'warn',
@@ -42,26 +42,19 @@ const config = {
],
presets: [
[
- 'docusaurus-preset-openapi',
- /** @type {import('docusaurus-preset-openapi').Options} */
+ 'classic',
+ /** @type {import('@docusaurus/preset-classic').Options} */
({
docs: {
showLastUpdateAuthor: true,
showLastUpdateTime: true,
+ routeBasePath: '/',
sidebarPath: require.resolve('./sidebars.js'),
// Please change this to your repo.
// Remove this to remove the "edit this page" links.
editUrl: 'https://github.com/immich-app/immich/tree/main/docs/',
},
- api: {
- path: '../open-api/immich-openapi-specs.json',
- routeBasePath: '/docs/api',
- },
- // blog: {
- // showReadingTime: true,
- // editUrl: "https://github.com/immich-app/immich/tree/main/docs/",
- // },
theme: {
customCss: require.resolve('./src/css/custom.css'),
},
@@ -72,11 +65,6 @@ const config = {
themeConfig:
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
({
- announcementBar: {
- id: 'site_announcement_immich',
- content: `⚠️ The project is under very active development. Expect bugs and changes. Do not use it as the only way to store your photos and videos!`,
- isCloseable: false,
- },
docs: {
sidebar: {
autoCollapseCategories: false,
@@ -95,17 +83,17 @@ const config = {
position: 'right',
},
{
- to: '/docs/overview/welcome',
+ to: '/overview/quick-start',
position: 'right',
label: 'Docs',
},
{
- to: '/roadmap',
+ href: 'https://immich.app/roadmap',
position: 'right',
label: 'Roadmap',
},
{
- to: '/docs/api',
+ href: 'https://api.immich.app/',
position: 'right',
label: 'API',
},
@@ -139,16 +127,16 @@ const config = {
title: 'Overview',
items: [
{
- label: 'Welcome',
- to: '/docs/overview/welcome',
+ label: 'Quick start',
+ to: '/overview/quick-start',
},
{
label: 'Installation',
- to: '/docs/install/requirements',
+ to: '/install/requirements',
},
{
label: 'Contributing',
- to: '/docs/overview/support-the-project',
+ to: '/overview/support-the-project',
},
{
label: 'Privacy Policy',
@@ -161,15 +149,15 @@ const config = {
items: [
{
label: 'Roadmap',
- to: '/roadmap',
+ href: 'https://immich.app/roadmap',
},
{
label: 'API',
- to: '/docs/api',
+ href: 'https://api.immich.app/',
},
{
label: 'Cursed Knowledge',
- to: '/cursed-knowledge',
+ href: 'https://immich.app/cursed-knowledge',
},
],
},
diff --git a/docs/mise.toml b/docs/mise.toml
new file mode 100644
index 0000000000..4ffb7d5cce
--- /dev/null
+++ b/docs/mise.toml
@@ -0,0 +1,25 @@
+[tasks.install]
+run = "pnpm install --filter documentation --frozen-lockfile"
+
+[tasks.start]
+env._.path = "./node_modules/.bin"
+run = "docusaurus --port 3005"
+
+[tasks.build]
+env._.path = "./node_modules/.bin"
+run = [
+ "jq -c < ../open-api/immich-openapi-specs.json > ./static/openapi.json || exit 0",
+ "docusaurus build",
+]
+
+[tasks.preview]
+env._.path = "./node_modules/.bin"
+run = "docusaurus serve"
+
+[tasks.format]
+env._.path = "./node_modules/.bin"
+run = "prettier --check ."
+
+[tasks."format-fix"]
+env._.path = "./node_modules/.bin"
+run = "prettier --write ."
diff --git a/docs/package.json b/docs/package.json
index 1a1dbcf84c..a7c958351c 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -17,15 +17,14 @@
"write-heading-ids": "docusaurus write-heading-ids"
},
"dependencies": {
- "@docusaurus/core": "~3.8.0",
- "@docusaurus/preset-classic": "~3.8.0",
- "@docusaurus/theme-common": "~3.8.0",
+ "@docusaurus/core": "~3.9.0",
+ "@docusaurus/preset-classic": "~3.9.0",
+ "@docusaurus/theme-common": "~3.9.0",
"@mdi/js": "^7.3.67",
"@mdi/react": "^1.6.1",
"@mdx-js/react": "^3.0.0",
"autoprefixer": "^10.4.17",
"docusaurus-lunr-search": "^3.3.2",
- "docusaurus-preset-openapi": "^0.7.5",
"lunr": "^2.3.9",
"postcss": "^8.4.25",
"prism-react-renderer": "^2.3.1",
@@ -36,7 +35,7 @@
"url": "^0.11.0"
},
"devDependencies": {
- "@docusaurus/module-type-aliases": "~3.8.0",
+ "@docusaurus/module-type-aliases": "~3.9.0",
"@docusaurus/tsconfig": "^3.7.0",
"@docusaurus/types": "^3.7.0",
"prettier": "^3.2.4",
@@ -58,6 +57,6 @@
"node": ">=20"
},
"volta": {
- "node": "22.19.0"
+ "node": "24.11.0"
}
}
diff --git a/docs/src/components/community-guides.tsx b/docs/src/components/community-guides.tsx
deleted file mode 100644
index 08c8e096d9..0000000000
--- a/docs/src/components/community-guides.tsx
+++ /dev/null
@@ -1,108 +0,0 @@
-import Link from '@docusaurus/Link';
-import React from 'react';
-
-interface CommunityGuidesProps {
- title: string;
- description: string;
- url: string;
-}
-
-const guides: CommunityGuidesProps[] = [
- {
- title: 'Cloudflare Tunnels with SSO/OAuth',
- description: `Setting up Cloudflare Tunnels and a SaaS App for Immich.`,
- url: 'https://github.com/immich-app/immich/discussions/8299',
- },
- {
- title: 'Database backup in TrueNAS',
- description: `Create a database backup with pgAdmin in TrueNAS.`,
- url: 'https://github.com/immich-app/immich/discussions/8809',
- },
- {
- title: 'Unraid backup scripts',
- description: `Back up your assets in Unraid with a pre-prepared script.`,
- url: 'https://github.com/immich-app/immich/discussions/8416',
- },
- {
- title: 'Sync folders with albums',
- description: `synchronize folders in imported library with albums having the folders name.`,
- url: 'https://github.com/immich-app/immich/discussions/3382',
- },
- {
- title: 'Immich Podman Quadlets Handbook',
- description:
- 'A rewrite of the original Immich Docker Compose file using Podman Quadlets, with a set of extra guides in the repository’s wiki.',
- url: 'https://github.com/linux-universe/immich-podman-quadlets/blob/main/README.md',
- },
- {
- title: 'Podman/Quadlets Install',
- description: 'Documentation for simple podman setup using quadlets.',
- url: 'https://github.com/tbelway/immich-podman-quadlets/blob/main/docs/install/podman-quadlet.md',
- },
- {
- title: 'Google Photos import + albums',
- description: 'Import your Google Photos files into Immich and add your albums.',
- url: 'https://github.com/immich-app/immich/discussions/1340',
- },
- {
- title: 'Access Immich with custom domain',
- description: 'Access your local Immich installation over the internet using your own domain.',
- url: 'https://github.com/ppr88/immich-guides/blob/main/open-immich-custom-domain.md',
- },
- {
- title: 'Nginx caching map server',
- description: 'Increase privacy by using nginx as a caching proxy in front of a map tile server.',
- url: 'https://github.com/pcouy/pcouy.github.io/blob/main/_posts/2024-08-30-proxying-a-map-tile-server-for-increased-privacy.md',
- },
- {
- title: 'fail2ban setup instructions',
- description: 'How to configure an existing fail2ban installation to block incorrect login attempts.',
- url: 'https://github.com/immich-app/immich/discussions/3243#discussioncomment-6681948',
- },
- {
- title: 'Immich remote access with NordVPN Meshnet',
- description: 'Access Immich with an end-to-end encrypted connection.',
- url: 'https://meshnet.nordvpn.com/how-to/remote-files-media-access/immich-remote-access',
- },
- {
- title: 'Trust Self Signed Certificates with Immich - OAuth Setup',
- description:
- 'Set up Certificate Authority trust with Immich, and your private OAuth2/OpenID service, while using a private CA for HTTPS commication.',
- url: 'https://github.com/immich-app/immich/discussions/18614',
- },
-];
-
-function CommunityGuide({ title, description, url }: CommunityGuidesProps): JSX.Element {
- return (
- - Cursed knowledge we have learned as a result of building Immich that we wish we never knew. -
-- Self-hosted{' '} - - photo and - video management{' '} - - solution -
- -- Easily back up, organize, and manage your photos on your own server. Immich helps you - browse, search and organize your photos and videos with ease, without - sacrificing your privacy. -
-Download the mobile app
-- Download the Immich app and start backing up your photos and videos securely to your own server -
-This project is available under GNU AGPL v3 license.
-Privacy should not be a luxury
-{description}
-{label} is die Speicherpfadbezeichnung des Benutzers",
"system_settings": "Systemeinstellungen",
"tag_cleanup_job": "Tags aufräumen",
- "template_email_available_tags": "In deiner Vorlage kannst du die folgenden Variablen verwenden: {tags}",
- "template_email_if_empty": "Wenn die Vorlage leer ist, wird die Standard-E-Mail verwendet.",
- "template_email_invite_album": "E-Mail-Vorlage: Einladung zu Album",
+ "template_email_available_tags": "Du kannst die folgenden Variablen in deiner Vorlage verwenden: {tags}",
+ "template_email_if_empty": "Wenn die Vorlage leer ist, wird die Standard-E-Mail-Vorlage verwendet.",
+ "template_email_invite_album": "Einladung zu Album",
"template_email_preview": "Vorschau",
"template_email_settings": "E-Mail-Vorlagen",
- "template_email_update_album": "Album-Vorlage aktualisieren",
- "template_email_welcome": "Willkommen bei den E-Mail-Vorlagen",
+ "template_email_update_album": "Aktualisiertes Album",
+ "template_email_welcome": "Willkommens-E-Mail",
"template_settings": "Benachrichtigungsvorlagen",
"template_settings_description": "Benutzerdefinierte Vorlagen für Benachrichtigungen verwalten",
"theme_custom_css_settings": "Benutzerdefiniertes CSS",
@@ -331,7 +348,7 @@
"transcoding_max_b_frames": "Maximale B-Frames",
"transcoding_max_b_frames_description": "Höhere Werte verbessern die Komprimierungseffizienz, verlangsamen aber die Kodierung. Ist möglicherweise nicht mit der Hardware-Beschleunigung älterer Geräte kompatibel. 0 deaktiviert die B-Frames, während -1 diesen Wert automatisch setzt.",
"transcoding_max_bitrate": "Maximale Bitrate",
- "transcoding_max_bitrate_description": "Die Festlegung einer maximalen Bitrate kann die Dateigrößen vorhersagbarer machen, ohne dass die Qualität darunter leidet. Bei 720p sind typische Werte 2600 kbit/s für VP9 oder HEVC oder 4500 kbit/s für H.264. Deaktiviert, wenn der Wert auf 0 gesetzt ist.",
+ "transcoding_max_bitrate_description": "Das Festlegen einer maximalen Bitrate kann die Dateigrößen vorhersagbarer machen, ohne dass die Qualität darunter leidet. Bei 720p sind typische Werte 2600 kbit/s für VP9 oder HEVC oder 4500 kbit/s für H.264. Deaktiviert, wenn der Wert auf 0 gesetzt ist. Wenn keine Einheit angegeben wird, wird von k (für kbit/s) ausgegangen; also sind 5000, 5000k und 5M (für Mbit/s) identisch.",
"transcoding_max_keyframe_interval": "Maximales Keyframe-Intervall",
"transcoding_max_keyframe_interval_description": "Legt den maximalen Frame-Abstand zwischen Keyframes fest. Niedrigere Werte verschlechtern die Komprimierungseffizienz, verbessern aber die Suchzeiten und können die Qualität in Szenen mit schnellen Bewegungen verbessern. Bei 0 wird dieser Wert automatisch eingestellt.",
"transcoding_optimal_description": "Videos mit einer höheren Auflösung als der Zielauflösung oder in einem nicht akzeptierten Format",
@@ -349,7 +366,7 @@
"transcoding_target_resolution": "Ziel-Auflösung",
"transcoding_target_resolution_description": "Höhere Auflösungen können mehr Details erhalten, benötigen aber mehr Zeit für die Codierung, haben größere Dateigrößen und können die Reaktionszeit der Anwendung beeinträchtigen.",
"transcoding_temporal_aq": "Temporäre AQ",
- "transcoding_temporal_aq_description": "Gilt nur für NVENC. Verbessert die Qualität von Szenen mit hohem Detailreichtum und geringen Bewegungen. Dies ist möglicherweise nicht mit älteren Geräten kompatibel.",
+ "transcoding_temporal_aq_description": "Gilt nur für NVENC. Zeitlich adaptive Quantisierung verbessert die Qualität von Szenen mit hohem Detailreichtum und geringen Bewegungen. Dies ist möglicherweise nicht mit älteren Geräten kompatibel.",
"transcoding_threads": "Threads",
"transcoding_threads_description": "Höhere Werte führen zu einer schnelleren Kodierung, lassen dem Server jedoch weniger Spielraum für die Verarbeitung anderer Aufgaben im aktiven Zustand. Dieser Wert sollte nicht höher sein als die Anzahl der CPU-Kerne. Maximiert die Auslastung, wenn der Wert auf 0 gesetzt wird.",
"transcoding_tone_mapping": "Farbton-Mapping",
@@ -400,11 +417,11 @@
"advanced_settings_prefer_remote_subtitle": "Einige Geräte sind sehr langsam beim Laden von lokalen Vorschaubildern. Aktivieren Sie diese Einstellung, um stattdessen die Server-Bilder zu laden.",
"advanced_settings_prefer_remote_title": "Server-Bilder bevorzugen",
"advanced_settings_proxy_headers_subtitle": "Definiere einen Proxy-Header, den Immich bei jeder Netzwerkanfrage mitschicken soll",
- "advanced_settings_proxy_headers_title": "Proxy-Headers",
+ "advanced_settings_proxy_headers_title": "Benutzerdefinierte Proxy-Header [Experimentell]",
"advanced_settings_readonly_mode_subtitle": "Aktiviert den schreibgeschützten Modus, in dem die Fotos nur angezeigt werden können. Funktionen wie das Auswählen mehrerer Bilder, das Teilen, das Übertragen und das Löschen sind deaktiviert. Aktivieren/Deaktiviere den schreibgeschützten Modus über den Benutzer-Avatar auf dem Hauptbildschirm",
"advanced_settings_readonly_mode_title": "Schreibgeschützter Modus",
"advanced_settings_self_signed_ssl_subtitle": "Verifizierung von SSL-Zertifikaten vom Server überspringen. Notwendig bei selbstsignierten Zertifikaten.",
- "advanced_settings_self_signed_ssl_title": "Selbstsignierte SSL-Zertifikate erlauben",
+ "advanced_settings_self_signed_ssl_title": "Selbstsignierte SSL-Zertifikate erlauben [Experimentell]",
"advanced_settings_sync_remote_deletions_subtitle": "Automatisches Löschen oder Wiederherstellen einer Datei auf diesem Gerät, wenn diese Aktion im Web durchgeführt wird",
"advanced_settings_sync_remote_deletions_title": "Mit Server-Löschungen synchronisieren [Experimentell]",
"advanced_settings_tile_subtitle": "Erweiterte Benutzereinstellungen",
@@ -464,10 +481,14 @@
"api_key_description": "Dieser Wert wird nur einmal angezeigt. Bitte kopiere ihn, bevor du das Fenster schließt.",
"api_key_empty": "Dein API-Schlüssel-Name darf nicht leer sein",
"api_keys": "API-Schlüssel",
+ "app_architecture_variant": "Variante (Architektur)",
"app_bar_signout_dialog_content": "Bist du dir sicher, dass du dich abmelden möchtest?",
"app_bar_signout_dialog_ok": "Ja",
"app_bar_signout_dialog_title": "Abmelden",
+ "app_download_links": "App Download Links",
"app_settings": "App-Einstellungen",
+ "app_stores": "App Stores",
+ "app_update_available": "App Update verfügbar",
"appears_in": "Erscheint in",
"apply_count": "Anwenden ({count, number})",
"archive": "Archiv",
@@ -537,20 +558,21 @@
"autoplay_slideshow": "Automatische Diashow",
"back": "Zurück",
"back_close_deselect": "Zurück, Schließen oder Abwählen",
- "background_backup_running_error": "Hintergrund Sicherung läuft, kann manuelle Sicherung nicht starten",
+ "background_backup_running_error": "Sicherung läuft im Hintergrund. Manuelle Sicherung kann nicht gestartet werden",
"background_location_permission": "Hintergrund Standortfreigabe",
"background_location_permission_content": "Um im Hintergrund zwischen den Netzwerken wechseln zu können, muss Immich *immer* Zugriff auf den genauen Standort haben, damit die App den Namen des WLAN-Netzwerks ermitteln kann",
"background_options": "Hintergrund Optionen",
"backup": "Sicherung",
"backup_album_selection_page_albums_device": "Alben auf dem Gerät ({count})",
- "backup_album_selection_page_albums_tap": "Einmalig das Album antippen um es zu sichern, doppelt antippen um es nicht mehr zu sichern",
+ "backup_album_selection_page_albums_tap": "Antippen zum sichern, erneut antippen zum Ausschließen",
"backup_album_selection_page_assets_scatter": "Elemente (Fotos / Videos) können sich über mehrere Alben verteilen. Daher können diese vor der Sicherung eingeschlossen oder ausgeschlossen werden.",
"backup_album_selection_page_select_albums": "Alben auswählen",
- "backup_album_selection_page_selection_info": "Information",
- "backup_album_selection_page_total_assets": "Elemente",
- "backup_albums_sync": "Synchronisation von Alben beim Backup",
+ "backup_album_selection_page_selection_info": "Auswahlinformation",
+ "backup_album_selection_page_total_assets": "Elemente gesamt",
+ "backup_albums_sync": "Synchronisation der Sicherungsalben",
"backup_all": "Alle",
"backup_background_service_backup_failed_message": "Es trat ein Fehler bei der Sicherung auf. Erneuter Versuch…",
+ "backup_background_service_complete_notification": "Datei Backup abgeschlossen",
"backup_background_service_connection_failed_message": "Es konnte keine Verbindung zum Server hergestellt werden. Erneuter Versuch…",
"backup_background_service_current_upload_notification": "Lädt {filename} hoch",
"backup_background_service_default_notification": "Suche nach neuen Elementen…",
@@ -598,6 +620,7 @@
"backup_controller_page_turn_on": "Sicherung im Vordergrund einschalten",
"backup_controller_page_uploading_file_info": "Informationen",
"backup_err_only_album": "Das einzige Album kann nicht entfernt werden",
+ "backup_error_sync_failed": "Synchronisierung fehlgeschlagen. Sicherung kann nicht verarbeitet werden.",
"backup_info_card_assets": "Elemente",
"backup_manual_cancelled": "Abgebrochen",
"backup_manual_in_progress": "Sicherung läuft bereits. Bitte versuche es später erneut",
@@ -659,10 +682,12 @@
"change_password_description": "Dies ist entweder das erste Mal, dass du dich im System anmeldest, oder es wurde eine Anfrage zur Änderung deines Passworts gestellt. Bitte gib unten dein neues Passwort ein.",
"change_password_form_confirm_password": "Passwort bestätigen",
"change_password_form_description": "Hallo {name}\n\nDas ist entweder das erste Mal dass du dich einloggst oder es wurde eine Anfrage zur Änderung deines Passwortes gestellt. Bitte gib das neue Passwort ein.",
+ "change_password_form_log_out": "Von allen Geräte abmelden",
+ "change_password_form_log_out_description": "Es wird empfohlen, alle anderen Geräte abzumelden",
"change_password_form_new_password": "Neues Passwort",
"change_password_form_password_mismatch": "Passwörter stimmen nicht überein",
"change_password_form_reenter_new_password": "Passwort erneut eingeben",
- "change_pin_code": "PIN Code ändern",
+ "change_pin_code": "PIN-Code ändern",
"change_your_password": "Ändere dein Passwort",
"changed_visibility_successfully": "Die Sichtbarkeit wurde erfolgreich geändert",
"charging": "Aufladen",
@@ -686,7 +711,7 @@
"client_cert_invalid_msg": "Ungültige Zertifikatsdatei oder falsches Passwort",
"client_cert_remove_msg": "Client Zertifikat wurde entfernt",
"client_cert_subtitle": "Unterstützt nur das PKCS12 (.p12, .pfx) Format. Zertifikatsimporte oder -entfernungen sind nur vor dem Login möglich",
- "client_cert_title": "SSL-Client-Zertifikat",
+ "client_cert_title": "SSL-Client-Zertifikat [Experimentell]",
"clockwise": "Im Uhrzeigersinn",
"close": "Schließen",
"collapse": "Zusammenklappen",
@@ -698,14 +723,13 @@
"comments_and_likes": "Kommentare & Likes",
"comments_are_disabled": "Kommentare sind deaktiviert",
"common_create_new_album": "Neues Album erstellen",
- "common_server_error": "Bitte überprüfe deine Netzwerkverbindung und stelle sicher, dass die App und Server Versionen kompatibel sind.",
"completed": "Abgeschlossen",
"confirm": "Bestätigen",
"confirm_admin_password": "Administrator Passwort bestätigen",
"confirm_delete_face": "Bist du sicher dass du das Gesicht von {name} aus der Datei entfernen willst?",
"confirm_delete_shared_link": "Bist du sicher, dass du diesen geteilten Link löschen willst?",
"confirm_keep_this_delete_others": "Alle anderen Dateien im Stapel bis auf diese werden gelöscht. Bist du sicher, dass du fortfahren möchten?",
- "confirm_new_pin_code": "Neuen PIN Code bestätigen",
+ "confirm_new_pin_code": "Neuen PIN-Code bestätigen",
"confirm_password": "Passwort bestätigen",
"confirm_tag_face": "Wollen Sie dieses Gesicht mit {name} markieren?",
"confirm_tag_face_unnamed": "Möchten Sie dieses Gesicht markieren?",
@@ -737,6 +761,7 @@
"create": "Erstellen",
"create_album": "Album erstellen",
"create_album_page_untitled": "Unbenannt",
+ "create_api_key": "API Key erstellen",
"create_library": "Bibliothek erstellen",
"create_link": "Link erstellen",
"create_link_to_share": "Link zum Teilen erstellen",
@@ -757,7 +782,7 @@
"crop": "Zuschneiden",
"curated_object_page_title": "Dinge",
"current_device": "Aktuelles Gerät",
- "current_pin_code": "Aktueller PIN Code",
+ "current_pin_code": "Aktueller PIN-Code",
"current_server_address": "Aktuelle Serveradresse",
"custom_locale": "Benutzerdefinierte Sprache",
"custom_locale_description": "Datumsangaben und Zahlen je nach Sprache und Land formatieren",
@@ -766,6 +791,7 @@
"daily_title_text_date_year": "E, dd MMM, yyyy",
"dark": "Dunkel",
"dark_theme": "Dunkle Ansicht umschalten",
+ "date": "Datum",
"date_after": "Datum nach",
"date_and_time": "Datum und Zeit",
"date_before": "Datum vor",
@@ -880,7 +906,6 @@
"edit_tag": "Tag bearbeiten",
"edit_title": "Titel bearbeiten",
"edit_user": "Nutzer bearbeiten",
- "edited": "Bearbeitet",
"editor": "Bearbeiter",
"editor_close_without_save_prompt": "Die Änderungen werden nicht gespeichert",
"editor_close_without_save_title": "Editor schließen?",
@@ -893,13 +918,13 @@
"empty_trash_confirmation": "Bist du sicher, dass du den Papierkorb leeren willst?\nDies entfernt alle Dateien im Papierkorb endgültig aus Immich und kann nicht rückgängig gemacht werden!",
"enable": "Aktivieren",
"enable_backup": "Sicherung aktivieren",
- "enable_biometric_auth_description": "Gib deinen PIN Code ein, um die biometrische Authentifizierung zu aktivieren",
+ "enable_biometric_auth_description": "Gib deinen PIN-Code ein, um die biometrische Authentifizierung zu aktivieren",
"enabled": "Aktiviert",
"end_date": "Enddatum",
"enqueued": "Eingereiht",
"enter_wifi_name": "WLAN-Name eingeben",
- "enter_your_pin_code": "PIN Code eingeben",
- "enter_your_pin_code_subtitle": "Gib deinen PIN Code ein, um auf den gesperrten Ordner zuzugreifen",
+ "enter_your_pin_code": "PIN-Code eingeben",
+ "enter_your_pin_code_subtitle": "Gib deinen PIN-Code ein, um auf den gesperrten Ordner zuzugreifen",
"error": "Fehler",
"error_change_sort_album": "Ändern der Anzeigereihenfolge fehlgeschlagen",
"error_delete_face": "Fehler beim Löschen des Gesichts",
@@ -938,7 +963,7 @@
"failed_to_load_notifications": "Fehler beim Laden der Benachrichtigungen",
"failed_to_load_people": "Fehler beim Laden von Personen",
"failed_to_remove_product_key": "Fehler beim Entfernen des Produktschlüssels",
- "failed_to_reset_pin_code": "Zurücksetzen des PIN Codes fehlgeschlagen",
+ "failed_to_reset_pin_code": "Zurücksetzen des PIN-Codes fehlgeschlagen",
"failed_to_stack_assets": "Dateien konnten nicht gestapelt werden",
"failed_to_unstack_assets": "Dateien konnten nicht entstapelt werden",
"failed_to_update_notification_status": "Benachrichtigungsstatus aktualisieren fehlgeschlagen",
@@ -1003,7 +1028,7 @@
"unable_to_remove_partner": "Partner kann nicht entfernt werden",
"unable_to_remove_reaction": "Reaktion kann nicht entfernt werden",
"unable_to_reset_password": "Passwort kann nicht zurückgesetzt werden",
- "unable_to_reset_pin_code": "Zurücksetzen des PIN Code nicht möglich",
+ "unable_to_reset_pin_code": "Zurücksetzen des PIN-Code nicht möglich",
"unable_to_resolve_duplicate": "Duplikate können nicht aufgelöst werden",
"unable_to_restore_assets": "Dateien konnten nicht wiederhergestellt werden",
"unable_to_restore_trash": "Papierkorb kann nicht wiederhergestellt werden",
@@ -1036,6 +1061,7 @@
"exif_bottom_sheet_description_error": "Fehler bei der Aktualisierung der Beschreibung",
"exif_bottom_sheet_details": "DETAILS",
"exif_bottom_sheet_location": "STANDORT",
+ "exif_bottom_sheet_no_description": "Keine Beschreibung",
"exif_bottom_sheet_people": "PERSONEN",
"exif_bottom_sheet_person_add_person": "Namen hinzufügen",
"exit_slideshow": "Diashow beenden",
@@ -1074,6 +1100,7 @@
"features_setting_description": "Funktionen der App verwalten",
"file_name": "Dateiname",
"file_name_or_extension": "Dateiname oder -erweiterung",
+ "file_size": "Dateigröße",
"filename": "Dateiname",
"filetype": "Dateityp",
"filter": "Filter",
@@ -1086,7 +1113,7 @@
"folder_not_found": "Ordner nicht gefunden",
"folders": "Ordner",
"folders_feature_description": "Durchsuchen der Ordneransicht für Fotos und Videos im Dateisystem",
- "forgot_pin_code_question": "PIN Code vergessen?",
+ "forgot_pin_code_question": "PIN-Code vergessen?",
"forward": "Vorwärts",
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Diese Funktion lädt externe Quellen von Google, um zu funktionieren.",
@@ -1117,7 +1144,6 @@
"header_settings_field_validator_msg": "Der Wert darf nicht leer sein",
"header_settings_header_name_input": "Header-Name",
"header_settings_header_value_input": "Header-Wert",
- "headers_settings_tile_subtitle": "Definiere einen Proxy-Header, den die Anwendung bei jeder Netzwerkanfrage mitschicken soll",
"headers_settings_tile_title": "Benutzerdefinierte Proxy-Header",
"hi_user": "Hallo {name} ({email})",
"hide_all_people": "Alle Personen verbergen",
@@ -1238,6 +1264,7 @@
"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",
+ "location": "Standort",
"location_permission": "Standort Genehmigung",
"location_permission_content": "Um die automatische Umschaltfunktion nutzen zu können, benötigt Immich genaue Standortberechtigung, damit es den Namen des aktuellen WLAN-Netzwerks ermitteln kann",
"location_picker_choose_on_map": "Auf der Karte auswählen",
@@ -1328,7 +1355,7 @@
"memories_check_back_tomorrow": "Schau morgen wieder vorbei für weitere Erinnerungen",
"memories_setting_description": "Verwalte, was du in deinen Erinnerungen siehst",
"memories_start_over": "Erneut beginnen",
- "memories_swipe_to_close": "Nach oben Wischen zum schließen",
+ "memories_swipe_to_close": "Nach oben Wischen zum Schließen",
"memory": "Erinnerung",
"memory_lane_title": "Foto-Erinnerungen {title}",
"menu": "Menü",
@@ -1342,6 +1369,8 @@
"minute": "Minute",
"minutes": "Minuten",
"missing": "Fehlende",
+ "mobile_app": "Mobile App",
+ "mobile_app_download_onboarding_note": "Herunterladen der mobilen Begleiter-App über einen der folgenden Möglichkeiten",
"model": "Modell",
"month": "Monat",
"monthly_title_text_date_format": "MMMM y",
@@ -1360,8 +1389,10 @@
"my_albums": "Meine Alben",
"name": "Name",
"name_or_nickname": "Name oder Nickname",
- "network_requirement_photos_upload": "Mobiles Datennetz verwenden, um Fotos zu sichern",
- "network_requirement_videos_upload": "Mobiles Datennetz verwenden, um Videos zu sichern",
+ "navigate": "Navigation",
+ "navigate_to_time": "Navigiere zu Zeit",
+ "network_requirement_photos_upload": "Mobile Daten verwenden, um Fotos zu sichern",
+ "network_requirement_videos_upload": "Mobile Daten verwenden, um Videos zu sichern",
"network_requirements": "Anforderungen ans Netzwerk",
"network_requirements_updated": "Netzwerk-Abhängigkeiten haben sich geändert, Backup-Warteschlange wird zurückgesetzt",
"networking_settings": "Netzwerk",
@@ -1369,10 +1400,11 @@
"never": "Niemals",
"new_album": "Neues Album",
"new_api_key": "Neuer API-Schlüssel",
+ "new_date_range": "Neuer Datumsbereich",
"new_password": "Neues Passwort",
"new_person": "Neue Person",
- "new_pin_code": "Neuer PIN Code",
- "new_pin_code_subtitle": "Dies ist dein erster Zugriff auf den gesperrten Ordner. Erstelle einen PIN Code für den sicheren Zugriff auf diese Seite",
+ "new_pin_code": "Neuer PIN-Code",
+ "new_pin_code_subtitle": "Dies ist dein erster Zugriff auf den gesperrten Ordner. Erstelle einen PIN-Code für den sicheren Zugriff auf diese Seite",
"new_timeline": "Neue Zeitleiste",
"new_user_created": "Neuer Benutzer wurde erstellt",
"new_version_available": "NEUE VERSION VERFÜGBAR",
@@ -1419,6 +1451,9 @@
"notifications": "Benachrichtigungen",
"notifications_setting_description": "Benachrichtigungen verwalten",
"oauth": "OAuth",
+ "obtainium_configurator": "Obtainium Konfiguratior",
+ "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",
"offline": "Offline",
"offset": "Verschiebung",
@@ -1503,7 +1538,7 @@
"person": "Person",
"person_age_months": "{months, plural, one {# month} other {# months}} alt",
"person_age_year_months": "1 Jahr, {months, plural, one {# month} other {# months}} alt",
- "person_age_years": "{years, plural, other {# years}} alt",
+ "person_age_years": "{years, plural, one {# Jahr} other {# Jahre}} alt",
"person_birthdate": "Geboren am {date}",
"person_hidden": "{name}{hidden, select, true { (verborgen)} other {}}",
"photo_shared_all_users": "Es sieht so aus, als hättest du deine Fotos mit allen Benutzern geteilt oder du hast keine Benutzer, mit denen du teilen kannst.",
@@ -1512,10 +1547,10 @@
"photos_count": "{count, plural, one {{count, number} Foto} other {{count, number} Fotos}}",
"photos_from_previous_years": "Fotos von vorherigen Jahren",
"pick_a_location": "Wähle einen Ort",
- "pin_code_changed_successfully": "PIN Code erfolgreich geändert",
- "pin_code_reset_successfully": "PIN Code erfolgreich zurückgesetzt",
- "pin_code_setup_successfully": "PIN Code erfolgreich festgelegt",
- "pin_verification": "PIN Code Überprüfung",
+ "pin_code_changed_successfully": "PIN-Code erfolgreich geändert",
+ "pin_code_reset_successfully": "PIN-Code erfolgreich zurückgesetzt",
+ "pin_code_setup_successfully": "PIN-Code erfolgreich festgelegt",
+ "pin_verification": "PIN-Code Überprüfung",
"place": "Ort",
"places": "Orte",
"places_count": "{count, plural, one {{count, number} Ort} other {{count, number} Orte}}",
@@ -1523,10 +1558,14 @@
"play_memories": "Erinnerungen abspielen",
"play_motion_photo": "Bewegte Bilder abspielen",
"play_or_pause_video": "Video abspielen oder pausieren",
+ "play_original_video": "Originales Video abspielen",
+ "play_original_video_setting_description": "Bevorzugen die Wiedergabe von Originalvideos gegenüber transkodierten Videos. Wenn das Original nicht kompatibel ist, wird es möglicherweise nicht korrekt wiedergegeben.",
+ "play_transcoded_video": "Transkodiertes Video abspielen",
"please_auth_to_access": "Für den Zugriff bitte Authentifizieren",
"port": "Port",
"preferences_settings_subtitle": "App-Einstellungen verwalten",
"preferences_settings_title": "Voreinstellungen",
+ "preparing": "Vorbereiten",
"preset": "Voreinstellung",
"preview": "Vorschau",
"previous": "Vorherige",
@@ -1539,13 +1578,9 @@
"privacy": "Privatsphäre",
"profile": "Profil",
"profile_drawer_app_logs": "Logs",
- "profile_drawer_client_out_of_date_major": "Mobile-App ist veraltet. Bitte aktualisiere auf die neueste Major-Version.",
- "profile_drawer_client_out_of_date_minor": "Mobile-App ist veraltet. Bitte aktualisiere auf die neueste Minor-Version.",
"profile_drawer_client_server_up_to_date": "Die App- und Server-Versionen sind aktuell",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Schreibgeschützter Modus aktiviert. Halte das Benutzer-Avatar-Symbol gedrückt, um den Modus zu verlassen.",
- "profile_drawer_server_out_of_date_major": "Server-Version ist veraltet. Bitte aktualisiere auf die neueste Major-Version.",
- "profile_drawer_server_out_of_date_minor": "Server-Version ist veraltet. Bitte aktualisiere auf die neueste Minor-Version.",
"profile_image_of_user": "Profilbild von {user}",
"profile_picture_set": "Profilbild gesetzt.",
"public_album": "Öffentliches Album",
@@ -1569,7 +1604,7 @@
"purchase_license_subtitle": "Kaufe Immich, um die fortlaufende Entwicklung zu unterstützen",
"purchase_lifetime_description": "Lebenslange Gültigkeit",
"purchase_option_title": "KAUFOPTIONEN",
- "purchase_panel_info_1": "Die Entwicklung von Immich erfordert viel Zeit und Mühe, und wir haben Vollzeit-Entwickler, die daran arbeiten es möglichst perfekt zu machen. Unser Ziel ist es, dass Open-Source-Software und moralische Geschäftsmethoden zu einer nachhaltigen Einkommensquelle für Entwickler werden und ein datenschutzfreundliches Ökosystem mit echten Alternativen zu ausbeuterischen Cloud-Diensten geschaffen wird.",
+ "purchase_panel_info_1": "Die Entwicklung von Immich erfordert viel Zeit und Mühe und wir haben Vollzeit-Entwickler, die daran arbeiten Immich möglichst perfekt zu machen. Unser Ziel ist es, Open-Source-Software und ethische Geschäftspraktiken zu einer verlässlichen Einkommensquelle für Entwickler zu machen und ein datenschutzfreundliches Ökosystem mit echten Alternativen zu ausbeuterischen Cloud-Diensten zu schaffen.",
"purchase_panel_info_2": "Weil wir uns dagegen entschieden haben, eine Bezahlschranke einzusetzen, wird dieser Kauf keine zusätzlichen Funktionen in Immich freischalten. Wir verlassen uns auf Nutzende wie dich, um die Entwicklung von Immich zu unterstützen.",
"purchase_panel_title": "Das Projekt unterstützen",
"purchase_per_server": "Pro Server",
@@ -1592,6 +1627,7 @@
"read_changelog": "Changelog lesen",
"readonly_mode_disabled": "Schreibgeschützter Modus deaktiviert",
"readonly_mode_enabled": "Schreibgeschützter Modus aktiviert",
+ "ready_for_upload": "Bereit zum Hochladen",
"reassign": "Neu zuweisen",
"reassigned_assets_to_existing_person": "{count, plural, one {# Datei wurde} other {# Dateien wurden}} {name, select, null {einer vorhandenen Person} other {{name}}} zugewiesen",
"reassigned_assets_to_new_person": "{count, plural, one {# Datei wurde} other {# Dateien wurden}} einer neuen Person zugewiesen",
@@ -1646,21 +1682,22 @@
"repair": "Reparatur",
"repair_no_results_message": "Nicht auffindbare und fehlende Dateien werden hier angezeigt",
"replace_with_upload": "Durch Upload ersetzen",
- "repository": "Repository",
+ "repository": "Repositorium",
"require_password": "Passwort erforderlich",
"require_user_to_change_password_on_first_login": "Benutzer muss das Passwort beim ersten Login ändern",
"rescan": "Erneut scannen",
"reset": "Zurücksetzen",
"reset_password": "Passwort zurücksetzen",
"reset_people_visibility": "Sichtbarkeit von Personen zurücksetzen",
- "reset_pin_code": "PIN Code zurücksetzen",
- "reset_pin_code_description": "Falls du deinen PIN Code vergessen hast, wende dich an deinen Immich-Administrator um ihn zurücksetzen zu lassen",
- "reset_pin_code_success": "PIN Code erfolgreich zurückgesetzt",
- "reset_pin_code_with_password": "Mit deinem Passwort kannst du jederzeit deinen PIN Code zurücksetzen",
+ "reset_pin_code": "PIN-Code zurücksetzen",
+ "reset_pin_code_description": "Falls du deinen PIN-Code vergessen hast, kannst du dich an den Server-Administrator wenden, um ihn zurückzusetzen",
+ "reset_pin_code_success": "PIN-Code erfolgreich zurückgesetzt",
+ "reset_pin_code_with_password": "Mit deinem Passwort kannst du jederzeit deinen PIN-Code zurücksetzen",
"reset_sqlite": "SQLite Datenbank zurücksetzen",
"reset_sqlite_confirmation": "Bist du sicher, dass du die SQLite-Datenbank zurücksetzen willst? Du musst dich ab- und wieder anmelden, um die Daten neu zu synchronisieren",
"reset_sqlite_success": "SQLite Datenbank erfolgreich zurückgesetzt",
"reset_to_default": "Auf Standard zurücksetzen",
+ "resolution": "Auflösung",
"resolve_duplicates": "Duplikate entfernen",
"resolved_all_duplicates": "Alle Duplikate aufgelöst",
"restore": "Wiederherstellen",
@@ -1679,6 +1716,7 @@
"running": "Läuft",
"save": "Speichern",
"save_to_gallery": "In Galerie speichern",
+ "saved": "Gespeichert",
"saved_api_key": "API-Schlüssel wurde gespeichert",
"saved_profile": "Profil gespeichert",
"saved_settings": "Einstellungen gespeichert",
@@ -1695,6 +1733,9 @@
"search_by_description_example": "Wandern in Sapa",
"search_by_filename": "Suche nach Dateiname oder -erweiterung",
"search_by_filename_example": "z.B. IMG_1234.JPG oder PNG",
+ "search_by_ocr": "Suche per OCR",
+ "search_by_ocr_example": "Latte",
+ "search_camera_lens_model": "Suche nach Kameralinse...",
"search_camera_make": "Suche nach Kameramarke...",
"search_camera_model": "Suche nach Kameramodell...",
"search_city": "Suche nach Stadt...",
@@ -1711,6 +1752,7 @@
"search_filter_location_title": "Ort auswählen",
"search_filter_media_type": "Medientyp",
"search_filter_media_type_title": "Medientyp auswählen",
+ "search_filter_ocr": "Suche per OCR",
"search_filter_people_title": "Personen auswählen",
"search_for": "Suche nach",
"search_for_existing_person": "Suche nach vorhandener Person",
@@ -1773,6 +1815,7 @@
"server_online": "Server online",
"server_privacy": "Privatsphäre auf dem Server",
"server_stats": "Server-Statistiken",
+ "server_update_available": "Server Update verfügbar",
"server_version": "Server-Version",
"set": "Speichern",
"set_as_album_cover": "Als Albumcover festlegen",
@@ -1801,13 +1844,15 @@
"setting_notifications_subtitle": "Benachrichtigungen anpassen",
"setting_notifications_total_progress_subtitle": "Gesamter Upload-Fortschritt (abgeschlossen/Anzahl Elemente)",
"setting_notifications_total_progress_title": "Zeige den Gesamtfortschritt der Hintergrundsicherung",
+ "setting_video_viewer_auto_play_subtitle": "Videos automatisch wiedergeben sobald sie geöffnet werden",
+ "setting_video_viewer_auto_play_title": "Videos automatisch wiedergeben",
"setting_video_viewer_looping_title": "Video-Wiederholung",
"setting_video_viewer_original_video_subtitle": "Beim Streaming eines Videos vom Server wird das Original abgespielt, auch wenn eine Transkodierung verfügbar ist. Kann zu Pufferung führen. Lokal verfügbare Videos werden unabhängig von dieser Einstellung in Originalqualität wiedergegeben.",
"setting_video_viewer_original_video_title": "Originalvideo erzwingen",
"settings": "Einstellungen",
"settings_require_restart": "Bitte starte Immich neu, um diese Einstellung anzuwenden",
"settings_saved": "Einstellungen gespeichert",
- "setup_pin_code": "Einen PIN Code festlegen",
+ "setup_pin_code": "Einen PIN-Code festlegen",
"share": "Teilen",
"share_action_prompt": "{count} Dateien geteilt",
"share_add_photos": "Fotos hinzufügen",
@@ -1950,7 +1995,7 @@
"sync_remote": "mit Server synchronisieren",
"sync_status": "Synchronisierungstatus",
"sync_status_subtitle": "Synchronisierungssystem anzeigen und bearbeiten",
- "sync_upload_album_setting_subtitle": "Erstelle deine ausgewählten Alben in Immich und lade die Fotos und Videos dort hoch",
+ "sync_upload_album_setting_subtitle": "Erstelle und lade deine ausgewählten Fotos und Videos in die ausgewählten Alben auf Immich hoch",
"tag": "Tag",
"tag_assets": "Dateien taggen",
"tag_created": "Tag erstellt: {tag}",
@@ -1980,6 +2025,7 @@
"theme_setting_three_stage_loading_title": "Dreistufiges Laden aktivieren",
"they_will_be_merged_together": "Sie werden zusammengeführt",
"third_party_resources": "Drittanbieter-Quellen",
+ "time": "Zeit",
"time_based_memories": "Zeitbasierte Erinnerungen",
"timeline": "Zeitleiste",
"timezone": "Zeitzone",
@@ -2008,11 +2054,12 @@
"trash_page_restore_all": "Alle wiederherstellen",
"trash_page_select_assets_btn": "Elemente auswählen",
"trash_page_title": "Papierkorb ({count})",
- "trashed_items_will_be_permanently_deleted_after": "Gelöschte Objekte werden nach {days, plural, one {# Tag} other {# Tagen}} endgültig gelöscht.",
+ "trashed_items_will_be_permanently_deleted_after": "Objekte im Papierkorb werden nach {days, plural, one {# Tag} other {# Tagen}} endgültig gelöscht.",
"troubleshoot": "Fehler beheben",
"type": "Typ",
- "unable_to_change_pin_code": "PIN Code konnte nicht geändert werden",
- "unable_to_setup_pin_code": "PIN Code konnte nicht festgelegt werden",
+ "unable_to_change_pin_code": "PIN-Code konnte nicht geändert werden",
+ "unable_to_check_version": "App oder Server Versionscheck nicht möglich",
+ "unable_to_setup_pin_code": "PIN-Code konnte nicht festgelegt werden",
"unarchive": "Entarchivieren",
"unarchive_action_prompt": "{count} aus dem Archiv entfernt",
"unarchived_count": "{count, plural, other {# entarchiviert}}",
@@ -2069,8 +2116,8 @@
"user_has_been_deleted": "Dieser Benutzer wurde gelöscht.",
"user_id": "Nutzer-ID",
"user_liked": "{type, select, photo {Dieses Foto} video {Dieses Video} asset {Diese Datei} other {Dies}} gefällt {user}",
- "user_pin_code_settings": "PIN Code",
- "user_pin_code_settings_description": "Verwalte deinen PIN Code",
+ "user_pin_code_settings": "PIN-Code",
+ "user_pin_code_settings_description": "Verwalte deinen PIN-Code",
"user_privacy": "Datenschutzeinstellungen Nutzer",
"user_purchase_settings": "Kauf",
"user_purchase_settings_description": "Kauf verwalten",
@@ -2081,7 +2128,7 @@
"username": "Nutzername",
"users": "Benutzer",
"users_added_to_album_count": "{count, plural, one {# Benutzer} other {# Benutzer}} zum Album hinzugefügt",
- "utilities": "Hilfsmittel",
+ "utilities": "Werkzeuge",
"validate": "Validieren",
"validate_endpoint_error": "Bitte gib eine gültige URL ein",
"variables": "Variablen",
@@ -2120,7 +2167,7 @@
"welcome": "Willkommen",
"welcome_to_immich": "Willkommen bei Immich",
"wifi_name": "WLAN-Name",
- "wrong_pin_code": "PIN Code falsch",
+ "wrong_pin_code": "PIN-Code falsch",
"year": "Jahr",
"years_ago": "Vor {years, plural, one {einem Jahr} other {# Jahren}}",
"yes": "Ja",
diff --git a/i18n/el.json b/i18n/el.json
index a8eeb59740..0ff48a02ba 100644
--- a/i18n/el.json
+++ b/i18n/el.json
@@ -11,10 +11,10 @@
"activity_changed": "Η δραστηριότητα είναι {enabled, select, true {ενεργοποιημένη} other {απενεργοποιημένη}}",
"add": "Προσθήκη",
"add_a_description": "Προσθήκη περιγραφής",
- "add_a_location": "Προσθήκη μίας τοποθεσίας",
- "add_a_name": "Προσθέστε ένα όνομα",
+ "add_a_location": "Προσθήκη τοποθεσίας",
+ "add_a_name": "Προσθήκη ονόματος",
"add_a_title": "Προσθήκη τίτλου",
- "add_birthday": "Προσθέστε την ημερομηνία γενεθλίων",
+ "add_birthday": "Προσθήκη γενεθλίων",
"add_endpoint": "Προσθήκη τελικού σημείου",
"add_exclusion_pattern": "Προσθήκη μοτίβου αποκλεισμού",
"add_import_path": "Προσθήκη μονοπατιού εισαγωγής",
@@ -28,10 +28,12 @@
"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_shared_album": "Προσθήκη σε κοινόχρηστο άλμπουμ",
+ "add_upload_to_stack": "Προσθήκη αρχείου στην ουρά",
"add_url": "Προσθήκη Συνδέσμου",
"added_to_archive": "Προστέθηκε στο αρχείο",
"added_to_favorites": "Προστέθηκε στα αγαπημένα",
@@ -123,6 +125,13 @@
"logging_enable_description": "Ενεργοποίηση καταγραφής συμβάντων",
"logging_level_description": "Το επίπεδο καταγραφής συμβάντων που θα εφαρμοστεί, όταν αυτή είναι ενεργοποιημένη.",
"logging_settings": "Καταγραφή Συμβάντων",
+ "machine_learning_availability_checks": "Έλεγχοι διαθεσιμότητας",
+ "machine_learning_availability_checks_description": "Αυτόματος ανίχνευση και προτίμηση διαθέσιμων διακομιστών μηχανικής μάθησης",
+ "machine_learning_availability_checks_enabled": "Ενεργοποίηση ελέγχων διαθεσιμότητας",
+ "machine_learning_availability_checks_interval": "Διάστημα ελέγχου",
+ "machine_learning_availability_checks_interval_description": "Διάστημα σε χιλιοστά δευτερολέπτου μεταξύ των ελέγχων διαθεσιμότητας",
+ "machine_learning_availability_checks_timeout": "Αίτημα χρονικού ορίου λήξης",
+ "machine_learning_availability_checks_timeout_description": "Χρονικό όριο σε χιλιοστά δευτερολέπτου για ελέγχους διαθεσιμότητας",
"machine_learning_clip_model": "Μοντέλο CLIP",
"machine_learning_clip_model_description": "Το όνομα ενός μοντέλου CLIP που αναφέρεται εδώ. Σημειώστε ότι πρέπει να επανεκτελέσετε την εργασία 'Έξυπνη Αναζήτηση' για όλες τις εικόνες μετά την αλλαγή μοντέλου.",
"machine_learning_duplicate_detection": "Εντοπισμός Διπλότυπων",
@@ -202,6 +211,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_description": "Χρήση SMTPS (SMTP over TLS)",
"notification_email_sent_test_email_button": "Αποστολή test email και αποθήκευση",
"notification_email_setting_description": "Ρυθμίσεις για την αποστολή ειδοποιήσεων μέσω email",
"notification_email_test_email": "Αποστολή test email",
@@ -324,7 +334,7 @@
"transcoding_max_b_frames": "Μέγιστος αριθμός B-frames(Bidirectional Predictive Frames)",
"transcoding_max_b_frames_description": "Οι υψηλότερες τιμές βελτιώνουν την αποδοτικότητα της συμπίεσης, αλλά επιβραδύνουν την κωδικοποίηση. Ενδέχεται να μην είναι συμβατές με την επιτάχυνση υλικού σε παλαιότερες συσκευές. Η τιμή 0 απενεργοποιεί τα B-frames, ενώ η -1, τη ρυθμίζει αυτόματα.",
"transcoding_max_bitrate": "Μέγιστος ρυθμός μετάδοσης (bitrate)",
- "transcoding_max_bitrate_description": "Η ρύθμιση ενός μέγιστου ρυθμού μετάδοσης(bitrate) μπορεί να κάνει το μέγεθος των αρχείων πιο προβλέψιμο, αλλά με ένα μικρό κόστος στην ποιότητα. Στην ανάλυση των 720p, οι τυπικές τιμές είναι 2600 kbit/s για VP9 ή HEVC, ή 4500 kbit/s για H.264. Απενεργοποιείται εάν οριστεί σε 0.",
+ "transcoding_max_bitrate_description": "Ο καθορισμός του μέγιστου bitrate μπορεί να κάνει το μέγεθος των αρχείων πιο προβλέψιμο, με ένα μικρό κόστος στην ποιότητα. Στα 720p, οι τυπικές τιμές είναι 2600 kbit/s για VP9 ή HEVC, ή 4500 kbit/s για H.264. Αν οριστεί σε 0, η ρύθμιση απενεργοποιείται. Όταν δεν καθορίζεται, θεωρείται το k (για kbit/s)· επομένως τα 5000, 5000k και 5M (για Mbit/s) είναι ισοδύναμα.",
"transcoding_max_keyframe_interval": "Μέγιστο χρονικό διάστημα μεταξύ των καρέ αναφοράς (keyframe)",
"transcoding_max_keyframe_interval_description": "Ορίζει το μέγιστο διάστημα μεταξύ των καρέ αναφοράς. Χαμηλότερες τιμές μειώνουν την αποδοτικότητα συμπίεσης, αλλά βελτιώνουν τον χρόνο αναζήτησης και μπορεί να βελτιώσουν την ποιότητα σε σκηνές με γρήγορη κίνηση. Η τιμή 0 ρυθμίζει αυτό το διάστημα αυτόματα.",
"transcoding_optimal_description": "Βίντεο με ανώτερη ανάλυση από την επιθυμητή ή σε μη αποδεκτή μορφή",
@@ -342,7 +352,7 @@
"transcoding_target_resolution": "Επιθυμητή ανάλυση",
"transcoding_target_resolution_description": "Οι υψηλότερες αναλύσεις μπορούν να διατηρήσουν περισσότερες λεπτομέρειες, αλλά απαιτούν περισσότερο χρόνο για κωδικοποίηση, παράγουν μεγαλύτερα αρχεία και μπορεί να μειώσουν την απόκριση της εφαρμογής.",
"transcoding_temporal_aq": "Χρονική Προσαρμοστική Ποιότητα AQ(Adaptive Quantization)",
- "transcoding_temporal_aq_description": "Ισχύει μόνο για NVENC. Αυξάνει την ποιότητα σε σκηνές με υψηλή λεπτομέρεια και χαμηλή κίνηση. Ενδέχεται να μην είναι συμβατό με παλαιότερες συσκευές.",
+ "transcoding_temporal_aq_description": "Ισχύει μόνο για το NVENC. Η Χρονική προσαρμογή ποιότητας (Temporal Adaptive Quantization) βελτιώνει την ποιότητα σε σκηνές με υψηλή λεπτομέρεια και χαμηλή κίνηση. Ενδέχεται να μην είναι συμβατή με παλαιότερες συσκευές.",
"transcoding_threads": "Νήματα (παράλληλες διεργασίες)",
"transcoding_threads_description": "Οι υψηλότερες τιμές οδηγούν σε ταχύτερη κωδικοποίηση, αλλά αφήνουν λιγότερο χώρο στον διακομιστή για να επεξεργαστεί άλλες εργασίες όσο είναι ενεργή. Αυτή η τιμή δεν πρέπει να ξεπερνά τον αριθμό των πυρήνων του επεξεργαστή. Η μέγιστη αξιοποίηση επιτυγχάνεται αν οριστεί στο 0.",
"transcoding_tone_mapping": "Χαρτογράφηση χρωματικών τόνων",
@@ -394,6 +404,8 @@
"advanced_settings_prefer_remote_title": "Προτίμηση απομακρυσμένων εικόνων",
"advanced_settings_proxy_headers_subtitle": "Καθορισμός κεφαλίδων διακομιστή μεσολάβησης που το Immich πρέπει να στέλνει με κάθε αίτημα δικτύου",
"advanced_settings_proxy_headers_title": "Κεφαλίδες διακομιστή μεσολάβησης",
+ "advanced_settings_readonly_mode_subtitle": "Ενεργοποιεί τη λειτουργία μόνο-για-ανάγνωση, όπου οι φωτογραφίες μπορούν μόνο να προβληθούν. Ενέργειες όπως επιλογή πολλών εικόνων, κοινή χρήση, αποστολή (casting) και διαγραφή είναι απενεργοποιημένες. Η ενεργοποίηση/απενεργοποίηση της λειτουργίας μόνο-για-ανάγνωση γίνεται μέσω της εικόνας του χρήστη από την κεντρική οθόνη",
+ "advanced_settings_readonly_mode_title": "Λειτουργία μόνο-για-ανάγνωση",
"advanced_settings_self_signed_ssl_subtitle": "Παρακάμπτει τον έλεγχο πιστοποιητικού SSL του διακομιστή. Απαραίτητο για αυτο-υπογεγραμμένα πιστοποιητικά.",
"advanced_settings_self_signed_ssl_title": "Να επιτρέπονται αυτο-υπογεγραμμένα πιστοποιητικά SSL",
"advanced_settings_sync_remote_deletions_subtitle": "Αυτόματη διαγραφή ή επαναφορά ενός περιουσιακού στοιχείου σε αυτή τη συσκευή, όταν η ενέργεια αυτή πραγματοποιείται στο διαδίκτυο",
@@ -421,6 +433,7 @@
"album_remove_user_confirmation": "Είστε σίγουροι ότι θέλετε να αφαιρέσετε τον/την {user};",
"album_search_not_found": "Δε βρέθηκαν άλμπουμ που να ταιριάζουν με την αναζήτησή σας",
"album_share_no_users": "Φαίνεται ότι έχετε κοινοποιήσει αυτό το άλμπουμ σε όλους τους χρήστες ή δεν έχετε χρήστες για να το κοινοποιήσετε.",
+ "album_summary": "Περίληψη άλμπουμ",
"album_updated": "Το άλμπουμ, ενημερώθηκε",
"album_updated_setting_description": "Λάβετε ειδοποίηση μέσω email όταν ένα κοινόχρηστο άλμπουμ έχει νέα αρχεία",
"album_user_left": "Αποχωρήσατε από το {album}",
@@ -454,11 +467,14 @@
"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": "Ρυθμίσεις εφαρμογής",
"appears_in": "Εμφανίζεται σε",
+ "apply_count": "Εφαρμογή ({count, number})",
"archive": "Αρχείο",
"archive_action_prompt": "Προστέθηκαν {count} στο Αρχείο",
"archive_or_unarchive_photo": "Αρχειοθέτηση ή αποαρχειοθέτηση φωτογραφίας",
@@ -491,6 +507,8 @@
"asset_restored_successfully": "Το στοιχείο αποκαταστάθηκε με επιτυχία",
"asset_skipped": "Παραλείφθηκε",
"asset_skipped_in_trash": "Στον κάδο απορριμμάτων",
+ "asset_trashed": "Το στοιχείο διαγράφηκε",
+ "asset_troubleshoot": "Αντιμετώπιση προβλήματος στοιχείου",
"asset_uploaded": "Ανεβάστηκε",
"asset_uploading": "Ανεβάζεται…",
"asset_viewer_settings_subtitle": "Διαχείριση ρυθμίσεων προβολής συλλογής",
@@ -524,8 +542,10 @@
"autoplay_slideshow": "Αυτόματη αναπαραγωγή παρουσίασης",
"back": "Πίσω",
"back_close_deselect": "Πίσω, κλείσιμο ή αποεπιλογή",
+ "background_backup_running_error": "Η δημιουργία αντιγράφων ασφάλειας στο παρασκήνιο εκτελείται ήδη, δεν μπορεί να ξεκινήσετε χειροκίνητο αντίγραφο ασφάλειας",
"background_location_permission": "Άδεια τοποθεσίας στο παρασκήνιο",
"background_location_permission_content": "Το Immich για να μπορεί να αλλάζει δίκτυα όταν τρέχει στο παρασκήνιο, πρέπει *πάντα* να έχει πρόσβαση στην ακριβή τοποθεσία ώστε η εφαρμογή να μπορεί να διαβάζει το όνομα του δικτύου Wi-Fi",
+ "background_options": "Επιλογές παρασκηνίου",
"backup": "Αντίγραφο ασφαλείας",
"backup_album_selection_page_albums_device": "Άλμπουμ στη συσκευή ({count})",
"backup_album_selection_page_albums_tap": "Πάτημα για συμπερίληψη, διπλό πάτημα για εξαίρεση",
@@ -533,6 +553,7 @@
"backup_album_selection_page_select_albums": "Επιλογή άλμπουμ",
"backup_album_selection_page_selection_info": "Πληροφορίες επιλογής",
"backup_album_selection_page_total_assets": "Συνολικά μοναδικά στοιχεία",
+ "backup_albums_sync": "Συγχρονισμός αντιγράφων ασφαλείας άλμπουμ",
"backup_all": "Όλα",
"backup_background_service_backup_failed_message": "Αποτυχία δημιουργίας αντιγράφων ασφαλείας. Επανάληψη…",
"backup_background_service_connection_failed_message": "Αποτυχία σύνδεσης με το διακομιστή. Επανάληψη…",
@@ -582,6 +603,7 @@
"backup_controller_page_turn_on": "Ενεργοποίηση δημιουργίας αντιγράφου ασφαλείας στο προσκήνιο",
"backup_controller_page_uploading_file_info": "Μεταφόρτωση πληροφοριών αρχείου",
"backup_err_only_album": "Δεν είναι δυνατή η αφαίρεση του μοναδικού άλμπουμ",
+ "backup_error_sync_failed": "Ο συγχρονισμός απέτυχε. Δεν είναι δυνατή η επεξεργασία του αντιγράφου ασφαλείας.",
"backup_info_card_assets": "στοιχεία",
"backup_manual_cancelled": "Ακυρώθηκε",
"backup_manual_in_progress": "Μεταφόρτωση σε εξέλιξη. Δοκιμάστε αργότερα",
@@ -649,6 +671,8 @@
"change_pin_code": "Αλλαγή κωδικού PIN",
"change_your_password": "Αλλάξτε τον κωδικό σας",
"changed_visibility_successfully": "Η προβολή, άλλαξε με επιτυχία",
+ "charging": "Φόρτιση",
+ "charging_requirement_mobile_backup": "Η δημιουργία αντιγράφων ασφάλειας στο παρασκήνιο απαιτεί η συσκευή να φορτίζει",
"check_corrupt_asset_backup": "Έλεγχος για κατεστραμμένα αντίγραφα ασφαλείας στοιχείων",
"check_corrupt_asset_backup_button": "Εκτέλεση ελέγχου",
"check_corrupt_asset_backup_description": "Εκτέλεσε αυτόν τον έλεγχο μόνο μέσω Wi-Fi και αφού έχουν αποθηκευτεί όλα τα αντίγραφα ασφαλείας των στοιχείων. Η διαδικασία μπορεί να διαρκέσει μερικά λεπτά.",
@@ -680,7 +704,6 @@
"comments_and_likes": "Σχόλια & αντιδράσεις (likes)",
"comments_are_disabled": "Τα σχόλια είναι απενεργοποιημένα",
"common_create_new_album": "Δημιουργία νέου άλμπουμ",
- "common_server_error": "Ελέγξτε τη σύνδεσή σας, βεβαιωθείτε ότι ο διακομιστής είναι προσβάσιμος και ότι οι εκδόσεις της εφαρμογής/διακομιστή είναι συμβατές.",
"completed": "Ολοκληρώθηκε",
"confirm": "Επιβεβαίωση",
"confirm_admin_password": "Επιβεβαίωση κωδικού Διαχειριστή",
@@ -735,6 +758,7 @@
"create_user": "Δημιουργία χρήστη",
"created": "Δημιουργήθηκε",
"created_at": "Δημιουργήθηκε",
+ "creating_linked_albums": "Δημιουργία συνδεδεμένων άλμπουμ...",
"crop": "Αποκοπή",
"curated_object_page_title": "Πράγματα",
"current_device": "Τρέχουσα συσκευή",
@@ -861,7 +885,6 @@
"edit_tag": "Επεξεργασία ετικέτας",
"edit_title": "Επεξεργασία Τίτλου",
"edit_user": "Επεξεργασία χρήστη",
- "edited": "Επεξεργάστηκε",
"editor": "Επεξεργαστής",
"editor_close_without_save_prompt": "Αυτές οι αλλαγές δεν θα αποθηκευτούν",
"editor_close_without_save_title": "Κλείσιμο επεξεργαστή;",
@@ -884,7 +907,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": "Σφάλμα - Κάτι πήγε στραβά",
@@ -1015,6 +1040,7 @@
"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": "Έξοδος από την παρουσίαση",
@@ -1049,6 +1075,7 @@
"favorites_page_no_favorites": "Δεν βρέθηκαν αγαπημένα στοιχεία",
"feature_photo_updated": "Η φωτογραφία προβολής ενημερώθηκε",
"features": "Χαρακτηριστικά",
+ "features_in_development": "Λειτουργίες υπό Ανάπτυξη",
"features_setting_description": "Διαχειριστείτε τα χαρακτηριστικά της εφαρμογής",
"file_name": "Όνομα αρχείου",
"file_name_or_extension": "Όνομα αρχείου ή επέκταση",
@@ -1069,12 +1096,15 @@
"gcast_enabled": "Μετάδοση περιεχομένου Google Cast",
"gcast_enabled_description": "Αυτό το χαρακτηριστικό φορτώνει εξωτερικούς πόρους από τη Google για να λειτουργήσει.",
"general": "Γενικά",
+ "geolocation_instruction_location": "Κάνε κλικ σε ένα στοιχείο με συντεταγμένες GPS για να χρησιμοποιήσεις την τοποθεσία του, ή επίλεξε απευθείας μια τοποθεσία από τον χάρτη",
"get_help": "Ζητήστε βοήθεια",
"get_wifiname_error": "Δεν ήταν δυνατή η λήψη του ονόματος Wi-Fi. Βεβαιωθείτε ότι έχετε δώσει τις απαραίτητες άδειες και ότι είστε συνδεδεμένοι σε δίκτυο Wi-Fi",
"getting_started": "Ξεκινώντας",
"go_back": "Πηγαίνετε πίσω",
"go_to_folder": "Μετάβαση στο φάκελο",
"go_to_search": "Πηγαίνετε στην αναζήτηση",
+ "gps": "GPS",
+ "gps_missing": "Χωρίς GPS",
"grant_permission": "Επιτρέψτε την άδεια",
"group_albums_by": "Ομαδοποίηση άλμπουμ κατά...",
"group_country": "Ομαδοποίηση κατά χώρα",
@@ -1092,7 +1122,6 @@
"header_settings_field_validator_msg": "Η τιμή δεν μπορεί να είναι κενή",
"header_settings_header_name_input": "Όνομα κεφαλίδας",
"header_settings_header_value_input": "Τιμή κεφαλίδας",
- "headers_settings_tile_subtitle": "Καθορίστε τις κεφαλίδες διακομιστή μεσολάβησης που θα πρέπει να στέλνει η εφαρμογή με κάθε αίτημα δικτύου",
"headers_settings_tile_title": "Προσαρμοσμένες κεφαλίδες διακομιστή μεσολάβησης",
"hi_user": "Γειά σου {name} {email}",
"hide_all_people": "Απόκρυψη όλων των ατόμων",
@@ -1210,6 +1239,7 @@
"local": "Τοπικά",
"local_asset_cast_failed": "Αδυναμία μετάδοσης στοιχείου που δεν έχει ανέβει στον διακομιστή",
"local_assets": "Τοπικά στοιχεία",
+ "local_media_summary": "Περίληψη τοπικών πολυμέσων",
"local_network": "Τοπικό δίκτυο",
"local_network_sheet_info": "Η εφαρμογή θα συνδεθεί με τον διακομιστή μέσω αυτού του URL όταν χρησιμοποιείται το καθορισμένο δίκτυο Wi-Fi",
"location_permission": "Άδεια τοποθεσίας",
@@ -1221,6 +1251,7 @@
"location_picker_longitude_hint": "Εισαγάγετε εδώ το γεωγραφικό σας μήκος",
"lock": "Κλείδωμα",
"locked_folder": "Κλειδωμένος φάκελος",
+ "log_detail_title": "Λεπτομέρεια καταγραφής",
"log_out": "Αποσύνδεση",
"log_out_all_devices": "Αποσύνδεση από Όλες τις Συσκευές",
"logged_in_as": "Συνδεδεμένος ως {user}",
@@ -1251,6 +1282,7 @@
"login_password_changed_success": "Ο κωδικός πρόσβασης ενημερώθηκε με επιτυχία",
"logout_all_device_confirmation": "Είστε βέβαιοι ότι θέλετε να αποσυνδεθείτε από όλες τις συσκευές;",
"logout_this_device_confirmation": "Είστε βέβαιοι ότι θέλετε να αποσυνδεθείτε από αυτήν τη συσκευή;",
+ "logs": "Καταγραφές",
"longitude": "Γεωγραφικό μήκος",
"look": "Εμφάνιση",
"loop_videos": "Επανάληψη βίντεο",
@@ -1258,6 +1290,7 @@
"main_branch_warning": "Χρησιμοποιείτε μια έκδοση σε ανάπτυξη· συνιστούμε ανεπιφύλακτα τη χρήση μιας τελικής έκδοσης!",
"main_menu": "Κύριο μενού",
"make": "Κατασκευαστής",
+ "manage_geolocation": "Διαχείριση τοποθεσίας",
"manage_shared_links": "Διαχείριση κοινόχρηστων συνδέσμων",
"manage_sharing_with_partners": "Διαχειριστείτε την κοινή χρήση με συνεργάτες",
"manage_the_app_settings": "Διαχειριστείτε τις ρυθμίσεις της εφαρμογής",
@@ -1292,6 +1325,7 @@
"mark_as_read": "Επισήμανση ως αναγνωσμένο",
"marked_all_as_read": "Όλα επισημάνθηκαν ως αναγνωσμένα",
"matches": "Αντιστοιχίες",
+ "matching_assets": "Αντιστοιχία στοιχείων",
"media_type": "Τύπος πολυμέσου",
"memories": "Αναμνήσεις",
"memories_all_caught_up": "Συγχρονισμένα",
@@ -1312,6 +1346,8 @@
"minute": "Λεπτό",
"minutes": "Λεπτά",
"missing": "Όσα Λείπουν",
+ "mobile_app": "Εφαρμογή για κινητά",
+ "mobile_app_download_onboarding_note": "Μπορείτε να αποκτήσετε ξανά πρόσβαση σε αυτές τις επιλογές από τη σελίδα Βοηθήματα.",
"model": "Μοντέλο",
"month": "Μήνας",
"monthly_title_text_date_format": "ΜΜΜΜ y",
@@ -1330,18 +1366,23 @@
"my_albums": "Τα άλμπουμ μου",
"name": "Όνομα",
"name_or_nickname": "Όνομα ή ψευδώνυμο",
+ "navigate": "Πλοηγηθείτε",
+ "navigate_to_time": "Πλοηγηθείτε στο Χρόνο",
"network_requirement_photos_upload": "Χρήση δεδομένων κινητής τηλεφωνίας για τη δημιουργία αντιγράφων ασφαλείας των φωτογραφιών",
"network_requirement_videos_upload": "Χρήση δεδομένων κινητής τηλεφωνίας για τη δημιουργία αντιγράφων ασφαλείας των βίντεο",
+ "network_requirements": "Απαιτήσεις Δυκτίου",
"network_requirements_updated": "Οι απαιτήσεις δικτύου άλλαξαν, γίνεται επαναφορά της ουράς αντιγράφων ασφαλείας",
"networking_settings": "Δικτύωση",
"networking_subtitle": "Διαχείριση ρυθμίσεων τελικών σημείων διακομιστή",
"never": "Ποτέ",
"new_album": "Νέο Άλμπουμ",
"new_api_key": "Νέο API Key",
+ "new_date_range": "Εύρος νέας ημερομηνίας",
"new_password": "Νέος κωδικός πρόσβασης",
"new_person": "Νέο άτομο",
"new_pin_code": "Νέος κωδικός PIN",
"new_pin_code_subtitle": "Αυτή είναι η πρώτη φορά που αποκτάτε πρόσβαση στον κλειδωμένο φάκελο. Δημιουργήστε έναν κωδικό PIN για ασφαλή πρόσβαση σε αυτή τη σελίδα",
+ "new_timeline": "Νέο Χρονολόγιο",
"new_user_created": "Ο νέος χρήστης δημιουργήθηκε",
"new_version_available": "ΔΙΑΘΕΣΙΜΗ ΝΕΑ ΕΚΔΟΣΗ",
"newest_first": "Τα νεότερα πρώτα",
@@ -1355,20 +1396,25 @@
"no_assets_message": "ΚΑΝΤΕ ΚΛΙΚ ΓΙΑ ΝΑ ΑΝΕΒΑΣΕΤΕ ΤΗΝ ΠΡΩΤΗ ΣΑΣ ΦΩΤΟΓΡΑΦΙΑ",
"no_assets_to_show": "Δεν υπάρχουν στοιχεία προς εμφάνιση",
"no_cast_devices_found": "Δε βρέθηκαν συσκευές μετάδοσης",
+ "no_checksum_local": "Δεν υπάρχει διαθέσιμο checksum για έλεγχο ακεραιότητας – δεν μπορούν να ανακτηθούν τα τοπικά στοιχεία",
+ "no_checksum_remote": "Δεν υπάρχει διαθέσιμο checksum για έλεγχο ακεραιότητας – δεν μπορούν να ανακτηθούν τα απομακρυσμένα στοιχεία",
"no_duplicates_found": "Δεν βρέθηκαν διπλότυπα.",
"no_exif_info_available": "Καμία πληροφορία exif διαθέσιμη",
"no_explore_results_message": "Ανεβάστε περισσότερες φωτογραφίες για να περιηγηθείτε στη συλλογή σας.",
"no_favorites_message": "Προσθέστε αγαπημένα για να βρείτε γρήγορα τις καλύτερες φωτογραφίες και τα βίντεό σας",
"no_libraries_message": "Δημιουργήστε μια εξωτερική βιβλιοθήκη για να προβάλετε τις φωτογραφίες και τα βίντεό σας",
+ "no_local_assets_found": "Δεν βρέθηκαν τοπικά στοιχεία με αυτό το checksum",
"no_locked_photos_message": "Οι φωτογραφίες και τα βίντεο στον κλειδωμένο φάκελο, είναι κρυμμένες και δεν θα εμφανίζονται κατά την περιήγηση ή την αναζήτηση στη βιβλιοθήκη σας.",
"no_name": "Χωρίς Όνομα",
"no_notifications": "Καμία ειδοποίηση",
"no_people_found": "Δεν βρέθηκαν άτομα που να ταιριάζουν",
"no_places": "Καμία τοποθεσία",
+ "no_remote_assets_found": "Δεν βρέθηκαν απομακρυσμένα στοιχεία με αυτό το checksum",
"no_results": "Κανένα αποτέλεσμα",
"no_results_description": "Δοκιμάστε ένα συνώνυμο ή πιο γενική λέξη-κλειδί",
"no_shared_albums_message": "Δημιουργήστε ένα άλμπουμ για να μοιράζεστε φωτογραφίες και βίντεο με άτομα στο δίκτυό σας",
"no_uploads_in_progress": "Καμία μεταφόρτωση σε εξέλιξη",
+ "not_available": "Μ/Δ (Μη Διαθέσιμο)",
"not_in_any_album": "Σε κανένα άλμπουμ",
"not_selected": "Δεν επιλέχθηκε",
"note_apply_storage_label_to_previously_uploaded assets": "Σημείωση: Για να εφαρμόσετε την Ετικέτα Αποθήκευσης σε στοιχεία που έχουν μεταφορτωθεί προηγουμένως, εκτελέστε το",
@@ -1382,6 +1428,8 @@
"notifications": "Ειδοποιήσεις",
"notifications_setting_description": "Διαχείριση ειδοποιήσεων",
"oauth": "OAuth",
+ "obtainium_configurator": "Ρυθμιστής Obtainium",
+ "obtainium_configurator_instructions": "Δημιουργήστε ένα κλειδί API και επιλέξτε μια παραλλαγή για να δημιουργήσετε τον σύνδεσμο σας ρύθμισης Obtainium.",
"official_immich_resources": "Επίσημοι Πόροι του Immich",
"offline": "Εκτός σύνδεσης",
"offset": "Μετατόπιση",
@@ -1403,6 +1451,8 @@
"open_the_search_filters": "Ανοίξτε τα φίλτρα αναζήτησης",
"options": "Επιλογές",
"or": "ή",
+ "organize_into_albums": "Οργάνωση σε άλμπουμ",
+ "organize_into_albums_description": "Τοποθετείστε τις υπάρχουσες φωτογραφίες σε άλμπουμ χρησιμοποιώντας τις τρέχουσες ρυθμίσεις συγχρονισμού",
"organize_your_library": "Οργανώστε τη βιβλιοθήκη σας",
"original": "πρωτότυπο",
"other": "Άλλες",
@@ -1488,6 +1538,7 @@
"port": "Θύρα",
"preferences_settings_subtitle": "Διαχειριστείτε τις προτιμήσεις της εφαρμογής",
"preferences_settings_title": "Προτιμήσεις",
+ "preparing": "Προετοιμασία",
"preset": "Προκαθορισμένη ρύθμιση",
"preview": "Προεπισκόπηση",
"previous": "Προηγούμενο",
@@ -1500,12 +1551,9 @@
"privacy": "Ιδιωτικότητα",
"profile": "Προφίλ",
"profile_drawer_app_logs": "Καταγραφές",
- "profile_drawer_client_out_of_date_major": "Παρακαλώ ενημερώστε την εφαρμογή στην πιο πρόσφατη κύρια έκδοση.",
- "profile_drawer_client_out_of_date_minor": "Παρακαλώ ενημερώστε την εφαρμογή στην πιο πρόσφατη δευτερεύουσα έκδοση.",
"profile_drawer_client_server_up_to_date": "Ο πελάτης και ο διακομιστής είναι ενημερωμένοι",
"profile_drawer_github": "GitHub",
- "profile_drawer_server_out_of_date_major": "Παρακαλώ ενημερώστε τον διακομιστή στην πιο πρόσφατη κύρια έκδοση.",
- "profile_drawer_server_out_of_date_minor": "Παρακαλώ ενημερώστε τον διακομιστή στην πιο πρόσφατη δευτερεύουσα έκδοση.",
+ "profile_drawer_readonly_mode": "Η λειτουργία μόνο-για-ανάγνωση ενεργοποιήθηκε. Κρατήστε πατημένο το εικονίδιο του χρήστη για απενεργοποίηση.",
"profile_image_of_user": "Εικόνα προφίλ του χρήστη {user}",
"profile_picture_set": "Ορισμός εικόνας προφίλ.",
"public_album": "Δημόσιο άλμπουμ",
@@ -1542,6 +1590,7 @@
"purchase_server_description_2": "Κατάσταση υποστηρικτή",
"purchase_server_title": "Διακομιστής",
"purchase_settings_server_activated": "Η διαχείριση του κλειδιού προϊόντος του διακομιστή γίνεται από τον διαχειριστή",
+ "query_asset_id": "Αναζήτηση ID Στοιχείου",
"queue_status": "Τοποθέτηση στη ουρά {count} από {total}",
"rating": "Αξιολόγηση με αστέρια",
"rating_clear": "Εκκαθάριση αξιολόγησης",
@@ -1549,6 +1598,9 @@
"rating_description": "Εμφάνιση της αξιολόγησης EXIF στον πίνακα πληροφοριών",
"reaction_options": "Επιλογές αντίδρασης",
"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 {# αρχείων}} σε νέο άτομο",
@@ -1573,6 +1625,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 {# στοιχεία}} από αυτόν τον κοινόχρηστο σύνδεσμο;",
@@ -1625,6 +1678,7 @@
"restore_user": "Επαναφορά χρήστη",
"restored_asset": "Ανακτήθηκε το αρχείο",
"resume": "Συνέχιση",
+ "resume_paused_jobs": "Συνέχιση {count, plural, one {# σε παύση εργασία} other {# σε παύση εργασίες}}",
"retry_upload": "Επανάληψη ανεβάσματος",
"review_duplicates": "Προβολή διπλότυπων",
"review_large_files": "Επισκόπηση μεγάλων αρχείων",
@@ -1718,6 +1772,7 @@
"select_user_for_sharing_page_err_album": "Αποτυχία δημιουργίας άλπουμ",
"selected": "Επιλεγμένοι",
"selected_count": "{count, plural, other {# επιλεγμένοι}}",
+ "selected_gps_coordinates": "Επιλεγμένες συντεταγμένες GPS",
"send_message": "Αποστολή μηνύματος",
"send_welcome_email": "Αποστολή email καλωσορίσματος",
"server_endpoint": "Τελικό σημείο Διακομιστή",
@@ -1755,6 +1810,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": "Αναγκαστική αναπαραγωγή αυθεντικού βίντεο",
@@ -1846,6 +1903,7 @@
"show_slideshow_transition": "Εμφάνιση μετάβασης παρουσίασης",
"show_supporter_badge": "Σήμα υποστηρικτή",
"show_supporter_badge_description": "Εμφάνιση σήματος υποστηρικτή",
+ "show_text_search_menu": "Εμφάνιση μενού αναζήτησης κειμένου",
"shuffle": "Ανάμειξη",
"sidebar": "Πλαϊνή μπάρα",
"sidebar_display_description": "Εμφάνιση συνδέσμου για προβολή στην πλαϊνή μπάρα",
@@ -1876,6 +1934,7 @@
"stacktrace": "Καταγραφή στοίβας",
"start": "Έναρξη",
"start_date": "Από",
+ "start_date_before_end_date": "Η ημερομηνία έναρξης πρέπει να είναι πριν από την ημερομηνία λήξης",
"state": "Νομός",
"status": "Κατάσταση",
"stop_casting": "Διακοπή μετάδοσης",
@@ -1900,6 +1959,8 @@
"sync_albums_manual_subtitle": "Συγχρονίστε όλα τα μεταφορτωμένα βίντεο και φωτογραφίες με τα επιλεγμένα εφεδρικά άλμπουμ",
"sync_local": "Τοπικός Συγχρονισμός",
"sync_remote": "Απομακρυσμένος Συγχρονισμός",
+ "sync_status": "Κατάσταση συγχρονισμού",
+ "sync_status_subtitle": "Προβολή και διαχείριση του συστήματος συγχρονισμού",
"sync_upload_album_setting_subtitle": "Δημιουργήστε και ανεβάστε τις φωτογραφίες και τα βίντεό σας στα επιλεγμένα άλμπουμ στο Immich",
"tag": "Ετικέτα",
"tag_assets": "Ετικετοποίηση στοιχείων",
@@ -1937,7 +1998,9 @@
"to_change_password": "Αλλαγή κωδικού πρόσβασης",
"to_favorite": "Αγαπημένο",
"to_login": "Είσοδος",
+ "to_multi_select": "για πολλαπλή επιλογή",
"to_parent": "Μεταβείτε στο γονικό φάκελο",
+ "to_select": "για επιλογή",
"to_trash": "Κάδος απορριμμάτων",
"toggle_settings": "Εναλλαγή ρυθμίσεων",
"total": "Σύνολο",
@@ -1957,6 +2020,7 @@
"trash_page_select_assets_btn": "Επιλέξτε στοιχεία",
"trash_page_title": "Κάδος Απορριμμάτων ({count})",
"trashed_items_will_be_permanently_deleted_after": "Τα στοιχεία που βρίσκονται στον κάδο απορριμμάτων θα διαγραφούν οριστικά μετά από {days, plural, one {# ημέρα} other {# ημέρες}}.",
+ "troubleshoot": "Επίλυση προβλημάτων",
"type": "Τύπος",
"unable_to_change_pin_code": "Αδυναμία αλλαγής κωδικού PIN",
"unable_to_setup_pin_code": "Αδυναμία ρύθμισης κωδικού PIN",
@@ -1987,6 +2051,7 @@
"unstacked_assets_count": "Αποστοιβάξατε {count, plural, one {# στοιχείο} other {# στοιχεία}}",
"untagged": "Χωρίς ετικέτα",
"up_next": "Ακολουθεί",
+ "update_location_action_prompt": "Ενημέρωση τοποθεσίας για {count} επιλεγμένα στοιχεία με:",
"updated_at": "Ενημερωμένο",
"updated_password": "Ο κωδικός πρόσβασης ενημερώθηκε",
"upload": "Μεταφόρτωση",
@@ -2053,6 +2118,7 @@
"view_next_asset": "Προβολή επόμενου στοιχείου",
"view_previous_asset": "Προβολή προηγούμενου στοιχείου",
"view_qr_code": "Προβολή κωδικού QR",
+ "view_similar_photos": "Προβολή παρόμοιων φωτογραφιών",
"view_stack": "Προβολή της στοίβας",
"view_user": "Προβολή Χρήστη",
"viewer_remove_from_stack": "Κατάργηση από τη Στοίβα",
@@ -2071,5 +2137,6 @@
"yes": "Ναι",
"you_dont_have_any_shared_links": "Δεν έχετε κοινόχρηστους συνδέσμους",
"your_wifi_name": "Το όνομα του Wi-Fi σας",
- "zoom_image": "Ζουμ Εικόνας"
+ "zoom_image": "Ζουμ Εικόνας",
+ "zoom_to_bounds": "Εστίαση στα όρια"
}
diff --git a/i18n/en.json b/i18n/en.json
index 23e1071a2d..6da205d85a 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -28,10 +28,13 @@
"add_to_album": "Add to album",
"add_to_album_bottom_sheet_added": "Added to {album}",
"add_to_album_bottom_sheet_already_exists": "Already in {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Some local assets could not be added to album",
"add_to_album_toggle": "Toggle selection for {album}",
"add_to_albums": "Add to albums",
"add_to_albums_count": "Add to albums ({count})",
+ "add_to_bottom_bar": "Add to",
"add_to_shared_album": "Add to shared album",
+ "add_upload_to_stack": "Add upload to stack",
"add_url": "Add URL",
"added_to_archive": "Added to archive",
"added_to_favorites": "Added to favorites",
@@ -118,7 +121,7 @@
"library_settings_description": "Manage external library settings",
"library_tasks_description": "Scan external libraries for new and/or changed assets",
"library_watching_enable_description": "Watch external libraries for file changes",
- "library_watching_settings": "Library watching (EXPERIMENTAL)",
+ "library_watching_settings": "Library watching [EXPERIMENTAL]",
"library_watching_settings_description": "Automatically watch for changed files",
"logging_enable_description": "Enable logging",
"logging_level_description": "When enabled, what log level to use.",
@@ -152,6 +155,18 @@
"machine_learning_min_detection_score_description": "Minimum confidence score for a face to be detected from 0-1. Lower values will detect more faces but may result in false positives.",
"machine_learning_min_recognized_faces": "Minimum recognized faces",
"machine_learning_min_recognized_faces_description": "The minimum number of recognized faces for a person to be created. Increasing this makes Facial Recognition more precise at the cost of increasing the chance that a face is not assigned to a person.",
+ "machine_learning_ocr": "OCR",
+ "machine_learning_ocr_description": "Use machine learning to recognize text in images",
+ "machine_learning_ocr_enabled": "Enable OCR",
+ "machine_learning_ocr_enabled_description": "If disabled, images will not undergo text recognition.",
+ "machine_learning_ocr_max_resolution": "Maximum resolution",
+ "machine_learning_ocr_max_resolution_description": "Previews above this resolution will be resized while preserving aspect ratio. Higher values are more accurate, but take longer to process and use more memory.",
+ "machine_learning_ocr_min_detection_score": "Minimum detection score",
+ "machine_learning_ocr_min_detection_score_description": "Minimum confidence score for text to be detected from 0-1. Lower values will detect more text but may result in false positives.",
+ "machine_learning_ocr_min_recognition_score": "Minimum recognition score",
+ "machine_learning_ocr_min_score_recognition_description": "Minimum confidence score for detected text to be recognized from 0-1. Lower values will recognize more text but may result in false positives.",
+ "machine_learning_ocr_model": "OCR model",
+ "machine_learning_ocr_model_description": "Server models are more accurate than mobile models, but take longer to process and use more memory.",
"machine_learning_settings": "Machine Learning Settings",
"machine_learning_settings_description": "Manage machine learning features and settings",
"machine_learning_smart_search": "Smart Search",
@@ -209,6 +224,8 @@
"notification_email_ignore_certificate_errors_description": "Ignore TLS certificate validation errors (not recommended)",
"notification_email_password_description": "Password to use when authenticating with the email server",
"notification_email_port_description": "Port of the email server (e.g 25, 465, or 587)",
+ "notification_email_secure": "SMTPS",
+ "notification_email_secure_description": "Use SMTPS (SMTP over TLS)",
"notification_email_sent_test_email_button": "Send test email and save",
"notification_email_setting_description": "Settings for sending email notifications",
"notification_email_test_email": "Send test email",
@@ -241,6 +258,7 @@
"oauth_storage_quota_default_description": "Quota in GiB to be used when no claim is provided.",
"oauth_timeout": "Request Timeout",
"oauth_timeout_description": "Timeout for requests in milliseconds",
+ "ocr_job_description": "Use machine learning to recognize text in images",
"password_enable_description": "Login with email and password",
"password_settings": "Password Login",
"password_settings_description": "Manage password login settings",
@@ -331,7 +349,7 @@
"transcoding_max_b_frames": "Maximum B-frames",
"transcoding_max_b_frames_description": "Higher values improve compression efficiency, but slow down encoding. May not be compatible with hardware acceleration on older devices. 0 disables B-frames, while -1 sets this value automatically.",
"transcoding_max_bitrate": "Maximum bitrate",
- "transcoding_max_bitrate_description": "Setting a max bitrate can make file sizes more predictable at a minor cost to quality. At 720p, typical values are 2600 kbit/s for VP9 or HEVC, or 4500 kbit/s for H.264. Disabled if set to 0.",
+ "transcoding_max_bitrate_description": "Setting a max bitrate can make file sizes more predictable at a minor cost to quality. At 720p, typical values are 2600 kbit/s for VP9 or HEVC, or 4500 kbit/s for H.264. Disabled if set to 0. When no unit is specified, k (for kbit/s) is assumed; therefore 5000, 5000k, and 5M (for Mbit/s) are equivalent.",
"transcoding_max_keyframe_interval": "Maximum keyframe interval",
"transcoding_max_keyframe_interval_description": "Sets the maximum frame distance between keyframes. Lower values worsen compression efficiency, but improve seek times and may improve quality in scenes with fast movement. 0 sets this value automatically.",
"transcoding_optimal_description": "Videos higher than target resolution or not in an accepted format",
@@ -349,7 +367,7 @@
"transcoding_target_resolution": "Target resolution",
"transcoding_target_resolution_description": "Higher resolutions can preserve more detail but take longer to encode, have larger file sizes, and can reduce app responsiveness.",
"transcoding_temporal_aq": "Temporal AQ",
- "transcoding_temporal_aq_description": "Applies only to NVENC. Increases quality of high-detail, low-motion scenes. May not be compatible with older devices.",
+ "transcoding_temporal_aq_description": "Applies only to NVENC. Temporal Adaptive Quantization increases quality of high-detail, low-motion scenes. May not be compatible with older devices.",
"transcoding_threads": "Threads",
"transcoding_threads_description": "Higher values lead to faster encoding, but leave less room for the server to process other tasks while active. This value should not be more than the number of CPU cores. Maximizes utilization if set to 0.",
"transcoding_tone_mapping": "Tone-mapping",
@@ -400,11 +418,11 @@
"advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from local assets. Activate this setting to load remote images instead.",
"advanced_settings_prefer_remote_title": "Prefer remote images",
"advanced_settings_proxy_headers_subtitle": "Define proxy headers Immich should send with each network request",
- "advanced_settings_proxy_headers_title": "Proxy Headers",
+ "advanced_settings_proxy_headers_title": "Custom proxy headers [EXPERIMENTAL]",
"advanced_settings_readonly_mode_subtitle": "Enables the read-only mode where the photos can be only viewed, things like selecting multiple images, sharing, casting, delete are all disabled. Enable/Disable read-only via user avatar from the main screen",
- "advanced_settings_readonly_mode_title": "Read-only Mode",
+ "advanced_settings_readonly_mode_title": "Read-only mode",
"advanced_settings_self_signed_ssl_subtitle": "Skips SSL certificate verification for the server endpoint. Required for self-signed certificates.",
- "advanced_settings_self_signed_ssl_title": "Allow self-signed SSL certificates",
+ "advanced_settings_self_signed_ssl_title": "Allow self-signed SSL certificates [EXPERIMENTAL]",
"advanced_settings_sync_remote_deletions_subtitle": "Automatically delete or restore an asset on this device when that action is taken on the web",
"advanced_settings_sync_remote_deletions_title": "Sync remote deletions [EXPERIMENTAL]",
"advanced_settings_tile_subtitle": "Advanced user's settings",
@@ -413,6 +431,7 @@
"age_months": "Age {months, plural, one {# month} other {# months}}",
"age_year_months": "Age 1 year, {months, plural, one {# month} other {# months}}",
"age_years": "{years, plural, other {Age #}}",
+ "album": "Album",
"album_added": "Album added",
"album_added_notification_setting_description": "Receive an email notification when you are added to a shared album",
"album_cover_updated": "Album cover updated",
@@ -458,16 +477,21 @@
"allow_edits": "Allow edits",
"allow_public_user_to_download": "Allow public user to download",
"allow_public_user_to_upload": "Allow public user to upload",
+ "allowed": "Allowed",
"alt_text_qr_code": "QR code image",
"anti_clockwise": "Anti-clockwise",
"api_key": "API Key",
"api_key_description": "This value will only be shown once. Please be sure to copy it before closing the window.",
"api_key_empty": "Your API Key name shouldn't be empty",
"api_keys": "API Keys",
+ "app_architecture_variant": "Variant (Architecture)",
"app_bar_signout_dialog_content": "Are you sure you want to sign out?",
"app_bar_signout_dialog_ok": "Yes",
"app_bar_signout_dialog_title": "Sign out",
+ "app_download_links": "App Download Links",
"app_settings": "App Settings",
+ "app_stores": "App Stores",
+ "app_update_available": "App update is available",
"appears_in": "Appears in",
"apply_count": "Apply ({count, number})",
"archive": "Archive",
@@ -551,6 +575,7 @@
"backup_albums_sync": "Backup albums synchronization",
"backup_all": "All",
"backup_background_service_backup_failed_message": "Failed to backup assets. Retrying…",
+ "backup_background_service_complete_notification": "Asset backup complete",
"backup_background_service_connection_failed_message": "Failed to connect to the server. Retrying…",
"backup_background_service_current_upload_notification": "Uploading {filename}",
"backup_background_service_default_notification": "Checking for new assets…",
@@ -598,6 +623,7 @@
"backup_controller_page_turn_on": "Turn on foreground backup",
"backup_controller_page_uploading_file_info": "Uploading file info",
"backup_err_only_album": "Cannot remove the only album",
+ "backup_error_sync_failed": "Sync failed. Cannot process backup.",
"backup_info_card_assets": "assets",
"backup_manual_cancelled": "Cancelled",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
@@ -659,6 +685,8 @@
"change_password_description": "This is either the first time you are signing into the system or a request has been made to change your password. Please enter the new password below.",
"change_password_form_confirm_password": "Confirm Password",
"change_password_form_description": "Hi {name},\n\nThis is either the first time you are signing into the system or a request has been made to change your password. Please enter the new password below.",
+ "change_password_form_log_out": "Log out all other devices",
+ "change_password_form_log_out_description": "It is recommended to log out of all other devices",
"change_password_form_new_password": "New Password",
"change_password_form_password_mismatch": "Passwords do not match",
"change_password_form_reenter_new_password": "Re-enter New Password",
@@ -685,8 +713,8 @@
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove_msg": "Client certificate is removed",
- "client_cert_subtitle": "Supports PKCS12 (.p12, .pfx) format only. Certificate Import/Remove is available only before login",
- "client_cert_title": "SSL Client Certificate",
+ "client_cert_subtitle": "Supports PKCS12 (.p12, .pfx) format only. Certificate import/removal is available only before login",
+ "client_cert_title": "SSL client certificate [EXPERIMENTAL]",
"clockwise": "Сlockwise",
"close": "Close",
"collapse": "Collapse",
@@ -698,7 +726,6 @@
"comments_and_likes": "Comments & likes",
"comments_are_disabled": "Comments are disabled",
"common_create_new_album": "Create new album",
- "common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.",
"completed": "Completed",
"confirm": "Confirm",
"confirm_admin_password": "Confirm Admin Password",
@@ -737,6 +764,7 @@
"create": "Create",
"create_album": "Create album",
"create_album_page_untitled": "Untitled",
+ "create_api_key": "Create API key",
"create_library": "Create Library",
"create_link": "Create link",
"create_link_to_share": "Create link to share",
@@ -766,6 +794,7 @@
"daily_title_text_date_year": "E, MMM dd, yyyy",
"dark": "Dark",
"dark_theme": "Toggle dark theme",
+ "date": "Date",
"date_after": "Date after",
"date_and_time": "Date and Time",
"date_before": "Date before",
@@ -880,7 +909,6 @@
"edit_tag": "Edit tag",
"edit_title": "Edit Title",
"edit_user": "Edit user",
- "edited": "Edited",
"editor": "Editor",
"editor_close_without_save_prompt": "The changes will not be saved",
"editor_close_without_save_title": "Close editor?",
@@ -1036,6 +1064,7 @@
"exif_bottom_sheet_description_error": "Error updating description",
"exif_bottom_sheet_details": "DETAILS",
"exif_bottom_sheet_location": "LOCATION",
+ "exif_bottom_sheet_no_description": "No description",
"exif_bottom_sheet_people": "PEOPLE",
"exif_bottom_sheet_person_add_person": "Add name",
"exit_slideshow": "Exit Slideshow",
@@ -1074,6 +1103,7 @@
"features_setting_description": "Manage the app features",
"file_name": "File name",
"file_name_or_extension": "File name or extension",
+ "file_size": "File size",
"filename": "Filename",
"filetype": "Filetype",
"filter": "Filter",
@@ -1113,11 +1143,10 @@
"hash_asset": "Hash asset",
"hashed_assets": "Hashed assets",
"hashing": "Hashing",
- "header_settings_add_header_tip": "Add Header",
+ "header_settings_add_header_tip": "Add header",
"header_settings_field_validator_msg": "Value cannot be empty",
"header_settings_header_name_input": "Header name",
"header_settings_header_value_input": "Header value",
- "headers_settings_tile_subtitle": "Define proxy headers the app should send with each network request",
"headers_settings_tile_title": "Custom proxy headers",
"hi_user": "Hi {name} ({email})",
"hide_all_people": "Hide all people",
@@ -1170,6 +1199,8 @@
"import_path": "Import path",
"in_albums": "In {count, plural, one {# album} other {# albums}}",
"in_archive": "In archive",
+ "in_year": "In {year}",
+ "in_year_selector": "In",
"include_archived": "Include archived",
"include_shared_albums": "Include shared albums",
"include_shared_partner_assets": "Include shared partner assets",
@@ -1206,6 +1237,7 @@
"language_setting_description": "Select your preferred language",
"large_files": "Large Files",
"last": "Last",
+ "last_months": "{count, plural, one {Last month} other {Last # months}}",
"last_seen": "Last seen",
"latest_version": "Latest Version",
"latitude": "Latitude",
@@ -1238,6 +1270,7 @@
"local_media_summary": "Local Media Summary",
"local_network": "Local network",
"local_network_sheet_info": "The app will connect to the server through this URL when using the specified Wi-Fi network",
+ "location": "Location",
"location_permission": "Location permission",
"location_permission_content": "In order to use the auto-switching feature, Immich needs precise location permission so it can read the current Wi-Fi network's name",
"location_picker_choose_on_map": "Choose on map",
@@ -1287,6 +1320,10 @@
"main_menu": "Main menu",
"make": "Make",
"manage_geolocation": "Manage location",
+ "manage_media_access_rationale": "This permission is required for proper handling of moving assets to the trash and restoring them from it.",
+ "manage_media_access_settings": "Open settings",
+ "manage_media_access_subtitle": "Allow the Immich app to manage and move media files.",
+ "manage_media_access_title": "Media Management Access",
"manage_shared_links": "Manage shared links",
"manage_sharing_with_partners": "Manage sharing with partners",
"manage_the_app_settings": "Manage the app settings",
@@ -1342,12 +1379,15 @@
"minute": "Minute",
"minutes": "Minutes",
"missing": "Missing",
+ "mobile_app": "Mobile App",
+ "mobile_app_download_onboarding_note": "Download the companion mobile app using the following options",
"model": "Model",
"month": "Month",
"monthly_title_text_date_format": "MMMM y",
"more": "More",
"move": "Move",
"move_off_locked_folder": "Move out of locked folder",
+ "move_to": "Move to",
"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",
@@ -1360,6 +1400,8 @@
"my_albums": "My albums",
"name": "Name",
"name_or_nickname": "Name or nickname",
+ "navigate": "Navigate",
+ "navigate_to_time": "Navigate to Time",
"network_requirement_photos_upload": "Use cellular data to backup photos",
"network_requirement_videos_upload": "Use cellular data to backup videos",
"network_requirements": "Network Requirements",
@@ -1369,11 +1411,13 @@
"never": "Never",
"new_album": "New Album",
"new_api_key": "New API Key",
+ "new_date_range": "New date range",
"new_password": "New password",
"new_person": "New person",
"new_pin_code": "New PIN code",
"new_pin_code_subtitle": "This is your first time accessing the locked folder. Create a PIN code to securely access this page",
"new_timeline": "New Timeline",
+ "new_update": "New update",
"new_user_created": "New user created",
"new_version_available": "NEW VERSION AVAILABLE",
"newest_first": "Newest first",
@@ -1389,6 +1433,7 @@
"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_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.",
@@ -1405,6 +1450,7 @@
"no_results_description": "Try a synonym or more general keyword",
"no_shared_albums_message": "Create an album to share photos and videos with people in your network",
"no_uploads_in_progress": "No uploads in progress",
+ "not_allowed": "Not allowed",
"not_available": "N/A",
"not_in_any_album": "Not in any album",
"not_selected": "Not selected",
@@ -1419,6 +1465,9 @@
"notifications": "Notifications",
"notifications_setting_description": "Manage notifications",
"oauth": "OAuth",
+ "obtainium_configurator": "Obtainium Configurator",
+ "obtainium_configurator_instructions": "Use Obtainium to install and update the Android app directly from Immich GitHub's release. Create an API key and select a variant to create your Obtainium configuration link",
+ "ocr": "OCR",
"official_immich_resources": "Official Immich Resources",
"offline": "Offline",
"offset": "Offset",
@@ -1512,6 +1561,8 @@
"photos_count": "{count, plural, one {{count, number} Photo} other {{count, number} Photos}}",
"photos_from_previous_years": "Photos from previous years",
"pick_a_location": "Pick a location",
+ "pick_custom_range": "Custom range",
+ "pick_date_range": "Select a date range",
"pin_code_changed_successfully": "Successfully changed PIN code",
"pin_code_reset_successfully": "Successfully reset PIN code",
"pin_code_setup_successfully": "Successfully setup a PIN code",
@@ -1523,6 +1574,9 @@
"play_memories": "Play memories",
"play_motion_photo": "Play Motion Photo",
"play_or_pause_video": "Play or pause video",
+ "play_original_video": "Play original video",
+ "play_original_video_setting_description": "Prefer playback of original videos rather than transcoded videos. If original asset is not compatible it may not playback correctly.",
+ "play_transcoded_video": "Play transcoded video",
"please_auth_to_access": "Please authenticate to access",
"port": "Port",
"preferences_settings_subtitle": "Manage the app's preferences",
@@ -1540,13 +1594,9 @@
"privacy": "Privacy",
"profile": "Profile",
"profile_drawer_app_logs": "Logs",
- "profile_drawer_client_out_of_date_major": "Mobile App is out of date. Please update to the latest major version.",
- "profile_drawer_client_out_of_date_minor": "Mobile App is out of date. Please update to the latest minor version.",
"profile_drawer_client_server_up_to_date": "Client and Server are up-to-date",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Read-only mode enabled. Long-press the user avatar icon to exit.",
- "profile_drawer_server_out_of_date_major": "Server is out of date. Please update to the latest major version.",
- "profile_drawer_server_out_of_date_minor": "Server is out of date. Please update to the latest minor version.",
"profile_image_of_user": "Profile image of {user}",
"profile_picture_set": "Profile picture set.",
"public_album": "Public album",
@@ -1663,6 +1713,7 @@
"reset_sqlite_confirmation": "Are you sure you want to reset the SQLite database? You will need to log out and log in again to resync the data",
"reset_sqlite_success": "Successfully reset the SQLite database",
"reset_to_default": "Reset to default",
+ "resolution": "Resolution",
"resolve_duplicates": "Resolve duplicates",
"resolved_all_duplicates": "Resolved all duplicates",
"restore": "Restore",
@@ -1681,6 +1732,7 @@
"running": "Running",
"save": "Save",
"save_to_gallery": "Save to gallery",
+ "saved": "Saved",
"saved_api_key": "Saved API Key",
"saved_profile": "Saved profile",
"saved_settings": "Saved settings",
@@ -1697,6 +1749,9 @@
"search_by_description_example": "Hiking day in Sapa",
"search_by_filename": "Search by file name or extension",
"search_by_filename_example": "i.e. IMG_1234.JPG or PNG",
+ "search_by_ocr": "Search by OCR",
+ "search_by_ocr_example": "Latte",
+ "search_camera_lens_model": "Search lens model...",
"search_camera_make": "Search camera make...",
"search_camera_model": "Search camera model...",
"search_city": "Search city...",
@@ -1713,6 +1768,7 @@
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_title": "Select media type",
+ "search_filter_ocr": "Search by OCR",
"search_filter_people_title": "Select people",
"search_for": "Search for",
"search_for_existing_person": "Search for existing person",
@@ -1775,6 +1831,7 @@
"server_online": "Server Online",
"server_privacy": "Server Privacy",
"server_stats": "Server Stats",
+ "server_update_available": "Server update is available",
"server_version": "Server Version",
"set": "Set",
"set_as_album_cover": "Set as album cover",
@@ -1803,6 +1860,8 @@
"setting_notifications_subtitle": "Adjust your notification preferences",
"setting_notifications_total_progress_subtitle": "Overall upload progress (done/total assets)",
"setting_notifications_total_progress_title": "Show background backup total progress",
+ "setting_video_viewer_auto_play_subtitle": "Automatically start playing videos when they are opened",
+ "setting_video_viewer_auto_play_title": "Auto play videos",
"setting_video_viewer_looping_title": "Looping",
"setting_video_viewer_original_video_subtitle": "When streaming a video from the server, play the original even when a transcode is available. May lead to buffering. Videos available locally are played in original quality regardless of this setting.",
"setting_video_viewer_original_video_title": "Force original video",
@@ -1982,7 +2041,9 @@
"theme_setting_three_stage_loading_title": "Enable three-stage loading",
"they_will_be_merged_together": "They will be merged together",
"third_party_resources": "Third-Party Resources",
+ "time": "Time",
"time_based_memories": "Time-based memories",
+ "time_based_memories_duration": "Number of seconds to display each image.",
"timeline": "Timeline",
"timezone": "Timezone",
"to_archive": "Archive",
@@ -2014,6 +2075,7 @@
"troubleshoot": "Troubleshoot",
"type": "Type",
"unable_to_change_pin_code": "Unable to change PIN code",
+ "unable_to_check_version": "Unable to check app or server version",
"unable_to_setup_pin_code": "Unable to setup PIN code",
"unarchive": "Unarchive",
"unarchive_action_prompt": "{count} removed from Archive",
@@ -2122,6 +2184,7 @@
"welcome": "Welcome",
"welcome_to_immich": "Welcome to Immich",
"wifi_name": "Wi-Fi Name",
+ "workflow": "Workflow",
"wrong_pin_code": "Wrong PIN code",
"year": "Year",
"years_ago": "{years, plural, one {# year} other {# years}} ago",
diff --git a/i18n/es.json b/i18n/es.json
index e4873051f6..c2260b2012 100644
--- a/i18n/es.json
+++ b/i18n/es.json
@@ -28,10 +28,12 @@
"add_to_album": "Incluir en álbum",
"add_to_album_bottom_sheet_added": "Agregado 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_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",
@@ -118,18 +120,18 @@
"library_settings_description": "Administrar configuración biblioteca externa",
"library_tasks_description": "Buscar elementos nuevos o modificados en bibliotecas externas",
"library_watching_enable_description": "Vigilar las bibliotecas externas para detectar cambios en los archivos",
- "library_watching_settings": "Vigilancia de la biblioteca (EXPERIMENTAL)",
+ "library_watching_settings": "Vigilancia de la biblioteca [EXPERIMENTAL]",
"library_watching_settings_description": "Vigilar automaticamente en busca de archivos modificados",
"logging_enable_description": "Habilitar registro",
"logging_level_description": "Indica el nivel de registro a utilizar cuando está habilitado.",
"logging_settings": "Registro",
- "machine_learning_availability_checks": "Verificaciones de disponibilidad",
+ "machine_learning_availability_checks": "Comprobaciones de disponibilidad",
"machine_learning_availability_checks_description": "Automáticamente detectar y preferir servidores de machine learning disponibles",
- "machine_learning_availability_checks_enabled": "Habilitar verificaciones de disponibilidad",
- "machine_learning_availability_checks_interval": "Intervalo de verificación",
- "machine_learning_availability_checks_interval_description": "Intervalo en milisegundos entre las verificaciones de disponibilidad",
+ "machine_learning_availability_checks_enabled": "Habilitar comprobaciones de disponibilidad",
+ "machine_learning_availability_checks_interval": "Intervalo de comprobación",
+ "machine_learning_availability_checks_interval_description": "Intervalo en milisegundos entre las comprobaciones de disponibilidad",
"machine_learning_availability_checks_timeout": "Tiempo de espera de solicitud",
- "machine_learning_availability_checks_timeout_description": "Tiempo de espera en milisegundos para verificaciones de disponibilidad",
+ "machine_learning_availability_checks_timeout_description": "Tiempo de espera en milisegundos para comprobaciones de disponibilidad",
"machine_learning_clip_model": "Modelo CLIP (Contrastive Language-Image Pre-Training)",
"machine_learning_clip_model_description": "El nombre de un modelo CLIP listado aquí. Tendrás que relanzar el trabajo 'Búsqueda Inteligente' para todos los elementos al cambiar de modelo.",
"machine_learning_duplicate_detection": "Detección de duplicados",
@@ -152,6 +154,18 @@
"machine_learning_min_detection_score_description": "Puntuación de confianza mínima para que se detecte una cara de 0 a 1. Los valores más bajos detectarán más rostros pero pueden generar falsos positivos.",
"machine_learning_min_recognized_faces": "Rostros mínimos reconocidos",
"machine_learning_min_recognized_faces_description": "El número mínimo de rostros reconocidos para que se cree una persona. Aumentar esto permite que el reconocimiento facial sea más preciso a costa de aumentar la posibilidad de que no se asigne una cara a una persona.",
+ "machine_learning_ocr": "OCR",
+ "machine_learning_ocr_description": "Usa el aprendizaje automático para reconocer texto en imágenes",
+ "machine_learning_ocr_enabled": "Activar OCR",
+ "machine_learning_ocr_enabled_description": "Si está desactivado, las imágenes no se someterán al reconocimiento de texto.",
+ "machine_learning_ocr_max_resolution": "Resolución máxima",
+ "machine_learning_ocr_max_resolution_description": "Las vistas previas por encima de esta resolución se redimensionarán manteniendo la relación de aspecto. Los valores más altos son más precisos, pero tardan más en procesarse y consumen más memoria.",
+ "machine_learning_ocr_min_detection_score": "Puntuación mínima de detección",
+ "machine_learning_ocr_min_detection_score_description": "Puntuación mínima de confianza para que el texto sea detectado de 0 a 1. Los valores más bajos detectarán más texto, pero pueden producir falsos positivos.",
+ "machine_learning_ocr_min_recognition_score": "Puntuación mínima de reconocimiento",
+ "machine_learning_ocr_min_score_recognition_description": "Puntuación mínima de confianza para que el texto detectado sea reconocido de 0 a 1. Los valores más bajos reconocerán más texto, pero pueden producir falsos positivos.",
+ "machine_learning_ocr_model": "Modelo de OCR",
+ "machine_learning_ocr_model_description": "Los modelos del servidor son más precisos que los modelos para móviles móviles, pero tardan más en procesar y consumen más memoria.",
"machine_learning_settings": "Configuración de aprendizaje automático",
"machine_learning_settings_description": "Administrar funciones y configuraciones de aprendizaje automático",
"machine_learning_smart_search": "Busqueda inteligente",
@@ -200,7 +214,7 @@
"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",
- "note_apply_storage_label_previous_assets": "Nota: Para aplicar la etiqueta de almacenamiento a los elementos que ya se subieron, ejecuta la",
+ "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",
"notification_email_from_address_description": "Dirección de correo electrónico del remitente, por ejemplo: \"Immich Photo Server {label} é a Etiqueta de Almacenamento do usuario",
"system_settings": "Configuración do Sistema",
"tag_cleanup_job": "Limpeza de etiquetas",
- "template_email_available_tags": "Podes usar as seguintes variables no teu modelo: {tags}",
+ "template_email_available_tags": "Pode usar as seguintes variables no seu modelo: {tags}",
"template_email_if_empty": "Se o modelo está baleiro, usarase o correo electrónico predeterminado.",
"template_email_invite_album": "Modelo de Invitación a Álbum",
"template_email_preview": "Vista previa",
@@ -286,15 +297,15 @@
"template_email_update_album": "Modelo de Actualización de Álbum",
"template_email_welcome": "Modelo de correo electrónico de benvida",
"template_settings": "Modelos de Notificación",
- "template_settings_description": "Xestionar modelos personalizados para notificacións.",
+ "template_settings_description": "Xestionar modelos personalizados para notificacións",
"theme_custom_css_settings": "CSS Personalizado",
- "theme_custom_css_settings_description": "As Follas de Estilo en Cascada permiten personalizar o deseño de Immich.",
+ "theme_custom_css_settings_description": "As Follas de Estilo en Cascada (CSS) permiten personalizar o deseño de Immich.",
"theme_settings": "Configuración do Tema",
"theme_settings_description": "Xestionar a personalización da interface web de Immich",
"thumbnail_generation_job": "Xerar Miniaturas",
"thumbnail_generation_job_description": "Xerar miniaturas grandes, pequenas e borrosas para cada activo, así como miniaturas para cada persoa",
"transcoding_acceleration_api": "API de aceleración",
- "transcoding_acceleration_api_description": "A API que interactuará co teu dispositivo para acelerar a transcodificación. Esta configuración é de 'mellor esforzo': recurrirá á transcodificación por software en caso de fallo. VP9 pode funcionar ou non dependendo do teu hardware.",
+ "transcoding_acceleration_api_description": "A API que interactuará co seu dispositivo para acelerar a transcodificación. Esta configuración é de 'mellor esforzo': recurrirá á transcodificación por software en caso de fallo. VP9 pode funcionar ou non dependendo do seu hardware.",
"transcoding_acceleration_nvenc": "NVENC (require GPU NVIDIA)",
"transcoding_acceleration_qsv": "Quick Sync (require CPU Intel de 7ª xeración ou posterior)",
"transcoding_acceleration_rkmpp": "RKMPP (só en SOCs Rockchip)",
@@ -309,22 +320,22 @@
"transcoding_audio_codec": "Códec de audio",
"transcoding_audio_codec_description": "Opus é a opción de maior calidade, pero ten menor compatibilidade con dispositivos ou software antigos.",
"transcoding_bitrate_description": "Vídeos cun bitrate superior ao máximo ou que non estean nun formato aceptado",
- "transcoding_codecs_learn_more": "Para saber máis sobre a terminoloxía usada aquí, consulte a documentación de FFmpeg para {label} je korisnička oznaka za pohranu",
"system_settings": "Postavke Sustava",
"tag_cleanup_job": "Čišćenje oznaka",
@@ -292,7 +300,7 @@
"theme_settings": "Postavke tema",
"theme_settings_description": "Upravljajte prilagodbom Immich web sučelja",
"thumbnail_generation_job": "Generirajte sličice",
- "thumbnail_generation_job_description": "Generirajte velike, male i zamućene sličice za svaki materijal, kao i sličice za svaku osobu",
+ "thumbnail_generation_job_description": "Generirajte velike, male i zamućene sličice za svaku stavku, kao i sličice za svaku osobu",
"transcoding_acceleration_api": "API ubrzanja",
"transcoding_acceleration_api_description": "API koji će komunicirati s vašim uređajem radi ubrzanja transkodiranja. Ova postavka je 'najveći trud': vratit će se na softversko transkodiranje u slučaju kvara. VP9 može ili ne mora raditi ovisno o vašem hardveru.",
"transcoding_acceleration_nvenc": "NVENC (zahtjeva NVIDIA GPU)",
@@ -355,20 +363,20 @@
"transcoding_video_codec_description": "VP9 ima visoku učinkovitost i web-kompatibilnost, ali treba dulje za transkodiranje. HEVC ima sličnu izvedbu, ali ima slabiju web kompatibilnost. H.264 široko je kompatibilan i brzo se transkodira, ali proizvodi mnogo veće datoteke. AV1 je najučinkovitiji kodek, ali nema podršku na starijim uređajima.",
"trash_enabled_description": "Omogućite značajke Smeća",
"trash_number_of_days": "Broj dana",
- "trash_number_of_days_description": "Broj dana za držanje sredstava u smeću prije njihovog trajnog uklanjanja",
+ "trash_number_of_days_description": "Broj dana za čuvanje stavki u smeću prije njihovog trajnog uklanjanja",
"trash_settings": "Postavke Smeća",
"trash_settings_description": "Upravljanje postavkama smeća",
"unlink_all_oauth_accounts": "Odspoji sve OAuth račune",
"unlink_all_oauth_accounts_description": "Zapamtite da odspojite sve OAuth račune prije prelaska na novog pružatelja usluge.",
"unlink_all_oauth_accounts_prompt": "Jeste li sigurni da želite odspojiti sve OAuth račune? Ovo će resetirati OAuth ID za svakog korisnika i ne može se poništiti.",
"user_cleanup_job": "Čišćenje korisnika",
- "user_delete_delay": "Račun i sredstva korisnika {user} bit će zakazani za trajno brisanje za {delay, plural, one {# day} other {# days}}.",
+ "user_delete_delay": "Račun i stavke korisnika {user} bit će stavljeni u red čekanja trajnog brisanja za {delay, plural, one {# dan} other {# dana}}.",
"user_delete_delay_settings": "Brisanje odgode",
- "user_delete_delay_settings_description": "Broj dana nakon uklanjanja za trajno brisanje korisničkog računa i imovine. Posao brisanja korisnika pokreće se u ponoć kako bi se provjerili korisnici koji su spremni za brisanje. Promjene ove postavke bit će procijenjene pri sljedećem izvršavanju.",
- "user_delete_immediately": "Račun i sredstva korisnika {user} bit će stavljeni u red čekanja za trajno brisanje odmah.",
- "user_delete_immediately_checkbox": "Stavite korisnika i imovinu u red za trenutačno brisanje",
+ "user_delete_delay_settings_description": "Broj dana nakon uklanjanja za trajno brisanje korisničkog računa i stavki. Posao brisanja korisnika pokreće se u ponoć kako bi se provjerili korisnici koji su spremni za brisanje. Promjene ove postavke bit će procijenjene pri sljedećem izvršavanju.",
+ "user_delete_immediately": "Račun i stavke korisnika {user} bit će stavljeni u red čekanja za trajno brisanje odmah.",
+ "user_delete_immediately_checkbox": "Stavite korisnika i stavke u red čekanja za trenutno brisanje",
"user_details": "Detalji korisnika",
- "user_management": "Upravljanje Korisnicima",
+ "user_management": "Upravljanje korisnicima",
"user_password_has_been_reset": "Korisnička lozinka je poništena:",
"user_password_reset_description": "Molimo dostavite privremenu lozinku korisniku i obavijestite ga da će morati promijeniti lozinku pri sljedećoj prijavi.",
"user_restore_description": "Račun korisnika {user} bit će vraćen.",
@@ -390,13 +398,15 @@
"advanced_settings_enable_alternate_media_filter_subtitle": "Koristite ovu opciju za filtriranje medija tijekom sinkronizacije na temelju alternativnih kriterija. Pokušajte ovo samo ako imate problema s aplikacijom koja ne prepoznaje sve albume.",
"advanced_settings_enable_alternate_media_filter_title": "[EKSPERIMENTALNO] Koristite alternativni filter za sinkronizaciju albuma na uređaju",
"advanced_settings_log_level_title": "Razina zapisivanja: {level}",
- "advanced_settings_prefer_remote_subtitle": "Neki uređaji sporo učitavaju sličice s lokalnih resursa. Aktivirajte ovu postavku kako biste umjesto toga učitali slike s udaljenih izvora.",
+ "advanced_settings_prefer_remote_subtitle": "Neki uređaji sporo učitavaju sličice s lokalnih stavki. Aktivirajte ovu postavku kako biste umjesto toga učitali slike s udaljenih izvora.",
"advanced_settings_prefer_remote_title": "Preferiraj udaljene slike",
"advanced_settings_proxy_headers_subtitle": "Definirajte zaglavlja posrednika koja Immich treba slati sa svakim mrežnim zahtjevom.",
"advanced_settings_proxy_headers_title": "Proxy zaglavlja",
+ "advanced_settings_readonly_mode_subtitle": "Omogućuje read-only mod u kojem je moguće samo pregledavanje fotografija, radnje poput odabira više fotografija, dijeljenje, proiciranje i brisanje svih fotografija su onemogućene. Upali/ugasi read-only mod preko korisnickog avatara na glavnom ekranu.",
+ "advanced_settings_readonly_mode_title": "Read-only mod",
"advanced_settings_self_signed_ssl_subtitle": "Preskoči provjeru SSL certifikata za krajnju točku poslužitelja. Potrebno za samo-potpisane certifikate.",
"advanced_settings_self_signed_ssl_title": "Dopusti samo-potpisane SSL certifikate",
- "advanced_settings_sync_remote_deletions_subtitle": "Automatski izbriši ili obnovi resurs na ovom uređaju kada se ta radnja izvrši na webu",
+ "advanced_settings_sync_remote_deletions_subtitle": "Automatski izbriši ili obnovi stavku na ovom uređaju kada se ta radnja izvrši na webu",
"advanced_settings_sync_remote_deletions_title": "Sinkroniziraj udaljena brisanja [EKSPERIMENTALNO]",
"advanced_settings_tile_subtitle": "Postavke za napredne korisnike",
"advanced_settings_troubleshooting_subtitle": "Omogući dodatne značajke za rješavanje problema",
@@ -421,14 +431,15 @@
"album_remove_user_confirmation": "Jeste li sigurni da želite ukloniti {user}?",
"album_search_not_found": "Nema albuma koji odgovaraju vašem pretraživanju",
"album_share_no_users": "Čini se da ste podijelili ovaj album sa svim korisnicima ili nemate nijednog korisnika s kojim biste ga dijelili.",
+ "album_summary": "Sažetak albuma",
"album_updated": "Album ažuriran",
- "album_updated_setting_description": "Primite obavijest e-poštom kada dijeljeni album ima nova sredstva",
+ "album_updated_setting_description": "Primite obavijest e-poštom kada dijeljeni album ima nove stavke",
"album_user_left": "Napušten {album}",
"album_user_removed": "Uklonjen {user}",
"album_viewer_appbar_delete_confirm": "Jeste li sigurni da želite izbrisati ovaj album s vašeg računa?",
"album_viewer_appbar_share_err_delete": "Neuspješno brisanje albuma",
"album_viewer_appbar_share_err_leave": "Neuspješno napuštanje albuma",
- "album_viewer_appbar_share_err_remove": "Postoje problemi s uklanjanjem resursa iz albuma",
+ "album_viewer_appbar_share_err_remove": "Postoje problemi s uklanjanjem stavki iz albuma",
"album_viewer_appbar_share_err_title": "Neuspješno mijenjanje naslova albuma",
"album_viewer_appbar_share_leave": "Napusti album",
"album_viewer_appbar_share_to": "Podijeli s",
@@ -437,8 +448,8 @@
"albums": "Albumi",
"albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Albumi}}",
"albums_default_sort_order": "Zadani redoslijed sortiranja albuma",
- "albums_default_sort_order_description": "Početni redoslijed sortiranja elemenata prilikom izrade novih albuma.",
- "albums_feature_description": "Zbirke resursa koje se mogu dijeliti s drugim korisnicima.",
+ "albums_default_sort_order_description": "Početni redoslijed sortiranja stavki prilikom izrade novih albuma.",
+ "albums_feature_description": "Zbirke stavki koje se mogu dijeliti s drugim korisnicima.",
"albums_on_device_count": "Albumi na uređaju ({count})",
"all": "Sve",
"all_albums": "Svi albumi",
@@ -454,61 +465,66 @@
"api_key_description": "Ova će vrijednost biti prikazana samo jednom. Obavezno ju kopirajte prije zatvaranja prozora.",
"api_key_empty": "Naziv vašeg API ključa ne smije biti prazan",
"api_keys": "API Ključevi",
+ "app_architecture_variant": "Varijanta(Arhitektura)",
"app_bar_signout_dialog_content": "Jeste li sigurni da se želite odjaviti?",
"app_bar_signout_dialog_ok": "Da",
"app_bar_signout_dialog_title": "Odjavi se",
- "app_settings": "Postavke Aplikacije",
+ "app_download_links": "Poveznica za preuzimanje aplikacije",
+ "app_settings": "Postavke aplikacije",
+ "app_update_available": "Ažuriranje aplikacije je dostupno",
"appears_in": "Pojavljuje se u",
"archive": "Arhiva",
"archive_action_prompt": "{count} dodano u arhivu",
"archive_or_unarchive_photo": "Arhivirajte ili dearhivirajte fotografiju",
- "archive_page_no_archived_assets": "Nema arhiviranih resursa",
+ "archive_page_no_archived_assets": "Nema arhiviranih stavki",
"archive_page_title": "Arhiviraj ({count})",
"archive_size": "Veličina arhive",
"archive_size_description": "Konfigurirajte veličinu arhive za preuzimanja (u GiB)",
- "archived": "Ahrivirano",
+ "archived": "Arhivirano",
"archived_count": "{count, plural, other {Archived #}}",
"are_these_the_same_person": "Je li ovo ista osoba?",
"are_you_sure_to_do_this": "Jeste li sigurni da to želite učiniti?",
- "asset_action_delete_err_read_only": "Nije moguće izbrisati resurse samo za čitanje, preskačem",
- "asset_action_share_err_offline": "Nije moguće dohvatiti izvanmrežne resurse, preskačem",
+ "asset_action_delete_err_read_only": "Nije moguće izbrisati stavke samo za čitanje, preskakanje",
+ "asset_action_share_err_offline": "Nije moguće dohvatiti izvanmrežne stavke, preskakanje",
"asset_added_to_album": "Dodano u album",
"asset_adding_to_album": "Dodavanje u album…",
- "asset_description_updated": "Opis imovine je ažuriran",
- "asset_filename_is_offline": "Sredstvo {filename} je izvan mreže",
- "asset_has_unassigned_faces": "Materijal ima nedodijeljena lica",
- "asset_hashing": "Sažimanje…",
+ "asset_description_updated": "Opis stavke je ažuriran",
+ "asset_filename_is_offline": "Stavka {filename} je izvan mreže",
+ "asset_has_unassigned_faces": "Stavka ima nedodijeljena lica",
+ "asset_hashing": "Hashiranje…",
"asset_list_group_by_sub_title": "Grupiraj po",
"asset_list_layout_settings_dynamic_layout_title": "Dinamički raspored",
"asset_list_layout_settings_group_automatically": "Automatski",
- "asset_list_layout_settings_group_by": "Grupiraj resurse po",
+ "asset_list_layout_settings_group_by": "Grupiraj stavke po",
"asset_list_layout_settings_group_by_month_day": "Mjesec + dan",
"asset_list_layout_sub_title": "Raspored",
- "asset_list_settings_subtitle": "Postavke izgleda mreže fotografija",
- "asset_list_settings_title": "Mreža Fotografija",
- "asset_offline": "Sredstvo izvan mreže",
- "asset_offline_description": "Ovaj materijal je izvan mreže. Immich ne može pristupiti lokaciji datoteke. Provjerite je li sredstvo dostupno, a zatim ponovno skenirajte biblioteku.",
- "asset_restored_successfully": "Resurs uspješno obnovljen",
+ "asset_list_settings_subtitle": "Postavke izgleda Mreže fotografija",
+ "asset_list_settings_title": "Mreža fotografija",
+ "asset_offline": "Stavka izvan mreže",
+ "asset_offline_description": "Ova vanjska stavka nije pronađena na disku. Za pomoć se obratite Immich administratoru.",
+ "asset_restored_successfully": "Stavka uspješno obnovljena",
"asset_skipped": "Preskočeno",
"asset_skipped_in_trash": "U smeću",
- "asset_uploaded": "Učitano",
- "asset_uploading": "Šaljem…",
- "asset_viewer_settings_subtitle": "Upravljajte postavkama preglednika vaše galerije",
- "asset_viewer_settings_title": "Preglednik Resursa",
- "assets": "Sredstva",
- "assets_added_count": "Dodano {count, plural, one {# asset} other {# assets}}",
- "assets_added_to_album_count": "Dodano {count, plural, one {# asset} other {# assets}} u album",
- "assets_added_to_albums_count": "Dodano je {assetTotal} datoteka u {albumTotal} albuma",
- "assets_cannot_be_added_to_album_count": "{count, plural, one {Sadržaj se ne može dodati u album} other {{count} sadržaja se ne mogu dodati u album}}",
- "assets_cannot_be_added_to_albums": "{count, plural, one {Datoteka se ne može dodati ni u jedan album} few {Datoteke se ne mogu dodati ni u jedan album} other {Datoteka se ne može dodati ni u jedan album}}",
- "assets_count": "{count, plural, one {# asset} other {# assets}}",
- "assets_deleted_permanently": "{count} resurs(i) uspješno uklonjeni",
- "assets_deleted_permanently_from_server": "{count} resurs(i) trajno obrisan(i) sa Immich poslužitelja",
- "assets_downloaded_failed": "{count, plural, one {Preuzeta # datoteka – {error} datoteka nije uspjela} other {Preuzeto je # datoteka – {error} datoteke nisu uspjele}}",
- "assets_downloaded_successfully": "{count, plural, one {Uspješno preuzeta # datoteka} other {Uspješno preuzete # datoteke}}",
- "assets_moved_to_trash_count": "{count, plural, one {# asset} other {# asset}} premješteno u smeće",
- "assets_permanently_deleted_count": "Trajno izbrisano {count, plural, one {# asset} other {# assets}}",
- "assets_removed_count": "Uklonjeno {count, plural, one {# asset} other {# assets}}",
+ "asset_trashed": "Stavka premještena u smeće",
+ "asset_troubleshoot": "Rješavanje problema sa stavkom",
+ "asset_uploaded": "Preneseno",
+ "asset_uploading": "Prenošenje…",
+ "asset_viewer_settings_subtitle": "Upravljajte postavkama vašeg preglednika galerije",
+ "asset_viewer_settings_title": "Preglednik stavki",
+ "assets": "Stavke",
+ "assets_added_count": "{count, plural, one {Dodana # stavka} few {Dodane # stavke} other {Dodano # stavki}}",
+ "assets_added_to_album_count": "{count, plural, one {Dodana # stavka} few {Dodane # stavke} other {Dodano # stavki}} u album",
+ "assets_added_to_albums_count": "{assetTotal, plural, one {Dodana # stavka} other {Dodano # stavki}} u {albumTotal, plural, one {# album} other {# albuma}}",
+ "assets_cannot_be_added_to_album_count": "{count, plural, one {Stavka se ne može} other {Stavke se ne mogu}} dodati u album",
+ "assets_cannot_be_added_to_albums": "{count, plural, one {Stavka se ne može} few {Stavke se ne mogu} other {Stavki se ne može}} dodati ni u jedan album",
+ "assets_count": "{count, plural, one {# stavka} few {# stavke} other {# stavki}}",
+ "assets_deleted_permanently": "Trajno {count, plural, one {izbrisana # stavka} few {izbrisane # stavke} other {izbrisano # stavki}}",
+ "assets_deleted_permanently_from_server": "Trajno {count, plural, one {izbrisana # stavka} few {izbrisane # stavke} other {izbrisano # stavki}} s Immich servera",
+ "assets_downloaded_failed": "{count, plural, one {Preuzeta # datoteka – {error} datoteka nije uspjela} few {Preuzete # datoteke - {error} datoteke nisu uspjele} other {Preuzeto # datoteka – {error} datoteke nisu uspjele}}",
+ "assets_downloaded_successfully": "{count, plural, one {Uspješno preuzeta # datoteka} few {Uspješno preuzete # datoteke} other {Uspješno preueto # datoteka}}",
+ "assets_moved_to_trash_count": "{count, plural, one {# stavka premještena} few {# stavke premještene} other {# stavk premještenoi}} u smeće",
+ "assets_permanently_deleted_count": "Trajno {count, plural, one {izbrisana # stavka} few {izbrisane # stavke} other {izbrisano # stavki}}",
+ "assets_removed_count": "{count, plural, one {Uklonjena # stavka} few {Uklonjene # stavke} other {Uklonjeno # stavki}}",
"assets_removed_permanently_from_device": "{count} resurs(i) trajno uklonjen(i) s vašeg uređaja",
"assets_restore_confirmation": "Jeste li sigurni da želite obnoviti sve svoje resurse bačene u otpad? Ne možete poništiti ovu radnju! Imajte na umu da se bilo koji izvanmrežni resursi ne mogu obnoviti na ovaj način.",
"assets_restored_count": "Vraćeno {count, plural, one {# asset} other {# assets}}",
@@ -518,7 +534,7 @@
"assets_trashed_from_server": "{count} resurs(i) premješten(i) u smeće s Immich poslužitelja",
"assets_were_part_of_album_count": "{count, plural, one {Asset was} other {Assets were}} već dio albuma",
"assets_were_part_of_albums_count": "{count, plural, one {Datoteka je već bila dio albuma} few {Datoteke su već bile dio albuma} other {Datoteka je već bila dio albuma}}",
- "authorized_devices": "Ovlašteni Uređaji",
+ "authorized_devices": "Ovlašteni uređaji",
"automatic_endpoint_switching_subtitle": "Povežite se lokalno preko naznačene Wi-Fi mreže kada je dostupna i koristite alternativne veze na drugim lokacijama",
"automatic_endpoint_switching_title": "Automatsko prebacivanje URL-a",
"autoplay_slideshow": "Automatsko prikazivanje slajdova",
@@ -680,7 +696,6 @@
"comments_and_likes": "Komentari i lajkovi",
"comments_are_disabled": "Komentari onemogućeni",
"common_create_new_album": "Kreiraj novi album",
- "common_server_error": "Provjerite svoju mrežnu vezu, osigurajte da je poslužitelj dostupan i da su verzije aplikacije/poslužitelja kompatibilne.",
"completed": "Dovršeno",
"confirm": "Potvrdi",
"confirm_admin_password": "Potvrdite lozinku administratora",
@@ -861,7 +876,6 @@
"edit_tag": "Uredi oznaku",
"edit_title": "Uredi Naslov",
"edit_user": "Uredi korisnika",
- "edited": "Uređeno",
"editor": "Urednik",
"editor_close_without_save_prompt": "Promjene neće biti spremljene",
"editor_close_without_save_title": "Zatvoriti uređivač?",
@@ -1034,7 +1048,7 @@
"export_database_description": "Izvezi SQLite bazu podataka",
"extension": "Proširenje (Extension)",
"external": "Vanjski",
- "external_libraries": "Vanjske Biblioteke",
+ "external_libraries": "Vanjske biblioteke",
"external_network": "Vanjska mreža",
"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",
@@ -1048,7 +1062,7 @@
"favorites": "Omiljene",
"favorites_page_no_favorites": "Nema pronađenih omiljenih stavki",
"feature_photo_updated": "Istaknuta fotografija ažurirana",
- "features": "Značajke (Features)",
+ "features": "Značajke",
"features_setting_description": "Upravljajte značajkama aplikacije",
"file_name": "Naziv datoteke",
"file_name_or_extension": "Naziv ili ekstenzija datoteke",
@@ -1092,7 +1106,6 @@
"header_settings_field_validator_msg": "Vrijednost ne može biti prazna",
"header_settings_header_name_input": "Naziv zaglavlja",
"header_settings_header_value_input": "Vrijednost zaglavlja",
- "headers_settings_tile_subtitle": "Definirajte proxy zaglavlja koja aplikacija treba slati sa svakim mrežnim zahtjevom",
"headers_settings_tile_title": "Prilagođena proxy zaglavlja",
"hi_user": "Bok {name} ({email})",
"hide_all_people": "Sakrij sve ljude",
@@ -1220,7 +1233,7 @@
"location_picker_longitude_error": "Unesite valjanu geografsku dužinu",
"location_picker_longitude_hint": "Unesite ovdje svoju geografsku dužinu",
"lock": "Zaključaj",
- "locked_folder": "Zaključana Mapa",
+ "locked_folder": "Zaključana mapa",
"log_out": "Odjavi se",
"log_out_all_devices": "Odjava sa svih uređaja",
"logged_in_as": "Prijavljeni kao {user}",
@@ -1500,12 +1513,8 @@
"privacy": "Privatnost",
"profile": "Profil",
"profile_drawer_app_logs": "Zapisnici",
- "profile_drawer_client_out_of_date_major": "Mobilna aplikacija je zastarjela. Ažurirajte na najnoviju glavnu verziju.",
- "profile_drawer_client_out_of_date_minor": "Mobilna aplikacija je zastarjela. Ažurirajte na najnoviju manju verziju.",
"profile_drawer_client_server_up_to_date": "Klijent i poslužitelj su ažurirani",
"profile_drawer_github": "GitHub",
- "profile_drawer_server_out_of_date_major": "Poslužitelj je zastario. Ažurirajte na najnoviju glavnu verziju.",
- "profile_drawer_server_out_of_date_minor": "Poslužitelj je zastario. Ažurirajte na najnoviju manju verziju.",
"profile_image_of_user": "Profilna slika korisnika {user}",
"profile_picture_set": "Profilna slika postavljena.",
"public_album": "Javni album",
@@ -1900,6 +1909,8 @@
"sync_albums_manual_subtitle": "Sinkroniziraj sve prenesene videozapise i fotografije u odabrane albume za sigurnosnu kopiju",
"sync_local": "Sinkroniziraj lokalno",
"sync_remote": "Sinkroniziraj udaljeno",
+ "sync_status": "Status sinkronizacije",
+ "sync_status_subtitle": "Pregledajte i upravljajte sistemom sinkronizacije",
"sync_upload_album_setting_subtitle": "Kreiraj i prenesi svoje fotografije i videozapise u odabrane albume na Immichu",
"tag": "Oznaka",
"tag_assets": "Označi stavke",
diff --git a/i18n/hu.json b/i18n/hu.json
index 131df91a79..e67ad73041 100644
--- a/i18n/hu.json
+++ b/i18n/hu.json
@@ -28,10 +28,12 @@
"add_to_album": "Felvétel albumba",
"add_to_album_bottom_sheet_added": "Hozzáadva a(z) \"{album}\" albumhoz",
"add_to_album_bottom_sheet_already_exists": "Már benne van a(z) \"{album}\" albumban",
+ "add_to_album_bottom_sheet_some_local_assets": "Néhány helyi elem nem adható hozzá az albumhoz",
"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_shared_album": "Felvétel megosztott albumba",
+ "add_upload_to_stack": "Feltöltés hozzáadása csoporthoz",
"add_url": "URL hozzáadása",
"added_to_archive": "Hozzáadva az archívumhoz",
"added_to_favorites": "Hozzáadva a kedvencekhez",
@@ -118,7 +120,7 @@
"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_watching_enable_description": "Külső képtár változásainak figyelése",
- "library_watching_settings": "Képtár figyelése (KÍSÉRLETI)",
+ "library_watching_settings": "Könyvtár figyelése [KÍSÉRLETI]",
"library_watching_settings_description": "Megváltozott fájlok automatikus észlelése",
"logging_enable_description": "Naplózás engedélyezése",
"logging_level_description": "Ha be van kapcsolva, milyen részletességű legyen a naplózás.",
@@ -148,10 +150,22 @@
"machine_learning_max_detection_distance_description": "Két kép közötti maximális távolság, amely esetében még duplikációnak tekintendők (0.001 és 0.1 közötti érték). Minél magasabb az érték, annál több lesz a megtalált duplikáció, de a hamis találatok esélye is egyre nagyobb.",
"machine_learning_max_recognition_distance": "Maximum felismerési távolság",
"machine_learning_max_recognition_distance_description": "Két arc közötti maximális távolság, amely alapján ugyanazon személynek tekinthetők, 0 és 2 között. Ennek csökkentése megakadályozhatja, hogy két különböző személyt ugyanannak a személynek jelöljünk, míg a növelése megakadályozhatja, hogy ugyanazt a személyt két különböző személyként jelöljük. Vedd figyelembe, hogy könnyebb két személyt összevonni, mint egy személyt kettéválasztani, ezért lehetőség szerint inkább alacsonyabb küszöbértéket válassz.",
- "machine_learning_min_detection_score": "Minimum keresési pontszám",
+ "machine_learning_min_detection_score": "Minimális észlelési érték",
"machine_learning_min_detection_score_description": "Az arcok észleléséhez szükséges minimális megbízhatósági pontszám 0 és 1 között. Minél alacsonyabb az érték, annál több lesz a megtalált arc, de a hamis találatok esélye is egyre nagyobb.",
"machine_learning_min_recognized_faces": "Minimum felismert arc",
"machine_learning_min_recognized_faces_description": "Egy személy létrehozásához szükséges minimálisan felismert arcok száma. Ennek növelésével a arcfelismerés pontosabbá válik, azonban növeli annak az esélyét, hogy egy arc nem rendelődik hozzá egy személyhez.",
+ "machine_learning_ocr": "OCR (Optikai karakterfelismerés)",
+ "machine_learning_ocr_description": "Gépi tanulás használata a képeken megjelenő szövegek felismerésére",
+ "machine_learning_ocr_enabled": "OCR engedélyezése",
+ "machine_learning_ocr_enabled_description": "Kikapcsolt állapotban a képeken nem történik szövegfelismerés.",
+ "machine_learning_ocr_max_resolution": "Maximális felbontás",
+ "machine_learning_ocr_max_resolution_description": "Az ennél nagyobb felbontású előnézetek átméretezésre kerülnek a képarány megtartásával. A magasabb értékeknél az előnézetek pontosabbak, de ez hosszabb feldolgozási időt és több memóriát igényel.",
+ "machine_learning_ocr_min_detection_score": "Minimális észlelési érték",
+ "machine_learning_ocr_min_detection_score_description": "A szövegfelismerés minimális bizalmi szintje 0 és 1 között. Az alacsonyabb érték több szöveget észlelhet, de növeli a téves találatok esélyét.",
+ "machine_learning_ocr_min_recognition_score": "Minimális felismerési érték",
+ "machine_learning_ocr_min_score_recognition_description": "A szövegfelismerés minimális bizalmi szintje 0 és 1 között. Az alacsonyabb értékek több szöveget ismerhetnek fel, de növelhetik a téves találatok számát.",
+ "machine_learning_ocr_model": "Szövegfelismerő modell (OCR)",
+ "machine_learning_ocr_model_description": "A szervermodellek pontosabbak, mint a mobilmodellek, de hosszabb feldolgozási időt és több memóriát igényelnek.",
"machine_learning_settings": "Gépi Tanulási Beállítások",
"machine_learning_settings_description": "Gépi tanulási funkciók és beállítások kezelése",
"machine_learning_smart_search": "Okos Keresés",
@@ -175,7 +189,7 @@
"map_settings_description": "Térkép beállítások kezelése",
"map_style_description": "Egy style.json térképtémára mutató URL cím",
"memory_cleanup_job": "Memória takarítás",
- "memory_generate_job": "Emlék generálása",
+ "memory_generate_job": "Emlékek generálása",
"metadata_extraction_job": "Metaadatok kinyerése",
"metadata_extraction_job_description": "Metaadat információk (pl. GPS, arcok és felbontás) kinyerése minden elemből",
"metadata_faces_import_setting": "Arc importálás engedélyezése",
@@ -209,6 +223,8 @@
"notification_email_ignore_certificate_errors_description": "TLS tanúsítvány érvényességi hibák figyelmen kívül hagyása (nem ajánlott)",
"notification_email_password_description": "Az email szerverrel való hitelesítéshez használt jelszó",
"notification_email_port_description": "Email szerver portja (pl. 25, 465 vagy 587)",
+ "notification_email_secure": "SMTPS",
+ "notification_email_secure_description": "SMTPS használata (SMTP TLS-en keresztül)",
"notification_email_sent_test_email_button": "Teszt email küldése és mentés",
"notification_email_setting_description": "Email értesítés küldés beállításai",
"notification_email_test_email": "Teszt email küldése",
@@ -241,6 +257,7 @@
"oauth_storage_quota_default_description": "Alapértelmezett tárhely kvóta GiB-ban, amennyiben a felhasználó nem jelezte az igényét.",
"oauth_timeout": "Kérés időkorlátja",
"oauth_timeout_description": "Kérések időkorlátja milliszekundumban",
+ "ocr_job_description": "Gépi tanulás használata a képeken lévő szövegek felismerésére",
"password_enable_description": "Bejelentkezés emaillel és jelszóval",
"password_settings": "Jelszavas Bejelentkezés",
"password_settings_description": "Jelszavas bejelentkezés beállítások kezelése",
@@ -331,7 +348,7 @@
"transcoding_max_b_frames": "B-képkockák maximum száma",
"transcoding_max_b_frames_description": "Nagyobb értékek megnövelik a tömörítés hatékonyságát, de lelassítják a kódolást. Nem minden hardvereszköz támogatja. A 0 érték kikapcsolja a B-képkockákat, míg -1 esetén a szoftver magának választ értéket.",
"transcoding_max_bitrate": "Maximum bitráta",
- "transcoding_max_bitrate_description": "Maximum bitráta beállítása konzisztensebb fájlméretet eredményez egy kevés minőségi romlás árán. 720p esetén jellemző érték lehet 2600 kbit/s a VP9 vagy HEVC kódoláshoz, 4500 kbit/s a H.264 kódoláshoz. A 0 érték esetén nincs maximum bitráta.",
+ "transcoding_max_bitrate_description": "Maximum bitráta beállítása konzisztensebb fájlméretet eredményez egy kevés minőségi romlás árán. 720p esetén jellemző érték lehet 2600 kbit/s a VP9 vagy HEVC kódoláshoz, 4500 kbit/s a H.264 kódoláshoz. A 0 érték esetén nincs maximum bitráta. Ha nincs megadva mértékegység, alapértelmezetten „k” (kbit/s) értendő - tehát az 5000, 5000k és az 5M (Mbit/s) azonos beállítások.",
"transcoding_max_keyframe_interval": "Maximum kulcskocka intervallum",
"transcoding_max_keyframe_interval_description": "Beállítja a kulcskockák közötti legnagyobb lehetséges távolságot. Alacsony érték csökkenti a tömörítési hatékonyságot, de lejátszás közben az előre- és hátratekerés gyorsabb, valamint javíthatja a gyorsan mozgó jelenetek képminőségét. 0 esetén a szoftver magának állítja be az értéket.",
"transcoding_optimal_description": "A célfelbontásnál nagyobb vagy a nem elfogadott formátumú videókat",
@@ -349,7 +366,7 @@
"transcoding_target_resolution": "Célfelbontás",
"transcoding_target_resolution_description": "A magasabb felbontás jobb minőségben őrzi meg a részleteket, de tovább tart létrehozni, nagyobb fájlmérethez vezet és belassíthatja az alkalmazást.",
"transcoding_temporal_aq": "Időbeli (Temporal) AQ",
- "transcoding_temporal_aq_description": "Csak NVENC esetén. Növeli a nagyon részletes, keveset mozgó videóanyag minőségét. Nem minden régi eszköz támogatja.",
+ "transcoding_temporal_aq_description": "Csak NVENC esetén. Az Időbeli Adaptív Kvantálás növeli a nagyon részletes, keveset mozgó videóanyag minőségét. Nem minden régi eszköz támogatja.",
"transcoding_threads": "Folyamatok száma",
"transcoding_threads_description": "Magas értékek esetén gyorsabban kódol, viszont kevesebb erőforrást hagy a szerver többi folyamatának. Nem ajánlott a CPU magjainak számánál nagyobb érték beállítása. A 0 érték maximalizálja a processzor kihasználását.",
"transcoding_tone_mapping": "Tónusleképezés (tone-mapping)",
@@ -400,11 +417,11 @@
"advanced_settings_prefer_remote_subtitle": "Néhány eszköz fájdalmasan lassan tölti be az eszközön lévő indexképeket. Ez a beállítás inkább a távoli képeket (a szerverről) tölti be helyettük.",
"advanced_settings_prefer_remote_title": "Távoli képek előnyben részesítése",
"advanced_settings_proxy_headers_subtitle": "Add meg azokat a proxy fejléceket, amiket az app elküldjön minden hálózati kérésnél",
- "advanced_settings_proxy_headers_title": "Proxy Fejlécek",
+ "advanced_settings_proxy_headers_title": "Egyedi Proxy Fejlécek [KÍSÉRLETI]",
"advanced_settings_readonly_mode_subtitle": "Bekapcsol egy írásvédett módot ahol csak fotókat nézni lehetséges, egyebek, mint több kép kiválasztása, megosztás, kivetítés és törlés ki vannak kapcsolva. Ki/bekapcsolható a felhasználó ikonjáról a fő képernyőn",
- "advanced_settings_readonly_mode_title": "Írásvédett Mód",
+ "advanced_settings_readonly_mode_title": "Írásvédett mód",
"advanced_settings_self_signed_ssl_subtitle": "Nem ellenőrzi a szerver SSL tanúsítványát. Önaláírt tanúsítvány esetén szükséges beállítás.",
- "advanced_settings_self_signed_ssl_title": "Önaláírt SSL tanúsítványok engedélyezése",
+ "advanced_settings_self_signed_ssl_title": "Önaláírt SSL tanúsítványok engedélyezése [KÍSÉRLETI]",
"advanced_settings_sync_remote_deletions_subtitle": "Automatikusan törölni vagy visszaállítani egy elemet ezen az eszközön, ha az adott műveletet a weben hajtották végre",
"advanced_settings_sync_remote_deletions_title": "Távoli törlések szinkronizálása [KÍSÉRLETI FUNKCIÓ]",
"advanced_settings_tile_subtitle": "Haladó felhasználói beállítások",
@@ -464,10 +481,14 @@
"api_key_description": "Ez csak most az egyszer jelenik meg. Az ablak bezárása előtt feltétlenül másold.",
"api_key_empty": "Az API Kulcs név nem kéne, hogy üres legyen",
"api_keys": "API Kulcsok",
+ "app_architecture_variant": "Variant (Architektúra)",
"app_bar_signout_dialog_content": "Biztos, hogy ki szeretnél jelentkezni?",
"app_bar_signout_dialog_ok": "Igen",
"app_bar_signout_dialog_title": "Kijelentkezés",
+ "app_download_links": "App letöltési linkek",
"app_settings": "Alkalmazás Beállítások",
+ "app_stores": "App Store-ok",
+ "app_update_available": "Egy új frissítés érhető el",
"appears_in": "Itt szerepel",
"apply_count": "Alkalmaz ({count, number})",
"archive": "Archívum",
@@ -548,8 +569,10 @@
"backup_album_selection_page_select_albums": "Válassz albumokat",
"backup_album_selection_page_selection_info": "Összegzés",
"backup_album_selection_page_total_assets": "Összes egyedi elem",
+ "backup_albums_sync": "Backup albumok szinkronizálása",
"backup_all": "Összes",
"backup_background_service_backup_failed_message": "Az elemek mentése sikertelen. Újrapróbálkozás…",
+ "backup_background_service_complete_notification": "Az adatok mentése befejeződött",
"backup_background_service_connection_failed_message": "A szerverhez csatlakozás sikertelen. Újrapróbálkozás…",
"backup_background_service_current_upload_notification": "Feltöltés {filename}",
"backup_background_service_default_notification": "Új elemek ellenőrzése…",
@@ -597,6 +620,7 @@
"backup_controller_page_turn_on": "Előtérben mentés bekapcsolása",
"backup_controller_page_uploading_file_info": "Fájl információk feltöltése",
"backup_err_only_album": "Az utolsó albumot nem tudod törölni",
+ "backup_error_sync_failed": "A szinkronizálás nem sikerült. A biztonsági mentés nem elkészíthető.",
"backup_info_card_assets": "elemek",
"backup_manual_cancelled": "Megszakítva",
"backup_manual_in_progress": "Feltöltés már folyamatban. Próbáld meg később",
@@ -658,6 +682,8 @@
"change_password_description": "Most jelentkezel be a rendszerbe első alkalommal, vagy valaki jelszó-változtatást kezdeményezett. Kérjük, add meg az új jelszót.",
"change_password_form_confirm_password": "Jelszó Megerősítése",
"change_password_form_description": "Szia {name}!\n\nMost jelentkezel be először a rendszerbe vagy más okból szükséges a jelszavad meváltoztatása. Kérjük, add meg új jelszavad.",
+ "change_password_form_log_out": "Kijelentkezés az összes többi eszközről",
+ "change_password_form_log_out_description": "Javasolt kijelentkezni az összes többi eszközről",
"change_password_form_new_password": "Új Jelszó",
"change_password_form_password_mismatch": "A beírt jelszavak nem egyeznek",
"change_password_form_reenter_new_password": "Jelszó (Még Egyszer)",
@@ -684,8 +710,8 @@
"client_cert_import_success_msg": "Kliens tanúsítvány importálva",
"client_cert_invalid_msg": "Érvénytelen tanúsítvány fájl vagy hibás jelszó",
"client_cert_remove_msg": "Kliens tanúsítvány eltávolítva",
- "client_cert_subtitle": "Csak a PKCS12 (.p12, .pfx) formátum támogatott. Tanúsítvány Importálása/Eltávolítása csak a bejelentkezés előtt lehetséges",
- "client_cert_title": "SSL Kliens Tanúsítvány",
+ "client_cert_subtitle": "Csak a PKCS12 (.p12, .pfx) formátum támogatott. Tanúsítvány importálása/eltávolítása csak a bejelentkezés előtt lehetséges",
+ "client_cert_title": "SSL kliens tanúsítvány [KÍSÉRLETI]",
"clockwise": "Óramutató járásával megegyező irány",
"close": "Bezárás",
"collapse": "Összecsuk",
@@ -697,7 +723,6 @@
"comments_and_likes": "Megjegyzések és reakciók",
"comments_are_disabled": "A megjegyzések le vannak tiltva",
"common_create_new_album": "Új album létrehozása",
- "common_server_error": "Kérjük, ellenőrizd a hálózati kapcsolatot, gondoskodj róla, hogy a szerver elérhető legyen, valamint az alkalmazás és a szerver kompatibilis verziójú legyen.",
"completed": "Kész",
"confirm": "Jóváhagy",
"confirm_admin_password": "Admin Jelszó Újból",
@@ -736,6 +761,7 @@
"create": "Létrehoz",
"create_album": "Album létrehozása",
"create_album_page_untitled": "Névtelen",
+ "create_api_key": "API kulcs létrehozása",
"create_library": "Képtár Létrehozása",
"create_link": "Link létrehozása",
"create_link_to_share": "Megosztási link létrehozása",
@@ -765,6 +791,7 @@
"daily_title_text_date_year": "yyyy MMM dd (E)",
"dark": "Sötét",
"dark_theme": "Sötét téma kapcsolása",
+ "date": "Dátum",
"date_after": "Dátumtól",
"date_and_time": "Dátum és Idő",
"date_before": "Dátumig",
@@ -879,7 +906,6 @@
"edit_tag": "Címke módosítása",
"edit_title": "Cím Módosítása",
"edit_user": "Felhasználó módosítása",
- "edited": "Módosítva",
"editor": "Szerkesztő",
"editor_close_without_save_prompt": "A változtatások nem lesznek elmentve",
"editor_close_without_save_title": "Szerkesztő bezárása?",
@@ -1035,6 +1061,7 @@
"exif_bottom_sheet_description_error": "Hiba a leírás frissítésekor",
"exif_bottom_sheet_details": "RÉSZLETEK",
"exif_bottom_sheet_location": "HELY",
+ "exif_bottom_sheet_no_description": "Nincs leírás",
"exif_bottom_sheet_people": "EMBEREK",
"exif_bottom_sheet_person_add_person": "Elnevez",
"exit_slideshow": "Kilépés a Diavetítésből",
@@ -1073,6 +1100,7 @@
"features_setting_description": "Az alkalmazás jellemzőinek kezelése",
"file_name": "Fájlnév",
"file_name_or_extension": "Fájlnév vagy kiterjesztés",
+ "file_size": "Fájlméret",
"filename": "Fájlnév",
"filetype": "Fájltípus",
"filter": "Szűrő",
@@ -1112,11 +1140,10 @@
"hash_asset": "Elem hash-elése",
"hashed_assets": "Hash-elt elemek",
"hashing": "Hash-elés folyamatban",
- "header_settings_add_header_tip": "Fejléc Hozzáadása",
+ "header_settings_add_header_tip": "Fejléc hozzáadása",
"header_settings_field_validator_msg": "Az érték nem lehet üres",
"header_settings_header_name_input": "Fejléc neve",
"header_settings_header_value_input": "Fejléc értéke",
- "headers_settings_tile_subtitle": "Add meg azokat a proxy fejléceket, amiket az app elküldjön minden hálózati kérésnél",
"headers_settings_tile_title": "Egyéni proxy fejlécek",
"hi_user": "Szia {name} ({email})",
"hide_all_people": "Minden személy elrejtése",
@@ -1237,6 +1264,7 @@
"local_media_summary": "Helyi média összegzés",
"local_network": "Helyi hálózat",
"local_network_sheet_info": "Az alkalmazés ezen az URL címen fogja elérni a szervert, ha a megadott WiFi hálózathoz van csatlankozva",
+ "location": "Lokáció",
"location_permission": "Helymeghatározási engedély",
"location_permission_content": "A Hálózatok automatikus váltásához az Immich-nek szüksége van a pontos helymeghatározásra, hogy az alkalmazás le tudja kérni a Wi-Fi hálózat nevét",
"location_picker_choose_on_map": "Válassz a térképen",
@@ -1341,6 +1369,8 @@
"minute": "Perc",
"minutes": "Percek",
"missing": "Hiányzók",
+ "mobile_app": "Mobilapplikáció",
+ "mobile_app_download_onboarding_note": "Töltse le a kiegészítő mobilalkalmazást az alábbi opciók segítségével",
"model": "Modell",
"month": "Hónap",
"monthly_title_text_date_format": "y MMMM",
@@ -1359,6 +1389,8 @@
"my_albums": "Saját albumaim",
"name": "Név",
"name_or_nickname": "Név vagy becenév",
+ "navigate": "Navigáció",
+ "navigate_to_time": "Navigálás adott időponthoz",
"network_requirement_photos_upload": "Mobil adatforgalmat használjon a fényképek biztonsági mentéséhez",
"network_requirement_videos_upload": "Mobil adatforgalmat használjon a videók biztonsági mentéséhez",
"network_requirements": "Hálózati követelmények",
@@ -1368,6 +1400,7 @@
"never": "Soha",
"new_album": "Új Album",
"new_api_key": "Új API Kulcs",
+ "new_date_range": "Új dátumtartomány",
"new_password": "Új jelszó",
"new_person": "Új személy",
"new_pin_code": "Új PIN kód",
@@ -1386,20 +1419,25 @@
"no_assets_message": "KATTINTS AZ ELSŐ FÉNYKÉP FELTÖLTÉSÉHEZ",
"no_assets_to_show": "Nincs megjeleníthető elem",
"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_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_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",
"no_people_found": "Nem található személy",
"no_places": "Nincsenek helyek",
+ "no_remote_assets_found": "Nem találhatók távoli eszközök ezzel az ellenőrzőösszeggel",
"no_results": "Nincs találat",
"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_available": "N/A",
"not_in_any_album": "Nincs albumban",
"not_selected": "Nincs kiválasztva",
"note_apply_storage_label_to_previously_uploaded assets": "Megjegyzés: a korábban feltöltött elemek Tárhely Címkézéséhez futtasd a(z)",
@@ -1413,6 +1451,9 @@
"notifications": "Értesítések",
"notifications_setting_description": "Értesítések kezelése",
"oauth": "OAuth",
+ "obtainium_configurator": "Obtainium Konfigurátor",
+ "obtainium_configurator_instructions": "Az Obtainium segítségével közvetlenül az Immich GitHub-os kiadásából telepítheted és frissítheted az Android-alkalmazást. Hozz létre egy API-kulcsot és válassz egy változatot az Obtainium konfigurációs hivatkozás elkészítéséhez",
+ "ocr": "OCR",
"official_immich_resources": "Hivatalos Immich Források",
"offline": "Nem elérhető (offline)",
"offset": "Eltolás",
@@ -1434,6 +1475,8 @@
"open_the_search_filters": "Keresési szűrők megnyitása",
"options": "Beállítások",
"or": "vagy",
+ "organize_into_albums": "Albumokba rendezés",
+ "organize_into_albums_description": "Meglévő fotók albumokba helyezése, a jelenlegi szinkronizációs beállítások alapján",
"organize_your_library": "Rendszerezd a képtáradat",
"original": "eredeti",
"other": "Egyéb",
@@ -1515,10 +1558,14 @@
"play_memories": "Emlékek lejátszása",
"play_motion_photo": "Mozgókép lejátszása",
"play_or_pause_video": "Videó elindítása vagy megállítása",
+ "play_original_video": "Eredeti videó lejátszása",
+ "play_original_video_setting_description": "A rendszer az eredeti videók lejátszását részesíti előnyben a transzkódolt verziókkal szemben. Ha az eredeti fájl nem kompatibilis, előfordulhat, hogy nem játszható le megfelelően.",
+ "play_transcoded_video": "Transzkódolt videó lejátszása",
"please_auth_to_access": "Kérlek jelentkezz be a hozzáféréshez",
"port": "Port",
"preferences_settings_subtitle": "Alkalmazásbeállítások kezelése",
"preferences_settings_title": "Beállítások",
+ "preparing": "Előkészítés",
"preset": "Sablon",
"preview": "Előnézet",
"previous": "Előző",
@@ -1531,12 +1578,9 @@
"privacy": "Magánszféra",
"profile": "Profil",
"profile_drawer_app_logs": "Naplók",
- "profile_drawer_client_out_of_date_major": "A mobilalkalmazás elavult. Kérjük, frissítsd a legfrisebb főverzióra.",
- "profile_drawer_client_out_of_date_minor": "A mobilalkalmazás elavult. Kérjük, frissítsd a legfrisebb alverzióra.",
"profile_drawer_client_server_up_to_date": "A Kliens és a Szerver is naprakész",
"profile_drawer_github": "GitHub",
- "profile_drawer_server_out_of_date_major": "A szerver elavult. Kérjük, frissítsd a legfrisebb főverzióra.",
- "profile_drawer_server_out_of_date_minor": "A szerver elavult. Kérjük, frissítsd a legfrisebb alverzióra.",
+ "profile_drawer_readonly_mode": "Csak olvasható mód engedélyezve. A kilépéshez hosszan nyomja meg a felhasználói avatar ikont.",
"profile_image_of_user": "{user} profilképe",
"profile_picture_set": "Profilkép beállítva.",
"public_album": "Nyilvános album",
@@ -1573,6 +1617,7 @@
"purchase_server_description_2": "Támogató státusz",
"purchase_server_title": "Szerver",
"purchase_settings_server_activated": "A szerver termékkulcsot az admin kezeli",
+ "query_asset_id": "Lekérdezési eszköz azonosítója",
"queue_status": "Feldolgozva {count}/{total}",
"rating": "Értékelés csillagokkal",
"rating_clear": "Értékelés törlése",
@@ -1580,6 +1625,9 @@
"rating_description": "Exif értékelés megjelenítése az infópanelen",
"reaction_options": "Reakció lehetőségek",
"read_changelog": "Változásnapló Elolvasása",
+ "readonly_mode_disabled": "Csak olvasható mód kikapcsolva",
+ "readonly_mode_enabled": "Csak olvasható mód bekapcsolva",
+ "ready_for_upload": "Készen áll a feltöltésre",
"reassign": "Hozzárendel",
"reassigned_assets_to_existing_person": "{count, plural, other {# elem}} hozzárendelve{name, select, null { egy létező személyhez} other {: {name}}}",
"reassigned_assets_to_new_person": "{count, plural, other {# elem}} hozzárendelve egy új személyhez",
@@ -1604,6 +1652,7 @@
"regenerating_thumbnails": "Bélyegképek újragenerálása folyamatban",
"remote": "Távoli",
"remote_assets": "Távoli Elemek",
+ "remote_media_summary": "Távoli médiaösszefoglaló",
"remove": "Eltávolítás",
"remove_assets_album_confirmation": "Biztosan el szeretnél távolítani {count, plural, one {# elemet} other {# elemet}} az albumból?",
"remove_assets_shared_link_confirmation": "Biztosan el szeretnél távolítani {count, plural, one {# elemet} other {# elemet}} ebből a megosztott linkből?",
@@ -1648,6 +1697,7 @@
"reset_sqlite_confirmation": "Biztosan vissza szeretnéd állítani az SQLite adatbázist? Az adatok újraszinkronizálásához ki kell jelentkezed, majd újra be kell lépned",
"reset_sqlite_success": "SQLite adatbázis sikeresen visszaállítva",
"reset_to_default": "Visszaállítás alapállapotba",
+ "resolution": "Felbontás",
"resolve_duplicates": "Duplikátumok feloldása",
"resolved_all_duplicates": "Minden duplikátum feloldása",
"restore": "Visszaállít",
@@ -1656,6 +1706,7 @@
"restore_user": "Felhasználó visszaállítása",
"restored_asset": "Visszaállított elem",
"resume": "Folytatás",
+ "resume_paused_jobs": "Folytatás {count, plural, one {# paused job} other {# paused jobs}}",
"retry_upload": "Feltöltés újrapróbálása",
"review_duplicates": "Duplikátumok áttekintése",
"review_large_files": "Nagy fájlok áttekintése",
@@ -1681,6 +1732,9 @@
"search_by_description_example": "Túrázós nap Szapában",
"search_by_filename": "Keresés fájlnév vagy kiterjesztés alapján",
"search_by_filename_example": "például IMG_1234.JPG vagy PNG",
+ "search_by_ocr": "Keresés szövegfelismeréssel (OCR)",
+ "search_by_ocr_example": "Latte",
+ "search_camera_lens_model": "Keresés objektívmodell alapján...",
"search_camera_make": "Kameragyártó keresése...",
"search_camera_model": "Kameramodell keresése...",
"search_city": "Város keresése...",
@@ -1697,6 +1751,7 @@
"search_filter_location_title": "Válassz helyet",
"search_filter_media_type": "Média Típus",
"search_filter_media_type_title": "Válassz média típust",
+ "search_filter_ocr": "Keresés szövegfelismeréssel (OCR)",
"search_filter_people_title": "Válassz embereket",
"search_for": "Keresés",
"search_for_existing_person": "Már meglévő személy keresése",
@@ -1749,6 +1804,7 @@
"select_user_for_sharing_page_err_album": "Az album létrehozása sikertelen",
"selected": "Kiválasztott",
"selected_count": "{count, plural, other {# kiválasztva}}",
+ "selected_gps_coordinates": "Kiválasztott GPS Kordináták",
"send_message": "Üzenet küldése",
"send_welcome_email": "Üdvözlő email küldése",
"server_endpoint": "Szerver Végpont",
@@ -1758,6 +1814,7 @@
"server_online": "Szerver Elérhető",
"server_privacy": "Szerver biztonság",
"server_stats": "Szerver Statisztikák",
+ "server_update_available": "Szerverfrissítés érhető el",
"server_version": "Szerver Verzió",
"set": "Beállít",
"set_as_album_cover": "Beállítás albumborítóként",
@@ -1786,9 +1843,11 @@
"setting_notifications_subtitle": "Értesítési beállítások módosítása",
"setting_notifications_total_progress_subtitle": "Átfogó feltöltési folyamat (kész/összes elem)",
"setting_notifications_total_progress_title": "Mutassa a háttérben történő mentés teljes folyamatát",
+ "setting_video_viewer_auto_play_subtitle": "A videók automatikus lejátszása megnyitáskor",
+ "setting_video_viewer_auto_play_title": "Videók automatikus lejátszása",
"setting_video_viewer_looping_title": "Ismétlés",
"setting_video_viewer_original_video_subtitle": "A szerverről történő videólejátszás során az eredeti videó lejátszása még akkor is, ha van optimalizált, átkódolt verzió. Akadozó lejátszást eredményezhet. A helyi eszközön eleve elérhető videókat mindenképpen eredeti minőségben játszuk le.",
- "setting_video_viewer_original_video_title": "Eredeti videó lejátszása",
+ "setting_video_viewer_original_video_title": "Mindig az eredeti videó lejátszása",
"settings": "Beállítások",
"settings_require_restart": "Ennek a beállításnak az érvénybe lépéséhez indítsd újra az Immich-et",
"settings_saved": "Beállítások elmentve",
@@ -1877,6 +1936,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_search_menu": "Mutasd a szövegkeresési menüt",
"shuffle": "Véletlenszerű",
"sidebar": "Oldalsáv",
"sidebar_display_description": "Nézet link megjelenítése az oldalsávban",
@@ -1907,6 +1967,7 @@
"stacktrace": "Hiba leírása",
"start": "Elindít",
"start_date": "Kezdő dátum",
+ "start_date_before_end_date": "A kezdeti dátumnak a befejezési dátum előtt kell lennie",
"state": "Megye/Állam",
"status": "Állapot",
"stop_casting": "Vetítés megszüntetése",
@@ -1963,6 +2024,7 @@
"theme_setting_three_stage_loading_title": "Háromlépcsős betöltés engedélyezése",
"they_will_be_merged_together": "Egyesítve lesznek",
"third_party_resources": "Harmadik Féltől Származó Források",
+ "time": "Idő",
"time_based_memories": "Emlékek idő alapján",
"timeline": "Idővonal",
"timezone": "Időzóna",
@@ -1970,7 +2032,9 @@
"to_change_password": "Jelszó megváltoztatása",
"to_favorite": "Kedvenc",
"to_login": "Bejelentkezés",
+ "to_multi_select": "több elem kiválasztásához",
"to_parent": "Egy szinttel feljebb",
+ "to_select": "a kiválasztáshoz",
"to_trash": "Lomtárba helyezés",
"toggle_settings": "Beállítások átállítása",
"total": "Összesen",
@@ -1990,8 +2054,10 @@
"trash_page_select_assets_btn": "Elemek kiválasztása",
"trash_page_title": "Lomtár ({count})",
"trashed_items_will_be_permanently_deleted_after": "A lomtárban lévő elemek véglegesen törlésre kerülnek {days, plural, other {# nap}} múlva.",
+ "troubleshoot": "Hibaelhárítás",
"type": "Típus",
"unable_to_change_pin_code": "Sikertelen PIN kód változtatás",
+ "unable_to_check_version": "Az alkalmazás vagy a szerver verziója nem ellenőrizhető",
"unable_to_setup_pin_code": "Sikertelen PIN kód beállítás",
"unarchive": "Archívumból kivesz",
"unarchive_action_prompt": "{count} eltávolítva az Archívumból",
@@ -2106,5 +2172,6 @@
"yes": "Igen",
"you_dont_have_any_shared_links": "Nincsenek megosztott linkjeid",
"your_wifi_name": "A Wi-Fi hálózatod neve",
- "zoom_image": "Kép Nagyítása"
+ "zoom_image": "Kép Nagyítása",
+ "zoom_to_bounds": "Nagyítás a határokhoz"
}
diff --git a/i18n/id.json b/i18n/id.json
index 40a4ddbef4..906a0f8ce0 100644
--- a/i18n/id.json
+++ b/i18n/id.json
@@ -28,10 +28,12 @@
"add_to_album": "Tambahkan ke album",
"add_to_album_bottom_sheet_added": "Ditambahkan ke {album}",
"add_to_album_bottom_sheet_already_exists": "Sudah ada di {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Beberapa aset lokal tidak dapat ditambahkan ke album",
"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_shared_album": "Tambahkan ke album terbagi",
+ "add_upload_to_stack": "Tambahkan unggahan ke tumpukan",
"add_url": "Tambahkan URL",
"added_to_archive": "Ditambahkan ke arsip",
"added_to_favorites": "Ditambahkan ke favorit",
@@ -118,11 +120,18 @@
"library_settings_description": "Kelola pengaturan pustaka eksternal",
"library_tasks_description": "Pindai pustaka eksternal untuk aset baru dan/atau berubah",
"library_watching_enable_description": "Pantau perubahan berkas dalam pustaka eksternal",
- "library_watching_settings": "Pemantauan pustaka (UJI COBA)",
+ "library_watching_settings": "Pemantauan pustaka [UJI COBA]",
"library_watching_settings_description": "Pantau berkas yang telah diubah secara otomatis",
"logging_enable_description": "Aktifkan log",
"logging_level_description": "Ketika diaktifkan, tingkat log apa yang digunakan.",
"logging_settings": "Penulisan log",
+ "machine_learning_availability_checks": "Pemeriksaan ketersediaan",
+ "machine_learning_availability_checks_description": "Secara otomatis mendeteksi dan memprioritaskan server machine learning yang tersedia",
+ "machine_learning_availability_checks_enabled": "Aktifkan pemeriksaan ketersediaan",
+ "machine_learning_availability_checks_interval": "Interval pemeriksaan",
+ "machine_learning_availability_checks_interval_description": "Interval dalam milidetik antar pemeriksaan ketersediaan",
+ "machine_learning_availability_checks_timeout": "Batas waktu permintaan",
+ "machine_learning_availability_checks_timeout_description": "Batas waktu dalam milidetik untuk pemeriksaan ketersediaan",
"machine_learning_clip_model": "Model CLIP",
"machine_learning_clip_model_description": "Nama model CLIP yang didaftarkan di sini. Anda harus menjalankan ulang tugas 'Pencarian Otomatis' untuk semua gambar ketika mengganti model.",
"machine_learning_duplicate_detection": "Deteksi Duplikat",
@@ -145,6 +154,11 @@
"machine_learning_min_detection_score_description": "Nilai keyakinan minimum untuk sebuah wajah untuk dideteksi dari 0 sampai 1. Nilai yang lebih rendah akan mendeteksi lebih banyak wajah tetapi dapat mengakibatkan positif palsu.",
"machine_learning_min_recognized_faces": "Wajah terkenal minimum",
"machine_learning_min_recognized_faces_description": "Jumlah minimum wajah yang dikenal untuk seseorang untuk dibuat. Meningkatkan ini membuat Pengenalan Wajah lebih tepat dengan kemungkinan bahwa sebuah wajah tidak dikaitkan dengan seseorang.",
+ "machine_learning_ocr": "OCR",
+ "machine_learning_ocr_description": "Gunakan pembelajaran mesin untuk mengenali teks di dalam gambar",
+ "machine_learning_ocr_enabled": "Aktfikan OCR",
+ "machine_learning_ocr_enabled_description": "Jika dinonaktifkan, gambar-gambar tidak akan mengalami pengenalan teks.",
+ "machine_learning_ocr_max_resolution": "Resolusi maksimum",
"machine_learning_settings": "Pengaturan Pembelajaran Mesin",
"machine_learning_settings_description": "Keola fitur dan pengaturan pembelajaran mesin",
"machine_learning_smart_search": "Pencarian Pintar",
@@ -423,6 +437,7 @@
"album_remove_user_confirmation": "Apakah Anda yakin ingin mengeluarkan {user}?",
"album_search_not_found": "Tidak ada album yang ditemukan sesuai pencarian Anda",
"album_share_no_users": "Sepertinya Anda telah membagikan album ini dengan semua pengguna atau tidak memiliki pengguna siapa pun untuk dibagikan.",
+ "album_summary": "Ringkasan album",
"album_updated": "Album diperbarui",
"album_updated_setting_description": "Terima notifikasi surel ketika album terbagi memiliki aset baru",
"album_user_left": "Keluar dari {album}",
@@ -494,6 +509,8 @@
"asset_restored_successfully": "Aset telah berhasil dipulihkan",
"asset_skipped": "Dilewati",
"asset_skipped_in_trash": "Dalam sampah",
+ "asset_trashed": "Aset dibuang",
+ "asset_troubleshoot": "Troubleshoot Aset",
"asset_uploaded": "Sudah diunggah",
"asset_uploading": "Mengunggah…",
"asset_viewer_settings_subtitle": "Kelola pengaturan penampil galeri Anda",
@@ -527,8 +544,10 @@
"autoplay_slideshow": "Putar otomatis tayangan slide",
"back": "Kembali",
"back_close_deselect": "Kembali, tutup, atau batalkan pemilihan",
+ "background_backup_running_error": "Cadangan latar belakang sedang berjalan, tidak dapat memulai cadangan manual",
"background_location_permission": "Izin lokasi latar belakang",
"background_location_permission_content": "Untuk beralih jaringan saat berjalan di latar belakang, Immich harus selalu memiliki akses lokasi akurat agar aplikasi dapat membaca nama jaringan Wi-Fi",
+ "background_options": "Opsi Latar Belakang",
"backup": "Cadangkan",
"backup_album_selection_page_albums_device": "Album di perangkat ({count})",
"backup_album_selection_page_albums_tap": "Sentuh untuk memilih, sentuh 2x untuk mengecualikan",
@@ -536,6 +555,7 @@
"backup_album_selection_page_select_albums": "Pilih album",
"backup_album_selection_page_selection_info": "Info Pilihan",
"backup_album_selection_page_total_assets": "Total aset unik",
+ "backup_albums_sync": "Sinkronisasi cadangan album",
"backup_all": "Semua",
"backup_background_service_backup_failed_message": "Gagal mencadangkan aset. Mencoba lagi…",
"backup_background_service_connection_failed_message": "Koneksi ke server gagal. Mencoba ulang…",
@@ -585,6 +605,7 @@
"backup_controller_page_turn_on": "Aktifkan pencadangan latar depan",
"backup_controller_page_uploading_file_info": "Mengunggah info file",
"backup_err_only_album": "Tidak dapat menghapus album",
+ "backup_error_sync_failed": "Sinkronisasi gagal. Tidak dapat memproses cadangan.",
"backup_info_card_assets": "aset",
"backup_manual_cancelled": "Dibatalkan",
"backup_manual_in_progress": "Dalam proses unggah. Coba lagi nanti",
@@ -652,6 +673,8 @@
"change_pin_code": "Ubah kode PIN",
"change_your_password": "Ubah kata sandi Anda",
"changed_visibility_successfully": "Keterlihatan berhasil diubah",
+ "charging": "Mengisi daya",
+ "charging_requirement_mobile_backup": "Cadangan latar belakang memerlukan perangkat dalam keadaan mengisi daya",
"check_corrupt_asset_backup": "Periksa cadangan aset yang rusak",
"check_corrupt_asset_backup_button": "Lakukan pemeriksaan",
"check_corrupt_asset_backup_description": "Jalankan pemeriksaan ini hanya melalui Wi-Fi dan setelah semua aset dicadangkan. Prosedur ini mungkin memerlukan waktu beberapa menit.",
@@ -683,7 +706,6 @@
"comments_and_likes": "Komentar & suka",
"comments_are_disabled": "Komentar dinonaktifkan",
"common_create_new_album": "Buat album baru",
- "common_server_error": "Koneksi gagal, pastikan server dapat diakses dan memiliki versi yang kompatibel.",
"completed": "Selesai",
"confirm": "Konfirmasi",
"confirm_admin_password": "Konfirmasi Kata Sandi Admin",
@@ -738,6 +760,7 @@
"create_user": "Buat pengguna",
"created": "Dibuat",
"created_at": "Dibuat",
+ "creating_linked_albums": "Membuat album tertaut...",
"crop": "Pangkas",
"curated_object_page_title": "Benda",
"current_device": "Perangkat saat ini",
@@ -864,7 +887,6 @@
"edit_tag": "Ubah tag",
"edit_title": "Sunting Judul",
"edit_user": "Sunting pengguna",
- "edited": "Disunting",
"editor": "Penyunting",
"editor_close_without_save_prompt": "Perubahan tidak akan di simpan",
"editor_close_without_save_title": "Tutup editor?",
@@ -887,7 +909,9 @@
"error": "Eror",
"error_change_sort_album": "Gagal mengubah urutan album",
"error_delete_face": "Terjadi kesalahan menghapus wajah dari aset",
+ "error_getting_places": "Kesalahan saat mengambil lokasi",
"error_loading_image": "Terjadi eror memuat gambar",
+ "error_loading_partners": "Kesalahan saat memuat partner: {error}",
"error_saving_image": "Kesalahan: {error}",
"error_tag_face_bounding_box": "Galat saat memberi tag wajah – tidak dapat memperoleh koordinat kotak pembatas",
"error_title": "Eror - Ada yang salah",
@@ -1052,6 +1076,7 @@
"favorites_page_no_favorites": "Tidak ada aset favorit",
"feature_photo_updated": "Foto terfitur diperbarui",
"features": "Fitur",
+ "features_in_development": "Fitur dalam Pengembangan",
"features_setting_description": "Kelola fitur aplikasi",
"file_name": "Nama berkas",
"file_name_or_extension": "Nama berkas atau ekstensi",
@@ -1094,11 +1119,10 @@
"hash_asset": "Aset Hash",
"hashed_assets": "Aset yang di-hash",
"hashing": "Proses Hash",
- "header_settings_add_header_tip": "Tambahkan Header",
+ "header_settings_add_header_tip": "Tambahkan header",
"header_settings_field_validator_msg": "Nilai tidak boleh kosong",
- "header_settings_header_name_input": "Nama Header",
- "header_settings_header_value_input": "Nilai Header",
- "headers_settings_tile_subtitle": "Menentukan header proksi yang akan dikirimkan oleh aplikasi pada setiap permintaan jaringan",
+ "header_settings_header_name_input": "Nama header",
+ "header_settings_header_value_input": "Nilai header",
"headers_settings_tile_title": "Header proksi kustom",
"hi_user": "Hai {name} ({email})",
"hide_all_people": "Sembunyikan semua orang",
@@ -1216,6 +1240,7 @@
"local": "Lokal",
"local_asset_cast_failed": "Tidak dapat melakukan cast aset yang belum diunggah ke server",
"local_assets": "Aset Lokal",
+ "local_media_summary": "Ringkasan Media Lokal",
"local_network": "Jaringan Lokal",
"local_network_sheet_info": "Aplikasi akan terhubung ke server melalui URL ini saat menggunakan jaringan Wi-Fi yang ditentukan",
"location_permission": "Izin lokasi",
@@ -1227,6 +1252,7 @@
"location_picker_longitude_hint": "Masukkan bujur di sini",
"lock": "Kunci",
"locked_folder": "Folder Terkunci",
+ "log_detail_title": "Detail Log",
"log_out": "Log keluar",
"log_out_all_devices": "Keluar dari Semua Perangkat",
"logged_in_as": "Masuk sebagai {user}",
@@ -1257,6 +1283,7 @@
"login_password_changed_success": "Sandi berhasil diperbarui",
"logout_all_device_confirmation": "Apakah Anda yakin ingin keluar dari semua perangkat?",
"logout_this_device_confirmation": "Apakah Anda yakin ingin mengeluarkan perangkat ini?",
+ "logs": "Log",
"longitude": "Bujur",
"look": "Tampilan",
"loop_videos": "Ulangi video",
@@ -1299,6 +1326,7 @@
"mark_as_read": "Tandai sebagai telah dibaca",
"marked_all_as_read": "Semua telah ditandai sebagai telah dibaca",
"matches": "Cocokan",
+ "matching_assets": "Aset yang Cocok",
"media_type": "Jenis media",
"memories": "Kenangan",
"memories_all_caught_up": "Semua telah dilihat",
@@ -1339,6 +1367,7 @@
"name_or_nickname": "Nama atau nama panggilan",
"network_requirement_photos_upload": "Gunakan data seluler untuk cadangkan foto",
"network_requirement_videos_upload": "Gunakan data seluler untuk cadangkan video",
+ "network_requirements": "Persyaratan Jaringan",
"network_requirements_updated": "Persyaratan jaringan telah berubah, antrean pencadangan diatur ulang",
"networking_settings": "Jaringan",
"networking_subtitle": "Kelola pengaturan Endpoint server",
@@ -1349,6 +1378,7 @@
"new_person": "Orang baru",
"new_pin_code": "Kode PIN baru",
"new_pin_code_subtitle": "Ini adalah akses pertama Anda ke folder terkunci. Buat kode PIN untuk mengamankan akses ke halaman ini",
+ "new_timeline": "Linimasa Baru",
"new_user_created": "Pengguna baru dibuat",
"new_version_available": "VERSI BARU TERSEDIA",
"newest_first": "Terkini dahulu",
@@ -1362,20 +1392,25 @@
"no_assets_message": "KLIK UNTUK MENGUNGGAH FOTO PERTAMA ANDA",
"no_assets_to_show": "Tidak ada aset",
"no_cast_devices_found": "Tidak ada perangkat cast yang ditemukan",
+ "no_checksum_local": "Tidak ada checksum yang tersedia - tidak dapat mengambil aset lokal",
+ "no_checksum_remote": "Tidak ada checksum yang tersedia - tidak dapat mengambil aset jarak jauh",
"no_duplicates_found": "Tidak ada duplikat yang ditemukan.",
"no_exif_info_available": "Tidak ada info EXIF yang tersedia",
"no_explore_results_message": "Unggah lebih banyak foto untuk menjelajahi koleksi Anda.",
"no_favorites_message": "Tambahkan favorit untuk mencari foto dan video terbaik Anda dengan cepat",
"no_libraries_message": "Buat pustaka eksternal untuk menampilkan foto dan video Anda",
+ "no_local_assets_found": "Tidak ada aset lokal yang ditemukan dengan checksum ini",
"no_locked_photos_message": "Foto dan video di folder terkunci disembunyikan dan tidak akan muncul saat Anda menelusuri atau mencari di pustaka.",
"no_name": "Tidak Ada Nama",
"no_notifications": "Tidak ada notifikasi",
"no_people_found": "Orang tidak ditemukan",
"no_places": "Tidak ada tempat",
+ "no_remote_assets_found": "Tidak ada aset jarak jauh yang ditemukan dengan checksum ini",
"no_results": "Tidak ada hasil",
"no_results_description": "Coba sinonim atau kata kunci yang lebih umum",
"no_shared_albums_message": "Buat sebuah album untuk membagikan foto dan video dengan orang-orang dalam jaringan Anda",
"no_uploads_in_progress": "Tidak ada unggahan yang sedang berlangsung",
+ "not_available": "T/T",
"not_in_any_album": "Tidak ada dalam album apa pun",
"not_selected": "Belum dipilih",
"note_apply_storage_label_to_previously_uploaded assets": "Catatan: Untuk menerapkan Label Penyimpanan pada aset yang sebelumnya telah diunggah, jalankan",
@@ -1497,6 +1532,7 @@
"port": "Porta",
"preferences_settings_subtitle": "Kelola preferensi aplikasi",
"preferences_settings_title": "Preferensi",
+ "preparing": "Mempersiapkan",
"preset": "Prasetel",
"preview": "Pratinjau",
"previous": "Sebelumnya",
@@ -1509,13 +1545,9 @@
"privacy": "Privasi",
"profile": "Profil",
"profile_drawer_app_logs": "Log",
- "profile_drawer_client_out_of_date_major": "Versi app seluler ini sudah kedaluwarsa. Silakan perbarui ke versi major terbaru.",
- "profile_drawer_client_out_of_date_minor": "Versi app seluler ini sudah kedaluwarsa. Silakan perbarui ke versi minor terbaru.",
"profile_drawer_client_server_up_to_date": "Klien dan server menjalankan versi terbaru",
"profile_drawer_github": "GitHub",
- "profile_drawer_readonly_mode": "Mode baca-saja aktif. Ketuk dua kali ikon avatar pengguna untuk keluar.",
- "profile_drawer_server_out_of_date_major": "Versi server ini telah kedaluwarsa. Silakan perbarui ke versi major terbaru.",
- "profile_drawer_server_out_of_date_minor": "Versi server ini telah kedaluwarsa. Silakan perbarui ke versi minor terbaru.",
+ "profile_drawer_readonly_mode": "Mode baca-saja aktif. Tekan lama ikon avatar pengguna untuk keluar.",
"profile_image_of_user": "Foto profil dari {user}",
"profile_picture_set": "Foto profil ditetapkan.",
"public_album": "Album publik",
@@ -1562,6 +1594,7 @@
"read_changelog": "Baca Log Perubahan",
"readonly_mode_disabled": "Mode baca-saja dimatikan",
"readonly_mode_enabled": "Mode baca-saja diaktifkan",
+ "ready_for_upload": "Siap untuk mengunggah",
"reassign": "Tetapkan ulang",
"reassigned_assets_to_existing_person": "Menetapkan ulang {count, plural, one {# aset} other {# aset}} kepada {name, select, null {orang yang sudah ada} other {{name}}}",
"reassigned_assets_to_new_person": "Menetapkan ulang {count, plural, one {# aset} other {# aset}} kepada orang baru",
@@ -1586,6 +1619,7 @@
"regenerating_thumbnails": "Membuat ulang gambar kecil",
"remote": "Jarak Jauh",
"remote_assets": "Aset Jarak Jauh",
+ "remote_media_summary": "Ringkasan Media Jarak Jauh",
"remove": "Hapus",
"remove_assets_album_confirmation": "Apakah Anda yakin ingin menghapus {count, plural, one {# aset} other {# aset}} dari album?",
"remove_assets_shared_link_confirmation": "Apakah Anda yakin ingin menghapus {count, plural, one {# aset} other {# aset}} dari tautan terbagi ini?",
@@ -1638,6 +1672,7 @@
"restore_user": "Pulihkan pengguna",
"restored_asset": "Aset dipulihkan",
"resume": "Lanjutkan",
+ "resume_paused_jobs": "Lanjutkan {count, plural, one {# pekerjaan yang dijeda} other {# pekerjaan yang dijeda}}",
"retry_upload": "Ulangi pengunggahan",
"review_duplicates": "Pratinjau duplikat",
"review_large_files": "Meninjau berkas berukuran besar",
@@ -1860,6 +1895,7 @@
"show_slideshow_transition": "Tampilkan transisi salindia",
"show_supporter_badge": "Lencana suporter",
"show_supporter_badge_description": "Tampilkan lencana suporter",
+ "show_text_search_menu": "Tampilkan menu pencarian teks",
"shuffle": "Acak",
"sidebar": "Bilah sisi",
"sidebar_display_description": "Menampilkan tautan ke tampilan di bilah sisi",
@@ -1890,6 +1926,7 @@
"stacktrace": "Jejak tumpukan",
"start": "Mulai",
"start_date": "Tanggal mulai",
+ "start_date_before_end_date": "Tanggal mulai harus sebelum tanggal akhir",
"state": "Keadaan",
"status": "Status",
"stop_casting": "Hentikan cast",
@@ -1914,6 +1951,8 @@
"sync_albums_manual_subtitle": "Melakukan sinkronisasi semua video dan foto yang telah diunggah ke album cadangan yang dipilih",
"sync_local": "Sinkronkan lokal",
"sync_remote": "Sinkronkan jarak jauh",
+ "sync_status": "Status Sinkronisasi",
+ "sync_status_subtitle": "Lihat dan atur sistem sinkronisasi",
"sync_upload_album_setting_subtitle": "Membuat dan mengunggah foto serta video Anda ke album yang telah dipilih pada Immich",
"tag": "Label",
"tag_assets": "Tag aset",
@@ -1973,6 +2012,7 @@
"trash_page_select_assets_btn": "Pilih aset",
"trash_page_title": "Sampah ({count})",
"trashed_items_will_be_permanently_deleted_after": "Item yang dibuang akan dihapus secara permanen setelah {days, plural, one {# hari} other {# hari}}.",
+ "troubleshoot": "Pemecahan Masalah",
"type": "Jenis",
"unable_to_change_pin_code": "Tidak dapat mengubah kode PIN",
"unable_to_setup_pin_code": "Tidak dapat memasang kode PIN",
@@ -2089,5 +2129,6 @@
"yes": "Ya",
"you_dont_have_any_shared_links": "Anda tidak memiliki tautan terbagi",
"your_wifi_name": "Nama Wi-Fi Anda",
- "zoom_image": "Perbesar Gambar"
+ "zoom_image": "Perbesar Gambar",
+ "zoom_to_bounds": "Perbesar ke batas"
}
diff --git a/i18n/it.json b/i18n/it.json
index 044e86c6df..0429f92d0b 100644
--- a/i18n/it.json
+++ b/i18n/it.json
@@ -14,7 +14,7 @@
"add_a_location": "Aggiungi una posizione",
"add_a_name": "Aggiungi un nome",
"add_a_title": "Aggiungi un titolo",
- "add_birthday": "Aggiungi un compleanno",
+ "add_birthday": "Aggiungi compleanno",
"add_endpoint": "Aggiungi un endpoint",
"add_exclusion_pattern": "Aggiungi un pattern di esclusione",
"add_import_path": "Aggiungi un percorso per l’importazione",
@@ -28,10 +28,12 @@
"add_to_album": "Aggiungi all'album",
"add_to_album_bottom_sheet_added": "Aggiunto in {album}",
"add_to_album_bottom_sheet_already_exists": "Già presente in {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Alcune risorse locali non possono essere aggiunte all'album",
"add_to_album_toggle": "Attiva/disattiva selezione per {album}",
"add_to_albums": "Aggiungi ad album",
"add_to_albums_count": "Aggiungi ad album ({count})",
"add_to_shared_album": "Aggiungi ad album condiviso",
+ "add_upload_to_stack": "Aggiungi caricamento allo stack",
"add_url": "Aggiungi URL",
"added_to_archive": "Aggiunto all'archivio",
"added_to_favorites": "Aggiunto ai preferiti",
@@ -118,11 +120,18 @@
"library_settings_description": "Gestisci le impostazioni della libreria esterna",
"library_tasks_description": "Scansiona le librerie esterne per risorse nuove o modificate",
"library_watching_enable_description": "Osserva le librerie esterne per cambiamenti",
- "library_watching_settings": "Osserva librerie (SPERIMENTALE)",
+ "library_watching_settings": "Osserva librerie [SPERIMENTALE]",
"library_watching_settings_description": "Osserva automaticamente i cambiamenti dei file",
"logging_enable_description": "Attiva il logging",
"logging_level_description": "Quando attivato, che livello di log utilizzare.",
"logging_settings": "Registro dei Log",
+ "machine_learning_availability_checks": "Verifiche di disponibilità",
+ "machine_learning_availability_checks_description": "Rileva automaticamente e usa i server di machine learning disponibili",
+ "machine_learning_availability_checks_enabled": "Attiva verifiche di disponibilità",
+ "machine_learning_availability_checks_interval": "Intervallo di verifica",
+ "machine_learning_availability_checks_interval_description": "Intervallo (ms) tra le verifiche di disponibilità",
+ "machine_learning_availability_checks_timeout": "Timeout richiesta",
+ "machine_learning_availability_checks_timeout_description": "Timeout (ms) per le verifiche di disponibilità",
"machine_learning_clip_model": "Modello CLIP",
"machine_learning_clip_model_description": "Il nome del modello CLIP mostrato qui. Nota che devi rieseguire il processo 'Ricerca Intelligente' per tutte le immagini al cambio del modello.",
"machine_learning_duplicate_detection": "Rilevamento Duplicati",
@@ -145,6 +154,18 @@
"machine_learning_min_detection_score_description": "Punteggio di confidenza minimo per rilevare un volto, da 0 a 1. Valori più bassi rileveranno più volti, ma potrebbero generare risultati fasulli.",
"machine_learning_min_recognized_faces": "Minimo numero di volti rilevati",
"machine_learning_min_recognized_faces_description": "Il numero minimo di volti riconosciuti per creare una persona. Aumentando questo valore si rende il riconoscimento facciale più preciso, ma aumenta la possibilità che un volto non venga assegnato a una persona.",
+ "machine_learning_ocr": "OCR",
+ "machine_learning_ocr_description": "Utilizza il machine learning per riconoscere il testo nelle immagini",
+ "machine_learning_ocr_enabled": "Attiva OCR",
+ "machine_learning_ocr_enabled_description": "Se disattivato, le immagini non saranno sottoposte al riconoscimento del testo.",
+ "machine_learning_ocr_max_resolution": "Massima risoluzione",
+ "machine_learning_ocr_max_resolution_description": "L'anteprima maggiore di questa risoluzione verrà ridimensionata preservando le proporzioni. Valori maggiori sono più accurati, ma impiegano più tempo per essere processati e usano più memoria.",
+ "machine_learning_ocr_min_detection_score": "Punteggio minimo di rilevamento",
+ "machine_learning_ocr_min_detection_score_description": "Punteggio minimo di affidabilità per il rilevamento del testo da 0 a 1. Valori più bassi rileveranno più testo, ma potrebbero generare falsi positivi.",
+ "machine_learning_ocr_min_recognition_score": "Punteggio minimo di riconoscimento",
+ "machine_learning_ocr_min_score_recognition_description": "Punteggio minimo di affidabilità per il riconoscimento del testo da 0 a 1. Valori più bassi rileveranno più testo, ma potrebbero generare falsi positivi.",
+ "machine_learning_ocr_model": "Modello OCR",
+ "machine_learning_ocr_model_description": "I modelli server sono più accurati dei modelli mobile, ma impiegano più tempo nel processo e utilizzano più memoria.",
"machine_learning_settings": "Impostazioni Machine Learning",
"machine_learning_settings_description": "Gestisci le impostazioni e le funzionalità del machine learning",
"machine_learning_smart_search": "Ricerca Intelligente",
@@ -169,7 +190,7 @@
"map_style_description": "URL per un tema della mappa style.json",
"memory_cleanup_job": "Pulizia dei vecchi Ricordi",
"memory_generate_job": "Generazione dei Ricordi",
- "metadata_extraction_job": "Estrazione Metadata",
+ "metadata_extraction_job": "Estrazione Metadati",
"metadata_extraction_job_description": "Estrai informazioni dai metadati di ciascuna risorsa, come coordinate GPS, volti e risoluzione",
"metadata_faces_import_setting": "Abilita l'importazione dei volti",
"metadata_faces_import_setting_description": "Importa i volti dai dati EXIF dell'immagine e dai file sidecar",
@@ -202,6 +223,8 @@
"notification_email_ignore_certificate_errors_description": "Ignora errori TLS di validazione del certificato (sconsigliato)",
"notification_email_password_description": "Password da usare per l'autenticazione con il server email",
"notification_email_port_description": "Porta del server email (es. 25, 465, 587)",
+ "notification_email_secure": "SMTPS",
+ "notification_email_secure_description": "Usa SMTPS (SMTP over TLS)",
"notification_email_sent_test_email_button": "Invia email di prova e salva",
"notification_email_setting_description": "Impostazioni per le notifiche via email",
"notification_email_test_email": "Invia email di prova",
@@ -234,6 +257,7 @@
"oauth_storage_quota_default_description": "Limite in GiB da usare quanto nessuna dichiarazione di ambito(claim) è stata fornita.",
"oauth_timeout": "Timeout Richiesta",
"oauth_timeout_description": "Timeout per le richieste, espresso in millisecondi",
+ "ocr_job_description": "Utilizza il machine learning per riconoscere il testo nelle immagini",
"password_enable_description": "Login con email e password",
"password_settings": "Login con password",
"password_settings_description": "Gestisci impostazioni del login con password",
@@ -300,11 +324,11 @@
"transcoding_acceleration_rkmpp": "RKMPP (Solo per SOC Rockchip)",
"transcoding_acceleration_vaapi": "VAAPI",
"transcoding_accepted_audio_codecs": "Codifiche audio accettate",
- "transcoding_accepted_audio_codecs_description": "Seleziona quali codifiche audio non devono essere trascodificate. Solo usato per alcune politiche di trascodifica.",
+ "transcoding_accepted_audio_codecs_description": "Seleziona quali codifiche audio non devono essere transcodificate. Solo usato per alcune politiche di transcodifica.",
"transcoding_accepted_containers": "Contenitori accettati",
"transcoding_accepted_containers_description": "Seleziona quali formati non hanno bisogno di essere remuxati in MP4. Usato solo per certe politiche di transcodifica.",
"transcoding_accepted_video_codecs": "Codifiche video accettate",
- "transcoding_accepted_video_codecs_description": "Seleziona quali codifiche video non devono essere trascodificate. Usato solo per alcune politiche di trascodifica.",
+ "transcoding_accepted_video_codecs_description": "Seleziona quali codifiche video non devono essere transcodificate. Usato solo per alcune politiche di transcodifica.",
"transcoding_advanced_options_description": "Impostazioni che la maggior parte degli utenti non dovrebbero cambiare",
"transcoding_audio_codec": "Codifica Audio",
"transcoding_audio_codec_description": "Opus è l'opzione con la qualità più alta, ma è meno compatibile con dispositivi o software vecchi.",
@@ -324,7 +348,7 @@
"transcoding_max_b_frames": "B-frames Massimi",
"transcoding_max_b_frames_description": "Valori più alti migliorano l'efficienza di compressione, ma rallentano l'encoding. Potrebbero non essere compatibili con l'accelerazione hardware su dispositivi più vecchi. 0 disabilita i B-frames, mentre -1 imposta questo valore automaticamente.",
"transcoding_max_bitrate": "Bitrate massimo",
- "transcoding_max_bitrate_description": "Impostare un bitrate massimo può rendere le dimensioni dei file più prevedibili a un costo minore per la qualità. A 720p, i valori tipici sono 2600 kbit/s per VP9 o HEVC, o 4500 kbit/s per H.264. Disabilitato se impostato su 0.",
+ "transcoding_max_bitrate_description": "Impostare un bitrate massimo può rendere le dimensioni dei file più prevedibili a un costo minore per la qualità. A 720p, i valori tipici sono 2600 kbit/s per VP9 o HEVC, o 4500 kbit/s per H.264. Disabilitato se impostato su 0. Quando non viene specificata alcuna unità, si presume k (per kbit/s); pertanto 5000, 5000k e 5M (per Mbit/s) sono equivalenti.",
"transcoding_max_keyframe_interval": "Intervallo massimo dei keyframe",
"transcoding_max_keyframe_interval_description": "Imposta la distanza massima tra i keyframe. Valori più bassi peggiorano l'efficienza di compressione, però migliorano i tempi di ricerca e possono migliorare la qualità nelle scene con movimenti rapidi. 0 imposta questo valore automaticamente.",
"transcoding_optimal_description": "Video con risoluzione più alta rispetto alla risoluzione desiderata o in formato non accettato",
@@ -337,22 +361,22 @@
"transcoding_reference_frames": "Frame di riferimento",
"transcoding_reference_frames_description": "Il numero di frame da prendere in considerazione nel comprimere un determinato frame. Valori più alti migliorano l'efficienza di compressione, ma rallentano la codifica. 0 imposta questo valore automaticamente.",
"transcoding_required_description": "Solo video che non sono in un formato accettato",
- "transcoding_settings": "Impostazioni Trascodifica Video",
+ "transcoding_settings": "Impostazioni Transcodifica Video",
"transcoding_settings_description": "Gestisci quali video transcodificare e come processarli",
"transcoding_target_resolution": "Risoluzione desiderata",
"transcoding_target_resolution_description": "Risoluzioni più elevate possono preservare più dettagli ma richiedono più tempo per la codifica, producono file di dimensioni maggiori e possono ridurre la reattività dell'applicazione.",
"transcoding_temporal_aq": "AQ temporale",
- "transcoding_temporal_aq_description": "Si applica solo a NVENC. Aumenta la qualità delle scene con molto dettaglio e poco movimento. Potrebbe non essere compatibile con dispositivi più vecchi.",
+ "transcoding_temporal_aq_description": "Si applica solo a NVENC. La Quantizzazione Adattiva Temporale aumenta la qualità delle scene con molto dettaglio e poco movimento. Potrebbe non essere compatibile con dispositivi più vecchi.",
"transcoding_threads": "Thread",
"transcoding_threads_description": "Valori più alti portano a una codifica più veloce, ma lasciano meno spazio al server per elaborare altre attività durante l'attività. Questo valore non dovrebbe essere superiore al numero di core CPU. Massimizza l'utilizzo se impostato su 0.",
"transcoding_tone_mapping": "Mappatura della tonalità",
"transcoding_tone_mapping_description": "Tenta di preservare l'aspetto dei video HDR quando convertiti in SDR. Ciascun algoritmo fa diversi compromessi per colore, dettaglio e luminosità. Hable conserva il dettaglio, Mobius conserva il colore e Reinhard conserva la luminosità.",
"transcoding_transcode_policy": "Politica di transcodifica",
- "transcoding_transcode_policy_description": "Politica che determina quando un video deve essere trascodificato. I video HDR verranno sempre trascodificati (eccetto quando la trascodifica è disabilitata).",
+ "transcoding_transcode_policy_description": "Politica che determina quando un video deve essere transcodificato. I video HDR verranno sempre transcodificati (eccetto quando la transcodifica è disabilitata).",
"transcoding_two_pass_encoding": "Codifica a due passaggi",
- "transcoding_two_pass_encoding_setting_description": "Trascodifica in due passaggi per produrre video codificati migliori. Quando il bitrate massimo è abilitato (necessario affinché funzioni con H.264 e HEVC), questa modalità utilizza un intervallo di bitrate basato sul bitrate massimo e ignora CRF. Per VP9, CRF può essere utilizzato se il bitrate massimo è disabilitato.",
+ "transcoding_two_pass_encoding_setting_description": "Transcodifica in due passaggi per produrre video codificati migliori. Quando il bitrate massimo è abilitato (necessario affinché funzioni con H.264 e HEVC), questa modalità utilizza un intervallo di bitrate basato sul bitrate massimo e ignora CRF. Per VP9, CRF può essere utilizzato se il bitrate massimo è disabilitato.",
"transcoding_video_codec": "Codec video",
- "transcoding_video_codec_description": "VP9 ha alta efficienza e compatibilità web, ma richiede più tempo per la trascodifica. HEVC ha prestazioni simili, ma una minore compatibilità web. H.264 è ampiamente compatibile e veloce da transcodificare, ma produce file molto più grandi. AV1 è il codec più efficiente, ma non è supportato sui dispositivi più vecchi.",
+ "transcoding_video_codec_description": "VP9 ha alta efficienza e compatibilità web, ma richiede più tempo per la transcodifica. HEVC ha prestazioni simili, ma una minore compatibilità web. H.264 è ampiamente compatibile e veloce da transcodificare, ma produce file molto più grandi. AV1 è il codec più efficiente, ma non è supportato sui dispositivi più vecchi.",
"trash_enabled_description": "Abilita Funzionalità Cestino",
"trash_number_of_days": "Numero di giorni",
"trash_number_of_days_description": "Numero di giorni per cui mantenere gli asset nel cestino prima di rimuoverli definitivamente",
@@ -380,8 +404,8 @@
"version_check_implications": "La funzione di controllo della versione fa uso di una comunicazione periodica con github.com",
"version_check_settings": "Controllo Versione",
"version_check_settings_description": "Abilita/disabilita la notifica per nuove versioni",
- "video_conversion_job": "Trascodifica video",
- "video_conversion_job_description": "Trascodifica video per maggiore compatibilità con browser e dispositivi"
+ "video_conversion_job": "Transcodifica video",
+ "video_conversion_job_description": "Transcodifica video per maggiore compatibilità con browser e dispositivi"
},
"admin_email": "Email Amministratore",
"admin_password": "Password Amministratore",
@@ -393,11 +417,11 @@
"advanced_settings_prefer_remote_subtitle": "Alcuni dispositivi sono estremamente lenti a caricare le miniature da risorse locali. Attiva questa impostazione per caricare invece le immagini remote.",
"advanced_settings_prefer_remote_title": "Preferisci immagini remote",
"advanced_settings_proxy_headers_subtitle": "Definisci gli header per i proxy che Immich dovrebbe inviare con ogni richiesta di rete",
- "advanced_settings_proxy_headers_title": "Header Proxy",
+ "advanced_settings_proxy_headers_title": "Header Proxy Personalizzato [SPERIMENTALE]",
"advanced_settings_readonly_mode_subtitle": "Abilita la modalità di sola lettura in cui le foto possono essere solo visualizzate, mentre funzioni come la selezione di più immagini, la condivisione, la trasmissione e l'eliminazione sono tutte disabilitate. Abilita/Disabilita la sola lettura tramite l'avatar dell'utente dalla schermata principale",
"advanced_settings_readonly_mode_title": "Modalità di sola lettura",
"advanced_settings_self_signed_ssl_subtitle": "Salta la verifica dei certificati SSL del server. Richiesto con l'uso di certificati self-signed.",
- "advanced_settings_self_signed_ssl_title": "Consenti certificati SSL self-signed",
+ "advanced_settings_self_signed_ssl_title": "Consenti certificati SSL self-signed [SPERIMENTALE]",
"advanced_settings_sync_remote_deletions_subtitle": "Rimuovi o ripristina automaticamente un elemento su questo dispositivo quando l'azione è stata fatta via web",
"advanced_settings_sync_remote_deletions_title": "Sincronizza le cancellazioni remote [SPERIMENTALE]",
"advanced_settings_tile_subtitle": "Impostazioni avanzate dell'utente",
@@ -457,10 +481,14 @@
"api_key_description": "Questo valore verrà mostrato una sola volta. Assicurati di copiarlo prima di chiudere la finestra.",
"api_key_empty": "Il nome della chiave API non dovrebbe essere vuoto",
"api_keys": "Chiavi API",
+ "app_architecture_variant": "Variante (Architettura)",
"app_bar_signout_dialog_content": "Sei sicuro di volerti disconnettere?",
"app_bar_signout_dialog_ok": "Si",
"app_bar_signout_dialog_title": "Disconnetti",
+ "app_download_links": "Link per il download dell'app",
"app_settings": "Impostazioni Applicazione",
+ "app_stores": "App Stores",
+ "app_update_available": "Aggiornamento App disponibile",
"appears_in": "Compare in",
"apply_count": "Applica ({count, number})",
"archive": "Archivio",
@@ -533,6 +561,7 @@
"background_backup_running_error": "Il backup in background è attualmente in esecuzione, impossibile avviare il backup manuale",
"background_location_permission": "Permesso di localizzazione in background",
"background_location_permission_content": "Per fare in modo che sia possibile cambiare rete quando è in esecuzione in background, Immich deve *sempre* avere accesso alla tua posizione precisa in modo da poter leggere il nome della rete Wi-Fi",
+ "background_options": "Opzioni sfondo",
"backup": "Backup",
"backup_album_selection_page_albums_device": "Album sul dispositivo ({count})",
"backup_album_selection_page_albums_tap": "Tap per includere, doppio tap per escludere",
@@ -540,8 +569,10 @@
"backup_album_selection_page_select_albums": "Seleziona gli album",
"backup_album_selection_page_selection_info": "Informazioni sulla selezione",
"backup_album_selection_page_total_assets": "Numero totale delle risorse",
+ "backup_albums_sync": "Sincronizzazione album di backup",
"backup_all": "Tutti",
"backup_background_service_backup_failed_message": "È stato impossibile fare il backup dei contenuti. Riprovo…",
+ "backup_background_service_complete_notification": "Backup completato",
"backup_background_service_connection_failed_message": "Impossibile connettersi al server. Riprovo…",
"backup_background_service_current_upload_notification": "Caricamento di {filename} in corso",
"backup_background_service_default_notification": "Ricerca di nuovi contenuti…",
@@ -589,6 +620,7 @@
"backup_controller_page_turn_on": "Attiva backup",
"backup_controller_page_uploading_file_info": "Caricamento informazioni file",
"backup_err_only_album": "Non è possibile rimuovere l'unico album",
+ "backup_error_sync_failed": "Sincronizzazione non riuscita. Impossibile elaborare il backup.",
"backup_info_card_assets": "risorse",
"backup_manual_cancelled": "Annullato",
"backup_manual_in_progress": "Caricamento già in corso. Riprova più tardi",
@@ -608,7 +640,7 @@
"blurred_background": "Sfondo sfocato",
"bugs_and_feature_requests": "Bug & Richieste di nuove funzionalità",
"build": "Compilazione",
- "build_image": "Compila Immagine",
+ "build_image": "Immagine Compilata",
"bulk_delete_duplicates_confirmation": "Sei sicuro di voler cancellare {count, plural, one {# asset duplicato} other {# assets duplicati}}? Questa operazione manterrà l'asset più pesante di ogni gruppo e cancellerà permanentemente tutti gli altri duplicati. Non puoi annullare questa operazione!",
"bulk_keep_duplicates_confirmation": "Sei sicuro di voler tenere {count, plural, one {# asset duplicato} other {# assets duplicati}}? Questa operazione risolverà tutti i gruppi duplicati senza cancellare nulla.",
"bulk_trash_duplicates_confirmation": "Sei davvero sicuro di voler cancellare {count, plural, one {# asset duplicato} other {# assets duplicati}}? Questa operazione manterrà l'asset più pesante di ogni gruppo e cancellerà permanentemente tutti gli altri duplicati.",
@@ -650,12 +682,16 @@
"change_password_description": "È stato richiesto di cambiare la password (oppure è la prima volta che accedi). Inserisci la tua nuova password qui sotto.",
"change_password_form_confirm_password": "Conferma Password",
"change_password_form_description": "Ciao {name},\n\nQuesto è la prima volta che accedi al sistema oppure è stato fatto una richiesta di cambiare la password. Per favore inserisca la nuova password qui sotto.",
+ "change_password_form_log_out": "Log out da tutti gli altri dispositivi",
+ "change_password_form_log_out_description": "È consigliato il log out da tutti gli altri dispositivi",
"change_password_form_new_password": "Nuova Password",
"change_password_form_password_mismatch": "Le password non coincidono",
"change_password_form_reenter_new_password": "Inserisci ancora la nuova password",
"change_pin_code": "Cambia il codice PIN",
"change_your_password": "Modifica la tua password",
"changed_visibility_successfully": "Visibilità modificata con successo",
+ "charging": "In carica",
+ "charging_requirement_mobile_backup": "Il backup in background richiede che il dispositivo sia in carica",
"check_corrupt_asset_backup": "Verifica la presenza di backup di asset corrotti",
"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.",
@@ -675,7 +711,7 @@
"client_cert_invalid_msg": "File certificato invalido o password errata",
"client_cert_remove_msg": "Certificato client rimosso",
"client_cert_subtitle": "Supporta solo il formato PKCS12 (.p12, .pfx). L'importazione/rimozione del certificato è disponibile solo prima del login",
- "client_cert_title": "Certificato Client SSL",
+ "client_cert_title": "Certificato Client SSL [SPERIMENTALE]",
"clockwise": "Senso orario",
"close": "Chiudi",
"collapse": "Restringi",
@@ -687,7 +723,6 @@
"comments_and_likes": "Commenti & mi piace",
"comments_are_disabled": "I commenti sono disabilitati",
"common_create_new_album": "Crea nuovo Album",
- "common_server_error": "Verifica la connessione di rete, assicurati che il server sia raggiungibile e che le versioni dell’app e del server siano compatibili.",
"completed": "Completato",
"confirm": "Conferma",
"confirm_admin_password": "Conferma password dell'amministratore",
@@ -722,10 +757,11 @@
"copy_to_clipboard": "Copia negli appunti",
"country": "Nazione",
"cover": "Riempi la finestra",
- "covers": "Copre",
+ "covers": "Copertine",
"create": "Crea",
"create_album": "Crea album",
"create_album_page_untitled": "Senza titolo",
+ "create_api_key": "Crea chiave API",
"create_library": "Crea libreria",
"create_link": "Crea link",
"create_link_to_share": "Crea link da condividere",
@@ -755,9 +791,10 @@
"daily_title_text_date_year": "E, dd MMM, yyyy",
"dark": "Scuro",
"dark_theme": "Imposta tema scuro",
- "date_after": "Data dopo",
+ "date": "Data",
+ "date_after": "Dopo la data",
"date_and_time": "Data e ora",
- "date_before": "Data prima",
+ "date_before": "Prima della data",
"date_format": "E, d LLL, y • hh:mm",
"date_of_birth_saved": "Data di nascita salvata con successo",
"date_range": "Intervallo di date",
@@ -869,7 +906,6 @@
"edit_tag": "Modifica tag",
"edit_title": "Modifica Titolo",
"edit_user": "Modifica utente",
- "edited": "Modificato",
"editor": "Editor",
"editor_close_without_save_prompt": "Le modifiche non verranno salvate",
"editor_close_without_save_title": "Vuoi chiudere l'editor?",
@@ -1025,6 +1061,7 @@
"exif_bottom_sheet_description_error": "Errore durante l'aggiornamento della descrizione",
"exif_bottom_sheet_details": "DETTAGLI",
"exif_bottom_sheet_location": "POSIZIONE",
+ "exif_bottom_sheet_no_description": "Nessuna descrizione",
"exif_bottom_sheet_people": "PERSONE",
"exif_bottom_sheet_person_add_person": "Aggiungi nome",
"exit_slideshow": "Esci dalla presentazione",
@@ -1063,6 +1100,7 @@
"features_setting_description": "Gestisci le funzionalità dell'app",
"file_name": "Nome file",
"file_name_or_extension": "Nome file o estensione",
+ "file_size": "Dimensione del file",
"filename": "Nome file",
"filetype": "Tipo file",
"filter": "Filtro",
@@ -1102,11 +1140,10 @@
"hash_asset": "Risorsa hash",
"hashed_assets": "Risorse hash",
"hashing": "Hashing",
- "header_settings_add_header_tip": "Aggiungi Header",
+ "header_settings_add_header_tip": "Aggiungi header",
"header_settings_field_validator_msg": "Il valore non può essere vuoto",
"header_settings_header_name_input": "Nome header",
"header_settings_header_value_input": "Valore header",
- "headers_settings_tile_subtitle": "Definisci gli header per i proxy che l'app deve inviare con ogni richiesta di rete",
"headers_settings_tile_title": "Header proxy personalizzati",
"hi_user": "Ciao {name} ({email})",
"hide_all_people": "Nascondi tutte le persone",
@@ -1161,7 +1198,7 @@
"in_archive": "In archivio",
"include_archived": "Includi Archiviati",
"include_shared_albums": "Includi album condivisi",
- "include_shared_partner_assets": "Includi asset condivisi del compagno",
+ "include_shared_partner_assets": "Includi elementi condivisi dai compagni",
"individual_share": "Condivisione individuale",
"individual_shares": "Condivisioni individuali",
"info": "Info",
@@ -1227,6 +1264,7 @@
"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",
+ "location": "Posizione",
"location_permission": "Permesso di localizzazione",
"location_permission_content": "Per usare la funzione di cambio automatico, Immich necessita del permesso di localizzazione così da poter leggere il nome della rete Wi-Fi in uso",
"location_picker_choose_on_map": "Scegli una mappa",
@@ -1331,6 +1369,8 @@
"minute": "Minuto",
"minutes": "Minuti",
"missing": "Mancanti",
+ "mobile_app": "App Cellulare",
+ "mobile_app_download_onboarding_note": "Scarica l’app mobile dedicata utilizzando una delle seguenti opzioni",
"model": "Modello",
"month": "Mese",
"monthly_title_text_date_format": "MMMM y",
@@ -1349,14 +1389,18 @@
"my_albums": "I miei album",
"name": "Nome",
"name_or_nickname": "Nome o soprannome",
+ "navigate": "Naviga",
+ "navigate_to_time": "Navigazione alla data",
"network_requirement_photos_upload": "Utilizza la connessione dati per il backup delle foto",
"network_requirement_videos_upload": "Utilizza la connessione dati per il backup dei video",
+ "network_requirements": "Requisiti di rete",
"network_requirements_updated": "Requisiti di rete modificati, coda di backup reimpostata",
"networking_settings": "Rete",
"networking_subtitle": "Gestisci le impostazioni riguardanti gli endpoint del server",
"never": "Mai",
"new_album": "Nuovo Album",
"new_api_key": "Nuova Chiave di API",
+ "new_date_range": "Nuovo intervallo di date",
"new_password": "Nuova password",
"new_person": "Nuova persona",
"new_pin_code": "Nuovo codice PIN",
@@ -1407,6 +1451,9 @@
"notifications": "Notifiche",
"notifications_setting_description": "Gestisci notifiche",
"oauth": "OAuth",
+ "obtainium_configurator": "Configuratore Obtainium",
+ "obtainium_configurator_instructions": "Utilizza Obtainium per installare e aggiornare l'app Android direttamente dalla versione rilasciata su GitHub da Immich. Crea una chiave API e seleziona una variante per creare il tuo link di configurazione Obtainium",
+ "ocr": "OCR",
"official_immich_resources": "Risorse Ufficiali Immich",
"offline": "Offline",
"offset": "Offset",
@@ -1511,10 +1558,14 @@
"play_memories": "Riproduci ricordi",
"play_motion_photo": "Riproduci foto in movimento",
"play_or_pause_video": "Avvia o metti in pausa il video",
+ "play_original_video": "Riproduci il video originale",
+ "play_original_video_setting_description": "Preferisci la riproduzione dei video originali anzichè ricodificarli. Se l'originale non è compatibile non sarà riprodotto correttamente.",
+ "play_transcoded_video": "Riproduci video ricodificato",
"please_auth_to_access": "Autenticati per accedere",
"port": "Porta",
"preferences_settings_subtitle": "Gestisci le preferenze dell'app",
"preferences_settings_title": "Preferenze",
+ "preparing": "Preparando",
"preset": "Preimpostazione",
"preview": "Anteprima",
"previous": "Precedente",
@@ -1527,13 +1578,9 @@
"privacy": "Privacy",
"profile": "Profilo",
"profile_drawer_app_logs": "Registri",
- "profile_drawer_client_out_of_date_major": "L’app non è aggiornata. Aggiorna all’ultima versione principale.",
- "profile_drawer_client_out_of_date_minor": "L'applicazione non è aggiornata. Aggiorna all'ultima versione minore.",
"profile_drawer_client_server_up_to_date": "Client e server sono aggiornati",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Modalità di sola lettura abilitata. Tieni premuto sull'avatar dell'utente per disabilitarla.",
- "profile_drawer_server_out_of_date_major": "Il server non è aggiornato. Aggiorna all'ultima versione principale.",
- "profile_drawer_server_out_of_date_minor": "Il server non è aggiornato. Aggiorna all'ultima versione minore.",
"profile_image_of_user": "Immagine profilo di {user}",
"profile_picture_set": "Foto profilo impostata.",
"public_album": "Album pubblico",
@@ -1580,6 +1627,7 @@
"read_changelog": "Leggi Riepilogo Modifiche",
"readonly_mode_disabled": "Modalità di sola lettura disabilitata",
"readonly_mode_enabled": "Modalità di sola lettura abilitata",
+ "ready_for_upload": "Pronto per il caricamento",
"reassign": "Riassegna",
"reassigned_assets_to_existing_person": "{count, plural, one {Riassegnato # asset} other {Riassegnati # assets}} {name, select, null {ad una persona esistente} other {a {name}}}",
"reassigned_assets_to_new_person": "{count, plural, one {Riassegnato # asset} other {Riassegnati # assets}} ad una nuova persona",
@@ -1649,6 +1697,7 @@
"reset_sqlite_confirmation": "Vuoi davvero reimpostare il database SQLite? Dovrai disconnetterti e riconnetterti per risincronizzare i dati",
"reset_sqlite_success": "Database SQLite reimpostato correttamente",
"reset_to_default": "Ripristina i valori predefiniti",
+ "resolution": "Risoluzione",
"resolve_duplicates": "Risolvi duplicati",
"resolved_all_duplicates": "Tutti i duplicati sono stati risolti",
"restore": "Ripristina",
@@ -1683,6 +1732,9 @@
"search_by_description_example": "Giornata di escursioni a Sapa",
"search_by_filename": "Cerca per nome del file o estensione",
"search_by_filename_example": "es. IMG_1234.JPG o PNG",
+ "search_by_ocr": "Ricerca tramite OCR",
+ "search_by_ocr_example": "Caffè Latte",
+ "search_camera_lens_model": "Cerca il modello del'obiettivo...",
"search_camera_make": "Cerca produttore fotocamera...",
"search_camera_model": "Cerca modello fotocamera...",
"search_city": "Cerca città...",
@@ -1699,6 +1751,7 @@
"search_filter_location_title": "Seleziona posizione",
"search_filter_media_type": "Tipo di media",
"search_filter_media_type_title": "Seleziona il tipo di media",
+ "search_filter_ocr": "Cerca tramite OCR",
"search_filter_people_title": "Seleziona persone",
"search_for": "Cerca per",
"search_for_existing_person": "Cerca per persona esistente",
@@ -1706,11 +1759,11 @@
"search_no_people": "Nessuna persona",
"search_no_people_named": "Nessuna persona chiamate \"{name}\"",
"search_no_result": "Nessun risultato trovato, prova con un termine o combinazione diversi",
- "search_options": "Opzioni Ricerca",
+ "search_options": "Opzioni di ricerca",
"search_page_categories": "Categoria",
"search_page_motion_photos": "Foto in movimento",
- "search_page_no_objects": "Nessuna informazione relativa all'oggetto disponibile",
- "search_page_no_places": "Nessun informazione sul luogo disponibile",
+ "search_page_no_objects": "Nessuna informazione sugli oggetti disponibile",
+ "search_page_no_places": "Nessuna informazione sui luoghi disponibile",
"search_page_screenshots": "Screenshot",
"search_page_search_photos_videos": "Ricerca le tue foto e i tuoi video",
"search_page_selfies": "Selfie",
@@ -1761,6 +1814,7 @@
"server_online": "Server Online",
"server_privacy": "Privacy del Server",
"server_stats": "Statistiche Server",
+ "server_update_available": "Aggiornamento Server disponibile",
"server_version": "Versione Server",
"set": "Imposta",
"set_as_album_cover": "Imposta come copertina album",
@@ -1789,6 +1843,8 @@
"setting_notifications_subtitle": "Cambia le impostazioni di notifica",
"setting_notifications_total_progress_subtitle": "Avanzamento complessivo del caricamento (completati/risorse totali)",
"setting_notifications_total_progress_title": "Mostra avanzamento del backup in background",
+ "setting_video_viewer_auto_play_subtitle": "Avvia automaticamente la riproduzione dei video quando vengono aperti",
+ "setting_video_viewer_auto_play_title": "Riproduci video automaticamente",
"setting_video_viewer_looping_title": "Looping",
"setting_video_viewer_original_video_subtitle": "Quando riproduci un video dal server, riproduci l'originale anche se è disponibile una versione transcodificata. Questo potrebbe portare a buffering. I video disponibili localmente sono sempre riprodotti a qualità originale indipendentemente da questa impostazione.",
"setting_video_viewer_original_video_title": "Forza video originale",
@@ -1906,11 +1962,12 @@
"stack_action_prompt": "{count} elementi raggruppati",
"stack_duplicates": "Raggruppa i duplicati",
"stack_select_one_photo": "Seleziona una foto principale per il gruppo",
- "stack_selected_photos": "Impila foto selezionate",
+ "stack_selected_photos": "Raggruppa foto selezionate",
"stacked_assets_count": "{count, plural, one {Raggruppato # asset} other {Raggruppati # asset}}",
"stacktrace": "Traccia dell'errore",
"start": "Avvia",
"start_date": "Data di inizio",
+ "start_date_before_end_date": "La data di inizio deve essere precedente alla data di fine",
"state": "Provincia",
"status": "Stato",
"stop_casting": "Interrompi trasmissione",
@@ -1967,6 +2024,7 @@
"theme_setting_three_stage_loading_title": "Abilita il caricamento a tre stage",
"they_will_be_merged_together": "Verranno uniti insieme",
"third_party_resources": "Risorse di Terze Parti",
+ "time": "Orario",
"time_based_memories": "Ricordi basati sul tempo",
"timeline": "Linea temporale",
"timezone": "Fuso orario",
@@ -1999,6 +2057,7 @@
"troubleshoot": "Risoluzione dei problemi",
"type": "Tipo",
"unable_to_change_pin_code": "Impossibile cambiare il codice PIN",
+ "unable_to_check_version": "Impossibile controllare la versione del server o dell'app",
"unable_to_setup_pin_code": "Impossibile configurare il codice PIN",
"unarchive": "Annulla l'archiviazione",
"unarchive_action_prompt": "{count} elementi rimossi dall'Archivio",
@@ -2022,7 +2081,7 @@
"unselect_all": "Deseleziona tutto",
"unselect_all_duplicates": "Deseleziona tutti i duplicati",
"unselect_all_in": "Deseleziona tutto in {group}",
- "unstack": "Rimuovi dal gruppo",
+ "unstack": "Separa dal gruppo",
"unstack_action_prompt": "{count} separati",
"unstacked_assets_count": "{count, plural, one {Separato # asset} other {Separati # asset}}",
"untagged": "Senza tag",
@@ -2097,9 +2156,9 @@
"view_similar_photos": "Visualizza le foto simili",
"view_stack": "Visualizza Raggruppamento",
"view_user": "Visualizza Utente",
- "viewer_remove_from_stack": "Rimuovi dalla pila",
+ "viewer_remove_from_stack": "Rimuovi dal gruppo",
"viewer_stack_use_as_main_asset": "Usa come risorsa principale",
- "viewer_unstack": "Rimuovi dal gruppo",
+ "viewer_unstack": "Separa dal gruppo",
"visibility_changed": "Visibilità modificata per {count, plural, one {# persona} other {# persone}}",
"waiting": "In Attesa",
"warning": "Attenzione",
@@ -2110,8 +2169,8 @@
"wrong_pin_code": "Codice PIN errato",
"year": "Anno",
"years_ago": "{years, plural, one {# anno} other {# anni}} fa",
- "yes": "Si",
- "you_dont_have_any_shared_links": "Non è presente alcun link condiviso",
+ "yes": "Sì",
+ "you_dont_have_any_shared_links": "Non hai nessun link condiviso",
"your_wifi_name": "Nome della tua rete Wi-Fi",
"zoom_image": "Ingrandisci immagine",
"zoom_to_bounds": "Ingrandisci fino ai bordi"
diff --git a/i18n/ja.json b/i18n/ja.json
index ccee08fa01..c3e53082e8 100644
--- a/i18n/ja.json
+++ b/i18n/ja.json
@@ -28,6 +28,7 @@
"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}つのアルバムへ追加",
@@ -123,6 +124,8 @@
"logging_enable_description": "ログの有効化",
"logging_level_description": "有効な場合に使用されるログ レベル。",
"logging_settings": "ログ",
+ "machine_learning_availability_checks": "可用性の確認",
+ "machine_learning_availability_checks_description": "利用可能な機械学習のサーバーを自動で検知し優先的に使用します",
"machine_learning_availability_checks_enabled": "可用性チェックを有効にする",
"machine_learning_availability_checks_interval": "チェックの間隔",
"machine_learning_availability_checks_interval_description": "可用性チェックの間隔(ミリ秒単位)",
@@ -428,6 +431,7 @@
"album_remove_user_confirmation": "本当に{user}を削除しますか?",
"album_search_not_found": "検索に一致するアルバムがありません",
"album_share_no_users": "このアルバムを全てのユーザーと共有したか、共有するユーザーがいないようです。",
+ "album_summary": "アルバムのまとめ",
"album_updated": "アルバム更新",
"album_updated_setting_description": "共有アルバムに新しいアセットが追加されたとき通知を受け取る",
"album_user_left": "{album} を去りました",
@@ -499,6 +503,8 @@
"asset_restored_successfully": "復元できました",
"asset_skipped": "スキップ済",
"asset_skipped_in_trash": "ゴミ箱の中",
+ "asset_trashed": "項目が削除されました",
+ "asset_troubleshoot": "項目をトラブルシューㇳ",
"asset_uploaded": "アップロード済",
"asset_uploading": "アップロード中…",
"asset_viewer_settings_subtitle": "ギャラリービューアーに関する設定",
@@ -532,8 +538,10 @@
"autoplay_slideshow": "スライドショーを自動再生",
"back": "戻る",
"back_close_deselect": "戻る、閉じる、選択解除",
+ "background_backup_running_error": "バックグラウンドのバックアップがすでに行われている最中です。そのため、マニュアルでのバックアップを開始することはできません。",
"background_location_permission": "バックグラウンド位置情報アクセス",
"background_location_permission_content": "正常にWi-Fiの名前(SSID)を獲得するにはアプリが常に詳細な位置情報にアクセスできる必要があります",
+ "background_options": "バックグラウンドの動作オプション",
"backup": "バックアップ",
"backup_album_selection_page_albums_device": "デバイス上のアルバム({count})",
"backup_album_selection_page_albums_tap": "タップで選択、ダブルタップで除外",
@@ -541,6 +549,7 @@
"backup_album_selection_page_select_albums": "アルバムを選択",
"backup_album_selection_page_selection_info": "選択・除外中のアルバム",
"backup_album_selection_page_total_assets": "選択されたアルバムの写真と動画の数",
+ "backup_albums_sync": "アルバム同期状態をバックアップ",
"backup_all": "すべて",
"backup_background_service_backup_failed_message": "アップロードに失敗しました。リトライ中…",
"backup_background_service_connection_failed_message": "サーバーに接続できません。リトライ中…",
@@ -590,6 +599,7 @@
"backup_controller_page_turn_on": "バックアップをオンにする",
"backup_controller_page_uploading_file_info": "アップロード中のファイル",
"backup_err_only_album": "最低1つのアルバムを選択してください",
+ "backup_error_sync_failed": "同期に失敗しました。バックアップができません。",
"backup_info_card_assets": "写真と動画",
"backup_manual_cancelled": "キャンセルされました",
"backup_manual_in_progress": "アップロードが進行中です。後でもう一度試してください",
@@ -657,6 +667,8 @@
"change_pin_code": "PINコードを変更",
"change_your_password": "パスワードを変更します",
"changed_visibility_successfully": "非表示設定を正常に変更しました",
+ "charging": "充電中",
+ "charging_requirement_mobile_backup": "バックグラウンドでのバックアップを行うためには、デバイスが充電中である必要があります",
"check_corrupt_asset_backup": "破損されている項目を探す",
"check_corrupt_asset_backup_button": "チェックを行う",
"check_corrupt_asset_backup_description": "写真や動画などが全てアップロードし終えてからWi-Fiに接続時のみチェックを行なってください。作業が完了するには数分かかる場合があります",
@@ -688,7 +700,6 @@
"comments_and_likes": "コメントといいね",
"comments_are_disabled": "コメントは無効化されています",
"common_create_new_album": "アルバムを作成",
- "common_server_error": "ネットワーク接続を確認し、サーバーが接続できる状態にあるか確認してください。アプリとサーバーのバージョンが一致しているかも確認してください。",
"completed": "完了",
"confirm": "確認",
"confirm_admin_password": "管理者パスワードを確認",
@@ -743,6 +754,7 @@
"create_user": "ユーザーを作成",
"created": "作成",
"created_at": "作成:",
+ "creating_linked_albums": "リンクされたアルバムを作成中・・・",
"crop": "クロップ",
"curated_object_page_title": "被写体",
"current_device": "現在のデバイス",
@@ -869,7 +881,6 @@
"edit_tag": "タグを編集する",
"edit_title": "タイトルを編集",
"edit_user": "ユーザーを編集",
- "edited": "編集しました",
"editor": "編集画面",
"editor_close_without_save_prompt": "変更は破棄されます",
"editor_close_without_save_title": "編集画面を閉じますか?",
@@ -892,7 +903,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": "エラー - 問題が発生しました",
@@ -1057,6 +1070,7 @@
"favorites_page_no_favorites": "お気に入り登録された項目がありません",
"feature_photo_updated": "人物画像が更新されました",
"features": "機能",
+ "features_in_development": "開発中の機能",
"features_setting_description": "アプリの機能を管理する",
"file_name": "ファイル名",
"file_name_or_extension": "ファイル名または拡張子",
@@ -1103,7 +1117,6 @@
"header_settings_field_validator_msg": "ヘッダを空白にはできません",
"header_settings_header_name_input": "ヘッダの名前",
"header_settings_header_value_input": "ヘッダのバリュー",
- "headers_settings_tile_subtitle": "プロキシヘッダを設定する",
"headers_settings_tile_title": "カスタムプロキシヘッダ",
"hi_user": "こんにちは、{name}( {email})さん",
"hide_all_people": "全ての人物を非表示",
@@ -1221,6 +1234,7 @@
"local": "ローカル",
"local_asset_cast_failed": "サーバーにアップロードされていない項目はキャストできません",
"local_assets": "ローカルの項目",
+ "local_media_summary": "ローカルメディアのまとめ",
"local_network": "ローカルネットワーク",
"local_network_sheet_info": "アプリは指定されたWi-Fiに繋がっている時サーバーへの接続を下記のURLで行います",
"location_permission": "位置情報権限",
@@ -1232,6 +1246,7 @@
"location_picker_longitude_hint": "経度を入力",
"lock": "ロック",
"locked_folder": "鍵付きフォルダー",
+ "log_detail_title": "ログの詳細",
"log_out": "ログアウト",
"log_out_all_devices": "全てのデバイスからログアウト",
"logged_in_as": "{user}としてログイン中",
@@ -1262,6 +1277,7 @@
"login_password_changed_success": "パスワードの変更に成功",
"logout_all_device_confirmation": "本当に全てのデバイスからログアウトしますか?",
"logout_this_device_confirmation": "本当にこのデバイスからログアウトしますか?",
+ "logs": "ログ",
"longitude": "経度",
"look": "見た目",
"loop_videos": "動画をループ",
@@ -1304,6 +1320,7 @@
"mark_as_read": "既読にする",
"marked_all_as_read": "すべて既読にしました",
"matches": "マッチ",
+ "matching_assets": "一致する項目",
"media_type": "メディアタイプ",
"memories": "メモリー",
"memories_all_caught_up": "これで全部です",
@@ -1344,6 +1361,7 @@
"name_or_nickname": "名前またはニックネーム",
"network_requirement_photos_upload": "モバイル通信を使用して写真のバックアップを行う",
"network_requirement_videos_upload": "モバイル通信を使用して動画のバックアップを行う",
+ "network_requirements": "ネットワークの要件",
"network_requirements_updated": "ネットワークの条件が変更されたため、バックアップの順番待ちをリセットします",
"networking_settings": "ネットワーク",
"networking_subtitle": "サーバーエンドポイントに関する設定",
@@ -1354,6 +1372,7 @@
"new_person": "新しい人物",
"new_pin_code": "新しいPINコード",
"new_pin_code_subtitle": "鍵付きフォルダーを利用するのが初めてのようです。PINコードを作成してください",
+ "new_timeline": "新たなタイムライン",
"new_user_created": "新しいユーザーが作成されました",
"new_version_available": "新しいバージョンが利用可能",
"newest_first": "最新順",
@@ -1367,20 +1386,25 @@
"no_assets_message": "クリックして最初の写真をアップロード",
"no_assets_to_show": "表示する項目がありません",
"no_cast_devices_found": "キャスト先のデバイスが見つかりません",
+ "no_checksum_local": "チェックサムが見つかりません - デバイス上の項目を取得できないようです",
+ "no_checksum_remote": "チェックサムが見つかりません - サーバー上の項目を取得できないようです",
"no_duplicates_found": "重複は見つかりませんでした。",
"no_exif_info_available": "exif情報が利用できません",
"no_explore_results_message": "コレクションを探索するにはさらに写真をアップロードしてください。",
"no_favorites_message": "お気に入り登録すると好きな写真や動画をすぐに見つけられます",
"no_libraries_message": "あなたの写真や動画を表示するための外部ライブラリを作成しましょう",
+ "no_local_assets_found": "このチェックサムの項目はデバイス上に存在しません",
"no_locked_photos_message": "鍵付きフォルダー内の写真や動画は通常のライブラリに表示されなくなります。",
"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": "アップロードは行われていません",
+ "not_available": "適用なし",
"not_in_any_album": "どのアルバムにも入っていない",
"not_selected": "選択なし",
"note_apply_storage_label_to_previously_uploaded assets": "注意: 以前にアップロードしたアセットにストレージラベルを適用するには以下を実行してください",
@@ -1515,13 +1539,9 @@
"privacy": "プライバシー",
"profile": "プロフィール",
"profile_drawer_app_logs": "ログ",
- "profile_drawer_client_out_of_date_major": "アプリが更新されてません。最新のバージョンに更新してください",
- "profile_drawer_client_out_of_date_minor": "アプリが更新されてません。最新のバージョンに更新してください",
"profile_drawer_client_server_up_to_date": "すべて最新版です",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "読み取り専用モードが有効です。ユーザーのアイコンを長押しして読み取り専用モードを解除してください。",
- "profile_drawer_server_out_of_date_major": "サーバーが更新されてません。最新のバージョンに更新してください",
- "profile_drawer_server_out_of_date_minor": "サーバーが更新されてません。最新のバージョンに更新してください",
"profile_image_of_user": "{user} のプロフィール画像",
"profile_picture_set": "プロフィール画像が設定されました。",
"public_album": "公開アルバム",
@@ -1593,6 +1613,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 {#個}}のアセットを削除しますか?",
@@ -1868,6 +1889,7 @@
"show_slideshow_transition": "スライドショーのトランジションを表示",
"show_supporter_badge": "サポーターバッジ",
"show_supporter_badge_description": "サポーターバッジを表示",
+ "show_text_search_menu": "テキスト検索メニューを表示",
"shuffle": "ランダム",
"sidebar": "サイドバー",
"sidebar_display_description": "サイドバーにビューへのリンクを表示",
@@ -2101,5 +2123,6 @@
"yes": "はい",
"you_dont_have_any_shared_links": "共有リンクはありません",
"your_wifi_name": "Wi-Fiの名前(SSID)",
- "zoom_image": "画像を拡大"
+ "zoom_image": "画像を拡大",
+ "zoom_to_bounds": "画面端までズーム"
}
diff --git a/i18n/ka.json b/i18n/ka.json
index 13b0e1d065..063419db11 100644
--- a/i18n/ka.json
+++ b/i18n/ka.json
@@ -14,6 +14,7 @@
"add_a_location": "დაამატე ადგილი",
"add_a_name": "დაამატე სახელი",
"add_a_title": "დაასათაურე",
+ "add_birthday": "დაბადების დღის დამატება",
"add_exclusion_pattern": "დაამატე გამონაკლისი ნიმუში",
"add_import_path": "დაამატე საიმპორტო მისამართი",
"add_location": "დაამატე ადგილი",
@@ -21,16 +22,20 @@
"add_partner": "დაამატე პარტნიორი",
"add_path": "დაამატე მისამართი",
"add_photos": "დაამატე ფოტოები",
+ "add_tag": "დაამატე თეგი",
"add_to": "დაამატე ...ში",
"add_to_album": "დაამატე ალბომში",
"add_to_album_bottom_sheet_added": "დამატებულია {album}-ში",
"add_to_album_bottom_sheet_already_exists": "{album}-ში უკვე არსებობს",
+ "add_to_albums": "დაამატე ალბომებში",
+ "add_to_albums_count": "დაამატე ალბომში ({count})",
"add_to_shared_album": "დაამატე საზიარო ალბომში",
"add_url": "დაამატე URL",
"added_to_archive": "დაარქივდა",
"added_to_favorites": "დაამატე რჩეულებში",
"added_to_favorites_count": "{count, number} დაემატა რჩეულებში",
"admin": {
+ "admin_user": "ადმინ მომხმარებელი",
"asset_offline_description": "ეს საგარეო ბიბლიოთეკის აქტივი დისკზე ვერ მოიძებნა და სანაგვეში იქნა მოთავსებული. თუ ფაილი ბიბლიოთეკის შიგნით მდებარეობს, შეამოწმეთ შესაბამისი აქტივი ტაიმლაინზე. ამ აქტივის აღსადგენად, დარწმუნდით რომ ქვემოთ მოცემული ფაილის მისამართი Immich-ის მიერ წვდომადია და დაასკანერეთ ბიბლიოთეკა.",
"authentication_settings": "ავთენტიკაციის პარამეტრები",
"authentication_settings_description": "პაროლის, OAuth-ის და სხვა ავტენთიფიკაციის პარამეტრების მართვა",
@@ -41,7 +46,7 @@
"backup_database_enable_description": "ბაზის დამპების ჩართვა",
"backup_keep_last_amount": "წინა დამპების შესანარჩუნებელი რაოდენობა",
"backup_settings": "მონაცემთა ბაზის დამპის მორგება",
- "backup_settings_description": "მონაცემთა ბაზის პარამეტრების ამრთვა. შენიშვნა: ამ დავალებების მონიტორინგი არ ხდება და თქვენ არ მოგივათ შეტყობინება, თუ ის ჩავარდება.",
+ "backup_settings_description": "მონაცემთა ბაზის ასლის შექმნის პარამეტრების მრთვა.",
"cleared_jobs": "დავალებები {job}-ისათვის გაწმენდილია",
"config_set_by_file": "მიმდინარე კონფიგურაცია ფაილის მიერ არის დაყენებული",
"confirm_delete_library": "ნამდვილად გინდა {library} ბიბლიოთეკის წაშლა?",
@@ -58,6 +63,7 @@
"image_format_description": "WebP ფორმატი JPEG-ზე პატარა ფაილებს აწარმოებს, მაგრამ მის დამზადებას უფრო მეტი დრო სჭირდება.",
"image_fullsize_title": "სრული ზომის გამოსახულების პარამეტრები",
"image_prefer_wide_gamut": "უპირატესობა მიენიჭოს ფერის ფართე დიაპაზონს",
+ "image_preview_title": "გამოსახულების გადახედვის პარამეტრები",
"image_quality": "ხარისხი",
"image_resolution": "გაფართოება",
"image_settings": "გამოსახულების პარამეტრები",
@@ -68,6 +74,7 @@
"library_created": "შეიქმნა ბიბლიოთეკა: {library}",
"library_deleted": "ბიბლიოთეკა წაიშალა",
"library_import_path_description": "აირჩიე დასაიმპორტებელი საქაღალდე. ფოტოები და ვიდეოები მოიძებნება ამ საქაღალდესა და მასში არსებულ საქაღალდეებში.",
+ "library_settings": "გარე ბიბლიოთეკა",
"library_settings_description": "გარე ბიბლიოთეკების პარამეტრების მართვა",
"logging_settings": "ჟურნალი",
"map_settings": "რუკა",
@@ -125,7 +132,6 @@
"duplicates": "დუბლიკატები",
"duration": "ხანგრძლივობა",
"edit": "ჩასწორება",
- "edited": "ჩასწორებულია",
"editor": "რედაქტორი",
"editor_crop_tool_h2_rotation": "ტრიალი",
"email": "ელფოსტა",
diff --git a/i18n/kn.json b/i18n/kn.json
index 388f06704c..111c802a1e 100644
--- a/i18n/kn.json
+++ b/i18n/kn.json
@@ -8,11 +8,13 @@
"actions": "ಕ್ರಿಯೆಗಳು",
"active": "ಸಕ್ರಿಯ",
"activity": "ಚಟುವಟಿಕೆ",
+ "activity_changed": "ಚಟುವಟಿಕೆ {enabled, select, true{ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ} other {ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ}}",
"add": "ಸೇರಿಸಿ",
"add_a_description": "ವಿವರಣೆಯನ್ನು ಸೇರಿಸಿ",
"add_a_location": "ಸ್ಥಳವನ್ನು ಸೇರಿಸಿ",
"add_a_name": "ಹೆಸರನ್ನು ಸೇರಿಸಿ",
"add_a_title": "ಶೀರ್ಷಿಕೆಯನ್ನು ಸೇರಿಸಿ",
+ "add_birthday": "ಜನ್ಮದಿನ ಸೇರಿಸಿ",
"add_endpoint": "ಎಂಡ್ಪಾಯಿಂಟ್ ಸೇರಿಸಿ",
"add_exclusion_pattern": "ಹೊರಗಿಡುವಿಕೆ ಮಾದರಿಯನ್ನು ಸೇರಿಸಿ",
"add_import_path": "ಆಮದು ಮಾರ್ಗವನ್ನು ಸೇರಿಸಿ",
@@ -22,5 +24,6 @@
"add_path": "ಹಾದಿಯನ್ನು ಸೇರಿಸಿ",
"add_photos": "ಫೋಟೋಗಳನ್ನು ಸೇರಿಸಿ",
"add_to": "ಸೇರಿಸಿ…",
- "add_to_album": "ಆಲ್ಬಮ್ಗೆ ಸೇರಿಸಿ"
+ "add_to_album": "ಆಲ್ಬಮ್ಗೆ ಸೇರಿಸಿ",
+ "add_to_album_bottom_sheet_added": "{album}ಗೆ ಸೇರಿಸಿದೆ"
}
diff --git a/i18n/ko.json b/i18n/ko.json
index 815f1b2b2f..8a4094c4b0 100644
--- a/i18n/ko.json
+++ b/i18n/ko.json
@@ -28,10 +28,12 @@
"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_shared_album": "공유 앨범에 추가",
+ "add_upload_to_stack": "스택에 업로드 추가",
"add_url": "URL 추가",
"added_to_archive": "보관함으로 이동되었습니다.",
"added_to_favorites": "즐겨찾기에 추가되었습니다.",
@@ -123,6 +125,13 @@
"logging_enable_description": "로그 기록 활성화",
"logging_level_description": "활성화 시 사용할 로그 레벨을 선택합니다.",
"logging_settings": "로깅",
+ "machine_learning_availability_checks": "가용성 확인",
+ "machine_learning_availability_checks_description": "사용 가능한 기계 학습 서버를 자동으로 감지하고 우선적으로 선택합니다.",
+ "machine_learning_availability_checks_enabled": "가용성 확인 활성화",
+ "machine_learning_availability_checks_interval": "확인 주기",
+ "machine_learning_availability_checks_interval_description": "가용성 확인 주기 (밀리초 단위)",
+ "machine_learning_availability_checks_timeout": "요청 타임아웃",
+ "machine_learning_availability_checks_timeout_description": "가용성 확인 요청 타임아웃 (밀리초 단위)",
"machine_learning_clip_model": "CLIP 모델",
"machine_learning_clip_model_description": "CLIP 모델의 종류는 이곳을 참조하세요. 한국어 등 여러 언어로 검색하려면 Multilingual CLIP 모델을 선택하세요. 모델을 변경한 경우 모든 이미지의 '스마트 검색' 작업을 다시 실행해야 합니다.",
"machine_learning_duplicate_detection": "비슷한 항목 감지",
@@ -145,6 +154,10 @@
"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_min_detection_score": "최소 신뢰도 점수",
"machine_learning_settings": "기계 학습 설정",
"machine_learning_settings_description": "기계 학습 시 사용할 모델과 세부 설정을 관리합니다.",
"machine_learning_smart_search": "스마트 검색",
@@ -202,6 +215,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": "테스트 이메일 전송",
@@ -324,7 +339,7 @@
"transcoding_max_b_frames": "최대 B-프레임",
"transcoding_max_b_frames_description": "값을 높이면 압축 효율이 향상되지만 인코딩 속도가 느려집니다. 오래된 장치의 하드웨어 가속과 호환되지 않을 수 있습니다. 0을 입력하면 B-프레임을 비활성화하고, -1을 입력하면 자동으로 설정합니다.",
"transcoding_max_bitrate": "최대 비트레이트",
- "transcoding_max_bitrate_description": "최대 비트레이트를 지정하면 파일 크기를 일정하게 조절할 수 있지만 품질이 다소 저하될 수 있습니다. 일반적으로 720p 기준 VP9와 HEVC는 2600kbit/s를, H.264는 4500kbit/s를 사용합니다. 0을 입력하면 비활성화됩니다.",
+ "transcoding_max_bitrate_description": "최대 비트레이트를 지정하면 파일 크기가 예측 가능해지지만 품질이 다소 저하될 수 있습니다. 일반적으로 720p 해상도에서는 VP9, HEVC가 2600kbit/s, H.264는 4500kbit/s를 사용하며, 0으로 설정하면 비활성화됩니다. 단위를 생략하면 k(kbit/s)로 간주되며 5000, 5000k, 5M(Mbit/s)은 같은 값으로 처리됩니다.",
"transcoding_max_keyframe_interval": "최대 키프레임 간격",
"transcoding_max_keyframe_interval_description": "키프레임 간 최대 프레임 간격을 설정합니다. 값을 낮추면 압축 효율은 떨어지지만 탐색 속도가 빨라지고 움직임이 많은 장면에서 품질이 향상될 수 있습니다. 0을 입력하면 자동으로 설정합니다.",
"transcoding_optimal_description": "목표 해상도를 초과하거나 허용되지 않은 포맷의 동영상",
@@ -342,7 +357,7 @@
"transcoding_target_resolution": "목표 해상도",
"transcoding_target_resolution_description": "해상도를 높이면 세부 정보가 더 많이 보존되지만, 인코딩 시간이 늘어나고 파일 크기가 커져 앱 반응 속도가 느려질 수 있습니다.",
"transcoding_temporal_aq": "Temporal AQ",
- "transcoding_temporal_aq_description": "(NVENC인 경우) 디테일이 많고 정적인 장면의 품질이 향상됩니다. 오래된 기기에서 호환되지 않을 수 있습니다.",
+ "transcoding_temporal_aq_description": "NVENC에만 적용됩니다. Temporal Adaptive Quantization은 디테일이 많고 정적인 장면의 품질이 향상됩니다. 오래된 기기에서 호환되지 않을 수 있습니다.",
"transcoding_threads": "스레드 수",
"transcoding_threads_description": "값을 높이면 인코딩 속도가 빨라지지만, 서버가 다른 작업을 처리할 여유가 줄어듭니다. 입력한 값은 CPU 코어 수를 초과하지 않아야 하며, 0으로 설정하면 CPU를 최대한 활용합니다.",
"transcoding_tone_mapping": "톤 매핑",
@@ -393,10 +408,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": "고급 사용자 설정",
@@ -422,6 +438,7 @@
"album_remove_user_confirmation": "{user}님을 앨범에서 제거하시겠습니까?",
"album_search_not_found": "검색 결과에 해당하는 앨범이 없습니다.",
"album_share_no_users": "이미 모든 사용자와 앨범을 공유했거나 공유할 사용자가 없습니다.",
+ "album_summary": "앨범 요약",
"album_updated": "항목 추가 알림",
"album_updated_setting_description": "공유 앨범에 항목이 추가된 경우 이메일 알림 받기",
"album_user_left": "{album} 앨범에서 나옴",
@@ -455,10 +472,14 @@
"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": "보관함",
@@ -493,6 +514,8 @@
"asset_restored_successfully": "항목이 복원되었습니다.",
"asset_skipped": "건너뜀",
"asset_skipped_in_trash": "휴지통의 항목",
+ "asset_trashed": "항목 삭제됨",
+ "asset_troubleshoot": "항목 트러블슈팅",
"asset_uploaded": "업로드 완료",
"asset_uploading": "업로드 중…",
"asset_viewer_settings_subtitle": "갤러리 보기 설정을 관리합니다.",
@@ -526,8 +549,10 @@
"autoplay_slideshow": "슬라이드 쇼 자동 재생",
"back": "뒤로",
"back_close_deselect": "뒤로, 닫기 또는 선택 해제",
+ "background_backup_running_error": "백그라운드 백업이 진행 중입니다. 수동 백업을 시작할 수 없습니다.",
"background_location_permission": "백그라운드 위치 권한",
"background_location_permission_content": "Immich가 백그라운드에서 실행 중일 때 네트워크를 전환하려면 Wi-Fi 네트워크 이름을 확인해야 하며, 이를 위해 '정확한 위치' 권한을 항상 허용해야 합니다.",
+ "background_options": "백그라운드 옵션",
"backup": "백업",
"backup_album_selection_page_albums_device": "기기의 앨범 ({count})",
"backup_album_selection_page_albums_tap": "탭하여 포함, 두 번 탭하여 제외",
@@ -535,8 +560,10 @@
"backup_album_selection_page_select_albums": "앨범 선택",
"backup_album_selection_page_selection_info": "선택한 앨범",
"backup_album_selection_page_total_assets": "전체 항목",
+ "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": "새로운 항목을 확인하는 중…",
@@ -584,6 +611,7 @@
"backup_controller_page_turn_on": "활성화",
"backup_controller_page_uploading_file_info": "파일 정보 업로드 중",
"backup_err_only_album": "유일한 앨범은 삭제할 수 없습니다.",
+ "backup_error_sync_failed": "동기화에 실패했습니다. 백업을 진행할 수 없습니다.",
"backup_info_card_assets": "항목",
"backup_manual_cancelled": "취소됨",
"backup_manual_in_progress": "업로드가 이미 진행 중입니다. 잠시 후 다시 시도하세요",
@@ -651,6 +679,8 @@
"change_pin_code": "PIN 코드 변경",
"change_your_password": "사용자 계정의 비밀번호를 변경합니다.",
"changed_visibility_successfully": "숨김 여부가 변경되었습니다.",
+ "charging": "충전 중",
+ "charging_requirement_mobile_backup": "백그라운드 백업은 기기가 충전 중일 때 진행됩니다.",
"check_corrupt_asset_backup": "백업된 항목의 손상 여부 확인",
"check_corrupt_asset_backup_button": "확인 수행",
"check_corrupt_asset_backup_description": "이 검사는 모든 항목이 백업된 후 Wi-Fi가 연결된 상태에서만 실행하세요. 이 작업은 몇 분 정도 소요될 수 있습니다.",
@@ -670,7 +700,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": "접기",
@@ -682,7 +712,6 @@
"comments_and_likes": "댓글 및 좋아요",
"comments_are_disabled": "댓글이 비활성화되었습니다.",
"common_create_new_album": "앨범 생성",
- "common_server_error": "네트워크 연결 상태를 확인하고, 서버에 접속할 수 있는지, 앱/서버 버전이 호환되는지 확인해주세요.",
"completed": "완료됨",
"confirm": "확인",
"confirm_admin_password": "관리자 비밀번호 확인",
@@ -721,6 +750,7 @@
"create": "생성",
"create_album": "앨범 생성",
"create_album_page_untitled": "제목 없음",
+ "create_api_key": "API 키 생성",
"create_library": "새 라이브러리",
"create_link": "링크 생성",
"create_link_to_share": "공유 링크 생성",
@@ -737,6 +767,7 @@
"create_user": "사용자 계정 생성",
"created": "생성됨",
"created_at": "생성됨",
+ "creating_linked_albums": "연결된 앨범 생성 중...",
"crop": "자르기",
"curated_object_page_title": "사물",
"current_device": "현재 기기",
@@ -863,7 +894,6 @@
"edit_tag": "태그 수정",
"edit_title": "제목 변경",
"edit_user": "사용자 수정",
- "edited": "수정되었습니다.",
"editor": "편집자",
"editor_close_without_save_prompt": "변경 사항이 저장되지 않습니다.",
"editor_close_without_save_title": "편집을 종료하시겠습니까?",
@@ -886,7 +916,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": "오류 - 문제가 발생했습니다",
@@ -1017,6 +1049,7 @@
"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": "슬라이드 쇼 종료",
@@ -1051,6 +1084,7 @@
"favorites_page_no_favorites": "즐겨찾기된 항목 없음",
"feature_photo_updated": "대표 사진 업데이트됨",
"features": "기능",
+ "features_in_development": "개발 중인 기능",
"features_setting_description": "사진 및 동영상 관리 기능을 설정합니다.",
"file_name": "파일 이름",
"file_name_or_extension": "파일명 또는 확장자",
@@ -1069,8 +1103,9 @@
"forgot_pin_code_question": "PIN 번호를 잊어버렸나요?",
"forward": "앞으로",
"gcast_enabled": "구글 캐스트",
- "gcast_enabled_description": "이 기능은 Google의 외부 리소스를 사용하여 실행됩니다.",
+ "gcast_enabled_description": "이 기능은 Google의 외부 리소스를 사용합니다.",
"general": "일반",
+ "geolocation_instruction_location": "GPS 좌표가 포함된 항목을 클릭해 위치를 사용하거나, 지도에서 직접 위치를 선택하세요.",
"get_help": "도움 얻기",
"get_wifiname_error": "Wi-Fi 이름을 가져올 수 없습니다. 필수 권한이 부여되었는지, Wi-Fi 네트워크에 연결되어 있는지 확인하세요.",
"getting_started": "시작하기",
@@ -1096,7 +1131,6 @@
"header_settings_field_validator_msg": "값은 비워둘 수 없습니다.",
"header_settings_header_name_input": "헤더 이름",
"header_settings_header_value_input": "헤더 값",
- "headers_settings_tile_subtitle": "네트워크 요청 전송에 포함할 프록시 헤더를 정의합니다.",
"headers_settings_tile_title": "사용자 지정 프록시 헤더",
"hi_user": "안녕하세요 {name}님, ({email})",
"hide_all_people": "모든 인물 숨기기",
@@ -1214,6 +1248,7 @@
"local": "로컬",
"local_asset_cast_failed": "서버에 업로드되지 않은 항목을 캐스팅할 수 없음",
"local_assets": "로컬 항목",
+ "local_media_summary": "로컬 미디어 요약",
"local_network": "로컬 네트워크",
"local_network_sheet_info": "지정된 Wi-Fi를 사용할 때 앱이 아래 URL로 서버에 연결합니다.",
"location_permission": "위치 권한",
@@ -1225,6 +1260,7 @@
"location_picker_longitude_hint": "여기에 경도를 입력하세요",
"lock": "잠금",
"locked_folder": "잠금 폴더",
+ "log_detail_title": "상세 로그",
"log_out": "로그아웃",
"log_out_all_devices": "모든 기기에서 로그아웃",
"logged_in_as": "{user}로 로그인됨",
@@ -1255,6 +1291,7 @@
"login_password_changed_success": "비밀번호가 변경되었습니다.",
"logout_all_device_confirmation": "모든 기기에서 로그아웃하시겠습니까?",
"logout_this_device_confirmation": "이 기기에서 로그아웃하시겠습니까?",
+ "logs": "로그",
"longitude": "경도",
"look": "보기",
"loop_videos": "동영상 반복",
@@ -1297,6 +1334,7 @@
"mark_as_read": "읽음으로 표시",
"marked_all_as_read": "모두 읽음으로 표시했습니다.",
"matches": "일치",
+ "matching_assets": "일치하는 항목",
"media_type": "미디어 종류",
"memories": "추억",
"memories_all_caught_up": "모두 확인함",
@@ -1317,6 +1355,8 @@
"minute": "분",
"minutes": "분",
"missing": "누락",
+ "mobile_app": "모바일 앱",
+ "mobile_app_download_onboarding_note": "다음 옵션 중 하나를 사용해 모바일 앱을 다운로드하세요.",
"model": "모델",
"month": "월",
"monthly_title_text_date_format": "yyyy년 M월",
@@ -1335,18 +1375,23 @@
"my_albums": "내 앨범",
"name": "이름",
"name_or_nickname": "이름 또는 닉네임",
+ "navigate": "탐색",
+ "navigate_to_time": "시간으로 탐색",
"network_requirement_photos_upload": "사진 백업에 모바일 데이터 사용",
"network_requirement_videos_upload": "동영상 백업에 모바일 데이터 사용",
+ "network_requirements": "네트워크 요구사항",
"network_requirements_updated": "네트워크 상태가 변경되었습니다. 백업 대기열을 초기화합니다.",
"networking_settings": "연결",
"networking_subtitle": "서버 엔드포인트 설정을 관리합니다.",
"never": "없음",
"new_album": "새 앨범",
"new_api_key": "새 API 키",
+ "new_date_range": "새 날짜 범위",
"new_password": "새 비밀번호",
"new_person": "새 인물 생성",
"new_pin_code": "새 PIN 코드",
"new_pin_code_subtitle": "잠금 폴더에 처음 접근하셨습니다. 이곳에 안전하게 접근하기 위한 PIN 코드를 설정하세요.",
+ "new_timeline": "새 타임라인",
"new_user_created": "사용자 계정이 생성되었습니다.",
"new_version_available": "새 버전 사용 가능",
"newest_first": "최신순",
@@ -1360,20 +1405,25 @@
"no_assets_message": "여기를 클릭해 첫 사진을 업로드하세요.",
"no_assets_to_show": "표시할 항목 없음",
"no_cast_devices_found": "캐스트 기기 없음",
+ "no_checksum_local": "체크섬이 없습니다. 로컬 항목을 불러올 수 없습니다.",
+ "no_checksum_remote": "체크섬이 없습니다. 원격 항목을 불러올 수 없습니다.",
"no_duplicates_found": "비슷한 항목이 없습니다.",
"no_exif_info_available": "EXIF 정보 없음",
"no_explore_results_message": "더 많은 사진을 업로드하여 탐색 기능을 사용하세요.",
"no_favorites_message": "즐겨찾기에서 사진과 동영상을 빠르게 찾기",
"no_libraries_message": "외부 라이브러리로 다른 경로의 사진과 동영상을 확인하세요.",
+ "no_local_assets_found": "체크섬과 일치하는 로컬 항목을 찾을 수 없습니다.",
"no_locked_photos_message": "잠금 폴더의 사진 및 동영상은 숨겨지며 라이브러리를 탐색할 때 표시되지 않습니다.",
"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": "진행 중인 업로드 없음",
+ "not_available": "없음",
"not_in_any_album": "앨범에 없음",
"not_selected": "선택되지 않음",
"note_apply_storage_label_to_previously_uploaded assets": "참고: 이전에 업로드한 항목에도 스토리지 레이블을 적용하려면 다음을 실행합니다,",
@@ -1387,6 +1437,8 @@
"notifications": "알림",
"notifications_setting_description": "알림 전송 설정을 관리합니다.",
"oauth": "OAuth",
+ "obtainium_configurator": "Obtainium 구성",
+ "obtainium_configurator_instructions": "Obtainium으로 Immich GitHub 릴리스에서 직접 안드로이드 앱을 설치하고 업데이트하세요. API 키를 생성하고 변형을 선택해 Obtanium 설정 링크를 생성하세요.",
"official_immich_resources": "Immich 공식 리소스",
"offline": "오프라인",
"offset": "오프셋",
@@ -1398,8 +1450,8 @@
"onboarding_privacy_description": "다음 선택적 기능은 외부 서비스를 사용하며 설정에서 언제든 비활성화할 수 있습니다.",
"onboarding_server_welcome_description": "몇 가지 일반적인 설정을 진행하겠습니다.",
"onboarding_theme_description": "사용할 테마를 선택하세요. 설정에서 언제든 변경할 수 있습니다.",
- "onboarding_user_welcome_description": "시작해 보겠습니다!",
- "onboarding_welcome_user": "{user}님, 환영합니다",
+ "onboarding_user_welcome_description": "기본 설정을 시작하겠습니다!",
+ "onboarding_welcome_user": "환영합니다, {user}님.",
"online": "온라인",
"only_favorites": "즐겨찾기만",
"open": "열기",
@@ -1408,6 +1460,8 @@
"open_the_search_filters": "검색 필터 열기",
"options": "옵션",
"or": "또는",
+ "organize_into_albums": "앨범으로 정리하기",
+ "organize_into_albums_description": "현재 동기화 설정을 사용하여 기존 사진을 앨범으로 정리합니다",
"organize_your_library": "라이브러리 정리",
"original": "원본",
"other": "기타",
@@ -1489,10 +1543,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": "이전",
@@ -1505,12 +1563,9 @@
"privacy": "개인정보",
"profile": "프로필",
"profile_drawer_app_logs": "로그",
- "profile_drawer_client_out_of_date_major": "모바일 앱이 최신 버전이 아닙니다. 최신 버전으로 업데이트하세요.",
- "profile_drawer_client_out_of_date_minor": "모바일 앱이 최신 버전이 아닙니다. 최신 버전으로 업데이트하세요.",
"profile_drawer_client_server_up_to_date": "클라이언트와 서버가 최신 상태입니다.",
"profile_drawer_github": "Github",
- "profile_drawer_server_out_of_date_major": "서버 버전이 최신이 아닙니다. 최신 버전으로 업데이트하세요.",
- "profile_drawer_server_out_of_date_minor": "서버 버전이 최신이 아닙니다. 최신 버전으로 업데이트하세요.",
+ "profile_drawer_readonly_mode": "읽기 전용 모드 활성화. 사용자 아이콘을 길게 눌러 해제할 수 있습니다.",
"profile_image_of_user": "{user}님의 프로필 이미지",
"profile_picture_set": "프로필 사진이 설정되었습니다.",
"public_album": "공개 앨범",
@@ -1547,6 +1602,7 @@
"purchase_server_description_2": "서포터 배지",
"purchase_server_title": "서버",
"purchase_settings_server_activated": "서버 제품 키는 관리자가 제어합니다.",
+ "query_asset_id": "쿼리 항목 ID",
"queue_status": "전체 {total}, {count} 대기 중",
"rating": "등급",
"rating_clear": "등급 초기화",
@@ -1554,6 +1610,9 @@
"rating_description": "상세 정보 패널에 EXIF 등급 태그 표시",
"reaction_options": "반응 옵션",
"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 {항목 #개}}를 새 인물에게 재지정했습니다.",
@@ -1578,6 +1637,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 {#개}}를 제거하시겠습니까?",
@@ -1630,6 +1690,7 @@
"restore_user": "사용자 복원",
"restored_asset": "항목이 복원되었습니다.",
"resume": "재개",
+ "resume_paused_jobs": "일시 중지된 작업 {count, plural, one {#개} other {#개}} 재개",
"retry_upload": "다시 시도",
"review_duplicates": "비슷한 항목 확인",
"review_large_files": "용량이 큰 파일 확인",
@@ -1650,11 +1711,12 @@
"scanning_for_album": "앨범을 스캔하는 중...",
"search": "검색",
"search_albums": "앨범 검색",
- "search_by_context": "문맥으로 검색",
+ "search_by_context": "문맥 기반 검색",
"search_by_description": "설명으로 검색",
"search_by_description_example": "동해안에서 맞이한 새해 일출",
"search_by_filename": "파일명 또는 확장자로 검색",
"search_by_filename_example": "예: IMG_1234.JPG 또는 PNG",
+ "search_camera_lens_model": "렌즈 모델 검색...",
"search_camera_make": "카메라 제조사 검색...",
"search_camera_model": "카메라 모델명 검색...",
"search_city": "도시 검색...",
@@ -1671,6 +1733,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": "존재하는 인물 검색",
@@ -1723,6 +1786,7 @@
"select_user_for_sharing_page_err_album": "앨범을 생성하지 못했습니다.",
"selected": "선택됨",
"selected_count": "{count, plural, other {#개 선택됨}}",
+ "selected_gps_coordinates": "선택한 GPS 좌표",
"send_message": "메시지 전송",
"send_welcome_email": "환영 이메일 전송",
"server_endpoint": "서버 엔드포인트",
@@ -1732,6 +1796,7 @@
"server_online": "온라인",
"server_privacy": "개인정보",
"server_stats": "서버 통계",
+ "server_update_available": "서버 업데이트 가능",
"server_version": "서버 버전",
"set": "설정",
"set_as_album_cover": "앨범 커버로 설정",
@@ -1744,7 +1809,7 @@
"setting_image_viewer_help": "상세 보기에서는 작은 섬네일, (활성화된 경우) 중간 섬네일, 원본 순으로 불러옵니다.",
"setting_image_viewer_original_subtitle": "원본 고해상도 이미지를 불러옵니다. 데이터 사용량 및 캐시 크기를 줄이려면 비활성화하세요.",
"setting_image_viewer_original_title": "원본 이미지 로드",
- "setting_image_viewer_preview_subtitle": "원본 고해상도 이미지를 불러옵니다. 비활성화하는 경우 원본 또는 섬네일만 불러옵니다.",
+ "setting_image_viewer_preview_subtitle": "중간 해상도 이미지를 불러옵니다. 비활성화하는 경우 원본 또는 섬네일만 불러옵니다.",
"setting_image_viewer_preview_title": "미리보기 이미지 로드",
"setting_image_viewer_title": "이미지",
"setting_languages_apply": "적용",
@@ -1760,6 +1825,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": "원본 동영상 강제 사용",
@@ -1851,6 +1918,7 @@
"show_slideshow_transition": "슬라이드 전환 표시",
"show_supporter_badge": "서포터 배지",
"show_supporter_badge_description": "서포터 배지 표시",
+ "show_text_search_menu": "텍스트 검색 메뉴 표시",
"shuffle": "셔플",
"sidebar": "사이드바",
"sidebar_display_description": "보기 링크를 사이드바에 표시",
@@ -1881,6 +1949,7 @@
"stacktrace": "스택 추적",
"start": "시작",
"start_date": "시작일",
+ "start_date_before_end_date": "시작일은 종료일보다 이전이어야 합니다",
"state": "지역",
"status": "상태",
"stop_casting": "캐스팅 중단",
@@ -1905,6 +1974,8 @@
"sync_albums_manual_subtitle": "업로드한 모든 동영상과 사진을 선택한 백업 앨범에 동기화",
"sync_local": "로컬 동기화",
"sync_remote": "원격 동기화",
+ "sync_status": "동기화 상태",
+ "sync_status_subtitle": "동기화 시스템 확인 및 관리",
"sync_upload_album_setting_subtitle": "선택한 앨범을 Immich에 생성하고 사진 및 동영상 업로드",
"tag": "태그",
"tag_assets": "항목 태그",
@@ -1964,8 +2035,10 @@
"trash_page_select_assets_btn": "항목 선택",
"trash_page_title": "휴지통 ({count})",
"trashed_items_will_be_permanently_deleted_after": "휴지통으로 이동된 항목은 {days, plural, one {#일} other {#일}} 후 영구적으로 삭제됩니다.",
+ "troubleshoot": "문제 해결",
"type": "형식",
"unable_to_change_pin_code": "PIN 코드를 변경할 수 없음",
+ "unable_to_check_version": "앱 또는 서버 버전을 확인할 수 없음",
"unable_to_setup_pin_code": "PIN 코드를 설정할 수 없음",
"unarchive": "보관함에서 제거",
"unarchive_action_prompt": "보관함에서 항목 {count}개 제거됨",
@@ -1994,6 +2067,7 @@
"unstacked_assets_count": "항목 {count, plural, one {#개} other {#개}}의 스택을 풀었습니다.",
"untagged": "태그 해제됨",
"up_next": "다음",
+ "update_location_action_prompt": "선택한 {count}개 항목 위치 업데이트:",
"updated_at": "업데이트됨",
"updated_password": "비밀번호가 변경되었습니다.",
"upload": "업로드",
@@ -2060,6 +2134,7 @@
"view_next_asset": "다음 항목 보기",
"view_previous_asset": "이전 항목 보기",
"view_qr_code": "QR 코드 보기",
+ "view_similar_photos": "비슷한 사진 보기",
"view_stack": "스택 보기",
"view_user": "사용자 보기",
"viewer_remove_from_stack": "스택에서 제거",
@@ -2078,5 +2153,6 @@
"yes": "네",
"you_dont_have_any_shared_links": "공유 링크가 없습니다.",
"your_wifi_name": "Wi-Fi 네트워크 이름",
- "zoom_image": "이미지 확대"
+ "zoom_image": "이미지 확대",
+ "zoom_to_bounds": "화면에 맞춰 확대"
}
diff --git a/i18n/lt.json b/i18n/lt.json
index c66b57cfa0..56f8333bef 100644
--- a/i18n/lt.json
+++ b/i18n/lt.json
@@ -123,6 +123,13 @@
"logging_enable_description": "Įjungti žurnalo vedimą",
"logging_level_description": "Įjungus, kokį žurnalo vedimo lygį naudot.",
"logging_settings": "Žurnalo vedimas",
+ "machine_learning_availability_checks": "Prieinamumo patikrinimai",
+ "machine_learning_availability_checks_description": "Automatiškai aptikti ir teikti pirmenybę prieinamiems mašininio mokymosi serveriams",
+ "machine_learning_availability_checks_enabled": "Įjungti prieinamumo patikrinimus",
+ "machine_learning_availability_checks_interval": "Patikros intervalas",
+ "machine_learning_availability_checks_interval_description": "Intervalas milisekundėmis tarp prieinamumo patikrinimų",
+ "machine_learning_availability_checks_timeout": "Užklausos laiko limitas",
+ "machine_learning_availability_checks_timeout_description": "Laiko limitas milisekundėmis prieinamumo patikrinimams",
"machine_learning_clip_model": "CLIP modelis",
"machine_learning_clip_model_description": "Pavadinimas CLIP modelio įvardintio here. Dėmesio, keičiant modelį jūs privalote iš naujo paleisti 'Išmaniosios Paieškos' užduotį visiems vaizdams.",
"machine_learning_duplicate_detection": "Dublikatų aptikimas",
@@ -264,8 +271,8 @@
"storage_template_date_time_description": "Elemento sukūrimo laiko žymė yra naudojama laiko informacijai",
"storage_template_date_time_sample": "Pavyzdinis laikas {date}",
"storage_template_enable_description": "Aktyvuoti saugyklos šabloną",
- "storage_template_hash_verification_enabled": "Aktyvuoti Hash tikrinimą",
- "storage_template_hash_verification_enabled_description": "Aktyvuojamas Hash tikrinimas, neišjungti nebent gerai suprantate galimas pasekmes",
+ "storage_template_hash_verification_enabled": "Aktyvuoti failo parašo tikrinimą",
+ "storage_template_hash_verification_enabled_description": "Aktyvuojamas failo parašo tikrinimas, neišjungti nebent gerai suprantate galimas pasekmes",
"storage_template_migration": "Saugyklos tvarkymas pagal šabloną",
"storage_template_migration_description": "Taikyti dabartinį {template} anksčiau įkeltiems duomenims",
"storage_template_migration_info": "Saugyklos tvarkyklė konvertuos visus plėtinius mažosiomis raidėmis. Šablonas bus taikomas tik naujiems duomenims. Taikyti šabloną retroaktyviai anksčiau įkeltiems duomenims, paleiskite šią {job}.",
@@ -481,7 +488,7 @@
"asset_description_updated": "Elemento aprašymas buvo atnaujintas",
"asset_filename_is_offline": "Elementas {filename} nepasiekiamas",
"asset_has_unassigned_faces": "Elementas turi nepriskirtų veidų",
- "asset_hashing": "Maišoma…",
+ "asset_hashing": "Kuriami bylų parašai…",
"asset_list_group_by_sub_title": "Grupuoti pagal",
"asset_list_layout_settings_dynamic_layout_title": "Dinaminis išdėstymas",
"asset_list_layout_settings_group_automatically": "Automatiškai",
@@ -590,6 +597,7 @@
"backup_controller_page_turn_on": "Įjungti foninį atsarginį kopijavimą",
"backup_controller_page_uploading_file_info": "Įkeliama failo info",
"backup_err_only_album": "Negalima pašalinti vienintelio albumo",
+ "backup_error_sync_failed": "Sinchronizavimas nepavyko. Atsarginė kopija negali būti apdorota.",
"backup_info_card_assets": "elementai",
"backup_manual_cancelled": "Atšaukta",
"backup_manual_in_progress": "Jau įkeliama, bandykite dar kartą vėliau",
@@ -688,8 +696,7 @@
"comments_and_likes": "Komentarai ir patiktukai",
"comments_are_disabled": "Komentarai yra išjungti",
"common_create_new_album": "Sukurti naują albumą",
- "common_server_error": "Prašome patikrinti tinklo prisijungimą ir įsitikinti, kad serveris pasiekiamas ir programos/serverio versija sutampa.",
- "completed": "Atlikta",
+ "completed": "Užbaigta",
"confirm": "Patvirtinti",
"confirm_admin_password": "Patvirtinti administratoriaus slaptažodį",
"confirm_delete_face": "Ar tikrai norite ištrinti {name} veidą iš elementų?",
@@ -870,7 +877,6 @@
"edit_tag": "Redaguoti žymą",
"edit_title": "Redaguoti antraštę",
"edit_user": "Redaguoti naudotoją",
- "edited": "Redaguota",
"editor": "Redaktorius",
"editor_close_without_save_prompt": "Pakeitimai nebus išsaugoti",
"editor_close_without_save_title": "Uždaryti redaktorių?",
@@ -1026,6 +1032,7 @@
"exif_bottom_sheet_description_error": "Klaida atnaujinant aprašymą",
"exif_bottom_sheet_details": "DETALĖS",
"exif_bottom_sheet_location": "VIETOVĖ",
+ "exif_bottom_sheet_no_description": "Nėra aprašymo",
"exif_bottom_sheet_people": "ŽMONĖS",
"exif_bottom_sheet_person_add_person": "Pridėti vardą",
"exit_slideshow": "Išeiti iš skaidrių peržiūros",
@@ -1100,14 +1107,13 @@
"haptic_feedback_switch": "Įjungti haptinį grįžtamąjį ryšį",
"haptic_feedback_title": "Haptinis grįžtamasis ryšys",
"has_quota": "Turi kvotą",
- "hash_asset": "Maišymo elementas",
- "hashed_assets": "Sumaišyti elementai",
- "hashing": "Maišoma",
+ "hash_asset": "Kurti bylos parašą elementui",
+ "hashed_assets": "Elementai su bylų parašais",
+ "hashing": "Bylų parašo kūrimas",
"header_settings_add_header_tip": "Pridėti antraštę",
"header_settings_field_validator_msg": "Reikšmė negali būti tuščia",
"header_settings_header_name_input": "Antraštės pavadinimas",
"header_settings_header_value_input": "Antraštės reikšmė",
- "headers_settings_tile_subtitle": "Apibrėžkite tarpinio serverio antraštes, kurias programa turėtų siųsti su kiekviena tinklo užklausa",
"headers_settings_tile_title": "Pasirinktinės tarpinio serverio antraštės",
"hi_user": "Labas {name} ({email})",
"hide_all_people": "Slėpti visus asmenis",
@@ -1529,13 +1535,9 @@
"privacy": "Privatumas",
"profile": "Profilis",
"profile_drawer_app_logs": "Logai",
- "profile_drawer_client_out_of_date_major": "Mobili aplikacija jau pasenusios versijos. Prašome atsinaujinti į paskutinę didžiąją versiją.",
- "profile_drawer_client_out_of_date_minor": "Mobili aplikacija jau pasenusios versijos. Prašome atsinaujinti į paskutinę mažąją versiją.",
"profile_drawer_client_server_up_to_date": "Klientas ir Serveris yra atnaujinti",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Tik skaitymo rėžimas įgalintas. Ilgai paspauskite vartotojo ikoną išėjimui.",
- "profile_drawer_server_out_of_date_major": "Serveris jau yra pasenusios versijos. Prašome atsinaujinti į paskutinę didžiąją versiją.",
- "profile_drawer_server_out_of_date_minor": "Serveris jau yra pasenusios versijos. Prašome atsinaujinti į paskutinę mažąją versiją.",
"profile_image_of_user": "{user} profilio nuotrauka",
"profile_picture_set": "Profilio nuotrauka nustatyta.",
"public_album": "Viešas albumas",
@@ -1575,6 +1577,11 @@
"rating": "Įvertinimas žvaigždutėmis",
"rating_count": "{count, plural, one {# įvertinimas} few {# įvertinimai} other {# įvertinimų}}",
"rating_description": "Rodyti EXIF įvertinimus informacijos skydelyje",
+ "read_changelog": "Skaityti pakeitimų sąrašą",
+ "recent-albums": "Naujausi albumai",
+ "recent_searches": "Naujausios paieškos",
+ "recently_added": "Neseniai pridėta",
+ "recently_added_page_title": "Neseniai pridėta",
"recently_taken": "Neseniai sukurti",
"recently_taken_page_title": "Neseniai sukurti",
"refresh": "Atnaujinti",
@@ -1609,11 +1616,14 @@
"repair": "Pataisyti",
"repair_no_results_message": "Nesekami ir trūkstami failai bus rodomi čia",
"replace_with_upload": "Pakeisti naujai įkeltu failu",
+ "repository": "Repozitoriumas",
"require_password": "Reikalauti slaptažodžio",
"rescan": "Perskenuoti",
"reset": "Atstatyti",
"reset_password": "Atstayti slaptažodį",
"reset_pin_code": "Atsatyti PIN kodą",
+ "reset_pin_code_description": "Jei pamiršote PIN kodą, galite susisiekti su serverio administratoriumi, kad jis jį atstatytų",
+ "reset_pin_code_with_password": "PIN kodą visada galite atkurti naudodami savo slaptažodį",
"reset_to_default": "Atkurti numatytuosius",
"resolve_duplicates": "Sutvarkyti dublikatus",
"resolved_all_duplicates": "Sutvarkyti visi dublikatai",
@@ -1721,8 +1731,11 @@
"shared_intent_upload_button_progress_text": "{current} / {total} Įkelta",
"shared_link_clipboard_copied_massage": "Nukopijuota į iškarpinę",
"shared_link_clipboard_text": "Nuoroda: {link}\nSlaptažodis: {password}",
+ "shared_link_edit_expire_after_option_day": "1 diena",
"shared_link_edit_expire_after_option_days": "{count} dienų",
+ "shared_link_edit_expire_after_option_hour": "1 valanda",
"shared_link_edit_expire_after_option_hours": "{count} valandų",
+ "shared_link_edit_expire_after_option_minute": "1 minutė",
"shared_link_edit_expire_after_option_minutes": "{count} minučių",
"shared_link_edit_expire_after_option_months": "{count} mėnesių",
"shared_link_edit_expire_after_option_year": "{count} metų",
@@ -1778,6 +1791,7 @@
"sort_created": "Sukūrimo data",
"sort_items": "Elementų skaičių",
"sort_modified": "Keitimo data",
+ "sort_newest": "Naujausia nuotrauka",
"sort_oldest": "Seniausia nuotrauka",
"sort_people_by_similarity": "Rikiuoti žmonės pagal panašumą",
"sort_recent": "Naujausia nuotrauka",
@@ -1790,8 +1804,11 @@
"stacked_assets_count": "{count, plural, one {Sugrupuotas # elementas} few {Sugrupuoti # elementai} other {Sugrupuota # elementų}}",
"start": "Pradėti",
"start_date": "Pradžios data",
+ "start_date_before_end_date": "Pradžios data turi būti ankstesnė už pabaigos datą",
"status": "Statusas",
"stop_casting": "Nutraukti transliavimą",
+ "stop_photo_sharing": "Nustoti dalytis savo nuotraukomis?",
+ "stop_sharing_photos_with_user": "Nustoti dalintis savo nuotraukomis su šiuo vartotoju",
"storage": "Saugykla",
"storage_label": "Saugyklos Žyma",
"storage_usage": "Naudojama {used} iš {available}",
@@ -1802,6 +1819,7 @@
"support_and_feedback": "Palaikymas ir atsiliepimai",
"sync": "Sinchronizuoti",
"sync_albums": "Sinchronizuoti albumus",
+ "sync_albums_manual_subtitle": "Sinchronizuoti visus įkeltus vaizdo įrašus ir nuotraukas su pasirinktomis atsarginėmis kopijomis",
"sync_upload_album_setting_subtitle": "Sukurti ir įkelti jūsų nuotraukas ir vaizdo įrašus į pasirinktus Immich albumus",
"tag": "Žyma",
"tag_created": "Sukurta žyma: {tag}",
@@ -1813,10 +1831,12 @@
"template": "Šablonas",
"theme": "Tema",
"theme_selection": "Temos pasirinkimas",
+ "theme_selection_description": "Automatiškai nustatykite šviesią arba tamsią temą pagal naršyklės sistemos nustatymus",
"theme_setting_asset_list_tiles_per_row_title": "Elementų per eilutę ({count})",
"theme_setting_primary_color_title": "Pagrindinė spalva",
"theme_setting_system_primary_color_title": "Naudoti sistemos spalvą",
"theme_setting_system_theme_switch": "Automatinė (Naudoti sistemos nustatymus)",
+ "theme_setting_three_stage_loading_subtitle": "Trijų etapų įkėlimas gali padidinti įkėlimo našumą, tačiau sukelia žymiai didesnę tinklo apkrovą",
"time_based_memories": "Atsiminimai pagal laiką",
"timeline": "Laiko skalė",
"timezone": "Laiko juosta",
@@ -1825,6 +1845,7 @@
"to_favorite": "Įtraukti prie mėgstamiausių",
"to_login": "Prisijungti",
"to_trash": "Išmesti",
+ "total": "Viso",
"trash": "Šiukšliadėžė",
"trash_all": "Perkelti visus į šiukšliadėžę",
"trash_count": "Perkelti {count, number} į šiukšliadėžę",
@@ -1838,6 +1859,7 @@
"trash_page_title": "Šiukšlių ({count})",
"trashed_items_will_be_permanently_deleted_after": "Į šiukšliadėžę perkelti elementai bus visam laikui ištrinti po {days, plural, one {# dienos} other {# dienų}}.",
"type": "Tipas",
+ "unable_to_change_pin_code": "Negalima pakeisti PIN kodo",
"unarchive": "Išarchyvuoti",
"unarchived_count": "{count, plural, other {# išarchyvuota}}",
"unfavorite": "Pašalinti iš mėgstamiausių",
diff --git a/i18n/lv.json b/i18n/lv.json
index f4522a80c8..6ff1c4e4ad 100644
--- a/i18n/lv.json
+++ b/i18n/lv.json
@@ -28,96 +28,171 @@
"add_to_album": "Pievienot albumam",
"add_to_album_bottom_sheet_added": "Pievienots {album}",
"add_to_album_bottom_sheet_already_exists": "Jau pievienots {album}",
+ "add_to_album_bottom_sheet_some_local_assets": "Dažus lokālos failus albumam nevarēja pievienot",
"add_to_album_toggle": "Pārslēgt izvēli {album}",
"add_to_albums": "Pievienot albumiem",
"add_to_albums_count": "Pievienot albumiem ({count})",
"add_to_shared_album": "Pievienot koplietotam albumam",
+ "add_upload_to_stack": "Pievienot augšupielādi kaudzei",
"add_url": "Pievienot URL",
"added_to_archive": "Pievienots arhīvam",
"added_to_favorites": "Pievienots izlasei",
"added_to_favorites_count": "{count, number} pievienoti izlasei",
"admin": {
- "add_exclusion_pattern_description": "Pievienojiet izlaišanas shēmas. Aizstājējzīmju izmantoša *, **, un ? tiek atbalstīta. Lai ignorētu visus failus jebkurā direktorijā ar nosaukumu “RAW”, izmantojiet “**/RAW/**”. Lai ignorētu visus failus, kas beidzas ar “. tif”, izmantojiet “**/*. tif”. Lai ignorētu absolūto ceļu, izmantojiet “/path/to/ignore/**”.",
+ "add_exclusion_pattern_description": "Pievieno izslēgšanas šablonus. Tiek atbalstīta aizstājējzīmju *, **, un ? izmantošana. Lai ignorētu visus failus jebkurā direktorijā ar nosaukumu “RAW”, izmanto “**/RAW/**”. Lai ignorētu visus failus, kas beidzas ar “. tif”, izmanto “**/*. tif”. Lai ignorētu absolūto ceļu, izmanto “/kāds/ignorējamais/ceļš/**”.",
"admin_user": "Administrators",
- "asset_offline_description": "Šis ārējās bibliotēkas resurss vairs nav atrodams diskā un ir pārvietots uz atkritni. Ja fails tika pārvietots bibliotēkas ietvaros, pārbaudi, vai jūsu laika skalā ir jauns atbilstošais resurss. Lai atjaunotu šo resursu, pārliecinies, vai Immich var piekļūt tālāk norādītajam faila ceļam un uzsāc bibliotēkas skenēšanu.",
+ "asset_offline_description": "Šis ārējās bibliotēkas resurss vairs nav atrodams diskā un ir pārvietots uz atkritni. Ja fails tika pārvietots bibliotēkas ietvaros, pārbaudiet, vai jūsu laika skalā ir jauns atbilstošais resurss. Lai atjaunotu šo resursu, pārliecinieties, vai Immich var piekļūt tālāk norādītajam faila ceļam un uzsāc bibliotēkas skenēšanu.",
"authentication_settings": "Autentifikācijas iestatījumi",
"authentication_settings_description": "Paroļu, OAuth un citu autentifikācijas iestatījumu pārvaldība",
"authentication_settings_disable_all": "Vai tiešām vēlaties atspējot visas pieteikšanās metodes? Pieteikšanās tiks pilnībā atspējota.",
"authentication_settings_reenable": "Lai atkārtoti iespējotu, izmantojiet Servera Komandu.",
- "background_task_job": "Fona Uzdevumi",
+ "background_task_job": "Fona uzdevumi",
"backup_database": "Izveidot datu bāzes izrakstu",
"backup_database_enable_description": "Iespējot datu bāzes izrakstus",
"backup_keep_last_amount": "Iepriekšējo izrakstu daudzums, kas jāsaglabā",
"backup_onboarding_1_description": "ārēja kopija mākonī vai citā fiziskā atrašanās vietā.",
- "backup_onboarding_2_description": "vietējās kopijas citās ierīcēs. Tas ietver galvenos failus un šo failu vietējo rezerves kopiju.",
+ "backup_onboarding_2_description": "lokālās kopijas citās ierīcēs. Tas ietver galvenos failus un šo failu lokālo rezerves kopiju.",
+ "backup_onboarding_3_description": "kopiju skaits, ieskaitot oriģinālos failus. Tas ietver 1 ārējo kopiju un 2 lokālās kopijas.",
+ "backup_onboarding_description": "Lai aizsargātu savus datus, ieteicams izmantot {label}",
"system_settings": "Sistēmas iestatījumi",
"template_email_available_tags": "Sagatavē var izmantot šos mainīgos: {tags}",
"template_email_if_empty": "Ja sagatave ir tukša, tiks izmantots noklusējuma e-pasts.",
@@ -199,15 +302,20 @@
"transcoding_acceleration_qsv": "Quick Sync (nepieciešams 7. paaudzes vai jaunāks Intel procesors)",
"transcoding_acceleration_rkmpp": "RKMPP (tikai Rockchip SOC)",
"transcoding_acceleration_vaapi": "VAAPI",
+ "transcoding_accepted_video_codecs": "Akceptētie video kodeki",
+ "transcoding_accepted_video_codecs_description": "Izvēlies, kurus video kodekus nav nepieciešams transkodēt. Tiek izmantots tikai noteiktām transkodēšanas politikām.",
"transcoding_advanced_options_description": "Lielākajai daļai lietotāju nevajadzētu mainīt šīs opcijas",
"transcoding_audio_codec": "Audio kodeks",
+ "transcoding_audio_codec_description": "Opus ir augstākās kvalitātes izvēle, bet tā ir mazāk saderīga ar vecām ierīcēm vai programmatūru.",
"transcoding_codecs_learn_more": "Lai uzzinātu vairāk par šeit lietoto terminoloģiju, skatiet FFmpeg dokumentāciju par {label} എന്നത് ഉപയോക്താവിന്റെ സ്റ്റോറേജ് ലേബലാണ്",
+ "system_settings": "സിസ്റ്റം ക്രമീകരണങ്ങൾ",
+ "tag_cleanup_job": "ടാഗ് ക്ലീനപ്പ്",
+ "template_email_available_tags": "നിങ്ങളുടെ ടെംപ്ലേറ്റിൽ ഇനിപ്പറയുന്ന വേരിയബിളുകൾ ഉപയോഗിക്കാം: {tags}",
+ "template_email_if_empty": "ടെംപ്ലേറ്റ് ശൂന്യമാണെങ്കിൽ, ഡിഫോൾട്ട് ഇമെയിൽ ഉപയോഗിക്കും.",
+ "template_email_invite_album": "ആൽബം ക്ഷണിക്കാനുള്ള ടെംപ്ലേറ്റ്",
+ "template_email_preview": "പ്രിവ്യൂ",
+ "template_email_settings": "ഇമെയിൽ ടെംപ്ലേറ്റുകൾ",
+ "template_email_update_album": "ആൽബം അപ്ഡേറ്റ് ടെംപ്ലേറ്റ്",
+ "template_email_welcome": "സ്വാഗത ഇമെയിൽ ടെംപ്ലേറ്റ്",
+ "template_settings": "അറിയിപ്പ് ടെംപ്ലേറ്റുകൾ",
+ "template_settings_description": "അറിയിപ്പുകൾക്കായി ഇഷ്ടാനുസൃത ടെംപ്ലേറ്റുകൾ കൈകാര്യം ചെയ്യുക",
+ "theme_custom_css_settings": "കസ്റ്റം CSS",
+ "theme_custom_css_settings_description": "കാസ്കേഡിംഗ് സ്റ്റൈൽ ഷീറ്റുകൾ (CSS) Immich-ന്റെ ഡിസൈൻ ഇഷ്ടാനുസൃതമാക്കാൻ അനുവദിക്കുന്നു.",
+ "theme_settings": "തീം ക്രമീകരണങ്ങൾ",
+ "theme_settings_description": "Immich വെബ് ഇന്റർഫേസിന്റെ കസ്റ്റമൈസേഷൻ കൈകാര്യം ചെയ്യുക",
+ "thumbnail_generation_job": "തംബ്നെയിലുകൾ നിർമ്മിക്കുക",
+ "thumbnail_generation_job_description": "ഓരോ അസറ്റിനും വലുതും ചെറുതും മങ്ങിയതുമായ തംബ്നെയിലുകളും ഓരോ വ്യക്തിക്കും തംബ്നെയിലുകളും നിർമ്മിക്കുക",
+ "transcoding_acceleration_api": "ആക്സിലറേഷൻ API",
+ "transcoding_acceleration_api_description": "ട്രാൻസ്കോഡിംഗ് ത്വരിതപ്പെടുത്തുന്നതിന് നിങ്ങളുടെ ഉപകരണവുമായി സംവദിക്കുന്ന API. ഈ ക്രമീകരണം 'ബെസ്റ്റ് എഫേർട്ട്' ആണ്: പരാജയപ്പെട്ടാൽ സോഫ്റ്റ്വെയർ ട്രാൻസ്കോഡിംഗിലേക്ക് മാറും. നിങ്ങളുടെ ഹാർഡ്വെയർ അനുസരിച്ച് VP9 പ്രവർത്തിക്കുകയോ പ്രവർത്തിക്കാതിരിക്കുകയോ ചെയ്യാം.",
+ "transcoding_acceleration_nvenc": "NVENC (NVIDIA GPU ആവശ്യമാണ്)",
+ "transcoding_acceleration_qsv": "ക്വിക്ക് സിങ്ക് (7-ാം തലമുറ ഇന്റൽ സിപിയു അല്ലെങ്കിൽ അതിനുശേഷമുള്ളത് ആവശ്യമാണ്)",
+ "transcoding_acceleration_rkmpp": "RKMPP (Rockchip SOC-കളിൽ മാത്രം)",
+ "transcoding_acceleration_vaapi": "VAAPI",
+ "transcoding_accepted_audio_codecs": "അംഗീകൃത ഓഡിയോ കോഡെക്കുകൾ",
+ "transcoding_accepted_audio_codecs_description": "ട്രാൻസ്കോഡ് ചെയ്യേണ്ടാത്ത ഓഡിയോ കോഡെക്കുകൾ തിരഞ്ഞെടുക്കുക. ചില ട്രാൻസ്കോഡ് നയങ്ങൾക്ക് വേണ്ടി മാത്രം ഉപയോഗിക്കുന്നു.",
+ "transcoding_accepted_containers": "അംഗീകൃത കണ്ടെയ്നറുകൾ",
+ "transcoding_accepted_containers_description": "MP4-ലേക്ക് റീമക്സ് ചെയ്യേണ്ടാത്ത കണ്ടെയ്നർ ഫോർമാറ്റുകൾ തിരഞ്ഞെടുക്കുക. ചില ട്രാൻസ്കോഡ് നയങ്ങൾക്ക് വേണ്ടി മാത്രം ഉപയോഗിക്കുന്നു.",
+ "transcoding_accepted_video_codecs": "അംഗീകൃത വീഡിയോ കോഡെക്കുകൾ",
+ "transcoding_accepted_video_codecs_description": "ട്രാൻസ്കോഡ് ചെയ്യേണ്ടാത്ത വീഡിയോ കോഡെക്കുകൾ തിരഞ്ഞെടുക്കുക. ചില ട്രാൻസ്കോഡ് നയങ്ങൾക്ക് വേണ്ടി മാത്രം ഉപയോഗിക്കുന്നു.",
+ "transcoding_advanced_options_description": "മിക്ക ഉപയോക്താക്കളും മാറ്റം വരുത്തേണ്ടതില്ലാത്ത ഓപ്ഷനുകൾ",
+ "transcoding_audio_codec": "ഓഡിയോ കോഡെക്",
+ "transcoding_audio_codec_description": "Opus ഏറ്റവും ഉയർന്ന നിലവാരമുള്ള ഓപ്ഷനാണ്, പക്ഷേ പഴയ ഉപകരണങ്ങളുമായോ സോഫ്റ്റ്വെയറുമായോ ഇതിന് കുറഞ്ഞ അനുയോജ്യതയേ ഉള്ളൂ.",
+ "transcoding_bitrate_description": "പരമാവധി ബിറ്റ്റേറ്റിനേക്കാൾ ഉയർന്നതോ അംഗീകൃത ഫോർമാറ്റിൽ അല്ലാത്തതോ ആയ വീഡിയോകൾ",
+ "transcoding_codecs_learn_more": "ഇവിടെ ഉപയോഗിച്ചിരിക്കുന്ന പദങ്ങളെക്കുറിച്ച് കൂടുതലറിയാൻ, {label} este eticheta de stocare a utilizatorului",
"system_settings": "Setǎri de Sistem",
@@ -294,9 +313,9 @@
"template_settings_description": "Gestionați șabloanele personalizate pentru notificări",
"theme_custom_css_settings": "CSS personalizat",
"theme_custom_css_settings_description": "Foile de stil în cascadă (CSS) permit personalizarea designului Immich.",
- "theme_settings": "Setări Temă",
+ "theme_settings": "Setări temă",
"theme_settings_description": "Gestionează personalizarea interfeței web Immich",
- "thumbnail_generation_job": "Generare Miniaturi",
+ "thumbnail_generation_job": "Generare miniaturi",
"thumbnail_generation_job_description": "Generează miniaturi mari, mici și estompate pentru fiecare resursă, precum și miniaturi pentru fiecare persoană",
"transcoding_acceleration_api": "API de accelerare",
"transcoding_acceleration_api_description": "API-ul care va interacționa cu dispozitivul tău pentru a accelera transcodarea. Această setare este 'cel mai bun efort': va reveni la transcodarea software în caz de eșec. VP9 poate funcționa sau nu, în funcție de hardware-ul tău.",
@@ -322,7 +341,7 @@
"transcoding_disabled_description": "Nu transcodifică niciun videoclip; acest lucru poate afecta redarea pe anumite dispozitive",
"transcoding_encoding_options": "Opțiuni codificare",
"transcoding_encoding_options_description": "Setează codecuri , calitatea, rezoluția și alte opțiuni pentru videoclipuri codificare",
- "transcoding_hardware_acceleration": "Accelerare Hardware",
+ "transcoding_hardware_acceleration": "Accelerare hardware",
"transcoding_hardware_acceleration_description": "Experimental: transcodare mai rapidă, dar poate reduce calitatea la aceeași rată de biți",
"transcoding_hardware_decoding": "Decodare hardware",
"transcoding_hardware_decoding_setting_description": "Se aplică doar pentru NVENC, QSV și RKMPP. Activează accelerarea completă în loc de doar accelerarea codificării. S-ar putea să nu funcționeze pentru toate videoclipurile.",
@@ -342,7 +361,7 @@
"transcoding_reference_frames": "Cadre de referință",
"transcoding_reference_frames_description": "Numărul de cadre de referință atunci când se comprimă un cadru dat. Valorile mai mari îmbunătățesc eficiența compresiei, dar încetinesc codarea. 0 setează această valoare automat.",
"transcoding_required_description": "Numai videoclipuri care nu sunt într-un format acceptat",
- "transcoding_settings": "Setări de Transcodare Video",
+ "transcoding_settings": "Setări de transcodare video",
"transcoding_settings_description": "Gestionează care videoclipuri să transcodam și cum să le procesam",
"transcoding_target_resolution": "Rezoluția țintă",
"transcoding_target_resolution_description": "Rezoluțiile mai mari pot păstra mai multe detalii, dar necesită mai mult timp pentru codare, au dimensiuni mai mari ale fișierelor și pot reduce răspunsul aplicației.",
@@ -373,23 +392,23 @@
"user_delete_immediately": "Contul și resursele utilizatorului {user} vor fi puse în coadă pentru ștergere permanentă imediat.",
"user_delete_immediately_checkbox": "Pune utilizatorul și resursele în coadă pentru ștergere imediată",
"user_details": "Detalii utilizator",
- "user_management": "Gestionarea Utilizatorilor",
+ "user_management": "Gestionarea utilizatorilor",
"user_password_has_been_reset": "Parola utilizatorului a fost resetată:",
"user_password_reset_description": "Vă rugăm să furnizați utilizatorului parola temporară și să îi informați că va trebui să o schimbe la următoarea autentificare.",
"user_restore_description": "Contul utilizatorului {user} va fi restaurat.",
"user_restore_scheduled_removal": "Restaurare utilizator - ștergere programată pe {date, date, long}",
- "user_settings": "Setǎri Utilizator",
+ "user_settings": "Setǎri utilizator",
"user_settings_description": "Gestioneazǎ setǎrile utilizatorului",
"user_successfully_removed": "Utilizatorul {email} a fost eliminat cu succes.",
"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",
+ "version_check_settings": "Verificare versiune",
"version_check_settings_description": "Activeazǎ/dezactiveazǎ notificarea unei noi versiuni",
"video_conversion_job": "Transcodați videoclipuri",
"video_conversion_job_description": "Transcodați videoclipurile pentru o compatibilitate mai mare cu browserele și dispozitivele"
},
- "admin_email": "E-mail Administrator",
- "admin_password": "Parolă Administrator",
+ "admin_email": "E-mail administrator",
+ "admin_password": "Parolă administrator",
"administration": "Administrare",
"advanced": "Avansat",
"advanced_settings_enable_alternate_media_filter_subtitle": "Utilizați această opțiune pentru a filtra conținutul media în timpul sincronizării pe baza unor criterii alternative. Încercați numai dacă întâmpinați probleme cu aplicația la detectarea tuturor albumelor.",
@@ -398,9 +417,9 @@
"advanced_settings_prefer_remote_subtitle": "Unele dispozitive încarcă extrem de lent miniaturile din resursele locale. Activați această setare pentru a încărca imagini la distanță.",
"advanced_settings_prefer_remote_title": "Preferă fotografii la distanță",
"advanced_settings_proxy_headers_subtitle": "Definește antetele proxy pe care Immich ar trebui să le trimită cu fiecare solicitare de rețea",
- "advanced_settings_proxy_headers_title": "Antete Proxy",
- "advanced_settings_readonly_mode_subtitle": "Activează modul doar-citire, în care fotografiile pot fi doar vizualizate, iar acțiuni precum selectarea mai multor imagini, partajarea, redarea pe alt dispozitiv sau ștergerea sunt dezactivate. Activează/Dezactivează modul doar-citire din avatarul utilizatorului de pe ecranul principal.",
- "advanced_settings_readonly_mode_title": "Mod doar-citire",
+ "advanced_settings_proxy_headers_title": "Headere proxy personalizate",
+ "advanced_settings_readonly_mode_subtitle": "Activează modul doar-citire, în care fotografiile pot fi doar vizualizate, iar acțiuni precum selectarea mai multor imagini, partajarea, redarea pe alt dispozitiv sau ștergerea sunt dezactivate. Activează/Dezactivează modul doar-citire din avatarul utilizatorului de pe ecranul principal",
+ "advanced_settings_readonly_mode_title": "Mod doar citire",
"advanced_settings_self_signed_ssl_subtitle": "Omite verificare certificate SSL pentru distinația server-ului, necesar pentru certificate auto-semnate.",
"advanced_settings_self_signed_ssl_title": "Permite certificate SSL auto-semnate",
"advanced_settings_sync_remote_deletions_subtitle": "Ștergeți sau restaurați automat un element de pe acest dispozitiv atunci când acțiunea este efectuată pe web",
@@ -462,10 +481,14 @@
"api_key_description": "Această valoare va fi afișată o singură dată. Vă rugăm să vă asigurați că o copiați înainte de a închide fereastra.",
"api_key_empty": "Numele cheii API nu trebuie să fie gol",
"api_keys": "Chei API",
+ "app_architecture_variant": "Variantă (Arhitectură)",
"app_bar_signout_dialog_content": "Ești sigur că vrei să te deconectezi?",
"app_bar_signout_dialog_ok": "Da",
"app_bar_signout_dialog_title": "Deconectare",
- "app_settings": "Setări Aplicație",
+ "app_download_links": "Linkuri de descărcare în aplicație",
+ "app_settings": "Setări aplicație",
+ "app_stores": "Magazine de aplicații",
+ "app_update_available": "Este disponibilă o actualizare a aplicației",
"appears_in": "Apare în",
"apply_count": "Aplică ({count, number})",
"archive": "Arhivă",
@@ -476,7 +499,7 @@
"archive_size": "Mărime arhivă",
"archive_size_description": "Configurează dimensiunea arhivei pentru descărcări (în GiB)",
"archived": "Arhivat",
- "archived_count": "{count, plural, other {Arhivat/e#}}",
+ "archived_count": "{count, plural, one {Arhivat} few {# arhivate} other {# arhivate}}",
"are_these_the_same_person": "Sunt aceștia aceeași persoană?",
"are_you_sure_to_do_this": "Sunteți sigur că doriți să faceți acest lucru?",
"asset_action_delete_err_read_only": "Fișierele cu permisiuni doar de citire nu au putut fi șterse, omitere",
@@ -528,6 +551,7 @@
"assets_trashed_count": "Mutat în coșul de gunoi {count, plural, one {# resursă} other {# resurse}}",
"assets_trashed_from_server": "{count} resursă(e) eliminate de pe serverul Immich",
"assets_were_part_of_album_count": "{count, plural, one {Resursa era} other {Resursele erau}} deja parte din album",
+ "assets_were_part_of_albums_count": "{count, plural, one {Asset was} other {Assets were}} deja parte din albume",
"authorized_devices": "Dispozitive Autorizate",
"automatic_endpoint_switching_subtitle": "Conectează-te local prin rețeaua Wi‐Fi configurată când este valabilă și prin rețele alternative în caz contrar",
"automatic_endpoint_switching_title": "Alternare URL automată",
@@ -537,6 +561,7 @@
"background_backup_running_error": "Procesul de backup în fundal este activ, nu se poate porni backup manual",
"background_location_permission": "Permisiune locație în fundal",
"background_location_permission_content": "Pentru a putea schimba rețeaua activă în fundal, Immich are nevoie de acces *permanent* la locația precisă pentru a citi numele rețelei Wi-Fi",
+ "background_options": "Opțiuni de fundal",
"backup": "Backup",
"backup_album_selection_page_albums_device": "Albume în dispozitiv ({count})",
"backup_album_selection_page_albums_tap": "Apasă odata pentru a include, de două ori pentru a exclude",
@@ -544,8 +569,10 @@
"backup_album_selection_page_select_albums": "Selectează albume",
"backup_album_selection_page_selection_info": "Informații selecție",
"backup_album_selection_page_total_assets": "Total resurse unice",
+ "backup_albums_sync": "Sincronizarea albumelor de backup",
"backup_all": "Toate",
"backup_background_service_backup_failed_message": "Eșuare backup resurse. Reîncercare…",
+ "backup_background_service_complete_notification": "Backup resurse finalizat",
"backup_background_service_connection_failed_message": "Conectare la server eșuată. Reîncercare…",
"backup_background_service_current_upload_notification": "Încărcare {filename}",
"backup_background_service_default_notification": "Verificare resurse noi…",
@@ -583,7 +610,7 @@
"backup_controller_page_remainder": "Rămas(e)",
"backup_controller_page_remainder_sub": "Fotografii și videoclipuri din selecție rămase pentru backup",
"backup_controller_page_server_storage": "Stocare server",
- "backup_controller_page_start_backup": "Începe backup",
+ "backup_controller_page_start_backup": "Începe copia de rezervă",
"backup_controller_page_status_off": "Backup-ul automat în prim-plan este oprit",
"backup_controller_page_status_on": "Backup-ul automat în prim-plan este pornit",
"backup_controller_page_storage_format": "{used} din {total} folosit",
@@ -593,12 +620,14 @@
"backup_controller_page_turn_on": "Activează backup-ul în prim-plan",
"backup_controller_page_uploading_file_info": "Informații încărcare fișier",
"backup_err_only_album": "Nu poți șterge singurul album",
+ "backup_error_sync_failed": "Sincronizarea a eșuat. Nu se poate procesa copia de rezervă.",
"backup_info_card_assets": "resurse",
"backup_manual_cancelled": "Anulat",
"backup_manual_in_progress": "Încărcarea este deja în curs. Încearcă din nou mai târziu",
"backup_manual_success": "Succes",
"backup_manual_title": "Status încărcare",
- "backup_options_page_title": "Opțiuni Backup",
+ "backup_options": "Opțiuni copie de rezervă",
+ "backup_options_page_title": "Opțiuni copie de rezervă",
"backup_setting_subtitle": "Schimbă opțiuni pentru backup în prim-plan și în fundal",
"backup_settings_subtitle": "Gestionați setările de încărcare",
"backward": "În sens invers",
@@ -609,7 +638,7 @@
"birthdate_saved": "Data nașterii salvată cu succes",
"birthdate_set_description": "Data nașterii este utilizată pentru a calcula vârsta acestei persoane la momentul realizării fotografiei.",
"blurred_background": "Fundal neclar",
- "bugs_and_feature_requests": "Erori și Solicitări de Caracteristici",
+ "bugs_and_feature_requests": "Erori și solicitări de caracteristici",
"build": "Versiunea",
"build_image": "Versiune Imagine",
"bulk_delete_duplicates_confirmation": "Ești sigur că vrei să ștergi în masă {count, plural, one {# resursă duplicată} other {# resurse duplicate}}? Aceasta va păstra cea mai mare resursă din fiecare grup și va șterge permanent toate celelalte duplicate. Nu poți anula această acțiune!",
@@ -653,12 +682,16 @@
"change_password_description": "Aceasta este fie prima dată când te conectezi în sistem, fie s-a făcut o solicitare pentru a schimba parola ta. Te rog să introduci noua parolă mai jos.",
"change_password_form_confirm_password": "Confirmă parola",
"change_password_form_description": "Salut {name},\n\nAceasta este fie prima dată când te conectazi la sistem, fie s-a făcut o cerere pentru schimbarea parolei. Te rugăm să introduci noua parolă mai jos.",
+ "change_password_form_log_out": "Deconectează toate celelalte dispozitive",
+ "change_password_form_log_out_description": "Se recomandă deconectarea de pe toate celelalte dispozitive",
"change_password_form_new_password": "Parolă nouă",
"change_password_form_password_mismatch": "Parolele nu se potrivesc",
"change_password_form_reenter_new_password": "Reintrodu noua parolă",
"change_pin_code": "Schimbă codul PIN",
"change_your_password": "Schimbă-ți parola",
"changed_visibility_successfully": "Schimbare vizibilitate cu succes",
+ "charging": "Încărcare",
+ "charging_requirement_mobile_backup": "Pentru copia de rezervă în fundal, dispozitivul trebuie să fie în curs de încărcare",
"check_corrupt_asset_backup": "Verifică copii de rezervă a resurselor corupte",
"check_corrupt_asset_backup_button": "Efectuează verificarea",
"check_corrupt_asset_backup_description": "Rulează această verificare doar prin Wi-Fi și doar după ce toate resursele au fost salvate în copia de rezerva. Procedura poate dura câteva minute.",
@@ -677,7 +710,7 @@
"client_cert_import_success_msg": "Certificatul de client este importat",
"client_cert_invalid_msg": "Fisier cu certificat invalid sau parola este greșită",
"client_cert_remove_msg": "Certificatul de client este șters",
- "client_cert_subtitle": "Acceptă doar formatul PKCS12 (.p12, .pfx). Importul/ștergerea certificatului este disponibil(ă) doar înainte de autentificare",
+ "client_cert_subtitle": "Este suportat doar formatul PKCS12 (.p12, .pfx). Importul/ștergerea certificatului este disponibil(ă) doar înainte de autentificare",
"client_cert_title": "Certificat SSL pentru client",
"clockwise": "În sensul acelor de ceas",
"close": "Închideți",
@@ -690,7 +723,6 @@
"comments_and_likes": "Comentarii & aprecieri",
"comments_are_disabled": "Comentariile sunt dezactivate",
"common_create_new_album": "Creează album nou",
- "common_server_error": "Te rugăm să verifici conexiunea la rețea, asigura-te că server-ul este accesibil și că versiunile aplicației/server-ului sunt compatibile.",
"completed": "Finalizat",
"confirm": "Confirmați",
"confirm_admin_password": "Confirmați Parola de Administrator",
@@ -710,7 +742,7 @@
"control_bottom_app_bar_delete_from_immich": "Șterge din Immich",
"control_bottom_app_bar_delete_from_local": "Șterge din dispozitiv",
"control_bottom_app_bar_edit_location": "Editează locație",
- "control_bottom_app_bar_edit_time": "Editează Data și Ora",
+ "control_bottom_app_bar_edit_time": "Editează data și ora",
"control_bottom_app_bar_share_link": "Partajează linkul",
"control_bottom_app_bar_share_to": "Distribuire către",
"control_bottom_app_bar_trash_from_immich": "Mută în coș",
@@ -729,6 +761,7 @@
"create": "Creează",
"create_album": "Creează album",
"create_album_page_untitled": "Fără nume",
+ "create_api_key": "Creează cheie API",
"create_library": "Creează Bibliotecă",
"create_link": "Creează link",
"create_link_to_share": "Creează link pentru a distribui",
@@ -745,6 +778,7 @@
"create_user": "Creează utilizator",
"created": "Creat",
"created_at": "Creat",
+ "creating_linked_albums": "Crearea albumelor cu link...",
"crop": "Decupează",
"curated_object_page_title": "Obiecte",
"current_device": "Dispozitiv curent",
@@ -757,6 +791,7 @@
"daily_title_text_date_year": "E, MMM dd, yyyy",
"dark": "Întunecat",
"dark_theme": "Comută tema întunecată",
+ "date": "Dată",
"date_after": "După data",
"date_and_time": "Dată și oră",
"date_before": "Anterior datei",
@@ -764,6 +799,7 @@
"date_of_birth_saved": "Data nașterii salvată cu succes",
"date_range": "Interval de date",
"day": "Zi",
+ "days": "Zile",
"deduplicate_all": "Deduplicați Toate",
"deduplication_criteria_1": "Marimea imagini în octeți",
"deduplication_criteria_2": "Numărul de date EXIF",
@@ -848,10 +884,12 @@
"edit": "Editare",
"edit_album": "Editare album",
"edit_avatar": "Editare avatar",
- "edit_birthday": "Editează ziua de naștere",
+ "edit_birthday": "Modifică ziua de naștere",
"edit_date": "Editare dată",
"edit_date_and_time": "Editare dată și oră",
"edit_date_and_time_action_prompt": "{count} data și ora modificării",
+ "edit_date_and_time_by_offset": "Schimbă data prin decalaj",
+ "edit_date_and_time_by_offset_interval": "Noul interval de date: {from} - {to}",
"edit_description": "Editează descrierea",
"edit_description_prompt": "Vă rugăm să selectați o descriere nouă:",
"edit_exclusion_pattern": "Editarea modelului de excludere",
@@ -861,14 +899,13 @@
"edit_key": "Tastă de editare",
"edit_link": "Editare link",
"edit_location": "Editare locație",
- "edit_location_action_prompt": "{count} locație(i) editată(e)",
+ "edit_location_action_prompt": "{count} locație(i) modificată(e)",
"edit_location_dialog_title": "Locație",
"edit_name": "Editare nume",
"edit_people": "Editare persoane",
"edit_tag": "Editare etichetă",
"edit_title": "Editare Titlu",
"edit_user": "Editare utilizator",
- "edited": "Editat",
"editor": "Editor",
"editor_close_without_save_prompt": "Schimbările nu vor fi salvate",
"editor_close_without_save_title": "Închideți editorul?",
@@ -891,7 +928,9 @@
"error": "Eroare",
"error_change_sort_album": "Nu s-a putut modifica ordinea de sortare a albumului",
"error_delete_face": "Eroare la ștergerea feței din activ",
+ "error_getting_places": "Eroare la obținerea locațiilor",
"error_loading_image": "Eroare la încărcarea imaginii",
+ "error_loading_partners": "Eroare la încărcarea partenerilor: {error}",
"error_saving_image": "Eroare: {error}",
"error_tag_face_bounding_box": "Eroare la etichetarea feței - nu se pot obține coordonatele casetei de delimitare",
"error_title": "Eroare - ceva nu a mers",
@@ -924,6 +963,7 @@
"failed_to_load_notifications": "Nu s-au putut încărca notificările",
"failed_to_load_people": "Eșec la încărcarea persoanelor",
"failed_to_remove_product_key": "Eșec la eliminarea cheii de produs",
+ "failed_to_reset_pin_code": "Nu s-a reușit resetarea codului PIN",
"failed_to_stack_assets": "Eșec la combinarea resurselor",
"failed_to_unstack_assets": "Eșec la desfășurarea resurselor",
"failed_to_update_notification_status": "Nu s-a putut actualiza starea notificării",
@@ -932,6 +972,7 @@
"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",
+ "something_went_wrong": "Ceva nu a mers bine",
"unable_to_add_album_users": "Imposibil de adăugat utilizatori în album",
"unable_to_add_assets_to_shared_link": "Imposibil de adăugat resurse la link-ul partajat",
"unable_to_add_comment": "Imposibil de adăugat comentariu",
@@ -1020,6 +1061,7 @@
"exif_bottom_sheet_description_error": "Eroare la actualizarea descrierii",
"exif_bottom_sheet_details": "DETALII",
"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",
"exit_slideshow": "Ieșire din Prezentare",
@@ -1039,7 +1081,7 @@
"export_database_description": "Exportați baza de date SQLite",
"extension": "Extensie",
"external": "Extern",
- "external_libraries": "Biblioteci Externe",
+ "external_libraries": "Biblioteci externe",
"external_network": "Rețea externă",
"external_network_sheet_info": "Când nu se află în rețeaua Wi-Fi preferată, aplicația se va conecta la server prin prima dintre adresele URL de mai jos pe care o poate accesa, începând de sus în jos",
"face_unassigned": "Nealocat",
@@ -1054,30 +1096,37 @@
"favorites_page_no_favorites": "Nu au fost găsite resurse favorite",
"feature_photo_updated": "Fotografie caracteristică actualizată",
"features": "Caracteristici",
+ "features_in_development": "Funcții în dezvoltare",
"features_setting_description": "Gestionați funcțiile aplicației",
"file_name": "Nume de fișier",
"file_name_or_extension": "Numele sau extensia fișierului",
+ "file_size": "Mărime fișier",
"filename": "Numele fișierului",
"filetype": "Tipul fișierului",
"filter": "Filtre",
"filter_people": "Filtrați persoanele",
"filter_places": "Filtrează locurile",
"find_them_fast": "Găsiți-le rapid prin căutare după nume",
+ "first": "Primul",
"fix_incorrect_match": "Remediați potrivirea incorectă",
"folder": "Dosar",
"folder_not_found": "Dosar negăsit",
- "folders": "Foldere",
+ "folders": "Fișiere",
"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",
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Această funcție încarcă resurse externe de la Google pentru a funcționa.",
"general": "General",
+ "geolocation_instruction_location": "Apasă pe o resursă cu coordonate GPS pentru a folosi locația sa, sau selectează direct o locație de pe hartă",
"get_help": "Obțineți Ajutor",
"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_search": "Spre căutare",
+ "gps": "GPS",
+ "gps_missing": "Fără GPS",
"grant_permission": "Acordați permisiunea",
"group_albums_by": "Grupați albume de...",
"group_country": "Grupare după țară",
@@ -1088,11 +1137,13 @@
"haptic_feedback_switch": "Activează feedback-ul haptic",
"haptic_feedback_title": "Feedback haptic",
"has_quota": "Are spațiu de stocare",
+ "hash_asset": "Hash-ul resursei",
+ "hashed_assets": "Resurse hashed",
+ "hashing": "Generare hash",
"header_settings_add_header_tip": "Adăugați antet",
"header_settings_field_validator_msg": "Valoarea nu poate fi goală",
"header_settings_header_name_input": "Numele antetului",
"header_settings_header_value_input": "Valoarea antetului",
- "headers_settings_tile_subtitle": "Definiți header-urile proxy pe care aplicația ar trebui să le trimită cu fiecare solicitare de rețea",
"headers_settings_tile_title": "Header-uri proxy personalizate",
"hi_user": "Bună {name} ({email})",
"hide_all_people": "Ascundeți toate persoanele",
@@ -1114,11 +1165,12 @@
"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 materialele partenerului în folderul blocat, se omit.",
+ "home_page_locked_error_partner": "Nu se pot muta resursele partenerului în folderul blocat, se 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ă",
"hour": "Oră",
+ "hours": "Ore",
"id": "ID",
"idle": "Inactiv",
"ignore_icloud_photos": "Ignoră fotografiile din iCloud",
@@ -1178,10 +1230,13 @@
"language_no_results_title": "Nu au fost găsite limbi",
"language_search_hint": "Căutați limbi...",
"language_setting_description": "Selectați limba preferată",
+ "large_files": "Fișiere mari",
+ "last": "Ultimul",
"last_seen": "Văzut ultima dată",
"latest_version": "Ultima Versiune",
"latitude": "Latitudine",
"leave": "Părăsiți",
+ "leave_album": "Părăsește albumul",
"lens_model": "Model obiectiv",
"let_others_respond": "Permite altora să răspundă",
"level": "Nivel",
@@ -1195,6 +1250,7 @@
"library_page_sort_title": "Titlu album",
"licenses": "Licențe",
"light": "Lumină",
+ "like": "Îmi place",
"like_deleted": "Preferat șters",
"link_motion_video": "Link video în mișcare",
"link_to_oauth": "Link către OAuth",
@@ -1205,8 +1261,10 @@
"local": "Local",
"local_asset_cast_failed": "Nu se poate converti un element care nu este încărcat pe server",
"local_assets": "Asset-uri locale",
+ "local_media_summary": "Rezumatul fișierelor media locale",
"local_network": "Rețea locală",
"local_network_sheet_info": "Aplicația se va conecta la server prin intermediul acestei adrese URL atunci când utilizează rețeaua Wi-Fi specificată",
+ "location": "Locație",
"location_permission": "Permisiunea de locație",
"location_permission_content": "Pentru a utiliza funcția de comutare automată, Immich are nevoie de permisiune pentru locația precisă, astfel încât să poată citi numele rețelei Wi-Fi curente",
"location_picker_choose_on_map": "Alege pe hartă",
@@ -1216,6 +1274,7 @@
"location_picker_longitude_hint": "Introdu longitudinea aici",
"lock": "Blocare",
"locked_folder": "Dosar blocat",
+ "log_detail_title": "Detalii jurnal",
"log_out": "Deconectare",
"log_out_all_devices": "Deconectați-vă de la toate dispozitivele",
"logged_in_as": "Conectat ca {user}",
@@ -1246,13 +1305,15 @@
"login_password_changed_success": "Parola a fost actualizată cu succes",
"logout_all_device_confirmation": "Sigur doriți să deconectați toate dispozitivele?",
"logout_this_device_confirmation": "Sigur doriți să deconectați acest dispozitiv?",
+ "logs": "Jurnale",
"longitude": "Longitudine",
"look": "Examinare",
"loop_videos": "Buclă videoclipuri",
"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",
- "make": "Face",
+ "make": "Marcă",
+ "manage_geolocation": "Gestionați locația",
"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",
@@ -1261,7 +1322,7 @@
"manage_your_devices": "Gestionați-vă dispozitivele conectate",
"manage_your_oauth_connection": "Gestionați-vă conexiunea OAuth",
"map": "Hartă",
- "map_assets_in_bounds": "{count, plural, one {# poză} other {# poze}}",
+ "map_assets_in_bounds": "{count, plural, =0 {Nu există fotografii în această zonă} one {# fotografie} other {# fotografii}}",
"map_cannot_get_user_location": "Nu se poate obține locația utilizatorului",
"map_location_dialog_yes": "Da",
"map_location_picker_page_use_location": "Folosește această locație",
@@ -1287,6 +1348,7 @@
"mark_as_read": "Marchează ca citit",
"marked_all_as_read": "Marcate toate ca citite",
"matches": "Corespunde",
+ "matching_assets": "Resurse similare",
"media_type": "Tip media",
"memories": "Amintiri",
"memories_all_caught_up": "Sunteți la zi",
@@ -1304,8 +1366,11 @@
"merge_people_successfully": "Persoane îmbinate cu succes",
"merged_people_count": "Imbinate {count, plural, one {# persoană} other {# persoane}}",
"minimize": "Minimizare",
- "minute": "Minute",
+ "minute": "Minut",
+ "minutes": "Minute",
"missing": "Lipsă",
+ "mobile_app": "Aplicație Mobilă",
+ "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",
@@ -1324,15 +1389,23 @@
"my_albums": "Albumele mele",
"name": "Nume",
"name_or_nickname": "Nume sau poreclǎ",
+ "navigate": "Navighează/Navigare",
+ "navigate_to_time": "Mergi la Timp",
+ "network_requirement_photos_upload": "Utilizați datele mobile pentru a face copii de rezervă ale fotografiilor",
+ "network_requirement_videos_upload": "Utilizați datele mobile pentru a face copii de rezervă ale videoclipurilor",
+ "network_requirements": "Cerințe privind rețeaua",
+ "network_requirements_updated": "Cerințele rețelei s-au modificat, resetarea cozii copiei de rezervă",
"networking_settings": "Rețele",
"networking_subtitle": "Gestionați setările endpoint-ului serverului",
"never": "Niciodată",
"new_album": "Album Nou",
"new_api_key": "Cheie API nouǎ",
+ "new_date_range": "Interval de dată nou",
"new_password": "Parolă nouă",
"new_person": "Persoanǎ nouǎ",
"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_user_created": "Utilizator nou creat",
"new_version_available": "VERSIUNE NOUĂ DISPONIBILĂ",
"newest_first": "Cel mai nou primul",
@@ -1346,20 +1419,25 @@
"no_assets_message": "CLICK PENTRU A ÎNCĂRCA PRIMA TA FOTOGRAFIE",
"no_assets_to_show": "Nicio resursă de afișat",
"no_cast_devices_found": "Nu s-au găsit dispozitive de difuzare",
+ "no_checksum_local": "Nu există checksum – nu se pot prelua resursele locale",
+ "no_checksum_remote": "Nu există checksum – nu se pot prelua resursele la distanță",
"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_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_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",
"no_people_found": "Nu au fost găsite persoane potrivite căutării",
"no_places": "Nu există locuri",
+ "no_remote_assets_found": "Nicio resursă de la distanță găsită cu acest checksum",
"no_results": "Fără rezultate",
"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_available": "N/A",
"not_in_any_album": "Nu există în niciun album",
"not_selected": "Neselectat",
"note_apply_storage_label_to_previously_uploaded assets": "Notă: Pentru a aplica eticheta de stocare la resursele încărcate anterior, rulați",
@@ -1373,8 +1451,12 @@
"notifications": "Notificări",
"notifications_setting_description": "Gestionați notificările",
"oauth": "OAuth",
+ "obtainium_configurator": "Configurator Obtainium",
+ "obtainium_configurator_instructions": "Folosește Obtainium pentru a instala și actualiza aplicația Android direct din release-urile Immich de pe GitHub. Creează o cheie API și selectează o variantă pentru a genera linkul de configurare Obtainium",
+ "ocr": "OCR",
"official_immich_resources": "Resurse Oficiale Immich",
"offline": "Offline",
+ "offset": "Decalaj",
"ok": "Bine",
"oldest_first": "Cel mai vechi mai întâi",
"on_this_device": "Pe acest dispozitiv",
@@ -1393,6 +1475,8 @@
"open_the_search_filters": "Deschideți filtrele de căutare",
"options": "Opțiuni",
"or": "sau",
+ "organize_into_albums": "Organizați în albume",
+ "organize_into_albums_description": "Pune fotografiile existente în albume folosind setările curente de sincronizare",
"organize_your_library": "Organizează-ți biblioteca",
"original": "original",
"other": "Alte",
@@ -1452,6 +1536,9 @@
"permission_onboarding_permission_limited": "Permisiune limitată. Pentru a permite Immich să facă copii de siguranță și să gestioneze întreaga colecție de galerii, acordă permisiuni pentru fotografii și videoclipuri în Setări.",
"permission_onboarding_request": "Immich necesită permisiunea de a vizualiza fotografiile și videoclipurile tale.",
"person": "Persoanǎ",
+ "person_age_months": "{months, plural, one {# lună} other {# luni}}",
+ "person_age_year_months": "1 an, {months, plural, one {# lună} other {# luni}}",
+ "person_age_years": "{years, plural, other {# years}} vechime",
"person_birthdate": "Născut pe {date}",
"person_hidden": "{name}{hidden, select, true { (ascuns)} other {}}",
"photo_shared_all_users": "Se pare că ți-ai partajat fotografiile tuturor utilizatorilor sau că nu ai niciun utilizator căruia să le distribui.",
@@ -1471,10 +1558,14 @@
"play_memories": "Redare amintiri",
"play_motion_photo": "Redare Fotografie în Mișcare",
"play_or_pause_video": "Redați sau întrerupeți videoclipul",
+ "play_original_video": "Redă video original",
+ "play_original_video_setting_description": "Se preferă redarea videoclipurilor originale în locul celor transcodate. Dacă fișierul original nu este compatibil, redarea s-ar putea să nu fie corectă.",
+ "play_transcoded_video": "Redă video transcodificat",
"please_auth_to_access": "Vă rugăm să vă autentificați pentru a accesa",
"port": "Port",
"preferences_settings_subtitle": "Gestionați preferințele aplicației",
"preferences_settings_title": "Preferințe",
+ "preparing": "Se prepară",
"preset": "Presetat",
"preview": "Previzualizare",
"previous": "Anterior",
@@ -1487,12 +1578,9 @@
"privacy": "Confidențialitate",
"profile": "Profil",
"profile_drawer_app_logs": "Log-uri",
- "profile_drawer_client_out_of_date_major": "Aplicația nu folosește ultima versiune. Te rugăm să actualizezi la ultima versiune majoră.",
- "profile_drawer_client_out_of_date_minor": "Aplicația nu folosește ultima versiune. Te rugăm să actualizezi la ultima versiune minoră.",
"profile_drawer_client_server_up_to_date": "Aplicația client și server-ul sunt actualizate",
"profile_drawer_github": "GitHub",
- "profile_drawer_server_out_of_date_major": "Server-ul nu folosește ultima versiune. Te rugăm să actualizezi la ultima versiune majoră.",
- "profile_drawer_server_out_of_date_minor": "Server-ul nu folosește ultima versiune. Te rugăm să actulizezi la ultima versiune minoră.",
+ "profile_drawer_readonly_mode": "Mod doar citire activat. Ține apăsat pe pictograma avatarului utilizatorului pentru a ieși.",
"profile_image_of_user": "Imagine de profil a lui {user}",
"profile_picture_set": "Poză de profil setată.",
"public_album": "Album public",
@@ -1529,6 +1617,7 @@
"purchase_server_description_2": "Statutul de suporter",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "Cheia de produs a serverului este gestionată de administrator",
+ "query_asset_id": "Interoghează ID-ul resursei",
"queue_status": "Se pun în coadă {count}/{total}",
"rating": "Evaluare cu stele",
"rating_clear": "Anulați evaluarea",
@@ -1536,6 +1625,9 @@
"rating_description": "Afișați evaluarea EXIF în panoul de informații",
"reaction_options": "Opțiuni de reacție",
"read_changelog": "Citiți Jurnalul de Modificări",
+ "readonly_mode_disabled": "Modul doar citire dezactivat",
+ "readonly_mode_enabled": "Modul doar citire activat",
+ "ready_for_upload": "Pregătit pentru încărcare",
"reassign": "Reatribuiți",
"reassigned_assets_to_existing_person": "Re-alocat {count, plural, one {# resursă} other {# resurse}} to {name, select, null {unei persoane existente} other {{name}}}",
"reassigned_assets_to_new_person": "Re-alocat {count, plural, one {# resursă} other {# resurse}} unei noi persoane",
@@ -1560,6 +1652,7 @@
"regenerating_thumbnails": "Se regenerează miniaturile",
"remote": "De la distanță",
"remote_assets": "Elemente la distanță",
+ "remote_media_summary": "Rezumat media de la distanță",
"remove": "Eliminați",
"remove_assets_album_confirmation": "Sigur doriți să eliminați {count, plural, one {# resursă} other {# resurse}} din album?",
"remove_assets_shared_link_confirmation": "Sigur doriți să eliminați {count, plural, one {# resursă} other {# resurse}} din acest link comun?",
@@ -1597,10 +1690,14 @@
"reset_password": "Resetare parolă",
"reset_people_visibility": "Resetați vizibilitatea persoanelor",
"reset_pin_code": "Resetare cod PIN",
+ "reset_pin_code_description": "Dacă ți-ai uitat codul PIN, poți contacta administratorul serverului pentru a-l reseta",
+ "reset_pin_code_success": "Codul PIN a fost resetat cu succes",
+ "reset_pin_code_with_password": "Puteți reseta oricând codul PIN cu ajutorul parolei",
"reset_sqlite": "Resetare bază de date SQLite",
"reset_sqlite_confirmation": "Sigur doriți să resetați baza de date SQLite? Va trebui să vă deconectați și să vă conectați din nou pentru a resincroniza datele",
"reset_sqlite_success": "Resetarea cu succes a bazei de date SQLite",
"reset_to_default": "Resetați la valoarea implicită",
+ "resolution": "Rezoluție",
"resolve_duplicates": "Rezolvați duplicatele",
"resolved_all_duplicates": "Rezolvați toate duplicatele",
"restore": "Restaurați",
@@ -1609,20 +1706,23 @@
"restore_user": "Restabiliți utilizatorul",
"restored_asset": "Resursă restaurată",
"resume": "Reluare",
+ "resume_paused_jobs": "Reluați {count, plural, one {# paused job} other {# paused jobs}}",
"retry_upload": "Reîncercați încărcarea",
"review_duplicates": "Examinați duplicatele",
+ "review_large_files": "Revizuirea fișierelor mari",
"role": "Rol",
"role_editor": "Editor",
"role_viewer": "Vizualizator",
"running": "Rulează",
"save": "Salvați",
"save_to_gallery": "Salvați în galerie",
+ "saved": "Salvat",
"saved_api_key": "Cheie API salvată",
"saved_profile": "Profil salvat",
"saved_settings": "Setări salvate",
"say_something": "Spuneți ceva",
"scaffold_body_error_occurred": "A apărut o eroare",
- "scan_all_libraries": "Scanați Toate Bibliotecile",
+ "scan_all_libraries": "Scanați toate bibliotecile",
"scan_library": "Scanare",
"scan_settings": "Setări Scanare",
"scanning_for_album": "Se scanează după album...",
@@ -1633,10 +1733,13 @@
"search_by_description_example": "Zi de drumeție în Sapa",
"search_by_filename": "Căutați după numele fișierului sau extensie",
"search_by_filename_example": "i.e. IMG_1234.JPG sau PNG",
+ "search_by_ocr": "Caută folosind OCR",
+ "search_by_ocr_example": "Latte",
+ "search_camera_lens_model": "Caută modelul lentilei...",
"search_camera_make": "Se caută marca camerei...",
"search_camera_model": "Se caută modelul camerei...",
- "search_city": "Se caută orașul...",
- "search_country": "Se caută țara...",
+ "search_city": "Caută în orașul...",
+ "search_country": "Caută în țara...",
"search_filter_apply": "Aplicați filtrul",
"search_filter_camera_title": "Selectați tipul de cameră",
"search_filter_date": "Dată",
@@ -1649,9 +1752,10 @@
"search_filter_location_title": "Selectați locația",
"search_filter_media_type": "Tip media",
"search_filter_media_type_title": "Selectați tipul media",
+ "search_filter_ocr": "Caută dupa OCR",
"search_filter_people_title": "Selectați persoane",
"search_for": "Căutare după",
- "search_for_existing_person": "Se caută o persoană existentă",
+ "search_for_existing_person": "Caută o persoană existentă",
"search_no_more_result": "Nu mai există rezultate",
"search_no_people": "Fără persoane",
"search_no_people_named": "Nicio persoană numită \"{name}\"",
@@ -1673,7 +1777,7 @@
"search_rating": "Caută după notă...",
"search_result_page_new_search_hint": "Căutare nouă",
"search_settings": "Setări de căutare",
- "search_state": "Starea căutării...",
+ "search_state": "Caută în Stat/Județ...",
"search_suggestion_list_smart_search_hint_1": "Căutarea inteligentă este activată în mod implicit, pentru a căuta metadata, utilizează sintaxa ",
"search_suggestion_list_smart_search_hint_2": "m:termen-de-căutare",
"search_tags": "Căutați etichete...",
@@ -1701,6 +1805,7 @@
"select_user_for_sharing_page_err_album": "Creare album eșuată",
"selected": "Selectat",
"selected_count": "{count, plural, other {# selectat}}",
+ "selected_gps_coordinates": "Coordonate GPS selectate",
"send_message": "Trimiteți mesaj",
"send_welcome_email": "Trimiteți email de bun venit",
"server_endpoint": "Endpoint server",
@@ -1709,7 +1814,8 @@
"server_offline": "Serverul este offline",
"server_online": "Server online",
"server_privacy": "Confidențialitatea serverului",
- "server_stats": "Statistici Server",
+ "server_stats": "Statistici server",
+ "server_update_available": "Actualizare pentru server disponibilă",
"server_version": "Versiune Server",
"set": "Setați",
"set_as_album_cover": "Setați ca și copertă a albumului",
@@ -1738,6 +1844,8 @@
"setting_notifications_subtitle": "Ajustează preferințele pentru notificări",
"setting_notifications_total_progress_subtitle": "Progresul general al încărcării (resurse finalizate/total)",
"setting_notifications_total_progress_title": "Afișează progresul total al copiilor de siguranță în fundal",
+ "setting_video_viewer_auto_play_subtitle": "Pornește automat redarea videoclipurilor când sunt deschise",
+ "setting_video_viewer_auto_play_title": "Redare automată a videoclipurilor",
"setting_video_viewer_looping_title": "Buclă",
"setting_video_viewer_original_video_subtitle": "Când redați în flux un videoclip de pe server, redați originalul chiar și atunci când este disponibilă o transcodare. Poate duce la încărcare temporară. Videoclipurile disponibile local sunt redate la calitatea originală indiferent de această setare.",
"setting_video_viewer_original_video_title": "Forțează videoclipul original",
@@ -1768,6 +1876,7 @@
"shared_link_clipboard_copied_massage": "Copiat în clipboard",
"shared_link_clipboard_text": "Link: {link}\nParolă: {password}",
"shared_link_create_error": "Eroare în timpul creării linkului de distribuire",
+ "shared_link_custom_url_description": "Accesează acest link partajat cu un URL personalizat",
"shared_link_edit_description_hint": "Introdu descrierea distribuirii",
"shared_link_edit_expire_after_option_day": "1 zi",
"shared_link_edit_expire_after_option_days": "{count} zile",
@@ -1793,6 +1902,7 @@
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Administrează link-urile distribuite",
"shared_link_options": "Opțiuni de link partajat",
+ "shared_link_password_description": "Solicită o parolă pentru a accesa acest link partajat",
"shared_links": "Link-uri distribuite",
"shared_links_description": "Partajare imagini și clipuri printr-un link",
"shared_photos_and_videos_count": "{assetCount, plural, other {# fotografii și videoclipuri partajate.}}",
@@ -1827,6 +1937,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_search_menu": "Afișează meniul de căutare text",
"shuffle": "Amestecați",
"sidebar": "Bara laterală",
"sidebar_display_description": "Afișați un link către vizualizare în bara laterală",
@@ -1842,6 +1953,7 @@
"sort_created": "Data creării",
"sort_items": "Numărul de articole",
"sort_modified": "Data modificării",
+ "sort_newest": "Cea mai nouă fotografie",
"sort_oldest": "Cea mai veche fotografie",
"sort_people_by_similarity": "Sortează oameni după asemanare",
"sort_recent": "Cea mai recentă fotografie",
@@ -1856,7 +1968,8 @@
"stacktrace": "Urmă stivă",
"start": "Început",
"start_date": "Data de începere",
- "state": "Situaţie",
+ "start_date_before_end_date": "Data de început trebuie să fie înainte de data de sfârșit",
+ "state": "Stat/Județ",
"status": "Stare",
"stop_casting": "Opriți difuzarea",
"stop_motion_photo": "Opriți Fotografia in Mișcare",
@@ -1880,6 +1993,8 @@
"sync_albums_manual_subtitle": "Sincronizează toate videoclipurile și fotografiile încărcate cu albumele de rezervă selectate",
"sync_local": "Sincronizare locală",
"sync_remote": "Sincronizare la distanță",
+ "sync_status": "Status-ul sincronizării",
+ "sync_status_subtitle": "Vizualizează și gestionează sistemul de sincronizare",
"sync_upload_album_setting_subtitle": "Creează și încarcă fotografiile și videoclipurile tale în albumele selectate de pe Immich",
"tag": "Etichetă",
"tag_assets": "Eticheta resurselor",
@@ -1910,6 +2025,7 @@
"theme_setting_three_stage_loading_title": "Pornește încărcarea în 3 etape",
"they_will_be_merged_together": "Vor fi îmbinate împreună",
"third_party_resources": "Resurse Terță Parte",
+ "time": "Timp",
"time_based_memories": "Amintiri bazate pe timp",
"timeline": "Cronologie",
"timezone": "Fus orar",
@@ -1917,7 +2033,9 @@
"to_change_password": "Schimbaţi parola",
"to_favorite": "Favorit",
"to_login": "Conectare",
+ "to_multi_select": "pentru selecție multiplă",
"to_parent": "Du-te la părinte",
+ "to_select": "a selecta",
"to_trash": "Coș de gunoi",
"toggle_settings": "Activați setările",
"total": "Total",
@@ -1937,8 +2055,10 @@
"trash_page_select_assets_btn": "Selectează resurse",
"trash_page_title": "Coș ({count})",
"trashed_items_will_be_permanently_deleted_after": "Elementele din coșul de gunoi vor fi șterse definitiv după {days, plural, one {# zi} other {# zile}}.",
+ "troubleshoot": "Depanați",
"type": "Tip",
"unable_to_change_pin_code": "Nu se poate schimba codul PIN",
+ "unable_to_check_version": "Verificarea versiunii aplicației sau serverului a eșuat",
"unable_to_setup_pin_code": "Nu se poate configura codul PIN",
"unarchive": "Dezarhivați",
"unarchive_action_prompt": "{count} șters(e) din Arhivă",
@@ -1963,10 +2083,11 @@
"unselect_all_duplicates": "Deselectați toate duplicatele",
"unselect_all_in": "Deselectați toate din {group}",
"unstack": "Dezasamblați",
- "unstack_action_prompt": "{count} unstacked",
+ "unstack_action_prompt": "{count} neîmpachetate",
"unstacked_assets_count": "Nestivuit {count, plural, one {# resursă} other {# resurse}}",
"untagged": "Neetichetat",
"up_next": "Mai departe",
+ "update_location_action_prompt": "Actualizează locația pentru {count} resurse selectate cu:",
"updated_at": "Actualizat",
"updated_password": "Parolă actualizată",
"upload": "Încărcați",
@@ -2033,13 +2154,14 @@
"view_next_asset": "Vizualizați următoarea resursă",
"view_previous_asset": "Vizualizați resursa anterioară",
"view_qr_code": "Vezi cod QR",
- "view_stack": "Vizualizați Stiva",
+ "view_similar_photos": "Vizualizați poze similare",
+ "view_stack": "Vizualizare stivă",
"view_user": "Vizualizare utilizator",
"viewer_remove_from_stack": "Șterge din grup",
"viewer_stack_use_as_main_asset": "Folosește ca resursă principală",
"viewer_unstack": "Anulează grup",
"visibility_changed": "Vizibilitatea schimbată pentru {count, plural, one {# persoană} other {# persoane}}",
- "waiting": "Așteptați",
+ "waiting": "În așteptare",
"warning": "Avertisment",
"week": "Sǎptǎmânǎ",
"welcome": "Bun venit",
@@ -2051,5 +2173,6 @@
"yes": "Da",
"you_dont_have_any_shared_links": "Nu aveți linkuri partajate",
"your_wifi_name": "Numele rețelei tale WiFi",
- "zoom_image": "Măriți Imaginea"
+ "zoom_image": "Măriți Imaginea",
+ "zoom_to_bounds": "Mărește la margini"
}
diff --git a/i18n/ru.json b/i18n/ru.json
index 26d379d68e..52cd3adbc3 100644
--- a/i18n/ru.json
+++ b/i18n/ru.json
@@ -28,10 +28,12 @@
"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_shared_album": "Добавить в общий альбом",
+ "add_upload_to_stack": "Загрузить и добавить в группу",
"add_url": "Добавить URL",
"added_to_archive": "Добавлено в архив",
"added_to_favorites": "Добавлено в избранное",
@@ -39,7 +41,7 @@
"admin": {
"add_exclusion_pattern_description": "Добавьте шаблоны исключений. Поддерживаются символы подстановки *, ** и ?. Чтобы игнорировать все файлы в любом каталоге с именем \"Raw\", укажите \"**/Raw/**\". Чтобы игнорировать все файлы, заканчивающиеся на \".tif\", используйте \"**/*.tif\". Чтобы игнорировать путь целиком, укажите \"/path/to/ignore/**\".",
"admin_user": "Администратор",
- "asset_offline_description": "Этот файл внешней библиотеки не был найден на диске и был перемещён в корзину. Если файл был перемещён внутри библиотеки, проверьте временную шкалу, чтобы найти новый соответствующий ресурс. Чтобы восстановить файл, убедитесь, что путь ниже доступен для Immich и выполните сканирование библиотеки.",
+ "asset_offline_description": "Этот объект из внешней библиотеки не был обнаружен на диске и поэтому перемещён в корзину. Если файл объекта был перемещён внутри библиотеки, проверьте временную шкалу, чтобы найти новый соответствующий объект. Чтобы восстановить файл, убедитесь, что следующий путь доступен для Immich, и выполните сканирование библиотеки.",
"authentication_settings": "Настройки аутентификации",
"authentication_settings_description": "Управление паролями, OAuth и другими настройками аутентификации",
"authentication_settings_disable_all": "Вы уверены, что хотите отключить все методы входа? Вход будет полностью отключен.",
@@ -62,7 +64,7 @@
"confirm_delete_library": "Вы действительно хотите удалить библиотеку {library}?",
"confirm_delete_library_assets": "Вы уверены, что хотите удалить эту библиотеку? Это безвозвратно удалит {count, plural, one {# объект} many {# объектов} other {# объекта}} из Immich. Файлы останутся на диске.",
"confirm_email_below": "Введите \"{email}\" для подтверждения",
- "confirm_reprocess_all_faces": "Вы уверены, что хотите повторно определить все лица? Будут также удалены имена со всех лиц.",
+ "confirm_reprocess_all_faces": "Вы действительно хотите переопределить все лица? Также будут очищены имена всех людей.",
"confirm_user_password_reset": "Вы действительно хотите сбросить пароль пользователя {user}?",
"confirm_user_pin_code_reset": "Вы действительно хотите сбросить PIN-код пользователя {user}?",
"create_job": "Создать задачу",
@@ -77,7 +79,7 @@
"face_detection_description": "Обнаруживает лица на объектах с использованием машинного обучения. Для видео анализируется только миниатюра. Кнопка \"Обновить\" запускает повторную обработку всех объектов. \"Сброс\" — дополнительно удаляет все имеющиеся данные о лицах. \"Отсутствующие\" — ставит в очередь объекты, которые ещё не были обработаны. Обнаруженные лица помещаются в очередь для задачи Распознавание лиц и последующей их привязки к существующим или новым людям.",
"facial_recognition_job_description": "Группирует и назначает обнаруженные лица людям. Выполняется после завершения задачи Обнаружение лиц. Кнопка \"Сброс\" (пере)назначает все лица. \"Отсутствующие\" — добавляет в очередь обработки лица, не привязанные к человеку.",
"failed_job_command": "Команда {command} не выполнена для задачи: {job}",
- "force_delete_user_warning": "ПРЕДУПРЕЖДЕНИЕ: Это приведет к немедленному удалению пользователя и его ресурсов. Это действие невозможно отменить, и файлы не могут быть восстановлены.",
+ "force_delete_user_warning": "ПРЕДУПРЕЖДЕНИЕ: Это приведет к немедленному удалению пользователя и всех его объектов. Это действие невозможно отменить, файлы не смогут быть восстановлены.",
"image_format": "Формат",
"image_format_description": "WebP создает файлы меньшего размера, чем JPEG, но кодирует медленнее.",
"image_fullsize_description": "Полноразмерное изображение без метаданных, используется при увеличении",
@@ -118,7 +120,7 @@
"library_settings_description": "Управление внешними библиотеками",
"library_tasks_description": "Сканирование внешних библиотек на наличие новых и/или изменённых объектов",
"library_watching_enable_description": "Отслеживать изменения файлов во внешних библиотеках",
- "library_watching_settings": "Слежение за библиотекой (ЭКСПЕРИМЕНТАЛЬНОЕ)",
+ "library_watching_settings": "[ЭКСПЕРИМЕНТАЛЬНО] Слежение за библиотекой",
"library_watching_settings_description": "Автоматически следить за изменениями файлов",
"logging_enable_description": "Включить ведение журнала",
"logging_level_description": "Если включено, выберите желаемый уровень журналирования.",
@@ -145,13 +147,25 @@
"machine_learning_facial_recognition_setting": "Включить функцию распознавания лиц",
"machine_learning_facial_recognition_setting_description": "При отключении этой функции изображения не будут кодироваться для распознавания лиц, и не будет заполняться раздел Люди.",
"machine_learning_max_detection_distance": "Максимальное различие изображений",
- "machine_learning_max_detection_distance_description": "Максимальное различие между двумя изображениями, чтобы считать их дубликатами, в диапазоне 0,001-0,1. Более высокие значения позволяют обнаружить больше дубликатов, но могут привести к ложным срабатываниям.",
+ "machine_learning_max_detection_distance_description": "Максимальное различие между двумя изображениями, чтобы считать их дубликатами (в диапазоне от 0,001 до 0,1). Более высокое значение позволит найти больше дубликатов, но может привести к ложным срабатываниям.",
"machine_learning_max_recognition_distance": "Порог распознавания",
- "machine_learning_max_recognition_distance_description": "Максимальное различие между двумя лицами, которые можно считать одним и тем же человеком, в диапазоне 0-2. Понижение этого параметра может предотвратить распознавание двух людей как одного и того же человека, а повышение — как двух разных людей. Имейте в виду, что проще объединить двух людей, чем разделить одного человека на двоих, поэтому по возможности выбирайте меньший порог.",
+ "machine_learning_max_recognition_distance_description": "Максимальное различие между двумя лицами, которые можно считать одним человеком (в диапазоне от 0 до 2). Понижение этого параметра может предотвратить распознавание двух людей как одного и того же человека, а повышение — как двух разных людей. Имейте в виду, что проще объединить двух людей, чем разделить одного человека на двоих, поэтому по возможности выбирайте меньший порог.",
"machine_learning_min_detection_score": "Минимальный порог распознавания",
- "machine_learning_min_detection_score_description": "Минимальный порог для обнаружения лица от 0 до 1. Более низкие значения позволяют обнаружить больше лиц, но могут привести к ложным срабатываниям.",
+ "machine_learning_min_detection_score_description": "Минимальный порог для обнаружения лица (от 0 до 1). Более низкое значение позволит находить больше лиц, но может привести к ложным срабатываниям.",
"machine_learning_min_recognized_faces": "Минимум распознанных лиц",
"machine_learning_min_recognized_faces_description": "Минимальное количество распознанных лиц для создания человека. Увеличение этого параметра делает распознавание лиц более точным, но при этом увеличивается вероятность того, что лицо не будет присвоено человеку.",
+ "machine_learning_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": "Управление функциями и настройками машинного обучения (ML)",
"machine_learning_smart_search": "Интеллектуальный поиск",
@@ -209,6 +223,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 через TLS)",
"notification_email_sent_test_email_button": "Отправить проверочное письмо и сохранить",
"notification_email_setting_description": "Настройки отправки уведомлений по электронной почте",
"notification_email_test_email": "Отправить проверочное письмо",
@@ -241,6 +257,7 @@
"oauth_storage_quota_default_description": "Квота в GiB, которая будет использоваться, если утверждение не задано.",
"oauth_timeout": "Таймаут для запросов",
"oauth_timeout_description": "Максимальное время, в течение которого ожидать ответа, в миллисекундах",
+ "ocr_job_description": "Использование машинного обучения для распознавания текста на изображениях",
"password_enable_description": "Вход по электронной почте и паролю",
"password_settings": "Настройки входа с паролем",
"password_settings_description": "Управление настройками входа по паролю",
@@ -275,7 +292,7 @@
"storage_template_hash_verification_enabled_description": "Включает проверку хеша, не отключайте её, если не уверены в последствиях",
"storage_template_migration": "Применение шаблона хранилища",
"storage_template_migration_description": "Применяет текущий {template} к ранее загруженным объектам",
- "storage_template_migration_info": "Расширения файлов всегда будут сохраняться в нижнем регистре. Изменения в шаблоне будут применяться только к новым ресурсам. Чтобы применить шаблон к ранее загруженным ресурсам, запустите {job}.",
+ "storage_template_migration_info": "Расширения файлов всегда будут сохраняться в нижнем регистре. Изменения в шаблоне будут применяться только к новым объектам. Чтобы применить шаблон к ранее загруженным объектам, запустите {job}.",
"storage_template_migration_job": "Задача по применению шаблона хранилища",
"storage_template_more_details": "Для получения дополнительной информации об этой функции обратитесь к разделам документации {label} је ознака за складиштење корисника",
"system_settings": "Подешавања система",
- "tag_cleanup_job": "Чишц́ење ознака (tags)",
- "template_email_available_tags": "Можете да користите следец́е променљиве у свом шаблону: {tags}",
- "template_email_if_empty": "Ако је шаблон празан, користиц́е се подразумевана адреса е-поште.",
+ "tag_cleanup_job": "Чишћење ознака",
+ "template_email_available_tags": "Можете да користите следеће променљиве у свом шаблону: {tags}",
+ "template_email_if_empty": "Ако је шаблон празан, користиће се подразумевана адреса е-поште.",
"template_email_invite_album": "Шаблон за позив у албум",
"template_email_preview": "Преглед",
"template_email_settings": "Шаблони е-поште",
@@ -258,95 +285,95 @@
"template_settings": "Шаблони обавештења",
"template_settings_description": "Управљајте прилагођеним шаблонима за обавештења",
"theme_custom_css_settings": "Прилагођени ЦСС",
- "theme_custom_css_settings_description": "Каскадни листови стилова (ЦСС) омогуц́авају прилагођавање дизајна Immich-a.",
+ "theme_custom_css_settings_description": "Каскадни листови стилова (ЦСС) омогућавају прилагођавање дизајна Immich-a.",
"theme_settings": "Подешавање тема",
"theme_settings_description": "Управљајте прилагођавањем Immich wеб интерфејса",
"thumbnail_generation_job": "Генеришите сличице",
- "thumbnail_generation_job_description": "Генеришите велике, мале и замуц́ене сличице за свако средство, као и сличице за сваку особу",
+ "thumbnail_generation_job_description": "Генеришите велике, мале и замућене сличице за свако средство, као и сличице за сваку особу",
"transcoding_acceleration_api": "АПИ за убрзање",
- "transcoding_acceleration_api_description": "АПИ који ц́е комуницирати са вашим уређајем да би убрзао транскодирање. Ово подешавање је 'најбољи напор': врац́а се на софтверско транскодирање у случају неуспеха. VP9 може или не мора да ради у зависности од вашег хардвера.",
+ "transcoding_acceleration_api_description": "АПИ који ће комуницирати са вашим уређајем да би убрзао транскодирање. Ово подешавање је 'најбољи напор': враћа се на софтверско транскодирање у случају неуспеха. VP9 може или не мора да ради у зависности од вашег хардвера.",
"transcoding_acceleration_nvenc": "НВЕНЦ (захтева НВИДИА ГПУ)",
"transcoding_acceleration_qsv": "Qуицк Сyнц (захтева Интел CPU 7. генерације или новији)",
"transcoding_acceleration_rkmpp": "РКМПП (само на Роцкцхип СОЦ-овима)",
"transcoding_acceleration_vaapi": "Видео акцелерација АПИ (ВААПИ)",
- "transcoding_accepted_audio_codecs": "Прихвац́ени аудио кодеци",
+ "transcoding_accepted_audio_codecs": "Прихваћени аудио кодеци",
"transcoding_accepted_audio_codecs_description": "Изаберите које аудио кодеке не треба транскодирати. Користи се само за одређене политике транскодирања.",
- "transcoding_accepted_containers": "Прихвац́ени контејнери",
+ "transcoding_accepted_containers": "Прихваћени контејнери",
"transcoding_accepted_containers_description": "Изаберите који формати контејнера не морају да се ремуксују у МП4. Користи се само за одређене услове транскодирања.",
- "transcoding_accepted_video_codecs": "Прихвац́ени видео кодеци",
+ "transcoding_accepted_video_codecs": "Прихваћени видео кодеци",
"transcoding_accepted_video_codecs_description": "Изаберите које видео кодеке није потребно транскодирати. Користи се само за одређене политике транскодирања.",
- "transcoding_advanced_options_description": "Опције које вец́ина корисника не би требало да мењају",
+ "transcoding_advanced_options_description": "Опције које већина корисника не би требало да мењају",
"transcoding_audio_codec": "Аудио кодек",
"transcoding_audio_codec_description": "Опус је опција највишег квалитета, али има лошију компатибилност са старим уређајима или софтвером.",
- "transcoding_bitrate_description": "Видео снимци вец́и од максималне брзине преноса или нису у прихвац́еном формату",
+ "transcoding_bitrate_description": "Видео снимци већи од максималне брзине преноса или нису у прихваћеном формату",
"transcoding_codecs_learn_more": "Да бисте сазнали више о терминологији која се овде користи, погледајте ФФмпег документацију за