Compare commits

...

96 Commits

Author SHA1 Message Date
Alex
2793086c03 chore: test fix concurrency database 2025-09-11 13:27:08 -05:00
shenlong
722a464e23 fix: android background backups (#21795)
* upload using dart client

* add connectivity api

* respect backup network setting

* comment as to why we need to wait for setForegroundAsync call

* log assets skipped due to network constraint

* dynamic spawning -> false

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-09-11 12:01:15 -05:00
bo0tzz
39c1ebf698 fix: proper triggers for weblate checks (#21818) 2025-09-11 14:31:02 +00:00
Jason Rasmussen
ef6e4f4699 docs: update tag details (#21815) 2025-09-11 10:09:18 -04:00
bo0tzz
0700e61d20 fix: trigger for weblate checks (#21816) 2025-09-11 14:07:36 +00:00
trommegutten
7e6cd48783 docs: improve and clarify XMP sidecar behavior (#20334)
* docs: improve and clarify XMP sidecar behavior

- Simplified and reorganized the documentation for XMP sidecars
- Clearly separated CLI import vs. external library behavior
- Clarified what metadata fields are stored in the database
- Documented filename rules and storage behavior
- Explained write-back behavior, including permission requirements

* Clarify sidecar write-back behavior for external libraries

Updated documentation to reflect that Immich does not write metadata to sidecar files in external libraries unless the mount is writable.

Mentions silent fail behavior as described in Issue #10538.

* Update xmp-sidecars.md

* Refactor section 1: clarify XMP fields Immich reads and writes

- Rewrote section 1 with a simplified 3-column table: Metadata · Writes to · Reads from
- Corrected date field logic with prioritized read order
- Clarified that Immich only updates fields that have changed
- Removed incorrect mention of dc:title

* docs: clarify tag reading priority (TagsList, HierarchicalSubject, IPTC:Keywords)

Updated the documentation for tag metadata extraction to clarify the prioritized order in which Immich reads tags from imported media:

1. digiKam:TagsList
2. lr:HierarchicalSubject
3. IPTC:Keywords

This reflects the actual logic used in the getTagList()
2025-09-11 14:00:53 +00:00
Daniel Dietzler
e524c59560 chore: @danieldietzler web codeowners (#21813)
I don't see web PRs otherwise
2025-09-11 14:28:20 +02:00
Jason Rasmussen
b4c72fb609 fix(server): validate token permission (#21802) 2025-09-11 08:09:58 -04:00
bo0tzz
74e14b6495 chore: 10 minute timeout for translations merge (#21810) 2025-09-11 13:22:25 +02:00
Weblate (bot)
03207a13ec chore(web): update translations (#21624)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/be/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/eu/
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/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/mr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sq/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Andrea Toska <toskaandrea@gmail.com>
Co-authored-by: Aravinth <aravinth@tuta.io>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: DevServs <bonov@mail.ru>
Co-authored-by: FarSniper <ozmatlik@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Gustavo de León <alfonso.gus.deleon@gmail.com>
Co-authored-by: Handkep <paulus.handke@gmail.com>
Co-authored-by: Hudio Hizari <hhizari@gmail.com>
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com>
Co-authored-by: Ivan Amela Caldeiro <ivanamca01@gmail.com>
Co-authored-by: Ivan Dimitrov <idimitrov08@gmail.com>
Co-authored-by: JPar99 <github.wad969@passmail.com>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: Macgyver <macgyver@users.noreply.hosted.weblate.org>
Co-authored-by: Marcelo Popper Costa <marcelo_popper@hotmail.com>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Oleks Povar <acc@zvirja.com>
Co-authored-by: Pajtim Rexhepi <pajtim.rexhepi@gmail.com>
Co-authored-by: Red Cyclops <shown-bleep-spiffy@duck.com>
Co-authored-by: Runskrift <anders@rimfrost.nu>
Co-authored-by: Santiago <santiwever@hotmail.com>
Co-authored-by: Saurabh Nandedkar <extremophilarum@gmail.com>
Co-authored-by: Sebastian <sebastiankiwidk@gmail.com>
Co-authored-by: Sergey Katsubo <skatsubo@gmail.com>
Co-authored-by: Simob98 <simobertuzzi98@gmail.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: TV Box <realceday.tvbox@gmail.com>
Co-authored-by: Taiki M <vexingly-many-mace@duck.com>
Co-authored-by: Tomi Pöyskö <tomi.poysko@gmail.com>
Co-authored-by: Urko Perez Azkarragaurizar <urkoperez16@gmail.com>
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org>
Co-authored-by: Vegard Fladby <vegard@fladby.org>
Co-authored-by: anton garcias <isaga.percompartir@gmail.com>
Co-authored-by: gablilli <gabriele.lilli0511@gmail.com>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: shiuh67 <shiuh.cheng@gmail.com>
Co-authored-by: Максим Горпиніч <gorpinicmaksim0@gmail.com>
Co-authored-by: Яўген <lzref@protonmail.com>
2025-09-11 10:28:48 +00:00
bo0tzz
529b8c285d fix: only run weblate checks on review (#21809) 2025-09-11 10:20:49 +00:00
bo0tzz
1213f6df10 fix: use correct bot in weblate-checks (#21808) 2025-09-11 12:02:47 +02:00
bo0tzz
9e8132c363 fix: merge-translations workflow cleanup (#21789) 2025-09-11 08:27:49 +00:00
Alex
2d2673c114 fix: repeat timeline migration for first time user (#21794) 2025-09-10 16:27:00 -05:00
Alex
56e5236a39 chore: clean up background tasks (#21785) 2025-09-10 16:17:37 -05:00
Jason Rasmussen
8529f92ebc fix(web): map in album shared link (#21793) 2025-09-10 20:19:43 +00:00
Jason Rasmussen
761ac074c9 fix(web): asset refresh (#21788) 2025-09-10 20:08:15 +00:00
Jason Rasmussen
7e377d3e42 chore: deprecate (#21791) 2025-09-10 15:35:41 -04:00
bo0tzz
f7d9215464 fix: bad scripting in merge-translations (#21787) 2025-09-10 18:58:22 +00:00
Mert
9af44fbd69 chore(deps): update base image to trixie (#21786)
bump base image
2025-09-10 18:53:18 +00:00
renovate[bot]
170306af1a fix(deps): update machine-learning (#21704)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-10 14:51:11 -04:00
bo0tzz
417d3bbf50 fix: remove invalid read syntax (#21684) 2025-09-10 18:44:23 +00:00
shenlong
e239b8d2fa fix: android crash on app pause (#21768)
* revert service locks

* rename backgroundWorkerFgServiceProvider

* refactor: parallel background worker init (#21769)

* refactor: parallel background worker init

* fix: hashing not running from the background engine (#21773)

* init and dispose workmanager from background engine

* log message contend

---------

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

---------

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

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-09-10 17:15:42 +00:00
Alex
2c7b980eed chore: make beta timeline the default (#21751)
* chore: make beta timeline the default

* fix: logic

* awaiting

* refactor
2025-09-10 12:11:46 -05:00
Alex
9a5a3c0a1d chore: refactor life cycle events (#21781) 2025-09-10 11:50:31 -05:00
Yaros
027dab1487 fix(web): memory viewer arrow navigation (#19400)
* fix(web): memory viewer jumps down on arrow keys

* fix pnpm lockfile

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-09-10 09:47:38 -04:00
Noel S
e18e4c5962 fix(mobile): Change read-only mode activation method to remove double click lag (#21743)
* Change activation method to long press

* Update text to new method
2025-09-10 08:39:36 -05:00
shenlong
67a8cab286 feat: resurrect advanced info (#21633)
* feat: resurrect advanced info

* display null values as well

* add exif details

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-09-10 08:38:53 -05:00
Jason Rasmussen
39eee6a634 fix: welcome email password (#21732) 2025-09-10 09:11:42 -04:00
renovate[bot]
ee98e69097 chore(deps): update docker.io/valkey/valkey:8-bookworm docker digest to fea8b3e (#21281)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-10 08:36:44 -04:00
renovate[bot]
41c1d4d44b chore(deps): update ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0 docker digest to 8d292bd (#21287)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-10 08:36:27 -04:00
Sergey Katsubo
b21084b851 fix(server): correct immich-cli symlink in Immich docker image (#21318)
Fix immich-cli symlink in Immich docker image
2025-09-10 08:35:55 -04:00
Oleksandr Povar
8bf45eb718 chore: update README (#21718)
Enhance README UA translation
2025-09-10 08:28:01 -04:00
renovate[bot]
9d3ca3ad3f chore(deps): update dependency vite to v7.1.5 [security] (#21748)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-10 08:23:33 -04:00
Sergey Katsubo
0090b9db4a fix(docs): fix the SQL query for finding assets with missing thumbnails (#21770)
Fix the SQL query for missing thumbnails in docs
2025-09-10 08:22:55 -04:00
Jason Rasmussen
bee0ae430a fix(web): map popup accessibility (#21759) 2025-09-10 08:17:58 -04:00
Jason Rasmussen
cc08ebdf80 fix(web): website frozen after modal closes (#21752) 2025-09-10 08:17:41 -04:00
Jason Rasmussen
71578b76a7 chore: remove typeorm dependency (#21754) 2025-09-10 08:17:21 -04:00
Jason Rasmussen
8e5d52abbb fix(web): transparent background color (#21747) 2025-09-10 08:15:57 -04:00
Jason Rasmussen
e52cc259d5 fix(web): cancel uploads on logout (#21760) 2025-09-10 08:15:03 -04:00
Mārtiņš Bruņenieks
00c88b2636 docs: add community immich drop uploader project (#21775) 2025-09-10 12:07:58 +00:00
Jason Rasmussen
e95096d14f fix: prefer Creation Date over Create Date (#21756) 2025-09-09 22:58:46 -04:00
David Koňařík
4c918254b9 fix: use relative path in start.sh (#20434)
Dehardcode path to Immich in start.sh
2025-09-10 02:02:23 +00:00
bo0tzz
b97d73d7a7 fix: handle missing checkbox in close-dupes (#21689) 2025-09-09 21:46:59 -04:00
per-review
2801b0953d docs: be explicit about which container exposes metrics (#20424)
* Be explicit about which container exposes metrics

* Update docs/docs/features/monitoring.md

Co-authored-by: bo0tzz <git@bo0tzz.me>

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: bo0tzz <git@bo0tzz.me>
2025-09-10 01:39:15 +00:00
Johann
7a1c45c364 feat(web): use timeline in geolocation manager (#21492) 2025-09-09 21:26:26 -04:00
bo0tzz
5acd6b70d0 feat: add button to unpause all queues (#21685)
* feat: add button to unpause all queues

* fix: const

* chore: simplify

* chore: pr feedback

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2025-09-10 01:06:36 +00:00
renovate[bot]
edaedca03f chore(deps): update github-actions (#21295)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-09 21:02:27 -04:00
Ben McCann
7b3e1037b6 chore: remove unused dependencies (#21736) 2025-09-09 20:38:17 -04:00
renovate[bot]
27bc8eba7b chore(deps): update terraform cloudflare to v4.52.3 (#21701)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-09 10:18:26 +01:00
Sergey Katsubo
23fb2e0fae chore(server): fix logger context in StorageCore (#21534)
* Fix logging context in StorageCore

* Revert "Fix logging context in StorageCore"

This reverts commit 0aa540afd1.

* Fix logging context in StorageCore - one line change
2025-09-08 17:28:40 -04:00
Alex
59accbf32a fix: prevent isolate deadlock (#21692) 2025-09-08 19:18:13 +00:00
shenlong
059a0e8aa8 feat: sync AuthUserV1 (#21565)
* feat: sync AuthUserV1

* migration

* chore: fix analyze

* fix user updatedAt check

* fix: auth user sync query

* generate sql

* bump schema version and update migration

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-09-08 14:00:10 -05:00
bo0tzz
6a55c36762 fix: print errors in weblate merge job (#21683) 2025-09-08 17:37:10 +02:00
bo0tzz
c0bff4b493 fix: pass repo to gh cli in weblate checks job (#21681) 2025-09-08 17:32:44 +02:00
shenlong
fd4c2acde8 feat: handle SyncResetV1 (#20732)
* feat: handle SyncResetV1

* auto retry on reset and handle SyncCompleteV1

* fix tests

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-09-08 09:48:26 -05:00
bo0tzz
5acf909235 fix: gh cli needs explicit GH_TOKEN env var in gha (#21680) 2025-09-08 14:48:08 +00:00
bo0tzz
fb1458c720 fix: pre-job branch scope on weblate checks job (#21679) 2025-09-08 16:30:28 +02:00
Peter Buga
255dabc239 fix(server): valid backups with DB_URL env variable config (#21669) 2025-09-08 14:29:34 +00:00
Mert
27751f8fd4 fix(server): remove pcm from default accepted codecs (#21655)
remove pcm from default
2025-09-08 09:26:28 -05:00
bo0tzz
72ffa37dd9 feat: workflow for automated translations merge (#21639)
* feat: workflow for automated translations merge

* feat: dismiss review on merge failure

* chore: parameterize weblate URL

* fix: remove unnecessary CHANGES_REQUESTED review flow

* feat: leave weblate locked on failures

* chore: remove unnecessary merge timeout comment

The review dismissal already communicates this

* chore: remove todo

* feat: save api call

* fix: quotes
2025-09-08 09:25:31 -05:00
Jason Rasmussen
5a7042364b feat: add partner create endpoint (#21625) 2025-09-05 17:59:11 -04:00
github-actions
db0ea0f3a8 chore: version v1.141.1 2025-09-05 19:44:39 +00:00
Alex
88c0243a20 chore: robust isolation tasks coordination (#21605)
* chore: robust isolation tasks coordination

* give more time for database transaction to clean up

* chore: clean up logs

* chore: clean up logs

* fix: logs
2025-09-05 19:39:38 +00:00
Alex
3a29522df6 fix: memory not getting refreshed on new day (#21623) 2025-09-05 19:32:41 +00:00
bo0tzz
50eae23f3a fix: use specific uv version in ML dockerfile (#21611) 2025-09-05 20:15:29 +02:00
Weblate (bot)
95419750bb chore(web): update translations (#21464)
Co-authored-by: AbuKareem Tuffaha <abukareem.tuffaha@gmail.com>
Co-authored-by: Dawider10 <dawider110@gmail.com>
Co-authored-by: DevServs <bonov@mail.ru>
Co-authored-by: Felipe Garcia <garcia.o.felipe@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Gustavo de León <alfonso.gus.deleon@gmail.com>
Co-authored-by: Hyouhyan <hyouhyan@hyouhyan.com>
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com>
Co-authored-by: Isfan Nur Fauzi <isfannurfauzi@gmail.com>
Co-authored-by: Ivan Dimitrov <idimitrov08@gmail.com>
Co-authored-by: JPar99 <github.wad969@passmail.com>
Co-authored-by: Joseph <josephlegrand33+hosted.weblate.org@gmail.com>
Co-authored-by: José Rodrigues <j.rodrigues.pcmedic@gmail.com>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Leigh van der merwe <palitu822@gmail.com>
Co-authored-by: Lenny Angst <lenny@familie-angst.ch>
Co-authored-by: Leon Fertig <leon.fertig2004@gmail.com>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Mikko Asikainen <mikko@asikainen.com>
Co-authored-by: Murad Bashirov <carlsonmu@gmail.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Phantom0174 <darrenhsiou@gmail.com>
Co-authored-by: PontusÖsterlindh <pontus@osterlindh.com>
Co-authored-by: Sergey Katsubo <skatsubo@gmail.com>
Co-authored-by: Sneha George <snehavg94@gmail.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Tage Lauritsen <tage@tunenet.dk>
Co-authored-by: Tomi Pöyskö <tomi.poysko@gmail.com>
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org>
Co-authored-by: Vegard Fladby <vegard@fladby.org>
Co-authored-by: Xo <xocodokie@users.noreply.hosted.weblate.org>
Co-authored-by: albanobattistella <albano_battistella@hotmail.com>
Co-authored-by: anton garcias <isaga.percompartir@gmail.com>
Co-authored-by: czlevi7 <czlevi7@gmail.com>
Co-authored-by: gablilli <gabriele.lilli0511@gmail.com>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: Максим Горпиніч <gorpinicmaksim0@gmail.com>
2025-09-05 19:53:36 +02:00
renovate[bot]
5fb858a865 chore(deps): update node.js to v22.19.0 (#21509)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 08:43:58 -04:00
Jason Rasmussen
18084a49ec chore: mise tasks (#21597) 2025-09-04 18:10:36 -04:00
github-actions
f107cb044a chore: version v1.141.0 2025-09-04 19:42:02 +00:00
renovate[bot]
f4e7ea47a6 chore(deps): update dependency @types/node to ^22.18.0 (#21506)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-04 21:26:06 +02:00
Riccardo Ruspoli
8747fc4935 fix(server): consider asset creation date when EXIF is missing (#21586)
* fix(server): fallback to asset.fileCreatedAt when EXIF is missing

* merge main

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-09-04 19:18:12 +00:00
Alex
287fa79d75 fix: remove unnecessary call to create remote album (#21599) 2025-09-04 14:11:51 -05:00
Alex
bcfb5bee1f feat: album info sync (#21103)
* wip

* album creation

* fix: album api repository no invalidating after logging out

* add linkedRemoteAlbumId column and migration

* link/unlink remote album

* logic to find and add new assets to album

* pr feedback

* add toggle option to backup option page

* refactor: provider > service

* rename

* Handle page pop manually

* UI feedback for user creation and sync linked album

* uncomment migration

* remove unused method
2025-09-04 18:44:10 +00:00
Yaros
538263dc38 fix(mobile): location button map beta timeline (#21590)
fix(mobile): location button map
2025-09-04 13:26:16 -05:00
Maksim
51aec1e93d fix(mobile): Correction of image creation date by using mtime instead… (#21508)
* fix(mobile): Correction of image creation date by using mtime instead of ctime.

* use the timestamps from the asset for uploads

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-09-04 18:26:02 +00:00
Mert
53825cc3d6 chore(deps): bump sharp to 0.34.3 (#21596)
* bump sharp to 0.34.3

* set unlimited
2025-09-04 13:23:13 -05:00
Jason Rasmussen
6e7c2817a3 fix: asset upload metadata validation (#21594) 2025-09-04 13:22:01 -05:00
bo0tzz
7bd79b551c feat: use mise for core dev tools (#21566)
* feat: use mise for core tools

* feat: mise handle dart

* feat: install dcm through mise

* fix: enable experimental in mise config

* feat: use mise.lock

* chore: always pin mise use

---------

Co-authored-by: bwees <brandonwees@gmail.com>
2025-09-04 12:58:42 -04:00
shenlong
5fe954b3c9 fix: use lock to synchronise foreground and background backup (#21522)
* fix: use lock to synchronise foreground and background backup

# Conflicts:
#	mobile/lib/domain/services/background_worker.service.dart
#	mobile/lib/platform/background_worker_api.g.dart
#	mobile/pigeon/background_worker_api.dart

* add timeout to the splash-screen acquire lock

* fix: null check on created date

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-09-04 11:44:33 -05:00
Jason Rasmussen
7f81a5bd6f fix: sidecar check job (#21312) 2025-09-04 16:23:58 +00:00
Arthur Normand
37a79292c0 feat: view similar photos (#21108)
* Enable filteing by example

* Drop `@GenerateSql` for `getEmbedding`?

* Improve error message

* PR Feedback

* Sort en.json

* Add SQL

* Fix lint

* Drop test that is no longer valid

* Fix i18n file sorting

* Fix TS error

* Add a `requireAccess` before pulling the embedding

* Fix decorators

* Run `make open-api`

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-09-04 09:22:09 -05:00
Brandon Wees
bf6211776f fix: retain filter and sort options when pulling to refresh (#21452)
* fix: retain filter and sort options when pulling to refresh

* chore: use classes to manage state

* chore: format

* chore: refactor to keep local state of filter/sorted albums instead of a global filteredAlbums

* fix: keep sort when page is navigated away and returned

* chore: lint

* chore: format

why is autoformat not working

* fix: default sort direction state

* fix: search clears sorting

we have to cache our sorted albums since sorting is very computationally expensive and cannot be run on every keystroke. For searches, instead of pulling from the list of albums, we now pull from the cached sorted list and then filter which is then shown to the user
2025-09-04 09:08:17 -05:00
waclaw66
6c178a04dc fix(mobile): pinch + move scale (#21332)
* fix: pinch + move scale

* added lost changes from #18744
2025-09-04 09:01:39 -05:00
Snowknight26
036d314cb6 fix(web): Make Manage location utility header responsive (#21480)
* fix(web): Make Manage location utility header responsive

* Consolidate <p> into <Text>
2025-09-04 08:59:26 -05:00
Noel S
1fc5da398a fix(mobile): Hide system UI when entering immersive mode in asset viewer (#21539)
Implement hiding system ui in asset viewer
2025-09-04 08:57:34 -05:00
Sudheer Reddy Puthana
4d84338086 fix(mobile): readonly mode fixes (#21545)
* fix: Enables videotimeline in readonly mode

- Enables only the video controls in the bottom bar when readonlyMode is enabled.
- Fixes the message on the app profile bar when readOnlyMode is enabled **but** betaTimeline is not enabled.

Fixes https://github.com/immich-app/immich/issues/21441

Signed-off-by: Sudheer Puthana <Sud-Puth@users.noreply.github.com>

* cleanup bottom bar handling

---------

Signed-off-by: Sudheer Puthana <Sud-Puth@users.noreply.github.com>
Co-authored-by: bwees <brandonwees@gmail.com>
2025-09-04 08:50:38 -05:00
Yaros
0ac49b00ee feat(mobile): scrubber haptics (beta timeline) (#21351)
* feat(mobile): scrubber haptics beta timeline

* changed haptic to selectionClick
2025-09-04 08:47:16 -05:00
Mert
e427778a96 fix(mobile): pause image loading on inactive state (#21543)
* pause image loading

* make thumbhashes wait too
2025-09-04 08:40:38 -05:00
Pedro Simão
b82e29fbb4 feat(mobile): add to albums from existing albums (#21554)
* feat(mobile): add to albums from existing albums

* formatted files

* used the new t() method for translation

* removed unused import
2025-09-04 08:39:10 -05:00
shenlong
ff19aea4ac fix: keyboard not dismissed in places page (#21583)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-09-04 08:38:44 -05:00
Jason Rasmussen
28179a3a1d feat: audit cleanup (#21567) 2025-09-03 22:50:27 +00:00
Min Idzelis
af1e18d07e fix: docker upload_location perm fix for dev (#21501) 2025-09-03 18:27:30 +01:00
shenlong
270a0ff986 chore: log name and createdAt of asset on hash failures (#21546)
* chore: log name and createdAt of asset on hash failures

* add album name to hash failure logs

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-09-03 09:58:03 -05:00
shenlong
9d3f10372d refactor: simplify background worker (#21558)
* chore: log hash starting

* chore: android - bump the min worker delay

* remove local sync only task and always enqueue background workers

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-09-03 09:57:30 -05:00
bo0tzz
2f1385a236 chore: request LLM disclosure in PR template (#21553)
Suggestions for different wording/placeholder are welcome
2025-09-03 09:11:24 -05:00
333 changed files with 24349 additions and 5813 deletions

2
.github/.nvmrc vendored
View File

@@ -1 +1 @@
22.18.0
22.19.0

View File

@@ -34,3 +34,7 @@ The `/api/something` endpoint is now `/api/something-else`
- [ ] I have followed naming conventions/patterns in the surrounding code
- [ ] All code in `src/services/` uses repositories implementations for database calls, filesystem operations, etc.
- [ ] All code in `src/repositories/` is pretty basic/simple and does not have any immich specific logic (that belongs in `src/services/`)
## Please describe to which degree, if any, an LLM was used in creating this pull request.
...

View File

@@ -35,22 +35,21 @@ jobs:
needs: [get_body, should_run]
if: ${{ needs.should_run.outputs.should_run == 'true' }}
container:
image: yshavit/mdq:0.8.0@sha256:c69224d34224a0043d9a3ee46679ba4a2a25afaac445f293d92afe13cd47fcea
image: yshavit/mdq:0.9.0@sha256:4399483ca857fb1a7ed28a596f754c7373e358647de31ce14b79a27c91e1e35e
outputs:
json: ${{ steps.get_checkbox.outputs.json }}
checked: ${{ steps.get_checkbox.outputs.checked }}
steps:
- id: get_checkbox
env:
BODY: ${{ needs.get_body.outputs.body }}
# TODO: We should detect if the checkbox is missing entirely and also close_and_comment in that case.
run: |
JSON=$(echo "$BODY" | base64 -d | /mdq --output json '# I have searched | - [?] Yes')
echo "json=$JSON" >> $GITHUB_OUTPUT
CHECKED=$(echo "$BODY" | base64 -d | /mdq --output json '# I have searched | - [?] Yes' | jq '.items[0].list[0].checked // false')
echo "checked=$CHECKED" >> $GITHUB_OUTPUT
close_and_comment:
runs-on: ubuntu-latest
needs: [get_checkbox_json, should_run]
if: ${{ needs.should_run.outputs.should_run == 'true' && !fromJSON(needs.get_checkbox_json.outputs.json).items[0].list[0].checked }}
if: ${{ needs.should_run.outputs.should_run == 'true' && needs.get_checkbox_json.outputs.checked != 'true' }}
permissions:
issues: write
discussions: write

View File

@@ -50,7 +50,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@df559355d593797519d70b90fc8edd5db049e7a2 # v3.29.9
uses: github/codeql-action/init@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -63,7 +63,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@df559355d593797519d70b90fc8edd5db049e7a2 # v3.29.9
uses: github/codeql-action/autobuild@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@@ -76,6 +76,6 @@ jobs:
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@df559355d593797519d70b90fc8edd5db049e7a2 # v3.29.9
uses: github/codeql-action/analyze@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0
with:
category: '/language:${{matrix.language}}'

View File

@@ -20,7 +20,7 @@ jobs:
run: echo 'The triggering workflow did not succeed' && exit 1
- name: Get artifact
id: get-artifact
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
with:
script: |
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
@@ -38,7 +38,7 @@ jobs:
return { found: true, id: matchArtifact.id };
- name: Determine deploy parameters
id: parameters
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
env:
HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
with:
@@ -114,7 +114,7 @@ jobs:
- name: Load parameters
id: parameters
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
env:
PARAM_JSON: ${{ needs.checks.outputs.parameters }}
with:
@@ -125,7 +125,7 @@ jobs:
core.setOutput("shouldDeploy", parameters.shouldDeploy);
- name: Download artifact
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
env:
ARTIFACT_JSON: ${{ needs.checks.outputs.artifact }}
with:

View File

@@ -45,7 +45,7 @@ jobs:
message: 'chore: fix formatting'
- name: Remove label
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
if: always()
with:
script: |

105
.github/workflows/merge-translations.yml vendored Normal file
View File

@@ -0,0 +1,105 @@
name: Merge translations
on:
workflow_call:
workflow_dispatch:
permissions: {}
env:
WEBLATE_HOST: 'https://hosted.weblate.org'
WEBLATE_COMPONENT: 'immich/immich'
jobs:
merge:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- name: Find translation PR
id: find_pr
env:
GH_TOKEN: ${{ github.token }}
run: |
set -euo pipefail
PR=$(gh pr list --repo $GITHUB_REPOSITORY --author weblate --json number,mergeable)
echo "$PR"
PR_NUMBER=$(echo "$PR" | jq '
if length == 1 then
.[0].number
else
error("Expected exactly 1 entry, got \(length)")
end
' 2>&1) || exit 1
echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_OUTPUT
echo "Selected PR $PR_NUMBER"
if ! echo "$PR" | jq -e '.[0].mergeable == "MERGEABLE"'; then
echo "PR is not mergeable"
exit 1
fi
- name: Generate a token
id: generate_token
uses: actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.1
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Lock weblate
env:
WEBLATE_TOKEN: ${{ secrets.WEBLATE_TOKEN }}
run: |
curl --fail-with-body -X POST -H "Authorization: Token $WEBLATE_TOKEN" "$WEBLATE_HOST/api/components/$WEBLATE_COMPONENT/lock/" -d lock=true
- name: Commit translations
env:
WEBLATE_TOKEN: ${{ secrets.WEBLATE_TOKEN }}
run: |
curl --fail-with-body -X POST -H "Authorization: Token $WEBLATE_TOKEN" "$WEBLATE_HOST/api/components/$WEBLATE_COMPONENT/repository/" -d operation=commit
curl --fail-with-body -X POST -H "Authorization: Token $WEBLATE_TOKEN" "$WEBLATE_HOST/api/components/$WEBLATE_COMPONENT/repository/" -d operation=push
- name: Merge PR
id: merge_pr
env:
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
PR_NUMBER: ${{ steps.find_pr.outputs.PR_NUMBER }}
run: |
set -euo pipefail
REVIEW_ID=$(gh api -X POST "repos/$GITHUB_REPOSITORY/pulls/$PR_NUMBER/reviews" --field event='APPROVE' --field body='Automatically merging translations PR' \
| jq '.id')
echo "REVIEW_ID=$REVIEW_ID" >> $GITHUB_OUTPUT
gh pr merge "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --auto --squash
- name: Wait for PR to merge
env:
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
PR_NUMBER: ${{ steps.find_pr.outputs.PR_NUMBER }}
REVIEW_ID: ${{ steps.merge_pr.outputs.REVIEW_ID }}
run: |
# So we clean up no matter what
set +e
for i in {1..100}; do
if gh pr view "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --json state | jq -e '.state == "MERGED"'; then
echo "PR merged"
exit 0
else
echo "PR not merged yet, waiting..."
sleep 6
fi
done
echo "PR did not merge in time"
gh api -X PUT "repos/$GITHUB_REPOSITORY/pulls/$PR_NUMBER/reviews/$REVIEW_ID/dismissals" --field message='Merge attempt timed out' --field event='DISMISS'
gh pr merge "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --disable-auto
exit 1
- name: Unlock weblate
env:
WEBLATE_TOKEN: ${{ secrets.WEBLATE_TOKEN }}
run: |
curl --fail-with-body -X POST -H "Authorization: Token $WEBLATE_TOKEN" "$WEBLATE_HOST/api/components/$WEBLATE_COMPONENT/lock/" -d lock=false

View File

@@ -24,6 +24,15 @@ concurrency:
permissions: {}
jobs:
merge_translations:
uses: ./.github/workflows/merge-translations.yml
permissions:
pull-requests: write
secrets:
PUSH_O_MATIC_APP_ID: ${{ secrets.PUSH_O_MATIC_APP_ID }}
PUSH_O_MATIC_APP_KEY: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
WEBLATE_TOKEN: ${{ secrets.WEBLATE_TOKEN }}
bump_version:
runs-on: ubuntu-latest
outputs:

View File

@@ -24,7 +24,7 @@ jobs:
permissions:
pull-requests: write
steps:
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
- uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
with:
script: |
github.rest.issues.removeLabel({

View File

@@ -129,7 +129,7 @@ jobs:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload SARIF file
uses: github/codeql-action/upload-sarif@df559355d593797519d70b90fc8edd5db049e7a2 # v3.29.9
uses: github/codeql-action/upload-sarif@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0
with:
sarif_file: results.sarif
category: zizmor

View File

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

View File

@@ -3,16 +3,25 @@ name: Weblate checks
on:
pull_request:
branches: [main]
types:
- opened
- synchronize
- ready_for_review
- auto_merge_enabled
- auto_merge_disabled
permissions: {}
env:
BOT_NAME: immich-push-o-matic
jobs:
pre-job:
runs-on: ubuntu-latest
permissions:
contents: read
outputs:
should_run: ${{ steps.found_paths.outputs.i18n == 'true' && github.head_ref != 'chore/translations'}}
should_run: ${{ steps.found_paths.outputs.i18n == 'true' }}
steps:
- name: Checkout code
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
@@ -32,19 +41,15 @@ jobs:
permissions: {}
if: ${{ needs.pre-job.outputs.should_run == 'true' }}
steps:
- name: Check weblate lock
- name: Bot review status
env:
PR_NUMBER: ${{ github.event.pull_request.number || github.event.pull_request_review.pull_request.number }}
GH_TOKEN: ${{ github.token }}
run: |
if [[ "false" = $(curl https://hosted.weblate.org/api/components/immich/immich/lock/ | jq .locked) ]]; then
exit 1
fi
- name: Find Pull Request
uses: juliangruber/find-pull-request-action@952b3bb1ddb2dcc0aa3479e98bb1c2d1a922f096 # v1.10.0
id: find-pr
with:
branch: chore/translations
- name: Fail if existing weblate PR
if: ${{ steps.find-pr.outputs.number }}
run: exit 1
# Then check for APPROVED by the bot, if absent fail
gh pr view "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --json reviews | jq -e '.reviews | map(select(.author.login == env.BOT_NAME and .state == "APPROVED")) | length > 0' \
|| (echo "The push-o-matic bot has not approved this PR yet" && exit 1)
success-check-lock:
name: Weblate Lock Check Success
needs: [enforce-lock]

2
.gitignore vendored
View File

@@ -25,3 +25,5 @@ mobile/ios/fastlane/report.xml
vite.config.js.timestamp-*
.pnpm-store
.devcontainer/library
.devcontainer/.env*

View File

@@ -1,5 +1,6 @@
/.github/ @bo0tzz
/docker/ @bo0tzz
/server/ @danieldietzler
/web/ @danieldietzler
/machine-learning/ @mertalev
/e2e/ @danieldietzler

View File

@@ -10,14 +10,14 @@ dev-update: prepare-volumes
dev-scale: prepare-volumes
@trap 'make dev-down' EXIT; COMPOSE_BAKE=true docker compose -f ./docker/docker-compose.dev.yml up --build -V --scale immich-server=3 --remove-orphans
dev-docs: prepare-volumes
dev-docs:
npm --prefix docs run start
.PHONY: e2e
e2e: prepare-volumes
e2e:
@trap 'make e2e-down' EXIT; COMPOSE_BAKE=true docker compose -f ./e2e/docker-compose.yml up --remove-orphans
e2e-update: prepare-volumes
e2e-update:
@trap 'make e2e-down' EXIT; COMPOSE_BAKE=true docker compose -f ./e2e/docker-compose.yml up --build -V --remove-orphans
e2e-down:
@@ -73,6 +73,8 @@ define safe_chown
if chown $(2) $(or $(UID),1000):$(or $(GID),1000) "$(1)" 2>/dev/null; then \
true; \
else \
STATUS=$$?; echo "Exit code: $$STATUS $(1)"; \
echo "$$STATUS $(1)"; \
echo "Permission denied when changing owner of volumes and upload location. Try running 'sudo make prepare-volumes' first."; \
exit 1; \
fi;
@@ -83,11 +85,13 @@ prepare-volumes:
@$(foreach dir,$(VOLUME_DIRS),$(call safe_chown,$(dir),-R))
ifneq ($(UPLOAD_LOCATION),)
ifeq ($(filter /%,$(UPLOAD_LOCATION)),)
@mkdir -p "docker/$(UPLOAD_LOCATION)"
@mkdir -p "docker/$(UPLOAD_LOCATION)/photos/upload"
@$(call safe_chown,docker/$(UPLOAD_LOCATION),)
@$(call safe_chown,docker/$(UPLOAD_LOCATION)/photos,-R)
else
@mkdir -p "$(UPLOAD_LOCATION)"
@mkdir -p "$(UPLOAD_LOCATION)/photos/upload"
@$(call safe_chown,$(UPLOAD_LOCATION),)
@$(call safe_chown,$(UPLOAD_LOCATION)/photos,-R)
endif
endif

View File

@@ -1 +1 @@
22.18.0
22.19.0

View File

@@ -1,6 +1,6 @@
{
"name": "@immich/cli",
"version": "2.2.86",
"version": "2.2.88",
"description": "Command Line Interface (CLI) for Immich",
"type": "module",
"exports": "./dist/index.js",
@@ -13,7 +13,6 @@
"cli"
],
"devDependencies": {
"@eslint/eslintrc": "^3.1.0",
"@eslint/js": "^9.8.0",
"@immich/sdk": "file:../open-api/typescript-sdk",
"@types/byte-size": "^8.1.0",
@@ -21,7 +20,7 @@
"@types/lodash-es": "^4.17.12",
"@types/micromatch": "^4.0.9",
"@types/mock-fs": "^4.13.1",
"@types/node": "^22.17.1",
"@types/node": "^22.18.0",
"@vitest/coverage-v8": "^3.0.0",
"byte-size": "^9.0.0",
"cli-progress": "^3.12.0",
@@ -69,6 +68,6 @@
"micromatch": "^4.0.8"
},
"volta": {
"node": "22.18.0"
"node": "22.19.0"
}
}

View File

@@ -2,37 +2,37 @@
# Manual edits may be lost in future updates.
provider "registry.opentofu.org/cloudflare/cloudflare" {
version = "4.52.1"
constraints = "4.52.1"
version = "4.52.3"
constraints = "4.52.3"
hashes = [
"h1:2lHvafwGbLdmc9lYkuJFw3nsInaQjRpjX/JfIRKmq/M=",
"h1:596JomwjrtUrOSreq9NNCS+rj70+jOV+0pfja5MXiTI=",
"h1:7mBOA5TVAIt3qAwPXKCtE0RSYeqij9v30mnksuBbpEg=",
"h1:ELVgzh4kHKBCYdL+2A8JjWS0E1snLUN3Mmz3Vo6qSfw=",
"h1:FGGM5yLFf72g3kSXM3LAN64Gf/AkXr5WCmhixgnP+l4=",
"h1:JupkJbQALcIVoMhHImrLeLDsQR1ET7VJLGC7ONxjqGU=",
"h1:KsaE4JNq+1uV1nJsuTcYar/8lyY6zKS5UBEpfYg3wvc=",
"h1:NHZ5RJIzQDLhie/ykl3uI6UPfNQR9Lu5Ti7JPR6X904=",
"h1:NfAuMbn6LQPLDtJhbzO1MX9JMIGLMa8K6CpekvtsuX8=",
"h1:e+vNKokamDsp/kJvFr2pRudzwEz2r49iZ/oSggw+1LY=",
"h1:jnb4VdfNZ79I3yj7Q8x+JmOT+FxbfjjRfrF0dL0yCW8=",
"h1:kmF//O539d7NuHU7qIxDj7Wz4eJmLKFiI5glwQivldU=",
"h1:s6XriaKwOgV4jvKAGPXkrxhhOQxpNU5dceZwi9Z/1k8=",
"h1:wt3WBEBAeSGTlC9OlnTlAALxRiK4SQgLy0KgBIS7qzs=",
"zh:2fb95e1d3229b9b6c704e1a413c7481c60f139780d9641f657b6eb9b633b90f2",
"zh:379c7680983383862236e9e6e720c3114195c40526172188e88d0ffcf50dfe2e",
"zh:55533beb6cfc02d22ffda8cba8027bc2c841bb172cd637ed0d28323d41395f8f",
"zh:5abd70760e4eb1f37a1c307cbd2989ea7c9ba0afb93818c67c1d363a31f75703",
"zh:699f1c8cd66129176fe659ebf0e6337632a8967a28d2630b6ae5948665c0c2ae",
"zh:69c15acd73c451e89de6477059cda2f3ec200b48ae4b9ff3646c4d389fd3205e",
"zh:6e02b687de21b844f8266dff99e93e7c61fc8eb688f4bbb23803caceb251839e",
"zh:7a51d17b87ed87b7bebf2ad9fc7c3a74f16a1b44eee92c779c08eb89258c0496",
"zh:88ad84436837b0f55302f22748505972634e87400d6902260fd6b7ba1610f937",
"h1:3jU62KY4Oj3xzMwkTQWon1nlIvFkgTCqI93IzUGaa0c=",
"h1:BWimtYXrvbzbbuoVcyobjQnXjjOb9X69JFTw+GuPxfk=",
"h1:C/KvLEm8dVQ6zG2X4asLDtmw2JW/xu7E8MddtaXniO0=",
"h1:Doo0xcLFf+CnfDWjsA7G1NvSLURuwcgyVy8k0NF1gJA=",
"h1:Gc3FGDtR8lUWsi9VImnnE5/USDXiIwYsv4Hbl+d2lwY=",
"h1:HsDY6s1gup5fW9TeuTUy85QMIld1nDOUFlwsfxIq1ig=",
"h1:MnHkB56E4b/kT6WZigsZJnB5rgnCfDVbrLBNxIsEXPY=",
"h1:O/FUQEqhtknJNdsaMbIBi2pLWBds2VvN5FsTVVntzb0=",
"h1:OKQBynkp0J5DIf5FOl/NR3S2rvh89pY+t5wevYxdTJs=",
"h1:On+vPsYV8U/J/8wFZPXjeAgNJqFFQj42vNOKuNKURkY=",
"h1:SPkrMRJahxK0uum7FnUugbGN/JepHMH8M71DBtYrvG0=",
"h1:bEh1ASPMiin3F36+hTfjMQTBnuDl2DzjzSCdova3JEM=",
"h1:dtIK+x5Q1sh5SMPaHBHXhL9XDIqbRW0EBmVZ+KHQB8E=",
"h1:kZcwWfODMWWyauZ66oaO/X+xXkqBtrbYwfUFEtspwEc=",
"zh:53946fce4a631f1d98c61550821c88edede9169dfe5cc254e09a2ab207f76b3f",
"zh:61654a21f1dd4331492d4ef77e9ebff066bc01e1281f92b925e5697c9138d681",
"zh:6a54e9d129b276f052a2f1b73ad0b8735fe6a7403c6a8f6aa111e525eeefaf35",
"zh:7692374e655c346a630b5a7cd776c5e0b2388900dcd7ab69a3af85d0c31c6c43",
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
"zh:8d46c3d9f4f7ad20ac6ef01daa63f4e30a2d16dcb1bb5c7c7ee3dc6be38e9ca1",
"zh:913d64e72a4929dae1d4793e2004f4f9a58b138ea337d9d94fa35cafbf06550a",
"zh:c8d93cf86e2e49f6cec665cfe78b82c144cce15a8b2e30f343385fadd1251849",
"zh:cc4f69397d9bc34a528a5609a024c3a48f54f21616c0008792dd417297add955",
"zh:df99cdb8b064aad35ffea77e645cf6541d0b1b2ebc51b6d26c42031de60ab69e",
"zh:8fe5b792a4d2b1c3a0e573649642962494faa00299baa6aaf813b9a43203dc02",
"zh:a0f403a4862df90f09de65c6e939d6cfd069a8dda2dd33f82948bf6f5f1124ef",
"zh:a25dc3eb60777b600f8f125d321fe7c50b811c5302b58e9a727ceb749a04e35d",
"zh:a2f2ac7dc703c69d2e8c67c9cb5620b5348cb4fd6b98515fbe3f478517b56602",
"zh:d452e7bd24445ee14166470cf50f3aca566d46cab5f26f1c5c988c0f3106b697",
"zh:e10a52b0294735659eb3f0821ad2006ec097918efe58d31d37a5e3c47efef5f6",
"zh:e28dd0954cef9f05adf4d4b440d6f134f605344dfa56307181996675e6550af2",
"zh:f1e3b2f43a472280442f01ba71a3c06c9167432e553381132ea5c4a77e0b6dd5",
"zh:f71fd63718d38fd43829861e91fe79e16d7b4c7c3d508ae3d077368d89b8e5a0",
"zh:faf8d3da4b819c4ae8e565d2b1a684c6a948a086cb299189a5e7b30b2178409d",
]
}

View File

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

View File

@@ -2,37 +2,37 @@
# Manual edits may be lost in future updates.
provider "registry.opentofu.org/cloudflare/cloudflare" {
version = "4.52.1"
constraints = "4.52.1"
version = "4.52.3"
constraints = "4.52.3"
hashes = [
"h1:2lHvafwGbLdmc9lYkuJFw3nsInaQjRpjX/JfIRKmq/M=",
"h1:596JomwjrtUrOSreq9NNCS+rj70+jOV+0pfja5MXiTI=",
"h1:7mBOA5TVAIt3qAwPXKCtE0RSYeqij9v30mnksuBbpEg=",
"h1:ELVgzh4kHKBCYdL+2A8JjWS0E1snLUN3Mmz3Vo6qSfw=",
"h1:FGGM5yLFf72g3kSXM3LAN64Gf/AkXr5WCmhixgnP+l4=",
"h1:JupkJbQALcIVoMhHImrLeLDsQR1ET7VJLGC7ONxjqGU=",
"h1:KsaE4JNq+1uV1nJsuTcYar/8lyY6zKS5UBEpfYg3wvc=",
"h1:NHZ5RJIzQDLhie/ykl3uI6UPfNQR9Lu5Ti7JPR6X904=",
"h1:NfAuMbn6LQPLDtJhbzO1MX9JMIGLMa8K6CpekvtsuX8=",
"h1:e+vNKokamDsp/kJvFr2pRudzwEz2r49iZ/oSggw+1LY=",
"h1:jnb4VdfNZ79I3yj7Q8x+JmOT+FxbfjjRfrF0dL0yCW8=",
"h1:kmF//O539d7NuHU7qIxDj7Wz4eJmLKFiI5glwQivldU=",
"h1:s6XriaKwOgV4jvKAGPXkrxhhOQxpNU5dceZwi9Z/1k8=",
"h1:wt3WBEBAeSGTlC9OlnTlAALxRiK4SQgLy0KgBIS7qzs=",
"zh:2fb95e1d3229b9b6c704e1a413c7481c60f139780d9641f657b6eb9b633b90f2",
"zh:379c7680983383862236e9e6e720c3114195c40526172188e88d0ffcf50dfe2e",
"zh:55533beb6cfc02d22ffda8cba8027bc2c841bb172cd637ed0d28323d41395f8f",
"zh:5abd70760e4eb1f37a1c307cbd2989ea7c9ba0afb93818c67c1d363a31f75703",
"zh:699f1c8cd66129176fe659ebf0e6337632a8967a28d2630b6ae5948665c0c2ae",
"zh:69c15acd73c451e89de6477059cda2f3ec200b48ae4b9ff3646c4d389fd3205e",
"zh:6e02b687de21b844f8266dff99e93e7c61fc8eb688f4bbb23803caceb251839e",
"zh:7a51d17b87ed87b7bebf2ad9fc7c3a74f16a1b44eee92c779c08eb89258c0496",
"zh:88ad84436837b0f55302f22748505972634e87400d6902260fd6b7ba1610f937",
"h1:3jU62KY4Oj3xzMwkTQWon1nlIvFkgTCqI93IzUGaa0c=",
"h1:BWimtYXrvbzbbuoVcyobjQnXjjOb9X69JFTw+GuPxfk=",
"h1:C/KvLEm8dVQ6zG2X4asLDtmw2JW/xu7E8MddtaXniO0=",
"h1:Doo0xcLFf+CnfDWjsA7G1NvSLURuwcgyVy8k0NF1gJA=",
"h1:Gc3FGDtR8lUWsi9VImnnE5/USDXiIwYsv4Hbl+d2lwY=",
"h1:HsDY6s1gup5fW9TeuTUy85QMIld1nDOUFlwsfxIq1ig=",
"h1:MnHkB56E4b/kT6WZigsZJnB5rgnCfDVbrLBNxIsEXPY=",
"h1:O/FUQEqhtknJNdsaMbIBi2pLWBds2VvN5FsTVVntzb0=",
"h1:OKQBynkp0J5DIf5FOl/NR3S2rvh89pY+t5wevYxdTJs=",
"h1:On+vPsYV8U/J/8wFZPXjeAgNJqFFQj42vNOKuNKURkY=",
"h1:SPkrMRJahxK0uum7FnUugbGN/JepHMH8M71DBtYrvG0=",
"h1:bEh1ASPMiin3F36+hTfjMQTBnuDl2DzjzSCdova3JEM=",
"h1:dtIK+x5Q1sh5SMPaHBHXhL9XDIqbRW0EBmVZ+KHQB8E=",
"h1:kZcwWfODMWWyauZ66oaO/X+xXkqBtrbYwfUFEtspwEc=",
"zh:53946fce4a631f1d98c61550821c88edede9169dfe5cc254e09a2ab207f76b3f",
"zh:61654a21f1dd4331492d4ef77e9ebff066bc01e1281f92b925e5697c9138d681",
"zh:6a54e9d129b276f052a2f1b73ad0b8735fe6a7403c6a8f6aa111e525eeefaf35",
"zh:7692374e655c346a630b5a7cd776c5e0b2388900dcd7ab69a3af85d0c31c6c43",
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
"zh:8d46c3d9f4f7ad20ac6ef01daa63f4e30a2d16dcb1bb5c7c7ee3dc6be38e9ca1",
"zh:913d64e72a4929dae1d4793e2004f4f9a58b138ea337d9d94fa35cafbf06550a",
"zh:c8d93cf86e2e49f6cec665cfe78b82c144cce15a8b2e30f343385fadd1251849",
"zh:cc4f69397d9bc34a528a5609a024c3a48f54f21616c0008792dd417297add955",
"zh:df99cdb8b064aad35ffea77e645cf6541d0b1b2ebc51b6d26c42031de60ab69e",
"zh:8fe5b792a4d2b1c3a0e573649642962494faa00299baa6aaf813b9a43203dc02",
"zh:a0f403a4862df90f09de65c6e939d6cfd069a8dda2dd33f82948bf6f5f1124ef",
"zh:a25dc3eb60777b600f8f125d321fe7c50b811c5302b58e9a727ceb749a04e35d",
"zh:a2f2ac7dc703c69d2e8c67c9cb5620b5348cb4fd6b98515fbe3f478517b56602",
"zh:d452e7bd24445ee14166470cf50f3aca566d46cab5f26f1c5c988c0f3106b697",
"zh:e10a52b0294735659eb3f0821ad2006ec097918efe58d31d37a5e3c47efef5f6",
"zh:e28dd0954cef9f05adf4d4b440d6f134f605344dfa56307181996675e6550af2",
"zh:f1e3b2f43a472280442f01ba71a3c06c9167432e553381132ea5c4a77e0b6dd5",
"zh:f71fd63718d38fd43829861e91fe79e16d7b4c7c3d508ae3d077368d89b8e5a0",
"zh:faf8d3da4b819c4ae8e565d2b1a684c6a948a086cb299189a5e7b30b2178409d",
]
}

View File

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

View File

@@ -143,13 +143,13 @@ services:
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:a137a2b60aca1a75130022d6bb96af423fefae4eb55faf395732db3544803280
image: docker.io/valkey/valkey:8-bookworm@sha256:fea8b3e67b15729d4bb70589eb03367bab9ad1ee89c876f54327fc7c6e618571
healthcheck:
test: redis-cli ping || exit 1
database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:32324a2f41df5de9efe1af166b7008c3f55646f8d0e00d9550c16c9822366b4a
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:8d292bdb796aa58bbbaa47fe971c8516f6f57d6a47e7172e62754feb6ed4e7b0
env_file:
- .env
environment:

View File

@@ -56,14 +56,14 @@ services:
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:a137a2b60aca1a75130022d6bb96af423fefae4eb55faf395732db3544803280
image: docker.io/valkey/valkey:8-bookworm@sha256:fea8b3e67b15729d4bb70589eb03367bab9ad1ee89c876f54327fc7c6e618571
healthcheck:
test: redis-cli ping || exit 1
restart: always
database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:32324a2f41df5de9efe1af166b7008c3f55646f8d0e00d9550c16c9822366b4a
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:8d292bdb796aa58bbbaa47fe971c8516f6f57d6a47e7172e62754feb6ed4e7b0
env_file:
- .env
environment:

View File

@@ -49,14 +49,14 @@ services:
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:a137a2b60aca1a75130022d6bb96af423fefae4eb55faf395732db3544803280
image: docker.io/valkey/valkey:8-bookworm@sha256:fea8b3e67b15729d4bb70589eb03367bab9ad1ee89c876f54327fc7c6e618571
healthcheck:
test: redis-cli ping || exit 1
restart: always
database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:32324a2f41df5de9efe1af166b7008c3f55646f8d0e00d9550c16c9822366b4a
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:8d292bdb796aa58bbbaa47fe971c8516f6f57d6a47e7172e62754feb6ed4e7b0
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}

View File

@@ -1 +1 @@
22.18.0
22.19.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -66,7 +66,7 @@ The provided file is just a starting point. There are a ton of ways to configure
After bringing down the containers with `docker compose down` and back up with `docker compose up -d`, a Prometheus instance will now collect metrics from the immich server and microservices containers. Note that we didn't need to expose any new ports for these containers - the communication is handled in the internal Docker network.
:::note
To see exactly what metrics are made available, you can additionally add `8081:8081` to the server container's ports and `8082:8082` to the microservices container's ports.
To see exactly what metrics are made available, you can additionally add `8081:8081` (API metrics) and `8082:8082` (microservices metrics) to the immich_server container's ports.
Visiting the `/metrics` endpoint for these services will show the same raw data that Prometheus collects.
To configure these ports see [`IMMICH_API_METRICS_PORT` & `IMMICH_MICROSERVICES_METRICS_PORT`](/docs/install/environment-variables/#general).
:::

View File

@@ -1,6 +1,6 @@
# Tags
Immich supports hierarchical tags, with the ability to read existing tags from the `TagList` and `Keywords` EXIF properties. Any changes to tags made through Immich are also written back to a [sidecar](/docs/features/xmp-sidecars) file. You can re-run the metadata extraction jobs for all assets to import your existing tags.
Immich supports hierarchical tags, with the ability to read existing tags from the XMP `TagsList` field and IPTC `Keywords` field. Any changes to tags made through Immich are also written back to a [sidecar](/docs/features/xmp-sidecars) file. You can re-run the metadata extraction jobs for all assets to import your existing tags.
## Enable tags feature

View File

@@ -1,13 +1,68 @@
# XMP Sidecars
Immich can ingest XMP sidecars on file upload (via the CLI) as well as detect new sidecars that are placed in the filesystem for existing images.
Immich supports XMP sidecar files — external `.xmp` files that store metadata for an image or video in XML format. During the metadata extraction job Immich will read & import metadata from `.xmp` files, and during the Sidecar Write job it will _write_ metadata back to `.xmp`.
<img src={require('./img/xmp-sidecars.webp').default} title='XMP sidecars' />
:::tip
Tools like Lightroom, Darktable, digiKam and other applications can also be configured to write changes to `.xmp` files, in order to avoid modifying the original file.
:::
XMP sidecars are external XML files that contain metadata related to media files. Many applications read and write these files either exclusively or in addition to the metadata written to image files. They can be a powerful tool for editing and storing metadata of a media file without modifying the media file itself. When Immich receives or detects an XMP sidecar for a media file, it will attempt to extract the metadata from both the sidecar as well as the media file. It will prioritize the metadata for fields in the sidecar but will fall back and use the metadata in the media file if necessary.
## Metadata Fields
When importing files via the CLI bulk uploader or parsing photo metadata for external libraries, Immich will automatically detect XMP sidecar files as files that exist next to the original media file. Immich will look files that have the same name as the photo, but with the `.xmp` file extension. The same name can either include the photo's file extension or without the photo's file extension. For example, for a photo named `PXL_20230401_203352928.MP.jpg`, Immich will look for an XMP file named either `PXL_20230401_203352928.MP.jpg.xmp` or `PXL_20230401_203352928.MP.xmp`. If both `PXL_20230401_203352928.MP.jpg.xmp` and `PXL_20230401_203352928.MP.xmp` are present, Immich will prefer `PXL_20230401_203352928.MP.jpg.xmp`.
Immich does not support _all_ metadata fields. Below is a table showing what fields Immich can _read_ and _write_. It's important to note that writes do not replace the entire file contents, but are merged together with any existing fields.
There are 2 administrator jobs associated with sidecar files: `SYNC` and `DISCOVER`. The sync job will re-scan all media with existing sidecar files and queue them for a metadata refresh. This is a great use case when third-party applications are used to modify the metadata of media. The discover job will attempt to scan the filesystem for new sidecar files for all media that does not currently have a sidecar file associated with it.
:::info
Immich automatically queues a Sidecar Write job after editing the description, rating, or updating tags.
:::
<img src={require('./img/sidecar-jobs.webp').default} title='Sidecar Administrator Jobs' />
| Metadata | Immich writes to XMP | Immich reads from XMP |
| --------------- | ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Description** | `dc:description`, `tiff:ImageDescription` | `dc:description`, `tiff:ImageDescription` |
| **Rating** | `xmp:Rating` | `xmp:Rating` |
| **DateTime** | `exif:DateTimeOriginal`, `photoshop:DateCreated` | In prioritized order:<br/>`exif:SubSecDateTimeOriginal`<br/>`exif:DateTimeOriginal`<br/>`xmp:SubSecCreateDate`<br/>`xmp:CreateDate`<br/>`xmp:CreationDate`<br/>`xmp:MediaCreateDate`<br/>`xmp:SubSecMediaCreateDate`<br/>`xmp:DateTimeCreated` |
| **Location** | `exif:GPSLatitude`, `exif:GPSLongitude` | `exif:GPSLatitude`, `exif:GPSLongitude` |
| **Tags** | `digiKam:TagsList` | In prioritized order: <br/>`digiKam:TagsList`<br/>`lr:HierarchicalSubject`<br/>`IPTC:Keywords` |
:::note
All other fields (e.g. `Creator`, `Source`, IPTC, Lightroom edits) remain in the `.xmp` file and are **not searchable** in Immich.
:::
## File Naming Rules
A sidecar must share the base name of the media file:
-`IMG_0001.jpg.xmp` ← preferred
-`IMG_0001.xmp` ← fallback
-`myphoto_meta.xmp` ← not recognized
If both `.jpg.xmp` and `.xmp` are present, Immich uses the **`.jpg.xmp`** file.
## CLI Support
1. **Detect** Immich looks for a `.xmp` file placed next to each media file during upload.
2. **Copy** Both the media and the sidecar file are copied into Immichs internal library folder.
The sidecar is renamed to match the internal filename template, e.g.:
`upload/library/<user>/YYYY/YYYY-MM-DD/IMG_0001.jpg`
`upload/library/<user>/YYYY/YYYY-MM-DD/IMG_0001.jpg.xmp`
3. **Extract** Selected metadata (title, description, date, rating, tags) is parsed from the sidecar and saved to the database.
4. **Write-back** If you later update tags, rating, or description in the web UI, Immich will update **both** the database _and_ the copied `.xmp` file to stay in sync.
## External Library (Mounted Folder) Support
1. **Detect** The `DISCOVER` job automatically associates `.xmp` files that sit next to existing media files in your mounted folder. No files are moved or renamed.
2. **Extract** Immich reads and saves the same metadata fields from the sidecar to the database.
3. **Write-back** If Immich has **write access** to the mount, any future metadata edits (e.g., rating or tags) are also written back to the original `.xmp` file on disk.
:::danger
If the mount is **read-only**, Immich cannot update either the sidecar **or** the database — **metadata edits will silently fail** with no warning see issue [#10538](https://github.com/immich-app/immich/issues/10538) for more details.
:::
## Admin Jobs
Immich provides two admin jobs for managing sidecars:
| Job | What it does |
| ---------- | ------------------------------------------------------------------------------------------------- |
| `DISCOVER` | Finds new `.xmp` files next to media that dont already have one linked |
| `SYNC` | Re-reads existing `.xmp` files and refreshes metadata in the database (e.g. after external edits) |
![Sidecar Admin Jobs](./img/sidecar-jobs.webp)

View File

@@ -147,7 +147,10 @@ SELECT "key", "value" FROM "system_metadata" WHERE "key" = 'system-config';
### File properties
```sql title="Without thumbnails"
SELECT * FROM "asset" WHERE "asset"."previewPath" IS NULL OR "asset"."thumbnailPath" IS NULL;
SELECT * FROM "asset"
WHERE (NOT EXISTS (SELECT 1 FROM "asset_file" WHERE "asset"."id" = "asset_file"."assetId" AND "asset_file"."type" = 'thumbnail')
OR NOT EXISTS (SELECT 1 FROM "asset_file" WHERE "asset"."id" = "asset_file"."assetId" AND "asset_file"."type" = 'preview'))
AND "asset"."visibility" = 'timeline';
```
```sql title="Failed file movements"

View File

@@ -24,8 +24,6 @@
"@mdi/react": "^1.6.1",
"@mdx-js/react": "^3.0.0",
"autoprefixer": "^10.4.17",
"classnames": "^2.3.2",
"clsx": "^2.0.0",
"docusaurus-lunr-search": "^3.3.2",
"docusaurus-preset-openapi": "^0.7.5",
"lunr": "^2.3.9",
@@ -60,6 +58,6 @@
"node": ">=20"
},
"volta": {
"node": "22.18.0"
"node": "22.19.0"
}
}

View File

@@ -105,6 +105,11 @@ const projects: CommunityProjectProps[] = [
description: 'Speed up your machine learning by load balancing your requests to multiple computers',
url: 'https://github.com/apetersson/immich_ml_balancer',
},
{
title: 'Immich Drop Uploader',
description: 'A tiny, zero-login web app for collecting photos/videos from anyone into your Immich server.',
url: 'https://github.com/Nasogaa/immich-drop',
},
];
function CommunityProject({ title, description, url }: CommunityProjectProps): JSX.Element {

View File

@@ -1,4 +1,12 @@
[
{
"label": "v1.141.1",
"url": "https://v1.141.1.archive.immich.app"
},
{
"label": "v1.141.0",
"url": "https://v1.141.0.archive.immich.app"
},
{
"label": "v1.140.1",
"url": "https://v1.140.1.archive.immich.app"

View File

@@ -1 +1 @@
22.18.0
22.19.0

View File

@@ -1,6 +1,6 @@
{
"name": "immich-e2e",
"version": "1.140.1",
"version": "1.141.1",
"description": "",
"main": "index.js",
"type": "module",
@@ -19,19 +19,17 @@
"author": "",
"license": "GNU Affero General Public License version 3",
"devDependencies": {
"@eslint/eslintrc": "^3.1.0",
"@eslint/js": "^9.8.0",
"@immich/cli": "file:../cli",
"@immich/sdk": "file:../open-api/typescript-sdk",
"@playwright/test": "^1.44.1",
"@socket.io/component-emitter": "^3.1.2",
"@types/luxon": "^3.4.2",
"@types/node": "^22.17.1",
"@types/node": "^22.18.0",
"@types/oidc-provider": "^9.0.0",
"@types/pg": "^8.15.1",
"@types/pngjs": "^6.0.4",
"@types/supertest": "^6.0.2",
"@vitest/coverage-v8": "^3.0.0",
"eslint": "^9.14.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.1.3",
@@ -45,7 +43,7 @@
"pngjs": "^7.0.0",
"prettier": "^3.2.5",
"prettier-plugin-organize-imports": "^4.0.0",
"sharp": "^0.34.0",
"sharp": "^0.34.3",
"socket.io-client": "^4.7.4",
"supertest": "^7.0.0",
"typescript": "^5.3.3",
@@ -54,6 +52,6 @@
"vitest": "^3.0.0"
},
"volta": {
"node": "22.18.0"
"node": "22.19.0"
}
}

View File

@@ -1466,10 +1466,10 @@ describe('/asset', () => {
expectedDate: '2023-04-04T04:00:00.000Z',
},
{
name: 'CreateDate when DateTimeOriginal missing',
name: 'CreationDate when DateTimeOriginal missing',
exifData: {
CreateDate: '2023:05:05 05:00:00', // TESTABLE
CreationDate: '2023:07:07 07:00:00', // TESTABLE
CreationDate: '2023:05:05 05:00:00', // TESTABLE
CreateDate: '2023:07:07 07:00:00', // TESTABLE
GPSDateTime: '2023:10:10 10:00:00', // TESTABLE
},
expectedDate: '2023-05-05T05:00:00.000Z',

View File

@@ -23,8 +23,8 @@ describe('/partners', () => {
]);
await Promise.all([
createPartner({ id: user2.userId }, { headers: asBearerAuth(user1.accessToken) }),
createPartner({ id: user1.userId }, { headers: asBearerAuth(user2.accessToken) }),
createPartner({ partnerCreateDto: { sharedWithId: user2.userId } }, { headers: asBearerAuth(user1.accessToken) }),
createPartner({ partnerCreateDto: { sharedWithId: user1.userId } }, { headers: asBearerAuth(user2.accessToken) }),
]);
});

View File

@@ -462,7 +462,8 @@ export const utils = {
updateLibrary: (accessToken: string, id: string, dto: UpdateLibraryDto) =>
updateLibrary({ id, updateLibraryDto: dto }, { headers: asBearerAuth(accessToken) }),
createPartner: (accessToken: string, id: string) => createPartner({ id }, { headers: asBearerAuth(accessToken) }),
createPartner: (accessToken: string, id: string) =>
createPartner({ partnerCreateDto: { sharedWithId: id } }, { headers: asBearerAuth(accessToken) }),
updateMyPreferences: (accessToken: string, userPreferencesUpdateDto: UserPreferencesUpdateDto) =>
updateMyPreferences({ userPreferencesUpdateDto }, { headers: asBearerAuth(accessToken) }),

View File

@@ -396,6 +396,7 @@
"advanced_settings_prefer_remote_title": "تفضل الصور البعيدة",
"advanced_settings_proxy_headers_subtitle": "عرف عناوين الوكيل التي يستخدمها Immich لارسال كل طلب شبكي",
"advanced_settings_proxy_headers_title": "عناوين الوكيل",
"advanced_settings_readonly_mode_title": "وضع القراءة فقط",
"advanced_settings_self_signed_ssl_subtitle": "تخطي التحقق من شهادة SSL لخادم النقطة النهائي. مكلوب للشهادات الموقعة ذاتيا.",
"advanced_settings_self_signed_ssl_title": "السماح بشهادات SSL الموقعة ذاتيًا",
"advanced_settings_sync_remote_deletions_subtitle": "حذف او استعادة تلقائي للاصول على هذا الجهاز عند تنفيذ العملية على الويب",
@@ -591,8 +592,6 @@
"backup_setting_subtitle": "ادارة اعدادات التحميل في الخلفية والمقدمة",
"backup_settings_subtitle": "إدارة إعدادات التحميل",
"backward": "الى الوراء",
"beta_sync": "حالة المزامنة التجريبية",
"beta_sync_subtitle": "ادارة نظام المزامنة الجديد",
"biometric_auth_enabled": "المصادقة البايومترية مفعله",
"biometric_locked_out": "لقد قفلت عنك المصادقة البيومترية",
"biometric_no_options": "لا توجد خيارات بايومترية متوفرة",

View File

@@ -1,37 +1,53 @@
{
"about": "Haqqinda",
"about": "Haqqında",
"account": "Hesab",
"account_settings": "Hesab parametrləri",
"acknowledge": "Təsdiq et",
"action": "Əməliyyat",
"action_common_update": "Yenilə",
"actions": "Əməliyyatlar",
"active": "Aktiv",
"activity": "Fəaliyyət",
"activity_changed": "Fəaliyyət {enabled, select, true {aktivdir} other {aktiv deyil}}",
"add": "Əlavə et",
"add_a_description": "Təsviri əlavə et",
"add_a_location": "Məkan əlavə et",
"add_a_name": "Ad əlavə et",
"add_a_title": "Başlıq əlavə et",
"add_birthday": "Doğum günü əlavə et",
"add_endpoint": "Son nöqtə əlavə et",
"add_exclusion_pattern": "İstisna nümunəsi əlavə et",
"add_import_path": "Import yolunu əlavə et",
"add_location": "Məkanı əlavə et",
"add_location": "Məkan əlavə et",
"add_more_users": "Daha çox istifadəçi əlavə et",
"add_partner": "Partnyor əlavə et",
"add_path": "Yol əlavə et",
"add_photos": "Şəkilləri əlavə et",
"add_to": "... əlavə et",
"add_photos": "Şəkillər əlavə et",
"add_tag": "Etiket əlavə et",
"add_to": "Bura əlavə et…",
"add_to_album": "Albom əlavə et",
"add_to_album_bottom_sheet_added": "{album} albomuna əlavə edildi",
"add_to_album_bottom_sheet_already_exists": "Artıq {album} albomunda var",
"add_to_album_toggle": "{album} üçün seçimi dəyişin",
"add_to_albums": "Albomlara əlavə et",
"add_to_albums_count": "Albomlara əlavə et ({count})",
"add_to_shared_album": "Paylaşılan alboma əlavə et",
"add_url": "URL əlavə et",
"added_to_archive": "Arxivə əlavə edildi",
"added_to_favorites": "Sevimlilələrə əlavə edildi",
"added_to_favorites_count": "{count, number} şəkil sevimlilələrə əlavə edildi",
"admin": {
"add_exclusion_pattern_description": "İstisna şablonlarını əlavə edin. *, ** və ? ilə Globbing dəstəklənir. Məs.: \"Raw\" adlanan hər hansısa bir qovluqda bütün faylları saymamaq üçün \"**/Raw/**\"-dan istifadə edin. \".tif\" ilə bitən bütün faylları saymamaq üçün \"**/*.tif\"-dən istifadə edin. Faylı mütləq yoldan istifadə etməklə saymamaq istəyirsinizsə \"/path/to/ignore/**\"-dan istifadə edin.",
"admin_user": "Admin İstifadəçi",
"asset_offline_description": "Bu xarici kitabxana varlığı diskdə artıq tapılmadı və zibil qutusuna köçürüldü. Əgər fayl kitabxana içərisində köçürülübsə, zaman şkalanızı yeni uyğun gələn varlıq üçün yoxlayın. Varlığı yenidən qaytarmaq üçün aşağıda verilmiş fayl yolunun Immich tərəfindən əlçatan olduğundan əmin olduqdan sonra kitabxananı skan edin.",
"authentication_settings": "Səlahiyyətləndirmə parametrləri",
"authentication_settings_description": "Şifrə, OAuth və digər səlahiyyətləndirmə parametrləri",
"authentication_settings_disable_all": "Bütün giriş etmə metodlarını söndürmək istədiyinizdən əminsinizmi? Giriş etmə funksiyası tamamilə söndürüləcəkdir.",
"authentication_settings_reenable": "Yenidən aktiv etmək üçün <link> Server Əmri</link> -ni istifadə edin.",
"background_task_job": "Arxa plan tapşırıqları",
"backup_database_enable_description": "Verilənlər bazasının ehtiyat nüsxələrini aktiv et",
"backup_database": "Verilənlər bazasının dump-ını yaradın",
"backup_database_enable_description": "Verilənlər bazasının artıq nüsxələrini aktiv et",
"backup_keep_last_amount": "Tutulması gərəkən nüsxələrin sayı",
"backup_settings": "Ehtiyat Nüsxə Parametrləri",
"backup_settings_description": "Verilənlər bazasının ehtiyat nüsxə parametrlərini idarə et",
"config_set_by_file": "Konfiqurasiya hal-hazırda konfiqurasiya faylı ilə təyin olunub",
@@ -84,5 +100,6 @@
"machine_learning_facial_recognition": "Üz Tanıma",
"machine_learning_facial_recognition_description": "Şəkillərdəki üzləri aşkarla, tanı və qruplaşdır",
"machine_learning_facial_recognition_model": "Üz tanıma modeli"
}
},
"timeline": "Zaman şkalası"
}

View File

@@ -28,6 +28,8 @@
"add_to_album": "Дадаць у альбом",
"add_to_album_bottom_sheet_added": "Дададзена да {album}",
"add_to_album_bottom_sheet_already_exists": "Ужо знаходзіцца ў {album}",
"add_to_albums": "Дадаць у альбомы",
"add_to_albums_count": "Дадаць у альбомы ({count})",
"add_to_shared_album": "Дадаць у агульны альбом",
"add_url": "Дадаць URL",
"added_to_archive": "Дададзена ў архіў",
@@ -399,6 +401,14 @@
"purchase_button_buy": "Купіць",
"purchase_button_buy_immich": "Купіць Immich",
"purchase_button_select": "Выбраць",
"readonly_mode_disabled": "Выключаны рэжым толькі для чытання",
"readonly_mode_enabled": "Уключаны рэжым толькі для чытання",
"reassign": "Перапрызначыць",
"reassing_hint": "Прыпісаць выбраныя актывы існуючай асобе",
"recent": "Нядаўні",
"recent-albums": "Нядаўнія альбомы",
"recent_searches": "Нядаўнія пошукі",
"recently_added": "Нядаўна дададзена",
"remove": "Выдаліць",
"remove_from_album": "Выдаліць з альбома",
"remove_from_favorites": "Выдаліць з абраных",

View File

@@ -396,6 +396,8 @@
"advanced_settings_prefer_remote_title": "Предпочитай изображенията на сървъра",
"advanced_settings_proxy_headers_subtitle": "Дефиниране на прокси хедъри, които Immich трябва да изпраща с всяка мрежова заявка",
"advanced_settings_proxy_headers_title": "Прокси хедъри",
"advanced_settings_readonly_mode_subtitle": "Активира режима \"само за четене\", при който снимките могат да бъдат разглеждани, но неща като избор на няколко изображения, споделяне, изтриване са забранени. Активиране/деактивиране на режима само за четене става от картинката-аватар на потребителя от основния екран",
"advanced_settings_readonly_mode_title": "Режим само за четене",
"advanced_settings_self_signed_ssl_subtitle": "Пропуска проверката на SSL-сертификата на сървъра. Изисква се при самоподписани сертификати.",
"advanced_settings_self_signed_ssl_title": "Разреши самоподписани SSL сертификати",
"advanced_settings_sync_remote_deletions_subtitle": "Автоматично изтрии или възстанови обект на това устройство, когато действието е извършено през уеб-интерфейса",
@@ -461,6 +463,7 @@
"app_bar_signout_dialog_title": "Излез от профила",
"app_settings": "Настройки ма приложението",
"appears_in": "Излиза в",
"apply_count": "Приложи ({count, number})",
"archive": "Архив",
"archive_action_prompt": "{count} са добавени в Архива",
"archive_or_unarchive_photo": "Архивиране или деархивиране на снимка",
@@ -500,7 +503,7 @@
"assets": "Елементи",
"assets_added_count": "Добавено {count, plural, one {# asset} other {# assets}}",
"assets_added_to_album_count": "Добавен(и) са {count, plural, one {# актив} other {# актива}} в албума",
"assets_added_to_albums_count": "Добавени са {assetTotal} обекта в {albumTotal} албума",
"assets_added_to_albums_count": "{assetTotal, plural, one {# обект е добавен} other {# обекта са добавени}} в {albumTotal, plural, one {# албум} other {# албума}}",
"assets_cannot_be_added_to_album_count": "{count, plural, one {Обекта не може да се добави} other {Обектите не може да се добавят}} в албума",
"assets_cannot_be_added_to_albums": "{count, plural, one {обект не може да бъде добавен} other {обекта не могат да бъдат добавени}} в никой от албумите",
"assets_count": "{count, plural, one {# актив} other {# актива}}",
@@ -594,8 +597,6 @@
"backup_setting_subtitle": "Управлявай настройките за архивиране в активен и фонов режим",
"backup_settings_subtitle": "Управление на настройките за качване",
"backward": "Назад",
"beta_sync": "Статус на бета синхронизацията",
"beta_sync_subtitle": "Управление на новата система за синхронизация",
"biometric_auth_enabled": "Включена биометрично удостоверяване",
"biometric_locked_out": "Няма достъп до биометрично удостоверяване",
"biometric_no_options": "Няма биометрична автентикация",
@@ -912,7 +913,7 @@
"error_selecting_all_assets": "Грешка при избора на всички файлове",
"exclusion_pattern_already_exists": "Този модел за изключване вече съществува.",
"failed_to_create_album": "Неуспешно създаване на албум",
"failed_to_create_shared_link": "Неуспешно създаване на споделена връзка",
"failed_to_create_shared_link": "Неуспешно създаване на спoделена връзка",
"failed_to_edit_shared_link": "Неуспешно редактиране на споделена връзка",
"failed_to_get_people": "Неуспешно зареждане на хора",
"failed_to_keep_this_delete_others": "Неуспешно запазване на този обект и изтриване на останалите обекти",
@@ -1073,12 +1074,15 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "За да работи тази функция зарежда външни ресурси от Google.",
"general": "Общи",
"geolocation_instruction_location": "Изберете обект с GPS координати за да използвате тях или изберете място директно от картата",
"get_help": "Помощ",
"get_wifiname_error": "Неуспешно получаване името на Wi-Fi мрежата. Моля, убедете се, че са предоставени нужните разрешения на приложението и има връзка с Wi-Fi",
"getting_started": "Как да започнем",
"go_back": "Връщане назад",
"go_to_folder": "Отиди в папката",
"go_to_search": "Преминаване към търсене",
"gps": "GPS координати",
"gps_missing": "Няма GPS координати",
"grant_permission": "Дай разрешение",
"group_albums_by": "Групирай албум по...",
"group_country": "Групирай по държава",
@@ -1262,6 +1266,7 @@
"main_branch_warning": "Използвате версия за разработчици, силно препоръчваме да използвате официална версия!",
"main_menu": "Главно меню",
"make": "Марка",
"manage_geolocation": "Управление на местоположенията",
"manage_shared_links": "Управление на споделени връзки",
"manage_sharing_with_partners": "Управление на споделянето с партньори",
"manage_the_app_settings": "Управление на настройките на приложението",
@@ -1407,6 +1412,8 @@
"open_the_search_filters": "Отвари филтрите за търсене",
"options": "Настройки",
"or": "или",
"organize_into_albums": "Organitzar per àlbums",
"organize_into_albums_description": "Posar les fotos existents dins dels àlbums fent servir la configuració de sincronització",
"organize_your_library": "Организиране на вашата библиотека",
"original": "оригинал",
"other": "Други",
@@ -1508,6 +1515,7 @@
"profile_drawer_client_out_of_date_minor": "Мобилното приложение е остаряло. Моля, актуализирай до най-новата версия.",
"profile_drawer_client_server_up_to_date": "Клиента и сървъра са обновени",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Режима само за четене е активиран. С двоен клик върху картиката-аватар на потребителя ще деактивирате само за четене.",
"profile_drawer_server_out_of_date_major": "Версията на сървъра е остаряла. Моля, актуализирай поне до последната главна версия.",
"profile_drawer_server_out_of_date_minor": "Версията на сървъра е остаряла. Моля, актуализирай до последната версия.",
"profile_image_of_user": "Профилна снимка на {user}",
@@ -1546,6 +1554,7 @@
"purchase_server_description_2": "Статус на поддръжник",
"purchase_server_title": "Сървър",
"purchase_settings_server_activated": "Продуктовият ключ на сървъра се управлява от администратора",
"query_asset_id": "Buscar item per ID",
"queue_status": "В опашка {count} от {total}",
"rating": "Оценка със звезди",
"rating_clear": "Изчисти оценката",
@@ -1553,6 +1562,8 @@
"rating_description": "Покажи EXIF оценката в панела с информация",
"reaction_options": "Избор на реакция",
"read_changelog": "Прочети промените",
"readonly_mode_disabled": "Режима само за четене е деактивиран",
"readonly_mode_enabled": "Режима само за четене е активиран",
"reassign": "Преназначаване",
"reassigned_assets_to_existing_person": "Преназначени {count, plural, one {# елемент} other {# елемента}} на {name, select, null {съществуващ човек} other {{name}}}",
"reassigned_assets_to_new_person": "Преназначени {count, plural, one {# елемент} other {# елемента}} на нов човек",
@@ -1722,6 +1733,7 @@
"select_user_for_sharing_page_err_album": "Създаването на албум не бе успешно",
"selected": "Избрано",
"selected_count": "{count, plural, other {# избрани}}",
"selected_gps_coordinates": "Избрани GPS координати",
"send_message": "Изпратете съобщение",
"send_welcome_email": "Изпратете имейл за добре дошли",
"server_endpoint": "Адрес на сървъра",
@@ -1941,7 +1953,9 @@
"to_change_password": "Промяна на паролата",
"to_favorite": "Любим",
"to_login": "Вписване",
"to_multi_select": "за избор на няколко",
"to_parent": "Отиди към родителския елемент",
"to_select": "за избор",
"to_trash": "Кошче",
"toggle_settings": "Превключване на настройките",
"total": "Общо",
@@ -1991,6 +2005,7 @@
"unstacked_assets_count": "Разкачени {count, plural, one {# елемент} other {# елементи}}",
"untagged": "Немаркирани",
"up_next": "Следващ",
"update_location_action_prompt": "Обнови координатите на {count} избрани обекта с:",
"updated_at": "Обновено",
"updated_password": "Паролата е актуализирана",
"upload": "Качване",
@@ -2057,6 +2072,7 @@
"view_next_asset": "Преглед на следващия файл",
"view_previous_asset": "Преглед на предишния файл",
"view_qr_code": "Виж QR кода",
"view_similar_photos": "Виж подобни снимки",
"view_stack": "Покажи в стек",
"view_user": "Виж потребителя",
"viewer_remove_from_stack": "Премахване от опашката",

View File

@@ -14,5 +14,10 @@
"add_exclusion_pattern": "Putem wan paten wae hemi karem aot",
"add_import_path": "Putem wan pat blo import",
"add_location": "Putem wan place blo hem",
"add_more_users": "Putem mor man"
"add_more_users": "Putem mor man",
"readonly_mode_enabled": "Mod blo yu no save janjem i on",
"reassigned_assets_to_new_person": "Janjem{count, plural, one {# asset} other {# assets}} blo nu man",
"reassing_hint": "janjem ol sumtin yu bin joos i go blo wan man",
"recent-albums": "album i no old tu mas",
"recent_searches": "lukabout wea i no old tu mas"
}

View File

@@ -396,6 +396,8 @@
"advanced_settings_prefer_remote_title": "Prefereix imatges remotes",
"advanced_settings_proxy_headers_subtitle": "Definiu les capçaleres de proxy que Immich per enviar amb cada sol·licitud de xarxa",
"advanced_settings_proxy_headers_title": "Capçaleres de proxy",
"advanced_settings_readonly_mode_subtitle": "Habilita el només de lectura mode on les fotos poden ser només vist, a coses els agrada seleccionant imatges múltiples, compartint, càsting, elimina és tot discapacitat. Habilita/Desactiva només de lectura via avatar d'usuari des de la pantalla major",
"advanced_settings_readonly_mode_title": "Mode de només lectura",
"advanced_settings_self_signed_ssl_subtitle": "Omet la verificació del certificat SSL del servidor. Requerit per a certificats autosignats.",
"advanced_settings_self_signed_ssl_title": "Permet certificats SSL autosignats",
"advanced_settings_sync_remote_deletions_subtitle": "Suprimeix o restaura automàticament un actiu en aquest dispositiu quan es realitzi aquesta acció al web",
@@ -461,6 +463,7 @@
"app_bar_signout_dialog_title": "Tanca la sessió",
"app_settings": "Configuració de l'app",
"appears_in": "Apareix a",
"apply_count": "Aplicar ({count, number})",
"archive": "Arxiu",
"archive_action_prompt": "{count} afegit a Arxiu",
"archive_or_unarchive_photo": "Arxivar o desarxivar fotografia",
@@ -594,8 +597,6 @@
"backup_setting_subtitle": "Gestiona la configuració de càrrega en segon pla i en primer pla",
"backup_settings_subtitle": "Administra la configuració de pujada",
"backward": "Enrere",
"beta_sync": "Estat de la sincronització beta",
"beta_sync_subtitle": "Administra el nou sistema de sincronització",
"biometric_auth_enabled": "Autentificació biomètrica activada",
"biometric_locked_out": "Esteu bloquejats fora de l'autenticació biomètrica",
"biometric_no_options": "No hi ha opcions biomètriques disponibles",
@@ -1073,12 +1074,15 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Aquesta funció carrega recursos externs de Google per funcionar.",
"general": "General",
"geolocation_instruction_location": "Fes click en un element amb coordinades GPS per utilitzar la seva ubicació o selecciona una ubicació des del mapa",
"get_help": "Aconseguir ajuda",
"get_wifiname_error": "No s'ha pogut obtenir el nom de la Wi-Fi. Assegureu-vos que heu concedit els permisos necessaris i que esteu connectat a una xarxa Wi-Fi",
"getting_started": "Començant",
"go_back": "Torna",
"go_to_folder": "Anar al directori",
"go_to_search": "Vés a cercar",
"gps": "GPS",
"gps_missing": "Sense GPS",
"grant_permission": "Concedir permís",
"group_albums_by": "Agrupa àlbums per...",
"group_country": "Agrupar per país",
@@ -1197,7 +1201,7 @@
"library_options": "Opcions de biblioteca",
"library_page_device_albums": "Àlbums al Dispositiu",
"library_page_new_album": "Nou àlbum",
"library_page_sort_asset_count": "Nombre d'elements",
"library_page_sort_asset_count": "Quantitat d'elements",
"library_page_sort_created": "Creat més recentment",
"library_page_sort_last_modified": "Darrera modificació",
"library_page_sort_title": "Títol de l'àlbum",
@@ -1262,6 +1266,7 @@
"main_branch_warning": "Esteu utilitzant una versió en desenvolupament; Recomanem fer servir una versió publicada!",
"main_menu": "Menú principal",
"make": "Fabricant",
"manage_geolocation": "Gestioneu la vostra ubicació",
"manage_shared_links": "Administrar enllaços compartits",
"manage_sharing_with_partners": "Gestiona la compartició amb els companys",
"manage_the_app_settings": "Gestioneu la configuració de l'aplicació",
@@ -1407,6 +1412,8 @@
"open_the_search_filters": "Obriu els filtres de cerca",
"options": "Opcions",
"or": "o",
"organize_into_albums": "Organitzar en àlbums",
"organize_into_albums_description": "Posar fotos existents en àlbums utilitzant la configuració de sincronització actual",
"organize_your_library": "Organitzeu la llibreria",
"original": "original",
"other": "Altres",
@@ -1508,6 +1515,7 @@
"profile_drawer_client_out_of_date_minor": "L'aplicació mòbil està desactualitzada. Si us plau, actualitzeu a l'última versió menor.",
"profile_drawer_client_server_up_to_date": "El Client i el Servidor estan actualitzats",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Manera de només lectura activada. Feu doble click a la icona de l'avatar de l'usuari per sortir.",
"profile_drawer_server_out_of_date_major": "El servidor està desactualitzat. Si us plau, actualitzeu a l'última versió major.",
"profile_drawer_server_out_of_date_minor": "El servidor està desactualitzat. Si us plau, actualitzeu a l'última versió menor.",
"profile_image_of_user": "Imatge de perfil de {user}",
@@ -1546,6 +1554,7 @@
"purchase_server_description_2": "Estat del contribuent",
"purchase_server_title": "Servidor",
"purchase_settings_server_activated": "La clau de producte del servidor la gestiona l'administrador",
"query_asset_id": "Consulta d'identificació d'actius",
"queue_status": "En cua {count}/{total}",
"rating": "Valoració",
"rating_clear": "Esborrar valoració",
@@ -1553,6 +1562,8 @@
"rating_description": "Mostrar la valoració EXIF al panell d'informació",
"reaction_options": "Opcions de reacció",
"read_changelog": "Llegeix el registre de canvis",
"readonly_mode_disabled": "Mode de només lectura desactivat",
"readonly_mode_enabled": "Mode de només lectura activat",
"reassign": "Reassignar",
"reassigned_assets_to_existing_person": "{count, plural, one {S'ha reassignat # recurs} other {S'han reassignat # recursos}} a {name, select, null {una persona existent} other {{name}}}",
"reassigned_assets_to_new_person": "{count, plural, one {S'ha reassignat # recurs} other {S'han reassignat # recursos}} a una persona nova",
@@ -1722,6 +1733,7 @@
"select_user_for_sharing_page_err_album": "Error al crear l'àlbum",
"selected": "Seleccionat",
"selected_count": "{count, plural, one {# seleccionat} other {# seleccionats}}",
"selected_gps_coordinates": "Seleccio de coordinades GPS",
"send_message": "Envia missatge",
"send_welcome_email": "Envia correu de benvinguda",
"server_endpoint": "Endpoint de Servidor",
@@ -1863,7 +1875,7 @@
"slideshow_settings": "Configuració de diapositives",
"sort_albums_by": "Ordena àlbums per...",
"sort_created": "Data de creació",
"sort_items": "Nombre d'elements",
"sort_items": "Quantitat d'elements",
"sort_modified": "Data de modificació",
"sort_newest": "Foto més nova",
"sort_oldest": "Foto més antiga",
@@ -1941,7 +1953,9 @@
"to_change_password": "Canviar la contrasenya",
"to_favorite": "Prefereix",
"to_login": "Iniciar sessió",
"to_multi_select": "per multi-seleccionar",
"to_parent": "Anar als pares",
"to_select": "per seleccionar",
"to_trash": "Paperera",
"toggle_settings": "Canvia configuració",
"total": "Total",
@@ -1991,6 +2005,7 @@
"unstacked_assets_count": "No apilat {count, plural, one {# recurs} other {# recursos}}",
"untagged": "Sense etiqueta",
"up_next": "Pròxim",
"update_location_action_prompt": "Actualitza la ubicació de {count} elements seleccionats amb:",
"updated_at": "Actualitzat",
"updated_password": "Contrasenya actualitzada",
"upload": "Pujar",
@@ -2057,6 +2072,7 @@
"view_next_asset": "Mostra el següent element",
"view_previous_asset": "Mostra l'element anterior",
"view_qr_code": "Veure codi QR",
"view_similar_photos": "Veure fotos similars",
"view_stack": "Veure la pila",
"view_user": "Veure Usuari",
"viewer_remove_from_stack": "Elimina de la pila",

View File

@@ -597,8 +597,6 @@
"backup_setting_subtitle": "Správa nastavení zálohování na pozadí a na popředí",
"backup_settings_subtitle": "Správa nastavení nahrávání",
"backward": "Pozpátku",
"beta_sync": "Stav synchronizace (beta)",
"beta_sync_subtitle": "Správa nového systému synchronizace",
"biometric_auth_enabled": "Biometrické ověřování je povoleno",
"biometric_locked_out": "Jste vyloučeni z biometrického ověřování",
"biometric_no_options": "Biometrické možnosti nejsou k dispozici",
@@ -1076,10 +1074,7 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Tato funkce načítá externí zdroje z Googlu, aby mohla fungovat.",
"general": "Obecné",
"geolocation_instruction_all_have_location": "Všechny položky k tomuto datu již mají údaje o poloze. Zkuste zobrazit všechny položky nebo vyberte jiné datum",
"geolocation_instruction_location": "Klikněte na položku s GPS souřadnicemi, abyste mohli použít její polohu, nebo vyberte polohu přímo z mapy",
"geolocation_instruction_no_date": "Vyberte datum, abyste mohli spravovat údaje o poloze pro fotografie a videa z daného dne",
"geolocation_instruction_no_photos": "Pro tento den nebyly nalezeny žádné fotografie ani videa. Vyberte jiné datum pro jejich zobrazení",
"get_help": "Získat pomoc",
"get_wifiname_error": "Nepodařilo se získat název Wi-Fi. Zkontrolujte, zda jste udělili potřebná oprávnění a zda jste připojeni k Wi-Fi síti",
"getting_started": "Začínáme",
@@ -1417,6 +1412,8 @@
"open_the_search_filters": "Otevřít vyhledávací filtry",
"options": "Možnosti",
"or": "nebo",
"organize_into_albums": "Organizovat do alb",
"organize_into_albums_description": "Umístit existující fotky do alb s použitím aktuálního nastavení synchronizace",
"organize_your_library": "Uspořádejte si knihovnu",
"original": "originál",
"other": "Ostatní",
@@ -1518,7 +1515,7 @@
"profile_drawer_client_out_of_date_minor": "Mobilní aplikace je zastaralá. Aktualizujte ji na nejnovější verzi.",
"profile_drawer_client_server_up_to_date": "Klient a server jsou aktuální",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Režim pouze pro čtení je aktivován. Dvojitým klepnutím na ikonu avatara uživatele režim ukončíte.",
"profile_drawer_readonly_mode": "Režim jen pro čtení. Ukončíte ho dlouhým podržením ikony avataru.",
"profile_drawer_server_out_of_date_major": "Server je zastaralý. Aktualizujte na nejnovější hlavní verzi.",
"profile_drawer_server_out_of_date_minor": "Server je zastaralý. Aktualizujte je na nejnovější verzi.",
"profile_image_of_user": "Profilový obrázek uživatele {user}",
@@ -1557,6 +1554,7 @@
"purchase_server_description_2": "Stav podporovatele",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "Produktový klíč serveru spravuje správce",
"query_asset_id": "ID položky dotazu",
"queue_status": "Ve frontě {count}/{total}",
"rating": "Hodnocení hvězdičkami",
"rating_clear": "Vyčistit hodnocení",
@@ -1642,6 +1640,7 @@
"restore_user": "Obnovit uživatele",
"restored_asset": "Položka obnovena",
"resume": "Pokračovat",
"resume_paused_jobs": "Pokračovat {count, plural, one {v # pozastavené úloze} few {ve # pozastavených úlohách} other {v # pozastavených úlohách}}",
"retry_upload": "Opakování nahrávání",
"review_duplicates": "Kontrola duplicit",
"review_large_files": "Kontrola velkých souborů",
@@ -1735,7 +1734,7 @@
"select_user_for_sharing_page_err_album": "Nepodařilo se vytvořit album",
"selected": "Vybráno",
"selected_count": "{count, plural, one {# vybraný} few {# vybrané} other {# vybraných}}",
"selected_gps_coordinates": "vybrané GPS souřadnice",
"selected_gps_coordinates": "Vybrané GPS souřadnice",
"send_message": "Odeslat zprávu",
"send_welcome_email": "Poslat uvítací e-mail",
"server_endpoint": "Koncový bod serveru",
@@ -1846,10 +1845,8 @@
"shift_to_permanent_delete": "stiskněte ⇧ pro trvalé odstranění položky",
"show_album_options": "Zobrazit možnosti alba",
"show_albums": "Zobrazit alba",
"show_all_assets": "Zobrazit všechny položky",
"show_all_people": "Zobrazit všechny lidi",
"show_and_hide_people": "Zobrazit a skrýt osoby",
"show_assets_without_location": "Zobrazit položky bez polohy",
"show_file_location": "Zobrazit umístění souboru",
"show_gallery": "Zobrazit galerii",
"show_hidden_people": "Zobrazit skryté lidi",
@@ -1920,6 +1917,8 @@
"sync_albums_manual_subtitle": "Synchronizovat všechna nahraná videa a fotografie do vybraných záložních alb",
"sync_local": "Synchronizovat místní",
"sync_remote": "Synchronizovat vzdálené",
"sync_status": "Stav synchronizace",
"sync_status_subtitle": "Zobrazit a spravovat synchronizační systém",
"sync_upload_album_setting_subtitle": "Vytvořit a nahrát fotografie a videa do vybraných alb na Immich",
"tag": "Značka",
"tag_assets": "Přiřadit značku",
@@ -1979,6 +1978,7 @@
"trash_page_select_assets_btn": "Vybrat položky",
"trash_page_title": "Koš ({count})",
"trashed_items_will_be_permanently_deleted_after": "Smazané položky budou trvale odstraněny po {days, plural, one {# dni} other {# dnech}}.",
"troubleshoot": "Diagnostika",
"type": "Typ",
"unable_to_change_pin_code": "Nelze změnit PIN kód",
"unable_to_setup_pin_code": "Nelze nastavit PIN kód",
@@ -2034,7 +2034,6 @@
"use_biometric": "Použít biometrické údaje",
"use_current_connection": "použít aktuální připojení",
"use_custom_date_range": "Použít vlastní rozsah dat",
"use_this_location": "Klikněte pro použití polohy",
"user": "Uživatel",
"user_has_been_deleted": "Tento uživatel byl smazán.",
"user_id": "ID uživatele",
@@ -2077,6 +2076,7 @@
"view_next_asset": "Zobrazit další položku",
"view_previous_asset": "Zobrazit předchozí položku",
"view_qr_code": "Zobrazit QR kód",
"view_similar_photos": "Zobrazit podobné fotky",
"view_stack": "Zobrazit seskupení",
"view_user": "Zobrazit uživatele",
"viewer_remove_from_stack": "Odstranit ze zásobníku",

View File

@@ -1,8 +1,8 @@
{
"about": "Om",
"about": "Om os",
"account": "Konto",
"account_settings": "Kontoindstillinger",
"acknowledge": "Godkend",
"acknowledge": "Anerkendelse",
"action": "Handling",
"action_common_update": "Opdater",
"actions": "Handlinger",
@@ -126,13 +126,13 @@
"machine_learning_clip_model": "CLIP-model",
"machine_learning_clip_model_description": "Navnet på CLIP-modellen på listen <link>her</link>. Bemærk at du skal genkøre \"Smart Søgning\"-jobbet for alle billeder, hvis du skifter model.",
"machine_learning_duplicate_detection": "Dubletdetektion",
"machine_learning_duplicate_detection_enabled": "Aktiver duplikatdetektion",
"machine_learning_duplicate_detection_enabled_description": "Når slået fra, vil nøjagtigt identiske mediefiler blive de-duplikerede.",
"machine_learning_duplicate_detection_setting_description": "Brug CLIP-indlejringer til at finde sandsynlige duplikater",
"machine_learning_duplicate_detection_enabled": "Aktiver dubletdetektion",
"machine_learning_duplicate_detection_enabled_description": "Når slået fra, vil nøjagtigt identiske mediefiler stadig blive de-duplikerede.",
"machine_learning_duplicate_detection_setting_description": "Brug CLIP-indlejringer til at finde sandsynlige dubletter",
"machine_learning_enabled": "Aktivér maskinlæring",
"machine_learning_enabled_description": "Hvis deaktiveret, vil alle ML-funktioner blive deaktiveret uanset nedenstående indstillinger.",
"machine_learning_facial_recognition": "Ansigtsgenkendelse",
"machine_learning_facial_recognition_description": "Registrer, genkend og grupper ansigter i billeder",
"machine_learning_facial_recognition_description": "Opdag, genkend og gruppér ansigter i billeder",
"machine_learning_facial_recognition_model": "Ansigtsgenkendelsesmodel",
"machine_learning_facial_recognition_model_description": "Modellerne er listet i faldende størrelsesorden. Større modeller er langsommere og bruger mere hukommelse, men giver bedre resultater. Bemærk, at du skal køre ansigtsopdagelsesopgaven igen for alle billeder, når du ændrer en model.",
"machine_learning_facial_recognition_setting": "Aktivér ansigtgenkendelse",
@@ -221,6 +221,8 @@
"oauth_mobile_redirect_uri": "Mobilomdiregerings-URL",
"oauth_mobile_redirect_uri_override": "Tilsidesættelse af mobil omdiregerings-URL",
"oauth_mobile_redirect_uri_override_description": "Aktiver, når OAuth-udbyderen ikke tillader en mobil URI, som ''{callback}''",
"oauth_role_claim": "Rolle attribut",
"oauth_role_claim_description": "Tildel automatisk admin adgang på basis af forekomst af denne påstand. Dén kan være enten 'user' eller 'admin'.",
"oauth_settings": "OAuth",
"oauth_settings_description": "Administrer OAuth login-indstillinger",
"oauth_settings_more_details": "Læs flere detaljer om funktionen i <link>dokumentationen</link>.",
@@ -269,6 +271,7 @@
"storage_template_migration_info": "Lager-skabelonen vil konvertere alle filendelser til små bogstaver. Skabelonændringer vil kun gælde for nye mediefiler. For at anvende skabelonen retroaktivt på tidligere uploadede mediefiler skal du køre <link>{job}</link>.",
"storage_template_migration_job": "Lager Skabelon Migreringsjob",
"storage_template_more_details": "For flere detaljer om denne funktion, referer til <template-link>Lager Skabelonen</template-link> og dens <implications-link>implikationer</implications-link>",
"storage_template_onboarding_description_v2": "Når aktiveret, så vil denne funktion auto-organisere filer på grundlag af en brugerdefineret skabelon. For nærmere, se <link>dokumentation</link>.",
"storage_template_path_length": "Anslået sti-længde begrænsning <b>{length, number}</b>/{limit, number}",
"storage_template_settings": "Lagringsskabelon",
"storage_template_settings_description": "Administrer mappestrukturen og filnavnet for den uploadede mediefil",
@@ -355,7 +358,9 @@
"trash_number_of_days_description": "Antal dage aktiver i skraldespanden skal beholdes inden de fjernes permanent",
"trash_settings": "Skraldeindstillinger",
"trash_settings_description": "Administrér skraldeindstillinger",
"unlink_all_oauth_accounts": "Ophæv link til alle OAuth konti",
"unlink_all_oauth_accounts_description": "Husk at fjerne linket til alle OAuth konti før du migrerer til en ny udbyder.",
"unlink_all_oauth_accounts_prompt": "Er du sikker på, at du vil ophæve link til alle OAuth konti? Dette vil nulstille OAuth ID for hver bruger og kan ikke fortrydes.",
"user_cleanup_job": "Bruger-oprydning",
"user_delete_delay": "<b>{user}</b>'s konto og mediefiler vil blive planlagt til permanent sletning om {delay, plural, one {# dag} other {# dage}}.",
"user_delete_delay_settings": "Slet forsinkelse",
@@ -390,7 +395,9 @@
"advanced_settings_prefer_remote_subtitle": "Nogle enheder er meget lang tid om at indlæse miniaturebilleder af lokale elementer. Aktiver denne indstilling for at indlæse elementer fra serveren i stedet.",
"advanced_settings_prefer_remote_title": "Foretræk elementer på serveren",
"advanced_settings_proxy_headers_subtitle": "Definer proxy headers Immich skal sende med hver netværks forespørgsel",
"advanced_settings_proxy_headers_title": "Proxy Headers",
"advanced_settings_proxy_headers_title": "Proxy headere",
"advanced_settings_readonly_mode_subtitle": "Aktiverer skrivebeskyttet tilstand, hvor billederne alene kan vises. Ting som at vælge flere billeder, dele, caste og slette er alle deaktiveret. Aktiver skrivebeskyttet tilstand via en bruger avatar fra hovedskærmen",
"advanced_settings_readonly_mode_title": "Skrivebeskyttet tilstand",
"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_sync_remote_deletions_subtitle": "Slet eller gendan automatisk en mediefil på denne enhed, når denne handling foretages på Immich webinterface",
@@ -406,6 +413,7 @@
"album_cover_updated": "Albumcover opdateret",
"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_deleted": "Album slettet",
"album_info_card_backup_album_excluded": "EKSKLUDERET",
"album_info_card_backup_album_included": "INKLUDERET",
"album_info_updated": "Albuminfo opdateret",
@@ -415,6 +423,7 @@
"album_options": "Albumindstillinger",
"album_remove_user": "Fjern bruger?",
"album_remove_user_confirmation": "Er du sikker på at du vil fjerne {user}?",
"album_search_not_found": "Ingen album fundet som matcher din søgning",
"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_updated": "Album opdateret",
"album_updated_setting_description": "Modtag en emailnotifikation når et delt album får nye mediefiler",
@@ -434,6 +443,7 @@
"albums_default_sort_order": "Standard album sortering",
"albums_default_sort_order_description": "Grundlæggende sortering ved oprettelse af nyt album.",
"albums_feature_description": "Samling af billeder der kan deles med andre brugere.",
"albums_on_device_count": "Albummer på enheden ({count})",
"all": "Alt",
"all_albums": "Alle albummer",
"all_people": "Alle personer",
@@ -453,7 +463,9 @@
"app_bar_signout_dialog_title": "Log ud",
"app_settings": "Appindstillinger",
"appears_in": "Optræder i",
"apply_count": "Brug ({count, number})",
"archive": "Arkiv",
"archive_action_prompt": "{count} føjet til arkiv",
"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 ({count})",
@@ -488,10 +500,12 @@
"asset_uploading": "Uploader…",
"asset_viewer_settings_subtitle": "Administrer indstillinger for gallerifremviser",
"asset_viewer_settings_title": "Billedviser",
"assets": "elementer",
"assets": "Objekter",
"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_albums_count": "Tilføjet {assetTotal, plural, one {# asset} other {# assets}} til {albumTotal, plural, one {# album} other {# albums}}",
"assets_cannot_be_added_to_album_count": "{count, plural, one {Billed} other {Billeder}} kan ikke blive tilføjet til album",
"assets_cannot_be_added_to_albums": "{count, plural, one {Asset} other {Assets}} kan ikke føjes til i nogen af albummerne",
"assets_count": "{count, plural, one {# mediefil} other {# mediefiler}}",
"assets_deleted_permanently": "{count} element(er) blev fjernet permanent",
"assets_deleted_permanently_from_server": "{count} element(er) blev fjernet permanent fra Immich serveren",
@@ -508,6 +522,7 @@
"assets_trashed_count": "{count, plural, one {# mediefil} other {# mediefiler}} smidt i papirkurven",
"assets_trashed_from_server": "{count} element(er) blev smidt i Immich 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_albums_count": "{count, plural, one {Asset was} other {Assets were}} er allerede en del af albummerne",
"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",
@@ -572,13 +587,15 @@
"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_info_card_assets": "objekter",
"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": "Backup indstillinger",
"backup_options_page_title": "Backupindstillinger",
"backup_setting_subtitle": "Administrer indstillnger for upload i forgrund og baggrund",
"backup_settings_subtitle": "Håndtere upload indstillinger",
"backward": "Baglæns",
"biometric_auth_enabled": "Biometrisk adgangskontrol slået til",
"biometric_locked_out": "Du er låst ude af biometrisk adgangskontrol",
@@ -614,6 +631,7 @@
"cancel": "Annullér",
"cancel_search": "Annullér søgning",
"canceled": "Annulleret",
"canceling": "Annullerer",
"cannot_merge_people": "Kan ikke sammenflette personer",
"cannot_undo_this_action": "Du kan ikke fortryde denne handling!",
"cannot_update_the_description": "Kan ikke opdatere beskrivelsen",
@@ -645,6 +663,7 @@
"clear": "Ryd",
"clear_all": "Ryd alle",
"clear_all_recent_searches": "Ryd alle seneste søgninger",
"clear_file_cache": "Ryd filcache",
"clear_message": "Ryd bedsked",
"clear_value": "Ryd værdi",
"client_cert_dialog_msg_confirm": "OK",
@@ -715,6 +734,7 @@
"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_shared_link": "Opret delt link",
"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_user": "Opret bruger",
@@ -727,9 +747,11 @@
"current_server_address": "Nuværende serveraddresse",
"custom_locale": "Brugerdefineret lokale",
"custom_locale_description": "Formatér datoer og tal baseret på sproget og regionen",
"custom_url": "Tilpasset URL",
"daily_title_text_date": "E, dd MMM",
"daily_title_text_date_year": "E, dd MMM, yyyy",
"dark": "Mørk",
"dark_theme": "Skift til mørkt tema",
"date_after": "Dato efter",
"date_and_time": "Dato og klokkeslæt",
"date_before": "Dato før",
@@ -737,6 +759,7 @@
"date_of_birth_saved": "Fødselsdatoen blev gemt korrekt",
"date_range": "Datointerval",
"day": "Dag",
"days": "Dage",
"deduplicate_all": "Kopier alle",
"deduplication_criteria_1": "Billedstørrelse i bytes",
"deduplication_criteria_2": "Antal EXIF-data",
@@ -745,6 +768,8 @@
"default_locale": "Standardlokalitet",
"default_locale_description": "Formatér datoer og tal baseret på din browsers regions indstillinger",
"delete": "Slet",
"delete_action_confirmation_message": "Er du sikker på, at du vil slette dette objekt? Denne handling vil flytte objektet til serverens papirkurv, og vil spørge dig, om du vil slette den lokalt",
"delete_action_prompt": "{count} slettet",
"delete_album": "Slet album",
"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",
@@ -758,9 +783,12 @@
"delete_key": "Slet nøgle",
"delete_library": "Slet bibliotek",
"delete_link": "Slet link",
"delete_local_action_prompt": "{count} slettet lokalt",
"delete_local_dialog_ok_backed_up_only": "Slet kun backup",
"delete_local_dialog_ok_force": "Slet alligevel",
"delete_others": "Slet andre",
"delete_permanently": "Slet permanent",
"delete_permanently_action_prompt": "{count} slettet permanent",
"delete_shared_link": "Slet delt link",
"delete_shared_link_dialog_title": "Slet delt link",
"delete_tag": "Slet tag",
@@ -771,6 +799,7 @@
"description": "Beskrivelse",
"description_input_hint_text": "Tilføj en beskrivelse...",
"description_input_submit_error": "Fejl med at opdatere beskrivelsen. Tjek loggen for flere detaljer",
"deselect_all": "Afmarkér alt",
"details": "DETALJER",
"direction": "Retning",
"disabled": "Deaktiveret",
@@ -788,6 +817,7 @@
"documentation": "Dokumentation",
"done": "Færdig",
"download": "Hent",
"download_action_prompt": "Downloader {count} objekter",
"download_canceled": "Download annulleret",
"download_complete": "Download fuldført",
"download_enqueue": "Donload sat i kø",
@@ -814,8 +844,12 @@
"edit": "Rediger",
"edit_album": "Redigér album",
"edit_avatar": "Redigér avatar",
"edit_birthday": "Rediger fødselsdag",
"edit_date": "Redigér dato",
"edit_date_and_time": "Redigér dato og tid",
"edit_date_and_time_action_prompt": "{count} dato og tid redigeret",
"edit_date_and_time_by_offset": "Forskyde dato med offset",
"edit_date_and_time_by_offset_interval": "Nyt datointerval: {from} - {to}",
"edit_description": "Rediger beskrivelse",
"edit_description_prompt": "Vælg venligst en ny beskrivelse:",
"edit_exclusion_pattern": "Redigér udelukkelsesmønster",
@@ -825,6 +859,7 @@
"edit_key": "Redigér nøgle",
"edit_link": "Rediger link",
"edit_location": "Rediger placering",
"edit_location_action_prompt": "{count} geolokation redigeret",
"edit_location_dialog_title": "Placering",
"edit_name": "Rediger navn",
"edit_people": "Redigér personer",
@@ -843,6 +878,7 @@
"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!",
"enable": "Aktivér",
"enable_backup": "Aktiver backup",
"enable_biometric_auth_description": "Indtast din PIN kode for at slå biometrisk adgangskontrol til",
"enabled": "Aktiveret",
"end_date": "Slutdato",
@@ -886,6 +922,7 @@
"failed_to_load_notifications": "Kunne ikke indlæse notifikationer",
"failed_to_load_people": "Indlæsning af personer mislykkedes",
"failed_to_remove_product_key": "Fjernelse af produktnøgle mislykkedes",
"failed_to_reset_pin_code": "Kunne ikke resette PIN-koden",
"failed_to_stack_assets": "Det lykkedes ikke at stable mediefiler",
"failed_to_unstack_assets": "Det lykkedes ikke at fjerne gruperingen af mediefiler",
"failed_to_update_notification_status": "Kunne ikke uploade notifikations status",
@@ -894,6 +931,7 @@
"paths_validation_failed": "{paths, plural, one {# sti} other {# stier}} slog fejl ved validering",
"profile_picture_transparent_pixels": "Profilbilleder kan ikke have gennemsigtige pixels. Zoom venligst ind og/eller flyt billedet.",
"quota_higher_than_disk_size": "Du har sat en kvote der er større end disken",
"something_went_wrong": "Noget gik galt",
"unable_to_add_album_users": "Ikke i stand til at tilføje brugere til album",
"unable_to_add_assets_to_shared_link": "Kan ikke tilføje mediefiler til det delte link",
"unable_to_add_comment": "Ikke i stand til at tilføje kommentar",
@@ -979,6 +1017,7 @@
},
"exif": "Exif",
"exif_bottom_sheet_description": "Tilføj beskrivelse...",
"exif_bottom_sheet_description_error": "Fejl ved opdatering af beskrivelsen",
"exif_bottom_sheet_details": "DETALJER",
"exif_bottom_sheet_location": "LOKATION",
"exif_bottom_sheet_people": "PERSONER",
@@ -996,6 +1035,8 @@
"explorer": "Udforske",
"export": "Eksportér",
"export_as_json": "Eksportér som JSON",
"export_database": "Eksporter database",
"export_database_description": "Eksporter SQLite databasen",
"extension": "Udvidelse",
"external": "Ekstern",
"external_libraries": "Eksterne biblioteker",
@@ -1007,6 +1048,7 @@
"failed_to_load_assets": "Kunne ikke indlæse mediefiler",
"failed_to_load_folder": "Kunne ikke indlæse mappe",
"favorite": "Favorit",
"favorite_action_prompt": "{count} føjet til favoritter",
"favorite_or_unfavorite_photo": "Tilføj eller fjern fra yndlingsbilleder",
"favorites": "Favoritter",
"favorites_page_no_favorites": "Ingen favoritter blev fundet",
@@ -1021,21 +1063,26 @@
"filter_people": "Filtrér personer",
"filter_places": "Filtrer steder",
"find_them_fast": "Find dem hurtigt med søgning via navn",
"first": "Første",
"fix_incorrect_match": "Fix forkert match",
"folder": "Mappe",
"folder_not_found": "Mappe ikke fundet",
"folders": "Mapper",
"folders_feature_description": "Gennemse mappevisningen efter fotos og videoer på filsystemet",
"forgot_pin_code_question": "Har du glemt PIN-koden?",
"forward": "Fremad",
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Denne funktion indlæser eksterne ressourcer fra Google for at virke.",
"general": "Generel",
"geolocation_instruction_location": "Klik på et objekt med GPS-koordinater for at bruge dettes position, eller vælg position direkte på kortet",
"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",
"go_back": "Gå tilbage",
"go_to_folder": "Gå til mappe",
"go_to_search": "Gå til søgning",
"gps": "GPS",
"gps_missing": "Ingen GPS",
"grant_permission": "Giv tilladelse",
"group_albums_by": "Gruppér albummer efter...",
"group_country": "Gruppér efter land",
@@ -1046,6 +1093,9 @@
"haptic_feedback_switch": "Slå haptisk feedback til",
"haptic_feedback_title": "Haptisk feedback",
"has_quota": "Har kvote",
"hash_asset": "Hash objekter",
"hashed_assets": "Hashede objekter",
"hashing": "Hasher",
"header_settings_add_header_tip": "Tilføj Header",
"header_settings_field_validator_msg": "Værdi kan ikke være tom",
"header_settings_header_name_input": "Header navn",
@@ -1077,7 +1127,9 @@
"home_page_upload_err_limit": "Det er kun muligt at lave sikkerhedskopi af 30 elementer ad gangen. Springer over",
"host": "Host",
"hour": "Time",
"hours": "Timer",
"id": "ID",
"idle": "Inaktiv",
"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",
@@ -1135,10 +1187,13 @@
"language_no_results_title": "Ingen sprog fundet",
"language_search_hint": "Vælg sprog...",
"language_setting_description": "Vælg dit foretrukne sprog",
"large_files": "Store filer",
"last": "Sidste",
"last_seen": "Sidst set",
"latest_version": "Seneste version",
"latitude": "Breddegrad",
"leave": "Forlad",
"leave_album": "Forlad album",
"lens_model": "Objektivmodel",
"let_others_respond": "Lad andre svare",
"level": "Niveau",
@@ -1150,7 +1205,9 @@
"library_page_sort_created": "Senest oprettet",
"library_page_sort_last_modified": "Sidst redigeret",
"library_page_sort_title": "Albumtitel",
"licenses": "Licenser",
"light": "Lys",
"like": "Synes om",
"like_deleted": "Ligesom slettet",
"link_motion_video": "Link bevægelsesvideo",
"link_to_oauth": "Link til OAuth",
@@ -1158,7 +1215,9 @@
"list": "Liste",
"loading": "Indlæser",
"loading_search_results_failed": "Indlæsning af søgeresultater fejlede",
"local": "Lokal",
"local_asset_cast_failed": "Kan ikke caste et aktiv, der ikke er uploadet til serveren",
"local_assets": "Lokale objekter",
"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",
@@ -1172,6 +1231,7 @@
"locked_folder": "Låst mappe",
"log_out": "Log ud",
"log_out_all_devices": "Log ud af alle enheder",
"logged_in_as": "Logget ind som {user}",
"logged_out_all_devices": "Logget ud af alle enheder",
"logged_out_device": "Logget ud af enhed",
"login": "Log ind",
@@ -1180,7 +1240,7 @@
"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_endpoint_url": "Server endepunkt 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",
@@ -1206,6 +1266,7 @@
"main_branch_warning": "Du bruger en udviklingsversion; vi anbefaler kraftigt at bruge en udgivelsesversion!",
"main_menu": "Hovedmenu",
"make": "Producent",
"manage_geolocation": "Administrer placering",
"manage_shared_links": "Håndter delte links",
"manage_sharing_with_partners": "Administrér deling med partnere",
"manage_the_app_settings": "Administrer appindstillinger",
@@ -1258,6 +1319,7 @@
"merged_people_count": "{count, plural, one {# person} other {# personer}} lagt sammen",
"minimize": "Minimér",
"minute": "Minut",
"minutes": "Minutter",
"missing": "Mangler",
"model": "Model",
"month": "Måned",
@@ -1265,6 +1327,7 @@
"more": "Mere",
"move": "Flyt",
"move_off_locked_folder": "Flyt ud af låst mappe",
"move_to_lock_folder_action_prompt": "{count} føjet til i den låste mappe",
"move_to_locked_folder": "Flyt til låst mappe",
"move_to_locked_folder_confirmation": "Disse billeder og videoer vil blive fjernet fra alle albums, og vil kun være synlig fra den låste mappe",
"moved_to_archive": "Flyttede {count, plural, one {# mediefil} other {# mediefiler}} til arkivet",
@@ -1276,6 +1339,9 @@
"my_albums": "Mine albummer",
"name": "Navn",
"name_or_nickname": "Navn eller kælenavn",
"network_requirement_photos_upload": "Benyt mobildatanettet for at sikkerhedskopiere dine fotos",
"network_requirement_videos_upload": "Benyt mobildatanettet for at sikkerhedskopiere dine videoer",
"network_requirements_updated": "Netværkskravene er ændret, backup-køen nulstilles",
"networking_settings": "Netværk",
"networking_subtitle": "Administrer serverens endepunktindstillinger",
"never": "aldrig",
@@ -1311,6 +1377,7 @@
"no_results": "Ingen resultater",
"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_uploads_in_progress": "Ingen upload i gang",
"not_in_any_album": "Ikke i noget album",
"not_selected": "Ikke valgt",
"note_apply_storage_label_to_previously_uploaded assets": "Bemærk: For at anvende Lagringsmærkat på tidligere uploadede medier, kør",
@@ -1326,6 +1393,7 @@
"oauth": "OAuth",
"official_immich_resources": "Officielle Immich-ressourcer",
"offline": "Offline",
"offset": "Forskydning",
"ok": "Ok",
"oldest_first": "Ældste først",
"on_this_device": "På denne enhed",
@@ -1344,14 +1412,17 @@
"open_the_search_filters": "Åbn søgefiltre",
"options": "Handlinger",
"or": "eller",
"organize_into_albums": "Organiser i album",
"organize_into_albums_description": "Sæt eksisterende billeder i albummer ved hjælp af aktuelle synkroniseringsindstillinger",
"organize_your_library": "Organisér dit bibliotek",
"original": "original",
"other": "Andet",
"other_devices": "Andre enheder",
"other_entities": "Andre enheder",
"other_variables": "Andre variable",
"owned": "Egne",
"owner": "Ejer",
"partner": "Partner",
"partner": "Partnerpartner",
"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_location": "Stedet, hvor dine billeder blev taget",
@@ -1401,7 +1472,10 @@
"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": "Personperson",
"person_age_months": "{months, plural, one {# month} other {# months}} gammel",
"person_age_year_months": "1 år, {months, plural, one {# month} other {# months}} gammel",
"person_age_years": "{years, plural, other {# years}} gammel",
"person_birthdate": "Født den {date}",
"person_hidden": "{name}{hidden, select, true { (skjult)} other {}}",
"photo_shared_all_users": "Det ser ud til, at du har delt dine billeder med alle brugere, eller også har du ikke nogen bruger at dele med.",
@@ -1441,6 +1515,7 @@
"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_readonly_mode": "Skrivebeskyttet tilstand aktiveret. Lang tryk på bruger avatar ikonet for at afslutte.",
"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}",
@@ -1476,15 +1551,19 @@
"purchase_remove_server_product_key": "Fjern serverens produktnøgle",
"purchase_remove_server_product_key_prompt": "Er du sikker på, at du vil fjerne serverproduktnøglen?",
"purchase_server_description_1": "For hele serveren",
"purchase_server_description_2": "Supporter status",
"purchase_server_description_2": "Supporterstatus",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "Serverens produktnøgle administreres af administratoren",
"query_asset_id": "Forespørgsels Asset ID",
"queue_status": "Kø {count}/{total}",
"rating": "Stjernebedømmelse",
"rating_clear": "Nulstil vurdering",
"rating_count": "{count, plural, one {# stjerne} other {# stjerner}}",
"rating_description": "Vis EXIF-klassificeringen i infopanelet",
"reaction_options": "Reaktionsindstillinger",
"read_changelog": "Læs ændringslog",
"readonly_mode_disabled": "Skrivebeskyttet tilstand deaktiveret",
"readonly_mode_enabled": "Skrivebeskyttet tilstand aktiveret",
"reassign": "Gentildel",
"reassigned_assets_to_existing_person": "{count, plural, one {# mediefil} other {# mediefiler}} er blevet gentildelt til {name, select, null {en eksisterende person} other {{name}}}",
"reassigned_assets_to_new_person": "Gentildelt {count, plural, one {# aktiv} other {# aktiver}} til en ny person",
@@ -1507,6 +1586,8 @@
"refreshing_faces": "Opdaterer ansigter",
"refreshing_metadata": "Opdaterer metadata",
"regenerating_thumbnails": "Regenererer forhåndsvisninger",
"remote": "Eksternt",
"remote_assets": "Eksterne objekter",
"remove": "Fjern",
"remove_assets_album_confirmation": "Er du sikker på, at du vil fjerne {count, plural, one {# aktiv} other {# aktiver}} fra albummet?",
"remove_assets_shared_link_confirmation": "Er du sikker på, at du vil fjerne {count, plural, one {# aktiv} other {# aktiver}} fra dette delte link?",
@@ -1514,7 +1595,9 @@
"remove_custom_date_range": "Fjern tilpasset datointerval",
"remove_deleted_assets": "Fjern slettede mediefiler",
"remove_from_album": "Fjern fra album",
"remove_from_album_action_prompt": "{count} fjernet fra albummet",
"remove_from_favorites": "Fjern fra favoritter",
"remove_from_lock_folder_action_prompt": "{count} fjernet fra den låste mappe",
"remove_from_locked_folder": "Fjern fra låst mappe",
"remove_from_locked_folder_confirmation": "Er du sikker på at du vil flytte disse billeder og videoer ud af den låste mappe? De vil være synlige i dit bibliotek.",
"remove_from_shared_link": "Fjern fra delt link",
@@ -1542,19 +1625,29 @@
"reset_password": "Nulstil adgangskode",
"reset_people_visibility": "Nulstil personsynlighed",
"reset_pin_code": "Nulstil PIN kode",
"reset_pin_code_description": "Hvis du har glemt din PIN-kode, kan du kontakte serveradministratoren for at få den stillet tilbage",
"reset_pin_code_success": "PIN-koden er stillet tilbage",
"reset_pin_code_with_password": "Du kan altid nulstille din PIN-kode med dit password",
"reset_sqlite": "Reset SQLite Databasen",
"reset_sqlite_confirmation": "Er du sikker på, at du vil nulstille SQLite databasen? Du er nødt til at logge ud og ind igen for at gensynkronisere dine data",
"reset_sqlite_success": "Vellykket reset af SQLite databasen",
"reset_to_default": "Nulstil til standard",
"resolve_duplicates": "Løs dubletter",
"resolved_all_duplicates": "Alle dubletter løst",
"restore": "Gendan",
"restore_all": "Gendan alle",
"restore_trash_action_prompt": "{count} genskabt fra papirkurven",
"restore_user": "Gendan bruger",
"restored_asset": "Gendannet mediefilen",
"resume": "Genoptag",
"resume_paused_jobs": "Fortsæt {count, plural, one {# paused job} other {# paused jobs}}",
"retry_upload": "Forsøg upload igen",
"review_duplicates": "Gennemgå dubletter",
"review_large_files": "Gennemgå store filer",
"role": "Rolle",
"role_editor": "Redaktør",
"role_viewer": "Seer",
"running": "Kører",
"save": "Gem",
"save_to_gallery": "Gem til galleri",
"saved_api_key": "Gemt API-nøgle",
@@ -1627,6 +1720,7 @@
"select_album_cover": "Vælg albumcover",
"select_all": "Vælg alle",
"select_all_duplicates": "Vælg alle dubletter",
"select_all_in": "Vælg alt i {group}",
"select_avatar_color": "Vælg avatarfarve",
"select_face": "Vælg ansigt",
"select_featured_photo": "Vælg forsidebillede",
@@ -1640,6 +1734,7 @@
"select_user_for_sharing_page_err_album": "Fejlede i at oprette et nyt album",
"selected": "Valgt",
"selected_count": "{count, plural, one {# valgt} other {# valgte}}",
"selected_gps_coordinates": "Udvalgte GPS Koordinater",
"send_message": "Send besked",
"send_welcome_email": "Send velkomstemail",
"server_endpoint": "Server endepunkt",
@@ -1677,7 +1772,7 @@
"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_looping_title": "Looper",
"setting_video_viewer_original_video_subtitle": "Når der streames video fra serveren, afspil da den originale selv når en omkodet udgave er tilgængelig. Kan føre til buffering. Videoer, der er tilgængelige lokalt, afspilles i original kvalitet uanset denne indstilling.",
"setting_video_viewer_original_video_title": "Tving original video",
"settings": "Indstillinger",
@@ -1685,6 +1780,7 @@
"settings_saved": "Indstillinger er gemt",
"setup_pin_code": "Sæt in PIN kode",
"share": "Del",
"share_action_prompt": "Delte {count} objekter",
"share_add_photos": "Tilføj billeder",
"share_assets_selected": "{count} valgt",
"share_dialog_preparing": "Forbereder...",
@@ -1706,6 +1802,7 @@
"shared_link_clipboard_copied_massage": "Kopieret til udklipsholderen",
"shared_link_clipboard_text": "Link: {link}\nAdgangskode: {password}",
"shared_link_create_error": "Der opstod en fejl i oprettelsen af et delt link",
"shared_link_custom_url_description": "Adgang til dette delte link med en selvdefineret URL",
"shared_link_edit_description_hint": "Indtast beskrivelse",
"shared_link_edit_expire_after_option_day": "1 dag",
"shared_link_edit_expire_after_option_days": "{count} dage",
@@ -1731,6 +1828,7 @@
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Håndter delte links",
"shared_link_options": "Muligheder for delt link",
"shared_link_password_description": "Kræv et kodeord for at få adgang til dette delte link",
"shared_links": "Delte links",
"shared_links_description": "Del billeder og videoer med et link",
"shared_photos_and_videos_count": "{assetCount, plural, other {# delte billeder & videoer.}}",
@@ -1780,12 +1878,14 @@
"sort_created": "Dato oprettet",
"sort_items": "Antal genstande",
"sort_modified": "Ændret dato",
"sort_newest": "Nyeste foto",
"sort_oldest": "Ældste foto",
"sort_people_by_similarity": "Sorter efter personer der ligner hinanden",
"sort_recent": "Seneste foto",
"sort_title": "Titel",
"source": "Kilde",
"stack": "Stak",
"stack_action_prompt": "{count} stakket",
"stack_duplicates": "Stak dubletter",
"stack_select_one_photo": "Vælg ét hovedbillede til stakken",
"stack_selected_photos": "Stak valgte billeder",
@@ -1795,7 +1895,7 @@
"start_date": "Startdato",
"state": "Stat",
"status": "Status",
"stop_casting": "Stop casting",
"stop_casting": "Stop støbning",
"stop_motion_photo": "Stopmotionbillede",
"stop_photo_sharing": "Stop med at dele dine billeder?",
"stop_photo_sharing_description": "{partner} vil ikke længere kunne tilgå dine billeder.",
@@ -1805,6 +1905,7 @@
"storage_quota": "Lagringskvota",
"storage_usage": "{used} ud af {available} brugt",
"submit": "Indsend",
"success": "Vellykket",
"suggestions": "Anbefalinger",
"sunrise_on_the_beach": "Solopgang på stranden",
"support": "Support",
@@ -1814,6 +1915,10 @@
"sync": "Synkronisér",
"sync_albums": "Synkroniser albummer",
"sync_albums_manual_subtitle": "Synkroniser alle uploadet billeder og videoer til de valgte backupalbummer",
"sync_local": "Synkroniser lokalt",
"sync_remote": "Synkroniser eksternt",
"sync_status": "Synkroniserings Status",
"sync_status_subtitle": "Se og administrér synkroniseringssystemet",
"sync_upload_album_setting_subtitle": "Opret og upload dine billeder og videoer til de valgte albummer i Immich",
"tag": "Tag",
"tag_assets": "Tag mediefiler",
@@ -1824,6 +1929,7 @@
"tag_updated": "Opdateret tag: {tag}",
"tagged_assets": "Tagget {count, plural, one {# aktiv} other {# aktiver}}",
"tags": "Tags",
"tap_to_run_job": "Tryk for at køre jobbet",
"template": "Skabelon",
"theme": "Tema",
"theme_selection": "Temavalg",
@@ -1850,12 +1956,15 @@
"to_change_password": "Skift adgangskode",
"to_favorite": "Gør til favorit",
"to_login": "Login",
"to_multi_select": "For at vælge flere",
"to_parent": "Gå op",
"to_select": "for at vælge",
"to_trash": "Papirkurv",
"toggle_settings": "Slå indstillinger til eller fra",
"total": "Total",
"total_usage": "Samlet forbrug",
"trash": "Papirkurv",
"trash_action_prompt": "{count} flyttet til papirkurven",
"trash_all": "Smid alle ud",
"trash_count": "Slet {count, number}",
"trash_delete_asset": "Flyt mediefil til Papirkurv",
@@ -1869,13 +1978,16 @@
"trash_page_select_assets_btn": "Vælg elementer",
"trash_page_title": "Papirkurv ({count})",
"trashed_items_will_be_permanently_deleted_after": "Mediefiler i skraldespanden vil blive slettet permanent efter {days, plural, one {# dag} other {# dage}}.",
"troubleshoot": "Fejlfinding",
"type": "Type",
"unable_to_change_pin_code": "Kunne ikke ændre PIN kode",
"unable_to_setup_pin_code": "Kunne ikke sætte PIN kode",
"unarchive": "Afakivér",
"unarchive_action_prompt": "{count} slettet fra Arkiv",
"unarchived_count": "{count, plural, other {Uarkiveret #}}",
"undo": "Fortryd",
"unfavorite": "Fjern favorit",
"unfavorite_action_prompt": "{count} slettet fra Favoritter",
"unhide_person": "Stop med at skjule person",
"unknown": "Ukendt",
"unknown_country": "Ukendt land",
@@ -1891,16 +2003,23 @@
"unsaved_change": "Ændring, der ikke er gemt",
"unselect_all": "Fravælg alle",
"unselect_all_duplicates": "Fjern markeringen af alle dubletter",
"unselect_all_in": "Afmarkér alle i {group}",
"unstack": "Fjern fra stak",
"unstack_action_prompt": "{count} ustakket",
"unstacked_assets_count": "Ikke-stablet {count, plural, one {# aktiv} other {# aktiver}}",
"untagged": "Umærket",
"up_next": "Næste",
"update_location_action_prompt": "Opdater lokationen for {count} valgte objekter med:",
"updated_at": "Opdateret",
"updated_password": "Opdaterede adgangskode",
"upload": "Upload",
"upload_action_prompt": "{count} i kø til upload",
"upload_concurrency": "Upload samtidighed",
"upload_details": "Upload detaljer",
"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_finished": "Upload fuldført",
"upload_progress": "Resterende {remaining, number} - Behandlet {processed, number}/{total, number}",
"upload_skipped_duplicates": "Sprang over {count, plural, one {# duplet aktiv} other {# duplikerede aktiver}}",
"upload_status_duplicates": "Dubletter",
@@ -1909,6 +2028,7 @@
"upload_success": "Upload gennemført. Opdater siden for at se nye uploadaktiver.",
"upload_to_immich": "Upload til Immich ({count})",
"uploading": "Uploader",
"uploading_media": "Uploader media",
"url": "URL",
"usage": "Forbrug",
"use_biometric": "Brug biometrisk",
@@ -1929,6 +2049,7 @@
"user_usage_stats_description": "Vis konto anvendelsesstatistik",
"username": "Brugernavn",
"users": "Brugere",
"users_added_to_album_count": "Føjet {count, plural, one {# bruker} other {# brukere}} til albummet",
"utilities": "Værktøjer",
"validate": "Validér",
"validate_endpoint_error": "Indtast en gyldig URL",
@@ -1947,6 +2068,7 @@
"view_album": "Se album",
"view_all": "Se alle",
"view_all_users": "Se alle brugere",
"view_details": "Vis detaljer",
"view_in_timeline": "Se på tidslinjen",
"view_link": "Vis Link",
"view_links": "Vis links",
@@ -1954,6 +2076,7 @@
"view_next_asset": "Se næste medie",
"view_previous_asset": "Se forrige medie",
"view_qr_code": "Vis QR kode",
"view_similar_photos": "Se lignende billeder",
"view_stack": "Vis stak",
"view_user": "Vis bruger",
"viewer_remove_from_stack": "Fjern fra stak",

View File

@@ -597,8 +597,6 @@
"backup_setting_subtitle": "Verwaltung der Upload-Einstellungen im Hintergrund und im Vordergrund",
"backup_settings_subtitle": "Upload-Einstellungen verwalten",
"backward": "Rückwärts",
"beta_sync": "Status der Beta-Synchronisierung",
"beta_sync_subtitle": "Verwalte das neue Synchronisierungssystem",
"biometric_auth_enabled": "Biometrische Authentifizierung aktiviert",
"biometric_locked_out": "Du bist von der biometrischen Authentifizierung ausgeschlossen",
"biometric_no_options": "Keine biometrischen Optionen verfügbar",
@@ -1076,10 +1074,7 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Diese Funktion lädt externe Quellen von Google, um zu funktionieren.",
"general": "Allgemein",
"geolocation_instruction_all_have_location": "Alle Dateien für dieses Daten enthalten bereits Standortangaben. Versuche alle Dateien anzuzeigen oder wähle ein anderes Datum",
"geolocation_instruction_location": "Klicke auf eine Datei mit GPS Koordinaten um diesen Standort zu verwenden oder wähle einen Standort direkt auf der Karte",
"geolocation_instruction_no_date": "Wähle ein Datum um die Standortangaben der Fotos und Videos dieses Datums zu verwalten",
"geolocation_instruction_no_photos": "Keine Fotos oder Videos an diesem Datum gefunden. Wähle ein anderes Datum",
"get_help": "Hilfe erhalten",
"get_wifiname_error": "WLAN-Name konnte nicht ermittelt werden. Vergewissere dich, dass die erforderlichen Berechtigungen erteilt wurden und du mit einem WLAN-Netzwerk verbunden bist",
"getting_started": "Erste Schritte",
@@ -1417,6 +1412,8 @@
"open_the_search_filters": "Die Suchfilter öffnen",
"options": "Optionen",
"or": "oder",
"organize_into_albums": "In Alben organisieren",
"organize_into_albums_description": "Aktuelle Synchronisationseinstellungen verwenden, um existierende Fotos in Alben zu laden",
"organize_your_library": "Organisiere deine Bibliothek",
"original": "Original",
"other": "Sonstiges",
@@ -1557,6 +1554,7 @@
"purchase_server_description_2": "Unterstützerstatus",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "Der Server-Produktschlüssel wird durch den Administrator verwaltet",
"query_asset_id": "Datei-ID abfragen",
"queue_status": "Warteschlange {count}/{total}",
"rating": "Bewertung",
"rating_clear": "Bewertung löschen",
@@ -1642,6 +1640,7 @@
"restore_user": "Nutzer wiederherstellen",
"restored_asset": "Datei wiederhergestellt",
"resume": "Fortsetzen",
"resume_paused_jobs": "{count, plural, one {# Aufgabe fortsetzen } other {# Aufgaben fortsetzen}}",
"retry_upload": "Upload wiederholen",
"review_duplicates": "Duplikate überprüfen",
"review_large_files": "Große Dateien überprüfen",
@@ -1735,7 +1734,7 @@
"select_user_for_sharing_page_err_album": "Album konnte nicht erstellt werden",
"selected": "Ausgewählt",
"selected_count": "{count, plural, other {# ausgewählt}}",
"selected_gps_coordinates": "Ausgewählte GPS Koordinaten",
"selected_gps_coordinates": "Ausgewählte GPS-Koordinaten",
"send_message": "Nachricht senden",
"send_welcome_email": "Begrüssungsmail senden",
"server_endpoint": "Server-Endpunkt",
@@ -1846,10 +1845,8 @@
"shift_to_permanent_delete": "Drücke ⇧, um die Datei endgültig zu löschen",
"show_album_options": "Album-Optionen anzeigen",
"show_albums": "Alben anzeigen",
"show_all_assets": "Alle Dateien anzeigen",
"show_all_people": "Alle Personen anzeigen",
"show_and_hide_people": "Personen ein- & ausblenden",
"show_assets_without_location": "Zeige Dateien ohne Ortsangabe",
"show_file_location": "Dateispeicherort anzeigen",
"show_gallery": "Galerie anzeigen",
"show_hidden_people": "Ausgeblendete Personen anzeigen",
@@ -2034,7 +2031,6 @@
"use_biometric": "Biometrie verwenden",
"use_current_connection": "aktuelle Verbindung verwenden",
"use_custom_date_range": "Stattdessen einen benutzerdefinierten Datumsbereich verwenden",
"use_this_location": "Klicken um Ort zu verwenden",
"user": "Nutzer",
"user_has_been_deleted": "Dieser Benutzer wurde gelöscht.",
"user_id": "Nutzer-ID",
@@ -2077,6 +2073,7 @@
"view_next_asset": "Nächste Datei anzeigen",
"view_previous_asset": "Vorherige Datei anzeigen",
"view_qr_code": "QR code anzeigen",
"view_similar_photos": "Zeige ähnliche Fotos an",
"view_stack": "Stapel anzeigen",
"view_user": "Benutzer anzeigen",
"viewer_remove_from_stack": "Aus Stapel entfernen",

View File

@@ -594,8 +594,6 @@
"backup_setting_subtitle": "Διαχείριση ρυθμίσεων μεταφόρτωσης στο παρασκήνιο και στο προσκήνιο",
"backup_settings_subtitle": "Διαχείριση των ρυθμίσεων μεταφόρτωσης",
"backward": "Προς τα πίσω",
"beta_sync": "Κατάσταση Συγχρονισμού Beta (δοκιμαστική)",
"beta_sync_subtitle": "Διαχείριση του νέου συστήματος συγχρονισμού",
"biometric_auth_enabled": "Βιομετρική ταυτοποίηση ενεργοποιήθηκε",
"biometric_locked_out": "Είστε κλειδωμένοι εκτός της βιομετρικής ταυτοποίησης",
"biometric_no_options": "Δεν υπάρχουν διαθέσιμοι τρόποι βιομετρικής ταυτοποίησης",

View File

@@ -597,8 +597,6 @@
"backup_setting_subtitle": "Manage background and foreground upload settings",
"backup_settings_subtitle": "Manage upload settings",
"backward": "Backward",
"beta_sync": "Beta Sync Status",
"beta_sync_subtitle": "Manage the new sync system",
"biometric_auth_enabled": "Biometric authentication enabled",
"biometric_locked_out": "You are locked out of biometric authentication",
"biometric_no_options": "No biometric options available",
@@ -1076,10 +1074,7 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "This feature loads external resources from Google in order to work.",
"general": "General",
"geolocation_instruction_all_have_location": "All assets for this date already have location data. Try showing all assets or select a different date",
"geolocation_instruction_location": "Click on an asset with GPS coordinates to use its location, or select a location directly from the map",
"geolocation_instruction_no_date": "Select a date to manage location data for photos and videos from that day",
"geolocation_instruction_no_photos": "No photos or videos found for this date. Select a different date to show them",
"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",
@@ -1417,6 +1412,8 @@
"open_the_search_filters": "Open the search filters",
"options": "Options",
"or": "or",
"organize_into_albums": "Organize into albums",
"organize_into_albums_description": "Put existing photos into albums using current sync settings",
"organize_your_library": "Organize your library",
"original": "original",
"other": "Other",
@@ -1518,7 +1515,7 @@
"profile_drawer_client_out_of_date_minor": "Mobile App is out of date. Please update to the latest minor version.",
"profile_drawer_client_server_up_to_date": "Client and Server are up-to-date",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Read-only mode enabled. Double-tap the user avatar icon to exit.",
"profile_drawer_readonly_mode": "Read-only mode enabled. Long-press the user avatar icon to exit.",
"profile_drawer_server_out_of_date_major": "Server is out of date. Please update to the latest major version.",
"profile_drawer_server_out_of_date_minor": "Server is out of date. Please update to the latest minor version.",
"profile_image_of_user": "Profile image of {user}",
@@ -1557,6 +1554,7 @@
"purchase_server_description_2": "Supporter status",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "The server product key is managed by the admin",
"query_asset_id": "Query Asset ID",
"queue_status": "Queuing {count}/{total}",
"rating": "Star rating",
"rating_clear": "Clear rating",
@@ -1642,6 +1640,7 @@
"restore_user": "Restore user",
"restored_asset": "Restored asset",
"resume": "Resume",
"resume_paused_jobs": "Resume {count, plural, one {# paused job} other {# paused jobs}}",
"retry_upload": "Retry upload",
"review_duplicates": "Review duplicates",
"review_large_files": "Review large files",
@@ -1735,7 +1734,7 @@
"select_user_for_sharing_page_err_album": "Failed to create album",
"selected": "Selected",
"selected_count": "{count, plural, other {# selected}}",
"selected_gps_coordinates": "selected gps coordinates",
"selected_gps_coordinates": "Selected GPS Coordinates",
"send_message": "Send message",
"send_welcome_email": "Send welcome email",
"server_endpoint": "Server Endpoint",
@@ -1846,10 +1845,8 @@
"shift_to_permanent_delete": "press ⇧ to permanently delete asset",
"show_album_options": "Show album options",
"show_albums": "Show albums",
"show_all_assets": "Show all assets",
"show_all_people": "Show all people",
"show_and_hide_people": "Show & hide people",
"show_assets_without_location": "Show assets without location",
"show_file_location": "Show file location",
"show_gallery": "Show gallery",
"show_hidden_people": "Show hidden people",
@@ -1920,6 +1917,8 @@
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
"sync_local": "Sync Local",
"sync_remote": "Sync Remote",
"sync_status": "Sync Status",
"sync_status_subtitle": "View and manage the sync system",
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
"tag": "Tag",
"tag_assets": "Tag assets",
@@ -1979,6 +1978,7 @@
"trash_page_select_assets_btn": "Select assets",
"trash_page_title": "Trash ({count})",
"trashed_items_will_be_permanently_deleted_after": "Trashed items will be permanently deleted after {days, plural, one {# day} other {# days}}.",
"troubleshoot": "Troubleshoot",
"type": "Type",
"unable_to_change_pin_code": "Unable to change PIN code",
"unable_to_setup_pin_code": "Unable to setup PIN code",
@@ -2034,7 +2034,6 @@
"use_biometric": "Use biometric",
"use_current_connection": "use current connection",
"use_custom_date_range": "Use custom date range instead",
"use_this_location": "Click to use location",
"user": "User",
"user_has_been_deleted": "This user has been deleted.",
"user_id": "User ID",
@@ -2077,6 +2076,7 @@
"view_next_asset": "View next asset",
"view_previous_asset": "View previous asset",
"view_qr_code": "View QR code",
"view_similar_photos": "View similar photos",
"view_stack": "View Stack",
"view_user": "View User",
"viewer_remove_from_stack": "Remove from Stack",

View File

@@ -167,8 +167,8 @@
"map_settings": "Mapa",
"map_settings_description": "Administrar la configuración del mapa",
"map_style_description": "Dirección URL a un tema de mapa (style.json)",
"memory_cleanup_job": "Limpieza de memoria",
"memory_generate_job": "Generación de memoria",
"memory_cleanup_job": "Limpieza de recuerdos",
"memory_generate_job": "Generación de recuerdos",
"metadata_extraction_job": "Extracción de metadatos",
"metadata_extraction_job_description": "Extraer información de metadatos de cada activo, como GPS, caras y resolución",
"metadata_faces_import_setting": "Activar importación de caras",
@@ -232,7 +232,7 @@
"oauth_storage_quota_claim_description": "Fijar la cuota de almacenamiento del usuario automáticamente al valor solicitado.",
"oauth_storage_quota_default": "Cuota de almacenamiento predeterminada (GiB)",
"oauth_storage_quota_default_description": "Cuota (en GiB) que se usará cuando no se solicite un valor específico.",
"oauth_timeout": "Límite de tiempo para la solicitud",
"oauth_timeout": "Tiempo de espera agotado para la solicitud",
"oauth_timeout_description": "Tiempo de espera de solicitudes en milisegundos",
"password_enable_description": "Iniciar sesión con correo electrónico y contraseña",
"password_settings": "Contraseña de Acceso",
@@ -597,8 +597,6 @@
"backup_setting_subtitle": "Administra las configuraciones de respaldo en segundo y primer plano",
"backup_settings_subtitle": "Configura las opciones de subida",
"backward": "Retroceder",
"beta_sync": "Estado de Sincronización Beta",
"beta_sync_subtitle": "Administrar el nuevo sistema de sincronización",
"biometric_auth_enabled": "Autentificación biométrica habilitada",
"biometric_locked_out": "Estás bloqueado de la autentificación biométrica",
"biometric_no_options": "Sin opciones biométricas disponibles",
@@ -1076,10 +1074,7 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Esta funcionalidad carga recursos externos desde Google para poder funcionar.",
"general": "General",
"geolocation_instruction_all_have_location": "Todos los assets de esta fecha ya tienen datos de ubicación. Prueba mostrando todos los assets o selecciona otra fecha",
"geolocation_instruction_location": "Da click en un asset con coordenadas GPS para usar su ubicacion, o selecciona una ubicacion directamente en el mapa",
"geolocation_instruction_no_date": "Seleccione una fecha para administrar los datos de ubicación de las fotos y los videos de ese día",
"geolocation_instruction_no_photos": "No se encontraron fotos ni vídeos para esta fecha. Seleccione otra fecha para mostrarlos",
"get_help": "Solicitar ayuda",
"get_wifiname_error": "No se pudo obtener el nombre de la red Wi-Fi. Asegúrate de haber concedido los permisos necesarios y de estar conectado a una red Wi-Fi",
"getting_started": "Comenzamos",
@@ -1417,10 +1412,12 @@
"open_the_search_filters": "Abre los filtros de búsqueda",
"options": "Opciones",
"or": "o",
"organize_into_albums": "Organizar en álbumes",
"organize_into_albums_description": "Añade fotos existentes en álbumes usando la configuración actual de sincronización",
"organize_your_library": "Organiza tu biblioteca",
"original": "original",
"other": "Otro",
"other_devices": "Otro dispositivo",
"other_devices": "Otros dispositivos",
"other_entities": "Otras entidades",
"other_variables": "Otras variables",
"owned": "Propios",
@@ -1557,6 +1554,7 @@
"purchase_server_description_2": "Estado del soporte",
"purchase_server_title": "Servidor",
"purchase_settings_server_activated": "La clave del producto del servidor la administra el administrador",
"query_asset_id": "Consultar ID de elemento",
"queue_status": "Poniendo en cola {count}/{total}",
"rating": "Valoración",
"rating_clear": "Borrar calificación",
@@ -1603,8 +1601,8 @@
"remove_from_locked_folder": "Eliminar de la carpeta protegida",
"remove_from_locked_folder_confirmation": "¿Seguro que deseas sacar estas fotos y vídeos de la carpeta protegida? Si continúas, los elementos serán visibles en tu biblioteca.",
"remove_from_shared_link": "Eliminar desde enlace compartido",
"remove_memory": "Quitar memoria",
"remove_photo_from_memory": "Quitar foto de esta memoria",
"remove_memory": "Quitar recuerdo",
"remove_photo_from_memory": "Quitar foto de este recuerdo",
"remove_tag": "Quitar etiqueta",
"remove_url": "Eliminar URL",
"remove_user": "Eliminar usuario",
@@ -1612,8 +1610,8 @@
"removed_from_archive": "Eliminado del archivo",
"removed_from_favorites": "Eliminado de favoritos",
"removed_from_favorites_count": "{count, plural, other {Eliminados #}} de favoritos",
"removed_memory": "Memoria eliminada",
"removed_photo_from_memory": "Se ha eliminado la foto de la memoria",
"removed_memory": "Recuerdo eliminado",
"removed_photo_from_memory": "Foto eliminada del recuerdo",
"removed_tagged_assets": "Etiqueta eliminada de {count, plural, one {# activo} other {# activos}}",
"rename": "Renombrar",
"repair": "Reparar",
@@ -1623,7 +1621,7 @@
"require_password": "Contraseña requerida",
"require_user_to_change_password_on_first_login": "Requerir que el usuario cambie la contraseña en el primer inicio de sesión",
"rescan": "Volver a escanear",
"reset": "Reiniciar",
"reset": "Restablecer",
"reset_password": "Restablecer la contraseña",
"reset_people_visibility": "Restablecer la visibilidad de las personas",
"reset_pin_code": "Restablecer PIN",
@@ -1642,6 +1640,7 @@
"restore_user": "Restaurar usuario",
"restored_asset": "Archivo restaurado",
"resume": "Continuar",
"resume_paused_jobs": "Reanudar {count, plural, one {# tarea en pausa} other {# tareas en pausa}}",
"retry_upload": "Reintentar subida",
"review_duplicates": "Revisar duplicados",
"review_large_files": "Revisar archivos grandes",
@@ -1735,7 +1734,7 @@
"select_user_for_sharing_page_err_album": "Fallo al crear el álbum",
"selected": "Seleccionado",
"selected_count": "{count, plural, one {# seleccionado} other {# seleccionados}}",
"selected_gps_coordinates": "coordenadas gps seleccionadas",
"selected_gps_coordinates": "Coordenadas GPS seleccionadas",
"send_message": "Enviar mensaje",
"send_welcome_email": "Enviar correo de bienvenida",
"server_endpoint": "Punto final del servidor",
@@ -1846,10 +1845,8 @@
"shift_to_permanent_delete": "presiona ⇧ para eliminar permanentemente el archivo",
"show_album_options": "Mostrar opciones del álbum",
"show_albums": "Mostrar álbumes",
"show_all_assets": "Mostrar todos los assets",
"show_all_people": "Mostrar todas las personas",
"show_and_hide_people": "Mostrar y ocultar personas",
"show_assets_without_location": "Mostrar assets sin ubicación",
"show_file_location": "Mostrar carpeta del archivo",
"show_gallery": "Ver galería",
"show_hidden_people": "Mostrar personas ocultas",
@@ -2034,7 +2031,6 @@
"use_biometric": "Uso biométrico",
"use_current_connection": "Usar conexión actual",
"use_custom_date_range": "Usa un intervalo de fechas personalizado",
"use_this_location": "Click para usar ubicación",
"user": "Usuario",
"user_has_been_deleted": "Este usuario ha sido eliminado.",
"user_id": "Id. de usuario",
@@ -2077,6 +2073,7 @@
"view_next_asset": "Mostrar siguiente elemento",
"view_previous_asset": "Mostrar elemento anterior",
"view_qr_code": "Ver código QR",
"view_similar_photos": "Ver fotografías similares",
"view_stack": "Ver Pila",
"view_user": "Ver Usuario",
"viewer_remove_from_stack": "Quitar de la pila",

View File

@@ -597,8 +597,6 @@
"backup_setting_subtitle": "Halda taustal ja esiplaanil üleslaadimise seadeid",
"backup_settings_subtitle": "Halda üleslaadimise seadeid",
"backward": "Tagasi",
"beta_sync": "Beeta sünkroonimise staatus",
"beta_sync_subtitle": "Halda uut sünkroonimissüsteemi",
"biometric_auth_enabled": "Biomeetriline autentimine lubatud",
"biometric_locked_out": "Biomeetriline autentimine on blokeeritud",
"biometric_no_options": "Biomeetrilisi valikuid ei ole",
@@ -1076,10 +1074,7 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "See funktsionaalsus laadib töötamiseks Google'st väliseid ressursse.",
"general": "Üldine",
"geolocation_instruction_all_have_location": "Kõigil selle kuupäevaga üksustel on juba asukoht. Proovi kuvada kõiki üksuseid või vali teine kuupäev",
"geolocation_instruction_location": "Klõpsa GPS-koordinaatidega üksusel, et kasutada selle asukohta, või vali asukoht otse kaardilt",
"geolocation_instruction_no_date": "Vali kuupäev, et kõigi selle kuupäevaga fotode ja videote asukohti hallata",
"geolocation_instruction_no_photos": "Selle kuupäevaga fotosid ja videosid ei leitud. Vali mõni muu kuupäev",
"get_help": "Küsi abi",
"get_wifiname_error": "WiFi-võrgu nime ei õnnestunud lugeda. Veendu, et oled andnud vajalikud load ja oled WiFi-võrguga ühendatud",
"getting_started": "Alustamine",
@@ -1417,6 +1412,8 @@
"open_the_search_filters": "Ava otsingufiltrid",
"options": "Valikud",
"or": "või",
"organize_into_albums": "Organiseeri albumitesse",
"organize_into_albums_description": "Pane olemasolevad fotod albumitesse, kasutades jooksvaid sünkroonimise seadeid",
"organize_your_library": "Korrasta oma kogu",
"original": "originaal",
"other": "Muud",
@@ -1518,7 +1515,7 @@
"profile_drawer_client_out_of_date_minor": "Mobiilirakendus on aegunud. Palun uuenda uusimale väikesele versioonile.",
"profile_drawer_client_server_up_to_date": "Klient ja server on uuendatud",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Kirjutuskaitserežiim sisse lülitatud. Väljumiseks topeltpuuduta avatari ikooni.",
"profile_drawer_readonly_mode": "Kirjutuskaitserežiim sisse lülitatud. Väljumiseks puuduta pikalt avatari ikooni.",
"profile_drawer_server_out_of_date_major": "Server on aegunud. Palun uuenda uusimale suurele versioonile.",
"profile_drawer_server_out_of_date_minor": "Server on aegunud. Palun uuenda uusimale väikesele versioonile.",
"profile_image_of_user": "Kasutaja {user} profiilipilt",
@@ -1642,6 +1639,7 @@
"restore_user": "Taasta kasutaja",
"restored_asset": "Üksus taastatud",
"resume": "Jätka",
"resume_paused_jobs": "Jätka {count, plural, one {# peatatud tööde} other {# peatatud töödet}}",
"retry_upload": "Proovi üleslaadimist uuesti",
"review_duplicates": "Vaata duplikaadid läbi",
"review_large_files": "Vaata suured failid läbi",
@@ -1735,7 +1733,7 @@
"select_user_for_sharing_page_err_album": "Albumi lisamine ebaõnnestus",
"selected": "Valitud",
"selected_count": "{count, plural, other {# valitud}}",
"selected_gps_coordinates": "valitud GPS-koordinaadid",
"selected_gps_coordinates": "Valitud GPS-koordinaadid",
"send_message": "Saada sõnum",
"send_welcome_email": "Saada tervituskiri",
"server_endpoint": "Serveri lõpp-punkt",
@@ -1846,10 +1844,8 @@
"shift_to_permanent_delete": "vajuta ⇧, et üksus jäädavalt kustutada",
"show_album_options": "Näita albumi valikuid",
"show_albums": "Näita albumeid",
"show_all_assets": "Kuva kõik üksused",
"show_all_people": "Näita kõiki isikuid",
"show_and_hide_people": "Näita ja peida isikuid",
"show_assets_without_location": "Kuva ilma asukohata üksused",
"show_file_location": "Näita faili asukohta",
"show_gallery": "Näita galeriid",
"show_hidden_people": "Kuva peidetud inimesed",
@@ -1920,6 +1916,8 @@
"sync_albums_manual_subtitle": "Sünkrooni kõik üleslaaditud videod ja fotod valitud varundusalbumitesse",
"sync_local": "Sünkrooni lokaalsed üksused",
"sync_remote": "Sünkrooni kaugüksused",
"sync_status": "Sünkroonimise staatus",
"sync_status_subtitle": "Vaata ja halda sünkroonimissüsteemi",
"sync_upload_album_setting_subtitle": "Loo ja laadi oma pildid ja videod üles Immich'isse valitud albumitesse",
"tag": "Silt",
"tag_assets": "Sildista üksuseid",
@@ -1957,7 +1955,9 @@
"to_change_password": "Muuda parool",
"to_favorite": "Lemmik",
"to_login": "Logi sisse",
"to_multi_select": "vali mitu",
"to_parent": "Tase üles",
"to_select": "vali",
"to_trash": "Prügikasti",
"toggle_settings": "Kuva/peida seaded",
"total": "Kokku",
@@ -1977,6 +1977,7 @@
"trash_page_select_assets_btn": "Vali üksused",
"trash_page_title": "Prügikast ({count})",
"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.",
"troubleshoot": "Tõrkeotsing",
"type": "Tüüp",
"unable_to_change_pin_code": "PIN-koodi muutmine ebaõnnestus",
"unable_to_setup_pin_code": "PIN-koodi seadistamine ebaõnnestus",
@@ -2032,7 +2033,6 @@
"use_biometric": "Kasuta biomeetriat",
"use_current_connection": "kasuta praegust ühendust",
"use_custom_date_range": "Kasuta kohandatud kuupäevavahemikku",
"use_this_location": "Klõpsa asukoha kasutamiseks",
"user": "Kasutaja",
"user_has_been_deleted": "See kasutaja on kustutatud.",
"user_id": "Kasutaja ID",
@@ -2075,6 +2075,7 @@
"view_next_asset": "Vaata järgmist üksust",
"view_previous_asset": "Vaata eelmist üksust",
"view_qr_code": "Vaata QR-koodi",
"view_similar_photos": "Vaata sarnaseid fotosid",
"view_stack": "Vaata virna",
"view_user": "Vaata kasutajat",
"viewer_remove_from_stack": "Eemalda virnast",

View File

@@ -38,6 +38,58 @@
"admin": {
"add_exclusion_pattern_description": "Gehitu baztertze patroiak. *, ** eta ? karakterak erabil ditzazkezu (globbing). Adibideak: \"Raw\" izeneko edozein direktorioko fitxategi guztiak baztertzeko, erabili \"**/Raw/**\". \".tif\" amaitzen diren fitxategi guztiak baztertzeko, erabili \"**/*.tif\". Bide absolutu bat baztertzeko, erabili \"/baztertu/beharreko/bidea/**\".",
"admin_user": "Administradore erabiltzailea",
"image_quality": "Kalitatea"
}
"authentication_settings": "Segurtasun Ezarpenak",
"authentication_settings_description": "Kudeatu pasahitza, OAuth edo beste segurtasun konfigurazio bat",
"authentication_settings_disable_all": "Seguru zaude saioa hasteko modu guztiak desgaitu nahi dituzula? Saioa hastea guztiz desgaitua izango da.",
"authentication_settings_reenable": "Berriro gaitzeko, erabili <link>Server Command</link>.",
"backup_onboarding_footer": "Immich-en babes kopiei buruzko informazio gehiago nahi baduzu, mesedez irakurri <link>dokumentazioa</link>.",
"backup_onboarding_title": "Babes Kopiak",
"confirm_delete_library": "Seguru zaude {library} ezabatu nahi duzula?",
"confirm_email_below": "Konfirmatzeko, idatzi \"{email}\" azpian",
"confirm_reprocess_all_faces": "Seguru zaude aurpegi guztiak berriro prozesatu nahi dituzula? Erabakiak jendearen izenak ere borratuko ditu.",
"confirm_user_password_reset": "Seguru zaude {user}-ren pasahitza berrezarri nahi duzula?",
"confirm_user_pin_code_reset": "Seguru zaude {user}-ren PIN kodea berrezarri nahi duzula?",
"create_job": "Gehitu zeregina",
"disable_login": "Desgaitu saio hastea",
"face_detection": "Aurpegi detekzioa",
"failed_job_command": "{command} komandoak hutsegin du {job} zereginerako",
"image_format": "Formatua",
"image_format_description": "WebP ereduak JPEG baino fitxategi txikiagoak sortzen ditu, baina motelagoa da kodifikatzen.",
"image_preview_title": "Aurreikusiaen Konfigurazioa",
"image_quality": "Kalitatea",
"image_settings": "Argazkien Konfigurazioa",
"image_thumbnail_title": "Argazki Txikien Konfigurazioa",
"job_created": "Zeregina sortuta",
"job_settings": "Zereginaren konfigurazioa",
"job_status": "Zereginaren Egoera",
"machine_learning_smart_search_enabled": "Gaitu bilaketa arina",
"manage_log_settings": "Kudeatu erregistroen konfigurazioa",
"map_dark_style": "Beltz estiloa",
"map_gps_settings": "Mapa eta GPS Konfigurazioa",
"map_light_style": "Zuri estiloa",
"map_settings": "Mapa",
"metadata_faces_import_setting": "Gaitu aurpegien inportazioa",
"metadata_settings": "Metadata Konfigurazioa",
"metadata_settings_description": "Kudeatu metadaten konfigurazioa",
"migration_job": "Migrazio"
},
"advanced_settings_readonly_mode_title": "Irakurri-bakarrik Modua",
"apply_count": "Ezarri ({count, number})",
"assets_added_to_albums_count": "Gehituta {assetTotal, plural, one {# asset} other {# assets}} to {albumTotal, plural, one {# album} other {# albums}}",
"assets_cannot_be_added_to_albums": "{count, plural, one {Asset} other {Assets}} ezin izan da albumetara gehitu",
"assets_were_part_of_albums_count": "{count, plural, one {Asset was} other {Assets were}} dagoeneko albumean dago",
"first": "Lehenengo «Lehenik»",
"gps": "GPS",
"gps_missing": "Ez dago GPS",
"last": "Azkena",
"like": "Gustoko",
"manage_geolocation": "Kudeatu kokapena",
"organize_into_albums": "Albumetan antolatu",
"query_asset_id": "Aztertu aukeratutako ID-a",
"readonly_mode_disabled": "Irakurri-bakarrik modua desgaituta",
"readonly_mode_enabled": "Irakurri-bakarrik modua gaituta",
"selected_gps_coordinates": "GPS Koordenadak Aukeratuta",
"sort_newest": "Argazkirik berriena",
"to_select": "aukeratzeko",
"view_similar_photos": "Ikusi antzeko argazkiak"
}

View File

@@ -396,6 +396,8 @@
"advanced_settings_prefer_remote_title": "Suosi etäkuvia",
"advanced_settings_proxy_headers_subtitle": "Määritä välityspalvelimen otsikot(proxy headers), jotka Immichin tulisi lähettää jokaisen verkkopyynnön mukana",
"advanced_settings_proxy_headers_title": "Välityspalvelimen otsikot",
"advanced_settings_readonly_mode_subtitle": "Aktivoi vain luku -tilan, jolloin valokuvia voi ainoastaan selata. Toiminnot kuten useiden kuvien valitseminen, jakaminen, siirtäminen toistolaitteelle ja poistaminen ovat pois käytöstä. Laita vain luku -tila päälle tai pois päältä päävalikon käyttäjäkuvakkeesta",
"advanced_settings_readonly_mode_title": "Vain luku -tila",
"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_sync_remote_deletions_subtitle": "Poista tai palauta kohde automaattisesti tällä laitteella, kun kyseinen toiminto suoritetaan verkossa",
@@ -461,6 +463,7 @@
"app_bar_signout_dialog_title": "Kirjaudu ulos",
"app_settings": "Sovellusasetukset",
"appears_in": "Esiintyy albumeissa",
"apply_count": "Aseta {count, number}",
"archive": "Arkisto",
"archive_action_prompt": "{count} lisätty arkistoon",
"archive_or_unarchive_photo": "Arkistoi kuva tai palauta arkistosta",
@@ -594,8 +597,6 @@
"backup_setting_subtitle": "Hallinnoi aktiivisia ja taustalla olevia lähetysasetuksia",
"backup_settings_subtitle": "Hallitse lähetysasetuksia",
"backward": "Taaksepäin",
"beta_sync": "Betasynkronoinnin tila",
"beta_sync_subtitle": "Hallitse uutta synkronointijärjestelmää",
"biometric_auth_enabled": "Biometrinen tunnistautuminen käytössä",
"biometric_locked_out": "Sinulta on evätty pääsy biometriseen tunnistautumiseen",
"biometric_no_options": "Ei biometrisiä vaihtoehtoja",
@@ -866,7 +867,7 @@
"edit_title": "Muokkaa otsikkoa",
"edit_user": "Muokkaa käyttäjää",
"edited": "Muokattu",
"editor": "Editori",
"editor": "Muokkaaja",
"editor_close_without_save_prompt": "Muutoksia ei tallenneta",
"editor_close_without_save_title": "Suljetaanko editori?",
"editor_crop_tool_h2_aspect_ratios": "Kuvasuhteet",
@@ -1073,6 +1074,7 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Ominaisuus lataa ulkoisia resursseja Googlelta toimiakseen.",
"general": "Yleinen",
"geolocation_instruction_location": "Napsauta kuvaa, jossa on GPS-koordinaatit, käyttääksesi sen sijaintia, tai valitse sijainti suoraan kartalta",
"get_help": "Hae apua",
"get_wifiname_error": "Wi-Fi-verkon nimen hakeminen epäonnistui. Varmista, että olet myöntänyt tarvittavat käyttöoikeudet ja että olet yhteydessä Wi-Fi-verkkoon",
"getting_started": "Aloittaminen",
@@ -1633,8 +1635,8 @@
"review_duplicates": "Tarkastele kaksoiskappaleita",
"review_large_files": "Tarkista suuret tiedostot",
"role": "Rooli",
"role_editor": "Editori",
"role_viewer": "Toistin",
"role_editor": "Muokkaaja",
"role_viewer": "Katsoja",
"running": "Käynnissä",
"save": "Tallenna",
"save_to_gallery": "Tallenna galleriaan",

View File

@@ -597,8 +597,6 @@
"backup_setting_subtitle": "Ajuster les paramètres d'envoi au premier et en arrière-plan",
"backup_settings_subtitle": "Gérer les paramètres de téléversement",
"backward": "Arrière",
"beta_sync": "Statut de la synchronisation béta",
"beta_sync_subtitle": "Gérer le nouveau système de synchronisation",
"biometric_auth_enabled": "Authentification biométrique activée",
"biometric_locked_out": "L'authentification biométrique est verrouillé",
"biometric_no_options": "Aucune option biométrique disponible",
@@ -1076,10 +1074,7 @@
"gcast_enabled": "Diffusion Google Cast",
"gcast_enabled_description": "Cette fonctionnalité charge des ressources externes depuis Google pour fonctionner.",
"general": "Général",
"geolocation_instruction_all_have_location": "Tous les médias pour cette date ont déjà des données de localisation. Essayez d'afficher tous les médias ou sélectionnez une date différente",
"geolocation_instruction_location": "Cliquez sur un média avec des coordonnées GPS pour utiliser sa localisation, ou bien sélectionnez une localisation directement sur la carte",
"geolocation_instruction_no_date": "Sélectionnez une date pour gérer les données de localisation pour les photos et vidéos de ce jour",
"geolocation_instruction_no_photos": "Aucune photo ou vidéo trouvée pour cette date. Sélectionnez une date différente pour en afficher",
"get_help": "Obtenir de l'aide",
"get_wifiname_error": "Impossible d'obtenir le nom du réseau wifi. Assurez-vous d'avoir donné les permissions nécessaires à l'application et que vous êtes connecté à un réseau wifi",
"getting_started": "Commencer",
@@ -1417,6 +1412,8 @@
"open_the_search_filters": "Ouvrir les filtres de recherche",
"options": "Options",
"or": "ou",
"organize_into_albums": "Organiser dans des albums",
"organize_into_albums_description": "Mettre les photos existantes dans des albums en utilisant les paramètres de synchronisation actuels",
"organize_your_library": "Organiser votre bibliothèque",
"original": "original",
"other": "Autre",
@@ -1518,7 +1515,7 @@
"profile_drawer_client_out_of_date_minor": "L'application mobile est obsolète. Veuillez effectuer la mise à jour vers la dernière version mineure.",
"profile_drawer_client_server_up_to_date": "Le client et le serveur sont à jour",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Mode lecture seule activé. Faites un appui double sur l'image de l'utilisateur pour quitter.",
"profile_drawer_readonly_mode": "Mode lecture seule activé. Faites un appui long sur l'image de l'utilisateur pour quitter.",
"profile_drawer_server_out_of_date_major": "Le serveur est obsolète. Veuillez mettre à jour vers la dernière version majeure.",
"profile_drawer_server_out_of_date_minor": "Le serveur est obsolète. Veuillez mettre à jour vers la dernière version mineure.",
"profile_image_of_user": "Image de profil de {user}",
@@ -1557,6 +1554,7 @@
"purchase_server_description_2": "Statut de contributeur",
"purchase_server_title": "Serveur",
"purchase_settings_server_activated": "La clé du produit pour le Serveur est gérée par l'administrateur",
"query_asset_id": "Obtenir l'ID du média",
"queue_status": "{count}/{total} en file d'attente",
"rating": "Étoile d'évaluation",
"rating_clear": "Effacer l'évaluation",
@@ -1642,6 +1640,7 @@
"restore_user": "Restaurer l'utilisateur",
"restored_asset": "Média restauré",
"resume": "Reprendre",
"resume_paused_jobs": "Reprendre {count, plural, one {la tâche en cours} other {les # tâches en cours}}",
"retry_upload": "Réessayer l'envoi",
"review_duplicates": "Consulter les doublons",
"review_large_files": "Consulter les fichiers volumineux",
@@ -1735,7 +1734,7 @@
"select_user_for_sharing_page_err_album": "Échec de la création de l'album",
"selected": "Sélectionné",
"selected_count": "{count, plural, one {# sélectionné} other {# sélectionnés}}",
"selected_gps_coordinates": "coordonnées GPS sélectionnées",
"selected_gps_coordinates": "Coordonnées GPS sélectionnées",
"send_message": "Envoyer un message",
"send_welcome_email": "Envoyer un courriel de bienvenue",
"server_endpoint": "Adresse du serveur",
@@ -1846,10 +1845,8 @@
"shift_to_permanent_delete": "appuyez sur ⇧ pour supprimer définitivement le média",
"show_album_options": "Afficher les options de l'album",
"show_albums": "Montrer les albums",
"show_all_assets": "Montrer tous les médias",
"show_all_people": "Montrer toutes les personnes",
"show_and_hide_people": "Afficher / Masquer les personnes",
"show_assets_without_location": "Montrer les médias sans localisation",
"show_file_location": "Afficher l'emplacement du fichier",
"show_gallery": "Afficher la galerie",
"show_hidden_people": "Afficher les personnes masquées",
@@ -1920,6 +1917,8 @@
"sync_albums_manual_subtitle": "Synchroniser toutes les vidéos et photos envoyées dans les albums sélectionnés",
"sync_local": "Synchronisation locale",
"sync_remote": "Synchronisation à distance",
"sync_status": "Statut de synchronisation",
"sync_status_subtitle": "Consulter et gérer le système de synchronisation",
"sync_upload_album_setting_subtitle": "Créez et envoyez vos photos et vidéos dans les albums sélectionnés sur Immich",
"tag": "Étiquette",
"tag_assets": "Étiqueter les médias",
@@ -1979,6 +1978,7 @@
"trash_page_select_assets_btn": "Sélectionner les éléments",
"trash_page_title": "Corbeille ({count})",
"trashed_items_will_be_permanently_deleted_after": "Les éléments dans la corbeille seront supprimés définitivement après {days, plural, one {# jour} other {# jours}}.",
"troubleshoot": "Dépannage",
"type": "Type",
"unable_to_change_pin_code": "Impossible de changer le code PIN",
"unable_to_setup_pin_code": "Impossible de définir le code PIN",
@@ -2034,7 +2034,6 @@
"use_biometric": "Utiliser l'authentification biométrique",
"use_current_connection": "Utiliser le réseau actuel",
"use_custom_date_range": "Utilisez une plage de date personnalisée à la place",
"use_this_location": "Cliquez pour utiliser la localisation",
"user": "Utilisateur",
"user_has_been_deleted": "Cet utilisateur à été supprimé.",
"user_id": "ID Utilisateur",
@@ -2077,6 +2076,7 @@
"view_next_asset": "Voir le média suivant",
"view_previous_asset": "Voir le média précédent",
"view_qr_code": "Voir le QR code",
"view_similar_photos": "Afficher les photos similaires",
"view_stack": "Afficher la pile",
"view_user": "Voir l'utilisateur",
"viewer_remove_from_stack": "Retirer de la pile",

View File

@@ -396,6 +396,8 @@
"advanced_settings_prefer_remote_title": "העדף תמונות מרוחקות",
"advanced_settings_proxy_headers_subtitle": "הגדר proxy headers שהיישום צריך לשלוח עם כל בקשת רשת",
"advanced_settings_proxy_headers_title": "כותרות פרוקסי",
"advanced_settings_readonly_mode_subtitle": "מאפשר את מצב לקריאה בלבד בו התמונות ניתנות לצפייה בלבד, דברים כמו בחירת תמונות מרובות, שיתוף, שידור, מחיקה הם כולם מושבתים. אפשר/השבת מצב לקריאה בלבד באמצעות יצגן המשתמש מהמסך הראשי",
"advanced_settings_readonly_mode_title": "מצב לקריאה בלבד",
"advanced_settings_self_signed_ssl_subtitle": "מדלג על אימות תעודת SSL עבור נקודת הקצה של השרת. דרוש עבור תעודות בחתימה עצמית.",
"advanced_settings_self_signed_ssl_title": "התר תעודות SSL בחתימה עצמית",
"advanced_settings_sync_remote_deletions_subtitle": "מחק או שחזר תמונה במכשיר זה באופן אוטומטי כאשר פעולה זו נעשית בדפדפן",
@@ -461,6 +463,7 @@
"app_bar_signout_dialog_title": "התנתק",
"app_settings": "הגדרות יישום",
"appears_in": "מופיע ב",
"apply_count": "החל ({count, number})",
"archive": "ארכיון",
"archive_action_prompt": "{count} נוספו לארכיון",
"archive_or_unarchive_photo": "העבר תמונה לארכיון או הוצא אותה משם",
@@ -594,8 +597,6 @@
"backup_setting_subtitle": "ניהול הגדרות העלאת רקע וחזית",
"backup_settings_subtitle": "נהל הגדרות העלאה",
"backward": "אחורה",
"beta_sync": "סטטוס סנכרון (בטא)",
"beta_sync_subtitle": "נהל את מערכת הסנכרון החדשה",
"biometric_auth_enabled": "אימות ביומטרי הופעל",
"biometric_locked_out": "גישה לאימות הביומטרי נחסמה",
"biometric_no_options": "אין אפשרויות זמינות עבור אימות ביומטרי",
@@ -842,7 +843,7 @@
"duration": "משך זמן",
"edit": "ערוך",
"edit_album": "ערוך אלבום",
"edit_avatar": "ערוך תמונת פרופיל",
"edit_avatar": "ערוך יצגן",
"edit_birthday": "עריכת יום הולדת",
"edit_date": "ערוך תאריך",
"edit_date_and_time": "ערוך תאריך ושעה",
@@ -1073,12 +1074,15 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "תכונה זאת טוענת משאבים חיצוניים מגוגל בכדי לפעול.",
"general": "כללי",
"geolocation_instruction_location": "לחץ על פריט עם קואורדינטות GPS כדי להשתמש במיקומו, או בחר מיקום ישירות מהמפה",
"get_help": "קבל עזרה",
"get_wifiname_error": "לא היה ניתן לקבל את שם האינטרנט האלחוטי שלך. יש לודא שהענקת את ההרשאות הדרושות ושאת/ה מחובר/ת לרשת אינטרנט אלחוטי",
"getting_started": "תחילת העבודה",
"go_back": "חזור",
"go_to_folder": "עבור לתיקיה",
"go_to_search": "עבור לחיפוש",
"gps": "GPS",
"gps_missing": "אין GPS",
"grant_permission": "להעניק הרשאה",
"group_albums_by": "קבץ אלבומים לפי..",
"group_country": "קבץ לפי מדינה",
@@ -1262,6 +1266,7 @@
"main_branch_warning": "הגרסה המותקנת היא גרסת פיתוח; אנחנו ממליצים בחום להשתמש בגרסה יציבה!",
"main_menu": "תפריט ראשי",
"make": "תוצרת",
"manage_geolocation": "נהל מיקום",
"manage_shared_links": "ניהול קישורים משותפים",
"manage_sharing_with_partners": "ניהול שיתוף עם שותפים",
"manage_the_app_settings": "ניהול הגדרות האפליקציה",
@@ -1508,6 +1513,7 @@
"profile_drawer_client_out_of_date_minor": "גרסת היישום לנייד מיושנת. נא לעדכן לגרסה המשנית האחרונה.",
"profile_drawer_client_server_up_to_date": "היישום והשרת מעודכנים",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "מצב לקריאה בלבד מופעל. הקש הקשה כפולה על סמל היצגן של המשתמש כדי לצאת.",
"profile_drawer_server_out_of_date_major": "השרת אינו מעודכן. נא לעדכן לגרסה הראשית האחרונה.",
"profile_drawer_server_out_of_date_minor": "השרת אינו מעודכן. נא לעדכן לגרסה המשנית האחרונה.",
"profile_image_of_user": "תמונת פרופיל של {user}",
@@ -1553,6 +1559,8 @@
"rating_description": "הצג את דירוג ה-EXIF בלוח המידע",
"reaction_options": "אפשרויות הגבה",
"read_changelog": "קרא את יומן השינויים",
"readonly_mode_disabled": "מצב לקריאה בלבד מושבת",
"readonly_mode_enabled": "מצב לקריאה בלבד מופעל",
"reassign": "הקצה מחדש",
"reassigned_assets_to_existing_person": "{count, plural, one {תמונה # הוקצתה} other {# תמונות הוקצו}} מחדש אל {name, select, null {אדם קיים} other {{name}}}",
"reassigned_assets_to_new_person": "{count, plural, one {תמונה # הוקצתה} other {# תמונות הוקצו}} מחדש לאדם חדש",
@@ -1709,7 +1717,7 @@
"select_all": "בחר הכל",
"select_all_duplicates": "בחר את כל הכפילויות",
"select_all_in": "בחר הכול בתוך {group}",
"select_avatar_color": "בחר צבע תמונת פרופיל",
"select_avatar_color": "בחר צבע יצגן",
"select_face": "בחר פנים",
"select_featured_photo": "בחר תמונה מייצגת",
"select_from_computer": "בחר מהמחשב",
@@ -1722,6 +1730,7 @@
"select_user_for_sharing_page_err_album": "יצירת אלבום נכשלה",
"selected": "נבחרו",
"selected_count": "{count, plural, other {# נבחרו}}",
"selected_gps_coordinates": "קואורדינטות GPS שנבחרו",
"send_message": "שלח הודעה",
"send_welcome_email": "שלח דוא\"ל קבלת פנים",
"server_endpoint": "נקודת קצה שרת",
@@ -1993,6 +2002,7 @@
"unstacked_assets_count": "{count, plural, one {תמונה # הוסרה} other {# תמונות הוסרו}} מהערימה",
"untagged": "לא מתיוגים",
"up_next": "הבא בתור",
"update_location_action_prompt": "עדכן את המיקום של {count} פריטים שנבחרו עם:",
"updated_at": "עודכן",
"updated_password": "סיסמה עודכנה",
"upload": "העלאה",

View File

@@ -585,8 +585,6 @@
"backup_setting_subtitle": "पृष्ठभूमि और अग्रभूमि अपलोड सेटिंग प्रबंधित करें",
"backup_settings_subtitle": "अपलोड सेटिंग्स संभालें",
"backward": "पिछला",
"beta_sync": "बीटा सिंक स्थिति",
"beta_sync_subtitle": "नए सिंक सिस्टम का प्रबंधन करें",
"biometric_auth_enabled": "बायोमेट्रिक प्रमाणीकरण सक्षम",
"biometric_locked_out": "आप बायोमेट्रिक प्रमाणीकरण से बाहर हैं",
"biometric_no_options": "कोई बायोमेट्रिक विकल्प उपलब्ध नहीं है",

View File

@@ -594,8 +594,6 @@
"backup_setting_subtitle": "Upravljajte postavkama učitavanja u pozadini i prvom planu",
"backup_settings_subtitle": "Upravljaj postavkama slanja",
"backward": "Unazad",
"beta_sync": "Beta status sinkronizacije",
"beta_sync_subtitle": "Upravljaj novim sustavom sinkronizacije",
"biometric_auth_enabled": "Biometrijska autentikacija omogućena",
"biometric_locked_out": "Zaključani ste iz biometrijske autentikacije",
"biometric_no_options": "Nema dostupnih biometrijskih opcija",

View File

@@ -594,8 +594,6 @@
"backup_setting_subtitle": "A háttérben és előtérben mentés beállításainak kezelése",
"backup_settings_subtitle": "Feltöltés beállításai",
"backward": "Visszafele",
"beta_sync": "Béta Szinkronizálás Állapota",
"beta_sync_subtitle": "Az új szinkronizálási rendszer kezelése",
"biometric_auth_enabled": "Biometrikus azonosítás engedélyezve",
"biometric_locked_out": "Ki vagy zárva a biometrikus azonosításból",
"biometric_no_options": "Nincsen elérhető biometrikus azonosítás",

View File

@@ -28,6 +28,9 @@
"add_to_album": "Tambahkan ke album",
"add_to_album_bottom_sheet_added": "Ditambahkan ke {album}",
"add_to_album_bottom_sheet_already_exists": "Sudah ada di {album}",
"add_to_album_toggle": "Masukkan ke {album} / Batalkan dari {album}",
"add_to_albums": "Tambahkan ke album",
"add_to_albums_count": "Tambahkan ke album ({count})",
"add_to_shared_album": "Tambahkan ke album terbagi",
"add_url": "Tambahkan URL",
"added_to_archive": "Ditambahkan ke arsip",
@@ -393,6 +396,8 @@
"advanced_settings_prefer_remote_title": "Prioritaskan gambar dari server",
"advanced_settings_proxy_headers_subtitle": "Tentukan header proxy yang harus dikirim Immich dengan setiap permintaan jaringan",
"advanced_settings_proxy_headers_title": "Tajuk Proksi",
"advanced_settings_readonly_mode_subtitle": "Mengaktifkan mode baca-saja, di mana foto hanya bisa dilihat. Fitur seperti memilih banyak foto, berbagi, cast, dan hapus akan dinonaktifkan. Mode baca-saja bisa diaktifkan/nonaktifkan lewat avatar pengguna di layar utama",
"advanced_settings_readonly_mode_title": "Mode Baca-Saja",
"advanced_settings_self_signed_ssl_subtitle": "Melewati verifikasi sertifikat SSL untuk titik akhir server. Diperlukan untuk sertifikat yang ditandatangani sendiri.",
"advanced_settings_self_signed_ssl_title": "Izinkan sertifikat SSL yang ditandatangani sendiri",
"advanced_settings_sync_remote_deletions_subtitle": "Hapus atau pulihkan aset pada perangkat ini secara otomatis ketika tindakan dilakukan di web",
@@ -458,6 +463,7 @@
"app_bar_signout_dialog_title": "Keluar akun",
"app_settings": "Pengaturan Aplikasi",
"appears_in": "Muncul dalam",
"apply_count": "Terapkan ({count, number})",
"archive": "Arsip",
"archive_action_prompt": "{count} telah ditambahkan ke Arsip",
"archive_or_unarchive_photo": "Arsipkan atau batalkan pengarsipan foto",
@@ -497,7 +503,9 @@
"assets": "Aset",
"assets_added_count": "{count, plural, one {# aset} other {# aset}} ditambahkan",
"assets_added_to_album_count": "Ditambahkan {count, plural, one {# aset} other {# aset}} ke album",
"assets_added_to_albums_count": "Ditambahkan {assetTotal, plural, one {# aset} other {# aset}} ke {albumTotal, plural, one {# album} other {# album}}",
"assets_cannot_be_added_to_album_count": "{count, plural, one {Asset} other {Assets}} tidak dapat ditambahkan ke album",
"assets_cannot_be_added_to_albums": "{count, plural, one {Aset} other {Aset}} tidak dapat ditambahkan ke album mana pun",
"assets_count": "{count, plural, one {# aset} other {# aset}}",
"assets_deleted_permanently": "{count} aset dihapus secara permanen",
"assets_deleted_permanently_from_server": "{count} aset dihapus secara permanen dari server Immich",
@@ -514,6 +522,7 @@
"assets_trashed_count": "{count, plural, one {# aset} other {# aset}} dibuang ke sampah",
"assets_trashed_from_server": "{count} aset dipindahkan ke sampah dari server Immich",
"assets_were_part_of_album_count": "{count, plural, one {Aset telah} other {Aset telah}} menjadi bagian dari album",
"assets_were_part_of_albums_count": "{count, plural, one {Aset sudah} other {Aset sudah}} ada di album",
"authorized_devices": "Perangkat Terautentikasi",
"automatic_endpoint_switching_subtitle": "Sambungkan secara lokal melalui Wi-Fi yang telah ditetapkan saat tersedia, dan gunakan koneksi alternatif lain",
"automatic_endpoint_switching_title": "Peralihan URL otomatis",
@@ -588,8 +597,6 @@
"backup_setting_subtitle": "Kelola pengaturan unggahan latar belakang dan latar depan",
"backup_settings_subtitle": "Kelola pengaturan unggahan",
"backward": "Maju",
"beta_sync": "Status proses sinkronisasi versi beta",
"beta_sync_subtitle": "Kelola sistem sinkronisasi baru",
"biometric_auth_enabled": "Autentikasi biometrik diaktifkan",
"biometric_locked_out": "Anda terkunci oleh autentikasi biometrik",
"biometric_no_options": "Opsi biometrik tidak tersedia",
@@ -1056,6 +1063,7 @@
"filter_people": "Saring orang",
"filter_places": "Saring tempat",
"find_them_fast": "Temukan dengan cepat berdasarkan nama dengan pencarian",
"first": "Pertama",
"fix_incorrect_match": "Perbaiki pencocokan salah",
"folder": "Berkas",
"folder_not_found": "Berkas tidak ditemukan",
@@ -1066,12 +1074,15 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Fitur ini memuat sumber daya eksternal dari Google agar dapat berfungsi.",
"general": "Umum",
"geolocation_instruction_location": "Klik aset yang memiliki koordinat GPS untuk menggunakan lokasinya, atau pilih lokasi langsung dari peta",
"get_help": "Dapatkan Bantuan",
"get_wifiname_error": "Tidak dapat mendapatkan nama Wi-Fi. Pastikan Anda telah memberikan izin yang diperlukan dan terhubung ke jaringan Wi-Fi",
"getting_started": "Memulai",
"go_back": "Kembali",
"go_to_folder": "Pergi ke folder",
"go_to_search": "Pergi ke pencarian",
"gps": "GPS",
"gps_missing": "Tidak ada GPS",
"grant_permission": "Izinkan",
"group_albums_by": "Kelompokkan album berdasarkan...",
"group_country": "Kelompokkan berdasarkan negara",
@@ -1177,6 +1188,7 @@
"language_search_hint": "Mencari Bahasa...",
"language_setting_description": "Pilih bahasa Anda yang disukai",
"large_files": "File Besar",
"last": "Terakhir",
"last_seen": "Terakhir dilihat",
"latest_version": "Versi Terkini",
"latitude": "Lintang",
@@ -1195,6 +1207,7 @@
"library_page_sort_title": "Judul album",
"licenses": "Lisensi",
"light": "Terang",
"like": "Suka",
"like_deleted": "Suka dihapus",
"link_motion_video": "Tautan video gerak",
"link_to_oauth": "Tautkan ke OAuth",
@@ -1253,6 +1266,7 @@
"main_branch_warning": "Anda menggunakan versi pengembangan; kami sangat menyarankan menggunakan versi rilis!",
"main_menu": "Menu utama",
"make": "Merek",
"manage_geolocation": "Atur lokasi",
"manage_shared_links": "Kelola tautan terbagi",
"manage_sharing_with_partners": "Kelola pembagian dengan partner",
"manage_the_app_settings": "Kelola pengaturan aplikasi",
@@ -1398,6 +1412,8 @@
"open_the_search_filters": "Buka saringan pencarian",
"options": "Opsi",
"or": "atau",
"organize_into_albums": "Atur ke dalam album",
"organize_into_albums_description": "Masukkan foto lama ke album sesuai pengaturan sinkronisasi",
"organize_your_library": "Kelola pustaka Anda",
"original": "asli",
"other": "Lainnya",
@@ -1457,9 +1473,9 @@
"permission_onboarding_permission_limited": "Izin dibatasi. Agai Immich dapat mencadangkan dan mengatur seluruh koleksi galeri, izinkan akses foto dan video pada Setelan.",
"permission_onboarding_request": "Immich memerlukan izin untuk melihat foto dan video kamu.",
"person": "Orang",
"person_age_months": "{months} bulan",
"person_age_year_months": "1 tahun, {months} bulan",
"person_age_years": "{years} tahun",
"person_age_months": "{months, plural, one {# bulan} other {# bulan}} old",
"person_age_year_months": "1 year, {months, plural, one {# bulan} other {# bulan}} old",
"person_age_years": "{years, plural, other {# tahun}} old",
"person_birthdate": "Lahir pada {date}",
"person_hidden": "{name}{hidden, select, true { (tersembunyi)} other {}}",
"photo_shared_all_users": "Sepertinya Anda membagikan foto Anda dengan semua pengguna atau Anda tidak memiliki pengguna siapa pun untuk dibagikan.",
@@ -1499,6 +1515,7 @@
"profile_drawer_client_out_of_date_minor": "Versi app seluler ini sudah kedaluwarsa. Silakan perbarui ke versi minor terbaru.",
"profile_drawer_client_server_up_to_date": "Klien dan server menjalankan versi terbaru",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Mode baca-saja aktif. Ketuk dua kali ikon avatar pengguna untuk keluar.",
"profile_drawer_server_out_of_date_major": "Versi server ini telah kedaluwarsa. Silakan perbarui ke versi major terbaru.",
"profile_drawer_server_out_of_date_minor": "Versi server ini telah kedaluwarsa. Silakan perbarui ke versi minor terbaru.",
"profile_image_of_user": "Foto profil dari {user}",
@@ -1537,6 +1554,7 @@
"purchase_server_description_2": "Status pendukung",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "Kunci produk server dikelola oleh admin",
"query_asset_id": "ID Aset Kueri",
"queue_status": "Antrian {count}/{total}",
"rating": "Peringkat bintang",
"rating_clear": "Hapus peringkat",
@@ -1544,6 +1562,8 @@
"rating_description": "Tampilkan peringkat EXIF pada panel info",
"reaction_options": "Opsi reaksi",
"read_changelog": "Baca Log Perubahan",
"readonly_mode_disabled": "Mode baca-saja dimatikan",
"readonly_mode_enabled": "Mode baca-saja diaktifkan",
"reassign": "Tetapkan ulang",
"reassigned_assets_to_existing_person": "Menetapkan ulang {count, plural, one {# aset} other {# aset}} kepada {name, select, null {orang yang sudah ada} other {{name}}}",
"reassigned_assets_to_new_person": "Menetapkan ulang {count, plural, one {# aset} other {# aset}} kepada orang baru",
@@ -1713,6 +1733,7 @@
"select_user_for_sharing_page_err_album": "Gagal membuat album",
"selected": "Dipilih",
"selected_count": "{count, plural, other {# dipilih}}",
"selected_gps_coordinates": "Koordinat GPS yang dipilih",
"send_message": "Kirim pesan",
"send_welcome_email": "Kirim surel selamat datang",
"server_endpoint": "Endpoint server",
@@ -1856,6 +1877,7 @@
"sort_created": "Tanggal dibuat",
"sort_items": "Jumlah item",
"sort_modified": "Tanggal diubah",
"sort_newest": "Foto terbaru",
"sort_oldest": "Foto terlawas",
"sort_people_by_similarity": "Urutkan orang berdasarkan kemiripan",
"sort_recent": "Foto paling terkini",
@@ -1931,7 +1953,9 @@
"to_change_password": "Ubah kata sandi",
"to_favorite": "Favorit",
"to_login": "Log masuk",
"to_multi_select": "untuk memilih beberapa",
"to_parent": "Ke induk",
"to_select": "untuk memilih",
"to_trash": "Sampah",
"toggle_settings": "Saklar pengaturan",
"total": "Jumlah",
@@ -1981,6 +2005,7 @@
"unstacked_assets_count": "Penumpukan {count, plural, one {# aset} other {# aset}} dibatalkan",
"untagged": "Tidak ditandai",
"up_next": "Berikutnya",
"update_location_action_prompt": "Perbarui lokasi {count} aset yang dipilih dengan:",
"updated_at": "Diperbarui",
"updated_password": "Kata sandi diperbarui",
"upload": "Unggah",
@@ -2047,6 +2072,7 @@
"view_next_asset": "Tampilkan aset berikutnya",
"view_previous_asset": "Tampilkan aset sebelumnya",
"view_qr_code": "Tampilkan kode QR",
"view_similar_photos": "Lihat foto yang mirip",
"view_stack": "Tampilkan Tumpukan",
"view_user": "Lihat Pengguna",
"viewer_remove_from_stack": "Keluarkan dari Tumpukan",

View File

@@ -392,10 +392,12 @@
"advanced_settings_enable_alternate_media_filter_subtitle": "Usa questa opzione per filtrare i contenuti multimediali durante la sincronizzazione in base a criteri alternativi. Prova questa opzione solo se riscontri problemi con il rilevamento di tutti gli album da parte dell'app.",
"advanced_settings_enable_alternate_media_filter_title": "[SPERIMENTALE] Usa un filtro alternativo per la sincronizzazione degli album del dispositivo",
"advanced_settings_log_level_title": "Livello log: {level}",
"advanced_settings_prefer_remote_subtitle": "Alcuni dispositivi sono molto lenti a caricare le anteprime delle immagini locali. Attivare questa impostazione per caricare invece le immagini remote.",
"advanced_settings_prefer_remote_subtitle": "Alcuni dispositivi sono estremamente lenti a caricare le miniature da risorse locali. Attiva questa impostazione per caricare invece le immagini remote.",
"advanced_settings_prefer_remote_title": "Preferisci immagini remote",
"advanced_settings_proxy_headers_subtitle": "Definisci gli header per i proxy che Immich dovrebbe inviare con ogni richiesta di rete",
"advanced_settings_proxy_headers_title": "Header Proxy",
"advanced_settings_readonly_mode_subtitle": "Abilita la modalità di sola lettura in cui le foto possono essere solo visualizzate, mentre funzioni come la selezione di più immagini, la condivisione, la trasmissione e l'eliminazione sono tutte disabilitate. Abilita/Disabilita la sola lettura tramite l'avatar dell'utente dalla schermata principale",
"advanced_settings_readonly_mode_title": "Modalità di sola lettura",
"advanced_settings_self_signed_ssl_subtitle": "Salta la verifica dei certificati SSL del server. Richiesto con l'uso di certificati self-signed.",
"advanced_settings_self_signed_ssl_title": "Consenti certificati SSL self-signed",
"advanced_settings_sync_remote_deletions_subtitle": "Rimuovi o ripristina automaticamente un elemento su questo dispositivo quando l'azione è stata fatta via web",
@@ -461,6 +463,7 @@
"app_bar_signout_dialog_title": "Disconnetti",
"app_settings": "Impostazioni Applicazione",
"appears_in": "Compare in",
"apply_count": "Applica ({count, number})",
"archive": "Archivio",
"archive_action_prompt": "Aggiunti {count} elementi all'Archivio",
"archive_or_unarchive_photo": "Archivia o ripristina foto",
@@ -594,8 +597,6 @@
"backup_setting_subtitle": "Gestisci le impostazioni di upload in primo piano e in background",
"backup_settings_subtitle": "Gestisci le impostazioni di caricamento",
"backward": "Indietro",
"beta_sync": "Status sincronizzazione beta",
"beta_sync_subtitle": "Gestisci il nuovo sistema di sincronizzazione",
"biometric_auth_enabled": "Autenticazione biometrica attivata",
"biometric_locked_out": "Sei stato bloccato dall'autenticazione biometrica",
"biometric_no_options": "Nessuna opzione biometrica disponibile",
@@ -1073,12 +1074,15 @@
"gcast_enabled": "Google Cast Abilitato",
"gcast_enabled_description": "Questa funzione carica risorse esterne da Google per poter funzionare.",
"general": "Generale",
"geolocation_instruction_location": "Fai clic su una risorsa con coordinate GPS per utilizzare la sua posizione oppure seleziona una posizione direttamente dalla mappa",
"get_help": "Chiedi Aiuto",
"get_wifiname_error": "Non sono riuscito a recuperare il nome della rete Wi-Fi. Accertati di aver concesso i permessi necessari e di essere connesso ad una rete Wi-Fi",
"getting_started": "Iniziamo",
"go_back": "Torna indietro",
"go_to_folder": "Vai alla cartella",
"go_to_search": "Vai alla ricerca",
"gps": "GPS",
"gps_missing": "No GPS",
"grant_permission": "Concedi permesso",
"group_albums_by": "Raggruppa album in base a...",
"group_country": "Raggruppa per paese",
@@ -1181,7 +1185,7 @@
"language": "Lingua",
"language_no_results_subtitle": "Prova a cambiare i tuoi termini di ricerca",
"language_no_results_title": "Linguaggi non trovati",
"language_search_hint": "Cerca linguaggi...",
"language_search_hint": "Cerca una lingua...",
"language_setting_description": "Seleziona la tua lingua predefinita",
"large_files": "File pesanti",
"last": "Ultimo",
@@ -1262,6 +1266,7 @@
"main_branch_warning": "Stai utilizzando una versione di sviluppo. Ti consigliamo vivamente di utilizzare una versione di rilascio!",
"main_menu": "Menu Principale",
"make": "Produttore",
"manage_geolocation": "Gestisci posizione",
"manage_shared_links": "Gestisci link condivisi",
"manage_sharing_with_partners": "Gestisci la condivisione con i compagni",
"manage_the_app_settings": "Gestisci le impostazioni dell'applicazione",
@@ -1407,6 +1412,8 @@
"open_the_search_filters": "Apri filtri di ricerca",
"options": "Opzioni",
"or": "o",
"organize_into_albums": "Organizza all'interno degli albums",
"organize_into_albums_description": "Inserisci le foto esistenti all'interno degli albums utilizzando le attuale impostazioni di sincronizzazione",
"organize_your_library": "Organizza la tua libreria",
"original": "originale",
"other": "Altro",
@@ -1508,6 +1515,7 @@
"profile_drawer_client_out_of_date_minor": "L'applicazione non è aggiornata. Aggiorna all'ultima versione minore.",
"profile_drawer_client_server_up_to_date": "Client e server sono aggiornati",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Modalità di sola lettura abilitata. Tocca due volte l'icona dell'avatar dell'utente per disabilitarla.",
"profile_drawer_server_out_of_date_major": "Il server non è aggiornato. Aggiorna all'ultima versione principale.",
"profile_drawer_server_out_of_date_minor": "Il server non è aggiornato. Aggiorna all'ultima versione minore.",
"profile_image_of_user": "Immagine profilo di {user}",
@@ -1546,6 +1554,7 @@
"purchase_server_description_2": "Stato di Contributore",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "La chiave del prodotto del server è gestita dall'amministratore",
"query_asset_id": "Esegui una query sull'ID dell'asset",
"queue_status": "Messi in coda {count}/{total}",
"rating": "Valutazione a stelle",
"rating_clear": "Crea valutazione",
@@ -1553,6 +1562,8 @@
"rating_description": "Visualizza la valutazione EXIF nel pannello informazioni",
"reaction_options": "Impostazioni Reazioni",
"read_changelog": "Leggi Riepilogo Modifiche",
"readonly_mode_disabled": "Modalità di sola lettura disabilitata",
"readonly_mode_enabled": "Modalità di sola lettura abilitata",
"reassign": "Riassegna",
"reassigned_assets_to_existing_person": "{count, plural, one {Riassegnato # asset} other {Riassegnati # assets}} {name, select, null {ad una persona esistente} other {a {name}}}",
"reassigned_assets_to_new_person": "{count, plural, one {Riassegnato # asset} other {Riassegnati # assets}} ad una nuova persona",
@@ -1629,6 +1640,7 @@
"restore_user": "Ripristina utente",
"restored_asset": "Asset ripristinato",
"resume": "Riprendi",
"resume_paused_jobs": "Riprendi {count, plural, one {# processo in pausa} other {# i processi in pausa}}",
"retry_upload": "Riprova caricamento",
"review_duplicates": "Esamina duplicati",
"review_large_files": "Revisiona file pesanti",
@@ -1722,6 +1734,7 @@
"select_user_for_sharing_page_err_album": "Impossibile nel creare l'album",
"selected": "Selezionato",
"selected_count": "{count, plural, one {# selezionato} other {# selezionati}}",
"selected_gps_coordinates": "Coordinate GPS selezionate",
"send_message": "Manda messaggio",
"send_welcome_email": "Invia email di benvenuto",
"server_endpoint": "Server endpoint",
@@ -1993,6 +2006,7 @@
"unstacked_assets_count": "{count, plural, one {Separato # asset} other {Separati # asset}}",
"untagged": "Senza tag",
"up_next": "Prossimo",
"update_location_action_prompt": "Aggiorna la posizione di {count} risorse selezionate con:",
"updated_at": "Aggiornato il",
"updated_password": "Password aggiornata",
"upload": "Carica",
@@ -2059,6 +2073,7 @@
"view_next_asset": "Visualizza risorsa successiva",
"view_previous_asset": "Visualizza risorsa precedente",
"view_qr_code": "Visualizza Codice QR",
"view_similar_photos": "Visualizza le foto simili",
"view_stack": "Visualizza Raggruppamento",
"view_user": "Visualizza Utente",
"viewer_remove_from_stack": "Rimuovi dalla pila",

View File

@@ -392,7 +392,7 @@
"advanced_settings_enable_alternate_media_filter_subtitle": "別の基準に従ってメディアファイルにフィルターをかけて、同期を行います。アプリがすべてのアルバムを読み込んでくれない場合にのみ、この機能を試してください。",
"advanced_settings_enable_alternate_media_filter_title": "[試験運用] 別のデバイスのアルバム同期フィルターを使用する",
"advanced_settings_log_level_title": "ログレベル: {level}",
"advanced_settings_prefer_remote_subtitle": "デバイスによっては、デバイス上にあるサムネイルのロードに非常に時間がかかることがあります。このオプションを有効にする事により、サーバーから直接画像をロードすることが可能です。",
"advanced_settings_prefer_remote_subtitle": "デバイスによっては、デバイス上にあるサムネイルのロードに非常に時間がかかることがあります。このオプションを有効にする事により、サーバーから直接画像をロードすることが可能です。",
"advanced_settings_prefer_remote_title": "リモートを優先する",
"advanced_settings_proxy_headers_subtitle": "プロキシヘッダを設定する",
"advanced_settings_proxy_headers_title": "プロキシヘッダ",
@@ -597,8 +597,6 @@
"backup_setting_subtitle": "アップロードに関する設定",
"backup_settings_subtitle": "アップロード設定を管理",
"backward": "新しい方へ",
"beta_sync": "同期の状態",
"beta_sync_subtitle": "同期の仕組みを管理",
"biometric_auth_enabled": "生体認証を有効化しました",
"biometric_locked_out": "生体認証により、アクセスできません",
"biometric_no_options": "生体認証を利用できません",
@@ -1076,10 +1074,7 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "この機能は動作のためにGoogleのリソースを読み込みます。",
"general": "一般",
"geolocation_instruction_all_have_location": "この日付のすべての項目に位置情報がすでについています。すべての項目を表示を試みるか別の日付を選択してください",
"geolocation_instruction_location": "位置情報付きの項目をクリックして、その位置情報を利用します。あるいは、地図上の地点を直接選ぶことも可能です",
"geolocation_instruction_no_date": "日付を選択して、その日の写真や動画の位置情報を管理しましょう",
"geolocation_instruction_no_photos": "この日付に写真や動画が無いようです。別の日付を選択してみてください",
"get_help": "助けを求める",
"get_wifiname_error": "Wi-Fiの名前(SSID)が入手できませんでした。Wi-Fiに繋がってるのと必要な権限を許可したか確認してください",
"getting_started": "はじめる",
@@ -1417,6 +1412,8 @@
"open_the_search_filters": "検索フィルタを開く",
"options": "オプション",
"or": "または",
"organize_into_albums": "アルバムに追加して整理する",
"organize_into_albums_description": "既存の写真を、現在の同期設定に基づきアルバムに追加する",
"organize_your_library": "ライブラリを整理",
"original": "オリジナル",
"other": "その他",
@@ -1557,6 +1554,7 @@
"purchase_server_description_2": "サポーターの状態",
"purchase_server_title": "サーバー",
"purchase_settings_server_activated": "サーバーのプロダクトキーは管理者に管理されています",
"query_asset_id": "順番待ちの項目ID",
"queue_status": "順番待ち中 {count}/{total}",
"rating": "星での評価",
"rating_clear": "評価を取り消す",
@@ -1846,10 +1844,8 @@
"shift_to_permanent_delete": "⇧を押してアセットを完全に削除",
"show_album_options": "アルバム設定を表示",
"show_albums": "アルバムを表示",
"show_all_assets": "すべての項目を表示",
"show_all_people": "全ての人物を表示",
"show_and_hide_people": "人物を表示/非表示",
"show_assets_without_location": "位置情報無しの項目を表示",
"show_file_location": "ファイルの場所を表示",
"show_gallery": "ギャラリーを表示",
"show_hidden_people": "非表示の人物を表示",
@@ -2034,7 +2030,6 @@
"use_biometric": "生体認証をご利用ください",
"use_current_connection": "現在の接続情報を使用",
"use_custom_date_range": "代わりにカスタム日付範囲を使用",
"use_this_location": "クリックして位置情報を使う",
"user": "ユーザー",
"user_has_been_deleted": "このユーザーは削除されました",
"user_id": "ユーザーID",
@@ -2077,6 +2072,7 @@
"view_next_asset": "次のアセットを見る",
"view_previous_asset": "前のアセットを見る",
"view_qr_code": "QRコードを見る",
"view_similar_photos": "類似する写真を見る",
"view_stack": "ビュースタック",
"view_user": "ユーザーを見る",
"viewer_remove_from_stack": "スタックから外す",

View File

@@ -596,8 +596,6 @@
"backup_setting_subtitle": "백그라운드 및 포그라운드 백업 설정을 관리합니다.",
"backup_settings_subtitle": "업로드 설정을 관리합니다.",
"backward": "뒤로",
"beta_sync": "동기화 (베타) 상태",
"beta_sync_subtitle": "새 동기화 시스템의 설정을 관리합니다.",
"biometric_auth_enabled": "생체 인증이 활성화되었습니다.",
"biometric_locked_out": "생체 인증이 일시적으로 비활성화되었습니다.",
"biometric_no_options": "사용 가능한 생체 인증 옵션 없음",
@@ -1081,6 +1079,8 @@
"go_back": "뒤로",
"go_to_folder": "폴더로 이동",
"go_to_search": "검색으로 이동",
"gps": "GPS",
"gps_missing": "GPS 없음",
"grant_permission": "권한 부여",
"group_albums_by": "다음으로 앨범 그룹화...",
"group_country": "국가별로 그룹화",
@@ -1264,6 +1264,7 @@
"main_branch_warning": "개발 버전을 사용 중입니다. 정식 릴리스 버전 사용을 권장합니다!",
"main_menu": "메인 메뉴",
"make": "제조사",
"manage_geolocation": "위치 정보 관리",
"manage_shared_links": "공유 링크 관리",
"manage_sharing_with_partners": "공유할 파트너를 초대하거나 제거합니다.",
"manage_the_app_settings": "앱 동작 및 표시 환경을 사용자 정의합니다.",

View File

@@ -156,13 +156,18 @@
"password_enable_description": "Pieteikšanās ar e-pasta adresi un paroli",
"password_settings": "Pieteikšanās ar paroli",
"password_settings_description": "Pieteikšanās ar paroli iestatījumu pārvaldība",
"paths_validated_successfully": "Visi ceļi veiksmīgi pārbaudīti",
"person_cleanup_job": "Personu tīrīšana",
"quota_size_gib": "Kvotas izmērs (GiB)",
"refreshing_all_libraries": "Atsvaidzina visas bibliotēkas",
"registration": "Administratora reģistrācija",
"registration_description": "Tā kā tu esi pirmais sistēmas lietotājs, tev tiks piešķirts administratora statuss un tu būsi atbildīgs par administrēšanas uzdevumiem, kā arī par citu lietotāju izveidi.",
"require_password_change_on_login": "Pieprasīt lietotājam mainīt paroli pēc pirmās pieteikšanās",
"reset_settings_to_default": "Atjaunot iestatījumus uz noklusējuma vērtībām",
"reset_settings_to_recent_saved": "Atjaunot iestatījumus uz pēdējiem saglabātajiem iestatījumiem",
"scanning_library": "Skenē bibliotēku",
"search_jobs": "Meklēt uzdevumus…",
"send_welcome_email": "Nosūtīt sveiciena e-pastu",
"server_external_domain_settings": "Ārējais domēns",
"server_external_domain_settings_description": "Domēns publiski kopīgotajām saitēm, iekļaujot http(s)://",
"server_public_users": "Publiski lietotāji",
@@ -187,6 +192,7 @@
"theme_custom_css_settings_description": "Cascading Style Sheets ļauj pielāgot Immich izskatu.",
"theme_settings_description": "Immich tīmekļa saskarnes pielāgojumu pārvaldība",
"thumbnail_generation_job": "Sīktēlu ģenerēšana",
"thumbnail_generation_job_description": "Izveidot lielu, mazu un izplūdušu sīktēlu katram failam, kā arī sīktēlu katrai personai",
"transcoding_acceleration_api": "Paātrināšanas API",
"transcoding_acceleration_nvenc": "NVENC (nepieciešams NVIDIA GPU)",
"transcoding_acceleration_qsv": "Quick Sync (nepieciešams 7. paaudzes vai jaunāks Intel procesors)",
@@ -205,10 +211,13 @@
"trash_number_of_days": "Dienu skaits",
"trash_settings": "Atkritnes iestatījumi",
"trash_settings_description": "Atkritnes iestatījumu pārvaldība",
"user_delete_delay_settings": "Dzēšanas aizture",
"user_delete_delay_settings_description": "Dienu skaits pēc izdzēšanas, kad neatgriezeniski tiks dzēsti lietotāja konti un faili. Lietotāju dzēšanas uzdevums tiek izpildīts pusnaktī un pārbauda, kuri lietotāji ir gatavi dzēšanai. Izmaiņas šajā iestatījumā tiks ņemtas vērā nākamajā izpildes reizē.",
"user_delete_immediately_checkbox": "Ierindot lietotāju un failus tūlītējai dzēšanai",
"user_details": "Lietotāja informācija",
"user_management": "Lietotāju pārvaldība",
"user_password_has_been_reset": "Lietotāja parole ir atiestatīta:",
"user_password_reset_description": "Lūdzu, norādi lietotājam pagaidu paroli un informē viņu, ka nākamajā pieslēgšanās reizē viņam būs jāmaina parole.",
"user_restore_description": "<b>{user}</b> konts tiks atjaunots.",
"user_restore_scheduled_removal": "Atjaunot lietotāju - plānotā dzēšana {date, date, long}",
"user_settings": "Lietotāja iestatījumi",
@@ -238,6 +247,7 @@
"album_added": "Albums pievienots",
"album_added_notification_setting_description": "Saņemt e-pasta paziņojumu, kad tevi pievieno kopīgam albumam",
"album_cover_updated": "Albuma attēls atjaunināts",
"album_delete_confirmation_description": "Ja šis albums tiek kopīgots, citi lietotāji vairs nevarēs tam piekļūt.",
"album_deleted": "Albums dzēsts",
"album_info_card_backup_album_excluded": "NEIEKĻAUTS",
"album_info_card_backup_album_included": "IEKĻAUTS",
@@ -279,6 +289,7 @@
"app_bar_signout_dialog_title": "Izrakstīties",
"app_settings": "Lietotnes iestatījumi",
"appears_in": "Parādās iekš",
"apply_count": "Pielietot ({count, number})",
"archive": "Arhīvs",
"archive_page_no_archived_assets": "Nav atrasts neviens arhivēts aktīvs",
"archive_page_title": "Arhīvs ({count})",
@@ -337,6 +348,7 @@
"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": "Labi",
"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",
@@ -379,8 +391,6 @@
"backup_options_page_title": "Dublēšanas iestatījumi",
"backup_settings_subtitle": "Pārvaldīt augšupielādes iestatījumus",
"backward": "Atpakaļejoši",
"beta_sync": "Beta Sinhronizācijas statuss",
"beta_sync_subtitle": "Pārvaldīt jauno sinhronizācijas sistēmu",
"biometric_auth_enabled": "Ieslēgta biometriskā autentifikācija",
"biometric_locked_out": "Biometriskā autentifikācija tev ir bloķēta",
"biometric_no_options": "Nav pieejamas biometriskās autentifikācijas iespējas",
@@ -406,6 +416,7 @@
"cache_settings_title": "Kešdarbes iestatījumi",
"camera": "Fotokamera",
"cancel": "Atcelt",
"canceled": "Atcelts",
"canceling": "Atceļ",
"cannot_merge_people": "Nevar apvienot personas",
"cast": "Pārraidīt",
@@ -424,12 +435,19 @@
"change_password_form_password_mismatch": "Paroles nesakrīt",
"change_password_form_reenter_new_password": "Atkārtoti ievadīt jaunu paroli",
"change_pin_code": "Nomainīt PIN kodu",
"check_corrupt_asset_backup_button": "Veikt pārbaudi",
"choose_matching_people_to_merge": "Izvēlies atbilstošas personas apvienošanai",
"city": "Pilsēta",
"clear": "Notīrīt",
"clear_all": "Notīrīt visu",
"clear_file_cache": "Notīrīt failu kešatmiņu",
"clear_value": "Notīrīt vērtību",
"client_cert_dialog_msg_confirm": "Labi",
"client_cert_enter_password": "Ievadi paroli",
"client_cert_import": "Importēt",
"client_cert_import_success_msg": "Klienta sertifikāts ir importēts",
"client_cert_invalid_msg": "Nederīgs sertifikāta fails vai nepareiza parole",
"client_cert_remove_msg": "Klienta sertifikāts ir noņemts",
"client_cert_subtitle": "Atbalsta tikai PKCS12 (.p12, .pfx) formātu. Sertifikātu importēšana/noņemšana ir pieejama tikai pirms pieslēgšanās",
"client_cert_title": "SSL klienta sertifikāts",
"clockwise": "Pulksteņrādītāja virzienā",
@@ -441,6 +459,7 @@
"comment_deleted": "Komentārs dzēsts",
"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": "Pabeigts",
"confirm": "Apstiprināt",
"confirm_new_pin_code": "Apstiprināt jauno PIN kodu",
"confirm_password": "Apstiprināt paroli",
@@ -463,6 +482,7 @@
"create_library": "Izveidot bibliotēku",
"create_link": "Izveidot saiti",
"create_link_to_share": "Izveidot kopīgošanas saiti",
"create_new": "IZVEIDOT JAUNU",
"create_new_person": "Izveidot jaunu personu",
"create_new_user": "Izveidot jaunu lietotāju",
"create_shared_album_page_share_add_assets": "PIEVIENOT AKTĪVUS",
@@ -471,6 +491,7 @@
"created_at": "Izveidots",
"curated_object_page_title": "Lietas",
"current_pin_code": "Esošais PIN kods",
"current_server_address": "Pašreizējā servera adrese",
"custom_locale": "Pielāgota lokalizācija",
"custom_locale_description": "Formatēt datumus un skaitļus atbilstoši valodai un reģionam",
"custom_url": "Pielāgots URL",
@@ -524,21 +545,27 @@
"download_action_prompt": "Lejupielādē {count} failus",
"download_canceled": "Lejupielāde atcelta",
"download_complete": "Lejupielāde pabeigta",
"download_enqueue": "Lejupielāde ierindota",
"download_error": "Lejupielādes kļūda",
"download_failed": "Lejupielāde neizdevās",
"download_finished": "Lejupielāde pabeigta",
"download_notfound": "Lejupielāde nav atrasta",
"download_paused": "Lejupielāde nopauzēta",
"download_settings": "Lejupielāde",
"download_settings_description": "Ar failu lejupielādi saistīto iestatījumu pārvaldība",
"download_started": "Lejupielāde sākta",
"download_sucess": "Lejupielāde izdevās",
"download_sucess_android": "Multivides fails ir lejupielādēts uz DCIM/Immich",
"download_waiting_to_retry": "Gaida, lai mēģinātu atkārtoti",
"downloading": "Lejupielādē",
"downloading_asset_filename": "Lejupielādē failu {filename}",
"downloading_media": "Lejupielādē failu",
"duplicates": "Dublikāti",
"duplicates_description": "Atrisini katru grupu, norādot, kuri no tiem ir dublikāti",
"duration": "Ilgums",
"edit": "Labot",
"edit_album": "Labot albumu",
"edit_avatar": "Labot avatāru",
"edit_birthday": "Labot dzimšanas dienu",
"edit_date": "Labot datumu",
"edit_date_and_time": "Labot datumu un laiku",
@@ -572,6 +599,7 @@
"enter_your_pin_code": "Ievadi savu PIN kodu",
"enter_your_pin_code_subtitle": "Ievadi savu PIN kodu, lai piekļūtu slēgtajai mapei",
"error": "Kļūda",
"error_change_sort_album": "Neizdevās nomainīt albuma kārtošanas secību",
"error_saving_image": "Kļūda: {error}",
"errors": {
"cant_get_faces": "Nevar iegūt sejas",
@@ -625,10 +653,13 @@
"export_database_description": "Eksportēt SQLite datubāzi",
"extension": "Paplašinājums",
"external": "Ārējs",
"external_network": "Ārējs tīkls",
"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": "Nepiešķirts",
"failed": "Neizdevās",
"failed_to_authenticate": "Neizdevās autentificēties",
"failed_to_load_assets": "Neizdevās ielādēt failus",
"failed_to_load_folder": "Neizdevās ielādēt mapi",
"favorite": "Izlase",
"favorites": "Izlase",
"favorites_page_no_favorites": "Nav atrasti iecienītākie faili",
@@ -654,6 +685,8 @@
"go_back": "Doties atpakaļ",
"go_to_folder": "Doties uz mapi",
"go_to_search": "Doties uz meklēšanu",
"gps": "Ir koordinātas",
"gps_missing": "Nav koordinātu",
"grant_permission": "Piešķirt atļauju",
"group_albums_by": "Grupēt albumus pēc...",
"group_country": "Grupēt pēc valsts",
@@ -789,6 +822,7 @@
"look": "Izskats",
"loop_videos_description": "Iespējot, lai automātiski videoklips tiktu cikliski palaists detaļu skatītājā.",
"make": "Ražotājs",
"manage_geolocation": "Pārvaldīt atrašanās vietu",
"manage_shared_links": "Kopīgoto saišu pārvaldība",
"manage_sharing_with_partners": "Koplietošanas ar partneriem pārvaldība",
"manage_the_app_settings": "Lietotnes iestatījumu pārvaldība",
@@ -856,6 +890,7 @@
"name_or_nickname": "Vārds vai iesauka",
"network_requirement_photos_upload": "Izmantot mobilo datu pārraidi, lai dublētu fotoattēlus",
"network_requirement_videos_upload": "Izmantot mobilo datu pārraidi, lai dublētu video",
"networking_subtitle": "Pārvaldīt servera galapunktu iestatījumus",
"never": "nekad",
"new_album": "Jauns albums",
"new_api_key": "Jauna API atslēga",
@@ -881,6 +916,7 @@
"no_results": "Nav rezultātu",
"no_results_description": "Izmēģiniet sinonīmu vai vispārīgāku atslēgvārdu",
"not_in_any_album": "Nav nevienā albumā",
"not_selected": "Nav izvēlēts",
"notes": "Piezīmes",
"nothing_here_yet": "Šeit vēl nekā nav",
"notification_permission_dialog_content": "Lai iespējotu paziņojumus, atveriet Iestatījumi un atlasiet Atļaut.",
@@ -1115,12 +1151,17 @@
"see_all_people": "Skatīt visas personas",
"select_album_cover": "Izvēlieties albuma vāciņu",
"select_all_duplicates": "Atlasīt visus dublikātus",
"select_avatar_color": "Izvēlies avatāra krāsu",
"select_face": "Izvēlies seju",
"select_from_computer": "Izvēlēties no datora",
"select_keep_all": "Atzīmēt visus paturēšanai",
"select_library_owner": "Izvēlies bibliotēkas īpašnieku",
"select_new_face": "Izvēlies jaunu seju",
"select_photos": "Fotoattēlu Izvēle",
"select_trash_all": "Atzīmēt visus dzēšanai",
"select_user_for_sharing_page_err_album": "Neizdevās izveidot albumu",
"selected": "Izvēlētie",
"selected_gps_coordinates": "Izvēlētās ģeogrāfiskās koordinātas",
"server_info_box_app_version": "Aplikācijas Versija",
"server_info_box_server_url": "Servera URL",
"server_online": "Serveris tiešsaistē",
@@ -1147,6 +1188,7 @@
"setting_notifications_total_progress_subtitle": "Kopējais augšupielādes progress (pabeigti/kopējie faili)",
"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": "Straumējot video no servera, izmantot oriģinālu, pat ja ir pieejama pārkodēšana. Tas var izraisīt buferēšanu. Lokāli pieejamie video tiek atskaņoti oriģinālajā kvalitātē, neatkarīgi no šīs iestatījuma.",
"settings": "Iestatījumi",
"settings_require_restart": "Lūdzu, restartējiet Immich, lai lietotu šo iestatījumu",
"setup_pin_code": "Uzstādīt PIN kodu",
@@ -1325,6 +1367,7 @@
"usage": "Lietojums",
"use_biometric": "Izmantot biometrisko autentifikāciju",
"use_current_connection": "izmantot pašreizējo savienojumu",
"use_custom_date_range": "Izmantot pielāgotu datuma intervālu",
"user": "Lietotājs",
"user_has_been_deleted": "Šis lietotājs ir dzēsts.",
"user_id": "Lietotāja ID",
@@ -1338,6 +1381,7 @@
"username": "Lietotājvārds",
"users": "Lietotāji",
"utilities": "Rīki",
"validate": "Pārbaudīt",
"variables": "Mainīgie",
"version": "Versija",
"version_announcement_closing": "Tavs draugs, Alekss",
@@ -1358,6 +1402,7 @@
"view_next_asset": "Skatīt nākamo failu",
"view_previous_asset": "Skatīt iepriekšējo failu",
"view_qr_code": "Skatīt QR kodu",
"view_similar_photos": "Skatīt līdzīgas fotogrāfijas",
"view_stack": "Apskatīt kaudzi",
"view_user": "Apskatīt lietotāju",
"viewer_remove_from_stack": "Noņemt no Steka",

View File

@@ -13,6 +13,7 @@
"add_a_location": "ഒരു സ്ഥലം ചേർക്കുക",
"add_a_name": "ഒരു പേര് ചേർക്കുക",
"add_a_title": "ഒരു ശീർഷകം ചേർക്കുക",
"add_birthday": "ജന്മദിനം ചേർക്കുക",
"add_endpoint": "എൻഡ്പോയിന്റ് ചേർക്കുക",
"add_exclusion_pattern": "ഒഴിവാക്കാനുള്ള മാതൃക ചേർക്കുക",
"add_import_path": "ഇറക്കുമതി ചെയ്യുക",
@@ -22,10 +23,12 @@
"add_path": "പാത ചേര്‍ക്കുക",
"add_photos": "ചിത്രങ്ങള്‍ ചേര്‍ക്കുക",
"add_tag": "ടാഗ് ചേര്‍ക്കുക",
"add_to": "ചേര്‍ക്കുക",
"add_to": "ചേര്‍ക്കുക",
"add_to_album": "ആല്‍ബത്തിലേക്ക് ചേര്‍ക്കുക",
"add_to_album_bottom_sheet_added": "{album} - ലേക്ക് ചേര്‍ത്തു",
"add_to_album_bottom_sheet_already_exists": "{album} ആൽബത്തിൽ ഇപ്പോള്‍ തന്നെ ഉണ്ട്",
"add_to_albums": "ആൽബങ്ങളിൽ ചേർക്കുക",
"add_to_albums_count": "ആൽബങ്ങളിൽ ചേർക്കുക ({count})",
"add_to_shared_album": "പങ്കിട്ട ആൽബത്തിലേക്ക് ചേർക്കുക",
"add_url": "URL ചേര്‍ക്കുക",
"added_to_archive": "ചരിത്രരേഖയായി (ആര്‍ക്കൈവ്) ചേര്‍ത്തിരിക്കുന്നു",
@@ -68,6 +71,17 @@
"image_format": "ഘടന",
"image_format_description": "WebP ഉണ്ടാക്കാന്‍ സമയം എടുക്കും എങ്കിലും JPEG ഫയലുകളെക്കാള്‍ ചെറുതായിരിക്കും.",
"image_fullsize_description": "അധികവിവരങ്ങള്‍ ഒഴിവാക്കിയ ചിത്രം, വലുതാക്കി കാണിക്കുമ്പോള്‍ ഉപയോഗിക്കപ്പെടുന്നു",
"image_fullsize_enabled": "പൂര്‍ണ വലുപ്പത്തില്‍ ഉള്ള ചിത്രങ്ങള്‍ ഉണ്ടാക്കാന്‍പ്രാപ്തമാക്കുക"
}
"image_fullsize_enabled": "പൂര്‍ണ വലുപ്പത്തില്‍ ഉള്ള ചിത്രങ്ങള്‍ ഉണ്ടാക്കാന്‍പ്രാപ്തമാക്കുക",
"image_fullsize_quality_description": "1 മുതൽ 100 വരെയുള്ള പൂർണ്ണ വലുപ്പത്തിലുള്ള ഇമേജ് നിലവാരം. ഉയർന്നതാണ് നല്ലത്, പക്ഷേ വലിയ ഫയലുകൾ ഉത്പാദിപ്പിക്കുന്നു.",
"image_fullsize_title": "പൂർണ്ണ വലുപ്പത്തിലുള്ള ഇമേജ് ക്രമീകരണങ്ങൾ",
"image_quality": "ഗുണനിലവാരം",
"job_created": "ജോലി സൃഷ്ടിച്ചു",
"job_status": "ജോലി നില"
},
"waiting": "കാത്തിരിക്കുന്നു",
"warning": "മുന്നറിയിപ്പ്",
"week": "ആഴ്ച",
"welcome": "സ്വാഗതം",
"year": "വർഷം",
"yes": "അതെ"
}

View File

@@ -28,6 +28,8 @@
"add_to_album": "संग्रहात टाका",
"add_to_album_bottom_sheet_added": "{album} मध्ये जोडले गेले",
"add_to_album_bottom_sheet_already_exists": "आधीच {album} मध्ये आहे",
"add_to_album_toggle": "अल्बमसाठी निवड टॉगल करा",
"add_to_albums": "अल्बममध्ये जोडा",
"add_to_shared_album": "सामायिक संग्रहात टाका",
"add_url": "URL प्रविष्ट करा",
"added_to_archive": "संग्रहित केले",
@@ -572,8 +574,6 @@
"backup_setting_subtitle": "बॅकग्राउंड आणि फोरग्राउंड अपलोड सेटिंग्ज व्यवस्थापित करा",
"backup_settings_subtitle": "अपलोड सेटिंग्ज व्यवस्थापित करा",
"backward": "मागासलेले",
"beta_sync": "बीटा सिंक स्थिती",
"beta_sync_subtitle": "नवीन सिंक प्रणाली व्यवस्थापित करा",
"biometric_auth_enabled": "बायोमेट्रिक प्रमाणीकरण चालू आहे",
"biometric_locked_out": "आपण बायोमेट्रिक प्रमाणीकरणापासून लॉक आहात",
"biometric_no_options": "कोणतेही बायोमेट्रिक पर्याय उपलब्ध नाहीत",

View File

@@ -597,8 +597,6 @@
"backup_setting_subtitle": "Administrer opplastingsinnstillinger for bakgrunn og forgrunn",
"backup_settings_subtitle": "Håndter opplastingsinnstillinger",
"backward": "Bakover",
"beta_sync": "Beta synkroniseringsstatus",
"beta_sync_subtitle": "Håndter det nye synkroniseringssystemet",
"biometric_auth_enabled": "Biometrisk autentisering aktivert",
"biometric_locked_out": "Du er låst ute av biometrisk verifisering",
"biometric_no_options": "Ingen biometriske valg tilgjengelige",
@@ -1076,10 +1074,7 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Denne funksjonen laster eksterne ressurser fra Google for å fungere.",
"general": "Generelt",
"geolocation_instruction_all_have_location": "Alle objekter for denne datoen har allerede lokasjonsdata. Prøv å vise alle objekter eller velg en annen dato",
"geolocation_instruction_location": "Klikk på et objekt med GPS-koordinater for å bruke posisjonen, eller velg en posisjon direkte fra kartet",
"geolocation_instruction_no_date": "Velg en dato for å administrere posisjonsdata for bilder og videoer fra den dagen",
"geolocation_instruction_no_photos": "Ingen bilder eller videoer funnet for denne datoen. Velg en annen dato for å vise dem",
"get_help": "Få Hjelp",
"get_wifiname_error": "Kunne ikke hente Wi-Fi-navnet. Sørg for at du har gitt de nødvendige tillatelsene og er koblet til et Wi-Fi-nettverk",
"getting_started": "Kom i gang",
@@ -1417,6 +1412,8 @@
"open_the_search_filters": "Åpne søkefiltrene",
"options": "Valg",
"or": "eller",
"organize_into_albums": "Organiser til albumer",
"organize_into_albums_description": "Plasser eksisterende bilder i albumer ved å bruke synkroniseringsinnstillinger",
"organize_your_library": "Organiser biblioteket ditt",
"original": "original",
"other": "Annet",
@@ -1557,6 +1554,7 @@
"purchase_server_description_2": "Støttespiller status",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "Produktnøkkel for server er administrert av administratoren",
"query_asset_id": "Forespør objektID",
"queue_status": "Kø {count}/{total}",
"rating": "Stjernevurdering",
"rating_clear": "Slett vurdering",
@@ -1642,6 +1640,7 @@
"restore_user": "Gjenopprett bruker",
"restored_asset": "Gjenopprettet ressurs",
"resume": "Fortsett",
"resume_paused_jobs": "Fortsett {count, plural, one {# paused job} other {# paused jobs}}",
"retry_upload": "Prøv opplasting på nytt",
"review_duplicates": "Gjennomgå duplikater",
"review_large_files": "Se gjennom store filer",
@@ -1735,7 +1734,7 @@
"select_user_for_sharing_page_err_album": "Feilet ved oppretting av album",
"selected": "Valgt",
"selected_count": "{count, plural, other {# valgt}}",
"selected_gps_coordinates": "valgte GPS-koordinater",
"selected_gps_coordinates": "Valgte GPS-koordinater",
"send_message": "Send melding",
"send_welcome_email": "Send velkomstmelding",
"server_endpoint": "Server endepunkt",
@@ -1846,10 +1845,8 @@
"shift_to_permanent_delete": "trykk ⇧ for å slette eiendeler permanent",
"show_album_options": "Vis albumalternativer",
"show_albums": "Vis album",
"show_all_assets": "Via alle objekter",
"show_all_people": "Vis alle mennesker",
"show_and_hide_people": "Vis og skjul personer",
"show_assets_without_location": "Vis objekter uten lokasjon",
"show_file_location": "Vis filplassering",
"show_gallery": "Vis galleri",
"show_hidden_people": "Vis skjulte personer",
@@ -2034,7 +2031,6 @@
"use_biometric": "Bruk biometri",
"use_current_connection": "bruk nåværende tilkobling",
"use_custom_date_range": "Bruk egendefinert datoperiode i stedet",
"use_this_location": "Trykk for å bruke lokasjon",
"user": "Bruker",
"user_has_been_deleted": "Denne brukeren har blitt slettet.",
"user_id": "Bruker ID",
@@ -2077,6 +2073,7 @@
"view_next_asset": "Vis neste fil",
"view_previous_asset": "Vis forrige fil",
"view_qr_code": "Vis QR-kode",
"view_similar_photos": "Vis lignende bilder",
"view_stack": "Vis stabel",
"view_user": "Vis bruker",
"viewer_remove_from_stack": "Fjern fra stabling",

View File

@@ -293,7 +293,7 @@
"theme_settings_description": "Beheer het uiterlijk van de Immich webinterface",
"thumbnail_generation_job": "Thumbnail genereren",
"thumbnail_generation_job_description": "Genereer grote, kleine en vervaagde thumbnails voor ieder item, en genereer thumbnails voor iedere persoon",
"transcoding_acceleration_api": "Acceleration API",
"transcoding_acceleration_api": "Versnelling API",
"transcoding_acceleration_api_description": "De API die met je apparaat zal communiceren om transcodering te versnellen. Deze instelling is 'best effort': wanneer fouten optreden wordt teruggevallen op softwaretranscodering. VP9 kan wel of niet werken, afhankelijk van je hardware.",
"transcoding_acceleration_nvenc": "NVENC (vereist NVIDIA GPU)",
"transcoding_acceleration_qsv": "Quick Sync (vereist 7e generatie Intel CPU of nieuwer)",
@@ -312,7 +312,7 @@
"transcoding_codecs_learn_more": "Om meer te leren over de terminologie die hier wordt gebruikt, bekijk de FFmpeg documentatie voor <h264-link>H.264 codec</h264-link>, <hevc-link>HEVC codec</hevc-link> en <vp9-link>VP9 codec</vp9-link>.",
"transcoding_constant_quality_mode": "Constante kwaliteit modus",
"transcoding_constant_quality_mode_description": "ICQ is beter dan CQP, maar sommige hardware versnellingsmethodes ondersteunen deze modus niet. Als u deze optie instelt, wordt de voorkeur gegeven aan de opgegeven modus bij gebruik van op kwaliteit gebaseerde encoding. Deze optie wordt genegeerd door NVENC omdat het ICQ niet ondersteunt.",
"transcoding_constant_rate_factor": "Constant rate factor (-crf)",
"transcoding_constant_rate_factor": "Constant tarief factor (-ctf)",
"transcoding_constant_rate_factor_description": "Niveau voor videokwaliteit. Typische waarden zijn 23 voor H.264, 28 voor HEVC, 31 voor VP9 en 35 voor AV1. Lager is beter, maar produceert grotere bestanden.",
"transcoding_disabled_description": "Transcodeer geen video's. Het afspelen kan op sommige clients niet meer werken",
"transcoding_encoding_options": "Coderings Opties",
@@ -325,7 +325,7 @@
"transcoding_max_b_frames_description": "Hogere waarden verbeteren de compressie efficiëntie, maar vertragen de codering. Is mogelijk niet compatibel met hardwareversnelling op oudere apparaten. 0 schakelt B-frames uit, terwijl -1 deze waarde automatisch instelt.",
"transcoding_max_bitrate": "Maximum bitrate",
"transcoding_max_bitrate_description": "Het instellen van een maximale bitrate kan de bestandsgrootte voorspelbaarder maken, tegen geringe kosten voor de kwaliteit. Bij 720p zijn de typische waarden 2600 kbit/s voor VP9 of HEVC, of 4500 kbit/s voor H.264. Uitgeschakeld indien ingesteld op 0.",
"transcoding_max_keyframe_interval": "Maximum keyframe interval",
"transcoding_max_keyframe_interval": "Maximale keyframe interval",
"transcoding_max_keyframe_interval_description": "Stelt de maximale frameafstand tussen keyframes in. Lagere waarden verslechteren de compressie efficiëntie, maar verbeteren de zoektijden en kunnen de kwaliteit verbeteren in scènes met snelle bewegingen. 0 stelt deze waarde automatisch in.",
"transcoding_optimal_description": "Video's met een hogere resolutie dan de doelresolutie of niet in een geaccepteerd formaat",
"transcoding_policy": "Transcode beleid",
@@ -341,7 +341,7 @@
"transcoding_settings_description": "Beheer welke videos worden getranscodeerd en hoe ze worden verwerkt",
"transcoding_target_resolution": "Target resolutie",
"transcoding_target_resolution_description": "Hogere resoluties kunnen meer details behouden, maar het coderen ervan duurt langer, de bestandsgrootte is groter en de app reageert mogelijk minder snel.",
"transcoding_temporal_aq": "Temporal AQ",
"transcoding_temporal_aq": "Tijdelijke AQ",
"transcoding_temporal_aq_description": "Alleen van toepassing op NVENC. Verhoogt de kwaliteit van scènes met veel details en weinig beweging. Is mogelijk niet compatibel met oudere apparaten.",
"transcoding_threads": "Threads",
"transcoding_threads_description": "Hogere waarden leiden tot snellere codering, maar laten minder ruimte over voor de server om andere taken te verwerken terwijl deze actief is. Deze waarde mag niet groter zijn dan het aantal CPU cores. Maximaliseert het gebruik als deze is ingesteld op 0.",
@@ -396,6 +396,8 @@
"advanced_settings_prefer_remote_title": "Externe afbeeldingen laden",
"advanced_settings_proxy_headers_subtitle": "Definieer proxy headers die Immich bij elk netwerkverzoek moet verzenden",
"advanced_settings_proxy_headers_title": "Proxy headers",
"advanced_settings_readonly_mode_subtitle": "Schakelt de alleen-lezenmodus in, waarbij de foto's alleen bekeken kunnen worden. Dingen zoals het selecteren van meerdere afbeeldingen, delen, casten en verwijderen zijn allemaal uitgeschakeld. Schakel alleen-lezen in of uit via de gebruikers avatar vanaf het hoofdscherm",
"advanced_settings_readonly_mode_title": "Alleen-lezen Mode",
"advanced_settings_self_signed_ssl_subtitle": "Slaat SSL-certificaatverificatie voor de connectie met de server over. Deze optie is vereist voor zelfondertekende certificaten.",
"advanced_settings_self_signed_ssl_title": "Zelfondertekende SSL-certificaten toestaan",
"advanced_settings_sync_remote_deletions_subtitle": "Automatisch bestanden verwijderen of herstellen op dit apparaat als die actie op het web is ondernomen",
@@ -461,6 +463,7 @@
"app_bar_signout_dialog_title": "Log uit",
"app_settings": "App instellingen",
"appears_in": "Komt voor in",
"apply_count": "Toepassen ({count, number})",
"archive": "Archief",
"archive_action_prompt": "{count} item(s) toegevoegd aan het archief",
"archive_or_unarchive_photo": "Foto archiveren of uit het archief halen",
@@ -594,8 +597,6 @@
"backup_setting_subtitle": "Beheer achtergrond en voorgrond uploadinstellingen",
"backup_settings_subtitle": "Beheer upload instellingen",
"backward": "Achteruit",
"beta_sync": "Beta Sync Status",
"beta_sync_subtitle": "Beheer het nieuwe synchronisatiesysteem",
"biometric_auth_enabled": "Biometrische authenticatie ingeschakeld",
"biometric_locked_out": "Biometrische authenticatie is vergrendeld",
"biometric_no_options": "Geen biometrische opties beschikbaar",
@@ -834,7 +835,7 @@
"download_sucess_android": "Het bestand is gedownload naar DCIM/Immich",
"download_waiting_to_retry": "Wachten om opnieuw te proberen",
"downloading": "Downloaden",
"downloading_asset_filename": "Item {filename} downloaden...",
"downloading_asset_filename": "Downloading asset {filename}",
"downloading_media": "Media aan het downloaden",
"drop_files_to_upload": "Zet bestanden ergens neer om ze te uploaden",
"duplicates": "Duplicaten",
@@ -1073,12 +1074,15 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Deze functie gebruikt externe bronnen van Google om te kunnen werken.",
"general": "Algemeen",
"geolocation_instruction_location": "Klik op een item met GPS coördinaten om de locatie te gebruiken, of selecteer een locatie direct vanaf de kaart",
"get_help": "Krijg hulp",
"get_wifiname_error": "Kon de WiFi-naam niet ophalen. Zorg ervoor dat je de benodigde machtigingen hebt verleend en verbonden bent met een WiFi-netwerk",
"getting_started": "Aan de slag",
"go_back": "Ga terug",
"go_to_folder": "Ga naar map",
"go_to_search": "Ga naar zoeken",
"gps": "GPS",
"gps_missing": "Geen GPS",
"grant_permission": "Geef toestemming",
"group_albums_by": "Groepeer albums op...",
"group_country": "Groepeer op land",
@@ -1262,6 +1266,7 @@
"main_branch_warning": "Je gebruikt een ontwikkelingsversie. We raden je ten zeerste aan een releaseversie te gebruiken!",
"main_menu": "Hoofdmenu",
"make": "Merk",
"manage_geolocation": "Beheer locatie",
"manage_shared_links": "Beheer gedeelde links",
"manage_sharing_with_partners": "Beheer delen met partners",
"manage_the_app_settings": "Beheer de appinstellingen",
@@ -1407,6 +1412,8 @@
"open_the_search_filters": "Open de zoekfilters",
"options": "Opties",
"or": "of",
"organize_into_albums": "Organiseren in albums",
"organize_into_albums_description": "Bestaande foto's in albums plaatsen met de huidige synchronisatie-instellingen",
"organize_your_library": "Organiseer je bibliotheek",
"original": "origineel",
"other": "Overige",
@@ -1503,18 +1510,19 @@
"primary": "Primair",
"privacy": "Privacy",
"profile": "Profiel",
"profile_drawer_app_logs": "Logboek",
"profile_drawer_app_logs": "Logs",
"profile_drawer_client_out_of_date_major": "Mobiele app is verouderd. Werk bij naar de nieuwste hoofdversie.",
"profile_drawer_client_out_of_date_minor": "Mobiele app is verouderd. Werk bij naar de nieuwste subversie.",
"profile_drawer_client_server_up_to_date": "App en server zijn up-to-date",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Alleen-lezen-modus ingeschakeld. Dubbeltik op het avatarpictogram van de gebruiker om te verlaten.",
"profile_drawer_server_out_of_date_major": "Server is verouderd. Werk bij naar de nieuwste hoofdversie.",
"profile_drawer_server_out_of_date_minor": "Server is verouderd. Werk bij naar de nieuwste subversie.",
"profile_image_of_user": "Profielfoto van {user}",
"profile_picture_set": "Profielfoto ingesteld.",
"public_album": "Openbaar album",
"public_share": "Openbare deellink",
"purchase_account_info": "Supporter",
"purchase_account_info": "Ondersteuner",
"purchase_activated_subtitle": "Bedankt voor het ondersteunen van Immich en open-source software",
"purchase_activated_time": "Geactiveerd op {date}",
"purchase_activated_title": "Je licentiesleutel is succesvol geactiveerd",
@@ -1546,6 +1554,7 @@
"purchase_server_description_2": "Supporterstatus",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "De licentiesleutel van de server wordt beheerd door de beheerder",
"query_asset_id": "Query Asset ID",
"queue_status": "Wachtrij {count}/{total}",
"rating": "Sterwaardering",
"rating_clear": "Waardering verwijderen",
@@ -1553,6 +1562,8 @@
"rating_description": "De EXIF-waardering weergeven in het infopaneel",
"reaction_options": "Reactie-opties",
"read_changelog": "Lees wijzigingen",
"readonly_mode_disabled": "Alleen-lezen modus uitgeschakeld",
"readonly_mode_enabled": "Alleen-lezen modus ingeschakeld",
"reassign": "Opnieuw toewijzen",
"reassigned_assets_to_existing_person": "{count, plural, one {# item} other {# items}} opnieuw toegewezen aan {name, select, null {een bestaand persoon} other {{name}}}",
"reassigned_assets_to_new_person": "{count, plural, one {# item} other {# items}} opnieuw toegewezen aan een nieuw persoon",
@@ -1682,7 +1693,7 @@
"search_page_motion_photos": "Bewegende foto's",
"search_page_no_objects": "Geen objectgegevens beschikbaar",
"search_page_no_places": "Geen locatiegegevens beschikbaar",
"search_page_screenshots": "Screenshots",
"search_page_screenshots": "Schermafbeelding",
"search_page_search_photos_videos": "Zoek naar je foto's en video's",
"search_page_selfies": "Selfies",
"search_page_things": "Dingen",
@@ -1722,6 +1733,7 @@
"select_user_for_sharing_page_err_album": "Album aanmaken mislukt",
"selected": "Geselecteerd",
"selected_count": "{count, plural, other {# geselecteerd}}",
"selected_gps_coordinates": "Geselecteerde GPS Coördinaten",
"send_message": "Bericht versturen",
"send_welcome_email": "Stuur welkomstmail",
"server_endpoint": "Server-URL",
@@ -1941,7 +1953,9 @@
"to_change_password": "Wijzig wachtwoord",
"to_favorite": "Toevoegen aan favorieten",
"to_login": "Inloggen",
"to_multi_select": "naar multi-select",
"to_parent": "Ga naar hoofdmap",
"to_select": "naar selecteren",
"to_trash": "Prullenbak",
"toggle_settings": "Zichtbaarheid instellingen wisselen",
"total": "Totaal",
@@ -1991,6 +2005,7 @@
"unstacked_assets_count": "{count, plural, one {# item} other {# items}} ontstapeld",
"untagged": "Ongemarkeerd",
"up_next": "Volgende",
"update_location_action_prompt": "Werk de locatie bij van {count} geselecteerde items met:",
"updated_at": "Geüpdatet",
"updated_password": "Wachtwoord bijgewerkt",
"upload": "Uploaden",
@@ -2057,6 +2072,7 @@
"view_next_asset": "Bekijk volgende item",
"view_previous_asset": "Bekijk vorige item",
"view_qr_code": "QR-code bekijken",
"view_similar_photos": "Bekijk vergelijkbare foto's",
"view_stack": "Bekijk stapel",
"view_user": "Bekijk gebruiker",
"viewer_remove_from_stack": "Verwijder van Stapel",

View File

@@ -44,7 +44,7 @@
"authentication_settings_description": "Zarządzaj hasłem, OAuth i innymi ustawienia uwierzytelnienia",
"authentication_settings_disable_all": "Czy jesteś pewny, że chcesz wyłączyć wszystkie metody logowania? Logowanie będzie całkowicie wyłączone.",
"authentication_settings_reenable": "Aby ponownie włączyć, użyj <link>Polecenia serwera</link>.",
"background_task_job": "Zadania w Tle",
"background_task_job": "Zadania w tle",
"backup_database": "Utwórz Zrzut Bazy Danych",
"backup_database_enable_description": "Włącz zrzuty bazy danych",
"backup_keep_last_amount": "Ile poprzednich zrzutów przechowywać",
@@ -396,6 +396,8 @@
"advanced_settings_prefer_remote_title": "Preferuj obrazy zdalne",
"advanced_settings_proxy_headers_subtitle": "Zdefiniuj nagłówki proxy, które Immich powinien wysyłać z każdym żądaniem sieciowym",
"advanced_settings_proxy_headers_title": "Nagłówki proxy",
"advanced_settings_readonly_mode_subtitle": "Włącza tryb tylko do odczytu, w którym zdjęcia można tylko przeglądać, a takie czynności jak wybieranie wielu obrazów, udostępnianie, przesyłanie i usuwanie są wyłączone. Włącz/wyłącz tryb tylko do odczytu za pomocą awatara użytkownika na ekranie głównym",
"advanced_settings_readonly_mode_title": "Tryb tylko do odczytu",
"advanced_settings_self_signed_ssl_subtitle": "Pomija weryfikację certyfikatu SSL dla punktu końcowego serwera. Wymagane w przypadku certyfikatów z podpisem własnym.",
"advanced_settings_self_signed_ssl_title": "Zezwalaj na certyfikaty SSL z podpisem własnym",
"advanced_settings_sync_remote_deletions_subtitle": "Automatycznie usuń lub przywróć zasób na tym urządzeniu po wykonaniu tej czynności w interfejsie webowym",
@@ -459,8 +461,9 @@
"app_bar_signout_dialog_content": "Czy na pewno chcesz się wylogować?",
"app_bar_signout_dialog_ok": "Tak",
"app_bar_signout_dialog_title": "Wyloguj się",
"app_settings": "Ustawienia Aplikacji",
"app_settings": "Ustawienia aplikacji",
"appears_in": "W albumach",
"apply_count": "Zastosuj ({count, number})",
"archive": "Archiwum",
"archive_action_prompt": "{count} dodanych do Archiwum",
"archive_or_unarchive_photo": "Dodaj lub usuń zasób z archiwum",
@@ -520,7 +523,7 @@
"assets_trashed_from_server": "{count} szt. usuniętych z serwera Immich",
"assets_were_part_of_album_count": "{count, plural, one {Zasób był} few {Zasoby były} many {Zasobów było} other {Zasobów było}} już częścią albumu",
"assets_were_part_of_albums_count": "{count, plural, one {Zasób był} other {Zasoby były}} już częścią albumów",
"authorized_devices": "Upoważnione Urządzenia",
"authorized_devices": "Autoryzowane urządzenia",
"automatic_endpoint_switching_subtitle": "Połącz się lokalnie przez wyznaczoną sieć Wi-Fi, jeśli jest dostępna, i korzystaj z alternatywnych połączeń gdzie indziej",
"automatic_endpoint_switching_title": "Automatyczne przełączanie adresów URL",
"autoplay_slideshow": "Automatyczne odtwarzanie pokazu slajdów",
@@ -528,7 +531,7 @@
"back_close_deselect": "Wróć, zamknij lub odznacz",
"background_location_permission": "Uprawnienia do lokalizacji w tle",
"background_location_permission_content": "Aby móc przełączać sieć podczas pracy w tle, Immich musi *zawsze* mieć dostęp do dokładnej lokalizacji, aby aplikacja mogła odczytać nazwę sieci Wi-Fi",
"backup": "Kopia Zapasowa",
"backup": "Kopia zapasowa",
"backup_album_selection_page_albums_device": "Albumy na urządzeniu ({count})",
"backup_album_selection_page_albums_tap": "Stuknij, aby włączyć, stuknij dwukrotnie, aby wykluczyć",
"backup_album_selection_page_assets_scatter": "Pliki mogą być rozproszone w wielu albumach. Dzięki temu albumy mogą być włączane lub wyłączane podczas procesu tworzenia kopii zapasowej.",
@@ -538,12 +541,12 @@
"backup_all": "Wszystkie",
"backup_background_service_backup_failed_message": "Nie udało się wykonać kopii zapasowej zasobów. Ponowna próba…",
"backup_background_service_connection_failed_message": "Nie udało się połączyć z serwerem. Ponowna próba…",
"backup_background_service_current_upload_notification": "Wysyłanie {filename}",
"backup_background_service_current_upload_notification": "Przesyłanie {filename}",
"backup_background_service_default_notification": "Sprawdzanie nowych zasobów…",
"backup_background_service_error_title": "Błąd kopii zapasowej",
"backup_background_service_in_progress_notification": "Tworzenie kopii zapasowej twoich zasobów…",
"backup_background_service_upload_failure_notification": "Błąd przesyłania {filename}",
"backup_controller_page_albums": "Kopia Zapasowa albumów",
"backup_controller_page_albums": "Albumy z włączoną kopią zapasową",
"backup_controller_page_background_app_refresh_disabled_content": "Włącz odświeżanie aplikacji w tle w Ustawienia > Ogólne > Odświeżanie aplikacji w tle, aby móc korzystać z kopii zapasowej w tle.",
"backup_controller_page_background_app_refresh_disabled_title": "Odświeżanie aplikacji w tle wyłączone",
"backup_controller_page_background_app_refresh_enable_button_text": "Przejdź do ustawień",
@@ -560,29 +563,29 @@
"backup_controller_page_background_turn_off": "Wyłącz usługę w tle",
"backup_controller_page_background_turn_on": "Włącz usługę w tle",
"backup_controller_page_background_wifi": "Tylko Wi-Fi",
"backup_controller_page_backup": "Kopia Zapasowa",
"backup_controller_page_backup": "Kopia zapasowa",
"backup_controller_page_backup_selected": "Zaznaczone: ",
"backup_controller_page_backup_sub": "Skopiowane zdjęcia oraz filmy",
"backup_controller_page_backup_sub": "Zdjęcia i filmy z utworzoną kopią zapasową",
"backup_controller_page_created": "Utworzono dnia: {date}",
"backup_controller_page_desc_backup": "Włącz kopię zapasową, aby automatycznie przesyłać nowe zasoby na serwer.",
"backup_controller_page_desc_backup": "Włącz kopię zapasową na pierwszym planie, aby automatycznie przesyłać nowe zasoby na serwer po otworzeniu aplikacji.",
"backup_controller_page_excluded": "Wykluczone: ",
"backup_controller_page_failed": "Nieudane ({count})",
"backup_controller_page_filename": "Nazwa pliku: {filename} [{size}]",
"backup_controller_page_id": "ID: {id}",
"backup_controller_page_info": "Informacje o kopii zapasowej",
"backup_controller_page_none_selected": "Brak wybranych",
"backup_controller_page_remainder": "Reszta",
"backup_controller_page_remainder_sub": "Pozostałe zdjęcia i albumy do wykonania kopii zapasowej z wyboru",
"backup_controller_page_remainder": "Pozostałe",
"backup_controller_page_remainder_sub": "Pozostałe zdjęcia i filmy wybrane do wykonania kopii zapasowej",
"backup_controller_page_server_storage": "Pamięć Serwera",
"backup_controller_page_start_backup": "Rozpocznij Kopię Zapasową",
"backup_controller_page_status_off": "Kopia Zapasowa jest wyłaczona",
"backup_controller_page_status_on": "Kopia Zapasowa jest włączona",
"backup_controller_page_storage_format": "{used} z {total} wykorzystanych",
"backup_controller_page_to_backup": "Albumy z Kopią Zapasową",
"backup_controller_page_status_off": "Automatyczne tworzenie kopii zapasowej na pierwszym planie jest wyłączone",
"backup_controller_page_status_on": "Automatyczne tworzenie kopii zapasowej na pierwszym planie jest włączone",
"backup_controller_page_storage_format": "Wykorzystano {used} z {total}",
"backup_controller_page_to_backup": "Albumy, dla których ma być tworzona kopia zapasowa",
"backup_controller_page_total_sub": "Wszystkie unikalne zdjęcia i filmy z wybranych albumów",
"backup_controller_page_turn_off": "Wyłącz Kopię Zapasową",
"backup_controller_page_turn_on": "Włącz Kopię Zapasową",
"backup_controller_page_uploading_file_info": "Przesyłanie informacji o pliku",
"backup_controller_page_turn_off": "Wyłącz kopię zapasową na pierwszym planie",
"backup_controller_page_turn_on": "Włącz kopię zapasową na pierwszym planie",
"backup_controller_page_uploading_file_info": "Informacje o przesyłanym pliku",
"backup_err_only_album": "Nie można usunąć jedynego albumu",
"backup_info_card_assets": "zasoby",
"backup_manual_cancelled": "Anulowano",
@@ -590,12 +593,10 @@
"backup_manual_success": "Sukces",
"backup_manual_title": "Stan przesyłania",
"backup_options": "Opcje kopii zapasowej",
"backup_options_page_title": "Opcje kopi zapasowej",
"backup_options_page_title": "Opcje kopii zapasowej",
"backup_setting_subtitle": "Zarządzaj ustawieniami przesyłania w tle i na pierwszym planie",
"backup_settings_subtitle": "Zarządzanie ustawieniami wysyłania",
"backup_settings_subtitle": "Zarządzanie ustawieniami przesyłania",
"backward": "Do tyłu",
"beta_sync": "Status synchronizacji w wersji Beta",
"beta_sync_subtitle": "Zarządzaj nowym systemem synchronizacji",
"biometric_auth_enabled": "Włączono logowanie biometryczne",
"biometric_locked_out": "Uwierzytelnianie biometryczne jest dla Ciebie zablokowane",
"biometric_no_options": "Brak możliwości biometrii",
@@ -773,7 +774,7 @@
"delete_api_key_prompt": "Czy na pewno chcesz usunąć ten klucz API?",
"delete_dialog_alert": "Te elementy zostaną trwale usunięte z Immich i z Twojego urządzenia",
"delete_dialog_alert_local": "Elementy te zostaną trwale usunięte z Twojego urządzenia, ale nadal będą dostępne na serwerze Immich",
"delete_dialog_alert_local_non_backed_up": "Kopia zapasowa niektórych elementów nie jest tworzona w Immich i zostanie trwale usunięta z Twojego urządzenia",
"delete_dialog_alert_local_non_backed_up": "Niektóre elementy nie mają kopii zapasowej w Immich i zostaną trwale usunięte z Twojego urządzenia",
"delete_dialog_alert_remote": "Elementy te zostaną trwale usunięte z serwera Immich",
"delete_dialog_ok_force": "Usuń mimo to",
"delete_dialog_title": "Usuń trwale",
@@ -836,7 +837,7 @@
"downloading": "Pobieranie",
"downloading_asset_filename": "Pobieranie zasobu {filename}",
"downloading_media": "Pobieranie multimediów",
"drop_files_to_upload": "Upuść pliki gdziekolwiek, aby je załadować",
"drop_files_to_upload": "Upuść pliki w dowolnym miejscu, aby je przesłać",
"duplicates": "Duplikaty",
"duplicates_description": "Rozstrzygnij każdą grupę, określając, które zasoby są duplikatami, jeżeli są duplikatami",
"duration": "Czas trwania",
@@ -1073,12 +1074,15 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Ta funkcja , aby działać, ładuje zewnętrzne zasoby z Google.",
"general": "Ogólne",
"geolocation_instruction_location": "Kliknij na zasób z współrzędnymi GPS, aby użyć jego lokalizacji, lub wybierz lokalizację bezpośrednio z mapy",
"get_help": "Pomoc",
"get_wifiname_error": "Nie można uzyskać nazwy Wi-Fi. Upewnij się, że udzieliłeś niezbędnych uprawnień i jesteś połączony z siecią Wi-Fi",
"getting_started": "Pierwsze kroki",
"go_back": "Wstecz",
"go_to_folder": "Idź do folderu",
"go_to_search": "Przejdź do wyszukiwania",
"gps": "GPS",
"gps_missing": "Brak GPS",
"grant_permission": "Udziel pozwolenia",
"group_albums_by": "Grupuj albumy...",
"group_country": "Grupuj według państwa",
@@ -1186,7 +1190,7 @@
"large_files": "Duże pliki",
"last": "Ostatni",
"last_seen": "Ostatnio widziane",
"latest_version": "Najnowsza Wersja",
"latest_version": "Najnowsza wersja",
"latitude": "Szerokość geograficzna",
"leave": "Opuść",
"leave_album": "Opuść album",
@@ -1262,6 +1266,7 @@
"main_branch_warning": "Używasz wersji deweloperskiej. Zdecydowanie zalecamy korzystanie z wydanej wersji aplikacji!",
"main_menu": "Menu główne",
"make": "Marka",
"manage_geolocation": "Zarządzaj lokalizacją",
"manage_shared_links": "Zarządzaj udostępnionymi linkami",
"manage_sharing_with_partners": "Zarządzaj dzieleniem z partnerami",
"manage_the_app_settings": "Zarządzaj ustawieniami aplikacji",
@@ -1407,6 +1412,8 @@
"open_the_search_filters": "Otwórz filtry wyszukiwania",
"options": "Opcje",
"or": "lub",
"organize_into_albums": "Uporządkuj w albumy",
"organize_into_albums_description": "Umieść istniejące zdjęcia w albumach przy użyciu bieżących ustawień synchronizacji",
"organize_your_library": "Organizuj swoją bibliotekę",
"original": "oryginalny",
"other": "Inne",
@@ -1417,17 +1424,17 @@
"owner": "Właściciel",
"partner": "Partner",
"partner_can_access": "{partner} ma dostęp do",
"partner_can_access_assets": "Twoje wszystkie zdjęcia i filmy, oprócz tych w Archiwum i Koszu",
"partner_can_access_assets": "Wszystkie Twoje zdjęcia i filmy, oprócz tych w Archiwum i Koszu",
"partner_can_access_location": "Informacji o tym, gdzie zostały zrobione Twoje zdjęcia",
"partner_list_user_photos": "{user} zdjęcia",
"partner_list_user_photos": "Zdjęcia należące do {user}",
"partner_list_view_all": "Pokaż wszystkie",
"partner_page_empty_message": "Twoje zdjęcia nie są udostępnione żadnemu partnerowi.",
"partner_page_no_more_users": "Brak użytkowników do dodania",
"partner_page_partner_add_failed": "Nie udało się dodać partnera",
"partner_page_select_partner": "Wybierz partnera",
"partner_page_shared_to_title": "Udostępniono",
"partner_page_stop_sharing_content": "{partner} nie będzie już mieć dostępu do twoich zdjęć.",
"partner_sharing": "Dzielenie z Partnerami",
"partner_page_stop_sharing_content": "{partner} nie będzie już mieć dostępu do Twoich zdjęć.",
"partner_sharing": "Dzielenie z partnerami",
"partners": "Partnerzy",
"password": "Hasło",
"password_does_not_match": "Hasła nie są takie same",
@@ -1504,12 +1511,13 @@
"privacy": "Prywatność",
"profile": "Profil",
"profile_drawer_app_logs": "Logi",
"profile_drawer_client_out_of_date_major": "Aplikacja mobilna jest nieaktualna. Zaktualizuj do najnowszej wersji głównej.",
"profile_drawer_client_out_of_date_minor": "Aplikacja mobilna jest nieaktualna. Zaktualizuj do najnowszej wersji dodatkowej.",
"profile_drawer_client_out_of_date_major": "Aplikacja mobilna jest nieaktualna. Zaktualizuj do najnowszej głównej wersji.",
"profile_drawer_client_out_of_date_minor": "Aplikacja mobilna jest nieaktualna. Zaktualizuj do najnowszej pomniejszej wersji.",
"profile_drawer_client_server_up_to_date": "Klient i serwer są aktualne",
"profile_drawer_github": "GitHub",
"profile_drawer_server_out_of_date_major": "Serwer jest nieaktualny. Zaktualizuj do najnowszej wersji głównej.",
"profile_drawer_server_out_of_date_minor": "Serwer jest nieaktualny. Zaktualizuj do najnowszej wersji dodatkowej.",
"profile_drawer_readonly_mode": "Włączono tryb tylko do odczytu. Aby wyjść, naciśnij i przytrzymaj ikonę awatara użytkownika.",
"profile_drawer_server_out_of_date_major": "Serwer jest nieaktualny. Zaktualizuj do najnowszej głównej wersji.",
"profile_drawer_server_out_of_date_minor": "Serwer jest nieaktualny. Zaktualizuj do najnowszej pomniejszej wersji.",
"profile_image_of_user": "Zdjęcie profilowe {user}",
"profile_picture_set": "Zdjęcie profilowe ustawione.",
"public_album": "Publiczny album",
@@ -1546,6 +1554,7 @@
"purchase_server_description_2": "Status wspierającego",
"purchase_server_title": "Serwer",
"purchase_settings_server_activated": "Klucz produktu serwera jest zarządzany przez administratora",
"query_asset_id": "Zapytanie o ID zasobu",
"queue_status": "Kolejkowanie {count}/{total}",
"rating": "Ocena gwiazdkowa",
"rating_clear": "Wyczyść ocenę",
@@ -1553,6 +1562,8 @@
"rating_description": "Wyświetl ocenę z EXIF w panelu informacji",
"reaction_options": "Opcje reakcji",
"read_changelog": "Zobacz Zmiany",
"readonly_mode_disabled": "Tryb tylko do odczytu wyłączony",
"readonly_mode_enabled": "Tryb tylko do odczytu włączony",
"reassign": "Przypisz ponownie",
"reassigned_assets_to_existing_person": "Przypisano ponownie {count, plural, one {# zasób} other {# zasobów}} do {name, select, null {istniejącej osoby} other {{name}}}",
"reassigned_assets_to_new_person": "Przypisano ponownie {count, plural, one {# zasób} other {# zasobów}} do nowej osoby",
@@ -1629,6 +1640,7 @@
"restore_user": "Przywróć użytkownika",
"restored_asset": "Przywrócony zasób",
"resume": "Wznów",
"resume_paused_jobs": "Wznów {count, plural, one {# wstrzymane zadanie} few {# wstrzymane zadania} other {# wstrzymanych zadań}}",
"retry_upload": "Prześlij ponownie",
"review_duplicates": "Przejrzyj duplikaty",
"review_large_files": "Przejrzyj duże pliki",
@@ -1722,10 +1734,11 @@
"select_user_for_sharing_page_err_album": "Nie udało się utworzyć albumu",
"selected": "Zaznaczone",
"selected_count": "{count, plural, other {# wybrane}}",
"selected_gps_coordinates": "Wybrane Współrzędne GPS",
"send_message": "Wyślij wiadomość",
"send_welcome_email": "Wyślij e-mail powitalny",
"server_endpoint": "Punkt końcowy serwera",
"server_info_box_app_version": "Wersja Aplikacji",
"server_info_box_app_version": "Wersja aplikacji",
"server_info_box_server_url": "Adres URL",
"server_offline": "Serwer Offline",
"server_online": "Serwer Online",
@@ -1885,12 +1898,12 @@
"stop_casting": "Zatrzymaj strumieniowanie",
"stop_motion_photo": "Zatrzymaj zdjęcie w ruchu",
"stop_photo_sharing": "Przestać udostępniać swoje zdjęcia?",
"stop_photo_sharing_description": "Od teraz {partner} nie będzie widzieć Twoich zdjęć.",
"stop_photo_sharing_description": "{partner} nie będzie już mieć dostępu do Twoich zdjęć.",
"stop_sharing_photos_with_user": "Przestań udostępniać zdjęcia temu użytkownikowi",
"storage": "Przestrzeń dyskowa",
"storage_label": "Etykieta magazynu",
"storage_quota": "Limit pamięci",
"storage_usage": "{used} z {available} użyte",
"storage_usage": "Wykorzystano {used} z {available}",
"submit": "Zatwierdź",
"success": "Sukces",
"suggestions": "Sugestie",
@@ -1901,9 +1914,11 @@
"swap_merge_direction": "Zmień kierunek złączenia",
"sync": "Synchronizuj",
"sync_albums": "Synchronizuj albumy",
"sync_albums_manual_subtitle": "Zsynchronizuj wszystkie przesłane filmy i zdjęcia z wybranymi albumami kopii zapasowych",
"sync_albums_manual_subtitle": "Zsynchronizuj wszystkie przesłane filmy i zdjęcia z wybranymi albumami z włączoną kopią zapasową",
"sync_local": "Synchronizacja lokalna",
"sync_remote": "Synchronizacja zdalna",
"sync_status": "Stan synchronizacji",
"sync_status_subtitle": "Wyświetl i zarządzaj systemem synchronizacji",
"sync_upload_album_setting_subtitle": "Twórz i przesyłaj swoje zdjęcia i filmy do wybranych albumów w Immich",
"tag": "Etykieta",
"tag_assets": "Ustaw etykiety zasobów",
@@ -1946,7 +1961,7 @@
"to_select": "aby wybrać",
"to_trash": "Kosz",
"toggle_settings": "Przełącz ustawienia",
"total": "Całkowity",
"total": "Razem",
"total_usage": "Całkowite wykorzystanie",
"trash": "Kosz",
"trash_action_prompt": "{count} przeniesione do kosza",
@@ -1963,6 +1978,7 @@
"trash_page_select_assets_btn": "Wybierz zasoby",
"trash_page_title": "Kosz ({count})",
"trashed_items_will_be_permanently_deleted_after": "Wyrzucone zasoby zostaną trwale usunięte po {days, plural, one {jednym dniu} other {# dniach}}.",
"troubleshoot": "Rozwiąż problemy",
"type": "Typ",
"unable_to_change_pin_code": "Nie można zmienić kodu PIN",
"unable_to_setup_pin_code": "Nie można ustawić kodu PIN",
@@ -1993,6 +2009,7 @@
"unstacked_assets_count": "{count, plural, one {Rozłożony # zasób} few {Rozłożone # zasoby} other {Rozłożonych # zasobów}}",
"untagged": "Nieoznaczone",
"up_next": "Do następnego",
"update_location_action_prompt": "Zaktualizuj lokalizację {count} wybranych zasobów na:",
"updated_at": "Zaktualizowany",
"updated_password": "Pomyślnie zaktualizowano hasło",
"upload": "Prześlij",
@@ -2059,6 +2076,7 @@
"view_next_asset": "Wyświetl następny zasób",
"view_previous_asset": "Wyświetl poprzedni zasób",
"view_qr_code": "Pokaż kod QR",
"view_similar_photos": "Zobacz podobne zdjęcia",
"view_stack": "Zobacz Ułożenie",
"view_user": "Wyświetl użytkownika",
"viewer_remove_from_stack": "Usuń ze stosu",

View File

@@ -28,6 +28,9 @@
"add_to_album": "Adicionar ao álbum",
"add_to_album_bottom_sheet_added": "Adicionado a {album}",
"add_to_album_bottom_sheet_already_exists": "Já existe em {album}",
"add_to_album_toggle": "Alternar seleção para {album}",
"add_to_albums": "Adicionar aos álbuns",
"add_to_albums_count": "Adicionar aos álbuns ({count})",
"add_to_shared_album": "Adicionar ao álbum partilhado",
"add_url": "Adicionar URL",
"added_to_archive": "Adicionado ao arquivo",
@@ -355,6 +358,9 @@
"trash_number_of_days_description": "Número de dias para manter os ficheiros na reciclagem antes de os eliminar permanentemente",
"trash_settings": "Definições da Reciclagem",
"trash_settings_description": "Gerir definições da reciclagem",
"unlink_all_oauth_accounts": "Desvincular todas as contas OAuth",
"unlink_all_oauth_accounts_description": "Lembre-se de desvincular todas as contas OAuth antes de migrar para um novo provedor.",
"unlink_all_oauth_accounts_prompt": "Tem a certeza de que deseja desvincular todas as contas OAuth? Isso redefinirá o ID OAuth de cada utilizador e não poderá ser desfeito.",
"user_cleanup_job": "Limpeza de utilizadores",
"user_delete_delay": "A conta e os ficheiros de <b>{user}</b> serão agendados para eliminação permanente dentro de {delay, plural, one {# dia} other {# dias}}.",
"user_delete_delay_settings": "Atraso de eliminação",
@@ -390,6 +396,8 @@
"advanced_settings_prefer_remote_title": "Preferir imagens do servidor",
"advanced_settings_proxy_headers_subtitle": "Defina os cabeçalhos do proxy que o Immich deve enviar em todas comunicações com a rede",
"advanced_settings_proxy_headers_title": "Cabeçalhos do Proxy",
"advanced_settings_readonly_mode_subtitle": "Activa o modo somente leitura, onde as fotos podem ser visualizadas. Recursos como selecionar várias imagens, partilhar, transmitir e excluir ficam deactivados. Activar/Desactivar o modo somente leitura via avatar do utilizador na janela principal",
"advanced_settings_readonly_mode_title": "Modo somente leitura",
"advanced_settings_self_signed_ssl_subtitle": "Não validar o certificado SSL com o endereço do servidor. Isto é necessário para certificados auto-assinados.",
"advanced_settings_self_signed_ssl_title": "Permitir certificados SSL auto-assinados",
"advanced_settings_sync_remote_deletions_subtitle": "Automaticamente eliminar ou restaurar um ficheiro neste dispositivo quando essa mesma ação for efetuada na web",
@@ -455,6 +463,7 @@
"app_bar_signout_dialog_title": "Sair",
"app_settings": "Definições da Aplicação",
"appears_in": "Aparece em",
"apply_count": "Aplicar ({count, number})",
"archive": "Arquivo",
"archive_action_prompt": "{count} adicionados ao Arquivo",
"archive_or_unarchive_photo": "Arquivar ou desarquivar foto",
@@ -494,7 +503,9 @@
"assets": "Ficheiros",
"assets_added_count": "{count, plural, one {# ficheiro adicionado} other {# ficheiros adicionados}}",
"assets_added_to_album_count": "{count, plural, one {# ficheiro adicionado} other {# ficheiros adicionados}} ao álbum",
"assets_added_to_albums_count": "Adicionado {assetTotal, plural, one {# asset} other {# assets}} a {albumTotal, plural, one {# album} other {# albums}}",
"assets_cannot_be_added_to_album_count": "Não foi possível adicionar {count, plural, one {ficheiro} other {ficheiros}} ao álbum",
"assets_cannot_be_added_to_albums": "{count, plural, one {Asset} other {Assets}} não pode ser adicionado a nenhum dos álbuns",
"assets_count": "{count, plural, one {# ficheiro} other {# ficheiros}}",
"assets_deleted_permanently": "{count} ficheiro(s) eliminado(s) permanentemente",
"assets_deleted_permanently_from_server": "{count} ficheiro(s) eliminado(s) permanentemente do servidor Immich",
@@ -511,6 +522,7 @@
"assets_trashed_count": "{count, plural, one {# ficheiro enviado} other {# ficheiros enviados}} para a reciclagem",
"assets_trashed_from_server": "{count} ficheiro(s) do servidor Immich foi/foram enviados para a reciclagem",
"assets_were_part_of_album_count": "{count, plural, one {O ficheiro já fazia} other {Os ficheiros já faziam}} parte do álbum",
"assets_were_part_of_albums_count": "{count, plural, one {Asset was} other {Assets were}} já faz parte dos álbuns",
"authorized_devices": "Dispositivos Autorizados",
"automatic_endpoint_switching_subtitle": "Conecte-se localmente quando estiver em uma rede uma Wi-Fi específica e use conexões alternativas em outras redes",
"automatic_endpoint_switching_title": "Troca automática de URL",
@@ -585,8 +597,6 @@
"backup_setting_subtitle": "Gerenciar as configurações de envio em primeiro e segundo plano",
"backup_settings_subtitle": "Gerir definições de carregamento",
"backward": "Para trás",
"beta_sync": "Estado de Sincronização Beta",
"beta_sync_subtitle": "Gerir o novo sistema de sincronização",
"biometric_auth_enabled": "Autenticação biométrica ativada",
"biometric_locked_out": "Está impedido de utilizar a autenticação biométrica",
"biometric_no_options": "Sem opções biométricas disponíveis",
@@ -749,6 +759,7 @@
"date_of_birth_saved": "Data de nascimento guardada com sucesso",
"date_range": "Intervalo de datas",
"day": "Dia",
"days": "Dias",
"deduplicate_all": "Remover todos os duplicados",
"deduplication_criteria_1": "Tamanho da imagem em bytes",
"deduplication_criteria_2": "Quantidade de dados EXIF",
@@ -833,10 +844,12 @@
"edit": "Editar",
"edit_album": "Editar álbum",
"edit_avatar": "Editar imagem de perfil",
"edit_birthday": "Alterar aniversário",
"edit_birthday": "Editar aniversário",
"edit_date": "Editar data",
"edit_date_and_time": "Editar data e hora",
"edit_date_and_time_action_prompt": "Alterada a data e hora de {count} ficheiros",
"edit_date_and_time_by_offset": "Alterar data com diferença",
"edit_date_and_time_by_offset_interval": "Novo período: {from} - {to}",
"edit_description": "Editar descrição",
"edit_description_prompt": "Por favor selecione uma nova descrição:",
"edit_exclusion_pattern": "Editar o padrão de exclusão",
@@ -909,6 +922,7 @@
"failed_to_load_notifications": "Ocorreu um erro ao carregar notificações",
"failed_to_load_people": "Ocorreu um erro ao carregar pessoas",
"failed_to_remove_product_key": "Ocorreu um erro ao remover chave de produto",
"failed_to_reset_pin_code": "Falha ao repor o código PIN",
"failed_to_stack_assets": "Ocorreu um erro ao empilhar os ficheiros",
"failed_to_unstack_assets": "Ocorreu um erro ao desempilhar ficheiros",
"failed_to_update_notification_status": "Ocorreu um erro ao atualizar o estado das notificações",
@@ -917,6 +931,7 @@
"paths_validation_failed": "Ocorreu um erro na validação de {paths, plural, one {# caminho} other {# caminhos}}",
"profile_picture_transparent_pixels": "Imagem de perfil não pode ter pixeis transparentes. Por favor amplie e/ou mova a imagem.",
"quota_higher_than_disk_size": "Definiu uma quota maior do que o tamanho do disco",
"something_went_wrong": "Algo deu errado",
"unable_to_add_album_users": "Não foi possível adicionar utilizadores ao álbum",
"unable_to_add_assets_to_shared_link": "Não foi possível adicionar os ficheiros ao link partilhado",
"unable_to_add_comment": "Não foi possível adicionar o comentário",
@@ -1048,21 +1063,26 @@
"filter_people": "Filtrar pessoas",
"filter_places": "Filtrar lugares",
"find_them_fast": "Encontre-as mais rapidamente pelo nome numa pesquisa",
"first": "Primeiro",
"fix_incorrect_match": "Corrigir correspondência incorreta",
"folder": "Pasta",
"folder_not_found": "Pasta não encontrada",
"folders": "Pastas",
"folders_feature_description": "Navegar na vista de pastas por fotos e vídeos no sistema de ficheiros",
"forgot_pin_code_question": "Esqueceu o seu PIN?",
"forward": "Para a frente",
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Esta funcionalidade requer o carregamento de recursos externos da Google para poder funcionar.",
"general": "Geral",
"geolocation_instruction_location": "Clique num ativo com coordenadas GPS para usar a sua localização ou seleccione um local diretamente do mapa",
"get_help": "Obter Ajuda",
"get_wifiname_error": "Não foi possível obter o nome do Wi-Fi. Verifique se concedeu as permissões necessárias e se está conectado a uma rede Wi-Fi",
"getting_started": "Primeiros Passos",
"go_back": "Regressar",
"go_to_folder": "Ir para a pasta",
"go_to_search": "Ir para a pesquisa",
"gps": "GPS",
"gps_missing": "Sem GPS",
"grant_permission": "Conceder permissão",
"group_albums_by": "Agrupar álbuns por...",
"group_country": "Agrupar por país",
@@ -1107,6 +1127,7 @@
"home_page_upload_err_limit": "Só é possível enviar 30 arquivos por vez, ignorando",
"host": "Servidor",
"hour": "Hora",
"hours": "Horas",
"id": "ID",
"idle": "Em espera",
"ignore_icloud_photos": "ignorar fotos no iCloud",
@@ -1167,6 +1188,7 @@
"language_search_hint": "Procurar línguas...",
"language_setting_description": "Selecione o seu Idioma preferido",
"large_files": "Ficheiros Grandes",
"last": "Último",
"last_seen": "Visto pela ultima vez",
"latest_version": "Versão mais recente",
"latitude": "Latitude",
@@ -1185,6 +1207,7 @@
"library_page_sort_title": "Título do álbum",
"licenses": "Licenças",
"light": "Claro",
"like": "Gostar",
"like_deleted": "Gosto removido",
"link_motion_video": "Relacionar video animado",
"link_to_oauth": "Link do OAuth",
@@ -1243,6 +1266,7 @@
"main_branch_warning": "Está a utilizar uma versão de desenvolvimento, recomendamos vivamente que utilize uma versão estável!",
"main_menu": "Menu Principal",
"make": "Marca",
"manage_geolocation": "Gerir localização",
"manage_shared_links": "Gerir links partilhados",
"manage_sharing_with_partners": "Gerir partilha com parceiros",
"manage_the_app_settings": "Gerir definições da aplicação",
@@ -1251,7 +1275,7 @@
"manage_your_devices": "Gerir os seus dispositivos com sessão iniciada",
"manage_your_oauth_connection": "Gerir a sua ligação ao OAuth",
"map": "Mapa",
"map_assets_in_bounds": "{count, plural, one {# foto} other {# fotos}}",
"map_assets_in_bounds": "{count, plural, =0 {No photos in this area} one {# photo} other {# photos}}",
"map_cannot_get_user_location": "Impossível obter a sua localização",
"map_location_dialog_yes": "Sim",
"map_location_picker_page_use_location": "Utilizar esta localização",
@@ -1295,6 +1319,7 @@
"merged_people_count": "Unidas {count, plural, one {# pessoa} other {# pessoas}}",
"minimize": "Minimizar",
"minute": "Minuto",
"minutes": "Minutos",
"missing": "Em falta",
"model": "Modelo",
"month": "Mês",
@@ -1314,6 +1339,9 @@
"my_albums": "Os meus álbuns",
"name": "Nome",
"name_or_nickname": "Nome ou alcunha",
"network_requirement_photos_upload": "Usar dados móveis para fazer backup de fotos",
"network_requirement_videos_upload": "Usar dados móveis para fazer backup de vídeos",
"network_requirements_updated": "Requisitos de rede alterados, redefinindo fila de backup",
"networking_settings": "Conexões",
"networking_subtitle": "Gerencie a conexão do servidor",
"never": "Nunca",
@@ -1365,6 +1393,7 @@
"oauth": "OAuth",
"official_immich_resources": "Recursos oficiais do Immich",
"offline": "Offline",
"offset": "Desvio",
"ok": "Ok",
"oldest_first": "Mais antigo primeiro",
"on_this_device": "Neste dispositivo",
@@ -1442,6 +1471,9 @@
"permission_onboarding_permission_limited": "Permissão limitada. Para permitir que o Immich faça backups e gerencie sua galeria, conceda permissões para fotos e vídeos nas configurações.",
"permission_onboarding_request": "O Immich requer autorização para ver as suas fotos e vídeos.",
"person": "Pessoa",
"person_age_months": "{months, plural, one {# month} other {# months}} idade",
"person_age_year_months": "1 ano, {months, plural, one {# month} other {# months}} idade",
"person_age_years": "{years, plural, other {# years}} idade",
"person_birthdate": "Nasceu a {date}",
"person_hidden": "{name}{hidden, select, true { (oculto)} other {}}",
"photo_shared_all_users": "Parece que partilhou as suas fotos com todos os utilizadores ou não tem nenhum utilizador para partilhar.",
@@ -1481,6 +1513,7 @@
"profile_drawer_client_out_of_date_minor": "O aplicativo está desatualizado. Por favor, atualize para a versão mais recente.",
"profile_drawer_client_server_up_to_date": "Cliente e Servidor atualizados",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Modo somente leitura activado. Toque duas vezes no ícone do avatar do utilizador para sair.",
"profile_drawer_server_out_of_date_major": "O servidor está desatualizado. Atualize para a versão principal mais recente.",
"profile_drawer_server_out_of_date_minor": "O servidor está desatualizado. Atualize para a versão mais recente.",
"profile_image_of_user": "Imagem de perfil de {user}",
@@ -1526,6 +1559,8 @@
"rating_description": "Mostrar a classificação EXIF no painel de informações",
"reaction_options": "Opções de reação",
"read_changelog": "Ler Novidades",
"readonly_mode_disabled": "Modo somente leitura desactivado",
"readonly_mode_enabled": "Modo somente leitura activado",
"reassign": "Reatribuir",
"reassigned_assets_to_existing_person": "Reatribuir {count, plural, one {# ficheiro} other {# ficheiros}} para {name, select, null {uma pessoa existente} other {{name}}}",
"reassigned_assets_to_new_person": "Reatribuído {count, plural, one {# ficheiro} other {# ficheiros}} a uma nova pessoa",
@@ -1587,6 +1622,9 @@
"reset_password": "Redefinir palavra-passe",
"reset_people_visibility": "Redefinir pessoas ocultas",
"reset_pin_code": "Repor código PIN",
"reset_pin_code_description": "Se esqueceu o seu código PIN, pode entrar em contato com o administrador do servidor para o repor",
"reset_pin_code_success": "Código PIN redefinido com sucesso",
"reset_pin_code_with_password": "Pode sempre repor o seu código PIN com a sua senha",
"reset_sqlite": "Reiniciar Base de Dados SQLite",
"reset_sqlite_confirmation": "Tem a certeza de que quer reiniciar a base de dados SQLite? Vai ter de terminar a sessão e entrar outra vez para sincronizar os dados de novo",
"reset_sqlite_success": "Base de dados SQLite reiniciada com sucesso",
@@ -1601,6 +1639,7 @@
"resume": "Continuar",
"retry_upload": "Tentar carregar novamente",
"review_duplicates": "Rever itens duplicados",
"review_large_files": "Rever arquivos grandes",
"role": "Função",
"role_editor": "Editor",
"role_viewer": "Visualizador",
@@ -1691,6 +1730,7 @@
"select_user_for_sharing_page_err_album": "Ocorreu um erro ao criar o álbum",
"selected": "Selecionados",
"selected_count": "{count, plural, other {# selecionados}}",
"selected_gps_coordinates": "coordenadas gps seleccionadas",
"send_message": "Enviar mensagem",
"send_welcome_email": "Enviar E-mail de boas vindas",
"server_endpoint": "URL do servidor",
@@ -1758,6 +1798,7 @@
"shared_link_clipboard_copied_massage": "Copiado para a área de transferência",
"shared_link_clipboard_text": "Ligação: {link}\nPalavra-passe: {password}",
"shared_link_create_error": "Erro ao criar o link compartilhado",
"shared_link_custom_url_description": "Aceda a este link partilhado com um URL personalizado",
"shared_link_edit_description_hint": "Digite a descrição do compartilhamento",
"shared_link_edit_expire_after_option_day": "1 dia",
"shared_link_edit_expire_after_option_days": "{count} dias",
@@ -1783,6 +1824,7 @@
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Gerenciar links compartilhados",
"shared_link_options": "Opções de link partilhado",
"shared_link_password_description": "Exigir uma senha para aceder a este link partilhado",
"shared_links": "Links partilhados",
"shared_links_description": "Partilhar fotos e videos com um link",
"shared_photos_and_videos_count": "{assetCount, plural, other {# Fotos & videos partilhados.}}",
@@ -1832,6 +1874,7 @@
"sort_created": "Data de criação",
"sort_items": "Número de itens",
"sort_modified": "Data de modificação",
"sort_newest": "A foto mais recente",
"sort_oldest": "Foto mais antiga",
"sort_people_by_similarity": "Ordenar pessoas por semelhança",
"sort_recent": "Foto mais recente",
@@ -1907,7 +1950,9 @@
"to_change_password": "Alterar palavra-passe",
"to_favorite": "Favorito",
"to_login": "Iniciar Sessão",
"to_multi_select": "multi-selecção",
"to_parent": "Subir um nível",
"to_select": "seleccionar",
"to_trash": "Reciclagem",
"toggle_settings": "Alternar configurações",
"total": "Total",
@@ -1957,6 +2002,7 @@
"unstacked_assets_count": "Desempilhados {count, plural, one {# ficheiro} other {# ficheiros}}",
"untagged": "Marcador removido",
"up_next": "A seguir",
"update_location_action_prompt": "Actualize a localização de {count} activos seleccionados com:",
"updated_at": "Atualizado a",
"updated_password": "Palavra-passe atualizada",
"upload": "Carregar",

View File

@@ -597,8 +597,6 @@
"backup_setting_subtitle": "Gerenciar as configurações de envio em primeiro e segundo plano",
"backup_settings_subtitle": "Gerenciar configurações de envio",
"backward": "Para trás",
"beta_sync": "Status da sincronização Beta",
"beta_sync_subtitle": "Configurar o novo sistema de sincronização",
"biometric_auth_enabled": "Autenticação por biometria ativada",
"biometric_locked_out": "Sua autenticação por biometria está bloqueada",
"biometric_no_options": "Não há opções de biometria disponíveis",
@@ -1076,10 +1074,7 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Esta funcionalidade carrega recursos externos do Google para funcionar.",
"general": "Geral",
"geolocation_instruction_all_have_location": "Todos arquivos nesta data já contem dados de localização. Tente exibir todos os arquivos ou selecione uma data diferente",
"geolocation_instruction_location": "Selecione o arquivo com as coordenadas de GPS desejada, ou selecione a localização diretamente no mapa",
"geolocation_instruction_no_date": "Selecione uma data para gerenciar os dados de localização das fotos e vídeos daquele dia",
"geolocation_instruction_no_photos": "Nenhuma foto ou vídeo encontrado nesta data. Selecione uma data diferente para ser exibida",
"geolocation_instruction_location": "Selecione um arquivo com as coordenadas de GPS desejada, ou selecione a localização diretamente no mapa",
"get_help": "Obter Ajuda",
"get_wifiname_error": "Não foi possível obter o nome do Wi-Fi. Verifique se concedeu as permissões necessárias e se está conectado a uma rede Wi-Fi",
"getting_started": "Primeiros passos",
@@ -1417,6 +1412,8 @@
"open_the_search_filters": "Abre os filtros de pesquisa",
"options": "Opções",
"or": "ou",
"organize_into_albums": "Organizar em álbuns",
"organize_into_albums_description": "Colocar imagens existentes em álbuns usando as configurações de sincronização atuais",
"organize_your_library": "Organize sua biblioteca",
"original": "original",
"other": "Outro",
@@ -1557,6 +1554,7 @@
"purchase_server_description_2": "Status de Contribuidor",
"purchase_server_title": "Servidor",
"purchase_settings_server_activated": "A chave do produto para servidor é gerenciada pelo administrador",
"query_asset_id": "Consultar ID do Ativo",
"queue_status": "Na fila {count} de {total}",
"rating": "Estrelas",
"rating_clear": "Limpar classificação",
@@ -1735,7 +1733,7 @@
"select_user_for_sharing_page_err_album": "Falha ao criar álbum",
"selected": "Selecionados",
"selected_count": "{count, plural, one {# selecionado} other {# selecionados}}",
"selected_gps_coordinates": "selecione as coordenadas de GPS",
"selected_gps_coordinates": "Coordenadas de GPS Selecionada",
"send_message": "Enviar mensagem",
"send_welcome_email": "Enviar E-mail de boas vindas",
"server_endpoint": "URL do servidor",
@@ -1846,10 +1844,8 @@
"shift_to_permanent_delete": "pressione ⇧ para excluir permanentemente o arquivo",
"show_album_options": "Exibir opções do álbum",
"show_albums": "Exibir álbuns",
"show_all_assets": "Ver todos arquivos",
"show_all_people": "Mostrar todas as pessoas",
"show_and_hide_people": "Mostrar & ocultar pessoas",
"show_assets_without_location": "Ver arquivos sem localização",
"show_file_location": "Exibir local do arquivo",
"show_gallery": "Exibir galeria",
"show_hidden_people": "Exibir pessoas ocultadas",
@@ -2034,7 +2030,6 @@
"use_biometric": "Usar biometria",
"use_current_connection": "usar conexão atual",
"use_custom_date_range": "Usar intervalo de datas personalizado",
"use_this_location": "Clique para marcar o local",
"user": "Usuário",
"user_has_been_deleted": "Este usuário foi excluído.",
"user_id": "ID do usuário",
@@ -2077,6 +2072,7 @@
"view_next_asset": "Ver próximo arquivo",
"view_previous_asset": "Ver arquivo anterior",
"view_qr_code": "Ver QR Code",
"view_similar_photos": "Ver fotos similares",
"view_stack": "Ver grupo",
"view_user": "Visualizar usuário",
"viewer_remove_from_stack": "Remover do grupo",

View File

@@ -28,6 +28,9 @@
"add_to_album": "Adaugă în album",
"add_to_album_bottom_sheet_added": "Adăugat în {album}",
"add_to_album_bottom_sheet_already_exists": "Deja în {album}",
"add_to_album_toggle": "Selectează/deselectează {album}",
"add_to_albums": "Adaugă la albume",
"add_to_albums_count": "Adaugă la albume ({count})",
"add_to_shared_album": "Adaugă la album partajat",
"add_url": "Adăugați adresa URL",
"added_to_archive": "Adăugat la arhivă",
@@ -181,6 +184,7 @@
"nightly_tasks_generate_memories_setting": "Generare memorii",
"nightly_tasks_generate_memories_setting_description": "Creează amintiri noi din resurse",
"nightly_tasks_missing_thumbnails_setting": "Generează miniaturi lipsă",
"nightly_tasks_missing_thumbnails_setting_description": "Pune în coadă elementele fără miniaturi pentru generarea miniaturilor",
"nightly_tasks_settings": "Setări pentru sarcinile nocturne",
"nightly_tasks_settings_description": "Gestionați sarcinile nocturne",
"nightly_tasks_start_time_setting": "Ora de începere",
@@ -354,6 +358,9 @@
"trash_number_of_days_description": "Numǎr de zile pentru pǎstrarea fișierelor în coșul de gunoi pânǎ la ștergerea permanentǎ",
"trash_settings": "Setǎri Coș de Gunoi",
"trash_settings_description": "Gestioneazǎ setǎrile coșului de gunoi",
"unlink_all_oauth_accounts": "Deconectează toate conturile OAuth",
"unlink_all_oauth_accounts_description": "Nu uita să deconectezi toate conturile OAuth înainte de a migra la un nou furnizor.",
"unlink_all_oauth_accounts_prompt": "Ești sigur că vrei să deconectezi toate conturile OAuth? Aceasta va reseta ID-ul OAuth pentru fiecare utilizator și nu poate fi anulată.",
"user_cleanup_job": "Curățare utilizator",
"user_delete_delay": "Contul și resursele utilizatorului <b>{user}</b> vor fi programate pentru ștergere permanentă în {delay, plural, one {# zi} other {# zile}}.",
"user_delete_delay_settings": "Întârziere la ștergere",
@@ -389,6 +396,8 @@
"advanced_settings_prefer_remote_title": "Preferă fotografii la distanță",
"advanced_settings_proxy_headers_subtitle": "Definește antetele proxy pe care Immich ar trebui să le trimită cu fiecare solicitare de rețea",
"advanced_settings_proxy_headers_title": "Antete Proxy",
"advanced_settings_readonly_mode_subtitle": "Activează modul doar-citire, în care fotografiile pot fi doar vizualizate, iar acțiuni precum selectarea mai multor imagini, partajarea, redarea pe alt dispozitiv sau ștergerea sunt dezactivate. Activează/Dezactivează modul doar-citire din avatarul utilizatorului de pe ecranul principal.",
"advanced_settings_readonly_mode_title": "Mod doar-citire",
"advanced_settings_self_signed_ssl_subtitle": "Omite verificare certificate SSL pentru distinația server-ului, necesar pentru certificate auto-semnate.",
"advanced_settings_self_signed_ssl_title": "Permite certificate SSL auto-semnate",
"advanced_settings_sync_remote_deletions_subtitle": "Ștergeți sau restaurați automat un element de pe acest dispozitiv atunci când acțiunea este efectuată pe web",
@@ -454,6 +463,7 @@
"app_bar_signout_dialog_title": "Deconectare",
"app_settings": "Setări Aplicație",
"appears_in": "Apare în",
"apply_count": "Aplică ({count, number})",
"archive": "Arhivă",
"archive_action_prompt": "{count} adăugate la Arhivă",
"archive_or_unarchive_photo": "Arhiveazǎ sau dezarhiveazǎ fotografia",
@@ -493,7 +503,9 @@
"assets": "Resurse",
"assets_added_count": "Adăugat {count, plural, one {# resursă} other {# resurse}}",
"assets_added_to_album_count": "Am adăugat {count, plural, one {# resursă} other {# resurse}} în album",
"assets_added_to_albums_count": "Au fost adăugate {assetTotal, plural, one {# element} other {# elemente}} la {albumTotal, plural, one {# album} other {# albume}}",
"assets_cannot_be_added_to_album_count": "{count, plural, one {Asset} other {Assets}} nu pot fi adăugate în album",
"assets_cannot_be_added_to_albums": "{count, plural, one {Elementul} other {Elementele}} nu poate fi adăugat la niciunul dintre albume",
"assets_count": "{count, plural, one {# resursă} other {# resurse}}",
"assets_deleted_permanently": "{count} poză/poze ștearsă/șterse permanent",
"assets_deleted_permanently_from_server": "{count} poză/poze ștearsă/șterse permanent din serverul Immich",
@@ -583,8 +595,6 @@
"backup_setting_subtitle": "Schimbă opțiuni pentru backup în prim-plan și în fundal",
"backup_settings_subtitle": "Gestionați setările de încărcare",
"backward": "În sens invers",
"beta_sync": "Starea sincronizării Beta",
"beta_sync_subtitle": "Gestionați noul sistem de sincronizare",
"biometric_auth_enabled": "Autentificare biometrică activată",
"biometric_locked_out": "Sunteți blocați de la autentificare biometrică",
"biometric_no_options": "Nu sunt disponibile opțiuni biometrice",

View File

@@ -409,7 +409,7 @@
"age_year_months": "1 год {months, plural, one {# месяц} many {# месяцев} other {# месяца}}",
"age_years": "{years, plural, one {# год} many {# лет} other {# года}}",
"album_added": "Альбом добавлен",
"album_added_notification_setting_description": "Получать уведомление по электронной почте, когда вы добавлены к общему альбому",
"album_added_notification_setting_description": "Получать уведомление по электронной почте, когда вам предоставили доступ в общий альбом",
"album_cover_updated": "Обложка альбома обновлена",
"album_delete_confirmation": "Вы уверены, что хотите удалить альбом {album}?",
"album_delete_confirmation_description": "Если альбом был общим, другие пользователи больше не смогут получить к нему доступ.",
@@ -426,7 +426,7 @@
"album_search_not_found": "Не найдено альбомов по вашему запросу",
"album_share_no_users": "Нет доступных пользователей, с которыми можно поделиться альбомом.",
"album_updated": "Альбом обновлён",
"album_updated_setting_description": "Получать уведомление по электронной почте при добавлении новых ресурсов в общий альбом",
"album_updated_setting_description": "Получать уведомление по электронной почте при добавлении новых объектов в общий альбом",
"album_user_left": "Вы покинули {album}",
"album_user_removed": "Пользователь {user} удален",
"album_viewer_appbar_delete_confirm": "Вы уверены, что хотите удалить альбом из своей учетной записи?",
@@ -544,7 +544,7 @@
"backup_background_service_current_upload_notification": "Загружается {filename}",
"backup_background_service_default_notification": "Поиск новых объектов…",
"backup_background_service_error_title": "Ошибка резервного копирования",
"backup_background_service_in_progress_notification": "Резервное копирование ваших объектов…",
"backup_background_service_in_progress_notification": "Резервное копирование объектов…",
"backup_background_service_upload_failure_notification": "Ошибка загрузки {filename}",
"backup_controller_page_albums": "Резервное копирование альбомов",
"backup_controller_page_background_app_refresh_disabled_content": "Включите фоновое обновление приложения в Настройки > Общие > Фоновое обновление приложений, чтобы использовать фоновое резервное копирование.",
@@ -597,8 +597,6 @@
"backup_setting_subtitle": "Настройка активного и фонового резервного копирования",
"backup_settings_subtitle": "Настройка загрузки объектов",
"backward": "Назад",
"beta_sync": "Статус синхронизации",
"beta_sync_subtitle": "Управление новой системой синхронизации",
"biometric_auth_enabled": "Биометрическая аутентификация включена",
"biometric_locked_out": "Вам закрыт доступ к биометрической аутентификации",
"biometric_no_options": "Биометрическая аутентификация недоступна",
@@ -637,8 +635,8 @@
"cannot_merge_people": "Невозможно объединить людей",
"cannot_undo_this_action": "Это действие нельзя отменить!",
"cannot_update_the_description": "Невозможно обновить описание",
"cast": "Транслировать",
"cast_description": "Настройка доступных целей трансляции",
"cast": "Трансляция",
"cast_description": "Выбор доступных способов для трансляции",
"change_date": "Изменить дату",
"change_description": "Изменить описание",
"change_display_order": "Изменить порядок отображения",
@@ -827,7 +825,7 @@
"download_failed": "Загрузка не удалась",
"download_finished": "Загрузка окончена",
"download_include_embedded_motion_videos": "Встроенные видео",
"download_include_embedded_motion_videos_description": "Включить видео, встроенные в живые фото, в виде отдельного файла",
"download_include_embedded_motion_videos_description": "Сохранять видео, встроенные в живые фото, в виде отдельных файлов",
"download_notfound": "Загрузка не найдена",
"download_paused": "Загрузка приостановлена",
"download_settings": "Скачивание",
@@ -1070,16 +1068,13 @@
"folder": "Папка",
"folder_not_found": "Папка не найдена",
"folders": "Папки",
"folders_feature_description": "Просмотр папок с фотографиями и видео в файловой системе",
"folders_feature_description": "Просмотр папок с фото и видео в файловой системе",
"forgot_pin_code_question": "Забыли PIN-код?",
"forward": "Вперёд",
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Этот функционал требует загрузки внешних ресурсов с серверов Google.",
"gcast_enabled_description": "Для работы требуется загрузка внешних ресурсов с серверов Google.",
"general": "Общие",
"geolocation_instruction_all_have_location": "Все объекты в этом периоде уже содержат данные о местоположении. Включите отображение всех объектов или укажите другой период.",
"geolocation_instruction_location": "Выберите объект с имеющимися координатами, чтобы использовать их, либо вручную укажите место на карте",
"geolocation_instruction_no_date": "Укажите дату для управления координатами мест съёмки за этот день",
"geolocation_instruction_no_photos": "Не найдено объектов в этом периоде. Укажите другую дату.",
"get_help": "Получить помощь",
"get_wifiname_error": "Не удалось получить имя Wi-Fi сети. Убедитесь, что вы подключены к сети и предоставили приложению необходимые разрешения",
"getting_started": "Старт",
@@ -1221,7 +1216,7 @@
"loading": "Загрузка",
"loading_search_results_failed": "Загрузка результатов поиска не удалась",
"local": "На устройстве",
"local_asset_cast_failed": "Невозможно транслировать объект, который ещё не загружен на сервер",
"local_asset_cast_failed": "Невозможна трансляция объектов, которые ещё не загружены на сервер",
"local_assets": "Объекты на устройстве",
"local_network": "Локальная сеть",
"local_network_sheet_info": "Приложение будет подключаться к серверу по этому адресу, когда устройство подключено к выбранной Wi-Fi сети",
@@ -1273,7 +1268,7 @@
"make": "Производитель",
"manage_geolocation": "Управление местами съёмки",
"manage_shared_links": "Управление публичными ссылками",
"manage_sharing_with_partners": "Управление обменом информацией с партнерами. Эта функция позволяет вашему партнеру видеть ваши фотографии и видеозаписи, кроме тех, которые находятся в Архиве и Корзине",
"manage_sharing_with_partners": "Функция совместного доступа к фото и видео, позволяющая видеть все объекты партнёров, а также предоставлять доступ к своим",
"manage_the_app_settings": "Управление настройками приложения",
"manage_your_account": "Управление учётной записью",
"manage_your_api_keys": "Управление API ключами для взаимодействия с другими программами",
@@ -1417,6 +1412,8 @@
"open_the_search_filters": "Открыть фильтры поиска",
"options": "Опции",
"or": "или",
"organize_into_albums": "Распределить по альбомам",
"organize_into_albums_description": "Добавить уже существующие фотографии в альбомы, используя текущие настройки синхронизации",
"organize_your_library": "Приведите в порядок свою библиотеку",
"original": "оригинал",
"other": "Другое",
@@ -1456,7 +1453,7 @@
"pending": "Ожидает",
"people": "Люди",
"people_edits_count": "{count, plural, one {Изменён # человек} many {Изменено # человек} other {Изменено # человека}}",
"people_feature_description": "Просмотр фотографий и видео, сгруппированных по людям",
"people_feature_description": "Просмотр фото и видео, сгруппированных по людям",
"people_sidebar_description": "Отображать пункт меню \"Люди\" в боковой панели",
"permanent_deletion_warning": "Предупреждение об удалении",
"permanent_deletion_warning_setting_description": "Предупреждать перед безвозвратным удалением объектов",
@@ -1518,7 +1515,7 @@
"profile_drawer_client_out_of_date_minor": "Версия мобильного приложения устарела. Пожалуйста, обновите его.",
"profile_drawer_client_server_up_to_date": "Клиент и сервер обновлены",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Включён режим «только просмотр». Дважды коснитесь значка аватара пользователя, чтобы выйти.",
"profile_drawer_readonly_mode": "Включён режим «только просмотр». Удерживайте значок аватара пользователя для отключения.",
"profile_drawer_server_out_of_date_major": "Версия сервера устарела. Пожалуйста, обновите его.",
"profile_drawer_server_out_of_date_minor": "Версия сервера устарела. Пожалуйста, обновите его.",
"profile_image_of_user": "Изображение профиля {user}",
@@ -1557,11 +1554,12 @@
"purchase_server_description_2": "Состояние поддержки",
"purchase_server_title": "Сервер",
"purchase_settings_server_activated": "Ключом продукта управляет администратор сервера",
"query_asset_id": "Идентификатор исходного объекта",
"queue_status": "В очереди {count}/{total}",
"rating": "Рейтинг звёзд",
"rating": "Рейтинг",
"rating_clear": "Очистить рейтинг",
"rating_count": "{count, plural, one {# звезда} many {# звезд} other {# звезды}}",
"rating_description": "Показывать рейтинг в панели информации",
"rating_description": "Система оценки объектов в панели информации",
"reaction_options": "Опции реакций",
"read_changelog": "Прочитать список изменений",
"readonly_mode_disabled": "Режим «только просмотр» отключён",
@@ -1642,6 +1640,7 @@
"restore_user": "Восстановить пользователя",
"restored_asset": "Восстановленный объект",
"resume": "Продолжить",
"resume_paused_jobs": "Возобновить выполнение {count, plural, one {# задачи} other {# задач}}",
"retry_upload": "Повторить загрузку",
"review_duplicates": "Разбор дубликатов",
"review_large_files": "Обзор больших файлов",
@@ -1735,7 +1734,7 @@
"select_user_for_sharing_page_err_album": "Не удалось создать альбом",
"selected": "Выбрано",
"selected_count": "{count, plural, one {Выбран # объект} many {Выбрано # объектов} other {Выбрано # объекта}}",
"selected_gps_coordinates": "выбранные координаты",
"selected_gps_coordinates": "Выбранные координаты",
"send_message": "Отправить сообщение",
"send_welcome_email": "Отправить приветственное письмо",
"server_endpoint": "Адрес сервера",
@@ -1797,7 +1796,7 @@
"shared_by": "Поделился",
"shared_by_user": "Владелец: {user}",
"shared_by_you": "Вы поделились",
"shared_from_partner": "Фото от {partner}",
"shared_from_partner": "Фото и видео пользователя {partner}",
"shared_intent_upload_button_progress_text": "{current} / {total} Загружено",
"shared_link_app_bar_title": "Публичные ссылки",
"shared_link_clipboard_copied_massage": "Скопировано в буфер обмена",
@@ -1846,15 +1845,13 @@
"shift_to_permanent_delete": "нажмите ⇧ чтобы удалить объект навсегда",
"show_album_options": "Показать параметры альбома",
"show_albums": "Показать альбомы",
"show_all_assets": "Показать все объекты",
"show_all_people": "Показать всех людей",
"show_and_hide_people": "Показать и скрыть людей",
"show_assets_without_location": "Показать объекты без координат",
"show_file_location": "Показать расположение файла",
"show_gallery": "Показать галерею",
"show_hidden_people": "Показать скрытых людей",
"show_in_timeline": "Показать на временной шкале",
"show_in_timeline_setting_description": "Показывайте фото и видео этого пользователя в своей ленте",
"show_in_timeline_setting_description": "Отображать фото и видео этого пользователя в своей ленте",
"show_keyboard_shortcuts": "Показать сочетания клавиш",
"show_metadata": "Показывать метаданные",
"show_or_hide_info": "Показать или скрыть информацию",
@@ -1868,7 +1865,7 @@
"show_supporter_badge_description": "Показать значок поддержки",
"shuffle": "Перемешать",
"sidebar": "Боковая панель",
"sidebar_display_description": "Показывать ссылку на представление в боковой панели",
"sidebar_display_description": "Отображать раздел на боковой панели",
"sign_out": "Выход",
"sign_up": "Зарегистрироваться",
"size": "Размер",
@@ -1901,7 +1898,7 @@
"stop_casting": "Остановить трансляцию",
"stop_motion_photo": "Покадровая анимация",
"stop_photo_sharing": "Закрыть доступ партнёра к вашим фото?",
"stop_photo_sharing_description": "{partner} больше не сможет получить доступ к вашим фотографиям.",
"stop_photo_sharing_description": "Пользователь {partner} больше не имеет доступа к вашим фотографиям.",
"stop_sharing_photos_with_user": "Прекратить делиться своими фотографиями с этим пользователем",
"storage": "Хранилище",
"storage_label": "Метка хранилища",
@@ -1920,6 +1917,8 @@
"sync_albums_manual_subtitle": "Синхронизировать все загруженные фото и видео в выбранные альбомы для резервного копирования",
"sync_local": "Синхронизировать локально",
"sync_remote": "Синхронизация с сервером",
"sync_status": "Статус синхронизации",
"sync_status_subtitle": "Просмотр и управление системой синхронизации",
"sync_upload_album_setting_subtitle": "Создавайте и загружайте свои фотографии и видео в выбранные альбомы на сервер Immich",
"tag": "Тег",
"tag_assets": "Добавить теги",
@@ -1934,7 +1933,7 @@
"template": "Шаблон",
"theme": "Тема",
"theme_selection": "Выбор темы",
"theme_selection_description": "Автоматически устанавливать тему в зависимости от системных настроек вашего браузера",
"theme_selection_description": "Автоматически устанавливать светлую или тёмную тему в зависимости от настроек вашего браузера",
"theme_setting_asset_list_storage_indicator_title": "Показать индикатор хранилища на плитках объектов",
"theme_setting_asset_list_tiles_per_row_title": "Количество объектов в строке ({count})",
"theme_setting_colorful_interface_subtitle": "Добавить оттенок к фону.",
@@ -1979,6 +1978,7 @@
"trash_page_select_assets_btn": "Выбранные объекты",
"trash_page_title": "Корзина ({count})",
"trashed_items_will_be_permanently_deleted_after": "Объекты, хранящиеся в корзине более {days, plural, one {# дня} other {# дней}}, удаляются автоматически.",
"troubleshoot": "Решение проблем",
"type": "Тип",
"unable_to_change_pin_code": "Ошибка при изменении PIN-кода",
"unable_to_setup_pin_code": "Ошибка при создании PIN-кода",
@@ -2034,7 +2034,6 @@
"use_biometric": "Использовать биометрию",
"use_current_connection": "Использовать текущее подключение",
"use_custom_date_range": "Использовать пользовательский диапазон дат",
"use_this_location": "Выбрать это место",
"user": "Пользователь",
"user_has_been_deleted": "Этот пользователь был удалён.",
"user_id": "ID пользователя",
@@ -2073,10 +2072,11 @@
"view_in_timeline": "Показать на временной шкале",
"view_link": "Показать ссылку",
"view_links": "Показать ссылки",
"view_name": "Посмотреть",
"view_name": "Вид",
"view_next_asset": "Показать следующий объект",
"view_previous_asset": "Показать предыдущий объект",
"view_qr_code": "Посмотреть QR код",
"view_similar_photos": "Найти похожие фотографии",
"view_stack": "Показать группу",
"view_user": "Просмотреть пользователя",
"viewer_remove_from_stack": "Убрать из группы",

View File

@@ -597,8 +597,6 @@
"backup_setting_subtitle": "Spravovať nastavenia odosielania na pozadí a v popredí",
"backup_settings_subtitle": "Spravovať nastavenia nahrávania",
"backward": "Dozadu",
"beta_sync": "Stav synchronizácie verzie Beta",
"beta_sync_subtitle": "Spravovať nový systém synchronizácie",
"biometric_auth_enabled": "Biometrické overovanie je povolené",
"biometric_locked_out": "Ste vymknutí z biometrického overovania",
"biometric_no_options": "Nie sú k dispozícii žiadne biometrické možnosti",
@@ -1076,10 +1074,7 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Táto funkcia načítava externé zdroje zo spoločnosti Google, aby mohla fungovať.",
"general": "Všeobecné",
"geolocation_instruction_all_have_location": "Všetky položky pre tento dátum už majú údaje o polohe. Skúste zobraziť všetky položky alebo vyberte iný dátum",
"geolocation_instruction_location": "Kliknite na položku s GPS súradnicami, aby ste použili jej polohu, alebo vyberte polohu priamo z mapy",
"geolocation_instruction_no_date": "Vyberte dátum, aby ste mohli spravovať údaje o polohe pre fotografie a videá z daného dňa",
"geolocation_instruction_no_photos": "Pre tento dátum neboli nájdené žiadne fotografie ani videá. Vyberte iný dátum, aby sa zobrazili",
"get_help": "Získať pomoc",
"get_wifiname_error": "Nepodarilo sa získať názov Wi-Fi siete. Uistite sa, že ste udelili potrebné oprávnenia a ste pripojení k sieti Wi-Fi",
"getting_started": "Začíname",
@@ -1417,6 +1412,8 @@
"open_the_search_filters": "Otvoriť vyhľadávacie filtre",
"options": "Nastavenia",
"or": "alebo",
"organize_into_albums": "Usporiadať do albumov",
"organize_into_albums_description": "Vložiť existujúce fotky do albumov podľa aktuálnych nastavení synchronizácie",
"organize_your_library": "Usporiadajte svoju knižnicu",
"original": "originál",
"other": "Ostatné",
@@ -1518,7 +1515,7 @@
"profile_drawer_client_out_of_date_minor": "Mobilná aplikácia je zastaralá. Prosím aktualizujte na najnovšiu verziu.",
"profile_drawer_client_server_up_to_date": "Klient a server sú aktuálne",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Režim iba na čítanie je aktivovaný. Dvojitým ťuknutím na ikonu obrázku používateľa režim opustíte.",
"profile_drawer_readonly_mode": "Režim iba na čítanie je aktivovaný. Dlhým stlačením ikony obrázku používateľa režim opustíte.",
"profile_drawer_server_out_of_date_major": "Server je zastaralý. Prosím aktualizujte na najnovšiu verziu.",
"profile_drawer_server_out_of_date_minor": "Server je zastaralý. Prosím aktualizujte na najnovšiu verziu.",
"profile_image_of_user": "Profilový obrázok používateľa {user}",
@@ -1557,6 +1554,7 @@
"purchase_server_description_2": "Štatút podporovateľa",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "Produktový kľúč servera spravuje admin",
"query_asset_id": "ID požiadavky položky",
"queue_status": "V poradí {count}/{total}",
"rating": "Hodnotenie hviezdičkami",
"rating_clear": "Vyčistiť hodnotenie",
@@ -1642,6 +1640,7 @@
"restore_user": "Navrátiť používateľa",
"restored_asset": "Navrátená položka",
"resume": "Pokračovať",
"resume_paused_jobs": "Pokračovať v {count, plural, one {# pozastavenej úlohe} other {# pozastavených úlohách}}",
"retry_upload": "Zopakovať nahrávanie",
"review_duplicates": "Preskúmať duplikáty",
"review_large_files": "Skontrolovať veľké súbory",
@@ -1735,7 +1734,7 @@
"select_user_for_sharing_page_err_album": "Nepodarilo sa vytvoriť album",
"selected": "Vybrané",
"selected_count": "{count, plural, one {# vybraná} few {# vybrané} other {# vybraných}}",
"selected_gps_coordinates": "vybrané GPS súradnice",
"selected_gps_coordinates": "Vybrané GPS súradnice",
"send_message": "Odoslať správu",
"send_welcome_email": "Odoslať uvítací e-mail",
"server_endpoint": "Koncový bod servera",
@@ -1846,10 +1845,8 @@
"shift_to_permanent_delete": "stlačte ⇧ na trvalé vymazanie položky",
"show_album_options": "Zobraziť možnosti albumu",
"show_albums": "Zobraziť albumy",
"show_all_assets": "Zobraziť všetky položky",
"show_all_people": "Zobraziť všetkých ľudí",
"show_and_hide_people": "Zobraziť a skryť ľudí",
"show_assets_without_location": "Zobraziť položky bez polohy",
"show_file_location": "Zobraziť umiestnenie súboru",
"show_gallery": "Zobraziť galériu",
"show_hidden_people": "Zobraziť skrytých ľudí",
@@ -1920,6 +1917,8 @@
"sync_albums_manual_subtitle": "Synchronizujte všetky nahrané videá a fotografie s vybranými záložnými albumami",
"sync_local": "Synchronizovať lokálne",
"sync_remote": "Synchronizovať vzdialené",
"sync_status": "Stav synchronizácie",
"sync_status_subtitle": "Zobraziť a spravovať systém synchronizácie",
"sync_upload_album_setting_subtitle": "Vytvárajte a nahrávajte svoje fotografie a videá do vybraných albumov na Immich",
"tag": "Štítok",
"tag_assets": "Pridať štítky",
@@ -1979,6 +1978,7 @@
"trash_page_select_assets_btn": "Vybrať médiá",
"trash_page_title": "Kôš ({count})",
"trashed_items_will_be_permanently_deleted_after": "Položky v koši sa natrvalo vymažú po {days, plural, one {# dni} other {# dňoch}}.",
"troubleshoot": "Riešenie problémov",
"type": "Typ",
"unable_to_change_pin_code": "Nie je možné zmeniť PIN kód",
"unable_to_setup_pin_code": "Nie je možné nastaviť PIN kód",
@@ -2034,7 +2034,6 @@
"use_biometric": "Použiť biometrické údaje",
"use_current_connection": "použiť aktuálne pripojenie",
"use_custom_date_range": "Použiť radšej vlastný rozsah dátumov",
"use_this_location": "Kliknutím použite polohu",
"user": "Používateľ",
"user_has_been_deleted": "Tento používateľ bol vymazaný.",
"user_id": "ID používateľa",
@@ -2077,6 +2076,7 @@
"view_next_asset": "Zobraziť nasledujúci súbor",
"view_previous_asset": "Zobraziť predchádzajúci súbor",
"view_qr_code": "Zobraziť QR kód",
"view_similar_photos": "Zobraziť podobné fotografie",
"view_stack": "Zobraziť zoskupenie",
"view_user": "Zobraziť používateľa",
"viewer_remove_from_stack": "Odstrániť zo zoskupenia",

View File

@@ -597,8 +597,6 @@
"backup_setting_subtitle": "Upravljaj nastavitve nalaganja v ozadju in ospredju",
"backup_settings_subtitle": "Upravljanje nastavitev nalaganja",
"backward": "Nazaj",
"beta_sync": "Stanje sinhronizacije beta različice",
"beta_sync_subtitle": "Upravljanje novega sistema sinhronizacije",
"biometric_auth_enabled": "Biometrična avtentikacija omogočena",
"biometric_locked_out": "Biometrična avtentikacija vam je onemogočena",
"biometric_no_options": "Biometrične možnosti niso na voljo",
@@ -1076,10 +1074,7 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Ta funkcija za delovanje nalaga zunanje vire iz Googla.",
"general": "Splošno",
"geolocation_instruction_all_have_location": "Vsa sredstva za ta datum že imajo podatke o lokaciji. Poskusite prikazati vsa sredstva ali izberite drug datum",
"geolocation_instruction_location": "Kliknite na sredstvo z GPS koordinatami, da uporabite njegovo lokacijo, ali pa izberite lokacijo neposredno na zemljevidu",
"geolocation_instruction_no_date": "Izberite datum za upravljanje podatkov o lokaciji za fotografije in videoposnetke s tega dne",
"geolocation_instruction_no_photos": "Za ta datum ni bilo najdenih fotografij ali videoposnetkov. Izberite drug datum, da jih prikažete",
"get_help": "Poiščite pomoč",
"get_wifiname_error": "Imena Wi-Fi ni bilo mogoče dobiti. Prepričajte se, da ste podelili potrebna dovoljenja in ste povezani v omrežje Wi-Fi",
"getting_started": "Začetek",
@@ -1417,6 +1412,8 @@
"open_the_search_filters": "Odpri iskalne filtre",
"options": "Možnosti",
"or": "ali",
"organize_into_albums": "Organiziraj v albume",
"organize_into_albums_description": "Dodaj obstoječe fotografije v albume z uporabo trenutnih nastavitev sinhronizacije",
"organize_your_library": "Organiziraj svojo knjižnico",
"original": "izvirnik",
"other": "drugo",
@@ -1557,6 +1554,7 @@
"purchase_server_description_2": "Status podpornika",
"purchase_server_title": "Strežnik",
"purchase_settings_server_activated": "Ključ izdelka strežnika upravlja skrbnik",
"query_asset_id": "ID sredstva poizvedbe",
"queue_status": "Čakalna vrsta {count}/{total}",
"rating": "Ocena z zvezdicami",
"rating_clear": "Počisti oceno",
@@ -1642,6 +1640,7 @@
"restore_user": "Obnovi uporabnika",
"restored_asset": "Obnovljeno sredstvo",
"resume": "Nadaljuj",
"resume_paused_jobs": "Nadaljuj {count, plural, one {# zaustavljeno opravilo} two {# zaustavljeni opravili} few {# zaustavljena opravila} other {# zaustavljenih opravil}}",
"retry_upload": "Poskusite znova naložiti",
"review_duplicates": "Pregled dvojnikov",
"review_large_files": "Pregled velikih datotek",
@@ -1846,10 +1845,8 @@
"shift_to_permanent_delete": "pritisni ⇧ za trajno brisanje sredstva",
"show_album_options": "Prikaži možnosti albuma",
"show_albums": "Prikaži albume",
"show_all_assets": "Prikaži vsa sredstva",
"show_all_people": "Prikaži vse osebe",
"show_and_hide_people": "Prikaži & skrij osebe",
"show_assets_without_location": "Prikaži sredstva brez lokacije",
"show_file_location": "Pokaži lokacijo datoteke",
"show_gallery": "Prikaži galerijo",
"show_hidden_people": "Prikaži skrite osebe",
@@ -2034,7 +2031,6 @@
"use_biometric": "Uporabite biometrične podatke",
"use_current_connection": "uporabi trenutno povezavo",
"use_custom_date_range": "Namesto tega uporabite časovno obdobje po meri",
"use_this_location": "Kliknite za uporabo lokacije",
"user": "Uporabnik",
"user_has_been_deleted": "Ta uporabnik je bil izbrisan.",
"user_id": "ID uporabnika",
@@ -2077,6 +2073,7 @@
"view_next_asset": "Ogled naslednjega sredstva",
"view_previous_asset": "Ogled prejšnjega sredstva",
"view_qr_code": "Oglej si kodo QR",
"view_similar_photos": "Oglejte si podobne fotografije",
"view_stack": "Ogled sklada",
"view_user": "Poglej uporabnika",
"viewer_remove_from_stack": "Odstrani iz sklada",

View File

@@ -1 +1,59 @@
{}
{
"about": "Rreth",
"account": "Llogari",
"account_settings": "Cilësimet e Llogarisë",
"acknowledge": "Prano",
"action": "Aksion",
"action_common_update": "Përditëso",
"actions": "Aksione",
"active": "Aktiv",
"activity": "Aktivitet",
"activity_changed": "Aktiviteti është {enabled, select, true {aktivizuar} other {çaktivizuar}}",
"add": "Shto",
"add_a_description": "Shto një përshkrim",
"add_a_location": "Shto një vendndodhje",
"add_a_name": "Shto një emër",
"add_a_title": "Shto një titull",
"add_birthday": "Shto një ditëlindje",
"add_endpoint": "Shto një endpoint",
"add_exclusion_pattern": "Shto model përjashtimi",
"add_import_path": "Shto vënd importimi",
"add_location": "Shto vendndodhje",
"add_more_users": "Shto më shumë përdorues",
"add_partner": "Shto partner",
"add_path": "Shto path",
"add_photos": "Shto foto",
"add_tag": "Shto tag",
"add_to": "Shto në…",
"add_to_album": "Shto në album",
"add_to_album_bottom_sheet_added": "Shtuar në {album}",
"add_to_album_bottom_sheet_already_exists": "Existon në {album}",
"add_to_album_toggle": "Aktivizo/çaktivizo zgjedhjen për {album}",
"add_to_albums": "Shto në albume",
"add_to_albums_count": "Shto në albume ({count})",
"add_to_shared_album": "Shto në album të hapur",
"add_url": "Shto URL",
"added_to_archive": "Shtuar në arkiv",
"added_to_favorites": "Shtuar tek të preferuarat",
"added_to_favorites_count": "Shtuar {count, number} në të preferuarat",
"admin": {
"add_exclusion_pattern_description": "Shto modele përjashtimi. Mbështetet globimi duke përdorur *, ** dhe ?. Për të injoruar të gjithë skedarët në çdo drejtori të quajtur \"Raw\", përdorni \"**/Raw/**\". Për të injoruar të gjithë skedarët që mbarojnë me \".tif\", përdorni \"**/*.tif\". Për të injoruar një shteg absolut, përdorni \"/path/to/ignore/**\".",
"admin_user": "Përdorues Administrator",
"asset_offline_description": "Ky aset i bibliotekës së jashtme nuk gjendet më në disk dhe është zhvendosur në koshin e plehrave. Nëse skedari është zhvendosur brenda bibliotekës, kontrolloni kronologjinë tuaj për asetin e ri përkatës. Për të rivendosur këtë aset, sigurohuni që shtegu i skedarit më poshtë të jetë i arritshëm nga Immich dhe skanoni bibliotekën.",
"authentication_settings": "Cilësimet e vërtetimit të përdoruesit",
"authentication_settings_description": "Manaxho passwordin, OAuth, dhe cilësime të tjera të",
"authentication_settings_disable_all": "Je i sigurt që dëshiron të çaktivizosh të gjitha metodat e hyrjes? Hyrja do të çaktivizohet plotësisht.",
"authentication_settings_reenable": "Për ta riaktivizuar, përdorni një <link>Komandë Serveri</link>.",
"background_task_job": "Detyrat në Sfond",
"backup_database": "Krijo demp të databaseit",
"backup_database_enable_description": "Aktivizo demp-et e bazës së të dhënave",
"backup_keep_last_amount": "Sasia e deponive të mëparshme për t'u mbajtur",
"backup_onboarding_1_description": "kopje në cloud ose në një vendndodhje tjetër fizike.",
"backup_onboarding_2_description": "kopje lokale në pajisje të ndryshme. Kjo përfshin skedarët kryesorë dhe një kopje rezervë të këtyre skedarëve lokalisht.",
"backup_onboarding_3_description": "kopje totale të të dhënave tuaja, duke përfshirë skedarët origjinalë. Kjo përfshin 1 kopje jashtë faqes dhe 2 kopje lokale.",
"backup_onboarding_description": "Rekomandohet një strategji <backblaze-link>3-2-1 për ruajtjen e të dhënave tuaja. Duhet të ruani kopje të fotove/videove të ngarkuara, si dhe të bazës së të dhënave të Immich për një zgjidhje gjithëpërfshirëse të ruajtjes së të dhënave.",
"backup_onboarding_footer": "Për më shumë informacion për të krijuar një kopje rezervë të Immich, ju lutem referouni tek <link>dokumentimi</link>.",
"backup_onboarding_parts_title": "Një kopje rezervë 3-2-1 ka:",
"backup_onboarding_title": "Kopje rezervë"
}
}

View File

@@ -597,8 +597,6 @@
"backup_setting_subtitle": "Hantera inställningar för för- och bakgrundsuppladdning",
"backup_settings_subtitle": "Hantera uppladdningsinställningar",
"backward": "Bakåt",
"beta_sync": "Synkroniseringsstatus(BETA)",
"beta_sync_subtitle": "Hantera det nya synkroniseringssystemet",
"biometric_auth_enabled": "Biometrisk autentisering aktiverad",
"biometric_locked_out": "Du är utelåst från biometrisk autentisering",
"biometric_no_options": "Inga biometriska alternativ tillgängliga",
@@ -1076,10 +1074,7 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Denna funktion läser in externa resurser från Google för att fungera.",
"general": "Allmänt",
"geolocation_instruction_all_have_location": "Alla tillgångar för detta datum har redan platsdata. Försök att visa alla tillgångar eller välj ett annat datum",
"geolocation_instruction_location": "Klicka på en tillgång med GPS-koordinater för att använda dess plats, eller välj en plats direkt från kartan",
"geolocation_instruction_no_date": "Välj ett datum för att hantera platsdata för foton och videor från den dagen",
"geolocation_instruction_no_photos": "Inga foton eller videor hittades för detta datum. Välj ett annat datum för att visa dem",
"get_help": "Få hjälp",
"get_wifiname_error": "Kunde inte hämta Wi-Fi-namn. Säkerställ att du tillåtit nödvändiga rättigheter och är ansluten till ett Wi-Fi-nätverk",
"getting_started": "Komma igång",
@@ -1417,6 +1412,8 @@
"open_the_search_filters": "Öppna sökfilter",
"options": "Val",
"or": "eller",
"organize_into_albums": "Organisera i album",
"organize_into_albums_description": "Lägg befintliga foton i album med aktuella synkroniseringsinställningar",
"organize_your_library": "Organisera ditt bibliotek",
"original": "original",
"other": "Övrigt",
@@ -1557,6 +1554,7 @@
"purchase_server_description_2": "Supporterstatus",
"purchase_server_title": "Server",
"purchase_settings_server_activated": "Produktnyckeln för servern hanteras av administratören",
"query_asset_id": "Fråga om objekts-ID",
"queue_status": "Köande {count}/{total}",
"rating": "Antal stjärnor",
"rating_clear": "Ta bort betyg",
@@ -1642,6 +1640,7 @@
"restore_user": "Återställ användare",
"restored_asset": "Återställ tillgång",
"resume": "Återuppta",
"resume_paused_jobs": "Återuppta {count, plural, one {# pausat jobb} other {# pausade jobb}}",
"retry_upload": "Ladda upp igen",
"review_duplicates": "Granska dubbletter",
"review_large_files": "Granska stora filer",
@@ -1735,7 +1734,7 @@
"select_user_for_sharing_page_err_album": "Kunde inte skapa nytt album",
"selected": "Valda",
"selected_count": "{count, plural, other {# valda}}",
"selected_gps_coordinates": "valda GPS-koordinater",
"selected_gps_coordinates": "Valda GPS-koordinater",
"send_message": "Skicka meddelande",
"send_welcome_email": "Skicka välkomstmejl",
"server_endpoint": "Server-endpoint",
@@ -1846,10 +1845,8 @@
"shift_to_permanent_delete": "tryck på ⇧ för att permanent radera tillgången",
"show_album_options": "Visa albumalternativ",
"show_albums": "Visa album",
"show_all_assets": "Visa alla tillgångar",
"show_all_people": "Visa alla personer",
"show_and_hide_people": "Visa & göm personer",
"show_assets_without_location": "Visa tillgångar utan plats",
"show_file_location": "Visa sökväg",
"show_gallery": "Visa galleri",
"show_hidden_people": "Visa gömda personer",
@@ -2034,7 +2031,6 @@
"use_biometric": "Använd biometri",
"use_current_connection": "Använd aktuell anslutning",
"use_custom_date_range": "Använd anpassat datumintervall istället",
"use_this_location": "Klicka för att använda plats",
"user": "Användare",
"user_has_been_deleted": "Den här användaren har raderats.",
"user_id": "Användar-ID",
@@ -2077,6 +2073,7 @@
"view_next_asset": "Visa nästa objekt",
"view_previous_asset": "Visa föregående objekt",
"view_qr_code": "Visa QR-kod",
"view_similar_photos": "Visa liknande foton",
"view_stack": "Visa Stapel",
"view_user": "Visa Användare",
"viewer_remove_from_stack": "Ta bort från Stapeln",

View File

@@ -167,6 +167,8 @@
"map_settings": "மேப் & ஜிபிஎஸ் (GPS) அமைப்புகள்",
"map_settings_description": "மேப் அமைப்புகளை நிர்வகிக்கவும்",
"map_style_description": "style.json மேப் தீமுக்கான URL",
"memory_cleanup_job": "நினைவகத்தை சுத்தம் செய்தல்",
"memory_generate_job": "நினைவக உருவாக்கம்",
"metadata_extraction_job": "மெட்டாடேட்டாவைப் பிரித்தெடுக்கவும்",
"metadata_extraction_job_description": "ஜிபிஎஸ் மற்றும் தெளிவுத்திறன் போன்ற ஒவ்வொரு சொத்திலிருந்தும் மெட்டாடேட்டா தகவலைப் பிரித்தெடுக்கவும்",
"metadata_faces_import_setting": "முக இறக்குமதியை இயக்கவும்",
@@ -175,6 +177,20 @@
"metadata_settings_description": "மேனிலை தரவு அமைப்புகளை நிர்வகிக்கவும்",
"migration_job": "இடம்பெயர்தல்",
"migration_job_description": "புகைப்படங்கள் மற்றும் முகங்களுக்கான சிறுபடங்களை (தம்ப்னெயில்) சமீபத்திய கோப்புறை அமைப்பிற்கு மாற்றவும்",
"nightly_tasks_cluster_faces_setting_description": "புதிதாகக் கண்டறியப்பட்ட முகங்களில் முக அங்கீகாரத்தை இயக்கு",
"nightly_tasks_cluster_new_faces_setting": "புதிய முகங்களைக் தொகுதிபடுத்து",
"nightly_tasks_database_cleanup_setting": "தரவுத்தளத்தை சுத்தம் செய்யும் பணிகள்",
"nightly_tasks_database_cleanup_setting_description": "தரவுத்தளத்திலிருந்து பழைய, காலாவதியான தரவை சுத்தம் செய்யவும்",
"nightly_tasks_generate_memories_setting": "நினைவுகளை உருவாக்கு",
"nightly_tasks_generate_memories_setting_description": "சொத்துக்களிலிருந்து புதிய நினைவுகளை உருவாக்கு",
"nightly_tasks_missing_thumbnails_setting": "விடுபட்ட சிறுபடங்களை உருவாக்கு",
"nightly_tasks_missing_thumbnails_setting_description": "சிறுபட உருவாக்கத்திற்காக சிறுபடங்கள் இல்லாமல் சொத்துக்களை வரிசைப்படுத்தவும்",
"nightly_tasks_settings": "இரவு நேரப் பணிகள் அமைப்புகள்",
"nightly_tasks_settings_description": "இரவு நேர பணிகளை நிர்வகி",
"nightly_tasks_start_time_setting": "தொடக்க நேரம்",
"nightly_tasks_start_time_setting_description": "சர்வர் இரவு நேர பணிகளை இயக்கத் தொடங்கும் நேரம்",
"nightly_tasks_sync_quota_usage_setting": "ஒத்திசைவு ஒதுக்கீடு பயன்பாடு",
"nightly_tasks_sync_quota_usage_setting_description": "தற்போதைய பயன்பாட்டின் அடிப்படையில், பயனர் சேமிப்பக ஒதுக்கீட்டைப் புதுப்பிக்கவும்",
"no_paths_added": "ஃபோல்ட்டர் பாதைகள் சேர்க்கப்படவில்லை",
"no_pattern_added": "பேட்டர்ன்் சேர்க்கப்படவில்லை",
"note_apply_storage_label_previous_assets": "குறிப்பு: முன்பு பதிவேற்றிய படங்களுக்கு சேமிப்பக லேபிளைப் பயன்படுத்த, இதை இயக்கவும்",
@@ -200,11 +216,14 @@
"oauth_auto_register": "தானியங்கு பதிவு",
"oauth_auto_register_description": "OAuth உடன் உள்நுழைந்த பிறகு தானாகவே புதிய பயனர்களைப் பதிவுசெய்யவும்",
"oauth_button_text": "பட்டன் உரை",
"oauth_client_secret_description": "அவசியம், OAuth வழங்குநரால் PKCE (குறியீட்டுப் பரிமாற்றத்திற்கான ஆதார விசை) ஆதரிக்கப்படாவிட்டால்",
"oauth_enable_description": "OAuth மூலம் உள்நுழைக",
"oauth_mobile_redirect_uri": "மொபைல் வழிமாற்று URI",
"oauth_mobile_redirect_uri_override": "மொபைல் வழிமாற்று URI மேலெழுதுதல்",
"oauth_mobile_redirect_uri_override_description": "'app.immich:/' தவறான வழிமாற்று URI ஆக இருக்கும்போது இயக்கவும்.",
"oauth_settings": "Oauth",
"oauth_mobile_redirect_uri_override_description": "''{callback}'' போன்ற மொபைல் URI ஐ OAuth வழங்குநர் அனுமதிக்காதபோது இயக்கவும்",
"oauth_role_claim": "பதவி உரிமைகோரல்",
"oauth_role_claim_description": "இந்தக் கோரிக்கையின் இருப்பின் அடிப்படையில் தானாகவே நிர்வாகி அணுகலை வழங்கவும். கோரிக்கையில் 'பயனர்' அல்லது 'நிர்வாகி' இருக்கலாம்.",
"oauth_settings": "ஓஆத்",
"oauth_settings_description": "OAuth உள்நுழைவு அமைப்புகளை நிர்வகிக்கவும்",
"oauth_settings_more_details": "இந்த அம்சத்தைப் பற்றிய கூடுதல் விவரங்களுக்கு, <link>டாக்ஸ்</link> ஐப் பார்க்கவும்.",
"oauth_storage_label_claim": "சேமிப்பக லேபிள் உரிமைகோரல்",
@@ -212,7 +231,9 @@
"oauth_storage_quota_claim": "சேமிப்பக ஒதுக்கீடு உரிமைகோரல்",
"oauth_storage_quota_claim_description": "இந்த உரிமைகோரலின் மதிப்பிற்கு பயனரின் சேமிப்பக ஒதுக்கீட்டை தானாக அமைக்கவும்.",
"oauth_storage_quota_default": "இயல்புநிலை சேமிப்பக ஒதுக்கீடு (GiB)",
"oauth_storage_quota_default_description": "GiB இல் உள்ள ஒதுக்கீடு எந்த உரிமைகோரலும் வழங்கப்படாதபோது பயன்படுத்தப்படும் (வரம்பற்ற ஒதுக்கீட்டிற்கு 0 ஐ உள்ளிடவும்).",
"oauth_storage_quota_default_description": "GiB இல் உள்ள ஒதுக்கீடு எந்த உரிமைகோரலும் வழங்கப்படாதபோது பயன்படுத்தப்படும் .",
"oauth_timeout": "கோரிக்கை நேரம் முடிந்தது",
"oauth_timeout_description": "கோரிக்கைகளுக்கான காலக்கெடு மில்லி வினாடிகளில்",
"password_enable_description": "மின்னஞ்சல் மற்றும் கடவுச்சொல் மூலம் உள்நுழையவும்",
"password_settings": "கடவுச்சொல் உள்நுழைவு",
"password_settings_description": "கடவுச்சொல் உள்நுழைவு அமைப்புகளை நிர்வகிக்கவும்",
@@ -250,6 +271,7 @@
"storage_template_migration_info": "டெம்ப்ளேட் மாற்றங்கள் புதிய படங்களுக்கு மட்டுமே பொருந்தும். முன்பு பதிவேற்றிய படங்களுக்கு டெம்ப்ளேட்டைப் பயன்படுத்த, <link>{job}</link> ஐ இயக்கவும்.",
"storage_template_migration_job": "ஸ்டோரேஜ் டெம்ப்ளேட் இடம்பெயர்வு வேலை",
"storage_template_more_details": "இந்த அம்சத்தைப் பற்றிய கூடுதல் விவரங்களுக்கு, <template-link>Storage Template</template-link> மற்றும் அதன் <implications-link>தாக்கங்கள்</implications-link> ஐப் பார்க்கவும்",
"storage_template_onboarding_description_v2": "இயக்கப்பட்டால், இந்த அம்சம் பயனர் வரையறுக்கப்பட்ட டெம்ப்ளேட்டின் அடிப்படையில் கோப்புகளை தானாக ஒழுங்கமைக்கும். மேலும் தகவலுக்கு, <link>ஆவணங்கள்</link> ஐப் பார்க்கவும்.",
"storage_template_path_length": "தோராயமான பாதை நீள வரம்பு: <b>{length, number}</b>/{limit, number}",
"storage_template_settings": "ஸ்டோரேஜ் டெம்ப்ளேட்",
"storage_template_settings_description": "பதிவேற்ற புகைப்படங்களின் கோப்புறை அமைப்பு மற்றும் கோப்பு பெயரை நிர்வகிக்கவும்",
@@ -293,6 +315,8 @@
"transcoding_constant_rate_factor": "நிலையான வீத காரணி (-crf)",
"transcoding_constant_rate_factor_description": "வீடியோ தர நிலை. வழக்கமான மதிப்புகள் H.264 க்கு 23, HEVC க்கு 28, VP9 க்கு 31, மற்றும் AV1 க்கு 35 ஆகும். குறைவானது சிறந்தது, ஆனால் பெரிய கோப்புகளை உருவாக்குகிறது.",
"transcoding_disabled_description": "எந்த வீடியோக்களையும் டிரான்ச்கோட் செய்யாதீர்கள், சில வாடிக்கையாளர்களின் பிளேபேக்கை உடைக்கலாம்",
"transcoding_encoding_options": "குறியீட்டு விருப்பங்கள்",
"transcoding_encoding_options_description": "குறியிடப்பட்ட வீடியோக்களுக்கான கோடெக்குகள், தெளிவுத்திறன், தரம் மற்றும் பிற விருப்பங்களை அமைக்கவும்",
"transcoding_hardware_acceleration": "வன்பொருள் முடுக்கம்",
"transcoding_hardware_acceleration_description": "சோதனை; மிக வேகமாக, ஆனால் அதே பிட்ரேட்டில் குறைந்த தகுதி இருக்கும்",
"transcoding_hardware_decoding": "வன்பொருள் டிகோடிங்",
@@ -304,6 +328,8 @@
"transcoding_max_keyframe_interval": "அதிகபட்ச கீஃப்ரேம் இடைவெளி",
"transcoding_max_keyframe_interval_description": "கீஃப்ரேம்களுக்கு இடையில் அதிகபட்ச பிரேம் தூரத்தை அமைக்கிறது. குறைந்த மதிப்புகள் சுருக்க செயல்திறனை மோசமாக்குகின்றன, ஆனால் தேடல் நேரங்களை மேம்படுத்துகின்றன, மேலும் வேகமான இயக்கத்துடன் காட்சிகளில் தரத்தை மேம்படுத்தலாம். 0 இந்த மதிப்பை தானாக அமைக்கிறது.",
"transcoding_optimal_description": "இலக்கு தீர்மானத்தை விட உயர்ந்த வீடியோக்கள் அல்லது ஏற்றுக்கொள்ளப்பட்ட வடிவத்தில் இல்லை",
"transcoding_policy": "குறிமாற்றக் கொள்கை",
"transcoding_policy_description": "ஒரு வீடியோ எப்போது குறிமாற்றம் செய்யப்படும் என்பதை அமைக்கவும்",
"transcoding_preferred_hardware_device": "விருப்பமான வன்பொருள் சாதனம்",
"transcoding_preferred_hardware_device_description": "VAAPI மற்றும் QSV க்கு மட்டுமே பொருந்தும். வன்பொருள் டிரான்ச்கோடிங்கிற்கு பயன்படுத்தப்படும் ட்ரை முனையை அமைக்கிறது.",
"transcoding_preset_preset": "முன்னமைக்கப்பட்ட (-பிரசெட்)",
@@ -312,6 +338,7 @@
"transcoding_reference_frames_description": "கொடுக்கப்பட்ட சட்டகத்தை சுருக்கும்போது குறிப்பிட வேண்டிய பிரேம்களின் எண்ணிக்கை. அதிக மதிப்புகள் சுருக்க செயல்திறனை மேம்படுத்துகின்றன, ஆனால் குறியாக்கத்தை மெதுவாக்குகின்றன. 0 இந்த மதிப்பை தானாக அமைக்கிறது.",
"transcoding_required_description": "ஏற்றுக்கொள்ளப்பட்ட வடிவத்தில் இல்லாத வீடியோக்கள் மட்டுமே",
"transcoding_settings": "வீடியோ டிரான்ச்கோடிங் அமைப்புகள்",
"transcoding_settings_description": "எந்த வீடியோக்களை டிரான்ஸ்கோட் செய்ய வேண்டும், அவற்றை எவ்வாறு செயலாக்க வேண்டும் என்பதை நிர்வகிக்கவும்",
"transcoding_target_resolution": "இலக்கு தீர்மானம்",
"transcoding_target_resolution_description": "அதிக தீர்மானங்கள் அதிக விவரங்களை பாதுகாக்க முடியும், ஆனால் குறியாக்க அதிக நேரம் எடுக்கும், பெரிய கோப்பு அளவுகளைக் கொண்டிருக்கலாம், மேலும் பயன்பாட்டு மறுமொழியைக் குறைக்கலாம்.",
"transcoding_temporal_aq": "தம்போர்ல்",
@@ -324,18 +351,23 @@
"transcoding_transcode_policy_description": "ஒரு வீடியோ எப்போது மாற்றப்பட வேண்டும் என்பதற்கான கொள்கை. எச்.டி.ஆர் வீடியோக்கள் எப்போதும் டிரான்ச்கோட் செய்யப்படும் (டிரான்ச்கோடிங் முடக்கப்பட்டிருந்தால் தவிர).",
"transcoding_two_pass_encoding": "இரண்டு-பாச் குறியாக்கம்",
"transcoding_two_pass_encoding_setting_description": "சிறந்த குறியாக்கப்பட்ட வீடியோக்களை உருவாக்க இரண்டு பாச்களில் டிரான்ச்கோட். மேக்ச் பிட்ரேட் இயக்கப்பட்டிருக்கும்போது (H.264 மற்றும் HEVC உடன் வேலை செய்ய இது தேவைப்படுகிறது), இந்த பயன்முறை அதிகபட்ச பிட்ரேட்டை அடிப்படையாகக் கொண்ட பிட்ரேட் வரம்பைப் பயன்படுத்துகிறது மற்றும் CRF ஐ புறக்கணிக்கிறது. VP9 ஐப் பொறுத்தவரை, அதிகபட்ச பிட்ரேட் முடக்கப்பட்டிருந்தால் CRF ஐப் பயன்படுத்தலாம்.",
"transcoding_video_codec": "வீடியோ கோடெக்",
"transcoding_video_codec_description": "VP9 அதிக செயல்திறன் மற்றும் வலை பொருந்தக்கூடிய தன்மையைக் கொண்டுள்ளது, ஆனால் டிரான்ச்கோடிற்கு அதிக நேரம் எடுக்கும். HEVC இதேபோல் செயல்படுகிறது, ஆனால் குறைந்த வலை பொருந்தக்கூடிய தன்மையைக் கொண்டுள்ளது. H.264 பரவலாக இணக்கமானது மற்றும் டிரான்ச்கோடு விரைவானது, ஆனால் மிகப் பெரிய கோப்புகளை உருவாக்குகிறது. ஏ.வி 1 மிகவும் திறமையான கோடெக் ஆனால் பழைய சாதனங்களில் உதவி இல்லை.",
"trash_enabled_description": "குப்பை அம்சங்களை இயக்கவும்",
"trash_number_of_days": "நாட்களின் எண்ணிக்கை",
"trash_number_of_days_description": "சொத்துக்களை நிரந்தரமாக அகற்றுவதற்கு முன் குப்பைத்தொட்டியில் வைத்திருக்க நாட்கள் எண்ணிக்கை",
"trash_settings": "குப்பை அமைப்புகள்",
"trash_settings_description": "குப்பை அமைப்புகளை நிர்வகிக்கவும்",
"unlink_all_oauth_accounts": "அனைத்து OAuth கணக்குகளின் இணைப்பையும் நீக்கு",
"unlink_all_oauth_accounts_description": "புதிய வழங்குநருக்கு மாறுவதற்கு முன், அனைத்து OAuth கணக்குகளின் இணைப்பையும் நீக்க நினைவில் கொள்ளுங்கள்.",
"unlink_all_oauth_accounts_prompt": "எல்லா OAuth கணக்குகளின் இணைப்பையும் நீக்க விரும்புகிறீர்களா? இது ஒவ்வொரு பயனருக்கும் OAuth ஐடியை மீட்டமைக்கும், மேலும் இதை திரும்பப் பெறு முடியாது.",
"user_cleanup_job": "பயனர் தூய்மைப்படுத்துதல்",
"user_delete_delay": "<b> {user} </b> இன் கணக்கு மற்றும் சொத்துக்கள் {தாமதம், பன்மை, ஒன்று {# நாள்} மற்ற {# நாட்கள்}} இல் நிரந்தர நீக்க திட்டமிடப்படும்.",
"user_delete_delay_settings": "தாமதத்தை நீக்கு",
"user_delete_delay_settings_description": "எண் of days after நீக்கும் பெறுநர் permanently நீக்கு a user's account and assets. நீக்குவதற்கு தயாராக இருக்கும் பயனர்களைச் சரிபார்க்க பயனர் நீக்குதல் வேலை நள்ளிரவில் இயங்குகிறது. இந்த அமைப்பில் மாற்றங்கள் அடுத்த மரணதண்டனையில் மதிப்பீடு செய்யப்படும்.",
"user_delete_immediately": "<b> {user} </b> இன் கணக்கு மற்றும் சொத்துக்கள் நிரந்தர நீக்குதலுக்காக வரிசையில் நிற்கப்படும் <b> உடனடியாக </b>.",
"user_delete_immediately_checkbox": "உடனடியாக நீக்க பயனர் மற்றும் சொத்துக்கள்",
"user_details": "பயனர் விவரங்கள்",
"user_management": "பயனர் மேலாண்மை",
"user_password_has_been_reset": "பயனரின் கடவுச்சொல் மீட்டமைக்கப்பட்டுள்ளது:",
"user_password_reset_description": "தயவுசெய்து தற்காலிக கடவுச்சொல்லை பயனருக்கு வழங்கவும், அவர்களின் அடுத்த உள்நுழைவில் கடவுச்சொல்லை மாற்ற வேண்டும் என்று அவர்களுக்குத் தெரிவிக்கவும்.",
@@ -355,6 +387,18 @@
"admin_password": "நிர்வாகி கடவுச்சொல்",
"administration": "நிர்வாகம்",
"advanced": "மேம்பட்ட",
"advanced_settings_beta_timeline_subtitle": "புதிய பயன்பாட்டு அனுபவத்தை முயற்சிக்கவும்",
"advanced_settings_beta_timeline_title": "பீட்டா காலவரிசை",
"advanced_settings_enable_alternate_media_filter_subtitle": "மாற்று அளவுகோல்களின் அடிப்படையில் ஒத்திசைவின் போது மீடியாவை வடிகட்ட இந்த விருப்பத்தைப் பயன்படுத்தவும். எல்லா ஆல்பங்களையும் ஆப்ஸ் கண்டறிவதில் சிக்கல்கள் இருந்தால் மட்டுமே இதை முயற்சிக்கவும்.",
"advanced_settings_enable_alternate_media_filter_title": "[பரிசோதனைக்கு உட்பட்டது] மாற்று சாதன ஆல்ப ஒத்திசைவு வடிப்பானைப் பயன்படுத்தவும்",
"advanced_settings_log_level_title": "பதிவு நிலை: {level}",
"advanced_settings_prefer_remote_subtitle": "சில சாதனங்கள் உள் சொத்துக்களிலிருந்து சிறுபடங்களை ஏற்றுவதில் மிகவும் மெதுவாக இருக்கும். அதற்கு பதிலாக சர்வர் படங்களை ஏற்ற இந்த அமைப்பைச் செயல்படுத்தவும்.",
"advanced_settings_prefer_remote_title": "ரிமோட் படங்களுக்கு முன்னுரிமை கொடு",
"advanced_settings_proxy_headers_title": "ப்ராக்ஸி தலைப்புகள்",
"advanced_settings_readonly_mode_subtitle": "புகைப்படங்களை மட்டும் பார்க்கக்கூடிய படிக்க மட்டும் பயன்முறையை இயக்குகிறது, பல படங்களைத் தேர்ந்தெடுப்பது, பகிர்தல், அனுப்புதல், நீக்குதல் போன்ற அனைத்தும் முடக்கப்பட்டுள்ளன. பிரதான திரையில் இருந்து பயனர் அவதார் வழியாக படிக்க மட்டும் என்பதை இயக்கு/முடக்கு",
"advanced_settings_readonly_mode_title": "படிக்க மட்டுமேயான பயன்முறை",
"advanced_settings_self_signed_ssl_title": "சுய கையொப்பமிட்ட SSL சான்றிதழ்களை அனுமதி",
"advanced_settings_sync_remote_deletions_subtitle": "இணையத்தில் நடவடிக்கை எடுக்கப்படும்போது, இந்தச் சாதனத்தில் உள்ள ஒரு சொத்தை தானாகவே நீக்கவும் அல்லது மீட்டெடுக்கவும்",
"age_months": "அகவை {மாதங்கள், பன்மை, ஒன்று {# மாதம்} மற்ற {# மாதங்கள்}}",
"age_year_months": "அகவை 1 அகவை, {மாதங்கள், பன்மை, ஒன்று {# மாதம்} மற்ற {# மாதங்கள்}}",
"age_years": "{ஆண்டுகள், பன்மை, பிற {வயது #}}",
@@ -1269,12 +1313,21 @@
"upload_status_errors": "பிழைகள்",
"upload_status_uploaded": "பதிவேற்றப்பட்டது",
"upload_success": "வெற்றியைப் பதிவேற்றவும், புதிய பதிவேற்ற சொத்துக்களைக் காண பக்கத்தைப் புதுப்பிக்கவும்.",
"upload_to_immich": "இம்மிச்சிற்கு பதிவேற்று ({count})",
"uploading": "பதிவேற்றுகிறது",
"uploading_media": "மீடியாவைப் பதிவேற்றுகிறது",
"url": "முகவரி",
"usage": "பயன்பாடு",
"use_biometric": "பயோமெட்ரிக்கைப் பயன்படுத்தவும்",
"use_current_connection": "தற்போதைய இணைப்பைப் பயன்படுத்தவும்",
"use_custom_date_range": "அதற்கு பதிலாக தனிப்பயன் தேதி வரம்பைப் பயன்படுத்தவும்",
"user": "பயனர்",
"user_has_been_deleted": "இந்தப் பயனர் நீக்கப்பட்டார்.",
"user_id": "பயனர் ஐடி",
"user_liked": "{user} விரும்பினார் {வகை, தேர்ந்தெடு, புகைப்படம் {this photo} வீடியோ {this video} சொத்து {this asset} பிற {it}}",
"user_pin_code_settings": "பின் குறியீடு",
"user_pin_code_settings_description": "உங்கள் பின் குறியீட்டை நிர்வகிக்கவும்",
"user_privacy": "பயனர் தனியுரிமை",
"user_purchase_settings": "வாங்க",
"user_purchase_settings_description": "உங்கள் வாங்குதலை நிர்வகிக்கவும்",
"user_role_set": "{user} {பாத்திரமாக அமைக்கவும்",
@@ -1283,12 +1336,14 @@
"user_usage_stats_description": "கணக்கு உபயோகப் புள்ளிவிவரங்களைப் பார்க்க",
"username": "பயனர்பெயர்",
"users": "பயனர்கள்",
"users_added_to_album_count": "ஆல்பத்தில் {எண்ணிக்கை, பன்மை, ஒன்று{# user} மற்றவை{# users}} சேர்க்கப்பட்டது",
"utilities": "பயன்பாடுகள்",
"validate": "சரிபார்க்கவும்",
"validate_endpoint_error": "தயவுசெய்து ஒரு செல்லுபடியாகும் URL ஐ உள்ளிடவும்",
"variables": "மாறிகள்",
"version": "பதிப்பு",
"version_announcement_closing": "உங்கள் நண்பர், அலெக்ச்",
"version_announcement_message": "ஆய்! இம்மியின் புதிய பதிப்பு கிடைக்கிறது. எந்தவொரு தவறான கருத்துக்களையும் தடுக்க உங்கள் அமைப்பு புதுப்பித்த நிலையில் இருப்பதை உறுதிசெய்ய <இணைப்பு> வெளியீட்டுக் குறிப்புகள் </இணைப்பு> ஐப் படிக்க சிறிது நேரம் ஒதுக்குங்கள், குறிப்பாக நீங்கள் காவற்கோபுரத்தைப் பயன்படுத்தினால் அல்லது உங்கள் இம்மிச் நிகழ்வை தானாகவே புதுப்பிப்பதைக் கையாளும் எந்தவொரு பொறிமுறையையும் பயன்படுத்தினால்.",
"version_announcement_message": "வணக்கம்! இம்மியின் புதிய பதிப்பு கிடைக்கிறது. எந்தவொரு தவறான கருத்துக்களையும் தடுக்க உங்கள் அமைப்பு புதுப்பித்த நிலையில் இருப்பதை உறுதிசெய்ய <link> வெளியீட்டுக் குறிப்புகள் </link> ஐப் படிக்க சிறிது நேரம் ஒதுக்குங்கள், குறிப்பாக நீங்கள் காவற்கோபுரத்தைப் பயன்படுத்தினால் அல்லது உங்கள் இம்மிச் நிகழ்வை தானாகவே புதுப்பிப்பதைக் கையாளும் எந்தவொரு பொறிமுறையையும் பயன்படுத்தினால்.",
"version_history": "பதிப்பு வரலாறு",
"version_history_item": "{version} இல் {date} நிறுவப்பட்டது",
"video": "ஒளிதோற்றம்",
@@ -1300,21 +1355,32 @@
"view_album": "ஆல்பத்தைக் காண்க",
"view_all": "அனைத்தையும் காண்க",
"view_all_users": "அனைத்து பயனர்களையும் காண்க",
"view_details": "விவரங்களைப் பார்",
"view_in_timeline": "காலவரிசையில் காண்க",
"view_link": "இணைப்பைக் காண்க",
"view_links": "இணைப்புகளைக் காண்க",
"view_name": "பார்வை",
"view_next_asset": "அடுத்த சொத்தை காண்க",
"view_previous_asset": "முந்தைய சொத்தைப் பார்க்கவும்",
"view_qr_code": "QR குறியீட்டைக் காட்டு",
"view_similar_photos": "இதே போன்ற புகைப்படங்களைக் காட்டு",
"view_stack": "காண்க அடுக்கு",
"view_user": "பயனரைப் பார்க்கவும்",
"viewer_remove_from_stack": "அடுக்கிலிருந்து அகற்று",
"viewer_stack_use_as_main_asset": "பிரதான சொத்தாகப் பயன்படுத்தவும்",
"viewer_unstack": "அடுக்கை நீக்கு",
"visibility_changed": "{எண்ணிக்கை, பன்மை, ஒன்று {# நபர்} மற்ற {# நபர்கள்} க்கு க்கு தெரிவுநிலை மாற்றப்பட்டது",
"waiting": "காத்திருக்கிறது",
"warning": "எச்சரிக்கை",
"week": "வாரம்",
"welcome": "வரவேற்கிறோம்",
"welcome_to_immich": "இம்மிச்சிற்கு வருக",
"wifi_name": "வைஃபை பெயர்",
"wrong_pin_code": "தவறான பின் குறியீடு",
"year": "ஆண்டு",
"years_ago": "{ஆண்டுகள், பன்மை, ஒன்று {# ஆண்டு} மற்ற {# ஆண்டுகள்}}} முன்பு",
"yes": "ஆம்",
"you_dont_have_any_shared_links": "உங்களிடம் பகிரப்பட்ட இணைப்புகள் எதுவும் இல்லை",
"your_wifi_name": "உங்கள் வைஃபை பெயர்",
"zoom_image": "பெரிதாக்க படம்"
}

View File

@@ -11,7 +11,7 @@
"activity_changed": "Etkinlik {enabled, select, true {etkin} other {devre dışı}}",
"add": "Ekle",
"add_a_description": "Açıklama ekle",
"add_a_location": "Lokasyon ekle",
"add_a_location": "Konum ekle",
"add_a_name": "İsim ekle",
"add_a_title": "Başlık ekle",
"add_birthday": "Doğum günü ekle",
@@ -28,6 +28,7 @@
"add_to_album": "Albüme ekle",
"add_to_album_bottom_sheet_added": "{album} albümüne eklendi",
"add_to_album_bottom_sheet_already_exists": "Zaten {album} albümüne ekli",
"add_to_album_toggle": "{album} için seçimi değiştir",
"add_to_albums": "Albümlere ekle",
"add_to_albums_count": "{count} albümlerine ekle",
"add_to_shared_album": "Paylaşılan albüme ekle",
@@ -44,7 +45,7 @@
"authentication_settings_disable_all": "Tüm giriş yöntemlerini devre dışı bırakmak istediğinize emin misiniz? Giriş yapma fonksiyonu tamamen devre dışı bırakılacak.",
"authentication_settings_reenable": "Yeniden aktif etmek için <link>Sunucu Komutu</link>'nu kullanın.",
"background_task_job": "Arka Plan Görevleri",
"backup_database": "Veritabanı yığını oluştur",
"backup_database": "Veritabanı Yığını Oluştur",
"backup_database_enable_description": "Veritabanı yığınlarını etkinleştir",
"backup_keep_last_amount": "Tutulması gereken geçmiş yığını miktarı",
"backup_onboarding_1_description": "bulutta veya başka bir fiziksel konumda bulunan yedek kopya.",
@@ -54,7 +55,7 @@
"backup_onboarding_footer": "Immich'i yedekleme hakkında daha fazla bilgi için lütfen <link>belgelere</link> bakın.",
"backup_onboarding_parts_title": "3-2-1 yedekleme şunları içerir:",
"backup_onboarding_title": "Yedeklemeler",
"backup_settings": "Veritabanı yığını ayarları",
"backup_settings": "Veritabanı Yığını Ayarları",
"backup_settings_description": "Veritabanı döküm ayarlarını yönet.",
"cleared_jobs": "{job} için işler temizlendi",
"config_set_by_file": "Ayarlar şuanda config dosyası tarafından ayarlanmıştır",
@@ -395,6 +396,8 @@
"advanced_settings_prefer_remote_title": "Uzak görüntüleri tercih et",
"advanced_settings_proxy_headers_subtitle": "Immich'in her ağ isteğiyle birlikte göndermesi gereken proxy header'ları tanımlayın",
"advanced_settings_proxy_headers_title": "Proxy Header'lar",
"advanced_settings_readonly_mode_subtitle": "Fotoğrafların yalnızca görüntülenebildiği salt okunur modu etkinleştirir; birden fazla görüntü seçme, paylaşma, aktarma, silme gibi işlemler devre dışı bırakılır. Ana ekrandan kullanıcı avatarı aracılığıyla salt okunur modu Etkinleştirin/Devre dışı bırakın",
"advanced_settings_readonly_mode_title": "Salt okunur Mod",
"advanced_settings_self_signed_ssl_subtitle": "Sunucu uç noktası için SSL sertifika doğrulamasını atlar. Kendinden imzalı sertifikalar için gereklidir.",
"advanced_settings_self_signed_ssl_title": "Kendi kendine imzalanmış SSL sertifikalarına izin ver",
"advanced_settings_sync_remote_deletions_subtitle": "Web üzerinde işlem yapıldığında, bu aygıttaki varlığı otomatik olarak sil veya geri yükle",
@@ -460,6 +463,7 @@
"app_bar_signout_dialog_title": ıkış",
"app_settings": "Uygulama Ayarları",
"appears_in": "Şurada görünür",
"apply_count": "Uygula ({count, number})",
"archive": "Arşiv",
"archive_action_prompt": "{count} arşive eklendi",
"archive_or_unarchive_photo": "Fotoğrafı arşivle/arşivden çıkar",
@@ -499,7 +503,9 @@
"assets": "Varlıklar",
"assets_added_count": "{count, plural, one {# varlık eklendi} other {# varlık eklendi}}",
"assets_added_to_album_count": "{count, plural, one {# varlık} other {# varlık}} albüme eklendi",
"assets_added_to_albums_count": "Eklendi {assetTotal, plural, one {# asset} other {# assets}} to {albumTotal, plural, one {# album} other {# albums}}",
"assets_cannot_be_added_to_album_count": "{count, plural, one {Varlık} other {Varlıklar}} albüme eklenemiyor",
"assets_cannot_be_added_to_albums": "{count, plural, one {Asset} other {Assets}} hiçbir albüme eklenemez",
"assets_count": "{count, plural, one {# varlık} other {# varlıklar}}",
"assets_deleted_permanently": "{count} öğe kalıcı olarak silindi",
"assets_deleted_permanently_from_server": "{count} öğe kalıcı olarak Immich sunucusundan silindi",
@@ -516,6 +522,7 @@
"assets_trashed_count": "{count, plural, one {# varlık} other {# varlıklar}} çöp kutusuna taşındı",
"assets_trashed_from_server": "{count} öğe Immich sunucusunda çöpe atıldı",
"assets_were_part_of_album_count": "{count, plural, one {Varlık zaten} other {Varlıklar zaten}} albümün parçasıydı",
"assets_were_part_of_albums_count": "{count, plural, one {Asset was} other {Assets were}} albümlerin zaten bir parçası",
"authorized_devices": "Yetki Verilmiş Cihazlar",
"automatic_endpoint_switching_subtitle": "Belirlenmiş Wi-Fi ağına bağlıyken yerel olarak bağlanıp başka yerlerde alternatif bağlantıyı kullan",
"automatic_endpoint_switching_title": "Otomatik URL değiştirme",
@@ -590,8 +597,6 @@
"backup_setting_subtitle": "Arka planda ve ön planda yükleme ayarlarını düzenle",
"backup_settings_subtitle": "Yükleme ayarlarını yönet",
"backward": "Geriye doğru",
"beta_sync": "Beta Senkronizasyon Durumu",
"beta_sync_subtitle": "Yeni senkronizasyon sistemini yönetin",
"biometric_auth_enabled": "Biyometrik kimlik doğrulama etkin",
"biometric_locked_out": "Biyometrik kimlik doğrulaması kilitli",
"biometric_no_options": "Biyometrik seçenek yok",
@@ -843,6 +848,7 @@
"edit_date": "Tarihi Düzenle",
"edit_date_and_time": "Tarih ve zamanı düzenleyin",
"edit_date_and_time_action_prompt": "{count} tarih ve zaman düzenlendi",
"edit_date_and_time_by_offset": "Tarihi ofset ile değiştir",
"edit_date_and_time_by_offset_interval": "Yeni tarih aralığı: {from}'dan {to}'a kadar",
"edit_description": "Açıklamayı düzenle",
"edit_description_prompt": "Lütfen yeni bir açıklama seçin:",
@@ -1068,12 +1074,15 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Bu özellik, çalışabilmek için Google'dan harici kaynaklar yükler.",
"general": "Genel",
"geolocation_instruction_location": "GPS koordinatları olan bir varlığı tıklayarak konumunu kullanın veya haritadan doğrudan bir konum seçin",
"get_help": "Yardım Al",
"get_wifiname_error": "Wi-Fi adı alınamadı. Gerekli izinleri verdiğinizden ve bir Wi-Fi ağına bağlı olduğunuzdan emin olun",
"getting_started": "Başlarken",
"go_back": "Geri git",
"go_to_folder": "Klasöre git",
"go_to_search": "Aramaya git",
"gps": "GPS",
"gps_missing": "GPS yok",
"grant_permission": "İzin ver",
"group_albums_by": "Albümleri gruplandır...",
"group_country": "Ülkeye göre grupla",
@@ -1111,7 +1120,7 @@
"home_page_delete_remote_err_local": "Uzaktan silme seçimindeki yerel öğeler atlanıyor",
"home_page_favorite_err_local": "Yerel ögeler henüz gözdelere eklenemiyor, atlanıyor",
"home_page_favorite_err_partner": "Ortak ögeleri henüz gözdelere eklenemiyor, atlanıyor",
"home_page_first_time_notice": "Uygulamayı ilk kez kullanıyorsanız, zaman çizelgesinin albümlerdeki fotoğraf ve videolar ile oluşturulabilmesi için lütfen yedekleme için albüm(ler) seçtiğinizden emin olun.",
"home_page_first_time_notice": "Uygulamayı ilk kez kullanıyorsanız, zaman çizelgesinin albümlerdeki fotoğraf ve videolar ile oluşturulabilmesi için lütfen yedekleme için albüm seçtiğinizden emin olun",
"home_page_locked_error_local": "Yerel varlıklar kilitli klasöre taşınamıyor, atlanıyor",
"home_page_locked_error_partner": "Ortak varlıklar kilitli klasöre taşınamıyor, atlanıyor",
"home_page_share_err_local": "Yerel öğeler bağlantı ile paylaşılamaz, atlanıyor",
@@ -1243,10 +1252,10 @@
"login_form_handshake_exception": "Sunucuda bir El Sıkışma İstisnası vardı. Kendi kendine imzalanmış bir sertifika kullanıyorsanız, ayarlar menüsünden kendi kendine imzalanmış sertifikalara izin verin.",
"login_form_password_hint": "parola",
"login_form_save_login": "Oturum açık kalsın",
"login_form_server_empty": "Sunucu URL'si girin",
"login_form_server_empty": "Sunucu URL'si girin.",
"login_form_server_error": "Sunucuya bağlanılamadı.",
"login_has_been_disabled": "Giriş devre dışı bırakıldı.",
"login_password_changed_error": "Parolanız güncellenirken bir hata oluştu.",
"login_password_changed_error": "Parolanız güncellenirken bir hata oluştu",
"login_password_changed_success": "Parola güncellendi",
"logout_all_device_confirmation": "Tüm cihazlarda oturum kapatmak istediğinizden emin misiniz?",
"logout_this_device_confirmation": "Bu cihazda oturum kapatmak istediğinizden emin misiniz?",
@@ -1257,6 +1266,7 @@
"main_branch_warning": "Geliştirme sürümü kullanıyorsunuz. Yayınlanan bir sürüm kullanmanızı önemle tavsiye ederiz!",
"main_menu": "Ana menü",
"make": "Marka",
"manage_geolocation": "Konumu yönet",
"manage_shared_links": "Paylaşılan bağlantıları yönet",
"manage_sharing_with_partners": "Ortaklarla paylaşımı yönet",
"manage_the_app_settings": "Uygulama ayarlarını yönet",
@@ -1265,7 +1275,7 @@
"manage_your_devices": "Cihazlarınızı yönetin",
"manage_your_oauth_connection": "OAuth bağlantınızı yönetin",
"map": "Harita",
"map_assets_in_bounds": "{count} fotoğraf",
"map_assets_in_bounds": "{count, plural, =0 {Bu alanda fotoğraf yok} one {# photo} other {# photos}}",
"map_cannot_get_user_location": "Kullanıcının konumu alınamıyor",
"map_location_dialog_yes": "Evet",
"map_location_picker_page_use_location": "Bu konumu kullan",
@@ -1383,6 +1393,7 @@
"oauth": "OAuth",
"official_immich_resources": "Resmi Immich Kaynakları",
"offline": "Çevrim dışı",
"offset": "Ofset",
"ok": "Tamam",
"oldest_first": "Eski olan önce",
"on_this_device": "Bu cihazda",
@@ -1401,6 +1412,8 @@
"open_the_search_filters": "Arama filtrelerini aç",
"options": "Seçenekler",
"or": "veya",
"organize_into_albums": "Albümler halinde düzenle",
"organize_into_albums_description": "Mevcut senkronizasyon ayarlarını kullanarak mevcut fotoğrafları albümlere ekleyin",
"organize_your_library": "Kütüphanenizi düzenleyin",
"original": "orijinal",
"other": "Diğer",
@@ -1460,6 +1473,8 @@
"permission_onboarding_permission_limited": "Sınırlı izin. Immich'in tüm fotoğrav ve videolarınızı yedeklemesine ve yönetmesine izin vermek için Ayarlar'da fotoğraf ve video izinlerini verin.",
"permission_onboarding_request": "Immich'in fotoğraflarınızı ve videolarınızı görüntüleyebilmesi için izne ihtiyacı var.",
"person": "Kişi",
"person_age_months": "{months, plural, one {# month} other {# months}} eski",
"person_age_year_months": "1 yıl, {months, plural, one {# month} other {# months}} eski",
"person_age_years": "{years, plural, other {# sene}} önce",
"person_birthdate": "{date} tarihinde doğdu",
"person_hidden": "{name}{hidden, select, true { (gizli)} other {}}",
@@ -1500,6 +1515,7 @@
"profile_drawer_client_out_of_date_minor": "Mobil uygulama güncel değil. Lütfen en son sürüme güncelleyin.",
"profile_drawer_client_server_up_to_date": "Uygulama ve sunucu güncel",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Salt okunur mod etkinleştirildi. Çıkmak için kullanıcı avatar simgesine iki kez dokunun.",
"profile_drawer_server_out_of_date_major": "Sunucu güncel değil. Lütfen en son ana sürüme güncelleyin.",
"profile_drawer_server_out_of_date_minor": "Sunucu güncel değil. Lütfen en son sürüme güncelleyin.",
"profile_image_of_user": "{user} kullanıcısının profil resmi",
@@ -1538,6 +1554,7 @@
"purchase_server_description_2": "Destekçi statüsü",
"purchase_server_title": "Sunucu",
"purchase_settings_server_activated": "Sunucu ürün anahtarı, yönetici tarafından yönetilir",
"query_asset_id": "Varlık Kimliği Sorgulama",
"queue_status": "Sırada {count}/{total}",
"rating": "Derecelendirme",
"rating_clear": "Derecelendirmeyi temizle",
@@ -1545,6 +1562,8 @@
"rating_description": "EXIF derecelendirmesini bilgi panelinde göster",
"reaction_options": "Tepki seçenekleri",
"read_changelog": "Değişiklik günlüğünü oku",
"readonly_mode_disabled": "Salt okunur mod devre dışı",
"readonly_mode_enabled": "Salt okunur mod etkin",
"reassign": "Yeniden ata",
"reassigned_assets_to_existing_person": "{count, plural, one {# dosya} other {# dosya}} {name, select, null {mevcut bir kişiye} other {{name}}} atandı",
"reassigned_assets_to_new_person": "{count, plural, one {# dosya} other {# dosya}} yeni bir kişiye atandı",
@@ -1687,7 +1706,7 @@
"search_result_page_new_search_hint": "Yeni Arama",
"search_settings": "Ayarları ara",
"search_state": "Eyalet/İl ara...",
"search_suggestion_list_smart_search_hint_1": "Akıllı arama varsayılan olarak etkindir, meta verileri aramak için syntax kullanın",
"search_suggestion_list_smart_search_hint_1": "Akıllı arama varsayılan olarak etkindir, meta verileri aramak için şu sözdizimini kullanın ",
"search_suggestion_list_smart_search_hint_2": "m:meta-veri-araması",
"search_tags": "Etiketleri ara...",
"search_timezone": "Saat dilimi ara...",
@@ -1714,6 +1733,7 @@
"select_user_for_sharing_page_err_album": "Albüm oluşturulamadı",
"selected": "Seçildi",
"selected_count": "{count, plural, other {# seçildi}}",
"selected_gps_coordinates": "Seçilen GPS Koordinatları",
"send_message": "Mesaj gönder",
"send_welcome_email": "Hoş geldin e-postası gönder",
"server_endpoint": "Sunucu Uç Noktası",
@@ -1896,7 +1916,7 @@
"sync_albums_manual_subtitle": "Yüklenmiş fotoğraf ve videoları yedekleme için seçili albümler ile eşzamanlayın",
"sync_local": "Yerel Senkronizasyon",
"sync_remote": "Uzaktan Senkronizasyon",
"sync_upload_album_setting_subtitle": "Seçili albümleri Immich'te oluşturun ve içindekileri Immich'e yükleyin.",
"sync_upload_album_setting_subtitle": "Fotoğraflarınızı ve videolarınızı oluşturun ve Immich'te seçtiğiniz albümlere yükleyin",
"tag": "Etiket",
"tag_assets": "Dosyaları etiketle",
"tag_created": "Etiket oluşturuldu: {tag}",
@@ -1922,7 +1942,7 @@
"theme_setting_system_primary_color_title": "Sistem rengini kullan",
"theme_setting_system_theme_switch": "Otomatik (sistem ayarına göre)",
"theme_setting_theme_subtitle": "Uygulama teması seç",
"theme_setting_three_stage_loading_subtitle": "Üç aşamalı yükleme, yükleme performansını artırabilir ancak önemli ölçüde daha yüksek ağ yüküne sebep olur.",
"theme_setting_three_stage_loading_subtitle": "Üç aşamalı yükleme, yükleme performansını artırabilir ancak önemli ölçüde daha yüksek ağ yüküne sebep olur",
"theme_setting_three_stage_loading_title": "Üç aşamalı yüklemeyi etkinleştir",
"they_will_be_merged_together": "Birlikte birleştirilecekler",
"third_party_resources": "Üçüncü taraf kaynaklar",
@@ -1985,6 +2005,7 @@
"unstacked_assets_count": "{count, plural, one {# dosya} other {# dosya}} yığını kaldırıldı",
"untagged": "Etiketlenmemiş",
"up_next": "Sıradaki",
"update_location_action_prompt": "Seçilen {count} varlığın konumunu şu şekilde güncelleyin:",
"updated_at": "Güncellenme",
"updated_password": "Şifreyi güncelle",
"upload": "Yükle",
@@ -2051,6 +2072,7 @@
"view_next_asset": "Sonraki dosyayı görüntüle",
"view_previous_asset": "Önceki dosyayı görüntüle",
"view_qr_code": "QR kodu görüntüle",
"view_similar_photos": "Benzer fotoğrafları görüntüle",
"view_stack": "Yığını görüntüle",
"view_user": "Kullanıcıyı Görüntüle",
"viewer_remove_from_stack": "Yığından Kaldır",

View File

@@ -39,7 +39,7 @@
"admin": {
"add_exclusion_pattern_description": "Додайте шаблони виключень. Підстановка з використанням *, ** та ? підтримується. Для ігнорування всіх файлів у будь-якому каталозі з ім'ям «Raw», використовуйте \"**/Raw/**\". Для ігнорування всіх файлів, що закінчуються на \".tif\", використовуйте \"**/*.tif\". Для ігнорування абсолютного шляху використовуйте \"/path/to/ignore/**\".",
"admin_user": "Адміністратор",
"asset_offline_description": "Цей файл зовнішньої бібліотеки не знайдено на диску і був переміщений до смітника. Якщо файл був переміщений у межах бібліотеки, перевірте свою стрічку на наявність нового відповідного файлу. Щоб відновити цей файл, переконайтеся, що шлях до файлу доступний для Immich, і проскануйте бібліотеку.",
"asset_offline_description": "Цей файл зовнішньої бібліотеки не знайдено на диску і був переміщений до кошика. Якщо файл був переміщений у межах бібліотеки, перевірте свою стрічку на наявність нового відповідного файлу. Щоб відновити цей файл, переконайтеся, що шлях до файлу доступний для Immich, і проскануйте бібліотеку.",
"authentication_settings": "Налаштування аутентифікації",
"authentication_settings_description": "Управління паролями, OAuth та іншими налаштуваннями аутентифікації",
"authentication_settings_disable_all": "Ви впевнені, що хочете вимкнути всі методи входу? Вхід буде повністю вимкнений.",
@@ -70,14 +70,14 @@
"cron_expression_description": "Встановіть інтервал сканування, використовуючи формат cron. Для отримання додаткової інформації зверніться до напр. <link>Crontab Guru</link>",
"cron_expression_presets": "Попередні налаштування cron виразів",
"disable_login": "Вимкнути вхід",
"duplicate_detection_job_description": "Запустити машинне навчання на активах для виявлення схожих зображень. Залежить від інтелектуального пошуку",
"duplicate_detection_job_description": "Запустити машинне навчання на ресурсах для виявлення схожих зображень. Використовує інтелектуальний пошук",
"exclusion_pattern_description": "Шаблони виключень дозволяють ігнорувати файли та папки під час сканування вашої бібліотеки. Це корисно, якщо у вас є папки, які містять файли, які ви не хочете імпортувати, наприклад, RAW-файли.",
"external_library_management": "Керування зовнішніми бібліотеками",
"face_detection": "Виявлення обличчя",
"face_detection_description": "Виявлення облич на медіафайлах за допомогою машинного навчання. Для відео обробляється лише ескіз. \"Оновити\" повторно обробляє всі файли. \"Скинути\" додатково очищає всі поточні дані про обличчя. \"Відсутні\" ставить у чергу файли, які ще не були оброблені. Виявлені обличчя будуть поставлені в чергу для розпізнавання після завершення виявлення, групуючи їх у вже існуючих або нових людей.",
"facial_recognition_job_description": "Групування виявлених облич у людей. Цей крок виконується після завершення виявлення облич. \"Скинути\" повторно кластеризує всі обличчя. \"Відсутні\" ставить у чергу обличчя, яким ще не призначено людину.",
"failed_job_command": "Команда {command} не виконалася для завдання: {job}",
"force_delete_user_warning": "ПОПЕРЕДЖЕННЯ: Це негайно призведе до видалення користувача і всіх активів. Цю дію не можна скасувати, і файли не можна буде відновити.",
"force_delete_user_warning": "ПОПЕРЕДЖЕННЯ: Це негайно призведе до видалення користувача і всіх ресурсів. Цю дію не можна скасувати, і файли не можна буде відновити.",
"image_format": "Формат",
"image_format_description": "Формат WebP виробляє меньші файлів, ніж JPEG, але його кодування вимагає більше часу.",
"image_fullsize_description": "Повнорозмірне зображення з видаленими метаданими, які використовуються під час збільшення",
@@ -261,7 +261,7 @@
"sidecar_job_description": "Виявлення або синхронізація метаданих додатків з файлової системи",
"slideshow_duration_description": "Кількість секунд для відображення кожного зображення",
"smart_search_job_description": "Запуск машинного навчання для ресурсів для підтримки розумного пошуку",
"storage_template_date_time_description": "Позначка часу створення активу використовується для інформації про дату й час",
"storage_template_date_time_description": "Позначка часу створення ресурсу використовується для інформації про дату й час",
"storage_template_date_time_sample": "Час вибірки {date}",
"storage_template_enable_description": "Ввімкнути механізм шаблонів сховища",
"storage_template_hash_verification_enabled": "Увімкнено перевірку хешу",
@@ -353,11 +353,11 @@
"transcoding_two_pass_encoding_setting_description": "Транскодування за двома проходами для отримання кращих закодованих відео. Коли ввімкнено максимальний бітрейт (необхідний для роботи з H.264 та HEVC), цей режим використовує діапазон бітрейту, заснований на максимальному бітрейті, і ігнорує CRF. Для VP9 можна використовувати CRF, якщо вимкнено максимальний бітрейт.",
"transcoding_video_codec": "Відеокодек",
"transcoding_video_codec_description": "VP9 має високу ефективність і сумісність з вебом, але потребує більше часу на транскодування. HEVC працює схоже, але має меншу сумісність з вебом. H.264 має широку сумісність і швидко транскодується, але створює значно більші файли. AV1 - найефективніший кодек, але не підтримується на старіших пристроях.",
"trash_enabled_description": "Увімкнення смітника",
"trash_enabled_description": "Увімкнення кошика",
"trash_number_of_days": "Кількість днів",
"trash_number_of_days_description": "Кількість днів, щоб залишити ресурси в смітнику перед остаточним їх видаленням",
"trash_settings": "Налаштування смітника",
"trash_settings_description": "Керування налаштуваннями смітника",
"trash_number_of_days_description": "Кількість днів, протягом якої залишати ресурси в кошику перед їх остаточним видаленням",
"trash_settings": "Налаштування кошика",
"trash_settings_description": "Керування налаштуваннями кошика",
"unlink_all_oauth_accounts": "Від’єднати всі облікові записи OAuth",
"unlink_all_oauth_accounts_description": "Не забудьте від’єднати всі облікові записи OAuth перед переходом до нового постачальника.",
"unlink_all_oauth_accounts_prompt": "Ви впевнені, що хочете від’єднати всі облікові записи OAuth? Це скине ідентифікатор OAuth для кожного користувача, і цю дію не можна буде скасувати.",
@@ -389,7 +389,7 @@
"advanced": "Розширені",
"advanced_settings_beta_timeline_subtitle": "Випробуйте новий інтерфейс застосунку",
"advanced_settings_beta_timeline_title": "Бета-версія стрічки",
"advanced_settings_enable_alternate_media_filter_subtitle": "Використовуйте цей варіант для фільтрації медіафайлів під час синхронізації за альтернативними критеріями. Спробуйте це, якщо у вас виникають проблеми з тим, що додаток не виявляє всі альбоми.",
"advanced_settings_enable_alternate_media_filter_subtitle": "Використовуйте цей варіант для фільтрації медіафайлів під час синхронізації за альтернативними критеріями. Спробуйте це, якщо у вас виникають проблеми з тим, що застосунок не виявляє всі альбоми.",
"advanced_settings_enable_alternate_media_filter_title": "[ЕКСПЕРИМЕНТАЛЬНИЙ] Використовуйте альтернативний фільтр синхронізації альбомів пристрою",
"advanced_settings_log_level_title": "Рівень логування: {level}",
"advanced_settings_prefer_remote_subtitle": "Деякі пристрої вельми повільно завантажують мініатюри із елементів на пристрої. Активуйте цей параметр, щоб завантажувати зображення з серверу.",
@@ -491,11 +491,11 @@
"asset_list_layout_sub_title": "Розмітка",
"asset_list_settings_subtitle": "Налаштування вигляду сітки фото",
"asset_list_settings_title": "Фото-сітка",
"asset_offline": "Актив вимкнено",
"asset_offline_description": "Цей зовнішній актив більше не знайдено на диску. Будь ласка, зверніться до адміністратора Immich за допомогою.",
"asset_offline": "Ресурс офлайн",
"asset_offline_description": "Цей зовнішній ресурс більше не знайдено на диску. Будь ласка, зверніться до адміністратора Immich за допомогою.",
"asset_restored_successfully": "Елемент успішно відновлено",
"asset_skipped": "Пропущено",
"asset_skipped_in_trash": "У смітнику",
"asset_skipped_in_trash": "У кошику",
"asset_uploaded": "Завантажено",
"asset_uploading": "Завантаження…",
"asset_viewer_settings_subtitle": "Керуйте налаштуваннями переглядача галереї",
@@ -503,26 +503,26 @@
"assets": "елементи",
"assets_added_count": "Додано {count, plural, one {# ресурс} few {# ресурси} other {# ресурсів}}",
"assets_added_to_album_count": "Додано {count, plural, one {# ресурс} few {# ресурси} other {# ресурсів}} до альбому",
"assets_added_to_albums_count": "Додано {assetTotal, plural, one {# актив} other {# активи}} до {albumTotal, plural, one {# альбом} other {# альбом}}",
"assets_added_to_albums_count": "Додано {assetTotal, plural, one {# ресурс} other {# ресурси}} до {albumTotal, plural, one {# альбом} other {# альбом}}",
"assets_cannot_be_added_to_album_count": "{count, plural, one {Ресурс} other {Ресурси}} не можна додати до альбому",
"assets_cannot_be_added_to_albums": "{count, plural, one {Актив} other {Активи}} не можна додати до жодного з альбомів",
"assets_cannot_be_added_to_albums": "{count, plural, one {Елемент} other {Елементи}} не можна додати до жодного з альбомів",
"assets_count": "{count, plural, one {# ресурс} few {# ресурси} other {# ресурсів}}",
"assets_deleted_permanently": "{count} елемент(и) остаточно видалено",
"assets_deleted_permanently_from_server": "{count} елемент(и) видалено назавжди з сервера Immich",
"assets_downloaded_failed": "{count, plural, one {Завантажено # файл — {error} файл не вдалося} other {Завантажено # файлів — {error} файлів не вдалося}}",
"assets_downloaded_successfully": "{count, plural, one {Успішно завантажено # файл} other {Успішно завантажено # файлів}}",
"assets_moved_to_trash_count": "Переміщено {count, plural, one {# ресурс} few {# ресурси} other {# ресурсів}} у смітник",
"assets_moved_to_trash_count": "Переміщено {count, plural, one {# ресурс} few {# ресурси} other {# ресурсів}} у кошик",
"assets_permanently_deleted_count": "Остаточно видалено {count, plural, one {# ресурс} few {# ресурси} other {# ресурсів}}",
"assets_removed_count": "Вилучено {count, plural, one {# ресурс} few {# ресурси} other {# ресурсів}}",
"assets_removed_permanently_from_device": "{count} елемент(и) видалені назавжди з вашого пристрою",
"assets_restore_confirmation": "Ви впевнені, що хочете відновити всі свої активи з смітника? Цю дію не можна скасувати! Зверніть увагу, що будь-які офлайн-активи не можуть бути відновлені таким чином.",
"assets_restore_confirmation": "Ви впевнені, що хочете відновити всі свої елементи з кошика? Цю дію не можна скасувати! Зверніть увагу, що жодні офлайн ресурси не можуть бути відновлені таким чином.",
"assets_restored_count": "Відновлено {count, plural, one {# ресурс} few {# ресурси} other {# ресурсів}}",
"assets_restored_successfully": "{count} елемент(и) успішно відновлено",
"assets_trashed": "{count} елемент(и) поміщено до кошика",
"assets_trashed_count": "Поміщено в смітник {count, plural, one {# ресурс} few {# ресурси} other {# ресурсів}}",
"assets_trashed_count": "Поміщено в кошик {count, plural, one {# ресурс} few {# ресурси} other {# ресурсів}}",
"assets_trashed_from_server": "{count} елемент(и) поміщено до кошика на сервері Immich",
"assets_were_part_of_album_count": "{count, plural, one {Ресурс був} few {Ресурси були} other {Ресурси були}} вже частиною альбому",
"assets_were_part_of_albums_count": "{count, plural, one {Актив був} other {Активи були}} вже є частиною альбомів",
"assets_were_part_of_albums_count": "{count, plural, one {Елемент вже був} other {Елементи вже були}} частиною альбомів",
"authorized_devices": "Авторизовані пристрої",
"automatic_endpoint_switching_subtitle": "Підключатися локально через зазначену Wi-Fi мережу, коли це можливо, і використовувати альтернативні з'єднання в інших випадках",
"automatic_endpoint_switching_title": "Автоматичне перемикання URL",
@@ -597,8 +597,6 @@
"backup_setting_subtitle": "Управління налаштуваннями завантаження у фоновому та активному режимі",
"backup_settings_subtitle": "Керування налаштуваннями завантаження",
"backward": "Зворотній",
"beta_sync": "Стан бета-синхронізації",
"beta_sync_subtitle": "Налаштування нової системи синхронізації",
"biometric_auth_enabled": "Біометрична автентифікація увімкнена",
"biometric_locked_out": "Вам закрито доступ до біометричної автентифікації",
"biometric_no_options": "Біометричні параметри недоступні",
@@ -611,12 +609,12 @@
"build_image": "Версія збірки",
"bulk_delete_duplicates_confirmation": "Ви впевнені, що хочете масово видалити {count, plural, one {# дубльований ресурс} few {# дубльовані ресурси} other {# дубльованих ресурсів}}? Це дія залишить найбільший ресурс у кожній групі і остаточно видалить всі інші дублікати. Цю дію неможливо скасувати!",
"bulk_keep_duplicates_confirmation": "Ви впевнені, що хочете залишити {count, plural, one {# дубльований ресурс} few {# дубльовані ресурси} other {# дубльованих ресурсів}}? Це дозволить вирішити всі групи дублікатів без видалення чого-небудь.",
"bulk_trash_duplicates_confirmation": "Ви впевнені, що хочете викинути в смітник {count, plural, one {# дубльований ресурс} few {# дубльовані ресурси} other {# дубльованих ресурсів}} масово? Це залишить найбільший ресурс у кожній групі і викине в смітник всі інші дублікати.",
"bulk_trash_duplicates_confirmation": "Ви впевнені, що хочете викинути в кошик {count, plural, one {# дубльований ресурс} few {# дубльовані ресурси} other {# дубльованих ресурсів}} масово? Це залишить найбільший ресурс у кожній групі і викине в кошик всі інші дублікати.",
"buy": "Придбайте Immich",
"cache_settings_clear_cache_button": "Очистити кеш",
"cache_settings_clear_cache_button_title": "Очищає кеш програми. Це суттєво знизить продуктивність програми, доки кеш не буде перебудовано.",
"cache_settings_duplicated_assets_clear_button": "ОЧИСТИТИ",
"cache_settings_duplicated_assets_subtitle": "Фото та відео, які додаток ігнорує",
"cache_settings_duplicated_assets_subtitle": "Фото та відео, які ігноруються застосунком",
"cache_settings_duplicated_assets_title": "Дубльовані елементи ({count})",
"cache_settings_statistics_album": "Бібліотечні мініатюри",
"cache_settings_statistics_full": "Повнорзомірні зображення",
@@ -656,9 +654,9 @@
"change_pin_code": "Змінити PIN-код",
"change_your_password": "Змініть свій пароль",
"changed_visibility_successfully": "Видимість успішно змінено",
"check_corrupt_asset_backup": "Перевірити на пошкоджені резервні копії активів",
"check_corrupt_asset_backup": "Перевірити на пошкоджені резервні копії ресурсів",
"check_corrupt_asset_backup_button": "Виконати перевірку",
"check_corrupt_asset_backup_description": "Запустіть цю перевірку лише через Wi-Fi та після того, як всі активи будуть завантажені на сервер. Процес може зайняти кілька хвилин.",
"check_corrupt_asset_backup_description": "Запустити цю перевірку лише через Wi-Fi та після того, як всі ресурси будуть завантажені на сервер. Процес може зайняти кілька хвилин.",
"check_logs": "Перевірити журнали",
"choose_matching_people_to_merge": "Виберіть людей для об'єднання",
"city": "Місто",
@@ -691,7 +689,7 @@
"completed": "Завершено",
"confirm": "Підтвердіть",
"confirm_admin_password": "Підтвердити пароль адміністратора",
"confirm_delete_face": "Ви впевнені, що хочете видалити обличчя {name} з активу?",
"confirm_delete_face": "Ви впевнені, що хочете видалити обличчя {name} з елементу?",
"confirm_delete_shared_link": "Ви впевнені, що хочете видалити це спільне посилання?",
"confirm_keep_this_delete_others": "Усі інші ресурси в стеку буде видалено, окрім цього ресурсу. Ви впевнені, що хочете продовжити?",
"confirm_new_pin_code": "Підтвердьте новий PIN-код",
@@ -732,7 +730,7 @@
"create_link_to_share_description": "Дозволити перегляд вибраних фотографій за посиланням будь-кому",
"create_new": "СТВОРИТИ НОВИЙ",
"create_new_person": "Створити нову особу",
"create_new_person_hint": "Призначити обраним активам нову особу",
"create_new_person_hint": "Призначити обраним елементам нову особу",
"create_new_user": "Створити нового користувача",
"create_shared_album_page_share_add_assets": "ДОДАТИ ЕЛЕМЕНТИ",
"create_shared_album_page_share_select_photos": "Вибрати фото",
@@ -797,7 +795,7 @@
"delete_tag_confirmation_prompt": "Ви впевнені, що хочете видалити тег {tagName}?",
"delete_user": "Видалити користувача",
"deleted_shared_link": "Видалено загальне посилання",
"deletes_missing_assets": "Видаляє активи, які відсутні на диску",
"deletes_missing_assets": "Видаляє ресурси, які відсутні на диску",
"description": "Опис",
"description_input_hint_text": "Додати опис...",
"description_input_submit_error": "Помилка оновлення опису, перевірте логи для подробиць",
@@ -877,8 +875,8 @@
"email": "Електронна пошта",
"email_notifications": "Сповіщення ел. поштою",
"empty_folder": "Ця папка порожня",
"empty_trash": "Очистити смітник",
"empty_trash_confirmation": "Ви впевнені, що хочете очистити смітник? Це остаточно видалить всі ресурси в смітнику з Immich.\nЦю дію не можна скасувати!",
"empty_trash": "Очистити кошик",
"empty_trash_confirmation": "Ви впевнені, що хочете очистити кошик? Це остаточно видалить всі ресурси в кошику з Immich.\nЦю дію не можна скасувати!",
"enable": "Увімкнути",
"enable_backup": "Увімкнути резервне копіювання",
"enable_biometric_auth_description": "Введіть свій PIN-код, щоб увімкнути біометричну автентифікацію",
@@ -890,7 +888,7 @@
"enter_your_pin_code_subtitle": "Введіть свій PIN-код, щоб отримати доступ до особистої папки",
"error": "Помилка",
"error_change_sort_album": "Не вдалося змінити порядок сортування альбому",
"error_delete_face": "Помилка при видаленні обличчя з активу",
"error_delete_face": "Помилка при видаленні обличчя з елементу",
"error_loading_image": "Помилка завантаження зображення",
"error_saving_image": "Помилка: {error}",
"error_tag_face_bounding_box": "Помилка під час позначення обличчя не вдалося отримати координати рамки",
@@ -967,7 +965,7 @@
"unable_to_download_files": "Неможливо завантажити файли",
"unable_to_edit_exclusion_pattern": "Не вдалося редагувати шаблон виключення",
"unable_to_edit_import_path": "Неможливо відредагувати шлях імпорту",
"unable_to_empty_trash": "Неможливо очистити смітник",
"unable_to_empty_trash": "Неможливо очистити кошик",
"unable_to_enter_fullscreen": "Неможливо увійти в повноекранний режим",
"unable_to_exit_fullscreen": "Неможливо вийти з повноекранного режиму",
"unable_to_get_comments_number": "Не вдалося отримати кількість коментарів",
@@ -991,7 +989,7 @@
"unable_to_reset_password": "Не вдається скинути пароль",
"unable_to_reset_pin_code": "Неможливо скинути PIN-код",
"unable_to_resolve_duplicate": "Не вдається вирішити дублікат",
"unable_to_restore_assets": "Неможливо відновити активи",
"unable_to_restore_assets": "Неможливо відновити елементи",
"unable_to_restore_trash": "Не вдалося відновити вміст",
"unable_to_restore_user": "Не вдається відновити користувача",
"unable_to_save_album": "Не вдається зберегти альбом",
@@ -1005,7 +1003,7 @@
"unable_to_set_feature_photo": "Не вдалося встановити фотографію на обкладинку",
"unable_to_set_profile_picture": "Не вдається встановити зображення профілю",
"unable_to_submit_job": "Не вдалося відправити завдання",
"unable_to_trash_asset": "Неможливо вилучити актив",
"unable_to_trash_asset": "Неможливо видалити елемент",
"unable_to_unlink_account": "Не вдається відв'язати обліковий запис",
"unable_to_unlink_motion_video": "Не вдається від'єднати рухоме відео",
"unable_to_update_album_cover": "Неможливо оновити обкладинку альбому",
@@ -1043,7 +1041,7 @@
"external": "Зовнішні",
"external_libraries": "Зовнішні бібліотеки",
"external_network": "Зовнішня мережа",
"external_network_sheet_info": "Коли ви не підключені до переважної мережі Wi-Fi, додаток підключатиметься до сервера через першу з наведених нижче URL-адрес, яку він зможе досягти, починаючи зверху вниз",
"external_network_sheet_info": "Коли ви не підключені до обраної мережі Wi-Fi, застосунок підключатиметься до сервера через першу з наведених нижче URL-адрес, яку він зможе досягти, починаючи зверху вниз",
"face_unassigned": "Не призначено",
"failed": "Не вдалося",
"failed_to_authenticate": "Помилка автентифікації",
@@ -1076,10 +1074,7 @@
"gcast_enabled": "Google Cast'",
"gcast_enabled_description": "Ця функція завантажує зовнішні ресурси з Google для своєї роботи.",
"general": "Загальні",
"geolocation_instruction_all_have_location": "Усі об’єкти для цієї дати вже мають дані про місцезнаходження. Спробуйте показати всі об’єкти або виберіть іншу дату",
"geolocation_instruction_location": "Натисніть на об'єкт із GPS-координатами, щоб використати його місцезнаходження, або виберіть місцезнаходження безпосередньо на карті",
"geolocation_instruction_no_date": "Виберіть дату для керування даними про місцезнаходження для фотографій і відео за цей день",
"geolocation_instruction_no_photos": "Для цієї дати не знайдено фотографій чи відео. Виберіть іншу дату, щоб показати їх",
"get_help": "Отримати допомогу",
"get_wifiname_error": "Не вдалося отримати назву Wi-Fi. Переконайтеся, що ви надали необхідні дозволи та підключені до Wi-Fi мережі",
"getting_started": "Початок",
@@ -1160,7 +1155,7 @@
"in_archive": "В архіві",
"include_archived": "Відображати архів",
"include_shared_albums": "Включити спільні альбоми",
"include_shared_partner_assets": "Включайте спільні партнерські активи",
"include_shared_partner_assets": "Включайте спільні партнерські ресурси",
"individual_share": "Індивідуальний доступ",
"individual_shares": "Окремі спільні доступи",
"info": "Інформація",
@@ -1224,7 +1219,7 @@
"local_asset_cast_failed": "Неможливо транслювати ресурс, який не завантажено на сервер",
"local_assets": "Локальні фото та відео",
"local_network": "Локальна мережа",
"local_network_sheet_info": "Додаток підключатиметься до сервера через цей URL, коли використовується вказана Wi-Fi мережа",
"local_network_sheet_info": "Застосунок підключатиметься до сервера через цей URL, коли використовується вказана Wi-Fi мережа",
"location_permission": "Дозвіл до місцезнаходження",
"location_permission_content": "Щоб перемикати мережі у фоновому режимі, Immich має завжди мати доступ до точної геолокації, щоб зчитувати назву Wi-Fi мережі",
"location_picker_choose_on_map": "Обрати на мапі",
@@ -1335,9 +1330,9 @@
"move_to_lock_folder_action_prompt": "{count} додано до захищеної теки",
"move_to_locked_folder": "Перемістити до особистої папки",
"move_to_locked_folder_confirmation": "Ці фото та відео буде видалено зі всіх альбомів і їх можна буде переглядати лише в особистій папці",
"moved_to_archive": "Переміщено {count, plural, one {# актив} other {# активів}} в архів",
"moved_to_library": "Переміщено {count, plural, one {# актив} other {# активів}} в бібліотеку",
"moved_to_trash": "Перенесено до смітника",
"moved_to_archive": "Переміщено {count, plural, one {# елемент} other {# елементів}} в архів",
"moved_to_library": "Переміщено {count, plural, one {# елемент} other {# елементів}} в бібліотеку",
"moved_to_trash": "Перенесено до кошика",
"multiselect_grid_edit_date_time_err_read_only": "Неможливо редагувати дату елементів лише для читання, пропущено",
"multiselect_grid_edit_gps_err_read_only": "Неможливо редагувати місцезнаходження елементів лише для читання, пропущено",
"mute_memories": "Приглушити спогади",
@@ -1417,6 +1412,8 @@
"open_the_search_filters": "Відкрийте фільтри пошуку",
"options": "Налаштування",
"or": "або",
"organize_into_albums": "Упорядкувати в альбоми",
"organize_into_albums_description": "Помістити наявні фотографії в альбоми, використовуючи поточні налаштування синхронізації",
"organize_your_library": "Організуйте свою бібліотеку",
"original": "оригінал",
"other": "Інше",
@@ -1514,11 +1511,11 @@
"privacy": "Конфіденційність",
"profile": "Профіль",
"profile_drawer_app_logs": "Журнал",
"profile_drawer_client_out_of_date_major": "Мобільний додаток застарів. Будь ласка, оновіть до останньої мажорної версії.",
"profile_drawer_client_out_of_date_minor": "Мобільний додаток застарів. Будь ласка, оновіть до останньої мінорної версії.",
"profile_drawer_client_out_of_date_major": "Мобільний застосунок застарів. Будь ласка, оновіть до останньої мажорної версії.",
"profile_drawer_client_out_of_date_minor": "Мобільний застосунок застарів. Будь ласка, оновіть до останньої мінорної версії.",
"profile_drawer_client_server_up_to_date": "Клієнт та сервер — актуальні",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Режим лише для читання ввімкнено. Двічі торкніться значка аватара користувача, щоб вийти.",
"profile_drawer_readonly_mode": "Режим лише для читання ввімкнено. Щоб вийти, довго натисніть значок аватара користувача.",
"profile_drawer_server_out_of_date_major": "Сервер застарів. Будь ласка, оновіть до останньої мажорної версії.",
"profile_drawer_server_out_of_date_minor": "Сервер застарів. Будь ласка, оновіть до останньої мінорної версії.",
"profile_image_of_user": "Зображення профілю {user}",
@@ -1557,6 +1554,7 @@
"purchase_server_description_2": "Статус підтримки",
"purchase_server_title": "Сервер",
"purchase_settings_server_activated": "Ключ продукту сервера керується адміністратором",
"query_asset_id": "Ідентифікатор ресурсу запиту",
"queue_status": "У черзі {count} з {total}",
"rating": "Зоряний рейтинг",
"rating_clear": "Очистити рейтинг",
@@ -1614,7 +1612,7 @@
"removed_from_favorites_count": "{count, plural, other {Видалено #}} з обраних",
"removed_memory": "Видалена пам'ять",
"removed_photo_from_memory": "Фото видалене з пам'яті",
"removed_tagged_assets": "Видалено тег із {count, plural, one {# активу} other {# активів}}",
"removed_tagged_assets": "Видалено тег із {count, plural, one {# елементу} other {# елементів}}",
"rename": "Перейменувати",
"repair": "Ремонт",
"repair_no_results_message": "Невідстежувані та відсутні файли будуть відображені тут",
@@ -1638,10 +1636,11 @@
"resolved_all_duplicates": "Усі дублікати усунуто",
"restore": "Відновити",
"restore_all": "Відновити все",
"restore_trash_action_prompt": "{count} відновлено зі смітника",
"restore_trash_action_prompt": "{count} відновлено з кошика",
"restore_user": "Відновити користувача",
"restored_asset": "Відновлений актив",
"restored_asset": "Відновлений ресурс",
"resume": "Продовжити",
"resume_paused_jobs": "Резюме {count, plural, one {# призупинене завдання} other {# призупинені завдання}}",
"retry_upload": "Повторити завантаження",
"review_duplicates": "Переглянути дублікати",
"review_large_files": "Перегляд великих файлів",
@@ -1735,7 +1734,7 @@
"select_user_for_sharing_page_err_album": "Не вдалося створити альбом",
"selected": "Обрано",
"selected_count": "{count, plural, one {# обраний} other {# обраних}}",
"selected_gps_coordinates": "вибрані GPS-координати",
"selected_gps_coordinates": "Вибрані GPS-координати",
"send_message": "Надіслати повідомлення",
"send_welcome_email": "Надішліть вітальний лист",
"server_endpoint": "Кінцева точка сервера",
@@ -1846,10 +1845,8 @@
"shift_to_permanent_delete": "натисніть ⇧ щоб видалити об'єкт назавжди",
"show_album_options": "Показати параметри альбому",
"show_albums": "Показувати альбоми",
"show_all_assets": "Показати всі ресурси",
"show_all_people": "Показати всіх людей",
"show_and_hide_people": "Показати та приховати людей",
"show_assets_without_location": "Показати активи без місцезнаходження",
"show_file_location": "Показати розташування файлу",
"show_gallery": "Показати галерею",
"show_hidden_people": "Показати прихованих людей",
@@ -1920,6 +1917,8 @@
"sync_albums_manual_subtitle": "Синхронізувати всі завантажені фото та відео у вибрані альбоми для резервного копіювання",
"sync_local": "Синхронізувати на пристрої",
"sync_remote": "Синхронізувати з сервером",
"sync_status": "Стан синхронізації",
"sync_status_subtitle": "Перегляд та керування системою синхронізації",
"sync_upload_album_setting_subtitle": "Створюйте та завантажуйте свої фотографії та відео до вибраних альбомів на сервер Immich",
"tag": "Тег",
"tag_assets": "Додати теги",
@@ -1928,7 +1927,7 @@
"tag_not_found_question": "Не вдається знайти тег? <link>Створити новий тег.</link>",
"tag_people": "Тег людей",
"tag_updated": "Оновлено тег: {tag}",
"tagged_assets": "Позначено тегом {count, plural, one {# актив} other {# активи}}",
"tagged_assets": "Позначено тегом {count, plural, one {# ресурс} other {# ресурси}}",
"tags": "Теги",
"tap_to_run_job": "Торкніться, щоб запустити завдання",
"template": "Шаблон",
@@ -1960,25 +1959,26 @@
"to_multi_select": "для багаторазового вибору",
"to_parent": "Повернутись назад",
"to_select": "вибрати",
"to_trash": "Смітник",
"to_trash": "Кошик",
"toggle_settings": "Перемикання налаштувань",
"total": "Усього",
"total_usage": "Загальне використання",
"trash": "Смітник",
"trash_action_prompt": "{count} переміщено до смітника",
"trash": "Кошик",
"trash_action_prompt": "{count} переміщено до кошика",
"trash_all": "Видалити все",
"trash_count": "Видалити {count, number}",
"trash_delete_asset": "Смітник/Видалити ресурс",
"trash_emptied": "Кошик очищений",
"trash_delete_asset": "У кошик/Видалити ресурс",
"trash_emptied": "Кошик очищено",
"trash_no_results_message": "Тут з'являтимуться видалені фото та відео.",
"trash_page_delete_all": "Видалити усі",
"trash_page_delete_all": "Видалити усе",
"trash_page_empty_trash_dialog_content": "Ви хочете очистити кошик? Ці елементи будуть остаточно видалені з Immich",
"trash_page_info": "Поміщені у кошик елементи буде остаточно видалено через {days} днів",
"trash_page_no_assets": "Віддалені елементи відсутні",
"trash_page_restore_all": "Відновити усі",
"trash_page_select_assets_btn": "Вибрані елементи",
"trash_page_no_assets": "Видалені елементи відсутні",
"trash_page_restore_all": "Відновити усе",
"trash_page_select_assets_btn": "Вибрати елементи",
"trash_page_title": "Кошик ({count})",
"trashed_items_will_be_permanently_deleted_after": "Видалені елементи будуть остаточно видалені через {days, plural, one {# день} few {# дні} many {# днів} other {# днів}}.",
"troubleshoot": "Виправлення неполадок",
"type": "Тип",
"unable_to_change_pin_code": "Неможливо змінити PIN-код",
"unable_to_setup_pin_code": "Неможливо налаштувати PIN-код",
@@ -2034,7 +2034,6 @@
"use_biometric": "Використовувати біометрію",
"use_current_connection": "використовувати поточне підключення",
"use_custom_date_range": "Використовувати користувацький діапазон дат",
"use_this_location": "Натисніть, щоб використовувати місцезнаходження",
"user": "Користувач",
"user_has_been_deleted": "Користувача видалено.",
"user_id": "ID Користувача",
@@ -2077,6 +2076,7 @@
"view_next_asset": "Переглянути наступний ресурс",
"view_previous_asset": "Переглянути попередній ресурс",
"view_qr_code": "Переглянути QR-код",
"view_similar_photos": "Переглянути схожі фотографії",
"view_stack": "Перегляд стеку",
"view_user": "Переглянути користувача",
"viewer_remove_from_stack": "Видалити зі стеку",

View File

@@ -558,8 +558,6 @@
"backup_setting_subtitle": "Quản lý cài đặt tải lên ở chế độ nền và khi đang mở",
"backup_settings_subtitle": "Cài đặt việc tải lên",
"backward": "Lùi lại",
"beta_sync": "Trạng thái đồng bộ Beta",
"beta_sync_subtitle": "Hệ thống đồng mới",
"biometric_auth_enabled": "Đã bật xác thực sinh trắc học",
"biometric_locked_out": "Bạn đã bị khóa xác thực bằng sinh trắc học",
"biometric_no_options": "Không có tùy chọn bằng sinh trắc học",

View File

@@ -396,6 +396,8 @@
"advanced_settings_prefer_remote_title": "偏好遠端影像",
"advanced_settings_proxy_headers_subtitle": "定義 Immich 在每次網路請求時應該發送的代理標頭",
"advanced_settings_proxy_headers_title": "代理標頭",
"advanced_settings_readonly_mode_subtitle": "開啟唯讀模式後,照片只能瀏覽,像是多選影像、分享、投放、刪除等功能都會關閉。可在主畫面透過使用者頭像來開啟/關閉唯讀模式",
"advanced_settings_readonly_mode_title": "唯讀模式",
"advanced_settings_self_signed_ssl_subtitle": "略過伺服器端點的 SSL 憑證驗證。自簽憑證時必須啟用此設定。",
"advanced_settings_self_signed_ssl_title": "允許自簽的 SSL 憑證",
"advanced_settings_sync_remote_deletions_subtitle": "當在網頁端執行刪除或還原操作時,自動在此裝置上刪除或還原該媒體",
@@ -577,7 +579,7 @@
"backup_controller_page_start_backup": "開始備份",
"backup_controller_page_status_off": "前台自動備份已關閉",
"backup_controller_page_status_on": "前台自動備份已開啟",
"backup_controller_page_storage_format": "{used} 中的 {total} 已使用",
"backup_controller_page_storage_format": "{used} / {total} 已使用",
"backup_controller_page_to_backup": "要備份的相簿",
"backup_controller_page_total_sub": "已選取相簿中的所有不重複的照片與影片",
"backup_controller_page_turn_off": "關閉前台備份",
@@ -594,8 +596,6 @@
"backup_setting_subtitle": "管理背景與前台上傳設定",
"backup_settings_subtitle": "管理上傳設定",
"backward": "由舊至新",
"beta_sync": "測試版同步狀態",
"beta_sync_subtitle": "管理新的同步系統",
"biometric_auth_enabled": "生物辨識驗證已啟用",
"biometric_locked_out": "您已被鎖定無法使用生物辨識驗證",
"biometric_no_options": "沒有生物辨識選項可用",
@@ -1073,6 +1073,7 @@
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "此功能需要從 Google 載入外部資源才能正常運作。",
"general": "一般",
"geolocation_instruction_location": "點擊具有 GPS 座標的項目以使用其位置,或直接從地圖中選擇地點",
"get_help": "線上求助",
"get_wifiname_error": "無法取得 Wi-Fi 名稱。請確認您已授予必要的權限,並已連接至 Wi-Fi 網路",
"getting_started": "開始使用",
@@ -1262,6 +1263,7 @@
"main_branch_warning": "您現在使用的是開發版本;我們強烈您建議使用正式發行版!",
"main_menu": "主頁面",
"make": "製造商",
"manage_geolocation": "管理位置",
"manage_shared_links": "管理共享連結",
"manage_sharing_with_partners": "管理與親朋好友的分享",
"manage_the_app_settings": "管理應用程式設定",
@@ -1468,7 +1470,7 @@
"person": "人物",
"person_age_months": "{months, plural, one {# 個月} other {# 個月}}前",
"person_age_year_months": "1 年 {months, plural, one {# 個月} other {# 個月}}前",
"person_age_years": "{years, plural, other {# }}",
"person_age_years": "{years, plural, other {# }}",
"person_birthdate": "生於 {date}",
"person_hidden": "{name}{hidden, select, true {(隱藏)} other {}}",
"photo_shared_all_users": "看來您與所有使用者分享了照片,或沒有其他使用者可供分享。",
@@ -1508,6 +1510,7 @@
"profile_drawer_client_out_of_date_minor": "客戶端有小版本升級,請盡快升級至最新版。",
"profile_drawer_client_server_up_to_date": "客戶端和服務端都是最新的",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "唯讀模式已開啟。請連點兩下使用者頭像圖示以退出。",
"profile_drawer_server_out_of_date_major": "服務端有大版本升級,請盡快升級至最新版。",
"profile_drawer_server_out_of_date_minor": "服務端有小版本升級,請盡快升級至最新版。",
"profile_image_of_user": "{user} 的個人資料圖片",
@@ -1553,6 +1556,8 @@
"rating_description": "在資訊面板中顯示 EXIF 評等",
"reaction_options": "反應選項",
"read_changelog": "閱覽變更日誌",
"readonly_mode_disabled": "唯讀模式已關閉",
"readonly_mode_enabled": "唯讀模式已開啟",
"reassign": "重新指定",
"reassigned_assets_to_existing_person": "已將 {count, plural, other {# 個檔案}}重新指定給{name, select, null {現有的人} other {{name}}}",
"reassigned_assets_to_new_person": "已將 {count, plural, other {# 個檔案}}重新指定給一位新人物",
@@ -1722,6 +1727,7 @@
"select_user_for_sharing_page_err_album": "新增相簿失敗",
"selected": "已選擇",
"selected_count": "{count, plural, other {選了 # 項}}",
"selected_gps_coordinates": "已選擇的 GPS 座標",
"send_message": "傳訊息",
"send_welcome_email": "傳送歡迎電子郵件",
"server_endpoint": "伺服器端點",

View File

@@ -597,8 +597,6 @@
"backup_setting_subtitle": "管理后台和前台上传设置",
"backup_settings_subtitle": "管理上传设置",
"backward": "后退",
"beta_sync": "测试版同步状态",
"beta_sync_subtitle": "管理新的同步系统",
"biometric_auth_enabled": "生物识别身份验证已启用",
"biometric_locked_out": "您被锁定在生物识别身份验证之外",
"biometric_no_options": "没有可用的生物识别选项",
@@ -1076,10 +1074,7 @@
"gcast_enabled": "Google Cast 投屏",
"gcast_enabled_description": "该功能需要加载来自 Google 的外部资源。",
"general": "通用",
"geolocation_instruction_all_have_location": "此日期的所有资产都已具有位置数据。尝试显示所有资产或选择其他日期",
"geolocation_instruction_location": "点击带有GPS坐标的资产以使用其位置或直接从地图上选择位置",
"geolocation_instruction_no_date": "选择一个日期来管理当天照片和视频的位置数据",
"geolocation_instruction_no_photos": "没有找到此日期的照片或视频。选择其他日期显示它们",
"get_help": "获取帮助",
"get_wifiname_error": "无法获取 Wi-Fi 名称。确保已授予必要的权限,并已连接到 Wi-Fi 网络",
"getting_started": "入门",
@@ -1417,6 +1412,8 @@
"open_the_search_filters": "打开搜索过滤器",
"options": "选项",
"or": "或",
"organize_into_albums": "整理成相册",
"organize_into_albums_description": "使用当前同步设置将现有照片放入相册",
"organize_your_library": "整理您的图库",
"original": "原图",
"other": "其它",
@@ -1518,7 +1515,7 @@
"profile_drawer_client_out_of_date_minor": "客户端有小版本升级,请尽快升级至最新版。",
"profile_drawer_client_server_up_to_date": "客户端和服务端都是最新的",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "只读模式已启用。双击用户头像图标退出。",
"profile_drawer_readonly_mode": "只读模式已启用。长按用户头像图标退出。",
"profile_drawer_server_out_of_date_major": "服务端有大版本升级,请尽快升级至最新版。",
"profile_drawer_server_out_of_date_minor": "服务端有小版本升级,请尽快升级至最新版。",
"profile_image_of_user": "{user}的个人资料图片",
@@ -1557,6 +1554,7 @@
"purchase_server_description_2": "支持者状态",
"purchase_server_title": "服务器",
"purchase_settings_server_activated": "服务器产品密钥正在由管理员管理",
"query_asset_id": "查询资产ID",
"queue_status": "排队中 {count}/{total}",
"rating": "星级",
"rating_clear": "删除星级",
@@ -1642,6 +1640,7 @@
"restore_user": "恢复用户",
"restored_asset": "已恢复项目",
"resume": "继续",
"resume_paused_jobs": "继续 {count, plural, one {# 已暂停的作业} other {# 已暂停的作业}}",
"retry_upload": "重新上传",
"review_duplicates": "检查重复项",
"review_large_files": "查看大文件",
@@ -1735,7 +1734,7 @@
"select_user_for_sharing_page_err_album": "创建相册失败",
"selected": "已选择",
"selected_count": "{count, plural, other {#项已选择}}",
"selected_gps_coordinates": "选定的GPS坐标",
"selected_gps_coordinates": "选定的GPS坐标",
"send_message": "发送消息",
"send_welcome_email": "发送欢迎邮件",
"server_endpoint": "服务器 URL",
@@ -1846,10 +1845,8 @@
"shift_to_permanent_delete": "按住 ⇧ Shift 键永久删除项目",
"show_album_options": "显示相册选项",
"show_albums": "显示相册",
"show_all_assets": "显示所有资产",
"show_all_people": "显示所有人物",
"show_and_hide_people": "显示和隐藏人物",
"show_assets_without_location": "显示不带GPS定位的资产",
"show_file_location": "显示文件位置",
"show_gallery": "显示图库",
"show_hidden_people": "显示隐藏人物",
@@ -1920,6 +1917,8 @@
"sync_albums_manual_subtitle": "将所有上传的视频和照片同步到选定的备份相册",
"sync_local": "同步本地",
"sync_remote": "同步远程",
"sync_status": "同步状态",
"sync_status_subtitle": "查看和管理同步系统",
"sync_upload_album_setting_subtitle": "创建照片和视频并上传到 Immich 上的选定相册中",
"tag": "标签",
"tag_assets": "标记项目",
@@ -1979,6 +1978,7 @@
"trash_page_select_assets_btn": "选择项目",
"trash_page_title": "回收站 ({count})",
"trashed_items_will_be_permanently_deleted_after": "回收站中的项目将在{days, plural, one {#天} other {#天}}后被永久删除。",
"troubleshoot": "故障排除",
"type": "类型",
"unable_to_change_pin_code": "无法修改PIN码",
"unable_to_setup_pin_code": "无法设置PIN码",
@@ -2034,7 +2034,6 @@
"use_biometric": "使用生物识别",
"use_current_connection": "使用当前连接",
"use_custom_date_range": "自定义日期范围",
"use_this_location": "单击以使用此位置",
"user": "用户",
"user_has_been_deleted": "此用户已被删除。",
"user_id": "用户 ID",
@@ -2077,6 +2076,7 @@
"view_next_asset": "查看下一项",
"view_previous_asset": "查看上一项",
"view_qr_code": "查看二维码",
"view_similar_photos": "查看相似照片",
"view_stack": "查看堆叠项目",
"view_user": "查看用户",
"viewer_remove_from_stack": "从堆叠中移除",

View File

@@ -1,6 +1,6 @@
ARG DEVICE=cpu
FROM python:3.11-bookworm@sha256:c642d5dfaf9115a12086785f23008558ae2e13bcd0c4794536340bcb777a4381 AS builder-cpu
FROM python:3.11-bookworm@sha256:fc1f2e357c307c4044133952b203e66a47e7726821a664f603a180a0c5823844 AS builder-cpu
FROM builder-cpu AS builder-openvino
@@ -59,7 +59,7 @@ ENV PYTHONDONTWRITEBYTECODE=1 \
RUN apt-get update && apt-get install -y --no-install-recommends g++
COPY --from=ghcr.io/astral-sh/uv:latest@sha256:f3660c56d5b08d6c516360981bedc439f499b9bf37f46a216018da3777a74011 /uv /uvx /bin/
COPY --from=ghcr.io/astral-sh/uv:0.8.15@sha256:a5727064a0de127bdb7c9d3c1383f3a9ac307d9f2d8a391edc7896c54289ced0 /uv /uvx /bin/
RUN --mount=type=cache,target=/root/.cache/uv \
--mount=type=bind,source=uv.lock,target=uv.lock \
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
@@ -68,11 +68,11 @@ RUN if [ "$DEVICE" = "rocm" ]; then \
uv pip install /opt/onnxruntime_rocm-*.whl; \
fi
FROM python:3.11-slim-bookworm@sha256:838ff46ae6c481e85e369706fa3dea5166953824124735639f3c9f52af85f319 AS prod-cpu
FROM python:3.11-slim-bookworm@sha256:873f91540d53b36327ed4fb018c9669107a4e2a676719720edb4209c4b15d029 AS prod-cpu
ENV LD_PRELOAD=/usr/lib/libmimalloc.so.2
FROM python:3.11-slim-bookworm@sha256:838ff46ae6c481e85e369706fa3dea5166953824124735639f3c9f52af85f319 AS prod-openvino
FROM python:3.11-slim-bookworm@sha256:873f91540d53b36327ed4fb018c9669107a4e2a676719720edb4209c4b15d029 AS prod-openvino
RUN apt-get update && \
apt-get install --no-install-recommends -yqq ocl-icd-libopencl1 wget && \

View File

@@ -1341,7 +1341,7 @@ wheels = [
[[package]]
name = "locust"
version = "2.39.1"
version = "2.40.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "configargparse" },
@@ -1353,6 +1353,7 @@ dependencies = [
{ name = "locust-cloud" },
{ name = "msgpack" },
{ name = "psutil" },
{ name = "pytest" },
{ name = "python-engineio" },
{ name = "python-socketio", extra = ["client"] },
{ name = "pywin32", marker = "sys_platform == 'win32'" },
@@ -1360,12 +1361,12 @@ dependencies = [
{ name = "requests" },
{ name = "setuptools" },
{ name = "tomli", marker = "python_full_version < '3.11'" },
{ name = "typing-extensions", marker = "python_full_version < '3.11'" },
{ name = "typing-extensions", marker = "python_full_version < '3.12'" },
{ name = "werkzeug" },
]
sdist = { url = "https://files.pythonhosted.org/packages/95/c8/10aa5445c404eed389b56877e6714c1787190cc09dd70059ce3765979ec5/locust-2.39.1.tar.gz", hash = "sha256:6bdd19e27edf9a1c84391d6cf6e9a737dfb832be7dfbf39053191ae31b9cc498", size = 1409902, upload-time = "2025-08-29T17:41:01.544Z" }
sdist = { url = "https://files.pythonhosted.org/packages/27/e0/a99401e233ad1b9ad26265ad8f45f2466abb6ef954e7747e8484864eb6df/locust-2.40.2.tar.gz", hash = "sha256:9ffdf900d1ad949d4c5809e2a4e526bba582175f025f24da2755f43f4b5cb23e", size = 1411854, upload-time = "2025-09-08T12:55:28.664Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/ec/b3/b2f4b2ca88b1e72eba7be2b2982533b887f8b709d222db78eb9602aa5121/locust-2.39.1-py3-none-any.whl", hash = "sha256:fd5148f2f1a4ed34aee968abc4393674e69d1b5e1b54db50a397f6eb09ce0b04", size = 1428155, upload-time = "2025-08-29T17:41:00.245Z" },
{ url = "https://files.pythonhosted.org/packages/f5/e7/85ddb125d91b3a2bfa2a52eeae2d4c7da062239aaa475d6aebddb5688f41/locust-2.40.2-py3-none-any.whl", hash = "sha256:c8f0060d2bd8479034e9e61e6473669c4c8216930d99ee61ec0e627340b89d3e", size = 1430483, upload-time = "2025-09-08T12:55:25.659Z" },
]
[[package]]
@@ -2204,7 +2205,7 @@ wheels = [
[[package]]
name = "pytest"
version = "8.4.1"
version = "8.4.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "colorama", marker = "sys_platform == 'win32'" },
@@ -2215,9 +2216,9 @@ dependencies = [
{ name = "pygments" },
{ name = "tomli", marker = "python_full_version < '3.11'" },
]
sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload-time = "2025-06-18T05:48:06.109Z" }
sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload-time = "2025-06-18T05:48:03.955Z" },
{ url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" },
]
[[package]]
@@ -2249,14 +2250,14 @@ wheels = [
[[package]]
name = "pytest-mock"
version = "3.14.1"
version = "3.15.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "pytest" },
]
sdist = { url = "https://files.pythonhosted.org/packages/71/28/67172c96ba684058a4d24ffe144d64783d2a270d0af0d9e792737bddc75c/pytest_mock-3.14.1.tar.gz", hash = "sha256:159e9edac4c451ce77a5cdb9fc5d1100708d2dd4ba3c3df572f14097351af80e", size = 33241, upload-time = "2025-05-26T13:58:45.167Z" }
sdist = { url = "https://files.pythonhosted.org/packages/61/99/3323ee5c16b3637b4d941c362182d3e749c11e400bea31018c42219f3a98/pytest_mock-3.15.0.tar.gz", hash = "sha256:ab896bd190316b9d5d87b277569dfcdf718b2d049a2ccff5f7aca279c002a1cf", size = 33838, upload-time = "2025-09-04T20:57:48.679Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/b2/05/77b60e520511c53d1c1ca75f1930c7dd8e971d0c4379b7f4b3f9644685ba/pytest_mock-3.14.1-py3-none-any.whl", hash = "sha256:178aefcd11307d874b4cd3100344e7e2d888d9791a6a1d9bfe90fbc1b74fd1d0", size = 9923, upload-time = "2025-05-26T13:58:43.487Z" },
{ url = "https://files.pythonhosted.org/packages/2b/b3/7fefc43fb706380144bcd293cc6e446e6f637ddfa8b83f48d1734156b529/pytest_mock-3.15.0-py3-none-any.whl", hash = "sha256:ef2219485fb1bd256b00e7ad7466ce26729b30eadfc7cbcdb4fa9a92ca68db6f", size = 10050, upload-time = "2025-09-04T20:57:47.274Z" },
]
[[package]]
@@ -2532,28 +2533,28 @@ wheels = [
[[package]]
name = "ruff"
version = "0.12.11"
version = "0.13.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/de/55/16ab6a7d88d93001e1ae4c34cbdcfb376652d761799459ff27c1dc20f6fa/ruff-0.12.11.tar.gz", hash = "sha256:c6b09ae8426a65bbee5425b9d0b82796dbb07cb1af045743c79bfb163001165d", size = 5347103, upload-time = "2025-08-28T13:59:08.87Z" }
sdist = { url = "https://files.pythonhosted.org/packages/6e/1a/1f4b722862840295bcaba8c9e5261572347509548faaa99b2d57ee7bfe6a/ruff-0.13.0.tar.gz", hash = "sha256:5b4b1ee7eb35afae128ab94459b13b2baaed282b1fb0f472a73c82c996c8ae60", size = 5372863, upload-time = "2025-09-10T16:25:37.917Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/d6/a2/3b3573e474de39a7a475f3fbaf36a25600bfeb238e1a90392799163b64a0/ruff-0.12.11-py3-none-linux_armv6l.whl", hash = "sha256:93fce71e1cac3a8bf9200e63a38ac5c078f3b6baebffb74ba5274fb2ab276065", size = 11979885, upload-time = "2025-08-28T13:58:26.654Z" },
{ url = "https://files.pythonhosted.org/packages/76/e4/235ad6d1785a2012d3ded2350fd9bc5c5af8c6f56820e696b0118dfe7d24/ruff-0.12.11-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b8e33ac7b28c772440afa80cebb972ffd823621ded90404f29e5ab6d1e2d4b93", size = 12742364, upload-time = "2025-08-28T13:58:30.256Z" },
{ url = "https://files.pythonhosted.org/packages/2c/0d/15b72c5fe6b1e402a543aa9d8960e0a7e19dfb079f5b0b424db48b7febab/ruff-0.12.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d69fb9d4937aa19adb2e9f058bc4fbfe986c2040acb1a4a9747734834eaa0bfd", size = 11920111, upload-time = "2025-08-28T13:58:33.677Z" },
{ url = "https://files.pythonhosted.org/packages/3e/c0/f66339d7893798ad3e17fa5a1e587d6fd9806f7c1c062b63f8b09dda6702/ruff-0.12.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:411954eca8464595077a93e580e2918d0a01a19317af0a72132283e28ae21bee", size = 12160060, upload-time = "2025-08-28T13:58:35.74Z" },
{ url = "https://files.pythonhosted.org/packages/03/69/9870368326db26f20c946205fb2d0008988aea552dbaec35fbacbb46efaa/ruff-0.12.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a2c0a2e1a450f387bf2c6237c727dd22191ae8c00e448e0672d624b2bbd7fb0", size = 11799848, upload-time = "2025-08-28T13:58:38.051Z" },
{ url = "https://files.pythonhosted.org/packages/25/8c/dd2c7f990e9b3a8a55eee09d4e675027d31727ce33cdb29eab32d025bdc9/ruff-0.12.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ca4c3a7f937725fd2413c0e884b5248a19369ab9bdd850b5781348ba283f644", size = 13536288, upload-time = "2025-08-28T13:58:40.046Z" },
{ url = "https://files.pythonhosted.org/packages/7a/30/d5496fa09aba59b5e01ea76775a4c8897b13055884f56f1c35a4194c2297/ruff-0.12.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:4d1df0098124006f6a66ecf3581a7f7e754c4df7644b2e6704cd7ca80ff95211", size = 14490633, upload-time = "2025-08-28T13:58:42.285Z" },
{ url = "https://files.pythonhosted.org/packages/9b/2f/81f998180ad53445d403c386549d6946d0748e536d58fce5b5e173511183/ruff-0.12.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5a8dd5f230efc99a24ace3b77e3555d3fbc0343aeed3fc84c8d89e75ab2ff793", size = 13888430, upload-time = "2025-08-28T13:58:44.641Z" },
{ url = "https://files.pythonhosted.org/packages/87/71/23a0d1d5892a377478c61dbbcffe82a3476b050f38b5162171942a029ef3/ruff-0.12.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4dc75533039d0ed04cd33fb8ca9ac9620b99672fe7ff1533b6402206901c34ee", size = 12913133, upload-time = "2025-08-28T13:58:47.039Z" },
{ url = "https://files.pythonhosted.org/packages/80/22/3c6cef96627f89b344c933781ed38329bfb87737aa438f15da95907cbfd5/ruff-0.12.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fc58f9266d62c6eccc75261a665f26b4ef64840887fc6cbc552ce5b29f96cc8", size = 13169082, upload-time = "2025-08-28T13:58:49.157Z" },
{ url = "https://files.pythonhosted.org/packages/05/b5/68b3ff96160d8b49e8dd10785ff3186be18fd650d356036a3770386e6c7f/ruff-0.12.11-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:5a0113bd6eafd545146440225fe60b4e9489f59eb5f5f107acd715ba5f0b3d2f", size = 13139490, upload-time = "2025-08-28T13:58:51.593Z" },
{ url = "https://files.pythonhosted.org/packages/59/b9/050a3278ecd558f74f7ee016fbdf10591d50119df8d5f5da45a22c6afafc/ruff-0.12.11-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:0d737b4059d66295c3ea5720e6efc152623bb83fde5444209b69cd33a53e2000", size = 11958928, upload-time = "2025-08-28T13:58:53.943Z" },
{ url = "https://files.pythonhosted.org/packages/f9/bc/93be37347db854806904a43b0493af8d6873472dfb4b4b8cbb27786eb651/ruff-0.12.11-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:916fc5defee32dbc1fc1650b576a8fed68f5e8256e2180d4d9855aea43d6aab2", size = 11764513, upload-time = "2025-08-28T13:58:55.976Z" },
{ url = "https://files.pythonhosted.org/packages/7a/a1/1471751e2015a81fd8e166cd311456c11df74c7e8769d4aabfbc7584c7ac/ruff-0.12.11-py3-none-musllinux_1_2_i686.whl", hash = "sha256:c984f07d7adb42d3ded5be894fb4007f30f82c87559438b4879fe7aa08c62b39", size = 12745154, upload-time = "2025-08-28T13:58:58.16Z" },
{ url = "https://files.pythonhosted.org/packages/68/ab/2542b14890d0f4872dd81b7b2a6aed3ac1786fae1ce9b17e11e6df9e31e3/ruff-0.12.11-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e07fbb89f2e9249f219d88331c833860489b49cdf4b032b8e4432e9b13e8a4b9", size = 13227653, upload-time = "2025-08-28T13:59:00.276Z" },
{ url = "https://files.pythonhosted.org/packages/22/16/2fbfc61047dbfd009c58a28369a693a1484ad15441723be1cd7fe69bb679/ruff-0.12.11-py3-none-win32.whl", hash = "sha256:c792e8f597c9c756e9bcd4d87cf407a00b60af77078c96f7b6366ea2ce9ba9d3", size = 11944270, upload-time = "2025-08-28T13:59:02.347Z" },
{ url = "https://files.pythonhosted.org/packages/08/a5/34276984705bfe069cd383101c45077ee029c3fe3b28225bf67aa35f0647/ruff-0.12.11-py3-none-win_amd64.whl", hash = "sha256:a3283325960307915b6deb3576b96919ee89432ebd9c48771ca12ee8afe4a0fd", size = 13046600, upload-time = "2025-08-28T13:59:04.751Z" },
{ url = "https://files.pythonhosted.org/packages/84/a8/001d4a7c2b37623a3fd7463208267fb906df40ff31db496157549cfd6e72/ruff-0.12.11-py3-none-win_arm64.whl", hash = "sha256:bae4d6e6a2676f8fb0f98b74594a048bae1b944aab17e9f5d504062303c6dbea", size = 12135290, upload-time = "2025-08-28T13:59:06.933Z" },
{ url = "https://files.pythonhosted.org/packages/ac/fe/6f87b419dbe166fd30a991390221f14c5b68946f389ea07913e1719741e0/ruff-0.13.0-py3-none-linux_armv6l.whl", hash = "sha256:137f3d65d58ee828ae136a12d1dc33d992773d8f7644bc6b82714570f31b2004", size = 12187826, upload-time = "2025-09-10T16:24:39.5Z" },
{ url = "https://files.pythonhosted.org/packages/e4/25/c92296b1fc36d2499e12b74a3fdb230f77af7bdf048fad7b0a62e94ed56a/ruff-0.13.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:21ae48151b66e71fd111b7d79f9ad358814ed58c339631450c66a4be33cc28b9", size = 12933428, upload-time = "2025-09-10T16:24:43.866Z" },
{ url = "https://files.pythonhosted.org/packages/44/cf/40bc7221a949470307d9c35b4ef5810c294e6cfa3caafb57d882731a9f42/ruff-0.13.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:64de45f4ca5441209e41742d527944635a05a6e7c05798904f39c85bafa819e3", size = 12095543, upload-time = "2025-09-10T16:24:46.638Z" },
{ url = "https://files.pythonhosted.org/packages/f1/03/8b5ff2a211efb68c63a1d03d157e924997ada87d01bebffbd13a0f3fcdeb/ruff-0.13.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b2c653ae9b9d46e0ef62fc6fbf5b979bda20a0b1d2b22f8f7eb0cde9f4963b8", size = 12312489, upload-time = "2025-09-10T16:24:49.556Z" },
{ url = "https://files.pythonhosted.org/packages/37/fc/2336ef6d5e9c8d8ea8305c5f91e767d795cd4fc171a6d97ef38a5302dadc/ruff-0.13.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4cec632534332062bc9eb5884a267b689085a1afea9801bf94e3ba7498a2d207", size = 11991631, upload-time = "2025-09-10T16:24:53.439Z" },
{ url = "https://files.pythonhosted.org/packages/39/7f/f6d574d100fca83d32637d7f5541bea2f5e473c40020bbc7fc4a4d5b7294/ruff-0.13.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcd628101d9f7d122e120ac7c17e0a0f468b19bc925501dbe03c1cb7f5415b24", size = 13720602, upload-time = "2025-09-10T16:24:56.392Z" },
{ url = "https://files.pythonhosted.org/packages/fd/c8/a8a5b81d8729b5d1f663348d11e2a9d65a7a9bd3c399763b1a51c72be1ce/ruff-0.13.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:afe37db8e1466acb173bb2a39ca92df00570e0fd7c94c72d87b51b21bb63efea", size = 14697751, upload-time = "2025-09-10T16:24:59.89Z" },
{ url = "https://files.pythonhosted.org/packages/57/f5/183ec292272ce7ec5e882aea74937f7288e88ecb500198b832c24debc6d3/ruff-0.13.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f96a8d90bb258d7d3358b372905fe7333aaacf6c39e2408b9f8ba181f4b6ef2", size = 14095317, upload-time = "2025-09-10T16:25:03.025Z" },
{ url = "https://files.pythonhosted.org/packages/9f/8d/7f9771c971724701af7926c14dab31754e7b303d127b0d3f01116faef456/ruff-0.13.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b5e3d883e4f924c5298e3f2ee0f3085819c14f68d1e5b6715597681433f153", size = 13144418, upload-time = "2025-09-10T16:25:06.272Z" },
{ url = "https://files.pythonhosted.org/packages/a8/a6/7985ad1778e60922d4bef546688cd8a25822c58873e9ff30189cfe5dc4ab/ruff-0.13.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03447f3d18479df3d24917a92d768a89f873a7181a064858ea90a804a7538991", size = 13370843, upload-time = "2025-09-10T16:25:09.965Z" },
{ url = "https://files.pythonhosted.org/packages/64/1c/bafdd5a7a05a50cc51d9f5711da704942d8dd62df3d8c70c311e98ce9f8a/ruff-0.13.0-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:fbc6b1934eb1c0033da427c805e27d164bb713f8e273a024a7e86176d7f462cf", size = 13321891, upload-time = "2025-09-10T16:25:12.969Z" },
{ url = "https://files.pythonhosted.org/packages/bc/3e/7817f989cb9725ef7e8d2cee74186bf90555279e119de50c750c4b7a72fe/ruff-0.13.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a8ab6a3e03665d39d4a25ee199d207a488724f022db0e1fe4002968abdb8001b", size = 12119119, upload-time = "2025-09-10T16:25:16.621Z" },
{ url = "https://files.pythonhosted.org/packages/58/07/9df080742e8d1080e60c426dce6e96a8faf9a371e2ce22eef662e3839c95/ruff-0.13.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d2a5c62f8ccc6dd2fe259917482de7275cecc86141ee10432727c4816235bc41", size = 11961594, upload-time = "2025-09-10T16:25:19.49Z" },
{ url = "https://files.pythonhosted.org/packages/6a/f4/ae1185349197d26a2316840cb4d6c3fba61d4ac36ed728bf0228b222d71f/ruff-0.13.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:b7b85ca27aeeb1ab421bc787009831cffe6048faae08ad80867edab9f2760945", size = 12933377, upload-time = "2025-09-10T16:25:22.371Z" },
{ url = "https://files.pythonhosted.org/packages/b6/39/e776c10a3b349fc8209a905bfb327831d7516f6058339a613a8d2aaecacd/ruff-0.13.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:79ea0c44a3032af768cabfd9616e44c24303af49d633b43e3a5096e009ebe823", size = 13418555, upload-time = "2025-09-10T16:25:25.681Z" },
{ url = "https://files.pythonhosted.org/packages/46/09/dca8df3d48e8b3f4202bf20b1658898e74b6442ac835bfe2c1816d926697/ruff-0.13.0-py3-none-win32.whl", hash = "sha256:4e473e8f0e6a04e4113f2e1de12a5039579892329ecc49958424e5568ef4f768", size = 12141613, upload-time = "2025-09-10T16:25:28.664Z" },
{ url = "https://files.pythonhosted.org/packages/61/21/0647eb71ed99b888ad50e44d8ec65d7148babc0e242d531a499a0bbcda5f/ruff-0.13.0-py3-none-win_amd64.whl", hash = "sha256:48e5c25c7a3713eea9ce755995767f4dcd1b0b9599b638b12946e892123d1efb", size = 13258250, upload-time = "2025-09-10T16:25:31.773Z" },
{ url = "https://files.pythonhosted.org/packages/e1/a3/03216a6a86c706df54422612981fb0f9041dbb452c3401501d4a22b942c9/ruff-0.13.0-py3-none-win_arm64.whl", hash = "sha256:ab80525317b1e1d38614addec8ac954f1b3e662de9d59114ecbf771d00cf613e", size = 12312357, upload-time = "2025-09-10T16:25:35.595Z" },
]
[[package]]
@@ -2876,27 +2877,27 @@ wheels = [
[[package]]
name = "tokenizers"
version = "0.21.4"
version = "0.22.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "huggingface-hub" },
]
sdist = { url = "https://files.pythonhosted.org/packages/c2/2f/402986d0823f8d7ca139d969af2917fefaa9b947d1fb32f6168c509f2492/tokenizers-0.21.4.tar.gz", hash = "sha256:fa23f85fbc9a02ec5c6978da172cdcbac23498c3ca9f3645c5c68740ac007880", size = 351253, upload-time = "2025-07-28T15:48:54.325Z" }
sdist = { url = "https://files.pythonhosted.org/packages/5e/b4/c1ce3699e81977da2ace8b16d2badfd42b060e7d33d75c4ccdbf9dc920fa/tokenizers-0.22.0.tar.gz", hash = "sha256:2e33b98525be8453f355927f3cab312c36cd3e44f4d7e9e97da2fa94d0a49dcb", size = 362771, upload-time = "2025-08-29T10:25:33.914Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/98/c6/fdb6f72bf6454f52eb4a2510be7fb0f614e541a2554d6210e370d85efff4/tokenizers-0.21.4-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:2ccc10a7c3bcefe0f242867dc914fc1226ee44321eb618cfe3019b5df3400133", size = 2863987, upload-time = "2025-07-28T15:48:44.877Z" },
{ url = "https://files.pythonhosted.org/packages/8d/a6/28975479e35ddc751dc1ddc97b9b69bf7fcf074db31548aab37f8116674c/tokenizers-0.21.4-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:5e2f601a8e0cd5be5cc7506b20a79112370b9b3e9cb5f13f68ab11acd6ca7d60", size = 2732457, upload-time = "2025-07-28T15:48:43.265Z" },
{ url = "https://files.pythonhosted.org/packages/aa/8f/24f39d7b5c726b7b0be95dca04f344df278a3fe3a4deb15a975d194cbb32/tokenizers-0.21.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39b376f5a1aee67b4d29032ee85511bbd1b99007ec735f7f35c8a2eb104eade5", size = 3012624, upload-time = "2025-07-28T13:22:43.895Z" },
{ url = "https://files.pythonhosted.org/packages/58/47/26358925717687a58cb74d7a508de96649544fad5778f0cd9827398dc499/tokenizers-0.21.4-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2107ad649e2cda4488d41dfd031469e9da3fcbfd6183e74e4958fa729ffbf9c6", size = 2939681, upload-time = "2025-07-28T13:22:47.499Z" },
{ url = "https://files.pythonhosted.org/packages/99/6f/cc300fea5db2ab5ddc2c8aea5757a27b89c84469899710c3aeddc1d39801/tokenizers-0.21.4-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c73012da95afafdf235ba80047699df4384fdc481527448a078ffd00e45a7d9", size = 3247445, upload-time = "2025-07-28T15:48:39.711Z" },
{ url = "https://files.pythonhosted.org/packages/be/bf/98cb4b9c3c4afd8be89cfa6423704337dc20b73eb4180397a6e0d456c334/tokenizers-0.21.4-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f23186c40395fc390d27f519679a58023f368a0aad234af145e0f39ad1212732", size = 3428014, upload-time = "2025-07-28T13:22:49.569Z" },
{ url = "https://files.pythonhosted.org/packages/75/c7/96c1cc780e6ca7f01a57c13235dd05b7bc1c0f3588512ebe9d1331b5f5ae/tokenizers-0.21.4-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc88bb34e23a54cc42713d6d98af5f1bf79c07653d24fe984d2d695ba2c922a2", size = 3193197, upload-time = "2025-07-28T13:22:51.471Z" },
{ url = "https://files.pythonhosted.org/packages/f2/90/273b6c7ec78af547694eddeea9e05de771278bd20476525ab930cecaf7d8/tokenizers-0.21.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51b7eabb104f46c1c50b486520555715457ae833d5aee9ff6ae853d1130506ff", size = 3115426, upload-time = "2025-07-28T15:48:41.439Z" },
{ url = "https://files.pythonhosted.org/packages/91/43/c640d5a07e95f1cf9d2c92501f20a25f179ac53a4f71e1489a3dcfcc67ee/tokenizers-0.21.4-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:714b05b2e1af1288bd1bc56ce496c4cebb64a20d158ee802887757791191e6e2", size = 9089127, upload-time = "2025-07-28T15:48:46.472Z" },
{ url = "https://files.pythonhosted.org/packages/44/a1/dd23edd6271d4dca788e5200a807b49ec3e6987815cd9d0a07ad9c96c7c2/tokenizers-0.21.4-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:1340ff877ceedfa937544b7d79f5b7becf33a4cfb58f89b3b49927004ef66f78", size = 9055243, upload-time = "2025-07-28T15:48:48.539Z" },
{ url = "https://files.pythonhosted.org/packages/21/2b/b410d6e9021c4b7ddb57248304dc817c4d4970b73b6ee343674914701197/tokenizers-0.21.4-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:3c1f4317576e465ac9ef0d165b247825a2a4078bcd01cba6b54b867bdf9fdd8b", size = 9298237, upload-time = "2025-07-28T15:48:50.443Z" },
{ url = "https://files.pythonhosted.org/packages/b7/0a/42348c995c67e2e6e5c89ffb9cfd68507cbaeb84ff39c49ee6e0a6dd0fd2/tokenizers-0.21.4-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:c212aa4e45ec0bb5274b16b6f31dd3f1c41944025c2358faaa5782c754e84c24", size = 9461980, upload-time = "2025-07-28T15:48:52.325Z" },
{ url = "https://files.pythonhosted.org/packages/3d/d3/dacccd834404cd71b5c334882f3ba40331ad2120e69ded32cf5fda9a7436/tokenizers-0.21.4-cp39-abi3-win32.whl", hash = "sha256:6c42a930bc5f4c47f4ea775c91de47d27910881902b0f20e4990ebe045a415d0", size = 2329871, upload-time = "2025-07-28T15:48:56.841Z" },
{ url = "https://files.pythonhosted.org/packages/41/f2/fd673d979185f5dcbac4be7d09461cbb99751554ffb6718d0013af8604cb/tokenizers-0.21.4-cp39-abi3-win_amd64.whl", hash = "sha256:475d807a5c3eb72c59ad9b5fcdb254f6e17f53dfcbb9903233b0dfa9c943b597", size = 2507568, upload-time = "2025-07-28T15:48:55.456Z" },
{ url = "https://files.pythonhosted.org/packages/6d/b1/18c13648edabbe66baa85fe266a478a7931ddc0cd1ba618802eb7b8d9865/tokenizers-0.22.0-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:eaa9620122a3fb99b943f864af95ed14c8dfc0f47afa3b404ac8c16b3f2bb484", size = 3081954, upload-time = "2025-08-29T10:25:24.993Z" },
{ url = "https://files.pythonhosted.org/packages/c2/02/c3c454b641bd7c4f79e4464accfae9e7dfc913a777d2e561e168ae060362/tokenizers-0.22.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:71784b9ab5bf0ff3075bceeb198149d2c5e068549c0d18fe32d06ba0deb63f79", size = 2945644, upload-time = "2025-08-29T10:25:23.405Z" },
{ url = "https://files.pythonhosted.org/packages/55/02/d10185ba2fd8c2d111e124c9d92de398aee0264b35ce433f79fb8472f5d0/tokenizers-0.22.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec5b71f668a8076802b0241a42387d48289f25435b86b769ae1837cad4172a17", size = 3254764, upload-time = "2025-08-29T10:25:12.445Z" },
{ url = "https://files.pythonhosted.org/packages/13/89/17514bd7ef4bf5bfff58e2b131cec0f8d5cea2b1c8ffe1050a2c8de88dbb/tokenizers-0.22.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ea8562fa7498850d02a16178105b58803ea825b50dc9094d60549a7ed63654bb", size = 3161654, upload-time = "2025-08-29T10:25:15.493Z" },
{ url = "https://files.pythonhosted.org/packages/5a/d8/bac9f3a7ef6dcceec206e3857c3b61bb16c6b702ed7ae49585f5bd85c0ef/tokenizers-0.22.0-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4136e1558a9ef2e2f1de1555dcd573e1cbc4a320c1a06c4107a3d46dc8ac6e4b", size = 3511484, upload-time = "2025-08-29T10:25:20.477Z" },
{ url = "https://files.pythonhosted.org/packages/aa/27/9c9800eb6763683010a4851db4d1802d8cab9cec114c17056eccb4d4a6e0/tokenizers-0.22.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdf5954de3962a5fd9781dc12048d24a1a6f1f5df038c6e95db328cd22964206", size = 3712829, upload-time = "2025-08-29T10:25:17.154Z" },
{ url = "https://files.pythonhosted.org/packages/10/e3/b1726dbc1f03f757260fa21752e1921445b5bc350389a8314dd3338836db/tokenizers-0.22.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8337ca75d0731fc4860e6204cc24bb36a67d9736142aa06ed320943b50b1e7ed", size = 3408934, upload-time = "2025-08-29T10:25:18.76Z" },
{ url = "https://files.pythonhosted.org/packages/d4/61/aeab3402c26874b74bb67a7f2c4b569dde29b51032c5384db592e7b216f4/tokenizers-0.22.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a89264e26f63c449d8cded9061adea7b5de53ba2346fc7e87311f7e4117c1cc8", size = 3345585, upload-time = "2025-08-29T10:25:22.08Z" },
{ url = "https://files.pythonhosted.org/packages/bc/d3/498b4a8a8764cce0900af1add0f176ff24f475d4413d55b760b8cdf00893/tokenizers-0.22.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:790bad50a1b59d4c21592f9c3cf5e5cf9c3c7ce7e1a23a739f13e01fb1be377a", size = 9322986, upload-time = "2025-08-29T10:25:26.607Z" },
{ url = "https://files.pythonhosted.org/packages/a2/62/92378eb1c2c565837ca3cb5f9569860d132ab9d195d7950c1ea2681dffd0/tokenizers-0.22.0-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:76cf6757c73a10ef10bf06fa937c0ec7393d90432f543f49adc8cab3fb6f26cb", size = 9276630, upload-time = "2025-08-29T10:25:28.349Z" },
{ url = "https://files.pythonhosted.org/packages/eb/f0/342d80457aa1cda7654327460f69db0d69405af1e4c453f4dc6ca7c4a76e/tokenizers-0.22.0-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:1626cb186e143720c62c6c6b5371e62bbc10af60481388c0da89bc903f37ea0c", size = 9547175, upload-time = "2025-08-29T10:25:29.989Z" },
{ url = "https://files.pythonhosted.org/packages/14/84/8aa9b4adfc4fbd09381e20a5bc6aa27040c9c09caa89988c01544e008d18/tokenizers-0.22.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:da589a61cbfea18ae267723d6b029b84598dc8ca78db9951d8f5beff72d8507c", size = 9692735, upload-time = "2025-08-29T10:25:32.089Z" },
{ url = "https://files.pythonhosted.org/packages/bf/24/83ee2b1dc76bfe05c3142e7d0ccdfe69f0ad2f1ebf6c726cea7f0874c0d0/tokenizers-0.22.0-cp39-abi3-win32.whl", hash = "sha256:dbf9d6851bddae3e046fedfb166f47743c1c7bd11c640f0691dd35ef0bcad3be", size = 2471915, upload-time = "2025-08-29T10:25:36.411Z" },
{ url = "https://files.pythonhosted.org/packages/d1/9b/0e0bf82214ee20231845b127aa4a8015936ad5a46779f30865d10e404167/tokenizers-0.22.0-cp39-abi3-win_amd64.whl", hash = "sha256:c78174859eeaee96021f248a56c801e36bfb6bd5b067f2e95aa82445ca324f00", size = 2680494, upload-time = "2025-08-29T10:25:35.14Z" },
]
[[package]]

34
mise.lock Normal file
View File

@@ -0,0 +1,34 @@
[tools.dart]
version = "3.8.2"
backend = "asdf:dart"
[tools.flutter]
version = "3.32.8-stable"
backend = "asdf:flutter"
[tools."github:CQLabs/homebrew-dcm"]
version = "1.31.4"
backend = "github:CQLabs/homebrew-dcm"
[tools."github:CQLabs/homebrew-dcm".platforms.linux-x64]
checksum = "blake3:e9df5b765df327e1248fccf2c6165a89d632a065667f99c01765bf3047b94955"
size = 8821083
url = "https://github.com/CQLabs/homebrew-dcm/releases/download/1.31.4/dcm-linux-x64-release.zip"
[tools.node]
version = "22.18.0"
backend = "core:node"
[tools.node.platforms.linux-x64]
checksum = "sha256:a2e703725d8683be86bb5da967bf8272f4518bdaf10f21389e2b2c9eaeae8c8a"
size = 54824343
url = "https://nodejs.org/dist/v22.18.0/node-v22.18.0-linux-x64.tar.gz"
[tools.pnpm]
version = "10.14.0"
backend = "aqua:pnpm/pnpm"
[tools.pnpm.platforms.linux-x64]
checksum = "blake3:13dfa46b7173d3cad3bad60a756a492ecf0bce48b23eb9f793e7ccec5a09b46d"
size = 66231525
url = "https://github.com/pnpm/pnpm/releases/download/v10.14.0/pnpm-linux-x64"

312
mise.toml Normal file
View File

@@ -0,0 +1,312 @@
[tools]
node = "22.19.0"
flutter = "3.32.8"
pnpm = "10.14.0"
dart = "3.8.2"
[tools."github:CQLabs/homebrew-dcm"]
version = "1.31.4"
bin = "dcm"
postinstall = "chmod +x $MISE_TOOL_INSTALL_PATH/dcm"
[settings]
experimental = true
lockfile = true
pin = true
# .github
[tasks."github:install"]
run = "pnpm install --filter github --frozen-lockfile"
[tasks."github:format"]
env._.path = "./.github/node_modules/.bin"
dir = ".github"
run = "prettier --check ."
[tasks."github:format-fix"]
env._.path = "./.github/node_modules/.bin"
dir = ".github"
run = "prettier --write ."
# @immich/cli
[tasks."cli:install"]
run = "pnpm install --filter @immich/cli --frozen-lockfile"
[tasks."cli:build"]
env._.path = "./cli/node_modules/.bin"
dir = "cli"
run = "vite build"
[tasks."cli:test"]
env._.path = "./cli/node_modules/.bin"
dir = "cli"
run = "vite"
[tasks."cli:lint"]
env._.path = "./cli/node_modules/.bin"
dir = "cli"
run = "eslint \"src/**/*.ts\" --max-warnings 0"
[tasks."cli:lint-fix"]
run = "mise run cli:lint --fix"
[tasks."cli:format"]
env._.path = "./cli/node_modules/.bin"
dir = "cli"
run = "prettier --check ."
[tasks."cli:format-fix"]
env._.path = "./cli/node_modules/.bin"
dir = "cli"
run = "prettier --write ."
[tasks."cli:check"]
env._.path = "./cli/node_modules/.bin"
dir = "cli"
run = "tsc --noEmit"
# @immich/sdk
[tasks."sdk:install"]
run = "pnpm install --filter @immich/sdk --frozen-lockfile"
[tasks."sdk:build"]
env._.path = "./open-api/typescript-sdk/node_modules/.bin"
dir = "./open-api/typescript-sdk"
run = "tsc"
# docs
[tasks."docs:install"]
run = "pnpm install --filter documentation --frozen-lockfile"
[tasks."docs:start"]
env._.path = "./docs/node_modules/.bin"
dir = "docs"
run = "docusaurus --port 3005"
[tasks."docs:build"]
env._.path = "./docs/node_modules/.bin"
dir = "docs"
run = [
"jq -c < ../open-api/immich-openapi-specs.json > ./static/openapi.json || exit 0",
"docusaurus build",
]
[tasks."docs:preview"]
env._.path = "./docs/node_modules/.bin"
dir = "docs"
run = "docusaurus serve"
[tasks."docs:format"]
env._.path = "./docs/node_modules/.bin"
dir = "docs"
run = "prettier --check ."
[tasks."docs:format-fix"]
env._.path = "./docs/node_modules/.bin"
dir = "docs"
run = "prettier --write ."
# e2e
[tasks."e2e:install"]
run = "pnpm install --filter immich-e2e --frozen-lockfile"
[tasks."e2e:test"]
env._.path = "./e2e/node_modules/.bin"
dir = "e2e"
run = "vitest --run"
[tasks."e2e:test-web"]
env._.path = "./e2e/node_modules/.bin"
dir = "e2e"
run = "playwright test"
[tasks."e2e:format"]
env._.path = "./e2e/node_modules/.bin"
dir = "e2e"
run = "prettier --check ."
[tasks."e2e:format-fix"]
env._.path = "./e2e/node_modules/.bin"
dir = "e2e"
run = "prettier --write ."
[tasks."e2e:lint"]
env._.path = "./e2e/node_modules/.bin"
dir = "e2e"
run = "eslint \"src/**/*.ts\" --max-warnings 0"
[tasks."e2e:lint-fix"]
run = "mise run e2e:lint --fix"
[tasks."e2e:check"]
env._.path = "./e2e/node_modules/.bin"
dir = "e2e"
run = "tsc --noEmit"
# i18n
[tasks."i18n:format"]
run = "mise run i18n:format-fix"
[tasks."i18n:format-fix"]
run = "pnpm dlx sort-json ./i18n/*.json"
# server
[tasks."server:install"]
run = "pnpm install --filter immich --frozen-lockfile"
[tasks."server:build"]
env._.path = "./server/node_modules/.bin"
dir = "server"
run = "nest build"
[tasks."server:test"]
env._.path = "./server/node_modules/.bin"
dir = "server"
run = "vitest --config test/vitest.config.mjs"
[tasks."server:test-medium"]
env._.path = "./server/node_modules/.bin"
dir = "server"
run = "vitest --config test/vitest.config.medium.mjs"
[tasks."server:format"]
env._.path = "./server/node_modules/.bin"
dir = "server"
run = "prettier --check ."
[tasks."server:format-fix"]
env._.path = "./server/node_modules/.bin"
dir = "server"
run = "prettier --write ."
[tasks."server:lint"]
env._.path = "./server/node_modules/.bin"
dir = "server"
run = "eslint \"src/**/*.ts\" \"test/**/*.ts\" --max-warnings 0"
[tasks."server:lint-fix"]
run = "mise run server:lint --fix"
[tasks."server:check"]
env._.path = "./server/node_modules/.bin"
dir = "server"
run = "tsc --noEmit"
[tasks."server:sql"]
dir = "server"
run = "node ./dist/bin/sync-open-api.js"
[tasks."server:open-api"]
dir = "server"
run = "node ./dist/bin/sync-open-api.js"
[tasks."server:migrations"]
dir = "server"
run = "node ./dist/bin/migrations.js"
description = "Run database migration commands (create, generate, run, debug, or query)"
[tasks."server:schema-drop"]
run = "mise run server:migrations query 'DROP schema public cascade; CREATE schema public;'"
[tasks."server:schema-reset"]
run = "mise run server:schema-drop && mise run server:migrations run"
[tasks."server:email-dev"]
env._.path = "./server/node_modules/.bin"
dir = "server"
run = "email dev -p 3050 --dir src/emails"
[tasks."server:checklist"]
run = [
"mise run server:install",
"mise run server:format",
"mise run server:lint",
"mise run server:check",
"mise run server:test-medium --run",
"mise run server:test --run",
]
# web
[tasks."web:install"]
run = "pnpm install --filter immich-web --frozen-lockfile"
[tasks."web:svelte-kit-sync"]
env._.path = "./web/node_modules/.bin"
dir = "web"
run = "svelte-kit sync"
[tasks."web:build"]
env._.path = "./web/node_modules/.bin"
dir = "web"
run = "vite build"
[tasks."web:build-stats"]
env.BUILD_STATS = "true"
env._.path = "./web/node_modules/.bin"
dir = "web"
run = "vite build"
[tasks."web:preview"]
env._.path = "./web/node_modules/.bin"
dir = "web"
run = "vite preview"
[tasks."web:start"]
env._.path = "web/node_modules/.bin"
dir = "web"
run = "vite dev --host 0.0.0.0 --port 3000"
[tasks."web:test"]
depends = "web:svelte-kit-sync"
env._.path = "web/node_modules/.bin"
dir = "web"
run = "vitest"
[tasks."web:format"]
env._.path = "web/node_modules/.bin"
dir = "web"
run = "prettier --check ."
[tasks."web:format-fix"]
env._.path = "web/node_modules/.bin"
dir = "web"
run = "prettier --write ."
[tasks."web:lint"]
env._.path = "web/node_modules/.bin"
dir = "web"
run = "eslint . --max-warnings 0"
[tasks."web:lint-p"]
env._.path = "web/node_modules/.bin"
dir = "web"
run = "eslint-p . --max-warnings 0 --concurrency=4"
[tasks."web:lint-fix"]
run = "mise run web:lint --fix"
[tasks."web:check"]
depends = "web:svelte-kit-sync"
env._.path = "web/node_modules/.bin"
dir = "web"
run = "tsc --noEmit"
[tasks."web:check-svelte"]
depends = "web:svelte-kit-sync"
env._.path = "web/node_modules/.bin"
dir = "web"
run = "svelte-check --no-tsconfig --fail-on-warnings --compiler-warnings 'reactive_declaration_non_reactive_property:ignore' --ignore src/lib/components/photos-page/asset-grid.svelte"
[tasks."web:checklist"]
run = [
"mise run web:install",
"mise run web:format",
"mise run web:check",
"mise run web:test --run",
"mise run web:lint",
]

View File

@@ -5,6 +5,8 @@ import android.os.Build
import android.os.ext.SdkExtensions
import app.alextran.immich.background.BackgroundWorkerApiImpl
import app.alextran.immich.background.BackgroundWorkerFgHostApi
import app.alextran.immich.connectivity.ConnectivityApi
import app.alextran.immich.connectivity.ConnectivityApiImpl
import app.alextran.immich.images.ThumbnailApi
import app.alextran.immich.images.ThumbnailsImpl
import app.alextran.immich.sync.NativeSyncApi
@@ -34,6 +36,7 @@ class MainActivity : FlutterFragmentActivity() {
NativeSyncApi.setUp(messenger, nativeSyncApiImpl)
ThumbnailApi.setUp(messenger, ThumbnailsImpl(ctx))
BackgroundWorkerFgHostApi.setUp(messenger, BackgroundWorkerApiImpl(ctx))
ConnectivityApi.setUp(messenger, ConnectivityApiImpl(ctx))
}
}
}

View File

@@ -61,9 +61,8 @@ private open class BackgroundWorkerPigeonCodec : StandardMessageCodec() {
/** Generated interface from Pigeon that represents a handler of messages from Flutter. */
interface BackgroundWorkerFgHostApi {
fun enableSyncWorker()
fun enableUploadWorker()
fun disableUploadWorker()
fun enable()
fun disable()
companion object {
/** The codec used by BackgroundWorkerFgHostApi. */
@@ -75,11 +74,11 @@ interface BackgroundWorkerFgHostApi {
fun setUp(binaryMessenger: BinaryMessenger, api: BackgroundWorkerFgHostApi?, messageChannelSuffix: String = "") {
val separatedMessageChannelSuffix = if (messageChannelSuffix.isNotEmpty()) ".$messageChannelSuffix" else ""
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFgHostApi.enableSyncWorker$separatedMessageChannelSuffix", codec)
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFgHostApi.enable$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { _, reply ->
val wrapped: List<Any?> = try {
api.enableSyncWorker()
api.enable()
listOf(null)
} catch (exception: Throwable) {
BackgroundWorkerPigeonUtils.wrapError(exception)
@@ -91,27 +90,11 @@ interface BackgroundWorkerFgHostApi {
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFgHostApi.enableUploadWorker$separatedMessageChannelSuffix", codec)
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFgHostApi.disable$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { _, reply ->
val wrapped: List<Any?> = try {
api.enableUploadWorker()
listOf(null)
} catch (exception: Throwable) {
BackgroundWorkerPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFgHostApi.disableUploadWorker$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { _, reply ->
val wrapped: List<Any?> = try {
api.disableUploadWorker()
api.disable()
listOf(null)
} catch (exception: Throwable) {
BackgroundWorkerPigeonUtils.wrapError(exception)
@@ -128,6 +111,7 @@ interface BackgroundWorkerFgHostApi {
/** Generated interface from Pigeon that represents a handler of messages from Flutter. */
interface BackgroundWorkerBgHostApi {
fun onInitialized()
fun showNotification(title: String, content: String)
fun close()
companion object {
@@ -155,6 +139,25 @@ interface BackgroundWorkerBgHostApi {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.immich_mobile.BackgroundWorkerBgHostApi.showNotification$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val titleArg = args[0] as String
val contentArg = args[1] as String
val wrapped: List<Any?> = try {
api.showNotification(titleArg, contentArg)
listOf(null)
} catch (exception: Throwable) {
BackgroundWorkerPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.immich_mobile.BackgroundWorkerBgHostApi.close$separatedMessageChannelSuffix", codec)
if (api != null) {
@@ -182,23 +185,6 @@ class BackgroundWorkerFlutterApi(private val binaryMessenger: BinaryMessenger, p
BackgroundWorkerPigeonCodec()
}
}
fun onLocalSync(maxSecondsArg: Long?, callback: (Result<Unit>) -> Unit)
{
val separatedMessageChannelSuffix = if (messageChannelSuffix.isNotEmpty()) ".$messageChannelSuffix" else ""
val channelName = "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFlutterApi.onLocalSync$separatedMessageChannelSuffix"
val channel = BasicMessageChannel<Any?>(binaryMessenger, channelName, codec)
channel.send(listOf(maxSecondsArg)) {
if (it is List<*>) {
if (it.size > 1) {
callback(Result.failure(FlutterError(it[0] as String, it[1] as String, it[2] as String?)))
} else {
callback(Result.success(Unit))
}
} else {
callback(Result.failure(BackgroundWorkerPigeonUtils.createConnectionError(channelName)))
}
}
}
fun onIosUpload(isRefreshArg: Boolean, maxSecondsArg: Long?, callback: (Result<Unit>) -> Unit)
{
val separatedMessageChannelSuffix = if (messageChannelSuffix.isNotEmpty()) ".$messageChannelSuffix" else ""

View File

@@ -1,26 +1,30 @@
package app.alextran.immich.background
import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.Context
import android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC
import android.os.Build
import android.os.Handler
import android.os.Looper
import android.os.PowerManager
import android.util.Log
import androidx.core.app.NotificationCompat
import androidx.work.ForegroundInfo
import androidx.work.ListenableWorker
import androidx.work.WorkerParameters
import app.alextran.immich.MainActivity
import app.alextran.immich.R
import com.google.common.util.concurrent.ListenableFuture
import com.google.common.util.concurrent.SettableFuture
import io.flutter.FlutterInjector
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.embedding.engine.dart.DartExecutor
import io.flutter.embedding.engine.loader.FlutterLoader
import java.util.concurrent.TimeUnit
private const val TAG = "BackgroundWorker"
enum class BackgroundTaskType {
LOCAL_SYNC,
UPLOAD,
}
class BackgroundWorker(context: Context, params: WorkerParameters) :
ListenableWorker(context, params), BackgroundWorkerBgHostApi {
private val ctx: Context = context.applicationContext
@@ -45,15 +49,32 @@ class BackgroundWorker(context: Context, params: WorkerParameters) :
/// Flag to track whether the background task has completed to prevent duplicate completions
private var isComplete = false
private val notificationManager =
ctx.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
private var foregroundFuture: ListenableFuture<Void>? = null
init {
if (!loader.initialized()) {
loader.startInitialization(ctx)
}
}
companion object {
private const val NOTIFICATION_CHANNEL_ID = "immich::background_worker::notif"
private const val NOTIFICATION_ID = 100
}
override fun startWork(): ListenableFuture<Result> {
Log.i(TAG, "Starting background upload worker")
val notificationChannel = NotificationChannel(
NOTIFICATION_CHANNEL_ID,
NOTIFICATION_CHANNEL_ID,
NotificationManager.IMPORTANCE_LOW
)
notificationManager.createNotificationChannel(notificationChannel)
loader.ensureInitializationCompleteAsync(ctx, null, Handler(Looper.getMainLooper())) {
engine = FlutterEngine(ctx)
@@ -84,12 +105,34 @@ class BackgroundWorker(context: Context, params: WorkerParameters) :
* This method acts as a bridge between the native Android background task system and Flutter.
*/
override fun onInitialized() {
val taskTypeIndex = inputData.getInt(BackgroundWorkerApiImpl.WORKER_DATA_TASK_TYPE, 0)
val taskType = BackgroundTaskType.entries[taskTypeIndex]
flutterApi?.onAndroidUpload { handleHostResult(it) }
}
when (taskType) {
BackgroundTaskType.LOCAL_SYNC -> flutterApi?.onLocalSync(null) { handleHostResult(it) }
BackgroundTaskType.UPLOAD -> flutterApi?.onAndroidUpload { handleHostResult(it) }
// TODO: Move this to a separate NotificationManager class
override fun showNotification(title: String, content: String) {
val notification = NotificationCompat.Builder(applicationContext, NOTIFICATION_CHANNEL_ID)
.setSmallIcon(R.drawable.notification_icon)
.setOnlyAlertOnce(true)
.setOngoing(true)
.setTicker(title)
.setContentTitle(title)
.setContentText(content)
.build()
if (isIgnoringBatteryOptimizations()) {
foregroundFuture = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
setForegroundAsync(
ForegroundInfo(
NOTIFICATION_ID,
notification,
FOREGROUND_SERVICE_TYPE_DATA_SYNC
)
)
} else {
setForegroundAsync(ForegroundInfo(NOTIFICATION_ID, notification))
}
} else {
notificationManager.notify(NOTIFICATION_ID, notification)
}
}
@@ -106,6 +149,8 @@ class BackgroundWorker(context: Context, params: WorkerParameters) :
}
}
waitForForegroundPromotion()
Handler(Looper.getMainLooper()).postDelayed({
complete(Result.failure())
}, 5000)
@@ -141,9 +186,37 @@ class BackgroundWorker(context: Context, params: WorkerParameters) :
* - Parameter success: Indicates whether the background task completed successfully
*/
private fun complete(success: Result) {
Log.d(TAG, "About to complete BackupWorker with result: $success")
isComplete = true
engine?.destroy()
engine = null
flutterApi = null
notificationManager.cancel(NOTIFICATION_ID)
waitForForegroundPromotion()
completionHandler.set(success)
}
/**
* Returns `true` if the app is ignoring battery optimizations
*/
private fun isIgnoringBatteryOptimizations(): Boolean {
val powerManager = ctx.getSystemService(Context.POWER_SERVICE) as PowerManager
return powerManager.isIgnoringBatteryOptimizations(ctx.packageName)
}
/**
* Calls to setForegroundAsync() that do not complete before completion of a ListenableWorker will signal an IllegalStateException
* https://android-review.googlesource.com/c/platform/frameworks/support/+/1262743
* Wait for a short period of time for the foreground promotion to complete before completing the worker
*/
private fun waitForForegroundPromotion() {
val foregroundFuture = this.foregroundFuture
if (foregroundFuture != null && !foregroundFuture.isCancelled && !foregroundFuture.isDone) {
try {
foregroundFuture.get(500, TimeUnit.MILLISECONDS)
} catch (e: Exception) {
// ignored, there is nothing to be done
}
}
}
}

View File

@@ -3,10 +3,8 @@ package app.alextran.immich.background
import android.content.Context
import android.provider.MediaStore
import android.util.Log
import androidx.core.content.edit
import androidx.work.BackoffPolicy
import androidx.work.Constraints
import androidx.work.Data
import androidx.work.ExistingWorkPolicy
import androidx.work.OneTimeWorkRequest
import androidx.work.WorkManager
@@ -16,18 +14,13 @@ private const val TAG = "BackgroundUploadImpl"
class BackgroundWorkerApiImpl(context: Context) : BackgroundWorkerFgHostApi {
private val ctx: Context = context.applicationContext
override fun enableSyncWorker() {
override fun enable() {
enqueueMediaObserver(ctx)
Log.i(TAG, "Scheduled media observer")
}
override fun enableUploadWorker() {
updateUploadEnabled(ctx, true)
Log.i(TAG, "Scheduled background upload tasks")
}
override fun disableUploadWorker() {
updateUploadEnabled(ctx, false)
override fun disable() {
WorkManager.getInstance(ctx).cancelUniqueWork(OBSERVER_WORKER_NAME)
WorkManager.getInstance(ctx).cancelUniqueWork(BACKGROUND_WORKER_NAME)
Log.i(TAG, "Cancelled background upload tasks")
}
@@ -36,25 +29,14 @@ class BackgroundWorkerApiImpl(context: Context) : BackgroundWorkerFgHostApi {
private const val BACKGROUND_WORKER_NAME = "immich/BackgroundWorkerV1"
private const val OBSERVER_WORKER_NAME = "immich/MediaObserverV1"
const val WORKER_DATA_TASK_TYPE = "taskType"
const val SHARED_PREF_NAME = "Immich::Background"
const val SHARED_PREF_BACKUP_ENABLED = "Background::backup::enabled"
private fun updateUploadEnabled(context: Context, enabled: Boolean) {
context.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE).edit {
putBoolean(SHARED_PREF_BACKUP_ENABLED, enabled)
}
}
fun enqueueMediaObserver(ctx: Context) {
val constraints = Constraints.Builder()
.addContentUriTrigger(MediaStore.Images.Media.INTERNAL_CONTENT_URI, true)
.addContentUriTrigger(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, true)
.addContentUriTrigger(MediaStore.Video.Media.INTERNAL_CONTENT_URI, true)
.addContentUriTrigger(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, true)
.setTriggerContentUpdateDelay(5, TimeUnit.SECONDS)
.setTriggerContentMaxDelay(1, TimeUnit.MINUTES)
.setTriggerContentUpdateDelay(30, TimeUnit.SECONDS)
.setTriggerContentMaxDelay(3, TimeUnit.MINUTES)
.build()
val work = OneTimeWorkRequest.Builder(MediaObserver::class.java)
@@ -66,15 +48,13 @@ class BackgroundWorkerApiImpl(context: Context) : BackgroundWorkerFgHostApi {
Log.i(TAG, "Enqueued media observer worker with name: $OBSERVER_WORKER_NAME")
}
fun enqueueBackgroundWorker(ctx: Context, taskType: BackgroundTaskType) {
fun enqueueBackgroundWorker(ctx: Context) {
val constraints = Constraints.Builder().setRequiresBatteryNotLow(true).build()
val data = Data.Builder()
data.putInt(WORKER_DATA_TASK_TYPE, taskType.ordinal)
val work = OneTimeWorkRequest.Builder(BackgroundWorker::class.java)
.setConstraints(constraints)
.setBackoffCriteria(BackoffPolicy.EXPONENTIAL, 1, TimeUnit.MINUTES)
.setInputData(data.build()).build()
.build()
WorkManager.getInstance(ctx)
.enqueueUniqueWork(BACKGROUND_WORKER_NAME, ExistingWorkPolicy.REPLACE, work)

View File

@@ -6,29 +6,17 @@ import androidx.work.Worker
import androidx.work.WorkerParameters
class MediaObserver(context: Context, params: WorkerParameters) : Worker(context, params) {
private val ctx: Context = context.applicationContext
private val ctx: Context = context.applicationContext
override fun doWork(): Result {
Log.i("MediaObserver", "Content change detected, starting background worker")
override fun doWork(): Result {
Log.i("MediaObserver", "Content change detected, starting background worker")
// Re-enqueue itself to listen for future changes
BackgroundWorkerApiImpl.enqueueMediaObserver(ctx)
// Enqueue backup worker only if there are new media changes
if (triggeredContentUris.isNotEmpty()) {
val type =
if (isBackupEnabled(ctx)) BackgroundTaskType.UPLOAD else BackgroundTaskType.LOCAL_SYNC
BackgroundWorkerApiImpl.enqueueBackgroundWorker(ctx, type)
}
// Re-enqueue itself to listen for future changes
BackgroundWorkerApiImpl.enqueueMediaObserver(ctx)
return Result.success()
}
private fun isBackupEnabled(context: Context): Boolean {
val prefs =
context.getSharedPreferences(
BackgroundWorkerApiImpl.SHARED_PREF_NAME,
Context.MODE_PRIVATE
)
return prefs.getBoolean(BackgroundWorkerApiImpl.SHARED_PREF_BACKUP_ENABLED, false)
// Enqueue backup worker only if there are new media changes
if (triggeredContentUris.isNotEmpty()) {
BackgroundWorkerApiImpl.enqueueBackgroundWorker(ctx)
}
return Result.success()
}
}

View File

@@ -0,0 +1,116 @@
// Autogenerated from Pigeon (v26.0.0), do not edit directly.
// See also: https://pub.dev/packages/pigeon
@file:Suppress("UNCHECKED_CAST", "ArrayInDataClass")
package app.alextran.immich.connectivity
import android.util.Log
import io.flutter.plugin.common.BasicMessageChannel
import io.flutter.plugin.common.BinaryMessenger
import io.flutter.plugin.common.EventChannel
import io.flutter.plugin.common.MessageCodec
import io.flutter.plugin.common.StandardMethodCodec
import io.flutter.plugin.common.StandardMessageCodec
import java.io.ByteArrayOutputStream
import java.nio.ByteBuffer
private object ConnectivityPigeonUtils {
fun wrapResult(result: Any?): List<Any?> {
return listOf(result)
}
fun wrapError(exception: Throwable): List<Any?> {
return if (exception is FlutterError) {
listOf(
exception.code,
exception.message,
exception.details
)
} else {
listOf(
exception.javaClass.simpleName,
exception.toString(),
"Cause: " + exception.cause + ", Stacktrace: " + Log.getStackTraceString(exception)
)
}
}
}
/**
* Error class for passing custom error details to Flutter via a thrown PlatformException.
* @property code The error code.
* @property message The error message.
* @property details The error details. Must be a datatype supported by the api codec.
*/
class FlutterError (
val code: String,
override val message: String? = null,
val details: Any? = null
) : Throwable()
enum class NetworkCapability(val raw: Int) {
CELLULAR(0),
WIFI(1),
VPN(2),
UNMETERED(3);
companion object {
fun ofRaw(raw: Int): NetworkCapability? {
return values().firstOrNull { it.raw == raw }
}
}
}
private open class ConnectivityPigeonCodec : StandardMessageCodec() {
override fun readValueOfType(type: Byte, buffer: ByteBuffer): Any? {
return when (type) {
129.toByte() -> {
return (readValue(buffer) as Long?)?.let {
NetworkCapability.ofRaw(it.toInt())
}
}
else -> super.readValueOfType(type, buffer)
}
}
override fun writeValue(stream: ByteArrayOutputStream, value: Any?) {
when (value) {
is NetworkCapability -> {
stream.write(129)
writeValue(stream, value.raw)
}
else -> super.writeValue(stream, value)
}
}
}
/** Generated interface from Pigeon that represents a handler of messages from Flutter. */
interface ConnectivityApi {
fun getCapabilities(): List<NetworkCapability>
companion object {
/** The codec used by ConnectivityApi. */
val codec: MessageCodec<Any?> by lazy {
ConnectivityPigeonCodec()
}
/** Sets up an instance of `ConnectivityApi` to handle messages through the `binaryMessenger`. */
@JvmOverloads
fun setUp(binaryMessenger: BinaryMessenger, api: ConnectivityApi?, messageChannelSuffix: String = "") {
val separatedMessageChannelSuffix = if (messageChannelSuffix.isNotEmpty()) ".$messageChannelSuffix" else ""
val taskQueue = binaryMessenger.makeBackgroundTaskQueue()
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.immich_mobile.ConnectivityApi.getCapabilities$separatedMessageChannelSuffix", codec, taskQueue)
if (api != null) {
channel.setMessageHandler { _, reply ->
val wrapped: List<Any?> = try {
listOf(api.getCapabilities())
} catch (exception: Throwable) {
ConnectivityPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
}
}
}

View File

@@ -0,0 +1,39 @@
package app.alextran.immich.connectivity
import android.content.Context
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
import android.net.wifi.WifiManager
class ConnectivityApiImpl(context: Context) : ConnectivityApi {
private val connectivityManager =
context.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
private val wifiManager =
context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
override fun getCapabilities(): List<NetworkCapability> {
val capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)
?: return emptyList()
val hasWifi = capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI_AWARE)
val hasCellular = capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
val hasVpn = capabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN)
val isUnmetered = capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)
return buildList {
if (hasWifi) add(NetworkCapability.WIFI)
if (hasCellular) add(NetworkCapability.CELLULAR)
if (hasVpn) {
add(NetworkCapability.VPN)
if (!hasWifi && !hasCellular) {
if (wifiManager.isWifiEnabled) add(NetworkCapability.WIFI)
// If VPN is active, but neither WIFI nor CELLULAR is reported as active,
// assume CELLULAR if WIFI is not enabled
else add(NetworkCapability.CELLULAR)
}
}
if (isUnmetered) add(NetworkCapability.UNMETERED)
}
}
}

View File

@@ -35,8 +35,8 @@ platform :android do
task: 'bundle',
build_type: 'Release',
properties: {
"android.injected.version.code" => 3011,
"android.injected.version.name" => "1.140.1",
"android.injected.version.code" => 3013,
"android.injected.version.name" => "1.141.1",
}
)
upload_to_play_store(skip_upload_apk: true, skip_upload_images: true, skip_upload_screenshots: true, aab: '../build/app/outputs/bundle/release/app-release.aab')

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -18,6 +18,8 @@
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
B21E34AA2E5AFD2B0031FDB9 /* BackgroundWorkerApiImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21E34A92E5AFD210031FDB9 /* BackgroundWorkerApiImpl.swift */; };
B21E34AC2E5B09190031FDB9 /* BackgroundWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21E34AB2E5B09100031FDB9 /* BackgroundWorker.swift */; };
B25D377A2E72CA15008B6CA7 /* Connectivity.g.swift in Sources */ = {isa = PBXBuildFile; fileRef = B25D37782E72CA15008B6CA7 /* Connectivity.g.swift */; };
B25D377C2E72CA26008B6CA7 /* ConnectivityApiImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = B25D377B2E72CA20008B6CA7 /* ConnectivityApiImpl.swift */; };
B2BE315F2E5E5229006EEF88 /* BackgroundWorker.g.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2BE315E2E5E5229006EEF88 /* BackgroundWorker.g.swift */; };
D218389C4A4C4693F141F7D1 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 886774DBDDE6B35BF2B4F2CD /* Pods_Runner.framework */; };
F02538E92DFBCBDD008C3FA3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
@@ -97,6 +99,8 @@
B1FBA9EE014DE20271B0FE77 /* Pods-ShareExtension.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShareExtension.profile.xcconfig"; path = "Target Support Files/Pods-ShareExtension/Pods-ShareExtension.profile.xcconfig"; sourceTree = "<group>"; };
B21E34A92E5AFD210031FDB9 /* BackgroundWorkerApiImpl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackgroundWorkerApiImpl.swift; sourceTree = "<group>"; };
B21E34AB2E5B09100031FDB9 /* BackgroundWorker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackgroundWorker.swift; sourceTree = "<group>"; };
B25D37782E72CA15008B6CA7 /* Connectivity.g.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Connectivity.g.swift; sourceTree = "<group>"; };
B25D377B2E72CA20008B6CA7 /* ConnectivityApiImpl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectivityApiImpl.swift; sourceTree = "<group>"; };
B2BE315E2E5E5229006EEF88 /* BackgroundWorker.g.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackgroundWorker.g.swift; sourceTree = "<group>"; };
E0E99CDC17B3EB7FA8BA2332 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
F0B57D382DF764BD00DC5BCC /* WidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = WidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -129,8 +133,6 @@
/* Begin PBXFileSystemSynchronizedRootGroup section */
B2CF7F8C2DDE4EBB00744BF6 /* Sync */ = {
isa = PBXFileSystemSynchronizedRootGroup;
exceptions = (
);
path = Sync;
sourceTree = "<group>";
};
@@ -243,6 +245,7 @@
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
B25D37792E72CA15008B6CA7 /* Connectivity */,
B21E34A62E5AF9760031FDB9 /* Background */,
B2CF7F8C2DDE4EBB00744BF6 /* Sync */,
FA9973382CF6DF4B000EF859 /* Runner.entitlements */,
@@ -271,6 +274,15 @@
path = Background;
sourceTree = "<group>";
};
B25D37792E72CA15008B6CA7 /* Connectivity */ = {
isa = PBXGroup;
children = (
B25D377B2E72CA20008B6CA7 /* ConnectivityApiImpl.swift */,
B25D37782E72CA15008B6CA7 /* Connectivity.g.swift */,
);
path = Connectivity;
sourceTree = "<group>";
};
FAC6F8B62D287F120078CB2F /* ShareExtension */ = {
isa = PBXGroup;
children = (
@@ -566,7 +578,9 @@
65F32F31299BD2F800CE9261 /* BackgroundServicePlugin.swift in Sources */,
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
B21E34AC2E5B09190031FDB9 /* BackgroundWorker.swift in Sources */,
B25D377A2E72CA15008B6CA7 /* Connectivity.g.swift in Sources */,
FEAFA8732E4D42F4001E47FE /* Thumbhash.swift in Sources */,
B25D377C2E72CA26008B6CA7 /* ConnectivityApiImpl.swift in Sources */,
FED3B1962E253E9B0030FD97 /* ThumbnailsImpl.swift in Sources */,
B21E34AA2E5AFD2B0031FDB9 /* BackgroundWorkerApiImpl.swift in Sources */,
FED3B1972E253E9B0030FD97 /* Thumbnails.g.swift in Sources */,

View File

@@ -73,9 +73,8 @@ class BackgroundWorkerPigeonCodec: FlutterStandardMessageCodec, @unchecked Senda
/// Generated protocol from Pigeon that represents a handler of messages from Flutter.
protocol BackgroundWorkerFgHostApi {
func enableSyncWorker() throws
func enableUploadWorker() throws
func disableUploadWorker() throws
func enable() throws
func disable() throws
}
/// Generated setup class from Pigeon to handle messages through the `binaryMessenger`.
@@ -84,50 +83,38 @@ class BackgroundWorkerFgHostApiSetup {
/// Sets up an instance of `BackgroundWorkerFgHostApi` to handle messages through the `binaryMessenger`.
static func setUp(binaryMessenger: FlutterBinaryMessenger, api: BackgroundWorkerFgHostApi?, messageChannelSuffix: String = "") {
let channelSuffix = messageChannelSuffix.count > 0 ? ".\(messageChannelSuffix)" : ""
let enableSyncWorkerChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFgHostApi.enableSyncWorker\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec)
let enableChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFgHostApi.enable\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
enableSyncWorkerChannel.setMessageHandler { _, reply in
enableChannel.setMessageHandler { _, reply in
do {
try api.enableSyncWorker()
try api.enable()
reply(wrapResult(nil))
} catch {
reply(wrapError(error))
}
}
} else {
enableSyncWorkerChannel.setMessageHandler(nil)
enableChannel.setMessageHandler(nil)
}
let enableUploadWorkerChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFgHostApi.enableUploadWorker\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec)
let disableChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFgHostApi.disable\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
enableUploadWorkerChannel.setMessageHandler { _, reply in
disableChannel.setMessageHandler { _, reply in
do {
try api.enableUploadWorker()
try api.disable()
reply(wrapResult(nil))
} catch {
reply(wrapError(error))
}
}
} else {
enableUploadWorkerChannel.setMessageHandler(nil)
}
let disableUploadWorkerChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFgHostApi.disableUploadWorker\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
disableUploadWorkerChannel.setMessageHandler { _, reply in
do {
try api.disableUploadWorker()
reply(wrapResult(nil))
} catch {
reply(wrapError(error))
}
}
} else {
disableUploadWorkerChannel.setMessageHandler(nil)
disableChannel.setMessageHandler(nil)
}
}
}
/// Generated protocol from Pigeon that represents a handler of messages from Flutter.
protocol BackgroundWorkerBgHostApi {
func onInitialized() throws
func showNotification(title: String, content: String) throws
func close() throws
}
@@ -150,6 +137,22 @@ class BackgroundWorkerBgHostApiSetup {
} else {
onInitializedChannel.setMessageHandler(nil)
}
let showNotificationChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.immich_mobile.BackgroundWorkerBgHostApi.showNotification\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
showNotificationChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let titleArg = args[0] as! String
let contentArg = args[1] as! String
do {
try api.showNotification(title: titleArg, content: contentArg)
reply(wrapResult(nil))
} catch {
reply(wrapError(error))
}
}
} else {
showNotificationChannel.setMessageHandler(nil)
}
let closeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.immich_mobile.BackgroundWorkerBgHostApi.close\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
closeChannel.setMessageHandler { _, reply in
@@ -167,7 +170,6 @@ class BackgroundWorkerBgHostApiSetup {
}
/// Generated protocol from Pigeon that represents Flutter messages that can be called from Swift.
protocol BackgroundWorkerFlutterApiProtocol {
func onLocalSync(maxSeconds maxSecondsArg: Int64?, completion: @escaping (Result<Void, PigeonError>) -> Void)
func onIosUpload(isRefresh isRefreshArg: Bool, maxSeconds maxSecondsArg: Int64?, completion: @escaping (Result<Void, PigeonError>) -> Void)
func onAndroidUpload(completion: @escaping (Result<Void, PigeonError>) -> Void)
func cancel(completion: @escaping (Result<Void, PigeonError>) -> Void)
@@ -182,24 +184,6 @@ class BackgroundWorkerFlutterApi: BackgroundWorkerFlutterApiProtocol {
var codec: BackgroundWorkerPigeonCodec {
return BackgroundWorkerPigeonCodec.shared
}
func onLocalSync(maxSeconds maxSecondsArg: Int64?, completion: @escaping (Result<Void, PigeonError>) -> Void) {
let channelName: String = "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFlutterApi.onLocalSync\(messageChannelSuffix)"
let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec)
channel.sendMessage([maxSecondsArg] as [Any?]) { response in
guard let listResponse = response as? [Any?] else {
completion(.failure(createConnectionError(withChannelName: channelName)))
return
}
if listResponse.count > 1 {
let code: String = listResponse[0] as! String
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
completion(.failure(PigeonError(code: code, message: message, details: details)))
} else {
completion(.success(()))
}
}
}
func onIosUpload(isRefresh isRefreshArg: Bool, maxSeconds maxSecondsArg: Int64?, completion: @escaping (Result<Void, PigeonError>) -> Void) {
let channelName: String = "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFlutterApi.onIosUpload\(messageChannelSuffix)"
let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec)

View File

@@ -1,7 +1,7 @@
import BackgroundTasks
import Flutter
enum BackgroundTaskType { case localSync, refreshUpload, processingUpload }
enum BackgroundTaskType { case refresh, processing }
/*
* DEBUG: Testing Background Tasks in Xcode
@@ -9,10 +9,6 @@ enum BackgroundTaskType { case localSync, refreshUpload, processingUpload }
* To test background task functionality during development:
* 1. Pause the application in Xcode debugger
* 2. In the debugger console, enter one of the following commands:
## For local sync (short-running sync):
e -l objc -- (void)[[BGTaskScheduler sharedScheduler] _simulateLaunchForTaskWithIdentifier:@"app.alextran.immich.background.localSync"]
## For background refresh (short-running sync):
@@ -24,8 +20,6 @@ enum BackgroundTaskType { case localSync, refreshUpload, processingUpload }
* To simulate task expiration (useful for testing expiration handlers):
e -l objc -- (void)[[BGTaskScheduler sharedScheduler] _simulateExpirationForTaskWithIdentifier:@"app.alextran.immich.background.localSync"]
e -l objc -- (void)[[BGTaskScheduler sharedScheduler] _simulateExpirationForTaskWithIdentifier:@"app.alextran.immich.background.refreshUpload"]
e -l objc -- (void)[[BGTaskScheduler sharedScheduler] _simulateExpirationForTaskWithIdentifier:@"app.alextran.immich.background.processingUpload"]
@@ -120,19 +114,15 @@ class BackgroundWorker: BackgroundWorkerBgHostApi {
* This method acts as a bridge between the native iOS background task system and Flutter.
*/
func onInitialized() throws {
switch self.taskType {
case .refreshUpload, .processingUpload:
flutterApi?.onIosUpload(isRefresh: self.taskType == .refreshUpload,
maxSeconds: maxSeconds.map { Int64($0) }, completion: { result in
self.handleHostResult(result: result)
})
case .localSync:
flutterApi?.onLocalSync(maxSeconds: maxSeconds.map { Int64($0) }, completion: { result in
self.handleHostResult(result: result)
})
}
flutterApi?.onIosUpload(isRefresh: self.taskType == .refresh, maxSeconds: maxSeconds.map { Int64($0) }, completion: { result in
self.handleHostResult(result: result)
})
}
func showNotification(title: String, content: String) throws {
// No-op on iOS for the time being
}
/**
* Cancels the currently running background task, either due to timeout or external request.
* Sends a cancel signal to the Flutter side and sets up a fallback timer to ensure
@@ -154,6 +144,7 @@ class BackgroundWorker: BackgroundWorkerBgHostApi {
self.complete(success: false)
}
}
/**
* Handles the result from Flutter API calls and determines the success/failure status.
@@ -177,6 +168,10 @@ class BackgroundWorker: BackgroundWorkerBgHostApi {
* - Parameter success: Indicates whether the background task completed successfully
*/
private func complete(success: Bool) {
if(isComplete) {
return
}
isComplete = true
engine.destroyContext()
completionHandler(success)

View File

@@ -1,77 +1,40 @@
import BackgroundTasks
class BackgroundWorkerApiImpl: BackgroundWorkerFgHostApi {
func enableSyncWorker() throws {
BackgroundWorkerApiImpl.scheduleLocalSync()
print("BackgroundUploadImpl:enableSyncWorker Local Sync worker scheduled")
}
func enableUploadWorker() throws {
BackgroundWorkerApiImpl.updateUploadEnabled(true)
BackgroundWorkerApiImpl.scheduleRefreshUpload()
BackgroundWorkerApiImpl.scheduleProcessingUpload()
print("BackgroundUploadImpl:enableUploadWorker Scheduled background upload tasks")
}
func disableUploadWorker() throws {
BackgroundWorkerApiImpl.updateUploadEnabled(false)
BackgroundWorkerApiImpl.cancelUploadTasks()
print("BackgroundUploadImpl:disableUploadWorker Disabled background upload tasks")
}
public static let backgroundUploadEnabledKey = "immich:background:backup:enabled"
private static let localSyncTaskID = "app.alextran.immich.background.localSync"
private static let refreshUploadTaskID = "app.alextran.immich.background.refreshUpload"
private static let processingUploadTaskID = "app.alextran.immich.background.processingUpload"
private static func updateUploadEnabled(_ isEnabled: Bool) {
return UserDefaults.standard.set(isEnabled, forKey: BackgroundWorkerApiImpl.backgroundUploadEnabledKey)
func enable() throws {
BackgroundWorkerApiImpl.scheduleRefreshWorker()
BackgroundWorkerApiImpl.scheduleProcessingWorker()
print("BackgroundUploadImpl:enbale Background worker scheduled")
}
private static func cancelUploadTasks() {
BackgroundWorkerApiImpl.updateUploadEnabled(false)
BGTaskScheduler.shared.cancel(taskRequestWithIdentifier: refreshUploadTaskID);
BGTaskScheduler.shared.cancel(taskRequestWithIdentifier: processingUploadTaskID);
func disable() throws {
BGTaskScheduler.shared.cancel(taskRequestWithIdentifier: BackgroundWorkerApiImpl.refreshTaskID);
BGTaskScheduler.shared.cancel(taskRequestWithIdentifier: BackgroundWorkerApiImpl.processingTaskID);
print("BackgroundUploadImpl:disableUploadWorker Disabled background workers")
}
private static let refreshTaskID = "app.alextran.immich.background.refreshUpload"
private static let processingTaskID = "app.alextran.immich.background.processingUpload"
public static func registerBackgroundWorkers() {
BGTaskScheduler.shared.register(
forTaskWithIdentifier: processingUploadTaskID, using: nil) { task in
forTaskWithIdentifier: processingTaskID, using: nil) { task in
if task is BGProcessingTask {
handleBackgroundProcessing(task: task as! BGProcessingTask)
}
}
BGTaskScheduler.shared.register(
forTaskWithIdentifier: refreshUploadTaskID, using: nil) { task in
forTaskWithIdentifier: refreshTaskID, using: nil) { task in
if task is BGAppRefreshTask {
handleBackgroundRefresh(task: task as! BGAppRefreshTask, taskType: .refreshUpload)
handleBackgroundRefresh(task: task as! BGAppRefreshTask)
}
}
BGTaskScheduler.shared.register(
forTaskWithIdentifier: localSyncTaskID, using: nil) { task in
if task is BGAppRefreshTask {
handleBackgroundRefresh(task: task as! BGAppRefreshTask, taskType: .localSync)
}
}
}
private static func scheduleLocalSync() {
let backgroundRefresh = BGAppRefreshTaskRequest(identifier: localSyncTaskID)
backgroundRefresh.earliestBeginDate = Date(timeIntervalSinceNow: 5 * 60) // 5 mins
do {
try BGTaskScheduler.shared.submit(backgroundRefresh)
} catch {
print("Could not schedule the local sync task \(error.localizedDescription)")
}
}
private static func scheduleRefreshUpload() {
let backgroundRefresh = BGAppRefreshTaskRequest(identifier: refreshUploadTaskID)
private static func scheduleRefreshWorker() {
let backgroundRefresh = BGAppRefreshTaskRequest(identifier: refreshTaskID)
backgroundRefresh.earliestBeginDate = Date(timeIntervalSinceNow: 5 * 60) // 5 mins
do {
@@ -81,8 +44,8 @@ class BackgroundWorkerApiImpl: BackgroundWorkerFgHostApi {
}
}
private static func scheduleProcessingUpload() {
let backgroundProcessing = BGProcessingTaskRequest(identifier: processingUploadTaskID)
private static func scheduleProcessingWorker() {
let backgroundProcessing = BGProcessingTaskRequest(identifier: processingTaskID)
backgroundProcessing.requiresNetworkConnectivity = true
backgroundProcessing.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60) // 15 mins
@@ -94,29 +57,16 @@ class BackgroundWorkerApiImpl: BackgroundWorkerFgHostApi {
}
}
private static func handleBackgroundRefresh(task: BGAppRefreshTask, taskType: BackgroundTaskType) {
let maxSeconds: Int?
switch taskType {
case .localSync:
maxSeconds = 15
scheduleLocalSync()
case .refreshUpload:
maxSeconds = 20
scheduleRefreshUpload()
case .processingUpload:
print("Unexpected background refresh task encountered")
return;
}
private static func handleBackgroundRefresh(task: BGAppRefreshTask) {
scheduleRefreshWorker()
// Restrict the refresh task to run only for a maximum of (maxSeconds) seconds
runBackgroundWorker(task: task, taskType: taskType, maxSeconds: maxSeconds)
runBackgroundWorker(task: task, taskType: .refresh, maxSeconds: 20)
}
private static func handleBackgroundProcessing(task: BGProcessingTask) {
scheduleProcessingUpload()
scheduleProcessingWorker()
// There are no restrictions for processing tasks. Although, the OS could signal expiration at any time
runBackgroundWorker(task: task, taskType: .processingUpload, maxSeconds: nil)
runBackgroundWorker(task: task, taskType: .processing, maxSeconds: nil)
}
/**

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