1
0
Fork 0
mirror of https://github.com/immich-app/immich.git synced 2025-02-03 01:22:44 +01:00

Compare commits

...

185 commits

Author SHA1 Message Date
Arno
e42f5ddb20
Merge 8baa970146 into da580d4685 2025-01-28 21:54:35 +01:00
Carsten Otto
da580d4685
fix: show local dates for range in album summary ()
* fix(web): show local dates for range in album summary

* fix(server): show local dates for range in album summary
2025-01-28 14:33:38 -06:00
Simon
cb6d94c7a7
chore: update of the Ukrainian translation ()
Update uk-UA.json

Update of the Ukrainian translation for the Immich app
2025-01-28 20:32:57 +00:00
Arno Wiest
8baa970146 fixed bad codegen and removed unnecessary type assertion again 2025-01-28 20:42:41 +01:00
Arno Wiest
46babca7f1 Merge branch 'main' into feat/favorite-people 2025-01-28 20:02:52 +01:00
André Ventura
060300de8a
fix(web): cancel people merge selection: do not show "Change name successfully" notification ()
fix(web): cancel people merge selection: do not show "Change name successfully" notification.

Co-authored-by: André Ventura <afv@users.noreply.github.com>
2025-01-28 11:43:52 -06:00
Miguel Angel Nubla
c2ba1cc202
docs: add immich-upload-optimizer to Community Projects list () 2025-01-28 09:40:00 -06:00
PastLeo
08db77db23
feat: resolution selection and default preview playback for 360° panorama videos ()
* original/preview switching in photo-sphere-viewer

1. default to preview in photo-sphere-viewer video mode
2. install and integrate @photo-sphere-viewer/settings-plugin & @photo-sphere-viewer/resolution-plugin

* fix lint errors
2025-01-28 09:09:40 -06:00
RiggiG
92dff839d0
fix(web): do not throw error when hash fails ()
change: do not throw error when hash fails
2025-01-28 03:54:56 +00:00
Christian Kündig
fe1e09e51f
fix(server): Allow negative rating (for rejected images) ()
Allow negative rating (for rejected images)
2025-01-27 21:54:29 -06:00
github-actions
f44669447f chore: version v1.125.6 2025-01-28 02:58:27 +00:00
Mert
92412ca2f7
fix(server): person thumbnail generation always being queued ()
* fix person thumbnail generation always being queued

* fix thumbhash comparison

* fix mock
2025-01-27 16:20:18 -06:00
github-actions
64d926581f chore: version v1.125.5 2025-01-27 20:04:50 +00:00
Alex
c139e05170
fix(mobile): locale option causes the datetime filter error out () 2025-01-27 14:02:23 -06:00
Alex
0fe62298e1
fix(server): duplicate detection () 2025-01-27 13:53:59 -06:00
github-actions
e5794e6cfc chore: version v1.125.4 2025-01-27 18:44:12 +00:00
Alex
f6cbc9db06
fix(server): cannot render album page when all assets of an album are in trash ()
* fix(server): cannot render album page when all assets of an album are in trash

* inner join

* add e2e test

* check empty albums too

* render add to album button on empty album

* lint

* count 0 if undefined

* fix album card test

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-01-26 21:18:34 -06:00
Alex
8dab5d3798
chore(mobile): post release task () 2025-01-26 15:09:15 -06:00
Carsten Otto
e864811a85
fix(web): sort folders ()
fixes 
2025-01-26 15:07:22 -06:00
github-actions
72a55c13b6 chore: version v1.125.3 2025-01-26 14:14:48 +00:00
sudbrack
206412267a
fix(server): /search/random API returns same assets every call ()
* Fix for server searchRandom function not returning random results

* Fix lint
2025-01-26 14:06:18 +00:00
Damiano Ferrari
f780a56e24
fix(mobile): Misaligned text icon in circle avatar ()
style(mobile): Use `DefaultTextStyle` for the text icon in `CircleAvatar`
2025-01-26 07:51:46 -06:00
Alex
7bbffccf76
fix(web): neon overflow on mobile screen () 2025-01-26 08:06:26 -05:00
Mert
05a446c259
fix(server): avoid duplicate rows in album queries ()
* avoid duplicate rows

* left join, handle null vs. undefined

* update sql
2025-01-25 22:37:19 -06:00
Carsten Otto
4f725b95e1
fix(server): do not count deleted assets for album summary ()
fixes 
fixes 
2025-01-25 16:45:13 -06:00
Carsten Otto
64b92cb24c
fix(server): do not reset fileCreatedDate ()
When marking an offline asset as online again, do not reset the
fileCreatedAt value. This value contains the "true" date, copied
from exif.dateTimeOriginal. If we overwrite this value, we'd need
to run the metadata extraction job again. Instead, we just leave
the old (and correct) value in place.

fixes 
2025-01-25 13:50:37 -06:00
Gagan Yadav
19f2f888ee
fix(mobile): improve timezone picker ()
- Fix missing timezones

- Remove the UTC prefix from timezone display text to align with web app

- Remove unnecessary layout builder

- Created a custom `DropdownSearchMenu` widget

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-01-25 13:36:49 -06:00
Alex
d12b1c907d
fix(server): bulk update location () 2025-01-25 11:58:07 -06:00
Robert Schütz
947c053c15
chore(server): add DB_URL supports Unix sockets unit test ()
* test(server): DB_URL supports Unix sockets

* chore: format

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-01-25 10:38:00 +00:00
Regenxyz
79592701dd
chore: fix typos in Thai Language Readme ()
Update README_th_TH.md

Fixing weird Thai Translate
2025-01-25 10:30:53 +00:00
jdicioccio
39697cd973
fix: increase upload timeout ()
Fix upload timeout issue

Fix an issue where when uploading a large file, the upload would consistently abort after 30 minutes. I changed this timeout from 30 minutes to 1 day. Maybe that's excessive, or maybe the timeout isn't even needed, but the current 30 minute timeout definitely seems way too short.
2025-01-25 04:26:52 -06:00
Jonathan Jogenfors
10e518db42
chore(server): print stack in case of worker error ()
feat: show error stack
2025-01-24 22:45:55 -05:00
Mert
72fa31f9e9
fix(server): changing vector dim size () 2025-01-24 20:01:24 -05:00
github-actions
9871a04d54 chore: version v1.125.2 2025-01-24 19:09:06 +00:00
Mert
ba01b40e7c
fix(server): sslmode not working ()
* parse db url before passing it to the driver

* don't be lazy

* simplify

* simplify

* add tests

* update sql sync script

* update mock

* remove unused import

* remove unused imports
2025-01-24 13:01:55 -06:00
Alex
f5a3d7ba23
fix(mobile): failed to load ga/gl locale () 2025-01-24 12:47:29 -06:00
Alex
d4a9eed4a1
fix(server): migration mentions public schema () 2025-01-24 18:11:22 +00:00
Alex
9d8072b994
fix(server): failed to get albums with archived assets ()
* fix(mobile): failed to get albums with archived assets

* sql
2025-01-24 17:54:53 +00:00
Saschl
3c1fa22109
fix(mobile): deletion of single assets ()
fix: set asset in currentassetprovider on image load

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-01-24 17:47:54 +00:00
Matthew Momjian
c0210bd6c0
fix(mobile): translation (no /api, experimental features) ()
* initial /api removal

* translations /api

* experimental features

* japanese url update

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-01-24 11:47:01 -06:00
Mert
a6ace5151c
fix(server): no exif metadata in the deduplication utility ()
add exif to `getDuplicates`
2025-01-24 11:42:39 -06:00
Jason Rasmussen
ede9c99adb
fix: demo login page () 2025-01-24 11:39:06 -06:00
Alex
ec7ab209f3
fix(server): link live photos ()
* fix(server): link live photos

* chore: sql

* formatting
2025-01-24 11:38:59 -06:00
Alex
61bc24d7ea
chore(mobile): post release task () 2025-01-24 17:28:00 +00:00
Alex
6c95eb22b7
fix(mobile): full refresh doesn't get albums () 2025-01-24 17:27:33 +00:00
Jason Rasmussen
aaea5cf1ad
fix: login page () 2025-01-24 17:17:04 +00:00
Alex
96d2e9b4c5
fix(mobile): unit test ()
* fix(mobile): unit test

* fix(mobile): unit test
2025-01-24 12:11:38 -05:00
Alex
19740a3560
fix(web): neon artifacts () 2025-01-24 09:18:26 -06:00
bo0tzz
8a481e2ea1
docs: add FAQ about app update approval () 2025-01-24 09:08:01 -06:00
Mert
ba105d9f19
fix(server): searchRandom response ()
* fix searchRandom

* add e2e

* set outer limit
2025-01-24 00:41:54 -05:00
Lukas
065d885ca0
fix(server): Fix for sorting faces during merging ()
* Fix for sorting faces

* Put uneccessary orderBy in if statement
2025-01-23 21:33:24 -05:00
Mert
a07ae9b5b2
fix(server): set updatedAt on updates ()
* `updatedAt` triggers

* drop function at the end
2025-01-23 19:24:29 -05:00
Jason Rasmussen
1869b1b41a
refactor: repositories ()
* refactor: version history repository

* refactor: oauth repository

* refactor: trash repository

* refactor: telemetry repository

* refactor: metadata repository

* refactor: cron repository

* refactor: map repository

* refactor: server-info repository

* refactor: album user repository

* refactor: notification repository
2025-01-23 18:10:17 -05:00
Alex
995314446b
feat(web): neon light behinds login form () 2025-01-23 17:23:23 -05:00
Jason Rasmussen
a1691ddc0f
fix(web): auth page padding () 2025-01-23 21:38:34 +00:00
Mert
071b271484
fix(server): getTimeBuckets not handling boolean filters correctly ()
fix boolean handling
2025-01-23 15:08:20 -06:00
github-actions
50a2f6193f chore: version v1.125.1 2025-01-23 16:52:23 +00:00
bo0tzz
907fed1081
fix: use push-o-matic to create release () 2025-01-23 10:46:56 -06:00
github-actions
49a16045bd chore: version v1.125.0 2025-01-23 16:23:47 +00:00
Alex
a47aa86392
chore: minor form bottom padding increase () 2025-01-23 15:45:07 +00:00
David Baxter
f32c5d97cd
feat(web): Show lens model in the asset viewer detail panel ()
* Adds lens details to the asset viewer

* Update lens detail search links

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-01-23 09:34:36 -06:00
Alex
afc6e91c66
fix(web): No EXIF info on stack navigation ()
* fix(web): No EXIF info on stack navigation

* fix(web): No EXIF info on stack navigation

* add exif info to get stack query

* e2e test
2025-01-23 15:22:27 +00:00
renovate[bot]
1311189fab
chore(deps): update base-image to v20250123 (major) ()
chore(deps): update base-image to v20250123

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-23 08:32:32 -05:00
renovate[bot]
fa3b5a4c8f
chore(deps): update node ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-23 08:32:14 -05:00
Jason Rasmussen
d3446f3092
refactor: logging repository () 2025-01-23 08:31:30 -05:00
renovate[bot]
b31414af8f
fix(deps): update dependency @nestjs/bullmq to v11 ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-22 22:37:02 +00:00
renovate[bot]
cf99dcb279
fix(deps): update dependency @nestjs/event-emitter to v3 ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-22 22:34:50 +00:00
renovate[bot]
dc56ed5d45
fix(deps): update dependency @nestjs/schedule to v5 ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-22 22:32:35 +00:00
renovate[bot]
d1d26c60d6
fix(deps): update typescript-projects ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-01-22 22:15:38 +00:00
Jason Rasmussen
66849d0d45
refactor: migrate media repository () 2025-01-22 22:11:07 +00:00
renovate[bot]
30b8864d2d
chore(deps): update base-image to v20250121 (major) ()
chore(deps): update base-image to v20250121

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-22 16:45:25 -05:00
Jason Rasmussen
78464a4ba3
refactor: ui icon buttons () 2025-01-22 16:44:59 -05:00
Jason Rasmussen
1f19a65d1a
refactor: migrate memory repository () 2025-01-22 21:39:13 +00:00
Jason Rasmussen
ca3619658b
fix: incorrect event configuration () 2025-01-22 20:43:06 +00:00
renovate[bot]
c7a1f2944f
chore(deps): update vitest monorepo to v3 (major) ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-22 20:28:41 +00:00
Daniel Dietzler
7b71c145c8
chore: upgrade to vite 6 ()
chore: upgrade to vite 5
2025-01-22 15:18:04 -05:00
Mert
49a6961ec6
fix(server): query fixes () 2025-01-22 14:17:42 -06:00
Alex
7b882b35e5
chore(mobile): translations update ()
chore(mobile): translation update
2025-01-22 18:38:01 +00:00
Weblate (bot)
443aad5794
chore(web): update translations ()
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fil/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translation: Immich/immich

Co-authored-by: Andreas Johansen <andreas@josern.com>
Co-authored-by: Andrius Cimakevicius <andrius.cim@gmail.com>
Co-authored-by: FDS <sfranzdanielsss@gmail.com>
Co-authored-by: Fredrik Rambris <fredrik@rambris.com>
Co-authored-by: Kaspar Brygger <kaspar.brygger@gmail.com>
Co-authored-by: Lauri Koo <late91@gmail.com>
Co-authored-by: Ramy <ramy.feteha@gmail.com>
Co-authored-by: Rico Sonntag <mail@ricosonntag.de>
Co-authored-by: Sedat Albayrak <sedat.albayrak@icloud.com>
Co-authored-by: Torin Wu <xuan329269@gmail.com>
Co-authored-by: ValinRo <edicomna@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: anton garcias <isaga.percompartir@gmail.com>
Co-authored-by: pyorot <FMasic@hotmail.co.uk>
Co-authored-by: Øyvind Hovden <oyvhov@gmail.com>
Co-authored-by: Ümit Solmz <usnetv@users.noreply.hosted.weblate.org>
Co-authored-by: Мĕтри Сантăр ывалĕ Упа-Миччи <mefisteron@gmail.com>
2025-01-22 18:28:13 +00:00
Jason Rasmussen
8d6cbb51e2
fix: get asset by id for stacks () 2025-01-22 18:13:09 +00:00
renovate[bot]
c8abe9a2fd
chore(deps): update node.js to v22.13.1 ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-21 16:16:46 -06:00
Alex
58a75d59bd
chore: update ui 14.1 () 2025-01-21 16:16:26 -06:00
Jason Rasmussen
36058b9b59
chore: remove unused code () 2025-01-21 16:47:48 -05:00
Matthew Momjian
8440f146e2
feat(docs): CIFS/Samba in-Docker example ()
* CIFS

* quotes

* quote 2

* quote 3, lol
2025-01-21 12:59:30 -06:00
Matthew Momjian
3da17da7b4
fix(docs): remove old attribution ()
update
2025-01-21 12:59:13 -06:00
Jason Rasmussen
ccf6d71c3c
refactor: view repository () 2025-01-21 18:26:13 +00:00
renovate[bot]
5171630b98
fix(deps): update machine-learning ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-21 13:17:55 -05:00
Jason Rasmussen
9a27a99cab
refactor: config repository ()
* refactor: access repository

* refactor: config repository
2025-01-21 13:13:09 -05:00
Daniel Dietzler
332a865ce6
refactor: migrate person repository to kysely ()
* refactor: migrate person repository to kysely

* `asVector` begone

* linting

* fix metadata faces

* update test

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-01-21 13:12:28 -05:00
renovate[bot]
0c152366ec
chore(deps): update docker/build-push-action action to v6.12.0 ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-21 12:34:14 -05:00
Alex
c35fd6cbdb
refactor: migrate album repo to kysely () 2025-01-21 11:24:48 -06:00
renovate[bot]
58d5cc1e4b
chore(deps): update dependency @types/node to ^22.10.7 ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-21 11:54:47 -05:00
Jason Rasmussen
9a1068c867
refactor: api key repository () 2025-01-21 10:45:59 -06:00
Jason Rasmussen
1745f48f3d
feat: better spec urls () 2025-01-21 10:26:52 -06:00
Jason Rasmussen
b0cdd8f475
refactor: access repository () 2025-01-21 10:09:24 -06:00
Alex
318dd32363
refactor: migrate stack repo to kysely ()
* wip

* wip: add tags

* wip

* sql

* pr feedback

* pr feedback

* ergonomic

* pr feedback

* pr feedback
2025-01-21 09:36:28 -06:00
Jeff Sloyer
887267b133
fix: broken link on monitoring page ()
* fix: broken link on monitoring page

* use absolute link
2025-01-20 22:20:03 -06:00
Tempest
1d0d4fc281
feat: Allow multiple ML models to be preloaded () 2025-01-20 21:39:14 -05:00
renovate[bot]
345791c0e6
chore(deps): update machine-learning () 2025-01-20 21:38:50 -05:00
Aaron Rodrigues
07698f8a40
fix: grammar on docs homepage ()
Fix grammar on index.tsx
2025-01-20 16:14:49 -06:00
Yan-Ru Huang
6fdb8f83f0
feat: Add rule on robots.txt to allow robots access og tags ()
Allow social media access og tags
2025-01-20 09:22:05 -05:00
Alex
a0b2c69b99
fix(mobile): cannot get new photos on Android () 2025-01-20 07:25:43 -06:00
David Wolff
70809c1465
fix(server): searching for multiple people yields false positives () 2025-01-19 13:01:21 -05:00
Robert Schütz
97ec3b147c
fix(deps): use node-addon-api v8 () 2025-01-19 11:26:25 -05:00
Alex
d249b63c99
fix(mobile): Cannot type date format on Samsung phone ()
* fix(mobile): Cannot type date format on Samsung phone

* use calendar
2025-01-18 21:56:18 +00:00
Alex
0f803a4f5e
fix(web): scrolling memory timeline reset position () 2025-01-18 20:09:38 +00:00
renovate[bot]
8eac82c5a3
chore(deps): update dependency eslint-config-prettier to v10 ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-18 14:04:46 -06:00
Daniel Dietzler
3d13da7f11
refactor: migrate shared-link repository to kysely ()
* refactor: migrate shared-link repository to kysely

* fix duplicate individual shared link return in getAll when there are more than 1 asset in the shared link

* using correct order condition

* using eb.table

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-01-18 13:25:15 -06:00
Sam Wilson
430d0b86ee
fix(docs): Update unraid.md to use correct image url ()
Update unraid.md to use correct image
2025-01-18 13:24:31 -06:00
imakida
f40fdce658
fix(web): Update asset count when deleting assets from person page ()
Call updateAssetCount() after deleting assets.
2025-01-17 20:51:38 -06:00
Jason Rasmussen
097183b31d
refactor: migrate partner repo to kysely () 2025-01-17 18:49:21 -05:00
Tempest
d5a9294eeb
feat: Add additional env variables to ML container ()
* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Update config.py

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Apply formatting

* minor update

* formatting

* root validator

* minor update

* minor update

* minor update

* change to support explicit models

* minor update

* minor change

* minor change

* minor change

* minor update

* add logs, resolve errors

* minor change

* add new enviornment variables

* minor revisons

* remove comments

* add additional variables to ML (fixed)

* add additional variables to ML (fixed)

* add additional variables to ML

* formatting

* remove comment

* remove mypy error

* remove unused module

* merge f strings
2025-01-17 17:22:05 -05:00
Alex
c5582fc8d9
chore: update ui 13 () 2025-01-17 20:03:11 +00:00
Alex
6993726d50
chore: generate sql for stack repo ()
* chore: generate sql for stack repo

* update sql
2025-01-17 20:02:28 +00:00
Zack Pollard
c821458e6c
refactor: migrate map repository to kysely ()
* chore: migrate map repository to kysely

* chore: add kysely codegen command, exclude from prettier and re-run it on latest migrations

* refactor: migrate map repository to kysely

* chore: dont log postgres notices
2025-01-17 09:14:42 -06:00
Tom Graham
efbc0cb192
fix(mobile): 14983 Images upload to shared album with common name ()
* Initial look at fixing issue where images are uploaded to the wrong album if a shared album conflicts with a local users album.

* Use owner instead of shared flag when fetching albums.

* Fix issue with refreshRemoteAlbums getting shared items twice and removed incorrect isShared comment.

Using `getAll(shared: true)` gets all shared albums the user can access (regardless of owner, despite the previous comment).

Using `getAll(shared: null)` gets all albums (incuding shared = true and shared = false). I presume the intent here was to get albums that were shared (and not mine), and not shared (ie: mine), but the logic is way off. It also just then combines them - so makes more sense to just get them in a single call.

* Fix formatting.

* Fixed tests.

* Revert "Fixed tests."

This reverts commit c38f5af5ac.

* Revert "Fix issue with refreshRemoteAlbums getting shared items twice and removed incorrect isShared comment."

This reverts commit 979ce90abf.

* Added comments to explain why filters behave the way they do for getAll() albums.

---------

Co-authored-by: Tom graham <tomg@questps.com.au>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-01-16 21:24:09 -06:00
Alex
fd99bd05cf
feat(mobile): share to mechanism ()
* setup ios

* chore: succesfully sent media to the app

* share from Android

* wip: navigate to share screen

* wip: UI for displaying upload candidate

* wip: logic

* wip: upload logic

* wip: up up up we got it up

* wip

* wip

* wip

* upload state

* feat: i18n

* fix: release build ios'

* feat: clear file cache

* pr feedback

* using const for checking download status

---------

Co-authored-by: Alex <alex@pop-os.localdomain>
2025-01-16 21:20:44 -06:00
Jason Rasmussen
3a2bf91889
refactor: replace link-button component with immich-ui buttons ()
* refactor: replace link-button component with immich-ui buttons

* minor styling tweak

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-01-16 16:03:04 +00:00
Alex
378bd3c993
refactor: migrate access repo to kysely () 2025-01-16 09:25:03 -06:00
Jason Rasmussen
89f40b311c
fix(web): map settings () 2025-01-16 10:05:14 -05:00
Jason Rasmussen
6ce1533117
fix: activity types () 2025-01-15 23:31:26 -05:00
Alex
0ce62d8efd
chore: update immich ui 12 ()
* chore: update ui 12

* chore: update ui 12
2025-01-15 23:02:49 +00:00
imakida
e151248b16
fix(web): end selection after click when choosing thumbnail, and notify ()
fix(web): Change viewMode state after updateThumbnail

Fixes 

viewMode state was being changed before updateThumbnail which caused
AssetGrid.handleSelectAssets() to continue, instead of returning.

Also added notification to notify user that the album cover was
updated.
2025-01-15 21:13:16 +00:00
Daniel Dietzler
a2207f2eef
refactor: migrate library repository to kysely () 2025-01-15 15:01:28 -06:00
Mattia Natali
81568dbda3
feat(web): Context menu scrolls on small devices ()
Context menu scrolls on small devices
2025-01-15 14:48:26 -06:00
Jason Rasmussen
a60da1ccab
refactor: migrate create user form to immich ui ()
* refactor: migrate create user form to immich ui

* minor styling tweak

* remove unintentional commit

* revert formating diff

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-01-15 15:09:19 -05:00
Jason Rasmussen
2d2966caa0
chore: use port 2286 for the auth server () 2025-01-15 15:03:20 -05:00
Alex
7d087371b5
chore: sql sync ()
* chore: sql sync

* chore: sql sync
2025-01-15 19:55:29 +00:00
Jason Rasmussen
93e2545275
refactor: migrate memory to kysely () 2025-01-15 11:34:11 -05:00
renovate[bot]
43b3181f45
chore(deps): update base-image to v20250114 (major) ()
chore(deps): update base-image to v20250114

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-14 19:58:02 -05:00
Mert
2903ad8156
refactor(server): migrate album-user repo to kysely () 2025-01-14 19:27:16 -05:00
Tempest
c5476a99b1
feat: Add additional env variables for Machine Learning ()
* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Update config.py

* Add additional variables to preload part ML models

* Add additional variables to preload part ML models

* Apply formatting

* minor update

* formatting

* root validator

* minor update

* minor update

* minor update

* change to support explicit models

* minor update

* minor change

* minor change

* minor change

* minor update

* add logs, resolve errors

* minor change

* add new enviornment variables

* minor revisons

* remove comments
2025-01-14 22:06:01 +00:00
Jason Rasmussen
5d2e421800
chore: add renovate config for immich-ui () 2025-01-14 21:01:21 +01:00
Jason Rasmussen
b9000d8770
feat(web): immich-ui components ()
* feat: add immich-ui to auth pages

* fix: welcome icon

* styling

* fix: mobile padding

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-01-14 14:53:33 -05:00
renovate[bot]
073fccb517
chore(deps): update python:3.11-slim-bookworm docker digest to 6ed5bff ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-14 18:33:27 +00:00
renovate[bot]
3e11b90851
chore(deps): update node.js to v22.13.0 ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-14 13:20:12 -05:00
renovate[bot]
19e2504583
fix(deps): update machine-learning () 2025-01-14 10:19:01 -05:00
Mattia Natali
4279cd6e1e
feat(web): Slideshow is enabled everywhere. It no longer needs assetStore. ()
Slideshow no longer needs assetStore. It is enabled everywhere

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-01-14 14:24:58 +00:00
Jason Rasmussen
f70ee3f350
refactor: auth pages () 2025-01-14 08:14:28 -06:00
Jason Rasmussen
9e1651ef66
fix: bump web dependencies () 2025-01-13 23:40:19 -05:00
Alex
a35af2b242
refactor: migrate move repository to kysely ()
* refactor: migrate move repository to kysely

* fix: tests

* fix: tests
2025-01-13 23:22:03 -05:00
Yonathan Randolph
fc99c5f530
chore(server): avoid copying sources in dev ()
* chore(server): avoid copying sources in dev

Add a dev target to the web and server Dockerfiles, and change docker-compose.dev.yml to use the dev target. The dev target avoids copying files so that the docker image is smaller.

* chore: respond to PR: don't add dev target

web/Dockerfile is only used by docker-compose.dev.yml so a dev target is redundant. Instead, just remove the copy

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-01-13 22:00:55 -05:00
Weblate (bot)
e978b8c685
chore(web): update translations ()
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/el/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ms/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Andreas Johansen <andreas@josern.com>
Co-authored-by: AtmosphericIgnition <github.vvwnk@passmail.net>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: Damian Krysta <krypton9208@gmail.com>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: Dmitry Banny <dj.icecore@gmail.com>
Co-authored-by: Dominik Mielcarek <weblate@bmx.email>
Co-authored-by: Erik Järlestrand <erik.jarlestrand@gmail.com>
Co-authored-by: Filip Hanes <filip@hanes.tech>
Co-authored-by: Gerardo Doro <gerrydoro97@gmail.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Indrek Haav <IndrekHaav@users.noreply.hosted.weblate.org>
Co-authored-by: Jendrik Köhler <jendrik.koehler11@gmail.com>
Co-authored-by: Jordi Masip <jordi@masip.cat>
Co-authored-by: Kenji Opdam <kenji.opdam@gmail.com>
Co-authored-by: Krisztián <fabkrisz5+hosted_weblate_org@gmail.com>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Michal Micech <michal.micech@gmail.com>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: Milan Šalka <salka.milan@googlemail.com>
Co-authored-by: Milo Germanus <milogermanus@gmail.com>
Co-authored-by: Máté Molnár <matmolni@gmail.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Rui <rui-costa@users.noreply.hosted.weblate.org>
Co-authored-by: Santiago <santiwever@hotmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Vykintas Vyšniauskas <vykintasv@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: chamdim <chamdim@protonmail.com>
Co-authored-by: grgergo <gergo_g@proton.me>
Co-authored-by: rezi nagro <rezinagro@hotmail.com>
Co-authored-by: scudo <whiteshield.tg@protonmail.com>
Co-authored-by: stelle <itsazripp2@gmail.com>
Co-authored-by: thehijacker <thehijacker@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: Пламен Марков <tsmhunter@gmail.com>
Co-authored-by: தமிழ்நேரம் <anishprabu.t@gmail.com>
2025-01-14 02:57:54 +00:00
Zer0x00
3b06220219
feat: Upgrade devcontainer setup ()
* Feat: Upgrade devcontainer

* Style: Format devcontainer.json

* Chore: Remove settings from devcontainer

* chore: add shebang

* chore: fix shellcheck

---------

Co-authored-by: Bünyamin Olgun <buenyamin.olgun@cancom.de>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-01-13 21:42:32 -05:00
renovate[bot]
dc53e2a9b9
chore(deps): update docker.io/redis:6.2-alpine docker digest to 905c4ee ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-13 21:32:52 -05:00
Daniel Dietzler
28b08ed417
refactor: migrate audit repository to kysely () 2025-01-13 21:23:12 -05:00
Matthew Momjian
b74f013b53
fix(docs): database name for restore commands ()
* cleanup dbname

* 2

* Update database-queries.md

* Update backup-and-restore.md

* Update backup-and-restore.md
2025-01-13 20:57:19 -05:00
Alex
79726acc72
refactor: migrate sessions repository to kysely ()
* wip: search

* wip: getByToken

* wip: getByToken

* wip: getByUserId

* wip: create/update/delete

* remove unused code

* clean up and pr feedback

* fix: test

* fix: e2e test

* pr feedback
2025-01-13 20:45:52 -05:00
Jason Rasmussen
36eef9807b
fix: version history sql () 2025-01-14 01:38:11 +00:00
Alex
3da750117f
refactor: migrate user repository to kysely ()
* refactor: migrate user repository to kysely

* refactor: migrate user repository to kysely

* refactor: migrate user repository to kysely

* refactor: migrate user repository to kysely

* fix: test

* clean up

* fix: metadata retrieval bug

* use correct typeing for upsert metadata

* pr feedback

* pr feedback

* fix: add deletedAt check

* fix: get non deleted user by default

* remove console.log

* fix: stop kysely after command finishes

* final clean up

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-01-13 20:30:34 -05:00
Dr-Electron
a6c8eb57f1
fix(docs): fix admonition in mobile section ()
fix(docs): Fix admonition in mobile section
2025-01-12 21:12:26 -06:00
Austin Dudzik
efe4396e54
fix(docs): Fix link label to refer to correct location on page ()
Fix link label to refer to correct location on page
2025-01-12 09:51:55 -06:00
Desmond Cox
c4a8fdf0f3
fix(cli): handle folders with single quotes ()
* fix(cli): handle folders with single quotes

* fix(cli): skip single quote test on Windows

* fix(cli): support double quote and backtick as well
2025-01-12 15:44:51 +00:00
Jin Xuan
abf5b0afe1
fix(web): mismatched deviceAssetId when uploading images ()
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-01-12 04:28:39 +00:00
Ferdinand Holzer
77d4eb8787
fix(web): render whitespaces in file names and paths on photos and folders pages correctly () 2025-01-11 22:10:33 -06:00
bo0tzz
e7abfe3067
docs: clarify filesystem backup paths ()
* docs: clarify filesystem backup paths

* fix: backticks
2025-01-11 22:10:23 -06:00
Matthew Momjian
be1187bc46
chore(docs): clarify experimental network features ()
* auth

* URL switch

* mobile app

* caps

* headers, app changes

* oxford comma

* Match case to other use in Immich

* add url

* asset download also causes issues
2025-01-11 22:09:54 -06:00
Mert
fef36e6a37
chore(server)!: default max bitrate unit to kbps ()
default unit to kbps
2025-01-11 22:09:19 -06:00
imakida
a39fbcb8ac
feat: toggle password visibility on shared albums ()
* feat: toggle password visibility on shared albums

* feat: toggle password visibility on shared albums

* use password-field component

* remove div wrapping PasswordField

---------

Co-authored-by: Ian <ian@zetabyte.dev>
2025-01-11 22:08:08 -06:00
renovate[bot]
ca75bba3b0
chore(deps): update prom/prometheus docker digest to 6559acb ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 22:06:45 -06:00
renovate[bot]
f3dbbfa16d
chore(deps): update redis:6.2-alpine docker digest to 905c4ee ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 22:06:30 -06:00
renovate[bot]
8b4390c247
chore(deps): update dependency @types/node to ^22.10.5 ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 22:06:18 -06:00
renovate[bot]
581d32269d
fix(deps): update machine-learning ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 22:05:20 -06:00
renovate[bot]
2b76112014
chore(deps): update github-actions ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 22:04:40 -06:00
renovate[bot]
2301affd7e
chore(deps): update node.js to v22.13.0 ()
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 22:04:22 -06:00
renovate[bot]
2f9a66e961
chore(config): migrate renovate config ()
chore(config): migrate config renovate.json

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 22:02:12 -06:00
renovate[bot]
0b8cfc6b82
chore(deps): update base-image to v20250107 (major) ()
chore(deps): update base-image to v20250107

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 23:00:50 -05:00
bo0tzz
cab201270c
chore: migrate version-history repository to kysely ()
* chore: generate sql for version-history repository

* chore: run kysely-codegen

* chore: migrate version-history repository to kysely

* fix: change `| null` to `| undefined`

* chore: clean up unneeded async
2025-01-11 20:12:34 +00:00
Mert
beb31cebed
fix(mobile): don't crash android app when video player throws exception ()
update commit ref
2025-01-10 19:20:56 -06:00
Jason Rasmussen
e51091b6e5
refactor: migrate trash to kysely () 2025-01-10 18:48:21 -05:00
Jason Rasmussen
cc6a8b0c74
refactor: migrate system metadata to kysely () 2025-01-10 14:20:15 -05:00
Jason Rasmussen
930f979960
feat: migration api keys to use kysely () 2025-01-10 14:02:12 -05:00
Jin Xuan
3030e74fc3
fix(web): escape key to clear selection and go to previous page () () 2025-01-10 15:27:35 +00:00
Tom Graham
f9db60f25b
fix(mobile): 15072 Fix issue with boolean filters filtering out results when they shouldn't ()
Fix issue with boolean filters filtering out results when they shouldn't.

Co-authored-by: Tom graham <tomg@questps.com.au>
2025-01-10 09:18:40 -06:00
Daniel Dietzler
7d50d3032b
refactor: activity queries () 2025-01-09 18:14:36 -05:00
Daniel Dietzler
1fb2b3f899
refactor: migrate activity repo to kysely ()
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-01-09 14:31:46 -05:00
Mert
2e12c46980
refactor(server): use kysely () 2025-01-09 11:15:41 -05:00
Alex
af3f12ebba
Merge branch 'main' into feat/favorite-people 2025-01-07 10:27:51 -06:00
Arno
34c7405177
Merge branch 'main' into feat/favorite-people 2025-01-02 08:45:41 +01:00
Arno
d052c0b8c6
Merge branch 'main' into feat/favorite-people 2025-01-01 19:40:43 +01:00
Arno Wiest
169f0906f4 fixed open-api and sql checks 2025-01-01 18:41:00 +01:00
Arno Wiest
1ac916b2cd fixed person service unit tests 2025-01-01 18:05:09 +01:00
Arno
13f406d80b feat(server): refactored for better readability 2024-12-28 16:21:49 +01:00
Arno Wiest
78c0cadd78 feat(server): added unit test for favorite people 2024-12-24 10:44:07 +01:00
Arno Wiest
87fa163bdd feat: added ability to mark people as favorite, which get sorted to the front of the people list 2024-12-22 17:34:10 +01:00
547 changed files with 23644 additions and 15481 deletions

2
.devcontainer/.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
.env
library

View file

@ -1,2 +1,16 @@
ARG BASEIMAGE=mcr.microsoft.com/devcontainers/typescript-node:22@sha256:9791f4aa527774bc370c6bd2f6705ce5a686f1e6f204badd8dfaacce28c631ae
FROM ${BASEIMAGE}
# Flutter SDK
# https://flutter.dev/docs/development/tools/sdk/releases?tab=linux
ENV FLUTTER_CHANNEL="stable"
ENV FLUTTER_VERSION="3.24.5"
ENV FLUTTER_HOME=/flutter
ENV PATH=${PATH}:${FLUTTER_HOME}/bin
# Flutter SDK
RUN mkdir -p ${FLUTTER_HOME} \
&& curl -C - --output flutter.tar.xz https://storage.googleapis.com/flutter_infra_release/releases/${FLUTTER_CHANNEL}/linux/flutter_linux_${FLUTTER_VERSION}-${FLUTTER_CHANNEL}.tar.xz \
&& tar -xf flutter.tar.xz --strip-components=1 -C ${FLUTTER_HOME} \
&& rm flutter.tar.xz \
&& chown -R 1000:1000 ${FLUTTER_HOME}

View file

@ -1,20 +1,26 @@
{
"name": "Immich devcontainers",
"build": {
"dockerfile": "Dockerfile",
"args": {
"BASEIMAGE": "mcr.microsoft.com/devcontainers/typescript-node:22"
}
},
"customizations": {
"vscode": {
"extensions": [
"svelte.svelte-vscode"
]
}
},
"forwardPorts": [],
"postCreateCommand": "make install-all",
"remoteUser": "node"
"name": "Immich",
"service": "immich-devcontainer",
"dockerComposeFile": [
"docker-compose.yml",
"../docker/docker-compose.dev.yml"
],
"customizations": {
"vscode": {
"extensions": [
"Dart-Code.dart-code",
"Dart-Code.flutter",
"dbaeumer.vscode-eslint",
"dcmdev.dcm-vscode-extension",
"esbenp.prettier-vscode",
"svelte.svelte-vscode"
]
}
},
"forwardPorts": [],
"initializeCommand": "bash .devcontainer/scripts/initializeCommand.sh",
"onCreateCommand": "bash .devcontainer/scripts/onCreateCommand.sh",
"overrideCommand": true,
"workspaceFolder": "/immich",
"remoteUser": "node"
}

View file

@ -0,0 +1,8 @@
services:
immich-devcontainer:
build:
dockerfile: Dockerfile
extra_hosts:
- 'host.docker.internal:host-gateway'
volumes:
- ..:/immich:cached

View file

@ -0,0 +1,6 @@
#!/bin/bash
# If .env file does not exist, create it by copying example.env from the docker folder
if [ ! -f ".devcontainer/.env" ]; then
cp docker/example.env .devcontainer/.env
fi

View file

@ -0,0 +1,25 @@
#!/bin/bash
# Enable multiarch for arm64 if necessary
if [ "$(dpkg --print-architecture)" = "arm64" ]; then
sudo dpkg --add-architecture amd64 && \
sudo apt-get update && \
sudo apt-get install -y --no-install-recommends \
qemu-user-static \
libc6:amd64 \
libstdc++6:amd64 \
libgcc1:amd64
fi
# Install DCM
wget -qO- https://dcm.dev/pgp-key.public | sudo gpg --dearmor -o /usr/share/keyrings/dcm.gpg
sudo echo 'deb [signed-by=/usr/share/keyrings/dcm.gpg arch=amd64] https://dcm.dev/debian stable main' | sudo tee /etc/apt/sources.list.d/dart_stable.list
sudo apt-get update
sudo apt-get install dcm
dart --disable-analytics
# Install immich
cd /immich || exit
make install-all

View file

@ -56,7 +56,7 @@ jobs:
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3.2.0
uses: docker/setup-qemu-action@v3.3.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.8.0
@ -88,7 +88,7 @@ jobs:
type=raw,value=latest,enable=${{ github.event_name == 'release' }}
- name: Build and push image
uses: docker/build-push-action@v6.10.0
uses: docker/build-push-action@v6.12.0
with:
file: cli/Dockerfile
platforms: linux/amd64,linux/arm64

View file

@ -122,7 +122,7 @@ jobs:
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3.2.0
uses: docker/setup-qemu-action@v3.3.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.8.0
@ -174,7 +174,7 @@ jobs:
fi
- name: Build and push image
uses: docker/build-push-action@v6.10.0
uses: docker/build-push-action@v6.12.0
with:
context: ${{ env.context }}
file: ${{ env.file }}
@ -213,7 +213,7 @@ jobs:
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3.2.0
uses: docker/setup-qemu-action@v3.3.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.8.0
@ -265,7 +265,7 @@ jobs:
fi
- name: Build and push image
uses: docker/build-push-action@v6.10.0
uses: docker/build-push-action@v6.12.0
with:
context: ${{ env.context }}
file: ${{ env.file }}

View file

@ -68,10 +68,17 @@ jobs:
needs: build_mobile
steps:
- name: Generate a token
id: generate-token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout
uses: actions/checkout@v4
with:
token: ${{ secrets.ORG_RELEASE_TOKEN }}
token: ${{ steps.generate-token.outputs.token }}
- name: Download APK
uses: actions/download-artifact@v4

View file

@ -1 +1 @@
22.12.0
22.13.1

View file

@ -1,4 +1,4 @@
FROM node:22.12.0-alpine3.20@sha256:96cc8323e25c8cc6ddcb8b965e135cfd57846e8003ec0d7bcec16c5fd5f6d39f AS core
FROM node:22.13.1-alpine3.20@sha256:c52e20859a92b3eccbd3a36c5e1a90adc20617d8d421d65e8a622e87b5dac963 AS core
WORKDIR /usr/src/open-api/typescript-sdk
COPY open-api/typescript-sdk/package*.json open-api/typescript-sdk/tsconfig*.json ./

1111
cli/package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
{
"name": "@immich/cli",
"version": "2.2.40",
"version": "2.2.47",
"description": "Command Line Interface (CLI) for Immich",
"type": "module",
"exports": "./dist/index.js",
@ -20,15 +20,15 @@
"@types/cli-progress": "^3.11.0",
"@types/lodash-es": "^4.17.12",
"@types/mock-fs": "^4.13.1",
"@types/node": "^22.10.2",
"@types/node": "^22.10.9",
"@typescript-eslint/eslint-plugin": "^8.15.0",
"@typescript-eslint/parser": "^8.15.0",
"@vitest/coverage-v8": "^2.0.5",
"@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": "^9.1.0",
"eslint-config-prettier": "^10.0.0",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-unicorn": "^56.0.1",
"globals": "^15.9.0",
@ -36,9 +36,9 @@
"prettier": "^3.2.5",
"prettier-plugin-organize-imports": "^4.0.0",
"typescript": "^5.3.3",
"vite": "^5.0.12",
"vite": "^6.0.0",
"vite-tsconfig-paths": "^5.0.0",
"vitest": "^2.0.5",
"vitest": "^3.0.0",
"vitest-fetch-mock": "^0.4.0",
"yaml": "^2.3.1"
},
@ -67,6 +67,6 @@
"lodash-es": "^4.17.21"
},
"volta": {
"node": "22.12.0"
"node": "22.13.1"
}
}

View file

@ -6,6 +6,7 @@ interface Test {
test: string;
options: Omit<CrawlOptions, 'extensions'>;
files: Record<string, boolean>;
skipOnWin32?: boolean;
}
const cwd = process.cwd();
@ -48,6 +49,18 @@ const tests: Test[] = [
'/photos/image.jpg': true,
},
},
{
test: 'should crawl folders with quotes',
options: {
pathsToCrawl: ["/photo's/", '/photo"s/', '/photo`s/'],
},
files: {
"/photo's/image1.jpg": true,
'/photo"s/image2.jpg': true,
'/photo`s/image3.jpg': true,
},
skipOnWin32: true, // single quote interferes with mockfs root on Windows
},
{
test: 'should crawl a single file',
options: {
@ -270,8 +283,12 @@ describe('crawl', () => {
});
describe('crawl', () => {
for (const { test, options, files } of tests) {
it(test, async () => {
for (const { test: name, options, files, skipOnWin32 } of tests) {
if (process.platform === 'win32' && skipOnWin32) {
test.skip(name);
continue;
}
it(name, async () => {
// The file contents is the same as the path.
mockfs(Object.fromEntries(Object.keys(files).map((file) => [file, file])));

View file

@ -146,7 +146,7 @@ export const crawl = async (options: CrawlOptions): Promise<string[]> => {
}
const searchPatterns = patterns.map((pattern) => {
let escapedPattern = pattern;
let escapedPattern = pattern.replaceAll("'", "[']").replaceAll('"', '["]').replaceAll('`', '[`]');
if (recursive) {
escapedPattern = escapedPattern + '/**';
}

View file

@ -71,6 +71,7 @@ services:
- ../web:/usr/src/app
- ../i18n:/usr/src/i18n
- ../open-api/:/usr/src/open-api/
# - ../../ui:/usr/ui
- /usr/src/app/node_modules
ulimits:
nofile:
@ -106,7 +107,7 @@ services:
redis:
container_name: immich_redis
image: redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8
image: redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
healthcheck:
test: redis-cli ping || exit 1

View file

@ -47,7 +47,7 @@ services:
redis:
container_name: immich_redis
image: redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8
image: redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
healthcheck:
test: redis-cli ping || exit 1
restart: always
@ -91,7 +91,7 @@ services:
container_name: immich_prometheus
ports:
- 9090:9090
image: prom/prometheus@sha256:565ee86501224ebbb98fc10b332fa54440b100469924003359edf49cbce374bd
image: prom/prometheus@sha256:6559acbd5d770b15bb3c954629ce190ac3cbbdb2b7f1c30f0385c4e05104e218
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus-data:/prometheus

View file

@ -48,7 +48,7 @@ services:
redis:
container_name: immich_redis
image: docker.io/redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8
image: docker.io/redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
healthcheck:
test: redis-cli ping || exit 1
restart: always

View file

@ -1 +1 @@
22.12.0
22.13.1

View file

@ -53,10 +53,18 @@ On iOS (iPhone and iPad), the operating system determines if a particular app ca
- Disable Background App Refresh for apps that don't need background tasks to run. This will reduce the competition for background task invocation for Immich.
- Use the Immich app more often.
### Why are features not working with a self-signed cert or mTLS?
### Why are features in the mobile app not working with a self-signed certificate, Basic Auth, custom headers, or mutual TLS?
Due to limitations in the upstream app/video library, using a self-signed TLS certificate or mutual TLS may break video playback or asset upload (both foreground and/or background).
We recommend using a real SSL certificate from a free provider, for example [Let's Encrypt](https://letsencrypt.org/).
These network features are experimental. They often do not work with video playback, asset upload or download, and other features.
Many of these limitations are tracked in [#15230](https://github.com/immich-app/immich/issues/15230).
Instead of these experimental features, we recommend using the URL switching feature, a VPN, or a [free trusted SSL certificate](https://letsencrypt.org/) for your domain.
We are not actively developing these features and will not be able to provide support, but welcome contributions to improve them.
Please discuss any large PRs with our dev team to ensure your time is not wasted.
### Why isn't the mobile app updated yet?
The app stores can take a few days to approve new builds of the app. If you're impatient, android APKs can be downloaded from the GitHub releases.
---
@ -156,6 +164,35 @@ For example, say you have existing transcodes with the policy "Videos higher tha
No. Our design principle is that the original assets should always be untouched.
### How can I mount a CIFS/Samba volume within Docker?
If you aren't able to or prefer not to mount Samba on the host (such as Windows environment), you can mount the volume within Docker.
Below is an example in the `docker-compose.yml`.
Change your username, password, local IP, and share name, and see below where the line `- originals:/usr/src/app/originals`,
corrolates to the section where the volume `originals` was created. You can call this whatever you like, and map it to the docker container as you like.
For example you could change `originals:` to `Photos:`, and change `- originals:/usr/src/app/originals` to `Photos:/usr/src/app/photos`.
```diff
...
services:
immich-server:
...
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
- /etc/localtime:/etc/localtime:ro
+ - originals:/usr/src/app/originals
...
volumes:
model-cache:
+ originals:
+ driver_opts:
+ type: cifs
+ o: 'iocharset=utf8,username=USERNAMEHERE,password=PASSWORDHERE,rw' # change to `ro` if read only desired
+ device: '//localipaddress/sharename'
```
---
## Albums
@ -278,7 +315,7 @@ The initial backup is the most intensive due to the number of jobs running. The
- For facial recognition on new images to work properly, You must re-run the Face Detection job for all images after this.
- At the container level, you can [set resource constraints](/docs/FAQ#can-i-limit-cpu-and-ram-usage) to lower usage further.
- It's recommended to only apply these constraints _after_ taking some of the measures here for best performance.
- If these changes are not enough, see [below](/docs/FAQ#how-can-i-disable-machine-learning) for instructions on how to disable machine learning.
- If these changes are not enough, see [above](/docs/FAQ#how-can-i-disable-machine-learning) for instructions on how to disable machine learning.
### Can I limit CPU and RAM usage?
@ -421,7 +458,7 @@ A result of `on` means that checksums are enabled.
<summary>Check if checksums are enabled</summary>
```bash
docker exec -it immich_postgres psql --dbname=immich --username=<DB_USERNAME> --command="show data_checksums"
docker exec -it immich_postgres psql --dbname=postgres --username=<DB_USERNAME> --command="show data_checksums"
data_checksums
----------------
on
@ -436,7 +473,7 @@ If checksums are enabled, you can check the status of the database with the foll
<summary>Check for database corruption</summary>
```bash
docker exec -it immich_postgres psql --dbname=immich --username=<DB_USERNAME> --command="SELECT datname, checksum_failures, checksum_last_failure FROM pg_stat_database WHERE datname IS NOT NULL"
docker exec -it immich_postgres psql --dbname=postgres --username=<DB_USERNAME> --command="SELECT datname, checksum_failures, checksum_last_failure FROM pg_stat_database WHERE datname IS NOT NULL"
datname | checksum_failures | checksum_last_failure
-----------+-------------------+-----------------------
postgres | 0 |

View file

@ -55,7 +55,7 @@ sleep 10 # Wait for Postgres server to start up
# Check the database user if you deviated from the default
gunzip < "/path/to/backup/dump.sql.gz" \
| sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" \
| docker exec -i immich_postgres psql --username=postgres # Restore Backup
| docker exec -i immich_postgres psql --dbname=postgres --username=<DB_USERNAME> # Restore Backup
docker compose up -d # Start remainder of Immich apps
```
@ -70,18 +70,18 @@ docker compose up -d # Start remainder of Immich apps
docker compose down -v # CAUTION! Deletes all Immich data to start from scratch
## Uncomment the next line and replace DB_DATA_LOCATION with your Postgres path to permanently reset the Postgres database
# Remove-Item -Recurse -Force DB_DATA_LOCATION # CAUTION! Deletes all Immich data to start from scratch
## You should mount the backup (as a volume, example: - 'C:\path\to\backup\dump.sql':/dump.sql) into the immich_postgres container using the docker-compose.yml
docker compose pull # Update to latest version of Immich (if desired)
docker compose create # Create Docker containers for Immich apps without running them
docker start immich_postgres # Start Postgres server
sleep 10 # Wait for Postgres server to start up
docker exec -it immich_postgres bash # Enter the Docker shell and run the following command
# Check the database user if you deviated from the default
cat "/dump.sql" \
## You should mount the backup (as a volume, example: `- 'C:\path\to\backup\dump.sql:/dump.sql'`) into the immich_postgres container using the docker-compose.yml
docker compose pull # Update to latest version of Immich (if desired)
docker compose create # Create Docker containers for Immich apps without running them
docker start immich_postgres # Start Postgres server
sleep 10 # Wait for Postgres server to start up
docker exec -it immich_postgres bash # Enter the Docker shell and run the following command
# Check the database user if you deviated from the default. If your backup ends in `.gz`, replace `cat` with `gunzip`
cat < "/dump.sql" \
| sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" \
| psql --username=postgres # Restore Backup
exit # Exit the Docker shell
docker compose up -d # Start remainder of Immich apps
| psql --dbname=postgres --username=<DB_USERNAME> # Restore Backup
exit # Exit the Docker shell
docker compose up -d # Start remainder of Immich apps
```
</TabItem>
@ -95,12 +95,14 @@ Some deployment methods make it difficult to start the database without also sta
## Filesystem
Immich stores two types of content in the filesystem: (1) original, unmodified assets (photos and videos), and (2) generated content. Only the original content needs to be backed-up, which is stored in the following folders:
Immich stores two types of content in the filesystem: (a) original, unmodified assets (photos and videos), and (b) generated content. We recommend backing up the entire contents of `UPLOAD_LOCATION`, but only the original content is critical, which is stored in the following folders:
1. `UPLOAD_LOCATION/library`
2. `UPLOAD_LOCATION/upload`
3. `UPLOAD_LOCATION/profile`
If you choose to back up only those folders, you will need to rerun the transcoding and thumbnail generation jobs for all assets after you restore from a backup.
:::caution
If you moved some of these folders onto a different storage device, such as `profile/`, make sure to adjust the backup path to match your setup
:::

View file

@ -63,6 +63,17 @@ If you only want to do web development connected to an existing, remote backend,
IMMICH_SERVER_URL=https://demo.immich.app/ npm run dev
```
#### `@immich/ui`
To see local changes to `@immich/ui` in Immich, do the following:
1. Install `@immich/ui` as a sibling to `immich/`, for example `/home/user/immich` and `/home/user/ui`
1. Build the `@immich/ui` project via `npm run build`
1. Uncomment the corresponding volume in web service of the `docker/docker-compose.dev.yaml` file (`../../ui:/usr/ui`)
1. Uncomment the corresponding alias in the `web/vite.config.js` file (`'@immich/ui': path.resolve(\_\_dirname, '../../ui')`)
1. Start up the stack via `make dev`
1. After making changes in `@immich/ui`, rebuild it (`npm run build`)
### Mobile app
The mobile app `(/mobile)` will required Flutter toolchain 3.13.x to be installed on your system.

View file

@ -36,11 +36,15 @@ You can enable automatic backup on supported devices. For more information see [
If you have a large number of photos on the device, and you would prefer not to backup all the photos, then it might be prudent to only backup selected photos from device to the Immich server.
First, you need to enable the Storage Indicator in your app's settings. Navigate to **<ins>Settings -> Photo Grid</ins>** and enable **"Show Storage indicator on asset tiles"**; this makes it easy to distinguish local-only assets and synced assets.
:::note
This will enable a small cloud icon on the bottom right corner of the asset tile, indicating that the asset is synced to the server:
1. <Icon path={mdiCloudOffOutline} size={1} /> - Local-only asset; not synced to the server
2. <Icon path={mdiCloudCheckOutline} size={1} /> - Asset is synced to the server :::
2. <Icon path={mdiCloudCheckOutline} size={1} /> - Asset is synced to the server
:::
Now make sure that the local album is selected in the backup screen (steps 1-2 above). You can find these albums listed in **<ins>Library -> On this device</ins>**. To selectively upload photos from these albums, simply select the local-only photos and tap on "Upload" button in the dynamic bottom menu.

View file

@ -68,7 +68,7 @@ After bringing down the containers with `docker compose down` and back up with `
:::note
To see exactly what metrics are made available, you can additionally add `8081:8081` to the server container's ports and `8082:8082` to the microservices container's ports.
Visiting the `/metrics` endpoint for these services will show the same raw data that Prometheus collects.
To configure these ports see [`IMMICH_API_METRICS_PORT` & `IMMICH_MICROSERVICES_METRICS_PORT`](../install/environment-variables/#general).
To configure these ports see [`IMMICH_API_METRICS_PORT` & `IMMICH_MICROSERVICES_METRICS_PORT`](/docs/install/environment-variables/#general).
:::
### Usage

View file

@ -49,5 +49,3 @@ The `thumbs/` folder contains both the small thumbnails displayed in the timelin
The storage metrics of the Immich server will track available storage at `UPLOAD_LOCATION`, so the administrator must set up some sort of monitoring to ensure the storage does not run out of space. The `profile/` folder is much smaller, usually less than 1 MB.
:::
Thanks to [Jrasm91](https://github.com/immich-app/immich/discussions/2110#discussioncomment-5477767) for writing the guide.

View file

@ -5,9 +5,9 @@ Keep in mind that mucking around in the database might set the moon on fire. Avo
:::
:::tip
Run `docker exec -it immich_postgres psql --dbname=immich --username=<DB_USERNAME>` to connect to the database via the container directly.
Run `docker exec -it immich_postgres psql --dbname=<DB_DATABASE_NAME> --username=<DB_USERNAME>` to connect to the database via the container directly.
(Replace `<DB_USERNAME>` with the value from your [`.env` file](/docs/install/environment-variables#database)).
(Replace `<DB_DATABASE_NAME>` and `<DB_USERNAME>` with the values from your [`.env` file](/docs/install/environment-variables#database)).
:::
## Assets

View file

@ -148,24 +148,26 @@ Redis (Sentinel) URL example JSON before encoding:
## Machine Learning
| Variable | Description | Default | Containers |
| :-------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- | :-----------------------------: | :--------------- |
| `MACHINE_LEARNING_MODEL_TTL` | Inactivity time (s) before a model is unloaded (disabled if \<= 0) | `300` | machine learning |
| `MACHINE_LEARNING_MODEL_TTL_POLL_S` | Interval (s) between checks for the model TTL (disabled if \<= 0) | `10` | machine learning |
| `MACHINE_LEARNING_CACHE_FOLDER` | Directory where models are downloaded | `/cache` | machine learning |
| `MACHINE_LEARNING_REQUEST_THREADS`<sup>\*1</sup> | Thread count of the request thread pool (disabled if \<= 0) | number of CPU cores | machine learning |
| `MACHINE_LEARNING_MODEL_INTER_OP_THREADS` | Number of parallel model operations | `1` | machine learning |
| `MACHINE_LEARNING_MODEL_INTRA_OP_THREADS` | Number of threads for each model operation | `2` | machine learning |
| `MACHINE_LEARNING_WORKERS`<sup>\*2</sup> | Number of worker processes to spawn | `1` | machine learning |
| `MACHINE_LEARNING_HTTP_KEEPALIVE_TIMEOUT_S`<sup>\*3</sup> | HTTP Keep-alive time in seconds | `2` | machine learning |
| `MACHINE_LEARNING_WORKER_TIMEOUT` | Maximum time (s) of unresponsiveness before a worker is killed | `120` (`300` if using OpenVINO) | machine learning |
| `MACHINE_LEARNING_PRELOAD__CLIP` | Name of a CLIP model to be preloaded and kept in cache | | machine learning |
| `MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION` | Name of a facial recognition model to be preloaded and kept in cache | | machine learning |
| `MACHINE_LEARNING_ANN` | Enable ARM-NN hardware acceleration if supported | `True` | machine learning |
| `MACHINE_LEARNING_ANN_FP16_TURBO` | Execute operations in FP16 precision: increasing speed, reducing precision (applies only to ARM-NN) | `False` | machine learning |
| `MACHINE_LEARNING_ANN_TUNING_LEVEL` | ARM-NN GPU tuning level (1: rapid, 2: normal, 3: exhaustive) | `2` | machine learning |
| `MACHINE_LEARNING_DEVICE_IDS`<sup>\*4</sup> | Device IDs to use in multi-GPU environments | `0` | machine learning |
| `MACHINE_LEARNING_MAX_BATCH_SIZE__FACIAL_RECOGNITION` | Set the maximum number of faces that will be processed at once by the facial recognition model | None (`1` if using OpenVINO) | machine learning |
| Variable | Description | Default | Containers |
| :---------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- | :-----------------------------: | :--------------- |
| `MACHINE_LEARNING_MODEL_TTL` | Inactivity time (s) before a model is unloaded (disabled if \<= 0) | `300` | machine learning |
| `MACHINE_LEARNING_MODEL_TTL_POLL_S` | Interval (s) between checks for the model TTL (disabled if \<= 0) | `10` | machine learning |
| `MACHINE_LEARNING_CACHE_FOLDER` | Directory where models are downloaded | `/cache` | machine learning |
| `MACHINE_LEARNING_REQUEST_THREADS`<sup>\*1</sup> | Thread count of the request thread pool (disabled if \<= 0) | number of CPU cores | machine learning |
| `MACHINE_LEARNING_MODEL_INTER_OP_THREADS` | Number of parallel model operations | `1` | machine learning |
| `MACHINE_LEARNING_MODEL_INTRA_OP_THREADS` | Number of threads for each model operation | `2` | machine learning |
| `MACHINE_LEARNING_WORKERS`<sup>\*2</sup> | Number of worker processes to spawn | `1` | machine learning |
| `MACHINE_LEARNING_HTTP_KEEPALIVE_TIMEOUT_S`<sup>\*3</sup> | HTTP Keep-alive time in seconds | `2` | machine learning |
| `MACHINE_LEARNING_WORKER_TIMEOUT` | Maximum time (s) of unresponsiveness before a worker is killed | `120` (`300` if using OpenVINO) | machine learning |
| `MACHINE_LEARNING_PRELOAD__CLIP__TEXTUAL` | Comma-separated list of (textual) CLIP model(s) to preload and cache | | machine learning |
| `MACHINE_LEARNING_PRELOAD__CLIP__VISUAL` | Comma-separated list of (visual) CLIP model(s) to preload and cache | | machine learning |
| `MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__RECOGNITION` | Comma-separated list of (recognition) facial recognition model(s) to preload and cache | | machine learning |
| `MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__DETECTION` | Comma-separated list of (detection) facial recognition model(s) to preload and cache | | machine learning |
| `MACHINE_LEARNING_ANN` | Enable ARM-NN hardware acceleration if supported | `True` | machine learning |
| `MACHINE_LEARNING_ANN_FP16_TURBO` | Execute operations in FP16 precision: increasing speed, reducing precision (applies only to ARM-NN) | `False` | machine learning |
| `MACHINE_LEARNING_ANN_TUNING_LEVEL` | ARM-NN GPU tuning level (1: rapid, 2: normal, 3: exhaustive) | `2` | machine learning |
| `MACHINE_LEARNING_DEVICE_IDS`<sup>\*4</sup> | Device IDs to use in multi-GPU environments | `0` | machine learning |
| `MACHINE_LEARNING_MAX_BATCH_SIZE__FACIAL_RECOGNITION` | Set the maximum number of faces that will be processed at once by the facial recognition model | None (`1` if using OpenVINO) | machine learning |
\*1: It is recommended to begin with this parameter when changing the concurrency levels of the machine learning service and then tune the other ones.

View file

@ -27,7 +27,7 @@ The script will perform the following actions:
1. Download [docker-compose.yml](https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml), and the [.env](https://github.com/immich-app/immich/releases/latest/download/example.env) file from the main branch of the [repository](https://github.com/immich-app/immich).
2. Start the containers.
The web application will be available at `http://<machine-ip-address>:2283`, and the server URL for the mobile app will be `http://<machine-ip-address>:2283/api`
The web application and mobile app will be available at `http://<machine-ip-address>:2283`
The directory which is used to store the library files is `./immich-app` relative to the current directory.

View file

@ -111,7 +111,7 @@ alt="Go to Docker Tab and visit the address listed next to immich-web"
<details >
<summary>Using the FolderView plugin for organizing your Docker containers? Click me! Otherwise you're complete!</summary>
<p>If you are using the FolderView plugin go the Docker tab and select "<b>New Folder</b>".<br />Label it <i>"Immich"</i> and use this URL as the logo: https://raw.githubusercontent.com/immich-app/immich/main/design/immich-logo.webp<br/>Then simply select all the Immich related containers before clicking "<b>Submit</b>"</p>
<p>If you are using the FolderView plugin go the Docker tab and select "<b>New Folder</b>".<br />Label it <i>"Immich"</i> and use this URL as the logo: https://raw.githubusercontent.com/immich-app/immich/main/design/immich-logo.png<br/>Then simply select all the Immich related containers before clicking "<b>Submit</b>"</p>
<img
src={require('./img/unraid07.webp').default}
width="80%"

View file

@ -1,8 +0,0 @@
---
sidebar_position: 2
---
# Comparison
If you're new here and came from other asset self-hosting alternatives you might want to look at a comparison between Immich and your current solution.
Here you can see a [comparison between the various OpenSource Photo Libraries](https://meichthys.github.io/foss_photo_libraries/) including Immich.

View file

@ -1,3 +1,3 @@
Login to the mobile app with the server endpoint URL at `http://<machine-ip-address>:2283/api`
Login to the mobile app with the server endpoint URL at `http://<machine-ip-address>:2283`
<img src={require('./img/sign-in-phone.webp').default} width='50%' title='Mobile App Sign In' />

6627
docs/package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -16,8 +16,8 @@
"write-heading-ids": "docusaurus write-heading-ids"
},
"dependencies": {
"@docusaurus/core": "~3.5.2",
"@docusaurus/preset-classic": "~3.5.2",
"@docusaurus/core": "~3.7.0",
"@docusaurus/preset-classic": "~3.7.0",
"@mdi/js": "^7.3.67",
"@mdi/react": "^1.6.1",
"@mdx-js/react": "^3.0.0",
@ -35,7 +35,7 @@
"url": "^0.11.0"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "~3.5.2",
"@docusaurus/module-type-aliases": "~3.7.0",
"prettier": "^3.2.4",
"typescript": "^5.1.6"
},
@ -55,6 +55,6 @@
"node": ">=20"
},
"volta": {
"node": "22.12.0"
"node": "22.13.1"
}
}

View file

@ -99,6 +99,11 @@ const projects: CommunityProjectProps[] = [
description: 'Downloads a configurable number of random photos based on people or album ID.',
url: 'https://github.com/jon6fingrs/immich-dl',
},
{
title: 'Immich Upload Optimizer',
description: 'Automatically optimize files uploaded to Immich in order to save storage space',
url: 'https://github.com/miguelangel-nubla/immich-upload-optimizer',
},
];
function CommunityProject({ title, description, url }: CommunityProjectProps): JSX.Element {

View file

@ -73,9 +73,9 @@ function HomepageHeader() {
/>
<div>
<p className="font-bold text-2xl md:text-5xl ">Download mobile app</p>
<p className="font-bold text-2xl md:text-5xl ">Download the mobile app</p>
<p className="text-lg">
Download Immich app and start backing up your photos and videos securely to your own server
Download the Immich app and start backing up your photos and videos securely to your own server
</p>
</div>
<div className="flex flex-col sm:flex-row place-items-center place-content-center mt-4 gap-1">

View file

@ -1,4 +1,32 @@
[
{
"label": "v1.125.6",
"url": "https://v1.125.6.archive.immich.app"
},
{
"label": "v1.125.5",
"url": "https://v1.125.5.archive.immich.app"
},
{
"label": "v1.125.4",
"url": "https://v1.125.4.archive.immich.app"
},
{
"label": "v1.125.3",
"url": "https://v1.125.3.archive.immich.app"
},
{
"label": "v1.125.2",
"url": "https://v1.125.2.archive.immich.app"
},
{
"label": "v1.125.1",
"url": "https://v1.125.1.archive.immich.app"
},
{
"label": "v1.125.0",
"url": "https://v1.125.0.archive.immich.app"
},
{
"label": "v1.124.2",
"url": "https://v1.124.2.archive.immich.app"

View file

@ -1 +1 @@
22.12.0
22.13.1

View file

@ -34,7 +34,7 @@ services:
- 2285:2285
redis:
image: redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8
image: redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
database:
image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0

581
e2e/package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
{
"name": "immich-e2e",
"version": "1.124.2",
"version": "1.125.6",
"description": "",
"main": "index.js",
"type": "module",
@ -25,16 +25,16 @@
"@immich/sdk": "file:../open-api/typescript-sdk",
"@playwright/test": "^1.44.1",
"@types/luxon": "^3.4.2",
"@types/node": "^22.10.2",
"@types/node": "^22.10.9",
"@types/oidc-provider": "^8.5.1",
"@types/pg": "^8.11.0",
"@types/pngjs": "^6.0.4",
"@types/supertest": "^6.0.2",
"@typescript-eslint/eslint-plugin": "^8.15.0",
"@typescript-eslint/parser": "^8.15.0",
"@vitest/coverage-v8": "^2.0.5",
"@vitest/coverage-v8": "^3.0.0",
"eslint": "^9.14.0",
"eslint-config-prettier": "^9.1.0",
"eslint-config-prettier": "^10.0.0",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-unicorn": "^56.0.1",
"exiftool-vendored": "^28.3.1",
@ -50,9 +50,9 @@
"supertest": "^7.0.0",
"typescript": "^5.3.3",
"utimes": "^5.2.1",
"vitest": "^2.0.5"
"vitest": "^3.0.0"
},
"volta": {
"node": "22.12.0"
"node": "22.13.1"
}
}

View file

@ -22,79 +22,92 @@ const user1NotShared = 'user1NotShared';
const user2SharedUser = 'user2SharedUser';
const user2SharedLink = 'user2SharedLink';
const user2NotShared = 'user2NotShared';
const user4DeletedAsset = 'user4DeletedAsset';
const user4Empty = 'user4Empty';
describe('/albums', () => {
let admin: LoginResponseDto;
let user1: LoginResponseDto;
let user1Asset1: AssetMediaResponseDto;
let user1Asset2: AssetMediaResponseDto;
let user4Asset1: AssetMediaResponseDto;
let user1Albums: AlbumResponseDto[];
let user2: LoginResponseDto;
let user2Albums: AlbumResponseDto[];
let deletedAssetAlbum: AlbumResponseDto;
let user3: LoginResponseDto; // deleted
let user4: LoginResponseDto;
beforeAll(async () => {
await utils.resetDatabase();
admin = await utils.adminSetup();
[user1, user2, user3] = await Promise.all([
[user1, user2, user3, user4] = await Promise.all([
utils.userSetup(admin.accessToken, createUserDto.user1),
utils.userSetup(admin.accessToken, createUserDto.user2),
utils.userSetup(admin.accessToken, createUserDto.user3),
utils.userSetup(admin.accessToken, createUserDto.user4),
]);
[user1Asset1, user1Asset2] = await Promise.all([
[user1Asset1, user1Asset2, user4Asset1] = await Promise.all([
utils.createAsset(user1.accessToken, { isFavorite: true }),
utils.createAsset(user1.accessToken),
utils.createAsset(user1.accessToken),
]);
user1Albums = await Promise.all([
utils.createAlbum(user1.accessToken, {
albumName: user1SharedEditorUser,
albumUsers: [{ userId: user2.userId, role: AlbumUserRole.Editor }],
assetIds: [user1Asset1.id],
}),
utils.createAlbum(user1.accessToken, {
albumName: user1SharedLink,
assetIds: [user1Asset1.id],
}),
utils.createAlbum(user1.accessToken, {
albumName: user1NotShared,
assetIds: [user1Asset1.id, user1Asset2.id],
}),
utils.createAlbum(user1.accessToken, {
albumName: user1SharedViewerUser,
albumUsers: [{ userId: user2.userId, role: AlbumUserRole.Viewer }],
assetIds: [user1Asset1.id],
[user1Albums, user2Albums, deletedAssetAlbum] = await Promise.all([
Promise.all([
utils.createAlbum(user1.accessToken, {
albumName: user1SharedEditorUser,
albumUsers: [
{ userId: admin.userId, role: AlbumUserRole.Editor },
{ userId: user2.userId, role: AlbumUserRole.Editor },
],
assetIds: [user1Asset1.id],
}),
utils.createAlbum(user1.accessToken, {
albumName: user1SharedLink,
assetIds: [user1Asset1.id],
}),
utils.createAlbum(user1.accessToken, {
albumName: user1NotShared,
assetIds: [user1Asset1.id, user1Asset2.id],
}),
utils.createAlbum(user1.accessToken, {
albumName: user1SharedViewerUser,
albumUsers: [{ userId: user2.userId, role: AlbumUserRole.Viewer }],
assetIds: [user1Asset1.id],
}),
]),
Promise.all([
utils.createAlbum(user2.accessToken, {
albumName: user2SharedUser,
albumUsers: [
{ userId: user1.userId, role: AlbumUserRole.Editor },
{ userId: user3.userId, role: AlbumUserRole.Editor },
],
}),
utils.createAlbum(user2.accessToken, { albumName: user2SharedLink }),
utils.createAlbum(user2.accessToken, { albumName: user2NotShared }),
]),
utils.createAlbum(user4.accessToken, { albumName: user4DeletedAsset }),
utils.createAlbum(user4.accessToken, { albumName: user4Empty }),
utils.createAlbum(user3.accessToken, {
albumName: 'Deleted',
albumUsers: [{ userId: user1.userId, role: AlbumUserRole.Editor }],
}),
]);
user2Albums = await Promise.all([
utils.createAlbum(user2.accessToken, {
albumName: user2SharedUser,
albumUsers: [
{ userId: user1.userId, role: AlbumUserRole.Editor },
{ userId: user3.userId, role: AlbumUserRole.Editor },
],
}),
utils.createAlbum(user2.accessToken, { albumName: user2SharedLink }),
utils.createAlbum(user2.accessToken, { albumName: user2NotShared }),
]);
await utils.createAlbum(user3.accessToken, {
albumName: 'Deleted',
albumUsers: [{ userId: user1.userId, role: AlbumUserRole.Editor }],
});
await addAssetsToAlbum(
{ id: user2Albums[0].id, bulkIdsDto: { ids: [user1Asset1.id, user1Asset2.id] } },
{ headers: asBearerAuth(user1.accessToken) },
);
user2Albums[0] = await getAlbumInfo({ id: user2Albums[0].id }, { headers: asBearerAuth(user2.accessToken) });
await Promise.all([
addAssetsToAlbum(
{ id: user2Albums[0].id, bulkIdsDto: { ids: [user1Asset1.id, user1Asset2.id] } },
{ headers: asBearerAuth(user1.accessToken) },
),
addAssetsToAlbum(
{ id: deletedAssetAlbum.id, bulkIdsDto: { ids: [user4Asset1.id] } },
{ headers: asBearerAuth(user4.accessToken) },
),
// add shared link to user1SharedLink album
utils.createSharedLink(user1.accessToken, {
type: SharedLinkType.Album,
@ -107,7 +120,11 @@ describe('/albums', () => {
}),
]);
await deleteUserAdmin({ id: user3.userId, userAdminDeleteDto: {} }, { headers: asBearerAuth(admin.accessToken) });
[user2Albums[0]] = await Promise.all([
getAlbumInfo({ id: user2Albums[0].id }, { headers: asBearerAuth(user2.accessToken) }),
deleteUserAdmin({ id: user3.userId, userAdminDeleteDto: {} }, { headers: asBearerAuth(admin.accessToken) }),
utils.deleteAssets(user1.accessToken, [user4Asset1.id]),
]);
});
describe('GET /albums', () => {
@ -142,6 +159,10 @@ describe('/albums', () => {
...user1Albums[0],
assets: [expect.objectContaining({ isFavorite: false })],
lastModifiedAssetTimestamp: expect.any(String),
startDate: expect.any(String),
endDate: expect.any(String),
shared: true,
albumUsers: expect.any(Array),
});
});
@ -280,6 +301,25 @@ describe('/albums', () => {
expect(status).toBe(200);
expect(body).toHaveLength(5);
});
it('should return empty albums and albums where all assets are deleted', async () => {
const { status, body } = await request(app).get('/albums').set('Authorization', `Bearer ${user4.accessToken}`);
expect(status).toBe(200);
expect(body).toEqual(
expect.arrayContaining([
expect.objectContaining({
ownerId: user4.userId,
albumName: user4DeletedAsset,
shared: false,
}),
expect.objectContaining({
ownerId: user4.userId,
albumName: user4Empty,
shared: false,
}),
]),
);
});
});
describe('GET /albums/:id', () => {
@ -299,6 +339,10 @@ describe('/albums', () => {
...user1Albums[0],
assets: [expect.objectContaining({ id: user1Albums[0].assets[0].id })],
lastModifiedAssetTimestamp: expect.any(String),
startDate: expect.any(String),
endDate: expect.any(String),
albumUsers: expect.any(Array),
shared: true,
});
});
@ -330,6 +374,10 @@ describe('/albums', () => {
...user1Albums[0],
assets: [expect.objectContaining({ id: user1Albums[0].assets[0].id })],
lastModifiedAssetTimestamp: expect.any(String),
startDate: expect.any(String),
endDate: expect.any(String),
albumUsers: expect.any(Array),
shared: true,
});
});
@ -344,6 +392,30 @@ describe('/albums', () => {
assets: [],
assetCount: 1,
lastModifiedAssetTimestamp: expect.any(String),
endDate: expect.any(String),
startDate: expect.any(String),
albumUsers: expect.any(Array),
shared: true,
});
});
it('should not count trashed assets', async () => {
await utils.deleteAssets(user1.accessToken, [user1Asset2.id]);
const { status, body } = await request(app)
.get(`/albums/${user2Albums[0].id}?withoutAssets=true`)
.set('Authorization', `Bearer ${user1.accessToken}`);
expect(status).toBe(200);
expect(body).toEqual({
...user2Albums[0],
assets: [],
assetCount: 1,
lastModifiedAssetTimestamp: expect.any(String),
endDate: expect.any(String),
startDate: expect.any(String),
albumUsers: expect.any(Array),
shared: true,
});
});
});

View file

@ -3,11 +3,11 @@ import {
AssetMediaStatus,
AssetResponseDto,
AssetTypeEnum,
LoginResponseDto,
SharedLinkType,
getAssetInfo,
getConfig,
getMyUser,
LoginResponseDto,
SharedLinkType,
updateConfig,
} from '@immich/sdk';
import { exiftool } from 'exiftool-vendored';
@ -19,7 +19,7 @@ import { Socket } from 'socket.io-client';
import { createUserDto, uuidDto } from 'src/fixtures';
import { makeRandomImage } from 'src/generators';
import { errorDto } from 'src/responses';
import { app, asBearerAuth, tempDir, testAssetDir, utils } from 'src/utils';
import { app, asBearerAuth, tempDir, TEN_TIMES, testAssetDir, utils } from 'src/utils';
import request from 'supertest';
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
@ -41,8 +41,6 @@ const makeUploadDto = (options?: { omit: string }): Record<string, any> => {
return dto;
};
const TEN_TIMES = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
const locationAssetFilepath = `${testAssetDir}/metadata/gps-position/thompson-springs.jpg`;
const ratingAssetFilepath = `${testAssetDir}/metadata/rating/mongolels.jpg`;
const facesAssetFilepath = `${testAssetDir}/metadata/faces/portrait.jpg`;
@ -538,7 +536,7 @@ describe('/asset', () => {
expect(body).toMatchObject({
id: user1Assets[0].id,
exifInfo: expect.objectContaining({
dateTimeOriginal: '2023-11-20T01:11:00.000Z',
dateTimeOriginal: '2023-11-20T01:11:00+00:00',
}),
});
expect(status).toEqual(200);
@ -608,7 +606,7 @@ describe('/asset', () => {
await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction');
const assetInfo = await utils.getAssetInfo(user1.accessToken, id);
expect(assetInfo.exifInfo?.dateTimeOriginal).toBe('2024-07-11T10:32:52.000Z');
expect(assetInfo.exifInfo?.dateTimeOriginal).toBe('2024-07-11T10:32:52+00:00');
const { status, body } = await request(app)
.put(`/assets/${id}`)
@ -618,7 +616,7 @@ describe('/asset', () => {
expect(body).toMatchObject({
id,
exifInfo: expect.objectContaining({
dateTimeOriginal: '2023-11-20T01:11:00.000Z',
dateTimeOriginal: '2023-11-20T01:11:00+00:00',
}),
});
expect(status).toEqual(200);
@ -703,6 +701,20 @@ describe('/asset', () => {
expect(status).toEqual(200);
});
it('should set the negative rating', async () => {
const { status, body } = await request(app)
.put(`/assets/${user1Assets[0].id}`)
.set('Authorization', `Bearer ${user1.accessToken}`)
.send({ rating: -1 });
expect(body).toMatchObject({
id: user1Assets[0].id,
exifInfo: expect.objectContaining({
rating: -1,
}),
});
expect(status).toEqual(200);
});
it('should reject invalid rating', async () => {
for (const test of [{ rating: 7 }, { rating: 3.5 }, { rating: null }]) {
const { status, body } = await request(app)
@ -985,8 +997,6 @@ describe('/asset', () => {
exifImageHeight: 1080,
exifImageWidth: 1617,
fileSizeInByte: 862_424,
latitude: null,
longitude: null,
},
},
},
@ -996,11 +1006,9 @@ describe('/asset', () => {
type: AssetTypeEnum.Image,
originalFileName: 'el_torcal_rocks.jpg',
exifInfo: {
dateTimeOriginal: '2012-08-05T11:39:59.000Z',
dateTimeOriginal: '2012-08-05T11:39:59+00:00',
exifImageWidth: 512,
exifImageHeight: 341,
latitude: null,
longitude: null,
focalLength: 75,
iso: 200,
fNumber: 11,
@ -1008,7 +1016,6 @@ describe('/asset', () => {
fileSizeInByte: 53_493,
make: 'SONY',
model: 'DSLR-A550',
orientation: null,
description: 'SONY DSC',
},
},
@ -1023,8 +1030,6 @@ describe('/asset', () => {
exifImageHeight: 1080,
exifImageWidth: 1440,
fileSizeInByte: 1_780_777,
latitude: null,
longitude: null,
},
},
},
@ -1035,7 +1040,7 @@ describe('/asset', () => {
originalFileName: 'IMG_2682.heic',
fileCreatedAt: '2019-03-21T16:04:22.348Z',
exifInfo: {
dateTimeOriginal: '2019-03-21T16:04:22.348Z',
dateTimeOriginal: '2019-03-21T16:04:22.348+00:00',
exifImageWidth: 4032,
exifImageHeight: 3024,
latitude: 41.2203,
@ -1060,8 +1065,6 @@ describe('/asset', () => {
exifInfo: {
exifImageWidth: 800,
exifImageHeight: 800,
latitude: null,
longitude: null,
fileSizeInByte: 25_408,
},
},
@ -1080,9 +1083,7 @@ describe('/asset', () => {
focalLength: 18,
iso: 100,
fileSizeInByte: 9_057_784,
dateTimeOriginal: '2010-07-20T17:27:12.000Z',
latitude: null,
longitude: null,
dateTimeOriginal: '2010-07-20T17:27:12+00:00',
orientation: '1',
},
},
@ -1101,9 +1102,7 @@ describe('/asset', () => {
focalLength: 85,
iso: 200,
fileSizeInByte: 15_856_335,
dateTimeOriginal: '2016-09-22T21:10:29.060Z',
latitude: null,
longitude: null,
dateTimeOriginal: '2016-09-22T21:10:29.06+00:00',
orientation: '1',
timeZone: 'UTC-4',
},
@ -1125,9 +1124,7 @@ describe('/asset', () => {
focalLength: 35,
iso: 400,
fileSizeInByte: 19_587_072,
dateTimeOriginal: '2018-05-10T08:42:37.842Z',
latitude: null,
longitude: null,
dateTimeOriginal: '2018-05-10T08:42:37.842+00:00',
orientation: '1',
},
},
@ -1149,9 +1146,7 @@ describe('/asset', () => {
iso: 100,
lensModel: 'E PZ 18-105mm F4 G OSS',
fileSizeInByte: 25_001_984,
dateTimeOriginal: '2016-09-27T10:51:44.000Z',
latitude: null,
longitude: null,
dateTimeOriginal: '2016-09-27T10:51:44+00:00',
orientation: '1',
},
},
@ -1173,9 +1168,7 @@ describe('/asset', () => {
iso: 100,
lensModel: 'E 25mm F2',
fileSizeInByte: 49_512_448,
dateTimeOriginal: '2016-01-08T14:08:01.000Z',
latitude: null,
longitude: null,
dateTimeOriginal: '2016-01-08T14:08:01+00:00',
orientation: '1',
},
},
@ -1197,7 +1190,7 @@ describe('/asset', () => {
iso: 80,
lensModel: null,
fileSizeInByte: 11_113_617,
dateTimeOriginal: '2015-12-27T09:55:40.000Z',
dateTimeOriginal: '2015-12-27T09:55:40+00:00',
latitude: null,
longitude: null,
orientation: '1',
@ -1221,7 +1214,7 @@ describe('/asset', () => {
iso: 160,
lensModel: null,
fileSizeInByte: 13_551_312,
dateTimeOriginal: '2024-10-12T21:01:01.000Z',
dateTimeOriginal: '2024-10-12T21:01:01+00:00',
latitude: null,
longitude: null,
orientation: '6',
@ -1235,7 +1228,7 @@ describe('/asset', () => {
originalFileName: 'Ricoh_GR3-450.DNG',
fileCreatedAt: '2024-06-08T13:48:39.000Z',
exifInfo: {
dateTimeOriginal: '2024-06-08T13:48:39.000Z',
dateTimeOriginal: '2024-06-08T13:48:39+00:00',
exifImageHeight: 4064,
exifImageWidth: 6112,
exposureTime: '1/400',

View file

@ -93,8 +93,6 @@ describe('/memories', () => {
data: { year: 2021 },
createdAt: expect.any(String),
updatedAt: expect.any(String),
deletedAt: null,
seenAt: null,
isSaved: false,
memoryAt: expect.any(String),
ownerId: user.userId,

View file

@ -13,8 +13,8 @@ import request from 'supertest';
import { beforeAll, describe, expect, it } from 'vitest';
const authServer = {
internal: 'http://auth-server:3000',
external: 'http://127.0.0.1:3000',
internal: 'http://auth-server:2286',
external: 'http://127.0.0.1:2286',
};
const mobileOverrideRedirectUri = 'https://photos.immich.app/oauth/mobile-redirect';

View file

@ -200,7 +200,7 @@ describe('/people', () => {
expect(body).toMatchObject({
id: expect.any(String),
name: 'New Person',
birthDate: '1990-01-01',
birthDate: '1990-01-01T00:00:00.000Z',
});
});
});
@ -244,7 +244,7 @@ describe('/people', () => {
.set('Authorization', `Bearer ${admin.accessToken}`)
.send({ birthDate: '1990-01-01' });
expect(status).toBe(200);
expect(body).toMatchObject({ birthDate: '1990-01-01' });
expect(body).toMatchObject({ birthDate: '1990-01-01T00:00:00.000Z' });
});
it('should clear a date of birth', async () => {

View file

@ -1,10 +1,10 @@
import { AssetMediaResponseDto, LoginResponseDto, deleteAssets, updateAsset } from '@immich/sdk';
import { AssetMediaResponseDto, AssetResponseDto, deleteAssets, LoginResponseDto, updateAsset } from '@immich/sdk';
import { DateTime } from 'luxon';
import { readFile } from 'node:fs/promises';
import { join } from 'node:path';
import { Socket } from 'socket.io-client';
import { errorDto } from 'src/responses';
import { app, asBearerAuth, testAssetDir, utils } from 'src/utils';
import { app, asBearerAuth, TEN_TIMES, testAssetDir, utils } from 'src/utils';
import request from 'supertest';
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
const today = DateTime.now();
@ -462,6 +462,55 @@ describe('/search', () => {
});
});
describe('POST /search/random', () => {
beforeAll(async () => {
await Promise.all([
utils.createAsset(admin.accessToken),
utils.createAsset(admin.accessToken),
utils.createAsset(admin.accessToken),
utils.createAsset(admin.accessToken),
utils.createAsset(admin.accessToken),
utils.createAsset(admin.accessToken),
]);
await utils.waitForQueueFinish(admin.accessToken, 'thumbnailGeneration');
});
it('should require authentication', async () => {
const { status, body } = await request(app).post('/search/random').send({ size: 1 });
expect(status).toBe(401);
expect(body).toEqual(errorDto.unauthorized);
});
it.each(TEN_TIMES)('should return 1 random assets', async () => {
const { status, body } = await request(app)
.post('/search/random')
.send({ size: 1 })
.set('Authorization', `Bearer ${admin.accessToken}`);
expect(status).toBe(200);
const assets: AssetResponseDto[] = body;
expect(assets.length).toBe(1);
expect(assets[0].ownerId).toBe(admin.userId);
});
it.each(TEN_TIMES)('should return 2 random assets', async () => {
const { status, body } = await request(app)
.post('/search/random')
.send({ size: 2 })
.set('Authorization', `Bearer ${admin.accessToken}`);
expect(status).toBe(200);
const assets: AssetResponseDto[] = body;
expect(assets.length).toBe(2);
expect(assets[0].ownerId).toBe(admin.userId);
expect(assets[1].ownerId).toBe(admin.userId);
});
});
describe('GET /search/explore', () => {
it('should require authentication', async () => {
const { status, body } = await request(app).get('/search/explore');

View file

@ -170,7 +170,7 @@ describe('/shared-links', () => {
expect(status).toBe(200);
expect(body).toEqual(
expect.objectContaining({
album,
album: expect.objectContaining({ id: album.id }),
userId: user1.userId,
type: SharedLinkType.Album,
}),
@ -208,7 +208,7 @@ describe('/shared-links', () => {
expect(status).toBe(200);
expect(body).toEqual(
expect.objectContaining({
album,
album: expect.objectContaining({ id: album.id }),
userId: user1.userId,
type: SharedLinkType.Album,
}),
@ -262,7 +262,7 @@ describe('/shared-links', () => {
expect(status).toBe(200);
expect(body).toEqual(
expect.objectContaining({
album,
album: expect.objectContaining({ id: album.id }),
userId: user1.userId,
type: SharedLinkType.Album,
}),

View file

@ -119,93 +119,84 @@ describe('/stacks', () => {
const stacksAfter = await searchStacks({}, { headers: asBearerAuth(user1.accessToken) });
expect(stacksAfter.length).toBe(stacksBefore.length);
});
// it('should require a valid parent id', async () => {
// const { status, body } = await request(app)
// .put('/assets')
// .set('Authorization', `Bearer ${user1.accessToken}`)
// .send({ stackParentId: uuidDto.invalid, ids: [stackAssets[0].id] });
// expect(status).toBe(400);
// expect(body).toEqual(errorDto.badRequest(['stackParentId must be a UUID']));
// });
});
// it('should require access to the parent', async () => {
// const { status, body } = await request(app)
// .put('/assets')
// .set('Authorization', `Bearer ${user1.accessToken}`)
// .send({ stackParentId: stackAssets[3].id, ids: [user1Assets[0].id] });
describe('GET /assets/:id', () => {
it('should include stack details for the primary asset', async () => {
const [asset1, asset2] = await Promise.all([
utils.createAsset(user1.accessToken),
utils.createAsset(user1.accessToken),
]);
// expect(status).toBe(400);
// expect(body).toEqual(errorDto.noPermission);
// });
await utils.createStack(user1.accessToken, [asset1.id, asset2.id]);
// it('should add stack children', async () => {
// const { status } = await request(app)
// .put('/assets')
// .set('Authorization', `Bearer ${stackUser.accessToken}`)
// .send({ stackParentId: stackAssets[0].id, ids: [stackAssets[3].id] });
const { status, body } = await request(app)
.get(`/assets/${asset1.id}`)
.set('Authorization', `Bearer ${user1.accessToken}`);
// expect(status).toBe(204);
expect(status).toBe(200);
expect(body).toEqual(
expect.objectContaining({
id: asset1.id,
stack: {
id: expect.any(String),
assetCount: 2,
primaryAssetId: asset1.id,
},
}),
);
});
// const asset = await getAssetInfo({ id: stackAssets[0].id }, { headers: asBearerAuth(stackUser.accessToken) });
// expect(asset.stack).not.toBeUndefined();
// expect(asset.stack).toEqual(expect.arrayContaining([expect.objectContaining({ id: stackAssets[3].id })]));
// });
it('should include stack details for a non-primary asset', async () => {
const [asset1, asset2] = await Promise.all([
utils.createAsset(user1.accessToken),
utils.createAsset(user1.accessToken),
]);
// it('should remove stack children', async () => {
// const { status } = await request(app)
// .put('/assets')
// .set('Authorization', `Bearer ${stackUser.accessToken}`)
// .send({ removeParent: true, ids: [stackAssets[1].id] });
await utils.createStack(user1.accessToken, [asset1.id, asset2.id]);
// expect(status).toBe(204);
const { status, body } = await request(app)
.get(`/assets/${asset2.id}`)
.set('Authorization', `Bearer ${user1.accessToken}`);
// const asset = await getAssetInfo({ id: stackAssets[0].id }, { headers: asBearerAuth(stackUser.accessToken) });
// expect(asset.stack).not.toBeUndefined();
// expect(asset.stack).toEqual(
// expect.arrayContaining([
// expect.objectContaining({ id: stackAssets[2].id }),
// expect.objectContaining({ id: stackAssets[3].id }),
// ]),
// );
// });
expect(status).toBe(200);
expect(body).toEqual(
expect.objectContaining({
id: asset2.id,
stack: {
id: expect.any(String),
assetCount: 2,
primaryAssetId: asset1.id,
},
}),
);
});
});
// it('should remove all stack children', async () => {
// const { status } = await request(app)
// .put('/assets')
// .set('Authorization', `Bearer ${stackUser.accessToken}`)
// .send({ removeParent: true, ids: [stackAssets[2].id, stackAssets[3].id] });
describe('GET /stacks/:id', () => {
it('should include exifInfo in stack assets', async () => {
const [asset1, asset2] = await Promise.all([
utils.createAsset(user1.accessToken),
utils.createAsset(user1.accessToken),
]);
// expect(status).toBe(204);
const stack = await utils.createStack(user1.accessToken, [asset1.id, asset2.id]);
// const asset = await getAssetInfo({ id: stackAssets[0].id }, { headers: asBearerAuth(stackUser.accessToken) });
// expect(asset.stack).toBeUndefined();
// });
const { status, body } = await request(app)
.get(`/stacks/${stack.id}`)
.set('Authorization', `Bearer ${user1.accessToken}`);
// it('should merge stack children', async () => {
// // create stack after previous test removed stack children
// await updateAssets(
// { assetBulkUpdateDto: { stackParentId: stackAssets[0].id, ids: [stackAssets[1].id, stackAssets[2].id] } },
// { headers: asBearerAuth(stackUser.accessToken) },
// );
// const { status } = await request(app)
// .put('/assets')
// .set('Authorization', `Bearer ${stackUser.accessToken}`)
// .send({ stackParentId: stackAssets[3].id, ids: [stackAssets[0].id] });
// expect(status).toBe(204);
// const asset = await getAssetInfo({ id: stackAssets[3].id }, { headers: asBearerAuth(stackUser.accessToken) });
// expect(asset.stack).not.toBeUndefined();
// expect(asset.stack).toEqual(
// expect.arrayContaining([
// expect.objectContaining({ id: stackAssets[0].id }),
// expect.objectContaining({ id: stackAssets[1].id }),
// expect.objectContaining({ id: stackAssets[2].id }),
// ]),
// );
// });
expect(status).toBe(200);
expect(body).toEqual(
expect.objectContaining({
id: stack.id,
primaryAssetId: asset1.id,
assets: expect.arrayContaining([
expect.objectContaining({ id: asset1.id, exifInfo: expect.any(Object) }),
expect.objectContaining({ id: asset2.id, exifInfo: expect.any(Object) }),
]),
}),
);
});
});
});

View file

@ -151,7 +151,7 @@ describe('/timeline', () => {
it('should require authentication', async () => {
const { status, body } = await request(app).get('/timeline/bucket').query({
size: TimeBucketSize.Month,
timeBucket: '1900-01-01T00:00:00.000Z',
timeBucket: '1900-01-01',
});
expect(status).toBe(401);
@ -161,7 +161,7 @@ describe('/timeline', () => {
it('should handle 5 digit years', async () => {
const { status, body } = await request(app)
.get('/timeline/bucket')
.query({ size: TimeBucketSize.Month, timeBucket: '+012345-01-01T00:00:00.000Z' })
.query({ size: TimeBucketSize.Month, timeBucket: '012345-01-01' })
.set('Authorization', `Bearer ${timeBucketUser.accessToken}`);
expect(status).toBe(200);
@ -183,7 +183,7 @@ describe('/timeline', () => {
const { status, body } = await request(app)
.get('/timeline/bucket')
.set('Authorization', `Bearer ${timeBucketUser.accessToken}`)
.query({ size: TimeBucketSize.Month, timeBucket: '1970-02-10T00:00:00.000Z' });
.query({ size: TimeBucketSize.Month, timeBucket: '1970-02-10' });
expect(status).toBe(200);
expect(body).toEqual([]);

View file

@ -129,6 +129,8 @@ describe('/users', () => {
expect(body).toEqual({
...before,
updatedAt: expect.any(String),
profileChangedAt: expect.any(String),
createdAt: expect.any(String),
name: 'Name',
});
});
@ -177,6 +179,8 @@ describe('/users', () => {
...before,
email: 'non-admin@immich.cloud',
updatedAt: expect.anything(),
createdAt: expect.anything(),
profileChangedAt: expect.anything(),
});
});
});

View file

@ -51,7 +51,7 @@ const setup = async () => {
const { privateKey, publicKey } = await generateKeyPair('RS256');
const redirectUris = ['http://127.0.0.1:2285/auth/login', 'https://photos.immich.app/oauth/mobile-redirect'];
const port = 3000;
const port = 2286;
const host = '0.0.0.0';
const oidc = new Provider(`http://${host}:${port}`, {
renderError: async (ctx, out, error) => {

View file

@ -76,6 +76,7 @@ export const immichCli = (args: string[]) =>
export const immichAdmin = (args: string[]) =>
executeCommand('docker', ['exec', '-i', 'immich-e2e-server', '/bin/bash', '-c', `immich-admin ${args.join(' ')}`]);
export const specialCharStrings = ["'", '"', ',', '{', '}', '*'];
export const TEN_TIMES = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
const executeCommand = (command: string, args: string[]) => {
let _resolve: (value: CommandResponse) => void;

View file

@ -6,7 +6,7 @@ import {
SharedLinkType,
createAlbum,
} from '@immich/sdk';
import { test } from '@playwright/test';
import { expect, test } from '@playwright/test';
import { asBearerAuth, utils } from 'src/utils';
test.describe('Shared Links', () => {
@ -65,6 +65,38 @@ test.describe('Shared Links', () => {
await page.getByRole('heading', { name: 'Test Album' }).waitFor();
});
test('show-password button visible', async ({ page }) => {
await page.goto(`/share/${sharedLinkPassword.key}`);
await page.getByPlaceholder('Password').fill('test-password');
await page.getByRole('button', { name: 'Show password' }).waitFor();
});
test('view password for shared link', async ({ page }) => {
await page.goto(`/share/${sharedLinkPassword.key}`);
const input = page.getByPlaceholder('Password');
await input.fill('test-password');
await page.getByRole('button', { name: 'Show password' }).click();
// await page.getByText('test-password', { exact: true }).waitFor();
await expect(input).toHaveAttribute('type', 'text');
});
test('hide-password button visible', async ({ page }) => {
await page.goto(`/share/${sharedLinkPassword.key}`);
const input = page.getByPlaceholder('Password');
await input.fill('test-password');
await page.getByRole('button', { name: 'Show password' }).click();
await page.getByRole('button', { name: 'Hide password' }).waitFor();
});
test('hide password for shared link', async ({ page }) => {
await page.goto(`/share/${sharedLinkPassword.key}`);
const input = page.getByPlaceholder('Password');
await input.fill('test-password');
await page.getByRole('button', { name: 'Show password' }).click();
await page.getByRole('button', { name: 'Hide password' }).click();
await expect(input).toHaveAttribute('type', 'password');
});
test('show error for invalid shared link', async ({ page }) => {
await page.goto('/share/invalid');
await page.getByRole('heading', { name: 'Invalid share key' }).waitFor();

View file

@ -1,5 +1,5 @@
{
"about": "حول",
"about": "من نحن",
"account": "الحساب",
"account_settings": "إعدادات الحساب",
"acknowledge": "أُدرك ذلك",

View file

@ -437,8 +437,8 @@
"birthdate_set_description": "Датата на раждане се използва за изчисляване на възрастта на този човек към момента на снимката.",
"blurred_background": "Замъглен заден фон",
"bugs_and_feature_requests": "Бъгове и заявки за функции",
"build": "Създаване",
"build_image": "Създаване на изображение",
"build": "Версия",
"build_image": "Docker версия",
"bulk_delete_duplicates_confirmation": "Сигурни ли сте, че искате да изтриете масово {count, plural, one {# дублиран файл} other {# дублирани файла}}? Това ще запази най-големия файл от всяка група и ще изтрие трайно всички други дубликати. Не можете да отмените това действие!",
"bulk_keep_duplicates_confirmation": "Сигурни ли сте, че искате да запазите {count, plural, one {# дублиран файл} other {# дублирани файла}}? Това ще потвърди всички групи дубликати, без да изтрива нищо.",
"bulk_trash_duplicates_confirmation": "Сигурни ли сте, че искате да преместите в кошчето масово {count, plural, one {# дублиран файл} other {# дублирани файла}}? Това ще запази най-големия файл от всяка група и ще премести в кошчето всички други дубликати.",
@ -523,6 +523,10 @@
"date_range": "Период от време",
"day": "Ден",
"deduplicate_all": "Дедупликиране на всички",
"deduplication_criteria_1": "Размер на снимката в байтове",
"deduplication_criteria_2": "Брой EXIF данни",
"deduplication_info": "Информация за дедупликацията",
"deduplication_info_description": "За автоматично предварително избиране на ресурси и премахване на дубликати на едро, разглеждаме:",
"default_locale": "Локализация по подразбиране",
"default_locale_description": "Форматиране на дати и числа в зависимост от местоположението на браузъра",
"delete": "Изтрий",
@ -669,7 +673,7 @@
"unable_to_download_files": "Не могат да се изтеглят файловете",
"unable_to_edit_exclusion_pattern": "Не може да се редактира шаблон за изключване",
"unable_to_edit_import_path": "Пътят за импортиране не може да се редактира",
"unable_to_empty_trash": "Не може да изпразни кошчето",
"unable_to_empty_trash": "Неуспешно изпразване на кошчето",
"unable_to_enter_fullscreen": "Не може да се отвори в цял екран",
"unable_to_exit_fullscreen": "Не може да излезе от цял екран",
"unable_to_get_comments_number": "Не може да получи брой коментари",
@ -765,7 +769,7 @@
"group_no": "Няма група",
"group_owner": "Групиране по собственик",
"group_year": "Групиране по година",
"has_quota": "Има лимит",
"has_quota": "Лимит",
"hi_user": "Здравей, {name} {email}",
"hide_all_people": "Скрий всички хора",
"hide_gallery": "Скрий галерия",
@ -1009,7 +1013,7 @@
"purchase_button_select": "Избери",
"purchase_failed_activation": "Неуспешна активация! Моля, проверете имейла си за правилния продуктов ключ!",
"purchase_individual_description_1": "За индивидуален потребител",
"purchase_individual_description_2": "Поддръжнически статус",
"purchase_individual_description_2": "Статус на поддръжник",
"purchase_individual_title": "Индивидуален",
"purchase_input_suggestion": "Имате продуктов ключ? Въведете ключа по-долу",
"purchase_license_subtitle": "Закупете Immich, за да подкрепите продължаващото развитие на услугата",
@ -1025,7 +1029,7 @@
"purchase_remove_server_product_key": "Премахни продуктовия ключ на сървъра",
"purchase_remove_server_product_key_prompt": "Сигурни ли сте, че искате да премахнете продуктовия ключ на сървъра?",
"purchase_server_description_1": "За целият сървър",
"purchase_server_description_2": "Статус на поддръжника",
"purchase_server_description_2": "Статус на поддръжник",
"purchase_server_title": "Сървър",
"purchase_settings_server_activated": "Продуктовият ключ на сървъра се управлява от администратора",
"rating": "Оценка със звезди",
@ -1205,7 +1209,7 @@
"sort_people_by_similarity": "Сортиране на хора по прилика",
"sort_recent": "Най-новата снимка",
"sort_title": "Заглавие",
"source": "Източник",
"source": "Код",
"stack": "Събери",
"stack_duplicates": "Подреждане на дубликати",
"stack_select_one_photo": "Избери една главна снимка за събраните снимки",
@ -1258,9 +1262,9 @@
"toggle_theme": "Превключване на тема",
"total": "Общо",
"total_usage": "Общо използвано",
"trash": "кошче",
"trash": "Кошче",
"trash_all": "Изхвърли всички",
"trash_count": "Кошче {count, number}",
"trash_count": "В Кошчето {count, number}",
"trash_delete_asset": "Вкарай в Кошчето/Изтрий елемент",
"trash_no_results_message": "Изтритите снимки и видеоклипове ще се показват тук.",
"trashed_items_will_be_permanently_deleted_after": "Изхвърлените в кошчето елементи ще бъдат изтрити за постоянно след {days, plural, one {# ден} other {# дни}}.",

View file

@ -1,5 +1,5 @@
{
"about": "Sobre",
"about": "Quant a",
"account": "Compte",
"account_settings": "Configuració del compte",
"acknowledge": "D'acord",
@ -523,6 +523,10 @@
"date_range": "Interval de dates",
"day": "Dia",
"deduplicate_all": "Desduplica-ho tot",
"deduplication_criteria_1": "Mida d'imatge en bytes",
"deduplication_criteria_2": "Quantitat de dades EXIF",
"deduplication_info": "Informació de deduplicació",
"deduplication_info_description": "Per preseleccionar recursos automàticament i eliminar els duplicats de manera massiva, ens fixem en:",
"default_locale": "Localització predeterminada",
"default_locale_description": "Format de dates i números segons la configuració del navegador",
"delete": "Esborra",

View file

@ -523,6 +523,10 @@
"date_range": "Rozsah dat",
"day": "Den",
"deduplicate_all": "Odstranit všechny duplicity",
"deduplication_criteria_1": "Velikost obrázku v bajtech",
"deduplication_criteria_2": "Počet EXIF dat",
"deduplication_info": "Informace o deduplikaci",
"deduplication_info_description": "Pro automatický předvýběr položek a hromadné odstranění duplicit se zohledňuje:",
"default_locale": "Výchozí jazyk",
"default_locale_description": "Formátovat datumy a čísla podle místního prostředí prohlížeče",
"delete": "Smazat",
@ -921,7 +925,7 @@
"oldest_first": "Nejstarší první",
"onboarding": "Zahájení",
"onboarding_privacy_description": "Následující (volitelné) funkce jsou závislé na externích službách a lze je kdykoli zakázat v nastavení správy.",
"onboarding_theme_description": "Zvolte si barevné téma pro svou instanci. Můžete to později změnit v nastavení.",
"onboarding_theme_description": "Zvolte si barevný motiv pro svou instanci. Můžete to později změnit v nastavení.",
"onboarding_welcome_description": "Nastavíme vaši instanci pomocí několika běžných nastavení.",
"onboarding_welcome_user": "Vítej, {user}",
"online": "Online",
@ -1282,7 +1286,7 @@
"unselect_all": "Zrušit výběr všech",
"unselect_all_duplicates": "Zrušit výběr všech duplicit",
"unstack": "Zrušit seskupení",
"unstacked_assets_count": "{count, plural, one {Rozložena # položka} few {Rozloženy # položky} other {Rozloženo # položek}}",
"unstacked_assets_count": "{count, plural, one {Rozložená # položka} few {Rozložené # položky} other {Rozložených # položiek}}",
"untracked_files": "Nesledované soubory",
"untracked_files_decription": "Tyto soubory nejsou aplikaci známy. Mohou být výsledkem neúspěšných přesunů, přerušeného nahrávání nebo mohou zůstat pozadu kvůli chybě",
"up_next": "To je prozatím vše",

View file

@ -50,8 +50,16 @@
"map_gps_settings_description": "Карттӑпа GPS (каялла геоюмлани) ӗнерленисене йӗркелесе тӑрӑр",
"map_settings": "Карттӑ"
},
"albums": "Албумсем",
"albums_count": "{count, plural, one {{count, number} албум} other {{count, number} албумсем}}",
"all": "Пурте",
"all_albums": "Пурте албумсем",
"explore": "Тишкер",
"explorer": "Тишкерӳҫӗ",
"favorite": "Юратнӑ",
"favorite_or_unfavorite_photo": "Юратнӑ е юратман сӑнӳкерчӗк",
"favorites": "Юратнисем",
"feature_photo_updated": "Уйрӑм сӑнӳкерчӗк ҫӗнетнӗ",
"manage_sharing_with_partners": "Партнерсемпе пайланассине йӗркелесе пырӑр",
"map": "Карттӑ",
"map_marker_for_images": "{city}, {country} ҫинче ӳкернӗ ӳкерчӗксем валли карттӑ маркерӗ",
@ -60,10 +68,15 @@
"no_explore_results_message": "Хӑвӑр коллекципе киленмешкӗн сӑнӳкерчӗксем ытларах тийӗр.",
"open_in_openstreetmap": "OpenStreetMap-па уҫ",
"partner_sharing": "Партнер пайланӑвӗ",
"people": "Ҫынсем",
"photos": "Сӑнӳкерчӗксем",
"photos_and_videos": "Сӑнӳкерчӗксем тете Видеосем",
"photos_count": "{count, plural, one {{count, number} Сӑнӳкерчӗк} other {{count, number} Сӑнӳкерчӗксем}}",
"photos_from_previous_years": "Иртнӗ ҫулсенчи сӑнӳкерчӗксем",
"place": "Тӗл",
"places": "Тӗлсем",
"play": "Выля",
"play_memories": "Асаилӳсем выля",
"search_your_photos": "Сӑнӳкерчӗксене шырӑр",
"select_photos": "Сӑнӳкерчӗксем суйлӑр",
"sharing": "Пайлани",

View file

@ -523,6 +523,10 @@
"date_range": "Datointerval",
"day": "Dag",
"deduplicate_all": "Dedupliker alle",
"deduplication_criteria_1": "Billedstørrelse i bytes",
"deduplication_criteria_2": "Antal EXIF-data",
"deduplication_info": "Deduplikerings info",
"deduplication_info_description": "For automatisk at forudvælge emner og fjerne dubletter i bulk ser vi på:",
"default_locale": "Standardlokalitet",
"default_locale_description": "Formatér datoer og tal",
"delete": "Slet",
@ -644,6 +648,7 @@
"unable_to_add_partners": "Ikke i stand til at tilføje partnere",
"unable_to_add_remove_archive": "Kan Ikke {archived, select, true {fjerne aktiv fra} other {tilføje aktiv til}} Arkiv",
"unable_to_add_remove_favorites": "Kan ikke {favorite, select, true {tilføje aktiv til} other {fjerne aktiv fra}} favoritter",
"unable_to_archive_unarchive": "Ude af stand til at {arkiveret, vælg, sand {arkiv} andet {arkiv}}",
"unable_to_change_album_user_role": "Ikke i stand til at ændre albumbrugerens rolle",
"unable_to_change_date": "Ikke i stand til at ændre dato",
"unable_to_change_favorite": "Kan ikke ændre favorit for aktiv",
@ -730,6 +735,7 @@
"expired": "Udløbet",
"expires_date": "Udløber {date}",
"explore": "Udforsk",
"explorer": "Udforske",
"export": "Eksportér",
"export_as_json": "Eksportér som JSON",
"extension": "Udvidelse",
@ -917,6 +923,7 @@
"offline_paths_description": "Disse resultater kan være på grund af manuel sletning af filer, som ikke er en del af et eksternt bibliotek.",
"ok": "Ok",
"oldest_first": "Ældste først",
"onboarding": "Onboarding",
"onboarding_privacy_description": "Følgende (valgfrie) funktioner er afhængige af eksterne tjenester, og kan til enhver tid deaktiveres i administrationsindstillingerne.",
"onboarding_theme_description": "Vælg et farvetema til din forekomst. Du kan ændre dette senere i dine indstillinger.",
"onboarding_welcome_description": "Lad os få din instans sat op med nogle almindelige indstillinger.",
@ -1249,6 +1256,7 @@
"to_change_password": "Skift adgangskode",
"to_favorite": "Gør til favorit",
"to_login": "Login",
"to_parent": "Gå op",
"to_trash": "Papirkurv",
"toggle_settings": "Slå indstillinger til eller fra",
"toggle_theme": "Slå mørkt tema til eller fra",
@ -1334,7 +1342,7 @@
"warning": "Advarsel",
"week": "Uge",
"welcome": "Velkommen",
"welcome_to_immich": "Velkommen til immich",
"welcome_to_immich": "Velkommen til Immich",
"year": "År",
"years_ago": "{years, plural, one {# år} other {# år}} siden",
"yes": "Ja",

View file

@ -34,7 +34,7 @@
"authentication_settings_description": "Passwort-, OAuth- und sonstigen Authentifizierungseinstellungen verwalten",
"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": "Hintergrund-Aufgaben",
"background_task_job": "Hintergrundaufgaben",
"backup_database": "Datenbank sichern",
"backup_database_enable_description": "Sicherung der Datenbank aktivieren",
"backup_keep_last_amount": "Anzahl der aufzubewahrenden früheren Sicherungen",
@ -83,9 +83,9 @@
"job_concurrency": "{job} (Anzahl gleichzeitiger Prozesse)",
"job_created": "Aufgabe erstellt",
"job_not_concurrency_safe": "Diese Aufgabe ist nicht parallelisierungssicher.",
"job_settings": "Aufgaben-Einstellungen",
"job_settings_description": "Gleichzeitige Aufgaben-Prozesse verwalten",
"job_status": "Aufgaben-Status",
"job_settings": "Aufgabeneinstellungen",
"job_settings_description": "Die gleichzeitige Ausführung von Aufgaben verwalten",
"job_status": "Aufgabenstatus",
"jobs_delayed": "{jobCount, plural, other {# verzögert}}",
"jobs_failed": "{jobCount, plural, other {# fehlgeschlagen}}",
"library_created": "Bibliothek erstellt: {library}",
@ -211,7 +211,7 @@
"quota_size_gib": "Kontingent (GiB)",
"refreshing_all_libraries": "Alle Bibliotheken aktualisieren",
"registration": "Admin-Registrierung",
"registration_description": "Da du der erste Benutzer im System bist, wirst du als Admin zugewiesen und bist für administrative Aufgaben zuständig. Weitere Benutzer werden von dir erstellt.",
"registration_description": "Da du der erste Benutzer im System bist, wird dir die Rolle des Administrators zugewiesen, womit du für die Verwaltungsaufgaben verantwortlich bist. Weitere Benutzer werden von dir erstellt.",
"repair_all": "Alle reparieren",
"repair_matched_items": "{count, plural, one {# Eintrag} other {# Einträge}} gefunden",
"repaired_items": "{count, plural, one {# Eintrag} other {# Einträge}} repariert",
@ -287,10 +287,10 @@
"transcoding_constant_quality_mode": "Modus für konstante Qualität",
"transcoding_constant_quality_mode_description": "ICQ ist besser als CQP, aber einige Hardware-Beschleunigungsgeräte unterstützen diesen Modus nicht. Wenn diese Option gesetzt wird, wird der angegebene Modus bevorzugt, sobald qualitätsbasierte Kodierung verwendet wird. Wird von NVENC ignoriert, da es ICQ nicht unterstützt.",
"transcoding_constant_rate_factor": "Faktor der konstanten Rate (-crf)",
"transcoding_constant_rate_factor_description": "Video-Qualitätsstufe. Typische Werte sind 23 für H.264, 28 für HEVC, 31 für VP9 und 35 für AV1. Ein niedrigerer Wert ist besser, erzeugt aber größere Dateien.",
"transcoding_constant_rate_factor_description": "Videoqualitätsstufe. Typische Werte sind 23 für H.264, 28 für HEVC, 31 für VP9 und 35 für AV1. Ein niedrigerer Wert ist besser, erzeugt aber größere Dateien.",
"transcoding_disabled_description": "Videos nicht transkodieren, dies kann die Wiedergabe auf manchen Geräten beeinträchtigen",
"transcoding_encoding_options": "Kodierungsoptionen",
"transcoding_encoding_options_description": "Setze Codec, Auflösung, Qualität und andere Optionen für Kodierte Videos",
"transcoding_encoding_options_description": "Setze Codec, Auflösung, Qualität und andere Optionen für kodierte Videos",
"transcoding_hardware_acceleration": "Hardware-Beschleunigung",
"transcoding_hardware_acceleration_description": "Experimentell; viel schneller, aber bei gleicher Bitrate mit geringerer Qualität",
"transcoding_hardware_decoding": "Hardware-Dekodierung",
@ -304,7 +304,7 @@
"transcoding_max_keyframe_interval_description": "Legt den maximalen Frame-Abstand zwischen Keyframes fest. Niedrigere Werte verschlechtern die Komprimierungseffizienz, verbessern aber die Suchzeiten und können die Qualität in Szenen mit schnellen Bewegungen verbessern. Bei 0 wird dieser Wert automatisch eingestellt.",
"transcoding_optimal_description": "Videos mit einer höheren Auflösung als der Zielauflösung oder in einem nicht akzeptierten Format",
"transcoding_policy": "Transkodierungsrichtlinie",
"transcoding_policy_description": "Bestimme, wann ein Video Transkodiert wird",
"transcoding_policy_description": "Bestimme, wann ein Video transkodiert wird",
"transcoding_preferred_hardware_device": "Bevorzugtes Hardwaregerät",
"transcoding_preferred_hardware_device_description": "Gilt nur für VAAPI und QSV. Legt den für die Hardware-Transkodierung verwendeten dri-Node fest.",
"transcoding_preset_preset": "Voreinstellung (-preset)",
@ -312,14 +312,14 @@
"transcoding_reference_frames": "Referenz-Frames",
"transcoding_reference_frames_description": "Die Anzahl der Bilder, auf die bei der Komprimierung eines bestimmten Bildes Bezug genommen wird. Höhere Werte verbessern die Komprimierungseffizienz, verlangsamen aber die Kodierung. 0 setzt diesen Wert automatisch.",
"transcoding_required_description": "Nur Videos in einem nicht akzeptierten Format",
"transcoding_settings": "Video-Transkodierungseinstellungen",
"transcoding_settings_description": "Auflösungs- und Kodierungsinformationen von Videodateien verwalten",
"transcoding_settings": "Einstellungen für die Videotranskodierung",
"transcoding_settings_description": "Verwalten welche Videos transkodiert werden und wie diese verarbeitet werden",
"transcoding_target_resolution": "Ziel-Auflösung",
"transcoding_target_resolution_description": "Höhere Auflösungen können mehr Details erhalten, benötigen aber mehr Zeit für die Codierung, haben größere Dateigrößen und können die Reaktionszeit der Anwendung beeinträchtigen.",
"transcoding_temporal_aq": "Temporäre AQ",
"transcoding_temporal_aq_description": "Gilt nur für NVENC. Verbessert die Qualität von Szenen mit hohem Detailreichtum und geringen Bewegungen. Dies ist möglicherweise nicht mit älteren Geräten kompatibel.",
"transcoding_threads": "Threads",
"transcoding_threads_description": "Höhere Werte führen zu einer schnelleren Codierung, lassen dem Server aber weniger Spielraum für die Verarbeitung anderer Aufgaben, solange dies aktiv ist. Dieser Wert sollte nicht höher sein als die Anzahl der CPU-Kerne. Nutzt die maximale Auslastung, wenn der Wert auf 0 gesetzt ist.",
"transcoding_threads_description": "Höhere Werte führen zu einer schnelleren Kodierung, lassen dem Server jedoch weniger Spielraum für die Verarbeitung anderer Aufgaben im aktiven Zustand. Dieser Wert sollte nicht höher sein als die Anzahl der CPU-Kerne. Maximiert die Auslastung, wenn der Wert auf 0 gesetzt wird.",
"transcoding_tone_mapping": "Farbton-Mapping",
"transcoding_tone_mapping_description": "Versucht, das Aussehen von HDR-Videos bei der Konvertierung in SDR beizubehalten. Jeder Algorithmus geht unterschiedliche Kompromisse bei Farbe, Details und Helligkeit ein. Hable bewahrt Details, Mobius bewahrt die Farbe und Reinhard bewahrt die Helligkeit.",
"transcoding_transcode_policy": "Transcodierungsrichtlinie",
@ -328,11 +328,11 @@
"transcoding_two_pass_encoding_setting_description": "Führt eine Transkodierung in zwei Durchgängen durch, um besser kodierte Videos zu erzeugen. Wenn die maximale Bitrate aktiviert ist (erforderlich für die Verwendung mit H.264 und HEVC), verwendet dieser Modus einen Bitratenbereich, der auf der maximalen Bitrate basiert, und ignoriert CRF. Für VP9 kann CRF verwendet werden, wenn die maximale Bitrate deaktiviert ist.",
"transcoding_video_codec": "Video-Codec",
"transcoding_video_codec_description": "VP9 hat eine hohe Effizienz und Webkompatibilität, braucht aber länger für die Transkodierung. HEVC bietet eine ähnliche Leistung, ist aber weniger web-kompatibel. H.264 ist weitgehend kompatibel und lässt sich schnell transkodieren, erzeugt aber viel größere Dateien. AV1 ist der effizienteste Codec, wird aber von älteren Geräten nicht unterstützt.",
"trash_enabled_description": "Papierkorb-Funktionen aktivieren",
"trash_enabled_description": "Papierkorbfunktionen aktivieren",
"trash_number_of_days": "Anzahl der Tage",
"trash_number_of_days_description": "Anzahl der Tage, welche die Objekte im Papierkorb verbleiben, bevor sie endgültig entfernt werden",
"trash_settings": "Papierkorb-Einstellungen",
"trash_settings_description": "Papierkorb-Einstellungen verwalten",
"trash_settings": "Papierkorbeinstellungen",
"trash_settings_description": "Papierkorbeinstellungen verwalten",
"untracked_files": "Unverfolgte Dateien",
"untracked_files_description": "Diese Dateien werden nicht von der Anwendung getrackt. Sie können das Ergebnis fehlgeschlagener Verschiebungen, unterbrochener Uploads oder aufgrund eines Fehlers sein",
"user_cleanup_job": "Benutzer aufräumen",
@ -346,8 +346,8 @@
"user_password_reset_description": "Bitte gib dem Benutzer das temporäre Passwort und informiere ihn, dass das Passwort beim nächsten Login geändert werden muss.",
"user_restore_description": "Das Konto von <b>{user}</b> wird wiederhergestellt.",
"user_restore_scheduled_removal": "Wiederherstellung des Benutzers - geplante Entfernung am {date, date, long}",
"user_settings": "Benutzer-Einstellungen",
"user_settings_description": "Benutzer-Einstellungen verwalten",
"user_settings": "Benutzereinstellungen",
"user_settings_description": "Benutzereinstellungen verwalten",
"user_successfully_removed": "Benutzer {email} wurde erfolgreich entfernt.",
"version_check_enabled_description": "Versionsprüfung aktivieren",
"version_check_implications": "Die Funktion zur Versionsprüfung basiert auf regelmäßiger Kommunikation mit GitHub.com",
@ -523,10 +523,10 @@
"date_range": "Datumsbereich",
"day": "Tag",
"deduplicate_all": "Alle Duplikate entfernen",
"deduplication_info": "Deduplizierungsinformationen",
"deduplication_info_description": "Für die automatische Datei-Vorauswahl und das Deduplizieren aller Dateien berücksichtigen wir:",
"deduplication_criteria_1": "Bildgröße in Bytes",
"deduplication_criteria_2": "Anzahl der EXIF-Daten",
"deduplication_info": "Deduplizierungsinformationen",
"deduplication_info_description": "Für die automatische Datei-Vorauswahl und das Deduplizieren aller Dateien berücksichtigen wir:",
"default_locale": "Standard-Sprache",
"default_locale_description": "Datumsangaben und Zahlen basierend auf dem Gebietsschema des Browsers formatieren",
"delete": "Löschen",
@ -1324,7 +1324,7 @@
"version_history_item": "{version} am {date} installiert",
"video": "Video",
"video_hover_setting": "Videovorschau beim Hovern abspielen",
"video_hover_setting_description": "Video-Miniaturansicht wiedergeben, wenn der Mauszeiger über dem Element verweilt. Auch wenn diese Funktion deaktiviert ist, kann die Wiedergabe gestartet werden, indem der Mauszeiger auf das Wiedergabesymbol bewegt wird.",
"video_hover_setting_description": "Spiele die Miniaturansicht des Videos ab, wenn sich die Maus über dem Element befindet. Auch wenn die Funktion deaktiviert ist, kann die Wiedergabe gestartet werden, indem du mit der Maus über das Wiedergabesymbol fährst.",
"videos": "Videos",
"videos_count": "{count, plural, one {# Video} other {# Videos}}",
"view": "Ansicht",

View file

@ -289,6 +289,8 @@
"transcoding_constant_rate_factor": "Σταθερός παράγοντας ρυθμού (-crf)",
"transcoding_constant_rate_factor_description": "Επίπεδο ποιότητας βίντεο. Οι τυπικές τιμές είναι οι, 23 για το H.264, 28 για το HEVC, 31 για το VP9 και 35 για το AV1. Χαμηλότερες τιμές σημαίνουν καλύτερη ποιότητα, αλλά παράγουν μεγαλύτερα αρχεία.",
"transcoding_disabled_description": "Να μην μετατραπεί κανένα βίντεο γιατί δύναται να προκαλέσει πρόβλημα αναπαραγωγής σε ορισμένες συσκευές/εφαρμογές",
"transcoding_encoding_options": "Επιλογές κωδικοποίησης",
"transcoding_encoding_options_description": "Ορίστε τους κωδικοποιητές, την ανάλυση, την ποιότητα και άλλες επιλογές για τα κωδικοποιημένα βίντεο",
"transcoding_hardware_acceleration": "Επιτάχυνση υλικού",
"transcoding_hardware_acceleration_description": "Πειραματικό· πολύ πιο γρήγορο, αλλά θα έχει χαμηλότερη ποιότητα με τον ίδιο ρυθμό μετάδοσης (bitrate)",
"transcoding_hardware_decoding": "Αποκωδικοποίηση μέσω υλικού",
@ -301,6 +303,8 @@
"transcoding_max_keyframe_interval": "Μέγιστο χρονικό διάστημα μεταξύ των καρέ αναφοράς (keyframe)",
"transcoding_max_keyframe_interval_description": "Ορίζει το μέγιστο διάστημα μεταξύ των καρέ αναφοράς. Χαμηλότερες τιμές μειώνουν την αποδοτικότητα συμπίεσης, αλλά βελτιώνουν τον χρόνο αναζήτησης και μπορεί να βελτιώσουν την ποιότητα σε σκηνές με γρήγορη κίνηση. Η τιμή 0 ρυθμίζει αυτό το διάστημα αυτόματα.",
"transcoding_optimal_description": "Βίντεο με ανώτερη ανάλυση από την επιθυμητή ή σε μη αποδεκτή μορφή",
"transcoding_policy": "Πολιτική Μετακωδικοποίησης",
"transcoding_policy_description": "Ορίστε πότε θα γίνει η μετακωδικοποίηση ενός βίντεο",
"transcoding_preferred_hardware_device": "Προτιμώμενη συσκευή",
"transcoding_preferred_hardware_device_description": "Ισχύει μόνο για VAAPI και QSV. Ορίζει τον κόμβο DRI που χρησιμοποιείται για την επιτάχυνση υλικού κατά την κωδικοποίηση.",
"transcoding_preset_preset": "Προκαθορισμένη ρύθμιση (-preset)",
@ -309,7 +313,7 @@
"transcoding_reference_frames_description": "Ο αριθμός των καρέ που χρησιμοποιούνται ως αναφορά κατά τη συμπίεση ενός δεδομένου καρέ. Υψηλότερες τιμές βελτιώνουν την αποδοτικότητα της συμπίεσης, αλλά επιβραδύνουν την κωδικοποίηση. Η τιμή 0 ρυθμίζει αυτό τον αριθμό, αυτόματα.",
"transcoding_required_description": "Μόνο βίντεο που δεν είναι σε αποδεκτή μορφή",
"transcoding_settings": "Ρυθμίσεις μετατροπής βίντεο",
"transcoding_settings_description": "Διαχείριση της ανάλυσης και των πληροφοριών κωδικοποίησης των αρχείων βίντεο",
"transcoding_settings_description": "Διαχείριση των βίντεο που θα μετακωδικοποιηθούν και του τρόπου επεξεργασίας τους",
"transcoding_target_resolution": "Επιθυμητή ανάλυση",
"transcoding_target_resolution_description": "Οι υψηλότερες αναλύσεις μπορούν να διατηρήσουν περισσότερες λεπτομέρειες, αλλά απαιτούν περισσότερο χρόνο για κωδικοποίηση, παράγουν μεγαλύτερα αρχεία και μπορεί να μειώσουν την απόκριση της εφαρμογής.",
"transcoding_temporal_aq": "Χρονική Προσαρμοστική Ποιότητα AQ(Adaptive Quantization)",
@ -322,7 +326,7 @@
"transcoding_transcode_policy_description": "Πολιτική για το πότε πρέπει να μετατραπεί ένα βίντεο. Τα βίντεο HDR θα μετατρέπονται πάντα (εκτός αν η μετατροπή είναι απενεργοποιημένη).",
"transcoding_two_pass_encoding": "Κωδικοποίηση δύο περασμάτων",
"transcoding_two_pass_encoding_setting_description": "Μετατροπή σε δύο περάσματα για την παραγωγή βίντεο με καλύτερη κωδικοποίηση. Όταν είναι ενεργοποιημένος ο μέγιστος ρυθμός μετάδοσης (απαραίτητος για λειτουργία με H.264 και HEVC), αυτή η λειτουργία χρησιμοποιεί ένα εύρος ρυθμού μετάδοσης βάσει του μέγιστου ρυθμού μετάδοσης και αγνοεί το CRF. Στον κωδικοποιητή VP9, το CRF μπορεί να χρησιμοποιηθεί εάν ο μέγιστος ρυθμός μετάδοσης είναι απενεργοποιημένος.",
"transcoding_video_codec": "Κωδικοποιητής Βίντεο",
"transcoding_video_codec": "Κωδικοποιητής βίντεο",
"transcoding_video_codec_description": "Ο VP9 έχει υψηλή απόδοση και συμβατότητα με τον ιστότοπο, αλλά απαιτεί περισσότερο χρόνο για μετατροπή. Ο HEVC έχει παρόμοια απόδοση, αλλά χαμηλότερη συμβατότητα με τον ιστότοπο. Ο H.264 είναι ευρέως συμβατός και γρήγορος στη μετατροπή, αλλά παράγει πολύ μεγαλύτερα αρχεία. Ο AV1 είναι ο πιο αποδοτικός κωδικοποιητής, αλλά δεν υποστηρίζεται σε παλαιότερες συσκευές.",
"trash_enabled_description": "Ενεργοποίηση λειτουργιών Κάδου Απορριμμάτων",
"trash_number_of_days": "Αριθμός ημερών",
@ -519,6 +523,10 @@
"date_range": "Εύρος ημερομηνιών",
"day": "Ημέρα",
"deduplicate_all": "Αφαίρεση όλων των διπλότυπων",
"deduplication_criteria_1": "Μέγεθος εικόνας σε byte",
"deduplication_criteria_2": "Αριθμός δεδομένων EXIF",
"deduplication_info": "Πληροφορίες Αφαίρεσης Διπλοτύπων",
"deduplication_info_description": "Για να προεπιλέξουμε αυτόματα τα αρχεία και να αφαιρέσουμε τα διπλότυπα σε μαζική επεξεργασία, εξετάζουμε σε:",
"default_locale": "Προεπιλεγμένη Τοπική Ρύθμιση",
"default_locale_description": "Μορφοποιήστε τις ημερομηνίες και τους αριθμούς με βάση την τοπική ρύθμιση του προγράμματος περιήγησής σας",
"delete": "Διαγραφή",
@ -755,6 +763,7 @@
"get_help": "Ζητήστε βοήθεια",
"getting_started": "Ξεκινώντας",
"go_back": "Πηγαίνετε πίσω",
"go_to_folder": "Μετάβαση στο φάκελο",
"go_to_search": "Πηγαίνετε στην αναζήτηση",
"group_albums_by": "Ομαδοποίηση άλμπουμ κατά...",
"group_no": "Καμία ομοδοποίηση",

View file

@ -822,6 +822,7 @@
"latest_version": "Latest Version",
"latitude": "Latitude",
"leave": "Leave",
"lens_model": "Lens model",
"let_others_respond": "Let others respond",
"level": "Level",
"library": "Library",
@ -1113,6 +1114,7 @@
"search_camera_model": "Search camera model...",
"search_city": "Search city...",
"search_country": "Search country...",
"search_for": "Search for",
"search_for_existing_person": "Search for existing person",
"search_no_people": "No people",
"search_no_people_named": "No people named \"{name}\"",

View file

@ -523,6 +523,10 @@
"date_range": "Rango de fechas",
"day": "Día",
"deduplicate_all": "Deduplicar todo",
"deduplication_criteria_1": "Tamaño de imagen en bytes",
"deduplication_criteria_2": "Conteo de datos EXIF",
"deduplication_info": "Información de Deduplicación",
"deduplication_info_description": "Para automáticamente preseleccionar recursos y eliminar duplicados en conjunto, nosotros consideramos lo siguiente:",
"default_locale": "Configuración regional predeterminada",
"default_locale_description": "Formatee fechas y números según la configuración regional de su navegador",
"delete": "Eliminar",

View file

@ -523,6 +523,10 @@
"date_range": "Kuupäevavahemik",
"day": "Päev",
"deduplicate_all": "Dedubleeri kõik",
"deduplication_criteria_1": "Pildi suurus baitides",
"deduplication_criteria_2": "EXIF andmete hulk",
"deduplication_info": "Dedubleerimise info",
"deduplication_info_description": "Üksuste automaatsel eelvalimisel ja duplikaatide eemaldamisel võetakse arvesse:",
"default_locale": "Vaikimisi lokaat",
"default_locale_description": "Vorminda kuupäevad ja numbrid vastavalt brauseri lokaadile",
"delete": "Kustuta",
@ -748,6 +752,7 @@
"filetype": "Failitüüp",
"filter_people": "Filtreeri isikuid",
"find_them_fast": "Leia teda kiiresti nime järgi otsides",
"fix_incorrect_match": "Paranda ebaõige vaste",
"folders": "Kaustad",
"folders_feature_description": "Kaustavaate abil failisüsteemis olevate fotode ja videote sirvimine",
"forward": "Edasi",
@ -755,6 +760,7 @@
"get_help": "Küsi abi",
"getting_started": "Alustamine",
"go_back": "Tagasi",
"go_to_folder": "Mine kausta",
"go_to_search": "Otsingusse",
"group_albums_by": "Grupeeri albumid...",
"group_no": "Ära grupeeri",
@ -1029,6 +1035,7 @@
"reassigned_assets_to_existing_person": "{count, plural, one {# üksus} other {# üksust}} seostatud {name, select, null {olemasoleva isikuga} other {isikuga {name}}}",
"reassigned_assets_to_new_person": "{count, plural, one {# üksus} other {# üksust}} seostatud uue isikuga",
"reassing_hint": "Seosta valitud üksused olemasoleva isikuga",
"recent": "Hiljutine",
"recent-albums": "Hiljutised albumid",
"recent_searches": "Hiljutised otsingud",
"refresh": "Värskenda",
@ -1189,6 +1196,7 @@
"sort_items": "Üksuste arv",
"sort_modified": "Muutmise aeg",
"sort_oldest": "Vanim foto",
"sort_people_by_similarity": "Sorteeri isikud sarnasuse järgi",
"sort_recent": "Uusim foto",
"sort_title": "Pealkiri",
"source": "Lähtekood",
@ -1309,6 +1317,7 @@
"view_all_users": "Vaata kõiki kasutajaid",
"view_in_timeline": "Vaata ajajoonel",
"view_links": "Vaata linke",
"view_name": "Vaade",
"view_next_asset": "Vaata järgmist üksust",
"view_previous_asset": "Vaata eelmist üksust",
"view_stack": "Vaata virna",

View file

@ -182,7 +182,7 @@
"oauth_auto_register_description": "Rekisteröi uudet OAuth:lla kirjautuvat käyttäjät automaattisesti",
"oauth_button_text": "Painikkeen teksti",
"oauth_client_id": "Client ID",
"oauth_client_secret": "Client Secret",
"oauth_client_secret": "Asiakassalaisuusavain",
"oauth_enable_description": "Kirjaudu käyttäen OAuthia",
"oauth_issuer_url": "Toimitsijan URL",
"oauth_mobile_redirect_uri": "Mobiilin uudellenohjaus-URI",
@ -289,11 +289,13 @@
"transcoding_constant_rate_factor": "Vakionopeustekijä",
"transcoding_constant_rate_factor_description": "Videon laatu. Yleisimmät arvot ovat 23 H.264:lle, 28 HEVC:lle, 31 VP9:lle ja 35 AV1:lle. Matalampi arvo on parempi, mutta tekee isompia tiedostoja.",
"transcoding_disabled_description": "Älä muunna videoita. Voi joissakin päätelaitteissa aiheuttaa videotoiston toimimattomuutta",
"transcoding_encoding_options": "Enkoodausasetukset",
"transcoding_encoding_options_description": "Aseta koodekit, tarkkuus, laatu ja muut asetukset enkoodatuille videoille",
"transcoding_hardware_acceleration": "Laitteistokiihdytys",
"transcoding_hardware_acceleration_description": "Kokeellinen. Paljon nopeampi, mutta huonompaa laatua samalla bittinopeudella",
"transcoding_hardware_decoding": "Laitteiston dekoodaus",
"transcoding_hardware_decoding_setting_description": "Ottaa käyttöön end-to-end kiihdytyksen pelkän muuntamisen sijasta. Ei välttämättä toimi kaikissa videoissa.",
"transcoding_hevc_codec": "HEVC koodekki",
"transcoding_hevc_codec": "HEVC-koodekki",
"transcoding_max_b_frames": "B-kehysten enimmäismäärä",
"transcoding_max_b_frames_description": "Korkeampi arvo parantaa pakkausta, mutta hidastaa enkoodausta. Ei välttämättä ole yhteensopiva vanhempien laitteiden kanssa. 0 poistaa B-kehykset käytöstä, -1 määrittää arvon automaattisesti.",
"transcoding_max_bitrate": "Suurin bittinopeus",
@ -301,6 +303,8 @@
"transcoding_max_keyframe_interval": "Suurin avainkehysten väli",
"transcoding_max_keyframe_interval_description": "Asettaa avainkehysten välin maksimiarvon. Alempi arvo huonontaa pakkauksen tehoa, mutta parantaa hakuaikoja ja voi parantaa laatua nopealiikkeisissä kohtauksissa. 0 asettaa arvon automaattisesti.",
"transcoding_optimal_description": "Videot, joiden resoluutio on korkeampi kuin kohteen, tai ei hyväksytyssä formaatissa",
"transcoding_policy": "Transkoodauskäytäntö",
"transcoding_policy_description": "Aseta milloin video transkoodataan",
"transcoding_preferred_hardware_device": "Ensisijainen laite",
"transcoding_preferred_hardware_device_description": "On voimassa vain VAAPI ja QSV -määritteille. Asettaa laitteistokoodauksessa käytetyn DRI noodin.",
"transcoding_preset_preset": "Esiasetus (-asetus)",
@ -309,7 +313,7 @@
"transcoding_reference_frames_description": "Viittaavien kehysten määrä kun tiettyä kehystä pakataan. Korkeampi arvo parantaa pakkausta mutta hidastaa enkoodausta. 0 määrittää arvon automaattisesti.",
"transcoding_required_description": "Vain videoille, jotka eivät ole hyväksytyssä muodossa",
"transcoding_settings": "Videoiden transkoodausasetukset",
"transcoding_settings_description": "Hallitse videoiden resoluutiota ja koodaustietueita",
"transcoding_settings_description": "Hallitse, mitkä videot transkoodataan ja miten niitä käsitellään",
"transcoding_target_resolution": "Kohderesoluutio",
"transcoding_target_resolution_description": "Korkeampi resoluutio on tarkempi, mutta kestää kauemmin enkoodata, vie enemmän tilaa ja voi hidastaa sovelluksen responsiivisuutta.",
"transcoding_temporal_aq": "Temporal AQ",
@ -519,6 +523,10 @@
"date_range": "Päivämäärän rajaus",
"day": "Päivä",
"deduplicate_all": "Poista kaikkien kaksoiskappaleet",
"deduplication_criteria_1": "Kuvan koko tavuina",
"deduplication_criteria_2": "EXIF-datan määrä",
"deduplication_info": "Deduplikaatiotieto",
"deduplication_info_description": "Jotta voimme automaattisesti esivalita aineistot ja poistaa duplikaatit suurina erinä, tarkastelemme:",
"default_locale": "Oletuskieliasetus",
"default_locale_description": "Muotoile päivämäärät ja numerot selaimesi kielen mukaan",
"delete": "Poista",
@ -532,7 +540,7 @@
"delete_shared_link": "Poista jaettu linkki",
"delete_tag": "Poista tunniste",
"delete_tag_confirmation_prompt": "Haluatko varmasti poistaa tunnisteen {tagName}?",
"delete_user": "Poista käyttäjä",
"delete_user": "Poista käyttäjä pysyvästi",
"deleted_shared_link": "Jaettu linkki poistettu",
"deletes_missing_assets": "Poistaa levyltä puuttuvat resurssit",
"description": "Kuvaus",
@ -755,6 +763,7 @@
"get_help": "Hae apua",
"getting_started": "Aloittaminen",
"go_back": "Palaa",
"go_to_folder": "Mene kansioon",
"go_to_search": "Siirry hakuun",
"group_albums_by": "Ryhmitä albumi...",
"group_no": "Ei ryhmitystä",
@ -1141,6 +1150,7 @@
"server_version": "Palvelimen versio",
"set": "Aseta",
"set_as_album_cover": "Aseta albumin kanneksi",
"set_as_featured_photo": "Käytä esittelykuvana",
"set_as_profile_picture": "Aseta profiilikuvaksi",
"set_date_of_birth": "Aseta syntymäaika",
"set_profile_picture": "Aseta profiilikuva",
@ -1196,6 +1206,7 @@
"sort_items": "Tietueiden määrä",
"sort_modified": "Muokkauspäivä",
"sort_oldest": "Vanhin kuva",
"sort_people_by_similarity": "Lajittele ihmiset samankaltaisuuden mukaan",
"sort_recent": "Tuorein kuva",
"sort_title": "Otsikko",
"source": "Lähdekoodi",

View file

@ -1,5 +1,5 @@
{
"about": "I-refresh",
"about": "Tungkol sa app na ito",
"account": "Account",
"account_settings": "Mga Setting ng Account",
"acknowledge": "Tanggapin",
@ -24,9 +24,15 @@
"added_to_favorites_count": "Idinagdag ang {count, number} sa mga paborito",
"admin": {
"asset_offline_description": "Ang external library asset na ito ay hindi na makikita sa disk at nailipat na sa trash. Kung ang file ay nailipat sa loob ng library, tignan ang iyong timeline para sa kaukulang asset. Para maibalik ang asset na ito, siguraduhin na ang file path ay maa-access ng Immich para iscan ang library.",
"authentication_settings_disable_all": "Sigurado ka bang gusto mo patayin lahat ng paraan ng pag-login? Ang pag-login ay ganap na idi-disable.",
"authentication_settings_reenable": "Para i-enable ulit, gamitin ang <link>Server Command</link>.",
"cleared_jobs": "Lahat nang mga trabaho para sa {job} ay tinanggal na",
"confirm_delete_library": "Sigurado ka na gusto mo tanggalin ang {library} library?",
"confirm_email_below": "Para isigurado, i-type ito sa baba: \"{email}\"",
"confirm_user_password_reset": "Sigurado ka na gusto mo i-reset ang password ni {user}?",
"disable_login": "I-disable ang login",
"force_delete_user_warning": "BABALA:",
"force_delete_user_warning": "BABALA: Tatanggalin itong user at lahat ng asset nila, Hindi ito mababawi at ang kanilang files ay hindi na mababalik",
"image_format": "Format",
"library_import_path_description": "Tukuyin ang folder na i-import. Ang folder na ito, kasama ang subfolders, ay mag sa-scan para sa mga imahe at mga videos.",
"note_cannot_be_changed_later": "TANDAAN: Hindi na ito pwede baguhin sa susunod!",
"repair_all": "Ayusin lahat",
@ -40,5 +46,22 @@
"are_these_the_same_person": "Itong tao na ito ay parehas?",
"asset_adding_to_album": "Dinadagdag sa album...",
"asset_filename_is_offline": "Offline ang asset {filename}",
"asset_uploading": "Ina-upload..."
"asset_uploading": "Ina-upload...",
"discord": "Discord",
"documentation": "Dokumentasyion",
"done": "Tapos na",
"download": "I-download",
"edit": "I-edit",
"edited": "Inedit",
"editor_close_without_save_title": "Isara ang editor?",
"email": "Email",
"exif": "Exif",
"explore": "I-explore",
"export": "I-export",
"has_quota": "May quota",
"hour": "Oras",
"jobs": "Mga trabaho",
"language": "Wika",
"leave": "Umalis",
"no_results": "Walang resulta"
}

View file

@ -523,6 +523,10 @@
"date_range": "Plage de dates",
"day": "Jour",
"deduplicate_all": "Dédupliquer tout",
"deduplication_criteria_1": "Taille de l'image en octets",
"deduplication_criteria_2": "Nombre de données EXIF",
"deduplication_info": "Info de déduplication",
"deduplication_info_description": "Pour présélectionner automatiquement les médias et supprimer les doublons en masse, nous examinons :",
"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",

View file

@ -131,7 +131,7 @@
"machine_learning_smart_search_description": "חפש תמונות באופן סמנטי באמצעות הטמעות של CLIP",
"machine_learning_smart_search_enabled": "אפשר חיפוש חכם",
"machine_learning_smart_search_enabled_description": "אם מושבת, תמונות לא יקודדו לחיפוש חכם.",
"machine_learning_url_description": "כתובת האתר של שרת למידת המכונה. אם ניתן יותר מכתובת אחת, כל שרת ינסה בתורו עד אשר יענה בחיוב, בסדר התחלתי.",
"machine_learning_url_description": "כתובת האתר של שרת למידת המכונה. אם ניתנת יותר מכתובת אחת, כל שרת ינסה בתורו עד אשר יענה בחיוב, בסדר התחלתי.",
"manage_concurrency": "נהל בו-זמניות",
"manage_log_settings": "נהל הגדרות רישום ביומן",
"map_dark_style": "עיצוב כהה",
@ -289,8 +289,8 @@
"transcoding_constant_rate_factor": "גורם קצב קבוע (-crf)",
"transcoding_constant_rate_factor_description": "רמת איכות וידאו. ערכים אופייניים הם הערך 23 עבור H.264, הערך 28 עבור HEVC, הערך 31 עבור VP9, והערך 35 עבור AV1. נמוך יותר הוא טוב יותר, אבל מייצר קבצים גדולים יותר.",
"transcoding_disabled_description": "אין להמיר את הקידוד של שום סרטון, עלול לגרום לכך שהניגון לא יפעל במכשירים מסוימים",
"transcoding_encoding_options": "אפשרויות הקידוד",
"transcoding_encoding_options_description": "הגדר מקודדים, רזולוציה, איכות ואפשרויות נוספות עבור הסרטונים המקודדים",
"transcoding_encoding_options": "אפשרויות קידוד",
"transcoding_encoding_options_description": "הגדר מקודדים, רזולוציה, איכות ואפשרויות אחרות עבור הסרטונים המקודדים",
"transcoding_hardware_acceleration": "האצת חומרה",
"transcoding_hardware_acceleration_description": "ניסיוני; המרה הרבה יותר מהירה, אבל תהיה באיכות נמוכה יותר באותו קצב סיביות",
"transcoding_hardware_decoding": "פענוח חומרה",
@ -304,7 +304,7 @@
"transcoding_max_keyframe_interval_description": "מגדיר את מרחק הפריימים המרבי בין תמונות מפתח. ערכים נמוכים גורעים את יעילות הדחיסה, אך משפרים את זמני החיפוש ועשויים לשפר את האיכות בסצנות עם תנועה מהירה. 0 מגדיר ערך זה באופן אוטומטי.",
"transcoding_optimal_description": "סרטונים גבוהים מרזולוציית היעד או לא בפורמט מקובל",
"transcoding_policy": "מדיניות המרה",
"transcoding_policy_description": "הגדר מתי וידאו יעבור המרה",
"transcoding_policy_description": "הגדר מתי סרטון יעבור המרת קידוד",
"transcoding_preferred_hardware_device": "מכשיר חומרה מועדף",
"transcoding_preferred_hardware_device_description": "חל רק על VAAPI ו-QSV. מגדיר את צומת ה-dri המשמש להמרת קידוד של חומרה.",
"transcoding_preset_preset": "הגדרות קבועות מראש (-preset)",
@ -313,7 +313,7 @@
"transcoding_reference_frames_description": "מספר הפריימים לייחוס בעת דחיסה של פריים נתון. ערכים גבוהים יותר משפרים את יעילות הדחיסה, אך מאטים את הקידוד. 0 מגדיר את הערך זה באופן אוטומטי.",
"transcoding_required_description": "רק סרטונים שאינם בפורמט מקובל",
"transcoding_settings": "הגדרות המרת קידוד סרטונים",
"transcoding_settings_description": "נהל אילו סרטונים לעבד וכיצד לעבד אותם",
"transcoding_settings_description": "נהל אילו סרטונים להמיר וכיצד לעבד אותם",
"transcoding_target_resolution": "רזולוציה יעד",
"transcoding_target_resolution_description": "רזולוציות גבוהות יותר יכולות לשמר פרטים רבים יותר אך לוקחות זמן רב יותר לקידוד, יש להן גדלי קבצים גדולים יותר, ויכולות להפחית את תגובתיות היישום.",
"transcoding_temporal_aq": "Temporal AQ",
@ -326,7 +326,7 @@
"transcoding_transcode_policy_description": "מדיניות לגבי מתי יש להמיר קידוד של סרטון. תמיד יומר הקידוד של סרטוני HDR (למעט אם המרת קידוד מושבתת).",
"transcoding_two_pass_encoding": "קידוד בשני מעברים",
"transcoding_two_pass_encoding_setting_description": "המר קידוד בשני מעברים כדי לייצר סרטונים מקודדים טוב יותר. כאשר קצב סיביות מרבי מופעל (נדרש כדי שזה יעבוד עם H.264 ו-HEVC), מצב זה משתמש בטווח קצב סיביות המבוסס על קצב הסיביות המרבי ומתעלם מ-CRF. עבור VP9, ניתן להשתמש ב-CRF אם קצב סיביות מרבי מושבת.",
"transcoding_video_codec": "מקודדי וידאו",
"transcoding_video_codec": "מקודד סרטון",
"transcoding_video_codec_description": "ל-VP9 יש יעילות גבוהה ותאימות רשת, אבל לוקח יותר זמן להמיר את הקידוד עבורו. HEVC מתפקד באופן דומה, אך בעל תאימות רשת נמוכה יותר. H.264 תואם באופן נרחב ומהיר להמיר את קידודו, אבל הוא מייצר קבצים גדולים בהרבה. AV1 הוא הקידוד היעיל ביותר אך לוקה בתמיכה במכשירים ישנים יותר.",
"trash_enabled_description": "הפעל את תכונות האשפה",
"trash_number_of_days": "מספר הימים",
@ -522,12 +522,16 @@
"date_of_birth_saved": "תאריך לידה נשמר בהצלחה",
"date_range": "טווח תאריכים",
"day": "יום",
"deduplicate_all": "בטל כפילויות של הכל",
"default_locale": "אזור שפה ברירת מחדל",
"default_locale_description": "עצב תאריכים ומספרים על סמך אזור השפה של הדפדפן שלך",
"deduplicate_all": "ביטול כל הכפילויות",
"deduplication_criteria_1": "גודל תמונה בבתים",
"deduplication_criteria_2": "ספירת נתוני EXIF",
"deduplication_info": "מידע על ביטול כפילויות",
"deduplication_info_description": "כדי לבחור מראש נכסים באופן אוטומטי ולהסיר כפילויות בכמות גדולה, אנו מסתכלים על:",
"default_locale": "שפת ברירת מחדל",
"default_locale_description": "פורמט תאריכים ומספרים מבוסס שפת הדפדפן שלך",
"delete": "מחק",
"delete_album": "מחק אלבום",
"delete_api_key_prompt": "האם את/ה בטוח/ה שברצונך למחוק מפתח API זה?",
"delete_api_key_prompt": "האם את/ה בטוח/ה שברצונך למחוק מפתח ה-API הזה?",
"delete_duplicates_confirmation": "האם את/ה בטוח/ה שברצונך למחוק לצמיתות את הכפילויות האלה?",
"delete_key": "מחק מפתח",
"delete_library": "מחק ספרייה",
@ -544,13 +548,13 @@
"direction": "כיוון",
"disabled": "מושבת",
"disallow_edits": "אל תאפשר עריכות",
"discord": "דיסקורד",
"discover": לה",
"dismiss_all_errors": "התעלם מכל השגיאות",
"dismiss_error": "התעלם מהשגיאה",
"display_options": "הצג אפשרויות",
"discord": "Discord",
"discover": ילוי",
"dismiss_all_errors": "התעלמות מכל השגיאות",
"dismiss_error": "התעלמות מהשגיאה",
"display_options": "הצגת אפשרויות",
"display_order": "סדר תצוגה",
"display_original_photos": "הצג תמונות מקוריות",
"display_original_photos": "הצגת תמונות מקוריות",
"display_original_photos_setting_description": "העדף להציג את התמונה המקורית בעת צפיית נכס במקום תמונות ממוזערות כאשר הנכס המקורי תומך בתצוגה בדפדפן. זה עלול לגרום לתמונות להיות מוצגות באיטיות.",
"do_not_show_again": "אל תציג את ההודעה הזאת שוב",
"documentation": "תיעוד",

View file

@ -29,7 +29,7 @@
"added_to_favorites_count": "{count, number} hozzáadva a kedvencekhez",
"admin": {
"add_exclusion_pattern_description": "Kihagyási minták (pattern) megadása. A *, ** és ? helyettesítő karakterek engedélyezettek. Pl. a \"Raw\" könyvtárban tárolt összes fájl kihagyásához használható a \"**/Raw/**\". Minden \".tif\" fájl kihagyása az összes mappában: \"**/*.tif\". Abszolút elérési útvonal kihagyása: \"/kihagyni/kivant/mappa/**\".",
"asset_offline_description": "Ez a külső képtárban lévő elem már nem található, ezért a lomtárba került. Ha a fájl a képtáron belül lett áthelyezve, akkor ellenőrizd, hogy továbbra is látható az idővonaladon. Az elem visszaállításához győződj meg róla, hogy az alábbi mappa az Immich számára elérhető, majd újra átfésültesd át a képtárat.",
"asset_offline_description": "Ez a külső képtárban lévő elem már nem található, ezért a lomtárba került. Ha a fájl a képtáron belül lett áthelyezve, akkor ellenőrizd, hogy továbbra is látható az idővonaladon. Az elem visszaállításához győződj meg róla, hogy az alábbi mappa az Immich számára elérhető, majd újra fésüld át a képtárat.",
"authentication_settings": "Hitelesítési beállítások",
"authentication_settings_description": "Jelszó, OAuth és egyéb hitelesítési beállítások kezelése",
"authentication_settings_disable_all": "Biztosan letiltod az összes bejelentkezési módot? A bejelentkezés teljesen le lesz tiltva.",
@ -523,6 +523,10 @@
"date_range": "Dátum intervallum",
"day": "Nap",
"deduplicate_all": "Az Összes Deduplikálása",
"deduplication_criteria_1": "Kép mérete bájtokban",
"deduplication_criteria_2": "EXIF adatok mennyisége",
"deduplication_info": "Deduplikációs Infó",
"deduplication_info_description": "Az automatikus előválogatáshoz és a duplikátumok tömeges eltávolításához a következőket vizsgáljuk:",
"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",

View file

@ -523,6 +523,10 @@
"date_range": "Jangka tanggal",
"day": "Hari",
"deduplicate_all": "Deduplikat Semua",
"deduplication_criteria_1": "Ukuran gambar dalam bita",
"deduplication_criteria_2": "Hitungan data EXIF",
"deduplication_info": "Info deduplikasi",
"deduplication_info_description": "Untuk memilih aset secara otomatis dan menghapus duplikat secara massal, kami melihat:",
"default_locale": "Lokal Bawaan",
"default_locale_description": "Format tanggal dan angka berdasarkan lokal peramban Anda",
"delete": "Hapus",

View file

@ -289,6 +289,8 @@
"transcoding_constant_rate_factor": "Fattore di rateo costante (-crf)",
"transcoding_constant_rate_factor_description": "Livello di qualità video. I valori tipici sono 23 per H.264, 28 per HEVC, 31 per VP9 e 35 per AV1. Un valore inferiore indica una qualità migliore, ma produce file di dimensioni maggiori.",
"transcoding_disabled_description": "Non transcodificare alcun video, potrebbe rompere la riproduzione su alcuni client",
"transcoding_encoding_options": "Opzioni di codifica",
"transcoding_encoding_options_description": "Imposta codecs, risoluzione, qualità ed altre opzioni per i video codificati",
"transcoding_hardware_acceleration": "Accelerazione Hardware",
"transcoding_hardware_acceleration_description": "Sperimentale; molto più veloce, ma avrà una qualità inferiore allo stesso bitrate",
"transcoding_hardware_decoding": "Decodifica hardware",
@ -301,6 +303,8 @@
"transcoding_max_keyframe_interval": "Intervallo massimo dei keyframe",
"transcoding_max_keyframe_interval_description": "Imposta la distanza massima tra i keyframe. Valori più bassi peggiorano l'efficienza di compressione, però migliorano i tempi di ricerca e possono migliorare la qualità nelle scene con movimenti rapidi. 0 imposta questo valore automaticamente.",
"transcoding_optimal_description": "Video con risoluzione più alta rispetto alla risoluzione desiderata o in formato non accettato",
"transcoding_policy": "Politiche di transcodifica",
"transcoding_policy_description": "Imposta quando un video sarà transcodificato",
"transcoding_preferred_hardware_device": "Dispositivo hardware preferito",
"transcoding_preferred_hardware_device_description": "Si applica solo a VAAPI e QSV. Imposta il nodo DRI utilizzato per la transcodifica hardware.",
"transcoding_preset_preset": "Preset (-preset)",
@ -309,7 +313,7 @@
"transcoding_reference_frames_description": "Il numero di frame da prendere in considerazione nel comprimere un determinato frame. Valori più alti migliorano l'efficienza di compressione, ma rallentano la codifica. 0 imposta questo valore automaticamente.",
"transcoding_required_description": "Solo video che non sono in un formato accettato",
"transcoding_settings": "Impostazioni Trascodifica Video",
"transcoding_settings_description": "Gestisci le impostazioni di risoluzione e codifica dei file video",
"transcoding_settings_description": "Gestisci quali video transcodificare e come processarli",
"transcoding_target_resolution": "Risoluzione desiderata",
"transcoding_target_resolution_description": "Risoluzioni più elevate possono preservare più dettagli ma richiedono più tempo per la codifica, producono file di dimensioni maggiori e possono ridurre la reattività dell'applicazione.",
"transcoding_temporal_aq": "AQ temporale",
@ -322,7 +326,7 @@
"transcoding_transcode_policy_description": "Politica che determina quando un video deve essere trascodificato. I video HDR verranno sempre trascodificati (eccetto quando la trascodifica è disabilitata).",
"transcoding_two_pass_encoding": "Codifica a due passaggi",
"transcoding_two_pass_encoding_setting_description": "Trascodifica in due passaggi per produrre video codificati migliori. Quando il bitrate massimo è abilitato (necessario affinché funzioni con H.264 e HEVC), questa modalità utilizza un intervallo di bitrate basato sul bitrate massimo e ignora CRF. Per VP9, CRF può essere utilizzato se il bitrate massimo è disabilitato.",
"transcoding_video_codec": "Codifica Video",
"transcoding_video_codec": "Codec video",
"transcoding_video_codec_description": "VP9 ha alta efficienza e compatibilità web, ma richiede più tempo per la trascodifica. HEVC ha prestazioni simili, ma una minore compatibilità web. H.264 è ampiamente compatibile e veloce da transcodificare, ma produce file molto più grandi. AV1 è il codec più efficiente, ma non è supportato sui dispositivi più vecchi.",
"trash_enabled_description": "Abilita Funzionalità Cestino",
"trash_number_of_days": "Numero di giorni",
@ -519,14 +523,18 @@
"date_range": "Intervallo di date",
"day": "Giorno",
"deduplicate_all": "De-duplica Tutti",
"deduplication_criteria_1": "Dimensione immagine in byte",
"deduplication_criteria_2": "Numero di dati EXIF",
"deduplication_info": "Informazioni di deduplicazione",
"deduplication_info_description": "Per preselezionare automaticamente gli asset e rimuovere i duplicati in massa, verifichiamo:",
"default_locale": "Localizzazione preimpostata",
"default_locale_description": "Formatta la data e i numeri in base al locale del tuo browser",
"default_locale_description": "Formatta la data e i numeri in base alle impostazioni del tuo browser",
"delete": "Elimina",
"delete_album": "Elimina album",
"delete_api_key_prompt": "Sei sicuro di voler eliminare questa chiave API?",
"delete_duplicates_confirmation": "Sei sicuro di voler eliminare questi duplicati per sempre?",
"delete_key": "Elimina chiave",
"delete_library": "Elimina Libreria",
"delete_library": "Elimina libreria",
"delete_link": "Elimina link",
"delete_others": "Elimina gli altri",
"delete_shared_link": "Elimina link condiviso",
@ -755,6 +763,7 @@
"get_help": "Chiedi Aiuto",
"getting_started": "Iniziamo",
"go_back": "Torna indietro",
"go_to_folder": "Vai alla cartella",
"go_to_search": "Vai alla ricerca",
"group_albums_by": "Raggruppa album in base a...",
"group_no": "Nessun raggruppamento",

View file

@ -1,5 +1,5 @@
{
"about": "Atnaujinti",
"about": "Apie",
"account": "Paskyra",
"account_settings": "Paskyros nustatymai",
"acknowledge": "Patvirtinti",
@ -28,8 +28,9 @@
"added_to_favorites": "Pridėta prie mėgstamiausių",
"added_to_favorites_count": "{count, plural, one {# pridėtas} few {# pridėti} other {# pridėta}} prie mėgstamiausių",
"admin": {
"asset_offline_description": "Šis išorinės bibliotekos elementas nebepasiekiamas diske ir buvo perkeltas į šiukšliadėžę. Jei failas buvo perkeltas toje pačioje bibliotekoje, laiko skalėje rasite naują atitinkamą elementą. Jei norite šį elementą atkurti, įsitikinkite, kad Immich gali pasiekti failą žemiau nurodytu adresu, ir suvykdykite bibliotekos skanavimą.",
"authentication_settings": "Autentifikavimo nustatymai",
"authentication_settings_description": "Tvarkyti slaptažodžių, OAuth ir kitus autentifikavimo parametrus",
"authentication_settings_description": "Tvarkyti slaptažodžių, OAuth ir kitus autentifikavimo nustatymus",
"authentication_settings_disable_all": "Ar tikrai norite išjungti visus prisijungimo būdus? Prisijungimas bus visiškai išjungtas.",
"authentication_settings_reenable": "Norėdami vėl įjungti, naudokite <link>Serverio komandą</link>.",
"background_task_job": "Foninės užduotys",
@ -37,14 +38,20 @@
"backup_database_enable_description": "Įgalinti duomenų bazės atsarginė kopijas",
"backup_keep_last_amount": "Išsaugomų ankstesnių atsarginių duomenų bazės kopijų skaičius",
"backup_settings": "Atsarginės kopijos nustatymai",
"backup_settings_description": "Tvarkyti duomenų bazės atsarginės kopijos nustatymus",
"check_all": "Pažymėti viską",
"config_set_by_file": "Konfigūracija dabar nustatyta konfigūracinio failo",
"cleared_jobs": "Išvalyti darbai: {job}",
"config_set_by_file": "Konfigūracija nustatyta pagal konfigūracinį failą",
"confirm_delete_library": "Ar tikrai norite ištrinti {library} biblioteką?",
"confirm_delete_library_assets": "Ar tikrai norite ištrinti šią biblioteką? Šis veiksmas ištrins {count, plural, one {# contained asset} other {all # contained assets}} iš Immich ir negali būti grąžintas. Failai liks diske.",
"confirm_email_below": "Patvirtinimui įveskite \"{email}\" žemiau",
"confirm_reprocess_all_faces": "Ar tikrai norite iš naujo apdoroti visus veidus? Tai taip pat ištrins įvardytus asmenis.",
"confirm_user_password_reset": "Ar tikrai norite iš naujo nustatyti {user} slaptažodį?",
"create_job": "Sukurti darbą",
"cron_expression": "Cron išraiška",
"cron_expression_description": "Nustatyti skanavimo intervalą naudojant cron formatą. Norėdami gauti daugiau informacijos žiūrėkite <link>Crontab Guru</link>",
"disable_login": "Išjungti prisijungimą",
"duplicate_detection_job_description": "Vykdykite mašininį mokymąsi tam, kad aptiktumėte panašius vaizdus. Nuo šios funkcijos priklauso išmanioji paieška",
"duplicate_detection_job_description": "Vykdykite mašininį mokymąsi panašių vaizdų aptikimui. Priklauso nuo išmaniosios paieškos",
"exclusion_pattern_description": "Išimčių šablonai leidžia nepaisyti failų ir aplankų skenuojant jūsų biblioteką. Tai yra naudinga, jei turite aplankų su failais, kurių nenorite importuoti, pavyzdžiui, RAW failai.",
"external_library_created_at": "Išorinė biblioteka (sukurta {date})",
"external_library_management": "Išorinių bibliotekų tvarkymas",
@ -53,18 +60,26 @@
"facial_recognition_job_description": "Aptiktų veidų atpažinimas ir priskyrimas žmonėms. Šis darbas vykdomas pasibaigus \"veidų aptikimo\" darbui. \"Atstatyti\" (per)grupuoja visus aptiktus veidus. \"Trūkstami\" apdoroja jokiam žmogui dar nepriskirtus aptiktus veidus.",
"failed_job_command": "Darbo {job} komanda {command} nepavyko",
"force_delete_user_warning": "ĮSPĖJIMAS: Šis veiksmas iš karto pašalins naudotoją ir visą jo informaciją. Šis žingsnis nesugrąžinamas ir failų nebus galima atkurti.",
"forcing_refresh_library_files": "Priverstinai atnaujinami visi failai bilbiotekoje",
"forcing_refresh_library_files": "Priverstinai atnaujinami visi failai bibliotekoje",
"image_format": "Formatas",
"image_format_description": "WebP sukuria mažesnius failus nei JPEG, bet lėčiau juos apdoroja.",
"image_prefer_embedded_preview": "Pageidautinai rodyti įterptą peržiūrą",
"image_prefer_embedded_preview_setting_description": "",
"image_prefer_wide_gamut": "Teikti pirmenybę plačiai gamai",
"image_prefer_wide_gamut_setting_description": "",
"image_preview_description": "Vidutinio dydžio vaizdas su išvalytais metaduomenimis, naudojamas kai žiūrimas vienas objektas arba mašininiam mokymuisi",
"image_preview_quality_description": "Peržiūros kokybė nuo 1-100. Aukštesnės reikšmės yra geriau, bet sukuriami didesni failai gali sumažinti programos reagavimo laiką. Mažos vertės nustatymas gali paveikti mašininio mokymo kokybę.",
"image_preview_title": "Peržiūros nustatymai",
"image_quality": "Kokybė",
"image_resolution": "Rezoliucija",
"image_resolution_description": "Didesnės rezoliucijos gali išsaugoti daugiau detalių, bet ilgiau užtrunka užkoduoti, failai yra didesni ir programos reagavimo laikas gali sumažėti.",
"image_settings": "Nuotraukos nustatymai",
"image_settings_description": "Keisti sugeneruotų nuotraukų kokybę ir rezoliuciją",
"image_thumbnail_description": "Maža miniatiūra su išvalytais metaduomenimis, naudojama kai žiūrima nuotraukų grupės, kaip pagrindinėje laiko juostoje",
"image_thumbnail_quality_description": "Miniatiūros kokybė nuo 1-100. Aukštesnės reikšmės yra geriau, bet pagaminami didesni failai ir gali būti sulėtintas programos reagavimo greitis.",
"image_thumbnail_title": "Miniatiūros nustatymai",
"job_concurrency": "{job} lygiagretumas",
"job_created": "Darbas sukurtas",
"job_not_concurrency_safe": "Šis darbas nėra saugus apdoroti lygiagrečiai.",
"job_settings": "Darbų nustatymai",
"job_settings_description": "Keisti darbų lygiagretumą",
@ -78,17 +93,17 @@
"library_settings": "Išorinė biblioteka",
"library_settings_description": "Tvarkyti išorinės bibliotekos parametrus",
"library_tasks_description": "Atlikit bibliotekos užduotis",
"library_watching_enable_description": "",
"library_watching_settings": "",
"library_watching_settings_description": "",
"logging_enable_description": "",
"logging_level_description": "",
"logging_settings": "",
"library_watching_enable_description": "Stebėti išorines bibliotekas dėl failų pakeitimų",
"library_watching_settings": "Bibliotekų stebėjimas (EKSPERIMENTINIS)",
"library_watching_settings_description": "Automatiškai stebėti dėl pakeistų failų",
"logging_enable_description": "Įjungti žurnalo vedimą",
"logging_level_description": "Įjungus, kokį žurnalo vedimo lygį naudot.",
"logging_settings": "Žurnalo vedimas",
"machine_learning_clip_model": "CLIP modelis",
"machine_learning_duplicate_detection": "Dublikatų aptikimas",
"machine_learning_duplicate_detection_enabled": "Įjungti dublikatų aptikimą",
"machine_learning_duplicate_detection_enabled_description": "",
"machine_learning_duplicate_detection_setting_description": "",
"machine_learning_duplicate_detection_setting_description": "Naudoti CLIP įterpimus, norint rasti galimus duplikatus",
"machine_learning_enabled": "Įgalinti mašininį mokymąsi",
"machine_learning_enabled_description": "Jei išjungta, visos „ML“ funkcijos bus išjungtos, nepaisant toliau pateiktų nustatymų.",
"machine_learning_facial_recognition": "Veidų atpažinimas",
@ -96,28 +111,29 @@
"machine_learning_facial_recognition_model": "Veidų atpažinimo modelis",
"machine_learning_facial_recognition_model_description": "",
"machine_learning_facial_recognition_setting": "Įgalinti veidų atpažinimą",
"machine_learning_facial_recognition_setting_description": "",
"machine_learning_facial_recognition_setting_description": "Išjungus, vaizdai nebus užšifruoti veidų atpažinimui ir nebus naudojami Žmonių sekcijoje Naršymo puslapyje.",
"machine_learning_max_detection_distance": "Maksimalus aptikimo atstumas",
"machine_learning_max_detection_distance_description": "Didžiausias atstumas tarp dviejų vaizdų, kad jie būtų laikomi dublikatais, svyruoja nuo 0,001 iki 0,1. Didesnės vertės aptiks daugiau dublikatų, tačiau gali būti klaidingai teigiami.",
"machine_learning_max_recognition_distance": "Maksimalus atpažinimo atstumas",
"machine_learning_max_recognition_distance_description": "",
"machine_learning_min_detection_score": "",
"machine_learning_min_detection_score": "Minimalus aptikimo balas",
"machine_learning_min_detection_score_description": "",
"machine_learning_min_recognized_faces": "Mažiausias atpažintų veidų skaičius",
"machine_learning_min_recognized_faces_description": "Mažiausias atpažintų veidų skaičius asmeniui, kurį reikia sukurti. Tai padidinus, veido atpažinimas tampa tikslesnis, bet padidėja tikimybė, kad veidas žmogui nepriskirtas.",
"machine_learning_settings": "Mašininio mokymosi nustatymai",
"machine_learning_settings_description": "Tvarkyti mašininio mokymosi funkcijas ir nustatymus",
"machine_learning_smart_search": "Išmanioji paieška",
"machine_learning_smart_search_description": "",
"machine_learning_smart_search_description": "Semantiškai ieškoti vaizdų naudojant CLIP įtarpius",
"machine_learning_smart_search_enabled": "Įjungti išmaniąją paiešką",
"machine_learning_smart_search_enabled_description": "Jei išjungta, vaizdai nebus užkoduoti išmaniajai paieškai.",
"machine_learning_url_description": "Mašininio mokymosi serverio URL",
"machine_learning_url_description": "Mašininio mokymosi serverio URL. Jei pateikta daugiau nei vienas URL, serveriai bus bandomi eilės tvarka nuo pirmo iki paskutinio tol, kol bus rastas vienas veikiantis serveris.",
"manage_concurrency": "Tvarkyti lygiagretumą",
"manage_log_settings": "",
"manage_log_settings": "Valdyti žurnalo nuostatas",
"map_dark_style": "Tamsioji tema",
"map_enable_description": "Įgalinti žemėlapio funkcijas",
"map_gps_settings": "Žemėlapio ir GPS nustatymai",
"map_gps_settings_description": "Tvarkyti žemėlapio ir GPS (atvirkštinio geokodavimo) nustatymus",
"map_implications": "Žemėlapio funkcija naudojasi išoriniu plytelių servisu (tiles.immich.cloud)",
"map_light_style": "Šviesioji tema",
"map_manage_reverse_geocoding_settings": "Tvarkyti <link>atvirkštinio geokodavimo</link> nustatymus",
"map_reverse_geocoding": "Atvirkštinis geokodavimas",
@ -125,47 +141,54 @@
"map_reverse_geocoding_settings": "Atvirkštinio geokodavimo nustatymai",
"map_settings": "Žemėlapis",
"map_settings_description": "Tvarkyti žemėlapio parametrus",
"map_style_description": "",
"map_style_description": "URL į style.json žemėlapio temą",
"metadata_extraction_job": "Metaduomenų nuskaitymas",
"metadata_extraction_job_description": "Kiekvieno bibliotekos elemento metaduomenų nuskaitymas, tokių kaip GPS koordinatės, veidai ar rezoliucija",
"metadata_faces_import_setting": "Įjungti veidų importą",
"metadata_faces_import_setting_description": "Importuoti veidus iš vaizdo EXIF duomenų ir papildomų failų",
"metadata_settings": "Metaduomenų nustatymai",
"metadata_settings_description": "Tvarkyti metaduomenų nustatymus",
"migration_job": "Migracija",
"migration_job_description": "",
"no_paths_added": "Keliai nepridėti",
"no_pattern_added": "Šablonas nepridėtas",
"note_apply_storage_label_previous_assets": "Pastaba: norėdami pritaikyti saugyklos etiketę seniau įkeltiems ištekliams, paleiskite",
"note_cannot_be_changed_later": "PASTABA: Vėliau to pakeisti negalima!",
"notification_email_from_address": "",
"notification_email_from_address_description": "",
"notification_email_host_description": "",
"note_unlimited_quota": "Pastaba: įveskite 0 norint neribotos kvotos",
"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_ignore_certificate_errors": "Nepaisyti sertifikatų klaidų",
"notification_email_ignore_certificate_errors_description": "Nepaisyti TLS sertifikato patvirtinimo klaidų (nerekomenduojama)",
"notification_email_password_description": "",
"notification_email_password_description": "Slaptažodis, naudojant autentikacijai su elektroninio pašto serveriu",
"notification_email_port_description": "El. pašto serverio prievadas (pvz. 25, 465 arba 587)",
"notification_email_sent_test_email_button": "Siųsti bandomąjį el. laišką ir išsaugoti",
"notification_email_setting_description": "El. pašto pranešimų siuntimo nustatymai",
"notification_email_test_email": "Išsiųsti bandomąjį el. laišką",
"notification_email_test_email_failed": "Nepavyko išsiųsti bandomojo el. laiško, patikrinkite savo nustatymus",
"notification_email_test_email_sent": "Bandomasis el. laiškas buvo išsiųstas į {email}. Patikrinkite savo pašto dėžutę.",
"notification_email_username_description": "",
"notification_email_username_description": "Vartotojo vardas, naudojant autentikacijai su elektroninio pašto serveriu",
"notification_enable_email_notifications": "Įgalinti el. pašto pranešimus",
"notification_settings": "Pranešimų nustatymai",
"notification_settings_description": "Tvarkyti pranešimų nustatymus, įskaitant el. pašto",
"oauth_auto_launch": "Paleisti automatiškai",
"oauth_auto_launch_description": "",
"oauth_auto_register": "",
"oauth_auto_register_description": "",
"oauth_auto_launch_description": "Prisijungimo puslapyje automatiškai pradėti OAuth prisijungimo procesą",
"oauth_auto_register": "Automatinis registravimas",
"oauth_auto_register_description": "Automatiškai užregistruoti naujus naudotojus po prisijungimo per OAuth",
"oauth_button_text": "Mygtuko tekstas",
"oauth_client_id": "Kliento ID",
"oauth_client_secret": "Kliento paslaptis",
"oauth_enable_description": "Prisijungti su OAuth",
"oauth_issuer_url": "",
"oauth_mobile_redirect_uri": "",
"oauth_mobile_redirect_uri_override": "",
"oauth_mobile_redirect_uri_override_description": "",
"oauth_scope": "",
"oauth_settings": "",
"oauth_issuer_url": "Teikėjo URL",
"oauth_mobile_redirect_uri": "Mobiliojo peradresavimo URI",
"oauth_mobile_redirect_uri_override": "Mobiliojo peradresavimo URI pakeitimas",
"oauth_mobile_redirect_uri_override_description": "Įjunkite, kai OAuth teikėjas nepalaiko mobiliojo URI, tokio kaip '{callback}'",
"oauth_profile_signing_algorithm": "Profilio registracijos algoritmas",
"oauth_profile_signing_algorithm_description": "Algoritmas naudojamas vartotojo profilio registracijai.",
"oauth_scope": "Apimtis",
"oauth_settings": "OAuth",
"oauth_settings_description": "Tvarkyti OAuth prisijungimo nustatymus",
"oauth_settings_more_details": "Detaliau apie šią funkciją galite paskaityti <link>dokumentacijoje</link>.",
"oauth_signing_algorithm": "",
"oauth_storage_label_claim": "",
"oauth_storage_label_claim_description": "",
@ -173,6 +196,7 @@
"oauth_storage_quota_claim_description": "",
"oauth_storage_quota_default": "",
"oauth_storage_quota_default_description": "",
"offline_paths": "Nepasiekiami adresai",
"offline_paths_description": "Šie rezultatai gali būti dėl rankinio failų ištrynimo, kurie nėra išorinės bibliotekos dalis.",
"password_enable_description": "Prisijungti su el. paštu ir slaptažodžiu",
"password_settings": "Prisijungimas slaptažodžiu",
@ -187,13 +211,13 @@
"reset_settings_to_recent_saved": "Nustatymų atstatymas į neseniai išsaugotus nustatymus",
"send_welcome_email": "Siųsti sveikinimo el. laišką",
"server_external_domain_settings": "Išorinis domenas",
"server_external_domain_settings_description": "",
"server_external_domain_settings_description": "Bendrinimo nuorodų domenas, įskaitant http(s)://",
"server_settings": "Serverio nustatymai",
"server_settings_description": "Tvarkyti serverio nustatymus",
"server_welcome_message": "Sveikinimo pranešimas",
"server_welcome_message_description": "Žinutė, rodoma prisijungimo puslapyje.",
"sidecar_job_description": "",
"slideshow_duration_description": "",
"slideshow_duration_description": "Sekundžių skaičius, kiek viena nuotrauka rodoma",
"smart_search_job_description": "Vykdykite mašininį mokymąsi bibliotekos elementų išmaniajai paieškai",
"storage_template_enable_description": "",
"storage_template_hash_verification_enabled": "",
@ -269,6 +293,7 @@
"trash_settings": "Šiukšliadėžės nustatymai",
"trash_settings_description": "Tvarkyti šiukšliadėžės nustatymus",
"untracked_files": "Nesekami failai",
"untracked_files_description": "Šie failai aplikacijos nesekami. Jie galėjo atsirasti dėl nepavykusio perkėlimo, nutraukto įkėlimo ar palikti per klaidą",
"user_delete_delay_settings": "Ištrynimo delsa",
"user_delete_delay_settings_description": "",
"user_management": "Naudotojų valdymas",
@ -328,7 +353,9 @@
"asset_added_to_album": "Pridėta į albumą",
"asset_adding_to_album": "Pridedama į albumą...",
"asset_description_updated": "Elemento aprašymas buvo atnaujintas",
"asset_offline": "",
"asset_filename_is_offline": "Elementas {filename} nepasiekiamas",
"asset_offline": "Elementas nepasiekiamas",
"asset_offline_description": "Šis išorinis elementas neberandamas diske. Dėl pagalbos susisiekite su savo Immich administratoriumi.",
"asset_uploaded": "Įkelta",
"asset_uploading": "Įkeliama...",
"assets": "Elementai",
@ -339,6 +366,7 @@
"assets_moved_to_trash_count": "{count, plural, one {# elementas perkeltas} few {# elementai perkelti} other {# elementų perkelta}} į šiukšliadėžę",
"assets_permanently_deleted_count": "{count, plural, one {# elementas ištrintas} few {# elementai ištrinti} other {# elementų ištrinta}} visam laikui",
"assets_removed_count": "{count, plural, one {Pašalintas # elementas} few {Pašalinti # elementai} other {Pašalinta # elementų}}",
"assets_restore_confirmation": "Ar tikrai norite atkurti visus šiukšliadėžėje esančius perkeltus elementus? Šio veiksmo atšaukti negalėsite! Pastaba: nepasiekiami elementai tokiu būdu atkurti nebus.",
"assets_restored_count": "{count, plural, one {Atkurtas # elementas} few {Atkurti # elementai} other {Atkurta # elementų}}",
"assets_were_part_of_album_count": "{count, plural, one {# elementas} few {# elementai} other {# elementų}} jau prieš tai buvo albume",
"authorized_devices": "Autorizuoti įrenginiai",
@ -348,6 +376,9 @@
"birthdate_saved": "Sėkmingai išsaugota gimimo data",
"blurred_background": "Neryškus fonas",
"bugs_and_feature_requests": "Klaidų ir funkcijų užklausos",
"bulk_delete_duplicates_confirmation": "Ar tikrai norite ištrinti visus {count, plural, one {# besidubliuojantį elementą} few {# besidubliuojančius elementus} other {# besidubliuojančių elementų}}? Bus paliktas didžiausias kiekvienos grupės elementas ir negrįžtamai ištrinti kiti besidubliuojantys elementai. Šio veiksmo atšaukti negalėsite!",
"bulk_keep_duplicates_confirmation": "Ar tikrai norite palikti visus {count, plural, one {# besidubliuojantį elementą} few {# besidubliuojančius elementus} other {# besidubliuojančių elementų}}? Tokiu būdu nieko netrinant bus sutvarkytos visos dublikatų grupės.",
"bulk_trash_duplicates_confirmation": "Ar tikrai norite perkelti į šiukšliadėžę visus {count, plural, one {# besidubliuojantį elementą} few {# besidubliuojančius elementus} other {# besidubliuojančių elementų}}? Bus paliktas didžiausias kiekvienos grupės elementas ir į šiukšliadėžę perkelti kiti besidubliuojantys elementai.",
"buy": "Įsigyti Immich",
"camera": "Fotoaparatas",
"camera_brand": "Fotoaparato prekės ženklas",
@ -382,7 +413,7 @@
"comments_are_disabled": "Komentarai yra išjungti",
"confirm": "Patvirtinti",
"confirm_admin_password": "Patvirtinti administratoriaus slaptažodį",
"confirm_delete_shared_link": "Ar tikrai norite ištrinti šią bendrinamą nuorodą?",
"confirm_delete_shared_link": "Ar tikrai norite ištrinti šią bendrinimo nuorodą?",
"confirm_password": "Patvirtinti slaptažodį",
"contain": "",
"context": "Kontekstas",
@ -422,6 +453,11 @@
"date_of_birth_saved": "Gimimo data sėkmingai išsaugota",
"date_range": "",
"day": "Diena",
"deduplicate_all": "Šalinti visus dublikatus",
"deduplication_criteria_1": "Failo dydis baitais",
"deduplication_criteria_2": "EXIF metaduomenų įrašų skaičius",
"deduplication_info": "Dublikatų šalinimo informacija",
"deduplication_info_description": "Automatinis elementų parinkimas ir masinis dublikatų šalinimas atliekamas atsižvelgiant į:",
"default_locale": "",
"default_locale_description": "Formatuoti datas ir skaičius pagal jūsų naršyklės lokalę",
"delete": "Ištrinti",
@ -431,11 +467,11 @@
"delete_key": "Ištrinti raktą",
"delete_library": "Ištrinti biblioteką",
"delete_link": "Ištrinti nuorodą",
"delete_shared_link": "Ištrinti bendrinamą nuorodą",
"delete_shared_link": "Ištrinti bendrinimo nuorodą",
"delete_tag": "Ištrinti žymą",
"delete_tag_confirmation_prompt": "Ar tikrai norite ištrinti žymą {tagName}?",
"delete_user": "Ištrinti naudotoją",
"deleted_shared_link": "Bendrinama nuoroda ištrinta",
"deleted_shared_link": "Bendrinimo nuoroda ištrinta",
"description": "Aprašymas",
"details": "Detalės",
"direction": "Kryptis",
@ -455,6 +491,7 @@
"download_settings": "Atsisiųsti",
"downloading": "Siunčiama",
"duplicates": "Dublikatai",
"duplicates_description": "Sutvarkykite kiekvieną elementų grupę nurodydami elementus, kurie yra dublikatai (jei tokių yra)",
"duration": "Trukmė",
"edit": "Redaguoti",
"edit_album": "Redaguoti albumą",
@ -492,8 +529,8 @@
"error_removing_assets_from_album": "Klaida šalinant elementus iš albumo, patikrinkite konsolę dėl išsamesnės informacijos",
"exclusion_pattern_already_exists": "Šis išimčių šablonas jau egzistuoja.",
"failed_to_create_album": "Nepavyko sukurti albumo",
"failed_to_create_shared_link": "Nepavyko sukurti bendrinamos nuorodos",
"failed_to_edit_shared_link": "Nepavyko redaguoti bendrinamos nuorodos",
"failed_to_create_shared_link": "Nepavyko sukurti bendrinimo nuorodos",
"failed_to_edit_shared_link": "Nepavyko redaguoti bendrinimo nuorodos",
"failed_to_load_people": "Nepavyko užkrauti žmonių",
"failed_to_remove_product_key": "Nepavyko pašalinti produkto rakto",
"failed_to_stack_assets": "Nepavyko sugrupuoti elementų",
@ -503,6 +540,7 @@
"profile_picture_transparent_pixels": "Profilio nuotrauka negali turėti permatomų pikselių. Prašome priartinti ir/arba perkelkite nuotrauką.",
"quota_higher_than_disk_size": "Nustatyta kvota, viršija disko dydį",
"unable_to_add_album_users": "Nepavyksta pridėti naudotojų prie albumo",
"unable_to_add_assets_to_shared_link": "Nepavyko į bendrinimo nuorodą pridėti elementų",
"unable_to_add_comment": "Nepavyksta pridėti komentaro",
"unable_to_add_exclusion_pattern": "Nepavyksta pridėti išimčių šablono",
"unable_to_add_import_path": "Nepavyksta pridėti importavimo kelio",
@ -511,6 +549,7 @@
"unable_to_change_date": "Negalima pakeisti datos",
"unable_to_change_location": "Negalima pakeisti vietos",
"unable_to_change_password": "Negalima pakeisti slaptažodžio",
"unable_to_complete_oauth_login": "Nepavyko prisijungti su OAuth",
"unable_to_connect": "Nepavyko prisijungti",
"unable_to_connect_to_server": "Nepavyko prisijungti prie serverio",
"unable_to_copy_to_clipboard": "Negalima kopijuoti į iškarpinę, įsitikinkite, kad prie puslapio prieinate per https",
@ -522,45 +561,48 @@
"unable_to_delete_asset": "",
"unable_to_delete_exclusion_pattern": "Nepavyksta ištrinti išimčių šablono",
"unable_to_delete_import_path": "Nepavyksta ištrinti importavimo kelio",
"unable_to_delete_shared_link": "Nepavyksta ištrinti bendrinimo nuorodos",
"unable_to_delete_shared_link": "Nepavyko ištrinti bendrinimo nuorodos",
"unable_to_delete_user": "Nepavyksta ištrinti naudotojo",
"unable_to_edit_exclusion_pattern": "Nepavyksta redaguoti išimčių šablono",
"unable_to_edit_import_path": "Nepavyksta redaguoti išimčių kelio",
"unable_to_empty_trash": "",
"unable_to_enter_fullscreen": "Nepavyksta pereiti į viso ekrano režimą",
"unable_to_exit_fullscreen": "Nepavyksta išeiti iš viso ekrano režimo",
"unable_to_get_shared_link": "Nepavyksta gauti bendrinamos nuorodos",
"unable_to_get_shared_link": "Nepavyko gauti bendrinimo nuorodos",
"unable_to_hide_person": "Nepavyksta paslėpti žmogaus",
"unable_to_link_oauth_account": "Nepavyko susieti su OAuth paskyra",
"unable_to_load_album": "Nepavyksta užkrauti albumo",
"unable_to_load_asset_activity": "",
"unable_to_load_items": "",
"unable_to_load_liked_status": "",
"unable_to_log_out_all_devices": "Nepavyksta atjungti visų įrenginių",
"unable_to_log_out_device": "Nepavyksta atjungti įrenginio",
"unable_to_login_with_oauth": "Nepavyksta prisijungti su OAuth",
"unable_to_login_with_oauth": "Nepavyko prisijungti su OAuth",
"unable_to_play_video": "Nepavyksta paleisti vaizdo įrašo",
"unable_to_refresh_user": "Nepavyksta atnaujinti naudotojo",
"unable_to_remove_album_users": "",
"unable_to_remove_api_key": "Nepavyko pašalinti API rakto",
"unable_to_remove_assets_from_shared_link": "Nepavyko iš bendrinimo nuorodos pašalinti elementų",
"unable_to_remove_deleted_assets": "Nepavyko pašalinti nepasiekiamų elementų",
"unable_to_remove_library": "Nepavyksta pašalinti bibliotekos",
"unable_to_remove_partner": "Nepavyksta pašalinti partnerio",
"unable_to_remove_reaction": "Nepavyksta pašalinti reakcijos",
"unable_to_repair_items": "",
"unable_to_reset_password": "",
"unable_to_resolve_duplicate": "",
"unable_to_resolve_duplicate": "Nepavyko sutvarkyti dublikatų",
"unable_to_restore_assets": "",
"unable_to_restore_trash": "",
"unable_to_restore_user": "",
"unable_to_save_album": "",
"unable_to_save_name": "",
"unable_to_save_profile": "",
"unable_to_save_profile": "Nepavyko išsaugoti profilio",
"unable_to_save_settings": "Nepavyksta išsaugoti nustatymų",
"unable_to_scan_libraries": "Nepavyksta nuskaityti bibliotekų",
"unable_to_scan_library": "Nepavyksta nuskaityti bibliotekos",
"unable_to_set_feature_photo": "Nepavyksta nustatyti mėgstamiausios nuotraukos",
"unable_to_set_profile_picture": "Nepavyksta nustatyti profilio nuotraukos",
"unable_to_submit_job": "",
"unable_to_trash_asset": "",
"unable_to_trash_asset": "Nepavyko perkelti į šiukšliadėžę",
"unable_to_unlink_account": "",
"unable_to_update_library": "",
"unable_to_update_location": "",
@ -569,7 +611,7 @@
"unable_to_upload_file": "Nepavyksta įkelti failo"
},
"exif": "Exif",
"exit_slideshow": "",
"exit_slideshow": "Išeiti iš skaidrių peržiūros",
"expand_all": "Išskleisti viską",
"expire_after": "",
"expired": "Nebegalioja",
@ -581,10 +623,12 @@
"external": "Išorinis",
"external_libraries": "Išorinės bibliotekos",
"face_unassigned": "Nepriskirta",
"favorite": "Mėgstamiausi",
"favorite": "Mėgstamiausias",
"favorite_or_unfavorite_photo": "Įtraukti prie arba pašalinti iš mėgstamiausių",
"favorites": "Mėgstamiausi",
"feature_photo_updated": "",
"features": "Funkcijos",
"features_setting_description": "Valdyti aplikacijos funkcijas",
"file_name": "Failo pavadinimas",
"file_name_or_extension": "Failo pavadinimas arba plėtinys",
"filename": "",
@ -592,6 +636,7 @@
"filter_people": "Filtruoti žmones",
"fix_incorrect_match": "",
"folders": "Aplankai",
"folders_feature_description": "Peržiūrėkite failų sistemoje esančias nuotraukas ir vaizdo įrašus aplankų rodinyje",
"forward": "",
"general": "",
"get_help": "Gauti pagalbos",
@ -619,7 +664,7 @@
"in_archive": "Archyve",
"include_archived": "Įtraukti archyvuotus",
"include_shared_albums": "Įtraukti bendrinamus albumus",
"include_shared_partner_assets": "",
"include_shared_partner_assets": "Įtraukti partnerio pasidalintus elementus",
"individual_share": "",
"info": "Informacija",
"interval": {
@ -647,8 +692,8 @@
"library_options": "Bibliotekos pasirinktys",
"light": "",
"link_options": "Nuorodų parinktys",
"link_to_oauth": "",
"linked_oauth_account": "",
"link_to_oauth": "Susieti su OAuth",
"linked_oauth_account": "Susieta OAuth paskyra",
"list": "Sąrašas",
"loading": "Kraunama",
"loading_search_results_failed": "Nepavyko užkrauti paieškos rezultatų",
@ -664,13 +709,13 @@
"loop_videos": "Kartoti vaizdo įrašus",
"loop_videos_description": "",
"make": "Gamintojas",
"manage_shared_links": "Bendrai naudojamų nuorodų tvarkymas",
"manage_shared_links": "Bendrinimo nuorodų tvarkymas",
"manage_sharing_with_partners": "Valdyti dalijimąsi su partneriais",
"manage_the_app_settings": "Valdyti programos nustatymus",
"manage_your_account": "Valdyti savo paskyrą",
"manage_your_api_keys": "Valdyti savo API raktus",
"manage_your_devices": "Valdyti prijungtus įrenginius",
"manage_your_oauth_connection": "",
"manage_your_oauth_connection": "Tvarkyti OAuth prisijungimą",
"map": "Žemėlapis",
"map_marker_with_image": "",
"map_settings": "Žemėlapio nustatymai",
@ -710,7 +755,7 @@
"no_albums_message": "Sukurkite albumą nuotraukoms ir vaizdo įrašams tvarkyti",
"no_albums_with_name_yet": "Atrodo, kad dar neturite albumų su šiuo pavadinimu.",
"no_albums_yet": "Atrodo, kad dar neturite albumų.",
"no_archived_assets_message": "",
"no_archived_assets_message": "Suarchyvuokite nuotraukas ir vaizdo įrašus, kad jie nebūtų rodomi nuotraukų rodinyje",
"no_assets_message": "SPUSTELĖKITE NORĖDAMI ĮKELTI PIRMĄJĄ NUOTRAUKĄ",
"no_duplicates_found": "Dublikatų nerasta.",
"no_exif_info_available": "",
@ -728,9 +773,10 @@
"notification_toggle_setting_description": "Įjungti el. pašto pranešimus",
"notifications": "Pranešimai",
"notifications_setting_description": "Tvarkyti pranešimus",
"oauth": "",
"oauth": "OAuth",
"official_immich_resources": "Oficialūs Immich ištekliai",
"offline": "Neprisijungęs",
"offline_paths": "Nepasiekiami adresai",
"ok": "Ok",
"oldest_first": "Seniausias pirmas",
"onboarding_welcome_user": "Sveiki atvykę, {user}",
@ -744,7 +790,7 @@
"other": "",
"other_devices": "Kiti įrenginiai",
"other_variables": "Kiti kintamieji",
"owned": "",
"owned": "Nuosavi",
"owner": "Savininkas",
"partner": "Partneris",
"partner_can_access": "{partner} gali naudotis",
@ -764,12 +810,13 @@
"path": "Kelias",
"pattern": "",
"pause": "Sustabdyti",
"pause_memories": "",
"pause_memories": "Pristabdyti atsiminimus",
"paused": "Sustabdyta",
"pending": "Laukiama",
"people": "Asmenys",
"people_edits_count": "{count, plural, one {Redaguotas # asmuo} few {Redaguoti # asmenys} other {Redaguota # asmenų}}",
"people_sidebar_description": "",
"people_feature_description": "Peržiūrėkite nuotraukas ir vaizdo įrašus sugrupuotus pagal asmenis",
"people_sidebar_description": "Rodyti asmenų rodinio nuorodą šoninėje juostoje",
"permanent_deletion_warning": "",
"permanent_deletion_warning_setting_description": "",
"permanently_delete": "Ištrinti visam laikui",
@ -784,7 +831,7 @@
"place": "Vieta",
"places": "Vietos",
"play": "",
"play_memories": "",
"play_memories": "Leisti atsiminimus",
"play_motion_photo": "",
"play_or_pause_video": "",
"port": "",
@ -794,6 +841,7 @@
"previous_memory": "",
"previous_or_next_photo": "",
"primary": "",
"profile_image_of_user": "{user} profilio nuotrauka",
"profile_picture_set": "Profilio nuotrauka nustatyta.",
"public_album": "Viešas albumas",
"public_share": "",
@ -830,18 +878,27 @@
"purchase_settings_server_activated": "Serverio produkto raktas yra tvarkomas administratoriaus",
"rating": "Įvertinimas žvaigždutėmis",
"rating_count": "{count, plural, one {# įvertinimas} few {# įvertinimai} other {# įvertinimų}}",
"rating_description": "Rodyti EXIF įvertinimus informacijos skydelyje",
"reaction_options": "",
"read_changelog": "",
"recent": "",
"recent_searches": "",
"refresh": "Atnaujinti",
"refresh_encoded_videos": "Perkrauti apdorotus vaizdo įrašus",
"refresh_faces": "Perkrauti veidus",
"refresh_metadata": "Perkrauti metaduomenis",
"refresh_thumbnails": "Perkrauti miniatiūras",
"refreshed": "Atnaujinta",
"refreshes_every_file": "",
"refreshes_every_file": "Iš naujo perskaito visus esamus ir naujai pridėtus failus",
"refreshing_encoded_video": "Perkraunamas apdorotas vaizdo įrašas",
"refreshing_faces": "Perkraunami veidai",
"refreshing_metadata": "Perkraunami metaduomenys",
"remove": "Pašalinti",
"remove_assets_shared_link_confirmation": "Ar tikrai norite pašalinti {count, plural, one {# elementą} few {# elementus} other {# elementų}} iš šios bendrinimo nuorodos?",
"remove_deleted_assets": "",
"remove_from_album": "Pašalinti iš albumo",
"remove_from_favorites": "Pašalinti iš mėgstamiausių",
"remove_from_shared_link": "",
"remove_from_shared_link": "Pašalinti iš bendrinimo nuorodos",
"remove_user": "Pašalinti naudotoją",
"removed_api_key": "Pašalintas API Raktas: {name}",
"removed_from_archive": "Pašalinta iš archyvo",
@ -850,18 +907,19 @@
"removed_tagged_assets": "Žyma pašalinta iš {count, plural, one {# elemento} other {# elementų}}",
"rename": "Pervadinti",
"repair": "Pataisyti",
"repair_no_results_message": "",
"replace_with_upload": "",
"repair_no_results_message": "Nesekami ir trūkstami failai bus rodomi čia",
"replace_with_upload": "Pakeisti naujai įkeltu failu",
"require_password": "Reikalauti slaptažodžio",
"reset": "Atstatyti",
"reset_password": "",
"reset_people_visibility": "",
"resolved_all_duplicates": "Išspręsti visi dublikatai",
"resolve_duplicates": "Sutvarkyti dublikatus",
"resolved_all_duplicates": "Sutvarkyti visi dublikatai",
"restore": "Atkurti",
"restore_all": "Atkurti visus",
"restore_user": "Atkurti naudotoją",
"retry_upload": "",
"review_duplicates": "",
"review_duplicates": "Peržiūrėti dublikatus",
"role": "",
"save": "Išsaugoti",
"saved_api_key": "Išsaugotas API raktas",
@ -898,9 +956,11 @@
"select_avatar_color": "Pasirinkti avataro spalvą",
"select_face": "Pasirinkti veidą",
"select_featured_photo": "Pasirinkti rodomą nuotrauką",
"select_keep_all": "Visus pažymėti \"Palikti\"",
"select_library_owner": "Pasirinkti bibliotekos savininką",
"select_new_face": "",
"select_photos": "",
"select_trash_all": "Visus pažymėti \"Išmesti\"",
"selected": "Pasirinkta",
"selected_count": "{count, plural, one {# pasirinktas} few {# pasirinkti} other {# pasirinktų}}",
"send_message": "Siųsti žinutę",
@ -911,28 +971,29 @@
"server_version": "Serverio versija",
"set": "Nustatyti",
"set_as_album_cover": "",
"set_as_profile_picture": "",
"set_as_profile_picture": "Nustatyti kaip profilio nuotrauką",
"set_date_of_birth": "Nustatyti gimimo datą",
"set_profile_picture": "Nustatyti profilio nuotrauką",
"set_slideshow_to_fullscreen": "",
"set_slideshow_to_fullscreen": "Nustatyti skaidrių peržiūrą per visą ekraną",
"settings": "Nustatymai",
"settings_saved": "",
"share": "Dalintis",
"shared": "",
"shared": "Bendrinami",
"shared_by": "",
"shared_by_you": "",
"shared_links": "",
"shared_link_options": "Bendrinimo nuorodos parametrai",
"shared_links": "Bendrinimo nuorodos",
"shared_photos_and_videos_count": "{assetCount, plural, one {# bendrinama nuotrauka ir vaizdo įrašas} few {# bendrinamos nuotraukos ir vaizdo įrašai} other {# bendrinamų nuotraukų ir vaizdo įrašų}}",
"shared_with_partner": "Pasidalinta su {partner}",
"sharing": "Dalijimasis",
"sharing_enter_password": "Norėdami peržiūrėti šį puslapį, įveskite slaptažodį.",
"sharing_sidebar_description": "",
"sharing_sidebar_description": "Rodyti bendrinimo rodinio nuorodą šoninėje juostoje",
"show_album_options": "Rodyti albumo parinktis",
"show_file_location": "Rodyti rinkmenos vietą",
"show_gallery": "Rodyti galeriją",
"show_hidden_people": "",
"show_in_timeline": "",
"show_in_timeline_setting_description": "",
"show_in_timeline": "Rodyti laiko skalėje",
"show_in_timeline_setting_description": "Rodyti šio naudotojo nuotraukas ir vaizdo įrašus mano laiko skalėje",
"show_keyboard_shortcuts": "",
"show_metadata": "Rodyti metaduomenis",
"show_or_hide_info": "Rodyti arba slėpti informaciją",
@ -940,15 +1001,18 @@
"show_person_options": "",
"show_progress_bar": "",
"show_search_options": "Rodyti paieškos parinktis",
"show_slideshow_transition": "Rodyti perėjimą tarp skaidrių",
"show_supporter_badge": "Rėmėjo ženklelis",
"show_supporter_badge_description": "Rodyti rėmėjo ženklelį",
"shuffle": "",
"sidebar": "Šoninė juosta",
"sidebar_display_description": "Rodyti rodinio nuorodą šoninėje juostoje",
"sign_out": "Atsijungti",
"sign_up": "Užsiregistruoti",
"size": "Dydis",
"skip_to_content": "Pereiti prie turinio",
"slideshow": "Skaidrės",
"slideshow_settings": "",
"slideshow": "Skaidrių peržiūra",
"slideshow_settings": "Skaidrių peržiūros nustatymai",
"sort_albums_by": "",
"sort_created": "Sukūrimo data",
"sort_modified": "Keitimo data",
@ -978,6 +1042,7 @@
"sync": "Sinchronizuoti",
"tag": "Žyma",
"tag_created": "Sukurta žyma: {tag}",
"tag_feature_description": "Peržiūrėkite nuotraukas ir vaizdo įrašus sugrupuotus pagal sužymėtas temas",
"tag_not_found_question": "Nerandate žymos? <link>Sukurti naują žymą.</link>",
"tag_updated": "Atnaujinta žyma: {tag}",
"tagged_assets": "Žyma pridėta prie {count, plural, one {# elemento} other {# elementų}}",
@ -986,18 +1051,20 @@
"theme": "Tema",
"theme_selection": "",
"theme_selection_description": "",
"time_based_memories": "",
"time_based_memories": "Atsiminimai pagal laiką",
"timeline": "Laiko skalė",
"timezone": "Laiko juosta",
"to_archive": "Archyvuoti",
"to_change_password": "Pakeisti slaptažodį",
"to_favorite": "Įtraukti prie mėgstamiausių",
"to_trash": "Išmesti",
"toggle_settings": "",
"toggle_theme": "",
"total_usage": "",
"trash": "Šiukšliadėžė",
"trash_all": "Ištrinti visus",
"trash_count": "Šiukšliadėžė {count, number}",
"trash_no_results_message": "",
"trash_all": "Perkelti visus į šiukšliadėžę",
"trash_count": "Perkelti {count, number} į šiukšliadėžę",
"trash_no_results_message": "Į šiukšliadėžę perkeltos nuotraukos ir vaizdo įrašai bus rodomi čia.",
"trashed_items_will_be_permanently_deleted_after": "Į šiukšliadėžę perkelti elementai bus visam laikui ištrinti po {days, plural, one {# dienos} other {# dienų}}.",
"type": "Tipas",
"unarchive": "Išarchyvuoti",
@ -1006,22 +1073,26 @@
"unhide_person": "",
"unknown": "",
"unknown_year": "Nežinomi metai",
"unlink_oauth": "",
"unlinked_oauth_account": "",
"unlink_oauth": "Atsieti OAuth",
"unlinked_oauth_account": "Atsieta OAuth paskyra",
"unnamed_album_delete_confirmation": "Ar tikrai norite ištrinti šį albumą?",
"unsaved_change": "Neišsaugoti pakeitimai",
"unselect_all": "",
"unselect_all_duplicates": "Atžymėti visus dublikatus",
"unstack": "Išgrupuoti",
"unstacked_assets_count": "{count, plural, one {Išgrupuotas # elementas} few {Išgrupuoti # elementai} other {Išgrupuota # elementų}}",
"untracked_files": "Nesekami failai",
"untracked_files_decription": "Šie failai aplikacijos nesekami. Jie galėjo atsirasti dėl nepavykusio perkėlimo, nutraukto įkėlimo ar palikti per klaidą",
"up_next": "",
"updated_password": "Slaptažodis atnaujintas",
"upload": "Įkelti",
"upload_concurrency": "",
"upload_errors": "Įkėlimas įvyko su {count, plural, one {# klaida} few {# klaidomis} other {# klaidų}}, norėdami pamatyti naujai įkeltus elementus perkraukite puslapį.",
"upload_progress": "Liko {remaining, number} - Apdorota {processed, number}/{total, number}",
"upload_status_duplicates": "Dublikatai",
"upload_status_errors": "Klaidos",
"upload_status_uploaded": "Įkelta",
"upload_success": "Įkėlimas pavyko, norėdami pamatyti naujai įkeltus elementus perkraukite puslapį.",
"url": "URL",
"usage": "",
"user": "Naudotojas",
@ -1031,7 +1102,7 @@
"user_usage_stats_description": "Žiūrėti paskyros naudojimo statistiką",
"username": "Naudotojo vardas",
"users": "Naudotojai",
"utilities": "Priemonės",
"utilities": "Įrankiai",
"validate": "Validuoti",
"variables": "Kintamieji",
"version": "Versija",
@ -1042,11 +1113,12 @@
"video_hover_setting_description": "Atkurti vaizdo įrašo miniatiūrą, kai pelė užvedama ant elemento. Net ir išjungus, atkūrimą galima pradėti užvedus pelės žymeklį ant atkūrimo piktogramos.",
"videos": "Video",
"videos_count": "{count, plural, one {# vaizdo įrašas} few {# vaizdo įrašai} other {# vaizdo įrašų}}",
"view": "Rodyti",
"view_album": "Rodyti albumą",
"view": "Žiūrėti",
"view_album": "Žiūrėti albumą",
"view_all": "Peržiūrėti viską",
"view_all_users": "Peržiūrėti visus naudotojus",
"view_links": "Rodyti nuorodas",
"view_in_timeline": "Žiūrėti laiko skalėje",
"view_links": "Žiūrėti nuorodas",
"view_next_asset": "",
"view_previous_asset": "",
"view_stack": "Peržiūrėti grupę",
@ -1055,6 +1127,8 @@
"week": "Savaitė",
"welcome_to_immich": "Sveiki atvykę į Immich",
"year": "Metai",
"years_ago": "Prieš {years, plural, one {# metus} other {# metų}}",
"yes": "Taip",
"you_dont_have_any_shared_links": "Bendrinimo nuorodų neturite",
"zoom_image": "Priartinti vaizdą"
}

View file

@ -35,13 +35,13 @@
"authentication_settings_reenable": "Lai atkārtoti iespējotu, izmantojiet <link>Servera Komandu</link>.",
"background_task_job": "Fona Uzdevumi",
"check_all": "Pārbaudīt Visu",
"cleared_jobs": "Notīrīti darbi priekš: {job}",
"cleared_jobs": "Notīrīti uzdevumi priekš: {job}",
"config_set_by_file": "Konfigurāciju pašlaik iestata konfigurācijas fails",
"confirm_delete_library": "Vai tiešām vēlaties dzēst {library} bibliotēku?",
"confirm_email_below": "Lai apstiprinātu, zemāk ierakstiet “{email}”",
"confirm_reprocess_all_faces": "Vai tiešām vēlaties atkārtoti apstrādāt visas sejas? Tas arī atiestatīs cilvēkus ar vārdiem.",
"confirm_user_password_reset": "Vai tiešām vēlaties atiestatīt lietotāja {user} paroli?",
"create_job": "Izveidot darbu",
"create_job": "Izveidot uzdevumu",
"cron_expression": "Cron izteiksme",
"disable_login": "Atspējot pieteikšanos",
"duplicate_detection_job_description": "Palaidiet mašīnmācīšanos uz līdzekļiem, lai noteiktu līdzīgus attēlus. Paļaujas uz Viedo Meklēšanu",
@ -59,10 +59,10 @@
"image_settings": "Attēla Iestatījumi",
"image_settings_description": "Ģenerēto attēlu kvalitātes un izšķirtspējas pārvaldība",
"image_thumbnail_title": "Sīktēlu iestatījumi",
"job_created": "Darbs izveidots",
"job_settings": "",
"job_settings_description": "",
"job_status": "Darbu statuss",
"job_created": "Uzdevums izveidots",
"job_settings": "Uzdevumu iestatījumi",
"job_settings_description": "Pārvaldīt uzdevumu izpildes vienlaicīgumu",
"job_status": "Uzdevumu statuss",
"library_deleted": "Bibliotēka dzēsta",
"library_scanning": "",
"library_scanning_description": "",
@ -167,6 +167,7 @@
"repair_all": "Salabot visu",
"require_password_change_on_login": "Pieprasīt lietotājam mainīt paroli pēc pirmās pieteikšanās",
"scanning_library": "Skenē bibliotēku",
"search_jobs": "Meklēt uzdevumus...",
"server_external_domain_settings": "",
"server_external_domain_settings_description": "",
"server_settings": "Servera iestatījumi",
@ -527,7 +528,7 @@
},
"invite_people": "Ielūgt cilvēkus",
"invite_to_album": "Uzaicināt albumā",
"jobs": "Darbi",
"jobs": "Uzdevumi",
"keep": "Paturēt",
"keep_all": "Paturēt visus",
"keyboard_shortcuts": "Tastatūras saīsnes",
@ -873,6 +874,8 @@
"validate": "",
"variables": "",
"version": "Versija",
"version_announcement_message": "Sveiki! Ir pieejama jauna Immich versija. Lūdzu, veltiet laiku, lai izlasītu <link>laidiena piezīmes</link> un pārliecinātos, ka jūsu iestatījumi ir atjaunināti, lai novērstu jebkādu nepareizu konfigurāciju, jo īpaši, ja izmantojat WatchTower vai citu mehānismu, kas automātiski atjaunina jūsu Immich instanci.",
"version_history": "Versiju vēsture",
"video": "Videoklips",
"video_hover_setting_description": "",
"videos": "Videoklipi",

View file

@ -141,7 +141,7 @@
"map_implications": "Ciri peta bergantung pada perkhidmatan jubin luaran (tiles.immich.cloud)",
"map_light_style": "Tema terang",
"map_manage_reverse_geocoding_settings": "Urus tetapan <link>Geocoding Songsang</link>",
"map_reverse_geocoding": "Geocoding Terbalik",
"map_reverse_geocoding": "Geokoding Sonsang",
"map_reverse_geocoding_enable_description": "Dayakan pengekodan geo terbalik",
"map_reverse_geocoding_settings": "Tetapan Pengekodan Geo Terbalik",
"map_settings": "Peta",
@ -229,8 +229,63 @@
"server_settings_description": "Urus tetapan pelayan",
"server_welcome_message": "Mesej alu-aluan",
"server_welcome_message_description": "Mesej yang dipaparkan pada halaman log masuk.",
"sidecar_job": "Metadata kereta sisi"
"sidecar_job": "Metadata kereta sisi",
"slideshow_duration_description": "Bilangan saat untuk memaparkan setiap imej",
"smart_search_job_description": "Jalankan pembelajaran mesin pada aset-aset untuk menyokong carian pintar",
"storage_template_date_time_description": "Cap masa penciptaan aset digunakan untuk maklumat masa dan tarikh",
"storage_template_date_time_sample": "Contoh masa {date}",
"storage_template_enable_description": "Dayakan enjin templat storan",
"storage_template_hash_verification_enabled": "Pengesahan hac didayakan",
"storage_template_hash_verification_enabled_description": "Mendayakan pengesahan hac, jangan lumpuhkan melainkan anda pasti akan implikasinya",
"storage_template_migration": "Penghijrahan templat storan",
"storage_template_migration_description": "Gunakan <link>{template}</link> semasa pada aset-aset yang dimuat naik sebelum ini",
"storage_template_migration_info": "Perubahan templat hanya akan digunakan pada aset baharu. Untuk menggunakan templat secara retroaktif pada aset-aset yang dimuat naik sebelum ini, jalankan <link>{job}</link>.",
"storage_template_migration_job": "Kerja Migrasi Templat Storan",
"storage_template_more_details": "Untuk butiran lanjut tentang ciri ini, rujuk kepada <template-link>Templat Storan</template-link> dan <implications-link>implikasi</implications-link>",
"storage_template_settings": "Templat Storan",
"theme_settings_description": "Urus penyesuaian antara muka web Immich",
"thumbnail_generation_job": "Jana Imej Kenit",
"thumbnail_generation_job_description": "Janakan imej kenit yang besar, kecil, dan kabur untuk setiap aset, serta imej kenit untuk setiap orang"
},
"deduplication_criteria_1": "Saiz imej dalam bait",
"deduplication_criteria_2": "Kiraan data EXIF",
"deduplication_info": "Maklumat Pendeduplikasian",
"deduplication_info_description": "Untuk prapilih aset secara automatik dan mengalih keluar pendua secara pukal, kami melihat pada:",
"default_locale": "Tempatan Lalai",
"delete": "Padam",
"delete_album": "Padam album",
"delete_api_key_prompt": "Adakah anda pasti mahu memadam kunci API ini?",
"delete_duplicates_confirmation": "Adakah anda pasti mahu memadam pendua ini secara kekal?",
"delete_key": "Padam kunci",
"delete_library": "Padam Pustaka",
"delete_link": "Padam pautan",
"delete_others": "Padam yang lain",
"delete_shared_link": "Padam pautan yang dikongsi",
"delete_tag": "Padam tag",
"delete_tag_confirmation_prompt": "Adakah anda pasti mahu memadam tag {tagName}?",
"delete_user": "Padam pengguna",
"deleted_shared_link": "Pautan kongsi yang dipadamkan",
"deletes_missing_assets": "Memadamkan aset yang hilang daripada cakera",
"description": "Penerangan",
"details": "Butiran",
"direction": "Arah",
"disabled": "Dilumpuhkan",
"disallow_edits": "Tolak pengeditan",
"discord": "Perselisihan",
"discover": "Terokai",
"dismiss_all_errors": "Tolak semua ralat",
"dismiss_error": "Tolak ralat",
"display_options": "Pilihan paparan",
"display_order": "Tertib paparan",
"display_original_photos": "Paparkan foto asal",
"display_original_photos_setting_description": "Mengutamakan pemaparan foto asal apabila melihat aset daripada imej kecil apabila aset asal serasi web. Ini boleh menyebabkan kelajuan paparan foto yang lebih perlahan.",
"do_not_show_again": "Jangan tunjukkan mesej ini lagi",
"documentation": "Dokumentasi",
"done": "Selesai",
"download": "Muat Turun",
"download_settings": "Muat Turun",
"download_settings_description": "Urus tetapan yang berkaitan dengan muat turun aset",
"downloading": "Memuat turun",
"timeline": "Garis masa",
"total": "Jumlah",
"user_usage_stats": "Statistik penggunaan akaun",

View file

@ -44,12 +44,14 @@
"cleared_jobs": "Ryddet opp jobber for: {job}",
"config_set_by_file": "Konfigurasjonen er for øyeblikket satt av en konfigurasjonsfil",
"confirm_delete_library": "Er du sikker på at du vil slette biblioteket {library}?",
"confirm_delete_library_assets": "Er du sikker på at du vil slette dette biblioteket? Dette vil slette alle {count} tilhørende eiendeler fra Immich og kan ikke angres. Filene vil forbli på disken.",
"confirm_delete_library_assets": "Er du sikker på at du vil slette dette biblioteket? Dette vil slette alle {count, plural, one {# contained asset} other {all # contained assets}} tilhørende eiendeler fra Immich og kan ikke angres. Filene vil forbli på disken.",
"confirm_email_below": "For å bekrefte, skriv inn \"{email}\" nedenfor",
"confirm_reprocess_all_faces": "Er du sikker på at du vil behandle alle ansikter på nytt? Dette vil også fjerne navngitte personer.",
"confirm_user_password_reset": "Er du sikker på at du vil tilbakestille passordet til {user}?",
"create_job": "Lag jobb",
"cron_expression": "Cron uttrykk",
"cron_expression_description": "Still inn skanneintervallet med cron-formatet. For mer informasjon henvises til f.eks. <link>Crontab Guru</link>",
"cron_expression_presets": "Forhåndsinnstillinger for Cron-uttrykk",
"disable_login": "Deaktiver innlogging",
"duplicate_detection_job_description": "Kjør maskinlæring på filer for å oppdage lignende bilder. Krever bruk av Smart Search",
"exclusion_pattern_description": "Ekskluderingsmønstre lar deg ignorere filer og mapper når du skanner biblioteket ditt. Dette er nyttig hvis du har mapper som inneholder filer du ikke vil importere, for eksempel RAW-filer.",
@ -67,12 +69,19 @@
"image_prefer_embedded_preview_setting_description": "Bruk innebygd forhåndsvisning i RAW-bilder som inndata til bildebehandling når tilgjengelig. Dette kan gi mer nøyaktige farger for noen bilder, men kvaliteten er avhengig av kamera og bildet kan ha komprimeringsartefakter.",
"image_prefer_wide_gamut": "Foretrekk bredt fargespekter",
"image_prefer_wide_gamut_setting_description": "Bruk Display P3 for miniatyrbilder. Dette bevarer glød bedre i bilder med bredt fargerom, men det kan hende bilder ser annerledes ut på gamle enheter med en gammel nettleserversjon. sRBG bilder beholdes som sRGB for å unngå fargeforskyvninger.",
"image_preview_description": "Mellomstort bilde med strippet metadata, brukt når du ser på en enkelt ressurs og for maskinlæring",
"image_preview_quality_description": "Kvalitet på forhåndsvisning fra 1-100. Høyere er bedre, men genererer større filer og kan redusere hastigheten på systemet. Ved for lav verdi kan det påvirke kvaliteten på maskinlæringen.",
"image_preview_title": "Forhåndsvisningsinnstillinger",
"image_quality": "Kvalitet",
"image_resolution": "Oppløsning",
"image_resolution_description": "Høyere oppløsninger kan bevare flere detaljer, men det tar lengre tid å kode, har større filstørrelser og kan redusere appresponsen.",
"image_settings": "Bildeinnstilliinger",
"image_settings_description": "Administrer kvalitet og oppløsning på genererte bilder",
"image_thumbnail_description": "Små miniatyrbilder med strippet metadata, brukt når du ser på grupper av bilder som hovedtidslinjen",
"image_thumbnail_quality_description": "Miniatyrbildekvalitet fra 1-100. Høyere er bedre, men produserer større filer og kan redusere appens respons.",
"image_thumbnail_title": "Miniatyrbilde oppsett",
"job_concurrency": "{job} samtidighet",
"job_created": "Oppgave laget",
"job_not_concurrency_safe": "Denne jobben er ikke samtidlighet sikker.",
"job_settings": "Jobbinnstillinger",
"job_settings_description": "Administrer parallellkjøring for jobber",
@ -129,7 +138,9 @@
"map_enable_description": "Aktiver kartfunksjoner",
"map_gps_settings": "Kart & GPS Innstillinger",
"map_gps_settings_description": "Administrer innstillinger for kart og GPS (Reversert geokoding)",
"map_implications": "Kartfunksjonen er avhengig av en ekstern bilde tjeneste (tiles.immich.cloud)",
"map_light_style": "Lys stil",
"map_manage_reverse_geocoding_settings": "Administrer instillinger for <link>Omvendt Geokoding</link>",
"map_reverse_geocoding": "Omvendt geokoding",
"map_reverse_geocoding_enable_description": "Aktiver omvendt geokoding",
"map_reverse_geocoding_settings": "Innstillinger for omvendt geokoding",
@ -138,6 +149,8 @@
"map_style_description": "URL til et style.json-karttema",
"metadata_extraction_job": "Hent metadata",
"metadata_extraction_job_description": "Hent metadatainformasjon fra hver fil, for eksempel GPS-posisjon og oppløsning",
"metadata_faces_import_setting": "Aktiver ansikts importering",
"metadata_faces_import_setting_description": "Importer ansikt fra bilde EXIF data og tillegsfiler",
"metadata_settings": "Metadatainnstillinger",
"metadata_settings_description": "Administrer metadatainnstillinger",
"migration_job": "Migrering",
@ -174,7 +187,7 @@
"oauth_issuer_url": "Utgiverens URL",
"oauth_mobile_redirect_uri": "Mobil omdirigerings-URI",
"oauth_mobile_redirect_uri_override": "Mobil omdirigerings-URI overstyring",
"oauth_mobile_redirect_uri_override_description": "Aktiver når 'app.immich:/' er en ugyldig omdirigerings-URI.",
"oauth_mobile_redirect_uri_override_description": "Aktiver når OAuth-leverandøren ikke tillater en mobil URI, som '{callback}'",
"oauth_profile_signing_algorithm": "Profilsigneringsalgoritme",
"oauth_profile_signing_algorithm_description": "Algoritme brukt for å signere brukerprofilen.",
"oauth_scope": "Omfang",
@ -194,6 +207,7 @@
"password_settings": "Passordinnlogging",
"password_settings_description": "Administrer innstillinger for passordinnlogging",
"paths_validated_successfully": "Alle filbaner validert uten problemer",
"person_cleanup_job": "Person opprydding",
"quota_size_gib": "Kvotestørrelse (GiB)",
"refreshing_all_libraries": "Oppdaterer alle biblioteker",
"registration": "Administrator registrering",
@ -204,9 +218,13 @@
"require_password_change_on_login": "Krev at brukeren endrer passord ved første pålogging",
"reset_settings_to_default": "Tilbakestill innstillinger til standard",
"reset_settings_to_recent_saved": "Tilbakestill innstillingene til de nylig lagrede innstillingene",
"scanning_library": "Søk biblioteket",
"search_jobs": "Søk etter jobber...",
"send_welcome_email": "Send velkomst-e-post",
"server_external_domain_settings": "Eksternt domene",
"server_external_domain_settings_description": "Domene for offentlige delingslenker, inkludert http(s)://",
"server_public_users": "Offentlige brukere",
"server_public_users_description": "Alle brukere (navn og epost) blir vist når en bruker blir lagt til et delt album. Når deaktivert, vil brukerne bare bli synlig for administratorer.",
"server_settings": "Serverinstillinger",
"server_settings_description": "Administrer serverinnstillinger",
"server_welcome_message": "Velkomstmelding",
@ -221,7 +239,7 @@
"storage_template_hash_verification_enabled": "Hash verifisering aktivert",
"storage_template_hash_verification_enabled_description": "Aktiver hasjverifisering. Ikke deaktiver dette med mindre du er sikker på konsekvensene",
"storage_template_migration": "Lagringsmal migrering",
"storage_template_migration_description": "Bruk gjeldende <link>{mal}</link> på tidligere opplastede bilder.",
"storage_template_migration_description": "Bruk gjeldende <link>{template}</link> på tidligere opplastede bilder",
"storage_template_migration_info": "Malendringer vil kun gjelde nye ressurser. For å anvende malen på tidligere opplastede ressurser, kjør <link>{job}</link>.",
"storage_template_migration_job": "Migreringsjobb for lagringsmal",
"storage_template_more_details": "For mer informasjon om denne funksjonen, se <template-link>lagringsmalen</template-link> og dens <implications-link>konsekvenser</implications-link>",
@ -231,6 +249,17 @@
"storage_template_settings_description": "Administrer mappestrukturen og filnavnet til opplastede fil",
"storage_template_user_label": "<code>{label}</code> er brukerens Lagringsetikett",
"system_settings": "Systeminstillinger",
"tag_cleanup_job": "Tag opprydding",
"template_email_available_tags": "Du kan bruke følgende variabler i din mal: {tags}",
"template_email_if_empty": "Hvis malen er tom, vil standard epost bli brut.",
"template_email_invite_album": "Inviter Album Mal",
"template_email_preview": "Forhåndsvis",
"template_email_settings": "Epost mal",
"template_email_settings_description": "Administrer tilpasset mal for varslings maler",
"template_email_update_album": "Oppdater Album Mal",
"template_email_welcome": "Mal for velkomst epost",
"template_settings": "Varslings Mal",
"template_settings_description": "Administrer tilpassede maler for varsling.",
"theme_custom_css_settings": "Egendefinert CSS",
"theme_custom_css_settings_description": "Cascading Style Sheets gjør det mulig å tilpasse designet av Immich.",
"theme_settings": "Tema innstillinger",
@ -260,6 +289,8 @@
"transcoding_constant_rate_factor": "Konstant ratefaktor (-crf)",
"transcoding_constant_rate_factor_description": "Nivået på videokvaliteten. Typiske verdier er 23 for H.264, 28 for HEVC, 31 for VP9 og 35 for AV1. Lavere verdier gir bedre kvalitet, men større filstørrelser.",
"transcoding_disabled_description": "Ikke transkoder noen videoer; dette kan føre til avspillingsproblemer på visse klienter",
"transcoding_encoding_options": "Kodek Alternativer",
"transcoding_encoding_options_description": "Sett kodeks, oppløsning, kvalitet og andre valg for koding av videoer",
"transcoding_hardware_acceleration": "Maskinvareakselerasjon",
"transcoding_hardware_acceleration_description": "Eksperimentell; mye raskere, men vil ha lavere kvalitet ved samme bithastighet",
"transcoding_hardware_decoding": "Maskinvaredekoding",
@ -272,6 +303,8 @@
"transcoding_max_keyframe_interval": "Maksimal referansebilde intervall",
"transcoding_max_keyframe_interval_description": "Setter maksimalt antall bilder mellom referansebilder. Lavere verdier reduserer kompresjonseffektiviteten, men forbedrer søketider og kan forbedre kvaliteten i scener med rask bevegelse. 0 setter verdien automatisk.",
"transcoding_optimal_description": "Videoer som har høyere oppløsning enn målopppløsningen eller som ikke er i et akseptert format",
"transcoding_policy": "Retningslinjer for omkoding",
"transcoding_policy_description": "Velg når en video vil blir omkodet",
"transcoding_preferred_hardware_device": "Foretrukken maskinvareenhet",
"transcoding_preferred_hardware_device_description": "Gjelder bare for VAAPI og QSV. Angir DRI-node brukt for maskinvaretranscoding.",
"transcoding_preset_preset": "Forhåndsinnstilling (-preset)",
@ -280,10 +313,10 @@
"transcoding_reference_frames_description": "Antall bilder som skal refereres til når en gitt ramme komprimeres. Høyere verdier forbedrer komprimeringseffektiviteten, men senker ned kodingen. 0 setter denne verdien automatisk.",
"transcoding_required_description": "Bare videoer som ikke er i et akseptert format",
"transcoding_settings": "Innstillinger for videotranskoding",
"transcoding_settings_description": "Administrer oppløsning og kodinginformasjon for videofiler",
"transcoding_settings_description": "Administrer hvilke videoer å omkode og hvordan behandle dem",
"transcoding_target_resolution": "Endelig oppløsning",
"transcoding_target_resolution_description": "Høyere oppløsninger kan bevare mer detaljer, men tar lengre tid å kode, resulterer i større filstørrelser, og kan redusere appens responsivitet.",
"transcoding_temporal_aq": "Temporal AQ",
"transcoding_temporal_aq": "Midlertidig AQ",
"transcoding_temporal_aq_description": "Gjelder kun for NVENC. Øker kvaliteten på scener med høy detaljgrad og lav bevegelse. Kan være inkompatibelt med eldre enheter.",
"transcoding_threads": "Tråder",
"transcoding_threads_description": "Høyere verdier fører til raskere koding, men gir mindre plass for serveren til å behandle andre oppgaver mens den er aktiv. Verdien bør ikke være mer enn antall CPU-kjerner. Maksimerer utnyttelsen hvis satt til 0.",
@ -302,6 +335,7 @@
"trash_settings_description": "Administrer papirkurv-innstillinger",
"untracked_files": "Usporede filer",
"untracked_files_description": "Disse filene er ikke sporet av applikasjonen. De kan være resultatet av mislykkede flyttinger, avbrutte opplastninger eller etterlatt på grunn av en feil",
"user_cleanup_job": "Bruker opprydning",
"user_delete_delay": "<b>{user}</b>s konto og elementer vil legges i kø for permanent sletting om {delay, plural, one {# dag} other {# dager}}.",
"user_delete_delay_settings": "Sletteforsinkelse",
"user_delete_delay_settings_description": "Antall dager etter fjerning før en brukerkonto og dens filer permanent slettes. Brukerfjerningsjobben kjører ved midnatt for å sjekke etter brukere som er klare for sletting. Endringer i denne innstillingen vil bli evaluert ved neste utførelse.",
@ -328,10 +362,11 @@
"advanced": "Avansert",
"age_months": "Alder {months, plural, one {# måned} other {# måneder}}",
"age_year_months": "Alder 1 år, {months, plural, one {# måned} other {# måneder}}",
"age_years": "{years, plural, other {Age #}}",
"album_added": "Album lagt til",
"album_added_notification_setting_description": "Motta en e-postvarsling når du legges til i et delt album",
"album_cover_updated": "Albumomslag oppdatert",
"album_delete_confirmation": "Er du sikker på at du vil slette albumet {album}?\nHvis dette albumet er delt, vil ikke andre brukere ha tilgang til det lenger.",
"album_delete_confirmation": "Er du sikker på at du vil slette albumet {album}?",
"album_delete_confirmation_description": "Hvis dette albumet deles, vil andre brukere miste tilgangen til dette.",
"album_info_updated": "Albuminformasjon oppdatert",
"album_leave": "Forlate album?",
@ -384,16 +419,30 @@
"asset_uploading": "Laster opp...",
"assets": "Filer",
"assets_added_count": "Lagt til {count, plural, one {# element} other {# elementer}}",
"assets_restore_confirmation": "Er du sikker på at du vil gjenopprette alle slettede eiendeler? Denne handlingen kan ikke angres!",
"assets_added_to_album_count": "Lagt til {count, plural, one {# asset} other {# assets}} i album",
"assets_added_to_name_count": "Lagt til {count, plural, one {# asset} other {# assets}} i {hasName, select, true {<b>{name}</b>} other {new album}}",
"assets_count": "{count, plural, one {# asset} other {# assets}}",
"assets_moved_to_trash_count": "Flyttet {count, plural, one {# asset} other {# assets}} til søppel",
"assets_permanently_deleted_count": "Permanent slettet {count, plural, one {# asset} other {# assets}}",
"assets_removed_count": "Slettet {count, plural, one {# asset} other {# assets}}",
"assets_restore_confirmation": "Er du sikker på at du vil gjenopprette alle slettede eiendeler? Denne handlingen kan ikke angres! Vær oppmerksom på at frakoblede ressurser ikke kan gjenopprettes på denne måten.",
"assets_restored_count": "Gjenopprettet {count, plural, one {# asset} other {# assets}}",
"assets_trashed_count": "Kastet {count, plural, one {# asset} other {# assets}}",
"assets_were_part_of_album_count": "{count, plural, one {Asset was} other {Assets were}} er allerede lagt til i albumet",
"authorized_devices": "Autoriserte enheter",
"back": "Tilbake",
"back_close_deselect": "Tilbake, lukk eller fjern merking",
"backward": "Bakover",
"birthdate_saved": "Fødselsdato er lagret vellykket.",
"birthdate_saved": "Fødselsdato er vellykket lagret",
"birthdate_set_description": "Fødelsdatoen er brukt for å beregne alderen til denne personen ved tidspunktet til bildet.",
"blurred_background": "Uskarp bakgrunn",
"bulk_delete_duplicates_confirmation": "Er du sikker på at du vil slette {count} dupliserte filer? Dette vil beholde største filen fra hver gruppe og vil permanent slette alle andre duplikater. Du kan ikke angre denne handlingen!",
"bulk_keep_duplicates_confirmation": "Er du sikker på at du vil beholde {count} dupliserte filer? Dette vil løse alle dupliserte grupper uten å slette noe.",
"bulk_trash_duplicates_confirmation": "Er du sikker på ønsker å slette {count} dupliserte filer? Dette vil beholde største filen fra hver gruppe, samt slette alle andre duplikater.",
"bugs_and_feature_requests": "Feil og funksjonsforespørsler",
"build": "Bygg",
"build_image": "Lag Bilde",
"bulk_delete_duplicates_confirmation": "Er du sikker på at du vil slette {count, plural, one {# duplicate asset} other {# duplicate assets}} dupliserte filer? Dette vil beholde største filen fra hver gruppe og vil permanent slette alle andre duplikater. Du kan ikke angre denne handlingen!",
"bulk_keep_duplicates_confirmation": "Er du sikker på at du vil beholde {count, plural, one {# duplicate asset} other {# duplicate assets}} dupliserte filer? Dette vil løse alle dupliserte grupper uten å slette noe.",
"bulk_trash_duplicates_confirmation": "Er du sikker på ønsker å slette {count, plural, one {# duplicate asset} other {# duplicate assets}} dupliserte filer? Dette vil beholde største filen fra hver gruppe, samt slette alle andre duplikater.",
"buy": "Kjøp Immich",
"camera": "Kamera",
"camera_brand": "Kameramerke",
"camera_model": "Kameramodell",
@ -420,8 +469,11 @@
"clear_all_recent_searches": "Fjern alle nylige søk",
"clear_message": "Fjern melding",
"clear_value": "Fjern verdi",
"clockwise": "Med urviseren",
"close": "Lukk",
"collapse": "Trekk sammen",
"collapse_all": "Kollaps alt",
"color": "Farge",
"color_theme": "Fargetema",
"comment_deleted": "Kommentar slettet",
"comment_options": "Kommentaralternativer",
@ -430,6 +482,7 @@
"confirm": "Bekreft",
"confirm_admin_password": "Bekreft administratorpassord",
"confirm_delete_shared_link": "Er du sikker på at du vil slette denne delte lenken?",
"confirm_keep_this_delete_others": "Alle andre ressurser i denne stabelen vil bli slettet bortsett fra denne ressursen. Er du sikker på at du vil fortsette?",
"confirm_password": "Bekreft passord",
"contain": "Inneholder",
"context": "Kontekst",
@ -455,6 +508,8 @@
"create_new_person": "Opprett ny person",
"create_new_person_hint": "Tildel valgte eiendeler til en ny person",
"create_new_user": "Opprett ny bruker",
"create_tag": "Lag tag",
"create_tag_description": "Lag en ny tag. For undertag, vennligst fullfør hele banen til taggen, inkludert forovervendt skråstrek.",
"create_user": "Opprett Bruker",
"created": "Opprettet",
"current_device": "Nåværende enhet",
@ -468,6 +523,10 @@
"date_range": "Datoområde",
"day": "Dag",
"deduplicate_all": "De-dupliser alle",
"deduplication_criteria_1": "Bilde størrelse i bytes",
"deduplication_criteria_2": "Antall av EXIF data",
"deduplication_info": "Dedupliseringsinformasjon",
"deduplication_info_description": "For å automatisk forhåndsvelge eiendeler og fjerne duplikater samtidig, ser vi på:",
"default_locale": "Standard språkinnstilling",
"default_locale_description": "Formater datoer og tall basert på nettleserens språkinnstilling",
"delete": "Slett",
@ -477,14 +536,19 @@
"delete_key": "Slett nøkkel",
"delete_library": "Slett bibliotek",
"delete_link": "Slett lenke",
"delete_others": "Slett andre",
"delete_shared_link": "Slett delt lenke",
"delete_tag": "Slett tag",
"delete_tag_confirmation_prompt": "Er du sikker på at du vil slette {tagName} tag?",
"delete_user": "Slett bruker",
"deleted_shared_link": "Slettet delt lenke",
"deletes_missing_assets": "Slett eiendeler som mangler fra disk",
"description": "Beskrivelse",
"details": "Detaljer",
"direction": "Retning",
"disabled": "Deaktivert",
"disallow_edits": "Forby redigering",
"discord": "Discord",
"discover": "Oppdag",
"dismiss_all_errors": "Avvis alle feil",
"dismiss_error": "Avvis feil",
@ -493,14 +557,20 @@
"display_original_photos": "Vis opprinnelige bilder",
"display_original_photos_setting_description": "Foretrekk å vise det opprinnelige bildet når du ser på en fil i stedet for miniatyrbilder når den opprinnelige filen er kompatibel med nettet. Dette kan føre til tregere visning av bilder.",
"do_not_show_again": "Ikke vis denne meldingen igjen",
"documentation": "Dokumentasjon",
"done": "Ferdig",
"download": "Last ned",
"download_include_embedded_motion_videos": "Innebygde videoer",
"download_include_embedded_motion_videos_description": "Inkluder innebygde videoer i levende bilder som en egen fil",
"download_settings": "Last ned",
"download_settings_description": "Administrer innstillinger relatert til nedlasting av filer",
"downloading": "Laster ned",
"downloading_asset_filename": "Last ned {filename}",
"drop_files_to_upload": "Slipp filer hvor som helst for å laste opp",
"duplicates": "Duplikater",
"duplicates_description": "Løs hver gruppe ved å angi hvilke, hvis noen, er duplikater",
"duration": "Varighet",
"edit": "Rediger",
"edit_album": "Rediger album",
"edit_avatar": "Rediger avatar",
"edit_date": "Rediger dato",
@ -512,62 +582,119 @@
"edit_key": "Rediger nøkkel",
"edit_link": "Endre lenke",
"edit_location": "Endre lokasjon",
"edit_name": "Endre navn",
"edit_name": "Redigere navn",
"edit_people": "Rediger personer",
"edit_tag": "Rediger tag",
"edit_title": "Rediger Tittel",
"edit_user": "Rediger bruker",
"edited": "Redigert",
"editor": "Redaktør",
"editor_close_without_save_prompt": "Endringene vil ikke bli lagret",
"editor_close_without_save_title": "Lukk redigering?",
"editor_crop_tool_h2_aspect_ratios": "Sideforhold",
"editor_crop_tool_h2_rotation": "Rotasjon",
"email": "E-postadresse",
"empty_trash": "Tøm papirkurv",
"enable": "",
"enabled": "",
"empty_trash_confirmation": "Er du sikker på at du vil tømme søppelbøtte ? Dette vil slette alle filene i søppelbøtta permanent fra Immich.\nDu kan ikke angre denne handlingen!",
"enable": "Aktivere",
"enabled": "Aktivert",
"end_date": "Slutt dato",
"error": "Feil",
"error_loading_image": "Feil ved lasting av bilde",
"error_title": "Feil - Noe gikk galt",
"errors": {
"cannot_navigate_next_asset": "Kan ikke navigere til neste fil",
"cannot_navigate_previous_asset": "Kan ikke navigere til forrige fil",
"cant_apply_changes": "Kan ikke legge til endringene",
"cant_change_activity": "Kan ikke {enabled, select, true {disable} other {enable}} aktivitet",
"cant_change_asset_favorite": "Kan ikke endre favoritt til filen",
"cant_change_metadata_assets_count": "Kan ikke endre metadata for {count, plural, one {# asset} other {# assets}}",
"cant_get_faces": "Kan ikke finne ansikter",
"cant_get_number_of_comments": "Kan ikke hente antall kommentarer",
"cant_search_people": "Kan ikke søke etter mennesker",
"cant_search_places": "Kan ikke søke etter plasser",
"cleared_jobs": "Fjernet jobber for: {job}",
"error_adding_assets_to_album": "Feil med å legge til bilder til album",
"error_adding_users_to_album": "Feil, kan ikke legge til brukere til album",
"error_deleting_shared_user": "Feil med å slette delt bruker",
"error_downloading": "Feil med å laste ned {filename}",
"error_hiding_buy_button": "Feil med å skjule kjøp knapp",
"error_removing_assets_from_album": "Feil med å fjerne bilder fra album, sjekk konsoll for mer detaljer",
"error_selecting_all_assets": "Feil med å velge alle bilder",
"exclusion_pattern_already_exists": "Dette eksklusjonsmønsteret eksisterer allerede.",
"failed_job_command": "Kommandoen {command} mislyktes for jobben: {job}",
"failed_to_create_album": "Feil med å lage album",
"failed_to_create_shared_link": "Feil med å lage delt lenke",
"failed_to_edit_shared_link": "Feilet med å redigere delt lenke",
"failed_to_get_people": "Feilet med å finne mennesker",
"failed_to_keep_this_delete_others": "Feilet med å beholde dette bilde og slette de andre",
"failed_to_load_asset": "Feilet med å laste bilder",
"failed_to_load_assets": "Feilet med å laste bilde",
"failed_to_load_people": "Feilen med å laste mennesker",
"failed_to_remove_product_key": "Feilet med å ta bort produkt nøkkel",
"failed_to_stack_assets": "Feilet med å stable bilder",
"failed_to_unstack_assets": "Feilet med å avstable bilder",
"import_path_already_exists": "Denne importstien eksisterer allerede.",
"incorrect_email_or_password": "Feil epost eller passord",
"paths_validation_failed": "{paths, plural, one {# sti} other {# sti}} mislyktes validering",
"profile_picture_transparent_pixels": "Profil bilde kan ikke ha gjennomsiktige piksler. Vennligst zoom inn og/eller flytt bilde.",
"quota_higher_than_disk_size": "Du har satt en kvote høyere enn diskstørrelsen",
"repair_unable_to_check_items": "Kan ikke sjekke {count, select, one {element} other {elementer}}",
"unable_to_add_album_users": "Kan ikke legge til brukere i albumet",
"unable_to_add_assets_to_shared_link": "Kan ikke legge til bilder til delt lenke",
"unable_to_add_comment": "Kan ikke legge til kommentar",
"unable_to_add_exclusion_pattern": "Kan ikke legge til eksklusjonsmønster",
"unable_to_add_import_path": "Kan ikke legge til importsti",
"unable_to_add_partners": "Kan ikke legge til partnere",
"unable_to_add_remove_archive": "Kan ikke {archived, select, true {remove asset from} other {add asset to}} arkivet",
"unable_to_add_remove_favorites": "Kan ikke {favorite, select, true {add asset to} other {remove asset from}} favoritter",
"unable_to_archive_unarchive": "Kan ikke {archived, select, true {archive} other {unarchive}}",
"unable_to_change_album_user_role": "Kan ikke endre brukerens rolle i albumet",
"unable_to_change_date": "Kan ikke endre dato",
"unable_to_change_favorite": "Kan ikke endre favoritt for bildet",
"unable_to_change_location": "Kan ikke endre plassering",
"unable_to_change_password": "Kan ikke endre passord",
"unable_to_change_visibility": "Kan ikke endre synlighet for {count, plural, one {# person} other {# people}}",
"unable_to_complete_oauth_login": "Kunne ikke fullføre OAuth innlogging",
"unable_to_connect": "Kan ikke koble til",
"unable_to_connect_to_server": "Kan ikke koble til server",
"unable_to_copy_to_clipboard": "Kan ikke kopiere til utklippstavlen, sørg for at du får tilgang til siden via HTTPS",
"unable_to_create_admin_account": "",
"unable_to_create_admin_account": "Kan ikke opprette administrator bruker",
"unable_to_create_api_key": "Kan ikke opprette en ny API-nøkkel",
"unable_to_create_library": "Kan ikke opprette bibliotek",
"unable_to_create_user": "Kan ikke opprette bruker",
"unable_to_delete_album": "Kan ikke slette album",
"unable_to_delete_asset": "Kan ikke slette filen",
"unable_to_delete_assets": "Feil med å slette bilde",
"unable_to_delete_exclusion_pattern": "Kan ikke slette eksklusjonsmønster",
"unable_to_delete_import_path": "Kan ikke slette importsti",
"unable_to_delete_shared_link": "Kan ikke slette delt lenke",
"unable_to_delete_user": "Kan ikke slette bruker",
"unable_to_download_files": "Kan ikke laste ned filer",
"unable_to_edit_exclusion_pattern": "Kan ikke redigere eksklusjonsmønster",
"unable_to_edit_import_path": "Kan ikke redigere importsti",
"unable_to_empty_trash": "Kan ikke tømme papirkurven",
"unable_to_enter_fullscreen": "Kan ikke gå inn i fullskjerm",
"unable_to_exit_fullscreen": "Kan ikke gå ut fra fullskjerm",
"unable_to_get_comments_number": "Kan ikke hente antall kommentarer",
"unable_to_get_shared_link": "Kan ikke hente delt lenke",
"unable_to_hide_person": "Kan ikke skjule person",
"unable_to_link_motion_video": "Kan ikke lenke bevegelig video",
"unable_to_link_oauth_account": "Kan ikke lenke til OAuth-konto",
"unable_to_load_album": "Kan ikke laste inn album",
"unable_to_load_asset_activity": "Kan ikke laste inn aktivitet for filen",
"unable_to_load_items": "Kan ikke laste inn elementer",
"unable_to_load_liked_status": "Kan ikke laste inn likt status",
"unable_to_log_out_all_devices": "Kan ikke logge ut fra alle enheter",
"unable_to_log_out_device": "Kan ikke logge ut av enhet",
"unable_to_login_with_oauth": "Kan ikke logge inn med OAuth",
"unable_to_play_video": "Kan ikke spille av video",
"unable_to_reassign_assets_existing_person": "Kunne ikke endre bruker på bildene til {name, select, null {an existing person} other {{name}}}",
"unable_to_reassign_assets_new_person": "Kunne ikke tildele bildene til en ny person",
"unable_to_refresh_user": "Kan ikke oppdatere bruker",
"unable_to_remove_album_users": "Kan ikke fjerne brukere fra album",
"unable_to_remove_api_key": "Kan ikke fjerne API-nøkkel",
"unable_to_remove_assets_from_shared_link": "Kunne ikke fjerne bilder fra delt lenke",
"unable_to_remove_deleted_assets": "Kan ikke fjerne offlinefiler",
"unable_to_remove_library": "Kan ikke fjerne bibliotek",
"unable_to_remove_partner": "Kan ikke fjerne partner",
@ -580,35 +707,48 @@
"unable_to_restore_user": "Kan ikke gjenopprette bruker",
"unable_to_save_album": "Kan ikke lagre album",
"unable_to_save_api_key": "Kan ikke lagre API-nøkkel",
"unable_to_save_date_of_birth": "Kunne ikke lagre bursdag",
"unable_to_save_name": "Kan ikke lagre navn",
"unable_to_save_profile": "Kan ikke lagre profil",
"unable_to_save_settings": "Kan ikke lagre instillinger",
"unable_to_scan_libraries": "Kan ikke skanne biblioteker",
"unable_to_scan_library": "Kan ikke skanne bibliotek",
"unable_to_set_feature_photo": "Kunne ikke sette funksjonsbilde",
"unable_to_set_profile_picture": "Kan ikke sette profilbilde",
"unable_to_submit_job": "Kan ikke sende inn jobb",
"unable_to_trash_asset": "Kan ikke flytte filen til papirkurven",
"unable_to_unlink_account": "Kan ikke fjerne kobling til konto",
"unable_to_unlink_motion_video": "Kunne ikke ta på kobling på bevegelig video",
"unable_to_update_album_cover": "Kunne ikke oppdatere album bilde",
"unable_to_update_album_info": "Kunne ikke oppdatere informasjon i album",
"unable_to_update_library": "Kan ikke oppdatere bibliotek",
"unable_to_update_location": "Kan ikke oppdatere plassering",
"unable_to_update_settings": "Kan ikke oppdatere innstillinger",
"unable_to_update_timeline_display_status": "Kan ikke oppdatere visningsstatus for tidslinje",
"unable_to_update_user": "Kan ikke oppdatere bruker"
"unable_to_update_user": "Kan ikke oppdatere bruker",
"unable_to_upload_file": "Kunne ikke laste opp fil"
},
"exif": "EXIF",
"exit_slideshow": "Avslutt lysbildefremvisning",
"expand_all": "Utvid alle",
"expire_after": "Utgå etter",
"expired": "Utgått",
"expires_date": "Utløper {date}",
"explore": "Utforsk",
"explorer": "Utforsker",
"export": "Eksporter",
"export_as_json": "Eksporter som JSON",
"extension": "Utvidelse",
"external": "Ekstern",
"external_libraries": "Eksterne Bibliotek",
"face_unassigned": "Ikke tilordnet",
"failed_to_load_assets": "Feilet med å laste fil",
"favorite": "Favoritt",
"favorite_or_unfavorite_photo": "Merk som favoritt eller fjern som favoritt",
"favorites": "Favoritter",
"feature_photo_updated": "Fremhevet bilde oppdatert",
"features": "Funksjoner",
"features_setting_description": "Administrerer funksjoner for appen",
"file_name": "Filnavn",
"file_name_or_extension": "Filnavn eller filtype",
"filename": "Filnavn",
@ -616,24 +756,45 @@
"filter_people": "Filtrer personer",
"find_them_fast": "Finn dem raskt ved søking av navn",
"fix_incorrect_match": "Fiks feilaktig match",
"folders": "Mapper",
"folders_feature_description": "Utforsker mappe visning for bilder og videoer på fil systemet",
"forward": "Fremover",
"general": "Generelt",
"get_help": "Få Hjelp",
"getting_started": "Kom i gang",
"go_back": "Gå tilbake",
"go_to_folder": "Gå til mappe",
"go_to_search": "Gå til søk",
"group_albums_by": "Grupper album etter...",
"group_no": "Ingen gruppering",
"group_owner": "Grupper etter eiere",
"group_year": "Grupper etter år",
"has_quota": "Har kvote",
"hi_user": "Hei {name} ({email})",
"hide_all_people": "Skjul alle mennesker",
"hide_gallery": "Skjul galleri",
"hide_named_person": "Skjul {name}",
"hide_password": "Skjul passord",
"hide_person": "Skjul person",
"hide_unnamed_people": "Skjul mennesker uten navn",
"host": "Vert",
"hour": "Time",
"image": "Bilde",
"image_alt_text_date": "{isVideo, select, true {Video} other {Image}} tatt på {date}",
"image_alt_text_date_1_person": "{isVideo, select, true {Video} other {Image}} tatt med {person1} den {date}",
"image_alt_text_date_2_people": "{isVideo, select, true {Video} other {Image}} tatt med {person1} og {person2} den {date}",
"image_alt_text_date_3_people": "{isVideo, select, true {Video} other {Image}} tatt med {person1}, {person2}, og {person3} den {date}",
"image_alt_text_date_4_or_more_people": "{isVideo, select, true {Video} other {Image}} tatt med {person1}, {person2}, og {additionalCount, number} andre den {date}",
"image_alt_text_date_place": "{isVideo, select, true {Video} other {Image}} tatt i {city}, {country} den {date}",
"image_alt_text_date_place_1_person": "{isVideo, select, true {Video} other {Image}} tatt i {city}, {country} med {person1} den {date}",
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Image}} tatt i {city}, {country} med {person1} og {person2} den {date}",
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Image}} tatt i {city}, {country} med {person1}, {person2}, og {person3} den {date}",
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Image}} tatt i {city}, {country} med {person1}, {person2}, ok {additionalCount, number} andre den {date}",
"immich_logo": "Immich Logo",
"immich_web_interface": "Immich webgrensesnitt",
"import_from_json": "Importer fra JSON",
"import_path": "Import-sti",
"in_albums": "I {count, plural, one {# album} other {# albums}}",
"in_archive": "I arkiv",
"include_archived": "Inkluder arkiverte",
"include_shared_albums": "Inkluder delte album",
@ -648,19 +809,26 @@
},
"invite_people": "Inviter Personer",
"invite_to_album": "Inviter til album",
"items_count": "{count, plural, one {# item} other {# items}}",
"jobs": "Oppgaver",
"keep": "Behold",
"keep_all": "Behold alle",
"keep_this_delete_others": "Behold denne, slett de andre",
"kept_this_deleted_others": "Behold denne filen og slett {count, plural, one {# asset} other {# assets}}",
"keyboard_shortcuts": "Tastatursnarveier",
"language": "Språk",
"language_setting_description": "Velg ditt foretrukket språk",
"last_seen": "Sist sett",
"latest_version": "Siste versjon",
"latitude": "Breddegrad",
"leave": "Forlat",
"let_others_respond": "La andre respondere",
"level": "Nivå",
"library": "Bibliotek",
"library_options": "Bibliotekalternativer",
"light": "Lys",
"like_deleted": "Som slettede",
"link_motion_video": "Koble bevegelsesvideo",
"link_options": "Lenkealternativer",
"link_to_oauth": "Lenke til OAuth",
"linked_oauth_account": "Lenket til OAuth-konto",
@ -669,10 +837,17 @@
"loading_search_results_failed": "Klarte ikke å laste inn søkeresultater",
"log_out": "Logg ut",
"log_out_all_devices": "Logg ut fra alle enheter",
"logged_out_all_devices": "Logg ut av alle enheter",
"logged_out_device": "Logg ut enhet",
"login": "Logg inn",
"login_has_been_disabled": "Login har blitt deaktivert.",
"logout_all_device_confirmation": "Er du sikker på at du vil logge ut av alle enheter?",
"logout_this_device_confirmation": "Er du sikker på at du vil logge ut av denne enheten?",
"longitude": "Lengdegrad",
"look": "Se",
"loop_videos": "Gjenta Videoer",
"loop_videos_description": "Aktiver for å automatisk loope en video i detaljeviseren.",
"main_branch_warning": "Du bruker en utviklingsversjon; vi anbefaler på det sterkeste og bruke en utgitt versjon!",
"make": "Merke",
"manage_shared_links": "Håndter delte linker",
"manage_sharing_with_partners": "Administrer deling med partnere",
@ -682,18 +857,22 @@
"manage_your_devices": "Administrer dine innloggede enheter",
"manage_your_oauth_connection": "Administrer tilkoblingen din med OAuth",
"map": "Kart",
"map_marker_for_images": "Kart makeringer for bilder tatt i {city}, {country}",
"map_marker_with_image": "Kartmarkør med bilde",
"map_settings": "Kartinnstillinger",
"matches": "Samsvarende",
"media_type": "Mediatype",
"memories": "Minner",
"memories_setting_description": "Administrer hva du ser i minnene dine",
"memory": "Minne",
"memory_lane_title": "Minnefelt {title}",
"menu": "Meny",
"merge": "Slå sammen",
"merge_people": "Slå sammen personer",
"merge_people_limit": "Du kan bare slå sammen opp til 5 fjes om gangen",
"merge_people_prompt": "Vil du slå sammen disse personene? Denne handlingen kan ikke reverseres.",
"merge_people_successfully": "Personene ble vellykket slått sammen",
"merged_people_count": "Sammenslått {count, plural, one {# person} other {# people}}",
"minimize": "Minimer",
"minute": "Minutt",
"missing": "Mangler",
@ -705,15 +884,19 @@
"name": "Navn",
"name_or_nickname": "Navn eller kallenavn",
"never": "aldri",
"new_album": "Nytt Album",
"new_api_key": "Ny API-nøkkel",
"new_password": "Nytt passord",
"new_person": "Ny person",
"new_user_created": "Ny bruker opprettet",
"new_version_available": "NY VERSJON TILGJENGELIG",
"newest_first": "Nyeste først",
"next": "Neste",
"next_memory": "Neste minne",
"no": "Nei",
"no_albums_message": "Opprett et album for å organisere bildene og videoene dine",
"no_albums_with_name_yet": "Det ser ut som om det ikke finnes noen album med dette navnet enda.",
"no_albums_yet": "Det ser ut som om du ikke har noen album enda.",
"no_archived_assets_message": "Arkiver bilder og videoer for å skjule dem fra visningen av bildene dine",
"no_assets_message": "KLIKK FOR Å LASTE OPP DITT FØRSTE BILDE",
"no_duplicates_found": "Ingen duplikater ble funnet.",
@ -724,6 +907,7 @@
"no_name": "Ingen navn",
"no_places": "Ingen steder",
"no_results": "Ingen resultater",
"no_results_description": "Prøv et synonym eller mer generelt søkeord",
"no_shared_albums_message": "Opprett et album for å dele bilder og videoer med personer i nettverket ditt",
"not_in_any_album": "Ikke i noen album",
"note_apply_storage_label_to_previously_uploaded assets": "Merk: For å bruke lagringsetiketten på tidligere opplastede filer, kjør",
@ -733,21 +917,32 @@
"notifications": "Notifikasjoner",
"notifications_setting_description": "Administrer varsler",
"oauth": "OAuth",
"official_immich_resources": "Offisielle Immich Resurser",
"offline": "Frakoblet",
"offline_paths": "Frakoblede stier",
"offline_paths_description": "Disse resultatene kan skyldes manuell sletting av filer som ikke er en del av et eksternt bibliotek.",
"ok": "Ok",
"oldest_first": "Eldste først",
"onboarding": "Påmønstring",
"onboarding_privacy_description": "Følgene (valgfrie) funksjoner er avhengige av eksterne tjeneste, og kan bli deaktivert når som helst under administrator instillinger.",
"onboarding_theme_description": "Velg et fargetema for din bruker. Du kan endre denne senere under dine instillinger.",
"onboarding_welcome_description": "La oss sette opp denne installasjonen med noen vanlige instillinger.",
"onboarding_welcome_user": "Velkommen, {user}",
"online": "Tilkoblet",
"only_favorites": "Bare favoritter",
"open_in_map_view": "Åpne i kartvisning",
"open_in_openstreetmap": "Åpne i OpenStreetMap",
"open_the_search_filters": "Åpne søkefiltrene",
"options": "Valg",
"or": "eller",
"organize_your_library": "Organiser biblioteket ditt",
"original": "original",
"other": "Annet",
"other_devices": "Andre enheter",
"other_variables": "Andre variabler",
"owned": "Ditt album",
"owner": "Eier",
"partner": "Partner",
"partner_can_access": "{partner} har tilgang",
"partner_can_access_assets": "Alle bildene og videoene dine unntatt de i arkivert og slettet tilstand",
"partner_can_access_location": "Stedet der bildene dine ble tatt",
@ -769,12 +964,21 @@
"paused": "Satt på pause",
"pending": "Avventer",
"people": "Folk",
"people_edits_count": "Endret {count, plural, one {# person} other {# people}}",
"people_feature_description": "Utforsk bilder og videoer gruppert etter mennesker",
"people_sidebar_description": "Vis en lenke til Personer i sidepanelet",
"permanent_deletion_warning": "Advarsel om permanent sletting",
"permanent_deletion_warning_setting_description": "Vis en advarsel ved permanent sletting av filer",
"permanently_delete": "Slett permanent",
"permanently_delete_assets_count": "Permanent slett {count, plural, one {asset} other {assets}}",
"permanently_delete_assets_prompt": "Er du sikker på at du vil permanent slette {count, plural, one {this asset?} other {these <b>#</b> assets?}} Dette vil også slette {count, plural, one {it from its} other {them from their}} album.",
"permanently_deleted_asset": "Filen har blitt permanent slettet",
"permanently_deleted_assets_count": "Permanent slett {count, plural, one {# asset} other {# assets}}",
"person": "Person",
"person_hidden": "{name}{hidden, select, true { (hidden)} other {}}",
"photo_shared_all_users": "Det ser ut som om du deler bildene med alle brukere eller det er ingen brukere å dele med.",
"photos": "Bilder",
"photos_and_videos": "Bilder & Videoer",
"photos_count": "{count, plural, one {{count, number} Bilde} other {{count, number} Bilder}}",
"photos_from_previous_years": "Bilder fra tidliger år",
"pick_a_location": "Velg et sted",
@ -791,77 +995,162 @@
"previous_memory": "Forrige minne",
"previous_or_next_photo": "Forrige eller neste bilde",
"primary": "Primær",
"privacy": "Privat",
"profile_image_of_user": "Profil bilde av {user}",
"profile_picture_set": "Profilbildet er satt.",
"public_album": "Offentlige album",
"public_share": "Offentlig deling",
"purchase_account_info": "Støttespiller",
"purchase_activated_subtitle": "Takk for at du støtter Immich og åpen kildekode programvare",
"purchase_activated_time": "Aktiver den {date, date}",
"purchase_activated_title": "Du produktnøkkel har vellyket blitt aktivert",
"purchase_button_activate": "Aktiver",
"purchase_button_buy": "Kjøp",
"purchase_button_buy_immich": "Kjøp Immich",
"purchase_button_never_show_again": "Aldri vis igjen",
"purchase_button_reminder": "Påminn meg om 30 dager",
"purchase_button_remove_key": "Ta bort produktnøkkel",
"purchase_button_select": "Velg",
"purchase_failed_activation": "Feilet med å aktivere! Vennligst sjekk eposten for riktig produktnøkkel!",
"purchase_individual_description_1": "For en person",
"purchase_individual_description_2": "Støttespiller status",
"purchase_individual_title": "Individuell",
"purchase_input_suggestion": "Har du en produktnøkkel? Legg til denne under",
"purchase_license_subtitle": "Kjøp Immich for å støtte den videre utviklingen av systemet",
"purchase_lifetime_description": "Kjøp for livstid",
"purchase_option_title": "KJØPSVALG",
"purchase_panel_info_1": "Å lage Immich tar mye tid og energi, og nå har vi en fulltidsansatt utvikler som jobber med å gjøre produktet så godt vi kan. Vårt oppdrag er for åpen-kildekode programvare og etisk virksomhets praktisk å kunne bli bærekraftig inntekt for utviklere og for å lage privat repekterte økesystem med mulighet for å tilby skytjeneste.",
"purchase_panel_info_2": "Siden har forpliktet oss ikke å legge til betalingsmurer, vil dette kjøpet ikke gi deg noen tilleggsfunksjoner i Immich. Vi er avhengige av brukere som deg for å støtte Immichs pågående utvikling.",
"purchase_panel_title": "Hjelp prosjektet",
"purchase_per_server": "For hver server",
"purchase_per_user": "For hver bruker",
"purchase_remove_product_key": "Ta bor Produktnøkkel",
"purchase_remove_product_key_prompt": "Er du sikker på at du vil ta bort produktnøkkelen?",
"purchase_remove_server_product_key": "Ta bort Server Produktnøkkel",
"purchase_remove_server_product_key_prompt": "Er du sikker på at du vil ta bort Server Produktnøkkelen?",
"purchase_server_description_1": "For hele serveren",
"purchase_server_description_2": "Støttespiller status",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "Produktnøkkel for server er administrert av administratoren",
"rating": "Stjernevurdering",
"rating_clear": "Slett vurdering",
"rating_count": "{count, plural, one {# star} other {# stars}}",
"rating_description": "Hvis EXIF vurdering i informasjons panelet",
"reaction_options": "Reaksjonsalternativer",
"read_changelog": "Les endringslogg",
"reassign": "Tilordne på nytt",
"reassigned_assets_to_existing_person": "Tildelt på nytt {count, plural, one {# asset} other {# assets}} to {name, select, null {an existing person} other {{name}}}",
"reassigned_assets_to_new_person": "Tildelt på nytt {count, plural, one {# asset} other {# assets}} til en ny person",
"reassing_hint": "Tilordne valgte eiendeler til en eksisterende person",
"recent": "Nylig",
"recent-albums": "Nylige album",
"recent_searches": "Nylige søk",
"refresh": "Oppdater",
"refresh_encoded_videos": "Oppdater kodete videoer",
"refresh_faces": "Oppdater ansikter",
"refresh_metadata": "Oppdater metadata",
"refresh_thumbnails": "Oppdater miniatyrbilder",
"refreshed": "Oppdatert",
"refreshes_every_file": "Oppdaterer alle filer",
"refreshing_encoded_video": "Oppdaterer kodete video",
"refreshing_faces": "Oppdaterer ansikter",
"refreshing_metadata": "Oppdaterer matadata",
"regenerating_thumbnails": "Regenererer miniatyrbilder",
"remove": "Fjern",
"remove_assets_album_confirmation": "Er du sikker på at du fil slette {count, plural, one {# asset} other {# assets}} fra albumet?",
"remove_assets_shared_link_confirmation": "Er du sikker på at du vil slette {count, plural, one {# asset} other {# assets}} fra den delte lenken?",
"remove_assets_title": "Vil du fjerne eiendeler?",
"remove_custom_date_range": "Fjern egendefinert datoperiode",
"remove_deleted_assets": "Fjern fra frakoblede filer",
"remove_from_album": "Fjern fra album",
"remove_from_favorites": "Fjern fra favoritter",
"remove_from_shared_link": "Fjern fra delt lenke",
"remove_url": "Fjern URL",
"remove_user": "Fjern bruker",
"removed_api_key": "Fjernet API-nøkkel: {name}",
"removed_from_archive": "Fjernet fra arkivet",
"removed_from_favorites": "Fjernet fra favoritter",
"removed_from_favorites_count": "{count, plural, other {Removed #}} fra favoritter",
"removed_tagged_assets": "Fjern tag fra {count, plural, one {# asset} other {# assets}}",
"rename": "Gi nytt navn",
"repair": "Reparer",
"repair_no_results_message": "Usporrede og savnede filer vil vises her",
"replace_with_upload": "Erstatte med opplasting",
"repository": "Depot",
"require_password": "Krev passord",
"require_user_to_change_password_on_first_login": "Krev at brukeren endrer passord ved første pålogging",
"reset": "Tilbakestill",
"reset_password": "Tilbakestill passord",
"reset_people_visibility": "Tilbakestill personsynlighet",
"reset_to_default": "Tilbakestill til standard",
"resolve_duplicates": "Løs duplikater",
"resolved_all_duplicates": "Løste alle duplikater",
"restore": "Gjenopprett",
"restore_all": "Gjenopprett alle",
"restore_user": "Gjenopprett bruker",
"restored_asset": "Gjenopprettet ressurs",
"resume": "Fortsett",
"retry_upload": "Prøv opplasting på nytt",
"review_duplicates": "Gjennomgå duplikater",
"role": "Rolle",
"role_editor": "Editor",
"role_viewer": "Visning",
"save": "Lagre",
"saved_api_key": "Lagret API-nøkkel",
"saved_profile": "Lagret profil",
"saved_settings": "Lagret instillinger",
"say_something": "Si noe",
"scan_all_libraries": "Skann alle biblioteker",
"scan_library": "Skann",
"scan_settings": "Skanneinnstillinger",
"scanning_for_album": "Skanner etter album...",
"search": "Søk",
"search_albums": "Søk i album",
"search_by_context": "Søk etter kontekst",
"search_by_filename": "Søk etter filnavn og filtype",
"search_by_filename_example": "f.eks. IMG_1234.JPG eller PNG",
"search_camera_make": "Søk etter kameramerke...",
"search_camera_model": "Søk etter kamera modell...",
"search_city": "Søk etter by...",
"search_country": "Søk etter land...",
"search_for_existing_person": "Søk etter eksisterende person",
"search_no_people": "Ingen personer",
"search_no_people_named": "Ingen personer med navnet \"{name}\"",
"search_options": "Søke alternativer",
"search_people": "Søk personer",
"search_places": "Søk steder",
"search_settings": "Søke instillinger",
"search_state": "Søk etter stat...",
"search_tags": "Søk tags...",
"search_timezone": "Søk etter tidssone....",
"search_type": "Søk etter type",
"search_your_photos": "Søk i dine bilder",
"searching_locales": "Søker lokaler...",
"second": "Sekund",
"see_all_people": "Vis alle mennesker",
"select_album_cover": "Velg albumomslag",
"select_all": "Velg alle",
"select_all_duplicates": "Velg alle duplikater",
"select_avatar_color": "Velg avatarfarge",
"select_face": "Velg ansikt",
"select_featured_photo": "Velg fremhevet bilde",
"select_from_computer": "Velg fra datamaskin",
"select_keep_all": "Velg beholde alle",
"select_library_owner": "Velg bibliotekseier",
"select_new_face": "Velg nytt ansikt",
"select_photos": "Velg bilder",
"select_trash_all": "Velg å flytte alt til papirkurven",
"selected": "Valgt",
"selected_count": "{count, plural, other {# selected}}",
"send_message": "Send melding",
"send_welcome_email": "Send velkomstmelding",
"server_offline": "Server frakoblet",
"server_online": "Server tilkoblet",
"server_stats": "Server Statistikk",
"server_version": "Server Versjon",
"set": "Sett",
"set_as_album_cover": "Sett som albumomslag",
"set_as_featured_photo": "Angi som fremhevet bilde",
"set_as_profile_picture": "Sett som profilbilde",
"set_date_of_birth": "Sett fødselsdato",
"set_profile_picture": "Sett profilbilde",
@ -871,14 +1160,20 @@
"share": "Del",
"shared": "Delt",
"shared_by": "Delt av",
"shared_by_user": "Delt av {user}",
"shared_by_you": "Delt av deg",
"shared_from_partner": "Bilder fra {partner}",
"shared_link_options": "Alternativer for delte lenke",
"shared_links": "Delte linker",
"shared_photos_and_videos_count": "{assetCount} delte bilder og videoer.",
"shared_photos_and_videos_count": "{assetCount, plural, other {# delte bilder og videoer.}}",
"shared_with_partner": "Delt med {partner}",
"sharing": "Deling",
"sharing_enter_password": "Vennligst skriv inn passordet for å se denne siden.",
"sharing_sidebar_description": "Vis en lenke til Deling i sidepanelet",
"shift_to_permanent_delete": "trykk ⇧ for å slette eiendeler permanent",
"show_album_options": "Vis albumalternativer",
"show_albums": "Vis album",
"show_all_people": "Vis alle mennesker",
"show_and_hide_people": "Vis og skjul personer",
"show_file_location": "Vis filplassering",
"show_gallery": "Vis galleri",
@ -892,16 +1187,34 @@
"show_person_options": "Vis personalternativer",
"show_progress_bar": "Vis fremdriftslinje",
"show_search_options": "Vis søkealternativer",
"show_slideshow_transition": "Vis overgang til lysbildefremvisning",
"show_supporter_badge": "Supportermerke",
"show_supporter_badge_description": "Vis et supportermerke",
"shuffle": "Bland",
"sidebar": "Sidefelt",
"sidebar_display_description": "Vis en lenke for visningen i sidefeltet",
"sign_out": "Logg ut",
"sign_up": "Registrer deg",
"size": "Størrelse",
"skip_to_content": "Gå til innhold",
"skip_to_folders": "Hopp til mapper",
"skip_to_tags": "Hopp til tagger",
"slideshow": "Lysbildefremvisning",
"slideshow_settings": "Lysbildefremvisning innstillinger",
"sort_albums_by": "Sorter album etter...",
"sort_created": "Dato opprettet",
"sort_items": "Antall enheter",
"sort_modified": "Dato modifisert",
"sort_oldest": "Eldste bilde",
"sort_people_by_similarity": "Sorter folk etter likhet",
"sort_recent": "Nyeste bilde",
"sort_title": "Tittel",
"source": "Kilde",
"stack": "Stable",
"stack_duplicates": "Stable duplikater",
"stack_select_one_photo": "Velg hovedbilde for bildestabbel",
"stack_selected_photos": "Stable valgte bilder",
"stacked_assets_count": "Stable {count, plural, one {# asset} other {# assets}}",
"stacktrace": "Stakkspor",
"start": "Start",
"start_date": "Startdato",
@ -917,68 +1230,121 @@
"submit": "Send inn",
"suggestions": "Forslag",
"sunrise_on_the_beach": "Soloppgang på stranden",
"support": "Støtte",
"support_and_feedback": "Støtte og Tilbakemelding",
"support_third_party_description": "Immich-installasjonen din ble pakket av en tredjepart. Problemer du opplever kan være forårsaket av den pakken, så vennligst ta opp problemer med dem i første omgang ved å bruke koblingene nedenfor.",
"swap_merge_direction": "Bytt retning på sammenslåingen",
"sync": "Synkroniser",
"tag": "Tagg",
"tag_assets": "Merk ressurser",
"tag_created": "Lag merke: {tag}",
"tag_feature_description": "Bla gjennom bilder og videoer gruppert etter logiske merke-emner",
"tag_not_found_question": "Finner du ikke en merke? <link>Opprett en nytt merke.</link>",
"tag_updated": "Oppdater merke: {tag}",
"tagged_assets": "Merket {count, plural, one {# asset} other {# assets}}",
"tags": "Merker",
"template": "Mal",
"theme": "Tema",
"theme_selection": "Temavalg",
"theme_selection_description": "Automatisk sett tema til lys eller mørk basert på nettleserens systeminnstilling",
"they_will_be_merged_together": "De vil bli slått sammen",
"third_party_resources": "Tredjeparts Ressurser",
"time_based_memories": "Tidsbaserte minner",
"timeline": "Tidslinje",
"timezone": "Tidssone",
"to_archive": "Arkiv",
"to_change_password": "Endre passord",
"to_favorite": "Favoritt",
"to_login": "Logg inn",
"to_parent": "Gå til overodnet",
"to_trash": "Papirkurv",
"toggle_settings": "Bytt innstillinger",
"toggle_theme": "Bytt tema",
"total": "Total",
"total_usage": "Totalt brukt",
"trash": "Papirkurv",
"trash_all": "Slett alt",
"trash_count": "Slett {count, number}",
"trash_delete_asset": "Slett ressurs",
"trash_no_results_message": "Her vises bilder og videoer som er flyttet til papirkurven.",
"trashed_items_will_be_permanently_deleted_after": "Elementer i papirkurven vil bli permanent slettet etter {days, plural, one {# dag} other {# dager}}.",
"type": "Type",
"unarchive": "Fjern fra arkiv",
"unarchived_count": "{count, plural, other {Unarchived #}}",
"unfavorite": "Fjern favoritt",
"unhide_person": "Vis person",
"unknown": "Ukjent",
"unknown_year": "Ukjent År",
"unlimited": "Ubegrenset",
"unlink_motion_video": "Koble fra bevegelsesvideo",
"unlink_oauth": "Fjern kobling til OAuth",
"unlinked_oauth_account": "Koblet fra OAuth-konto",
"unnamed_album": "Navnløst album",
"unnamed_album_delete_confirmation": "Er du sikker på at du vil slette dette albumet?",
"unnamed_share": "Deling uten navn",
"unsaved_change": "Ulagrede endringer",
"unselect_all": "Fjern alle valg",
"unselect_all_duplicates": "Fjern markeringen av alle duplikater",
"unstack": "avstable",
"unstacked_assets_count": "Ikke stablet {count, plural, one {# asset} other {# assets}}",
"untracked_files": "Usporede Filer",
"untracked_files_decription": "Disse filene er ikke sporet av applikasjonen. De kan være resultatet av mislykkede flyttinger, avbrutte opplastinger eller etterlatt på grunn av en feil",
"up_next": "Neste",
"updated_password": "Passord oppdatert",
"upload": "Last opp",
"upload_concurrency": "Samtidig opplastning",
"upload_errors": "Opplasting fullført med {count, plural, one {# error} other {# errors}}, oppdater siden for å se nye opplastingsressurser.",
"upload_progress": "Gjenstående {remaining, number} behandlet {processed, number}/{total, number}",
"upload_skipped_duplicates": "Hoppet over {count, plural, one {# duplicate asset} other {# duplicate assets}}",
"upload_status_duplicates": "Duplikater",
"upload_status_errors": "Feil",
"upload_status_uploaded": "Opplastet",
"upload_success": "Opplasting vellykket, oppdater siden for å se nye opplastninger.",
"url": "URL",
"usage": "Bruk",
"use_custom_date_range": "Bruk egendefinert datoperiode i stedet",
"user": "Bruker",
"user_id": "Bruker ID",
"user_liked": "{user} likte {type, select, photo {this photo} video {this video} asset {this asset} other {it}}",
"user_purchase_settings": "Kjøpe",
"user_purchase_settings_description": "Administrer dine kjøp",
"user_role_set": "Sett {user} som {role}",
"user_usage_detail": "Detaljer av brukers forbruk",
"user_usage_stats": "Kontobruksstatistikk",
"user_usage_stats_description": "Vis kontobruksstatistikk",
"username": "Brukernavn",
"users": "Brukere",
"utilities": "Verktøy",
"validate": "Valider",
"variables": "Variabler",
"version": "Versjon",
"version_announcement_closing": "Din venn, Alex",
"version_announcement_message": "Hei! En ny versjon av Immich er tilgjengelig. Vennligst ta deg tid til å lese <link>utgivelsesnotatene</link> for å sikre at oppsettet ditt er oppdatert for å forhindre feilkonfigurasjoner, spesielt hvis du bruker WatchTower eller en annen mekanisme som håndterer oppdatering av Immich-forekomsten din automatisk.",
"version_history": "Verson Historie",
"version_history_item": "Installert {version} den {date}",
"video": "Video",
"video_hover_setting": "Spill av forhåndsvisining mens du holder over musepekeren",
"video_hover_setting_description": "Spill av forhåndsvisning mens en musepeker er over elementet. Selv når den er deaktivert, kan avspilling startes ved å holde musepekeren over avspillingsikonet.",
"videos": "Videoer",
"videos_count": "{count, plural, one {# Video} other {# Videoer}}",
"view": "Vis",
"view_album": "Vis Album",
"view_all": "Vis alle",
"view_all_users": "Vis alle brukere",
"view_in_timeline": "Vis i tidslinje",
"view_links": "Vis lenker",
"view_name": "Vis",
"view_next_asset": "Vis neste fil",
"view_previous_asset": "Vis forrige fil",
"view_stack": "Vis Stabbel",
"visibility_changed": "Synlighet endret for {count, plural, one {# person} other {# people}}",
"waiting": "Venter",
"warning": "Advarsel",
"week": "Uke",
"welcome": "Velkommen",
"welcome_to_immich": "Velkommen til Immich",
"year": "År",
"years_ago": "{years, plural, one {# year} other {# years}} siden",
"yes": "Ja",
"you_dont_have_any_shared_links": "Du har ingen delte lenker",
"zoom_image": "Zoom Bilde"

View file

@ -523,6 +523,10 @@
"date_range": "Datumbereik",
"day": "Dag",
"deduplicate_all": "Alles dedupliceren",
"deduplication_criteria_1": "Grootte van afbeelding in bytes",
"deduplication_criteria_2": "Aantal EXIF data",
"deduplication_info": "Deduplicatie-info",
"deduplication_info_description": "Om automatisch bezittingen te preselecteren en duplicaten te verwijderen in bulk, kijken we naar:",
"default_locale": "Standaard landinstelling",
"default_locale_description": "Formatteer datums en getallen op basis van de landinstellingen van je browser",
"delete": "Verwijderen",

View file

@ -28,6 +28,264 @@
"added_to_favorites": "Lagt til favorittar",
"added_to_favorites_count": "Lagt {count, number} til favorittar",
"admin": {
"confirm_delete_library": "Er du sikker på at du vil slette biblioteket {library}?"
}
"asset_offline_description": "Denne eksterne bibliotekressursen finst ikkje lenger på disk og har blitt flytta til papirkurven. Om fila blei flytta innad i biblioteket, sjekk tidslinja di for den tilsvarande ressursen. For å gjenopprette ressursen, vennligst sørg for at filstien under er tilgjengeleg for Immich og skann biblioteket.",
"backup_settings": "Backupinnstillingar",
"check_all": "Sjekk alle",
"confirm_delete_library": "Er du sikker på at du vil slette biblioteket {library}?",
"create_job": "Lag jobb",
"disable_login": "Deaktiver innlogging",
"face_detection": "Ansiktsdeteksjon",
"image_format": "Format",
"image_preview_title": "Forhandsvis innstillingar",
"image_quality": "Kvalitet",
"image_resolution": "Oppløysing",
"image_thumbnail_description": "Lite miniatyrbilete med fjerna metadata, brukt når ein ser på grupper av bilete som hovudtidslinja",
"job_created": "Jobb laga",
"job_settings": "Jobbinnstillingar",
"job_status": "Jobbstatus",
"library_deleted": "Bibliotek sletta",
"library_scanning": "Periodisk skanning",
"library_settings": "Eksternt Bibliotek",
"logging_settings": "Logging",
"machine_learning_duplicate_detection": "Duplikatdeteksjon",
"machine_learning_facial_recognition": "Ansiktsgjenkjenning",
"machine_learning_smart_search": "Smart Søk",
"map_dark_style": "Mørk modus",
"map_light_style": "Lys modus",
"map_settings": "Kart",
"metadata_extraction_job": "Hent ut metadata",
"metadata_settings": "Metadata Innstillinger",
"migration_job": "Migrasjon",
"notification_email_from_address": "Frå adresse",
"notification_settings": "Varselinnstillingar",
"oauth_auto_launch": "Autostart",
"oauth_button_text": "Tekst på knapp",
"password_settings": "Passord innlogging",
"person_cleanup_job": "Personopprydding",
"registration": "Administrator registrering",
"registration_description": "Sidan du er den første brukaren på systemet, vil du bli utnevnt til administrator og ha ansvar for administrative oppgåver. Du vil òg opprette eventuelle nye brukarar.",
"repair_all": "Reparer alle",
"repair_matched_items": "Samsvarte med {count, plural, one {# element} other {# elementer}}",
"repaired_items": "Reparerte {count, plural, one {# item} other {# items}}",
"require_password_change_on_login": "Krev at brukaren endrar passord ved første pålogging",
"reset_settings_to_default": "Tilbakestill innstillingar til standard",
"reset_settings_to_recent_saved": "Tilbakestill innstillingane til de nyleg lagra innstillingane",
"scanning_library": "Skann bibliotek",
"search_jobs": "Søk etter jobbar",
"send_welcome_email": "Send velkomst-e-post",
"server_external_domain_settings": "Eksternt domene",
"server_external_domain_settings_description": "Domene for offentlege delingslenkjer, inkludert http(s)://",
"server_public_users": "Offentlege brukarar",
"server_public_users_description": "Alle brukarar (namn og epost) blir vist når ein brukar blir lagt til eit delt album. Når deaktivert, vil brukarane berre bli synlege for administratorar.",
"server_settings": "Serverinstillingar",
"server_settings_description": "Administrer serverinnstillingar",
"server_welcome_message": "Velkomstmelding",
"server_welcome_message_description": "Ei melding som synast på innloggingssida.",
"template_email_preview": "Førehandsvisning"
},
"administration": "Administrasjon",
"advanced": "Avansert",
"album_with_link_access": "Lat kven som helst med lenka sjå bilete og folk i dette albumet.",
"albums": "Album",
"all": "Alle",
"anti_clockwise": "Mot klokka",
"archive": "Arkiv",
"asset_skipped": "Hoppa over",
"asset_uploaded": "Opplasta",
"asset_uploading": "Lastar opp...",
"back": "Tilbake",
"backward": "Bakover",
"camera": "Kamera",
"cancel": "Avbryt",
"city": "By",
"clear": "Fjern",
"clockwise": "Med klokka",
"close": "Lukk",
"color": "Farge",
"confirm": "Bekreft",
"contain": "Inneheld",
"continue": "Hald fram",
"country": "Land",
"cover": "Dekk",
"covers": "Dekker",
"create": "Opprett",
"created": "Oppretta",
"dark": "Mørk",
"day": "Dag",
"delete": "Slett",
"description": "Beskrivelse",
"details": "Detaljer",
"direction": "Retning",
"discover": "Oppdag",
"display_original_photos": "Vis originale bilete",
"display_original_photos_setting_description": "Føretrekk å vise det originale biletet når ein ser på eit aktivum i staden for miniatyrbilete når det originale aktivumet er nettkompatibelt. Dette kan føre til tregare biletvisingshastigheiter.",
"documentation": "Dokumentasjon",
"done": "Ferdig",
"download": "Last ned",
"download_include_embedded_motion_videos_description": "Inkluder videoar innebygd i rørslefoto som ein eigen fil",
"download_settings": "Last ned",
"downloading": "Laster ned",
"duplicates": "Duplikat",
"duration": "Lengde",
"edit": "Rediger",
"edited": "Redigert",
"editor": "Redigeringsverktøy",
"explore": "Utforsk",
"explorer": "Utforsker",
"folders_feature_description": "Bla gjennom mappe for bileta og videoane på filsystemet",
"hour": "Time",
"image": "Bilde",
"info": "Info",
"jobs": "Oppgåver",
"keep": "Behald",
"language": "Språk",
"latitude": "Lengdegrad",
"leave": "Forlat",
"level": "Nivå",
"library": "Bibliotek",
"light": "Lys",
"list": "Liste",
"loading": "Lastar",
"login": "Login",
"longitude": "Lengdegrad",
"look": "Utsjånad",
"make": "Produsent",
"map": "Kart",
"matches": "Treff",
"memories": "Minner",
"memory": "Minne",
"menu": "Meny",
"merge": "Slå saman",
"minimize": "Minimere",
"minute": "Minutt",
"missing": "Mangler",
"model": "Modell",
"month": "Månad",
"more": "Meir",
"name": "Namn",
"never": "Aldri",
"next": "Neste",
"no": "Nei",
"no_albums_message": "Lag eit album for å organisere bileta og videoane dine.",
"no_archived_assets_message": "Arkiver bilder og videoar for å skjule dei frå bileta dine",
"no_explore_results_message": "Last opp fleire bilete for å utforske samlinga di.",
"no_libraries_message": "Lag eit eksternt bibliotek for å sjå bileta og videoane dine",
"no_shared_albums_message": "Lag eit album for å dele bilete og videoar med folk i nettverket ditt",
"notes": "Noter",
"notifications": "Varsel",
"ok": "Ok",
"options": "Val",
"or": "eller",
"original": "original",
"other": "Anna",
"owner": "Eigar",
"partner": "Partner",
"partner_can_access_assets": "Alle bileta og videoane dine unntatt dei i Arkivert og Sletta",
"partner_can_access_location": "Staden der bileta dine vart tekne",
"password": "Passord",
"path": "Sti",
"pattern": "Mønster",
"pause": "Pause",
"paused": "Pausa",
"pending": "Ventar",
"people": "Folk",
"people_feature_description": "Bla gjennom foto og videoar gruppert etter folk",
"person": "Person",
"photo_shared_all_users": "Ser ut som du delte bileta dine med alle brukarar eller at du ikkje har nokon brukar å dele med.",
"photos": "Bilete",
"photos_and_videos": "Foto og Video",
"photos_from_previous_years": "Bilete frå tidlegare år",
"place": "Stad",
"places": "Stad",
"play": "Spel av",
"port": "Port",
"preview": "Førehandsvisning",
"previous": "Forrige",
"primary": "Hoved",
"privacy": "Personvern",
"purchase_button_activate": "Aktiver",
"purchase_button_buy": "Kjøp",
"purchase_button_select": "Vel",
"purchase_individual_title": "Induviduell",
"purchase_server_title": "Server",
"reassign": "Vel på nytt",
"recent": "Nyleg",
"refresh": "Oppdater",
"refreshed": "Oppdatert",
"remove": "Fjern",
"rename": "Endre namn",
"repair": "Reparasjon",
"reset": "Tilbakestill",
"restore": "Tilbakestill",
"resume": "Fortsett",
"role": "Rolle",
"save": "Lagre",
"scan_library": "Skann",
"search": "Søk",
"search_your_photos": "Søk i dine bilete",
"second": "Sekund",
"selected": "Valgt",
"set": "Sett",
"settings": "Innstillingar",
"share": "Del",
"shared": "Delt",
"shared_from_partner": "Bilete frå {partner}",
"sharing": "Deling",
"show_in_timeline_setting_description": "Vis bilete og videoar frå denne brukaren i tidslinja di",
"sidebar": "Sidebar",
"size": "Størrelse",
"slideshow": "Lysbildeframvisning",
"sort_title": "Tittel",
"source": "Kjelde",
"stack": "Stabel",
"start": "Start",
"state": "Region",
"status": "Status",
"stop_photo_sharing": "Stopp å dele bileta dine?",
"stop_photo_sharing_description": "{partner} vil ikkje lenger kunne få tilgang til bileta dine.",
"stop_sharing_photos_with_user": "Stopp å dele bileta dine med denne brukaren",
"storage": "Lagringsplass",
"submit": "Send inn",
"suggestions": "Forslag",
"support": "Support",
"sync": "Synk",
"tag": "Tag",
"tag_feature_description": "Bla gjennom bilete og videoar gruppert etter logiske tag-tema",
"tags": "Tags",
"theme": "Tema",
"timeline": "Tidslinje",
"timezone": "Tidssone",
"to_archive": "Arkiv",
"to_favorite": "Favoritt",
"to_login": "Innlogging",
"to_trash": "Søppel",
"total": "Total",
"trash": "Søppel",
"trash_no_results_message": "Sletta foto og videoar vil dukke opp her.",
"type": "Type",
"unfavorite": "Fjern favoritt",
"unknown": "Ukjent",
"unlimited": "Ubegrensa",
"upload": "Last opp",
"upload_status_duplicates": "Duplikater",
"upload_status_errors": "Feil",
"upload_status_uploaded": "Opplasta",
"url": "URL",
"usage": "Bruk",
"user": "Brukar",
"user_purchase_settings": "Kjøp",
"username": "Brukarnamn",
"users": "Brukarar",
"utilities": "Verktøy",
"validate": "Validere",
"variables": "Variablar",
"version": "Versjon",
"video": "Video",
"videos": "Videoar",
"waiting": "Ventar",
"warning": "Advarsel",
"week": "Veke",
"welcome": "Velkomen",
"year": "År",
"yes": "Ja"
}

View file

@ -523,6 +523,10 @@
"date_range": "Zakres dat",
"day": "Dzień",
"deduplicate_all": "Usuń Zduplikowane",
"deduplication_criteria_1": "Rozmiar obrazu w bajtach",
"deduplication_criteria_2": "Ilość plików EXIF",
"deduplication_info": "Stan duplikatów",
"deduplication_info_description": "Aby zakwalifikować elementy jako duplikaty do masowego usunięcia, sprawdzane jest:",
"default_locale": "Domyślny Region",
"default_locale_description": "Formatuj daty i liczby na podstawie ustawień Twojej przeglądarki",
"delete": "Usuń",
@ -544,27 +548,27 @@
"direction": "Kierunek",
"disabled": "Wyłączone",
"disallow_edits": "Nie pozwalaj edytować",
"discord": "Discord",
"discord": "Konflikt",
"discover": "Odkryj",
"dismiss_all_errors": "Odrzuć wszystkie błędy",
"dismiss_error": "Odrzuć błąd",
"display_options": "Opcje wyświetlania",
"display_order": "Kolejność wyświetlania",
"display_original_photos": "Wyświetlaj oryginalne zdjęcia",
"display_original_photos_setting_description": "Wyświetlając zdjęcia i filmy, preferuj oryginalny plik zamiast miniatur jeżeli jest działa on w przeglądarce. Może to skutkować wolniejszym ładowaniem zdjęć i filmów.",
"display_original_photos_setting_description": "Wyświetlając zdjęcia i filmy, prezentuj oryginalny plik zamiast miniatur jeżeli działa on w przeglądarce. Może to skutkować wolniejszym ładowaniem zdjęć i filmów.",
"do_not_show_again": "Nie pokazuj więcej tej wiadomości",
"documentation": "Dokumentacja",
"done": "Gotowe",
"download": "Pobierz",
"download_include_embedded_motion_videos": "Osadzone filmy",
"download_include_embedded_motion_videos": "Pobierz filmy ruchomych zdjęć",
"download_include_embedded_motion_videos_description": "Dołącz filmy osadzone w ruchomych zdjęciach jako oddzielny plik",
"download_settings": "Pobieranie",
"download_settings_description": "Zarządzaj pobieraniem zasobów",
"downloading": "Pobieranie",
"downloading_asset_filename": "Pobieranie zasobu {filename}",
"drop_files_to_upload": "Upuść pliki gdziekolwiek, żeby je załadować",
"drop_files_to_upload": "Upuść pliki gdziekolwiek, aby je załadować",
"duplicates": "Duplikaty",
"duplicates_description": "Rozstrzygnij każdą grupę, określając, które zasoby, jeśli takie istnieją, są duplikatami",
"duplicates_description": "Rozstrzygnij każdą grupę, określając, które zasoby są duplikatami, jeżeli są duplikatami",
"duration": "Czas trwania",
"edit": "Edytuj",
"edit_album": "Edytuj album",
@ -578,7 +582,7 @@
"edit_key": "Edytuj klucz",
"edit_link": "Edytuj link",
"edit_location": "Edytuj lokalizację",
"edit_name": "Edytuj imię",
"edit_name": "Edytuj nazwę",
"edit_people": "Edytuj osoby",
"edit_tag": "Edytuj etykietę",
"edit_title": "Edytuj Tytuł",

View file

@ -522,7 +522,11 @@
"date_of_birth_saved": "Data de nascimento guardada com sucesso",
"date_range": "Intervalo de datas",
"day": "Dia",
"deduplicate_all": "Limpar todos os itens duplicados",
"deduplicate_all": "Remover todos os duplicados",
"deduplication_criteria_1": "Tamanho da imagem em bytes",
"deduplication_criteria_2": "Quantidade de dados EXIF",
"deduplication_info": "Informações sobre remoção de duplicados",
"deduplication_info_description": "Para selecionar automaticamente itens e remover duplicados em massa, vemos o seguinte:",
"default_locale": "Localização Padrão",
"default_locale_description": "Formatar datas e números baseados na linguagem do seu navegador",
"delete": "Eliminar",

View file

@ -523,6 +523,10 @@
"date_range": "Intervalo de datas",
"day": "Dia",
"deduplicate_all": "Limpar todas Duplicidades",
"deduplication_criteria_1": "Tamanho do arquivo em bytes",
"deduplication_criteria_2": "Quantidade de dados EXIF",
"deduplication_info": "Informações",
"deduplication_info_description": "Ao selecionar os arquivos que serão marcados para remoção por duplicidade, será considerado os parâmetros:",
"default_locale": "Localização Padrão",
"default_locale_description": "Formatar datas e números baseados na linguagem do seu navegador",
"delete": "Excluir",

View file

@ -289,6 +289,8 @@
"transcoding_constant_rate_factor": "Factor de rată constantă (-crf)",
"transcoding_constant_rate_factor_description": "Nivelul de calitate al videoclipului. Valorile tipice sunt 23 pentru H.264, 28 pentru HEVC, 31 pentru VP9 și 35 pentru AV1. Cu cât valoarea este mai mică, cu atât calitatea este mai bună, dar se generează fișiere mai mari.",
"transcoding_disabled_description": "Nu transcodifică niciun videoclip; acest lucru poate afecta redarea pe anumite dispozitive",
"transcoding_encoding_options": "Opțiuni codificare",
"transcoding_encoding_options_description": "Setează codecuri , calitatea, rezoluția și alte opțiuni pentru videoclipuri codificare",
"transcoding_hardware_acceleration": "Accelerare Hardware",
"transcoding_hardware_acceleration_description": "Experimental; mult mai rapid, dar va avea o calitate mai scăzută la același bitrate",
"transcoding_hardware_decoding": "Decodare hardware",
@ -301,6 +303,8 @@
"transcoding_max_keyframe_interval": "Interval maxim între cadre cheie",
"transcoding_max_keyframe_interval_description": "Setează distanța maximă între cadrele cheie. Valorile mai mici reduc eficiența compresiei, dar îmbunătățesc timpii de căutare și pot îmbunătăți calitatea în scenele cu mișcare rapidă. 0 setează această valoare automat.",
"transcoding_optimal_description": "Videoclipuri cu rezoluție mai mare decât cea țintă sau care nu sunt într-un format acceptat",
"transcoding_policy": "Politică de transcodare",
"transcoding_policy_description": "Setează când un video va fi transcodat",
"transcoding_preferred_hardware_device": "Dispozitiv hardware preferat",
"transcoding_preferred_hardware_device_description": "Se aplică doar la VAAPI și QSV. Setează nodul DRI utilizat pentru transcodarea hardware.",
"transcoding_preset_preset": "Presetare (-preset)",
@ -309,7 +313,7 @@
"transcoding_reference_frames_description": "Numărul de cadre de referință atunci când se comprimă un cadru dat. Valorile mai mari îmbunătățesc eficiența compresiei, dar încetinesc codarea. 0 setează această valoare automat.",
"transcoding_required_description": "Numai videoclipuri care nu sunt într-un format acceptat",
"transcoding_settings": "Setări de Transcodare Video",
"transcoding_settings_description": "Gestionează rezoluția și informațiile de codare ale fișierelor video",
"transcoding_settings_description": "Gestionează care videoclipuri să transcodam și cum să le procesam",
"transcoding_target_resolution": "Rezoluția țintă",
"transcoding_target_resolution_description": "Rezoluțiile mai mari pot păstra mai multe detalii, dar necesită mai mult timp pentru codare, au dimensiuni mai mari ale fișierelor și pot reduce răspunsul aplicației.",
"transcoding_temporal_aq": "AQ temporal",
@ -322,7 +326,7 @@
"transcoding_transcode_policy_description": "Politica pentru momentul când un videoclip ar trebui să fie transcodificat. Videoclipurile HDR vor fi întotdeauna transcodificate (cu excepția cazului în care transcodarea este dezactivată).",
"transcoding_two_pass_encoding": "Codare în doi pași",
"transcoding_two_pass_encoding_setting_description": "Transcodificare în două treceri pentru a produce videoclipuri codificate mai bine. Când rata maximă de biți este activată (necesară pentru a funcționa cu H.264 și HEVC), acest mod utilizează un interval de rată de biți bazat pe rata maximă de biți și ignoră CRF. Pentru VP9, CRF poate fi utilizat dacă rata maximă de biți este dezactivată.",
"transcoding_video_codec": "Codec Video",
"transcoding_video_codec": "Codec video",
"transcoding_video_codec_description": "VP9 are eficiențǎ mare și compatibilitate web, însǎ transcodarea este de duratǎ mai mare. HEVC se comportǎ asemǎnǎtor, însǎ are compatibilitate web mai micǎ. H.264 este foarte compatibil și rapid în transcodare, însǎ genereazǎ fișiere mult mai mari. AV1 este cel mai eficient codec dar nu este compatibil cu dispozitivele mai vechi.",
"trash_enabled_description": "Activează funcțiile Coșului de Gunoi",
"trash_number_of_days": "Numǎr de zile",
@ -519,6 +523,10 @@
"date_range": "Interval de date",
"day": "Zi",
"deduplicate_all": "Deduplicați Toate",
"deduplication_criteria_1": "Marimea imagini în octeți",
"deduplication_criteria_2": "Numărul de date EXIF",
"deduplication_info": "Informați despre deduplicare",
"deduplication_info_description": "Ca să preselecționăm activele și să scoatem duplicatele în vrac , ne uităm la:",
"default_locale": "Setare Regională Implicită",
"default_locale_description": "Formatați datele și numerele în funcție de regiunea browserului dvs",
"delete": "Ștergere",
@ -755,6 +763,7 @@
"get_help": "Obțineți Ajutor",
"getting_started": "Noțiuni de Bază",
"go_back": "Întoarcere",
"go_to_folder": "Accesați folderul",
"go_to_search": "Spre căutare",
"group_albums_by": "Grupați albume de...",
"group_no": "Fără grupare",

View file

@ -523,6 +523,10 @@
"date_range": "Диапазон дат",
"day": "День",
"deduplicate_all": "Убрать все дубликаты",
"deduplication_criteria_1": "Размер изображения в байтах",
"deduplication_criteria_2": "Подсчет данных EXIF",
"deduplication_info": "Информация о дедупликации",
"deduplication_info_description": "Для автоматического предварительного выбора объектов и массового удаления дубликатов мы рассмотрим:",
"default_locale": "Дата и время по умолчанию",
"default_locale_description": "Использовать формат даты и времени в соответствии с языковым стандартом вашего браузера",
"delete": "Удалить",

View file

@ -5,7 +5,7 @@
"acknowledge": "Rozumiem",
"action": "Akcia",
"actions": "Akcie",
"active": "Aktívny",
"active": "Aktívne",
"activity": "Aktivita",
"activity_changed": "Aktivita je {enabled, select, true{povolená} other {zakázaná}}",
"add": "Pridať",
@ -23,7 +23,7 @@
"add_to": "Pridať do...",
"add_to_album": "Pridať do albumu",
"add_to_shared_album": "Pridať do zdieľaného albumu",
"add_url": "Pridaj URL",
"add_url": "Pridať URL",
"added_to_archive": "Pridané do archívu",
"added_to_favorites": "Pridané do obľúbených",
"added_to_favorites_count": "Pridané {count, number} do obľúbených",
@ -100,9 +100,9 @@
"library_watching_enable_description": "Sledovať externé knižnice pre zmeny v súboroch",
"library_watching_settings": "Sledovanie knižnice (EXPERIMENTÁLNE)",
"library_watching_settings_description": "Automaticky sledovať zmenené súbory",
"logging_enable_description": "Povoliť zaznamenávanie",
"logging_level_description": "Ak je povolené, akú úroveň zaznamenávania použiť.",
"logging_settings": "Zaznamenávanie",
"logging_enable_description": "Povoliť logovanie",
"logging_level_description": "Ak je povolené, akú úroveň logovania použiť.",
"logging_settings": "Logovanie",
"machine_learning_clip_model": "Model CLIP",
"machine_learning_clip_model_description": "Názov modelu CLIP je uvedený <link>tu</link>. Pamätajte, že pri zmene modelu je nutné znovu spustiť úlohu 'Inteligentné vyhľadávanie' pre všetky obrázky.",
"machine_learning_duplicate_detection": "Detekcia duplikátov",
@ -148,7 +148,7 @@
"map_settings_description": "Spravovať nastavenia mapy",
"map_style_description": "URL na motív style.json",
"metadata_extraction_job": "Extrahovať metadáta",
"metadata_extraction_job_description": "Získaj informácie metadátach z každej položky, ako napríklad GPS, tváre a rozlíšenie",
"metadata_extraction_job_description": "Vytiahne metadáta z každej položky, ako napríklad GPS, tváre a rozlíšenie",
"metadata_faces_import_setting": "Povoliť import tváre",
"metadata_faces_import_setting_description": "Importuj tváre z EXIF dát obrázkov a sidecar súborov",
"metadata_settings": "Metadáta",
@ -233,7 +233,7 @@
"sidecar_job_description": "Objavte alebo synchronizujte metadáta Sidecar zo súborového systému",
"slideshow_duration_description": "Čas zobrazenia obrázku v sekundách",
"smart_search_job_description": "Spustite strojové učenie na médiách na podporu inteligentného vyhľadávania",
"storage_template_date_time_description": "Časová pečiatka vytvorenia médií sa používa pre informácie o dátume a čase",
"storage_template_date_time_description": "Časová pečiatka vytvorenia položky sa používa pre informácie o dátume a čase",
"storage_template_date_time_sample": "Čas vzorky {date}",
"storage_template_enable_description": "Povoliť nástroj šablóny úložiska",
"storage_template_hash_verification_enabled": "Overenie hash povolené",
@ -252,7 +252,7 @@
"tag_cleanup_job": "Premazanie značiek",
"template_email_available_tags": "V šablóne môžeš použiť nasledujúce stítky: {tags}",
"template_email_if_empty": "Ak nie je zadaná žiadna šablóna, bude použitá predvolená šablóna.",
"template_email_invite_album": "Šablóna pre Pozvánka do albumu",
"template_email_invite_album": "Šablóna Pozvánky do albumu",
"template_email_preview": "Ukážka",
"template_email_settings": "Emailové šablóny",
"template_email_settings_description": "Spravovanie vlastných šablón pre emailové upozornenia",
@ -266,11 +266,11 @@
"theme_settings_description": "Spravovať prispôsobenie webového rozhrania Immich",
"these_files_matched_by_checksum": "Tieto súbory zodpovedajú kontrolným súčtom",
"thumbnail_generation_job": "Generovať Miniatúry",
"thumbnail_generation_job_description": "Generujte veľké, malé a rozmazané miniatúry pre každé médium, ako aj miniatúry pre každú osobu",
"thumbnail_generation_job_description": "Generuje veľké, malé a rozostrení miniatúry pre každú položku, ako aj miniatúry pre každú osobu",
"transcoding_acceleration_api": "API pre akceleráciu",
"transcoding_acceleration_api_description": "Rozhranie API, ktoré bude interagovať s vaším zariadením s cieľom urýchliť prekódovanie. Toto nastavenie je „najlepšie úsilie“: pri zlyhaní sa vráti k softvérovému prekódovaniu. VP9 môže alebo nemusí fungovať v závislosti od vášho hardvéru.",
"transcoding_acceleration_nvenc": "NVENC (vyžaduje grafickú kartu NVIDIA)",
"transcoding_acceleration_qsv": "Quick Sync (vyžaduje 7. generáciu Intel procesora alebo novšie)",
"transcoding_acceleration_nvenc": "NVENC (vyžaduje NVIDIA GPU)",
"transcoding_acceleration_qsv": "Quick Sync (vyžaduje 7. generáciu Intel CPU alebo novšiu)",
"transcoding_acceleration_rkmpp": "RKMPP (iba na Rockchip SOC)",
"transcoding_acceleration_vaapi": "VAAPI",
"transcoding_accepted_audio_codecs": "Akceptované zvukové kodeky",
@ -496,7 +496,7 @@
"copy_link_to_clipboard": "Skopírovať do schránky",
"copy_password": "Skopírovať heslo",
"copy_to_clipboard": "Skopírovať do schránky",
"country": "Štát",
"country": "Krajina",
"cover": "Titulka",
"covers": "Dlaždice",
"create": "Vytvoriť",
@ -523,6 +523,10 @@
"date_range": "Rozsah dátumu",
"day": "Deň",
"deduplicate_all": "Deduplikovať všetko",
"deduplication_criteria_1": "Veľkosť obrázku v bajtoch",
"deduplication_criteria_2": "Počet EXIF údajov",
"deduplication_info": "Info o deduplikácii",
"deduplication_info_description": "Na automatický predvýber položiek a hromadné odstránenie duplicít, sa pozeráme do:",
"default_locale": "Predvolená Lokalizácia",
"default_locale_description": "Formátovanie dátumu a čísel podľa lokalizácie vášho prehliadača",
"delete": "Vymazať",
@ -643,6 +647,8 @@
"unable_to_add_import_path": "Nie je možné pridať cestu importu",
"unable_to_add_partners": "Nie je možné pridať partnerov",
"unable_to_add_remove_archive": "Nie je možné {archived, select, true {odstrániť položku z} other {pridať položku do}} archívu",
"unable_to_add_remove_favorites": "Nepodarilo sa {favorite, select, true {pridať položku do} other {odstrániť položku z}} obľúbených",
"unable_to_archive_unarchive": "Nepodarilo sa {archived, select, true {archivovať} other {odarchivovať}}",
"unable_to_change_album_user_role": "Nie je možné zmeniť rolu používateľa pre album",
"unable_to_change_date": "Nie je možné zmeniť dátum",
"unable_to_change_favorite": "Nie je možné zmeniť obľúbené pre položku",
@ -683,6 +689,7 @@
"unable_to_log_out_device": "Nie je možné odhlásiť zariadenie",
"unable_to_login_with_oauth": "Nie je možné prihlásiť sa cez OAuth",
"unable_to_play_video": "Nie je možné prehrať video",
"unable_to_reassign_assets_existing_person": "Nepodarilo sa priradiť položku k {name, select, null {existujúcej osobe} other {{name}}}",
"unable_to_reassign_assets_new_person": "Nie je možné priradiť položky novej osobe",
"unable_to_refresh_user": "Nie je možné aktualizovať používateľa",
"unable_to_remove_album_users": "Nie je možné odstrániť používateľov z albumu",
@ -778,11 +785,11 @@
"image_alt_text_date_2_people": "{isVideo, select, true {Video} other {Image}} nasnímané s {person1} a {person2} dňa {date}",
"image_alt_text_date_3_people": "{isVideo, select, true {Video} other {Image}} nasnímané s {person1}, {person2} a {person3} dňa {date}",
"image_alt_text_date_4_or_more_people": "{isVideo, select, true {Video} other {Image}} nasnímané s {person1}, {person2} a {additionalCount, number} inými dňa {date}",
"image_alt_text_date_place": "{isVideo, select, true {Video} other {Image}} nasnímané v {city}, {country} dňa {date}",
"image_alt_text_date_place_1_person": "{isVideo, select, true {Video} other {Image}} nasnímané v {city}, {country} s {person1} dňa {date}",
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Image}} nasnímané v {city}, {country} s {person1} a {person2} dňa {date}",
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Image}} nasnímané v {city}, {country} s {person1}, {person2} a {person3} dňa {date}",
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Image}} nasnímané v {city}, {country} s {person1}, {person2} a {additionalCount, number} inými dňa {date}",
"image_alt_text_date_place": "{isVideo, select, true {Video} other {Obrázok}} nasnímané v {city}, {country} dňa {date}",
"image_alt_text_date_place_1_person": "{isVideo, select, true {Video} other {Obrázok}} zo dňa {date} v {city}, {country} s {person1}",
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Obrázok}} v {city}, {country} s {person1} a {person2} zo dňa {date}",
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Obrázok}} zo dňa {date} v {city}, {country} s {person1}, {person2} a {person3}",
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Obrázok}} nasnímaný v {city}, {country} s {person1}, {person2} a {additionalCount, number} inými dňa {date}",
"immich_logo": "Logo Immich",
"immich_web_interface": "Webové rozhranie Immich",
"import_from_json": "Importovať z JSON",
@ -806,7 +813,9 @@
"jobs": "Úlohy",
"keep": "Ponechať",
"keep_all": "Ponechať všetko",
"keyboard_shortcuts": "",
"keep_this_delete_others": "Ponechať toto, odstrániť ostatné",
"kept_this_deleted_others": "Ponechá túto položku a odstráni {count, plural, one {# položku} other {# položiek}}",
"keyboard_shortcuts": "Klávesové skratky",
"language": "Jazyk",
"language_setting_description": "Vyberte preferovaný jazyk",
"last_seen": "Naposledy videné",
@ -818,163 +827,264 @@
"library": "Knižnica",
"library_options": "Možnosti knižnice",
"light": "Svetlý",
"like_deleted": "Like odstránený",
"link_motion_video": "Pripojiť pohyblivé video",
"link_options": "Možnosti odkazu",
"link_to_oauth": "Prepojiť s OAuth",
"linked_oauth_account": "Pripojený OAuth účet",
"list": "Zoznam",
"loading": "Načítavanie",
"loading_search_results_failed": "",
"loading_search_results_failed": "Načítanie výsledkov hľadania sa nepodarilo",
"log_out": "Odhlásiť sa",
"log_out_all_devices": "Odhlásiť všetky zariadenia",
"logged_out_all_devices": "Všetky zariadenia odhlásené",
"logged_out_device": "Zariadenie odhlásené",
"login": "Prihlásenie",
"login_has_been_disabled": "Prihlásenie bolo vypnuté.",
"logout_all_device_confirmation": "Ste si istý, že sa chcete odhlásiť zo všetkých zariadení?",
"logout_this_device_confirmation": "Ste si istý, že sa chcete odhlásiť z tohoto zariadenia?",
"longitude": "Zemepisná dĺžka",
"look": "Zobrazenie",
"loop_videos": "",
"loop_videos_description": "",
"make": "",
"loop_videos": "Opakovať videá",
"loop_videos_description": "Povolí prehrávanie videí v slučke v detailnom zobrazení.",
"main_branch_warning": "Používate vývojársku verziu; silno odporúčame používať vydané verzie!",
"make": "Výrobca",
"manage_shared_links": "Spravovať zdieľané odkazy",
"manage_sharing_with_partners": "",
"manage_the_app_settings": "",
"manage_your_account": "",
"manage_your_api_keys": "",
"manage_your_devices": "",
"manage_your_oauth_connection": "",
"manage_sharing_with_partners": "Spravovať zdieľanie s partnermi",
"manage_the_app_settings": "Spravovať nastavenia aplikácie",
"manage_your_account": "Spravovať váš účet",
"manage_your_api_keys": "Spravovať vaše API kľúče",
"manage_your_devices": "Spravovať vaše prihlásené zariadenia",
"manage_your_oauth_connection": "Spravovať vaše OAuth spojenia",
"map": "Mapa",
"map_marker_with_image": "",
"map_marker_for_images": "Značka na mape pre obrázky odfotené v {city}, {country}",
"map_marker_with_image": "Mapová značka pre obrázok",
"map_settings": "Nastavenia máp",
"media_type": "",
"memories": "",
"memories_setting_description": "",
"matches": "Zhody",
"media_type": "Typ média",
"memories": "Spomienky",
"memories_setting_description": "Spravuje čo vidíte v spomienkach",
"memory": "Pamäť",
"memory_lane_title": "Pás spomienok {title}",
"menu": "Menu",
"merge": "",
"merge_people": "",
"merge_people_successfully": "",
"minimize": "",
"minute": "",
"missing": "",
"model": "",
"merge": "Zlúčiť",
"merge_people": "Zlúčiť ľudí",
"merge_people_limit": "Zlúčiť môžete naraz najviac 5 tvárí",
"merge_people_prompt": "Chcete zlúčiť týchto ľudí? Táto akcia sa nedá vrátiť.",
"merge_people_successfully": "Zlúčenie ľudí sa podarilo",
"merged_people_count": "Zlúčení {count, plural, one {# človek} other {# ľudia}}",
"minimize": "Minimalizovať",
"minute": "Minúta",
"missing": "Chýbajúce",
"model": "Model",
"month": "Mesiac",
"more": "",
"moved_to_trash": "",
"my_albums": "",
"more": "Viac",
"moved_to_trash": "Presunuté do koša",
"my_albums": "Moje albumy",
"name": "Meno",
"name_or_nickname": "",
"name_or_nickname": "Meno alebo prezývka",
"never": "nikdy",
"new_api_key": "",
"new_album": "Nový album",
"new_api_key": "Nový API kľúč",
"new_password": "Nové heslo",
"new_person": "",
"new_user_created": "",
"new_person": "Nová osoba",
"new_user_created": "Nový používateľ vytvorený",
"new_version_available": "JE DOSTUPNÁ NOVÁ VERZIA",
"newest_first": "",
"newest_first": "Najnovšie prvé",
"next": "Ďalej",
"next_memory": "",
"no": "",
"no_albums_message": "",
"next_memory": "Ďalšia spomienka",
"no": "Nie",
"no_albums_message": "Vytvorí album na organizovanie fotiek a videí",
"no_albums_with_name_yet": "Vyzerá, že zatiaľ nemáte album s týmto názvom.",
"no_albums_yet": "Vyzerá, že zatiaľ nemáte žiadne albumy.",
"no_archived_assets_message": "Archivovať fotografie a videá, aby sa skryli zo zobrazenia Fotografie",
"no_assets_message": "",
"no_exif_info_available": "",
"no_explore_results_message": "",
"no_favorites_message": "",
"no_libraries_message": "",
"no_name": "",
"no_places": "",
"no_results": "",
"no_shared_albums_message": "",
"not_in_any_album": "",
"no_assets_message": "KLIKNITE A NAHRAJTE SVOJU PRVÚ FOTKU",
"no_duplicates_found": "Nenašli sa žiadne duplicity.",
"no_exif_info_available": "Nie sú dostupné exif údaje",
"no_explore_results_message": "Nahrajte viac fotiek na objavovanie vašej zbierky.",
"no_favorites_message": "Pridajte si obľúbené, aby ste rýchlo našli svoje najlepšie obrázky a videá",
"no_libraries_message": "Vytvorí externú knižnicu na prezeranie fotiek a videí",
"no_name": "Bez mena",
"no_places": "Bez miesta",
"no_results": "Žiadne výsledky",
"no_results_description": "Skúste synonymum alebo všeobecnejší výraz",
"no_shared_albums_message": "Vytvorí album na zdieľanie fotiek a videí s ľuďmi vo vašej sieti",
"not_in_any_album": "Nie je v žiadnom albume",
"note_apply_storage_label_to_previously_uploaded assets": "Poznámka: Ak chcete použiť Štítok úložiska na predtým nahrané médiá, spustite príkaz",
"notes": "",
"note_unlimited_quota": "Poznámka: Zadajte 0 pre neobmedzenú kvótu",
"notes": "Poznámky",
"notification_toggle_setting_description": "Povoliť e-mailové upozornenia",
"notifications": "Oznámenia",
"notifications_setting_description": "Spravovať upozornenia",
"oauth": "OAuth",
"offline": "",
"ok": "",
"oldest_first": "",
"official_immich_resources": "Oficiálne Immich zdroje",
"offline": "Offline",
"offline_paths": "Offline cesty",
"offline_paths_description": "Tieto výsledky môžu byť kvôli ručnému vymazaniu súborov ktoré nie sú súčasťou externej knižnice.",
"ok": "OK",
"oldest_first": "Najstaršie prvé",
"onboarding": "Na palube",
"onboarding_privacy_description": "Nasledujúce (voliteľné) funkcie závisia na externých službách, a kedykoľvek ich môžete vypnúť v admin nastaveniach.",
"onboarding_theme_description": "Vyberte farbu témy pre váš server. Môžete to aj neskôr zmeniť vo vašich nastaveniach.",
"onboarding_welcome_description": "Poďme nastaviť pre váš server niekoľko základných nastavení.",
"onboarding_welcome_user": "Vitaj, {user}",
"online": "",
"only_favorites": "",
"open_the_search_filters": "",
"online": "Online",
"only_favorites": "Len obľúbené",
"open_in_map_view": "Otvoriť v mape",
"open_in_openstreetmap": "Otvoriť v OpenStreetMap",
"open_the_search_filters": "Otvoriť vyhľadávacie filtre",
"options": "Nastavenia",
"or": "alebo",
"organize_your_library": "Usporiadajte svoju knižnicu",
"other": "",
"original": "originál",
"other": "Ostatné",
"other_devices": "Ďalšie zariadenia",
"other_variables": "",
"other_variables": "Ostatné premenné",
"owned": "Vlastnené",
"owner": "Vlastník",
"partner_sharing": "",
"partners": "",
"partner": "Partner",
"partner_can_access": "{partner} môže pristupovať",
"partner_can_access_assets": "Všetky vaše fotky a videá, okrem Archivovaných a Odstránených",
"partner_can_access_location": "Miesto kde bola fotka spravená",
"partner_sharing": "Zdieľanie s partnerom",
"partners": "Partneri",
"password": "Heslo",
"password_does_not_match": "",
"password_required": "",
"password_reset_success": "",
"password_does_not_match": "Heslá sa nezhodujú",
"password_required": "Heslo je povinné",
"password_reset_success": "Obnovenie hesla úspešné",
"past_durations": {
"days": "",
"hours": "",
"years": ""
"days": "{days, plural, one {Posledný deň} other {Posledných # dní }}",
"hours": "{hours, plural, one {Posledná hodina} other {Posledných # hodín}}",
"years": "{years, plural, one {Posledný rok} other {Posledné # roky}}"
},
"path": "",
"pattern": "",
"pause": "",
"pause_memories": "",
"paused": "",
"pending": "",
"path": "Cesta",
"pattern": "Vzor",
"pause": "Pozastaviť",
"pause_memories": "Pozastaviť spomienky",
"paused": "Pozastavené",
"pending": "Čakajúce",
"people": "Ľudia",
"people_sidebar_description": "",
"permanent_deletion_warning": "",
"permanent_deletion_warning_setting_description": "",
"permanently_delete": "",
"permanently_deleted_asset": "",
"people_edits_count": "{count, plural, one {Upravená # osoba} other {Upravených # ľudí}}",
"people_feature_description": "Prehliadanie fotiek a videí zoskupených podľa ľudí",
"people_sidebar_description": "Zobrazí odkaz na Ľudí v bočnom paneli",
"permanent_deletion_warning": "Varovanie o trvalom zmazaní",
"permanent_deletion_warning_setting_description": "Zobraziť varovanie pri trvalom zmazaní položky",
"permanently_delete": "Trvalo zmazať",
"permanently_delete_assets_count": "Navždy zmazať {count, plural, one {položku} other {položky}}",
"permanently_delete_assets_prompt": "Naozaj si prajete navždy zmazať {count, plural, one {túto položku?} other {týchto <b>#</b> položiek?}} Vymažú sa aj {count, plural, one {zo svojho albumu} other {zo svojich albumov}}.",
"permanently_deleted_asset": "Navždy odstránená položka",
"permanently_deleted_assets_count": "Navždy {count, plural, one {odstránená # položka} other {odstránené # položky}}",
"person": "Osoba",
"person_hidden": "{name}{hidden, select, true { (skryté)} other {}}",
"photo_shared_all_users": "Vyzerá, že zdieľate svoje fotky so všetkými používateľmi alebo nemáte žiadnych používateľov.",
"photos": "Fotografie",
"photos_and_videos": "Fotografie & Videa",
"photos_from_previous_years": "",
"pick_a_location": "",
"photos_count": "{count, plural, one {{count, number} Fotka} other {{count, number} Fotiek}}",
"photos_from_previous_years": "Fotky z minulých rokov",
"pick_a_location": "Vyberte miesto",
"place": "Miesto",
"places": "Miesta",
"play": "Prehrať",
"play_memories": "",
"play_motion_photo": "",
"play_or_pause_video": "",
"port": "",
"preset": "",
"preview": "",
"previous": "",
"previous_memory": "",
"previous_or_next_photo": "",
"primary": "",
"profile_picture_set": "",
"play_memories": "Prehrať spomienky",
"play_motion_photo": "Prehrať pohyblivú fotku",
"play_or_pause_video": "Pustí alebo pozastaví video",
"port": "Port",
"preset": "Prednastavenie",
"preview": "Náhľad",
"previous": "Predošlé",
"previous_memory": "Predošlá spomienka",
"previous_or_next_photo": "Predošlá alebo ďalšia fotka",
"primary": "Primárne",
"privacy": "Súkromie",
"profile_image_of_user": "Profilový obrázok používateľa {user}",
"profile_picture_set": "Profilový obrázok nastavený.",
"public_album": "Verejný album",
"public_share": "",
"public_share": "Verejné zdieľanie",
"purchase_account_info": "Podporovateľ",
"purchase_activated_subtitle": "Ďakujeme za podporu Immich a softvéru s otvorenými zdrojákmi",
"purchase_activated_time": "Aktivované {date, date}",
"purchase_activated_title": "Váš kľúč je úspešne aktivovaný",
"purchase_button_activate": "Aktivovať",
"purchase_button_buy": "Kúpiť",
"purchase_button_buy_immich": "Kúpiť Immich",
"purchase_button_never_show_again": "Už viac nezobrazovať",
"purchase_button_reminder": "Pripomenúť mi o 30 dní",
"purchase_button_remove_key": "Odobrať kľúč",
"purchase_button_select": "Vybrať",
"purchase_failed_activation": "Aktivácia sa nepodarila! Prosím skontrolujte email či je správny kľúč produktu!",
"purchase_individual_description_1": "Pre jednotlivca",
"purchase_individual_description_2": "Stav podporovateľa",
"purchase_individual_title": "Jednotlivec",
"purchase_input_suggestion": "Máte produktový kľúč? Zadajte ho nižšie",
"purchase_license_subtitle": "Kúpte si Immich a podporte neustály vývoj tejto služby",
"purchase_lifetime_description": "Doživotná platnosť",
"purchase_option_title": "MOŽNOSTI NÁKUPU",
"purchase_panel_info_1": "Vývoj Immich zaberá veľa času a úsilia, a máme zamestnaných fulltime inžinierov, aby ho spravili ako sa najlepšie dá. Naša misia je, aby sa open-source softvér a etické biznis praktiky stali udržateľným zdrojom príjmu pre vývojárov a vytvorili ekosystém rešpektujúci súkromie so skutočnými náhradami voči zneužívajúcim cloudovým službám.",
"purchase_panel_info_2": "Keďže sme zaviazaní nezavádzať paywally, nezískate týmto nákupom žiadne prídavné funkcie. Spoliehame sa na používateľov ako vy na podporu neustáleho vývoja Immich.",
"purchase_panel_title": "Podporiť projekt",
"reaction_options": "",
"read_changelog": "",
"purchase_per_server": "Za server",
"purchase_per_user": "Za používateľa",
"purchase_remove_product_key": "Odstrániť produktový kľúč",
"purchase_remove_product_key_prompt": "Naozaj chcete odstrániť produktový kľúč?",
"purchase_remove_server_product_key": "Odstrániť produktový kľúč servera",
"purchase_remove_server_product_key_prompt": "Naozaj chcete odstrániť produktový kľúč servera?",
"purchase_server_description_1": "Pre celý server",
"purchase_server_description_2": "Stav podporovateľa",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "Produktový kľúč servera spravuje admin",
"rating": "Hodnotenie hviezdičkami",
"rating_clear": "Vyčistiť hodnotenie",
"rating_count": "{count, plural, one {# hviezdička} other {# hviezdičky}}",
"rating_description": "Zobrazí EXIF hodnotenie v info paneli",
"reaction_options": "Možnosti reakcie",
"read_changelog": "Prečítať zoznam zmien",
"reassign": "Preradiť",
"reassigned_assets_to_existing_person": "Preradené {count, plural, one {# položka} other {# položky}} k {name, select, null {existujúcej osobe} other {{name}}}",
"reassigned_assets_to_new_person": "Preradené {count, plural, one {# položka} other {# položiek}} novej osobe",
"reassing_hint": "Priradí zvolenú položku k existujúcej osobe",
"recent": "Nedávne",
"recent_searches": "",
"recent-albums": "Posledné albumy",
"recent_searches": "Posledné vyhľadávania",
"refresh": "Obnoviť",
"refresh_encoded_videos": "Obnoviť enkódované videá",
"refresh_faces": "Obnoviť tváre",
"refresh_metadata": "Obnoviť metadáta",
"refresh_thumbnails": "Obnoviť miniatúry",
"refreshed": "Aktualizované",
"refreshes_every_file": "",
"refreshes_every_file": "Znova prečíta všetky existujúce a nové súbory",
"refreshing_encoded_video": "Obnovovanie enkódovaných videí",
"refreshing_faces": "Obnovovnie tvárí",
"refreshing_metadata": "Obnovovanie metadát",
"regenerating_thumbnails": "Pregenerovanie náhľadov",
"remove": "Odstrániť",
"remove_deleted_assets": "",
"remove_assets_album_confirmation": "Naozaj chcete odstrániť {count, plural, one {# položky} other {# položiek}} z albumu?",
"remove_assets_shared_link_confirmation": "Naozaj chcete odstrániť {count, plural, one {# položku} other {# položiek}} z tohoto zdieľaného odkazu?",
"remove_assets_title": "Odstrániť položky?",
"remove_custom_date_range": "Odstrániť vlastný rozsah dátumov",
"remove_deleted_assets": "Odstrániť vymazané položky",
"remove_from_album": "Odstrániť z albumu",
"remove_from_favorites": "",
"remove_from_shared_link": "",
"remove_from_favorites": "Odstrániť z obľúbených",
"remove_from_shared_link": "Odstrániť zo zdieľaného odkazu",
"remove_url": "Odstrániť URL",
"remove_user": "Odstrániť používateľa",
"removed_api_key": "Odstrániť API kľúč: {name}",
"removed_from_archive": "Odstránené z archívu",
"removed_from_favorites": "Odstránené z obľúbených",
"removed_from_favorites_count": "{count, plural, other {Odstránených #}} z obľúbených",
"removed_tagged_assets": "Odstránená značka z {count, plural, one {# položky} other {# položiek}}",
"rename": "Premenovať",
"repair": "Opraviť",
"repair_no_results_message": "",
"replace_with_upload": "",
"repair_no_results_message": "Nesledované a chýbajúce súbory sa zobrazia tu",
"replace_with_upload": "Nahradiť nahraním",
"repository": "Repozitár",
"require_password": "Vyžadovať heslo",
"require_user_to_change_password_on_first_login": "Vyžadovať zmenu hesla po prvom prihlásení",
"reset": "Resetovať",
"reset_password": "Obnoviť heslo",
"reset_people_visibility": "",
"reset_people_visibility": "Resetovať viditeľnosť ľudí",
"reset_to_default": "Resetovať na predvolené",
"resolve_duplicates": "Vyriešiť duplicity",
"resolved_all_duplicates": "Vyriešené všetky duplicity",
"restore": "Navrátiť",
"restore_all": "Navrátit všetko",
"restore_user": "Navrátiť používateľa",
@ -1017,7 +1127,7 @@
"search_your_photos": "Hľadajte svoje fotky",
"searching_locales": "Hľadám lokality...",
"second": "Sekundy",
"see_all_people": "Vydieť všetky osoby",
"see_all_people": "Pozrieť všetky osoby",
"select_album_cover": "Vyberte obal albumu",
"select_all": "Vybrať všetko",
"select_all_duplicates": "Vybrať všetky duplikáty",
@ -1040,6 +1150,7 @@
"server_version": "Verzia Servera",
"set": "Nastaviť",
"set_as_album_cover": "Nastaviť ako obal albumu",
"set_as_featured_photo": "Nastaviť ako hlavnú fotku",
"set_as_profile_picture": "Nastaviť ako profilový obrázok",
"set_date_of_birth": "Nastaviť dátum narodenia",
"set_profile_picture": "Nastaviť profilový obrázok",
@ -1062,91 +1173,143 @@
"shift_to_permanent_delete": "stlačte ⇧ pre nemenné zmazanie pložiek",
"show_album_options": "Zobraziť možnosti albumu",
"show_albums": "Zobraziť albumy",
"show_file_location": "",
"show_all_people": "Zobraziť všetkých ľudí",
"show_and_hide_people": "Zobraziť a skryť ľudí",
"show_file_location": "Zobrazí umiestnenie súboru",
"show_gallery": "Zobraziť galériu",
"show_hidden_people": "",
"show_hidden_people": "Zobraziť skrytých ľudí",
"show_in_timeline": "Zobraziť na časovej osi",
"show_in_timeline_setting_description": "",
"show_in_timeline_setting_description": "Zobrazí fotky a videá tohoto používateľa na časovej osi",
"show_keyboard_shortcuts": "Zobraziť klávesové skratky",
"show_metadata": "Zobraziť metadáta",
"show_or_hide_info": "",
"show_or_hide_info": "Zobrazí alebo skryje info",
"show_password": "Zobraziť heslo",
"show_person_options": "",
"show_progress_bar": "",
"show_person_options": "Zobrazí možnosti osoby",
"show_progress_bar": "Zobrazí ukazovateľ priebehu",
"show_search_options": "Zobraziť možnosti vyhľadávania",
"shuffle": "",
"show_slideshow_transition": "Zobrazí prechody v prezentácii",
"show_supporter_badge": "Odznak podporovateľa",
"show_supporter_badge_description": "Zobraziť odznak podporovateľa",
"shuffle": "Náhodné poradie",
"sidebar": "Bočný panel",
"sidebar_display_description": "Zobrazí odkaz na pohľad v bočnom paneli",
"sign_out": "Odhlásiť sa",
"sign_up": "",
"sign_up": "Registrovať",
"size": "Veľkosť",
"skip_to_content": "",
"skip_to_content": "Preskočiť na obsah",
"skip_to_folders": "Preskočiť do priečinkov",
"skip_to_tags": "Preskočiť ku štítkom",
"slideshow": "",
"slideshow_settings": "",
"slideshow": "Prezentácia",
"slideshow_settings": "Nastavenia prezentácie",
"sort_albums_by": "Zoradiť albumy podľa...",
"sort_created": "Dátum vytvorenia",
"sort_items": "Počet položiek",
"sort_modified": "Dátum úpravy",
"sort_oldest": "Najstaršia fotografia",
"sort_people_by_similarity": "Zoradiť ľudí podľa podobnosti",
"sort_recent": "Najnovšia fotografia",
"sort_title": "Názov",
"source": "Zdroj",
"stack": "Zoskupenie",
"stack_selected_photos": "",
"stacktrace": "",
"stack_duplicates": "Zoskupiť duplicity",
"stack_select_one_photo": "Vyberte jednu hlavnú fotku pre zoskupenie",
"stack_selected_photos": "Zoskupiť vybraté fotky",
"stacked_assets_count": "{count, plural, one {Zoskupená # položka} other {Zoskupených # položiek}}",
"stacktrace": "Výpis zásobníku",
"start": "Štart",
"start_date": "Začiatočný dátum",
"state": "",
"status": "",
"stop_motion_photo": "",
"state": "Stav",
"status": "Stav",
"stop_motion_photo": "Stopmotion fotka",
"stop_photo_sharing": "Zastaviť zdieľanie vašich fotiek?",
"stop_photo_sharing_description": "{partner} už nebude mať prístup k vašim fotkám.",
"stop_sharing_photos_with_user": "Zastaviť zdieľanie týchto fotiek s týmto používateľom",
"storage": "Ukladací priestor",
"storage_label": "Štítok úložiska",
"storage_usage": "Využitých {used} z {available}",
"submit": "Odoslať",
"suggestions": "Návrhy",
"sunrise_on_the_beach": "",
"swap_merge_direction": "",
"sync": "",
"sunrise_on_the_beach": "Východ slnka na pláži",
"support": "Podpora",
"support_and_feedback": "Podpora a spätná väzba",
"support_third_party_description": "Vaša inštalácia Immich bola pripravená treťou stranou. Problémy, ktoré sa vyskytli, môžu byť spôsobené týmto balíčkom, preto sa na nich obráťte v prvom rade cez nasledujúce odkazy.",
"swap_merge_direction": "Vymeniť smer zlúčenia",
"sync": "Synchronizovať",
"tag": "Značka",
"tag_assets": "Pridať značku",
"tag_created": "Vytvorená značka: {tag}",
"tag_feature_description": "Prehliadanie fotiek a videá zoskupených podľa tematických značiek",
"tag_not_found_question": "Neviete nájsť značku? <link>Vytvorte novú značku.</link>",
"tag_updated": "Upravená značka: {tag}",
"tagged_assets": "Značka priradená {count, plural, one {# položke} other {# položkám}}",
"tags": "Štítky",
"template": "",
"template": "Šablóna",
"theme": "Téma",
"theme_selection": "",
"theme_selection_description": "",
"time_based_memories": "",
"theme_selection": "Výber témy",
"theme_selection_description": "Automaticky nastaví tému na svetlú alebo tmavú podľa systémových preferencií v prehliadači",
"they_will_be_merged_together": "Zlúčia sa dokopy",
"third_party_resources": "Zdroje tretích strán",
"time_based_memories": "Časové spomienky",
"timeline": "Časová os",
"timezone": "Časové pásmo",
"to_archive": "Archivovať",
"to_change_password": "Zmeniť heslo",
"to_favorite": "Obľúbiť",
"to_login": "Prihlásiť",
"to_parent": "Prejsť k nadradenému",
"to_trash": "Kôš",
"toggle_settings": "",
"toggle_theme": "",
"total_usage": "",
"toggle_settings": "Prepnúť nastavenie",
"toggle_theme": "Prepnúť tmavú tému",
"total": "Celkom",
"total_usage": "Celkové využitie",
"trash": "Kôš",
"trash_all": "",
"trash_all": "Všetko do koša",
"trash_count": "{count, number} do koša",
"trash_delete_asset": "Položky do koša/odstrániť",
"trash_no_results_message": "Vymazané fotografie a videá sa zobrazia tu.",
"type": "",
"trashed_items_will_be_permanently_deleted_after": "Položky v koši sa natrvalo vymažú po {days, plural, one {# dni} other {# dňoch}}.",
"type": "Typ",
"unarchive": "Odarchivovať",
"unarchived_count": "{count, plural, other {Odarchivovaných #}}",
"unfavorite": "Odznačiť ako obľúbené",
"unhide_person": "",
"unknown": "",
"unhide_person": "Odkryť osobu",
"unknown": "Neznáme",
"unknown_year": "Neznámy rok",
"unlink_oauth": "",
"unlinked_oauth_account": "",
"unlimited": "Neobmedzené",
"unlink_motion_video": "Odpojiť pohyblivé video",
"unlink_oauth": "Odpojiť OAuth",
"unlinked_oauth_account": "Odpojiť OAuth účet",
"unnamed_album": "Nepomenovaný album",
"unnamed_album_delete_confirmation": "Ste si istý, že chcete zmazať tento album?",
"unnamed_share": "Nepomenované zdieľanie",
"unsaved_change": "Neuložená zmena",
"unselect_all": "",
"unselect_all": "Zrušiť výber všetkých",
"unselect_all_duplicates": "Zrušiť výber všetkých duplicít",
"unstack": "Odskupiť",
"up_next": "",
"updated_password": "",
"unstacked_assets_count": "{count, plural, one {Rozložená # položka} few {Rozložené # položky} other {Rozložených # položiek}}",
"untracked_files": "Nesledované súbory",
"untracked_files_decription": "Tieto súbory nie sú sledované aplikáciou. Dôvodom môže byť zlyhaný presun, prerušené nahrávanie, alebo výsledkom bugu",
"up_next": "To je všetko",
"updated_password": "Heslo zmenené",
"upload": "Nahrať",
"upload_concurrency": "",
"upload_concurrency": "Súbežnosť nahrávania",
"upload_errors": "Nahrávanie ukončené s {count, plural, one {# chybou} other {# chybami}}, obnovte stránku aby sa zobrazili nové položky.",
"upload_progress": "Ostáva {remaining, number} - Spracovaných {processed, number}/{total, number}",
"upload_skipped_duplicates": "{count, plural, one {Preskočená # duplicita} few {Preskočené # duplicity} other {Preskočených # duplicít}}",
"upload_status_duplicates": "Duplikáty",
"upload_status_errors": "Chyby",
"upload_status_uploaded": "Nahrané",
"upload_success": "Nahrávanie úspešné, pridané súbory sa zobrazia po obnovení stránky.",
"url": "Odkaz URL",
"usage": "Použitie",
"use_custom_date_range": "Použite radšej vlastný rozsah dátumov",
"user": "Používateľ",
"user_id": "Používateľské ID",
"user_liked": "Používateľovi {user} sa páči {type, select, photo {táto fotka} video {toto video} asset {táto položka} other {toto}}",
"user_purchase_settings": "Nákup",
"user_purchase_settings_description": "Správa vášho nákupu",
"user_role_set": "Nastav {user} ako {role}",
"user_usage_detail": "",
"user_usage_detail": "Podrobnosti o využívaní používateľmi",
"user_usage_stats": "Štatistiky využitia účtu",
"user_usage_stats_description": "Zobraziť štatistiky využitia účtu",
"username": "Používateľské meno",
@ -1156,24 +1319,32 @@
"variables": "Premenné",
"version": "Verzia",
"version_announcement_closing": "Tvoj kamarát, Alex",
"version_announcement_message": "Ahoj! Nová verzia Immich je dostupná. Prosím prečítajte si <link>poznámky k vydaniu</link>, aby ste sa uistili, že inštalácia bude aktuálna bez problémov, najmä ak používate WatchTower alebo akýkoľvek spôsob automatickej aktualizácie Immich servera.",
"version_history": "História verzií",
"version_history_item": "Inštalovaná {version} dňa {date}",
"video": "Video",
"video_hover_setting_description": "",
"video_hover_setting": "Prehrávať video náhľad pri nabehnutí myšou",
"video_hover_setting_description": "Prehrá video náhľad keď kurzor myši prejde cez položku. Aj keď je vypnuté, prehrávanie sa môže spustiť nabehnutí cez ikonu Prehrať.",
"videos": "Videá",
"videos_count": "{count, plural, one {# Video} few {# Videá} other {# Videí}}",
"view": "Zobraziť",
"view_album": "Zobraziť Album",
"view_all": "Zobraziť všetky",
"view_all_users": "Zobraziť všetkých používateľov",
"view_in_timeline": "Zobraziť v časovej osi",
"view_links": "Zobraziť odkazy",
"view_name": "Zobraziť",
"view_next_asset": "Zobraziť nasledujúci súbor",
"view_previous_asset": "Zobraziť predchádzajúci súbor",
"waiting": "",
"view_stack": "Zobraziť zoskupenie",
"visibility_changed": "Viditeľnosť zmenená pre {count, plural, one {# osobu} other {# ľudí}}",
"waiting": "Čaká",
"warning": "Varovanie",
"week": "Týždeň",
"welcome": "Vitajte",
"welcome_to_immich": "Vitajte v Immich",
"year": "Rok",
"years_ago": "pred {years, plural, one {# rokom} other {# rokmi}}",
"yes": "Áno",
"you_dont_have_any_shared_links": "Nemáte žiadne zdielané linky",
"zoom_image": "Priblížiť obrázok"

View file

@ -523,6 +523,10 @@
"date_range": "Časovno obdobje",
"day": "Dan",
"deduplicate_all": "Odstrani vse podvojene",
"deduplication_criteria_1": "Velikost slike v bajtih",
"deduplication_criteria_2": "Število podatkov EXIF",
"deduplication_info": "Informacije o deduplikaciji",
"deduplication_info_description": "Za samodejno vnaprejšnjo izbiro sredstev in množično odstranjevanje dvojnikov si ogledamo:",
"default_locale": "Privzeti jezik",
"default_locale_description": "Oblikujte datume in številke glede na lokalne nastavitve brskalnika",
"delete": "Izbriši",

View file

@ -13,7 +13,7 @@
"add_a_location": "Додај Локацију",
"add_a_name": "Додај име",
"add_a_title": "Додај наслов",
"add_exclusion_pattern": "Додајте образац изузимања",
"add_exclusion_pattern": "Додај образац изузимања",
"add_import_path": "Додај путању за преузимање",
"add_location": "Додај локацију",
"add_more_users": "Додај кориснике",
@ -23,7 +23,7 @@
"add_to": "Додај у...",
"add_to_album": "Додај у албум",
"add_to_shared_album": "Додај у дељен албум",
"add_url": "Додајте URL",
"add_url": "Додај URL",
"added_to_archive": "Додато у архиву",
"added_to_favorites": "Додато у фаворите",
"added_to_favorites_count": "Додато {count, number} у фаворите",
@ -523,6 +523,10 @@
"date_range": "Распон датума",
"day": "Дан",
"deduplicate_all": "Де-дуплицирај све",
"deduplication_criteria_1": "Величина слике у бајтовима",
"deduplication_criteria_2": "Број EXIF података",
"deduplication_info": "Информације о дедупликацији",
"deduplication_info_description": "Да бисмо аутоматски унапред одабрали датотеке и уклонили дупликате групно, гледамо:",
"default_locale": "Подразумевана локација (locale)",
"default_locale_description": "Форматирајте датуме и бројеве на основу локализације вашег претраживача",
"delete": "Обриши",

View file

@ -13,7 +13,7 @@
"add_a_location": "Dodaj Lokaciju",
"add_a_name": "Dodaj ime",
"add_a_title": "Dodaj naslov",
"add_exclusion_pattern": "Dodajte obrazac izuzimanja",
"add_exclusion_pattern": "Dodaj obrazac izuzimanja",
"add_import_path": "Dodaj putanju za preuzimanje",
"add_location": "Dodaj lokaciju",
"add_more_users": "Dodaj korisnike",
@ -23,7 +23,7 @@
"add_to": "Dodaj u...",
"add_to_album": "Dodaj u album",
"add_to_shared_album": "Dodaj u deljen album",
"add_url": "Dodajte URL",
"add_url": "Dodaj URL",
"added_to_archive": "Dodato u arhivu",
"added_to_favorites": "Dodato u favorite",
"added_to_favorites_count": "Dodato {count, number} u favorite",
@ -523,6 +523,10 @@
"date_range": "Raspon datuma",
"day": "Dan",
"deduplicate_all": "De-dupliciraj sve",
"deduplication_criteria_1": "Veličina slike u bajtovima",
"deduplication_criteria_2": "Broj EXIF podataka",
"deduplication_info": "Informacije o deduplikaciji",
"deduplication_info_description": "Da bismo automatski unapred odabrali datoteke i uklonili duplikate grupno, gledamo:",
"default_locale": "Podrazumevana lokacija (locale)",
"default_locale_description": "Formatirajte datume i brojeve na osnovu lokalizacije vašeg pretraživača",
"delete": "Obriši",

View file

@ -523,8 +523,11 @@
"date_range": "Datumintervall",
"day": "Dag",
"deduplicate_all": "Deduplicera alla",
"deduplication_criteria_1": "Bildstorlek i bytes",
"deduplication_criteria_2": "Räkning av EXIF-data",
"deduplication_info": "Dedupliceringsinformation",
"default_locale": "Standardplats",
"default_locale_description": "Formatera datum och siffror baserat på din webbläsares lokalitet",
"default_locale_description": "Formatera datum och siffror baserat på din webbläsares språkversion",
"delete": "Radera",
"delete_album": "Ta bort album",
"delete_api_key_prompt": "Är du säker på att du vill ta bort denna API-nyckel?",
@ -906,13 +909,16 @@
"no_results_description": "Pröva en synonym eller ett annat mer allmänt sökord",
"no_shared_albums_message": "Skapa ett album för att dela bilder och videor med andra personer",
"not_in_any_album": "Inte i något album",
"note_apply_storage_label_to_previously_uploaded assets": "Obs: Om du vill använda lagringsetiketten på tidigare uppladdade tillgångar kör du",
"note_unlimited_quota": "Notera: Ange 0 för obegränsad mängd",
"notes": "Notera",
"notification_toggle_setting_description": "Aktivera e-postaviseringar",
"notifications": "Notifikationer",
"notifications_setting_description": "Hantera aviseringar",
"oauth": "OAuth",
"official_immich_resources": "Officiella Immich-resurser",
"offline": "Frånkopplad",
"offline_paths": "Offlinevägar",
"offline_paths_description": "Dessa resultat kan bero på att filer som ej ingår i ett externt bibliotek har tagits bort manuellt.",
"ok": "OK",
"oldest_first": "Äldst först",
@ -937,11 +943,12 @@
"owner": "Ägare",
"partner": "Partner",
"partner_can_access": "{partner} har åtkomst",
"partner_can_access_assets": "Alla dina foton och videoklipp förutom de i Arkiverade och Raderade",
"partner_can_access_location": "Platsen där dina foton togs",
"partner_sharing": "Partnerdelning",
"partners": "Partners",
"password": "Lösenord",
"password_does_not_match": "",
"password_does_not_match": "Lösenorden stämmer inte överens",
"password_required": "Lösenord krävs",
"password_reset_success": "Lösenord återställt",
"past_durations": {
@ -956,14 +963,14 @@
"paused": "Pausad",
"pending": "Väntande",
"people": "Personer",
"people_edits_count": "Redigerad {count, plural, one {# person} other {# people}}",
"people_feature_description": "Visar foton och videor grupperade per personer",
"people_edits_count": "Redigerad {count, plural, one {# person} other {# personer}}",
"people_feature_description": "Visar foton och videor grupperade efter personer",
"people_sidebar_description": "Visa en länk till Personer i sidopanelen",
"permanent_deletion_warning": "Varning om permanent radering",
"permanent_deletion_warning_setting_description": "Visa en varning när tillgångar raderas permanent",
"permanently_delete": "Radera permanent",
"permanently_delete_assets_count": "Radera {count, plural, one {asset} other {assets}} permanent",
"permanently_deleted_asset": "",
"permanently_deleted_asset": "Permanent raderad tillgång",
"person": "Person",
"photos": "Foton",
"photos_and_videos": "Foton & videor",

View file

@ -7,7 +7,7 @@
"actions": "செயல்கள்",
"active": "செயல்பாட்டில்",
"activity": "செயல்பாடுகள்",
"activity_changed": "செயல்பாடு {இயக்கப்பட்டது, தேர்ந்தெடு, சரி {இயக்கப்பட்டது} மற்றது {முடக்கப்பட்டது}}",
"activity_changed": "செயல்பாடு {இயக்கப்பட்டது, தேர்ந்தெடு, சரி {enabled} மற்றது {disabled}}",
"add": "சேர்",
"add_a_description": "விவரம் சேர்",
"add_a_location": "இடத்தை சேர்க்கவும்",

View file

@ -289,6 +289,8 @@
"transcoding_constant_rate_factor": "Sabit oran faktörü (-SOF)",
"transcoding_constant_rate_factor_description": "Video kalite seviyesi. Tipik değerler H.264 için 23, HEVC için 28, VP9 için 31 ve AV1 için 35'tir. Daha düşük değerler daha iyi kalite sağlar, ancak daha büyük dosyalar üretir.",
"transcoding_disabled_description": "Videoları dönüştürmeyin, bazı istemcilerde oynatma bozulabilir",
"transcoding_encoding_options": "Kodlama Seçenekleri",
"transcoding_encoding_options_description": "Kodlanmış videolar için kodekleri, çözünürlüğü, kaliteyi ve diğer seçenekleri ayarlayın",
"transcoding_hardware_acceleration": "Donanım Hızlandırma",
"transcoding_hardware_acceleration_description": "Deneysel; daha hızlı, fakat aynı bitrate ayarlarında daha düşük kaliteye sahip",
"transcoding_hardware_decoding": "Donanım çözücü",
@ -301,6 +303,8 @@
"transcoding_max_keyframe_interval": "Maksimum ana kare aralığı",
"transcoding_max_keyframe_interval_description": "Ana kareler arasındaki maksimum kare mesafesini ayarlar. Düşük değerler sıkıştırma verimliliğini kötüleştirir, ancak arama sürelerini iyileştirir ve hızlı hareket içeren sahnelerde kaliteyi artırabilir. 0 bu değeri otomatik olarak ayarlar.",
"transcoding_optimal_description": "Hedef çözünürlükten yüksek veya kabul edilen formatta olmayan videolar",
"transcoding_policy": "Kod Dönüştürme Politikası",
"transcoding_policy_description": "Bir videonun ne zaman kod dönüştürüleceğini ayarlama",
"transcoding_preferred_hardware_device": "Tercih edilen donanım cihazı",
"transcoding_preferred_hardware_device_description": "Sadece VAAPI ve QSV için uygulanır. Donanım kod çevrimi için DRI Node ayarlar.",
"transcoding_preset_preset": "Ön ayar (-ön)",
@ -309,7 +313,7 @@
"transcoding_reference_frames_description": "Belirli bir kareyi sıkıştırırken referans alınacak kare sayısı. Daha yüksek değerler sıkıştırma verimliliğini artırır, ancak kodlamayı yavaşlatır. 0 bu değeri otomatik olarak ayarlar.",
"transcoding_required_description": "Yalnızca kabul edilen formatta olmayan videolar",
"transcoding_settings": "Video Dönüştürme Ayarları",
"transcoding_settings_description": "Video dosyalarının çözünürlük ve kodlama bilgilerini yönetir",
"transcoding_settings_description": "Hangi videoların dönüştürüleceğini ve nasıl işleneceğini yönetin",
"transcoding_target_resolution": "Hedef çözünürlük",
"transcoding_target_resolution_description": "Daha yüksek çözünürlükler daha fazla detayı koruyabilir fakat işlemesi daha uzun sürer, dosya boyutu daha yüksek olur ve uygulamanın akıcılığını etkileyebilir.",
"transcoding_temporal_aq": "Zamansal AQ",
@ -519,6 +523,10 @@
"date_range": "Tarih aralığı",
"day": "Gün",
"deduplicate_all": "Tüm kopyaları kaldır",
"deduplication_criteria_1": "Resim boyutu (bayt olarak)",
"deduplication_criteria_2": "EXIF veri sayısı",
"deduplication_info": "Tekilleştirme Bilgileri",
"deduplication_info_description": "Varlıkları otomatik olarak önceden seçmek ve yinelenenleri toplu olarak kaldırmak için şunlara bakıyoruz:",
"default_locale": "Varsayılan Yerel Ayar",
"default_locale_description": "Tarihleri ve sayıları tarayıcınızın yerel ayarına göre biçimlendirin",
"delete": "Sil",
@ -755,6 +763,7 @@
"get_help": "Yardım Al",
"getting_started": "Başlarken",
"go_back": "Geri git",
"go_to_folder": "Klasöre git",
"go_to_search": "Aramaya git",
"group_albums_by": "Albümleri gruplandır...",
"group_no": "Gruplama yok",

View file

@ -438,7 +438,7 @@
"blurred_background": "Розмитий фон",
"bugs_and_feature_requests": "Помилки та Запити",
"build": "Збірка",
"build_image": "Створити зображення",
"build_image": "Версія збірки",
"bulk_delete_duplicates_confirmation": "Ви впевнені, що хочете масово видалити {count, plural, one {# дубльований ресурс} few {# дубльовані ресурси} other {# дубльованих ресурсів}}? Це дія залишить найбільший ресурс у кожній групі і остаточно видалить всі інші дублікати. Цю дію неможливо скасувати!",
"bulk_keep_duplicates_confirmation": "Ви впевнені, що хочете залишити {count, plural, one {# дубльований ресурс} few {# дубльовані ресурси} other {# дубльованих ресурсів}}? Це дозволить вирішити всі групи дублікатів без видалення чого-небудь.",
"bulk_trash_duplicates_confirmation": "Ви впевнені, що хочете викинути в кошик {count, plural, one {# дубльований ресурс} few {# дубльовані ресурси} other {# дубльованих ресурсів}} масово? Це залишить найбільший ресурс у кожній групі і викине в кошик всі інші дублікати.",
@ -523,6 +523,10 @@
"date_range": "Проміжок часу",
"day": "День",
"deduplicate_all": "Видалити всі дублікати",
"deduplication_criteria_1": "Розмір зображення в байтах",
"deduplication_criteria_2": "Кількість даних EXIF",
"deduplication_info": "Інформація про дедуплікацію",
"deduplication_info_description": "Для автоматичного попереднього вибору файлів і масового видалення дублікатів ми враховуємо:",
"default_locale": "Дата і час за замовчуванням",
"default_locale_description": "Форматувати дати та числа з урахуванням мови вашого браузера",
"delete": "Видалити",

View file

@ -24,7 +24,7 @@
"add_to_album": "加入到相簿",
"add_to_shared_album": "加到共享相簿",
"add_url": "新增URL",
"added_to_archive": "封存",
"added_to_archive": "已新增至封存",
"added_to_favorites": "加入收藏",
"added_to_favorites_count": "將 {count, number} 個項目加入收藏",
"admin": {
@ -289,6 +289,8 @@
"transcoding_constant_rate_factor": "恆定速率因子(-crf",
"transcoding_constant_rate_factor_description": "視頻質量級別。典型值為 H.264 的 23、HEVC 的 28、VP9 的 31 和 AV1 的 35。數值越低質量越高但會產生較大的文件。",
"transcoding_disabled_description": "不轉碼影片,可能會讓某些客戶端無法正常播放",
"transcoding_encoding_options": "編碼選項",
"transcoding_encoding_options_description": "設定編碼影片的編解碼器、解析度、品質和其他選項",
"transcoding_hardware_acceleration": "硬體加速",
"transcoding_hardware_acceleration_description": "實驗性功能;速度更快,但在相同比特率下質量較低",
"transcoding_hardware_decoding": "硬體解碼",
@ -301,6 +303,8 @@
"transcoding_max_keyframe_interval": "最大關鍵幀間隔",
"transcoding_max_keyframe_interval_description": "設置關鍵幀之間的最大幀距。較低的值會降低壓縮效率但可以改善尋找時間並可能改善快速運動場景中的質量。0 會自動設置此值。",
"transcoding_optimal_description": "高於目標解析度或格式不被支援的影片",
"transcoding_policy": "轉碼策略",
"transcoding_policy_description": "設定影片進行轉碼的條件",
"transcoding_preferred_hardware_device": "首選硬件設備",
"transcoding_preferred_hardware_device_description": "僅適用於 VAAPI 和 QSV。設置用於硬件轉碼的 DRI 節點。",
"transcoding_preset_preset": "預設值(-preset",
@ -519,6 +523,10 @@
"date_range": "日期範圍",
"day": "日",
"deduplicate_all": "刪除所有重複項目",
"deduplication_criteria_1": "圖像大小(以位元組為單位)",
"deduplication_criteria_2": "EXIF 資料數量",
"deduplication_info": "重複資料刪除資訊",
"deduplication_info_description": "為了自動預選資產並大量刪除重複項,我們查看:",
"default_locale": "預設區域",
"default_locale_description": "依瀏覽器區域設定日期和數字格式",
"delete": "刪除",
@ -755,6 +763,7 @@
"get_help": "線上求助",
"getting_started": "開始使用",
"go_back": "返回",
"go_to_folder": "轉至資料夾",
"go_to_search": "前往搜尋",
"group_albums_by": "分類群組的方式...",
"group_no": "無分組",
@ -1141,6 +1150,7 @@
"server_version": "目前版本",
"set": "設定",
"set_as_album_cover": "設爲相簿封面",
"set_as_featured_photo": "設為特色照片",
"set_as_profile_picture": "設為個人資料圖片",
"set_date_of_birth": "設定出生日期",
"set_profile_picture": "設置個人資料圖片",
@ -1191,7 +1201,7 @@
"skip_to_tags": "跳轉到標籤",
"slideshow": "幻燈片",
"slideshow_settings": "幻燈片設定",
"sort_albums_by": "排序相簿",
"sort_albums_by": "相簿排序依據...",
"sort_created": "建立日期",
"sort_items": "項目數量",
"sort_modified": "日期已修改",

View file

@ -523,6 +523,10 @@
"date_range": "日期范围",
"day": "日",
"deduplicate_all": "删除所有重复项",
"deduplication_criteria_1": "图像大小(字节)",
"deduplication_criteria_2": "EXIF 数据计数",
"deduplication_info": "重复数据删除汇总",
"deduplication_info_description": "要自动预选项目并批量删除重复项,我们会考虑:",
"default_locale": "默认地区",
"default_locale_description": "根据您的浏览器地区设置日期和数字显示格式",
"delete": "删除",

View file

@ -53,7 +53,7 @@ show_friendly_message() {
ip_address=$(hostname -I | awk '{print $1}')
cat <<EOF
Successfully deployed Immich!
You can access the website at http://$ip_address:2283 and the server URL for the mobile app is http://$ip_address:2283/api
You can access the website or the mobile app at http://$ip_address:2283
---------------------------------------------------
If you want to configure custom information of the server, including the database, Redis information, or the backup (or upload) location, etc.

View file

@ -97,8 +97,8 @@ download:
- file: mobile/assets/i18n/id-ID.json
locale_code: id-ID
- file: mobile/assets/i18n/gl.json
locale_code: gl-ES
locale_code: gl
- file: mobile/assets/i18n/ga.json
locale_code: ga-IE
locale_code: ga
- file: mobile/assets/i18n/tr-TR.json
locale_code: tr-TR

View file

@ -1,6 +1,6 @@
ARG DEVICE=cpu
FROM python:3.11-bookworm@sha256:2c80c66d876952e04fa74113864903198b7cfb36b839acb7a8fef82e94ed067c AS builder-cpu
FROM python:3.11-bookworm@sha256:adb581d8ed80edd03efd4dcad66db115b9ce8de8522b01720b9f3e6146f0884c AS builder-cpu
FROM builder-cpu AS builder-openvino
@ -34,7 +34,7 @@ RUN python3 -m venv /opt/venv
COPY poetry.lock pyproject.toml ./
RUN poetry install --sync --no-interaction --no-ansi --no-root --with ${DEVICE} --without dev
FROM python:3.11-slim-bookworm@sha256:370c586a6ffc8c619e6d652f81c094b34b14b8f2fb9251f092de23f16e299b78 AS prod-cpu
FROM python:3.11-slim-bookworm@sha256:6ed5bff4d7d377e2a27d9285553b8c21cfccc4f00881de1b24c9bc8d90016e82 AS prod-cpu
FROM prod-cpu AS prod-openvino

View file

@ -14,9 +14,29 @@ from uvicorn import Server
from uvicorn.workers import UvicornWorker
class ClipSettings(BaseModel):
textual: str | None = None
visual: str | None = None
class FacialRecognitionSettings(BaseModel):
recognition: str | None = None
detection: str | None = None
class PreloadModelData(BaseModel):
clip: str | None = None
facial_recognition: str | None = None
clip_fallback: str | None = os.getenv("MACHINE_LEARNING_PRELOAD__CLIP", None)
facial_recognition_fallback: str | None = os.getenv("MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION", None)
if clip_fallback is not None:
os.environ["MACHINE_LEARNING_PRELOAD__CLIP__TEXTUAL"] = clip_fallback
os.environ["MACHINE_LEARNING_PRELOAD__CLIP__VISUAL"] = clip_fallback
del os.environ["MACHINE_LEARNING_PRELOAD__CLIP"]
if facial_recognition_fallback is not None:
os.environ["MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__RECOGNITION"] = facial_recognition_fallback
os.environ["MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__DETECTION"] = facial_recognition_fallback
del os.environ["MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION"]
clip: ClipSettings = ClipSettings()
facial_recognition: FacialRecognitionSettings = FacialRecognitionSettings()
class MaxBatchSize(BaseModel):

View file

@ -75,20 +75,47 @@ async def lifespan(_: FastAPI) -> AsyncGenerator[None, None]:
async def preload_models(preload: PreloadModelData) -> None:
log.info(f"Preloading models: {preload}")
if preload.clip is not None:
model = await model_cache.get(preload.clip, ModelType.TEXTUAL, ModelTask.SEARCH)
await load(model)
log.info(f"Preloading models: clip:{preload.clip} facial_recognition:{preload.facial_recognition}")
model = await model_cache.get(preload.clip, ModelType.VISUAL, ModelTask.SEARCH)
await load(model)
async def load_models(model_string: str, model_type: ModelType, model_task: ModelTask) -> None:
for model_name in model_string.split(","):
model_name = model_name.strip()
model = await model_cache.get(model_name, model_type, model_task)
await load(model)
if preload.facial_recognition is not None:
model = await model_cache.get(preload.facial_recognition, ModelType.DETECTION, ModelTask.FACIAL_RECOGNITION)
await load(model)
if preload.clip.textual is not None:
await load_models(preload.clip.textual, ModelType.TEXTUAL, ModelTask.SEARCH)
model = await model_cache.get(preload.facial_recognition, ModelType.RECOGNITION, ModelTask.FACIAL_RECOGNITION)
await load(model)
if preload.clip.visual is not None:
await load_models(preload.clip.visual, ModelType.VISUAL, ModelTask.SEARCH)
if preload.facial_recognition.detection is not None:
await load_models(
preload.facial_recognition.detection,
ModelType.DETECTION,
ModelTask.FACIAL_RECOGNITION,
)
if preload.facial_recognition.recognition is not None:
await load_models(
preload.facial_recognition.recognition,
ModelType.RECOGNITION,
ModelTask.FACIAL_RECOGNITION,
)
if preload.clip_fallback is not None:
log.warning(
"Deprecated env variable: 'MACHINE_LEARNING_PRELOAD__CLIP'. "
"Use 'MACHINE_LEARNING_PRELOAD__CLIP__TEXTUAL' and "
"'MACHINE_LEARNING_PRELOAD__CLIP__VISUAL' instead."
)
if preload.facial_recognition_fallback is not None:
log.warning(
"Deprecated env variable: 'MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION'. "
"Use 'MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__DETECTION' and "
"'MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__RECOGNITION' instead."
)
def update_state() -> Iterator[None]:

View file

@ -10,7 +10,7 @@ from tokenizers import Encoding, Tokenizer
from app.config import log
from app.models.base import InferenceModel
from app.models.transforms import clean_text
from app.models.transforms import clean_text, serialize_np_array
from app.schemas import ModelSession, ModelTask, ModelType
@ -18,9 +18,9 @@ class BaseCLIPTextualEncoder(InferenceModel):
depends = []
identity = (ModelType.TEXTUAL, ModelTask.SEARCH)
def _predict(self, inputs: str, **kwargs: Any) -> NDArray[np.float32]:
def _predict(self, inputs: str, **kwargs: Any) -> str:
res: NDArray[np.float32] = self.session.run(None, self.tokenize(inputs))[0][0]
return res
return serialize_np_array(res)
def _load(self) -> ModelSession:
session = super()._load()

View file

@ -10,7 +10,15 @@ from PIL import Image
from app.config import log
from app.models.base import InferenceModel
from app.models.transforms import crop_pil, decode_pil, get_pil_resampling, normalize, resize_pil, to_numpy
from app.models.transforms import (
crop_pil,
decode_pil,
get_pil_resampling,
normalize,
resize_pil,
serialize_np_array,
to_numpy,
)
from app.schemas import ModelSession, ModelTask, ModelType
@ -18,10 +26,10 @@ class BaseCLIPVisualEncoder(InferenceModel):
depends = []
identity = (ModelType.VISUAL, ModelTask.SEARCH)
def _predict(self, inputs: Image.Image | bytes, **kwargs: Any) -> NDArray[np.float32]:
def _predict(self, inputs: Image.Image | bytes, **kwargs: Any) -> str:
image = decode_pil(inputs)
res: NDArray[np.float32] = self.session.run(None, self.transform(image))[0][0]
return res
return serialize_np_array(res)
@abstractmethod
def transform(self, image: Image.Image) -> dict[str, NDArray[np.float32]]:

View file

@ -12,7 +12,7 @@ from PIL import Image
from app.config import log, settings
from app.models.base import InferenceModel
from app.models.transforms import decode_cv2
from app.models.transforms import decode_cv2, serialize_np_array
from app.schemas import FaceDetectionOutput, FacialRecognitionOutput, ModelFormat, ModelSession, ModelTask, ModelType
@ -61,7 +61,7 @@ class FaceRecognizer(InferenceModel):
return [
{
"boundingBox": {"x1": x1, "y1": y1, "x2": x2, "y2": y2},
"embedding": embedding,
"embedding": serialize_np_array(embedding),
"score": score,
}
for (x1, y1, x2, y2), embedding, score in zip(faces["boxes"], embeddings, faces["scores"])

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