Compare commits

..

130 Commits

Author SHA1 Message Date
midzelis
488329d862 refactor(web): extract timeline selection logic into SelectableSegment and SelectableDay components
- Move asset selection, range selection, and keyboard interaction logic
  to SelectableSegment
  - Extract day group selection logic to SelectableDay component
  - Simplify Timeline component by removing selection-related state and
  handlers
  - Fix scroll compensation handling with dedicated while loop
  - Remove unused keyboard handlers from Scrubber component
2025-10-29 02:01:33 +00:00
midzelis
9656bc77a8 refactor(web): Extract asset grid layout component from TimelineDateGroup and split into AssetLayout and Month components 2025-10-29 01:14:37 +00:00
Viktor Mykhailiv
12bb39a111 feat(mobile): view similar photos (#22148)
* feat: view similar photos on mobile

# Conflicts:
#	mobile/lib/models/search/search_filter.model.dart
#	mobile/lib/utils/action_button.utils.dart

* fix: bottom sheet is unusable after navigating to search

* feat(mobile): open DriftSearchPage as root route

* reset search state on tab navigation

* fix tests

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-10-28 16:17:26 -05:00
Alex
9098717c55 feat: getAssetOcr endpoint (#23331)
* feat: getAssetOcr endpoint

* pr feedback
2025-10-28 20:57:03 +00:00
Min Idzelis
8d25f81bec fix: regression - search results not visible until scroll (#23321) 2025-10-28 14:15:24 -05:00
Jason Rasmussen
52596255c8 feat: toasts (#23298) 2025-10-28 14:09:11 -05:00
Alex
106effca2e feat: check server feature to render OCR search option (#23325) 2025-10-28 13:54:41 -05:00
shenlong
9676da27c9 fix: clear temp cache on iOS before uploads (#23326)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-10-28 13:53:48 -05:00
Brandon Wees
3edcb180eb fix: flaky mobile sync api tests (#23324) 2025-10-28 12:16:36 -05:00
renovate[bot]
9f0b5790af chore(deps): update dependency @types/node to ^22.18.12 (#23305)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 18:16:18 +01:00
Brandon Wees
e0c2cdddd4 feat: show "appears in" albums on asset viewer bottom sheet (#21925)
* feat: show "appears in" albums on asset viewer bottom sheet

fix: multiple RemoteAlbumPages in navigation stack

this also allows us to not have to set the current album before navigating to RemoteAlbumPage

chore: clarification comments

handle nested album pages

fix: hide "appears in" when an asset is not in any albums

fix: way more bottom padding

for some reason we can't query the safe area here :/

* fix: bottom sheet now is usable when navigating to another asset viewer

* fix: rebase conflict

* fix: restore ancestors album to currentRemoteAlbumProvider when popping

* fix: view flashing when dismissing a album viewer

* chore: code review changes

* fix: styling and padding

* chore: rework currentRemoteAlbumProvider to be scoped by the Remote album page

* fix: override remote album provider on required pages

* chore: convert query to all SQL calls instead of matching in Dart

* fix: album query

* fix: unawaited future

* Update deep_link.service.dart

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-10-28 16:52:01 +00:00
Brandon Wees
74f2c10a5a fix: make hitbox on app bar dialog bigger (#23316) 2025-10-28 09:19:40 -05:00
Thomas Stachl
fb97d9f4d9 fix(web): disable picture-in-picture on video viewer (#23318) 2025-10-28 09:15:35 -05:00
renovate[bot]
f72bcc8a8f chore(deps): update node.js to v22.21.0 (#23314)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 12:36:19 +00:00
renovate[bot]
46a4dce16b chore(deps): update grafana/grafana docker tag to v12.2.1 (#23312)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 12:32:37 +00:00
renovate[bot]
62ed5fe27f chore(deps): update base-image to v202510281104 (major) (#23315)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 12:30:42 +00:00
Zack Pollard
8e3f6cdbbf fix: ml container tags incorrect for different hardware builds (#23313)
Co-authored-by: bo0tzz <git@bo0tzz.me>
2025-10-28 12:30:12 +00:00
Min Idzelis
d51b8c1cdf fix: focus-trap on safari (#23246) 2025-10-27 21:29:30 -05:00
Alex
698531d6e0 feat: improve UI for resolving duplication detection (#23145)
* feat: improve UI for resolving duplication detection

* pr feedback
2025-10-27 17:32:52 -04:00
Thomas Stachl
44149d187f feat(server): enhance metadata reading for video files (#23258) 2025-10-27 14:46:54 -05:00
shenlong
9e3b4ef3db chore(dep): bump flutter to 3.35.7 (#23287)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-10-27 10:24:41 -05:00
shenlong
ac0d646401 fix: mobile unawaited_futures lint (#21661)
* chore: add unawaited_futures lint as warning

# Conflicts:
#	mobile/analysis_options.yaml

* remove unused dcm lints

They will be added back later on a case by case basis

* fix warning

# Conflicts:
#	mobile/lib/presentation/pages/drift_remote_album.page.dart

* auto gen file

* review changes

* conflict resolution

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-10-27 09:32:52 -05:00
shenlong
664a8fa499 fix: fetch original name before upload (#21877)
* fix: fetch origin name before upload

* fix: Show correct photo name in buttom sheet and backup details page (#22978)

* add tests

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: FawenYo <40032648+FawenYo@users.noreply.github.com>
2025-10-27 09:32:24 -05:00
shenlong
3194538817 fix: handle null bucketId or name in android local sync (#23224)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-10-27 09:22:51 -05:00
Zac Warham
b0d427f8f9 chore: show leading zero week in storage template (#23275)
* Use date which shows week with a zero

* Update sample date in SupportedDatetimePanel

* Update web/src/lib/components/admin-settings/SupportedDatetimePanel.svelte

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-10-27 09:21:37 -05:00
Kang
02b29046b3 feat: ocr (#18836)
* feat: add OCR functionality and related configurations

* chore: update labeler configuration for machine learning files

* feat(i18n): enhance OCR model descriptions and add orientation classification and unwarping features

* chore: update Dockerfile to include ccache for improved build performance

* feat(ocr): enhance OCR model configuration with orientation classification and unwarping options, update PaddleOCR integration, and improve response structure

* refactor(ocr): remove OCR_CLEANUP job from enum and type definitions

* refactor(ocr): remove obsolete OCR entity and migration files, and update asset job status and schema to accommodate new OCR table structure

* refactor(ocr): update OCR schema and response structure to use individual coordinates instead of bounding box, and adjust related service and repository files

* feat: enhance OCR configuration and functionality

- Updated OCR settings to include minimum detection box score, minimum detection score, and minimum recognition score.
- Refactored PaddleOCRecognizer to utilize new scoring parameters.
- Introduced new database tables for asset OCR data and search functionality.
- Modified related services and repositories to support the new OCR features.
- Updated translations for improved clarity in settings UI.

* sql changes

* use rapidocr

* change dto

* update web

* update lock

* update api

* store positions as normalized floats

* match column order in db

* update admin ui settings descriptions

fix max resolution key

set min threshold to 0.1

fix bind

* apply config correctly, adjust defaults

* unnecessary model type

* unnecessary sources

* fix(ocr): switch RapidOCR lang type from LangDet to LangRec

* fix(ocr): expose lang_type (LangRec.CH) and font_path on OcrOptions for RapidOCR

* fix(ocr): make OCR text search case- and accent-insensitive using ILIKE + unaccent

* fix(ocr): add OCR search fields

* fix: Add OCR database migration and update ML prediction logic.

* trigrams are already case insensitive

* add tests

* format

* update migrations

* wrong uuid function

* linting

* maybe fix medium tests

* formatting

* fix weblate check

* openapi

* sql

* minor fixes

* maybe fix medium tests part 2

* passing medium tests

* format web

* readd sql

* format dart

* disabled in e2e

* chore: translation ordering

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-10-27 14:09:55 +00:00
Min Idzelis
c666dc6c67 fix: back/forward navigation won't reset scroll in timeline (#22838)
* fix: back/forward navigation won't reset scroll in timeline

Fixes a bug where navigating to/from the asser-viewer from timeline causes the scroll position to be reset.

* Fix back after assetviewer next/prev navigation

* Bug fix from review

* review comments
2025-10-27 08:56:03 -05:00
Jorge Montejo
382481735a feat: logout sessions on password change (#23188)
* log out ohter sessions on password change

* translations

* update and add tests

* rename event to UserLogoutOtherSessions

* fix typo

* requested changes

* fix tests

* fix medium:test

* use ValidateBoolean

* fix format

* dont delete current session id

* Update server/src/dtos/auth.dto.ts

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>

* rename event and invalidateOtherSessions

* chore: cleanup

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-10-27 13:16:10 +00:00
Min Idzelis
6bb1a9e083 fix: incomplete dynamic imports (#23217) 2025-10-27 08:45:30 -04:00
Mert
3f03a88767 feat(web): wasm justified layout, sync edition (#23194)
* the invisible wasm

use npm version

* deterministic tests

* add todo

* linting

* bump library, add helpers

* use target height for unfilled rows

* update tests
2025-10-25 00:06:05 -05:00
Jason Rasmussen
328380cfda refactor: websocket repository (#23228) 2025-10-24 16:26:27 -04:00
Robin Jacobs
65f29afb0f feat(cli): add --delete-duplicates option (#20035)
* Add --delete-duplicates option to delete local assets that already exist on the server, fixes #12181

* Update docs

* Fix `--delete-duplicates` implying `--delete`

* fix the test, break the english

* format

* also ran the formatter on the e2e folder :)

* early return, fewer allocations

* add back log

---------

Co-authored-by: Robin Jacobs <robin.jacobs@beeline.com>
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-10-24 19:31:54 +00:00
andre-antunesdesa
f721a62776 feat(web): load original videos (#20041)
* added user preference for always loading original video

added ability to toggle between transcoded/original in the video viewer

add fix to static check error

* address PR comments

* Update asset-viewer-nav-bar.svelte

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>

---------

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2025-10-24 19:03:51 +00:00
Mert
c73e3dacea feat(mobile): high precision seeking (#22346)
* millisecond precision video playback

* wrap in unawaited

* update commit
2025-10-24 18:59:30 +00:00
Dag Stuan
78fb815cdb feat(web): add search filter for camera lens model. (#21792) 2025-10-24 14:41:34 -04:00
Jason Rasmussen
d9cddeb0f1 chore: use reverse proxy during local preview (#23184) 2025-10-24 14:00:51 -04:00
bo0tzz
c4ff2ea6d5 fix: actually use tf output (#23221) 2025-10-24 17:07:05 +02:00
renovate[bot]
b91b855473 chore(deps): update github-actions (major) (#22919)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 16:21:41 +02:00
bo0tzz
7773d6d44f chore: update multi-runner-build-workflow (#23183) 2025-10-24 14:08:04 +00:00
idubnori
2129f889f5 feat: (mobile) open asset viewer from album activity page (#23182)
* feat(mobile): open assetviewer via album activities page

* adjust ui behavior: keep current asset & disable initial forcus

* fix: Run 'make build' and 'make pigeon'
2025-10-24 09:02:56 -05:00
shenlong
221e0ef02f fix: android skip posting hash response after detached from engine (#23192)
fix: native cancellations for hashing

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-10-24 08:56:49 -05:00
Basharat Ahmad Khan
0a6b2ad26e feat(web): reactively update shared link expiration (#22274)
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-10-24 13:18:49 +02:00
renovate[bot]
719bf763e4 chore(deps): update prom/prometheus docker digest to 23031bf (#23111)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 13:16:11 +02:00
Lauritz Tieste
34bad1ce71 feat: improvements of thumbnail animations (#20300)
* feat: improve thumbnail border radius animation

feat: remove thin border between image and image selection container

feat: enhance selection icon in thumbnail image

feat: add animated selection indicator for multiselect in thumbnail image

feat: remove unnecessary widgets and variables

style: format code

fix: errors with formatting checks

* chore: port to new timeline

* chore: revert mobile/lib/widgets/asset_grid/thumbnail_image.dart

---------

Co-authored-by: bwees <brandonwees@gmail.com>
2025-10-23 22:36:49 -05:00
Szymon Łągiewka
6164b027e2 chore(dep): bump ioredis to 5.8.2 (#23130) 2025-10-23 22:29:18 -05:00
Alex
d9a13dc8ac chore: gha ios release | take 4 (#23202) 2025-10-23 16:06:55 -05:00
Alex
722dbfa11f chore: gha ios release | take 3 (#23200) 2025-10-23 15:48:44 -05:00
Alex
f8afef0f9d chore: gha ios release | take 3 (#23199)
* chore: gha ios release | take 3

* chore: gha ios release | take 3
2025-10-23 20:35:43 +00:00
bo0tzz
3c8df55986 fix: add bundle platform arm64-darwin-23 (#23197) 2025-10-23 20:19:44 +00:00
Alex
47436ad0ce feat: GHA for iOS release flow (#23196) 2025-10-23 21:57:19 +02:00
Zack Pollard
9b58d5663a feat: support database dumps for pg18 (#23186) 2025-10-23 10:14:01 -04:00
Matthew Momjian
b6cebb3ece feat(server): pin to v2 (#23170)
* pin to v2

* remove release
2025-10-22 16:06:00 -04:00
Jason Rasmussen
cb7e68a287 refactor: user edit modal (#23169) 2025-10-22 15:21:16 -04:00
Jason Rasmussen
e196cac6f4 refactor: asset description modal (#23168) 2025-10-22 13:08:59 -05:00
Jason Rasmussen
351c0d2a4d refactor: user delete confirm modal (#23166) 2025-10-22 13:49:06 -04:00
Alex
f4969694cd fix: isolate freeze app on older ios device (#22509)
* fix: isolate freeze app on older ios device

* always use at-least 5 isolates

* fix: bad merge

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-10-22 12:43:03 -05:00
Daniel Dietzler
b334288529 fix: session list text color (#23165) 2025-10-22 17:33:54 +00:00
Jason Rasmussen
834e52fda6 refactor: user delete (#23163) 2025-10-22 12:54:29 -04:00
Jason Rasmussen
8c27ba3e52 refactor: job events (#23161) 2025-10-22 12:16:55 -04:00
aviv926
cd8d66f5dd fix(web): show upload speed (#23138)
* remove unnecessary else

* Better fix

* fix: update text color

* chore: stylings

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-10-22 15:40:10 +00:00
Nykri
446f738c7d chore: set default concurrency number to #CPU cores - 1 (#22888)
Set default concurrency number to #CPU cores - 1

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
2025-10-22 10:16:07 -05:00
shenlong
f19ad9726f chore(dep): minor mobile dependency updates (#23126)
* chore(dep): minor dependency updates

* build_runner changes

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-10-22 10:14:44 -05:00
Brandon Wees
65cac118ca fix: allow editing all images (#23144)
* fix: allow editing local asset

* chore: remove isOwner check
2025-10-22 10:12:32 -05:00
Brandon Wees
efac8c6667 fix: semver parser grab everything before hyphen (#23140)
used for versions like 2.1.0-DEBUG
2025-10-22 10:06:40 -05:00
Jason Rasmussen
a70843e2b4 refactor: users.total metric (#23158)
* refactor: users.total metric

* fix: broken test
2025-10-22 10:18:17 -04:00
bo0tzz
0b941d78c4 fix: set TG_NON_INTERACTIVE (#23153) 2025-10-22 13:22:45 +01:00
bo0tzz
fc5fc58759 fix: bump tofu (#23152) 2025-10-22 11:13:03 +00:00
bo0tzz
9bb2fc238a fix: don't use app for final close-duplicates request (#23143) 2025-10-22 11:00:31 +00:00
Alex
76f5036026 chore: improve onboarding, app download links styling (#23134) 2025-10-21 21:10:12 -05:00
aviv926
032de9ff2f feat: view the user's app version on the user page (#21345)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-10-22 00:36:18 +02:00
shenlong
c3a533ab40 chore(dep): bump flutter to 3.35.6 (#23120)
* chore(dep): bump flutter to 3.35.6

* chore(dep): bump flutter to 3.35.6 (#23121)

chore(dep): remove unused pub deps

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-10-21 15:46:48 +00:00
Rui Gonçalves
dbd6dcb786 fix(server): use GPSLongitudeRef and GPSLatitudeRef EXIF fields (#21445)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-10-21 16:12:22 +02:00
renovate[bot]
9dffbaea98 chore(deps): update dependency @types/node to ^22.18.10 (#23112)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-21 11:31:22 +00:00
renovate[bot]
70bda45551 chore(deps): update dependency vite to v7.1.11 [security] (#23108)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-21 10:28:20 +00:00
renovate[bot]
d9452e485c fix(deps): update typescript-projects (#23119)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-10-21 10:22:53 +00:00
idubnori
85e9ced68d chore: remove unused code file (#23116)
chore: remove unused code
2025-10-21 09:58:02 +05:30
Min Idzelis
04e2e42c88 refactor(web): improve date labels in scrubber (#23046)
refactor(web): improve timeline scrubber labeling logic

Refactor the segment calculation in the timeline scrubber to improve code clarity and fix label positioning. Process months in reverse order for more intuitive label selection, use descriptive variable names, and remove unnecessary index tracking.
2025-10-20 22:13:49 -05:00
Mert
bcfdb2f9df fix(ml): pin cudnn version (#23110)
pin cudnn version
2025-10-20 18:18:09 -05:00
Brandon Wees
23a34bee6f feat: improved update messaging on app bar server info (#22938)
* feat: improved update messaging on app bar server info

* chore: message improvements

* chore: failed to fetch version error message

* feat: open latest release when tapping "Update" on server out of date message

* fix: text alignment states

* chore: code review updates

* Apply suggestion from @alextran1502

Co-authored-by: Alex <alex.tran1502@gmail.com>

* Apply suggestion from @alextran1502

Co-authored-by: Alex <alex.tran1502@gmail.com>

* chore: lots of rework of the version checking code to be cleaner

Added a semver utility class to simplify comparisons, broke the update notification logic into own widget, reworked view construction and colors.

* fix: show warnign without having to tap on app bar icon

* chore: colors

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-10-20 21:13:31 +00:00
bo0tzz
6f31f27218 fix: bump use-mise version (#23098) 2025-10-20 21:26:56 +02:00
Matthew Momjian
b102f94e97 fix(mobile): notate experimental network features, cleanup mis assigned translation tags (#23021)
* cleanup i18n, return experimental notation

* add renamed file

* rename 2

* caps

* Update mobile/lib/pages/common/headers_settings.page.dart

Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>

* IntlKeys

* fix: import

---------

Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-10-20 19:20:49 +00:00
idubnori
becb56e1b1 feat(mobile): Change the UI of asset activity list to bottom sheet (#23075)
* init of activities bottom sheet

* reverse list order, padding bottom...

* chore: remove scrolling

* chore: clean up

* chore

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-10-20 13:35:52 -05:00
bo0tzz
05f174a180 feat: move previews to immich.build (#23089)
dep https://github.com/immich-app/devtools/pull/1064
2025-10-20 12:39:15 -05:00
shenlong
476bb1cacd chore: skip dialog for single merged asset (#22958)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-10-20 12:38:51 -05:00
Brandon Wees
24fe62ff9d chore: rework backup success notification descriptions (#23024)
* chore: rework backup success notification descriptions

* chore: use static text until for completion description
2025-10-20 09:56:48 -05:00
bo0tzz
a390e44402 fix: don't use app token to push to ghcr (#23099)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-20 15:57:52 +02:00
bo0tzz
08f81eb3c6 feat: use explicit app token for all workflows (#22949) 2025-10-20 14:38:01 +02:00
bo0tzz
13d33f834f chore: use mise instead of terragrunt-action (#22905) 2025-10-20 12:32:52 +01:00
Min Idzelis
58f9659cf6 fix: blank page on assetviewer to timeline (regression) (#23073) 2025-10-19 11:01:42 -05:00
bo0tzz
e14d5fb277 fix: skip ML availability check if ML is disabled (#23053) 2025-10-18 20:32:30 -05:00
Alex
06151ad173 chore: use correct tailwindcss class (#23054) 2025-10-18 20:32:11 -05:00
Arno
0700758621 fix: remove unnecessary api call (#23050)
Co-authored-by: Arno <arno@crewbrain.com>
2025-10-18 19:21:37 +02:00
Yaros
f26db8053b fix(web): two scrollbars in folder view (#23045) 2025-10-18 10:24:49 +00:00
Matthew Momjian
4836047e50 fix(server): notify of reindex taking a while (#23033)
note
2025-10-17 20:15:45 -04:00
Adrian Jost
0979528a05 feat: show location & date on duplicate asset comparison overview (#22632) 2025-10-17 21:04:45 +00:00
Jason Rasmussen
24a6757630 refactor: user edit modal (#23025) 2025-10-17 14:38:57 -04:00
Jason Rasmussen
67f093f75b feat(web): create user as admin (#23026) 2025-10-17 14:26:07 -04:00
Min Idzelis
3174a27902 refactor(web): Extract VirtualScrollManager base class from TimelineManager (#23017)
Extract common virtual scrolling functionality from TimelineManager into
a new abstract VirtualScrollManager base class. This refactoring improves
code organization and enables reuse of virtual scrolling logic.

Changes:
- Create new VirtualScrollManager abstract base class with common virtual
  scrolling state and methods
- Refactor TimelineManager to extend VirtualScrollManager
- Rename 'assetsHeight' to 'bodySectionHeight' for semantic clarity
- Convert methods to use override keyword where appropriate
- Enable noImplicitOverride in tsconfig for better type safety
- Fix ApiError and AbortError class definitions with override keywords
2025-10-17 17:37:54 +00:00
Nick
e7d6a066f8 docs: update backup-and-restore.md (#21065)
* Update backup-and-restore.md

Added, and consolidated messaging across the md file in relation to updating the username when running scripts.

* chore: formatting

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-10-17 11:38:37 -04:00
renovate[bot]
73da80394e chore(deps): update github-actions (#22914)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-17 10:48:36 -04:00
renovate[bot]
471cc74ff2 chore(deps): update dependency happy-dom to v20.0.2 [security] (#22964)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-17 10:24:50 -04:00
Lee Peuker
ca745d00ee fix(docs): cli upload json format example (#22858)
Fix cli upload json format example
2025-10-17 14:08:42 +00:00
Jason Rasmussen
3ea8d140a2 feat: move community projects and guides to immich-aweseome (#23016) 2025-10-17 10:00:28 -04:00
Jason Rasmussen
8b8012f89d docs: clarify well-known usage (#23018) 2025-10-17 10:00:07 -04:00
Joren Guillaume
4b7f851428 docs: Expand on OpenVINO WSL HW accel (#21054)
* add group/render section to openvino-wsl hwaccel

* Fix indentation for YAML

* Remove obsolete enter

* chore: formatting

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-10-17 09:05:07 -04:00
Nicholas
cc1cd299f3 feat(web): Download links and Obtainium link generator on Utilities page and onboarding (#20589) 2025-10-17 13:22:00 +02:00
Paul Larsen
3163afd24a fix(web): render context overlays over the scrollbar (#23007) 2025-10-17 12:35:19 +02:00
Clement Martin
95889a69c9 feat(server): Option to configure SMTPS transport (#22833)
* feat(server): Option to configure SMTPS transport

This commit adds a boolean option in the SMTP transport configuration to
enable the so-called "secure" mode. What it does is use SMTP over TLS
instead of relying on the more common STARTTLS option over plain SMTP.

* Add missing field in dto

* Add missing field

* Use a switch instead of text field

* Add field in spec

* chore: regen open-api

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-10-17 10:21:27 +00:00
Brandon Wees
81554e5ad1 chore: change usage of pnpx to pnpm dlx (#23009) 2025-10-17 12:20:50 +02:00
Paweł Wojtaszko
505e16c37c fix(server): only asset owner should see favorite status (#20654)
* fix: Any asset update disables isFavorite action in GUI. Only owner of asset in album should see favorited image.

* Fix unit tests

* Fix formatting

* better query, add medium test

* update sql

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-10-16 21:52:36 +00:00
Jason Rasmussen
24bfdf3263 fix(web): immich-form-label usage (#23006) 2025-10-16 17:49:12 -04:00
Jorge Montejo
a23dfff6cf fix: remove assets from shared link (#22935)
* fix remove assets from shared link

* rename var

* test: should remove individually shared asset

* test: should share individually assets

* fix failing tests
2025-10-16 15:03:41 -04:00
Min Idzelis
2919ee4c65 fix: navigate to time action (#20928)
* fix: navigate to time action

* change-date -> DateSelectionModal; use luxon; use handle* for callback fn name

* refactor change-date dialogs

* Review comments

* chore: clean up

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-10-16 17:44:09 +00:00
Alex
d0eae97037 fix: unit overlapses value in server stats card (#22994) 2025-10-16 17:14:39 +00:00
Jorge Montejo
9d639607c7 fix: tag clean up query and add tests (#22633)
* fix delete empty tags query

* rewrite as a single statement

* create tag service medium test

* single tag exists, connected to one asset, and is not deleted

* do not delete parent tag if children have an asset

* hierarchical tag tests

* fix query to match 3 test

* remove transaction and format:fix

* remove transaction and format:fix

* simplify query, handle nested empty tag

* unused helper

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-10-15 22:51:57 +00:00
Matthew Momjian
74a9be4a0e fix(server): bump valkey to 8 (#22911)
* unpin valkey

* pin
2025-10-15 18:48:36 -04:00
0xflotus
26e877cba7 docs: fix small error (#22890)
* docs: fix small error

* docs: fix small error

* docs: fix small error

* docs: fix small error

* docs: fix small error

* docs: fix small error

* docs: fix small error
2025-10-15 21:30:33 +00:00
Alex
7b7d91a5e1 fix: get all assets for the Recents album on iOS (#22956) 2025-10-15 23:06:52 +05:30
Min Idzelis
b3055d2e94 refactor: TimelineManager is owned by Timeline.svelte (#22839)
feat: TimelineManager is owned by Timeline.svelte
2025-10-15 17:27:44 +00:00
Min Idzelis
f1e03d0022 fix(web): improve scrubber behavior on scroll-limited timelines (#22917)
Improves scroll indicator positioning when scrubbing through timelines with limited scrollable content (e.g., small albums). When a timeline's scrollable height is less than 50% of the viewport height, the scroll position is now properly distributed across the entire scrubber height, making the indicator more responsive and accurate.

Changes:
- Add `limitedScroll` state to detect scroll-constrained timelines (threshold: 50%)
- Introduce `ViewportTopMonth` type to handle lead-in/lead-out sections
- Calculate `totalViewerHeight` including top/bottom sections for accurate positioning
- Refactor scrubber to treat lead-in and lead-out as distinct scroll segments
- Update scroll position calculations to use relative percentages on constrained timelines
2025-10-15 13:13:05 -04:00
Saschl
9b5855f848 feat: add video auto play setting (#20416)
* feat: add auto play setting to mobile

* feat: add auto play video setting to web

* address review comments

* fix setting id

---------

Co-authored-by: Saschl <noreply@saschl.com>
2025-10-15 11:24:47 -04:00
Alex
7d0228a159 chore: post release tasks (#22936) 2025-10-15 09:31:49 -05:00
Mees Frensel
c18df7ae25 fix(web): clarify some transcoding settings (#22797) 2025-10-15 09:17:07 -04:00
Mees Frensel
72f5ca4420 fix(web): prevent photo-only memories showing mute button (#22802) 2025-10-15 12:15:29 +02:00
Chaoscontrol
02beb85642 feat(album): show per-user contributions in shared albums (#21740)
* feat: show per-user contribution counts on shared albums

Add API support and UI display for per-user asset contribution
counts on shared albums:
- server: add ContributorCountResponseDto and repository method to
  aggregate counts per user (excluding deleted assets), expose via
  album response only when shared and counts > 0
- web: display contributor counts in Album Users modal next to each
  member’s role

This helps users understand participation levels in shared albums.

* Add ContributorCountResponseDto and expose contributorCounts
on AlbumResponseDto in OpenAPI spec. Regenerate TypeScript SDK
and mobile OpenAPI clients to include new types.

No breaking changes; fields are additive.

* fix: shrink age view to fit and not overflow (#22405)

Co-authored-by: Alex <alex.tran1502@gmail.com>

* chore: post release tasks (#22587)

* chore: clean auth-user entity on reset (#22583)

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>

* fix: mitigate database lock scenario when running full sync in splash screen page (#22608)

* fix: improve sync backup error indicator   (#22527)

* fix: improve sync indicator error

* prefer backup disabled icon before error

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>

* fix: bottom navigation bar overlay sheet info (#22610)

* fix: respect storage indicator setting (#22596)

* fix: respect storage indicator size setting

* remove black bar on the bottom of the setting scaffold page

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>

* fix: do not run multiple engines on cold startup (#22518)

fix: do not run multiple engines on app startup

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>

* fix: album selector in favorite view (#22612)

* chore(web): update translations (#22486)

Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/az/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/el/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/kn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ml/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Arthur Bols <arthur@bols.dev>
Co-authored-by: Ben Kim <benkim1129@gmail.com>
Co-authored-by: César Gómez <cegomez@gmail.com>
Co-authored-by: DR <weblate-kavita.snowflake668@slmail.me>
Co-authored-by: DevServs <bonov@mail.ru>
Co-authored-by: Emil Friis Osmann <Emilfriisosmann@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Godwin T <godwintgn@protonmail.com>
Co-authored-by: Hristo T <hristotarnev@gmail.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: KecskeTech <teonyitas@gmail.com>
Co-authored-by: Kiril Panayotov <eccyboo@protonmail.com>
Co-authored-by: Liviu Roman <contact@liviuroman.com>
Co-authored-by: Lorenzo <artale.lorenzo@outlook.it>
Co-authored-by: Marcelo Popper Costa <marcelo_popper@hotmail.com>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Miryusif Rahimov <miryusifrahimov@gmail.com>
Co-authored-by: Msaood <msaood@msaood.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Pedro Vendeira <vendeira.pedro@gmail.com>
Co-authored-by: PontusÖsterlindh <pontus@osterlindh.com>
Co-authored-by: Rahees <ahdrahees.dev@gmail.com>
Co-authored-by: Sandeep R <sandeep1891995@gmail.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: TV Box <realceday.tvbox@gmail.com>
Co-authored-by: Tino Altmann <usinggrant@hotmail.de>
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org>
Co-authored-by: Vegard Fladby <vegard@fladby.org>
Co-authored-by: anton garcias <isaga.percompartir@gmail.com>
Co-authored-by: chamdim <chamdim@protonmail.com>
Co-authored-by: longlarry <weblate.gm@tuta.io>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: swever <swever@users.noreply.hosted.weblate.org>
Co-authored-by: தமிழ்நேரம் <tamilneram247@gmail.com>
Co-authored-by: 안세훈 <on9686@gmail.com>

* chore: version v2.0.1

* fix(docs): link to immich docs does not lead correctly to docs (#22687)

* fix(server): fix chunking Postgres query parameters (#22684)

* feat(server): improve checkAlbumAccess query performance (#22467)

* Fix slow SQL query in checkAlbumAccess caused by the array overlap operator &&

* Update access.repository.sql

* Rewrite the query to pass assetIds once as a single array parameter

* chore: mark VSCode tasks as background tasks (#22631)

VSCode expect tasks that aren't marked as background tasks to finish eventually. That's not how a dev-server is supposed to work, we expect it to run for basically infinite time.

By marking those tasks as background tasks, VSCode stops showing the infinite loading spinner on those processes.

* fix(ml): Resolve IPv6 startup crash and healthcheck failure (#22387)

* fix(ml): Resolve IPv6 startup crash and healthcheck failure

Fixes #13782

* fix(ml): updated the fix to use the std lib

* Apply code formatting to __main__.py

* fix(server): override reserved color metadata for video thumbnails (#22348)

override reserved metadata

* fix(mobile): trash description cut off (#22662)

* fix(mobile): empty album description does not save (#22649)

* fix(mobile): video player using ref after disposal (#21843)

check if disposed

* docs: add job order diagram (#22673)

* docs: add job order diagram

* wording

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>

* fix: missing responsive calculation in UserPageLayout (#22455)

* fix: use full-size image for non-web-compatible panoramas (#20359)

* fix(web): use full-size image for non-web-compatible panoramas

* always generate full-size image for panoramas

* add unit test

* fix formatting

---------

Co-authored-by: gergo= <gergo@pitty.hu>

* chore: update cli docs to pnpm (#22702)

update cli docs to pnpm

* chore(web): upgrade ESLint and plugins (#22495)

* chore(web): upgrade ESLint and plugins, simplify linting configuration

- Update eslint from ^9.18.0 to ^9.36.0
- Update eslint plugins:
  - eslint-plugin-svelte: ^3.9.0 → ^3.12.4
  - eslint-plugin-unicorn: ^60.0.0 → ^61.0.2
  - svelte-eslint-parser: ^1.2.0 → ^1.3.3
  - typescript-eslint: ^8.28.0 → ^8.45.0
- Remove eslint-p dependency in favor of native eslint concurrency
- Add unicorn/no-array-sort rule exception
- Update linting scripts to use eslint's native --concurrency flag
- Update Makefile and mise.toml to reflect simplified lint commands
- Update GitHub Actions workflow to use standard pnpm lint command

* pnpm dedupe

---------

Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>

* fix(web): do not notify on patch releases (#22591)

* chore: post release tasks (#22616)

* fix: hide view in timeline button on local timeline (#22713)

* chore(server): support vectorchord 0.5.x (#21602)

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

* fix: Fix issue fail to download iOS live photos (#22708)

Co-authored-by: bwees <brandonwees@gmail.com>

* fix(docs): Remove immich_remove_offline_files as no longer functional (#21774)

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Brandon Wees <brandonwees@gmail.com>

* fix(mobile): closing editor goes back to main page (#22647)

Co-authored-by: bwees <brandonwees@gmail.com>

* docs: update TrueNAS migration instructions (#22463)

Co-authored-by: bo0tzz <git@bo0tzz.me>
Co-authored-by: Nicholas Flamy <30300649+NicholasFlamy@users.noreply.github.com>

* docs: update Synology install guide (#21996)

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>

* fix: improve the selected sidebar item text color in dark mode (#22640)

* chore(deps): update redis:6.2-alpine docker digest to 2185e74 (#22718)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore: update devcontainers for trixie, devenv changes (#22194)

* fix(deps): update dependency device_info_plus to v12 (#22724)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency flutter to v3.35.5 (#22720)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update github-actions (#22721)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix: --no-git-checks on pnpm publish (#22715)

* fix: --no-git-checks on sdk publish

* fix: --no-git-checks on cli publish

* refactor(web): Clarify property names in Timeline and Scrubber (#22265)

refactor(web): Clarify property names in Timeline and Scrubber

  Renamed properties across Timeline/Scrubber components for clarity:
  - scrubOverallPercent → timelineScrollPercent
  - scrubberMonthPercent → viewportTopMonthScrollPercent
  - scrubberMonth → viewportTopMonth
  - leadout → isInLeadOutSection

  Additional changes:
  - Updated ScrubberListener signature to accept object parameter
  - Added detailed JSDoc comments for all Scrubber props
  - Fixed callback invocations to use new object syntax
  - Aligned Timeline's local state variables with Scrubber prop names

* fix: promote to foreground service before starting engine (#22517)

fix: show notification from native

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>

* refactor(web): extract timeline keyboard actions into separate component (#22266)

refactor(web): extract timeline keyboard actions into separate component

Extracts keyboard shortcuts and related functionality from Timeline component into a dedicated TimelineKeyboardActions component for better separation of concerns and maintainability.

* feat: make skeleton title optional (#22396)

feat: skeleton title is optional

feat: skeleton title optional

* refactor(web): extract asset viewer logic from Timeline into TimelineAssetViewer component (#22268)

refactor(web): extract asset viewer logic from Timeline into TimelineAssetViewer component

- Extracted asset viewer navigation and action handling logic from Timeline.svelte into a dedicated TimelineAssetViewer component
- Reduces Timeline.svelte complexity by ~150 lines and improves separation of concerns
- No functional changes - purely a refactoring to improve code organization

## Changes
- Created new TimelineAssetViewer.svelte component containing all asset viewer-related logic
- Moved handlePrevious, handleNext, handleRandom, handleClose, handlePreAction, and handleAction methods
- Timeline.svelte now only passes required props to the new component
- Maintained all existing functionality including navigation, asset actions, and stack management

* chore: track full actions/cache version in comment (#22359)

* fix(ml): ipv6 check (#22735)

* chore(deps): cache pnpm dependencies in prod build (#22555)

* cache pnpm dependencies

use different ids to be safe

unnecessary lines

* use buildcache folder

* chore: use isar immich fork (#22738)

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>

* fix: bottom sheet blank with local assets that have remote counterparts (#22743)

* chore(deps): update dependency @types/node to ^22.18.8 (#22719)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency nodemailer to v7.0.7 [security] (#22740)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency connectivity_plus to v7 (#22723)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>

* chore: use hosted isar flutter libs (#22757)

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>

* fix: skip local only assets in move to lock action (#22728)

* fix:prefer trashing to deletions

* skip local only assets in move to lock action

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>

* fix: brief flashing when swiping from video (#22187)

* fix(web): Uniform random distribution during shuffle (#19902)

feat: better random distribution

* fix: persist search page scroll offset between rebuilds (#22733)

fix: persist search scroll between rebuilds

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>

* docs: add some external library notes (#22776)

* feat(web): seconds and milliseconds in timestamps (#20337)

* fix(web): seconds in timestamps

* changed date-input step to provide millisecond precision

* feat(cli): add debug development config (#22712)

* add debug and change ts-node with tsx

* update pr changes

* update pnpm-lock

* remove ts-node from readme

* typo

* resolve conflicts

* remove tsx

* launch from dist

* add preLaunchTask

* update readme

* undo main in package.json

* remove typo

* Apply suggestion from @bwees

Co-authored-by: Brandon Wees <brandonwees@gmail.com>

* revert pnpm-lock changes

* @jrasm91 suggestions

* chore: run node with source maps

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: Brandon Wees <brandonwees@gmail.com>

* docs: add Immich-Stack to community-projects (#21563)

docs: add Immich Stack community project

Co-authored-by: Jason Rasmussen <jason@rasm.me>

* feat(web): Add upload to stack action (#19842)

* feat(web): Add upload to stack action

* Event handling and translation

* Update asset viewer instead

* lint, improve upload return type

* Add suggestions from code review

* Resolve merge conflicts

* Apply suggestions from code review

* feat(server): add `immich.users.total` metric (#21780)

* Add immich.users.total metric

* Fix tests & one lint error

* Lint

* Fix SQL Schema checks

* Fix nit

* Use workers argument in OnEvent hook and remove condition from method body

* feat(docs): add zh_TW Traditional Chinese version README (#22703)

docs: add zh_TW Traditional Chinese version README

* chore: ignore renovate major updates for postgres image (#22764)

* fix: remove postgres exclude datasource match (#22811)

* chore(deps): update github-actions (major) (#22810)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix: revert terragrunt-action bump (#22812)

* chore: don't enforce runes (#22813)

* chore(deps): update base-image to v202510092146 (major) (#22818)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update typescript-projects (#22809)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>

* fix: only cast to device if the asset is a RemoteAsset (#22805)

* feat: (perf) remove scroll compensation (#22837)

* fix(deps): update dependency happy-dom to v20 [security] (#22846)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update github-actions (#22793)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix: various typos (#22867)

Found via `codespell -q 3 -S "*.svg,./i18n,./docs/package-lock.json,./readme_i18n,./mobile/assets/i18n" -L afterall,devlop,finaly,inout,nd,optin,renderd,sade`

* fix: ios skip posting hash response after detached from engine (#22695)

* skip posting message after detached from engine

* review changes

* cancel plugin before destroying engine

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>

* chore(deps): update ghcr.io/immich-app/postgres:14-vectorchord0.3.0 docker digest to 6f3e9d2 (#22912)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0 docker digest to bcf6335 (#22913)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix: re-add scroll compensation (efficiently) (#22848)

* fix: re-add scroll compensation (efficient)

* Rename showSkeleton to invisible. Adjust skeleton margins, invisible support.

* Fix faulty logic, simplify

* Calculate ratios and determine compensation strategy: height comp for above/partiality visible, month-scroll comp within a fully visible month.

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>

* fix: shared album control permissions (#22435)

* fix: shared album control permissions

* fix: properly display "add photos"

* fix: dont allow modification of album order

* fix: album title/description edit from app bar

* chore: code review changes

* chore: format translations

* chore: lintings

* fix: show dialog before delete local action (#22280)

* fix: show dialog on delete local action

# Conflicts:
#	mobile/lib/repositories/asset_media.repository.dart

* button style

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>

* fix(deps): update dependency kysely-postgres-js to v3 (#22924)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update redis:6.2-alpine docker digest to 77697a7 (#22915)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update typescript-projects (#22918)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>

* feat: local album events notification (#22817)

* feat: local album events notification

* pr feedback

* show number of unread notification

* chore: refactor show view in timeline button (#22894)

* chore: refactor show view in timeline button

This refactor includes changes to notify asset viewer about where an asset was shown from.

* chore: realized I could just pull from the timelineProvider instead of storing it in the asset viewer state

* chore: rename enum to TimelineOrigin and update members

* fix: update isOwner condition

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>

* chore(web): update translations (#22623)

Translate-URL: https://hosted.weblate.org/projects/immich/immich/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/be/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/el/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/gl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ka/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/mr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pa/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Abhijeet Bonde <abhijeetbonde19@gmail.com>
Co-authored-by: Adam Uchmanowicz <auchmanowicz@gmail.com>
Co-authored-by: Adrian Hermida <adrian.hermida.baloira@gmail.com>
Co-authored-by: Aleksa Milošević <akimaki15@gmail.com>
Co-authored-by: Amin <amnsharif@gmail.com>
Co-authored-by: AndreiP28 <andreiprica28@gmail.com>
Co-authored-by: António Santos <antoniomsantos99@gmail.com>
Co-authored-by: Asger Mogensen <asgermog@gmail.com>
Co-authored-by: Christoph Auer <Christoph.Auer@pilsheim.de>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: DevServs <bonov@mail.ru>
Co-authored-by: Eetu Mäenpää <me@eetumaenpaa.fi>
Co-authored-by: Felipe Garcia <garcia.o.felipe@gmail.com>
Co-authored-by: Filip Joković <filip@jokovic.dev>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com>
Co-authored-by: Jason Song <songpeiheng@gmail.com>
Co-authored-by: Javier Villanueva García <jvg2203@gmail.com>
Co-authored-by: Jordy H <jordy@hoebergen.net>
Co-authored-by: Jorge Montejo <jorgemon.lopez@gmail.com>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: Konstantinos D <kdemer@yahoo.com>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Liviu Roman <contact@liviuroman.com>
Co-authored-by: Lorenz Baum <LorenzBaum@gmx.de>
Co-authored-by: Lukas Konsin <lukaskonsin@proton.me>
Co-authored-by: Mandeep <mandeeps708@gmail.com>
Co-authored-by: Marc Casillas <mcasillassu@gmail.com>
Co-authored-by: Marcelo Popper Costa <marcelo_popper@hotmail.com>
Co-authored-by: MatijaThe245th <matija245matakovic@gmail.com>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Mees Frensel <meesfrensel@gmail.com>
Co-authored-by: Mirko <itzmirko@itzmirko.it>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Oleksandr Yurov <oyurov@icloud.com>
Co-authored-by: Orkun Sürel <orkunsurel@gmail.com>
Co-authored-by: Peter Dave Hello <hsu@peterdavehello.org>
Co-authored-by: Philipp Burndorfer <phi.bur@gmx.at>
Co-authored-by: Prasanth Baskar <bupdprasanth@gmail.com>
Co-authored-by: Roman Zhukov <Softver161@gmail.com>
Co-authored-by: Sayan Goswami <goswami.sayan47@gmail.com>
Co-authored-by: Sergey Katsubo <skatsubo@gmail.com>
Co-authored-by: Simon Bierwald <simon.bierwald@gmail.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: TV Box <realceday.tvbox@gmail.com>
Co-authored-by: Taiki M <vexingly-many-mace@duck.com>
Co-authored-by: Theodore Zhvania <zhvania@ted.ge>
Co-authored-by: Tim De Meyer <demeyer.tim@gmail.com>
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org>
Co-authored-by: Valentino Harpa <valen.ginga@gmail.com>
Co-authored-by: Vegard Fladby <vegard@fladby.org>
Co-authored-by: Willem Schipper <git@willem.page>
Co-authored-by: Yago Raña Gayoso <yago.rana.gayoso@gmail.com>
Co-authored-by: Zurab Sajaia <vavalomi@hotmail.com>
Co-authored-by: albanobattistella <albanobattistella@gmail.com>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Co-authored-by: dark&white <darkwhite@users.noreply.hosted.weblate.org>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: findussoft <sella_violett_8i@icloud.com>
Co-authored-by: kiwinho <kiwicaja@gmail.com>
Co-authored-by: millallo <millallo@tiscali.it>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: rokon001 <rnacc3579@gmail.com>
Co-authored-by: vaibhav kumar <catvaku@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Максим Горпиніч <gorpinicmaksim0@gmail.com>
Co-authored-by: தமிழ்நேரம் <tamilneram247@gmail.com>

* chore: version v2.1.0

* refactor

* question marks are the enemy

* refactor count map

* update readme

* e2e

* count of 0 is impossible

* useless async

---------

Co-authored-by: Chaoscontrol <6642238+Chaoscontrol@users.noreply.github.com>
Co-authored-by: Brandon Wees <brandonwees@gmail.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Weblate (bot) <hosted@weblate.org>
Co-authored-by: Arthur Bols <arthur@bols.dev>
Co-authored-by: Ben Kim <benkim1129@gmail.com>
Co-authored-by: César Gómez <cegomez@gmail.com>
Co-authored-by: DR <weblate-kavita.snowflake668@slmail.me>
Co-authored-by: DevServs <bonov@mail.ru>
Co-authored-by: Emil Friis Osmann <Emilfriisosmann@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Godwin T <godwintgn@protonmail.com>
Co-authored-by: Hristo T <hristotarnev@gmail.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: KecskeTech <teonyitas@gmail.com>
Co-authored-by: Kiril Panayotov <eccyboo@protonmail.com>
Co-authored-by: Liviu Roman <contact@liviuroman.com>
Co-authored-by: Lorenzo <artale.lorenzo@outlook.it>
Co-authored-by: Marcelo Popper Costa <marcelo_popper@hotmail.com>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Miryusif Rahimov <miryusifrahimov@gmail.com>
Co-authored-by: Msaood <msaood@msaood.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Pedro Vendeira <vendeira.pedro@gmail.com>
Co-authored-by: PontusÖsterlindh <pontus@osterlindh.com>
Co-authored-by: Rahees <ahdrahees.dev@gmail.com>
Co-authored-by: Sandeep R <sandeep1891995@gmail.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: TV Box <realceday.tvbox@gmail.com>
Co-authored-by: Tino Altmann <usinggrant@hotmail.de>
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org>
Co-authored-by: Vegard Fladby <vegard@fladby.org>
Co-authored-by: anton garcias <isaga.percompartir@gmail.com>
Co-authored-by: chamdim <chamdim@protonmail.com>
Co-authored-by: longlarry <weblate.gm@tuta.io>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: swever <swever@users.noreply.hosted.weblate.org>
Co-authored-by: தமிழ்நேரம் <tamilneram247@gmail.com>
Co-authored-by: 안세훈 <on9686@gmail.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Xavier Dupuis <xavier0978@hotmail.fr>
Co-authored-by: Sergey Katsubo <skatsubo@gmail.com>
Co-authored-by: Adrian Jost <22987140+adrianjost@users.noreply.github.com>
Co-authored-by: Cokodayo <78474654+CaptainJack2491@users.noreply.github.com>
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Yaros <thedj.launchpadder.dmx512@gmail.com>
Co-authored-by: USBAkimbo <71508071+USBAkimbo@users.noreply.github.com>
Co-authored-by: Min Idzelis <min123@gmail.com>
Co-authored-by: grgergo <gergo_g@proton.me>
Co-authored-by: gergo= <gergo@pitty.hu>
Co-authored-by: Jorge Montejo <jorgemon.lopez@gmail.com>
Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: Diogo Correia <me@diogotc.com>
Co-authored-by: CuberL <liaoziyue10@gmail.com>
Co-authored-by: Xantin <56741168+Xiticks@users.noreply.github.com>
Co-authored-by: bo0tzz <git@bo0tzz.me>
Co-authored-by: Nicholas Flamy <30300649+NicholasFlamy@users.noreply.github.com>
Co-authored-by: TDR001 <redp50@outlook.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Saschl <19493808+Saschl@users.noreply.github.com>
Co-authored-by: Pascal Sommer <Pascal-So@users.noreply.github.com>
Co-authored-by: kaziu687 <kaziu687@gmail.com>
Co-authored-by: Qhilm <3350433+Qhilm@users.noreply.github.com>
Co-authored-by: Sebastian Schneider <sese.tailor@gmx.net>
Co-authored-by: Tushar Harsora <tusharharsora95@gmail.com>
Co-authored-by: Peter Dave Hello <hsu@peterdavehello.org>
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
Co-authored-by: luzpaz <luzpaz@users.noreply.github.com>
Co-authored-by: Abhijeet Bonde <abhijeetbonde19@gmail.com>
Co-authored-by: Adam Uchmanowicz <auchmanowicz@gmail.com>
Co-authored-by: Adrian Hermida <adrian.hermida.baloira@gmail.com>
Co-authored-by: Aleksa Milošević <akimaki15@gmail.com>
Co-authored-by: Amin <amnsharif@gmail.com>
Co-authored-by: AndreiP28 <andreiprica28@gmail.com>
Co-authored-by: António Santos <antoniomsantos99@gmail.com>
Co-authored-by: Asger Mogensen <asgermog@gmail.com>
Co-authored-by: Christoph Auer <Christoph.Auer@pilsheim.de>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: Eetu Mäenpää <me@eetumaenpaa.fi>
Co-authored-by: Felipe Garcia <garcia.o.felipe@gmail.com>
Co-authored-by: Filip Joković <filip@jokovic.dev>
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com>
Co-authored-by: Jason Song <songpeiheng@gmail.com>
Co-authored-by: Javier Villanueva García <jvg2203@gmail.com>
Co-authored-by: Jordy H <jordy@hoebergen.net>
Co-authored-by: Konstantinos D <kdemer@yahoo.com>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Lorenz Baum <LorenzBaum@gmx.de>
Co-authored-by: Lukas Konsin <lukaskonsin@proton.me>
Co-authored-by: Mandeep <mandeeps708@gmail.com>
Co-authored-by: Marc Casillas <mcasillassu@gmail.com>
Co-authored-by: MatijaThe245th <matija245matakovic@gmail.com>
Co-authored-by: Mees Frensel <meesfrensel@gmail.com>
Co-authored-by: Mirko <itzmirko@itzmirko.it>
Co-authored-by: Oleksandr Yurov <oyurov@icloud.com>
Co-authored-by: Orkun Sürel <orkunsurel@gmail.com>
Co-authored-by: Philipp Burndorfer <phi.bur@gmx.at>
Co-authored-by: Prasanth Baskar <bupdprasanth@gmail.com>
Co-authored-by: Roman Zhukov <Softver161@gmail.com>
Co-authored-by: Sayan Goswami <goswami.sayan47@gmail.com>
Co-authored-by: Simon Bierwald <simon.bierwald@gmail.com>
Co-authored-by: Taiki M <vexingly-many-mace@duck.com>
Co-authored-by: Theodore Zhvania <zhvania@ted.ge>
Co-authored-by: Tim De Meyer <demeyer.tim@gmail.com>
Co-authored-by: Valentino Harpa <valen.ginga@gmail.com>
Co-authored-by: Willem Schipper <git@willem.page>
Co-authored-by: Yago Raña Gayoso <yago.rana.gayoso@gmail.com>
Co-authored-by: Zurab Sajaia <vavalomi@hotmail.com>
Co-authored-by: albanobattistella <albanobattistella@gmail.com>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Co-authored-by: dark&white <darkwhite@users.noreply.hosted.weblate.org>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: findussoft <sella_violett_8i@icloud.com>
Co-authored-by: kiwinho <kiwicaja@gmail.com>
Co-authored-by: millallo <millallo@tiscali.it>
Co-authored-by: rokon001 <rnacc3579@gmail.com>
Co-authored-by: vaibhav kumar <catvaku@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Максим Горпиніч <gorpinicmaksim0@gmail.com>
2025-10-14 17:34:20 -04:00
Mert
1b62c2ef55 feat(ml): coreml (#17718)
* coreml

* add test

* use arena by default in native installation

* fix tests

* add env to docs

* remove availability envs
2025-10-14 17:51:31 +00:00
github-actions
43eccca86a chore: version v2.1.0 2025-10-14 16:24:43 +00:00
Weblate (bot)
e6b9cc09c2 chore(web): update translations (#22623)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/be/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/el/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/gl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ka/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/mr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pa/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Abhijeet Bonde <abhijeetbonde19@gmail.com>
Co-authored-by: Adam Uchmanowicz <auchmanowicz@gmail.com>
Co-authored-by: Adrian Hermida <adrian.hermida.baloira@gmail.com>
Co-authored-by: Aleksa Milošević <akimaki15@gmail.com>
Co-authored-by: Amin <amnsharif@gmail.com>
Co-authored-by: AndreiP28 <andreiprica28@gmail.com>
Co-authored-by: António Santos <antoniomsantos99@gmail.com>
Co-authored-by: Asger Mogensen <asgermog@gmail.com>
Co-authored-by: Christoph Auer <Christoph.Auer@pilsheim.de>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: DevServs <bonov@mail.ru>
Co-authored-by: Eetu Mäenpää <me@eetumaenpaa.fi>
Co-authored-by: Felipe Garcia <garcia.o.felipe@gmail.com>
Co-authored-by: Filip Joković <filip@jokovic.dev>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com>
Co-authored-by: Jason Song <songpeiheng@gmail.com>
Co-authored-by: Javier Villanueva García <jvg2203@gmail.com>
Co-authored-by: Jordy H <jordy@hoebergen.net>
Co-authored-by: Jorge Montejo <jorgemon.lopez@gmail.com>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: Konstantinos D <kdemer@yahoo.com>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Liviu Roman <contact@liviuroman.com>
Co-authored-by: Lorenz Baum <LorenzBaum@gmx.de>
Co-authored-by: Lukas Konsin <lukaskonsin@proton.me>
Co-authored-by: Mandeep <mandeeps708@gmail.com>
Co-authored-by: Marc Casillas <mcasillassu@gmail.com>
Co-authored-by: Marcelo Popper Costa <marcelo_popper@hotmail.com>
Co-authored-by: MatijaThe245th <matija245matakovic@gmail.com>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Mees Frensel <meesfrensel@gmail.com>
Co-authored-by: Mirko <itzmirko@itzmirko.it>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Oleksandr Yurov <oyurov@icloud.com>
Co-authored-by: Orkun Sürel <orkunsurel@gmail.com>
Co-authored-by: Peter Dave Hello <hsu@peterdavehello.org>
Co-authored-by: Philipp Burndorfer <phi.bur@gmx.at>
Co-authored-by: Prasanth Baskar <bupdprasanth@gmail.com>
Co-authored-by: Roman Zhukov <Softver161@gmail.com>
Co-authored-by: Sayan Goswami <goswami.sayan47@gmail.com>
Co-authored-by: Sergey Katsubo <skatsubo@gmail.com>
Co-authored-by: Simon Bierwald <simon.bierwald@gmail.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: TV Box <realceday.tvbox@gmail.com>
Co-authored-by: Taiki M <vexingly-many-mace@duck.com>
Co-authored-by: Theodore Zhvania <zhvania@ted.ge>
Co-authored-by: Tim De Meyer <demeyer.tim@gmail.com>
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org>
Co-authored-by: Valentino Harpa <valen.ginga@gmail.com>
Co-authored-by: Vegard Fladby <vegard@fladby.org>
Co-authored-by: Willem Schipper <git@willem.page>
Co-authored-by: Yago Raña Gayoso <yago.rana.gayoso@gmail.com>
Co-authored-by: Zurab Sajaia <vavalomi@hotmail.com>
Co-authored-by: albanobattistella <albanobattistella@gmail.com>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Co-authored-by: dark&white <darkwhite@users.noreply.hosted.weblate.org>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: findussoft <sella_violett_8i@icloud.com>
Co-authored-by: kiwinho <kiwicaja@gmail.com>
Co-authored-by: millallo <millallo@tiscali.it>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: rokon001 <rnacc3579@gmail.com>
Co-authored-by: vaibhav kumar <catvaku@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Максим Горпиніч <gorpinicmaksim0@gmail.com>
Co-authored-by: தமிழ்நேரம் <tamilneram247@gmail.com>
2025-10-14 16:22:42 +00:00
Brandon Wees
b484a52252 chore: refactor show view in timeline button (#22894)
* chore: refactor show view in timeline button

This refactor includes changes to notify asset viewer about where an asset was shown from.

* chore: realized I could just pull from the timelineProvider instead of storing it in the asset viewer state

* chore: rename enum to TimelineOrigin and update members

* fix: update isOwner condition

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-10-14 15:25:48 +00:00
Alex
d778286777 feat: local album events notification (#22817)
* feat: local album events notification

* pr feedback

* show number of unread notification
2025-10-14 10:15:51 -05:00
615 changed files with 14187 additions and 8595 deletions

2
.github/.nvmrc vendored
View File

@@ -1 +1 @@
22.20.0
22.21.0

2
.github/labeler.yml vendored
View File

@@ -31,7 +31,7 @@ documentation:
🧠machine-learning:
- changed-files:
- any-glob-to-any-file:
- machine-learning/app/**
- machine-learning/**
changelog:translation:
- head-branch: ['^chore/translations$']

View File

@@ -34,10 +34,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@5f91b52dfbb92b8d96ca411ab59c896cd59714ca # pre-job-action-v1.1.0
uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
with:
github-token: ${{ steps.token.outputs.token }}
filters: |
mobile:
- 'mobile/**'
@@ -51,14 +58,22 @@ jobs:
permissions:
contents: read
# Skip when PR from a fork
if: ${{ !github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' && fromJSON(needs.pre-job.outputs.should_run).mobile == true }}
# if: ${{ !github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' && fromJSON(needs.pre-job.outputs.should_run).mobile == true }}
if: ${{ false }}
runs-on: mich
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: 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:
@@ -140,3 +155,111 @@ 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
if: ${{ !github.event.pull_request.head.repo.fork && fromJSON(needs.pre-job.outputs.should_run).mobile == true && github.ref == 'refs/heads/main' }}
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@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.2'
working-directory: ./mobile/ios
- name: Install Fastlane
run: |
cd mobile/ios
gem install bundler
bundle config set --local path 'vendor/bundle'
bundle install
- name: Create API Key JSON
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
cat > api_key.json << EOF
{
"key_id": "${API_KEY_ID}",
"issuer_id": "${API_KEY_ISSUER_ID}",
"key": "$(cat ~/.appstoreconnect/private_keys/AuthKey_${API_KEY_ID}.p8)",
"duration": 1200,
"in_house": false
}
EOF
- name: Import Certificate and Provisioning Profile
env:
IOS_CERTIFICATE_P12: ${{ secrets.IOS_CERTIFICATE_P12 }}
IOS_CERTIFICATE_PASSWORD: ${{ secrets.IOS_CERTIFICATE_PASSWORD }}
IOS_PROVISIONING_PROFILE: ${{ secrets.IOS_PROVISIONING_PROFILE }}
working-directory: ./mobile/ios
run: |
echo "$IOS_CERTIFICATE_P12" | base64 --decode > certificate.p12
echo "$IOS_PROVISIONING_PROFILE" | base64 --decode > profile.mobileprovision
- name: Create keychain
env:
KEYCHAIN_PASSWORD: ${{ secrets.IOS_CERTIFICATE_PASSWORD }}
run: |
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
- 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 }}
working-directory: ./mobile/ios
run: bundle exec fastlane release_ci
- name: Clean up keychain
if: always()
run: |
security delete-keychain build.keychain || true
- name: Upload IPA artifact
uses: actions/upload-artifact@v4
with:
name: ios-release-ipa
path: mobile/ios/Runner.ipa

View File

@@ -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@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

View File

@@ -29,15 +29,22 @@ jobs:
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 }}
- 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@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './cli/.nvmrc'
registry-url: 'https://registry.npmjs.org'
@@ -64,10 +71,17 @@ 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@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
@@ -81,7 +95,7 @@ jobs:
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
password: ${{ steps.token.outputs.token }}
- name: Get package version
id: package-version
@@ -111,3 +125,4 @@ jobs:
cache-to: type=gha,mode=max
tags: ${{ steps.metadata.outputs.tags }}
labels: ${{ steps.metadata.outputs.labels }}
github-token: ${{ steps.token.outputs.token }}

View File

@@ -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:6b8450bfc06770af1af66bce9bf2ced7d1d9b90df1a59fc4c83a17777a9f6723
outputs:
checked: ${{ steps.get_checkbox.outputs.checked }}
steps:

View File

@@ -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@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@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6
uses: github/codeql-action/init@16140ae1a102900babc80a33c44059580f687047 # v4.30.9
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@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6
uses: github/codeql-action/autobuild@16140ae1a102900babc80a33c44059580f687047 # v4.30.9
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@@ -76,6 +83,6 @@ jobs:
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6
uses: github/codeql-action/analyze@16140ae1a102900babc80a33c44059580f687047 # v4.30.9
with:
category: '/language:${{matrix.language}}'

View File

@@ -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@5f91b52dfbb92b8d96ca411ab59c896cd59714ca # pre-job-action-v1.1.0
uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
with:
github-token: ${{ steps.token.outputs.token }}
filters: |
server:
- 'server/**'
@@ -58,6 +65,7 @@ jobs:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Re-tag image
env:
REGISTRY_NAME: 'ghcr.io'
@@ -87,6 +95,7 @@ jobs:
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@946acac326940f8badf09ccf591d9cb345d6a689 # multi-runner-build-workflow-v0.2.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@946acac326940f8badf09ccf591d9cb345d6a689 # multi-runner-build-workflow-v0.2.1
uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@47a2ee86898ccff51592d6572391fb1abcd7f782 # multi-runner-build-workflow-v2.0.1
permissions:
contents: read
actions: read

View File

@@ -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@5f91b52dfbb92b8d96ca411ab59c896cd59714ca # pre-job-action-v1.1.0
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@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@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './docs/.nvmrc'
cache: 'pnpm'

View File

@@ -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@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
github-token: ${{ steps.token.outputs.token }}
script: |
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
@@ -42,6 +52,7 @@ jobs:
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,10 +118,20 @@ 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@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
@@ -118,6 +139,7 @@ jobs:
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);
@@ -129,6 +151,7 @@ jobs:
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 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 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 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: '<!-- Docs PR URL -->'

View File

@@ -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@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 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: '<!-- Docs PR URL -->'

View File

@@ -29,10 +29,10 @@ jobs:
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@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
@@ -51,6 +51,7 @@ jobs:
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,

View File

@@ -28,11 +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
@@ -55,14 +63,6 @@ jobs:
exit 1
fi
- 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: Lock weblate
if: ${{ inputs.skip != true }}
env:

View File

@@ -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

View File

@@ -11,4 +11,12 @@ jobs:
pull-requests: write
runs-on: ubuntu-latest
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: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # v6.0.1
with:
repo-token: ${{ steps.token.outputs.token }}

View File

@@ -62,13 +62,13 @@ jobs:
ref: main
- name: Install uv
uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0
uses: astral-sh/setup-uv@2ddd2b9cb38ad8efd50337e8ab201519a34c9f24 # v7.1.1
- 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@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
@@ -126,9 +126,10 @@ jobs:
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
name: release-apk-signed
github-token: ${{ steps.generate-token.outputs.token }}
- name: Create draft release
uses: softprops/action-gh-release@aec2ec56f94eb8180ceec724245f64ef008b89f5 # v2.4.0
uses: softprops/action-gh-release@6da8fa9354ddfdc4aeace5fc48d7f679b5214090 # v2.4.1
with:
draft: true
tag_name: ${{ env.IMMICH_VERSION }}

View File

@@ -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:
- 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.'

View File

@@ -16,15 +16,22 @@ jobs:
run:
working-directory: ./open-api/typescript-sdk
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
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@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
- uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './open-api/typescript-sdk/.nvmrc'
registry-url: 'https://registry.npmjs.org'

View File

@@ -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@5f91b52dfbb92b8d96ca411ab59c896cd59714ca # pre-job-action-v1.1.0
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,13 +48,12 @@ jobs:
run:
working-directory: ./mobile
steps:
- name: Generate token
id: token
uses: immich-app/devtools/actions/create-workflow-token@feat/create-workflow-token-action
- 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:

View File

@@ -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@5f91b52dfbb92b8d96ca411ab59c896cd59714ca # pre-job-action-v1.1.0
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@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@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.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@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@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.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@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@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.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@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@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './web/.nvmrc'
cache: 'pnpm'
@@ -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@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@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.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@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@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.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@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@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './e2e/.nvmrc'
cache: 'pnpm'
@@ -315,14 +372,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@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@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
@@ -346,15 +410,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@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@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './e2e/.nvmrc'
cache: 'pnpm'
@@ -394,15 +465,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@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@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './e2e/.nvmrc'
cache: 'pnpm'
@@ -441,9 +519,16 @@ 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 }}
- 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,11 +551,18 @@ jobs:
run:
working-directory: ./machine-learning
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: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Install uv
uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0
uses: astral-sh/setup-uv@2ddd2b9cb38ad8efd50337e8ab201519a34c9f24 # v7.1.1
- uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
# TODO: add caching when supported (https://github.com/actions/setup-python/pull/818)
# with:
@@ -502,14 +594,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@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@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './.github/.nvmrc'
cache: 'pnpm'
@@ -525,9 +624,16 @@ 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 }}
- 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 +645,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@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@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
@@ -594,14 +707,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@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@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'

View File

@@ -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@5f91b52dfbb92b8d96ca411ab59c896cd59714ca # pre-job-action-v1.1.0
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' \

View File

@@ -1 +1 @@
22.20.0
22.21.0

View File

@@ -1,6 +1,6 @@
{
"name": "@immich/cli",
"version": "2.2.96",
"version": "2.2.97",
"description": "Command Line Interface (CLI) for Immich",
"type": "module",
"exports": "./dist/index.js",
@@ -20,7 +20,7 @@
"@types/lodash-es": "^4.17.12",
"@types/micromatch": "^4.0.9",
"@types/mock-fs": "^4.13.1",
"@types/node": "^22.18.8",
"@types/node": "^22.18.12",
"@vitest/coverage-v8": "^3.0.0",
"byte-size": "^9.0.0",
"cli-progress": "^3.12.0",
@@ -69,6 +69,6 @@
"micromatch": "^4.0.8"
},
"volta": {
"node": "22.20.0"
"node": "22.21.0"
}
}

View File

@@ -271,7 +271,7 @@ describe('startWatch', () => {
});
});
it('should filger out ignored patterns', async () => {
it('should filter out ignored patterns', async () => {
const testFilePath = path.join(testFolder, 'test.jpg');
const ignoredPattern = 'ignored';
const ignoredFolder = path.join(testFolder, ignoredPattern);

View File

@@ -37,6 +37,7 @@ export interface UploadOptionsDto {
dryRun?: boolean;
skipHash?: boolean;
delete?: boolean;
deleteDuplicates?: boolean;
album?: boolean;
albumName?: string;
includeHidden?: boolean;
@@ -70,10 +71,8 @@ const uploadBatch = async (files: string[], options: UploadOptionsDto) => {
console.log(JSON.stringify({ newFiles, duplicates, newAssets }, undefined, 4));
}
await updateAlbums([...newAssets, ...duplicates], options);
await deleteFiles(
newAssets.map(({ filepath }) => filepath),
options,
);
await deleteFiles(newAssets, duplicates, options);
};
export const startWatch = async (
@@ -406,28 +405,46 @@ const uploadFile = async (input: string, stats: Stats): Promise<AssetMediaRespon
return response.json();
};
const deleteFiles = async (files: string[], options: UploadOptionsDto): Promise<void> => {
if (!options.delete) {
return;
const deleteFiles = async (uploaded: Asset[], duplicates: Asset[], options: UploadOptionsDto): Promise<void> => {
let fileCount = 0;
if (options.delete) {
fileCount += uploaded.length;
}
if (options.deleteDuplicates) {
fileCount += duplicates.length;
}
if (options.dryRun) {
console.log(`Would have deleted ${files.length} local asset${s(files.length)}`);
console.log(`Would have deleted ${fileCount} local asset${s(fileCount)}`);
return;
}
if (fileCount === 0) {
return;
}
console.log('Deleting assets that have been uploaded...');
const deletionProgress = new SingleBar(
{ format: 'Deleting local assets | {bar} | {percentage}% | ETA: {eta}s | {value}/{total} assets' },
Presets.shades_classic,
);
deletionProgress.start(files.length, 0);
deletionProgress.start(fileCount, 0);
const chunkDelete = async (files: Asset[]) => {
for (const assetBatch of chunk(files, options.concurrency)) {
await Promise.all(assetBatch.map((input: Asset) => unlink(input.filepath)));
deletionProgress.update(assetBatch.length);
}
};
try {
for (const assetBatch of chunk(files, options.concurrency)) {
await Promise.all(assetBatch.map((input: string) => unlink(input)));
deletionProgress.update(assetBatch.length);
if (options.delete) {
await chunkDelete(uploaded);
}
if (options.deleteDuplicates) {
await chunkDelete(duplicates);
}
} finally {
deletionProgress.stop();

View File

@@ -8,6 +8,7 @@ import { serverInfo } from 'src/commands/server-info';
import { version } from '../package.json';
const defaultConfigDirectory = path.join(os.homedir(), '.config/immich/');
const defaultConcurrency = Math.max(1, os.cpus().length - 1);
const program = new Command()
.name('immich')
@@ -66,7 +67,7 @@ program
.addOption(
new Option('-c, --concurrency <number>', 'Number of assets to upload at the same time')
.env('IMMICH_UPLOAD_CONCURRENCY')
.default(4),
.default(defaultConcurrency),
)
.addOption(
new Option('-j, --json-output', 'Output detailed information in json format')
@@ -74,6 +75,11 @@ program
.default(false),
)
.addOption(new Option('--delete', 'Delete local assets after upload').env('IMMICH_DELETE_ASSETS'))
.addOption(
new Option('--delete-duplicates', 'Delete local assets that are duplicates (already exist on server)').env(
'IMMICH_DELETE_DUPLICATES',
),
)
.addOption(new Option('--no-progress', 'Hide progress bars').env('IMMICH_PROGRESS_BAR').default(true))
.addOption(
new Option('--watch', 'Watch for changes and upload automatically')

View File

@@ -122,7 +122,7 @@ services:
ports:
- 3003:3003
volumes:
- ../machine-learning:/usr/src/app
- ../machine-learning/immich_ml:/usr/src/immich_ml
- model-cache:/cache
env_file:
- .env
@@ -134,7 +134,7 @@ services:
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:fea8b3e67b15729d4bb70589eb03367bab9ad1ee89c876f54327fc7c6e618571
image: docker.io/valkey/valkey:8@sha256:81db6d39e1bba3b3ff32bd3a1b19a6d69690f94a3954ec131277b9a26b95b3aa
healthcheck:
test: redis-cli ping || exit 1

View File

@@ -56,7 +56,7 @@ services:
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:fea8b3e67b15729d4bb70589eb03367bab9ad1ee89c876f54327fc7c6e618571
image: docker.io/valkey/valkey:8@sha256:81db6d39e1bba3b3ff32bd3a1b19a6d69690f94a3954ec131277b9a26b95b3aa
healthcheck:
test: redis-cli ping || exit 1
restart: always
@@ -83,7 +83,7 @@ services:
container_name: immich_prometheus
ports:
- 9090:9090
image: prom/prometheus@sha256:63805ebb8d2b3920190daf1cb14a60871b16fd38bed42b857a3182bc621f4996
image: prom/prometheus@sha256:23031bfe0e74a13004252caaa74eccd0d62b6c6e7a04711d5b8bf5b7e113adc7
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus-data:/prometheus
@@ -95,7 +95,7 @@ services:
command: ['./run.sh', '-disable-reporting']
ports:
- 3000:3000
image: grafana/grafana:12.1.1-ubuntu@sha256:d1da838234ff2de93e0065ee1bf0e66d38f948dcc5d718c25fa6237e14b4424a
image: grafana/grafana:12.2.1-ubuntu@sha256:797530c642f7b41ba7848c44cfda5e361ef1f3391a98bed1e5d448c472b6826a
volumes:
- grafana-data:/var/lib/grafana

View File

@@ -49,7 +49,7 @@ services:
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:fea8b3e67b15729d4bb70589eb03367bab9ad1ee89c876f54327fc7c6e618571
image: docker.io/valkey/valkey:8@sha256:81db6d39e1bba3b3ff32bd3a1b19a6d69690f94a3954ec131277b9a26b95b3aa
healthcheck:
test: redis-cli ping || exit 1
restart: always

View File

@@ -9,8 +9,8 @@ DB_DATA_LOCATION=./postgres
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
# TZ=Etc/UTC
# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release
# The Immich version to use. You can pin this to a specific version like "v2.1.0"
IMMICH_VERSION=v2
# 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

View File

@@ -1 +1 @@
22.20.0
22.21.0

View File

@@ -57,6 +57,7 @@ Then please follow the steps in the following section for restoring the database
<TabItem value="Linux system" label="Linux system" default>
```bash title='Backup'
# Replace <DB_USERNAME> with the database username - usually postgres unless you have changed it.
docker exec -t immich_postgres pg_dumpall --clean --if-exists --username=<DB_USERNAME> | gzip > "/path/to/backup/dump.sql.gz"
```
@@ -69,16 +70,18 @@ docker compose create # Create Docker containers for Immich apps witho
docker start immich_postgres # Start Postgres server
sleep 10 # Wait for Postgres server to start up
# Check the database user if you deviated from the default
# Replace <DB_USERNAME> with the database username - usually postgres unless you have changed it.
gunzip --stdout "/path/to/backup/dump.sql.gz" \
| sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" \
| docker exec -i immich_postgres psql --dbname=postgres --username=<DB_USERNAME> # Restore Backup
docker compose up -d # Start remainder of Immich apps
```
</TabItem>
</TabItem>
<TabItem value="Windows system (PowerShell)" label="Windows system (PowerShell)">
```powershell title='Backup'
# Replace <DB_USERNAME> with the database username - usually postgres unless you have changed it.
[System.IO.File]::WriteAllLines("C:\absolute\path\to\backup\dump.sql", (docker exec -t immich_postgres pg_dumpall --clean --if-exists --username=<DB_USERNAME>))
```
@@ -92,13 +95,15 @@ docker compose create # Create Docker containers for
docker start immich_postgres # Start Postgres server
sleep 10 # Wait for Postgres server to start up
docker exec -it immich_postgres bash # Enter the Docker shell and run the following command
# Check the database user if you deviated from the default. If your backup ends in `.gz`, replace `cat` with `gunzip --stdout`
# If your backup ends in `.gz`, replace `cat` with `gunzip --stdout`
# Replace <DB_USERNAME> with the database username - usually postgres unless you have changed it.
cat "/dump.sql" | sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" | psql --dbname=postgres --username=<DB_USERNAME>
exit # Exit the Docker shell
docker compose up -d # Start remainder of Immich apps
```
</TabItem>
</TabItem>
</Tabs>
Note that for the database restore to proceed properly, it requires a completely fresh install (i.e. the Immich server has never run since creating the Docker containers). If the Immich app has run, Postgres conflicts may be encountered upon database restoration (relation already exists, violated foreign key constraints, multiple primary keys, etc.), in which case you need to delete the `DB_DATA_LOCATION` folder to reset the database.

View File

@@ -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://<backend_url>:2283;
}
# useful when using Let's Encrypt http-01 challenge
# location = /.well-known/immich {
# proxy_pass http://<backend_url>:2283;
# }
}
```
#### Compatibility with Let's Encrypt
In the event that your nginx configuration includes a section for Let's Encrypt, it's likely that you have a segment similar to the following:
```nginx
location ~ /.well-known {
...
}
```
This particular `location` directive can inadvertently prevent mobile clients from reaching the `/.well-known/immich` path, which is crucial for discovery. Usual error message for this case is: "Your app major version is not compatible with the server". To remedy this, you should introduce an additional location block specifically for this path, ensuring that requests are correctly proxied to the Immich server:
```nginx
location = /.well-known/immich {
proxy_pass http://<backend_url>:2283;
}
```
By doing so, you'll maintain the functionality of Let's Encrypt while allowing mobile clients to access the necessary Immich path without obstruction.
### Caddy example config
As an alternative to nginx, you can also use [Caddy](https://caddyserver.com/) as a reverse proxy (with automatic HTTPS configuration). Below is an example config.

View File

@@ -1,12 +0,0 @@
# Community Guides
This page lists community guides that are written around Immich, but not officially supported by the development team.
:::warning
This list comes with no guarantees about security, performance, reliability, or accuracy. Use at your own risk.
:::
import CommunityGuides from '../src/components/community-guides.tsx';
import React from 'react';
<CommunityGuides />

View File

@@ -1,12 +0,0 @@
# Community Projects
This page lists community projects that are built around Immich, but not officially supported by the development team.
:::warning
This list comes with no guarantees about security, performance, reliability, or accuracy. Use at your own risk.
:::
import CommunityProjects from '../src/components/community-projects.tsx';
import React from 'react';
<CommunityProjects />

View File

@@ -103,6 +103,7 @@ Options:
-c, --concurrency <number> Number of assets to upload at the same time (default: 4, env: IMMICH_UPLOAD_CONCURRENCY)
-j, --json-output Output detailed information in json format (default: false, env: IMMICH_JSON_OUTPUT)
--delete Delete local assets after upload (env: IMMICH_DELETE_ASSETS)
--delete-duplicates Delete local assets that are duplicates (already exist on server) (env: IMMICH_DELETE_DUPLICATES)
--no-progress Hide progress bars (env: IMMICH_PROGRESS_BAR)
--watch Watch for changes and upload automatically (default: false, env: IMMICH_WATCH_CHANGES)
--help display help for command
@@ -182,7 +183,7 @@ For example to get a list of files that would be uploaded for further
processing:
```bash
immich upload --dry-run . | tail -n +4 | jq .newFiles[]
immich upload --dry-run . | tail -n +6 | jq .newFiles[]
```
### Obtain the API Key

View File

@@ -54,9 +54,25 @@ You do not need to redo any machine learning jobs after enabling hardware accele
#### OpenVINO
- Integrated GPUs are more likely to experience issues than discrete GPUs, especially for older processors or servers with low RAM.
- Ensure the server's kernel version is new enough to use the device for hardware accceleration.
- Ensure the server's kernel version is new enough to use the device for hardware acceleration.
- Expect higher RAM usage when using OpenVINO compared to CPU processing.
#### OpenVINO-WSL
- Ensure your container can access the /dev/dri directory, you can verify this by doing `docker exec -t immich_machine_learning ls -la /dev/dri`. If this is not the case execute `getent group render` and `getent group video` on the WSL host, then add those groups to hwaccel.ml.yaml
```yaml
openvino-wsl:
devices:
- /dev/dri:/dev/dri
- /dev/dxg:/dev/dxg
volumes:
- /dev/bus/usb:/dev/bus/usb
- /usr/lib/wsl:/usr/lib/wsl
group_add:
- 44 # Replace this number with the number you found with getent group video
- 992 # Replace this number with the number you found with getent group render
```
#### RKNN
- You must have a supported Rockchip SoC: only RK3566, RK3568, RK3576 and RK3588 are supported at this moment.

View File

@@ -3,7 +3,6 @@ import { mdiCloudOffOutline, mdiCloudCheckOutline } from '@mdi/js';
import MobileAppDownload from '/docs/partials/_mobile-app-download.md';
import MobileAppLogin from '/docs/partials/_mobile-app-login.md';
import MobileAppBackup from '/docs/partials/_mobile-app-backup.md';
import { cloudDonePath, cloudOffPath } from '@site/src/components/svg-paths';
# Mobile App

View File

@@ -28,7 +28,7 @@ You can read this guide to learn more about [partner sharing](/features/partner-
## 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.

View File

@@ -37,7 +37,7 @@ In the Immich web UI:
<img src={require('./img/create-external-library.webp').default} width="50%" title="Create Library button" />
- In the dialog, select which user should own the new library
<img src={require('./img/library-owner.webp').default} width="50%" title="Library owner diaglog" />
<img src={require('./img/library-owner.webp').default} width="50%" title="Library owner dialog" />
- Click the three-dots menu and select **Edit Import Paths**
<img src={require('./img/edit-import-paths.webp').default} width="50%" title="Edit Import Paths menu option" />

View File

@@ -171,6 +171,7 @@ Redis (Sentinel) URL example JSON before encoding:
| `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 |
| `MACHINE_LEARNING_MODEL_ARENA` | Pre-allocates CPU memory to avoid memory fragmentation | true | 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.

View File

@@ -40,7 +40,7 @@ In the settings of your new project, set "**Project name**" to a name you'll rem
![Set path](../../static/img/synology-container-manager-set-path.png)
The following screen will give you the option to further customize your `docker-compose.yml` file. Take note of `DB_STORAGE_TYPE: 'HDD'`and uncomment if applicable for your Synology setup.
The following screen will give you the option to further customize your `docker-compose.yml` file. Take note of `DB_STORAGE_TYPE: 'HDD'` and uncomment if applicable for your Synology setup.
![DB storage](../../static/img/synology-container-manager-customize-docker-compose.png)

View File

@@ -87,7 +87,7 @@ After making a backup, please modify your `docker-compose.yml` file with the fol
If you deviated from the defaults of pg14 or pgvectors0.2.0, you must adjust the pg major version and pgvecto.rs version. If you are still using the default `docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0` image, you can just follow the changes above. For example, if the previous image is `docker.io/tensorchord/pgvecto-rs:pg16-v0.3.0`, the new image should be `ghcr.io/immich-app/postgres:16-vectorchord0.3.0-pgvectors0.3.0` instead of the image specified in the diff.
:::
After making these changes, you can start Immich as normal. Immich will make some changes to the DB during startup, which can take seconds to minutes to finish, depending on hardware and library size. In particular, its normal for the server logs to be seemingly stuck at `Reindexing clip_index` and `Reindexing face_index`for some time if you have over 100k assets in Immich and/or Immich is on a relatively weak server. If you see these logs and there are no errors, just give it time.
After making these changes, you can start Immich as normal. Immich will make some changes to the DB during startup, which can take seconds to minutes to finish, depending on hardware and library size. In particular, its normal for the server logs to be seemingly stuck at `Reindexing clip_index` and `Reindexing face_index` for some time if you have over 100k assets in Immich and/or Immich is on a relatively weak server. If you see these logs and there are no errors, just give it time.
:::danger
After switching to VectorChord, you should not downgrade Immich below 1.133.0.

View File

@@ -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)

View File

@@ -57,6 +57,6 @@
"node": ">=20"
},
"volta": {
"node": "22.20.0"
"node": "22.21.0"
}
}

View File

@@ -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 repositorys 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 (
<section className="flex flex-col gap-4 justify-between dark:bg-immich-dark-gray bg-immich-gray dark:border-0 border-gray-200 border border-solid rounded-2xl px-4 py-6">
<div className="flex flex-col gap-2">
<p className="m-0 items-start flex gap-2 text-2xl font-bold text-immich-primary dark:text-immich-dark-primary">
<span>{title}</span>
</p>
<p className="m-0 text-sm text-gray-600 dark:text-gray-300">{description}</p>
<p className="m-0 text-sm text-gray-600 dark:text-gray-300 my-4">
<a href={url}>{url}</a>
</p>
</div>
<div className="flex">
<Link
className="px-4 py-2 bg-immich-primary/10 dark:bg-gray-300 rounded-xl text-sm hover:no-underline text-immich-primary dark:text-immich-dark-bg font-semibold"
to={url}
>
View Guide
</Link>
</div>
</section>
);
}
export default function CommunityGuides(): JSX.Element {
return (
<div className="grid grid-cols-1 xl:grid-cols-2 gap-4">
{guides.map((guides) => (
<CommunityGuide {...guides} />
))}
</div>
);
}

View File

@@ -1,158 +0,0 @@
import Link from '@docusaurus/Link';
import React from 'react';
interface CommunityProjectProps {
title: string;
description: string;
url: string;
}
const projects: CommunityProjectProps[] = [
{
title: 'immich-go',
description: `An alternative to the immich-CLI that doesn't depend on nodejs. It specializes in importing Google Photos Takeout archives.`,
url: 'https://github.com/simulot/immich-go',
},
{
title: 'ImmichFrame',
description: 'Run an Immich slideshow in a photo frame.',
url: 'https://github.com/3rob3/ImmichFrame',
},
{
title: 'API Album Sync',
description: 'A Python script to sync folders as albums.',
url: 'https://git.orenit.solutions/open/immichalbumpull',
},
{
title: 'Immich-Tools',
description: 'Provides scripts for handling problems on the repair page.',
url: 'https://github.com/clumsyCoder00/Immich-Tools',
},
{
title: 'Lightroom Publisher: mi.Immich.Publisher',
description: 'Lightroom plugin to publish photos from Lightroom collections to Immich albums.',
url: 'https://github.com/midzelis/mi.Immich.Publisher',
},
{
title: 'Lightroom Immich Plugin: lrc-immich-plugin',
description:
'Lightroom plugin to publish, export photos from Lightroom to Immich. Import from Immich to Lightroom is also supported.',
url: 'https://blog.fokuspunk.de/lrc-immich-plugin/',
},
{
title: 'Immich-Tiktok-Remover',
description: 'Script to search for and remove TikTok videos from your Immich library.',
url: 'https://github.com/mxc2/immich-tiktok-remover',
},
{
title: 'Immich Android TV',
description: 'Unofficial Immich Android TV app.',
url: 'https://github.com/giejay/Immich-Android-TV',
},
{
title: 'Create albums from folders',
description: 'A Python script to create albums based on the folder structure of an external library.',
url: 'https://github.com/Salvoxia/immich-folder-album-creator',
},
{
title: 'Powershell Module PSImmich',
description: 'Powershell Module for the Immich API',
url: 'https://github.com/hanpq/PSImmich',
},
{
title: 'Immich Distribution',
description: 'Snap package for easy install and zero-care auto updates of Immich. Self-hosted photo management.',
url: 'https://immich-distribution.nsg.cc',
},
{
title: 'Immich Kiosk',
description: 'Lightweight slideshow to run on kiosk devices and browsers.',
url: 'https://github.com/damongolding/immich-kiosk',
},
{
title: 'Immich Power Tools',
description: 'Power tools for organizing your immich library.',
url: 'https://github.com/varun-raj/immich-power-tools',
},
{
title: 'Immich Public Proxy',
description:
'Share your Immich photos and albums in a safe way without exposing your Immich instance to the public.',
url: 'https://github.com/alangrainger/immich-public-proxy',
},
{
title: 'Immich Kodi',
description: 'Unofficial Kodi plugin for Immich.',
url: 'https://github.com/vladd11/immich-kodi',
},
{
title: 'Immich Downloader',
description: 'Downloads a configurable number of random photos based on people or album ID.',
url: 'https://github.com/jon6fingrs/immich-dl',
},
{
title: 'Immich Upload Optimizer',
description: 'Automatically optimize files uploaded to Immich in order to save storage space',
url: 'https://github.com/miguelangel-nubla/immich-upload-optimizer',
},
{
title: 'Immich Machine Learning Load Balancer',
description: 'Speed up your machine learning by load balancing your requests to multiple computers',
url: 'https://github.com/apetersson/immich_ml_balancer',
},
{
title: 'Immich Drop Uploader',
description: 'A tiny, zero-login web app for collecting photos/videos from anyone into your Immich server.',
url: 'https://github.com/Nasogaa/immich-drop',
},
{
title: 'Immich Birthday Sync',
description: 'Bulk-upload and -download birthdays, with CardDAV sync support',
url: 'https://github.com/sid3windr/immich-birthday',
},
{
title: 'Immich Stack',
description: 'Auto-stack photos with identical filenames and differing extensions (i.e. JPG+RAW)',
url: 'https://github.com/sid3windr/immich-stack',
},
{
title: 'Immich Stack',
description: 'Automatically groups similar photos into stacks within the Immich photo management system.',
url: 'https://github.com/Majorfi/immich-stack/',
},
];
function CommunityProject({ title, description, url }: CommunityProjectProps): JSX.Element {
return (
<section className="flex flex-col gap-4 justify-between dark:bg-immich-dark-gray bg-immich-gray dark:border-0 border-gray-200 border border-solid rounded-2xl px-4 py-6">
<div className="flex flex-col gap-2">
<p className="m-0 items-start flex gap-2 text-2xl font-bold text-immich-primary dark:text-immich-dark-primary">
<span>{title}</span>
</p>
<p className="m-0 text-sm text-gray-600 dark:text-gray-300">{description}</p>
<p className="m-0 text-sm text-gray-600 dark:text-gray-300 my-4">
<a href={url}>{url}</a>
</p>
</div>
<div className="flex">
<Link
className="px-4 py-2 bg-immich-primary/10 dark:bg-gray-300 rounded-xl text-sm hover:no-underline text-immich-primary dark:text-immich-dark-bg font-semibold"
to={url}
>
View Link
</Link>
</div>
</section>
);
}
export default function CommunityProjects(): JSX.Element {
return (
<div className="grid grid-cols-1 xl:grid-cols-2 gap-4">
{projects.map((project) => (
<CommunityProject {...project} />
))}
</div>
);
}

View File

@@ -1,3 +0,0 @@
export const discordPath =
'M81.15,0c-1.2376,2.1973-2.3489,4.4704-3.3591,6.794-9.5975-1.4396-19.3718-1.4396-28.9945,0-.985-2.3236-2.1216-4.5967-3.3591-6.794-9.0166,1.5407-17.8059,4.2431-26.1405,8.0568C2.779,32.5304-1.6914,56.3725.5312,79.8863c9.6732,7.1476,20.5083,12.603,32.0505,16.0884,2.6014-3.4854,4.8998-7.1981,6.8698-11.0623-3.738-1.3891-7.3497-3.1318-10.8098-5.1523.9092-.6567,1.7932-1.3386,2.6519-1.9953,20.281,9.547,43.7696,9.547,64.0758,0,.8587.7072,1.7427,1.3891,2.6519,1.9953-3.4601,2.0457-7.0718,3.7632-10.835,5.1776,1.97,3.8642,4.2683,7.5769,6.8698,11.0623,11.5419-3.4854,22.3769-8.9156,32.0509-16.0631,2.626-27.2771-4.496-50.9172-18.817-71.8548C98.9811,4.2684,90.1918,1.5659,81.1752.0505l-.0252-.0505ZM42.2802,65.4144c-6.2383,0-11.4159-5.6575-11.4159-12.6535s4.9755-12.6788,11.3907-12.6788,11.5169,5.708,11.4159,12.6788c-.101,6.9708-5.026,12.6535-11.3907,12.6535ZM84.3576,65.4144c-6.2637,0-11.3907-5.6575-11.3907-12.6535s4.9755-12.6788,11.3907-12.6788,11.4917,5.708,11.3906,12.6788c-.101,6.9708-5.026,12.6535-11.3906,12.6535Z';
export const discordViewBox = '0 0 126.644 96';

View File

@@ -27,8 +27,10 @@
/administration/password-login /administration/system-settings 307
/features/search /features/searching 307
/features/smart-search /features/searching 307
/guides/api-album-sync /community-projects 307
/guides/remove-offline-files /community-projects 307
/guides/api-album-sync https://awesome.immich.app/ 307
/guides/remove-offline-files https://awesome.immich.app/ 307
/community-guides https://awesome.immich.app/ 307
/community-projects https://awesome.immich.app/ 307
/overview/introduction /overview/quick-start 307
/overview/welcome /overview/quick-start 307
/docs/* /:splat 307

View File

@@ -1,4 +1,8 @@
[
{
"label": "v2.1.0",
"url": "https://docs.v2.1.0.archive.immich.app"
},
{
"label": "v2.0.1",
"url": "https://docs.v2.0.1.archive.immich.app"

View File

@@ -1 +1 @@
22.20.0
22.21.0

View File

@@ -1,6 +1,6 @@
{
"name": "immich-e2e",
"version": "2.0.1",
"version": "2.1.0",
"description": "",
"main": "index.js",
"type": "module",
@@ -25,7 +25,7 @@
"@playwright/test": "^1.44.1",
"@socket.io/component-emitter": "^3.1.2",
"@types/luxon": "^3.4.2",
"@types/node": "^22.18.8",
"@types/node": "^22.18.12",
"@types/oidc-provider": "^9.0.0",
"@types/pg": "^8.15.1",
"@types/pngjs": "^6.0.4",
@@ -34,7 +34,7 @@
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-unicorn": "^60.0.0",
"exiftool-vendored": "^28.3.1",
"exiftool-vendored": "^31.1.0",
"globals": "^16.0.0",
"jose": "^5.6.3",
"luxon": "^3.4.4",
@@ -52,6 +52,6 @@
"vitest": "^3.0.0"
},
"volta": {
"node": "22.20.0"
"node": "22.21.0"
}
}

View File

@@ -136,6 +136,7 @@ describe('/albums', () => {
expect(body).toEqual({
...user1Albums[0],
assets: [expect.objectContaining({ isFavorite: false })],
contributorCounts: [{ userId: user1.userId, assetCount: 1 }],
lastModifiedAssetTimestamp: expect.any(String),
startDate: expect.any(String),
endDate: expect.any(String),
@@ -310,6 +311,7 @@ describe('/albums', () => {
expect(body).toEqual({
...user1Albums[0],
assets: [expect.objectContaining({ id: user1Albums[0].assets[0].id })],
contributorCounts: [{ userId: user1.userId, assetCount: 1 }],
lastModifiedAssetTimestamp: expect.any(String),
startDate: expect.any(String),
endDate: expect.any(String),
@@ -345,6 +347,7 @@ describe('/albums', () => {
expect(body).toEqual({
...user1Albums[0],
assets: [expect.objectContaining({ id: user1Albums[0].assets[0].id })],
contributorCounts: [{ userId: user1.userId, assetCount: 1 }],
lastModifiedAssetTimestamp: expect.any(String),
startDate: expect.any(String),
endDate: expect.any(String),
@@ -362,6 +365,7 @@ describe('/albums', () => {
expect(body).toEqual({
...user1Albums[0],
assets: [],
contributorCounts: [{ userId: user1.userId, assetCount: 1 }],
assetCount: 1,
lastModifiedAssetTimestamp: expect.any(String),
endDate: expect.any(String),
@@ -382,6 +386,7 @@ describe('/albums', () => {
expect(body).toEqual({
...user2Albums[0],
assets: [],
contributorCounts: [{ userId: user1.userId, assetCount: 1 }],
assetCount: 1,
lastModifiedAssetTimestamp: expect.any(String),
endDate: expect.any(String),

View File

@@ -113,6 +113,7 @@ describe('/server', () => {
importFaces: false,
oauth: false,
oauthAutoLaunch: false,
ocr: false,
passwordLogin: true,
search: true,
sidecar: true,

View File

@@ -582,7 +582,7 @@ describe('/tags', () => {
expect(body).toEqual([expect.objectContaining({ id: userAsset.id, success: true })]);
});
it('should remove duplicate assets only once', async () => {
it.skip('should remove duplicate assets only once', async () => {
const tagA = await create(user.accessToken, { name: 'TagA' });
await tagAssets(
{ id: tagA.id, bulkIdsDto: { ids: [userAsset.id] } },

View File

@@ -1,4 +1,5 @@
import {
JobName,
LoginResponseDto,
createStack,
deleteUserAdmin,
@@ -327,6 +328,8 @@ describe('/admin/users', () => {
{ headers: asBearerAuth(user.accessToken) },
);
await utils.waitForQueueFinish(admin.accessToken, JobName.BackgroundTask);
const { status, body } = await request(app)
.delete(`/admin/users/${user.userId}`)
.send({ force: true })

View File

@@ -442,6 +442,176 @@ describe(`immich upload`, () => {
});
});
describe('immich upload --delete-duplicates', () => {
it('should delete local duplicate files', async () => {
const {
stderr: firstStderr,
stdout: firstStdout,
exitCode: firstExitCode,
} = await immichCli(['upload', `${testAssetDir}/albums/nature/silver_fir.jpg`]);
expect(firstStderr).toContain('{message}');
expect(firstStdout.split('\n')).toEqual(
expect.arrayContaining([expect.stringContaining('Successfully uploaded 1 new asset')]),
);
expect(firstExitCode).toBe(0);
await mkdir(`/tmp/albums/nature`, { recursive: true });
await symlink(`${testAssetDir}/albums/nature/silver_fir.jpg`, `/tmp/albums/nature/silver_fir.jpg`);
// Upload with --delete-duplicates flag
const { stderr, stdout, exitCode } = await immichCli([
'upload',
`/tmp/albums/nature/silver_fir.jpg`,
'--delete-duplicates',
]);
// Check that the duplicate file was deleted
const files = await readdir(`/tmp/albums/nature`);
await rm(`/tmp/albums/nature`, { recursive: true });
expect(files.length).toBe(0);
expect(stdout.split('\n')).toEqual(
expect.arrayContaining([
expect.stringContaining('Found 0 new files and 1 duplicate'),
expect.stringContaining('All assets were already uploaded, nothing to do'),
]),
);
expect(stderr).toContain('{message}');
expect(exitCode).toBe(0);
// Verify no new assets were uploaded
const assets = await getAssetStatistics({}, { headers: asKeyAuth(key) });
expect(assets.total).toBe(1);
});
it('should have accurate dry run with --delete-duplicates', async () => {
const {
stderr: firstStderr,
stdout: firstStdout,
exitCode: firstExitCode,
} = await immichCli(['upload', `${testAssetDir}/albums/nature/silver_fir.jpg`]);
expect(firstStderr).toContain('{message}');
expect(firstStdout.split('\n')).toEqual(
expect.arrayContaining([expect.stringContaining('Successfully uploaded 1 new asset')]),
);
expect(firstExitCode).toBe(0);
await mkdir(`/tmp/albums/nature`, { recursive: true });
await symlink(`${testAssetDir}/albums/nature/silver_fir.jpg`, `/tmp/albums/nature/silver_fir.jpg`);
// Upload with --delete-duplicates and --dry-run flags
const { stderr, stdout, exitCode } = await immichCli([
'upload',
`/tmp/albums/nature/silver_fir.jpg`,
'--delete-duplicates',
'--dry-run',
]);
// Check that the duplicate file was NOT deleted in dry run mode
const files = await readdir(`/tmp/albums/nature`);
await rm(`/tmp/albums/nature`, { recursive: true });
expect(files.length).toBe(1);
expect(stdout.split('\n')).toEqual(
expect.arrayContaining([
expect.stringContaining('Found 0 new files and 1 duplicate'),
expect.stringContaining('Would have deleted 1 local asset'),
]),
);
expect(stderr).toContain('{message}');
expect(exitCode).toBe(0);
// Verify no new assets were uploaded
const assets = await getAssetStatistics({}, { headers: asKeyAuth(key) });
expect(assets.total).toBe(1);
});
it('should work with both --delete and --delete-duplicates flags', async () => {
// First, upload a file to create a duplicate on the server
const {
stderr: firstStderr,
stdout: firstStdout,
exitCode: firstExitCode,
} = await immichCli(['upload', `${testAssetDir}/albums/nature/silver_fir.jpg`]);
expect(firstStderr).toContain('{message}');
expect(firstStdout.split('\n')).toEqual(
expect.arrayContaining([expect.stringContaining('Successfully uploaded 1 new asset')]),
);
expect(firstExitCode).toBe(0);
// Both new and duplicate files
await mkdir(`/tmp/albums/nature`, { recursive: true });
await symlink(`${testAssetDir}/albums/nature/silver_fir.jpg`, `/tmp/albums/nature/silver_fir.jpg`); // duplicate
await symlink(`${testAssetDir}/albums/nature/el_torcal_rocks.jpg`, `/tmp/albums/nature/el_torcal_rocks.jpg`); // new
// Upload with both --delete and --delete-duplicates flags
const { stderr, stdout, exitCode } = await immichCli([
'upload',
`/tmp/albums/nature`,
'--delete',
'--delete-duplicates',
]);
// Check that both files were deleted (new file due to --delete, duplicate due to --delete-duplicates)
const files = await readdir(`/tmp/albums/nature`);
await rm(`/tmp/albums/nature`, { recursive: true });
expect(files.length).toBe(0);
expect(stdout.split('\n')).toEqual(
expect.arrayContaining([
expect.stringContaining('Found 1 new files and 1 duplicate'),
expect.stringContaining('Successfully uploaded 1 new asset'),
expect.stringContaining('Deleting assets that have been uploaded'),
]),
);
expect(stderr).toContain('{message}');
expect(exitCode).toBe(0);
// Verify one new asset was uploaded (total should be 2 now)
const assets = await getAssetStatistics({}, { headers: asKeyAuth(key) });
expect(assets.total).toBe(2);
});
it('should only delete duplicates when --delete-duplicates is used without --delete', async () => {
const {
stderr: firstStderr,
stdout: firstStdout,
exitCode: firstExitCode,
} = await immichCli(['upload', `${testAssetDir}/albums/nature/silver_fir.jpg`]);
expect(firstStderr).toContain('{message}');
expect(firstStdout.split('\n')).toEqual(
expect.arrayContaining([expect.stringContaining('Successfully uploaded 1 new asset')]),
);
expect(firstExitCode).toBe(0);
// Both new and duplicate files
await mkdir(`/tmp/albums/nature`, { recursive: true });
await symlink(`${testAssetDir}/albums/nature/silver_fir.jpg`, `/tmp/albums/nature/silver_fir.jpg`); // duplicate
await symlink(`${testAssetDir}/albums/nature/el_torcal_rocks.jpg`, `/tmp/albums/nature/el_torcal_rocks.jpg`); // new
// Upload with only --delete-duplicates flag
const { stderr, stdout, exitCode } = await immichCli(['upload', `/tmp/albums/nature`, '--delete-duplicates']);
// Check that only the duplicate was deleted, new file should remain
const files = await readdir(`/tmp/albums/nature`);
await rm(`/tmp/albums/nature`, { recursive: true });
expect(files).toEqual(['el_torcal_rocks.jpg']);
expect(stdout.split('\n')).toEqual(
expect.arrayContaining([
expect.stringContaining('Found 1 new files and 1 duplicate'),
expect.stringContaining('Successfully uploaded 1 new asset'),
]),
);
expect(stderr).toContain('{message}');
expect(exitCode).toBe(0);
// Verify one new asset was uploaded (total should be 2 now)
const assets = await getAssetStatistics({}, { headers: asKeyAuth(key) });
expect(assets.total).toBe(2);
});
});
describe('immich upload --skip-hash', () => {
it('should skip hashing', async () => {
const filename = `albums/nature/silver_fir.jpg`;

View File

@@ -119,5 +119,6 @@ export const deviceDto = {
isPendingSyncReset: false,
deviceOS: '',
deviceType: '',
appVersion: null,
},
};

View File

@@ -59,7 +59,7 @@ test.describe('Asset Viewer Navbar', () => {
await page.goto(`/photos/${asset.id}`);
await page.waitForSelector('#immich-asset-viewer');
await page.keyboard.press('f');
await expect(page.locator('#notification-list').getByTestId('message')).toHaveText('Added to favorites');
await expect(page.getByText('Added to favorites')).toBeVisible();
});
});
});

View File

@@ -51,6 +51,6 @@ test.describe('Slideshow', () => {
await expect(page.getByRole('button', { name: 'Exit Slideshow' })).toBeVisible();
await page.keyboard.press('f');
await expect(page.locator('#notification-list')).not.toBeVisible();
await expect(page.getByText('Added to favorites')).not.toBeVisible();
});
});

View File

@@ -38,6 +38,7 @@ test.describe('Registration', () => {
await page.getByRole('button', { name: 'User Privacy' }).click();
await page.getByRole('button', { name: 'Storage Template' }).click();
await page.getByRole('button', { name: 'Backups' }).click();
await page.getByRole('button', { name: 'Mobile App' }).click();
await page.getByRole('button', { name: 'Done' }).click();
// success
@@ -85,6 +86,7 @@ test.describe('Registration', () => {
await page.getByRole('button', { name: 'Theme' }).click();
await page.getByRole('button', { name: 'Language' }).click();
await page.getByRole('button', { name: 'User Privacy' }).click();
await page.getByRole('button', { name: 'Mobile App' }).click();
await page.getByRole('button', { name: 'Done' }).click();
// success

View File

@@ -33,6 +33,7 @@
"add_to_albums": "إضافة الى البومات",
"add_to_albums_count": "إضافه إلى البومات ({count})",
"add_to_shared_album": "إضافة إلى ألبوم مشارك",
"add_upload_to_stack": "اضف رفع الى حزمة",
"add_url": "إضافة رابط",
"added_to_archive": "أُضيفت للأرشيف",
"added_to_favorites": "أُضيفت للمفضلات",

View File

@@ -51,6 +51,9 @@
"backup_keep_last_amount": "Колькасць папярэдніх рэзервовых копій для захавання",
"backup_onboarding_1_description": "зняшняя копія ў воблаку або ў іншым фізічным месцы.",
"backup_onboarding_2_description": "лакальныя копіі на іншых прыладах. Гэта ўключае ў сябе асноўныя файлы і лакальную рэзервовую копію гэтых файлаў.",
"backup_onboarding_3_description": "поўная колькасць копій вашых данных, у тым ліку зыходных файлаў. Гэта ўключае 1 пазаштатную копію і 2 лакальныя копіі.",
"backup_onboarding_description": "<backblaze-link> стратэгія рэзервавання 3-2-1 </backblaze-link> рэкамендавана для аховы вашых данных. Вы павінны захоўваць копіі вашых загружаных фота / відэа гэтак жа добра, як базу данных Immich для вычарпальна поўнага рэзервовага капіявання.",
"backup_onboarding_footer": "Каб атрымаць дадатковую інфармацыю пра рэзервовае капіраванне Immich, звярніцеся да <link>дакументацыі</link>.",
"backup_onboarding_parts_title": "Рэзервовая копія «3-2-1» уключае ў сябе:",
"backup_onboarding_title": "Рэзервовыя копіі",
"backup_settings": "Налады рэзервовага капіявання",
@@ -93,6 +96,8 @@
"image_resolution": "Раздзяляльнасць",
"image_settings": "Налады відарыса",
"image_settings_description": "Кіруйце якасцю і раздзяляльнасцю сгенерыраваных відарысаў",
"image_thumbnail_description": "Маленькая мініяцюра з выдаленымі метададзенымі, якая выкарыстоўваецца пры праглядзе груп фатаграфій, такіх як асноўная хроніка",
"image_thumbnail_quality_description": "Якасць мініяцюр ад 1 да 100. Чым вышэй якасць, тым лепш, але пры гэтым ствараюцца файлы большага памеру і можа знізіцца хуткасць водгуку прыкладання.",
"image_thumbnail_title": "Налады мініяцюр",
"job_concurrency": "{job} канкурэнтнасць",
"job_created": "Заданне створана",
@@ -100,6 +105,8 @@
"job_settings": "Налады заданняў",
"job_settings_description": "Кіраваць наладамі адначасовага (паралельнага) выканання задання",
"job_status": "Становішча задання",
"jobs_delayed": "{jobCount, plural, other {# адкладзена}}",
"jobs_failed": "{jobCount, plural, other {# не выканалася}}",
"library_created": "Створана бібліятэка: {library}",
"library_deleted": "Бібліятэка выдалена",
"library_scanning": "Сканаванне па раскладзе",
@@ -156,6 +163,9 @@
"trash_settings": "Налады сметніцы",
"trash_settings_description": "Кіраванне наладамі сметніцы",
"user_cleanup_job": "Ачыстка карыстальніка",
"user_delete_delay": "Уліковы запіс <b>{user}</b> і актывы будуць запланаваны для канчатковага выдалення праз {delay, plural, one {# дзень} few {# дні} many {# дзён} other {# дзён}}.",
"user_delete_delay_settings_description": "Колькасць дзён пасля выдалення, па заканчэнні якіх уліковы запіс карыстальніка і яго актывы будуць выдаленыя незваротна. Заданне на выдаленне карыстальніка запускаецца апоўначы для праверкі гатоўнасці карыстальнікаў да выдалення. Змены ў гэтым параметры будуць улічаныя пры наступным выкананні.",
"user_delete_immediately": "Уліковы запіс <b>{user}</b> і актывы будуць <b>неадкладна</b> змешчаны ў чаргу на канчатковае выдаленне.",
"user_management": "Кіраванне карыстальнікамі",
"user_password_has_been_reset": "Пароль карыстальніка быў скінуты:",
"user_password_reset_description": "Задайце карыстальніку часовы пароль і паведаміце яму, што пры наступным уваходзе ў сістэму яму трэба будзе змяніць пароль.",

View File

@@ -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,11 @@
"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_clip_model": "CLIP মডেল",
"machine_learning_clip_model_description": "<link>এখানে</link> তালিকাভুক্ত একটি CLIP মডেলের নাম। মনে রাখবেন, মডেল পরিবর্তনের পর সব ছবির জন্য অবশ্যই Smart Search কাজটি আবার চালাতে হবে।",
"machine_learning_duplicate_detection": "পুনরাবৃত্তি সনাক্তকরণ",

View File

@@ -33,6 +33,7 @@
"add_to_albums": "Afegir als àlbums",
"add_to_albums_count": "Afegir als àlbums ({count})",
"add_to_shared_album": "Afegir a un àlbum compartit",
"add_upload_to_stack": "Afegeix la càrrega a la pila",
"add_url": "Afegir URL",
"added_to_archive": "Afegir a l'arxiu",
"added_to_favorites": "Afegit als preferits",

View File

@@ -28,11 +28,12 @@
"add_to_album": "Přidat do alba",
"add_to_album_bottom_sheet_added": "Přidáno do {album}",
"add_to_album_bottom_sheet_already_exists": "Je již v {album}",
"add_to_album_bottom_sheet_some_local_assets": "Některá místní aktiva nebylo možné přidat do alba",
"add_to_album_bottom_sheet_some_local_assets": "Některé místní položky nebylo možné přidat do alba",
"add_to_album_toggle": "Přepnout výběr pro {album}",
"add_to_albums": "Přidat do alb",
"add_to_albums_count": "Přidat do alb ({count})",
"add_to_shared_album": "Přidat do sdíleného alba",
"add_upload_to_stack": "Přidat nahrané do zásobníku",
"add_url": "Přidat URL",
"added_to_archive": "Přidáno do archivu",
"added_to_favorites": "Přidáno do oblíbených",
@@ -129,8 +130,8 @@
"machine_learning_availability_checks_enabled": "Povolit kontroly dostupnosti",
"machine_learning_availability_checks_interval": "Interval kontrol",
"machine_learning_availability_checks_interval_description": "Interval v milisekundách mezi kontrolami dostupnosti",
"machine_learning_availability_checks_timeout": "Vypršení požadavku",
"machine_learning_availability_checks_timeout_description": "Časové vypršení požadavku v milisekundách u kontrol dostupnosti",
"machine_learning_availability_checks_timeout": "Časový limit požadavku",
"machine_learning_availability_checks_timeout_description": "Časový limit v milisekundách pro kontrolu dostupnosti",
"machine_learning_clip_model": "Model CLIP",
"machine_learning_clip_model_description": "Název CLIP modelu je uvedený <link>zde</link>. Pamatujte, že při změně modelu je nutné znovu spustit úlohu 'Chytré vyhledávání' pro všechny obrázky.",
"machine_learning_duplicate_detection": "Kontrola duplicit",

View File

@@ -651,7 +651,7 @@
"cast": "Caste",
"cast_description": "Konfigurer tilgængelige cast destinationer",
"change_date": "Ændr dato",
"change_description": "Beskrivelse af ændringer",
"change_description": "Ændr beskrivelse",
"change_display_order": "Ændrer visningsrækkefølge",
"change_expiration_time": "Ændr udløbstidspunkt",
"change_location": "Ændr sted",
@@ -1385,7 +1385,7 @@
"no_albums_message": "Opret et album for at organisere dine billeder og videoer",
"no_albums_with_name_yet": "Det ser ud til, at du ikke har noget album med dette navn endnu.",
"no_albums_yet": "Det ser ud til, at du ikke har nogen album endnu.",
"no_archived_assets_message": "Arkivér billeder og videoer for at gemme dem væk fra din Billede oversigt",
"no_archived_assets_message": "Arkivér billeder og videoer for at gemme dem væk fra din billedoversigt",
"no_assets_message": "KLIK FOR AT UPLOADE DIT FØRSTE BILLEDE",
"no_assets_to_show": "Ingen elementer at vise",
"no_cast_devices_found": "Ingen Cast-enheder fundet",

View File

@@ -33,6 +33,7 @@
"add_to_albums": "Zu Alben hinzufügen",
"add_to_albums_count": "Zu Alben hinzufügen ({count})",
"add_to_shared_album": "Zu geteiltem Album hinzufügen",
"add_upload_to_stack": "Upload zum Stapel hinzufügen",
"add_url": "URL hinzufügen",
"added_to_archive": "Zum Archiv hinzugefügt",
"added_to_favorites": "Zu Favoriten hinzugefügt",
@@ -48,14 +49,14 @@
"background_task_job": "Hintergrundaufgaben",
"backup_database": "Datenbanksicherung erstellen",
"backup_database_enable_description": "Datenbank regelmäßig sichern",
"backup_keep_last_amount": "Anzahl der aufzubewahrenden früheren Backups",
"backup_keep_last_amount": "Anzahl der aufzubewahrenden früheren Sicherungen",
"backup_onboarding_1_description": "Offsite-Kopie in der Cloud oder an einem anderen physischen Ort.",
"backup_onboarding_2_description": "Lokale Kopien auf verschiedenen Geräten. Dazu gehören die Hauptdateien und eine lokale Sicherung dieser Dateien.",
"backup_onboarding_3_description": "3 komplette Kopien deiner Daten, inkl. der Originaldateien. Dies umfasst 1 Kopie an einem anderen Ort und 2 lokale Kopie.",
"backup_onboarding_description": "Eine <backblaze-link>3-2-1 Backup-Strategie</backblaze-link> wird empfohlen, um deine Daten zu schützen. Du solltest sowohl Kopien deiner hochgeladenen Fotos/Videos als auch der Immich-Datenbank aufbewahren, um eine umfassende Backup-Lösung zu haben.",
"backup_onboarding_2_description": "lokale Kopien auf verschiedenen Geräten. Dazu gehören die Hauptdateien und eine lokale Sicherung dieser Dateien.",
"backup_onboarding_3_description": "Kopien deiner Daten inklusive Originaldateien. Dies umfasst 1 Kopie an einem anderen Ort und 2 lokale Kopien.",
"backup_onboarding_description": "Eine <backblaze-link>3-2-1 Sicherungssrategie</backblaze-link> wird empfohlen, um deine Daten zu schützen. Du solltest sowohl Kopien deiner hochgeladenen Fotos/Videos als auch der Immich-Datenbank aufbewahren, um eine umfassende Sicherungslösung zu haben.",
"backup_onboarding_footer": "Weitere Informationen zum Sichern von Immich findest du in der <link>Dokumentation</link>.",
"backup_onboarding_parts_title": "Eine 3-2-1-Sicherung umfasst:",
"backup_onboarding_title": "Backups",
"backup_onboarding_title": "Sicherungen",
"backup_settings": "Einstellungen für Datenbanksicherung",
"backup_settings_description": "Einstellungen zur regelmäßigen Sicherung der Datenbank. Hinweis: Diese Jobs werden nicht überwacht und du wirst nicht über Fehler informiert.",
"cleared_jobs": "Folgende Aufgaben zurückgesetzt: {job}",
@@ -67,9 +68,9 @@
"confirm_user_password_reset": "Bist du sicher, dass du das Passwort für {user} zurücksetzen möchtest?",
"confirm_user_pin_code_reset": "Bist du sicher, dass du den PIN Code von {user} zurücksetzen möchtest?",
"create_job": "Aufgabe erstellen",
"cron_expression": "Cron Zeitangabe",
"cron_expression_description": "Setze ein Intervall für die Sicherung mittels cron. Hilfe mit dem Format bietet dir dabei z. B. der <link>Crontab Guru</link>",
"cron_expression_presets": "Nützliche Zeitangaben für Cron",
"cron_expression": "Cron-Zeitangabe",
"cron_expression_description": "Setze das Scanintervall im Cron-Format. Hilfe mit dem Format bietet dir dabei z. B. der <link>Crontab Guru</link>",
"cron_expression_presets": "Vorlagen für Cron-Zeitangabe",
"disable_login": "Login deaktivieren",
"duplicate_detection_job_description": "Diese Aufgabe führt das maschinelle Lernen für jede Datei aus, um Duplikate zu finden. Diese Aufgabe beruht auf der intelligenten Suche",
"exclusion_pattern_description": "Mit Ausschlussmustern können Dateien und Ordner beim Scannen Ihrer Bibliothek ignoriert werden. Dies ist nützlich, wenn du Ordner hast, die Dateien enthalten, die du nicht importieren möchtest, wie z. B. RAW-Dateien.",
@@ -286,13 +287,13 @@
"storage_template_user_label": "<code>{label}</code> 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",
@@ -538,18 +539,18 @@
"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_connection_failed_message": "Es konnte keine Verbindung zum Server hergestellt werden. Erneuter Versuch…",
@@ -599,7 +600,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. Backup kann nicht verarbeitet 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",
@@ -1038,6 +1039,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",
@@ -1954,7 +1956,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}",

View File

@@ -33,6 +33,7 @@
"add_to_albums": "Προσθήκη στα άλμπουμ",
"add_to_albums_count": "Προσθήκη στα άλμπουμ ({count})",
"add_to_shared_album": "Προσθήκη σε κοινόχρηστο άλμπουμ",
"add_upload_to_stack": "Προσθήκη αρχείου στην ουρά",
"add_url": "Προσθήκη Συνδέσμου",
"added_to_archive": "Προστέθηκε στο αρχείο",
"added_to_favorites": "Προστέθηκε στα αγαπημένα",

View File

@@ -120,7 +120,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.",
@@ -154,6 +154,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",
@@ -211,6 +223,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",
@@ -243,6 +257,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",
@@ -333,7 +348,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",
@@ -351,7 +366,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",
@@ -402,11 +417,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",
@@ -466,10 +481,14 @@
"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",
@@ -553,6 +572,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…",
@@ -662,6 +682,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",
@@ -688,8 +710,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",
@@ -701,7 +723,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",
@@ -740,6 +761,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",
@@ -769,6 +791,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",
@@ -883,7 +906,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?",
@@ -1078,6 +1100,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",
@@ -1117,11 +1140,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",
@@ -1242,6 +1264,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",
@@ -1346,6 +1369,8 @@
"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",
@@ -1364,6 +1389,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",
@@ -1373,6 +1400,7 @@
"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",
@@ -1423,6 +1451,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",
@@ -1527,6 +1558,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",
@@ -1544,13 +1578,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",
@@ -1667,6 +1697,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",
@@ -1685,6 +1716,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",
@@ -1701,6 +1733,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...",
@@ -1717,6 +1752,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",
@@ -1779,6 +1815,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",
@@ -1807,6 +1844,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",
@@ -1986,6 +2025,7 @@
"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",
"timeline": "Timeline",
"timezone": "Timezone",
@@ -2018,6 +2058,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",

View File

@@ -33,6 +33,7 @@
"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",
@@ -599,7 +600,7 @@
"backup_controller_page_turn_on": "Activar la copia de seguridad",
"backup_controller_page_uploading_file_info": "Subiendo información del archivo",
"backup_err_only_album": "No se puede eliminar el único álbum",
"backup_error_sync_failed": "Sincronización falló. No es posible procesar la copia de seguridad.",
"backup_error_sync_failed": "La sincronización falló. No es posible procesar la copia de seguridad.",
"backup_info_card_assets": "elementos",
"backup_manual_cancelled": "Cancelado",
"backup_manual_in_progress": "Subida ya en progreso. Vuelve a intentarlo más tarde",

View File

@@ -33,6 +33,7 @@
"add_to_albums": "Lisa albumitesse",
"add_to_albums_count": "Lisa albumitesse ({count})",
"add_to_shared_album": "Lisa jagatud albumisse",
"add_upload_to_stack": "Virnasta üleslaaditud üksus",
"add_url": "Lisa URL",
"added_to_archive": "Lisatud arhiivi",
"added_to_favorites": "Lisatud lemmikutesse",
@@ -599,6 +600,7 @@
"backup_controller_page_turn_on": "Lülita esiplaanil varundus sisse",
"backup_controller_page_uploading_file_info": "Faili info üleslaadimine",
"backup_err_only_album": "Ei saa ainsat albumit eemaldada",
"backup_error_sync_failed": "Sünkroonimine ebaõnnestus. Varundust ei saa töödelda.",
"backup_info_card_assets": "üksused",
"backup_manual_cancelled": "Tühistatud",
"backup_manual_in_progress": "Üleslaadimine juba käib. Proovi hiljem uuesti",
@@ -1037,6 +1039,7 @@
"exif_bottom_sheet_description_error": "Viga kirjelduse muutmisel",
"exif_bottom_sheet_details": "ÜKSIKASJAD",
"exif_bottom_sheet_location": "ASUKOHT",
"exif_bottom_sheet_no_description": "Kirjeldus puudub",
"exif_bottom_sheet_people": "ISIKUD",
"exif_bottom_sheet_person_add_person": "Lisa nimi",
"exit_slideshow": "Sulge slaidiesitlus",
@@ -1323,7 +1326,7 @@
"marked_all_as_read": "Kõik märgiti loetuks",
"matches": "Ühtivad failid",
"matching_assets": "Ühtivad üksused",
"media_type": "Meediumi tüüp",
"media_type": "Üksuse tüüp",
"memories": "Mälestused",
"memories_all_caught_up": "Ongi kõik",
"memories_check_back_tomorrow": "Vaata homme juba uusi mälestusi",
@@ -1406,6 +1409,7 @@
"no_results_description": "Proovi sünonüümi või üldisemat märksõna",
"no_shared_albums_message": "Lisa album, et fotosid ja videosid teistega jagada",
"no_uploads_in_progress": "Üleslaadimisi käimas ei ole",
"not_available": "Pole saadaval",
"not_in_any_album": "Pole üheski albumis",
"not_selected": "Ei ole valitud",
"note_apply_storage_label_to_previously_uploaded assets": "Märkus: Et rakendada talletussilt varem üleslaaditud üksustele, käivita",
@@ -1583,6 +1587,7 @@
"purchase_server_description_2": "Toetaja staatus",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "Serveri tootevõtit haldab administraator",
"query_asset_id": "Päringu üksuse ID",
"queue_status": "Järjekorras {count}/{total}",
"rating": "Hinnang",
"rating_clear": "Tühjenda hinnang",
@@ -1710,8 +1715,8 @@
"search_filter_filename": "Otsi failinime alusel",
"search_filter_location": "Asukoht",
"search_filter_location_title": "Vali asukoht",
"search_filter_media_type": "Meediumi tüüp",
"search_filter_media_type_title": "Vali meediumi tüüp",
"search_filter_media_type": "Üksuse tüüp",
"search_filter_media_type_title": "Vali üksuse tüüp",
"search_filter_people_title": "Vali isikud",
"search_for": "Otsi",
"search_for_existing_person": "Otsi olemasolevat isikut",

View File

@@ -28,6 +28,7 @@
"add_to_album": "Lisää albumiin",
"add_to_album_bottom_sheet_added": "Lisätty albumiin {album}",
"add_to_album_bottom_sheet_already_exists": "Kohde on jo albumissa {album}",
"add_to_album_bottom_sheet_some_local_assets": "Joitakin osia paikallisesta sisällöstä ei pystytty lisämään albumiin",
"add_to_album_toggle": "Vaihda albumin {album} valintaa",
"add_to_albums": "Lisää albumeihin",
"add_to_albums_count": "Lisää albumeihin ({count})",
@@ -39,7 +40,7 @@
"admin": {
"add_exclusion_pattern_description": "Lisää mallit, jonka mukaan jätetään tiedostoja pois. Jokerimerkit *, ** ja ? ovat tuettuna. Jättääksesi pois kaikki tiedostot mistä tahansa löytyvästä kansiosta \"Raw\" käytä \"**/Raw/**\". Jättääksesi pois kaikki \". tif\" päätteiset tiedot, käytä \"**/*.tif\". Jättääksesi pois tarkan tiedostopolun, käytä \"/path/to/ignore/**\".",
"admin_user": "Ylläpitäjä",
"asset_offline_description": "Ulkoista kirjaston resurssia ei enää löydy levyltä, ja se on siirretty roskakoriin. Jos tiedosto siirrettiin kirjaston sisällä, tarkista aikajanaltasi uusi vastaava resurssi. Palautaaksesi tämän resurssin, varmista, että alla oleva tiedostopolku on Immichin käytettävissä ja skannaa kirjasto uudelleen.",
"asset_offline_description": "Ulkoista kirjaston resurssia ei enää löydy levyltä, ja se on siirretty roskakoriin. Jos tiedosto siirrettiin kirjaston sisällä, tarkista aikajanaltasi uusi vastaava resurssi. Palauttaaksesi tämän resurssin, varmista, että alla oleva tiedostopolku on Immichin käytettävissä ja skannaa kirjasto uudelleen.",
"authentication_settings": "Autentikointiasetukset",
"authentication_settings_description": "Hallitse salasana-, OAuth- ja muut autentikoinnin asetukset",
"authentication_settings_disable_all": "Haluatko varmasti poistaa kaikki kirjautumistavat käytöstä? Kirjautuminen on tämän jälkeen mahdotonta.",
@@ -149,7 +150,7 @@
"machine_learning_max_recognition_distance": "Suurin kasvojen eroavaisuus",
"machine_learning_max_recognition_distance_description": "Kahden kasvon suurin eroavaisuus, milloin ne vielä mielletään samaksi henkilöksi, välillä 0-2. Arvoa alentamalla voidaan ehkäistä kahden saman näköisen henkilön mieltäminen samaksi henkilöksi, kun taas korottamalla voidaan ehkäistä saman henkilön mieltäminen kahdeksi erilliseksi henkilöksi. Huomaa että on helpompaa yhdistää kaksi, kuin erottaa, joten suosi mahdollisimman matalaa arvoa.",
"machine_learning_min_detection_score": "Tunnistuksen vähimmäistulos",
"machine_learning_min_detection_score_description": "Pienin kasvojen tunnistamisessa saatu vahvuusarvo välillä 0-1. Matalammalla arvolla havaitaan enemmän kascoja, mutta voi lisätä virhearvioiden määrää.",
"machine_learning_min_detection_score_description": "Pienin kasvojen tunnistamisessa saatu vahvuusarvo välillä 0-1. Matalammalla arvolla havaitaan enemmän kasvoja, mutta voi lisätä virhearvioiden määrää.",
"machine_learning_min_recognized_faces": "Tunnistettujen kasvojen vähimmäismäärä",
"machine_learning_min_recognized_faces_description": "Luotavan käyttäjän kasvojen vähimmäismäärä. Arvoa nostamalla kasvojentunnistuksen tarkkuus paranee, mutta todennäköisyys sille, että kasvoja ei osata yhdistää henkilöön kasvaa.",
"machine_learning_settings": "Koneoppimisen asetukset",
@@ -183,7 +184,7 @@
"metadata_settings": "Metatietoasetukset",
"metadata_settings_description": "Hallitse metatietoja",
"migration_job": "Migraatio",
"migration_job_description": "Migroi aineiston pikkukuvat ja kasvot uusimpaan kansiorakenteeseen",
"migration_job_description": "Migratoi aineiston pikkukuvat ja kasvot uusimpaan kansiorakenteeseen",
"nightly_tasks_cluster_faces_setting_description": "Aja kasvojen tunnistus uusiin tunnistettuihin kasvoihin",
"nightly_tasks_cluster_new_faces_setting": "Kokoa uudet kasvot",
"nightly_tasks_database_cleanup_setting": "Tietokannan puhdistuksen tehtävät",
@@ -203,7 +204,7 @@
"note_apply_storage_label_previous_assets": "Huom: Asettaaksesi nimikkeen aiemmin ladatulle aineistolle, aja",
"note_cannot_be_changed_later": "Huom: Tätä ei voi enää myöhemmin vaihtaa!",
"notification_email_from_address": "Lähettäjän osoite",
"notification_email_from_address_description": "Lähettäjän sähköpostiosoite. Esimerkiksi \"Immich-kuvapalvelin <noreply@example.com>\". Varmista, että käytetystä osoiteesta on lupa lähettää sähköposteja.",
"notification_email_from_address_description": "Lähettäjän sähköpostiosoite. Esimerkiksi \"Immich-kuvapalvelin <noreply@example.com>\". Varmista, että käytetystä osoitteesta on lupa lähettää sähköposteja.",
"notification_email_host_description": "Sähköpostipalvelin (esim. smtp.immich.app)",
"notification_email_ignore_certificate_errors": "Älä huomioi varmennevirheitä",
"notification_email_ignore_certificate_errors_description": "Älä huomioi TLS-varmenteiden validointivirheitä (ei suositeltu)",
@@ -225,9 +226,9 @@
"oauth_button_text": "Painikkeen teksti",
"oauth_client_secret_description": "Vaaditaan, jos OAuth-palveluntarjoaja ei tue PKCE:tä (Proof Key for Code Exchange)",
"oauth_enable_description": "Kirjaudu käyttäen OAuthia",
"oauth_mobile_redirect_uri": "Mobiilin uudellenohjaus-URI",
"oauth_mobile_redirect_uri": "Mobiilin uudelleenohjaus-URI",
"oauth_mobile_redirect_uri_override": "Ohita mobiilin uudelleenohjaus-URI",
"oauth_mobile_redirect_uri_override_description": "Ota käyttöön kun OAuth tarjoaja ei salli mobiili URI:a, kuten ''{callback}''",
"oauth_mobile_redirect_uri_override_description": "Ota käyttöön kun OAuth-tarjoaja ei salli mobiili-URI:a, kuten ''{callback}''",
"oauth_role_claim": "Roolin vaatimus",
"oauth_role_claim_description": "Salli pääkäyttäjän pääsyoikeus automaattisesti tämän vaatimuksen perusteella. Vaatimus voi sisältää, joko 'käyttäjän' tai 'pääkäyttäjän'.",
"oauth_settings": "OAuth",
@@ -278,7 +279,7 @@
"storage_template_migration_info": "Tallennusmalli muuntaa kaikki tiedostopäätteet pieniksi kirjaimiksi. Mallipohjan muutokset koskevat vain uusia resursseja. Jos haluat käyttää mallipohjaa takautuvasti aiemmin ladattuihin resursseihin, suorita <link>{job}</link>.",
"storage_template_migration_job": "Tallennustilan mallin muutostyö",
"storage_template_more_details": "Saadaksesi lisätietoa tästä ominaisuudesta, katso <template-link>Tallennustilan Mallit</template-link> sekä <implications-link>mihin se vaikuttaa</implications-link>",
"storage_template_onboarding_description_v2": "Päälle kytkettynä, toiminto järjestestelee tiedostot automaattisesti käyttäjän määrittämän mallin mukaisesti. Lisätietoja <link>dokumentaatiosta</link>..",
"storage_template_onboarding_description_v2": "Päälle kytkettynä toiminto järjestelee tiedostot automaattisesti käyttäjän määrittämän mallin mukaisesti. Lisätietoja <link>dokumentaatiosta</link>..",
"storage_template_path_length": "Arvioitu tiedostopolun pituusrajoitus: <b>{length, number}</b>/{limit, number}",
"storage_template_settings": "Tallennustilan malli",
"storage_template_settings_description": "Hallitse palvelimelle ladatun aineiston kansiorakennetta ja tiedostonimiä",
@@ -301,17 +302,17 @@
"thumbnail_generation_job": "Luo pikkukuvat",
"thumbnail_generation_job_description": "Generoi isot, pienet sekä sumeat pikkukuvat jokaisesta aineistosta, kuten myös henkilöistä",
"transcoding_acceleration_api": "Kiihdytysrajapinta",
"transcoding_acceleration_api_description": "Rajapinta, jolla keskustellaan laittesi kanssa nopeuttaaksemme koodausta. Tämä asetus on paras mahdollinen: Mikäli ongelmia ilmenee, palataan käyttämään ohjelmistopohjaista koodausta. VP9 voi toimia tai ei, riippuen laitteistosi kokoonpanosta.",
"transcoding_acceleration_api_description": "Rajapinta, jolla keskustellaan laitteesi kanssa nopeuttaaksemme koodausta. Tämä asetus on paras mahdollinen: Mikäli ongelmia ilmenee, palataan käyttämään ohjelmistopohjaista koodausta. VP9 voi toimia tai ei, riippuen laitteistosi kokoonpanosta.",
"transcoding_acceleration_nvenc": "NVENC (vaatii NVIDIA:n grafiikkasuorittimen)",
"transcoding_acceleration_qsv": "Quick Sync (Vaatii vähintään gen7 Intel prosessorin)",
"transcoding_acceleration_rkmpp": "RKMPP (vain Rockchip SOCt)",
"transcoding_acceleration_vaapi": "VAAPI",
"transcoding_accepted_audio_codecs": "Sallitut äänikoodekit",
"transcoding_accepted_audio_codecs_description": "Valitse mitä äänikoodekkeja ei tarvitse muuntaa. Käytetään vain tiettyjen koodauskäytäntöjen kanssa.",
"transcoding_accepted_containers": "Hyväksytyt kontit",
"transcoding_accepted_containers_description": "Valitse, mitä formaatteja ei tarvitse kääntää MP4- muotoon. Käytössä vain tietyille muunnos säännöille.",
"transcoding_accepted_audio_codecs_description": "Valitse, mitä äänikoodekkeja ei tarvitse muuntaa. Käytetään vain tiettyjen koodauskäytäntöjen kanssa.",
"transcoding_accepted_containers": "Sallitut säiliömuodot",
"transcoding_accepted_containers_description": "Valitse, mitä säiliömuotoja ei tarvitse muuntaa MP4-muotoon. Käytetään vain tiettyjen koodauskäytäntöjen kanssa.",
"transcoding_accepted_video_codecs": "Sallitut videokoodekit",
"transcoding_accepted_video_codecs_description": "Valitse mitä videokoodekkeja ei tarvitse muuntaa. Käytetään vain tiettyjen koodauskäytäntöjen kanssa.",
"transcoding_accepted_video_codecs_description": "Valitse, mitä videokoodekkeja ei tarvitse muuntaa. Käytetään vain tiettyjen koodauskäytäntöjen kanssa.",
"transcoding_advanced_options_description": "Asetukset, joita useimpien käyttäjien ei tulisi muuttaa",
"transcoding_audio_codec": "Äänikoodekki",
"transcoding_audio_codec_description": "Opus on paras laadultaan, mutta ei välttämättä ole yhteensopiva vanhempien laitteiden tai sovellusten kanssa.",
@@ -338,7 +339,7 @@
"transcoding_policy": "Transkoodauskäytäntö",
"transcoding_policy_description": "Aseta milloin video transkoodataan",
"transcoding_preferred_hardware_device": "Ensisijainen laite",
"transcoding_preferred_hardware_device_description": "On voimassa vain VAAPI ja QSV -määritteille. Asettaa laitteistokoodauksessa käytetyn DRI noodin.",
"transcoding_preferred_hardware_device_description": "On voimassa vain VAAPI- ja QSV-määritteille. Asettaa laitteistokoodauksessa käytetyn DRI-noodin.",
"transcoding_preset_preset": "Esiasetus (-asetus)",
"transcoding_preset_preset_description": "Pakkausnopeus. Hitaampi tuottaa pienempiä tiedostoja ja parantaa laatua, kun kohdistetaan tiettyyn bittinopeuteen. VP9 ei huomioi korkeampaa kuin 'faster'.",
"transcoding_reference_frames": "Kehysviitteet",
@@ -355,7 +356,7 @@
"transcoding_tone_mapping": "Sävykartoitus",
"transcoding_tone_mapping_description": "Pyrkii säilömään HDR-kuvien ulkonäön, kun muunnetaan peruskuvaksi. Jokaisella algoritmilla on omat heikkoutensa värien, yksityiskohtien tai kirkkauksien kesken. Hable säilöö yksityiskohdat, Mobius värit ja Reinhard kirkkaudet.",
"transcoding_transcode_policy": "Transkoodauskäytäntö",
"transcoding_transcode_policy_description": "Käytäntö miten video tulisi transkoodata. HDR videot transkoodataan aina, paitsi jos transkoodaus on poistettu käytöstä.",
"transcoding_transcode_policy_description": "Käytäntö, miten video tulisi transkoodata. HDR-videot transkoodataan aina, paitsi jos transkoodaus on poistettu käytöstä.",
"transcoding_two_pass_encoding": "Two-pass enkoodaus",
"transcoding_two_pass_encoding_setting_description": "Transkoodaa kahdessa vaiheessa tuottaaksesi paremmin koodattuja videoita. Kun maksimibittinopeus on käytössä (vaaditaan H.264- ja HEVC-koodaukselle), tämä tila käyttää bittinopeusaluetta, joka perustuu maksimibittinopeuteen ja ohittaa CRF. VP9 osalta CRF:ää voidaan käyttää, jos maksimibittinopeus on poistettu käytöstä.",
"transcoding_video_codec": "Videokoodekki",
@@ -435,7 +436,7 @@
"album_updated_setting_description": "Saa sähköpostia kun jaetussa albumissa on uutta sisältöä",
"album_user_left": "Poistuttiin albumista {album}",
"album_user_removed": "{user} poistettu",
"album_viewer_appbar_delete_confirm": "Haluatko varmast poistaa tämän albumin tililtäsi?",
"album_viewer_appbar_delete_confirm": "Haluatko varmasti poistaa tämän albumin tililtäsi?",
"album_viewer_appbar_share_err_delete": "Albumin poistaminen epäonnistui",
"album_viewer_appbar_share_err_leave": "Albumista poistuminen epäonnistui",
"album_viewer_appbar_share_err_remove": "Ongelmia kohteiden poistamisessa albumista",
@@ -481,7 +482,7 @@
"archived_count": "{count, plural, other {Arkistoitu #}}",
"are_these_the_same_person": "Ovatko he sama henkilö?",
"are_you_sure_to_do_this": "Haluatko varmasti tehdä tämän?",
"asset_action_delete_err_read_only": "Vain luku-tilassa olevia kohteita ei voitu poistaa, ohitetaan",
"asset_action_delete_err_read_only": "Vain luku -tilassa olevia kohteita ei voitu poistaa, ohitetaan",
"asset_action_share_err_offline": "Verkottomassa tilassa olevia kohteita ei voitu noutaa, ohitetaan",
"asset_added_to_album": "Lisätty albumiin",
"asset_adding_to_album": "Lisätään albumiin…",
@@ -503,6 +504,7 @@
"asset_skipped": "Ohitettu",
"asset_skipped_in_trash": "Roskakorissa",
"asset_trashed": "Kohde poistettu",
"asset_troubleshoot": "Sisällön vian paikannus",
"asset_uploaded": "Lähetetty",
"asset_uploading": "Ladataan…",
"asset_viewer_settings_subtitle": "Galleriakatseluohjelman asetusten hallinta",
@@ -510,7 +512,7 @@
"assets": "Kohteet",
"assets_added_count": "Lisätty {count, plural, one {# kohde} other {# kohdetta}}",
"assets_added_to_album_count": "Albumiin lisätty {count, plural, one {# kohde} other {# kohdetta}}",
"assets_added_to_albums_count": "Lisätty {assetTotal, plural, one {# aineisto} other {# aaineistoa}} {albumTotal, plural, one {# albumiin} other {# albumeihin}}",
"assets_added_to_albums_count": "Lisätty {assetTotal, plural, one {# kohde} other {# kohdetta}} {albumTotal, plural, one {# albumiin} other {# albumiin}}",
"assets_cannot_be_added_to_album_count": "{count, plural, one {Kohdetta} other {Kohdetta}} ei voida lisätä albumiin",
"assets_cannot_be_added_to_albums": "{count, plural, one {Aineisto} other {Aineistoa}} ei voi lisätä mihinkään albumiin",
"assets_count": "{count, plural, one {# media} other {# mediaa}}",
@@ -547,6 +549,7 @@
"backup_album_selection_page_select_albums": "Valitse albumit",
"backup_album_selection_page_selection_info": "Valintatiedot",
"backup_album_selection_page_total_assets": "Ainulaatuisia kohteita yhteensä",
"backup_albums_sync": "Varmuuskopioitujen albumeiden synkronointi",
"backup_all": "Kaikki",
"backup_background_service_backup_failed_message": "Kohteiden varmuuskopiointi epäonnistui. Yritetään uudelleen…",
"backup_background_service_connection_failed_message": "Palvelimeen ei saatu yhteyttä. Yritetään uudelleen…",
@@ -596,7 +599,8 @@
"backup_controller_page_turn_on": "Varmuuskopiointi päälle",
"backup_controller_page_uploading_file_info": "Tiedostojen lähetystiedot",
"backup_err_only_album": "Vähintään yhden albumin tulee olla valittuna",
"backup_info_card_assets": "kohteet",
"backup_error_sync_failed": "Synkronointi epäonnistui. Varmuuskopion käsittely ei onnistu.",
"backup_info_card_assets": "kohdetta",
"backup_manual_cancelled": "Peruutettu",
"backup_manual_in_progress": "Lähetys palvelimelle on jo käynnissä. Kokeile myöhemmin uudelleen",
"backup_manual_success": "Onnistui",
@@ -631,7 +635,7 @@
"cache_settings_statistics_thumbnail": "Esikatselukuvat",
"cache_settings_statistics_title": "Välimuistin käyttö",
"cache_settings_subtitle": "Hallitse Immich-mobiilisovelluksen välimuistin käyttöä",
"cache_settings_tile_subtitle": "Hallitse paikallista tallenustilaa",
"cache_settings_tile_subtitle": "Hallitse paikallista tallennustilaa",
"cache_settings_tile_title": "Paikallinen tallennustila",
"cache_settings_title": "Välimuistin asetukset",
"camera": "Kamera",
@@ -663,6 +667,8 @@
"change_pin_code": "Vaihda PIN-koodi",
"change_your_password": "Vaihda salasanasi",
"changed_visibility_successfully": "Näkyvyys vaihdettu",
"charging": "Ladataan laitetta",
"charging_requirement_mobile_backup": "Varmuuskopiointi taustalla vaatii laitteen latautumista",
"check_corrupt_asset_backup": "Vioittuneiden varmuuskopioiden tarkistaminen",
"check_corrupt_asset_backup_button": "Suorita tarkistus",
"check_corrupt_asset_backup_description": "Suorita tämä tarkistus vain Wi-Fi-yhteyden kautta ja vasta, kun kaikki kohteet on varmuuskopioitu. Toimenpide voi kestää muutamia minuutteja.",
@@ -749,6 +755,7 @@
"create_user": "Luo käyttäjä",
"created": "Luotu",
"created_at": "Luotu",
"creating_linked_albums": "Luodaan linkattuja albumeita...",
"crop": "Rajaa",
"curated_object_page_title": "Asiat",
"current_device": "Nykyinen laite",
@@ -773,7 +780,7 @@
"deduplication_criteria_1": "Kuvan koko tavuina",
"deduplication_criteria_2": "EXIF-datan määrä",
"deduplication_info": "Deduplikaatiotieto",
"deduplication_info_description": "Jotta voimme automaattisesti esivalita aineistot ja poistaa duplikaatit suurina erinä, tarkastelemme:",
"deduplication_info_description": "Jotta voimme automaattisesti esivalita aineistot ja poistaa kaksoiskappaleet suurina erinä, tarkastelemme:",
"default_locale": "Oletuskieliasetus",
"default_locale_description": "Muotoile päivämäärät ja numerot selaimesi kielen mukaan",
"delete": "Poista",
@@ -848,7 +855,7 @@
"downloading_media": "Median lataaminen",
"drop_files_to_upload": "Pudota tiedostot mihin tahansa ladataksesi ne",
"duplicates": "Kaksoiskappaleet",
"duplicates_description": "Selvitä jokaisen kohdalla mitkä (jos yksikään) ovat kaksoiskappaleita",
"duplicates_description": "Selvitä jokaisen kohdalla mitkä (jos mitkään) ovat kaksoiskappaleita",
"duration": "Kesto",
"edit": "Muokkaa",
"edit_album": "Muokkaa albumia",
@@ -898,7 +905,9 @@
"error": "Virhe",
"error_change_sort_album": "Albumin lajittelujärjestyksen muuttaminen epäonnistui",
"error_delete_face": "Virhe kasvojen poistamisessa kohteesta",
"error_getting_places": "Ongelma paikkojen haussa",
"error_loading_image": "Kuvan lataus ei onnistunut",
"error_loading_partners": "Ongelma partnerin haussa: {error}",
"error_saving_image": "Virhe: {error}",
"error_tag_face_bounding_box": "Kasvojen merkitseminen epäonnistui rajausruudun koordinaatteja ei löydy",
"error_title": "Virhe - Jotain meni pieleen",
@@ -1058,11 +1067,12 @@
"failed_to_load_folder": "Kansion lataaminen epäonnistui",
"favorite": "Suosikki",
"favorite_action_prompt": "{count} lisätty suosikkeihin",
"favorite_or_unfavorite_photo": "Suosikki- tai ei-suosikkikuva",
"favorite_or_unfavorite_photo": "Lisää tai poista kuva suosikeista",
"favorites": "Suosikit",
"favorites_page_no_favorites": "Suosikkikohteita ei löytynyt",
"feature_photo_updated": "Kansikuva ladattu",
"features": "Ominaisuudet",
"features_in_development": "Kehityksessä olevat ominaisuudet",
"features_setting_description": "Hallitse sovelluksen ominaisuuksia",
"file_name": "Tiedoston nimi",
"file_name_or_extension": "Tiedostonimi tai tiedostopääte",
@@ -1090,6 +1100,8 @@
"go_back": "Palaa",
"go_to_folder": "Mene kansioon",
"go_to_search": "Siirry hakuun",
"gps": "GPS",
"gps_missing": "Ei GPS:ää",
"grant_permission": "Myönnä lupa",
"group_albums_by": "Ryhmitä albumi...",
"group_country": "Ryhmitä maan mukaan",
@@ -1119,18 +1131,18 @@
"home_page_add_to_album_conflicts": "Lisätty {added} kohdetta albumiin {album}. {failed} kohdetta on jo albumissa.",
"home_page_add_to_album_err_local": "Paikallisten kohteiden lisääminen albumeihin ei ole mahdollista, ohitetaan",
"home_page_add_to_album_success": "Lisätty {added} kohdetta albumiin {album}.",
"home_page_album_err_partner": "Kumppanin kohteita ei voi vielä lisätä albumiin. Hypätään yli",
"home_page_album_err_partner": "Kumppanin kohteita ei voi vielä lisätä albumiin, ohitetaan",
"home_page_archive_err_local": "Paikallisten kohteiden arkistointi ei ole mahdollista, ohitetaan",
"home_page_archive_err_partner": "Kumppanin kohteita ei voi arkistoida. Hypätään yli",
"home_page_archive_err_partner": "Kumppanin kohteita ei voi arkistoida, ohitetaan",
"home_page_building_timeline": "Rakennetaan aikajanaa",
"home_page_delete_err_partner": "Kumppanin kohteita ei voi poistaa.Hypätään yli",
"home_page_delete_err_partner": "Kumppanin kohteita ei voi poistaa, ohitetaan",
"home_page_delete_remote_err_local": "Paikallisia kohteita etäkohdevalintojen joukossa, ohitetaan",
"home_page_favorite_err_local": "Paikallisten kohteiden lisääminen suosikkeihin ei ole mahdollista, ohitetaan",
"home_page_favorite_err_partner": "Kumppanin kohteita ei voi vielä merkitä suosikiksi. Hypätään yli",
"home_page_favorite_err_partner": "Kumppanin kohteita ei voi vielä merkitä suosikiksi, ohitetaan",
"home_page_first_time_notice": "Jos käytät sovellusta ensimmäistä kertaa, muista valita varmuuskopioitavat albumi(t), jotta aikajanalla voi olla kuvia ja videoita",
"home_page_locked_error_local": "Paikallisten kohteiden siirto lukittuun kansioon ei onnistu, ohitetaan",
"home_page_locked_error_partner": "Kumppanin kohteita ei voi siirtää lukittuun kansioon, ohitetaan",
"home_page_share_err_local": "Paikallisia kohteita ei voitu jakaa linkkien avulla. Hypätään yli",
"home_page_share_err_local": "Paikallisia kohteita ei voitu jakaa linkkien avulla, ohitetaan",
"home_page_upload_err_limit": "Voit lähettää palvelimelle enintään 30 kohdetta kerrallaan, ohitetaan",
"host": "Isäntä",
"hour": "Tunti",
@@ -1158,7 +1170,7 @@
"immich_web_interface": "Immich-verkkokäyttöliittymä",
"import_from_json": "Tuo JSON-tiedostosta",
"import_path": "Tuontipolku",
"in_albums": "{count, plural, one {# Albumissa} other {# albumissa}}",
"in_albums": "{count, plural, one {# albumissa} other {# albumissa}}",
"in_archive": "Arkistossa",
"include_archived": "Sisällytä arkistoidut",
"include_shared_albums": "Sisällytä jaetut albumit",
@@ -1167,10 +1179,10 @@
"individual_shares": "Yksittäiset jaot",
"info": "Lisätietoja",
"interval": {
"day_at_onepm": "Joka päivä klo 13:00",
"day_at_onepm": "Joka päivä klo 13.00",
"hours": "Joka {hours, plural, one {tunti} other {{hours, number} tuntia}}",
"night_at_midnight": "Joka yö keskiyöllä",
"night_at_twoam": "Joka yö klo 02:00"
"night_at_twoam": "Joka yö klo 2.00"
},
"invalid_date": "Virheellinen päivämäärä",
"invalid_date_format": "Virheellinen päivämäärämuoto",
@@ -1225,6 +1237,7 @@
"local": "Paikallinen",
"local_asset_cast_failed": "Kohdetta, joka ei ole ladattuna palvelimelle, ei voida striimata",
"local_assets": "Paikalliset kohteet",
"local_media_summary": "Paikallisen median yhteenveto",
"local_network": "Lähiverkko",
"local_network_sheet_info": "Sovellus muodostaa yhteyden palvelimeen tämän URL-osoitteen kautta, kun käytetään määritettyä Wi-Fi-verkkoa",
"location_permission": "Sijainnin käyttöoikeus",
@@ -1236,6 +1249,7 @@
"location_picker_longitude_hint": "Syötä pituusaste",
"lock": "Lukitse",
"locked_folder": "Lukittu kansio",
"log_detail_title": "Lokin yksityiskohtaisuus",
"log_out": "Kirjaudu ulos",
"log_out_all_devices": "Kirjaudu ulos kaikilta laitteilta",
"logged_in_as": "Kirjautunut käyttäjänä {user}",
@@ -1266,6 +1280,7 @@
"login_password_changed_success": "Salasan päivitetty onnistuneesti",
"logout_all_device_confirmation": "Haluatko varmasti kirjautua ulos kaikilta laitteilta?",
"logout_this_device_confirmation": "Haluatko varmasti kirjautua ulos näiltä laitteilta?",
"logs": "Loki",
"longitude": "Pituusaste",
"look": "Tyyli",
"loop_videos": "Toista videot uudelleen",
@@ -1273,6 +1288,7 @@
"main_branch_warning": "Käytät kehitysversiota; suosittelemme vahvasti käyttämään julkaisuversiota!",
"main_menu": "Päävalikko",
"make": "Valmistaja",
"manage_geolocation": "Muokkaa sijaintia",
"manage_shared_links": "Hallitse jaettuja linkkejä",
"manage_sharing_with_partners": "Hallitse jakamista kumppaneille",
"manage_the_app_settings": "Hallitse sovelluksen asetuksia",
@@ -1307,6 +1323,7 @@
"mark_as_read": "Merkitse luetuksi",
"marked_all_as_read": "Merkitty kaikki luetuiksi",
"matches": "Osumia",
"matching_assets": "Vastaava sisältö",
"media_type": "Median tyyppi",
"memories": "Muistoja",
"memories_all_caught_up": "Kaikki ajan tasalla",
@@ -1340,13 +1357,14 @@
"moved_to_library": "Siirretty {count, plural, one {# kohde} other {# kohdetta}} kirjastoon",
"moved_to_trash": "Siirretty roskakoriin",
"multiselect_grid_edit_date_time_err_read_only": "Vain luku -tilassa olevien kohteiden päivämäärää ei voitu muokata, ohitetaan",
"multiselect_grid_edit_gps_err_read_only": "Vain luku-tilassa olevien kohteiden sijantitietoja ei voitu muokata, ohitetaan",
"multiselect_grid_edit_gps_err_read_only": "Vain luku -tilassa olevien kohteiden sijantitietoja ei voitu muokata, ohitetaan",
"mute_memories": "Mykistä muistot",
"my_albums": "Omat albumit",
"name": "Nimi",
"name_or_nickname": "Nimi tai lempinimi",
"network_requirement_photos_upload": "Käytä mobiiliverkkoa kuvien varmuuskopioimiseksi",
"network_requirement_videos_upload": "Käytä mobiiliverkkoa videoiden varmuuskopioimiseksi",
"network_requirements": "Verkkovaatimukset",
"network_requirements_updated": "Verkkovaatimukset muuttuivat, nollataan varmuuskopiointijono",
"networking_settings": "Verkko",
"networking_subtitle": "Hallitse palvelinasetuksia",
@@ -1357,6 +1375,7 @@
"new_person": "Uusi henkilö",
"new_pin_code": "Uusi PIN-koodi",
"new_pin_code_subtitle": "Tämä on ensimmäinen kerta, kun käytät lukittua kansiota. Luo PIN-koodi päästäksesi tähän sisältöön turvallisesti",
"new_timeline": "Uusi aikajana",
"new_user_created": "Uusi käyttäjä lisätty",
"new_version_available": "UUSI VERSIO SAATAVILLA",
"newest_first": "Uusin ensin",
@@ -1367,23 +1386,28 @@
"no_albums_with_name_yet": "Näyttää siltä, ettei sinulla ole yhtään tämän nimistä albumia.",
"no_albums_yet": "Näyttää siltä, ettei sinulla ole vielä yhtään albumia.",
"no_archived_assets_message": "Arkistoi kuvia ja videoita piilottaaksesi ne kuvat näkymästä",
"no_assets_message": "NAPAUTA LATAAKSESI ENSIMMÄISEN KUVASI",
"no_assets_message": "NAPAUTA LADATAKSESI ENSIMMÄINEN KUVASI",
"no_assets_to_show": "Ei näytettäviä kohteita",
"no_cast_devices_found": "Cast-laitteita ei löytynyt",
"no_checksum_local": "Ei tarkistussummaa - paikallista sisältöä ei voida hakea",
"no_checksum_remote": "Ei tarkistussummaa - etänä olevaa sisältöä ei voida hakea",
"no_duplicates_found": "Kaksoiskappaleita ei löytynyt.",
"no_exif_info_available": "EXIF-tietoa ei saatavilla",
"no_explore_results_message": "Lataa lisää kuvia tutkiaksesi kokoelmaasi.",
"no_favorites_message": "Lisää suosikkeja löytääksesi nopeasti parhaat kuvasi ja videosi",
"no_libraries_message": "Luo ulkoinen kirjasto nähdäksesi valokuvasi ja videot",
"no_local_assets_found": "Paikallista sisältöä ei löytynyt tällä tarkistussummalla",
"no_locked_photos_message": "Kuvat ja videot lukitussa kansiossa ovat piilotettuja, eivätkä ne näy selatessasi tai etsiessäsi kirjastoasi.",
"no_name": "Ei nimeä",
"no_notifications": "Ei ilmoituksia",
"no_people_found": "Ei vastaavia henkilöitä",
"no_places": "Ei paikkoja",
"no_remote_assets_found": "Etänä olevaa sisältöä ei löytynyt tällä tarkistussummalla",
"no_results": "Ei tuloksia",
"no_results_description": "Kokeile synonyymiä tai yleisempää avainsanaa",
"no_shared_albums_message": "Luo albumi, jotta voit jakaa kuvia ja videoita toisille",
"no_uploads_in_progress": "Ei käynnissä olevia latauksia",
"not_available": "N/A",
"not_in_any_album": "Ei yhdessäkään albumissa",
"not_selected": "Ei valittu",
"note_apply_storage_label_to_previously_uploaded assets": "Huom: Jotta voit soveltaa tallennustunnistetta aiemmin ladattuihin kohteisiin, suorita",
@@ -1418,6 +1442,8 @@
"open_the_search_filters": "Avaa hakusuodattimet",
"options": "Vaihtoehdot",
"or": "tai",
"organize_into_albums": "Järjestä albumeihin",
"organize_into_albums_description": "Siirrä olemassa olevat kuvat albumeihin käyttäen nykyisiä synkronointiasetuksia",
"organize_your_library": "Järjestele kirjastosi",
"original": "alkuperäinen",
"other": "Muut",
@@ -1463,7 +1489,7 @@
"permanent_deletion_warning_setting_description": "Näytä varoitus, kun poistat kohteita pysyvästi",
"permanently_delete": "Poista pysyvästi",
"permanently_delete_assets_count": "Poista pysyvästi {count, plural, one {kohde} other {kohteita}}",
"permanently_delete_assets_prompt": "Haluatko varmasti poistaa pysyvästi {count, plural, one {tämän kohteen?} other {nämä <b>#</b> kohteet?}} Tämä poistaa myös {count, plural, one {sen} other {ne}} kaikista albumeista.",
"permanently_delete_assets_prompt": "Haluatko varmasti poistaa pysyvästi {count, plural, one {tämän kohteen?} other {nämä <b>#</b> kohteet?}} Tämä poistaa {count, plural, one {sen} other {ne}} myös kaikista albumeista.",
"permanently_deleted_asset": "Media poistettu pysyvästi",
"permanently_deleted_assets_count": "{count, plural, one {# media} other {# mediaa}} poistettu pysyvästi",
"permission": "Käyttöoikeus",
@@ -1503,6 +1529,7 @@
"port": "Portti",
"preferences_settings_subtitle": "Hallitse sovelluksen asetuksia",
"preferences_settings_title": "Asetukset",
"preparing": "Valmistellaan",
"preset": "Asetus",
"preview": "Esikatselu",
"previous": "Edellinen",
@@ -1519,6 +1546,7 @@
"profile_drawer_client_out_of_date_minor": "Sovelluksen mobiiliversio on vanhentunut. Päivitä viimeisimpään versioon.",
"profile_drawer_client_server_up_to_date": "Asiakasohjelma ja palvelin ovat ajan tasalla",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Muokkaus on estetty. Paina käyttäjäkuvaketta pitkään palataksesi muokkaustilaan.",
"profile_drawer_server_out_of_date_major": "Palvelimen ohjelmistoversio on vanhentunut. Päivitä viimeisimpään merkittävään versioon.",
"profile_drawer_server_out_of_date_minor": "Palvelimen ohjelmistoversio on vanhentunut. Päivitä viimeisimpään versioon.",
"profile_image_of_user": "Käyttäjän {user} profiilikuva",
@@ -1557,6 +1585,7 @@
"purchase_server_description_2": "Tukijan tila",
"purchase_server_title": "Palvelin",
"purchase_settings_server_activated": "Palvelimen tuoteavainta hallinnoi ylläpitäjä",
"query_asset_id": "Kysy sisällön ID:tä",
"queue_status": "Jonossa {count}/{total}",
"rating": "Tähtiarvostelu",
"rating_clear": "Tyhjennä arvostelu",
@@ -1564,6 +1593,9 @@
"rating_description": "Näytä EXIF-arvosana lisätietopaneelissa",
"reaction_options": "Reaktioasetukset",
"read_changelog": "Lue muutosloki",
"readonly_mode_disabled": "Muokkaustila päällä",
"readonly_mode_enabled": "Muokkaustila pois päältä",
"ready_for_upload": "Valmis lähetystä varten",
"reassign": "Määritä uudelleen",
"reassigned_assets_to_existing_person": "Uudelleen määritetty {count, plural, one {# kohde} other {# kohdetta}} {name, select, null {olemassa olevalle henkilölle} other {{name}}}",
"reassigned_assets_to_new_person": "Määritetty {count, plural, one {# media} other {# mediaa}} uudelle henkilölle",
@@ -1588,6 +1620,7 @@
"regenerating_thumbnails": "Regeneroidaan pikkukuvia",
"remote": "Etä",
"remote_assets": "Etäkohteet",
"remote_media_summary": "Yhteenveto etänä olevasta mediasta",
"remove": "Poista",
"remove_assets_album_confirmation": "Haluatko varmasti poistaa {count, plural, one {# median} other {# mediaa}} albumista?",
"remove_assets_shared_link_confirmation": "Haluatko varmasti poistaa {count, plural, one {# median} other {# mediaa}} tästä jakolinkistä?",
@@ -1640,6 +1673,7 @@
"restore_user": "Palauta käyttäjä",
"restored_asset": "Palautettu media",
"resume": "Jatka",
"resume_paused_jobs": "Jatka {count, plural, one {# paused job} other {# paused jobs}}",
"retry_upload": "Yritä latausta uudelleen",
"review_duplicates": "Tarkastele kaksoiskappaleita",
"review_large_files": "Tarkista suuret tiedostot",
@@ -1704,7 +1738,7 @@
"search_places": "Etsi paikkoja",
"search_rating": "Hae luokituksen mukaan...",
"search_result_page_new_search_hint": "Uusi haku",
"search_settings": "Hakuasetukset",
"search_settings": "Etsi asetuksia",
"search_state": "Etsi maakuntaa...",
"search_suggestion_list_smart_search_hint_1": "Älykäs haku on oletuksena käytössä. Käytä metatietojen etsimiseen syntaksia ",
"search_suggestion_list_smart_search_hint_2": "m:hakusana",
@@ -1716,7 +1750,7 @@
"second": "Toinen",
"see_all_people": "Näytä kaikki henkilöt",
"select": "Valitse",
"select_album_cover": "Valitse albmin kansi",
"select_album_cover": "Valitse albumin kansi",
"select_all": "Valitse kaikki",
"select_all_duplicates": "Valitse kaikki kaksoiskappaleet",
"select_all_in": "Valitse kaikki {group}",
@@ -1733,6 +1767,7 @@
"select_user_for_sharing_page_err_album": "Albumin luonti epäonnistui",
"selected": "Valittu",
"selected_count": "{count, plural, other {# valittu}}",
"selected_gps_coordinates": "Valitut GPS-koordinaatit",
"send_message": "Lähetä viesti",
"send_welcome_email": "Lähetä tervetuloviesti",
"server_endpoint": "Palvelinosoite",
@@ -1774,7 +1809,7 @@
"setting_video_viewer_original_video_subtitle": "Kun toistat videota palvelimelta, toista alkuperäinen, vaikka transkoodattu versio olisi saatavilla. Tämä voi johtaa puskurointiin. Paikalliset videot toistetaan aina alkuperäislaadulla.",
"setting_video_viewer_original_video_title": "Pakota alkuperäinen video",
"settings": "Asetukset",
"settings_require_restart": "Käynnistä Immich uudelleen ottaaksesti tämän asetuksen käyttöön",
"settings_require_restart": "Käynnistä Immich uudelleen ottaaksesi tämä asetus käyttöön",
"settings_saved": "Asetukset tallennettu",
"setup_pin_code": "Määritä PIN-koodi",
"share": "Jaa",
@@ -1840,7 +1875,7 @@
"sharing_sidebar_description": "Näytä jakamislinkki sivupalkissa",
"sharing_silver_appbar_create_shared_album": "Luo jaettu albumi",
"sharing_silver_appbar_share_partner": "Jaa kumppanille",
"shift_to_permanent_delete": "Paina ⇧ poistaaksesi median pysyvästi",
"shift_to_permanent_delete": "Paina ⇧ poistaaksesi media pysyvästi",
"show_album_options": "Näytä albumin asetukset",
"show_albums": "Näytä albumit",
"show_all_people": "Näytä kaikki henkilöt",
@@ -1861,6 +1896,7 @@
"show_slideshow_transition": "Näytä diaesitys siirtymä",
"show_supporter_badge": "Kannattajan merkki",
"show_supporter_badge_description": "Näytä kannattajan merkki",
"show_text_search_menu": "Näytä tekstihakuvalikko",
"shuffle": "Sekoita",
"sidebar": "Sivupalkki",
"sidebar_display_description": "Näytä linkki näkymään sivupalkissa",
@@ -1891,6 +1927,7 @@
"stacktrace": "Vianetsintätiedot",
"start": "Aloita",
"start_date": "Alkupäivä",
"start_date_before_end_date": "Aloituspäivämäärän pitää olla ennen lopetuspäivämäärää",
"state": "Maakunta",
"status": "Tila",
"stop_casting": "Lopeta suoratoisto",
@@ -1915,6 +1952,8 @@
"sync_albums_manual_subtitle": "Synkronoi kaikki ladatut videot ja valokuvat valittuihin varmuuskopioalbumeihin",
"sync_local": "Synkronoi paikallinen",
"sync_remote": "Synkronoi etä",
"sync_status": "Synkronoinnin status",
"sync_status_subtitle": "Näytä ja hallinnoi synkronointijärjestelmää",
"sync_upload_album_setting_subtitle": "Luo ja lataa valokuvasi ja videosi valittuihin albumeihin Immichissä",
"tag": "Tunniste",
"tag_assets": "Lisää tunnisteita",
@@ -1952,7 +1991,9 @@
"to_change_password": "Vaihda salasana",
"to_favorite": "Aseta suosikiksi",
"to_login": "Kirjaudu sisään",
"to_multi_select": "usean valitsemiseksi",
"to_parent": "Siirry vanhempaan",
"to_select": "valitsemiseksi",
"to_trash": "Roskakoriin",
"toggle_settings": "Määritä asetukset",
"total": "Yhteensä",
@@ -1960,7 +2001,7 @@
"trash": "Roskakori",
"trash_action_prompt": "{count} siirretty roskakoriin",
"trash_all": "Vie kaikki roskakoriin",
"trash_count": "Roskakori {count, number}",
"trash_count": "Vie {count, number} roskakoriin",
"trash_delete_asset": "Poista / vie roskakoriin",
"trash_emptied": "Roskakori tyhjennetty",
"trash_no_results_message": "Roskakorissa olevat kuvat ja videot näytetään täällä.",
@@ -1972,6 +2013,7 @@
"trash_page_select_assets_btn": "Valitse kohteet",
"trash_page_title": "Roskakori ({count})",
"trashed_items_will_be_permanently_deleted_after": "Roskakorin kohteet poistetaan pysyvästi {days, plural, one {# päivän} other {# päivän}} päästä.",
"troubleshoot": "Vianetsintä",
"type": "Tyyppi",
"unable_to_change_pin_code": "PIN-koodin vaihtaminen epäonnistui",
"unable_to_setup_pin_code": "PIN-koodin määrittäminen epäonnistui",
@@ -2002,6 +2044,7 @@
"unstacked_assets_count": "Poistettu pinosta {count, plural, one {# kohde} other {# kohdetta}}",
"untagged": "Ilman tunnistetta",
"up_next": "Seuraavaksi",
"update_location_action_prompt": "Päivitä {count} kohteen sijaintia:",
"updated_at": "Päivitetty",
"updated_password": "Salasana päivitetty",
"upload": "Siirrä palvelimelle",
@@ -2068,6 +2111,7 @@
"view_next_asset": "Näytä seuraava",
"view_previous_asset": "Näytä edellinen",
"view_qr_code": "Näytä QR-koodi",
"view_similar_photos": "Näytä samankaltaiset kuvat",
"view_stack": "Näytä pinona",
"view_user": "Näytä käyttäjä",
"viewer_remove_from_stack": "Poista pinosta",
@@ -2086,5 +2130,6 @@
"yes": "Kyllä",
"you_dont_have_any_shared_links": "Sinulla ei ole jaettuja linkkejä",
"your_wifi_name": "Wi-Fi-verkkosi nimi",
"zoom_image": "Zoomaa kuvaa"
"zoom_image": "Zoomaa kuvaa",
"zoom_to_bounds": "Zoomaa reunoihin"
}

View File

@@ -33,6 +33,7 @@
"add_to_albums": "Ajouter aux albums",
"add_to_albums_count": "Ajouter aux albums ({count})",
"add_to_shared_album": "Ajouter à l'album partagé",
"add_upload_to_stack": "Ajouter les éléments téléversés à la pile",
"add_url": "Ajouter l'URL",
"added_to_archive": "Ajouté à l'archive",
"added_to_favorites": "Ajouté aux favoris",
@@ -600,7 +601,7 @@
"backup_controller_page_uploading_file_info": "Envoi des informations du fichier",
"backup_err_only_album": "Impossible de retirer le seul album",
"backup_error_sync_failed": "Échec de la synchronisation. Impossible d'exécuter la sauvegarde.",
"backup_info_card_assets": "éléments",
"backup_info_card_assets": "médias",
"backup_manual_cancelled": "Annulé",
"backup_manual_in_progress": "Envoi déjà en cours. Réessayez plus tard",
"backup_manual_success": "Succès",

File diff suppressed because it is too large Load Diff

View File

@@ -15,7 +15,7 @@
"add_a_name": "הוספת שם",
"add_a_title": "הוספת כותרת",
"add_birthday": "הוספת יום הולדת",
"add_endpoint": "הוסף נקודת קצה",
"add_endpoint": "הוסף כתובת URL",
"add_exclusion_pattern": "הוספת דפוס החרגה",
"add_import_path": "הוספת נתיב יבוא",
"add_location": "הוספת מיקום",
@@ -404,7 +404,7 @@
"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_subtitle": "מדלג על אימות תעודת SSL עבור כתובת URL של השרת. דרוש עבור תעודות בחתימה עצמית.",
"advanced_settings_self_signed_ssl_title": "התר תעודות SSL בחתימה עצמית",
"advanced_settings_sync_remote_deletions_subtitle": "מחק או שחזר תמונה במכשיר זה באופן אוטומטי כאשר פעולה זו נעשית בדפדפן",
"advanced_settings_sync_remote_deletions_title": "סנכרן מחיקות שבוצעו במכשירים אחרים [נסיוני]",
@@ -592,7 +592,7 @@
"backup_controller_page_start_backup": "התחל גיבוי",
"backup_controller_page_status_off": "גיבוי חזית אוטומטי כבוי",
"backup_controller_page_status_on": "גיבוי חזית אוטומטי מופעל",
"backup_controller_page_storage_format": "{used}מתוך {total} בשימוש",
"backup_controller_page_storage_format": "{used} מתוך {total} בשימוש",
"backup_controller_page_to_backup": "אלבומים לגבות",
"backup_controller_page_total_sub": "כל התמונות והסרטונים הייחודיים מאלבומים שנבחרו",
"backup_controller_page_turn_off": "כיבוי גיבוי חזית",
@@ -1261,7 +1261,7 @@
"login_form_back_button_text": "חזרה",
"login_form_email_hint": "yourmail@email.com",
"login_form_endpoint_hint": "http://your-server-ip:port",
"login_form_endpoint_url": "כתובת נקודת קצה השרת",
"login_form_endpoint_url": "כתובת URL של השרת",
"login_form_err_http": "נא לציין //:http או //:https",
"login_form_err_invalid_email": "דוא\"ל שגוי",
"login_form_err_invalid_url": "כתובת לא חוקית",
@@ -1367,7 +1367,7 @@
"network_requirements": "דרישות רשת",
"network_requirements_updated": "דרישות הרשת השתנו, תור הגיבוי אופס",
"networking_settings": "רשת",
"networking_subtitle": "ניהול הגדרות נקודת קצה שרת",
"networking_subtitle": "ניהול הגדרות כתובת URL של השרת",
"never": "אף פעם",
"new_album": "אלבום חדש",
"new_api_key": "מפתח API חדש",
@@ -1770,7 +1770,7 @@
"selected_gps_coordinates": "קואורדינטות GPS שנבחרו",
"send_message": "שלח הודעה",
"send_welcome_email": "שלח דוא\"ל קבלת פנים",
"server_endpoint": "נקודת קצה שרת",
"server_endpoint": "כתובת URL של השרת",
"server_info_box_app_version": "גרסת יישום",
"server_info_box_server_url": "כתובת שרת",
"server_offline": "השרת מנותק",
@@ -1951,8 +1951,8 @@
"sync_albums": "סנכרן אלבומים",
"sync_albums_manual_subtitle": "סנכרן את כל הסרטונים והתמונות שהועלו לאלבומי הגיבוי שנבחרו",
"sync_local": "סנכרן מקומי",
"sync_remote": "סנכרן נקודת קצה מרוחקת",
"sync_status": "סנכרן מצב",
"sync_remote": "סנכרן מהשרת",
"sync_status": "סטטוס סנכרון",
"sync_status_subtitle": "הצג ונהל את מערכת הסנכרון",
"sync_upload_album_setting_subtitle": "צור והעלה תמונות וסרטונים שלך לאלבומים שנבחרו ביישום",
"tag": "תג",
@@ -2087,7 +2087,7 @@
"users_added_to_album_count": "נוספו {count, plural, one {משתמש #} other {# משתמשים}} לאלבום",
"utilities": "כלים",
"validate": "לאמת",
"validate_endpoint_error": "נא להזין כתובת תקנית",
"validate_endpoint_error": "נא להזין כתובת URL תקנית",
"variables": "משתנים",
"version": "גרסה",
"version_announcement_closing": "החבר שלך, אלכס",

View File

@@ -28,6 +28,7 @@
"add_to_album": "एल्बम में डालें",
"add_to_album_bottom_sheet_added": "{album} में डालें",
"add_to_album_bottom_sheet_already_exists": "{album} में पहले से है",
"add_to_albums": "एकाधिक एल्बम में डाले",
"add_to_shared_album": "शेयर किए गए एल्बम में डालें",
"add_url": "URL डालें",
"added_to_archive": "संग्रहीत कर दिया गया है",

View File

@@ -15,9 +15,9 @@
"add_a_name": "Dodaj ime",
"add_a_title": "Dodaj naslov",
"add_birthday": "Dodaj rođendan",
"add_endpoint": "Dodaj krajnju točnu",
"add_endpoint": "Dodaj krajnju točku",
"add_exclusion_pattern": "Dodaj uzorak izuzimanja",
"add_import_path": "Dodaj import folder",
"add_import_path": "Dodaj putanju uvoza",
"add_location": "Dodaj lokaciju",
"add_more_users": "Dodaj još korisnika",
"add_partner": "Dodaj partnera",
@@ -28,35 +28,37 @@
"add_to_album": "Dodaj u album",
"add_to_album_bottom_sheet_added": "Dodano u {album}",
"add_to_album_bottom_sheet_already_exists": "Već u {album}",
"add_to_album_bottom_sheet_some_local_assets": "Neke lokalne stavke nije moguće dodati u album",
"add_to_album_toggle": "Uključi/isključi odabir za {album}",
"add_to_albums": "Dodaj u albume",
"add_to_albums_count": "Dodaj u albume ({count})",
"add_to_shared_album": "Dodaj u dijeljeni album",
"add_upload_to_stack": "Dodaj preneseno u skup",
"add_url": "Dodaj URL",
"added_to_archive": "Dodano u arhivu",
"added_to_favorites": "Dodano u omiljeno",
"added_to_favorites_count": "Dodano {count, number} u omiljeno",
"admin": {
"add_exclusion_pattern_description": "Dodajte uzorke izuzimanja. Globiranje pomoću *, ** i ? je podržano. Za ignoriranje svih datoteka u bilo kojem direktoriju pod nazivom \"Raw\", koristite \"**/Raw/**\". Da biste zanemarili sve datoteke koje završavaju na \".tif\", koristite \"**/*.tif\". Da biste zanemarili apsolutni put, koristite \"/path/to/ignore/**\".",
"add_exclusion_pattern_description": "Dodajte uzorke izuzimanja. Globiranje pomoću *, ** i ? je podržano. Za ignoriranje svih datoteka u bilo kojem direktoriju pod nazivom \"Raw\", koristite \"**/Raw/**\". Kako biste ignorirali sve datoteke koje završavaju na \".tif\", koristite \"**/*.tif\". Kako biste ignorirali apsolutnu putanju, koristite \"/putanja/za/ignoriranje/**\".",
"admin_user": "Administrator",
"asset_offline_description": "Ovo sredstvo vanjske knjižnice više nije pronađeno na disku i premješteno je u smeće. Ako je datoteka premještena unutar biblioteke, provjerite svoju vremensku traku za novo odgovarajuće sredstvo. Da biste vratili ovo sredstvo, provjerite može li Immich pristupiti donjoj stazi datoteke i skenirajte biblioteku.",
"authentication_settings": "Postavke autentikacije",
"authentication_settings_description": "Uredi lozinku, OAuth, i druge postavke autentikacije",
"authentication_settings_disable_all": "Jeste li sigurni da želite onemogućenit sve načine prijave? Prijava će biti potpuno onemogućena.",
"authentication_settings_reenable": "Za ponovno uključivanje upotrijebite <link>naredbu poslužitelja</link>.",
"asset_offline_description": "Ova stavka vanjske biblioteke nije pronađena na disku i premještena je u smeće. Ako je datoteka premještena unutar biblioteke, provjerite svoju vremensku traku za novu odgovarajuću stavku. Da biste vratili ovu stavku, provjerite može li Immich pristupiti donjoj putanji datoteke i skenirajte biblioteku.",
"authentication_settings": "Postavke autentifikacije",
"authentication_settings_description": "Upravljajte lozinkom, OAuthom i drugim postavkama autentifikacije",
"authentication_settings_disable_all": "Jeste li sigurni da želite onemogućiti sve načine prijave? Prijava će biti potpuno onemogućena.",
"authentication_settings_reenable": "Za ponovno uključivanje upotrijebite <link>naredbu servera</link>.",
"background_task_job": "Pozadinski zadaci",
"backup_database": "Kreiraj sigurnosnu kopiju baze podataka",
"backup_database_enable_description": "Omogućite sigurnosne kopije baze podataka",
"backup_keep_last_amount": "Količina prethodnih sigurnosnih kopija za čuvanje",
"backup_onboarding_1_description": "kopija izvan lokacije u oblaku ili na drugoj fizičkoj lokaciji.",
"backup_onboarding_2_description": "lokalne kopije na različitim uređajima. To uključuje glavne datoteke i sigurnosnu kopiju tih datoteka lokalno.",
"backup_onboarding_2_description": "lokalne kopije na različitim uređajima. To uključuje glavne datoteke i lokalnu sigurnosnu kopiju tih datoteka.",
"backup_onboarding_3_description": "ukupne kopije vaših podataka, uključujući izvorne datoteke. To uključuje 1 kopiju izvan lokacije i 2 lokalne kopije.",
"backup_onboarding_description": "Preporučuje se <backblaze-link>3-2-1 strategija sigurnosnog kopiranja</backblaze-link> za zaštitu vaših podataka. Trebali biste čuvati kopije svojih prenesenih fotografija/videozapisa kao i Immich bazu podataka za sveobuhvatno rješenje sigurnosne kopije.",
"backup_onboarding_footer": "Za više informacija o sigurnosnom kopiranju Immich, molimo pogledajte <link>dokumentaciju</link>.",
"backup_onboarding_footer": "Za više informacija o sigurnosnom kopiranju Immicha, molimo pogledajte <link>dokumentaciju</link>.",
"backup_onboarding_parts_title": "3-2-1 sigurnosna kopija uključuje:",
"backup_onboarding_title": "Sigurnosne kopije",
"backup_settings": "Postavke sigurnosne kopije",
"backup_settings_description": "Upravljajte postavkama izvoza baze podataka.",
"backup_settings": "Postavke sigurnosne kopije baze podataka",
"backup_settings_description": "Upravljajte postavkama sigurnosne kopije baze podataka.",
"cleared_jobs": "Izbrisani poslovi za: {job}",
"config_set_by_file": "Konfiguracija je trenutno postavljena konfiguracijskom datotekom",
"confirm_delete_library": "Jeste li sigurni da želite izbrisati biblioteku {library}?",
@@ -65,23 +67,23 @@
"confirm_reprocess_all_faces": "Jeste li sigurni da želite ponovno obraditi sva lica? Ovo će također obrisati imenovane osobe.",
"confirm_user_password_reset": "Jeste li sigurni da želite poništiti lozinku korisnika {user}?",
"confirm_user_pin_code_reset": "Jeste li sigurni da želite resetirati PIN korisnika {user}?",
"create_job": "Izradi zadatak",
"cron_expression": "Cron izraz (expression)",
"create_job": "Stvori posao",
"cron_expression": "Cron izraz",
"cron_expression_description": "Postavite interval skeniranja koristeći cron format. Za više informacija pogledajte npr. <link>Crontab Guru</link>",
"cron_expression_presets": "Cron unaprijed postavljene postavke izraza",
"cron_expression_presets": "Unaprijed postavljene postavke cron izraza",
"disable_login": "Onemogući prijavu",
"duplicate_detection_job_description": "Pokrenite strojno učenje na materijalima kako biste otkrili slične slike. Oslanja se na Pametno Pretraživanje",
"exclusion_pattern_description": "Uzorci izuzimanja omogućuju vam da zanemarite datoteke i mape prilikom skeniranja svoje biblioteke. Ovo je korisno ako imate mape koje sadrže datoteke koje ne želite uvesti, kao što su RAW datoteke.",
"external_library_management": "Upravljanje vanjskom knjižnicom",
"duplicate_detection_job_description": "Pokrenite strojno učenje na stavkama kako biste otkrili slične slike. Oslanja se na Pametno pretraživanje",
"exclusion_pattern_description": "Uzorci izuzimanja omogućuju vam da ignorirate datoteke i mape prilikom skeniranja svoje biblioteke. Ovo je korisno ako imate mape koje sadrže datoteke koje ne želite uvesti, kao što su RAW datoteke.",
"external_library_management": "Upravljanje vanjskom bibliotekom",
"face_detection": "Detekcija lica",
"face_detection_description": "Prepoznajte lica u sredstvima pomoću strojnog učenja. Za videozapise u obzir se uzima samo minijaturni prikaz. \"Sve\" (ponovno) obrađuje svu imovinu. \"Nedostaje\" stavlja u red čekanja sredstva koja još nisu obrađena. Otkrivena lica bit će stavljena u red čekanja za prepoznavanje lica nakon dovršetka prepoznavanja lica, grupirajući ih u postojeće ili nove osobe.",
"facial_recognition_job_description": "Grupirajte otkrivena lica u osobe. Ovaj se korak pokreće nakon dovršetka prepoznavanja lica. \"Sve\" (ponovno) grupira sva lica. \"Nedostajuća\" lica u redovima kojima nije dodijeljena osoba.",
"face_detection_description": "Detektirajte lica u stavkama pomoću strojnog učenja. Za videozapise se uzima u obzir samo sličica. \"Osvježi\" (ponovno) obrađuje sve stavke. \"Poništi\" dodatno briše sve trenutne podatke o licu. \"Nedostaje\" stavlja u red čekanja stavke koje još nisu obrađene. Detektirana lica bit će stavljena u red čekanja za Prepoznavanje lica nakon što se dovrši Detekcija lica, grupirajući ih u postojeće ili nove osobe.",
"facial_recognition_job_description": "Grupirajte otkrivena lica u osobe. Ovaj korak se izvršava nakon što je Detekcija lica dovršena. \"Resetiraj\" (ponovno) grupira sva lica. \"Nedostaje\" stavlja u red lica kojima nije dodijeljena osoba.",
"failed_job_command": "Naredba {command} nije uspjela za posao: {job}",
"force_delete_user_warning": "UPOZORENJE: Ovo će odmah ukloniti korisnika i sve pripadajuće podatke. Ovo se ne može poništiti i datoteke se ne mogu vratiti.",
"force_delete_user_warning": "UPOZORENJE: Ovo će odmah ukloniti korisnika i sve pripadajuće stavke. Ovo se ne može poništiti i datoteke se ne mogu vratiti.",
"image_format": "Format",
"image_format_description": "WebP proizvodi manje datoteke od JPEG-a, ali se sporije kodira.",
"image_fullsize_description": "Slika pune veličine bez meta podataka, koristi se prilikom zumiranja",
"image_fullsize_enabled": "Omogući generiranje slike pune veličine",
"image_fullsize_description": "Slika pune veličine bez metapodataka, koristi se prilikom zumiranja",
"image_fullsize_enabled": "Omogući generiranje slika pune veličine",
"image_fullsize_enabled_description": "Generiraj sliku pune veličine za formate koji nisu prilagođeni webu. Kada je opcija \"Preferiraj ugrađeni pregled\" omogućena, ugrađeni pregledi koriste se izravno bez konverzije. Ne utječe na formate prilagođene webu kao što je JPEG.",
"image_fullsize_quality_description": "Kvaliteta slike pune veličine od 1 do 100. Veća vrijednost znači bolja kvaliteta, ali stvara veće datoteke.",
"image_fullsize_title": "Postavke slike pune veličine",
@@ -89,7 +91,7 @@
"image_prefer_embedded_preview_setting_description": "Koristite ugrađene preglede u RAW fotografije kao ulaz za obradu slike kada su dostupni. To može proizvesti preciznije boje za neke slike, ali kvaliteta pregleda ovisi o kameri i slika može imati više artifakta kompresije.",
"image_prefer_wide_gamut": "Preferirajte široku gamu",
"image_prefer_wide_gamut_setting_description": "Koristite Display P3 za sličice. Ovo bolje čuva živost slika sa širokim prostorima boja, ali slike mogu izgledati drugačije na starim uređajima sa starom verzijom preglednika. sRGB slike čuvaju se kao sRGB kako bi se izbjegle promjene boja.",
"image_preview_description": "Slika srednje veličine s ogoljenim metapodacima, koristi se prilikom pregledavanja jednog sredstva i za strojno učenje",
"image_preview_description": "Slika srednje veličine s uklonjenim metapodacima, koristi se prilikom pregledavanja jedne stavke i za strojno učenje",
"image_preview_quality_description": "Kvaliteta pregleda od 1-100. Više je bolje, ali proizvodi veće datoteke i može smanjiti odziv aplikacije. Postavljanje niske vrijednosti može utjecati na kvalitetu strojnog učenja.",
"image_preview_title": "Postavke pregleda",
"image_quality": "Kvaliteta",
@@ -116,27 +118,31 @@
"library_scanning_enable_description": "Omogući periodično skeniranje biblioteke",
"library_settings": "Externa biblioteka",
"library_settings_description": "Upravljajte postavkama vanjske biblioteke",
"library_tasks_description": "Skeniraj eksterne biblioteke za nove i/ili promijenjene resurse",
"library_tasks_description": "Skeniraj vanjske biblioteke za nove i/ili promijenjene stavke",
"library_watching_enable_description": "Pratite vanjske biblioteke za promjena datoteke",
"library_watching_settings": "Gledanje biblioteke (EKSPERIMENTALNO)",
"library_watching_settings_description": "Automatsko praćenje promijenjenih datoteke",
"logging_enable_description": "Omogući zapisivanje",
"logging_level_description": "Kada je omogućeno, koju razinu zapisivanja koristiti.",
"logging_settings": "Zapisivanje",
"machine_learning_availability_checks": "Provjere dostupnosti",
"machine_learning_availability_checks_enabled": "Omogući provjere dostupnosti",
"machine_learning_availability_checks_interval": "Provjeri interval",
"machine_learning_availability_checks_interval_description": "Interval u milisekundama između provjera dostupnosti",
"machine_learning_clip_model": "CLIP model",
"machine_learning_clip_model_description": "Naziv CLIP modela navedenog <link>ovdje</link>. Imajte na umu da morate ponovno pokrenuti posao 'Pametno Pretraživanje' za sve slike nakon promjene modela.",
"machine_learning_duplicate_detection": "Detekcija Duplikata",
"machine_learning_duplicate_detection_enabled": "Omogući detekciju duplikata",
"machine_learning_duplicate_detection_enabled_description": "Ako je onemogućeno, potpuno identična sredstva i dalje će biti deduplicirana.",
"machine_learning_duplicate_detection_enabled_description": "Ako je onemogućeno, potpuno identične stavke i dalje će biti deduplicirane.",
"machine_learning_duplicate_detection_setting_description": "Upotrijebite CLIP ugradnje da biste pronašli vjerojatne duplikate",
"machine_learning_enabled": "Uključi strojsko učenje",
"machine_learning_enabled_description": "Ukoliko je ovo isključeno, sve funkcije strojnoga učenja biti će isključene bez obzira na postavke ispod.",
"machine_learning_facial_recognition": "Detekcija lica",
"machine_learning_facial_recognition": "Prepoznavanje lica",
"machine_learning_facial_recognition_description": "Detektiraj, prepoznaj i grupiraj lica u fotografijama",
"machine_learning_facial_recognition_model": "Model prepoznavanja lica",
"machine_learning_facial_recognition_model_description": "Modeli su navedeni silaznim redoslijedom veličine. Veći modeli su sporiji i koriste više memorije, ali daju bolje rezultate. Imajte na umu da morate ponovno pokrenuti posao detekcije lica za sve slike nakon promjene modela.",
"machine_learning_facial_recognition_setting": "Omogući prepoznavanje lica",
"machine_learning_facial_recognition_setting_description": "Ako je onemogućeno, slike neće biti kodirane za prepoznavanje lica i neće popuniti odjeljak Ljudi na stranici Istraživanje.",
"machine_learning_facial_recognition_setting_description": "Ako je onemogućeno, slike neće biti kodirane za prepoznavanje lica i neće popuniti odjeljak Osobe na stranici Istraži.",
"machine_learning_max_detection_distance": "Maksimalna udaljenost za detektiranje",
"machine_learning_max_detection_distance_description": "Maksimalna udaljenost između dvije slike da bi se smatrale duplikatima, u rasponu od 0,001-0,1. Više vrijednosti otkrit će više duplikata, ali mogu rezultirati netočnim rezultatima.",
"machine_learning_max_recognition_distance": "Maksimalna udaljenost za detekciju",
@@ -144,7 +150,7 @@
"machine_learning_min_detection_score": "Minimalni rezultat otkrivanja",
"machine_learning_min_detection_score_description": "Minimalni rezultat pouzdanosti za detektirano lice od 0-1. Niže vrijednosti otkrit će više lica, ali mogu dovesti do lažno pozitivnih rezultata.",
"machine_learning_min_recognized_faces": "Minimum prepoznatih lica",
"machine_learning_min_recognized_faces_description": "Najmanji broj prepoznatih lica za osobu koja se stvara. Povećanje toga čini prepoznavanje lica preciznijim po cijenu povećanja šanse da lice nije dodijeljeno osobi.",
"machine_learning_min_recognized_faces_description": "Najmanji broj prepoznatih lica za osobu koja se stvara. Povećanje toga čini Prepoznavanje lica preciznijim po cijenu povećanja šanse da lice nije dodijeljeno osobi.",
"machine_learning_settings": "Postavke strojnog učenja",
"machine_learning_settings_description": "Upravljajte značajkama i postavkama strojnog učenja",
"machine_learning_smart_search": "Pametna pretraga",
@@ -170,21 +176,21 @@
"memory_cleanup_job": "Čišćenje memorije",
"memory_generate_job": "Generiranje memorije",
"metadata_extraction_job": "Izdvoj metapodatke",
"metadata_extraction_job_description": "Izdvojite podatke o metapodacima iz svakog sredstva, kao što su GPS, lica i rezolucija",
"metadata_extraction_job_description": "Izdvojite metapodatke iz svake stavke, kao što su GPS, lica i rezolucija",
"metadata_faces_import_setting": "Omogući uvoz lica",
"metadata_faces_import_setting_description": "Uvezite lica iz EXIF podataka slike i sidecar datoteka",
"metadata_settings": "Postavke Metapodataka",
"metadata_settings_description": "Upravljanje postavkama metapodataka",
"migration_job": "Migracija",
"migration_job_description": "Premjestite minijature za sredstva i lica u najnoviju strukturu mapa",
"migration_job_description": "Premjestite sličice za stavke i lica u najnoviju strukturu mapa",
"nightly_tasks_cluster_faces_setting_description": "Pokreni prepoznavanje lica na novootkrivenim licima",
"nightly_tasks_cluster_new_faces_setting": "Grupiraj nova lica",
"nightly_tasks_database_cleanup_setting": "Zadaci čišćenja baze podataka",
"nightly_tasks_database_cleanup_setting_description": "Očisti stare, istekle podatke iz baze podataka",
"nightly_tasks_generate_memories_setting": "Generiraj uspomene",
"nightly_tasks_generate_memories_setting_description": "Stvori nove uspomene iz sadržaja",
"nightly_tasks_generate_memories_setting_description": "Stvori nove uspomene iz stavki",
"nightly_tasks_missing_thumbnails_setting": "Generiraj nedostajuće sličice",
"nightly_tasks_missing_thumbnails_setting_description": "Stavi u red čekanja sadržaje bez sličica za generiranje sličica",
"nightly_tasks_missing_thumbnails_setting_description": "Stavke bez sličica stavi u red čekanja za generiranje sličica",
"nightly_tasks_settings": "Postavke noćnih zadataka",
"nightly_tasks_settings_description": "Upravljanje noćnim zadacima",
"nightly_tasks_start_time_setting": "Vrijeme početka",
@@ -193,7 +199,7 @@
"nightly_tasks_sync_quota_usage_setting_description": "Ažuriraj korisničku kvotu za pohranu na temelju trenutne potrošnje",
"no_paths_added": "Nema dodanih putanja",
"no_pattern_added": "Nije dodan uzorak",
"note_apply_storage_label_previous_assets": "Napomena: da biste primijenili Oznaku Pohrane na prethodno prenesena sredstva, pokrenite",
"note_apply_storage_label_previous_assets": "Napomena: Da biste primijenili Oznaku pohrane na prethodno prenesene stavke, pokrenite",
"note_cannot_be_changed_later": "NAPOMENA: Ovo se ne može promijeniti kasnije!",
"notification_email_from_address": "Od adrese",
"notification_email_from_address_description": "E-mail adresa pošiljatelja, na primjer: \"Immich Photo Server <noreply@example.com>\". Obavezno koristite adresu s koje vam je dopušteno slanje e-pošte.",
@@ -260,21 +266,21 @@
"sidecar_job": "Sidecar metapodaci",
"sidecar_job_description": "Otkrijte ili sinkronizirajte sidecar metapodatke iz datotečnog sustava",
"slideshow_duration_description": "Broj sekundi za prikaz svake slike",
"smart_search_job_description": "Pokrenite strojno učenje na sredstvima za podršku pametnog pretraživanja",
"storage_template_date_time_description": "Vremenska oznaka stvaranja sredstva koristi se za informacije o datumu i vremenu",
"smart_search_job_description": "Pokrenite strojno učenje na stavkama za korištenje Pametnog pretraživanja",
"storage_template_date_time_description": "Vremenska oznaka stvaranja stavke koristi se za informacije o datumu i vremenu",
"storage_template_date_time_sample": "Vrijeme uzorka {date}",
"storage_template_enable_description": "Omogući mehanizam predloška za pohranu",
"storage_template_hash_verification_enabled": "Omogućena hash provjera",
"storage_template_hash_verification_enabled_description": "Omogućuje hash provjeru, nemojte je onemogućiti osim ako niste sigurni u implikacije",
"storage_template_migration": "Migracija predloška za pohranu",
"storage_template_migration_description": "Primijenite trenutni <link>{template}</link> na prethodno prenesena sredstva",
"storage_template_migration_info": "Predložak za pohranu će sve nastavke (ekstenzije) pretvoriti u mala slova. Promjene predloška primjenjivat će se samo na nova sredstva. Za retroaktivnu primjenu predloška na prethodno prenesena sredstva, pokrenite <link>{job}</link>.",
"storage_template_migration_description": "Primijenite trenutni <link>{template}</link> na prethodno prenesene stavke",
"storage_template_migration_info": "Predložak za pohranu pretvorit će sve datotečne nastavke u mala slova. Promjene predloška primijenit će se samo na nove stavke. Da biste retroaktivno primijenili predložak na prethodno prenesene stavke, pokrenite <link>{job}<link>.",
"storage_template_migration_job": "Posao Migracije Predloška Pohrane",
"storage_template_more_details": "Za više pojedinosti o ovoj značajci pogledajte <template-link>Predložak pohrane</template-link> i njegove <implications-link>implikacije</implications-link>",
"storage_template_onboarding_description_v2": "Kada je omogućena, ova će značajka automatski organizira datoteke prema predlošku koji je definirao korisnik. Za više informacija pogledajte <link>dokumentaciju</link>.",
"storage_template_path_length": "Približno ograničenje duljine putanje: <b>{length, number}</b>/{limit, number}",
"storage_template_settings": "Predložak pohrane",
"storage_template_settings_description": "Upravljajte strukturom mape i nazivom datoteke učitanog sredstva",
"storage_template_settings_description": "Upravljajte strukturom mape i nazivom datoteke učitane stavke",
"storage_template_user_label": "<code>{label}</code> je korisnička oznaka za pohranu",
"system_settings": "Postavke Sustava",
"tag_cleanup_job": "Čišćenje oznaka",
@@ -292,7 +298,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 +361,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 <b>{user}</b> bit će zakazani za trajno brisanje za {delay, plural, one {# day} other {# days}}.",
"user_delete_delay": "Račun i stavke korisnika <b>{user}</b> 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 <b>{user}</b> bit će stavljeni u red čekanja za trajno brisanje <b>odmah</b>.",
"user_delete_immediately_checkbox": "Stavite korisnika i imovinu u red za trenutno 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 <b>{user}</b> bit će stavljeni u red čekanja za trajno brisanje <b>odmah</b>.",
"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 <b>{user}</b> bit će vraćen.",
@@ -390,13 +396,13 @@
"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_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 +427,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 +444,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",
@@ -457,58 +464,60 @@
"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_settings": "Postavke aplikacije",
"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 +527,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",
@@ -1034,7 +1043,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 +1057,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",
@@ -1220,7 +1229,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}",
@@ -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",

View File

@@ -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",
@@ -598,6 +600,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",

View File

@@ -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 limportazione",
@@ -33,6 +33,7 @@
"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",
@@ -1038,6 +1039,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",

View File

@@ -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}つのアルバムへ追加",
@@ -598,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": "アップロードが進行中です。後でもう一度試してください",

View File

@@ -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": "რუკა",

View File

@@ -28,10 +28,12 @@
"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",
@@ -49,7 +51,11 @@
"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 <backblaze-link>3-2-1 rezerves kopiju stratēģiju</backblaze-link>. Lai nodrošinātu visaptverošu dublēšanas risinājumu, vajadzētu veidot kopijas saviem augšupielādētajiem fotoattēliem/videoklipiem, kā arī Immich datubāzei.",
"backup_onboarding_footer": "Lai iegūtu vairāk informācijas par Immich rezerves kopiju veidošanu, lūdzu, apskatiet <link>dokumentāciju</link>.",
"backup_onboarding_parts_title": "3-2-1 rezerves kopija ietver:",
"backup_onboarding_title": "Rezerves kopijas",
"backup_settings": "Datubāzes izrakstu iestatījumi",
"backup_settings_description": "Datubāzes izrakstu iestatījumu pārvaldība",
@@ -61,12 +67,15 @@
"confirm_user_password_reset": "Vai tiešām vēlaties atiestatīt lietotāja {user} paroli?",
"create_job": "Izveidot uzdevumu",
"cron_expression": "Cron izteiksme",
"cron_expression_description": "Iestatiet skenēšanas intervālu, izmantojot cron formātu. Papildu informācijai skatiet, piemēram, <link>Crontab Guru</link>",
"cron_expression_presets": "Cron izteiksmju sagataves",
"disable_login": "Atspējot pieteikšanos",
"duplicate_detection_job_description": "Analizēt failus ar mašīnmācīšanos, lai noteiktu līdzīgus attēlus. Šī funkcija izmanto viedo meklēšanu",
"external_library_management": "Ārējo bibliotēku pārvaldība",
"face_detection": "Seju noteikšana",
"face_detection_description": "Atpazīt attēlos sejas, izmantojot mašīnmācīšanos. Video gadījumā tiek ņemta vērā tikai sīktēls. \"Atsvaidzināt\" atkārtoti apstrādā visus attēlus. \"Atiestatīt\" izdzēš visus pašreizējos seju datus. \"Trūkstošie\" ierindo attēlus, kas vēl nav apstrādāti. Pēc seju noteikšanas pabeigšanas atrastās sejas tiek ierindotas seju atpazīšanai, grupējot tās pēc esošas vai jauns personas.",
"facial_recognition_job_description": "Grupēt atpazītās sejas pēc cilvēkiem. Šis solis tiek veikts pēc seju noteikšanas pabeigšanas. \"Atiestatīt\" atkārtoti sagrupē visas sejas. \"Trūkstošie\" ierindo sejas, kurām nav piešķirta persona.",
"force_delete_user_warning": "BRĪDINĀJUMS: Tas uzreiz izdzēsīs lietotāju ar visiem failiem. Šo darbību nevar atcelt, un failus nevarēs atgūt.",
"image_format": "Formāts",
"image_format_description": "WebP veido mazākus failus nekā JPEG, taču to kodēšana ir lēnāka.",
"image_fullsize_description": "Pilnizmēra attēls ar noņemtiem metadatiem, ko izmanto, kad attēls ir tuvināts",
@@ -76,29 +85,37 @@
"image_fullsize_title": "Pilnizmēra attēlu iestatījumi",
"image_prefer_embedded_preview": "Priekšroka iegultajam priekšskatījumam",
"image_prefer_embedded_preview_setting_description": "Izmanto RAW fotoattēlos iestrādātos priekšskatījumus, ja tādi ir pieejami, kā ievades datus attēlu apstrādei. Tādējādi dažiem attēliem var iegūt precīzākas krāsas, taču priekšskatījuma kvalitāte ir atkarīga no fotokameras un attēlam var būt vairāk saspiešanas artefaktu.",
"image_prefer_wide_gamut": "Dot priekšroku plašai krāsu gammai",
"image_prefer_wide_gamut_setting_description": "Sīktēliem izmanto Display P3. Tas labāk saglabā attēlu dzīvīgumu ar plašu krāsu gammu, bet attēli var izskatīties atšķirīgi vecās ierīcēs ar vecu pārlūka versiju. sRGB attēli tiek saglabāti kā sRGB, lai izvairītos no krāsu izmaiņām.",
"image_preview_quality_description": "Priekšskatījuma kvalitāte no 1 līdz 100. Augstāka kvalitāte ir labāka, bet veido lielākus failus un var samazināt lietotnes reaģēšanas ātrumu. Zemas vērtības iestatīšana var ietekmēt mašīnmācīšanās kvalitāti.",
"image_preview_title": "Priekšskatījuma iestatījumi",
"image_quality": "Kvalitāte",
"image_resolution": "Izšķirtspēja",
"image_resolution_description": "Augstāka izšķirtspēja ļauj saglabāt vairāk detaļu, taču kodēšana aizņem vairāk laika, failu izmērs ir lielāks un var samazināties lietotnes reaģēšanas ātrums.",
"image_settings": "Attēlu iestatījumi",
"image_settings_description": "Ģenerēto attēlu kvalitātes un izšķirtspējas pārvaldība",
"image_thumbnail_description": "Neliels sīktēls bez metadatiem, ko izmanto, lai apskatītu vairākus fotoattēlus, piemēram, galvenajā laika skalā",
"image_thumbnail_quality_description": "Sīktēlu kvalitāte no 1 līdz 100. Augstāka kvalitāte ir labāka, bet veido lielākus failus un var samazināt lietotnes reaģēšanas ātrumu.",
"image_thumbnail_title": "Sīktēlu iestatījumi",
"job_concurrency": "{job} vienlaicīgi",
"job_created": "Uzdevums izveidots",
"job_not_concurrency_safe": "Šis uzdevums nav drošs vienlaicīgai izpildei.",
"job_settings": "Uzdevumu iestatījumi",
"job_settings_description": "Uzdevumu izpildes vienlaicīguma pārvaldība",
"job_status": "Uzdevumu statuss",
"library_created": "Izveidoja bibliotēku: {library}",
"library_deleted": "Bibliotēka dzēsta",
"library_import_path_description": "Norādi importējamo mapi. Šī mape un tās apakšmapes tiks pārbaudīta, lai atrastu attēlus un videoklipus.",
"library_scanning": "Periodiska skenēšana",
"library_scanning_description": "Konfigurē periodisku bibliotēku skenēšanu",
"library_scanning_enable_description": "Iespējot periodisku bibliotēku skenēšanu",
"library_settings": "Ārējā bibliotēka",
"library_settings": "Ārējās bibliotēkas",
"library_settings_description": "Ārējo bibliotēku iestatījumu pārvaldība",
"library_tasks_description": "Pārbaudīt ārējās bibliotēkas, lai atrastu jaunus un/vai mainītus failus",
"library_watching_enable_description": "Uzraudzīt ārējo bibliotēku failu izmaiņas",
"library_watching_settings": "Bibliotēku uzraudzīšana (EKSPERIMENTĀLA)",
"library_watching_settings_description": "Automātiski uzraudzīt, vai ir mainīti faili",
"machine_learning_availability_checks": "Pieejamības pārbaudes",
"machine_learning_availability_checks_enabled": "Iespējot pieejamības pārbaudes",
"machine_learning_clip_model": "CLIP modelis",
"machine_learning_duplicate_detection": "Dublikātu noteikšana",
@@ -108,6 +125,7 @@
"machine_learning_enabled_description": "Ja funkcija ir atspējota, tiks atspējotas visas ML funkcijas neatkarīgi no zemāk esošajiem iestatījumiem.",
"machine_learning_facial_recognition": "Seju atpazīšana",
"machine_learning_facial_recognition_model": "Seju atpazīšanas modelis",
"machine_learning_facial_recognition_model_description": "Modeļi ir uzskaitīti pēc to izmēra dilstošā secībā. Lielāki modeļi ir lēnāki un izmanto vairāk atmiņas, bet nodrošina labākus rezultātus. Ņem vērā, ka, mainot modeli, ir atkārtoti jāpalaiž sejas atpazīšanas uzdevums visiem attēliem.",
"machine_learning_facial_recognition_setting": "Iespējot seju atpazīšanu",
"machine_learning_settings": "Mašīnmācīšanās iestatījumi",
"machine_learning_settings_description": "Mašīnmācīšanās funkciju un iestatījumu pārvaldība",
@@ -120,6 +138,7 @@
"map_dark_style": "Tumšais stils",
"map_gps_settings": "Kartes un GPS iestatījumi",
"map_gps_settings_description": "Karšu un GPS (apgrieztās ģeokodēšanas) iestatījumu pārvaldība",
"map_implications": "Kartes funkcija izmanto ārējo kartes fragmentu pakalpojumu (tiles.immich.cloud)",
"map_light_style": "Gaišais stils",
"map_manage_reverse_geocoding_settings": "<link>Reversās ģeokodēšanas</link> iestatījumu pārvaldība",
"map_reverse_geocoding": "Reversā ģeokodēšana",
@@ -130,6 +149,7 @@
"memory_generate_job": "Atmiņu ģenerēšana",
"metadata_extraction_job": "Metadatu iegūšana",
"metadata_extraction_job_description": "iegūt metadatu informāciju no katra faila, piemēram, GPS, sejas un izšķirtspēju",
"metadata_faces_import_setting": "Iespējot seju importēšanu",
"metadata_faces_import_setting_description": "Importēt sejas no attēla EXIF datiem un blakusfailiem",
"metadata_settings": "Metadatu iestatījumi",
"metadata_settings_description": "Metadatu iestatījumu pārvaldība",
@@ -151,6 +171,7 @@
"nightly_tasks_sync_quota_usage_setting_description": "Pārrēķināt lietotāja uzglabāšanas kvotu, pamatojoties uz pašreizējo izmantošanu",
"no_paths_added": "Nav pievienots neviens ceļš",
"no_pattern_added": "Nav pievienots neviens izslēgšanas šablons",
"note_apply_storage_label_previous_assets": "Piezīme: Lai piemērotu glabātuves nosaukumu iepriekš augšupielādētiem failiem, izpildiet",
"note_cannot_be_changed_later": "PIEZĪME: Vēlāk to vairs nevar mainīt!",
"notification_email_from_address": "No adreses",
"notification_email_from_address_description": "Sūtītāja e-pasta adrese, piemēram: “Immich foto serveris <noreply@example.com>”",
@@ -158,7 +179,9 @@
"notification_email_ignore_certificate_errors_description": "Ignorēt TLS sertifikāta apstiprināšanas kļūdas (nav ieteicams)",
"notification_email_port_description": "e-pasta servera ports (piemēram, 25, 465 vai 587)",
"notification_email_sent_test_email_button": "Nosūtīt testa e-pastu un saglabāt",
"notification_email_setting_description": "E-pasta paziņojumu sūtīšanas iestatījumi",
"notification_email_test_email": "Nosūtīt testa e-pastu",
"notification_email_test_email_failed": "Neizdevās nosūtīt pārbaudes e-pastu, pārbaudi ievadītās vērtības",
"notification_email_test_email_sent": "Uz {email} ir nosūtīts testa e-pasts. Lūdzu, pārbaudi savu iesūtni.",
"notification_settings": "Paziņojumu iestatījumi",
"notification_settings_description": "Paziņojumu iestatījumu, tostarp e-pasta, pārvaldība",
@@ -170,6 +193,8 @@
"oauth_enable_description": "Pieslēgties ar OAuth",
"oauth_settings": "OAuth",
"oauth_settings_description": "OAuth pieteikšanās iestatījumu pārvaldība",
"oauth_storage_label_claim": "Glabātuves nosaukuma pieteikums",
"oauth_storage_label_claim_description": "Automātiski iestatīt lietotāja glabātuves nosaukumu uz šī pieteikuma vērtību.",
"oauth_storage_quota_default": "Noklusējuma krātuves kvota (GiB)",
"password_enable_description": "Pieteikšanās ar e-pasta adresi un paroli",
"password_settings": "Pieteikšanās ar paroli",
@@ -204,6 +229,7 @@
"storage_template_migration_job": "Krātuves veidņu migrācijas uzdevumu",
"storage_template_path_length": "Aptuvenais ceļa garuma ierobežojums: <b>{length, number}</b>/{limit, number}",
"storage_template_settings": "Krātuves veidne",
"storage_template_user_label": "<code>{label}</code> ir lietotāja glabātuves nosaukums",
"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.",
@@ -222,15 +248,19 @@
"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_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 <h264-link>H.264 kodeku</h264-link>, <hevc-link>HEVC kodeku</hevc-link> un <vp9-link>VP9 kodeku</vp9-link>.",
"transcoding_constant_quality_mode": "Nemainīgas kvalitātes režīms",
"transcoding_constant_quality_mode_description": "ICQ ir labāks nekā CQP, bet dažas aparatūras paātrinājuma ierīces neatbalsta šo režīmu. Iestatot šo opciju, tiks izmantots norādītais režīms, ja tiek izmantota kvalitātē balstīta kodēšana. NVENC to ignorē, jo neatbalsta ICQ.",
"transcoding_constant_rate_factor_description": "Video kvalitātes līmenis. Tipiskās vērtības ir 23 priekš H.264, 28 priekš HEVC, 31 priekš VP9 un 35 priekš AV1. Zemāka vērtība ir labāka, bet rada lielākus failus.",
"transcoding_hardware_acceleration": "Aparatūras paātrinājums",
"transcoding_required_description": "Tikai video, kas nav atbalstītā formātā",
"transcoding_settings": "Video transkodēšanas iestatījumi",
"transcoding_threads": "Pavedieni",
"transcoding_threads_description": "Augstākas vērtības nodrošina ātrāku kodēšanu, bet atstāj mazāk jaudas serverim, lai apstrādātu citus aktīvos uzdevumus. Šai vērtībai nevajadzētu pārsniegt CPU kodolu skaitu. Ja iestatīta uz 0, maksimizē izmantošanu.",
"transcoding_video_codec": "Video kodeks",
"trash_number_of_days": "Dienu skaits",
"trash_settings": "Atkritnes iestatījumi",
@@ -409,6 +439,7 @@
"backup_controller_page_turn_on": "Ieslēgt priekšplāna dublēšanu",
"backup_controller_page_uploading_file_info": "Faila informācijas augšupielāde",
"backup_err_only_album": "Nevar noņemt vienīgo albumu",
"backup_error_sync_failed": "Sinhronizācija neizdevās. Nevar apstrādāt rezerves kopiju.",
"backup_info_card_assets": "faili",
"backup_manual_cancelled": "Atcelts",
"backup_manual_in_progress": "Augšupielāde jau notiek. Mēģiniet pēc kāda laika atkārtoti",
@@ -440,7 +471,7 @@
"cache_settings_statistics_title": "Kešatmiņas lietojums",
"cache_settings_subtitle": "Kontrolēt Immich mobilās lietotnes kešdarbi",
"cache_settings_tile_subtitle": "Kontrolēt lokālās krātuves uzvedību",
"cache_settings_tile_title": "Lokālā Krātuve",
"cache_settings_tile_title": "Lokālā krātuve",
"cache_settings_title": "Kešdarbes iestatījumi",
"camera": "Fotokamera",
"camera_brand": "Fotokameras zīmols",
@@ -570,7 +601,7 @@
"delete_library": "Dzēst bibliotēku",
"delete_link": "Dzēst saiti",
"delete_local_action_prompt": "{count} dzēsti lokāli",
"delete_local_dialog_ok_backed_up_only": "Dzēst tikai Dublētos",
"delete_local_dialog_ok_backed_up_only": "Dzēst tikai dublētos",
"delete_local_dialog_ok_force": "Tā pat dzēst",
"delete_others": "Dzēst citus",
"delete_shared_link": "Dzēst Kopīgošanas saiti",
@@ -587,6 +618,7 @@
"discovered_devices": "Atrastās ierīces",
"display_order": "Attēlošanas secība",
"display_original_photos": "Rādīt oriģinālās fotogrāfijas",
"do_not_show_again": "Vairs nerādīt šo ziņojumu",
"documentation": "Dokumentācija",
"done": "Gatavs",
"download": "Lejupielādēt",
@@ -619,6 +651,7 @@
"edit_birthday": "Labot dzimšanas dienu",
"edit_date": "Labot datumu",
"edit_date_and_time": "Labot datumu un laiku",
"edit_date_and_time_action_prompt": "{count} datums un laiks labots",
"edit_description": "Labot aprakstu",
"edit_description_prompt": "Lūdzu, izvēlies jaunu aprakstu:",
"edit_faces": "Labot sejas",
@@ -653,7 +686,11 @@
"error_loading_image": "Kļūda, ielādējot attēlu",
"error_loading_partners": "Kļūda, ielādējot partnerus: {error}",
"error_saving_image": "Kļūda: {error}",
"error_title": "Kļūda - kaut kas nogāja greizi",
"errors": {
"cannot_navigate_next_asset": "Nevar pāriet uz nākamo resursu",
"cannot_navigate_previous_asset": "Nevar pāriet uz iepriekšējo resursu",
"cant_apply_changes": "Nevar piemērot izmaiņas",
"cant_get_faces": "Nevar iegūt sejas",
"cant_search_people": "Neizdevās veikt peronu meklēšanu",
"exclusion_pattern_already_exists": "Šāds izslēgšanas paraugs jau pastāv.",
@@ -676,7 +713,12 @@
"profile_picture_transparent_pixels": "Profila attēlos nevar būt caurspīdīgi pikseļi. Lūdzu, palielini un/vai pārvieto attēlu.",
"something_went_wrong": "Kaut kas nogāja greizi",
"unable_to_change_description": "Neizdevās nomainīt aprakstu",
"unable_to_create_admin_account": "Nevar izveidot administratora kontu",
"unable_to_create_api_key": "Nevar izveidot jaunu API atslēgu",
"unable_to_create_library": "Nevar izveidot bibliotēku",
"unable_to_create_user": "Neizdevās izveidot lietotāju",
"unable_to_delete_album": "Nevar izdzēst albumu",
"unable_to_delete_asset": "Nevar izdzēst failu",
"unable_to_delete_user": "Neizdevās dzēst lietotāju",
"unable_to_empty_trash": "Neizdevās iztukšot atkritni",
"unable_to_hide_person": "Neizdevās paslēpt personu",
@@ -768,20 +810,20 @@
"hide_person": "Paslēpt personu",
"hide_unnamed_people": "Paslēpt nenosauktas personas",
"home_page_add_to_album_conflicts": "Pievienoja {added} failus albumam {album}. {failed} faili jau ir albumā.",
"home_page_add_to_album_err_local": "Albumiem vēl nevar pievienot lokālos aktīvus, notiek izlaišana",
"home_page_add_to_album_err_local": "Albumiem vēl nevar pievienot lokālos failus, izlaiž",
"home_page_add_to_album_success": "Pievienoja {added} aktīvus albumam {album}.",
"home_page_album_err_partner": "Pagaidām nevar pievienot partnera aktīvus albumam, notiek izlaišana",
"home_page_archive_err_local": "Vēl nevar arhivēt lokālos aktīvus, notiek izlaišana",
"home_page_archive_err_local": "Vēl nevar arhivēt lokālos aktīvus, izlaiž",
"home_page_archive_err_partner": "Nevarēja arhivēt partnera aktīvus, notiek izlaišana",
"home_page_building_timeline": "Tiek izveidota laika skala",
"home_page_delete_err_partner": "Nevarēja dzēst partnera aktīvus, notiek izlaišana",
"home_page_delete_remote_err_local": "Lokālie faili dzēšanai attālinātajā izvēlē, tiek izlaists",
"home_page_favorite_err_local": "Vēl nevar pievienot izlasei vietējos failus, izlaiž",
"home_page_delete_remote_err_local": "Lokālie faili dzēšanai attālinātajā izvēlē, izlaiž",
"home_page_favorite_err_local": "Vēl nevar pievienot izlasei lokālos failus, izlaiž",
"home_page_favorite_err_partner": "Pagaidām nevar ievietot izlasē partnera failus, izlaiž",
"home_page_first_time_notice": "Ja šī ir pirmā reize, kad izmanto lietotni, lūdzu, izvēlies dublējamo albumu, lai laika skalā varētu aizpildīt fotoattēlus un videoklipus",
"home_page_locked_error_local": "Nevar pārvietot vietējos failus uz slēgto mapi, izlaiž",
"home_page_locked_error_local": "Nevar pārvietot lokālos failus uz slēgto mapi, izlaiž",
"home_page_locked_error_partner": "Nevar pārvietot partneru failus uz slēgto mapi, izlaiž",
"home_page_share_err_local": "Caur saiti nevarēja kopīgot lokālos aktīvus, notiek izlaišana",
"home_page_share_err_local": "Caur saiti nevarēja kopīgot lokālos aktīvus, izlaiž",
"home_page_upload_err_limit": "Vienlaikus var augšupielādēt ne vairāk kā 30 aktīvus, notiek izlaišana",
"hour": "Stunda",
"hours": "Stundas",
@@ -852,7 +894,11 @@
"list": "Saraksts",
"loading": "Ielādē",
"local": "Lokāli",
"local_asset_cast_failed": "Nav iespējams pārraidīt resursu, kas nav augšupielādēts serverī",
"local_assets": "Lokālie faili",
"local_media_summary": "Lokālo mediju kopsavilkums",
"local_network": "Lokālais tīkls",
"local_network_sheet_info": "Izmantojot norādīto Wi-Fi tīklu, lietotne veidos savienojumu ar serveri, izmantojot šo URL",
"location_permission": "Atrašanās vietas atļauja",
"location_permission_content": "Lai izmantotu automātiskās pārslēgšanās funkciju, Immich ir nepieciešama precīzas atrašanās vietas atļauja, lai varētu nolasīt pašreizējā Wi-Fi tīkla nosaukumu",
"location_picker_choose_on_map": "Izvēlēties uz kartes",
@@ -979,11 +1025,12 @@
"no_assets_message": "NOKLIKŠĶINIET, LAI AUGŠUPIELĀDĒTU SAVU PIRMO FOTOATTĒLU",
"no_assets_to_show": "Nav uzrādāmo aktīvu",
"no_cast_devices_found": "Nav atrasta neviena pārraides ierīce",
"no_checksum_local": "Nav pieejama kontrolsumma - nevar iegūt vietējos failus",
"no_checksum_local": "Nav pieejama kontrolsumma - nevar iegūt lokālos failus",
"no_checksum_remote": "Nav pieejama kontrolsumma - nevar iegūt attālo failu",
"no_duplicates_found": "Dublikāti netika atrasti.",
"no_exif_info_available": "Nav pieejama exif informācija",
"no_explore_results_message": "Augšupielādē vairāk fotogrāfiju, lai iepazītu savu kolekciju.",
"no_local_assets_found": "Ar šo kontrolsummu nav atrasts neviens lokālais fails",
"no_name": "Nav nosaukuma",
"no_notifications": "Nav paziņojumu",
"no_places": "Nav atrašanās vietu",
@@ -991,6 +1038,7 @@
"no_results_description": "Izmēģiniet sinonīmu vai vispārīgāku atslēgvārdu",
"not_in_any_album": "Nav nevienā albumā",
"not_selected": "Nav izvēlēts",
"note_apply_storage_label_to_previously_uploaded assets": "Piezīme: Lai piemērotu glabātuves nosaukumu iepriekš augšupielādētiem failiem, izpildiet",
"notes": "Piezīmes",
"nothing_here_yet": "Šeit vēl nekā nav",
"notification_permission_dialog_content": "Lai iespējotu paziņojumus, atveriet Iestatījumi un atlasiet Atļaut.",
@@ -1234,6 +1282,7 @@
"search_suggestion_list_smart_search_hint_2": "m:jūsu-meklēšanas-frāze",
"search_type": "Meklēšanas veids",
"search_your_photos": "Meklēt fotoattēlos",
"searching_locales": "Meklē lokalizācijas...",
"second": "Sekunde",
"see_all_people": "Skatīt visas personas",
"select_album_cover": "Izvēlieties albuma vāciņu",
@@ -1383,13 +1432,16 @@
"stop_photo_sharing_description": "{partner} vairs nevarēs piekļūt tavām fotogrāfijām.",
"stop_sharing_photos_with_user": "Pārtraukt dalīties ar fotogrāfijām ar šo lietotāju",
"storage": "Vieta krātuvē",
"storage_label": "Glabātuves nosaukums",
"storage_usage": "{used} no {available} izmantoti",
"submit": "Iesniegt",
"suggestions": "Ieteikumi",
"sunrise_on_the_beach": "Saullēkts pludmalē",
"support": "Atbalsts",
"support_and_feedback": "Atbalsts un atsauksmes",
"support_third_party_description": "Tavu Immich instalāciju ir sagatavojusi trešā puse. Problēmas, ar kurām sastopies, var būt saistītas ar šo pakotni, tāpēc lūdzu vispirms ziņo par tām, izmantojot zemāk norādītās saites.",
"sync": "Sinhronizēt",
"sync_local": "Sinhronizēt lokāli",
"sync_status": "Sinhronizācijas statuss",
"sync_status_subtitle": "Skatīt un pārvaldīt sinhronizācijas sistēmu",
"theme": "Dizains",

View File

@@ -357,6 +357,9 @@
"trash_number_of_days_description": "कायमस्वरीत्या काढून टाकण्यापूर्वी ट्रॅशमध्ये सामग्री किती दिवस ठेवायची ते क्रम",
"trash_settings": "ट्रॅश सेटिंग्ज",
"trash_settings_description": "ट्रॅश सेटिंग्ज व्यवस्थापित करा",
"unlink_all_oauth_accounts": "सर्व OAuth खात्यांची जोडणी तोडा",
"unlink_all_oauth_accounts_description": "नव्या सेवा-प्रदात्याकडे स्थलांतर करण्यापूर्वी सर्व OAuth खात्यांची जोडणी तोडायला विसरू नका.",
"unlink_all_oauth_accounts_prompt": "तुम्ही खरोखर सर्व OAuth खात्यांची जोडणी तोडू इच्छिता का? यामुळे प्रत्येक वापरकर्त्याचा OAuth ID रीसेट होईल आणि ही कृती पूर्वस्थितीत आणता येणार नाही.",
"user_cleanup_job": "वापरकर्ता स्वच्छता",
"user_delete_delay": "<b>{user}</b> यांचे खाते आणि मालमत्ता कायमची हटविण्यासाठी {delay, plural, one {# दिवस} other {# दिवस}} नंतर शेड्यूल केली जातील.",
"user_delete_delay_settings": "हटविण्याची विलंबीत कालावधी",
@@ -390,6 +393,8 @@
"advanced_settings_prefer_remote_title": "रिमोट प्रतिमा पसंत करा",
"advanced_settings_proxy_headers_subtitle": "प्रत्येक नेटवर्क विनंतीसोबत Immich पाठवावयाचे प्रॉक्सी हेडर येथे परिभाषित करा",
"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_sync_remote_deletions_subtitle": "वेबवर ही क्रिया केली गेल्यावर या उपकरणावर असलेले अॅसेट आपोआप हटवा किंवा पुनर्संचयित करा",
@@ -417,6 +422,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,6 +461,7 @@
"app_bar_signout_dialog_title": "साइन आउट",
"app_settings": "अ‍ॅप सेटिंग्ज",
"appears_in": "दिसते (कुठे दिसते)",
"apply_count": "लागू करा ({count, number})",
"archive": "आर्काइव्ह",
"archive_action_prompt": "{count} आर्काइव्हमध्ये जोडले",
"archive_or_unarchive_photo": "फोटो आर्काइव्ह करा किंवा अनआर्काइव्ह करा",
@@ -487,6 +494,8 @@
"asset_restored_successfully": "साधन यशस्वीपणे पुनर्संचयित केले गेले",
"asset_skipped": "वगळले",
"asset_skipped_in_trash": "ट्रॅशमध्ये",
"asset_trashed": "मीडिया घटक कचरापेटीत हलवला",
"asset_troubleshoot": "मीडिया घटक समस्यानिवारण",
"asset_uploaded": "अपलोड झाले",
"asset_uploading": "अपलोड करत आहे…",
"asset_viewer_settings_subtitle": "आपल्या गॅलरी व्ह्यूअरच्या सेटिंग्ज व्यवस्थापित करा",
@@ -494,7 +503,9 @@
"assets": "साधने",
"assets_added_count": "{count, plural, one {# साधन जोडले} other {# साधने जोडले}}",
"assets_added_to_album_count": "{count, plural, one {# साधन अल्बममध्ये जोडले} other {# साधने अल्बममध्ये जोडले}}",
"assets_added_to_albums_count": "{albumTotal, plural, one {# अल्बममध्ये} other {# अल्बममध्ये}} {assetTotal, plural, one {# मीडिया घटक} other {# मीडिया घटक}} जोडले",
"assets_cannot_be_added_to_album_count": "{count, plural, one {# साधन अल्बममध्ये जोडता येणार नाही} other {# साधने अल्बममध्ये जोडता येणार नाहीत}}",
"assets_cannot_be_added_to_albums": "{count, plural, one {# मीडिया घटक कोणत्याही अल्बममध्ये जोडता येत नाही} other {# मीडिया घटक कोणत्याही अल्बममध्ये जोडता येत नाहीत}}",
"assets_count": "{count, plural, one {# साधन} other {# साधने}}",
"assets_deleted_permanently": "{count} साधन(े) कायमचे हटविले",
"assets_deleted_permanently_from_server": "Immich सर्व्हरवरून {count} साधन(े) कायमचे हटविले",
@@ -502,6 +513,20 @@
"assets_downloaded_successfully": "{count, plural, one {एक फाईल यशस्वीरित्या डाउनलोड झाली} other {# फाईल्स यशस्वीरित्या डाउनलोड झाल्या}}",
"assets_moved_to_trash_count": "{count, plural, one {एक फाईल ट्रॅशमध्ये हलवली} other {# फाईल्स ट्रॅशमध्ये हलवल्या}}",
"assets_permanently_deleted_count": "{count, plural, one {एक फाईल कायमस्वरूपी हटवली} other {# फाईल्स कायमस्वरूपी हटवल्या}}",
"assets_removed_count": "{count, plural, one {# मीडिया घटक काढून टाकला} other {# मीडिया घटक काढून टाकले}}",
"assets_removed_permanently_from_device": "{count} मीडिया घटक तुमच्या डिव्हाइसवरून कायमचे काढले गेले",
"assets_restore_confirmation": "कचरापेटीतले सर्व मीडिया घटक पुनर्संचयित करायचे आहेत का? ही कृती पूर्ववत करता येणार नाही. लक्षात ठेवा - ऑफलाइन मीडिया घटक अशा प्रकारे पुनर्संचयित करता येत नाहीत.",
"assets_restored_count": "{count, plural, one {# मीडिया घटक पुनर्संचयित केला} other {# मीडिया घटक पुनर्संचयित केले}}",
"assets_restored_successfully": "{count} मीडिया घटक यशस्वीरित्या पुनर्संचयित झाले",
"assets_trashed": "{count} मीडिया घटक कचरापेटीत हलवले",
"assets_trashed_count": "{count, plural, one {# मीडिया घटक कचरापेटीत हलवला} other {# मीडिया घटक कचरापेटीत हलवले}}",
"assets_trashed_from_server": "{count} मीडिया घटक Immich सर्व्हरवरून कचरापेटीत हलवले",
"assets_were_part_of_album_count": "{count, plural, one {मीडिया घटक आधीच त्या अल्बमचा भाग होता} other {मीडिया घटक आधीच त्या अल्बमचा भाग होते}}",
"assets_were_part_of_albums_count": "{count, plural, one {मीडिया घटक आधीच अल्बम्सचा भाग होता} other {मीडिया घटक आधीच अल्बम्सचा भाग होते}}",
"authorized_devices": "अधिकृत उपकरणे",
"automatic_endpoint_switching_subtitle": "उपलब्ध असल्यास निश्‍चित Wi-Fi वर स्थानिकरित्या कनेक्ट करा आणि इतर ठिकाणी पर्यायी कनेक्शन वापरा",
"automatic_endpoint_switching_title": "स्वयंचलित URL स्विचिंग",
"autoplay_slideshow": "स्वयंचलित स्लाइडशो",
"back": "मागे",
"back_close_deselect": "मागे किंवा बंद करा / निवड रद्द करा",
"background_location_permission": "बॅकग्राउंडमध्ये स्थान परवानगी द्या",
@@ -562,6 +587,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": "अपलोड आधीच चालू आहे. थोड्यावेळेनंतर पुन्हा प्रयत्न करा",
@@ -629,6 +655,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 वर हा तपास चालवा आणि सर्व फाईल्स बॅकअप झाल्यावरच. प्रक्रिया काही मिनिटे लागू शकते.",
@@ -715,6 +743,7 @@
"create_user": "वापरकर्ता तयार करा",
"created": "तयार केले",
"created_at": "निर्मिती तारीख",
"creating_linked_albums": "लिंक केलेले अल्बम तयार करत आहे...",
"crop": "छाटणी करा",
"curated_object_page_title": "गोष्टी",
"current_device": "वर्तमान उपकरण",
@@ -1032,6 +1061,7 @@
"filter_people": "लोक फिल्टर करा",
"filter_places": "ठिकाणे फिल्टर करा",
"find_them_fast": "नावाने पटकन शोधा",
"first": "प्रथम",
"fix_incorrect_match": "चुकीची जुळणी दुरुस्त करा",
"folder": "फोल्डर",
"folder_not_found": "फोल्डर सापडला नाही",
@@ -1042,18 +1072,72 @@
"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_missing": "GPS उपलब्ध नाही",
"grant_permission": "परवानगी द्या",
"group_albums_by": "अल्बम गटबद्ध करा: …",
"group_country": "देशानुसार गट करा",
"group_no": "गटबद्ध नाही",
"group_owner": "मालकानुसार गट करा",
"group_places_by": "स्थळे गटबद्ध करा: …",
"group_year": "वर्षानुसार गटबद्ध करा",
"haptic_feedback_switch": "हॅप्टिक फीडबॅक सक्षम करा",
"haptic_feedback_title": "हॅप्टिक फीडबॅक",
"has_quota": "कोटा आहे",
"hash_asset": "मीडिया घटकाचा हॅश तयार करा",
"hashed_assets": "हॅश केलेले मीडिया घटक",
"hashing": "हॅशिंग",
"header_settings_add_header_tip": "हेडर जोडा",
"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": "सर्व व्यक्ती लपवा",
"hide_gallery": "गॅलरी लपवा",
"hide_named_person": "व्यक्ती {name} लपवा",
"hide_password": "संकेतशब्द लपवा",
"hide_person": "व्यक्ती लपवा",
"hide_unnamed_people": "नाव नसलेल्या व्यक्ती लपवा",
"home_page_add_to_album_conflicts": "अल्बम {album} मध्ये {added} मीडिया घटक जोडले. {failed} मीडिया घटक आधीच त्या अल्बममध्ये आहेत.",
"home_page_add_to_album_err_local": "स्थानिक मीडिया घटक अजून अल्बममध्ये जोडता येत नाहीत, वगळत आहे",
"home_page_add_to_album_success": "अल्बम {album} मध्ये {added} मीडिया घटक जोडले.",
"home_page_album_err_partner": "भागीदारचे मीडिया घटक अजून अल्बममध्ये जोडता येत नाहीत, वगळत आहे",
"home_page_archive_err_local": "स्थानिक मीडिया घटक अजून संग्रहित करता येत नाहीत, वगळत आहे",
"home_page_archive_err_partner": "भागीदारचे मीडिया घटक संग्रहित करता येत नाहीत, वगळत आहे",
"home_page_building_timeline": "टाइमलाइन तयार करत आहे",
"home_page_delete_err_partner": "भागीदारचे मीडिया घटक हटवता येत नाहीत, वगळत आहे",
"home_page_delete_remote_err_local": "दूरस्थ हटवण्याच्या निवडीत स्थानिक मीडिया घटक आहेत, वगळत आहे",
"home_page_favorite_err_local": "स्थानिक मीडिया घटकांना अजून आवडीमध्ये जोडता येत नाही, वगळत आहे",
"home_page_favorite_err_partner": "भागीदारचे मीडिया घटक अजून आवडीमध्ये जोडता येत नाहीत, वगळत आहे",
"home_page_first_time_notice": "अ‍ॅप प्रथमच वापरत असाल तर टाइमलाइनमध्ये फोटो आणि व्हिडिओ भरण्यासाठी कृपया बॅकअप अल्बम निवडा",
"home_page_locked_error_local": "स्थानिक मीडिया घटक लॉक केलेल्या फोल्डरमध्ये हलवता येत नाहीत, वगळत आहे",
"home_page_locked_error_partner": "भागीदारचे मीडिया घटक लॉक केलेल्या फोल्डरमध्ये हलवता येत नाहीत, वगळत आहे",
"home_page_share_err_local": "स्थानिक मीडिया घटक लिंकद्वारे शेअर करता येत नाहीत, वगळत आहे",
"home_page_upload_err_limit": "एकावेळी कमाल 30 मीडिया घटकच अपलोड करता येतात, वगळत आहे",
"host": "होस्ट",
"hour": "तास",
"hours": "तास",
"id": "ID",
"idle": "निष्क्रिय",
"ignore_icloud_photos": "iCloud वरील फोटो दुर्लक्षित करा",
"ignore_icloud_photos_description": "iCloud वर साठवलेले फोटो Immich सर्व्हरवर अपलोड केले जाणार नाहीत",
"image": "फोटो",
"image_alt_text_date": "{isVideo, select, true {व्हिडिओ} other {फोटो}} {date} ला घेतले",
"image_alt_text_date_1_person": "{isVideo, select, true {व्हिडिओ} other {फोटो}} {person1} सोबत {date} ला घेतले",
"image_alt_text_date_2_people": "{isVideo, select, true {व्हिडिओ} other {फोटो}} {person1} आणि {person2} सोबत {date} ला घेतले",
"image_alt_text_date_3_people": "{isVideo, select, true {व्हिडिओ} other {फोटो}} {person1}, {person2} आणि {person3} सोबत {date} ला घेतले",
"image_alt_text_date_4_or_more_people": "{isVideo, select, true {व्हिडिओ} other {फोटो}} {person1}, {person2} आणि आणखी {additionalCount, number} जणांसोबत {date} ला घेतले",
"image_alt_text_date_place": "{isVideo, select, true {व्हिडिओ} other {फोटो}} {city}, {country} येथे {date} ला घेतले",
"image_alt_text_date_place_1_person": "{isVideo, select, true {व्हिडिओ} other {फोटो}} {city}, {country} येथे {person1} सोबत {date} ला घेतले",
"notification_permission_dialog_content": "सूचना सक्षम करण्यासाठी सेटिंग्जमध्ये जा आणि अनुमती द्या.",
"notification_permission_list_tile_content": "सूचना सक्षम करण्यासाठी परवानगी द्या.",
"notification_permission_list_tile_enable_button": "सूचना सक्षम करा",
@@ -1764,5 +1848,6 @@
"year": "वर्ष",
"yes": "हो",
"you_dont_have_any_shared_links": "आपल्याकडे कोणतेही सामायिक दुवे नाहीत",
"zoom_image": "प्रतिमा झूम करा"
"zoom_image": "प्रतिमा झूम करा",
"zoom_to_bounds": "सीमेपर्यंत झूम करा"
}

View File

@@ -33,6 +33,7 @@
"add_to_albums": "Legg til i album",
"add_to_albums_count": "Legg til i albumer ({count})",
"add_to_shared_album": "Legg til delt album",
"add_upload_to_stack": "Legg til opplasting i stakken",
"add_url": "Legg til URL",
"added_to_archive": "Lagt til i arkivet",
"added_to_favorites": "Lagt til favoritter",

View File

@@ -33,6 +33,7 @@
"add_to_albums": "Toevoegen aan albums",
"add_to_albums_count": "Toevoegen aan albums ({count})",
"add_to_shared_album": "Aan gedeeld album toevoegen",
"add_upload_to_stack": "Voeg upload toe aan stack",
"add_url": "URL toevoegen",
"added_to_archive": "Toegevoegd aan archief",
"added_to_favorites": "Toegevoegd aan favorieten",
@@ -42,7 +43,7 @@
"admin_user": "Beheerder gebruiker",
"asset_offline_description": "Dit item uit een externe bibliotheek is niet meer beschikbaar op de schijf en is naar de prullenbak verplaatst. Als het bestand binnen de bibliotheek is verplaatst, controleer dan je tijdlijn voor het nieuwe bijbehorende item. Om dit bestand te herstellen, zorg ervoor dat het onderstaande bestandspad toegankelijk is voor Immich en scan de bibliotheek opnieuw.",
"authentication_settings": "Authenticatie-instellingen",
"authentication_settings_description": "Wachtwoord, OAuth, en andere authenticatie-instellingen beheren",
"authentication_settings_description": "Wachtwoord-, OAuth-, en andere authenticatie-instellingen beheren",
"authentication_settings_disable_all": "Weet je zeker dat je alle inlogmethoden wilt uitschakelen? Inloggen zal volledig worden uitgeschakeld.",
"authentication_settings_reenable": "Gebruik een <link>servercommando</link> om opnieuw in te schakelen.",
"background_task_job": "Achtergrondtaken",
@@ -65,7 +66,7 @@
"confirm_email_below": "Typ hieronder \"{email}\" ter bevestiging",
"confirm_reprocess_all_faces": "Weet je zeker dat je alle gezichten opnieuw wilt verwerken? Hiermee worden ook alle mensen gewist.",
"confirm_user_password_reset": "Weet je zeker dat je het wachtwoord van {user} wilt resetten?",
"confirm_user_pin_code_reset": "Weet je zeker dat je de PIN code van {user} wilt resetten?",
"confirm_user_pin_code_reset": "Weet je zeker dat je de pincode van {user} wilt resetten?",
"create_job": "Taak maken",
"cron_expression": "Cron expressie",
"cron_expression_description": "Stel het scaninterval in met het cron-formaat. Voor meer informatie kun je bijvoorbeeld kijken naar <link>Crontab Guru</link>",
@@ -86,7 +87,7 @@
"image_fullsize_enabled_description": "Genereer afbeelding op volledig formaat voor niet-webvriendelijke formaten. Als “Verkies ingesloten voorbeeldafbeelding” is ingeschakeld, worden ingesloten voorvertoningen direct gebruikt zonder conversie. Heeft geen invloed op webvriendelijke formaten zoals JPEG.",
"image_fullsize_quality_description": "Beeldkwaliteit op ware grootte van 1-100. Hoger is beter, maar genereert grotere bestanden.",
"image_fullsize_title": "Instellingen afbeelding op ware grootte",
"image_prefer_embedded_preview": "Verkies ingesloten voorbeeldafbeelding",
"image_prefer_embedded_preview": "Voorkeur geven aan ingesloten voorbeeldafbeelding",
"image_prefer_embedded_preview_setting_description": "Gebruik ingesloten voorbeeldafbeelding van RAW-bestanden als invoer voor beeldverwerking wanneer beschikbaar. Dit kan preciezere kleuren produceren voor sommige afbeeldingen, maar de kwaliteit van het voorbeeld is afhankelijk van de camera en de afbeelding kan mogelijk meer compressie-artefacten bevatten.",
"image_prefer_wide_gamut": "Voorkeur geven aan wide gamut",
"image_prefer_wide_gamut_setting_description": "Display P3 gebruiken voor voorbeeldafbeeldingen. Dit behoudt de levendigheid van afbeeldingen met brede kleurruimtes beter, maar afbeeldingen kunnen er anders uitzien op oude apparaten met een oude browserversie. sRGB-afbeeldingen blijven sRGB gebruiken om kleurverschuivingen te vermijden.",
@@ -103,7 +104,7 @@
"image_thumbnail_title": "Thumbnailinstellingen",
"job_concurrency": "{job} gelijktijdigheid",
"job_created": "Taak aangemaakt",
"job_not_concurrency_safe": "Deze taak kan niet gelijktijdig worden uitgevoerd.",
"job_not_concurrency_safe": "Deze taak kan niet parallel worden uitgevoerd.",
"job_settings": "Achtergrondtaak-instellingen",
"job_settings_description": "Beheer aantal gelijktijdige taken",
"job_status": "Taakstatus",
@@ -123,20 +124,20 @@
"library_watching_settings_description": "Automatisch gewijzigde bestanden bijhouden",
"logging_enable_description": "Logboek inschakelen",
"logging_level_description": "Indien ingeschakeld, welk logniveau er wordt gebruikt.",
"logging_settings": "Logging",
"machine_learning_availability_checks": "Beschikbaarheid",
"logging_settings": "Logboek",
"machine_learning_availability_checks": "Beschikbaarheidscontroles",
"machine_learning_availability_checks_description": "Automatisch detecteren en selecteren van beschikbare machine learning servers",
"machine_learning_availability_checks_enabled": "Activeer beschikbaarheid controles",
"machine_learning_availability_checks_enabled": "Activeer beschikbaarheidscontroles",
"machine_learning_availability_checks_interval": "Controleinterval",
"machine_learning_availability_checks_interval_description": "Interval in milliseconden tussen beschikbaarheid checks",
"machine_learning_availability_checks_interval_description": "Interval in milliseconden tussen beschikbaarheidscontroles",
"machine_learning_availability_checks_timeout": "Verzoek time-out",
"machine_learning_availability_checks_timeout_description": "Time-out in milliseconden voor beschikbaarheidschecks",
"machine_learning_clip_model": "CLIP model",
"machine_learning_clip_model_description": "De naam van een CLIP-model dat <link>hier</link> is vermeld. Let op: je moet de 'Slim Zoeken -taak opnieuw uitvoeren voor alle afbeeldingen wanneer je een model wijzigt.",
"machine_learning_duplicate_detection": "Duplicaat detectie",
"machine_learning_availability_checks_timeout_description": "Time-out in milliseconden voor beschikbaarheidscontroles",
"machine_learning_clip_model": "CLIP-model",
"machine_learning_clip_model_description": "De naam van een CLIP-model dat <link>hier</link> is vermeld. Let op: je moet de 'Slim Zoeken'-taak voor alle afbeeldingen opnieuw uitvoeren wanneer je een model wijzigt.",
"machine_learning_duplicate_detection": "Duplicaatdetectie",
"machine_learning_duplicate_detection_enabled": "Duplicaatdetectie inschakelen",
"machine_learning_duplicate_detection_enabled_description": "Indien uitgeschakeld, worden identieke items nog steeds gededupliceerd.",
"machine_learning_duplicate_detection_setting_description": "Gebruik CLIP om exactie kopieën te vinden",
"machine_learning_duplicate_detection_setting_description": "Gebruik CLIP-embeddings om mogelijke kopieën te vinden",
"machine_learning_enabled": "Machine learning inschakelen",
"machine_learning_enabled_description": "Wanneer uitgeschakeld zullen alle ML instellingen uitgezet worden, ongeacht onderstaande instellingen.",
"machine_learning_facial_recognition": "Gezichtsherkenning",
@@ -164,8 +165,8 @@
"manage_log_settings": "Beheer logboekinstellingen",
"map_dark_style": "Donkere stijl",
"map_enable_description": "Kaartfuncties inschakelen",
"map_gps_settings": "Kaart & GPS Instellingen",
"map_gps_settings_description": "Beheer kaart & GPS (omgekeerde geocodering) instellingen",
"map_gps_settings": "Kaart- & gps-instellingen",
"map_gps_settings_description": "Beheer kaart- & gps-instellingen (omgekeerde geocodering)",
"map_implications": "De kaartfunctie is afhankelijk van een externe service (tiles.immich.cloud)",
"map_light_style": "Lichte stijl",
"map_manage_reverse_geocoding_settings": "Beheer <link>omgekeerde geocodering</link> instellingen",
@@ -178,27 +179,27 @@
"memory_cleanup_job": "Herinneringen opschonen",
"memory_generate_job": "Herinneringen genereren",
"metadata_extraction_job": "Metadata ophalen",
"metadata_extraction_job_description": "Metadata ophalen van ieder item, zoals GPS, gezichten en resolutie",
"metadata_extraction_job_description": "Metadata ophalen van ieder item, zoals gps, gezichten en resolutie",
"metadata_faces_import_setting": "Gezichten importeren inschakelen",
"metadata_faces_import_setting_description": "Gezichten importeren uit EXIF-gegevens van afbeeldingen en sidecar bestanden",
"metadata_settings": "Metadata instellingen",
"metadata_settings_description": "Beheer metadata instellingen",
"metadata_settings": "Metadata-instellingen",
"metadata_settings_description": "Beheer metadata-instellingen",
"migration_job": "Migratie",
"migration_job_description": "Migreer thumbnails voor items en gezichten naar de nieuwste mapstructuur",
"nightly_tasks_cluster_faces_setting_description": "Gezichtsherkenning uitvoeren op nieuw gedetecteerde gezichten",
"nightly_tasks_cluster_new_faces_setting": "Cluster nieuwe gezichten",
"nightly_tasks_database_cleanup_setting": "Database opschoon taken",
"nightly_tasks_database_cleanup_setting_description": "Ruim oude data op van de database",
"nightly_tasks_database_cleanup_setting": "Database-opruimtaken",
"nightly_tasks_database_cleanup_setting_description": "Ruim oude, niet meer geldige data op uit de database",
"nightly_tasks_generate_memories_setting": "Genereer herinneringen",
"nightly_tasks_generate_memories_setting_description": "Maak nieuwe herinneringen van items",
"nightly_tasks_missing_thumbnails_setting": "Genereer ontbrekende thumbnails",
"nightly_tasks_missing_thumbnails_setting_description": "Items zonder thumbnail in een wachtrij plaatsen voor het genereren van thumbnails",
"nightly_tasks_settings": "Instellingen voor nacht taken",
"nightly_tasks_settings_description": "Beheer nacht taken",
"nightly_tasks_start_time_setting": "Start tijd",
"nightly_tasks_start_time_setting_description": "De tijd waarop de server begint met het uitvoeren van de nacht taken",
"nightly_tasks_sync_quota_usage_setting": "Synchroniseer quota gebruik",
"nightly_tasks_sync_quota_usage_setting_description": "update gebruiker opslag quota, gebaseerd op huidig gebruik",
"nightly_tasks_settings": "Instellingen voor nachtelijke taken",
"nightly_tasks_settings_description": "Beheer nachtelijke taken",
"nightly_tasks_start_time_setting": "Starttijd",
"nightly_tasks_start_time_setting_description": "De tijd waarop de server begint met het uitvoeren van de nachtelijke taken",
"nightly_tasks_sync_quota_usage_setting": "Synchroniseer opslaglimieten",
"nightly_tasks_sync_quota_usage_setting_description": "Update opslaglimieten van gebruikers, gebaseerd op huidig gebruik",
"no_paths_added": "Geen paden toegevoegd",
"no_pattern_added": "Geen patroon toegevoegd",
"note_apply_storage_label_previous_assets": "Opmerking: om het opslaglabel toe te passen op eerder geüploade items, voer de volgende taak uit",
@@ -273,12 +274,12 @@
"storage_template_date_time_sample": "Voorbeeldtijd {date}",
"storage_template_enable_description": "Engine voor opslagtemplate inschakelen",
"storage_template_hash_verification_enabled": "Hashverificatie ingeschakeld",
"storage_template_hash_verification_enabled_description": "Zet hashverificatie aan, schakel dit niet uit tenzij je zeker bent van de implicaties",
"storage_template_hash_verification_enabled_description": "Zet hashverificatie aan. Schakel dit niet uit tenzij je zeker bent van de gevolgen",
"storage_template_migration": "Opslagtemplate migratie",
"storage_template_migration_description": "Pas de huidige <link>{template}</link> toe op eerder geüploade items",
"storage_template_migration_info": "Wijzigingen in de opslagtemplate worden alleen toegepast op nieuwe items. Om de template met terugwerkende kracht toe te passen op eerder geüploade items, voer je de <link>{job}</link> uit.",
"storage_template_migration_job": "Opslagtemplate migratietaak",
"storage_template_more_details": "Voor meer details over deze functie, bekijk de <template-link>Opslagstemplate</template-link> en de <implications-link>implicaties</implications-link> daarvan",
"storage_template_more_details": "Meer details over deze functie vind je onder <template-link>Opslagtemplate</template-link>, net als de <implications-link>gevolgen</implications-link> daarvan",
"storage_template_onboarding_description_v2": "Wanneer ingeschakeld, zal deze functie bestanden automatisch organiseren gebaseerd op een template gedefinieerd door de gebruiker. Voor meer informatie, bekijk de <link>documentatie</link>.",
"storage_template_path_length": "Geschatte padlengte: <b>{length, number}</b>/{limit, number}",
"storage_template_settings": "Opslagtemplate",
@@ -353,7 +354,7 @@
"transcoding_temporal_aq_description": "Alleen van toepassing op NVENC. Verhoogt de kwaliteit van scènes met veel details en weinig beweging. Is mogelijk niet compatibel met oudere apparaten.",
"transcoding_threads": "Threads",
"transcoding_threads_description": "Hogere waarden leiden tot snellere codering, maar laten minder ruimte over voor de server om andere taken te verwerken terwijl deze actief is. Deze waarde mag niet groter zijn dan het aantal CPU cores. Maximaliseert het gebruik als deze is ingesteld op 0.",
"transcoding_tone_mapping": "Tone-mapping",
"transcoding_tone_mapping": "Tone mapping",
"transcoding_tone_mapping_description": "Probeert het uiterlijk van HDR-video's te behouden wanneer ze worden geconverteerd naar SDR. Elk algoritme maakt verschillende afwegingen voor kleur, detail en helderheid. Hable behoudt detail, Mobius behoudt kleur en Reinhard behoudt helderheid.",
"transcoding_transcode_policy": "Transcodeerbeleid",
"transcoding_transcode_policy_description": "Beleid voor wanneer een video getranscodeerd moet worden. HDR-video's worden altijd getranscodeerd (behalve als transcodering is uitgeschakeld).",
@@ -372,7 +373,7 @@
"user_cleanup_job": "Gebruiker opschoning",
"user_delete_delay": "Het account en de items van <b>{user}</b> worden over {delay, plural, one {# dag} other {# dagen}} permanent verwijderd.",
"user_delete_delay_settings": "Verwijder vertraging",
"user_delete_delay_settings_description": "Aantal dagen na verwijdering om het account en de items van een gebruiker permanent te verwijderen. De taak voor het verwijderen van gebruikers wordt om middernacht uitgevoerd om te controleren of gebruikers verwijderd kunnen worden. Wijzigingen in deze instelling worden bij de volgende uitvoering meegenomen.",
"user_delete_delay_settings_description": "Aantal dagen na verwijdering om het account en de items van een gebruiker permanent te verwijderen. De taak voor het verwijderen van gebruikers wordt om middernacht uitgevoerd om te controleren of gebruiker te verwijderen zijn. Wijzigingen in deze instelling worden bij de volgende uitvoering meegenomen.",
"user_delete_immediately": "Het account en de items van <b>{user}</b> worden <b>onmiddellijk</b> in de wachtrij geplaatst voor permanente verwijdering.",
"user_delete_immediately_checkbox": "Gebruikers en items in de wachtrij plaatsen voor onmiddellijke verwijdering",
"user_details": "Gebruiker details",
@@ -418,7 +419,7 @@
"album_added_notification_setting_description": "Ontvang een e-mailmelding wanneer je aan een gedeeld album wordt toegevoegd",
"album_cover_updated": "Albumomslag is bijgewerkt",
"album_delete_confirmation": "Weet je zeker dat je het album {album} wilt verwijderen?",
"album_delete_confirmation_description": "Als dit album gedeeld is, hebben andere gebruikers er geen toegang meer toe.",
"album_delete_confirmation_description": "Als dit album gedeeld is, zullen andere gebruikers geen toegang meer hebben.",
"album_deleted": "Album verwijderd",
"album_info_card_backup_album_excluded": "UITGESLOTEN",
"album_info_card_backup_album_included": "INBEGREPEN",
@@ -664,7 +665,7 @@
"change_password_form_new_password": "Nieuw wachtwoord",
"change_password_form_password_mismatch": "Wachtwoorden komen niet overeen",
"change_password_form_reenter_new_password": "Vul het wachtwoord opnieuw in",
"change_pin_code": "Wijzig PIN code",
"change_pin_code": "Wijzig pincode",
"change_your_password": "Wijzig je wachtwoord",
"changed_visibility_successfully": "Zichtbaarheid succesvol gewijzigd",
"charging": "Opladen",
@@ -707,7 +708,7 @@
"confirm_delete_face": "Weet je zeker dat je het gezicht van {name} wilt verwijderen uit het item?",
"confirm_delete_shared_link": "Weet je zeker dat je deze gedeelde link wilt verwijderen?",
"confirm_keep_this_delete_others": "Alle andere items in de stack worden verwijderd, behalve deze. Weet je zeker dat je wilt doorgaan?",
"confirm_new_pin_code": "Bevestig nieuwe PIN code",
"confirm_new_pin_code": "Bevestig nieuwe pincode",
"confirm_password": "Bevestig wachtwoord",
"confirm_tag_face": "Wil je dit gezicht taggen als {name}?",
"confirm_tag_face_unnamed": "Wil je dit gezicht taggen?",
@@ -759,7 +760,7 @@
"crop": "Bijsnijden",
"curated_object_page_title": "Dingen",
"current_device": "Huidig apparaat",
"current_pin_code": "Huidige PIN code",
"current_pin_code": "Huidige pincode",
"current_server_address": "Huidig serveradres",
"custom_locale": "Aangepaste landinstelling",
"custom_locale_description": "Formatteer datums en getallen op basis van de taal en de regio",
@@ -940,7 +941,7 @@
"failed_to_load_notifications": "Kon meldingen niet laden",
"failed_to_load_people": "Kan mensen niet laden",
"failed_to_remove_product_key": "Fout bij het verwijderen van de licentiesleutel",
"failed_to_reset_pin_code": "Resetten van PIN code mislukt",
"failed_to_reset_pin_code": "Resetten van pincode mislukt",
"failed_to_stack_assets": "Fout bij stapelen van items",
"failed_to_unstack_assets": "Fout bij ontstapelen van items",
"failed_to_update_notification_status": "Kon notificatiestatus niet updaten",
@@ -1005,7 +1006,7 @@
"unable_to_remove_partner": "Kan partner niet verwijderen",
"unable_to_remove_reaction": "Kan reactie niet verwijderen",
"unable_to_reset_password": "Kan wachtwoord niet resetten",
"unable_to_reset_pin_code": "Kan PIN code niet resetten",
"unable_to_reset_pin_code": "Kan pincode niet resetten",
"unable_to_resolve_duplicate": "Kan duplicaat niet oplossen",
"unable_to_restore_assets": "Kan items niet herstellen",
"unable_to_restore_trash": "Kan niet herstellen uit prullenbak",
@@ -1038,6 +1039,7 @@
"exif_bottom_sheet_description_error": "Fout bij het bijwerken van de beschrijving",
"exif_bottom_sheet_details": "DETAILS",
"exif_bottom_sheet_location": "LOCATIE",
"exif_bottom_sheet_no_description": "Geen beschrijving",
"exif_bottom_sheet_people": "MENSEN",
"exif_bottom_sheet_person_add_person": "Naam toevoegen",
"exit_slideshow": "Diavoorstelling sluiten",
@@ -1088,12 +1090,12 @@
"folder_not_found": "Map niet gevonden",
"folders": "Mappen",
"folders_feature_description": "Bladeren door de mapweergave van de foto's en video's op het bestandssysteem",
"forgot_pin_code_question": "PIN vergeten?",
"forgot_pin_code_question": "Pincode vergeten?",
"forward": "Vooruit",
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Deze functie gebruikt externe bronnen van Google om te kunnen werken.",
"general": "Algemeen",
"geolocation_instruction_location": "Klik op een item met GPS coördinaten om de locatie te gebruiken, of selecteer een locatie direct vanaf de kaart",
"geolocation_instruction_location": "Klik op een item met gps-coördinaten om de locatie te gebruiken, of kies een locatie direct op de kaart",
"get_help": "Krijg hulp",
"get_wifiname_error": "Kon de WiFi-naam niet ophalen. Zorg ervoor dat je de benodigde machtigingen hebt verleend en verbonden bent met een WiFi-netwerk",
"getting_started": "Aan de slag",
@@ -1138,7 +1140,7 @@
"home_page_delete_err_partner": "Partner items kunnen niet verwijderd worden, overslaan",
"home_page_delete_remote_err_local": "Lokale items staan in verwijder selectie externe items, overslaan",
"home_page_favorite_err_local": "Lokale items kunnen nog niet als favoriet worden aangemerkt, overslaan",
"home_page_favorite_err_partner": "Partner items kunnen nog niet ge-favoriet worden, overslaan",
"home_page_favorite_err_partner": "Partner items kunnen nog niet als favoriet gemarkeerd worden, overslaan",
"home_page_first_time_notice": "Als dit de eerste keer is dat je de app gebruikt, zorg er dan voor dat je een back-up album kiest, zodat de tijdlijn gevuld kan worden met foto's en video's uit het album",
"home_page_locked_error_local": "Kan lokale bestanden niet naar de vergrendelde map verplaatsen, sla over",
"home_page_locked_error_partner": "Kan partnerbestanden niet naar de vergrendelde map verplaatsen, sla over",
@@ -1182,7 +1184,7 @@
"day_at_onepm": "Iedere dag om 13 uur",
"hours": "{hours, plural, one {Ieder uur} other {Iedere {hours, number} uren}}",
"night_at_midnight": "Iedere avond om middernacht",
"night_at_twoam": "Iedere nacht om 2 uur"
"night_at_twoam": "Elke nacht om 2 uur"
},
"invalid_date": "Ongeldige datum",
"invalid_date_format": "Ongeldig datumformaat",
@@ -1373,7 +1375,7 @@
"new_api_key": "Nieuwe API-sleutel",
"new_password": "Nieuw wachtwoord",
"new_person": "Nieuw persoon",
"new_pin_code": "Nieuwe PIN code",
"new_pin_code": "Nieuwe pincode",
"new_pin_code_subtitle": "Dit is de eerste keer dat u de vergrendelde map opent. Stel een pincode in om deze pagina veilig te openen",
"new_timeline": "Nieuwe tijdlijn",
"new_user_created": "Nieuwe gebruiker aangemaakt",
@@ -1407,7 +1409,7 @@
"no_results_description": "Probeer een synoniem of een algemener zoekwoord",
"no_shared_albums_message": "Maak een album om foto's en video's te delen met mensen in je netwerk",
"no_uploads_in_progress": "Geen uploads bezig",
"not_available": "N.B.",
"not_available": "n.v.t.",
"not_in_any_album": "Niet in een album",
"not_selected": "Niet geselecteerd",
"note_apply_storage_label_to_previously_uploaded assets": "Opmerking: om het opslaglabel toe te passen op eerder geüploade items, voer de volgende taak uit",
@@ -1427,7 +1429,7 @@
"ok": "Ok",
"oldest_first": "Oudste eerst",
"on_this_device": "Op dit apparaat",
"onboarding": "Onboarding",
"onboarding": "Introductie",
"onboarding_locale_description": "Selecteer je voorkeurstaal. Je dan dit later wijzigen in je instellingen.",
"onboarding_privacy_description": "De volgende (optionele) functies zijn afhankelijk van externe services en kunnen op elk moment worden uitgeschakeld in de instellingen.",
"onboarding_server_welcome_description": "Laten we je instantie instellen met een aantal veelgebruikte instellingen.",
@@ -1514,9 +1516,9 @@
"photos_count": "{count, plural, one {{count, number} foto} other {{count, number} foto's}}",
"photos_from_previous_years": "Foto's van voorgaande jaren",
"pick_a_location": "Kies een locatie",
"pin_code_changed_successfully": "PIN code succesvol gewijzigd",
"pin_code_reset_successfully": "PIN code succesvol gereset",
"pin_code_setup_successfully": "PIN code succesvol ingesteld",
"pin_code_changed_successfully": "Pincode succesvol gewijzigd",
"pin_code_reset_successfully": "Pincode succesvol gereset",
"pin_code_setup_successfully": "Pincode succesvol ingesteld",
"pin_verification": "Pincodeverificatie",
"place": "Plaats",
"places": "Plaatsen",
@@ -1571,7 +1573,7 @@
"purchase_input_suggestion": "Heb je een licentiesleutel? Voer deze hieronder in",
"purchase_license_subtitle": "Koop Immich om de verdere ontwikkeling van de service te ondersteunen",
"purchase_lifetime_description": "Levenslange aankoop",
"purchase_option_title": "AANKOOP MOGELIJKHEDEN",
"purchase_option_title": "AANKOOPMOGELIJKHEDEN",
"purchase_panel_info_1": "Het bouwen van Immich kost veel tijd en moeite, en we hebben fulltime engineers die eraan werken om het zo goed mogelijk te maken. Onze missie is om open-source software en ethische bedrijfspraktijken een duurzame inkomstenbron te laten worden voor ontwikkelaars en een ecosysteem te creëren dat de privacy respecteert met echte alternatieven voor uitbuitende cloudservices.",
"purchase_panel_info_2": "Omdat we ons inzetten om geen paywalls toe te voegen, krijg je met deze aankoop geen extra functies in Immich. We vertrouwen op gebruikers zoals jij om de verdere ontwikkeling van Immich te ondersteunen.",
"purchase_panel_title": "Steun het project",
@@ -1585,7 +1587,7 @@
"purchase_server_description_2": "Supporterstatus",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "De licentiesleutel van de server wordt beheerd door de beheerder",
"query_asset_id": "Query Asset ID",
"query_asset_id": "Item-ID opvragen",
"queue_status": "Wachtrij {count}/{total}",
"rating": "Sterwaardering",
"rating_clear": "Waardering verwijderen",
@@ -1657,10 +1659,10 @@
"reset": "Resetten",
"reset_password": "Wachtwoord resetten",
"reset_people_visibility": "Zichtbaarheid mensen resetten",
"reset_pin_code": "Reset PIN code",
"reset_pin_code_description": "Als je jouw PIN code bent vergeten, neem dan contact op met de administrator van de server om deze te resetten",
"reset_pin_code_success": "Resetten van PIN code gelukt",
"reset_pin_code_with_password": "Je kan altijd je PIN code resetten met je wachtwoord",
"reset_pin_code": "Reset pincode",
"reset_pin_code_description": "Als je jouw pincode bent vergeten, neem dan contact op met de administrator van de server om deze te resetten",
"reset_pin_code_success": "Resetten van pincode gelukt",
"reset_pin_code_with_password": "Je kan je pincode altijd resetten met je wachtwoord",
"reset_sqlite": "SQLite database resetten",
"reset_sqlite_confirmation": "Ben je zeker dat je de SQLite database wilt resetten? Je zal moeten uitloggen om de data opnieuw te synchroniseren",
"reset_sqlite_success": "De SQLite database is succesvol gereset",
@@ -1767,7 +1769,7 @@
"select_user_for_sharing_page_err_album": "Album aanmaken mislukt",
"selected": "Geselecteerd",
"selected_count": "{count, plural, other {# geselecteerd}}",
"selected_gps_coordinates": "Geselecteerde GPS Coördinaten",
"selected_gps_coordinates": "Geselecteerde gps-coördinaten",
"send_message": "Bericht versturen",
"send_welcome_email": "Stuur welkomstmail",
"server_endpoint": "Server-URL",
@@ -1811,7 +1813,7 @@
"settings": "Instellingen",
"settings_require_restart": "Start Immich opnieuw op om deze instelling toe te passen",
"settings_saved": "Instellingen opgeslagen",
"setup_pin_code": "Stel een PIN code in",
"setup_pin_code": "Stel een pincode in",
"share": "Delen",
"share_action_prompt": "{count} item(s) gedeeld",
"share_add_photos": "Foto's toevoegen",
@@ -1947,7 +1949,7 @@
"support_and_feedback": "Ondersteuning & feedback",
"support_third_party_description": "Je Immich installatie is door een derde partij samengesteld. Problemen die je ervaart, kunnen door dat pakket veroorzaakt zijn. Meld problemen in eerste instantie bij hen via de onderstaande links.",
"swap_merge_direction": "Wissel richting voor samenvoegen om",
"sync": "Sync",
"sync": "Synchroniseren",
"sync_albums": "Albums synchroniseren",
"sync_albums_manual_subtitle": "Synchroniseer alle geüploade videos en fotos naar de geselecteerde back-up albums",
"sync_local": "Lokaal synchroniseren",
@@ -2015,8 +2017,8 @@
"trashed_items_will_be_permanently_deleted_after": "Items in de prullenbak worden na {days, plural, one {# dag} other {# dagen}} permanent verwijderd.",
"troubleshoot": "Problemen oplossen",
"type": "Type",
"unable_to_change_pin_code": "PIN code kan niet gewijzigd worden",
"unable_to_setup_pin_code": "PIN code kan niet ingesteld worden",
"unable_to_change_pin_code": "Pincode kan niet gewijzigd worden",
"unable_to_setup_pin_code": "Pincode kan niet ingesteld worden",
"unarchive": "Herstellen uit archief",
"unarchive_action_prompt": "{count} verwijderd uit het archief",
"unarchived_count": "{count, plural, other {# verwijderd uit archief}}",
@@ -2073,8 +2075,8 @@
"user_has_been_deleted": "Deze gebruiker is verwijderd.",
"user_id": "Gebruikers ID",
"user_liked": "{user} heeft {type, select, photo {deze foto} video {deze video} asset {} other {dit item}} geliket",
"user_pin_code_settings": "PIN Code",
"user_pin_code_settings_description": "Beheer je PIN code",
"user_pin_code_settings": "Pincode",
"user_pin_code_settings_description": "Beheer je pincode",
"user_privacy": "Gebruikersprivacy",
"user_purchase_settings": "Kopen",
"user_purchase_settings_description": "Beheer je aankoop",
@@ -2095,8 +2097,8 @@
"version_history": "Versiegeschiedenis",
"version_history_item": "{version} geïnstalleerd op {date}",
"video": "Video",
"video_hover_setting": "Speel videothumbnail af bij hoveren",
"video_hover_setting_description": "Speel videothumbnail af wanneer de muis over het item beweegt. Zelfs wanneer uitgeschakeld, kan het afspelen worden gestart door de muis over het afspeelpictogram te bewegen.",
"video_hover_setting": "Speel videominiatuur af bij hoveren",
"video_hover_setting_description": "Speel videominiatuur af wanneer de muis over het item beweegt. Zelfs wanneer uitgeschakeld, kan het afspelen worden gestart door de muis over het afspeelpictogram te bewegen.",
"videos": "Video's",
"videos_count": "{count, plural, one {# video} other {# video's}}",
"view": "Bekijken",

View File

@@ -1 +1,21 @@
{}
{
"about": "ਐਪ ਬਾਰੇ",
"account": "ਖ਼ਾਤਾ",
"account_settings": "ਖ਼ਾਤਾ ਸੈਟਿੰਗਾਂ",
"action": "ਕਾਰਵਾਈ",
"action_common_update": "ਅੱਪਡੇਟ",
"actions": "ਕਾਰਵਾਈਆਂ",
"active": "ਕਿਰਿਆਸ਼ੀਲ",
"activity": "ਗਤੀਵਿਧੀ",
"add": "ਸ਼ਾਮਲ ਕਰੋ",
"add_a_description": "ਵੇਰਵਾ ਸ਼ਾਮਲ ਕਰੋ",
"add_a_location": "ਇੱਕ ਸਥਾਨ ਸ਼ਾਮਲ ਕਰੋ",
"add_a_name": "ਨਾਮ ਸ਼ਾਮਲ ਕਰੋ",
"add_a_title": "ਸਿਰਲੇਖ ਸ਼ਾਮਲ ਕਰੋ",
"add_birthday": "ਜਨਮਦਿਨ ਸ਼ਾਮਲ ਕਰੋ",
"add_endpoint": "ਐਂਡਪੁਆਇੰਟ ਸ਼ਾਮਲ ਕਰੋ",
"add_exclusion_pattern": "ਅਲਹਿਦਗੀ ਪੈਟਰਨ ਸ਼ਾਮਲ ਕਰੋ",
"add_import_path": "ਆਯਾਤ ਮਾਰਗ ਸ਼ਾਮਲ ਕਰੋ",
"add_location": "ਸਥਾਨ ਸ਼ਾਮਲ ਕਰੋ",
"add_more_users": "ਹੋਰ ਉਪਭੋਗਤਾ ਸ਼ਾਮਲ ਕਰੋ"
}

View File

@@ -33,6 +33,7 @@
"add_to_albums": "Dodaj do albumów",
"add_to_albums_count": "Dodaj do albumów ({count})",
"add_to_shared_album": "Dodaj do udostępnionego albumu",
"add_upload_to_stack": "Dodaj przesłane do stosu",
"add_url": "Dodaj URL",
"added_to_archive": "Dodano do archiwum",
"added_to_favorites": "Dodano do ulubionych",
@@ -676,10 +677,10 @@
"choose_matching_people_to_merge": "Wybierz osoby, aby złączyć je w jedną",
"city": "Miasto",
"clear": "Wyczyść",
"clear_all": "Wyczyść",
"clear_all": "Wyczyść wszystko",
"clear_all_recent_searches": "Usuń ostatnio wyszukiwane",
"clear_file_cache": "Wyczyść pamięć podręczną plików",
"clear_message": "Zamknij wiadomość",
"clear_message": "Wyczyść wiadomość",
"clear_value": "Wyczyść wartość",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Wprowadź hasło",
@@ -1038,6 +1039,7 @@
"exif_bottom_sheet_description_error": "Wystąpił błąd podczas aktualizacji opisu",
"exif_bottom_sheet_details": "SZCZEGÓŁY",
"exif_bottom_sheet_location": "LOKALIZACJA",
"exif_bottom_sheet_no_description": "Brak opisu",
"exif_bottom_sheet_people": "LUDZIE",
"exif_bottom_sheet_person_add_person": "Dodaj nazwę",
"exit_slideshow": "Zamknij Pokaz Slajdów",

View File

@@ -33,6 +33,7 @@
"add_to_albums": "Adicionar aos álbuns",
"add_to_albums_count": "Adicionar aos álbuns ({count})",
"add_to_shared_album": "Adicionar ao álbum partilhado",
"add_upload_to_stack": "Adicionar carregamento à fila",
"add_url": "Adicionar URL",
"added_to_archive": "Adicionado ao arquivo",
"added_to_favorites": "Adicionado aos favoritos",
@@ -599,14 +600,14 @@
"backup_controller_page_turn_on": "Ativar backup",
"backup_controller_page_uploading_file_info": "Enviando arquivo",
"backup_err_only_album": "Não é possível remover apenas o álbum",
"backup_error_sync_failed": "A sincronização falhou. Não é possível fazer cópia de segurança.",
"backup_error_sync_failed": "A sincronização falhou. Não é possível fazer a cópia de segurança.",
"backup_info_card_assets": "arquivos",
"backup_manual_cancelled": "Cancelado",
"backup_manual_in_progress": "Envio já está em progresso. Tente novamente mais tarde",
"backup_manual_success": "Sucesso",
"backup_manual_title": "Estado do envio",
"backup_options": "Definições de cópia de segurança",
"backup_options_page_title": "Opções de backup",
"backup_options_page_title": "Opções de cópia de segurança",
"backup_setting_subtitle": "Gerenciar as configurações de envio em primeiro e segundo plano",
"backup_settings_subtitle": "Gerir definições de carregamento",
"backward": "Para trás",

View File

@@ -33,6 +33,7 @@
"add_to_albums": "Adicionar aos álbuns",
"add_to_albums_count": "Adicionar aos álbuns ({count})",
"add_to_shared_album": "Adicionar ao álbum compartilhado",
"add_upload_to_stack": "Adicionar upload ao grupo",
"add_url": "Adicionar URL",
"added_to_archive": "Adicionado ao arquivo",
"added_to_favorites": "Adicionado aos favoritos",
@@ -784,7 +785,7 @@
"default_locale": "Localização Padrão",
"default_locale_description": "Formatar datas e números baseados na linguagem do seu navegador",
"delete": "Excluir",
"delete_action_confirmation_message": "Confirma deletar este arquivo? O arquivo será enviado para a lixeira do servidor e depois perguntará se deseja deletar do seu dispositivo local",
"delete_action_confirmation_message": "Tem certeza? O arquivo será enviado para a lixeira do servidor, depois você poderá confirmar se deseja também deletar do seu dispositivo local",
"delete_action_prompt": "{count} deletados",
"delete_album": "Excluir álbum",
"delete_api_key_prompt": "Tem certeza de que deseja excluir esta chave de API?",
@@ -2039,7 +2040,7 @@
"unselect_all": "Desselecionar todos",
"unselect_all_duplicates": "Desselecionar todas as duplicatas",
"unselect_all_in": "Remover seleção de {group}",
"unstack": "Retirar do grupo",
"unstack": "Desagrupar",
"unstack_action_prompt": "{count} desagrupados",
"unstacked_assets_count": "{count, plural, one {# arquivo retirado} other {# arquivos retirados}} do grupo",
"untagged": "Marcador removido",

View File

@@ -479,7 +479,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",
@@ -1086,7 +1086,7 @@
"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",
@@ -1287,7 +1287,7 @@
"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",
@@ -1503,8 +1503,8 @@
"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 {# month} other {# months}} vechime",
"person_age_year_months": "1 year, {months, plural, one {# month} other {# months}} vechime",
"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 {}}",
@@ -1701,8 +1701,8 @@
"search_by_filename_example": "i.e. IMG_1234.JPG sau PNG",
"search_camera_make": "Se caută marca camerei...",
"search_camera_model": "Se caută modelul camerei...",
"search_city": "Se caută orașul...",
"search_country": "Se caută țara...",
"search_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ă",
@@ -1717,7 +1717,7 @@
"search_filter_media_type_title": "Selectați tipul media",
"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}\"",
@@ -1739,7 +1739,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...",
@@ -1928,7 +1928,7 @@
"start": "Început",
"start_date": "Data de începere",
"start_date_before_end_date": "Data de început trebuie să fie înainte de data de sfârșit",
"state": "Situaţie",
"state": "Stat/Județ",
"status": "Stare",
"stop_casting": "Opriți difuzarea",
"stop_motion_photo": "Opriți Fotografia in Mișcare",

View File

@@ -33,6 +33,7 @@
"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": "Добавлено в избранное",
@@ -1038,6 +1039,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": "Выйти из слайд-шоу",
@@ -1639,7 +1641,7 @@
"remove_tag": "Удалить тег",
"remove_url": "Удалить URL",
"remove_user": "Удалить пользователя",
"removed_api_key": "Удалён API ключ {name}",
"removed_api_key": "API ключ \"{name}\" удалён",
"removed_from_archive": "Удален из архива",
"removed_from_favorites": "Удалено из избранного",
"removed_from_favorites_count": "{count, plural, one {# объект удалён} many {# объектов удалено} other {# объекта удалено}} из избранного",
@@ -1779,7 +1781,7 @@
"server_stats": "Статистика сервера",
"server_version": "Версия сервера",
"set": "Установить",
"set_as_album_cover": "Установить как обложку альбома",
"set_as_album_cover": "Установить обложкой альбома",
"set_as_featured_photo": "Установить как основное фото",
"set_as_profile_picture": "Установить как фото профиля",
"set_date_of_birth": "Установить дату рождения",

View File

@@ -33,6 +33,7 @@
"add_to_albums": "Pridať do albumov",
"add_to_albums_count": "Pridať do albumov ({count})",
"add_to_shared_album": "Pridať do zdieľaného albumu",
"add_upload_to_stack": "Pridať nahraté do zoskupených",
"add_url": "Pridať URL",
"added_to_archive": "Pridané do archívu",
"added_to_favorites": "Pridané do obľúbených",
@@ -364,7 +365,7 @@
"trash_enabled_description": "Povoliť funkcie koša",
"trash_number_of_days": "Počet dní",
"trash_number_of_days_description": "Počet dní, počas ktorých sa majú médiá ponechať v koši pred ich trvalým odstránením",
"trash_settings": "Kôš",
"trash_settings": "Nastavenia koša",
"trash_settings_description": "Spravovať nastavenia koša",
"unlink_all_oauth_accounts": "Odpojiť všetky účty OAuth",
"unlink_all_oauth_accounts_description": "Nezabudnite odpojiť všetky účty OAuth pred prechodom na nového poskytovateľa.",
@@ -499,7 +500,7 @@
"asset_list_settings_subtitle": "Nastavenia rozloženia mriežky fotografií",
"asset_list_settings_title": "Mriežka fotografií",
"asset_offline": "Médium je offline",
"asset_offline_description": "Toto externý obsah sa už nenachádza na disku. Požiadajte o pomoc svojho správcu Immich.",
"asset_offline_description": "Tento externá položka sa už nenachádza na disku. Pre pomoc sa prosím obráťte na správcu systému Immich.",
"asset_restored_successfully": "Položky boli úspešne obnovené",
"asset_skipped": "Preskočené",
"asset_skipped_in_trash": "V koši",
@@ -703,10 +704,10 @@
"common_server_error": "Skontrolujte svoje sieťové pripojenie, uistite sa, že server je dostupný a verzie aplikácie/server sú kompatibilné.",
"completed": "Dokončené",
"confirm": "Potvrdiť",
"confirm_admin_password": "Potvrdiť Administrátorské Heslo",
"confirm_admin_password": "Potvrdiť heslo správcu",
"confirm_delete_face": "Naozaj chcete z položky odstrániť tvár osoby {name}?",
"confirm_delete_shared_link": "Ste si istý, že chcete odstrániť tento zdieľaný odkaz?",
"confirm_keep_this_delete_others": "Všetky ostatné položky v zásobníku budú odstránené okrem tejto položky. Naozaj chcete pokračovať?",
"confirm_keep_this_delete_others": "Všetky ostatné položky v zoskupení budú odstránené okrem tejto položky. Naozaj chcete pokračovať?",
"confirm_new_pin_code": "Potvrdiť nový PIN kód",
"confirm_password": "Potvrdiť heslo",
"confirm_tag_face": "Chcete označiť túto tvár ako {name}?",
@@ -942,7 +943,7 @@
"failed_to_remove_product_key": "Nepodarilo sa odstrániť produktový kľúč",
"failed_to_reset_pin_code": "PIN kód sa nepodarilo obnoviť",
"failed_to_stack_assets": "Nepodarilo sa zoskupiť položky",
"failed_to_unstack_assets": "Nepodarilo sa rozdeliť položky",
"failed_to_unstack_assets": "Nepodarilo sa zrušiť zoskupenie položiek",
"failed_to_update_notification_status": "Nepodarilo sa aktualizovať stav oznámenia",
"import_path_already_exists": "Táto cesta importu už existuje.",
"incorrect_email_or_password": "Nesprávny e-mail alebo heslo",
@@ -1056,7 +1057,7 @@
"export_database": "Exportovať databázu",
"export_database_description": "Exportovať databázu SQLite",
"extension": "Prípona",
"external": "Externý",
"external": "Externá",
"external_libraries": "Externé knižnice",
"external_network": "Externá sieť",
"external_network_sheet_info": "Ak nie ste v preferovanej sieti Wi-Fi, aplikácia sa pripojí k serveru prostredníctvom prvej z nižšie uvedených adries URL, na ktorú sa dostane, počnúc zhora nadol",
@@ -1198,8 +1199,8 @@
"jobs": "Úlohy",
"keep": "Ponechať",
"keep_all": "Ponechať všetko",
"keep_this_delete_others": "Ponechať toto, odstrániť ostatné",
"kept_this_deleted_others": "Ponechal túto položku a odstránil {count, plural, one {# položku} few {# položky} other {# položiek}}",
"keep_this_delete_others": "Ponechať túto, odstrániť ostatné",
"kept_this_deleted_others": "Táto položka bola ponechaná a {count, plural, one {odstránila sa # položka} few {odstránili sa # položky} other {odstránilo sa # položiek}}",
"keyboard_shortcuts": "Klávesové skratky",
"language": "Jazyk",
"language_no_results_subtitle": "Skúste upraviť hľadaný výraz",
@@ -1382,7 +1383,7 @@
"next": "Ďalej",
"next_memory": "Ďalšia spomienka",
"no": "Nie",
"no_albums_message": "Vytvorí album na organizovanie fotiek a videí",
"no_albums_message": "Vytvorte album na usporiadanie svojich fotiek a videí",
"no_albums_with_name_yet": "Vyzerá, že zatiaľ nemáte album s týmto názvom.",
"no_albums_yet": "Vyzerá, že zatiaľ nemáte žiadne albumy.",
"no_archived_assets_message": "Archivujte fotografie a videá a skryte ich z vášho zobrazenia fotografií",
@@ -1395,7 +1396,7 @@
"no_exif_info_available": "Nie sú dostupné exif údaje",
"no_explore_results_message": "Nahrajte viac fotiek na objavovanie vašej zbierky.",
"no_favorites_message": "Pridajte si obľúbené, aby ste rýchlo našli svoje najlepšie obrázky a videá",
"no_libraries_message": "Vytvorí externú knižnicu na prezeranie fotiek a videí",
"no_libraries_message": "Vytvorte externú knižnicu na prezeranie fotiek a videí",
"no_local_assets_found": "Neboli nájdené žiadne lokálne položky s touto kontrolnou sumou",
"no_locked_photos_message": "Fotografie a videá v zamknutom priečinku sú skryté a nezobrazujú sa pri prehľadávaní alebo vyhľadávaní v knižnici.",
"no_name": "Bez mena",
@@ -1405,7 +1406,7 @@
"no_remote_assets_found": "Neboli nájdené žiadne vzdialené položky s touto kontrolnou sumou",
"no_results": "Žiadne výsledky",
"no_results_description": "Skúste synonymum alebo všeobecnejší výraz",
"no_shared_albums_message": "Vytvorí album na zdieľanie fotiek a videí s ľuďmi vo vašej sieti",
"no_shared_albums_message": "Vytvorte album na zdieľanie fotiek a videí s ľuďmi vo vašej sieti",
"no_uploads_in_progress": "Žiadne prebiehajúce nahrávanie",
"not_available": "Nedostupné",
"not_in_any_album": "Nie je v žiadnom albume",
@@ -1450,7 +1451,7 @@
"other_devices": "Ďalšie zariadenia",
"other_entities": "Ostatné subjekty",
"other_variables": "Ostatné premenné",
"owned": "Vlastnené",
"owned": "Vlastné",
"owner": "Vlastník",
"partner": "Partner",
"partner_can_access": "{partner} môže pristupovať",
@@ -1510,7 +1511,7 @@
"person_hidden": "{name}{hidden, select, true { (skryté)} other {}}",
"photo_shared_all_users": "Vyzerá, že zdieľate svoje fotky so všetkými používateľmi alebo nemáte žiadnych používateľov.",
"photos": "Fotografie",
"photos_and_videos": "Fotografie & Videa",
"photos_and_videos": "Fotografie a videá",
"photos_count": "{count, plural, one {{count, number} fotka} few {{count, number} fotky} other {{count, number} fotiek}}",
"photos_from_previous_years": "Fotky z minulých rokov",
"pick_a_location": "Vyberte polohu",
@@ -1863,7 +1864,7 @@
"shared_link_options": "Možnosti zdieľaných odkazov",
"shared_link_password_description": "Vyžadovať heslo pre prístup k tomuto zdieľanému odkazu",
"shared_links": "Zdieľané odkazy",
"shared_links_description": "Zdieľanie fotografií a videí pomocou odkazu",
"shared_links_description": "Zdieľajte fotografie a videá pomocou odkazu",
"shared_photos_and_videos_count": "{assetCount, plural, few {# zdieľané fotky a videá.} other {# zdieľaných fotiek a videí.}}",
"shared_with_me": "Zdieľané so mnou",
"shared_with_partner": "Zdieľané s {partner}",
@@ -1918,9 +1919,9 @@
"sort_recent": "Najnovšia fotografia",
"sort_title": "Názov",
"source": "Zdroj",
"stack": "Zoskupenie",
"stack": "Zoskup",
"stack_action_prompt": "{count} zoskupených",
"stack_duplicates": "Zoskupiť duplicity",
"stack_duplicates": "Zoskupiť duplity",
"stack_select_one_photo": "Vyberte jednu hlavnú fotku pre zoskupenie",
"stack_selected_photos": "Zoskupiť vybraté fotky",
"stacked_assets_count": "{count, plural, one {Zoskupená # položka} few {Zoskupené # položky} other {Zoskupených # položiek}}",
@@ -1932,7 +1933,7 @@
"status": "Stav",
"stop_casting": "Zastaviť prenos",
"stop_motion_photo": "Stopmotion fotka",
"stop_photo_sharing": "Zastaviť zdieľanie vašich fotiek?",
"stop_photo_sharing": "Zastaviť zdieľanie vašich fotografií?",
"stop_photo_sharing_description": "{partner} už nebude mať prístup k vašim fotkám.",
"stop_sharing_photos_with_user": "Zastaviť zdieľanie vašich fotiek s týmto používateľom",
"storage": "Ukladací priestor",
@@ -1994,7 +1995,7 @@
"to_multi_select": "na viacnásobný výber",
"to_parent": "Prejsť k nadradenému",
"to_select": "na výber",
"to_trash": "Kôš",
"to_trash": "Do koša",
"toggle_settings": "Prepnúť nastavenie",
"total": "Celkom",
"total_usage": "Celkové využitie",
@@ -2006,7 +2007,7 @@
"trash_emptied": "Kôš vyprázdnený",
"trash_no_results_message": "Vymazané fotografie a videá sa zobrazia tu.",
"trash_page_delete_all": "Vymazať všetky",
"trash_page_empty_trash_dialog_content": "Skutočne chcete vyprázdniť kôš? Tieto položky budú permanentne odstránené z aplikácie Immich",
"trash_page_empty_trash_dialog_content": "Skutočne chcete vyprázdniť kôš? Tieto položky budú natrvalo odstránené z aplikácie Immich",
"trash_page_info": "Médiá v koši sa permanentne odstránia po {days} dňoch",
"trash_page_no_assets": "Žiadne médiá v koši",
"trash_page_restore_all": "Obnoviť všetky",
@@ -2039,9 +2040,9 @@
"unselect_all": "Zrušiť výber všetkých",
"unselect_all_duplicates": "Zrušiť výber všetkých duplicít",
"unselect_all_in": "Zrušiť výber všetkých v {group}",
"unstack": "Odskupiť",
"unstack": "Zrušiť zoskupenie",
"unstack_action_prompt": "{count} nezoskupených",
"unstacked_assets_count": "Zrušenie zoskupenia pre {count, plural, one {# položku} few {# položky} other {# položiek}}",
"unstacked_assets_count": "Zrušené zoskupenia pre {count, plural, one {# položku} few {# položky} other {# položiek}}",
"untagged": "Bez štítku",
"up_next": "To je všetko",
"update_location_action_prompt": "Aktualizovať polohu {count} vybraných položiek pomocou:",
@@ -2116,7 +2117,7 @@
"view_user": "Zobraziť používateľa",
"viewer_remove_from_stack": "Odstrániť zo zoskupenia",
"viewer_stack_use_as_main_asset": "Použiť ako hlavnú fotku",
"viewer_unstack": "Odskupiť",
"viewer_unstack": "Zrušiť zoskupenie",
"visibility_changed": "Viditeľnosť zmenená pre {count, plural, one {# osobu} few {# osoby} other {# osôb}}",
"waiting": "Čakajúce",
"warning": "Varovanie",

View File

@@ -33,6 +33,7 @@
"add_to_albums": "Dodaj v albume",
"add_to_albums_count": "Dodaj v albume ({count})",
"add_to_shared_album": "Dodaj k deljenemu albumu",
"add_upload_to_stack": "Dodaj nalaganje v sklad",
"add_url": "Dodaj URL",
"added_to_archive": "Dodano v arhiv",
"added_to_favorites": "Dodano med priljubljene",
@@ -1038,6 +1039,7 @@
"exif_bottom_sheet_description_error": "Napaka pri posodabljanju opisa",
"exif_bottom_sheet_details": "PODROBNOSTI",
"exif_bottom_sheet_location": "LOKACIJA",
"exif_bottom_sheet_no_description": "Ni opisa",
"exif_bottom_sheet_people": "OSEBE",
"exif_bottom_sheet_person_add_person": "Dodaj ime",
"exit_slideshow": "Zapustite diaprojekcijo",

View File

@@ -123,6 +123,10 @@
"logging_enable_description": "Omogući evidentiranje",
"logging_level_description": "Kada je omogućeno, koji nivo evidencije koristiti.",
"logging_settings": "Evidentiranje",
"machine_learning_availability_checks": "Provere dostupnosti",
"machine_learning_availability_checks_enabled": "Omogući provere dostupnosti",
"machine_learning_availability_checks_interval": "Interval provere",
"machine_learning_availability_checks_interval_description": "Interval u milisekundama između provera dostupnosti",
"machine_learning_clip_model": "Model CLIP",
"machine_learning_clip_model_description": "Naziv CLIP modela je naveden <link>ovde</link>. Imajte na umu da morate ponovo da pokrenete posao „Pametno pretraživanje“ za sve slike nakon promene modela.",
"machine_learning_duplicate_detection": "Detekcija duplikata",
@@ -182,11 +186,13 @@
"nightly_tasks_database_cleanup_setting": "Zadaci čiščenja baze podataka",
"nightly_tasks_database_cleanup_setting_description": "Očisti stare, istekle podatke iz baze podataka",
"nightly_tasks_generate_memories_setting": "Generiši sjećanja",
"nightly_tasks_generate_memories_setting_description": "Kreiraj nova sjećanja",
"nightly_tasks_generate_memories_setting_description": "Stvorite nova sećanja iz imovine",
"nightly_tasks_missing_thumbnails_setting": "Generiši nedostajuće sličice",
"nightly_tasks_missing_thumbnails_setting_description": "Dodajte elemente bez sličica u red za generisanje sličica",
"nightly_tasks_settings": "Podešavanja noćnih zadataka",
"nightly_tasks_settings_description": "Upravljaj noćnim zadacima",
"nightly_tasks_start_time_setting": "Vreme početka",
"nightly_tasks_start_time_setting_description": "Vreme kada server započinje noćne zadatke",
"nightly_tasks_sync_quota_usage_setting_description": "Ažurirajte kvotu memorijskog prostora korisnika na osnovu trenutne upotrebe",
"no_paths_added": "Nema dodatih putanja",
"no_pattern_added": "Nije dodat obrazac",

View File

@@ -33,6 +33,7 @@
"add_to_albums": "Lägg till i album",
"add_to_albums_count": "Lägg till i album ({count})",
"add_to_shared_album": "Lägg till i delat album",
"add_upload_to_stack": "Lägg till uppladdning till stack",
"add_url": "Lägg till URL",
"added_to_archive": "Tillagd i arkiv",
"added_to_favorites": "Tillagd till favoriter",

View File

@@ -33,6 +33,7 @@
"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": "விருப்பங்களில் (பேவரிட்ஸ்) சேர்க்கப்பட்டது",
@@ -57,7 +58,7 @@
"backup_onboarding_parts_title": "3-2-1 காப்புப்பிரதியில் பின்வருவன அடங்கும்:",
"backup_onboarding_title": "காப்புப்பிரதிகள்",
"backup_settings": "தரவுத்தள திணிப்பு அமைப்புகள்",
"backup_settings_description": "தரவுத்தள நகல் அமைப்புகளை நிர்வகிக்கவும்",
"backup_settings_description": "தரவுத்தள நகல் அமைப்புகளை நிர்வகி.",
"cleared_jobs": "முடித்த வேலைகள்: {job}",
"config_set_by_file": "கட்டமைப்பு, தற்போது ஒரு கட்டமைப்பு கோப்பு மூலம் அமைக்கப்பட்டுள்ளது",
"confirm_delete_library": "{library} படங்கள் நூலகத்தை நிச்சயமாக நீக்க விரும்புகிறீர்களா?",
@@ -68,7 +69,7 @@
"confirm_user_pin_code_reset": "{user} இன் பின் குறியீட்டை மீட்டமைக்க விரும்புகிறீர்களா?",
"create_job": "வேலையை உருவாக்கு",
"cron_expression": "க்ரோன் வெளிப்பாடு",
"cron_expression_description": "CRON வடிவமைப்பைப் பயன்படுத்தி ச்கேனிங் இடைவெளியை அமைக்கவும். மேலும் தகவலுக்கு எ.கா. <இணைப்பு> க்ரோன்டாப் குரு </இணைப்பு>",
"cron_expression_description": "CRON வடிவமைப்பைப் பயன்படுத்தி ச்கேனிங் இடைவெளியை அமைக்கவும். மேலும் தகவலுக்கு எ.கா.<link> க்ரோன்டாப் குரு </link>",
"cron_expression_presets": "க்ரோன் வெளிப்பாடு முன்னமைவுகள்",
"disable_login": "உள்நுழைவை முடக்கு",
"duplicate_detection_job_description": "ஒத்த படங்களைக் கண்டறிய, சொத்துக்களில் இயந்திரக் கற்றலை இயக்கவும். ஸ்மார்ட் தேடலை நம்பியுள்ளது",
@@ -117,7 +118,7 @@
"library_scanning_enable_description": "நியமிக்கப்பட்ட புகைப்பட நூலக ஸ்கேனிங்கை இயக்கு",
"library_settings": "வெளிப்புற புகைப்பட நூலகம்",
"library_settings_description": "வெளிப்புற புகைப்பட நூலக அமைப்புகளை மேலாண்மை செய்யவும்",
"library_tasks_description": "புதிய மற்றும்/அல்லது மாற்றப்பட்ட சொத்துக்களுக்கு வெளிப்புற நூலகங்களை ஸ்கேன் செய்யவும்.",
"library_tasks_description": "புதிய மற்றும்/அல்லது மாற்றப்பட்ட சொத்துக்களுக்கு வெளிப்புற நூலகங்களை வருடவும்",
"library_watching_enable_description": "கோப்பு மாற்றங்களுக்கு வெளிப்புற நூலகங்களைப் பாருங்கள்",
"library_watching_settings": "நூலகப் பார்ப்பது (சோதனை)",
"library_watching_settings_description": "மாற்றப்பட்ட புகைப்படங்களைத் தானாகவே பார்க்கவும்",
@@ -317,7 +318,7 @@
"transcoding_audio_codec": "ஆடியோ கோடெக்",
"transcoding_audio_codec_description": "ஓபச் மிக உயர்ந்த தரமான விருப்பமாகும், ஆனால் பழைய சாதனங்கள் அல்லது மென்பொருளுடன் குறைந்த பொருந்தக்கூடிய தன்மையைக் கொண்டுள்ளது.",
"transcoding_bitrate_description": "மேக்ச் பிட்ரேட்டை விட அதிகமான வீடியோக்கள் அல்லது ஏற்றுக்கொள்ளப்பட்ட வடிவத்தில் இல்லை",
"transcoding_codecs_learn_more": "இங்கே பயன்படுத்தப்படும் சொற்களைப் பற்றி மேலும் அறிய, <H264-LINK> H.264 கோடெக் </H264-LINK>, <HEVC-LINK> HEVC கோடெக் </HEVC-LINK> மற்றும் <VP9-LINK> VP9 க்கான FFMPEG ஆவணங்களைப் பார்க்கவும் கோடெக் </vp9-link>.",
"transcoding_codecs_learn_more": "இங்கே பயன்படுத்தப்படும் சொற்களைப் பற்றி மேலும் அறிய, <h264-link> H.264 கோடெக்</h264-link>, <hevc-link>HEVC கோடெக் </hevc-link>மற்றும் <vp9-link>VP9 க்கான கோடெக் </vp9-link> FFMPEG ஆவணங்களைப் பார்க்கவும்.",
"transcoding_constant_quality_mode": "நிலையான தர முறை",
"transcoding_constant_quality_mode_description": "CQP ஐ விட ICQ சிறந்தது, ஆனால் சில வன்பொருள் முடுக்கம் சாதனங்கள் இந்த பயன்முறையை ஆதரிக்கவில்லை. இந்த விருப்பத்தை அமைப்பது தர அடிப்படையிலான குறியாக்கத்தைப் பயன்படுத்தும் போது குறிப்பிட்ட பயன்முறையை விரும்புகிறது. NVENC ஆல் புறக்கணிக்கப்பட்டது, ஏனெனில் இது ICQ ஐ ஆதரிக்காது.",
"transcoding_constant_rate_factor": "நிலையான வீத காரணி (-crf)",
@@ -326,7 +327,7 @@
"transcoding_encoding_options": "குறியீட்டு விருப்பங்கள்",
"transcoding_encoding_options_description": "குறியிடப்பட்ட வீடியோக்களுக்கான கோடெக்குகள், தெளிவுத்திறன், தரம் மற்றும் பிற விருப்பங்களை அமைக்கவும்",
"transcoding_hardware_acceleration": "வன்பொருள் முடுக்கம்",
"transcoding_hardware_acceleration_description": "பரிசோதனை: வேகமான டிரான்ஸ்கோடிங் ஆனால் அதே பிட்ரேட்டில் தரத்தைக் குறைக்கலாம்.",
"transcoding_hardware_acceleration_description": "பரிசோதனை: வேகமான டிரான்ஸ்கோடிங் ஆனால் அதே பிட்ரேட்டில் தரத்தைக் குறைக்கலாம்",
"transcoding_hardware_decoding": "வன்பொருள் டிகோடிங்",
"transcoding_hardware_decoding_setting_description": "குறியாக்கத்தை விரைவுபடுத்துவதற்கு பதிலாக இறுதி முதல் இறுதி முடுக்கம் ஆகியவற்றை செயல்படுத்துகிறது. எல்லா வீடியோக்களிலும் வேலை செய்யக்கூடாது.",
"transcoding_max_b_frames": "அதிகபட்ச பி-பிரேம்கள்",
@@ -620,9 +621,9 @@
"bugs_and_feature_requests": "பிழைகள் மற்றும் அம்ச கோரிக்கைகள்",
"build": "உருவாக்கு",
"build_image": "படத்தை உருவாக்குங்கள்",
"bulk_delete_duplicates_confirmation": "{எண்ணிக்கை, பன்மை, ஒன்று {# நகல் சொத்து} பிற {# நகல் சொத்துக்கள்}}}}}}}}} {{# நகல் சொத்து ஆகியவற்றை மொத்தமாக நீக்க விரும்புகிறீர்களா? இது ஒவ்வொரு குழுவின் மிகப்பெரிய சொத்தை வைத்திருக்கும் மற்றும் மற்ற அனைத்து நகல்களையும் நிரந்தரமாக நீக்குகிறது. இந்த செயலை நீங்கள் செயல்தவிர்க்க முடியாது!",
"bulk_keep_duplicates_confirmation": "நீங்கள் {எண்ணிக்கை, பன்மை, ஒன்று {# நகல் சொத்து} பிற {# நகல் சொத்துக்கள்} be வைக்க விரும்புகிறீர்களா? இது எதையும் நீக்காமல் அனைத்து நகல் குழுக்களையும் தீர்க்கும்.",
"bulk_trash_duplicates_confirmation": "நீங்கள் மொத்தமாக குப்பை {எண்ணிக்கை, பன்மை, ஒன்று {# நகல் சொத்து} பிற {# நகல் சொத்துக்கள்}}}} செய்ய விரும்புகிறீர்களா? இது ஒவ்வொரு குழுவின் மிகப்பெரிய சொத்தை வைத்திருக்கும் மற்றும் மற்ற அனைத்து நகல்களையும் குப்பைத் தொட்டியாக இருக்கும்.",
"bulk_delete_duplicates_confirmation": "நீங்கள் நிச்சயமாக {count, plural, one {# நகல் சொத்து} other {# நகல் சொத்துகள்}} மொத்தமாக நீக்க விரும்புகிறீர்களா? இது ஒவ்வொரு குழுவின் மிகப்பெரிய சொத்தை வைத்திருக்கும் மற்றும் மற்ற அனைத்து நகல்களையும் நிரந்தரமாக நீக்கும். இந்தச் செயலை நீங்கள் செயல்தவிர்க்க முடியாது!",
"bulk_keep_duplicates_confirmation": "நீங்கள் நிச்சயமாக {count, plural, one {# நகல் சொத்து} other {# நகல் சொத்துக்கள்}} வைத்திருக்க விரும்புகிறீர்களா? இது எதையும் நீக்காமல் அனைத்து நகல் குழுக்களையும் தீர்க்கும்.",
"bulk_trash_duplicates_confirmation": "நீங்கள் நிச்சயமாக மொத்தமாகக் குப்பையில் போட விரும்புகிறீர்களா {count, plural, one {# நகல் சொத்து} other {# நகல் சொத்துக்கள்}}? இது ஒவ்வொரு குழுவின் மிகப்பெரிய சொத்தையும் வைத்திருக்கும், மற்ற அனைத்து நகல்களையும் குப்பையில் போடும்.",
"buy": "இம்மியை வாங்கவும்",
"cache_settings_clear_cache_button": "தெளிவான தற்காலிக சேமிப்பு",
"cache_settings_clear_cache_button_title": "பயன்பாட்டின் தற்காலிக சேமிப்பை அழிக்கிறது. கேச் மீண்டும் கட்டப்படும் வரை இது பயன்பாட்டின் செயல்திறனை கணிசமாக பாதிக்கும்.",
@@ -709,7 +710,7 @@
"confirm_keep_this_delete_others": "இந்த சொத்தைத் தவிர அடுக்கில் உள்ள மற்ற அனைத்து சொத்துகளும் நீக்கப்படும். நீங்கள் தொடர விரும்புகிறீர்களா?",
"confirm_new_pin_code": "புதிய முள் குறியீட்டை உறுதிப்படுத்தவும்",
"confirm_password": "கடவுச்சொல்லை உறுதிப்படுத்தவும்",
"confirm_tag_face": "இந்த முகத்தை {பெயர் அச் எனக் குறிக்க விரும்புகிறீர்களா?",
"confirm_tag_face": "இந்த முகத்தை {name} எனக் குறிக்க விரும்புகிறீர்களா?",
"confirm_tag_face_unnamed": "இந்த முகத்தை குறிக்க விரும்புகிறீர்களா?",
"connected_device": "இணைக்கப்பட்ட சாதனம்",
"connected_to": "இணைக்கப்பட்டுள்ளது",
@@ -915,9 +916,9 @@
"cannot_navigate_next_asset": "அடுத்த சொத்துக்கு செல்ல முடியாது",
"cannot_navigate_previous_asset": "முந்தைய சொத்துக்கு செல்ல முடியாது",
"cant_apply_changes": "மாற்றங்களைப் பயன்படுத்த முடியாது",
"cant_change_activity": "{செயல்படுத்த முடியாது, தேர்ந்தெடுக்கவும், உண்மை {disable} பிற {enable}} செயல்பாடு",
"cant_change_activity": "செயல்பாட்டை {enabled, select, true {முடக்க} other {இயக்க}} முடியாது",
"cant_change_asset_favorite": "சொத்துக்கு பிடித்ததை மாற்ற முடியாது",
"cant_change_metadata_assets_count": "{எண்ணிக்கை, பன்மை, ஒன்று {# சொத்து} பிற {# சொத்துக்கள்}} இன் மெட்டாடேட்டாவை மாற்ற முடியாது",
"cant_change_metadata_assets_count": "{count, plural, one {# சொத்து} other {# சொத்துக்கள்}}இன் மீள்தரவை மாற்ற முடியாது",
"cant_get_faces": "முகங்களைப் பெற முடியாது",
"cant_get_number_of_comments": "கருத்துகளின் எண்ணிக்கையைப் பெற முடியாது",
"cant_search_people": "மக்களைத் தேட முடியாது",
@@ -946,7 +947,7 @@
"failed_to_update_notification_status": "அறிவிப்பு நிலையைப் புதுப்பிக்கத் தவறிவிட்டது",
"import_path_already_exists": "இந்த இறக்குமதி பாதை ஏற்கனவே உள்ளது.",
"incorrect_email_or_password": "தவறான மின்னஞ்சல் அல்லது கடவுச்சொல்",
"paths_validation_failed": "{பாதைகள், பன்மை, ஒன்று {# பாதை} மற்ற {# பாதைகள்}} தோல்வியுற்ற சரிபார்ப்பு",
"paths_validation_failed": "தோல்வியுற்ற சரிபார்ப்பு {paths, plural, one {# பாதை} other {# பாதைகள்}}",
"profile_picture_transparent_pixels": "சுயவிவரப் படங்களுக்கு வெளிப்படையான படப்புள்ளிகள் இருக்க முடியாது. தயவுசெய்து பெரிதாக்கவும்/அல்லது படத்தை நகர்த்தவும்.",
"quota_higher_than_disk_size": "வட்டு அளவை விட அதிகமாக ஒதுக்கீட்டை அமைத்துள்ளீர்கள்",
"something_went_wrong": "ஏதோ தவறு நடந்தது",
@@ -956,9 +957,9 @@
"unable_to_add_exclusion_pattern": "விலக்கு முறையைச் சேர்க்க முடியவில்லை",
"unable_to_add_import_path": "இறக்குமதி பாதையைச் சேர்க்க முடியவில்லை",
"unable_to_add_partners": "கூட்டாளர்களைச் சேர்க்க முடியவில்லை",
"unable_to_add_remove_archive": "{காப்பகப்படுத்த முடியவில்லை, தேர்ந்தெடுக்கவும், உண்மையாகவும்} பிற {remove asset from}}} காப்பகத்திற்குச் சேர்க்கவும்",
"unable_to_add_remove_favorites": "{பிடித்த, தேர்ந்தெடுக்கவும், உண்மையாகவும்}}} பிடித்தவைகளிலிருந்து சொத்தை அகற்று",
"unable_to_archive_unarchive": "{காப்பகப்படுத்த முடியவில்லை, தேர்ந்தெடுக்க முடியவில்லை, உண்மை {archive} பிற {unarchive}}",
"unable_to_add_remove_archive": "காப்பகத்தில் {archived, select, true {இருந்து சொத்தை அகற்ற} other {சொத்தைச் சேர்க்க}} முடியவில்லை",
"unable_to_add_remove_favorites": "பிடித்தவையில் {பிடித்தது, தேர்ந்தெடு, உண்மை {சொத்தைச் சேர்க்க} மற்ற {சொத்தை அகற்ற}} முடியவில்லை",
"unable_to_archive_unarchive": "{காப்பகப்படுத்த முடியவில்லை, தேர்ந்தெடு, உண்மை {காப்பகம்} மற்றவை {காப்பகத்தை அகற்று}}",
"unable_to_change_album_user_role": "ஆல்பத்தின் பயனரின் பாத்திரத்தை மாற்ற முடியவில்லை",
"unable_to_change_date": "தேதியை மாற்ற முடியவில்லை",
"unable_to_change_description": "விளக்கத்தை மாற்ற முடியவில்லை",
@@ -1066,7 +1067,7 @@
"failed_to_load_assets": "சொத்துக்களை ஏற்றுவதில் தோல்வி",
"failed_to_load_folder": "கோப்புறையை ஏற்றுவதில் தோல்வி",
"favorite": "பிடித்த",
"favorite_action_prompt": "{எண்ணிக்கை the பிடித்தவைகளில் சேர்க்கப்பட்டது",
"favorite_action_prompt": "{count} பிடித்தவைகளில் சேர்க்கப்பட்டது",
"favorite_or_unfavorite_photo": "பிடித்த அல்லது சாதகமற்ற புகைப்படம்",
"favorites": "பிடித்தவை",
"favorites_page_no_favorites": "பிடித்த சொத்துக்கள் எதுவும் கிடைக்கவில்லை",
@@ -1128,9 +1129,9 @@
"hide_password": "கடவுச்சொல்லை மறைக்கவும்",
"hide_person": "நபரை மறைக்க",
"hide_unnamed_people": "பெயரிடப்படாதவர்களை மறைக்கவும்",
"home_page_add_to_album_conflicts": "சேர்க்கப்பட்டது {ஆல்பம் {added} சொத்துக்கள் {ஆல்பம். {album} சொத்துக்கள் ஏற்கனவே ஆல்பத்தில் உள்ளன.",
"home_page_add_to_album_conflicts": "{album} ஆல்பத்தில் {added} சொத்துக்கள் சேர்க்கப்பட்டன. {failed} சொத்துக்கள் ஏற்கனவே ஆல்பத்தில் உள்ளன.",
"home_page_add_to_album_err_local": "ஆல்பங்களில் உள்ளக சொத்துக்களை இன்னும் சேர்க்க முடியாது, தவிர்க்கவும்",
"home_page_add_to_album_success": "சேர்க்கப்பட்டது {ஆல்பம் {added} சொத்துக்கள் {ஆல்பம்.",
"home_page_add_to_album_success": "{album} ஆல்பத்தில் {added} சொத்துக்கள் சேர்க்கப்பட்டன.",
"home_page_album_err_partner": "ஒரு ஆல்பத்திற்கு இன்னும் கூட்டாளர் சொத்துக்களைச் சேர்க்க முடியவில்லை, தவிர்க்கவும்",
"home_page_archive_err_local": "உள்ளக சொத்துக்களை இன்னும் காப்பகப்படுத்த முடியாது, தவிர்க்கவும்",
"home_page_archive_err_partner": "கூட்டாளர் சொத்துக்களை காப்பகப்படுத்த முடியாது, தவிர்க்கவும்",
@@ -1152,8 +1153,8 @@
"ignore_icloud_photos": "ICloud புகைப்படங்களை புறக்கணிக்கவும்",
"ignore_icloud_photos_description": "ICloud இல் சேமிக்கப்படும் புகைப்படங்கள் இம்மிச் சேவையகத்தில் பதிவேற்றப்படாது",
"image": "படம்",
"image_alt_text_date": "{isvideo, தேர்ந்தெடு, உண்மை {Video} பிற {Image}} {date} இல் எடுக்கப்பட்டது",
"image_alt_text_date_1_person": "{isvideo, தேர்ந்தெடு, உண்மை {Video} பிற {Image}} {{person1} இல் {date}",
"image_alt_text_date": "{isVideo, select, true {Video} மற்ற {Image}} {date} அன்று எடுக்கப்பட்டது",
"image_alt_text_date_1_person": "{isVideo, தேர்ந்தெடு, உண்மை {Video} பிற {Image}} {person1} இல் {date}",
"image_alt_text_date_2_people": "{isvideo, தேர்ந்தெடுக்கவும், உண்மை {Video} பிற {Image}} {{person1} மற்றும் {person2} {date} இல் எடுக்கப்பட்டது",
"image_alt_text_date_3_people": "{isvideo, தேர்ந்தெடு, உண்மை {Video} பிற {Image} the {person1}, {person2}, மற்றும் {person3} இல் எடுக்கப்பட்டது {date}",
"image_alt_text_date_4_or_more_people": "{isvideo, தேர்ந்தெடு, உண்மை {Video} பிற {Image} the {person1}, {person2}, மற்றும் {கூடுதல் COUNT, எண்} மற்றவர்கள் {date}",
@@ -1489,7 +1490,7 @@
"permanent_deletion_warning_setting_description": "சொத்துக்களை நிரந்தரமாக நீக்கும்போது ஒரு எச்சரிக்கையைக் காட்டுங்கள்",
"permanently_delete": "நிரந்தரமாக நீக்கு",
"permanently_delete_assets_count": "நிரந்தரமாக நீக்கு {எண்ணிக்கை, பன்மை, ஒன்று {asset} மற்ற {assets}}",
"permanently_delete_assets_prompt": "நீங்கள் நிச்சயமாக {எண்ணிக்கை, பன்மை, ஒன்று {இந்த சொத்து?} மற்ற {இந்த <b>#</b> சொத்துக்கள்?",
"permanently_delete_assets_prompt": "{count, plural, one {this asset?} other {these <b>#</b> assets?}} என்பதை நிரந்தரமாக நீக்க விரும்புகிறீர்களா? இது {count, plural, one {it from its} other {them from their}} ஆல்பத்தையும் நீக்கும்.",
"permanently_deleted_asset": "நிரந்தரமாக நீக்கப்பட்ட சொத்து",
"permanently_deleted_assets_count": "நிரந்தரமாக நீக்கப்பட்டது {எண்ணிக்கை, பன்மை, ஒன்று {# சொத்து} பிற {# சொத்துக்கள்}}",
"permission": "இசைவு",
@@ -1959,7 +1960,7 @@
"tag_assets": "குறிச்சொல் சொத்துக்கள்",
"tag_created": "உருவாக்கப்பட்ட குறிச்சொல்: {tag}",
"tag_feature_description": "தர்க்கரீதியான குறிச்சொல் தலைப்புகளால் தொகுக்கப்பட்ட புகைப்படங்கள் மற்றும் வீடியோக்களை உலாவுதல்",
"tag_not_found_question": "குறிச்சொல்லைக் கண்டுபிடிக்க முடியவில்லையா? <இணைப்பு> புதிய குறிச்சொல்லை உருவாக்கவும். </இணைப்பு>",
"tag_not_found_question": "குறிச்சொல்லைக் கண்டுபிடிக்க முடியவில்லையா?<link>புதிய குறிச்சொல்லை உருவாக்கவும்.</link>",
"tag_people": "மக்களை குறிக்கவும்",
"tag_updated": "புதுப்பிக்கப்பட்ட குறிச்சொல்: {tag}",
"tagged_assets": "குறித்துள்ளார் {எண்ணிக்கை, பன்மை, ஒன்று {# சொத்து} மற்ற {# சொத்துக்கள்}}",
@@ -1980,7 +1981,7 @@
"theme_setting_system_primary_color_title": "கணினி நிறத்தைப் பயன்படுத்துங்கள்",
"theme_setting_system_theme_switch": "தானியங்கி (கணினி அமைப்பைப் பின்பற்றவும்)",
"theme_setting_theme_subtitle": "பயன்பாட்டின் கருப்பொருள் அமைப்பைத் தேர்வுசெய்க",
"theme_setting_three_stage_loading_subtitle": "மூன்று-நிலை ஏற்றுதல் ஏற்றுதல் செயல்திறனை அதிகரிக்கக்கூடும், ஆனால் கணிசமாக அதிக பிணைய சுமையை ஏற்படுத்துகிறது",
"theme_setting_three_stage_loading_subtitle": "மூன்று-நிலை ஏற்றுதல் இயக்கினால் ஏற்றுதல் செயல்திறனை அதிகரிக்கக்கூடும், ஆனால் கணிசமாக ிக பிணையச் சுமையை ஏற்படுத்துகிறது",
"theme_setting_three_stage_loading_title": "மூன்று-நிலை ஏற்றுதலை இயக்கவும்",
"they_will_be_merged_together": "அவர்கள் ஒன்றாக இணைக்கப்படுவார்கள்",
"third_party_resources": "மூன்றாம் தரப்பு வளங்கள்",
@@ -2117,7 +2118,7 @@
"viewer_remove_from_stack": "அடுக்கிலிருந்து அகற்று",
"viewer_stack_use_as_main_asset": "பிரதான சொத்தாகப் பயன்படுத்தவும்",
"viewer_unstack": "அடுக்கை நீக்கு",
"visibility_changed": "{எண்ணிக்கை, பன்மை, ஒன்று {# நபர்} மற்ற {# நபர்கள்} க்கு க்க தெரிவுநிலை மாற்றப்பட்டது",
"visibility_changed": "{count, plural, one {# நபர்} other {# நபர்கள்}} க்கான தெரிவுநிலை மாற்றப்பட்டது",
"waiting": "காத்திருக்கிறது",
"warning": "எச்சரிக்கை",
"week": "வாரம்",

View File

@@ -33,6 +33,7 @@
"add_to_albums": "Albümlere ekle",
"add_to_albums_count": "{count} albümlerine ekle",
"add_to_shared_album": "Paylaşılan albüme ekle",
"add_upload_to_stack": "Yüklemeyi yığına ekle",
"add_url": "URL ekle",
"added_to_archive": "Arşive eklendi",
"added_to_favorites": "Favorilere eklendi",
@@ -62,7 +63,7 @@
"config_set_by_file": "Ayarlar şuanda config dosyası tarafından ayarlanmıştır",
"confirm_delete_library": "{library} kütüphanesini silmek istediğinize emin misiniz?",
"confirm_delete_library_assets": "Bu kütüphaneyi silmek istediğinize emin misiniz? Bu işlem {count, plural, one {# tane öğeyi} other {all # tane öğeyi}} Immich'den silecek ve bu işlem geri alınamaz. Dosyalar diskte kalacaktır.",
"confirm_email_below": "Onaylamak için aşağıya {email} yazın",
"confirm_email_below": "Onaylamak için aşağıya \"{email}\" yazın",
"confirm_reprocess_all_faces": "Tüm yüzleri tekrardan işlemek istediğinize emin misiniz? Bu işlem isimlendirilmiş insanları da silecek.",
"confirm_user_password_reset": "{user} adlı kullanıcının şifresini sıfırlamak istediğinize emin misiniz?",
"confirm_user_pin_code_reset": "{user} adlı kullanıcının PIN kodunu sıfırlamak istediğinize emin misiniz?",
@@ -401,7 +402,7 @@
"advanced_settings_prefer_remote_subtitle": "Bazı cihazlar yerel öğelerden küçük resimleri yüklerken çok yavaş çalışır. Bunun yerine uzak görüntüleri yüklemek için bu ayarı etkinleştirin.",
"advanced_settings_prefer_remote_title": "Uzak görüntüleri tercih et",
"advanced_settings_proxy_headers_subtitle": "Immich'in her ağ isteğiyle birlikte göndermesi gereken proxy header'ları tanımlayın",
"advanced_settings_proxy_headers_title": "Proxy Header'lar",
"advanced_settings_proxy_headers_title": "Proxy Başlıkları",
"advanced_settings_readonly_mode_subtitle": "Fotoğrafların yalnızca görüntülenebildiği salt okunur modu etkinleştirir; birden fazla görüntü seçme, paylaşma, aktarma, silme gibi işlemler devre dışı bırakılır. Ana ekrandan kullanıcı avatarı aracılığıyla salt okunur modu Etkinleştirin/Devre dışı bırakın",
"advanced_settings_readonly_mode_title": "Salt okunur Mod",
"advanced_settings_self_signed_ssl_subtitle": "Sunucu uç noktası için SSL sertifika doğrulamasını atlar. Kendinden imzalı sertifikalar için gereklidir.",
@@ -415,15 +416,15 @@
"age_year_months": "1 yaş, {months, plural, one {# ay} other {# ay}}",
"age_years": "{years, plural, other {Yaş #}}",
"album_added": "Albüm eklendi",
"album_added_notification_setting_description": "Paylaşılan bir albüme eklendiğinizde email bildirimi alın",
"album_cover_updated": "Albüm Kapağı güncellendi",
"album_added_notification_setting_description": "Paylaşılan bir albüme eklendiğinizde e-posta bildirimi alın",
"album_cover_updated": "Albüm kapağı güncellendi",
"album_delete_confirmation": "{album} albümünü silmek istediğinize emin misiniz?",
"album_delete_confirmation_description": "Albüm paylaşılıyorsa, diğer kullanıcılar artık bu albüme erişemeyecektir.",
"album_deleted": "Albüm silindi",
"album_info_card_backup_album_excluded": "HARİÇ",
"album_info_card_backup_album_included": "DAHİL",
"album_info_updated": "Albüm bilgisi güncellendi",
"album_leave": "Albümden Ayrıl?",
"album_leave": "Albümden ayrıl?",
"album_leave_confirmation": "{album} albümünden ayrılmak istediğinize emin misiniz?",
"album_name": "Albüm Adı",
"album_options": "Albüm seçenekleri",
@@ -616,7 +617,7 @@
"biometric_not_available": "Bu cihazda biyometrik kimlik doğrulama mevcut değil",
"birthdate_saved": "Doğum günü başarılı bir şekilde kaydedildi",
"birthdate_set_description": "Doğum günü, fotoğraftaki insanın fotoğraf çekildiği zamandaki yaşının hesaplanması için kullanılır.",
"blurred_background": "Bulanık arkaplan",
"blurred_background": "Bulanık arka plan",
"bugs_and_feature_requests": "Hatalar ve Özellik Talepleri",
"build": "Yapı",
"build_image": "Görüntü Oluştur",
@@ -678,7 +679,7 @@
"clear": "Temizle",
"clear_all": "Hepsini temizle",
"clear_all_recent_searches": "Son aramaların hepsini temizle",
"clear_file_cache": "Dosya Önbelleği Temizle",
"clear_file_cache": "Dosya Önbelleğini Temizle",
"clear_message": "Mesajı temizle",
"clear_value": "Değeri temizle",
"client_cert_dialog_msg_confirm": "Tamam",
@@ -713,7 +714,7 @@
"confirm_tag_face_unnamed": "Bu yüzü etiketlemek ister misin?",
"connected_device": "Cihaz bağlandı",
"connected_to": "Bağlı",
"contain": "İçermek",
"contain": "Sığdır",
"context": "Bağlam",
"continue": "Devam et",
"control_bottom_app_bar_create_new_album": "Yeni albüm",
@@ -735,7 +736,7 @@
"copy_to_clipboard": "Panoya Kopyala",
"country": "Ülke",
"cover": "Kapla",
"covers": "Kaplar",
"covers": "Kapak",
"create": "Oluştur",
"create_album": "Albüm oluştur",
"create_album_page_untitled": "Başlıksız",
@@ -1342,7 +1343,7 @@
"merged_people_count": "{count, plural, one {# kişi} other {# kişi}} birleştirildi",
"minimize": "Küçült",
"minute": "Dakika",
"minutes": "Dakikalar",
"minutes": "Dakika",
"missing": "Eksik",
"model": "Model",
"month": "Ay",
@@ -1391,14 +1392,14 @@
"no_cast_devices_found": "Yansıtılacak cihaz bulunamadı",
"no_checksum_local": "Sağlama toplamı mevcut değil - yerel varlıkları alamıyor",
"no_checksum_remote": "Sağlama toplamı mevcut değil - uzak varlık alınamıyor",
"no_duplicates_found": "Çift bulunamadı.",
"no_duplicates_found": "Hiçbir kopya bulunamadı.",
"no_exif_info_available": "EXIF bilgisi mevcut değil",
"no_explore_results_message": "Koleksiyonunuzu keşfetmek için daha fazla fotoğraf yükleyin.",
"no_favorites_message": "En sevdiğiniz fotoğraf ve videoları hızlıca bulmak için favorilere ekleyin",
"no_libraries_message": "Fotoğraf ve videolarınızı görmek için bir harici kütüphane oluşturun",
"no_local_assets_found": "Bu sağlama toplamı ile yerel varlık bulunamadı",
"no_locked_photos_message": "Kilitli klasördeki fotoğraf ve videolar gizlidir; kitaplığınızda gezinirken veya arama yaparken görünmezler.",
"no_name": "İsim yok",
"no_name": "İsim Yok",
"no_notifications": "Bildirim yok",
"no_people_found": "Eşleşen kişi bulunamadı",
"no_places": "Yer yok",
@@ -1488,10 +1489,10 @@
"permanent_deletion_warning": "Kalıcı silme uyarısı",
"permanent_deletion_warning_setting_description": "Nesneleri kalıcı olarak silerken uyarı göster",
"permanently_delete": "Kalıcı olarak sil",
"permanently_delete_assets_count": "{count, plural, one {öğe} other {öğeler}} kalıcı olarak silindi",
"permanently_delete_assets_count": "{count, plural, one {öğe} other {öğe}} kalıcı olarak silindi",
"permanently_delete_assets_prompt": "Bu {count, plural, one {öğeyi} other {<b>#</b> öğeleri}} kalıcı olarak silmek istediğinizden emin misiniz? Bu işlem {count, plural, one {bu öğeyi} other {bu öğeleri}} albümlerinizden de kaldırır.",
"permanently_deleted_asset": "Kalıcı olarak silinmiş öğeler",
"permanently_deleted_assets_count": "{count, plural, one {# öğe} other {# öğeler}} kalıcı olarak silindi",
"permanently_deleted_assets_count": "{count, plural, one {# öğe} other {# öğe}} kalıcı olarak silindi",
"permission": "İzin",
"permission_empty": "İzniniz boş olmamalı",
"permission_onboarding_back": "Geri",
@@ -1503,9 +1504,9 @@
"permission_onboarding_permission_limited": "Sınırlı izin. Immich'in tüm fotoğrav ve videolarınızı yedeklemesine ve yönetmesine izin vermek için Ayarlar'da fotoğraf ve video izinlerini verin.",
"permission_onboarding_request": "Immich'in fotoğraflarınızı ve videolarınızı görüntüleyebilmesi için izne ihtiyacı var.",
"person": "Kişi",
"person_age_months": "{months, plural, one {# month} other {# months}} eski",
"person_age_year_months": "1 yıl, {months, plural, one {# month} other {# months}} eski",
"person_age_years": "{years, plural, other {# sene}} önce",
"person_age_months": "{months, plural, one {# aylık} other {# aylık}}",
"person_age_year_months": "1 yıl, {months, plural, one {# aylık} other {# aylık}}",
"person_age_years": "{years, plural, other {# yaşında}}",
"person_birthdate": "{date} tarihinde doğdu",
"person_hidden": "{name}{hidden, select, true { (gizli)} other {}}",
"photo_shared_all_users": "Fotoğraflarınızı tüm kullanıcılarla paylaştınız gibi görünüyor veya paylaşacak kullanıcı bulunmuyor.",
@@ -1675,8 +1676,8 @@
"resume": "Devam et",
"resume_paused_jobs": "Sürdür {count, plural, one {# duraklatılmış iş} other {# duraklatılmış işler}}",
"retry_upload": "Yeniden yüklemeyi dene",
"review_duplicates": "Çiftleri gözden geçir",
"review_large_files": "Büyük dosyaları inceleyin",
"review_duplicates": "Kopyaları gözden geçir",
"review_large_files": "Büyük dosyaları incele",
"role": "Rol",
"role_editor": "Düzenleyici",
"role_viewer": "Görüntüleyici",
@@ -1867,7 +1868,7 @@
"shared_photos_and_videos_count": "{assetCount, plural, other {# paylaşılan fotoğraflar & videolar.}}",
"shared_with_me": "Benimle paylaşılanlar",
"shared_with_partner": "{partner} ile paylaşıldı",
"sharing": "Paylaşılıyor",
"sharing": "Paylaşım",
"sharing_enter_password": "Bu sayfayı görebilmek için lütfen şifreyi giriniz.",
"sharing_page_album": "Paylaşılan albümler",
"sharing_page_description": "Ağınızdaki kişilerle fotoğraf ve video paylaşmak için paylaşımlı albümler oluşturun.",

View File

@@ -33,6 +33,7 @@
"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": "Додано до обраного",
@@ -1038,6 +1039,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": "Вийти зі слайд-шоу",
@@ -1113,7 +1115,7 @@
"haptic_feedback_title": "Тактильна віддача",
"has_quota": "Квота",
"hash_asset": "Гешувати файл",
"hashed_assets": "Гешовані фото та відео",
"hashed_assets": "Хеши",
"hashing": "Хешування",
"header_settings_add_header_tip": "Додати заголовок",
"header_settings_field_validator_msg": "Значення не може бути порожнім",

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More