Compare commits

...

261 Commits

Author SHA1 Message Date
Thomas Way
d46e5f2436 feat: Use postgres as a queue
We've been keen to try this for a while as it means we can remove redis as a
dependency, which makes Immich easier to setup and run.

This replaces bullmq with a bespoke postgres queue. Jobs in the queue are
processed either immediately via triggers and notifications, or eventually if a
notification is missed.
2025-04-30 22:42:18 +01:00
Jason Rasmussen
b845184c80 chore: remove old memory lane implementation (#18000) 2025-04-30 14:23:32 -04:00
Jason Rasmussen
1fde02ee1e chore: remove unused types and code (#17999) 2025-04-30 13:41:23 -04:00
Jason Rasmussen
526c02297c refactor: stream queue migration (#17997) 2025-04-30 16:23:13 +00:00
Alex
732b06eec8 refactor: stream for sidecar (#17995)
* refactor: stream for sidecar

* chore: make sql

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-04-30 10:53:51 -05:00
Daniel Dietzler
436cff72b5 refactor: activity manager (#17943) 2025-04-30 15:50:38 +00:00
Jason Rasmussen
be5cc2cdf5 refactor: stream detect faces (#17996) 2025-04-30 11:25:30 -04:00
Jason Rasmussen
094a41ac9a chore: remove audit file report (#17994) 2025-04-30 11:17:23 -04:00
Daniel Dietzler
ebad6a008f fix: add missing translations to face editor (#17993) 2025-04-30 10:07:21 -05:00
Jason Rasmussen
0c261ffbe2 fix: queue in batches (#17989) 2025-04-30 10:52:51 -04:00
Jason Rasmussen
6df6103c67 chore: better immich-web logging (#17992) 2025-04-30 09:48:24 -05:00
Jason Rasmussen
8c5116bc1d refactor: stream search duplicates (#17991) 2025-04-30 10:40:32 -04:00
bo0tzz
e3812a0e36 chore: also run e2e tests on arm64 (#17822)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2025-04-30 14:22:10 +02:00
Min Idzelis
4b1ced439b feat: improve/refactor focus handling (#17796)
* feat: improve focus

* test

* lint

* use modulus in loop
2025-04-30 00:19:38 -04:00
Jason Rasmussen
2e8a286540 refactor: smart search queue (#17977) 2025-04-29 17:44:28 -04:00
Jason Rasmussen
038a82c4f1 refactor: theme manager (#17976) 2025-04-29 17:44:09 -04:00
renovate[bot]
2c2dd01bf0 fix(deps): update machine-learning (#17951) 2025-04-29 20:02:58 +00:00
Ben
ac73e163df chore(mobile): translate toast messages (#17964) 2025-04-29 14:26:41 -05:00
Jason Rasmussen
d89e88bb3f feat: configure token endpoint auth method (#17968) 2025-04-29 15:17:48 -04:00
Thomas
3ce353393a chore(server): don't insert embeddings if the model has changed (#17885)
* chore(server): don't insert embeddings if the model has changed

We're moving away from the heuristic of waiting for queues to complete. The job
which inserts embeddings can simply check if the model has changed before
inserting, rather than attempting to lock the queue.

* more robust dim size update

* use check constraint

* index command cleanup

* add create statement

* update medium test, create appropriate extension

* new line

* set dimension size when running on all assets

* why does it want braces smh

* take 2

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-04-29 14:23:01 -04:00
Min Idzelis
0e4cf9ac57 feat(web): responsive date group header height (#17944)
* feat: responsive date group header height

* update tests

* feat(web): improve perf when changing mobile orientation (#17945)

fix: improve perf when changing mobile orientation
2025-04-29 13:59:06 -04:00
Min Idzelis
07290580a6 feat: improve semantic nav/main tags (#17800)
feat: nav/main elements

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-04-29 13:51:39 -04:00
AverageHelper
d9ce74b896 chore: add security.txt (#17952)
* feat: Create .well-known/security.txt

* feat: Add another security.txt for the main website

* fix: deploy hidden files

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-04-29 13:48:06 -04:00
Jason Rasmussen
4c0f79b162 fix: use lint:p in checkall script (#17969) 2025-04-29 17:34:36 +00:00
renovate[bot]
9851d24628 chore(deps): update docker.io/valkey/valkey:8-bookworm docker digest to c855f98 (#17948)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-29 12:08:50 +01:00
renovate[bot]
fe6cbd93b1 chore(deps): pin dependencies (#17947)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-29 12:08:40 +01:00
renovate[bot]
df20788088 chore(deps): update grafana/grafana docker tag to v11.6.1 (#17955)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-29 12:08:08 +01:00
renovate[bot]
3d042cc7f1 fix(deps): update typescript-projects (#17961)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-29 13:00:37 +02:00
renovate[bot]
85446c5862 chore(deps): update redis:6.2-alpine docker digest to 3211c33 (#17950)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-29 10:09:25 +00:00
renovate[bot]
fb52ac0f5b chore(deps): update node.js to v22.15.0 (#17956)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-29 12:08:32 +02:00
Eli Gao
48bcbee6ed feat(server): JXL previews from DNG 1.7+ (#17861)
* feat(server): JXL previews from RAW

* refactor(server): use var name assumedExtractedFormat for clarity

* test(server): fix existing media.extract() returning JPEG

* chore(openapi): regen

* style(server): lint

* fix(server): ignore undefined decode orientation

* fix(server): correct orientation assignment in media decode options

* test(server): unit tests of JXL-encoded DNG

* refactor(server): return buffer and format from mediaRepository.extract()

* chore(open-api): regen

* refactor

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-04-28 18:18:46 -04:00
Daniel Dietzler
f621f8ef2c refactor: more job queries (#17745) 2025-04-29 00:03:20 +02:00
Jason Rasmussen
7f69abbf0d refactor: app init event (#17937) 2025-04-28 14:48:33 -04:00
Jason Rasmussen
895b2bf5cd refactor: download manager (#17935) 2025-04-28 14:21:24 -04:00
Jason Rasmussen
f64e6f5dc3 refactor: auth login event (#17934) 2025-04-28 14:13:14 -04:00
Luke Towers
64e738f79d feat(web): move duplicates controls above preview of duplicate images (#17837)
Move duplicates controls above preview of duplicate images
2025-04-28 16:10:40 +00:00
Daniel Dietzler
a17390a422 refactor: move managers to new folder (#17929) 2025-04-28 16:56:04 +02:00
Jason Rasmussen
1b5fc9c665 feat: notifications (#17701)
* feat: notifications

* UI works

* chore: pr feedback

* initial fetch and clear notification upon logging out

* fix: merge

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-04-28 10:36:14 -04:00
Yaros
23717ce981 feat(mobile): save grid size on gesture resize (#17891) 2025-04-28 09:23:33 -05:00
Min Idzelis
2fd05e8447 feat: preload and cancel images with a service worker (#16893)
* feat: Service Worker to preload/cancel images and other resources

* Remove caddy configuration, localhost is secure if port-forwarded

* fix e2e tests

* Cache/return the app.html for all web entry points

* Only handle preload/cancel

* fix e2e

* fix e2e

* e2e-2

* that'll do it

* format

* fix test

* lint

* refactor common code to conditionals

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-04-28 14:23:05 +00:00
Min Idzelis
c664d99a34 refactor: vscode - format/organize on save (#17928) 2025-04-28 10:11:19 -04:00
Andreas Tollkötter
21c7d70336 feat(mobile): Capitalize month names in asset grid (#17898)
* capitalize month titles

* capitalize day titles as well
2025-04-28 13:56:36 +00:00
Jason Rasmussen
ad272333db refactor: user avatar color (#17753) 2025-04-28 08:54:51 -05:00
Zack Pollard
460d594791 feat: api response compression (#17878) 2025-04-28 08:54:11 -05:00
Jason Rasmussen
e6c575c33e feat: rtl (#17860) 2025-04-28 08:53:53 -05:00
Andreas Tollkötter
85ac0512a6 fix(web): Make date-time formatting follow locale (#17899)
* fixed missing $locale parameter to .toLocaleString

* Remove unused types and functions in timeline-util

* remove unused export

* re-enable export because it is needed for tests

* format
2025-04-28 08:53:26 -05:00
Alex
205260d31c chore: post release tasks (#17895) 2025-04-27 23:02:03 -05:00
Alex
3858973be5 chore(mobile): translation (#17920) 2025-04-27 23:00:40 -05:00
github-actions
02994883fe chore: version v1.132.3 2025-04-25 19:44:05 +00:00
Alex
a1f8150c30 fix: Authelia OAuth code verifier value contains invalid characters (#17886)
* fix(mobile): Authelia OAuth code verifier value contains invalid characters

* Refactor

* Refactoring with Jason

* Refactoring with Jason
2025-04-25 19:39:14 +00:00
Yaros
d85ef19bfc fix(mobile): revert get location on app start (#17882) 2025-04-25 10:38:30 -05:00
Jason Rasmussen
d0014bdf94 refactor: event manager (#17862)
* refactor: event manager

* refactor: event manager
2025-04-25 08:36:31 -04:00
Martin Mikita
e822e3eca9 docs: update MapTiler name (#17863) 2025-04-25 08:57:44 +00:00
Alex
644defa4a1 chore: post release tasks (#17867) 2025-04-25 04:14:40 +00:00
Matthew Momjian
1fe3c7b9b3 fix(docs): priorities (Capitalization) (#17866)
priorities
2025-04-25 04:07:42 +00:00
github-actions
0d60be3d87 chore: version v1.132.2 2025-04-25 03:07:06 +00:00
Alex
765da7b182 fix(mobile): mobile migration logic (#17865)
* fix(mobile): mobile migration logic

* add exception

* remove unused comment

* finalize
2025-04-25 00:16:54 +00:00
shenlong
b037158028 fix(mobile): auto trash using MANAGE_MEDIA (#17828)
fix: auto trash using MANAGE_MEDIA

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-04-24 19:09:50 -05:00
Daimolean
a03902f174 fix(docs): incorrect date sorting (#17858) 2025-04-24 19:40:52 -04:00
Jason Rasmussen
1d610ad9cb refactor: database connection parsing (#17852) 2025-04-24 12:58:29 -04:00
Min Idzelis
dab4870fed fix: flappy e2e test (#17832)
* fix: flappy e2e test

* lint
2025-04-23 23:30:13 -04:00
github-actions
37f5e6e2cb chore: version v1.132.1 2025-04-23 21:43:47 +00:00
Alex
57d622bc43 chore: post release tasks (#17816) 2025-04-23 16:41:08 -05:00
Alex
c167e46ec7 chore: revert #16732 (#17819)
* chore: revert #16732

* lint
2025-04-23 16:40:59 -05:00
Mert
6ce8a1deeb fix(server): bump sharp (#17818)
* bump sharp

* test linking

* link in prod image too

* force global

* keep unnecessary libraries

* override sharp version

* revert dockerfile changes

* add node-gyp and napi

* dev dependency
2025-04-23 17:08:29 -04:00
github-actions
f659ef4b7a chore: version v1.132.0 2025-04-23 16:44:47 +00:00
Zack Pollard
bb6cdc99ab ci: correct permissions for building mobile during release flow (#17814) 2025-04-23 11:38:43 -05:00
Weblate (bot)
830b4dadcb chore(web): update translations (#17808)
Co-authored-by: Aleksander Vae Haaland <aleksander@vaehaaland.no>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: Bonov <bonov@mail.ru>
Co-authored-by: Bruno López Barcia <brunolopar46@gmail.com>
Co-authored-by: Chris Axell <chris.axell@gmail.com>
Co-authored-by: Dymitr <zasvab@gmail.com>
Co-authored-by: Florian Ostertag <florian.kuepper@gmail.com>
Co-authored-by: GiannosOB <giannos2105@gmail.com>
Co-authored-by: Happy <happygamernintendoswitch@gmail.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com>
Co-authored-by: Jane <asetmalik@gmail.com>
Co-authored-by: Javier Villanueva García <jvg2203@gmail.com>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Karl Solgård <karl.f91@gmail.com>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: MannyLama <Manfred@lama.be>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: RWDai <869759838@qq.com>
Co-authored-by: Roi Gabay <roigby@gmail.com>
Co-authored-by: Runskrift <anders@rimfrost.nu>
Co-authored-by: Sebastian <sebastiankiwidk@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Sidewave Tech <tech@sidewave.it>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Temuri Doghonadze <temuri.doghonadze@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: Zvonimir <zzrakic@protonmail.com>
Co-authored-by: adri1m64 <adrien.melle@laposte.net>
Co-authored-by: catelixor <catelixor+weblate@proton.me>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: kiwinho <kiwicaja@gmail.com>
Co-authored-by: millallo <millallo@tiscali.it>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: stanciupaul <stanciupaul90@yahoo.com>
Co-authored-by: thehijacker <thehijacker@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: xuars <yago.rana.gayoso@gmail.com>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: 灯笼 <gh_denglong@163.com>
2025-04-23 17:26:58 +01:00
Zack Pollard
d2f2f8d672 fix: retrieve version from lockfile and fallback to cli command (#17812) 2025-04-23 17:10:43 +01:00
Alex
be1062474b chore: memory spacing (#17813)
chore(web): memory spacing
2025-04-23 16:02:49 +00:00
bo0tzz
64000d9d76 feat: static analysis job for gha workflows (#17688)
* fix: set persist-credentials explicitly for checkout

https://woodruffw.github.io/zizmor/audits/#artipacked

* fix: minimize permissions scope for workflows

https://woodruffw.github.io/zizmor/audits/#excessive-permissions

* fix: remove potential template injections

https://woodruffw.github.io/zizmor/audits/#template-injection

* fix: only pass needed secrets in workflow_call

https://woodruffw.github.io/zizmor/audits/#secrets-inherit

* fix: push perm for single-arch build jobs

I hadn't realised these push to the registry too :x

* chore: fix formatting

* fix: $

* fix: retag job quoting

* feat: static analysis job for gha workflows

* chore: fix formatting

* fix: clear last zizmor checks

* fix: broken merge

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2025-04-23 15:49:06 +00:00
Toni
59fa8fbd0e perf(mobile): remove small thumbnail and cache generated thumbnails (#17792)
* Remove small thumbnail and cache generated thumbnails

* Creating the small thumbnails takes quite some time, which should not be underestimated.
* The time needed to generate the small or big thumbnail is not too different from each other. Therefore there is no real benefit of the small thumbnail and it only adds frustration to the end user experience. That is because the image appeared to have loaded (the visual move from blur to something better) but it's still so bad that it is basically a blur. The better solution is therefore to stay at the blur until the actual thumbnail has loaded.
* Additionaly to the faster generation of the thumbnail, it now also gets cached similarly to the remote thumbnail which already gets cached. This further speeds up the all over usage of the app and prevents a repeatet thumbnail generation when opening the app.
* Decreased the quality from the default 95 to 80 to provide similar quality with much reduces thumbnail size.
* Use try catch around the read of the cache file.
* Use the key provided in the loadImage method instead of the asset of the constructor.

* Use userId instead of ownerId

* Remove import

* Add checksum to thumbnail cache key
2025-04-23 10:31:35 -05:00
Zack Pollard
19746a8685 fix: cache build versions (#17811) 2025-04-23 16:31:18 +01:00
Thomas
987e5ab76c fix(server): start job workers after DB (#17806)
Job workers are currently started on app init, which means they are started
before the DB is initialised. This can be problematic if jobs which need to use
the DB start running before it's ready. It also means that swapping out the
queue implementation for something which uses the DB won't work.
2025-04-23 15:07:32 +00:00
Jason Rasmussen
1b5e981a45 fix: failing ci checks (#17810) 2025-04-23 10:59:54 -04:00
Tin Pecirep
b7a0cf2470 feat: add oauth2 code verifier
* fix: ensure oauth state param matches before finishing oauth flow

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* chore: upgrade openid-client to v6

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* feat: use PKCE for oauth2 on supported clients

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* feat: use state and PKCE in mobile app

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* fix: remove obsolete oauth repository init

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* fix: rewrite callback url if mobile redirect url is enabled

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* fix: propagate oidc client error cause when oauth callback fails

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* fix: adapt auth service tests to required state and PKCE params

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* fix: update sdk types

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* fix: adapt oauth e2e test to work with PKCE

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

* fix: allow insecure (http) oauth clients

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>

---------

Signed-off-by: Tin Pecirep <tin.pecirep@gmail.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-04-23 15:08:11 +01:00
Alex
13d6bd67b1 feat: no small local thumbnail (#17787)
* feat: no small local thumbnail

* pr feedback
2025-04-23 14:02:51 +00:00
Toni
1de2eae12d perf(mobile): remove load of thumbnails in the image provider (#17773)
Remove loading of thumbnail in the image provider

* Removed the load of the thumbnail from the local and remote image provider as they shall provide the image, not the thumbnail. The thumbnail gets provided by the thumbnail provider.
* The thumbnail provider is used as the loadingBuilder and the image provider as the imageProvider. Therefore loading the thumbnail in the image provider loads it a second time which is completely redundant, uses precious time and yields no results.

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-04-23 13:55:51 +00:00
Zack Pollard
bc5875ba8d chore: multithreaded web linting (#17809) 2025-04-23 13:05:31 +01:00
renovate[bot]
0426b574fe fix(deps): update typescript-projects (#17625)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2025-04-23 11:45:38 +00:00
renovate[bot]
2c3658e642 fix(deps): update machine-learning (#17769) 2025-04-23 07:44:30 -04:00
renovate[bot]
a493dab294 chore(deps): update github-actions (#17766)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-23 11:41:51 +00:00
Matthew Momjian
699fdd0d1b fix(mobile): recently added -> taken (#17780) 2025-04-23 12:38:25 +01:00
Weblate (bot)
a774153f67 chore(web): update translations (#17627)
Co-authored-by: Aleksander Vae Haaland <aleksander@vaehaaland.no>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: Bonov <bonov@mail.ru>
Co-authored-by: Bruno López Barcia <brunolopar46@gmail.com>
Co-authored-by: Chris Axell <chris.axell@gmail.com>
Co-authored-by: Dymitr <zasvab@gmail.com>
Co-authored-by: Florian Ostertag <florian.kuepper@gmail.com>
Co-authored-by: GiannosOB <giannos2105@gmail.com>
Co-authored-by: Happy <happygamernintendoswitch@gmail.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com>
Co-authored-by: Jane <asetmalik@gmail.com>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: MannyLama <Manfred@lama.be>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: RWDai <869759838@qq.com>
Co-authored-by: Roi Gabay <roigby@gmail.com>
Co-authored-by: Runskrift <anders@rimfrost.nu>
Co-authored-by: Sebastian <sebastiankiwidk@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Sidewave Tech <tech@sidewave.it>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Temuri Doghonadze <temuri.doghonadze@gmail.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: Zvonimir <zzrakic@protonmail.com>
Co-authored-by: adri1m64 <adrien.melle@laposte.net>
Co-authored-by: catelixor <catelixor+weblate@proton.me>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: kiwinho <kiwicaja@gmail.com>
Co-authored-by: millallo <millallo@tiscali.it>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: stanciupaul <stanciupaul90@yahoo.com>
Co-authored-by: thehijacker <thehijacker@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: xuars <yago.rana.gayoso@gmail.com>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: 灯笼 <gh_denglong@163.com>
2025-04-23 12:30:38 +01:00
Bastian Machek
ca12aff3a4 docs: updated community-projects.tsx: lrc-immich-plugin (#17801) 2025-04-23 12:11:42 +01:00
renovate[bot]
550c1c0a10 chore(deps): update prom/prometheus docker digest to 339ce86 (#17767)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-23 12:04:33 +01:00
Mert
92ac1193e6 fix(server): queue android motion assets for transcoding (#17781) 2025-04-23 12:03:28 +01:00
Min Idzelis
2a95eccf6a fix: vscode vitest ext - missing jsdom dev dependency (#17799) 2025-04-22 23:01:22 -04:00
Łukasz Wawrzyk
ee017803bf fix(mobile): use immutable cache keys for local images (#17794) 2025-04-23 02:32:03 +00:00
Alex
0986a71ce3 fix(mobile): revert cache fixes (#17786)
* Revert "fix(mobile): use immutable cache keys for local images (#17736)"

This reverts commit 010b144754.

* Revert "perf(mobile): remove small thumbnail and cache generated thumbnails (#17682)"

This reverts commit b71039e83c.
2025-04-22 12:15:54 -05:00
Alex
af36eaa61b fix(mobile): video player initialization (#17778)
* fix(mobile): video player initialization

* nit
2025-04-22 11:51:20 -04:00
Alex
fda68f972f fix(web): forceDark control app bar doesn't work (#17759) 2025-04-22 09:25:27 -04:00
renovate[bot]
a8eec92da7 chore(deps): update dependency @types/node to ^22.14.1 (#17770)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-04-22 10:18:44 +00:00
Alex
ad8511c978 feat(docs): APK download button (#17768) 2025-04-21 23:27:00 -05:00
Bonne Eggleston
fe8c5e8107 feat: add album start and end dates for storage template (#17188) 2025-04-21 19:54:33 -04:00
Yaros
c70140e707 fix(web): map marker positioning in details pane (#17754)
fix: map marker positioning in details pane
2025-04-21 13:01:38 -05:00
Łukasz Wawrzyk
010b144754 fix(mobile): use immutable cache keys for local images (#17736)
fix(mobile): usse immutable cache keys for local images
2025-04-21 13:00:46 -05:00
Toni
b71039e83c perf(mobile): remove small thumbnail and cache generated thumbnails (#17682)
* Remove small thumbnail and cache generated thumbnails

* Creating the small thumbnails takes quite some time, which should not be underestimated.
* The time needed to generate the small or big thumbnail is not too different from each other. Therefore there is no real benefit of the small thumbnail and it only adds frustration to the end user experience. That is because the image appeared to have loaded (the visual move from blur to something better) but it's still so bad that it is basically a blur. The better solution is therefore to stay at the blur until the actual thumbnail has loaded.
* Additionaly to the faster generation of the thumbnail, it now also gets cached similarly to the remote thumbnail which already gets cached. This further speeds up the all over usage of the app and prevents a repeatet thumbnail generation when opening the app.

* Decrease quality and use try catch

* Decreased the quality from the default 95 to 80 to provide similar quality with much reduces thumbnail size.
* Use try catch around the read of the cache file.

* Replace ImmutableBuffer.fromUint8List with ImmutableBuffer.fromFilePath

* Removed unnecessary comment

* Replace debugPrint with log.severe for catch of error

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-04-21 12:51:37 -05:00
Jason Rasmussen
56a4aa9ffe refactor: email repository (#17746) 2025-04-21 12:53:37 -04:00
Jason Rasmussen
488dc4efbd refactor: notification-admin controller (#17748) 2025-04-21 10:49:26 -04:00
Yaros
f0ff8581da feat(mobile): map improvements (#17714)
* fix: remove unnecessary db operations in map

* feat: use user's location for map thumbnails

* chore: refactored handleMapEvents

* fix: location fails fetching & update geolocator

* chore: minor refactor

* chore: small style tweak

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-04-21 05:55:13 +00:00
Yaros
c49fd2065b chore(mobile): bump ios deployment target (#17715)
* chore: bump ios deployment target

* podfile

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-04-21 05:18:25 +00:00
aviv926
21a6eb30ff feat(docs): documentation update (#17720)
Documentation update
2025-04-20 23:55:58 -05:00
Matthew Momjian
9e063c993c fix(docs): Database dump warnings (#17676)
* docs

* admin page

* roadmap

* whitespace

* whitespace

* no danger
2025-04-20 23:54:37 -05:00
Daniel Dietzler
dd1fcd5be5 chore: remove asset entity (#17703) 2025-04-18 21:39:56 +00:00
Daniel Dietzler
52ae06c119 refactor: remove album entity, update types (#17450) 2025-04-18 23:10:34 +02:00
Daniel Dietzler
854ea13d6a chore: simplify asset getByIds (#17699) 2025-04-18 16:52:41 -04:00
bo0tzz
504930947d fix: various actions workflow security improvements (#17651)
* fix: set persist-credentials explicitly for checkout

https://woodruffw.github.io/zizmor/audits/#artipacked

* fix: minimize permissions scope for workflows

https://woodruffw.github.io/zizmor/audits/#excessive-permissions

* fix: remove potential template injections

https://woodruffw.github.io/zizmor/audits/#template-injection

* fix: only pass needed secrets in workflow_call

https://woodruffw.github.io/zizmor/audits/#secrets-inherit

* fix: push perm for single-arch build jobs

I hadn't realised these push to the registry too :x

* chore: fix formatting

* fix: $

* fix: retag job quoting

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2025-04-18 15:10:27 -05:00
Alex
0e6ac87645 feat(mobile): assets + exif stream sync placeholder (#17677)
* feat(mobile): assets + exif stream sync placeholder

* feat(mobile): assets + exif stream sync placeholder

* refactor

* fix: test

* fix:test

* refactor(mobile): sync stream service (#17687)

* refactor: sync stream to use callbacks

* pr feedback

* pr feedback

* pr feedback

* fix: test

---------

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

---------

Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-04-18 19:01:16 +00:00
Yaros
bd2deda50c feat(mobile): search on places page (#17679)
* feat: search on places page

* chore: use searchfield on people page
2025-04-18 11:19:51 -05:00
Jason Rasmussen
160bb492a2 fix: skip initial kysely migration for existing installs (#17690)
* fix: skip initial kysely migration for existing installs

* Update docs/src/pages/errors.md

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-04-18 11:19:11 -05:00
Jason Rasmussen
6474a78b8b feat: initial kysely migration file (#17678) 2025-04-17 17:38:47 -04:00
Jason Rasmussen
e275f2d8b3 feat: add foreign key indexes (#17672) 2025-04-17 14:41:06 -04:00
shenlong
81ed54aa61 feat: user sync stream (#16862)
* refactor: user entity

* chore: rebase fixes

* refactor: remove int user Id

* refactor: migrate store userId from int to string

* refactor: rename uid to id

* feat: drift

* pr feedback

* refactor: move common overrides to mixin

* refactor: remove int user Id

* refactor: migrate store userId from int to string

* refactor: rename uid to id

* feat: user & partner sync stream

* pr changes

* refactor: sync service and add tests

* chore: remove generated change

* chore: move sync model

* rebase: convert string ids to byte uuids

* rebase

* add processing logs

* batch db calls

* rewrite isolate manager

* rewrite with worker_manager

* misc fixes

* add sync order test

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-04-17 10:25:27 -05:00
Daniel Dietzler
067338b0ed chore: remove transfer encoding header (#17671) 2025-04-17 09:46:52 -05:00
Min Idzelis
5e68f8c519 fix: longpress triggers contextmenu (#17602) 2025-04-16 19:24:26 -04:00
Mert
242a559e0f refactor: query for fetching faces and people of assets (#17661)
* use json instead of jsonb

* missing condition
2025-04-16 19:00:55 -04:00
Jonathan Jogenfors
ed2b54527c chore(server): don't check null dates (#17664) 2025-04-16 18:40:08 -04:00
Daniel Dietzler
8b38f8a58d fix: do not select album in time bucket query (#17662) 2025-04-16 17:52:22 -04:00
yparitcher
29b30570bf fix: use IMMICH_HOST in microservices (#17659) 2025-04-16 23:05:12 +02:00
Daniel Dietzler
586a7a173b refactor: handle detect faces job query (#17660) 2025-04-16 22:52:54 +02:00
Daniel Dietzler
1bbfacfc09 refactor: more job query stuff (#17658) 2025-04-16 22:10:20 +02:00
Daniel Dietzler
85c2d36d99 refactor: dedicated get album thumbnail files query (#17657) 2025-04-16 21:10:27 +02:00
Jason Rasmussen
8cefa0b84b refactor: migrate some e2e to medium (#17640) 2025-04-16 14:59:08 -04:00
Daniel Dietzler
f50e5d006c refactor: dedicated queries for asset jobs (#17652) 2025-04-16 14:08:49 -04:00
renovate[bot]
8f8ff3adc0 fix(deps): update machine-learning (#17610) 2025-04-16 10:56:40 -04:00
Zack Pollard
c4c35ed140 fix(ci): images missing correct OCI annotations and PR cache (#17378)
Co-authored-by: secustor <sebastian@poxhofer.at>
2025-04-15 22:31:23 +01:00
Nils Uliczka
be2f670d35 fix: skip places that no longer exist in geo import (#17637) 2025-04-15 21:27:47 +00:00
Alex
7efcba2b12 chore(mobile): flutter 3.29.3 (#17638)
* chore(mobile): flutter 3.29.3

* chore(mobile): flutter 3.29.3

* upgrade background_downloader
2025-04-15 21:03:22 +00:00
Paul Puschmann
459c815086 feat(docs): Clarify the usage of immich-cli with Docker (#17595)
Add some explanation how to use the various usage parameters together
with the `immich-cli` in the container.
2025-04-15 20:08:55 +00:00
Alex
36fa61c013 fix(mobile): new loading icon too small (#17636) 2025-04-15 20:08:34 +00:00
Jason Rasmussen
8da5f21fcf refactor: medium tests (#17634) 2025-04-15 15:54:23 -04:00
Jonathan Jogenfors
76db8cf604 refactor(server): remove asset placeholder (#17621)
chore: remove AssetEntityPlaceholder

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-04-15 15:53:49 -04:00
Daniel Dietzler
21becbf1b0 refactor: dedicated query for asset migration job (#17631) 2025-04-15 15:49:15 -04:00
Min Idzelis
26f0ea4cb5 feat: responsive controlbar (#17601) 2025-04-15 14:39:30 -05:00
Alex
19e5a6f68f chore(doc): translation instruction for mobile app (#17629) 2025-04-15 14:31:13 -05:00
shenlong
78f8e23834 fix(mobile): exif not updated on sync (#17633)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-04-15 14:30:58 -05:00
Daniel Dietzler
5bceefce75 refactor: stream assets for thumbnail job (#17623) 2025-04-15 19:53:28 +02:00
Jason Rasmussen
b710ad36f3 feat: upgrade kysely (#17630)
* feat: upgrade kysely

* chore: pr feedback
2025-04-15 13:26:56 -04:00
Daniel Dietzler
270d178a2e fix: unsafe cast (#17590) 2025-04-15 11:35:00 -05:00
Daniel Dietzler
309528c807 chore: upgrade package locks (#17626) 2025-04-15 11:34:21 -05:00
Toni
7c422363fb chore(mobile): clear the backup detail view when no backup is in progress (#17619)
Clear the backup detail view when no backup is in progress

* When no backup is in progress, display a simple "-" for the details in the upload file info, instead of the data of the last uploaded asset.
* This prevents confusion if a upload job is stuck or just finished.
2025-04-15 11:30:24 -05:00
Weblate (bot)
3eb316abea chore(web): cleanup unused translations (#17624) 2025-04-15 17:24:29 +01:00
renovate[bot]
b3371e16f2 fix(deps): update typescript-projects (#17611)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-15 15:55:03 +00:00
Alex
b2c903c000 feat(mobile): use Weblate for i18n (2) (#17620)
* feat(mobile): use Weblate for i18n (2)

* remove old translation files

* dedup keys

* remove migration report

* chore

* remove localizely.yml
2025-04-15 15:54:26 +00:00
Jason Rasmussen
17e720440d refactor: new asset-job repository (#17622)
* refactor: new asset-job repository

* fix: broken medium tests on main
2025-04-15 10:24:51 -04:00
Alex
a522130122 feat(mobile): use Weblate for i18n (1) (#17609) 2025-04-15 08:30:01 -05:00
Weblate (bot)
cecd9c24a4 chore(web): update translations (#17438)
Co-authored-by: Alex <rainbowpulp@gmail.com>
Co-authored-by: Andreas Johansen <andreas@josern.com>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: Ciprriann <cipriannebeja@gmail.com>
Co-authored-by: Eskuero <3skuero@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: GiannosOB <giannos2105@gmail.com>
Co-authored-by: Gustavo Batista <gustavo_prg@hotmail.com>
Co-authored-by: Happy <happygamernintendoswitch@gmail.com>
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com>
Co-authored-by: Josep Mengual <josep@truita.es>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: Leonard Baki <leonard.baki@gmail.com>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: Molnar Eduard <edimolnar@posteo.ro>
Co-authored-by: Nergis <me@nergis.dev>
Co-authored-by: Nghiem Long Phan <nghiemlong@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Stein-Aksel Basma <stein-aksel@basma.no>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: TheScientistPT <joao.ed.reis.gomes@gmail.com>
Co-authored-by: User 123456789 <w0g-1es-5qq@cld3.com>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: alexxss <rainbowpulp+weblate@gmail.com>
Co-authored-by: anton garcias <isaga.percompartir@gmail.com>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Co-authored-by: hachimaru <eugenereuh@gmail.com>
Co-authored-by: kylo32 <kylo32@gmail.com>
Co-authored-by: millallo <millallo@tiscali.it>
Co-authored-by: shiuh67 <shiuh.cheng@gmail.com>
Co-authored-by: stelle <itsazripp2@gmail.com>
Co-authored-by: szelek <janek.szelewicz@gmail.com>
Co-authored-by: timmy61109 <qazzxcasdqwewsxedc@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: xuars <yago.rana.gayoso@gmail.com>
2025-04-15 14:27:57 +01:00
Jason Rasmussen
f189c7b101 refactor: medium tests (#17599) 2025-04-15 08:53:14 -04:00
renovate[bot]
c5f087a3ca chore(deps): update mcr.microsoft.com/devcontainers/typescript-node:22 docker digest to a20b8a3 (#17606)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-15 12:56:00 +01:00
renovate[bot]
72f6d7791e chore(deps): update dependency @sveltejs/kit to v2.20.6 [security] (#17603)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-15 12:47:30 +01:00
renovate[bot]
f73fce1046 chore(deps): update base-image to v202504081114 (major) (#17613)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-15 12:47:10 +01:00
renovate[bot]
f2edcde1b2 chore(deps): update actions/create-github-app-token action to v2 (#17612)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-15 12:04:43 +01:00
renovate[bot]
9d0dd9dff8 chore(deps): update github-actions (#17605)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-15 12:03:45 +01:00
Mert
c3d10c5be2 refactor(server): non-nullable file metadata (#17598) 2025-04-15 12:03:31 +01:00
Andrei Mironov
bd92748ddd perf(mobile): optimize date loading with batch loading (#17240)
* perf(mobile): optimize date loading with batch loading

Introduce DateBatchLoader to reduce the number of database queries by loading dates in batches, improving performance when querying large lists.

* remove unused totalCount parameter from DateBatchLoader

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-04-14 19:06:36 +00:00
Toni
aad5c3bada chore(mobile): don't show drag scroll date in search page (#17594)
Dont show drag scroll date in search page

* When using the drag scroll, the date of the current image is shown. This is now made toggleable.
* For the mobile search result page, the display of the date is now disabled because the results are not sorted by date and therefore a display of the date is not desirable.
2025-04-14 14:03:18 -05:00
Jason Rasmussen
b2753103c6 chore: remove unused logger (#17593) 2025-04-14 15:01:49 -04:00
Aamir Azad
e3f3baadb0 fix(web): improve mobile web album viewer padding (#17575)
Reduce margin on mobile web album viewer
2025-04-14 13:46:53 -05:00
Daniel Dietzler
0b69d1c147 refactor: selected columns in queries (#17589) 2025-04-14 13:34:06 -05:00
Min Idzelis
5a51ad3622 fix: responsive: timeline glitch and keyboard-accessible scrubber (#17556)
* fix: responsive: timeline glitch

* lint

* fix margin-right on mobile

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-04-14 11:56:40 -05:00
AutisticShark
664c99278a feat(mobile): remove duplicated i18n file (#17591)
https://github.com/immich-app/immich/issues/8946

Co-authored-by: Cat <cat@nextpanel.dev>
2025-04-14 11:36:18 -05:00
Daniel Dietzler
184e142d87 refactor: migrate asset job status entity (#17560) 2025-04-14 12:21:56 +02:00
Andreas Tollkötter
8b00578c7b fix: read longitude and latitude when reverse geocoding is off (#17558) 2025-04-14 10:43:46 +01:00
Erik Nygren
7562088fac feat(server): parse EXIF creation time for some insta360 images (#17564)
It seems insta360 stores metadata in XMP GPano tags, with their own
non-standard and undocumented addition `SourceImageCreateTime`. For some
pictures this is the only EXIF tag containing a creation time.
2025-04-13 23:44:18 -04:00
Ben
79d4ce2d6d fix(web): search bar deactivates when focus exits (#17549)
* fix(web): search bar deactivates when focus exits

* fix: disable search bar on destroy

For example, on the search page. If the escape key is pressed while the advanced filters button is focused, the search page will close but the search bar will remain activated.
2025-04-13 22:43:50 -05:00
Min Idzelis
983f656a6b fix: in dev, delay web server start until api server is started (#17563) 2025-04-13 10:06:35 -04:00
Alex
ab2a7006f9 chore(mobile): small visual fix and update (#17547)
* chore(mobile): small visual fix and update

* update

* update

* remove design placeholder
2025-04-13 08:01:32 -05:00
Min Idzelis
1f18fe31f0 fix: occasional empty buckets, after canceled loads (#17552) 2025-04-13 07:50:24 -05:00
Daniel Dietzler
a373034629 refactor: migrate stacks (#17559)
chore: migrate stacks
2025-04-12 08:33:35 -04:00
renovate[bot]
5dac315af7 fix(deps): update dependency @nestjs/common to v11.0.16 [security] (#17557)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-12 12:31:18 +02:00
Min Idzelis
8309b73a02 fix: responsive: long press while scroll (#17555) 2025-04-11 18:28:36 -04:00
Min Idzelis
e440cbe353 feat: responsive-web: shrink mem-lane (#17550) 2025-04-11 17:10:58 -05:00
Daniel Dietzler
5548eb0dad fix: live photo hiding (#17548) 2025-04-11 17:09:58 -05:00
Min Idzelis
3bec8dc337 refactor: responsive: device units (#17551) 2025-04-11 17:09:10 -05:00
Min Idzelis
5bcb58c3e7 feat: responsive: skeleton (#17553)
feature: responsive: skeleton
2025-04-11 17:04:48 -05:00
Min Idzelis
c62fc155c8 feat: show thumbhash behind load error, if possible (#17554)
* feat: show thumbhash behind load error, if possible

* forgot this
2025-04-11 17:01:51 -05:00
Rudhra Raveendran
40e3322b25 docs: Add PowerShell example for running web client only (#17546)
Add PowerShell example for running web client only
2025-04-11 17:02:21 -04:00
Mert
25f2b9602f refactor(server): remove face, person and face search entities (#17535)
* remove face, person and face search entities

update tests and mappers

check if face relation exists

update sql

unused imports

* pr feedback

generate sql, remove unused imports
2025-04-11 14:44:45 -04:00
Jason Rasmussen
ae6653392e feat: view qr code from share modal (#17544) 2025-04-11 14:02:07 -04:00
Etienne
d7a782da34 feat: sync pictureFile with oidc if it isn't set already (#17397)
* feat: sync pictureFile with oidc if it isn't set already

fix: move picture writer to get userId

fix: move await promise to the top of the setPicure function before checking its value and automatically create the user folder

chore: code cleanup

* fix: extension double dot

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-04-11 13:00:39 -05:00
renovate[bot]
08b5952c87 chore(deps): update dependency vite to v6.2.6 [security] (#17541)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-11 13:56:01 -04:00
Jason Rasmussen
584e5894bf refactor: user factories instead of stubs (#17540) 2025-04-11 11:53:37 -04:00
Yaros
52d4b2fe57 fix(mobile): remove locate asset button from trashed asset (#17503)
* fix: remove locate asset button from trashed asset

* chore: refactor code
2025-04-11 09:41:10 -05:00
Ben
92f0973a46 fix(web): reset search history after logout (#17534)
fix(web): reset search suggestions after logout
2025-04-10 20:34:45 +00:00
Jason Rasmussen
75c83cb704 refactor: metadata stub (#17532) 2025-04-10 21:58:55 +02:00
Jason Rasmussen
0b22d3348e refactor: count all return type (#17529) 2025-04-10 14:38:49 -04:00
Alex
abde0fbe60 fix(web): mobile view double scroll layer (#17528) 2025-04-10 13:50:05 -04:00
Jason Rasmussen
eaa0e07329 refactor: asset files entity (#17527) 2025-04-10 13:26:27 -04:00
Mitchell Pleune
9fd2c5220d fix: test_sets_default_sess_options fails if compiling with globally enabled cuda (#17516)
Coming from nixos, this test fails when cuda is enabled. https://github.com/NixOS/nixpkgs/pull/382896

Solution as proposed by @mertalev
2025-04-10 13:06:33 -04:00
Snowknight26
7fcab4b251 feat(server): read additional lens exif tags (#17125)
* fix(server): read additional lens exif tags

* Update order of read tags

* Fix e2e test

* Fix e2e test

* Fix e2e test

* Fix e2e test

* Update test

* Filter unknown lens exif data

* Formatting fixes
2025-04-10 12:02:41 -05:00
Ben
e3995fb5f4 fix(web): increase sidebar breakpoint (#17436) 2025-04-10 12:00:30 -05:00
Alex
6d3f3d8616 refactor: convert download manager into a state class (#17491)
* fix(web): download progress bar not functioning

* remove unused method
2025-04-10 16:48:21 +00:00
Jason Rasmussen
4412680679 refactor: remove unused shared users list (#17526) 2025-04-10 11:44:47 -05:00
Brandon Wees
7df2c9c905 fix: patch-package install in docker build and better postgres patch (#17523)
* always patch package when running npm i, install immich CLI outside of directory so post install doesnt run

* handles case where query is an object and defined but origin is not.

* move patch-package from a dev dependency to a normal dependency. Also copy the patches folder for the docker build to use and patch with

* fix Dockerfile

* use query.reject instead of throw for queryError

* package-lock to reflect the dev dependency change

* dont throw the error, just provide an empty string for query.origin if it does not exist

* remove npm link and demote patch-package back to a dev dependency

* modify patch to add defensive check to catch queries that will fail to parse and reject
2025-04-10 12:43:35 -04:00
Daniel Dietzler
7a1e8ce6d8 chore: remove exif entity (#17499) 2025-04-10 12:36:29 -04:00
Jason Rasmussen
8aea07b750 refactor: album user entity (#17524) 2025-04-10 11:53:21 -04:00
Zack Pollard
94dba29298 refactor: remove user entity (#17498) 2025-04-10 10:53:21 -04:00
Rudhra Raveendran
9e49783e49 feat: use browser download manager for single file downloads (#17507)
* Fix download panel reactivity

* Directly download individual files without buffering in memory

* Fix shared link e2e download tests
2025-04-10 09:13:50 -05:00
renovate[bot]
43e3075f93 fix(deps): update machine-learning (#17455) 2025-04-09 16:20:11 +00:00
Zack Pollard
d03647904b refactor: remove move entity (#17489) 2025-04-09 11:54:20 -04:00
Jason Rasmussen
206545356d refactor: metadata entity (#17492) 2025-04-09 11:45:30 -04:00
renovate[bot]
3e372500b0 fix(deps): update typescript-projects (#17456)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-04-09 14:47:29 +00:00
Jason Rasmussen
8943ec23ba refactor: more database types (#17490) 2025-04-09 10:24:38 -04:00
Gagan Yadav
04b03f2924 fix(mobile): asset grid will infinitely scroll on iOS when select and… (#17469)
fix(mobile): asset grid will infinitely scroll on iOS when select and drag
2025-04-09 08:36:27 -05:00
Jason Rasmussen
cf2c0260a6 refactor: activity item (#17470)
* refactor: activity item

* fix query

* qualified columns

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-04-09 08:35:20 -04:00
Alex
ae8af84101 fix: no thumbnail generated for motion assets (#17472) 2025-04-08 16:07:10 -05:00
Jason Rasmussen
4794eeca88 refactor: database types (#17468) 2025-04-08 12:40:03 -04:00
Gagan Yadav
ac65d46ec6 fix(mobile): adds support for Internationalized Domain Name (IDN) (#17461) 2025-04-08 11:04:42 -05:00
Alex
e5ca79dd44 refactor: remove session entity (#17466)
* refactor: remove session entity

* fix: test

* update sql

* remote export
2025-04-08 16:04:07 +00:00
Jason Rasmussen
49be6d7fd8 refactor: more database enums (#17465) 2025-04-08 12:02:05 -04:00
Daniel Dietzler
15c6506aee fix: broken start/end dates on album update (#17467) 2025-04-08 15:47:44 +00:00
Jason Rasmussen
2c31a11e41 chore: replace generated enums with actual types (#17463) 2025-04-08 11:13:46 -04:00
Jason Rasmussen
b6c5a03533 refactor: remove tag entity (#17462) 2025-04-08 10:52:54 -04:00
Gagan Yadav
75bc32b47b fix(mobile): hide asset description text field if user is not owner (#17442)
* fix(mobile): hide asset description text field if user is not owner

* If user is not the owner and asset has no description then hide the text field

* Apply suggestions from code review

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

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-04-08 09:18:33 -05:00
Jason Rasmussen
fdbe6d649f refactor: remove smart search entity (#17447)
refactor: smart search entity
2025-04-08 09:56:45 -04:00
Aleksandr
2b131fe935 feat: opt-in sync of deletes and restores from web to Android (#16732)
* Features: Local file movement to trash and restoration back to the album added. (Android)

* Comments fixes

* settings button marked as [EXPERIMENTAL]

* _moveToTrashMatchedAssets refactored, moveToTrash renamed.

* fix: bad merge

* Permission check and request for local storage added.

* Permission request added on settings switcher

* Settings button logic changed

* Method channel file_trash moved to BackgroundServicePlugin

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-04-08 08:50:40 -05:00
snek
6ae24fbbd4 feat(web): improve individual share ux (#17430) 2025-04-08 09:11:37 -04:00
renovate[bot]
7f116d8e98 chore(deps): update mcr.microsoft.com/devcontainers/typescript-node:22 docker digest to b0b88ef (#17453)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-08 13:32:14 +01:00
renovate[bot]
bd0840c411 chore(deps): update github/codeql-action digest to 45775bd (#17452)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-08 13:31:57 +01:00
renovate[bot]
a5123dec1a chore(deps): update grafana/grafana docker tag to v11.6.0 (#17460)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-08 13:31:46 +01:00
renovate[bot]
ffd18c5459 chore(deps): update dependency @types/node to ^22.14.0 (#17459)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-08 12:14:30 +02:00
PyKen
8242ff9bab fix(server): Exclude album assets in shared link payload (#17207)
* fix(server): Exclude album assets in shared link payload

* Fix e2e test
2025-04-08 00:19:06 -04:00
Jason Rasmussen
8203b6c450 refactor: stop using geodata entity type (#17444) 2025-04-08 00:15:43 -04:00
Jason Rasmussen
b352cf3336 refactor: remove natural earth countries enity (#17445) 2025-04-08 00:15:16 -04:00
bo0tzz
96ed9a8c4a fix: restore mangled footnotes (#17446)
I broke this in #17257
2025-04-07 18:03:32 -04:00
Jason Rasmussen
e7a5b96ed0 feat: extension, triggers, functions, comments, parameters management in sql-tools (#17269)
feat: sql-tools extension, triggers, functions, comments, parameters
2025-04-07 15:12:12 -04:00
renovate[bot]
51c2c60231 chore(deps): update dependency vite to v6.2.5 [security] (#17391)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-07 16:35:29 +01:00
shenlong
43d585ce55 fix(mobile): exifInfo not updated on sync (#17407)
* fix(mobile): exifInfo not updated on sync

* add tests

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-04-07 10:21:37 -05:00
shenlong
042da669d1 fix(mobile): use custom filter to fetch asset path entities (#17344)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-04-07 09:39:24 -05:00
Yaros
a724f147fe fix(mobile): items not deselecting on back button (#17403)
* fix: items not deselecting on back button

* chore: add comments
2025-04-07 09:35:27 -05:00
Sebastian Schneider
1e4b9ae5b7 fix(mobile): video player restarting when device rotates (#17362)
* fix(mobile): Video player restarting when device rotates

* use global key in state

* Implement suggestions from code review
2025-04-07 09:26:08 -05:00
Ruben Hensen
99cddf1fd6 feat: allow accounts with a quota of 0 GiB (#17413)
* Allow 0GiB quotas in user create/edit form, remove unused translations

* Make requireQuota check for null or 0

* Add unlimited quota change to the docs

* Fix user dto formatting

* Fix formating edit-user-form

* Regenerate open-api files

* Revert unnecessary i18n file changes

* Re-add newline en.json

* Resolve linting issues

* Fix formatting edit-user-form

* Re-add manifest
2025-04-07 09:22:56 -05:00
Weblate (bot)
30d33f968f chore(web): update translations (#17254)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bi/
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/fa/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/gl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ka/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/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/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
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/te/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Bonov <bonov@mail.ru>
Co-authored-by: C D <chinnidiwakar5@gmail.com>
Co-authored-by: Daniel Correa Lobato <daniel@lobato.org>
Co-authored-by: Emre Saraçoğlu <hello@emresaracoglu.com>
Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Co-authored-by: GND <jehende@jehende.fr>
Co-authored-by: Gocha Gulua <gocha.gulua@gmail.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com>
Co-authored-by: Leigh van der merwe <palitu822@gmail.com>
Co-authored-by: LennartWeinzierl <lennart.weinzierl@gmx.de>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: Luis Peregrina <luis.a.peregrina@gmail.com>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Miki Mrvos <medolino2009@gmail.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Oleksandr Zhukov <aleksandr.a.zhukov@gmail.com>
Co-authored-by: Passawish Paktiwong <passawishp@outlook.com>
Co-authored-by: Petri Hämäläinen <petri.hamalainen@mailbox.org>
Co-authored-by: Ruben Hensen <ruben.hensen@protonmail.com>
Co-authored-by: Runskrift <anders@rimfrost.nu>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Stein-Aksel Basma <stein-aksel@basma.no>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Tachibana Saza <tachibanasaza@proton.me>
Co-authored-by: Temuri Doghonadze <temuri.doghonadze@gmail.com>
Co-authored-by: Theofilos Nikolaou <th.nikolaou@gmail.com>
Co-authored-by: User 123456789 <w0g-1es-5qq@cld3.com>
Co-authored-by: Vin <k3kelm4vw@mozmail.com>
Co-authored-by: aks-cadesign <aks@cadesignbase.dk>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: grgergo <gergo_g@proton.me>
Co-authored-by: late <late@users.noreply.hosted.weblate.org>
Co-authored-by: millallo <millallo@tiscali.it>
Co-authored-by: przmkg <przemek@gasinski.eu>
Co-authored-by: thehijacker <thehijacker@gmail.com>
Co-authored-by: timmy61109 <qazzxcasdqwewsxedc@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: xuars <yago.rana.gayoso@gmail.com>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
2025-04-07 12:28:59 +01:00
Ben McCann
31ee19181a chore(web): switch to writable derived one more place (#17399) 2025-04-06 22:05:47 -05:00
shenlong
b58a450152 fix(mobile): prevent unnecessary reload on multi user timeline (#17418)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-04-06 22:04:13 -05:00
Zlendy
b87ba6865b fix(web): Video memories are played at 100% volume instead of respecting user preference (#17424) 2025-04-06 22:03:19 -05:00
Lorenzo Montanari
565cceb323 docs: fixed a wrong path in CLI docs page (#17369)
docs: fixed a wrong path in CLI page
2025-04-06 22:00:10 -05:00
Matthew Momjian
f096dd0cc0 fix(deployment): warning for database on network share (#17412)
Update example.env
2025-04-06 10:09:54 +02:00
Daniel Dietzler
a3c3f9cfcb fix: reset memories on logout (#17405) 2025-04-05 13:09:56 -04:00
Mert
7b6a4be30c chore: use valkey (#17396)
use valkey
2025-04-04 17:46:46 -05:00
martin
720189e2c2 fix: improve initial loading time (#17379) 2025-04-04 17:04:52 -04:00
shenlong
dfab32c8f2 fix(mobile): ignore invalid store keys (#17370)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-04-03 22:35:50 -05:00
shenlong
60174d662d fix(mobile): bump isar maxSize (#17372) 2025-04-03 21:49:50 -05:00
bo0tzz
8b6a765e12 chore: remove demo box spec from README.md (#17367) 2025-04-03 18:09:29 -04:00
Zack Pollard
2248a38567 fix: missing index and geodata import process uses normal table (#17343)
* chore: add geodata indexes to table definitions

* chore: rename incorrectly name geodata index

* fix: import into geodata places with correct index names
2025-04-03 21:32:33 +01:00
shenlong
97e52c5156 refactor(mobile): device asset entity to use modified time (#17064)
* refactor: device asset entity to use modified time

* chore: cleanup

* refactor: remove album media dependency from hashservice

* refactor: return updated copy of asset

* add hash service tests

* chore: rename hash batch constants

* chore: log the number of assets processed during migration

* chore: more logs

* refactor: use lookup and more tests

* use sort approach

* refactor hash service to use for loop instead

* refactor: rename to getByIds

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-04-03 14:42:35 -05:00
Mert
e8b4ac0522 fix(web): use original image if web compatible (#17347)
* use original image if web compatible

* add e2e

* fix shared link handling

* handle redirect in e2e

* fix size not being passed to thumbnail url

* test fullsize in e2e
2025-04-03 09:01:41 -05:00
Alex
548298b0c7 chore: post release tasks (#17341) 2025-04-03 08:47:52 -04:00
Zack Pollard
40cff2893c fix: metadata service init failure should halt server startup (#17356) 2025-04-03 12:35:39 +01:00
Abhinav Valecha
b621281351 feat(server): Avoid face match with people born after file creation #4743 (#16918)
* feat(server): Avoid face matching with people born after file creation date (#4743)

* lint

* add medium tests for facial recognition

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-04-02 10:37:26 -05:00
Snowknight26
4336afd6bf fix(web): fix thumbnail hover link position (#16762)
* fix(web): don't show a scrollbar when hovering over the last row of images on the search page

* Format code

* Fix asset selection z-index

* Remove anchor overlay on mouseover

* Fix a test

* Fix merge

* Fix overlays

* fix merge

* fix stack thumbs in asset viewer

* fix dimmed bounds, animation

* lint

---------

Co-authored-by: Min Idzelis <min123@gmail.com>
2025-04-02 10:30:41 -05:00
shenlong
5a456ef277 feat(mobile): sqlite (#16861)
* refactor: user entity

* chore: rebase fixes

* refactor: remove int user Id

* refactor: migrate store userId from int to string

* refactor: rename uid to id

* feat: drift

* pr feedback

* refactor: move common overrides to mixin

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-04-02 08:58:17 -05:00
renovate[bot]
5cb5fcbf62 fix(deps): update machine-learning (#17286) 2025-04-02 03:57:19 +00:00
Alex
95e3b15776 fix(web): padding (#17320) 2025-04-01 23:32:54 -04:00
Ben
50335dc363 fix(web): menu button size (#17321)
Adjusting the menu button size, to match match the other buttons in the navigation bar.
2025-04-01 22:25:17 -05:00
Ben
6e62c09d84 feat(web): expand/collapse sidebar (#16768)
* feat: expand/collapse sidebar

* fix: general PR cleanup

- add skip link unit test
- remove unused tailwind styles
- adjust asset grid spacing
- fix event propogation

* fix: cleaning up event listeners

* fix: purchase modal and button on small screens

* fix: explicit tailwind classes

* fix: no animation on initial page load

* fix: sidebar spacing and reactivity

* chore: reverting changes to icons in nav and account info panel

* fix: remove left margin from the asset grid after merging in new timeline

* chore: extract search-bar changes for a separate PR

* fix: add margin to memories
2025-04-01 21:12:04 -05:00
github-actions
00d3b8d83a chore: version v1.131.3 2025-04-01 22:27:52 +00:00
Mert
d911b76c08 fix(server): use stat instead of exifinfo for file date metadata (#17311)
* use stat instead of filecreatedate

* update tests

* unused import
2025-04-01 17:24:07 -05:00
shenlong
502854cee1 fix(server): remove stacks on stack.deleteAll (#17288)
* fix(server): delete all stacks on deleteAll

* remove unnecessary assets update

* generate sql

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-04-01 17:20:43 -05:00
Mert
59e5c82569 fix(server): full-size images not migrated or deleted correctly (#17308)
* fix file path logic

* update tests

* add empty array fallback just in case for now
2025-04-01 18:11:46 -04:00
1029 changed files with 62776 additions and 56913 deletions

View File

@@ -1,4 +1,4 @@
ARG BASEIMAGE=mcr.microsoft.com/devcontainers/typescript-node:22@sha256:2ef23730ec68d8511ec8e6e0b82550ca728b256805d81f60ed890f3bfb21cfb9 ARG BASEIMAGE=mcr.microsoft.com/devcontainers/typescript-node:22@sha256:a20b8a3538313487ac9266875bbf733e544c1aa2091df2bb99ab592a6d4f7399
FROM ${BASEIMAGE} FROM ${BASEIMAGE}
# Flutter SDK # Flutter SDK

3
.gitattributes vendored
View File

@@ -6,6 +6,9 @@ mobile/openapi/**/*.dart linguist-generated=true
mobile/lib/**/*.g.dart -diff -merge mobile/lib/**/*.g.dart -diff -merge
mobile/lib/**/*.g.dart linguist-generated=true mobile/lib/**/*.g.dart linguist-generated=true
mobile/lib/**/*.drift.dart -diff -merge
mobile/lib/**/*.drift.dart linguist-generated=true
open-api/typescript-sdk/fetch-client.ts -diff -merge open-api/typescript-sdk/fetch-client.ts -diff -merge
open-api/typescript-sdk/fetch-client.ts linguist-generated=true open-api/typescript-sdk/fetch-client.ts linguist-generated=true

View File

@@ -7,6 +7,15 @@ on:
ref: ref:
required: false required: false
type: string type: string
secrets:
KEY_JKS:
required: true
ALIAS:
required: true
ANDROID_KEY_PASSWORD:
required: true
ANDROID_STORE_PASSWORD:
required: true
pull_request: pull_request:
push: push:
branches: [main] branches: [main]
@@ -15,14 +24,21 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true cancel-in-progress: true
permissions: {}
jobs: jobs:
pre-job: pre-job:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
outputs: outputs:
should_run: ${{ steps.found_paths.outputs.mobile == 'true' || steps.should_force.outputs.should_force == 'true' }} should_run: ${{ steps.found_paths.outputs.mobile == 'true' || steps.should_force.outputs.should_force == 'true' }}
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- id: found_paths - id: found_paths
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3 uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3
with: with:
@@ -38,24 +54,19 @@ jobs:
build-sign-android: build-sign-android:
name: Build and sign Android name: Build and sign Android
needs: pre-job needs: pre-job
permissions:
contents: read
# Skip when PR from a fork # Skip when PR from a fork
if: ${{ !github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' && needs.pre-job.outputs.should_run == 'true' }} if: ${{ !github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' && needs.pre-job.outputs.should_run == 'true' }}
runs-on: macos-14 runs-on: macos-14
steps: steps:
- name: Determine ref
id: get-ref
run: |
input_ref="${{ inputs.ref }}"
github_ref="${{ github.sha }}"
ref="${input_ref:-$github_ref}"
echo "ref=$ref" >> $GITHUB_OUTPUT
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with: with:
ref: ${{ steps.get-ref.outputs.ref }} ref: ${{ inputs.ref || github.sha }}
persist-credentials: false
- uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4 - uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4
with: with:
distribution: 'zulu' distribution: 'zulu'
java-version: '17' java-version: '17'
@@ -78,6 +89,10 @@ jobs:
working-directory: ./mobile working-directory: ./mobile
run: flutter pub get run: flutter pub get
- name: Generate translation file
run: make translation
working-directory: ./mobile
- name: Build Android App Bundle - name: Build Android App Bundle
working-directory: ./mobile working-directory: ./mobile
env: env:

View File

@@ -8,31 +8,38 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true cancel-in-progress: true
permissions: {}
jobs: jobs:
cleanup: cleanup:
name: Cleanup name: Cleanup
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
actions: write
steps: steps:
- name: Check out code - name: Check out code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Cleanup - name: Cleanup
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REF: ${{ github.ref }}
run: | run: |
gh extension install actions/gh-actions-cache gh extension install actions/gh-actions-cache
REPO=${{ github.repository }} REPO=${{ github.repository }}
BRANCH=${{ github.ref }}
echo "Fetching list of cache keys" echo "Fetching list of cache keys"
cacheKeysForPR=$(gh actions-cache list -R $REPO -B $BRANCH -L 100 | cut -f 1 ) cacheKeysForPR=$(gh actions-cache list -R $REPO -B ${REF} -L 100 | cut -f 1 )
## Setting this to not fail the workflow while deleting cache keys. ## Setting this to not fail the workflow while deleting cache keys.
set +e set +e
echo "Deleting caches..." echo "Deleting caches..."
for cacheKey in $cacheKeysForPR for cacheKey in $cacheKeysForPR
do do
gh actions-cache delete $cacheKey -R $REPO -B $BRANCH --confirm gh actions-cache delete $cacheKey -R "$REPO" -B "${REF}" --confirm
done done
echo "Done" echo "Done"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -16,21 +16,25 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true cancel-in-progress: true
permissions: permissions: {}
packages: write
jobs: jobs:
publish: publish:
name: CLI Publish name: CLI Publish
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
defaults: defaults:
run: run:
working-directory: ./cli working-directory: ./cli
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
# Setup .npmrc file to publish to npm # Setup .npmrc file to publish to npm
- uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4 - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with: with:
node-version-file: './cli/.nvmrc' node-version-file: './cli/.nvmrc'
registry-url: 'https://registry.npmjs.org' registry-url: 'https://registry.npmjs.org'
@@ -48,11 +52,16 @@ jobs:
docker: docker:
name: Docker name: Docker
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
packages: write
needs: publish needs: publish
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0 uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
@@ -87,7 +96,7 @@ jobs:
type=raw,value=latest,enable=${{ github.event_name == 'release' }} type=raw,value=latest,enable=${{ github.event_name == 'release' }}
- name: Build and push image - name: Build and push image
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0 uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.0
with: with:
file: cli/Dockerfile file: cli/Dockerfile
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64

View File

@@ -24,6 +24,8 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true cancel-in-progress: true
permissions: {}
jobs: jobs:
analyze: analyze:
name: Analyze name: Analyze
@@ -43,10 +45,12 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
# Initializes the CodeQL tools for scanning. # Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3 uses: github/codeql-action/init@28deaeda66b76a05916b6923827895f2b14ab387 # v3
with: with:
languages: ${{ matrix.language }} languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file. # If you wish to specify custom queries, you can do so here or in a config file.
@@ -59,7 +63,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below) # If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild - name: Autobuild
uses: github/codeql-action/autobuild@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3 uses: github/codeql-action/autobuild@28deaeda66b76a05916b6923827895f2b14ab387 # v3
# Command-line programs to run using the OS shell. # Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@@ -72,6 +76,6 @@ jobs:
# ./location_of_script_within_repo/buildscript.sh # ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3 uses: github/codeql-action/analyze@28deaeda66b76a05916b6923827895f2b14ab387 # v3
with: with:
category: '/language:${{matrix.language}}' category: '/language:${{matrix.language}}'

View File

@@ -12,18 +12,21 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true cancel-in-progress: true
permissions: permissions: {}
packages: write
jobs: jobs:
pre-job: pre-job:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
outputs: outputs:
should_run_server: ${{ steps.found_paths.outputs.server == 'true' || steps.should_force.outputs.should_force == 'true' }} should_run_server: ${{ steps.found_paths.outputs.server == 'true' || steps.should_force.outputs.should_force == 'true' }}
should_run_ml: ${{ steps.found_paths.outputs.machine-learning == 'true' || steps.should_force.outputs.should_force == 'true' }} should_run_ml: ${{ steps.found_paths.outputs.machine-learning == 'true' || steps.should_force.outputs.should_force == 'true' }}
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- id: found_paths - id: found_paths
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3 uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3
with: with:
@@ -45,6 +48,9 @@ jobs:
retag_ml: retag_ml:
name: Re-Tag ML name: Re-Tag ML
needs: pre-job needs: pre-job
permissions:
contents: read
packages: write
if: ${{ needs.pre-job.outputs.should_run_ml == 'false' && !github.event.pull_request.head.repo.fork }} if: ${{ needs.pre-job.outputs.should_run_ml == 'false' && !github.event.pull_request.head.repo.fork }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
@@ -58,18 +64,22 @@ jobs:
username: ${{ github.repository_owner }} username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}
- name: Re-tag image - name: Re-tag image
env:
REGISTRY_NAME: 'ghcr.io'
REPOSITORY: ${{ github.repository_owner }}/immich-machine-learning
TAG_OLD: main${{ matrix.suffix }}
TAG_PR: ${{ github.event.number == 0 && github.ref_name || format('pr-{0}', github.event.number) }}${{ matrix.suffix }}
TAG_COMMIT: commit-${{ github.event_name != 'pull_request' && github.sha || github.event.pull_request.head.sha }}${{ matrix.suffix }}
run: | run: |
REGISTRY_NAME="ghcr.io" docker buildx imagetools create -t "${REGISTRY_NAME}/${REPOSITORY}:${TAG_PR}" "${REGISTRY_NAME}/${REPOSITORY}:${TAG_OLD}"
REPOSITORY=${{ github.repository_owner }}/immich-machine-learning docker buildx imagetools create -t "${REGISTRY_NAME}/${REPOSITORY}:${TAG_COMMIT}" "${REGISTRY_NAME}/${REPOSITORY}:${TAG_OLD}"
TAG_OLD=main${{ matrix.suffix }}
TAG_PR=${{ github.event.number == 0 && github.ref_name || format('pr-{0}', github.event.number) }}${{ matrix.suffix }}
TAG_COMMIT=commit-${{ github.event_name != 'pull_request' && github.sha || github.event.pull_request.head.sha }}${{ matrix.suffix }}
docker buildx imagetools create -t $REGISTRY_NAME/$REPOSITORY:$TAG_PR $REGISTRY_NAME/$REPOSITORY:$TAG_OLD
docker buildx imagetools create -t $REGISTRY_NAME/$REPOSITORY:$TAG_COMMIT $REGISTRY_NAME/$REPOSITORY:$TAG_OLD
retag_server: retag_server:
name: Re-Tag Server name: Re-Tag Server
needs: pre-job needs: pre-job
permissions:
contents: read
packages: write
if: ${{ needs.pre-job.outputs.should_run_server == 'false' && !github.event.pull_request.head.repo.fork }} if: ${{ needs.pre-job.outputs.should_run_server == 'false' && !github.event.pull_request.head.repo.fork }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
@@ -83,18 +93,22 @@ jobs:
username: ${{ github.repository_owner }} username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}
- name: Re-tag image - name: Re-tag image
env:
REGISTRY_NAME: 'ghcr.io'
REPOSITORY: ${{ github.repository_owner }}/immich-server
TAG_OLD: main${{ matrix.suffix }}
TAG_PR: ${{ github.event.number == 0 && github.ref_name || format('pr-{0}', github.event.number) }}${{ matrix.suffix }}
TAG_COMMIT: commit-${{ github.event_name != 'pull_request' && github.sha || github.event.pull_request.head.sha }}${{ matrix.suffix }}
run: | run: |
REGISTRY_NAME="ghcr.io" docker buildx imagetools create -t "${REGISTRY_NAME}/${REPOSITORY}:${TAG_PR}" "${REGISTRY_NAME}/${REPOSITORY}:${TAG_OLD}"
REPOSITORY=${{ github.repository_owner }}/immich-server docker buildx imagetools create -t "${REGISTRY_NAME}/${REPOSITORY}:${TAG_COMMIT}" "${REGISTRY_NAME}/${REPOSITORY}:${TAG_OLD}"
TAG_OLD=main${{ matrix.suffix }}
TAG_PR=${{ github.event.number == 0 && github.ref_name || format('pr-{0}', github.event.number) }}${{ matrix.suffix }}
TAG_COMMIT=commit-${{ github.event_name != 'pull_request' && github.sha || github.event.pull_request.head.sha }}${{ matrix.suffix }}
docker buildx imagetools create -t $REGISTRY_NAME/$REPOSITORY:$TAG_PR $REGISTRY_NAME/$REPOSITORY:$TAG_OLD
docker buildx imagetools create -t $REGISTRY_NAME/$REPOSITORY:$TAG_COMMIT $REGISTRY_NAME/$REPOSITORY:$TAG_OLD
build_and_push_ml: build_and_push_ml:
name: Build and Push ML name: Build and Push ML
needs: pre-job needs: pre-job
permissions:
contents: read
packages: write
if: ${{ needs.pre-job.outputs.should_run_ml == 'true' }} if: ${{ needs.pre-job.outputs.should_run_ml == 'true' }}
runs-on: ${{ matrix.runner }} runs-on: ${{ matrix.runner }}
env: env:
@@ -148,6 +162,8 @@ jobs:
- name: Checkout - name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0 uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
@@ -161,11 +177,14 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}
- name: Generate cache key suffix - name: Generate cache key suffix
env:
REF: ${{ github.ref_name }}
run: | run: |
if [[ "${{ github.event_name }}" == "pull_request" ]]; then if [[ "${{ github.event_name }}" == "pull_request" ]]; then
echo "CACHE_KEY_SUFFIX=pr-${{ github.event.number }}" >> $GITHUB_ENV echo "CACHE_KEY_SUFFIX=pr-${{ github.event.number }}" >> $GITHUB_ENV
else else
echo "CACHE_KEY_SUFFIX=$(echo ${{ github.ref_name }} | sed 's/[^a-zA-Z0-9]/-/g')" >> $GITHUB_ENV SUFFIX=$(echo "${REF}" | sed 's/[^a-zA-Z0-9]/-/g')
echo "CACHE_KEY_SUFFIX=${SUFFIX}" >> $GITHUB_ENV
fi fi
- name: Generate cache target - name: Generate cache target
@@ -175,17 +194,23 @@ jobs:
# Essentially just ignore the cache output (forks can't write to registry cache) # Essentially just ignore the cache output (forks can't write to registry cache)
echo "cache-to=type=local,dest=/tmp/discard,ignore-error=true" >> $GITHUB_OUTPUT echo "cache-to=type=local,dest=/tmp/discard,ignore-error=true" >> $GITHUB_OUTPUT
else else
echo "cache-to=type=registry,ref=${{ env.GHCR_REPO }}-build-cache:${{ env.PLATFORM_PAIR }}-${{ matrix.device }}-${{ env.CACHE_KEY_SUFFIX }},mode=max,compression=zstd" >> $GITHUB_OUTPUT echo "cache-to=type=registry,ref=${GHCR_REPO}-build-cache:${PLATFORM_PAIR}-${{ matrix.device }}-${CACHE_KEY_SUFFIX},mode=max,compression=zstd" >> $GITHUB_OUTPUT
fi fi
- name: Generate docker image tags
id: meta
uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5
env:
DOCKER_METADATA_PR_HEAD_SHA: 'true'
- name: Build and push image - name: Build and push image
id: build id: build
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0 uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.0
with: with:
context: ${{ env.context }} context: ${{ env.context }}
file: ${{ env.file }} file: ${{ env.file }}
platforms: ${{ matrix.platforms }} platforms: ${{ matrix.platforms }}
labels: ${{ steps.metadata.outputs.labels }} labels: ${{ steps.meta.outputs.labels }}
cache-to: ${{ steps.cache-target.outputs.cache-to }} cache-to: ${{ steps.cache-target.outputs.cache-to }}
cache-from: | cache-from: |
type=registry,ref=${{ env.GHCR_REPO }}-build-cache:${{ env.PLATFORM_PAIR }}-${{ matrix.device }}-${{ env.CACHE_KEY_SUFFIX }} type=registry,ref=${{ env.GHCR_REPO }}-build-cache:${{ env.PLATFORM_PAIR }}-${{ matrix.device }}-${{ env.CACHE_KEY_SUFFIX }}
@@ -199,7 +224,7 @@ jobs:
BUILD_SOURCE_COMMIT=${{ github.sha }} BUILD_SOURCE_COMMIT=${{ github.sha }}
- name: Export digest - name: Export digest
run: | run: | # zizmor: ignore[template-injection]
mkdir -p ${{ runner.temp }}/digests mkdir -p ${{ runner.temp }}/digests
digest="${{ steps.build.outputs.digest }}" digest="${{ steps.build.outputs.digest }}"
touch "${{ runner.temp }}/digests/${digest#sha256:}" touch "${{ runner.temp }}/digests/${digest#sha256:}"
@@ -215,6 +240,10 @@ jobs:
merge_ml: merge_ml:
name: Merge & Push ML name: Merge & Push ML
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
actions: read
packages: write
if: ${{ needs.pre-job.outputs.should_run_ml == 'true' && !github.event.pull_request.head.repo.fork }} if: ${{ needs.pre-job.outputs.should_run_ml == 'true' && !github.event.pull_request.head.repo.fork }}
env: env:
GHCR_REPO: ghcr.io/${{ github.repository_owner }}/immich-machine-learning GHCR_REPO: ghcr.io/${{ github.repository_owner }}/immich-machine-learning
@@ -237,7 +266,7 @@ jobs:
- build_and_push_ml - build_and_push_ml
steps: steps:
- name: Download digests - name: Download digests
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4 uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
with: with:
path: ${{ runner.temp }}/digests path: ${{ runner.temp }}/digests
pattern: ml-digests-${{ matrix.device }}-* pattern: ml-digests-${{ matrix.device }}-*
@@ -287,12 +316,31 @@ jobs:
- name: Create manifest list and push - name: Create manifest list and push
working-directory: ${{ runner.temp }}/digests working-directory: ${{ runner.temp }}/digests
run: | run: |
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ # Process annotations
$(printf '${{ env.GHCR_REPO }}@sha256:%s ' *) declare -a ANNOTATIONS=()
if [[ -n "$DOCKER_METADATA_OUTPUT_JSON" ]]; then
while IFS= read -r annotation; do
# Extract key and value by removing the manifest: prefix
if [[ "$annotation" =~ ^manifest:(.+)=(.+)$ ]]; then
key="${BASH_REMATCH[1]}"
value="${BASH_REMATCH[2]}"
# Use array to properly handle arguments with spaces
ANNOTATIONS+=(--annotation "index:$key=$value")
fi
done < <(jq -r '.annotations[]' <<< "$DOCKER_METADATA_OUTPUT_JSON")
fi
TAGS=$(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
SOURCE_ARGS=$(printf "${GHCR_REPO}@sha256:%s " *)
docker buildx imagetools create $TAGS "${ANNOTATIONS[@]}" $SOURCE_ARGS
build_and_push_server: build_and_push_server:
name: Build and Push Server name: Build and Push Server
runs-on: ${{ matrix.runner }} runs-on: ${{ matrix.runner }}
permissions:
contents: read
packages: write
needs: pre-job needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_server == 'true' }} if: ${{ needs.pre-job.outputs.should_run_server == 'true' }}
env: env:
@@ -316,6 +364,8 @@ jobs:
- name: Checkout - name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3 uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3
@@ -329,11 +379,14 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}
- name: Generate cache key suffix - name: Generate cache key suffix
env:
REF: ${{ github.ref_name }}
run: | run: |
if [[ "${{ github.event_name }}" == "pull_request" ]]; then if [[ "${{ github.event_name }}" == "pull_request" ]]; then
echo "CACHE_KEY_SUFFIX=pr-${{ github.event.number }}" >> $GITHUB_ENV echo "CACHE_KEY_SUFFIX=pr-${{ github.event.number }}" >> $GITHUB_ENV
else else
echo "CACHE_KEY_SUFFIX=$(echo ${{ github.ref_name }} | sed 's/[^a-zA-Z0-9]/-/g')" >> $GITHUB_ENV SUFFIX=$(echo "${REF}" | sed 's/[^a-zA-Z0-9]/-/g')
echo "CACHE_KEY_SUFFIX=${SUFFIX}" >> $GITHUB_ENV
fi fi
- name: Generate cache target - name: Generate cache target
@@ -343,17 +396,23 @@ jobs:
# Essentially just ignore the cache output (forks can't write to registry cache) # Essentially just ignore the cache output (forks can't write to registry cache)
echo "cache-to=type=local,dest=/tmp/discard,ignore-error=true" >> $GITHUB_OUTPUT echo "cache-to=type=local,dest=/tmp/discard,ignore-error=true" >> $GITHUB_OUTPUT
else else
echo "cache-to=type=registry,ref=${{ env.GHCR_REPO }}-build-cache:${{ env.PLATFORM_PAIR }}-${{ matrix.device }}-${{ env.CACHE_KEY_SUFFIX }},mode=max,compression=zstd" >> $GITHUB_OUTPUT echo "cache-to=type=registry,ref=${GHCR_REPO}-build-cache:${PLATFORM_PAIR}-${CACHE_KEY_SUFFIX},mode=max,compression=zstd" >> $GITHUB_OUTPUT
fi fi
- name: Generate docker image tags
id: meta
uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5
env:
DOCKER_METADATA_PR_HEAD_SHA: 'true'
- name: Build and push image - name: Build and push image
id: build id: build
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0 uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.0
with: with:
context: ${{ env.context }} context: ${{ env.context }}
file: ${{ env.file }} file: ${{ env.file }}
platforms: ${{ matrix.platform }} platforms: ${{ matrix.platform }}
labels: ${{ steps.metadata.outputs.labels }} labels: ${{ steps.meta.outputs.labels }}
cache-to: ${{ steps.cache-target.outputs.cache-to }} cache-to: ${{ steps.cache-target.outputs.cache-to }}
cache-from: | cache-from: |
type=registry,ref=${{ env.GHCR_REPO }}-build-cache:${{ env.PLATFORM_PAIR }}-${{ env.CACHE_KEY_SUFFIX }} type=registry,ref=${{ env.GHCR_REPO }}-build-cache:${{ env.PLATFORM_PAIR }}-${{ env.CACHE_KEY_SUFFIX }}
@@ -367,7 +426,7 @@ jobs:
BUILD_SOURCE_COMMIT=${{ github.sha }} BUILD_SOURCE_COMMIT=${{ github.sha }}
- name: Export digest - name: Export digest
run: | run: | # zizmor: ignore[template-injection]
mkdir -p ${{ runner.temp }}/digests mkdir -p ${{ runner.temp }}/digests
digest="${{ steps.build.outputs.digest }}" digest="${{ steps.build.outputs.digest }}"
touch "${{ runner.temp }}/digests/${digest#sha256:}" touch "${{ runner.temp }}/digests/${digest#sha256:}"
@@ -383,6 +442,10 @@ jobs:
merge_server: merge_server:
name: Merge & Push Server name: Merge & Push Server
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
actions: read
packages: write
if: ${{ needs.pre-job.outputs.should_run_server == 'true' && !github.event.pull_request.head.repo.fork }} if: ${{ needs.pre-job.outputs.should_run_server == 'true' && !github.event.pull_request.head.repo.fork }}
env: env:
GHCR_REPO: ghcr.io/${{ github.repository_owner }}/immich-server GHCR_REPO: ghcr.io/${{ github.repository_owner }}/immich-server
@@ -391,7 +454,7 @@ jobs:
- build_and_push_server - build_and_push_server
steps: steps:
- name: Download digests - name: Download digests
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4 uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
with: with:
path: ${{ runner.temp }}/digests path: ${{ runner.temp }}/digests
pattern: server-digests-* pattern: server-digests-*
@@ -441,12 +504,29 @@ jobs:
- name: Create manifest list and push - name: Create manifest list and push
working-directory: ${{ runner.temp }}/digests working-directory: ${{ runner.temp }}/digests
run: | run: |
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ # Process annotations
$(printf '${{ env.GHCR_REPO }}@sha256:%s ' *) declare -a ANNOTATIONS=()
if [[ -n "$DOCKER_METADATA_OUTPUT_JSON" ]]; then
while IFS= read -r annotation; do
# Extract key and value by removing the manifest: prefix
if [[ "$annotation" =~ ^manifest:(.+)=(.+)$ ]]; then
key="${BASH_REMATCH[1]}"
value="${BASH_REMATCH[2]}"
# Use array to properly handle arguments with spaces
ANNOTATIONS+=(--annotation "index:$key=$value")
fi
done < <(jq -r '.annotations[]' <<< "$DOCKER_METADATA_OUTPUT_JSON")
fi
TAGS=$(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
SOURCE_ARGS=$(printf "${GHCR_REPO}@sha256:%s " *)
docker buildx imagetools create $TAGS "${ANNOTATIONS[@]}" $SOURCE_ARGS
success-check-server: success-check-server:
name: Docker Build & Push Server Success name: Docker Build & Push Server Success
needs: [merge_server, retag_server] needs: [merge_server, retag_server]
permissions: {}
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: always() if: always()
steps: steps:
@@ -455,11 +535,13 @@ jobs:
run: exit 1 run: exit 1
- name: All jobs passed or skipped - name: All jobs passed or skipped
if: ${{ !(contains(needs.*.result, 'failure')) }} if: ${{ !(contains(needs.*.result, 'failure')) }}
# zizmor: ignore[template-injection]
run: echo "All jobs passed or skipped" && echo "${{ toJSON(needs.*.result) }}" run: echo "All jobs passed or skipped" && echo "${{ toJSON(needs.*.result) }}"
success-check-ml: success-check-ml:
name: Docker Build & Push ML Success name: Docker Build & Push ML Success
needs: [merge_ml, retag_ml] needs: [merge_ml, retag_ml]
permissions: {}
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: always() if: always()
steps: steps:
@@ -468,4 +550,5 @@ jobs:
run: exit 1 run: exit 1
- name: All jobs passed or skipped - name: All jobs passed or skipped
if: ${{ !(contains(needs.*.result, 'failure')) }} if: ${{ !(contains(needs.*.result, 'failure')) }}
# zizmor: ignore[template-injection]
run: echo "All jobs passed or skipped" && echo "${{ toJSON(needs.*.result) }}" run: echo "All jobs passed or skipped" && echo "${{ toJSON(needs.*.result) }}"

View File

@@ -10,14 +10,20 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true cancel-in-progress: true
permissions: {}
jobs: jobs:
pre-job: pre-job:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
outputs: outputs:
should_run: ${{ steps.found_paths.outputs.docs == 'true' || steps.should_force.outputs.should_force == 'true' }} should_run: ${{ steps.found_paths.outputs.docs == 'true' || steps.should_force.outputs.should_force == 'true' }}
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- id: found_paths - id: found_paths
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3 uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3
with: with:
@@ -33,6 +39,8 @@ jobs:
build: build:
name: Docs Build name: Docs Build
needs: pre-job needs: pre-job
permissions:
contents: read
if: ${{ needs.pre-job.outputs.should_run == 'true' }} if: ${{ needs.pre-job.outputs.should_run == 'true' }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
defaults: defaults:
@@ -42,9 +50,11 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Setup Node - name: Setup Node
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with: with:
node-version-file: './docs/.nvmrc' node-version-file: './docs/.nvmrc'
@@ -62,4 +72,5 @@ jobs:
with: with:
name: docs-build-output name: docs-build-output
path: docs/build/ path: docs/build/
include-hidden-files: true
retention-days: 1 retention-days: 1

View File

@@ -1,6 +1,6 @@
name: Docs deploy name: Docs deploy
on: on:
workflow_run: workflow_run: # zizmor: ignore[dangerous-triggers] no attacker inputs are used here
workflows: ['Docs build'] workflows: ['Docs build']
types: types:
- completed - completed
@@ -9,6 +9,9 @@ jobs:
checks: checks:
name: Docs Deploy Checks name: Docs Deploy Checks
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
actions: read
pull-requests: read
outputs: outputs:
parameters: ${{ steps.parameters.outputs.result }} parameters: ${{ steps.parameters.outputs.result }}
artifact: ${{ steps.get-artifact.outputs.result }} artifact: ${{ steps.get-artifact.outputs.result }}
@@ -36,6 +39,8 @@ jobs:
- name: Determine deploy parameters - name: Determine deploy parameters
id: parameters id: parameters
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
env:
HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
with: with:
script: | script: |
const eventType = context.payload.workflow_run.event; const eventType = context.payload.workflow_run.event;
@@ -57,7 +62,8 @@ jobs:
} else if (eventType == "pull_request") { } else if (eventType == "pull_request") {
let pull_number = context.payload.workflow_run.pull_requests[0]?.number; let pull_number = context.payload.workflow_run.pull_requests[0]?.number;
if(!pull_number) { if(!pull_number) {
const response = await github.rest.search.issuesAndPullRequests({q: 'repo:${{ github.repository }} is:pr sha:${{ github.event.workflow_run.head_sha }}',per_page: 1,}) const {HEAD_SHA} = process.env;
const response = await github.rest.search.issuesAndPullRequests({q: `repo:${{ github.repository }} is:pr sha:${HEAD_SHA}`,per_page: 1,})
const items = response.data.items const items = response.data.items
if (items.length < 1) { if (items.length < 1) {
throw new Error("No pull request found for the commit") throw new Error("No pull request found for the commit")
@@ -95,30 +101,36 @@ jobs:
name: Docs Deploy name: Docs Deploy
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: checks needs: checks
permissions:
contents: read
actions: read
pull-requests: write
if: ${{ fromJson(needs.checks.outputs.artifact).found && fromJson(needs.checks.outputs.parameters).shouldDeploy }} if: ${{ fromJson(needs.checks.outputs.artifact).found && fromJson(needs.checks.outputs.parameters).shouldDeploy }}
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Load parameters - name: Load parameters
id: parameters id: parameters
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
env:
PARAM_JSON: ${{ needs.checks.outputs.parameters }}
with: with:
script: | script: |
const json = `${{ needs.checks.outputs.parameters }}`; const parameters = JSON.parse(process.env.PARAM_JSON);
const parameters = JSON.parse(json);
core.setOutput("event", parameters.event); core.setOutput("event", parameters.event);
core.setOutput("name", parameters.name); core.setOutput("name", parameters.name);
core.setOutput("shouldDeploy", parameters.shouldDeploy); core.setOutput("shouldDeploy", parameters.shouldDeploy);
- run: |
echo "Starting docs deployment for ${{ steps.parameters.outputs.event }} ${{ steps.parameters.outputs.name }}"
- name: Download artifact - name: Download artifact
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
env:
ARTIFACT_JSON: ${{ needs.checks.outputs.artifact }}
with: with:
script: | script: |
let artifact = ${{ needs.checks.outputs.artifact }}; let artifact = JSON.parse(process.env.ARTIFACT_JSON);
let download = await github.rest.actions.downloadArtifact({ let download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner, owner: context.repo.owner,
repo: context.repo.repo, repo: context.repo.repo,
@@ -162,9 +174,11 @@ jobs:
- name: Output Cleaning - name: Output Cleaning
id: clean id: clean
env:
TG_OUTPUT: ${{ steps.docs-output.outputs.tg_action_output }}
run: | run: |
TG_OUT=$(echo '${{ steps.docs-output.outputs.tg_action_output }}' | sed 's|%0A|\n|g ; s|%3C|<|g' | jq -c .) CLEANED=$(echo "$TG_OUTPUT" | sed 's|%0A|\n|g ; s|%3C|<|g' | jq -c .)
echo "output=$TG_OUT" >> $GITHUB_OUTPUT echo "output=$CLEANED" >> $GITHUB_OUTPUT
- name: Publish to Cloudflare Pages - name: Publish to Cloudflare Pages
uses: cloudflare/pages-action@f0a1cd58cd66095dee69bfa18fa5efd1dde93bca # v1 uses: cloudflare/pages-action@f0a1cd58cd66095dee69bfa18fa5efd1dde93bca # v1

View File

@@ -1,15 +1,22 @@
name: Docs destroy name: Docs destroy
on: on:
pull_request_target: pull_request_target: # zizmor: ignore[dangerous-triggers] no attacker inputs are used here
types: [closed] types: [closed]
permissions: {}
jobs: jobs:
deploy: deploy:
name: Docs Destroy name: Docs Destroy
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Destroy Docs Subdomain - name: Destroy Docs Subdomain
env: env:

View File

@@ -4,16 +4,19 @@ on:
pull_request: pull_request:
types: [labeled] types: [labeled]
permissions: {}
jobs: jobs:
fix-formatting: fix-formatting:
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: ${{ github.event.label.name == 'fix:formatting' }} if: ${{ github.event.label.name == 'fix:formatting' }}
permissions: permissions:
contents: write
pull-requests: write pull-requests: write
steps: steps:
- name: Generate a token - name: Generate a token
id: generate-token id: generate-token
uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1 uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2
with: with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }} app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
@@ -23,9 +26,10 @@ jobs:
with: with:
ref: ${{ github.event.pull_request.head.ref }} ref: ${{ github.event.pull_request.head.ref }}
token: ${{ steps.generate-token.outputs.token }} token: ${{ steps.generate-token.outputs.token }}
persist-credentials: true
- name: Setup Node - name: Setup Node
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with: with:
node-version-file: './server/.nvmrc' node-version-file: './server/.nvmrc'

View File

@@ -1,9 +1,11 @@
name: PR Label Validation name: PR Label Validation
on: on:
pull_request_target: pull_request_target: # zizmor: ignore[dangerous-triggers] no attacker inputs are used here
types: [opened, labeled, unlabeled, synchronize] types: [opened, labeled, unlabeled, synchronize]
permissions: {}
jobs: jobs:
validate-release-label: validate-release-label:
runs-on: ubuntu-latest runs-on: ubuntu-latest

View File

@@ -1,6 +1,8 @@
name: 'Pull Request Labeler' name: 'Pull Request Labeler'
on: on:
- pull_request_target - pull_request_target # zizmor: ignore[dangerous-triggers] no attacker inputs are used here
permissions: {}
jobs: jobs:
labeler: labeler:

View File

@@ -4,9 +4,13 @@ on:
pull_request: pull_request:
types: [opened, synchronize, reopened, edited] types: [opened, synchronize, reopened, edited]
permissions: {}
jobs: jobs:
validate-pr-title: validate-pr-title:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
pull-requests: write
steps: steps:
- name: PR Conventional Commit Validation - name: PR Conventional Commit Validation
uses: ytanikin/PRConventionalCommits@b628c5a234cc32513014b7bfdd1e47b532124d98 # 1.3.0 uses: ytanikin/PRConventionalCommits@b628c5a234cc32513014b7bfdd1e47b532124d98 # 1.3.0

View File

@@ -21,17 +21,18 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-root group: ${{ github.workflow }}-${{ github.ref }}-root
cancel-in-progress: true cancel-in-progress: true
permissions: {}
jobs: jobs:
bump_version: bump_version:
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:
ref: ${{ steps.push-tag.outputs.commit_long_sha }} ref: ${{ steps.push-tag.outputs.commit_long_sha }}
permissions: {} # No job-level permissions are needed because it uses the app-token
steps: steps:
- name: Generate a token - name: Generate a token
id: generate-token id: generate-token
uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1 uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2
with: with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }} app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
@@ -40,12 +41,16 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with: with:
token: ${{ steps.generate-token.outputs.token }} token: ${{ steps.generate-token.outputs.token }}
persist-credentials: true
- name: Install uv - name: Install uv
uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5 uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5
- name: Bump version - name: Bump version
run: misc/release/pump-version.sh -s "${{ inputs.serverBump }}" -m "${{ inputs.mobileBump }}" env:
SERVER_BUMP: ${{ inputs.serverBump }}
MOBILE_BUMP: ${{ inputs.mobileBump }}
run: misc/release/pump-version.sh -s "${SERVER_BUMP}" -m "${MOBILE_BUMP}"
- name: Commit and tag - name: Commit and tag
id: push-tag id: push-tag
@@ -59,18 +64,26 @@ jobs:
build_mobile: build_mobile:
uses: ./.github/workflows/build-mobile.yml uses: ./.github/workflows/build-mobile.yml
needs: bump_version needs: bump_version
secrets: inherit permissions:
contents: read
secrets:
KEY_JKS: ${{ secrets.KEY_JKS }}
ALIAS: ${{ secrets.ALIAS }}
ANDROID_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }}
ANDROID_STORE_PASSWORD: ${{ secrets.ANDROID_STORE_PASSWORD }}
with: with:
ref: ${{ needs.bump_version.outputs.ref }} ref: ${{ needs.bump_version.outputs.ref }}
prepare_release: prepare_release:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: build_mobile needs: build_mobile
permissions:
actions: read # To download the app artifact
# No content permissions are needed because it uses the app-token
steps: steps:
- name: Generate a token - name: Generate a token
id: generate-token id: generate-token
uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1 uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2
with: with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }} app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
@@ -79,17 +92,19 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with: with:
token: ${{ steps.generate-token.outputs.token }} token: ${{ steps.generate-token.outputs.token }}
persist-credentials: false
- name: Download APK - name: Download APK
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4 uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
with: with:
name: release-apk-signed name: release-apk-signed
- name: Create draft release - name: Create draft release
uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda # v2 uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2
with: with:
draft: true draft: true
tag_name: ${{ env.IMMICH_VERSION }} tag_name: ${{ env.IMMICH_VERSION }}
token: ${{ steps.generate-token.outputs.token }}
generate_release_notes: true generate_release_notes: true
body_path: misc/release/notes.tmpl body_path: misc/release/notes.tmpl
files: | files: |

View File

@@ -4,6 +4,8 @@ on:
pull_request: pull_request:
types: [labeled, closed] types: [labeled, closed]
permissions: {}
jobs: jobs:
comment-status: comment-status:
runs-on: ubuntu-latest runs-on: ubuntu-latest

View File

@@ -4,20 +4,24 @@ on:
release: release:
types: [published] types: [published]
permissions: permissions: {}
packages: write
jobs: jobs:
publish: publish:
name: Publish `@immich/sdk` name: Publish `@immich/sdk`
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
defaults: defaults:
run: run:
working-directory: ./open-api/typescript-sdk working-directory: ./open-api/typescript-sdk
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
# Setup .npmrc file to publish to npm # Setup .npmrc file to publish to npm
- uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4 - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with: with:
node-version-file: './open-api/typescript-sdk/.nvmrc' node-version-file: './open-api/typescript-sdk/.nvmrc'
registry-url: 'https://registry.npmjs.org' registry-url: 'https://registry.npmjs.org'

View File

@@ -9,14 +9,20 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true cancel-in-progress: true
permissions: {}
jobs: jobs:
pre-job: pre-job:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
outputs: outputs:
should_run: ${{ steps.found_paths.outputs.mobile == 'true' || steps.should_force.outputs.should_force == 'true' }} should_run: ${{ steps.found_paths.outputs.mobile == 'true' || steps.should_force.outputs.should_force == 'true' }}
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- id: found_paths - id: found_paths
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3 uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3
with: with:
@@ -33,12 +39,14 @@ jobs:
name: Run Dart Code Analysis name: Run Dart Code Analysis
needs: pre-job needs: pre-job
if: ${{ needs.pre-job.outputs.should_run == 'true' }} if: ${{ needs.pre-job.outputs.should_run == 'true' }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Setup Flutter SDK - name: Setup Flutter SDK
uses: subosito/flutter-action@e938fdf56512cc96ef2f93601a5a40bde3801046 # v2 uses: subosito/flutter-action@e938fdf56512cc96ef2f93601a5a40bde3801046 # v2
@@ -50,6 +58,10 @@ jobs:
run: dart pub get run: dart pub get
working-directory: ./mobile working-directory: ./mobile
- name: Generate translation file
run: make translation; dart format lib/generated/codegen_loader.g.dart
working-directory: ./mobile
- name: Run Build Runner - name: Run Build Runner
run: make build run: make build
working-directory: ./mobile working-directory: ./mobile
@@ -65,9 +77,11 @@ jobs:
- name: Verify files have not changed - name: Verify files have not changed
if: steps.verify-changed-files.outputs.files_changed == 'true' if: steps.verify-changed-files.outputs.files_changed == 'true'
env:
CHANGED_FILES: ${{ steps.verify-changed-files.outputs.changed_files }}
run: | run: |
echo "ERROR: Generated files not up to date! Run make_build inside the mobile directory" echo "ERROR: Generated files not up to date! Run make_build inside the mobile directory"
echo "Changed files: ${{ steps.verify-changed-files.outputs.changed_files }}" echo "Changed files: ${CHANGED_FILES}"
exit 1 exit 1
- name: Run dart analyze - name: Run dart analyze
@@ -81,3 +95,30 @@ jobs:
- name: Run dart custom_lint - name: Run dart custom_lint
run: dart run custom_lint run: dart run custom_lint
working-directory: ./mobile working-directory: ./mobile
zizmor:
name: zizmor
runs-on: ubuntu-latest
permissions:
security-events: write
contents: read
actions: read
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Install the latest version of uv
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5
- name: Run zizmor 🌈
run: uvx zizmor --format=sarif . > results.sarif
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload SARIF file
uses: github/codeql-action/upload-sarif@28deaeda66b76a05916b6923827895f2b14ab387 # v3
with:
sarif_file: results.sarif
category: zizmor

View File

@@ -9,9 +9,13 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true cancel-in-progress: true
permissions: {}
jobs: jobs:
pre-job: pre-job:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
outputs: outputs:
should_run_web: ${{ steps.found_paths.outputs.web == 'true' || steps.should_force.outputs.should_force == 'true' }} should_run_web: ${{ steps.found_paths.outputs.web == 'true' || steps.should_force.outputs.should_force == 'true' }}
should_run_server: ${{ steps.found_paths.outputs.server == 'true' || steps.should_force.outputs.should_force == 'true' }} should_run_server: ${{ steps.found_paths.outputs.server == 'true' || steps.should_force.outputs.should_force == 'true' }}
@@ -25,6 +29,9 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- id: found_paths - id: found_paths
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3 uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3
with: with:
@@ -58,6 +65,8 @@ jobs:
needs: pre-job needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_server == 'true' }} if: ${{ needs.pre-job.outputs.should_run_server == 'true' }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
defaults: defaults:
run: run:
working-directory: ./server working-directory: ./server
@@ -65,9 +74,11 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Setup Node - name: Setup Node
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with: with:
node-version-file: './server/.nvmrc' node-version-file: './server/.nvmrc'
@@ -95,6 +106,8 @@ jobs:
needs: pre-job needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_cli == 'true' }} if: ${{ needs.pre-job.outputs.should_run_cli == 'true' }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
defaults: defaults:
run: run:
working-directory: ./cli working-directory: ./cli
@@ -102,9 +115,11 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Setup Node - name: Setup Node
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with: with:
node-version-file: './cli/.nvmrc' node-version-file: './cli/.nvmrc'
@@ -136,6 +151,8 @@ jobs:
needs: pre-job needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_cli == 'true' }} if: ${{ needs.pre-job.outputs.should_run_cli == 'true' }}
runs-on: windows-latest runs-on: windows-latest
permissions:
contents: read
defaults: defaults:
run: run:
working-directory: ./cli working-directory: ./cli
@@ -143,9 +160,11 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Setup Node - name: Setup Node
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with: with:
node-version-file: './cli/.nvmrc' node-version-file: './cli/.nvmrc'
@@ -165,11 +184,13 @@ jobs:
run: npm run test:cov run: npm run test:cov
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
web-unit-tests: web-lint:
name: Test & Lint Web name: Lint Web
needs: pre-job needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_web == 'true' }} if: ${{ needs.pre-job.outputs.should_run_web == 'true' }}
runs-on: ubuntu-latest runs-on: mich
permissions:
contents: read
defaults: defaults:
run: run:
working-directory: ./web working-directory: ./web
@@ -177,9 +198,11 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Setup Node - name: Setup Node
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with: with:
node-version-file: './web/.nvmrc' node-version-file: './web/.nvmrc'
@@ -191,7 +214,7 @@ jobs:
run: npm ci run: npm ci
- name: Run linter - name: Run linter
run: npm run lint run: npm run lint:p
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Run formatter - name: Run formatter
@@ -202,6 +225,35 @@ jobs:
run: npm run check:svelte run: npm run check:svelte
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
web-unit-tests:
name: Test Web
needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_web == 'true' }}
runs-on: ubuntu-latest
permissions:
contents: read
defaults:
run:
working-directory: ./web
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version-file: './web/.nvmrc'
- name: Run setup typescript-sdk
run: npm ci && npm run build
working-directory: ./open-api/typescript-sdk
- name: Run npm install
run: npm ci
- name: Run tsc - name: Run tsc
run: npm run check:typescript run: npm run check:typescript
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
@@ -215,6 +267,8 @@ jobs:
needs: pre-job needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_e2e == 'true' }} if: ${{ needs.pre-job.outputs.should_run_e2e == 'true' }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
defaults: defaults:
run: run:
working-directory: ./e2e working-directory: ./e2e
@@ -222,9 +276,11 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Setup Node - name: Setup Node
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with: with:
node-version-file: './e2e/.nvmrc' node-version-file: './e2e/.nvmrc'
@@ -254,6 +310,8 @@ jobs:
needs: pre-job needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_server == 'true' }} if: ${{ needs.pre-job.outputs.should_run_server == 'true' }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
defaults: defaults:
run: run:
working-directory: ./server working-directory: ./server
@@ -261,9 +319,11 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Setup Node - name: Setup Node
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with: with:
node-version-file: './server/.nvmrc' node-version-file: './server/.nvmrc'
@@ -278,19 +338,25 @@ jobs:
name: End-to-End Tests (Server & CLI) name: End-to-End Tests (Server & CLI)
needs: pre-job needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_e2e_server_cli == 'true' }} if: ${{ needs.pre-job.outputs.should_run_e2e_server_cli == 'true' }}
runs-on: mich runs-on: ${{ matrix.runner }}
permissions:
contents: read
defaults: defaults:
run: run:
working-directory: ./e2e working-directory: ./e2e
strategy:
matrix:
runner: [mich, ubuntu-24.04-arm]
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with: with:
persist-credentials: false
submodules: 'recursive' submodules: 'recursive'
- name: Setup Node - name: Setup Node
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with: with:
node-version-file: './e2e/.nvmrc' node-version-file: './e2e/.nvmrc'
@@ -320,19 +386,25 @@ jobs:
name: End-to-End Tests (Web) name: End-to-End Tests (Web)
needs: pre-job needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_e2e_web == 'true' }} if: ${{ needs.pre-job.outputs.should_run_e2e_web == 'true' }}
runs-on: mich runs-on: ${{ matrix.runner }}
permissions:
contents: read
defaults: defaults:
run: run:
working-directory: ./e2e working-directory: ./e2e
strategy:
matrix:
runner: [mich, ubuntu-24.04-arm]
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with: with:
persist-credentials: false
submodules: 'recursive' submodules: 'recursive'
- name: Setup Node - name: Setup Node
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with: with:
node-version-file: './e2e/.nvmrc' node-version-file: './e2e/.nvmrc'
@@ -357,13 +429,33 @@ jobs:
run: npx playwright test run: npx playwright test
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
success-check-e2e:
name: End-to-End Tests Success
needs: [e2e-tests-server-cli, e2e-tests-web]
permissions: {}
runs-on: ubuntu-latest
if: always()
steps:
- name: Any jobs failed?
if: ${{ contains(needs.*.result, 'failure') }}
run: exit 1
- name: All jobs passed or skipped
if: ${{ !(contains(needs.*.result, 'failure')) }}
# zizmor: ignore[template-injection]
run: echo "All jobs passed or skipped" && echo "${{ toJSON(needs.*.result) }}"
mobile-unit-tests: mobile-unit-tests:
name: Unit Test Mobile name: Unit Test Mobile
needs: pre-job needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_mobile == 'true' }} if: ${{ needs.pre-job.outputs.should_run_mobile == 'true' }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Setup Flutter SDK - name: Setup Flutter SDK
uses: subosito/flutter-action@e938fdf56512cc96ef2f93601a5a40bde3801046 # v2 uses: subosito/flutter-action@e938fdf56512cc96ef2f93601a5a40bde3801046 # v2
with: with:
@@ -378,14 +470,19 @@ jobs:
needs: pre-job needs: pre-job
if: ${{ needs.pre-job.outputs.should_run_ml == 'true' }} if: ${{ needs.pre-job.outputs.should_run_ml == 'true' }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
defaults: defaults:
run: run:
working-directory: ./machine-learning working-directory: ./machine-learning
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Install uv - name: Install uv
uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5 uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5 - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
# TODO: add caching when supported (https://github.com/actions/setup-python/pull/818) # TODO: add caching when supported (https://github.com/actions/setup-python/pull/818)
# with: # with:
# python-version: 3.11 # python-version: 3.11
@@ -411,6 +508,8 @@ jobs:
needs: pre-job needs: pre-job
if: ${{ needs.pre-job.outputs['should_run_.github'] == 'true' }} if: ${{ needs.pre-job.outputs['should_run_.github'] == 'true' }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
defaults: defaults:
run: run:
working-directory: ./.github working-directory: ./.github
@@ -418,9 +517,11 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Setup Node - name: Setup Node
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with: with:
node-version-file: './.github/.nvmrc' node-version-file: './.github/.nvmrc'
@@ -434,25 +535,34 @@ jobs:
shellcheck: shellcheck:
name: ShellCheck name: ShellCheck
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Run ShellCheck - name: Run ShellCheck
uses: ludeeus/action-shellcheck@master uses: ludeeus/action-shellcheck@master
with: with:
ignore_paths: >- ignore_paths: >-
**/open-api/** **/open-api/**
**/openapi/** **/openapi**
**/node_modules/** **/node_modules/**
generated-api-up-to-date: generated-api-up-to-date:
name: OpenAPI Clients name: OpenAPI Clients
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Setup Node - name: Setup Node
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with: with:
node-version-file: './server/.nvmrc' node-version-file: './server/.nvmrc'
@@ -476,14 +586,18 @@ jobs:
- name: Verify files have not changed - name: Verify files have not changed
if: steps.verify-changed-files.outputs.files_changed == 'true' if: steps.verify-changed-files.outputs.files_changed == 'true'
env:
CHANGED_FILES: ${{ steps.verify-changed-files.outputs.changed_files }}
run: | run: |
echo "ERROR: Generated files not up to date!" echo "ERROR: Generated files not up to date!"
echo "Changed files: ${{ steps.verify-changed-files.outputs.changed_files }}" echo "Changed files: ${CHANGED_FILES}"
exit 1 exit 1
generated-typeorm-migrations-up-to-date: generated-typeorm-migrations-up-to-date:
name: TypeORM Checks name: TypeORM Checks
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
services: services:
postgres: postgres:
image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52 image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52
@@ -505,9 +619,11 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- name: Setup Node - name: Setup Node
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with: with:
node-version-file: './server/.nvmrc' node-version-file: './server/.nvmrc'
@@ -518,10 +634,10 @@ jobs:
run: npm run build run: npm run build
- name: Run existing migrations - name: Run existing migrations
run: npm run typeorm:migrations:run run: npm run migrations:run
- name: Test npm run schema:reset command works - name: Test npm run schema:reset command works
run: npm run typeorm:schema:reset run: npm run schema:reset
- name: Generate new migrations - name: Generate new migrations
continue-on-error: true continue-on-error: true
@@ -532,12 +648,14 @@ jobs:
id: verify-changed-files id: verify-changed-files
with: with:
files: | files: |
server/src/migrations/ server/src
- name: Verify migration files have not changed - name: Verify migration files have not changed
if: steps.verify-changed-files.outputs.files_changed == 'true' if: steps.verify-changed-files.outputs.files_changed == 'true'
env:
CHANGED_FILES: ${{ steps.verify-changed-files.outputs.changed_files }}
run: | run: |
echo "ERROR: Generated migration files not up to date!" echo "ERROR: Generated migration files not up to date!"
echo "Changed files: ${{ steps.verify-changed-files.outputs.changed_files }}" echo "Changed files: ${CHANGED_FILES}"
cat ./src/*-TestMigration.ts cat ./src/*-TestMigration.ts
exit 1 exit 1
@@ -555,9 +673,11 @@ jobs:
- name: Verify SQL files have not changed - name: Verify SQL files have not changed
if: steps.verify-changed-sql-files.outputs.files_changed == 'true' if: steps.verify-changed-sql-files.outputs.files_changed == 'true'
env:
CHANGED_FILES: ${{ steps.verify-changed-sql-files.outputs.changed_files }}
run: | run: |
echo "ERROR: Generated SQL files not up to date!" echo "ERROR: Generated SQL files not up to date!"
echo "Changed files: ${{ steps.verify-changed-sql-files.outputs.changed_files }}" echo "Changed files: ${CHANGED_FILES}"
exit 1 exit 1
# mobile-integration-tests: # mobile-integration-tests:

View File

@@ -4,30 +4,32 @@ on:
pull_request: pull_request:
branches: [main] branches: [main]
permissions: {}
jobs: jobs:
pre-job: pre-job:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
outputs: outputs:
should_run: ${{ steps.found_paths.outputs.i18n == 'true' && github.head_ref != 'chore/translations'}} should_run: ${{ steps.found_paths.outputs.i18n == 'true' && github.head_ref != 'chore/translations'}}
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
persist-credentials: false
- id: found_paths - id: found_paths
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3 uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3
with: with:
filters: | filters: |
i18n: i18n:
- 'i18n/!(en)**\.json' - 'i18n/!(en)**\.json'
- name: Debug
run: |
echo "Should run: ${{ steps.found_paths.outputs.i18n == 'true' && github.head_ref != 'chore/translations'}}"
echo "Found i18n paths: ${{ steps.found_paths.outputs.i18n }}"
echo "Head ref: ${{ github.head_ref }}"
enforce-lock: enforce-lock:
name: Check Weblate Lock name: Check Weblate Lock
needs: [pre-job] needs: [pre-job]
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: {}
if: ${{ needs.pre-job.outputs.should_run == 'true' }} if: ${{ needs.pre-job.outputs.should_run == 'true' }}
steps: steps:
- name: Check weblate lock - name: Check weblate lock
@@ -47,6 +49,7 @@ jobs:
name: Weblate Lock Check Success name: Weblate Lock Check Success
needs: [enforce-lock] needs: [enforce-lock]
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: {}
if: always() if: always()
steps: steps:
- name: Any jobs failed? - name: Any jobs failed?
@@ -54,4 +57,5 @@ jobs:
run: exit 1 run: exit 1
- name: All jobs passed or skipped - name: All jobs passed or skipped
if: ${{ !(contains(needs.*.result, 'failure')) }} if: ${{ !(contains(needs.*.result, 'failure')) }}
# zizmor: ignore[template-injection]
run: echo "All jobs passed or skipped" && echo "${{ toJSON(needs.*.result) }}" run: echo "All jobs passed or skipped" && echo "${{ toJSON(needs.*.result) }}"

75
.vscode/settings.json vendored
View File

@@ -1,44 +1,63 @@
{ {
"editor.formatOnSave": true,
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.tabSize": 2,
"editor.formatOnSave": true
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.tabSize": 2,
"editor.formatOnSave": true
},
"[css]": { "[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode", "editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.tabSize": 2, "editor.formatOnSave": true,
"editor.formatOnSave": true
},
"[svelte]": {
"editor.defaultFormatter": "svelte.svelte-vscode",
"editor.tabSize": 2 "editor.tabSize": 2
}, },
"svelte.enable-ts-plugin": true,
"eslint.validate": [
"javascript",
"svelte"
],
"typescript.preferences.importModuleSpecifier": "non-relative",
"[dart]": { "[dart]": {
"editor.defaultFormatter": "Dart-Code.dart-code",
"editor.formatOnSave": true, "editor.formatOnSave": true,
"editor.selectionHighlight": false, "editor.selectionHighlight": false,
"editor.suggest.snippetsPreventQuickSuggestions": false, "editor.suggest.snippetsPreventQuickSuggestions": false,
"editor.suggestSelection": "first", "editor.suggestSelection": "first",
"editor.tabCompletion": "onlySnippets", "editor.tabCompletion": "onlySnippets",
"editor.wordBasedSuggestions": "off", "editor.wordBasedSuggestions": "off"
"editor.defaultFormatter": "Dart-Code.dart-code"
}, },
"cSpell.words": [ "[javascript]": {
"immich" "editor.codeActionsOnSave": {
], "source.organizeImports": "explicit",
"source.removeUnusedImports": "explicit"
},
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.tabSize": 2
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.tabSize": 2
},
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.tabSize": 2
},
"[svelte]": {
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit",
"source.removeUnusedImports": "explicit"
},
"editor.defaultFormatter": "svelte.svelte-vscode",
"editor.formatOnSave": true,
"editor.tabSize": 2
},
"[typescript]": {
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit",
"source.removeUnusedImports": "explicit"
},
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.tabSize": 2
},
"cSpell.words": ["immich"],
"editor.formatOnSave": true,
"eslint.validate": ["javascript", "svelte"],
"explorer.fileNesting.enabled": true, "explorer.fileNesting.enabled": true,
"explorer.fileNesting.patterns": { "explorer.fileNesting.patterns": {
"*.dart": "${capture}.g.dart,${capture}.gr.dart,${capture}.drift.dart",
"*.ts": "${capture}.spec.ts,${capture}.mock.ts" "*.ts": "${capture}.spec.ts,${capture}.mock.ts"
} },
"svelte.enable-ts-plugin": true,
"typescript.preferences.importModuleSpecifier": "non-relative"
} }

View File

@@ -17,6 +17,9 @@ e2e:
prod: prod:
docker compose -f ./docker/docker-compose.prod.yml up --build -V --remove-orphans docker compose -f ./docker/docker-compose.prod.yml up --build -V --remove-orphans
prod-down:
docker compose -f ./docker/docker-compose.prod.yml down --remove-orphans
prod-scale: prod-scale:
docker compose -f ./docker/docker-compose.prod.yml up --build -V --scale immich-server=3 --scale immich-microservices=3 --remove-orphans docker compose -f ./docker/docker-compose.prod.yml up --build -V --scale immich-server=3 --scale immich-microservices=3 --remove-orphans

View File

@@ -61,9 +61,7 @@
## Demo ## Demo
Access the demo [here](https://demo.immich.app). The demo is running on a Free-tier Oracle VM in Amsterdam with a 2.4Ghz quad-core ARM64 CPU and 24GB RAM. Access the demo [here](https://demo.immich.app). For the mobile app, you can use `https://demo.immich.app` for the `Server Endpoint URL`.
For the mobile app, you can use `https://demo.immich.app` for the `Server Endpoint URL`
### Login credentials ### Login credentials

View File

@@ -1,4 +1,4 @@
FROM node:22.14.0-alpine3.20@sha256:40be979442621049f40b1d51a26b55e281246b5de4e5f51a18da7beb6e17e3f9 AS core FROM node:22.15.0-alpine3.20@sha256:686b8892b69879ef5bfd6047589666933508f9a5451c67320df3070ba0e9807b AS core
WORKDIR /usr/src/open-api/typescript-sdk WORKDIR /usr/src/open-api/typescript-sdk
COPY open-api/typescript-sdk/package*.json open-api/typescript-sdk/tsconfig*.json ./ COPY open-api/typescript-sdk/package*.json open-api/typescript-sdk/tsconfig*.json ./

1377
cli/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{ {
"name": "@immich/cli", "name": "@immich/cli",
"version": "2.2.60", "version": "2.2.65",
"description": "Command Line Interface (CLI) for Immich", "description": "Command Line Interface (CLI) for Immich",
"type": "module", "type": "module",
"exports": "./dist/index.js", "exports": "./dist/index.js",
@@ -21,7 +21,7 @@
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"@types/micromatch": "^4.0.9", "@types/micromatch": "^4.0.9",
"@types/mock-fs": "^4.13.1", "@types/mock-fs": "^4.13.1",
"@types/node": "^22.13.14", "@types/node": "^22.14.1",
"@vitest/coverage-v8": "^3.0.0", "@vitest/coverage-v8": "^3.0.0",
"byte-size": "^9.0.0", "byte-size": "^9.0.0",
"cli-progress": "^3.12.0", "cli-progress": "^3.12.0",

View File

@@ -33,6 +33,7 @@ services:
- ${UPLOAD_LOCATION}/photos/upload:/usr/src/app/upload/upload - ${UPLOAD_LOCATION}/photos/upload:/usr/src/app/upload/upload
- /usr/src/app/node_modules - /usr/src/app/node_modules
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
- ../flickr30k-images:/flickr30k:ro
env_file: env_file:
- .env - .env
environment: environment:
@@ -58,7 +59,6 @@ services:
- 9231:9231 - 9231:9231
- 2283:2283 - 2283:2283
depends_on: depends_on:
- redis
- database - database
healthcheck: healthcheck:
disable: false disable: false
@@ -114,12 +114,6 @@ services:
healthcheck: healthcheck:
disable: false disable: false
redis:
container_name: immich_redis
image: redis:6.2-alpine@sha256:148bb5411c184abd288d9aaed139c98123eeb8824c5d3fce03cf721db58066d8
healthcheck:
test: redis-cli ping || exit 1
database: database:
container_name: immich_postgres container_name: immich_postgres
image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52 image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52
@@ -154,25 +148,25 @@ services:
-c wal_compression=on -c wal_compression=on
# set IMMICH_TELEMETRY_INCLUDE=all in .env to enable metrics # set IMMICH_TELEMETRY_INCLUDE=all in .env to enable metrics
# immich-prometheus: immich-prometheus:
# container_name: immich_prometheus container_name: immich_prometheus
# ports: ports:
# - 9090:9090 - 9090:9090
# image: prom/prometheus image: prom/prometheus
# volumes: volumes:
# - ./prometheus.yml:/etc/prometheus/prometheus.yml - ./prometheus.yml:/etc/prometheus/prometheus.yml
# - prometheus-data:/prometheus - prometheus-data:/prometheus
# first login uses admin/admin # first login uses admin/admin
# add data source for http://immich-prometheus:9090 to get started # add data source for http://immich-prometheus:9090 to get started
# immich-grafana: immich-grafana:
# container_name: immich_grafana container_name: immich_grafana
# command: ['./run.sh', '-disable-reporting'] command: ['./run.sh', '-disable-reporting']
# ports: ports:
# - 3000:3000 - 3001:3000
# image: grafana/grafana:10.3.3-ubuntu image: grafana/grafana:10.3.3-ubuntu
# volumes: volumes:
# - grafana-data:/var/lib/grafana - grafana-data:/var/lib/grafana
volumes: volumes:
model-cache: model-cache:

View File

@@ -27,7 +27,6 @@ services:
ports: ports:
- 2283:2283 - 2283:2283
depends_on: depends_on:
- redis
- database - database
restart: always restart: always
healthcheck: healthcheck:
@@ -54,13 +53,6 @@ services:
healthcheck: healthcheck:
disable: false disable: false
redis:
container_name: immich_redis
image: redis:6.2-alpine@sha256:148bb5411c184abd288d9aaed139c98123eeb8824c5d3fce03cf721db58066d8
healthcheck:
test: redis-cli ping || exit 1
restart: always
database: database:
container_name: immich_postgres container_name: immich_postgres
image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52 image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52
@@ -90,7 +82,7 @@ services:
container_name: immich_prometheus container_name: immich_prometheus
ports: ports:
- 9090:9090 - 9090:9090
image: prom/prometheus@sha256:502ad90314c7485892ce696cb14a99fceab9fc27af29f4b427f41bd39701a199 image: prom/prometheus@sha256:339ce86a59413be18d0e445472891d022725b4803fab609069110205e79fb2f1
volumes: volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml - ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus-data:/prometheus - prometheus-data:/prometheus
@@ -102,7 +94,7 @@ services:
command: [ './run.sh', '-disable-reporting' ] command: [ './run.sh', '-disable-reporting' ]
ports: ports:
- 3000:3000 - 3000:3000
image: grafana/grafana:11.5.2-ubuntu@sha256:8b5858c447e06fd7a89006b562ba7bba7c4d5813600c7982374c41852adefaeb image: grafana/grafana:11.6.1-ubuntu@sha256:6fc273288470ef499dd3c6b36aeade093170d4f608f864c5dd3a7fabeae77b50
volumes: volumes:
- grafana-data:/var/lib/grafana - grafana-data:/var/lib/grafana

View File

@@ -25,7 +25,6 @@ services:
ports: ports:
- '2283:2283' - '2283:2283'
depends_on: depends_on:
- redis
- database - database
restart: always restart: always
healthcheck: healthcheck:
@@ -47,13 +46,6 @@ services:
healthcheck: healthcheck:
disable: false disable: false
redis:
container_name: immich_redis
image: docker.io/redis:6.2-alpine@sha256:148bb5411c184abd288d9aaed139c98123eeb8824c5d3fce03cf721db58066d8
healthcheck:
test: redis-cli ping || exit 1
restart: always
database: database:
container_name: immich_postgres container_name: immich_postgres
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52 image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52

View File

@@ -2,7 +2,8 @@
# The location where your uploaded files are stored # The location where your uploaded files are stored
UPLOAD_LOCATION=./library UPLOAD_LOCATION=./library
# The location where your database files are stored
# The location where your database files are stored. Network shares are not supported for the database
DB_DATA_LOCATION=./postgres DB_DATA_LOCATION=./postgres
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List # To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List

View File

@@ -1,12 +1,14 @@
global: global:
scrape_interval: 15s scrape_interval: 3s
evaluation_interval: 15s evaluation_interval: 3s
scrape_configs: scrape_configs:
- job_name: immich_api - job_name: immich_api
scrape_interval: 3s
static_configs: static_configs:
- targets: ['immich-server:8081'] - targets: ["immich-server:8081"]
- job_name: immich_microservices - job_name: immich_microservices
scrape_interval:
static_configs: static_configs:
- targets: ['immich-server:8082'] - targets: ["immich-server:8082"]

View File

@@ -367,12 +367,6 @@ You need to [enable WebSockets](/docs/administration/reverse-proxy/) on your rev
Immich components are typically deployed using docker. To see logs for deployed docker containers, you can use the [Docker CLI](https://docs.docker.com/engine/reference/commandline/cli/), specifically the `docker logs` command. For examples, see [Docker Help](/docs/guides/docker-help.md). Immich components are typically deployed using docker. To see logs for deployed docker containers, you can use the [Docker CLI](https://docs.docker.com/engine/reference/commandline/cli/), specifically the `docker logs` command. For examples, see [Docker Help](/docs/guides/docker-help.md).
### How can I reduce the log verbosity of Redis?
To decrease Redis logs, you can add the following line to the `redis:` section of the `docker-compose.yml`:
` command: redis-server --loglevel warning`
### How can I run Immich as a non-root user? ### How can I run Immich as a non-root user?
You can change the user in the container by setting the `user` argument in `docker-compose.yml` for each service. You can change the user in the container by setting the `user` argument in `docker-compose.yml` for each service.
@@ -380,7 +374,6 @@ You may need to add mount points or docker volumes for the following internal co
- `immich-machine-learning:/.config` - `immich-machine-learning:/.config`
- `immich-machine-learning:/.cache` - `immich-machine-learning:/.cache`
- `redis:/data`
The non-root user/group needs read/write access to the volume mounts, including `UPLOAD_LOCATION` and `/cache` for machine-learning. The non-root user/group needs read/write access to the volume mounts, including `UPLOAD_LOCATION` and `/cache` for machine-learning.

View File

@@ -23,23 +23,32 @@ Refer to the official [postgres documentation](https://www.postgresql.org/docs/c
It is not recommended to directly backup the `DB_DATA_LOCATION` folder. Doing so while the database is running can lead to a corrupted backup that cannot be restored. It is not recommended to directly backup the `DB_DATA_LOCATION` folder. Doing so while the database is running can lead to a corrupted backup that cannot be restored.
::: :::
### Automatic Database Backups ### Automatic Database Dumps
For convenience, Immich will automatically create database backups by default. The backups are stored in `UPLOAD_LOCATION/backups`. :::warning
As mentioned above, you should make your own backup of these together with the asset folders as noted below. The automatic database dumps can be used to restore the database in the event of damage to the Postgres database files.
You can adjust the schedule and amount of kept backups in the [admin settings](http://my.immich.app/admin/system-settings?isOpen=backup). There is no monitoring for these dumps and you will not be notified if they are unsuccessful.
By default, Immich will keep the last 14 backups and create a new backup every day at 2:00 AM. :::
#### Trigger Backup :::caution
The database dumps do **NOT** contain any pictures or videos, only metadata. They are only usable with a copy of the other files in `UPLOAD_LOCATION` as outlined below.
:::
You are able to trigger a backup in the [admin job status page](http://my.immich.app/admin/jobs-status). For disaster-recovery purposes, Immich will automatically create database dumps. The dumps are stored in `UPLOAD_LOCATION/backups`.
Visit the page, open the "Create job" modal from the top right, select "Backup Database" and click "Confirm". Please be sure to make your own, independent backup of the database together with the asset folders as noted below.
A job will run and trigger a backup, you can verify this worked correctly by checking the logs or the backup folder. You can adjust the schedule and amount of kept database dumps in the [admin settings](http://my.immich.app/admin/system-settings?isOpen=backup).
This backup will count towards the last X backups that will be kept based on your settings. By default, Immich will keep the last 14 database dumps and create a new dump every day at 2:00 AM.
#### Trigger Dump
You are able to trigger a database dump in the [admin job status page](http://my.immich.app/admin/jobs-status).
Visit the page, open the "Create job" modal from the top right, select "Create Database Dump" and click "Confirm".
A job will run and trigger a dump, you can verify this worked correctly by checking the logs or the `backups/` folder.
This dumps will count towards the last `X` dumps that will be kept based on your settings.
#### Restoring #### Restoring
We hope to make restoring simpler in future versions, for now you can find the backups in the `UPLOAD_LOCATION/backups` folder on your host. We hope to make restoring simpler in future versions, for now you can find the database dumps in the `UPLOAD_LOCATION/backups` folder on your host.
Then please follow the steps in the following section for restoring the database. Then please follow the steps in the following section for restoring the database.
### Manual Backup and Restore ### Manual Backup and Restore

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -31,7 +31,7 @@ Admin can send a welcome email if the Email option is set, you can learn here ho
Admin can specify the storage quota for the user as the instance's admin; once the limit is reached, the user won't be able to upload to the instance anymore. Admin can specify the storage quota for the user as the instance's admin; once the limit is reached, the user won't be able to upload to the instance anymore.
In order to select a storage quota, click on the pencil icon and enter the storage quota in GiB. You can choose an unlimited quota using the value 0 (default). In order to select a storage quota, click on the pencil icon and enter the storage quota in GiB. You can choose an unlimited quota by leaving it empty (default).
:::tip :::tip
The system administrator can see the usage quota percentage of all users in Server Stats page. The system administrator can see the usage quota percentage of all users in Server Stats page.

View File

@@ -13,7 +13,7 @@ Immich uses a traditional client-server design, with a dedicated database for da
<img alt="Immich Architecture" src={AppArchitecture} className="p-4 dark:bg-immich-dark-primary my-4" /> <img alt="Immich Architecture" src={AppArchitecture} className="p-4 dark:bg-immich-dark-primary my-4" />
The diagram shows clients communicating with the server's API via REST. The server communicates with downstream systems (i.e. Redis, Postgres, Machine Learning, file system) through repository interfaces. Not shown in the diagram, is that the server is split into two separate containers `immich-server` and `immich-microservices`. The microservices container does not handle API requests or schedule cron jobs, but primarily handles incoming job requests from Redis. The diagram shows clients communicating with the server's API via REST. The server communicates with downstream systems (i.e. Postgres, Machine Learning, file system) through repository interfaces. Not shown in the diagram, is that the server is split into two separate containers `immich-server` and `immich-microservices`. The microservices container does not handle API requests or schedule cron jobs, but primarily handles incoming job requests from Postgres.
## Clients ## Clients
@@ -53,7 +53,6 @@ The Immich backend is divided into several services, which are run as individual
1. `immich-server` - Handle and respond to REST API requests, execute background jobs (thumbnail generation, metadata extraction, transcoding, etc.) 1. `immich-server` - Handle and respond to REST API requests, execute background jobs (thumbnail generation, metadata extraction, transcoding, etc.)
1. `immich-machine-learning` - Execute machine learning models 1. `immich-machine-learning` - Execute machine learning models
1. `postgres` - Persistent data storage 1. `postgres` - Persistent data storage
1. `redis`- Queue management for background jobs
### Immich Server ### Immich Server
@@ -111,7 +110,3 @@ Immich persists data in Postgres, which includes information about access and au
:::info :::info
See [Database Migrations](./database-migrations.md) for more information about how to modify the database to create an index, modify a table, add a new column, etc. See [Database Migrations](./database-migrations.md) for more information about how to modify the database to create an index, modify a table, add a new column, etc.
::: :::
### Redis
Immich uses [Redis](https://redis.com/) via [BullMQ](https://docs.bullmq.io/) to manage job queues. Some jobs trigger subsequent jobs. For example, Smart Search and Facial Recognition relies on thumbnail generation and automatically run after one is generated.

View File

@@ -1,14 +1,14 @@
# Database Migrations # Database Migrations
After making any changes in the `server/src/entities`, a database migration need to run in order to register the changes in the database. Follow the steps below to create a new migration. After making any changes in the `server/src/schema`, a database migration need to run in order to register the changes in the database. Follow the steps below to create a new migration.
1. Run the command 1. Run the command
```bash ```bash
npm run typeorm:migrations:generate <migration-name> npm run migrations:generate <migration-name>
``` ```
2. Check if the migration file makes sense. 2. Check if the migration file makes sense.
3. Move the migration file to folder `./server/src/migrations` in your code editor. 3. Move the migration file to folder `./server/src/schema/migrations` in your code editor.
The server will automatically detect `*.ts` file changes and restart. Part of the server start-up process includes running any new migrations, so it will be applied immediately. The server will automatically detect `*.ts` file changes and restart. Part of the server start-up process includes running any new migrations, so it will be applied immediately.

View File

@@ -23,7 +23,6 @@ This environment includes the services below. Additional details are available i
- Server - [`/server`](https://github.com/immich-app/immich/tree/main/server) - Server - [`/server`](https://github.com/immich-app/immich/tree/main/server)
- Web app - [`/web`](https://github.com/immich-app/immich/tree/main/web) - Web app - [`/web`](https://github.com/immich-app/immich/tree/main/web)
- Machine learning - [`/machine-learning`](https://github.com/immich-app/immich/tree/main/machine-learning) - Machine learning - [`/machine-learning`](https://github.com/immich-app/immich/tree/main/machine-learning)
- Redis
- PostgreSQL development database with exposed port `5432` so you can use any database client to access it - PostgreSQL development database with exposed port `5432` so you can use any database client to access it
All the services are packaged to run as with single Docker Compose command. All the services are packaged to run as with single Docker Compose command.
@@ -63,6 +62,13 @@ 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_SERVER_URL=https://demo.immich.app/ npm run dev
``` ```
If you're using PowerShell on Windows you may need to set the env var separately like so:
```powershell
$env:IMMICH_SERVER_URL = "https://demo.immich.app/"
npm run dev
```
#### `@immich/ui` #### `@immich/ui`
To see local changes to `@immich/ui` in Immich, do the following: To see local changes to `@immich/ui` in Immich, do the following:
@@ -76,9 +82,20 @@ To see local changes to `@immich/ui` in Immich, do the following:
### Mobile app ### Mobile app
The mobile app `(/mobile)` will required Flutter toolchain 3.13.x and FVM to be installed on your system. #### Setup
Please refer to the [Flutter's official documentation](https://flutter.dev/docs/get-started/install) for more information on setting up the toolchain on your machine. 1. Setup Flutter toolchain using FVM.
2. Run `flutter pub get` to install the dependencies.
3. Run `make translation` to generate the translation file.
4. Run `fvm flutter run` to start the app.
#### Translation
To add a new translation text, enter the key-value pair in the `i18n/en.json` in the root of the immich project. Then, from the `mobile/` directory, run
```bash
make translation
```
The mobile app asks you what backend to connect to. You can utilize the demo backend (https://demo.immich.app/) if you don't need to change server code or upload photos. Alternatively, you can run the server yourself per the instructions above. The mobile app asks you what backend to connect to. You can utilize the demo backend (https://demo.immich.app/) if you don't need to change server code or upload photos. Alternatively, you can run the server yourself per the instructions above.

View File

@@ -42,6 +42,12 @@ docker run -it -v "$(pwd)":/import:ro -e IMMICH_INSTANCE_URL=https://your-immich
Please modify the `IMMICH_INSTANCE_URL` and `IMMICH_API_KEY` environment variables as suitable. You can also use a Docker env file to store your sensitive API key. Please modify the `IMMICH_INSTANCE_URL` and `IMMICH_API_KEY` environment variables as suitable. You can also use a Docker env file to store your sensitive API key.
This `docker run` command will directly run the command `immich` inside the container. You can directly append the desired parameters (see under "usage") to the commandline like this:
```bash
docker run -it -v "$(pwd)":/import:ro -e IMMICH_INSTANCE_URL=https://your-immich-instance/api -e IMMICH_API_KEY=your-api-key ghcr.io/immich-app/immich-cli:latest upload -a -c 5 --recursive directory/
```
## Usage ## Usage
<details> <details>
@@ -112,7 +118,7 @@ You begin by authenticating to your Immich server. For instance:
immich login http://192.168.1.216:2283/api HFEJ38DNSDUEG immich login http://192.168.1.216:2283/api HFEJ38DNSDUEG
``` ```
This will store your credentials in a `auth.yml` file in the configuration directory which defaults to `~/.config/`. The directory can be set with the `-d` option or the environment variable `IMMICH_CONFIG_DIR`. Please keep the file secure, either by performing the logout command after you are done, or deleting it manually. This will store your credentials in a `auth.yml` file in the configuration directory which defaults to `~/.config/immich/`. The directory can be set with the `-d` option or the environment variable `IMMICH_CONFIG_DIR`. Please keep the file secure, either by performing the logout command after you are done, or deleting it manually.
Once you are authenticated, you can upload assets to your Immich server. Once you are authenticated, you can upload assets to your Immich server.

View File

@@ -42,7 +42,7 @@ You do not need to redo any machine learning jobs after enabling hardware accele
- The GPU must have compute capability 5.2 or greater. - The GPU must have compute capability 5.2 or greater.
- The server must have the official NVIDIA driver installed. - The server must have the official NVIDIA driver installed.
- The installed driver must be >= 535 (it must support CUDA 12.2). - The installed driver must be >= 545 (it must support CUDA 12.3).
- On Linux (except for WSL2), you also need to have [NVIDIA Container Toolkit][nvct] installed. - On Linux (except for WSL2), you also need to have [NVIDIA Container Toolkit][nvct] installed.
#### ROCm #### ROCm

View File

@@ -14,14 +14,14 @@ online generators you can use.
2. Paste the link to your JSON style in either the **Light Style** or **Dark Style**. (You can add different styles which will help make the map style more appropriate depending on whether you set **Immich** to Light or Dark mode.) 2. Paste the link to your JSON style in either the **Light Style** or **Dark Style**. (You can add different styles which will help make the map style more appropriate depending on whether you set **Immich** to Light or Dark mode.)
3. Save your selections. Reload the map, and enjoy your custom map style! 3. Save your selections. Reload the map, and enjoy your custom map style!
## Use Maptiler to build a custom style ## Use MapTiler to build a custom style
Customizing the map style can be done easily using Maptiler, if you do not want to write an entire JSON document by hand. Customizing the map style can be done easily using MapTiler, if you do not want to write an entire JSON document by hand.
1. Create a free account at https://cloud.maptiler.com 1. Create a free account at https://cloud.maptiler.com
2. Once logged in, you can either create a brand new map by clicking on **New Map**, selecting a starter map, and then clicking **Customize**, OR by selecting a **Standard Map** and customizing it from there. 2. Once logged in, you can either create a brand new map by clicking on **New Map**, selecting a starter map, and then clicking **Customize**, OR by selecting a **Standard Map** and customizing it from there.
3. The **editor** interface is self-explanatory. You can change colors, remove visible layers, or add optional layers (e.g., administrative, topo, hydro, etc.) in the composer. 3. The **editor** interface is self-explanatory. You can change colors, remove visible layers, or add optional layers (e.g., administrative, topo, hydro, etc.) in the composer.
4. Once you have your map composed, click on **Save** at the top right. Give it a unique name to save it to your account. 4. Once you have your map composed, click on **Save** at the top right. Give it a unique name to save it to your account.
5. Next, **Publish** your style using the **Publish** button at the top right. This will deploy it to production, which means it is able to be exposed over the Internet. Maptiler will present an interactive side-by-side map with the original and your changes prior to publication.<br/>![Maptiler Publication Settings](img/immich_map_styles_publish.webp) 5. Next, **Publish** your style using the **Publish** button at the top right. This will deploy it to production, which means it is able to be exposed over the Internet. MapTiler will present an interactive side-by-side map with the original and your changes prior to publication.<br/>![MapTiler Publication Settings](img/immich_map_styles_publish.webp)
6. Maptiler will warn you that changing the map will change it across all apps using the map. Since no apps are using the map yet, this is okay. 6. MapTiler will warn you that changing the map will change it across all apps using the map. Since no apps are using the map yet, this is okay.
7. Clicking on the name of your new map at the top left will bring you to the item's **details** page. From here, copy the link to the JSON style under **Use vector style**. This link will automatically contain your personal API key to Maptiler. 7. Clicking on the name of your new map at the top left will bring you to the item's **details** page. From here, copy the link to the JSON style under **Use vector style**. This link will automatically contain your personal API key to MapTiler.

View File

@@ -1,7 +1,7 @@
# Database Queries # Database Queries
:::danger :::danger
Keep in mind that mucking around in the database might set the moon on fire. Avoid modifying the database directly when possible, and always have current backups. Keep in mind that mucking around in the database might set the Moon on fire. Avoid modifying the database directly when possible, and always have current backups.
::: :::
:::tip :::tip

View File

@@ -1,6 +1,6 @@
# Scaling Immich # Scaling Immich
Immich is built with modern deployment practices in mind, and the backend is designed to be able to run multiple instances in parallel. When doing this, the only requirement you need to be aware of is that every instance needs to be connected to the shared infrastructure. That means they should all have access to the same Postgres and Redis instances, and have the same files mounted into the containers. Immich is built with modern deployment practices in mind, and the backend is designed to be able to run multiple instances in parallel. When doing this, the only requirement you need to be aware of is that every instance needs to be connected to the shared infrastructure. That means they should all have access to the same Postgres instance, and have the same files mounted into the containers.
Scaling can be useful for many reasons. Maybe you have a gaming PC that you want to use for transcoding and thumbnail generation, or perhaps you run a Kubernetes cluster across a handful of powerful servers that you want to make use of. Scaling can be useful for many reasons. Maybe you have a gaming PC that you want to use for transcoding and thumbnail generation, or perhaps you run a Kubernetes cluster across a handful of powerful servers that you want to make use of.
@@ -16,4 +16,4 @@ By default, each running `immich-server` container comes with multiple internal
## Scaling down ## Scaling down
In the same way you can scale up to multiple containers, you can also choose to scale down. All state is stored in Postgres, Redis, and the filesystem so there is no risk in stopping a running immich-server container, for example if you want to use your GPU to play some games. As long as there is an API worker running you will still be able to browse Immich, and jobs will wait to be processed until there is a worker available for them. In the same way you can scale up to multiple containers, you can also choose to scale down. All state is stored in Postgres and the filesystem so there is no risk in stopping a running immich-server container, for example if you want to use your GPU to play some games. As long as there is an API worker running you will still be able to browse Immich, and jobs will wait to be processed until there is a worker available for them.

View File

@@ -70,3 +70,6 @@ If you get an error `can't set healthcheck.start_interval as feature require Doc
## Next Steps ## Next Steps
Read the [Post Installation](/docs/install/post-install.mdx) steps and [upgrade instructions](/docs/install/upgrading.md). Read the [Post Installation](/docs/install/post-install.mdx) steps and [upgrade instructions](/docs/install/upgrading.md).
[compose-file]: https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
[env-file]: https://github.com/immich-app/immich/releases/latest/download/example.env

View File

@@ -98,54 +98,6 @@ When `DB_URL` is defined, the `DB_HOSTNAME`, `DB_PORT`, `DB_USERNAME`, `DB_PASSW
::: :::
## Redis
| Variable | Description | Default | Containers |
| :--------------- | :------------- | :-----: | :--------- |
| `REDIS_URL` | Redis URL | | server |
| `REDIS_SOCKET` | Redis socket | | server |
| `REDIS_HOSTNAME` | Redis host | `redis` | server |
| `REDIS_PORT` | Redis port | `6379` | server |
| `REDIS_USERNAME` | Redis username | | server |
| `REDIS_PASSWORD` | Redis password | | server |
| `REDIS_DBINDEX` | Redis DB index | `0` | server |
:::info
All `REDIS_` variables must be provided to all Immich workers, including `api` and `microservices`.
`REDIS_URL` must start with `ioredis://` and then include a `base64` encoded JSON string for the configuration.
More information can be found in the upstream [ioredis] documentation.
When `REDIS_URL` or `REDIS_SOCKET` are defined, the `REDIS_HOSTNAME`, `REDIS_PORT`, `REDIS_USERNAME`, `REDIS_PASSWORD`, and `REDIS_DBINDEX` variables are ignored.
:::
Redis (Sentinel) URL example JSON before encoding:
<details>
<summary>JSON</summary>
```json
{
"sentinels": [
{
"host": "redis-sentinel-node-0",
"port": 26379
},
{
"host": "redis-sentinel-node-1",
"port": 26379
},
{
"host": "redis-sentinel-node-2",
"port": 26379
}
],
"name": "redis-sentinel"
}
```
</details>
## Machine Learning ## Machine Learning
| Variable | Description | Default | Containers | | Variable | Description | Default | Containers |
@@ -212,16 +164,10 @@ the `_FILE` variable should be set to the path of a file containing the variable
| `DB_USERNAME` | `DB_USERNAME_FILE`<sup>\*1</sup> | | `DB_USERNAME` | `DB_USERNAME_FILE`<sup>\*1</sup> |
| `DB_PASSWORD` | `DB_PASSWORD_FILE`<sup>\*1</sup> | | `DB_PASSWORD` | `DB_PASSWORD_FILE`<sup>\*1</sup> |
| `DB_URL` | `DB_URL_FILE`<sup>\*1</sup> | | `DB_URL` | `DB_URL_FILE`<sup>\*1</sup> |
| `REDIS_PASSWORD` | `REDIS_PASSWORD_FILE`<sup>\*2</sup> |
\*1: See the [official documentation][docker-secrets-docs] for \*1: See the [official documentation][docker-secrets-docs] for
details on how to use Docker Secrets in the Postgres image. details on how to use Docker Secrets in the Postgres image.
\*2: See [this comment][docker-secrets-example] for an example of how
to use a Docker secret for the password in the Redis container.
[tz-list]: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List [tz-list]: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
[docker-secrets-example]: https://github.com/docker-library/redis/issues/46#issuecomment-335326234
[docker-secrets-docs]: https://github.com/docker-library/docs/tree/master/postgres#docker-secrets [docker-secrets-docs]: https://github.com/docker-library/docs/tree/master/postgres#docker-secrets
[docker-secrets]: https://docs.docker.com/engine/swarm/secrets/ [docker-secrets]: https://docs.docker.com/engine/swarm/secrets/
[ioredis]: https://ioredis.readthedocs.io/en/latest/README/#connect-to-redis

View File

@@ -107,8 +107,6 @@ Accept the default option or select the **Machine Learning Image Type** for your
Immich's default is `postgres` but you should consider setting the **Database Password** to a custom value using only the characters `A-Za-z0-9`. Immich's default is `postgres` but you should consider setting the **Database Password** to a custom value using only the characters `A-Za-z0-9`.
The **Redis Password** should be set to a custom value using only the characters `A-Za-z0-9`.
Accept the **Log Level** default of **Log**. Accept the **Log Level** default of **Log**.
Leave **Hugging Face Endpoint** blank. (This is for downloading ML models from a different source.) Leave **Hugging Face Endpoint** blank. (This is for downloading ML models from a different source.)
@@ -242,7 +240,7 @@ className="border rounded-xl"
:::info :::info
Some Environment Variables are not available for the TrueNAS SCALE app. This is mainly because they can be configured through GUI options in the [Edit Immich screen](#edit-app-settings). Some Environment Variables are not available for the TrueNAS SCALE app. This is mainly because they can be configured through GUI options in the [Edit Immich screen](#edit-app-settings).
Some examples are: `IMMICH_VERSION`, `UPLOAD_LOCATION`, `DB_DATA_LOCATION`, `TZ`, `IMMICH_LOG_LEVEL`, `DB_PASSWORD`, `REDIS_PASSWORD`. Some examples are: `IMMICH_VERSION`, `UPLOAD_LOCATION`, `DB_DATA_LOCATION`, `TZ`, `IMMICH_LOG_LEVEL`, `DB_PASSWORD`.
::: :::
## Updating the App ## Updating the App

View File

@@ -17,9 +17,9 @@ Immich can easily be installed and updated on Unraid via:
::: :::
In order to install Immich from the Unraid CA, you will need an existing Redis and PostgreSQL 14 container, If you do not already have Redis or PostgreSQL you can install them from the Unraid CA, just make sure you choose PostgreSQL **14**. In order to install Immich from the Unraid CA, you will need an existing PostgreSQL 14 container, If you do not already have PostgreSQL you can install it from the Unraid CA, just make sure you choose PostgreSQL **14**.
Once you have Redis and PostgreSQL running, search for Immich on the Unraid CA, choose either of the templates listed and fill out the example variables. Once you have PostgreSQL running, search for Immich on the Unraid CA, choose either of the templates listed and fill out the example variables.
For more information about setting up the community image see [here](https://github.com/imagegenius/docker-immich#application-setup) For more information about setting up the community image see [here](https://github.com/imagegenius/docker-immich#application-setup)
@@ -45,63 +45,63 @@ width="70%"
alt="Select Plugins > Compose.Manager > Add New Stack > Label it Immich" alt="Select Plugins > Compose.Manager > Add New Stack > Label it Immich"
/> />
3. Select the cogwheel ⚙️ next to Immich and click "**Edit Stack**" 3. Select the cogwheel ⚙️ next to Immich and click "**Edit Stack**"
4. Click "**Compose File**" and then paste the entire contents of the [Immich Docker Compose](https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml) file into the Unraid editor. Remove any text that may be in the text area by default. Note that Unraid v6.12.10 uses version 24.0.9 of the Docker Engine, which does not support healthcheck `start_interval` as defined in the `database` service of the Docker compose file (version 25 or higher is needed). This parameter defines an initial waiting period before starting health checks, to give the container time to start up. Commenting out the `start_interval` and `start_period` parameters will allow the containers to start up normally. The only downside to this is that the database container will not receive an initial health check until `interval` time has passed. 4. Click "**Compose File**" and then paste the entire contents of the [Immich Docker Compose](https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml) file into the Unraid editor. Remove any text that may be in the text area by default. Note that Unraid v6.12.10 uses version 24.0.9 of the Docker Engine, which does not support healthcheck `start_interval` as defined in the `database` service of the Docker compose file (version 25 or higher is needed). This parameter defines an initial waiting period before starting health checks, to give the container time to start up. Commenting out the `start_interval` and `start_period` parameters will allow the containers to start up normally. The only downside to this is that the database container will not receive an initial health check until `interval` time has passed.
<details > <details >
<summary>Using an existing Postgres container? Click me! Otherwise proceed to step 5.</summary> <summary>Using an existing Postgres container? Click me! Otherwise proceed to step 5.</summary>
<ul> <ul>
<li>Comment out the database service</li> <li>Comment out the database service</li>
<img <img
src={require('./img/unraid02.webp').default} src={require('./img/unraid02.webp').default}
width="50%" width="50%"
alt="Comment out database service in the compose file" alt="Comment out database service in the compose file"
/> />
<li>Comment out the database dependency for <b>each service</b> <i>(example in screenshot below only shows 2 of the services - ensure you do this for all services)</i></li> <li>Comment out the database dependency for <b>each service</b> <i>(example in screenshot below only shows 2 of the services - ensure you do this for all services)</i></li>
<img <img
src={require('./img/unraid03.webp').default} src={require('./img/unraid03.webp').default}
width="50%" width="50%"
alt="Comment out every reference to the database service in the compose file" alt="Comment out every reference to the database service in the compose file"
/> />
<li>Comment out the volumes</li> <li>Comment out the volumes</li>
<img <img
src={require('./img/unraid04.webp').default} src={require('./img/unraid04.webp').default}
width="20%" width="20%"
alt="Comment out database volume" alt="Comment out database volume"
/> />
</ul> </ul>
</details> </details>
5. Click "**Save Changes**", you will be prompted to edit stack UI labels, just leave this blank and click "**Ok**" 5. Click "**Save Changes**", you will be prompted to edit stack UI labels, just leave this blank and click "**Ok**"
6. Select the cog ⚙️ next to Immich, click "**Edit Stack**", then click "**Env File**" 6. Select the cog ⚙️ next to Immich, click "**Edit Stack**", then click "**Env File**"
7. Paste the entire contents of the [Immich example.env](https://github.com/immich-app/immich/releases/latest/download/example.env) file into the Unraid editor, then **before saving** edit the following: 7. Paste the entire contents of the [Immich example.env](https://github.com/immich-app/immich/releases/latest/download/example.env) file into the Unraid editor, then **before saving** edit the following:
- `UPLOAD_LOCATION`: Create a folder in your Images Unraid share and place the **absolute** location here > For example my _"images"_ share has a folder within it called _"immich"_. If I browse to this directory in the terminal and type `pwd` the output is `/mnt/user/images/immich`. This is the exact value I need to enter as my `UPLOAD_LOCATION` - `UPLOAD_LOCATION`: Create a folder in your Images Unraid share and place the **absolute** location here > For example my _"images"_ share has a folder within it called _"immich"_. If I browse to this directory in the terminal and type `pwd` the output is `/mnt/user/images/immich`. This is the exact value I need to enter as my `UPLOAD_LOCATION`
- `DB_DATA_LOCATION`: Change this to use an Unraid share (preferably a cache pool, e.g. `/mnt/user/appdata/postgresql/data`). This uses the `appdata` share. Do also create the `postgresql` folder, by running `mkdir /mnt/user/{share_location}/postgresql/data`. If left at default it will try to use Unraid's `/boot/config/plugins/compose.manager/projects/[stack_name]/postgres` folder which it doesn't have permissions to, resulting in this container continuously restarting. - `DB_DATA_LOCATION`: Change this to use an Unraid share (preferably a cache pool, e.g. `/mnt/user/appdata/postgresql/data`). This uses the `appdata` share. Do also create the `postgresql` folder, by running `mkdir /mnt/user/{share_location}/postgresql/data`. If left at default it will try to use Unraid's `/boot/config/plugins/compose.manager/projects/[stack_name]/postgres` folder which it doesn't have permissions to, resulting in this container continuously restarting.
<img <img
src={require('./img/unraid05.webp').default} src={require('./img/unraid05.webp').default}
width="70%" width="70%"
alt="Absolute location of where you want immich images stored" alt="Absolute location of where you want immich images stored"
/> />
<details > <details >
<summary>Using an existing Postgres container? Click me! Otherwise proceed to step 8.</summary> <summary>Using an existing Postgres container? Click me! Otherwise proceed to step 8.</summary>
<p>Update the following database variables as relevant to your Postgres container:</p> <p>Update the following database variables as relevant to your Postgres container:</p>
<ul> <ul>
<li><code>DB_HOSTNAME</code></li> <li><code>DB_HOSTNAME</code></li>
<li><code>DB_USERNAME</code></li> <li><code>DB_USERNAME</code></li>
<li><code>DB_PASSWORD</code></li> <li><code>DB_PASSWORD</code></li>
<li><code>DB_DATABASE_NAME</code></li> <li><code>DB_DATABASE_NAME</code></li>
<li><code>DB_PORT</code></li> <li><code>DB_PORT</code></li>
</ul> </ul>
</details> </details>
8. Click "**Save Changes**" followed by "**Compose Up**" and Unraid will begin to create the Immich containers in a popup window. Once complete you will see a message on the popup window stating _"Connection Closed"_. Click "**Done**" and go to the Unraid "**Docker**" page 8. Click "**Save Changes**" followed by "**Compose Up**" and Unraid will begin to create the Immich containers in a popup window. Once complete you will see a message on the popup window stating _"Connection Closed"_. Click "**Done**" and go to the Unraid "**Docker**" page
> Note: This can take several minutes depending on your Internet speed and Unraid hardware > Note: This can take several minutes depending on your Internet speed and Unraid hardware
9. Once on the Docker page you will see several Immich containers, one of them will be labelled `immich_server` and will have a port mapping. Visit the `IP:PORT` displayed in your web browser and you should see the Immich admin setup page. 9. Once on the Docker page you will see several Immich containers, one of them will be labelled `immich_server` and will have a port mapping. Visit the `IP:PORT` displayed in your web browser and you should see the Immich admin setup page.
<img <img
src={require('./img/unraid06.webp').default} src={require('./img/unraid06.webp').default}

View File

@@ -24,9 +24,6 @@ To clean up disk space, the old version's obsolete container images can be delet
docker image prune docker image prune
``` ```
[compose-file]: https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
[env-file]: https://github.com/immich-app/immich/releases/latest/download/example.env
[watchtower]: https://containrrr.dev/watchtower/ [watchtower]: https://containrrr.dev/watchtower/
[breaking]: https://github.com/immich-app/immich/discussions?discussions_q=label%3Achangelog%3Abreaking-change+sort%3Adate_created [breaking]: https://github.com/immich-app/immich/discussions?discussions_q=label%3Achangelog%3Abreaking-change+sort%3Adate_created
[container-auth]: https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry#authenticating-to-the-container-registry
[releases]: https://github.com/immich-app/immich/releases [releases]: https://github.com/immich-app/immich/releases

5324
docs/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -40,8 +40,9 @@ const projects: CommunityProjectProps[] = [
}, },
{ {
title: 'Lightroom Immich Plugin: lrc-immich-plugin', title: 'Lightroom Immich Plugin: lrc-immich-plugin',
description: 'Another Lightroom plugin to publish or export photos from Lightroom to Immich.', description:
url: 'https://github.com/bmachek/lrc-immich-plugin', 'Lightroom plugin to publish, export photos from Lightroom to Immich. Import from Immich to Lightroom is also supported.',
url: 'https://blog.fokuspunk.de/lrc-immich-plugin/',
}, },
{ {
title: 'Immich Duplicate Finder', title: 'Immich Duplicate Finder',

5
docs/src/pages/errors.md Normal file
View File

@@ -0,0 +1,5 @@
# Errors
## TypeORM Upgrade
The upgrade to Immich `v2.x.x` has a required upgrade path to `v1.132.0+`. This means it is required to start up the application at least once on version `1.132.0` (or later). Doing so will complete database schema upgrades that are required for `v2.0.0`. After Immich has successfully booted on this version, shut the system down and try the `v2.x.x` upgrade again.

View File

@@ -4,6 +4,7 @@ import Layout from '@theme/Layout';
import { discordPath, discordViewBox } from '@site/src/components/svg-paths'; import { discordPath, discordViewBox } from '@site/src/components/svg-paths';
import ThemedImage from '@theme/ThemedImage'; import ThemedImage from '@theme/ThemedImage';
import Icon from '@mdi/react'; import Icon from '@mdi/react';
import { mdiAndroid } from '@mdi/js';
function HomepageHeader() { function HomepageHeader() {
return ( return (
<header> <header>
@@ -88,11 +89,18 @@ function HomepageHeader() {
<img className="h-24" alt="Get it on Google Play" src="/img/google-play-badge.png" /> <img className="h-24" alt="Get it on Google Play" src="/img/google-play-badge.png" />
</a> </a>
</div> </div>
<div className="h-24"> <div className="h-24">
<a href="https://apps.apple.com/sg/app/immich/id1613945652"> <a href="https://apps.apple.com/sg/app/immich/id1613945652">
<img className="h-24 sm:p-3.5 p-3" alt="Download on the App Store" src="/img/ios-app-store-badge.svg" /> <img className="h-24 sm:p-3.5 p-3" alt="Download on the App Store" src="/img/ios-app-store-badge.svg" />
</a> </a>
</div> </div>
<div className="h-24">
<a href="https://github.com/immich-app/immich/releases/latest">
<img className="h-24 sm:p-3.5 p-3" alt="Download APK" src="/img/download-apk-github.svg" />
</a>
</div>
</div> </div>
<ThemedImage <ThemedImage
sources={{ dark: '/img/app-qr-code-dark.svg', light: '/img/app-qr-code-light.svg' }} sources={{ dark: '/img/app-qr-code-dark.svg', light: '/img/app-qr-code-light.svg' }}

View File

@@ -76,6 +76,7 @@ import {
mdiWeb, mdiWeb,
mdiDatabaseOutline, mdiDatabaseOutline,
mdiLinkEdit, mdiLinkEdit,
mdiTagFaces,
mdiMovieOpenPlayOutline, mdiMovieOpenPlayOutline,
} from '@mdi/js'; } from '@mdi/js';
import Layout from '@theme/Layout'; import Layout from '@theme/Layout';
@@ -83,6 +84,8 @@ import React from 'react';
import { Item, Timeline } from '../components/timeline'; import { Item, Timeline } from '../components/timeline';
const releases = { const releases = {
'v1.130.0': new Date(2025, 2, 25),
'v1.127.0': new Date(2025, 1, 26),
'v1.122.0': new Date(2024, 11, 5), 'v1.122.0': new Date(2024, 11, 5),
'v1.120.0': new Date(2024, 10, 6), 'v1.120.0': new Date(2024, 10, 6),
'v1.114.0': new Date(2024, 8, 6), 'v1.114.0': new Date(2024, 8, 6),
@@ -242,6 +245,13 @@ const roadmap: Item[] = [
]; ];
const milestones: Item[] = [ const milestones: Item[] = [
withRelease({
icon: mdiFolderMultiple,
iconColor: 'brown',
title: 'Folders view in the mobile app',
description: 'Browse your photos and videos in their folder structure inside the mobile app',
release: 'v1.130.0',
}),
{ {
icon: mdiStar, icon: mdiStar,
iconColor: 'gold', iconColor: 'gold',
@@ -249,6 +259,14 @@ const milestones: Item[] = [
description: 'Reached 60K Stars on GitHub!', description: 'Reached 60K Stars on GitHub!',
getDateLabel: withLanguage(new Date(2025, 2, 4)), getDateLabel: withLanguage(new Date(2025, 2, 4)),
}, },
withRelease({
icon: mdiTagFaces,
iconColor: 'teal',
title: 'Manual face tagging',
description:
'Manually tag or remove faces in photos and videos, even when automatic detection misses or misidentifies them.',
release: 'v1.127.0',
}),
withRelease({ withRelease({
icon: mdiLinkEdit, icon: mdiLinkEdit,
iconColor: 'crimson', iconColor: 'crimson',
@@ -266,8 +284,8 @@ const milestones: Item[] = [
withRelease({ withRelease({
icon: mdiDatabaseOutline, icon: mdiDatabaseOutline,
iconColor: 'brown', iconColor: 'brown',
title: 'Automatic database backups', title: 'Automatic database dumps',
description: 'Database backups are now integrated into the Immich server', description: 'Database dumps are now integrated into the Immich server',
release: 'v1.120.0', release: 'v1.120.0',
}), }),
{ {
@@ -300,7 +318,7 @@ const milestones: Item[] = [
withRelease({ withRelease({
icon: mdiFolderMultiple, icon: mdiFolderMultiple,
iconColor: 'brown', iconColor: 'brown',
title: 'Folders', title: 'Folders view',
description: 'Browse your photos and videos in their folder structure', description: 'Browse your photos and videos in their folder structure',
release: 'v1.113.0', release: 'v1.113.0',
}), }),

5
docs/static/.well-known/security.txt vendored Normal file
View File

@@ -0,0 +1,5 @@
Policy: https://github.com/immich-app/immich/blob/main/SECURITY.md
Contact: mailto:security@immich.app
Preferred-Languages: en
Expires: 2026-05-01T23:59:00.000Z
Canonical: https://immich.app/.well-known/security.txt

View File

@@ -1,4 +1,24 @@
[ [
{
"label": "v1.132.3",
"url": "https://v1.132.3.archive.immich.app"
},
{
"label": "v1.132.2",
"url": "https://v1.132.2.archive.immich.app"
},
{
"label": "v1.132.1",
"url": "https://v1.132.1.archive.immich.app"
},
{
"label": "v1.132.0",
"url": "https://v1.132.0.archive.immich.app"
},
{
"label": "v1.131.3",
"url": "https://v1.131.3.archive.immich.app"
},
{ {
"label": "v1.131.2", "label": "v1.131.2",
"url": "https://v1.131.2.archive.immich.app" "url": "https://v1.131.2.archive.immich.app"

13
docs/static/img/download-apk-github.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -28,14 +28,10 @@ services:
extra_hosts: extra_hosts:
- 'auth-server:host-gateway' - 'auth-server:host-gateway'
depends_on: depends_on:
- redis
- database - database
ports: ports:
- 2285:2285 - 2285:2285
redis:
image: redis:6.2-alpine@sha256:148bb5411c184abd288d9aaed139c98123eeb8824c5d3fce03cf721db58066d8
database: database:
image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52 image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52
command: -c fsync=off -c shared_preload_libraries=vectors.so command: -c fsync=off -c shared_preload_libraries=vectors.so

2718
e2e/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{ {
"name": "immich-e2e", "name": "immich-e2e",
"version": "1.131.2", "version": "1.132.3",
"description": "", "description": "",
"main": "index.js", "main": "index.js",
"type": "module", "type": "module",
@@ -25,7 +25,7 @@
"@immich/sdk": "file:../open-api/typescript-sdk", "@immich/sdk": "file:../open-api/typescript-sdk",
"@playwright/test": "^1.44.1", "@playwright/test": "^1.44.1",
"@types/luxon": "^3.4.2", "@types/luxon": "^3.4.2",
"@types/node": "^22.13.14", "@types/node": "^22.14.1",
"@types/oidc-provider": "^8.5.1", "@types/oidc-provider": "^8.5.1",
"@types/pg": "^8.11.0", "@types/pg": "^8.11.0",
"@types/pngjs": "^6.0.4", "@types/pngjs": "^6.0.4",

View File

@@ -1141,7 +1141,7 @@ describe('/asset', () => {
fNumber: 8, fNumber: 8,
focalLength: 97, focalLength: 97,
iso: 100, iso: 100,
lensModel: 'E PZ 18-105mm F4 G OSS', lensModel: 'Sony E PZ 18-105mm F4 G OSS',
fileSizeInByte: 25_001_984, fileSizeInByte: 25_001_984,
dateTimeOriginal: '2016-09-27T10:51:44+00:00', dateTimeOriginal: '2016-09-27T10:51:44+00:00',
orientation: '1', orientation: '1',
@@ -1163,7 +1163,7 @@ describe('/asset', () => {
fNumber: 22, fNumber: 22,
focalLength: 25, focalLength: 25,
iso: 100, iso: 100,
lensModel: 'E 25mm F2', lensModel: 'Zeiss Batis 25mm F2',
fileSizeInByte: 49_512_448, fileSizeInByte: 49_512_448,
dateTimeOriginal: '2016-01-08T14:08:01+00:00', dateTimeOriginal: '2016-01-08T14:08:01+00:00',
orientation: '1', orientation: '1',
@@ -1234,7 +1234,7 @@ describe('/asset', () => {
focalLength: 18.3, focalLength: 18.3,
iso: 100, iso: 100,
latitude: 36.613_24, latitude: 36.613_24,
lensModel: 'GR LENS 18.3mm F2.8', lensModel: '18.3mm F2.8',
longitude: -121.897_85, longitude: -121.897_85,
make: 'RICOH IMAGING COMPANY, LTD.', make: 'RICOH IMAGING COMPANY, LTD.',
model: 'RICOH GR III', model: 'RICOH GR III',

View File

@@ -1,43 +0,0 @@
import { deleteAssets, getAuditFiles, updateAsset, type LoginResponseDto } from '@immich/sdk';
import { asBearerAuth, utils } from 'src/utils';
import { beforeAll, describe, expect, it } from 'vitest';
describe('/audits', () => {
let admin: LoginResponseDto;
beforeAll(async () => {
await utils.resetDatabase();
await utils.resetFilesystem();
admin = await utils.adminSetup();
});
// TODO: Enable these tests again once #7436 is resolved as these were flaky
describe.skip('GET :/file-report', () => {
it('excludes assets without issues from report', async () => {
const [trashedAsset, archivedAsset] = await Promise.all([
utils.createAsset(admin.accessToken),
utils.createAsset(admin.accessToken),
utils.createAsset(admin.accessToken),
]);
await Promise.all([
deleteAssets({ assetBulkDeleteDto: { ids: [trashedAsset.id] } }, { headers: asBearerAuth(admin.accessToken) }),
updateAsset(
{
id: archivedAsset.id,
updateAssetDto: { isArchived: true },
},
{ headers: asBearerAuth(admin.accessToken) },
),
]);
const body = await getAuditFiles({
headers: asBearerAuth(admin.accessToken),
});
expect(body.orphans).toHaveLength(0);
expect(body.extras).toHaveLength(0);
});
});
});

View File

@@ -5,7 +5,7 @@ import { app, utils } from 'src/utils';
import request from 'supertest'; import request from 'supertest';
import { beforeEach, describe, expect, it } from 'vitest'; import { beforeEach, describe, expect, it } from 'vitest';
const { name, email, password } = signupDto.admin; const { email, password } = signupDto.admin;
describe(`/auth/admin-sign-up`, () => { describe(`/auth/admin-sign-up`, () => {
beforeEach(async () => { beforeEach(async () => {
@@ -13,33 +13,6 @@ describe(`/auth/admin-sign-up`, () => {
}); });
describe('POST /auth/admin-sign-up', () => { describe('POST /auth/admin-sign-up', () => {
const invalid = [
{
should: 'require an email address',
data: { name, password },
},
{
should: 'require a password',
data: { name, email },
},
{
should: 'require a name',
data: { email, password },
},
{
should: 'require a valid email',
data: { name, email: 'immich', password },
},
];
for (const { should, data } of invalid) {
it(`should ${should}`, async () => {
const { status, body } = await request(app).post('/auth/admin-sign-up').send(data);
expect(status).toEqual(400);
expect(body).toEqual(errorDto.badRequest());
});
}
it(`should sign up the admin`, async () => { it(`should sign up the admin`, async () => {
const { status, body } = await request(app).post('/auth/admin-sign-up').send(signupDto.admin); const { status, body } = await request(app).post('/auth/admin-sign-up').send(signupDto.admin);
expect(status).toBe(201); expect(status).toBe(201);
@@ -57,14 +30,6 @@ describe(`/auth/admin-sign-up`, () => {
}); });
}); });
it('should transform email to lower case', async () => {
const { status, body } = await request(app)
.post('/auth/admin-sign-up')
.send({ ...signupDto.admin, email: 'aDmIn@IMMICH.cloud' });
expect(status).toEqual(201);
expect(body).toEqual(signupResponseDto.admin);
});
it('should not allow a second admin to sign up', async () => { it('should not allow a second admin to sign up', async () => {
await signUpAdmin({ signUpDto: signupDto.admin }); await signUpAdmin({ signUpDto: signupDto.admin });

View File

@@ -78,7 +78,7 @@ describe('/jobs', () => {
} }
await utils.jobCommand(admin.accessToken, JobName.MetadataExtraction, { await utils.jobCommand(admin.accessToken, JobName.MetadataExtraction, {
command: JobCommand.Empty, command: JobCommand.Clear,
force: false, force: false,
}); });
@@ -160,7 +160,7 @@ describe('/jobs', () => {
expect(assetBefore.thumbhash).toBeNull(); expect(assetBefore.thumbhash).toBeNull();
await utils.jobCommand(admin.accessToken, JobName.ThumbnailGeneration, { await utils.jobCommand(admin.accessToken, JobName.ThumbnailGeneration, {
command: JobCommand.Empty, command: JobCommand.Clear,
force: false, force: false,
}); });

View File

@@ -6,6 +6,7 @@ import {
startOAuth, startOAuth,
updateConfig, updateConfig,
} from '@immich/sdk'; } from '@immich/sdk';
import { createHash, randomBytes } from 'node:crypto';
import { errorDto } from 'src/responses'; import { errorDto } from 'src/responses';
import { OAuthClient, OAuthUser } from 'src/setup/auth-server'; import { OAuthClient, OAuthUser } from 'src/setup/auth-server';
import { app, asBearerAuth, baseUrl, utils } from 'src/utils'; import { app, asBearerAuth, baseUrl, utils } from 'src/utils';
@@ -21,18 +22,30 @@ const mobileOverrideRedirectUri = 'https://photos.immich.app/oauth/mobile-redire
const redirect = async (url: string, cookies?: string[]) => { const redirect = async (url: string, cookies?: string[]) => {
const { headers } = await request(url) const { headers } = await request(url)
.get('/') .get('')
.set('Cookie', cookies || []); .set('Cookie', cookies || []);
return { cookies: (headers['set-cookie'] as unknown as string[]) || [], location: headers.location }; return { cookies: (headers['set-cookie'] as unknown as string[]) || [], location: headers.location };
}; };
// Function to generate a code challenge from the verifier
const generateCodeChallenge = async (codeVerifier: string): Promise<string> => {
const hashed = createHash('sha256').update(codeVerifier).digest();
return hashed.toString('base64url');
};
const loginWithOAuth = async (sub: OAuthUser | string, redirectUri?: string) => { const loginWithOAuth = async (sub: OAuthUser | string, redirectUri?: string) => {
const { url } = await startOAuth({ oAuthConfigDto: { redirectUri: redirectUri ?? `${baseUrl}/auth/login` } }); const state = randomBytes(16).toString('base64url');
const codeVerifier = randomBytes(64).toString('base64url');
const codeChallenge = await generateCodeChallenge(codeVerifier);
const { url } = await startOAuth({
oAuthConfigDto: { redirectUri: redirectUri ?? `${baseUrl}/auth/login`, state, codeChallenge },
});
// login // login
const response1 = await redirect(url.replace(authServer.internal, authServer.external)); const response1 = await redirect(url.replace(authServer.internal, authServer.external));
const response2 = await request(authServer.external + response1.location) const response2 = await request(authServer.external + response1.location)
.post('/') .post('')
.set('Cookie', response1.cookies) .set('Cookie', response1.cookies)
.type('form') .type('form')
.send({ prompt: 'login', login: sub, password: 'password' }); .send({ prompt: 'login', login: sub, password: 'password' });
@@ -40,7 +53,7 @@ const loginWithOAuth = async (sub: OAuthUser | string, redirectUri?: string) =>
// approve // approve
const response3 = await redirect(response2.header.location, response1.cookies); const response3 = await redirect(response2.header.location, response1.cookies);
const response4 = await request(authServer.external + response3.location) const response4 = await request(authServer.external + response3.location)
.post('/') .post('')
.type('form') .type('form')
.set('Cookie', response3.cookies) .set('Cookie', response3.cookies)
.send({ prompt: 'consent' }); .send({ prompt: 'consent' });
@@ -51,9 +64,9 @@ const loginWithOAuth = async (sub: OAuthUser | string, redirectUri?: string) =>
expect(redirectUrl).toBeDefined(); expect(redirectUrl).toBeDefined();
const params = new URL(redirectUrl).searchParams; const params = new URL(redirectUrl).searchParams;
expect(params.get('code')).toBeDefined(); expect(params.get('code')).toBeDefined();
expect(params.get('state')).toBeDefined(); expect(params.get('state')).toBe(state);
return redirectUrl; return { url: redirectUrl, state, codeVerifier };
}; };
const setupOAuth = async (token: string, dto: Partial<SystemConfigOAuthDto>) => { const setupOAuth = async (token: string, dto: Partial<SystemConfigOAuthDto>) => {
@@ -119,9 +132,42 @@ describe(`/oauth`, () => {
expect(body).toEqual(errorDto.badRequest(['url should not be empty'])); expect(body).toEqual(errorDto.badRequest(['url should not be empty']));
}); });
it('should auto register the user by default', async () => { it(`should throw an error if the state is not provided`, async () => {
const url = await loginWithOAuth('oauth-auto-register'); const { url } = await loginWithOAuth('oauth-auto-register');
const { status, body } = await request(app).post('/oauth/callback').send({ url }); const { status, body } = await request(app).post('/oauth/callback').send({ url });
expect(status).toBe(400);
expect(body).toEqual(errorDto.badRequest('OAuth state is missing'));
});
it(`should throw an error if the state mismatches`, async () => {
const callbackParams = await loginWithOAuth('oauth-auto-register');
const { state } = await loginWithOAuth('oauth-auto-register');
const { status } = await request(app)
.post('/oauth/callback')
.send({ ...callbackParams, state });
expect(status).toBeGreaterThanOrEqual(400);
});
it(`should throw an error if the codeVerifier is not provided`, async () => {
const { url, state } = await loginWithOAuth('oauth-auto-register');
const { status, body } = await request(app).post('/oauth/callback').send({ url, state });
expect(status).toBe(400);
expect(body).toEqual(errorDto.badRequest('OAuth code verifier is missing'));
});
it(`should throw an error if the codeVerifier doesn't match the challenge`, async () => {
const callbackParams = await loginWithOAuth('oauth-auto-register');
const { codeVerifier } = await loginWithOAuth('oauth-auto-register');
const { status, body } = await request(app)
.post('/oauth/callback')
.send({ ...callbackParams, codeVerifier });
console.log(body);
expect(status).toBeGreaterThanOrEqual(400);
});
it('should auto register the user by default', async () => {
const callbackParams = await loginWithOAuth('oauth-auto-register');
const { status, body } = await request(app).post('/oauth/callback').send(callbackParams);
expect(status).toBe(201); expect(status).toBe(201);
expect(body).toMatchObject({ expect(body).toMatchObject({
accessToken: expect.any(String), accessToken: expect.any(String),
@@ -132,16 +178,30 @@ describe(`/oauth`, () => {
}); });
}); });
it('should allow passing state and codeVerifier via cookies', async () => {
const { url, state, codeVerifier } = await loginWithOAuth('oauth-auto-register');
const { status, body } = await request(app)
.post('/oauth/callback')
.set('Cookie', [`immich_oauth_state=${state}`, `immich_oauth_code_verifier=${codeVerifier}`])
.send({ url });
expect(status).toBe(201);
expect(body).toMatchObject({
accessToken: expect.any(String),
userId: expect.any(String),
userEmail: 'oauth-auto-register@immich.app',
});
});
it('should handle a user without an email', async () => { it('should handle a user without an email', async () => {
const url = await loginWithOAuth(OAuthUser.NO_EMAIL); const callbackParams = await loginWithOAuth(OAuthUser.NO_EMAIL);
const { status, body } = await request(app).post('/oauth/callback').send({ url }); const { status, body } = await request(app).post('/oauth/callback').send(callbackParams);
expect(status).toBe(400); expect(status).toBe(400);
expect(body).toEqual(errorDto.badRequest('OAuth profile does not have an email address')); expect(body).toEqual(errorDto.badRequest('OAuth profile does not have an email address'));
}); });
it('should set the quota from a claim', async () => { it('should set the quota from a claim', async () => {
const url = await loginWithOAuth(OAuthUser.WITH_QUOTA); const callbackParams = await loginWithOAuth(OAuthUser.WITH_QUOTA);
const { status, body } = await request(app).post('/oauth/callback').send({ url }); const { status, body } = await request(app).post('/oauth/callback').send(callbackParams);
expect(status).toBe(201); expect(status).toBe(201);
expect(body).toMatchObject({ expect(body).toMatchObject({
accessToken: expect.any(String), accessToken: expect.any(String),
@@ -154,8 +214,8 @@ describe(`/oauth`, () => {
}); });
it('should set the storage label from a claim', async () => { it('should set the storage label from a claim', async () => {
const url = await loginWithOAuth(OAuthUser.WITH_USERNAME); const callbackParams = await loginWithOAuth(OAuthUser.WITH_USERNAME);
const { status, body } = await request(app).post('/oauth/callback').send({ url }); const { status, body } = await request(app).post('/oauth/callback').send(callbackParams);
expect(status).toBe(201); expect(status).toBe(201);
expect(body).toMatchObject({ expect(body).toMatchObject({
accessToken: expect.any(String), accessToken: expect.any(String),
@@ -176,8 +236,8 @@ describe(`/oauth`, () => {
buttonText: 'Login with Immich', buttonText: 'Login with Immich',
signingAlgorithm: 'RS256', signingAlgorithm: 'RS256',
}); });
const url = await loginWithOAuth('oauth-RS256-token'); const callbackParams = await loginWithOAuth('oauth-RS256-token');
const { status, body } = await request(app).post('/oauth/callback').send({ url }); const { status, body } = await request(app).post('/oauth/callback').send(callbackParams);
expect(status).toBe(201); expect(status).toBe(201);
expect(body).toMatchObject({ expect(body).toMatchObject({
accessToken: expect.any(String), accessToken: expect.any(String),
@@ -196,8 +256,8 @@ describe(`/oauth`, () => {
buttonText: 'Login with Immich', buttonText: 'Login with Immich',
profileSigningAlgorithm: 'RS256', profileSigningAlgorithm: 'RS256',
}); });
const url = await loginWithOAuth('oauth-signed-profile'); const callbackParams = await loginWithOAuth('oauth-signed-profile');
const { status, body } = await request(app).post('/oauth/callback').send({ url }); const { status, body } = await request(app).post('/oauth/callback').send(callbackParams);
expect(status).toBe(201); expect(status).toBe(201);
expect(body).toMatchObject({ expect(body).toMatchObject({
userId: expect.any(String), userId: expect.any(String),
@@ -213,8 +273,8 @@ describe(`/oauth`, () => {
buttonText: 'Login with Immich', buttonText: 'Login with Immich',
signingAlgorithm: 'something-that-does-not-work', signingAlgorithm: 'something-that-does-not-work',
}); });
const url = await loginWithOAuth('oauth-signed-bad'); const callbackParams = await loginWithOAuth('oauth-signed-bad');
const { status, body } = await request(app).post('/oauth/callback').send({ url }); const { status, body } = await request(app).post('/oauth/callback').send(callbackParams);
expect(status).toBe(500); expect(status).toBe(500);
expect(body).toMatchObject({ expect(body).toMatchObject({
error: 'Internal Server Error', error: 'Internal Server Error',
@@ -235,8 +295,8 @@ describe(`/oauth`, () => {
}); });
it('should not auto register the user', async () => { it('should not auto register the user', async () => {
const url = await loginWithOAuth('oauth-no-auto-register'); const callbackParams = await loginWithOAuth('oauth-no-auto-register');
const { status, body } = await request(app).post('/oauth/callback').send({ url }); const { status, body } = await request(app).post('/oauth/callback').send(callbackParams);
expect(status).toBe(400); expect(status).toBe(400);
expect(body).toEqual(errorDto.badRequest('User does not exist and auto registering is disabled.')); expect(body).toEqual(errorDto.badRequest('User does not exist and auto registering is disabled.'));
}); });
@@ -247,8 +307,8 @@ describe(`/oauth`, () => {
email: 'oauth-user3@immich.app', email: 'oauth-user3@immich.app',
password: 'password', password: 'password',
}); });
const url = await loginWithOAuth('oauth-user3'); const callbackParams = await loginWithOAuth('oauth-user3');
const { status, body } = await request(app).post('/oauth/callback').send({ url }); const { status, body } = await request(app).post('/oauth/callback').send(callbackParams);
expect(status).toBe(201); expect(status).toBe(201);
expect(body).toMatchObject({ expect(body).toMatchObject({
userId, userId,
@@ -286,13 +346,15 @@ describe(`/oauth`, () => {
}); });
it('should auto register the user by default', async () => { it('should auto register the user by default', async () => {
const url = await loginWithOAuth('oauth-mobile-override', 'app.immich:///oauth-callback'); const callbackParams = await loginWithOAuth('oauth-mobile-override', 'app.immich:///oauth-callback');
expect(url).toEqual(expect.stringContaining(mobileOverrideRedirectUri)); expect(callbackParams.url).toEqual(expect.stringContaining(mobileOverrideRedirectUri));
// simulate redirecting back to mobile app // simulate redirecting back to mobile app
const redirectUri = url.replace(mobileOverrideRedirectUri, 'app.immich:///oauth-callback'); const url = callbackParams.url.replace(mobileOverrideRedirectUri, 'app.immich:///oauth-callback');
const { status, body } = await request(app).post('/oauth/callback').send({ url: redirectUri }); const { status, body } = await request(app)
.post('/oauth/callback')
.send({ ...callbackParams, url });
expect(status).toBe(201); expect(status).toBe(201);
expect(body).toMatchObject({ expect(body).toMatchObject({
accessToken: expect.any(String), accessToken: expect.any(String),

View File

@@ -246,15 +246,7 @@ describe('/shared-links', () => {
const { status, body } = await request(app).get('/shared-links/me').query({ key: linkWithMetadata.key }); const { status, body } = await request(app).get('/shared-links/me').query({ key: linkWithMetadata.key });
expect(status).toBe(200); expect(status).toBe(200);
expect(body.assets).toHaveLength(1); expect(body.assets).toHaveLength(0);
expect(body.assets[0]).toEqual(
expect.objectContaining({
originalFileName: 'example.png',
localDateTime: expect.any(String),
fileCreatedAt: expect.any(String),
exifInfo: expect.any(Object),
}),
);
expect(body.album).toBeDefined(); expect(body.album).toBeDefined();
}); });

View File

@@ -215,6 +215,19 @@ describe('/admin/users', () => {
const user = await getMyUser({ headers: asBearerAuth(token.accessToken) }); const user = await getMyUser({ headers: asBearerAuth(token.accessToken) });
expect(user).toMatchObject({ email: nonAdmin.userEmail }); expect(user).toMatchObject({ email: nonAdmin.userEmail });
}); });
it('should update the avatar color', async () => {
const { status, body } = await request(app)
.put(`/admin/users/${admin.userId}`)
.send({ avatarColor: 'orange' })
.set('Authorization', `Bearer ${admin.accessToken}`);
expect(status).toBe(200);
expect(body).toMatchObject({ avatarColor: 'orange' });
const after = await getUserAdmin({ id: admin.userId }, { headers: asBearerAuth(admin.accessToken) });
expect(after).toMatchObject({ avatarColor: 'orange' });
});
}); });
describe('PUT /admin/users/:id/preferences', () => { describe('PUT /admin/users/:id/preferences', () => {
@@ -240,19 +253,6 @@ describe('/admin/users', () => {
expect(after).toMatchObject({ memories: { enabled: false } }); expect(after).toMatchObject({ memories: { enabled: false } });
}); });
it('should update the avatar color', async () => {
const { status, body } = await request(app)
.put(`/admin/users/${admin.userId}/preferences`)
.send({ avatar: { color: 'orange' } })
.set('Authorization', `Bearer ${admin.accessToken}`);
expect(status).toBe(200);
expect(body).toMatchObject({ avatar: { color: 'orange' } });
const after = await getUserPreferencesAdmin({ id: admin.userId }, { headers: asBearerAuth(admin.accessToken) });
expect(after).toMatchObject({ avatar: { color: 'orange' } });
});
it('should update download archive size', async () => { it('should update download archive size', async () => {
const { status, body } = await request(app) const { status, body } = await request(app)
.put(`/admin/users/${admin.userId}/preferences`) .put(`/admin/users/${admin.userId}/preferences`)

View File

@@ -31,33 +31,7 @@ describe('/users', () => {
); );
}); });
describe('GET /users', () => {
it('should require authentication', async () => {
const { status, body } = await request(app).get('/users');
expect(status).toBe(401);
expect(body).toEqual(errorDto.unauthorized);
});
it('should get users', async () => {
const { status, body } = await request(app).get('/users').set('Authorization', `Bearer ${admin.accessToken}`);
expect(status).toEqual(200);
expect(body).toHaveLength(2);
expect(body).toEqual(
expect.arrayContaining([
expect.objectContaining({ email: 'admin@immich.cloud' }),
expect.objectContaining({ email: 'user2@immich.cloud' }),
]),
);
});
});
describe('GET /users/me', () => { describe('GET /users/me', () => {
it('should require authentication', async () => {
const { status, body } = await request(app).get(`/users/me`);
expect(status).toBe(401);
expect(body).toEqual(errorDto.unauthorized);
});
it('should not work for shared links', async () => { it('should not work for shared links', async () => {
const album = await utils.createAlbum(admin.accessToken, { albumName: 'Album' }); const album = await utils.createAlbum(admin.accessToken, { albumName: 'Album' });
const sharedLink = await utils.createSharedLink(admin.accessToken, { const sharedLink = await utils.createSharedLink(admin.accessToken, {
@@ -99,24 +73,6 @@ describe('/users', () => {
}); });
describe('PUT /users/me', () => { describe('PUT /users/me', () => {
it('should require authentication', async () => {
const { status, body } = await request(app).put(`/users/me`);
expect(status).toBe(401);
expect(body).toEqual(errorDto.unauthorized);
});
for (const key of ['email', 'name']) {
it(`should not allow null ${key}`, async () => {
const dto = { [key]: null };
const { status, body } = await request(app)
.put(`/users/me`)
.set('Authorization', `Bearer ${admin.accessToken}`)
.send(dto);
expect(status).toBe(400);
expect(body).toEqual(errorDto.badRequest());
});
}
it('should update first and last name', async () => { it('should update first and last name', async () => {
const before = await getMyUser({ headers: asBearerAuth(admin.accessToken) }); const before = await getMyUser({ headers: asBearerAuth(admin.accessToken) });
@@ -183,6 +139,19 @@ describe('/users', () => {
profileChangedAt: expect.anything(), profileChangedAt: expect.anything(),
}); });
}); });
it('should update avatar color', async () => {
const { status, body } = await request(app)
.put(`/users/me`)
.send({ avatarColor: 'blue' })
.set('Authorization', `Bearer ${admin.accessToken}`);
expect(status).toBe(200);
expect(body).toMatchObject({ avatarColor: 'blue' });
const after = await getMyUser({ headers: asBearerAuth(admin.accessToken) });
expect(after).toMatchObject({ avatarColor: 'blue' });
});
}); });
describe('PUT /users/me/preferences', () => { describe('PUT /users/me/preferences', () => {
@@ -202,19 +171,6 @@ describe('/users', () => {
expect(after).toMatchObject({ memories: { enabled: false } }); expect(after).toMatchObject({ memories: { enabled: false } });
}); });
it('should update avatar color', async () => {
const { status, body } = await request(app)
.put(`/users/me/preferences`)
.send({ avatar: { color: 'blue' } })
.set('Authorization', `Bearer ${admin.accessToken}`);
expect(status).toBe(200);
expect(body).toMatchObject({ avatar: { color: 'blue' } });
const after = await getMyPreferences({ headers: asBearerAuth(admin.accessToken) });
expect(after).toMatchObject({ avatar: { color: 'blue' } });
});
it('should require an integer for download archive size', async () => { it('should require an integer for download archive size', async () => {
const { status, body } = await request(app) const { status, body } = await request(app)
.put(`/users/me/preferences`) .put(`/users/me/preferences`)
@@ -269,11 +225,6 @@ describe('/users', () => {
}); });
describe('GET /users/:id', () => { describe('GET /users/:id', () => {
it('should require authentication', async () => {
const { status } = await request(app).get(`/users/${admin.userId}`);
expect(status).toEqual(401);
});
it('should get the user', async () => { it('should get the user', async () => {
const { status, body } = await request(app) const { status, body } = await request(app)
.get(`/users/${admin.userId}`) .get(`/users/${admin.userId}`)
@@ -292,12 +243,6 @@ describe('/users', () => {
}); });
describe('GET /server/license', () => { describe('GET /server/license', () => {
it('should require authentication', async () => {
const { status, body } = await request(app).get('/users/me/license');
expect(status).toBe(401);
expect(body).toEqual(errorDto.unauthorized);
});
it('should return the user license', async () => { it('should return the user license', async () => {
await request(app) await request(app)
.put('/users/me/license') .put('/users/me/license')
@@ -315,11 +260,6 @@ describe('/users', () => {
}); });
describe('PUT /users/me/license', () => { describe('PUT /users/me/license', () => {
it('should require authentication', async () => {
const { status } = await request(app).put(`/users/me/license`);
expect(status).toEqual(401);
});
it('should set the user license', async () => { it('should set the user license', async () => {
const { status, body } = await request(app) const { status, body } = await request(app)
.put(`/users/me/license`) .put(`/users/me/license`)

View File

@@ -25,7 +25,7 @@ test.describe('Registration', () => {
// login // login
await expect(page).toHaveTitle(/Login/); await expect(page).toHaveTitle(/Login/);
await page.goto('/auth/login'); await page.goto('/auth/login?autoLaunch=0');
await page.getByLabel('Email').fill('admin@immich.app'); await page.getByLabel('Email').fill('admin@immich.app');
await page.getByLabel('Password').fill('password'); await page.getByLabel('Password').fill('password');
await page.getByRole('button', { name: 'Login' }).click(); await page.getByRole('button', { name: 'Login' }).click();
@@ -59,7 +59,7 @@ test.describe('Registration', () => {
await context.clearCookies(); await context.clearCookies();
// login // login
await page.goto('/auth/login'); await page.goto('/auth/login?autoLaunch=0');
await page.getByLabel('Email').fill('user@immich.cloud'); await page.getByLabel('Email').fill('user@immich.cloud');
await page.getByLabel('Password').fill('password'); await page.getByLabel('Password').fill('password');
await page.getByRole('button', { name: 'Login' }).click(); await page.getByRole('button', { name: 'Login' }).click();
@@ -72,7 +72,7 @@ test.describe('Registration', () => {
await page.getByRole('button', { name: 'Change password' }).click(); await page.getByRole('button', { name: 'Change password' }).click();
// login with new password // login with new password
await expect(page).toHaveURL('/auth/login'); await expect(page).toHaveURL('/auth/login?autoLaunch=0');
await page.getByLabel('Email').fill('user@immich.cloud'); await page.getByLabel('Email').fill('user@immich.cloud');
await page.getByLabel('Password').fill('new-password'); await page.getByLabel('Password').fill('new-password');
await page.getByRole('button', { name: 'Login' }).click(); await page.getByRole('button', { name: 'Login' }).click();

View File

@@ -8,36 +8,35 @@ function imageLocator(page: Page) {
test.describe('Photo Viewer', () => { test.describe('Photo Viewer', () => {
let admin: LoginResponseDto; let admin: LoginResponseDto;
let asset: AssetMediaResponseDto; let asset: AssetMediaResponseDto;
let rawAsset: AssetMediaResponseDto;
test.beforeAll(async () => { test.beforeAll(async () => {
utils.initSdk(); utils.initSdk();
await utils.resetDatabase(); await utils.resetDatabase();
admin = await utils.adminSetup(); admin = await utils.adminSetup();
asset = await utils.createAsset(admin.accessToken); asset = await utils.createAsset(admin.accessToken);
rawAsset = await utils.createAsset(admin.accessToken, { assetData: { filename: 'test.arw' } });
}); });
test.beforeEach(async ({ context, page }) => { test.beforeEach(async ({ context, page }) => {
// before each test, login as user // before each test, login as user
await utils.setAuthCookies(context, admin.accessToken); await utils.setAuthCookies(context, admin.accessToken);
await page.goto('/photos');
await page.waitForLoadState('networkidle'); await page.waitForLoadState('networkidle');
}); });
test('initially shows a loading spinner', async ({ page }) => { test('loads original photo when zoomed', async ({ page }) => {
await page.route(`/api/assets/${asset.id}/thumbnail**`, async (route) => {
// slow down the request for thumbnail, so spinner has chance to show up
await new Promise((f) => setTimeout(f, 2000));
await route.continue();
});
await page.goto(`/photos/${asset.id}`); await page.goto(`/photos/${asset.id}`);
await page.waitForLoadState('load'); await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('thumbnail');
// this is the spinner const box = await imageLocator(page).boundingBox();
await page.waitForSelector('svg[role=status]'); expect(box).toBeTruthy();
await expect(page.getByTestId('loading-spinner')).toBeVisible(); const { x, y, width, height } = box!;
await page.mouse.move(x + width / 2, y + height / 2);
await page.mouse.wheel(0, -1);
await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('original');
}); });
test('loads high resolution photo when zoomed', async ({ page }) => { test('loads fullsize image when zoomed and original is web-incompatible', async ({ page }) => {
await page.goto(`/photos/${asset.id}`); await page.goto(`/photos/${rawAsset.id}`);
await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('thumbnail'); await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('thumbnail');
const box = await imageLocator(page).boundingBox(); const box = await imageLocator(page).boundingBox();
expect(box).toBeTruthy(); expect(box).toBeTruthy();

View File

@@ -48,14 +48,14 @@ test.describe('Shared Links', () => {
await page.waitForSelector('[data-group] svg'); await page.waitForSelector('[data-group] svg');
await page.getByRole('checkbox').click(); await page.getByRole('checkbox').click();
await page.getByRole('button', { name: 'Download' }).click(); await page.getByRole('button', { name: 'Download' }).click();
await page.getByText('DOWNLOADING', { exact: true }).waitFor(); await page.waitForEvent('download');
}); });
test('download all from shared link', async ({ page }) => { test('download all from shared link', async ({ page }) => {
await page.goto(`/share/${sharedLink.key}`); await page.goto(`/share/${sharedLink.key}`);
await page.getByRole('heading', { name: 'Test Album' }).waitFor(); await page.getByRole('heading', { name: 'Test Album' }).waitFor();
await page.getByRole('button', { name: 'Download' }).click(); await page.getByRole('button', { name: 'Download' }).click();
await page.getByText('DOWNLOADING', { exact: true }).waitFor(); await page.waitForEvent('download');
}); });
test('enter password for a shared link', async ({ page }) => { test('enter password for a shared link', async ({ page }) => {

View File

@@ -4,6 +4,7 @@
"account_settings": "إعدادات الحساب", "account_settings": "إعدادات الحساب",
"acknowledge": "أُدرك ذلك", "acknowledge": "أُدرك ذلك",
"action": "التحكم", "action": "التحكم",
"action_common_update": "تحديث",
"actions": "العمليات", "actions": "العمليات",
"active": "نشط", "active": "نشط",
"activity": "النشاط", "activity": "النشاط",
@@ -13,6 +14,7 @@
"add_a_location": "إضافة موقع", "add_a_location": "إضافة موقع",
"add_a_name": "إضافة إسم", "add_a_name": "إضافة إسم",
"add_a_title": "إضافة عنوان", "add_a_title": "إضافة عنوان",
"add_endpoint": "Add endpoint",
"add_exclusion_pattern": "إضافة نمط إستثناء", "add_exclusion_pattern": "إضافة نمط إستثناء",
"add_import_path": "إضافة مسار الإستيراد", "add_import_path": "إضافة مسار الإستيراد",
"add_location": "إضافة موقع", "add_location": "إضافة موقع",
@@ -22,6 +24,8 @@
"add_photos": "إضافة صور", "add_photos": "إضافة صور",
"add_to": "إضافة إلى…", "add_to": "إضافة إلى…",
"add_to_album": "إضافة إلى ألبوم", "add_to_album": "إضافة إلى ألبوم",
"add_to_album_bottom_sheet_added": "تمت الاضافة{album}",
"add_to_album_bottom_sheet_already_exists": "موجودة مسبقا {album}",
"add_to_shared_album": "إضافة إلى ألبوم مشترك", "add_to_shared_album": "إضافة إلى ألبوم مشترك",
"add_url": "إضافة رابط", "add_url": "إضافة رابط",
"added_to_archive": "أُضيفت للأرشيف", "added_to_archive": "أُضيفت للأرشيف",
@@ -162,7 +166,6 @@
"no_pattern_added": "لم يتم إضافة أي أنماط", "no_pattern_added": "لم يتم إضافة أي أنماط",
"note_apply_storage_label_previous_assets": "ملاحظة: لتطبيق تسمية التخزين على المحتويات التي تم رفعها سابقًا، قم بتشغيل", "note_apply_storage_label_previous_assets": "ملاحظة: لتطبيق تسمية التخزين على المحتويات التي تم رفعها سابقًا، قم بتشغيل",
"note_cannot_be_changed_later": "ملاحظة: لا يمكن تغيير هذا لاحقًا!", "note_cannot_be_changed_later": "ملاحظة: لا يمكن تغيير هذا لاحقًا!",
"note_unlimited_quota": "ملاحظة: أدخل 0 للحصول على حصة غير محدودة",
"notification_email_from_address": "عنوان المرسل", "notification_email_from_address": "عنوان المرسل",
"notification_email_from_address_description": "عنوان البريد الإلكتروني للمرسل، على سبيل المثال: \"Immich Photo Server noreply@example.com\"", "notification_email_from_address_description": "عنوان البريد الإلكتروني للمرسل، على سبيل المثال: \"Immich Photo Server noreply@example.com\"",
"notification_email_host_description": "مضيف خادم البريد الإلكتروني (مثلًا: smtp.immich.app)", "notification_email_host_description": "مضيف خادم البريد الإلكتروني (مثلًا: smtp.immich.app)",
@@ -363,6 +366,16 @@
"admin_password": "كلمة سر المشرف", "admin_password": "كلمة سر المشرف",
"administration": "الإدارة", "administration": "الإدارة",
"advanced": "متقدم", "advanced": "متقدم",
"advanced_settings_log_level_title": "Log level: {}",
"advanced_settings_prefer_remote_subtitle": "تكون بعض الأجهزة بطيئة للغاية في تحميل الصور المصغرة من الأصول الموجودة على الجهاز. قم بتنشيط هذا الإعداد لتحميل الصور البعيدة بدلاً من ذلك.",
"advanced_settings_prefer_remote_title": "تفضل الصور البعيدة",
"advanced_settings_proxy_headers_subtitle": "Define proxy headers Immich should send with each network request",
"advanced_settings_proxy_headers_title": "Proxy Headers",
"advanced_settings_self_signed_ssl_subtitle": "Skips SSL certificate verification for the server endpoint. Required for self-signed certificates.",
"advanced_settings_self_signed_ssl_title": "السماح بشهادات SSL الموقعة ذاتيًا",
"advanced_settings_tile_subtitle": "إعدادات المستخدم المتقدمة",
"advanced_settings_troubleshooting_subtitle": "تمكين الميزات الإضافية لاستكشاف الأخطاء وإصلاحها",
"advanced_settings_troubleshooting_title": "استكشاف الأخطاء وإصلاحها",
"age_months": "عمر {months, plural, one {# شهر} other {# أشهر}}", "age_months": "عمر {months, plural, one {# شهر} other {# أشهر}}",
"age_year_months": "عمر سنة واحدة، {months, plural, one {# شهر} other {# أشهر}}", "age_year_months": "عمر سنة واحدة، {months, plural, one {# شهر} other {# أشهر}}",
"age_years": "{years, plural, other {العمر #}}", "age_years": "{years, plural, other {العمر #}}",
@@ -371,6 +384,8 @@
"album_cover_updated": "تم تحديث غلاف الألبوم", "album_cover_updated": "تم تحديث غلاف الألبوم",
"album_delete_confirmation": "هل أنت متأكد أنك تريد حذف الألبوم {album}؟", "album_delete_confirmation": "هل أنت متأكد أنك تريد حذف الألبوم {album}؟",
"album_delete_confirmation_description": "إذا تمت مشاركة هذا الألبوم، فلن يتمكن المستخدمون الآخرون من الوصول إليه بعد الآن.", "album_delete_confirmation_description": "إذا تمت مشاركة هذا الألبوم، فلن يتمكن المستخدمون الآخرون من الوصول إليه بعد الآن.",
"album_info_card_backup_album_excluded": "مستبعد",
"album_info_card_backup_album_included": "متضمنة",
"album_info_updated": "تم تحديث معلومات الألبوم", "album_info_updated": "تم تحديث معلومات الألبوم",
"album_leave": "هل تريد مغادرة الألبوم؟", "album_leave": "هل تريد مغادرة الألبوم؟",
"album_leave_confirmation": "هل أنت متأكد أنك تريد مغادرة {album}؟", "album_leave_confirmation": "هل أنت متأكد أنك تريد مغادرة {album}؟",
@@ -379,10 +394,22 @@
"album_remove_user": "هل ترغب في إزالة المستخدم؟", "album_remove_user": "هل ترغب في إزالة المستخدم؟",
"album_remove_user_confirmation": "هل أنت متأكد أنك تريد إزالة {user}؟", "album_remove_user_confirmation": "هل أنت متأكد أنك تريد إزالة {user}؟",
"album_share_no_users": "يبدو أنك قمت بمشاركة هذا الألبوم مع جميع المستخدمين أو ليس لديك أي مستخدم للمشاركة معه.", "album_share_no_users": "يبدو أنك قمت بمشاركة هذا الألبوم مع جميع المستخدمين أو ليس لديك أي مستخدم للمشاركة معه.",
"album_thumbnail_card_item": "عنصر واحد",
"album_thumbnail_card_items": "{} items",
"album_thumbnail_card_shared": " · . مشترك",
"album_thumbnail_shared_by": "Shared by {}",
"album_updated": "تم تحديث الألبوم", "album_updated": "تم تحديث الألبوم",
"album_updated_setting_description": "تلقي إشعارًا عبر البريد الإلكتروني عندما يحتوي الألبوم المشترك على محتويات جديدة", "album_updated_setting_description": "تلقي إشعارًا عبر البريد الإلكتروني عندما يحتوي الألبوم المشترك على محتويات جديدة",
"album_user_left": "تم ترك {album}", "album_user_left": "تم ترك {album}",
"album_user_removed": "تم إزالة {user}", "album_user_removed": "تم إزالة {user}",
"album_viewer_appbar_delete_confirm": "هل أنت متأكد أنك تريد حذف هذا الألبوم من حسابك؟",
"album_viewer_appbar_share_err_delete": "فشل في حذف الألبوم",
"album_viewer_appbar_share_err_leave": "فشل في ترك الألبوم",
"album_viewer_appbar_share_err_remove": "هناك مشاكل في إزالة الأصول من الألبوم",
"album_viewer_appbar_share_err_title": "فشل في تغيير عنوان الألبوم",
"album_viewer_appbar_share_leave": "ترك الألبوم",
"album_viewer_appbar_share_to": "حصة ل",
"album_viewer_page_share_add_users": "اضافة مستخدمين",
"album_with_link_access": "السماح لأي شخص لديه الرابط برؤية الصور والأشخاص الموجودين في هذا الألبوم.", "album_with_link_access": "السماح لأي شخص لديه الرابط برؤية الصور والأشخاص الموجودين في هذا الألبوم.",
"albums": "الألبومات", "albums": "الألبومات",
"albums_count": "{count, plural, one {{count, number} ألبوم} other {{count, number} ألبومات}}", "albums_count": "{count, plural, one {{count, number} ألبوم} other {{count, number} ألبومات}}",
@@ -400,42 +427,133 @@
"api_key_description": "سيتم عرض هذه القيمة مرة واحدة فقط. يرجى التأكد من نسخها قبل إغلاق النافذة.", "api_key_description": "سيتم عرض هذه القيمة مرة واحدة فقط. يرجى التأكد من نسخها قبل إغلاق النافذة.",
"api_key_empty": "يجب ألا يكون اسم مفتاح API فارغًا", "api_key_empty": "يجب ألا يكون اسم مفتاح API فارغًا",
"api_keys": "مفاتيح واجهة برمجة التطبيقات", "api_keys": "مفاتيح واجهة برمجة التطبيقات",
"app_bar_signout_dialog_content": "هل أنت متأكد أنك تريد الخروج",
"app_bar_signout_dialog_ok": "نعم",
"app_bar_signout_dialog_title": "خروج",
"app_settings": "إعدادات التطبيق", "app_settings": "إعدادات التطبيق",
"appears_in": "يظهر في", "appears_in": "يظهر في",
"archive": "الأرشيف", "archive": "الأرشيف",
"archive_or_unarchive_photo": "أرشفة الصورة أو إلغاء أرشفتها", "archive_or_unarchive_photo": "أرشفة الصورة أو إلغاء أرشفتها",
"archive_page_no_archived_assets": "لم يتم العثور على الأصول المؤرشفة",
"archive_page_title": "Archive ({})",
"archive_size": "حجم الأرشيف", "archive_size": "حجم الأرشيف",
"archive_size_description": "تكوين حجم الأرشيف للتنزيلات (بالجيجابايت)", "archive_size_description": "تكوين حجم الأرشيف للتنزيلات (بالجيجابايت)",
"archived": "Archived",
"archived_count": "{count, plural, other {الأرشيف #}}", "archived_count": "{count, plural, other {الأرشيف #}}",
"are_these_the_same_person": "هل هؤلاء هم نفس الشخص؟", "are_these_the_same_person": "هل هؤلاء هم نفس الشخص؟",
"are_you_sure_to_do_this": "هل انت متأكد من أنك تريد أن تفعل هذا؟", "are_you_sure_to_do_this": "هل انت متأكد من أنك تريد أن تفعل هذا؟",
"asset_action_delete_err_read_only": "لا يمكن حذف الأصول ذات للقراءة فقط، وسوف يتم التخطي",
"asset_action_share_err_offline": "لا يمكن جلب الأصول غير المتصلة بالإنترنت، وسوف يتم التخطي",
"asset_added_to_album": "تمت إضافته إلى الألبوم", "asset_added_to_album": "تمت إضافته إلى الألبوم",
"asset_adding_to_album": "جارٍ الإضافة إلى الألبوم…", "asset_adding_to_album": "جارٍ الإضافة إلى الألبوم…",
"asset_description_updated": "تم تحديث وصف المحتوى", "asset_description_updated": "تم تحديث وصف المحتوى",
"asset_filename_is_offline": "الأصل {filename} غير متصل", "asset_filename_is_offline": "الأصل {filename} غير متصل",
"asset_has_unassigned_faces": "يحتوي الأصل على وجوه غير مخصصة", "asset_has_unassigned_faces": "يحتوي الأصل على وجوه غير مخصصة",
"asset_hashing": "التجزئة…", "asset_hashing": "التجزئة…",
"asset_list_group_by_sub_title": "تنظيم بواسطة",
"asset_list_layout_settings_dynamic_layout_title": "تخطيط ديناميكي",
"asset_list_layout_settings_group_automatically": "تلقائي",
"asset_list_layout_settings_group_by": "مجموعة الأصول حسب",
"asset_list_layout_settings_group_by_month_day": "شهر + يوم",
"asset_list_layout_sub_title": "تصميم",
"asset_list_settings_subtitle": "إعدادات تخطيط شبكة الصور",
"asset_list_settings_title": "شبكة الصور",
"asset_offline": "المحتوى غير اتصال", "asset_offline": "المحتوى غير اتصال",
"asset_offline_description": "لم يعد هذا الأصل الخارجي موجودًا على القرص. يرجى الاتصال بمسؤول Immich للحصول على المساعدة.", "asset_offline_description": "لم يعد هذا الأصل الخارجي موجودًا على القرص. يرجى الاتصال بمسؤول Immich للحصول على المساعدة.",
"asset_restored_successfully": "Asset restored successfully",
"asset_skipped": "تم تخطيه", "asset_skipped": "تم تخطيه",
"asset_skipped_in_trash": "في سلة المهملات", "asset_skipped_in_trash": "في سلة المهملات",
"asset_uploaded": "تم الرفع", "asset_uploaded": "تم الرفع",
"asset_uploading": "جارٍ الرفع…", "asset_uploading": "جارٍ الرفع…",
"asset_viewer_settings_subtitle": "Manage your gallery viewer settings",
"asset_viewer_settings_title": "عارض الأصول",
"assets": "المحتويات", "assets": "المحتويات",
"assets_added_count": "تمت إضافة {count, plural, one {# محتوى} other {# محتويات}}", "assets_added_count": "تمت إضافة {count, plural, one {# محتوى} other {# محتويات}}",
"assets_added_to_album_count": "تمت إضافة {count, plural, one {# الأصل} other {# الأصول}} إلى الألبوم", "assets_added_to_album_count": "تمت إضافة {count, plural, one {# الأصل} other {# الأصول}} إلى الألبوم",
"assets_added_to_name_count": "تم إضافة {count, plural, one {# محتوى} other {# محتويات }} إلى {hasName, select, true {<b>{name}</b>} other {ألبوم جديد}}", "assets_added_to_name_count": "تم إضافة {count, plural, one {# محتوى} other {# محتويات }} إلى {hasName, select, true {<b>{name}</b>} other {ألبوم جديد}}",
"assets_count": "{count, plural, one {# محتوى} other {# محتويات}}", "assets_count": "{count, plural, one {# محتوى} other {# محتويات}}",
"assets_deleted_permanently": "{} asset(s) deleted permanently",
"assets_deleted_permanently_from_server": "{} asset(s) deleted permanently from the Immich server",
"assets_moved_to_trash_count": "تم نقل {count, plural, one {# محتوى} other {# محتويات}} إلى سلة المهملات", "assets_moved_to_trash_count": "تم نقل {count, plural, one {# محتوى} other {# محتويات}} إلى سلة المهملات",
"assets_permanently_deleted_count": "تم حذف {count, plural, one {# هذا المحتوى} other {# هذه المحتويات}} بشكل دائم", "assets_permanently_deleted_count": "تم حذف {count, plural, one {# هذا المحتوى} other {# هذه المحتويات}} بشكل دائم",
"assets_removed_count": "تمت إزالة {count, plural, one {# محتوى} other {# محتويات}}", "assets_removed_count": "تمت إزالة {count, plural, one {# محتوى} other {# محتويات}}",
"assets_removed_permanently_from_device": "{} asset(s) removed permanently from your device",
"assets_restore_confirmation": "هل أنت متأكد من أنك تريد استعادة جميع الأصول المحذوفة؟ لا يمكنك التراجع عن هذا الإجراء! لاحظ أنه لا يمكن استعادة أي أصول غير متصلة بهذه الطريقة.", "assets_restore_confirmation": "هل أنت متأكد من أنك تريد استعادة جميع الأصول المحذوفة؟ لا يمكنك التراجع عن هذا الإجراء! لاحظ أنه لا يمكن استعادة أي أصول غير متصلة بهذه الطريقة.",
"assets_restored_count": "تمت استعادة {count, plural, one {# محتوى} other {# محتويات}}", "assets_restored_count": "تمت استعادة {count, plural, one {# محتوى} other {# محتويات}}",
"assets_restored_successfully": "{} asset(s) restored successfully",
"assets_trashed": "{} asset(s) trashed",
"assets_trashed_count": "تم إرسال {count, plural, one {# محتوى} other {# محتويات}} إلى سلة المهملات", "assets_trashed_count": "تم إرسال {count, plural, one {# محتوى} other {# محتويات}} إلى سلة المهملات",
"assets_trashed_from_server": "{} asset(s) trashed from the Immich server",
"assets_were_part_of_album_count": "{count, plural, one {هذا المحتوى} other {هذه المحتويات}} في الألبوم بالفعل", "assets_were_part_of_album_count": "{count, plural, one {هذا المحتوى} other {هذه المحتويات}} في الألبوم بالفعل",
"authorized_devices": "الأجهزه المخولة", "authorized_devices": "الأجهزه المخولة",
"automatic_endpoint_switching_subtitle": "Connect locally over designated Wi-Fi when available and use alternative connections elsewhere",
"automatic_endpoint_switching_title": "Automatic URL switching",
"back": "خلف", "back": "خلف",
"back_close_deselect": "الرجوع أو الإغلاق أو إلغاء التحديد", "back_close_deselect": "الرجوع أو الإغلاق أو إلغاء التحديد",
"background_location_permission": "Background location permission",
"background_location_permission_content": "In order to switch networks when running in the background, Immich must *always* have precise location access so the app can read the Wi-Fi network's name",
"backup_album_selection_page_albums_device": "Albums on device ({})",
"backup_album_selection_page_albums_tap": "انقر للتضمين، وانقر نقرًا مزدوجًا للاستثناء",
"backup_album_selection_page_assets_scatter": "يمكن أن تنتشر الأصول عبر ألبومات متعددة. وبالتالي، يمكن تضمين الألبومات أو استبعادها أثناء عملية النسخ الاحتياطي.",
"backup_album_selection_page_select_albums": "حدد الألبومات",
"backup_album_selection_page_selection_info": "معلومات الاختيار",
"backup_album_selection_page_total_assets": "إجمالي الأصول الفريدة",
"backup_all": "الجميع",
"backup_background_service_backup_failed_message": "فشل في النسخ الاحتياطي للأصول. جارٍ إعادة المحاولة...",
"backup_background_service_connection_failed_message": "فشل في الاتصال بالخادم. جارٍ إعادة المحاولة...",
"backup_background_service_current_upload_notification": "Uploading {}",
"backup_background_service_default_notification": "التحقق من الأصول الجديدة ...",
"backup_background_service_error_title": "خطأ في النسخ الاحتياطي",
"backup_background_service_in_progress_notification": "النسخ الاحتياطي للأصول الخاصة بك...",
"backup_background_service_upload_failure_notification": "Failed to upload {}",
"backup_controller_page_albums": "ألبومات احتياطية",
"backup_controller_page_background_app_refresh_disabled_content": "قم بتمكين تحديث تطبيق الخلفية في الإعدادات > عام > تحديث تطبيق الخلفية لاستخدام النسخ الاحتياطي في الخلفية.",
"backup_controller_page_background_app_refresh_disabled_title": "تم تعطيل تحديث التطبيق في الخلفية",
"backup_controller_page_background_app_refresh_enable_button_text": "اذهب للاعدادات",
"backup_controller_page_background_battery_info_link": "أرني كيف",
"backup_controller_page_background_battery_info_message": "للحصول على أفضل تجربة نسخ احتياطي في الخلفية، يرجى تعطيل أي تحسينات للبطارية تقيد نشاط الخلفية لـ تطبيق.\n\nنظرًا لأن هذا خاص بالجهاز، يرجى البحث عن المعلومات المطلوبة للشركة المصنعة لجهازك.",
"backup_controller_page_background_battery_info_ok": "نعم",
"backup_controller_page_background_battery_info_title": "تحسين البطارية",
"backup_controller_page_background_charging": "فقط أثناء الشحن",
"backup_controller_page_background_configure_error": "فشل في تكوين خدمة الخلفية",
"backup_controller_page_background_delay": "Delay new assets backup: {}",
"backup_controller_page_background_description": "قم بتشغيل خدمة الخلفية لإجراء نسخ احتياطي لأي أصول جديدة تلقائيًا دون الحاجة إلى فتح التطبيق",
"backup_controller_page_background_is_off": "تم إيقاف النسخ الاحتياطي التلقائي للخلفية",
"backup_controller_page_background_is_on": "النسخ الاحتياطي التلقائي للخلفية قيد التشغيل",
"backup_controller_page_background_turn_off": "قم بإيقاف تشغيل خدمة الخلفية",
"backup_controller_page_background_turn_on": "قم بتشغيل خدمة الخلفية",
"backup_controller_page_background_wifi": "فقط على واي فاي",
"backup_controller_page_backup": "دعم",
"backup_controller_page_backup_selected": "المحدد: ",
"backup_controller_page_backup_sub": "النسخ الاحتياطي للصور ومقاطع الفيديو",
"backup_controller_page_created": "Created on: {}",
"backup_controller_page_desc_backup": "قم بتشغيل النسخ الاحتياطي الأمامي لتحميل الأصول الجديدة تلقائيًا إلى الخادم عند فتح التطبيق.",
"backup_controller_page_excluded": "مستبعد: ",
"backup_controller_page_failed": "Failed ({})",
"backup_controller_page_filename": "File name: {} [{}]",
"backup_controller_page_id": "ID: {}",
"backup_controller_page_info": "معلومات النسخ الاحتياطي",
"backup_controller_page_none_selected": "لم يتم التحديد",
"backup_controller_page_remainder": "بقية",
"backup_controller_page_remainder_sub": "الصور ومقاطع الفيديو المتبقية للنسخ الاحتياطي من التحديد",
"backup_controller_page_server_storage": "ذاكرة الجهاز",
"backup_controller_page_start_backup": "بدء النسخ الاحتياطي",
"backup_controller_page_status_off": "النسخة الاحتياطية التلقائية غير فعالة",
"backup_controller_page_status_on": "النسخة الاحتياطية التلقائية فعالة",
"backup_controller_page_storage_format": "{} of {} used",
"backup_controller_page_to_backup": "الألبومات الاحتياطية",
"backup_controller_page_total_sub": "جميع الصور ومقاطع الفيديو الفريدة من ألبومات مختارة",
"backup_controller_page_turn_off": "قم بإيقاف تشغيل النسخ الاحتياطي المقدمة",
"backup_controller_page_turn_on": "قم بتشغيل النسخ الاحتياطي المقدمة",
"backup_controller_page_uploading_file_info": "تحميل معلومات الملف",
"backup_err_only_album": "لا يمكن إزالة الألبوم الوحيد",
"backup_info_card_assets": "أصول",
"backup_manual_cancelled": "ملغي",
"backup_manual_in_progress": "قيد التحميل حاول مره اخرى",
"backup_manual_success": "نجاح",
"backup_manual_title": "حالة التحميل",
"backup_options_page_title": "خيارات النسخ الاحتياطي",
"backup_setting_subtitle": "Manage background and foreground upload settings",
"backward": "الى الوراء", "backward": "الى الوراء",
"birthdate_saved": "تم حفظ تاريخ الميلاد بنجاح", "birthdate_saved": "تم حفظ تاريخ الميلاد بنجاح",
"birthdate_set_description": "يتم استخدام تاريخ الميلاد لحساب عمر هذا الشخص وقت التقاط الصورة.", "birthdate_set_description": "يتم استخدام تاريخ الميلاد لحساب عمر هذا الشخص وقت التقاط الصورة.",
@@ -447,24 +565,52 @@
"bulk_keep_duplicates_confirmation": "هل أنت متأكد من أنك تريد الاحتفاظ بـ {count, plural, one {# محتوى مكرر} other {# محتويات مكررة}}؟ سيؤدي هذا إلى حل جميع مجموعات النسخ المكررة دون حذف أي شيء.", "bulk_keep_duplicates_confirmation": "هل أنت متأكد من أنك تريد الاحتفاظ بـ {count, plural, one {# محتوى مكرر} other {# محتويات مكررة}}؟ سيؤدي هذا إلى حل جميع مجموعات النسخ المكررة دون حذف أي شيء.",
"bulk_trash_duplicates_confirmation": "هل أنت متأكد من أنك تريد إرسال {count, plural, one {# محتوى مكرر} other {# محتويات مكررة}} إلى سلة المهملات ؟ سيحتفظ هذا بأكبر محتوى من كل مجموعة ويرسل جميع النسخ المكررة الأخرى إلى سلة المهملات.", "bulk_trash_duplicates_confirmation": "هل أنت متأكد من أنك تريد إرسال {count, plural, one {# محتوى مكرر} other {# محتويات مكررة}} إلى سلة المهملات ؟ سيحتفظ هذا بأكبر محتوى من كل مجموعة ويرسل جميع النسخ المكررة الأخرى إلى سلة المهملات.",
"buy": "شراء immich", "buy": "شراء immich",
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
"cache_settings_clear_cache_button": "مسح ذاكرة التخزين المؤقت",
"cache_settings_clear_cache_button_title": "يقوم بمسح ذاكرة التخزين المؤقت للتطبيق.سيؤثر هذا بشكل كبير على أداء التطبيق حتى إعادة بناء ذاكرة التخزين المؤقت.",
"cache_settings_duplicated_assets_clear_button": "واضح",
"cache_settings_duplicated_assets_subtitle": "الصور ومقاطع الفيديو اللتي تم تجاهلها المدرجة في التطبيق",
"cache_settings_duplicated_assets_title": "Duplicated Assets ({})",
"cache_settings_image_cache_size": "Image cache size ({} assets)",
"cache_settings_statistics_album": "مكتبه الصور المصغره",
"cache_settings_statistics_assets": "{} assets ({})",
"cache_settings_statistics_full": "صور كاملة",
"cache_settings_statistics_shared": "صورة ألبوم مشتركة",
"cache_settings_statistics_thumbnail": "الصورة المصغرة",
"cache_settings_statistics_title": "استخدام ذاكرة التخزين المؤقت",
"cache_settings_subtitle": "تحكم في سلوك التخزين المؤقت لتطبيق الجوال.",
"cache_settings_thumbnail_size": "Thumbnail cache size ({} assets)",
"cache_settings_tile_subtitle": "التحكم في سلوك التخزين المحلي",
"cache_settings_tile_title": "التخزين المحلي",
"cache_settings_title": "إعدادات التخزين المؤقت",
"camera": "الكاميرا", "camera": "الكاميرا",
"camera_brand": "علامة الكاميرا التجارية", "camera_brand": "علامة الكاميرا التجارية",
"camera_model": "طراز الكاميرا", "camera_model": "طراز الكاميرا",
"cancel": "إلغاء", "cancel": "إلغاء",
"cancel_search": "الغي البحث", "cancel_search": "الغي البحث",
"canceled": "Canceled",
"cannot_merge_people": "لا يمكن دمج الأشخاص", "cannot_merge_people": "لا يمكن دمج الأشخاص",
"cannot_undo_this_action": "لا يمكنك التراجع عن هذا الإجراء!", "cannot_undo_this_action": "لا يمكنك التراجع عن هذا الإجراء!",
"cannot_update_the_description": "لا يمكن تحديث الوصف", "cannot_update_the_description": "لا يمكن تحديث الوصف",
"change_date": "غيّر التاريخ", "change_date": "غيّر التاريخ",
"change_display_order": "Change display order",
"change_expiration_time": "تغيير وقت انتهاء الصلاحية", "change_expiration_time": "تغيير وقت انتهاء الصلاحية",
"change_location": "غيّر الموقع", "change_location": "غيّر الموقع",
"change_name": "تغيير الإسم", "change_name": "تغيير الإسم",
"change_name_successfully": "تم تغيير الاسم بنجاح", "change_name_successfully": "تم تغيير الاسم بنجاح",
"change_password": "تغيير كلمة المرور", "change_password": "تغيير كلمة المرور",
"change_password_description": "هذه إما هي المرة الأولى التي تقوم فيها بتسجيل الدخول إلى النظام أو أنه تم تقديم طلب لتغيير كلمة المرور الخاصة بك. الرجاء إدخال كلمة المرور الجديدة أدناه.", "change_password_description": "هذه إما هي المرة الأولى التي تقوم فيها بتسجيل الدخول إلى النظام أو أنه تم تقديم طلب لتغيير كلمة المرور الخاصة بك. الرجاء إدخال كلمة المرور الجديدة أدناه.",
"change_password_form_confirm_password": "تأكيد كلمة المرور",
"change_password_form_description": "مرحبًا ،هذه هي المرة الأولى التي تقوم فيها بالتسجيل في النظام أو تم تقديم طلب لتغيير كلمة المرور الخاصة بك.الرجاء إدخال كلمة المرور الجديدة أدناه",
"change_password_form_new_password": "كلمة المرور الجديدة",
"change_password_form_password_mismatch": "كلمة المرور غير مطابقة",
"change_password_form_reenter_new_password": "أعد إدخال كلمة مرور جديدة",
"change_your_password": "غير كلمة المرور الخاصة بك", "change_your_password": "غير كلمة المرور الخاصة بك",
"changed_visibility_successfully": "تم تغيير الرؤية بنجاح", "changed_visibility_successfully": "تم تغيير الرؤية بنجاح",
"check_all": "تحقق من الكل", "check_all": "تحقق من الكل",
"check_corrupt_asset_backup": "Check for corrupt asset backups",
"check_corrupt_asset_backup_button": "Perform check",
"check_corrupt_asset_backup_description": "Run this check only over Wi-Fi and once all assets have been backed-up. The procedure might take a few minutes.",
"check_logs": "تحقق من السجلات", "check_logs": "تحقق من السجلات",
"choose_matching_people_to_merge": "اختر الأشخاص المتطابقين لدمجهم", "choose_matching_people_to_merge": "اختر الأشخاص المتطابقين لدمجهم",
"city": "المدينة", "city": "المدينة",
@@ -473,6 +619,14 @@
"clear_all_recent_searches": "مسح جميع عمليات البحث الأخيرة", "clear_all_recent_searches": "مسح جميع عمليات البحث الأخيرة",
"clear_message": "إخلاء الرسالة", "clear_message": "إخلاء الرسالة",
"clear_value": "إخلاء القيمة", "clear_value": "إخلاء القيمة",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove_msg": "Client certificate is removed",
"client_cert_subtitle": "Supports PKCS12 (.p12, .pfx) format only. Certificate Import/Remove is available only before login",
"client_cert_title": "SSL Client Certificate",
"clockwise": "باتجاه عقارب الساعة", "clockwise": "باتجاه عقارب الساعة",
"close": "إغلاق", "close": "إغلاق",
"collapse": "طي", "collapse": "طي",
@@ -483,6 +637,9 @@
"comment_options": "خيارات التعليق", "comment_options": "خيارات التعليق",
"comments_and_likes": "التعليقات والإعجابات", "comments_and_likes": "التعليقات والإعجابات",
"comments_are_disabled": "التعليقات معطلة", "comments_are_disabled": "التعليقات معطلة",
"common_create_new_album": "إنشاء ألبوم جديد",
"common_server_error": "يرجى التحقق من اتصال الشبكة الخاص بك ، والتأكد من أن الجهاز قابل للوصول وإصدارات التطبيق/الجهاز متوافقة.",
"completed": "Completed",
"confirm": "تأكيد", "confirm": "تأكيد",
"confirm_admin_password": "تأكيد كلمة مرور المسؤول", "confirm_admin_password": "تأكيد كلمة مرور المسؤول",
"confirm_delete_face": "هل أنت متأكد من حذف وجه {name} من الأصول؟", "confirm_delete_face": "هل أنت متأكد من حذف وجه {name} من الأصول؟",
@@ -492,6 +649,15 @@
"contain": "محتواة", "contain": "محتواة",
"context": "السياق", "context": "السياق",
"continue": "متابعة", "continue": "متابعة",
"control_bottom_app_bar_album_info_shared": "{} items · Shared",
"control_bottom_app_bar_create_new_album": "إنشاء ألبوم جديد",
"control_bottom_app_bar_delete_from_immich": " حذف منال تطبيق",
"control_bottom_app_bar_delete_from_local": "حذف من الجهاز",
"control_bottom_app_bar_edit_location": "تحديد الوجهة",
"control_bottom_app_bar_edit_time": "تحرير التاريخ والوقت",
"control_bottom_app_bar_share_link": "Share Link",
"control_bottom_app_bar_share_to": "مشاركة إلى",
"control_bottom_app_bar_trash_from_immich": "حذفه ونقله في سله المهملات",
"copied_image_to_clipboard": "تم نسخ الصورة إلى الحافظة.", "copied_image_to_clipboard": "تم نسخ الصورة إلى الحافظة.",
"copied_to_clipboard": "نسخ إلى الحافظة!", "copied_to_clipboard": "نسخ إلى الحافظة!",
"copy_error": "نسخ الخطأ", "copy_error": "نسخ الخطأ",
@@ -506,24 +672,34 @@
"covers": "أغلفة", "covers": "أغلفة",
"create": "انشاء", "create": "انشاء",
"create_album": "إنشاء ألبوم", "create_album": "إنشاء ألبوم",
"create_album_page_untitled": "بدون اسم",
"create_library": "إنشاء مكتبة", "create_library": "إنشاء مكتبة",
"create_link": "إنشاء رابط", "create_link": "إنشاء رابط",
"create_link_to_share": "إنشاء رابط للمشاركة", "create_link_to_share": "إنشاء رابط للمشاركة",
"create_link_to_share_description": "السماح لأي شخص لديه الرابط بمشاهدة الصورة (الصور) المحددة", "create_link_to_share_description": "السماح لأي شخص لديه الرابط بمشاهدة الصورة (الصور) المحددة",
"create_new": "CREATE NEW",
"create_new_person": "إنشاء شخص جديد", "create_new_person": "إنشاء شخص جديد",
"create_new_person_hint": "تعيين المحتويات المحددة لشخص جديد", "create_new_person_hint": "تعيين المحتويات المحددة لشخص جديد",
"create_new_user": "إنشاء مستخدم جديد", "create_new_user": "إنشاء مستخدم جديد",
"create_shared_album_page_share_add_assets": "إضافة الأصول",
"create_shared_album_page_share_select_photos": "حدد الصور",
"create_tag": "إنشاء علامة", "create_tag": "إنشاء علامة",
"create_tag_description": "أنشئ علامة جديدة. بالنسبة للعلامات المتداخلة، يرجى إدخال المسار الكامل للعلامة بما في ذلك الخطوط المائلة للأمام.", "create_tag_description": "أنشئ علامة جديدة. بالنسبة للعلامات المتداخلة، يرجى إدخال المسار الكامل للعلامة بما في ذلك الخطوط المائلة للأمام.",
"create_user": "إنشاء مستخدم", "create_user": "إنشاء مستخدم",
"created": "تم الإنشاء", "created": "تم الإنشاء",
"crop": "Crop",
"curated_object_page_title": "أشياء",
"current_device": "الجهاز الحالي", "current_device": "الجهاز الحالي",
"current_server_address": "Current server address",
"custom_locale": "لغة مخصصة", "custom_locale": "لغة مخصصة",
"custom_locale_description": "تنسيق التواريخ والأرقام بناءً على اللغة والمنطقة", "custom_locale_description": "تنسيق التواريخ والأرقام بناءً على اللغة والمنطقة",
"daily_title_text_date": "E ، MMM DD",
"daily_title_text_date_year": "E ، MMM DD ، yyyy",
"dark": "معتم", "dark": "معتم",
"date_after": "التارخ بعد", "date_after": "التارخ بعد",
"date_and_time": "التاريخ و الوقت", "date_and_time": "التاريخ و الوقت",
"date_before": "التاريخ قبل", "date_before": "التاريخ قبل",
"date_format": "E ، Lll D ، Y • H: MM A",
"date_of_birth_saved": "تم حفظ تاريخ الميلاد بنجاح", "date_of_birth_saved": "تم حفظ تاريخ الميلاد بنجاح",
"date_range": "نطاق الموعد", "date_range": "نطاق الموعد",
"day": "يوم", "day": "يوم",
@@ -537,19 +713,30 @@
"delete": "حذف", "delete": "حذف",
"delete_album": "حذف الألبوم", "delete_album": "حذف الألبوم",
"delete_api_key_prompt": "هل أنت متأكد أنك تريد حذف مفتاح API هذا؟", "delete_api_key_prompt": "هل أنت متأكد أنك تريد حذف مفتاح API هذا؟",
"delete_dialog_alert": " هذه العناصر سيتم حذفها بشكل دائم من جهازك ومن تطبيق",
"delete_dialog_alert_local": " العناصر التي تم حذفها من جهازك ولكنها موجوده في تطبيق",
"delete_dialog_alert_local_non_backed_up": "بعض العناصر التي سيتم حذفها بشكل دائم ولا يوجد لها نسخه احتياطيه في تطبيق ",
"delete_dialog_alert_remote": "العناصر التي سيتم حذفها بشكل دائم من تطبيق",
"delete_dialog_ok_force": "احذف على أي حال",
"delete_dialog_title": "الحذف بشكل نهائي",
"delete_duplicates_confirmation": "هل أنت متأكد أنك تريد حذف هذه التكرارات نهائيًا؟", "delete_duplicates_confirmation": "هل أنت متأكد أنك تريد حذف هذه التكرارات نهائيًا؟",
"delete_face": "حذف الوجه", "delete_face": "حذف الوجه",
"delete_key": "حذف المفتاح", "delete_key": "حذف المفتاح",
"delete_library": "حذف المكتبة", "delete_library": "حذف المكتبة",
"delete_link": "حذف الرابط", "delete_link": "حذف الرابط",
"delete_local_dialog_ok_backed_up_only": "حذف النسخة الاحتياطية فقط",
"delete_local_dialog_ok_force": "احذف على أي حال",
"delete_others": "حذف الأخرى", "delete_others": "حذف الأخرى",
"delete_shared_link": "حذف الرابط المشترك", "delete_shared_link": "حذف الرابط المشترك",
"delete_shared_link_dialog_title": "حذف الرابط المشترك",
"delete_tag": "حذف العلامة", "delete_tag": "حذف العلامة",
"delete_tag_confirmation_prompt": "هل أنت متأكد أنك تريد حذف العلامة {tagName}؟", "delete_tag_confirmation_prompt": "هل أنت متأكد أنك تريد حذف العلامة {tagName}؟",
"delete_user": "حذف المستخدم", "delete_user": "حذف المستخدم",
"deleted_shared_link": "تم حذف الرابط المشارك", "deleted_shared_link": "تم حذف الرابط المشارك",
"deletes_missing_assets": "حذف الأصول المفقودة من القرص", "deletes_missing_assets": "حذف الأصول المفقودة من القرص",
"description": "وصف", "description": "وصف",
"description_input_hint_text": "اضف وصفا...",
"description_input_submit_error": "خطأ تحديث الوصف ، تحقق من السجل لمزيد من التفاصيل",
"details": "تفاصيل", "details": "تفاصيل",
"direction": "الإتجاه", "direction": "الإتجاه",
"disabled": "معطل", "disabled": "معطل",
@@ -566,12 +753,26 @@
"documentation": "الوثائق", "documentation": "الوثائق",
"done": "تم", "done": "تم",
"download": "تنزيل", "download": "تنزيل",
"download_canceled": "Download canceled",
"download_complete": "Download complete",
"download_enqueue": "Download enqueued",
"download_error": "Download Error",
"download_failed": "Download failed",
"download_filename": "file: {}",
"download_finished": "Download finished",
"download_include_embedded_motion_videos": "مقاطع الفيديو المدمجة", "download_include_embedded_motion_videos": "مقاطع الفيديو المدمجة",
"download_include_embedded_motion_videos_description": "تضمين مقاطع الفيديو المضمنة في الصور المتحركة كملف منفصل", "download_include_embedded_motion_videos_description": "تضمين مقاطع الفيديو المضمنة في الصور المتحركة كملف منفصل",
"download_notfound": "Download not found",
"download_paused": "Download paused",
"download_settings": "التنزيلات", "download_settings": "التنزيلات",
"download_settings_description": "إدارة الإعدادات المتعلقة بتنزيل المحتويات", "download_settings_description": "إدارة الإعدادات المتعلقة بتنزيل المحتويات",
"download_started": "Download started",
"download_sucess": "Download success",
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
"download_waiting_to_retry": "Waiting to retry",
"downloading": "جارٍ التنزيل", "downloading": "جارٍ التنزيل",
"downloading_asset_filename": "{filename} قيد التنزيل", "downloading_asset_filename": "{filename} قيد التنزيل",
"downloading_media": "Downloading media",
"drop_files_to_upload": "قم بإسقاط الملفات في أي مكان لرفعها", "drop_files_to_upload": "قم بإسقاط الملفات في أي مكان لرفعها",
"duplicates": "التكرارات", "duplicates": "التكرارات",
"duplicates_description": "قم بحل كل مجموعة من خلال الإشارة إلى التكرارات، إن وجدت", "duplicates_description": "قم بحل كل مجموعة من خلال الإشارة إلى التكرارات، إن وجدت",
@@ -588,6 +789,7 @@
"edit_key": "تعديل المفتاح", "edit_key": "تعديل المفتاح",
"edit_link": "تغيير الرابط", "edit_link": "تغيير الرابط",
"edit_location": "تعديل الموقع", "edit_location": "تعديل الموقع",
"edit_location_dialog_title": "موقع",
"edit_name": "تعديل الاسم", "edit_name": "تعديل الاسم",
"edit_people": "تعديل الأشخاص", "edit_people": "تعديل الأشخاص",
"edit_tag": "تعديل العلامة", "edit_tag": "تعديل العلامة",
@@ -600,14 +802,19 @@
"editor_crop_tool_h2_aspect_ratios": "نسب العرض إلى الارتفاع", "editor_crop_tool_h2_aspect_ratios": "نسب العرض إلى الارتفاع",
"editor_crop_tool_h2_rotation": "التدوير", "editor_crop_tool_h2_rotation": "التدوير",
"email": "البريد الإلكتروني", "email": "البريد الإلكتروني",
"empty_folder": "This folder is empty",
"empty_trash": "أفرغ سلة المهملات", "empty_trash": "أفرغ سلة المهملات",
"empty_trash_confirmation": "هل أنت متأكد أنك تريد إفراغ سلة المهملات؟ سيؤدي هذا إلى إزالة جميع المحتويات الموجودة في سلة المهملات بشكل نهائي من Immich.\nلا يمكنك التراجع عن هذا الإجراء!", "empty_trash_confirmation": "هل أنت متأكد أنك تريد إفراغ سلة المهملات؟ سيؤدي هذا إلى إزالة جميع المحتويات الموجودة في سلة المهملات بشكل نهائي من Immich.\nلا يمكنك التراجع عن هذا الإجراء!",
"enable": "تفعيل", "enable": "تفعيل",
"enabled": "مفعل", "enabled": "مفعل",
"end_date": "تاريخ الإنتهاء", "end_date": "تاريخ الإنتهاء",
"enqueued": "Enqueued",
"enter_wifi_name": "Enter WiFi name",
"error": "خطأ", "error": "خطأ",
"error_change_sort_album": "Failed to change album sort order",
"error_delete_face": "حدث خطأ في حذف الوجه من الأصول", "error_delete_face": "حدث خطأ في حذف الوجه من الأصول",
"error_loading_image": "حدث خطأ أثناء تحميل الصورة", "error_loading_image": "حدث خطأ أثناء تحميل الصورة",
"error_saving_image": "Error: {}",
"error_title": "خطأ - حدث خللٌ ما", "error_title": "خطأ - حدث خللٌ ما",
"errors": { "errors": {
"cannot_navigate_next_asset": "لا يمكن الانتقال إلى المحتوى التالي", "cannot_navigate_next_asset": "لا يمكن الانتقال إلى المحتوى التالي",
@@ -736,8 +943,21 @@
"unable_to_upload_file": "تعذر رفع الملف" "unable_to_upload_file": "تعذر رفع الملف"
}, },
"exif": "Exif (صيغة ملف صوري قابل للتبادل)", "exif": "Exif (صيغة ملف صوري قابل للتبادل)",
"exif_bottom_sheet_description": "اضف وصفا...",
"exif_bottom_sheet_details": "تفاصيل",
"exif_bottom_sheet_location": "موقع",
"exif_bottom_sheet_people": "الناس",
"exif_bottom_sheet_person_add_person": "اضف اسما",
"exif_bottom_sheet_person_age": "Age {}",
"exif_bottom_sheet_person_age_months": "Age {} months",
"exif_bottom_sheet_person_age_year_months": "Age 1 year, {} months",
"exif_bottom_sheet_person_age_years": "Age {}",
"exit_slideshow": "خروج من العرض التقديمي", "exit_slideshow": "خروج من العرض التقديمي",
"expand_all": "توسيع الكل", "expand_all": "توسيع الكل",
"experimental_settings_new_asset_list_subtitle": "أعمال جارية",
"experimental_settings_new_asset_list_title": "تمكين شبكة الصور التجريبية",
"experimental_settings_subtitle": "استخدام على مسؤوليتك الخاصة!",
"experimental_settings_title": "تجريبي",
"expire_after": "تنتهي بعد", "expire_after": "تنتهي بعد",
"expired": "منتهي الصلاحية", "expired": "منتهي الصلاحية",
"expires_date": "تنتهي الصلاحية في {date}", "expires_date": "تنتهي الصلاحية في {date}",
@@ -748,11 +968,16 @@
"extension": "الإمتداد", "extension": "الإمتداد",
"external": "خارجي", "external": "خارجي",
"external_libraries": "المكتبات الخارجية", "external_libraries": "المكتبات الخارجية",
"external_network": "External network",
"external_network_sheet_info": "When not on the preferred WiFi network, the app will connect to the server through the first of the below URLs it can reach, starting from top to bottom",
"face_unassigned": "غير معين", "face_unassigned": "غير معين",
"failed": "Failed",
"failed_to_load_assets": "فشل تحميل الأصول", "failed_to_load_assets": "فشل تحميل الأصول",
"failed_to_load_folder": "Failed to load folder",
"favorite": "مفضل", "favorite": "مفضل",
"favorite_or_unfavorite_photo": "تفضيل أو إلغاء تفضيل الصورة", "favorite_or_unfavorite_photo": "تفضيل أو إلغاء تفضيل الصورة",
"favorites": "المفضلة", "favorites": "المفضلة",
"favorites_page_no_favorites": "لم يتم العثور على الأصول المفضلة",
"feature_photo_updated": "تم تحديث الصورة المميزة", "feature_photo_updated": "تم تحديث الصورة المميزة",
"features": "الميزات", "features": "الميزات",
"features_setting_description": "إدارة ميزات التطبيق", "features_setting_description": "إدارة ميزات التطبيق",
@@ -760,25 +985,38 @@
"file_name_or_extension": "اسم الملف أو امتداده", "file_name_or_extension": "اسم الملف أو امتداده",
"filename": "اسم الملف", "filename": "اسم الملف",
"filetype": "نوع الملف", "filetype": "نوع الملف",
"filter": "Filter",
"filter_people": "تصفية الاشخاص", "filter_people": "تصفية الاشخاص",
"find_them_fast": "يمكنك العثور عليها بسرعة بالاسم من خلال البحث", "find_them_fast": "يمكنك العثور عليها بسرعة بالاسم من خلال البحث",
"fix_incorrect_match": "إصلاح المطابقة غير الصحيحة", "fix_incorrect_match": "إصلاح المطابقة غير الصحيحة",
"folder": "Folder",
"folder_not_found": "Folder not found",
"folders": "المجلدات", "folders": "المجلدات",
"folders_feature_description": "تصفح عرض المجلد للصور ومقاطع الفيديو الموجودة على نظام الملفات", "folders_feature_description": "تصفح عرض المجلد للصور ومقاطع الفيديو الموجودة على نظام الملفات",
"forward": "إلى الأمام", "forward": "إلى الأمام",
"general": "عام", "general": "عام",
"get_help": "الحصول على المساعدة", "get_help": "الحصول على المساعدة",
"get_wifiname_error": "Could not get Wi-Fi name. Make sure you have granted the necessary permissions and are connected to a Wi-Fi network",
"getting_started": "البدء", "getting_started": "البدء",
"go_back": "الرجوع للخلف", "go_back": "الرجوع للخلف",
"go_to_folder": "اذهب إلى المجلد", "go_to_folder": "اذهب إلى المجلد",
"go_to_search": "اذهب إلى البحث", "go_to_search": "اذهب إلى البحث",
"grant_permission": "Grant permission",
"group_albums_by": "تجميع الألبومات حسب...", "group_albums_by": "تجميع الألبومات حسب...",
"group_country": "مجموعة البلد", "group_country": "مجموعة البلد",
"group_no": "بدون تجميع", "group_no": "بدون تجميع",
"group_owner": "تجميع حسب المالك", "group_owner": "تجميع حسب المالك",
"group_places_by": "تجميع الأماكن حسب...", "group_places_by": "تجميع الأماكن حسب...",
"group_year": "تجميع حسب السنة", "group_year": "تجميع حسب السنة",
"haptic_feedback_switch": "تمكين ردود الفعل اللمسية",
"haptic_feedback_title": "ردود فعل لمسية",
"has_quota": "محدد بحصة", "has_quota": "محدد بحصة",
"header_settings_add_header_tip": "Add Header",
"header_settings_field_validator_msg": "Value cannot be empty",
"header_settings_header_name_input": "Header name",
"header_settings_header_value_input": "Header value",
"headers_settings_tile_subtitle": "Define proxy headers the app should send with each network request",
"headers_settings_tile_title": "Custom proxy headers",
"hi_user": "مرحبا {name} ({email})", "hi_user": "مرحبا {name} ({email})",
"hide_all_people": "إخفاء جميع الأشخاص", "hide_all_people": "إخفاء جميع الأشخاص",
"hide_gallery": "اخفاء المعرض", "hide_gallery": "اخفاء المعرض",
@@ -786,8 +1024,24 @@
"hide_password": "اخفاء كلمة المرور", "hide_password": "اخفاء كلمة المرور",
"hide_person": "اخفاء الشخص", "hide_person": "اخفاء الشخص",
"hide_unnamed_people": "إخفاء الأشخاص بدون إسم", "hide_unnamed_people": "إخفاء الأشخاص بدون إسم",
"home_page_add_to_album_conflicts": "تمت إضافة {تمت إضافة} الأصول إلى الألبوم {الألبوم}.{فشل} الأصول موجودة بالفعل في الألبوم.",
"home_page_add_to_album_err_local": "لا يمكن إضافة الأصول المحلية إلى الألبومات حتى الآن ، سوف يتخطى",
"home_page_add_to_album_success": "تمت إضافة {تمت إضافة} الأصول إلى الألبوم {الألبوم}.",
"home_page_album_err_partner": "لا يمكن إضافة أصول شريكة إلى ألبوم حتى الآن ، سوف يتخطى",
"home_page_archive_err_local": "لا يمكن أرشفة الأصول المحلية حتى الآن ، سوف يتخطى",
"home_page_archive_err_partner": "لا يمكن أرشفة الأصول الشريكة ، سوف يتخطى",
"home_page_building_timeline": "بناء الجدول الزمني",
"home_page_delete_err_partner": "لا يمكن حذف الأصول الشريكة ,سوف يتخطى",
"home_page_delete_remote_err_local": "الأصول المحلية في التحديد البعيد المحذوف، سوف يتخطى",
"home_page_favorite_err_local": "لا يمكن تفضيل الأصول المحلية بعد، سوف يتخطى",
"home_page_favorite_err_partner": "لا يمكن الأصول الشريكة المفضلة بعد ، سوف يتخطى",
"home_page_first_time_notice": "إذا كانت هذه هي المرة الأولى التي تستخدم فيها التطبيق، فيرجى التأكد من اختيار ألبوم (ألبومات) احتياطية حتى يتمكن المخطط الزمني من ملء الصور ومقاطع الفيديو في الألبوم (الألبومات).",
"home_page_share_err_local": "لا يمكن مشاركة الأصول المحلية عبر الرابط ، سوف يتخطى",
"home_page_upload_err_limit": "لا يمكن إلا تحميل 30 أحد الأصول في وقت واحد ، سوف يتخطى",
"host": "المضيف", "host": "المضيف",
"hour": "ساعة", "hour": "ساعة",
"ignore_icloud_photos": "Ignore iCloud photos",
"ignore_icloud_photos_description": "Photos that are stored on iCloud will not be uploaded to the Immich server",
"image": "صورة", "image": "صورة",
"image_alt_text_date": "{isVideo, select, true {Video} other {Image}} تم التقاطها في {date}", "image_alt_text_date": "{isVideo, select, true {Video} other {Image}} تم التقاطها في {date}",
"image_alt_text_date_1_person": "{isVideo, select, true {Video} other {Image}} تم التقاطها مع {person1} في {date}", "image_alt_text_date_1_person": "{isVideo, select, true {Video} other {Image}} تم التقاطها مع {person1} في {date}",
@@ -799,6 +1053,10 @@
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Image}} تم التقاطها في {city}، {country} مع {person1} و{person2} في {date}", "image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Image}} تم التقاطها في {city}، {country} مع {person1} و{person2} في {date}",
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Image}} تم التقاطها في {city}، {country} مع {person1}، {person2}، و{person3} في {date}", "image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Image}} تم التقاطها في {city}، {country} مع {person1}، {person2}، و{person3} في {date}",
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Image}} تم التقاطها في {city}, {country} with {person1}, {person2}, مع {additionalCount, number} آخرين في {date}", "image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Image}} تم التقاطها في {city}, {country} with {person1}, {person2}, مع {additionalCount, number} آخرين في {date}",
"image_saved_successfully": "Image saved",
"image_viewer_page_state_provider_download_started": "بدأ التنزيل",
"image_viewer_page_state_provider_download_success": "تم التنزيل بنجاح",
"image_viewer_page_state_provider_share_error": "خطأ في المشاركة",
"immich_logo": "شعار immich", "immich_logo": "شعار immich",
"immich_web_interface": "واجهة ويب immich", "immich_web_interface": "واجهة ويب immich",
"import_from_json": "استيراد من JSON", "import_from_json": "استيراد من JSON",
@@ -817,6 +1075,8 @@
"night_at_midnight": "كل ليلة عند منتصف الليل", "night_at_midnight": "كل ليلة عند منتصف الليل",
"night_at_twoam": "كل ليلة الساعة 2 صباحا" "night_at_twoam": "كل ليلة الساعة 2 صباحا"
}, },
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"invite_people": "دعوة الأشخاص", "invite_people": "دعوة الأشخاص",
"invite_to_album": "دعوة إلى الألبوم", "invite_to_album": "دعوة إلى الألبوم",
"items_count": "{count, plural, one {# عنصر} other {# عناصر}}", "items_count": "{count, plural, one {# عنصر} other {# عناصر}}",
@@ -837,6 +1097,12 @@
"level": "المستوى", "level": "المستوى",
"library": "مكتبة", "library": "مكتبة",
"library_options": "خيارات المكتبة", "library_options": "خيارات المكتبة",
"library_page_device_albums": "ألبومات على الجهاز",
"library_page_new_album": "البوم جديد",
"library_page_sort_asset_count": "عدد الأصول",
"library_page_sort_created": "تاريخ الإنشاء",
"library_page_sort_last_modified": "آخر تعديل",
"library_page_sort_title": "عنوان الألبوم",
"light": "المضيئ", "light": "المضيئ",
"like_deleted": "تم حذف الإعجاب", "like_deleted": "تم حذف الإعجاب",
"link_motion_video": "رابط فيديو الحركة", "link_motion_video": "رابط فيديو الحركة",
@@ -846,12 +1112,42 @@
"list": "قائمة", "list": "قائمة",
"loading": "تحميل", "loading": "تحميل",
"loading_search_results_failed": "فشل تحميل نتائج البحث", "loading_search_results_failed": "فشل تحميل نتائج البحث",
"local_network": "Local network",
"local_network_sheet_info": "The app will connect to the server through this URL when using the specified Wi-Fi network",
"location_permission": "Location permission",
"location_permission_content": "In order to use the auto-switching feature, Immich needs precise location permission so it can read the current WiFi network's name",
"location_picker_choose_on_map": "اختر على الخريطة",
"location_picker_latitude_error": "أدخل خط عرض صالح",
"location_picker_latitude_hint": "أدخل خط العرض الخاص بك هنا",
"location_picker_longitude_error": "أدخل خط الطول الصحيح",
"location_picker_longitude_hint": "أدخل خط الطول هنا",
"log_out": "تسجيل خروج", "log_out": "تسجيل خروج",
"log_out_all_devices": "تسجيل الخروج من كافة الأجهزة", "log_out_all_devices": "تسجيل الخروج من كافة الأجهزة",
"logged_out_all_devices": "تم تسجيل الخروج من جميع الأجهزة", "logged_out_all_devices": "تم تسجيل الخروج من جميع الأجهزة",
"logged_out_device": "تم تسجيل الخروج من الجهاز", "logged_out_device": "تم تسجيل الخروج من الجهاز",
"login": "تسجيل الدخول", "login": "تسجيل الدخول",
"login_disabled": "تم تعطيل تسجيل الدخول",
"login_form_api_exception": " استثناء برمجة التطبيقات. يرجى التحقق من عنوان الخادم والمحاولة مرة أخرى ",
"login_form_back_button_text": "الرجوع للخلف",
"login_form_email_hint": "yoursemail@email.com",
"login_form_endpoint_hint": "http://your-server-ip:port",
"login_form_endpoint_url": "url نقطة نهاية الخادم",
"login_form_err_http": "يرجى تحديد http:// أو https://",
"login_form_err_invalid_email": "بريد إلكتروني خاطئ",
"login_form_err_invalid_url": "URL غير صالح",
"login_form_err_leading_whitespace": "قيادة المساحة البيضاء",
"login_form_err_trailing_whitespace": "زائدة بيضاء",
"login_form_failed_get_oauth_server_config": "تسجيل الخطأ باستخدام OAUTH ، تحقق من عنوان URL لخادم",
"login_form_failed_get_oauth_server_disable": "ميزة OAuth غير متوفرة على هذا الخادم",
"login_form_failed_login": "خطأ في تسجيل الدخول ، تحقق من عنوان URL للخادم والبريد الإلكتروني وكلمة المرور",
"login_form_handshake_exception": "كان هناك استثناء مصافحة مع الخادم.تمكين دعم الشهادة الموقعة ذاتيا في الإعدادات إذا كنت تستخدم شهادة موقعة ذاتيا.",
"login_form_password_hint": "كلمة المرور",
"login_form_save_login": "ابق متصلا",
"login_form_server_empty": "أدخل عنوان URL الخادم.",
"login_form_server_error": "لا يمكن الاتصال بالخادم.",
"login_has_been_disabled": "تم تعطيل تسجيل الدخول.", "login_has_been_disabled": "تم تعطيل تسجيل الدخول.",
"login_password_changed_error": "كان هناك خطأ في تحديث كلمة المرور الخاصة بك",
"login_password_changed_success": "تم تحديث كلمة السر بنجاح",
"logout_all_device_confirmation": "هل أنت متأكد أنك تريد تسجيل الخروج من جميع الأجهزة؟", "logout_all_device_confirmation": "هل أنت متأكد أنك تريد تسجيل الخروج من جميع الأجهزة؟",
"logout_this_device_confirmation": "هل أنت متأكد أنك تريد تسجيل الخروج من هذا الجهاز؟", "logout_this_device_confirmation": "هل أنت متأكد أنك تريد تسجيل الخروج من هذا الجهاز؟",
"longitude": "خط الطول", "longitude": "خط الطول",
@@ -868,13 +1164,40 @@
"manage_your_devices": "إدارة الأجهزة التي تم تسجيل الدخول إليها", "manage_your_devices": "إدارة الأجهزة التي تم تسجيل الدخول إليها",
"manage_your_oauth_connection": "إدارة اتصال OAuth الخاص بك", "manage_your_oauth_connection": "إدارة اتصال OAuth الخاص بك",
"map": "الخريطة", "map": "الخريطة",
"map_assets_in_bound": "{} photo",
"map_assets_in_bounds": "{} photos",
"map_cannot_get_user_location": "لا يمكن الحصول على موقع المستخدم",
"map_location_dialog_yes": "نعم",
"map_location_picker_page_use_location": "استخدم هذا الموقع",
"map_location_service_disabled_content": "يجب تمكين خدمة الموقع لعرض الأصول من موقعك الحالي.هل تريد تمكينه الآن؟",
"map_location_service_disabled_title": "خدمة الموقع معطل",
"map_marker_for_images": "علامة الخريطة للصور الملتقطة في {city}، {country}", "map_marker_for_images": "علامة الخريطة للصور الملتقطة في {city}، {country}",
"map_marker_with_image": "علامة الخريطة مع الصورة", "map_marker_with_image": "علامة الخريطة مع الصورة",
"map_no_assets_in_bounds": "لا توجد صور في هذا المجال",
"map_no_location_permission_content": "هناك حاجة إلى إذن الموقع لعرض الأصول من موقعك الحالي.هل تريد السماح به الآن؟",
"map_no_location_permission_title": "تم رفض إذن الموقع",
"map_settings": "إعدادات الخريطة", "map_settings": "إعدادات الخريطة",
"map_settings_dark_mode": "الوضع المظلم",
"map_settings_date_range_option_day": "24 ساعة الماضية",
"map_settings_date_range_option_days": "Past {} days",
"map_settings_date_range_option_year": "السنة الفائتة",
"map_settings_date_range_option_years": "Past {} years",
"map_settings_dialog_title": "إعدادات الخريطة",
"map_settings_include_show_archived": "تشمل الأرشفة",
"map_settings_include_show_partners": "تضمين الشركاء",
"map_settings_only_show_favorites": "اظهار المفضلة فقط",
"map_settings_theme_settings": "مظهر الخريطة",
"map_zoom_to_see_photos": "قم بتصغيرها لرؤية الصور",
"matches": "تطابقات", "matches": "تطابقات",
"media_type": "نوع الوسائط", "media_type": "نوع الوسائط",
"memories": "الذكريات", "memories": "الذكريات",
"memories_all_caught_up": "كل شيء محدث",
"memories_check_back_tomorrow": "التحقق مرة أخرى غدا لمزيد من الذكريات",
"memories_setting_description": "إدارة ما تراه في ذكرياتك", "memories_setting_description": "إدارة ما تراه في ذكرياتك",
"memories_start_over": "ابدأ من جديد",
"memories_swipe_to_close": "اسحب لأعلى للإغلاق",
"memories_year_ago": "A year ago",
"memories_years_ago": "{} years ago",
"memory": "ذكرى", "memory": "ذكرى",
"memory_lane_title": "ذكرياتٌ من {title}", "memory_lane_title": "ذكرياتٌ من {title}",
"menu": "القائمة", "menu": "القائمة",
@@ -889,12 +1212,17 @@
"missing": "المفقودة", "missing": "المفقودة",
"model": "نموذج", "model": "نموذج",
"month": "شهر", "month": "شهر",
"monthly_title_text_date_format": "ط ط ط",
"more": "المزيد", "more": "المزيد",
"moved_to_trash": "تم النقل إلى سلة المهملات", "moved_to_trash": "تم النقل إلى سلة المهملات",
"multiselect_grid_edit_date_time_err_read_only": "لا يمكن تعديل تاريخ الأصول (المواد) للقراءة فقط، سوف يتخطى",
"multiselect_grid_edit_gps_err_read_only": "لا يمكن تعديل موقع الأصول (المواد) للقراءة فقط، سوف يتخطى",
"mute_memories": "كتم الذكريات", "mute_memories": "كتم الذكريات",
"my_albums": "ألبوماتي", "my_albums": "ألبوماتي",
"name": "الاسم", "name": "الاسم",
"name_or_nickname": "الاسم أو اللقب", "name_or_nickname": "الاسم أو اللقب",
"networking_settings": "Networking",
"networking_subtitle": "Manage the server endpoint settings",
"never": "أبداً", "never": "أبداً",
"new_album": "البوم جديد", "new_album": "البوم جديد",
"new_api_key": "مفتاح API جديد", "new_api_key": "مفتاح API جديد",
@@ -911,6 +1239,7 @@
"no_albums_yet": "يبدو أنه ليس لديك أي ألبومات حتى الآن.", "no_albums_yet": "يبدو أنه ليس لديك أي ألبومات حتى الآن.",
"no_archived_assets_message": "أرشفة الصور ومقاطع الفيديو لإخفائها من عرض الصور لديك", "no_archived_assets_message": "أرشفة الصور ومقاطع الفيديو لإخفائها من عرض الصور لديك",
"no_assets_message": "انقر لتحميل صورتك الأولى", "no_assets_message": "انقر لتحميل صورتك الأولى",
"no_assets_to_show": "لا توجد أصول لعرضها",
"no_duplicates_found": "لم يتم العثور على أي تكرارات.", "no_duplicates_found": "لم يتم العثور على أي تكرارات.",
"no_exif_info_available": "لا تتوفر معلومات exif", "no_exif_info_available": "لا تتوفر معلومات exif",
"no_explore_results_message": "قم برفع المزيد من الصور لاستكشاف مجموعتك.", "no_explore_results_message": "قم برفع المزيد من الصور لاستكشاف مجموعتك.",
@@ -922,9 +1251,13 @@
"no_results_description": "جرب كلمة رئيسية مرادفة أو أكثر عمومية", "no_results_description": "جرب كلمة رئيسية مرادفة أو أكثر عمومية",
"no_shared_albums_message": "قم بإنشاء ألبوم لمشاركة الصور ومقاطع الفيديو مع الأشخاص في شبكتك", "no_shared_albums_message": "قم بإنشاء ألبوم لمشاركة الصور ومقاطع الفيديو مع الأشخاص في شبكتك",
"not_in_any_album": "ليست في أي ألبوم", "not_in_any_album": "ليست في أي ألبوم",
"not_selected": "Not selected",
"note_apply_storage_label_to_previously_uploaded assets": "ملاحظة: لتطبيق تسمية التخزين على المحتويات التي تم رفعها مسبقًا، قم بتشغيل", "note_apply_storage_label_to_previously_uploaded assets": "ملاحظة: لتطبيق تسمية التخزين على المحتويات التي تم رفعها مسبقًا، قم بتشغيل",
"note_unlimited_quota": "ملاحظة: أدخل 0 للحصة غير المحدودة",
"notes": "ملاحظات", "notes": "ملاحظات",
"notification_permission_dialog_content": "لتمكين الإخطارات ، انتقل إلى الإعدادات و اختار السماح.",
"notification_permission_list_tile_content": "منح إذن لتمكين الإخطارات.",
"notification_permission_list_tile_enable_button": "تمكين الإخطارات",
"notification_permission_list_tile_title": "إذن الإخطار",
"notification_toggle_setting_description": "تفعيل إشعارات البريد الإلكتروني", "notification_toggle_setting_description": "تفعيل إشعارات البريد الإلكتروني",
"notifications": "إشعارات", "notifications": "إشعارات",
"notifications_setting_description": "إدارة الإشعارات", "notifications_setting_description": "إدارة الإشعارات",
@@ -935,6 +1268,7 @@
"offline_paths_description": "قد تكون هذه النتائج بسبب الحذف اليدوي للملفات التي لا تشكل جزءًا من مكتبة خارجية.", "offline_paths_description": "قد تكون هذه النتائج بسبب الحذف اليدوي للملفات التي لا تشكل جزءًا من مكتبة خارجية.",
"ok": "نعم", "ok": "نعم",
"oldest_first": "الأقدم أولا", "oldest_first": "الأقدم أولا",
"on_this_device": "On this device",
"onboarding": "الإعداد الأولي", "onboarding": "الإعداد الأولي",
"onboarding_privacy_description": "تعتمد الميزات التالية (اختياري) على خدمات خارجية، ويمكن تعطيلها في أي وقت في إعدادات الإدارة.", "onboarding_privacy_description": "تعتمد الميزات التالية (اختياري) على خدمات خارجية، ويمكن تعطيلها في أي وقت في إعدادات الإدارة.",
"onboarding_theme_description": "اختر نسق الألوان للنسخة الخاصة بك. يمكنك تغيير ذلك لاحقًا في إعداداتك.", "onboarding_theme_description": "اختر نسق الألوان للنسخة الخاصة بك. يمكنك تغيير ذلك لاحقًا في إعداداتك.",
@@ -958,6 +1292,14 @@
"partner_can_access": "يستطيع {partner} الوصول", "partner_can_access": "يستطيع {partner} الوصول",
"partner_can_access_assets": "جميع الصور ومقاطع الفيديو الخاصة بك باستثناء تلك الموجودة في المؤرشفة والمحذوفة", "partner_can_access_assets": "جميع الصور ومقاطع الفيديو الخاصة بك باستثناء تلك الموجودة في المؤرشفة والمحذوفة",
"partner_can_access_location": "الموقع الذي تم التقاط صورك فيه", "partner_can_access_location": "الموقع الذي تم التقاط صورك فيه",
"partner_list_user_photos": "{user}'s photos",
"partner_list_view_all": "عرض الكل",
"partner_page_empty_message": "لم يتم مشاركة صورك بعد مع أي شريك.",
"partner_page_no_more_users": "لا مزيد من المستخدمين لإضافة",
"partner_page_partner_add_failed": "فشل في إضافة شريك",
"partner_page_select_partner": "حدد شريكًا",
"partner_page_shared_to_title": "مشترك ل",
"partner_page_stop_sharing_content": "{} will no longer be able to access your photos.",
"partner_sharing": "مشاركة الشركاء", "partner_sharing": "مشاركة الشركاء",
"partners": "الشركاء", "partners": "الشركاء",
"password": "كلمة المرور", "password": "كلمة المرور",
@@ -986,6 +1328,14 @@
"permanently_delete_assets_prompt": "هل أنت متأكد أنك تريد حذف {count, plural, one {هذا العنصر؟} other {هذه العناصر <b>#</b>؟}} سيتم أيضًا إزالته {count, plural, one {من ألبومه} other {من ألبوماتهم}}.", "permanently_delete_assets_prompt": "هل أنت متأكد أنك تريد حذف {count, plural, one {هذا العنصر؟} other {هذه العناصر <b>#</b>؟}} سيتم أيضًا إزالته {count, plural, one {من ألبومه} other {من ألبوماتهم}}.",
"permanently_deleted_asset": "تم حذف الأصل بشكل نهائي", "permanently_deleted_asset": "تم حذف الأصل بشكل نهائي",
"permanently_deleted_assets_count": "تم حذف {count, plural, one {# محتوى} other {# المحتويات}} نهائيًا", "permanently_deleted_assets_count": "تم حذف {count, plural, one {# محتوى} other {# المحتويات}} نهائيًا",
"permission_onboarding_back": "خلف",
"permission_onboarding_continue_anyway": "تواصل على أي حال",
"permission_onboarding_get_started": "البدء",
"permission_onboarding_go_to_settings": "اذهب للاعدادات",
"permission_onboarding_permission_denied": "تم رفض الإذن. لاستخدام التطبيق، قم بمنح أذونات الصور والفيديو في الإعدادات ",
"permission_onboarding_permission_granted": "تم تأمين التصريح! وضعك تمام.",
"permission_onboarding_permission_limited": "إذن محدود. للسماح بالنسخ الاحتياطي للتطبيق وإدارة مجموعة المعرض بالكامل، امنح أذونات الصور والفيديو في الإعدادات.",
"permission_onboarding_request": "يتطلب التطبيق إذنًا لعرض الصور ومقاطع الفيديو الخاصة بك",
"person": "شخص", "person": "شخص",
"person_birthdate": "تاريخ الميلاد {التاريخ}", "person_birthdate": "تاريخ الميلاد {التاريخ}",
"person_hidden": "{name}{hidden, select, true { (مخفي)} other {}}", "person_hidden": "{name}{hidden, select, true { (مخفي)} other {}}",
@@ -1003,6 +1353,8 @@
"play_motion_photo": "تشغيل الصور المتحركة", "play_motion_photo": "تشغيل الصور المتحركة",
"play_or_pause_video": "تشغيل الفيديو أو إيقافه مؤقتًا", "play_or_pause_video": "تشغيل الفيديو أو إيقافه مؤقتًا",
"port": "المنفذ", "port": "المنفذ",
"preferences_settings_subtitle": "Manage the app's preferences",
"preferences_settings_title": "التفضيلات",
"preset": "الإعداد المسبق", "preset": "الإعداد المسبق",
"preview": "معاينة", "preview": "معاينة",
"previous": "السابق", "previous": "السابق",
@@ -1010,6 +1362,13 @@
"previous_or_next_photo": "الصورة السابقة أو التالية", "previous_or_next_photo": "الصورة السابقة أو التالية",
"primary": "أساسي", "primary": "أساسي",
"privacy": "الخصوصية", "privacy": "الخصوصية",
"profile_drawer_app_logs": "السجلات",
"profile_drawer_client_out_of_date_major": "تطبيق الهاتف المحمول قديم.يرجى التحديث إلى أحدث إصدار رئيسي.",
"profile_drawer_client_out_of_date_minor": "تطبيق الهاتف المحمول قديم.يرجى التحديث إلى أحدث إصدار صغير.",
"profile_drawer_client_server_up_to_date": "العميل والخادم محدثان",
"profile_drawer_github": "Github",
"profile_drawer_server_out_of_date_major": "الخادم قديم.يرجى التحديث إلى أحدث إصدار رئيسي.",
"profile_drawer_server_out_of_date_minor": "الخادم قديم.يرجى التحديث إلى أحدث إصدار صغير.",
"profile_image_of_user": "صورة الملف الشخصي لـ {user}", "profile_image_of_user": "صورة الملف الشخصي لـ {user}",
"profile_picture_set": "مجموعة الصور الشخصية.", "profile_picture_set": "مجموعة الصور الشخصية.",
"public_album": "الألبوم العام", "public_album": "الألبوم العام",
@@ -1059,6 +1418,8 @@
"recent": "حديث", "recent": "حديث",
"recent-albums": "ألبومات الحديثة", "recent-albums": "ألبومات الحديثة",
"recent_searches": "عمليات البحث الأخيرة", "recent_searches": "عمليات البحث الأخيرة",
"recently_added": "Recently added",
"recently_added_page_title": "أضيف مؤخرا",
"refresh": "تحديث", "refresh": "تحديث",
"refresh_encoded_videos": "تحديث مقاطع الفيديو المشفرة", "refresh_encoded_videos": "تحديث مقاطع الفيديو المشفرة",
"refresh_faces": "تحديث الوجوه", "refresh_faces": "تحديث الوجوه",
@@ -1115,10 +1476,12 @@
"role_editor": "المحرر", "role_editor": "المحرر",
"role_viewer": "العارض", "role_viewer": "العارض",
"save": "حفظ", "save": "حفظ",
"save_to_gallery": "Save to gallery",
"saved_api_key": "تم حفظ مفتاح الـ API", "saved_api_key": "تم حفظ مفتاح الـ API",
"saved_profile": "تم حفظ الملف", "saved_profile": "تم حفظ الملف",
"saved_settings": "تم حفظ الإعدادات", "saved_settings": "تم حفظ الإعدادات",
"say_something": "قل شيئًا", "say_something": "قل شيئًا",
"scaffold_body_error_occurred": "حدث خطأ",
"scan_all_libraries": "فحص كل المكتبات", "scan_all_libraries": "فحص كل المكتبات",
"scan_library": "مسح", "scan_library": "مسح",
"scan_settings": "إعدادات الفحص", "scan_settings": "إعدادات الفحص",
@@ -1134,16 +1497,45 @@
"search_camera_model": "البحث حسب موديل الكاميرا...", "search_camera_model": "البحث حسب موديل الكاميرا...",
"search_city": "البحث حسب المدينة...", "search_city": "البحث حسب المدينة...",
"search_country": "البحث حسب الدولة...", "search_country": "البحث حسب الدولة...",
"search_filter_apply": "اختار الفلتر ",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_not_in_album": "ليس في الألبوم",
"search_filter_display_options": "Display Options",
"search_filter_filename": "Search by file name",
"search_filter_location": "Location",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_title": "Select media type",
"search_filter_people_title": "Select people",
"search_for": "البحث عن", "search_for": "البحث عن",
"search_for_existing_person": "البحث عن شخص موجود", "search_for_existing_person": "البحث عن شخص موجود",
"search_no_more_result": "No more results",
"search_no_people": "لا يوجد أشخاص", "search_no_people": "لا يوجد أشخاص",
"search_no_people_named": "لا يوجد أشخاص بالاسم \"{name}\"", "search_no_people_named": "لا يوجد أشخاص بالاسم \"{name}\"",
"search_no_result": "No results found, try a different search term or combination",
"search_options": "خيارات البحث", "search_options": "خيارات البحث",
"search_page_categories": "فئات",
"search_page_motion_photos": "الصور المتحركه",
"search_page_no_objects": "لا توجد معلومات عن أشياء متاحة",
"search_page_no_places": "لا توجد معلومات متوفرة للأماكن",
"search_page_screenshots": "لقطات الشاشة",
"search_page_search_photos_videos": "Search for your photos and videos",
"search_page_selfies": " صور ذاتيه",
"search_page_things": "أشياء",
"search_page_view_all_button": "عرض الكل",
"search_page_your_activity": "نشاطك",
"search_page_your_map": "خريطتك",
"search_people": "البحث عن الأشخاص", "search_people": "البحث عن الأشخاص",
"search_places": "البحث عن الأماكن", "search_places": "البحث عن الأماكن",
"search_rating": "البحث حسب التقييم...", "search_rating": "البحث حسب التقييم...",
"search_result_page_new_search_hint": "بحث جديد",
"search_settings": "إعدادات البحث", "search_settings": "إعدادات البحث",
"search_state": "البحث حسب الولاية...", "search_state": "البحث حسب الولاية...",
"search_suggestion_list_smart_search_hint_1": "يتم تمكين البحث الذكي افتراضيًا ، للبحث عن البيانات الوصفية ، استخدم بناء الجملة",
"search_suggestion_list_smart_search_hint_2": "م: البحث الخاص بك",
"search_tags": "البحث عن العلامات...", "search_tags": "البحث عن العلامات...",
"search_timezone": "البحث حسب المنطقة الزمنية...", "search_timezone": "البحث حسب المنطقة الزمنية...",
"search_type": "نوع البحث", "search_type": "نوع البحث",
@@ -1164,10 +1556,14 @@
"select_new_face": "تحديد وجه جديد", "select_new_face": "تحديد وجه جديد",
"select_photos": "تحديد الصور", "select_photos": "تحديد الصور",
"select_trash_all": "تحديد حذف الكلِ", "select_trash_all": "تحديد حذف الكلِ",
"select_user_for_sharing_page_err_album": "فشل في إنشاء ألبوم",
"selected": "التحديد", "selected": "التحديد",
"selected_count": "{count, plural, other {# محددة }}", "selected_count": "{count, plural, other {# محددة }}",
"send_message": "‏إرسال رسالة", "send_message": "‏إرسال رسالة",
"send_welcome_email": "إرسال بريدًا إلكترونيًا ترحيبيًا", "send_welcome_email": "إرسال بريدًا إلكترونيًا ترحيبيًا",
"server_endpoint": "Server Endpoint",
"server_info_box_app_version": "نسخة التطبيق",
"server_info_box_server_url": "عنوان URL الخادم",
"server_offline": "الخادم غير متصل", "server_offline": "الخادم غير متصل",
"server_online": "الخادم متصل", "server_online": "الخادم متصل",
"server_stats": "إحصائيات الخادم", "server_stats": "إحصائيات الخادم",
@@ -1179,22 +1575,91 @@
"set_date_of_birth": "تحديد تاريخ الميلاد", "set_date_of_birth": "تحديد تاريخ الميلاد",
"set_profile_picture": "تحديد صورة الملف الشخصي", "set_profile_picture": "تحديد صورة الملف الشخصي",
"set_slideshow_to_fullscreen": "تحديد عرض الشرائح على وضع ملء الشاشة", "set_slideshow_to_fullscreen": "تحديد عرض الشرائح على وضع ملء الشاشة",
"setting_image_viewer_help": "يقوم عارض التفاصيل بتحميل الصورة المصغرة الصغيرة أولاً ، ثم يقوم بتحميل المعاينة متوسطة الحجم (إذا تم تمكينها) ، ويقوم أخيرًا بتحميل الأصل (إذا تم تمكينه).",
"setting_image_viewer_original_subtitle": "تمكين تحميل الصورة الكاملة الدقة الأصلية (كبيرة!).تعطيل لتقليل استخدام البيانات (كل من الشبكة وعلى ذاكرة التخزين المؤقت للجهاز).",
"setting_image_viewer_original_title": "تحميل الصورة الأصلية",
"setting_image_viewer_preview_subtitle": "تمكين تحميل صورة متوسطة الدقة.تعطيل إما لتحميل مباشرة أو استخدام الصورة المصغرة مباشرة.",
"setting_image_viewer_preview_title": "تحميل صورة معاينة",
"setting_image_viewer_title": "الصور",
"setting_languages_apply": "تغيير الإعدادات",
"setting_languages_subtitle": "Change the app's language",
"setting_languages_title": "اللغات",
"setting_notifications_notify_failures_grace_period": "Notify background backup failures: {}",
"setting_notifications_notify_hours": "{} hours",
"setting_notifications_notify_immediately": "في الحال",
"setting_notifications_notify_minutes": "{} minutes",
"setting_notifications_notify_never": "أبداً",
"setting_notifications_notify_seconds": "{} seconds",
"setting_notifications_single_progress_subtitle": "معلومات التقدم التفصيلية تحميل لكل أصل",
"setting_notifications_single_progress_title": "إظهار تقدم التفاصيل الاحتياطية الخلفية",
"setting_notifications_subtitle": "اضبط تفضيلات الإخطار",
"setting_notifications_total_progress_subtitle": "التقدم التحميل العام (تم القيام به/إجمالي الأصول)",
"setting_notifications_total_progress_title": "إظهار النسخ الاحتياطي الخلفية التقدم المحرز",
"setting_video_viewer_looping_title": "تكرار مقطع فيديو تلقائيًا",
"setting_video_viewer_original_video_subtitle": "When streaming a video from the server, play the original even when a transcode is available. May lead to buffering. Videos available locally are played in original quality regardless of this setting.",
"setting_video_viewer_original_video_title": "Force original video",
"settings": "الإعدادات", "settings": "الإعدادات",
"settings_require_restart": "يرجى إعادة تشغيل لتطبيق هذا الإعداد",
"settings_saved": "تم حفظ الإعدادات", "settings_saved": "تم حفظ الإعدادات",
"share": "مشاركة", "share": "مشاركة",
"share_add_photos": "إضافة الصور",
"share_assets_selected": "{} selected",
"share_dialog_preparing": "تحضير...",
"shared": "مُشتَرك", "shared": "مُشتَرك",
"shared_album_activities_input_disable": "التعليق معطل",
"shared_album_activity_remove_content": "هل تريد حذف هذا النشاط؟",
"shared_album_activity_remove_title": "حذف النشاط",
"shared_album_section_people_action_error": "خطأ ترك/إزالة من الألبوم",
"shared_album_section_people_action_leave": "إزالة المستخدم من الألبوم",
"shared_album_section_people_action_remove_user": "إزالة المستخدم من الألبوم",
"shared_album_section_people_title": "الناس",
"shared_by": "تمت مشاركته بواسطة", "shared_by": "تمت مشاركته بواسطة",
"shared_by_user": "تمت المشاركة بواسطة {user}", "shared_by_user": "تمت المشاركة بواسطة {user}",
"shared_by_you": "تمت مشاركته من قِبلك", "shared_by_you": "تمت مشاركته من قِبلك",
"shared_from_partner": "صور من {partner}", "shared_from_partner": "صور من {partner}",
"shared_intent_upload_button_progress_text": "{} / {} Uploaded",
"shared_link_app_bar_title": "روابط مشتركة",
"shared_link_clipboard_copied_massage": "نسخ إلى الحافظة",
"shared_link_clipboard_text": "Link: {}\nPassword: {}",
"shared_link_create_error": "خطأ أثناء إنشاء رابط مشترك",
"shared_link_edit_description_hint": "أدخل وصف المشاركة",
"shared_link_edit_expire_after_option_day": "يوم 1",
"shared_link_edit_expire_after_option_days": "{} days",
"shared_link_edit_expire_after_option_hour": "1 ساعة",
"shared_link_edit_expire_after_option_hours": "{} hours",
"shared_link_edit_expire_after_option_minute": "1 دقيقة",
"shared_link_edit_expire_after_option_minutes": "{} minutes",
"shared_link_edit_expire_after_option_months": "{} months",
"shared_link_edit_expire_after_option_year": "{} year",
"shared_link_edit_password_hint": "أدخل كلمة مرور المشاركة",
"shared_link_edit_submit_button": "تحديث الرابط",
"shared_link_error_server_url_fetch": "لا يمكن جلب عنوان الخادم",
"shared_link_expires_day": "Expires in {} day",
"shared_link_expires_days": "Expires in {} days",
"shared_link_expires_hour": "Expires in {} hour",
"shared_link_expires_hours": "Expires in {} hours",
"shared_link_expires_minute": "Expires in {} minute",
"shared_link_expires_minutes": "Expires in {} minutes",
"shared_link_expires_never": "تنتهي ∞",
"shared_link_expires_second": "Expires in {} second",
"shared_link_expires_seconds": "Expires in {} seconds",
"shared_link_individual_shared": "Individual shared",
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "إدارة الروابط المشتركة",
"shared_link_options": "خيارات الرابط المشترك", "shared_link_options": "خيارات الرابط المشترك",
"shared_links": "روابط مشتركة", "shared_links": "روابط مشتركة",
"shared_links_description": "وصف الروابط المشتركة", "shared_links_description": "وصف الروابط المشتركة",
"shared_photos_and_videos_count": "{assetCount, plural, other {# الصور ومقاطع الفيديو المُشارَكة.}}", "shared_photos_and_videos_count": "{assetCount, plural, other {# الصور ومقاطع الفيديو المُشارَكة.}}",
"shared_with_me": "Shared with me",
"shared_with_partner": "تمت المشاركة مع {partner}", "shared_with_partner": "تمت المشاركة مع {partner}",
"sharing": "مشاركة", "sharing": "مشاركة",
"sharing_enter_password": "الرجاء إدخال كلمة المرور لعرض هذه الصفحة.", "sharing_enter_password": "الرجاء إدخال كلمة المرور لعرض هذه الصفحة.",
"sharing_page_album": "ألبومات مشتركة",
"sharing_page_description": "قم بإنشاء ألبومات مشتركة لمشاركة الصور ومقاطع الفيديو مع أشخاص في شبكتك.",
"sharing_page_empty_list": "قائمة فارغة",
"sharing_sidebar_description": "اعرض رابطًا للمشاركة في الشريط الجانبي", "sharing_sidebar_description": "اعرض رابطًا للمشاركة في الشريط الجانبي",
"sharing_silver_appbar_create_shared_album": "ألبوم مشترك جديد",
"sharing_silver_appbar_share_partner": "شارك مع الشريك",
"shift_to_permanent_delete": "اضغط على ⇧ لحذف المحتوى نهائيًا", "shift_to_permanent_delete": "اضغط على ⇧ لحذف المحتوى نهائيًا",
"show_album_options": "إظهار خيارات الألبوم", "show_album_options": "إظهار خيارات الألبوم",
"show_albums": "إظهار الألبومات", "show_albums": "إظهار الألبومات",
@@ -1261,6 +1726,9 @@
"support_third_party_description": "تم حزم تثبيت immich الخاص بك بواسطة جهة خارجية. قد تكون المشكلات التي تواجهها ناجمة عن هذه الحزمة، لذا يرجى طرح المشكلات معهم في المقام الأول باستخدام الروابط أدناه.", "support_third_party_description": "تم حزم تثبيت immich الخاص بك بواسطة جهة خارجية. قد تكون المشكلات التي تواجهها ناجمة عن هذه الحزمة، لذا يرجى طرح المشكلات معهم في المقام الأول باستخدام الروابط أدناه.",
"swap_merge_direction": "تبديل اتجاه الدمج", "swap_merge_direction": "تبديل اتجاه الدمج",
"sync": "مزامنة", "sync": "مزامنة",
"sync_albums": "Sync albums",
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
"tag": "العلامة", "tag": "العلامة",
"tag_assets": "أصول العلامة", "tag_assets": "أصول العلامة",
"tag_created": "تم إنشاء العلامة: {tag}", "tag_created": "تم إنشاء العلامة: {tag}",
@@ -1274,6 +1742,19 @@
"theme": "مظهر", "theme": "مظهر",
"theme_selection": "اختيار السمة", "theme_selection": "اختيار السمة",
"theme_selection_description": "قم بتعيين السمة تلقائيًا على اللون الفاتح أو الداكن بناءً على تفضيلات نظام المتصفح الخاص بك", "theme_selection_description": "قم بتعيين السمة تلقائيًا على اللون الفاتح أو الداكن بناءً على تفضيلات نظام المتصفح الخاص بك",
"theme_setting_asset_list_storage_indicator_title": "عرض مؤشر التخزين على بلاط الأصول",
"theme_setting_asset_list_tiles_per_row_title": "Number of assets per row ({})",
"theme_setting_colorful_interface_subtitle": "Apply primary color to background surfaces.",
"theme_setting_colorful_interface_title": "Colorful interface",
"theme_setting_image_viewer_quality_subtitle": "اضبط جودة عارض الصورة التفصيلية",
"theme_setting_image_viewer_quality_title": "جودة عارض الصورة",
"theme_setting_primary_color_subtitle": "Pick a color for primary actions and accents.",
"theme_setting_primary_color_title": "Primary color",
"theme_setting_system_primary_color_title": "Use system color",
"theme_setting_system_theme_switch": "تلقائي (اتبع إعداد النظام)",
"theme_setting_theme_subtitle": "اختر إعدادات مظهر التطبيق",
"theme_setting_three_stage_loading_subtitle": "قد يزيد التحميل من ثلاث مراحل من أداء التحميل ولكنه يسبب تحميل شبكة أعلى بكثير",
"theme_setting_three_stage_loading_title": "تمكين تحميل ثلاث مراحل",
"they_will_be_merged_together": "سيتم دمجهم معًا", "they_will_be_merged_together": "سيتم دمجهم معًا",
"third_party_resources": "موارد الطرف الثالث", "third_party_resources": "موارد الطرف الثالث",
"time_based_memories": "ذكريات استنادًا للوقت", "time_based_memories": "ذكريات استنادًا للوقت",
@@ -1293,7 +1774,15 @@
"trash_all": "نقل الكل إلى سلة المهملات", "trash_all": "نقل الكل إلى سلة المهملات",
"trash_count": "سلة المحملات {count, number}", "trash_count": "سلة المحملات {count, number}",
"trash_delete_asset": "حذف/نقل المحتوى إلى سلة المهملات", "trash_delete_asset": "حذف/نقل المحتوى إلى سلة المهملات",
"trash_emptied": "Emptied trash",
"trash_no_results_message": "ستظهر هنا الصور ومقاطع الفيديو المحذوفة.", "trash_no_results_message": "ستظهر هنا الصور ومقاطع الفيديو المحذوفة.",
"trash_page_delete_all": "حذف الكل",
"trash_page_empty_trash_dialog_content": "هل تريد تفريغ أصولك المهملة؟ ستتم إزالة هذه العناصر نهائيًا من التطبيق",
"trash_page_info": "Trashed items will be permanently deleted after {} days",
"trash_page_no_assets": "لا توجد اصول في سله المهملات",
"trash_page_restore_all": "استعادة الكل",
"trash_page_select_assets_btn": "اختر الأصول ",
"trash_page_title": "Trash ({})",
"trashed_items_will_be_permanently_deleted_after": "سيتم حذفُ العناصر المحذوفة نِهائيًا بعد {days, plural, one {# يوم} other {# أيام }}.", "trashed_items_will_be_permanently_deleted_after": "سيتم حذفُ العناصر المحذوفة نِهائيًا بعد {days, plural, one {# يوم} other {# أيام }}.",
"type": "النوع", "type": "النوع",
"unarchive": "أخرج من الأرشيف", "unarchive": "أخرج من الأرشيف",
@@ -1322,6 +1811,8 @@
"updated_password": "تم تحديث كلمة المرور", "updated_password": "تم تحديث كلمة المرور",
"upload": "رفع", "upload": "رفع",
"upload_concurrency": "الرفع المتزامن", "upload_concurrency": "الرفع المتزامن",
"upload_dialog_info": "هل تريد النسخ الاحتياطي للأصول (الأصول) المحددة إلى الخادم؟",
"upload_dialog_title": "تحميل الأصول",
"upload_errors": "إكتمل الرفع مع {count, plural, one {# خطأ} other {# أخطاء}}, قم بتحديث الصفحة لرؤية المحتويات الجديدة التي تم رفعها.", "upload_errors": "إكتمل الرفع مع {count, plural, one {# خطأ} other {# أخطاء}}, قم بتحديث الصفحة لرؤية المحتويات الجديدة التي تم رفعها.",
"upload_progress": "متبقية {remaining, number} - معالجة {processed, number}/{total, number}", "upload_progress": "متبقية {remaining, number} - معالجة {processed, number}/{total, number}",
"upload_skipped_duplicates": "تم تخطي {count, plural, one {# محتوى مكرر} other {# محتويات مكررة }}", "upload_skipped_duplicates": "تم تخطي {count, plural, one {# محتوى مكرر} other {# محتويات مكررة }}",
@@ -1329,8 +1820,11 @@
"upload_status_errors": "الأخطاء", "upload_status_errors": "الأخطاء",
"upload_status_uploaded": "تم الرفع", "upload_status_uploaded": "تم الرفع",
"upload_success": "تم الرفع بنجاح، قم بتحديث الصفحة لرؤية المحتويات المرفوعة الجديدة.", "upload_success": "تم الرفع بنجاح، قم بتحديث الصفحة لرؤية المحتويات المرفوعة الجديدة.",
"upload_to_immich": "Upload to Immich ({})",
"uploading": "Uploading",
"url": "عنوان URL", "url": "عنوان URL",
"usage": "الاستخدام", "usage": "الاستخدام",
"use_current_connection": "use current connection",
"use_custom_date_range": "استخدم النطاق الزمني المخصص بدلاً من ذلك", "use_custom_date_range": "استخدم النطاق الزمني المخصص بدلاً من ذلك",
"user": "مستخدم", "user": "مستخدم",
"user_id": "معرف المستخدم", "user_id": "معرف المستخدم",
@@ -1345,10 +1839,16 @@
"users": "المستخدمين", "users": "المستخدمين",
"utilities": "أدوات", "utilities": "أدوات",
"validate": "تحقْق", "validate": "تحقْق",
"validate_endpoint_error": "Please enter a valid URL",
"variables": "المتغيرات", "variables": "المتغيرات",
"version": "الإصدار", "version": "الإصدار",
"version_announcement_closing": "صديقك، أليكس", "version_announcement_closing": "صديقك، أليكس",
"version_announcement_message": "مرحبًا! يتوفر إصدار جديد من Immich. يُرجى تخصيص بعض الوقت لقراءة <link>ملاحظات الإصدار</link> للتأكد من تحديث إعداداتك لمنع أي أخطاء في التكوين، خاصة إذا كنت تستخدم WatchTower أو أي آلية تتولى تحديث مثيل Immich الخاص بك تلقائيًا.", "version_announcement_message": "مرحبًا! يتوفر إصدار جديد من Immich. يُرجى تخصيص بعض الوقت لقراءة <link>ملاحظات الإصدار</link> للتأكد من تحديث إعداداتك لمنع أي أخطاء في التكوين، خاصة إذا كنت تستخدم WatchTower أو أي آلية تتولى تحديث مثيل Immich الخاص بك تلقائيًا.",
"version_announcement_overlay_release_notes": "ملاحظات الإصدار",
"version_announcement_overlay_text_1": "مرحبًا يا صديقي ، هناك إصدار جديد",
"version_announcement_overlay_text_2": "من فضلك خذ وقتك لزيارة",
"version_announcement_overlay_text_3": " and ensure your docker-compose and .env setup is up-to-date to prevent any misconfigurations, especially if you use WatchTower or any mechanism that handles updating your server application automatically.",
"version_announcement_overlay_title": "نسخه جديده متاحه للخادم ",
"version_history": "تاريخ الإصدار", "version_history": "تاريخ الإصدار",
"version_history_item": "تم تثبيت {version} في {date}", "version_history_item": "تم تثبيت {version} في {date}",
"video": "فيديو", "video": "فيديو",
@@ -1367,15 +1867,20 @@
"view_next_asset": "عرض المحتوى التالي", "view_next_asset": "عرض المحتوى التالي",
"view_previous_asset": "عرض المحتوى السابق", "view_previous_asset": "عرض المحتوى السابق",
"view_stack": "عرض التكديس", "view_stack": "عرض التكديس",
"viewer_remove_from_stack": "حذف من الكومه أو المجموعة",
"viewer_stack_use_as_main_asset": "استخدم كأصل رئيسي",
"viewer_unstack": "فك الكومه",
"visibility_changed": "الرؤية تغيرت لـ {count, plural, one {شخص واحد} other {# عدة أشخاص}}", "visibility_changed": "الرؤية تغيرت لـ {count, plural, one {شخص واحد} other {# عدة أشخاص}}",
"waiting": "في الانتظار", "waiting": "في الانتظار",
"warning": "تحذير", "warning": "تحذير",
"week": "أسبوع", "week": "أسبوع",
"welcome": "مرحباً", "welcome": "مرحباً",
"welcome_to_immich": "مرحباً بك في Immich", "welcome_to_immich": "مرحباً بك في Immich",
"wifi_name": "WiFi Name",
"year": "سنة", "year": "سنة",
"years_ago": "منذ {years, plural, one {# سنة} other {# سنوات}}", "years_ago": "منذ {years, plural, one {# سنة} other {# سنوات}}",
"yes": "نعم", "yes": "نعم",
"you_dont_have_any_shared_links": "ليس لديك أي روابط مشتركة", "you_dont_have_any_shared_links": "ليس لديك أي روابط مشتركة",
"your_wifi_name": "Your WiFi name",
"zoom_image": "تكبير الصورة" "zoom_image": "تكبير الصورة"
} }

View File

@@ -4,6 +4,7 @@
"account_settings": "Налады ўліковага запісу", "account_settings": "Налады ўліковага запісу",
"acknowledge": "Пацвердзіць", "acknowledge": "Пацвердзіць",
"action": "Дзеянне", "action": "Дзеянне",
"action_common_update": "Абнавіць",
"actions": "Дзеянні", "actions": "Дзеянні",
"active": "Актыўны", "active": "Актыўны",
"activity": "Актыўнасць", "activity": "Актыўнасць",
@@ -20,8 +21,10 @@
"add_partner": "Дадаць партнёра", "add_partner": "Дадаць партнёра",
"add_path": "Дадаць шлях", "add_path": "Дадаць шлях",
"add_photos": "Дадаць фота", "add_photos": "Дадаць фота",
"add_to": "Дадаць у...", "add_to": "Дадаць у",
"add_to_album": "Дадаць у альбом", "add_to_album": "Дадаць у альбом",
"add_to_album_bottom_sheet_added": "Дададзена да {album}",
"add_to_album_bottom_sheet_already_exists": "Ужо знаходзіцца ў {album}",
"add_to_shared_album": "Дадаць у агульны альбом", "add_to_shared_album": "Дадаць у агульны альбом",
"add_url": "Дадаць URL", "add_url": "Дадаць URL",
"added_to_archive": "Дададзена ў архіў", "added_to_archive": "Дададзена ў архіў",
@@ -41,6 +44,7 @@
"backup_settings": "Налады рэзервовага капіявання", "backup_settings": "Налады рэзервовага капіявання",
"backup_settings_description": "Кіраванне наладкамі рэзервовага капіявання базы даных", "backup_settings_description": "Кіраванне наладкамі рэзервовага капіявання базы даных",
"check_all": "Праверыць усе", "check_all": "Праверыць усе",
"cleanup": "Ачыстка",
"cleared_jobs": "Ачышчаны заданні для: {job}", "cleared_jobs": "Ачышчаны заданні для: {job}",
"config_set_by_file": "Канфігурацыя ў зараз усталявана праз файл канфігурацыі", "config_set_by_file": "Канфігурацыя ў зараз усталявана праз файл канфігурацыі",
"confirm_delete_library": "Вы ўпэўнены што жадаеце выдаліць {library} бібліятэку?", "confirm_delete_library": "Вы ўпэўнены што жадаеце выдаліць {library} бібліятэку?",

View File

@@ -162,7 +162,6 @@
"no_pattern_added": "Няма добавен модел", "no_pattern_added": "Няма добавен модел",
"note_apply_storage_label_previous_assets": "Забележка: За да приложите етикета за съхранение към предварително качени файлове, стартирайте", "note_apply_storage_label_previous_assets": "Забележка: За да приложите етикета за съхранение към предварително качени файлове, стартирайте",
"note_cannot_be_changed_later": "ВНИМАНИЕ: Това не може да бъде променено по-късно!", "note_cannot_be_changed_later": "ВНИМАНИЕ: Това не може да бъде променено по-късно!",
"note_unlimited_quota": "Бележка: Въведете 0 за да нямате лимит на квотата",
"notification_email_from_address": "От адрес", "notification_email_from_address": "От адрес",
"notification_email_from_address_description": "Електронна поща на изпращача, например: \"Immich Photo Server <noreply@example.com>\"", "notification_email_from_address_description": "Електронна поща на изпращача, например: \"Immich Photo Server <noreply@example.com>\"",
"notification_email_host_description": "Хост на сървъра за електронна поща (например: smtp.immich.app)", "notification_email_host_description": "Хост на сървъра за електронна поща (например: smtp.immich.app)",
@@ -923,7 +922,6 @@
"no_shared_albums_message": "Създайте албум, за да споделяте снимки и видеоклипове с хората в мрежата си", "no_shared_albums_message": "Създайте албум, за да споделяте снимки и видеоклипове с хората в мрежата си",
"not_in_any_album": "Не е в никой албум", "not_in_any_album": "Не е в никой албум",
"note_apply_storage_label_to_previously_uploaded assets": "Забележка: За да приложите етикета за съхранение към предварително качени активи, стартирайте", "note_apply_storage_label_to_previously_uploaded assets": "Забележка: За да приложите етикета за съхранение към предварително качени активи, стартирайте",
"note_unlimited_quota": "Забележка: Въведете 0 за неограничена квота",
"notes": "Бележки", "notes": "Бележки",
"notification_toggle_setting_description": "Активиране на имейл известия", "notification_toggle_setting_description": "Активиране на имейл известия",
"notifications": "Известия", "notifications": "Известия",

View File

@@ -1,20 +1,22 @@
{ {
"account": "", "about": "abaot",
"account_settings": "", "account": "Akaont",
"acknowledge": "", "account_settings": "Seting blo Akaont",
"acknowledge": "Akcept",
"action": "", "action": "",
"actions": "", "actions": "",
"active": "", "active": "Stap Mekem",
"activity": "", "activity": "Wanem hemi Mekem",
"add": "", "activity_changed": "WAnem hemi Mekem hemi",
"add_a_description": "", "add": "Ad",
"add_a_location": "", "add_a_description": "Putem Description blo hem",
"add_a_name": "", "add_a_location": "Putem place blo hem",
"add_a_title": "", "add_a_name": "Putem nam blo hem",
"add_exclusion_pattern": "", "add_a_title": "Putem wan name blo hem",
"add_import_path": "", "add_exclusion_pattern": "Putem wan paten wae hemi karem aot",
"add_location": "", "add_import_path": "Putem wan pat blo import",
"add_more_users": "", "add_location": "Putem wan place blo hem",
"add_more_users": "Putem mor man",
"add_partner": "", "add_partner": "",
"add_path": "", "add_path": "",
"add_photos": "", "add_photos": "",
@@ -116,7 +118,6 @@
"no_pattern_added": "", "no_pattern_added": "",
"note_apply_storage_label_previous_assets": "", "note_apply_storage_label_previous_assets": "",
"note_cannot_be_changed_later": "", "note_cannot_be_changed_later": "",
"note_unlimited_quota": "",
"notification_email_from_address": "", "notification_email_from_address": "",
"notification_email_from_address_description": "", "notification_email_from_address_description": "",
"notification_email_host_description": "", "notification_email_host_description": "",
@@ -612,7 +613,6 @@
"no_shared_albums_message": "", "no_shared_albums_message": "",
"not_in_any_album": "", "not_in_any_album": "",
"note_apply_storage_label_to_previously_uploaded assets": "", "note_apply_storage_label_to_previously_uploaded assets": "",
"note_unlimited_quota": "",
"notes": "", "notes": "",
"notification_toggle_setting_description": "", "notification_toggle_setting_description": "",
"notifications": "", "notifications": "",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -4,6 +4,7 @@
"account_settings": "Kontoindstillinger", "account_settings": "Kontoindstillinger",
"acknowledge": "Godkend", "acknowledge": "Godkend",
"action": "Handling", "action": "Handling",
"action_common_update": "Opdater",
"actions": "Handlinger", "actions": "Handlinger",
"active": "Aktive", "active": "Aktive",
"activity": "Aktivitet", "activity": "Aktivitet",
@@ -13,6 +14,7 @@
"add_a_location": "Tilføj en placering", "add_a_location": "Tilføj en placering",
"add_a_name": "Tilføj et navn", "add_a_name": "Tilføj et navn",
"add_a_title": "Tilføj en titel", "add_a_title": "Tilføj en titel",
"add_endpoint": "Tilføj endepunkt",
"add_exclusion_pattern": "Tilføj udelukkelsesmønster", "add_exclusion_pattern": "Tilføj udelukkelsesmønster",
"add_import_path": "Tilføj importsti", "add_import_path": "Tilføj importsti",
"add_location": "Tilføj placering", "add_location": "Tilføj placering",
@@ -22,6 +24,8 @@
"add_photos": "Tilføj billeder", "add_photos": "Tilføj billeder",
"add_to": "Tilføj til…", "add_to": "Tilføj til…",
"add_to_album": "Tilføj til album", "add_to_album": "Tilføj til album",
"add_to_album_bottom_sheet_added": "Tilføjet til {album}",
"add_to_album_bottom_sheet_already_exists": "Allerede i {album}",
"add_to_shared_album": "Tilføj til delt album", "add_to_shared_album": "Tilføj til delt album",
"add_url": "Tilføj URL", "add_url": "Tilføj URL",
"added_to_archive": "Tilføjet til arkiv", "added_to_archive": "Tilføjet til arkiv",
@@ -66,8 +70,10 @@
"forcing_refresh_library_files": "Tvinger genopfriskning af alle biblioteksfiler", "forcing_refresh_library_files": "Tvinger genopfriskning af alle biblioteksfiler",
"image_format": "Format", "image_format": "Format",
"image_format_description": "WebP producerer mindre filer end JPEG, men er langsommere at komprimere.", "image_format_description": "WebP producerer mindre filer end JPEG, men er langsommere at komprimere.",
"image_fullsize_description": "Fuld størrelses billede uden metadata, brugt når zoomet ind",
"image_fullsize_enabled": "Aktiver fuld størrelses billede generering",
"image_prefer_embedded_preview": "Foretræk indlejret forhåndsvisning", "image_prefer_embedded_preview": "Foretræk indlejret forhåndsvisning",
"image_prefer_embedded_preview_setting_description": "Brug indlejrede forhåndsvisninger i RAW fotos som input til billedbehandling, når det er tilgængeligt. Dette kan give mere nøjagtige farver for nogle billeder, men kvaliteten af forhåndsvisningen er kameraafhængig, og billedet kan have flere komprimeringsartefakter.", "image_prefer_embedded_preview_setting_description": "Brug indlejrede forhåndsvisninger i RAW fotos som input til billedbehandling og når det er tilgængeligt. Dette kan give mere nøjagtige farver for nogle billeder, men kvaliteten af forhåndsvisningen er kameraafhængig, og billedet kan have flere komprimeringsartefakter.",
"image_prefer_wide_gamut": "Foretrækker bred farveskala", "image_prefer_wide_gamut": "Foretrækker bred farveskala",
"image_prefer_wide_gamut_setting_description": "Brug Display P3 til miniaturebilleder. Dette bevarer billeder med brede farveskalaers dynamik bedre, men billeder kan komme til at se anderledes ud på gamle enheder med en gammel browserversion. sRGB-billeder bliver beholdt som sRGB for at undgå farveskift.", "image_prefer_wide_gamut_setting_description": "Brug Display P3 til miniaturebilleder. Dette bevarer billeder med brede farveskalaers dynamik bedre, men billeder kan komme til at se anderledes ud på gamle enheder med en gammel browserversion. sRGB-billeder bliver beholdt som sRGB for at undgå farveskift.",
"image_preview_description": "Mellemstørrelse billede med fjernet metadata, der bruges, når du ser en enkelt mediefil og til machine learning", "image_preview_description": "Mellemstørrelse billede med fjernet metadata, der bruges, når du ser en enkelt mediefil og til machine learning",
@@ -162,7 +168,6 @@
"no_pattern_added": "Intet mønster tilføjet", "no_pattern_added": "Intet mønster tilføjet",
"note_apply_storage_label_previous_assets": "Bemærk: For at anvende Lagringsmærkatet på tidligere uploadede mediefiler, kør", "note_apply_storage_label_previous_assets": "Bemærk: For at anvende Lagringsmærkatet på tidligere uploadede mediefiler, kør",
"note_cannot_be_changed_later": "BEMÆRK: Dette kan ikke ændres senere!", "note_cannot_be_changed_later": "BEMÆRK: Dette kan ikke ændres senere!",
"note_unlimited_quota": "Bemærk: Indsæt 0 for uendelig kvote",
"notification_email_from_address": "Fra adressse", "notification_email_from_address": "Fra adressse",
"notification_email_from_address_description": "Afsenderemailadresse, for eksempel: \"Immich Billedserver <noreply@example.com>\"", "notification_email_from_address_description": "Afsenderemailadresse, for eksempel: \"Immich Billedserver <noreply@example.com>\"",
"notification_email_host_description": "Host af emailserver (fx smtp.immich.app)", "notification_email_host_description": "Host af emailserver (fx smtp.immich.app)",
@@ -363,6 +368,17 @@
"admin_password": "Administratoradgangskode", "admin_password": "Administratoradgangskode",
"administration": "Administration", "administration": "Administration",
"advanced": "Avanceret", "advanced": "Avanceret",
"advanced_settings_enable_alternate_media_filter_subtitle": "Brug denne valgmulighed for at filtrere media under synkronisering baseret på alternative kriterier. Prøv kun denne hvis du har problemer med at appen ikke opdager alle albums.",
"advanced_settings_log_level_title": "Logniveau: {}",
"advanced_settings_prefer_remote_subtitle": "Nogle enheder tager meget lang tid om at indlæse miniaturebilleder af elementer på enheden. Aktiver denne indstilling for i stedetat indlæse elementer fra serveren.",
"advanced_settings_prefer_remote_title": "Foretræk elementer på serveren",
"advanced_settings_proxy_headers_subtitle": "Define proxy headers Immich should send with each network request",
"advanced_settings_proxy_headers_title": "Proxy Headers",
"advanced_settings_self_signed_ssl_subtitle": "Spring verificering af SSL-certifikat over for serverens endelokation. Kræves for selvsignerede certifikater.",
"advanced_settings_self_signed_ssl_title": "Tillad selvsignerede certifikater",
"advanced_settings_tile_subtitle": "Avancerede brugerindstillinger",
"advanced_settings_troubleshooting_subtitle": "Slå ekstra funktioner for fejlsøgning til",
"advanced_settings_troubleshooting_title": "Fejlsøgning",
"age_months": "Alder {months, plural, one {# måned} other {# måneder}}", "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_year_months": "Alder 1 år, {months, plural, one {# måned} other {# måneder}}",
"age_years": "{years, plural, other {Alder #}}", "age_years": "{years, plural, other {Alder #}}",
@@ -371,6 +387,8 @@
"album_cover_updated": "Albumcover opdateret", "album_cover_updated": "Albumcover opdateret",
"album_delete_confirmation": "Er du sikker på at du vil slette albummet {album}?", "album_delete_confirmation": "Er du sikker på at du vil slette albummet {album}?",
"album_delete_confirmation_description": "Hvis dette album er delt, vil andre brugere ikke længere kunne få adgang til det.", "album_delete_confirmation_description": "Hvis dette album er delt, vil andre brugere ikke længere kunne få adgang til det.",
"album_info_card_backup_album_excluded": "EKSKLUDERET",
"album_info_card_backup_album_included": "INKLUDERET",
"album_info_updated": "Albuminfo opdateret", "album_info_updated": "Albuminfo opdateret",
"album_leave": "Forlad albummet?", "album_leave": "Forlad albummet?",
"album_leave_confirmation": "Er du sikker på at du vil forlade {album}?", "album_leave_confirmation": "Er du sikker på at du vil forlade {album}?",
@@ -379,10 +397,22 @@
"album_remove_user": "Fjern bruger?", "album_remove_user": "Fjern bruger?",
"album_remove_user_confirmation": "Er du sikker på at du vil fjerne {user}?", "album_remove_user_confirmation": "Er du sikker på at du vil fjerne {user}?",
"album_share_no_users": "Det ser ud til at du har delt denne album med alle brugere, eller du har ikke nogen brugere til at dele med.", "album_share_no_users": "Det ser ud til at du har delt denne album med alle brugere, eller du har ikke nogen brugere til at dele med.",
"album_thumbnail_card_item": "1 genstand",
"album_thumbnail_card_items": "{} genstande",
"album_thumbnail_card_shared": ". Delt",
"album_thumbnail_shared_by": "Delt af {}",
"album_updated": "Album opdateret", "album_updated": "Album opdateret",
"album_updated_setting_description": "Modtag en emailnotifikation når et delt album får nye mediefiler", "album_updated_setting_description": "Modtag en emailnotifikation når et delt album får nye mediefiler",
"album_user_left": "Forlod {album}", "album_user_left": "Forlod {album}",
"album_user_removed": "Fjernede {user}", "album_user_removed": "Fjernede {user}",
"album_viewer_appbar_delete_confirm": "Er du sikker på, du vil slette dette album fra din bruger?",
"album_viewer_appbar_share_err_delete": "Fejlede sletning af album",
"album_viewer_appbar_share_err_leave": "Fejlede i at forlade album",
"album_viewer_appbar_share_err_remove": "Der er problemer med at fjerne elementer fra album",
"album_viewer_appbar_share_err_title": "Fejlede i at ændre albumtitel",
"album_viewer_appbar_share_leave": "Forlad album",
"album_viewer_appbar_share_to": "Del til",
"album_viewer_page_share_add_users": "Tilføj brugere",
"album_with_link_access": "Lad alle med linket se billeder og personer i dette album.", "album_with_link_access": "Lad alle med linket se billeder og personer i dette album.",
"albums": "Albummer", "albums": "Albummer",
"albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Albummer}}", "albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Albummer}}",
@@ -400,42 +430,133 @@
"api_key_description": "Denne værdi vises kun én gang. Venligst kopiér den før du lukker vinduet.", "api_key_description": "Denne værdi vises kun én gang. Venligst kopiér den før du lukker vinduet.",
"api_key_empty": "Din API-nøgle-navn burde ikke være tom", "api_key_empty": "Din API-nøgle-navn burde ikke være tom",
"api_keys": "API-nøgler", "api_keys": "API-nøgler",
"app_bar_signout_dialog_content": "Er du sikker på, du vil logge ud?",
"app_bar_signout_dialog_ok": "Ja",
"app_bar_signout_dialog_title": "Log ud",
"app_settings": "Appindstillinger", "app_settings": "Appindstillinger",
"appears_in": "Optræder i", "appears_in": "Optræder i",
"archive": "Arkiv", "archive": "Arkiv",
"archive_or_unarchive_photo": "Arkivér eller dearkivér billede", "archive_or_unarchive_photo": "Arkivér eller dearkivér billede",
"archive_page_no_archived_assets": "Ingen arkiverede elementer blev fundet",
"archive_page_title": "Arkivér ({})",
"archive_size": "Arkiv størelse", "archive_size": "Arkiv størelse",
"archive_size_description": "Konfigurer arkivstørrelsen for downloads (i GiB)", "archive_size_description": "Konfigurer arkivstørrelsen for downloads (i GiB)",
"archived": "Arkiveret",
"archived_count": "{count, plural, other {Arkiveret #}}", "archived_count": "{count, plural, other {Arkiveret #}}",
"are_these_the_same_person": "Er disse den samme person?", "are_these_the_same_person": "Er disse den samme person?",
"are_you_sure_to_do_this": "Er du sikker på, at du vil gøre det her?", "are_you_sure_to_do_this": "Er du sikker på, at du vil gøre det her?",
"asset_action_delete_err_read_only": "Kan ikke slette kun læselige elementer. Springer over",
"asset_action_share_err_offline": "Kan ikke hente offline element(er). Springer over",
"asset_added_to_album": "Tilføjet til album", "asset_added_to_album": "Tilføjet til album",
"asset_adding_to_album": "Tilføjer til album…", "asset_adding_to_album": "Tilføjer til album…",
"asset_description_updated": "Mediefilsbeskrivelse er blevet opdateret", "asset_description_updated": "Mediefilsbeskrivelse er blevet opdateret",
"asset_filename_is_offline": "Mediefil {filename} er offline", "asset_filename_is_offline": "Mediefil {filename} er offline",
"asset_has_unassigned_faces": "Aktivet har ikke-tildelte ansigter", "asset_has_unassigned_faces": "Aktivet har ikke-tildelte ansigter",
"asset_hashing": "Hashing…", "asset_hashing": "Hashing…",
"asset_list_group_by_sub_title": "Gruppér efter",
"asset_list_layout_settings_dynamic_layout_title": "Dynamisk layout",
"asset_list_layout_settings_group_automatically": "Automatisk",
"asset_list_layout_settings_group_by": "Gruppér elementer pr. ",
"asset_list_layout_settings_group_by_month_day": "Måned + dag",
"asset_list_layout_sub_title": "Layout",
"asset_list_settings_subtitle": "Indstillinger for billedgitterlayout",
"asset_list_settings_title": "Billedgitter",
"asset_offline": "Mediefil offline", "asset_offline": "Mediefil offline",
"asset_offline_description": "Denne eksterne mediefil kan ikke længere findes på drevet. Kontakt venligst din Immich-administrator for hjælp.", "asset_offline_description": "Denne eksterne mediefil kan ikke længere findes på drevet. Kontakt venligst din Immich-administrator for hjælp.",
"asset_restored_successfully": "Elementet blev gendannet succesfuldt",
"asset_skipped": "Sprunget over", "asset_skipped": "Sprunget over",
"asset_skipped_in_trash": "I skraldespand", "asset_skipped_in_trash": "I skraldespand",
"asset_uploaded": "Uploadet", "asset_uploaded": "Uploadet",
"asset_uploading": "Uploader…", "asset_uploading": "Uploader…",
"asset_viewer_settings_subtitle": "Administrer indstillinger for gallerifremviser",
"asset_viewer_settings_title": "Billedviser",
"assets": "elementer", "assets": "elementer",
"assets_added_count": "Tilføjet {count, plural, one {# mediefil} other {# mediefiler}}", "assets_added_count": "Tilføjet {count, plural, one {# mediefil} other {# mediefiler}}",
"assets_added_to_album_count": "{count, plural, one {# mediefil} other {# mediefiler}} tilføjet til albummet", "assets_added_to_album_count": "{count, plural, one {# mediefil} other {# mediefiler}} tilføjet til albummet",
"assets_added_to_name_count": "Tilføjet {count, plural, one {# mediefil} other {# mediefiler}} til {hasName, select, true {<b>{name}</b>} other {nyt album}}", "assets_added_to_name_count": "Tilføjet {count, plural, one {# mediefil} other {# mediefiler}} til {hasName, select, true {<b>{name}</b>} other {nyt album}}",
"assets_count": "{count, plural, one {# mediefil} other {# mediefiler}}", "assets_count": "{count, plural, one {# mediefil} other {# mediefiler}}",
"assets_deleted_permanently": "{} element(er) blev fjernet permanent",
"assets_deleted_permanently_from_server": "{} element(er) blev fjernet permanent fra serveren",
"assets_moved_to_trash_count": "Flyttede {count, plural, one {# mediefil} other {# mediefiler}} til papirkurven", "assets_moved_to_trash_count": "Flyttede {count, plural, one {# mediefil} other {# mediefiler}} til papirkurven",
"assets_permanently_deleted_count": "{count, plural, one {# mediefil} other {# mediefiler}} slettet permanent", "assets_permanently_deleted_count": "{count, plural, one {# mediefil} other {# mediefiler}} slettet permanent",
"assets_removed_count": "Fjernede {count, plural, one {# mediefil} other {# mediefiler}}", "assets_removed_count": "Fjernede {count, plural, one {# mediefil} other {# mediefiler}}",
"assets_removed_permanently_from_device": "{} element(er) blev fjernet permanent fra din enhed",
"assets_restore_confirmation": "Er du sikker på, at du vil gendanne alle dine mediafiler i papirkurven? Du kan ikke fortryde denne handling! Bemærk, at offline mediefiler ikke kan gendannes på denne måde.", "assets_restore_confirmation": "Er du sikker på, at du vil gendanne alle dine mediafiler i papirkurven? Du kan ikke fortryde denne handling! Bemærk, at offline mediefiler ikke kan gendannes på denne måde.",
"assets_restored_count": "{count, plural, one {# mediefil} other {# mediefiler}} gendannet", "assets_restored_count": "{count, plural, one {# mediefil} other {# mediefiler}} gendannet",
"assets_restored_successfully": "{} element(er) blev gendannet succesfuldt",
"assets_trashed": "{} element(er) blev smidt i papirkurven",
"assets_trashed_count": "{count, plural, one {# mediefil} other {# mediefiler}} smidt i papirkurven", "assets_trashed_count": "{count, plural, one {# mediefil} other {# mediefiler}} smidt i papirkurven",
"assets_trashed_from_server": "{} element(er) blev smidt i serverens papirkurv",
"assets_were_part_of_album_count": "mediefil{count, plural, one {mediefil} other {mediefiler}} er allerede en del af albummet", "assets_were_part_of_album_count": "mediefil{count, plural, one {mediefil} other {mediefiler}} er allerede en del af albummet",
"authorized_devices": "Tilladte enheder", "authorized_devices": "Tilladte enheder",
"automatic_endpoint_switching_subtitle": "Forbind lokalt over det anviste WiFi, når det er tilgængeligt og brug alternative forbindelser andre stæder",
"automatic_endpoint_switching_title": "Automatisk skift af URL",
"back": "Tilbage", "back": "Tilbage",
"back_close_deselect": "Tilbage, luk eller fravælg", "back_close_deselect": "Tilbage, luk eller fravælg",
"background_location_permission": "Tilladelse til baggrundsplacering",
"background_location_permission_content": "For at skifte netværk, når appen kører i baggrunden, skal Immich *altid* have præcis placeringsadgang, så appen kan læse WiFi-netværkets navn",
"backup_album_selection_page_albums_device": "Albummer på enhed ({})",
"backup_album_selection_page_albums_tap": "Tryk en gang for at inkludere, tryk to gange for at ekskludere",
"backup_album_selection_page_assets_scatter": "Elementer kan være spredt på tværs af flere albummer. Albummer kan således inkluderes eller udelukkes under sikkerhedskopieringsprocessen.",
"backup_album_selection_page_select_albums": "Vælg albummer",
"backup_album_selection_page_selection_info": "Oplysninger om valgte",
"backup_album_selection_page_total_assets": "Samlede unikke elementer",
"backup_all": "Alt",
"backup_background_service_backup_failed_message": "Sikkerhedskopiering af elementer fejlede. Forsøger igen...",
"backup_background_service_connection_failed_message": "Forbindelsen til serveren blev tabt. Forsøger igen...",
"backup_background_service_current_upload_notification": "Uploader {}",
"backup_background_service_default_notification": "Søger efter nye elementer...",
"backup_background_service_error_title": "Fejl med sikkerhedskopiering",
"backup_background_service_in_progress_notification": "Tager sikkerhedskopi af dine elementer...",
"backup_background_service_upload_failure_notification": "Fejlede med uploade af {}",
"backup_controller_page_albums": "Sikkerhedskopiér albummer",
"backup_controller_page_background_app_refresh_disabled_content": "Slå baggrundsopdatering af applikationen til i Indstillinger > Generelt > Baggrundsopdatering af applikationer, for at bruge sikkerhedskopi i baggrunden.",
"backup_controller_page_background_app_refresh_disabled_title": "Baggrundsopdatering af app er slået fra",
"backup_controller_page_background_app_refresh_enable_button_text": "Gå til indstillinger",
"backup_controller_page_background_battery_info_link": "Vis mig hvordan",
"backup_controller_page_background_battery_info_message": "For den bedste oplevelse med sikkerhedskopiering i baggrunden, bør du slå batterioptimering, der begrænder baggrundsaktivitet, fra.\n\nSiden dette er afhængigt af enheden, bør du undersøge denne information leveret af din enheds producent.",
"backup_controller_page_background_battery_info_ok": "OK",
"backup_controller_page_background_battery_info_title": "Batterioptimering",
"backup_controller_page_background_charging": "Kun under opladning",
"backup_controller_page_background_configure_error": "Fejlede konfigureringen af sikkerhedskopiering i baggrunden",
"backup_controller_page_background_delay": "Udskyd sikkerhedskopi af nye elementer: {}",
"backup_controller_page_background_description": "Slå sikkerhedskopiering i baggrunden til, for automatisk at tage sikkerhedskopi af nye elementer, uden at skulle åbne appen",
"backup_controller_page_background_is_off": "Automatisk sikkerhedskopiering i baggrunden er slået fra",
"backup_controller_page_background_is_on": "Automatisk sikkerhedskopiering i baggrunden er slået til",
"backup_controller_page_background_turn_off": "Slå sikkerhedskopiering i baggrunden fra",
"backup_controller_page_background_turn_on": "Slå sikkerhedskopiering i baggrunden til",
"backup_controller_page_background_wifi": "Kun med WiFi",
"backup_controller_page_backup": "Sikkerhedskopier",
"backup_controller_page_backup_selected": "Valgte: ",
"backup_controller_page_backup_sub": "Sikkerhedskopierede billeder og videoer",
"backup_controller_page_created": "Oprettet den: {}",
"backup_controller_page_desc_backup": "Slå sikkerhedskopiering til automatisk at uploade nye elementer til serveren.",
"backup_controller_page_excluded": "Ekskluderet: ",
"backup_controller_page_failed": "Felet ({})",
"backup_controller_page_filename": "Filnavn: {} [{}]",
"backup_controller_page_id": "ID: {}",
"backup_controller_page_info": "Sikkerhedskopieringsinformation",
"backup_controller_page_none_selected": "Ingen valgte",
"backup_controller_page_remainder": "Tilbageværende",
"backup_controller_page_remainder_sub": "Tilbageværende billeder og albummer, at sikkerhedskopiere, fra valgte",
"backup_controller_page_server_storage": "Serverlager",
"backup_controller_page_start_backup": "Start sikkerhedskopiering",
"backup_controller_page_status_off": "Sikkerhedskopiering er slået fra",
"backup_controller_page_status_on": "Sikkerhedskopiering er slået til",
"backup_controller_page_storage_format": "{} af {} brugt",
"backup_controller_page_to_backup": "Albummer at sikkerhedskopiere",
"backup_controller_page_total_sub": "Alle unikke billeder og videoer fra valgte albummer",
"backup_controller_page_turn_off": "Slå sikkerhedskopiering fra",
"backup_controller_page_turn_on": "Slå sikkerhedskopiering til",
"backup_controller_page_uploading_file_info": "Uploader filinformation",
"backup_err_only_album": "Kan ikke slette det eneste album",
"backup_info_card_assets": "elementer",
"backup_manual_cancelled": "Annulleret",
"backup_manual_in_progress": "Upload er allerede undervejs. Prøv igen efter noget tid",
"backup_manual_success": "Succes",
"backup_manual_title": "Uploadstatus",
"backup_options_page_title": "Backupindstillinger",
"backup_setting_subtitle": "Administrer indstillnger for upload i forgrund og baggrund",
"backward": "Baglæns", "backward": "Baglæns",
"birthdate_saved": "Fødselsdatoen blev gemt", "birthdate_saved": "Fødselsdatoen blev gemt",
"birthdate_set_description": "Fødselsdato bruges til at beregne alderen på denne person på tidspunktet for et billede.", "birthdate_set_description": "Fødselsdato bruges til at beregne alderen på denne person på tidspunktet for et billede.",
@@ -447,24 +568,52 @@
"bulk_keep_duplicates_confirmation": "Er du sikker på, at du vil beholde {count, plural, one {# duplicate asset} other {# duplicate assets}}? Dette vil løse alle dubletgrupper uden at slette noget.", "bulk_keep_duplicates_confirmation": "Er du sikker på, at du vil beholde {count, plural, one {# duplicate asset} other {# duplicate assets}}? Dette vil løse alle dubletgrupper uden at slette noget.",
"bulk_trash_duplicates_confirmation": "Er du sikker på, at du vil masseslette {count, plural, one {# duplikeret objekt} other {# duplikerede objekter}}? Dette vil beholde det største objekt i hver gruppe og slette alle andre dubletter.", "bulk_trash_duplicates_confirmation": "Er du sikker på, at du vil masseslette {count, plural, one {# duplikeret objekt} other {# duplikerede objekter}}? Dette vil beholde det største objekt i hver gruppe og slette alle andre dubletter.",
"buy": "Køb Immich", "buy": "Køb Immich",
"cache_settings_album_thumbnails": "Biblioteksminiaturebilleder ({} elementer)",
"cache_settings_clear_cache_button": "Fjern cache",
"cache_settings_clear_cache_button_title": "Fjern appens cache. Dette vil i stor grad påvirke appens ydeevne indtil cachen er genopbygget.",
"cache_settings_duplicated_assets_clear_button": "RYD",
"cache_settings_duplicated_assets_subtitle": "Billeder og videoer der er sortlistet af appen",
"cache_settings_duplicated_assets_title": "Dublikerede elementer ({})",
"cache_settings_image_cache_size": "Størrelse af billedecache ({} elementer)",
"cache_settings_statistics_album": "Biblioteksminiaturer",
"cache_settings_statistics_assets": "{} elementer ({})",
"cache_settings_statistics_full": "Fulde billeder",
"cache_settings_statistics_shared": "Miniaturebilleder til delte albummer",
"cache_settings_statistics_thumbnail": "Miniaturebilleder",
"cache_settings_statistics_title": "Cacheforbrug",
"cache_settings_subtitle": "Håndter cache-adfærden for Immich-appen.",
"cache_settings_thumbnail_size": "Størrelse af miniaturebillede cache ({} elementer)",
"cache_settings_tile_subtitle": "Kontroller den lokale lagerplads",
"cache_settings_tile_title": "Lokal lagerplads",
"cache_settings_title": "Cache-indstillinger",
"camera": "Kamera", "camera": "Kamera",
"camera_brand": "Kameramærke", "camera_brand": "Kameramærke",
"camera_model": "Kameramodel", "camera_model": "Kameramodel",
"cancel": "Annullér", "cancel": "Annullér",
"cancel_search": "Annullér søgning", "cancel_search": "Annullér søgning",
"canceled": "Canceled",
"cannot_merge_people": "Kan ikke sammenflette personer", "cannot_merge_people": "Kan ikke sammenflette personer",
"cannot_undo_this_action": "Du kan ikke fortryde denne handling!", "cannot_undo_this_action": "Du kan ikke fortryde denne handling!",
"cannot_update_the_description": "Kan ikke opdatere beskrivelsen", "cannot_update_the_description": "Kan ikke opdatere beskrivelsen",
"change_date": "Ændr dato", "change_date": "Ændr dato",
"change_display_order": "Ændrer visningsrækkefølge",
"change_expiration_time": "Ændr udløbstidspunkt", "change_expiration_time": "Ændr udløbstidspunkt",
"change_location": "Ændr sted", "change_location": "Ændr sted",
"change_name": "Ændr navn", "change_name": "Ændr navn",
"change_name_successfully": "Navn er ændret", "change_name_successfully": "Navn er ændret",
"change_password": "Skift kodeord", "change_password": "Skift kodeord",
"change_password_description": "Dette er enten første gang du tilmelder dig, eller en ændring af kodeordet blev bestilt. Indtast dit nye kodeord herunder.", "change_password_description": "Dette er enten første gang du tilmelder dig, eller en ændring af kodeordet blev bestilt. Indtast dit nye kodeord herunder.",
"change_password_form_confirm_password": "Bekræft kodeord",
"change_password_form_description": "Hej {name},\n\nDette er enten første gang du logger ind eller også er der lavet en anmodning om at ændre dit kodeord. Indtast venligst et nyt kodeord nedenfor.",
"change_password_form_new_password": "Nyt kodeord",
"change_password_form_password_mismatch": "Kodeord er ikke ens",
"change_password_form_reenter_new_password": "Gentag nyt kodeord",
"change_your_password": "Skift dit kodeord", "change_your_password": "Skift dit kodeord",
"changed_visibility_successfully": "Synlighed blev ændret", "changed_visibility_successfully": "Synlighed blev ændret",
"check_all": "Markér alle", "check_all": "Markér alle",
"check_corrupt_asset_backup": "Tjek for korrupte sikkerhedskopier af elementer",
"check_corrupt_asset_backup_button": "Foretag kontrol",
"check_corrupt_asset_backup_description": "Kør kun denne kontrol via Wi-Fi, og når alle elementer er blevet sikkerhedskopieret. Proceduren kan tage et par minutter.",
"check_logs": "Tjek logfiler", "check_logs": "Tjek logfiler",
"choose_matching_people_to_merge": "Vælg matchende personer til sammenfletning", "choose_matching_people_to_merge": "Vælg matchende personer til sammenfletning",
"city": "By", "city": "By",
@@ -473,6 +622,14 @@
"clear_all_recent_searches": "Ryd alle seneste søgninger", "clear_all_recent_searches": "Ryd alle seneste søgninger",
"clear_message": "Ryd bedsked", "clear_message": "Ryd bedsked",
"clear_value": "Ryd værdi", "clear_value": "Ryd værdi",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove_msg": "Client certificate is removed",
"client_cert_subtitle": "Supports PKCS12 (.p12, .pfx) format only. Certificate Import/Remove is available only before login",
"client_cert_title": "SSL Client Certificate",
"clockwise": "Med uret", "clockwise": "Med uret",
"close": "Luk", "close": "Luk",
"collapse": "Klap sammen", "collapse": "Klap sammen",
@@ -483,6 +640,9 @@
"comment_options": "Kommentarindstillinger", "comment_options": "Kommentarindstillinger",
"comments_and_likes": "Kommentarer og likes", "comments_and_likes": "Kommentarer og likes",
"comments_are_disabled": "Kommentarer er slået fra", "comments_are_disabled": "Kommentarer er slået fra",
"common_create_new_album": "Opret et nyt album",
"common_server_error": "Tjek din internetforbindelse, sørg for at serveren er tilgængelig og at app- og serversioner er kompatible.",
"completed": "Completed",
"confirm": "Bekræft", "confirm": "Bekræft",
"confirm_admin_password": "Bekræft administratoradgangskode", "confirm_admin_password": "Bekræft administratoradgangskode",
"confirm_delete_face": "Er du sikker på, du vil slette {name}s ansigt fra denne mediefil?", "confirm_delete_face": "Er du sikker på, du vil slette {name}s ansigt fra denne mediefil?",
@@ -492,6 +652,15 @@
"contain": "Inddæm", "contain": "Inddæm",
"context": "Kontekst", "context": "Kontekst",
"continue": "Fortsæt", "continue": "Fortsæt",
"control_bottom_app_bar_album_info_shared": "{} genstande • Delt",
"control_bottom_app_bar_create_new_album": "Opret nyt album",
"control_bottom_app_bar_delete_from_immich": "Slet fra Immich",
"control_bottom_app_bar_delete_from_local": "Slet fra enhed",
"control_bottom_app_bar_edit_location": "Rediger placering",
"control_bottom_app_bar_edit_time": "Rediger tid og dato",
"control_bottom_app_bar_share_link": "Share Link",
"control_bottom_app_bar_share_to": "Del til",
"control_bottom_app_bar_trash_from_immich": "Flyt til papirkurv",
"copied_image_to_clipboard": "Kopierede billede til clipboard.", "copied_image_to_clipboard": "Kopierede billede til clipboard.",
"copied_to_clipboard": "Kopieret til udklipsholder!", "copied_to_clipboard": "Kopieret til udklipsholder!",
"copy_error": "Kopifejl", "copy_error": "Kopifejl",
@@ -506,24 +675,34 @@
"covers": "Omslag", "covers": "Omslag",
"create": "Opret", "create": "Opret",
"create_album": "Opret album", "create_album": "Opret album",
"create_album_page_untitled": "Uden titel",
"create_library": "Opret bibliotek", "create_library": "Opret bibliotek",
"create_link": "Opret link", "create_link": "Opret link",
"create_link_to_share": "Opret link for at dele", "create_link_to_share": "Opret link for at dele",
"create_link_to_share_description": "Tillad alle med linket at se de(t) valgte billede(r)", "create_link_to_share_description": "Tillad alle med linket at se de(t) valgte billede(r)",
"create_new": "OPRET NY",
"create_new_person": "Opret ny person", "create_new_person": "Opret ny person",
"create_new_person_hint": "Tildel valgte aktiver til en ny person", "create_new_person_hint": "Tildel valgte aktiver til en ny person",
"create_new_user": "Opret ny bruger", "create_new_user": "Opret ny bruger",
"create_shared_album_page_share_add_assets": "TILFØJ ELEMENT",
"create_shared_album_page_share_select_photos": "Vælg billeder",
"create_tag": "Opret tag", "create_tag": "Opret tag",
"create_tag_description": "Opret et nyt tag. For indlejrede tags skal du indtaste den fulde sti til tagget inklusive skråstreger.", "create_tag_description": "Opret et nyt tag. For indlejrede tags skal du indtaste den fulde sti til tagget inklusive skråstreger.",
"create_user": "Opret bruger", "create_user": "Opret bruger",
"created": "Oprettet", "created": "Oprettet",
"crop": "Beskær",
"curated_object_page_title": "Ting",
"current_device": "Nuværende enhed", "current_device": "Nuværende enhed",
"current_server_address": "Nuværende serveraddresse",
"custom_locale": "Brugerdefineret lokale", "custom_locale": "Brugerdefineret lokale",
"custom_locale_description": "Formatér datoer og tal baseret på sproget og regionen", "custom_locale_description": "Formatér datoer og tal baseret på sproget og regionen",
"daily_title_text_date": "E, dd MMM",
"daily_title_text_date_year": "E, dd MMM, yyyy",
"dark": "Mørk", "dark": "Mørk",
"date_after": "Dato efter", "date_after": "Dato efter",
"date_and_time": "Dato og klokkeslæt", "date_and_time": "Dato og klokkeslæt",
"date_before": "Dato før", "date_before": "Dato før",
"date_format": "E d. LLL y • hh:mm",
"date_of_birth_saved": "Fødselsdatoen blev gemt korrekt", "date_of_birth_saved": "Fødselsdatoen blev gemt korrekt",
"date_range": "Datointerval", "date_range": "Datointerval",
"day": "Dag", "day": "Dag",
@@ -537,19 +716,30 @@
"delete": "Slet", "delete": "Slet",
"delete_album": "Slet album", "delete_album": "Slet album",
"delete_api_key_prompt": "Er du sikker på, at du vil slette denne API-nøgle?", "delete_api_key_prompt": "Er du sikker på, at du vil slette denne API-nøgle?",
"delete_dialog_alert": "Disse elementer vil blive slettet permanent fra Immich og din enhed",
"delete_dialog_alert_local": "Disse elementer slettes permanent fra din enhed, men vil stadig være tilgængelige på serveren",
"delete_dialog_alert_local_non_backed_up": "Nogle af elementerne har ingen backup på serveren og vil blive slettet permanent fra din enhed",
"delete_dialog_alert_remote": "Disse elementer slettes permanent fra serveren",
"delete_dialog_ok_force": "Slet alligevel",
"delete_dialog_title": "Slet permanent",
"delete_duplicates_confirmation": "Er du sikker på, at du vil slette disse dubletter permanent?", "delete_duplicates_confirmation": "Er du sikker på, at du vil slette disse dubletter permanent?",
"delete_face": "Slet ansigt", "delete_face": "Slet ansigt",
"delete_key": "Slet nøgle", "delete_key": "Slet nøgle",
"delete_library": "Slet bibliotek", "delete_library": "Slet bibliotek",
"delete_link": "Slet link", "delete_link": "Slet link",
"delete_local_dialog_ok_backed_up_only": "Slet kun backup",
"delete_local_dialog_ok_force": "Slet alligevel",
"delete_others": "Slet andre", "delete_others": "Slet andre",
"delete_shared_link": "Slet delt link", "delete_shared_link": "Slet delt link",
"delete_shared_link_dialog_title": "Slet delt link",
"delete_tag": "Slet tag", "delete_tag": "Slet tag",
"delete_tag_confirmation_prompt": "Er du sikker på, at du vil slette {tagName}-tagget?", "delete_tag_confirmation_prompt": "Er du sikker på, at du vil slette {tagName}-tagget?",
"delete_user": "Slet bruger", "delete_user": "Slet bruger",
"deleted_shared_link": "Slettede delt link", "deleted_shared_link": "Slettede delt link",
"deletes_missing_assets": "Sletter aktiver, der mangler fra disken", "deletes_missing_assets": "Sletter aktiver, der mangler fra disken",
"description": "Beskrivelse", "description": "Beskrivelse",
"description_input_hint_text": "Tilføj en beskrivelse...",
"description_input_submit_error": "Fejl med at opdatere beskrivelsen. Tjek loggen for flere detaljer",
"details": "DETALJER", "details": "DETALJER",
"direction": "Retning", "direction": "Retning",
"disabled": "Deaktiveret", "disabled": "Deaktiveret",
@@ -566,12 +756,26 @@
"documentation": "Dokumentation", "documentation": "Dokumentation",
"done": "Færdig", "done": "Færdig",
"download": "Hent", "download": "Hent",
"download_canceled": "Download annulleret",
"download_complete": "Download fuldført",
"download_enqueue": "Donload sat i kø",
"download_error": "Fejl med download",
"download_failed": "Download mislykkes",
"download_filename": "fil: {}",
"download_finished": "Download afsluttet",
"download_include_embedded_motion_videos": "Indlejrede videoer", "download_include_embedded_motion_videos": "Indlejrede videoer",
"download_include_embedded_motion_videos_description": "Inkluder videoer indlejret i levende billeder som en separat fil", "download_include_embedded_motion_videos_description": "Inkluder videoer indlejret i levende billeder som en separat fil",
"download_notfound": "Download ikke fundet",
"download_paused": "Download pauset",
"download_settings": "Download", "download_settings": "Download",
"download_settings_description": "Administrer indstillinger relateret til mediefil-downloads", "download_settings_description": "Administrer indstillinger relateret til mediefil-downloads",
"download_started": "Download startet",
"download_sucess": "Download færdig",
"download_sucess_android": "Mediet er blevet downloadet til DCIM/Immich",
"download_waiting_to_retry": "Afventer at prøve igen",
"downloading": "Downloader", "downloading": "Downloader",
"downloading_asset_filename": "Downloader mediefil {filename}", "downloading_asset_filename": "Downloader mediefil {filename}",
"downloading_media": "Download medier",
"drop_files_to_upload": "Slip filer hvor som helst for at uploade dem", "drop_files_to_upload": "Slip filer hvor som helst for at uploade dem",
"duplicates": "Duplikater", "duplicates": "Duplikater",
"duplicates_description": "Løs hver gruppe ved at angive, hvilke, hvis nogen, er dubletter", "duplicates_description": "Løs hver gruppe ved at angive, hvilke, hvis nogen, er dubletter",
@@ -588,6 +792,7 @@
"edit_key": "Redigér nøgle", "edit_key": "Redigér nøgle",
"edit_link": "Rediger link", "edit_link": "Rediger link",
"edit_location": "Rediger placering", "edit_location": "Rediger placering",
"edit_location_dialog_title": "Placering",
"edit_name": "Rediger navn", "edit_name": "Rediger navn",
"edit_people": "Redigér personer", "edit_people": "Redigér personer",
"edit_tag": "Rediger tag", "edit_tag": "Rediger tag",
@@ -600,14 +805,19 @@
"editor_crop_tool_h2_aspect_ratios": "Størrelsesforhold", "editor_crop_tool_h2_aspect_ratios": "Størrelsesforhold",
"editor_crop_tool_h2_rotation": "Rotation", "editor_crop_tool_h2_rotation": "Rotation",
"email": "E-mail", "email": "E-mail",
"empty_folder": "This folder is empty",
"empty_trash": "Tøm papirkurv", "empty_trash": "Tøm papirkurv",
"empty_trash_confirmation": "Er du sikker på, at du vil tømme papirkurven? Dette vil fjerne alle objekter i papirkurven permanent fra Immich.\nDu kan ikke fortryde denne handling!", "empty_trash_confirmation": "Er du sikker på, at du vil tømme papirkurven? Dette vil fjerne alle objekter i papirkurven permanent fra Immich.\nDu kan ikke fortryde denne handling!",
"enable": "Aktivér", "enable": "Aktivér",
"enabled": "Aktiveret", "enabled": "Aktiveret",
"end_date": "Slutdato", "end_date": "Slutdato",
"enqueued": "Enqueued",
"enter_wifi_name": "Indtast WiFi-navn",
"error": "Fejl", "error": "Fejl",
"error_change_sort_album": "Ændring af sorteringsrækkefølgen mislykkedes",
"error_delete_face": "Fejl ved sletning af ansigt fra mediefil", "error_delete_face": "Fejl ved sletning af ansigt fra mediefil",
"error_loading_image": "Fejl ved indlæsning af billede", "error_loading_image": "Fejl ved indlæsning af billede",
"error_saving_image": "Fejl: {}",
"error_title": "Fejl - Noget gik galt", "error_title": "Fejl - Noget gik galt",
"errors": { "errors": {
"cannot_navigate_next_asset": "Kan ikke navigere til næste mediefil", "cannot_navigate_next_asset": "Kan ikke navigere til næste mediefil",
@@ -736,8 +946,21 @@
"unable_to_upload_file": "Filen kunne ikke uploades" "unable_to_upload_file": "Filen kunne ikke uploades"
}, },
"exif": "Exif", "exif": "Exif",
"exif_bottom_sheet_description": "Tilføj beskrivelse...",
"exif_bottom_sheet_details": "DETALJER",
"exif_bottom_sheet_location": "LOKATION",
"exif_bottom_sheet_people": "PERSONER",
"exif_bottom_sheet_person_add_person": "Tilføj navn",
"exif_bottom_sheet_person_age": "Age {}",
"exif_bottom_sheet_person_age_months": "Age {} months",
"exif_bottom_sheet_person_age_year_months": "Age 1 year, {} months",
"exif_bottom_sheet_person_age_years": "Age {}",
"exit_slideshow": "Afslut slideshow", "exit_slideshow": "Afslut slideshow",
"expand_all": "Udvid alle", "expand_all": "Udvid alle",
"experimental_settings_new_asset_list_subtitle": "Under udarbejdelse",
"experimental_settings_new_asset_list_title": "Aktiver eksperimentelt fotogitter",
"experimental_settings_subtitle": "Brug på eget ansvar!",
"experimental_settings_title": "Eksperimentelle",
"expire_after": "Udløb efter", "expire_after": "Udløb efter",
"expired": "Udløbet", "expired": "Udløbet",
"expires_date": "Udløber {date}", "expires_date": "Udløber {date}",
@@ -748,11 +971,16 @@
"extension": "Udvidelse", "extension": "Udvidelse",
"external": "Ekstern", "external": "Ekstern",
"external_libraries": "Eksterne biblioteker", "external_libraries": "Eksterne biblioteker",
"external_network": "Eksternt netværk",
"external_network_sheet_info": "Nå der er ikke er forbundet til det foretrukne WiFi-netværk, vil appen forbinde til den første URL, den kan forbinde til, på listen nedenfor. Startende med i toppen",
"face_unassigned": "Ikke tildelt", "face_unassigned": "Ikke tildelt",
"failed": "Failed",
"failed_to_load_assets": "Kunne ikke indlæse mediefiler", "failed_to_load_assets": "Kunne ikke indlæse mediefiler",
"failed_to_load_folder": "Failed to load folder",
"favorite": "Favorit", "favorite": "Favorit",
"favorite_or_unfavorite_photo": "Tilføj eller fjern fra yndlingsbilleder", "favorite_or_unfavorite_photo": "Tilføj eller fjern fra yndlingsbilleder",
"favorites": "Favoritter", "favorites": "Favoritter",
"favorites_page_no_favorites": "Ingen favoritter blev fundet",
"feature_photo_updated": "Forsidebillede uploadet", "feature_photo_updated": "Forsidebillede uploadet",
"features": "Funktioner", "features": "Funktioner",
"features_setting_description": "Administrer app-funktioner", "features_setting_description": "Administrer app-funktioner",
@@ -760,25 +988,38 @@
"file_name_or_extension": "Filnavn eller filtype", "file_name_or_extension": "Filnavn eller filtype",
"filename": "Filnavn", "filename": "Filnavn",
"filetype": "Filtype", "filetype": "Filtype",
"filter": "Filter",
"filter_people": "Filtrér personer", "filter_people": "Filtrér personer",
"find_them_fast": "Find dem hurtigt med søgning via navn", "find_them_fast": "Find dem hurtigt med søgning via navn",
"fix_incorrect_match": "Fix forkert match", "fix_incorrect_match": "Fix forkert match",
"folder": "Folder",
"folder_not_found": "Folder not found",
"folders": "Mapper", "folders": "Mapper",
"folders_feature_description": "Gennemse mappevisningen efter fotos og videoer på filsystemet", "folders_feature_description": "Gennemse mappevisningen efter fotos og videoer på filsystemet",
"forward": "Fremad", "forward": "Fremad",
"general": "Generel", "general": "Generel",
"get_help": "Få hjælp", "get_help": "Få hjælp",
"get_wifiname_error": "Kunne ikke hente Wi-Fi-navn. Sørg for, at du har givet de nødvendige tilladelser og er forbundet til et Wi-Fi-netværk",
"getting_started": "Kom godt i gang", "getting_started": "Kom godt i gang",
"go_back": "Gå tilbage", "go_back": "Gå tilbage",
"go_to_folder": "Gå til mappe", "go_to_folder": "Gå til mappe",
"go_to_search": "Gå til søgning", "go_to_search": "Gå til søgning",
"grant_permission": "Giv tilladelse",
"group_albums_by": "Gruppér albummer efter...", "group_albums_by": "Gruppér albummer efter...",
"group_country": "Gruppér efter land", "group_country": "Gruppér efter land",
"group_no": "Ingen gruppering", "group_no": "Ingen gruppering",
"group_owner": "Grupper efter ejer", "group_owner": "Grupper efter ejer",
"group_places_by": "Gruppér steder efter...", "group_places_by": "Gruppér steder efter...",
"group_year": "Grupper efter år", "group_year": "Grupper efter år",
"haptic_feedback_switch": "Slå haptisk feedback til",
"haptic_feedback_title": "Haptisk feedback",
"has_quota": "Har kvote", "has_quota": "Har kvote",
"header_settings_add_header_tip": "Add Header",
"header_settings_field_validator_msg": "Value cannot be empty",
"header_settings_header_name_input": "Header name",
"header_settings_header_value_input": "Header value",
"headers_settings_tile_subtitle": "Define proxy headers the app should send with each network request",
"headers_settings_tile_title": "Custom proxy headers",
"hi_user": "Hej {name} ({email})", "hi_user": "Hej {name} ({email})",
"hide_all_people": "Skjul alle personer", "hide_all_people": "Skjul alle personer",
"hide_gallery": "Skjul galleri", "hide_gallery": "Skjul galleri",
@@ -786,8 +1027,24 @@
"hide_password": "Skjul adgangskode", "hide_password": "Skjul adgangskode",
"hide_person": "Skjul person", "hide_person": "Skjul person",
"hide_unnamed_people": "Skjul unavngivne personer", "hide_unnamed_people": "Skjul unavngivne personer",
"home_page_add_to_album_conflicts": "Tilføjede {added} elementer til album {album}. {failed} elementer er allerede i albummet.",
"home_page_add_to_album_err_local": "Kan endnu ikke tilføje lokale elementer til album. Springer over..",
"home_page_add_to_album_success": "Tilføjede {added} elementer til album {album}.",
"home_page_album_err_partner": "Kan endnu ikke tilføje partners elementer til album. Springer over",
"home_page_archive_err_local": "Kan ikke arkivere lokalt element endnu.. Springer over",
"home_page_archive_err_partner": "Kan endnu ikke arkivere partners elementer. Springer over",
"home_page_building_timeline": "Bygger tidslinjen",
"home_page_delete_err_partner": "Kan endnu ikke slette partners elementer. Springer over",
"home_page_delete_remote_err_local": "Lokale elementer i fjernsletningssektion. Springer over",
"home_page_favorite_err_local": "Kan endnu ikke gøre lokale elementer til favoritter. Springer over..",
"home_page_favorite_err_partner": "Kan endnu ikke tilføje partners elementer som favoritter. Springer over",
"home_page_first_time_notice": "Hvis det er din første gang i appen, bedes du vælge en sikkerhedskopi af albummer så tidlinjen kan blive fyldt med billeder og videoer fra albummerne.",
"home_page_share_err_local": "Kan ikke dele lokale elementer via link, springer over",
"home_page_upload_err_limit": "Det er kun muligt at lave sikkerhedskopi af 30 elementer ad gangen. Springer over",
"host": "Host", "host": "Host",
"hour": "Time", "hour": "Time",
"ignore_icloud_photos": "Ignorer iCloud-billeder",
"ignore_icloud_photos_description": "Billeder der er gemt på iCloud vil ikke blive uploadet til Immich-serveren",
"image": "Billede", "image": "Billede",
"image_alt_text_date": "{isVideo, select, true {Video} other {Image}} taget den {date}", "image_alt_text_date": "{isVideo, select, true {Video} other {Image}} taget den {date}",
"image_alt_text_date_1_person": "{isVideo, select, true {Video} other {Image}} taget med {person1} den {date}", "image_alt_text_date_1_person": "{isVideo, select, true {Video} other {Image}} taget med {person1} den {date}",
@@ -799,6 +1056,10 @@
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Image}} taget i {city}, {country} med {person1} og {person2} den {date}", "image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Image}} taget i {city}, {country} med {person1} og {person2} den {date}",
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Image}} taget i {city}, {country} med {person1}, {person2}, og {person3} den {date}", "image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Image}} taget 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}} taget i {city}, {country} med {person1}, {person2}, og {additionalCount, number} andre den {date}", "image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Image}} taget i {city}, {country} med {person1}, {person2}, og {additionalCount, number} andre den {date}",
"image_saved_successfully": "Billede gemt",
"image_viewer_page_state_provider_download_started": "Download startet",
"image_viewer_page_state_provider_download_success": "Download succesfuld",
"image_viewer_page_state_provider_share_error": "Delingsfejl",
"immich_logo": "Immich logo", "immich_logo": "Immich logo",
"immich_web_interface": "Immich webinterface", "immich_web_interface": "Immich webinterface",
"import_from_json": "Importér fra JSON", "import_from_json": "Importér fra JSON",
@@ -817,6 +1078,8 @@
"night_at_midnight": "Hver nat ved midnat", "night_at_midnight": "Hver nat ved midnat",
"night_at_twoam": "Hver nat kl. 2" "night_at_twoam": "Hver nat kl. 2"
}, },
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"invite_people": "Inviter personer", "invite_people": "Inviter personer",
"invite_to_album": "Inviter til album", "invite_to_album": "Inviter til album",
"items_count": "{count, plural, one {# element} other {# elementer}}", "items_count": "{count, plural, one {# element} other {# elementer}}",
@@ -837,6 +1100,12 @@
"level": "Niveau", "level": "Niveau",
"library": "Bibliotek", "library": "Bibliotek",
"library_options": "Biblioteksindstillinger", "library_options": "Biblioteksindstillinger",
"library_page_device_albums": "Albummer på enhed",
"library_page_new_album": "Nyt album",
"library_page_sort_asset_count": "Antal af elementer\n",
"library_page_sort_created": "Senest oprettet",
"library_page_sort_last_modified": "Sidst redigeret",
"library_page_sort_title": "Albumtitel",
"light": "Lys", "light": "Lys",
"like_deleted": "Ligesom slettet", "like_deleted": "Ligesom slettet",
"link_motion_video": "Link bevægelsesvideo", "link_motion_video": "Link bevægelsesvideo",
@@ -846,12 +1115,42 @@
"list": "Liste", "list": "Liste",
"loading": "Indlæser", "loading": "Indlæser",
"loading_search_results_failed": "Indlæsning af søgeresultater fejlede", "loading_search_results_failed": "Indlæsning af søgeresultater fejlede",
"local_network": "Lokalt netværk",
"local_network_sheet_info": "Appen vil oprette forbindelse til serveren via denne URL, når du bruger det angivne WiFi-netværk",
"location_permission": "Tilladelse til placering",
"location_permission_content": "For automatisk at skifte netværk, skal Immich *altid* have præcis placeringsadgang, så appen kan læse WiFi-netværkets navn",
"location_picker_choose_on_map": "Vælg på kort",
"location_picker_latitude_error": "Indtast en gyldig breddegrad",
"location_picker_latitude_hint": "Indtast din breddegrad her",
"location_picker_longitude_error": "Indtast en gyldig længdegrad",
"location_picker_longitude_hint": "Indtast din længdegrad her",
"log_out": "Log ud", "log_out": "Log ud",
"log_out_all_devices": "Log ud af alle enheder", "log_out_all_devices": "Log ud af alle enheder",
"logged_out_all_devices": "Logget ud af alle enheder", "logged_out_all_devices": "Logget ud af alle enheder",
"logged_out_device": "Logget ud af enhed", "logged_out_device": "Logget ud af enhed",
"login": "Log ind", "login": "Log ind",
"login_disabled": "Login er blevet deaktiveret",
"login_form_api_exception": "API-undtagelse. Tjek serverens URL og prøv igen. ",
"login_form_back_button_text": "Tilbage",
"login_form_email_hint": "din-e-mail@e-mail.com",
"login_form_endpoint_hint": "http://din-server-ip:port",
"login_form_endpoint_url": "Server Endpoint URL",
"login_form_err_http": "Angiv venligst http:// eller https://",
"login_form_err_invalid_email": "Ugyldig e-mail",
"login_form_err_invalid_url": "Ugyldig webadresse",
"login_form_err_leading_whitespace": "Mellemrum før",
"login_form_err_trailing_whitespace": "Mellemrum efter",
"login_form_failed_get_oauth_server_config": "Fejl med at logge på med OAuth. Tjek serveres webadresse",
"login_form_failed_get_oauth_server_disable": "OAuth er ikke tilgængelig på denne server",
"login_form_failed_login": "Der opstod en vejl ved at logge ind. Tjek server webadressen, e-mailen og kodeordet",
"login_form_handshake_exception": "Der opstod en fejl med at oprette forbindelse til serveren. Aktiver selvsignerede certifikater i indstillingerne, hvis du bruger et selv signeret certifikat.",
"login_form_password_hint": "kodeord",
"login_form_save_login": "Forbliv logget ind",
"login_form_server_empty": "Indtast server-URL.",
"login_form_server_error": "Kunne ikke forbinde til serveren.",
"login_has_been_disabled": "Login er blevet deaktiveret.", "login_has_been_disabled": "Login er blevet deaktiveret.",
"login_password_changed_error": "Der opstod en fejl i opdateringen af dit kodeord",
"login_password_changed_success": "Kodeordet blev opdateret",
"logout_all_device_confirmation": "Er du sikker på, at du vil logge ud af alle enheder?", "logout_all_device_confirmation": "Er du sikker på, at du vil logge ud af alle enheder?",
"logout_this_device_confirmation": "Er du sikker på, at du vil logge denne enhed ud?", "logout_this_device_confirmation": "Er du sikker på, at du vil logge denne enhed ud?",
"longitude": "Længde", "longitude": "Længde",
@@ -868,13 +1167,40 @@
"manage_your_devices": "Administrér dine enheder der er logget ind", "manage_your_devices": "Administrér dine enheder der er logget ind",
"manage_your_oauth_connection": "Administrér din OAuth-tilslutning", "manage_your_oauth_connection": "Administrér din OAuth-tilslutning",
"map": "Kort", "map": "Kort",
"map_assets_in_bound": "{} billede",
"map_assets_in_bounds": "{} billeder",
"map_cannot_get_user_location": "Kan ikke finde brugerens placering",
"map_location_dialog_yes": "Ja",
"map_location_picker_page_use_location": "Brug denne placering",
"map_location_service_disabled_content": "Placeringstjenesten skal aktiveres for at vise elementer fra din nuværende placering. Vil du aktivere den nu?",
"map_location_service_disabled_title": "Placeringstjenesten er deaktiveret",
"map_marker_for_images": "Kortmarkør for billeder taget i {city}, {country}", "map_marker_for_images": "Kortmarkør for billeder taget i {city}, {country}",
"map_marker_with_image": "Kortmarkør med billede", "map_marker_with_image": "Kortmarkør med billede",
"map_no_assets_in_bounds": "Der er ingen billeder i dette område",
"map_no_location_permission_content": "Der kræves tilladelse til placeringen for at vise elementer fra din nuværende placering. Vil du give tilladelse?",
"map_no_location_permission_title": "Placeringstilladelse blev afvist",
"map_settings": "Kortindstillinger", "map_settings": "Kortindstillinger",
"map_settings_dark_mode": "Mørk tilstand",
"map_settings_date_range_option_day": "Sidste 24 timer",
"map_settings_date_range_option_days": "Sidste {} dage",
"map_settings_date_range_option_year": "Sidste år",
"map_settings_date_range_option_years": "Sidste {} år",
"map_settings_dialog_title": "Kortindstillinger",
"map_settings_include_show_archived": "Inkluder arkiveret",
"map_settings_include_show_partners": "Inkluder partnere",
"map_settings_only_show_favorites": "Vis kun favoritter",
"map_settings_theme_settings": "Korttema",
"map_zoom_to_see_photos": "Zoom ud for at vise billeder",
"matches": "Parringer", "matches": "Parringer",
"media_type": "Medietype", "media_type": "Medietype",
"memories": "Minder", "memories": "Minder",
"memories_all_caught_up": "Ajour",
"memories_check_back_tomorrow": "Kom tilbage i morgen for at se nye minder",
"memories_setting_description": "Administrér hvad du ser i dine minder", "memories_setting_description": "Administrér hvad du ser i dine minder",
"memories_start_over": "Start forfra",
"memories_swipe_to_close": "Stryg op for at lukke",
"memories_year_ago": "A year ago",
"memories_years_ago": "{} years ago",
"memory": "Minde", "memory": "Minde",
"memory_lane_title": "Minder {title}", "memory_lane_title": "Minder {title}",
"menu": "Menu", "menu": "Menu",
@@ -889,12 +1215,17 @@
"missing": "Mangler", "missing": "Mangler",
"model": "Model", "model": "Model",
"month": "Måned", "month": "Måned",
"monthly_title_text_date_format": "MMMM y",
"more": "Mere", "more": "Mere",
"moved_to_trash": "Flyttet til skraldespand", "moved_to_trash": "Flyttet til skraldespand",
"multiselect_grid_edit_date_time_err_read_only": "Kan ikke redigere datoen på kun læselige elementer. Springer over",
"multiselect_grid_edit_gps_err_read_only": "Kan ikke redigere lokation af kun læselige elementer. Springer over",
"mute_memories": "Dæmp minder", "mute_memories": "Dæmp minder",
"my_albums": "Mine albummer", "my_albums": "Mine albummer",
"name": "Navn", "name": "Navn",
"name_or_nickname": "Navn eller kælenavn", "name_or_nickname": "Navn eller kælenavn",
"networking_settings": "Netværk",
"networking_subtitle": "Administrer serverens endepunktindstillinger",
"never": "aldrig", "never": "aldrig",
"new_album": "Nyt album", "new_album": "Nyt album",
"new_api_key": "Ny API-nøgle", "new_api_key": "Ny API-nøgle",
@@ -911,6 +1242,7 @@
"no_albums_yet": "Det ser ud til, at du ikke har nogen album endnu.", "no_albums_yet": "Det ser ud til, at du ikke har nogen album endnu.",
"no_archived_assets_message": "Arkivér billeder og videoer for at gemme dem væk fra din Billede oversigt", "no_archived_assets_message": "Arkivér billeder og videoer for at gemme dem væk fra din Billede oversigt",
"no_assets_message": "KLIK FOR AT UPLOADE DIT FØRSTE BILLEDE", "no_assets_message": "KLIK FOR AT UPLOADE DIT FØRSTE BILLEDE",
"no_assets_to_show": "Ingen elementer at vise",
"no_duplicates_found": "Ingen duplikater fundet.", "no_duplicates_found": "Ingen duplikater fundet.",
"no_exif_info_available": "Ingen tilgængelig exif information", "no_exif_info_available": "Ingen tilgængelig exif information",
"no_explore_results_message": "Upload flere billeder for at udforske din samling.", "no_explore_results_message": "Upload flere billeder for at udforske din samling.",
@@ -922,9 +1254,13 @@
"no_results_description": "Prøv et synonym eller et mere generelt søgeord", "no_results_description": "Prøv et synonym eller et mere generelt søgeord",
"no_shared_albums_message": "Opret et album for at dele billeder og videoer med personer i dit netværk", "no_shared_albums_message": "Opret et album for at dele billeder og videoer med personer i dit netværk",
"not_in_any_album": "Ikke i noget album", "not_in_any_album": "Ikke i noget album",
"not_selected": "Not selected",
"note_apply_storage_label_to_previously_uploaded assets": "Bemærk: For at anvende Lagringsmærkat på tidligere uploadede medier, kør", "note_apply_storage_label_to_previously_uploaded assets": "Bemærk: For at anvende Lagringsmærkat på tidligere uploadede medier, kør",
"note_unlimited_quota": "Bemærk: Indsæt 0 for ubegrænset kvote",
"notes": "Noter", "notes": "Noter",
"notification_permission_dialog_content": "Gå til indstillinger for at slå notifikationer til.",
"notification_permission_list_tile_content": "Tillad at bruge notifikationer.",
"notification_permission_list_tile_enable_button": "Slå notifikationer til",
"notification_permission_list_tile_title": "Notifikationstilladelser",
"notification_toggle_setting_description": "Aktivér emailnotifikationer", "notification_toggle_setting_description": "Aktivér emailnotifikationer",
"notifications": "Notifikationer", "notifications": "Notifikationer",
"notifications_setting_description": "Administrér notifikationer", "notifications_setting_description": "Administrér notifikationer",
@@ -935,6 +1271,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.", "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", "ok": "Ok",
"oldest_first": "Ældste først", "oldest_first": "Ældste først",
"on_this_device": "På denne enhed",
"onboarding": "Introduktion", "onboarding": "Introduktion",
"onboarding_privacy_description": "Følgende (valgfrie) funktioner er afhængige af eksterne tjenester, og kan til enhver tid deaktiveres i administrationsindstillingerne.", "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 instans. Du kan ændre dette senere i dine indstillinger.", "onboarding_theme_description": "Vælg et farvetema til din instans. Du kan ændre dette senere i dine indstillinger.",
@@ -958,6 +1295,14 @@
"partner_can_access": "{partner} kan tilgå", "partner_can_access": "{partner} kan tilgå",
"partner_can_access_assets": "Alle dine billeder og videoer, bortset fra dem i Arkivet og Slettet", "partner_can_access_assets": "Alle dine billeder og videoer, bortset fra dem i Arkivet og Slettet",
"partner_can_access_location": "Stedet, hvor dine billeder blev taget", "partner_can_access_location": "Stedet, hvor dine billeder blev taget",
"partner_list_user_photos": "{user}s billeder",
"partner_list_view_all": "Se alle",
"partner_page_empty_message": "Dine billeder er endnu ikke delt med en partner.",
"partner_page_no_more_users": "Der er ikke flere brugere at tilføje",
"partner_page_partner_add_failed": "Kunne ikke tilføje en partner",
"partner_page_select_partner": "Vælg partner",
"partner_page_shared_to_title": "Delt til",
"partner_page_stop_sharing_content": "{} vil ikke længere have adgang til dine billeder.",
"partner_sharing": "Partnerdeling", "partner_sharing": "Partnerdeling",
"partners": "Partnere", "partners": "Partnere",
"password": "Kodeord", "password": "Kodeord",
@@ -986,6 +1331,14 @@
"permanently_delete_assets_prompt": "Er du sikker på, at du permanent vil slette {count, plural, one {dette aktiv?} other {disse <b>#</b> aktiver?}} Dette vil også fjerne {count, plural, one {det fra dets} other {dem fra deres}} album(er).", "permanently_delete_assets_prompt": "Er du sikker på, at du permanent vil slette {count, plural, one {dette aktiv?} other {disse <b>#</b> aktiver?}} Dette vil også fjerne {count, plural, one {det fra dets} other {dem fra deres}} album(er).",
"permanently_deleted_asset": "Permanent slettet medie", "permanently_deleted_asset": "Permanent slettet medie",
"permanently_deleted_assets_count": "{count, plural, one {# aktiv} other {# aktiver}} permanent slettet", "permanently_deleted_assets_count": "{count, plural, one {# aktiv} other {# aktiver}} permanent slettet",
"permission_onboarding_back": "Tilbage",
"permission_onboarding_continue_anyway": "Fortsæt alligevel",
"permission_onboarding_get_started": "Kom i gang",
"permission_onboarding_go_to_settings": "Gå til indstillinger",
"permission_onboarding_permission_denied": "Tilladelse afvist. For at bruge Immich, skal der gives tilladelse til at se billeder og videoer i indstillinger.",
"permission_onboarding_permission_granted": "Tilladelse givet! Du er nu klar.",
"permission_onboarding_permission_limited": "Tilladelse begrænset. For at lade Immich lave sikkerhedskopi og styre hele dit galleri, skal der gives tilladelse til billeder og videoer i indstillinger.",
"permission_onboarding_request": "Immich kræver tilliadelse til at se dine billeder og videoer.",
"person": "Person", "person": "Person",
"person_birthdate": "Født den {date}", "person_birthdate": "Født den {date}",
"person_hidden": "{name}{hidden, select, true { (skjult)} other {}}", "person_hidden": "{name}{hidden, select, true { (skjult)} other {}}",
@@ -1003,6 +1356,8 @@
"play_motion_photo": "Afspil bevægelsesbillede", "play_motion_photo": "Afspil bevægelsesbillede",
"play_or_pause_video": "Afspil eller pause video", "play_or_pause_video": "Afspil eller pause video",
"port": "Port", "port": "Port",
"preferences_settings_subtitle": "Administrer app-præferencer",
"preferences_settings_title": "Præferencer",
"preset": "Forudindstilling", "preset": "Forudindstilling",
"preview": "Forhåndsvisning", "preview": "Forhåndsvisning",
"previous": "Forrige", "previous": "Forrige",
@@ -1010,6 +1365,13 @@
"previous_or_next_photo": "Forrige eller næste billede", "previous_or_next_photo": "Forrige eller næste billede",
"primary": "Primære", "primary": "Primære",
"privacy": "Privatliv", "privacy": "Privatliv",
"profile_drawer_app_logs": "Log",
"profile_drawer_client_out_of_date_major": "Mobilapp er forældet. Opdater venligst til den nyeste større version",
"profile_drawer_client_out_of_date_minor": "Mobilapp er forældet. Opdater venligst til den nyeste mindre version",
"profile_drawer_client_server_up_to_date": "Klient og server er ajour",
"profile_drawer_github": "GitHub",
"profile_drawer_server_out_of_date_major": "Server er forældet. Opdater venligst til den nyeste større version",
"profile_drawer_server_out_of_date_minor": "Server er forældet. Opdater venligst til den nyeste mindre version",
"profile_image_of_user": "Profilbillede af {user}", "profile_image_of_user": "Profilbillede af {user}",
"profile_picture_set": "Profilbillede indstillet.", "profile_picture_set": "Profilbillede indstillet.",
"public_album": "Offentligt album", "public_album": "Offentligt album",
@@ -1059,6 +1421,8 @@
"recent": "For nylig", "recent": "For nylig",
"recent-albums": "Seneste albums", "recent-albums": "Seneste albums",
"recent_searches": "Seneste søgninger", "recent_searches": "Seneste søgninger",
"recently_added": "Senest tilføjet",
"recently_added_page_title": "Nyligt tilføjet",
"refresh": "Opdatér", "refresh": "Opdatér",
"refresh_encoded_videos": "Opdater kodede videoer", "refresh_encoded_videos": "Opdater kodede videoer",
"refresh_faces": "Opdater ansigter", "refresh_faces": "Opdater ansigter",
@@ -1115,10 +1479,12 @@
"role_editor": "Redaktør", "role_editor": "Redaktør",
"role_viewer": "Seer", "role_viewer": "Seer",
"save": "Gem", "save": "Gem",
"save_to_gallery": "Gem til galleri",
"saved_api_key": "Gemt API-nøgle", "saved_api_key": "Gemt API-nøgle",
"saved_profile": "Gemte profil", "saved_profile": "Gemte profil",
"saved_settings": "Gemte indstillinger", "saved_settings": "Gemte indstillinger",
"say_something": "Skriv noget", "say_something": "Skriv noget",
"scaffold_body_error_occurred": "Der opstod en fejl",
"scan_all_libraries": "Skan alle biblioteker", "scan_all_libraries": "Skan alle biblioteker",
"scan_library": "Skan", "scan_library": "Skan",
"scan_settings": "Skanningsindstillinger", "scan_settings": "Skanningsindstillinger",
@@ -1134,16 +1500,45 @@
"search_camera_model": "Søg efter kameramodel...", "search_camera_model": "Søg efter kameramodel...",
"search_city": "Søg efter by...", "search_city": "Søg efter by...",
"search_country": "Søg efter land...", "search_country": "Søg efter land...",
"search_filter_apply": "Tilføj filter",
"search_filter_camera_title": "Vælg type af kamera",
"search_filter_date": "Dato",
"search_filter_date_interval": "{start} til { slut}",
"search_filter_date_title": "Vælg et datointerval",
"search_filter_display_option_not_in_album": "Ikke i album",
"search_filter_display_options": "Visningsindstillinger",
"search_filter_filename": "Search by file name",
"search_filter_location": "Lokation",
"search_filter_location_title": "Vælg lokation",
"search_filter_media_type": "Medietype",
"search_filter_media_type_title": "Vælg medietype",
"search_filter_people_title": "Vælg personer",
"search_for": "Søg efter", "search_for": "Søg efter",
"search_for_existing_person": "Søg efter eksisterende person", "search_for_existing_person": "Søg efter eksisterende person",
"search_no_more_result": "No more results",
"search_no_people": "Ingen personer", "search_no_people": "Ingen personer",
"search_no_people_named": "Ingen personer med navnet \"{name}\"", "search_no_people_named": "Ingen personer med navnet \"{name}\"",
"search_no_result": "No results found, try a different search term or combination",
"search_options": "Søgemuligheder", "search_options": "Søgemuligheder",
"search_page_categories": "Kategorier",
"search_page_motion_photos": "Bevægelsesbilleder",
"search_page_no_objects": "Ingen elementer er tilgængelige",
"search_page_no_places": "Ingen placeringsinformation er tilgængelig",
"search_page_screenshots": "Skærmbilleder",
"search_page_search_photos_videos": "Søg i dine billeder og videoer",
"search_page_selfies": "Selfier",
"search_page_things": "Ting",
"search_page_view_all_button": "Vis alt",
"search_page_your_activity": "Din aktivitet",
"search_page_your_map": "Dit kort",
"search_people": "Søg i personer", "search_people": "Søg i personer",
"search_places": "Søg i steder", "search_places": "Søg i steder",
"search_rating": "Søg efter vurdering...", "search_rating": "Søg efter vurdering...",
"search_result_page_new_search_hint": "Ny søgning",
"search_settings": "søgeindstillinger", "search_settings": "søgeindstillinger",
"search_state": "Søg efter lansdel...", "search_state": "Søg efter lansdel...",
"search_suggestion_list_smart_search_hint_1": "Smart søgnining er slået til som standard. For at søge efter metadata brug syntaksen",
"search_suggestion_list_smart_search_hint_2": "m:dit-søgeord",
"search_tags": "Søg tags...", "search_tags": "Søg tags...",
"search_timezone": "Søg i tidszone...", "search_timezone": "Søg i tidszone...",
"search_type": "Søg efter type", "search_type": "Søg efter type",
@@ -1164,10 +1559,14 @@
"select_new_face": "Vælg nyt ansigt", "select_new_face": "Vælg nyt ansigt",
"select_photos": "Vælg billeder", "select_photos": "Vælg billeder",
"select_trash_all": "Vælg smid alle ud", "select_trash_all": "Vælg smid alle ud",
"select_user_for_sharing_page_err_album": "Fejlede i at oprette et nyt album",
"selected": "Valgt", "selected": "Valgt",
"selected_count": "{count, plural, one {# valgt} other {# valgte}}", "selected_count": "{count, plural, one {# valgt} other {# valgte}}",
"send_message": "Send besked", "send_message": "Send besked",
"send_welcome_email": "Send velkomstemail", "send_welcome_email": "Send velkomstemail",
"server_endpoint": "Server endepunkt",
"server_info_box_app_version": "Applikationsversion",
"server_info_box_server_url": "Server URL",
"server_offline": "Server Offline", "server_offline": "Server Offline",
"server_online": "Server Online", "server_online": "Server Online",
"server_stats": "Serverstatus", "server_stats": "Serverstatus",
@@ -1179,22 +1578,91 @@
"set_date_of_birth": "Indstil fødselsdato", "set_date_of_birth": "Indstil fødselsdato",
"set_profile_picture": "Indstil profilbillede", "set_profile_picture": "Indstil profilbillede",
"set_slideshow_to_fullscreen": "Sæt diasshow til fuldskærmsvisning", "set_slideshow_to_fullscreen": "Sæt diasshow til fuldskærmsvisning",
"setting_image_viewer_help": "Detaljeret visning indlæser miniaturebilleder først. Herefter indlæses mediumstørrelse forhåndsvisning af billedet (hvis dette er slået til), for til sidst at vise originalen (hvis dette er slået til).",
"setting_image_viewer_original_subtitle": "Slå indlæsning af originalbillede i fuld størrelse til (stort!). Deaktiver for at reducere dataforbruget (både på netværket og for enhedscache).",
"setting_image_viewer_original_title": "Indlæs originalbillede",
"setting_image_viewer_preview_subtitle": "Slå indlæsning af et mediumstørrelse billede til. Slå fra for enten direkte at indlæse originalen eller kun at bruge miniaturebilledet.",
"setting_image_viewer_preview_title": "Indlæs forhåndsvisning af billedet",
"setting_image_viewer_title": "Images",
"setting_languages_apply": "Anvend",
"setting_languages_subtitle": "Ændrer app-sprog",
"setting_languages_title": "Sprog",
"setting_notifications_notify_failures_grace_period": "Giv besked om fejl med sikkerhedskopiering i baggrunden: {}",
"setting_notifications_notify_hours": "{} timer",
"setting_notifications_notify_immediately": "med det samme",
"setting_notifications_notify_minutes": "{} minutter",
"setting_notifications_notify_never": "aldrig",
"setting_notifications_notify_seconds": "{} sekunder",
"setting_notifications_single_progress_subtitle": "Detaljeret uploadstatus pr. element",
"setting_notifications_single_progress_title": "Vis detaljeret baggrundsuploadstatus",
"setting_notifications_subtitle": "Tilpas dine notifikationspræferencer",
"setting_notifications_total_progress_subtitle": "Samlet uploadstatus (færdige/samlet antal elementer)",
"setting_notifications_total_progress_title": "Vis samlet baggrundsuploadstatus",
"setting_video_viewer_looping_title": "Looping",
"setting_video_viewer_original_video_subtitle": "When streaming a video from the server, play the original even when a transcode is available. May lead to buffering. Videos available locally are played in original quality regardless of this setting.",
"setting_video_viewer_original_video_title": "Force original video",
"settings": "Indstillinger", "settings": "Indstillinger",
"settings_require_restart": "Genstart venligst Immich for at anvende denne ændring",
"settings_saved": "Indstillinger er gemt", "settings_saved": "Indstillinger er gemt",
"share": "Del", "share": "Del",
"share_add_photos": "Tilføj billeder",
"share_assets_selected": "{} valgt",
"share_dialog_preparing": "Forbereder...",
"shared": "Delt", "shared": "Delt",
"shared_album_activities_input_disable": "Kommentarer er deaktiveret",
"shared_album_activity_remove_content": "Vil du slette denne aktivitet?",
"shared_album_activity_remove_title": "Slet aktivitet",
"shared_album_section_people_action_error": "Der opstod en fejl i fjernelsen fra albummet",
"shared_album_section_people_action_leave": "Fjern brugere fra albummet",
"shared_album_section_people_action_remove_user": "Fjern brugere fra albummet",
"shared_album_section_people_title": "PERSONER",
"shared_by": "Delt af", "shared_by": "Delt af",
"shared_by_user": "Delt af {user}", "shared_by_user": "Delt af {user}",
"shared_by_you": "Delt af dig", "shared_by_you": "Delt af dig",
"shared_from_partner": "Billeder fra {partner}", "shared_from_partner": "Billeder fra {partner}",
"shared_intent_upload_button_progress_text": "{} / {} Uploaded",
"shared_link_app_bar_title": "Delte links",
"shared_link_clipboard_copied_massage": "Kopieret til udklipsholderen",
"shared_link_clipboard_text": "Link: {}\nkodeord: {}",
"shared_link_create_error": "Der opstod en fejl i oprettelsen af et delt link",
"shared_link_edit_description_hint": "Indtast beskrivelse",
"shared_link_edit_expire_after_option_day": "1 dag",
"shared_link_edit_expire_after_option_days": "{} dage",
"shared_link_edit_expire_after_option_hour": "1 time",
"shared_link_edit_expire_after_option_hours": "{} timer",
"shared_link_edit_expire_after_option_minute": "1 minut",
"shared_link_edit_expire_after_option_minutes": "{} minutter",
"shared_link_edit_expire_after_option_months": "{} måneder",
"shared_link_edit_expire_after_option_year": "{} år",
"shared_link_edit_password_hint": "Indtast kodeordet",
"shared_link_edit_submit_button": "Opdater link",
"shared_link_error_server_url_fetch": "Kan ikke finde server URL",
"shared_link_expires_day": "Udløber om {} dag",
"shared_link_expires_days": "Udløber om {} dage",
"shared_link_expires_hour": "Udløber om {} time",
"shared_link_expires_hours": "Udløber om {} timer",
"shared_link_expires_minute": "Udløber om {} minut",
"shared_link_expires_minutes": "Udløber om {} minutter",
"shared_link_expires_never": "Udløber aldrig",
"shared_link_expires_second": "Udløber om {} sekund",
"shared_link_expires_seconds": "Udløber om {} sekunder",
"shared_link_individual_shared": "Individuelt delt",
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Håndter delte links",
"shared_link_options": "Muligheder for delt link", "shared_link_options": "Muligheder for delt link",
"shared_links": "Delte links", "shared_links": "Delte links",
"shared_links_description": "Del billeder og videoer med et link", "shared_links_description": "Del billeder og videoer med et link",
"shared_photos_and_videos_count": "{assetCount, plural, other {# delte billeder & videoer.}}", "shared_photos_and_videos_count": "{assetCount, plural, other {# delte billeder & videoer.}}",
"shared_with_me": "Delt med mig",
"shared_with_partner": "Delt med {partner}", "shared_with_partner": "Delt med {partner}",
"sharing": "Delte", "sharing": "Delte",
"sharing_enter_password": "Indtast venligst adgangskoden for at se denne side.", "sharing_enter_password": "Indtast venligst adgangskoden for at se denne side.",
"sharing_page_album": "Delt albums",
"sharing_page_description": "Opret delte albummer for at dele billeder og video med personer på dit netværk.",
"sharing_page_empty_list": "TOM LISTE",
"sharing_sidebar_description": "Vis et link til deling i sidemenuen", "sharing_sidebar_description": "Vis et link til deling i sidemenuen",
"sharing_silver_appbar_create_shared_album": "Opret delt album",
"sharing_silver_appbar_share_partner": "Del med partner",
"shift_to_permanent_delete": "tryk på ⇧ for at slette aktiv permanent", "shift_to_permanent_delete": "tryk på ⇧ for at slette aktiv permanent",
"show_album_options": "Vis albumindstillinger", "show_album_options": "Vis albumindstillinger",
"show_albums": "Vis albummer", "show_albums": "Vis albummer",
@@ -1261,6 +1729,9 @@
"support_third_party_description": "Din Immich-installation blev sammensat af en tredjepart. Problemer, du oplever, kan være forårsaget af denne udvikler, så rejs venligst problemer med dem i første omgang ved at bruge nedenstående links.", "support_third_party_description": "Din Immich-installation blev sammensat af en tredjepart. Problemer, du oplever, kan være forårsaget af denne udvikler, så rejs venligst problemer med dem i første omgang ved at bruge nedenstående links.",
"swap_merge_direction": "Byt retning for sammenfletning", "swap_merge_direction": "Byt retning for sammenfletning",
"sync": "Synkronisér", "sync": "Synkronisér",
"sync_albums": "Synkroniser albummer",
"sync_albums_manual_subtitle": "Synkroniser alle uploadet billeder og videoer til de valgte backupalbummer",
"sync_upload_album_setting_subtitle": "Opret og upload dine billeder og videoer til de valgte albummer i Immich",
"tag": "Tag", "tag": "Tag",
"tag_assets": "Tag mediefiler", "tag_assets": "Tag mediefiler",
"tag_created": "Oprettet tag: {tag}", "tag_created": "Oprettet tag: {tag}",
@@ -1274,6 +1745,19 @@
"theme": "Tema", "theme": "Tema",
"theme_selection": "Temavalg", "theme_selection": "Temavalg",
"theme_selection_description": "Indstil automatisk temaet til lyst eller mørkt baseret på din browsers systempræference", "theme_selection_description": "Indstil automatisk temaet til lyst eller mørkt baseret på din browsers systempræference",
"theme_setting_asset_list_storage_indicator_title": "Vis opbevaringsindikator på filer",
"theme_setting_asset_list_tiles_per_row_title": "Antal elementer per række ({})",
"theme_setting_colorful_interface_subtitle": "Tilføj primær farve til baggrundsoverflader.",
"theme_setting_colorful_interface_title": "Farverig grænseflade",
"theme_setting_image_viewer_quality_subtitle": "Juster kvaliteten i billedfremviseren",
"theme_setting_image_viewer_quality_title": "Billedfremviserkvalitet",
"theme_setting_primary_color_subtitle": "Vælg en farve til primære handlinger og accenter.",
"theme_setting_primary_color_title": "Primær farve",
"theme_setting_system_primary_color_title": "Brug systemfarver",
"theme_setting_system_theme_switch": "Automatisk (Følg systemindstillinger)",
"theme_setting_theme_subtitle": "Vælg appens temaindstilling",
"theme_setting_three_stage_loading_subtitle": "Tre-trins indlæsning kan øge ydeevnen, men kan ligeledes føre til højere netværksbelastning",
"theme_setting_three_stage_loading_title": "Slå tre-trins indlæsning til",
"they_will_be_merged_together": "De vil blive slået sammen", "they_will_be_merged_together": "De vil blive slået sammen",
"third_party_resources": "Tredjepartsressourcer", "third_party_resources": "Tredjepartsressourcer",
"time_based_memories": "Tidsbaserede minder", "time_based_memories": "Tidsbaserede minder",
@@ -1293,7 +1777,15 @@
"trash_all": "Smid alle ud", "trash_all": "Smid alle ud",
"trash_count": "Slet {count, number}", "trash_count": "Slet {count, number}",
"trash_delete_asset": "Flyt mediefil til Papirkurv", "trash_delete_asset": "Flyt mediefil til Papirkurv",
"trash_emptied": "Tømte papirkurven",
"trash_no_results_message": "Billeder og videoer markeret til sletning vil blive vist her.", "trash_no_results_message": "Billeder og videoer markeret til sletning vil blive vist her.",
"trash_page_delete_all": "Slet alt",
"trash_page_empty_trash_dialog_content": "Vil du tømme papirkurven? Disse elementer vil blive permanent fjernet fra Immich",
"trash_page_info": "Slettede elementer vil blive slettet permanent efter {} dage",
"trash_page_no_assets": "Ingen slettede elementer",
"trash_page_restore_all": "Gendan alt",
"trash_page_select_assets_btn": "Vælg elementer",
"trash_page_title": "Papirkurv ({})",
"trashed_items_will_be_permanently_deleted_after": "Mediefiler i skraldespanden vil blive slettet permanent efter {days, plural, one {# dag} other {# dage}}.", "trashed_items_will_be_permanently_deleted_after": "Mediefiler i skraldespanden vil blive slettet permanent efter {days, plural, one {# dag} other {# dage}}.",
"type": "Type", "type": "Type",
"unarchive": "Afakivér", "unarchive": "Afakivér",
@@ -1322,6 +1814,8 @@
"updated_password": "Opdaterede adgangskode", "updated_password": "Opdaterede adgangskode",
"upload": "Upload", "upload": "Upload",
"upload_concurrency": "Upload samtidighed", "upload_concurrency": "Upload samtidighed",
"upload_dialog_info": "Vil du sikkerhedskopiere de(t) valgte element(er) til serveren?",
"upload_dialog_title": "Upload element",
"upload_errors": "Upload afsluttet med {count, plural, one {# fejl} other {# fejl}}. Opdater siden for at se nye uploadaktiver.", "upload_errors": "Upload afsluttet med {count, plural, one {# fejl} other {# fejl}}. Opdater siden for at se nye uploadaktiver.",
"upload_progress": "Resterende {remaining, number} - Behandlet {processed, number}/{total, number}", "upload_progress": "Resterende {remaining, number} - Behandlet {processed, number}/{total, number}",
"upload_skipped_duplicates": "Sprang over {count, plural, one {# duplet aktiv} other {# duplikerede aktiver}}", "upload_skipped_duplicates": "Sprang over {count, plural, one {# duplet aktiv} other {# duplikerede aktiver}}",
@@ -1329,8 +1823,11 @@
"upload_status_errors": "Fejl", "upload_status_errors": "Fejl",
"upload_status_uploaded": "Uploadet", "upload_status_uploaded": "Uploadet",
"upload_success": "Upload gennemført. Opdater siden for at se nye uploadaktiver.", "upload_success": "Upload gennemført. Opdater siden for at se nye uploadaktiver.",
"upload_to_immich": "Upload to Immich ({})",
"uploading": "Uploading",
"url": "URL", "url": "URL",
"usage": "Forbrug", "usage": "Forbrug",
"use_current_connection": "brug nuværende forbindelse",
"use_custom_date_range": "Brug tilpasset datointerval i stedet", "use_custom_date_range": "Brug tilpasset datointerval i stedet",
"user": "Bruger", "user": "Bruger",
"user_id": "Bruger-ID", "user_id": "Bruger-ID",
@@ -1345,10 +1842,16 @@
"users": "Brugere", "users": "Brugere",
"utilities": "Værktøjer", "utilities": "Værktøjer",
"validate": "Validér", "validate": "Validér",
"validate_endpoint_error": "Indtast en gyldig URL",
"variables": "Variabler", "variables": "Variabler",
"version": "Version", "version": "Version",
"version_announcement_closing": "Din ven, Alex", "version_announcement_closing": "Din ven, Alex",
"version_announcement_message": "Hej! En ny version af Immich er tilgængelig. Brug venligst lidt tid på at læse <link>udgivelsesbemærkningerne</link> for at sikre, at din opsætning er opdateret for at forhindre fejlkonfigurationer, især hvis du bruger WatchTower eller en mekanisme, der håndterer automatisk opdatering af din Immich-instans.", "version_announcement_message": "Hej! En ny version af Immich er tilgængelig. Brug venligst lidt tid på at læse <link>udgivelsesbemærkningerne</link> for at sikre, at din opsætning er opdateret for at forhindre fejlkonfigurationer, især hvis du bruger WatchTower eller en mekanisme, der håndterer automatisk opdatering af din Immich-instans.",
"version_announcement_overlay_release_notes": "udgivelsesnoterne",
"version_announcement_overlay_text_1": "Hej ven, der er en ny version af",
"version_announcement_overlay_text_2": ". Besøg venligst ",
"version_announcement_overlay_text_3": " for at sikre dig, at din dockercompose- og .env-fil er opdateret, så der undgås fejlkonfiguration, specielt hvis du bruger WatchTower eller lignede.",
"version_announcement_overlay_title": "Ny serverversion er tilgængelig 🎉",
"version_history": "Versionshistorik", "version_history": "Versionshistorik",
"version_history_item": "Installerede {version} den {date}", "version_history_item": "Installerede {version} den {date}",
"video": "Video", "video": "Video",
@@ -1367,15 +1870,20 @@
"view_next_asset": "Se næste medie", "view_next_asset": "Se næste medie",
"view_previous_asset": "Se forrige medie", "view_previous_asset": "Se forrige medie",
"view_stack": "Vis stak", "view_stack": "Vis stak",
"viewer_remove_from_stack": "Fjern fra stak",
"viewer_stack_use_as_main_asset": "Brug som hovedelement",
"viewer_unstack": "Fjern fra stak",
"visibility_changed": "Synlighed ændret for {count, plural, one {# person} other {# personer}}", "visibility_changed": "Synlighed ændret for {count, plural, one {# person} other {# personer}}",
"waiting": "Venter", "waiting": "Venter",
"warning": "Advarsel", "warning": "Advarsel",
"week": "Uge", "week": "Uge",
"welcome": "Velkommen", "welcome": "Velkommen",
"welcome_to_immich": "Velkommen til Immich", "welcome_to_immich": "Velkommen til Immich",
"wifi_name": "WiFi-navn",
"year": "År", "year": "År",
"years_ago": "{years, plural, one {# år} other {# år}} siden", "years_ago": "{years, plural, one {# år} other {# år}} siden",
"yes": "Ja", "yes": "Ja",
"you_dont_have_any_shared_links": "Du har ikke nogen delte links", "you_dont_have_any_shared_links": "Du har ikke nogen delte links",
"your_wifi_name": "Dit WiFi-navn",
"zoom_image": "Zoom billede" "zoom_image": "Zoom billede"
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -4,6 +4,7 @@
"account_settings": "Konto seaded", "account_settings": "Konto seaded",
"acknowledge": "Sain aru", "acknowledge": "Sain aru",
"action": "Tegevus", "action": "Tegevus",
"action_common_update": "Uuenda",
"actions": "Tegevused", "actions": "Tegevused",
"active": "Aktiivne", "active": "Aktiivne",
"activity": "Aktiivsus", "activity": "Aktiivsus",
@@ -13,6 +14,7 @@
"add_a_location": "Lisa asukoht", "add_a_location": "Lisa asukoht",
"add_a_name": "Lisa nimi", "add_a_name": "Lisa nimi",
"add_a_title": "Lisa pealkiri", "add_a_title": "Lisa pealkiri",
"add_endpoint": "Lisa lõpp-punkt",
"add_exclusion_pattern": "Lisa välistamismuster", "add_exclusion_pattern": "Lisa välistamismuster",
"add_import_path": "Lisa imporditee", "add_import_path": "Lisa imporditee",
"add_location": "Lisa asukoht", "add_location": "Lisa asukoht",
@@ -22,6 +24,8 @@
"add_photos": "Lisa fotosid", "add_photos": "Lisa fotosid",
"add_to": "Lisa kohta…", "add_to": "Lisa kohta…",
"add_to_album": "Lisa albumisse", "add_to_album": "Lisa albumisse",
"add_to_album_bottom_sheet_added": "Lisatud albumisse {album}",
"add_to_album_bottom_sheet_already_exists": "On juba albumis {album}",
"add_to_shared_album": "Lisa jagatud albumisse", "add_to_shared_album": "Lisa jagatud albumisse",
"add_url": "Lisa URL", "add_url": "Lisa URL",
"added_to_archive": "Lisatud arhiivi", "added_to_archive": "Lisatud arhiivi",
@@ -35,11 +39,11 @@
"authentication_settings_disable_all": "Kas oled kindel, et soovid kõik sisselogimismeetodid välja lülitada? Sisselogimine lülitatakse täielikult välja.", "authentication_settings_disable_all": "Kas oled kindel, et soovid kõik sisselogimismeetodid välja lülitada? Sisselogimine lülitatakse täielikult välja.",
"authentication_settings_reenable": "Et taas lubada, kasuta <link>serveri käsku</link>.", "authentication_settings_reenable": "Et taas lubada, kasuta <link>serveri käsku</link>.",
"background_task_job": "Tausttegumid", "background_task_job": "Tausttegumid",
"backup_database": "Varunda andmebaas", "backup_database": "Loo andmebaasi tõmmis",
"backup_database_enable_description": "Luba andmebaasi varundamine", "backup_database_enable_description": "Luba andmebaasi tõmmised",
"backup_keep_last_amount": "Varukoopiate arv, mida alles hoida", "backup_keep_last_amount": "Eelmiste tõmmiste arv, mida alles hoida",
"backup_settings": "Varundamise seaded", "backup_settings": "Andmebaasi tõmmiste seaded",
"backup_settings_description": "Halda andmebaasi varundamise seadeid", "backup_settings_description": "Halda andmebaasi tõmmiste seadeid. Märkus: Neid tööteid ei jälgita ning ebaõnnestumisest ei hoiatata.",
"check_all": "Märgi kõik", "check_all": "Märgi kõik",
"cleanup": "Koristus", "cleanup": "Koristus",
"cleared_jobs": "Tööted eemaldatud: {job}", "cleared_jobs": "Tööted eemaldatud: {job}",
@@ -66,6 +70,11 @@
"forcing_refresh_library_files": "Kogu kõigi failide sundvärskendamine", "forcing_refresh_library_files": "Kogu kõigi failide sundvärskendamine",
"image_format": "Formaat", "image_format": "Formaat",
"image_format_description": "WebP failid on väiksemad kui JPEG, aga kodeerimine on aeglasem.", "image_format_description": "WebP failid on väiksemad kui JPEG, aga kodeerimine on aeglasem.",
"image_fullsize_description": "Täismõõdus pilt ilma metaandmeteta, kasutatakse sisse suumimisel",
"image_fullsize_enabled": "Luba täismõõdus piltide genereerimine",
"image_fullsize_enabled_description": "Genereeri mitte-veebisõbralike formaatide jaoks täismõõdus pilt. Kui \"Eelista manustatud eelvaadet\" on lubatud, kasutatakse manustatud eelvaateid otse ilma teisendamiseta. Ei mõjuta veebisõbralikke formaate nagu JPEG.",
"image_fullsize_quality_description": "Täismõõdus pildi kvaliteet vahemikus 1-100. Kõrgem väärtus on parem, aga tulemuseks on suuremad failid.",
"image_fullsize_title": "Täismõõdus pildi seaded",
"image_prefer_embedded_preview": "Eelista manustatud eelvaadet", "image_prefer_embedded_preview": "Eelista manustatud eelvaadet",
"image_prefer_embedded_preview_setting_description": "Kasuta pilditöötluse sisendina võimalusel RAW fotodesse manustatud eelvaateid. See võib mõnede piltide puhul anda tulemuseks täpsemad värvid, aga eelvaate kvaliteet sõltub konkreetsest kaamerast ning pildis võib olla rohkem tihendusmüra.", "image_prefer_embedded_preview_setting_description": "Kasuta pilditöötluse sisendina võimalusel RAW fotodesse manustatud eelvaateid. See võib mõnede piltide puhul anda tulemuseks täpsemad värvid, aga eelvaate kvaliteet sõltub konkreetsest kaamerast ning pildis võib olla rohkem tihendusmüra.",
"image_prefer_wide_gamut": "Eelista laia värvigammat", "image_prefer_wide_gamut": "Eelista laia värvigammat",
@@ -162,7 +171,6 @@
"no_pattern_added": "Mustreid ei ole", "no_pattern_added": "Mustreid ei ole",
"note_apply_storage_label_previous_assets": "Märkus: Et rakendada talletussilt varem üleslaaditud üksustele, käivita", "note_apply_storage_label_previous_assets": "Märkus: Et rakendada talletussilt varem üleslaaditud üksustele, käivita",
"note_cannot_be_changed_later": "MÄRKUS: Seda ei saa hiljem muuta!", "note_cannot_be_changed_later": "MÄRKUS: Seda ei saa hiljem muuta!",
"note_unlimited_quota": "Märkus: Piiramatu kvoodi jaoks sisesta 0",
"notification_email_from_address": "Saatja aadress", "notification_email_from_address": "Saatja aadress",
"notification_email_from_address_description": "Saatja e-posti aadress, näiteks: \"Immich Photo Server <noreply@example.com>\"", "notification_email_from_address_description": "Saatja e-posti aadress, näiteks: \"Immich Photo Server <noreply@example.com>\"",
"notification_email_host_description": "E-posti serveri host (nt. smtp.immich.app)", "notification_email_host_description": "E-posti serveri host (nt. smtp.immich.app)",
@@ -363,6 +371,10 @@
"admin_password": "Administraatori parool", "admin_password": "Administraatori parool",
"administration": "Administratsioon", "administration": "Administratsioon",
"advanced": "Täpsemad valikud", "advanced": "Täpsemad valikud",
"advanced_settings_log_level_title": "Logimistase: {}",
"advanced_settings_proxy_headers_title": "Vaheserveri päised",
"advanced_settings_self_signed_ssl_title": "Luba endasigneeritud SSL-sertifikaadid",
"advanced_settings_troubleshooting_title": "Tõrkeotsing",
"age_months": "Vanus {months, plural, one {# kuu} other {# kuud}}", "age_months": "Vanus {months, plural, one {# kuu} other {# kuud}}",
"age_year_months": "Vanus 1 aasta, {months, plural, one {# kuu} other {# kuud}}", "age_year_months": "Vanus 1 aasta, {months, plural, one {# kuu} other {# kuud}}",
"age_years": "{years, plural, other {Vanus #}}", "age_years": "{years, plural, other {Vanus #}}",
@@ -371,6 +383,8 @@
"album_cover_updated": "Albumi kaanepilt muudetud", "album_cover_updated": "Albumi kaanepilt muudetud",
"album_delete_confirmation": "Kas oled kindel, et soovid albumi {album} kustutada?", "album_delete_confirmation": "Kas oled kindel, et soovid albumi {album} kustutada?",
"album_delete_confirmation_description": "Kui see album on jagatud, ei pääse teised kasutajad sellele enam ligi.", "album_delete_confirmation_description": "Kui see album on jagatud, ei pääse teised kasutajad sellele enam ligi.",
"album_info_card_backup_album_excluded": "VÄLJA JÄETUD",
"album_info_card_backup_album_included": "LISATUD",
"album_info_updated": "Albumi info muudetud", "album_info_updated": "Albumi info muudetud",
"album_leave": "Lahku albumist?", "album_leave": "Lahku albumist?",
"album_leave_confirmation": "Kas oled kindel, et soovid albumist {album} lahkuda?", "album_leave_confirmation": "Kas oled kindel, et soovid albumist {album} lahkuda?",
@@ -379,10 +393,21 @@
"album_remove_user": "Eemalda kasutaja?", "album_remove_user": "Eemalda kasutaja?",
"album_remove_user_confirmation": "Kas oled kindel, et soovid kasutaja {user} eemaldada?", "album_remove_user_confirmation": "Kas oled kindel, et soovid kasutaja {user} eemaldada?",
"album_share_no_users": "Paistab, et oled seda albumit kõikide kasutajatega jaganud, või pole ühtegi kasutajat, kellega jagada.", "album_share_no_users": "Paistab, et oled seda albumit kõikide kasutajatega jaganud, või pole ühtegi kasutajat, kellega jagada.",
"album_thumbnail_card_item": "1 üksus",
"album_thumbnail_card_items": "{} üksust",
"album_thumbnail_card_shared": " · Jagatud",
"album_thumbnail_shared_by": "Jagas {}",
"album_updated": "Album muudetud", "album_updated": "Album muudetud",
"album_updated_setting_description": "Saa teavitus e-posti teel, kui jagatud albumis on uusi üksuseid", "album_updated_setting_description": "Saa teavitus e-posti teel, kui jagatud albumis on uusi üksuseid",
"album_user_left": "Lahkutud albumist {album}", "album_user_left": "Lahkutud albumist {album}",
"album_user_removed": "Kasutaja {user} eemaldatud", "album_user_removed": "Kasutaja {user} eemaldatud",
"album_viewer_appbar_delete_confirm": "Kas oled kindel, et soovid selle albumi oma kontolt kustutada?",
"album_viewer_appbar_share_err_delete": "Albumi kustutamine ebaõnnestus",
"album_viewer_appbar_share_err_leave": "Albumist lahkumine ebaõnnestus",
"album_viewer_appbar_share_err_remove": "Üksuste albumist eemaldamisel tekkis probleeme",
"album_viewer_appbar_share_err_title": "Albumi pealkirja muutmine ebaõnnestus",
"album_viewer_appbar_share_leave": "Lahku albumist",
"album_viewer_page_share_add_users": "Lisa kasutajaid",
"album_with_link_access": "Luba kõigil, kellel on link, näha selle albumi fotosid ja isikuid.", "album_with_link_access": "Luba kõigil, kellel on link, näha selle albumi fotosid ja isikuid.",
"albums": "Albumid", "albums": "Albumid",
"albums_count": "{count, plural, one {{count, number} album} other {{count, number} albumit}}", "albums_count": "{count, plural, one {{count, number} album} other {{count, number} albumit}}",
@@ -400,23 +425,36 @@
"api_key_description": "Seda väärtust kuvatakse ainult üks kord. Kopeeri see enne akna sulgemist.", "api_key_description": "Seda väärtust kuvatakse ainult üks kord. Kopeeri see enne akna sulgemist.",
"api_key_empty": "Su API võtme nimi ei tohiks olla tühi", "api_key_empty": "Su API võtme nimi ei tohiks olla tühi",
"api_keys": "API võtmed", "api_keys": "API võtmed",
"app_bar_signout_dialog_content": "Kas oled kindel, et soovid välja logida?",
"app_bar_signout_dialog_ok": "Jah",
"app_bar_signout_dialog_title": "Logi välja",
"app_settings": "Rakenduse seaded", "app_settings": "Rakenduse seaded",
"appears_in": "Albumid", "appears_in": "Albumid",
"archive": "Arhiiv", "archive": "Arhiiv",
"archive_or_unarchive_photo": "Arhiveeri või taasta foto", "archive_or_unarchive_photo": "Arhiveeri või taasta foto",
"archive_page_no_archived_assets": "Arhiveeritud üksuseid ei leitud",
"archive_size": "Arhiivi suurus", "archive_size": "Arhiivi suurus",
"archive_size_description": "Seadista arhiivi suurus allalaadimiseks (GiB)", "archive_size_description": "Seadista arhiivi suurus allalaadimiseks (GiB)",
"archived": "Arhiveeritud",
"archived_count": "{count, plural, other {# arhiveeritud}}", "archived_count": "{count, plural, other {# arhiveeritud}}",
"are_these_the_same_person": "Kas need on sama isik?", "are_these_the_same_person": "Kas need on sama isik?",
"are_you_sure_to_do_this": "Kas oled kindel, et soovid seda teha?", "are_you_sure_to_do_this": "Kas oled kindel, et soovid seda teha?",
"asset_action_delete_err_read_only": "Kirjutuskaitstud üksuseid ei saa kustutada, jätan vahele",
"asset_added_to_album": "Lisatud albumisse", "asset_added_to_album": "Lisatud albumisse",
"asset_adding_to_album": "Albumisse lisamine…", "asset_adding_to_album": "Albumisse lisamine…",
"asset_description_updated": "Üksuse kirjeldus on muudetud", "asset_description_updated": "Üksuse kirjeldus on muudetud",
"asset_filename_is_offline": "Üksus {filename} ei ole kättesaadav", "asset_filename_is_offline": "Üksus {filename} ei ole kättesaadav",
"asset_has_unassigned_faces": "Üksusel on seostamata nägusid", "asset_has_unassigned_faces": "Üksusel on seostamata nägusid",
"asset_hashing": "Räsimine…", "asset_hashing": "Räsimine…",
"asset_list_group_by_sub_title": "Grupeeri",
"asset_list_layout_settings_dynamic_layout_title": "Dünaamiline asetus",
"asset_list_layout_settings_group_automatically": "Automaatne",
"asset_list_layout_settings_group_by": "Grupeeri üksused",
"asset_list_layout_settings_group_by_month_day": "Kuu + päev",
"asset_list_layout_sub_title": "Asetus",
"asset_offline": "Üksus pole kättesaadav", "asset_offline": "Üksus pole kättesaadav",
"asset_offline_description": "Seda välise kogu üksust ei leitud kettalt. Abi saamiseks palun võta ühendust oma Immich'i administraatoriga.", "asset_offline_description": "Seda välise kogu üksust ei leitud kettalt. Abi saamiseks palun võta ühendust oma Immich'i administraatoriga.",
"asset_restored_successfully": "Üksus edukalt taastatud",
"asset_skipped": "Vahele jäetud", "asset_skipped": "Vahele jäetud",
"asset_skipped_in_trash": "Prügikastis", "asset_skipped_in_trash": "Prügikastis",
"asset_uploaded": "Üleslaaditud", "asset_uploaded": "Üleslaaditud",
@@ -434,8 +472,26 @@
"assets_trashed_count": "{count, plural, one {# üksus} other {# üksust}} liigutatud prügikasti", "assets_trashed_count": "{count, plural, one {# üksus} other {# üksust}} liigutatud prügikasti",
"assets_were_part_of_album_count": "{count, plural, one {Üksus oli} other {Üksused olid}} juba osa albumist", "assets_were_part_of_album_count": "{count, plural, one {Üksus oli} other {Üksused olid}} juba osa albumist",
"authorized_devices": "Autoriseeritud seadmed", "authorized_devices": "Autoriseeritud seadmed",
"automatic_endpoint_switching_subtitle": "Ühendu lokaalselt üle valitud WiFi-võrgu, kui see on saadaval, ja kasuta mujal alternatiivseid ühendusi",
"back": "Tagasi", "back": "Tagasi",
"back_close_deselect": "Tagasi, sulge või tühista valik", "back_close_deselect": "Tagasi, sulge või tühista valik",
"backup_album_selection_page_select_albums": "Vali albumid",
"backup_album_selection_page_selection_info": "Valiku info",
"backup_album_selection_page_total_assets": "Unikaalseid üksuseid kokku",
"backup_all": "Kõik",
"backup_background_service_default_notification": "Uute üksuste kontrollimine…",
"backup_background_service_error_title": "Varundamise viga",
"backup_controller_page_background_battery_info_ok": "OK",
"backup_controller_page_background_wifi": "Ainult WiFi-võrgus",
"backup_controller_page_backup_sub": "Varundatud fotod ja videod",
"backup_controller_page_desc_backup": "Lülita sisse esiplaanil varundamine, et rakenduse avamisel uued üksused automaatselt serverisse üles laadida.",
"backup_controller_page_to_backup": "Albumid, mida varundada",
"backup_controller_page_total_sub": "Kõik unikaalsed fotod ja videod valitud albumitest",
"backup_err_only_album": "Ei saa ainsat albumit eemaldada",
"backup_info_card_assets": "üksused",
"backup_manual_cancelled": "Tühistatud",
"backup_manual_title": "Üleslaadimise staatus",
"backup_setting_subtitle": "Halda taustal ja esiplaanil üleslaadimise seadeid",
"backward": "Tagasi", "backward": "Tagasi",
"birthdate_saved": "Sünnikuupäev salvestatud", "birthdate_saved": "Sünnikuupäev salvestatud",
"birthdate_set_description": "Sünnikuupäeva kasutatakse isiku vanuse arvutamiseks foto tegemise hetkel.", "birthdate_set_description": "Sünnikuupäeva kasutatakse isiku vanuse arvutamiseks foto tegemise hetkel.",
@@ -447,11 +503,14 @@
"bulk_keep_duplicates_confirmation": "Kas oled kindel, et soovid {count, plural, one {# dubleeritud üksuse} other {# dubleeritud üksust}} alles jätta? Sellega märgitakse kõik duplikaadigrupid lahendatuks ilma midagi kustutamata.", "bulk_keep_duplicates_confirmation": "Kas oled kindel, et soovid {count, plural, one {# dubleeritud üksuse} other {# dubleeritud üksust}} alles jätta? Sellega märgitakse kõik duplikaadigrupid lahendatuks ilma midagi kustutamata.",
"bulk_trash_duplicates_confirmation": "Kas oled kindel, et soovid {count, plural, one {# dubleeritud üksuse} other {# dubleeritud üksust}} masskustutada? Sellega jäetakse alles iga grupi suurim üksus ning duplikaadid liigutatakse prügikasti.", "bulk_trash_duplicates_confirmation": "Kas oled kindel, et soovid {count, plural, one {# dubleeritud üksuse} other {# dubleeritud üksust}} masskustutada? Sellega jäetakse alles iga grupi suurim üksus ning duplikaadid liigutatakse prügikasti.",
"buy": "Osta Immich", "buy": "Osta Immich",
"cache_settings_clear_cache_button": "Tühjenda puhver",
"cache_settings_statistics_title": "Puhvri kasutus",
"camera": "Kaamera", "camera": "Kaamera",
"camera_brand": "Kaamera mark", "camera_brand": "Kaamera mark",
"camera_model": "Kaamera mudel", "camera_model": "Kaamera mudel",
"cancel": "Katkesta", "cancel": "Katkesta",
"cancel_search": "Katkesta otsing", "cancel_search": "Katkesta otsing",
"canceled": "Tühistatud",
"cannot_merge_people": "Ei saa isikuid ühendada", "cannot_merge_people": "Ei saa isikuid ühendada",
"cannot_undo_this_action": "Sa ei saa seda tagasi võtta!", "cannot_undo_this_action": "Sa ei saa seda tagasi võtta!",
"cannot_update_the_description": "Kirjelduse muutmine ebaõnnestus", "cannot_update_the_description": "Kirjelduse muutmine ebaõnnestus",
@@ -462,6 +521,10 @@
"change_name_successfully": "Nimi edukalt muudetud", "change_name_successfully": "Nimi edukalt muudetud",
"change_password": "Parooli muutmine", "change_password": "Parooli muutmine",
"change_password_description": "See on su esimene kord süsteemi siseneda, või on tehtud taotlus parooli muutmiseks. Palun sisesta allpool uus parool.", "change_password_description": "See on su esimene kord süsteemi siseneda, või on tehtud taotlus parooli muutmiseks. Palun sisesta allpool uus parool.",
"change_password_form_confirm_password": "Kinnita parool",
"change_password_form_new_password": "Uus parool",
"change_password_form_password_mismatch": "Paroolid ei klapi",
"change_password_form_reenter_new_password": "Korda uut parooli",
"change_your_password": "Muuda oma parooli", "change_your_password": "Muuda oma parooli",
"changed_visibility_successfully": "Nähtavus muudetud", "changed_visibility_successfully": "Nähtavus muudetud",
"check_all": "Märgi kõik", "check_all": "Märgi kõik",
@@ -473,6 +536,14 @@
"clear_all_recent_searches": "Tühjenda hiljutised otsingud", "clear_all_recent_searches": "Tühjenda hiljutised otsingud",
"clear_message": "Tühjenda sõnum", "clear_message": "Tühjenda sõnum",
"clear_value": "Tühjenda väärtus", "clear_value": "Tühjenda väärtus",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Sisesta parool",
"client_cert_import": "Impordi",
"client_cert_import_success_msg": "Klientsertifikaat on imporditud",
"client_cert_invalid_msg": "Vigane sertifikaadi fail või vale parool",
"client_cert_remove_msg": "Klientsertifikaat on eemaldatud",
"client_cert_subtitle": "Toetab ainult PKCS12 (.p12, .pfx) formaati. Sertifikaadi importimine/eemaldamine on saadaval ainult enne sisselogimist",
"client_cert_title": "SSL klientsertifikaat",
"clockwise": "Päripäeva", "clockwise": "Päripäeva",
"close": "Sulge", "close": "Sulge",
"collapse": "Peida", "collapse": "Peida",
@@ -483,6 +554,8 @@
"comment_options": "Kommentaari valikud", "comment_options": "Kommentaari valikud",
"comments_and_likes": "Kommentaarid ja meeldimised", "comments_and_likes": "Kommentaarid ja meeldimised",
"comments_are_disabled": "Kommentaarid on keelatud", "comments_are_disabled": "Kommentaarid on keelatud",
"common_create_new_album": "Lisa uus album",
"completed": "Lõpetatud",
"confirm": "Kinnita", "confirm": "Kinnita",
"confirm_admin_password": "Kinnita administraatori parool", "confirm_admin_password": "Kinnita administraatori parool",
"confirm_delete_face": "Kas oled kindel, et soovid isiku {name} näo üksuselt kustutada?", "confirm_delete_face": "Kas oled kindel, et soovid isiku {name} näo üksuselt kustutada?",
@@ -492,6 +565,10 @@
"contain": "Mahuta ära", "contain": "Mahuta ära",
"context": "Kontekst", "context": "Kontekst",
"continue": "Jätka", "continue": "Jätka",
"control_bottom_app_bar_create_new_album": "Lisa uus album",
"control_bottom_app_bar_delete_from_local": "Kustuta seadmest",
"control_bottom_app_bar_edit_location": "Muuda asukohta",
"control_bottom_app_bar_edit_time": "Muuda kuupäeva ja aega",
"copied_image_to_clipboard": "Pilt kopeeritud lõikelauale.", "copied_image_to_clipboard": "Pilt kopeeritud lõikelauale.",
"copied_to_clipboard": "Kopeeritud lõikelauale!", "copied_to_clipboard": "Kopeeritud lõikelauale!",
"copy_error": "Kopeeri viga", "copy_error": "Kopeeri viga",
@@ -513,6 +590,7 @@
"create_new_person": "Lisa uus isik", "create_new_person": "Lisa uus isik",
"create_new_person_hint": "Seosta valitud üksused uue isikuga", "create_new_person_hint": "Seosta valitud üksused uue isikuga",
"create_new_user": "Lisa uus kasutaja", "create_new_user": "Lisa uus kasutaja",
"create_shared_album_page_share_select_photos": "Vali fotod",
"create_tag": "Lisa silt", "create_tag": "Lisa silt",
"create_tag_description": "Lisa uus silt. Pesastatud siltide jaoks sisesta täielik tee koos kaldkriipsudega.", "create_tag_description": "Lisa uus silt. Pesastatud siltide jaoks sisesta täielik tee koos kaldkriipsudega.",
"create_user": "Lisa kasutaja", "create_user": "Lisa kasutaja",
@@ -537,19 +615,23 @@
"delete": "Kustuta", "delete": "Kustuta",
"delete_album": "Kustuta album", "delete_album": "Kustuta album",
"delete_api_key_prompt": "Kas oled kindel, et soovid selle API võtme kustutada?", "delete_api_key_prompt": "Kas oled kindel, et soovid selle API võtme kustutada?",
"delete_dialog_title": "Kustuta jäädavalt",
"delete_duplicates_confirmation": "Kas oled kindel, et soovid need duplikaadid jäädavalt kustutada?", "delete_duplicates_confirmation": "Kas oled kindel, et soovid need duplikaadid jäädavalt kustutada?",
"delete_face": "Kustuta nägu", "delete_face": "Kustuta nägu",
"delete_key": "Kustuta võti", "delete_key": "Kustuta võti",
"delete_library": "Kustuta kogu", "delete_library": "Kustuta kogu",
"delete_link": "Kustuta link", "delete_link": "Kustuta link",
"delete_local_dialog_ok_backed_up_only": "Kustuta ainult varundatud",
"delete_others": "Kustuta teised", "delete_others": "Kustuta teised",
"delete_shared_link": "Kustuta jagatud link", "delete_shared_link": "Kustuta jagatud link",
"delete_shared_link_dialog_title": "Kustuta jagatud link",
"delete_tag": "Kustuta silt", "delete_tag": "Kustuta silt",
"delete_tag_confirmation_prompt": "Kas oled kindel, et soovid sildi {tagName} kustutada?", "delete_tag_confirmation_prompt": "Kas oled kindel, et soovid sildi {tagName} kustutada?",
"delete_user": "Kustuta kasutaja", "delete_user": "Kustuta kasutaja",
"deleted_shared_link": "Jagatud link kustutatud", "deleted_shared_link": "Jagatud link kustutatud",
"deletes_missing_assets": "Kustutab üksused, mis on kettalt puudu", "deletes_missing_assets": "Kustutab üksused, mis on kettalt puudu",
"description": "Kirjeldus", "description": "Kirjeldus",
"description_input_hint_text": "Lisa kirjeldus...",
"details": "Üksikasjad", "details": "Üksikasjad",
"direction": "Suund", "direction": "Suund",
"disabled": "Välja lülitatud", "disabled": "Välja lülitatud",
@@ -566,10 +648,20 @@
"documentation": "Dokumentatsioon", "documentation": "Dokumentatsioon",
"done": "Tehtud", "done": "Tehtud",
"download": "Laadi alla", "download": "Laadi alla",
"download_canceled": "Allalaadimine katkestatud",
"download_complete": "Allalaadimine lõpetatud",
"download_enqueue": "Allalaadimine ootel",
"download_error": "Allalaadimise viga",
"download_failed": "Allalaadimine ebaõnnestus",
"download_finished": "Allalaadimine lõpetatud",
"download_include_embedded_motion_videos": "Manustatud videod", "download_include_embedded_motion_videos": "Manustatud videod",
"download_include_embedded_motion_videos_description": "Lisa liikuvatesse fotodesse manustatud videod eraldi failidena", "download_include_embedded_motion_videos_description": "Lisa liikuvatesse fotodesse manustatud videod eraldi failidena",
"download_paused": "Allalaadimine peatatud",
"download_settings": "Allalaadimine", "download_settings": "Allalaadimine",
"download_settings_description": "Halda üksuste allalaadimise seadeid", "download_settings_description": "Halda üksuste allalaadimise seadeid",
"download_started": "Allalaadimine alustatud",
"download_sucess": "Allalaadimine õnnestus",
"download_sucess_android": "Meediumid laaditi alla kataloogi DCIM/Immich",
"downloading": "Allalaadimine", "downloading": "Allalaadimine",
"downloading_asset_filename": "Üksuse {filename} allalaadimine", "downloading_asset_filename": "Üksuse {filename} allalaadimine",
"drop_files_to_upload": "Failide üleslaadimiseks sikuta need ükskõik kuhu", "drop_files_to_upload": "Failide üleslaadimiseks sikuta need ükskõik kuhu",
@@ -588,6 +680,7 @@
"edit_key": "Muuda võtit", "edit_key": "Muuda võtit",
"edit_link": "Muuda linki", "edit_link": "Muuda linki",
"edit_location": "Muuda asukohta", "edit_location": "Muuda asukohta",
"edit_location_dialog_title": "Asukoht",
"edit_name": "Muuda nime", "edit_name": "Muuda nime",
"edit_people": "Muuda isikuid", "edit_people": "Muuda isikuid",
"edit_tag": "Muuda silti", "edit_tag": "Muuda silti",
@@ -600,12 +693,15 @@
"editor_crop_tool_h2_aspect_ratios": "Kuvasuhted", "editor_crop_tool_h2_aspect_ratios": "Kuvasuhted",
"editor_crop_tool_h2_rotation": "Pööre", "editor_crop_tool_h2_rotation": "Pööre",
"email": "E-post", "email": "E-post",
"empty_folder": "See kaust on tühi",
"empty_trash": "Tühjenda prügikast", "empty_trash": "Tühjenda prügikast",
"empty_trash_confirmation": "Kas oled kindel, et soovid prügikasti tühjendada? See eemaldab kõik seal olevad üksused Immich'ist jäädavalt.\nSeda tegevust ei saa tagasi võtta!", "empty_trash_confirmation": "Kas oled kindel, et soovid prügikasti tühjendada? See eemaldab kõik seal olevad üksused Immich'ist jäädavalt.\nSeda tegevust ei saa tagasi võtta!",
"enable": "Luba", "enable": "Luba",
"enabled": "Lubatud", "enabled": "Lubatud",
"end_date": "Lõppkuupäev", "end_date": "Lõppkuupäev",
"enter_wifi_name": "Sisesta WiFi-võrgu nimi",
"error": "Viga", "error": "Viga",
"error_change_sort_album": "Albumi sorteerimisjärjestuse muutmine ebaõnnestus",
"error_delete_face": "Viga näo kustutamisel", "error_delete_face": "Viga näo kustutamisel",
"error_loading_image": "Viga pildi laadimisel", "error_loading_image": "Viga pildi laadimisel",
"error_title": "Viga - midagi läks valesti", "error_title": "Viga - midagi läks valesti",
@@ -736,8 +832,14 @@
"unable_to_upload_file": "Faili üleslaadimine ebaõnnestus" "unable_to_upload_file": "Faili üleslaadimine ebaõnnestus"
}, },
"exif": "Exif", "exif": "Exif",
"exif_bottom_sheet_description": "Lisa kirjeldus...",
"exif_bottom_sheet_details": "ÜKSIKASJAD",
"exif_bottom_sheet_location": "ASUKOHT",
"exif_bottom_sheet_people": "ISIKUD",
"exif_bottom_sheet_person_add_person": "Lisa nimi",
"exit_slideshow": "Sulge slaidiesitlus", "exit_slideshow": "Sulge slaidiesitlus",
"expand_all": "Näita kõik", "expand_all": "Näita kõik",
"experimental_settings_title": "Eksperimentaalne",
"expire_after": "Aegub", "expire_after": "Aegub",
"expired": "Aegunud", "expired": "Aegunud",
"expires_date": "Aegub {date}", "expires_date": "Aegub {date}",
@@ -748,6 +850,7 @@
"extension": "Laiend", "extension": "Laiend",
"external": "Väline", "external": "Väline",
"external_libraries": "Välised kogud", "external_libraries": "Välised kogud",
"external_network_sheet_info": "Kui seade ei ole eelistatud WiFi-võrgus, ühendub rakendus serveriga allolevatest URL-idest esimese kättesaadava kaudu, alustades ülevalt",
"face_unassigned": "Seostamata", "face_unassigned": "Seostamata",
"failed_to_load_assets": "Üksuste laadimine ebaõnnestus", "failed_to_load_assets": "Üksuste laadimine ebaõnnestus",
"favorite": "Lemmik", "favorite": "Lemmik",
@@ -763,6 +866,8 @@
"filter_people": "Filtreeri isikuid", "filter_people": "Filtreeri isikuid",
"find_them_fast": "Leia teda kiiresti nime järgi otsides", "find_them_fast": "Leia teda kiiresti nime järgi otsides",
"fix_incorrect_match": "Paranda ebaõige vaste", "fix_incorrect_match": "Paranda ebaõige vaste",
"folder": "Kaust",
"folder_not_found": "Kausta ei leitud",
"folders": "Kaustad", "folders": "Kaustad",
"folders_feature_description": "Kaustavaate abil failisüsteemis olevate fotode ja videote sirvimine", "folders_feature_description": "Kaustavaate abil failisüsteemis olevate fotode ja videote sirvimine",
"forward": "Edasi", "forward": "Edasi",
@@ -779,6 +884,10 @@
"group_places_by": "Grupeeri kohad...", "group_places_by": "Grupeeri kohad...",
"group_year": "Grupeeri aasta kaupa", "group_year": "Grupeeri aasta kaupa",
"has_quota": "On kvoot", "has_quota": "On kvoot",
"header_settings_add_header_tip": "Lisa päis",
"header_settings_field_validator_msg": "Väärtus ei saa olla tühi",
"header_settings_header_name_input": "Päise nimi",
"header_settings_header_value_input": "Päise väärtus",
"hi_user": "Tere {name} ({email})", "hi_user": "Tere {name} ({email})",
"hide_all_people": "Peida kõik isikud", "hide_all_people": "Peida kõik isikud",
"hide_gallery": "Peida galerii", "hide_gallery": "Peida galerii",
@@ -786,8 +895,20 @@
"hide_password": "Peida parool", "hide_password": "Peida parool",
"hide_person": "Peida isik", "hide_person": "Peida isik",
"hide_unnamed_people": "Peida nimetud isikud", "hide_unnamed_people": "Peida nimetud isikud",
"home_page_add_to_album_conflicts": "{added} üksust lisati albumisse {album}. {failed} üksust oli juba albumis.",
"home_page_add_to_album_err_local": "Lokaalseid üksuseid ei saa veel albumisse lisada, jätan vahele",
"home_page_add_to_album_success": "{added} üksust lisati albumisse {album}.",
"home_page_album_err_partner": "Partneri üksuseid ei saa veel albumisse lisada, jätan vahele",
"home_page_archive_err_local": "Lokaalseid üksuseid ei saa veel arhiveerida, jätan vahele",
"home_page_archive_err_partner": "Partneri üksuseid ei saa arhiveerida, jätan vahele",
"home_page_building_timeline": "Ajajoone koostamine",
"home_page_delete_err_partner": "Partneri üksuseid ei saa kustutada, jätan vahele",
"home_page_favorite_err_local": "Lokaalseid üksuseid ei saa lemmikuks märkida, jätan vahele",
"home_page_favorite_err_partner": "Partneri üksuseid ei saa lemmikuks märkida, jätan vahele",
"home_page_share_err_local": "Lokaalseid üksuseid ei saa lingiga jagada, jätan vahele",
"host": "Host", "host": "Host",
"hour": "Tund", "hour": "Tund",
"ignore_icloud_photos": "Ignoreeri iCloud fotosid",
"image": "Pilt", "image": "Pilt",
"image_alt_text_date": "{isVideo, select, true {Video} other {Pilt}} tehtud {date}", "image_alt_text_date": "{isVideo, select, true {Video} other {Pilt}} tehtud {date}",
"image_alt_text_date_1_person": "{isVideo, select, true {Video} other {Pilt}} tehtud {date} koos isikuga {person1}", "image_alt_text_date_1_person": "{isVideo, select, true {Video} other {Pilt}} tehtud {date} koos isikuga {person1}",
@@ -799,6 +920,8 @@
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Pilt}} tehtud {date} kohas {city}, {country} koos isikutega {person1} ja {person2}", "image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Pilt}} tehtud {date} kohas {city}, {country} koos isikutega {person1} ja {person2}",
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Pilt}} tehtud {date} kohas {city}, {country} koos isikutega {person1}, {person2} ja {person3}", "image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Pilt}} tehtud {date} kohas {city}, {country} koos isikutega {person1}, {person2} ja {person3}",
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Pilt}} tehtud {date} kohas {city}, {country} koos {person1}, {person2} ja veel {additionalCount, number} isikuga", "image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Pilt}} tehtud {date} kohas {city}, {country} koos {person1}, {person2} ja veel {additionalCount, number} isikuga",
"image_viewer_page_state_provider_download_started": "Allalaadimine alustatud",
"image_viewer_page_state_provider_download_success": "Allalaadimine õnnestus",
"immich_logo": "Immich'i logo", "immich_logo": "Immich'i logo",
"immich_web_interface": "Immich'i veebiliides", "immich_web_interface": "Immich'i veebiliides",
"import_from_json": "Impordi JSON-formaadist", "import_from_json": "Impordi JSON-formaadist",
@@ -817,6 +940,8 @@
"night_at_midnight": "Iga päev keskööl", "night_at_midnight": "Iga päev keskööl",
"night_at_twoam": "Iga öö kell 2" "night_at_twoam": "Iga öö kell 2"
}, },
"invalid_date": "Vigane kuupäev",
"invalid_date_format": "Vigane kuupäevaformaat",
"invite_people": "Kutsu inimesi", "invite_people": "Kutsu inimesi",
"invite_to_album": "Kutsu albumisse", "invite_to_album": "Kutsu albumisse",
"items_count": "{count, plural, one {# üksus} other {# üksust}}", "items_count": "{count, plural, one {# üksus} other {# üksust}}",
@@ -837,6 +962,9 @@
"level": "Tase", "level": "Tase",
"library": "Kogu", "library": "Kogu",
"library_options": "Kogu seaded", "library_options": "Kogu seaded",
"library_page_new_album": "Uus album",
"library_page_sort_asset_count": "Üksuste arv",
"library_page_sort_title": "Albumi pealkiri",
"light": "Hele", "light": "Hele",
"like_deleted": "Meeldimine kustutatud", "like_deleted": "Meeldimine kustutatud",
"link_motion_video": "Lingi liikuv video", "link_motion_video": "Lingi liikuv video",
@@ -846,12 +974,24 @@
"list": "Loend", "list": "Loend",
"loading": "Laadimine", "loading": "Laadimine",
"loading_search_results_failed": "Otsitulemuste laadimine ebaõnnestus", "loading_search_results_failed": "Otsitulemuste laadimine ebaõnnestus",
"local_network_sheet_info": "Rakendus ühendub valitud Wi-Fi võrgus olles serveriga selle URL-i kaudu",
"location_permission_content": "Automaatseks ümberlülitumiseks vajab Immich täpse asukoha luba, et saaks lugeda aktiivse WiFi-võrgu nime",
"location_picker_choose_on_map": "Vali kaardil",
"log_out": "Logi välja", "log_out": "Logi välja",
"log_out_all_devices": "Logi kõigist seadmetest välja", "log_out_all_devices": "Logi kõigist seadmetest välja",
"logged_out_all_devices": "Kõigist seadmetest välja logitud", "logged_out_all_devices": "Kõigist seadmetest välja logitud",
"logged_out_device": "Seadmest välja logitud", "logged_out_device": "Seadmest välja logitud",
"login": "Logi sisse", "login": "Logi sisse",
"login_form_back_button_text": "Tagasi",
"login_form_email_hint": "sinunimi@email.com",
"login_form_endpoint_hint": "http://serveri-ip:port",
"login_form_endpoint_url": "Serveri lõpp-punkti URL",
"login_form_err_http": "Palun täpsusta http:// või https://",
"login_form_err_invalid_email": "Vigane e-posti aadress",
"login_form_err_invalid_url": "Vigane URL",
"login_form_password_hint": "parool",
"login_has_been_disabled": "Sisselogimine on keelatud.", "login_has_been_disabled": "Sisselogimine on keelatud.",
"login_password_changed_success": "Parool edukalt uuendatud",
"logout_all_device_confirmation": "Kas oled kindel, et soovid kõigist seadmetest välja logida?", "logout_all_device_confirmation": "Kas oled kindel, et soovid kõigist seadmetest välja logida?",
"logout_this_device_confirmation": "Kas oled kindel, et soovid sellest seadmest välja logida?", "logout_this_device_confirmation": "Kas oled kindel, et soovid sellest seadmest välja logida?",
"longitude": "Pikkuskraad", "longitude": "Pikkuskraad",
@@ -859,6 +999,7 @@
"loop_videos": "Taasesita videod", "loop_videos": "Taasesita videod",
"loop_videos_description": "Lülita sisse, et detailvaates videot automaatselt taasesitada.", "loop_videos_description": "Lülita sisse, et detailvaates videot automaatselt taasesitada.",
"main_branch_warning": "Sa kasutad arendusversiooni; soovitame tungivalt kasutada väljalaskeversiooni!", "main_branch_warning": "Sa kasutad arendusversiooni; soovitame tungivalt kasutada väljalaskeversiooni!",
"main_menu": "Peamenüü",
"make": "Mark", "make": "Mark",
"manage_shared_links": "Halda jagatud linke", "manage_shared_links": "Halda jagatud linke",
"manage_sharing_with_partners": "Halda partneritega jagamist", "manage_sharing_with_partners": "Halda partneritega jagamist",
@@ -871,10 +1012,14 @@
"map_marker_for_images": "Kaardimarker kohas {city}, {country} tehtud piltide jaoks", "map_marker_for_images": "Kaardimarker kohas {city}, {country} tehtud piltide jaoks",
"map_marker_with_image": "Kaardimarker pildiga", "map_marker_with_image": "Kaardimarker pildiga",
"map_settings": "Kaardi seaded", "map_settings": "Kaardi seaded",
"map_settings_date_range_option_day": "Viimased 24 tundi",
"map_settings_date_range_option_year": "Viimane aasta",
"map_settings_dialog_title": "Kaardi seaded",
"matches": "Ühtivad failid", "matches": "Ühtivad failid",
"media_type": "Meedia tüüp", "media_type": "Meediumi tüüp",
"memories": "Mälestused", "memories": "Mälestused",
"memories_setting_description": "Halda, mida sa oma mälestustes näed", "memories_setting_description": "Halda, mida sa oma mälestustes näed",
"memories_year_ago": "Aasta tagasi",
"memory": "Mälestus", "memory": "Mälestus",
"memory_lane_title": "Mälestus {title}", "memory_lane_title": "Mälestus {title}",
"menu": "Menüü", "menu": "Menüü",
@@ -891,10 +1036,14 @@
"month": "Kuu", "month": "Kuu",
"more": "Rohkem", "more": "Rohkem",
"moved_to_trash": "Liigutatud prügikasti", "moved_to_trash": "Liigutatud prügikasti",
"multiselect_grid_edit_date_time_err_read_only": "Kirjutuskaitsega üksus(t)e kuupäeva ei saa muuta, jätan vahele",
"multiselect_grid_edit_gps_err_read_only": "Kirjutuskaitsega üksus(t)e asukohta ei saa muuta, jätan vahele",
"mute_memories": "Vaigista mälestused", "mute_memories": "Vaigista mälestused",
"my_albums": "Minu albumid", "my_albums": "Minu albumid",
"name": "Nimi", "name": "Nimi",
"name_or_nickname": "Nimi või hüüdnimi", "name_or_nickname": "Nimi või hüüdnimi",
"networking_settings": "Võrguühendus",
"networking_subtitle": "Halda serveri lõpp-punkti seadeid",
"never": "Mitte kunagi", "never": "Mitte kunagi",
"new_album": "Uus album", "new_album": "Uus album",
"new_api_key": "Uus API võti", "new_api_key": "Uus API võti",
@@ -923,7 +1072,6 @@
"no_shared_albums_message": "Lisa album, et fotosid ja videosid teistega jagada", "no_shared_albums_message": "Lisa album, et fotosid ja videosid teistega jagada",
"not_in_any_album": "Pole üheski albumis", "not_in_any_album": "Pole üheski albumis",
"note_apply_storage_label_to_previously_uploaded assets": "Märkus: Et rakendada talletussilt varem üleslaaditud üksustele, käivita", "note_apply_storage_label_to_previously_uploaded assets": "Märkus: Et rakendada talletussilt varem üleslaaditud üksustele, käivita",
"note_unlimited_quota": "Märkus: Piiramatu kvoodi jaoks sisesta 0",
"notes": "Märkused", "notes": "Märkused",
"notification_toggle_setting_description": "Luba e-posti teel teavitused", "notification_toggle_setting_description": "Luba e-posti teel teavitused",
"notifications": "Teavitused", "notifications": "Teavitused",
@@ -958,6 +1106,9 @@
"partner_can_access": "{partner} pääseb ligi", "partner_can_access": "{partner} pääseb ligi",
"partner_can_access_assets": "Kõik su fotod ja videod, välja arvatud arhiveeritud ja kustutatud", "partner_can_access_assets": "Kõik su fotod ja videod, välja arvatud arhiveeritud ja kustutatud",
"partner_can_access_location": "Asukohad, kus su fotod tehti", "partner_can_access_location": "Asukohad, kus su fotod tehti",
"partner_list_view_all": "Vaata kõiki",
"partner_page_partner_add_failed": "Partneri lisamine ebaõnnestus",
"partner_page_select_partner": "Vali partner",
"partner_sharing": "Partneriga jagamine", "partner_sharing": "Partneriga jagamine",
"partners": "Partnerid", "partners": "Partnerid",
"password": "Parool", "password": "Parool",
@@ -986,6 +1137,7 @@
"permanently_delete_assets_prompt": "Kas oled kindel, et soovid {count, plural, one {selle üksuse} other {need <b>#</b> üksust}} jäädavalt kustutada? Sellega eemaldatakse {count, plural, one {see} other {need}} ka oma albumi(te)st.", "permanently_delete_assets_prompt": "Kas oled kindel, et soovid {count, plural, one {selle üksuse} other {need <b>#</b> üksust}} jäädavalt kustutada? Sellega eemaldatakse {count, plural, one {see} other {need}} ka oma albumi(te)st.",
"permanently_deleted_asset": "Üksus jäädavalt kustutatud", "permanently_deleted_asset": "Üksus jäädavalt kustutatud",
"permanently_deleted_assets_count": "{count, plural, one {# üksus} other {# üksust}} jäädavalt kustutatud", "permanently_deleted_assets_count": "{count, plural, one {# üksus} other {# üksust}} jäädavalt kustutatud",
"permission_onboarding_back": "Tagasi",
"person": "Isik", "person": "Isik",
"person_birthdate": "Sündinud {date}", "person_birthdate": "Sündinud {date}",
"person_hidden": "{name}{hidden, select, true { (peidetud)} other {}}", "person_hidden": "{name}{hidden, select, true { (peidetud)} other {}}",
@@ -1003,6 +1155,7 @@
"play_motion_photo": "Esita liikuv foto", "play_motion_photo": "Esita liikuv foto",
"play_or_pause_video": "Esita või peata video", "play_or_pause_video": "Esita või peata video",
"port": "Port", "port": "Port",
"preferences_settings_title": "Eelistused",
"preset": "Eelseadistus", "preset": "Eelseadistus",
"preview": "Eelvaade", "preview": "Eelvaade",
"previous": "Eelmine", "previous": "Eelmine",
@@ -1010,6 +1163,8 @@
"previous_or_next_photo": "Eelmine või järgmine foto", "previous_or_next_photo": "Eelmine või järgmine foto",
"primary": "Peamine", "primary": "Peamine",
"privacy": "Privaatsus", "privacy": "Privaatsus",
"profile_drawer_app_logs": "Logid",
"profile_drawer_github": "GitHub",
"profile_image_of_user": "Kasutaja {user} profiilipilt", "profile_image_of_user": "Kasutaja {user} profiilipilt",
"profile_picture_set": "Profiilipilt määratud.", "profile_picture_set": "Profiilipilt määratud.",
"public_album": "Avalik album", "public_album": "Avalik album",
@@ -1059,6 +1214,8 @@
"recent": "Hiljutine", "recent": "Hiljutine",
"recent-albums": "Hiljutised albumid", "recent-albums": "Hiljutised albumid",
"recent_searches": "Hiljutised otsingud", "recent_searches": "Hiljutised otsingud",
"recently_added": "Hiljuti lisatud",
"recently_added_page_title": "Hiljuti lisatud",
"refresh": "Värskenda", "refresh": "Värskenda",
"refresh_encoded_videos": "Värskenda kodeeritud videod", "refresh_encoded_videos": "Värskenda kodeeritud videod",
"refresh_faces": "Värskenda näod", "refresh_faces": "Värskenda näod",
@@ -1115,6 +1272,7 @@
"role_editor": "Muutja", "role_editor": "Muutja",
"role_viewer": "Vaataja", "role_viewer": "Vaataja",
"save": "Salvesta", "save": "Salvesta",
"save_to_gallery": "Salvesta galeriisse",
"saved_api_key": "API võti salvestatud", "saved_api_key": "API võti salvestatud",
"saved_profile": "Profiil salvestatud", "saved_profile": "Profiil salvestatud",
"saved_settings": "Seaded salvestatud", "saved_settings": "Seaded salvestatud",
@@ -1134,14 +1292,32 @@
"search_camera_model": "Otsi kaamera mudelit...", "search_camera_model": "Otsi kaamera mudelit...",
"search_city": "Otsi linna...", "search_city": "Otsi linna...",
"search_country": "Otsi riiki...", "search_country": "Otsi riiki...",
"search_filter_camera_title": "Vali kaamera tüüp",
"search_filter_date": "Kuupäev",
"search_filter_date_interval": "{start} kuni {end}",
"search_filter_date_title": "Vali kuupäevavahemik",
"search_filter_display_options": "Kuva valikud",
"search_filter_filename": "Otsi failinime alusel",
"search_filter_location": "Asukoht",
"search_filter_location_title": "Vali asukoht",
"search_filter_media_type": "Meediumi tüüp",
"search_filter_media_type_title": "Vali meediumi tüüp",
"search_filter_people_title": "Vali isikud",
"search_for": "Otsi", "search_for": "Otsi",
"search_for_existing_person": "Otsi olemasolevat isikut", "search_for_existing_person": "Otsi olemasolevat isikut",
"search_no_people": "Isikuid ei ole", "search_no_people": "Isikuid ei ole",
"search_no_people_named": "Ei ole isikuid nimega \"{name}\"", "search_no_people_named": "Ei ole isikuid nimega \"{name}\"",
"search_options": "Otsingu valikud", "search_options": "Otsingu valikud",
"search_page_categories": "Kategooriad",
"search_page_screenshots": "Ekraanipildid",
"search_page_search_photos_videos": "Otsi oma fotosid ja videosid",
"search_page_selfies": "Selfid",
"search_page_things": "Asjad",
"search_page_view_all_button": "Vaata kõiki",
"search_people": "Otsi inimesi", "search_people": "Otsi inimesi",
"search_places": "Otsi kohti", "search_places": "Otsi kohti",
"search_rating": "Otsi hinnangu järgi...", "search_rating": "Otsi hinnangu järgi...",
"search_result_page_new_search_hint": "Uus otsing",
"search_settings": "Otsi seadeid", "search_settings": "Otsi seadeid",
"search_state": "Otsi osariiki...", "search_state": "Otsi osariiki...",
"search_tags": "Otsi silte...", "search_tags": "Otsi silte...",
@@ -1164,10 +1340,14 @@
"select_new_face": "Vali uus nägu", "select_new_face": "Vali uus nägu",
"select_photos": "Vali fotod", "select_photos": "Vali fotod",
"select_trash_all": "Vali kõik prügikasti", "select_trash_all": "Vali kõik prügikasti",
"select_user_for_sharing_page_err_album": "Albumi lisamine ebaõnnestus",
"selected": "Valitud", "selected": "Valitud",
"selected_count": "{count, plural, other {# valitud}}", "selected_count": "{count, plural, other {# valitud}}",
"send_message": "Saada sõnum", "send_message": "Saada sõnum",
"send_welcome_email": "Saada tervituskiri", "send_welcome_email": "Saada tervituskiri",
"server_endpoint": "Serveri lõpp-punkt",
"server_info_box_app_version": "Rakenduse versioon",
"server_info_box_server_url": "Serveri URL",
"server_offline": "Serveriga ühendus puudub", "server_offline": "Serveriga ühendus puudub",
"server_online": "Server ühendatud", "server_online": "Server ühendatud",
"server_stats": "Serveri statistika", "server_stats": "Serveri statistika",
@@ -1179,22 +1359,42 @@
"set_date_of_birth": "Määra sünnikuupäev", "set_date_of_birth": "Määra sünnikuupäev",
"set_profile_picture": "Sea profiilipilt", "set_profile_picture": "Sea profiilipilt",
"set_slideshow_to_fullscreen": "Kuva slaidiesitlus täisekraanil", "set_slideshow_to_fullscreen": "Kuva slaidiesitlus täisekraanil",
"setting_languages_apply": "Rakenda",
"setting_languages_title": "Keeled",
"setting_notifications_notify_immediately": "kohe",
"setting_notifications_notify_never": "mitte kunagi",
"settings": "Seaded", "settings": "Seaded",
"settings_saved": "Seaded salvestatud", "settings_saved": "Seaded salvestatud",
"share": "Jaga", "share": "Jaga",
"shared": "Jagatud", "shared": "Jagatud",
"shared_album_section_people_action_error": "Viga albumist eemaldamisel/lahkumisel",
"shared_album_section_people_action_leave": "Eemalda kasutaja albumist",
"shared_album_section_people_action_remove_user": "Eemalda kasutaja albumist",
"shared_album_section_people_title": "ISIKUD",
"shared_by": "Jagas", "shared_by": "Jagas",
"shared_by_user": "Jagas {user}", "shared_by_user": "Jagas {user}",
"shared_by_you": "Jagasid sina", "shared_by_you": "Jagasid sina",
"shared_from_partner": "Fotod partnerilt {partner}", "shared_from_partner": "Fotod partnerilt {partner}",
"shared_link_app_bar_title": "Jagatud lingid",
"shared_link_clipboard_copied_massage": "Kopeeritud lõikelauale",
"shared_link_create_error": "Viga jagatud lingi loomisel",
"shared_link_edit_expire_after_option_day": "1 päev",
"shared_link_edit_expire_after_option_hour": "1 tund",
"shared_link_edit_expire_after_option_minute": "1 minut",
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Halda jagatud linke",
"shared_link_options": "Jagatud lingi valikud", "shared_link_options": "Jagatud lingi valikud",
"shared_links": "Jagatud lingid", "shared_links": "Jagatud lingid",
"shared_links_description": "Jaga fotosid ja videosid lingiga", "shared_links_description": "Jaga fotosid ja videosid lingiga",
"shared_photos_and_videos_count": "{assetCount, plural, other {# jagatud fotot ja videot.}}", "shared_photos_and_videos_count": "{assetCount, plural, other {# jagatud fotot ja videot.}}",
"shared_with_me": "Minuga jagatud",
"shared_with_partner": "Jagatud partneriga {partner}", "shared_with_partner": "Jagatud partneriga {partner}",
"sharing": "Jagamine", "sharing": "Jagamine",
"sharing_enter_password": "Palun sisesta selle lehe vaatamiseks salasõna.", "sharing_enter_password": "Palun sisesta selle lehe vaatamiseks salasõna.",
"sharing_page_album": "Jagatud albumid",
"sharing_sidebar_description": "Kuva külgmenüüs Jagamise linki", "sharing_sidebar_description": "Kuva külgmenüüs Jagamise linki",
"sharing_silver_appbar_create_shared_album": "Uus jagatud album",
"sharing_silver_appbar_share_partner": "Jaga partneriga",
"shift_to_permanent_delete": "vajuta ⇧, et üksus jäädavalt kustutada", "shift_to_permanent_delete": "vajuta ⇧, et üksus jäädavalt kustutada",
"show_album_options": "Näita albumi valikuid", "show_album_options": "Näita albumi valikuid",
"show_albums": "Näita albumeid", "show_albums": "Näita albumeid",
@@ -1261,6 +1461,7 @@
"support_third_party_description": "Sinu Immich'i install on kolmanda osapoole pakendatud. Probleemid, mida täheldad, võivad olla põhjustatud selle pakendamise poolt, seega võta esmajärjekorras nendega ühendust, kasutades allolevaid linke.", "support_third_party_description": "Sinu Immich'i install on kolmanda osapoole pakendatud. Probleemid, mida täheldad, võivad olla põhjustatud selle pakendamise poolt, seega võta esmajärjekorras nendega ühendust, kasutades allolevaid linke.",
"swap_merge_direction": "Muuda ühendamise suunda", "swap_merge_direction": "Muuda ühendamise suunda",
"sync": "Sünkrooni", "sync": "Sünkrooni",
"sync_albums": "Sünkrooni albumid",
"tag": "Silt", "tag": "Silt",
"tag_assets": "Sildista üksuseid", "tag_assets": "Sildista üksuseid",
"tag_created": "Lisatud silt: {tag}", "tag_created": "Lisatud silt: {tag}",
@@ -1274,6 +1475,9 @@
"theme": "Teema", "theme": "Teema",
"theme_selection": "Teema valik", "theme_selection": "Teema valik",
"theme_selection_description": "Sea automaatselt hele või tume teema vastavalt veebilehitseja eelistustele", "theme_selection_description": "Sea automaatselt hele või tume teema vastavalt veebilehitseja eelistustele",
"theme_setting_primary_color_title": "Põhivärv",
"theme_setting_system_primary_color_title": "Kasuta süsteemset värvi",
"theme_setting_system_theme_switch": "Automaatne (järgi süsteemi seadet)",
"they_will_be_merged_together": "Nad ühendatakse kokku", "they_will_be_merged_together": "Nad ühendatakse kokku",
"third_party_resources": "Kolmanda osapoole ressursid", "third_party_resources": "Kolmanda osapoole ressursid",
"time_based_memories": "Ajapõhised mälestused", "time_based_memories": "Ajapõhised mälestused",
@@ -1294,6 +1498,9 @@
"trash_count": "Liiguta {count, number} prügikasti", "trash_count": "Liiguta {count, number} prügikasti",
"trash_delete_asset": "Kustuta üksus", "trash_delete_asset": "Kustuta üksus",
"trash_no_results_message": "Siia ilmuvad prügikasti liigutatud fotod ja videod.", "trash_no_results_message": "Siia ilmuvad prügikasti liigutatud fotod ja videod.",
"trash_page_delete_all": "Kustuta kõik",
"trash_page_restore_all": "Taasta kõik",
"trash_page_select_assets_btn": "Vali üksused",
"trashed_items_will_be_permanently_deleted_after": "Prügikasti tõstetud üksused kustutatakse jäädavalt {days, plural, one {# päeva} other {# päeva}} pärast.", "trashed_items_will_be_permanently_deleted_after": "Prügikasti tõstetud üksused kustutatakse jäädavalt {days, plural, one {# päeva} other {# päeva}} pärast.",
"type": "Tüüp", "type": "Tüüp",
"unarchive": "Taasta arhiivist", "unarchive": "Taasta arhiivist",
@@ -1329,6 +1536,7 @@
"upload_status_errors": "Vead", "upload_status_errors": "Vead",
"upload_status_uploaded": "Üleslaaditud", "upload_status_uploaded": "Üleslaaditud",
"upload_success": "Üleslaadimine õnnestus, uute üksuste nägemiseks värskenda lehte.", "upload_success": "Üleslaadimine õnnestus, uute üksuste nägemiseks värskenda lehte.",
"uploading": "Üleslaadimine",
"url": "URL", "url": "URL",
"usage": "Kasutus", "usage": "Kasutus",
"use_custom_date_range": "Kasuta kohandatud kuupäevavahemikku", "use_custom_date_range": "Kasuta kohandatud kuupäevavahemikku",
@@ -1366,16 +1574,21 @@
"view_name": "Vaade", "view_name": "Vaade",
"view_next_asset": "Vaata järgmist üksust", "view_next_asset": "Vaata järgmist üksust",
"view_previous_asset": "Vaata eelmist üksust", "view_previous_asset": "Vaata eelmist üksust",
"view_qr_code": "Vaata QR-koodi",
"view_stack": "Vaata virna", "view_stack": "Vaata virna",
"viewer_remove_from_stack": "Eemalda virnast",
"viewer_unstack": "Eralda",
"visibility_changed": "{count, plural, one {# isiku} other {# isiku}} nähtavus muudetud", "visibility_changed": "{count, plural, one {# isiku} other {# isiku}} nähtavus muudetud",
"waiting": "Ootel", "waiting": "Ootel",
"warning": "Hoiatus", "warning": "Hoiatus",
"week": "Nädal", "week": "Nädal",
"welcome": "Tere tulemast", "welcome": "Tere tulemast",
"welcome_to_immich": "Tere tulemast Immich'isse", "welcome_to_immich": "Tere tulemast Immich'isse",
"wifi_name": "WiFi-võrgu nimi",
"year": "Aasta", "year": "Aasta",
"years_ago": "{years, plural, one {# aasta} other {# aastat}} tagasi", "years_ago": "{years, plural, one {# aasta} other {# aastat}} tagasi",
"yes": "Jah", "yes": "Jah",
"you_dont_have_any_shared_links": "Sul pole ühtegi jagatud linki", "you_dont_have_any_shared_links": "Sul pole ühtegi jagatud linki",
"your_wifi_name": "Sinu WiFi-võrgu nimi",
"zoom_image": "Suumi pilti" "zoom_image": "Suumi pilti"
} }

View File

@@ -132,7 +132,6 @@
"no_pattern_added": "هیچ الگوی اضافه نشده", "no_pattern_added": "هیچ الگوی اضافه نشده",
"note_apply_storage_label_previous_assets": "توجه: برای اعمال برچسب ذخیره سازی به دارایی هایی که قبلاً بارگذاری شده اند، دستور زیر را اجرا کنید", "note_apply_storage_label_previous_assets": "توجه: برای اعمال برچسب ذخیره سازی به دارایی هایی که قبلاً بارگذاری شده اند، دستور زیر را اجرا کنید",
"note_cannot_be_changed_later": "توجه: این را نمی توان بعداً تغییر داد!", "note_cannot_be_changed_later": "توجه: این را نمی توان بعداً تغییر داد!",
"note_unlimited_quota": "توجه: برای سهمیه نامحدود، عدد 0 را وارد کنید",
"notification_email_from_address": "آدرس فرستنده", "notification_email_from_address": "آدرس فرستنده",
"notification_email_from_address_description": "آدرس ایمیل فرستنده، به عنوان مثال:\"Immich سرور عکس <noreply@example.com>\"", "notification_email_from_address_description": "آدرس ایمیل فرستنده، به عنوان مثال:\"Immich سرور عکس <noreply@example.com>\"",
"notification_email_host_description": "میزبان سرور ایمیل (مثلاً smtp.immich.app)", "notification_email_host_description": "میزبان سرور ایمیل (مثلاً smtp.immich.app)",
@@ -664,7 +663,6 @@
"no_shared_albums_message": "", "no_shared_albums_message": "",
"not_in_any_album": "در هیچ آلبومی نیست", "not_in_any_album": "در هیچ آلبومی نیست",
"note_apply_storage_label_to_previously_uploaded assets": "", "note_apply_storage_label_to_previously_uploaded assets": "",
"note_unlimited_quota": "",
"notes": "یادداشت‌ها", "notes": "یادداشت‌ها",
"notification_toggle_setting_description": "اعلان‌های ایمیلی را فعال کنید", "notification_toggle_setting_description": "اعلان‌های ایمیلی را فعال کنید",
"notifications": "اعلان‌ها", "notifications": "اعلان‌ها",

View File

@@ -4,6 +4,7 @@
"account_settings": "Tilin asetukset", "account_settings": "Tilin asetukset",
"acknowledge": "Tiedostan", "acknowledge": "Tiedostan",
"action": "Toiminta", "action": "Toiminta",
"action_common_update": "Päivitä",
"actions": "Toimintoja", "actions": "Toimintoja",
"active": "Aktiivinen", "active": "Aktiivinen",
"activity": "Aktiviteetti", "activity": "Aktiviteetti",
@@ -13,6 +14,7 @@
"add_a_location": "Lisää sijainti", "add_a_location": "Lisää sijainti",
"add_a_name": "Lisää nimi", "add_a_name": "Lisää nimi",
"add_a_title": "Lisää otsikko", "add_a_title": "Lisää otsikko",
"add_endpoint": "Add endpoint",
"add_exclusion_pattern": "Lisää poissulkemismalli", "add_exclusion_pattern": "Lisää poissulkemismalli",
"add_import_path": "Lisää tuontipolku", "add_import_path": "Lisää tuontipolku",
"add_location": "Lisää sijainti", "add_location": "Lisää sijainti",
@@ -22,6 +24,8 @@
"add_photos": "Lisää kuvia", "add_photos": "Lisää kuvia",
"add_to": "Lisää…", "add_to": "Lisää…",
"add_to_album": "Lisää albumiin", "add_to_album": "Lisää albumiin",
"add_to_album_bottom_sheet_added": "Lisätty albumiin {album}",
"add_to_album_bottom_sheet_already_exists": "Kohde on jo albumissa {album}",
"add_to_shared_album": "Lisää jaettuun albumiin", "add_to_shared_album": "Lisää jaettuun albumiin",
"add_url": "Lisää URL", "add_url": "Lisää URL",
"added_to_archive": "Arkistoitu", "added_to_archive": "Arkistoitu",
@@ -159,7 +163,6 @@
"no_pattern_added": "Kaavoja ei lisättynä", "no_pattern_added": "Kaavoja ei lisättynä",
"note_apply_storage_label_previous_assets": "Huom: Asettaaksesi nimikkeen aiemmin ladatulle aineistolle, aja", "note_apply_storage_label_previous_assets": "Huom: Asettaaksesi nimikkeen aiemmin ladatulle aineistolle, aja",
"note_cannot_be_changed_later": "Huom: Tätä ei voi enää myöhemmin vaihtaa!", "note_cannot_be_changed_later": "Huom: Tätä ei voi enää myöhemmin vaihtaa!",
"note_unlimited_quota": "Huom: Määritä 0 rajoittamattomaksi kiintiöksi",
"notification_email_from_address": "Lähettäjän osoite", "notification_email_from_address": "Lähettäjän osoite",
"notification_email_from_address_description": "Lähettäjän sähköpostiosoite. Esimerkiksi \"Immich-kuvapalvelin <noreply@example.com>\"", "notification_email_from_address_description": "Lähettäjän sähköpostiosoite. Esimerkiksi \"Immich-kuvapalvelin <noreply@example.com>\"",
"notification_email_host_description": "Sähköpostipalvelin (esim. smtp.immich.app)", "notification_email_host_description": "Sähköpostipalvelin (esim. smtp.immich.app)",
@@ -219,7 +222,7 @@
"reset_settings_to_default": "Nollaa asetukset oletuksille", "reset_settings_to_default": "Nollaa asetukset oletuksille",
"reset_settings_to_recent_saved": "Palauta aiemmin tallennetut asetukset", "reset_settings_to_recent_saved": "Palauta aiemmin tallennetut asetukset",
"scanning_library": "Kirjastoa skannataan", "scanning_library": "Kirjastoa skannataan",
"search_jobs": "Etsi tehtäviä...", "search_jobs": "Etsi tehtäviä",
"send_welcome_email": "Lähetä tervetuloviesti", "send_welcome_email": "Lähetä tervetuloviesti",
"server_external_domain_settings": "Ulkoinen osoite", "server_external_domain_settings": "Ulkoinen osoite",
"server_external_domain_settings_description": "Osoite julkisille linkeille, http(s):// mukaan lukien", "server_external_domain_settings_description": "Osoite julkisille linkeille, http(s):// mukaan lukien",
@@ -360,6 +363,16 @@
"admin_password": "Ylläpitäjän salasana", "admin_password": "Ylläpitäjän salasana",
"administration": "Ylläpito", "administration": "Ylläpito",
"advanced": "Edistyneet", "advanced": "Edistyneet",
"advanced_settings_log_level_title": "Lokitaso: {}",
"advanced_settings_prefer_remote_subtitle": "Jotkut laitteet ovat erittäin hitaita lataamaan esikatselukuvia laitteen kohteista. Aktivoi tämä asetus käyttääksesi etäkuvia.",
"advanced_settings_prefer_remote_title": "Suosi etäkuvia",
"advanced_settings_proxy_headers_subtitle": "Define proxy headers Immich should send with each network request",
"advanced_settings_proxy_headers_title": "Proxy Headers",
"advanced_settings_self_signed_ssl_subtitle": "Ohita SSL sertifikaattivarmennus palvelimen päätepisteellä. Vaaditaan self-signed -sertifikaateissa.",
"advanced_settings_self_signed_ssl_title": "Salli self-signed SSL -sertifikaatit",
"advanced_settings_tile_subtitle": "Edistyneen käyttäjän asetukset",
"advanced_settings_troubleshooting_subtitle": "Ota vianetsinnän lisäominaisuudet käyttöön",
"advanced_settings_troubleshooting_title": "Vianetsintä",
"age_months": "Ikä {months, plural, one {# kuukausi} other {# kuukautta}}", "age_months": "Ikä {months, plural, one {# kuukausi} other {# kuukautta}}",
"age_year_months": "Ikä 1 vuosi, {months, plural, one {# kuukausi} other {# kuukautta}}", "age_year_months": "Ikä 1 vuosi, {months, plural, one {# kuukausi} other {# kuukautta}}",
"age_years": "{years, plural, other {Ikä #v}}", "age_years": "{years, plural, other {Ikä #v}}",
@@ -368,6 +381,8 @@
"album_cover_updated": "Albumin kansikuva päivitetty", "album_cover_updated": "Albumin kansikuva päivitetty",
"album_delete_confirmation": "Haluatko varmasti poistaa albumin {album}?", "album_delete_confirmation": "Haluatko varmasti poistaa albumin {album}?",
"album_delete_confirmation_description": "Jos albumi on jaettu, muut eivät pääse siihen enää.", "album_delete_confirmation_description": "Jos albumi on jaettu, muut eivät pääse siihen enää.",
"album_info_card_backup_album_excluded": "JÄTETTY POIS",
"album_info_card_backup_album_included": "SISÄLLYTETTY",
"album_info_updated": "Albumin tiedot päivitetty", "album_info_updated": "Albumin tiedot päivitetty",
"album_leave": "Poistu albumista?", "album_leave": "Poistu albumista?",
"album_leave_confirmation": "Haluatko varmasti poistua albumista {album}?", "album_leave_confirmation": "Haluatko varmasti poistua albumista {album}?",
@@ -376,10 +391,22 @@
"album_remove_user": "Poista käyttäjä?", "album_remove_user": "Poista käyttäjä?",
"album_remove_user_confirmation": "Oletko varma että haluat poistaa {user}?", "album_remove_user_confirmation": "Oletko varma että haluat poistaa {user}?",
"album_share_no_users": "Näyttää että olet jakanut tämän albumin kaikkien kanssa, tai sinulla ei ole käyttäjiä joille jakaa.", "album_share_no_users": "Näyttää että olet jakanut tämän albumin kaikkien kanssa, tai sinulla ei ole käyttäjiä joille jakaa.",
"album_thumbnail_card_item": "1 kohde",
"album_thumbnail_card_items": "{} kohdetta",
"album_thumbnail_card_shared": "Jaettu",
"album_thumbnail_shared_by": "Jakanut {}",
"album_updated": "Albumi päivitetty", "album_updated": "Albumi päivitetty",
"album_updated_setting_description": "Saa sähköpostia kun jaetussa albumissa on uutta sisältöä", "album_updated_setting_description": "Saa sähköpostia kun jaetussa albumissa on uutta sisältöä",
"album_user_left": "Poistuttiin albumista {album}", "album_user_left": "Poistuttiin albumista {album}",
"album_user_removed": "{user} poistettu", "album_user_removed": "{user} poistettu",
"album_viewer_appbar_delete_confirm": "Haluatko varmast poistaa tämän albumin tililtäsi?",
"album_viewer_appbar_share_err_delete": "Albumin poistaminen epäonnistui",
"album_viewer_appbar_share_err_leave": "Albumista poistuminen epäonnistui",
"album_viewer_appbar_share_err_remove": "Ongelmia kohteiden poistamisessa albumista",
"album_viewer_appbar_share_err_title": "Albumin nimen muuttaminen epäonnistui",
"album_viewer_appbar_share_leave": "Poistu albumista",
"album_viewer_appbar_share_to": "Jaa",
"album_viewer_page_share_add_users": "Lisää käyttäjiä",
"album_with_link_access": "Anna kenen tahansa nähdä linkin kautta tämän albumin valokuvat ja henkilöt.", "album_with_link_access": "Anna kenen tahansa nähdä linkin kautta tämän albumin valokuvat ja henkilöt.",
"albums": "Albumit", "albums": "Albumit",
"albums_count": "{count, plural, one {{count, number} albumi} other {{count, number} albumia}}", "albums_count": "{count, plural, one {{count, number} albumi} other {{count, number} albumia}}",
@@ -396,42 +423,133 @@
"api_key_description": "Tämä arvo näytetään vain kerran. Varmista, että olet kopioinut sen ennen kuin suljet ikkunan.", "api_key_description": "Tämä arvo näytetään vain kerran. Varmista, että olet kopioinut sen ennen kuin suljet ikkunan.",
"api_key_empty": "API-avaimesi ei pitäisi olla tyhjä", "api_key_empty": "API-avaimesi ei pitäisi olla tyhjä",
"api_keys": "API-avaimet", "api_keys": "API-avaimet",
"app_bar_signout_dialog_content": "Haluatko varmasti kirjautua ulos?",
"app_bar_signout_dialog_ok": "Kyllä",
"app_bar_signout_dialog_title": "Kirjaudu ulos",
"app_settings": "Sovellusasetukset", "app_settings": "Sovellusasetukset",
"appears_in": "Esiintyy albumeissa", "appears_in": "Esiintyy albumeissa",
"archive": "Arkisto", "archive": "Arkisto",
"archive_or_unarchive_photo": "Arkistoi kuva tai palauta arkistosta", "archive_or_unarchive_photo": "Arkistoi kuva tai palauta arkistosta",
"archive_page_no_archived_assets": "Arkistoituja kohteita ei löytynyt",
"archive_page_title": "Arkisto ({})",
"archive_size": "Arkiston koko", "archive_size": "Arkiston koko",
"archive_size_description": "Määritä arkiston koko latauksissa (Gt)", "archive_size_description": "Määritä arkiston koko latauksissa (Gt)",
"archived": "Archived",
"archived_count": "{count, plural, other {Arkistoitu #}}", "archived_count": "{count, plural, other {Arkistoitu #}}",
"are_these_the_same_person": "Ovatko he sama henkilö?", "are_these_the_same_person": "Ovatko he sama henkilö?",
"are_you_sure_to_do_this": "Haluatko varmasti tehdä tämän?", "are_you_sure_to_do_this": "Haluatko varmasti tehdä tämän?",
"asset_action_delete_err_read_only": "Vain luku-tilassa olevia kohteita ei voitu poistaa, ohitetaan",
"asset_action_share_err_offline": "Verkottomassa tilassa olevia kohteita ei voitu noutaa, ohitetaan",
"asset_added_to_album": "Lisätty albumiin", "asset_added_to_album": "Lisätty albumiin",
"asset_adding_to_album": "Lisätään albumiin...", "asset_adding_to_album": "Lisätään albumiin",
"asset_description_updated": "Kohteen kuvaus on päivitetty", "asset_description_updated": "Kohteen kuvaus on päivitetty",
"asset_filename_is_offline": "Kohde {filename} on offline-tilassa", "asset_filename_is_offline": "Kohde {filename} on offline-tilassa",
"asset_has_unassigned_faces": "Kohteella on määrittämättömiä kasvoja", "asset_has_unassigned_faces": "Kohteella on määrittämättömiä kasvoja",
"asset_hashing": "Hajautetaan...", "asset_hashing": "Hajautetaan",
"asset_list_group_by_sub_title": "Ryhmittele",
"asset_list_layout_settings_dynamic_layout_title": "Dynaaminen asetelma",
"asset_list_layout_settings_group_automatically": "Automaattisesti",
"asset_list_layout_settings_group_by": "Ryhmittele",
"asset_list_layout_settings_group_by_month_day": "Kuukauden ja päivän mukaan",
"asset_list_layout_sub_title": "Asettelu",
"asset_list_settings_subtitle": "Kuvaruudukon asettelu",
"asset_list_settings_title": "Kuvaruudukko",
"asset_offline": "Aineisto offline-tilassa", "asset_offline": "Aineisto offline-tilassa",
"asset_offline_description": "Tätä ulkoista resurssia ei enää löydy levyltä. Ole hyvä ja ota yhteyttä Immich-järjestelmänvalvojaan saadaksesi apua.", "asset_offline_description": "Tätä ulkoista resurssia ei enää löydy levyltä. Ole hyvä ja ota yhteyttä Immich-järjestelmänvalvojaan saadaksesi apua.",
"asset_restored_successfully": "Asset restored successfully",
"asset_skipped": "Ohitettu", "asset_skipped": "Ohitettu",
"asset_skipped_in_trash": "Roskakorissa", "asset_skipped_in_trash": "Roskakorissa",
"asset_uploaded": "Lähetetty", "asset_uploaded": "Lähetetty",
"asset_uploading": "Lähetetään…", "asset_uploading": "Lähetetään…",
"asset_viewer_settings_subtitle": "Manage your gallery viewer settings",
"asset_viewer_settings_title": "Katselin",
"assets": "kohdetta", "assets": "kohdetta",
"assets_added_count": "Lisätty {count, plural, one {# kohde} other {# kohdetta}}", "assets_added_count": "Lisätty {count, plural, one {# kohde} other {# kohdetta}}",
"assets_added_to_album_count": "Albumiin lisätty {count, plural, one {# kohde} other {# kohdetta}}", "assets_added_to_album_count": "Albumiin lisätty {count, plural, one {# kohde} other {# kohdetta}}",
"assets_added_to_name_count": "Lisätty {count, plural, one {# kohde} other {# kohdetta}} {hasName, select, true {<b>{name}</b>} other {uuteen albumiin}}", "assets_added_to_name_count": "Lisätty {count, plural, one {# kohde} other {# kohdetta}} {hasName, select, true {<b>{name}</b>} other {uuteen albumiin}}",
"assets_count": "{count, plural, one {# media} other {# mediaa}}", "assets_count": "{count, plural, one {# media} other {# mediaa}}",
"assets_deleted_permanently": "{} asset(s) deleted permanently",
"assets_deleted_permanently_from_server": "{} asset(s) deleted permanently from the Immich server",
"assets_moved_to_trash_count": "Siirretty {count, plural, one {# media} other {# mediaa}} roskakoriin", "assets_moved_to_trash_count": "Siirretty {count, plural, one {# media} other {# mediaa}} roskakoriin",
"assets_permanently_deleted_count": "{count, plural, one {# media} other {# mediaa}} poistettu pysyvästi", "assets_permanently_deleted_count": "{count, plural, one {# media} other {# mediaa}} poistettu pysyvästi",
"assets_removed_count": "{count, plural, one {# media} other {# mediaa}} poistettu", "assets_removed_count": "{count, plural, one {# media} other {# mediaa}} poistettu",
"assets_removed_permanently_from_device": "{} asset(s) removed permanently from your device",
"assets_restore_confirmation": "Haluatko varmasti palauttaa kaikki roskakoriisi siirretyt resurssit? Tätä toimintoa ei voi peruuttaa! Huomaa, että offline-resursseja ei voida palauttaa tällä tavalla.", "assets_restore_confirmation": "Haluatko varmasti palauttaa kaikki roskakoriisi siirretyt resurssit? Tätä toimintoa ei voi peruuttaa! Huomaa, että offline-resursseja ei voida palauttaa tällä tavalla.",
"assets_restored_count": "{count, plural, one {# media} other {# mediaa}} palautettu", "assets_restored_count": "{count, plural, one {# media} other {# mediaa}} palautettu",
"assets_restored_successfully": "{} asset(s) restored successfully",
"assets_trashed": "{} asset(s) trashed",
"assets_trashed_count": "{count, plural, one {# media} other {# mediaa}} siirretty roskakoriin", "assets_trashed_count": "{count, plural, one {# media} other {# mediaa}} siirretty roskakoriin",
"assets_trashed_from_server": "{} asset(s) trashed from the Immich server",
"assets_were_part_of_album_count": "{count, plural, one {Media oli} other {Mediat olivat}} jo albumissa", "assets_were_part_of_album_count": "{count, plural, one {Media oli} other {Mediat olivat}} jo albumissa",
"authorized_devices": "Valtuutetut laitteet", "authorized_devices": "Valtuutetut laitteet",
"automatic_endpoint_switching_subtitle": "Connect locally over designated Wi-Fi when available and use alternative connections elsewhere",
"automatic_endpoint_switching_title": "Automatic URL switching",
"back": "Takaisin", "back": "Takaisin",
"back_close_deselect": "Palaa, sulje tai poista valinnat", "back_close_deselect": "Palaa, sulje tai poista valinnat",
"background_location_permission": "Background location permission",
"background_location_permission_content": "In order to switch networks when running in the background, Immich must *always* have precise location access so the app can read the Wi-Fi network's name",
"backup_album_selection_page_albums_device": "Laitteen albumit ({})",
"backup_album_selection_page_albums_tap": "Napauta sisällyttääksesi, kaksoisnapauta jättääksesi pois",
"backup_album_selection_page_assets_scatter": "Kohteet voivat olla hajaantuneina useisiin albumeihin. Albumeita voidaan sisällyttää varmuuskopiointiin tai jättää siitä pois.",
"backup_album_selection_page_select_albums": "Valitse albumit",
"backup_album_selection_page_selection_info": "Valintatiedot",
"backup_album_selection_page_total_assets": "Uniikkeja kohteita yhteensä",
"backup_all": "Kaikki",
"backup_background_service_backup_failed_message": "Kohteiden varmuuskopiointi epäonnistui. Yritetään uudelleen...",
"backup_background_service_connection_failed_message": "Palvelimeen ei saatu yhteyttä. Yritetään uudelleen...",
"backup_background_service_current_upload_notification": "Lähetetään {}",
"backup_background_service_default_notification": "Tarkistetaan uusia kohteita...",
"backup_background_service_error_title": "Virhe varmuuskopioinnissa",
"backup_background_service_in_progress_notification": "Varmuuskopioidaan kohteita...",
"backup_background_service_upload_failure_notification": "Lähetys palvelimelle epäonnistui {}",
"backup_controller_page_albums": "Varmuuskopioi albumit",
"backup_controller_page_background_app_refresh_disabled_content": "Salli sovelluksen päivittäminen taustalla suorittaaksesi varmuuskopiointia taustalla: Asetukset > Yleiset > Appien päivitys taustalla",
"backup_controller_page_background_app_refresh_disabled_title": "Sovelluksen päivittäminen taustalla on pois päältä",
"backup_controller_page_background_app_refresh_enable_button_text": "Siirry asetuksiin",
"backup_controller_page_background_battery_info_link": "Näytä minulle miten",
"backup_controller_page_background_battery_info_message": "Kytke pois päältä kaikki Immichin taustatyöskentelyyn liittyvät akun optimoinnit, jotta varmistat taustavarmuuskopioinnin parhaan mahdollisen toiminnan.\n\nKoska tämä on laitekohtaista, tarkista tarvittavat toimet laitevalmistajan ohjeista.",
"backup_controller_page_background_battery_info_ok": "OK",
"backup_controller_page_background_battery_info_title": "Akun optimointi",
"backup_controller_page_background_charging": "Vain laitteen ollessa kytkettynä laturiin",
"backup_controller_page_background_configure_error": "Taustapalvelun asettaminen epäonnistui",
"backup_controller_page_background_delay": "Viivästytä uusien kohteiden varmuuskopiointia: {}",
"backup_controller_page_background_description": "Kytke taustapalvelu päälle varmuuskopioidaksesi uudet kohteet automaattisesti, ilman sovelluksen avaamista",
"backup_controller_page_background_is_off": "Automaattinen varmuuskopiointi taustalla on pois päältä",
"backup_controller_page_background_is_on": "Automaattinen varmuuskopiointi taustalla on päällä",
"backup_controller_page_background_turn_off": "Kytke taustapalvelu pois päältä",
"backup_controller_page_background_turn_on": "Kytke taustapalvelu päälle",
"backup_controller_page_background_wifi": "Vain WiFi-verkossa",
"backup_controller_page_backup": "Varmuuskopiointi",
"backup_controller_page_backup_selected": "Valittu: ",
"backup_controller_page_backup_sub": "Varmuuskopioidut kuvat ja videot",
"backup_controller_page_created": "Luotu: {}",
"backup_controller_page_desc_backup": "Kytke varmuuskopiointi päälle lähettääksesi uudet kohteet palvelimelle automaattisesti.",
"backup_controller_page_excluded": "Jätetty pois: ",
"backup_controller_page_failed": "Epäonnistui ({})",
"backup_controller_page_filename": "Tiedoston nimi: {} [{}]",
"backup_controller_page_id": "ID: {}",
"backup_controller_page_info": "Varmuuskopioinnin tiedot",
"backup_controller_page_none_selected": "Ei mitään",
"backup_controller_page_remainder": "Jäljellä",
"backup_controller_page_remainder_sub": "Varmuuskopiointia odottavat kuvat ja videot",
"backup_controller_page_server_storage": "Palvelimen tallennustila",
"backup_controller_page_start_backup": "Aloita varmuuskopiointi",
"backup_controller_page_status_off": "Varmuuskopiointi on pois päältä",
"backup_controller_page_status_on": "Varmuuskopiointi on päällä",
"backup_controller_page_storage_format": "{} / {} käytetty",
"backup_controller_page_to_backup": "Varmuuskopioitavat albumit",
"backup_controller_page_total_sub": "Kaikki uniikit kuvat ja videot valituista albumeista",
"backup_controller_page_turn_off": "Varmuuskopiointi pois päältä",
"backup_controller_page_turn_on": "Varmuuskopiointi päälle",
"backup_controller_page_uploading_file_info": "Tiedostojen lähetystiedot",
"backup_err_only_album": "Vähintään yhden albumin tulee olla valittuna",
"backup_info_card_assets": "kohdetta",
"backup_manual_cancelled": "Peruutettu",
"backup_manual_in_progress": "Lähetys palvelimelle on jo käynnissä. Kokeile uudelleen hetken kuluttua.",
"backup_manual_success": "Onnistui",
"backup_manual_title": "Lähetyksen tila",
"backup_options_page_title": "Varmuuskopioinnin asetukset",
"backup_setting_subtitle": "Manage background and foreground upload settings",
"backward": "Taaksepäin", "backward": "Taaksepäin",
"birthdate_saved": "Syntymäaika tallennettu", "birthdate_saved": "Syntymäaika tallennettu",
"birthdate_set_description": "Syntymäaikaa käytetään laskemaan henkilön ikä kuvanottohetkellä.", "birthdate_set_description": "Syntymäaikaa käytetään laskemaan henkilön ikä kuvanottohetkellä.",
@@ -443,24 +561,52 @@
"bulk_keep_duplicates_confirmation": "Haluatko varmasti säilyttää {count, plural, one {# kaksoiskappaleen} other {# kaksoiskappaleet}}? Tämä merkitsee kaikki kaksoiskappaleet ratkaistuiksi, eikä poista mitään.", "bulk_keep_duplicates_confirmation": "Haluatko varmasti säilyttää {count, plural, one {# kaksoiskappaleen} other {# kaksoiskappaleet}}? Tämä merkitsee kaikki kaksoiskappaleet ratkaistuiksi, eikä poista mitään.",
"bulk_trash_duplicates_confirmation": "Haluatko varmasti siirtää {count, plural, one {# kaksoiskappaleen} other {# kaksoiskappaleet}} roskakoriin? Tämä säilyttää kustakin mediasta kookkaimman ja siirtää loput roskakoriin.", "bulk_trash_duplicates_confirmation": "Haluatko varmasti siirtää {count, plural, one {# kaksoiskappaleen} other {# kaksoiskappaleet}} roskakoriin? Tämä säilyttää kustakin mediasta kookkaimman ja siirtää loput roskakoriin.",
"buy": "Osta lisenssi Immich:iin", "buy": "Osta lisenssi Immich:iin",
"cache_settings_album_thumbnails": "Kirjastosivun esikatselukuvat ({} kohdetta)",
"cache_settings_clear_cache_button": "Tyhjennä välimuisti",
"cache_settings_clear_cache_button_title": "Tyhjennä sovelluksen välimuisti. Tämä vaikuttaa merkittävästi sovelluksen suorituskykyyn, kunnes välimuisti on rakennettu uudelleen.",
"cache_settings_duplicated_assets_clear_button": "Tyhjennä",
"cache_settings_duplicated_assets_subtitle": "Sovelluksen mustalle listalle merkitsemät valokuvat ja videot",
"cache_settings_duplicated_assets_title": "Kaksoiskappaleet ({})",
"cache_settings_image_cache_size": "Kuvien välimuistin koko ({} kohdetta)",
"cache_settings_statistics_album": "Kirjaston esikatselukuvat",
"cache_settings_statistics_assets": "{} kohdetta ({})",
"cache_settings_statistics_full": "Täysikokoiset kuvat",
"cache_settings_statistics_shared": "Jaettujen albumien esikatselukuvat",
"cache_settings_statistics_thumbnail": "Esikatselukuvat",
"cache_settings_statistics_title": "Välimuistin käyttö",
"cache_settings_subtitle": "Hallitse Immich-mobiilisovelluksen välimuistin käyttöä",
"cache_settings_thumbnail_size": "Esikatselukuvien välimuistin koko ({} kohdetta)",
"cache_settings_tile_subtitle": "Hallitse paikallista tallenustilaa",
"cache_settings_tile_title": "Paikallinen tallennustila",
"cache_settings_title": "Välimuistin asetukset",
"camera": "Kamera", "camera": "Kamera",
"camera_brand": "Kameran merkki", "camera_brand": "Kameran merkki",
"camera_model": "Kameran malli", "camera_model": "Kameran malli",
"cancel": "Peruuta", "cancel": "Peruuta",
"cancel_search": "Peru haku", "cancel_search": "Peru haku",
"canceled": "Canceled",
"cannot_merge_people": "Ihmisiä ei voitu yhdistää", "cannot_merge_people": "Ihmisiä ei voitu yhdistää",
"cannot_undo_this_action": "Et voi perua tätä toimintoa!", "cannot_undo_this_action": "Et voi perua tätä toimintoa!",
"cannot_update_the_description": "Kuvausta ei voi päivittää", "cannot_update_the_description": "Kuvausta ei voi päivittää",
"change_date": "Vaihda päiväys", "change_date": "Vaihda päiväys",
"change_display_order": "Change display order",
"change_expiration_time": "Muuta erääntymisaikaa", "change_expiration_time": "Muuta erääntymisaikaa",
"change_location": "Vaihda sijainti", "change_location": "Vaihda sijainti",
"change_name": "Vaihda nimi", "change_name": "Vaihda nimi",
"change_name_successfully": "Nimi vaihdettu", "change_name_successfully": "Nimi vaihdettu",
"change_password": "Vaihda Salasana", "change_password": "Vaihda Salasana",
"change_password_description": "Tämä on joko ensimmäinen kertasi kun kirjaudut järjestelmään, tai salasanasi on pyydetty vaihtamaan. Määritä uusi salasana alle.", "change_password_description": "Tämä on joko ensimmäinen kertasi kun kirjaudut järjestelmään, tai salasanasi on pyydetty vaihtamaan. Määritä uusi salasana alle.",
"change_password_form_confirm_password": "Vahvista salasana",
"change_password_form_description": "Hei {name},\n\nTämä on joko ensimmäinen kirjautumisesi järjestelmään tai salasanan vaihtaminen vaihtaminen on pakotettu. Ole hyvä ja syötä uusi salasana alle.",
"change_password_form_new_password": "Uusi salasana",
"change_password_form_password_mismatch": "Salasanat eivät täsmää",
"change_password_form_reenter_new_password": "Uusi salasana uudelleen",
"change_your_password": "Vaihda salasanasi", "change_your_password": "Vaihda salasanasi",
"changed_visibility_successfully": "Näkyvyys vaihdettu", "changed_visibility_successfully": "Näkyvyys vaihdettu",
"check_all": "Valitse kaikki", "check_all": "Valitse kaikki",
"check_corrupt_asset_backup": "Check for corrupt asset backups",
"check_corrupt_asset_backup_button": "Perform check",
"check_corrupt_asset_backup_description": "Run this check only over Wi-Fi and once all assets have been backed-up. The procedure might take a few minutes.",
"check_logs": "Katso lokeja", "check_logs": "Katso lokeja",
"choose_matching_people_to_merge": "Valitse henkilöt joka yhdistetään", "choose_matching_people_to_merge": "Valitse henkilöt joka yhdistetään",
"city": "Kaupunki", "city": "Kaupunki",
@@ -469,6 +615,14 @@
"clear_all_recent_searches": "Tyhjennä viimeisimmät haut", "clear_all_recent_searches": "Tyhjennä viimeisimmät haut",
"clear_message": "Tyhjennä viesti", "clear_message": "Tyhjennä viesti",
"clear_value": "Tyhjää arvo", "clear_value": "Tyhjää arvo",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove_msg": "Client certificate is removed",
"client_cert_subtitle": "Supports PKCS12 (.p12, .pfx) format only. Certificate Import/Remove is available only before login",
"client_cert_title": "SSL Client Certificate",
"clockwise": "Myötäpäivään", "clockwise": "Myötäpäivään",
"close": "Sulje", "close": "Sulje",
"collapse": "Supista", "collapse": "Supista",
@@ -479,6 +633,9 @@
"comment_options": "Kommentin valinnat", "comment_options": "Kommentin valinnat",
"comments_and_likes": "Kommentit ja tykkäykset", "comments_and_likes": "Kommentit ja tykkäykset",
"comments_are_disabled": "Kommentointi ei käytössä", "comments_are_disabled": "Kommentointi ei käytössä",
"common_create_new_album": "Luo uusi albumi",
"common_server_error": "Tarkista internet-yhteytesi. Varmista että palvelin on saavutettavissa ja sovellus-/palvelinversiot ovat yhteensopivia.",
"completed": "Completed",
"confirm": "Vahvista", "confirm": "Vahvista",
"confirm_admin_password": "Vahvista ylläpitäjän salasana", "confirm_admin_password": "Vahvista ylläpitäjän salasana",
"confirm_delete_shared_link": "Haluatko varmasti poistaa tämän jaetun linkin?", "confirm_delete_shared_link": "Haluatko varmasti poistaa tämän jaetun linkin?",
@@ -487,6 +644,15 @@
"contain": "Mahduta", "contain": "Mahduta",
"context": "Konteksti", "context": "Konteksti",
"continue": "Jatka", "continue": "Jatka",
"control_bottom_app_bar_album_info_shared": "{} kohdetta · Jaettu",
"control_bottom_app_bar_create_new_album": "Luo uusi albumi",
"control_bottom_app_bar_delete_from_immich": "Poista Immichistä",
"control_bottom_app_bar_delete_from_local": "Poista laitteelta",
"control_bottom_app_bar_edit_location": "Muokkaa sijaintia",
"control_bottom_app_bar_edit_time": "Muokkaa aikaa",
"control_bottom_app_bar_share_link": "Share Link",
"control_bottom_app_bar_share_to": "Jaa",
"control_bottom_app_bar_trash_from_immich": "Siirrä roskakoriin",
"copied_image_to_clipboard": "Kuva kopioitu leikepöydälle.", "copied_image_to_clipboard": "Kuva kopioitu leikepöydälle.",
"copied_to_clipboard": "Kopioitu leikepöydälle!", "copied_to_clipboard": "Kopioitu leikepöydälle!",
"copy_error": "Kopiointivirhe", "copy_error": "Kopiointivirhe",
@@ -501,24 +667,34 @@
"covers": "Kannet", "covers": "Kannet",
"create": "Luo", "create": "Luo",
"create_album": "Luo albumi", "create_album": "Luo albumi",
"create_album_page_untitled": "Nimetön",
"create_library": "Luo uusi kirjasto", "create_library": "Luo uusi kirjasto",
"create_link": "Luo linkki", "create_link": "Luo linkki",
"create_link_to_share": "Luo linkki jaettavaksi", "create_link_to_share": "Luo linkki jaettavaksi",
"create_link_to_share_description": "Salli kaikkien linkin saaneiden nähdä valitut kuvat", "create_link_to_share_description": "Salli kaikkien linkin saaneiden nähdä valitut kuvat",
"create_new": "CREATE NEW",
"create_new_person": "Luo uusi henkilö", "create_new_person": "Luo uusi henkilö",
"create_new_person_hint": "Määritä valitut mediat uudelle henkilölle", "create_new_person_hint": "Määritä valitut mediat uudelle henkilölle",
"create_new_user": "Luo uusi käyttäjä", "create_new_user": "Luo uusi käyttäjä",
"create_shared_album_page_share_add_assets": "LISÄÄ KOHTEITA",
"create_shared_album_page_share_select_photos": "Valitse kuvat",
"create_tag": "Luo tunniste", "create_tag": "Luo tunniste",
"create_tag_description": "Luo uusi tunniste. Sisäkkäisiä tunnisteita varten syötä tunnisteen täydellinen polku kauttaviivat mukaan luettuna.", "create_tag_description": "Luo uusi tunniste. Sisäkkäisiä tunnisteita varten syötä tunnisteen täydellinen polku kauttaviivat mukaan luettuna.",
"create_user": "Luo käyttäjä", "create_user": "Luo käyttäjä",
"created": "Luotu", "created": "Luotu",
"crop": "Crop",
"curated_object_page_title": "Asiat",
"current_device": "Nykyinen laite", "current_device": "Nykyinen laite",
"current_server_address": "Current server address",
"custom_locale": "Muokatut maa-asetukset", "custom_locale": "Muokatut maa-asetukset",
"custom_locale_description": "Muotoile päivämäärät ja numerot perustuen alueen kieleen", "custom_locale_description": "Muotoile päivämäärät ja numerot perustuen alueen kieleen",
"daily_title_text_date": "E, MMM dd",
"daily_title_text_date_year": "E, MMM dd, yyyy",
"dark": "Tumma", "dark": "Tumma",
"date_after": "Päivämäärän jälkeen", "date_after": "Päivämäärän jälkeen",
"date_and_time": "Päivämäärä ja aika", "date_and_time": "Päivämäärä ja aika",
"date_before": "Päivä ennen", "date_before": "Päivä ennen",
"date_format": "E, LLL d, y • h:mm a",
"date_of_birth_saved": "Syntymäaika tallennettu", "date_of_birth_saved": "Syntymäaika tallennettu",
"date_range": "Päivämäärän rajaus", "date_range": "Päivämäärän rajaus",
"day": "Päivä", "day": "Päivä",
@@ -532,18 +708,29 @@
"delete": "Poista", "delete": "Poista",
"delete_album": "Poista albumi", "delete_album": "Poista albumi",
"delete_api_key_prompt": "Haluatko varmasti poistaa tämän API-avaimen?", "delete_api_key_prompt": "Haluatko varmasti poistaa tämän API-avaimen?",
"delete_dialog_alert": "Nämä kohteet poistetaan pysyvästi Immich:stä ja laitteeltasi",
"delete_dialog_alert_local": "Kohteet poistetaan pysyvästi laitteelta, mutta ovat saatavilla Immich-palvelimella",
"delete_dialog_alert_local_non_backed_up": "Joitain kohteista ei ole varmuuskopioitu Immichiin ja ne poistetaan laitteelta pysyvästi",
"delete_dialog_alert_remote": "Kohteet poistetaan pysyvästi Immich-palvelimelta",
"delete_dialog_ok_force": "Poista kuitenkin",
"delete_dialog_title": "Poista pysyvästi",
"delete_duplicates_confirmation": "Haluatko varmasti poistaa nämä kaksoiskappaleet pysyvästi?", "delete_duplicates_confirmation": "Haluatko varmasti poistaa nämä kaksoiskappaleet pysyvästi?",
"delete_key": "Poista avain", "delete_key": "Poista avain",
"delete_library": "Poista kirjasto", "delete_library": "Poista kirjasto",
"delete_link": "Poista linkki", "delete_link": "Poista linkki",
"delete_local_dialog_ok_backed_up_only": "Poista vain varmuuskopioidut",
"delete_local_dialog_ok_force": "Poista kuitenkin",
"delete_others": "Poista muut", "delete_others": "Poista muut",
"delete_shared_link": "Poista jaettu linkki", "delete_shared_link": "Poista jaettu linkki",
"delete_shared_link_dialog_title": "Poista jaettu linkki",
"delete_tag": "Poista tunniste", "delete_tag": "Poista tunniste",
"delete_tag_confirmation_prompt": "Haluatko varmasti poistaa tunnisteen {tagName}?", "delete_tag_confirmation_prompt": "Haluatko varmasti poistaa tunnisteen {tagName}?",
"delete_user": "Poista käyttäjä", "delete_user": "Poista käyttäjä",
"deleted_shared_link": "Jaettu linkki poistettu", "deleted_shared_link": "Jaettu linkki poistettu",
"deletes_missing_assets": "Poistaa levyltä puuttuvat resurssit", "deletes_missing_assets": "Poistaa levyltä puuttuvat resurssit",
"description": "Kuvaus", "description": "Kuvaus",
"description_input_hint_text": "Lisää kuvaus...",
"description_input_submit_error": "Virhe kuvauksen päivittämisessä, tarkista lisätiedot lokista",
"details": "TIEDOT", "details": "TIEDOT",
"direction": "Suunta", "direction": "Suunta",
"disabled": "Poistettu käytöstä", "disabled": "Poistettu käytöstä",
@@ -560,12 +747,26 @@
"documentation": "Dokumentaatio", "documentation": "Dokumentaatio",
"done": "Valmis", "done": "Valmis",
"download": "Lataa", "download": "Lataa",
"download_canceled": "Download canceled",
"download_complete": "Download complete",
"download_enqueue": "Download enqueued",
"download_error": "Download Error",
"download_failed": "Download failed",
"download_filename": "file: {}",
"download_finished": "Download finished",
"download_include_embedded_motion_videos": "Upotetut videot", "download_include_embedded_motion_videos": "Upotetut videot",
"download_include_embedded_motion_videos_description": "Sisällytä liikekuviin upotetut videot erillisinä tiedostoina", "download_include_embedded_motion_videos_description": "Sisällytä liikekuviin upotetut videot erillisinä tiedostoina",
"download_notfound": "Download not found",
"download_paused": "Download paused",
"download_settings": "Lataukset", "download_settings": "Lataukset",
"download_settings_description": "Hallitse aineiston lataukseen liittyviä asetuksia", "download_settings_description": "Hallitse aineiston lataukseen liittyviä asetuksia",
"download_started": "Download started",
"download_sucess": "Download success",
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
"download_waiting_to_retry": "Waiting to retry",
"downloading": "Ladataan", "downloading": "Ladataan",
"downloading_asset_filename": "Ladataan mediaa {filename}", "downloading_asset_filename": "Ladataan mediaa {filename}",
"downloading_media": "Downloading media",
"drop_files_to_upload": "Pudota tiedostot mihin tahansa ladataksesi ne", "drop_files_to_upload": "Pudota tiedostot mihin tahansa ladataksesi ne",
"duplicates": "Kaksoiskappaleet", "duplicates": "Kaksoiskappaleet",
"duplicates_description": "Selvitä jokaisen kohdalla mitkä (jos yksikään) ovat kaksoiskappaleita", "duplicates_description": "Selvitä jokaisen kohdalla mitkä (jos yksikään) ovat kaksoiskappaleita",
@@ -582,6 +783,7 @@
"edit_key": "Muokkaa avainta", "edit_key": "Muokkaa avainta",
"edit_link": "Muokkaa linkkiä", "edit_link": "Muokkaa linkkiä",
"edit_location": "Muokkaa sijaintia", "edit_location": "Muokkaa sijaintia",
"edit_location_dialog_title": "Sijainti",
"edit_name": "Muokkaa nimeä", "edit_name": "Muokkaa nimeä",
"edit_people": "Muokkaa henkilöitä", "edit_people": "Muokkaa henkilöitä",
"edit_tag": "Muokkaa tunnistetta", "edit_tag": "Muokkaa tunnistetta",
@@ -594,13 +796,18 @@
"editor_crop_tool_h2_aspect_ratios": "Kuvasuhteet", "editor_crop_tool_h2_aspect_ratios": "Kuvasuhteet",
"editor_crop_tool_h2_rotation": "Rotaatio", "editor_crop_tool_h2_rotation": "Rotaatio",
"email": "Sähköposti", "email": "Sähköposti",
"empty_folder": "This folder is empty",
"empty_trash": "Tyhjennä roskakori", "empty_trash": "Tyhjennä roskakori",
"empty_trash_confirmation": "Haluatko varmasti tyhjentää roskakorin? Tämä poistaa pysyvästi kaikki tiedostot Immich:stä.\nToimintoa ei voi perua!", "empty_trash_confirmation": "Haluatko varmasti tyhjentää roskakorin? Tämä poistaa pysyvästi kaikki tiedostot Immich:stä.\nToimintoa ei voi perua!",
"enable": "Ota käyttöön", "enable": "Ota käyttöön",
"enabled": "Käytössä", "enabled": "Käytössä",
"end_date": "Päättymispäivä", "end_date": "Päättymispäivä",
"enqueued": "Enqueued",
"enter_wifi_name": "Enter WiFi name",
"error": "Virhe", "error": "Virhe",
"error_change_sort_album": "Failed to change album sort order",
"error_loading_image": "Kuvan lataus ei onnistunut", "error_loading_image": "Kuvan lataus ei onnistunut",
"error_saving_image": "Error: {}",
"error_title": "Virhe - Jotain meni pieleen", "error_title": "Virhe - Jotain meni pieleen",
"errors": { "errors": {
"cannot_navigate_next_asset": "Seuraavaan mediaan ei voi siirtyä", "cannot_navigate_next_asset": "Seuraavaan mediaan ei voi siirtyä",
@@ -729,8 +936,21 @@
"unable_to_upload_file": "Tiedostoa ei voitu ladata" "unable_to_upload_file": "Tiedostoa ei voitu ladata"
}, },
"exif": "Exif", "exif": "Exif",
"exif_bottom_sheet_description": "Lisää kuvaus…",
"exif_bottom_sheet_details": "TIEDOT",
"exif_bottom_sheet_location": "SIJAINTI",
"exif_bottom_sheet_people": "IHMISET",
"exif_bottom_sheet_person_add_person": "Lisää nimi",
"exif_bottom_sheet_person_age": "Age {}",
"exif_bottom_sheet_person_age_months": "Age {} months",
"exif_bottom_sheet_person_age_year_months": "Age 1 year, {} months",
"exif_bottom_sheet_person_age_years": "Age {}",
"exit_slideshow": "Poistu diaesityksestä", "exit_slideshow": "Poistu diaesityksestä",
"expand_all": "Laajenna kaikki", "expand_all": "Laajenna kaikki",
"experimental_settings_new_asset_list_subtitle": "Työn alla",
"experimental_settings_new_asset_list_title": "Ota käyttöön kokeellinen kuvaruudukko",
"experimental_settings_subtitle": "Käyttö omalla vastuulla!",
"experimental_settings_title": "Kokeellinen",
"expire_after": "Umpeutuu", "expire_after": "Umpeutuu",
"expired": "Voimassaolo päättynyt", "expired": "Voimassaolo päättynyt",
"expires_date": "Vanhenee {date}", "expires_date": "Vanhenee {date}",
@@ -741,11 +961,16 @@
"extension": "Tiedostopääte", "extension": "Tiedostopääte",
"external": "Ulkoisesta", "external": "Ulkoisesta",
"external_libraries": "Ulkoiset kirjastot", "external_libraries": "Ulkoiset kirjastot",
"external_network": "External network",
"external_network_sheet_info": "When not on the preferred WiFi network, the app will connect to the server through the first of the below URLs it can reach, starting from top to bottom",
"face_unassigned": "Ei määritelty", "face_unassigned": "Ei määritelty",
"failed": "Failed",
"failed_to_load_assets": "Kohteiden lataus epäonnistui", "failed_to_load_assets": "Kohteiden lataus epäonnistui",
"failed_to_load_folder": "Failed to load folder",
"favorite": "Suosikki", "favorite": "Suosikki",
"favorite_or_unfavorite_photo": "Suosikki- tai ei-suosikkikuva", "favorite_or_unfavorite_photo": "Suosikki- tai ei-suosikkikuva",
"favorites": "Suosikit", "favorites": "Suosikit",
"favorites_page_no_favorites": "Suosikkikohteita ei löytynyt",
"feature_photo_updated": "Kansikuva ladattu", "feature_photo_updated": "Kansikuva ladattu",
"features": "Ominaisuudet", "features": "Ominaisuudet",
"features_setting_description": "Hallitse sovelluksen ominaisuuksia", "features_setting_description": "Hallitse sovelluksen ominaisuuksia",
@@ -753,25 +978,38 @@
"file_name_or_extension": "Tiedostonimi tai tiedostopääte", "file_name_or_extension": "Tiedostonimi tai tiedostopääte",
"filename": "Tiedostonimi", "filename": "Tiedostonimi",
"filetype": "Tiedostotyyppi", "filetype": "Tiedostotyyppi",
"filter": "Filter",
"filter_people": "Suodata henkilöt", "filter_people": "Suodata henkilöt",
"find_them_fast": "Löydä nopeasti hakemalla nimellä", "find_them_fast": "Löydä nopeasti hakemalla nimellä",
"fix_incorrect_match": "Korjaa virheellinen osuma", "fix_incorrect_match": "Korjaa virheellinen osuma",
"folder": "Folder",
"folder_not_found": "Folder not found",
"folders": "Kansiot", "folders": "Kansiot",
"folders_feature_description": "Käytetään kansionäkymää valokuvien ja videoiden selaamiseen järjestelmässä", "folders_feature_description": "Käytetään kansionäkymää valokuvien ja videoiden selaamiseen järjestelmässä",
"forward": "Eteenpäin", "forward": "Eteenpäin",
"general": "Yleinen", "general": "Yleinen",
"get_help": "Hae apua", "get_help": "Hae apua",
"get_wifiname_error": "Could not get Wi-Fi name. Make sure you have granted the necessary permissions and are connected to a Wi-Fi network",
"getting_started": "Aloittaminen", "getting_started": "Aloittaminen",
"go_back": "Palaa", "go_back": "Palaa",
"go_to_folder": "Mene kansioon", "go_to_folder": "Mene kansioon",
"go_to_search": "Siirry hakuun", "go_to_search": "Siirry hakuun",
"grant_permission": "Grant permission",
"group_albums_by": "Ryhmitä albumi...", "group_albums_by": "Ryhmitä albumi...",
"group_country": "Ryhmitä maan mukaan", "group_country": "Ryhmitä maan mukaan",
"group_no": "Ei ryhmitystä", "group_no": "Ei ryhmitystä",
"group_owner": "Ryhmitä omistajan mukaan", "group_owner": "Ryhmitä omistajan mukaan",
"group_places_by": "Ryhmitä paikat...", "group_places_by": "Ryhmitä paikat...",
"group_year": "Ryhmitä vuoden mukaan", "group_year": "Ryhmitä vuoden mukaan",
"haptic_feedback_switch": "Ota haptinen palaute käyttöön",
"haptic_feedback_title": "Haptinen palaute",
"has_quota": "On kiintiö", "has_quota": "On kiintiö",
"header_settings_add_header_tip": "Add Header",
"header_settings_field_validator_msg": "Value cannot be empty",
"header_settings_header_name_input": "Header name",
"header_settings_header_value_input": "Header value",
"headers_settings_tile_subtitle": "Define proxy headers the app should send with each network request",
"headers_settings_tile_title": "Custom proxy headers",
"hi_user": "Hei {name} ({email})", "hi_user": "Hei {name} ({email})",
"hide_all_people": "Piilota kaikki henkilöt", "hide_all_people": "Piilota kaikki henkilöt",
"hide_gallery": "Piilota galleria", "hide_gallery": "Piilota galleria",
@@ -779,8 +1017,24 @@
"hide_password": "Piilota salasana", "hide_password": "Piilota salasana",
"hide_person": "Piilota henkilö", "hide_person": "Piilota henkilö",
"hide_unnamed_people": "Piilota nimeämättömät henkilöt", "hide_unnamed_people": "Piilota nimeämättömät henkilöt",
"home_page_add_to_album_conflicts": "Lisätty {added} kohdetta albumiin {album}. {failed} kohdetta on jo albumissa.",
"home_page_add_to_album_err_local": "Paikallisten kohteiden lisääminen albumeihin ei ole mahdollista, ohitetaan",
"home_page_add_to_album_success": "Lisätty {added} kohdetta albumiin {album}.",
"home_page_album_err_partner": "Kumppanin kohteita ei voi vielä lisätä albumiin. Hypätään yli",
"home_page_archive_err_local": "Paikallisten kohteiden arkistointi ei ole mahdollista, ohitetaan",
"home_page_archive_err_partner": "Kumppanin kohteita ei voi arkistoida. Hypätään yli",
"home_page_building_timeline": "Rakennetaan aikajanaa",
"home_page_delete_err_partner": "Kumppanin kohteita ei voi poistaa.Hypätään yli",
"home_page_delete_remote_err_local": "Paikallisia kohteita etäkohdevalintojen joukossa, ohitetaan",
"home_page_favorite_err_local": "Paikallisten kohteiden lisääminen suosikkeihin ei ole mahdollista, ohitetaan",
"home_page_favorite_err_partner": "Kumppanin kohteita ei voi vielä merkitä suosikiksi. Hypätään yli",
"home_page_first_time_notice": "Jos käytät sovellusta ensimmäistä kertaa, muista valita varmuuskopioitavat albumi(t), jotta aikajanalla voi olla kuvia ja videoita.",
"home_page_share_err_local": "Paikallisia kohteita ei voitu jakaa linkkien avulla. Hypätään yli",
"home_page_upload_err_limit": "Voit lähettää palvelimelle enintään 30 kohdetta kerrallaan, ohitetaan",
"host": "Isäntä", "host": "Isäntä",
"hour": "Tunti", "hour": "Tunti",
"ignore_icloud_photos": "Ignore iCloud photos",
"ignore_icloud_photos_description": "Photos that are stored on iCloud will not be uploaded to the Immich server",
"image": "Kuva", "image": "Kuva",
"image_alt_text_date": "{isVideo, select, true {Video} other {Kuva}} otettu {date}", "image_alt_text_date": "{isVideo, select, true {Video} other {Kuva}} otettu {date}",
"image_alt_text_date_1_person": "{isVideo, select, true {Video} other {Kuva}} otettu {person1} kanssa {date}", "image_alt_text_date_1_person": "{isVideo, select, true {Video} other {Kuva}} otettu {person1} kanssa {date}",
@@ -792,6 +1046,10 @@
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Kuva}} otettu {city}ssä, {country}ssä {person1}n ja {person2}n kanssa {date}", "image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Kuva}} otettu {city}ssä, {country}ssä {person1}n ja {person2}n kanssa {date}",
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Kuva}} otettu {city}ssä, {country}ssä {person1}n, {person2}n ja {person3}n kanssa {date}", "image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Kuva}} otettu {city}ssä, {country}ssä {person1}n, {person2}n ja {person3}n kanssa {date}",
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Kuva}} otettu {city}ssä, {country}ssä {person1}n, {person2}n ja {additionalCount, number} muun kanssa {date}", "image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Kuva}} otettu {city}ssä, {country}ssä {person1}n, {person2}n ja {additionalCount, number} muun kanssa {date}",
"image_saved_successfully": "Image saved",
"image_viewer_page_state_provider_download_started": "Lataaminen aloitettu",
"image_viewer_page_state_provider_download_success": "Lataus onnistui",
"image_viewer_page_state_provider_share_error": "Jakovirhe",
"immich_logo": "Immich-logo", "immich_logo": "Immich-logo",
"immich_web_interface": "Immich-verkkokäyttöliittymä", "immich_web_interface": "Immich-verkkokäyttöliittymä",
"import_from_json": "Tuo JSON-tiedostosta", "import_from_json": "Tuo JSON-tiedostosta",
@@ -810,6 +1068,8 @@
"night_at_midnight": "Joka yö keskiyöllä", "night_at_midnight": "Joka yö keskiyöllä",
"night_at_twoam": "Joka yö klo 02:00" "night_at_twoam": "Joka yö klo 02:00"
}, },
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"invite_people": "Kutsu ihmisiä", "invite_people": "Kutsu ihmisiä",
"invite_to_album": "Kutsu albumiin", "invite_to_album": "Kutsu albumiin",
"items_count": "{count, plural, one {# kpl} other {# kpl}}", "items_count": "{count, plural, one {# kpl} other {# kpl}}",
@@ -829,6 +1089,12 @@
"level": "Taso", "level": "Taso",
"library": "Kirjasto", "library": "Kirjasto",
"library_options": "Kirjastovaihtoehdot", "library_options": "Kirjastovaihtoehdot",
"library_page_device_albums": "Laitteen albumit",
"library_page_new_album": "Uusi albumi",
"library_page_sort_asset_count": "Kohteiden lukumäärä",
"library_page_sort_created": "Viimeisin luotu",
"library_page_sort_last_modified": "Viimeksi muokattu",
"library_page_sort_title": "Albumin otsikko",
"light": "Vaalea", "light": "Vaalea",
"like_deleted": "Tykkäys poistettu", "like_deleted": "Tykkäys poistettu",
"link_motion_video": "Linkitä liikevideo", "link_motion_video": "Linkitä liikevideo",
@@ -838,12 +1104,42 @@
"list": "Lista", "list": "Lista",
"loading": "Ladataan", "loading": "Ladataan",
"loading_search_results_failed": "Hakutulosten lataaminen epäonnistui", "loading_search_results_failed": "Hakutulosten lataaminen epäonnistui",
"local_network": "Local network",
"local_network_sheet_info": "The app will connect to the server through this URL when using the specified Wi-Fi network",
"location_permission": "Location permission",
"location_permission_content": "In order to use the auto-switching feature, Immich needs precise location permission so it can read the current WiFi network's name",
"location_picker_choose_on_map": "Valitse kartalta",
"location_picker_latitude_error": "Lisää kelvollinen leveysaste",
"location_picker_latitude_hint": "Syötä leveysaste",
"location_picker_longitude_error": "Lisää kelvollinen pituusaste",
"location_picker_longitude_hint": "Syötä pituusaste",
"log_out": "Kirjaudu ulos", "log_out": "Kirjaudu ulos",
"log_out_all_devices": "Kirjaudu ulos kaikilta laitteilta", "log_out_all_devices": "Kirjaudu ulos kaikilta laitteilta",
"logged_out_all_devices": "Kaikki laitteet kirjattu ulos", "logged_out_all_devices": "Kaikki laitteet kirjattu ulos",
"logged_out_device": "Laite kirjattu ulos", "logged_out_device": "Laite kirjattu ulos",
"login": "Kirjaudu", "login": "Kirjaudu",
"login_disabled": "Kirjautuminen on poistettu käytöstä",
"login_form_api_exception": "API-virhe. Tarkista palvelimen URL-osoite ja yritä uudelleen.",
"login_form_back_button_text": "Takaisin",
"login_form_email_hint": "sahkopostisi@esimerkki.fi",
"login_form_endpoint_hint": "http://palvelimesi-osoite:portti",
"login_form_endpoint_url": "Palvelimen URL",
"login_form_err_http": "Lisää http:// tai https://",
"login_form_err_invalid_email": "Virheellinen sähköpostiosoite",
"login_form_err_invalid_url": "Virheellinen URL",
"login_form_err_leading_whitespace": "Alussa välilyönti",
"login_form_err_trailing_whitespace": "Lopussa välilyönti",
"login_form_failed_get_oauth_server_config": "Virhe kirjauduttaessa OAuth:lla, tarkista palvelimen URL",
"login_form_failed_get_oauth_server_disable": "OAuth-ominaisuus ei ole käytössä tällä palvelimella",
"login_form_failed_login": "Virhe kirjautumisessa. Tarkista palvelimen URL, sähköpostiosoite ja salasana.",
"login_form_handshake_exception": "Tapahtui poikkeus kättelyssä palvelimen kanssa. Kytke päälle self-signed -sertifikaattituki asetuksista, mikäli käytät self-signed -sertifikaatteja.",
"login_form_password_hint": "salasana",
"login_form_save_login": "Pysy kirjautuneena",
"login_form_server_empty": "Syötä palvelimen URL-osoite.",
"login_form_server_error": "Palvelimeen ei saatu yhteyttä.",
"login_has_been_disabled": "Kirjautuminen on otettu pois käytöstä.", "login_has_been_disabled": "Kirjautuminen on otettu pois käytöstä.",
"login_password_changed_error": "Salasanan päivityksessä tapahtui virhe",
"login_password_changed_success": "Salasan päivitetty onnistuneesti",
"logout_all_device_confirmation": "Haluatko varmasti kirjautua ulos kaikilta laitteilta?", "logout_all_device_confirmation": "Haluatko varmasti kirjautua ulos kaikilta laitteilta?",
"logout_this_device_confirmation": "Haluatko varmasti kirjautua ulos näiltä laitteilta?", "logout_this_device_confirmation": "Haluatko varmasti kirjautua ulos näiltä laitteilta?",
"longitude": "Pituusaste", "longitude": "Pituusaste",
@@ -860,13 +1156,40 @@
"manage_your_devices": "Hallitse sisäänkirjautuneita laitteitasi", "manage_your_devices": "Hallitse sisäänkirjautuneita laitteitasi",
"manage_your_oauth_connection": "Hallitse OAuth-yhteyttäsi", "manage_your_oauth_connection": "Hallitse OAuth-yhteyttäsi",
"map": "Kartta", "map": "Kartta",
"map_assets_in_bound": "{} kuva",
"map_assets_in_bounds": "{} kuvaa",
"map_cannot_get_user_location": "Käyttäjän sijaintia ei voitu määrittää",
"map_location_dialog_yes": "Kyllä",
"map_location_picker_page_use_location": "Käytä tätä sijaintia",
"map_location_service_disabled_content": "Paikannuspalvelun pitää olla kytkettynä päälle, jotta nykyisen sijaintisi kohteita voidaan näyttää. Haluatko kytkeä sen päälle nyt?",
"map_location_service_disabled_title": "Paikannuspalvelu pois päältä",
"map_marker_for_images": "Karttamarkerointi kuville, jotka on otettu kaupungissa {city}, maassa {country}", "map_marker_for_images": "Karttamarkerointi kuville, jotka on otettu kaupungissa {city}, maassa {country}",
"map_marker_with_image": "Karttamarkerointi kuvalla", "map_marker_with_image": "Karttamarkerointi kuvalla",
"map_no_assets_in_bounds": "Ei kuvia tällä alueella",
"map_no_location_permission_content": "Paikannuslupa tarvitaan, jotta nykyisen sijainnin kohteita voidaan näyttää. Haluatko sallia pääsyn sijaintiin?",
"map_no_location_permission_title": "Paikannuslupa estetty",
"map_settings": "Kartta-asetukset", "map_settings": "Kartta-asetukset",
"map_settings_dark_mode": "Tumma tila",
"map_settings_date_range_option_day": "Viimeiset 24 tuntia",
"map_settings_date_range_option_days": "Viimeiset {} päivää",
"map_settings_date_range_option_year": "Viimeisin vuosi",
"map_settings_date_range_option_years": "Viimeiset {} vuotta",
"map_settings_dialog_title": "Kartta-asetukset",
"map_settings_include_show_archived": "Sisällytä arkistoidut",
"map_settings_include_show_partners": "Sisällytä kumppanit",
"map_settings_only_show_favorites": "Näytä vain suosikit",
"map_settings_theme_settings": "Kartan teema",
"map_zoom_to_see_photos": "Tarkenna nähdäksesi kuvat",
"matches": "Osumia", "matches": "Osumia",
"media_type": "Median tyyppi", "media_type": "Median tyyppi",
"memories": "Muistoja", "memories": "Muistoja",
"memories_all_caught_up": "Kaikki ajan tasalla",
"memories_check_back_tomorrow": "Palaa huomenna nähdäskesi lisää muistoja",
"memories_setting_description": "Hallitse mitä näet muistoissasi", "memories_setting_description": "Hallitse mitä näet muistoissasi",
"memories_start_over": "Aloita alusta",
"memories_swipe_to_close": "Pyyhkäise ylös sulkeaksesi",
"memories_year_ago": "A year ago",
"memories_years_ago": "{} years ago",
"memory": "Muisto", "memory": "Muisto",
"memory_lane_title": "Muistojen polku {title}", "memory_lane_title": "Muistojen polku {title}",
"menu": "Valikko", "menu": "Valikko",
@@ -881,11 +1204,16 @@
"missing": "Puuttuu", "missing": "Puuttuu",
"model": "Malli", "model": "Malli",
"month": "Kuukauden mukaan", "month": "Kuukauden mukaan",
"monthly_title_text_date_format": "MMMM y",
"more": "Enemmän", "more": "Enemmän",
"moved_to_trash": "Siirretty roskakoriin", "moved_to_trash": "Siirretty roskakoriin",
"multiselect_grid_edit_date_time_err_read_only": "Vain luku -tilassa olevien kohteiden päivämäärää ei voitu muokata, ohitetaan",
"multiselect_grid_edit_gps_err_read_only": "Vain luku-tilassa olevien kohteiden sijantitietoja ei voitu muokata, ohitetaan",
"my_albums": "Albumini", "my_albums": "Albumini",
"name": "Nimi", "name": "Nimi",
"name_or_nickname": "Nimi tai lempinimi", "name_or_nickname": "Nimi tai lempinimi",
"networking_settings": "Networking",
"networking_subtitle": "Manage the server endpoint settings",
"never": "ei koskaan", "never": "ei koskaan",
"new_album": "Uusi Albumi", "new_album": "Uusi Albumi",
"new_api_key": "Uusi API-avain", "new_api_key": "Uusi API-avain",
@@ -902,6 +1230,7 @@
"no_albums_yet": "Näyttää siltä, ettei sinulla ole vielä yhtään albumia.", "no_albums_yet": "Näyttää siltä, ettei sinulla ole vielä yhtään albumia.",
"no_archived_assets_message": "Arkistoi kuvia ja videoita piilottaaksesi ne kuvat näkymästä", "no_archived_assets_message": "Arkistoi kuvia ja videoita piilottaaksesi ne kuvat näkymästä",
"no_assets_message": "NAPAUTA LATAAKSESI ENSIMMÄISEN KUVASI", "no_assets_message": "NAPAUTA LATAAKSESI ENSIMMÄISEN KUVASI",
"no_assets_to_show": "Ei näytettäviä kohteita",
"no_duplicates_found": "Kaksoiskappaleita ei löytynyt.", "no_duplicates_found": "Kaksoiskappaleita ei löytynyt.",
"no_exif_info_available": "EXIF-tietoa ei saatavilla", "no_exif_info_available": "EXIF-tietoa ei saatavilla",
"no_explore_results_message": "Lataa lisää kuvia tutkiaksesi kokoelmaasi.", "no_explore_results_message": "Lataa lisää kuvia tutkiaksesi kokoelmaasi.",
@@ -913,9 +1242,13 @@
"no_results_description": "Kokeile synonyymiä tai yleisempää avainsanaa", "no_results_description": "Kokeile synonyymiä tai yleisempää avainsanaa",
"no_shared_albums_message": "Luo albumi, jotta voit jakaa kuvia ja videoita toisille", "no_shared_albums_message": "Luo albumi, jotta voit jakaa kuvia ja videoita toisille",
"not_in_any_album": "Ei yhdessäkään albumissa", "not_in_any_album": "Ei yhdessäkään albumissa",
"not_selected": "Not selected",
"note_apply_storage_label_to_previously_uploaded assets": "Huom: Jotta voit soveltaa tallennustunnistetta aiemmin ladattuihin kohteisiin, suorita", "note_apply_storage_label_to_previously_uploaded assets": "Huom: Jotta voit soveltaa tallennustunnistetta aiemmin ladattuihin kohteisiin, suorita",
"note_unlimited_quota": "Huomio: Syötä 0 rajoittamatonta kiintiötä varten",
"notes": "Muistiinpanot", "notes": "Muistiinpanot",
"notification_permission_dialog_content": "Ottaaksesi ilmoitukset käyttöön, siirry asetuksiin ja valitse 'salli'.",
"notification_permission_list_tile_content": "Myönnä käyttöoikeus ottaaksesi ilmoitukset käyttöön.",
"notification_permission_list_tile_enable_button": "Ota ilmoitukset käyttöön",
"notification_permission_list_tile_title": "Ilmoitusten käyttöoikeus",
"notification_toggle_setting_description": "Ota sähköposti-ilmoitukset käyttöön", "notification_toggle_setting_description": "Ota sähköposti-ilmoitukset käyttöön",
"notifications": "Ilmoitukset", "notifications": "Ilmoitukset",
"notifications_setting_description": "Hallitse ilmoituksia", "notifications_setting_description": "Hallitse ilmoituksia",
@@ -926,6 +1259,7 @@
"offline_paths_description": "Nämä tulokset voivat johtua tiedostojen manuaalisesta poistamisesta, jotka eivät ole osa ulkoista kirjastoa.", "offline_paths_description": "Nämä tulokset voivat johtua tiedostojen manuaalisesta poistamisesta, jotka eivät ole osa ulkoista kirjastoa.",
"ok": "Ok", "ok": "Ok",
"oldest_first": "Vanhin ensin", "oldest_first": "Vanhin ensin",
"on_this_device": "On this device",
"onboarding": "Käyttöönotto", "onboarding": "Käyttöönotto",
"onboarding_privacy_description": "Seuraavat (valinnaiset) ominaisuudet perustuvat ulkoisiin palveluihin, ja ne voidaan poistaa käytöstä milloin tahansa hallinta asetuksista.", "onboarding_privacy_description": "Seuraavat (valinnaiset) ominaisuudet perustuvat ulkoisiin palveluihin, ja ne voidaan poistaa käytöstä milloin tahansa hallinta asetuksista.",
"onboarding_theme_description": "Valitse väriteema istunnollesi. Voit muuttaa tämän myöhemmin asetuksistasi.", "onboarding_theme_description": "Valitse väriteema istunnollesi. Voit muuttaa tämän myöhemmin asetuksistasi.",
@@ -949,6 +1283,14 @@
"partner_can_access": "{partner} voi päästä", "partner_can_access": "{partner} voi päästä",
"partner_can_access_assets": "Kaikki valokuvasi ja videosi, lukuun ottamatta arkistoituja ja poistettuja", "partner_can_access_assets": "Kaikki valokuvasi ja videosi, lukuun ottamatta arkistoituja ja poistettuja",
"partner_can_access_location": "Sijainti, jossa kuvasi on otettu", "partner_can_access_location": "Sijainti, jossa kuvasi on otettu",
"partner_list_user_photos": "Käyttäjän {user} kuvat",
"partner_list_view_all": "Näytä kaikki",
"partner_page_empty_message": "Kuviasi ei ole vielä jaettu kenenkään kumppanin kanssa.",
"partner_page_no_more_users": "Ei enempää käyttäjiä lisättäväksi",
"partner_page_partner_add_failed": "Kumppanin lisääminen epäonnistui",
"partner_page_select_partner": "Valitse kumppani",
"partner_page_shared_to_title": "Jaettu henkilöille",
"partner_page_stop_sharing_content": "{} ei voi enää käyttää kuviasi.",
"partner_sharing": "Kumppanijako", "partner_sharing": "Kumppanijako",
"partners": "Kumppanit", "partners": "Kumppanit",
"password": "Salasana", "password": "Salasana",
@@ -977,6 +1319,14 @@
"permanently_delete_assets_prompt": "Oletko varma, että haluat poistaa pysyvästi {count, plural, one {tämän kohteen?} other {nämä <b>#</b> kohteet?}} Tämä poistaa myös {count, plural, one {sen sen} other {ne niiden}} albumista.", "permanently_delete_assets_prompt": "Oletko varma, että haluat poistaa pysyvästi {count, plural, one {tämän kohteen?} other {nämä <b>#</b> kohteet?}} Tämä poistaa myös {count, plural, one {sen sen} other {ne niiden}} albumista.",
"permanently_deleted_asset": "Media poistettu pysyvästi", "permanently_deleted_asset": "Media poistettu pysyvästi",
"permanently_deleted_assets_count": "{count, plural, one {# media} other {# mediaa}} poistettu pysyvästi", "permanently_deleted_assets_count": "{count, plural, one {# media} other {# mediaa}} poistettu pysyvästi",
"permission_onboarding_back": "Takaisin",
"permission_onboarding_continue_anyway": "Jatka silti",
"permission_onboarding_get_started": "Aloittaminen",
"permission_onboarding_go_to_settings": "Siirry asetuksiin",
"permission_onboarding_permission_denied": "Kielletty käyttöoikeus. Käyttääksesi Immichiä, myönnä oikeus kuviin ja videoihin asetuksista.",
"permission_onboarding_permission_granted": "Käyttöoikeus myönnetty! Kaikki valmista.",
"permission_onboarding_permission_limited": "Rajoitettu käyttöoikeus. Salliaksesi Immichin varmuuskopioida ja hallita koko kuvakirjastoasi, myönnä oikeus kuviin ja videoihin asetuksista.",
"permission_onboarding_request": "Immich vaatii käyttöoikeuden kuvien ja videoiden käyttämiseen.",
"person": "Henkilö", "person": "Henkilö",
"person_hidden": "{name}{hidden, select, true { (piilotettu)} other {}}", "person_hidden": "{name}{hidden, select, true { (piilotettu)} other {}}",
"photo_shared_all_users": "Näyttää että olet jakanut kuvasi kaikkien käyttäjien kanssa, tai sinulla ei ole käyttäjää kenelle jakaa.", "photo_shared_all_users": "Näyttää että olet jakanut kuvasi kaikkien käyttäjien kanssa, tai sinulla ei ole käyttäjää kenelle jakaa.",
@@ -992,6 +1342,8 @@
"play_motion_photo": "Toista Liikekuva", "play_motion_photo": "Toista Liikekuva",
"play_or_pause_video": "Toista tai keskeytä video", "play_or_pause_video": "Toista tai keskeytä video",
"port": "Portti", "port": "Portti",
"preferences_settings_subtitle": "Manage the app's preferences",
"preferences_settings_title": "Asetukset",
"preset": "Asetus", "preset": "Asetus",
"preview": "Esikatselu", "preview": "Esikatselu",
"previous": "Edellinen", "previous": "Edellinen",
@@ -999,6 +1351,13 @@
"previous_or_next_photo": "Edellinen tai seuraava kuva", "previous_or_next_photo": "Edellinen tai seuraava kuva",
"primary": "Ensisijainen", "primary": "Ensisijainen",
"privacy": "Yksityisyys", "privacy": "Yksityisyys",
"profile_drawer_app_logs": "Lokit",
"profile_drawer_client_out_of_date_major": "Sovelluksen mobiiliversio on vanhentunut. Päivitä viimeisimpään merkittävään versioon.",
"profile_drawer_client_out_of_date_minor": "Sovelluksen mobiiliversio on vanhentunut. Päivitä viimeisimpään versioon.",
"profile_drawer_client_server_up_to_date": "Asiakassovellus ja palvelin ovat ajan tasalla",
"profile_drawer_github": "GitHub",
"profile_drawer_server_out_of_date_major": "Palvelimen ohjelmistoversio on vanhentunut. Päivitä viimeisimpään merkittävään versioon.",
"profile_drawer_server_out_of_date_minor": "Palvelimen ohjelmistoversio on vanhentunut. Päivitä viimeisimpään versioon.",
"profile_image_of_user": "Käyttäjän {user} profiilikuva", "profile_image_of_user": "Käyttäjän {user} profiilikuva",
"profile_picture_set": "Profiilikuva asetettu.", "profile_picture_set": "Profiilikuva asetettu.",
"public_album": "Julkinen albumi", "public_album": "Julkinen albumi",
@@ -1048,6 +1407,8 @@
"recent": "Viimeisin", "recent": "Viimeisin",
"recent-albums": "Viimeisimmät albumit", "recent-albums": "Viimeisimmät albumit",
"recent_searches": "Edelliset haut", "recent_searches": "Edelliset haut",
"recently_added": "Recently added",
"recently_added_page_title": "Viimeksi lisätyt",
"refresh": "Päivitä", "refresh": "Päivitä",
"refresh_encoded_videos": "Päivitä enkoodatut videot", "refresh_encoded_videos": "Päivitä enkoodatut videot",
"refresh_faces": "Päivitä kasvot", "refresh_faces": "Päivitä kasvot",
@@ -1099,10 +1460,12 @@
"role_editor": "Editori", "role_editor": "Editori",
"role_viewer": "Toistin", "role_viewer": "Toistin",
"save": "Tallenna", "save": "Tallenna",
"save_to_gallery": "Save to gallery",
"saved_api_key": "API-avain tallennettu", "saved_api_key": "API-avain tallennettu",
"saved_profile": "Profiili tallennettu", "saved_profile": "Profiili tallennettu",
"saved_settings": "Asetukset tallennettu", "saved_settings": "Asetukset tallennettu",
"say_something": "Sano jotain", "say_something": "Sano jotain",
"scaffold_body_error_occurred": "Tapahtui virhe",
"scan_all_libraries": "Skannaa kaikki kirjastot", "scan_all_libraries": "Skannaa kaikki kirjastot",
"scan_library": "Skannaa", "scan_library": "Skannaa",
"scan_settings": "Skannausasetukset", "scan_settings": "Skannausasetukset",
@@ -1117,14 +1480,43 @@
"search_camera_model": "Etsi kameramallia...", "search_camera_model": "Etsi kameramallia...",
"search_city": "Etsi kaupunkia...", "search_city": "Etsi kaupunkia...",
"search_country": "Etsi maata...", "search_country": "Etsi maata...",
"search_filter_apply": "Käytä",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_not_in_album": "Ei kuulu albumiin",
"search_filter_display_options": "Display Options",
"search_filter_filename": "Search by file name",
"search_filter_location": "Location",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_title": "Select media type",
"search_filter_people_title": "Select people",
"search_for_existing_person": "Etsi olemassa olevaa henkilöä", "search_for_existing_person": "Etsi olemassa olevaa henkilöä",
"search_no_more_result": "No more results",
"search_no_people": "Ei henkilöitä", "search_no_people": "Ei henkilöitä",
"search_no_people_named": "Ei \"{name}\" nimisiä henkilöitä", "search_no_people_named": "Ei \"{name}\" nimisiä henkilöitä",
"search_no_result": "No results found, try a different search term or combination",
"search_options": "Hakuvaihtoehdot", "search_options": "Hakuvaihtoehdot",
"search_page_categories": "Kategoriat",
"search_page_motion_photos": "Liikekuvat",
"search_page_no_objects": "Objektitietoja ei ole saatavilla",
"search_page_no_places": "Paikkatietoja ei ole saatavilla",
"search_page_screenshots": "Näyttökuvat",
"search_page_search_photos_videos": "Search for your photos and videos",
"search_page_selfies": "Selfiet",
"search_page_things": "Asiat",
"search_page_view_all_button": "Näytä kaikki",
"search_page_your_activity": "Toimintasi",
"search_page_your_map": "Sinun karttasi",
"search_people": "Etsi ihmisiä", "search_people": "Etsi ihmisiä",
"search_places": "Etsi paikkoja", "search_places": "Etsi paikkoja",
"search_result_page_new_search_hint": "Uusi haku",
"search_settings": "Hakuasetukset", "search_settings": "Hakuasetukset",
"search_state": "Etsi tilaa...", "search_state": "Etsi tilaa...",
"search_suggestion_list_smart_search_hint_1": "Älykäs haku on oletuksena käytössä. Käytä metatietojen etsimiseen syntaksia",
"search_suggestion_list_smart_search_hint_2": "m:hakusana",
"search_tags": "Etsi tunnisteita...", "search_tags": "Etsi tunnisteita...",
"search_timezone": "Etsi aikavyöhyke...", "search_timezone": "Etsi aikavyöhyke...",
"search_type": "Etsinnän tyyppi", "search_type": "Etsinnän tyyppi",
@@ -1144,10 +1536,14 @@
"select_new_face": "Valitse uudet kasvot", "select_new_face": "Valitse uudet kasvot",
"select_photos": "Valitse kuvat", "select_photos": "Valitse kuvat",
"select_trash_all": "Valitse kaikki roskakoriin", "select_trash_all": "Valitse kaikki roskakoriin",
"select_user_for_sharing_page_err_album": "Albumin luonti epäonnistui",
"selected": "Valittu", "selected": "Valittu",
"selected_count": "{count, plural, other {# valittu}}", "selected_count": "{count, plural, other {# valittu}}",
"send_message": "Lähetä viesti", "send_message": "Lähetä viesti",
"send_welcome_email": "Lähetä tervetuloviesti", "send_welcome_email": "Lähetä tervetuloviesti",
"server_endpoint": "Server Endpoint",
"server_info_box_app_version": "Sovelluksen versio",
"server_info_box_server_url": "Palvelimen URL-osoite",
"server_offline": "Palvelin Offline-tilassa", "server_offline": "Palvelin Offline-tilassa",
"server_online": "Palvelin Online-tilassa", "server_online": "Palvelin Online-tilassa",
"server_stats": "Palvelimen tilastot", "server_stats": "Palvelimen tilastot",
@@ -1159,21 +1555,90 @@
"set_date_of_birth": "Aseta syntymäaika", "set_date_of_birth": "Aseta syntymäaika",
"set_profile_picture": "Aseta profiilikuva", "set_profile_picture": "Aseta profiilikuva",
"set_slideshow_to_fullscreen": "Näytä diaesitys koko ruudulla", "set_slideshow_to_fullscreen": "Näytä diaesitys koko ruudulla",
"setting_image_viewer_help": "Sovellus lataa ensin pienen esikatselukuvan, toisena keskitarkkuuksisen kuvan (jos käytössä) ja kolmantena alkuperäisen täysitarkkuuksisen kuvan (jos käytössä)",
"setting_image_viewer_original_subtitle": "Ota käyttöön ladataksesi alkuperäinen täysitarkkuuksinen kuva (suuri!). Poista käytöstä vähentääksesi datan käyttöä (sekä verkossa että laitteen välimuistissa).",
"setting_image_viewer_original_title": "Lataa alkuperäinen kuva",
"setting_image_viewer_preview_subtitle": "Ota käyttöön ladataksesi keskitarkkuuksinen kuva. Poista käytöstä ladataksesi alkuperäinen kuva tai käyttääksesi vain esikatselukuvaa.",
"setting_image_viewer_preview_title": "Lataa esikatselukuva",
"setting_image_viewer_title": "Kuvat",
"setting_languages_apply": "Käytä",
"setting_languages_subtitle": "Change the app's language",
"setting_languages_title": "Kieli",
"setting_notifications_notify_failures_grace_period": "Ilmoita taustavarmuuskopioinnin epäonnistumisista: {}",
"setting_notifications_notify_hours": "{} tunnin välein",
"setting_notifications_notify_immediately": "heti",
"setting_notifications_notify_minutes": "{} minuutin välein",
"setting_notifications_notify_never": "ei koskaan",
"setting_notifications_notify_seconds": "{} sekuntia",
"setting_notifications_single_progress_subtitle": "Yksityiskohtainen tieto palvelimelle lähettämisen edistymisestä kohteittain",
"setting_notifications_single_progress_title": "Näytä taustavarmuuskopioinnin eidstminen",
"setting_notifications_subtitle": "Ilmoitusasetusten määrittely",
"setting_notifications_total_progress_subtitle": "Lähetyksen yleinen edistyminen (kohteita lähetetty/yhteensä)",
"setting_notifications_total_progress_title": "Näytä taustavarmuuskopioinnin kokonaisedistyminen",
"setting_video_viewer_looping_title": "Looping",
"setting_video_viewer_original_video_subtitle": "When streaming a video from the server, play the original even when a transcode is available. May lead to buffering. Videos available locally are played in original quality regardless of this setting.",
"setting_video_viewer_original_video_title": "Force original video",
"settings": "Asetukset", "settings": "Asetukset",
"settings_require_restart": "Käynnistä Immich uudelleen ottaaksesti tämän asetuksen käyttöön",
"settings_saved": "Asetukset tallennettu", "settings_saved": "Asetukset tallennettu",
"share": "Jaa", "share": "Jaa",
"share_add_photos": "Lisää kuvia",
"share_assets_selected": "{} valittu",
"share_dialog_preparing": "Valmistellaan...",
"shared": "Jaettu", "shared": "Jaettu",
"shared_album_activities_input_disable": "Kommentointi on kytketty pois päältä",
"shared_album_activity_remove_content": "Haluatko poistaa tämän aktiviteetin?",
"shared_album_activity_remove_title": "Poista aktiviteetti",
"shared_album_section_people_action_error": "Virhe poistuttaessa/poistaessa kohdetta albumista",
"shared_album_section_people_action_leave": "Poista käyttäjä albumista",
"shared_album_section_people_action_remove_user": "Poista käyttäjä albumista",
"shared_album_section_people_title": "HENKILÖT",
"shared_by": "Jakanut", "shared_by": "Jakanut",
"shared_by_user": "Käyttäjän {user} jakama", "shared_by_user": "Käyttäjän {user} jakama",
"shared_by_you": "Sinun jakamasi", "shared_by_you": "Sinun jakamasi",
"shared_from_partner": "Kumppanin {partner} kuvia", "shared_from_partner": "Kumppanin {partner} kuvia",
"shared_intent_upload_button_progress_text": "{} / {} Uploaded",
"shared_link_app_bar_title": "Jaetut linkit",
"shared_link_clipboard_copied_massage": "Kopioitu leikepöydältä",
"shared_link_clipboard_text": "Linkki: {}\nSalasana: {}",
"shared_link_create_error": "Jaetun linkin luomisessa tapahtui virhe",
"shared_link_edit_description_hint": "Lisää jaon kuvaus",
"shared_link_edit_expire_after_option_day": "1 päivä",
"shared_link_edit_expire_after_option_days": "{} päivää",
"shared_link_edit_expire_after_option_hour": "1 tunti",
"shared_link_edit_expire_after_option_hours": "{} tuntia",
"shared_link_edit_expire_after_option_minute": "1 minuutti",
"shared_link_edit_expire_after_option_minutes": "{} minuuttia",
"shared_link_edit_expire_after_option_months": "{} kuukautta",
"shared_link_edit_expire_after_option_year": "{} vuosi",
"shared_link_edit_password_hint": "Syötä jaon salasana",
"shared_link_edit_submit_button": "Päivitä linkki",
"shared_link_error_server_url_fetch": "Palvelimen URL-osoitetta ei voitu hakea",
"shared_link_expires_day": "Voimassaolo päättyy {} päivän kuluttua",
"shared_link_expires_days": "Voimassaolo päättyy {} päivän kuluttua",
"shared_link_expires_hour": "Voimassaolo päättyy {} tunnin kuluttua",
"shared_link_expires_hours": "Voimassaolo päättyy {} tunnin kuluttua",
"shared_link_expires_minute": "Voimassaolo päättyy {} minuutin kuluttua",
"shared_link_expires_minutes": "Voimassaolo päättyy {} minuutin kuluttua",
"shared_link_expires_never": "Voimassaolo päättyy ∞",
"shared_link_expires_second": "Voimassaolo päättyy {} sekunnin kuluttua",
"shared_link_expires_seconds": "Voimassaolo päättyy {} sekunnin kuluttua",
"shared_link_individual_shared": "Individual shared",
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Hallitse jaettuja linkkejä",
"shared_link_options": "Jaetun linkin vaihtoehdot", "shared_link_options": "Jaetun linkin vaihtoehdot",
"shared_links": "Jaetut linkit", "shared_links": "Jaetut linkit",
"shared_photos_and_videos_count": "{assetCount, plural, other {# jaettua kuvaa ja videota.}}", "shared_photos_and_videos_count": "{assetCount, plural, other {# jaettua kuvaa ja videota.}}",
"shared_with_me": "Shared with me",
"shared_with_partner": "Jaa kumppanin {partner} kanssa", "shared_with_partner": "Jaa kumppanin {partner} kanssa",
"sharing": "Jakaminen", "sharing": "Jakaminen",
"sharing_enter_password": "Nähdäksesi sivun sinun tulee antaa salasana.", "sharing_enter_password": "Nähdäksesi sivun sinun tulee antaa salasana.",
"sharing_page_album": "Jaetut albumit",
"sharing_page_description": "Luo jaettuja albumeja jakaaksesi kuvia ja videoita läheisillesi.",
"sharing_page_empty_list": "TYHJÄ LISTA",
"sharing_sidebar_description": "Näytä jakamislinkki sivupalkissa", "sharing_sidebar_description": "Näytä jakamislinkki sivupalkissa",
"sharing_silver_appbar_create_shared_album": "Luo jaettu albumi",
"sharing_silver_appbar_share_partner": "Jaa kumppanille",
"shift_to_permanent_delete": "Paina ⇧ poistaaksesi median pysyvästi", "shift_to_permanent_delete": "Paina ⇧ poistaaksesi median pysyvästi",
"show_album_options": "Näytä albumin asetukset", "show_album_options": "Näytä albumin asetukset",
"show_albums": "Näytä albumit", "show_albums": "Näytä albumit",
@@ -1239,6 +1704,9 @@
"support_third_party_description": "Immich-asennuksesi on pakattu kolmannen osapuolen toimesta. Kohtaamasi ongelmat saattavat johtua tästä paketista, joten ilmoita niistä ensisijaisesti heille alla olevien linkkien kautta.", "support_third_party_description": "Immich-asennuksesi on pakattu kolmannen osapuolen toimesta. Kohtaamasi ongelmat saattavat johtua tästä paketista, joten ilmoita niistä ensisijaisesti heille alla olevien linkkien kautta.",
"swap_merge_direction": "Käännä yhdistämissuunta", "swap_merge_direction": "Käännä yhdistämissuunta",
"sync": "Synkronoi", "sync": "Synkronoi",
"sync_albums": "Sync albums",
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
"tag": "Lisää tunniste", "tag": "Lisää tunniste",
"tag_assets": "Lisää tunnisteita", "tag_assets": "Lisää tunnisteita",
"tag_created": "Luotu tunniste: {tag}", "tag_created": "Luotu tunniste: {tag}",
@@ -1251,6 +1719,19 @@
"theme": "Teema", "theme": "Teema",
"theme_selection": "Teeman valinta", "theme_selection": "Teeman valinta",
"theme_selection_description": "Aseta vaalea tai tumma tila automaattisesti perustuen selaimesi asetuksiin", "theme_selection_description": "Aseta vaalea tai tumma tila automaattisesti perustuen selaimesi asetuksiin",
"theme_setting_asset_list_storage_indicator_title": "Näytä tallennustilan ilmaisin kohteiden kuvakkeissa",
"theme_setting_asset_list_tiles_per_row_title": "Kohteiden määrä rivillä ({})",
"theme_setting_colorful_interface_subtitle": "Apply primary color to background surfaces.",
"theme_setting_colorful_interface_title": "Colorful interface",
"theme_setting_image_viewer_quality_subtitle": "Säädä kuvien katselun laatua",
"theme_setting_image_viewer_quality_title": "Kuvien katseluohjelman laatu",
"theme_setting_primary_color_subtitle": "Pick a color for primary actions and accents.",
"theme_setting_primary_color_title": "Primary color",
"theme_setting_system_primary_color_title": "Use system color",
"theme_setting_system_theme_switch": "Automaattinen (seuraa järjestelmän asetusta)",
"theme_setting_theme_subtitle": "Valitse sovelluksen teema-asetukset",
"theme_setting_three_stage_loading_subtitle": "Kolmivaiheinen lataaminen saattaa parantaa latauksen suorituskykyä, mutta lisää kaistankäyttöä huomattavasti.",
"theme_setting_three_stage_loading_title": "Ota kolmivaiheinen lataus käyttöön",
"they_will_be_merged_together": "Nämä tullaan yhdistämään", "they_will_be_merged_together": "Nämä tullaan yhdistämään",
"third_party_resources": "Kolmannen osapuolen resurssit", "third_party_resources": "Kolmannen osapuolen resurssit",
"time_based_memories": "Aikaan perustuvat muistot", "time_based_memories": "Aikaan perustuvat muistot",
@@ -1270,7 +1751,15 @@
"trash_all": "Vie kaikki roskakoriin", "trash_all": "Vie kaikki roskakoriin",
"trash_count": "Roskakori {count, number}", "trash_count": "Roskakori {count, number}",
"trash_delete_asset": "Poista / vie roskakoriin", "trash_delete_asset": "Poista / vie roskakoriin",
"trash_emptied": "Emptied trash",
"trash_no_results_message": "Roskakorissa olevat kuvat ja videot näytetään täällä.", "trash_no_results_message": "Roskakorissa olevat kuvat ja videot näytetään täällä.",
"trash_page_delete_all": "Poista kaikki",
"trash_page_empty_trash_dialog_content": "Haluatko poistaa roskakoriin siirretyt kohteet? Kohteet poistetaan lopullisesti Immich:sta.",
"trash_page_info": "Roskakoriin siirretyt kohteet poistetaan lopullisesti {} päivän kuluttua",
"trash_page_no_assets": "Ei poistettuja kohteita",
"trash_page_restore_all": "Palauta kaikki",
"trash_page_select_assets_btn": "Valitse kohteet",
"trash_page_title": "Roskakori",
"trashed_items_will_be_permanently_deleted_after": "Roskakorin kohteet poistetaan pysyvästi {days, plural, one {# päivän} other {# päivän}} päästä.", "trashed_items_will_be_permanently_deleted_after": "Roskakorin kohteet poistetaan pysyvästi {days, plural, one {# päivän} other {# päivän}} päästä.",
"type": "Tyyppi", "type": "Tyyppi",
"unarchive": "Palauta arkistosta", "unarchive": "Palauta arkistosta",
@@ -1297,6 +1786,8 @@
"updated_password": "Salasana päivitetty", "updated_password": "Salasana päivitetty",
"upload": "Siirrä palvelimelle", "upload": "Siirrä palvelimelle",
"upload_concurrency": "Latausten samanaikaisuus", "upload_concurrency": "Latausten samanaikaisuus",
"upload_dialog_info": "Haluatko varmuuskopioida valitut kohteet palvelimelle?",
"upload_dialog_title": "Lähetä kohde",
"upload_errors": "Lataus valmistui {count, plural, one {# virheen} other {# virheen}} kanssa. Päivitä sivu nähdäksesi ladatut tiedot.", "upload_errors": "Lataus valmistui {count, plural, one {# virheen} other {# virheen}} kanssa. Päivitä sivu nähdäksesi ladatut tiedot.",
"upload_progress": "Jäljellä {remaining, number} - Käsitelty {processed, number}/{total, number}", "upload_progress": "Jäljellä {remaining, number} - Käsitelty {processed, number}/{total, number}",
"upload_skipped_duplicates": "Ohitettiin {count, plural, one {# kaksoiskappale} other {# kaksoiskappaletta}}", "upload_skipped_duplicates": "Ohitettiin {count, plural, one {# kaksoiskappale} other {# kaksoiskappaletta}}",
@@ -1304,8 +1795,11 @@
"upload_status_errors": "Virheet", "upload_status_errors": "Virheet",
"upload_status_uploaded": "Ladattu", "upload_status_uploaded": "Ladattu",
"upload_success": "Lataus onnistui. Päivitä sivu jotta näet latauksesi.", "upload_success": "Lataus onnistui. Päivitä sivu jotta näet latauksesi.",
"upload_to_immich": "Upload to Immich ({})",
"uploading": "Uploading",
"url": "URL", "url": "URL",
"usage": "Käyttö", "usage": "Käyttö",
"use_current_connection": "use current connection",
"use_custom_date_range": "Käytä omaa aikaväliä", "use_custom_date_range": "Käytä omaa aikaväliä",
"user": "Käyttäjä", "user": "Käyttäjä",
"user_id": "Käyttäjän ID", "user_id": "Käyttäjän ID",
@@ -1320,10 +1814,16 @@
"users": "Käyttäjät", "users": "Käyttäjät",
"utilities": "Apuohjelmat", "utilities": "Apuohjelmat",
"validate": "Validoi", "validate": "Validoi",
"validate_endpoint_error": "Please enter a valid URL",
"variables": "Muuttujat", "variables": "Muuttujat",
"version": "Versio", "version": "Versio",
"version_announcement_closing": "Ystäväsi Alex", "version_announcement_closing": "Ystäväsi Alex",
"version_announcement_message": "Hei! Sovelluksen uusi versio on saatavilla. Käythän vilkaisemassa <link>julkaisun tiedot</link> ja varmistathan, että ohjelman määritykset ovat ajan tasalla. Erityisesti, jos käytössä on Watchtower tai jokin muu mekanismi Immich-sovelluksen automaattista päivitystä varten.", "version_announcement_message": "Hei! Sovelluksen uusi versio on saatavilla. Käythän vilkaisemassa <link>julkaisun tiedot</link> ja varmistathan, että ohjelman määritykset ovat ajan tasalla. Erityisesti, jos käytössä on Watchtower tai jokin muu mekanismi Immich-sovelluksen automaattista päivitystä varten.",
"version_announcement_overlay_release_notes": "julkaisutiedoissa",
"version_announcement_overlay_text_1": "Hei, kaveri! Uusi palvelinversio on saatavilla sovelluksesta",
"version_announcement_overlay_text_2": "Ota hetki aikaa vieraillaksesi",
"version_announcement_overlay_text_3": "ja varmista, että käyttämäsi docker-compose ja .env-asetukset ovat ajantasalla välttyäksesi asetusongelmilta. Varsinkin jos käytät WatchToweria tai jotain muuta mekanismia päivittääksesi palvelinsovellusta automaattisesti.",
"version_announcement_overlay_title": "Uusi palvelinversio saatavilla 🎉",
"version_history": "Versiohistoria", "version_history": "Versiohistoria",
"version_history_item": "Asennettu {version} päivänä {date}", "version_history_item": "Asennettu {version} päivänä {date}",
"video": "Video", "video": "Video",
@@ -1341,15 +1841,20 @@
"view_next_asset": "Näytä seuraava", "view_next_asset": "Näytä seuraava",
"view_previous_asset": "Näytä edellinen", "view_previous_asset": "Näytä edellinen",
"view_stack": "Näytä pinona", "view_stack": "Näytä pinona",
"viewer_remove_from_stack": "Poista pinosta",
"viewer_stack_use_as_main_asset": "Käytä pääkohteena",
"viewer_unstack": "Pura pino",
"visibility_changed": "{count, plural, one {# henkilön} other {# henkilöiden}} näkyvyys vaihdettu", "visibility_changed": "{count, plural, one {# henkilön} other {# henkilöiden}} näkyvyys vaihdettu",
"waiting": "Odottaa", "waiting": "Odottaa",
"warning": "Varoitus", "warning": "Varoitus",
"week": "Viikko", "week": "Viikko",
"welcome": "Tervetuloa", "welcome": "Tervetuloa",
"welcome_to_immich": "Tervetuloa Immichiin", "welcome_to_immich": "Tervetuloa Immichiin",
"wifi_name": "WiFi Name",
"year": "Vuosi", "year": "Vuosi",
"years_ago": "{years, plural, one {# vuosi} other {# vuotta}} sitten", "years_ago": "{years, plural, one {# vuosi} other {# vuotta}} sitten",
"yes": "Kyllä", "yes": "Kyllä",
"you_dont_have_any_shared_links": "Sinulla ei ole jaettuja linkkejä", "you_dont_have_any_shared_links": "Sinulla ei ole jaettuja linkkejä",
"your_wifi_name": "Your WiFi name",
"zoom_image": "Zoomaa kuvaa" "zoom_image": "Zoomaa kuvaa"
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -4,6 +4,7 @@
"account_settings": "अभिलेख व्यवस्था", "account_settings": "अभिलेख व्यवस्था",
"acknowledge": "स्वीकार करें", "acknowledge": "स्वीकार करें",
"action": "कार्रवाई", "action": "कार्रवाई",
"action_common_update": "Update",
"actions": "कार्यवाहियां", "actions": "कार्यवाहियां",
"active": "सक्रिय", "active": "सक्रिय",
"activity": "गतिविधि", "activity": "गतिविधि",
@@ -13,6 +14,7 @@
"add_a_location": "एक स्थान जोड़ें", "add_a_location": "एक स्थान जोड़ें",
"add_a_name": "नाम जोड़ें", "add_a_name": "नाम जोड़ें",
"add_a_title": "एक शीर्षक जोड़ें", "add_a_title": "एक शीर्षक जोड़ें",
"add_endpoint": "Add endpoint",
"add_exclusion_pattern": "अपवाद उदाहरण जोड़ें", "add_exclusion_pattern": "अपवाद उदाहरण जोड़ें",
"add_import_path": "आयात पथ जोड़ें", "add_import_path": "आयात पथ जोड़ें",
"add_location": "स्थान जोड़ें", "add_location": "स्थान जोड़ें",
@@ -22,6 +24,8 @@
"add_photos": "फ़ोटो जोड़ें", "add_photos": "फ़ोटो जोड़ें",
"add_to": "इसमें जोड़ें…", "add_to": "इसमें जोड़ें…",
"add_to_album": "एल्बम में जोड़ें", "add_to_album": "एल्बम में जोड़ें",
"add_to_album_bottom_sheet_added": "Added to {album}",
"add_to_album_bottom_sheet_already_exists": "Already in {album}",
"add_to_shared_album": "साझा एल्बम में जोड़ें", "add_to_shared_album": "साझा एल्बम में जोड़ें",
"add_url": "URL जोड़ें", "add_url": "URL जोड़ें",
"added_to_archive": "संग्रहीत कर दिया गया है", "added_to_archive": "संग्रहीत कर दिया गया है",
@@ -146,7 +150,6 @@
"no_pattern_added": "कोई पैटर्न नहीं जोड़ा गया", "no_pattern_added": "कोई पैटर्न नहीं जोड़ा गया",
"note_apply_storage_label_previous_assets": "नोट: पहले अपलोड की गई संपत्तियों पर स्टोरेज लेबल लागू करने के लिए, चलाएँ", "note_apply_storage_label_previous_assets": "नोट: पहले अपलोड की गई संपत्तियों पर स्टोरेज लेबल लागू करने के लिए, चलाएँ",
"note_cannot_be_changed_later": "नोट: इसे बाद में बदला नहीं जा सकता!", "note_cannot_be_changed_later": "नोट: इसे बाद में बदला नहीं जा सकता!",
"note_unlimited_quota": "नोट: असीमित कोटा के लिए 0 दर्ज करें",
"notification_email_from_address": "इस पते से", "notification_email_from_address": "इस पते से",
"notification_email_from_address_description": "प्रेषक का ईमेल पता, उदाहरण के लिए: \"इमिच फोटो सर्वर <noreply@example.com>\"", "notification_email_from_address_description": "प्रेषक का ईमेल पता, उदाहरण के लिए: \"इमिच फोटो सर्वर <noreply@example.com>\"",
"notification_email_host_description": "ईमेल सर्वर का होस्ट (उदा. smtp.immitch.app)", "notification_email_host_description": "ईमेल सर्वर का होस्ट (उदा. smtp.immitch.app)",
@@ -313,17 +316,41 @@
"admin_password": "व्यवस्थापक पासवर्ड", "admin_password": "व्यवस्थापक पासवर्ड",
"administration": "प्रशासन", "administration": "प्रशासन",
"advanced": "विकसित", "advanced": "विकसित",
"advanced_settings_log_level_title": "Log level: {}",
"advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.",
"advanced_settings_prefer_remote_title": "Prefer remote images",
"advanced_settings_proxy_headers_subtitle": "Define proxy headers Immich should send with each network request",
"advanced_settings_proxy_headers_title": "Proxy Headers",
"advanced_settings_self_signed_ssl_subtitle": "Skips SSL certificate verification for the server endpoint. Required for self-signed certificates.",
"advanced_settings_self_signed_ssl_title": "Allow self-signed SSL certificates",
"advanced_settings_tile_subtitle": "Advanced user's settings",
"advanced_settings_troubleshooting_subtitle": "Enable additional features for troubleshooting",
"advanced_settings_troubleshooting_title": "Troubleshooting",
"album_added": "एल्बम जोड़ा गया", "album_added": "एल्बम जोड़ा गया",
"album_added_notification_setting_description": "जब आपको किसी साझा एल्बम में जोड़ा जाए तो एक ईमेल सूचना प्राप्त करें", "album_added_notification_setting_description": "जब आपको किसी साझा एल्बम में जोड़ा जाए तो एक ईमेल सूचना प्राप्त करें",
"album_cover_updated": "एल्बम कवर अपडेट किया गया", "album_cover_updated": "एल्बम कवर अपडेट किया गया",
"album_info_card_backup_album_excluded": "EXCLUDED",
"album_info_card_backup_album_included": "INCLUDED",
"album_info_updated": "एल्बम की जानकारी अपडेट की गई", "album_info_updated": "एल्बम की जानकारी अपडेट की गई",
"album_leave": "एल्बम छोड़ें?", "album_leave": "एल्बम छोड़ें?",
"album_name": "एल्बम का नाम", "album_name": "एल्बम का नाम",
"album_options": "एल्बम विकल्प", "album_options": "एल्बम विकल्प",
"album_remove_user": "उपयोगकर्ता हटाएं?", "album_remove_user": "उपयोगकर्ता हटाएं?",
"album_share_no_users": "ऐसा लगता है कि आपने यह एल्बम सभी उपयोगकर्ताओं के साथ साझा कर दिया है या आपके पास साझा करने के लिए कोई उपयोगकर्ता नहीं है।", "album_share_no_users": "ऐसा लगता है कि आपने यह एल्बम सभी उपयोगकर्ताओं के साथ साझा कर दिया है या आपके पास साझा करने के लिए कोई उपयोगकर्ता नहीं है।",
"album_thumbnail_card_item": "1 item",
"album_thumbnail_card_items": "{} items",
"album_thumbnail_card_shared": " · Shared",
"album_thumbnail_shared_by": "Shared by {}",
"album_updated": "एल्बम अपडेट किया गया", "album_updated": "एल्बम अपडेट किया गया",
"album_updated_setting_description": "जब किसी साझा एल्बम में नई संपत्तियाँ हों तो एक ईमेल सूचना प्राप्त करें", "album_updated_setting_description": "जब किसी साझा एल्बम में नई संपत्तियाँ हों तो एक ईमेल सूचना प्राप्त करें",
"album_viewer_appbar_delete_confirm": "Are you sure you want to delete this album from your account?",
"album_viewer_appbar_share_err_delete": "Failed to delete album",
"album_viewer_appbar_share_err_leave": "Failed to leave album",
"album_viewer_appbar_share_err_remove": "There are problems in removing assets from album",
"album_viewer_appbar_share_err_title": "Failed to change album title",
"album_viewer_appbar_share_leave": "Leave album",
"album_viewer_appbar_share_to": "साझा करें",
"album_viewer_page_share_add_users": "Add users",
"album_with_link_access": "लिंक वाले किसी भी व्यक्ति को इस एल्बम में फ़ोटो और लोगों को देखने दें।", "album_with_link_access": "लिंक वाले किसी भी व्यक्ति को इस एल्बम में फ़ोटो और लोगों को देखने दें।",
"albums": "एलबम", "albums": "एलबम",
"all": "सभी", "all": "सभी",
@@ -338,29 +365,120 @@
"api_key_description": "यह की केवल एक बार दिखाई जाएगी। विंडो बंद करने से पहले कृपया इसे कॉपी करना सुनिश्चित करें।।", "api_key_description": "यह की केवल एक बार दिखाई जाएगी। विंडो बंद करने से पहले कृपया इसे कॉपी करना सुनिश्चित करें।।",
"api_key_empty": "आपका एपीआई कुंजी नाम खाली नहीं होना चाहिए", "api_key_empty": "आपका एपीआई कुंजी नाम खाली नहीं होना चाहिए",
"api_keys": "एपीआई कीज", "api_keys": "एपीआई कीज",
"app_bar_signout_dialog_content": "क्या आप सुनिश्चित हैं कि आप लॉग आउट करना चाहते हैं?",
"app_bar_signout_dialog_ok": "हाँ",
"app_bar_signout_dialog_title": "लॉग आउट",
"app_settings": "एप्लिकेशन सेटिंग", "app_settings": "एप्लिकेशन सेटिंग",
"appears_in": "प्रकट होता है", "appears_in": "प्रकट होता है",
"archive": "संग्रहालय", "archive": "संग्रहालय",
"archive_or_unarchive_photo": "फ़ोटो को संग्रहीत या असंग्रहीत करें", "archive_or_unarchive_photo": "फ़ोटो को संग्रहीत या असंग्रहीत करें",
"archive_page_no_archived_assets": "No archived assets found",
"archive_page_title": "Archive ({})",
"archive_size": "पुरालेख आकार", "archive_size": "पुरालेख आकार",
"archive_size_description": "डाउनलोड के लिए संग्रह आकार कॉन्फ़िगर करें (GiB में)", "archive_size_description": "डाउनलोड के लिए संग्रह आकार कॉन्फ़िगर करें (GiB में)",
"archived": "संग्रहित",
"are_these_the_same_person": "क्या ये वही व्यक्ति हैं?", "are_these_the_same_person": "क्या ये वही व्यक्ति हैं?",
"are_you_sure_to_do_this": "क्या आप वास्तव में इसे करना चाहते हैं?", "are_you_sure_to_do_this": "क्या आप वास्तव में इसे करना चाहते हैं?",
"asset_action_delete_err_read_only": "Cannot delete read only asset(s), skipping",
"asset_action_share_err_offline": "Cannot fetch offline asset(s), skipping",
"asset_added_to_album": "एल्बम में जोड़ा गया", "asset_added_to_album": "एल्बम में जोड़ा गया",
"asset_adding_to_album": "एल्बम में जोड़ा जा रहा है..।", "asset_adding_to_album": "एल्बम में जोड़ा जा रहा है..।",
"asset_description_updated": "संपत्ति विवरण अद्यतन कर दिया गया है", "asset_description_updated": "संपत्ति विवरण अद्यतन कर दिया गया है",
"asset_has_unassigned_faces": "एसेट में अनिर्धारित चेहरे हैं", "asset_has_unassigned_faces": "एसेट में अनिर्धारित चेहरे हैं",
"asset_hashing": "हैशिंग..।", "asset_hashing": "हैशिंग..।",
"asset_list_group_by_sub_title": "Group by",
"asset_list_layout_settings_dynamic_layout_title": "Dynamic layout",
"asset_list_layout_settings_group_automatically": "Automatic",
"asset_list_layout_settings_group_by": "Group assets by",
"asset_list_layout_settings_group_by_month_day": "Month + day",
"asset_list_layout_sub_title": "Layout",
"asset_list_settings_subtitle": "Photo grid layout settings",
"asset_list_settings_title": "Photo Grid",
"asset_offline": "संपत्ति ऑफ़लाइन", "asset_offline": "संपत्ति ऑफ़लाइन",
"asset_offline_description": "यह संपत्ति ऑफ़लाइन है।", "asset_offline_description": "यह संपत्ति ऑफ़लाइन है।",
"asset_restored_successfully": "संपत्ति(याँ) सफलतापूर्वक पुनर्स्थापित की गईं",
"asset_skipped": "छोड़ा गया", "asset_skipped": "छोड़ा गया",
"asset_uploaded": "अपलोड किए गए", "asset_uploaded": "अपलोड किए गए",
"asset_uploading": "अपलोड हो रहा है..।", "asset_uploading": "अपलोड हो रहा है..।",
"asset_viewer_settings_subtitle": "Manage your gallery viewer settings",
"asset_viewer_settings_title": "Asset Viewer",
"assets": "संपत्तियां", "assets": "संपत्तियां",
"assets_deleted_permanently": "{} संपत्ति(याँ) स्थायी रूप से हटा दी गईं",
"assets_deleted_permanently_from_server": "{} संपत्ति(याँ) इमिच सर्वर से स्थायी रूप से हटा दी गईं",
"assets_removed_permanently_from_device": "{} संपत्ति(याँ) आपके डिवाइस से स्थायी रूप से हटा दी गईं",
"assets_restore_confirmation": "क्या आप वाकई अपनी सभी नष्ट की गई संपत्तियों को पुनर्स्थापित करना चाहते हैं? आप इस क्रिया को पूर्ववत नहीं कर सकते!", "assets_restore_confirmation": "क्या आप वाकई अपनी सभी नष्ट की गई संपत्तियों को पुनर्स्थापित करना चाहते हैं? आप इस क्रिया को पूर्ववत नहीं कर सकते!",
"assets_restored_successfully": "{} संपत्ति(याँ) सफलतापूर्वक पुनर्स्थापित की गईं",
"assets_trashed": "{} संपत्ति(याँ) कचरे में डाली गईं",
"assets_trashed_from_server": "{} संपत्ति(याँ) इमिच सर्वर से कचरे में डाली गईं",
"authorized_devices": "अधिकृत उपकरण", "authorized_devices": "अधिकृत उपकरण",
"automatic_endpoint_switching_subtitle": "Connect locally over designated Wi-Fi when available and use alternative connections elsewhere",
"automatic_endpoint_switching_title": "Automatic URL switching",
"back": "वापस", "back": "वापस",
"back_close_deselect": "वापस जाएँ, बंद करें, या अचयनित करें", "back_close_deselect": "वापस जाएँ, बंद करें, या अचयनित करें",
"background_location_permission": "Background location permission",
"background_location_permission_content": "In order to switch networks when running in the background, Immich must *always* have precise location access so the app can read the Wi-Fi network's name",
"backup_album_selection_page_albums_device": "Albums on device ({})",
"backup_album_selection_page_albums_tap": "Tap to include, double tap to exclude",
"backup_album_selection_page_assets_scatter": "Assets can scatter across multiple albums. Thus, albums can be included or excluded during the backup process.",
"backup_album_selection_page_select_albums": "Select albums",
"backup_album_selection_page_selection_info": "Selection Info",
"backup_album_selection_page_total_assets": "Total unique assets",
"backup_all": "All",
"backup_background_service_backup_failed_message": "Failed to backup assets. Retrying…",
"backup_background_service_connection_failed_message": "Failed to connect to the server. Retrying…",
"backup_background_service_current_upload_notification": "Uploading {}",
"backup_background_service_default_notification": "Checking for new assets…",
"backup_background_service_error_title": "Backup error",
"backup_background_service_in_progress_notification": "Backing up your assets…",
"backup_background_service_upload_failure_notification": "Failed to upload {}",
"backup_controller_page_albums": "Backup Albums",
"backup_controller_page_background_app_refresh_disabled_content": "Enable background app refresh in Settings > General > Background App Refresh in order to use background backup.",
"backup_controller_page_background_app_refresh_disabled_title": "Background app refresh disabled",
"backup_controller_page_background_app_refresh_enable_button_text": "Go to settings",
"backup_controller_page_background_battery_info_link": "Show me how",
"backup_controller_page_background_battery_info_message": "For the best background backup experience, please disable any battery optimizations restricting background activity for Immich.\n\nSince this is device-specific, please lookup the required information for your device manufacturer.",
"backup_controller_page_background_battery_info_ok": "OK",
"backup_controller_page_background_battery_info_title": "Battery optimizations",
"backup_controller_page_background_charging": "Only while charging",
"backup_controller_page_background_configure_error": "Failed to configure the background service",
"backup_controller_page_background_delay": "Delay new assets backup: {}",
"backup_controller_page_background_description": "Turn on the background service to automatically backup any new assets without needing to open the app",
"backup_controller_page_background_is_off": "Automatic background backup is off",
"backup_controller_page_background_is_on": "Automatic background backup is on",
"backup_controller_page_background_turn_off": "Turn off background service",
"backup_controller_page_background_turn_on": "Turn on background service",
"backup_controller_page_background_wifi": "Only on WiFi",
"backup_controller_page_backup": "Backup",
"backup_controller_page_backup_selected": "Selected: ",
"backup_controller_page_backup_sub": "Backed up photos and videos",
"backup_controller_page_created": "Created on: {}",
"backup_controller_page_desc_backup": "Turn on foreground backup to automatically upload new assets to the server when opening the app.",
"backup_controller_page_excluded": "Excluded: ",
"backup_controller_page_failed": "Failed ({})",
"backup_controller_page_filename": "File name: {} [{}]",
"backup_controller_page_id": "ID: {}",
"backup_controller_page_info": "Backup Information",
"backup_controller_page_none_selected": "None selected",
"backup_controller_page_remainder": "Remainder",
"backup_controller_page_remainder_sub": "Remaining photos and videos to back up from selection",
"backup_controller_page_server_storage": "Server Storage",
"backup_controller_page_start_backup": "Start Backup",
"backup_controller_page_status_off": "Automatic foreground backup is off",
"backup_controller_page_status_on": "Automatic foreground backup is on",
"backup_controller_page_storage_format": "{} of {} used",
"backup_controller_page_to_backup": "Albums to be backed up",
"backup_controller_page_total_sub": "All unique photos and videos from selected albums",
"backup_controller_page_turn_off": "Turn off foreground backup",
"backup_controller_page_turn_on": "Turn on foreground backup",
"backup_controller_page_uploading_file_info": "Uploading file info",
"backup_err_only_album": "Cannot remove the only album",
"backup_info_card_assets": "assets",
"backup_manual_cancelled": "Cancelled",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"backup_options_page_title": "Backup options",
"backup_setting_subtitle": "Manage background and foreground upload settings",
"backward": "पिछला", "backward": "पिछला",
"birthdate_saved": "जन्मतिथि सफलतापूर्वक सहेजी गई", "birthdate_saved": "जन्मतिथि सफलतापूर्वक सहेजी गई",
"birthdate_set_description": "जन्मतिथि का उपयोग फोटो के समय इस व्यक्ति की आयु की गणना करने के लिए किया जाता है।", "birthdate_set_description": "जन्मतिथि का उपयोग फोटो के समय इस व्यक्ति की आयु की गणना करने के लिए किया जाता है।",
@@ -368,24 +486,52 @@
"build": "निर्माण", "build": "निर्माण",
"build_image": "छवि बनाएँ", "build_image": "छवि बनाएँ",
"buy": "इम्मीच खरीदो", "buy": "इम्मीच खरीदो",
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
"cache_settings_clear_cache_button": "Clear cache",
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.",
"cache_settings_duplicated_assets_clear_button": "CLEAR",
"cache_settings_duplicated_assets_subtitle": "Photos and videos that are black listed by the app",
"cache_settings_duplicated_assets_title": "Duplicated Assets ({})",
"cache_settings_image_cache_size": "Image cache size ({} assets)",
"cache_settings_statistics_album": "Library thumbnails",
"cache_settings_statistics_assets": "{} assets ({})",
"cache_settings_statistics_full": "Full images",
"cache_settings_statistics_shared": "Shared album thumbnails",
"cache_settings_statistics_thumbnail": "Thumbnails",
"cache_settings_statistics_title": "Cache usage",
"cache_settings_subtitle": "Control the caching behaviour of the Immich mobile application",
"cache_settings_thumbnail_size": "Thumbnail cache size ({} assets)",
"cache_settings_tile_subtitle": "स्थानीय संग्रहण के व्यवहार को नियंत्रित करें",
"cache_settings_tile_title": "स्थानीय संग्रहण",
"cache_settings_title": "Caching Settings",
"camera": "कैमरा", "camera": "कैमरा",
"camera_brand": "कैमरा ब्रांड", "camera_brand": "कैमरा ब्रांड",
"camera_model": "कैमरा मॉडल", "camera_model": "कैमरा मॉडल",
"cancel": "रद्द करना", "cancel": "रद्द करना",
"cancel_search": "खोज रद्द करें", "cancel_search": "खोज रद्द करें",
"canceled": "Canceled",
"cannot_merge_people": "लोगों का विलय नहीं हो सकता", "cannot_merge_people": "लोगों का विलय नहीं हो सकता",
"cannot_undo_this_action": "आप इस क्रिया को पूर्ववत नहीं कर सकते!", "cannot_undo_this_action": "आप इस क्रिया को पूर्ववत नहीं कर सकते!",
"cannot_update_the_description": "विवरण अद्यतन नहीं किया जा सकता", "cannot_update_the_description": "विवरण अद्यतन नहीं किया जा सकता",
"change_date": "बदलाव दिनांक", "change_date": "बदलाव दिनांक",
"change_display_order": "Change display order",
"change_expiration_time": "समाप्ति समय बदलें", "change_expiration_time": "समाप्ति समय बदलें",
"change_location": "स्थान बदलें", "change_location": "स्थान बदलें",
"change_name": "नाम परिवर्तन करें", "change_name": "नाम परिवर्तन करें",
"change_name_successfully": "नाम सफलतापूर्वक बदलें", "change_name_successfully": "नाम सफलतापूर्वक बदलें",
"change_password": "पासवर्ड बदलें", "change_password": "पासवर्ड बदलें",
"change_password_description": "यह या तो पहली बार है जब आप सिस्टम में साइन इन कर रहे हैं या आपका पासवर्ड बदलने का अनुरोध किया गया है।", "change_password_description": "यह या तो पहली बार है जब आप सिस्टम में साइन इन कर रहे हैं या आपका पासवर्ड बदलने का अनुरोध किया गया है।",
"change_password_form_confirm_password": "Confirm Password",
"change_password_form_description": "Hi {name},\n\nThis is either the first time you are signing into the system or a request has been made to change your password. Please enter the new password below.",
"change_password_form_new_password": "New Password",
"change_password_form_password_mismatch": "Passwords do not match",
"change_password_form_reenter_new_password": "Re-enter New Password",
"change_your_password": "अपना पासवर्ड बदलें", "change_your_password": "अपना पासवर्ड बदलें",
"changed_visibility_successfully": "दृश्यता सफलतापूर्वक परिवर्तित", "changed_visibility_successfully": "दृश्यता सफलतापूर्वक परिवर्तित",
"check_all": "सभी चेक करें", "check_all": "सभी चेक करें",
"check_corrupt_asset_backup": "Check for corrupt asset backups",
"check_corrupt_asset_backup_button": "Perform check",
"check_corrupt_asset_backup_description": "Run this check only over Wi-Fi and once all assets have been backed-up. The procedure might take a few minutes.",
"check_logs": "लॉग जांचें", "check_logs": "लॉग जांचें",
"choose_matching_people_to_merge": "मर्ज करने के लिए मिलते-जुलते लोगों को चुनें", "choose_matching_people_to_merge": "मर्ज करने के लिए मिलते-जुलते लोगों को चुनें",
"city": "शहर", "city": "शहर",
@@ -394,6 +540,14 @@
"clear_all_recent_searches": "सभी हालिया खोजें साफ़ करें", "clear_all_recent_searches": "सभी हालिया खोजें साफ़ करें",
"clear_message": "स्पष्ट संदेश", "clear_message": "स्पष्ट संदेश",
"clear_value": "स्पष्ट मूल्य", "clear_value": "स्पष्ट मूल्य",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove_msg": "Client certificate is removed",
"client_cert_subtitle": "Supports PKCS12 (.p12, .pfx) format only. Certificate Import/Remove is available only before login",
"client_cert_title": "SSL Client Certificate",
"close": "बंद", "close": "बंद",
"collapse": "गिर जाना", "collapse": "गिर जाना",
"collapse_all": "सभी को संकुचित करें", "collapse_all": "सभी को संकुचित करें",
@@ -402,6 +556,9 @@
"comment_options": "टिप्पणी विकल्प", "comment_options": "टिप्पणी विकल्प",
"comments_and_likes": "टिप्पणियाँ और पसंद", "comments_and_likes": "टिप्पणियाँ और पसंद",
"comments_are_disabled": "टिप्पणियाँ अक्षम हैं", "comments_are_disabled": "टिप्पणियाँ अक्षम हैं",
"common_create_new_album": "Create new album",
"common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.",
"completed": "Completed",
"confirm": "पुष्टि", "confirm": "पुष्टि",
"confirm_admin_password": "एडमिन पासवर्ड की पुष्टि करें", "confirm_admin_password": "एडमिन पासवर्ड की पुष्टि करें",
"confirm_delete_shared_link": "क्या आप वाकई इस साझा लिंक को हटाना चाहते हैं?", "confirm_delete_shared_link": "क्या आप वाकई इस साझा लिंक को हटाना चाहते हैं?",
@@ -409,6 +566,15 @@
"contain": "समाहित", "contain": "समाहित",
"context": "संदर्भ", "context": "संदर्भ",
"continue": "जारी", "continue": "जारी",
"control_bottom_app_bar_album_info_shared": "{} items · Shared",
"control_bottom_app_bar_create_new_album": "Create new album",
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
"control_bottom_app_bar_delete_from_local": "Delete from device",
"control_bottom_app_bar_edit_location": "Edit Location",
"control_bottom_app_bar_edit_time": "Edit Date & Time",
"control_bottom_app_bar_share_link": "Share Link",
"control_bottom_app_bar_share_to": "Share To",
"control_bottom_app_bar_trash_from_immich": "Move to Trash",
"copied_image_to_clipboard": "छवि को क्लिपबोर्ड पर कॉपी किया गया।", "copied_image_to_clipboard": "छवि को क्लिपबोर्ड पर कॉपी किया गया।",
"copied_to_clipboard": "क्लिपबोर्ड पर नकल!", "copied_to_clipboard": "क्लिपबोर्ड पर नकल!",
"copy_error": "प्रतिलिपि त्रुटि", "copy_error": "प्रतिलिपि त्रुटि",
@@ -423,22 +589,32 @@
"covers": "आवरण", "covers": "आवरण",
"create": "तैयार करें", "create": "तैयार करें",
"create_album": "एल्बम बनाओ", "create_album": "एल्बम बनाओ",
"create_album_page_untitled": "Untitled",
"create_library": "लाइब्रेरी बनाएं", "create_library": "लाइब्रेरी बनाएं",
"create_link": "लिंक बनाएं", "create_link": "लिंक बनाएं",
"create_link_to_share": "शेयर करने के लिए लिंक बनाएं", "create_link_to_share": "शेयर करने के लिए लिंक बनाएं",
"create_link_to_share_description": "लिंक वाले किसी भी व्यक्ति को चयनित फ़ोटो देखने दें", "create_link_to_share_description": "लिंक वाले किसी भी व्यक्ति को चयनित फ़ोटो देखने दें",
"create_new": "नया बनाएं",
"create_new_person": "नया व्यक्ति बनाएं", "create_new_person": "नया व्यक्ति बनाएं",
"create_new_person_hint": "चयनित संपत्तियों को एक नए व्यक्ति को सौंपें", "create_new_person_hint": "चयनित संपत्तियों को एक नए व्यक्ति को सौंपें",
"create_new_user": "नया उपयोगकर्ता बनाएं", "create_new_user": "नया उपयोगकर्ता बनाएं",
"create_shared_album_page_share_add_assets": "ADD ASSETS",
"create_shared_album_page_share_select_photos": "Select Photos",
"create_user": "उपयोगकर्ता बनाइये", "create_user": "उपयोगकर्ता बनाइये",
"created": "बनाया", "created": "बनाया",
"crop": "छाँटें",
"curated_object_page_title": "Things",
"current_device": "वर्तमान उपकरण", "current_device": "वर्तमान उपकरण",
"current_server_address": "Current server address",
"custom_locale": "कस्टम लोकेल", "custom_locale": "कस्टम लोकेल",
"custom_locale_description": "भाषा और क्षेत्र के आधार पर दिनांक और संख्याएँ प्रारूपित करें", "custom_locale_description": "भाषा और क्षेत्र के आधार पर दिनांक और संख्याएँ प्रारूपित करें",
"daily_title_text_date": "E, MMM dd",
"daily_title_text_date_year": "E, MMM dd, yyyy",
"dark": "डार्क", "dark": "डार्क",
"date_after": "इसके बाद की तारीख", "date_after": "इसके बाद की तारीख",
"date_and_time": "तिथि और समय", "date_and_time": "तिथि और समय",
"date_before": "पहले की तारीख", "date_before": "पहले की तारीख",
"date_format": "E, LLL d, y • h:mm a",
"date_of_birth_saved": "जन्मतिथि सफलतापूर्वक सहेजी गई", "date_of_birth_saved": "जन्मतिथि सफलतापूर्वक सहेजी गई",
"date_range": "तिथि सीमा", "date_range": "तिथि सीमा",
"day": "दिन", "day": "दिन",
@@ -448,14 +624,25 @@
"delete": "हटाएँ", "delete": "हटाएँ",
"delete_album": "एल्बम हटाएँ", "delete_album": "एल्बम हटाएँ",
"delete_api_key_prompt": "क्या आप वाकई इस एपीआई कुंजी को हटाना चाहते हैं?", "delete_api_key_prompt": "क्या आप वाकई इस एपीआई कुंजी को हटाना चाहते हैं?",
"delete_dialog_alert": "These items will be permanently deleted from Immich and from your device",
"delete_dialog_alert_local": "These items will be permanently removed from your device but still be available on the Immich server",
"delete_dialog_alert_local_non_backed_up": "Some of the items aren't backed up to Immich and will be permanently removed from your device",
"delete_dialog_alert_remote": "These items will be permanently deleted from the Immich server",
"delete_dialog_ok_force": "Delete Anyway",
"delete_dialog_title": "Delete Permanently",
"delete_duplicates_confirmation": "क्या आप वाकई इन डुप्लिकेट को स्थायी रूप से हटाना चाहते हैं?", "delete_duplicates_confirmation": "क्या आप वाकई इन डुप्लिकेट को स्थायी रूप से हटाना चाहते हैं?",
"delete_key": "कुंजी हटाएँ", "delete_key": "कुंजी हटाएँ",
"delete_library": "लाइब्रेरी हटाएँ", "delete_library": "लाइब्रेरी हटाएँ",
"delete_link": "लिंक हटाएँ", "delete_link": "लिंक हटाएँ",
"delete_local_dialog_ok_backed_up_only": "Delete Backed Up Only",
"delete_local_dialog_ok_force": "Delete Anyway",
"delete_shared_link": "साझा किए गए लिंक को हटाएं", "delete_shared_link": "साझा किए गए लिंक को हटाएं",
"delete_shared_link_dialog_title": "साझा किए गए लिंक को हटाएं",
"delete_user": "उपभोक्ता मिटायें", "delete_user": "उपभोक्ता मिटायें",
"deleted_shared_link": "साझा किया गया लिंक हटा दिया गया", "deleted_shared_link": "साझा किया गया लिंक हटा दिया गया",
"description": "वर्णन", "description": "वर्णन",
"description_input_hint_text": "Add description...",
"description_input_submit_error": "Error updating description, check the log for more details",
"details": "विवरण", "details": "विवरण",
"direction": "दिशा", "direction": "दिशा",
"disabled": "अक्षम", "disabled": "अक्षम",
@@ -470,9 +657,23 @@
"do_not_show_again": "इस संदेश को दुबारा मत दिखाना", "do_not_show_again": "इस संदेश को दुबारा मत दिखाना",
"done": "ठीक है", "done": "ठीक है",
"download": "डाउनलोड करें", "download": "डाउनलोड करें",
"download_canceled": "डाउनलोड रद्द कर दिया गया",
"download_complete": "डाउनलोड पूरा",
"download_enqueue": "डाउनलोड कतार में है",
"download_error": "डाउनलोड त्रुटि",
"download_failed": "डाउनलोड विफल",
"download_filename": "फ़ाइल: {}",
"download_finished": "डाउनलोड समाप्त",
"download_notfound": "डाउनलोड नहीं मिला",
"download_paused": "डाउनलोड स्थगित",
"download_settings": "डाउनलोड करना", "download_settings": "डाउनलोड करना",
"download_settings_description": "संपत्ति डाउनलोड से संबंधित सेटिंग्स प्रबंधित करें", "download_settings_description": "संपत्ति डाउनलोड से संबंधित सेटिंग्स प्रबंधित करें",
"download_started": "डाउनलोड प्रारंभ हुआ",
"download_sucess": "डाउनलोड सफल",
"download_sucess_android": "मीडिया DCIM/Immich में डाउनलोड हो गया है",
"download_waiting_to_retry": "पुनः प्रयास करने का इंतजार कर रहा है",
"downloading": "डाउनलोड", "downloading": "डाउनलोड",
"downloading_media": "मीडिया डाउनलोड हो रहा है",
"drop_files_to_upload": "अपलोड करने के लिए फ़ाइलें कहीं भी छोड़ें", "drop_files_to_upload": "अपलोड करने के लिए फ़ाइलें कहीं भी छोड़ें",
"duplicates": "डुप्लिकेट", "duplicates": "डुप्लिकेट",
"duplicates_description": "प्रत्येक समूह को यह इंगित करके हल करें कि कौन सा, यदि कोई है, डुप्लिकेट है", "duplicates_description": "प्रत्येक समूह को यह इंगित करके हल करें कि कौन सा, यदि कोई है, डुप्लिकेट है",
@@ -489,6 +690,7 @@
"edit_key": "कुंजी संपादित करें", "edit_key": "कुंजी संपादित करें",
"edit_link": "लिंक संपादित करें", "edit_link": "लिंक संपादित करें",
"edit_location": "स्थान संपादित करें", "edit_location": "स्थान संपादित करें",
"edit_location_dialog_title": "Location",
"edit_name": "नाम संपादित करें", "edit_name": "नाम संपादित करें",
"edit_people": "लोगों को संपादित करें", "edit_people": "लोगों को संपादित करें",
"edit_title": "शीर्षक संपादित करें", "edit_title": "शीर्षक संपादित करें",
@@ -496,13 +698,18 @@
"edited": "संपादित", "edited": "संपादित",
"editor": "", "editor": "",
"email": "ईमेल", "email": "ईमेल",
"empty_folder": "This folder is empty",
"empty_trash": "कूड़ेदान खाली करें", "empty_trash": "कूड़ेदान खाली करें",
"empty_trash_confirmation": "क्या आपको यकीन है कि आप कचरा खाली करना चाहते हैं? यह इमिच से स्थायी रूप से कचरा में सभी संपत्तियों को हटा देगा।\nआप इस कार्रवाई को नहीं रोक सकते!", "empty_trash_confirmation": "क्या आपको यकीन है कि आप कचरा खाली करना चाहते हैं? यह इमिच से स्थायी रूप से कचरा में सभी संपत्तियों को हटा देगा।\nआप इस कार्रवाई को नहीं रोक सकते!",
"enable": "सक्षम", "enable": "सक्षम",
"enabled": "सक्रिय", "enabled": "सक्रिय",
"end_date": "अंतिम तिथि", "end_date": "अंतिम तिथि",
"enqueued": "Enqueued",
"enter_wifi_name": "Enter WiFi name",
"error": "गलती", "error": "गलती",
"error_change_sort_album": "Failed to change album sort order",
"error_loading_image": "छवि लोड करने में त्रुटि", "error_loading_image": "छवि लोड करने में त्रुटि",
"error_saving_image": "त्रुटि: {}",
"error_title": "त्रुटि - कुछ गलत हो गया", "error_title": "त्रुटि - कुछ गलत हो गया",
"errors": { "errors": {
"cannot_navigate_next_asset": "अगली संपत्ति पर नेविगेट नहीं किया जा सकता", "cannot_navigate_next_asset": "अगली संपत्ति पर नेविगेट नहीं किया जा सकता",
@@ -616,8 +823,21 @@
"unable_to_upload_file": "फाइल अपलोड करने में असमर्थ" "unable_to_upload_file": "फाइल अपलोड करने में असमर्थ"
}, },
"exif": "एक्सिफ", "exif": "एक्सिफ",
"exif_bottom_sheet_description": "Add Description...",
"exif_bottom_sheet_details": "DETAILS",
"exif_bottom_sheet_location": "LOCATION",
"exif_bottom_sheet_people": "PEOPLE",
"exif_bottom_sheet_person_add_person": "Add name",
"exif_bottom_sheet_person_age": "Age {}",
"exif_bottom_sheet_person_age_months": "Age {} months",
"exif_bottom_sheet_person_age_year_months": "Age 1 year, {} months",
"exif_bottom_sheet_person_age_years": "Age {}",
"exit_slideshow": "स्लाइड शो से बाहर निकलें", "exit_slideshow": "स्लाइड शो से बाहर निकलें",
"expand_all": "सभी का विस्तार", "expand_all": "सभी का विस्तार",
"experimental_settings_new_asset_list_subtitle": "Work in progress",
"experimental_settings_new_asset_list_title": "Enable experimental photo grid",
"experimental_settings_subtitle": "Use at your own risk!",
"experimental_settings_title": "Experimental",
"expire_after": "एक्सपायर आफ्टर", "expire_after": "एक्सपायर आफ्टर",
"expired": "खत्म हो चुका", "expired": "खत्म हो चुका",
"explore": "अन्वेषण करना", "explore": "अन्वेषण करना",
@@ -626,37 +846,77 @@
"extension": "विस्तार", "extension": "विस्तार",
"external": "बाहरी", "external": "बाहरी",
"external_libraries": "बाहरी पुस्तकालय", "external_libraries": "बाहरी पुस्तकालय",
"external_network": "External network",
"external_network_sheet_info": "When not on the preferred WiFi network, the app will connect to the server through the first of the below URLs it can reach, starting from top to bottom",
"face_unassigned": "सौंपे नहीं गए", "face_unassigned": "सौंपे नहीं गए",
"failed": "Failed",
"failed_to_load_assets": "Failed to load assets",
"failed_to_load_folder": "Failed to load folder",
"favorite": "पसंदीदा", "favorite": "पसंदीदा",
"favorite_or_unfavorite_photo": "पसंदीदा या नापसंद फोटो", "favorite_or_unfavorite_photo": "पसंदीदा या नापसंद फोटो",
"favorites": "पसंदीदा", "favorites": "पसंदीदा",
"favorites_page_no_favorites": "No favorite assets found",
"feature_photo_updated": "फ़ीचर फ़ोटो अपडेट किया गया", "feature_photo_updated": "फ़ीचर फ़ोटो अपडेट किया गया",
"file_name": "फ़ाइल का नाम", "file_name": "फ़ाइल का नाम",
"file_name_or_extension": "फ़ाइल का नाम या एक्सटेंशन", "file_name_or_extension": "फ़ाइल का नाम या एक्सटेंशन",
"filename": "फ़ाइल का नाम", "filename": "फ़ाइल का नाम",
"filetype": "फाइल का प्रकार", "filetype": "फाइल का प्रकार",
"filter": "फ़िल्टर",
"filter_people": "लोगों को फ़िल्टर करें", "filter_people": "लोगों को फ़िल्टर करें",
"find_them_fast": "खोज के साथ नाम से उन्हें तेजी से ढूंढें", "find_them_fast": "खोज के साथ नाम से उन्हें तेजी से ढूंढें",
"fix_incorrect_match": "ग़लत मिलान ठीक करें", "fix_incorrect_match": "ग़लत मिलान ठीक करें",
"folder": "Folder",
"folder_not_found": "Folder not found",
"folders": "Folders",
"forward": "आगे", "forward": "आगे",
"general": "सामान्य", "general": "सामान्य",
"get_help": "मदद लें", "get_help": "मदद लें",
"get_wifiname_error": "Could not get Wi-Fi name. Make sure you have granted the necessary permissions and are connected to a Wi-Fi network",
"getting_started": "शुरू करना", "getting_started": "शुरू करना",
"go_back": "वापस जाओ", "go_back": "वापस जाओ",
"go_to_search": "खोज पर जाएँ", "go_to_search": "खोज पर जाएँ",
"grant_permission": "Grant permission",
"group_albums_by": "इनके द्वारा समूह एल्बम..।", "group_albums_by": "इनके द्वारा समूह एल्बम..।",
"group_no": "कोई समूहीकरण नहीं", "group_no": "कोई समूहीकरण नहीं",
"group_owner": "स्वामी द्वारा समूह", "group_owner": "स्वामी द्वारा समूह",
"group_year": "वर्ष के अनुसार समूह", "group_year": "वर्ष के अनुसार समूह",
"haptic_feedback_switch": "Enable haptic feedback",
"haptic_feedback_title": "Haptic Feedback",
"has_quota": "कोटा है", "has_quota": "कोटा है",
"header_settings_add_header_tip": "Add Header",
"header_settings_field_validator_msg": "Value cannot be empty",
"header_settings_header_name_input": "Header name",
"header_settings_header_value_input": "Header value",
"headers_settings_tile_subtitle": "Define proxy headers the app should send with each network request",
"headers_settings_tile_title": "Custom proxy headers",
"hide_all_people": "सभी लोगों को छुपाएं", "hide_all_people": "सभी लोगों को छुपाएं",
"hide_gallery": "गैलरी छिपाएँ", "hide_gallery": "गैलरी छिपाएँ",
"hide_password": "पासवर्ड छिपाएं", "hide_password": "पासवर्ड छिपाएं",
"hide_person": "व्यक्ति छिपाएँ", "hide_person": "व्यक्ति छिपाएँ",
"hide_unnamed_people": "अनाम लोगों को छुपाएं", "hide_unnamed_people": "अनाम लोगों को छुपाएं",
"home_page_add_to_album_conflicts": "Added {added} assets to album {album}. {failed} assets are already in the album.",
"home_page_add_to_album_err_local": "Can not add local assets to albums yet, skipping",
"home_page_add_to_album_success": "Added {added} assets to album {album}.",
"home_page_album_err_partner": "अब तक पार्टनर एसेट्स को एल्बम में जोड़ा नहीं कर सकते, स्किप कर रहे हैं",
"home_page_archive_err_local": "Can not archive local assets yet, skipping",
"home_page_archive_err_partner": "पार्टनर एसेट्स को आर्काइव नहीं कर सकते, स्किप कर रहे हैं",
"home_page_building_timeline": "Building the timeline",
"home_page_delete_err_partner": "पार्टनर एसेट्स को डिलीट नहीं कर सकते, स्किप कर रहे हैं",
"home_page_delete_remote_err_local": "Local assets in delete remote selection, skipping",
"home_page_favorite_err_local": "Can not favorite local assets yet, skipping",
"home_page_favorite_err_partner": "अब तक पार्टनर एसेट्स को फेवरेट नहीं कर सकते, स्किप कर रहे हैं",
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
"home_page_share_err_local": "लोकल एसेट्स को लिंक के जरिए शेयर नहीं कर सकते, स्किप कर रहे हैं",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"host": "मेज़बान", "host": "मेज़बान",
"hour": "घंटा", "hour": "घंटा",
"ignore_icloud_photos": "आइक्लाउड फ़ोटो को अनदेखा करें",
"ignore_icloud_photos_description": "आइक्लाउड पर स्टोर की गई फ़ोटोज़ इमिच सर्वर पर अपलोड नहीं की जाएंगी",
"image": "छवि", "image": "छवि",
"image_saved_successfully": "इमेज सहेज दी गई",
"image_viewer_page_state_provider_download_started": "Download Started",
"image_viewer_page_state_provider_download_success": "Download Success",
"image_viewer_page_state_provider_share_error": "Share Error",
"immich_logo": "Immich लोगो", "immich_logo": "Immich लोगो",
"immich_web_interface": "इमिच वेब इंटरफ़ेस", "immich_web_interface": "इमिच वेब इंटरफ़ेस",
"import_from_json": "JSON से आयात करें", "import_from_json": "JSON से आयात करें",
@@ -673,6 +933,8 @@
"night_at_midnight": "हर रात आधी रात को", "night_at_midnight": "हर रात आधी रात को",
"night_at_twoam": "हर रात 2 बजे" "night_at_twoam": "हर रात 2 बजे"
}, },
"invalid_date": "अमान्य तारीख़",
"invalid_date_format": "अमान्य तारीख़ प्रारूप",
"invite_people": "लोगो को निमंत्रण भेजो", "invite_people": "लोगो को निमंत्रण भेजो",
"invite_to_album": "एल्बम के लिए आमंत्रित करें", "invite_to_album": "एल्बम के लिए आमंत्रित करें",
"jobs": "नौकरियां", "jobs": "नौकरियां",
@@ -689,6 +951,12 @@
"level": "स्तर", "level": "स्तर",
"library": "पुस्तकालय", "library": "पुस्तकालय",
"library_options": "पुस्तकालय विकल्प", "library_options": "पुस्तकालय विकल्प",
"library_page_device_albums": "Albums on Device",
"library_page_new_album": "New album",
"library_page_sort_asset_count": "Number of assets",
"library_page_sort_created": "Created date",
"library_page_sort_last_modified": "Last modified",
"library_page_sort_title": "Album title",
"light": "रोशनी", "light": "रोशनी",
"like_deleted": "जैसे हटा दिया गया", "like_deleted": "जैसे हटा दिया गया",
"link_options": "लिंक विकल्प", "link_options": "लिंक विकल्प",
@@ -697,12 +965,42 @@
"list": "सूची", "list": "सूची",
"loading": "लोड हो रहा है", "loading": "लोड हो रहा है",
"loading_search_results_failed": "खोज परिणाम लोड करना विफल रहा", "loading_search_results_failed": "खोज परिणाम लोड करना विफल रहा",
"local_network": "Local network",
"local_network_sheet_info": "The app will connect to the server through this URL when using the specified Wi-Fi network",
"location_permission": "Location permission",
"location_permission_content": "In order to use the auto-switching feature, Immich needs precise location permission so it can read the current WiFi network's name",
"location_picker_choose_on_map": "Choose on map",
"location_picker_latitude_error": "Enter a valid latitude",
"location_picker_latitude_hint": "Enter your latitude here",
"location_picker_longitude_error": "Enter a valid longitude",
"location_picker_longitude_hint": "Enter your longitude here",
"log_out": "लॉग आउट", "log_out": "लॉग आउट",
"log_out_all_devices": "सभी डिवाइस लॉग आउट करें", "log_out_all_devices": "सभी डिवाइस लॉग आउट करें",
"logged_out_all_devices": "सभी डिवाइस लॉग आउट कर दिए गए", "logged_out_all_devices": "सभी डिवाइस लॉग आउट कर दिए गए",
"logged_out_device": "लॉग आउट डिवाइस", "logged_out_device": "लॉग आउट डिवाइस",
"login": "लॉग इन करें", "login": "लॉग इन करें",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API exception. Please check the server URL and try again.",
"login_form_back_button_text": "Back",
"login_form_email_hint": "youremail@email.com",
"login_form_endpoint_hint": "http://your-server-ip:port",
"login_form_endpoint_url": "Server Endpoint URL",
"login_form_err_http": "Please specify http:// or https://",
"login_form_err_invalid_email": "Invalid Email",
"login_form_err_invalid_url": "Invalid URL",
"login_form_err_leading_whitespace": "Leading whitespace",
"login_form_err_trailing_whitespace": "Trailing whitespace",
"login_form_failed_get_oauth_server_config": "Error logging using OAuth, check server URL",
"login_form_failed_get_oauth_server_disable": "OAuth feature is not available on this server",
"login_form_failed_login": "Error logging you in, check server URL, email and password",
"login_form_handshake_exception": "There was an Handshake Exception with the server. Enable self-signed certificate support in the settings if you are using a self-signed certificate.",
"login_form_password_hint": "password",
"login_form_save_login": "Stay logged in",
"login_form_server_empty": "Enter a server URL.",
"login_form_server_error": "Could not connect to server.",
"login_has_been_disabled": "लॉगिन अक्षम कर दिया गया है।", "login_has_been_disabled": "लॉगिन अक्षम कर दिया गया है।",
"login_password_changed_error": "There was an error updating your password",
"login_password_changed_success": "Password updated successfully",
"logout_all_device_confirmation": "क्या आप वाकई सभी डिवाइस से लॉग आउट करना चाहते हैं?", "logout_all_device_confirmation": "क्या आप वाकई सभी डिवाइस से लॉग आउट करना चाहते हैं?",
"logout_this_device_confirmation": "क्या आप वाकई इस डिवाइस को लॉग आउट करना चाहते हैं?", "logout_this_device_confirmation": "क्या आप वाकई इस डिवाइस को लॉग आउट करना चाहते हैं?",
"longitude": "देशान्तर", "longitude": "देशान्तर",
@@ -718,12 +1016,39 @@
"manage_your_devices": "अपने लॉग-इन डिवाइस प्रबंधित करें", "manage_your_devices": "अपने लॉग-इन डिवाइस प्रबंधित करें",
"manage_your_oauth_connection": "अपना OAuth कनेक्शन प्रबंधित करें", "manage_your_oauth_connection": "अपना OAuth कनेक्शन प्रबंधित करें",
"map": "नक्शा", "map": "नक्शा",
"map_assets_in_bound": "{} photo",
"map_assets_in_bounds": "{} photos",
"map_cannot_get_user_location": "Cannot get user's location",
"map_location_dialog_yes": "Yes",
"map_location_picker_page_use_location": "Use this location",
"map_location_service_disabled_content": "Location service needs to be enabled to display assets from your current location. Do you want to enable it now?",
"map_location_service_disabled_title": "Location Service disabled",
"map_marker_with_image": "छवि के साथ मानचित्र मार्कर", "map_marker_with_image": "छवि के साथ मानचित्र मार्कर",
"map_no_assets_in_bounds": "No photos in this area",
"map_no_location_permission_content": "Location permission is needed to display assets from your current location. Do you want to allow it now?",
"map_no_location_permission_title": "Location Permission denied",
"map_settings": "मानचित्र सेटिंग", "map_settings": "मानचित्र सेटिंग",
"map_settings_dark_mode": "Dark mode",
"map_settings_date_range_option_day": "Past 24 hours",
"map_settings_date_range_option_days": "Past {} days",
"map_settings_date_range_option_year": "Past year",
"map_settings_date_range_option_years": "Past {} years",
"map_settings_dialog_title": "Map Settings",
"map_settings_include_show_archived": "Include Archived",
"map_settings_include_show_partners": "Include Partners",
"map_settings_only_show_favorites": "Show Favorite Only",
"map_settings_theme_settings": "Map Theme",
"map_zoom_to_see_photos": "Zoom out to see photos",
"matches": "माचिस", "matches": "माचिस",
"media_type": "मीडिया प्रकार", "media_type": "मीडिया प्रकार",
"memories": "यादें", "memories": "यादें",
"memories_all_caught_up": "All caught up",
"memories_check_back_tomorrow": "Check back tomorrow for more memories",
"memories_setting_description": "आप अपनी यादों में जो देखते हैं उसे प्रबंधित करें", "memories_setting_description": "आप अपनी यादों में जो देखते हैं उसे प्रबंधित करें",
"memories_start_over": "Start Over",
"memories_swipe_to_close": "Swipe up to close",
"memories_year_ago": "A year ago",
"memories_years_ago": "{} years ago",
"memory": "याद", "memory": "याद",
"menu": "मेन्यू", "menu": "मेन्यू",
"merge": "मर्ज", "merge": "मर्ज",
@@ -736,11 +1061,16 @@
"missing": "गुम", "missing": "गुम",
"model": "मॉडल", "model": "मॉडल",
"month": "महीना", "month": "महीना",
"monthly_title_text_date_format": "MMMM y",
"more": "अधिक", "more": "अधिक",
"moved_to_trash": "कूड़ेदान में ले जाया गया", "moved_to_trash": "कूड़ेदान में ले जाया गया",
"multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping",
"multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping",
"my_albums": "मेरे एल्बम", "my_albums": "मेरे एल्बम",
"name": "नाम", "name": "नाम",
"name_or_nickname": "नाम या उपनाम", "name_or_nickname": "नाम या उपनाम",
"networking_settings": "Networking",
"networking_subtitle": "Manage the server endpoint settings",
"never": "कभी नहीं", "never": "कभी नहीं",
"new_album": "नयी एल्बम", "new_album": "नयी एल्बम",
"new_api_key": "नई एपीआई कुंजी", "new_api_key": "नई एपीआई कुंजी",
@@ -757,6 +1087,7 @@
"no_albums_yet": "ऐसा लगता है कि आपके पास अभी तक कोई एल्बम नहीं है।", "no_albums_yet": "ऐसा लगता है कि आपके पास अभी तक कोई एल्बम नहीं है।",
"no_archived_assets_message": "फ़ोटो और वीडियो को अपने फ़ोटो दृश्य से छिपाने के लिए उन्हें संग्रहीत करें", "no_archived_assets_message": "फ़ोटो और वीडियो को अपने फ़ोटो दृश्य से छिपाने के लिए उन्हें संग्रहीत करें",
"no_assets_message": "अपना पहला फोटो अपलोड करने के लिए क्लिक करें", "no_assets_message": "अपना पहला फोटो अपलोड करने के लिए क्लिक करें",
"no_assets_to_show": "No assets to show",
"no_duplicates_found": "कोई नकलची नहीं मिला।", "no_duplicates_found": "कोई नकलची नहीं मिला।",
"no_exif_info_available": "कोई एक्सिफ़ जानकारी उपलब्ध नहीं है", "no_exif_info_available": "कोई एक्सिफ़ जानकारी उपलब्ध नहीं है",
"no_explore_results_message": "अपने संग्रह का पता लगाने के लिए और फ़ोटो अपलोड करें।", "no_explore_results_message": "अपने संग्रह का पता लगाने के लिए और फ़ोटो अपलोड करें।",
@@ -768,9 +1099,13 @@
"no_results_description": "कोई पर्यायवाची या अधिक सामान्य कीवर्ड आज़माएँ", "no_results_description": "कोई पर्यायवाची या अधिक सामान्य कीवर्ड आज़माएँ",
"no_shared_albums_message": "अपने नेटवर्क में लोगों के साथ फ़ोटो और वीडियो साझा करने के लिए एक एल्बम बनाएं", "no_shared_albums_message": "अपने नेटवर्क में लोगों के साथ फ़ोटो और वीडियो साझा करने के लिए एक एल्बम बनाएं",
"not_in_any_album": "किसी एलबम में नहीं", "not_in_any_album": "किसी एलबम में नहीं",
"not_selected": "Not selected",
"note_apply_storage_label_to_previously_uploaded assets": "नोट: पहले अपलोड की गई संपत्तियों पर स्टोरेज लेबल लागू करने के लिए, चलाएँ", "note_apply_storage_label_to_previously_uploaded assets": "नोट: पहले अपलोड की गई संपत्तियों पर स्टोरेज लेबल लागू करने के लिए, चलाएँ",
"note_unlimited_quota": "नोट: असीमित कोटा के लिए 0 दर्ज करें",
"notes": "टिप्पणियाँ", "notes": "टिप्पणियाँ",
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
"notification_permission_list_tile_content": "Grant permission to enable notifications.",
"notification_permission_list_tile_enable_button": "Enable Notifications",
"notification_permission_list_tile_title": "Notification Permission",
"notification_toggle_setting_description": "ईमेल सूचनाएं सक्षम करें", "notification_toggle_setting_description": "ईमेल सूचनाएं सक्षम करें",
"notifications": "सूचनाएं", "notifications": "सूचनाएं",
"notifications_setting_description": "सूचनाएं प्रबंधित करें", "notifications_setting_description": "सूचनाएं प्रबंधित करें",
@@ -780,6 +1115,7 @@
"offline_paths_description": "ये परिणाम उन फ़ाइलों को मैन्युअल रूप से हटाने के कारण हो सकते हैं जो बाहरी लाइब्रेरी का हिस्सा नहीं हैं।", "offline_paths_description": "ये परिणाम उन फ़ाइलों को मैन्युअल रूप से हटाने के कारण हो सकते हैं जो बाहरी लाइब्रेरी का हिस्सा नहीं हैं।",
"ok": "ठीक है", "ok": "ठीक है",
"oldest_first": "सबसे पुराना पहले", "oldest_first": "सबसे पुराना पहले",
"on_this_device": "इस डिवाइस पर",
"onboarding": "ज्ञानप्राप्ति", "onboarding": "ज्ञानप्राप्ति",
"onboarding_theme_description": "अपने उदाहरण के लिए एक रंग थीम चुनें।", "onboarding_theme_description": "अपने उदाहरण के लिए एक रंग थीम चुनें।",
"onboarding_welcome_description": "आइए कुछ सामान्य सेटिंग्स के साथ अपना इंस्टेंस सेट अप करें।", "onboarding_welcome_description": "आइए कुछ सामान्य सेटिंग्स के साथ अपना इंस्टेंस सेट अप करें।",
@@ -799,6 +1135,14 @@
"partner": "साथी", "partner": "साथी",
"partner_can_access_assets": "संग्रहीत और हटाए गए को छोड़कर आपके सभी फ़ोटो और वीडियो", "partner_can_access_assets": "संग्रहीत और हटाए गए को छोड़कर आपके सभी फ़ोटो और वीडियो",
"partner_can_access_location": "वह स्थान जहां आपकी तस्वीरें ली गईं थीं", "partner_can_access_location": "वह स्थान जहां आपकी तस्वीरें ली गईं थीं",
"partner_list_user_photos": "{user}'s photos",
"partner_list_view_all": "View all",
"partner_page_empty_message": "Your photos are not yet shared with any partner.",
"partner_page_no_more_users": "No more users to add",
"partner_page_partner_add_failed": "Failed to add partner",
"partner_page_select_partner": "Select partner",
"partner_page_shared_to_title": "Shared to",
"partner_page_stop_sharing_content": "{} will no longer be able to access your photos।",
"partner_sharing": "पार्टनर शेयरिंग", "partner_sharing": "पार्टनर शेयरिंग",
"partners": "भागीदारों", "partners": "भागीदारों",
"password": "पासवर्ड", "password": "पासवर्ड",
@@ -822,6 +1166,14 @@
"permanent_deletion_warning_setting_description": "संपत्तियों को स्थायी रूप से हटाते समय एक चेतावनी दिखाएं", "permanent_deletion_warning_setting_description": "संपत्तियों को स्थायी रूप से हटाते समय एक चेतावनी दिखाएं",
"permanently_delete": "स्थायी रूप से हटाना", "permanently_delete": "स्थायी रूप से हटाना",
"permanently_deleted_asset": "स्थायी रूप से हटाई गई संपत्ति", "permanently_deleted_asset": "स्थायी रूप से हटाई गई संपत्ति",
"permission_onboarding_back": "वापस",
"permission_onboarding_continue_anyway": "Continue anyway",
"permission_onboarding_get_started": "Get started",
"permission_onboarding_go_to_settings": "Go to settings",
"permission_onboarding_permission_denied": "Permission denied. To use Immich, grant photo and video permissions in Settings.",
"permission_onboarding_permission_granted": "Permission granted! You are all set.",
"permission_onboarding_permission_limited": "Permission limited. To let Immich backup and manage your entire gallery collection, grant photo and video permissions in Settings.",
"permission_onboarding_request": "Immich requires permission to view your photos and videos.",
"person": "व्यक्ति", "person": "व्यक्ति",
"photo_shared_all_users": "ऐसा लगता है कि आपने अपनी तस्वीरें सभी उपयोगकर्ताओं के साथ साझा कीं या आपके पास साझा करने के लिए कोई उपयोगकर्ता नहीं है।", "photo_shared_all_users": "ऐसा लगता है कि आपने अपनी तस्वीरें सभी उपयोगकर्ताओं के साथ साझा कीं या आपके पास साझा करने के लिए कोई उपयोगकर्ता नहीं है।",
"photos": "तस्वीरें", "photos": "तस्वीरें",
@@ -835,12 +1187,21 @@
"play_motion_photo": "मोशन फ़ोटो चलाएं", "play_motion_photo": "मोशन फ़ोटो चलाएं",
"play_or_pause_video": "वीडियो चलाएं या रोकें", "play_or_pause_video": "वीडियो चलाएं या रोकें",
"port": "पत्तन", "port": "पत्तन",
"preferences_settings_subtitle": "Manage the app's preferences",
"preferences_settings_title": "Preferences",
"preset": "प्रीसेट", "preset": "प्रीसेट",
"preview": "पूर्व दर्शन", "preview": "पूर्व दर्शन",
"previous": "पहले का", "previous": "पहले का",
"previous_memory": "पिछली स्मृति", "previous_memory": "पिछली स्मृति",
"previous_or_next_photo": "पिछला या अगला फ़ोटो", "previous_or_next_photo": "पिछला या अगला फ़ोटो",
"primary": "प्राथमिक", "primary": "प्राथमिक",
"profile_drawer_app_logs": "Logs",
"profile_drawer_client_out_of_date_major": "Mobile App is out of date. Please update to the latest major version.",
"profile_drawer_client_out_of_date_minor": "Mobile App is out of date. Please update to the latest minor version.",
"profile_drawer_client_server_up_to_date": "Client and Server are up-to-date",
"profile_drawer_github": "गिटहब",
"profile_drawer_server_out_of_date_major": "Server is out of date. Please update to the latest major version.",
"profile_drawer_server_out_of_date_minor": "Server is out of date. Please update to the latest minor version.",
"profile_picture_set": "प्रोफ़ाइल चित्र सेट।", "profile_picture_set": "प्रोफ़ाइल चित्र सेट।",
"public_album": "सार्वजनिक एल्बम", "public_album": "सार्वजनिक एल्बम",
"public_share": "सार्वजनिक शेयर", "public_share": "सार्वजनिक शेयर",
@@ -881,6 +1242,8 @@
"reassing_hint": "चयनित संपत्तियों को किसी मौजूदा व्यक्ति को सौंपें", "reassing_hint": "चयनित संपत्तियों को किसी मौजूदा व्यक्ति को सौंपें",
"recent": "हाल ही का", "recent": "हाल ही का",
"recent_searches": "हाल की खोजें", "recent_searches": "हाल की खोजें",
"recently_added": "हाल ही में जोड़ा गया",
"recently_added_page_title": "Recently Added",
"refresh": "ताज़ा करना", "refresh": "ताज़ा करना",
"refresh_encoded_videos": "एन्कोडेड वीडियो ताज़ा करें", "refresh_encoded_videos": "एन्कोडेड वीडियो ताज़ा करें",
"refresh_metadata": "मेटाडेटा ताज़ा करें", "refresh_metadata": "मेटाडेटा ताज़ा करें",
@@ -924,10 +1287,12 @@
"role_editor": "संपादक", "role_editor": "संपादक",
"role_viewer": "दर्शक", "role_viewer": "दर्शक",
"save": "बचाना", "save": "बचाना",
"save_to_gallery": "गैलरी में सहेजें",
"saved_api_key": "सहेजी गई एपीआई कुंजी", "saved_api_key": "सहेजी गई एपीआई कुंजी",
"saved_profile": "प्रोफ़ाइल सहेजी गई", "saved_profile": "प्रोफ़ाइल सहेजी गई",
"saved_settings": "सहेजी गई सेटिंग्स", "saved_settings": "सहेजी गई सेटिंग्स",
"say_something": "कुछ कहें", "say_something": "कुछ कहें",
"scaffold_body_error_occurred": "Error occurred",
"scan_all_libraries": "सभी पुस्तकालयों को स्कैन करें", "scan_all_libraries": "सभी पुस्तकालयों को स्कैन करें",
"scan_settings": "सेटिंग्स स्कैन करें", "scan_settings": "सेटिंग्स स्कैन करें",
"scanning_for_album": "एल्बम के लिए स्कैन किया जा रहा है..।", "scanning_for_album": "एल्बम के लिए स्कैन किया जा रहा है..।",
@@ -940,11 +1305,40 @@
"search_camera_model": "कैमरा मॉडल खोजें..।", "search_camera_model": "कैमरा मॉडल खोजें..।",
"search_city": "शहर खोजें..।", "search_city": "शहर खोजें..।",
"search_country": "देश खोजें..।", "search_country": "देश खोजें..।",
"search_filter_apply": "Apply filter",
"search_filter_camera_title": "कैमरा प्रकार चुनें",
"search_filter_date": "तारीख़",
"search_filter_date_interval": "{start} से {end} तक",
"search_filter_date_title": "तारीख़ की सीमा चुनें",
"search_filter_display_option_not_in_album": "Not in album",
"search_filter_display_options": "प्रदर्शन विकल्प",
"search_filter_filename": "Search by file name",
"search_filter_location": "स्थान",
"search_filter_location_title": "स्थान चुनें",
"search_filter_media_type": "मीडिया प्रकार",
"search_filter_media_type_title": "मीडिया प्रकार चुनें",
"search_filter_people_title": "लोगों का चयन करें",
"search_for_existing_person": "मौजूदा व्यक्ति को खोजें", "search_for_existing_person": "मौजूदा व्यक्ति को खोजें",
"search_no_more_result": "No more results",
"search_no_people": "कोई लोग नहीं", "search_no_people": "कोई लोग नहीं",
"search_no_result": "No results found, try a different search term or combination",
"search_page_categories": "Categories",
"search_page_motion_photos": "Motion Photos",
"search_page_no_objects": "No Objects Info Available",
"search_page_no_places": "No Places Info Available",
"search_page_screenshots": "Screenshots",
"search_page_search_photos_videos": "Search for your photos and videos",
"search_page_selfies": "Selfies",
"search_page_things": "Things",
"search_page_view_all_button": "View all",
"search_page_your_activity": "Your activity",
"search_page_your_map": "Your Map",
"search_people": "लोगों को खोजें", "search_people": "लोगों को खोजें",
"search_places": "स्थान खोजें", "search_places": "स्थान खोजें",
"search_result_page_new_search_hint": "New Search",
"search_state": "स्थिति खोजें..।", "search_state": "स्थिति खोजें..।",
"search_suggestion_list_smart_search_hint_1": "Smart search is enabled by default, to search for metadata use the syntax ",
"search_suggestion_list_smart_search_hint_2": "m:your-search-term",
"search_timezone": "समयक्षेत्र खोजें..।", "search_timezone": "समयक्षेत्र खोजें..।",
"search_type": "तलाश की विधि", "search_type": "तलाश की विधि",
"search_your_photos": "अपनी फ़ोटो खोजें", "search_your_photos": "अपनी फ़ोटो खोजें",
@@ -963,9 +1357,13 @@
"select_new_face": "नया चेहरा चुनें", "select_new_face": "नया चेहरा चुनें",
"select_photos": "फ़ोटो चुनें", "select_photos": "फ़ोटो चुनें",
"select_trash_all": "ट्रैश ऑल का चयन करें", "select_trash_all": "ट्रैश ऑल का चयन करें",
"select_user_for_sharing_page_err_album": "Failed to create album",
"selected": "चयनित", "selected": "चयनित",
"send_message": "मेसेज भेजें", "send_message": "मेसेज भेजें",
"send_welcome_email": "स्वागत ईमेल भेजें", "send_welcome_email": "स्वागत ईमेल भेजें",
"server_endpoint": "Server Endpoint",
"server_info_box_app_version": "App Version",
"server_info_box_server_url": "सर्वर URL",
"server_offline": "सर्वर ऑफ़लाइन", "server_offline": "सर्वर ऑफ़लाइन",
"server_online": "सर्वर ऑनलाइन", "server_online": "सर्वर ऑनलाइन",
"server_stats": "सर्वर आँकड़े", "server_stats": "सर्वर आँकड़े",
@@ -976,16 +1374,85 @@
"set_date_of_birth": "जन्मतिथि निर्धारित करें", "set_date_of_birth": "जन्मतिथि निर्धारित करें",
"set_profile_picture": "प्रोफ़ाइल चित्र सेट करें", "set_profile_picture": "प्रोफ़ाइल चित्र सेट करें",
"set_slideshow_to_fullscreen": "स्लाइड शो को फ़ुलस्क्रीन पर सेट करें", "set_slideshow_to_fullscreen": "स्लाइड शो को फ़ुलस्क्रीन पर सेट करें",
"setting_image_viewer_help": "The detail viewer loads the small thumbnail first, then loads the medium-size preview (if enabled), finally loads the original (if enabled).",
"setting_image_viewer_original_subtitle": "Enable to load the original full-resolution image (large!). Disable to reduce data usage (both network and on device cache).",
"setting_image_viewer_original_title": "Load original image",
"setting_image_viewer_preview_subtitle": "Enable to load a medium-resolution image. Disable to either directly load the original or only use the thumbnail.",
"setting_image_viewer_preview_title": "Load preview image",
"setting_image_viewer_title": "Images",
"setting_languages_apply": "Apply",
"setting_languages_subtitle": "Change the app's language",
"setting_languages_title": "Languages",
"setting_notifications_notify_failures_grace_period": "Notify background backup failures: {}",
"setting_notifications_notify_hours": "{} hours",
"setting_notifications_notify_immediately": "immediately",
"setting_notifications_notify_minutes": "{} minutes",
"setting_notifications_notify_never": "never",
"setting_notifications_notify_seconds": "{} seconds",
"setting_notifications_single_progress_subtitle": "Detailed upload progress information per asset",
"setting_notifications_single_progress_title": "Show background backup detail progress",
"setting_notifications_subtitle": "Adjust your notification preferences",
"setting_notifications_total_progress_subtitle": "Overall upload progress (done/total assets)",
"setting_notifications_total_progress_title": "Show background backup total progress",
"setting_video_viewer_looping_title": "Looping",
"setting_video_viewer_original_video_subtitle": "When streaming a video from the server, play the original even when a transcode is available. May lead to buffering. Videos available locally are played in original quality regardless of this setting.",
"setting_video_viewer_original_video_title": "Force original video",
"settings": "समायोजन", "settings": "समायोजन",
"settings_require_restart": "Please restart Immich to apply this setting",
"settings_saved": "सेटिंग्स को सहेजा गया", "settings_saved": "सेटिंग्स को सहेजा गया",
"share": "शेयर करना", "share": "शेयर करना",
"share_add_photos": "Add photos",
"share_assets_selected": "{} selected",
"share_dialog_preparing": "Preparing...",
"shared": "साझा", "shared": "साझा",
"shared_album_activities_input_disable": "कॉमेंट डिजेबल्ड है",
"shared_album_activity_remove_content": "क्या आप इस गतिविधि को हटाना चाहते हैं?",
"shared_album_activity_remove_title": "गतिविधि हटाएं",
"shared_album_section_people_action_error": "Error leaving/removing from album",
"shared_album_section_people_action_leave": "Remove user from album",
"shared_album_section_people_action_remove_user": "Remove user from album",
"shared_album_section_people_title": "PEOPLE",
"shared_by": "द्वारा साझा", "shared_by": "द्वारा साझा",
"shared_by_you": "आपके द्वारा साझा किया गया", "shared_by_you": "आपके द्वारा साझा किया गया",
"shared_intent_upload_button_progress_text": "{} / {} Uploaded",
"shared_link_app_bar_title": "साझा किए गए लिंक",
"shared_link_clipboard_copied_massage": "Copied to clipboard",
"shared_link_clipboard_text": "Link: {}\nPassword: {}",
"shared_link_create_error": "Error while creating shared link",
"shared_link_edit_description_hint": "शेयर विवरण दर्ज करें",
"shared_link_edit_expire_after_option_day": "1 day",
"shared_link_edit_expire_after_option_days": "{} days",
"shared_link_edit_expire_after_option_hour": "1 hour",
"shared_link_edit_expire_after_option_hours": "{} hours",
"shared_link_edit_expire_after_option_minute": "1 minute",
"shared_link_edit_expire_after_option_minutes": "{} minutes",
"shared_link_edit_expire_after_option_months": "{} months",
"shared_link_edit_expire_after_option_year": "{} year",
"shared_link_edit_password_hint": "शेयर पासवर्ड दर्ज करें",
"shared_link_edit_submit_button": "अपडेट लिंक",
"shared_link_error_server_url_fetch": "Cannot fetch the server url",
"shared_link_expires_day": "Expires in {} day",
"shared_link_expires_days": "Expires in {} days",
"shared_link_expires_hour": "Expires in {} hour",
"shared_link_expires_hours": "Expires in {} hours",
"shared_link_expires_minute": "Expires in {} minute",
"shared_link_expires_minutes": "Expires in {} minutes",
"shared_link_expires_never": "Expires ∞",
"shared_link_expires_second": "Expires in {} second",
"shared_link_expires_seconds": "Expires in {} seconds",
"shared_link_individual_shared": "Individual shared",
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "साझा किए गए लिंक का प्रबंधन करें",
"shared_links": "साझा किए गए लिंक", "shared_links": "साझा किए गए लिंक",
"shared_with_me": "मेरे साथ साझा किया गया",
"sharing": "शेयरिंग", "sharing": "शेयरिंग",
"sharing_enter_password": "कृपया इस पृष्ठ को देखने के लिए पासवर्ड दर्ज करें।", "sharing_enter_password": "कृपया इस पृष्ठ को देखने के लिए पासवर्ड दर्ज करें।",
"sharing_page_album": "Shared albums",
"sharing_page_description": "Create shared albums to share photos and videos with people in your network.",
"sharing_page_empty_list": "EMPTY LIST",
"sharing_sidebar_description": "साइडबार में शेयरिंग के लिए एक लिंक प्रदर्शित करें", "sharing_sidebar_description": "साइडबार में शेयरिंग के लिए एक लिंक प्रदर्शित करें",
"sharing_silver_appbar_create_shared_album": "New shared album",
"sharing_silver_appbar_share_partner": "Share with partner",
"shift_to_permanent_delete": "संपत्ति को स्थायी रूप से हटाने के लिए ⇧ दबाएँ", "shift_to_permanent_delete": "संपत्ति को स्थायी रूप से हटाने के लिए ⇧ दबाएँ",
"show_album_options": "एल्बम विकल्प दिखाएँ", "show_album_options": "एल्बम विकल्प दिखाएँ",
"show_all_people": "सभी लोगों को दिखाओ", "show_all_people": "सभी लोगों को दिखाओ",
@@ -1036,10 +1503,26 @@
"sunrise_on_the_beach": "समुद्र तट पर सूर्योदय", "sunrise_on_the_beach": "समुद्र तट पर सूर्योदय",
"swap_merge_direction": "मर्ज दिशा स्वैप करें", "swap_merge_direction": "मर्ज दिशा स्वैप करें",
"sync": "साथ-साथ करना", "sync": "साथ-साथ करना",
"sync_albums": "एल्बम्स सिंक करें",
"sync_albums_manual_subtitle": "चुने हुए बैकअप एल्बम्स में सभी अपलोड की गई वीडियो और फ़ोटो सिंक करें",
"sync_upload_album_setting_subtitle": "अपनी फ़ोटो और वीडियो बनाएँ और उन्हें इमिच पर चुने हुए एल्बम्स में अपलोड करें",
"template": "खाका", "template": "खाका",
"theme": "विषय", "theme": "विषय",
"theme_selection": "थीम चयन", "theme_selection": "थीम चयन",
"theme_selection_description": "आपके ब्राउज़र की सिस्टम प्राथमिकता के आधार पर थीम को स्वचालित रूप से प्रकाश या अंधेरे पर सेट करें", "theme_selection_description": "आपके ब्राउज़र की सिस्टम प्राथमिकता के आधार पर थीम को स्वचालित रूप से प्रकाश या अंधेरे पर सेट करें",
"theme_setting_asset_list_storage_indicator_title": "Show storage indicator on asset tiles",
"theme_setting_asset_list_tiles_per_row_title": "Number of assets per row ({})",
"theme_setting_colorful_interface_subtitle": "प्राथमिक रंग को पृष्ठभूमि सतहों पर लागू करें",
"theme_setting_colorful_interface_title": "रंगीन इंटरफ़ेस",
"theme_setting_image_viewer_quality_subtitle": "Adjust the quality of the detail image viewer",
"theme_setting_image_viewer_quality_title": "Image viewer quality",
"theme_setting_primary_color_subtitle": "प्राथमिक क्रियाओं और उच्चारणों के लिए एक रंग चुनें",
"theme_setting_primary_color_title": "प्राथमिक रंग",
"theme_setting_system_primary_color_title": "सिस्टम रंग का उपयोग करें",
"theme_setting_system_theme_switch": "Automatic (Follow system setting)",
"theme_setting_theme_subtitle": "Choose the app's theme setting",
"theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load",
"theme_setting_three_stage_loading_title": "Enable three-stage loading",
"they_will_be_merged_together": "इन्हें एक साथ मिला दिया जाएगा", "they_will_be_merged_together": "इन्हें एक साथ मिला दिया जाएगा",
"time_based_memories": "समय आधारित यादें", "time_based_memories": "समय आधारित यादें",
"timezone": "समय क्षेत्र", "timezone": "समय क्षेत्र",
@@ -1054,7 +1537,15 @@
"trash": "कचरा", "trash": "कचरा",
"trash_all": "सब कचरा", "trash_all": "सब कचरा",
"trash_delete_asset": "संपत्ति को ट्रैश/डिलीट करें", "trash_delete_asset": "संपत्ति को ट्रैश/डिलीट करें",
"trash_emptied": "कचरा खाली कर दिया",
"trash_no_results_message": "ट्रैश की गई फ़ोटो और वीडियो यहां दिखाई देंगे।", "trash_no_results_message": "ट्रैश की गई फ़ोटो और वीडियो यहां दिखाई देंगे।",
"trash_page_delete_all": "Delete All",
"trash_page_empty_trash_dialog_content": "क्या आप अपनी कूड़ेदान संपत्तियों को खाली करना चाहते हैं? इन आइटमों को Immich से स्थायी रूप से हटा दिया जाएगा",
"trash_page_info": "Trashed items will be permanently deleted after {} days",
"trash_page_no_assets": "No trashed assets",
"trash_page_restore_all": "सभी को पुनः स्थानांतरित करें",
"trash_page_select_assets_btn": "संपत्तियों को चयन करें",
"trash_page_title": "Trash ({})",
"type": "प्रकार", "type": "प्रकार",
"unarchive": "संग्रह से निकालें", "unarchive": "संग्रह से निकालें",
"unfavorite": "नापसंद करें", "unfavorite": "नापसंद करें",
@@ -1076,12 +1567,17 @@
"updated_password": "अद्यतन पासवर्ड", "updated_password": "अद्यतन पासवर्ड",
"upload": "डालना", "upload": "डालना",
"upload_concurrency": "समवर्ती अपलोड करें", "upload_concurrency": "समवर्ती अपलोड करें",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_title": "Upload Asset",
"upload_status_duplicates": "डुप्लिकेट", "upload_status_duplicates": "डुप्लिकेट",
"upload_status_errors": "त्रुटियाँ", "upload_status_errors": "त्रुटियाँ",
"upload_status_uploaded": "अपलोड किए गए", "upload_status_uploaded": "अपलोड किए गए",
"upload_success": "अपलोड सफल रहा, नई अपलोड संपत्तियां देखने के लिए पेज को रीफ्रेश करें।", "upload_success": "अपलोड सफल रहा, नई अपलोड संपत्तियां देखने के लिए पेज को रीफ्रेश करें।",
"upload_to_immich": "Upload to Immich ({})",
"uploading": "Uploading",
"url": "यूआरएल", "url": "यूआरएल",
"usage": "प्रयोग", "usage": "प्रयोग",
"use_current_connection": "use current connection",
"use_custom_date_range": "इसके बजाय कस्टम दिनांक सीमा का उपयोग करें", "use_custom_date_range": "इसके बजाय कस्टम दिनांक सीमा का उपयोग करें",
"user": "उपयोगकर्ता", "user": "उपयोगकर्ता",
"user_id": "उपयोगकर्ता पहचान", "user_id": "उपयोगकर्ता पहचान",
@@ -1093,10 +1589,16 @@
"users": "उपयोगकर्ताओं", "users": "उपयोगकर्ताओं",
"utilities": "उपयोगिताओं", "utilities": "उपयोगिताओं",
"validate": "मान्य", "validate": "मान्य",
"validate_endpoint_error": "Please enter a valid URL",
"variables": "चर", "variables": "चर",
"version": "संस्करण", "version": "संस्करण",
"version_announcement_closing": "आपका मित्र, एलेक्स", "version_announcement_closing": "आपका मित्र, एलेक्स",
"version_announcement_message": "नमस्कार मित्र, एप्लिकेशन का एक नया संस्करण है, कृपया अपना समय निकालकर इसे देखें <link>रिलीज नोट्स</link> और अपना सुनिश्चित करें <code>docker-compose.yml</code>, और <code>.env</code> किसी भी गलत कॉन्फ़िगरेशन को रोकने के लिए सेटअप अद्यतित है, खासकर यदि आप वॉचटावर या किसी भी तंत्र का उपयोग करते हैं जो आपके एप्लिकेशन को स्वचालित रूप से अपडेट करने का प्रबंधन करता है।", "version_announcement_message": "नमस्कार मित्र, एप्लिकेशन का एक नया संस्करण है, कृपया अपना समय निकालकर इसे देखें <link>रिलीज नोट्स</link> और अपना सुनिश्चित करें <code>docker-compose.yml</code>, और <code>.env</code> किसी भी गलत कॉन्फ़िगरेशन को रोकने के लिए सेटअप अद्यतित है, खासकर यदि आप वॉचटावर या किसी भी तंत्र का उपयोग करते हैं जो आपके एप्लिकेशन को स्वचालित रूप से अपडेट करने का प्रबंधन करता है।",
"version_announcement_overlay_release_notes": "release notes",
"version_announcement_overlay_text_1": "Hi friend, there is a new release of",
"version_announcement_overlay_text_2": "please take your time to visit the ",
"version_announcement_overlay_text_3": " and ensure your docker-compose and .env setup is up-to-date to prevent any misconfigurations, especially if you use WatchTower or any mechanism that handles updating your server application automatically.",
"version_announcement_overlay_title": "New Server Version Available 🎉",
"video": "वीडियो", "video": "वीडियो",
"video_hover_setting": "होवर पर वीडियो थंबनेल चलाएं", "video_hover_setting": "होवर पर वीडियो थंबनेल चलाएं",
"video_hover_setting_description": "जब माउस आइटम पर घूम रहा हो तो वीडियो थंबनेल चलाएं।", "video_hover_setting_description": "जब माउस आइटम पर घूम रहा हो तो वीडियो थंबनेल चलाएं।",
@@ -1110,13 +1612,18 @@
"view_next_asset": "अगली संपत्ति देखें", "view_next_asset": "अगली संपत्ति देखें",
"view_previous_asset": "पिछली संपत्ति देखें", "view_previous_asset": "पिछली संपत्ति देखें",
"view_stack": "ढेर देखें", "view_stack": "ढेर देखें",
"viewer_remove_from_stack": "स्टैक से हटाएं",
"viewer_stack_use_as_main_asset": "मुख्य संपत्ति के रूप में उपयोग करें",
"viewer_unstack": "स्टैक रद्द करें",
"waiting": "इंतज़ार में", "waiting": "इंतज़ार में",
"warning": "चेतावनी", "warning": "चेतावनी",
"week": "सप्ताह", "week": "सप्ताह",
"welcome": "स्वागत", "welcome": "स्वागत",
"welcome_to_immich": "इमिच में आपका स्वागत है", "welcome_to_immich": "इमिच में आपका स्वागत है",
"wifi_name": "WiFi Name",
"year": "वर्ष", "year": "वर्ष",
"yes": "हाँ", "yes": "हाँ",
"you_dont_have_any_shared_links": "आपके पास कोई साझा लिंक नहीं है", "you_dont_have_any_shared_links": "आपके पास कोई साझा लिंक नहीं है",
"your_wifi_name": "Your WiFi name",
"zoom_image": "छवि ज़ूम करें" "zoom_image": "छवि ज़ूम करें"
} }

View File

@@ -4,6 +4,7 @@
"account_settings": "Postavke računa", "account_settings": "Postavke računa",
"acknowledge": "Potvrdi", "acknowledge": "Potvrdi",
"action": "Akcija", "action": "Akcija",
"action_common_update": "Ažuriranje",
"actions": "Akcije", "actions": "Akcije",
"active": "Aktivno", "active": "Aktivno",
"activity": "Aktivnost", "activity": "Aktivnost",
@@ -13,6 +14,7 @@
"add_a_location": "Dodaj lokaciju", "add_a_location": "Dodaj lokaciju",
"add_a_name": "Dodaj ime", "add_a_name": "Dodaj ime",
"add_a_title": "Dodaj naslov", "add_a_title": "Dodaj naslov",
"add_endpoint": "Dodaj krajnju točnu",
"add_exclusion_pattern": "Dodaj uzorak izuzimanja", "add_exclusion_pattern": "Dodaj uzorak izuzimanja",
"add_import_path": "Dodaj import folder", "add_import_path": "Dodaj import folder",
"add_location": "Dodaj lokaciju", "add_location": "Dodaj lokaciju",
@@ -20,8 +22,10 @@
"add_partner": "Dodaj partnera", "add_partner": "Dodaj partnera",
"add_path": "Dodaj putanju", "add_path": "Dodaj putanju",
"add_photos": "Dodaj slike", "add_photos": "Dodaj slike",
"add_to": "Dodaj u...", "add_to": "Dodaj u",
"add_to_album": "Dodaj u album", "add_to_album": "Dodaj u album",
"add_to_album_bottom_sheet_added": "Dodano u {album}",
"add_to_album_bottom_sheet_already_exists": "Već u {album}",
"add_to_shared_album": "Dodaj u dijeljeni album", "add_to_shared_album": "Dodaj u dijeljeni album",
"add_url": "Dodaj URL", "add_url": "Dodaj URL",
"added_to_archive": "Dodano u arhivu", "added_to_archive": "Dodano u arhivu",
@@ -41,6 +45,7 @@
"backup_settings": "Postavke sigurnosne kopije", "backup_settings": "Postavke sigurnosne kopije",
"backup_settings_description": "Upravljanje postavkama sigurnosne kopije baze podataka", "backup_settings_description": "Upravljanje postavkama sigurnosne kopije baze podataka",
"check_all": "Provjeri sve", "check_all": "Provjeri sve",
"cleanup": "Čišćenje",
"cleared_jobs": "Izbrisani poslovi za: {job}", "cleared_jobs": "Izbrisani poslovi za: {job}",
"config_set_by_file": "Konfiguracija je trenutno postavljena konfiguracijskom datotekom", "config_set_by_file": "Konfiguracija je trenutno postavljena konfiguracijskom datotekom",
"confirm_delete_library": "Jeste li sigurni da želite izbrisati biblioteku {library}?", "confirm_delete_library": "Jeste li sigurni da želite izbrisati biblioteku {library}?",
@@ -65,8 +70,13 @@
"forcing_refresh_library_files": "Prisilno osvježavanje svih datoteka knjižnice", "forcing_refresh_library_files": "Prisilno osvježavanje svih datoteka knjižnice",
"image_format": "Format", "image_format": "Format",
"image_format_description": "WebP proizvodi manje datoteke od JPEG-a, ali se sporije kodira.", "image_format_description": "WebP proizvodi manje datoteke od JPEG-a, ali se sporije kodira.",
"image_fullsize_description": "Slika pune veličine bez meta podataka, koristi se prilikom zumiranja",
"image_fullsize_enabled": "Omogući generiranje slike pune veličine",
"image_fullsize_enabled_description": "Generiraj sliku pune veličine za formate koji nisu prilagođeni webu. Kada je opcija \"Preferiraj ugrađeni pregled\" omogućena, ugrađeni pregledi koriste se izravno bez konverzije. Ne utječe na formate prilagođene webu kao što je JPEG.",
"image_fullsize_quality_description": "Kvaliteta slike pune veličine od 1 do 100. Veća vrijednost znači bolja kvaliteta, ali stvara veće datoteke.",
"image_fullsize_title": "Postavke slike pune veličine",
"image_prefer_embedded_preview": "Preferiraj ugrađeni pregled", "image_prefer_embedded_preview": "Preferiraj ugrađeni pregled",
"image_prefer_embedded_preview_setting_description": "Koristite ugrađene preglede u RAW fotografije kao ulaz za obradu slike kada su dostupni. To može proizvesti preciznije boje za neke slike, ali kvaliteta pregleda ovisi o kameri i slika može imati više artefakata kompresije.", "image_prefer_embedded_preview_setting_description": "Koristite ugrađene preglede u RAW fotografije kao ulaz za obradu slike kada su dostupni. To može proizvesti preciznije boje za neke slike, ali kvaliteta pregleda ovisi o kameri i slika može imati više artifakta kompresije.",
"image_prefer_wide_gamut": "Preferirajte široku gamu", "image_prefer_wide_gamut": "Preferirajte široku gamu",
"image_prefer_wide_gamut_setting_description": "Koristite Display P3 za sličice. Ovo bolje čuva živost slika sa širokim prostorima boja, ali slike mogu izgledati drugačije na starim uređajima sa starom verzijom preglednika. sRGB slike čuvaju se kao sRGB kako bi se izbjegle promjene boja.", "image_prefer_wide_gamut_setting_description": "Koristite Display P3 za sličice. Ovo bolje čuva živost slika sa širokim prostorima boja, ali slike mogu izgledati drugačije na starim uređajima sa starom verzijom preglednika. sRGB slike čuvaju se kao sRGB kako bi se izbjegle promjene boja.",
"image_preview_description": "Slika srednje veličine s ogoljenim metapodacima, koristi se prilikom pregledavanja jednog sredstva i za strojno učenje", "image_preview_description": "Slika srednje veličine s ogoljenim metapodacima, koristi se prilikom pregledavanja jednog sredstva i za strojno učenje",
@@ -96,7 +106,7 @@
"library_scanning_enable_description": "Omogući periodično skeniranje biblioteke", "library_scanning_enable_description": "Omogući periodično skeniranje biblioteke",
"library_settings": "Externa biblioteka", "library_settings": "Externa biblioteka",
"library_settings_description": "Upravljajte postavkama vanjske biblioteke", "library_settings_description": "Upravljajte postavkama vanjske biblioteke",
"library_tasks_description": "Obavljati bibliotekne zadatke", "library_tasks_description": "Skeniraj eksterne biblioteke za nove i/ili promijenjene resurse",
"library_watching_enable_description": "Pratite vanjske biblioteke za promjena datoteke", "library_watching_enable_description": "Pratite vanjske biblioteke za promjena datoteke",
"library_watching_settings": "Gledanje biblioteke (EKSPERIMENTALNO)", "library_watching_settings": "Gledanje biblioteke (EKSPERIMENTALNO)",
"library_watching_settings_description": "Automatsko praćenje promijenjenih datoteke", "library_watching_settings_description": "Automatsko praćenje promijenjenih datoteke",
@@ -131,7 +141,7 @@
"machine_learning_smart_search_description": "Pretražujte slike semantički koristeći CLIP ugradnje", "machine_learning_smart_search_description": "Pretražujte slike semantički koristeći CLIP ugradnje",
"machine_learning_smart_search_enabled": "Omogući pametno pretraživanje", "machine_learning_smart_search_enabled": "Omogući pametno pretraživanje",
"machine_learning_smart_search_enabled_description": "Ako je onemogućeno, slike neće biti kodirane za pametno pretraživanje.", "machine_learning_smart_search_enabled_description": "Ako je onemogućeno, slike neće biti kodirane za pametno pretraživanje.",
"machine_learning_url_description": "URL poslužitelja strojnog učenja. Ako ste dodali više od jednog URLa, svaki server će biti kontaktiraj jedanput dok jedan ne odgovori uspješno, u redu od prvog do zadnjeg.", "machine_learning_url_description": "URL poslužitelja strojnog učenja. Ako ste dodali više od jednog URLa, svaki server će biti kontaktiraj jedanput dok jedan ne odgovori uspješno, u redu od prvog do zadnjeg. Serveri koji ne odgovore će privremeno biti ignorirani dok ponovo ne postanu dostupni.",
"manage_concurrency": "Upravljanje Istovremenošću", "manage_concurrency": "Upravljanje Istovremenošću",
"manage_log_settings": "Upravljanje postavkama zapisivanje", "manage_log_settings": "Upravljanje postavkama zapisivanje",
"map_dark_style": "Tamni stil", "map_dark_style": "Tamni stil",
@@ -147,6 +157,8 @@
"map_settings": "Karta", "map_settings": "Karta",
"map_settings_description": "Upravljanje postavkama karte", "map_settings_description": "Upravljanje postavkama karte",
"map_style_description": "URL na style.json temu karte", "map_style_description": "URL na style.json temu karte",
"memory_cleanup_job": "Čišćenje memorije",
"memory_generate_job": "Generiranje memorije",
"metadata_extraction_job": "Izdvoj metapodatke", "metadata_extraction_job": "Izdvoj metapodatke",
"metadata_extraction_job_description": "Izdvojite podatke o metapodacima iz svakog sredstva, kao što su GPS, lica i rezolucija", "metadata_extraction_job_description": "Izdvojite podatke o metapodacima iz svakog sredstva, kao što su GPS, lica i rezolucija",
"metadata_faces_import_setting": "Omogući uvoz lica", "metadata_faces_import_setting": "Omogući uvoz lica",
@@ -159,7 +171,6 @@
"no_pattern_added": "Nije dodan uzorak", "no_pattern_added": "Nije dodan uzorak",
"note_apply_storage_label_previous_assets": "Napomena: da biste primijenili Oznaku Pohrane na prethodno prenesena sredstva, pokrenite", "note_apply_storage_label_previous_assets": "Napomena: da biste primijenili Oznaku Pohrane na prethodno prenesena sredstva, pokrenite",
"note_cannot_be_changed_later": "NAPOMENA: Ovo se ne može promijeniti kasnije!", "note_cannot_be_changed_later": "NAPOMENA: Ovo se ne može promijeniti kasnije!",
"note_unlimited_quota": "Napomena: Unesite 0 za neograničenu kvotu",
"notification_email_from_address": "Od adrese", "notification_email_from_address": "Od adrese",
"notification_email_from_address_description": "E-mail adresa pošiljatelja, na primjer: \"Immich Photo Server <noreply@example.com>\"", "notification_email_from_address_description": "E-mail adresa pošiljatelja, na primjer: \"Immich Photo Server <noreply@example.com>\"",
"notification_email_host_description": "Poslužitelja e-pošte (npr. smtp.immich.app)", "notification_email_host_description": "Poslužitelja e-pošte (npr. smtp.immich.app)",
@@ -240,7 +251,7 @@
"storage_template_hash_verification_enabled_description": "Omogućuje hash provjeru, nemojte je onemogućiti osim ako niste sigurni u implikacije", "storage_template_hash_verification_enabled_description": "Omogućuje hash provjeru, nemojte je onemogućiti osim ako niste sigurni u implikacije",
"storage_template_migration": "Migracija predloška za pohranu", "storage_template_migration": "Migracija predloška za pohranu",
"storage_template_migration_description": "Primijenite trenutni <link>{template}</link> na prethodno prenesena sredstva", "storage_template_migration_description": "Primijenite trenutni <link>{template}</link> na prethodno prenesena sredstva",
"storage_template_migration_info": "Promjene predloška primjenjivat će se samo na nova sredstva. Za retroaktivnu primjenu predloška na prethodno prenesena sredstva, pokrenite <link>{job}</link>.", "storage_template_migration_info": "Predložak za pohranu će sve nastavke (ekstenzije) pretvoriti u mala slova. Promjene predloška primjenjivat će se samo na nova sredstva. Za retroaktivnu primjenu predloška na prethodno prenesena sredstva, pokrenite <link>{job}</link>.",
"storage_template_migration_job": "Posao Migracije Predloška Pohrane", "storage_template_migration_job": "Posao Migracije Predloška Pohrane",
"storage_template_more_details": "Za više pojedinosti o ovoj značajci pogledajte <template-link>Predložak pohrane</template-link> i njegove <implications-link>implikacije</implications-link>", "storage_template_more_details": "Za više pojedinosti o ovoj značajci pogledajte <template-link>Predložak pohrane</template-link> i njegove <implications-link>implikacije</implications-link>",
"storage_template_onboarding_description": "Kada je omogućena, ova će značajka automatski organizirati datoteke na temelju korisnički definiranog predloška. Zbog problema sa stabilnošću značajka je isključena prema zadanim postavkama. Za više informacija pogledajte <link>dokumentaciju</link>.", "storage_template_onboarding_description": "Kada je omogućena, ova će značajka automatski organizirati datoteke na temelju korisnički definiranog predloška. Zbog problema sa stabilnošću značajka je isključena prema zadanim postavkama. Za više informacija pogledajte <link>dokumentaciju</link>.",
@@ -251,6 +262,15 @@
"system_settings": "Postavke Sustava", "system_settings": "Postavke Sustava",
"tag_cleanup_job": "Čišćenje oznaka", "tag_cleanup_job": "Čišćenje oznaka",
"template_email_available_tags": "Možete koristiti sljedeće varijable u vašem predlošku:{tags}", "template_email_available_tags": "Možete koristiti sljedeće varijable u vašem predlošku:{tags}",
"template_email_if_empty": "Ukoliko je predložak prazan, koristit će se zadana e-mail adresa.",
"template_email_invite_album": "Predložak za pozivnicu u album",
"template_email_preview": "Pregled",
"template_email_settings": "E-mail Predlošci",
"template_email_settings_description": "Upravljanje prilagođenim predlošcima za obavijesti putem e-maila",
"template_email_update_album": "Ažuriraj Album Predložak",
"template_email_welcome": "Predložak e-maila dobrodošlice",
"template_settings": "Predložak Obavijesti",
"template_settings_description": "Upravljaj prilagođenim predlošcima za obavijesti.",
"theme_custom_css_settings": "Prilagođeni CSS", "theme_custom_css_settings": "Prilagođeni CSS",
"theme_custom_css_settings_description": "Kaskadni listovi stilova (CSS) omogućuju prilagođavanje dizajna Immicha.", "theme_custom_css_settings_description": "Kaskadni listovi stilova (CSS) omogućuju prilagođavanje dizajna Immicha.",
"theme_settings": "Postavke tema", "theme_settings": "Postavke tema",
@@ -280,6 +300,8 @@
"transcoding_constant_rate_factor": "Faktor konstantne stope (-crf)", "transcoding_constant_rate_factor": "Faktor konstantne stope (-crf)",
"transcoding_constant_rate_factor_description": "Razina kvalitete videa. Uobičajene vrijednosti su 23 za H.264, 28 za HEVC, 31 za VP9 i 35 za AV1. Niže je bolje, ali stvara veće datoteke.", "transcoding_constant_rate_factor_description": "Razina kvalitete videa. Uobičajene vrijednosti su 23 za H.264, 28 za HEVC, 31 za VP9 i 35 za AV1. Niže je bolje, ali stvara veće datoteke.",
"transcoding_disabled_description": "Nemojte transkodirati nijedan videozapis, može prekinuti reprodukciju na nekim klijentima", "transcoding_disabled_description": "Nemojte transkodirati nijedan videozapis, može prekinuti reprodukciju na nekim klijentima",
"transcoding_encoding_options": "Opcije Kodiranja",
"transcoding_encoding_options_description": "Postavi kodeke, rezoluciju, kvalitetu i druge opcije za kodirane videje",
"transcoding_hardware_acceleration": "Hardversko Ubrzanje", "transcoding_hardware_acceleration": "Hardversko Ubrzanje",
"transcoding_hardware_acceleration_description": "Eksperimentalno; puno brže, ali će imati nižu kvalitetu pri istoj bitrate postavci", "transcoding_hardware_acceleration_description": "Eksperimentalno; puno brže, ali će imati nižu kvalitetu pri istoj bitrate postavci",
"transcoding_hardware_decoding": "Hardversko dekodiranje", "transcoding_hardware_decoding": "Hardversko dekodiranje",
@@ -292,6 +314,8 @@
"transcoding_max_keyframe_interval": "Maksimalni interval ključnih sličica", "transcoding_max_keyframe_interval": "Maksimalni interval ključnih sličica",
"transcoding_max_keyframe_interval_description": "Postavlja maksimalnu udaljenost slika između ključnih kadrova. Niže vrijednosti pogoršavaju učinkovitost kompresije, ali poboljšavaju vrijeme traženja i mogu poboljšati kvalitetu u scenama s brzim kretanjem. 0 automatski postavlja ovu vrijednost.", "transcoding_max_keyframe_interval_description": "Postavlja maksimalnu udaljenost slika između ključnih kadrova. Niže vrijednosti pogoršavaju učinkovitost kompresije, ali poboljšavaju vrijeme traženja i mogu poboljšati kvalitetu u scenama s brzim kretanjem. 0 automatski postavlja ovu vrijednost.",
"transcoding_optimal_description": "Videozapisi koji su veći od ciljne rezolucije ili nisu u prihvatljivom formatu", "transcoding_optimal_description": "Videozapisi koji su veći od ciljne rezolucije ili nisu u prihvatljivom formatu",
"transcoding_policy": "Politika Transkodiranja",
"transcoding_policy_description": "Postavi kada će video biti transkodiran",
"transcoding_preferred_hardware_device": "Preferirani hardverski uređaj", "transcoding_preferred_hardware_device": "Preferirani hardverski uređaj",
"transcoding_preferred_hardware_device_description": "Odnosi se samo na VAAPI i QSV. Postavlja dri node koji se koristi za hardversko transkodiranje.", "transcoding_preferred_hardware_device_description": "Odnosi se samo na VAAPI i QSV. Postavlja dri node koji se koristi za hardversko transkodiranje.",
"transcoding_preset_preset": "Preset (-preset)", "transcoding_preset_preset": "Preset (-preset)",
@@ -300,7 +324,7 @@
"transcoding_reference_frames_description": "Broj slika za referencu prilikom komprimiranja određene slike. Više vrijednosti poboljšavaju učinkovitost kompresije, ali usporavaju kodiranje. 0 automatski postavlja ovu vrijednost.", "transcoding_reference_frames_description": "Broj slika za referencu prilikom komprimiranja određene slike. Više vrijednosti poboljšavaju učinkovitost kompresije, ali usporavaju kodiranje. 0 automatski postavlja ovu vrijednost.",
"transcoding_required_description": "Samo videozapisi koji nisu u prihvaćenom formatu", "transcoding_required_description": "Samo videozapisi koji nisu u prihvaćenom formatu",
"transcoding_settings": "Postavke Video Transkodiranja", "transcoding_settings": "Postavke Video Transkodiranja",
"transcoding_settings_description": "Upravljajte informacijama o razlučivosti i kodiranju video datoteka", "transcoding_settings_description": "Upravljaj koji videozapisi će se transkodirati i kako ih obraditi",
"transcoding_target_resolution": "Ciljana rezolucija", "transcoding_target_resolution": "Ciljana rezolucija",
"transcoding_target_resolution_description": "Veće razlučivosti mogu sačuvati više detalja, ali trebaju dulje za kodiranje, imaju veće veličine datoteka i mogu smanjiti odziv aplikacije.", "transcoding_target_resolution_description": "Veće razlučivosti mogu sačuvati više detalja, ali trebaju dulje za kodiranje, imaju veće veličine datoteka i mogu smanjiti odziv aplikacije.",
"transcoding_temporal_aq": "Vremenski AQ", "transcoding_temporal_aq": "Vremenski AQ",
@@ -313,7 +337,7 @@
"transcoding_transcode_policy_description": "Pravila o tome kada se video treba transkodirati. HDR videozapisi uvijek će biti transkodirani (osim ako je transkodiranje onemogućeno).", "transcoding_transcode_policy_description": "Pravila o tome kada se video treba transkodirati. HDR videozapisi uvijek će biti transkodirani (osim ako je transkodiranje onemogućeno).",
"transcoding_two_pass_encoding": "Kodiranje u dva prolaza", "transcoding_two_pass_encoding": "Kodiranje u dva prolaza",
"transcoding_two_pass_encoding_setting_description": "Transkodiranje u dva prolaza za proizvodnju bolje kodiranih videozapisa. Kada je omogućena maksimalna brzina prijenosa (potrebna za rad s H.264 i HEVC), ovaj način rada koristi raspon brzine prijenosa na temelju maksimalne brzine prijenosa i zanemaruje CRF. Za VP9, CRF se može koristiti ako je maksimalna brzina prijenosa onemogućena.", "transcoding_two_pass_encoding_setting_description": "Transkodiranje u dva prolaza za proizvodnju bolje kodiranih videozapisa. Kada je omogućena maksimalna brzina prijenosa (potrebna za rad s H.264 i HEVC), ovaj način rada koristi raspon brzine prijenosa na temelju maksimalne brzine prijenosa i zanemaruje CRF. Za VP9, CRF se može koristiti ako je maksimalna brzina prijenosa onemogućena.",
"transcoding_video_codec": "Video Kodek", "transcoding_video_codec": "Video kodek",
"transcoding_video_codec_description": "VP9 ima visoku učinkovitost i web-kompatibilnost, ali treba dulje za transkodiranje. HEVC ima sličnu izvedbu, ali ima slabiju web kompatibilnost. H.264 široko je kompatibilan i brzo se transkodira, ali proizvodi mnogo veće datoteke. AV1 je najučinkovitiji kodek, ali nema podršku na starijim uređajima.", "transcoding_video_codec_description": "VP9 ima visoku učinkovitost i web-kompatibilnost, ali treba dulje za transkodiranje. HEVC ima sličnu izvedbu, ali ima slabiju web kompatibilnost. H.264 široko je kompatibilan i brzo se transkodira, ali proizvodi mnogo veće datoteke. AV1 je najučinkovitiji kodek, ali nema podršku na starijim uređajima.",
"trash_enabled_description": "Omogućite značajke Smeća", "trash_enabled_description": "Omogućite značajke Smeća",
"trash_number_of_days": "Broj dana", "trash_number_of_days": "Broj dana",
@@ -347,6 +371,20 @@
"admin_password": "Admin Lozinka", "admin_password": "Admin Lozinka",
"administration": "Administracija", "administration": "Administracija",
"advanced": "Napredno", "advanced": "Napredno",
"advanced_settings_enable_alternate_media_filter_subtitle": "Koristite ovu opciju za filtriranje medija tijekom sinkronizacije na temelju alternativnih kriterija. Pokušajte ovo samo ako imate problema s aplikacijom koja ne prepoznaje sve albume.",
"advanced_settings_enable_alternate_media_filter_title": "[EKSPERIMENTALNO] Koristite alternativni filter za sinkronizaciju albuma na uređaju",
"advanced_settings_log_level_title": "Razina zapisivanja: {}",
"advanced_settings_prefer_remote_subtitle": "Neki uređaji sporo učitavaju sličice s resursa na uređaju. Aktivirajte ovu postavku kako biste umjesto toga učitali slike s udaljenih izvora.",
"advanced_settings_prefer_remote_title": "Preferiraj udaljene slike",
"advanced_settings_proxy_headers_subtitle": "Definirajte zaglavlja posrednika koja Immich treba slati sa svakim mrežnim zahtjevom.",
"advanced_settings_proxy_headers_title": "Zaglavlja Posrednika",
"advanced_settings_self_signed_ssl_subtitle": "Preskoči provjeru SSL certifikata za krajnju točku poslužitelja. Potrebno za samo-potpisane certifikate.",
"advanced_settings_self_signed_ssl_title": "Dopusti samo-potpisane SSL certifikate",
"advanced_settings_sync_remote_deletions_subtitle": "Automatski izbriši ili obnovi resurs na ovom uređaju kada se ta radnja izvrši na webu",
"advanced_settings_sync_remote_deletions_title": "Sinkroniziraj udaljena brisanja [EKSPERIMENTALNO]",
"advanced_settings_tile_subtitle": "Postavke za napredne korisnike",
"advanced_settings_troubleshooting_subtitle": "Omogući dodatne značajke za rješavanje problema",
"advanced_settings_troubleshooting_title": "Rješavanje problema",
"age_months": "Dob {months, plural, one {# month} other {# months}}", "age_months": "Dob {months, plural, one {# month} other {# months}}",
"age_year_months": "Dob 1 godina, {months, plural, one {# month} other {# months}}", "age_year_months": "Dob 1 godina, {months, plural, one {# month} other {# months}}",
"age_years": "{years, plural, other {Age #}}", "age_years": "{years, plural, other {Age #}}",
@@ -355,6 +393,8 @@
"album_cover_updated": "Naslovnica albuma ažurirana", "album_cover_updated": "Naslovnica albuma ažurirana",
"album_delete_confirmation": "Jeste li sigurni da želite izbrisati album {album}?", "album_delete_confirmation": "Jeste li sigurni da želite izbrisati album {album}?",
"album_delete_confirmation_description": "Ako se ovaj album dijeli, drugi korisnici mu više neće moći pristupiti.", "album_delete_confirmation_description": "Ako se ovaj album dijeli, drugi korisnici mu više neće moći pristupiti.",
"album_info_card_backup_album_excluded": "IZUZETO",
"album_info_card_backup_album_included": "UKLJUČENO",
"album_info_updated": "Podaci o albumu ažurirani", "album_info_updated": "Podaci o albumu ažurirani",
"album_leave": "Napustiti album?", "album_leave": "Napustiti album?",
"album_leave_confirmation": "Jeste li sigurni da želite napustiti {album}?", "album_leave_confirmation": "Jeste li sigurni da želite napustiti {album}?",
@@ -363,10 +403,22 @@
"album_remove_user": "Ukloni korisnika?", "album_remove_user": "Ukloni korisnika?",
"album_remove_user_confirmation": "Jeste li sigurni da želite ukloniti {user}?", "album_remove_user_confirmation": "Jeste li sigurni da želite ukloniti {user}?",
"album_share_no_users": "Čini se da ste podijelili ovaj album sa svim korisnicima ili nemate nijednog korisnika s kojim biste ga dijelili.", "album_share_no_users": "Čini se da ste podijelili ovaj album sa svim korisnicima ili nemate nijednog korisnika s kojim biste ga dijelili.",
"album_thumbnail_card_item": "1 stavka",
"album_thumbnail_card_items": "{} stavki",
"album_thumbnail_card_shared": " · Podijeljeno",
"album_thumbnail_shared_by": "Podijeljeno sa {}",
"album_updated": "Album ažuriran", "album_updated": "Album ažuriran",
"album_updated_setting_description": "Primite obavijest e-poštom kada dijeljeni album ima nova sredstva", "album_updated_setting_description": "Primite obavijest e-poštom kada dijeljeni album ima nova sredstva",
"album_user_left": "Napušten {album}", "album_user_left": "Napušten {album}",
"album_user_removed": "Uklonjen {user}", "album_user_removed": "Uklonjen {user}",
"album_viewer_appbar_delete_confirm": "Jeste li sigurni da želite izbrisati ovaj album s vašeg računa?",
"album_viewer_appbar_share_err_delete": "Neuspješno brisanje albuma",
"album_viewer_appbar_share_err_leave": "Neuspješno napuštanje albuma",
"album_viewer_appbar_share_err_remove": "Postoje problemi s uklanjanjem resursa iz albuma",
"album_viewer_appbar_share_err_title": "Neuspješno mijenjanje naslova albuma",
"album_viewer_appbar_share_leave": "Napusti album",
"album_viewer_appbar_share_to": "Podijeli s",
"album_viewer_page_share_add_users": "Dodaj korisnike",
"album_with_link_access": "Dopusti svima s poveznicom pristup fotografijama i osobama u ovom albumu.", "album_with_link_access": "Dopusti svima s poveznicom pristup fotografijama i osobama u ovom albumu.",
"albums": "Albumi", "albums": "Albumi",
"albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Albumi}}", "albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Albumi}}",
@@ -378,47 +430,139 @@
"allow_edits": "Dozvoli izmjene", "allow_edits": "Dozvoli izmjene",
"allow_public_user_to_download": "Dopusti javnom korisniku preuzimanje", "allow_public_user_to_download": "Dopusti javnom korisniku preuzimanje",
"allow_public_user_to_upload": "Dopusti javnom korisniku učitavanje", "allow_public_user_to_upload": "Dopusti javnom korisniku učitavanje",
"alt_text_qr_code": "Slika QR koda",
"anti_clockwise": "Suprotno smjeru kazaljke na satu", "anti_clockwise": "Suprotno smjeru kazaljke na satu",
"api_key": "API Ključ", "api_key": "API Ključ",
"api_key_description": "Ova će vrijednost biti prikazana samo jednom. Obavezno ju kopirajte prije zatvaranja prozora.", "api_key_description": "Ova će vrijednost biti prikazana samo jednom. Obavezno ju kopirajte prije zatvaranja prozora.",
"api_key_empty": "Naziv vašeg API ključa ne smije biti prazan", "api_key_empty": "Naziv vašeg API ključa ne smije biti prazan",
"api_keys": "API Ključevi", "api_keys": "API Ključevi",
"app_bar_signout_dialog_content": "Jeste li sigurni da se želite odjaviti?",
"app_bar_signout_dialog_ok": "Da",
"app_bar_signout_dialog_title": "Odjavi se",
"app_settings": "Postavke Aplikacije", "app_settings": "Postavke Aplikacije",
"appears_in": "Pojavljuje se u", "appears_in": "Pojavljuje se u",
"archive": "Arhiva", "archive": "Arhiva",
"archive_or_unarchive_photo": "Arhivirajte ili dearhivirajte fotografiju", "archive_or_unarchive_photo": "Arhivirajte ili dearhivirajte fotografiju",
"archive_page_no_archived_assets": "Nema arhiviranih resursa",
"archive_page_title": "Arhiviraj {{}}",
"archive_size": "Veličina arhive", "archive_size": "Veličina arhive",
"archive_size_description": "Konfigurirajte veličinu arhive za preuzimanja (u GiB)", "archive_size_description": "Konfigurirajte veličinu arhive za preuzimanja (u GiB)",
"archived": "Ahrivirano",
"archived_count": "{count, plural, other {Archived #}}", "archived_count": "{count, plural, other {Archived #}}",
"are_these_the_same_person": "Je li ovo ista osoba?", "are_these_the_same_person": "Je li ovo ista osoba?",
"are_you_sure_to_do_this": "Jeste li sigurni da to želite učiniti?", "are_you_sure_to_do_this": "Jeste li sigurni da to želite učiniti?",
"asset_action_delete_err_read_only": "Nije moguće izbrisati resurse samo za čitanje, preskačem",
"asset_action_share_err_offline": "Nije moguće dohvatiti izvanmrežne resurse, preskačem",
"asset_added_to_album": "Dodano u album", "asset_added_to_album": "Dodano u album",
"asset_adding_to_album": "Dodavanje u album...", "asset_adding_to_album": "Dodavanje u album",
"asset_description_updated": "Opis imovine je ažuriran", "asset_description_updated": "Opis imovine je ažuriran",
"asset_filename_is_offline": "Sredstvo {filename} je izvan mreže", "asset_filename_is_offline": "Sredstvo {filename} je izvan mreže",
"asset_has_unassigned_faces": "Materijal ima nedodijeljena lica", "asset_has_unassigned_faces": "Materijal ima nedodijeljena lica",
"asset_hashing": "Hashiranje...", "asset_hashing": "Sažimanje",
"asset_list_group_by_sub_title": "Grupiraj po",
"asset_list_layout_settings_dynamic_layout_title": "Dinamički raspored",
"asset_list_layout_settings_group_automatically": "Automatski",
"asset_list_layout_settings_group_by": "Grupiraj resurse po",
"asset_list_layout_settings_group_by_month_day": "Mjesec + dan",
"asset_list_layout_sub_title": "Raspored",
"asset_list_settings_subtitle": "Postavke izgleda mreže fotografija",
"asset_list_settings_title": "Mreža Fotografija",
"asset_offline": "Sredstvo izvan mreže", "asset_offline": "Sredstvo izvan mreže",
"asset_offline_description": "Ovaj materijal je izvan mreže. Immich ne može pristupiti lokaciji datoteke. Provjerite je li sredstvo dostupno, a zatim ponovno skenirajte biblioteku.", "asset_offline_description": "Ovaj materijal je izvan mreže. Immich ne može pristupiti lokaciji datoteke. Provjerite je li sredstvo dostupno, a zatim ponovno skenirajte biblioteku.",
"asset_restored_successfully": "Resurs uspješno obnovljen",
"asset_skipped": "Preskočeno", "asset_skipped": "Preskočeno",
"asset_skipped_in_trash": "U smeću", "asset_skipped_in_trash": "U smeću",
"asset_uploaded": "Učitano", "asset_uploaded": "Učitano",
"asset_uploading": "Učitavanje...", "asset_uploading": "Šaljem…",
"asset_viewer_settings_subtitle": "Upravljajte postavkama preglednika vaše galerije",
"asset_viewer_settings_title": "Preglednik Resursa",
"assets": "Sredstva", "assets": "Sredstva",
"assets_added_count": "Dodano {count, plural, one {# asset} other {# assets}}", "assets_added_count": "Dodano {count, plural, one {# asset} other {# assets}}",
"assets_added_to_album_count": "Dodano {count, plural, one {# asset} other {# assets}} u album", "assets_added_to_album_count": "Dodano {count, plural, one {# asset} other {# assets}} u album",
"assets_added_to_name_count": "Dodano {count, plural, one {# asset} other {# assets}} u {hasName, select, true {<b>{name}</b>} other {new album}}", "assets_added_to_name_count": "Dodano {count, plural, one {# asset} other {# assets}} u {hasName, select, true {<b>{name}</b>} other {new album}}",
"assets_count": "{count, plural, one {# asset} other {# assets}}", "assets_count": "{count, plural, one {# asset} other {# assets}}",
"assets_deleted_permanently": "{} resurs(i) uspješno uklonjeni",
"assets_deleted_permanently_from_server": "{} resurs(i) trajno obrisan(i) sa Immich poslužitelja",
"assets_moved_to_trash_count": "{count, plural, one {# asset} other {# asset}} premješteno u smeće", "assets_moved_to_trash_count": "{count, plural, one {# asset} other {# asset}} premješteno u smeće",
"assets_permanently_deleted_count": "Trajno izbrisano {count, plural, one {# asset} other {# assets}}", "assets_permanently_deleted_count": "Trajno izbrisano {count, plural, one {# asset} other {# assets}}",
"assets_removed_count": "Uklonjeno {count, plural, one {# asset} other {# assets}}", "assets_removed_count": "Uklonjeno {count, plural, one {# asset} other {# assets}}",
"assets_restore_confirmation": "Jeste li sigurni da želite vratiti sve svoje resurse bačene u otpad? Ne možete poništiti ovu radnju!", "assets_removed_permanently_from_device": "{} resurs(i) trajno uklonjen(i) s vašeg uređaja",
"assets_restore_confirmation": "Jeste li sigurni da želite obnoviti sve svoje resurse bačene u otpad? Ne možete poništiti ovu radnju! Imajte na umu da se bilo koji izvanmrežni resursi ne mogu obnoviti na ovaj način.",
"assets_restored_count": "Vraćeno {count, plural, one {# asset} other {# assets}}", "assets_restored_count": "Vraćeno {count, plural, one {# asset} other {# assets}}",
"assets_restored_successfully": "{} resurs(i) uspješno obnovljen(i)",
"assets_trashed": "{} resurs(i) premješten(i) u smeće",
"assets_trashed_count": "Bačeno u smeće {count, plural, one {# asset} other {# assets}}", "assets_trashed_count": "Bačeno u smeće {count, plural, one {# asset} other {# assets}}",
"assets_trashed_from_server": "{} resurs(i) premješten(i) u smeće s Immich poslužitelja",
"assets_were_part_of_album_count": "{count, plural, one {Asset was} other {Assets were}} već dio albuma", "assets_were_part_of_album_count": "{count, plural, one {Asset was} other {Assets were}} već dio albuma",
"authorized_devices": "Ovlašteni Uređaji", "authorized_devices": "Ovlašteni Uređaji",
"automatic_endpoint_switching_subtitle": "Povežite se lokalno preko naznačene Wi-Fi mreže kada je dostupna i koristite alternativne veze na drugim lokacijama",
"automatic_endpoint_switching_title": "Automatsko prebacivanje URL-a",
"back": "Nazad", "back": "Nazad",
"back_close_deselect": "Natrag, zatvorite ili poništite odabir", "back_close_deselect": "Natrag, zatvorite ili poništite odabir",
"background_location_permission": "Dozvola za lokaciju u pozadini",
"background_location_permission_content": "Kako bi prebacivao mreže dok radi u pozadini, Immich mora *uvijek* imati pristup preciznoj lokaciji kako bi aplikacija mogla pročitati naziv Wi-Fi mreže",
"backup_album_selection_page_albums_device": "Albumi na uređaju {{}}",
"backup_album_selection_page_albums_tap": "Dodirnite za uključivanje, dvostruki dodir za isključivanje",
"backup_album_selection_page_assets_scatter": "Resursi mogu biti raspoređeni u više albuma. Stoga, albumi mogu biti uključeni ili isključeni tijekom procesa sigurnosnog kopiranja.",
"backup_album_selection_page_select_albums": "Odabrani albumi",
"backup_album_selection_page_selection_info": "Informacije o odabiru",
"backup_album_selection_page_total_assets": "Ukupan broj jedinstvenih resursa",
"backup_all": "Sve",
"backup_background_service_backup_failed_message": "Neuspješno sigurnosno kopiranje resursa. Pokušavam ponovo…",
"backup_background_service_connection_failed_message": "Neuspješno povezivanje s poslužiteljem. Pokušavam ponovo…",
"backup_background_service_current_upload_notification": "Šaljem {}",
"backup_background_service_default_notification": "Provjera novih resursa…",
"backup_background_service_error_title": "Pogreška pri sigurnosnom kopiranju",
"backup_background_service_in_progress_notification": "Sigurnosno kopiranje vaših resursa…",
"backup_background_service_upload_failure_notification": "Neuspješno slanje {}",
"backup_controller_page_albums": "Sigurnosno kopiranje albuma",
"backup_controller_page_background_app_refresh_disabled_content": "Omogućite osvježavanje aplikacije u pozadini u Postavke > Opće Postavke > Osvježavanje Aplikacija u Pozadini kako biste koristili sigurnosno kopiranje u pozadini.",
"backup_controller_page_background_app_refresh_disabled_title": "Osvježavanje aplikacija u pozadini je onemogućeno",
"backup_controller_page_background_app_refresh_enable_button_text": "Idite u postavke",
"backup_controller_page_background_battery_info_link": "Pokaži mi kako",
"backup_controller_page_background_battery_info_message": "Za najbolje iskustvo sigurnosnog kopiranja u pozadini, molimo onemogućite sve optimizacije baterije koje ograničavaju pozadinsku aktivnost Immicha.\n\nBudući da je ovo specifično za uređaj, molimo potražite potrebne informacije za proizvođača vašeg uređaja.",
"backup_controller_page_background_battery_info_ok": "U redu",
"backup_controller_page_background_battery_info_title": "Optimizacije baterije",
"backup_controller_page_background_charging": "Samo tijekom punjenja",
"backup_controller_page_background_configure_error": "Neuspješno konfiguriranje pozadinske usluge",
"backup_controller_page_background_delay": "Odgođeno sigurnosno kopiranje novih resursa: {}",
"backup_controller_page_background_description": "Uključite pozadinsku uslugu kako biste automatski sigurnosno kopirali nove resurse bez potrebe za otvaranjem aplikacije",
"backup_controller_page_background_is_off": "Automatsko sigurnosno kopiranje u pozadini je isključeno",
"backup_controller_page_background_is_on": "Automatsko sigurnosno kopiranje u pozadini je uključeno",
"backup_controller_page_background_turn_off": "Isključite pozadinsku uslugu",
"backup_controller_page_background_turn_on": "Uključite pozadinsku uslugu",
"backup_controller_page_background_wifi": "Samo na Wi-Fi mreži",
"backup_controller_page_backup": "Sigurnosna kopija",
"backup_controller_page_backup_selected": "Odabrani: ",
"backup_controller_page_backup_sub": "Sigurnosno kopirane fotografije i videozapisi",
"backup_controller_page_created": "Kreirano: {}",
"backup_controller_page_desc_backup": "Uključite sigurnosno kopiranje u prvom planu kako biste automatski prenijeli nove resurse na poslužitelj prilikom otvaranja aplikacije.",
"backup_controller_page_excluded": "Izuzeto: ",
"backup_controller_page_failed": "Neuspješno ({})",
"backup_controller_page_filename": "Naziv datoteke: {} [{}]",
"backup_controller_page_id": "ID: {}",
"backup_controller_page_info": "Informacije o sigurnosnom kopiranju",
"backup_controller_page_none_selected": "Nema odabranih",
"backup_controller_page_remainder": "Podsjetnik",
"backup_controller_page_remainder_sub": "Preostale fotografije i videozapisi za sigurnosno kopiranje iz odabira",
"backup_controller_page_server_storage": "Pohrana na poslužitelju",
"backup_controller_page_start_backup": "Pokreni Sigurnosno Kopiranje",
"backup_controller_page_status_off": "Automatsko sigurnosno kopiranje u prvom planu je isključeno",
"backup_controller_page_status_on": "Automatsko sigurnosno kopiranje u prvom planu je uključeno",
"backup_controller_page_storage_format": "{} od {} iskorišteno",
"backup_controller_page_to_backup": "Albumi za sigurnosno kopiranje",
"backup_controller_page_total_sub": "Sve jedinstvene fotografije i videozapisi iz odabranih albuma",
"backup_controller_page_turn_off": "Isključite sigurnosno kopiranje u prvom planu",
"backup_controller_page_turn_on": "Uključite sigurnosno kopiranje u prvom planu",
"backup_controller_page_uploading_file_info": "Slanje informacija o datoteci",
"backup_err_only_album": "Nije moguće ukloniti jedini album",
"backup_info_card_assets": "resursi",
"backup_manual_cancelled": "Otkazano",
"backup_manual_in_progress": "Slanje već u tijeku. Pokšuajte nakon nekog vremena",
"backup_manual_success": "Uspijeh",
"backup_manual_title": "Status slanja",
"backup_options_page_title": "Opcije sigurnosnog kopiranja",
"backup_setting_subtitle": "Upravljajte postavkama učitavanja u pozadini i prvom planu",
"backward": "Unazad", "backward": "Unazad",
"birthdate_saved": "Datum rođenja uspješno spremljen", "birthdate_saved": "Datum rođenja uspješno spremljen",
"birthdate_set_description": "Datum rođenja se koristi za izračunavanje godina ove osobe u trenutku fotografije.", "birthdate_set_description": "Datum rođenja se koristi za izračunavanje godina ove osobe u trenutku fotografije.",
@@ -430,6 +574,16 @@
"bulk_keep_duplicates_confirmation": "Jeste li sigurni da želite zadržati {count, plural, one {# duplicate asset} other {# duplicate asset}}? Ovo će riješiti sve duplicirane grupe bez brisanja ičega.", "bulk_keep_duplicates_confirmation": "Jeste li sigurni da želite zadržati {count, plural, one {# duplicate asset} other {# duplicate asset}}? Ovo će riješiti sve duplicirane grupe bez brisanja ičega.",
"bulk_trash_duplicates_confirmation": "Jeste li sigurni da želite na veliko baciti u smeće {count, plural, one {# duplicate asset} other {# duplicate asset}}? Ovo će zadržati najveće sredstvo svake grupe i baciti sve ostale duplikate u smeće.", "bulk_trash_duplicates_confirmation": "Jeste li sigurni da želite na veliko baciti u smeće {count, plural, one {# duplicate asset} other {# duplicate asset}}? Ovo će zadržati najveće sredstvo svake grupe i baciti sve ostale duplikate u smeće.",
"buy": "Kupi Immich", "buy": "Kupi Immich",
"cache_settings_album_thumbnails": "Sličice na stranici biblioteke ({} resursa)",
"cache_settings_clear_cache_button": "Očisti predmemoriju",
"cache_settings_clear_cache_button_title": "Briše predmemoriju aplikacije. Ovo će značajno utjecati na performanse aplikacije dok se predmemorija ponovno ne izgradi.",
"cache_settings_duplicated_assets_clear_button": "OČISTI",
"cache_settings_duplicated_assets_subtitle": "Fotografije i videozapisi koje je aplikacija stavila na crnu listu",
"cache_settings_duplicated_assets_title": "Duplicirani Resursi ({})",
"cache_settings_image_cache_size": "Veličina predmemorije slika ({} resursa)",
"cache_settings_statistics_album": "Sličice biblioteke",
"cache_settings_statistics_assets": "{} resursa ({})",
"cache_settings_statistics_full": "Pune slike",
"camera": "Kamera", "camera": "Kamera",
"camera_brand": "Marka kamere", "camera_brand": "Marka kamere",
"camera_model": "Model kamere", "camera_model": "Model kamere",
@@ -761,6 +915,8 @@
"hide_unnamed_people": "Sakrij neimenovane osobe", "hide_unnamed_people": "Sakrij neimenovane osobe",
"host": "Domaćin", "host": "Domaćin",
"hour": "Sat", "hour": "Sat",
"ignore_icloud_photos": "Ignoriraj iCloud fotografije",
"ignore_icloud_photos_description": "Fotografije pohranjene na iCloudu neće biti učitane na Immich poslužitelj",
"image": "Slika", "image": "Slika",
"image_alt_text_date": "{isVideo, select, true {Video} other {Image}} snimljeno {date}", "image_alt_text_date": "{isVideo, select, true {Video} other {Image}} snimljeno {date}",
"image_alt_text_date_1_person": "{isVideo, select, true {Video} other {Image}} snimljeno s {person1} {date}", "image_alt_text_date_1_person": "{isVideo, select, true {Video} other {Image}} snimljeno s {person1} {date}",
@@ -772,6 +928,10 @@
"image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Image}} snimljeno u {city}, {country} s {person1} i {person2} {date}", "image_alt_text_date_place_2_people": "{isVideo, select, true {Video} other {Image}} snimljeno u {city}, {country} s {person1} i {person2} {date}",
"image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Image}} snimljeno u {city}, {country} s {person1}, {person2} i {person3} {date}", "image_alt_text_date_place_3_people": "{isVideo, select, true {Video} other {Image}} snimljeno u {city}, {country} s {person1}, {person2} i {person3} {date}",
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Image}} snimljeno u {city}, {country} s {person1}, {person2} i {additionalCount, number} drugih {date}", "image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Video} other {Image}} snimljeno u {city}, {country} s {person1}, {person2} i {additionalCount, number} drugih {date}",
"image_saved_successfully": "Slika je spremljena",
"image_viewer_page_state_provider_download_started": "Preuzimanje započelo",
"image_viewer_page_state_provider_download_success": "Uspješno Preuzimanje",
"image_viewer_page_state_provider_share_error": "Greška pri dijeljenju",
"immich_logo": "Immich Logo", "immich_logo": "Immich Logo",
"immich_web_interface": "Immich Web Sučelje", "immich_web_interface": "Immich Web Sučelje",
"import_from_json": "Uvoz iz JSON-a", "import_from_json": "Uvoz iz JSON-a",
@@ -893,7 +1053,6 @@
"no_shared_albums_message": "Stvorite album za dijeljenje fotografija i videozapisa s osobama u svojoj mreži", "no_shared_albums_message": "Stvorite album za dijeljenje fotografija i videozapisa s osobama u svojoj mreži",
"not_in_any_album": "Ni u jednom albumu", "not_in_any_album": "Ni u jednom albumu",
"note_apply_storage_label_to_previously_uploaded assets": "Napomena: Da biste primijenili Oznaku za skladištenje na prethodno prenesena sredstva, pokrenite", "note_apply_storage_label_to_previously_uploaded assets": "Napomena: Da biste primijenili Oznaku za skladištenje na prethodno prenesena sredstva, pokrenite",
"note_unlimited_quota": "napomena: Unesite 0 za neograni%C4%8Denu kvotu",
"notes": "Bilješke", "notes": "Bilješke",
"notification_toggle_setting_description": "Omogući obavijesti putem e-pošte", "notification_toggle_setting_description": "Omogući obavijesti putem e-pošte",
"notifications": "Obavijesti", "notifications": "Obavijesti",

File diff suppressed because it is too large Load Diff

View File

@@ -116,7 +116,6 @@
"no_pattern_added": "", "no_pattern_added": "",
"note_apply_storage_label_previous_assets": "", "note_apply_storage_label_previous_assets": "",
"note_cannot_be_changed_later": "", "note_cannot_be_changed_later": "",
"note_unlimited_quota": "",
"notification_email_from_address": "", "notification_email_from_address": "",
"notification_email_from_address_description": "", "notification_email_from_address_description": "",
"notification_email_host_description": "", "notification_email_host_description": "",
@@ -614,7 +613,6 @@
"no_shared_albums_message": "", "no_shared_albums_message": "",
"not_in_any_album": "", "not_in_any_album": "",
"note_apply_storage_label_to_previously_uploaded assets": "", "note_apply_storage_label_to_previously_uploaded assets": "",
"note_unlimited_quota": "",
"notes": "", "notes": "",
"notification_toggle_setting_description": "", "notification_toggle_setting_description": "",
"notifications": "", "notifications": "",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1,165 @@
{} {
"about": "შესახებ",
"account": "ანგარიში",
"account_settings": "ანგარიშის პარამეტრები",
"acknowledge": "მიღება",
"action": "ქმედება",
"actions": "ქმედებები",
"active": "აქტიური",
"activity": "აქტივობა",
"add": "დამატება",
"add_a_description": "დაამატე აღწერა",
"add_a_location": "დაამატე ადგილი",
"add_a_name": "დაამატე სახელი",
"add_a_title": "დაასათაურე",
"add_import_path": "დაამატე საიმპორტო მისამართი",
"add_location": "დაამატე ადგილი",
"add_more_users": "დაამატე მომხმარებლები",
"add_partner": "დაამატე პარტნიორი",
"add_path": "დაამატე მისამართი",
"add_photos": "დაამატე ფოტოები",
"add_to_album": "დაამატე ალბომში",
"add_to_shared_album": "დაამატე საზიარო ალბომში",
"add_url": "დაამატე URL",
"added_to_archive": "დაარქივდა",
"added_to_favorites": "დაამატე რჩეულებში",
"added_to_favorites_count": "{count, number} დაემატა რჩეულებში",
"admin": {
"authentication_settings": "ავთენტიკაციის პარამეტრები",
"authentication_settings_description": "პაროლის, OAuth-ის და სხვა ავტენთიფიკაციის პარამეტრების მართვა",
"authentication_settings_disable_all": "ნამდვილად გინდა ავტორიზაციის ყველა მეთოდის გამორთვა? ავტორიზაციას ვეღარანაირად შეძლებ.",
"authentication_settings_reenable": "რეაქტივაციისთვის, გამოიყენე <link>სერვერის ბრძანება</link>.",
"background_task_job": "ფონური დავალებები",
"backup_database": "ბაზის დამპის შექმნა",
"backup_database_enable_description": "ბაზის დამპების ჩართვა",
"backup_keep_last_amount": "წინა დამპების შესანარჩუნებელი რაოდენობა",
"backup_settings": "მონაცემთა ბაზის დამპის მორგება",
"backup_settings_description": "მონაცემთა ბაზის პარამეტრების ამრთვა. შენიშვნა: ამ დავალებების მონიტორინგი არ ხდება და თქვენ არ მოგივათ შეტყობინება, თუ ის ჩავარდება.",
"check_all": "შეამოწმე ყველა",
"cleanup": "გასუფთავება",
"confirm_delete_library": "ნამდვილად გინდა {library} ბიბლიოთეკის წაშლა?",
"confirm_email_below": "დასადასტურებლად, ქვემოთ აკრიფე \"{email}\"",
"confirm_user_password_reset": "ნამდვილად გინდა {user}-(ი)ს პაროლის დარესეტება?",
"disable_login": "გამორთე ავტორიზაცია",
"external_library_management": "გარე ბიბლიოთეკების მართვა",
"face_detection": "სახის ამოცნობა",
"image_format": "ფორმატი",
"image_fullsize_title": "სრული ზომის გამოსახულების პარამეტრები",
"image_quality": "ხარისხი",
"image_resolution": "გაფართოება",
"image_settings": "გამოსახულების პარამეტრები",
"image_settings_description": "გენერირებული ფოტოების ხარისხისა და რეზოლუციის მართვა",
"image_thumbnail_description": "მინიატურა მეტაინფორმაციის გარეშე, რომელიც ფოტოები ჯგუფურად თვალიერებისას გამოიყენება(მაგ. მთავარ თაიმლაინზე)",
"image_thumbnail_quality_description": "მინიატურის ხარისხი 1-დან 100-მდე. დიდი რიცხვი შეესაბამება უკეთეს ხარისხს, თუმცა, უფრო დიდ ფაილებს და აპლიკაციის შესაძლო შენელებას.",
"image_thumbnail_title": "მინიატურის პარამეტრები",
"library_created": "შეიქმნა ბიბლიოთეკა: {library}",
"library_deleted": "ბიბლიოთეკა წაიშალა",
"library_import_path_description": "აირჩიე დასაიმპორტებელი საქაღალდე. ფოტოები და ვიდეოები მოიძებნება ამ საქაღალდესა და მასში არსებულ საქაღალდეებში.",
"library_settings_description": "გარე ბიბლიოთეკების პარამეტრების მართვა",
"logging_settings": "ჟურნალი",
"map_settings": "რუკა",
"migration_job": "მიგრაცია",
"oauth_scope": "დიაპაზონი",
"oauth_settings": "OAuth",
"template_email_preview": "მინიატურა",
"transcoding_acceleration_vaapi": "VAAPI",
"transcoding_threads": "ნაკადები",
"transcoding_tone_mapping": "ტონების ასახვა"
},
"administration": "ადმინისტრაცია",
"advanced": "დამატებით",
"albums": "ალბომები",
"all": "ყველა",
"anti_clockwise": "საათის ისრის საწინააღმდეგო",
"archive": "არქივი",
"asset_hashing": "დაჰეშვა.…",
"asset_skipped": "გამოტოვებულია",
"asset_uploaded": "ატვირთულია",
"asset_uploading": "მიმდინარეობს ატვირთვა…",
"assets": "ობიექტები",
"back": "უკან",
"backward": "უკან გადასვლა",
"build": "აგება",
"camera": "კამერა",
"cancel": "გაუქმება",
"city": "ქალაქი",
"clear": "გასუფთავება",
"clockwise": "საათის ისრის მიმართულებით",
"close": "დახურვა",
"collapse": "აკეცვა",
"color": "ფერი",
"confirm": "დასტური",
"contain": "შეიცავს",
"context": "კონტექსტი",
"continue": "გაგრძელება",
"country": "ქვეყანა",
"cover": "ყდა",
"covers": "ყდები",
"create": "შექმნა",
"created": "შექმნილია",
"dark": "მუქი",
"day": "დღე",
"delete": "წაშლა",
"description": "აღწერა",
"details": "დეტალები",
"direction": "მიმართულება",
"disabled": "გათიშულია",
"discord": "Discord",
"discover": "აღმოჩენა",
"documentation": "დოკუმენტაცია",
"done": "მზადაა",
"download": "გადმოწერა",
"download_settings": "გადმოწერა",
"downloading": "მიმდინარეობს გადმოწერა",
"duplicates": "დუბლიკატები",
"duration": "ხანგრძლივობა",
"edit": "ჩასწორება",
"edited": "ჩასწორებულია",
"editor": "რედაქტორი",
"editor_crop_tool_h2_rotation": "ტრიალი",
"email": "ელფოსტა",
"enable": "ჩართვა",
"enabled": "ჩართულია",
"error": "შეცდომა",
"exif": "Exif",
"expired": "ვადაამოწურულია",
"explore": "დათვალიერება",
"explorer": "გამცილებელი",
"export": "გატანა",
"extension": "გაფართოება",
"external": "გარე",
"face_unassigned": "მიუნიჭებელი",
"favorite": "რჩეული",
"favorites": "რჩეულები",
"features": "თვისებები",
"filename": "ფაილის სახელი",
"filetype": "ფაილის ტიპი",
"folders": "საქაღალდეები",
"forward": "წინ",
"general": "ზოგადი",
"host": "ჰოსტი",
"hour": "საათი",
"image": "გამოსახულება",
"info": "ინფორმაცია",
"jobs": "დავალებები",
"keep": "შენარჩუნება",
"language": "ენა",
"latitude": "განედი",
"leave": "გასვლა",
"level": "დონე",
"library": "ბიბლიოთეკა",
"light": "ღია",
"list": "სია",
"loading": "ჩატვირთვა",
"login": "შესვლა",
"longitude": "გრძედი",
"look": "შეხედვა",
"make": "მწარმოებელი",
"map": "რუკა",
"matches": "დამთხვევები",
"memories": "მოგონებები",
"memory": "მეხსიერება",
"menu": "მენიუ",
"merge": "შერწყმა",
"minimize": "დაპატარავება"
}

View File

@@ -1 +1,16 @@
{} {
"add_photos": "суреттерді қосу",
"add_to": "қосу…",
"add_to_album": "альбомға қосу",
"add_to_album_bottom_sheet_added": "{album}'ға қосылған",
"add_to_album_bottom_sheet_already_exists": "Онсыз да {album} болған",
"add_to_shared_album": "бөліскен альбомға қосу",
"add_url": "URL таңдау",
"added_to_archive": "Архивке жіберілген",
"added_to_favorites": "таңдаулыларға қосылған",
"admin": {
"check_all": "Бәрін тексеріп алу",
"create_job": "Жұмысты бастау"
},
"zoom_image": "суретті үлкейту"
}

View File

@@ -121,7 +121,6 @@
"no_pattern_added": "", "no_pattern_added": "",
"note_apply_storage_label_previous_assets": "", "note_apply_storage_label_previous_assets": "",
"note_cannot_be_changed_later": "", "note_cannot_be_changed_later": "",
"note_unlimited_quota": "",
"notification_email_from_address": "", "notification_email_from_address": "",
"notification_email_from_address_description": "", "notification_email_from_address_description": "",
"notification_email_host_description": "", "notification_email_host_description": "",
@@ -621,7 +620,6 @@
"no_shared_albums_message": "", "no_shared_albums_message": "",
"not_in_any_album": "", "not_in_any_album": "",
"note_apply_storage_label_to_previously_uploaded assets": "", "note_apply_storage_label_to_previously_uploaded assets": "",
"note_unlimited_quota": "",
"notes": "", "notes": "",
"notification_toggle_setting_description": "", "notification_toggle_setting_description": "",
"notifications": "", "notifications": "",

File diff suppressed because it is too large Load Diff

View File

@@ -4,6 +4,7 @@
"account_settings": "Paskyros nustatymai", "account_settings": "Paskyros nustatymai",
"acknowledge": "Patvirtinti", "acknowledge": "Patvirtinti",
"action": "Veiksmas", "action": "Veiksmas",
"action_common_update": "Update",
"actions": "Veiksmai", "actions": "Veiksmai",
"active": "Vykdoma", "active": "Vykdoma",
"activity": "Veikla", "activity": "Veikla",
@@ -13,6 +14,7 @@
"add_a_location": "Pridėti vietovę", "add_a_location": "Pridėti vietovę",
"add_a_name": "Pridėti vardą", "add_a_name": "Pridėti vardą",
"add_a_title": "Pridėti pavadinimą", "add_a_title": "Pridėti pavadinimą",
"add_endpoint": "Add endpoint",
"add_exclusion_pattern": "Pridėti išimčių šabloną", "add_exclusion_pattern": "Pridėti išimčių šabloną",
"add_import_path": "Pridėti importavimo kelią", "add_import_path": "Pridėti importavimo kelią",
"add_location": "Pridėti vietovę", "add_location": "Pridėti vietovę",
@@ -22,6 +24,8 @@
"add_photos": "Pridėti nuotraukų", "add_photos": "Pridėti nuotraukų",
"add_to": "Pridėti į…", "add_to": "Pridėti į…",
"add_to_album": "Pridėti į albumą", "add_to_album": "Pridėti į albumą",
"add_to_album_bottom_sheet_added": "Added to {album}",
"add_to_album_bottom_sheet_already_exists": "Already in {album}",
"add_to_shared_album": "Pridėti į bendrinamą albumą", "add_to_shared_album": "Pridėti į bendrinamą albumą",
"add_url": "Pridėti URL", "add_url": "Pridėti URL",
"added_to_archive": "Pridėta į archyvą", "added_to_archive": "Pridėta į archyvą",
@@ -157,7 +161,6 @@
"no_pattern_added": "Šablonas nepridėtas", "no_pattern_added": "Šablonas nepridėtas",
"note_apply_storage_label_previous_assets": "Pastaba: norėdami pritaikyti saugyklos etiketę seniau įkeltiems ištekliams, paleiskite", "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!", "note_cannot_be_changed_later": "PASTABA: Vėliau to pakeisti negalima!",
"note_unlimited_quota": "Pastaba: įveskite 0 norint neribotos kvotos",
"notification_email_from_address": "Iš adreso", "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_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_host_description": "Elektroninio pašto serverio savininkas (pvz. smtp.immich.app)",
@@ -315,10 +318,22 @@
"admin_password": "Administratoriaus slaptažodis", "admin_password": "Administratoriaus slaptažodis",
"administration": "Administravimas", "administration": "Administravimas",
"advanced": "", "advanced": "",
"advanced_settings_log_level_title": "Log level: {}",
"advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.",
"advanced_settings_prefer_remote_title": "Prefer remote images",
"advanced_settings_proxy_headers_subtitle": "Define proxy headers Immich should send with each network request",
"advanced_settings_proxy_headers_title": "Proxy Headers",
"advanced_settings_self_signed_ssl_subtitle": "Skips SSL certificate verification for the server endpoint. Required for self-signed certificates.",
"advanced_settings_self_signed_ssl_title": "Allow self-signed SSL certificates",
"advanced_settings_tile_subtitle": "Advanced user's settings",
"advanced_settings_troubleshooting_subtitle": "Enable additional features for troubleshooting",
"advanced_settings_troubleshooting_title": "Troubleshooting",
"album_added": "Albumas pridėtas", "album_added": "Albumas pridėtas",
"album_added_notification_setting_description": "Gauti el. pašto pranešimą, kai būsite pridėtas prie bendrinamo albumo", "album_added_notification_setting_description": "Gauti el. pašto pranešimą, kai būsite pridėtas prie bendrinamo albumo",
"album_cover_updated": "Albumo viršelis atnaujintas", "album_cover_updated": "Albumo viršelis atnaujintas",
"album_delete_confirmation": "Ar tikrai norite ištrinti albumą {album}?", "album_delete_confirmation": "Ar tikrai norite ištrinti albumą {album}?",
"album_info_card_backup_album_excluded": "EXCLUDED",
"album_info_card_backup_album_included": "INCLUDED",
"album_info_updated": "Albumo informacija atnaujinta", "album_info_updated": "Albumo informacija atnaujinta",
"album_leave": "Palikti albumą?", "album_leave": "Palikti albumą?",
"album_leave_confirmation": "Ar tikrai norite palikti albumą {album}?", "album_leave_confirmation": "Ar tikrai norite palikti albumą {album}?",
@@ -327,9 +342,21 @@
"album_remove_user": "Pašalinti naudotoją?", "album_remove_user": "Pašalinti naudotoją?",
"album_remove_user_confirmation": "Ar tikrai norite pašalinti naudotoją {user}?", "album_remove_user_confirmation": "Ar tikrai norite pašalinti naudotoją {user}?",
"album_share_no_users": "Atrodo, kad bendrinate šį albumą su visais naudotojais, arba neturite naudotojų, su kuriais galėtumėte bendrinti.", "album_share_no_users": "Atrodo, kad bendrinate šį albumą su visais naudotojais, arba neturite naudotojų, su kuriais galėtumėte bendrinti.",
"album_thumbnail_card_item": "1 item",
"album_thumbnail_card_items": "{} items",
"album_thumbnail_card_shared": " · Shared",
"album_thumbnail_shared_by": "Shared by {}",
"album_updated": "Albumas atnaujintas", "album_updated": "Albumas atnaujintas",
"album_updated_setting_description": "Gauti pranešimą el. paštu, kai bendrinamas albumas turi naujų elementų", "album_updated_setting_description": "Gauti pranešimą el. paštu, kai bendrinamas albumas turi naujų elementų",
"album_user_removed": "Pašalintas {user}", "album_user_removed": "Pašalintas {user}",
"album_viewer_appbar_delete_confirm": "Are you sure you want to delete this album from your account?",
"album_viewer_appbar_share_err_delete": "Failed to delete album",
"album_viewer_appbar_share_err_leave": "Failed to leave album",
"album_viewer_appbar_share_err_remove": "There are problems in removing assets from album",
"album_viewer_appbar_share_err_title": "Failed to change album title",
"album_viewer_appbar_share_leave": "Leave album",
"album_viewer_appbar_share_to": "Share To",
"album_viewer_page_share_add_users": "Add users",
"album_with_link_access": "Tegul visi, turintys nuorodą, mato šio albumo nuotraukas ir žmones.", "album_with_link_access": "Tegul visi, turintys nuorodą, mato šio albumo nuotraukas ir žmones.",
"albums": "Albumai", "albums": "Albumai",
"albums_count": "{count, plural, one {# albumas} few {# albumai} other {# albumų}}", "albums_count": "{count, plural, one {# albumas} few {# albumai} other {# albumų}}",
@@ -344,37 +371,128 @@
"api_key": "API raktas", "api_key": "API raktas",
"api_key_empty": "Jūsų API rakto pavadinimas netūrėtų būti tuščias", "api_key_empty": "Jūsų API rakto pavadinimas netūrėtų būti tuščias",
"api_keys": "API raktai", "api_keys": "API raktai",
"app_bar_signout_dialog_content": "Are you sure you want to sign out?",
"app_bar_signout_dialog_ok": "Yes",
"app_bar_signout_dialog_title": "Sign out",
"app_settings": "Programos nustatymai", "app_settings": "Programos nustatymai",
"appears_in": "", "appears_in": "",
"archive": "Archyvas", "archive": "Archyvas",
"archive_or_unarchive_photo": "Archyvuoti arba išarchyvuoti nuotrauką", "archive_or_unarchive_photo": "Archyvuoti arba išarchyvuoti nuotrauką",
"archive_page_no_archived_assets": "No archived assets found",
"archive_page_title": "Archive ({})",
"archive_size": "Archyvo dydis", "archive_size": "Archyvo dydis",
"archive_size_description": "Konfigūruoti archyvo dydį atsisiuntimams (GiB)", "archive_size_description": "Konfigūruoti archyvo dydį atsisiuntimams (GiB)",
"archived": "Archived",
"archived_count": "{count, plural, other {# suarchyvuota}}", "archived_count": "{count, plural, other {# suarchyvuota}}",
"are_these_the_same_person": "Ar tai tas pats asmuo?", "are_these_the_same_person": "Ar tai tas pats asmuo?",
"are_you_sure_to_do_this": "Ar tikrai norite tai daryti?", "are_you_sure_to_do_this": "Ar tikrai norite tai daryti?",
"asset_action_delete_err_read_only": "Cannot delete read only asset(s), skipping",
"asset_action_share_err_offline": "Cannot fetch offline asset(s), skipping",
"asset_added_to_album": "Pridėta į albumą", "asset_added_to_album": "Pridėta į albumą",
"asset_adding_to_album": "Pridedama į albumą...", "asset_adding_to_album": "Pridedama į albumą...",
"asset_description_updated": "Elemento aprašymas buvo atnaujintas", "asset_description_updated": "Elemento aprašymas buvo atnaujintas",
"asset_filename_is_offline": "Elementas {filename} nepasiekiamas", "asset_filename_is_offline": "Elementas {filename} nepasiekiamas",
"asset_list_group_by_sub_title": "Group by",
"asset_list_layout_settings_dynamic_layout_title": "Dynamic layout",
"asset_list_layout_settings_group_automatically": "Automatic",
"asset_list_layout_settings_group_by": "Group assets by",
"asset_list_layout_settings_group_by_month_day": "Month + day",
"asset_list_layout_sub_title": "Layout",
"asset_list_settings_subtitle": "Photo grid layout settings",
"asset_list_settings_title": "Photo Grid",
"asset_offline": "Elementas nepasiekiamas", "asset_offline": "Elementas nepasiekiamas",
"asset_offline_description": "Šis išorinis elementas neberandamas diske. Dėl pagalbos susisiekite su savo Immich administratoriumi.", "asset_offline_description": "Šis išorinis elementas neberandamas diske. Dėl pagalbos susisiekite su savo Immich administratoriumi.",
"asset_restored_successfully": "Asset restored successfully",
"asset_uploaded": "Įkelta", "asset_uploaded": "Įkelta",
"asset_uploading": "Įkeliama...", "asset_uploading": "Įkeliama...",
"asset_viewer_settings_subtitle": "Manage your gallery viewer settings",
"asset_viewer_settings_title": "Asset Viewer",
"assets": "Elementai", "assets": "Elementai",
"assets_added_count": "{count, plural, one {Pridėtas # elementas} few {Pridėti # elementai} other {Pridėta # elementų}}", "assets_added_count": "{count, plural, one {Pridėtas # elementas} few {Pridėti # elementai} other {Pridėta # elementų}}",
"assets_added_to_album_count": "Į albumą {count, plural, one {įtrauktas # elementas} few {įtraukti # elementai} other {įtraukta # elementų}}", "assets_added_to_album_count": "Į albumą {count, plural, one {įtrauktas # elementas} few {įtraukti # elementai} other {įtraukta # elementų}}",
"assets_added_to_name_count": "Į {hasName, select, true {<b>{name}</b>} other {naują}} albumą {count, plural, one {įtrauktas # elementas} few {įtraukti # elementai} other {įtraukta # elementų}}", "assets_added_to_name_count": "Į {hasName, select, true {<b>{name}</b>} other {naują}} albumą {count, plural, one {įtrauktas # elementas} few {įtraukti # elementai} other {įtraukta # elementų}}",
"assets_count": "{count, plural, one {# elementas} few {# elementai} other {# elementų}}", "assets_count": "{count, plural, one {# elementas} few {# elementai} other {# elementų}}",
"assets_deleted_permanently": "{} asset(s) deleted permanently",
"assets_deleted_permanently_from_server": "{} asset(s) deleted permanently from the Immich server",
"assets_moved_to_trash_count": "{count, plural, one {# elementas perkeltas} few {# elementai perkelti} other {# elementų perkelta}} į šiukšliadėžę", "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_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_removed_count": "{count, plural, one {Pašalintas # elementas} few {Pašalinti # elementai} other {Pašalinta # elementų}}",
"assets_removed_permanently_from_device": "{} asset(s) removed permanently from your device",
"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_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_restored_count": "{count, plural, one {Atkurtas # elementas} few {Atkurti # elementai} other {Atkurta # elementų}}",
"assets_restored_successfully": "{} asset(s) restored successfully",
"assets_trashed": "{} asset(s) trashed",
"assets_trashed_from_server": "{} asset(s) trashed from the Immich server",
"assets_were_part_of_album_count": "{count, plural, one {# elementas} few {# elementai} other {# elementų}} jau prieš tai buvo albume", "assets_were_part_of_album_count": "{count, plural, one {# elementas} few {# elementai} other {# elementų}} jau prieš tai buvo albume",
"authorized_devices": "Autorizuoti įrenginiai", "authorized_devices": "Autorizuoti įrenginiai",
"automatic_endpoint_switching_subtitle": "Connect locally over designated Wi-Fi when available and use alternative connections elsewhere",
"automatic_endpoint_switching_title": "Automatic URL switching",
"back": "Atgal", "back": "Atgal",
"back_close_deselect": "Atgal, uždaryti arba atžymėti", "back_close_deselect": "Atgal, uždaryti arba atžymėti",
"background_location_permission": "Background location permission",
"background_location_permission_content": "In order to switch networks when running in the background, Immich must *always* have precise location access so the app can read the Wi-Fi network's name",
"backup_album_selection_page_albums_device": "Albums on device ({})",
"backup_album_selection_page_albums_tap": "Tap to include, double tap to exclude",
"backup_album_selection_page_assets_scatter": "Assets can scatter across multiple albums. Thus, albums can be included or excluded during the backup process.",
"backup_album_selection_page_select_albums": "Select albums",
"backup_album_selection_page_selection_info": "Selection Info",
"backup_album_selection_page_total_assets": "Total unique assets",
"backup_all": "All",
"backup_background_service_backup_failed_message": "Failed to backup assets. Retrying…",
"backup_background_service_connection_failed_message": "Failed to connect to the server. Retrying…",
"backup_background_service_current_upload_notification": "Uploading {}",
"backup_background_service_default_notification": "Checking for new assets…",
"backup_background_service_error_title": "Backup error",
"backup_background_service_in_progress_notification": "Backing up your assets…",
"backup_background_service_upload_failure_notification": "Failed to upload {}",
"backup_controller_page_albums": "Backup Albums",
"backup_controller_page_background_app_refresh_disabled_content": "Enable background app refresh in Settings > General > Background App Refresh in order to use background backup.",
"backup_controller_page_background_app_refresh_disabled_title": "Background app refresh disabled",
"backup_controller_page_background_app_refresh_enable_button_text": "Go to settings",
"backup_controller_page_background_battery_info_link": "Show me how",
"backup_controller_page_background_battery_info_message": "For the best background backup experience, please disable any battery optimizations restricting background activity for Immich.\n\nSince this is device-specific, please lookup the required information for your device manufacturer.",
"backup_controller_page_background_battery_info_ok": "OK",
"backup_controller_page_background_battery_info_title": "Battery optimizations",
"backup_controller_page_background_charging": "Only while charging",
"backup_controller_page_background_configure_error": "Failed to configure the background service",
"backup_controller_page_background_delay": "Delay new assets backup: {}",
"backup_controller_page_background_description": "Turn on the background service to automatically backup any new assets without needing to open the app",
"backup_controller_page_background_is_off": "Automatic background backup is off",
"backup_controller_page_background_is_on": "Automatic background backup is on",
"backup_controller_page_background_turn_off": "Turn off background service",
"backup_controller_page_background_turn_on": "Turn on background service",
"backup_controller_page_background_wifi": "Only on WiFi",
"backup_controller_page_backup": "Backup",
"backup_controller_page_backup_selected": "Selected: ",
"backup_controller_page_backup_sub": "Backed up photos and videos",
"backup_controller_page_created": "Created on: {}",
"backup_controller_page_desc_backup": "Turn on foreground backup to automatically upload new assets to the server when opening the app.",
"backup_controller_page_excluded": "Excluded: ",
"backup_controller_page_failed": "Failed ({})",
"backup_controller_page_filename": "File name: {} [{}]",
"backup_controller_page_id": "ID: {}",
"backup_controller_page_info": "Backup Information",
"backup_controller_page_none_selected": "None selected",
"backup_controller_page_remainder": "Remainder",
"backup_controller_page_remainder_sub": "Remaining photos and videos to back up from selection",
"backup_controller_page_server_storage": "Server Storage",
"backup_controller_page_start_backup": "Start Backup",
"backup_controller_page_status_off": "Automatic foreground backup is off",
"backup_controller_page_status_on": "Automatic foreground backup is on",
"backup_controller_page_storage_format": "{} of {} used",
"backup_controller_page_to_backup": "Albums to be backed up",
"backup_controller_page_total_sub": "All unique photos and videos from selected albums",
"backup_controller_page_turn_off": "Turn off foreground backup",
"backup_controller_page_turn_on": "Turn on foreground backup",
"backup_controller_page_uploading_file_info": "Uploading file info",
"backup_err_only_album": "Cannot remove the only album",
"backup_info_card_assets": "assets",
"backup_manual_cancelled": "Cancelled",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"backup_options_page_title": "Backup options",
"backup_setting_subtitle": "Manage background and foreground upload settings",
"backward": "", "backward": "",
"birthdate_saved": "Sėkmingai išsaugota gimimo data", "birthdate_saved": "Sėkmingai išsaugota gimimo data",
"blurred_background": "Neryškus fonas", "blurred_background": "Neryškus fonas",
@@ -383,29 +501,65 @@
"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_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.", "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", "buy": "Įsigyti Immich",
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
"cache_settings_clear_cache_button": "Clear cache",
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.",
"cache_settings_duplicated_assets_clear_button": "CLEAR",
"cache_settings_duplicated_assets_subtitle": "Photos and videos that are black listed by the app",
"cache_settings_duplicated_assets_title": "Duplicated Assets ({})",
"cache_settings_image_cache_size": "Image cache size ({} assets)",
"cache_settings_statistics_album": "Library thumbnails",
"cache_settings_statistics_assets": "{} assets ({})",
"cache_settings_statistics_full": "Full images",
"cache_settings_statistics_shared": "Shared album thumbnails",
"cache_settings_statistics_thumbnail": "Thumbnails",
"cache_settings_statistics_title": "Cache usage",
"cache_settings_subtitle": "Control the caching behaviour of the Immich mobile application",
"cache_settings_thumbnail_size": "Thumbnail cache size ({} assets)",
"cache_settings_tile_subtitle": "Control the local storage behaviour",
"cache_settings_tile_title": "Local Storage",
"cache_settings_title": "Caching Settings",
"camera": "Fotoaparatas", "camera": "Fotoaparatas",
"camera_brand": "Fotoaparato prekės ženklas", "camera_brand": "Fotoaparato prekės ženklas",
"camera_model": "Fotoaparato modelis", "camera_model": "Fotoaparato modelis",
"cancel": "Atšaukti", "cancel": "Atšaukti",
"cancel_search": "Atšaukti paiešką", "cancel_search": "Atšaukti paiešką",
"canceled": "Canceled",
"cannot_merge_people": "Negalima sujungti asmenų", "cannot_merge_people": "Negalima sujungti asmenų",
"cannot_update_the_description": "Negalima atnaujinti aprašymo", "cannot_update_the_description": "Negalima atnaujinti aprašymo",
"change_date": "Pakeisti datą", "change_date": "Pakeisti datą",
"change_display_order": "Change display order",
"change_expiration_time": "Pakeisti galiojimo trukmę", "change_expiration_time": "Pakeisti galiojimo trukmę",
"change_location": "Pakeisti vietovę", "change_location": "Pakeisti vietovę",
"change_name": "Pakeisti vardą", "change_name": "Pakeisti vardą",
"change_name_successfully": "", "change_name_successfully": "",
"change_password": "Pakeisti slaptažodį", "change_password": "Pakeisti slaptažodį",
"change_password_description": "Tai arba pirmas kartas, kai jungiatės prie sistemos, arba buvo pateikta užklausa pakeisti jūsų slaptažodį. Prašome įvesti naują slaptažodį žemiau.", "change_password_description": "Tai arba pirmas kartas, kai jungiatės prie sistemos, arba buvo pateikta užklausa pakeisti jūsų slaptažodį. Prašome įvesti naują slaptažodį žemiau.",
"change_password_form_confirm_password": "Confirm Password",
"change_password_form_description": "Hi {name},\n\nThis is either the first time you are signing into the system or a request has been made to change your password. Please enter the new password below.",
"change_password_form_new_password": "New Password",
"change_password_form_password_mismatch": "Passwords do not match",
"change_password_form_reenter_new_password": "Re-enter New Password",
"change_your_password": "Pakeisti slaptažodį", "change_your_password": "Pakeisti slaptažodį",
"changed_visibility_successfully": "Matomumas pakeistas sėkmingai", "changed_visibility_successfully": "Matomumas pakeistas sėkmingai",
"check_all": "Žymėti viską", "check_all": "Žymėti viską",
"check_corrupt_asset_backup": "Check for corrupt asset backups",
"check_corrupt_asset_backup_button": "Perform check",
"check_corrupt_asset_backup_description": "Run this check only over Wi-Fi and once all assets have been backed-up. The procedure might take a few minutes.",
"check_logs": "Tikrinti žurnalus", "check_logs": "Tikrinti žurnalus",
"city": "Miestas", "city": "Miestas",
"clear": "Išvalyti", "clear": "Išvalyti",
"clear_all": "Išvalyti viską", "clear_all": "Išvalyti viską",
"clear_message": "Išvalyti pranešimą", "clear_message": "Išvalyti pranešimą",
"clear_value": "Išvalyti reikšmę", "clear_value": "Išvalyti reikšmę",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove_msg": "Client certificate is removed",
"client_cert_subtitle": "Supports PKCS12 (.p12, .pfx) format only. Certificate Import/Remove is available only before login",
"client_cert_title": "SSL Client Certificate",
"close": "Uždaryti", "close": "Uždaryti",
"collapse": "Suskleisti", "collapse": "Suskleisti",
"collapse_all": "Suskleisti viską", "collapse_all": "Suskleisti viską",
@@ -414,6 +568,9 @@
"comment_options": "Komentarų parinktys", "comment_options": "Komentarų parinktys",
"comments_and_likes": "Komentarai ir patiktukai", "comments_and_likes": "Komentarai ir patiktukai",
"comments_are_disabled": "Komentarai yra išjungti", "comments_are_disabled": "Komentarai yra išjungti",
"common_create_new_album": "Create new album",
"common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.",
"completed": "Completed",
"confirm": "Patvirtinti", "confirm": "Patvirtinti",
"confirm_admin_password": "Patvirtinti administratoriaus slaptažodį", "confirm_admin_password": "Patvirtinti administratoriaus slaptažodį",
"confirm_delete_shared_link": "Ar tikrai norite ištrinti šią bendrinimo nuorodą?", "confirm_delete_shared_link": "Ar tikrai norite ištrinti šią bendrinimo nuorodą?",
@@ -421,6 +578,15 @@
"contain": "", "contain": "",
"context": "Kontekstas", "context": "Kontekstas",
"continue": "Tęsti", "continue": "Tęsti",
"control_bottom_app_bar_album_info_shared": "{} items · Shared",
"control_bottom_app_bar_create_new_album": "Create new album",
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
"control_bottom_app_bar_delete_from_local": "Delete from device",
"control_bottom_app_bar_edit_location": "Edit Location",
"control_bottom_app_bar_edit_time": "Edit Date & Time",
"control_bottom_app_bar_share_link": "Share Link",
"control_bottom_app_bar_share_to": "Share To",
"control_bottom_app_bar_trash_from_immich": "Move to Trash",
"copied_image_to_clipboard": "Nuotrauka nukopijuota į iškarpinę.", "copied_image_to_clipboard": "Nuotrauka nukopijuota į iškarpinę.",
"copied_to_clipboard": "Nukopijuota į iškapinę!", "copied_to_clipboard": "Nukopijuota į iškapinę!",
"copy_error": "Kopijavimo klaida", "copy_error": "Kopijavimo klaida",
@@ -435,24 +601,34 @@
"covers": "", "covers": "",
"create": "Sukurti", "create": "Sukurti",
"create_album": "Sukurti albumą", "create_album": "Sukurti albumą",
"create_album_page_untitled": "Untitled",
"create_library": "Sukurti biblioteką", "create_library": "Sukurti biblioteką",
"create_link": "Sukurti nuorodą", "create_link": "Sukurti nuorodą",
"create_link_to_share": "Sukurti bendrinimo nuorodą", "create_link_to_share": "Sukurti bendrinimo nuorodą",
"create_link_to_share_description": "Leisti bet kam su nuoroda matyti pažymėtą(-as) nuotrauką(-as)", "create_link_to_share_description": "Leisti bet kam su nuoroda matyti pažymėtą(-as) nuotrauką(-as)",
"create_new": "CREATE NEW",
"create_new_person": "Sukurti naują žmogų", "create_new_person": "Sukurti naują žmogų",
"create_new_person_hint": "Priskirti pasirinktus elementus naujam žmogui", "create_new_person_hint": "Priskirti pasirinktus elementus naujam žmogui",
"create_new_user": "Sukurti naują varotoją", "create_new_user": "Sukurti naują varotoją",
"create_shared_album_page_share_add_assets": "ADD ASSETS",
"create_shared_album_page_share_select_photos": "Select Photos",
"create_tag": "Sukurti žymą", "create_tag": "Sukurti žymą",
"create_tag_description": "Sukurti naują žymą. Įdėtinėms žymoms įveskite pilną kelią, įskaitant pasviruosius brūkšnius.", "create_tag_description": "Sukurti naują žymą. Įdėtinėms žymoms įveskite pilną kelią, įskaitant pasviruosius brūkšnius.",
"create_user": "Sukurti naudotoją", "create_user": "Sukurti naudotoją",
"created": "Sukurta", "created": "Sukurta",
"crop": "Crop",
"curated_object_page_title": "Things",
"current_device": "Dabartinis įrenginys", "current_device": "Dabartinis įrenginys",
"current_server_address": "Current server address",
"custom_locale": "", "custom_locale": "",
"custom_locale_description": "Formatuoti datas ir skaičius pagal kalbą ir regioną", "custom_locale_description": "Formatuoti datas ir skaičius pagal kalbą ir regioną",
"daily_title_text_date": "E, MMM dd",
"daily_title_text_date_year": "E, MMM dd, yyyy",
"dark": "", "dark": "",
"date_after": "Data po", "date_after": "Data po",
"date_and_time": "Data ir laikas", "date_and_time": "Data ir laikas",
"date_before": "Data prieš", "date_before": "Data prieš",
"date_format": "E, LLL d, y • h:mm a",
"date_of_birth_saved": "Gimimo data sėkmingai išsaugota", "date_of_birth_saved": "Gimimo data sėkmingai išsaugota",
"date_range": "", "date_range": "",
"day": "Diena", "day": "Diena",
@@ -466,16 +642,27 @@
"delete": "Ištrinti", "delete": "Ištrinti",
"delete_album": "Ištrinti albumą", "delete_album": "Ištrinti albumą",
"delete_api_key_prompt": "Ar tikrai norite ištrinti šį API raktą?", "delete_api_key_prompt": "Ar tikrai norite ištrinti šį API raktą?",
"delete_dialog_alert": "These items will be permanently deleted from Immich and from your device",
"delete_dialog_alert_local": "These items will be permanently removed from your device but still be available on the Immich server",
"delete_dialog_alert_local_non_backed_up": "Some of the items aren't backed up to Immich and will be permanently removed from your device",
"delete_dialog_alert_remote": "These items will be permanently deleted from the Immich server",
"delete_dialog_ok_force": "Delete Anyway",
"delete_dialog_title": "Delete Permanently",
"delete_duplicates_confirmation": "Ar tikrai norite visam laikui ištrinti šiuos dublikatus?", "delete_duplicates_confirmation": "Ar tikrai norite visam laikui ištrinti šiuos dublikatus?",
"delete_key": "Ištrinti raktą", "delete_key": "Ištrinti raktą",
"delete_library": "Ištrinti biblioteką", "delete_library": "Ištrinti biblioteką",
"delete_link": "Ištrinti nuorodą", "delete_link": "Ištrinti nuorodą",
"delete_local_dialog_ok_backed_up_only": "Delete Backed Up Only",
"delete_local_dialog_ok_force": "Delete Anyway",
"delete_shared_link": "Ištrinti bendrinimo nuorodą", "delete_shared_link": "Ištrinti bendrinimo nuorodą",
"delete_shared_link_dialog_title": "Delete Shared Link",
"delete_tag": "Ištrinti žymą", "delete_tag": "Ištrinti žymą",
"delete_tag_confirmation_prompt": "Ar tikrai norite ištrinti žymą {tagName}?", "delete_tag_confirmation_prompt": "Ar tikrai norite ištrinti žymą {tagName}?",
"delete_user": "Ištrinti naudotoją", "delete_user": "Ištrinti naudotoją",
"deleted_shared_link": "Bendrinimo nuoroda ištrinta", "deleted_shared_link": "Bendrinimo nuoroda ištrinta",
"description": "Aprašymas", "description": "Aprašymas",
"description_input_hint_text": "Add description...",
"description_input_submit_error": "Error updating description, check the log for more details",
"details": "Detalės", "details": "Detalės",
"direction": "Kryptis", "direction": "Kryptis",
"disabled": "Išjungta", "disabled": "Išjungta",
@@ -491,8 +678,22 @@
"documentation": "Dokumentacija", "documentation": "Dokumentacija",
"done": "", "done": "",
"download": "Atsisiųsti", "download": "Atsisiųsti",
"download_canceled": "Download canceled",
"download_complete": "Download complete",
"download_enqueue": "Download enqueued",
"download_error": "Download Error",
"download_failed": "Download failed",
"download_filename": "file: {}",
"download_finished": "Download finished",
"download_notfound": "Download not found",
"download_paused": "Download paused",
"download_settings": "Atsisiųsti", "download_settings": "Atsisiųsti",
"download_started": "Download started",
"download_sucess": "Download success",
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
"download_waiting_to_retry": "Waiting to retry",
"downloading": "Siunčiama", "downloading": "Siunčiama",
"downloading_media": "Downloading media",
"duplicates": "Dublikatai", "duplicates": "Dublikatai",
"duplicates_description": "Sutvarkykite kiekvieną elementų grupę nurodydami elementus, kurie yra dublikatai (jei tokių yra)", "duplicates_description": "Sutvarkykite kiekvieną elementų grupę nurodydami elementus, kurie yra dublikatai (jei tokių yra)",
"duration": "Trukmė", "duration": "Trukmė",
@@ -508,6 +709,7 @@
"edit_key": "Redaguoti raktą", "edit_key": "Redaguoti raktą",
"edit_link": "Redaguoti nuorodą", "edit_link": "Redaguoti nuorodą",
"edit_location": "Redaguoti vietovę", "edit_location": "Redaguoti vietovę",
"edit_location_dialog_title": "Location",
"edit_name": "Redaguoti vardą", "edit_name": "Redaguoti vardą",
"edit_people": "Redaguoti žmones", "edit_people": "Redaguoti žmones",
"edit_tag": "Redaguoti žymą", "edit_tag": "Redaguoti žymą",
@@ -516,12 +718,17 @@
"edited": "Redaguota", "edited": "Redaguota",
"editor": "", "editor": "",
"email": "El. paštas", "email": "El. paštas",
"empty_folder": "This folder is empty",
"empty_trash": "Ištuštinti šiukšliadėžę", "empty_trash": "Ištuštinti šiukšliadėžę",
"enable": "Įgalinti", "enable": "Įgalinti",
"enabled": "Įgalintas", "enabled": "Įgalintas",
"end_date": "Pabaigos data", "end_date": "Pabaigos data",
"enqueued": "Enqueued",
"enter_wifi_name": "Enter WiFi name",
"error": "Klaida", "error": "Klaida",
"error_change_sort_album": "Failed to change album sort order",
"error_loading_image": "Klaida įkeliant vaizdą", "error_loading_image": "Klaida įkeliant vaizdą",
"error_saving_image": "Error: {}",
"error_title": "Klaida - Kažkas nutiko ne taip", "error_title": "Klaida - Kažkas nutiko ne taip",
"errors": { "errors": {
"cant_apply_changes": "Negalima taikyti pakeitimų", "cant_apply_changes": "Negalima taikyti pakeitimų",
@@ -614,8 +821,21 @@
"unable_to_upload_file": "Nepavyksta įkelti failo" "unable_to_upload_file": "Nepavyksta įkelti failo"
}, },
"exif": "Exif", "exif": "Exif",
"exif_bottom_sheet_description": "Add Description...",
"exif_bottom_sheet_details": "DETAILS",
"exif_bottom_sheet_location": "LOCATION",
"exif_bottom_sheet_people": "PEOPLE",
"exif_bottom_sheet_person_add_person": "Add name",
"exif_bottom_sheet_person_age": "Age {}",
"exif_bottom_sheet_person_age_months": "Age {} months",
"exif_bottom_sheet_person_age_year_months": "Age 1 year, {} months",
"exif_bottom_sheet_person_age_years": "Age {}",
"exit_slideshow": "Išeiti iš skaidrių peržiūros", "exit_slideshow": "Išeiti iš skaidrių peržiūros",
"expand_all": "Išskleisti viską", "expand_all": "Išskleisti viską",
"experimental_settings_new_asset_list_subtitle": "Work in progress",
"experimental_settings_new_asset_list_title": "Enable experimental photo grid",
"experimental_settings_subtitle": "Use at your own risk!",
"experimental_settings_title": "Experimental",
"expire_after": "", "expire_after": "",
"expired": "Nebegalioja", "expired": "Nebegalioja",
"expires_date": "Nebegalios už {date}", "expires_date": "Nebegalios už {date}",
@@ -625,10 +845,16 @@
"extension": "Plėtinys", "extension": "Plėtinys",
"external": "Išorinis", "external": "Išorinis",
"external_libraries": "Išorinės bibliotekos", "external_libraries": "Išorinės bibliotekos",
"external_network": "External network",
"external_network_sheet_info": "When not on the preferred WiFi network, the app will connect to the server through the first of the below URLs it can reach, starting from top to bottom",
"face_unassigned": "Nepriskirta", "face_unassigned": "Nepriskirta",
"failed": "Failed",
"failed_to_load_assets": "Failed to load assets",
"failed_to_load_folder": "Failed to load folder",
"favorite": "Mėgstamiausias", "favorite": "Mėgstamiausias",
"favorite_or_unfavorite_photo": "Įtraukti prie arba pašalinti iš mėgstamiausių", "favorite_or_unfavorite_photo": "Įtraukti prie arba pašalinti iš mėgstamiausių",
"favorites": "Mėgstamiausi", "favorites": "Mėgstamiausi",
"favorites_page_no_favorites": "No favorite assets found",
"feature_photo_updated": "", "feature_photo_updated": "",
"features": "Funkcijos", "features": "Funkcijos",
"features_setting_description": "Valdyti aplikacijos funkcijas", "features_setting_description": "Valdyti aplikacijos funkcijas",
@@ -636,21 +862,34 @@
"file_name_or_extension": "Failo pavadinimas arba plėtinys", "file_name_or_extension": "Failo pavadinimas arba plėtinys",
"filename": "", "filename": "",
"filetype": "Failo tipas", "filetype": "Failo tipas",
"filter": "Filter",
"filter_people": "Filtruoti žmones", "filter_people": "Filtruoti žmones",
"fix_incorrect_match": "", "fix_incorrect_match": "",
"folder": "Folder",
"folder_not_found": "Folder not found",
"folders": "Aplankai", "folders": "Aplankai",
"folders_feature_description": "Peržiūrėkite failų sistemoje esančias nuotraukas ir vaizdo įrašus aplankų rodinyje", "folders_feature_description": "Peržiūrėkite failų sistemoje esančias nuotraukas ir vaizdo įrašus aplankų rodinyje",
"forward": "", "forward": "",
"general": "", "general": "",
"get_help": "Gauti pagalbos", "get_help": "Gauti pagalbos",
"get_wifiname_error": "Could not get Wi-Fi name. Make sure you have granted the necessary permissions and are connected to a Wi-Fi network",
"getting_started": "", "getting_started": "",
"go_back": "", "go_back": "",
"go_to_search": "", "go_to_search": "",
"grant_permission": "Grant permission",
"group_albums_by": "Grupuoti albumus pagal...", "group_albums_by": "Grupuoti albumus pagal...",
"group_no": "Negrupuoti", "group_no": "Negrupuoti",
"group_owner": "Grupuoti pagal savininką", "group_owner": "Grupuoti pagal savininką",
"group_year": "Grupuoti pagal metus", "group_year": "Grupuoti pagal metus",
"haptic_feedback_switch": "Enable haptic feedback",
"haptic_feedback_title": "Haptic Feedback",
"has_quota": "Turi kvotą", "has_quota": "Turi kvotą",
"header_settings_add_header_tip": "Add Header",
"header_settings_field_validator_msg": "Value cannot be empty",
"header_settings_header_name_input": "Header name",
"header_settings_header_value_input": "Header value",
"headers_settings_tile_subtitle": "Define proxy headers the app should send with each network request",
"headers_settings_tile_title": "Custom proxy headers",
"hi_user": "Labas {name} ({email})", "hi_user": "Labas {name} ({email})",
"hide_all_people": "Slėpti visus asmenis", "hide_all_people": "Slėpti visus asmenis",
"hide_gallery": "Slėpti galeriją", "hide_gallery": "Slėpti galeriją",
@@ -658,9 +897,29 @@
"hide_password": "Slėpti slaptažodį", "hide_password": "Slėpti slaptažodį",
"hide_person": "Slėpti asmenį", "hide_person": "Slėpti asmenį",
"hide_unnamed_people": "Slėpti neįvardintus asmenis", "hide_unnamed_people": "Slėpti neįvardintus asmenis",
"home_page_add_to_album_conflicts": "Added {added} assets to album {album}. {failed} assets are already in the album.",
"home_page_add_to_album_err_local": "Can not add local assets to albums yet, skipping",
"home_page_add_to_album_success": "Added {added} assets to album {album}.",
"home_page_album_err_partner": "Can not add partner assets to an album yet, skipping",
"home_page_archive_err_local": "Can not archive local assets yet, skipping",
"home_page_archive_err_partner": "Can not archive partner assets, skipping",
"home_page_building_timeline": "Building the timeline",
"home_page_delete_err_partner": "Can not delete partner assets, skipping",
"home_page_delete_remote_err_local": "Local assets in delete remote selection, skipping",
"home_page_favorite_err_local": "Can not favorite local assets yet, skipping",
"home_page_favorite_err_partner": "Can not favorite partner assets yet, skipping",
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
"home_page_share_err_local": "Can not share local assets via link, skipping",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"host": "", "host": "",
"hour": "Valanda", "hour": "Valanda",
"ignore_icloud_photos": "Ignore iCloud photos",
"ignore_icloud_photos_description": "Photos that are stored on iCloud will not be uploaded to the Immich server",
"image": "Nuotrauka", "image": "Nuotrauka",
"image_saved_successfully": "Image saved",
"image_viewer_page_state_provider_download_started": "Download Started",
"image_viewer_page_state_provider_download_success": "Download Success",
"image_viewer_page_state_provider_share_error": "Share Error",
"immich_logo": "Immich logotipas", "immich_logo": "Immich logotipas",
"import_from_json": "Importuoti iš JSON", "import_from_json": "Importuoti iš JSON",
"import_path": "Importavimo kelias", "import_path": "Importavimo kelias",
@@ -676,6 +935,8 @@
"night_at_midnight": "Kiekvieną vidurnaktį", "night_at_midnight": "Kiekvieną vidurnaktį",
"night_at_twoam": "Kiekvieną naktį 02:00" "night_at_twoam": "Kiekvieną naktį 02:00"
}, },
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"invite_people": "Kviesti žmones", "invite_people": "Kviesti žmones",
"invite_to_album": "Pakviesti į albumą", "invite_to_album": "Pakviesti į albumą",
"items_count": "{count, plural, one {# elementas} few {# elementai} other {# elementų}}", "items_count": "{count, plural, one {# elementas} few {# elementai} other {# elementų}}",
@@ -693,6 +954,12 @@
"level": "Lygis", "level": "Lygis",
"library": "Biblioteka", "library": "Biblioteka",
"library_options": "Bibliotekos pasirinktys", "library_options": "Bibliotekos pasirinktys",
"library_page_device_albums": "Albums on Device",
"library_page_new_album": "New album",
"library_page_sort_asset_count": "Number of assets",
"library_page_sort_created": "Created date",
"library_page_sort_last_modified": "Last modified",
"library_page_sort_title": "Album title",
"light": "", "light": "",
"link_options": "Nuorodų parinktys", "link_options": "Nuorodų parinktys",
"link_to_oauth": "Susieti su OAuth", "link_to_oauth": "Susieti su OAuth",
@@ -700,11 +967,41 @@
"list": "Sąrašas", "list": "Sąrašas",
"loading": "Kraunama", "loading": "Kraunama",
"loading_search_results_failed": "Nepavyko užkrauti paieškos rezultatų", "loading_search_results_failed": "Nepavyko užkrauti paieškos rezultatų",
"local_network": "Local network",
"local_network_sheet_info": "The app will connect to the server through this URL when using the specified Wi-Fi network",
"location_permission": "Location permission",
"location_permission_content": "In order to use the auto-switching feature, Immich needs precise location permission so it can read the current WiFi network's name",
"location_picker_choose_on_map": "Choose on map",
"location_picker_latitude_error": "Enter a valid latitude",
"location_picker_latitude_hint": "Enter your latitude here",
"location_picker_longitude_error": "Enter a valid longitude",
"location_picker_longitude_hint": "Enter your longitude here",
"log_out": "Atsijungti", "log_out": "Atsijungti",
"log_out_all_devices": "Atsijungti iš visų įrenginių", "log_out_all_devices": "Atsijungti iš visų įrenginių",
"logged_out_all_devices": "Atsijungta iš visų įrenginių", "logged_out_all_devices": "Atsijungta iš visų įrenginių",
"login": "Prisijungti", "login": "Prisijungti",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API exception. Please check the server URL and try again.",
"login_form_back_button_text": "Back",
"login_form_email_hint": "youremail@email.com",
"login_form_endpoint_hint": "http://your-server-ip:port",
"login_form_endpoint_url": "Server Endpoint URL",
"login_form_err_http": "Please specify http:// or https://",
"login_form_err_invalid_email": "Invalid Email",
"login_form_err_invalid_url": "Invalid URL",
"login_form_err_leading_whitespace": "Leading whitespace",
"login_form_err_trailing_whitespace": "Trailing whitespace",
"login_form_failed_get_oauth_server_config": "Error logging using OAuth, check server URL",
"login_form_failed_get_oauth_server_disable": "OAuth feature is not available on this server",
"login_form_failed_login": "Error logging you in, check server URL, email and password",
"login_form_handshake_exception": "There was an Handshake Exception with the server. Enable self-signed certificate support in the settings if you are using a self-signed certificate.",
"login_form_password_hint": "password",
"login_form_save_login": "Stay logged in",
"login_form_server_empty": "Enter a server URL.",
"login_form_server_error": "Could not connect to server.",
"login_has_been_disabled": "Prisijungimas išjungtas.", "login_has_been_disabled": "Prisijungimas išjungtas.",
"login_password_changed_error": "There was an error updating your password",
"login_password_changed_success": "Password updated successfully",
"logout_all_device_confirmation": "Ar tikrai norite atsijungti iš visų įrenginių?", "logout_all_device_confirmation": "Ar tikrai norite atsijungti iš visų įrenginių?",
"logout_this_device_confirmation": "Ar tikrai norite atsijungti iš šio prietaiso?", "logout_this_device_confirmation": "Ar tikrai norite atsijungti iš šio prietaiso?",
"longitude": "Ilguma", "longitude": "Ilguma",
@@ -720,12 +1017,39 @@
"manage_your_devices": "Valdyti prijungtus įrenginius", "manage_your_devices": "Valdyti prijungtus įrenginius",
"manage_your_oauth_connection": "Tvarkyti OAuth prisijungimą", "manage_your_oauth_connection": "Tvarkyti OAuth prisijungimą",
"map": "Žemėlapis", "map": "Žemėlapis",
"map_assets_in_bound": "{} photo",
"map_assets_in_bounds": "{} photos",
"map_cannot_get_user_location": "Cannot get user's location",
"map_location_dialog_yes": "Yes",
"map_location_picker_page_use_location": "Use this location",
"map_location_service_disabled_content": "Location service needs to be enabled to display assets from your current location. Do you want to enable it now?",
"map_location_service_disabled_title": "Location Service disabled",
"map_marker_with_image": "", "map_marker_with_image": "",
"map_no_assets_in_bounds": "No photos in this area",
"map_no_location_permission_content": "Location permission is needed to display assets from your current location. Do you want to allow it now?",
"map_no_location_permission_title": "Location Permission denied",
"map_settings": "Žemėlapio nustatymai", "map_settings": "Žemėlapio nustatymai",
"map_settings_dark_mode": "Dark mode",
"map_settings_date_range_option_day": "Past 24 hours",
"map_settings_date_range_option_days": "Past {} days",
"map_settings_date_range_option_year": "Past year",
"map_settings_date_range_option_years": "Past {} years",
"map_settings_dialog_title": "Map Settings",
"map_settings_include_show_archived": "Include Archived",
"map_settings_include_show_partners": "Include Partners",
"map_settings_only_show_favorites": "Show Favorite Only",
"map_settings_theme_settings": "Map Theme",
"map_zoom_to_see_photos": "Zoom out to see photos",
"matches": "Atitikmenys", "matches": "Atitikmenys",
"media_type": "Laikmenos tipas", "media_type": "Laikmenos tipas",
"memories": "Atsiminimai", "memories": "Atsiminimai",
"memories_all_caught_up": "All caught up",
"memories_check_back_tomorrow": "Check back tomorrow for more memories",
"memories_setting_description": "Valdyti tai, ką matote savo prisiminimuose", "memories_setting_description": "Valdyti tai, ką matote savo prisiminimuose",
"memories_start_over": "Start Over",
"memories_swipe_to_close": "Swipe up to close",
"memories_year_ago": "A year ago",
"memories_years_ago": "{} years ago",
"memory": "Atmintis", "memory": "Atmintis",
"menu": "Meniu", "menu": "Meniu",
"merge": "Sujungti", "merge": "Sujungti",
@@ -739,11 +1063,16 @@
"missing": "Trūkstami", "missing": "Trūkstami",
"model": "Modelis", "model": "Modelis",
"month": "Mėnesis", "month": "Mėnesis",
"monthly_title_text_date_format": "MMMM y",
"more": "Daugiau", "more": "Daugiau",
"moved_to_trash": "Perkelta į šiukšliadėžę", "moved_to_trash": "Perkelta į šiukšliadėžę",
"multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping",
"multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping",
"my_albums": "Mano albumai", "my_albums": "Mano albumai",
"name": "Vardas", "name": "Vardas",
"name_or_nickname": "Vardas arba slapyvardis", "name_or_nickname": "Vardas arba slapyvardis",
"networking_settings": "Networking",
"networking_subtitle": "Manage the server endpoint settings",
"never": "Niekada", "never": "Niekada",
"new_album": "Naujas albumas", "new_album": "Naujas albumas",
"new_api_key": "Naujas API raktas", "new_api_key": "Naujas API raktas",
@@ -760,6 +1089,7 @@
"no_albums_yet": "Atrodo, kad dar neturite albumų.", "no_albums_yet": "Atrodo, kad dar neturite albumų.",
"no_archived_assets_message": "Suarchyvuokite nuotraukas ir vaizdo įrašus, kad jie nebūtų rodomi nuotraukų rodinyje", "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_assets_message": "SPUSTELĖKITE NORĖDAMI ĮKELTI PIRMĄJĄ NUOTRAUKĄ",
"no_assets_to_show": "No assets to show",
"no_duplicates_found": "Dublikatų nerasta.", "no_duplicates_found": "Dublikatų nerasta.",
"no_exif_info_available": "", "no_exif_info_available": "",
"no_explore_results_message": "Įkelkite daugiau nuotraukų ir tyrinėkite savo kolekciją.", "no_explore_results_message": "Įkelkite daugiau nuotraukų ir tyrinėkite savo kolekciją.",
@@ -771,8 +1101,12 @@
"no_results_description": "Pabandykite sinonimą arba bendresnį raktažodį", "no_results_description": "Pabandykite sinonimą arba bendresnį raktažodį",
"no_shared_albums_message": "", "no_shared_albums_message": "",
"not_in_any_album": "Nė viename albume", "not_in_any_album": "Nė viename albume",
"note_unlimited_quota": "Pastaba: Įveskite 0, jei norite neribotos kvotos", "not_selected": "Not selected",
"notes": "Pastabos", "notes": "Pastabos",
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
"notification_permission_list_tile_content": "Grant permission to enable notifications.",
"notification_permission_list_tile_enable_button": "Enable Notifications",
"notification_permission_list_tile_title": "Notification Permission",
"notification_toggle_setting_description": "Įjungti el. pašto pranešimus", "notification_toggle_setting_description": "Įjungti el. pašto pranešimus",
"notifications": "Pranešimai", "notifications": "Pranešimai",
"notifications_setting_description": "Tvarkyti pranešimus", "notifications_setting_description": "Tvarkyti pranešimus",
@@ -782,6 +1116,7 @@
"offline_paths": "Nepasiekiami adresai", "offline_paths": "Nepasiekiami adresai",
"ok": "Ok", "ok": "Ok",
"oldest_first": "Seniausias pirmas", "oldest_first": "Seniausias pirmas",
"on_this_device": "On this device",
"onboarding_welcome_user": "Sveiki atvykę, {user}", "onboarding_welcome_user": "Sveiki atvykę, {user}",
"online": "Prisijungęs", "online": "Prisijungęs",
"only_favorites": "Tik mėgstamiausi", "only_favorites": "Tik mėgstamiausi",
@@ -799,6 +1134,14 @@
"partner_can_access": "{partner} gali naudotis", "partner_can_access": "{partner} gali naudotis",
"partner_can_access_assets": "Visos jūsų nuotraukos ir vaizdo įrašai, išskyrus archyvuotus ir ištrintus", "partner_can_access_assets": "Visos jūsų nuotraukos ir vaizdo įrašai, išskyrus archyvuotus ir ištrintus",
"partner_can_access_location": "Vieta, kurioje darytos nuotraukos", "partner_can_access_location": "Vieta, kurioje darytos nuotraukos",
"partner_list_user_photos": "{user}'s photos",
"partner_list_view_all": "View all",
"partner_page_empty_message": "Your photos are not yet shared with any partner.",
"partner_page_no_more_users": "No more users to add",
"partner_page_partner_add_failed": "Failed to add partner",
"partner_page_select_partner": "Select partner",
"partner_page_shared_to_title": "Shared to",
"partner_page_stop_sharing_content": "{} will no longer be able to access your photos.",
"partner_sharing": "", "partner_sharing": "",
"partners": "Partneriai", "partners": "Partneriai",
"password": "Slaptažodis", "password": "Slaptažodis",
@@ -826,6 +1169,14 @@
"permanently_delete_assets_count": "Visam laikui ištrinti {count, plural, one {# elementą} few {# elementus} other {# elementų}}", "permanently_delete_assets_count": "Visam laikui ištrinti {count, plural, one {# elementą} few {# elementus} other {# elementų}}",
"permanently_deleted_asset": "", "permanently_deleted_asset": "",
"permanently_deleted_assets_count": "Visam laikui {count, plural, one {ištrintas # elementas} few {ištrinti # elementai} other {ištrinta # elementų}}", "permanently_deleted_assets_count": "Visam laikui {count, plural, one {ištrintas # elementas} few {ištrinti # elementai} other {ištrinta # elementų}}",
"permission_onboarding_back": "Back",
"permission_onboarding_continue_anyway": "Continue anyway",
"permission_onboarding_get_started": "Get started",
"permission_onboarding_go_to_settings": "Go to settings",
"permission_onboarding_permission_denied": "Permission denied. To use Immich, grant photo and video permissions in Settings.",
"permission_onboarding_permission_granted": "Permission granted! You are all set.",
"permission_onboarding_permission_limited": "Permission limited. To let Immich backup and manage your entire gallery collection, grant photo and video permissions in Settings.",
"permission_onboarding_request": "Immich requires permission to view your photos and videos.",
"photos": "Nuotraukos", "photos": "Nuotraukos",
"photos_and_videos": "Nuotraukos ir vaizdo įrašai", "photos_and_videos": "Nuotraukos ir vaizdo įrašai",
"photos_count": "{count, plural, one {{count, number} nuotrauka} few {{count, number} nuotraukos} other {{count, number} nuotraukų}}", "photos_count": "{count, plural, one {{count, number} nuotrauka} few {{count, number} nuotraukos} other {{count, number} nuotraukų}}",
@@ -838,12 +1189,21 @@
"play_motion_photo": "", "play_motion_photo": "",
"play_or_pause_video": "", "play_or_pause_video": "",
"port": "", "port": "",
"preferences_settings_subtitle": "Manage the app's preferences",
"preferences_settings_title": "Preferences",
"preset": "", "preset": "",
"preview": "", "preview": "",
"previous": "", "previous": "",
"previous_memory": "", "previous_memory": "",
"previous_or_next_photo": "", "previous_or_next_photo": "",
"primary": "", "primary": "",
"profile_drawer_app_logs": "Logs",
"profile_drawer_client_out_of_date_major": "Mobile App is out of date. Please update to the latest major version.",
"profile_drawer_client_out_of_date_minor": "Mobile App is out of date. Please update to the latest minor version.",
"profile_drawer_client_server_up_to_date": "Client and Server are up-to-date",
"profile_drawer_github": "GitHub",
"profile_drawer_server_out_of_date_major": "Server is out of date. Please update to the latest major version.",
"profile_drawer_server_out_of_date_minor": "Server is out of date. Please update to the latest minor version.",
"profile_image_of_user": "{user} profilio nuotrauka", "profile_image_of_user": "{user} profilio nuotrauka",
"profile_picture_set": "Profilio nuotrauka nustatyta.", "profile_picture_set": "Profilio nuotrauka nustatyta.",
"public_album": "Viešas albumas", "public_album": "Viešas albumas",
@@ -886,6 +1246,8 @@
"read_changelog": "", "read_changelog": "",
"recent": "", "recent": "",
"recent_searches": "", "recent_searches": "",
"recently_added": "Recently added",
"recently_added_page_title": "Recently Added",
"refresh": "Atnaujinti", "refresh": "Atnaujinti",
"refresh_encoded_videos": "Perkrauti apdorotus vaizdo įrašus", "refresh_encoded_videos": "Perkrauti apdorotus vaizdo įrašus",
"refresh_faces": "Perkrauti veidus", "refresh_faces": "Perkrauti veidus",
@@ -927,10 +1289,12 @@
"review_duplicates": "Peržiūrėti dublikatus", "review_duplicates": "Peržiūrėti dublikatus",
"role": "", "role": "",
"save": "Išsaugoti", "save": "Išsaugoti",
"save_to_gallery": "Save to gallery",
"saved_api_key": "Išsaugotas API raktas", "saved_api_key": "Išsaugotas API raktas",
"saved_profile": "Išsaugotas profilis", "saved_profile": "Išsaugotas profilis",
"saved_settings": "Išsaugoti nustatymai", "saved_settings": "Išsaugoti nustatymai",
"say_something": "Ką nors pasakykite", "say_something": "Ką nors pasakykite",
"scaffold_body_error_occurred": "Error occurred",
"scan_all_libraries": "Skenuoti visas bibliotekas", "scan_all_libraries": "Skenuoti visas bibliotekas",
"scan_library": "Skenuoti", "scan_library": "Skenuoti",
"scan_settings": "Skenavimo nustatymai", "scan_settings": "Skenavimo nustatymai",
@@ -944,12 +1308,41 @@
"search_camera_model": "", "search_camera_model": "",
"search_city": "", "search_city": "",
"search_country": "Ieškoti šalies...", "search_country": "Ieškoti šalies...",
"search_filter_apply": "Apply filter",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_not_in_album": "Not in album",
"search_filter_display_options": "Display Options",
"search_filter_filename": "Search by file name",
"search_filter_location": "Location",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_title": "Select media type",
"search_filter_people_title": "Select people",
"search_for_existing_person": "", "search_for_existing_person": "",
"search_no_more_result": "No more results",
"search_no_people_named": "Nėra žmonių vardu „{name}“", "search_no_people_named": "Nėra žmonių vardu „{name}“",
"search_no_result": "No results found, try a different search term or combination",
"search_page_categories": "Categories",
"search_page_motion_photos": "Motion Photos",
"search_page_no_objects": "No Objects Info Available",
"search_page_no_places": "No Places Info Available",
"search_page_screenshots": "Screenshots",
"search_page_search_photos_videos": "Search for your photos and videos",
"search_page_selfies": "Selfies",
"search_page_things": "Things",
"search_page_view_all_button": "View all",
"search_page_your_activity": "Your activity",
"search_page_your_map": "Your Map",
"search_people": "Ieškoti žmonių", "search_people": "Ieškoti žmonių",
"search_places": "Ieškoti vietų", "search_places": "Ieškoti vietų",
"search_result_page_new_search_hint": "New Search",
"search_settings": "Ieškoti nustatymų", "search_settings": "Ieškoti nustatymų",
"search_state": "", "search_state": "",
"search_suggestion_list_smart_search_hint_1": "Smart search is enabled by default, to search for metadata use the syntax ",
"search_suggestion_list_smart_search_hint_2": "m:your-search-term",
"search_tags": "Ieškoti žymų...", "search_tags": "Ieškoti žymų...",
"search_timezone": "", "search_timezone": "",
"search_type": "Paieškos tipas", "search_type": "Paieškos tipas",
@@ -967,10 +1360,14 @@
"select_new_face": "", "select_new_face": "",
"select_photos": "", "select_photos": "",
"select_trash_all": "Visus pažymėti \"Išmesti\"", "select_trash_all": "Visus pažymėti \"Išmesti\"",
"select_user_for_sharing_page_err_album": "Failed to create album",
"selected": "Pasirinkta", "selected": "Pasirinkta",
"selected_count": "{count, plural, one {# pasirinktas} few {# pasirinkti} other {# pasirinktų}}", "selected_count": "{count, plural, one {# pasirinktas} few {# pasirinkti} other {# pasirinktų}}",
"send_message": "Siųsti žinutę", "send_message": "Siųsti žinutę",
"send_welcome_email": "Siųsti sveikinimo el. laišką", "send_welcome_email": "Siųsti sveikinimo el. laišką",
"server_endpoint": "Server Endpoint",
"server_info_box_app_version": "App Version",
"server_info_box_server_url": "Server URL",
"server_offline": "Serveris nepasiekiamas", "server_offline": "Serveris nepasiekiamas",
"server_online": "Serveris pasiekiamas", "server_online": "Serveris pasiekiamas",
"server_stats": "Serverio statistika", "server_stats": "Serverio statistika",
@@ -981,19 +1378,88 @@
"set_date_of_birth": "Nustatyti gimimo datą", "set_date_of_birth": "Nustatyti gimimo datą",
"set_profile_picture": "Nustatyti profilio nuotrauką", "set_profile_picture": "Nustatyti profilio nuotrauką",
"set_slideshow_to_fullscreen": "Nustatyti skaidrių peržiūrą per visą ekraną", "set_slideshow_to_fullscreen": "Nustatyti skaidrių peržiūrą per visą ekraną",
"setting_image_viewer_help": "The detail viewer loads the small thumbnail first, then loads the medium-size preview (if enabled), finally loads the original (if enabled).",
"setting_image_viewer_original_subtitle": "Enable to load the original full-resolution image (large!). Disable to reduce data usage (both network and on device cache).",
"setting_image_viewer_original_title": "Load original image",
"setting_image_viewer_preview_subtitle": "Enable to load a medium-resolution image. Disable to either directly load the original or only use the thumbnail.",
"setting_image_viewer_preview_title": "Load preview image",
"setting_image_viewer_title": "Images",
"setting_languages_apply": "Apply",
"setting_languages_subtitle": "Change the app's language",
"setting_languages_title": "Languages",
"setting_notifications_notify_failures_grace_period": "Notify background backup failures: {}",
"setting_notifications_notify_hours": "{} hours",
"setting_notifications_notify_immediately": "immediately",
"setting_notifications_notify_minutes": "{} minutes",
"setting_notifications_notify_never": "never",
"setting_notifications_notify_seconds": "{} seconds",
"setting_notifications_single_progress_subtitle": "Detailed upload progress information per asset",
"setting_notifications_single_progress_title": "Show background backup detail progress",
"setting_notifications_subtitle": "Adjust your notification preferences",
"setting_notifications_total_progress_subtitle": "Overall upload progress (done/total assets)",
"setting_notifications_total_progress_title": "Show background backup total progress",
"setting_video_viewer_looping_title": "Looping",
"setting_video_viewer_original_video_subtitle": "When streaming a video from the server, play the original even when a transcode is available. May lead to buffering. Videos available locally are played in original quality regardless of this setting.",
"setting_video_viewer_original_video_title": "Force original video",
"settings": "Nustatymai", "settings": "Nustatymai",
"settings_require_restart": "Please restart Immich to apply this setting",
"settings_saved": "", "settings_saved": "",
"share": "Dalintis", "share": "Dalintis",
"share_add_photos": "Add photos",
"share_assets_selected": "{} selected",
"share_dialog_preparing": "Preparing...",
"shared": "Bendrinami", "shared": "Bendrinami",
"shared_album_activities_input_disable": "Comment is disabled",
"shared_album_activity_remove_content": "Do you want to delete this activity?",
"shared_album_activity_remove_title": "Delete Activity",
"shared_album_section_people_action_error": "Error leaving/removing from album",
"shared_album_section_people_action_leave": "Remove user from album",
"shared_album_section_people_action_remove_user": "Remove user from album",
"shared_album_section_people_title": "PEOPLE",
"shared_by": "", "shared_by": "",
"shared_by_you": "", "shared_by_you": "",
"shared_intent_upload_button_progress_text": "{} / {} Uploaded",
"shared_link_app_bar_title": "Shared Links",
"shared_link_clipboard_copied_massage": "Copied to clipboard",
"shared_link_clipboard_text": "Link: {}\nPassword: {}",
"shared_link_create_error": "Error while creating shared link",
"shared_link_edit_description_hint": "Enter the share description",
"shared_link_edit_expire_after_option_day": "1 day",
"shared_link_edit_expire_after_option_days": "{} days",
"shared_link_edit_expire_after_option_hour": "1 hour",
"shared_link_edit_expire_after_option_hours": "{} hours",
"shared_link_edit_expire_after_option_minute": "1 minute",
"shared_link_edit_expire_after_option_minutes": "{} minutes",
"shared_link_edit_expire_after_option_months": "{} months",
"shared_link_edit_expire_after_option_year": "{} year",
"shared_link_edit_password_hint": "Enter the share password",
"shared_link_edit_submit_button": "Update link",
"shared_link_error_server_url_fetch": "Cannot fetch the server url",
"shared_link_expires_day": "Expires in {} day",
"shared_link_expires_days": "Expires in {} days",
"shared_link_expires_hour": "Expires in {} hour",
"shared_link_expires_hours": "Expires in {} hours",
"shared_link_expires_minute": "Expires in {} minute",
"shared_link_expires_minutes": "Expires in {} minutes",
"shared_link_expires_never": "Expires ∞",
"shared_link_expires_second": "Expires in {} second",
"shared_link_expires_seconds": "Expires in {} seconds",
"shared_link_individual_shared": "Individual shared",
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Manage Shared links",
"shared_link_options": "Bendrinimo nuorodos parametrai", "shared_link_options": "Bendrinimo nuorodos parametrai",
"shared_links": "Bendrinimo nuorodos", "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_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_me": "Shared with me",
"shared_with_partner": "Pasidalinta su {partner}", "shared_with_partner": "Pasidalinta su {partner}",
"sharing": "Dalijimasis", "sharing": "Dalijimasis",
"sharing_enter_password": "Norėdami peržiūrėti šį puslapį, įveskite slaptažodį.", "sharing_enter_password": "Norėdami peržiūrėti šį puslapį, įveskite slaptažodį.",
"sharing_page_album": "Shared albums",
"sharing_page_description": "Create shared albums to share photos and videos with people in your network.",
"sharing_page_empty_list": "EMPTY LIST",
"sharing_sidebar_description": "Rodyti bendrinimo rodinio nuorodą šoninėje juostoje", "sharing_sidebar_description": "Rodyti bendrinimo rodinio nuorodą šoninėje juostoje",
"sharing_silver_appbar_create_shared_album": "New shared album",
"sharing_silver_appbar_share_partner": "Share with partner",
"show_album_options": "Rodyti albumo parinktis", "show_album_options": "Rodyti albumo parinktis",
"show_file_location": "Rodyti rinkmenos vietą", "show_file_location": "Rodyti rinkmenos vietą",
"show_gallery": "Rodyti galeriją", "show_gallery": "Rodyti galeriją",
@@ -1046,6 +1512,9 @@
"support_and_feedback": "Palaikymas ir atsiliepimai", "support_and_feedback": "Palaikymas ir atsiliepimai",
"swap_merge_direction": "", "swap_merge_direction": "",
"sync": "Sinchronizuoti", "sync": "Sinchronizuoti",
"sync_albums": "Sync albums",
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
"tag": "Žyma", "tag": "Žyma",
"tag_created": "Sukurta žyma: {tag}", "tag_created": "Sukurta žyma: {tag}",
"tag_feature_description": "Peržiūrėkite nuotraukas ir vaizdo įrašus sugrupuotus pagal sužymėtas temas", "tag_feature_description": "Peržiūrėkite nuotraukas ir vaizdo įrašus sugrupuotus pagal sužymėtas temas",
@@ -1057,6 +1526,19 @@
"theme": "Tema", "theme": "Tema",
"theme_selection": "", "theme_selection": "",
"theme_selection_description": "", "theme_selection_description": "",
"theme_setting_asset_list_storage_indicator_title": "Show storage indicator on asset tiles",
"theme_setting_asset_list_tiles_per_row_title": "Number of assets per row ({})",
"theme_setting_colorful_interface_subtitle": "Apply primary color to background surfaces.",
"theme_setting_colorful_interface_title": "Colorful interface",
"theme_setting_image_viewer_quality_subtitle": "Adjust the quality of the detail image viewer",
"theme_setting_image_viewer_quality_title": "Image viewer quality",
"theme_setting_primary_color_subtitle": "Pick a color for primary actions and accents.",
"theme_setting_primary_color_title": "Primary color",
"theme_setting_system_primary_color_title": "Use system color",
"theme_setting_system_theme_switch": "Automatic (Follow system setting)",
"theme_setting_theme_subtitle": "Choose the app's theme setting",
"theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load",
"theme_setting_three_stage_loading_title": "Enable three-stage loading",
"time_based_memories": "Atsiminimai pagal laiką", "time_based_memories": "Atsiminimai pagal laiką",
"timeline": "Laiko skalė", "timeline": "Laiko skalė",
"timezone": "Laiko juosta", "timezone": "Laiko juosta",
@@ -1070,7 +1552,15 @@
"trash": "Šiukšliadėžė", "trash": "Šiukšliadėžė",
"trash_all": "Perkelti visus į šiukšliadėžę", "trash_all": "Perkelti visus į šiukšliadėžę",
"trash_count": "Perkelti {count, number} į šiukšliadėžę", "trash_count": "Perkelti {count, number} į šiukšliadėžę",
"trash_emptied": "Emptied trash",
"trash_no_results_message": "Į šiukšliadėžę perkeltos nuotraukos ir vaizdo įrašai bus rodomi čia.", "trash_no_results_message": "Į šiukšliadėžę perkeltos nuotraukos ir vaizdo įrašai bus rodomi čia.",
"trash_page_delete_all": "Delete All",
"trash_page_empty_trash_dialog_content": "Do you want to empty your trashed assets? These items will be permanently removed from Immich",
"trash_page_info": "Trashed items will be permanently deleted after {} days",
"trash_page_no_assets": "No trashed assets",
"trash_page_restore_all": "Restore All",
"trash_page_select_assets_btn": "Select assets",
"trash_page_title": "Trash ({})",
"trashed_items_will_be_permanently_deleted_after": "Į šiukšliadėžę perkelti elementai bus visam laikui ištrinti po {days, plural, one {# dienos} other {# dienų}}.", "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", "type": "Tipas",
"unarchive": "Išarchyvuoti", "unarchive": "Išarchyvuoti",
@@ -1093,14 +1583,19 @@
"updated_password": "Slaptažodis atnaujintas", "updated_password": "Slaptažodis atnaujintas",
"upload": "Įkelti", "upload": "Įkelti",
"upload_concurrency": "", "upload_concurrency": "",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_title": "Upload Asset",
"upload_errors": "Įkėlimas įvyko su {count, plural, one {# klaida} few {# klaidomis} other {# klaidų}}, norėdami pamatyti naujai įkeltus elementus perkraukite puslapį.", "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_progress": "Liko {remaining, number} - Apdorota {processed, number}/{total, number}",
"upload_status_duplicates": "Dublikatai", "upload_status_duplicates": "Dublikatai",
"upload_status_errors": "Klaidos", "upload_status_errors": "Klaidos",
"upload_status_uploaded": "Įkelta", "upload_status_uploaded": "Įkelta",
"upload_success": "Įkėlimas pavyko, norėdami pamatyti naujai įkeltus elementus perkraukite puslapį.", "upload_success": "Įkėlimas pavyko, norėdami pamatyti naujai įkeltus elementus perkraukite puslapį.",
"upload_to_immich": "Upload to Immich ({})",
"uploading": "Uploading",
"url": "URL", "url": "URL",
"usage": "", "usage": "",
"use_current_connection": "use current connection",
"user": "Naudotojas", "user": "Naudotojas",
"user_id": "Naudotojo ID", "user_id": "Naudotojo ID",
"user_usage_detail": "", "user_usage_detail": "",
@@ -1110,9 +1605,15 @@
"users": "Naudotojai", "users": "Naudotojai",
"utilities": "Įrankiai", "utilities": "Įrankiai",
"validate": "Validuoti", "validate": "Validuoti",
"validate_endpoint_error": "Please enter a valid URL",
"variables": "Kintamieji", "variables": "Kintamieji",
"version": "Versija", "version": "Versija",
"version_announcement_closing": "Tavo draugas, Alex", "version_announcement_closing": "Tavo draugas, Alex",
"version_announcement_overlay_release_notes": "release notes",
"version_announcement_overlay_text_1": "Hi friend, there is a new release of",
"version_announcement_overlay_text_2": "please take your time to visit the ",
"version_announcement_overlay_text_3": " and ensure your docker-compose and .env setup is up-to-date to prevent any misconfigurations, especially if you use WatchTower or any mechanism that handles updating your server application automatically.",
"version_announcement_overlay_title": "New Server Version Available 🎉",
"version_history": "Versijų istorija", "version_history": "Versijų istorija",
"version_history_item": "Versija {version} įdiegta {date}", "version_history_item": "Versija {version} įdiegta {date}",
"video": "Vaizdo įrašas", "video": "Vaizdo įrašas",
@@ -1128,13 +1629,18 @@
"view_next_asset": "", "view_next_asset": "",
"view_previous_asset": "", "view_previous_asset": "",
"view_stack": "Peržiūrėti grupę", "view_stack": "Peržiūrėti grupę",
"viewer_remove_from_stack": "Remove from Stack",
"viewer_stack_use_as_main_asset": "Use as Main Asset",
"viewer_unstack": "Un-Stack",
"waiting": "Laukiama", "waiting": "Laukiama",
"warning": "Įspėjimas", "warning": "Įspėjimas",
"week": "Savaitė", "week": "Savaitė",
"welcome_to_immich": "Sveiki atvykę į Immich", "welcome_to_immich": "Sveiki atvykę į Immich",
"wifi_name": "WiFi Name",
"year": "Metai", "year": "Metai",
"years_ago": "Prieš {years, plural, one {# metus} other {# metų}}", "years_ago": "Prieš {years, plural, one {# metus} other {# metų}}",
"yes": "Taip", "yes": "Taip",
"you_dont_have_any_shared_links": "Bendrinimo nuorodų neturite", "you_dont_have_any_shared_links": "Bendrinimo nuorodų neturite",
"your_wifi_name": "Your WiFi name",
"zoom_image": "Priartinti vaizdą" "zoom_image": "Priartinti vaizdą"
} }

View File

@@ -4,6 +4,7 @@
"account_settings": "Konta iestatījumi", "account_settings": "Konta iestatījumi",
"acknowledge": "Pieņemt", "acknowledge": "Pieņemt",
"action": "Darbība", "action": "Darbība",
"action_common_update": "Atjaunināt",
"actions": "Darbības", "actions": "Darbības",
"active": "Aktīvs", "active": "Aktīvs",
"activity": "Aktivitāte", "activity": "Aktivitāte",
@@ -13,6 +14,7 @@
"add_a_location": "Pievienot atrašanās vietu", "add_a_location": "Pievienot atrašanās vietu",
"add_a_name": "Pievienot vārdu", "add_a_name": "Pievienot vārdu",
"add_a_title": "Pievienot virsrakstu", "add_a_title": "Pievienot virsrakstu",
"add_endpoint": "Add endpoint",
"add_exclusion_pattern": "Pievienot izslēgšanas šablonu", "add_exclusion_pattern": "Pievienot izslēgšanas šablonu",
"add_import_path": "Pievienot importa ceļu", "add_import_path": "Pievienot importa ceļu",
"add_location": "Pievienot lokāciju", "add_location": "Pievienot lokāciju",
@@ -22,6 +24,8 @@
"add_photos": "Pievienot fotoattēlus", "add_photos": "Pievienot fotoattēlus",
"add_to": "Pievienot…", "add_to": "Pievienot…",
"add_to_album": "Pievienot albumam", "add_to_album": "Pievienot albumam",
"add_to_album_bottom_sheet_added": "Pievienots {album}",
"add_to_album_bottom_sheet_already_exists": "Jau pievienots {album}",
"add_to_shared_album": "Pievienot koplietotam albumam", "add_to_shared_album": "Pievienot koplietotam albumam",
"add_url": "Pievienot URL", "add_url": "Pievienot URL",
"added_to_archive": "Pievienots arhīvam", "added_to_archive": "Pievienots arhīvam",
@@ -275,18 +279,42 @@
"admin_password": "Administratora parole", "admin_password": "Administratora parole",
"administration": "Administrēšana", "administration": "Administrēšana",
"advanced": "Papildu", "advanced": "Papildu",
"advanced_settings_log_level_title": "Žurnalēšanas līmenis: {}",
"advanced_settings_prefer_remote_subtitle": "Dažās ierīcēs sīktēli no ierīcē esošajiem resursiem tiek ielādēti ļoti lēni. Aktivizējiet šo iestatījumu, lai tā vietā ielādētu attālus attēlus.",
"advanced_settings_prefer_remote_title": "Dot priekšroku attāliem attēliem",
"advanced_settings_proxy_headers_subtitle": "Define proxy headers Immich should send with each network request",
"advanced_settings_proxy_headers_title": "Proxy Headers",
"advanced_settings_self_signed_ssl_subtitle": "Izlaiž servera galapunkta SSL sertifikātu verifikāciju. Nepieciešams pašparakstītajiem sertifikātiem.",
"advanced_settings_self_signed_ssl_title": "Atļaut pašparakstītus SSL sertifikātus",
"advanced_settings_tile_subtitle": "Lietotāja papildu iestatījumi",
"advanced_settings_troubleshooting_subtitle": "Iespējot papildu aktīvus problēmu novēršanai",
"advanced_settings_troubleshooting_title": "Problēmas novēršana",
"album_added": "Albums pievienots", "album_added": "Albums pievienots",
"album_added_notification_setting_description": "", "album_added_notification_setting_description": "",
"album_cover_updated": "Albuma attēls atjaunināts", "album_cover_updated": "Albuma attēls atjaunināts",
"album_info_card_backup_album_excluded": "NEIEKĻAUTS",
"album_info_card_backup_album_included": "IEKĻAUTS",
"album_info_updated": "Albuma informācija atjaunināta", "album_info_updated": "Albuma informācija atjaunināta",
"album_leave": "Pamest albumu?", "album_leave": "Pamest albumu?",
"album_name": "Albuma nosaukums", "album_name": "Albuma nosaukums",
"album_options": "", "album_options": "",
"album_remove_user": "Noņemt lietotāju?", "album_remove_user": "Noņemt lietotāju?",
"album_thumbnail_card_item": "1 vienums",
"album_thumbnail_card_items": "{} vienumi",
"album_thumbnail_card_shared": "· Koplietots",
"album_thumbnail_shared_by": "Kopīgoja {}",
"album_updated": "Albums atjaunināts", "album_updated": "Albums atjaunināts",
"album_updated_setting_description": "", "album_updated_setting_description": "",
"album_user_left": "Pameta {album}", "album_user_left": "Pameta {album}",
"album_user_removed": "Noņēma {user}", "album_user_removed": "Noņēma {user}",
"album_viewer_appbar_delete_confirm": "Vai tiešām vēlaties dzēst šo albumu no sava konta?",
"album_viewer_appbar_share_err_delete": "Neizdevās izdzēst albumu",
"album_viewer_appbar_share_err_leave": "Neizdevās pamest albumu",
"album_viewer_appbar_share_err_remove": "Ir problēmas ar aktīvu noņemšanu no albuma",
"album_viewer_appbar_share_err_title": "Neizdevās mainīt albuma nosaukumu",
"album_viewer_appbar_share_leave": "Pamest albumu",
"album_viewer_appbar_share_to": "Kopīgot Uz",
"album_viewer_page_share_add_users": "Pievienot lietotājus",
"albums": "Albumi", "albums": "Albumi",
"all": "Viss", "all": "Viss",
"all_albums": "Visi albumi", "all_albums": "Visi albumi",
@@ -300,18 +328,109 @@
"api_key": "API atslēga", "api_key": "API atslēga",
"api_key_description": "Šī vērtība tiks parādīta tikai vienu reizi. Nokopējiet to pirms loga aizvēršanas.", "api_key_description": "Šī vērtība tiks parādīta tikai vienu reizi. Nokopējiet to pirms loga aizvēršanas.",
"api_keys": "API atslēgas", "api_keys": "API atslēgas",
"app_bar_signout_dialog_content": "Vai tiešām vēlaties izrakstīties?",
"app_bar_signout_dialog_ok": "Jā",
"app_bar_signout_dialog_title": "Izrakstīties",
"app_settings": "", "app_settings": "",
"appears_in": "", "appears_in": "",
"archive": "Arhīvs", "archive": "Arhīvs",
"archive_or_unarchive_photo": "", "archive_or_unarchive_photo": "",
"archive_page_no_archived_assets": "Nav atrasts neviens arhivēts aktīvs",
"archive_page_title": "Arhīvs ({})",
"archive_size": "Arhīva izmērs", "archive_size": "Arhīva izmērs",
"archived": "Archived",
"are_these_the_same_person": "Vai šī ir tā pati persona?", "are_these_the_same_person": "Vai šī ir tā pati persona?",
"asset_action_delete_err_read_only": "Nevar dzēst read only aktīvu(-s), notiek izlaišana",
"asset_action_share_err_offline": "Nevar iegūt bezsaistes aktīvu(-s), notiek izlaišana",
"asset_adding_to_album": "Pievieno albumam...", "asset_adding_to_album": "Pievieno albumam...",
"asset_list_group_by_sub_title": "Grupēt pēc",
"asset_list_layout_settings_dynamic_layout_title": "Dinamiskais izkārtojums",
"asset_list_layout_settings_group_automatically": "Automātiski",
"asset_list_layout_settings_group_by": "Grupēt aktīvus pēc",
"asset_list_layout_settings_group_by_month_day": "Mēnesis + diena",
"asset_list_layout_sub_title": "Izvietojums",
"asset_list_settings_subtitle": "Fotorežģa izkārtojuma iestatījumi",
"asset_list_settings_title": "Fotorežģis",
"asset_offline": "", "asset_offline": "",
"asset_restored_successfully": "Asset restored successfully",
"asset_uploading": "Augšupielādē...", "asset_uploading": "Augšupielādē...",
"asset_viewer_settings_subtitle": "Manage your gallery viewer settings",
"asset_viewer_settings_title": "Aktīvu Skatītājs",
"assets": "aktīvi", "assets": "aktīvi",
"assets_deleted_permanently": "{} asset(s) deleted permanently",
"assets_deleted_permanently_from_server": "{} asset(s) deleted permanently from the Immich server",
"assets_removed_permanently_from_device": "{} asset(s) removed permanently from your device",
"assets_restored_successfully": "{} asset(s) restored successfully",
"assets_trashed": "{} asset(s) trashed",
"assets_trashed_from_server": "{} asset(s) trashed from the Immich server",
"authorized_devices": "Autorizētās ierīces", "authorized_devices": "Autorizētās ierīces",
"automatic_endpoint_switching_subtitle": "Connect locally over designated Wi-Fi when available and use alternative connections elsewhere",
"automatic_endpoint_switching_title": "Automatic URL switching",
"back": "Atpakaļ", "back": "Atpakaļ",
"background_location_permission": "Background location permission",
"background_location_permission_content": "In order to switch networks when running in the background, Immich must *always* have precise location access so the app can read the Wi-Fi network's name",
"backup_album_selection_page_albums_device": "Albumi ierīcē ({})",
"backup_album_selection_page_albums_tap": "Pieskarieties, lai iekļautu, veiciet dubultskārienu, lai izslēgtu",
"backup_album_selection_page_assets_scatter": "Aktīvi var būt izmētāti pa vairākiem albumiem. Tādējādi dublēšanas procesā albumus var iekļaut vai neiekļaut.",
"backup_album_selection_page_select_albums": "Atlasīt albumus",
"backup_album_selection_page_selection_info": "Atlases informācija",
"backup_album_selection_page_total_assets": "Kopā unikālie aktīvi",
"backup_all": "Viss",
"backup_background_service_backup_failed_message": "Neizdevās dublēt līdzekļus. Notiek atkārtota mēģināšana…",
"backup_background_service_connection_failed_message": "Neizdevās izveidot savienojumu ar serveri. Notiek atkārtota mēģināšana…",
"backup_background_service_current_upload_notification": "Notiek {} augšupielāde",
"backup_background_service_default_notification": "Notiek jaunu aktīvu meklēšana…",
"backup_background_service_error_title": "Dublēšanas kļūda",
"backup_background_service_in_progress_notification": "Notiek aktīvu dublēšana…",
"backup_background_service_upload_failure_notification": "Neizdevās augšupielādēt {}",
"backup_controller_page_albums": "Dublējuma Albumi",
"backup_controller_page_background_app_refresh_disabled_content": "Iespējojiet fona aplikācijas atsvaidzināšanu sadaļā Iestatījumi > Vispārīgi > Fona Aplikācijas Atsvaidzināšana, lai izmantotu fona dublēšanu.",
"backup_controller_page_background_app_refresh_disabled_title": "Fona aplikācijas atsvaidzināšana atspējota",
"backup_controller_page_background_app_refresh_enable_button_text": "Doties uz iestatījumiem",
"backup_controller_page_background_battery_info_link": "Parādīt, kā",
"backup_controller_page_background_battery_info_message": "Lai iegūtu vislabāko fona dublēšanas pieredzi, lūdzu, atspējojiet visas akumulatora optimizācijas, kas ierobežo Immich fona aktivitāti.\n\nTā kā katrai ierīcei iestatījumi ir citādāki, lūdzu, meklējiet nepieciešamo informāciju pie ierīces ražotāja.",
"backup_controller_page_background_battery_info_ok": "OK",
"backup_controller_page_background_battery_info_title": "Akumulatora optimizācija",
"backup_controller_page_background_charging": "Tikai uzlādes laikā",
"backup_controller_page_background_configure_error": "Neizdevās konfigurēt fona pakalpojumu",
"backup_controller_page_background_delay": "Aizkavēt jaunu līdzekļu dublēšanu: {}",
"backup_controller_page_background_description": "Ieslēdziet fona pakalpojumu, lai automātiski dublētu visus jaunos aktīvus, neatverot programmu",
"backup_controller_page_background_is_off": "Automātiskā fona dublēšana ir izslēgta",
"backup_controller_page_background_is_on": "Automātiskā fona dublēšana ir ieslēgta",
"backup_controller_page_background_turn_off": "Izslēgt fona pakalpojumu",
"backup_controller_page_background_turn_on": "Ieslēgt fona pakalpojumu",
"backup_controller_page_background_wifi": "Tikai WiFi tīklā",
"backup_controller_page_backup": "Dublēšana",
"backup_controller_page_backup_selected": "Atlasīts: ",
"backup_controller_page_backup_sub": "Dublētie Fotoattēli un videoklipi",
"backup_controller_page_created": "Izveidots: {}",
"backup_controller_page_desc_backup": "Ieslēdziet priekšplāna dublēšanu, lai, atverot programmu, serverī automātiski augšupielādētu jaunus aktīvus.",
"backup_controller_page_excluded": "Izņemot: ",
"backup_controller_page_failed": "Neizdevās ({})",
"backup_controller_page_filename": "Faila nosaukums: {} [{}]",
"backup_controller_page_id": "ID: {}",
"backup_controller_page_info": "Dublējuma Informācija",
"backup_controller_page_none_selected": "Neviens nav atlasīts",
"backup_controller_page_remainder": "Atlikums",
"backup_controller_page_remainder_sub": "Atlikušie fotoattēli un videoklipi, kurus dublēt no atlases",
"backup_controller_page_server_storage": "Servera krātuve",
"backup_controller_page_start_backup": "Sākt Dublēšanu",
"backup_controller_page_status_off": "Automātiskā priekšplāna dublēšana ir izslēgta",
"backup_controller_page_status_on": "Automātiskā priekšplāna dublēšana ir ieslēgta",
"backup_controller_page_storage_format": "{} no {} tiek izmantots",
"backup_controller_page_to_backup": "Dublējamie albumi",
"backup_controller_page_total_sub": "Visi unikālie fotoattēli un videoklipi no izvēlētajiem albumiem",
"backup_controller_page_turn_off": "Izslēgt priekšplāna dublēšanu",
"backup_controller_page_turn_on": "Ieslēgt priekšplāna dublēšanu",
"backup_controller_page_uploading_file_info": "Faila informācijas augšupielāde",
"backup_err_only_album": "Nevar noņemt vienīgo albumu",
"backup_info_card_assets": "aktīvi",
"backup_manual_cancelled": "Atcelts",
"backup_manual_in_progress": "Augšupielāde jau notiek. Mēģiniet pēc kāda laika atkārtoti",
"backup_manual_success": "Veiksmīgi",
"backup_manual_title": "Augšupielādes statuss",
"backup_options_page_title": "Dublēšanas iestatījumi",
"backup_setting_subtitle": "Manage background and foreground upload settings",
"backward": "", "backward": "",
"birthdate_saved": "Dzimšanas datums veiksmīgi saglabāts", "birthdate_saved": "Dzimšanas datums veiksmīgi saglabāts",
"birthdate_set_description": "Dzimšanas datums tiek izmantots, lai aprēķinātu šīs personas vecumu fotogrāfijas uzņemšanas brīdī.", "birthdate_set_description": "Dzimšanas datums tiek izmantots, lai aprēķinātu šīs personas vecumu fotogrāfijas uzņemšanas brīdī.",
@@ -319,21 +438,49 @@
"bugs_and_feature_requests": "Kļūdas un funkciju pieprasījumi", "bugs_and_feature_requests": "Kļūdas un funkciju pieprasījumi",
"build": "Būvējums", "build": "Būvējums",
"build_image": "Būvējuma attēls", "build_image": "Būvējuma attēls",
"cache_settings_album_thumbnails": "Bibliotēkas lapu sīktēli ({} aktīvi)",
"cache_settings_clear_cache_button": "Iztīrīt kešatmiņu",
"cache_settings_clear_cache_button_title": "Iztīra aplikācijas kešatmiņu. Tas būtiski ietekmēs lietotnes veiktspēju, līdz kešatmiņa būs pārbūvēta.",
"cache_settings_duplicated_assets_clear_button": "NOTĪRĪT",
"cache_settings_duplicated_assets_subtitle": "Fotoattēli un videoklipi, kurus lietotne ir iekļāvusi melnajā sarakstā",
"cache_settings_duplicated_assets_title": "Dublicētie Aktīvi ({})",
"cache_settings_image_cache_size": "Attēlu kešatmiņas lielums ({} aktīvi)",
"cache_settings_statistics_album": "Bibliotēkas sīktēli",
"cache_settings_statistics_assets": "{} aktīvi ({})",
"cache_settings_statistics_full": "Pilni attēli",
"cache_settings_statistics_shared": "Koplietojamo albumu sīktēli",
"cache_settings_statistics_thumbnail": "Sīktēli",
"cache_settings_statistics_title": "Kešatmiņas lietojums",
"cache_settings_subtitle": "Kontrolēt Immich mobilās lietotnes kešdarbi",
"cache_settings_thumbnail_size": "Sīktēlu keša lielums ({} aktīvi)",
"cache_settings_tile_subtitle": "Kontrolēt lokālās krātuves uzvedību",
"cache_settings_tile_title": "Lokālā Krātuve",
"cache_settings_title": "Kešdarbes iestatījumi",
"camera": "", "camera": "",
"camera_brand": "", "camera_brand": "",
"camera_model": "", "camera_model": "",
"cancel": "Atcelt", "cancel": "Atcelt",
"cancel_search": "", "cancel_search": "",
"canceled": "Canceled",
"cannot_merge_people": "Nevar apvienot cilvēkus", "cannot_merge_people": "Nevar apvienot cilvēkus",
"cannot_update_the_description": "", "cannot_update_the_description": "",
"change_date": "Mainīt datumu", "change_date": "Mainīt datumu",
"change_display_order": "Change display order",
"change_expiration_time": "Izmainīt derīguma termiņu", "change_expiration_time": "Izmainīt derīguma termiņu",
"change_location": "Mainīt atrašanās vietu", "change_location": "Mainīt atrašanās vietu",
"change_name": "Mainīt nosaukumu", "change_name": "Mainīt nosaukumu",
"change_name_successfully": "Vārds veiksmīgi nomainīts", "change_name_successfully": "Vārds veiksmīgi nomainīts",
"change_password": "Nomainīt paroli", "change_password": "Nomainīt paroli",
"change_password_form_confirm_password": "Apstiprināt Paroli",
"change_password_form_description": "Sveiki {name},\n\nŠī ir pirmā reize, kad pierakstāties sistēmā, vai arī ir iesniegts pieprasījums mainīt paroli. Lūdzu, zemāk ievadiet jauno paroli.",
"change_password_form_new_password": "Jauna Parole",
"change_password_form_password_mismatch": "Paroles nesakrīt",
"change_password_form_reenter_new_password": "Atkārtoti ievadīt jaunu paroli",
"change_your_password": "", "change_your_password": "",
"changed_visibility_successfully": "", "changed_visibility_successfully": "",
"check_corrupt_asset_backup": "Check for corrupt asset backups",
"check_corrupt_asset_backup_button": "Perform check",
"check_corrupt_asset_backup_description": "Run this check only over Wi-Fi and once all assets have been backed-up. The procedure might take a few minutes.",
"check_logs": "", "check_logs": "",
"choose_matching_people_to_merge": "Izvēlies atbilstošus cilvēkus apvienošanai", "choose_matching_people_to_merge": "Izvēlies atbilstošus cilvēkus apvienošanai",
"city": "Pilsēta", "city": "Pilsēta",
@@ -341,6 +488,14 @@
"clear_all": "Notīrīt visu", "clear_all": "Notīrīt visu",
"clear_message": "", "clear_message": "",
"clear_value": "Notīrīt vērtību", "clear_value": "Notīrīt vērtību",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove_msg": "Client certificate is removed",
"client_cert_subtitle": "Supports PKCS12 (.p12, .pfx) format only. Certificate Import/Remove is available only before login",
"client_cert_title": "SSL Client Certificate",
"clockwise": "Pulksteņrādītāja virzienā", "clockwise": "Pulksteņrādītāja virzienā",
"close": "Aizvērt", "close": "Aizvērt",
"collapse": "Sakļaut", "collapse": "Sakļaut",
@@ -350,12 +505,24 @@
"comment_deleted": "Komentārs dzēsts", "comment_deleted": "Komentārs dzēsts",
"comment_options": "", "comment_options": "",
"comments_are_disabled": "", "comments_are_disabled": "",
"common_create_new_album": "Izveidot jaunu albumu",
"common_server_error": "Lūdzu, pārbaudiet tīkla savienojumu, pārliecinieties, vai serveris ir sasniedzams un aplikācijas/servera versijas ir saderīgas.",
"completed": "Completed",
"confirm": "Apstiprināt", "confirm": "Apstiprināt",
"confirm_admin_password": "", "confirm_admin_password": "",
"confirm_password": "Apstiprināt paroli", "confirm_password": "Apstiprināt paroli",
"contain": "", "contain": "",
"context": "Konteksts", "context": "Konteksts",
"continue": "Turpināt", "continue": "Turpināt",
"control_bottom_app_bar_album_info_shared": "{} vienumi · Koplietoti",
"control_bottom_app_bar_create_new_album": "Izveidot jaunu albumu",
"control_bottom_app_bar_delete_from_immich": "Dzēst no Immich",
"control_bottom_app_bar_delete_from_local": "Dzēst no ierīces",
"control_bottom_app_bar_edit_location": "Rediģēt Atrašanās Vietu",
"control_bottom_app_bar_edit_time": "Rediģēt Datumu un Laiku",
"control_bottom_app_bar_share_link": "Share Link",
"control_bottom_app_bar_share_to": "Kopīgot Uz",
"control_bottom_app_bar_trash_from_immich": "Pārvietot uz Atkritni",
"copied_image_to_clipboard": "", "copied_image_to_clipboard": "",
"copy_error": "", "copy_error": "",
"copy_file_path": "", "copy_file_path": "",
@@ -369,20 +536,30 @@
"covers": "", "covers": "",
"create": "Izveidot", "create": "Izveidot",
"create_album": "Izveidot albumu", "create_album": "Izveidot albumu",
"create_album_page_untitled": "Bez nosaukuma",
"create_library": "", "create_library": "",
"create_link": "Izveidot saiti", "create_link": "Izveidot saiti",
"create_link_to_share": "Izveidot kopīgošanas saiti", "create_link_to_share": "Izveidot kopīgošanas saiti",
"create_new": "CREATE NEW",
"create_new_person": "", "create_new_person": "",
"create_new_user": "Izveidot jaunu lietotāju", "create_new_user": "Izveidot jaunu lietotāju",
"create_shared_album_page_share_add_assets": "PIEVIENOT AKTĪVUS",
"create_shared_album_page_share_select_photos": "Fotoattēlu Izvēle",
"create_user": "Izveidot lietotāju", "create_user": "Izveidot lietotāju",
"created": "", "created": "",
"crop": "Crop",
"curated_object_page_title": "Lietas",
"current_device": "", "current_device": "",
"current_server_address": "Current server address",
"custom_locale": "", "custom_locale": "",
"custom_locale_description": "", "custom_locale_description": "",
"daily_title_text_date": "E, MMM dd",
"daily_title_text_date_year": "E, MMM dd, gggg",
"dark": "", "dark": "",
"date_after": "", "date_after": "",
"date_and_time": "Datums un Laiks", "date_and_time": "Datums un Laiks",
"date_before": "", "date_before": "",
"date_format": "E, LLL d, g • h:mm a",
"date_of_birth_saved": "Dzimšanas datums veiksmīgi saglabāts", "date_of_birth_saved": "Dzimšanas datums veiksmīgi saglabāts",
"date_range": "Datumu diapazons", "date_range": "Datumu diapazons",
"day": "", "day": "",
@@ -390,13 +567,24 @@
"default_locale_description": "", "default_locale_description": "",
"delete": "Dzēst", "delete": "Dzēst",
"delete_album": "Dzēst albumu", "delete_album": "Dzēst albumu",
"delete_dialog_alert": "Šie vienumi tiks neatgriezeniski dzēsti no Immich un jūsu ierīces",
"delete_dialog_alert_local": "Šie vienumi tiks neatgriezeniski dzēsti no jūsu ierīces, bet joprojām būs pieejami Immich serverī.",
"delete_dialog_alert_local_non_backed_up": "Daži no šiem elementiem netiek dublēti Immich un tiks neatgriezeniski dzēsti no jūsu ierīces.",
"delete_dialog_alert_remote": "Šie vienumi tiks neatgriezeniski dzēsti no Immich servera.",
"delete_dialog_ok_force": "Tā pat dzēst",
"delete_dialog_title": "Neatgriezeniski Dzēst",
"delete_key": "", "delete_key": "",
"delete_library": "", "delete_library": "",
"delete_link": "", "delete_link": "",
"delete_local_dialog_ok_backed_up_only": "Dzēst tikai Dublētos",
"delete_local_dialog_ok_force": "Tā pat dzēst",
"delete_shared_link": "Dzēst Kopīgošanas saiti", "delete_shared_link": "Dzēst Kopīgošanas saiti",
"delete_shared_link_dialog_title": "Dzēst Kopīgošanas saiti",
"delete_user": "Dzēst lietotāju", "delete_user": "Dzēst lietotāju",
"deleted_shared_link": "", "deleted_shared_link": "",
"description": "Apraksts", "description": "Apraksts",
"description_input_hint_text": "Pievienot aprakstu...",
"description_input_submit_error": "Atjauninot aprakstu, radās kļūda; papildinformāciju skatiet žurnālā",
"details": "INFORMĀCIJA", "details": "INFORMĀCIJA",
"direction": "Virziens", "direction": "Virziens",
"disallow_edits": "", "disallow_edits": "",
@@ -410,9 +598,23 @@
"documentation": "Dokumentācija", "documentation": "Dokumentācija",
"done": "Gatavs", "done": "Gatavs",
"download": "Lejupielādēt", "download": "Lejupielādēt",
"download_canceled": "Download canceled",
"download_complete": "Download complete",
"download_enqueue": "Download enqueued",
"download_error": "Download Error",
"download_failed": "Download failed",
"download_filename": "file: {}",
"download_finished": "Download finished",
"download_notfound": "Download not found",
"download_paused": "Download paused",
"download_settings": "Lejupielāde", "download_settings": "Lejupielāde",
"download_settings_description": "Ar failu lejupielādi saistīto iestatījumu pārvaldība", "download_settings_description": "Ar failu lejupielādi saistīto iestatījumu pārvaldība",
"download_started": "Download started",
"download_sucess": "Download success",
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
"download_waiting_to_retry": "Waiting to retry",
"downloading": "", "downloading": "",
"downloading_media": "Downloading media",
"duplicates": "Dublikāti", "duplicates": "Dublikāti",
"duration": "", "duration": "",
"edit_album": "", "edit_album": "",
@@ -426,6 +628,7 @@
"edit_key": "", "edit_key": "",
"edit_link": "Rediģēt saiti", "edit_link": "Rediģēt saiti",
"edit_location": "Rediģēt Atrašanās Vietu", "edit_location": "Rediģēt Atrašanās Vietu",
"edit_location_dialog_title": "Atrašanās vieta",
"edit_name": "Rediģēt vārdu", "edit_name": "Rediģēt vārdu",
"edit_people": "", "edit_people": "",
"edit_title": "", "edit_title": "",
@@ -435,12 +638,17 @@
"editor_close_without_save_prompt": "Izmaiņas netiks saglabātas", "editor_close_without_save_prompt": "Izmaiņas netiks saglabātas",
"editor_close_without_save_title": "Aizvērt redaktoru?", "editor_close_without_save_title": "Aizvērt redaktoru?",
"email": "E-pasts", "email": "E-pasts",
"empty_folder": "This folder is empty",
"empty_trash": "Iztukšot atkritni", "empty_trash": "Iztukšot atkritni",
"enable": "", "enable": "",
"enabled": "", "enabled": "",
"end_date": "", "end_date": "",
"enqueued": "Enqueued",
"enter_wifi_name": "Enter WiFi name",
"error": "", "error": "",
"error_change_sort_album": "Failed to change album sort order",
"error_loading_image": "", "error_loading_image": "",
"error_saving_image": "Error: {}",
"errors": { "errors": {
"cant_get_faces": "Nevar iegūt sejas", "cant_get_faces": "Nevar iegūt sejas",
"cant_search_people": "Neizdevās veikt peronu meklēšanu", "cant_search_people": "Neizdevās veikt peronu meklēšanu",
@@ -493,40 +701,92 @@
"unable_to_update_settings": "", "unable_to_update_settings": "",
"unable_to_update_user": "" "unable_to_update_user": ""
}, },
"exif_bottom_sheet_description": "Pievienot Aprakstu...",
"exif_bottom_sheet_details": "INFORMĀCIJA",
"exif_bottom_sheet_location": "ATRAŠANĀS VIETA",
"exif_bottom_sheet_people": "CILVĒKI",
"exif_bottom_sheet_person_add_person": "Pievienot vārdu",
"exif_bottom_sheet_person_age": "Age {}",
"exif_bottom_sheet_person_age_months": "Age {} months",
"exif_bottom_sheet_person_age_year_months": "Age 1 year, {} months",
"exif_bottom_sheet_person_age_years": "Age {}",
"exit_slideshow": "Iziet no slīdrādes", "exit_slideshow": "Iziet no slīdrādes",
"expand_all": "", "expand_all": "",
"experimental_settings_new_asset_list_subtitle": "Izstrādes posmā",
"experimental_settings_new_asset_list_title": "Iespējot eksperimentālo fotorežģi",
"experimental_settings_subtitle": "Izmanto uzņemoties risku!",
"experimental_settings_title": "Eksperimentāls",
"expire_after": "Derīguma termiņš beidzas pēc", "expire_after": "Derīguma termiņš beidzas pēc",
"expired": "Derīguma termiņš beidzās", "expired": "Derīguma termiņš beidzās",
"explore": "Izpētīt", "explore": "Izpētīt",
"extension": "", "extension": "",
"external_libraries": "", "external_libraries": "",
"external_network": "External network",
"external_network_sheet_info": "When not on the preferred WiFi network, the app will connect to the server through the first of the below URLs it can reach, starting from top to bottom",
"failed": "Failed",
"failed_to_load_assets": "Failed to load assets",
"failed_to_load_folder": "Failed to load folder",
"favorite": "Izlase", "favorite": "Izlase",
"favorite_or_unfavorite_photo": "", "favorite_or_unfavorite_photo": "",
"favorites": "Izlase", "favorites": "Izlase",
"favorites_page_no_favorites": "Nav atrasti iecienītākie aktīvi",
"feature_photo_updated": "", "feature_photo_updated": "",
"features_setting_description": "Lietotnes funkciju pārvaldība", "features_setting_description": "Lietotnes funkciju pārvaldība",
"file_name": "", "file_name": "",
"file_name_or_extension": "", "file_name_or_extension": "",
"filename": "", "filename": "",
"filetype": "", "filetype": "",
"filter": "Filter",
"filter_people": "", "filter_people": "",
"fix_incorrect_match": "", "fix_incorrect_match": "",
"folder": "Folder",
"folder_not_found": "Folder not found",
"folders": "Mapes", "folders": "Mapes",
"forward": "", "forward": "",
"general": "", "general": "",
"get_help": "", "get_help": "",
"get_wifiname_error": "Could not get Wi-Fi name. Make sure you have granted the necessary permissions and are connected to a Wi-Fi network",
"getting_started": "", "getting_started": "",
"go_back": "", "go_back": "",
"go_to_search": "", "go_to_search": "",
"grant_permission": "Grant permission",
"group_albums_by": "", "group_albums_by": "",
"haptic_feedback_switch": "Iestatīt haptisku reakciju",
"haptic_feedback_title": "Haptiska Reakcija",
"has_quota": "Ir kvota", "has_quota": "Ir kvota",
"header_settings_add_header_tip": "Add Header",
"header_settings_field_validator_msg": "Value cannot be empty",
"header_settings_header_name_input": "Header name",
"header_settings_header_value_input": "Header value",
"headers_settings_tile_subtitle": "Define proxy headers the app should send with each network request",
"headers_settings_tile_title": "Custom proxy headers",
"hide_gallery": "", "hide_gallery": "",
"hide_named_person": "Paslēpt personu {name}", "hide_named_person": "Paslēpt personu {name}",
"hide_password": "", "hide_password": "",
"hide_person": "Paslēpt personu", "hide_person": "Paslēpt personu",
"home_page_add_to_album_conflicts": "Pievienoja {added} aktīvus albumam {album}. {failed} aktīvi jau ir albumā.",
"home_page_add_to_album_err_local": "Albumiem vēl nevar pievienot lokālos aktīvus, notiek izlaišana",
"home_page_add_to_album_success": "Pievienoja {added} aktīvus albumam {album}.",
"home_page_album_err_partner": "Pagaidām nevar pievienot partnera aktīvus albumam, notiek izlaišana",
"home_page_archive_err_local": "Vēl nevar arhivēt lokālos aktīvus, notiek izlaišana",
"home_page_archive_err_partner": "Nevarēja arhivēt partnera aktīvus, notiek izlaišana",
"home_page_building_timeline": "Tiek izveidota laika skala",
"home_page_delete_err_partner": "Nevarēja dzēst partnera aktīvus, notiek izlaišana",
"home_page_delete_remote_err_local": "Lokālie aktīvi dzēšanai attālinātajā izvēlē, tiek izlaists",
"home_page_favorite_err_local": "Vēl nevar pievienot izlaisei vietējos aktīvus, notiek izlaišana",
"home_page_favorite_err_partner": "Pagaidām nevar ievietot izlasē partnera aktīvus, notiek izlaišana",
"home_page_first_time_notice": "Ja šī ir pirmā reize, kad izmantojat aplikāciju, lūdzu, izvēlieties dublējuma albumu(s), lai laika skala varētu aizpildīt fotoattēlus un videoklipus albumā(os).",
"home_page_share_err_local": "Caur saiti nevarēja kopīgot lokālos aktīvus, notiek izlaišana",
"home_page_upload_err_limit": "Vienlaikus var augšupielādēt ne vairāk kā 30 aktīvus, notiek izlaišana",
"host": "", "host": "",
"hour": "", "hour": "",
"ignore_icloud_photos": "Ignore iCloud photos",
"ignore_icloud_photos_description": "Photos that are stored on iCloud will not be uploaded to the Immich server",
"image": "Attēls", "image": "Attēls",
"image_saved_successfully": "Image saved",
"image_viewer_page_state_provider_download_started": "Lejupielāde Uzsākta",
"image_viewer_page_state_provider_download_success": "Lejupielāde Izdevās",
"image_viewer_page_state_provider_share_error": "Kopīgošanas Kļūda",
"immich_logo": "Immich logo", "immich_logo": "Immich logo",
"import_from_json": "Importēt no JSON", "import_from_json": "Importēt no JSON",
"import_path": "Importa ceļš", "import_path": "Importa ceļš",
@@ -543,6 +803,8 @@
"night_at_midnight": "Katru dienu pusnaktī", "night_at_midnight": "Katru dienu pusnaktī",
"night_at_twoam": "Katru dienu 2.00 naktī" "night_at_twoam": "Katru dienu 2.00 naktī"
}, },
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"invite_people": "Ielūgt cilvēkus", "invite_people": "Ielūgt cilvēkus",
"invite_to_album": "Uzaicināt albumā", "invite_to_album": "Uzaicināt albumā",
"jobs": "Uzdevumi", "jobs": "Uzdevumi",
@@ -559,6 +821,12 @@
"level": "Līmenis", "level": "Līmenis",
"library": "Bibliotēka", "library": "Bibliotēka",
"library_options": "", "library_options": "",
"library_page_device_albums": "Albumi ierīcē",
"library_page_new_album": "Jauns albums",
"library_page_sort_asset_count": "Daudzums ar aktīviem",
"library_page_sort_created": "Jaunākais izveidotais",
"library_page_sort_last_modified": "Pēdējo reizi modificēts",
"library_page_sort_title": "Albuma virsraksts",
"light": "", "light": "",
"link_options": "", "link_options": "",
"link_to_oauth": "", "link_to_oauth": "",
@@ -566,9 +834,39 @@
"list": "Saraksts", "list": "Saraksts",
"loading": "Ielādē", "loading": "Ielādē",
"loading_search_results_failed": "", "loading_search_results_failed": "",
"local_network": "Local network",
"local_network_sheet_info": "The app will connect to the server through this URL when using the specified Wi-Fi network",
"location_permission": "Location permission",
"location_permission_content": "In order to use the auto-switching feature, Immich needs precise location permission so it can read the current WiFi network's name",
"location_picker_choose_on_map": "Izvēlēties uz kartes",
"location_picker_latitude_error": "Ievadiet korektu ģeogrāfisko platumu",
"location_picker_latitude_hint": "Ievadiet savu ģeogrāfisko platumu šeit",
"location_picker_longitude_error": "Ievadiet korektu ģeogrāfisko garumu",
"location_picker_longitude_hint": "Ievadiet savu ģeogrāfisko garumu šeit",
"log_out": "Izrakstīties", "log_out": "Izrakstīties",
"log_out_all_devices": "", "log_out_all_devices": "",
"login_disabled": "Pieslēgšanās ir atslēgta",
"login_form_api_exception": "API izņēmums. Lūdzu, pārbaudiet servera URL un mēģiniet vēlreiz.",
"login_form_back_button_text": "Atpakaļ",
"login_form_email_hint": "jūsuepasts@email.com",
"login_form_endpoint_hint": "http://jūsu-servera-ip:ports",
"login_form_endpoint_url": "Servera Galapunkta URL",
"login_form_err_http": "Lūdzu norādiet http:// vai https://",
"login_form_err_invalid_email": "Nederīgs e-pasts",
"login_form_err_invalid_url": "Nederīgs URL",
"login_form_err_leading_whitespace": "Priekšējā baltstarpa",
"login_form_err_trailing_whitespace": "Beigu baltstarpa",
"login_form_failed_get_oauth_server_config": "Pieslēdzoties, izmantojot OAuth, radās kļūda; pārbaudiet servera URL",
"login_form_failed_get_oauth_server_disable": "OAuth līdzeklis šajā serverī nav pieejams",
"login_form_failed_login": "Radās kļūda, piesakoties, pārbaudiet servera URL, e-pastu un paroli",
"login_form_handshake_exception": "Ar serveri tika konstatēta Handshake Exception kļūda. Ja izmantojat pašparakstītu sertifikātu, tad iestatījumos iespējojiet pašparakstītu sertifikātu atbalstu.",
"login_form_password_hint": "parole",
"login_form_save_login": "Palikt pieteiktam",
"login_form_server_empty": "Ieraksties servera URL.",
"login_form_server_error": "Nevarēja izveidot savienojumu ar serveri.",
"login_has_been_disabled": "", "login_has_been_disabled": "",
"login_password_changed_error": "Atjaunojot paroli radās kļūda",
"login_password_changed_success": "Parole veiksmīgi atjaunota",
"longitude": "Ģeogrāfiskais garums", "longitude": "Ģeogrāfiskais garums",
"look": "Izskats", "look": "Izskats",
"loop_videos": "", "loop_videos": "",
@@ -582,13 +880,40 @@
"manage_your_devices": "Pieslēgto ierīču pārvaldība", "manage_your_devices": "Pieslēgto ierīču pārvaldība",
"manage_your_oauth_connection": "OAuth savienojumu pārvaldība", "manage_your_oauth_connection": "OAuth savienojumu pārvaldība",
"map": "Karte", "map": "Karte",
"map_assets_in_bound": "{} fotoattēls",
"map_assets_in_bounds": "{} fotoattēli",
"map_cannot_get_user_location": "Nevar iegūt lietotāja atrašanās vietu",
"map_location_dialog_yes": "Jā",
"map_location_picker_page_use_location": "Izvēlēties šo atrašanās vietu",
"map_location_service_disabled_content": "Lai tiktu rādīti jūsu pašreizējās atrašanās vietas aktīvi, ir jāaktivizē atrašanās vietas pakalpojums. Vai vēlaties to iespējot tagad?",
"map_location_service_disabled_title": "Atrašanās vietas Pakalpojums atslēgts",
"map_marker_for_images": "Kartes marķieris attēliem, kas uzņemti {city}, {country}", "map_marker_for_images": "Kartes marķieris attēliem, kas uzņemti {city}, {country}",
"map_marker_with_image": "Kartes marķieris ar attēlu", "map_marker_with_image": "Kartes marķieris ar attēlu",
"map_no_assets_in_bounds": "Šajā lokācijā nav neviena fotoattēla",
"map_no_location_permission_content": "Atrašanās vietas atļauja ir nepieciešama, lai parādītu jūsu pašreizējās atrašanās vietas aktīvus. Vai vēlaties to atļaut tagad?",
"map_no_location_permission_title": "Atrašanās vietas Atļaujas liegtas",
"map_settings": "Kartes Iestatījumi", "map_settings": "Kartes Iestatījumi",
"map_settings_dark_mode": "Tumšais režīms",
"map_settings_date_range_option_day": "Pēdējās 24 stundas",
"map_settings_date_range_option_days": "Pēdējās {} dienas",
"map_settings_date_range_option_year": "Pēdējo gadu",
"map_settings_date_range_option_years": "Pēdējos {} gadus",
"map_settings_dialog_title": "Kartes Iestatījumi",
"map_settings_include_show_archived": "Iekļaut Arhivētos",
"map_settings_include_show_partners": "Iekļaut Partnerus",
"map_settings_only_show_favorites": "Rādīt tikai Izlasi",
"map_settings_theme_settings": "Kartes Dizains",
"map_zoom_to_see_photos": "Attāliniet, lai redzētu fotoattēlus",
"matches": "Atbilstības", "matches": "Atbilstības",
"media_type": "Multivides veids", "media_type": "Multivides veids",
"memories": "Atmiņas", "memories": "Atmiņas",
"memories_all_caught_up": "Šobrīd, tas arī viss",
"memories_check_back_tomorrow": "Priekš vairāk atmiņām atgriezieties rītdien.",
"memories_setting_description": "", "memories_setting_description": "",
"memories_start_over": "Sākt no jauna",
"memories_swipe_to_close": "Pavelciet uz augšu, lai aizvērtu",
"memories_year_ago": "A year ago",
"memories_years_ago": "{} years ago",
"memory": "Atmiņa", "memory": "Atmiņa",
"menu": "Izvēlne", "menu": "Izvēlne",
"merge": "Apvienot", "merge": "Apvienot",
@@ -601,11 +926,16 @@
"missing": "Trūkstošie", "missing": "Trūkstošie",
"model": "Modelis", "model": "Modelis",
"month": "Mēnesis", "month": "Mēnesis",
"monthly_title_text_date_format": "MMMM g",
"more": "Vairāk", "more": "Vairāk",
"moved_to_trash": "Pārvietots uz atkritni", "moved_to_trash": "Pārvietots uz atkritni",
"multiselect_grid_edit_date_time_err_read_only": "Nevar rediģēt read only aktīva(-u) datumu, notiek izlaišana",
"multiselect_grid_edit_gps_err_read_only": "Nevar rediģēt atrašanās vietu read only aktīva(-u) datumu, notiek izlaišana",
"my_albums": "Mani albumi", "my_albums": "Mani albumi",
"name": "Vārds", "name": "Vārds",
"name_or_nickname": "Vārds vai iesauka", "name_or_nickname": "Vārds vai iesauka",
"networking_settings": "Networking",
"networking_subtitle": "Manage the server endpoint settings",
"never": "nekad", "never": "nekad",
"new_album": "Jauns albums", "new_album": "Jauns albums",
"new_api_key": "Jauna API atslēga", "new_api_key": "Jauna API atslēga",
@@ -620,6 +950,7 @@
"no_albums_message": "", "no_albums_message": "",
"no_archived_assets_message": "", "no_archived_assets_message": "",
"no_assets_message": "NOKLIKŠĶINIET, LAI AUGŠUPIELĀDĒTU SAVU PIRMO FOTOATTĒLU", "no_assets_message": "NOKLIKŠĶINIET, LAI AUGŠUPIELĀDĒTU SAVU PIRMO FOTOATTĒLU",
"no_assets_to_show": "Nav uzrādāmo aktīvu",
"no_duplicates_found": "Dublikāti netika atrasti.", "no_duplicates_found": "Dublikāti netika atrasti.",
"no_exif_info_available": "Nav pieejama exif informācija", "no_exif_info_available": "Nav pieejama exif informācija",
"no_explore_results_message": "", "no_explore_results_message": "",
@@ -631,7 +962,12 @@
"no_results_description": "Izmēģiniet sinonīmu vai vispārīgāku atslēgvārdu", "no_results_description": "Izmēģiniet sinonīmu vai vispārīgāku atslēgvārdu",
"no_shared_albums_message": "", "no_shared_albums_message": "",
"not_in_any_album": "Nav nevienā albumā", "not_in_any_album": "Nav nevienā albumā",
"not_selected": "Not selected",
"notes": "Piezīmes", "notes": "Piezīmes",
"notification_permission_dialog_content": "Lai iespējotu paziņojumus, atveriet Iestatījumi un atlasiet Atļaut.",
"notification_permission_list_tile_content": "Piešķirt atļauju, lai iespējotu paziņojumus.",
"notification_permission_list_tile_enable_button": "Iespējot Paziņojumus",
"notification_permission_list_tile_title": "Paziņojumu Atļaujas",
"notification_toggle_setting_description": "Ieslēgt e-pasta paziņojumus", "notification_toggle_setting_description": "Ieslēgt e-pasta paziņojumus",
"notifications": "Paziņojumi", "notifications": "Paziņojumi",
"notifications_setting_description": "Paziņojumu pārvaldība", "notifications_setting_description": "Paziņojumu pārvaldība",
@@ -640,6 +976,7 @@
"offline": "Bezsaistē", "offline": "Bezsaistē",
"ok": "Labi", "ok": "Labi",
"oldest_first": "", "oldest_first": "",
"on_this_device": "On this device",
"online": "Tiešsaistē", "online": "Tiešsaistē",
"only_favorites": "Tikai izlase", "only_favorites": "Tikai izlase",
"open_in_map_view": "Atvērt kartes skatā", "open_in_map_view": "Atvērt kartes skatā",
@@ -653,6 +990,14 @@
"other_variables": "Citi mainīgie", "other_variables": "Citi mainīgie",
"owned": "Īpašumā", "owned": "Īpašumā",
"owner": "Īpašnieks", "owner": "Īpašnieks",
"partner_list_user_photos": "{user} fotoattēli",
"partner_list_view_all": "Apskatīt visu",
"partner_page_empty_message": "Jūsu fotogrāfijas pagaidām nav kopīgotas ar nevienu partneri.",
"partner_page_no_more_users": "Nav vairs lietotāju, kurus var pievienot",
"partner_page_partner_add_failed": "Neizdevās pievienot partneri",
"partner_page_select_partner": "Izvēlēties partneri",
"partner_page_shared_to_title": "Kopīgots uz",
"partner_page_stop_sharing_content": "{} vairs nevarēs piekļūt jūsu fotoattēliem.",
"partner_sharing": "", "partner_sharing": "",
"partners": "", "partners": "",
"password": "Parole", "password": "Parole",
@@ -676,6 +1021,14 @@
"permanent_deletion_warning_setting_description": "", "permanent_deletion_warning_setting_description": "",
"permanently_delete": "", "permanently_delete": "",
"permanently_deleted_asset": "", "permanently_deleted_asset": "",
"permission_onboarding_back": "Atpakaļ",
"permission_onboarding_continue_anyway": "Tomēr turpināt",
"permission_onboarding_get_started": "Darba sākšana",
"permission_onboarding_go_to_settings": "Doties uz iestatījumiem",
"permission_onboarding_permission_denied": "Atļauja liegta. Lai izmantotu Immich, sadaļā Iestatījumi piešķiriet fotoattēlu un video atļaujas.",
"permission_onboarding_permission_granted": "Atļauja piešķirta! Jūs esat gatavi darbam.",
"permission_onboarding_permission_limited": "Atļauja ierobežota. Lai atļautu Immich dublēšanu un varētu pārvaldīt visu galeriju kolekciju, sadaļā Iestatījumi piešķiriet fotoattēlu un video atļaujas.",
"permission_onboarding_request": "Immich nepieciešama atļauja skatīt jūsu fotoattēlus un videoklipus.",
"photos": "Fotoattēli", "photos": "Fotoattēli",
"photos_from_previous_years": "", "photos_from_previous_years": "",
"pick_a_location": "", "pick_a_location": "",
@@ -686,12 +1039,21 @@
"play_motion_photo": "", "play_motion_photo": "",
"play_or_pause_video": "", "play_or_pause_video": "",
"port": "", "port": "",
"preferences_settings_subtitle": "Manage the app's preferences",
"preferences_settings_title": "Iestatījumi",
"preset": "", "preset": "",
"preview": "", "preview": "",
"previous": "", "previous": "",
"previous_memory": "", "previous_memory": "",
"previous_or_next_photo": "", "previous_or_next_photo": "",
"primary": "", "primary": "",
"profile_drawer_app_logs": "Žurnāli",
"profile_drawer_client_out_of_date_major": "Mobilā Aplikācija ir novecojusi. Lūdzu atjaunojiet to uz jaunāko lielo versiju",
"profile_drawer_client_out_of_date_minor": "Mobilā Aplikācija ir novecojusi. Lūdzu atjaunojiet to uz jaunāko mazo versiju",
"profile_drawer_client_server_up_to_date": "Klients un serveris ir atjaunināti",
"profile_drawer_github": "GitHub",
"profile_drawer_server_out_of_date_major": "Serveris ir novecojis. Lūdzu atjaunojiet to uz jaunāko lielo versiju",
"profile_drawer_server_out_of_date_minor": "Serveris ir novecojis. Lūdzu atjaunojiet to uz jaunāko mazo versiju",
"profile_picture_set": "", "profile_picture_set": "",
"public_share": "", "public_share": "",
"purchase_button_never_show_again": "Nekad vairs nerādīt", "purchase_button_never_show_again": "Nekad vairs nerādīt",
@@ -699,16 +1061,24 @@
"purchase_button_remove_key": "Noņemt atslēgu", "purchase_button_remove_key": "Noņemt atslēgu",
"purchase_button_select": "Izvēlēties", "purchase_button_select": "Izvēlēties",
"purchase_individual_description_2": "Atbalstītāja statuss", "purchase_individual_description_2": "Atbalstītāja statuss",
"purchase_input_suggestion": "Vai tev ir produkta atslēga? Ievadi atslēgu zemāk",
"purchase_license_subtitle": "Nopērc Immich licenci, lai atbalstītu turpmāku pakalpojuma attīstību",
"purchase_lifetime_description": "Pirkums uz mūžu",
"purchase_option_title": "IEGĀDES IESPĒJAS",
"purchase_panel_title": "Atbalstīt projektu", "purchase_panel_title": "Atbalstīt projektu",
"purchase_remove_product_key": "Noņemt produkta atslēgu", "purchase_remove_product_key": "Noņemt produkta atslēgu",
"purchase_remove_server_product_key": "Noņemt servera produkta atslēgu",
"purchase_server_description_1": "Visam serverim", "purchase_server_description_1": "Visam serverim",
"purchase_server_description_2": "Atbalstītāja statuss", "purchase_server_description_2": "Atbalstītāja statuss",
"purchase_server_title": "Serveris", "purchase_server_title": "Serveris",
"purchase_settings_server_activated": "Servera produkta atslēgu pārvalda administrators", "purchase_settings_server_activated": "Servera produkta atslēgu pārvalda administrators",
"rating_clear": "Noņemt vērtējumu",
"reaction_options": "", "reaction_options": "",
"read_changelog": "Lasīt izmaiņu sarakstu", "read_changelog": "Lasīt izmaiņu sarakstu",
"recent": "", "recent": "",
"recent_searches": "", "recent_searches": "",
"recently_added": "Recently added",
"recently_added_page_title": "Nesen Pievienotais",
"refresh": "", "refresh": "",
"refreshed": "", "refreshed": "",
"refreshes_every_file": "", "refreshes_every_file": "",
@@ -742,10 +1112,12 @@
"role_editor": "Redaktors", "role_editor": "Redaktors",
"role_viewer": "Skatītājs", "role_viewer": "Skatītājs",
"save": "Saglabāt", "save": "Saglabāt",
"save_to_gallery": "Save to gallery",
"saved_api_key": "API atslēga saglabāta", "saved_api_key": "API atslēga saglabāta",
"saved_profile": "Profils saglabāts", "saved_profile": "Profils saglabāts",
"saved_settings": "Iestatījumi saglabāti", "saved_settings": "Iestatījumi saglabāti",
"say_something": "Teikt kaut ko", "say_something": "Teikt kaut ko",
"scaffold_body_error_occurred": "Radās kļūda",
"scan_all_libraries": "", "scan_all_libraries": "",
"scan_settings": "", "scan_settings": "",
"search": "Meklēt", "search": "Meklēt",
@@ -756,12 +1128,41 @@
"search_camera_model": "", "search_camera_model": "",
"search_city": "", "search_city": "",
"search_country": "", "search_country": "",
"search_filter_apply": "Lietot filtru",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_not_in_album": "Nav albumā",
"search_filter_display_options": "Display Options",
"search_filter_filename": "Search by file name",
"search_filter_location": "Location",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_title": "Select media type",
"search_filter_people_title": "Select people",
"search_for_existing_person": "", "search_for_existing_person": "",
"search_no_more_result": "No more results",
"search_no_people": "Nav cilvēku", "search_no_people": "Nav cilvēku",
"search_no_people_named": "Nav cilvēku ar vārdu \"{name}\"", "search_no_people_named": "Nav cilvēku ar vārdu \"{name}\"",
"search_no_result": "No results found, try a different search term or combination",
"search_page_categories": "Kategorijas",
"search_page_motion_photos": "Kustību Fotoattēli",
"search_page_no_objects": "Informācija par Objektiem nav pieejama",
"search_page_no_places": "Nav pieejama Informācija par Vietām",
"search_page_screenshots": "Ekrānuzņēmumi",
"search_page_search_photos_videos": "Search for your photos and videos",
"search_page_selfies": "Selfiji",
"search_page_things": "Lietas",
"search_page_view_all_button": "Apskatīt visu",
"search_page_your_activity": "Jūsu aktivitāte",
"search_page_your_map": "Jūsu Karte",
"search_people": "Meklēt cilvēkus", "search_people": "Meklēt cilvēkus",
"search_places": "", "search_places": "",
"search_result_page_new_search_hint": "Jauns Meklējums",
"search_state": "", "search_state": "",
"search_suggestion_list_smart_search_hint_1": "Viedā meklēšana ir iespējota pēc noklusējuma, lai meklētu metadatus, izmantojiet sintaksi",
"search_suggestion_list_smart_search_hint_2": "m:jūsu-meklēšanas-frāze",
"search_timezone": "", "search_timezone": "",
"search_type": "", "search_type": "",
"search_your_photos": "Meklēt Jūsu fotoattēlus", "search_your_photos": "Meklēt Jūsu fotoattēlus",
@@ -776,8 +1177,12 @@
"select_library_owner": "", "select_library_owner": "",
"select_new_face": "", "select_new_face": "",
"select_photos": "Fotoattēlu Izvēle", "select_photos": "Fotoattēlu Izvēle",
"select_user_for_sharing_page_err_album": "Neizdevās izveidot albumu",
"selected": "", "selected": "",
"send_message": "", "send_message": "",
"server_endpoint": "Server Endpoint",
"server_info_box_app_version": "Aplikācijas Versija",
"server_info_box_server_url": "Servera URL",
"server_online": "Serveris tiešsaistē", "server_online": "Serveris tiešsaistē",
"server_stats": "Servera statistika", "server_stats": "Servera statistika",
"server_version": "Servera versija", "server_version": "Servera versija",
@@ -787,15 +1192,84 @@
"set_date_of_birth": "Iestatīt dzimšanas datumu", "set_date_of_birth": "Iestatīt dzimšanas datumu",
"set_profile_picture": "", "set_profile_picture": "",
"set_slideshow_to_fullscreen": "", "set_slideshow_to_fullscreen": "",
"setting_image_viewer_help": "Detaļu skatītājs vispirms ielādē mazo sīktēlu, pēc tam ielādē vidēja lieluma priekšskatījumu (ja iespējots), visbeidzot ielādē oriģinālu (ja iespējots).",
"setting_image_viewer_original_subtitle": "Iespējojiet sākotnējā pilnas izšķirtspējas attēla (liels!) ielādi. Atspējot lai samazinātu datu lietojumu (gan tīklā, gan ierīces kešatmiņā).",
"setting_image_viewer_original_title": "Ielādēt oriģinālo attēlu",
"setting_image_viewer_preview_subtitle": "Iespējojiet vidējas izšķirtspējas attēla ielādēšanu. Atspējojiet vai nu tiešu oriģināla ielādi, vai izmantojiet tikai sīktēlu.",
"setting_image_viewer_preview_title": "Ielādēt priekšskatījuma attēlu",
"setting_image_viewer_title": "Attēli",
"setting_languages_apply": "Lietot",
"setting_languages_subtitle": "Change the app's language",
"setting_languages_title": "Valodas",
"setting_notifications_notify_failures_grace_period": "Paziņot par fona dublēšanas kļūmēm: {}",
"setting_notifications_notify_hours": "{} stundas",
"setting_notifications_notify_immediately": "nekavējoties",
"setting_notifications_notify_minutes": "{} minūtes",
"setting_notifications_notify_never": "nekad",
"setting_notifications_notify_seconds": "{} sekundes",
"setting_notifications_single_progress_subtitle": "Detalizēta augšupielādes progresa informācija par katru aktīvu",
"setting_notifications_single_progress_title": "Rādīt fona dublējuma detalizēto progresu",
"setting_notifications_subtitle": "Paziņojumu preferenču pielāgošana",
"setting_notifications_total_progress_subtitle": "Kopējais augšupielādes progress (pabeigti/kopējie aktīvi)",
"setting_notifications_total_progress_title": "Rādīt fona dublējuma kopējo progresu",
"setting_video_viewer_looping_title": "Cikliski",
"setting_video_viewer_original_video_subtitle": "When streaming a video from the server, play the original even when a transcode is available. May lead to buffering. Videos available locally are played in original quality regardless of this setting.",
"setting_video_viewer_original_video_title": "Force original video",
"settings": "Iestatījumi", "settings": "Iestatījumi",
"settings_require_restart": "Lūdzu, restartējiet Immich, lai lietotu šo iestatījumu",
"settings_saved": "", "settings_saved": "",
"share": "Kopīgot", "share": "Kopīgot",
"share_add_photos": "Pievienot fotoattēlus",
"share_assets_selected": "{} izvēlēti",
"share_dialog_preparing": "Notiek sagatavošana...",
"shared": "Kopīgots", "shared": "Kopīgots",
"shared_album_activities_input_disable": "Komentāri atslēgti",
"shared_album_activity_remove_content": "Vai vēlaties šo aktivitāti dzēst?",
"shared_album_activity_remove_title": "Dzēst Aktivitāti",
"shared_album_section_people_action_error": "Kļūme pametot/noņemot no albuma",
"shared_album_section_people_action_leave": "Noņemt lietotāju no albuma",
"shared_album_section_people_action_remove_user": "Noņemt lietotāju no albuma",
"shared_album_section_people_title": "CILVĒKI",
"shared_by": "", "shared_by": "",
"shared_by_you": "", "shared_by_you": "",
"shared_intent_upload_button_progress_text": "{} / {} Uploaded",
"shared_link_app_bar_title": "Kopīgotas Saites",
"shared_link_clipboard_copied_massage": "Ievietots starpliktuvē",
"shared_link_clipboard_text": "Saite: {}\nParole: {}",
"shared_link_create_error": "Kļūda izveidojot kopīgošanas saiti",
"shared_link_edit_description_hint": "Ievadiet kopīgojuma aprakstu",
"shared_link_edit_expire_after_option_day": "1 diena",
"shared_link_edit_expire_after_option_days": "{} dienas",
"shared_link_edit_expire_after_option_hour": "1 stunda",
"shared_link_edit_expire_after_option_hours": "{} stundas",
"shared_link_edit_expire_after_option_minute": "1 minūte",
"shared_link_edit_expire_after_option_minutes": "{} minūtes",
"shared_link_edit_expire_after_option_months": "{} mēneši",
"shared_link_edit_expire_after_option_year": "{} gads",
"shared_link_edit_password_hint": "Ierakstīt kopīgojuma paroli",
"shared_link_edit_submit_button": "Atjaunināt saiti",
"shared_link_error_server_url_fetch": "Nevarēja ienest servera URL",
"shared_link_expires_day": "Derīguma termiņš beigsies pēc {} dienas",
"shared_link_expires_days": "Derīguma termiņš beigsies pēc {} dienām",
"shared_link_expires_hour": "Derīguma termiņš beigsies pēc {} stundas",
"shared_link_expires_hours": "Derīguma termiņš beigsies pēc {} stundām",
"shared_link_expires_minute": "Derīguma termiņš beigsies pēc {} minūtes",
"shared_link_expires_minutes": "Derīguma termiņš beidzas pēc {} minūtēm",
"shared_link_expires_never": "Derīguma termiņš beigsies ∞",
"shared_link_expires_second": "Derīguma termiņš beigsies pēc {} sekundes",
"shared_link_expires_seconds": "Derīguma termiņš beidzas pēc {} sekundēm",
"shared_link_individual_shared": "Individuāli kopīgots",
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Pārvaldīt Kopīgotās saites",
"shared_links": "Kopīgotās saites", "shared_links": "Kopīgotās saites",
"shared_with_me": "Shared with me",
"sharing": "Kopīgošana", "sharing": "Kopīgošana",
"sharing_page_album": "Kopīgotie albumi",
"sharing_page_description": "Izveidojiet koplietojamus albumus, lai kopīgotu fotoattēlus un videoklipus ar Jūsu tīkla lietotājiem.",
"sharing_page_empty_list": "TUKŠS SARAKSTS",
"sharing_sidebar_description": "", "sharing_sidebar_description": "",
"sharing_silver_appbar_create_shared_album": "Izveidot kopīgotu albumu",
"sharing_silver_appbar_share_partner": "Dalīties ar partneri",
"show_album_options": "Rādīt albuma iespējas", "show_album_options": "Rādīt albuma iespējas",
"show_albums": "Rādīt albumus", "show_albums": "Rādīt albumus",
"show_all_people": "Rādīt visus cilvēkus", "show_all_people": "Rādīt visus cilvēkus",
@@ -846,10 +1320,26 @@
"support_and_feedback": "Atbalsts un atsauksmes", "support_and_feedback": "Atbalsts un atsauksmes",
"swap_merge_direction": "", "swap_merge_direction": "",
"sync": "Sinhronizēt", "sync": "Sinhronizēt",
"sync_albums": "Sync albums",
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
"template": "", "template": "",
"theme": "Dizains", "theme": "Dizains",
"theme_selection": "", "theme_selection": "",
"theme_selection_description": "", "theme_selection_description": "",
"theme_setting_asset_list_storage_indicator_title": "Rādīt krātuves indikatoru uz aktīvu elementiem",
"theme_setting_asset_list_tiles_per_row_title": "Aktīvu skaits rindā ({})",
"theme_setting_colorful_interface_subtitle": "Apply primary color to background surfaces.",
"theme_setting_colorful_interface_title": "Colorful interface",
"theme_setting_image_viewer_quality_subtitle": "Attēlu skatītāja detaļu kvalitātes pielāgošana",
"theme_setting_image_viewer_quality_title": "Attēlu skatītāja kvalitāte",
"theme_setting_primary_color_subtitle": "Pick a color for primary actions and accents.",
"theme_setting_primary_color_title": "Primary color",
"theme_setting_system_primary_color_title": "Use system color",
"theme_setting_system_theme_switch": "Automātisks (sekot sistēmas iestatījumiem)",
"theme_setting_theme_subtitle": "Izvēlieties programmas dizaina iestatījumu",
"theme_setting_three_stage_loading_subtitle": "Trīspakāpju ielāde var palielināt ielādēšanas veiktspēju, bet izraisa ievērojami lielāku tīkla noslodzi",
"theme_setting_three_stage_loading_title": "Iespējot trīspakāpju ielādi",
"they_will_be_merged_together": "Tās tiks apvienotas", "they_will_be_merged_together": "Tās tiks apvienotas",
"time_based_memories": "", "time_based_memories": "",
"timezone": "Laika zona", "timezone": "Laika zona",
@@ -860,7 +1350,15 @@
"total_usage": "Kopējais lietojums", "total_usage": "Kopējais lietojums",
"trash": "Atkritne", "trash": "Atkritne",
"trash_all": "Dzēst Visu", "trash_all": "Dzēst Visu",
"trash_emptied": "Emptied trash",
"trash_no_results_message": "", "trash_no_results_message": "",
"trash_page_delete_all": "Dzēst Visu",
"trash_page_empty_trash_dialog_content": "Vai vēlaties iztukšot savus izmestos aktīvus? Tie tiks neatgriezeniski izņemti no Immich",
"trash_page_info": "Atkritnes vienumi tiks neatgriezeniski dzēsti pēc {} dienām",
"trash_page_no_assets": "Atkritnē nav aktīvu",
"trash_page_restore_all": "Atjaunot Visu",
"trash_page_select_assets_btn": "Atlasīt aktīvus",
"trash_page_title": "Atkritne ({})",
"type": "", "type": "",
"unarchive": "Atarhivēt", "unarchive": "Atarhivēt",
"unfavorite": "Noņemt no izlases", "unfavorite": "Noņemt no izlases",
@@ -879,11 +1377,16 @@
"updated_password": "Parole ir atjaunināta", "updated_password": "Parole ir atjaunināta",
"upload": "Augšupielādēt", "upload": "Augšupielādēt",
"upload_concurrency": "", "upload_concurrency": "",
"upload_dialog_info": "Vai vēlaties veikt izvēlētā(-o) aktīva(-u) dublējumu uz servera?",
"upload_dialog_title": "Augšupielādēt Aktīvu",
"upload_status_duplicates": "Dublikāti", "upload_status_duplicates": "Dublikāti",
"upload_status_errors": "Kļūdas", "upload_status_errors": "Kļūdas",
"upload_status_uploaded": "Augšupielādēts", "upload_status_uploaded": "Augšupielādēts",
"upload_to_immich": "Upload to Immich ({})",
"uploading": "Uploading",
"url": "", "url": "",
"usage": "Lietojums", "usage": "Lietojums",
"use_current_connection": "use current connection",
"user": "Lietotājs", "user": "Lietotājs",
"user_id": "Lietotāja ID", "user_id": "Lietotāja ID",
"user_purchase_settings_description": "Pirkuma pārvaldība", "user_purchase_settings_description": "Pirkuma pārvaldība",
@@ -892,9 +1395,15 @@
"users": "Lietotāji", "users": "Lietotāji",
"utilities": "Rīki", "utilities": "Rīki",
"validate": "", "validate": "",
"validate_endpoint_error": "Please enter a valid URL",
"variables": "", "variables": "",
"version": "Versija", "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_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_announcement_overlay_release_notes": "informācija par laidienu",
"version_announcement_overlay_text_1": "Sveiks draugs, ir jauns izlaidums no",
"version_announcement_overlay_text_2": "lūdzu, veltiet laiku, lai apmeklētu",
"version_announcement_overlay_text_3": " un pārliecinieties, vai docker-compose un .env iestatījumi ir atjaunināti, lai novērstu jebkādas nepareizas konfigurācijas, īpaši, ja izmantojat WatchTower vai mehānismu, kas automātiski veic servera lietojumprogrammas atjaunināšanu.",
"version_announcement_overlay_title": "Pieejama jauna servera versija 🎉",
"version_history": "Versiju vēsture", "version_history": "Versiju vēsture",
"version_history_item": "{version} uzstādīta {date}", "version_history_item": "{version} uzstādīta {date}",
"video": "Videoklips", "video": "Videoklips",
@@ -906,11 +1415,16 @@
"view_links": "", "view_links": "",
"view_next_asset": "", "view_next_asset": "",
"view_previous_asset": "", "view_previous_asset": "",
"viewer_remove_from_stack": "Noņemt no Steka",
"viewer_stack_use_as_main_asset": "Izmantot kā Galveno Aktīvu",
"viewer_unstack": "At-Stekot",
"waiting": "Gaida", "waiting": "Gaida",
"week": "Nedēļa", "week": "Nedēļa",
"welcome_to_immich": "", "welcome_to_immich": "",
"wifi_name": "WiFi Name",
"year": "Gads", "year": "Gads",
"years_ago": "Pirms {years, plural, one {# gada} other {# gadiem}}", "years_ago": "Pirms {years, plural, one {# gada} other {# gadiem}}",
"yes": "Jā", "yes": "Jā",
"your_wifi_name": "Your WiFi name",
"zoom_image": "Pietuvināt attēlu" "zoom_image": "Pietuvināt attēlu"
} }

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