Compare commits

...

220 Commits

Author SHA1 Message Date
github-actions
3d515f5072 chore: version v1.138.1 2025-08-18 15:23:35 +00:00
Alex
ec01db5c8b refactor: bottom sheet action button (#20964)
* fix: incorrect archive action shown in asset viewer'

* Refactor

* use enums syntax and add tests
2025-08-18 10:20:08 -05:00
bo0tzz
cd6d8fcdfe chore: elaborate dupe bot comment (#21025)
Hopefully this stops people opening new threads
2025-08-18 13:36:53 +00:00
Alex
1198311d64 fix: sync block login progress (#20939) 2025-08-14 19:08:04 -05:00
Alex
1a4eab9655 fix: locked photos shown in beta timeline favorite page (#20937) 2025-08-14 23:03:33 +00:00
Brandon Wees
1926c90780 feat(mobile): shared album activities (#20714)
* feat(mobile): shared album activities

* add like buttons and fix behavior of unliking

* fix: conditionally show activity button and fix title truncations

* fix(mobile): newest/oldest album sort (#20743)

* fix(mobile): newest/oldest album sort

* chore: use sqlite to determine album asset timestamps

* Fix missing future

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

* fix: async handling of sort

* chore: tests

* chore: code review changes

* fix: use created at for newest asset

* fix: use localDateTime for sorting

* chore: cleanup

* chore: use final

* feat: loading indicator

---------

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

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-14 22:50:56 +00:00
Alex
4d5975b717 fix: pinch in finished as zoomed in (#20936) 2025-08-14 17:39:14 -05:00
Alex
8cbd6b29c4 fix: sync remote before starting backup (#20906) 2025-08-14 17:19:08 -05:00
Alex
8c1b630a2b fix: backup resume more reliable on app start up (#20907) 2025-08-14 17:09:32 -05:00
Brandon Wees
c961d2aaf7 fix(mobile): don't show view in timeline button when opening cast dialog (#20934)
fix: don't show view in timeline button when opening cast dialog
2025-08-14 17:09:17 -05:00
Brandon Wees
41c75dc93e fix(mobile): always show cast button (#20935) 2025-08-14 17:09:01 -05:00
Daniel Dietzler
f92247c99b fix: oauth auto-login infinite loop (#20904) 2025-08-13 19:45:06 -04:00
renovate[bot]
53f9fc2d1c chore(deps): update docker.io/valkey/valkey:8-bookworm docker digest to 5b8f8c3 (#20874)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-13 21:49:38 +02:00
github-actions
bede19a3ca chore: version v1.138.0 2025-08-13 17:08:29 +00:00
Alex
aefa62b234 fix: asset_viewer page viewing experience (#20889)
* fix: zoomed in effect on swiped when bottom sheet is open

* fix: memory leaked

* fix: asset out of range when swiping in asset_viewer
2025-08-13 11:35:42 -05:00
renovate[bot]
b3fb831994 fix(deps): update machine-learning (#20878)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-13 11:24:09 -04:00
Brandon Wees
0d60199514 fix(mobile): newest/oldest album sort (#20743)
* fix(mobile): newest/oldest album sort

* chore: use sqlite to determine album asset timestamps

* Fix missing future

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

* fix: async handling of sort

* chore: tests

* chore: code review changes

* fix: use created at for newest asset

* fix: use localDateTime for sorting

* chore: cleanup

* chore: use final

* feat: loading indicator

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-12 14:46:50 -05:00
Alex
54960157c0 chore: backup info card styling tweak (#20799)
* chore: backup info card styling tweak

* pr feedback
2025-08-12 16:08:31 +00:00
waclaw66
244d097d01 fix(mobile): enable person age pluralization (#20881)
Enable person age pluralization
2025-08-12 14:55:47 +00:00
renovate[bot]
adb55f3726 fix(deps): update machine-learning (#19803)
* fix(deps): update machine-learning

* typing fixes

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-08-11 18:07:49 -04:00
Mirek
5d2777a5c6 feat: format date and time in /admin/users/ -> Profile section (#20811)
Matches the format used in the user settings page.

Added a formatting function in utils.
2025-08-11 16:50:34 -05:00
Alex
24db881c14 feat: swipe to delete album (#20765) 2025-08-11 16:49:53 -05:00
Alex
f09bed9ad2 fix: age info cut off (#20872) 2025-08-11 16:42:16 -05:00
Mert
e29cc66361 docs: vectorchord migration instructions, deprecation log on startup (#20867)
* deprecation log, migration docs

* update tests

* fix info boxes
2025-08-11 16:50:48 -04:00
Brandon Wees
669b765662 feat: edit image in beta timeline (#20709)
* feat: edit image in beta timeline

* delete album notifier pull

* feat: sync local after saving image

* feat: queue asset for manual upload after saving

* chore: clarify PlatformException catch
2025-08-11 15:01:31 -05:00
Gabriel Soldani
e7060dc292 fix(web): fix layout loop with single row grids in explore page (#20833) 2025-08-11 02:31:26 +00:00
Nicholas
03a8b6cb38 feat: add i18n formatting to make translation in mobile makefile (#20807)
add i18n formatting to `make translation` in mobile makefile
2025-08-10 21:26:23 -05:00
Min Idzelis
f317cbe221 fix: devcontainer broken by debian Trixie going stable (#20843) 2025-08-10 21:24:00 -05:00
Nicholas
d6d31c6695 fix: change all download icons to mdiDownload for clarity and consistency (#20821)
change all download icons to `mdiDownload` for clarity and consistency
2025-08-10 21:23:21 -05:00
Alex
4b9019e762 fix: return method correctly (#20831) 2025-08-09 23:01:47 -05:00
Jason Rasmussen
13563fc507 chore: update response codes (#20770)
* chore: update response codes

* chore: skip problematic test
2025-08-08 15:56:37 -04:00
Jason Rasmussen
2ce4f8dd3b fix(sql-tools): null default (#20796) 2025-08-08 15:44:39 -04:00
Jason Rasmussen
538d5c81ea feat: reset oauth ids (#20798) 2025-08-08 15:42:38 -04:00
Jason Rasmussen
9ecaa3fa9d feat: more cursed knowledge (#20794) 2025-08-08 10:05:59 -04:00
Alex
b1aacfdbd9 chore: log resume backup process (#20768) 2025-08-07 15:44:49 -05:00
Jason Rasmussen
cfbc24579d feat(web): reset pin code (#20766) 2025-08-07 15:07:31 -04:00
Alex
1d4d8e7a9a chore: bump @immich/ui to 24 (#20767)
chore: bump @ui 24
2025-08-07 14:43:56 -04:00
Alex
7b83b7b2d5 fix: don't show remove from album action from the main timeline (#20757)
* fix: don't show remove from album action from the main timeline

* pr feedback
2025-08-07 23:36:16 +05:30
Jason Rasmussen
a896c5a4dd fix(web): shared-link autocomplete (#20761) 2025-08-07 12:01:05 -05:00
Jason Rasmussen
c74989d304 docs: include openapi.json (#20760) 2025-08-07 12:00:50 -05:00
bo0tzz
1283491cc2 chore: fork PRs can't have previews (#20464)
* chore: fork PRs can't have previews

* chore: fix formatting

* chore: different close message for fork PRs

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2025-08-07 12:14:33 -04:00
Alex
89522daaac fix: invalidate album api on log out (#20756) 2025-08-07 14:19:44 +00:00
mkuehne707
011a667314 feat: batch change date and time relatively (#17717)
Co-authored-by: marcel.kuehne <>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2025-08-07 13:42:33 +00:00
Nicholas
df2525ee08 feat(docs): add make dev-docs (#20572) 2025-08-07 14:02:13 +01:00
Arpit Singh
01a9f735c8 fix: avoid unnecessary writes to system metadata repository (#20538)
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2025-08-07 12:43:23 +00:00
Ben McCann
af10c3bc2f chore: upgrade SvelteKit (#20736) 2025-08-07 13:00:42 +01:00
Aamir Azad
395f2e155d docs: remove warning about the removed repair page (#20746) 2025-08-07 04:49:38 +00:00
Alex
10cbed55c4 fix: crash when rendering heatmap on Android (#20740) 2025-08-06 21:41:42 -05:00
Brandon Wees
325d5f7ba9 fix(mobile): person birthday viewing/editing (#20731)
* fix: edit birthday dialog

* chore: convert age to "x years old" format

* fix: lint

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-06 22:13:56 +00:00
Thomas
746252fe39 fix(web): limit max height of search results (#20727)
The height of the search results element was unrestricted, which meant that the
asset visibility calculations were completely incorrect. The consequence of
this is that assets which should not have been visible, were. In practical
terms, all assets below the viewport were rendered when they shouldn't have
been which is terrible for performance. Limiting the height of the viewport
fixes that calculation and assets are correctly hidden.

The consequence of limiting the height of the viewport is that the intersector
then incorrectly thought the scroll position was always at the end. This has
been fixed by calculating the position of sliding window against the calculated
asset layout container height.

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-06 17:05:23 -05:00
Thomas
f36efd128b fix(web): prevent thumbhashes from covering search bar (#20720)
The thumbhash had a z-index setting which meant it would cover the search bar,
and would always cause weird animations when scrolling up in search results.

This is fixable by removing the z-index and moving it in front the other
elements to get a naturally higher higher z-index preference.
2025-08-06 16:57:51 -05:00
shenlong
f1c494ef97 fix: use create if not exists clause for indexes (#20728)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-08-06 16:57:33 -05:00
shenlong
9c8c52874a fix: cleanup logger DB in isolates (#20730)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-08-06 16:57:17 -05:00
shenlong
68b617130a chore: disable android auto backup (#20734)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-08-06 16:52:42 -05:00
Thomas
89292fecb4 fix(web): use correct sliding window offset for search results (#20726)
The contents of search results are slightly offset by the search bar, search
terms and spacing (margins/padding), and needs to be factored in when
calculating whether an asset is visible or not. The offset was 0, which
meant that assets were removed from view too early.
2025-08-06 16:34:24 -05:00
Thomas
1193a23282 feat(web): don't scroll to visible assets (#20729)
The timeline has been quite aggressive with scrolling to assets, even if they
were right in the middle of the page. If the asset is visible, then we
shouldn't scroll to it. It's really confusing when assets jump around after
being viewed.
2025-08-06 16:31:37 -05:00
Xantin
bbfff64927 docs: update TrueNAS docs (#19990)
Co-authored-by: bo0tzz <git@bo0tzz.me>
Co-authored-by: Nicholas Flamy <30300649+NicholasFlamy@users.noreply.github.com>
2025-08-06 21:16:28 +02:00
shenlong
c5c9a522c1 fix: remove drift map scrubber (#20723)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-08-06 13:40:06 -05:00
Brandon Wees
3cd7f5ab90 feat: use sqlite for logging (#20414)
* feat: use drift for logging

* fix: tests

* feat: use the truncate limit from constants.ts as default

* chore: move setupAll to top level and restructure

* chore: code review changes

* fix: inherits

* feat: raise log line limit to 2000

* limit getAll to 250 lines

* delete DLog and make LogRepository not a singleton

* fix: drift build settings and `make migration`

* fix: tests

* remove sensitive log

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-06 10:49:29 -05:00
Lauritz Tieste
f2067221c5 fix: disk info is cleared when profile picture is uploaded (#20411)
fix: update disk info on user profile image upload
2025-08-06 10:36:07 -05:00
Thomas
89598cf0be chore(web): remove arbitrary search result limit (#20719)
The search results page can become unstable with large amounts of assets, and
has therefore been limited to displaying just 5000 assets. This limit is
arbitrary and may be too restrictive.
2025-08-06 10:12:52 -05:00
Mert
0121043d7d refactor(mobile): sqlite-based map view (#20665)
* feat(mobile): drift map page

* refactor: map query

* perf: do not filter markers

* fix: refresh timeline by key

* chore: rename

* remove ref listen and global key

* clean code

* remove locked and favorite

* temporary change for stress test

* optimizations

* fix bottom sheet

* cleaner bounds check

* cleanup

* feat: back button

---------

Co-authored-by: wuzihao051119 <wuzihao051119@outlook.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-06 10:05:49 -05:00
patrickgoering
1ca46fbd98 fix: video thumbnail generation for short videos (#20629)
fix video thumbnail generation for short videos

ffmpeg gives conversion failed with error 234 for short mp4 files (less
than 10s) that where converted from m2ts. Longer videos work fine.

It looks like ffmpeg has no frames left to use for generating a
thumbnail.

This change fixes this issue and seems to not change the behaviour for
other mp4 files (same thumbnail before and after change)

This might also fix all mts file thumbnail generation.
2025-08-06 13:10:49 +00:00
shenlong
6ddef3a7e4 fix: server version not fetched after auto login (#20713)
* fix: server version not fetched after auto login

* wrap get info with a try catch

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-08-06 08:01:16 -05:00
Brandon Wees
0d9ebdc46a fix(mobile): show video controls when in locked view (#20707)
* fix(mobile): show video controls when in locked view

* const constructor
2025-08-06 07:58:54 -05:00
Zack Pollard
fa26d0de33 refactor: new helper methods that work for all sync queries (#20690)
refactor: new helper methods that work for all sync queries
2025-08-06 08:34:12 -04:00
Jason Rasmussen
a5760129f0 fix: custom-url ssr (#20704) 2025-08-05 23:29:01 +02:00
Gaurav Yadav
d430b869ac fix: shared link custom URL photo access authentication (#20534) 2025-08-05 23:22:19 +02:00
Brandon Wees
4179c8a17d fix(mobile): filter people that have less than 3 faces (#20705) 2025-08-05 21:16:13 +00:00
Zack Pollard
0a9cbf01d2 feat: ack sync reset (#20703) 2025-08-05 20:30:19 +00:00
Alex
9567a2a560 fix: delete local asset show twice (#20700)
* chore: better button width

* fix: delete local action show twice
2025-08-05 19:18:57 +00:00
renovate[bot]
58dd6f094c chore(deps): update dependency @types/bcrypt to v6 (#20669)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-05 19:58:08 +02:00
Zack Pollard
02381343ff fix: album asset sync must sync new assets in a shared album (#20655) 2025-08-05 17:53:51 +01:00
Mert
09a5963eee fix(mobile): catch thumbnail cache miss (#20694)
catch error
2025-08-05 11:32:06 -05:00
Alex
a573a23c83 fix: empty custom header prevent logging in (#20693) 2025-08-05 16:14:21 +00:00
Brandon Wees
7118dca559 feat(mobile): album shared user editing (#20671)
* feat(mobile): album shared user editing

* fix: album leaving

* i18n and options button

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-05 15:31:58 +00:00
Brandon Wees
13d43e193e feat(mobile): use custom headers when connecting in widget (#20666)
* feat(mobile): use custom headers when connecting in widget

* delete log in android widget

* chore: code review changes
2025-08-05 10:29:27 -05:00
Brandon Wees
7a7843467c feat(mobile): remove from album in asset viewer bar (#20672)
* feat: remove from album in asset viewer bar

* chore: move button to bottom bar instead of bottom sheet

* move back to bottom sheet

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-05 15:20:55 +00:00
Mert
9e6fee4064 fix(mobile): use cached thumbnail in full size image provider (#20637) 2025-08-05 10:20:25 -04:00
shenlong
9680f1290d fix: exclude assets that haven't been hashed yet from uploads (#20684)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-08-05 08:35:25 -05:00
renovate[bot]
ce2ea98926 fix(deps): update typescript-projects (#20396)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2025-08-05 12:45:47 +00:00
renovate[bot]
5c76cc34e1 chore(deps): update node.js to v22.18.0 (#20662)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-05 11:01:15 +00:00
renovate[bot]
eb2f4c866e chore(deps): update dependency eslint-plugin-unicorn to v60 (#20677)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2025-08-05 10:58:13 +00:00
renovate[bot]
2a370087e8 chore(deps): update dependency @types/node to ^22.17.0 (#20657)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-05 11:56:53 +01:00
renovate[bot]
272c8a5812 chore(deps): update grafana/grafana docker tag to v12.1.0 (#20661)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-05 11:56:05 +01:00
renovate[bot]
08fe549ed8 chore(deps): update base-image to v202507291116 (major) (#20668)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-05 11:54:37 +01:00
renovate[bot]
ae15efdf2a chore(deps): update dependency pigeon to v26 (#20678)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2025-08-05 10:52:03 +00:00
renovate[bot]
8e003f95db chore(deps): update github/codeql-action action to v3.29.5 (#20656)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-05 11:44:50 +01:00
Brandon Wees
3e92e837f1 feat(mobile): create shared link for albums (#20652)
* feat(mobile): create shared link for albums

* translation

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-05 01:51:45 +00:00
Brandon Wees
081307ced2 fix: expand sheet when album search is focused (#20651)
* fix: expand sheet when album search is focused

* convert GeneralBottomSheet to ConsumerStatefulWidget

* fix: cleaning up

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-04 20:35:57 -05:00
Michael
a91bb399f0 feat: add server.versionCheck permission (#20555)
* add server.versionCheck permission

* getVersionCheck is no admin-route
2025-08-04 17:39:05 -05:00
Brandon Wees
42b78c59b5 fix(mobile): disable memory lane when memories are disabled (#20642)
* fix(mobile): disable memory lane when memories are disabled

* Update main_timeline.page.dart

* fix: formatting

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-04 22:34:28 +00:00
Brandon Wees
750d21aeba fix(mobile): use storageIndicator setting for beta timeline (#20639)
* fix: use storageIndicator setting for beta timeline

* fix: reactively update the storage indicator icons when setting is changed

* Update drift_trash.page.dart

* override to bool for storageIndicator
2025-08-04 17:25:58 -05:00
Paweł Wojtaszko
990d9ba9a8 fix: adjust margin and gap for trailing elements in control app bar (#20645) 2025-08-04 17:24:19 -05:00
Brandon Wees
4d0c9172e5 fix: not clearing local data when logging out while sync is running (#20646) 2025-08-04 17:14:26 -05:00
Brandon Wees
094e3a2757 fix(mobile): cleanly handle logout when no host is set (#20521)
* fix: cleanly handle logging out when no host is set on API

* move conditional to auth_api repo
2025-08-05 03:11:58 +05:30
Zack Pollard
278668b8c5 fix: improvements to sync and upload when resuming app (#20524)
- App will now kick off hashing after local sync if the lifecycle is in resumed or active state
- We now wait for hashing to complete before we kick off the upload process
2025-08-05 03:11:44 +05:30
cford256
10141504a2 fix: exif rating rounding (#20457)
* fix_Exlif_Metadata_Rating_Rounding_to_Interger

Rounding Exlif Rating Interger
Images support having numbers other than integers for the rating metadata in EXLIF. The database expects it to be an integer though. Trying to upload an image that has a rating other than an integer results in it failing to parse the image and defaulting to showing a corrupted file icon. 

Rather than changing the database type, I would like to round the rating to the nearest integer so that Immich works with images that have a rating like this in their metadata.

* Changing Metadata validateRange to always round.

* Update server/src/services/metadata.service.ts

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

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2025-08-04 14:29:51 -05:00
Brandon Wees
67736c8fce fix(mobile): fetch serverConfig before building shared link (#20638)
fix(mobile): fetch serverConfig before trying to pull externalDomain for new shared link
2025-08-04 14:28:43 -05:00
Paweł Wojtaszko
b56a272f64 fix: adjust search bar padding and visibility based on input state (#20598) 2025-08-04 17:46:46 +00:00
shenlong
5901c2e963 fix: hide navigation bar in search page during multi-selection (#20616)
fix: hide navigation bar in search page during multiselect

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-08-04 12:39:40 -05:00
Alex
be85832b20 fix: add assets to album (#20626)
* fix: add assets to album

* always navigate back to the albums view from album page
2025-08-04 12:25:11 -05:00
bo0tzz
c8f9a72d3e feat: close likely duplicates (#20556)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2025-08-04 18:15:15 +02:00
Alexandre Garnier
3d633a81c4 fix(mobile): use right translation function for pluralized ICU message format (#20404) 2025-08-04 11:53:11 +05:30
shenlong
4efbf36d82 chore: log asset name on hash failures (#20608) 2025-08-04 06:07:50 +00:00
Alden Bansemer
e2c3c39597 chore: tweak photo sphere fov and zoom speed constants (#20595) 2025-08-04 01:07:11 -05:00
github-actions
007ba1d9ef chore: version v1.137.3 2025-08-01 14:52:24 +00:00
Daniel Dietzler
4d5cd1a6b5 fix: migration if media location is set (#20532) 2025-08-01 14:49:51 +00:00
shenlong
8108f50c4e fix: guard IS_FAVORITE column with SDK check (#20511)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-08-01 05:39:59 -05:00
Alex
1b8354ed36 chore: post release tasks (#20497) 2025-08-01 05:38:52 -05:00
github-actions
9242afb4b0 chore: version v1.137.2 2025-08-01 02:45:16 +00:00
Alex
c5f14adff0 feat: drag to select beta timeline (#20456) 2025-07-31 21:29:01 -05:00
Alex
1378f22368 fix: add to album render empty app bar (#20480)
* fix: add to album render empty app bar

* set current album
2025-07-31 21:28:33 -05:00
Alex
4bd465e752 feat: change grid size with gesture (#20455) 2025-07-31 21:02:28 -05:00
github-actions
a07531be3b chore: version v1.137.1 2025-07-31 23:05:34 +00:00
Daniel Dietzler
3cdc6844a1 fix: automatic media location migration without internal assets (#20489) 2025-07-31 22:58:35 +00:00
github-actions
c3263e50fc chore: version v1.137.0 2025-07-31 20:19:26 +00:00
Alex
7391ea6ff9 chore: large file size grid view styling (#20472)
* chore: large file grid styles

* chore: large file grid styles
2025-07-31 12:52:19 -04:00
Daniel Dietzler
f972b8d514 fix: modal race conditions (#20460) 2025-07-31 07:28:45 -05:00
Jason Rasmussen
6b50d958f4 fix: incorrect next/previous action after folder view refresh (#20447) 2025-07-30 14:50:52 -05:00
Alex
27c456eb75 fix: people navigation (#20450) 2025-07-30 14:47:47 -05:00
Brandon Wees
e7d051db3c feat: drift edit time and date action (#20377)
* feat: drift edit time and date action

* feat: add edit button on asset viewer bottom sheet

* update localDateTime column in addition to createdAt to keep consistency

* fix: dont update local dateTime

Server calcs this anyway and it will be synced when the change is applied. We don't use localDateTime on mobile so there is no reason to update this value

* fix: padding around edit icon in ListTile

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

* chore: format

* fix: hide date edit control when asset does not have a remote

* fix: pull timezones correctly from image

---------

Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>
2025-07-30 14:40:13 -05:00
Peter Ombodi
86d31d7d29 fix(download): handle completed downloads and refresh albums (#20241)
* fix(download): handle completed downloads and refresh albums

* fix(download): remove use of outdated AlbumService

---------

Co-authored-by: Peter Ombodi <peter.ombodi@gmail.com>
2025-07-30 14:33:55 -05:00
shenlong
f416342eff fix: clear local file cache before upload (#20448)
* clear local file cache before upload

* clear cache during hashing

* fix test

* add button to clear cache manually

* add button to clear cache manually

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-07-30 14:32:38 -05:00
Cédric
d73335ecbc docs: add config example for Authelia (#20223) 2025-07-30 19:13:19 +00:00
shenlong
641a3baadd fix(mobile): add partial index based on library ID to remote assets (#20214)
* feat: add libraryId to SyncAssetV1

* add partial index

# Conflicts:
#	mobile/drift_schemas/main/drift_schema_v5.json
#	mobile/lib/infrastructure/repositories/db.repository.dart
#	mobile/lib/infrastructure/repositories/db.repository.steps.dart
#	mobile/test/drift/main/generated/schema_v5.dart

* chore: make build

* rebase

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-07-30 23:59:00 +05:30
shenlong
f85d8add01 fix: json encoding failure during live photo download (#20444)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-07-30 12:48:18 -05:00
Weblate (bot)
c278b7ad17 chore(web): update translations (#20105)
Co-authored-by: AbuKareem Tuffaha <abukareem.tuffaha@gmail.com>
Co-authored-by: Adam Uchmanowicz <auchmanowicz@gmail.com>
Co-authored-by: AgentTricky <andreweditz26@gmail.com>
Co-authored-by: Alexandre Garnier <zigarn@users.noreply.hosted.weblate.org>
Co-authored-by: Alvin <ekzistadismo@gmail.com>
Co-authored-by: Andreas Johansen <andreas@josern.com>
Co-authored-by: Bartłomiej <20731216+Jarsey45@users.noreply.github.com>
Co-authored-by: Bartłomiej <bartek.yt01@gmail.com>
Co-authored-by: Benjamin Graf <benjamin@eende.net>
Co-authored-by: CanbiZ <mickey.leskowitz@gmail.com>
Co-authored-by: Cezar Olteanu <lecezar2014@gmail.com>
Co-authored-by: Christoph Auer <Christoph.Auer@pilsheim.de>
Co-authored-by: Dag Stuan <D.Stuan@gmail.com>
Co-authored-by: Davide Ciaccia <davideccia@gmail.com>
Co-authored-by: Davide Vegliante <davidevegliante@gmail.com>
Co-authored-by: Dennis Premoli <dennis.premoli@gmail.com>
Co-authored-by: DevServs <bonov@mail.ru>
Co-authored-by: Dmitry Banny <dj.icecore@gmail.com>
Co-authored-by: Felipe Silva <dorsal-cobweb-life@duck.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Florian Ostertag <florian.kuepper@gmail.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com>
Co-authored-by: Javier Villanueva García <jvg2203@gmail.com>
Co-authored-by: John Molkavitch <jblum66@gmail.com>
Co-authored-by: Jordy H <jordy@hoebergen.net>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: Kasper Honoré <kasper@honore-stens.dk>
Co-authored-by: Lauritz Tieste <lauritz6000000@gmail.com>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: MaBeniu <marius.beniusis@teliacompany.com>
Co-authored-by: Mateo Varela <matevarela32@gmail.com>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Mikkel Dupont Olesen <m-do2009@hotmail.com>
Co-authored-by: Musab Ustun <musabyusufustun@outlook.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Nick Huang <nick80322@gmail.com>
Co-authored-by: Nico Kaiser <nico@kaiser.me>
Co-authored-by: Nicolò <nicveronese@gmail.com>
Co-authored-by: Nikolina Babok <nikolinababok83@gmail.com>
Co-authored-by: Pavel Miniutka <pavel.miniutka@gmail.com>
Co-authored-by: Petri Hämäläinen <petri.hamalainen@mailbox.org>
Co-authored-by: Phantom0174 <darrenhsiou@gmail.com>
Co-authored-by: R J <robindanoskarjohansson@gmail.com>
Co-authored-by: Raman Venmarathoor <ramanvemman@gmail.com>
Co-authored-by: Santiago <santiwever@hotmail.com>
Co-authored-by: Saschl <sascharudolf46@gmail.com>
Co-authored-by: Sergey Katsubo <skatsubo@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Tajbir Prottoy <tajbirprottoy@gmail.com>
Co-authored-by: Tanishq Sindhu <hisar.champion@gmail.com>
Co-authored-by: Tijs-B <tijs.bergmans@telenet.be>
Co-authored-by: Tony Ronaldo Matute <tonyronaldomatute@gmail.com>
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org>
Co-authored-by: Vegard Fladby <vegard@fladby.org>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: Zvonimir <zzrakic@protonmail.com>
Co-authored-by: adri1m64 <adrien.melle@laposte.net>
Co-authored-by: chamdim <chamdim@protonmail.com>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: grgergo <gergo_g@proton.me>
Co-authored-by: johnwoo_nl <pb@lunenburg-productions.nl>
Co-authored-by: manosrh <manosrh@gmail.com>
Co-authored-by: maxius65 <max.dewispelaere@hotmail.com>
Co-authored-by: neketos851 <kokgp554t@mozmail.com>
Co-authored-by: over adm <1ron3gg@gmail.com>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: syyhs668 <812741539@qq.com>
Co-authored-by: thehijacker <thehijacker@gmail.com>
Co-authored-by: traptegies <lars.reuss@gmx.de>
Co-authored-by: tsloms <t.slomski@outlook.de>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
2025-07-30 18:16:47 +01:00
Alex
10e9c278ee feat: network requirement option for upload (#20302)
* wifi toggle

* feat: network requirement option for upload

* chore: put back holding queue previous config numbers

* options

* backup option page

* pr feedback
2025-07-30 22:13:20 +05:30
bo0tzz
47a025f39f chore: also run docs build on oapi changes (#20440) 2025-07-30 13:30:21 -03:00
Jason Rasmussen
749f999f2a feat: better endpoint descriptions (#20439) 2025-07-30 13:29:36 -03:00
Jason Rasmussen
d5a01c0310 fix(web): timeline time bucket issue (#20438) 2025-07-30 11:21:02 -05:00
Brandon Wees
097e132fba fix: user profile images not working in beta timeline (#20203)
* fix user icons in album view

* revert updateUsersV1 change

* fix: UserDto merge issues

* fix: update user entity

* revert what I thought were merge issues

turns out drift cant figure out when it needs to gen a file...

* fix removed line

* handle defaults for older servers

* feat: checkpoint migrations

* fix: use parenthesis instead of brackets

* Update 1753800911775-ProfileImageCheckpointRemoval.ts

* fix: sync stream updateUsersV1
2025-07-30 11:09:28 -05:00
shenlong
da5deffd03 fix: exclude assets from excluded albumbs on main timeline (#20425)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-07-30 10:16:23 -05:00
shenlong
9f20522df5 chore: add isFavorite to PlatformAsset in duplicate check (#20427)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-07-30 08:44:19 -05:00
Ben
baadf9db20 fix(web): timeline date group width (#19964)
Fix the calculation for the date group width, so there's never a scenario where photos will be hidden. On mobile devices, photos in the second row can sometimes have a top of <100px, which throws off the calculation of the date group width.
2025-07-30 08:39:19 -04:00
xCJPECKOVERx
4ea4ee40af fix(web): Search chip key value heights don't match (#20312)
- add flex items-stretch to stretch chip key height to match value height
2025-07-30 08:31:16 -04:00
renovate[bot]
d8a6552811 chore(deps): update ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0 docker digest to 32324a2 (#20381)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-30 08:29:37 -04:00
renovate[bot]
444133a72b chore(deps): update ghcr.io/immich-app/postgres:14-vectorchord0.3.0 docker digest to 0e763a2 (#20380)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-30 10:36:50 +00:00
Alex
29f16c6a47 feat: people page/sheet/detail (#20309) 2025-07-30 03:07:53 +00:00
shenlong
268b411a6f fix: sync is_favorite from native (#20412)
* feat: sync is_favorite from native

* handle favorite during upload

* Update mobile/ios/Runner/Sync/MessagesImpl.swift

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

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-07-29 21:57:04 -05:00
Brandon Wees
07ed060c32 feat: 3-2-1 backup onboarding card (#20374)
* feat: 3-2-1 backup onboarding card

* chore: format i18n

* fix: lint

* Update onboarding-backup.svelte

* fix: e2e onboarding test
2025-07-29 21:55:21 -05:00
Jason Rasmussen
2f5d543ad9 fix: tweak error docs (#20417) 2025-07-29 21:33:24 +00:00
Jason Rasmussen
9b65cd4d7b feat!: remove typeorm (#20366)
feat: remove typeorm
2025-07-29 17:28:02 -04:00
Brandon Wees
290e325c5c feat: drift description editor (#20383)
* feat: drift description editor

* chore: use focus node

* chore: code review fixes

* chore: move description update to action.service

* refactor

* refactor

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-07-29 21:17:33 +00:00
Jason Rasmussen
58521c9efb feat: change default media location to /data (#20367)
* feat!: change default media location to /data

* feat: dynamically detect media location
2025-07-29 16:58:50 -04:00
Andrew Marshall
4cae15f28d feat: support config via systemd credentials (#20406)
feat: Support config via Systemd Credentials

See https://systemd.io/CREDENTIALS/. This is used as a fallback, so will
only be used if the `$*_FILE` var is empty. This could also be used to
implicitly use Docker Secrets by settings
`CREDENTIALS_DIRECTORY=/run/secrets` rather than setting individual
`$_*FILE` environment variables.
2025-07-29 16:43:11 -04:00
shenlong
e6ec019852 fix: show missing local assets only in timeline with partner sharing (#20298)
fix: show missing local assets in timeline with partner sharing

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-07-29 10:05:04 -05:00
Brandon Wees
3b5e00131b fix: android widget periodic updates (#20389)
* fix: android widget updates

* ensure periodic work is queued when we receive an update

This will not "reset the clock" on the periodic work since we are using         ExistingPeriodicWorkPolicy.UPDATE. This is needed since existing widgets have already been asked to queue their workers. If those periodic workers were overwritten by a widget update request from the app, there is no way to queue them again. onReceive gets run when the app requests a widget update so the periodic workers will get queued again.
2025-07-29 08:59:10 -05:00
Zack Pollard
a0fa7318ed fix: handle cleanup of new backups alongside old backups (#20402) 2025-07-29 13:28:10 +01:00
Zack Pollard
2a005629a0 chore: bump minimum eslint-config-prettier version due to MAL-2025-6022 (#20400) 2025-07-29 11:23:52 +00:00
renovate[bot]
59a50b8697 chore(deps): update github-actions (#20384)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-29 12:07:14 +01:00
renovate[bot]
90eac40e02 chore(deps): update terraform cloudflare to v4.52.1 (#20387)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-29 12:06:52 +01:00
Andreas Petersson
ad6f7f8089 docs: add immich_ml_balancer to community projects (#20399) 2025-07-29 12:02:37 +01:00
renovate[bot]
056b262cba chore(deps): update dependency @types/node to ^22.16.5 (#20385)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-29 11:48:26 +02:00
renovate[bot]
cfae134ecf fix(deps): update typescript-projects (#20388)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-07-29 09:47:30 +00:00
Jason Rasmussen
fbbb6af27a chore: update open-api (#20376) 2025-07-28 19:56:22 -05:00
Brandon Wees
1804a8fe58 fix: openapi spec (#20378) 2025-07-28 23:46:34 +00:00
Alwin Lohrie
ae1d60e259 feat: find large files utility (#18040)
feat: large asset utility

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-07-28 18:48:39 -04:00
Jason Rasmussen
7d759edfcc chore: add permission metadata to open-api document (#20373) 2025-07-28 18:40:34 -04:00
shenlong
34974b036c fix: handle back gesture in multi selection mode (#20356)
* fix: handle back gesture in multi selection mode

# Conflicts:
#	mobile/lib/presentation/widgets/timeline/timeline.widget.dart

* remove null-aware element because Isar

* chore: set sqlite busy_timeout to 500ms (#20358)

fix: add busy_timeout pragma

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

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-07-28 19:22:50 +00:00
shenlong
e52b9d15b5 chore: bump dart sdk to 3.8 (#20355)
* chore: bump dart sdk to 3.8

* chore: make build

* make pigeon

* chore: format files

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-07-28 14:04:03 -05:00
Jed-Giblin
9b3718120b feat: shared links custom URL (#19999)
* feat: custom url for shared links

* feat: use a separate route and query param

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-07-28 14:16:55 -04:00
Jason Rasmussen
16b14b390f fix: file samples (#20364) 2025-07-28 13:30:49 -04:00
Jason Rasmussen
7e7b8da128 fix: debug source maps (#20363) 2025-07-28 12:41:22 -04:00
Dag Stuan
66ea75072d feat(web): auto fit bounds for map modal (#20345) 2025-07-28 17:36:37 +01:00
Sergey Katsubo
d34670bae6 feat(server): include reason in null reverse geocoding logs (#20347)
* Clarify in log why reverse geocoding may return nothing

* Decrease log level for empty reverse geocoding response from warn to log

* Use a named constant for 25km

* Mention fallback to countries in the message

* Improve natural earth log message

* Decrease log level for empty reverse geocoding response from natural earth countries
2025-07-28 08:51:00 -05:00
shenlong
1e1c2ea627 fix: backup indicator in beta app bar (#20354)
fix: beta - app bar backup indicator

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-07-28 08:50:50 -05:00
Sergey Katsubo
c7fcb23a23 chore(docs): add links to custom scan interval from other sections in external library doc (#20353) 2025-07-28 13:42:59 +01:00
shenlong
708e42d8a3 fix: change translation key for archive action button (#20336)
* chore: change translation key for archive action button

* chore: await navigation before emitting event

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-07-27 17:43:23 +00:00
Alex
d15f67da5d feat: scroll to top & view in timeline (#20274)
* feat: scroll to top & view in timeline

* use EventStream

* refactor: event invocation and listerner

* fix: correct parent routing
2025-07-27 21:48:32 +05:30
Matthew Momjian
6becf409da feat(docs): reorganize DB queries, add tags (#20303)
* reorganize

* fix checksum
2025-07-27 10:03:58 -05:00
xCJPECKOVERx
ee4ae40d61 fix(web): Album picker recent albums don't match sidebar (#20313)
- update album picker recent albums to show most recent 'updatedAt' instead of 'createdAt'. Matches sidebar.
2025-07-27 10:03:39 -05:00
Matthew Momjian
ebd644eedd fix(docs): update SQL queries with schema changes (#20297)
* sql queries with table changes

* fix linting
2025-07-26 17:38:12 -05:00
shenlong
7c36cbaf0f fix: error on navigating back from backup selection page (#20299)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-07-26 13:58:27 -05:00
Alex
3a5d82f790 chore: delete action button (#20261) 2025-07-26 13:51:18 -05:00
Alex
b14c768208 fix: share to app upload (#20271) 2025-07-26 11:42:24 -05:00
Alex
07cb2fb04e fix: remainder backup count (#20270) 2025-07-26 09:02:26 -05:00
Alexandre Garnier
9bbad45990 fix(mobile): remove unused translation and pluralize existing one for map photos count (#20282) 2025-07-26 09:00:35 -05:00
shenlong
e85655d34c fix: no hero animation after tab change (#20285)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-07-26 08:59:26 -05:00
shenlong
d0576697c3 chore: upgrade flutter to 3.32.8 (#20287)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-07-26 08:58:48 -05:00
Yaros
f9847bee51 fix(mobile): places search not working in beta version (#20284)
fix(mobile): places search not working
2025-07-26 17:00:57 +05:30
beposec
f2141de5bb fix(mobile): Fix a typo in SyncStreamService Logging (#20283)
Fix typo in logging
2025-07-26 11:29:42 +00:00
Alexandre Garnier
cb344cb014 fix(mobile): distinguish backup settings title from 'backup_controller_page_backup' translation entry (#20237)
Different translation in some languages like in French ('Sauvegarde' for title, otherwise 'Sauvegardé')
2025-07-25 18:07:59 -05:00
Jason Rasmussen
c6b25ef111 feat: automatically detect media location changes (#20256) 2025-07-25 15:25:36 -04:00
Jason Rasmussen
0fdeac0417 feat!: more permissions (#20250)
feat: more api key permissions
2025-07-25 15:25:23 -04:00
Jason Rasmussen
153bb70f6e feat(web): api key permission search (#20248) 2025-07-25 13:39:48 -04:00
Brandon Wees
da80b69062 fix(mobile): beta search page improvements (#20247)
search page improvements
2025-07-25 12:24:19 -05:00
Brandon Wees
f9292c9c96 fix(mobile): deep links when using the beta timeline (#20111)
* fix: deep links when using the beta timeline

* Update remote_asset.repository.dart

* Update mobile/lib/domain/services/asset.service.dart

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

* return optional from album get

* do not include trashed assets in album asset count

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

* formatting

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>
2025-07-25 17:02:49 +00:00
Zack Pollard
2e0ee6ec05 feat: don't wait for network on app startup (#20232) 2025-07-25 11:19:50 -05:00
Zack Pollard
7f2e4f85f8 fix: lookup the primary key constraint name before dropping it (#20221) 2025-07-25 16:51:22 +01:00
Brandon Wees
c63f805cb4 fix: word wrapping on action buttons (#20231) 2025-07-25 15:10:01 +00:00
Alex
03a13828e1 chore: refactor upload service (#20130)
* chore: refactor upload service

* fix: cancel upload queue on logout (#20131)

* fix: cancel upload on logout

* fix: test

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.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>
2025-07-25 10:09:32 -05:00
Jeremy Fleischman
e5ee1c8db6 chore: add missing 'make pigeon' instruction (#20202)
* chore: fix typo 'make_build' -> 'make build'

* chore: add missing 'make pigeon' instruction

Turns out I was getting bit by forgetting to run `make pigeon`, which
also generates files. Perhaps it would be better to make it part of
`make build`?

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-07-25 15:05:40 +00:00
Daimolean
25e2d37490 fix(server): use UserMetadataKey enum instead of string (#20209)
* fix(server): use UserMetadataKey enum instead of string

* fix: mobile
2025-07-25 11:04:28 -04:00
Alex
ed5759fe07 fix: character width calculation (#20201) 2025-07-25 09:56:25 -05:00
Daniel Dietzler
edefed56ae fix: optional number inputs (#20218) 2025-07-25 09:06:12 -04:00
shenlong
13281f8531 docs: more make commands and add mobile checks to pr-checklist (#20211)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-07-25 13:24:08 +01:00
Zack Pollard
b48406bd20 fix: android backup album migration losing selection (#20220) 2025-07-25 12:57:31 +01:00
Brandon Wees
06c78dfa91 feat: add to album on new beta timeline (#20119)
* feat: add to album on new beta timeline

* handle add album button

* tune

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-07-25 01:10:33 -05:00
Jeremy Fleischman
de67d22bc0 fix: add missing awaits when changing client certificate (#20189)
I ran into this while testing out
<https://github.com/immich-app/immich/pull/19830>. When I add, change,
or remove a client certificate under Immich's advanced settings, the
change wouldn't take effect until some mysterious point in the future.
For example:

1. Add a client certificate. It doesn't get used.
2. Remove certificate. *Now* the client certificate from step 1) is used.
3. Restart application. Now no client certificate is used.

This all boils down to some missing `await`s. The user would change the
cert, and we'd start asynchronously saving it to the store, and while
the save is still happening, [`HttpSSLOptions` pulls the "old" value out of
`SSLClientCertStoreVal`](https://github.com/immich-app/immich/blob/v1.136.0/mobile/lib/utils/http_ssl_options.dart#L30).

With the appropriate `await`s, this behaves much more sanely.
2025-07-25 00:28:33 -05:00
shenlong
b4780e89af fix: add beta toggle in landscape mode (#20187)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-07-25 00:28:21 -05:00
shenlong
ad65e9011a chore: bump line length to 120 (#20191) 2025-07-25 02:37:22 +00:00
Zack Pollard
977c9b96ba fix: geodata_places pkey migration failing for certain upgrade paths (#20177) 2025-07-24 22:50:36 +01:00
John Stef
aa2828ab33 fix(mobile): hide video thumbnail when video is ready (#19328) 2025-07-24 22:38:08 +01:00
Daimolean
a36840d7cc fix(web): multi-select in ascending asset order (#19461) 2025-07-24 22:37:44 +01:00
Pablo Lluch
e34f46fa0d fix: send correct includeArchived parameter to API when showing markers in map (#20117)
Co-authored-by: Pablo Lluch <pablo.lluch@gmail.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2025-07-24 22:34:06 +02:00
Alex
6170a3843c chore: remove build flavor Android (#20161) 2025-07-24 14:55:49 -05:00
shenlong
563e2ab503 fix: update trash action i18n keys (#20164)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-07-24 14:55:35 -05:00
shenlong
79157e1043 fix: fallback auto grouping to day grouping (#20156)
fallback auto grouping to day grouping

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-07-24 19:28:40 +00:00
shenlong
02688a2a03 fix: override SSL options inside isolates (#20142)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-07-24 14:26:00 -05:00
Brandon Wees
3b9bfceef0 fix: album deleted toast message (#20121)
* fix: album deleted toast message

* Update mobile/lib/presentation/pages/drift_remote_album.page.dart

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

* Fix lint

---------

Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>
2025-07-24 14:09:17 -05:00
github-actions
089085fcdb chore: version v1.136.0 2025-07-24 14:24:38 +00:00
Jason Rasmussen
fc68cf4f32 chore: remove migration (#20129) 2025-07-24 14:11:53 +00:00
Alex
0051a9bba5 fix(web): Revert prevent flashing white background in dark mode on page load/reload (#19934) (#20122)
Revert "fix(web): prevent flashing white background in dark mode on page load/reload (#19934)"

This reverts commit 32f23b8d38.
2025-07-24 09:45:38 +02:00
Daniel Dietzler
f27bdf7523 chore: migrate to UI modal manager (#20116) 2025-07-23 17:27:09 -04:00
Daniel Dietzler
c1c9f30ea4 chore: migrate to immich/ui confirm modal (#20114) 2025-07-23 22:56:56 +02:00
Jason Rasmussen
bc8cb9b671 fix: default route permission (#20113) 2025-07-23 16:56:38 -04:00
Jason Rasmussen
a675922172 fix: unset prewarn param (#20109) 2025-07-23 16:52:59 -04:00
Jason Rasmussen
2bead445bd docs: remove outdated note (#20110) 2025-07-23 16:00:19 -04:00
1465 changed files with 74471 additions and 54022 deletions

View File

@@ -11,8 +11,8 @@ services:
- open_api_node_modules:/workspaces/immich/open-api/typescript-sdk/node_modules
- server_node_modules:/workspaces/immich/server/node_modules
- web_node_modules:/workspaces/immich/web/node_modules
- ${UPLOAD_LOCATION}/photos:/usr/src/app/upload
- ${UPLOAD_LOCATION}/photos/upload:/usr/src/app/upload
- ${UPLOAD_LOCATION}/photos:/data
- ${UPLOAD_LOCATION}/photos/upload:/data/upload
- /etc/localtime:/etc/localtime:ro
database:

View File

@@ -13,8 +13,8 @@ services:
- open_api_node_modules:/workspaces/immich/open-api/typescript-sdk/node_modules
- server_node_modules:/workspaces/immich/server/node_modules
- web_node_modules:/workspaces/immich/web/node_modules
- ${UPLOAD_LOCATION:-upload1-devcontainer-volume}${UPLOAD_LOCATION:+/photos}:/usr/src/app/upload
- ${UPLOAD_LOCATION:-upload2-devcontainer-volume}${UPLOAD_LOCATION:+/photos/upload}:/usr/src/app/upload/upload
- ${UPLOAD_LOCATION:-upload1-devcontainer-volume}${UPLOAD_LOCATION:+/photos}:/data
- ${UPLOAD_LOCATION:-upload2-devcontainer-volume}${UPLOAD_LOCATION:+/photos/upload}:/data/upload
- /etc/localtime:/etc/localtime:ro
immich-web:

2
.github/.nvmrc vendored
View File

@@ -1 +1 @@
22.17.1
22.18.0

View File

@@ -122,17 +122,17 @@ jobs:
IS_MAIN: ${{ github.ref == 'refs/heads/main' }}
run: |
if [[ $IS_MAIN == 'true' ]]; then
flutter build apk --release --flavor production
flutter build apk --release --flavor production --split-per-abi --target-platform android-arm,android-arm64,android-x64
flutter build apk --release
flutter build apk --release --split-per-abi --target-platform android-arm,android-arm64,android-x64
else
flutter build apk --debug --flavor production --split-per-abi --target-platform android-arm64
flutter build apk --debug --split-per-abi --target-platform android-arm64
fi
- name: Publish Android Artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: release-apk-signed
path: mobile/build/app/outputs/flutter-apk/**/*.apk
path: mobile/build/app/outputs/flutter-apk/*.apk
- name: Save Gradle Cache
id: cache-gradle-save

96
.github/workflows/close-duplicates.yml vendored Normal file
View File

@@ -0,0 +1,96 @@
on:
issues:
types: [opened]
discussion:
types: [created]
name: Close likely duplicates
permissions: {}
jobs:
get_body:
runs-on: ubuntu-latest
env:
EVENT: ${{ toJSON(github.event) }}
outputs:
body: ${{ steps.get_body.outputs.body }}
steps:
- id: get_body
run: |
BODY=$(echo """$EVENT""" | jq -r '.issue // .discussion | .body' | base64 -w 0)
echo "body=$BODY" >> $GITHUB_OUTPUT
get_checkbox_json:
runs-on: ubuntu-latest
needs: get_body
container:
image: yshavit/mdq:0.7.2
outputs:
json: ${{ steps.get_checkbox.outputs.json }}
steps:
- id: get_checkbox
env:
BODY: ${{ needs.get_body.outputs.body }}
run: |
JSON=$(echo "$BODY" | base64 -d | /mdq --output json '# I have searched | - [?] Yes')
echo "json=$JSON" >> $GITHUB_OUTPUT
close_and_comment:
runs-on: ubuntu-latest
needs: get_checkbox_json
if: ${{ !fromJSON(needs.get_checkbox_json.outputs.json).items[0].list[0].checked }}
permissions:
issues: write
discussions: write
steps:
- name: Close issue
if: ${{ github.event_name == 'issues' }}
env:
GH_TOKEN: ${{ github.token }}
NODE_ID: ${{ github.event.issue.node_id }}
run: |
gh api graphql \
-f issueId="$NODE_ID" \
-f body="This issue has automatically been closed as it is likely a duplicate. We get a lot of duplicate threads each day, which is why we ask you in the template to confirm that you searched for duplicates before opening one. If you're sure this is not a duplicate, please leave a comment and we will reopen the thread if necessary." \
-f query='
mutation CommentAndCloseIssue($issueId: ID!, $body: String!) {
addComment(input: {
subjectId: $issueId,
body: $body
}) {
__typename
}
closeIssue(input: {
issueId: $issueId,
stateReason: DUPLICATE
}) {
__typename
}
}'
- name: Close discussion
if: ${{ github.event_name == 'discussion' && github.event.discussion.category.name == 'Feature Request' }}
env:
GH_TOKEN: ${{ github.token }}
NODE_ID: ${{ github.event.discussion.node_id }}
run: |
gh api graphql \
-f discussionId="$NODE_ID" \
-f body="This discussion has automatically been closed as it is likely a duplicate. We get a lot of duplicate threads each day, which is why we ask you in the template to confirm that you searched for duplicates before opening one. If you're sure this is not a duplicate, please leave a comment and we will reopen the thread if necessary." \
-f query='
mutation CommentAndCloseDiscussion($discussionId: ID!, $body: String!) {
addDiscussionComment(input: {
discussionId: $discussionId,
body: $body
}) {
__typename
}
closeDiscussion(input: {
discussionId: $discussionId,
reason: DUPLICATE
}) {
__typename
}
}'

View File

@@ -50,7 +50,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
uses: github/codeql-action/init@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -63,7 +63,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@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
uses: github/codeql-action/autobuild@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5
# 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 +76,6 @@ jobs:
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
uses: github/codeql-action/analyze@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5
with:
category: '/language:${{matrix.language}}'

View File

@@ -18,7 +18,7 @@ jobs:
permissions:
contents: read
outputs:
should_run: ${{ steps.found_paths.outputs.docs == 'true' || steps.should_force.outputs.should_force == 'true' }}
should_run: ${{ steps.found_paths.outputs.docs == 'true' || steps.found_paths.outputs.open-api == 'true' || steps.should_force.outputs.should_force == 'true' }}
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
@@ -32,6 +32,8 @@ jobs:
- 'docs/**'
workflow:
- '.github/workflows/docs-build.yml'
open-api:
- 'open-api/immich-openapi-specs.json'
- name: Check if we should force jobs to run
id: should_force
run: echo "should_force=${{ steps.found_paths.outputs.workflow == 'true' || github.event_name == 'release' || github.ref_name == 'main' }}" >> "$GITHUB_OUTPUT"

View File

@@ -20,7 +20,7 @@ jobs:
remove-label:
runs-on: ubuntu-latest
if: ${{ github.event.action == 'closed' && contains(github.event.pull_request.labels.*.name, 'preview') }}
if: ${{ (github.event.action == 'closed' || github.event.pull_request.head.repo.fork) && contains(github.event.pull_request.labels.*.name, 'preview') }}
permissions:
pull-requests: write
steps:
@@ -33,3 +33,15 @@ jobs:
repo: context.repo.repo,
name: 'preview'
})
- uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2.8.2
if: ${{ github.event.pull_request.head.repo.fork }}
with:
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:
message-id: 'preview-status'
message: 'Preview environment has been removed.'

View File

@@ -90,7 +90,7 @@ jobs:
env:
CHANGED_FILES: ${{ steps.verify-changed-files.outputs.changed_files }}
run: |
echo "ERROR: Generated files not up to date! Run make_build inside the mobile directory"
echo "ERROR: Generated files not up to date! Run 'make build' and 'make pigeon' inside the mobile directory"
echo "Changed files: ${CHANGED_FILES}"
exit 1
@@ -98,7 +98,7 @@ jobs:
run: dart analyze --fatal-infos
- name: Run dart format
run: dart format lib/ --set-exit-if-changed
run: make format
- name: Run dart custom_lint
run: dart run custom_lint
@@ -129,7 +129,7 @@ jobs:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload SARIF file
uses: github/codeql-action/upload-sarif@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
uses: github/codeql-action/upload-sarif@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5
with:
sarif_file: results.sarif
category: zizmor

View File

@@ -668,7 +668,7 @@ jobs:
contents: read
services:
postgres:
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3@sha256:1f5583fe3397210a0fbc7f11b0cec18bacc4a99e3e8ea0548e9bd6bcf26ec37a
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3@sha256:ec713143dca1a426eba2e03707c319e2ec3cc9d304ef767f777f8e297dee820c
env:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres

View File

@@ -38,7 +38,7 @@ jobs:
exit 1
fi
- name: Find Pull Request
uses: juliangruber/find-pull-request-action@48b6133aa6c826f267ebd33aa2d29470f9d9e7d0 # v1.9.0
uses: juliangruber/find-pull-request-action@952b3bb1ddb2dcc0aa3479e98bb1c2d1a922f096 # v1.10.0
id: find-pr
with:
branch: chore/translations

23
.vscode/launch.json vendored
View File

@@ -7,7 +7,7 @@
"restart": true,
"port": 9231,
"name": "Immich API Server",
"remoteRoot": "/usr/src/app",
"remoteRoot": "/usr/src/app/server",
"localRoot": "${workspaceFolder}/server"
},
{
@@ -16,27 +16,8 @@
"restart": true,
"port": 9230,
"name": "Immich Workers",
"remoteRoot": "/usr/src/app",
"remoteRoot": "/usr/src/app/server",
"localRoot": "${workspaceFolder}/server"
},
{
"name": "Flavor - Production",
"request": "launch",
"type": "dart",
"codeLens": {
"for": [
"run-test",
"run-test-file",
"run-file",
"debug-test",
"debug-test-file",
"debug-file",
],
"title": "${debugType}",
},
"args": [
"--flavor", "production"
],
}
]
}

View File

@@ -10,6 +10,9 @@ dev-update:
dev-scale:
@trap 'make dev-down' EXIT; COMPOSE_BAKE=true docker compose -f ./docker/docker-compose.dev.yml up --build -V --scale immich-server=3 --remove-orphans
dev-docs:
npm --prefix docs run start
.PHONY: e2e
e2e:
@trap 'make e2e-down' EXIT; COMPOSE_BAKE=true docker compose -f ./e2e/docker-compose.yml up --build -V --remove-orphans

View File

@@ -1 +1 @@
22.17.1
22.18.0

322
cli/package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "@immich/cli",
"version": "2.2.72",
"version": "2.2.79",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@immich/cli",
"version": "2.2.72",
"version": "2.2.79",
"license": "GNU Affero General Public License version 3",
"dependencies": {
"chokidar": "^4.0.3",
@@ -27,15 +27,15 @@
"@types/lodash-es": "^4.17.12",
"@types/micromatch": "^4.0.9",
"@types/mock-fs": "^4.13.1",
"@types/node": "^22.16.4",
"@types/node": "^22.17.0",
"@vitest/coverage-v8": "^3.0.0",
"byte-size": "^9.0.0",
"cli-progress": "^3.12.0",
"commander": "^12.0.0",
"eslint": "^9.14.0",
"eslint-config-prettier": "^10.0.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-unicorn": "^59.0.0",
"eslint-plugin-unicorn": "^60.0.0",
"globals": "^16.0.0",
"mock-fs": "^5.2.0",
"prettier": "^3.2.5",
@@ -54,14 +54,14 @@
},
"../open-api/typescript-sdk": {
"name": "@immich/sdk",
"version": "1.135.3",
"version": "1.138.1",
"dev": true,
"license": "GNU Affero General Public License version 3",
"dependencies": {
"@oazapfts/runtime": "^1.0.2"
},
"devDependencies": {
"@types/node": "^22.16.4",
"@types/node": "^22.17.0",
"typescript": "^5.3.3"
}
},
@@ -90,9 +90,9 @@
}
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
"integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
"dev": true,
"license": "MIT",
"engines": {
@@ -632,9 +632,9 @@
}
},
"node_modules/@eslint/core": {
"version": "0.14.0",
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz",
"integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==",
"version": "0.15.1",
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz",
"integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -682,9 +682,9 @@
}
},
"node_modules/@eslint/js": {
"version": "9.31.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.31.0.tgz",
"integrity": "sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==",
"version": "9.32.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.32.0.tgz",
"integrity": "sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -705,13 +705,13 @@
}
},
"node_modules/@eslint/plugin-kit": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz",
"integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==",
"version": "0.3.4",
"resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz",
"integrity": "sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@eslint/core": "^0.14.0",
"@eslint/core": "^0.15.1",
"levn": "^0.4.1"
},
"engines": {
@@ -1355,9 +1355,9 @@
}
},
"node_modules/@types/node": {
"version": "22.16.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.5.tgz",
"integrity": "sha512-bJFoMATwIGaxxx8VJPeM8TonI8t579oRvgAuT8zFugJsJZgzqv0Fu8Mhp68iecjzG7cnN3mO2dJQ5uUM2EFrgQ==",
"version": "22.17.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.17.0.tgz",
"integrity": "sha512-bbAKTCqX5aNVryi7qXVMi+OkB3w/OyblodicMbvE38blyAz7GxXf6XYhklokijuPwwVg9sDLKRxt0ZHXQwZVfQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1365,17 +1365,17 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.37.0.tgz",
"integrity": "sha512-jsuVWeIkb6ggzB+wPCsR4e6loj+rM72ohW6IBn2C+5NCvfUVY8s33iFPySSVXqtm5Hu29Ne/9bnA0JmyLmgenA==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.38.0.tgz",
"integrity": "sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.10.0",
"@typescript-eslint/scope-manager": "8.37.0",
"@typescript-eslint/type-utils": "8.37.0",
"@typescript-eslint/utils": "8.37.0",
"@typescript-eslint/visitor-keys": "8.37.0",
"@typescript-eslint/scope-manager": "8.38.0",
"@typescript-eslint/type-utils": "8.38.0",
"@typescript-eslint/utils": "8.38.0",
"@typescript-eslint/visitor-keys": "8.38.0",
"graphemer": "^1.4.0",
"ignore": "^7.0.0",
"natural-compare": "^1.4.0",
@@ -1389,7 +1389,7 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"@typescript-eslint/parser": "^8.37.0",
"@typescript-eslint/parser": "^8.38.0",
"eslint": "^8.57.0 || ^9.0.0",
"typescript": ">=4.8.4 <5.9.0"
}
@@ -1405,16 +1405,16 @@
}
},
"node_modules/@typescript-eslint/parser": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.37.0.tgz",
"integrity": "sha512-kVIaQE9vrN9RLCQMQ3iyRlVJpTiDUY6woHGb30JDkfJErqrQEmtdWH3gV0PBAfGZgQXoqzXOO0T3K6ioApbbAA==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.38.0.tgz",
"integrity": "sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/scope-manager": "8.37.0",
"@typescript-eslint/types": "8.37.0",
"@typescript-eslint/typescript-estree": "8.37.0",
"@typescript-eslint/visitor-keys": "8.37.0",
"@typescript-eslint/scope-manager": "8.38.0",
"@typescript-eslint/types": "8.38.0",
"@typescript-eslint/typescript-estree": "8.38.0",
"@typescript-eslint/visitor-keys": "8.38.0",
"debug": "^4.3.4"
},
"engines": {
@@ -1430,14 +1430,14 @@
}
},
"node_modules/@typescript-eslint/project-service": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.37.0.tgz",
"integrity": "sha512-BIUXYsbkl5A1aJDdYJCBAo8rCEbAvdquQ8AnLb6z5Lp1u3x5PNgSSx9A/zqYc++Xnr/0DVpls8iQ2cJs/izTXA==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.38.0.tgz",
"integrity": "sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/tsconfig-utils": "^8.37.0",
"@typescript-eslint/types": "^8.37.0",
"@typescript-eslint/tsconfig-utils": "^8.38.0",
"@typescript-eslint/types": "^8.38.0",
"debug": "^4.3.4"
},
"engines": {
@@ -1452,14 +1452,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.37.0.tgz",
"integrity": "sha512-0vGq0yiU1gbjKob2q691ybTg9JX6ShiVXAAfm2jGf3q0hdP6/BruaFjL/ManAR/lj05AvYCH+5bbVo0VtzmjOA==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.38.0.tgz",
"integrity": "sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.37.0",
"@typescript-eslint/visitor-keys": "8.37.0"
"@typescript-eslint/types": "8.38.0",
"@typescript-eslint/visitor-keys": "8.38.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1470,9 +1470,9 @@
}
},
"node_modules/@typescript-eslint/tsconfig-utils": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.37.0.tgz",
"integrity": "sha512-1/YHvAVTimMM9mmlPvTec9NP4bobA1RkDbMydxG8omqwJJLEW/Iy2C4adsAESIXU3WGLXFHSZUU+C9EoFWl4Zg==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz",
"integrity": "sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1487,15 +1487,15 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.37.0.tgz",
"integrity": "sha512-SPkXWIkVZxhgwSwVq9rqj/4VFo7MnWwVaRNznfQDc/xPYHjXnPfLWn+4L6FF1cAz6e7dsqBeMawgl7QjUMj4Ow==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.38.0.tgz",
"integrity": "sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.37.0",
"@typescript-eslint/typescript-estree": "8.37.0",
"@typescript-eslint/utils": "8.37.0",
"@typescript-eslint/types": "8.38.0",
"@typescript-eslint/typescript-estree": "8.38.0",
"@typescript-eslint/utils": "8.38.0",
"debug": "^4.3.4",
"ts-api-utils": "^2.1.0"
},
@@ -1512,9 +1512,9 @@
}
},
"node_modules/@typescript-eslint/types": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.37.0.tgz",
"integrity": "sha512-ax0nv7PUF9NOVPs+lmQ7yIE7IQmAf8LGcXbMvHX5Gm+YJUYNAl340XkGnrimxZ0elXyoQJuN5sbg6C4evKA4SQ==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.38.0.tgz",
"integrity": "sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1526,16 +1526,16 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.37.0.tgz",
"integrity": "sha512-zuWDMDuzMRbQOM+bHyU4/slw27bAUEcKSKKs3hcv2aNnc/tvE/h7w60dwVw8vnal2Pub6RT1T7BI8tFZ1fE+yg==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz",
"integrity": "sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/project-service": "8.37.0",
"@typescript-eslint/tsconfig-utils": "8.37.0",
"@typescript-eslint/types": "8.37.0",
"@typescript-eslint/visitor-keys": "8.37.0",
"@typescript-eslint/project-service": "8.38.0",
"@typescript-eslint/tsconfig-utils": "8.38.0",
"@typescript-eslint/types": "8.38.0",
"@typescript-eslint/visitor-keys": "8.38.0",
"debug": "^4.3.4",
"fast-glob": "^3.3.2",
"is-glob": "^4.0.3",
@@ -1581,16 +1581,16 @@
}
},
"node_modules/@typescript-eslint/utils": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.37.0.tgz",
"integrity": "sha512-TSFvkIW6gGjN2p6zbXo20FzCABbyUAuq6tBvNRGsKdsSQ6a7rnV6ADfZ7f4iI3lIiXc4F4WWvtUfDw9CJ9pO5A==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.38.0.tgz",
"integrity": "sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.7.0",
"@typescript-eslint/scope-manager": "8.37.0",
"@typescript-eslint/types": "8.37.0",
"@typescript-eslint/typescript-estree": "8.37.0"
"@typescript-eslint/scope-manager": "8.38.0",
"@typescript-eslint/types": "8.38.0",
"@typescript-eslint/typescript-estree": "8.38.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1605,13 +1605,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.37.0.tgz",
"integrity": "sha512-YzfhzcTnZVPiLfP/oeKtDp2evwvHLMe0LOy7oe+hb9KKIumLNohYS9Hgp1ifwpu42YWxhZE8yieggz6JpqO/1w==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.38.0.tgz",
"integrity": "sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.37.0",
"@typescript-eslint/types": "8.38.0",
"eslint-visitor-keys": "^4.2.1"
},
"engines": {
@@ -1897,9 +1897,9 @@
}
},
"node_modules/browserslist": {
"version": "4.24.4",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
"integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
"version": "4.25.1",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz",
"integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==",
"dev": true,
"funding": [
{
@@ -1917,10 +1917,10 @@
],
"license": "MIT",
"dependencies": {
"caniuse-lite": "^1.0.30001688",
"electron-to-chromium": "^1.5.73",
"caniuse-lite": "^1.0.30001726",
"electron-to-chromium": "^1.5.173",
"node-releases": "^2.0.19",
"update-browserslist-db": "^1.1.1"
"update-browserslist-db": "^1.1.3"
},
"bin": {
"browserslist": "cli.js"
@@ -1981,9 +1981,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001713",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001713.tgz",
"integrity": "sha512-wCIWIg+A4Xr7NfhTuHdX+/FKh3+Op3LBbSp2N5Pfx6T/LhdQy3GTyoTg48BReaW/MyMNZAkTadsBtai3ldWK0Q==",
"version": "1.0.30001731",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001731.tgz",
"integrity": "sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==",
"dev": true,
"funding": [
{
@@ -2035,6 +2035,13 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/change-case": {
"version": "5.4.4",
"resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz",
"integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==",
"dev": true,
"license": "MIT"
},
"node_modules/check-error": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
@@ -2061,9 +2068,9 @@
}
},
"node_modules/ci-info": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz",
"integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==",
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz",
"integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==",
"dev": true,
"funding": [
{
@@ -2150,13 +2157,13 @@
"license": "MIT"
},
"node_modules/core-js-compat": {
"version": "3.41.0",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz",
"integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==",
"version": "3.45.0",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.45.0.tgz",
"integrity": "sha512-gRoVMBawZg0OnxaVv3zpqLLxaHmsubEGyTnqdpI/CEBvX4JadI1dMSHxagThprYRtSVbuQxvi6iUatdPxohHpA==",
"dev": true,
"license": "MIT",
"dependencies": {
"browserslist": "^4.24.4"
"browserslist": "^4.25.1"
},
"funding": {
"type": "opencollective",
@@ -2221,9 +2228,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
"version": "1.5.137",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.137.tgz",
"integrity": "sha512-/QSJaU2JyIuTbbABAo/crOs+SuAZLS+fVVS10PVrIT9hrRkmZl8Hb0xPSkKRUUWHQtYzXHpQUW3Dy5hwMzGZkA==",
"version": "1.5.195",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.195.tgz",
"integrity": "sha512-URclP0iIaDUzqcAyV1v2PgduJ9N0IdXmWsnPzPfelvBmjmZzEy6xJcjb1cXj+TbYqXgtLrjHEoaSIdTYhw4ezg==",
"dev": true,
"license": "ISC"
},
@@ -2306,9 +2313,9 @@
}
},
"node_modules/eslint": {
"version": "9.31.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.31.0.tgz",
"integrity": "sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==",
"version": "9.32.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.32.0.tgz",
"integrity": "sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2318,8 +2325,8 @@
"@eslint/config-helpers": "^0.3.0",
"@eslint/core": "^0.15.0",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "9.31.0",
"@eslint/plugin-kit": "^0.3.1",
"@eslint/js": "9.32.0",
"@eslint/plugin-kit": "^0.3.4",
"@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
"@humanwhocodes/retry": "^0.4.2",
@@ -2367,9 +2374,9 @@
}
},
"node_modules/eslint-config-prettier": {
"version": "10.1.5",
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz",
"integrity": "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==",
"version": "10.1.8",
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz",
"integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==",
"dev": true,
"license": "MIT",
"bin": {
@@ -2383,9 +2390,9 @@
}
},
"node_modules/eslint-plugin-prettier": {
"version": "5.5.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.1.tgz",
"integrity": "sha512-dobTkHT6XaEVOo8IO90Q4DOSxnm3Y151QxPJlM/vKC0bVy+d6cVWQZLlFiuZPP0wS6vZwSKeJgKkcS+KfMBlRw==",
"version": "5.5.3",
"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.3.tgz",
"integrity": "sha512-NAdMYww51ehKfDyDhv59/eIItUVzU0Io9H2E8nHNGKEeeqlnci+1gCvrHib6EmZdf6GxF+LCV5K7UC65Ezvw7w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2414,65 +2421,39 @@
}
},
"node_modules/eslint-plugin-unicorn": {
"version": "59.0.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-59.0.1.tgz",
"integrity": "sha512-EtNXYuWPUmkgSU2E7Ttn57LbRREQesIP1BiLn7OZLKodopKfDXfBUkC/0j6mpw2JExwf43Uf3qLSvrSvppgy8Q==",
"version": "60.0.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-60.0.0.tgz",
"integrity": "sha512-QUzTefvP8stfSXsqKQ+vBQSEsXIlAiCduS/V1Em+FKgL9c21U/IIm20/e3MFy1jyCf14tHAhqC1sX8OTy6VUCg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-validator-identifier": "^7.25.9",
"@eslint-community/eslint-utils": "^4.5.1",
"@eslint/plugin-kit": "^0.2.7",
"ci-info": "^4.2.0",
"@babel/helper-validator-identifier": "^7.27.1",
"@eslint-community/eslint-utils": "^4.7.0",
"@eslint/plugin-kit": "^0.3.3",
"change-case": "^5.4.4",
"ci-info": "^4.3.0",
"clean-regexp": "^1.0.0",
"core-js-compat": "^3.41.0",
"core-js-compat": "^3.44.0",
"esquery": "^1.6.0",
"find-up-simple": "^1.0.1",
"globals": "^16.0.0",
"globals": "^16.3.0",
"indent-string": "^5.0.0",
"is-builtin-module": "^5.0.0",
"jsesc": "^3.1.0",
"pluralize": "^8.0.0",
"regexp-tree": "^0.1.27",
"regjsparser": "^0.12.0",
"semver": "^7.7.1",
"semver": "^7.7.2",
"strip-indent": "^4.0.0"
},
"engines": {
"node": "^18.20.0 || ^20.10.0 || >=21.0.0"
"node": "^20.10.0 || >=21.0.0"
},
"funding": {
"url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1"
},
"peerDependencies": {
"eslint": ">=9.22.0"
}
},
"node_modules/eslint-plugin-unicorn/node_modules/@eslint/core": {
"version": "0.13.0",
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
"integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@types/json-schema": "^7.0.15"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/eslint-plugin-unicorn/node_modules/@eslint/plugin-kit": {
"version": "0.2.8",
"resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz",
"integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@eslint/core": "^0.13.0",
"levn": "^0.4.1"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
"eslint": ">=9.29.0"
}
},
"node_modules/eslint-scope": {
@@ -2505,19 +2486,6 @@
"url": "https://opencollective.com/eslint"
}
},
"node_modules/eslint/node_modules/@eslint/core": {
"version": "0.15.1",
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz",
"integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@types/json-schema": "^7.0.15"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/espree": {
"version": "10.4.0",
"resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
@@ -3548,15 +3516,15 @@
}
},
"node_modules/prettier-plugin-organize-imports": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.1.0.tgz",
"integrity": "sha512-5aWRdCgv645xaa58X8lOxzZoiHAldAPChljr/MT0crXVOWTZ+Svl4hIWlz+niYSlO6ikE5UXkN1JrRvIP2ut0A==",
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.2.0.tgz",
"integrity": "sha512-Zdy27UhlmyvATZi67BTnLcKTo8fm6Oik59Sz6H64PgZJVs6NJpPD1mT240mmJn62c98/QaL+r3kx9Q3gRpDajg==",
"dev": true,
"license": "MIT",
"peerDependencies": {
"prettier": ">=2.0",
"typescript": ">=2.9",
"vue-tsc": "^2.1.0"
"vue-tsc": "^2.1.0 || 3"
},
"peerDependenciesMeta": {
"vue-tsc": {
@@ -3727,9 +3695,9 @@
}
},
"node_modules/semver": {
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
"integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
"version": "7.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -4139,16 +4107,16 @@
}
},
"node_modules/typescript-eslint": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.37.0.tgz",
"integrity": "sha512-TnbEjzkE9EmcO0Q2zM+GE8NQLItNAJpMmED1BdgoBMYNdqMhzlbqfdSwiRlAzEK2pA9UzVW0gzaaIzXWg2BjfA==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.38.0.tgz",
"integrity": "sha512-FsZlrYK6bPDGoLeZRuvx2v6qrM03I0U0SnfCLPs/XCCPCFD80xU9Pg09H/K+XFa68uJuZo7l/Xhs+eDRg2l3hg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/eslint-plugin": "8.37.0",
"@typescript-eslint/parser": "8.37.0",
"@typescript-eslint/typescript-estree": "8.37.0",
"@typescript-eslint/utils": "8.37.0"
"@typescript-eslint/eslint-plugin": "8.38.0",
"@typescript-eslint/parser": "8.38.0",
"@typescript-eslint/typescript-estree": "8.38.0",
"@typescript-eslint/utils": "8.38.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -4211,15 +4179,15 @@
}
},
"node_modules/vite": {
"version": "7.0.5",
"resolved": "https://registry.npmjs.org/vite/-/vite-7.0.5.tgz",
"integrity": "sha512-1mncVwJxy2C9ThLwz0+2GKZyEXuC3MyWtAAlNftlZZXZDP3AJt5FmwcMit/IGGaNZ8ZOB2BNO/HFUB+CpN0NQw==",
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/vite/-/vite-7.0.6.tgz",
"integrity": "sha512-MHFiOENNBd+Bd9uvc8GEsIzdkn1JxMmEeYX35tI3fv0sJBUTfW5tQsoaOwuY4KhBI09A3dUJ/DXf2yxPVPUceg==",
"dev": true,
"license": "MIT",
"dependencies": {
"esbuild": "^0.25.0",
"fdir": "^6.4.6",
"picomatch": "^4.0.2",
"picomatch": "^4.0.3",
"postcss": "^8.5.6",
"rollup": "^4.40.0",
"tinyglobby": "^0.2.14"

View File

@@ -1,6 +1,6 @@
{
"name": "@immich/cli",
"version": "2.2.72",
"version": "2.2.79",
"description": "Command Line Interface (CLI) for Immich",
"type": "module",
"exports": "./dist/index.js",
@@ -21,15 +21,15 @@
"@types/lodash-es": "^4.17.12",
"@types/micromatch": "^4.0.9",
"@types/mock-fs": "^4.13.1",
"@types/node": "^22.16.4",
"@types/node": "^22.17.0",
"@vitest/coverage-v8": "^3.0.0",
"byte-size": "^9.0.0",
"cli-progress": "^3.12.0",
"commander": "^12.0.0",
"eslint": "^9.14.0",
"eslint-config-prettier": "^10.0.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-unicorn": "^59.0.0",
"eslint-plugin-unicorn": "^60.0.0",
"globals": "^16.0.0",
"mock-fs": "^5.2.0",
"prettier": "^3.2.5",
@@ -69,6 +69,6 @@
"micromatch": "^4.0.8"
},
"volta": {
"node": "22.17.1"
"node": "22.18.0"
}
}

View File

@@ -2,37 +2,37 @@
# Manual edits may be lost in future updates.
provider "registry.opentofu.org/cloudflare/cloudflare" {
version = "4.52.0"
constraints = "4.52.0"
version = "4.52.1"
constraints = "4.52.1"
hashes = [
"h1:2BEJyXJtYC4B4nda/WCYUmuJYDaYk88F8t1pwPzr0iQ=",
"h1:4IASk5SESeWKQ7JU0+M7KApuF5mZyklvwMXPBabim3c=",
"h1:5ImZxxALSnWfH/4EXw/wFirSmk5Tr0ACmcysy51AafE=",
"h1:6TJ3dxLSin4ZKBJLsZDn95H2ZYnGm8S7GGHvvXuuMQU=",
"h1:IzTUjg9kQ4N3qizP9CjYLeHwjsuGgtxwXvfUQWyOLcA=",
"h1:NTaOQfYINA0YTG/V1/9+SYtgX1it63+cBugj4WK4FWc=",
"h1:PXH48LuJn329sCfMXprdMDk51EZaWFyajVvS03qhQLs=",
"h1:Pi5M+GeoMSN2eJ6QnIeXjBf19O+rby/74CfB2ocpv20=",
"h1:ShXZ2ZjBvm3thfoPPzPT8+OhyismnydQVkUAfI8X12w=",
"h1:WQ9hu0Wge2msBbODfottCSKgu8oKUrw4Opz+fDPVVHk=",
"h1:Z5yXML2DE0uH9UU+M0ut9JMQAORcwVZz1CxBHzeBmao=",
"h1:jqI2qKknpleS3JDSplyGYHMu0u9K/tor1ZOjFwDgEMk=",
"h1:kgfutDh14Q5nw4eg6qGFamFxIiY8Ae0FPKRBLDOzpcI=",
"h1:zCAO7GZmfYhWb+i6TfqlqhMeDyPZWGio2IzEzAh3YTs=",
"zh:19be1a91c982b902c42aba47766860dfa5dc151eed1e95fd39ca642229381ef0",
"zh:1de451c4d1ecf7efbe67b6dace3426ba810711afdd644b0f1b870364c8ae91f8",
"zh:352b4a2120173298622e669258744554339d959ac3a95607b117a48ee4a83238",
"zh:3c6f1346d9154afbd2d558fabb4b0150fc8d559aa961254144fe1bc17fe6032f",
"zh:4c4c92d53fb535b1e0eff26f222bbd627b97d3b4c891ec9c321268676d06152f",
"zh:53276f68006c9ceb7cdb10a6ccf91a5c1eadd1407a28edb5741e84e88d7e29e8",
"zh:7925a97773948171a63d4f65bb81ee92fd6d07a447e36012977313293a5435c9",
"zh:7dfb0a4496cfe032437386d0a2cd9229a1956e9c30bd920923c141b0f0440060",
"h1:2lHvafwGbLdmc9lYkuJFw3nsInaQjRpjX/JfIRKmq/M=",
"h1:596JomwjrtUrOSreq9NNCS+rj70+jOV+0pfja5MXiTI=",
"h1:7mBOA5TVAIt3qAwPXKCtE0RSYeqij9v30mnksuBbpEg=",
"h1:ELVgzh4kHKBCYdL+2A8JjWS0E1snLUN3Mmz3Vo6qSfw=",
"h1:FGGM5yLFf72g3kSXM3LAN64Gf/AkXr5WCmhixgnP+l4=",
"h1:JupkJbQALcIVoMhHImrLeLDsQR1ET7VJLGC7ONxjqGU=",
"h1:KsaE4JNq+1uV1nJsuTcYar/8lyY6zKS5UBEpfYg3wvc=",
"h1:NHZ5RJIzQDLhie/ykl3uI6UPfNQR9Lu5Ti7JPR6X904=",
"h1:NfAuMbn6LQPLDtJhbzO1MX9JMIGLMa8K6CpekvtsuX8=",
"h1:e+vNKokamDsp/kJvFr2pRudzwEz2r49iZ/oSggw+1LY=",
"h1:jnb4VdfNZ79I3yj7Q8x+JmOT+FxbfjjRfrF0dL0yCW8=",
"h1:kmF//O539d7NuHU7qIxDj7Wz4eJmLKFiI5glwQivldU=",
"h1:s6XriaKwOgV4jvKAGPXkrxhhOQxpNU5dceZwi9Z/1k8=",
"h1:wt3WBEBAeSGTlC9OlnTlAALxRiK4SQgLy0KgBIS7qzs=",
"zh:2fb95e1d3229b9b6c704e1a413c7481c60f139780d9641f657b6eb9b633b90f2",
"zh:379c7680983383862236e9e6e720c3114195c40526172188e88d0ffcf50dfe2e",
"zh:55533beb6cfc02d22ffda8cba8027bc2c841bb172cd637ed0d28323d41395f8f",
"zh:5abd70760e4eb1f37a1c307cbd2989ea7c9ba0afb93818c67c1d363a31f75703",
"zh:699f1c8cd66129176fe659ebf0e6337632a8967a28d2630b6ae5948665c0c2ae",
"zh:69c15acd73c451e89de6477059cda2f3ec200b48ae4b9ff3646c4d389fd3205e",
"zh:6e02b687de21b844f8266dff99e93e7c61fc8eb688f4bbb23803caceb251839e",
"zh:7a51d17b87ed87b7bebf2ad9fc7c3a74f16a1b44eee92c779c08eb89258c0496",
"zh:88ad84436837b0f55302f22748505972634e87400d6902260fd6b7ba1610f937",
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
"zh:8d4aa79f0a414bb4163d771063c70cd991c8fac6c766e685bac2ee12903c5bd6",
"zh:a67540c13565616a7e7e51ee9366e88b0dc60046e1d75c72680e150bd02725bb",
"zh:a936383a4767f5393f38f622e92bf2d0c03fe04b69c284951f27345766c7b31b",
"zh:d4887d73c466ff036eecf50ad6404ba38fd82ea4855296b1846d244b0f13c380",
"zh:e9093c8bd5b6cd99c81666e315197791781b8f93afa14fc2e0f732d1bb2a44b7",
"zh:efd3b3f1ec59a37f635aa1d4efcf178734c2fcf8ddb0d56ea690bec342da8672",
"zh:8d46c3d9f4f7ad20ac6ef01daa63f4e30a2d16dcb1bb5c7c7ee3dc6be38e9ca1",
"zh:913d64e72a4929dae1d4793e2004f4f9a58b138ea337d9d94fa35cafbf06550a",
"zh:c8d93cf86e2e49f6cec665cfe78b82c144cce15a8b2e30f343385fadd1251849",
"zh:cc4f69397d9bc34a528a5609a024c3a48f54f21616c0008792dd417297add955",
"zh:df99cdb8b064aad35ffea77e645cf6541d0b1b2ebc51b6d26c42031de60ab69e",
]
}

View File

@@ -5,7 +5,7 @@ terraform {
required_providers {
cloudflare = {
source = "cloudflare/cloudflare"
version = "4.52.0"
version = "4.52.1"
}
}
}

View File

@@ -2,37 +2,37 @@
# Manual edits may be lost in future updates.
provider "registry.opentofu.org/cloudflare/cloudflare" {
version = "4.52.0"
constraints = "4.52.0"
version = "4.52.1"
constraints = "4.52.1"
hashes = [
"h1:2BEJyXJtYC4B4nda/WCYUmuJYDaYk88F8t1pwPzr0iQ=",
"h1:4IASk5SESeWKQ7JU0+M7KApuF5mZyklvwMXPBabim3c=",
"h1:5ImZxxALSnWfH/4EXw/wFirSmk5Tr0ACmcysy51AafE=",
"h1:6TJ3dxLSin4ZKBJLsZDn95H2ZYnGm8S7GGHvvXuuMQU=",
"h1:IzTUjg9kQ4N3qizP9CjYLeHwjsuGgtxwXvfUQWyOLcA=",
"h1:NTaOQfYINA0YTG/V1/9+SYtgX1it63+cBugj4WK4FWc=",
"h1:PXH48LuJn329sCfMXprdMDk51EZaWFyajVvS03qhQLs=",
"h1:Pi5M+GeoMSN2eJ6QnIeXjBf19O+rby/74CfB2ocpv20=",
"h1:ShXZ2ZjBvm3thfoPPzPT8+OhyismnydQVkUAfI8X12w=",
"h1:WQ9hu0Wge2msBbODfottCSKgu8oKUrw4Opz+fDPVVHk=",
"h1:Z5yXML2DE0uH9UU+M0ut9JMQAORcwVZz1CxBHzeBmao=",
"h1:jqI2qKknpleS3JDSplyGYHMu0u9K/tor1ZOjFwDgEMk=",
"h1:kgfutDh14Q5nw4eg6qGFamFxIiY8Ae0FPKRBLDOzpcI=",
"h1:zCAO7GZmfYhWb+i6TfqlqhMeDyPZWGio2IzEzAh3YTs=",
"zh:19be1a91c982b902c42aba47766860dfa5dc151eed1e95fd39ca642229381ef0",
"zh:1de451c4d1ecf7efbe67b6dace3426ba810711afdd644b0f1b870364c8ae91f8",
"zh:352b4a2120173298622e669258744554339d959ac3a95607b117a48ee4a83238",
"zh:3c6f1346d9154afbd2d558fabb4b0150fc8d559aa961254144fe1bc17fe6032f",
"zh:4c4c92d53fb535b1e0eff26f222bbd627b97d3b4c891ec9c321268676d06152f",
"zh:53276f68006c9ceb7cdb10a6ccf91a5c1eadd1407a28edb5741e84e88d7e29e8",
"zh:7925a97773948171a63d4f65bb81ee92fd6d07a447e36012977313293a5435c9",
"zh:7dfb0a4496cfe032437386d0a2cd9229a1956e9c30bd920923c141b0f0440060",
"h1:2lHvafwGbLdmc9lYkuJFw3nsInaQjRpjX/JfIRKmq/M=",
"h1:596JomwjrtUrOSreq9NNCS+rj70+jOV+0pfja5MXiTI=",
"h1:7mBOA5TVAIt3qAwPXKCtE0RSYeqij9v30mnksuBbpEg=",
"h1:ELVgzh4kHKBCYdL+2A8JjWS0E1snLUN3Mmz3Vo6qSfw=",
"h1:FGGM5yLFf72g3kSXM3LAN64Gf/AkXr5WCmhixgnP+l4=",
"h1:JupkJbQALcIVoMhHImrLeLDsQR1ET7VJLGC7ONxjqGU=",
"h1:KsaE4JNq+1uV1nJsuTcYar/8lyY6zKS5UBEpfYg3wvc=",
"h1:NHZ5RJIzQDLhie/ykl3uI6UPfNQR9Lu5Ti7JPR6X904=",
"h1:NfAuMbn6LQPLDtJhbzO1MX9JMIGLMa8K6CpekvtsuX8=",
"h1:e+vNKokamDsp/kJvFr2pRudzwEz2r49iZ/oSggw+1LY=",
"h1:jnb4VdfNZ79I3yj7Q8x+JmOT+FxbfjjRfrF0dL0yCW8=",
"h1:kmF//O539d7NuHU7qIxDj7Wz4eJmLKFiI5glwQivldU=",
"h1:s6XriaKwOgV4jvKAGPXkrxhhOQxpNU5dceZwi9Z/1k8=",
"h1:wt3WBEBAeSGTlC9OlnTlAALxRiK4SQgLy0KgBIS7qzs=",
"zh:2fb95e1d3229b9b6c704e1a413c7481c60f139780d9641f657b6eb9b633b90f2",
"zh:379c7680983383862236e9e6e720c3114195c40526172188e88d0ffcf50dfe2e",
"zh:55533beb6cfc02d22ffda8cba8027bc2c841bb172cd637ed0d28323d41395f8f",
"zh:5abd70760e4eb1f37a1c307cbd2989ea7c9ba0afb93818c67c1d363a31f75703",
"zh:699f1c8cd66129176fe659ebf0e6337632a8967a28d2630b6ae5948665c0c2ae",
"zh:69c15acd73c451e89de6477059cda2f3ec200b48ae4b9ff3646c4d389fd3205e",
"zh:6e02b687de21b844f8266dff99e93e7c61fc8eb688f4bbb23803caceb251839e",
"zh:7a51d17b87ed87b7bebf2ad9fc7c3a74f16a1b44eee92c779c08eb89258c0496",
"zh:88ad84436837b0f55302f22748505972634e87400d6902260fd6b7ba1610f937",
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
"zh:8d4aa79f0a414bb4163d771063c70cd991c8fac6c766e685bac2ee12903c5bd6",
"zh:a67540c13565616a7e7e51ee9366e88b0dc60046e1d75c72680e150bd02725bb",
"zh:a936383a4767f5393f38f622e92bf2d0c03fe04b69c284951f27345766c7b31b",
"zh:d4887d73c466ff036eecf50ad6404ba38fd82ea4855296b1846d244b0f13c380",
"zh:e9093c8bd5b6cd99c81666e315197791781b8f93afa14fc2e0f732d1bb2a44b7",
"zh:efd3b3f1ec59a37f635aa1d4efcf178734c2fcf8ddb0d56ea690bec342da8672",
"zh:8d46c3d9f4f7ad20ac6ef01daa63f4e30a2d16dcb1bb5c7c7ee3dc6be38e9ca1",
"zh:913d64e72a4929dae1d4793e2004f4f9a58b138ea337d9d94fa35cafbf06550a",
"zh:c8d93cf86e2e49f6cec665cfe78b82c144cce15a8b2e30f343385fadd1251849",
"zh:cc4f69397d9bc34a528a5609a024c3a48f54f21616c0008792dd417297add955",
"zh:df99cdb8b064aad35ffea77e645cf6541d0b1b2ebc51b6d26c42031de60ab69e",
]
}

View File

@@ -5,7 +5,7 @@ terraform {
required_providers {
cloudflare = {
source = "cloudflare/cloudflare"
version = "4.52.0"
version = "4.52.1"
}
}
}

View File

@@ -29,8 +29,8 @@ services:
volumes:
- ../server:/usr/src/app/server
- ../open-api:/usr/src/app/open-api
- ${UPLOAD_LOCATION}/photos:/usr/src/app/upload
- ${UPLOAD_LOCATION}/photos/upload:/usr/src/app/upload/upload
- ${UPLOAD_LOCATION}/photos:/data
- ${UPLOAD_LOCATION}/photos/upload:/data/upload
- /usr/src/app/server/node_modules
- /etc/localtime:/etc/localtime:ro
env_file:
@@ -117,13 +117,13 @@ services:
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:facc1d2c3462975c34e10fccb167bfa92b0e0dbd992fc282c29a61c3243afb11
image: docker.io/valkey/valkey:8-bookworm@sha256:5b8f8c333bef895c925f56629d6ba90aea95a4f7391f62411e625267c600b19c
healthcheck:
test: redis-cli ping || exit 1
database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:5f6a838e4e44c8e0e019d0ebfe3ee8952b69afc2809b2c25f7b0119641978e91
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:32324a2f41df5de9efe1af166b7008c3f55646f8d0e00d9550c16c9822366b4a
env_file:
- .env
environment:

View File

@@ -20,7 +20,7 @@ services:
context: ../
dockerfile: server/Dockerfile
volumes:
- ${UPLOAD_LOCATION}/photos:/usr/src/app/upload
- ${UPLOAD_LOCATION}/photos:/data
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
@@ -56,14 +56,14 @@ services:
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:facc1d2c3462975c34e10fccb167bfa92b0e0dbd992fc282c29a61c3243afb11
image: docker.io/valkey/valkey:8-bookworm@sha256:5b8f8c333bef895c925f56629d6ba90aea95a4f7391f62411e625267c600b19c
healthcheck:
test: redis-cli ping || exit 1
restart: always
database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:5f6a838e4e44c8e0e019d0ebfe3ee8952b69afc2809b2c25f7b0119641978e91
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:32324a2f41df5de9efe1af166b7008c3f55646f8d0e00d9550c16c9822366b4a
env_file:
- .env
environment:
@@ -95,7 +95,7 @@ services:
command: ['./run.sh', '-disable-reporting']
ports:
- 3000:3000
image: grafana/grafana:12.0.2-ubuntu@sha256:0512d81cdeaaff0e370a9aa66027b465d1f1f04379c3a9c801a905fabbdbc7a5
image: grafana/grafana:12.1.0-ubuntu@sha256:397aa30dd1af16cb6c5c9879498e467973a7f87eacf949f6d5a29407a3843809
volumes:
- grafana-data:/var/lib/grafana

View File

@@ -18,7 +18,7 @@ services:
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
volumes:
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- ${UPLOAD_LOCATION}:/data
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
@@ -49,14 +49,14 @@ services:
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:facc1d2c3462975c34e10fccb167bfa92b0e0dbd992fc282c29a61c3243afb11
image: docker.io/valkey/valkey:8-bookworm@sha256:5b8f8c333bef895c925f56629d6ba90aea95a4f7391f62411e625267c600b19c
healthcheck:
test: redis-cli ping || exit 1
restart: always
database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:5f6a838e4e44c8e0e019d0ebfe3ee8952b69afc2809b2c25f7b0119641978e91
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:32324a2f41df5de9efe1af166b7008c3f55646f8d0e00d9550c16c9822366b4a
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}

4
docs/.gitignore vendored
View File

@@ -18,4 +18,6 @@
npm-debug.log*
yarn-debug.log*
yarn-error.log*
yarn.lock
yarn.lock
/static/openapi.json

View File

@@ -1 +1 @@
22.17.1
22.18.0

View File

@@ -180,7 +180,7 @@ services:
...
volumes:
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- ${UPLOAD_LOCATION}:/data
- /etc/localtime:/etc/localtime:ro
+ - originals:/usr/src/app/originals
...

View File

@@ -64,7 +64,7 @@ Once you have a new OAuth client application configured, Immich can be configure
| Storage Label Claim | string | preferred_username | Claim mapping for the user's storage label**¹** |
| Role Claim | string | immich_role | Claim mapping for the user's role. (should return "user" or "admin")**¹** |
| Storage Quota Claim | string | immich_quota | Claim mapping for the user's storage**¹** |
| Default Storage Quota (GiB) | number | 0 | Default quota for user without storage quota claim (Enter 0 for unlimited quota) |
| Default Storage Quota (GiB) | number | 0 | Default quota for user without storage quota claim (empty for unlimited quota) |
| Button Text | string | Login with OAuth | Text for the OAuth button on the web |
| Auto Register | boolean | true | When true, will automatically register a user the first time they sign in |
| [Auto Launch](#auto-launch) | boolean | false | When true, will skip the login page and automatically start the OAuth login process |
@@ -106,6 +106,89 @@ Immich has a route (`/api/oauth/mobile-redirect`) that is already configured to
## Example Configuration
<details>
<summary>Authelia Example</summary>
### Authelia Example
Here's an example of OAuth configured for Authelia:
This assumes there exist an attribute `immichquota` in the user schema, which is used to set the user's storage quota in Immich.
The configuration concerning the quota is optional.
```yaml
authentication_backend:
ldap:
# The LDAP server configuration goes here.
# See: https://www.authelia.com/c/ldap
attributes:
extra:
immichquota: # The attribute name from LDAP
name: 'immich_quota'
multi_valued: false
value_type: 'integer'
identity_providers:
oidc:
## The other portions of the mandatory OpenID Connect 1.0 configuration go here.
## See: https://www.authelia.com/c/oidc
claims_policies:
immich_policy:
custom_claims:
immich_quota:
attribute: 'immich_quota'
scopes:
immich_scope:
claims:
- 'immich_quota'
clients:
- client_id: 'immich'
client_name: 'Immich'
# https://www.authelia.com/integration/openid-connect/frequently-asked-questions/#how-do-i-generate-a-client-identifier-or-client-secret
client_secret: $pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng'
public: false
require_pkce: false
redirect_uris:
- 'https://example.immich.app/auth/login'
- 'https://example.immich.app/user-settings'
- 'app.immich:///oauth-callback'
scopes:
- 'openid'
- 'profile'
- 'email'
- 'immich_scope'
claims_policy: 'immich_policy'
response_types:
- 'code'
grant_types:
- 'authorization_code'
id_token_signed_response_alg: 'RS256'
userinfo_signed_response_alg: 'RS256'
token_endpoint_auth_method: 'client_secret_post'
```
Configuration of OAuth in Immich System Settings
| Setting | Value |
| ---------------------------------- | ------------------------------------------------------------------- |
| Issuer URL | `https://example.immich.app/.well-known/openid-configuration` |
| Client ID | immich |
| Client Secret | 0v89FXkQOWO\***\*\*\*\*\***\*\*\***\*\*\*\*\***mprbvXD549HH6s1iw... |
| Token Endpoint Auth Method | client_secret_post |
| Scope | openid email profile immich_scope |
| ID Token Signed Response Algorithm | RS256 |
| Userinfo Signed Response Algorithm | RS256 |
| Storage Label Claim | uid |
| Storage Quota Claim | immich_quota |
| Default Storage Quota (GiB) | 0 (empty for unlimited quota) |
| Button Text | Sign in with Authelia (optional) |
| Auto Register | Enabled (optional) |
| Auto Launch | Enabled (optional) |
| Mobile Redirect URI Override | Disable |
| Mobile Redirect URI | |
</details>
<details>
<summary>Authentik Example</summary>
@@ -128,7 +211,7 @@ Configuration of OAuth in Immich System Settings
| Signing Algorithm | RS256 |
| Storage Label Claim | preferred_username |
| Storage Quota Claim | immich_quota |
| Default Storage Quota (GiB) | 0 (0 for unlimited quota) |
| Default Storage Quota (GiB) | 0 (empty for unlimited quota) |
| Button Text | Sign in with Authentik (optional) |
| Auto Register | Enabled (optional) |
| Auto Launch | Enabled (optional) |
@@ -159,7 +242,7 @@ Configuration of OAuth in Immich System Settings
| Signing Algorithm | RS256 |
| Storage Label Claim | preferred_username |
| Storage Quota Claim | immich_quota |
| Default Storage Quota (GiB) | 0 (0 for unlimited quota) |
| Default Storage Quota (GiB) | 0 (empty for unlimited quota) |
| Button Text | Sign in with Google (optional) |
| Auto Register | Enabled (optional) |
| Auto Launch | Enabled |

View File

@@ -2,10 +2,6 @@
Users can deploy a custom reverse proxy that forwards requests to Immich. This way, the reverse proxy can handle TLS termination, load balancing, or other advanced features. All reverse proxies between Immich and the user must forward all headers and set the `Host`, `X-Real-IP`, `X-Forwarded-Proto` and `X-Forwarded-For` headers to their appropriate values. Additionally, your reverse proxy should allow for big enough uploads. By following these practices, you ensure that all custom reverse proxies are fully compatible with Immich.
:::note
The Repair page can take a long time to load. To avoid server timeouts or errors, we recommend specifying a timeout of at least 10 minutes on your proxy server.
:::
:::caution
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.
:::

View File

@@ -94,19 +94,16 @@ Change media location
```
immich-admin change-media-location
? Enter the previous value of IMMICH_MEDIA_LOCATION: /usr/src/app/upload
? Enter the new value of IMMICH_MEDIA_LOCATION: /data
? Enter the previous value of IMMICH_MEDIA_LOCATION: /data
? Enter the new value of IMMICH_MEDIA_LOCATION: /my-data
...
Previous value: /data
Current value: /my-data
Previous value: /usr/src/app/upload
Current value: /data
Changing database paths from "/usr/src/app/upload/*" to "/data/*"
Changing database paths from "/data/*" to "/my-data/*"
? Do you want to proceed? [Y/n] y
Database file paths updated successfully! 🎉
You may now set IMMICH_MEDIA_LOCATION=/data and restart!
(please remember to update applicable volume mounts e.g. ${UPLOAD_LOCATION}:/data)
...
```

View File

@@ -38,6 +38,19 @@ Run all server checks with `npm run check:all`
You can use `npm run __:fix` to potentially correct some issues automatically for `npm run format` and `lint`.
:::
## Mobile Checks
The following commands must be executed from within the mobile app directory of the codebase.
- [ ] `make build` (auto-generate files using build_runner)
- [ ] `make analyze` (static analysis via Dart Analyzer and DCM)
- [ ] `make format` (formatting via Dart Formatter)
- [ ] `make test` (unit tests)
:::info Auto Fix
You can use `dart fix --apply` and `dcm fix lib` to potentially correct some issues automatically for `make analyze`.
:::
## OpenAPI
The OpenAPI client libraries need to be regenerated whenever there are changes to the `immich-openapi-specs.json` file. Note that you should not modify this file directly as it is auto-generated. See [OpenAPI](/docs/developer/open-api.md) for more details.

View File

@@ -58,7 +58,7 @@ Internally, Immich uses the [glob](https://www.npmjs.com/package/glob) package t
This feature is considered experimental and for advanced users only. If enabled, it will allow automatic watching of the filesystem which means new assets are automatically imported to Immich without needing to rescan.
If your photos are on a network drive, automatic file watching likely won't work. In that case, you will have to rely on a periodic library refresh to pull in your changes.
If your photos are on a network drive, automatic file watching likely won't work. In that case, you will have to rely on a [periodic library refresh](#set-custom-scan-interval) to pull in your changes.
#### Troubleshooting
@@ -72,7 +72,9 @@ In rare cases, the library watcher can hang, preventing Immich from starting up.
### Nightly job
There is an automatic scan job that is scheduled to run once a day. This job also cleans up any libraries stuck in deletion. It is possible to trigger the cleanup by clicking "Scan all libraries" in the library management page.
There is an automatic scan job that is scheduled to run once a day. Its schedule is configurable, see [Set Custom Scan Interval](#set-custom-scan-interval).
This job also cleans up any libraries stuck in deletion. It is possible to trigger the cleanup by clicking "Scan all libraries" in the library management page.
## Usage
@@ -91,7 +93,7 @@ The `immich-server` container will need access to the gallery. Modify your docke
```diff title="docker-compose.yml"
immich-server:
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- ${UPLOAD_LOCATION}:/data
+ - /mnt/nas/christmas-trip:/mnt/media/christmas-trip:ro
+ - /home/user/old-pics:/mnt/media/old-pics:ro
+ - /mnt/media/videos:/mnt/media/videos:ro

View File

@@ -27,11 +27,11 @@ After defining the locations of these files, we will edit the `docker-compose.ym
services:
immich-server:
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
+ - ${THUMB_LOCATION}:/usr/src/app/upload/thumbs
+ - ${ENCODED_VIDEO_LOCATION}:/usr/src/app/upload/encoded-video
+ - ${PROFILE_LOCATION}:/usr/src/app/upload/profile
+ - ${BACKUP_LOCATION}:/usr/src/app/upload/backups
- ${UPLOAD_LOCATION}:/data
+ - ${THUMB_LOCATION}:/data/thumbs
+ - ${ENCODED_VIDEO_LOCATION}:/data/encoded-video
+ - ${PROFILE_LOCATION}:/data/profile
+ - ${BACKUP_LOCATION}:/data/backups
- /etc/localtime:/etc/localtime:ro
```
@@ -44,7 +44,7 @@ docker compose up -d
:::note
Because of the underlying properties of docker bind mounts, it is not recommended to mount the `upload/` and `library/` folders as separate bind mounts if they are on the same device.
For this reason, we mount the HDD or the network storage (NAS) to `/usr/src/app/upload` and then mount the folders we want to access under that folder.
For this reason, we mount the HDD or the network storage (NAS) to `/data` and then mount the folders we want to access under that folder.
The `thumbs/` folder contains both the small thumbnails displayed in the timeline and the larger previews shown when clicking into an image. These cannot be separated.

View File

@@ -12,118 +12,148 @@ Run `docker exec -it immich_postgres psql --dbname=<DB_DATABASE_NAME> --username
## Assets
### Name
:::note
The `"originalFileName"` column is the name of the file at time of upload, including the extension.
:::
```sql title="Find by original filename"
SELECT * FROM "assets" WHERE "originalFileName" = 'PXL_20230903_232542848.jpg';
SELECT * FROM "assets" WHERE "originalFileName" LIKE 'PXL_%'; -- all files starting with PXL_
SELECT * FROM "assets" WHERE "originalFileName" LIKE '%_2023_%'; -- all files with _2023_ in the middle
SELECT * FROM "asset" WHERE "originalFileName" = 'PXL_20230903_232542848.jpg';
SELECT * FROM "asset" WHERE "originalFileName" LIKE 'PXL_%'; -- all files starting with PXL_
SELECT * FROM "asset" WHERE "originalFileName" LIKE '%_2023_%'; -- all files with _2023_ in the middle
```
```sql title="Find by path"
SELECT * FROM "assets" WHERE "originalPath" = 'upload/library/admin/2023/2023-09-03/PXL_2023.jpg';
SELECT * FROM "assets" WHERE "originalPath" LIKE 'upload/library/admin/2023/%';
SELECT * FROM "asset" WHERE "originalPath" = 'upload/library/admin/2023/2023-09-03/PXL_2023.jpg';
SELECT * FROM "asset" WHERE "originalPath" LIKE 'upload/library/admin/2023/%';
```
### ID
```sql title="Find by ID"
SELECT * FROM "assets" WHERE "id" = '9f94e60f-65b6-47b7-ae44-a4df7b57f0e9';
SELECT * FROM "asset" WHERE "id" = '9f94e60f-65b6-47b7-ae44-a4df7b57f0e9';
```
```sql title="Find by partial ID"
SELECT * FROM "assets" WHERE "id"::text LIKE '%ab431d3a%';
SELECT * FROM "asset" WHERE "id"::text LIKE '%ab431d3a%';
```
### Checksum
:::note
You can calculate the checksum for a particular file by using the command `sha1sum <filename>`.
:::
```sql title="Find by checksum (SHA-1)"
SELECT encode("checksum", 'hex') FROM "assets";
SELECT * FROM "assets" WHERE "checksum" = decode('69de19c87658c4c15d9cacb9967b8e033bf74dd1', 'hex');
SELECT * FROM "assets" WHERE "checksum" = '\x69de19c87658c4c15d9cacb9967b8e033bf74dd1'; -- alternate notation
SELECT encode("checksum", 'hex') FROM "asset";
SELECT * FROM "asset" WHERE "checksum" = decode('69de19c87658c4c15d9cacb9967b8e033bf74dd1', 'hex');
SELECT * FROM "asset" WHERE "checksum" = '\x69de19c87658c4c15d9cacb9967b8e033bf74dd1'; -- alternate notation
```
```sql title="Find duplicate assets with identical checksum (SHA-1) (excluding trashed files)"
SELECT T1."checksum", array_agg(T2."id") ids FROM "assets" T1
INNER JOIN "assets" T2 ON T1."checksum" = T2."checksum" AND T1."id" != T2."id" AND T2."deletedAt" IS NULL
SELECT T1."checksum", array_agg(T2."id") ids FROM "asset" T1
INNER JOIN "asset" T2 ON T1."checksum" = T2."checksum" AND T1."id" != T2."id" AND T2."deletedAt" IS NULL
WHERE T1."deletedAt" IS NULL GROUP BY T1."checksum";
```
### Metadata
```sql title="Live photos"
SELECT * FROM "assets" WHERE "livePhotoVideoId" IS NOT NULL;
SELECT * FROM "asset" WHERE "livePhotoVideoId" IS NOT NULL;
```
```sql title="By description"
SELECT "assets".*, "exif"."description" FROM "exif"
JOIN "assets" ON "assets"."id" = "exif"."assetId"
WHERE TRIM("exif"."description") <> ''; -- all files with a description
SELECT "assets".*, "exif"."description" FROM "exif"
JOIN "assets" ON "assets"."id" = "exif"."assetId"
WHERE "exif"."description" ILIKE '%string to match%'; -- search by string
SELECT "asset".*, "asset_exif"."description" FROM "asset_exif"
JOIN "asset" ON "asset"."id" = "asset_exif"."assetId"
WHERE TRIM("asset_exif"."description") <> ''; -- all files with a description
SELECT "asset".*, "asset_exif"."description" FROM "asset_exif"
JOIN "asset" ON "asset"."id" = "asset_exif"."assetId"
WHERE "asset_exif"."description" ILIKE '%string to match%'; -- search by string
```
```sql title="Without metadata"
SELECT "assets".* FROM "exif"
LEFT JOIN "assets" ON "assets"."id" = "exif"."assetId"
WHERE "exif"."assetId" IS NULL;
SELECT "asset".* FROM "asset_exif"
LEFT JOIN "asset" ON "asset"."id" = "asset_exif"."assetId"
WHERE "asset_exif"."assetId" IS NULL;
```
```sql title="size < 100,000 bytes, smallest to largest"
SELECT * FROM "assets"
JOIN "exif" ON "assets"."id" = "exif"."assetId"
WHERE "exif"."fileSizeInByte" < 100000
ORDER BY "exif"."fileSizeInByte" ASC;
SELECT * FROM "asset"
JOIN "asset_exif" ON "asset"."id" = "asset_exif"."assetId"
WHERE "asset_exif"."fileSizeInByte" < 100000
ORDER BY "asset_exif"."fileSizeInByte" ASC;
```
```sql title="Without thumbnails"
SELECT * FROM "assets" WHERE "assets"."previewPath" IS NULL OR "assets"."thumbnailPath" IS NULL;
```
### Type
```sql title="By type"
SELECT * FROM "assets" WHERE "assets"."type" = 'VIDEO';
SELECT * FROM "assets" WHERE "assets"."type" = 'IMAGE';
SELECT * FROM "asset" WHERE "asset"."type" = 'VIDEO';
SELECT * FROM "asset" WHERE "asset"."type" = 'IMAGE';
```
```sql title="Count by type"
SELECT "assets"."type", COUNT(*) FROM "assets" GROUP BY "assets"."type";
SELECT "asset"."type", COUNT(*) FROM "asset" GROUP BY "asset"."type";
```
```sql title="Count by type (per user)"
SELECT "users"."email", "assets"."type", COUNT(*) FROM "assets"
JOIN "users" ON "assets"."ownerId" = "users"."id"
GROUP BY "assets"."type", "users"."email" ORDER BY "users"."email";
SELECT "user"."email", "asset"."type", COUNT(*) FROM "asset"
JOIN "user" ON "asset"."ownerId" = "user"."id"
GROUP BY "asset"."type", "user"."email" ORDER BY "user"."email";
```
```sql title="Failed file movements"
SELECT * FROM "move_history";
## Tags
```sql title="Count by tag"
SELECT "t"."value" AS "tag_name", COUNT(*) AS "number_assets" FROM "tag" "t"
JOIN "tag_asset" "ta" ON "t"."id" = "ta"."tagsId" JOIN "asset" "a" ON "ta"."assetsId" = "a"."id"
WHERE "a"."visibility" != 'hidden'
GROUP BY "t"."value" ORDER BY "number_assets" DESC;
```
```sql title="Count by tag (per user)"
SELECT "t"."value" AS "tag_name", "u"."email" as "user_email", COUNT(*) AS "number_assets" FROM "tag" "t"
JOIN "tag_asset" "ta" ON "t"."id" = "ta"."tagsId" JOIN "asset" "a" ON "ta"."assetsId" = "a"."id" JOIN "user" "u" ON "a"."ownerId" = "u"."id"
WHERE "a"."visibility" != 'hidden'
GROUP BY "t"."value", "u"."email" ORDER BY "number_assets" DESC;
```
## Users
```sql title="List all users"
SELECT * FROM "users";
SELECT * FROM "user";
```
```sql title="Get owner info from asset ID"
SELECT "users".* FROM "users" JOIN "assets" ON "users"."id" = "assets"."ownerId" WHERE "assets"."id" = 'fa310b01-2f26-4b7a-9042-d578226e021f';
SELECT "user".* FROM "user" JOIN "asset" ON "user"."id" = "asset"."ownerId" WHERE "asset"."id" = 'fa310b01-2f26-4b7a-9042-d578226e021f';
```
## System Config
```sql title="Custom settings"
SELECT "key", "value" FROM "system_metadata" WHERE "key" = 'system-config';
```
(Only used when not using the [config file](/docs/install/config-file))
## Persons
```sql title="Delete person and unset it for the faces it was associated with"
DELETE FROM "person" WHERE "name" = 'PersonNameHere';
```
## System
### Config
```sql title="Custom settings"
SELECT "key", "value" FROM "system_metadata" WHERE "key" = 'system-config';
```
(Only used when not using the [config file](/docs/install/config-file))
### File properties
```sql title="Without thumbnails"
SELECT * FROM "asset" WHERE "asset"."previewPath" IS NULL OR "asset"."thumbnailPath" IS NULL;
```
```sql title="Failed file movements"
SELECT * FROM "move_history";
```
## Postgres internal
```sql title="Change DB_PASSWORD"

View File

@@ -12,7 +12,7 @@ If you want Immich to be able to delete the images in the external library or ad
```diff
immich-server:
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- ${UPLOAD_LOCATION}:/data
+ - /home/user/photos1:/home/user/photos1:ro
+ - /mnt/photos2:/mnt/photos2:ro # you can delete this line if you only have one mount point, or you can add more lines if you have more than two
```

View File

@@ -29,29 +29,26 @@ These environment variables are used by the `docker-compose.yml` file and do **N
## General
| Variable | Description | Default | Containers | Workers |
| :---------------------------------- | :---------------------------------------------------------------------------------------- | :---------------------------------: | :----------------------- | :----------------- |
| `TZ` | Timezone | <sup>\*1</sup> | server | microservices |
| `IMMICH_ENV` | Environment (production, development) | `production` | server, machine learning | api, microservices |
| `IMMICH_LOG_LEVEL` | Log level (verbose, debug, log, warn, error) | `log` | server, machine learning | api, microservices |
| `IMMICH_MEDIA_LOCATION` | Media location inside the container ⚠️**You probably shouldn't set this**<sup>\*2</sup>⚠️ | `/usr/src/app/upload`<sup>\*3</sup> | server | api, microservices |
| `IMMICH_CONFIG_FILE` | Path to config file | | server | api, microservices |
| `NO_COLOR` | Set to `true` to disable color-coded log output | `false` | server, machine learning | |
| `CPU_CORES` | Number of cores available to the Immich server | auto-detected CPU core count | server | |
| `IMMICH_API_METRICS_PORT` | Port for the OTEL metrics | `8081` | server | api |
| `IMMICH_MICROSERVICES_METRICS_PORT` | Port for the OTEL metrics | `8082` | server | microservices |
| `IMMICH_PROCESS_INVALID_IMAGES` | When `true`, generate thumbnails for invalid images | | server | microservices |
| `IMMICH_TRUSTED_PROXIES` | List of comma-separated IPs set as trusted proxies | | server | api |
| `IMMICH_IGNORE_MOUNT_CHECK_ERRORS` | See [System Integrity](/docs/administration/system-integrity) | | server | api, microservices |
| Variable | Description | Default | Containers | Workers |
| :---------------------------------- | :---------------------------------------------------------------------------------------- | :--------------------------: | :----------------------- | :----------------- |
| `TZ` | Timezone | <sup>\*1</sup> | server | microservices |
| `IMMICH_ENV` | Environment (production, development) | `production` | server, machine learning | api, microservices |
| `IMMICH_LOG_LEVEL` | Log level (verbose, debug, log, warn, error) | `log` | server, machine learning | api, microservices |
| `IMMICH_MEDIA_LOCATION` | Media location inside the container ⚠️**You probably shouldn't set this**<sup>\*2</sup>⚠️ | `/data` | server | api, microservices |
| `IMMICH_CONFIG_FILE` | Path to config file | | server | api, microservices |
| `NO_COLOR` | Set to `true` to disable color-coded log output | `false` | server, machine learning | |
| `CPU_CORES` | Number of cores available to the Immich server | auto-detected CPU core count | server | |
| `IMMICH_API_METRICS_PORT` | Port for the OTEL metrics | `8081` | server | api |
| `IMMICH_MICROSERVICES_METRICS_PORT` | Port for the OTEL metrics | `8082` | server | microservices |
| `IMMICH_PROCESS_INVALID_IMAGES` | When `true`, generate thumbnails for invalid images | | server | microservices |
| `IMMICH_TRUSTED_PROXIES` | List of comma-separated IPs set as trusted proxies | | server | api |
| `IMMICH_IGNORE_MOUNT_CHECK_ERRORS` | See [System Integrity](/docs/administration/system-integrity) | | server | api, microservices |
\*1: `TZ` should be set to a `TZ identifier` from [this list][tz-list]. For example, `TZ="Etc/UTC"`.
`TZ` is used by `exiftool` as a fallback in case the timezone cannot be determined from the image metadata. It is also used for logfile timestamps and cron job execution.
\*2: This path is where the Immich code looks for the files, which is internal to the docker container. Setting it to a path on your host will certainly break things, you should use the `UPLOAD_LOCATION` variable instead.
\*3: With the default `WORKDIR` of `/usr/src/app`, this path will resolve to `/usr/src/app/upload`.
It only needs to be set if the Immich deployment method is changing.
## Workers
| Variable | Description | Default | Containers |
@@ -202,12 +199,11 @@ Additional machine learning parameters can be tuned from the admin UI.
| `IMMICH_TELEMETRY_INCLUDE` | Collect these telemetries. List of `host`, `api`, `io`, `repo`, `job`. Note: You can also specify `all` to enable all | | server | api, microservices |
| `IMMICH_TELEMETRY_EXCLUDE` | Do not collect these telemetries. List of `host`, `api`, `io`, `repo`, `job` | | server | api, microservices |
## Docker Secrets
## Secrets
The following variables support the use of [Docker secrets][docker-secrets] for additional security.
The following variables support reading from files, either via [Systemd Credentials][systemd-creds] or [Docker secrets][docker-secrets] for additional security.
To use any of these, replace the regular environment variable with the equivalent `_FILE` environment variable. The value of
the `_FILE` variable should be set to the path of a file containing the variable value.
To use any of these, either set `CREDENTIALS_DIRECTORY` to a directory that contains files whose name is the regular variable” name, and whose content is the secret. If using Docker Secrets, setting `CREDENTIALS_DIRECTORY=/run/secrets` will cause all secrets present to be used. Alternatively, replace the regular variable with the equivalent `_FILE` environment variable as below. The value of the `_FILE` variable should be set to the path of a file containing the variable value.
| Regular Variable | Equivalent Docker Secrets '\_FILE' Variable |
| :----------------- | :------------------------------------------ |
@@ -229,3 +225,4 @@ to use a Docker secret for the password in the Redis container.
[docker-secrets-docs]: https://github.com/docker-library/docs/tree/master/postgres#docker-secrets
[docker-secrets]: https://docs.docker.com/engine/swarm/secrets/
[ioredis]: https://ioredis.readthedocs.io/en/latest/README/#connect-to-redis
[systemd-creds]: https://systemd.io/CREDENTIALS/

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

@@ -2,6 +2,9 @@
sidebar_position: 80
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# TrueNAS [Community]
:::note
@@ -9,211 +12,324 @@ This is a community contribution and not officially supported by the Immich team
Community support can be found in the dedicated channel on the [Discord Server](https://discord.immich.app/).
**Please report app issues to the corresponding [Github Repository](https://github.com/truenas/apps/tree/master/trains/community/immich).**
**Please report app issues to the corresponding [GitHub Repository](https://github.com/truenas/apps/tree/master/trains/community/immich).**
:::
:::warning
This guide covers the installation of Immich on TrueNAS Community Edition 24.10.2.2 (Electric Eel) and later.
We recommend keeping TrueNAS Community Edition and Immich relatively up to date with the latest versions to avoid any issues.
If you are using an older version of TrueNAS, we ask that you upgrade to the latest version before installing Immich. Check the [TrueNAS Community Edition Release Notes](https://www.truenas.com/docs/softwarereleases/) for more information on breaking changes, new features, and how to upgrade your system.
:::
Immich can easily be installed on TrueNAS Community Edition via the **Community** train application.
Consider reviewing the TrueNAS [Apps resources](https://apps.truenas.com/getting-started/) if you have not previously configured applications on your system.
TrueNAS Community Edition makes installing and updating Immich easy, but you must use the Immich web portal and mobile app to configure accounts and access libraries.
## First Steps
The Immich app in TrueNAS Community Edition installs, completes the initial configuration, then starts the Immich web portal.
When updates become available, TrueNAS alerts and provides easy updates.
Before installing the Immich app in TrueNAS, review the [Environment Variables](#environment-variables) documentation to see if you want to configure any during installation.
You may also configure environment variables at any time after deploying the application.
### Setting up Storage Datasets
Before beginning app installation, [create the datasets](https://www.truenas.com/docs/scale/scaletutorials/storage/datasets/datasetsscale/) to use in the **Storage Configuration** section during installation.
Immich requires seven datasets: `library`, `upload`, `thumbs`, `profile`, `video`, `backups`, and `pgData`.
You can organize these as one parent with seven child datasets, for example `/mnt/tank/immich/library`, `/mnt/tank/immich/upload`, and so on.
In TrueNAS, Immich requires 2 datasets for the application to function correctly: `data` and `pgData`. You can set the datasets to any names to match your naming conventions or preferences.
You can organize these as one parent with two child datasets, for example `/mnt/tank/immich/data` and `/mnt/tank/immich/pgData`.
<img
src={require('./img/truenas12.webp').default}
width="30%"
src={require('./img/truenas/truenas00.webp').default}
width="40%"
alt="Immich App Widget"
className="border rounded-xl"
/>
:::info Permissions
The **pgData** dataset must be owned by the user `netdata` (UID 999) for postgres to start. The other datasets must be owned by the user `root` (UID 0) or a group that includes the user `root` (UID 0) for immich to have the necessary permissions.
:::info Datasets Permissions
If the **library** dataset uses ACL it must have [ACL mode](https://www.truenas.com/docs/core/coretutorials/storage/pools/permissions/#access-control-lists) set to `Passthrough` if you plan on using a [storage template](/docs/administration/storage-template.mdx) and the dataset is configured for network sharing (its ACL type is set to `SMB/NFSv4`). When the template is applied and files need to be moved from **upload** to **library**, Immich performs `chmod` internally and needs to be allowed to execute the command. [More info.](https://github.com/immich-app/immich/pull/13017)
The **pgData** dataset must be owned by the user `netdata` (UID 999) for Postgres to start.
The `data` dataset must have given the **_modify_** permission to the user who will run Immich.
Since TrueNAS Community Edition 24.10.2.2 and later, Immich can be run as any user and group, the default user being `apps` (UID 568) and the default group being `apps` (GID 568). This user, either `apps` or another user you choose, must have **_modify_** permissions on the **data** dataset.
For an easy setup:
- Create the parent dataset `immich` keeping the default **Generic** preset.
- Select `Dataset Preset` **Apps** instead of **Generic** when creating the `data` dataset. This will automatically give the correct permissions to the dataset. If you want to use another user for Immich, you can keep the **Generic** preset, but you will need to give the **_modify_** permission to that other user.
- For the `pgData` dataset, you can keep the default preset **Generic** as permissions can be set during the installation of the Immich app (See [Storage Configuration](#storage-configuration) section).
:::
:::tip
To improve performance, Immich recommends using SSDs for the database. If you have a pool made of SSDs, you can create the `pgData` dataset on that pool.
Thumbnails can also be stored on the SSDs for faster access. This is an advanced option and not required for Immich to run. More information on how you can use multiple datasets to manage Immich storage in a finer-grained manner can be found in the [Advanced: Multiple Datasets for Immich Storage](#advanced-multiple-datasets-for-immich-storage) section below.
:::
:::warning
If you just created the datasets using the **Apps** preset, you can skip this warning section.
If the **data** dataset uses ACL it must have [ACL mode](https://www.truenas.com/docs/scale/scaletutorials/datasets/permissionsscale/) set to `Passthrough` if you plan on using a [storage template](/docs/administration/storage-template.mdx) and the dataset is configured for network sharing (its ACL type is set to `SMB/NFSv4`). When the template is applied and files need to be moved from **upload** to **library** (internal folder created by Immich within the **data** dataset), Immich performs `chmod` internally and must be allowed to execute the command. [More info.](https://github.com/immich-app/immich/pull/13017)
To change or verify the ACL mode, go to the **Datasets** screen, select the **library** dataset, click on the **Edit** button next to **Dataset Details**, then click on the **Advanced Options** tab, scroll down to the **ACL Mode** section, and select `Passthrough` from the dropdown menu. Click **Save** to apply the changes. If the option is greyed out, set the **ACL Type** to `SMB/NFSv4` first, then you can change the **ACL Mode** to `Passthrough`.
:::
## Installing the Immich Application
To install the **Immich** application, go to **Apps**, click **Discover Apps**, either begin typing Immich into the search field or scroll down to locate the **Immich** application widget.
To install the **Immich** application, go to **Apps**, click **Discover Apps**, and either begin typing Immich into the search field or scroll down to locate the **Immich** application widget.
<div style={{ marginBottom: '2rem', border: '1px solid #ccc', padding: '1rem', borderRadius: '8px' }}>
Click on the widget to open the **Immich** application details screen.
<img
src={require('./img/truenas01.webp').default}
src={require('./img/truenas/truenas01.webp').default}
width="50%"
alt="Immich App Widget"
className="border rounded-xl"
/>
Click on the widget to open the **Immich** application details screen.
</div>
<br/><br/>
<div style={{ marginBottom: '2rem', border: '1px solid #ccc', padding: '1rem', borderRadius: '8px' }}>
Click **Install** to open the Immich application configuration screen.
<img
src={require('./img/truenas02.webp').default}
src={require('./img/truenas/truenas02.webp').default}
width="100%"
alt="Immich App Details Screen"
className="border rounded-xl"
/>
Click **Install** to open the Immich application configuration screen.
<br/><br/>
</div>
Application configuration settings are presented in several sections, each explained below.
To find specific fields click in the **Search Input Fields** search field, scroll down to a particular section or click on the section heading on the navigation area in the upper-right corner.
To find specific fields, click in the **Search Input Fields** search field, scroll down to a particular section, or click on the section heading on the navigation area in the upper-right corner.
### Application Name and Version
<img
src={require('./img/truenas03.webp').default}
src={require('./img/truenas/truenas03.webp').default}
width="100%"
alt="Install Immich Screen"
className="border rounded-xl"
className="border rounded-xl mb-4"
/>
Accept the default value or enter a name in **Application Name** field.
In most cases use the default name, but if adding a second deployment of the application you must change this name.
Keep the default value or enter a name in the **Application Name** field.
Change it if youre deploying a second instance.
Accept the default version number in **Version**.
When a new version becomes available, the application has an update badge.
The **Installed Applications** screen shows the option to update applications.
Immich version within TrueNAS catalog (Different from Immich release version).
### Immich Configuration
<img
src={require('./img/truenas05.webp').default}
src={require('./img/truenas/truenas04.webp').default}
width="40%"
alt="Configuration Settings"
className="border rounded-xl mb-4"
/>
The **Timezone** is set to the system default, which usually matches your local timezone. You can change it to another timezone if you prefer.
**Enable Machine Learning** is enabled by default. It allows Immich to use machine learning features such as face recognition, image search, and smart duplicate detection. Untick this option if you do not want to use these features.
Select the **Machine Learning Image Type** based on the hardware you have. More details here: [Hardware-Accelerated Machine Learning](/docs/features/ml-hardware-acceleration.md)
**Database Password** should be set to a custom value using only the characters `A-Za-z0-9`. This password is used to secure the Postgres database.
**Redis Password** should be set to a custom value using only the characters `A-Za-z0-9`. Preferably, use a different password from the database password.
Keep the **Log Level** to the default `Log` value.
Leave **Hugging Face Endpoint** blank. (This is used to download ML models from a different source.)
Set **Database Storage Type** to the type of storage (**HDD** or **SSD**) that the pool where the **pgData** dataset is located uses.
**Additional Environment Variables** can be left blank.
<details>
<summary>Advanced users: Adding Environment Variables</summary>
Environment variables can be set by clicking the **Add** button and filling in the **Name** and **Value** fields.
<img
src={require('./img/truenas/truenas05.webp').default}
width="40%"
alt="Environment Variables"
className="border rounded-xl"
/>
Accept the default value in **Timezone** or change to match your local timezone.
**Timezone** is only used by the Immich `exiftool` microservice if it cannot be determined from the image metadata.
These are used to add custom configuration options or to enable specific features.
More information on available environment variables can be found in the **[environment variables documentation](/docs/install/environment-variables/)**.
Untick **Enable Machine Learning** if you will not use face recognition, image search, and smart duplicate detection.
:::info
Some environment variables are not available for the TrueNAS Community Edition app as they can be configured through GUI options in the [Edit Immich screen](#edit-app-settings).
Accept the default option or select the **Machine Learning Image Type** for your hardware based on the [Hardware-Accelerated Machine Learning Supported Backends](/docs/features/ml-hardware-acceleration.md#supported-backends).
Some examples are: `IMMICH_VERSION`, `UPLOAD_LOCATION`, `DB_DATA_LOCATION`, `TZ`, `IMMICH_LOG_LEVEL`, `DB_PASSWORD`, `REDIS_PASSWORD`.
:::
Immich's default is `postgres` but you should consider setting the **Database Password** to a custom value using only the characters `A-Za-z0-9`.
</details>
The **Redis Password** should be set to a custom value using only the characters `A-Za-z0-9`.
### User and Group Configuration
Accept the **Log Level** default of **Log**.
Application in TrueNAS runs as a specific user and group. Immich uses the default user `apps` (UID 568) and the default group `apps` (GID 568).
Leave **Hugging Face Endpoint** blank. (This is for downloading ML models from a different source.)
<img
src={require('./img/truenas/truenas06.webp').default}
width="40%"
alt="User and Group Configuration"
className="border rounded-xl"
/>
Leave **Additional Environment Variables** blank or see [Environment Variables](#environment-variables) to set before installing.
- **User ID**: Keep the default value `apps` (UID 568) or define a different one if needed.
- **Group ID**: Keep the default value `apps` (GID 568) or define a different one if needed.
:::warning
If you change the user or group, make sure that the datasets you created for Immich data storage have the correct permissions set for that user and group as specified in the [Setting up Storage Datasets](#setting-up-storage-datasets) section above.
:::
### Network Configuration
<img
src={require('./img/truenas06.webp').default}
src={require('./img/truenas/truenas07.webp').default}
width="40%"
alt="Networking Settings"
className="border rounded-xl"
/>
Accept the default port `30041` in **WebUI Port** or enter a custom port number.
:::info Allowed Port Numbers
Only numbers within the range 9000-65535 may be used on TrueNAS versions below TrueNAS Community Edition 24.10 Electric Eel.
- **Port Bind Mode**: This lets you expose the port to the host system, allowing you to access Immich from outside the TrueNAS system. Keep the default **_Publish port on the host for external access_** value unless you have a specific reason to change it.
Regardless of version, to avoid port conflicts, don't use [ports on this list](https://www.truenas.com/docs/solutions/optimizations/security/#truenas-default-ports).
:::
- **Port Number**: Keep the default port `30041` or enter a custom port number.
- **Host IPs**: Leave the default blank value.
### Storage Configuration
Immich requires seven storage datasets.
<img
src={require('./img/truenas07.webp').default}
width="20%"
alt="Configure Storage ixVolumes"
className="border rounded-xl"
/>
:::note Default Setting (Not recommended)
The default setting for datasets is **ixVolume (dataset created automatically by the system)** but this results in your data being harder to access manually and can result in data loss if you delete the immich app. (Not recommended)
:::danger Default Settings (Not recommended)
The default setting for datasets is **ixVolume (dataset created automatically by the system)**. This is not recommended as this results in your data being harder to access manually and can result in data loss if you delete the immich app. It is also harder to manage snapshots and replication tasks. It is recommended to use the **Host Path (Path that already exists on the system)** option instead.
:::
For each Storage option select **Host Path (Path that already exists on the system)** and then select the matching dataset [created before installing the app](#setting-up-storage-datasets): **Immich Library Storage**: `library`, **Immich Uploads Storage**: `upload`, **Immich Thumbs Storage**: `thumbs`, **Immich Profile Storage**: `profile`, **Immich Video Storage**: `video`, **Immich Backups Storage**: `backups`, **Postgres Data Storage**: `pgData`.
The storage configuration section allows you to set up the storage locations for Immich data. You can select the datasets created in the previous step.
<img
src={require('./img/truenas08.webp').default}
src={require('./img/truenas/truenas08.webp').default}
width="40%"
alt="Configure Storage Host Paths"
alt="Configure Storage Volumes"
className="border rounded-xl"
/>
The image above has example values.
<br/>
For the Data Storage, select **Host Path (Path that already exists on the system)** and then select the dataset you created for Immich data storage, for example, `data`.
### Additional Storage [(External Libraries)](/docs/features/libraries)
The Machine Learning cache can be left with default _Temporary_
For the Postgres Data Storage, select **Host Path (Path that already exists on the system)** and then select the dataset you created for Postgres data storage, for example, `pgData`.
:::info
**Postgres Data Storage**
Once **Host Path** is selected, a checkbox appears with **_Automatic Permissions_**. If you have not set the ownership of the **pgData** dataset to `netdata` (UID 999), tick this box as it will set the user ownership to `netdata` (UID 999) and the group ownership to `docker` (GID 999) automatically. If you have set the ownership of the **pgData** dataset to `netdata` (UID 999), you can leave this box unticked.
:::
### Additional Storage (Advanced Users)
<details>
<summary>External Libraries</summary>
:::danger Advanced Users Only
This feature should only be used by advanced users. If this is your first time installing Immich, then DO NOT mount an external library until you have a working setup. Also, your mount path MUST be something unique and should NOT be your library or upload location or a Linux directory like `/lib`. The picture below shows a valid example.
This feature should only be used by advanced users. If this is your first time installing Immich, then DO NOT mount an external library until you have a working setup.
:::
<img
src={require('./img/truenas10.webp').default}
src={require('./img/truenas/truenas09.webp').default}
width="40%"
alt="Configure Storage Host Paths"
alt="Add External Libraries with Additional Storage"
className="border rounded-xl"
/>
You may configure [External Libraries](/docs/features/libraries) by mounting them using **Additional Storage**.
The **Mount Path** is the location you will need to copy and paste into the External Library settings within Immich.
The **Host Path** is the location on the TrueNAS Community Edition server where your external library is located.
You may configure [external libraries](/docs/features/libraries) by mounting them using **Additional Storage**.
<!-- A section for Labels would go here but I don't know what they do. -->
The dataset that contains your external library files must at least give **read** access to the user running Immich (Default: `apps` (UID 568), `apps` (GID 568)).
If you want to be able to delete files or edit metadata in the external library using Immich, you will need to give the **modify** permission to the user running Immich.
- **Mount Path** is the location you will need to copy and paste into the external library settings within Immich.
- **Host Path** is the location on the TrueNAS Community Edition server where your external library is located.
- **Read Only** is a checkbox that you can tick if you want to prevent Immich from modifying the files in the external library. This is useful if you want to use Immich to view and search your external library without modifying it.
:::warning
Each mount path MUST be something unique and should NOT be your library or upload location or a Linux directory like `/lib`.
A general recommendation is to mount any external libraries to a path beginning with `/mnt` or `/media` followed by a unique name, such as `/mnt/external-libraries` or `/media/my-external-libraries`. If you plan to mount multiple external libraries, you can use paths like `/mnt/external-libraries/library1`, `/mnt/external-libraries/library2`, etc.
:::
</details>
<details>
<summary>Multiple Datasets for Immich Storage</summary>
:::danger Advanced Users Only
This feature should only be used by advanced users.
:::
Immich can use multiple datasets for its storage, allowing you to manage your data more granularly, similar to the old storage configuration. This is useful if you want to separate your data into different datasets for performance or organizational reasons. There is a general guide for this [here](/docs/guides/custom-locations), but read on for the TrueNAS guide.
Each additional dataset has to give the permission **_modify_** to the user who will run Immich (Default: `apps` (UID 568), `apps` (GID 568))
As described in the [Setting up Storage Datasets](#setting-up-storage-datasets) section above, you have to create the datasets with the **Apps** preset to ensure the correct permissions are set, or you can set the permissions manually after creating the datasets.
Immich uses 6 folders for its storage: `library`, `upload`, `thumbs`, `profile`, `encoded-video`, and `backups`. You can create a dataset for each of these folders or only for some of them.
To mount these datasets:
1. Add an **Additional Storage** entry for each dataset you want to use.
2. Select **Type** as **Host Path (Path that already exists on the system)**.
3. Enter the **Mount Path** with `/data/<folder-name>`. The `<folder-name>` is the name of the folder you want to mount, for example, `library`, `upload`, `thumbs`, `profile`, `encoded-video`, or `backups`.
:::danger Important
You have to write the full path, including `/data/`, as Immich expects the data to be in that location.
If you do not include this path, Immich will not be able to find the data and will not write the data to the location you specified.
:::
4. Select the **Host Path** as the dataset you created for that folder, for example, `/mnt/tank/immich/library`, `/mnt/tank/immich/upload`, etc.
<img
src={require('./img/truenas/truenas10.webp').default}
width="40%"
alt="Use Multiple Datasets for Immich Storage with Additional Storage"
className="border rounded-xl"
/>
</details>
<!-- A section for Labels could be added, but I don't think it is needed as they are of no use for Immich. -->
### Resources Configuration
<img
src={require('./img/truenas09.webp').default}
src={require('./img/truenas/truenas11.webp').default}
width="40%"
alt="Resource Limits"
className="border rounded-xl"
/>
Accept the default **CPU** limit of `2` threads or specify the number of threads (CPUs with Multi-/Hyper-threading have 2 threads per core).
- **CPU**: Depending on your system resources, you can keep the default value of `2` threads or specify a different number. Immich recommends at least `8` threads.
Specify the **Memory** limit in MB of RAM. Immich recommends at least 6000 MB (6GB). If you selected **Enable Machine Learning** in **Immich Configuration**, you should probably set this above 8000 MB.
- **Memory**: Limit in MB of RAM. Immich recommends at least 6000 MB (6GB). If you selected **Enable Machine Learning** in **Immich Configuration**, you should probably set this above 8000 MB.
:::info Older TrueNAS Versions
Before TrueNAS Community Edition version 24.10 Electric Eel:
Both **CPU** and **Memory** are limits, not reservations. This means that Immich can use up to the specified amount of CPU threads and RAM, but it will not reserve that amount of resources at all times. The system will allocate resources as needed, and Immich will use less than the specified amount most of the time.
The **CPU** value was specified in a different format with a default of `4000m` which is 4 threads.
- Enable **GPU Configuration** options if you have a GPU or CPU with integrated graphics that you will use for [Hardware Transcoding](/docs/features/hardware-transcoding) and/or [Hardware-Accelerated Machine Learning](/docs/features/ml-hardware-acceleration.md).
The **Memory** value was specified in a different format with a default of `8Gi` which is 8 GiB of RAM. The value was specified in bytes or a number with a measurement suffix. Examples: `129M`, `123Mi`, `1000000000`
:::
Enable **GPU Configuration** options if you have a GPU that you will use for [Hardware Transcoding](/docs/features/hardware-transcoding) and/or [Hardware-Accelerated Machine Learning](/docs/features/ml-hardware-acceleration.md). More info: [GPU Passthrough Docs for TrueNAS Apps](https://apps.truenas.com/managing-apps/installing-apps/#gpu-passthrough)
The process for NVIDIA GPU passthrough requires additional steps.
More details here: [GPU Passthrough Docs for TrueNAS Apps](https://apps.truenas.com/managing-apps/installing-apps/#gpu-passthrough)
### Install
Finally, click **Install**.
The system opens the **Installed Applications** screen with the Immich app in the **Deploying** state.
When the installation completes it changes to **Running**.
When the installation completes, it changes to **Running**.
<img
src={require('./img/truenas04.webp').default}
src={require('./img/truenas/truenas12.webp').default}
width="100%"
alt="Immich Installed"
className="border rounded-xl"
/>
Click **Web Portal** on the **Application Info** widget to open the Immich web interface to set up your account and begin uploading photos.
Click **Web Portal** on the **Application Info** widget, or go to the URL `http://<your-truenas-ip>:30041` in your web browser to open the Immich web interface. This will show you the onboarding process to set up your first user account, which will be an administrator account.
After that, you can start using Immich to upload and manage your photos and videos.
:::tip
For more information on how to use the application once installed, please refer to the [Post Install](/docs/install/post-install.mdx) guide.
@@ -228,23 +344,6 @@ For more information on how to use the application once installed, please refer
- Click **Update** at the very bottom of the page to save changes.
- TrueNAS automatically updates, recreates, and redeploys the Immich container with the updated settings.
## Environment Variables
You can set [Environment Variables](/docs/install/environment-variables) by clicking **Add** on the **Additional Environment Variables** option and filling in the **Name** and **Value**.
<img
src={require('./img/truenas11.webp').default}
width="40%"
alt="Environment Variables"
className="border rounded-xl"
/>
:::info
Some Environment Variables are not available for the TrueNAS Community Edition app. This is mainly because they can be configured through GUI options in the [Edit Immich screen](#edit-app-settings).
Some examples are: `IMMICH_VERSION`, `UPLOAD_LOCATION`, `DB_DATA_LOCATION`, `TZ`, `IMMICH_LOG_LEVEL`, `DB_PASSWORD`, `REDIS_PASSWORD`.
:::
## Updating the App
:::danger
@@ -261,3 +360,116 @@ To update the app to the latest version:
- You may view the Changelog.
- Click **Upgrade** to begin the process and open a counter dialog that shows the upgrade progress.
- When complete, the update badge and buttons disappear and the application Update state on the Installed screen changes from Update Available to Up to date.
## Migration
:::danger
Perform a backup of your Immich data before proceeding with the migration steps below. This is crucial to prevent any data loss if something goes wrong during the migration process.
The migration should also be performed when the Immich app is not running to ensure no data is being written while you are copying the data.
:::
### Migration from Old Storage Configuration
There are two ways to migrate from the old storage configuration to the new one, depending on whether you want to keep the old multiple datasets or if you want to move to a double dataset configuration with a single dataset for Immich data storage and a single dataset for Postgres data storage.
:::note Old TrueNAS Versions Permissions
If you were using an older version of TrueNAS (before 24.10.2.2), the datasets, except the one for **pgData** had only to be owned by the `root` user (UID 0). You might have to add the **modify** permission to the `apps` user (UID 568) or the user you want to run Immich as, to all of them, except **pgData**. The steps to add or change ACL permissions are described in the [TrueNAS documentation](https://www.truenas.com/docs/scale/scaletutorials/datasets/permissionsscale/).
:::
<Tabs groupId="truenas-migration-tabs">
<TabItem value="migrate-new-dataset" label="Migrate data to a new dataset (recommended)" default>
To migrate from the old storage configuration to the new one, you will need to create a new dataset for the Immich data storage and copy the data from the old datasets to the new ones. The steps are as follows:
1. **Stop the Immich app** from the TrueNAS web interface to ensure no data is being written while you are copying the data.
2. **Create a new dataset** for the Immich data storage, for example, `data`. As described in the [Setting up Storage Datasets](#setting-up-storage-datasets) section above, create the dataset with the **Apps** preset to ensure the correct permissions are set.
3. **Copy the data** from the old datasets to the new dataset. We advise using the `rsync` command to copy the data, as it will preserve the permissions and ownership of the files. The following commands are examples:
```bash
rsync -av /mnt/tank/immich/library/ /mnt/tank/immich/data/library/
rsync -av /mnt/tank/immich/upload/ /mnt/tank/immich/data/upload/
rsync -av /mnt/tank/immich/thumbs/ /mnt/tank/immich/data/thumbs/
rsync -av /mnt/tank/immich/profile/ /mnt/tank/immich/data/profile/
rsync -av /mnt/tank/immich/video/ /mnt/tank/immich/data/encoded-video/
rsync -av /mnt/tank/immich/backups/ /mnt/tank/immich/data/backups/
```
Make sure to replace `/mnt/tank/immich/` with the correct path to your old datasets and `/mnt/tank/immich/data/` with the correct path to your new dataset.
:::tip
If you were using **ixVolume (dataset created automatically by the system)** for Immich data storage, the path to the data should be `/mnt/.ix-apps/app_mounts/immich/`. You have to use this path instead of `/mnt/tank/immich/` in the `rsync` command above, for example:
```bash
rsync -av /mnt/.ix-apps/app_mounts/immich/library/ /mnt/tank/immich/data/library/
```
If you were also using an ixVolume for Postgres data storage, you also should, first create the pgData dataset, as described in the [Setting up Storage Datasets](#setting-up-storage-datasets) section above, and then you can use the following command to copy the Postgres data:
```bash
rsync -av /mnt/.ix-apps/app_mounts/immich/pgData/ /mnt/tank/immich/pgData/
```
:::
:::warning
Make sure that for each folder, the `.immich` file is copied as well, as it contains important metadata for Immich. If for some reason the `.immich` file is not copied, you can copy it manually with the `rsync` command, for example:
```bash
rsync -av /mnt/tank/immich/library/.immich /mnt/tank/immich/data/library/
```
Replace `library` with the name of the folder where you are copying the file.
:::
4. **Update the permissions** as the permissions of the data that have been copied has been preserved, to ensure that the `apps` user (UID 568) has the correct permissions on all the copied data. If you just created the dataset with the **Apps** preset, from the TrueNAS web interface, go to the **Datasets** screen, select the **data** dataset, click on the **Edit** button next to **Permissions**, tick the "Apply permissions recursively" checkbox, and click **Save**. This will apply the correct permissions to all the copied data.
5. **Update the Immich app** to use the new dataset:
- Go to the **Installed Applications** screen and select Immich from the list of installed applications.
- Click **Edit** on the **Application Info** widget.
- In the **Storage Configuration** section, untick the **Use Old Storage Configuration (Deprecated)** checkbox.
- For the **Data Storage**, select **Host Path (Path that already exists on the system)** and then select the new dataset you created for Immich data storage, for example, `data`.
- For the **Postgres Data Storage**, verify that it is still set to the dataset you created for Postgres data storage, for example, `pgData`.
- Click **Update** at the bottom of the page to save changes.
6. **Start the Immich app** from the TrueNAS web interface.
This will recreate the Immich container with the new storage configuration and start the app.
If everything went well, you should now be able to access Immich with the new storage configuration. You can verify that the data has been copied correctly by checking the Immich web interface and ensuring that all your photos and videos are still available. You may delete the old datasets, if you no longer need them, using the TrueNAS web interface.
If you were using **ixVolume (dataset created automatically by the system)** or folders for Immich data storage, you can delete the old datasets using the following commands:
```bash
rm -r /mnt/.ix-apps/app_mounts/immich/library
rm -r /mnt/.ix-apps/app_mounts/immich/uploads
rm -r /mnt/.ix-apps/app_mounts/immich/thumbs
rm -r /mnt/.ix-apps/app_mounts/immich/profile
rm -r /mnt/.ix-apps/app_mounts/immich/video
rm -r /mnt/.ix-apps/app_mounts/immich/backups
```
</TabItem>
<TabItem value="migrate-old-dataset" label="Keep the existing datasets">
To migrate from the old storage configuration to the new one without creating new datasets.
1. **Stop the Immich app** from the TrueNAS web interface to ensure no data is being written while you are updating the app.
2. **Update the datasets permissions**: Ensure that the datasets used for Immich data storage (`library`, `upload`, `thumbs`, `profile`, `video`, `backups`) have the correct permissions set for the user who will run Immich. The user should have ***modify*** permissions on these datasets. The default user for Immich is `apps` (UID 568) and the default group is `apps` (GID 568). If you are using a different user, make sure to set the permissions accordingly. You can do this from the TrueNAS web interface by going to the **Datasets** screen, selecting each dataset, clicking on the **Edit** button next to **Permissions**, and adding the user with ***modify*** permissions.
3. **Update the Immich app** to use the existing datasets:
- Go to the **Installed Applications** screen and select Immich from the list of installed applications.
- Click **Edit** on the **Application Info** widget.
- In the **Storage Configuration** section, untick the **Use Old Storage Configuration (Deprecated)** checkbox.
- For the **Data Storage**, you can keep the **ixVolume (dataset created automatically by the system)** as no data will be directly written to it. We recommend selecting **Host Path (Path that already exists on the system)** and then select a **new** dataset you created for Immich data storage, for example, `data`.
- For the **Postgres Data Storage**, keep **Host Path (Path that already exists on the system)** and then select the existing dataset you used for Postgres data storage, for example, `pgData`.
- Following the instructions in the [Multiple Datasets for Immich Storage](#additional-storage-advanced-users) section, you can add, **for each old dataset**, a new Additional Storage with the following settings:
- **Type**: `Host Path (Path that already exists on the system)`
- **Mount Path**: `/data/<folder-name>` (e.g. `/data/library`)
- **Host Path**: `/mnt/<your-pool-name>/<dataset-name>` (e.g. `/mnt/tank/immich/library`)
:::danger Ensure using the correct paths names
Make sure to replace `<folder-name>` with the actual name of the folder used by Immich: `library`, `upload`, `thumbs`, `profile`, `encoded-video`, and `backups`. Also, replace `<your-pool-name>` and `<dataset-name>` with the actual names of your pool and dataset.
:::
- **Read Only**: Keep it unticked as Immich needs to write to these datasets.
- Click **Update** at the bottom of the page to save changes.
4. **Start the Immich app** from the TrueNAS web interface. This will recreate the Immich container with the new storage configuration and start the app. If everything went well, you should now be able to access Immich with the new storage configuration. You can verify that the data is still available by checking the Immich web interface and ensuring that all your photos and videos are still accessible.
</TabItem>
</Tabs>

View File

@@ -27,3 +27,102 @@ docker image prune
[watchtower]: https://containrrr.dev/watchtower/
[breaking]: https://github.com/immich-app/immich/discussions?discussions_q=label%3Achangelog%3Abreaking-change+sort%3Adate_created
[releases]: https://github.com/immich-app/immich/releases
## Migrating to VectorChord
:::info
If you deploy Immich using Docker Compose, see `ghcr.io/immich-app/postgres` in the `docker-compose.yml` file and have not explicitly set the `DB_VECTOR_EXTENSION` environmental variable, your Immich database is already using VectorChord and this section does not apply to you.
:::
:::important
If you do not deploy Immich using Docker Compose and see a deprecation warning for pgvecto.rs on server startup, you should refer to the maintainers of the Immich distribution for guidance (if using a turnkey solution) or adapt the instructions for your specific setup.
:::
Immich has migrated off of the deprecated pgvecto.rs database extension to its successor, [VectorChord](https://github.com/tensorchord/VectorChord), which comes with performance improvements in almost every aspect. This section will guide you on how to make this change in a Docker Compose setup.
Before making any changes, please [back up your database](/docs/administration/backup-and-restore). While every effort has been made to make this migration as smooth as possible, theres always a chance that something can go wrong.
After making a backup, please modify your `docker-compose.yml` file with the following information.
```diff
[...]
database:
container_name: immich_postgres
- image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52
+ image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
+ # Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs
+ # DB_STORAGE_TYPE: 'HDD'
volumes:
# Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
- healthcheck:
- test: >-
- pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
- Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
- --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
- echo "checksum failure count is $$Chksum";
- [ "$$Chksum" = '0' ] || exit 1
- interval: 5m
- start_interval: 30s
- start_period: 5m
- command: >-
- postgres
- -c shared_preload_libraries=vectors.so
- -c 'search_path="$$user", public, vectors'
- -c logging_collector=on
- -c max_wal_size=2GB
- -c shared_buffers=512MB
- -c wal_compression=on
+ shm_size: 128mb
restart: always
[...]
```
:::important
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.
:::danger
After switching to VectorChord, you should not downgrade Immich below 1.133.0.
:::
Please dont hesitate to contact us on [GitHub](https://github.com/immich-app/immich/discussions) or [Discord](https://discord.immich.app/) if you encounter migration issues.
### VectorChord FAQ
#### I have a separate PostgreSQL instance shared with multiple services. How can I switch to VectorChord?
Please see the [standalone PostgreSQL documentation](/docs/administration/postgres-standalone#migrating-to-vectorchord) for migration instructions. The migration path will be different depending on whether youre currently using pgvecto.rs or pgvector, as well as whether Immich has superuser DB permissions.
#### Why are so many lines removed from the `docker-compose.yml` file? Does this mean the health check is removed?
These lines are now incorporated into the image itself along with some additional tuning.
#### What does this change mean for my existing DB backups?
The new DB image includes pgvector and pgvecto.rs in addition to VectorChord, so you can use this image to restore from existing backups that used either of these extensions. However, backups made after switching to VectorChord require an image containing VectorChord to restore successfully.
#### Do I still need pgvecto.rs installed after migrating to VectorChord?
pgvecto.rs only needs to be available during the migration, or if you need to restore from a backup that used pgvecto.rs. For a leaner DB and a smaller image, you can optionally switch to an image variant that doesnt have pgvecto.rs installed after youve performed the migration and started Immich: `ghcr.io/immich-app/postgres:14-vectorchord0.4.3`, changing the PostgreSQL version as appropriate.
#### Why does it matter whether my database is on an SSD or an HDD?
These storage mediums have different performance characteristics. As a result, the optimal settings for an SSD are not the same as those for an HDD. Either configuration is compatible with SSD and HDD, but using the right configuration will make Immich snappier. As a general tip, we recommend users store the database on an SSD whenever possible.
#### Can I use the new database image as a general PostgreSQL image outside of Immich?
Its a standard PostgreSQL container image that additionally contains the VectorChord, pgvector, and (optionally) pgvecto.rs extensions. If you were using the previous pgvecto.rs image for other purposes, you can similarly do so with this image.
#### If pgvecto.rs and pgvector still work, why should I switch to VectorChord?
VectorChord is faster, more stable, uses less RAM, and (with the settings Immich uses) offers higher-quality results than pgvector and pgvecto.rs. This translates to better search and facial recognition experiences. In addition, pgvecto.rs support will be dropped in the future, so changing it sooner will avoid disruption.

View File

@@ -7,7 +7,8 @@
"format": "prettier --check .",
"format:fix": "prettier --write .",
"start": "docusaurus start --port 3005",
"build": "docusaurus build",
"copy:openapi": "jq -c < ../open-api/immich-openapi-specs.json > ./static/openapi.json || exit 0",
"build": "npm run copy:openapi && docusaurus build",
"swizzle": "docusaurus swizzle",
"deploy": "docusaurus deploy",
"clear": "docusaurus clear",
@@ -59,6 +60,6 @@
"node": ">=20"
},
"volta": {
"node": "22.17.1"
"node": "22.18.0"
}
}

View File

@@ -100,6 +100,11 @@ const projects: CommunityProjectProps[] = [
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',
},
];
function CommunityProject({ title, description, url }: CommunityProjectProps): JSX.Element {

View File

@@ -16,6 +16,9 @@ import {
mdiCloudKeyOutline,
mdiRegex,
mdiCodeJson,
mdiClockOutline,
mdiAccountOutline,
mdiRestart,
} from '@mdi/js';
import Layout from '@theme/Layout';
import React from 'react';
@@ -26,6 +29,42 @@ const withLanguage = (date: Date) => (language: string) => date.toLocaleDateStri
type Item = Omit<TimelineItem, 'done' | 'getDateLabel'> & { date: Date };
const items: Item[] = [
{
icon: mdiClockOutline,
iconColor: 'gray',
title: 'setTimeout is cursed',
description:
'The setTimeout method in JavaScript is cursed when used with small values because the implementation may or may not actually wait the specified time.',
link: {
url: 'https://github.com/immich-app/immich/pull/20655',
text: '#20655',
},
date: new Date(2025, 7, 4),
},
{
icon: mdiAccountOutline,
iconColor: '#DAB1DA',
title: 'PostgreSQL USER is cursed',
description:
'The USER keyword in PostgreSQL is cursed because you can select from it like a table, which leads to confusion if you have a table name user as well.',
link: {
url: 'https://github.com/immich-app/immich/pull/19891',
text: '#19891',
},
date: new Date(2025, 7, 4),
},
{
icon: mdiRestart,
iconColor: '#8395e3',
title: 'PostgreSQL RESET is cursed',
description:
'PostgreSQL RESET is cursed because it is impossible to RESET a PostgreSQL extension parameter if the extension has been uninstalled.',
link: {
url: 'https://github.com/immich-app/immich/pull/19363',
text: '#19363',
},
date: new Date(2025, 5, 20),
},
{
icon: mdiRegex,
iconColor: 'purple',

View File

@@ -2,4 +2,23 @@
## TypeORM Upgrade
The upgrade to Immich `v2.x.x` has a required upgrade path to `v1.132.0+`. This means it is required to start up the application at least once on version `1.132.0` (or later). Doing so will complete database schema upgrades that are required for `v2.0.0`. After Immich has successfully booted on this version, shut the system down and try the `v2.x.x` upgrade again.
In order to update to Immich to `v1.137.0` (or above), the application must be started at least once on a version in the range between `1.132.0` and `1.136.0`. Doing so will complete database schema upgrades that are required for `v1.137.0` (and above). After Immich has successfully updated to a version in this range, you can now attempt to update to v1.137.0 (or above). We recommend users upgrade to `1.132.0` since it does not have any other breaking changes.
## Inconsistent Media Location
:::caution
This error is related to the location of media files _inside the container_. Never move files on the host system when you run into this error message.
:::
Immich automatically tries to detect where your Immich data is located. On start up, it compares the detected media location with the file paths in the database and throws an Inconsistent Media Location error when they do not match.
To fix this issue, verify that the `IMMICH_MEDIA_LOCATION` environment variable and `UPLOAD_LOCATION` volume mount are in sync with the database paths.
If you would like to migrate from one media location to another, simply successfully start Immich on `v1.136.0` or later, then do the following steps:
1. Stop Immich
2. Update `IMMICH_MEDIA_LOCATION` to the new location
3. Update the right-hand side of the `UPLOAD_LOCATION` volume mount to the new location
4. Start up Immich
After version `1.136.0`, Immich can detect when a media location has moved and will automatically update the database paths to keep them in sync.

View File

@@ -1,4 +1,32 @@
[
{
"label": "v1.138.1",
"url": "https://v1.138.1.archive.immich.app"
},
{
"label": "v1.138.0",
"url": "https://v1.138.0.archive.immich.app"
},
{
"label": "v1.137.3",
"url": "https://v1.137.3.archive.immich.app"
},
{
"label": "v1.137.2",
"url": "https://v1.137.2.archive.immich.app"
},
{
"label": "v1.137.1",
"url": "https://v1.137.1.archive.immich.app"
},
{
"label": "v1.137.0",
"url": "https://v1.137.0.archive.immich.app"
},
{
"label": "v1.136.0",
"url": "https://v1.136.0.archive.immich.app"
},
{
"label": "v1.135.3",
"url": "https://v1.135.3.archive.immich.app"

View File

@@ -1 +1 @@
22.17.1
22.18.0

View File

@@ -38,7 +38,7 @@ services:
image: redis:6.2-alpine@sha256:7fe72c486b910f6b1a9769c937dad5d63648ddee82e056f47417542dd40825bb
database:
image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0@sha256:3aef84a0a4fabbda17ef115c3019ba0c914ec73e9f6e59203674322d858b8eea
image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0@sha256:0e763a2383d56f90364fcd72767ac41400cd30d2627f407f7e7960c9f1923c21
command: -c fsync=off -c shared_preload_libraries=vchord.so -c config_file=/var/lib/postgresql/data/postgresql.conf
environment:
POSTGRES_PASSWORD: postgres

363
e2e/package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "immich-e2e",
"version": "1.135.3",
"version": "1.138.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "immich-e2e",
"version": "1.135.3",
"version": "1.138.1",
"license": "GNU Affero General Public License version 3",
"devDependencies": {
"@eslint/eslintrc": "^3.1.0",
@@ -16,16 +16,16 @@
"@playwright/test": "^1.44.1",
"@socket.io/component-emitter": "^3.1.2",
"@types/luxon": "^3.4.2",
"@types/node": "^22.16.4",
"@types/node": "^22.17.0",
"@types/oidc-provider": "^9.0.0",
"@types/pg": "^8.15.1",
"@types/pngjs": "^6.0.4",
"@types/supertest": "^6.0.2",
"@vitest/coverage-v8": "^3.0.0",
"eslint": "^9.14.0",
"eslint-config-prettier": "^10.0.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-unicorn": "^59.0.0",
"eslint-plugin-unicorn": "^60.0.0",
"exiftool-vendored": "^28.3.1",
"globals": "^16.0.0",
"jose": "^5.6.3",
@@ -46,7 +46,7 @@
},
"../cli": {
"name": "@immich/cli",
"version": "2.2.72",
"version": "2.2.79",
"dev": true,
"license": "GNU Affero General Public License version 3",
"dependencies": {
@@ -68,15 +68,15 @@
"@types/lodash-es": "^4.17.12",
"@types/micromatch": "^4.0.9",
"@types/mock-fs": "^4.13.1",
"@types/node": "^22.16.4",
"@types/node": "^22.17.0",
"@vitest/coverage-v8": "^3.0.0",
"byte-size": "^9.0.0",
"cli-progress": "^3.12.0",
"commander": "^12.0.0",
"eslint": "^9.14.0",
"eslint-config-prettier": "^10.0.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-unicorn": "^59.0.0",
"eslint-plugin-unicorn": "^60.0.0",
"globals": "^16.0.0",
"mock-fs": "^5.2.0",
"prettier": "^3.2.5",
@@ -95,14 +95,14 @@
},
"../open-api/typescript-sdk": {
"name": "@immich/sdk",
"version": "1.135.3",
"version": "1.138.1",
"dev": true,
"license": "GNU Affero General Public License version 3",
"dependencies": {
"@oazapfts/runtime": "^1.0.2"
},
"devDependencies": {
"@types/node": "^22.16.4",
"@types/node": "^22.17.0",
"typescript": "^5.3.3"
}
},
@@ -131,9 +131,9 @@
}
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
"integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
"dev": true,
"license": "MIT",
"engines": {
@@ -684,9 +684,9 @@
}
},
"node_modules/@eslint/core": {
"version": "0.14.0",
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz",
"integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==",
"version": "0.15.1",
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz",
"integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -734,9 +734,9 @@
}
},
"node_modules/@eslint/js": {
"version": "9.31.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.31.0.tgz",
"integrity": "sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==",
"version": "9.32.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.32.0.tgz",
"integrity": "sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -757,13 +757,13 @@
}
},
"node_modules/@eslint/plugin-kit": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz",
"integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==",
"version": "0.3.4",
"resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz",
"integrity": "sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@eslint/core": "^0.14.0",
"@eslint/core": "^0.15.1",
"levn": "^0.4.1"
},
"engines": {
@@ -1999,9 +1999,9 @@
}
},
"node_modules/@types/luxon": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.6.2.tgz",
"integrity": "sha512-R/BdP7OxEMc44l2Ex5lSXHoIXTB2JLNa3y2QISIbr58U/YcsffyQrYW//hZSdrfxrjRZj3GcUoxMPGdO8gSYuw==",
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.7.1.tgz",
"integrity": "sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg==",
"dev": true,
"license": "MIT"
},
@@ -2020,9 +2020,9 @@
"license": "MIT"
},
"node_modules/@types/node": {
"version": "22.16.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.5.tgz",
"integrity": "sha512-bJFoMATwIGaxxx8VJPeM8TonI8t579oRvgAuT8zFugJsJZgzqv0Fu8Mhp68iecjzG7cnN3mO2dJQ5uUM2EFrgQ==",
"version": "22.17.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.17.0.tgz",
"integrity": "sha512-bbAKTCqX5aNVryi7qXVMi+OkB3w/OyblodicMbvE38blyAz7GxXf6XYhklokijuPwwVg9sDLKRxt0ZHXQwZVfQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2030,9 +2030,9 @@
}
},
"node_modules/@types/oidc-provider": {
"version": "9.1.1",
"resolved": "https://registry.npmjs.org/@types/oidc-provider/-/oidc-provider-9.1.1.tgz",
"integrity": "sha512-sG4UcE4AbUwAsEpyrcyoqZ383wJiQObZU+gTa1Iv288+l09HwSr88hBZE2IBLlXS+RKmLId0i4B430PBFO/XRA==",
"version": "9.1.2",
"resolved": "https://registry.npmjs.org/@types/oidc-provider/-/oidc-provider-9.1.2.tgz",
"integrity": "sha512-JAreXkbWsZR72Gt3eigG652wq1qBcjhuy421PXU2a8PS0mM00XlG+UdXbM/QPihM3ko0YF8cwvt0H2kacXGcsg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2042,9 +2042,9 @@
}
},
"node_modules/@types/pg": {
"version": "8.15.4",
"resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.4.tgz",
"integrity": "sha512-I6UNVBAoYbvuWkkU3oosC8yxqH21f4/Jc4DK71JLG3dT2mdlGe1z+ep/LQGXaKaOgcvUrsQoPRqfgtMcvZiJhg==",
"version": "8.15.5",
"resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.5.tgz",
"integrity": "sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2125,17 +2125,17 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.37.0.tgz",
"integrity": "sha512-jsuVWeIkb6ggzB+wPCsR4e6loj+rM72ohW6IBn2C+5NCvfUVY8s33iFPySSVXqtm5Hu29Ne/9bnA0JmyLmgenA==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.38.0.tgz",
"integrity": "sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.10.0",
"@typescript-eslint/scope-manager": "8.37.0",
"@typescript-eslint/type-utils": "8.37.0",
"@typescript-eslint/utils": "8.37.0",
"@typescript-eslint/visitor-keys": "8.37.0",
"@typescript-eslint/scope-manager": "8.38.0",
"@typescript-eslint/type-utils": "8.38.0",
"@typescript-eslint/utils": "8.38.0",
"@typescript-eslint/visitor-keys": "8.38.0",
"graphemer": "^1.4.0",
"ignore": "^7.0.0",
"natural-compare": "^1.4.0",
@@ -2149,7 +2149,7 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"@typescript-eslint/parser": "^8.37.0",
"@typescript-eslint/parser": "^8.38.0",
"eslint": "^8.57.0 || ^9.0.0",
"typescript": ">=4.8.4 <5.9.0"
}
@@ -2165,16 +2165,16 @@
}
},
"node_modules/@typescript-eslint/parser": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.37.0.tgz",
"integrity": "sha512-kVIaQE9vrN9RLCQMQ3iyRlVJpTiDUY6woHGb30JDkfJErqrQEmtdWH3gV0PBAfGZgQXoqzXOO0T3K6ioApbbAA==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.38.0.tgz",
"integrity": "sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/scope-manager": "8.37.0",
"@typescript-eslint/types": "8.37.0",
"@typescript-eslint/typescript-estree": "8.37.0",
"@typescript-eslint/visitor-keys": "8.37.0",
"@typescript-eslint/scope-manager": "8.38.0",
"@typescript-eslint/types": "8.38.0",
"@typescript-eslint/typescript-estree": "8.38.0",
"@typescript-eslint/visitor-keys": "8.38.0",
"debug": "^4.3.4"
},
"engines": {
@@ -2190,14 +2190,14 @@
}
},
"node_modules/@typescript-eslint/project-service": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.37.0.tgz",
"integrity": "sha512-BIUXYsbkl5A1aJDdYJCBAo8rCEbAvdquQ8AnLb6z5Lp1u3x5PNgSSx9A/zqYc++Xnr/0DVpls8iQ2cJs/izTXA==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.38.0.tgz",
"integrity": "sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/tsconfig-utils": "^8.37.0",
"@typescript-eslint/types": "^8.37.0",
"@typescript-eslint/tsconfig-utils": "^8.38.0",
"@typescript-eslint/types": "^8.38.0",
"debug": "^4.3.4"
},
"engines": {
@@ -2212,14 +2212,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.37.0.tgz",
"integrity": "sha512-0vGq0yiU1gbjKob2q691ybTg9JX6ShiVXAAfm2jGf3q0hdP6/BruaFjL/ManAR/lj05AvYCH+5bbVo0VtzmjOA==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.38.0.tgz",
"integrity": "sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.37.0",
"@typescript-eslint/visitor-keys": "8.37.0"
"@typescript-eslint/types": "8.38.0",
"@typescript-eslint/visitor-keys": "8.38.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -2230,9 +2230,9 @@
}
},
"node_modules/@typescript-eslint/tsconfig-utils": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.37.0.tgz",
"integrity": "sha512-1/YHvAVTimMM9mmlPvTec9NP4bobA1RkDbMydxG8omqwJJLEW/Iy2C4adsAESIXU3WGLXFHSZUU+C9EoFWl4Zg==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz",
"integrity": "sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2247,15 +2247,15 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.37.0.tgz",
"integrity": "sha512-SPkXWIkVZxhgwSwVq9rqj/4VFo7MnWwVaRNznfQDc/xPYHjXnPfLWn+4L6FF1cAz6e7dsqBeMawgl7QjUMj4Ow==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.38.0.tgz",
"integrity": "sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.37.0",
"@typescript-eslint/typescript-estree": "8.37.0",
"@typescript-eslint/utils": "8.37.0",
"@typescript-eslint/types": "8.38.0",
"@typescript-eslint/typescript-estree": "8.38.0",
"@typescript-eslint/utils": "8.38.0",
"debug": "^4.3.4",
"ts-api-utils": "^2.1.0"
},
@@ -2272,9 +2272,9 @@
}
},
"node_modules/@typescript-eslint/types": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.37.0.tgz",
"integrity": "sha512-ax0nv7PUF9NOVPs+lmQ7yIE7IQmAf8LGcXbMvHX5Gm+YJUYNAl340XkGnrimxZ0elXyoQJuN5sbg6C4evKA4SQ==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.38.0.tgz",
"integrity": "sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2286,16 +2286,16 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.37.0.tgz",
"integrity": "sha512-zuWDMDuzMRbQOM+bHyU4/slw27bAUEcKSKKs3hcv2aNnc/tvE/h7w60dwVw8vnal2Pub6RT1T7BI8tFZ1fE+yg==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz",
"integrity": "sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/project-service": "8.37.0",
"@typescript-eslint/tsconfig-utils": "8.37.0",
"@typescript-eslint/types": "8.37.0",
"@typescript-eslint/visitor-keys": "8.37.0",
"@typescript-eslint/project-service": "8.38.0",
"@typescript-eslint/tsconfig-utils": "8.38.0",
"@typescript-eslint/types": "8.38.0",
"@typescript-eslint/visitor-keys": "8.38.0",
"debug": "^4.3.4",
"fast-glob": "^3.3.2",
"is-glob": "^4.0.3",
@@ -2341,16 +2341,16 @@
}
},
"node_modules/@typescript-eslint/utils": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.37.0.tgz",
"integrity": "sha512-TSFvkIW6gGjN2p6zbXo20FzCABbyUAuq6tBvNRGsKdsSQ6a7rnV6ADfZ7f4iI3lIiXc4F4WWvtUfDw9CJ9pO5A==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.38.0.tgz",
"integrity": "sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.7.0",
"@typescript-eslint/scope-manager": "8.37.0",
"@typescript-eslint/types": "8.37.0",
"@typescript-eslint/typescript-estree": "8.37.0"
"@typescript-eslint/scope-manager": "8.38.0",
"@typescript-eslint/types": "8.38.0",
"@typescript-eslint/typescript-estree": "8.38.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -2365,13 +2365,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.37.0.tgz",
"integrity": "sha512-YzfhzcTnZVPiLfP/oeKtDp2evwvHLMe0LOy7oe+hb9KKIumLNohYS9Hgp1ifwpu42YWxhZE8yieggz6JpqO/1w==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.38.0.tgz",
"integrity": "sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.37.0",
"@typescript-eslint/types": "8.38.0",
"eslint-visitor-keys": "^4.2.1"
},
"engines": {
@@ -2741,9 +2741,9 @@
}
},
"node_modules/browserslist": {
"version": "4.24.4",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
"integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
"version": "4.25.1",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz",
"integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==",
"dev": true,
"funding": [
{
@@ -2761,10 +2761,10 @@
],
"license": "MIT",
"dependencies": {
"caniuse-lite": "^1.0.30001688",
"electron-to-chromium": "^1.5.73",
"caniuse-lite": "^1.0.30001726",
"electron-to-chromium": "^1.5.173",
"node-releases": "^2.0.19",
"update-browserslist-db": "^1.1.1"
"update-browserslist-db": "^1.1.3"
},
"bin": {
"browserslist": "cli.js"
@@ -2862,9 +2862,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001713",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001713.tgz",
"integrity": "sha512-wCIWIg+A4Xr7NfhTuHdX+/FKh3+Op3LBbSp2N5Pfx6T/LhdQy3GTyoTg48BReaW/MyMNZAkTadsBtai3ldWK0Q==",
"version": "1.0.30001731",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001731.tgz",
"integrity": "sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==",
"dev": true,
"funding": [
{
@@ -2916,6 +2916,13 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/change-case": {
"version": "5.4.4",
"resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz",
"integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==",
"dev": true,
"license": "MIT"
},
"node_modules/check-error": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
@@ -2937,9 +2944,9 @@
}
},
"node_modules/ci-info": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz",
"integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==",
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz",
"integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==",
"dev": true,
"funding": [
{
@@ -3112,13 +3119,13 @@
}
},
"node_modules/core-js-compat": {
"version": "3.41.0",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz",
"integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==",
"version": "3.45.0",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.45.0.tgz",
"integrity": "sha512-gRoVMBawZg0OnxaVv3zpqLLxaHmsubEGyTnqdpI/CEBvX4JadI1dMSHxagThprYRtSVbuQxvi6iUatdPxohHpA==",
"dev": true,
"license": "MIT",
"dependencies": {
"browserslist": "^4.24.4"
"browserslist": "^4.25.1"
},
"funding": {
"type": "opencollective",
@@ -3271,9 +3278,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
"version": "1.5.137",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.137.tgz",
"integrity": "sha512-/QSJaU2JyIuTbbABAo/crOs+SuAZLS+fVVS10PVrIT9hrRkmZl8Hb0xPSkKRUUWHQtYzXHpQUW3Dy5hwMzGZkA==",
"version": "1.5.195",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.195.tgz",
"integrity": "sha512-URclP0iIaDUzqcAyV1v2PgduJ9N0IdXmWsnPzPfelvBmjmZzEy6xJcjb1cXj+TbYqXgtLrjHEoaSIdTYhw4ezg==",
"dev": true,
"license": "ISC"
},
@@ -3464,9 +3471,9 @@
}
},
"node_modules/eslint": {
"version": "9.31.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.31.0.tgz",
"integrity": "sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==",
"version": "9.32.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.32.0.tgz",
"integrity": "sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3476,8 +3483,8 @@
"@eslint/config-helpers": "^0.3.0",
"@eslint/core": "^0.15.0",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "9.31.0",
"@eslint/plugin-kit": "^0.3.1",
"@eslint/js": "9.32.0",
"@eslint/plugin-kit": "^0.3.4",
"@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
"@humanwhocodes/retry": "^0.4.2",
@@ -3525,9 +3532,9 @@
}
},
"node_modules/eslint-config-prettier": {
"version": "10.1.5",
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz",
"integrity": "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==",
"version": "10.1.8",
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz",
"integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==",
"dev": true,
"license": "MIT",
"bin": {
@@ -3541,9 +3548,9 @@
}
},
"node_modules/eslint-plugin-prettier": {
"version": "5.5.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.1.tgz",
"integrity": "sha512-dobTkHT6XaEVOo8IO90Q4DOSxnm3Y151QxPJlM/vKC0bVy+d6cVWQZLlFiuZPP0wS6vZwSKeJgKkcS+KfMBlRw==",
"version": "5.5.3",
"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.3.tgz",
"integrity": "sha512-NAdMYww51ehKfDyDhv59/eIItUVzU0Io9H2E8nHNGKEeeqlnci+1gCvrHib6EmZdf6GxF+LCV5K7UC65Ezvw7w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3572,65 +3579,39 @@
}
},
"node_modules/eslint-plugin-unicorn": {
"version": "59.0.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-59.0.1.tgz",
"integrity": "sha512-EtNXYuWPUmkgSU2E7Ttn57LbRREQesIP1BiLn7OZLKodopKfDXfBUkC/0j6mpw2JExwf43Uf3qLSvrSvppgy8Q==",
"version": "60.0.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-60.0.0.tgz",
"integrity": "sha512-QUzTefvP8stfSXsqKQ+vBQSEsXIlAiCduS/V1Em+FKgL9c21U/IIm20/e3MFy1jyCf14tHAhqC1sX8OTy6VUCg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-validator-identifier": "^7.25.9",
"@eslint-community/eslint-utils": "^4.5.1",
"@eslint/plugin-kit": "^0.2.7",
"ci-info": "^4.2.0",
"@babel/helper-validator-identifier": "^7.27.1",
"@eslint-community/eslint-utils": "^4.7.0",
"@eslint/plugin-kit": "^0.3.3",
"change-case": "^5.4.4",
"ci-info": "^4.3.0",
"clean-regexp": "^1.0.0",
"core-js-compat": "^3.41.0",
"core-js-compat": "^3.44.0",
"esquery": "^1.6.0",
"find-up-simple": "^1.0.1",
"globals": "^16.0.0",
"globals": "^16.3.0",
"indent-string": "^5.0.0",
"is-builtin-module": "^5.0.0",
"jsesc": "^3.1.0",
"pluralize": "^8.0.0",
"regexp-tree": "^0.1.27",
"regjsparser": "^0.12.0",
"semver": "^7.7.1",
"semver": "^7.7.2",
"strip-indent": "^4.0.0"
},
"engines": {
"node": "^18.20.0 || ^20.10.0 || >=21.0.0"
"node": "^20.10.0 || >=21.0.0"
},
"funding": {
"url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1"
},
"peerDependencies": {
"eslint": ">=9.22.0"
}
},
"node_modules/eslint-plugin-unicorn/node_modules/@eslint/core": {
"version": "0.13.0",
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
"integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@types/json-schema": "^7.0.15"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/eslint-plugin-unicorn/node_modules/@eslint/plugin-kit": {
"version": "0.2.8",
"resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz",
"integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@eslint/core": "^0.13.0",
"levn": "^0.4.1"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
"eslint": ">=9.29.0"
}
},
"node_modules/eslint-scope": {
@@ -3663,19 +3644,6 @@
"url": "https://opencollective.com/eslint"
}
},
"node_modules/eslint/node_modules/@eslint/core": {
"version": "0.15.1",
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz",
"integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@types/json-schema": "^7.0.15"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/espree": {
"version": "10.4.0",
"resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
@@ -3983,15 +3951,16 @@
}
},
"node_modules/form-data": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
"integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
"integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
"dev": true,
"license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"es-set-tostringtag": "^2.1.0",
"hasown": "^2.0.2",
"mime-types": "^2.1.12"
},
"engines": {
@@ -5708,15 +5677,15 @@
}
},
"node_modules/prettier-plugin-organize-imports": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.1.0.tgz",
"integrity": "sha512-5aWRdCgv645xaa58X8lOxzZoiHAldAPChljr/MT0crXVOWTZ+Svl4hIWlz+niYSlO6ikE5UXkN1JrRvIP2ut0A==",
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.2.0.tgz",
"integrity": "sha512-Zdy27UhlmyvATZi67BTnLcKTo8fm6Oik59Sz6H64PgZJVs6NJpPD1mT240mmJn62c98/QaL+r3kx9Q3gRpDajg==",
"dev": true,
"license": "MIT",
"peerDependencies": {
"prettier": ">=2.0",
"typescript": ">=2.9",
"vue-tsc": "^2.1.0"
"vue-tsc": "^2.1.0 || 3"
},
"peerDependenciesMeta": {
"vue-tsc": {
@@ -6469,35 +6438,35 @@
}
},
"node_modules/superagent": {
"version": "10.2.2",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-10.2.2.tgz",
"integrity": "sha512-vWMq11OwWCC84pQaFPzF/VO3BrjkCeewuvJgt1jfV0499Z1QSAWN4EqfMM5WlFDDX9/oP8JjlDKpblrmEoyu4Q==",
"version": "10.2.3",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-10.2.3.tgz",
"integrity": "sha512-y/hkYGeXAj7wUMjxRbB21g/l6aAEituGXM9Rwl4o20+SX3e8YOSV6BxFXl+dL3Uk0mjSL3kCbNkwURm8/gEDig==",
"dev": true,
"license": "MIT",
"dependencies": {
"component-emitter": "^1.3.0",
"component-emitter": "^1.3.1",
"cookiejar": "^2.1.4",
"debug": "^4.3.4",
"debug": "^4.3.7",
"fast-safe-stringify": "^2.1.1",
"form-data": "^4.0.0",
"form-data": "^4.0.4",
"formidable": "^3.5.4",
"methods": "^1.1.2",
"mime": "2.6.0",
"qs": "^6.11.0"
"qs": "^6.11.2"
},
"engines": {
"node": ">=14.18.0"
}
},
"node_modules/supertest": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/supertest/-/supertest-7.1.3.tgz",
"integrity": "sha512-ORY0gPa6ojmg/C74P/bDoS21WL6FMXq5I8mawkEz30/zkwdu0gOeqstFy316vHG6OKxqQ+IbGneRemHI8WraEw==",
"version": "7.1.4",
"resolved": "https://registry.npmjs.org/supertest/-/supertest-7.1.4.tgz",
"integrity": "sha512-tjLPs7dVyqgItVFirHYqe2T+MfWc2VOBQ8QFKKbWTA3PU7liZR8zoSpAi/C1k1ilm9RsXIKYf197oap9wXGVYg==",
"dev": true,
"license": "MIT",
"dependencies": {
"methods": "^1.1.2",
"superagent": "^10.2.2"
"superagent": "^10.2.3"
},
"engines": {
"node": ">=14.18.0"
@@ -6817,16 +6786,16 @@
}
},
"node_modules/typescript-eslint": {
"version": "8.37.0",
"resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.37.0.tgz",
"integrity": "sha512-TnbEjzkE9EmcO0Q2zM+GE8NQLItNAJpMmED1BdgoBMYNdqMhzlbqfdSwiRlAzEK2pA9UzVW0gzaaIzXWg2BjfA==",
"version": "8.38.0",
"resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.38.0.tgz",
"integrity": "sha512-FsZlrYK6bPDGoLeZRuvx2v6qrM03I0U0SnfCLPs/XCCPCFD80xU9Pg09H/K+XFa68uJuZo7l/Xhs+eDRg2l3hg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/eslint-plugin": "8.37.0",
"@typescript-eslint/parser": "8.37.0",
"@typescript-eslint/typescript-estree": "8.37.0",
"@typescript-eslint/utils": "8.37.0"
"@typescript-eslint/eslint-plugin": "8.38.0",
"@typescript-eslint/parser": "8.38.0",
"@typescript-eslint/typescript-estree": "8.38.0",
"@typescript-eslint/utils": "8.38.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"

View File

@@ -1,6 +1,6 @@
{
"name": "immich-e2e",
"version": "1.135.3",
"version": "1.138.1",
"description": "",
"main": "index.js",
"type": "module",
@@ -26,16 +26,16 @@
"@playwright/test": "^1.44.1",
"@socket.io/component-emitter": "^3.1.2",
"@types/luxon": "^3.4.2",
"@types/node": "^22.16.4",
"@types/node": "^22.17.0",
"@types/oidc-provider": "^9.0.0",
"@types/pg": "^8.15.1",
"@types/pngjs": "^6.0.4",
"@types/supertest": "^6.0.2",
"@vitest/coverage-v8": "^3.0.0",
"eslint": "^9.14.0",
"eslint-config-prettier": "^10.0.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-unicorn": "^59.0.0",
"eslint-plugin-unicorn": "^60.0.0",
"exiftool-vendored": "^28.3.1",
"globals": "^16.0.0",
"jose": "^5.6.3",
@@ -54,6 +54,6 @@
"vitest": "^3.0.0"
},
"volta": {
"node": "22.17.1"
"node": "22.18.0"
}
}

View File

@@ -470,7 +470,7 @@ describe('/albums', () => {
.send({ ids: [asset.id] });
expect(status).toBe(400);
expect(body).toEqual(errorDto.badRequest('Not found or no album.addAsset access'));
expect(body).toEqual(errorDto.badRequest('Not found or no albumAsset.create access'));
});
it('should add duplicate assets only once', async () => {
@@ -599,7 +599,7 @@ describe('/albums', () => {
.send({ ids: [user1Asset1.id] });
expect(status).toBe(400);
expect(body).toEqual(errorDto.badRequest('Not found or no album.removeAsset access'));
expect(body).toEqual(errorDto.badRequest('Not found or no albumAsset.delete access'));
});
it('should remove duplicate assets only once', async () => {
@@ -683,7 +683,7 @@ describe('/albums', () => {
.set('Authorization', `Bearer ${user1.accessToken}`)
.send({ role: AlbumUserRole.Editor });
expect(status).toBe(200);
expect(status).toBe(204);
// Get album to verify the role change
const { body } = await request(app)

View File

@@ -555,7 +555,7 @@ describe('/asset', () => {
expect(body).toMatchObject({ id: user1Assets[0].id, livePhotoVideoId: null });
});
it('should update date time original when sidecar file contains DateTimeOriginal', async () => {
it.skip('should update date time original when sidecar file contains DateTimeOriginal', async () => {
const sidecarData = `<?xpacket begin='?' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.40'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
@@ -854,6 +854,30 @@ describe('/asset', () => {
});
});
describe('PUT /assets', () => {
it('should update date time original relatively', async () => {
const { status, body } = await request(app)
.put(`/assets/`)
.set('Authorization', `Bearer ${user1.accessToken}`)
.send({ ids: [user1Assets[0].id], dateTimeRelative: -1441 });
expect(body).toEqual({});
expect(status).toEqual(204);
const result = await request(app)
.get(`/assets/${user1Assets[0].id}`)
.set('Authorization', `Bearer ${user1.accessToken}`)
.send();
expect(result.body).toMatchObject({
id: user1Assets[0].id,
exifInfo: expect.objectContaining({
dateTimeOriginal: '2023-11-19T01:10:00+00:00',
}),
});
});
});
describe('POST /assets', () => {
beforeAll(setupTests, 30_000);

View File

@@ -116,7 +116,7 @@ describe('/partners', () => {
.delete(`/partners/${user3.userId}`)
.set('Authorization', `Bearer ${user1.accessToken}`);
expect(status).toBe(200);
expect(status).toBe(204);
});
it('should throw a bad request if partner not found', async () => {

View File

@@ -9,7 +9,7 @@ import {
} from '@immich/sdk';
import { createUserDto, uuidDto } from 'src/fixtures';
import { errorDto } from 'src/responses';
import { app, asBearerAuth, shareUrl, utils } from 'src/utils';
import { app, asBearerAuth, baseUrl, shareUrl, utils } from 'src/utils';
import request from 'supertest';
import { beforeAll, describe, expect, it } from 'vitest';
@@ -78,6 +78,7 @@ describe('/shared-links', () => {
type: SharedLinkType.Album,
albumId: metadataAlbum.id,
showMetadata: true,
slug: 'metadata-album',
}),
utils.createSharedLink(user1.accessToken, {
type: SharedLinkType.Album,
@@ -138,6 +139,17 @@ describe('/shared-links', () => {
});
});
describe('GET /s/:slug', () => {
it('should work for slug auth', async () => {
const resp = await request(baseUrl).get(`/s/${linkWithMetadata.slug}`);
expect(resp.status).toBe(200);
expect(resp.header['content-type']).toContain('text/html');
expect(resp.text).toContain(
`<meta name="description" content="${metadataAlbum.assets.length} shared photos &amp; videos" />`,
);
});
});
describe('GET /shared-links', () => {
it('should require authentication', async () => {
const { status, body } = await request(app).get('/shared-links');
@@ -473,7 +485,7 @@ describe('/shared-links', () => {
.delete(`/shared-links/${linkWithAlbum.id}`)
.set('Authorization', `Bearer ${user1.accessToken}`);
expect(status).toBe(200);
expect(status).toBe(204);
});
});
});

View File

@@ -304,7 +304,7 @@ describe('/users', () => {
const { status } = await request(app)
.delete(`/users/me/license`)
.set('Authorization', `Bearer ${nonAdmin.accessToken}`);
expect(status).toBe(200);
expect(status).toBe(204);
});
});
});

View File

@@ -186,18 +186,6 @@ export const utils = {
}
},
resetFilesystem: async () => {
const mediaInternal = '/usr/src/app/upload';
const dirs = [
`"${mediaInternal}/thumbs"`,
`"${mediaInternal}/upload"`,
`"${mediaInternal}/library"`,
`"${mediaInternal}/encoded-video"`,
].join(' ');
await execPromise(`docker exec -i "immich-e2e-server" /bin/bash -c "rm -rf ${dirs} && mkdir ${dirs}"`);
},
unzip: async (input: string, output: string) => {
await execPromise(`unzip -o -d "${output}" "${input}"`);
},

View File

@@ -37,6 +37,7 @@ test.describe('Registration', () => {
await page.getByRole('button', { name: 'Server Privacy' }).click();
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: 'Done' }).click();
// success

View File

@@ -393,6 +393,7 @@
"album_cover_updated": "تم تحديث غلاف الألبوم",
"album_delete_confirmation": "هل أنت متأكد أنك تريد حذف الألبوم {album}؟",
"album_delete_confirmation_description": "إذا تمت مشاركة هذا الألبوم، فلن يتمكن المستخدمون الآخرون من الوصول إليه بعد الآن.",
"album_deleted": "تم حذف الالبوم",
"album_info_card_backup_album_excluded": "مستبعد",
"album_info_card_backup_album_included": "متضمنة",
"album_info_updated": "تم تحديث معلومات الألبوم",
@@ -402,6 +403,7 @@
"album_options": "إعدادات الألبوم",
"album_remove_user": "هل ترغب في إزالة المستخدم؟",
"album_remove_user_confirmation": "هل أنت متأكد أنك تريد إزالة {user}؟",
"album_search_not_found": "لم يتم ايجاد البوم مطابق لبحثك",
"album_share_no_users": "يبدو أنك قمت بمشاركة هذا الألبوم مع جميع المستخدمين أو ليس لديك أي مستخدم للمشاركة معه.",
"album_updated": "تم تحديث الألبوم",
"album_updated_setting_description": "تلقي إشعارًا عبر البريد الإلكتروني عندما يحتوي الألبوم المشترك على محتويات جديدة",
@@ -421,6 +423,7 @@
"albums_default_sort_order": "ترتيب الألبوم الافتراضي",
"albums_default_sort_order_description": "ترتيب فرز الأصول الأولي عند إنشاء ألبومات جديدة.",
"albums_feature_description": "مجموعة من الأصول التي يمكن مشاركتها مع مستخدمين آخرين.",
"albums_on_device_count": "عدد الالبومات على الجهاز ({count})",
"all": "الكل",
"all_albums": "جميع الألبومات",
"all_people": "جميع الأشخاص",
@@ -435,7 +438,7 @@
"api_key_description": "سيتم عرض هذه القيمة مرة واحدة فقط. يرجى التأكد من نسخها قبل إغلاق النافذة.",
"api_key_empty": "يجب ألا يكون اسم مفتاح API فارغًا",
"api_keys": "مفاتيح API",
"app_bar_signout_dialog_content": "هل أنت متأكد أنك تريد الخروج",
"app_bar_signout_dialog_content": "هل أنت متأكد أنك تريد تسجيل الخروج؟",
"app_bar_signout_dialog_ok": "نعم",
"app_bar_signout_dialog_title": "خروج",
"app_settings": "إعدادات التطبيق",
@@ -504,6 +507,7 @@
"back_close_deselect": "الرجوع أو الإغلاق أو إلغاء التحديد",
"background_location_permission": "اذن الوصول للموقع في الخلفية",
"background_location_permission_content": "للتمكن من تبديل الشبكه بالخلفية، Immich يحتاج*دائما* للحصول على موقع دقيق ليتمكن التطبيق من قرائة اسم شبكة الWi-Fi",
"backup": "دعم",
"backup_album_selection_page_albums_device": "الالبومات على الجهاز ({count})",
"backup_album_selection_page_albums_tap": "انقر للتضمين، وانقر نقرًا مزدوجًا للاستثناء",
"backup_album_selection_page_assets_scatter": "يمكن أن تنتشر الأصول عبر ألبومات متعددة. وبالتالي، يمكن تضمين الألبومات أو استبعادها أثناء عملية النسخ الاحتياطي.",
@@ -567,6 +571,8 @@
"backup_options_page_title": "خيارات النسخ الاحتياطي",
"backup_setting_subtitle": "ادارة اعدادات التحميل في الخلفية والمقدمة",
"backward": "الى الوراء",
"beta_sync": "حالة المزامنة التجريبية",
"beta_sync_subtitle": "ادارة نظام المزامنة الجديد",
"biometric_auth_enabled": "المصادقة البايومترية مفعله",
"biometric_locked_out": "لقد قفلت عنك المصادقة البيومترية",
"biometric_no_options": "لا توجد خيارات بايومترية متوفرة",
@@ -584,7 +590,7 @@
"cache_settings_clear_cache_button": "مسح ذاكرة التخزين المؤقت",
"cache_settings_clear_cache_button_title": "يقوم بمسح ذاكرة التخزين المؤقت للتطبيق.سيؤثر هذا بشكل كبير على أداء التطبيق حتى إعادة بناء ذاكرة التخزين المؤقت.",
"cache_settings_duplicated_assets_clear_button": "واضح",
"cache_settings_duplicated_assets_subtitle": "الصور ومقاطع الفيديو اللتي تم تجاهلها المدرجة في التطبيق",
"cache_settings_duplicated_assets_subtitle": "الصور والفيديوهات اللتي تم تجاهلها في التطبيق",
"cache_settings_duplicated_assets_title": "الاصول المكررة ({count})",
"cache_settings_statistics_album": "مكتبه الصور المصغره",
"cache_settings_statistics_full": "صور كاملة",
@@ -601,6 +607,7 @@
"cancel": "إلغاء",
"cancel_search": "الغاء البحث",
"canceled": "تم الالغاء",
"canceling": "جارِ الالغاء",
"cannot_merge_people": "لا يمكن دمج الأشخاص",
"cannot_undo_this_action": "لا يمكنك التراجع عن هذا الإجراء!",
"cannot_update_the_description": "لا يمكن تحديث الوصف",
@@ -616,7 +623,7 @@
"change_password": "تغيير كلمة المرور",
"change_password_description": "هذه إما هي المرة الأولى التي تقوم فيها بتسجيل الدخول إلى النظام أو أنه تم تقديم طلب لتغيير كلمة المرور الخاصة بك. الرجاء إدخال كلمة المرور الجديدة أدناه.",
"change_password_form_confirm_password": "تأكيد كلمة المرور",
"change_password_form_description": "مرحبًا ،هذه هي المرة الأولى التي تقوم فيها بالتسجيل في النظام أو تم تقديم طلب لتغيير كلمة المرور الخاصة بك.الرجاء إدخال كلمة المرور الجديدة أدناه",
"change_password_form_description": "مرحبًا {name}،\n\nاما ان تكون هذه هي المرة الأولى التي تقوم فيها بالتسجيل في النظام أو تم تقديم طلب لتغيير كلمة المرور الخاصة بك. الرجاء إدخال كلمة المرور الجديدة أدناه.",
"change_password_form_new_password": "كلمة المرور الجديدة",
"change_password_form_password_mismatch": "كلمة المرور غير مطابقة",
"change_password_form_reenter_new_password": "أعد إدخال كلمة مرور جديدة",
@@ -733,7 +740,8 @@
"default_locale": "اللغة الافتراضية",
"default_locale_description": "تنسيق التواريخ والأرقام بناءً على لغة المتصفح الخاص بك",
"delete": "حذف",
"delete_action_prompt": "{count} حذف بشكل نهائي",
"delete_action_confirmation_message": "هل انت متأكد من حذف هذا الملف؟ هذا سؤدي الى نقل الملف الى سلة مهملات الخادم وسيتم اشعارك ان كنت تريد حذفه على الجهاز",
"delete_action_prompt": "تم حذف {count}",
"delete_album": "حذف الألبوم",
"delete_api_key_prompt": "هل أنت متأكد أنك تريد حذف مفتاح API هذا؟",
"delete_dialog_alert": "هذه العناصر سيتم حذفها بشكل دائم من Immich و من جهازك",
@@ -747,9 +755,12 @@
"delete_key": "حذف المفتاح",
"delete_library": "حذف المكتبة",
"delete_link": "حذف الرابط",
"delete_local_action_prompt": "تم حذف {count} من الجهاز",
"delete_local_dialog_ok_backed_up_only": "حذف النسخة الاحتياطية فقط",
"delete_local_dialog_ok_force": "احذف على أي حال",
"delete_others": "حذف الأخرى",
"delete_permanently": "حذف بشكل نهائي",
"delete_permanently_action_prompt": "تم حذف {count} بشكل نهائي",
"delete_shared_link": "حذف الرابط المشترك",
"delete_shared_link_dialog_title": "حذف الرابط المشترك",
"delete_tag": "حذف العلامة",
@@ -760,6 +771,7 @@
"description": "وصف",
"description_input_hint_text": "اضف وصفا...",
"description_input_submit_error": "خطأ تحديث الوصف ، تحقق من السجل لمزيد من التفاصيل",
"deselect_all": "الغاء تحديد الكل",
"details": "تفاصيل",
"direction": "الإتجاه",
"disabled": "معطل",
@@ -777,6 +789,7 @@
"documentation": "الوثائق",
"done": "تم",
"download": "تنزيل",
"download_action_prompt": "يتم تنزيل {count} ملف",
"download_canceled": "الغي التنزيل",
"download_complete": "اكتمل التنزيل",
"download_enqueue": "تنزيل في قائمة الانتظار",
@@ -833,6 +846,7 @@
"empty_trash": "أفرغ سلة المهملات",
"empty_trash_confirmation": "هل أنت متأكد أنك تريد إفراغ سلة المهملات؟ سيؤدي هذا إلى إزالة جميع المحتويات الموجودة في سلة المهملات بشكل نهائي من Immich.\nلا يمكنك التراجع عن هذا الإجراء!",
"enable": "تفعيل",
"enable_backup": "تشغيل النسخ الاحتياطي",
"enable_biometric_auth_description": "أدخل رمز PIN الخاص بك لتمكين المصادقة البيومترية",
"enabled": "مفعل",
"end_date": "تاريخ الإنتهاء",
@@ -989,6 +1003,8 @@
"explorer": "المستكشف",
"export": "تصدير",
"export_as_json": "تصدير كـ JSON",
"export_database": "تصدير قاعدة البيانات",
"export_database_description": "تصدير قاعدة البيانات من نوع SQLite",
"extension": "الإمتداد",
"external": "خارجي",
"external_libraries": "المكتبات الخارجية",
@@ -1147,7 +1163,6 @@
"light": "المضيئ",
"like_deleted": "تم حذف الإعجاب",
"link_motion_video": "رابط فيديو الحركة",
"link_options": "خيارات الرابط",
"link_to_oauth": "الربط مع OAuth",
"linked_oauth_account": "حساب مرتبط بـ OAuth",
"list": "قائمة",
@@ -1210,7 +1225,6 @@
"manage_your_devices": "إدارة الأجهزة التي تم تسجيل الدخول إليها",
"manage_your_oauth_connection": "إدارة اتصال OAuth الخاص بك",
"map": "الخريطة",
"map_assets_in_bound": "{count} صوره",
"map_assets_in_bounds": "{count} صور",
"map_cannot_get_user_location": "لا يمكن الحصول على موقع المستخدم",
"map_location_dialog_yes": "نعم",

View File

@@ -6,7 +6,7 @@
"action": "Дзеянне",
"action_common_update": "Абнавіць",
"actions": "Дзеянні",
"active": "Актыўны",
"active": "Актыўных",
"activity": "Актыўнасць",
"activity_changed": "Актыўнасць {enabled, select, true {уключана} other {адключана}}",
"add": "Дадаць",
@@ -74,8 +74,11 @@
"image_fullsize_enabled_description": "Ствараць выяву ў поўным памеры для фарматаў, што не прыдатныя для вэб. Калі ўключана опцыя \"Аддаваць перавагу ўбудаванай праяве\", прагляды выкарыстоўваюцца непасрэдна без канвертацыі. Не ўплывае на вэб-прыдатныя фарматы, такія як JPEG.",
"image_fullsize_quality_description": "Якасць выявы ў поўным памеры ад 1 да 100. Больш высокае значэнне лепшае, але прыводзіць да павелічэння памеру файла.",
"image_fullsize_title": "Налады выявы ў поўным памеры",
"image_prefer_embedded_preview": "Аддаваць перавагу ўбудаванай праяве",
"image_prefer_embedded_preview_setting_description": "Выкарыстоўваць убудаваныя праявы ў RAW-фотаздымках ў якасці ўваходных дадзеных для апрацоўкі малюнкаў, калі магчыма. Гэта дазваляе атрымаць больш дакладныя колеры для некаторых відарысаў, але ж якасць праяў залежыць ад камеры, і на відарысе можа быць больш артэфактаў сціску.",
"image_prefer_wide_gamut": "Аддаць перавагу шырокай гаме",
"image_preview_description": "Відарыс сярэдняга памеру з выдаленымі метададзенымі, выкарыстоўваецца пры праглядзе асобнага рэсурсу і для машыннага навучання",
"image_preview_quality_description": "Якасць праявы ад 1 да 100. Чым вышэй, тым лепш, але пры гэтым ствараюцца файлы большага памеру і можа знізіцца хуткасць водгуку прыкладання. Ўстаноўка нізкага значэння можа паўплываць на якасць машыннага навучання.",
"image_preview_title": "Налады папярэдняга прагляду",
"image_quality": "Якасць",
"image_resolution": "Раздзяляльнасць",
@@ -93,33 +96,119 @@
"metadata_settings": "Налады метаданых",
"oauth_button_text": "Тэкст кнопкі",
"oauth_settings": "OAuth",
"refreshing_all_libraries": "Абнаўленне ўсіх бібліятэк",
"registration": "Рэгістрацыя адміністратара",
"registration_description": "Вы з'яўляецеся першым карыстальнікам сістэмы, таму вы будзеце прызначаны адміністратарам. Вы будзеце адказваць за адміністрацыйныя задачы, а таксама ствараць новых карыстальнікаў.",
"require_password_change_on_login": "Патрабаваць змяніць пароль пры першым уваходзе ў сістэму",
"reset_settings_to_default": "Скінуць налады да прадвызначаных",
"reset_settings_to_recent_saved": "Скінуць налады да нядаўна захаваных",
"scanning_library": "Сканіраванне бібліятэкі",
"server_external_domain_settings": "Знешні дамен",
"server_settings": "Налады сервера",
"server_settings_description": "Кіраванне наладамі сервера",
"server_welcome_message": "Прывітальнае паведамленне",
"server_welcome_message_description": "Паведамленне, якое адлюстроўваецца на старонцы ўваходу.",
"system_settings": "Сістэмныя налады",
"tag_cleanup_job": "Ачыстка тэгаў",
"template_email_preview": "Перадпрагляд",
"theme_settings": "Налады тэмы",
"transcoding_acceleration_nvenc": "NVENC (патрабуецца відэакарта NVIDIA)",
"transcoding_acceleration_vaapi": "VAAPI",
"transcoding_accepted_containers": "Прынятыя кантэйнеры",
"transcoding_accepted_video_codecs": "Прынятыя відэакодэкі",
"transcoding_advanced_options_description": "Параметры, якія большасці карыстальнікаў не трэба змяняць",
"transcoding_audio_codec": "Аудыякодэк",
"transcoding_encoding_options": "Параметры кадзіравання",
"transcoding_video_codec": "Відэакодэк",
"trash_enabled_description": "Уключыць функцыі сметніцы",
"trash_number_of_days": "Колькасць дзён",
"trash_settings": "Налады сметніцы",
"trash_settings_description": "Кіраванне наладамі сметніцы",
"user_cleanup_job": "Ачыстка карыстальніка",
"user_management": "Кіраванне карыстальнікамі",
"user_password_has_been_reset": "Пароль карыстальніка быў скінуты:",
"user_password_reset_description": "Задайце карыстальніку часовы пароль і паведаміце яму, што пры наступным уваходзе ў сістэму яму трэба будзе змяніць пароль.",
"user_restore_description": "Уліковы запіс карыстальніка <b>{user}</b> будзе адноўлены.",
"user_settings": "Налады карыстальніка",
"user_settings_description": "Кіраванне наладамі карыстальніка",
"user_successfully_removed": "Карыстальнік {email} быў паспяхова выдалены.",
"version_check_enabled_description": "Уключыць праверку версіі",
"version_check_implications": "Функцыі праверкі версіі перыядычна звяртаецца да github.com",
"version_check_settings": "Праверка версіі",
"version_check_settings_description": "Уключыць/адключыць апавяшчэнні аб новай версіі"
},
"admin_email": "Электронная пошта адміністратара",
"admin_password": "Пароль адміністратара",
"administration": "Кіраванне серверам",
"advanced": "Пашыраныя",
"advanced_settings_log_level_title": "Узровень вядзення журнала: {level}",
"advanced_settings_proxy_headers_title": "Загалоўкі проксі",
"advanced_settings_tile_subtitle": "Пашыраныя налады карыстальніка",
"advanced_settings_troubleshooting_subtitle": "Уключыць дадатковыя функцыі для выпраўлення непаладак",
"advanced_settings_troubleshooting_title": "Выпраўленне непаладак",
"age_months": "Узрост {months, plural, one {# месяц} few {# месяцы} many {# месяцаў} other {# месяцаў}}",
"age_year_months": "Узрост 1 год, {months, plural, one {# месяц} few {# месяцы} many {# месяцаў} other {# месяцаў}}",
"age_years": "{years, plural, other {Узрост #}}",
"album_added": "Альбом дададзены",
"album_cover_updated": "Вокладка альбома абноўлена",
"album_delete_confirmation": "Вы ўпэўнены, што хочаце выдаліць альбом {album}?",
"album_delete_confirmation_description": "Калі гэты альбом абагулены, іншыя карыстальнікі больш не змогуць атрымаць да яго доступ.",
"album_deleted": "Альбом выдалены",
"album_info_card_backup_album_excluded": "ВЫКЛЮЧАНЫ",
"album_info_card_backup_album_included": "УКЛЮЧАНЫ",
"album_info_updated": "Інфармацыя пра альбом абноўлена",
"album_leave": "Пакінуць альбом?",
"album_leave_confirmation": "Вы ўпэўнены, што хочаце пакінуць {album}?",
"album_name": "Назва альбома",
"album_options": "Параметры альбома",
"album_remove_user": "Выдаліць карыстальніка?",
"album_remove_user_confirmation": "Вы ўпэўнены, што хочаце выдаліць {user}?",
"album_search_not_found": "Па вашым запыце не знойдзена альбомаў",
"album_share_no_users": "Здаецца, вы падзяліліся гэтым альбомам з усімі карыстальнікамі, або ў вас няма ніводнага карыстальніка, з якім можна падзяліцца.",
"album_updated": "Альбом абноўлены",
"album_user_left": "Вы пакінулі {album}",
"album_user_removed": "Карыстальнік {user} выдалены",
"album_viewer_appbar_delete_confirm": "Вы ўпэўнены, што хочаце выдаліць гэты альбом са свайго ўліковага запісу?",
"album_viewer_appbar_share_err_delete": "Не ўдалося выдаліць альбом",
"album_viewer_appbar_share_err_leave": "Не ўдалося пакінуць альбом",
"album_viewer_appbar_share_err_title": "Не ўдалося змяніць назву альбома",
"album_viewer_appbar_share_leave": "Пакінуць альбом",
"album_viewer_appbar_share_to": "Абагуліць з",
"album_viewer_page_share_add_users": "Дадаць карыстальнікаў",
"album_with_link_access": "Дазволіць усім, хто мае спасылку, бачыць фота і людзей у гэтым альбоме.",
"albums": "Альбомы",
"albums_count": "{count, plural, one {1 альбом} few {{count, number} альбомы} many {{count, number} альбомаў} other {{count, number} альбомаў}}",
"albums_default_sort_order": "Прадвызначаны парадак сартавання альбомаў",
"albums_on_device_count": "Альбомы на прыладзе ({count})",
"all": "Усе",
"all_albums": "Усе альбомы",
"all_people": "Усе людзі",
"all_videos": "Усе відэа",
"allow_dark_mode": "Дазволіць цёмны рэжым",
"allow_edits": "Дазволіць рэдагаванне",
"alt_text_qr_code": "Відарыс QR-кода",
"anti_clockwise": "Супраць гадзіннікавай стрэлкі",
"api_key": "Ключ API",
"api_key_empty": "Назва ключа API не павінна быць пустой",
"api_keys": "Ключы API",
"app_bar_signout_dialog_content": "Вы ўпэўнены, што хочаце выйсці?",
"app_bar_signout_dialog_ok": "Так",
"app_bar_signout_dialog_title": "Выйсці",
"app_settings": "Налады праграмы",
"archive": "Архіў",
"archive_page_title": "Архіў ({count})",
"archive_size": "Памер архіва",
"are_these_the_same_person": "Ці гэта адзін і той жа чалавек?",
"are_you_sure_to_do_this": "Вы ўпэўнены, што хочаце гэта зрабіць?",
"asset_added_to_album": "Дададзена ў альбом",
"asset_adding_to_album": "Дадаванне ў альбом…",
"asset_skipped": "Прапушчана",
"asset_skipped_in_trash": "У сметніцы",
"asset_uploaded": "Запампавана",
"asset_uploading": "Запампоўванне…",
"authorized_devices": "Аўтарызаваныя прылады",
"back": "Назад",
"backup_album_selection_page_albums_device": "Альбомы на прыладзе ({count})",
"backup_all": "Усе",
"backup_controller_page_background_wifi": "Толькі праз Wi-Fi",
"buy": "Купіць Immich",

View File

@@ -508,6 +508,7 @@
"back_close_deselect": "Назад, затваряне или премахване на избора",
"background_location_permission": "Разрешение за достъп до местоположението във фонов режим",
"background_location_permission_content": "За да може да чете имената на Wi-Fi мрежите и да ги превключва при работа във фонов режим, Immich трябва *винаги* да има достъп до точното местоположение",
"backup": "Архивиране",
"backup_album_selection_page_albums_device": "Албуми на устройството ({count})",
"backup_album_selection_page_albums_tap": "Натисни за да включиш, двойно за да изключиш",
"backup_album_selection_page_assets_scatter": "Обектите могат да бъдат разпръснати в няколко албума. По този начин албумите могат да бъдат включени или изключени по време на процеса на архивиране.",
@@ -1154,7 +1155,6 @@
"light": "Светло",
"like_deleted": "Като изтрит",
"link_motion_video": "Линк към видео",
"link_options": "Опции на линк за споделяне",
"link_to_oauth": "Линк към OAuth",
"linked_oauth_account": "Свързан OAuth акаунт",
"list": "Лист",
@@ -1217,7 +1217,6 @@
"manage_your_devices": "Управление на влезлите в системата устройства",
"manage_your_oauth_connection": "Управление на OAuth връзката",
"map": "Карта",
"map_assets_in_bound": "{count} снимки",
"map_assets_in_bounds": "{count} снимки",
"map_cannot_get_user_location": "Не можах да получа местоположението",
"map_location_dialog_yes": "Да",

View File

@@ -63,7 +63,7 @@
"exclusion_pattern_description": "এক্সক্লুশন প্যাটার্ন ব্যবহার করে আপনি আপনার লাইব্রেরি স্ক্যান করার সময় ফাইল এবং ফোল্ডারগুলিকে উপেক্ষা করতে পারবেন। যদি আপনার এমন ফোল্ডার থাকে যেখানে এমন ফাইল থাকে যা আপনি আমদানি করতে চান না, যেমন RAW ফাইল।",
"external_library_management": "বহিরাগত গ্রন্থাগার ব্যবস্থাপনা",
"face_detection": "মুখ সনাক্তকরণ",
"face_detection_description": "মেশিন লার্নিং ব্যবহার করে অ্যাসেটে থাকা মুখগুলি সনাক্ত করুন। ভিডিওগুলির জন্য, শুধুমাত্র থাম্বনেইল বিবেচনা করা হয়। \"রিফ্রেশ\" (পুনরায়) সমস্ত অ্যাসেট প্রক্রিয়া করে। \"রিসেট\" অতিরিক্তভাবে সমস্ত বর্তমান মুখের ডেটা সাফ করে। \"অনুপস্থিত\" অ্যাসেটগুলিকে সারিবদ্ধ করে যা এখনও প্রক্রিয়া করা হয়নি। সনাক্ত করা মুখগুলিকে ফেসিয়াল রিকগনিশনের জন্য সারিবদ্ধ করা হবে, ফেসিয়াল ডিটেকশন সম্পূর্ণ হওয়ার পরে, বিদ্যমান বা নতুন ব্যক্তিদের মধ্যে গোষ্ঠীবদ্ধ করে।",
"face_detection_description": "মেশিন লার্নিং ব্যবহার করে অ্যাসেটে থাকা মুখ/চেহারা গুলি সনাক্ত করুন। ভিডিও গুলির জন্য, শুধুমাত্র থাম্বনেইল বিবেচনা করা হয়। \"রিফ্রেশ\" (পুনরায়) সমস্ত অ্যাসেট প্রক্রিয়া করে। \"রিসেট\" করার মাধ্যমে অতিরিক্তভাবে সমস্ত বর্তমান মুখের ডেটা সাফ করে। \"অনুপস্থিত\" অ্যাসেটগুলিকে সারিবদ্ধ করে যা এখনও প্রক্রিয়া করা হয়নি। সনাক্ত করা মুখগুলিকে ফেসিয়াল রিকগনিশনের জন্য সারিবদ্ধ করা হবে, ফেসিয়াল ডিটেকশন সম্পূর্ণ হওয়ার পরে, বিদ্যমান বা নতুন ব্যক্তিদের মধ্যে গোষ্ঠীবদ্ধ করে।",
"facial_recognition_job_description": "শনাক্ত করা মুখগুলিকে মানুষের মধ্যে গোষ্ঠীভুক্ত করুন। মুখ সনাক্তকরণ সম্পূর্ণ হওয়ার পরে এই ধাপটি চলে। \"রিসেট\" (পুনরায়) সমস্ত মুখকে ক্লাস্টার করে। \"অনুপস্থিত\" মুখগুলিকে সারিতে রাখে যেখানে কোনও ব্যক্তিকে বরাদ্দ করা হয়নি।",
"failed_job_command": "কমান্ড {command} কাজের জন্য ব্যর্থ হয়েছে: {job}",
"force_delete_user_warning": "সতর্কতা: এটি ব্যবহারকারী এবং সমস্ত সম্পদ অবিলম্বে সরিয়ে ফেলবে। এটি পূর্বাবস্থায় ফেরানো যাবে না এবং ফাইলগুলি পুনরুদ্ধার করা যাবে না।",

View File

@@ -496,6 +496,7 @@
"back_close_deselect": "Tornar, tancar o anul·lar la selecció",
"background_location_permission": "Permís d'ubicació en segon pla",
"background_location_permission_content": "Per canviar de xarxa quan s'executa en segon pla, Immich ha de *sempre* tenir accés a la ubicació precisa perquè l'aplicació pugui llegir el nom de la xarxa Wi-Fi",
"backup": "Còpia",
"backup_album_selection_page_albums_device": "Àlbums al dispositiu ({count})",
"backup_album_selection_page_albums_tap": "Un toc per incloure, doble toc per excloure",
"backup_album_selection_page_assets_scatter": "Els elements poden dispersar-se en diversos àlbums. Per tant, els àlbums es poden incloure o excloure durant el procés de còpia de seguretat.",
@@ -1139,7 +1140,6 @@
"light": "Llum",
"like_deleted": "M'agrada suprimit",
"link_motion_video": "Enllaçar vídeo en moviment",
"link_options": "Opcions d'enllaç",
"link_to_oauth": "Enllaç a OAuth",
"linked_oauth_account": "Compte OAuth enllaçat",
"list": "Llista",
@@ -1202,7 +1202,6 @@
"manage_your_devices": "Gestioneu els vostres dispositius connectats",
"manage_your_oauth_connection": "Gestioneu la vostra connexió OAuth",
"map": "Mapa",
"map_assets_in_bound": "{count} foto",
"map_assets_in_bounds": "{count} fotos",
"map_cannot_get_user_location": "No es pot obtenir la ubicació de l'usuari",
"map_location_dialog_yes": "Sí",

View File

@@ -14,6 +14,7 @@
"add_a_location": "Přidat polohu",
"add_a_name": "Přidat jméno",
"add_a_title": "Přidat název",
"add_birthday": "Přidat datum narození",
"add_endpoint": "Přidat koncový bod",
"add_exclusion_pattern": "Přidat vzor vyloučení",
"add_import_path": "Přidat cestu importu",
@@ -44,6 +45,13 @@
"backup_database": "Vytvořit výpis databáze",
"backup_database_enable_description": "Povolit výpisy z databáze",
"backup_keep_last_amount": "Počet předchozích výpisů, které se mají ponechat",
"backup_onboarding_1_description": "kopie v cloudu nebo na jiném fyzickém místě.",
"backup_onboarding_2_description": "místní kopie na různých zařízeních. To zahrnuje hlavní soubory a jejich místní zálohu.",
"backup_onboarding_3_description": "kompletní kopie vašich dat, včetně původních souborů. To zahrnuje 1 kopii na jiném místě a 2 místní kopie.",
"backup_onboarding_description": "K ochraně vašich dat doporučujeme strategii zálohování <backblaze-link>3-2-1</backblaze-link>. Pro komplexní zálohování byste měli uchovávat kopie nahraných fotografií/videí i databáze Immich.",
"backup_onboarding_footer": "Další informace o zálohování Immiche naleznete v <link>dokumentaci</link>.",
"backup_onboarding_parts_title": "Záloha 3-2-1 zahrnuje:",
"backup_onboarding_title": "Zálohy",
"backup_settings": "Zálohování databáze",
"backup_settings_description": "Správa nastavení výpisu databáze.",
"cleared_jobs": "Hotové úlohy pro: {job}",
@@ -374,7 +382,7 @@
"administration": "Administrace",
"advanced": "Pokročilé",
"advanced_settings_beta_timeline_subtitle": "Vyzkoušejte nové prostředí aplikace",
"advanced_settings_beta_timeline_title": "Časová osa beta verze",
"advanced_settings_beta_timeline_title": "Beta verze časové osy",
"advanced_settings_enable_alternate_media_filter_subtitle": "Tuto možnost použijte k filtrování médií během synchronizace na základě alternativních kritérií. Tuto možnost vyzkoušejte pouze v případě, že máte problémy s detekcí všech alb v aplikaci.",
"advanced_settings_enable_alternate_media_filter_title": "[EXPERIMENTÁLNÍ] Použít alternativní filtr pro synchronizaci alb zařízení",
"advanced_settings_log_level_title": "Úroveň protokolování: {level}",
@@ -397,6 +405,7 @@
"album_cover_updated": "Obal alba aktualizován",
"album_delete_confirmation": "Opravdu chcete album {album} odstranit?",
"album_delete_confirmation_description": "Pokud je toto album sdíleno, ostatní uživatelé k němu již nebudou mít přístup.",
"album_deleted": "Album smazáno",
"album_info_card_backup_album_excluded": "VYLOUČENO",
"album_info_card_backup_album_included": "ZAHRNUTO",
"album_info_updated": "Informace o albu aktualizovány",
@@ -510,6 +519,7 @@
"back_close_deselect": "Zpět, zavřít nebo zrušit výběr",
"background_location_permission": "Povolení polohy na pozadí",
"background_location_permission_content": "Aby bylo možné přepínat sítě při běhu na pozadí, musí mít Immich *vždy* přístup k přesné poloze, aby mohl zjistit název Wi-Fi sítě",
"backup": "Záloha",
"backup_album_selection_page_albums_device": "Alba v zařízení ({count})",
"backup_album_selection_page_albums_tap": "Klepnutím na položku ji zahrnete, opětovným klepnutím ji vyloučíte",
"backup_album_selection_page_assets_scatter": "Položky mohou být roztroušeny ve více albech. To umožňuje zahrnout nebo vyloučit alba během procesu zálohování.",
@@ -573,7 +583,7 @@
"backup_options_page_title": "Nastavení záloh",
"backup_setting_subtitle": "Správa nastavení zálohování na pozadí a na popředí",
"backward": "Pozpátku",
"beta_sync": "Stav synchronizace beta verze",
"beta_sync": "Stav synchronizace (beta)",
"beta_sync_subtitle": "Správa nového systému synchronizace",
"biometric_auth_enabled": "Biometrické ověřování je povoleno",
"biometric_locked_out": "Jste vyloučeni z biometrického ověřování",
@@ -723,6 +733,7 @@
"current_server_address": "Aktuální adresa serveru",
"custom_locale": "Vlastní lokalizace",
"custom_locale_description": "Formátovat datumy a čísla podle jazyka a oblasti",
"custom_url": "Vlastní URL",
"daily_title_text_date": "EEEE, d. MMMM",
"daily_title_text_date_year": "EEEE, d. MMMM y",
"dark": "Tmavý",
@@ -742,7 +753,8 @@
"default_locale": "Výchozí jazyk",
"default_locale_description": "Formátovat datumy a čísla podle místního prostředí prohlížeče",
"delete": "Smazat",
"delete_action_prompt": "{count} trvale smazaných",
"delete_action_confirmation_message": "Opravdu chcete odstranit tuto položku? Tato akce přesune položku do serverového koše a zeptá se vás, zda ji chcete odstranit lokálně",
"delete_action_prompt": "{count} smazáno",
"delete_album": "Smazat album",
"delete_api_key_prompt": "Opravdu chcete tento API klíč odstranit?",
"delete_dialog_alert": "Tyto položky budou trvale smazány z aplikace Immich i z vašeho zařízení",
@@ -759,7 +771,9 @@
"delete_local_action_prompt": "{count} smazáno lokálně",
"delete_local_dialog_ok_backed_up_only": "Smazat pouze zálohované",
"delete_local_dialog_ok_force": "Přesto smazat",
"delete_others": "Odstranit ostatní",
"delete_others": "Smazat ostatní",
"delete_permanently": "Trvale smazat",
"delete_permanently_action_prompt": "{count} trvale smazáno",
"delete_shared_link": "Smazat sdílený odkaz",
"delete_shared_link_dialog_title": "Odstranit sdílený odkaz",
"delete_tag": "Smazat značku",
@@ -815,6 +829,7 @@
"edit": "Upravit",
"edit_album": "Upravit album",
"edit_avatar": "Upravit avatar",
"edit_birthday": "Upravit datum narození",
"edit_date": "Upravit datum",
"edit_date_and_time": "Upravit datum a čas",
"edit_description": "Upravit popis",
@@ -982,6 +997,7 @@
},
"exif": "Exif",
"exif_bottom_sheet_description": "Přidat popis...",
"exif_bottom_sheet_description_error": "Chyba při aktualizaci popisu",
"exif_bottom_sheet_details": "PODROBNOSTI",
"exif_bottom_sheet_location": "POLOHA",
"exif_bottom_sheet_people": "LIDÉ",
@@ -1002,6 +1018,8 @@
"explorer": "Průzkumník",
"export": "Export",
"export_as_json": "Exportovat jako JSON",
"export_database": "Exportovat databázi",
"export_database_description": "Exportovat databázi SQLite",
"extension": "Přípona",
"external": "Externí",
"external_libraries": "Externí knihovny",
@@ -1146,6 +1164,7 @@
"language_no_results_title": "Nebyly nalezeny žádné jazyky",
"language_search_hint": "Vyhledat jazyk...",
"language_setting_description": "Vyberte upřednostňovaný jazyk",
"large_files": "Velké soubory",
"last_seen": "Naposledy viděno",
"latest_version": "Nejnovější verze",
"latitude": "Zeměpisná šířka",
@@ -1165,7 +1184,6 @@
"light": "Světlý",
"like_deleted": "Lajk smazán",
"link_motion_video": "Připojit pohyblivé video",
"link_options": "Možnosti odkazu",
"link_to_oauth": "Propojit s OAuth",
"linked_oauth_account": "Propojený OAuth účet",
"list": "Seznam",
@@ -1230,8 +1248,7 @@
"manage_your_devices": "Správa přihlášených zařízení",
"manage_your_oauth_connection": "Správa OAuth propojení",
"map": "Mapa",
"map_assets_in_bound": "{count} fotka",
"map_assets_in_bounds": "{count} fotek",
"map_assets_in_bounds": "{count, plural, one {# fotka} few{# fotky} other {# fotek}}",
"map_cannot_get_user_location": "Nelze zjistit polohu uživatele",
"map_location_dialog_yes": "Ano",
"map_location_picker_page_use_location": "Použít tuto polohu",
@@ -1582,6 +1599,7 @@
"resume": "Pokračovat",
"retry_upload": "Opakování nahrávání",
"review_duplicates": "Kontrola duplicit",
"review_large_files": "Kontrola velkých souborů",
"role": "Role",
"role_editor": "Editor",
"role_viewer": "Divák",
@@ -1739,6 +1757,7 @@
"shared_link_clipboard_copied_massage": "Zkopírováno do schránky",
"shared_link_clipboard_text": "Odkaz: {link}\nHeslo: {password}",
"shared_link_create_error": "Chyba při vytváření sdíleného odkazu",
"shared_link_custom_url_description": "Přístup k tomuto sdílenému odkazu pomocí vlastního URL",
"shared_link_edit_description_hint": "Zadejte popis sdílení",
"shared_link_edit_expire_after_option_day": "1 den",
"shared_link_edit_expire_after_option_days": "{count} dní",
@@ -1764,6 +1783,7 @@
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Spravovat sdílené odkazy",
"shared_link_options": "Možnosti sdíleného odkazu",
"shared_link_password_description": "Vyžadovat heslo pro přístup k tomuto sdílenému odkazu",
"shared_links": "Sdílené odkazy",
"shared_links_description": "Sdílet fotky a videa pomocí odkazu",
"shared_photos_and_videos_count": "{assetCount, plural, one {# sdílená fotografie a video.} few {# sdílené fotografie a videa.} other {# sdílených fotografií a videí.}}",
@@ -1941,11 +1961,13 @@
"updated_at": "Aktualizováno",
"updated_password": "Heslo aktualizováno",
"upload": "Nahrát",
"upload_action_prompt": "{count} ve frontě pro nahrání",
"upload_concurrency": "Souběžnost nahrávání",
"upload_details": "Detaily nahrávání",
"upload_dialog_info": "Chcete zálohovat vybrané položky na server?",
"upload_dialog_title": "Nahrát položku",
"upload_errors": "Nahrávání bylo dokončeno s {count, plural, one {# chybou} other {# chybami}}, obnovte stránku pro zobrazení nových položek.",
"upload_finished": "Nahrávání dokončeno",
"upload_progress": "Zbývá {remaining, number} - Zpracováno {processed, number}/{total, number}",
"upload_skipped_duplicates": "{count, plural, one {Přeskočena # duplicitní položka} few {Přeskočeny # duplicitní položky} other {Přeskočeno # duplicitních položek}}",
"upload_status_duplicates": "Duplicity",
@@ -1954,6 +1976,7 @@
"upload_success": "Nahrání proběhlo úspěšně, obnovením stránky se zobrazí nově nahrané položky.",
"upload_to_immich": "Nahrát do Immich ({count})",
"uploading": "Nahrávání",
"uploading_media": "Nahrávání médií",
"url": "URL",
"usage": "Využití",
"use_biometric": "Použít biometrické údaje",

View File

@@ -167,6 +167,19 @@
"migration_job": "Migrering",
"migration_job_description": "Migrér miniaturebilleder for aktiver og ansigter til den seneste mappestruktur",
"nightly_tasks_cluster_faces_setting_description": "Kør ansigtsgenkendelse på nye ansigter",
"nightly_tasks_cluster_new_faces_setting": "Gruppér nye ansigter",
"nightly_tasks_database_cleanup_setting": "Databaseoprydning opgaver",
"nightly_tasks_database_cleanup_setting_description": "Ryd op i gamle, udløbne data fra databasen",
"nightly_tasks_generate_memories_setting": "Generer minder",
"nightly_tasks_generate_memories_setting_description": "Skab nye minder ud fra dine medier",
"nightly_tasks_missing_thumbnails_setting": "Generer manglende miniaturebilleder",
"nightly_tasks_missing_thumbnails_setting_description": "Sæt medier uden thumbnails i kø til generering af thumbnails",
"nightly_tasks_settings": "Indstillinger for opgaver om natten",
"nightly_tasks_settings_description": "Administrér opgaver om natten",
"nightly_tasks_start_time_setting": "Starttidspunkt",
"nightly_tasks_start_time_setting_description": "Tidspunktet hvor serveren begynder at køre opgaver om natten",
"nightly_tasks_sync_quota_usage_setting": "Synkronisér kvoteforbrug",
"nightly_tasks_sync_quota_usage_setting_description": "Opdater brugerens lagerkvote baseret på aktuelt forbrug",
"no_paths_added": "Ingen stier tilføjet",
"no_pattern_added": "Intet mønster tilføjet",
"note_apply_storage_label_previous_assets": "Bemærk: For at anvende Lagringsmærkatet på tidligere uploadede mediefiler, kør",
@@ -205,7 +218,7 @@
"oauth_storage_quota_claim": "Lagringskvotefordring",
"oauth_storage_quota_claim_description": "Sæt automatisk brugeres lagringskvote til denne nye fordrings værdi.",
"oauth_storage_quota_default": "Standard lagringskvote (GiB)",
"oauth_storage_quota_default_description": "Kvote i GiB som bruges, når der ikke bliver oplyst en fordring (Indtast 0 for uendelig kvote).",
"oauth_storage_quota_default_description": "Kvote i GiB som bruges, når der ikke bliver oplyst en fordring.",
"oauth_timeout": "Forespørgslen udløb",
"oauth_timeout_description": "Udløbstid for forespørgsel i milisekunder",
"password_enable_description": "Log ind med email og adgangskode",
@@ -489,6 +502,7 @@
"back_close_deselect": "Tilbage, luk eller fravælg",
"background_location_permission": "Tilladelse til baggrundsplacering",
"background_location_permission_content": "For at skifte netværk, når appen kører i baggrunden, skal Immich *altid* have præcis placeringsadgang, så appen kan læse WiFi-netværkets navn",
"backup": "Sikkerhedskopier",
"backup_album_selection_page_albums_device": "Albummer på enheden ({count})",
"backup_album_selection_page_albums_tap": "Tryk en gang for at inkludere, tryk to gange for at ekskludere",
"backup_album_selection_page_assets_scatter": "Elementer kan være spredt på tværs af flere albummer. Albummer kan således inkluderes eller udelukkes under sikkerhedskopieringsprocessen.",
@@ -1128,7 +1142,6 @@
"light": "Lys",
"like_deleted": "Ligesom slettet",
"link_motion_video": "Link bevægelsesvideo",
"link_options": "Link-indstillinger",
"link_to_oauth": "Link til OAuth",
"linked_oauth_account": "Tilsluttet OAuth-konto",
"list": "Liste",
@@ -1190,7 +1203,6 @@
"manage_your_devices": "Administrér dine enheder der er logget ind",
"manage_your_oauth_connection": "Administrér din OAuth-tilslutning",
"map": "Kort",
"map_assets_in_bound": "{count} billede",
"map_assets_in_bounds": "{count} billeder",
"map_cannot_get_user_location": "Kan ikke finde brugerens placering",
"map_location_dialog_yes": "Ja",

View File

@@ -14,6 +14,7 @@
"add_a_location": "Standort hinzufügen",
"add_a_name": "Name hinzufügen",
"add_a_title": "Titel hinzufügen",
"add_birthday": "Geburtsdatum hinzufügen",
"add_endpoint": "Endpunkt hinzufügen",
"add_exclusion_pattern": "Ausschlussmuster hinzufügen",
"add_import_path": "Importpfad hinzufügen",
@@ -41,9 +42,16 @@
"authentication_settings_disable_all": "Bist du sicher, dass du alle Anmeldemethoden deaktivieren willst? Die Anmeldung wird vollständig deaktiviert.",
"authentication_settings_reenable": "Nutze einen <link>Server-Befehl</link> zur Reaktivierung.",
"background_task_job": "Hintergrundaufgaben",
"backup_database": "Datenbanksicherung regelmäßig erstellen",
"backup_database": "Datenbanksicherung erstellen",
"backup_database_enable_description": "Datenbank regelmäßig sichern",
"backup_keep_last_amount": "Anzahl der aufzubewahrenden früheren Backups",
"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_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_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}",
@@ -120,7 +128,7 @@
"machine_learning_duplicate_detection_setting_description": "Verwendung von CLIP-Embeddings zum Erkennen möglicher Duplikate",
"machine_learning_enabled": "Maschinelles Lernen aktivieren",
"machine_learning_enabled_description": "Wenn diese Option deaktiviert ist, werden alle ML-Funktionen unabhängig von den unten aufgeführten Einstellungen deaktiviert.",
"machine_learning_facial_recognition": "Gesichtsidentifikation",
"machine_learning_facial_recognition": "Gesichtsidentifizierung",
"machine_learning_facial_recognition_description": "Erkenne, identifiziere und gruppiere Gesichter in Bildern",
"machine_learning_facial_recognition_model": "Gesichtserkennungs-Modell",
"machine_learning_facial_recognition_model_description": "Die Modelle sind in absteigender Reihenfolge ihrer Größe aufgeführt. Größere Modelle sind langsamer und verbrauchen mehr Speicher, liefern aber bessere Ergebnisse. Bitte beachte dabei, dass du die Gesichtserkennungsaufgabe für alle Bilder neu starten musst, wenn du ein Modell änderst.",
@@ -385,7 +393,7 @@
"advanced_settings_self_signed_ssl_subtitle": "Verifizierung von SSL-Zertifikaten vom Server überspringen. Notwendig bei selbstsignierten Zertifikaten.",
"advanced_settings_self_signed_ssl_title": "Selbstsignierte SSL-Zertifikate erlauben",
"advanced_settings_sync_remote_deletions_subtitle": "Automatisches Löschen oder Wiederherstellen einer Datei auf diesem Gerät, wenn diese Aktion im Web durchgeführt wird",
"advanced_settings_sync_remote_deletions_title": "Synchrone Remote-Löschungen [Experimentell]",
"advanced_settings_sync_remote_deletions_title": "Mit Server-Löschungen synchronisieren [Experimentell]",
"advanced_settings_tile_subtitle": "Erweiterte Benutzereinstellungen",
"advanced_settings_troubleshooting_subtitle": "Erweiterte Funktionen zur Fehlersuche aktivieren",
"advanced_settings_troubleshooting_title": "Fehlersuche",
@@ -397,6 +405,7 @@
"album_cover_updated": "Album-Cover aktualisiert",
"album_delete_confirmation": "Bist du sicher, dass du das Album {album} löschen willst?",
"album_delete_confirmation_description": "Falls dieses Album geteilt wurde, können andere Benutzer nicht mehr darauf zugreifen.",
"album_deleted": "Album gelöscht",
"album_info_card_backup_album_excluded": "AUSGESCHLOSSEN",
"album_info_card_backup_album_included": "EINGESCHLOSSEN",
"album_info_updated": "Album-Infos aktualisiert",
@@ -510,6 +519,7 @@
"back_close_deselect": "Zurück, Schließen oder Abwählen",
"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",
"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_assets_scatter": "Elemente (Fotos / Videos) können sich über mehrere Alben verteilen. Daher können diese vor der Sicherung eingeschlossen oder ausgeschlossen werden.",
@@ -573,7 +583,7 @@
"backup_options_page_title": "Sicherungsoptionen",
"backup_setting_subtitle": "Verwaltung der Upload-Einstellungen im Hintergrund und im Vordergrund",
"backward": "Rückwärts",
"beta_sync": "Status des Beta Sync",
"beta_sync": "Status der Beta-Synchronisierung",
"beta_sync_subtitle": "Verwalte das neue Synchronisierungssystem",
"biometric_auth_enabled": "Biometrische Authentifizierung aktiviert",
"biometric_locked_out": "Du bist von der biometrischen Authentifizierung ausgeschlossen",
@@ -723,6 +733,7 @@
"current_server_address": "Aktuelle Serveradresse",
"custom_locale": "Benutzerdefinierte Sprache",
"custom_locale_description": "Datumsangaben und Zahlen je nach Sprache und Land formatieren",
"custom_url": "Benutzerdefinierte URL",
"daily_title_text_date": "E, dd MMM",
"daily_title_text_date_year": "E, dd MMM, yyyy",
"dark": "Dunkel",
@@ -742,7 +753,8 @@
"default_locale": "Standard-Sprache",
"default_locale_description": "Datumsangaben und Zahlen basierend auf dem Gebietsschema des Browsers formatieren",
"delete": "Löschen",
"delete_action_prompt": "{count} endgültig gelöscht",
"delete_action_confirmation_message": "Bist du sicher, dass du dieses Objekt löschen willst? Diese Aktion wird das Objekt in den Papierkorb des Servers verschieben und fragen, ob du es lokal löschen willst",
"delete_action_prompt": "{count} gelöscht",
"delete_album": "Album löschen",
"delete_api_key_prompt": "Bist du sicher, dass du diesen API-Schlüssel löschen willst?",
"delete_dialog_alert": "Diese Elemente werden unwiderruflich von Immich und dem Gerät entfernt",
@@ -760,6 +772,8 @@
"delete_local_dialog_ok_backed_up_only": "Nur gesicherte Inhalte löschen",
"delete_local_dialog_ok_force": "Trotzdem löschen",
"delete_others": "Andere löschen",
"delete_permanently": "Endgültig löschen",
"delete_permanently_action_prompt": "{count} endgültig gelöscht",
"delete_shared_link": "geteilten Link löschen",
"delete_shared_link_dialog_title": "Geteilten Link löschen",
"delete_tag": "Tag löschen",
@@ -815,6 +829,7 @@
"edit": "Bearbeiten",
"edit_album": "Album bearbeiten",
"edit_avatar": "Avatar bearbeiten",
"edit_birthday": "Geburtsdatum bearbeiten",
"edit_date": "Datum bearbeiten",
"edit_date_and_time": "Datum und Uhrzeit bearbeiten",
"edit_description": "Beschreibung bearbeiten",
@@ -982,6 +997,7 @@
},
"exif": "EXIF",
"exif_bottom_sheet_description": "Beschreibung hinzufügen...",
"exif_bottom_sheet_description_error": "Fehler bei der Aktualisierung der Beschreibung",
"exif_bottom_sheet_details": "DETAILS",
"exif_bottom_sheet_location": "STANDORT",
"exif_bottom_sheet_people": "PERSONEN",
@@ -1002,6 +1018,8 @@
"explorer": "Datei-Explorer",
"export": "Exportieren",
"export_as_json": "Als JSON exportieren",
"export_database": "Datenbank exportieren",
"export_database_description": "Exportiert die SQLite Datenbank",
"extension": "Erweiterung",
"external": "Extern",
"external_libraries": "Externe Bibliotheken",
@@ -1077,7 +1095,7 @@
"home_page_archive_err_partner": "Inhalte von Partnern können nicht archiviert werden",
"home_page_building_timeline": "Zeitachse wird erstellt",
"home_page_delete_err_partner": "Inhalte von Partnern können nicht gelöscht werden, überspringe",
"home_page_delete_remote_err_local": "Lokale Inhalte in der Auswahl, überspringen",
"home_page_delete_remote_err_local": "Lokale Elemente in der Auswahl zum Entfernen von Remote-Elementen, Überspringe",
"home_page_favorite_err_local": "Kann lokale Elemente noch nicht favorisieren, überspringen",
"home_page_favorite_err_partner": "Inhalte von Partnern können nicht favorisiert werden, überspringe",
"home_page_first_time_notice": "Wenn dies das erste Mal ist dass Du Immich nutzt, stelle bitte sicher, dass mindestens ein Album zur Sicherung ausgewählt ist, sodass die Zeitachse mit Fotos und Videos gefüllt werden kann",
@@ -1146,6 +1164,7 @@
"language_no_results_title": "Keine Sprachen gefunden",
"language_search_hint": "Sprachen durchsuchen...",
"language_setting_description": "Wähle deine bevorzugte Sprache",
"large_files": "Große Dateien",
"last_seen": "Zuletzt gesehen",
"latest_version": "Aktuellste Version",
"latitude": "Breitengrad",
@@ -1165,7 +1184,6 @@
"light": "Hell",
"like_deleted": "Like gelöscht",
"link_motion_video": "Bewegungsvideo verknüpfen",
"link_options": "Link-Optionen",
"link_to_oauth": "Mit OAuth verknüpfen",
"linked_oauth_account": "Verknüpftes OAuth-Konto",
"list": "Liste",
@@ -1230,8 +1248,7 @@
"manage_your_devices": "Deine eingeloggten Geräte verwalten",
"manage_your_oauth_connection": "Deine OAuth-Verknüpfung verwalten",
"map": "Karte",
"map_assets_in_bound": "{count} Foto",
"map_assets_in_bounds": "{count} Fotos",
"map_assets_in_bounds": "{count, plural, one {# Foto} other {# Fotos}}",
"map_cannot_get_user_location": "Standort konnte nicht ermittelt werden",
"map_location_dialog_yes": "Ja",
"map_location_picker_page_use_location": "Aufnahmeort verwenden",
@@ -1529,8 +1546,8 @@
"refreshing_faces": "Gesichter werden aktualisiert",
"refreshing_metadata": "Metadaten werden aktualisiert",
"regenerating_thumbnails": "Miniaturansichten werden neu erstellt",
"remote": "Entfernt",
"remote_assets": "Entfernte Dateien",
"remote": "Server",
"remote_assets": "Server-Dateien",
"remove": "Entfernen",
"remove_assets_album_confirmation": "Bist du sicher, dass du {count, plural, one {# Datei} other {# Dateien}} aus dem Album entfernen willst?",
"remove_assets_shared_link_confirmation": "Bist du sicher, dass du {count, plural, one {# Datei} other {# Dateien}} von diesem geteilten Link entfernen willst?",
@@ -1582,6 +1599,7 @@
"resume": "Fortsetzen",
"retry_upload": "Upload wiederholen",
"review_duplicates": "Duplikate überprüfen",
"review_large_files": "Große Dateien überprüfen",
"role": "Rolle",
"role_editor": "Bearbeiter",
"role_viewer": "Betrachter",
@@ -1739,6 +1757,7 @@
"shared_link_clipboard_copied_massage": "Link kopiert",
"shared_link_clipboard_text": "Link: {link}\nPasswort: {password}",
"shared_link_create_error": "Fehler beim Erstellen der Linkfreigabe",
"shared_link_custom_url_description": "Greife über eine benutzerdefinierte URL auf diesen Freigabelink zu",
"shared_link_edit_description_hint": "Beschreibung eingeben",
"shared_link_edit_expire_after_option_day": "1 Tag",
"shared_link_edit_expire_after_option_days": "{count} Tagen",
@@ -1764,6 +1783,7 @@
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Geteilte Links verwalten",
"shared_link_options": "Optionen für geteilten Link",
"shared_link_password_description": "Für den Zugriff auf diesen freigegebenen Link ist ein Passwort erforderlich",
"shared_links": "Geteilte Links",
"shared_links_description": "Teile Fotos und Videos mit einem Link",
"shared_photos_and_videos_count": "{assetCount, plural, one {# geteiltes Foto oder Video.} other {# geteilte Fotos & Videos.}}",
@@ -1850,7 +1870,7 @@
"sync_albums": "Alben synchronisieren",
"sync_albums_manual_subtitle": "Synchronisiere alle hochgeladenen Videos und Fotos in die ausgewählten Backup-Alben",
"sync_local": "Lokal synchronisieren",
"sync_remote": "Entfernt synchronisieren",
"sync_remote": "mit Server synchronisieren",
"sync_upload_album_setting_subtitle": "Erstelle deine ausgewählten Alben in Immich und lade die Fotos und Videos dort hoch",
"tag": "Tag",
"tag_assets": "Dateien taggen",
@@ -1866,7 +1886,7 @@
"theme": "Theme",
"theme_selection": "Themenauswahl",
"theme_selection_description": "Automatische Einstellung des Themes auf Hell oder Dunkel, je nach Systemeinstellung des Browsers",
"theme_setting_asset_list_storage_indicator_title": "Forschrittsbalken der Sicherung auf dem Vorschaubild",
"theme_setting_asset_list_storage_indicator_title": "Fortschrittsbalken der Sicherung auf dem Vorschaubild",
"theme_setting_asset_list_tiles_per_row_title": "Anzahl der Elemente pro Reihe ({count})",
"theme_setting_colorful_interface_subtitle": "Primärfarbe auf App-Hintergrund anwenden.",
"theme_setting_colorful_interface_title": "Farbige UI-Oberfläche",
@@ -1941,11 +1961,13 @@
"updated_at": "Aktualisiert",
"updated_password": "Passwort aktualisiert",
"upload": "Hochladen",
"upload_action_prompt": "{count} in der Warteschlange für Upload",
"upload_concurrency": "Parallelität beim Hochladen",
"upload_details": "Upload Details",
"upload_dialog_info": "Willst du die ausgewählten Elemente auf dem Server sichern?",
"upload_dialog_title": "Element hochladen",
"upload_errors": "Hochladen mit {count, plural, one {# Fehler} other {# Fehlern}} abgeschlossen, aktualisiere die Seite, um neu hochgeladene Dateien zu sehen.",
"upload_finished": "Upload fertig",
"upload_progress": "{remaining, number} verbleibend - {processed, number}/{total, number} verarbeitet",
"upload_skipped_duplicates": "{count, plural, one {# doppelte Datei} other {# doppelte Dateien}} ausgelassen",
"upload_status_duplicates": "Duplikate",
@@ -1954,6 +1976,7 @@
"upload_success": "Hochladen erfolgreich. Aktualisiere die Seite, um neue hochgeladene Dateien zu sehen.",
"upload_to_immich": "Auf Immich hochladen ({count})",
"uploading": "Wird hochgeladen",
"uploading_media": "Medien werden hochgeladen",
"url": "URL",
"usage": "Verwendung",
"use_biometric": "Biometrie verwenden",

View File

@@ -166,6 +166,20 @@
"metadata_settings_description": "Διαχείρηση ρυθμίσεων μεταδεδομένων",
"migration_job": "Μεταφορά δεδομένων (Migration)",
"migration_job_description": "Μεταφορά των εικονιδίων για αρχεία και πρόσωπα στην πιο πρόσφατη δομή αρχείων",
"nightly_tasks_cluster_faces_setting_description": "Εκτέλεση αναγνώρισης προσώπου σε νέα ανιχνευμένα πρόσωπα",
"nightly_tasks_cluster_new_faces_setting": "Ομαδοποίηση νέων προσώπων",
"nightly_tasks_database_cleanup_setting": "Εργασίες καθαρισμού βάσης δεδομένων",
"nightly_tasks_database_cleanup_setting_description": "Εκκαθάριση παλιών και ληγμένων δεδομένων από τη βάση δεδομένων",
"nightly_tasks_generate_memories_setting": "Δημιουργία αναμνήσεων",
"nightly_tasks_generate_memories_setting_description": "Δημιουργία νέων αναμνήσεων από αντικείμενα",
"nightly_tasks_missing_thumbnails_setting": "Δημιουργία ελλειπόντων μικρογραφιών",
"nightly_tasks_missing_thumbnails_setting_description": "Τοποθέτηση στη ουρά των αρχείων χωρίς μικρογραφίες για δημιουργία μικρογραφιών",
"nightly_tasks_settings": "Ρυθμίσεις για τις νυχτερινές εργασίες",
"nightly_tasks_settings_description": "Διαχείριση νυχτερινών εργασιών",
"nightly_tasks_start_time_setting": "Ώρα έναρξης",
"nightly_tasks_start_time_setting_description": "Η ώρα κατά την οποία ο διακομιστής ξεκινάει να εκτελεί τις νυχτερινές εργασίες",
"nightly_tasks_sync_quota_usage_setting": "Συγχρονισμός χρήσης χώρου",
"nightly_tasks_sync_quota_usage_setting_description": "Ενημέρωση του διαθέσιμου χώρου χρήστη, με βάση την τρέχουσα χρήση",
"no_paths_added": "Δεν προστέθηκαν διαδρομές",
"no_pattern_added": "Δεν προστέθηκε μοτίβο",
"note_apply_storage_label_previous_assets": "Σημείωση: Για να εφαρμοστεί η Ετικέτα Αποθήκευσης σε στοιχεία που είχαν αναρτηθεί παλαιότερα, εκτέλεσε το",
@@ -196,6 +210,8 @@
"oauth_mobile_redirect_uri": "URI Ανακατεύθυνσης για κινητά τηλέφωνα",
"oauth_mobile_redirect_uri_override": "Προσπέλαση URI ανακατεύθυνσης για κινητά τηλέφωνα",
"oauth_mobile_redirect_uri_override_description": "Ενεργοποιήστε το όταν ο πάροχος OAuth δεν επιτρέπει μια URI για κινητά, όπως το ''{callback}''",
"oauth_role_claim": "Ανάθεση ρόλου",
"oauth_role_claim_description": "Αυτόματη παραχώρηση πρόσβασης διαχειριστή με βάση την ύπαρξη αυτής της ανάθεσης. Η ανάθεση μπορεί να είναι είτε 'χρήστης' είτε 'διαχειριστής'.",
"oauth_settings": "OAuth",
"oauth_settings_description": "Διαχείριση ρυθμίσεων σύνδεσης OAuth",
"oauth_settings_more_details": "Για περισσότερες λεπτομέρειες σχετικά με αυτήν τη δυνατότητα, ανατρέξτε στην <link>τεκμηρίωση</link>.",
@@ -357,10 +373,12 @@
"admin_password": "Κωδικός πρόσβασης Διαχειριστή",
"administration": "Διαχείριση",
"advanced": "Για προχωρημένους",
"advanced_settings_beta_timeline_subtitle": "Δοκίμασε τη νέα εμπειρία της εφαρμογής",
"advanced_settings_beta_timeline_title": "Δοκιμαστικό χρονολόγιο",
"advanced_settings_enable_alternate_media_filter_subtitle": "Χρησιμοποιήστε αυτήν την επιλογή για να φιλτράρετε τα μέσα ενημέρωσης κατά τον συγχρονισμό με βάση εναλλακτικά κριτήρια. Δοκιμάστε αυτή τη δυνατότητα μόνο αν έχετε προβλήματα με την εφαρμογή που εντοπίζει όλα τα άλμπουμ.",
"advanced_settings_enable_alternate_media_filter_title": "[ΠΕΙΡΑΜΑΤΙΚΟ] Χρήση εναλλακτικού φίλτρου συγχρονισμού άλμπουμ συσκευής",
"advanced_settings_log_level_title": "Επίπεδο σύνδεσης: {level}",
"advanced_settings_prefer_remote_subtitle": "Μερικές συσκευές αργούν πολύ να φορτώσουν μικρογραφίες από αρχεία στη συσκευή. Ενεργοποιήστε αυτήν τη ρύθμιση για να φορτώνονται αντί αυτού απομακρυσμένες εικόνες.",
"advanced_settings_prefer_remote_subtitle": "Μερικές συσκευές αργούν πολύ να φορτώσουν μικρογραφίες από τοπικά αρχεία. Ενεργοποιήστε αυτήν τη ρύθμιση για να φορτώνονται αντί αυτού απομακρυσμένες εικόνες.",
"advanced_settings_prefer_remote_title": "Προτίμηση απομακρυσμένων εικόνων",
"advanced_settings_proxy_headers_subtitle": "Καθορισμός κεφαλίδων διακομιστή μεσολάβησης που το Immich πρέπει να στέλνει με κάθε αίτημα δικτύου",
"advanced_settings_proxy_headers_title": "Κεφαλίδες διακομιστή μεσολάβησης",
@@ -379,6 +397,7 @@
"album_cover_updated": "Το εξώφυλλο του άλμπουμ, ενημερώθηκε",
"album_delete_confirmation": "Είστε σίγουροι ότι θέλετε να διαγράψετε το άλμπουμ {album};",
"album_delete_confirmation_description": "Εάν αυτό το άλμπουμ είναι κοινόχρηστο, οι άλλοι χρήστες δεν θα μπορούν να έχουν πρόσβαση.",
"album_deleted": "Το άλμπουμ διαγράφηκε",
"album_info_card_backup_album_excluded": "ΕΞΑΙΡΟΥΜΕΝΟ",
"album_info_card_backup_album_included": "ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΟ",
"album_info_updated": "Οι πληροφορίες του άλμπουμ, ενημερώθηκαν",
@@ -388,6 +407,7 @@
"album_options": "Επιλογές άλμπουμ",
"album_remove_user": "Διαγραφή χρήστη;",
"album_remove_user_confirmation": "Είστε σίγουροι ότι θέλετε να αφαιρέσετε τον/την {user};",
"album_search_not_found": "Δε βρέθηκαν άλμπουμ που να ταιριάζουν με την αναζήτησή σας",
"album_share_no_users": "Φαίνεται ότι έχετε κοινοποιήσει αυτό το άλμπουμ σε όλους τους χρήστες ή δεν έχετε χρήστες για να το κοινοποιήσετε.",
"album_updated": "Το άλμπουμ, ενημερώθηκε",
"album_updated_setting_description": "Λάβετε ειδοποίηση μέσω email όταν ένα κοινόχρηστο άλμπουμ έχει νέα αρχεία",
@@ -407,6 +427,7 @@
"albums_default_sort_order": "Προεπιλεγμένη ταξινόμηση άλμπουμ",
"albums_default_sort_order_description": "Αρχική ταξινόμηση κατά τη δημιουργία νέων άλμπουμ.",
"albums_feature_description": "Συλλογές στοιχείων που μπορούν να κοινοποιηθούν σε άλλους χρήστες.",
"albums_on_device_count": "Άλμπουμ στη συσκευή ({count})",
"all": "Όλα",
"all_albums": "Όλα τα άλμπουμ",
"all_people": "Όλα τα άτομα",
@@ -427,6 +448,7 @@
"app_settings": "Ρυθμίσεις εφαρμογής",
"appears_in": "Εμφανίζεται σε",
"archive": "Αρχείο",
"archive_action_prompt": "Προστέθηκαν {count} στο Αρχείο",
"archive_or_unarchive_photo": "Αρχειοθέτηση ή αποαρχειοθέτηση φωτογραφίας",
"archive_page_no_archived_assets": "Δε βρέθηκαν αρχειοθετημένα στοιχεία",
"archive_page_title": "Αρχείο ({count})",
@@ -489,6 +511,7 @@
"back_close_deselect": "Πίσω, κλείσιμο ή αποεπιλογή",
"background_location_permission": "Άδεια τοποθεσίας στο παρασκήνιο",
"background_location_permission_content": "Το Immich για να μπορεί να αλλάζει δίκτυα όταν τρέχει στο παρασκήνιο, πρέπει *πάντα* να έχει πρόσβαση στην ακριβή τοποθεσία ώστε η εφαρμογή να μπορεί να διαβάζει το όνομα του δικτύου Wi-Fi",
"backup": "Αντίγραφα ασφαλείας",
"backup_album_selection_page_albums_device": "Άλμπουμ στη συσκευή ({count})",
"backup_album_selection_page_albums_tap": "Πάτημα για συμπερίληψη, διπλό πάτημα για εξαίρεση",
"backup_album_selection_page_assets_scatter": "Τα στοιχεία μπορεί να διασκορπιστούν σε πολλά άλμπουμ. Έτσι, τα άλμπουμ μπορούν να περιληφθούν ή να εξαιρεθούν κατά τη διαδικασία δημιουργίας αντιγράφων ασφαλείας.",
@@ -552,6 +575,8 @@
"backup_options_page_title": "Επιλογές αντιγράφων ασφαλείας",
"backup_setting_subtitle": "Διαχείριση ρυθμίσεων μεταφόρτωσης στο παρασκήνιο και στο προσκήνιο",
"backward": "Προς τα πίσω",
"beta_sync": "Κατάσταση Συγχρονισμού Beta (δοκιμαστική)",
"beta_sync_subtitle": "Διαχείριση του νέου συστήματος συγχρονισμού",
"biometric_auth_enabled": "Βιομετρική ταυτοποίηση ενεργοποιήθηκε",
"biometric_locked_out": "Είστε κλειδωμένοι εκτός της βιομετρικής ταυτοποίησης",
"biometric_no_options": "Δεν υπάρχουν διαθέσιμοι τρόποι βιομετρικής ταυτοποίησης",
@@ -586,6 +611,7 @@
"cancel": "Ακύρωση",
"cancel_search": "Ακύρωση αναζήτησης",
"canceled": "Ακυρωμένο",
"canceling": "Ακυρώνεται",
"cannot_merge_people": "Αδύνατη η συγχώνευση ατόμων",
"cannot_undo_this_action": "Δεν μπορείτε να αναιρέσετε αυτήν την ενέργεια!",
"cannot_update_the_description": "Αδύνατη η ενημέρωση της περιγραφής",
@@ -699,9 +725,11 @@
"current_server_address": "Τρέχουσα διεύθυνση διακομιστή",
"custom_locale": "Προσαρμοσμένη Τοπική Ρύθμιση",
"custom_locale_description": "Μορφοποιήστε τις ημερομηνίες και τους αριθμούς, σύμφωνα με τη γλώσσα και την περιοχή",
"custom_url": "Προσαρμοσμένη διεύθυνση URL",
"daily_title_text_date": "Ε, MMM dd",
"daily_title_text_date_year": "Ε, MMM dd, yyyy",
"dark": "Σκούρο",
"dark_theme": "Εναλλαγή σκοτεινής εμφάνισης",
"date_after": "Ημερομηνία μετά",
"date_and_time": "Ημερομηνία και ώρα",
"date_before": "Ημερομηνία πριν",
@@ -717,6 +745,8 @@
"default_locale": "Προεπιλεγμένη Τοπική Ρύθμιση",
"default_locale_description": "Μορφοποιήστε τις ημερομηνίες και τους αριθμούς με βάση την τοπική ρύθμιση του προγράμματος περιήγησής σας",
"delete": "Διαγραφή",
"delete_action_confirmation_message": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το αρχείο; Αυτή η ενέργεια θα το μετακινήσει στον κάδο απορριμμάτων του διακομιστή και θα εμφανιστεί μήνυμα για το αν θέλετε να το διαγράψετε και τοπικά",
"delete_action_prompt": "{count} διαγράφηκαν",
"delete_album": "Διαγραφή άλμπουμ",
"delete_api_key_prompt": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό κλειδί API;",
"delete_dialog_alert": "Αυτά τα αντικείμενα θα διαγραφούν οριστικά από το Immich και από τη συσκευή σας",
@@ -730,9 +760,12 @@
"delete_key": "Διαγραφή κλειδιού",
"delete_library": "Διαγραφή Βιβλιοθήκης",
"delete_link": "Διαγραφή συνδέσμου",
"delete_local_action_prompt": "{count} διαγράφηκαν τοπικά",
"delete_local_dialog_ok_backed_up_only": "Διαγραφή μόνο των αντιγράφων ασφαλείας",
"delete_local_dialog_ok_force": "Διαγραφή όπως και να έχει",
"delete_others": "Διαγραφή υπολοίπων",
"delete_permanently": "Διαγραφή οριστικά",
"delete_permanently_action_prompt": "{count} διαγράφηκε οριστικά",
"delete_shared_link": "Διαγραφή κοινόχρηστου συνδέσμου",
"delete_shared_link_dialog_title": "Διαγραφή Κοινοποιημένου Συνδέσμου",
"delete_tag": "Διαγραφή ετικέτας",
@@ -743,6 +776,7 @@
"description": "Περιγραφή",
"description_input_hint_text": "Προσθήκη περιγραφής...",
"description_input_submit_error": "Σφάλμα κατά την ενημέρωση της περιγραφής, ελέγξτε το αρχείο καταγραφής για περισσότερες λεπτομέρειες",
"deselect_all": "Ακύρωση όλων των επιλογών",
"details": "Λεπτομέρειες",
"direction": "Κατεύθυνση",
"disabled": "Απενεργοποιημένο",
@@ -760,6 +794,7 @@
"documentation": "Τεκμηρίωση",
"done": "Έγινε",
"download": "Λήψη",
"download_action_prompt": "Κατέβασμα {count} στοιχείων",
"download_canceled": "Η λήψη ακυρώθηκε",
"download_complete": "Η λήψη ολοκληρώθηκε",
"download_enqueue": "Η λήψη τέθηκε σε ουρά",
@@ -797,6 +832,7 @@
"edit_key": "Επεξεργασία κλειδιού",
"edit_link": "Επεξεργασία συνδέσμου",
"edit_location": "Επεξεργασία τοποθεσίας",
"edit_location_action_prompt": "Επεξεργάστηκαν {count} τοποθεσίες",
"edit_location_dialog_title": "Τοποθεσία",
"edit_name": "Επεξεργασία ονόματος",
"edit_people": "Επεξεργασία ατόμων",
@@ -815,6 +851,7 @@
"empty_trash": "Άδειασμα κάδου απορριμμάτων",
"empty_trash_confirmation": "Είστε σίγουροι οτι θέλετε να αδειάσετε τον κάδο απορριμμάτων; Αυτό θα αφαιρέσει μόνιμα όλα τα στοιχεία του κάδου απορριμμάτων του Immich. \nΑυτή η ενέργεια δεν μπορεί να αναιρεθεί!",
"enable": "Ενεργοποίηση",
"enable_backup": "Ενεργοποίηση αντιγράφου ασφαλείας",
"enable_biometric_auth_description": "Εισάγετε τον κωδικό PIN σας για να ενεργοποιήσετε την βιομετρική ταυτοποίηση",
"enabled": "Ενεργοποιημένο",
"end_date": "Τελική ημερομηνία",
@@ -971,6 +1008,8 @@
"explorer": "Περιηγητής",
"export": "Εξαγωγή",
"export_as_json": "Εξαγωγή ως JSON",
"export_database": "Εξαγωγή βάσης δεδομένων",
"export_database_description": "Εξαγωγή της SQLite βάσης δεδομένων",
"extension": "Επέκταση",
"external": "Εξωτερικός",
"external_libraries": "Εξωτερικές βιβλιοθήκες",
@@ -982,6 +1021,7 @@
"failed_to_load_assets": "Αποτυχία φόρτωσης στοιχείων",
"failed_to_load_folder": "Αποτυχία φόρτωσης φακέλου",
"favorite": "Αγαπημένο",
"favorite_action_prompt": "Προστέθηκαν {count} στα Αγαπημένα",
"favorite_or_unfavorite_photo": "Ορίστε μία φωτογραφία ως αγαπημένη ή αφαιρέστε την από τα αγαπημένα",
"favorites": "Αγαπημένα",
"favorites_page_no_favorites": "Δεν βρέθηκαν αγαπημένα στοιχεία",
@@ -1021,6 +1061,9 @@
"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": "Όνομα κεφαλίδας",
@@ -1053,6 +1096,7 @@
"host": "Φιλοξενία",
"hour": "Ώρα",
"id": "ID",
"idle": "Αδράνεια",
"ignore_icloud_photos": "Αγνοήστε τις φωτογραφίες iCloud",
"ignore_icloud_photos_description": "Οι φωτογραφίες που είναι αποθηκευμένες στο iCloud δεν θα μεταφορτωθούν στον διακομιστή Immich",
"image": "Εικόνα",
@@ -1110,6 +1154,7 @@
"language_no_results_title": "Δε βρέθηκαν γλώσσες",
"language_search_hint": "Αναζήτηση γλωσσών...",
"language_setting_description": "Επιλέξτε τη γλώσσα που προτιμάτε",
"large_files": "Μεγάλα Αρχεία",
"last_seen": "Τελευταία προβολή",
"latest_version": "Τελευταία Έκδοση",
"latitude": "Γεωγραφικό πλάτος",
@@ -1125,16 +1170,18 @@
"library_page_sort_created": "Ημερομηνία δημιουργίας",
"library_page_sort_last_modified": "Τελευταία τροποποίηση",
"library_page_sort_title": "Τίτλος άλμπουμ",
"licenses": "Άδειες",
"light": "Φωτεινό",
"like_deleted": "Το \"μου αρέσει\" διαγράφηκε",
"link_motion_video": "Σύνδεσε βίντεο κίνησης",
"link_options": "Επιλογές συνδέσμου",
"link_to_oauth": "Σύνδεση στον OAuth",
"linked_oauth_account": "Ο OAuth λογαριασμός συνδέθηκε",
"list": "Λίστα",
"loading": "Φόρτωση",
"loading_search_results_failed": "Η φόρτωση αποτελεσμάτων αναζήτησης απέτυχε",
"local": "Τοπικά",
"local_asset_cast_failed": "Αδυναμία μετάδοσης στοιχείου που δεν έχει ανέβει στον διακομιστή",
"local_assets": "Τοπικά στοιχεία",
"local_network": "Τοπικό δίκτυο",
"local_network_sheet_info": "Η εφαρμογή θα συνδεθεί με τον διακομιστή μέσω αυτού του URL όταν χρησιμοποιείται το καθορισμένο δίκτυο Wi-Fi",
"location_permission": "Άδεια τοποθεσίας",
@@ -1191,8 +1238,7 @@
"manage_your_devices": "Διαχειριστείτε τις συνδεδεμένες συσκευές σας",
"manage_your_oauth_connection": "Διαχειριστείτε τη σύνδεσή σας OAuth",
"map": "Χάρτης",
"map_assets_in_bound": "{count} φωτογραφία",
"map_assets_in_bounds": "{count} φωτογραφίες",
"map_assets_in_bounds": "{count, plural, one {# φωτογραφία} other {# φωτογραφίες}}",
"map_cannot_get_user_location": "Δεν είναι δυνατή η λήψη της τοποθεσίας του χρήστη",
"map_location_dialog_yes": "Ναι",
"map_location_picker_page_use_location": "Χρησιμοποιήστε αυτήν την τοποθεσία",
@@ -1244,6 +1290,7 @@
"more": "Περισσότερα",
"move": "Μετακίνηση",
"move_off_locked_folder": "Μετακίνηση έξω από τον κλειδωμένο φάκελο",
"move_to_lock_folder_action_prompt": "Προστέθηκαν {count} στον κλειδωμένο φάκελο",
"move_to_locked_folder": "Μετακίνηση σε κλειδωμένο φάκελο",
"move_to_locked_folder_confirmation": "Αυτές οι φωτογραφίες και τα βίντεο θα αφαιρεθούν από όλα τα άλμπουμ και θα μπορούν να προβληθούν μόνο από τον κλειδωμένο φάκελο",
"moved_to_archive": "Μετακινήθηκαν {count, plural, one {# στοιχείο} other {# στοιχεία}} στο αρχείο",
@@ -1290,6 +1337,7 @@
"no_results": "Κανένα αποτέλεσμα",
"no_results_description": "Δοκιμάστε ένα συνώνυμο ή πιο γενική λέξη-κλειδί",
"no_shared_albums_message": "Δημιουργήστε ένα άλμπουμ για να μοιράζεστε φωτογραφίες και βίντεο με άτομα στο δίκτυό σας",
"no_uploads_in_progress": "Καμία μεταφόρτωση σε εξέλιξη",
"not_in_any_album": "Σε κανένα άλμπουμ",
"not_selected": "Δεν επιλέχθηκε",
"note_apply_storage_label_to_previously_uploaded assets": "Σημείωση: Για να εφαρμόσετε την Ετικέτα Αποθήκευσης σε στοιχεία που έχουν μεταφορτωθεί προηγουμένως, εκτελέστε το",
@@ -1327,6 +1375,7 @@
"original": "πρωτότυπο",
"other": "Άλλες",
"other_devices": "Άλλες συσκευές",
"other_entities": "Άλλες οντότητες",
"other_variables": "Άλλες μεταβλητές",
"owned": "Δικά μου",
"owner": "Κάτοχος",
@@ -1458,6 +1507,7 @@
"purchase_server_description_2": "Κατάσταση υποστηρικτή",
"purchase_server_title": "Διακομιστής",
"purchase_settings_server_activated": "Η διαχείριση του κλειδιού προϊόντος του διακομιστή γίνεται από τον διαχειριστή",
"queue_status": "Τοποθέτηση στη ουρά {count} από {total}",
"rating": "Αξιολόγηση με αστέρια",
"rating_clear": "Εκκαθάριση αξιολόγησης",
"rating_count": "{count, plural, one {# αστέρι} other {# αστέρια}}",
@@ -1486,6 +1536,8 @@
"refreshing_faces": "Ανανεώνονται πρόσωπα",
"refreshing_metadata": "Τα μεταδεδομένα ανανεώνονται",
"regenerating_thumbnails": "Οι μικρογραφίες αναγεννώνται",
"remote": "Απομακρυσμένος",
"remote_assets": "Απομακρυσμένα στοιχεία",
"remove": "Αφαίρεση",
"remove_assets_album_confirmation": "Είστε σίγουροι ότι θέλετε να αφαιρέσετε {count, plural, one {# στοιχείο} other {# στοιχεία}} από το άλμπουμ;",
"remove_assets_shared_link_confirmation": "Είστε σίγουροι ότι θέλετε να αφαιρέσετε {count, plural, one {# στοιχείο} other {# στοιχεία}} από αυτόν τον κοινόχρηστο σύνδεσμο;",
@@ -1493,7 +1545,9 @@
"remove_custom_date_range": "Αφαίρεση προσαρμοσμένης χρονικής περιόδου",
"remove_deleted_assets": "Αφαίρεση Διεγραμμένων Στοιχείων",
"remove_from_album": "Αφαίρεση από το άλμπουμ",
"remove_from_album_action_prompt": "{count} αφαιρέθηκαν από το άλμπουμ",
"remove_from_favorites": "Αφαίρεση από τα αγαπημένα",
"remove_from_lock_folder_action_prompt": "{count} αφαιρέθηκαν από τον κλειδωμένο φάκελο",
"remove_from_locked_folder": "Αφαίρεση από κλειδωμένο φάκελο",
"remove_from_locked_folder_confirmation": "Είστε σίγουροι ότι θέλετε να μετακινήσετε αυτές τις φωτογραφίες και τα βίντεο από τον κλειδωμένο φάκελο; Θα είναι πλέον ορατές στη βιβλιοθήκη σας.",
"remove_from_shared_link": "Αφαίρεση από τον κοινόχρηστο σύνδεσμο",
@@ -1521,19 +1575,25 @@
"reset_password": "Επαναφορά κωδικού πρόσβασης",
"reset_people_visibility": "Επαναφορά προβολής ατόμων",
"reset_pin_code": "Επαναφορά κωδικού PIN",
"reset_sqlite": "Επαναφορά SQLite βάσης δεδομένων",
"reset_sqlite_confirmation": "Είσαι σίγουρος ότι θέλεις να επαναφέρεις τη βάση δεδομένων SQLite; Θα χρειαστεί να κάνεις αποσύνδεση και επανασύνδεση για να επανασυγχρονίσεις τα δεδομένα",
"reset_sqlite_success": "Η επαναφορά της SQLite βάσης δεδομένων ολοκληρώθηκε με επιτυχία",
"reset_to_default": "Επαναφορά στις προεπιλογές",
"resolve_duplicates": "Επίλυση διπλοτύπων",
"resolved_all_duplicates": "Επιλύθηκαν όλα τα διπλότυπα",
"restore": "Ανάκτηση",
"restore_all": "Ανάκτηση όλων",
"restore_trash_action_prompt": "{count} ανακτήθηκαν από τα απορρίμματα",
"restore_user": "Επαναφορά χρήστη",
"restored_asset": "Ανακτήθηκε το αρχείο",
"resume": "Συνέχιση",
"retry_upload": "Επανάληψη ανεβάσματος",
"review_duplicates": "Προβολή διπλότυπων",
"review_large_files": "Επισκόπηση μεγάλων αρχείων",
"role": "Ρόλος",
"role_editor": "Επεξεργαστής",
"role_viewer": "Θεατής",
"running": "Σε λειτουργία",
"save": "Αποθήκευση",
"save_to_gallery": "Αποθήκευση στη συλλογή",
"saved_api_key": "Αποθηκευμένο API key",
@@ -1665,6 +1725,7 @@
"settings_saved": "Οι ρυθμίσεις αποθηκεύτηκαν",
"setup_pin_code": "Ρύθμιση κωδικού PIN",
"share": "Κοινοποίηση",
"share_action_prompt": "Κοινή χρήση {count} στοιχείων",
"share_add_photos": "Προσθήκη φωτογραφιών",
"share_assets_selected": "{count} επιλεγμένα",
"share_dialog_preparing": "Προετοιμασία...",
@@ -1686,6 +1747,7 @@
"shared_link_clipboard_copied_massage": "Αντιγράφηκε στο πρόχειρο",
"shared_link_clipboard_text": "Σύνδεσμος: {link}\nΚωδικός πρόσβασης: {password}",
"shared_link_create_error": "Σφάλμα κατά τη δημιουργία κοινόχρηστου συνδέσμου",
"shared_link_custom_url_description": "Αποκτήστε πρόσβαση σε αυτόν τον κοινόχρηστο σύνδεσμο με μια προσαρμοσμένη διεύθυνση URL",
"shared_link_edit_description_hint": "Εισαγάγετε την περιγραφή της κοινής χρήσης",
"shared_link_edit_expire_after_option_day": "1 ημέρα",
"shared_link_edit_expire_after_option_days": "{count} ημέρες",
@@ -1711,6 +1773,7 @@
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Διαχείριση Κοινόχρηστων Συνδέσμων",
"shared_link_options": "Επιλογές κοινόχρηστου συνδέσμου",
"shared_link_password_description": "Απαίτηση κωδικού για πρόσβαση στον κοινοποιημένο σύνδεσμο",
"shared_links": "Κοινόχρηστοι σύνδεσμοι",
"shared_links_description": "Μοιραστείτε φωτογραφίες και βίντεο με σύνδεσμο",
"shared_photos_and_videos_count": "{assetCount, plural, other {# κοινόχρηστες φωτογραφίες & βίντεο.}}",
@@ -1766,6 +1829,7 @@
"sort_title": "Τίτλος",
"source": "Πηγή",
"stack": "Στοίβα",
"stack_action_prompt": "{count} συσσωρεύτηκαν",
"stack_duplicates": "Στοίβαξη διπλότυπων",
"stack_select_one_photo": "Επιλέξτε μια κύρια φωτογραφία για τη στοίβαξη",
"stack_selected_photos": "Στοίβαγμα επιλεγμένων φωτογραφιών",
@@ -1785,6 +1849,7 @@
"storage_quota": "Ποσοστό αποθηκευτικού χώρου",
"storage_usage": "{used} από {available} σε χρήση",
"submit": "Υποβολή",
"success": "Επιτυχία",
"suggestions": "Προτάσεις",
"sunrise_on_the_beach": "Ηλιοβασίλεμα στην παραλία",
"support": "Υποστήριξη",
@@ -1794,6 +1859,8 @@
"sync": "Συγχρονισμός",
"sync_albums": "Συγχρονισμός άλμπουμ",
"sync_albums_manual_subtitle": "Συγχρονίστε όλα τα μεταφορτωμένα βίντεο και φωτογραφίες με τα επιλεγμένα εφεδρικά άλμπουμ",
"sync_local": "Τοπικός Συγχρονισμός",
"sync_remote": "Απομακρυσμένος Συγχρονισμός",
"sync_upload_album_setting_subtitle": "Δημιουργήστε και ανεβάστε τις φωτογραφίες και τα βίντεό σας στα επιλεγμένα άλμπουμ στο Immich",
"tag": "Ετικέτα",
"tag_assets": "Ετικετοποίηση στοιχείων",
@@ -1804,6 +1871,7 @@
"tag_updated": "Ενημερώθηκε η ετικέτα: {tag}",
"tagged_assets": "Ετικετοποιημένο/α {count, plural, one {# στοιχείο} other {# στοιχεία}}",
"tags": "Ετικέτες",
"tap_to_run_job": "Πατήστε για να ξεκινήσει η εργασία",
"template": "Πρότυπο",
"theme": "Θέμα",
"theme_selection": "Επιλογή θέματος",
@@ -1836,6 +1904,7 @@
"total": "Σύνολο",
"total_usage": "Συνολικη χρηση",
"trash": "Κάδος απορριμμάτων",
"trash_action_prompt": "{count} μετακινήθηκαν στα απορρίμματα",
"trash_all": "Διαγραφή Όλων",
"trash_count": "Διαγραφή {count, number}",
"trash_delete_asset": "Διαγραφή/Οριστ. Διαγραφή Αντικειμένου",
@@ -1853,9 +1922,11 @@
"unable_to_change_pin_code": "Αδυναμία αλλαγής κωδικού PIN",
"unable_to_setup_pin_code": "Αδυναμία ρύθμισης κωδικού PIN",
"unarchive": "Αναίρεση αρχειοθέτησης",
"unarchive_action_prompt": "{count} αφαιρέθηκαν από το Αρχείο",
"unarchived_count": "{count, plural, other {Αρχειοθετήσεις αναιρέθηκαν #}}",
"undo": "Αναίρεση",
"unfavorite": "Αποεπιλογή από τα αγαπημένα",
"unfavorite_action_prompt": "{count} αφαιρέθηκαν από τα Αγαπημένα",
"unhide_person": "Αναίρεση απόκρυψης ατόμου",
"unknown": "Άγνωστο",
"unknown_country": "Άγνωστη Χώρα",
@@ -1873,15 +1944,20 @@
"unselect_all_duplicates": "Αποεπιλογή όλων των διπλότυπων",
"unselect_all_in": "Αποεπιλογή όλων στο {group}",
"unstack": "Αποστοίβαξη",
"unstack_action_prompt": "{count} αποσυσσωρεύτηκαν",
"unstacked_assets_count": "Αποστοιβάξατε {count, plural, one {# στοιχείο} other {# στοιχεία}}",
"untagged": "Χωρίς ετικέτα",
"up_next": "Ακολουθεί",
"updated_at": "Ενημερωμένο",
"updated_password": "Ο κωδικός πρόσβασης ενημερώθηκε",
"upload": "Μεταφόρτωση",
"upload_action_prompt": "{count} τοποθετήθηκαν στην ουρά για μεταφόρτωση",
"upload_concurrency": "Ταυτόχρονη μεταφόρτωση",
"upload_details": "Λεπτομέρειες μεταφόρτωσης",
"upload_dialog_info": "Θέλετε να αντιγράψετε (κάνετε backup) τα επιλεγμένo(α) στοιχείο(α) στο διακομιστή;",
"upload_dialog_title": "Ανέβασμα στοιχείου",
"upload_errors": "Η μεταφόρτωση ολοκληρώθηκε με {count, plural, one {# σφάλμα} other {# σφάλματα}}, ανανεώστε τη σελίδα για να δείτε νέα στοιχεία μεταφόρτωσης.",
"upload_finished": "Ολοκλήρωση μεταφόρτωσης",
"upload_progress": "Απομένουν {remaining, number} - Ολοκληρώθηκαν {processed, number}/{total, number}",
"upload_skipped_duplicates": "Παραλείφθηκαν {count, plural, one {# διπλότυπο στοιχείο} other {# διπλότυπα στοιχεία}}",
"upload_status_duplicates": "Διπλότυπα",
@@ -1890,6 +1966,7 @@
"upload_success": "Η μεταφόρτωση ολοκληρώθηκε, ανανεώστε τη σελίδα για να δείτε τα νέα αντικείμενα.",
"upload_to_immich": "Μεταφόρτωση στο Immich ({count})",
"uploading": "Μεταφορτώνεται",
"uploading_media": "Μεταφόρτωση πολυμέσων",
"url": "URL",
"usage": "Χρήση",
"use_biometric": "Χρήση βιομετρικών στοιχείων",
@@ -1910,6 +1987,7 @@
"user_usage_stats_description": "Προβολή στατιστικών χρήσης λογαριασμού",
"username": "Όνομα Χρήστη",
"users": "Χρήστες",
"users_added_to_album_count": "Προστέθηκε {count, plural, one {# χρήστης} other {# χρήστες}} στο άλμπουμ",
"utilities": "Βοηθητικά προγράμματα",
"validate": "Επικύρωση",
"validate_endpoint_error": "Παρακαλώ εισάγετε ένα έγκυρο URL",
@@ -1928,6 +2006,7 @@
"view_album": "Προβολή Άλμπουμ",
"view_all": "Προβολή Όλων",
"view_all_users": "Προβολή όλων των χρηστών",
"view_details": "Προβολή Λεπτομερειών",
"view_in_timeline": "Προβολή στο χρονοδιάγραμμα",
"view_link": "Προβολή σύνδεσμου",
"view_links": "Προβολή συνδέσμων",

View File

@@ -14,6 +14,7 @@
"add_a_location": "Add a location",
"add_a_name": "Add a name",
"add_a_title": "Add a title",
"add_birthday": "Add a birthday",
"add_endpoint": "Add endpoint",
"add_exclusion_pattern": "Add exclusion pattern",
"add_import_path": "Add import path",
@@ -44,6 +45,13 @@
"backup_database": "Create Database Dump",
"backup_database_enable_description": "Enable database dumps",
"backup_keep_last_amount": "Amount of previous dumps to keep",
"backup_onboarding_1_description": "offsite copy in the cloud or at another physical location.",
"backup_onboarding_2_description": "local copies on different devices. This includes the main files and a backup of those files locally.",
"backup_onboarding_3_description": "total copies of your data, including the original files. This includes 1 offsite copy and 2 local copies.",
"backup_onboarding_description": "A <backblaze-link>3-2-1 backup strategy</backblaze-link> is recommended to protect your data. You should keep copies of your uploaded photos/videos as well as the Immich database for a comprehensive backup solution.",
"backup_onboarding_footer": "For more information about backing up Immich, please refer to the <link>documentation</link>.",
"backup_onboarding_parts_title": "A 3-2-1 backup includes:",
"backup_onboarding_title": "Backups",
"backup_settings": "Database Dump Settings",
"backup_settings_description": "Manage database dump settings.",
"cleared_jobs": "Cleared jobs for: {job}",
@@ -347,6 +355,9 @@
"trash_number_of_days_description": "Number of days to keep the assets in trash before permanently removing them",
"trash_settings": "Trash Settings",
"trash_settings_description": "Manage trash settings",
"unlink_all_oauth_accounts": "Unlink all OAuth accounts",
"unlink_all_oauth_accounts_description": "Remember to unlink all OAuth accounts before migrating to a new provider.",
"unlink_all_oauth_accounts_prompt": "Are you sure you want to unlink all OAuth accounts? This will reset the OAuth ID for each user and cannot be undone.",
"user_cleanup_job": "User cleanup",
"user_delete_delay": "<b>{user}</b>'s account and assets will be scheduled for permanent deletion in {delay, plural, one {# day} other {# days}}.",
"user_delete_delay_settings": "Delete delay",
@@ -397,6 +408,7 @@
"album_cover_updated": "Album cover updated",
"album_delete_confirmation": "Are you sure you want to delete the album {album}?",
"album_delete_confirmation_description": "If this album is shared, other users will not be able to access it anymore.",
"album_deleted": "Album deleted",
"album_info_card_backup_album_excluded": "EXCLUDED",
"album_info_card_backup_album_included": "INCLUDED",
"album_info_updated": "Album info updated",
@@ -510,6 +522,7 @@
"back_close_deselect": "Back, close, or deselect",
"background_location_permission": "Background location permission",
"background_location_permission_content": "In order to switch networks when running in the background, Immich must *always* have precise location access so the app can read the Wi-Fi network's name",
"backup": "Backup",
"backup_album_selection_page_albums_device": "Albums on device ({count})",
"backup_album_selection_page_albums_tap": "Tap to include, double tap to exclude",
"backup_album_selection_page_assets_scatter": "Assets can scatter across multiple albums. Thus, albums can be included or excluded during the backup process.",
@@ -570,8 +583,10 @@
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"backup_options": "Backup Options",
"backup_options_page_title": "Backup options",
"backup_setting_subtitle": "Manage background and foreground upload settings",
"backup_settings_subtitle": "Manage upload settings",
"backward": "Backward",
"beta_sync": "Beta Sync Status",
"beta_sync_subtitle": "Manage the new sync system",
@@ -641,6 +656,7 @@
"clear": "Clear",
"clear_all": "Clear all",
"clear_all_recent_searches": "Clear all recent searches",
"clear_file_cache": "Clear File Cache",
"clear_message": "Clear message",
"clear_value": "Clear value",
"client_cert_dialog_msg_confirm": "OK",
@@ -711,6 +727,7 @@
"create_new_user": "Create new user",
"create_shared_album_page_share_add_assets": "ADD ASSETS",
"create_shared_album_page_share_select_photos": "Select Photos",
"create_shared_link": "Create shared link",
"create_tag": "Create tag",
"create_tag_description": "Create a new tag. For nested tags, please enter the full path of the tag including forward slashes.",
"create_user": "Create user",
@@ -723,6 +740,7 @@
"current_server_address": "Current server address",
"custom_locale": "Custom Locale",
"custom_locale_description": "Format dates and numbers based on the language and the region",
"custom_url": "Custom URL",
"daily_title_text_date": "E, MMM dd",
"daily_title_text_date_year": "E, MMM dd, yyyy",
"dark": "Dark",
@@ -734,6 +752,7 @@
"date_of_birth_saved": "Date of birth saved successfully",
"date_range": "Date range",
"day": "Day",
"days": "Days",
"deduplicate_all": "Deduplicate All",
"deduplication_criteria_1": "Image size in bytes",
"deduplication_criteria_2": "Count of EXIF data",
@@ -742,7 +761,8 @@
"default_locale": "Default Locale",
"default_locale_description": "Format dates and numbers based on your browser locale",
"delete": "Delete",
"delete_action_prompt": "{count} deleted permanently",
"delete_action_confirmation_message": "Are you sure you want to delete this asset? This action will move the asset to the server's trash and will prompt if you want to delete it locally",
"delete_action_prompt": "{count} deleted",
"delete_album": "Delete album",
"delete_api_key_prompt": "Are you sure you want to delete this API key?",
"delete_dialog_alert": "These items will be permanently deleted from Immich and from your device",
@@ -760,6 +780,8 @@
"delete_local_dialog_ok_backed_up_only": "Delete Backed Up Only",
"delete_local_dialog_ok_force": "Delete Anyway",
"delete_others": "Delete others",
"delete_permanently": "Delete permanently",
"delete_permanently_action_prompt": "{count} deleted permanently",
"delete_shared_link": "Delete shared link",
"delete_shared_link_dialog_title": "Delete Shared Link",
"delete_tag": "Delete tag",
@@ -815,8 +837,12 @@
"edit": "Edit",
"edit_album": "Edit album",
"edit_avatar": "Edit avatar",
"edit_birthday": "Edit birthday",
"edit_date": "Edit date",
"edit_date_and_time": "Edit date and time",
"edit_date_and_time_action_prompt": "{count} date and time edited",
"edit_date_and_time_by_offset": "Change date by offset",
"edit_date_and_time_by_offset_interval": "New date range: {from} - {to}",
"edit_description": "Edit description",
"edit_description_prompt": "Please select a new description:",
"edit_exclusion_pattern": "Edit exclusion pattern",
@@ -889,6 +915,7 @@
"failed_to_load_notifications": "Failed to load notifications",
"failed_to_load_people": "Failed to load people",
"failed_to_remove_product_key": "Failed to remove product key",
"failed_to_reset_pin_code": "Failed to reset PIN code",
"failed_to_stack_assets": "Failed to stack assets",
"failed_to_unstack_assets": "Failed to un-stack assets",
"failed_to_update_notification_status": "Failed to update notification status",
@@ -897,6 +924,7 @@
"paths_validation_failed": "{paths, plural, one {# path} other {# paths}} failed validation",
"profile_picture_transparent_pixels": "Profile pictures cannot have transparent pixels. Please zoom in and/or move the image.",
"quota_higher_than_disk_size": "You set a quota higher than the disk size",
"something_went_wrong": "Something went wrong",
"unable_to_add_album_users": "Unable to add users to album",
"unable_to_add_assets_to_shared_link": "Unable to add assets to shared link",
"unable_to_add_comment": "Unable to add comment",
@@ -982,13 +1010,11 @@
},
"exif": "Exif",
"exif_bottom_sheet_description": "Add Description...",
"exif_bottom_sheet_description_error": "Error updating description",
"exif_bottom_sheet_details": "DETAILS",
"exif_bottom_sheet_location": "LOCATION",
"exif_bottom_sheet_people": "PEOPLE",
"exif_bottom_sheet_person_add_person": "Add name",
"exif_bottom_sheet_person_age_months": "Age {months} months",
"exif_bottom_sheet_person_age_year_months": "Age 1 year, {months} months",
"exif_bottom_sheet_person_age_years": "Age {years}",
"exit_slideshow": "Exit Slideshow",
"expand_all": "Expand all",
"experimental_settings_new_asset_list_subtitle": "Work in progress",
@@ -1035,6 +1061,7 @@
"folder_not_found": "Folder not found",
"folders": "Folders",
"folders_feature_description": "Browsing the folder view for the photos and videos on the file system",
"forgot_pin_code_question": "Forgot your PIN?",
"forward": "Forward",
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "This feature loads external resources from Google in order to work.",
@@ -1089,6 +1116,7 @@
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"host": "Host",
"hour": "Hour",
"hours": "Hours",
"id": "ID",
"idle": "Idle",
"ignore_icloud_photos": "Ignore iCloud photos",
@@ -1148,10 +1176,12 @@
"language_no_results_title": "No languages found",
"language_search_hint": "Search languages...",
"language_setting_description": "Select your preferred language",
"large_files": "Large Files",
"last_seen": "Last seen",
"latest_version": "Latest Version",
"latitude": "Latitude",
"leave": "Leave",
"leave_album": "Leave album",
"lens_model": "Lens model",
"let_others_respond": "Let others respond",
"level": "Level",
@@ -1165,9 +1195,9 @@
"library_page_sort_title": "Album title",
"licenses": "Licenses",
"light": "Light",
"like": "Like",
"like_deleted": "Like deleted",
"link_motion_video": "Link motion video",
"link_options": "Link options",
"link_to_oauth": "Link to OAuth",
"linked_oauth_account": "Linked OAuth account",
"list": "List",
@@ -1232,8 +1262,7 @@
"manage_your_devices": "Manage your logged-in devices",
"manage_your_oauth_connection": "Manage your OAuth connection",
"map": "Map",
"map_assets_in_bound": "{count} photo",
"map_assets_in_bounds": "{count} photos",
"map_assets_in_bounds": "{count, plural, =0 {No photos in this area} one {# photo} other {# photos}}",
"map_cannot_get_user_location": "Cannot get user's location",
"map_location_dialog_yes": "Yes",
"map_location_picker_page_use_location": "Use this location",
@@ -1241,7 +1270,6 @@
"map_location_service_disabled_title": "Location Service disabled",
"map_marker_for_images": "Map marker for images taken in {city}, {country}",
"map_marker_with_image": "Map marker with image",
"map_no_assets_in_bounds": "No photos in this area",
"map_no_location_permission_content": "Location permission is needed to display assets from your current location. Do you want to allow it now?",
"map_no_location_permission_title": "Location Permission denied",
"map_settings": "Map settings",
@@ -1278,6 +1306,7 @@
"merged_people_count": "Merged {count, plural, one {# person} other {# people}}",
"minimize": "Minimize",
"minute": "Minute",
"minutes": "Minutes",
"missing": "Missing",
"model": "Model",
"month": "Month",
@@ -1297,6 +1326,9 @@
"my_albums": "My albums",
"name": "Name",
"name_or_nickname": "Name or nickname",
"network_requirement_photos_upload": "Use cellular data to backup photos",
"network_requirement_videos_upload": "Use cellular data to backup videos",
"network_requirements_updated": "Network requirements changed, resetting backup queue",
"networking_settings": "Networking",
"networking_subtitle": "Manage the server endpoint settings",
"never": "Never",
@@ -1348,6 +1380,7 @@
"oauth": "OAuth",
"official_immich_resources": "Official Immich Resources",
"offline": "Offline",
"offset": "Offset",
"ok": "Ok",
"oldest_first": "Oldest first",
"on_this_device": "On this device",
@@ -1425,6 +1458,9 @@
"permission_onboarding_permission_limited": "Permission limited. To let Immich backup and manage your entire gallery collection, grant photo and video permissions in Settings.",
"permission_onboarding_request": "Immich requires permission to view your photos and videos.",
"person": "Person",
"person_age_months": "{months, plural, one {# month} other {# months}} old",
"person_age_year_months": "1 year, {months, plural, one {# month} other {# months}} old",
"person_age_years": "{years, plural, other {# years}} old",
"person_birthdate": "Born on {date}",
"person_hidden": "{name}{hidden, select, true { (hidden)} other {}}",
"photo_shared_all_users": "Looks like you shared your photos with all users or you don't have any user to share with.",
@@ -1570,6 +1606,9 @@
"reset_password": "Reset password",
"reset_people_visibility": "Reset people visibility",
"reset_pin_code": "Reset PIN code",
"reset_pin_code_description": "If you forgot your PIN code, you can contact the server administrator to reset it",
"reset_pin_code_success": "Successfully reset PIN code",
"reset_pin_code_with_password": "You can always reset your PIN code with your password",
"reset_sqlite": "Reset SQLite Database",
"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",
@@ -1584,6 +1623,7 @@
"resume": "Resume",
"retry_upload": "Retry upload",
"review_duplicates": "Review duplicates",
"review_large_files": "Review large files",
"role": "Role",
"role_editor": "Editor",
"role_viewer": "Viewer",
@@ -1741,6 +1781,7 @@
"shared_link_clipboard_copied_massage": "Copied to clipboard",
"shared_link_clipboard_text": "Link: {link}\nPassword: {password}",
"shared_link_create_error": "Error while creating shared link",
"shared_link_custom_url_description": "Access this shared link with a custom URL",
"shared_link_edit_description_hint": "Enter the share description",
"shared_link_edit_expire_after_option_day": "1 day",
"shared_link_edit_expire_after_option_days": "{count} days",
@@ -1766,6 +1807,7 @@
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Manage Shared links",
"shared_link_options": "Shared link options",
"shared_link_password_description": "Require a password to access this shared link",
"shared_links": "Shared links",
"shared_links_description": "Share photos and videos with a link",
"shared_photos_and_videos_count": "{assetCount, plural, other {# shared photos & videos.}}",
@@ -1815,6 +1857,7 @@
"sort_created": "Date created",
"sort_items": "Number of items",
"sort_modified": "Date modified",
"sort_newest": "Newest photo",
"sort_oldest": "Oldest photo",
"sort_people_by_similarity": "Sort people by similarity",
"sort_recent": "Most recent photo",

View File

@@ -182,7 +182,7 @@
"nightly_tasks_sync_quota_usage_setting_description": "Actualizar la cuota de almacenamiento del usuario, según el uso actual",
"no_paths_added": "No se han añadido carpetas",
"no_pattern_added": "No se han añadido patrones",
"note_apply_storage_label_previous_assets": "Nota: para aplicar una Etiqueta de Almacenamiento a un elemento anteriormente cargado, lanza el",
"note_apply_storage_label_previous_assets": "Nota: para aplicar una Etiqueta de Almacenamiento a un elemento anteriormente subido, lanza el",
"note_cannot_be_changed_later": "NOTA: ¡No se puede cambiar posteriormente!",
"notification_email_from_address": "Desde",
"notification_email_from_address_description": "Dirección de correo electrónico del remitente, por ejemplo: \"Immich Photo Server <noreply@example.com>\". Asegúrate de utilizar una dirección desde la que puedas enviar correos electrónicos.",
@@ -263,7 +263,7 @@
"storage_template_onboarding_description_v2": "Al habilitar esta función, los archivos se organizarán automáticamente según la plantilla definida por el usuario. Para más información, consulte la <link>documentación</link>.",
"storage_template_path_length": "Límite aproximado de la longitud de la ruta: <b>{length, number}</b>/{limit, number}",
"storage_template_settings": "Plantilla de almacenamiento",
"storage_template_settings_description": "Administrar la estructura de carpetas y el nombre de archivo del recurso cargado",
"storage_template_settings_description": "Administrar la estructura de carpetas y el nombre de archivo del recurso subido",
"storage_template_user_label": "<code>{label}</code> es la etiqueta de almacenamiento del usuario",
"system_settings": "Ajustes del Sistema",
"tag_cleanup_job": "Limpieza de etiquetas",
@@ -397,6 +397,7 @@
"album_cover_updated": "Portada del álbum actualizada",
"album_delete_confirmation": "¿Estás seguro de que deseas eliminar el álbum {album}?",
"album_delete_confirmation_description": "Si este álbum se comparte, otros usuarios ya no podrán acceder a él.",
"album_deleted": "Álbum eliminado",
"album_info_card_backup_album_excluded": "EXCLUIDOS",
"album_info_card_backup_album_included": "INCLUIDOS",
"album_info_updated": "Información del álbum actualizada",
@@ -406,6 +407,7 @@
"album_options": "Opciones del Album",
"album_remove_user": "¿Eliminar usuario?",
"album_remove_user_confirmation": "¿Estás seguro de que quieres eliminar a {user}?",
"album_search_not_found": "No se encontraron álbumes que coincidan con tu búsqueda",
"album_share_no_users": "Parece que has compartido este álbum con todos los usuarios o no tienes ningún usuario con quien compartirlo.",
"album_updated": "Album actualizado",
"album_updated_setting_description": "Reciba una notificación por correo electrónico cuando un álbum compartido tenga nuevos archivos",
@@ -425,6 +427,7 @@
"albums_default_sort_order": "Ordenación por defecto de los álbumes",
"albums_default_sort_order_description": "Orden de clasificación inicial de los recursos al crear nuevos álbumes.",
"albums_feature_description": "Colecciones de recursos que pueden ser compartidos con otros usuarios.",
"albums_on_device_count": "Álbumes en el dispositivo ({count})",
"all": "Todos",
"all_albums": "Todos los albums",
"all_people": "Todas las personas",
@@ -508,6 +511,7 @@
"back_close_deselect": "Atrás, cerrar o anular la selección",
"background_location_permission": "Permiso de ubicación en segundo plano",
"background_location_permission_content": "Para poder cambiar de red mientras se ejecuta en segundo plano, Immich debe tener *siempre* acceso a la ubicación precisa para que la aplicación pueda leer el nombre de la red Wi-Fi",
"backup": "Copia de Seguridad",
"backup_album_selection_page_albums_device": "Álbumes en el dispositivo ({count})",
"backup_album_selection_page_albums_tap": "Toque para incluir, doble toque para excluir",
"backup_album_selection_page_assets_scatter": "Los elementos pueden dispersarse en varios álbumes. De este modo, los álbumes pueden ser incluidos o excluidos durante el proceso de copia de seguridad.",
@@ -571,6 +575,8 @@
"backup_options_page_title": "Opciones de Copia de Seguridad",
"backup_setting_subtitle": "Administra las configuraciones de respaldo en segundo y primer plano",
"backward": "Retroceder",
"beta_sync": "Estado de Sincronización Beta",
"beta_sync_subtitle": "Administrar el nuevo sistema de sincronización",
"biometric_auth_enabled": "Autentificación biométrica habilitada",
"biometric_locked_out": "Estás bloqueado de la autentificación biométrica",
"biometric_no_options": "Sin opciones biométricas disponibles",
@@ -588,7 +594,7 @@
"cache_settings_clear_cache_button": "Borrar caché",
"cache_settings_clear_cache_button_title": "Borra la caché de la aplicación. Esto afectará significativamente el rendimiento de la aplicación hasta que se reconstruya la caché.",
"cache_settings_duplicated_assets_clear_button": "LIMPIAR",
"cache_settings_duplicated_assets_subtitle": "Fotos y vídeos en la lista negra de la app",
"cache_settings_duplicated_assets_subtitle": "Fotos y vídeos ignorados por la aplicación",
"cache_settings_duplicated_assets_title": "Elementos duplicados ({count})",
"cache_settings_statistics_album": "Miniaturas de la biblioteca",
"cache_settings_statistics_full": "Imágenes completas",
@@ -605,6 +611,7 @@
"cancel": "Cancelar",
"cancel_search": "Cancelar búsqueda",
"canceled": "Cancelado",
"canceling": "Cancelando",
"cannot_merge_people": "No se pueden fusionar personas",
"cannot_undo_this_action": "¡No puedes deshacer esta acción!",
"cannot_update_the_description": "No se puede actualizar la descripción",
@@ -718,6 +725,7 @@
"current_server_address": "Dirección actual del servidor",
"custom_locale": "Configuración regional personalizada",
"custom_locale_description": "Formatear fechas y números según el idioma y la región",
"custom_url": "URL personalizada",
"daily_title_text_date": "E dd, MMM",
"daily_title_text_date_year": "E dd de MMM, yyyy",
"dark": "Oscuro",
@@ -737,13 +745,14 @@
"default_locale": "Configuración regional predeterminada",
"default_locale_description": "Formatee fechas y números según la configuración regional de su navegador",
"delete": "Eliminar",
"delete_action_prompt": "{count} eliminados permanentemente",
"delete_action_confirmation_message": "¿Está seguro que desea eliminar este archivo? Esta acción lo moverá a la papelera del servidor y le preguntará si desea eliminarlo localmente",
"delete_action_prompt": "{count} eliminados",
"delete_album": "Eliminar álbum",
"delete_api_key_prompt": "¿Está seguro de que desea eliminar esta clave API?",
"delete_dialog_alert": "Estos elementos serán eliminados permanentemente de Immich y de tu dispositivo",
"delete_dialog_alert_local": "Estas imágenes van a ser borradas de tu dispositivo, pero seguirán disponibles en el servidor Immich",
"delete_dialog_alert_local_non_backed_up": "Algunas de las imágenes no tienen copia de seguridad y serán borradas de forma permanente de tu dispositivo",
"delete_dialog_alert_remote": "Estas imágenes van a ser borradas de forma permanente del servidor Immich",
"delete_dialog_alert_local": "Estos elementos se eliminarán permanente de tu dispositivo pero seguirán disponibles en el servidor de Immich",
"delete_dialog_alert_local_non_backed_up": "Algunos de los elementos no tienen copia de seguridad en Immich y serán borrados permanentemente de tu dispositivo",
"delete_dialog_alert_remote": "Estas imágenes van a ser borradas permanentemente del servidor de Immich",
"delete_dialog_ok_force": "Borrar de todos modos",
"delete_dialog_title": "Eliminar Permanentemente",
"delete_duplicates_confirmation": "¿Está seguro de que desea eliminar permanentemente estos duplicados?",
@@ -755,6 +764,8 @@
"delete_local_dialog_ok_backed_up_only": "Borrar solo las que tengan copia de seguridad",
"delete_local_dialog_ok_force": "Borrar de todos modos",
"delete_others": "Eliminar otros",
"delete_permanently": "Eliminar permanentemente",
"delete_permanently_action_prompt": "{count} eliminados permanentemente",
"delete_shared_link": "Eliminar enlace compartido",
"delete_shared_link_dialog_title": "Eliminar enlace compartido",
"delete_tag": "Eliminar etiqueta",
@@ -765,6 +776,7 @@
"description": "Descripción",
"description_input_hint_text": "Agregar descripción...",
"description_input_submit_error": "Error al actualizar la descripción, verifica el registro para obtener más detalles",
"deselect_all": "Deseleccionar Todo",
"details": "Detalles",
"direction": "Dirección",
"disabled": "Deshabilitado",
@@ -839,6 +851,7 @@
"empty_trash": "Vaciar papelera",
"empty_trash_confirmation": "¿Estás seguro de que quieres vaciar la papelera? Esto eliminará permanentemente todos los archivos de la basura de Immich.\n¡No puedes deshacer esta acción!",
"enable": "Habilitar",
"enable_backup": "Habilitar Copia de Seguridad",
"enable_biometric_auth_description": "Introduce tu código PIN para habilitar la autentificación biométrica",
"enabled": "Habilitado",
"end_date": "Fecha final",
@@ -995,6 +1008,8 @@
"explorer": "Explorador",
"export": "Exportar",
"export_as_json": "Exportar a JSON",
"export_database": "Exportar Base de Datos",
"export_database_description": "Exportar la Base de Datos SQLite",
"extension": "Extensión",
"external": "Externo",
"external_libraries": "Bibliotecas Externas",
@@ -1046,6 +1061,9 @@
"haptic_feedback_switch": "Activar respuesta háptica",
"haptic_feedback_title": "Respuesta Háptica",
"has_quota": "Su cuota",
"hash_asset": "Generar hash del archivo",
"hashed_assets": "Archivos con hash generado",
"hashing": "Generando hash",
"header_settings_add_header_tip": "Añadir cabecera",
"header_settings_field_validator_msg": "El valor no puede estar vacío",
"header_settings_header_name_input": "Nombre de la cabecera",
@@ -1078,6 +1096,7 @@
"host": "Host",
"hour": "Hora",
"id": "ID",
"idle": "Inactivo",
"ignore_icloud_photos": "Ignorar fotos de iCloud",
"ignore_icloud_photos_description": "Las fotos almacenadas en iCloud no se subirán a Immich",
"image": "Imagen",
@@ -1135,6 +1154,7 @@
"language_no_results_title": "No se han encontrado idiomas",
"language_search_hint": "Buscar idiomas...",
"language_setting_description": "Selecciona tu idioma preferido",
"large_files": "Archivos Grandes",
"last_seen": "Ultima vez visto",
"latest_version": "Última versión",
"latitude": "Latitud",
@@ -1154,13 +1174,14 @@
"light": "Claro",
"like_deleted": "Me gusta eliminado",
"link_motion_video": "Enlazar vídeo en movimiento",
"link_options": "Opciones de enlace",
"link_to_oauth": "Enlace a OAuth",
"linked_oauth_account": "Cuenta OAuth vinculada",
"list": "Listar",
"loading": "Cargando",
"loading_search_results_failed": "Error al cargar los resultados de la búsqueda",
"local": "Local",
"local_asset_cast_failed": "No es posible transmitir un recurso que no está subido al servidor",
"local_assets": "Archivos Locales",
"local_network": "Red local",
"local_network_sheet_info": "La aplicación se conectará al servidor a través de esta URL cuando utilice la red Wi-Fi especificada",
"location_permission": "Permiso de ubicación",
@@ -1217,8 +1238,7 @@
"manage_your_devices": "Administre sus dispositivos conectados",
"manage_your_oauth_connection": "Administra tu conexión OAuth",
"map": "Mapa",
"map_assets_in_bound": "{count} foto",
"map_assets_in_bounds": "{count} fotos",
"map_assets_in_bounds": "{count, plural, one {# foto} other {# fotos}}",
"map_cannot_get_user_location": "No se pudo obtener la posición del usuario",
"map_location_dialog_yes": "Sí",
"map_location_picker_page_use_location": "Usar esta ubicación",
@@ -1317,6 +1337,7 @@
"no_results": "Sin resultados",
"no_results_description": "Pruebe con un sinónimo o una palabra clave más general",
"no_shared_albums_message": "Crea un álbum para compartir fotos y vídeos con personas de tu red",
"no_uploads_in_progress": "No hay cargas en progreso",
"not_in_any_album": "Sin álbum",
"not_selected": "No seleccionado",
"note_apply_storage_label_to_previously_uploaded assets": "Nota: Para aplicar la etiqueta de almacenamiento a los archivos subidos previamente, ejecute el",
@@ -1354,6 +1375,7 @@
"original": "original",
"other": "Otro",
"other_devices": "Otro dispositivo",
"other_entities": "Otras entidades",
"other_variables": "Otras variables",
"owned": "Propio",
"owner": "Propietario",
@@ -1485,6 +1507,7 @@
"purchase_server_description_2": "Estado del soporte",
"purchase_server_title": "Servidor",
"purchase_settings_server_activated": "La clave del producto del servidor la administra el administrador",
"queue_status": "Poniendo en cola {count}/{total}",
"rating": "Valoración",
"rating_clear": "Borrar calificación",
"rating_count": "{count, plural, one {# estrella} other {# estrellas}}",
@@ -1513,6 +1536,8 @@
"refreshing_faces": "Recargando caras",
"refreshing_metadata": "Recargando metadatos",
"regenerating_thumbnails": "Recargando miniaturas",
"remote": "Remoto",
"remote_assets": "Elementos remotos",
"remove": "Eliminar",
"remove_assets_album_confirmation": "¿Estás seguro que quieres eliminar {count, plural, one {# elemento} other {# elementos}} del álbum?",
"remove_assets_shared_link_confirmation": "¿Estás seguro que quieres eliminar {count, plural, one {# elemento} other {# elementos}} del enlace compartido?",
@@ -1550,19 +1575,25 @@
"reset_password": "Restablecer la contraseña",
"reset_people_visibility": "Restablecer la visibilidad de las personas",
"reset_pin_code": "Restablecer PIN",
"reset_sqlite": "Restablecer la Base de Datos SQLite",
"reset_sqlite_confirmation": "¿Estás seguro que deseas restablecer la base de datos SQLite? Deberás cerrar sesión y volver a iniciarla para resincronizar los datos",
"reset_sqlite_success": "Restablecer exitosamente la base de datos SQLite",
"reset_to_default": "Restablecer los valores predeterminados",
"resolve_duplicates": "Resolver duplicados",
"resolved_all_duplicates": "Todos los duplicados resueltos",
"restore": "Restaurar",
"restore_all": "Restaurar todo",
"restore_trash_action_prompt": "{count} restaurado de la papelera",
"restore_user": "Restaurar usuario",
"restored_asset": "Archivo restaurado",
"resume": "Continuar",
"retry_upload": "Reintentar subida",
"review_duplicates": "Revisar duplicados",
"review_large_files": "Revisar archivos grandes",
"role": "Rol",
"role_editor": "Editor",
"role_viewer": "Visor",
"running": "En ejecución",
"save": "Guardar",
"save_to_gallery": "Guardado en la galería",
"saved_api_key": "Clave API guardada",
@@ -1716,6 +1747,7 @@
"shared_link_clipboard_copied_massage": "Copiado al portapapeles",
"shared_link_clipboard_text": "Enlace: {link}\nContraseña: {password}",
"shared_link_create_error": "Error creando el enlace compartido",
"shared_link_custom_url_description": "Accede a este enlace compartido con una URL personalizada",
"shared_link_edit_description_hint": "Introduce la descripción del enlace",
"shared_link_edit_expire_after_option_day": "1 día",
"shared_link_edit_expire_after_option_days": "{count} días",
@@ -1741,6 +1773,7 @@
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Administrar enlaces compartidos",
"shared_link_options": "Opciones de enlaces compartidos",
"shared_link_password_description": "Requerir una contraseña para acceder a este enlace compartido",
"shared_links": "Enlaces compartidos",
"shared_links_description": "Comparte fotos y vídeos con un enlace",
"shared_photos_and_videos_count": "{assetCount, plural, other {# Fotos y vídeos compartidos.}}",
@@ -1816,6 +1849,7 @@
"storage_quota": "Cuota de Almacenamiento",
"storage_usage": "{used} de {available} en uso",
"submit": "Enviar",
"success": "Éxito",
"suggestions": "Sugerencias",
"sunrise_on_the_beach": "Amanecer en la playa",
"support": "Soporte",
@@ -1825,6 +1859,8 @@
"sync": "Sincronizar",
"sync_albums": "Sincronizar álbumes",
"sync_albums_manual_subtitle": "Sincroniza todos los videos y fotos subidos con los álbumes seleccionados a respaldar",
"sync_local": "Sincronización Local",
"sync_remote": "Sincronización Remota",
"sync_upload_album_setting_subtitle": "Crea y sube tus fotos y videos a los álbumes seleccionados en Immich",
"tag": "Etiqueta",
"tag_assets": "Etiquetar activos",
@@ -1835,6 +1871,7 @@
"tag_updated": "Etiqueta actualizada: {tag}",
"tagged_assets": "Etiquetado(s) {count, plural, one {# activo} other {# activos}}",
"tags": "Etiquetas",
"tap_to_run_job": "Toca para ejecutar la tarea",
"template": "Plantilla",
"theme": "Tema",
"theme_selection": "Selección de tema",
@@ -1914,10 +1951,13 @@
"updated_at": "Actualizado",
"updated_password": "Contraseña actualizada",
"upload": "Subir",
"upload_action_prompt": "{count} en cola para carga",
"upload_concurrency": "Subidas simultáneas",
"upload_details": "Cargar Detalles",
"upload_dialog_info": "¿Quieres hacer una copia de seguridad al servidor de los elementos seleccionados?",
"upload_dialog_title": "Subir elementos",
"upload_errors": "Subida completada con {count, plural, one {# error} other {# errores}}, actualice la página para ver los nuevos recursos de la subida.",
"upload_finished": "Carga finalizada",
"upload_progress": "Restante {remaining, number} - Procesado {processed, number}/{total, number}",
"upload_skipped_duplicates": "Saltado {count, plural, one {# duplicate asset} other {# duplicate assets}}",
"upload_status_duplicates": "Duplicados",
@@ -1926,6 +1966,7 @@
"upload_success": "Subida realizada correctamente, actualice la página para ver los nuevos recursos de subida.",
"upload_to_immich": "Subir a Immich ({count})",
"uploading": "Subiendo",
"uploading_media": "Subiendo medios",
"url": "URL",
"usage": "Uso",
"use_biometric": "Uso biométrico",
@@ -1965,6 +2006,7 @@
"view_album": "Ver Álbum",
"view_all": "Ver todas",
"view_all_users": "Mostrar todos los usuarios",
"view_details": "Ver Detalles",
"view_in_timeline": "Mostrar en la línea de tiempo",
"view_link": "Ver enlace",
"view_links": "Mostrar enlaces",

View File

@@ -14,6 +14,7 @@
"add_a_location": "Lisa asukoht",
"add_a_name": "Lisa nimi",
"add_a_title": "Lisa pealkiri",
"add_birthday": "Lisa sünnipäev",
"add_endpoint": "Lisa lõpp-punkt",
"add_exclusion_pattern": "Lisa välistamismuster",
"add_import_path": "Lisa imporditee",
@@ -44,6 +45,13 @@
"backup_database": "Loo andmebaasi tõmmis",
"backup_database_enable_description": "Luba andmebaasi tõmmised",
"backup_keep_last_amount": "Eelmiste tõmmiste arv, mida alles hoida",
"backup_onboarding_1_description": "asukohaväline koopia pilves või teises füüsilises asukohas.",
"backup_onboarding_2_description": "lokaalset koopiat erinevatel seadmetel. See hõlmab põhifaile ja nende failide lokaalsed varundust.",
"backup_onboarding_3_description": "koopiat su andmetest, kaasa arvatud originaalfailid. See hõlmab üht asukohavälist ja kaht lokaalset koopiat.",
"backup_onboarding_description": "Andmete kaitsmiseks on soovituslik <backblaze-link>3-2-1 varundusstrateegia</backblaze-link>. Põhjaliku varunduse jaoks peaksid talletama koopiaid nii oma üleslaaditud fotodest ja videotest kui ka Immich'i andmebaasist.",
"backup_onboarding_footer": "Rohkem informatsiooni Immich'i varundamise kohta leiad <link>dokumentatsioonist</link>.",
"backup_onboarding_parts_title": "3-2-1 varundus hõlmab:",
"backup_onboarding_title": "Varukoopiad",
"backup_settings": "Andmebaasi tõmmiste seaded",
"backup_settings_description": "Halda andmebaasi tõmmiste seadeid.",
"cleared_jobs": "Tööted eemaldatud: {job}",
@@ -397,6 +405,7 @@
"album_cover_updated": "Albumi kaanepilt muudetud",
"album_delete_confirmation": "Kas oled kindel, et soovid albumi {album} kustutada?",
"album_delete_confirmation_description": "Kui see album on jagatud, ei pääse teised kasutajad sellele enam ligi.",
"album_deleted": "Album kustutatud",
"album_info_card_backup_album_excluded": "VÄLJA JÄETUD",
"album_info_card_backup_album_included": "LISATUD",
"album_info_updated": "Albumi info muudetud",
@@ -510,6 +519,7 @@
"back_close_deselect": "Tagasi, sulge või tühista valik",
"background_location_permission": "Taustal asukoha luba",
"background_location_permission_content": "Et taustal töötades võrguühendust vahetada, peab Immich'il *alati* olema täpse asukoha luba, et rakendus saaks WiFi-võrgu nime lugeda",
"backup": "Varundamine",
"backup_album_selection_page_albums_device": "Albumid seadmel ({count})",
"backup_album_selection_page_albums_tap": "Puuduta kaasamiseks, topeltpuuduta välistamiseks",
"backup_album_selection_page_assets_scatter": "Üksused võivad olla jaotatud mitme albumi vahel. Seega saab albumeid varundamise protsessi kaasata või välistada.",
@@ -723,6 +733,7 @@
"current_server_address": "Praegune serveri aadress",
"custom_locale": "Kohandatud lokaat",
"custom_locale_description": "Vorminda kuupäevad ja arvud vastavalt keelele ja regioonile",
"custom_url": "Kohandatud URL",
"daily_title_text_date": "d. MMMM",
"daily_title_text_date_year": "d. MMMM yyyy",
"dark": "Tume",
@@ -742,7 +753,8 @@
"default_locale": "Vaikimisi lokaat",
"default_locale_description": "Vorminda kuupäevad ja numbrid vastavalt brauseri lokaadile",
"delete": "Kustuta",
"delete_action_prompt": "{count} jäädavalt kustutatud",
"delete_action_confirmation_message": "Kas oled kindel, et soovid selle üksuse kustutada? See toiming liigutab üksuse serveri prügikasti ja küsib, kas soovid selle lokaalselt kustutada",
"delete_action_prompt": "{count} kustutatud",
"delete_album": "Kustuta album",
"delete_api_key_prompt": "Kas oled kindel, et soovid selle API võtme kustutada?",
"delete_dialog_alert": "Need üksused kustutatakse jäädavalt Immich'ist ja sinu seadmest",
@@ -760,6 +772,8 @@
"delete_local_dialog_ok_backed_up_only": "Kustuta ainult varundatud",
"delete_local_dialog_ok_force": "Kustuta sellegipoolest",
"delete_others": "Kustuta teised",
"delete_permanently": "Kustuta jäädavalt",
"delete_permanently_action_prompt": "{count} jäädavalt kustutatud",
"delete_shared_link": "Kustuta jagatud link",
"delete_shared_link_dialog_title": "Kustuta jagatud link",
"delete_tag": "Kustuta silt",
@@ -815,6 +829,7 @@
"edit": "Muuda",
"edit_album": "Muuda albumit",
"edit_avatar": "Muuda avatari",
"edit_birthday": "Muuda sünnipäeva",
"edit_date": "Muuda kuupäeva",
"edit_date_and_time": "Muuda kuupäeva ja kellaaega",
"edit_description": "Muuda kirjeldust",
@@ -982,6 +997,7 @@
},
"exif": "Exif",
"exif_bottom_sheet_description": "Lisa kirjeldus...",
"exif_bottom_sheet_description_error": "Viga kirjelduse muutmisel",
"exif_bottom_sheet_details": "ÜKSIKASJAD",
"exif_bottom_sheet_location": "ASUKOHT",
"exif_bottom_sheet_people": "ISIKUD",
@@ -1002,6 +1018,8 @@
"explorer": "Brauser",
"export": "Ekspordi",
"export_as_json": "Ekspordi JSON-formaati",
"export_database": "Ekspordi andmebaas",
"export_database_description": "Ekspordi SQLite andmebaas",
"extension": "Laiend",
"external": "Väline",
"external_libraries": "Välised kogud",
@@ -1146,6 +1164,7 @@
"language_no_results_title": "Ühtegi keelt ei leitud",
"language_search_hint": "Otsi keeli...",
"language_setting_description": "Vali oma eelistatud keel",
"large_files": "Suured failid",
"last_seen": "Viimati nähtud",
"latest_version": "Uusim versioon",
"latitude": "Laiuskraad",
@@ -1165,13 +1184,12 @@
"light": "Hele",
"like_deleted": "Meeldimine kustutatud",
"link_motion_video": "Lingi liikuv video",
"link_options": "Lingi valikud",
"link_to_oauth": "Ühenda OAuth",
"linked_oauth_account": "OAuth konto ühendatud",
"list": "Loend",
"loading": "Laadimine",
"loading_search_results_failed": "Otsitulemuste laadimine ebaõnnestus",
"local": "Lokaalne üksus",
"local": "Lokaalsed",
"local_asset_cast_failed": "Ei saa edastada üksust, mis pole serverisse üles laaditud",
"local_assets": "Lokaalsed üksused",
"local_network": "Kohalik võrk",
@@ -1230,8 +1248,7 @@
"manage_your_devices": "Halda oma autenditud seadmeid",
"manage_your_oauth_connection": "Halda oma OAuth ühendust",
"map": "Kaart",
"map_assets_in_bound": "{count} foto",
"map_assets_in_bounds": "{count} fotot",
"map_assets_in_bounds": "{count, plural, one {# foto} other {# fotot}}",
"map_cannot_get_user_location": "Ei saa kasutaja asukohta tuvastada",
"map_location_dialog_yes": "Jah",
"map_location_picker_page_use_location": "Kasuta seda asukohta",
@@ -1529,7 +1546,7 @@
"refreshing_faces": "Nägude värskendamine",
"refreshing_metadata": "Metaandmete värskendamine",
"regenerating_thumbnails": "Pisipiltide uuesti genereerimine",
"remote": "Kaugüksus",
"remote": "Serveris",
"remote_assets": "Kaugüksused",
"remove": "Eemalda",
"remove_assets_album_confirmation": "Kas oled kindel, et soovid {count, plural, one {# üksuse} other {# üksust}} albumist eemaldada?",
@@ -1582,6 +1599,7 @@
"resume": "Jätka",
"retry_upload": "Proovi üleslaadimist uuesti",
"review_duplicates": "Vaata duplikaadid läbi",
"review_large_files": "Vaata suured failid läbi",
"role": "Roll",
"role_editor": "Muutja",
"role_viewer": "Vaataja",
@@ -1739,6 +1757,7 @@
"shared_link_clipboard_copied_massage": "Kopeeritud lõikelauale",
"shared_link_clipboard_text": "Link: {link}\nParool: {password}",
"shared_link_create_error": "Viga jagatud lingi loomisel",
"shared_link_custom_url_description": "Ligipääs jagatud lingile kohandatud URL-i kaudu",
"shared_link_edit_description_hint": "Sisesta jagatud lingi kirjeldus",
"shared_link_edit_expire_after_option_day": "1 päev",
"shared_link_edit_expire_after_option_days": "{count} päeva",
@@ -1764,6 +1783,7 @@
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Halda jagatud linke",
"shared_link_options": "Jagatud lingi valikud",
"shared_link_password_description": "Nõua jagatud lingile ligi pääsemiseks parooli",
"shared_links": "Jagatud lingid",
"shared_links_description": "Jaga fotosid ja videosid lingiga",
"shared_photos_and_videos_count": "{assetCount, plural, other {# jagatud fotot ja videot.}}",
@@ -1941,11 +1961,13 @@
"updated_at": "Uuendatud",
"updated_password": "Parool muudetud",
"upload": "Laadi üles",
"upload_action_prompt": "{count} üleslaadimise ootel",
"upload_concurrency": "Üleslaadimise samaaegsus",
"upload_details": "Üleslaadimise üksikasjad",
"upload_dialog_info": "Kas soovid valitud üksuse(d) serverisse varundada?",
"upload_dialog_title": "Üksuse üleslaadimine",
"upload_errors": "Üleslaadimine lõpetatud {count, plural, one {# veaga} other {# veaga}}, uute üksuste nägemiseks värskenda lehte.",
"upload_finished": "Üleslaadimine lõpetatud",
"upload_progress": "Ootel {remaining, number} - Töödeldud {processed, number}/{total, number}",
"upload_skipped_duplicates": "{count, plural, one {# dubleeritud üksus} other {# dubleeritud üksust}} vahele jäetud",
"upload_status_duplicates": "Duplikaadid",
@@ -1954,6 +1976,7 @@
"upload_success": "Üleslaadimine õnnestus, uute üksuste nägemiseks värskenda lehte.",
"upload_to_immich": "Laadi Immich'isse ({count})",
"uploading": "Üleslaadimine",
"uploading_media": "Meediumi üleslaadimine",
"url": "URL",
"usage": "Kasutus",
"use_biometric": "Kasuta biomeetriat",

View File

@@ -471,7 +471,6 @@
"library": "کتابخانه",
"library_options": "گزینه‌های کتابخانه",
"light": "روشن",
"link_options": "گزینه‌های لینک",
"link_to_oauth": "اتصال به OAuth",
"linked_oauth_account": "حساب OAuth متصل شده",
"list": "لیست",
@@ -493,7 +492,6 @@
"manage_your_devices": "مدیریت دستگاه‌های متصل",
"manage_your_oauth_connection": "مدیریت اتصال OAuth",
"map": "نقشه",
"map_assets_in_bound": "{count} عکس",
"map_assets_in_bounds": "{count} عکس ها",
"map_cannot_get_user_location": "موقعیت مکانی در دسترس نیست",
"map_location_dialog_yes": "بله",

View File

@@ -373,6 +373,7 @@
"admin_password": "Ylläpitäjän salasana",
"administration": "Ylläpito",
"advanced": "Edistyneet",
"advanced_settings_beta_timeline_subtitle": "Kokeile uutta sovelluskokemusta",
"advanced_settings_enable_alternate_media_filter_subtitle": "Käytä tätä vaihtoehtoa suodattaaksesi mediaa synkronoinnin aikana vaihtoehtoisten kriteerien perusteella. Kokeile tätä vain, jos sovelluksessa on ongelmia kaikkien albumien tunnistamisessa.",
"advanced_settings_enable_alternate_media_filter_title": "[KOKEELLINEN] Käytä vaihtoehtoisen laitteen albumin synkronointisuodatinta",
"advanced_settings_log_level_title": "Kirjaustaso: {level}",
@@ -506,6 +507,7 @@
"back_close_deselect": "Palaa, sulje tai poista valinnat",
"background_location_permission": "Taustasijainnin käyttöoikeus",
"background_location_permission_content": "Jotta sovellus voi vaihtaa verkkoa taustalla toimiessaan, Immichillä on *aina* oltava pääsy tarkkaan sijaintiin, jotta se voi lukea Wi-Fi-verkon nimen",
"backup": "Varmuuskopiointi",
"backup_album_selection_page_albums_device": "Laitteen albumit ({count})",
"backup_album_selection_page_albums_tap": "Napauta sisällyttääksesi, kaksoisnapauta jättääksesi pois",
"backup_album_selection_page_assets_scatter": "Kohteet voivat olla hajaantuneina useisiin albumeihin. Albumeita voidaan sisällyttää varmuuskopiointiin tai jättää siitä pois.",
@@ -1149,7 +1151,6 @@
"light": "Vaalea",
"like_deleted": "Tykkäys poistettu",
"link_motion_video": "Linkitä liikevideo",
"link_options": "Linkin asetukset",
"link_to_oauth": "Linkki OAuth",
"linked_oauth_account": "Linkitetty OAuth-tili",
"list": "Lista",
@@ -1212,7 +1213,6 @@
"manage_your_devices": "Hallitse sisäänkirjautuneita laitteitasi",
"manage_your_oauth_connection": "Hallitse OAuth-yhteyttäsi",
"map": "Kartta",
"map_assets_in_bound": "{count} kuva",
"map_assets_in_bounds": "{count} kuvaa",
"map_cannot_get_user_location": "Käyttäjän sijaintia ei voitu määrittää",
"map_location_dialog_yes": "Kyllä",

View File

@@ -397,6 +397,7 @@
"album_cover_updated": "Couverture de l'album mise à jour",
"album_delete_confirmation": "Êtes-vous sûr de vouloir supprimer l'album {album}?",
"album_delete_confirmation_description": "Si cet album est partagé, les autres utilisateurs ne pourront plus y accéder.",
"album_deleted": "Album supprimé",
"album_info_card_backup_album_excluded": "EXCLUS",
"album_info_card_backup_album_included": "INCLUS",
"album_info_updated": "Détails de l'album mis à jour",
@@ -510,6 +511,7 @@
"back_close_deselect": "Retournez en arrière, fermez ou désélectionnez",
"background_location_permission": "Permission de localisation en arrière plan",
"background_location_permission_content": "Afin de pouvoir changer d'adresse en arrière plan, Immich doit avoir *en permanence* accès à la localisation précise, afin d'accéder au le nom du réseau Wi-Fi utilisé",
"backup": "Sauvegarde",
"backup_album_selection_page_albums_device": "Albums sur l'appareil ({count})",
"backup_album_selection_page_albums_tap": "Tapez pour inclure, tapez deux fois pour exclure",
"backup_album_selection_page_assets_scatter": "Les éléments peuvent être répartis sur plusieurs albums. De ce fait, les albums peuvent être inclus ou exclus pendant le processus de sauvegarde.",
@@ -562,7 +564,7 @@
"backup_controller_page_to_backup": "Albums à sauvegarder",
"backup_controller_page_total_sub": "Toutes les photos et vidéos uniques des albums sélectionnés",
"backup_controller_page_turn_off": "Désactiver la sauvegarde",
"backup_controller_page_turn_on": "Activer la sauvegarde",
"backup_controller_page_turn_on": "Activer la sauvegarde au premier plan",
"backup_controller_page_uploading_file_info": "Envoi des informations du fichier",
"backup_err_only_album": "Impossible de retirer le seul album",
"backup_info_card_assets": "éléments",
@@ -592,7 +594,7 @@
"cache_settings_clear_cache_button": "Effacer le cache",
"cache_settings_clear_cache_button_title": "Efface le cache de l'application. Cela aura un impact significatif sur les performances de l'application jusqu'à ce que le cache soit reconstruit.",
"cache_settings_duplicated_assets_clear_button": "EFFACER",
"cache_settings_duplicated_assets_subtitle": "Photos et vidéos qui sont exclues par l'application",
"cache_settings_duplicated_assets_subtitle": "Photos et vidéos qui sont ignorées par l'application",
"cache_settings_duplicated_assets_title": "Médias dupliqués ({count})",
"cache_settings_statistics_album": "Miniatures de la bibliothèque",
"cache_settings_statistics_full": "Images complètes",
@@ -723,6 +725,7 @@
"current_server_address": "Adresse actuelle du serveur",
"custom_locale": "Paramètres régionaux personnalisés",
"custom_locale_description": "Afficher les dates et nombres en fonction des paramètres régionaux",
"custom_url": "URL personnalisée",
"daily_title_text_date": "E, dd MMM",
"daily_title_text_date_year": "E, dd MMM, yyyy",
"dark": "Sombre",
@@ -742,7 +745,8 @@
"default_locale": "Région par défaut",
"default_locale_description": "Afficher les dates et nombres en fonction des paramètres de votre navigateur",
"delete": "Supprimer",
"delete_action_prompt": "{count} supprimé(s) définitivement",
"delete_action_confirmation_message": "Êtes-vous sûr de vouloir supprimer ce média? Cela déplacera le média dans la poubelle du serveur et vous demandera si vous voulez le supprimer localement",
"delete_action_prompt": "{count} supprimé(s)",
"delete_album": "Supprimer l'album",
"delete_api_key_prompt": "Voulez-vous vraiment supprimer cette clé API?",
"delete_dialog_alert": "Ces médias seront définitivement supprimés de Immich et de votre appareil",
@@ -760,6 +764,8 @@
"delete_local_dialog_ok_backed_up_only": "Suppression des données sauvegardées uniquement",
"delete_local_dialog_ok_force": "Supprimer tout de même",
"delete_others": "Supprimer les autres",
"delete_permanently": "Supprimer définitivement",
"delete_permanently_action_prompt": "{count} supprimé(s) définitivement",
"delete_shared_link": "Supprimer le lien partagé",
"delete_shared_link_dialog_title": "Supprimer le lien partagé",
"delete_tag": "Supprimer l'étiquette",
@@ -845,11 +851,11 @@
"empty_trash": "Vider la corbeille",
"empty_trash_confirmation": "Êtes-vous sûr de vouloir vider la corbeille? Cela supprimera définitivement de Immich tous les médias qu'elle contient.\nVous ne pouvez pas annuler cette action!",
"enable": "Active",
"enable_backup": "Activer Backup",
"enable_backup": "Activer la sauvegarde",
"enable_biometric_auth_description": "Entrez votre code PIN pour activer l'authentification biométrique",
"enabled": "Activé",
"end_date": "Date de fin",
"enqueued": "Mis en file",
"enqueued": "Mis en file d'attente",
"enter_wifi_name": "Entrez le nom du réseau wifi",
"enter_your_pin_code": "Entrez votre code PIN",
"enter_your_pin_code_subtitle": "Entrez votre code PIN pour accéder au dossier verrouillé",
@@ -1002,6 +1008,8 @@
"explorer": "Explorateur",
"export": "Exporter",
"export_as_json": "Exporter en JSON",
"export_database": "Exporter la base de données",
"export_database_description": "Exporter la base de données SQLite",
"extension": "Extension",
"external": "Externe",
"external_libraries": "Bibliothèques externes",
@@ -1088,6 +1096,7 @@
"host": "Hôte",
"hour": "Heure",
"id": "ID",
"idle": "Inactif",
"ignore_icloud_photos": "Ignorer les photos iCloud",
"ignore_icloud_photos_description": "Les photos stockées sur iCloud ne seront pas envoyées sur le serveur Immich",
"image": "Image",
@@ -1145,6 +1154,7 @@
"language_no_results_title": "Aucune langue trouvée",
"language_search_hint": "Recherche de langues...",
"language_setting_description": "Sélectionnez votre langue préférée",
"large_files": "Fichiers volumineux",
"last_seen": "Dernièrement utilisé",
"latest_version": "Dernière version",
"latitude": "Latitude",
@@ -1164,7 +1174,6 @@
"light": "Clair",
"like_deleted": "Réaction « j'aime » supprimée",
"link_motion_video": "Lier la photo animée",
"link_options": "Options de lien",
"link_to_oauth": "Lien au service OAuth",
"linked_oauth_account": "Compte OAuth rattaché",
"list": "Liste",
@@ -1229,8 +1238,7 @@
"manage_your_devices": "Gérer vos appareils",
"manage_your_oauth_connection": "Gérer votre connexion OAuth",
"map": "Carte",
"map_assets_in_bound": "{count} photo",
"map_assets_in_bounds": "{count} photos",
"map_assets_in_bounds": "{count, plural, one {# photo} other {# photos}}",
"map_cannot_get_user_location": "Impossible d'obtenir la localisation de l'utilisateur",
"map_location_dialog_yes": "Oui",
"map_location_picker_page_use_location": "Utiliser ma position",
@@ -1499,7 +1507,7 @@
"purchase_server_description_2": "Statut de contributeur",
"purchase_server_title": "Serveur",
"purchase_settings_server_activated": "La clé du produit pour le Serveur est gérée par l'administrateur",
"queue_status": "File d'attente {count}/{total}",
"queue_status": "{count}/{total} en file d'attente",
"rating": "Étoile d'évaluation",
"rating_clear": "Effacer l'évaluation",
"rating_count": "{count, plural, one {# étoile} other {# étoiles}}",
@@ -1528,7 +1536,7 @@
"refreshing_faces": "Actualisation des visages",
"refreshing_metadata": "Actualisation des métadonnées",
"regenerating_thumbnails": "Regénération des miniatures",
"remote": "A distance",
"remote": "À distance",
"remote_assets": "Média à distance",
"remove": "Supprimer",
"remove_assets_album_confirmation": "Êtes-vous sûr de vouloir supprimer {count, plural, one {# média} other {# médias}} de l'album?",
@@ -1568,7 +1576,7 @@
"reset_people_visibility": "Réinitialiser la visibilité des personnes",
"reset_pin_code": "Réinitialiser le code PIN",
"reset_sqlite": "Réinitialiser la base de données SQLite",
"reset_sqlite_confirmation": "Êtes vous sur que vous voulez réinitialiser la base de données SQLite? Vous devrez vous déconnecter and vous reconnecter à nouveau pour re-synchroniser les données",
"reset_sqlite_confirmation": "Êtes-vous certain de vouloir réinitialiser la base de données SQLite? Vous devrez vous déconnecter puis vous reconnecter à nouveau pour resynchroniser les données",
"reset_sqlite_success": "La base de données SQLite à été réinitialisé avec succès",
"reset_to_default": "Rétablir les valeurs par défaut",
"resolve_duplicates": "Résoudre les doublons",
@@ -1581,10 +1589,11 @@
"resume": "Reprendre",
"retry_upload": "Réessayer l'envoi",
"review_duplicates": "Consulter les doublons",
"review_large_files": "Consulter les fichiers volumineux",
"role": "Rôle",
"role_editor": "Éditeur",
"role_viewer": "Visionneuse",
"running": "En marche",
"running": "En cours",
"save": "Sauvegarder",
"save_to_gallery": "Enregistrer",
"saved_api_key": "Clé API sauvegardée",
@@ -1738,6 +1747,7 @@
"shared_link_clipboard_copied_massage": "Copié dans le presse-papier",
"shared_link_clipboard_text": "Lien : {link}\nMot de passe : {password}",
"shared_link_create_error": "Erreur pendant la création du lien partagé",
"shared_link_custom_url_description": "Accéder à ce lien partagé avec une URL personnalisée",
"shared_link_edit_description_hint": "Saisir la description du partage",
"shared_link_edit_expire_after_option_day": "1 jour",
"shared_link_edit_expire_after_option_days": "{count} jours",
@@ -1763,6 +1773,7 @@
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Gérer les liens partagés",
"shared_link_options": "Options de lien partagé",
"shared_link_password_description": "Demander un mot de passe pour accéder à ce lien partagé",
"shared_links": "Liens partagés",
"shared_links_description": "Partager les photos et vidéos via un lien",
"shared_photos_and_videos_count": "{assetCount, plural, other {# photos et vidéos partagées.}}",
@@ -1940,11 +1951,13 @@
"updated_at": "Mis à jour à",
"updated_password": "Mot de passe mis à jour",
"upload": "Envoyer",
"upload_action_prompt": "{count} en attente d'envoi",
"upload_concurrency": "Envois simultanés",
"upload_details": "Uploader les details",
"upload_details": "Détails des envois",
"upload_dialog_info": "Voulez-vous sauvegarder la sélection vers le serveur?",
"upload_dialog_title": "Envoyer le média",
"upload_errors": "L'envoi s'est complété avec {count, plural, one {# erreur} other {# erreurs}}. Rafraîchissez la page pour voir les nouveaux médias envoyés.",
"upload_finished": "Envoi fini",
"upload_progress": "{remaining, number} restant(s) - {processed, number} traité(s)/{total, number}",
"upload_skipped_duplicates": "{count, plural, one {# doublon ignoré} other {# doublons ignorés}}",
"upload_status_duplicates": "Doublons",
@@ -1953,6 +1966,7 @@
"upload_success": "Envoi réussi. Rafraîchissez la page pour voir les nouveaux médias envoyés.",
"upload_to_immich": "Envoyer vers Immich ({count})",
"uploading": "Envoi",
"uploading_media": "Envoi du média",
"url": "URL",
"usage": "Utilisation",
"use_biometric": "Utiliser l'authentification biométrique",

View File

@@ -476,6 +476,7 @@
"back_close_deselect": "Atrás, pechar ou deseleccionar",
"background_location_permission": "Permiso de ubicación en segundo plano",
"background_location_permission_content": "Para cambiar de rede cando se executa en segundo plano, Immich debe ter *sempre* acceso á ubicación precisa para que a aplicación poida ler o nome da rede wifi",
"backup": "Copia de Seguridade",
"backup_album_selection_page_albums_device": "Álbums no dispositivo ({count})",
"backup_album_selection_page_albums_tap": "Tocar para incluír, dobre toque para excluír",
"backup_album_selection_page_assets_scatter": "Os activos poden dispersarse por varios álbums. Polo tanto, os álbums poden incluírse ou excluírse durante o proceso de copia de seguridade.",
@@ -1070,7 +1071,6 @@
"light": "Claro",
"like_deleted": "Gústame eliminado",
"link_motion_video": "Ligar vídeo en movemento",
"link_options": "Opcións da ligazón",
"link_to_oauth": "Ligar a OAuth",
"linked_oauth_account": "Conta OAuth ligada",
"list": "Lista",
@@ -1129,7 +1129,6 @@
"manage_your_devices": "Xestionar os teus dispositivos con sesión iniciada",
"manage_your_oauth_connection": "Xestionar a túa conexión OAuth",
"map": "Mapa",
"map_assets_in_bound": "{count} foto",
"map_assets_in_bounds": "{count} fotos",
"map_cannot_get_user_location": "Non se pode obter a ubicación do usuario",
"map_location_dialog_yes": "Si",

View File

@@ -14,6 +14,7 @@
"add_a_location": "הוספת מיקום",
"add_a_name": "הוספת שם",
"add_a_title": "הוספת כותרת",
"add_birthday": "הוספת יום הולדת",
"add_endpoint": "הוסף נקודת קצה",
"add_exclusion_pattern": "הוספת דפוס החרגה",
"add_import_path": "הוספת נתיב יבוא",
@@ -44,6 +45,13 @@
"backup_database": "גיבוי מסד נתונים",
"backup_database_enable_description": "אפשר גיבויי מסד נתונים",
"backup_keep_last_amount": "כמות של גיבויים קודמים שיש לשמור",
"backup_onboarding_1_description": "העתק בענן או במיקום פיזי אחר מחוץ למקום השרת.",
"backup_onboarding_2_description": "העתקים מקומיים במכשירים שונים. זה כולל את הקבצים הראשיים וגיבוי של הקבצים האלה באופן מקומי.",
"backup_onboarding_3_description": "סך כל ההעתקים של הנתונים שלך, כולל הקבצים המקוריים. זה כולל העתק אחד מחוץ למקום השרת ושני העתקים מקומיים.",
"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": "הגדרות גיבוי",
"backup_settings_description": "ניהול הגדרות גיבוי מסד נתונים.",
"cleared_jobs": "נוקו משימות עבור: {job}",
@@ -156,15 +164,15 @@
"map_settings": "מפה",
"map_settings_description": "ניהול הגדרות מפה",
"map_style_description": "כתובת אתר לערכת נושא של מפה style.json",
"memory_cleanup_job": "ניקוי זיכרון",
"memory_generate_job": "יצירת זיכרון",
"memory_cleanup_job": "ניקוי זיכרון (היום לפני..)",
"memory_generate_job": "יצירת זיכרון (היום לפני..)",
"metadata_extraction_job": "חלץ מטא-נתונים",
"metadata_extraction_job_description": "חלץ מטא-נתונים מכל תמונה, כגון GPS, פנים ורזולוציה",
"metadata_faces_import_setting": "אפשר יבוא פנים",
"metadata_faces_import_setting_description": "יבא פנים מנתוני EXIF של תמונה ומקבצים נלווים",
"metadata_settings": "הגדרות מטא-נתונים",
"metadata_settings_description": "ניהול הגדרות מטא-נתונים",
"migration_job": "העברה",
"metadata_settings_description": "ניהול הגדרות metadata",
"migration_job": "נדידה",
"migration_job_description": "העבר תמונות ממוזערות של תמונות ופנים למבנה התיקיות העדכני ביותר",
"nightly_tasks_cluster_faces_setting_description": "בצע זיהוי פנים עבור פרצופים שזוהו לאחרונה",
"nightly_tasks_cluster_new_faces_setting": "קבץ פנים חדשות",
@@ -178,7 +186,7 @@
"nightly_tasks_settings_description": "נהל משימות ליליות",
"nightly_tasks_start_time_setting": "זמן התחלה",
"nightly_tasks_start_time_setting_description": "השעה שבה השרת מתחיל להריץ את המשימות הליליות",
"nightly_tasks_sync_quota_usage_setting": "סנכרן את השימוש באחסון",
"nightly_tasks_sync_quota_usage_setting": "סנכרון מכסת שימוש",
"nightly_tasks_sync_quota_usage_setting_description": "עדכן את מכסת האחסון של המשתמש בהתאם לשימוש הנוכחי",
"no_paths_added": "לא נוספו נתיבים",
"no_pattern_added": "לא נוספה תבנית",
@@ -210,6 +218,8 @@
"oauth_mobile_redirect_uri": "URI להפניה מחדש בנייד",
"oauth_mobile_redirect_uri_override": "עקיפת URI להפניה מחדש בנייד",
"oauth_mobile_redirect_uri_override_description": "אפשר כאשר ספק OAuth לא מאפשר כתובת URI לנייד, כמו ''{callback}''",
"oauth_role_claim": "דרישת תפקיד",
"oauth_role_claim_description": "הענק גישת מנהל באופן אוטומטי אם תביעה זו קיימת. ערך התביעה יכול להיות 'user' או 'admin'.",
"oauth_settings": "OAuth",
"oauth_settings_description": "ניהול הגדרות התחברות עם OAuth",
"oauth_settings_more_details": "למידע נוסף אודות תכונה זו, בדוק את ה<link>תיעוד</link>.",
@@ -371,10 +381,12 @@
"admin_password": "סיסמת מנהל",
"administration": "ניהול",
"advanced": "מתקדם",
"advanced_settings_beta_timeline_subtitle": "נסה את חווית האפליקציה החדשה",
"advanced_settings_beta_timeline_title": "ציר זמן (בטא)",
"advanced_settings_enable_alternate_media_filter_subtitle": "השתמש באפשרות זו כדי לסנן מדיה במהלך הסנכרון לפי קריטריונים חלופיים. מומלץ להשתמש בזה רק אם יש בעיה בזיהוי כל האלבומים באפליקציה.",
"advanced_settings_enable_alternate_media_filter_title": "[ניסיוני] השתמש במסנן סנכרון אלבום חלופי שמבכשיר",
"advanced_settings_log_level_title": "רמת רישום ביומן: {level}",
"advanced_settings_prefer_remote_subtitle": "חלק מהמכשירים הם איטיים מאד לטעינה של תמונות ממוזערות מתמונות שבמכשיר. הפעל הגדרה זו כדי לטעון תמונות מרוחקות במקום.",
"advanced_settings_prefer_remote_subtitle": "במכשירים מסוימים טעינת תמונות ממוזערות מקבצים מקומיים עלולה להיות איטית במיוחד. הפעל הגדרה זו כדי לטעון תמונות מרוחקות במקום זאת.",
"advanced_settings_prefer_remote_title": "העדף תמונות מרוחקות",
"advanced_settings_proxy_headers_subtitle": "הגדר proxy headers שהיישום צריך לשלוח עם כל בקשת רשת",
"advanced_settings_proxy_headers_title": "כותרות פרוקסי",
@@ -393,6 +405,7 @@
"album_cover_updated": "עטיפת האלבום עודכנה",
"album_delete_confirmation": "האם באמת ברצונך למחוק את האלבום {album}?",
"album_delete_confirmation_description": "אם האלבום הזה משותף, משתמשים אחרים לא יוכלו לגשת אליו יותר.",
"album_deleted": "אלבום נמחק",
"album_info_card_backup_album_excluded": "הוחרגו",
"album_info_card_backup_album_included": "נכללו",
"album_info_updated": "מידע האלבום עודכן",
@@ -402,6 +415,7 @@
"album_options": "אפשרויות האלבום",
"album_remove_user": "להסיר משתמש?",
"album_remove_user_confirmation": "האם באמת ברצונך להסיר את {user}?",
"album_search_not_found": "לא נמצאו אלבומים התואמים לחיפוש שלך",
"album_share_no_users": "נראה ששיתפת את האלבום הזה עם כל המשתמשים או שאין לך אף משתמש לשתף איתו.",
"album_updated": "אלבום עודכן",
"album_updated_setting_description": "קבל הודעת דוא\"ל כאשר לאלבום משותף יש תמונות חדשות",
@@ -421,6 +435,7 @@
"albums_default_sort_order": "סדר מיון אלבומים ברירת מחדל",
"albums_default_sort_order_description": "סדר מיון תמונות ראשוני בעת יצירת אלבומים חדשים.",
"albums_feature_description": "אוספים של תמונות אשר ניתנים לשיתוף עם משתמשים אחרים.",
"albums_on_device_count": "אלבומים במכשיר ({count})",
"all": "הכל",
"all_albums": "כל האלבומים",
"all_people": "כל האנשים",
@@ -504,6 +519,7 @@
"back_close_deselect": "חזור, סגור, או בטל בחירה",
"background_location_permission": "הרשאת מיקום ברקע",
"background_location_permission_content": "כדי להחליף רשתות בעת ריצה ברקע, היישום צריך *תמיד* גישה למיקום מדויק על מנת לקרוא את השם של רשת האינטרנט האלחוטי",
"backup": "גיבוי",
"backup_album_selection_page_albums_device": "({count}) אלבומים במכשיר",
"backup_album_selection_page_albums_tap": "הקש כדי לכלול, הקש פעמיים כדי להחריג",
"backup_album_selection_page_assets_scatter": "תמונות יכולות להתפזר על פני אלבומים מרובים. לפיכך, ניתן לכלול או להחריג אלבומים במהלך תהליך הגיבוי.",
@@ -548,11 +564,11 @@
"backup_controller_page_none_selected": "אין בחירה",
"backup_controller_page_remainder": "בהמתנה לגיבוי",
"backup_controller_page_remainder_sub": "תמונות וסרטונים הנותרים לגיבוי מתוך בחירה",
"backup_controller_page_server_storage": "אחסון שרת",
"backup_controller_page_server_storage": "אחסון בשרת",
"backup_controller_page_start_backup": "התחל גיבוי",
"backup_controller_page_status_off": "גיבוי חזית אוטומטי כבוי",
"backup_controller_page_status_on": "גיבוי חזית אוטומטי מופעל",
"backup_controller_page_storage_format": "{total} מתוך {used} בשימוש",
"backup_controller_page_storage_format": "{used}מתוך {total} בשימוש",
"backup_controller_page_to_backup": "אלבומים לגבות",
"backup_controller_page_total_sub": "כל התמונות והסרטונים הייחודיים מאלבומים שנבחרו",
"backup_controller_page_turn_off": "כיבוי גיבוי חזית",
@@ -567,6 +583,8 @@
"backup_options_page_title": "אפשרויות גיבוי",
"backup_setting_subtitle": "ניהול הגדרות העלאת רקע וחזית",
"backward": "אחורה",
"beta_sync": "סטטוס סנכרון (בטא)",
"beta_sync_subtitle": "נהל את מערכת הסנכרון החדשה",
"biometric_auth_enabled": "אימות ביומטרי הופעל",
"biometric_locked_out": "גישה לאימות הביומטרי נחסמה",
"biometric_no_options": "אין אפשרויות זמינות עבור אימות ביומטרי",
@@ -584,7 +602,7 @@
"cache_settings_clear_cache_button": "ניקוי מטמון",
"cache_settings_clear_cache_button_title": "מנקה את המטמון של היישום. זה ישפיע באופן משמעותי על הביצועים של היישום עד שהמטמון מתמלא מחדש.",
"cache_settings_duplicated_assets_clear_button": "נקה",
"cache_settings_duplicated_assets_subtitle": "תמונות וסרטונים שנמצאים ברשימה השחורה של היישום",
"cache_settings_duplicated_assets_subtitle": "תמונות וסרטונים שנמצאים ברשימת ההתעלמות של האפליקציה",
"cache_settings_duplicated_assets_title": "({count}) תמונות משוכפלות",
"cache_settings_statistics_album": "תמונות ממוזערות של ספרייה",
"cache_settings_statistics_full": "תמונות מלאות",
@@ -601,6 +619,7 @@
"cancel": "ביטול",
"cancel_search": "ביטול חיפוש",
"canceled": "בוטל",
"canceling": "מבטל",
"cannot_merge_people": "לא ניתן למזג אנשים",
"cannot_undo_this_action": "אין באפשרותך לבטל את הפעולה הזו!",
"cannot_update_the_description": "לא ניתן לעדכן את התיאור",
@@ -714,6 +733,7 @@
"current_server_address": "כתובת שרת נוכחית",
"custom_locale": "אזור שפה מותאם אישית",
"custom_locale_description": "עצב תאריכים ומספרים על סמך השפה והאזור",
"custom_url": "קישור מותאם אישית",
"daily_title_text_date": "E, MMM dd",
"daily_title_text_date_year": "E, MMM dd, yyyy",
"dark": "כהה",
@@ -733,7 +753,8 @@
"default_locale": "שפת ברירת מחדל",
"default_locale_description": "פורמט תאריכים ומספרים מבוסס שפת הדפדפן שלך",
"delete": "מחק",
"delete_action_prompt": "{count} נמחקו לצמיתות",
"delete_action_confirmation_message": "האם אתה בטוח שברצונך למחוק את התמונה הזאת? פעולה זו תעביר אותו לאשפה של השרת, ותשאל אם ברצונך למחוק אותו גם מהמכשיר המקומי",
"delete_action_prompt": "{count} נמחקו",
"delete_album": "מחק אלבום",
"delete_api_key_prompt": "האם אתה בטוח שברצונך למחוק מפתח ה-API הזה?",
"delete_dialog_alert": "הפריטים האלה ימחקו לצמיתות מהשרת ומהמכשיר שלך",
@@ -747,9 +768,12 @@
"delete_key": "מחק מפתח",
"delete_library": "מחק ספרייה",
"delete_link": "מחק קישור",
"delete_local_action_prompt": "{count} נמחקו באופן מקומי",
"delete_local_dialog_ok_backed_up_only": "מחק את מה שמגובה בלבד",
"delete_local_dialog_ok_force": "מחק בכל זאת",
"delete_others": "מחק אחרים",
"delete_permanently": "מחק לצמיתות",
"delete_permanently_action_prompt": "{count} נמחקו לצמיתות",
"delete_shared_link": "מחק קישור משותף",
"delete_shared_link_dialog_title": "מחק קישור משותף",
"delete_tag": "מחק תג",
@@ -760,6 +784,7 @@
"description": "תיאור",
"description_input_hint_text": "הוסף תיאור...",
"description_input_submit_error": "שגיאה בעדכון תיאור, בדוק את היומן לפרטים נוספים",
"deselect_all": "בטל הכל",
"details": "פרטים",
"direction": "כיוון",
"disabled": "מושבת",
@@ -777,6 +802,7 @@
"documentation": "תיעוד",
"done": "סיום",
"download": "הורדה",
"download_action_prompt": "מוריד {count} תמונות",
"download_canceled": "הורדה בוטלה",
"download_complete": "הורדה הושלמה",
"download_enqueue": "הורדה נוספה לתור",
@@ -803,6 +829,7 @@
"edit": "ערוך",
"edit_album": "ערוך אלבום",
"edit_avatar": "ערוך תמונת פרופיל",
"edit_birthday": "עריכת יום הולדת",
"edit_date": "ערוך תאריך",
"edit_date_and_time": "ערוך תאריך ושעה",
"edit_description": "ערוך תיאור",
@@ -833,6 +860,7 @@
"empty_trash": "רוקן אשפה",
"empty_trash_confirmation": "האם באמת ברצונך לרוקן את האשפה? זה יסיר לצמיתות את כל התמונות מהאשפה של השרת.\nאין באפשרותך לבטל פעולה זו!",
"enable": "אפשר",
"enable_backup": "הפעל גיבוי",
"enable_biometric_auth_description": "הזן את קוד ה־PIN שלך כדי להפעיל אימות ביומטרי",
"enabled": "מופעל",
"end_date": "תאריך סיום",
@@ -969,6 +997,7 @@
},
"exif": "Exif",
"exif_bottom_sheet_description": "הוסף תיאור...",
"exif_bottom_sheet_description_error": "שגיאה בעדכון התיאור",
"exif_bottom_sheet_details": "פרטים",
"exif_bottom_sheet_location": "מיקום",
"exif_bottom_sheet_people": "אנשים",
@@ -989,6 +1018,8 @@
"explorer": "סייר",
"export": "ייצוא",
"export_as_json": "ייצוא כ-JSON",
"export_database": "ייצא מסד נתונים",
"export_database_description": "ייצא מסד נתונים SQL",
"extension": "סיומת",
"external": "חיצוני",
"external_libraries": "ספריות חיצוניות",
@@ -1040,6 +1071,9 @@
"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": "שם כותרת",
@@ -1072,6 +1106,7 @@
"host": "מארח",
"hour": "שעה",
"id": "מזהה",
"idle": "ממתין",
"ignore_icloud_photos": "התעלם מתמונות iCloud",
"ignore_icloud_photos_description": "תמונות שמאוחסנות ב-iCloud לא יועלו לשרת",
"image": "תמונה",
@@ -1129,6 +1164,7 @@
"language_no_results_title": "לא נמצאה שפה",
"language_search_hint": "חפש שפות...",
"language_setting_description": "בחר את השפה המועדפת עליך",
"large_files": "קבצים גדולים",
"last_seen": "נראה לאחרונה",
"latest_version": "גרסה עדכנית ביותר",
"latitude": "קו רוחב",
@@ -1144,16 +1180,18 @@
"library_page_sort_created": "תאריך יצירה",
"library_page_sort_last_modified": "שונה לאחרונה",
"library_page_sort_title": "כותרת אלבום",
"licenses": "רישיונות",
"light": "בהיר",
"like_deleted": "לייק נמחק",
"link_motion_video": "קשר סרטון תנועה",
"link_options": "אפשרויות קישור",
"link_to_oauth": "קישור ל-OAuth",
"linked_oauth_account": "חשבון OAuth מקושר",
"list": "רשימה",
"loading": "טוען",
"loading_search_results_failed": "טעינת תוצאות החיפוש נכשלה",
"local": "מקומי",
"local_asset_cast_failed": "לא ניתן לשדר תמונה שלא הועלתה לשרת",
"local_assets": "תמונות מקומיות",
"local_network": "רשת מקומית",
"local_network_sheet_info": "היישום יתחבר לשרת דרך הכתובת הזאת כאשר משתמשים ברשת האינטרנט האלחוטי שמצוינת",
"location_permission": "הרשאת מיקום",
@@ -1210,8 +1248,7 @@
"manage_your_devices": "ניהול המכשירים המחוברים שלך",
"manage_your_oauth_connection": "ניהול חיבור ה-OAuth שלך",
"map": "מפה",
"map_assets_in_bound": "תמונה {count}",
"map_assets_in_bounds": "{count} תמונות",
"map_assets_in_bounds": "{count, plural, one {תמונה #} other {# תמונות}}",
"map_cannot_get_user_location": "לא ניתן לקבוע את מיקום המשתמש",
"map_location_dialog_yes": "כן",
"map_location_picker_page_use_location": "השתמש במיקום הזה",
@@ -1245,7 +1282,7 @@
"memories_setting_description": "נהל את מה שרואים בזכרונות שלך",
"memories_start_over": "התחל מחדש",
"memories_swipe_to_close": "החלק למעלה כדי לסגור",
"memory": "זיכרון",
"memory": "זיכרון (היום לפני..)",
"memory_lane_title": "משעול הזיכרונות {title}",
"menu": "תפריט",
"merge": "מזג",
@@ -1310,6 +1347,7 @@
"no_results": "אין תוצאות",
"no_results_description": "נסה להשתמש במילה נרדפת או במילת מפתח יותר כללית",
"no_shared_albums_message": "צור אלבום כדי לשתף תמונות וסרטונים עם אנשים ברשת שלך",
"no_uploads_in_progress": "אין העלאות בתהליך",
"not_in_any_album": "לא בשום אלבום",
"not_selected": "לא נבחרו",
"note_apply_storage_label_to_previously_uploaded assets": "הערה: כדי להחיל את תווית האחסון על תמונות שהועלו בעבר, הפעל את",
@@ -1347,6 +1385,7 @@
"original": "מקורי",
"other": "אחר",
"other_devices": "מכשירים אחרים",
"other_entities": "ישויות אחרות",
"other_variables": "משתנים אחרים",
"owned": "בבעלות",
"owner": "בעלים",
@@ -1478,6 +1517,7 @@
"purchase_server_description_2": "מעמד תומך",
"purchase_server_title": "שרת",
"purchase_settings_server_activated": "מפתח המוצר של השרת מנוהל על ידי מנהל המערכת",
"queue_status": "בתור {count}/{total}",
"rating": "דירוג כוכב",
"rating_clear": "נקה דירוג",
"rating_count": "{count, plural, one {כוכב #} other {# כוכבים}}",
@@ -1506,6 +1546,8 @@
"refreshing_faces": "מרענן פרצופים",
"refreshing_metadata": "מרענן מטא-נתונים",
"regenerating_thumbnails": "מחדש תמונות ממוזערות",
"remote": "מרוחק",
"remote_assets": "תמונות מרוחקות",
"remove": "הסר",
"remove_assets_album_confirmation": "האם באמת ברצונך להסיר {count, plural, one {תמונה #} other {# תמונות}} מהאלבום?",
"remove_assets_shared_link_confirmation": "האם אתה בטוח שברצונך להסיר {count, plural, one {תמונה #} other {# תמונות}} מהקישור המשותף הזה?",
@@ -1543,19 +1585,25 @@
"reset_password": "איפוס סיסמה",
"reset_people_visibility": "אפס את נראות האנשים",
"reset_pin_code": "אפס קוד PIN",
"reset_sqlite": "אפס את מסד הנתונים SQLite",
"reset_sqlite_confirmation": "האם אתה בטוח שברצונך לאפס את מסד הנתונים SQLite? יהיה עליך להתנתק ולהתחבר מחדש כדי לסנכרן את הנתונים מחדש",
"reset_sqlite_success": "איפוס מסד הנתונים SQLite בוצע בהצלחה",
"reset_to_default": "אפס לברירת מחדל",
"resolve_duplicates": "פתור כפילויות",
"resolved_all_duplicates": "כל הכפילויות נפתרו",
"restore": "שחזר",
"restore_all": "שחזר הכל",
"restore_trash_action_prompt": "{count} שוחזרו מהשאפה",
"restore_user": "שחזר משתמש",
"restored_asset": "התמונה שוחזרה",
"resume": "המשך",
"retry_upload": "נסה שוב להעלות",
"review_duplicates": "בדוק כפילויות",
"review_large_files": "צפייה בקבצים גדולים",
"role": "תפקיד",
"role_editor": "עורך",
"role_viewer": "צופה",
"running": "פועל",
"save": "שמור",
"save_to_gallery": "שמור לגלריה",
"saved_api_key": "מפתח API שמור",
@@ -1687,6 +1735,7 @@
"settings_saved": "ההגדרות נשמרו",
"setup_pin_code": "הגדר קוד PIN",
"share": "שתף",
"share_action_prompt": "שותפו {count} תמונות",
"share_add_photos": "הוסף תמונות",
"share_assets_selected": "{count} נבחרו",
"share_dialog_preparing": "מכין...",
@@ -1708,6 +1757,7 @@
"shared_link_clipboard_copied_massage": "הועתק ללוח",
"shared_link_clipboard_text": "קישור: {password}\nסיסמה: {link}",
"shared_link_create_error": "שגיאה ביצירת קישור משותף",
"shared_link_custom_url_description": "גש לקישור ששותף באמצעות כתובת URL מותאמת אישית",
"shared_link_edit_description_hint": "הכנס את תיאור השיתוף",
"shared_link_edit_expire_after_option_day": "1 יום",
"shared_link_edit_expire_after_option_days": "{count} ימים",
@@ -1733,6 +1783,7 @@
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "ניהול קישורים משותפים",
"shared_link_options": "אפשרויות קישור משותף",
"shared_link_password_description": "דרוש סיסמה כדי לגשת לקישור המשותף הזה",
"shared_links": "קישורים משותפים",
"shared_links_description": "שתף תמונות וסרטונים עם קישור",
"shared_photos_and_videos_count": "{assetCount, plural, other {# תמונות וסרטונים משותפים.}}",
@@ -1788,6 +1839,7 @@
"sort_title": "כותרת",
"source": "קוד מקור",
"stack": "ערימה",
"stack_action_prompt": "{count} קובצו",
"stack_duplicates": "צור ערימת כפילויות",
"stack_select_one_photo": "בחר תמונה ראשית אחת עבור הערימה",
"stack_selected_photos": "צור ערימת תמונות נבחרות",
@@ -1807,6 +1859,7 @@
"storage_quota": "מכסת האחסון",
"storage_usage": "{used} בשימוש מתוך {available}",
"submit": "שלח",
"success": "בוצע בהצלחה",
"suggestions": "הצעות",
"sunrise_on_the_beach": "Sunrise on the beach (מומלץ לחפש באנגלית לתוצאות טובות יותר)",
"support": "תמיכה",
@@ -1816,6 +1869,8 @@
"sync": "סנכרן",
"sync_albums": "סנכרן אלבומים",
"sync_albums_manual_subtitle": "סנכרן את כל הסרטונים והתמונות שהועלו לאלבומי הגיבוי שנבחרו",
"sync_local": "סנכרן מקומי",
"sync_remote": "סנכרן מרוחק",
"sync_upload_album_setting_subtitle": "צור והעלה תמונות וסרטונים שלך לאלבומים שנבחרו ביישום",
"tag": "תג",
"tag_assets": "תיוג תמונות",
@@ -1826,6 +1881,7 @@
"tag_updated": "תג מעודכן: {tag}",
"tagged_assets": "תויגו {count, plural, one {תמונה #} other {# תמונות}}",
"tags": "תגים",
"tap_to_run_job": "לחץ על מנת להפעיל משימה",
"template": "תבנית",
"theme": "ערכת נושא",
"theme_selection": "בחירת ערכת נושא",
@@ -1898,16 +1954,20 @@
"unselect_all_duplicates": "בטל בחירת כל הכפילויות",
"unselect_all_in": "בטל את הבחירה של הכל ב {group}",
"unstack": "בטל ערימה",
"unstack_action_prompt": "{count} הופרדו",
"unstacked_assets_count": "{count, plural, one {תמונה # הוסרה} other {# תמונות הוסרו}} מהערימה",
"untagged": "לא מתיוגים",
"up_next": "הבא בתור",
"updated_at": "עודכן",
"updated_password": "סיסמה עודכנה",
"upload": "העלאה",
"upload_action_prompt": "{count} נוספו לתור להעלאה",
"upload_concurrency": "בו-זמניות של העלאה",
"upload_details": "פרטי העלאה",
"upload_dialog_info": "האם ברצונך לגבות את התמונות שנבחרו לשרת?",
"upload_dialog_title": "העלאת תמונה",
"upload_errors": "העלאה הושלמה עם {count, plural, one {שגיאה #} other {# שגיאות}}, רענן את הדף כדי לראות תמונות שהועלו.",
"upload_finished": "העלאה הסתיימה",
"upload_progress": "נותרו {remaining, number} - טופלו {processed, number}/{total, number}",
"upload_skipped_duplicates": "דילג על {count, plural, one {תמונה כפולה #} other {# תמונות כפולות}}",
"upload_status_duplicates": "כפילויות",
@@ -1916,6 +1976,7 @@
"upload_success": "ההעלאה בוצעה בהצלחה. רענן את הדף כדי לצפות בתמונות שהועלו.",
"upload_to_immich": "העלה לשרת ({count})",
"uploading": "מעלה",
"uploading_media": "מעלה מדיה",
"url": "URL",
"usage": "שימוש",
"use_biometric": "השתמש באימות ביומטרי",
@@ -1936,6 +1997,7 @@
"user_usage_stats_description": "הצג סטטיסטיקות שימוש בחשבון",
"username": "שם משתמש",
"users": "משתמשים",
"users_added_to_album_count": "נוספו {count, plural, one {משתמש #} other {# משתמשים}} לאלבום",
"utilities": "כלים",
"validate": "לאמת",
"validate_endpoint_error": "נא להזין כתובת תקנית",
@@ -1954,6 +2016,7 @@
"view_album": "הצג אלבום",
"view_all": "הצג הכל",
"view_all_users": "הצג את כל המשתמשים",
"view_details": "הצג פרטים",
"view_in_timeline": "ראה בציר הזמן",
"view_link": "הצג קישור",
"view_links": "הצג קישורים",

View File

@@ -45,7 +45,7 @@
"backup_database_enable_description": "Enable database dumps",
"backup_keep_last_amount": "रखने के लिए पिछले डंप की मात्रा",
"backup_settings": "डेटाबेस डंप सेटिंग्स",
"backup_settings_description": "डेटाबेस डंप सेटिंग्स प्रबंधित करें। ध्यान दें: इन कार्यों की निगरानी नहीं की जाती है और विफलता की स्थिति में आपको सूचित नहीं किया जाएगा।",
"backup_settings_description": "डेटाबेस डंप सेटिंग्स प्रबंधित करें।",
"cleared_jobs": "{job}: के लिए कार्य साफ़ कर दिए गए",
"config_set_by_file": "Config वर्तमान में एक config फ़ाइल द्वारा सेट किया गया है",
"confirm_delete_library": "क्या आप वाकई {library} लाइब्रेरी को हटाना चाहते हैं?",
@@ -166,12 +166,26 @@
"metadata_settings_description": "मेटाडेटा सेटिंग प्रबंधित करें",
"migration_job": "प्रवास",
"migration_job_description": "संपत्तियों और चेहरों के थंबनेल को नवीनतम फ़ोल्डर संरचना में माइग्रेट करें",
"nightly_tasks_cluster_faces_setting_description": "नए पहचाने गए चेहरों पर चेहरे की पहचान चलाएँ",
"nightly_tasks_cluster_new_faces_setting": "नए चेहरों को समूह में शामिल करें",
"nightly_tasks_database_cleanup_setting": "डेटाबेस क्लीनअप कार्य",
"nightly_tasks_database_cleanup_setting_description": "डेटाबेस से पुराना, समाप्त हो चुका डेटा साफ़ करें",
"nightly_tasks_generate_memories_setting": "यादें उत्पन्न करें",
"nightly_tasks_generate_memories_setting_description": "संपत्तियों से नई यादें बनाएँ",
"nightly_tasks_missing_thumbnails_setting": "गायब थंबनेल उत्पन्न करें",
"nightly_tasks_missing_thumbnails_setting_description": "थंबनेल निर्माण के लिए थंबनेल के बिना कतारबद्ध परिसंपत्तियाँ",
"nightly_tasks_settings": "रात्रिकालीन कार्य सेटिंग्स",
"nightly_tasks_settings_description": "रात्रिकालीन कार्यों का प्रबंधन करें",
"nightly_tasks_start_time_setting": "समय शुरू",
"nightly_tasks_start_time_setting_description": "वह समय जब सर्वर रात्रिकालीन कार्य चलाना शुरू करता है",
"nightly_tasks_sync_quota_usage_setting": "सिंक कोटा उपयोग",
"nightly_tasks_sync_quota_usage_setting_description": "वर्तमान उपयोग के आधार पर उपयोगकर्ता संग्रहण कोटा अपडेट करें",
"no_paths_added": "कोई पथ नहीं डाला गया",
"no_pattern_added": "कोई पैटर्न नहीं डाला गया",
"note_apply_storage_label_previous_assets": "नोट: पहले अपलोड की गई संपत्तियों पर स्टोरेज लेबल लागू करने के लिए, चलाएँ",
"note_cannot_be_changed_later": "नोट: इसे बाद में बदला नहीं जा सकता!",
"notification_email_from_address": "इस पते से",
"notification_email_from_address_description": "प्रेषक का ईमेल पता, उदाहरण के लिए: \"इमिच फोटो सर्वर <noreply@example.com>\"",
"notification_email_from_address_description": "प्रेषक का ईमेल पता, उदाहरण के लिए: \"इमिच फोटो सर्वर <noreply@example.com>\"। यह सुनिश्चित करें कि आप उसी पते का उपयोग करें जिससे आपको ईमेल भेजने की अनुमति है।",
"notification_email_host_description": "ईमेल सर्वर का होस्ट (उदा. smtp.immitch.app)",
"notification_email_ignore_certificate_errors": "प्रमाणपत्र त्रुटियों पर ध्यान न दें",
"notification_email_ignore_certificate_errors_description": "टीएलएस प्रमाणपत्र सत्यापन त्रुटियों पर ध्यान न दें (अनुशंसित नहीं)",
@@ -195,7 +209,9 @@
"oauth_enable_description": "OAuth से लॉगिन करें",
"oauth_mobile_redirect_uri": "मोबाइल रीडायरेक्ट यूआरआई",
"oauth_mobile_redirect_uri_override": "मोबाइल रीडायरेक्ट यूआरआई ओवरराइड",
"oauth_mobile_redirect_uri_override_description": "सक्षम करें जब 'app.immitch:/' एक अमान्य रीडायरेक्ट यूआरआई हो।",
"oauth_mobile_redirect_uri_override_description": "जब OAuth प्रदाता किसी मोबाइल URI, जैसे ''{callback}'' की अनुमति नहीं देता, तब सक्षम करें",
"oauth_role_claim": "भूमिका का दावा",
"oauth_role_claim_description": "इस दावे की उपस्थिति के आधार पर स्वचालित रूप से व्यवस्थापक पहुँच प्रदान करें। दावे में 'उपयोगकर्ता' या 'व्यवस्थापक' हो सकता है।",
"oauth_settings": "ओऑथ",
"oauth_settings_description": "OAuth लॉगिन सेटिंग प्रबंधित करें",
"oauth_settings_more_details": "इस सुविधा के बारे में अधिक जानकारी के लिए, देखें <link>डॉक्स</link>।",
@@ -204,7 +220,7 @@
"oauth_storage_quota_claim": "भंडारण कोटा का दावा",
"oauth_storage_quota_claim_description": "उपयोगकर्ता के संग्रहण कोटा को इस दावे के मूल्य पर स्वचालित रूप से सेट करें।",
"oauth_storage_quota_default": "डिफ़ॉल्ट संग्रहण कोटा (GiB)",
"oauth_storage_quota_default_description": "GiB में कोटा का उपयोग तब किया जाएगा जब कोई दावा प्रदान नहीं किया गया हो (असीमित कोटा के लिए 0 दर्ज करें)।",
"oauth_storage_quota_default_description": "GiB में कोटा का उपयोग तब किया जाएगा जब कोई दावा प्रदान नहीं किया गया हो ।",
"oauth_timeout": "ब्रेक का अनुरोध",
"oauth_timeout_description": "अनुरोधों के लिए समय-सीमा मिलीसेकंड में",
"password_enable_description": "ईमेल और पासवर्ड से लॉगिन करें",
@@ -244,6 +260,7 @@
"storage_template_migration_info": "स्टोरेज टेम्प्लेट सभी एक्सटेंशन को लोअरकेस में बदल देगा। टेम्प्लेट में किए गए बदलाव सिर्फ़ नई संपत्तियों पर लागू होंगे। टेम्प्लेट को पहले अपलोड की गई संपत्तियों पर पूर्वव्यापी रूप से लागू करने के लिए, <link>{job}</link> चलाएँ।",
"storage_template_migration_job": "संग्रहण टेम्पलेट माइग्रेशन कार्य",
"storage_template_more_details": "इस सुविधा के बारे में अधिक जानकारी के लिए, देखें <template-link>भंडारण टेम्पलेट</template-link> और इसके <implications-link>आशय</implications-link>",
"storage_template_onboarding_description_v2": "सक्षम होने पर, यह सुविधा उपयोगकर्ता-निर्धारित टेम्पलेट के आधार पर फ़ाइलों को स्वतः व्यवस्थित करेगी। अधिक जानकारी के लिए, कृपया <link>दस्तावेज़ीकरण</link> देखें।",
"storage_template_path_length": "अनुमानित पथ लंबाई सीमा: <b>{length, number}</b>/{limit, number}",
"storage_template_settings": "भंडारण टेम्पलेट",
"storage_template_settings_description": "अपलोड संपत्ति की फ़ोल्डर संरचना और फ़ाइल नाम प्रबंधित करें",
@@ -356,10 +373,12 @@
"admin_password": "व्यवस्थापक पासवर्ड",
"administration": "प्रशासन",
"advanced": "विकसित",
"advanced_settings_beta_timeline_subtitle": "नए ऐप अनुभव को आज़माएँ",
"advanced_settings_beta_timeline_title": "बीटा टाइमलाइन",
"advanced_settings_enable_alternate_media_filter_subtitle": "सिंक के दौरान वैकल्पिक मानदंडों के आधार पर मीडिया को फ़िल्टर करने के लिए इस विकल्प का उपयोग करें। इसे केवल तभी आज़माएँ जब आपको ऐप द्वारा सभी एल्बमों का पता लगाने में समस्या हो।",
"advanced_settings_enable_alternate_media_filter_title": "[प्रयोगात्मक] वैकल्पिक डिवाइस एल्बम सिंक फ़िल्टर का उपयोग करें",
"advanced_settings_log_level_title": "लॉग स्तर:{level}",
"advanced_settings_prefer_remote_subtitle": "कुछ डिवाइस पर मौजूद एसेट से थंबनेल लोड करने में काफ़ी समय लगता है। इसके बजाय रिमोट इमेज लोड करने के लिए इस सेटिंग को सक्रिय करें।",
"advanced_settings_prefer_remote_subtitle": "कुछ डिवाइस स्थानीय एसेट से थंबनेल लोड करने में बहुत धीमे होते है। इसके बजाय, दूरस्थ इमेज लोड करने के लिए इस सेटिंग को सक्रिय करें।",
"advanced_settings_prefer_remote_title": "दूरस्थ छवियों को प्राथमिकता दें",
"advanced_settings_proxy_headers_subtitle": "प्रत्येक नेटवर्क अनुरोध के साथ इम्मिच द्वारा भेजे जाने वाले प्रॉक्सी हेडर को परिभाषित करें",
"advanced_settings_proxy_headers_title": "प्रॉक्सी हेडर",
@@ -378,6 +397,7 @@
"album_cover_updated": "एल्बम कवर अपडेट किया गया",
"album_delete_confirmation": "क्या आप वाकई एल्बम {album} हटाना चाहते हैं?",
"album_delete_confirmation_description": "यदि यह एल्बम साझा किया गया है, तो अन्य उपयोगकर्ता इसे एक्सेस नहीं कर पाएंगे।",
"album_deleted": "एल्बम हटा दिया गया",
"album_info_card_backup_album_excluded": "छोड़ा गया",
"album_info_card_backup_album_included": "शामिल",
"album_info_updated": "एल्बम की जानकारी अपडेट की गई",
@@ -387,6 +407,7 @@
"album_options": "एल्बम विकल्प",
"album_remove_user": "उपयोगकर्ता हटाएं?",
"album_remove_user_confirmation": "क्या आप वाकई {user} को हटाना चाहते हैं?",
"album_search_not_found": "आपकी खोज से मेल खाता कोई एल्बम नहीं मिला",
"album_share_no_users": "ऐसा लगता है कि आपने यह एल्बम सभी उपयोगकर्ताओं के साथ साझा कर दिया है या आपके पास साझा करने के लिए कोई उपयोगकर्ता नहीं है।",
"album_updated": "एल्बम अपडेट किया गया",
"album_updated_setting_description": "जब किसी साझा एल्बम में नई संपत्तियाँ हों तो एक ईमेल सूचना प्राप्त करें",
@@ -402,7 +423,11 @@
"album_viewer_page_share_add_users": "उपयोगकर्ता जोड़ें",
"album_with_link_access": "लिंक वाले किसी भी व्यक्ति को इस एल्बम में फ़ोटो और लोगों को देखने दें।",
"albums": "एलबम",
"albums_count": "{गिनती, बहुवचन, एक {{count, number} एल्बम} अन्य {{count, number} एल्बम}}",
"albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Albums}}",
"albums_default_sort_order": "डिफ़ॉल्ट एल्बम सॉर्ट क्रम",
"albums_default_sort_order_description": "नये एल्बम बनाते समय आरंभिक परिसंपत्ति सॉर्ट क्रम।",
"albums_feature_description": "परिसंपत्तियों का संग्रह जिसे अन्य उपयोगकर्ताओं के साथ साझा किया जा सकता है।",
"albums_on_device_count": "डिवाइस पर एल्बम ({count})",
"all": "सभी",
"all_albums": "सभी एलबम",
"all_people": "सभी लोग",
@@ -423,13 +448,14 @@
"app_settings": "एप्लिकेशन सेटिंग",
"appears_in": "प्रकट होता है",
"archive": "संग्रहालय",
"archive_action_prompt": "{count} को संग्रह में जोड़ा गया",
"archive_or_unarchive_photo": "फ़ोटो को संग्रहीत या असंग्रहीत करें",
"archive_page_no_archived_assets": "कोई संग्रहीत संपत्ति नहीं मिली",
"archive_page_title": "पुरालेख ({count})",
"archive_size": "पुरालेख आकार",
"archive_size_description": "डाउनलोड के लिए संग्रह आकार कॉन्फ़िगर करें (GiB में)",
"archived": "संग्रहित",
"archived_count": "{गणना, बहुवचन, अन्य {संग्रहीत #}}",
"archived_count": "{count, बहुवचन, अन्य {संग्रहीत #}}",
"are_these_the_same_person": "क्या ये वही व्यक्ति हैं?",
"are_you_sure_to_do_this": "क्या आप वास्तव में इसे करना चाहते हैं?",
"asset_action_delete_err_read_only": "केवल पढ़ने योग्य परिसंपत्ति(ओं) को हटाया नहीं जा सकता, छोड़ा जा सकता है",
@@ -442,50 +468,175 @@
"asset_hashing": "हैशिंग...।",
"asset_list_group_by_sub_title": "द्वारा समूह बनाएं",
"asset_list_layout_settings_dynamic_layout_title": "गतिशील लेआउट",
"asset_list_layout_settings_group_automatically": "स्वचालित",
"asset_list_layout_settings_group_by": "समूह परिसंपत्तियों द्वारा",
"asset_list_layout_settings_group_by_month_day": "महीना + दिन",
"asset_list_layout_sub_title": "लेआउट",
"asset_list_settings_subtitle": "फ़ोटो ग्रिड लेआउट सेटिंग्स",
"asset_list_settings_title": "चित्र की जाली",
"asset_offline": "संपत्ति ऑफ़लाइन",
"asset_offline_description": "यह संपत्ति ऑफ़लाइन है।",
"asset_restored_successfully": "संपत्ति(याँ) सफलतापूर्वक पुनर्स्थापित की गईं",
"asset_skipped": "छोड़ा गया",
"asset_skipped_in_trash": "कचरे में",
"asset_uploaded": "अपलोड किए गए",
"asset_uploading": "अपलोड हो रहा है..।",
"asset_uploading": "अपलोड हो रहा है",
"asset_viewer_settings_subtitle": "अपनी गैलरी व्यूअर सेटिंग प्रबंधित करें",
"asset_viewer_settings_title": "एसेट व्यूअर",
"assets": "संपत्तियां",
"assets_added_count": "{count, plural, one {# asset} other {# assets}} जोड़ा गया",
"assets_added_to_album_count": "एल्बम में {count, plural, one {# asset} other {# assets}} जोड़ा गया",
"assets_cannot_be_added_to_album_count": "{count, plural, one {Asset} other {Assets}} को एल्बम में नहीं जोड़ा जा सकता",
"assets_count": "{count, बहुवचन, एक {# संपत्ति} अन्य {# संपत्ति}}",
"assets_deleted_permanently": "{count} संपत्ति(याँ) स्थायी रूप से हटा दी गईं",
"assets_deleted_permanently_from_server": "{count} संपत्ति(याँ) इमिच सर्वर से स्थायी रूप से हटा दी गईं",
"assets_downloaded_failed": "{count, plural, one {Downloaded # file - {error} file failed} other {Downloaded # files - {error} files failed}}",
"assets_downloaded_successfully": "{count, plural, one {Downloaded # file successfully} अन्य {Downloaded # files successfully}}",
"assets_moved_to_trash_count": "{count, plural, one {# asset} other {# assets}} को ट्रैश में ले जाया गया",
"assets_permanently_deleted_count": "स्थायी रूप से हटा दिया गया {count, plural, one {# asset} other {# assets}}",
"assets_removed_count": "{count, plural, one {# asset} other {# assets}} हटा दिया गया",
"assets_removed_permanently_from_device": "{count} संपत्ति(याँ) आपके डिवाइस से स्थायी रूप से हटा दी गईं",
"assets_restore_confirmation": "क्या आप वाकई अपनी सभी नष्ट की गई संपत्तियों को पुनर्स्थापित करना चाहते हैं? आप इस क्रिया को पूर्ववत नहीं कर सकते!",
"assets_restore_confirmation": "क्या आप वाकई अपनी सभी नष्ट की गई संपत्तियों को पुनर्स्थापित करना चाहते हैं? आप इस क्रिया को पूर्ववत नहीं कर सकते",
"assets_restored_count": "पुनर्स्थापित {count, plural, one {# asset} other {# assets}}",
"assets_restored_successfully": "{count} संपत्ति(याँ) सफलतापूर्वक पुनर्स्थापित की गईं",
"assets_trashed": "{count} संपत्ति(याँ) कचरे में डाली गईं",
"assets_trashed_count": "ट्रैश की गई {count, plural, one {# asset} other {# assets}}",
"assets_trashed_from_server": "{count} संपत्ति(याँ) इमिच सर्वर से कचरे में डाली गईं",
"assets_were_part_of_album_count": "{count, plural, one {Asset was} other {Assets were}}एल्बम का पहले से ही हिस्सा थे",
"authorized_devices": "अधिकृत उपकरण",
"automatic_endpoint_switching_subtitle": "उपलब्ध होने पर निर्दिष्ट वाई-फाई से स्थानीय रूप से कनेक्ट करें और अन्यत्र वैकल्पिक कनेक्शन का उपयोग करें",
"automatic_endpoint_switching_title": "स्वचालित URL स्विचिंग",
"autoplay_slideshow": "ऑटोप्ले स्लाइड शो",
"back": "वापस",
"back_close_deselect": "वापस जाएँ, बंद करें, या अचयनित करें",
"backup_controller_page_background_wifi": "Only on WiFi",
"background_location_permission": "पृष्ठभूमि स्थान अनुमति",
"background_location_permission_content": "पृष्ठभूमि में चलते समय नेटवर्क बदलने के लिए, Immich के पास *हमेशा* सटीक स्थान तक पहुंच होनी चाहिए ताकि ऐप वाई-फाई नेटवर्क का नाम पढ़ सके",
"backup": "बैकअप",
"backup_album_selection_page_albums_device": "डिवाइस पर एल्बम ({count})",
"backup_album_selection_page_albums_tap": "शामिल करने के लिए टैप करें, बाहर करने के लिए डबल टैप करें",
"backup_album_selection_page_assets_scatter": "एसेट कई एल्बमों में बिखरे हो सकते हैं। इसलिए, बैकअप प्रक्रिया के दौरान एल्बमों को शामिल या बाहर किया जा सकता है।",
"backup_album_selection_page_select_albums": "एल्बम चुनें",
"backup_album_selection_page_selection_info": "चयन जानकारी",
"backup_album_selection_page_total_assets": "कुल अद्वितीय संपत्तियाँ",
"backup_all": "सभी",
"backup_background_service_backup_failed_message": "संपत्तियों का बैकअप लेने में विफल. पुनः प्रयास किया जा रहा है…",
"backup_background_service_connection_failed_message": "सर्वर से कनेक्ट करने में विफल. पुनः प्रयास किया जा रहा है…",
"backup_background_service_current_upload_notification": "{filename} अपलोड हो रहा है",
"backup_background_service_default_notification": "नई परिसंपत्तियों की जांच की जा रही है…",
"backup_background_service_error_title": "बैकअप त्रुटि",
"backup_background_service_in_progress_notification": "अपनी परिसंपत्तियों का बैकअप लेना…",
"backup_background_service_upload_failure_notification": "{filename} अपलोड करने में विफल",
"backup_controller_page_albums": "बैकअप एल्बम",
"backup_controller_page_background_app_refresh_disabled_content": "बैकग्राउंड बैकअप का उपयोग करने के लिए सेटिंग्स > सामान्य > बैकग्राउंड ऐप रिफ्रेश में बैकग्राउंड ऐप रिफ्रेश सक्षम करें।",
"backup_controller_page_background_app_refresh_disabled_title": "पृष्ठभूमि ऐप रीफ़्रेश अक्षम",
"backup_controller_page_background_app_refresh_enable_button_text": "सेटिंग्स पर जाएँ",
"backup_controller_page_background_battery_info_link": "कैसे मुझे दिखाओ",
"backup_controller_page_background_battery_info_message": "सर्वोत्तम बैकग्राउंड बैकअप अनुभव के लिए, कृपया Immich के लिए बैकग्राउंड गतिविधि को प्रतिबंधित करने वाले किसी भी बैटरी ऑप्टिमाइज़ेशन को अक्षम करें।\n\nचूँकि यह डिवाइस-विशिष्ट है, इसलिए कृपया अपने डिवाइस निर्माता से आवश्यक जानकारी देखें।",
"backup_controller_page_background_battery_info_ok": "ठीक",
"backup_controller_page_background_battery_info_title": "बैटरी अनुकूलन",
"backup_controller_page_background_charging": "केवल चार्ज करते समय",
"backup_controller_page_background_configure_error": "पृष्ठभूमि सेवा कॉन्फ़िगर करने में विफल",
"backup_controller_page_background_delay": "नई संपत्ति का बैकअप विलंबित करें: {duration}",
"backup_controller_page_background_description": "ऐप खोले बिना किसी भी नई संपत्ति का स्वचालित रूप से बैकअप लेने के लिए पृष्ठभूमि सेवा चालू करें",
"backup_controller_page_background_is_off": "स्वचालित पृष्ठभूमि बैकअप बंद है",
"backup_controller_page_background_is_on": "स्वचालित पृष्ठभूमि बैकअप चालू है",
"backup_controller_page_background_turn_off": "पृष्ठभूमि सेवा बंद करें",
"backup_controller_page_background_turn_on": "पृष्ठभूमि सेवा चालू करें",
"backup_controller_page_background_wifi": "केवल वाई-फ़ाई पर",
"backup_controller_page_backup": "बैकअप",
"backup_controller_page_backup_selected": "चयनित: ",
"backup_controller_page_backup_sub": "बैकअप किए गए फ़ोटो और वीडियो",
"backup_controller_page_created": "निर्मित तिथि: {date}",
"backup_controller_page_desc_backup": "ऐप खोलते समय सर्वर पर नई संपत्तियों को स्वचालित रूप से अपलोड करने के लिए अग्रभूमि बैकअप चालू करें।",
"backup_controller_page_excluded": "छोड़ा गया: ",
"backup_controller_page_failed": "विफल ({count})",
"backup_controller_page_filename": "फ़ाइल का नाम: {{filename} [{size}]",
"backup_controller_page_id": "आईडी: {id}",
"backup_controller_page_info": "बैकअप जानकारी",
"backup_controller_page_none_selected": "कोई भी चयनित नहीं",
"backup_controller_page_remainder": "शेष",
"backup_controller_page_remainder_sub": "चयन से बैकअप लेने के लिए शेष फ़ोटो और वीडियो",
"backup_controller_page_server_storage": "सर्वर संग्रहण",
"backup_controller_page_start_backup": "बैकअप प्रारंभ करें",
"backup_controller_page_status_off": "स्वचालित अग्रभूमि बैकअप बंद है",
"backup_controller_page_status_on": "स्वचालित अग्रभूमि बैकअप चालू है",
"backup_controller_page_storage_format": "{कुल} में से {प्रयुक्त} प्रयुक्त",
"backup_controller_page_to_backup": "बैकअप किए जाने वाले एल्बम",
"backup_controller_page_total_sub": "चयनित एल्बमों से सभी अद्वितीय फ़ोटो और वीडियो",
"backup_controller_page_turn_off": "अग्रभूमि बैकअप बंद करें",
"backup_controller_page_turn_on": "अग्रभूमि बैकअप चालू करें",
"backup_controller_page_uploading_file_info": "फ़ाइल जानकारी अपलोड करना",
"backup_err_only_album": "एकमात्र एल्बम नहीं हटाया जा सकता",
"backup_info_card_assets": "संपत्ति",
"backup_manual_cancelled": "रद्द",
"backup_manual_in_progress": "अपलोड पहले से ही प्रगति पर है। कुछ देर बाद प्रयास करें",
"backup_manual_success": "सफलता",
"backup_manual_title": "अपलोड स्थिति",
"backup_options_page_title": "बैकअप विकल्प",
"backup_setting_subtitle": "पृष्ठभूमि और अग्रभूमि अपलोड सेटिंग प्रबंधित करें",
"backward": "पिछला",
"beta_sync": "बीटा सिंक स्थिति",
"beta_sync_subtitle": "नए सिंक सिस्टम का प्रबंधन करें",
"biometric_auth_enabled": "बायोमेट्रिक प्रमाणीकरण सक्षम",
"biometric_locked_out": "आप बायोमेट्रिक प्रमाणीकरण से बाहर हैं",
"biometric_no_options": "कोई बायोमेट्रिक विकल्प उपलब्ध नहीं है",
"biometric_not_available": "इस डिवाइस पर बायोमेट्रिक प्रमाणीकरण उपलब्ध नहीं है",
"birthdate_saved": "जन्मतिथि सफलतापूर्वक सहेजी गई",
"birthdate_set_description": "जन्मतिथि का उपयोग फोटो के समय इस व्यक्ति की आयु की गणना करने के लिए किया जाता है।",
"blurred_background": "धुंधली पृष्ठभूमि",
"bugs_and_feature_requests": "बग और सुविधा अनुरोध",
"build": "निर्माण",
"build_image": "छवि बनाएँ",
"bulk_delete_duplicates_confirmation": "क्या आप वाकई {count, plural, one {# duplicate asset} other {# duplicate assets}} को बल्क में हटाना चाहते हैं? इससे हर ग्रुप की सबसे बड़ी संपत्ति बनी रहेगी और बाकी सभी डुप्लिकेट हमेशा के लिए हट जाएँगे। आप इस क्रिया को पूर्ववत नहीं कर सकते!",
"bulk_keep_duplicates_confirmation": "क्या आप वाकई {count, plural, one {# duplicate asset} other {# duplicate assets}} रखना चाहते हैं? इससे बिना कुछ हटाए सभी डुप्लिकेट ग्रुप हल हो जाएँगे।",
"bulk_trash_duplicates_confirmation": "क्या आप वाकई {count, plural, one {# duplicate asset} other {# duplicate assets}} को बल्क ट्रैश करना चाहते हैं? इससे हर ग्रुप की सबसे बड़ी एसेट रहेगी और बाकी सभी डुप्लिकेट ट्रैश हो जाएँगे।",
"buy": "इम्मीच खरीदो",
"cache_settings_clear_cache_button": "कैश को साफ़ करें",
"cache_settings_clear_cache_button_title": "ऐप का कैश साफ़ करता है। कैश के दोबारा बनने तक, यह ऐप के प्रदर्शन पर काफ़ी असर डालेगा।",
"cache_settings_duplicated_assets_clear_button": "स्पष्ट",
"cache_settings_duplicated_assets_subtitle": "ऐप द्वारा अनदेखा की गई तस्वीरें और वीडियो",
"cache_settings_duplicated_assets_title": "डुप्लिकेट संपत्तियां ({count})",
"cache_settings_statistics_album": "लाइब्रेरी थंबनेल",
"cache_settings_statistics_full": "पूर्ण चित्र",
"cache_settings_statistics_shared": "साझा किए गए एल्बम थंबनेल",
"cache_settings_statistics_thumbnail": "थंबनेल",
"cache_settings_statistics_title": "कैश उपयोग",
"cache_settings_subtitle": "Immich मोबाइल एप्लिकेशन के कैशिंग व्यवहार को नियंत्रित करें",
"cache_settings_tile_subtitle": "स्थानीय संग्रहण के व्यवहार को नियंत्रित करें",
"cache_settings_tile_title": "स्थानीय संग्रहण",
"cache_settings_title": "कैशिंग सेटिंग्स",
"camera": "कैमरा",
"camera_brand": "कैमरा ब्रांड",
"camera_model": "कैमरा मॉडल",
"cancel": "रद्द करना",
"cancel_search": "खोज रद्द करें",
"canceled": "रद्द करना",
"canceling": "रद्द कर रहा है",
"cannot_merge_people": "लोगों का विलय नहीं हो सकता",
"cannot_undo_this_action": "आप इस क्रिया को पूर्ववत नहीं कर सकते!",
"cannot_update_the_description": "विवरण अद्यतन नहीं किया जा सकता",
"cast": "ढालना",
"cast_description": "उपलब्ध कास्ट गंतव्यों को कॉन्फ़िगर करें",
"change_date": "बदलाव दिनांक",
"change_description": "विवरण बदलें",
"change_display_order": "प्रदर्शन क्रम बदलें",
"change_expiration_time": "समाप्ति समय बदलें",
"change_location": "स्थान बदलें",
"change_name": "नाम परिवर्तन करें",
"change_name_successfully": "नाम सफलतापूर्वक बदलें",
"change_name_successfully": "नाम सफलतापूर्वक बदला गया",
"change_password": "पासवर्ड बदलें",
"change_password_description": "यह या तो पहली बार है जब आप सिस्टम में साइन इन कर रहे हैं या आपका पासवर्ड बदलने का अनुरोध किया गया है।",
"change_password_form_confirm_password": "पासवर्ड की पुष्टि कीजिये",
"change_password_form_description": "नमस्ते {name},\n\nया तो आप पहली बार सिस्टम में साइन इन कर रहे हैं या फिर आपका पासवर्ड बदलने का अनुरोध किया गया है। कृपया नीचे नया पासवर्ड डालें।",
"change_password_form_new_password": "नया पासवर्ड",
"change_password_form_password_mismatch": "सांकेतिक शब्द मेल नहीं खाते",
"change_password_form_reenter_new_password": "नया पासवर्ड पुनः दर्ज करें",
"change_pin_code": "पिन कोड बदलें",
"change_your_password": "अपना पासवर्ड बदलें",
"changed_visibility_successfully": "दृश्यता सफलतापूर्वक परिवर्तित",
"check_corrupt_asset_backup": "दूषित परिसंपत्ति बैकअप की जाँच करें",
"check_corrupt_asset_backup_button": "जाँच करें",
"check_corrupt_asset_backup_description": "यह जाँच केवल वाई-फ़ाई पर ही करें और सभी संपत्तियों का बैकअप लेने के बाद ही करें। इस प्रक्रिया में कुछ मिनट लग सकते हैं।",
"check_logs": "लॉग जांचें",
"choose_matching_people_to_merge": "मर्ज करने के लिए मिलते-जुलते लोगों को चुनें",
"city": "शहर",
@@ -494,21 +645,49 @@
"clear_all_recent_searches": "सभी हालिया खोजें साफ़ करें",
"clear_message": "स्पष्ट संदेश",
"clear_value": "स्पष्ट मूल्य",
"client_cert_dialog_msg_confirm": "ठीक",
"client_cert_enter_password": "पास वर्ड दर्ज करें",
"client_cert_import": "आयात",
"client_cert_import_success_msg": "क्लाइंट प्रमाणपत्र आयात किया गया है",
"client_cert_invalid_msg": "अमान्य प्रमाणपत्र फ़ाइल या गलत पासवर्ड",
"client_cert_remove_msg": "क्लाइंट प्रमाणपत्र हटा दिया गया है",
"client_cert_subtitle": "केवल PKCS12 (.p12, .pfx) फ़ॉर्मैट का समर्थन करता है। प्रमाणपत्र आयात/हटाएँ केवल लॉगिन से पहले उपलब्ध हैं",
"client_cert_title": "SSL क्लाइंट प्रमाणपत्र",
"clockwise": "दक्षिणावर्त",
"close": "बंद",
"collapse": "गिर जाना",
"collapse_all": "सभी को संकुचित करें",
"color": "रंग",
"color_theme": "रंग थीम",
"comment_deleted": "टिप्पणी हटा दी गई",
"comment_options": "टिप्पणी विकल्प",
"comments_and_likes": "टिप्पणियाँ और पसंद",
"comments_are_disabled": "टिप्पणियाँ अक्षम हैं",
"common_create_new_album": "नया एल्बम बनाएँ",
"common_server_error": "कृपया अपने नेटवर्क कनेक्शन की जांच करें, सुनिश्चित करें कि सर्वर पहुंच योग्य है और ऐप/सर्वर संस्करण संगत हैं।",
"completed": "पुरा होना",
"confirm": "पुष्टि",
"confirm_admin_password": "एडमिन पासवर्ड की पुष्टि करें",
"confirm_delete_face": "क्या आप वाकई एसेट से {name} चेहरा हटाना चाहते हैं?",
"confirm_delete_shared_link": "क्या आप वाकई इस साझा लिंक को हटाना चाहते हैं?",
"confirm_keep_this_delete_others": "इस एसेट को छोड़कर, स्टैक की सभी अन्य एसेट हटा दी जाएँगी। क्या आप वाकई जारी रखना चाहते हैं?",
"confirm_new_pin_code": "नए पिन कोड की पुष्टि करें",
"confirm_password": "पासवर्ड की पुष्टि कीजिये",
"confirm_tag_face": "क्या आप इस चेहरे को {name} के रूप में टैग करना चाहते हैं?",
"confirm_tag_face_unnamed": "क्या आप इस चेहरे को टैग करना चाहते हैं?",
"connected_device": "कनेक्टेड डिवाइस",
"connected_to": "से जुड़ा",
"contain": "समाहित",
"context": "संदर्भ",
"continue": "जारी",
"control_bottom_app_bar_create_new_album": "नया एल्बम बनाएँ",
"control_bottom_app_bar_delete_from_immich": "Immich से हटाएं",
"control_bottom_app_bar_delete_from_local": "डिवाइस से हटाएं",
"control_bottom_app_bar_edit_location": "स्थान संपादित करें",
"control_bottom_app_bar_edit_time": "तारीख और समय संपादित करें",
"control_bottom_app_bar_share_link": "लिंक शेयर करें",
"control_bottom_app_bar_share_to": "साझा करें",
"control_bottom_app_bar_trash_from_immich": "ट्रैश में ले जाएं",
"copied_image_to_clipboard": "छवि को क्लिपबोर्ड पर कॉपी किया गया।",
"copied_to_clipboard": "क्लिपबोर्ड पर नकल!",
"copy_error": "प्रतिलिपि त्रुटि",
@@ -523,6 +702,7 @@
"covers": "आवरण",
"create": "तैयार करें",
"create_album": "एल्बम बनाओ",
"create_album_page_untitled": "शीर्षकहीन",
"create_library": "लाइब्रेरी बनाएं",
"create_link": "लिंक बनाएं",
"create_link_to_share": "शेयर करने के लिए लिंक बनाएं",
@@ -531,39 +711,75 @@
"create_new_person": "नया व्यक्ति बनाएं",
"create_new_person_hint": "चयनित संपत्तियों को एक नए व्यक्ति को सौंपें",
"create_new_user": "नया उपयोगकर्ता बनाएं",
"create_shared_album_page_share_add_assets": "संपत्ति जोड़ें",
"create_shared_album_page_share_select_photos": "फ़ोटो चुनें",
"create_tag": "टैग बनाएँ",
"create_tag_description": "एक नया टैग बनाएँ। नेस्टेड टैग के लिए, कृपया फ़ॉरवर्ड स्लैश सहित टैग का पूरा पथ दर्ज करें।",
"create_user": "उपयोगकर्ता बनाइये",
"created": "बनाया",
"created_at": "बनाया था",
"crop": "छाँटें",
"curated_object_page_title": "चीज़ें",
"current_device": "वर्तमान उपकरण",
"current_pin_code": "वर्तमान पिन कोड",
"current_server_address": "वर्तमान सर्वर पता",
"custom_locale": "कस्टम लोकेल",
"custom_locale_description": "भाषा और क्षेत्र के आधार पर दिनांक और संख्याएँ प्रारूपित करें",
"daily_title_text_date": "ई, एमएमएम डीडी",
"daily_title_text_date_year": "ई, एमएमएम दिन, वर्ष",
"dark": "डार्क",
"dark_theme": "डार्क थीम टॉगल करें",
"date_after": "इसके बाद की तारीख",
"date_and_time": "तिथि और समय",
"date_before": "पहले की तारीख",
"date_format": "ई, एलएलएल डी, वाई • एच:एमएम ए",
"date_of_birth_saved": "जन्मतिथि सफलतापूर्वक सहेजी गई",
"date_range": "तिथि सीमा",
"day": "दिन",
"deduplicate_all": "सभी को डुप्लिकेट करें",
"deduplication_criteria_1": "छवि का आकार बाइट्स में",
"deduplication_criteria_2": "EXIF डेटा की संख्या",
"deduplication_info": "डुप्लीकेशन हटाने की जानकारी",
"deduplication_info_description": "परिसंपत्तियों का स्वचालित रूप से पूर्व-चयन करने और डुप्लिकेट को थोक में हटाने के लिए, हम निम्न पर ध्यान देते हैं:",
"default_locale": "डिफ़ॉल्ट स्थान",
"default_locale_description": "अपने ब्राउज़र स्थान के आधार पर दिनांक और संख्याएँ प्रारूपित करें",
"delete": "हटाएँ",
"delete_action_prompt": "{count} स्थायी रूप से हटा दिया गया",
"delete_album": "एल्बम हटाएँ",
"delete_api_key_prompt": "क्या आप वाकई इस एपीआई कुंजी को हटाना चाहते हैं?",
"delete_dialog_alert": "ये आइटम Immich और आपके डिवाइस से स्थायी रूप से हटा दिए जाएंगे",
"delete_dialog_alert_local": "ये आइटम आपके डिवाइस से स्थायी रूप से हटा दिए जाएंगे, लेकिन फिर भी Immich सर्वर पर उपलब्ध रहेंगे",
"delete_dialog_alert_local_non_backed_up": "कुछ आइटम का Immich में बैकअप नहीं लिया गया है और उन्हें आपके डिवाइस से स्थायी रूप से हटा दिया जाएगा",
"delete_dialog_alert_remote": "ये आइटम Immich सर्वर से स्थायी रूप से हटा दिए जाएंगे",
"delete_dialog_ok_force": "फिर भी हटाएं",
"delete_dialog_title": "स्थायी रूप से हटाएँ",
"delete_duplicates_confirmation": "क्या आप वाकई इन डुप्लिकेट को स्थायी रूप से हटाना चाहते हैं?",
"delete_face": "चेहरा हटाएं",
"delete_key": "कुंजी हटाएँ",
"delete_library": "लाइब्रेरी हटाएँ",
"delete_link": "लिंक हटाएँ",
"delete_local_action_prompt": "{count} स्थानीय रूप से हटा दिया गया",
"delete_local_dialog_ok_backed_up_only": "केवल बैकअप हटाएं",
"delete_local_dialog_ok_force": "फिर भी हटाएं",
"delete_others": "अन्य को हटाएँ",
"delete_shared_link": "साझा किए गए लिंक को हटाएं",
"delete_shared_link_dialog_title": "साझा किए गए लिंक को हटाएं",
"delete_tag": "टैग हटाएं",
"delete_tag_confirmation_prompt": "क्या आप वाकई {tagName} टैग हटाना चाहते हैं?",
"delete_user": "उपभोक्ता मिटायें",
"deleted_shared_link": "साझा किया गया लिंक हटा दिया गया",
"deletes_missing_assets": "डिस्क से गायब संपत्तियों को हटाता है",
"description": "वर्णन",
"description_input_hint_text": "विवरण जोड़ें..।",
"description_input_submit_error": "विवरण अपडेट करते समय त्रुटि हुई, अधिक जानकारी के लिए लॉग देखें",
"deselect_all": "सबको अचयनित करो",
"details": "विवरण",
"direction": "दिशा",
"disabled": "अक्षम",
"disallow_edits": "संपादनों की अनुमति न दें",
"discord": "डिसकॉर्ड",
"discover": "खोजें",
"discovered_devices": "खोजे गए उपकरण",
"dismiss_all_errors": "सभी त्रुटियाँ ख़ारिज करें",
"dismiss_error": "त्रुटि ख़ारिज करें",
"display_options": "प्रदर्शन चुनाव",
@@ -571,14 +787,18 @@
"display_original_photos": "मूल फ़ोटो प्रदर्शित करें",
"display_original_photos_setting_description": "किसी संपत्ति को देखते समय थंबनेल के बजाय मूल तस्वीर प्रदर्शित करना पसंद करें जब मूल संपत्ति वेब-संगत हो।",
"do_not_show_again": "इस संदेश को दुबारा मत दिखाना",
"documentation": "प्रलेखन",
"done": "ठीक है",
"download": "डाउनलोड करें",
"download_action_prompt": "{count} संपत्तियां डाउनलोड हो रही हैं",
"download_canceled": "डाउनलोड रद्द कर दिया गया",
"download_complete": "डाउनलोड पूरा",
"download_enqueue": "डाउनलोड कतार में है",
"download_error": "डाउनलोड त्रुटि",
"download_failed": "डाउनलोड विफल",
"download_finished": "डाउनलोड समाप्त",
"download_include_embedded_motion_videos": "एम्बेडेड वीडियो",
"download_include_embedded_motion_videos_description": "मोशन फ़ोटो में एम्बेड किए गए वीडियो को एक अलग फ़ाइल के रूप में शामिल करें",
"download_notfound": "डाउनलोड नहीं मिला",
"download_paused": "डाउनलोड स्थगित",
"download_settings": "डाउनलोड करना",
@@ -588,6 +808,7 @@
"download_sucess_android": "मीडिया DCIM/Immich में डाउनलोड हो गया है",
"download_waiting_to_retry": "पुनः प्रयास करने का इंतजार कर रहा है",
"downloading": "डाउनलोड",
"downloading_asset_filename": "संपत्ति {filename} डाउनलोड हो रही है",
"downloading_media": "मीडिया डाउनलोड हो रहा है",
"drop_files_to_upload": "अपलोड करने के लिए फ़ाइलें कहीं भी छोड़ें",
"duplicates": "डुप्लिकेट",
@@ -598,6 +819,7 @@
"edit_avatar": "अवतार को एडिट करें",
"edit_date": "संपादन की तारीख",
"edit_date_and_time": "दिनांक और समय संपादित करें",
"edit_description": "संपादित करें वर्णन",
"edit_exclusion_pattern": "बहिष्करण पैटर्न संपादित करें",
"edit_faces": "चेहरे संपादित करें",
"edit_import_path": "आयात पथ संपादित करें",
@@ -816,7 +1038,6 @@
"library_options": "पुस्तकालय विकल्प",
"light": "रोशनी",
"like_deleted": "जैसे हटा दिया गया",
"link_options": "लिंक विकल्प",
"link_to_oauth": "OAuth से लिंक करें",
"linked_oauth_account": "लिंक किया गया OAuth खाता",
"list": "सूची",

View File

@@ -34,6 +34,7 @@
"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/**\".",
"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",
@@ -165,6 +166,20 @@
"metadata_settings_description": "Upravljanje postavkama metapodataka",
"migration_job": "Migracija",
"migration_job_description": "Premjestite minijature za sredstva 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_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_settings": "Postavke noćnih zadataka",
"nightly_tasks_settings_description": "Upravljanje noćnim zadacima",
"nightly_tasks_start_time_setting": "Vrijeme početka",
"nightly_tasks_start_time_setting_description": "Vrijeme pokretanja noćnih zadataka na poslužitelju",
"nightly_tasks_sync_quota_usage_setting": "Sinkroniziraj iskorištenost kvote",
"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",
@@ -195,6 +210,8 @@
"oauth_mobile_redirect_uri": "Mobilnog Preusmjeravanja URI",
"oauth_mobile_redirect_uri_override": "Nadjačavanje URI-preusmjeravanja za mobilne uređaje",
"oauth_mobile_redirect_uri_override_description": "Omogući kada pružatelj OAuth ne dopušta mobilni URI, poput ''{callback}''",
"oauth_role_claim": "Dodjela uloge",
"oauth_role_claim_description": "Automatski dodijeli administratorski pristup na temelju prisutnosti ove tvrdnje. Tvrdnja može sadržavati ili 'user' ili 'admin'.",
"oauth_settings": "OAuth",
"oauth_settings_description": "Upravljanje postavkama za prijavu kroz OAuth",
"oauth_settings_more_details": "Za više pojedinosti o ovoj značajci pogledajte <link>uputstva</link>.",
@@ -203,7 +220,7 @@
"oauth_storage_quota_claim": "Zahtjev za kvotom pohrane",
"oauth_storage_quota_claim_description": "Automatski postavite korisničku kvotu pohrane na vrijednost ovog zahtjeva.",
"oauth_storage_quota_default": "Zadana kvota pohrane (GiB)",
"oauth_storage_quota_default_description": "Kvota u GiB koja će se koristiti kada nema zahtjeva (unesite 0 za neograničenu kvotu).",
"oauth_storage_quota_default_description": "Kvota u GiB koja će se koristiti kada nema zahtjeva",
"oauth_timeout": "Istek vremena zahtjeva",
"oauth_timeout_description": "Istek vremena zahtjeva je u milisekundama",
"password_enable_description": "Prijava s email adresom i zaporkom",
@@ -243,6 +260,7 @@
"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_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",
@@ -355,10 +373,12 @@
"admin_password": "Admin lozinka",
"administration": "Administracija",
"advanced": "Napredno",
"advanced_settings_beta_timeline_subtitle": "Isprobaj novo iskustvo aplikacije",
"advanced_settings_beta_timeline_title": "Beta vremenska crta",
"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 resursa na uređaju. 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 resursa. 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",
@@ -377,6 +397,7 @@
"album_cover_updated": "Naslovnica albuma ažurirana",
"album_delete_confirmation": "Jeste li sigurni da želite izbrisati album {album}?",
"album_delete_confirmation_description": "Ako se ovaj album dijeli, drugi korisnici mu više neće moći pristupiti.",
"album_deleted": "Album izbrisan",
"album_info_card_backup_album_excluded": "IZUZETO",
"album_info_card_backup_album_included": "UKLJUČENO",
"album_info_updated": "Podaci o albumu ažurirani",
@@ -386,6 +407,7 @@
"album_options": "Opcije albuma",
"album_remove_user": "Ukloni korisnika?",
"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_updated": "Album ažuriran",
"album_updated_setting_description": "Primite obavijest e-poštom kada dijeljeni album ima nova sredstva",
@@ -405,6 +427,7 @@
"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_on_device_count": "Albumi na uređaju ({count})",
"all": "Sve",
"all_albums": "Svi albumi",
"all_people": "Svi ljudi",
@@ -425,6 +448,7 @@
"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_title": "Arhiviraj ({count})",
@@ -462,10 +486,12 @@
"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_cannot_be_added_to_album_count": "{count, plural,\n one {Nije moguće dodati medij u album}\n few {Nije moguće dodati # medija u album}\n other {Nije moguće dodati # medija u album}\n}",
"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_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}}",
@@ -480,10 +506,12 @@
"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",
"back": "Nazad",
"back_close_deselect": "Natrag, zatvorite ili poništite odabir",
"background_location_permission": "Dozvola za lokaciju u pozadini",
"background_location_permission_content": "Kako bi prebacivao mreže dok radi u pozadini, Immich mora *uvijek* imati pristup preciznoj lokaciji kako bi aplikacija mogla pročitati naziv Wi-Fi mreže",
"backup": "Sigurnosna kopija",
"backup_album_selection_page_albums_device": "Albumi na uređaju ({count})",
"backup_album_selection_page_albums_tap": "Dodirnite za uključivanje, dvostruki dodir za isključivanje",
"backup_album_selection_page_assets_scatter": "Resursi mogu biti raspoređeni u više albuma. Stoga, albumi mogu biti uključeni ili isključeni tijekom procesa sigurnosnog kopiranja.",
@@ -547,6 +575,8 @@
"backup_options_page_title": "Opcije sigurnosnog kopiranja",
"backup_setting_subtitle": "Upravljajte postavkama učitavanja u pozadini i prvom planu",
"backward": "Unazad",
"beta_sync": "Beta status sinkronizacije",
"beta_sync_subtitle": "Upravljaj novim sustavom sinkronizacije",
"biometric_auth_enabled": "Biometrijska autentikacija omogućena",
"biometric_locked_out": "Zaključani ste iz biometrijske autentikacije",
"biometric_no_options": "Nema dostupnih biometrijskih opcija",
@@ -564,7 +594,7 @@
"cache_settings_clear_cache_button": "Očisti predmemoriju",
"cache_settings_clear_cache_button_title": "Briše predmemoriju aplikacije. Ovo će značajno utjecati na performanse aplikacije dok se predmemorija ponovno ne izgradi.",
"cache_settings_duplicated_assets_clear_button": "OČISTI",
"cache_settings_duplicated_assets_subtitle": "Fotografije i videozapisi koje je aplikacija stavila na crnu listu",
"cache_settings_duplicated_assets_subtitle": "Fotografije i videozapisi koje je aplikacija ignorira",
"cache_settings_duplicated_assets_title": "Duplicirani resursi ({count})",
"cache_settings_statistics_album": "Sličice biblioteke",
"cache_settings_statistics_full": "Pune slike",
@@ -581,6 +611,7 @@
"cancel": "Otkaži",
"cancel_search": "Otkaži pretragu",
"canceled": "Otkazano",
"canceling": "Otkazivanje",
"cannot_merge_people": "Nije moguće spojiti osobe",
"cannot_undo_this_action": "Ne možete poništiti ovu radnju!",
"cannot_update_the_description": "Nije moguće ažurirati opis",
@@ -644,6 +675,7 @@
"confirm_password": "Potvrdite lozinku",
"confirm_tag_face": "Želite li označiti ovo lice kao {name}?",
"confirm_tag_face_unnamed": "Želite li označiti ovo lice?",
"connected_device": "Uređaj povezan",
"connected_to": "Povezano s",
"contain": "Sadrži",
"context": "Kontekst",
@@ -693,9 +725,11 @@
"current_server_address": "Trenutna adresa poslužitelja",
"custom_locale": "Prilagođena Lokalizacija",
"custom_locale_description": "Formatiranje datuma i brojeva na temelju jezika i regije",
"custom_url": "Prilagođena URL adresa",
"daily_title_text_date": "E, MMM dd",
"daily_title_text_date_year": "E, MMM dd, yyyy",
"dark": "Tamno",
"dark_theme": "Prebaci tamnu temu",
"date_after": "Datum nakon",
"date_and_time": "Datum i Vrijeme",
"date_before": "Datum prije",
@@ -711,6 +745,8 @@
"default_locale": "Zadana lokalizacija",
"default_locale_description": "Oblikujte datume i brojeve na temelju jezika preglednika",
"delete": "Izbriši",
"delete_action_confirmation_message": "Jeste li sigurni da želite izbrisati ovaj sadržaj? Ova radnja će premjestiti sadržaj u smeće na poslužitelju i upitat će vas želite li ga izbrisati i lokalno",
"delete_action_prompt": "{count} izbrisano",
"delete_album": "Izbriši album",
"delete_api_key_prompt": "Jeste li sigurni da želite izbrisati ovaj API ključ?",
"delete_dialog_alert": "Ove stavke bit će trajno izbrisane iz Immicha i s vašeg uređaja",
@@ -724,9 +760,12 @@
"delete_key": "Ključ za brisanje",
"delete_library": "Izbriši knjižnicu",
"delete_link": "Izbriši poveznicu",
"delete_local_action_prompt": "{count} izbrisano lokalno",
"delete_local_dialog_ok_backed_up_only": "Izbriši samo sigurnosno kopirane",
"delete_local_dialog_ok_force": "Izbriši svejedno",
"delete_others": "Izbriši druge",
"delete_permanently": "Izbriši trajno",
"delete_permanently_action_prompt": "{count} trajno izbrisano",
"delete_shared_link": "Izbriši dijeljenu poveznicu",
"delete_shared_link_dialog_title": "Izbriši dijeljenu poveznicu",
"delete_tag": "Izbriši oznaku",
@@ -737,12 +776,14 @@
"description": "Opis",
"description_input_hint_text": "Dodaj opis...",
"description_input_submit_error": "Pogreška pri ažuriranju opisa, provjerite zapisnik za više detalja",
"deselect_all": "Poništi odabir svih",
"details": "Detalji",
"direction": "Smjer",
"disabled": "Onemogućeno",
"disallow_edits": "Zabrani izmjene",
"discord": "Discord",
"discover": "Otkrij",
"discovered_devices": "Otkriveni uređaji",
"dismiss_all_errors": "Odbaci sve pogreške",
"dismiss_error": "Odbaci pogrešku",
"display_options": "Mogućnosti prikaza",
@@ -753,6 +794,7 @@
"documentation": "Dokumentacija",
"done": "Gotovo",
"download": "Preuzmi",
"download_action_prompt": "Preuzimanje {count} sadržaja",
"download_canceled": "Preuzimanje otkazano",
"download_complete": "Preuzimanje završeno",
"download_enqueue": "Preuzimanje dodano u red",
@@ -790,6 +832,7 @@
"edit_key": "Ključ za uređivanje",
"edit_link": "Uredi poveznicu",
"edit_location": "Uredi lokaciju",
"edit_location_action_prompt": "{count} uređenih lokacija",
"edit_location_dialog_title": "Lokacija",
"edit_name": "Uredi ime",
"edit_people": "Uredi ljude",
@@ -808,6 +851,7 @@
"empty_trash": "Isprazni smeće",
"empty_trash_confirmation": "Jeste li sigurni da želite isprazniti smeće? Time će se iz Immicha trajno ukloniti sva sredstva u otpadu.\nNe možete poništiti ovu radnju!",
"enable": "Omogući",
"enable_backup": "Omogući sigurnosnu kopiju",
"enable_biometric_auth_description": "Unesite svoj PIN kod za omogućavanje biometrijske autentikacije",
"enabled": "Omogućeno",
"end_date": "Datum završetka",
@@ -964,6 +1008,8 @@
"explorer": "Pretraživač (Explorer)",
"export": "Izvoz",
"export_as_json": "Izvezi kao JSON",
"export_database": "Izvezi bazu podataka",
"export_database_description": "Izvezi SQLite bazu podataka",
"extension": "Proširenje (Extension)",
"external": "Vanjski",
"external_libraries": "Vanjske Biblioteke",
@@ -975,6 +1021,7 @@
"failed_to_load_assets": "Neuspjelo učitavanje stavki",
"failed_to_load_folder": "Neuspjelo učitavanje mape",
"favorite": "Omiljeno",
"favorite_action_prompt": "{count} dodano u Omiljeno",
"favorite_or_unfavorite_photo": "Omiljena ili neomiljena fotografija",
"favorites": "Omiljene",
"favorites_page_no_favorites": "Nema pronađenih omiljenih stavki",
@@ -1014,6 +1061,9 @@
"haptic_feedback_switch": "Omogući haptičku povratnu informaciju",
"haptic_feedback_title": "Haptička povratna informacija",
"has_quota": "Ima kvotu",
"hash_asset": "Hash sadržaja",
"hashed_assets": "Hashirani sadržaji",
"hashing": "Hashiranje",
"header_settings_add_header_tip": "Dodaj zaglavlje",
"header_settings_field_validator_msg": "Vrijednost ne može biti prazna",
"header_settings_header_name_input": "Naziv zaglavlja",
@@ -1046,6 +1096,7 @@
"host": "Domaćin",
"hour": "Sat",
"id": "ID",
"idle": "Neaktivan",
"ignore_icloud_photos": "Ignoriraj iCloud fotografije",
"ignore_icloud_photos_description": "Fotografije pohranjene na iCloudu neće biti učitane na Immich poslužitelj",
"image": "Slika",
@@ -1099,6 +1150,9 @@
"kept_this_deleted_others": "Zadržana je ova datoteka i izbrisano {count, plural, one {# datoteka} other {# datoteka}}",
"keyboard_shortcuts": "Prečaci tipkovnice",
"language": "Jezik",
"language_no_results_subtitle": "Pokušajte prilagoditi pojam za pretraživanje",
"language_no_results_title": "Nisu pronađeni jezici",
"language_search_hint": "Pretraži jezike...",
"language_setting_description": "Odaberite željeni jezik",
"last_seen": "Zadnji put viđen",
"latest_version": "Najnovija verzija",
@@ -1115,15 +1169,18 @@
"library_page_sort_created": "Datum kreiranja",
"library_page_sort_last_modified": "Zadnja izmjena",
"library_page_sort_title": "Naslov albuma",
"licenses": "Licence",
"light": "Svjetlo",
"like_deleted": "Like izbrisan",
"link_motion_video": "Povežite videozapis pokreta",
"link_options": "Opcije veze",
"link_to_oauth": "Veza na OAuth",
"linked_oauth_account": "Povezani OAuth račun",
"list": "Popis",
"loading": "Učitavanje",
"loading_search_results_failed": "Učitavanje rezultata pretraživanja nije uspjelo",
"local": "Lokalno",
"local_asset_cast_failed": "Nije moguće reproducirati sadržaj koji nije prenesen na poslužitelj",
"local_assets": "Lokalni sadržaji",
"local_network": "Lokalna mreža",
"local_network_sheet_info": "Aplikacija će se povezati s poslužiteljem putem ovog URL-a kada koristi određenu Wi-Fi mrežu",
"location_permission": "Dozvola za lokaciju",
@@ -1137,6 +1194,7 @@
"locked_folder": "Zaključana Mapa",
"log_out": "Odjavi se",
"log_out_all_devices": "Odjava sa svih uređaja",
"logged_in_as": "Prijavljeni kao {user}",
"logged_out_all_devices": "Odjavljeni su svi uređaji",
"logged_out_device": "Odjavljen uređaj",
"login": "Prijava",
@@ -1179,8 +1237,7 @@
"manage_your_devices": "Upravljajte uređajima na kojima ste prijavljeni",
"manage_your_oauth_connection": "Upravljajte svojom OAuth vezom",
"map": "Karta",
"map_assets_in_bound": "{count} fotografija",
"map_assets_in_bounds": "{count} fotografija",
"map_assets_in_bounds": "{count, plural, one {# fotografija} other {# fotografija}}",
"map_cannot_get_user_location": "Nije moguće dohvatiti lokaciju korisnika",
"map_location_dialog_yes": "Da",
"map_location_picker_page_use_location": "Koristi ovu lokaciju",
@@ -1232,6 +1289,7 @@
"more": "Više",
"move": "Pomakni",
"move_off_locked_folder": "Premjesti iz zaključane mape",
"move_to_lock_folder_action_prompt": "{count} dodano u zaključanu mapu",
"move_to_locked_folder": "Premjesti u zaključanu mapu",
"move_to_locked_folder_confirmation": "Ove fotografije i videozapis bit će uklonjeni iz svih albuma i bit će vidljivi samo iz zaključane mape",
"moved_to_archive": "Premješteno {count, plural, one {# resurs} other {# resursa}} u arhivu",
@@ -1264,6 +1322,7 @@
"no_archived_assets_message": "Arhivirajte fotografije i videozapise kako biste ih sakrili iz prikaza fotografija",
"no_assets_message": "KLIKNITE DA PRENESETE SVOJU PRVU FOTOGRAFIJU",
"no_assets_to_show": "Nema stavki za prikaz",
"no_cast_devices_found": "Nisu pronađeni uređaji za reprodukciju",
"no_duplicates_found": "Nisu pronađeni duplikati.",
"no_exif_info_available": "Nema dostupnih exif podataka",
"no_explore_results_message": "Prenesite više fotografija da istražite svoju zbirku.",
@@ -1277,6 +1336,7 @@
"no_results": "Nema rezultata",
"no_results_description": "Pokušajte sa sinonimom ili općenitijom ključnom riječi",
"no_shared_albums_message": "Stvorite album za dijeljenje fotografija i videozapisa s osobama u svojoj mreži",
"no_uploads_in_progress": "Nema aktivnih prijenosa",
"not_in_any_album": "Ni u jednom albumu",
"not_selected": "Nije odabrano",
"note_apply_storage_label_to_previously_uploaded assets": "Napomena: Da biste primijenili Oznaku za skladištenje na prethodno prenesena sredstva, pokrenite",
@@ -1296,8 +1356,11 @@
"oldest_first": "Prvo najstarije",
"on_this_device": "Na ovom uređaju",
"onboarding": "Uključivanje (Onboarding)",
"onboarding_privacy_description": "Sljedeće (neobavezne) značajke oslanjaju se na vanjske usluge i mogu se onemogućiti u bilo kojem trenutku u postavkama administracije.",
"onboarding_locale_description": "Odaberite željeni jezik. Kasnije ga možete promijeniti u postavkama.",
"onboarding_privacy_description": "Sljedeće (neobavezne) značajke oslanjaju se na vanjske usluge i mogu se onemogućiti u bilo kojem trenutku u postavkama.",
"onboarding_server_welcome_description": "Postavimo vašu instancu s nekim uobičajenim postavkama.",
"onboarding_theme_description": "Odaberite temu boja za svoj primjer. To možete kasnije promijeniti u postavkama.",
"onboarding_user_welcome_description": "Počnimo!",
"onboarding_welcome_user": "Dobro došli, {user}",
"online": "Dostupan (Online)",
"only_favorites": "Samo omiljeno",
@@ -1311,6 +1374,7 @@
"original": "originalno",
"other": "Ostalo",
"other_devices": "Ostali uređaji",
"other_entities": "Ostali entiteti",
"other_variables": "Ostale varijable",
"owned": "Vlasništvo",
"owner": "Vlasnik",
@@ -1442,6 +1506,7 @@
"purchase_server_description_2": "Status podupiratelja",
"purchase_server_title": "Poslužitelj (Server)",
"purchase_settings_server_activated": "Ključem proizvoda poslužitelja upravlja administrator",
"queue_status": "Stavljanje u red {count}/{total}",
"rating": "Broj zvjezdica",
"rating_clear": "Obriši ocjenu",
"rating_count": "{count, plural, one {# zvijezda} other {# zvijezde}}",
@@ -1470,6 +1535,8 @@
"refreshing_faces": "Osvježavanje lica",
"refreshing_metadata": "Osvježavanje metapodataka",
"regenerating_thumbnails": "Obnavljanje sličica",
"remote": "Udaljeno",
"remote_assets": "Udaljeni sadržaji",
"remove": "Ukloni",
"remove_assets_album_confirmation": "Jeste li sigurni da želite ukloniti {count, plural, one {# datoteku} other {# datoteke}} iz albuma?",
"remove_assets_shared_link_confirmation": "Jeste li sigurni da želite ukloniti {count, plural, one {# datoteku} other {# datoteke}} iz ove dijeljene veze?",
@@ -1477,12 +1544,15 @@
"remove_custom_date_range": "Ukloni prilagođeni datumski raspon",
"remove_deleted_assets": "Ukloni izbrisana sredstva",
"remove_from_album": "Ukloni iz albuma",
"remove_from_album_action_prompt": "{count} uklonjeno iz albuma",
"remove_from_favorites": "Ukloni iz favorita",
"remove_from_lock_folder_action_prompt": "{count} uklonjeno iz zaključane mape",
"remove_from_locked_folder": "Ukloni iz zaključane mape",
"remove_from_locked_folder_confirmation": "Jeste li sigurni da želite premjestiti ove fotografije i videozapise iz zaključane mape? Bit će vidljivi u vašoj biblioteci.",
"remove_from_shared_link": "Ukloni iz dijeljene poveznice",
"remove_memory": "Ukloni uspomenu",
"remove_photo_from_memory": "Ukloni fotografiju iz ove uspomene",
"remove_tag": "Ukloni oznaku",
"remove_url": "Ukloni URL",
"remove_user": "Ukloni korisnika",
"removed_api_key": "Uklonjen API ključ: {name}",
@@ -1504,11 +1574,15 @@
"reset_password": "Resetiraj lozinku",
"reset_people_visibility": "Poništi vidljivost ljudi",
"reset_pin_code": "Resetiraj PIN kod",
"reset_sqlite": "Resetiraj SQLite bazu podataka",
"reset_sqlite_confirmation": "Jeste li sigurni da želite resetirati SQLite bazu podataka? Morat ćete se odjaviti i ponovno prijaviti kako biste ponovno sinkronizirali podatke",
"reset_sqlite_success": "SQLite baza podataka je uspješno resetirana",
"reset_to_default": "Vrati na zadano",
"resolve_duplicates": "Riješite duplikate",
"resolved_all_duplicates": "Razriješi sve duplikate",
"restore": "Oporavi",
"restore_all": "Oporavi sve",
"restore_trash_action_prompt": "{count} vraćeno iz smeća",
"restore_user": "Vrati korisnika",
"restored_asset": "Obnovljena datoteka",
"resume": "Nastavi",
@@ -1517,6 +1591,7 @@
"role": "Uloga",
"role_editor": "Urednik",
"role_viewer": "Gledatelj",
"running": "U tijeku",
"save": "Spremi",
"save_to_gallery": "Spremi u galeriju",
"saved_api_key": "Spremljen API ključ",
@@ -1589,6 +1664,7 @@
"select_album_cover": "Odaberite omot albuma",
"select_all": "Odaberi sve",
"select_all_duplicates": "Odaberi sve duplikate",
"select_all_in": "Odaberi sve u {group}",
"select_avatar_color": "Odaberi boju avatara",
"select_face": "Odaberi lice",
"select_featured_photo": "Odaberi istaknutu fotografiju",
@@ -1609,6 +1685,7 @@
"server_info_box_server_url": "URL poslužitelja",
"server_offline": "Server izvan mreže",
"server_online": "Server na mreži",
"server_privacy": "Privatnost poslužitelja",
"server_stats": "Statistike servera",
"server_version": "Verzija servera",
"set": "Postavi",
@@ -1618,6 +1695,7 @@
"set_date_of_birth": "Postavi datum rođenja",
"set_profile_picture": "Postavi profilnu sliku",
"set_slideshow_to_fullscreen": "Postavi prezentaciju na cijeli zaslon",
"set_stack_primary_asset": "Postavi kao glavni sadržaj",
"setting_image_viewer_help": "Preglednik detalja prvo učitava malu sličicu, zatim učitava pregled srednje veličine (ako je omogućen), te na kraju učitava original (ako je omogućen).",
"setting_image_viewer_original_subtitle": "Omogućite za učitavanje originalne slike pune rezolucije (velika!). Onemogućite za smanjenje potrošnje podataka (i mrežne i na predmemoriji uređaja).",
"setting_image_viewer_original_title": "Učitaj originalnu sliku",
@@ -1645,6 +1723,7 @@
"settings_saved": "Postavke su spremljene",
"setup_pin_code": "Postavi PIN kod",
"share": "Podijeli",
"share_action_prompt": "Podijeljeno {count} sadržaja",
"share_add_photos": "Dodaj fotografije",
"share_assets_selected": "{count} odabrano",
"share_dialog_preparing": "Priprema...",
@@ -1666,6 +1745,7 @@
"shared_link_clipboard_copied_massage": "Kopirano u međuspremnik",
"shared_link_clipboard_text": "Poveznica: {link}\nLozinka: {password}",
"shared_link_create_error": "Pogreška pri kreiranju dijeljene poveznice",
"shared_link_custom_url_description": "Pristupite ovom dijeljenom linku pomoću prilagođene URL adrese",
"shared_link_edit_description_hint": "Unesite opis dijeljenja",
"shared_link_edit_expire_after_option_day": "1 dan",
"shared_link_edit_expire_after_option_days": "{count} dana",
@@ -1691,6 +1771,7 @@
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Upravljanje dijeljenim poveznicama",
"shared_link_options": "Opcije dijeljene poveznice",
"shared_link_password_description": "Zahtjevaj loziku za pristup ovom dijeljenom linku",
"shared_links": "Dijeljene poveznice",
"shared_links_description": "Podijelite fotografije i videozapise putem poveznice",
"shared_photos_and_videos_count": "{assetCount, plural, =1 {# podijeljena fotografija ili videozapis.} few {# podijeljene fotografije i videozapisa.} other {# podijeljenih fotografija i videozapisa.}}",
@@ -1746,6 +1827,7 @@
"sort_title": "Naslov",
"source": "Izvor",
"stack": "Složi",
"stack_action_prompt": "{count} složeno",
"stack_duplicates": "Složi duplikate",
"stack_select_one_photo": "Odaberi jednu glavnu fotografiju za slaganje",
"stack_selected_photos": "Složi odabrane fotografije",
@@ -1755,6 +1837,7 @@
"start_date": "Datum početka",
"state": "Stanje",
"status": "Status",
"stop_casting": "Zaustavi reprodukciju",
"stop_motion_photo": "Zaustavi pokretnu fotografiju",
"stop_photo_sharing": "Prestati dijeliti svoje fotografije?",
"stop_photo_sharing_description": "{partner} više neće moći pristupiti vašim fotografijama.",
@@ -1764,6 +1847,7 @@
"storage_quota": "Kvota Pohrane",
"storage_usage": "{used} od {available} iskorišteno",
"submit": "Pošalji",
"success": "Uspijeh",
"suggestions": "Prijedlozi",
"sunrise_on_the_beach": "Izlazak sunca na plaži",
"support": "Podrška",
@@ -1773,6 +1857,8 @@
"sync": "Sink.",
"sync_albums": "Sinkroniziraj albume",
"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_upload_album_setting_subtitle": "Kreiraj i prenesi svoje fotografije i videozapise u odabrane albume na Immichu",
"tag": "Oznaka",
"tag_assets": "Označi stavke",
@@ -1783,6 +1869,7 @@
"tag_updated": "Ažurirana oznaka: {tag}",
"tagged_assets": "Označena {count, plural, =1 {# stavka} few {# stavke} other {# stavki}}",
"tags": "Oznake",
"tap_to_run_job": "Dodirnite za pokretanje zadatka",
"template": "Predložak",
"theme": "Tema",
"theme_selection": "Izbor teme",
@@ -1815,6 +1902,7 @@
"total": "Ukupno",
"total_usage": "Ukupna upotreba",
"trash": "Smeće",
"trash_action_prompt": "{count} premješteno u smeće",
"trash_all": "Stavi sve u smeće",
"trash_count": "Smeće {count, number}",
"trash_delete_asset": "Premjesti u smeće / Izbriši stavku",
@@ -1832,8 +1920,11 @@
"unable_to_change_pin_code": "Nije moguće promijeniti PIN kod",
"unable_to_setup_pin_code": "Nije moguće postaviti PIN kod",
"unarchive": "Poništi arhiviranje",
"unarchive_action_prompt": "{count} uklonjeno iz arhive",
"unarchived_count": "{count, plural, =1 {Poništeno arhiviranje #} few {Poništeno arhiviranje #} other {Poništeno arhiviranje #}}",
"undo": "Poništi",
"unfavorite": "Ukloni iz omiljenih",
"unfavorite_action_prompt": "{count} uklonjeno iz favorita",
"unhide_person": "Prikaži osobu",
"unknown": "Nepoznato",
"unknown_country": "Nepoznata država",
@@ -1849,16 +1940,22 @@
"unsaved_change": "Nespremljena promjena",
"unselect_all": "Poništi odabir svih",
"unselect_all_duplicates": "Poništi odabir svih duplikata",
"unselect_all_in": "Poništi odabir svih u {group}",
"unstack": "Razdvoji",
"unstack_action_prompt": "{count} razloženo",
"unstacked_assets_count": "Razdvojena {count, plural, =1 {# stavka} few {# stavke} other {# stavki}}",
"untagged": "Bez oznaka",
"up_next": "Sljedeće",
"updated_at": "Ažurirano",
"updated_password": "Lozinka ažurirana",
"upload": "Prijenos",
"upload_action_prompt": "{count} u redu za prijenos",
"upload_concurrency": "Istovremeni prijenosi",
"upload_details": "Detalji prijenosa",
"upload_dialog_info": "Želite li sigurnosno kopirati odabranu stavku(e) na poslužitelj?",
"upload_dialog_title": "Prenesi stavku",
"upload_errors": "Prijenos završen s {count, plural, =1 {# greškom} few {# greške} other {# grešaka}}, osvježite stranicu da biste vidjeli nove prenesene stavke.",
"upload_finished": "Prijenos završen",
"upload_progress": "Preostalo {remaining, number} - Obrađeno {processed, number}/{total, number}",
"upload_skipped_duplicates": "Preskočena {count, plural, =1 {# duplicirana stavka} few {# duplicirane stavke} other {# dupliciranih stavki}}",
"upload_status_duplicates": "Duplikati",
@@ -1867,6 +1964,7 @@
"upload_success": "Prijenos uspješan, osvježite stranicu da biste vidjeli nove prenesene stavke.",
"upload_to_immich": "Prenesi na Immich ({count})",
"uploading": "Prijenos u tijeku",
"uploading_media": "Prijenos medija",
"url": "URL",
"usage": "Korištenje",
"use_biometric": "Koristi biometriju",
@@ -1878,6 +1976,7 @@
"user_liked": "{user} je označio/la sviđa mi se {type, select, photo {ovu fotografiju} video {ovaj videozapis} asset {ovu stavku} other {to}}",
"user_pin_code_settings": "PIN kod",
"user_pin_code_settings_description": "Upravljajte svojim PIN kodom",
"user_privacy": "Privatnost korisnika",
"user_purchase_settings": "Kupnja",
"user_purchase_settings_description": "Upravljajte svojom kupnjom",
"user_role_set": "Postavi {user} kao {role}",
@@ -1886,6 +1985,7 @@
"user_usage_stats_description": "Pregledajte statistiku korištenja računa",
"username": "Korisničko ime",
"users": "Korisnici",
"users_added_to_album_count": "Dodan{o/a} {count, plural, one {# korisnik} few {# korisnika} other {# korisnika}} u album.",
"utilities": "Alati",
"validate": "Provjeri valjanost",
"validate_endpoint_error": "Molimo unesite valjanu URL adresu",
@@ -1904,6 +2004,7 @@
"view_album": "Prikaži album",
"view_all": "Prikaži sve",
"view_all_users": "Prikaži sve korisnike",
"view_details": "Prikaži pojedinosti",
"view_in_timeline": "Prikaži na vremenskoj crti",
"view_link": "Prikaži poveznicu",
"view_links": "Prikaži poveznice",

View File

@@ -167,11 +167,15 @@
"migration_job": "Migrálás",
"migration_job_description": "Az elemek és arcok bélyegképeinek migrálása a legújabb mappastruktúrába",
"nightly_tasks_cluster_faces_setting_description": "Arcfelismerés futtatása az újonnan érzékelt arcokon",
"nightly_tasks_cluster_new_faces_setting": "Új arcok csoportosítása",
"nightly_tasks_database_cleanup_setting": "Adatbázis-tisztítási feladatok",
"nightly_tasks_database_cleanup_setting_description": "A régi, lejárt adatok törlése az adatbázisból",
"nightly_tasks_generate_memories_setting": "Emlékek generálása",
"nightly_tasks_generate_memories_setting_description": "Új emlékek létrehozása elemekből",
"nightly_tasks_missing_thumbnails_setting": "Hiányzó indexképek generálása",
"nightly_tasks_settings": "Éjjeli Feladat Beállítások",
"nightly_tasks_settings_description": "Éjjeli feladatok kezelése",
"nightly_tasks_start_time_setting": "Kezdőidő",
"no_paths_added": "Nincs megadva elérési útvonal",
"no_pattern_added": "Nincs megadva minta (pattern)",
"note_apply_storage_label_previous_assets": "Megjegyzés: Ha a korábban feltöltött elemekhez is szeretne Tárhely Címkéket társítani, akkor futtassa ezt",
@@ -363,6 +367,7 @@
"admin_password": "Admin Jelszó",
"administration": "Adminisztráció",
"advanced": "Haladó",
"advanced_settings_beta_timeline_title": "Béta Idővonal",
"advanced_settings_enable_alternate_media_filter_subtitle": "Ezzel a beállítással a szinkronizálás során alternatív kritériumok alapján szűrheted a fájlokat. Csak akkor próbáld ki, ha problémáid vannak azzal, hogy az alkalmazás nem ismeri fel az összes albumot.",
"advanced_settings_enable_alternate_media_filter_title": "[KÍSÉRLETI] Alternatív eszköz album szinkronizálási szűrő használata",
"advanced_settings_log_level_title": "Naplózás szintje: {level}",
@@ -385,6 +390,7 @@
"album_cover_updated": "Album borító frissítve",
"album_delete_confirmation": "Biztos, hogy ki szeretnéd törölni a(z) {album} albumot?",
"album_delete_confirmation_description": "Amennyiben ez egy megosztott album, a többi felhasználó sem fog tudni többé hozzáférni.",
"album_deleted": "Album törölve",
"album_info_card_backup_album_excluded": "KIHAGYVA",
"album_info_card_backup_album_included": "BELEÉRTVE",
"album_info_updated": "Album infó frissítve",
@@ -413,6 +419,7 @@
"albums_default_sort_order": "Alapértelmezett album rendezés",
"albums_default_sort_order_description": "Alapértelmezett sorrendezés új albumok létrehozásánál.",
"albums_feature_description": "Másokkal megosztható elemek gyűjteménye.",
"albums_on_device_count": "Albumok az eszközön ({count})",
"all": "Mind",
"all_albums": "Minden album",
"all_people": "Minden személy",
@@ -474,6 +481,7 @@
"assets_count": "{count, plural, other {# elem}}",
"assets_deleted_permanently": "{count} elem véglegesen törölve",
"assets_deleted_permanently_from_server": "{count} elem véglegesen törölve az Immich szerverről",
"assets_downloaded_failed": "{count, plural, one {# fájl letöltve - {error} fájl sikertelen} other {# fájl letöltve - {error} fájl sikertelen}}",
"assets_downloaded_successfully": "{count, plural, one {# fájl sikeresen letöltve} other {# fájl sikeresen letöltve}}",
"assets_moved_to_trash_count": "{count, plural, other {# elem}} áthelyezve a lomtárba",
"assets_permanently_deleted_count": "{count, plural, other {# elem}} véglegesen törölve",
@@ -493,6 +501,7 @@
"back_close_deselect": "Vissza, bezárás, vagy kijelölés törlése",
"background_location_permission": "Háttérben történő helymeghatározási engedély",
"background_location_permission_content": "Hálózatok automatikus váltásához az Immich-nek *mindenképpen* hozzá kell férnie a pontos helyzethez, hogy az alkalmazás le tudja kérni a Wi-Fi hálózat nevét",
"backup": "Mentés",
"backup_album_selection_page_albums_device": "Ezen az eszközön lévő albumok ({count})",
"backup_album_selection_page_albums_tap": "Koppints a hozzáadáshoz, duplán koppints az eltávolításhoz",
"backup_album_selection_page_assets_scatter": "Egy elem több albumban is lehet. Ezért a mentéshez albumokat lehet hozzáadni vagy azokat a mentésből kihagyni.",
@@ -556,6 +565,8 @@
"backup_options_page_title": "Biztonági mentés beállításai",
"backup_setting_subtitle": "A háttérben és előtérben mentés beállításainak kezelése",
"backward": "Visszafele",
"beta_sync": "Béta Szinkronizálás Állapota",
"beta_sync_subtitle": "Az új szinkronizálási rendszer kezelése",
"biometric_auth_enabled": "Biometrikus azonosítás engedélyezve",
"biometric_locked_out": "Ki vagy zárva a biometrikus azonosításból",
"biometric_no_options": "Nincsen elérhető biometrikus azonosítás",
@@ -572,7 +583,7 @@
"cache_settings_clear_cache_button": "Gyorsítótár kiürítése",
"cache_settings_clear_cache_button_title": "Kiüríti az alkalmazás gyorsítótárát. Ez jelentősen kihat az alkalmazás teljesítményére, amíg a gyorsítótár újra nem épül.",
"cache_settings_duplicated_assets_clear_button": "KIÜRÍT",
"cache_settings_duplicated_assets_subtitle": "Fotók és videók, amiket az alkalmazás fekete listára tett",
"cache_settings_duplicated_assets_subtitle": "Fotók és videók, amiket az alkalmazás figyelmen kívül hagyott",
"cache_settings_duplicated_assets_title": "Duplikált Elemek ({count})",
"cache_settings_statistics_album": "Képtár bélyegképei",
"cache_settings_statistics_full": "Teljes méretű képek",
@@ -703,6 +714,7 @@
"daily_title_text_date": "MMM dd (E)",
"daily_title_text_date_year": "yyyy MMM dd (E)",
"dark": "Sötét",
"dark_theme": "Sötét téma kapcsolása",
"date_after": "Dátumtól",
"date_and_time": "Dátum és Idő",
"date_before": "Dátumig",
@@ -718,6 +730,7 @@
"default_locale": "Alapértelmezett Területi Beállítás",
"default_locale_description": "Dátumok és számok formázása a böngésződ területi beállítása alapján",
"delete": "Törlés",
"delete_action_prompt": "{count} törölve",
"delete_album": "Album törlése",
"delete_api_key_prompt": "Biztosan törölni szeretnéd ezt az API kulcsot?",
"delete_dialog_alert": "Ezek az elemek véglegesen törölve lesznek Immich-ről és az eszközödről is",
@@ -731,9 +744,12 @@
"delete_key": "Kulcs törlése",
"delete_library": "Képtár Törlése",
"delete_link": "Link törlése",
"delete_local_action_prompt": "{count} törölve az eszközről",
"delete_local_dialog_ok_backed_up_only": "Csak a Biztonsági Mentés Törlése",
"delete_local_dialog_ok_force": "Törlés Mindenképp",
"delete_others": "Többi törlése",
"delete_permanently": "Törlés véglegesen",
"delete_permanently_action_prompt": "{count} törölve véglegesen",
"delete_shared_link": "Megosztott link törlése",
"delete_shared_link_dialog_title": "Megosztott Link Törlése",
"delete_tag": "Címke törlése",
@@ -761,6 +777,7 @@
"documentation": "Dokumentáció",
"done": "Kész",
"download": "Letöltés",
"download_action_prompt": "{count} elem letöltése",
"download_canceled": "Letöltés megszakítva",
"download_complete": "Letöltés kész",
"download_enqueue": "Letöltés sorba állítva",
@@ -798,6 +815,7 @@
"edit_key": "Kulcs módosítása",
"edit_link": "Link módosítása",
"edit_location": "Hely módosítása",
"edit_location_action_prompt": "{count} hely változtatva",
"edit_location_dialog_title": "Hely",
"edit_name": "Név módosítása",
"edit_people": "Személyek módosítása",
@@ -816,6 +834,7 @@
"empty_trash": "Lomtár ürítése",
"empty_trash_confirmation": "Biztosan kiüríted a lomtárat? Ez az Immich lomtárában lévő összes elemet véglegesen törli.\nEz a művelet nem visszavonható!",
"enable": "Engedélyezés",
"enable_backup": "Biztonsági mentés bekapcsolása",
"enable_biometric_auth_description": "Add meg a jelszavad a biometrikus azonosítás engedélyezéséhez",
"enabled": "Engedélyezve",
"end_date": "Vég dátum",
@@ -958,6 +977,7 @@
"exif_bottom_sheet_person_add_person": "Elnevez",
"exif_bottom_sheet_person_age_months": "{months} hónap idős",
"exif_bottom_sheet_person_age_year_months": "1 év, {months} hónap idős",
"exif_bottom_sheet_person_age_years": "Életkor: {years}",
"exit_slideshow": "Kilépés a Diavetítésből",
"expand_all": "Összes kinyitása",
"experimental_settings_new_asset_list_subtitle": "Fejlesztés alatt",
@@ -971,6 +991,8 @@
"explorer": "Böngésző",
"export": "Exportálás",
"export_as_json": "Exportálás JSON formátumban",
"export_database": "Adatbázis Exportálása",
"export_database_description": "Az SQLite adatbázis exportálása",
"extension": "Kiterjesztés",
"external": "Külső Képtár",
"external_libraries": "Külső Képtárak",
@@ -1123,15 +1145,17 @@
"library_page_sort_created": "Létrehozás ideje",
"library_page_sort_last_modified": "Utolsó módosítás ideje",
"library_page_sort_title": "Album címe",
"licenses": "Licencek",
"light": "Világos",
"like_deleted": "Reakció törölve",
"link_motion_video": "Motion videó hozzárendelése",
"link_options": "Link beállítások",
"link_to_oauth": "Csatlakoztatás OAuth-hoz",
"linked_oauth_account": "Csatlakoztatott OAuth felhasználó",
"list": "Lista",
"loading": "Betöltés",
"loading_search_results_failed": "Keresési eredmények betöltése sikertelen",
"local": "Helyi",
"local_assets": "Helyi Elemek",
"local_network": "Helyi hálózat",
"local_network_sheet_info": "Az alkalmazés ezen az URL címen fogja elérni a szervert, ha a megadott WiFi hálózathoz van csatlankozva",
"location_permission": "Helymeghatározási engedély",
@@ -1188,8 +1212,7 @@
"manage_your_devices": "Bejelentkezett eszközök kezelése",
"manage_your_oauth_connection": "OAuth kapcsolódás kezelése",
"map": "Térkép",
"map_assets_in_bound": "{count} fotó",
"map_assets_in_bounds": "{count} fotó",
"map_assets_in_bounds": "{count, plural, one {# fotó} other {# fotó}}",
"map_cannot_get_user_location": "A helymeghatározás nem sikerült",
"map_location_dialog_yes": "Igen",
"map_location_picker_page_use_location": "Kiválasztott hely használata",
@@ -1478,6 +1501,8 @@
"refreshing_faces": "Arcok frissítése folyamatban",
"refreshing_metadata": "Metaadatok frissítése folyamatban",
"regenerating_thumbnails": "Bélyegképek újragenerálása folyamatban",
"remote": "Távoli",
"remote_assets": "Távoli Elemek",
"remove": "Eltávolítás",
"remove_assets_album_confirmation": "Biztosan el szeretnél távolítani {count, plural, one {# elemet} other {# elemet}} az albumból?",
"remove_assets_shared_link_confirmation": "Biztosan el szeretnél távolítani {count, plural, one {# elemet} other {# elemet}} ebből a megosztott linkből?",
@@ -1513,6 +1538,7 @@
"reset_password": "Jelszó visszaállítása",
"reset_people_visibility": "Személyek láthatóságának visszaállítása",
"reset_pin_code": "PIN kód visszaállítása",
"reset_sqlite": "SQLite Adatbázis Visszaállítása",
"reset_to_default": "Visszaállítás alapállapotba",
"resolve_duplicates": "Duplikátumok feloldása",
"resolved_all_duplicates": "Minden duplikátum feloldása",
@@ -1583,7 +1609,7 @@
"search_places": "Helyek keresése",
"search_rating": "Keresés értékelés szerint...",
"search_result_page_new_search_hint": "Új Keresés",
"search_settings": "Keresési beállítások",
"search_settings": "Beállítások keresése",
"search_state": "Megye/Állam keresése...",
"search_suggestion_list_smart_search_hint_1": "Az intelligens keresés alapértelmezetten be van kapcsolva, metaadatokat így kereshetsz ",
"search_suggestion_list_smart_search_hint_2": "m:keresési-kifejezés",
@@ -1774,6 +1800,7 @@
"storage_quota": "Tárhely kvóta",
"storage_usage": "{used}/{available} használatban",
"submit": "Beküldés",
"success": "Siker",
"suggestions": "Javaslatok",
"sunrise_on_the_beach": "Napkelte a tengerparton",
"support": "Támogatás",
@@ -1783,6 +1810,8 @@
"sync": "Szinkronizálás",
"sync_albums": "Albumok szinkronizálása",
"sync_albums_manual_subtitle": "Összes fotó és videó létrehozása és szinkronizálása a kiválasztott Immich albumokba",
"sync_local": "Helyi Szinkronizálása",
"sync_remote": "Távoli Szinkronizálása",
"sync_upload_album_setting_subtitle": "Fotók és videók létrehozása és szinkronizálása a kiválasztott Immich albumba",
"tag": "Címke",
"tag_assets": "Elemek címkézése",

View File

@@ -28,7 +28,6 @@
"exif_bottom_sheet_person_add_person": "Ավելացնել անուն",
"exif_bottom_sheet_person_age_years": "Տարիք {years}",
"hi_user": "Բարեւ {name} ({email})",
"map_assets_in_bound": "{count} նկար",
"map_assets_in_bounds": "{count} նկարներ",
"partner_list_user_photos": "{}-ին նկարները",
"photos": "Նկարներ",

View File

@@ -487,6 +487,7 @@
"authorized_devices": "Perangkat Terautentikasi",
"back": "Kembali",
"back_close_deselect": "Kembali, tutup, atau batalkan pemilihan",
"backup": "Cadangkan",
"backup_album_selection_page_albums_device": "Album di perangkat ({count})",
"backup_album_selection_page_albums_tap": "Sentuh untuk memilih, sentuh 2x untuk mengecualikan",
"backup_album_selection_page_assets_scatter": "Aset dapat tersebar dalam banyak album. Sehingga album dapat dipilih atau dikecualikan saat proses pencadangan.",
@@ -1069,7 +1070,6 @@
"light": "Terang",
"like_deleted": "Suka dihapus",
"link_motion_video": "Tautan video gerak",
"link_options": "Opsi tautan",
"link_to_oauth": "Tautkan ke OAuth",
"linked_oauth_account": "Akun OAuth tertaut",
"list": "Daftar",
@@ -1124,7 +1124,6 @@
"manage_your_devices": "Kelola perangkat Anda yang masuk",
"manage_your_oauth_connection": "Kelola koneksi OAuth Anda",
"map": "Peta",
"map_assets_in_bound": "{count} foto",
"map_assets_in_bounds": "{count} foto",
"map_cannot_get_user_location": "Tidak dapat memeroleh lokasi pengguna",
"map_location_dialog_yes": "Ya",

View File

@@ -14,6 +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_endpoint": "Aggiungi endpoint",
"add_exclusion_pattern": "Aggiungi un pattern di esclusione",
"add_import_path": "Aggiungi un percorso di importazione",
@@ -44,6 +45,13 @@
"backup_database": "Crea Dump Database",
"backup_database_enable_description": "Abilita i backup del database",
"backup_keep_last_amount": "Numero di backup da mantenere",
"backup_onboarding_1_description": "copia offsite nel cloud o in un'altra sede fisica.",
"backup_onboarding_2_description": "copie locali su diversi dispositivi. Ciò include i file principali e un backup di tali file a livello locale.",
"backup_onboarding_3_description": "copie totali dei tuoi dati, compresi i file originali. Ciò include 1 copia offsite e 2 copie locali.",
"backup_onboarding_description": "Per proteggere i tuoi dati, è consigliato adottare una strategia di backup <backblaze-link>3-2-1</backblaze-link>. Per una soluzione di backup completa, è consigliato conservare copie delle foto/video caricati e del database Immich.",
"backup_onboarding_footer": "Per ulteriori informazioni sul backup di Immich, consultare la <link>documentazione</link>.",
"backup_onboarding_parts_title": "Un backup 3-2-1 include:",
"backup_onboarding_title": "Backup",
"backup_settings": "Impostazioni Dump database",
"backup_settings_description": "Gestisci le impostazioni dei backup.",
"cleared_jobs": "Cancellati i processi per: {job}",
@@ -397,6 +405,7 @@
"album_cover_updated": "Copertina dell'album aggiornata",
"album_delete_confirmation": "Sei sicuro di voler cancellare l'album {album}?",
"album_delete_confirmation_description": "Se l'album è condiviso gli altri utenti perderanno l'accesso.",
"album_deleted": "Album eliminato",
"album_info_card_backup_album_excluded": "ESCLUSI",
"album_info_card_backup_album_included": "INCLUSI",
"album_info_updated": "Informazioni dell'album aggiornate",
@@ -510,6 +519,7 @@
"back_close_deselect": "Indietro, chiudi o deseleziona",
"background_location_permission": "Permesso di localizzazione in background",
"background_location_permission_content": "Per fare in modo che sia possibile cambiare rete quando è in esecuzione in background, Immich deve *sempre* avere accesso alla tua posizione precisa in modo da poter leggere il nome della rete Wi-Fi",
"backup": "Backup",
"backup_album_selection_page_albums_device": "Album sul dispositivo ({count})",
"backup_album_selection_page_albums_tap": "Tap per includere, doppio tap per escludere",
"backup_album_selection_page_assets_scatter": "Visto che le risorse possono trovarsi in più album, questi possono essere inclusi o esclusi dal backup.",
@@ -573,6 +583,8 @@
"backup_options_page_title": "Opzioni di Backup",
"backup_setting_subtitle": "Gestisci le impostazioni di upload in primo piano e in background",
"backward": "Indietro",
"beta_sync": "Status sincronizzazione beta",
"beta_sync_subtitle": "Gestisci il nuovo sistema di sincronizzazione",
"biometric_auth_enabled": "Autenticazione biometrica attivata",
"biometric_locked_out": "Sei stato bloccato dall'autenticazione biometrica",
"biometric_no_options": "Nessuna opzione biometrica disponibile",
@@ -721,6 +733,7 @@
"current_server_address": "Indirizzo del server in uso",
"custom_locale": "Localizzazione personalizzata",
"custom_locale_description": "Formatta data e numeri in base alla lingua e al paese",
"custom_url": "URL personalizzato",
"daily_title_text_date": "E, dd MMM",
"daily_title_text_date_year": "E, dd MMM, yyyy",
"dark": "Scuro",
@@ -740,7 +753,8 @@
"default_locale": "Localizzazione preimpostata",
"default_locale_description": "Formatta la data e i numeri in base alle impostazioni del tuo browser",
"delete": "Elimina",
"delete_action_prompt": "{count} elementi eliminati definitivamente",
"delete_action_confirmation_message": "Vuoi davvero eliminare questo asset? Questa azione sposterà l'asset nel cestino del server e ti chiederà se desideri eliminarla localmente",
"delete_action_prompt": "{count} elementi eliminati",
"delete_album": "Elimina album",
"delete_api_key_prompt": "Sei sicuro di voler eliminare questa chiave API?",
"delete_dialog_alert": "Questi oggetti saranno eliminati definitivamente da Immich e dal tuo device",
@@ -758,6 +772,8 @@
"delete_local_dialog_ok_backed_up_only": "Elimina solo con backup",
"delete_local_dialog_ok_force": "Elimina comunque",
"delete_others": "Elimina gli altri",
"delete_permanently": "Elimina definitivamente",
"delete_permanently_action_prompt": "{count} eliminati definitivamente",
"delete_shared_link": "Elimina link condiviso",
"delete_shared_link_dialog_title": "Elimina link condiviso",
"delete_tag": "Elimina tag",
@@ -813,6 +829,7 @@
"edit": "Modifica",
"edit_album": "Modifica album",
"edit_avatar": "Modifica avatar",
"edit_birthday": "Modifica Compleanno",
"edit_date": "Modifica data",
"edit_date_and_time": "Modifica data e ora",
"edit_description": "Modifica la descrizione",
@@ -980,6 +997,7 @@
},
"exif": "Exif",
"exif_bottom_sheet_description": "Aggiungi una descrizione...",
"exif_bottom_sheet_description_error": "Errore durante l'aggiornamento della descrizione",
"exif_bottom_sheet_details": "DETTAGLI",
"exif_bottom_sheet_location": "POSIZIONE",
"exif_bottom_sheet_people": "PERSONE",
@@ -1000,6 +1018,8 @@
"explorer": "Esplora",
"export": "Esporta",
"export_as_json": "Esporta come JSON",
"export_database": "Esporta database",
"export_database_description": "Esporta il database SQLite",
"extension": "Estensione",
"external": "Esterno",
"external_libraries": "Librerie esterne",
@@ -1051,6 +1071,9 @@
"haptic_feedback_switch": "Abilita feedback aptico",
"haptic_feedback_title": "Feedback aptico",
"has_quota": "Ha limite",
"hash_asset": "Risorsa hash",
"hashed_assets": "Risorse hash",
"hashing": "Hashing",
"header_settings_add_header_tip": "Aggiungi Header",
"header_settings_field_validator_msg": "Il valore non può essere vuoto",
"header_settings_header_name_input": "Nome header",
@@ -1083,6 +1106,7 @@
"host": "Host",
"hour": "Ora",
"id": "ID",
"idle": "Inattivo",
"ignore_icloud_photos": "Ignora foto iCloud",
"ignore_icloud_photos_description": "Le foto che sono memorizzate su iCloud non verranno caricate sul server Immich",
"image": "Immagine",
@@ -1140,6 +1164,7 @@
"language_no_results_title": "Linguaggi non trovati",
"language_search_hint": "Cerca linguaggi...",
"language_setting_description": "Seleziona la tua lingua predefinita",
"large_files": "File pesanti",
"last_seen": "Ultimo accesso",
"latest_version": "Ultima Versione",
"latitude": "Latitudine",
@@ -1159,13 +1184,14 @@
"light": "Chiaro",
"like_deleted": "Mi piace rimosso",
"link_motion_video": "Collega video in movimento",
"link_options": "Impostazioni Collegamento",
"link_to_oauth": "Collegamento a OAuth",
"linked_oauth_account": "Account OAuth collegato",
"list": "Lista",
"loading": "Caricamento",
"loading_search_results_failed": "Impossibile caricare i risultati della ricerca",
"local": "Locale",
"local_asset_cast_failed": "Impossibile trasmettere una risorsa che non è caricata sul server",
"local_assets": "Risorsa locale",
"local_network": "Rete locale",
"local_network_sheet_info": "L'app si collegherà al server tramite questo URL quando è in uso la rete Wi-Fi specificata",
"location_permission": "Permesso di localizzazione",
@@ -1222,8 +1248,7 @@
"manage_your_devices": "Gestisci i tuoi dispositivi collegati",
"manage_your_oauth_connection": "Gestisci la tua connessione OAuth",
"map": "Mappa",
"map_assets_in_bound": "{count} foto",
"map_assets_in_bounds": "{count} foto",
"map_assets_in_bounds": "{count, plural, one {# foto} other {# foto}}",
"map_cannot_get_user_location": "Non è possibile ottenere la posizione dell'utente",
"map_location_dialog_yes": "Si",
"map_location_picker_page_use_location": "Usa questa posizione",
@@ -1322,6 +1347,7 @@
"no_results": "Nessun risultato",
"no_results_description": "Prova ad usare un sinonimo oppure una parola chiave più generica",
"no_shared_albums_message": "Crea un album per condividere foto e video con le persone nella tua rete",
"no_uploads_in_progress": "Nessun upload in corso",
"not_in_any_album": "In nessun album",
"not_selected": "Non selezionato",
"note_apply_storage_label_to_previously_uploaded assets": "Nota: Per aggiungere l'etichetta dell'archiviazione agli asset caricati in precedenza, esegui",
@@ -1359,6 +1385,7 @@
"original": "originale",
"other": "Altro",
"other_devices": "Altri dispositivi",
"other_entities": "Altre entità",
"other_variables": "Altre variabili",
"owned": "Posseduti",
"owner": "Proprietario",
@@ -1519,6 +1546,8 @@
"refreshing_faces": "Aggiornando volti",
"refreshing_metadata": "Ricaricando i metadati",
"regenerating_thumbnails": "Rigenerando le anteprime",
"remote": "Remoto",
"remote_assets": "Risorse remote",
"remove": "Rimuovi",
"remove_assets_album_confirmation": "Sei sicuro di voler rimuovere {count, plural, one {# asset} other {# asset}} dall'album?",
"remove_assets_shared_link_confirmation": "Sei sicuro di voler rimuovere {count, plural, one {# asset} other {# asset}} da questo link condiviso?",
@@ -1556,19 +1585,25 @@
"reset_password": "Ripristina password",
"reset_people_visibility": "Ripristina visibilità persone",
"reset_pin_code": "Resetta il codice PIN",
"reset_sqlite": "Resetta Database SQLite",
"reset_sqlite_confirmation": "Vuoi davvero reimpostare il database SQLite? Dovrai disconnetterti e riconnetterti per risincronizzare i dati",
"reset_sqlite_success": "Database SQLite reimpostato correttamente",
"reset_to_default": "Ripristina i valori predefiniti",
"resolve_duplicates": "Risolvi duplicati",
"resolved_all_duplicates": "Tutti i duplicati sono stati risolti",
"restore": "Ripristina",
"restore_all": "Ripristina tutto",
"restore_trash_action_prompt": "{count} ripristinati dal cestino",
"restore_user": "Ripristina utente",
"restored_asset": "Asset ripristinato",
"resume": "Riprendi",
"retry_upload": "Riprova caricamento",
"review_duplicates": "Esamina duplicati",
"review_large_files": "Revisiona file pesanti",
"role": "Ruolo",
"role_editor": "Editor",
"role_viewer": "Visualizzatore",
"running": "In esecuzione",
"save": "Salva",
"save_to_gallery": "Salva in galleria",
"saved_api_key": "Chiave API salvata",
@@ -1722,6 +1757,7 @@
"shared_link_clipboard_copied_massage": "Copiato negli appunti",
"shared_link_clipboard_text": "Link: {link}\nPassword: {password}",
"shared_link_create_error": "Si è verificato un errore durante la creazione del link condiviso",
"shared_link_custom_url_description": "Accedi a questo link con un URL personalizzato",
"shared_link_edit_description_hint": "Inserisci la descrizione della condivisione",
"shared_link_edit_expire_after_option_day": "1 giorno",
"shared_link_edit_expire_after_option_days": "{count} giorni",
@@ -1747,6 +1783,7 @@
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Gestisci link condivisi",
"shared_link_options": "Opzioni link condiviso",
"shared_link_password_description": "Imposta una password per questo link",
"shared_links": "Link condivisi",
"shared_links_description": "Condividi foto e video con un link",
"shared_photos_and_videos_count": "{assetCount, plural, other {# foto & video condivisi.}}",
@@ -1822,6 +1859,7 @@
"storage_quota": "Limite Archiviazione",
"storage_usage": "{used} di {available} utilizzati",
"submit": "Invia",
"success": "Successo",
"suggestions": "Suggerimenti",
"sunrise_on_the_beach": "Tramonto sulla spiaggia",
"support": "Supporto",
@@ -1831,6 +1869,8 @@
"sync": "Sincronizza",
"sync_albums": "Sincronizza album",
"sync_albums_manual_subtitle": "Sincronizza tutti i video e le foto caricate sull'album di backup selezionato",
"sync_local": "Sincronizza gli elementi locali",
"sync_remote": "Sincronizza gli elementi remoti",
"sync_upload_album_setting_subtitle": "Crea e carica le tue foto e video sull'album selezionato in Immich",
"tag": "Tag",
"tag_assets": "Tagga risorse",
@@ -1841,6 +1881,7 @@
"tag_updated": "Tag {tag} aggiornata",
"tagged_assets": "{count, plural, one {# asset etichettato} other {# asset etichettati}}",
"tags": "Tag",
"tap_to_run_job": "Tocca per eseguire l'attività",
"template": "Modello",
"theme": "Tema",
"theme_selection": "Selezione tema",
@@ -1895,6 +1936,7 @@
"unarchived_count": "{count, plural, other {Non archiviati #}}",
"undo": "Annulla",
"unfavorite": "Rimuovi preferito",
"unfavorite_action_prompt": "{count} rimossi dai Favoriti",
"unhide_person": "Mostra persona",
"unknown": "Sconosciuto",
"unknown_country": "Paese sconosciuto",
@@ -1912,15 +1954,20 @@
"unselect_all_duplicates": "Deseleziona tutti i duplicati",
"unselect_all_in": "Deseleziona tutto in {group}",
"unstack": "Rimuovi dal gruppo",
"unstack_action_prompt": "{count} rimossi",
"unstacked_assets_count": "{count, plural, one {Separato # asset} other {Separati # asset}}",
"untagged": "Senza tag",
"up_next": "Prossimo",
"updated_at": "Aggiornato il",
"updated_password": "Password aggiornata",
"upload": "Carica",
"upload_action_prompt": "{count} accodati per l'upload",
"upload_concurrency": "Caricamenti contemporanei",
"upload_details": "Dettagli di caricamento",
"upload_dialog_info": "Vuoi fare il backup sul server delle risorse selezionate?",
"upload_dialog_title": "Carica file",
"upload_errors": "Caricamento completato con {count, plural, one {# errore} other {# errori}}, ricarica la pagina per vedere gli asset caricati.",
"upload_finished": "Upload terminato",
"upload_progress": "Rimanenti {remaining, number} - Processati {processed, number}/{total, number}",
"upload_skipped_duplicates": "{count, plural, one {Ignorato # asset duplicato} other {Ignorati # asset duplicati}}",
"upload_status_duplicates": "Duplicati",
@@ -1929,6 +1976,7 @@
"upload_success": "Caricamento completato con successo, aggiorna la pagina per vedere i nuovi asset caricati.",
"upload_to_immich": "Carica su Immich ({count})",
"uploading": "Caricamento",
"uploading_media": "Caricando i media",
"url": "URL",
"usage": "Utilizzo",
"use_biometric": "Usa biometrica",
@@ -1949,6 +1997,7 @@
"user_usage_stats_description": "Consulta le statistiche d'uso dell'account",
"username": "Nome utente",
"users": "Utenti",
"users_added_to_album_count": "Aggiunti {count, plural, one {# utente} other {# utenti}} all'album",
"utilities": "Utilità",
"validate": "Validazione",
"validate_endpoint_error": "Inserisci un URL valido",
@@ -1967,6 +2016,7 @@
"view_album": "Visualizza Album",
"view_all": "Vedi tutto",
"view_all_users": "Visualizza tutti gli utenti",
"view_details": "Visualizza Dettagli",
"view_in_timeline": "Visualizza in timeline",
"view_link": "Visualizza link",
"view_links": "Visualizza i link",

View File

@@ -490,6 +490,7 @@
"back_close_deselect": "戻る、閉じる、選択解除",
"background_location_permission": "バックグラウンド位置情報アクセス",
"background_location_permission_content": "正常にWi-Fiの名前(SSID)を獲得するにはアプリが常に詳細な位置情報にアクセスできる必要があります",
"backup": "バックアップ",
"backup_album_selection_page_albums_device": "デバイス上のアルバム({count})",
"backup_album_selection_page_albums_tap": "タップで選択、ダブルタップで除外",
"backup_album_selection_page_assets_scatter": "アルバムを選択・除外してバックアップする写真を選ぶ。 (同じ写真が複数のアルバムに登録されていることがあるため)",
@@ -1133,7 +1134,6 @@
"light": "ライトモード",
"like_deleted": "いいねが削除されました",
"link_motion_video": "モーションビデオのリンク",
"link_options": "リンクのオプション",
"link_to_oauth": "OAuthへリンクする",
"linked_oauth_account": "リンクされたOAuthアカウント",
"list": "リスト",
@@ -1196,7 +1196,6 @@
"manage_your_devices": "ログインデバイスを管理します",
"manage_your_oauth_connection": "OAuth接続を管理します",
"map": "地図",
"map_assets_in_bound": "{count}枚",
"map_assets_in_bounds": "{count}枚",
"map_cannot_get_user_location": "位置情報がゲットできません",
"map_location_dialog_yes": "はい",

View File

@@ -507,6 +507,7 @@
"back_close_deselect": "뒤로, 닫기, 선택 취소",
"background_location_permission": "백그라운드 위치 권한",
"background_location_permission_content": "백그라운드에서 네트워크를 전환하려면, Immich가 Wi-Fi 네트워크 이름을 확인할 수 있도록 '정확한 위치' 권한을 항상 허용해야 합니다.",
"backup": "백업",
"backup_album_selection_page_albums_device": "기기의 앨범 ({count})",
"backup_album_selection_page_albums_tap": "한 번 탭하면 포함되고, 두 번 탭하면 제외됩니다.",
"backup_album_selection_page_assets_scatter": "각 항목은 여러 앨범에 포함될 수 있으며, 백업 진행 중에도 대상 앨범을 포함하거나 제외할 수 있습니다.",
@@ -1130,7 +1131,6 @@
"light": "라이트",
"like_deleted": "좋아요가 삭제되었습니다.",
"link_motion_video": "모션 비디오 링크",
"link_options": "링크 옵션",
"link_to_oauth": "OAuth에 연결",
"linked_oauth_account": "OAuth 계정이 연결되었습니다.",
"list": "목록",
@@ -1191,7 +1191,6 @@
"manage_your_devices": "로그인된 기기 관리",
"manage_your_oauth_connection": "OAuth 연결 관리",
"map": "지도",
"map_assets_in_bound": "사진 {count}개",
"map_assets_in_bounds": "사진 {count}개",
"map_cannot_get_user_location": "사용자의 위치를 가져올 수 없습니다.",
"map_location_dialog_yes": "예",

View File

@@ -95,6 +95,8 @@
"job_settings": "Užduočių nustatymai",
"job_settings_description": "Keisti užduočių lygiagretumą",
"job_status": "Užduočių būsenos",
"jobs_delayed": "{jobCount, plural, other {# delayed}}",
"jobs_failed": "{jobCount, plural, other {# failed}}",
"library_created": "Sukurta biblioteka: {library}",
"library_deleted": "Biblioteka ištrinta",
"library_import_path_description": "Nurodykite aplanką, kurį norite importuoti. Šiame aplanke, įskaitant poaplankius, bus nuskaityti vaizdai ir vaizdo įrašai.",
@@ -167,13 +169,22 @@
"nightly_tasks_cluster_faces_setting_description": "Paleisti veido atpažinimą naujai aptiktiems veidams",
"nightly_tasks_cluster_new_faces_setting": "Sugrupuoti naujus veidus",
"nightly_tasks_database_cleanup_setting": "Duomenų bazės valymo darbai",
"nightly_tasks_database_cleanup_setting_description": "Išvalyti senus, nebgaliojančius duomenis iš duomenų bazės",
"nightly_tasks_generate_memories_setting": "Kurti prisiminimus",
"nightly_tasks_generate_memories_setting_description": "Iš duomenų kurti naujus prisiminimus",
"nightly_tasks_missing_thumbnails_setting": "Kurti trūkstamas miniatiūras",
"nightly_tasks_missing_thumbnails_setting_description": "Sudaryti įrašų be miniatiūrų eilę miniatiūrų generavimui",
"nightly_tasks_settings": "Naktinių užduočių nustatymai",
"nightly_tasks_settings_description": "Valdyti naktines užduotis",
"nightly_tasks_start_time_setting": "Pradžios laikas",
"nightly_tasks_start_time_setting_description": "Laikas kada serveris pradės vykdyti naktines užduotis",
"no_paths_added": "Keliai nepridėti",
"no_pattern_added": "Šablonas nepridėtas",
"note_apply_storage_label_previous_assets": "Pastaba: norėdami pritaikyti Saugyklos Žymą seniau įkeltiems ištekliams, paleiskite",
"note_cannot_be_changed_later": "PASTABA: Vėliau to pakeisti negalima!",
"notification_email_from_address": "Iš adreso",
"notification_email_from_address_description": "Siuntėjo elektroninis adresas, pavyzdžiui: \"Immich Photo Server <noreply@example.com>\"",
"notification_email_host_description": "Elektroninio pašto serverio savininkas (pvz. smtp.immich.app)",
"notification_email_from_address_description": "Siuntėjo el. pašto adresas, pavyzdžiui: \"Immich Photo Server <noreply@example.com>\". Būtinai naudokite adresą iš kurio jums galima siųsti laiškus.",
"notification_email_host_description": "Elektroninio pašto serverio adresas (pvz. smtp.immich.app)",
"notification_email_ignore_certificate_errors": "Nepaisyti sertifikatų klaidų",
"notification_email_ignore_certificate_errors_description": "Nepaisyti TLS sertifikato patvirtinimo klaidų (nerekomenduojama)",
"notification_email_password_description": "Slaptažodis, naudojant autentikacijai su elektroninio pašto serveriu",
@@ -261,20 +272,32 @@
"template_settings": "Pranešimų šablonai",
"template_settings_description": "Tvarkyti pasirinktinius pranešimų šablonus",
"theme_custom_css_settings": "Individualizuotas CSS",
"theme_custom_css_settings_description": "CSS leidžiantis keisti Immich dizainą.",
"theme_settings": "Temos nustatymai",
"theme_settings_description": "Valdyti Immich web sąsajos pritaikymus",
"thumbnail_generation_job": "Generuoti Miniatiūras",
"thumbnail_generation_job_description": "Didelių, mažų ir neryškių miniatiūrų generavimas kiekvienam bibliotekos elementui, taip pat miniatiūrų generavimas kiekvienam asmeniui",
"transcoding_acceleration_api": "Spartinimo API",
"transcoding_acceleration_api_description": "API kurį naudos paspartintam perkodavimui. Tai veiks pagal \"geriausią bandymą\": nepavykus bus naudojamas programinis perkodavimas. VP9 gali veikti arba ne priklausomai nuo jūsų techninės įrangos.",
"transcoding_acceleration_nvenc": "NVENC (reikalinga NVIDIA GPU)",
"transcoding_acceleration_qsv": "Quick Sync (reikalingas 7-os arba vėlesnės generacijos Intel procesorius)",
"transcoding_acceleration_rkmpp": "RKMPP (tik Rockchip SOCs)",
"transcoding_acceleration_vaapi": "VAAPI",
"transcoding_accepted_audio_codecs": "Priimtini garso kodekai",
"transcoding_accepted_audio_codecs_description": "Pasirinkti kurių garso kodekų nereikia perkoduoti. Naudojma tik kai kurioms perkodavimo taisyklėms.",
"transcoding_accepted_containers": "Priimami konteineriai",
"transcoding_accepted_containers_description": "Pasirinkti kurių konteinerių formatų nereikia performuoti į MP4. Naudojama tik kai kurioms perkodavimo taisyklėms.",
"transcoding_accepted_video_codecs": "Priimami vaizdo kodekai",
"transcoding_accepted_video_codecs_description": "Pasirinkti vaizdo kodekus kurių nereikia perkoduoti. Naudojama tik kai kurioms perkodavimo taisyklėms.",
"transcoding_advanced_options_description": "Parinktys, kurių daugelis naudotojų keisti neturėtų",
"transcoding_audio_codec": "Garso kodekas",
"transcoding_audio_codec_description": "Opus yra aukščiausios kokybės variantas, tačiau turi mažesnį suderinamumą su senesniais įrenginiais ar programine įranga.",
"transcoding_bitrate_description": "Vaizdo įrašai viršija maksimalią leistiną bitų spartą arba nėra priimtino formato",
"transcoding_codecs_learn_more": "Sužinoti daugiau apie naudojamą terminologiją, naudokite FFmpeg dokumentaciją <h264-link>H.264 codec</h264-link>, <hevc-link>HEVC codec</hevc-link> and <vp9-link>VP9 codec</vp9-link>.",
"transcoding_constant_quality_mode": "Pastovios kokybės režimas",
"transcoding_constant_quality_mode_description": "ICQ yra geriau nei CPQ, tačiau ne visi įrenginiai palaiko šį spartinimo būdą. Šis pasirinkimas būtų naudojamas kai nustatytas Kodavimas Pagal Kokybę. NVENC nepalaiko šio pasirinkimo todėl bus ignoruojamas.",
"transcoding_constant_rate_factor_description": "Video kokybės lygis. Tipinės reikšmės yra 23 jei H.264, 28 jei HVEC, 31 jei VP9, ir 35 jei AV1. Kuo mažesnis tuo kokybiškesnis tačiau didesni failai.",
"transcoding_disabled_description": "Nedaryti perkodavimo, įrašų peržiūra gali neveikti ant kai kūrių sąsajų",
"transcoding_hardware_acceleration": "Techninės įrangos spartinimas",
"transcoding_hardware_decoding": "Aparatinis dekodavimas",
"transcoding_max_bitrate": "Maksimalus bitų srautas",
@@ -646,7 +669,6 @@
"level": "Lygis",
"library": "Biblioteka",
"library_options": "Bibliotekos pasirinktys",
"link_options": "Nuorodų parinktys",
"link_to_oauth": "Susieti su OAuth",
"linked_oauth_account": "Susieta OAuth paskyra",
"list": "Sąrašas",

View File

@@ -14,6 +14,7 @@
"add_a_location": "Pievienot atrašanās vietu",
"add_a_name": "Pievienot vārdu",
"add_a_title": "Pievienot virsrakstu",
"add_birthday": "Pievienot dzimšanas dienu",
"add_endpoint": "Pievienot galapunktu",
"add_exclusion_pattern": "Pievienot izslēgšanas šablonu",
"add_import_path": "Pievienot importa ceļu",
@@ -191,6 +192,7 @@
"age_years": "{years, plural, zero {# gadu} one {# gads} other {# gadi}}",
"album_added": "Albums pievienots",
"album_cover_updated": "Albuma attēls atjaunināts",
"album_deleted": "Albums dzēsts",
"album_info_card_backup_album_excluded": "NEIEKĻAUTS",
"album_info_card_backup_album_included": "IEKĻAUTS",
"album_info_updated": "Albuma informācija atjaunināta",
@@ -209,6 +211,10 @@
"album_viewer_appbar_share_to": "Kopīgot Uz",
"album_viewer_page_share_add_users": "Pievienot lietotājus",
"albums": "Albumi",
"albums_default_sort_order": "Albuma noklusējuma kārtošanas secība",
"albums_default_sort_order_description": "Sākotnējā failu kārtošanas secība, veidojot jaunus albumus.",
"albums_feature_description": "Failu kolekcijas, kuras var koplietot ar citiem lietotājiem.",
"albums_on_device_count": "Albumi ierīcē ({count})",
"all": "Viss",
"all_albums": "Visi albumi",
"all_people": "Visi cilvēki",
@@ -217,6 +223,7 @@
"allow_edits": "Atļaut labošanu",
"allow_public_user_to_download": "Atļaut lejupielādēt publiskiem lietotājiem",
"allow_public_user_to_upload": "Atļaut augšupielādēt publiskiem lietotājiem",
"alt_text_qr_code": "QR koda attēls",
"anti_clockwise": "Pretēji pulksteņrādītāja virzienam",
"api_key": "API atslēga",
"api_key_description": "Šī vērtība tiks parādīta tikai vienu reizi. Nokopējiet to pirms loga aizvēršanas.",
@@ -250,6 +257,7 @@
"authorized_devices": "Autorizētās ierīces",
"automatic_endpoint_switching_title": "Automātiska URL pārslēgšana",
"back": "Atpakaļ",
"backup": "Dublēšana",
"backup_album_selection_page_albums_device": "Albumi ierīcē ({count})",
"backup_album_selection_page_albums_tap": "Pieskarieties, lai iekļautu, veiciet dubultskārienu, lai izslēgtu",
"backup_album_selection_page_assets_scatter": "Aktīvi var būt izmētāti pa vairākiem albumiem. Tādējādi dublēšanas procesā albumus var iekļaut vai neiekļaut.",
@@ -335,6 +343,7 @@
"cache_settings_title": "Kešdarbes iestatījumi",
"camera": "Fotokamera",
"cancel": "Atcelt",
"canceling": "Atceļ",
"cannot_merge_people": "Nevar apvienot cilvēkus",
"change_date": "Mainīt datumu",
"change_description": "Mainīt aprakstu",
@@ -476,6 +485,7 @@
"empty_trash": "Iztukšot atkritni",
"enable_biometric_auth_description": "Lai iespējotu biometrisko autentifikāciju, Ievadiet savu PIN kodu",
"end_date": "Beigu datums",
"enqueued": "Ierindots",
"enter_wifi_name": "Ievadi Wi-Fi nosaukumu",
"enter_your_pin_code": "Ievadi savu PIN kodu",
"enter_your_pin_code_subtitle": "Ievadi savu PIN kodu, lai piekļūtu slēgtajai mapei",
@@ -485,6 +495,8 @@
"cant_get_faces": "Nevar iegūt sejas",
"cant_search_people": "Neizdevās veikt peronu meklēšanu",
"failed_to_create_album": "Neizdevās izveidot albumu",
"import_path_already_exists": "Šis importa ceļš jau pastāv.",
"incorrect_email_or_password": "Nepareizs e-pasts vai parole",
"profile_picture_transparent_pixels": "Profila attēlos nevar būt caurspīdīgi pikseļi. Lūdzu, palielini un/vai pārvieto attēlu.",
"unable_to_change_description": "Neizdevās nomainīt aprakstu",
"unable_to_create_user": "Neizdevās izveidot lietotāju",
@@ -512,6 +524,8 @@
"expired": "Derīguma termiņš beidzās",
"explore": "Izpētīt",
"export": "Eksportēt",
"export_database": "Eksportēt datubāzi",
"export_database_description": "Eksportēt SQLite datubāzi",
"extension": "Paplašinājums",
"external_network_sheet_info": "When not on the preferred WiFi network, the app will connect to the server through the first of the below URLs it can reach, starting from top to bottom",
"failed_to_authenticate": "Neizdevās autentificēties",
@@ -527,6 +541,10 @@
"folders": "Mapes",
"gcast_enabled": "Google Cast",
"get_help": "Saņemt palīdzību",
"getting_started": "Pirmie soļi",
"go_back": "Doties atpakaļ",
"go_to_folder": "Doties uz mapi",
"go_to_search": "Doties uz meklēšanu",
"haptic_feedback_switch": "Iestatīt haptisku reakciju",
"haptic_feedback_title": "Haptiska Reakcija",
"has_quota": "Ir kvota",
@@ -583,6 +601,7 @@
"language": "Valoda",
"language_search_hint": "Meklēt valodas...",
"language_setting_description": "Izvēlieties vēlamo valodu",
"large_files": "Lielie faili",
"last_seen": "Pēdējo reizi redzēts",
"latest_version": "Jaunākā versija",
"latitude": "Ģeogrāfiskais platums",
@@ -597,6 +616,7 @@
"library_page_sort_created": "Jaunākais izveidotais",
"library_page_sort_last_modified": "Pēdējo reizi modificēts",
"library_page_sort_title": "Albuma virsraksts",
"licenses": "Licences",
"list": "Saraksts",
"loading": "Ielādē",
"location_permission_content": "In order to use the auto-switching feature, Immich needs precise location permission so it can read the current WiFi network's name",
@@ -640,7 +660,6 @@
"manage_your_devices": "Pieslēgto ierīču pārvaldība",
"manage_your_oauth_connection": "OAuth savienojumu pārvaldība",
"map": "Karte",
"map_assets_in_bound": "{count} fotoattēls",
"map_assets_in_bounds": "{count} fotoattēli",
"map_cannot_get_user_location": "Nevar iegūt lietotāja atrašanās vietu",
"map_location_dialog_yes": "Jā",
@@ -834,6 +853,7 @@
"purchase_server_description_2": "Atbalstītāja statuss",
"purchase_server_title": "Serveris",
"purchase_settings_server_activated": "Servera produkta atslēgu pārvalda administrators",
"queue_status": "Ierindo {count}/{total}",
"rating_clear": "Noņemt vērtējumu",
"rating_description": "Rādīt EXIF vērtējumu informācijas panelī",
"reaction_options": "Reakcijas iespējas",
@@ -875,6 +895,7 @@
"resume": "Turpināt",
"retry_upload": "Atkārtot augšupielādi",
"review_duplicates": "Pārskatīt dublikātus",
"review_large_files": "Pārskatīt lielos failus",
"role": "Loma",
"role_editor": "Redaktors",
"role_viewer": "Skatītājs",
@@ -1090,12 +1111,15 @@
"updated_at": "Atjaunināts",
"updated_password": "Parole ir atjaunināta",
"upload": "Augšupielādēt",
"upload_action_prompt": "{count} ierindoti augšupielādei",
"upload_dialog_info": "Vai vēlaties veikt izvēlētā(-o) aktīva(-u) dublējumu uz servera?",
"upload_dialog_title": "Augšupielādēt Aktīvu",
"upload_finished": "Augšupielāde pabeigta",
"upload_status_duplicates": "Dublikāti",
"upload_status_errors": "Kļūdas",
"upload_status_uploaded": "Augšupielādēts",
"upload_to_immich": "Augšupielādēt Immich ({count})",
"uploading_media": "Augšupielādē failus",
"url": "URL",
"usage": "Lietojums",
"use_biometric": "Izmantot biometrisko autentifikāciju",

View File

@@ -199,7 +199,6 @@
"level": "Ниво",
"library": "Библиотека",
"light": "Светло",
"link_options": "Опции за линк",
"list": "Листа",
"loading": "Вчитување",
"log_out": "Одјави се",

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