Compare commits

...

250 Commits

Author SHA1 Message Date
Alex
9996a1ec3e fix: prevent database deadlock (eps 2) 2025-09-08 21:10:51 -05: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
renovate[bot]
183a285584 chore(deps): update base-image to v202509021104 (major) (#21513)
chore(deps): update base-image to v202509021104

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-02 21:20:21 -05:00
Alex
5ce946bb5b fix: null check (#21536) 2025-09-02 19:21:41 -05:00
shenlong
674faf2e57 fix: local sync task never runs on iOS (#21491)
* fix: local sync task never runs on iOS

* chore: rename ios register method

* refactor from using dart callback to dart entrypoint + more logs

* check if file exists before hashing

* reschedule local sync task

* chore: rename background worker logger

* refactor: move file exists check inside repo

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-09-03 02:05:58 +05:30
Alex
4f7702c6bf fix: iOS portrait photo saved as jpg extension (#21388)
remove bad merged settings

remove console log
2025-09-02 14:26:12 -05:00
bo0tzz
28edf5664d fix: set specific AssetUpload permission on checkBulkUpload endpoint (#21470)
* fix: set specific AssetUpload permission on checkBulkUpload endpoint

Fixes #21456

* fix: make open-api
2025-09-02 14:21:14 -05:00
shenlong
ec2f94cae8 fix: handle datetime outside the valid range supported by dart (#21526)
* fix: handle datetime outside the valid range supported by dart

* add tests for tryFromSecondsSinceEpoch

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-09-02 14:20:49 -05:00
Mert
873f7921da fix(mobile): ensure current asset is set in asset viewer (#21504) 2025-09-02 11:03:44 -04:00
Mert
f06b054087 fix(mobile): decoding at higher resolution than necessary (#21503) 2025-09-02 11:03:17 -04:00
bo0tzz
0df910c0cd fix: don't run close-dupes workflow unnecessarily (#21333) 2025-09-02 16:04:07 +02:00
Derock
5b8d72e91a fix: filter null duplicate assets (#21507) 2025-09-02 01:20:01 -04:00
Yaros
e7b0a47be2 feat(mobile): copy file name by long-press (#21469) 2025-09-01 20:43:18 -05:00
Brandon Wees
60af3a4003 fix: show TabShellRoute when cold starting from deeplink (#21376) 2025-09-01 20:42:54 -05:00
Mert
6a4b6699e3 fix(mobile): increase thumbnail resolution (#21502)
increase thumbnail resolution
2025-09-01 20:19:38 -05:00
renovate[bot]
7d57fd1320 fix(deps): update machine-learning (#21296) 2025-09-01 19:44:19 -04:00
Snowknight26
bbc1c8186c fix(web): Show full date when hovering over photos date groups (#21462) 2025-08-31 16:30:35 -05:00
Brandon Wees
b76d69c0e5 fix(mobile): readonly mode disable tabs when in landscape mode (#21475)
fix: readonly mode disable bottom tabs when in landscape mode
2025-08-31 16:28:29 -05:00
Dag Stuan
fd2b7a344c fix(web): wait for image to load before playing memories. (#19757) 2025-08-31 08:50:33 -05:00
Weblate (bot)
03dafba522 chore(web): update translations (#21130)
Co-authored-by: AR7YK <jias.smarthome@gmail.com>
Co-authored-by: AbuKareem Tuffaha <abukareem.tuffaha@gmail.com>
Co-authored-by: Alberto Serluca <alberto.ser11@gmail.com>
Co-authored-by: Alfred Makne Poulsen <alfred@omj.dk>
Co-authored-by: Amir <amirikmel@gmail.com>
Co-authored-by: Aravinth <aravinth@tuta.io>
Co-authored-by: Arnau Mora <arnyminer.z@gmail.com>
Co-authored-by: Bora Atıcı <boratici.acc@gmail.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
Co-authored-by: Davide <bbrienza99@gmail.com>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: DevServs <bonov@mail.ru>
Co-authored-by: Dmitry Banny <dj.icecore@gmail.com>
Co-authored-by: Dominique Bégin <dominique.begin.0@gmail.com>
Co-authored-by: FarSniper <ozmatlik@gmail.com>
Co-authored-by: Felipe Garcia <garcia.o.felipe@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Florian Ostertag <florian.kuepper@gmail.com>
Co-authored-by: Gustavo de León <alfonso.gus.deleon@gmail.com>
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com>
Co-authored-by: Jane <asetmalik@gmail.com>
Co-authored-by: JarodSch <jarod@e-post.me>
Co-authored-by: Jordy H <jordy@hoebergen.net>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: Marc Casillas <mcasillassu@gmail.com>
Co-authored-by: Martin Popovski <martinkozle@yahoo.com>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Mikko Asikainen <mikko@asikainen.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Nico Kaiser <nico@kaiser.me>
Co-authored-by: Olaf Nielsen <solluh@mail.de>
Co-authored-by: PontusÖsterlindh <pontus@osterlindh.com>
Co-authored-by: Sergey Katsubo <skatsubo@gmail.com>
Co-authored-by: Shihfu Juan <xlion@xlion.tw>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Taiki M <vexingly-many-mace@duck.com>
Co-authored-by: Tijs-B <tijs.bergmans@telenet.be>
Co-authored-by: Tony Kindermann <tonykindermann@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: Yuki Ejima <ktd.gems@gmail.com>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Co-authored-by: chamdim <chamdim@protonmail.com>
Co-authored-by: gablilli <gabriele.lilli0511@gmail.com>
Co-authored-by: namdomnau <namdomnau@users.noreply.hosted.weblate.org>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: thestrudl <rok.vidmar1997@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Максим Горпиніч <gorpinicmaksim0@gmail.com>
2025-08-31 00:52:11 +02:00
github-actions
f15376a107 chore: version v1.140.1 2025-08-30 19:13:06 +00:00
Brandon Wees
32955915dd fix: show "preparing" when sharing in beta timeline (#21390)
* fix: show "preparing" when sharing in beta timeline

* embed dialog inside of share_action_button

* dont await the share sheet so "preparing" dialog disappears once share sheet presents

this mimics old timeline behavior

* chore: lint
2025-08-30 13:51:32 -05:00
Alex
aacb27ea5f fix: network criteria for upload LivePhotos (#21386) 2025-08-30 18:45:42 +00:00
Alex
d6b8c0926f chore: post release tasks (#21385) 2025-08-30 13:45:29 -05:00
Snowknight26
225af973c1 fix(web): Prevent changing asset location triggering keyboard shortcuts (#21451)
fix(web): Prevent changing asset location triggering asset keyboard shortcuts
2025-08-30 13:39:25 -05:00
Brandon Wees
b3372064e0 fix: default zoom level when location is not set (#21428) 2025-08-30 13:33:11 -05:00
Mert
303307e1ac fix(mobile): memory lane query (#21422) 2025-08-29 19:33:58 -05:00
Aaron Liu
f75c9dfe37 fix(devcontainer): logging typo (#21415) 2025-08-29 20:54:42 +00:00
Sergey Katsubo
f5954f4c9b chore(docs): Avoid /data in external library examples (#21357)
* Avoid /data for external libraries

* Remove mention of microservice containers

* Update docs/docs/features/libraries.md

Co-authored-by: Matthew Momjian <50788000+mmomjian@users.noreply.github.com>

---------

Co-authored-by: Matthew Momjian <50788000+mmomjian@users.noreply.github.com>
2025-08-29 10:24:21 -05:00
Min Idzelis
147accd957 fix: fix docker perms for dev (#21359) 2025-08-28 22:07:29 -04:00
Mert
9487241481 fix(server): refresh faces query (#21380) 2025-08-28 20:23:40 -04:00
Sergey Katsubo
460e1d4715 fix(server): folder sort order (#21383) 2025-08-28 20:22:40 -04:00
github-actions
b6223af5ca chore: version v1.140.0 2025-08-28 18:50:45 +00:00
Sudheer Reddy Puthana
8853079c54 feat(mobile): add read only mode (#19368)
* feat(mobile): Add Kid (Readonly) Mode toggle

This commit introduces a "Kid (Readonly) Mode" feature.

- Adds a `KidModeProvider` to manage the state of Kid Mode.
- Implements a `KidModeCheckbox` widget in the app bar dialog to toggle Kid Mode.
- When Kid Mode is enabled,
  - Disables selecting the multigrid & the bottom bar
  - Removes the top bar from view

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

Reverts the changes to devtools_options.yaml file

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

refactor: replace Kid Mode with Readonly Mode

This commit replaces the "Kid Mode" feature with a more generic "Readonly Mode".

- Renamed `KidModeProvider` to `ReadonlyModeProvider`.
- Readonly Mode state is now persisted in app settings.
- Added a new app setting `allowUserAvatarOverride` to toggle read-only mode.
- Updated translations.
- Added a message in the app bar dialog indicating when read-only mode is active.

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

Address comments -

- Removes the `allowUserAvatarOverride` setting.
- Hides the bottom gallery bar when read-only mode is enabled.
- Adds an icon on the main app bar when read-only mode is enabled with a snackbar.

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

Update to snackbar

- When toggling readonly mode from either the settings or the app bar, a snackbar notification will now appear.
- The readonly mode message in the profile drawer has been restyled.
- The upload button in the app bar is now hidden when readonly mode is enabled.

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

Removes clearing of snackbar

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

Address Comments

- Consolidated snackbar messages for enabling/disabling readonly mode.
- Ensured the "Select All" icon in asset group titles is hidden in readonly mode.

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

Adds in the missing translation keys for readonly_mode

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

Fix translation

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

Fix check failure for BorderRadius

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

Changes:
- Adjusted AppBar background color in readonly mode.
- Removes cross-out pencil icon button in favor of above.
- Hides the "Edit" icon next to date/time, disable description and onTap for people and location when readonly mode is enabled.

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

Address comments from Alex

- Moved readonly mode check to `GalleryAppBar` to hide the entire `TopControlAppBar` when readonly mode is enabled.
- Changed `toggleReadonlyMode` in `ImmichAppBar` to directly toggle the state.

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

migrate readonly mode to new beta timeline

remove readonly mode from legacy UI

only show readonly functionality when on beta timeline

simplify selection icon

update generated provider

chore: more formatting

* fix: bad merge

* chore: use Notifier for readonlyModeProvider

* fix: drag select now honors readonly mode

* fix: disable asset bottom sheet in readonly

* fix: disable editing user icon when in readonly

* chore: remove generated file

* fix: disable tabs instead entire tab bar

This solves the issues with the scrubber

* chore: remove unneeded import

* chore: lint

* remove unused condition in bottomsheet

---------

Co-authored-by: Brandon Wees <brandonwees@gmail.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-28 17:30:15 +00:00
Johann
662d44536e feat(web): add geolocation utility (#20758)
* feat(geolocation):  add geolocation utility

* feat(web): geolocation utility - fix code review - 1

* feat(web): geolocation utility - fix code review - 2

* chore: cleanup

* chore: feedback

* feat(web): add animation and text

animation on locations change and action text on thumbnail

* styling, messages and filtering

* selected color

* format i18n

* fix lint

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-28 16:54:11 +00:00
xCJPECKOVERx
80fa5ec198 fix(web): Slideshow fade occurs when not in slideshow (#21326)
- ensure slideshow transition only shows when both enabled and in a slideshow
2025-08-28 11:47:53 -05:00
shenlong
0df88fc22b feat: beta background sync (#21243)
* feat: ios background sync

# Conflicts:
#	mobile/ios/Runner/Info.plist

* feat: Android sync

* add local sync worker and rename stuff

* group upload notifications

* uncomment onresume beta handling

* rename methods

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-28 14:11:54 +00:00
Snowknight26
e78144ea31 fix(web): Translate confirmation modal header and action buttons (#21330)
fix(web): Translate confirmation modal
2025-08-27 22:00:50 -05:00
Mert
227789225a fix(mobile): allow gestures in asset viewer before image is loaded (#21354)
* allow gestures while loading

* disable zoom
2025-08-27 21:52:51 -05:00
renovate[bot]
1298a74230 chore(deps): pin busybox docker tag to ab33eac (#21280)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-27 21:44:19 -05:00
Yaros
a3808c26ce fix(web): middle click not working on videos (#21304)
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-27 21:43:39 -05:00
Yaros
e2169f5316 fix(mobile): fast animations when "disable animations" enabled (#21309)
* fix(mobile): disable animations speed android

* use animationBehavior instead of workaround
2025-08-27 21:42:38 -05:00
Alex
f65dabd43a chore: post release tasks (#21228) 2025-08-27 21:17:56 -05:00
Mert
a5841a8bf4 fix(mobile): memory lane rebuild (#21350)
* avoid unnecessary timeline rebuild

* add key

* handle disabled memories

* avoid rebuild if no memories
2025-08-27 21:16:41 -05:00
Mert
dc6ac3aaec fix(mobile): thumbnail requests not being cancelled (#21331)
* fix requests not being cancelled

* handle thumbhash
2025-08-27 17:40:45 -04:00
prajwal
ae104ad7cc fix(web): add primary text color to file upload toast (#21340)
* fix:add primary text color to file upload toast

* fix:make progress bar visible in dark mode

* fix:make it text-primary

---------

Co-authored-by: prajwal <prajwal@hopbox.in>
2025-08-27 15:51:43 -04:00
Jason Rasmussen
868d5f56e2 fix: motion video extraction race condition (#21285)
fix: motion video extraction race ccondition
2025-08-27 15:10:55 -04:00
Jason Rasmussen
88072910da feat: asset metadata (#20446) 2025-08-27 14:31:23 -04:00
Jason Rasmussen
25a94bd117 fix(web): sign up double click (#21349) 2025-08-27 14:21:34 -04:00
Jason Rasmussen
76eaee3657 fix: timeline scroll error handling (#21324) 2025-08-26 17:07:26 -05:00
Yaros
d5fec0edab fix(mobile): capitalize month & day labels in beta timeline (#21323)
fix(mobile): capitalize month & day labels
2025-08-26 21:32:40 +00:00
xCJPECKOVERx
a7821a0b79 feat(web): Album picker shortcut info (#21273)
* - add shortcut info to album modal footer

* styling

* translation

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-08-26 21:31:58 +00:00
xCJPECKOVERx
73e67ebfea fix(web): album multi-select filter doesn't include other selected albums (#21322)
- submit albums directly from selected ids instead of albumModalRows
2025-08-26 16:30:24 -05:00
Snowknight26
0eaa054218 feat(web): Refresh album page after sharing (#21283) 2025-08-26 16:23:21 -05:00
Alex
2024d06cb7 chore: faq commercial guidelines (#21320) 2025-08-26 20:47:42 +00:00
Yaros
204299d500 fix(mobile): user storage quota not showing (#21263) 2025-08-26 15:34:19 -05:00
Jason Rasmussen
70e59c00d5 fix: invalid storage quota with decimals (#21271) 2025-08-26 14:46:29 -04:00
Mert
5405810a38 fix(mobile): skip animation for offscreen thumbnails (#21277) 2025-08-26 11:49:20 -04:00
Mert
e67265cef2 fix(mobile): caching thumbnails to disk (#21275) 2025-08-26 11:49:12 -04:00
renovate[bot]
19c53609e1 chore(deps): update ghcr.io/immich-app/postgres:14-vectorchord0.3.0 docker digest to 7a4469b (#21286)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-26 11:07:27 +02:00
Jason Rasmussen
0d0bb0e2d9 fix(web): suppress auto-play errors (#21282) 2025-08-25 23:51:56 -04:00
Jason Rasmussen
8f1b505ba0 fix: prevent an offline asset from being used as a person feature photo (#21278) 2025-08-25 22:40:56 -04:00
Jason Rasmussen
d04675fb41 fix: dev-scripts (#21270)
fix/dev-scripts
2025-08-25 17:10:59 -04:00
Jason Rasmussen
acfd40b77a fix: album start/end dates on shared links (#21268) 2025-08-25 17:10:31 -04:00
Jason Rasmussen
840e43430c fix: docs typo (#21269) 2025-08-25 22:43:37 +02:00
Jason Rasmussen
a3e0c6cef5 fix: ignore abort errors (#21262) 2025-08-25 16:42:30 -04:00
Jason Rasmussen
63088b22e0 fix(web): handle multiple downloads in safari (#21259) 2025-08-25 12:59:59 -05:00
xCJPECKOVERx
d9d8beb92f fix(web): Duplicate arrow shortcuts go to next/previous duplicate when viewing assets (#21200)
- get assetviewer state and don't handle next/previous duplicate if isViewing
2025-08-25 13:33:48 -04:00
Jason Rasmussen
38a8a67be9 fix(web): allow numeric input fields to be zero (#21258) 2025-08-25 13:31:32 -04:00
Jason Rasmussen
7531ffcbfb refactor: service worker (#21250) 2025-08-25 11:52:57 -05:00
xCJPECKOVERx
d5f3629c49 fix(web): Album multi-select 'm' shortcut prevents typing m in title box (#21249)
change album multi-select shortcut to ctrl
2025-08-25 11:52:26 -05:00
Alex
be5b4cb1d1 chore: patch createdAt in AssetResponseDto (#21254) 2025-08-25 16:33:21 +00:00
Wingy
5fb8d651ec feat: expose createdAt in getAssetInfo (#21184)
* Expose createdAt in getAssetInfo

* Add missing createdAt fields
2025-08-25 10:27:21 -05:00
Luke Hagar
c2313f7a99 feat: add support for custom headers to TS SDK (#21205)
* Add support for custom headers

* fix: added assertNoApiKey function
2025-08-25 10:25:21 -05:00
Min Idzelis
59627e2b4c fix: devcontainer after pnpm changes (#21227) 2025-08-25 10:24:31 -05:00
gablilli
530bf059ad docs: update italian README: better wording, add some important sections, fixed links and alt texts (#21221) 2025-08-25 15:15:39 +00:00
github-actions
b44d2a241d chore: version v1.139.4 2025-08-25 02:39:18 +00:00
Vietbao Tran
1af10ded74 fix: wait for watched files to finish being written (#17100) (#21180)
This makes the external library watcher wait for files in watched directories to finish being written before queuing jobs for each file.
2025-08-24 21:33:24 -05:00
xCJPECKOVERx
3f1e11afcc chore(server): Improve add to multiple albums via bulk checks and inserts (#21052)
* - add addAssetIdsToAlbums to album repo
- update albumService to determine all albums and assets with access and coalesce into one set of album_assets to insert

* - remove hasAsset check (unnecessary)

* - lint

* - cleanup

* - remove success counts from addAssetsToAlbums results
- Fix tests

* open-api

* await album update
2025-08-24 21:33:10 -05:00
shenlong
28dce2d0df fix: use composite cache key in user circle avatar (#21220)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-08-24 21:32:24 -05:00
Alex
605764f226 chore: post release tasks (#21191) 2025-08-24 21:31:56 -05:00
Min Idzelis
44e1c83c84 fix: isolate docker host/container filesystem for node_modules and build output (#21167) 2025-08-24 13:09:45 -05:00
Lorenzo Farnararo
0729887c9c fix(web): handle edge cases in timeToSeconds function to prevent crashes (#21019)
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2025-08-23 22:42:37 +02:00
Nicholas
3bfa8b7575 fix: border around dark theme button on onboarding page (#20846)
fix border around dark theme button
2025-08-23 15:28:00 -05:00
Alex
3138048b96 fix: cannot load thumbnail from unknown content length (#21192)
* fix: cannot load thumbnail from unknown content length

* pr feedback

* pr feedback
2025-08-23 15:25:12 -05:00
github-actions
f8b41ea8aa chore: version v1.139.3 2025-08-23 16:37:46 +00:00
pojlFDlxCOvZ4Kg8y1l4
1d33ed6bed docs: update oauth.md - Authentik link leads to Page Not Found error (#21186)
Update oauth.md

Updated Authentik link
2025-08-23 16:30:41 +00:00
shenlong
2be1a58c5b fix: prefer local video if available (#21119)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-23 11:18:57 -05:00
Jason Rasmussen
03e7922589 fix: local offset hours (#21147) 2025-08-23 11:09:36 -05:00
Alex
801af34d9a fix: sync flow block oAuth login page navigation (#21187) 2025-08-23 16:09:00 +00:00
Alex
bedaa729e9 chore: post release tasks (#21140) 2025-08-23 11:06:13 -05:00
Alex
13c8a6e61d fix: parse correct metadata to userDto for SQlite store implmentation (#21154) 2025-08-23 11:02:24 -05:00
Alex
01edf6533b fix: shared album asset count query (#21157) 2025-08-23 10:46:40 -05:00
DevServices
30d0bea4df fix(web): add to multiple albums translation doesn't have plural formatting (#21087)
Co-authored-by: xCJPECKOVERx <cjpeckover@hotmail.ca>
2025-08-22 18:52:40 +02:00
github-actions
571504aa5e chore: version v1.139.2 2025-08-21 22:35:59 +00:00
Alex
65fafcab37 chore: manually pump 1.139.1 (#21127) 2025-08-21 22:33:51 +00:00
Alex
2fe0d17fe1 chore: install pnpm in prepare-release GHA (#21126)
* Revert "chore: version v1.139.1"

This reverts commit 89533a858f.

* chore: install pnpm in prepare-release GHA
2025-08-21 17:19:42 -05:00
Alex
b6a91746d8 chore: Revert version v1.139.1 (#21125)
Revert "chore: version v1.139.1"

This reverts commit 89533a858f.
2025-08-21 17:15:11 -05:00
github-actions
89533a858f chore: version v1.139.1 2025-08-21 22:02:08 +00:00
Alex
dc5a0f8c33 chore: pump the pump script (#21122)
* chore: pump the pump script

* pump 1.139.0
2025-08-21 17:00:48 -05:00
Alex
c443ab854c chore: ignore queue retry error (#21069)
* chore: ignore queue retry error

* remove items
2025-08-21 21:22:36 +00:00
Weblate (bot)
379c73818a chore(web): update translations (#20449)
Co-authored-by: -J- <heyj0e@tuta.io>
Co-authored-by: Aaron Fort Garcia <aaronfortg@gmail.com>
Co-authored-by: Abdulaziz Algassem -AKA INTERSTELLAR <INTERSTELLARAG@proton.me>
Co-authored-by: Abhijeet Bonde <abhijeetbonde19@gmail.com>
Co-authored-by: AbuKareem Tuffaha <abukareem.tuffaha@gmail.com>
Co-authored-by: Adam Havránek <adamhavra@seznam.cz>
Co-authored-by: Adán Martin <disadamsdsdnts@gmail.com>
Co-authored-by: Aldil Bhaskoro Anggito Isdwihardjo <aldilbhaskoro@gmail.com>
Co-authored-by: Alessandro Arcangeli <alessandroarcangeli.rm@gmail.com>
Co-authored-by: Alexandre Garnier <zigarn@users.noreply.hosted.weblate.org>
Co-authored-by: Andreas Johansen <andreas@josern.com>
Co-authored-by: Ankit <ankitkr177@gmail.com>
Co-authored-by: Bartłomiej <20731216+Jarsey45@users.noreply.github.com>
Co-authored-by: Bernardo <bernaamg@gmail.com>
Co-authored-by: Carina Chenot <carina.chenot@gmail.com>
Co-authored-by: Chun-Hei Lam <chun.lam18@imperial.ac.uk>
Co-authored-by: Clemens <clemensstouten@gmail.com>
Co-authored-by: Daniel Bar-Dagan <hfmsite@gmail.com>
Co-authored-by: Davide Ciaccia <davideccia@gmail.com>
Co-authored-by: Demartino Marco <marcodemartino23@gmail.com>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: DevServs <bonov@mail.ru>
Co-authored-by: Emilio Risueño <emiliojrg@hotmail.com>
Co-authored-by: Felipe Garcia <garcia.o.felipe@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Francis C <normitomf@gmail.com>
Co-authored-by: Gudkov Gleb <linegm@yandex.ru>
Co-authored-by: Happy <happy2452354@users.noreply.hosted.weblate.org>
Co-authored-by: Harun Al Rasyid <aarunalr@pm.me>
Co-authored-by: Harun Al Rasyid <harunbam3@gmail.com>
Co-authored-by: Hassan Latif <hafizhassanlatif@gmail.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Hồ Nhất Duy <axicenia@gmail.com>
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com>
Co-authored-by: Ivan Dimitrov <idimitrov08@gmail.com>
Co-authored-by: Javier Villanueva García <jvg2203@gmail.com>
Co-authored-by: Jiri Grönroos <jiri.gronroos@iki.fi>
Co-authored-by: Jochem Bruijns <j@bruijns.org>
Co-authored-by: Jordy H <jordy@hoebergen.net>
Co-authored-by: Joshua Dyck <joshua.dyck@gmx.de>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: JustRensio <debouwer741@gmail.com>
Co-authored-by: Kachelkaiser <kachelkaiser@htpst.de>
Co-authored-by: Khalid AlMalki <moshtarek@gmail.com>
Co-authored-by: Lauritz Tieste <lauritz6000000@gmail.com>
Co-authored-by: Lenny Angst <lenny@familie-angst.ch>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: LeonardoCasarotto <leonardo.casar8@gmail.com>
Co-authored-by: Luiz Henrique Moreira de Souza <cloud.5623tumacacori@gmail.com>
Co-authored-by: MSDNicrosoft <wang3311835119@hotmail.com>
Co-authored-by: Malo_F <malofauchetpro@gmail.com>
Co-authored-by: Mate Tohai <admin@tmate6.com>
Co-authored-by: Mathias <mathkot59@gmail.com>
Co-authored-by: Mathias Peene <mathiaspeene@proton.me>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Matteo Marchi <marchimatteo@gmail.com>
Co-authored-by: Matteo Morari <matteo.morari04@gmail.com>
Co-authored-by: Maximilian <maxi@kazba.eu>
Co-authored-by: Mazharul Islam <mazharkafi@gmail.com>
Co-authored-by: Md. Asifur Rahman <meblasif@gmail.com>
Co-authored-by: Mher Saribekyan <saribekyanmher@gmail.com>
Co-authored-by: Mikko Asikainen <mikko@asikainen.com>
Co-authored-by: MuxuTruk <musutruk.music@gmail.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Nguyen Huy <hyquaq@gmail.com>
Co-authored-by: Nick Huang <nick80322@gmail.com>
Co-authored-by: Nico Kaiser <nico@kaiser.me>
Co-authored-by: Nicolò <nicveronese@gmail.com>
Co-authored-by: Oleksandr Yurov <oyurov@icloud.com>
Co-authored-by: Olivier Berten <olivier.berten@gmail.com>
Co-authored-by: Pavel Kazutsin <kazyten@ya.ru>
Co-authored-by: Pavel Miniutka <pavel.miniutka@gmail.com>
Co-authored-by: Petri Hämäläinen <petri.hamalainen@mailbox.org>
Co-authored-by: PontusÖsterlindh <pontus@osterlindh.com>
Co-authored-by: Ravipas Charoenwari <ravipasch@gmail.com>
Co-authored-by: Red Cyclops <shown-bleep-spiffy@duck.com>
Co-authored-by: Ron Turner <admin@meetronturner.com>
Co-authored-by: Runskrift <anders@rimfrost.nu>
Co-authored-by: Santiago <santiwever@hotmail.com>
Co-authored-by: Sergey Katsubo <skatsubo@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Shihfu Juan <xlion@xlion.tw>
Co-authored-by: Sil Klaasboer <silklaasboer@outlook.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: TC Kuo <cot@embraced.co>
Co-authored-by: Taiki M <vexingly-many-mace@duck.com>
Co-authored-by: Theodor Onarheim <thbo@startmail.com>
Co-authored-by: Tijs-B <tijs.bergmans@telenet.be>
Co-authored-by: Toasterfritzi <friedrichmaitre1@gmail.com>
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: Vladimir Cazacu <faptdivers@gmail.com>
Co-authored-by: Wim Joostens <wim.joostens@gmail.com>
Co-authored-by: Xabier Blanch Górriz <xabierblanch@gmail.com>
Co-authored-by: Yago Raña Gayoso <yago.rana.gayoso@gmail.com>
Co-authored-by: Yuvaraj J <jyuvaraj03@gmail.com>
Co-authored-by: Zvonimir <zzrakic@protonmail.com>
Co-authored-by: abb128 <abb128@sapples.net>
Co-authored-by: adri1m64 <adrien.melle@laposte.net>
Co-authored-by: bornacrncic98 <bornacrncic98@gmail.com>
Co-authored-by: chamdim <chamdim@protonmail.com>
Co-authored-by: dark&white <darkwhite@users.noreply.hosted.weblate.org>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: fireflies38 <norm@jbehn.de>
Co-authored-by: gablilli <gabriele.lilli0511@gmail.com>
Co-authored-by: juan david Barreto <zerodarkzone@gmail.com>
Co-authored-by: labolstad <lasse.bolstad@gmail.com>
Co-authored-by: meep <meep@meeps.dev>
Co-authored-by: nazo6 <git@nazo6.dev>
Co-authored-by: nested-universe <ekzistadismo@gmail.com>
Co-authored-by: nosajthenitram <nosajthenitram@cafemartin.com>
Co-authored-by: pawel <Pikim@tlen.pl>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: therry47 <soulietherry@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: Мĕтри Сантăр ывалĕ Упа-Миччи <mefisteron@gmail.com>
Co-authored-by: Максим Горпиніч <gorpinicmaksim0@gmail.com>
Co-authored-by: Максим Горпиніч <gorpinicmaksim5@gmail.com>
Co-authored-by: Михаил Захаров <mike.zaharov@gmail.com>
Co-authored-by: 안세훈 <on9686@gmail.com>
2025-08-21 20:48:05 +00:00
Alex
73bb05c5f9 chore: Revert version v1.139.0 (#21121)
Revert "chore: version v1.139.0"

This reverts commit b69470c69e.
2025-08-21 20:41:46 +00:00
github-actions
b69470c69e chore: version v1.139.0 2025-08-21 20:26:48 +00:00
Daniel Dietzler
34255453b1 chore: update docs to use pnpm (#21113) 2025-08-21 15:25:05 -05:00
Arthur Normand
4e03b06ff7 feat: add a counter to the duplicate utility (#21109)
Added a counter to the duplicate utility
2025-08-21 15:21:31 -05:00
Alex
9bb211f56f fix: thumbnail rendering on backup asset detail tile (#21120) 2025-08-21 20:20:29 +00:00
shenlong
6f4f79d8cc feat: migrate store to sqlite (#21078)
* add store entity and migration

* make store service take both isar and drift repos

* migrate and switch store on beta timeline state change

* chore: make drift variables final

* dispose old store before switching repos

* use store to update values for beta timeline

* change log service to use the proper store

* migrate store when beta already enabled

* use isar repository to check beta timeline in store service

* remove unused update method from store repo

* dispose after create

* change watchAll signature in store repo

* fix test

* rename init isar to initDB

* request user to close and reopen on beta migration

* fix tests

* handle empty version in migration

* wait for cache to be populated after migration

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-21 14:58:50 -05:00
shenlong
ed3997d844 fix: skip albums selected or excluded from backups from deletions (#21116)
* skip albums selected or excluded from backups from deletions

* filter empty local albums from library page

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-08-21 13:44:07 -05:00
Mert
fb59fa343d feat(mobile): optimized thumbnail widget (#21073)
* thumbnail widget

* use animation ticker, improvements

* use static thumbnail resolution for now

* fix android sample size

* free memory sooner

* formatting

* tweaks

* wait for disposal

* remove debug prints

* take two on animation

* fix

* remote constructor

* missed one

* unused imports

* unnecessary import

* formatting
2025-08-21 18:06:02 +00:00
Alex
ab2849781a feat: show remainder assets info (#21114)
* feat: show remainder assets info

* pr feedback
2025-08-21 17:18:31 +00:00
Jason Rasmussen
66c657ca8a chore: remove web/Dockerfile (#21096) 2025-08-21 12:55:23 -04:00
Alex
c245208106 fix: resume upload on launch (really fix it) (#21106) 2025-08-21 02:36:03 +00:00
Mert
99d6673503 feat(mobile): platform image providers (#20927)
* platform image providers

* use key

* fix cache manager

* more logs, cancel on dispose instead

* split into separate files

* fix saving to cache

* cancel multi-stage provider

* refactored `getInitialImage`

* only wait for disposal for full images

* cached image works

* formatting

* lower asset viewer ram usage

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-20 19:36:44 +00:00
Jason Rasmussen
9ff37b6870 chore: bump multer (#21100) 2025-08-20 14:16:22 -04:00
Alex
0e7816130b chore: use foreground service for uploading large file on Android (#21095)
* chore: use foreground service for uploading large file on Android

* Update main.dart

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

* Update mobile/lib/main.dart

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

---------

Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>
2025-08-20 22:59:24 +05:30
shenlong
a1beb0a87d chore: update build and test mobile actions to not use npm (#21079)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-08-19 22:50:48 -05:00
xCJPECKOVERx
c4ac2e345f fix(web): add to multiple albums translation doesn't have plural formatting (#21076) 2025-08-20 01:55:09 +00:00
Alex
f422b341d1 chore: generate mobile translation file in GHA (#21070) 2025-08-19 16:13:35 -05:00
bo0tzz
90538d2535 chore: device input field for issue template (#21066) 2025-08-19 17:13:52 +00:00
Mert
abc7bfa0ba feat(mobile): platform thumbnail api (#20910) 2025-08-19 12:48:35 -04:00
renovate[bot]
60a809d7b4 fix(deps): update typescript-projects (#20879)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2025-08-19 15:28:43 +01:00
Alex
cda7249a6a fix: add to multi album selection (#21061) 2025-08-19 09:21:18 -05:00
Thomas
47566c1a4a chore(web): make search result loading behaviour more consistent (#20741)
The current behaviour will intersect if the page is scrolled about 90% down
which works okay for a small number of assets, but does not scale well with
large amounts of assets. Instead of relying in proportional values, it may be
more sensible to use a consistent measure for loading more pages. A simple and
sensible suggestion may be to load another page when there is only one more
viewport worth of assets to display. It can be refined and revisited in future,
but it seems to work relatively well in my testing and prevents the issues
which occur with large amounts of assets.

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-19 09:09:39 -05:00
renovate[bot]
f08002d48f chore(deps): update docker.io/valkey/valkey:8-bookworm docker digest to a137a2b (#21043)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-19 09:13:24 -04:00
renovate[bot]
7186914531 chore(deps): update github-actions (#20875)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-19 09:12:27 -04:00
renovate[bot]
d38ab93484 chore(deps): update base-image to v202508191104 (major) (#21049)
chore(deps): update base-image to v202508191104

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-19 09:11:49 -04:00
Min Idzelis
845b0f2073 chore: use pnpm for builds (#19752)
* Migrate from npm to pnpm across entire project

• Update all GitHub workflow files to use pnpm instead of npm
• Replace npm commands with pnpm equivalents in devcontainer scripts
• Remove package-lock.json files and update to use pnpm-lock.yaml
• Consolidate node version references to use server/.nvmrc

* Refine pnpm migration based on review feedback

• Replace SKIP_SHARP_FILTERING with SHARP_IGNORE_GLOBAL_LIBVIPS environment variable
• Improve Sharp package filtering to include specific Linux architectures for Docker builds
• Optimize Dockerfile dependency caching with improved layer structure
• Clean up workspace configuration and remove redundant settings

* Address additional review feedback for pnpm migration

• Fix node-version-file paths in GitHub workflow configurations
• Refactor .pnpmfile.cjs to use switch statement for better code organization
• Correct cache type typo in fix-format workflow
• Simplify Vite configuration by merging configs inline
• Update package description for consistency

* Use 'server/.nvmrc' for fix-format.yml GHA

* Delete npm locks

* Remove Docker volume isolation for node_modules directories

• Remove volume mounts for node_modules and related directories
• Allow shared access between host and container filesystem
• Update init container to handle file ownership with conditional existence check

* Remove unused Docker volumes and volume mounts

• Remove node_modules volume mounts from devcontainer configuration
• Remove unused named volumes for pnpm-store, node_modules, and cache directories
• Clean up Docker Compose configuration after removing volume isolation

* Fix typescript-sdk package issues

• Remove unknown "build" dependency that was incorrectly added to package.json
• Update pnpm-lock.yaml to reflect dependency removal

* Add pnpm setup to mobile workflow for translation formatting

• Add pnpm action setup step to mobile unit tests workflow
• Required for translation file formatting and sorting operations

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-08-19 08:55:24 -04:00
Alex
acb1e513a7 chore: post release tasks (#21042) 2025-08-19 08:37:17 -04:00
renovate[bot]
4d4e54967d chore(deps): update grafana/grafana docker tag to v12.1.1 (#21048)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-19 13:02:57 +01:00
renovate[bot]
e2dcebfe6c chore(deps): update dependency @types/node to ^22.17.1 (#21047)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-19 13:13:49 +02:00
Arthur Normand
d4f2b43f64 fix: improve duplicate utility text contrast (#21045) 2025-08-19 02:18:52 +00:00
Arthur Normand
f343b0e58f fix: always show resolution in details panel (#21046)
Always show resolution in details panel
2025-08-19 02:17:45 +00:00
Aaron Tulino
a8b4a5e856 fix(mobile): sort local album by most recently modified (#21038)
Sort with SQL instead

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-19 02:13:40 +00:00
renovate[bot]
e7e030279b fix(deps): update machine-learning (#21044) 2025-08-18 21:55:49 -04:00
xCJPECKOVERx
9ff664ed36 feat(web): Add to Multiple Albums (#20072)
* Multi add to album picker:
- update modal for multi select
- Update add-to-album and add-to-album-action to work with new array return from AlbumPickerModal
- Add asset-utils.addAssetsToAlbums (incomplete)

* initial addToAlbums endpoint

* - fix endpoint
- add test

* - update return type
- make open-api

* - simplify return dto
- handle notification

* - fix returns
- clean up

* - update i18n
- format & check

* - checks

* - correct successId count
- fix assets_cannot_be_added language call

* tests

* foromat

* refactor

* - update successful add message to included total attempted

* - fix web test
- format i18n

* - fix open-api

* - fix imports to resolve checks

* - PR suggestions

* open-api

* refactor addAssetsToAlbums

* refactor it again

* - fix error returns and tests

* - swap icon for IconButton
- don't nest the buttons

* open-api

* - Cleanup multi-select button to match Thumbnail

* merge and openapi

* - remove onclick from icon element

* - fix double onClose call with keyboard shortcuts

* - spelling and formatting
- apply new api permission

* - open-api

* chore: styling

* translation

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-08-19 00:42:47 +00:00
Jason Rasmussen
e00556a34a feat: get metadata about the current api key (#21027) 2025-08-18 18:15:03 -05:00
xCJPECKOVERx
a313e4338e feat(web): Skip duplicates (#20880)
* - add skip button to duplicates-compare-control

* - cleanup

* - change to next/previous
- move buttons to duplicates page, intead of compareControl
- add param based control/position

* - remove index param on keep/dedupe all

* - cleanup

* - cleanup index corrections

* - add left/right arrow keyboard shortcuts for previous/next
- cleanup

* - cleanup
2025-08-18 18:11:53 -05:00
Aaron Tulino
257b0c74af fix(mobile): show most recent image in album as thumbnail (#21037)
Show most recent image in album as thumbnail
Fixes #21004
2025-08-18 18:02:18 -05:00
github-actions
3d515f5072 chore: version v1.138.1 2025-08-18 15:23:35 +00:00
Alex
ec01db5c8b refactor: bottom sheet action button (#20964)
* fix: incorrect archive action shown in asset viewer'

* Refactor

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

* add like buttons and fix behavior of unliking

* fix: conditionally show activity button and fix title truncations

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

* fix(mobile): newest/oldest album sort

* chore: use sqlite to determine album asset timestamps

* Fix missing future

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

* fix: async handling of sort

* chore: tests

* chore: code review changes

* fix: use created at for newest asset

* fix: use localDateTime for sorting

* chore: cleanup

* chore: use final

* feat: loading indicator

---------

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

---------

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

* fix: memory leaked

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

* chore: use sqlite to determine album asset timestamps

* Fix missing future

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

* fix: async handling of sort

* chore: tests

* chore: code review changes

* fix: use created at for newest asset

* fix: use localDateTime for sorting

* chore: cleanup

* chore: use final

* feat: loading indicator

---------

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

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

* typing fixes

---------

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

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

* update tests

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

* delete album notifier pull

* feat: sync local after saving image

* feat: queue asset for manual upload after saving

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

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

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

* chore: fix formatting

* chore: different close message for fork PRs

---------

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

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

* fix: lint

---------

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

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

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

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

* fix: tests

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

* chore: move setupAll to top level and restructure

* chore: code review changes

* fix: inherits

* feat: raise log line limit to 2000

* limit getAll to 250 lines

* delete DLog and make LogRepository not a singleton

* fix: drift build settings and `make migration`

* fix: tests

* remove sensitive log

---------

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

* refactor: map query

* perf: do not filter markers

* fix: refresh timeline by key

* chore: rename

* remove ref listen and global key

* clean code

* remove locked and favorite

* temporary change for stress test

* optimizations

* fix bottom sheet

* cleaner bounds check

* cleanup

* feat: back button

---------

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

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

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

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

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

* wrap get info with a try catch

---------

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

* const constructor
2025-08-06 07:58:54 -05:00
Zack Pollard
fa26d0de33 refactor: new helper methods that work for all sync queries (#20690)
refactor: new helper methods that work for all sync queries
2025-08-06 08:34:12 -04:00
674 changed files with 84723 additions and 70815 deletions

View File

@@ -5,7 +5,8 @@
"immich-server", "immich-server",
"redis", "redis",
"database", "database",
"immich-machine-learning" "immich-machine-learning",
"init"
], ],
"dockerComposeFile": [ "dockerComposeFile": [
"../docker/docker-compose.dev.yml", "../docker/docker-compose.dev.yml",

View File

@@ -49,10 +49,11 @@ fix_permissions() {
log "Fixing permissions for ${IMMICH_WORKSPACE}" log "Fixing permissions for ${IMMICH_WORKSPACE}"
run_cmd sudo find "${IMMICH_WORKSPACE}/server/upload" -not -path "${IMMICH_WORKSPACE}/server/upload/postgres/*" -not -path "${IMMICH_WORKSPACE}/server/upload/postgres" -exec chown node {} +
# Change ownership for directories that exist # Change ownership for directories that exist
for dir in "${IMMICH_WORKSPACE}/.vscode" \ for dir in "${IMMICH_WORKSPACE}/.vscode" \
"${IMMICH_WORKSPACE}/server/upload" \
"${IMMICH_WORKSPACE}/.pnpm-store" \
"${IMMICH_WORKSPACE}/.github/node_modules" \
"${IMMICH_WORKSPACE}/cli/node_modules" \ "${IMMICH_WORKSPACE}/cli/node_modules" \
"${IMMICH_WORKSPACE}/e2e/node_modules" \ "${IMMICH_WORKSPACE}/e2e/node_modules" \
"${IMMICH_WORKSPACE}/open-api/typescript-sdk/node_modules" \ "${IMMICH_WORKSPACE}/open-api/typescript-sdk/node_modules" \

View File

@@ -8,21 +8,27 @@ services:
- IMMICH_SERVER_URL=http://127.0.0.1:2283/ - IMMICH_SERVER_URL=http://127.0.0.1:2283/
volumes: !override volumes: !override
- ..:/workspaces/immich - ..:/workspaces/immich
- cli_node_modules:/workspaces/immich/cli/node_modules
- e2e_node_modules:/workspaces/immich/e2e/node_modules
- open_api_node_modules:/workspaces/immich/open-api/typescript-sdk/node_modules
- server_node_modules:/workspaces/immich/server/node_modules
- web_node_modules:/workspaces/immich/web/node_modules
- ${UPLOAD_LOCATION:-upload1-devcontainer-volume}${UPLOAD_LOCATION:+/photos}:/data - ${UPLOAD_LOCATION:-upload1-devcontainer-volume}${UPLOAD_LOCATION:+/photos}:/data
- ${UPLOAD_LOCATION:-upload2-devcontainer-volume}${UPLOAD_LOCATION:+/photos/upload}:/data/upload - ${UPLOAD_LOCATION:-upload2-devcontainer-volume}${UPLOAD_LOCATION:+/photos/upload}:/data/upload
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
- pnpm-store:/usr/src/app/.pnpm-store
- server-node_modules:/usr/src/app/server/node_modules
- web-node_modules:/usr/src/app/web/node_modules
- github-node_modules:/usr/src/app/.github/node_modules
- cli-node_modules:/usr/src/app/cli/node_modules
- docs-node_modules:/usr/src/app/docs/node_modules
- e2e-node_modules:/usr/src/app/e2e/node_modules
- sdk-node_modules:/usr/src/app/open-api/typescript-sdk/node_modules
- app-node_modules:/usr/src/app/node_modules
- sveltekit:/usr/src/app/web/.svelte-kit
- coverage:/usr/src/app/web/coverage
immich-web: immich-web:
env_file: !reset [] env_file: !reset []
init:
env_file: !reset []
command: sh -c 'find /data -maxdepth 1 ! -path "/data/postgres" -type d -exec chown ${UID:-1000}:${GID:-1000} {} + 2>/dev/null || true; for path in /usr/src/app/.pnpm-store /usr/src/app/server/node_modules /usr/src/app/server/dist /usr/src/app/.github/node_modules /usr/src/app/cli/node_modules /usr/src/app/docs/node_modules /usr/src/app/e2e/node_modules /usr/src/app/open-api/typescript-sdk/node_modules /usr/src/app/web/.svelte-kit /usr/src/app/web/coverage /usr/src/app/node_modules /usr/src/app/web/node_modules; do [ -e "$$path" ] && chown -R ${UID:-1000}:${GID:-1000} "$$path" || true; done'
immich-machine-learning: immich-machine-learning:
env_file: !reset [] env_file: !reset []
database: database:
env_file: !reset [] env_file: !reset []
environment: !override environment: !override
@@ -33,17 +39,10 @@ services:
POSTGRES_HOST_AUTH_METHOD: md5 POSTGRES_HOST_AUTH_METHOD: md5
volumes: volumes:
- ${UPLOAD_LOCATION:-postgres-devcontainer-volume}${UPLOAD_LOCATION:+/postgres}:/var/lib/postgresql/data - ${UPLOAD_LOCATION:-postgres-devcontainer-volume}${UPLOAD_LOCATION:+/postgres}:/var/lib/postgresql/data
redis: redis:
env_file: !reset [] env_file: !reset []
volumes: volumes:
# Node modules for each service to avoid conflicts and ensure consistent dependencies # Node modules for each service to avoid conflicts and ensure consistent dependencies
cli_node_modules:
e2e_node_modules:
open_api_node_modules:
server_node_modules:
web_node_modules:
upload1-devcontainer-volume: upload1-devcontainer-volume:
upload2-devcontainer-volume: upload2-devcontainer-volume:
postgres-devcontainer-volume: postgres-devcontainer-volume:

View File

@@ -3,6 +3,11 @@
# shellcheck disable=SC1091 # shellcheck disable=SC1091
source /immich-devcontainer/container-common.sh source /immich-devcontainer/container-common.sh
log "Preparing Immich Nest API Server"
log ""
export CI=1
run_cmd pnpm --filter immich install
log "Starting Nest API Server" log "Starting Nest API Server"
log "" log ""
cd "${IMMICH_WORKSPACE}/server" || ( cd "${IMMICH_WORKSPACE}/server" || (
@@ -11,7 +16,7 @@ cd "${IMMICH_WORKSPACE}/server" || (
) )
while true; do while true; do
run_cmd node ./node_modules/.bin/nest start --debug "0.0.0.0:9230" --watch run_cmd pnpm --filter immich exec nest start --debug "0.0.0.0:9230" --watch
log "Nest API Server crashed with exit code $?. Respawning in 3s ..." log "Nest API Server crashed with exit code $?. Respawning in 3s ..."
sleep 3 sleep 3
done done

View File

@@ -3,6 +3,13 @@
# shellcheck disable=SC1091 # shellcheck disable=SC1091
source /immich-devcontainer/container-common.sh source /immich-devcontainer/container-common.sh
export CI=1
log "Preparing Immich Web Frontend"
log ""
run_cmd pnpm --filter @immich/sdk install
run_cmd pnpm --filter @immich/sdk build
run_cmd pnpm --filter immich-web install
log "Starting Immich Web Frontend" log "Starting Immich Web Frontend"
log "" log ""
cd "${IMMICH_WORKSPACE}/web" || ( cd "${IMMICH_WORKSPACE}/web" || (
@@ -16,7 +23,7 @@ until curl --output /dev/null --silent --head --fail "http://127.0.0.1:${IMMICH_
done done
while true; do while true; do
run_cmd node ./node_modules/.bin/vite dev --host 0.0.0.0 --port "${DEV_PORT}" run_cmd pnpm --filter immich-web exec vite dev --host 0.0.0.0 --port "${DEV_PORT}"
log "Web crashed with exit code $?. Respawning in 3s ..." log "Web crashed with exit code $?. Respawning in 3s ..."
sleep 3 sleep 3
done done

View File

@@ -6,9 +6,6 @@ source /immich-devcontainer/container-common.sh
log "Setting up Immich dev container..." log "Setting up Immich dev container..."
fix_permissions fix_permissions
log "Installing npm dependencies (node_modules)..."
install_dependencies
log "Setup complete, please wait while backend and frontend services automatically start" log "Setup complete, please wait while backend and frontend services automatically start"
log log
log "If necessary, the services may be manually started using" log "If necessary, the services may be manually started using"

2
.github/.nvmrc vendored
View File

@@ -1 +1 @@
22.18.0 22.19.0

View File

@@ -64,6 +64,11 @@ body:
- label: Web - label: Web
- label: Mobile - label: Mobile
- type: input
attributes:
label: Device make and model
placeholder: Samsung S25 Android 16
- type: textarea - type: textarea
validations: validations:
required: true required: true

28
.github/package-lock.json generated vendored
View File

@@ -1,28 +0,0 @@
{
"name": ".github",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"devDependencies": {
"prettier": "^3.5.3"
}
},
"node_modules/prettier": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz",
"integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
"dev": true,
"license": "MIT",
"bin": {
"prettier": "bin/prettier.cjs"
},
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
}
}
}
}

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 - [ ] 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/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/`) - [ ] 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,7 +35,7 @@ jobs:
should_run: ${{ steps.found_paths.outputs.mobile == 'true' || steps.should_force.outputs.should_force == 'true' }} should_run: ${{ steps.found_paths.outputs.mobile == 'true' || steps.should_force.outputs.should_force == 'true' }}
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
@@ -61,7 +61,7 @@ jobs:
runs-on: mich runs-on: mich
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
ref: ${{ inputs.ref || github.sha }} ref: ${{ inputs.ref || github.sha }}
persist-credentials: false persist-credentials: false
@@ -79,7 +79,7 @@ jobs:
- name: Restore Gradle Cache - name: Restore Gradle Cache
id: cache-gradle-restore id: cache-gradle-restore
uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4 uses: actions/cache/restore@0400d5f644dc74513175e3cd8d07132dd4860809 # v4
with: with:
path: | path: |
~/.gradle/caches ~/.gradle/caches
@@ -106,7 +106,7 @@ jobs:
run: flutter pub get run: flutter pub get
- name: Generate translation file - name: Generate translation file
run: make translation run: dart run easy_localization:generate -S ../i18n && dart run bin/generate_keys.dart
working-directory: ./mobile working-directory: ./mobile
- name: Generate platform APIs - name: Generate platform APIs
@@ -136,7 +136,7 @@ jobs:
- name: Save Gradle Cache - name: Save Gradle Cache
id: cache-gradle-save id: cache-gradle-save
uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4 uses: actions/cache/save@0400d5f644dc74513175e3cd8d07132dd4860809 # v4
if: github.ref == 'refs/heads/main' if: github.ref == 'refs/heads/main'
with: with:
path: | path: |

View File

@@ -19,7 +19,7 @@ jobs:
actions: write actions: write
steps: steps:
- name: Check out code - name: Check out code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false

View File

@@ -29,25 +29,28 @@ jobs:
working-directory: ./cli working-directory: ./cli
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
# Setup .npmrc file to publish to npm - name: Setup pnpm
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with: with:
node-version-file: './cli/.nvmrc' node-version-file: './cli/.nvmrc'
registry-url: 'https://registry.npmjs.org' registry-url: 'https://registry.npmjs.org'
cache: 'npm' cache: 'pnpm'
cache-dependency-path: '**/package-lock.json' cache-dependency-path: '**/pnpm-lock.yaml'
- name: Prepare SDK - name: Setup typescript-sdk
run: npm ci --prefix ../open-api/typescript-sdk/ run: pnpm install && pnpm run build
- name: Build SDK working-directory: ./open-api/typescript-sdk
run: npm run build --prefix ../open-api/typescript-sdk/
- run: npm ci - run: pnpm install --frozen-lockfile
- run: npm run build - run: pnpm build
- run: npm publish - run: pnpm publish
if: ${{ github.event_name == 'release' }} if: ${{ github.event_name == 'release' }}
env: env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
@@ -62,7 +65,7 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
@@ -73,7 +76,7 @@ jobs:
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1 uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Login to GitHub Container Registry - name: Login to GitHub Container Registry
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
if: ${{ !github.event.pull_request.head.repo.fork }} if: ${{ !github.event.pull_request.head.repo.fork }}
with: with:
registry: ghcr.io registry: ghcr.io
@@ -88,7 +91,7 @@ jobs:
- name: Generate docker image tags - name: Generate docker image tags
id: metadata id: metadata
uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0 uses: docker/metadata-action@c1e51972afc2121e065aed6d45c65596fe445f3f # v5.8.0
with: with:
flavor: | flavor: |
latest=false latest=false

View File

@@ -8,8 +8,18 @@ name: Close likely duplicates
permissions: {} permissions: {}
jobs: jobs:
should_run:
runs-on: ubuntu-latest
outputs:
should_run: ${{ steps.should_run.outputs.run }}
steps:
- id: should_run
run: echo "run=${{ github.event_name == 'issues' || github.event.discussion.category.name == 'Feature Request' }}" >> $GITHUB_OUTPUT
get_body: get_body:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: should_run
if: ${{ needs.should_run.outputs.should_run == 'true' }}
env: env:
EVENT: ${{ toJSON(github.event) }} EVENT: ${{ toJSON(github.event) }}
outputs: outputs:
@@ -22,23 +32,25 @@ jobs:
get_checkbox_json: get_checkbox_json:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: get_body needs: [get_body, should_run]
if: ${{ needs.should_run.outputs.should_run == 'true' }}
container: container:
image: yshavit/mdq:0.7.2 image: yshavit/mdq:0.8.0@sha256:c69224d34224a0043d9a3ee46679ba4a2a25afaac445f293d92afe13cd47fcea
outputs: outputs:
json: ${{ steps.get_checkbox.outputs.json }} json: ${{ steps.get_checkbox.outputs.json }}
steps: steps:
- id: get_checkbox - id: get_checkbox
env: env:
BODY: ${{ needs.get_body.outputs.body }} 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: | run: |
JSON=$(echo "$BODY" | base64 -d | /mdq --output json '# I have searched | - [?] Yes') JSON=$(echo "$BODY" | base64 -d | /mdq --output json '# I have searched | - [?] Yes')
echo "json=$JSON" >> $GITHUB_OUTPUT echo "json=$JSON" >> $GITHUB_OUTPUT
close_and_comment: close_and_comment:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: get_checkbox_json needs: [get_checkbox_json, should_run]
if: ${{ !fromJSON(needs.get_checkbox_json.outputs.json).items[0].list[0].checked }} if: ${{ needs.should_run.outputs.should_run == 'true' && !fromJSON(needs.get_checkbox_json.outputs.json).items[0].list[0].checked }}
permissions: permissions:
issues: write issues: write
discussions: write discussions: write
@@ -51,7 +63,7 @@ jobs:
run: | run: |
gh api graphql \ gh api graphql \
-f issueId="$NODE_ID" \ -f issueId="$NODE_ID" \
-f body="This issue has automatically been closed as it is likely a duplicate. We get a lot of duplicate threads each day, which is why we ask you in the template to confirm that you searched for duplicates before opening one." \ -f body="This issue has automatically been closed as it is likely a duplicate. We get a lot of duplicate threads each day, which is why we ask you in the template to confirm that you searched for duplicates before opening one. If you're sure this is not a duplicate, please leave a comment and we will reopen the thread if necessary." \
-f query=' -f query='
mutation CommentAndCloseIssue($issueId: ID!, $body: String!) { mutation CommentAndCloseIssue($issueId: ID!, $body: String!) {
addComment(input: { addComment(input: {
@@ -77,7 +89,7 @@ jobs:
run: | run: |
gh api graphql \ gh api graphql \
-f discussionId="$NODE_ID" \ -f discussionId="$NODE_ID" \
-f body="This discussion has automatically been closed as it is likely a duplicate. We get a lot of duplicate threads each day, which is why we ask you in the template to confirm that you searched for duplicates before opening one." \ -f body="This discussion has automatically been closed as it is likely a duplicate. We get a lot of duplicate threads each day, which is why we ask you in the template to confirm that you searched for duplicates before opening one. If you're sure this is not a duplicate, please leave a comment and we will reopen the thread if necessary." \
-f query=' -f query='
mutation CommentAndCloseDiscussion($discussionId: ID!, $body: String!) { mutation CommentAndCloseDiscussion($discussionId: ID!, $body: String!) {
addDiscussionComment(input: { addDiscussionComment(input: {

View File

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

View File

@@ -24,7 +24,7 @@ jobs:
should_run_ml: ${{ steps.found_paths.outputs.machine-learning == 'true' || steps.should_force.outputs.should_force == 'true' }} should_run_ml: ${{ steps.found_paths.outputs.machine-learning == 'true' || steps.should_force.outputs.should_force == 'true' }}
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- id: found_paths - id: found_paths
@@ -60,7 +60,7 @@ jobs:
suffix: ['', '-cuda', '-rocm', '-openvino', '-armnn', '-rknn'] suffix: ['', '-cuda', '-rocm', '-openvino', '-armnn', '-rknn']
steps: steps:
- name: Login to GitHub Container Registry - name: Login to GitHub Container Registry
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
with: with:
registry: ghcr.io registry: ghcr.io
username: ${{ github.repository_owner }} username: ${{ github.repository_owner }}
@@ -89,7 +89,7 @@ jobs:
suffix: [''] suffix: ['']
steps: steps:
- name: Login to GitHub Container Registry - name: Login to GitHub Container Registry
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
with: with:
registry: ghcr.io registry: ghcr.io
username: ${{ github.repository_owner }} username: ${{ github.repository_owner }}

View File

@@ -21,7 +21,7 @@ jobs:
should_run: ${{ steps.found_paths.outputs.docs == 'true' || steps.found_paths.outputs.open-api == 'true' || steps.should_force.outputs.should_force == 'true' }} should_run: ${{ steps.found_paths.outputs.docs == 'true' || steps.found_paths.outputs.open-api == 'true' || steps.should_force.outputs.should_force == 'true' }}
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- id: found_paths - id: found_paths
@@ -51,25 +51,28 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node - name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with: with:
node-version-file: './docs/.nvmrc' node-version-file: './docs/.nvmrc'
cache: 'npm' cache: 'pnpm'
cache-dependency-path: '**/package-lock.json' cache-dependency-path: '**/pnpm-lock.yaml'
- name: Run npm install - name: Run install
run: npm ci run: pnpm install
- name: Check formatting - name: Check formatting
run: npm run format run: pnpm format
- name: Run build - name: Run build
run: npm run build run: pnpm build
- name: Upload build output - name: Upload build output
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2

View File

@@ -108,7 +108,7 @@ jobs:
if: ${{ fromJson(needs.checks.outputs.artifact).found && fromJson(needs.checks.outputs.parameters).shouldDeploy }} if: ${{ fromJson(needs.checks.outputs.artifact).found && fromJson(needs.checks.outputs.parameters).shouldDeploy }}
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false

View File

@@ -14,7 +14,7 @@ jobs:
pull-requests: write pull-requests: write
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false

View File

@@ -16,13 +16,13 @@ jobs:
steps: steps:
- name: Generate a token - name: Generate a token
id: generate-token id: generate-token
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6 uses: actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.1
with: with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }} app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: 'Checkout' - name: 'Checkout'
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
ref: ${{ github.event.pull_request.head.ref }} ref: ${{ github.event.pull_request.head.ref }}
token: ${{ steps.generate-token.outputs.token }} token: ${{ steps.generate-token.outputs.token }}
@@ -32,8 +32,8 @@ jobs:
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with: with:
node-version-file: './server/.nvmrc' node-version-file: './server/.nvmrc'
cache: 'npm' cache: 'pnpm'
cache-dependency-path: '**/package-lock.json' cache-dependency-path: '**/pnpm-lock.yaml'
- name: Fix formatting - name: Fix formatting
run: make install-all && make format-all run: make install-all && make format-all

View File

@@ -0,0 +1,96 @@
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
gh pr list --repo $GITHUB_REPOSITORY --author weblate --json number,mergeable | read PR
echo "$PR"
echo "$PR" | jq '
if length == 1 then
.[0].number
else
error("Expected exactly 1 entry, got \(length)")
end
' 2>&1 | read PR_NUMBER || exit 1
echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_OUTPUT
echo "Selected PR $PR_NUMBER"
echo "$PR" | jq -e '.[0].mergeable == "MERGEABLE"' || { echo "PR is not mergeable" ; exit 1 }
- 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 -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 -X POST -H "Authorization: Token $WEBLATE_TOKEN" "$WEBLATE_HOST/api/components/$WEBLATE_COMPONENT/repository/" -d operation=commit
curl -X POST -H "Authorization: Token $WEBLATE_TOKEN" "$WEBLATE_HOST/api/components/$WEBLATE_COMPONENT/repository/" -d operation=push
- name: Merge PR
env:
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
PR_NUMBER: ${{ steps.find_pr.outputs.PR_NUMBER }}
run: |
gh api -X POST "repos/$GITHUB_REPOSITORY/pulls/$PR_NUMBER/reviews" --field event='APPROVE' --field body='Automatically merging translations PR' \
| jq '.id' | read REVIEW_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: |
for i in {1..10}; do
if gh pr view "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --json merged | jq -e '.merged == true'; 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 -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: {} permissions: {}
jobs: 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: bump_version:
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:
@@ -32,13 +41,13 @@ jobs:
steps: steps:
- name: Generate a token - name: Generate a token
id: generate-token id: generate-token
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6 uses: actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.1
with: with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }} app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout - name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
token: ${{ steps.generate-token.outputs.token }} token: ${{ steps.generate-token.outputs.token }}
persist-credentials: true persist-credentials: true
@@ -46,6 +55,16 @@ jobs:
- name: Install uv - name: Install uv
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2 uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
cache-dependency-path: '**/pnpm-lock.yaml'
- name: Bump version - name: Bump version
env: env:
SERVER_BUMP: ${{ inputs.serverBump }} SERVER_BUMP: ${{ inputs.serverBump }}
@@ -83,13 +102,13 @@ jobs:
steps: steps:
- name: Generate a token - name: Generate a token
id: generate-token id: generate-token
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6 uses: actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.1
with: with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }} app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }} private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout - name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
token: ${{ steps.generate-token.outputs.token }} token: ${{ steps.generate-token.outputs.token }}
persist-credentials: false persist-credentials: false

View File

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

View File

@@ -16,22 +16,25 @@ jobs:
run: run:
working-directory: ./open-api/typescript-sdk working-directory: ./open-api/typescript-sdk
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
# Setup .npmrc file to publish to npm # Setup .npmrc file to publish to npm
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with: with:
node-version-file: './open-api/typescript-sdk/.nvmrc' node-version-file: './open-api/typescript-sdk/.nvmrc'
registry-url: 'https://registry.npmjs.org' registry-url: 'https://registry.npmjs.org'
cache: 'npm' cache: 'pnpm'
cache-dependency-path: '**/package-lock.json' cache-dependency-path: '**/pnpm-lock.yaml'
- name: Install deps - name: Install deps
run: npm ci run: pnpm install --frozen-lockfile
- name: Build - name: Build
run: npm run build run: pnpm build
- name: Publish - name: Publish
run: npm publish run: pnpm publish
env: env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

View File

@@ -20,7 +20,7 @@ jobs:
should_run: ${{ steps.found_paths.outputs.mobile == 'true' || steps.should_force.outputs.should_force == 'true' }} should_run: ${{ steps.found_paths.outputs.mobile == 'true' || steps.should_force.outputs.should_force == 'true' }}
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- id: found_paths - id: found_paths
@@ -47,7 +47,7 @@ jobs:
working-directory: ./mobile working-directory: ./mobile
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
@@ -68,7 +68,7 @@ jobs:
working-directory: ./mobile working-directory: ./mobile
- name: Generate translation file - name: Generate translation file
run: make translation run: dart run easy_localization:generate -S ../i18n && dart run bin/generate_keys.dart
- name: Run Build Runner - name: Run Build Runner
run: make build run: make build
@@ -116,7 +116,7 @@ jobs:
actions: read actions: read
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
@@ -129,7 +129,7 @@ jobs:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload SARIF file - name: Upload SARIF file
uses: github/codeql-action/upload-sarif@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5 uses: github/codeql-action/upload-sarif@df559355d593797519d70b90fc8edd5db049e7a2 # v3.29.9
with: with:
sarif_file: results.sarif sarif_file: results.sarif
category: zizmor category: zizmor

View File

@@ -4,13 +4,10 @@ on:
pull_request: pull_request:
push: push:
branches: [main] branches: [main]
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true cancel-in-progress: true
permissions: {} permissions: {}
jobs: jobs:
pre-job: pre-job:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -29,10 +26,9 @@ jobs:
should_run_.github: ${{ steps.found_paths.outputs['.github'] == 'true' || steps.should_force.outputs.should_force == 'true' }} # redundant to have should_force but if someone changes the trigger then this won't have to be changed should_run_.github: ${{ steps.found_paths.outputs['.github'] == 'true' || steps.should_force.outputs.should_force == 'true' }} # redundant to have should_force but if someone changes the trigger then this won't have to be changed
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- id: found_paths - id: found_paths
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
with: with:
@@ -58,11 +54,9 @@ jobs:
- '.github/workflows/test.yml' - '.github/workflows/test.yml'
.github: .github:
- '.github/**' - '.github/**'
- name: Check if we should force jobs to run - name: Check if we should force jobs to run
id: should_force id: should_force
run: echo "should_force=${{ steps.found_paths.outputs.workflow == 'true' || github.event_name == 'workflow_dispatch' }}" >> "$GITHUB_OUTPUT" run: echo "should_force=${{ steps.found_paths.outputs.workflow == 'true' || github.event_name == 'workflow_dispatch' }}" >> "$GITHUB_OUTPUT"
server-unit-tests: server-unit-tests:
name: Test & Lint Server name: Test & Lint Server
needs: pre-job needs: pre-job
@@ -73,39 +67,33 @@ jobs:
defaults: defaults:
run: run:
working-directory: ./server working-directory: ./server
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node - name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with: with:
node-version-file: './server/.nvmrc' node-version-file: './server/.nvmrc'
cache: 'npm' cache: 'pnpm'
cache-dependency-path: '**/package-lock.json' cache-dependency-path: '**/pnpm-lock.yaml'
- name: Run package manager install
- name: Run npm install run: pnpm install
run: npm ci
- name: Run linter - name: Run linter
run: npm run lint run: pnpm lint
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Run formatter - name: Run formatter
run: npm run format run: pnpm format
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Run tsc - name: Run tsc
run: npm run check run: pnpm check
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Run small tests & coverage - name: Run small tests & coverage
run: npm test run: pnpm test
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
cli-unit-tests: cli-unit-tests:
name: Unit Test CLI name: Unit Test CLI
needs: pre-job needs: pre-job
@@ -116,43 +104,36 @@ jobs:
defaults: defaults:
run: run:
working-directory: ./cli working-directory: ./cli
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node - name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with: with:
node-version-file: './cli/.nvmrc' node-version-file: './cli/.nvmrc'
cache: 'npm' cache: 'pnpm'
cache-dependency-path: '**/package-lock.json' cache-dependency-path: '**/pnpm-lock.yaml'
- name: Setup typescript-sdk - name: Setup typescript-sdk
run: npm ci && npm run build run: pnpm install && pnpm run build
working-directory: ./open-api/typescript-sdk working-directory: ./open-api/typescript-sdk
- name: Install deps - name: Install deps
run: npm ci run: pnpm install
- name: Run linter - name: Run linter
run: npm run lint run: pnpm lint
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Run formatter - name: Run formatter
run: npm run format run: pnpm format
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Run tsc - name: Run tsc
run: npm run check run: pnpm check
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Run unit tests & coverage - name: Run unit tests & coverage
run: npm run test run: pnpm test
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
cli-unit-tests-win: cli-unit-tests-win:
name: Unit Test CLI (Windows) name: Unit Test CLI (Windows)
needs: pre-job needs: pre-job
@@ -163,36 +144,31 @@ jobs:
defaults: defaults:
run: run:
working-directory: ./cli working-directory: ./cli
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node - name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with: with:
node-version-file: './cli/.nvmrc' node-version-file: './cli/.nvmrc'
cache: 'npm' cache: 'pnpm'
cache-dependency-path: '**/package-lock.json' cache-dependency-path: '**/pnpm-lock.yaml'
- name: Setup typescript-sdk - name: Setup typescript-sdk
run: npm ci && npm run build run: pnpm install --frozen-lockfile && pnpm build
working-directory: ./open-api/typescript-sdk working-directory: ./open-api/typescript-sdk
- name: Install deps - name: Install deps
run: npm ci run: pnpm install --frozen-lockfile
# Skip linter & formatter in Windows test. # Skip linter & formatter in Windows test.
- name: Run tsc - name: Run tsc
run: npm run check run: pnpm check
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Run unit tests & coverage - name: Run unit tests & coverage
run: npm run test run: pnpm test
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
web-lint: web-lint:
name: Lint Web name: Lint Web
needs: pre-job needs: pre-job
@@ -203,39 +179,33 @@ jobs:
defaults: defaults:
run: run:
working-directory: ./web working-directory: ./web
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node - name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with: with:
node-version-file: './web/.nvmrc' node-version-file: './web/.nvmrc'
cache: 'npm' cache: 'pnpm'
cache-dependency-path: '**/package-lock.json' cache-dependency-path: '**/pnpm-lock.yaml'
- name: Run setup typescript-sdk - name: Run setup typescript-sdk
run: npm ci && npm run build run: pnpm install --frozen-lockfile && pnpm build
working-directory: ./open-api/typescript-sdk working-directory: ./open-api/typescript-sdk
- name: Run pnpm install
- name: Run npm install run: pnpm rebuild && pnpm install --frozen-lockfile
run: npm ci
- name: Run linter - name: Run linter
run: npm run lint:p run: pnpm lint:p
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Run formatter - name: Run formatter
run: npm run format run: pnpm format
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Run svelte checks - name: Run svelte checks
run: npm run check:svelte run: pnpm check:svelte
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
web-unit-tests: web-unit-tests:
name: Test Web name: Test Web
needs: pre-job needs: pre-job
@@ -246,35 +216,30 @@ jobs:
defaults: defaults:
run: run:
working-directory: ./web working-directory: ./web
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node - name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with: with:
node-version-file: './web/.nvmrc' node-version-file: './web/.nvmrc'
cache: 'npm' cache: 'pnpm'
cache-dependency-path: '**/package-lock.json' cache-dependency-path: '**/pnpm-lock.yaml'
- name: Run setup typescript-sdk - name: Run setup typescript-sdk
run: npm ci && npm run build run: pnpm install --frozen-lockfile && pnpm build
working-directory: ./open-api/typescript-sdk working-directory: ./open-api/typescript-sdk
- name: Run npm install - name: Run npm install
run: npm ci run: pnpm install --frozen-lockfile
- name: Run tsc - name: Run tsc
run: npm run check:typescript run: pnpm check:typescript
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Run unit tests & coverage - name: Run unit tests & coverage
run: npm run test run: pnpm test
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
i18n-tests: i18n-tests:
name: Test i18n name: Test i18n
needs: pre-job needs: pre-job
@@ -284,30 +249,27 @@ jobs:
contents: read contents: read
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node - name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with: with:
node-version-file: './web/.nvmrc' node-version-file: './web/.nvmrc'
cache: 'npm' cache: 'pnpm'
cache-dependency-path: '**/package-lock.json' cache-dependency-path: '**/pnpm-lock.yaml'
- name: Install dependencies - name: Install dependencies
run: npm --prefix=web ci run: pnpm --filter=immich-web install --frozen-lockfile
- name: Format - name: Format
run: npm --prefix=web run format:i18n run: pnpm --filter=immich-web format:i18n
- name: Find file changes - name: Find file changes
uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20.0.4 uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20.0.4
id: verify-changed-files id: verify-changed-files
with: with:
files: | files: |
i18n/** i18n/**
- name: Verify files have not changed - name: Verify files have not changed
if: steps.verify-changed-files.outputs.files_changed == 'true' if: steps.verify-changed-files.outputs.files_changed == 'true'
env: env:
@@ -316,7 +278,6 @@ jobs:
echo "ERROR: i18n files not up to date!" echo "ERROR: i18n files not up to date!"
echo "Changed files: ${CHANGED_FILES}" echo "Changed files: ${CHANGED_FILES}"
exit 1 exit 1
e2e-tests-lint: e2e-tests-lint:
name: End-to-End Lint name: End-to-End Lint
needs: pre-job needs: pre-job
@@ -327,41 +288,35 @@ jobs:
defaults: defaults:
run: run:
working-directory: ./e2e working-directory: ./e2e
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node - name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with: with:
node-version-file: './e2e/.nvmrc' node-version-file: './e2e/.nvmrc'
cache: 'npm' cache: 'pnpm'
cache-dependency-path: '**/package-lock.json' cache-dependency-path: '**/pnpm-lock.yaml'
- name: Run setup typescript-sdk - name: Run setup typescript-sdk
run: npm ci && npm run build run: pnpm install --frozen-lockfile && pnpm build
working-directory: ./open-api/typescript-sdk working-directory: ./open-api/typescript-sdk
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Install dependencies - name: Install dependencies
run: npm ci run: pnpm install --frozen-lockfile
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Run linter - name: Run linter
run: npm run lint run: pnpm lint
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Run formatter - name: Run formatter
run: npm run format run: pnpm format
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Run tsc - name: Run tsc
run: npm run check run: pnpm check
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
server-medium-tests: server-medium-tests:
name: Medium Tests (Server) name: Medium Tests (Server)
needs: pre-job needs: pre-job
@@ -372,27 +327,24 @@ jobs:
defaults: defaults:
run: run:
working-directory: ./server working-directory: ./server
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node - name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with: with:
node-version-file: './server/.nvmrc' node-version-file: './server/.nvmrc'
cache: 'npm' cache: 'pnpm'
cache-dependency-path: '**/package-lock.json' cache-dependency-path: '**/pnpm-lock.yaml'
- name: Run pnpm install
- name: Run npm install run: SHARP_IGNORE_GLOBAL_LIBVIPS=true pnpm install --frozen-lockfile
run: npm ci
- name: Run medium tests - name: Run medium tests
run: npm run test:medium run: pnpm test:medium
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
e2e-tests-server-cli: e2e-tests-server-cli:
name: End-to-End Tests (Server & CLI) name: End-to-End Tests (Server & CLI)
needs: pre-job needs: pre-job
@@ -406,43 +358,41 @@ jobs:
strategy: strategy:
matrix: matrix:
runner: [ubuntu-latest, ubuntu-24.04-arm] runner: [ubuntu-latest, ubuntu-24.04-arm]
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
submodules: 'recursive' submodules: 'recursive'
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node - name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with: with:
node-version-file: './e2e/.nvmrc' node-version-file: './e2e/.nvmrc'
cache: 'npm' cache: 'pnpm'
cache-dependency-path: '**/package-lock.json' cache-dependency-path: '**/pnpm-lock.yaml'
- name: Run setup typescript-sdk - name: Run setup typescript-sdk
run: npm ci && npm run build run: pnpm install --frozen-lockfile && pnpm build
working-directory: ./open-api/typescript-sdk working-directory: ./open-api/typescript-sdk
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Run setup web
run: pnpm install --frozen-lockfile && pnpm exec svelte-kit sync
working-directory: ./web
if: ${{ !cancelled() }}
- name: Run setup cli - name: Run setup cli
run: npm ci && npm run build run: pnpm install --frozen-lockfile && pnpm build
working-directory: ./cli working-directory: ./cli
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Install dependencies - name: Install dependencies
run: npm ci run: pnpm install --frozen-lockfile
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Docker build - name: Docker build
run: docker compose build run: docker compose build
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Run e2e tests (api & cli) - name: Run e2e tests (api & cli)
run: npm run test run: pnpm test
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
e2e-tests-web: e2e-tests-web:
name: End-to-End Tests (Web) name: End-to-End Tests (Web)
needs: pre-job needs: pre-job
@@ -456,42 +406,36 @@ jobs:
strategy: strategy:
matrix: matrix:
runner: [ubuntu-latest, ubuntu-24.04-arm] runner: [ubuntu-latest, ubuntu-24.04-arm]
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
submodules: 'recursive' submodules: 'recursive'
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node - name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with: with:
node-version-file: './e2e/.nvmrc' node-version-file: './e2e/.nvmrc'
cache: 'npm' cache: 'pnpm'
cache-dependency-path: '**/package-lock.json' cache-dependency-path: '**/pnpm-lock.yaml'
- name: Run setup typescript-sdk - name: Run setup typescript-sdk
run: npm ci && npm run build run: pnpm install --frozen-lockfile && pnpm build
working-directory: ./open-api/typescript-sdk working-directory: ./open-api/typescript-sdk
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Install dependencies - name: Install dependencies
run: npm ci run: pnpm install --frozen-lockfile
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Install Playwright Browsers - name: Install Playwright Browsers
run: npx playwright install chromium --only-shell run: npx playwright install chromium --only-shell
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Docker build - name: Docker build
run: docker compose build run: docker compose build
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
- name: Run e2e tests (web) - name: Run e2e tests (web)
run: npx playwright test run: npx playwright test
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
success-check-e2e: success-check-e2e:
name: End-to-End Tests Success name: End-to-End Tests Success
needs: [e2e-tests-server-cli, e2e-tests-web] needs: [e2e-tests-server-cli, e2e-tests-web]
@@ -502,7 +446,6 @@ jobs:
- uses: immich-app/devtools/actions/success-check@68f10eb389bb02a3cf9d1156111964c549eb421b # 0.0.4 - uses: immich-app/devtools/actions/success-check@68f10eb389bb02a3cf9d1156111964c549eb421b # 0.0.4
with: with:
needs: ${{ toJSON(needs) }} needs: ${{ toJSON(needs) }}
mobile-unit-tests: mobile-unit-tests:
name: Unit Test Mobile name: Unit Test Mobile
needs: pre-job needs: pre-job
@@ -511,24 +454,20 @@ jobs:
permissions: permissions:
contents: read contents: read
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- name: Setup Flutter SDK - name: Setup Flutter SDK
uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2.21.0 uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2.21.0
with: with:
channel: 'stable' channel: 'stable'
flutter-version-file: ./mobile/pubspec.yaml flutter-version-file: ./mobile/pubspec.yaml
- name: Generate translation file - name: Generate translation file
run: make translation run: dart run easy_localization:generate -S ../i18n && dart run bin/generate_keys.dart
working-directory: ./mobile working-directory: ./mobile
- name: Run tests - name: Run tests
working-directory: ./mobile working-directory: ./mobile
run: flutter test -j 1 run: flutter test -j 1
ml-unit-tests: ml-unit-tests:
name: Unit Test ML name: Unit Test ML
needs: pre-job needs: pre-job
@@ -540,10 +479,9 @@ jobs:
run: run:
working-directory: ./machine-learning working-directory: ./machine-learning
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- name: Install uv - name: Install uv
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2 uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
@@ -566,7 +504,6 @@ jobs:
- name: Run tests and coverage - name: Run tests and coverage
run: | run: |
uv run pytest --cov=immich_ml --cov-report term-missing uv run pytest --cov=immich_ml --cov-report term-missing
github-files-formatting: github-files-formatting:
name: .github Files Formatting name: .github Files Formatting
needs: pre-job needs: pre-job
@@ -577,45 +514,38 @@ jobs:
defaults: defaults:
run: run:
working-directory: ./.github working-directory: ./.github
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node - name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with: with:
node-version-file: './.github/.nvmrc' node-version-file: './.github/.nvmrc'
cache: 'npm' cache: 'pnpm'
cache-dependency-path: '**/package-lock.json' cache-dependency-path: '**/pnpm-lock.yaml'
- name: Run pnpm install
- name: Run npm install run: pnpm install --frozen-lockfile
run: npm ci
- name: Run formatter - name: Run formatter
run: npm run format run: pnpm format
if: ${{ !cancelled() }} if: ${{ !cancelled() }}
shellcheck: shellcheck:
name: ShellCheck name: ShellCheck
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: permissions:
contents: read contents: read
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- name: Run ShellCheck - name: Run ShellCheck
uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38 # 2.0.0 uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38 # 2.0.0
with: with:
ignore_paths: >- ignore_paths: >-
**/open-api/** **/open-api/** **/openapi** **/node_modules/**
**/openapi**
**/node_modules/**
generated-api-up-to-date: generated-api-up-to-date:
name: OpenAPI Clients name: OpenAPI Clients
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -623,26 +553,24 @@ jobs:
contents: read contents: read
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node - name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with: with:
node-version-file: './server/.nvmrc' node-version-file: './server/.nvmrc'
cache: 'npm' cache: 'pnpm'
cache-dependency-path: '**/package-lock.json' cache-dependency-path: '**/pnpm-lock.yaml'
- name: Install server dependencies - name: Install server dependencies
run: npm --prefix=server ci run: SHARP_IGNORE_GLOBAL_LIBVIPS=true pnpm --filter immich install --frozen-lockfile
- name: Build the app - name: Build the app
run: npm --prefix=server run build run: pnpm --filter immich build
- name: Run API generation - name: Run API generation
run: make open-api run: ./bin/generate-open-api.sh
working-directory: open-api
- name: Find file changes - name: Find file changes
uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20.0.4 uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20.0.4
id: verify-changed-files id: verify-changed-files
@@ -651,7 +579,6 @@ jobs:
mobile/openapi mobile/openapi
open-api/typescript-sdk open-api/typescript-sdk
open-api/immich-openapi-specs.json open-api/immich-openapi-specs.json
- name: Verify files have not changed - name: Verify files have not changed
if: steps.verify-changed-files.outputs.files_changed == 'true' if: steps.verify-changed-files.outputs.files_changed == 'true'
env: env:
@@ -660,7 +587,6 @@ jobs:
echo "ERROR: Generated files not up to date!" echo "ERROR: Generated files not up to date!"
echo "Changed files: ${CHANGED_FILES}" echo "Changed files: ${CHANGED_FILES}"
exit 1 exit 1
sql-schema-up-to-date: sql-schema-up-to-date:
name: SQL Schema Checks name: SQL Schema Checks
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -674,45 +600,36 @@ jobs:
POSTGRES_USER: postgres POSTGRES_USER: postgres
POSTGRES_DB: immich POSTGRES_DB: immich
options: >- options: >-
--health-cmd pg_isready --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports: ports:
- 5432:5432 - 5432:5432
defaults: defaults:
run: run:
working-directory: ./server working-directory: ./server
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Setup Node - name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with: with:
node-version-file: './server/.nvmrc' node-version-file: './server/.nvmrc'
cache: 'npm' cache: 'pnpm'
cache-dependency-path: '**/package-lock.json' cache-dependency-path: '**/pnpm-lock.yaml'
- name: Install server dependencies - name: Install server dependencies
run: npm ci run: SHARP_IGNORE_GLOBAL_LIBVIPS=true pnpm install --frozen-lockfile
- name: Build the app - name: Build the app
run: npm run build run: pnpm build
- name: Run existing migrations - name: Run existing migrations
run: npm run migrations:run run: pnpm migrations:run
- name: Test npm run schema:reset command works - name: Test npm run schema:reset command works
run: npm run schema:reset run: pnpm schema:reset
- name: Generate new migrations - name: Generate new migrations
continue-on-error: true continue-on-error: true
run: npm run migrations:generate src/TestMigration run: pnpm migrations:generate src/TestMigration
- name: Find file changes - name: Find file changes
uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20.0.4 uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20.0.4
id: verify-changed-files id: verify-changed-files
@@ -728,19 +645,16 @@ jobs:
echo "Changed files: ${CHANGED_FILES}" echo "Changed files: ${CHANGED_FILES}"
cat ./src/*-TestMigration.ts cat ./src/*-TestMigration.ts
exit 1 exit 1
- name: Run SQL generation - name: Run SQL generation
run: npm run sync:sql run: pnpm sync:sql
env: env:
DB_URL: postgres://postgres:postgres@localhost:5432/immich DB_URL: postgres://postgres:postgres@localhost:5432/immich
- name: Find file changes - name: Find file changes
uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20.0.4 uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20.0.4
id: verify-changed-sql-files id: verify-changed-sql-files
with: with:
files: | files: |
server/src/queries server/src/queries
- name: Verify SQL files have not changed - name: Verify SQL files have not changed
if: steps.verify-changed-sql-files.outputs.files_changed == 'true' if: steps.verify-changed-sql-files.outputs.files_changed == 'true'
env: env:
@@ -751,77 +665,77 @@ jobs:
git diff git diff
exit 1 exit 1
# mobile-integration-tests: # mobile-integration-tests:
# name: Run mobile end-to-end integration tests # name: Run mobile end-to-end integration tests
# runs-on: macos-latest # runs-on: macos-latest
# steps: # steps:
# - uses: actions/checkout@v4 # - uses: actions/checkout@v4
# - uses: actions/setup-java@v3 # - uses: actions/setup-java@v3
# with: # with:
# distribution: 'zulu' # distribution: 'zulu'
# java-version: '12.x' # java-version: '12.x'
# cache: 'gradle' # cache: 'gradle'
# - name: Cache android SDK # - name: Cache android SDK
# uses: actions/cache@v3 # uses: actions/cache@v3
# id: android-sdk # id: android-sdk
# with: # with:
# key: android-sdk # key: android-sdk
# path: | # path: |
# /usr/local/lib/android/ # /usr/local/lib/android/
# ~/.android # ~/.android
# - name: Cache Gradle # - name: Cache Gradle
# uses: actions/cache@v3 # uses: actions/cache@v3
# with: # with:
# path: | # path: |
# ./mobile/build/ # ./mobile/build/
# ./mobile/android/.gradle/ # ./mobile/android/.gradle/
# key: ${{ runner.os }}-flutter-${{ hashFiles('**/*.gradle*', 'pubspec.lock') }} # key: ${{ runner.os }}-flutter-${{ hashFiles('**/*.gradle*', 'pubspec.lock') }}
# - name: Setup Android SDK # - name: Setup Android SDK
# if: steps.android-sdk.outputs.cache-hit != 'true' # if: steps.android-sdk.outputs.cache-hit != 'true'
# uses: android-actions/setup-android@v2 # uses: android-actions/setup-android@v2
# - name: AVD cache # - name: AVD cache
# uses: actions/cache@v3 # uses: actions/cache@v3
# id: avd-cache # id: avd-cache
# with: # with:
# path: | # path: |
# ~/.android/avd/* # ~/.android/avd/*
# ~/.android/adb* # ~/.android/adb*
# key: avd-29 # key: avd-29
# - name: create AVD and generate snapshot for caching # - name: create AVD and generate snapshot for caching
# if: steps.avd-cache.outputs.cache-hit != 'true' # if: steps.avd-cache.outputs.cache-hit != 'true'
# uses: reactivecircus/android-emulator-runner@v2.27.0 # uses: reactivecircus/android-emulator-runner@v2.27.0
# with: # with:
# working-directory: ./mobile # working-directory: ./mobile
# cores: 2 # cores: 2
# api-level: 29 # api-level: 29
# arch: x86_64 # arch: x86_64
# profile: pixel # profile: pixel
# target: default # target: default
# force-avd-creation: false # force-avd-creation: false
# emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none # emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
# disable-animations: false # disable-animations: false
# script: echo "Generated AVD snapshot for caching." # script: echo "Generated AVD snapshot for caching."
# - name: Setup Flutter SDK # - name: Setup Flutter SDK
# uses: subosito/flutter-action@v2 # uses: subosito/flutter-action@v2
# with: # with:
# channel: 'stable' # channel: 'stable'
# flutter-version: '3.7.3' # flutter-version: '3.7.3'
# cache: true # cache: true
# - name: Run integration tests # - name: Run integration tests
# uses: Wandalen/wretry.action@master # uses: Wandalen/wretry.action@master
# with: # with:
# action: reactivecircus/android-emulator-runner@v2.27.0 # action: reactivecircus/android-emulator-runner@v2.27.0
# with: | # with: |
# working-directory: ./mobile # working-directory: ./mobile
# cores: 2 # cores: 2
# api-level: 29 # api-level: 29
# arch: x86_64 # arch: x86_64
# profile: pixel # profile: pixel
# target: default # target: default
# force-avd-creation: false # force-avd-creation: false
# emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none # emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
# disable-animations: true # disable-animations: true
# script: | # script: |
# flutter pub get # flutter pub get
# flutter test integration_test # flutter test integration_test
# attempt_limit: 3 # attempt_limit: 3

View File

@@ -1,6 +1,7 @@
name: Weblate checks name: Weblate checks
on: on:
pull_request_review:
pull_request: pull_request:
branches: [main] branches: [main]
@@ -12,10 +13,10 @@ jobs:
permissions: permissions:
contents: read contents: read
outputs: outputs:
should_run: ${{ steps.found_paths.outputs.i18n == 'true' && github.head_ref != 'chore/translations'}} should_run: ${{ steps.found_paths.outputs.i18n == 'true' }}
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with: with:
persist-credentials: false persist-credentials: false
- id: found_paths - id: found_paths
@@ -32,19 +33,15 @@ jobs:
permissions: {} permissions: {}
if: ${{ needs.pre-job.outputs.should_run == 'true' }} if: ${{ needs.pre-job.outputs.should_run == 'true' }}
steps: 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: | run: |
if [[ "false" = $(curl https://hosted.weblate.org/api/components/immich/immich/lock/ | jq .locked) ]]; then # Then check for APPROVED by the bot, if absent fail
exit 1 gh pr view "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --json reviews | jq -e '.reviews | map(select(.author.login == "github-actions[bot]" and .state == "APPROVED")) | length > 0' \
fi || (echo "The push-o-matic bot has not approved this PR yet" && exit 1)
- 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
success-check-lock: success-check-lock:
name: Weblate Lock Check Success name: Weblate Lock Check Success
needs: [enforce-lock] needs: [enforce-lock]

18
.pnpmfile.cjs Normal file
View File

@@ -0,0 +1,18 @@
module.exports = {
hooks: {
readPackage: (pkg) => {
if (!pkg.name) {
return pkg;
}
if (pkg.name === "exiftool-vendored") {
if (pkg.optionalDependencies["exiftool-vendored.pl"]) {
// make exiftool-vendored.pl a regular dependency
pkg.dependencies["exiftool-vendored.pl"] =
pkg.optionalDependencies["exiftool-vendored.pl"];
delete pkg.optionalDependencies["exiftool-vendored.pl"];
}
}
return pkg;
},
},
};

View File

@@ -56,7 +56,8 @@
"explorer.fileNesting.enabled": true, "explorer.fileNesting.enabled": true,
"explorer.fileNesting.patterns": { "explorer.fileNesting.patterns": {
"*.dart": "${capture}.g.dart,${capture}.gr.dart,${capture}.drift.dart", "*.dart": "${capture}.g.dart,${capture}.gr.dart,${capture}.drift.dart",
"*.ts": "${capture}.spec.ts,${capture}.mock.ts" "*.ts": "${capture}.spec.ts,${capture}.mock.ts",
"package.json": "package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb, bun.lock, pnpm-workspace.yaml, .pnpmfile.cjs"
}, },
"svelte.enable-ts-plugin": true, "svelte.enable-ts-plugin": true,
"typescript.preferences.importModuleSpecifier": "non-relative" "typescript.preferences.importModuleSpecifier": "non-relative"

145
Makefile
View File

@@ -1,18 +1,21 @@
dev: dev: prepare-volumes
@trap 'make dev-down' EXIT; COMPOSE_BAKE=true docker compose -f ./docker/docker-compose.dev.yml up --remove-orphans @trap 'make dev-down' EXIT; COMPOSE_BAKE=true docker compose -f ./docker/docker-compose.dev.yml up --remove-orphans
dev-down: dev-down:
docker compose -f ./docker/docker-compose.dev.yml down --remove-orphans docker compose -f ./docker/docker-compose.dev.yml down --remove-orphans
dev-update: dev-update: prepare-volumes
@trap 'make dev-down' EXIT; COMPOSE_BAKE=true docker compose -f ./docker/docker-compose.dev.yml up --build -V --remove-orphans @trap 'make dev-down' EXIT; COMPOSE_BAKE=true docker compose -f ./docker/docker-compose.dev.yml up --build -V --remove-orphans
dev-scale: 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 @trap 'make dev-down' EXIT; COMPOSE_BAKE=true docker compose -f ./docker/docker-compose.dev.yml up --build -V --scale immich-server=3 --remove-orphans
dev-docs:
npm --prefix docs run start
.PHONY: e2e .PHONY: e2e
e2e: e2e:
@trap 'make e2e-down' EXIT; COMPOSE_BAKE=true docker compose -f ./e2e/docker-compose.yml up --build -V --remove-orphans @trap 'make e2e-down' EXIT; COMPOSE_BAKE=true docker compose -f ./e2e/docker-compose.yml up --remove-orphans
e2e-update: e2e-update:
@trap 'make e2e-down' EXIT; COMPOSE_BAKE=true docker compose -f ./e2e/docker-compose.yml up --build -V --remove-orphans @trap 'make e2e-down' EXIT; COMPOSE_BAKE=true docker compose -f ./e2e/docker-compose.yml up --build -V --remove-orphans
@@ -20,7 +23,7 @@ e2e-update:
e2e-down: e2e-down:
docker compose -f ./e2e/docker-compose.yml down --remove-orphans docker compose -f ./e2e/docker-compose.yml down --remove-orphans
prod: prod:
@trap 'make prod-down' EXIT; COMPOSE_BAKE=true docker compose -f ./docker/docker-compose.prod.yml up --build -V --remove-orphans @trap 'make prod-down' EXIT; COMPOSE_BAKE=true docker compose -f ./docker/docker-compose.prod.yml up --build -V --remove-orphans
prod-down: prod-down:
@@ -30,17 +33,17 @@ prod-scale:
@trap 'make prod-down' EXIT; COMPOSE_BAKE=true docker compose -f ./docker/docker-compose.prod.yml up --build -V --scale immich-server=3 --scale immich-microservices=3 --remove-orphans @trap 'make prod-down' EXIT; COMPOSE_BAKE=true docker compose -f ./docker/docker-compose.prod.yml up --build -V --scale immich-server=3 --scale immich-microservices=3 --remove-orphans
.PHONY: open-api .PHONY: open-api
open-api: open-api: prepare-volumes
cd ./open-api && bash ./bin/generate-open-api.sh cd ./open-api && bash ./bin/generate-open-api.sh
open-api-dart: open-api-dart: prepare-volumes
cd ./open-api && bash ./bin/generate-open-api.sh dart cd ./open-api && bash ./bin/generate-open-api.sh dart
open-api-typescript: open-api-typescript: prepare-volumes
cd ./open-api && bash ./bin/generate-open-api.sh typescript cd ./open-api && bash ./bin/generate-open-api.sh typescript
sql: sql: prepare-volumes
npm --prefix server run sync:sql pnpm --filter immich run sync:sql
attach-server: attach-server:
docker exec -it docker_immich-server_1 sh docker exec -it docker_immich-server_1 sh
@@ -48,33 +51,87 @@ attach-server:
renovate: renovate:
LOG_LEVEL=debug npx renovate --platform=local --repository-cache=reset LOG_LEVEL=debug npx renovate --platform=local --repository-cache=reset
# Directories that need to be created for volumes or build output
VOLUME_DIRS = \
./.pnpm-store \
./web/.svelte-kit \
./web/node_modules \
./web/coverage \
./e2e/node_modules \
./docs/node_modules \
./server/node_modules \
./open-api/typescript-sdk/node_modules \
./.github/node_modules \
./node_modules \
./cli/node_modules
# Include .env file if it exists
-include docker/.env
# Helper function to chown, on error suggest remediation and exit
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;
endef
# create empty directories and chown
prepare-volumes:
@$(foreach dir,$(VOLUME_DIRS),mkdir -p $(dir);)
@$(foreach dir,$(VOLUME_DIRS),$(call safe_chown,$(dir),-R))
ifneq ($(UPLOAD_LOCATION),)
ifeq ($(filter /%,$(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)/photos/upload"
@$(call safe_chown,$(UPLOAD_LOCATION),)
@$(call safe_chown,$(UPLOAD_LOCATION)/photos,-R)
endif
endif
MODULES = e2e server web cli sdk docs .github MODULES = e2e server web cli sdk docs .github
# directory to package name mapping function
# cli = @immich/cli
# docs = documentation
# e2e = immich-e2e
# open-api/typescript-sdk = @immich/sdk
# server = immich
# web = immich-web
map-package = $(subst sdk,@immich/sdk,$(subst cli,@immich/cli,$(subst docs,documentation,$(subst e2e,immich-e2e,$(subst server,immich,$(subst web,immich-web,$1))))))
audit-%: audit-%:
npm --prefix $(subst sdk,open-api/typescript-sdk,$*) audit fix pnpm --filter $(call map-package,$*) audit fix
install-%: install-%:
npm --prefix $(subst sdk,open-api/typescript-sdk,$*) i pnpm --filter $(call map-package,$*) install $(if $(FROZEN),--frozen-lockfile) $(if $(OFFLINE),--offline)
ci-%:
npm --prefix $(subst sdk,open-api/typescript-sdk,$*) ci
build-cli: build-sdk build-cli: build-sdk
build-web: build-sdk build-web: build-sdk
build-%: install-% build-%: install-%
npm --prefix $(subst sdk,open-api/typescript-sdk,$*) run build pnpm --filter $(call map-package,$*) run build
format-%: format-%:
npm --prefix $* run format:fix pnpm --filter $(call map-package,$*) run format:fix
lint-%: lint-%:
npm --prefix $* run lint:fix pnpm --filter $(call map-package,$*) run lint:fix
lint-web:
pnpm --filter $(call map-package,$*) run lint:p
check-%: check-%:
npm --prefix $* run check pnpm --filter $(call map-package,$*) run check
check-web: check-web:
npm --prefix web run check:typescript pnpm --filter immich-web run check:typescript
npm --prefix web run check:svelte pnpm --filter immich-web run check:svelte
test-%: test-%:
npm --prefix $* run test pnpm --filter $(call map-package,$*) run test
test-e2e: test-e2e:
docker compose -f ./e2e/docker-compose.yml build docker compose -f ./e2e/docker-compose.yml build
npm --prefix e2e run test pnpm --filter immich-e2e run test
npm --prefix e2e run test:web pnpm --filter immich-e2e run test:web
test-medium: test-medium:
docker run \ docker run \
--rm \ --rm \
@@ -84,27 +141,39 @@ test-medium:
-v ./server/tsconfig.json:/usr/src/app/tsconfig.json \ -v ./server/tsconfig.json:/usr/src/app/tsconfig.json \
-e NODE_ENV=development \ -e NODE_ENV=development \
immich-server:latest \ immich-server:latest \
-c "npm ci && npm run test:medium -- --run" -c "pnpm test:medium -- --run"
test-medium-dev: test-medium-dev:
docker exec -it immich_server /bin/sh -c "npm run test:medium" docker exec -it immich_server /bin/sh -c "pnpm run test:medium"
build-all: $(foreach M,$(filter-out e2e .github,$(MODULES)),build-$M) ; install-all:
install-all: $(foreach M,$(MODULES),install-$M) ; pnpm -r --filter '!documentation' install
ci-all: $(foreach M,$(filter-out .github,$(MODULES)),ci-$M) ;
check-all: $(foreach M,$(filter-out sdk cli docs .github,$(MODULES)),check-$M) ; build-all: $(foreach M,$(filter-out e2e docs .github,$(MODULES)),build-$M) ;
lint-all: $(foreach M,$(filter-out sdk docs .github,$(MODULES)),lint-$M) ;
format-all: $(foreach M,$(filter-out sdk,$(MODULES)),format-$M) ; check-all:
audit-all: $(foreach M,$(MODULES),audit-$M) ; pnpm -r --filter '!documentation' run "/^(check|check\:svelte|check\:typescript)$/"
hygiene-all: lint-all format-all check-all sql audit-all; lint-all:
test-all: $(foreach M,$(filter-out sdk docs .github,$(MODULES)),test-$M) ; pnpm -r --filter '!documentation' run lint:fix
format-all:
pnpm -r --filter '!documentation' run format:fix
audit-all:
pnpm -r --filter '!documentation' audit fix
hygiene-all: audit-all
pnpm -r --filter '!documentation' run "/(format:fix|check|check:svelte|check:typescript|sql)/"
test-all:
pnpm -r --filter '!documentation' run "/^test/"
clean: clean:
find . -name "node_modules" -type d -prune -exec rm -rf {} + find . -name "node_modules" -type d -prune -exec rm -rf {} +
find . -name "dist" -type d -prune -exec rm -rf '{}' + find . -name "dist" -type d -prune -exec rm -rf '{}' +
find . -name "build" -type d -prune -exec rm -rf '{}' + find . -name "build" -type d -prune -exec rm -rf '{}' +
find . -name "svelte-kit" -type d -prune -exec rm -rf '{}' + find . -name ".svelte-kit" -type d -prune -exec rm -rf '{}' +
command -v docker >/dev/null 2>&1 && docker compose -f ./docker/docker-compose.dev.yml rm -v -f || true find . -name "coverage" -type d -prune -exec rm -rf '{}' +
command -v docker >/dev/null 2>&1 && docker compose -f ./e2e/docker-compose.yml rm -v -f || true find . -name ".pnpm-store" -type d -prune -exec rm -rf '{}' +
command -v docker >/dev/null 2>&1 && docker compose -f ./docker/docker-compose.dev.yml down -v --remove-orphans || true
command -v docker >/dev/null 2>&1 && docker compose -f ./e2e/docker-compose.yml down -v --remove-orphans || true
setup-server-dev: install-server setup-server-dev: install-server
setup-web-dev: install-sdk build-sdk install-web setup-web-dev: install-sdk build-sdk install-web

View File

@@ -1 +1 @@
22.18.0 22.19.0

View File

@@ -1,19 +1,14 @@
FROM node:22.16.0-alpine3.20@sha256:2289fb1fba0f4633b08ec47b94a89c7e20b829fc5679f9b7b298eaa2f1ed8b7e AS core FROM node:22.16.0-alpine3.20@sha256:2289fb1fba0f4633b08ec47b94a89c7e20b829fc5679f9b7b298eaa2f1ed8b7e AS core
WORKDIR /usr/src/open-api/typescript-sdk
COPY open-api/typescript-sdk/package*.json open-api/typescript-sdk/tsconfig*.json ./
RUN npm ci
COPY open-api/typescript-sdk/ ./
RUN npm run build
WORKDIR /usr/src/app WORKDIR /usr/src/app
COPY package* pnpm* .pnpmfile.cjs ./
COPY cli/package.json cli/package-lock.json ./ COPY ./cli ./cli/
RUN npm ci COPY ./open-api/typescript-sdk ./open-api/typescript-sdk/
RUN corepack enable pnpm && \
COPY cli . pnpm install --filter @immich/sdk --filter @immich/cli --frozen-lockfile && \
RUN npm run build pnpm --filter @immich/sdk build && \
pnpm --filter @immich/cli build
WORKDIR /import WORKDIR /import
ENTRYPOINT ["node", "/usr/src/app/dist"] ENTRYPOINT ["node", "/usr/src/app/cli/dist"]

4600
cli/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -21,18 +21,28 @@ services:
# extends: # extends:
# file: hwaccel.transcoding.yml # file: hwaccel.transcoding.yml
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
user: '${UID:-1000}:${GID:-1000}'
build: build:
context: ../ context: ../
dockerfile: server/Dockerfile dockerfile: server/Dockerfile
target: dev target: dev
restart: unless-stopped restart: unless-stopped
volumes: volumes:
- ../server:/usr/src/app/server - ..:/usr/src/app
- ../open-api:/usr/src/app/open-api
- ${UPLOAD_LOCATION}/photos:/data - ${UPLOAD_LOCATION}/photos:/data
- ${UPLOAD_LOCATION}/photos/upload:/data/upload - ${UPLOAD_LOCATION}/photos/upload:/data/upload
- /usr/src/app/server/node_modules
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
- pnpm-store:/usr/src/app/.pnpm-store
- server-node_modules:/usr/src/app/server/node_modules
- web-node_modules:/usr/src/app/web/node_modules
- github-node_modules:/usr/src/app/.github/node_modules
- cli-node_modules:/usr/src/app/cli/node_modules
- docs-node_modules:/usr/src/app/docs/node_modules
- e2e-node_modules:/usr/src/app/e2e/node_modules
- sdk-node_modules:/usr/src/app/open-api/typescript-sdk/node_modules
- app-node_modules:/usr/src/app/node_modules
- sveltekit:/usr/src/app/web/.svelte-kit
- coverage:/usr/src/app/web/coverage
env_file: env_file:
- .env - .env
environment: environment:
@@ -58,8 +68,12 @@ services:
- 9231:9231 - 9231:9231
- 2283:2283 - 2283:2283
depends_on: depends_on:
- redis redis:
- database condition: service_started
database:
condition: service_started
init:
condition: service_completed_successfully
healthcheck: healthcheck:
disable: false disable: false
@@ -68,9 +82,11 @@ services:
image: immich-web-dev:latest image: immich-web-dev:latest
# Needed for rootless docker setup, see https://github.com/moby/moby/issues/45919 # Needed for rootless docker setup, see https://github.com/moby/moby/issues/45919
# user: 0:0 # user: 0:0
user: '${UID:-1000}:${GID:-1000}'
build: build:
context: ../ context: ../
dockerfile: web/Dockerfile dockerfile: server/Dockerfile
target: dev
command: ['immich-web'] command: ['immich-web']
env_file: env_file:
- .env - .env
@@ -78,18 +94,28 @@ services:
- 3000:3000 - 3000:3000
- 24678:24678 - 24678:24678
volumes: volumes:
- ../web:/usr/src/app/web - ..:/usr/src/app
- ../i18n:/usr/src/app/i18n - pnpm-store:/usr/src/app/.pnpm-store
- ../open-api/:/usr/src/app/open-api/ - server-node_modules:/usr/src/app/server/node_modules
# - ../../ui:/usr/ui - web-node_modules:/usr/src/app/web/node_modules
- /usr/src/app/web/node_modules - github-node_modules:/usr/src/app/.github/node_modules
- cli-node_modules:/usr/src/app/cli/node_modules
- docs-node_modules:/usr/src/app/docs/node_modules
- e2e-node_modules:/usr/src/app/e2e/node_modules
- sdk-node_modules:/usr/src/app/open-api/typescript-sdk/node_modules
- app-node_modules:/usr/src/app/node_modules
- sveltekit:/usr/src/app/web/.svelte-kit
- coverage:/usr/src/app/web/coverage
ulimits: ulimits:
nofile: nofile:
soft: 1048576 soft: 1048576
hard: 1048576 hard: 1048576
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
- immich-server immich-server:
condition: service_started
init:
condition: service_completed_successfully
immich-machine-learning: immich-machine-learning:
container_name: immich_machine_learning container_name: immich_machine_learning
@@ -117,7 +143,7 @@ services:
redis: redis:
container_name: immich_redis container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:facc1d2c3462975c34e10fccb167bfa92b0e0dbd992fc282c29a61c3243afb11 image: docker.io/valkey/valkey:8-bookworm@sha256:a137a2b60aca1a75130022d6bb96af423fefae4eb55faf395732db3544803280
healthcheck: healthcheck:
test: redis-cli ping || exit 1 test: redis-cli ping || exit 1
@@ -157,7 +183,37 @@ services:
# volumes: # volumes:
# - grafana-data:/var/lib/grafana # - grafana-data:/var/lib/grafana
init:
container_name: init
image: busybox@sha256:ab33eacc8251e3807b85bb6dba570e4698c3998eca6f0fc2ccb60575a563ea74
env_file:
- .env
user: 0:0
command: sh -c 'find /data -maxdepth 1 -type d -exec chown ${UID:-1000}:${GID:-1000} {} + 2>/dev/null || true; for path in /usr/src/app/.pnpm-store /usr/src/app/server/node_modules /usr/src/app/server/dist /usr/src/app/.github/node_modules /usr/src/app/cli/node_modules /usr/src/app/docs/node_modules /usr/src/app/e2e/node_modules /usr/src/app/open-api/typescript-sdk/node_modules /usr/src/app/web/.svelte-kit /usr/src/app/web/coverage /usr/src/app/node_modules /usr/src/app/web/node_modules; do [ -e "$$path" ] && chown -R ${UID:-1000}:${GID:-1000} "$$path" || true; done'
volumes:
- pnpm-store:/usr/src/app/.pnpm-store
- server-node_modules:/usr/src/app/server/node_modules
- web-node_modules:/usr/src/app/web/node_modules
- github-node_modules:/usr/src/app/.github/node_modules
- cli-node_modules:/usr/src/app/cli/node_modules
- docs-node_modules:/usr/src/app/docs/node_modules
- e2e-node_modules:/usr/src/app/e2e/node_modules
- sdk-node_modules:/usr/src/app/open-api/typescript-sdk/node_modules
- app-node_modules:/usr/src/app/node_modules
- sveltekit:/usr/src/app/web/.svelte-kit
- coverage:/usr/src/app/web/coverage
volumes: volumes:
model-cache: model-cache:
prometheus-data: prometheus-data:
grafana-data: grafana-data:
pnpm-store:
server-node_modules:
web-node_modules:
github-node_modules:
cli-node_modules:
docs-node_modules:
e2e-node_modules:
sdk-node_modules:
app-node_modules:
sveltekit:
coverage:

View File

@@ -56,7 +56,7 @@ services:
redis: redis:
container_name: immich_redis container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:facc1d2c3462975c34e10fccb167bfa92b0e0dbd992fc282c29a61c3243afb11 image: docker.io/valkey/valkey:8-bookworm@sha256:a137a2b60aca1a75130022d6bb96af423fefae4eb55faf395732db3544803280
healthcheck: healthcheck:
test: redis-cli ping || exit 1 test: redis-cli ping || exit 1
restart: always restart: always
@@ -95,7 +95,7 @@ services:
command: ['./run.sh', '-disable-reporting'] command: ['./run.sh', '-disable-reporting']
ports: ports:
- 3000:3000 - 3000:3000
image: grafana/grafana:12.1.0-ubuntu@sha256:397aa30dd1af16cb6c5c9879498e467973a7f87eacf949f6d5a29407a3843809 image: grafana/grafana:12.1.1-ubuntu@sha256:d1da838234ff2de93e0065ee1bf0e66d38f948dcc5d718c25fa6237e14b4424a
volumes: volumes:
- grafana-data:/var/lib/grafana - grafana-data:/var/lib/grafana

View File

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

4
docs/.gitignore vendored
View File

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

View File

@@ -1 +1 @@
22.18.0 22.19.0

View File

@@ -5,13 +5,13 @@ This website is built using [Docusaurus](https://docusaurus.io/), a modern stati
### Installation ### Installation
``` ```
$ npm install $ pnpm install
``` ```
### Local Development ### Local Development
``` ```
$ npm run start $ pnpm run start
``` ```
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
@@ -19,7 +19,7 @@ This command starts a local development server and opens up a browser window. Mo
### Build ### Build
``` ```
$ npm run build $ pnpm run build
``` ```
This command generates static content into the `build` directory and can be served using any static contents hosting service. This command generates static content into the `build` directory and can be served using any static contents hosting service.
@@ -29,13 +29,13 @@ This command generates static content into the `build` directory and can be serv
Using SSH: Using SSH:
``` ```
$ USE_SSH=true npm run deploy $ USE_SSH=true pnpm run deploy
``` ```
Not using SSH: Not using SSH:
``` ```
$ GIT_USER=<Your GitHub username> npm run deploy $ GIT_USER=<Your GitHub username> pnpm run deploy
``` ```
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.

View File

@@ -1,5 +1,31 @@
# FAQ # FAQ
## Commercial Guidelines
### Are you open to commercial partnerships and collaborations?
We are working to commercialize Immich and we'd love for you to help us by making Immich better. FUTO is dedicated to developing sustainable models for developing open source software for our customers. We want our customers to be delighted by the products our engineers deliver, and we want our engineers to be paid when they succeed.
If you wish to use Immich in a commercial product not owned by FUTO, we have the following requirements:
- Plugin Integrations: Integrations for other platforms are typically approved, provided proper notification is given.
- Reseller Partnerships: Must adhere to the guidelines outlined below regarding trademark usage, and proper representation.
- Strategic Collaborations: We welcome discussions about mutually beneficial partnerships that enhance the value proposition for both organizations.
### What are your guidelines for resellers and trademark usage?
For organizations seeking to resell Immich, we have established the following guidelines to protect our brand integrity and ensure proper representation.
- We request that resellers do not display our trademarks on their websites or marketing materials. If such usage is discovered, we will contact you to request removal.
- Do not misrepresent your reseller site or services as being officially affiliated with or endorsed by Immich or our development team.
- For small resellers who wish to contribute financially to Immich's development, we recommend directing your customers to purchase licenses directy from us rather than attempting to broker revenue-sharing arrangements. We ask that you refrain from misrepresenting reseller activities as directly supporting our development work.
When in doubt or if you have an edge case scenario, we encourage you to contact us directly via email to discuss the use of our trademark. We can provide clear guidance on what is acceptable and what is not. You can reach out at: questions@immich.app
## User ## User
### How can I reset the admin password? ### How can I reset the admin password?

View File

@@ -10,7 +10,7 @@ Unable to set `app.immich:///oauth-callback` as a valid redirect URI? See [Mobil
Immich supports 3rd party authentication via [OpenID Connect][oidc] (OIDC), an identity layer built on top of OAuth2. OIDC is supported by most identity providers, including: Immich supports 3rd party authentication via [OpenID Connect][oidc] (OIDC), an identity layer built on top of OAuth2. OIDC is supported by most identity providers, including:
- [Authentik](https://goauthentik.io/integrations/sources/oauth/#openid-connect) - [Authentik](https://integrations.goauthentik.io/media/immich/)
- [Authelia](https://www.authelia.com/integration/openid-connect/immich/) - [Authelia](https://www.authelia.com/integration/openid-connect/immich/)
- [Okta](https://www.okta.com/openid-connect/) - [Okta](https://www.okta.com/openid-connect/)
- [Google](https://developers.google.com/identity/openid-connect/openid-connect) - [Google](https://developers.google.com/identity/openid-connect/openid-connect)
@@ -88,7 +88,7 @@ The `.well-known/openid-configuration` part of the url is optional and will be a
## Auto Launch ## Auto Launch
When Auto Launch is enabled, the login page will automatically redirect the user to the OAuth authorization url, to login with OAuth. To access the login screen again, use the browser's back button, or navigate directly to `/auth/login?autoLaunch=0`. When Auto Launch is enabled, the login page will automatically redirect the user to the OAuth authorization url, to login with OAuth. To access the login screen again, use the browser's back button, or navigate directly to `/auth/login?autoLaunch=0`.
Auto Launch can also be enabled on a per-request basis by navigating to `/auth/login?authLaunch=1`, this can be useful in situations where Immich is called from e.g. Nextcloud using the _External sites_ app and the _oidc_ app so as to enable users to directly interact with a logged-in instance of Immich. Auto Launch can also be enabled on a per-request basis by navigating to `/auth/login?autoLaunch=1`, this can be useful in situations where Immich is called from e.g. Nextcloud using the _External sites_ app and the _oidc_ app so as to enable users to directly interact with a logged-in instance of Immich.
## Mobile Redirect URI ## Mobile Redirect URI

View File

@@ -2,10 +2,6 @@
Users can deploy a custom reverse proxy that forwards requests to Immich. This way, the reverse proxy can handle TLS termination, load balancing, or other advanced features. All reverse proxies between Immich and the user must forward all headers and set the `Host`, `X-Real-IP`, `X-Forwarded-Proto` and `X-Forwarded-For` headers to their appropriate values. Additionally, your reverse proxy should allow for big enough uploads. By following these practices, you ensure that all custom reverse proxies are fully compatible with Immich. Users can deploy a custom reverse proxy that forwards requests to Immich. This way, the reverse proxy can handle TLS termination, load balancing, or other advanced features. All reverse proxies between Immich and the user must forward all headers and set the `Host`, `X-Real-IP`, `X-Forwarded-Proto` and `X-Forwarded-For` headers to their appropriate values. Additionally, your reverse proxy should allow for big enough uploads. By following these practices, you ensure that all custom reverse proxies are fully compatible with Immich.
:::note
The Repair page can take a long time to load. To avoid server timeouts or errors, we recommend specifying a timeout of at least 10 minutes on your proxy server.
:::
:::caution :::caution
Immich does not support being served on a sub-path such as `location /immich {`. It has to be served on the root path of a (sub)domain. Immich does not support being served on a sub-path such as `location /immich {`. It has to be served on the root path of a (sub)domain.
::: :::

View File

@@ -5,7 +5,7 @@ After making any changes in the `server/src/schema`, a database migration need t
1. Run the command 1. Run the command
```bash ```bash
npm run migrations:generate <migration-name> pnpm run migrations:generate <migration-name>
``` ```
2. Check if the migration file makes sense. 2. Check if the migration file makes sense.

View File

@@ -204,8 +204,8 @@ When the Dev Container starts, it automatically:
1. **Runs post-create script** (`container-server-post-create.sh`): 1. **Runs post-create script** (`container-server-post-create.sh`):
- Adjusts file permissions for the `node` user - Adjusts file permissions for the `node` user
- Installs dependencies: `npm install` in all packages - Installs dependencies: `pnpm install` in all packages
- Builds TypeScript SDK: `npm run build` in `open-api/typescript-sdk` - Builds TypeScript SDK: `pnpm run build` in `open-api/typescript-sdk`
2. **Starts development servers** via VS Code tasks: 2. **Starts development servers** via VS Code tasks:
- `Immich API Server (Nest)` - API server with hot-reloading on port 2283 - `Immich API Server (Nest)` - API server with hot-reloading on port 2283
@@ -243,7 +243,7 @@ To connect the mobile app to your Dev Container:
- **Server code** (`/server`): Changes trigger automatic restart - **Server code** (`/server`): Changes trigger automatic restart
- **Web code** (`/web`): Changes trigger hot module replacement - **Web code** (`/web`): Changes trigger hot module replacement
- **Database migrations**: Run `npm run sync:sql` in the server directory - **Database migrations**: Run `pnpm run sync:sql` in the server directory
- **API changes**: Regenerate TypeScript SDK with `make open-api` - **API changes**: Regenerate TypeScript SDK with `make open-api`
## Testing ## Testing
@@ -273,19 +273,19 @@ make test-medium-dev # End-to-end tests
```bash ```bash
# Server tests # Server tests
cd /workspaces/immich/server cd /workspaces/immich/server
npm test # Run all tests pnpm test # Run all tests
npm run test:watch # Watch mode pnpm run test:watch # Watch mode
npm run test:cov # Coverage report pnpm run test:cov # Coverage report
# Web tests # Web tests
cd /workspaces/immich/web cd /workspaces/immich/web
npm test # Run all tests pnpm test # Run all tests
npm run test:watch # Watch mode pnpm run test:watch # Watch mode
# E2E tests # E2E tests
cd /workspaces/immich/e2e cd /workspaces/immich/e2e
npm run test # Run API tests pnpm run test # Run API tests
npm run test:web # Run web UI tests pnpm run test:web # Run web UI tests
``` ```
### Code Quality Commands ### Code Quality Commands

View File

@@ -8,34 +8,34 @@ When contributing code through a pull request, please check the following:
## Web Checks ## Web Checks
- [ ] `npm run lint` (linting via ESLint) - [ ] `pnpm run lint` (linting via ESLint)
- [ ] `npm run format` (formatting via Prettier) - [ ] `pnpm run format` (formatting via Prettier)
- [ ] `npm run check:svelte` (Type checking via SvelteKit) - [ ] `pnpm run check:svelte` (Type checking via SvelteKit)
- [ ] `npm run check:typescript` (check typescript) - [ ] `pnpm run check:typescript` (check typescript)
- [ ] `npm test` (unit tests) - [ ] `pnpm test` (unit tests)
## Documentation ## Documentation
- [ ] `npm run format` (formatting via Prettier) - [ ] `pnpm run format` (formatting via Prettier)
- [ ] Update the `_redirects` file if you have renamed a page or removed it from the documentation. - [ ] Update the `_redirects` file if you have renamed a page or removed it from the documentation.
:::tip AIO :::tip AIO
Run all web checks with `npm run check:all` Run all web checks with `pnpm run check:all`
::: :::
## Server Checks ## Server Checks
- [ ] `npm run lint` (linting via ESLint) - [ ] `pnpm run lint` (linting via ESLint)
- [ ] `npm run format` (formatting via Prettier) - [ ] `pnpm run format` (formatting via Prettier)
- [ ] `npm run check` (Type checking via `tsc`) - [ ] `pnpm run check` (Type checking via `tsc`)
- [ ] `npm test` (unit tests) - [ ] `pnpm test` (unit tests)
:::tip AIO :::tip AIO
Run all server checks with `npm run check:all` Run all server checks with `pnpm run check:all`
::: :::
:::info Auto Fix :::info Auto Fix
You can use `npm run __:fix` to potentially correct some issues automatically for `npm run format` and `lint`. You can use `pnpm run __:fix` to potentially correct some issues automatically for `pnpm run format` and `lint`.
::: :::
## Mobile Checks ## Mobile Checks

View File

@@ -54,20 +54,20 @@ You can access the web from `http://your-machine-ip:3000` or `http://localhost:3
If you only want to do web development connected to an existing, remote backend, follow these steps: If you only want to do web development connected to an existing, remote backend, follow these steps:
1. Build the Immich SDK - `cd open-api/typescript-sdk && npm i && npm run build && cd -` 1. Build the Immich SDK - `cd open-api/typescript-sdk && pnpm i && pnpm run build && cd -`
2. Enter the web directory - `cd web/` 2. Enter the web directory - `cd web/`
3. Install web dependencies - `npm i` 3. Install web dependencies - `pnpm i`
4. Start the web development server 4. Start the web development server
```bash ```bash
IMMICH_SERVER_URL=https://demo.immich.app/ npm run dev IMMICH_SERVER_URL=https://demo.immich.app/ pnpm run dev
``` ```
If you're using PowerShell on Windows you may need to set the env var separately like so: If you're using PowerShell on Windows you may need to set the env var separately like so:
```powershell ```powershell
$env:IMMICH_SERVER_URL = "https://demo.immich.app/" $env:IMMICH_SERVER_URL = "https://demo.immich.app/"
npm run dev pnpm run dev
``` ```
#### `@immich/ui` #### `@immich/ui`
@@ -75,12 +75,12 @@ npm run dev
To see local changes to `@immich/ui` in Immich, do the following: To see local changes to `@immich/ui` in Immich, do the following:
1. Install `@immich/ui` as a sibling to `immich/`, for example `/home/user/immich` and `/home/user/ui` 1. Install `@immich/ui` as a sibling to `immich/`, for example `/home/user/immich` and `/home/user/ui`
2. Build the `@immich/ui` project via `npm run build` 2. Build the `@immich/ui` project via `pnpm run build`
3. Uncomment the corresponding volume in web service of the `docker/docker-compose.dev.yaml` file (`../../ui:/usr/ui`) 3. Uncomment the corresponding volume in web service of the `docker/docker-compose.dev.yaml` file (`../../ui:/usr/ui`)
4. Uncomment the corresponding alias in the `web/vite.config.js` file (`'@immich/ui': path.resolve(\_\_dirname, '../../ui')`) 4. Uncomment the corresponding alias in the `web/vite.config.js` file (`'@immich/ui': path.resolve(\_\_dirname, '../../ui')`)
5. Uncomment the import statement in `web/src/app.css` file `@import '/usr/ui/dist/theme/default.css';` and comment out `@import '@immich/ui/theme/default.css';` 5. Uncomment the import statement in `web/src/app.css` file `@import '/usr/ui/dist/theme/default.css';` and comment out `@import '@immich/ui/theme/default.css';`
6. Start up the stack via `make dev` 6. Start up the stack via `make dev`
7. After making changes in `@immich/ui`, rebuild it (`npm run build`) 7. After making changes in `@immich/ui`, rebuild it (`pnpm run build`)
### Mobile app ### Mobile app

View File

@@ -4,8 +4,8 @@
### Unit tests ### Unit tests
Unit are run by calling `npm run test` from the `server/` directory. Unit are run by calling `pnpm run test` from the `server/` directory.
You need to run `npm install` (in `server/`) before _once_. You need to run `pnpm install` (in `server/`) before _once_.
### End to end tests ### End to end tests
@@ -17,14 +17,14 @@ make e2e
Before you can run the tests, you need to run the following commands _once_: Before you can run the tests, you need to run the following commands _once_:
- `npm install` (in `e2e/`) - `pnpm install` (in `e2e/`)
- `make open-api` (in the project root `/`) - `make open-api` (in the project root `/`)
Once the test environment is running, the e2e tests can be run via: Once the test environment is running, the e2e tests can be run via:
```bash ```bash
cd e2e/ cd e2e/
npm test pnpm test
``` ```
The tests check various things including: The tests check various things including:

View File

@@ -33,7 +33,7 @@ Sometimes, an external library will not scan correctly. This can happen if Immic
- Are the permissions set correctly? - Are the permissions set correctly?
- Make sure you are using forward slashes (`/`) and not backward slashes. - Make sure you are using forward slashes (`/`) and not backward slashes.
To validate that Immich can reach your external library, start a shell inside the container. Run `docker exec -it immich_server bash` to a bash shell. If your import path is `/data/import/photos`, check it with `ls /data/import/photos`. Do the same check for the same in any microservices containers. To validate that Immich can reach your external library, start a shell inside the container. Run `docker exec -it immich_server bash` to a bash shell. If your import path is `/mnt/photos`, check it with `ls /mnt/photos`. If you are using a dedicated microservices container, make sure to add the same mount point and check for availability within the microservices container as well.
### Exclusion Patterns ### Exclusion Patterns

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

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

View File

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

20545
docs/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

@@ -1,4 +1,40 @@
[ [
{
"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"
},
{
"label": "v1.140.0",
"url": "https://v1.140.0.archive.immich.app"
},
{
"label": "v1.139.4",
"url": "https://v1.139.4.archive.immich.app"
},
{
"label": "v1.139.3",
"url": "https://v1.139.3.archive.immich.app"
},
{
"label": "v1.139.2",
"url": "https://v1.139.2.archive.immich.app"
},
{
"label": "v1.138.1",
"url": "https://v1.138.1.archive.immich.app"
},
{
"label": "v1.138.0",
"url": "https://v1.138.0.archive.immich.app"
},
{ {
"label": "v1.137.3", "label": "v1.137.3",
"url": "https://v1.137.3.archive.immich.app" "url": "https://v1.137.3.archive.immich.app"

1
e2e/.gitignore vendored
View File

@@ -3,3 +3,4 @@ node_modules/
/playwright-report/ /playwright-report/
/blob-report/ /blob-report/
/playwright/.cache/ /playwright/.cache/
/dist

View File

@@ -1 +1 @@
22.18.0 22.19.0

View File

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

7419
e2e/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{ {
"name": "immich-e2e", "name": "immich-e2e",
"version": "1.137.3", "version": "1.141.1",
"description": "", "description": "",
"main": "index.js", "main": "index.js",
"type": "module", "type": "module",
@@ -26,7 +26,7 @@
"@playwright/test": "^1.44.1", "@playwright/test": "^1.44.1",
"@socket.io/component-emitter": "^3.1.2", "@socket.io/component-emitter": "^3.1.2",
"@types/luxon": "^3.4.2", "@types/luxon": "^3.4.2",
"@types/node": "^22.17.0", "@types/node": "^22.18.0",
"@types/oidc-provider": "^9.0.0", "@types/oidc-provider": "^9.0.0",
"@types/pg": "^8.15.1", "@types/pg": "^8.15.1",
"@types/pngjs": "^6.0.4", "@types/pngjs": "^6.0.4",
@@ -45,7 +45,7 @@
"pngjs": "^7.0.0", "pngjs": "^7.0.0",
"prettier": "^3.2.5", "prettier": "^3.2.5",
"prettier-plugin-organize-imports": "^4.0.0", "prettier-plugin-organize-imports": "^4.0.0",
"sharp": "^0.34.0", "sharp": "^0.34.3",
"socket.io-client": "^4.7.4", "socket.io-client": "^4.7.4",
"supertest": "^7.0.0", "supertest": "^7.0.0",
"typescript": "^5.3.3", "typescript": "^5.3.3",
@@ -54,6 +54,6 @@
"vitest": "^3.0.0" "vitest": "^3.0.0"
}, },
"volta": { "volta": {
"node": "22.18.0" "node": "22.19.0"
} }
} }

View File

@@ -683,7 +683,7 @@ describe('/albums', () => {
.set('Authorization', `Bearer ${user1.accessToken}`) .set('Authorization', `Bearer ${user1.accessToken}`)
.send({ role: AlbumUserRole.Editor }); .send({ role: AlbumUserRole.Editor });
expect(status).toBe(200); expect(status).toBe(204);
// Get album to verify the role change // Get album to verify the role change
const { body } = await request(app) const { body } = await request(app)

View File

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

View File

@@ -23,8 +23,8 @@ describe('/partners', () => {
]); ]);
await Promise.all([ await Promise.all([
createPartner({ id: user2.userId }, { headers: asBearerAuth(user1.accessToken) }), createPartner({ partnerCreateDto: { sharedWithId: user2.userId } }, { headers: asBearerAuth(user1.accessToken) }),
createPartner({ id: user1.userId }, { headers: asBearerAuth(user2.accessToken) }), createPartner({ partnerCreateDto: { sharedWithId: user1.userId } }, { headers: asBearerAuth(user2.accessToken) }),
]); ]);
}); });
@@ -116,7 +116,7 @@ describe('/partners', () => {
.delete(`/partners/${user3.userId}`) .delete(`/partners/${user3.userId}`)
.set('Authorization', `Bearer ${user1.accessToken}`); .set('Authorization', `Bearer ${user1.accessToken}`);
expect(status).toBe(200); expect(status).toBe(204);
}); });
it('should throw a bad request if partner not found', async () => { it('should throw a bad request if partner not found', async () => {

View File

@@ -485,7 +485,7 @@ describe('/shared-links', () => {
.delete(`/shared-links/${linkWithAlbum.id}`) .delete(`/shared-links/${linkWithAlbum.id}`)
.set('Authorization', `Bearer ${user1.accessToken}`); .set('Authorization', `Bearer ${user1.accessToken}`);
expect(status).toBe(200); expect(status).toBe(204);
}); });
}); });
}); });

View File

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

View File

@@ -79,7 +79,7 @@ export const tempDir = tmpdir();
export const asBearerAuth = (accessToken: string) => ({ Authorization: `Bearer ${accessToken}` }); export const asBearerAuth = (accessToken: string) => ({ Authorization: `Bearer ${accessToken}` });
export const asKeyAuth = (key: string) => ({ 'x-api-key': key }); export const asKeyAuth = (key: string) => ({ 'x-api-key': key });
export const immichCli = (args: string[]) => export const immichCli = (args: string[]) =>
executeCommand('node', ['node_modules/.bin/immich', '-d', `/${tempDir}/immich/`, ...args]).promise; executeCommand('pnpm', ['exec', 'immich', '-d', `/${tempDir}/immich/`, ...args], { cwd: '../cli' }).promise;
export const immichAdmin = (args: string[]) => export const immichAdmin = (args: string[]) =>
executeCommand('docker', ['exec', '-i', 'immich-e2e-server', '/bin/bash', '-c', `immich-admin ${args.join(' ')}`]); executeCommand('docker', ['exec', '-i', 'immich-e2e-server', '/bin/bash', '-c', `immich-admin ${args.join(' ')}`]);
export const specialCharStrings = ["'", '"', ',', '{', '}', '*']; export const specialCharStrings = ["'", '"', ',', '{', '}', '*'];
@@ -462,7 +462,8 @@ export const utils = {
updateLibrary: (accessToken: string, id: string, dto: UpdateLibraryDto) => updateLibrary: (accessToken: string, id: string, dto: UpdateLibraryDto) =>
updateLibrary({ id, updateLibraryDto: dto }, { headers: asBearerAuth(accessToken) }), 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: (accessToken: string, userPreferencesUpdateDto: UserPreferencesUpdateDto) =>
updateMyPreferences({ userPreferencesUpdateDto }, { headers: asBearerAuth(accessToken) }), updateMyPreferences({ userPreferencesUpdateDto }, { headers: asBearerAuth(accessToken) }),

View File

@@ -1,5 +1,5 @@
{ {
"about": "عن", "about": "حَوْل",
"account": "حساب", "account": "حساب",
"account_settings": "إعدادات الحساب", "account_settings": "إعدادات الحساب",
"acknowledge": "أُدرك ذلك", "acknowledge": "أُدرك ذلك",
@@ -14,6 +14,7 @@
"add_a_location": "إضافة موقع", "add_a_location": "إضافة موقع",
"add_a_name": "إضافة إسم", "add_a_name": "إضافة إسم",
"add_a_title": "إضافة عنوان", "add_a_title": "إضافة عنوان",
"add_birthday": "أضف تاريخ الميلاد",
"add_endpoint": "اضف نقطة نهاية", "add_endpoint": "اضف نقطة نهاية",
"add_exclusion_pattern": "إضافة نمط إستثناء", "add_exclusion_pattern": "إضافة نمط إستثناء",
"add_import_path": "إضافة مسار الإستيراد", "add_import_path": "إضافة مسار الإستيراد",
@@ -25,8 +26,11 @@
"add_tag": "اضف علامة", "add_tag": "اضف علامة",
"add_to": "إضافة إلى…", "add_to": "إضافة إلى…",
"add_to_album": "إضافة إلى ألبوم", "add_to_album": "إضافة إلى ألبوم",
"add_to_album_bottom_sheet_added": "تمت الاضافة{album}", "add_to_album_bottom_sheet_added": "تمت الاضافة الى {album}",
"add_to_album_bottom_sheet_already_exists": "موجودة مسبقا {album}", "add_to_album_bottom_sheet_already_exists": "موجود مسبقا في {album}",
"add_to_album_toggle": "تبديل التحديد لـ{album}",
"add_to_albums": "إضافة الى البومات",
"add_to_albums_count": "إضافه إلى البومات ({count})",
"add_to_shared_album": "إضافة إلى ألبوم مشارك", "add_to_shared_album": "إضافة إلى ألبوم مشارك",
"add_url": "إضافة رابط", "add_url": "إضافة رابط",
"added_to_archive": "أُضيفت للأرشيف", "added_to_archive": "أُضيفت للأرشيف",
@@ -34,16 +38,23 @@
"added_to_favorites_count": "تم إضافة {count, number} إلى المفضلات", "added_to_favorites_count": "تم إضافة {count, number} إلى المفضلات",
"admin": { "admin": {
"add_exclusion_pattern_description": "إضافة أنماط الاستبعاد. يدعم التمويه باستخدام *، **، و؟. لتجاهل جميع الملفات في أي دليل يسمى \"Raw\"، استخدم \"**/Raw/**\". لتجاهل جميع الملفات التي تنتهي بـ \".tif\"، استخدم \"**/*.tif\". لتجاهل مسار مطلق، استخدم \"/path/to/ignore/**\".", "add_exclusion_pattern_description": "إضافة أنماط الاستبعاد. يدعم التمويه باستخدام *، **، و؟. لتجاهل جميع الملفات في أي دليل يسمى \"Raw\"، استخدم \"**/Raw/**\". لتجاهل جميع الملفات التي تنتهي بـ \".tif\"، استخدم \"**/*.tif\". لتجاهل مسار مطلق، استخدم \"/path/to/ignore/**\".",
"admin_user": "مستخدم مدير", "admin_user": "مستخدم مسؤول",
"asset_offline_description": "لم يعد هذا الأصل الخاص بالمكتبة الخارجية موجودًا على القرص وتم نقله إلى سلة المهملات. إذا تم نقل الملف داخل المكتبة، فتحقق من الجدول الزمني الخاص بك لمعرفة الأصل الجديد المقابل. لاستعادة هذا الأصل، يرجى التأكد من إمكانية الوصول إلى مسار الملف أدناه بواسطة Immich ومن ثم قم بمسح المكتبة.", "asset_offline_description": "لم يعد هذا الأصل الخاص بالمكتبة الخارجية موجودًا على القرص وتم نقله إلى سلة المهملات. إذا تم نقل الملف داخل المكتبة، فتحقق من الجدول الزمني الخاص بك لمعرفة الأصل الجديد المقابل. لاستعادة هذا الأصل، يرجى التأكد من إمكانية الوصول إلى مسار الملف أدناه بواسطة Immich ومن ثم قم بمسح المكتبة.",
"authentication_settings": "إعدادات المصادقة", "authentication_settings": "إعدادات المصادقة",
"authentication_settings_description": "إدارة كلمة المرور وOAuth وإعدادات المصادقة الأُخرى", "authentication_settings_description": "إدارة كلمة المرور وOAuth وإعدادات المصادقة الأُخرى",
"authentication_settings_disable_all": "هل أنت متأكد أنك تريد تعطيل جميع وسائل تسجيل الدخول؟ سيتم تعطيل تسجيل الدخول بالكامل.", "authentication_settings_disable_all": "هل أنت متأكد أنك تريد تعطيل جميع وسائل تسجيل الدخول؟ سيتم تعطيل تسجيل الدخول بالكامل.",
"authentication_settings_reenable": "لإعادة التفعيل، استخدم <link>أمر الخادم</link>.", "authentication_settings_reenable": "لإعادة التفعيل، استخدم <link>أمر الخادم</link>.",
"background_task_job": "المهام الخلفية", "background_task_job": "المهام في الخلفية",
"backup_database": "انشاء تفريغ قاعدة البيانات", "backup_database": "انشاء تفريغ قاعدة البيانات",
"backup_database_enable_description": "تمكين تفريغ قاعدة البيانات", "backup_database_enable_description": "تمكين تفريغ قاعدة البيانات",
"backup_keep_last_amount": "مقدار التفريغات السابقة للاحتفاظ بها", "backup_keep_last_amount": "مقدار التفريغات السابقة للاحتفاظ بها",
"backup_onboarding_1_description": "نسخة خارج الموقع في موقع آخر.",
"backup_onboarding_2_description": "نسخ محلية على أجهزة مختلفة. يشمل ذلك الملفات الرئيسية ونسخة احتياطية محلية منها.",
"backup_onboarding_3_description": "إجمالي نسخ بياناتك، بما في ذلك الملفات الأصلية. يشمل ذلك نسخةً واحدةً خارج الموقع ونسختين محليتين.",
"backup_onboarding_description": "يُنصح باتباع <backblaze-link>استراتيجية النسخ الاحتياطي 3-2-1</backblaze-link> لحماية بياناتك. احتفظ بنسخ احتياطية من صورك/فيديوهاتك المحمّلة، بالإضافة إلى قاعدة بيانات Immich، لضمان حل نسخ احتياطي شامل.",
"backup_onboarding_footer": "لمزيد من المعلومات حول النسخ الاحتياطي لـ Immich، يرجى الرجوع إلى <link> التعليمات </link>.",
"backup_onboarding_parts_title": "يتضمن النسخ الاحتياطي 3-2-1 ما يلي:",
"backup_onboarding_title": "النسخ الاحتياطية",
"backup_settings": "إعدادات تفريغ قاعدة البيانات", "backup_settings": "إعدادات تفريغ قاعدة البيانات",
"backup_settings_description": "إدارة إعدادات تفريغ قاعدة البيانات.", "backup_settings_description": "إدارة إعدادات تفريغ قاعدة البيانات.",
"cleared_jobs": "تم إخلاء مهام: {job}", "cleared_jobs": "تم إخلاء مهام: {job}",
@@ -210,6 +221,8 @@
"oauth_mobile_redirect_uri": "عنوان URI لإعادة التوجيه على الهاتف", "oauth_mobile_redirect_uri": "عنوان URI لإعادة التوجيه على الهاتف",
"oauth_mobile_redirect_uri_override": "تجاوز عنوان URI لإعادة التوجيه على الهاتف", "oauth_mobile_redirect_uri_override": "تجاوز عنوان URI لإعادة التوجيه على الهاتف",
"oauth_mobile_redirect_uri_override_description": "قم بتفعيله عندما لا يسمح موفر OAuth بمعرف URI للجوال، مثل ''{callback}''", "oauth_mobile_redirect_uri_override_description": "قم بتفعيله عندما لا يسمح موفر OAuth بمعرف URI للجوال، مثل ''{callback}''",
"oauth_role_claim": "المطالبة بالدور(صلاحيات)",
"oauth_role_claim_description": "منح وصول المسؤول تلقائيًا بناءً على وجود هذا الطلب. قد يكون الطلب إما 'مستخدم' أو 'مسؤول'.",
"oauth_settings": "OAuth", "oauth_settings": "OAuth",
"oauth_settings_description": "إدارة إعدادات تسجيل الدخول OAuth", "oauth_settings_description": "إدارة إعدادات تسجيل الدخول OAuth",
"oauth_settings_more_details": "لمزيد من التفاصيل حول هذه الميزة، يرجى الرجوع إلى <link>الوثائق</link>.", "oauth_settings_more_details": "لمزيد من التفاصيل حول هذه الميزة، يرجى الرجوع إلى <link>الوثائق</link>.",
@@ -345,6 +358,9 @@
"trash_number_of_days_description": "عدد أيام الاحتفاظ بالمحتويات في سلة المهملات قبل حذفها نهائيًا", "trash_number_of_days_description": "عدد أيام الاحتفاظ بالمحتويات في سلة المهملات قبل حذفها نهائيًا",
"trash_settings": "إعدادات سلة المهملات", "trash_settings": "إعدادات سلة المهملات",
"trash_settings_description": "إدارة إعدادات سلة المهملات", "trash_settings_description": "إدارة إعدادات سلة المهملات",
"unlink_all_oauth_accounts": "ازالة ربط جميع حسابات OAuth",
"unlink_all_oauth_accounts_description": "تذكّر ان تزيل ربط جميع حسابات OAuth قبل ان تنقل الى مزود جديد.",
"unlink_all_oauth_accounts_prompt": "هل انت متأكد من ازالة ربط جميع حسابات OAuth؟ هذا سيقوم باعادة ضبط الID الخاص بالOAuth لكل مستخدم ولا يمكن التراجع عن العملية.",
"user_cleanup_job": "تنظيف المستخدم", "user_cleanup_job": "تنظيف المستخدم",
"user_delete_delay": "سيتم جدولة حساب <b>{user}</b> ومحتوياته للحذف النهائي في غضون {delay, plural, one {# يوم} other {# أيام}}.", "user_delete_delay": "سيتم جدولة حساب <b>{user}</b> ومحتوياته للحذف النهائي في غضون {delay, plural, one {# يوم} other {# أيام}}.",
"user_delete_delay_settings": "فترة التأخير قبل الحذف", "user_delete_delay_settings": "فترة التأخير قبل الحذف",
@@ -371,13 +387,16 @@
"admin_password": "كلمة سر المشرف", "admin_password": "كلمة سر المشرف",
"administration": "الإدارة", "administration": "الإدارة",
"advanced": "متقدم", "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_enable_alternate_media_filter_title": "[تجريبي] استخدم جهاز تصفية مزامنه البومات بديل",
"advanced_settings_log_level_title": "مستوى السجل: {level}", "advanced_settings_log_level_title": "مستوى السجل: {level}",
"advanced_settings_prefer_remote_subtitle": "تكون بعض الأجهزة بطيئة للغاية في تحميل الصور المصغرة من الأصول الموجودة على الجهاز. قم بتنشيط هذا الإعداد لتحميل الصور البعيدة بدلاً من ذلك.", "advanced_settings_prefer_remote_subtitle": "تكون بعض الأجهزة بطيئة للغاية في تحميل الصور المصغرة من الأصول المحلية. قم بتفعيل هذا الخيار لتحميل الصور البعيدة بدلاً من ذلك.",
"advanced_settings_prefer_remote_title": "تفضل الصور البعيدة", "advanced_settings_prefer_remote_title": "تفضل الصور البعيدة",
"advanced_settings_proxy_headers_subtitle": "عرف عناوين الوكيل التي يستخدمها Immich لارسال كل طلب شبكي", "advanced_settings_proxy_headers_subtitle": "عرف عناوين الوكيل التي يستخدمها Immich لارسال كل طلب شبكي",
"advanced_settings_proxy_headers_title": "عناوين الوكيل", "advanced_settings_proxy_headers_title": "عناوين الوكيل",
"advanced_settings_readonly_mode_title": "وضع القراءة فقط",
"advanced_settings_self_signed_ssl_subtitle": "تخطي التحقق من شهادة SSL لخادم النقطة النهائي. مكلوب للشهادات الموقعة ذاتيا.", "advanced_settings_self_signed_ssl_subtitle": "تخطي التحقق من شهادة SSL لخادم النقطة النهائي. مكلوب للشهادات الموقعة ذاتيا.",
"advanced_settings_self_signed_ssl_title": "السماح بشهادات SSL الموقعة ذاتيًا", "advanced_settings_self_signed_ssl_title": "السماح بشهادات SSL الموقعة ذاتيًا",
"advanced_settings_sync_remote_deletions_subtitle": "حذف او استعادة تلقائي للاصول على هذا الجهاز عند تنفيذ العملية على الويب", "advanced_settings_sync_remote_deletions_subtitle": "حذف او استعادة تلقائي للاصول على هذا الجهاز عند تنفيذ العملية على الويب",
@@ -507,7 +526,7 @@
"back_close_deselect": "الرجوع أو الإغلاق أو إلغاء التحديد", "back_close_deselect": "الرجوع أو الإغلاق أو إلغاء التحديد",
"background_location_permission": "اذن الوصول للموقع في الخلفية", "background_location_permission": "اذن الوصول للموقع في الخلفية",
"background_location_permission_content": "للتمكن من تبديل الشبكه بالخلفية، Immich يحتاج*دائما* للحصول على موقع دقيق ليتمكن التطبيق من قرائة اسم شبكة الWi-Fi", "background_location_permission_content": "للتمكن من تبديل الشبكه بالخلفية، Immich يحتاج*دائما* للحصول على موقع دقيق ليتمكن التطبيق من قرائة اسم شبكة الWi-Fi",
"backup": "دعم", "backup": "نسخ احتياطي",
"backup_album_selection_page_albums_device": "الالبومات على الجهاز ({count})", "backup_album_selection_page_albums_device": "الالبومات على الجهاز ({count})",
"backup_album_selection_page_albums_tap": "انقر للتضمين، وانقر نقرًا مزدوجًا للاستثناء", "backup_album_selection_page_albums_tap": "انقر للتضمين، وانقر نقرًا مزدوجًا للاستثناء",
"backup_album_selection_page_assets_scatter": "يمكن أن تنتشر الأصول عبر ألبومات متعددة. وبالتالي، يمكن تضمين الألبومات أو استبعادها أثناء عملية النسخ الاحتياطي.", "backup_album_selection_page_assets_scatter": "يمكن أن تنتشر الأصول عبر ألبومات متعددة. وبالتالي، يمكن تضمين الألبومات أو استبعادها أثناء عملية النسخ الاحتياطي.",
@@ -568,8 +587,10 @@
"backup_manual_in_progress": "قيد التحميل حاول مره اخرى", "backup_manual_in_progress": "قيد التحميل حاول مره اخرى",
"backup_manual_success": "نجاح", "backup_manual_success": "نجاح",
"backup_manual_title": "حالة التحميل", "backup_manual_title": "حالة التحميل",
"backup_options": "خيارات النسخ الاحتياطي",
"backup_options_page_title": "خيارات النسخ الاحتياطي", "backup_options_page_title": "خيارات النسخ الاحتياطي",
"backup_setting_subtitle": "ادارة اعدادات التحميل في الخلفية والمقدمة", "backup_setting_subtitle": "ادارة اعدادات التحميل في الخلفية والمقدمة",
"backup_settings_subtitle": "إدارة إعدادات التحميل",
"backward": "الى الوراء", "backward": "الى الوراء",
"beta_sync": "حالة المزامنة التجريبية", "beta_sync": "حالة المزامنة التجريبية",
"beta_sync_subtitle": "ادارة نظام المزامنة الجديد", "beta_sync_subtitle": "ادارة نظام المزامنة الجديد",
@@ -639,6 +660,7 @@
"clear": "إخلاء", "clear": "إخلاء",
"clear_all": "إخلاء الكل", "clear_all": "إخلاء الكل",
"clear_all_recent_searches": "مسح جميع عمليات البحث الأخيرة", "clear_all_recent_searches": "مسح جميع عمليات البحث الأخيرة",
"clear_file_cache": "مسح ذاكرة التخزين المؤقت للملفات",
"clear_message": "إخلاء الرسالة", "clear_message": "إخلاء الرسالة",
"clear_value": "إخلاء القيمة", "clear_value": "إخلاء القيمة",
"client_cert_dialog_msg_confirm": "حسنا", "client_cert_dialog_msg_confirm": "حسنا",
@@ -709,6 +731,7 @@
"create_new_user": "إنشاء مستخدم جديد", "create_new_user": "إنشاء مستخدم جديد",
"create_shared_album_page_share_add_assets": "إضافة الأصول", "create_shared_album_page_share_add_assets": "إضافة الأصول",
"create_shared_album_page_share_select_photos": "حدد الصور", "create_shared_album_page_share_select_photos": "حدد الصور",
"create_shared_link": "انشاء رابط مشترك",
"create_tag": "إنشاء علامة", "create_tag": "إنشاء علامة",
"create_tag_description": "أنشئ علامة جديدة. بالنسبة للعلامات المتداخلة، يرجى إدخال المسار الكامل للعلامة بما في ذلك الخطوط المائلة للأمام.", "create_tag_description": "أنشئ علامة جديدة. بالنسبة للعلامات المتداخلة، يرجى إدخال المسار الكامل للعلامة بما في ذلك الخطوط المائلة للأمام.",
"create_user": "إنشاء مستخدم", "create_user": "إنشاء مستخدم",
@@ -721,6 +744,7 @@
"current_server_address": "عنوان الخادم الحالي", "current_server_address": "عنوان الخادم الحالي",
"custom_locale": "لغة مخصصة", "custom_locale": "لغة مخصصة",
"custom_locale_description": "تنسيق التواريخ والأرقام بناءً على اللغة والمنطقة", "custom_locale_description": "تنسيق التواريخ والأرقام بناءً على اللغة والمنطقة",
"custom_url": "رابط مخصص",
"daily_title_text_date": "E ، MMM DD", "daily_title_text_date": "E ، MMM DD",
"daily_title_text_date_year": "E ، MMM DD ، yyyy", "daily_title_text_date_year": "E ، MMM DD ، yyyy",
"dark": "معتم", "dark": "معتم",
@@ -732,6 +756,7 @@
"date_of_birth_saved": "تم حفظ تاريخ الميلاد بنجاح", "date_of_birth_saved": "تم حفظ تاريخ الميلاد بنجاح",
"date_range": "نطاق الموعد", "date_range": "نطاق الموعد",
"day": "يوم", "day": "يوم",
"days": "ايام",
"deduplicate_all": "إلغاء تكرار الكل", "deduplicate_all": "إلغاء تكرار الكل",
"deduplication_criteria_1": "حجم الصورة بوحدات البايت", "deduplication_criteria_1": "حجم الصورة بوحدات البايت",
"deduplication_criteria_2": "عدد بيانات EXIF", "deduplication_criteria_2": "عدد بيانات EXIF",
@@ -816,8 +841,12 @@
"edit": "تعديل", "edit": "تعديل",
"edit_album": "تعديل الألبوم", "edit_album": "تعديل الألبوم",
"edit_avatar": "تعديل الصورة الشخصية", "edit_avatar": "تعديل الصورة الشخصية",
"edit_birthday": "تعديل تاريخ الميلاد",
"edit_date": "تعديل التاريخ", "edit_date": "تعديل التاريخ",
"edit_date_and_time": "تعديل التاريخ والوقت", "edit_date_and_time": "تعديل التاريخ والوقت",
"edit_date_and_time_action_prompt": "تم تعديل التاريخ والوقت ل{count} ملف(ات)",
"edit_date_and_time_by_offset": "تعديل التاريخ حسب قيمة ازاحة معينة",
"edit_date_and_time_by_offset_interval": "نطاق التاريخ الجديد: {from} - {to}",
"edit_description": "تعديل الوصف", "edit_description": "تعديل الوصف",
"edit_description_prompt": "الرجاء اختيار وصف جديد:", "edit_description_prompt": "الرجاء اختيار وصف جديد:",
"edit_exclusion_pattern": "تعديل نمط الاستبعاد", "edit_exclusion_pattern": "تعديل نمط الاستبعاد",
@@ -890,6 +919,7 @@
"failed_to_load_notifications": "فشل تحميل الإشعارات", "failed_to_load_notifications": "فشل تحميل الإشعارات",
"failed_to_load_people": "فشل تحميل الأشخاص", "failed_to_load_people": "فشل تحميل الأشخاص",
"failed_to_remove_product_key": "تعذر إزالة مفتاح المنتج", "failed_to_remove_product_key": "تعذر إزالة مفتاح المنتج",
"failed_to_reset_pin_code": "فشل اعادة تعيين رمز الPIN",
"failed_to_stack_assets": "فشل في تكديس المحتويات", "failed_to_stack_assets": "فشل في تكديس المحتويات",
"failed_to_unstack_assets": "فشل في فصل المحتويات", "failed_to_unstack_assets": "فشل في فصل المحتويات",
"failed_to_update_notification_status": "فشل في تحديث حالة الإشعار", "failed_to_update_notification_status": "فشل في تحديث حالة الإشعار",
@@ -898,6 +928,7 @@
"paths_validation_failed": "فشل في التحقق من {paths, plural, one {# مسار} other {# مسارات}}", "paths_validation_failed": "فشل في التحقق من {paths, plural, one {# مسار} other {# مسارات}}",
"profile_picture_transparent_pixels": "لا يمكن أن تحتوي صور الملف الشخصي على أجزاء/بكسلات شفافة. يرجى التكبير و/أو تحريك الصورة.", "profile_picture_transparent_pixels": "لا يمكن أن تحتوي صور الملف الشخصي على أجزاء/بكسلات شفافة. يرجى التكبير و/أو تحريك الصورة.",
"quota_higher_than_disk_size": "لقد قمت بتعيين حصة نسبية أعلى من حجم القرص", "quota_higher_than_disk_size": "لقد قمت بتعيين حصة نسبية أعلى من حجم القرص",
"something_went_wrong": "حدث خطأ ما",
"unable_to_add_album_users": "تعذر إضافة مستخدمين إلى الألبوم", "unable_to_add_album_users": "تعذر إضافة مستخدمين إلى الألبوم",
"unable_to_add_assets_to_shared_link": "تعذر إضافة المحتويات إلى الرابط المشترك", "unable_to_add_assets_to_shared_link": "تعذر إضافة المحتويات إلى الرابط المشترك",
"unable_to_add_comment": "تعذر إضافة التعليق", "unable_to_add_comment": "تعذر إضافة التعليق",
@@ -983,13 +1014,11 @@
}, },
"exif": "Exif (صيغة ملف صوري قابل للتبادل)", "exif": "Exif (صيغة ملف صوري قابل للتبادل)",
"exif_bottom_sheet_description": "اضف وصفا...", "exif_bottom_sheet_description": "اضف وصفا...",
"exif_bottom_sheet_description_error": "خطأ في تحديث الوصف",
"exif_bottom_sheet_details": "تفاصيل", "exif_bottom_sheet_details": "تفاصيل",
"exif_bottom_sheet_location": "موقع", "exif_bottom_sheet_location": "موقع",
"exif_bottom_sheet_people": "الناس", "exif_bottom_sheet_people": "الناس",
"exif_bottom_sheet_person_add_person": "اضف اسما", "exif_bottom_sheet_person_add_person": "اضف اسما",
"exif_bottom_sheet_person_age_months": "العمر {months} اشهر",
"exif_bottom_sheet_person_age_year_months": "العمر ١ سنة،{months} اشهر",
"exif_bottom_sheet_person_age_years": "العمر {years}",
"exit_slideshow": "خروج من العرض التقديمي", "exit_slideshow": "خروج من العرض التقديمي",
"expand_all": "توسيع الكل", "expand_all": "توسيع الكل",
"experimental_settings_new_asset_list_subtitle": "أعمال جارية", "experimental_settings_new_asset_list_subtitle": "أعمال جارية",
@@ -1031,11 +1060,13 @@
"filter_people": "تصفية الاشخاص", "filter_people": "تصفية الاشخاص",
"filter_places": "تصفية الاماكن", "filter_places": "تصفية الاماكن",
"find_them_fast": "يمكنك العثور عليها بسرعة بالاسم من خلال البحث", "find_them_fast": "يمكنك العثور عليها بسرعة بالاسم من خلال البحث",
"first": "الاول",
"fix_incorrect_match": "إصلاح المطابقة غير الصحيحة", "fix_incorrect_match": "إصلاح المطابقة غير الصحيحة",
"folder": "مجلد", "folder": "مجلد",
"folder_not_found": "لم يتم العثور على المجلد", "folder_not_found": "لم يتم العثور على المجلد",
"folders": "المجلدات", "folders": "المجلدات",
"folders_feature_description": "تصفح عرض المجلد للصور ومقاطع الفيديو الموجودة على نظام الملفات", "folders_feature_description": "تصفح عرض المجلد للصور ومقاطع الفيديو الموجودة على نظام الملفات",
"forgot_pin_code_question": "هل نسيت رمز الPIN الخاص بك؟",
"forward": "إلى الأمام", "forward": "إلى الأمام",
"gcast_enabled": "كوكل كاست", "gcast_enabled": "كوكل كاست",
"gcast_enabled_description": "تقوم هذه الميزة بتحميل الموارد الخارجية من Google حتى تعمل.", "gcast_enabled_description": "تقوم هذه الميزة بتحميل الموارد الخارجية من Google حتى تعمل.",
@@ -1056,6 +1087,9 @@
"haptic_feedback_switch": "تمكين ردود الفعل اللمسية", "haptic_feedback_switch": "تمكين ردود الفعل اللمسية",
"haptic_feedback_title": "ردود فعل لمسية", "haptic_feedback_title": "ردود فعل لمسية",
"has_quota": "محدد بحصة", "has_quota": "محدد بحصة",
"hash_asset": "عمل Hash للأصل (للملف)",
"hashed_assets": "أصول (ملفات) تم عمل Hash لها",
"hashing": "يتم عمل Hash",
"header_settings_add_header_tip": "اضاف راس", "header_settings_add_header_tip": "اضاف راس",
"header_settings_field_validator_msg": "القيمة لا يمكن ان تكون فارغة", "header_settings_field_validator_msg": "القيمة لا يمكن ان تكون فارغة",
"header_settings_header_name_input": "اسم الرأس", "header_settings_header_name_input": "اسم الرأس",
@@ -1069,9 +1103,9 @@
"hide_password": "اخفاء كلمة المرور", "hide_password": "اخفاء كلمة المرور",
"hide_person": "اخفاء الشخص", "hide_person": "اخفاء الشخص",
"hide_unnamed_people": "إخفاء الأشخاص بدون إسم", "hide_unnamed_people": "إخفاء الأشخاص بدون إسم",
"home_page_add_to_album_conflicts": "تمت إضافة {تمت إضافة} الأصول إلى الألبوم {الألبوم}.{فشل} الأصول موجودة بالفعل في الألبوم.", "home_page_add_to_album_conflicts": "تمت إضافة {added} أصول إلى الألبوم {album}. {failed} أصول موجودة بالفعل في الألبوم.",
"home_page_add_to_album_err_local": "لا يمكن إضافة الأصول المحلية إلى الألبومات حتى الآن ، سوف يتخطى", "home_page_add_to_album_err_local": "لا يمكن إضافة الأصول المحلية إلى الألبومات حتى الآن ، سوف يتخطى",
"home_page_add_to_album_success": "تمت إضافة {تمت إضافة} الأصول إلى الألبوم {الألبوم}.", "home_page_add_to_album_success": "تمت إضافة {added} أصول إلى الألبوم {album}.",
"home_page_album_err_partner": "لا يمكن إضافة أصول شريكة إلى ألبوم حتى الآن ، سوف يتخطى", "home_page_album_err_partner": "لا يمكن إضافة أصول شريكة إلى ألبوم حتى الآن ، سوف يتخطى",
"home_page_archive_err_local": "لا يمكن أرشفة الأصول المحلية حتى الآن ، سوف يتخطى", "home_page_archive_err_local": "لا يمكن أرشفة الأصول المحلية حتى الآن ، سوف يتخطى",
"home_page_archive_err_partner": "لا يمكن أرشفة الأصول الشريكة ، سوف يتخطى", "home_page_archive_err_partner": "لا يمكن أرشفة الأصول الشريكة ، سوف يتخطى",
@@ -1087,7 +1121,9 @@
"home_page_upload_err_limit": "لا يمكن إلا تحميل 30 أحد الأصول في وقت واحد ، سوف يتخطى", "home_page_upload_err_limit": "لا يمكن إلا تحميل 30 أحد الأصول في وقت واحد ، سوف يتخطى",
"host": "المضيف", "host": "المضيف",
"hour": "ساعة", "hour": "ساعة",
"hours": "ساعات",
"id": "المعرف", "id": "المعرف",
"idle": "خامل",
"ignore_icloud_photos": "تجاهل صور iCloud", "ignore_icloud_photos": "تجاهل صور iCloud",
"ignore_icloud_photos_description": "الصور المخزنة في Cloud لن يتم تحميلها إلى خادم Immich", "ignore_icloud_photos_description": "الصور المخزنة في Cloud لن يتم تحميلها إلى خادم Immich",
"image": "صورة", "image": "صورة",
@@ -1145,10 +1181,13 @@
"language_no_results_title": "لم يتم العثور على لغات", "language_no_results_title": "لم يتم العثور على لغات",
"language_search_hint": "البحث عن لغات...", "language_search_hint": "البحث عن لغات...",
"language_setting_description": "اختر لغتك المفضلة", "language_setting_description": "اختر لغتك المفضلة",
"large_files": "ملفات كبيرة",
"last": "الاخير",
"last_seen": "اخر ظهور", "last_seen": "اخر ظهور",
"latest_version": "احدث اصدار", "latest_version": "احدث اصدار",
"latitude": "خط العرض", "latitude": "خط العرض",
"leave": "مغادرة", "leave": "مغادرة",
"leave_album": "اترك الالبوم",
"lens_model": "نموذج العدسات", "lens_model": "نموذج العدسات",
"let_others_respond": "دع الآخرين يستجيبون", "let_others_respond": "دع الآخرين يستجيبون",
"level": "المستوى", "level": "المستوى",
@@ -1160,7 +1199,9 @@
"library_page_sort_created": "تاريخ الإنشاء", "library_page_sort_created": "تاريخ الإنشاء",
"library_page_sort_last_modified": "آخر تعديل", "library_page_sort_last_modified": "آخر تعديل",
"library_page_sort_title": "عنوان الألبوم", "library_page_sort_title": "عنوان الألبوم",
"licenses": "رُخَص",
"light": "المضيئ", "light": "المضيئ",
"like": "اعجاب",
"like_deleted": "تم حذف الإعجاب", "like_deleted": "تم حذف الإعجاب",
"link_motion_video": "رابط فيديو الحركة", "link_motion_video": "رابط فيديو الحركة",
"link_to_oauth": "الربط مع OAuth", "link_to_oauth": "الربط مع OAuth",
@@ -1168,7 +1209,9 @@
"list": "قائمة", "list": "قائمة",
"loading": "تحميل", "loading": "تحميل",
"loading_search_results_failed": "فشل تحميل نتائج البحث", "loading_search_results_failed": "فشل تحميل نتائج البحث",
"local": "محلّي",
"local_asset_cast_failed": "غير قادر على بث أصل لم يتم تحميله إلى الخادم", "local_asset_cast_failed": "غير قادر على بث أصل لم يتم تحميله إلى الخادم",
"local_assets": "أُصول (ملفات) محلية",
"local_network": "شبكة محلية", "local_network": "شبكة محلية",
"local_network_sheet_info": "سيتصل التطبيق بالخادم من خلال عنوان URL هذا عند استخدام شبكة Wi-Fi المحددة", "local_network_sheet_info": "سيتصل التطبيق بالخادم من خلال عنوان URL هذا عند استخدام شبكة Wi-Fi المحددة",
"location_permission": "اذن الموقع", "location_permission": "اذن الموقع",
@@ -1225,7 +1268,7 @@
"manage_your_devices": "إدارة الأجهزة التي تم تسجيل الدخول إليها", "manage_your_devices": "إدارة الأجهزة التي تم تسجيل الدخول إليها",
"manage_your_oauth_connection": "إدارة اتصال OAuth الخاص بك", "manage_your_oauth_connection": "إدارة اتصال OAuth الخاص بك",
"map": "الخريطة", "map": "الخريطة",
"map_assets_in_bounds": "{count} صور", "map_assets_in_bounds": "{count, plural, =0 {لايوجد صور في هذه المنطقة} one {# صورة} other {# صور}}",
"map_cannot_get_user_location": "لا يمكن الحصول على موقع المستخدم", "map_cannot_get_user_location": "لا يمكن الحصول على موقع المستخدم",
"map_location_dialog_yes": "نعم", "map_location_dialog_yes": "نعم",
"map_location_picker_page_use_location": "استخدم هذا الموقع", "map_location_picker_page_use_location": "استخدم هذا الموقع",
@@ -1233,7 +1276,6 @@
"map_location_service_disabled_title": "خدمة الموقع معطل", "map_location_service_disabled_title": "خدمة الموقع معطل",
"map_marker_for_images": "علامة الخريطة للصور الملتقطة في {city}، {country}", "map_marker_for_images": "علامة الخريطة للصور الملتقطة في {city}، {country}",
"map_marker_with_image": "علامة الخريطة مع الصورة", "map_marker_with_image": "علامة الخريطة مع الصورة",
"map_no_assets_in_bounds": "لا توجد صور في هذا المجال",
"map_no_location_permission_content": "هناك حاجة إلى إذن الموقع لعرض الأصول من موقعك الحالي.هل تريد السماح به الآن؟", "map_no_location_permission_content": "هناك حاجة إلى إذن الموقع لعرض الأصول من موقعك الحالي.هل تريد السماح به الآن؟",
"map_no_location_permission_title": "تم رفض إذن الموقع", "map_no_location_permission_title": "تم رفض إذن الموقع",
"map_settings": "إعدادات الخريطة", "map_settings": "إعدادات الخريطة",
@@ -1270,6 +1312,7 @@
"merged_people_count": "دمج {count, plural, one {شخص واحد} other {# أشخاص}}", "merged_people_count": "دمج {count, plural, one {شخص واحد} other {# أشخاص}}",
"minimize": "تصغير", "minimize": "تصغير",
"minute": "دقيقة", "minute": "دقيقة",
"minutes": "دقائق",
"missing": "المفقودة", "missing": "المفقودة",
"model": "نموذج", "model": "نموذج",
"month": "شهر", "month": "شهر",
@@ -1289,6 +1332,9 @@
"my_albums": "ألبوماتي", "my_albums": "ألبوماتي",
"name": "الاسم", "name": "الاسم",
"name_or_nickname": "الاسم أو اللقب", "name_or_nickname": "الاسم أو اللقب",
"network_requirement_photos_upload": "استخدام بيانات الهاتف المحمول لعمل نسخة احتياطية للصور",
"network_requirement_videos_upload": "استخدام بيانات الهاتف المحمول لعمل نسخة احتياطية لمقاطع الفيديو",
"network_requirements_updated": "تم تغيير متطلبات الشبكة، يتم إعادة تعيين قائمة انتظار النسخ الاحتياطي",
"networking_settings": "الشبكات", "networking_settings": "الشبكات",
"networking_subtitle": "إدارة إعدادات نقطة الخادم النهائية", "networking_subtitle": "إدارة إعدادات نقطة الخادم النهائية",
"never": "أبداً", "never": "أبداً",
@@ -1324,6 +1370,7 @@
"no_results": "لا يوجد نتائج", "no_results": "لا يوجد نتائج",
"no_results_description": "جرب كلمة رئيسية مرادفة أو أكثر عمومية", "no_results_description": "جرب كلمة رئيسية مرادفة أو أكثر عمومية",
"no_shared_albums_message": "قم بإنشاء ألبوم لمشاركة الصور ومقاطع الفيديو مع الأشخاص في شبكتك", "no_shared_albums_message": "قم بإنشاء ألبوم لمشاركة الصور ومقاطع الفيديو مع الأشخاص في شبكتك",
"no_uploads_in_progress": "لا يوجد اي ملفات قيد الرفع",
"not_in_any_album": "ليست في أي ألبوم", "not_in_any_album": "ليست في أي ألبوم",
"not_selected": "لم يختار", "not_selected": "لم يختار",
"note_apply_storage_label_to_previously_uploaded assets": "ملاحظة: لتطبيق سمة التخزين على المحتويات التي تم رفعها مسبقًا، قم بتشغيل", "note_apply_storage_label_to_previously_uploaded assets": "ملاحظة: لتطبيق سمة التخزين على المحتويات التي تم رفعها مسبقًا، قم بتشغيل",
@@ -1339,6 +1386,7 @@
"oauth": "OAuth", "oauth": "OAuth",
"official_immich_resources": "الموارد الرسمية لشركة Immich", "official_immich_resources": "الموارد الرسمية لشركة Immich",
"offline": "غير متصل", "offline": "غير متصل",
"offset": "ازاحة",
"ok": "نعم", "ok": "نعم",
"oldest_first": "الأقدم أولا", "oldest_first": "الأقدم أولا",
"on_this_device": "على هذا الجهاز", "on_this_device": "على هذا الجهاز",
@@ -1361,6 +1409,7 @@
"original": "أصلي", "original": "أصلي",
"other": "أخرى", "other": "أخرى",
"other_devices": "أجهزة أخرى", "other_devices": "أجهزة أخرى",
"other_entities": "كيانات أخرى",
"other_variables": "متغيرات أخرى", "other_variables": "متغيرات أخرى",
"owned": "مملوكة", "owned": "مملوكة",
"owner": "المالك", "owner": "المالك",
@@ -1415,7 +1464,10 @@
"permission_onboarding_permission_limited": "إذن محدود. للسماح بالنسخ الاحتياطي للتطبيق وإدارة مجموعة المعرض بالكامل، امنح أذونات الصور والفيديو في الإعدادات.", "permission_onboarding_permission_limited": "إذن محدود. للسماح بالنسخ الاحتياطي للتطبيق وإدارة مجموعة المعرض بالكامل، امنح أذونات الصور والفيديو في الإعدادات.",
"permission_onboarding_request": "يتطلب التطبيق إذنًا لعرض الصور ومقاطع الفيديو الخاصة بك.", "permission_onboarding_request": "يتطلب التطبيق إذنًا لعرض الصور ومقاطع الفيديو الخاصة بك.",
"person": "شخص", "person": "شخص",
"person_birthdate": "تاريخ الميلاد {التاريخ}", "person_age_months": "{months, plural, one {# شهر} other {# اشهر}} من العمر",
"person_age_year_months": "1 عام, {months, plural, one {# شهر} other {# اشهر}} من العمر",
"person_age_years": "{years, plural, other {# اعوام}} من العمر",
"person_birthdate": "ولد في {date}",
"person_hidden": "{name}{hidden, select, true { (مخفي)} other {}}", "person_hidden": "{name}{hidden, select, true { (مخفي)} other {}}",
"photo_shared_all_users": "يبدو أنك شاركت صورك مع جميع المستخدمين أو ليس لديك أي مستخدم للمشاركة معه.", "photo_shared_all_users": "يبدو أنك شاركت صورك مع جميع المستخدمين أو ليس لديك أي مستخدم للمشاركة معه.",
"photos": "الصور", "photos": "الصور",
@@ -1492,6 +1544,7 @@
"purchase_server_description_2": "حالة الداعم", "purchase_server_description_2": "حالة الداعم",
"purchase_server_title": "الخادم", "purchase_server_title": "الخادم",
"purchase_settings_server_activated": "يتم إدارة مفتاح منتج الخادم من قبل مدير النظام", "purchase_settings_server_activated": "يتم إدارة مفتاح منتج الخادم من قبل مدير النظام",
"queue_status": "يتم الاضافة الى قائمة انتظار النسخ الاحتياطي {count}/{total}",
"rating": "تقييم نجمي", "rating": "تقييم نجمي",
"rating_clear": "مسح التقييم", "rating_clear": "مسح التقييم",
"rating_count": "{count, plural, one {# نجمة} other {# نجوم}}", "rating_count": "{count, plural, one {# نجمة} other {# نجوم}}",
@@ -1520,6 +1573,8 @@
"refreshing_faces": "جاري تحديث الوجوه", "refreshing_faces": "جاري تحديث الوجوه",
"refreshing_metadata": "جارٍ تحديث البيانات الوصفية", "refreshing_metadata": "جارٍ تحديث البيانات الوصفية",
"regenerating_thumbnails": "جارٍ تجديد الصور المصغرة", "regenerating_thumbnails": "جارٍ تجديد الصور المصغرة",
"remote": "بعيد",
"remote_assets": "الأُصول البعيدة",
"remove": "إزالة", "remove": "إزالة",
"remove_assets_album_confirmation": "هل أنت متأكد أنك تريد إزالة {count, plural, one {# المحتوى} other {# المحتويات}} من الألبوم ؟", "remove_assets_album_confirmation": "هل أنت متأكد أنك تريد إزالة {count, plural, one {# المحتوى} other {# المحتويات}} من الألبوم ؟",
"remove_assets_shared_link_confirmation": "هل أنت متأكد أنك تريد إزالة {count, plural, one {# المحتوى} other {# المحتويات}} من رابط المشاركة هذا؟", "remove_assets_shared_link_confirmation": "هل أنت متأكد أنك تريد إزالة {count, plural, one {# المحتوى} other {# المحتويات}} من رابط المشاركة هذا؟",
@@ -1527,6 +1582,7 @@
"remove_custom_date_range": "إزالة النطاق الزمني المخصص", "remove_custom_date_range": "إزالة النطاق الزمني المخصص",
"remove_deleted_assets": "إزالة الملفات الغير متصلة", "remove_deleted_assets": "إزالة الملفات الغير متصلة",
"remove_from_album": "إزالة من الألبوم", "remove_from_album": "إزالة من الألبوم",
"remove_from_album_action_prompt": "تم ازالة {count} من الالبوم",
"remove_from_favorites": "إزالة من المفضلة", "remove_from_favorites": "إزالة من المفضلة",
"remove_from_lock_folder_action_prompt": "{count} أويل من المجلد المقفل", "remove_from_lock_folder_action_prompt": "{count} أويل من المجلد المقفل",
"remove_from_locked_folder": "ازالة من المجلد المقفل", "remove_from_locked_folder": "ازالة من المجلد المقفل",
@@ -1556,19 +1612,28 @@
"reset_password": "إعادة تعيين كلمة المرور", "reset_password": "إعادة تعيين كلمة المرور",
"reset_people_visibility": "إعادة ضبط ظهور الأشخاص", "reset_people_visibility": "إعادة ضبط ظهور الأشخاص",
"reset_pin_code": "اعادة تعيين رمز PIN", "reset_pin_code": "اعادة تعيين رمز PIN",
"reset_pin_code_description": "اذا نسيت رمز الPIN الخاص بك، بامكانك التواصل مع مدير الخادم لديك لاعادة تعيينه",
"reset_pin_code_success": "تم اعادة تعيين رمز الPIN بنجاح",
"reset_pin_code_with_password": "يمكنك دائما اعادة تعيين رمز الPIN الخاص بك عن طريق كلمة المرور الخاصة بك",
"reset_sqlite": "إعادة تعيين قاعدة بيانات SQLite",
"reset_sqlite_confirmation": "هل أنت متأكد من رغبتك في إعادة ضبط قاعدة بيانات SQLite؟ ستحتاج إلى تسجيل الخروج ثم تسجيل الدخول مرة أخرى لإعادة مزامنة البيانات",
"reset_sqlite_success": "تم إعادة تعيين قاعدة بيانات SQLite بنجاح",
"reset_to_default": "إعادة التعيين إلى الافتراضي", "reset_to_default": "إعادة التعيين إلى الافتراضي",
"resolve_duplicates": "معالجة النسخ المكررة", "resolve_duplicates": "معالجة النسخ المكررة",
"resolved_all_duplicates": "تم حل جميع التكرارات", "resolved_all_duplicates": "تم حل جميع التكرارات",
"restore": "الاستعاده من سلة المهملات", "restore": "الاستعاده من سلة المهملات",
"restore_all": "استعادة الكل", "restore_all": "استعادة الكل",
"restore_trash_action_prompt": "تم استعادة {count} من المهملات",
"restore_user": "استعادة المستخدم", "restore_user": "استعادة المستخدم",
"restored_asset": "المحتويات المستعادة", "restored_asset": "المحتويات المستعادة",
"resume": "استئناف", "resume": "استئناف",
"retry_upload": "أعد محاولة الرفع", "retry_upload": "أعد محاولة الرفع",
"review_duplicates": "مراجعة التكرارات", "review_duplicates": "مراجعة التكرارات",
"review_large_files": "مراجعة الملفات الكبيرة",
"role": "الدور", "role": "الدور",
"role_editor": "المحرر", "role_editor": "المحرر",
"role_viewer": "العارض", "role_viewer": "العارض",
"running": "قيد التشغيل",
"save": "حفظ", "save": "حفظ",
"save_to_gallery": "حفظ الى المعرض", "save_to_gallery": "حفظ الى المعرض",
"saved_api_key": "تم حفظ مفتاح الـ API", "saved_api_key": "تم حفظ مفتاح الـ API",
@@ -1700,6 +1765,7 @@
"settings_saved": "تم حفظ الإعدادات", "settings_saved": "تم حفظ الإعدادات",
"setup_pin_code": "تحديد رمز PIN", "setup_pin_code": "تحديد رمز PIN",
"share": "مشاركة", "share": "مشاركة",
"share_action_prompt": "تم مشاركة {count} أصل (ملف)",
"share_add_photos": "إضافة الصور", "share_add_photos": "إضافة الصور",
"share_assets_selected": "اختيار {count}", "share_assets_selected": "اختيار {count}",
"share_dialog_preparing": "تحضير...", "share_dialog_preparing": "تحضير...",
@@ -1721,6 +1787,7 @@
"shared_link_clipboard_copied_massage": "نسخ إلى الحافظة", "shared_link_clipboard_copied_massage": "نسخ إلى الحافظة",
"shared_link_clipboard_text": "رابط: {link}\nكلمة المرور: {password}", "shared_link_clipboard_text": "رابط: {link}\nكلمة المرور: {password}",
"shared_link_create_error": "خطأ أثناء إنشاء رابط مشترك", "shared_link_create_error": "خطأ أثناء إنشاء رابط مشترك",
"shared_link_custom_url_description": "الوصول إلى هذا الرابط المشترك باستخدام عنوان URL مخصص",
"shared_link_edit_description_hint": "أدخل وصف المشاركة", "shared_link_edit_description_hint": "أدخل وصف المشاركة",
"shared_link_edit_expire_after_option_day": "يوم 1", "shared_link_edit_expire_after_option_day": "يوم 1",
"shared_link_edit_expire_after_option_days": "{count} ايام", "shared_link_edit_expire_after_option_days": "{count} ايام",
@@ -1746,6 +1813,7 @@
"shared_link_info_chip_metadata": "EXIF", "shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "إدارة الروابط المشتركة", "shared_link_manage_links": "إدارة الروابط المشتركة",
"shared_link_options": "خيارات الرابط المشترك", "shared_link_options": "خيارات الرابط المشترك",
"shared_link_password_description": "طلب كلمة مرور للوصول إلى هذا الرابط المشترك",
"shared_links": "روابط مشتركة", "shared_links": "روابط مشتركة",
"shared_links_description": "وصف الروابط المشتركة", "shared_links_description": "وصف الروابط المشتركة",
"shared_photos_and_videos_count": "{assetCount, plural, other {# الصور ومقاطع الفيديو المُشارَكة.}}", "shared_photos_and_videos_count": "{assetCount, plural, other {# الصور ومقاطع الفيديو المُشارَكة.}}",
@@ -1795,12 +1863,14 @@
"sort_created": "تاريخ الإنشاء", "sort_created": "تاريخ الإنشاء",
"sort_items": "عدد العناصر", "sort_items": "عدد العناصر",
"sort_modified": "تم تعديل التاريخ", "sort_modified": "تم تعديل التاريخ",
"sort_newest": "احدث صورة",
"sort_oldest": "أقدم صورة", "sort_oldest": "أقدم صورة",
"sort_people_by_similarity": "رتب الأشخاص حسب التشابه", "sort_people_by_similarity": "رتب الأشخاص حسب التشابه",
"sort_recent": "أحدث صورة", "sort_recent": "أحدث صورة",
"sort_title": "العنوان", "sort_title": "العنوان",
"source": "المصدر", "source": "المصدر",
"stack": "تجميع", "stack": "تجميع",
"stack_action_prompt": "{count} مكدسة",
"stack_duplicates": "تجميع النسخ المكررة", "stack_duplicates": "تجميع النسخ المكررة",
"stack_select_one_photo": "حدد صورة رئيسية واحدة للمجموعة", "stack_select_one_photo": "حدد صورة رئيسية واحدة للمجموعة",
"stack_selected_photos": "كدس الصور المحددة", "stack_selected_photos": "كدس الصور المحددة",
@@ -1820,6 +1890,7 @@
"storage_quota": "حصة الخزن", "storage_quota": "حصة الخزن",
"storage_usage": "{used} من {available} مُستخْدم", "storage_usage": "{used} من {available} مُستخْدم",
"submit": "إرسال", "submit": "إرسال",
"success": "تم بنجاح",
"suggestions": "اقتراحات", "suggestions": "اقتراحات",
"sunrise_on_the_beach": "شروق الشمس على الشاطئ", "sunrise_on_the_beach": "شروق الشمس على الشاطئ",
"support": "الدعم", "support": "الدعم",
@@ -1829,6 +1900,8 @@
"sync": "مزامنة", "sync": "مزامنة",
"sync_albums": "مزامنة الالبومات", "sync_albums": "مزامنة الالبومات",
"sync_albums_manual_subtitle": "مزامنة جميع الفديوهات والصور المرفوعة الى البومات الخزن الاحتياطي المختارة", "sync_albums_manual_subtitle": "مزامنة جميع الفديوهات والصور المرفوعة الى البومات الخزن الاحتياطي المختارة",
"sync_local": "مزامنة الملفات المحلية",
"sync_remote": "مزامنة الملفات البعيدة",
"sync_upload_album_setting_subtitle": "انشئ و ارفع صورك و فديوهاتك الالبومات المختارة في Immich", "sync_upload_album_setting_subtitle": "انشئ و ارفع صورك و فديوهاتك الالبومات المختارة في Immich",
"tag": "العلامة", "tag": "العلامة",
"tag_assets": "أصول العلامة", "tag_assets": "أصول العلامة",
@@ -1839,6 +1912,7 @@
"tag_updated": "تم تحديث العلامة: {tag}", "tag_updated": "تم تحديث العلامة: {tag}",
"tagged_assets": "تم وضع علامة {count, plural, one {# asset} other {# assets}}", "tagged_assets": "تم وضع علامة {count, plural, one {# asset} other {# assets}}",
"tags": "العلامات", "tags": "العلامات",
"tap_to_run_job": "انقر لتشغيل المهمة",
"template": "النموذج", "template": "النموذج",
"theme": "مظهر", "theme": "مظهر",
"theme_selection": "اختيار السمة", "theme_selection": "اختيار السمة",
@@ -1911,15 +1985,20 @@
"unselect_all_duplicates": "إلغاء تحديد كافة النسخ المكررة", "unselect_all_duplicates": "إلغاء تحديد كافة النسخ المكررة",
"unselect_all_in": "إلغاء تحديد الكل في {group}", "unselect_all_in": "إلغاء تحديد الكل في {group}",
"unstack": "فك الكومه", "unstack": "فك الكومه",
"unstack_action_prompt": "تم ازالة تكديس {count}",
"unstacked_assets_count": "تم إخراج {count, plural, one {# الأصل} other {# الأصول}} من التكديس", "unstacked_assets_count": "تم إخراج {count, plural, one {# الأصل} other {# الأصول}} من التكديس",
"untagged": "غير مُعَلَّم",
"up_next": "التالي", "up_next": "التالي",
"updated_at": "تم التحديث", "updated_at": "تم التحديث",
"updated_password": "تم تحديث كلمة المرور", "updated_password": "تم تحديث كلمة المرور",
"upload": "رفع", "upload": "رفع",
"upload_action_prompt": "{count} ملف في قائمة الانتظار للرفع",
"upload_concurrency": "الرفع المتزامن", "upload_concurrency": "الرفع المتزامن",
"upload_details": "تفاصيل الرفع",
"upload_dialog_info": "هل تريد النسخ الاحتياطي للأصول (الأصول) المحددة إلى الخادم؟", "upload_dialog_info": "هل تريد النسخ الاحتياطي للأصول (الأصول) المحددة إلى الخادم؟",
"upload_dialog_title": "تحميل الأصول", "upload_dialog_title": "تحميل الأصول",
"upload_errors": "إكتمل الرفع مع {count, plural, one {# خطأ} other {# أخطاء}}, قم بتحديث الصفحة لرؤية المحتويات الجديدة التي تم رفعها.", "upload_errors": "إكتمل الرفع مع {count, plural, one {# خطأ} other {# أخطاء}}, قم بتحديث الصفحة لرؤية المحتويات الجديدة التي تم رفعها.",
"upload_finished": "تم الانتهاء من الرفع",
"upload_progress": "متبقية {remaining, number} - معالجة {processed, number}/{total, number}", "upload_progress": "متبقية {remaining, number} - معالجة {processed, number}/{total, number}",
"upload_skipped_duplicates": "تم تخطي {count, plural, one {# محتوى مكرر} other {# محتويات مكررة }}", "upload_skipped_duplicates": "تم تخطي {count, plural, one {# محتوى مكرر} other {# محتويات مكررة }}",
"upload_status_duplicates": "التكرارات", "upload_status_duplicates": "التكرارات",
@@ -1928,6 +2007,7 @@
"upload_success": "تم الرفع بنجاح، قم بتحديث الصفحة لرؤية المحتويات المرفوعة الجديدة.", "upload_success": "تم الرفع بنجاح، قم بتحديث الصفحة لرؤية المحتويات المرفوعة الجديدة.",
"upload_to_immich": "الرفع الىImmich ({count})", "upload_to_immich": "الرفع الىImmich ({count})",
"uploading": "جاري الرفع", "uploading": "جاري الرفع",
"uploading_media": "رفع الوسائط",
"url": "عنوان URL", "url": "عنوان URL",
"usage": "الاستخدام", "usage": "الاستخدام",
"use_biometric": "استخدم البايومتري", "use_biometric": "استخدم البايومتري",
@@ -1948,6 +2028,7 @@
"user_usage_stats_description": "عرض إحصائيات استخدام الحساب", "user_usage_stats_description": "عرض إحصائيات استخدام الحساب",
"username": "اسم المستخدم", "username": "اسم المستخدم",
"users": "المستخدمين", "users": "المستخدمين",
"users_added_to_album_count": "تم اضافة{count, plural, one {# مستخدم} other {# مستخدمين}} الى الالبوم",
"utilities": "أدوات", "utilities": "أدوات",
"validate": "تحقْق", "validate": "تحقْق",
"validate_endpoint_error": "الرجاء ادخال عنوان URL صالح", "validate_endpoint_error": "الرجاء ادخال عنوان URL صالح",
@@ -1966,6 +2047,7 @@
"view_album": "عرض الألبوم", "view_album": "عرض الألبوم",
"view_all": "عرض الكل", "view_all": "عرض الكل",
"view_all_users": "عرض كافة المستخدمين", "view_all_users": "عرض كافة المستخدمين",
"view_details": "رؤية التفاصيل",
"view_in_timeline": "عرض في الجدول الزمني", "view_in_timeline": "عرض في الجدول الزمني",
"view_link": "عرض الرابط", "view_link": "عرض الرابط",
"view_links": "عرض الروابط", "view_links": "عرض الروابط",

View File

@@ -1,37 +1,53 @@
{ {
"about": "Haqqinda", "about": "Haqqında",
"account": "Hesab", "account": "Hesab",
"account_settings": "Hesab parametrləri", "account_settings": "Hesab parametrləri",
"acknowledge": "Təsdiq et", "acknowledge": "Təsdiq et",
"action": "Əməliyyat", "action": "Əməliyyat",
"action_common_update": "Yenilə",
"actions": "Əməliyyatlar", "actions": "Əməliyyatlar",
"active": "Aktiv", "active": "Aktiv",
"activity": "Fəaliyyət", "activity": "Fəaliyyət",
"activity_changed": "Fəaliyyət {enabled, select, true {aktivdir} other {aktiv deyil}}",
"add": "Əlavə et", "add": "Əlavə et",
"add_a_description": "Təsviri əlavə et", "add_a_description": "Təsviri əlavə et",
"add_a_location": "Məkan əlavə et", "add_a_location": "Məkan əlavə et",
"add_a_name": "Ad əlavə et", "add_a_name": "Ad əlavə et",
"add_a_title": "Başlıq ə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_exclusion_pattern": "İstisna nümunəsi əlavə et",
"add_import_path": "Import yolunu ə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_more_users": "Daha çox istifadəçi əlavə et",
"add_partner": "Partnyor əlavə et", "add_partner": "Partnyor əlavə et",
"add_path": "Yol əlavə et", "add_path": "Yol əlavə et",
"add_photos": "Şəkilləri əlavə et", "add_photos": "Şəkillər əlavə et",
"add_to": "... əlavə et", "add_tag": "Etiket əlavə et",
"add_to": "Bura əlavə et…",
"add_to_album": "Albom ə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_to_shared_album": "Paylaşılan alboma əlavə et",
"add_url": "URL əlavə et",
"added_to_archive": "Arxivə əlavə edildi", "added_to_archive": "Arxivə əlavə edildi",
"added_to_favorites": "Sevimlilələrə əlavə edildi", "added_to_favorites": "Sevimlilələrə əlavə edildi",
"added_to_favorites_count": "{count, number} şəkil sevimlilələrə əlavə edildi", "added_to_favorites_count": "{count, number} şəkil sevimlilələrə əlavə edildi",
"admin": { "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": "Səlahiyyətləndirmə parametrləri",
"authentication_settings_description": "Şifrə, OAuth və digər 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_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.", "authentication_settings_reenable": "Yenidən aktiv etmək üçün <link> Server Əmri</link> -ni istifadə edin.",
"background_task_job": "Arxa plan tapşırıqları", "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": "Ehtiyat Nüsxə Parametrləri",
"backup_settings_description": "Verilənlər bazasının ehtiyat nüsxə parametrlərini idarə et", "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", "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": "Üz Tanıma",
"machine_learning_facial_recognition_description": "Şəkillərdəki üzləri aşkarla, tanı və qruplaşdır", "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" "machine_learning_facial_recognition_model": "Üz tanıma modeli"
} },
"timeline": "Zaman şkalası"
} }

View File

@@ -14,6 +14,7 @@
"add_a_location": "Дадаць месца", "add_a_location": "Дадаць месца",
"add_a_name": "Дадаць імя", "add_a_name": "Дадаць імя",
"add_a_title": "Дадаць загаловак", "add_a_title": "Дадаць загаловак",
"add_birthday": "Дадаць дзень нараджэння",
"add_endpoint": "Дадаць кропку доступу", "add_endpoint": "Дадаць кропку доступу",
"add_exclusion_pattern": "Дадаць шаблон выключэння", "add_exclusion_pattern": "Дадаць шаблон выключэння",
"add_import_path": "Дадаць шлях імпарту", "add_import_path": "Дадаць шлях імпарту",
@@ -44,6 +45,10 @@
"backup_database": "Стварыць рэзервовую копію базы даных", "backup_database": "Стварыць рэзервовую копію базы даных",
"backup_database_enable_description": "Уключыць рэзерваванне базы даных", "backup_database_enable_description": "Уключыць рэзерваванне базы даных",
"backup_keep_last_amount": "Колькасць папярэдніх рэзервовых копій для захавання", "backup_keep_last_amount": "Колькасць папярэдніх рэзервовых копій для захавання",
"backup_onboarding_1_description": "зняшняя копія ў воблаку або ў іншым фізічным месцы.",
"backup_onboarding_2_description": "лакальныя копіі на іншых прыладах. Гэта ўключае ў сябе асноўныя файлы і лакальную рэзервовую копію гэтых файлаў.",
"backup_onboarding_parts_title": "Рэзервовая копія «3-2-1» уключае ў сябе:",
"backup_onboarding_title": "Рэзервовыя копіі",
"backup_settings": "Налады рэзервовага капіявання", "backup_settings": "Налады рэзервовага капіявання",
"backup_settings_description": "Кіраванне наладамі рэзервавання базы даных.", "backup_settings_description": "Кіраванне наладамі рэзервавання базы даных.",
"cleared_jobs": "Ачышчаны заданні для: {job}", "cleared_jobs": "Ачышчаны заданні для: {job}",
@@ -56,14 +61,14 @@
"confirm_user_pin_code_reset": "Вы ўпэўнены ў тым, што жадаеце скінуць PIN-код {user}?", "confirm_user_pin_code_reset": "Вы ўпэўнены ў тым, што жадаеце скінуць PIN-код {user}?",
"create_job": "Стварыць заданне", "create_job": "Стварыць заданне",
"cron_expression": "Выраз Cron", "cron_expression": "Выраз Cron",
"cron_expression_description": "Усталюйце інтэрвал сканавання, выкарыстоўваючы фармат cron. Для атрымання дадатковай інфармацыі, калі ласка, звярніцеся, напрыклад, да <link>Crontab Guru</link>", "cron_expression_description": "Задайце інтэрвал сканавання, выкарыстоўваючы фармат cron. Для атрымання дадатковай інфармацыі, звярніцеся, напрыклад, да <link>Crontab Guru</link>",
"cron_expression_presets": "Прадустаноўкі выразаў Cron", "cron_expression_presets": "Прадустаноўкі выразаў Cron",
"disable_login": "Адключыць уваход", "disable_login": "Адключыць уваход",
"duplicate_detection_job_description": "Запусціць машыннае навучанне на актывах для выяўлення падобных выяў. Залежыць ад Smart Search", "duplicate_detection_job_description": "Запусціць машыннае навучанне на актывах для выяўлення падобных выяў. Залежыць ад Smart Search",
"exclusion_pattern_description": "Шаблоны выключэння дазваляюць ігнараваць файлы і папкі пры сканаванні вашай бібліятэкі. Гэта карысна, калі ў вас ёсць папкі, якія змяшчаюць файлы, якія вы не хочаце імпартаваць, напрыклад, файлы RAW.", "exclusion_pattern_description": "Шаблоны выключэння дазваляюць ігнараваць файлы і папкі пры сканаванні вашай бібліятэкі. Гэта карысна, калі ў вас ёсць папкі, якія змяшчаюць файлы, якія вы не хочаце імпартаваць, напрыклад, файлы RAW.",
"external_library_management": "Кіраванне знешняй бібліятэкай", "external_library_management": "Кіраванне знешняй бібліятэкай",
"face_detection": "Выяўленне твараў", "face_detection": "Выяўленне твараў",
"face_detection_description": "Выяўляць твары на фотаздымках і відэа з дапамогай машыннага навучання. Для відэа ўлічваецца толькі мініяцюра. \"Абнавіць\" (пера)апрацоўвае ўсе медыя. \"Скінуць\" дадаткова ачышчае ўсе бягучыя дадзеныя пра твары. \"Адсутнічае\" ставіць у чаргу медыя, якія яшчэ не былі апрацаваныя. Выяўленыя твары будуць пастаўлены ў чаргу для распазнавання асоб пасля завяршэння выяўлення твараў, з групаваннем іх па існуючых або новых людзях.", "face_detection_description": "Выяўляць твары на фотаздымках і відэа з дапамогай машыннага навучання. Для відэа ўлічваецца толькі мініяцюра. \"Абнавіць\" (пера)апрацоўвае ўсе медыя. \"Скінуць\" дадаткова ачышчае ўсе бягучыя даныя пра твары. \"Адсутнічае\" ставіць у чаргу медыя, якія яшчэ не былі апрацаваныя. Выяўленыя твары будуць пастаўлены ў чаргу для распазнавання асоб пасля завяршэння выяўлення твараў, з групаваннем іх па існуючых або новых людзях.",
"facial_recognition_job_description": "Групаваць выяўленыя твары па асобах. Гэты этап выконваецца пасля завяршэння выяўлення твараў. \"Скінуць\" (паўторна) перагрупоўвае ўсе твары. \"Адсутнічае\" ставіць у чаргу твары, якія яшчэ не прыпісаныя да якой-небудзь асобы.", "facial_recognition_job_description": "Групаваць выяўленыя твары па асобах. Гэты этап выконваецца пасля завяршэння выяўлення твараў. \"Скінуць\" (паўторна) перагрупоўвае ўсе твары. \"Адсутнічае\" ставіць у чаргу твары, якія яшчэ не прыпісаныя да якой-небудзь асобы.",
"failed_job_command": "Каманда {command} не выканалася для задання: {job}", "failed_job_command": "Каманда {command} не выканалася для задання: {job}",
"force_delete_user_warning": "ПАПЯРЭДЖАННЕ: Гэта дзеянне неадкладна выдаліць карыстальніка і ўсе аб'екты. Гэта дзеянне не можа быць адроблена і файлы немагчыма будзе аднавіць.", "force_delete_user_warning": "ПАПЯРЭДЖАННЕ: Гэта дзеянне неадкладна выдаліць карыстальніка і ўсе аб'екты. Гэта дзеянне не можа быць адроблена і файлы немагчыма будзе аднавіць.",
@@ -75,17 +80,39 @@
"image_fullsize_quality_description": "Якасць выявы ў поўным памеры ад 1 да 100. Больш высокае значэнне лепшае, але прыводзіць да павелічэння памеру файла.", "image_fullsize_quality_description": "Якасць выявы ў поўным памеры ад 1 да 100. Больш высокае значэнне лепшае, але прыводзіць да павелічэння памеру файла.",
"image_fullsize_title": "Налады выявы ў поўным памеры", "image_fullsize_title": "Налады выявы ў поўным памеры",
"image_prefer_embedded_preview": "Аддаваць перавагу ўбудаванай праяве", "image_prefer_embedded_preview": "Аддаваць перавагу ўбудаванай праяве",
"image_prefer_embedded_preview_setting_description": "Выкарыстоўваць убудаваныя праявы ў RAW-фотаздымках ў якасці ўваходных дадзеных для апрацоўкі малюнкаў, калі магчыма. Гэта дазваляе атрымаць больш дакладныя колеры для некаторых відарысаў, але ж якасць праяў залежыць ад камеры, і на відарысе можа быць больш артэфактаў сціску.", "image_prefer_embedded_preview_setting_description": "Выкарыстоўваць убудаваныя праявы ў RAW-фотаздымках ў якасці ўваходных даных для апрацоўкі малюнкаў, калі магчыма. Гэта дазваляе атрымаць больш дакладныя колеры для некаторых відарысаў, але ж якасць праяў залежыць ад камеры, і на відарысе можа быць больш артэфактаў сціску.",
"image_prefer_wide_gamut": "Аддаць перавагу шырокай гаме", "image_prefer_wide_gamut": "Аддаць перавагу шырокай гаме",
"image_preview_description": "Відарыс сярэдняга памеру з выдаленымі метададзенымі, выкарыстоўваецца пры праглядзе асобнага рэсурсу і для машыннага навучання", "image_preview_description": "Відарыс сярэдняга памеру з выдаленымі метаданымі, выкарыстоўваецца пры праглядзе асобнага рэсурсу і для машыннага навучання",
"image_preview_quality_description": "Якасць праявы ад 1 да 100. Чым вышэй, тым лепш, але пры гэтым ствараюцца файлы большага памеру і можа знізіцца хуткасць водгуку прыкладання. Ўстаноўка нізкага значэння можа паўплываць на якасць машыннага навучання.", "image_preview_quality_description": "Якасць праявы ад 1 да 100. Чым вышэй, тым лепш, але пры гэтым ствараюцца файлы большага памеру і можа знізіцца хуткасць водгуку прыкладання. Ўстаноўка нізкага значэння можа паўплываць на якасць машыннага навучання.",
"image_preview_title": "Налады папярэдняга прагляду", "image_preview_title": "Налады папярэдняга прагляду",
"image_quality": "Якасць", "image_quality": "Якасць",
"image_resolution": "Раздзяляльнасць", "image_resolution": "Раздзяляльнасць",
"image_settings": "Налады відарыса", "image_settings": "Налады відарыса",
"image_settings_description": "Кіруйце якасцю і раздзяляльнасцю сгенерыраваных відарысаў", "image_settings_description": "Кіруйце якасцю і раздзяляльнасцю сгенерыраваных відарысаў",
"image_thumbnail_title": "Налады мініяцюр",
"job_concurrency": "{job} канкурэнтнасць",
"job_created": "Заданне створана",
"job_not_concurrency_safe": "Гэта заданне небяспечнае для канкурэнтнага(адначасовага, паралельнага) выканання.",
"job_settings": "Налады заданняў",
"job_settings_description": "Кіраваць наладамі адначасовага (паралельнага) выканання задання",
"job_status": "Становішча задання",
"library_created": "Створана бібліятэка: {library}", "library_created": "Створана бібліятэка: {library}",
"library_deleted": "Бібліятэка выдалена", "library_deleted": "Бібліятэка выдалена",
"library_scanning": "Сканаванне па раскладзе",
"library_scanning_description": "Наладзьце параметры сканавання вашай бібліятэкі",
"library_scanning_enable_description": "Уключыць сканаванне бібліятэкі па раскладзе",
"library_settings": "Знешняя бібліятэка",
"library_settings_description": "Наладзьце параметры знешняй бібліятэкі",
"library_tasks_description": "Сканаваць знешнія бібліятэкі на наяўнасць новых і/або змененых рэсурсаў",
"library_watching_enable_description": "Назіраць за зменамі файлаў у знешніх бібліятэках",
"library_watching_settings": "Сачыць за бібліятэкай (эксперыментальны)",
"library_watching_settings_description": "Аўтаматычна сачыць за зменамі ў файлах",
"logging_enable_description": "Уключыць вядзенне журнала",
"logging_level_description": "Калі уключана, які ўзровень журналявання выкарыстоўваць.",
"logging_settings": "Вядзенне журнала",
"machine_learning_clip_model": "CLIP мадэль",
"machine_learning_clip_model_description": "Назва CLIP мадэлі паказана <link>тут</link>. Звярніце ўвагу, што пры змене мадэлі неабходна паўторна запусціць заданне \"Smart Search\" для ўсіх відарысаў.",
"machine_learning_duplicate_detection": "Выяўленне падобных",
"map_dark_style": "Цёмны стыль", "map_dark_style": "Цёмны стыль",
"map_enable_description": "Уключыць функцыі карты", "map_enable_description": "Уключыць функцыі карты",
"map_gps_settings": "Налады карты і GPS", "map_gps_settings": "Налады карты і GPS",
@@ -133,7 +160,7 @@
"user_settings_description": "Кіраванне наладамі карыстальніка", "user_settings_description": "Кіраванне наладамі карыстальніка",
"user_successfully_removed": "Карыстальнік {email} быў паспяхова выдалены.", "user_successfully_removed": "Карыстальнік {email} быў паспяхова выдалены.",
"version_check_enabled_description": "Уключыць праверку версіі", "version_check_enabled_description": "Уключыць праверку версіі",
"version_check_implications": "Функцыі праверкі версіі перыядычна звяртаецца да github.com", "version_check_implications": "Функцыя праверкі версіі перыядычна звяртаецца да github.com",
"version_check_settings": "Праверка версіі", "version_check_settings": "Праверка версіі",
"version_check_settings_description": "Уключыць/адключыць апавяшчэнні аб новай версіі" "version_check_settings_description": "Уключыць/адключыць апавяшчэнні аб новай версіі"
}, },
@@ -206,7 +233,10 @@
"asset_skipped_in_trash": "У сметніцы", "asset_skipped_in_trash": "У сметніцы",
"asset_uploaded": "Запампавана", "asset_uploaded": "Запампавана",
"asset_uploading": "Запампоўванне…", "asset_uploading": "Запампоўванне…",
"assets_were_part_of_albums_count": "{count, plural, one {Актыў ужо быў} other {Актывы ужо былі}} часткай альбому",
"authorized_devices": "Аўтарызаваныя прылады", "authorized_devices": "Аўтарызаваныя прылады",
"automatic_endpoint_switching_subtitle": "Падключацца лакальна па вылучаным Wi-Fi, калі гэта магчыма, і выкарыстоўваць альтэрнатыўныя падключэння ў іншых месцах",
"automatic_endpoint_switching_title": "Аўтаматычнае пераключэнне URL",
"back": "Назад", "back": "Назад",
"backup_album_selection_page_albums_device": "Альбомы на прыладзе ({count})", "backup_album_selection_page_albums_device": "Альбомы на прыладзе ({count})",
"backup_all": "Усе", "backup_all": "Усе",
@@ -369,6 +399,8 @@
"purchase_button_buy": "Купіць", "purchase_button_buy": "Купіць",
"purchase_button_buy_immich": "Купіць Immich", "purchase_button_buy_immich": "Купіць Immich",
"purchase_button_select": "Выбраць", "purchase_button_select": "Выбраць",
"readonly_mode_enabled": "Уключаны рэжым толькі для чытання",
"reassign": "Перапрызначыць",
"remove": "Выдаліць", "remove": "Выдаліць",
"remove_from_album": "Выдаліць з альбома", "remove_from_album": "Выдаліць з альбома",
"remove_from_favorites": "Выдаліць з абраных", "remove_from_favorites": "Выдаліць з абраных",
@@ -457,7 +489,7 @@
"view_all_users": "Праглядзець усех карыстальнікаў", "view_all_users": "Праглядзець усех карыстальнікаў",
"view_in_timeline": "Паглядзець хроніку", "view_in_timeline": "Паглядзець хроніку",
"view_links": "Праглядзець спасылкі", "view_links": "Праглядзець спасылкі",
"view_name": "Прагледзець", "view_name": "Прагляд",
"view_next_asset": "Паказаць наступны аб'ект", "view_next_asset": "Паказаць наступны аб'ект",
"view_previous_asset": "Праглядзець папярэдні аб'ект", "view_previous_asset": "Праглядзець папярэдні аб'ект",
"view_stack": "Прагляд стэка", "view_stack": "Прагляд стэка",

View File

@@ -13,20 +13,24 @@
"add_a_description": "Добави описание", "add_a_description": "Добави описание",
"add_a_location": "Добави местоположение", "add_a_location": "Добави местоположение",
"add_a_name": "Добави име", "add_a_name": "Добави име",
"add_a_title": "Добавете заглавие", "add_a_title": "Добaви заглавие",
"add_birthday": "Добави дата на раждане",
"add_endpoint": "Добави крайна точка", "add_endpoint": "Добави крайна точка",
"add_exclusion_pattern": "Добави модел за изключване", "add_exclusion_pattern": "Добави модел за изключване",
"add_import_path": "Добави път за импортиране", "add_import_path": "Добави път за импортиране",
"add_location": обавете местоположение", "add_location": oбави местоположение",
"add_more_users": "Добавете още потребители", "add_more_users": "Добави още потребители",
"add_partner": "Добавете партньор", "add_partner": "Добави партньор",
"add_path": "Добави път", "add_path": "Добави път",
"add_photos": "Добавете снимки", "add_photos": "Добави снимки",
"add_tag": "Добави маркер", "add_tag": "Добави маркер",
"add_to": "Добави към…", "add_to": "Добави към…",
"add_to_album": "Добави към албум", "add_to_album": "Добави към албум",
"add_to_album_bottom_sheet_added": "Добавено в {album}", "add_to_album_bottom_sheet_added": "Добавено в {album}",
"add_to_album_bottom_sheet_already_exists": "Вече е в {album}", "add_to_album_bottom_sheet_already_exists": "Вече е в {album}",
"add_to_album_toggle": "Сменете избора за {album}",
"add_to_albums": "Добавяне в албуми",
"add_to_albums_count": "Добавяне в албуми ({count})",
"add_to_shared_album": "Добави към споделен албум", "add_to_shared_album": "Добави към споделен албум",
"add_url": "Добави URL", "add_url": "Добави URL",
"added_to_archive": "Добавено към архива", "added_to_archive": "Добавено към архива",
@@ -44,6 +48,13 @@
"backup_database": "Създай резервна база данни", "backup_database": "Създай резервна база данни",
"backup_database_enable_description": "Разреши резервни копия на базата данни", "backup_database_enable_description": "Разреши резервни копия на базата данни",
"backup_keep_last_amount": "Брой запазени резервни копия", "backup_keep_last_amount": "Брой запазени резервни копия",
"backup_onboarding_1_description": "копие на облака или друго физическо място.",
"backup_onboarding_2_description": "локални копия на различни устройства. Това включва основните файлове и локални архиви на тези файлове.",
"backup_onboarding_3_description": "общо копия на вашите данни, включитено оригиналните файлове. Това включва 1 копие извън системата и 2 локални копия.",
"backup_onboarding_description": "За надеждна защита препоръчваме стратегията <backblaze-link>3-2-1</backblaze-link>. Правете архивни копия както на качените снимки/видеа, така и на базата данни на Immich.",
"backup_onboarding_footer": "За подробна информация относно архивирането в Immich, моля вижте в <link>документацията</link>.",
"backup_onboarding_parts_title": "Стратегията 3-2-1 включва:",
"backup_onboarding_title": "Резервни копия",
"backup_settings": "Настройка на резервни копия на базата данни", "backup_settings": "Настройка на резервни копия на базата данни",
"backup_settings_description": "Управление на настройките за резервно копие на базата данни.", "backup_settings_description": "Управление на настройките за резервно копие на базата данни.",
"cleared_jobs": "Изчистени задачи от тип: {job}", "cleared_jobs": "Изчистени задачи от тип: {job}",
@@ -347,6 +358,9 @@
"trash_number_of_days_description": "Брой дни, в които файловете да се съхраняват на боклука, преди да бъдат окончателно премахнати", "trash_number_of_days_description": "Брой дни, в които файловете да се съхраняват на боклука, преди да бъдат окончателно премахнати",
"trash_settings": "Настройки на кошчето", "trash_settings": "Настройки на кошчето",
"trash_settings_description": "Управление на настройките на кошчето", "trash_settings_description": "Управление на настройките на кошчето",
"unlink_all_oauth_accounts": "Прекрати вписването на всички OAuth профили",
"unlink_all_oauth_accounts_description": "Не забравяйте да прекратите вписването на всички OAuth профили преди да мигрирате към нов доставчик.",
"unlink_all_oauth_accounts_prompt": "Сигурни ли сте, че искате да отпишете всички OAuth профили? Това ще нулира OAuth ID за всеки потребител и не може да бъде отменено.",
"user_cleanup_job": "Почистване на потребители", "user_cleanup_job": "Почистване на потребители",
"user_delete_delay": "<b>{user}</b> aкаунтът и файловете на потребителя ще бъдат планирани за постоянно изтриване след {delay, plural, one {# ден} other {# дни}}.", "user_delete_delay": "<b>{user}</b> aкаунтът и файловете на потребителя ще бъдат планирани за постоянно изтриване след {delay, plural, one {# ден} other {# дни}}.",
"user_delete_delay_settings": "Забавяне на изтриване", "user_delete_delay_settings": "Забавяне на изтриване",
@@ -382,6 +396,8 @@
"advanced_settings_prefer_remote_title": "Предпочитай изображенията на сървъра", "advanced_settings_prefer_remote_title": "Предпочитай изображенията на сървъра",
"advanced_settings_proxy_headers_subtitle": "Дефиниране на прокси хедъри, които Immich трябва да изпраща с всяка мрежова заявка", "advanced_settings_proxy_headers_subtitle": "Дефиниране на прокси хедъри, които Immich трябва да изпраща с всяка мрежова заявка",
"advanced_settings_proxy_headers_title": "Прокси хедъри", "advanced_settings_proxy_headers_title": "Прокси хедъри",
"advanced_settings_readonly_mode_subtitle": "Активира режима \"само за четене\", при който снимките могат да бъдат разглеждани, но неща като избор на няколко изображения, споделяне, изтриване са забранени. Активиране/деактивиране на режима само за четене става от картинката-аватар на потребителя от основния екран",
"advanced_settings_readonly_mode_title": "Режим само за четене",
"advanced_settings_self_signed_ssl_subtitle": "Пропуска проверката на SSL-сертификата на сървъра. Изисква се при самоподписани сертификати.", "advanced_settings_self_signed_ssl_subtitle": "Пропуска проверката на SSL-сертификата на сървъра. Изисква се при самоподписани сертификати.",
"advanced_settings_self_signed_ssl_title": "Разреши самоподписани SSL сертификати", "advanced_settings_self_signed_ssl_title": "Разреши самоподписани SSL сертификати",
"advanced_settings_sync_remote_deletions_subtitle": "Автоматично изтрии или възстанови обект на това устройство, когато действието е извършено през уеб-интерфейса", "advanced_settings_sync_remote_deletions_subtitle": "Автоматично изтрии или възстанови обект на това устройство, когато действието е извършено през уеб-интерфейса",
@@ -397,6 +413,7 @@
"album_cover_updated": "Обложката на албума е актуализирана", "album_cover_updated": "Обложката на албума е актуализирана",
"album_delete_confirmation": "Сигурни ли сте, че искате да изтриете албума {album}?", "album_delete_confirmation": "Сигурни ли сте, че искате да изтриете албума {album}?",
"album_delete_confirmation_description": "Ако този албум е споделен, други потребители вече няма да имат достъп до него.", "album_delete_confirmation_description": "Ако този албум е споделен, други потребители вече няма да имат достъп до него.",
"album_deleted": "Албума е изтрит",
"album_info_card_backup_album_excluded": "ИЗКЛЮЧЕН", "album_info_card_backup_album_excluded": "ИЗКЛЮЧЕН",
"album_info_card_backup_album_included": "ВКЛЮЧЕН", "album_info_card_backup_album_included": "ВКЛЮЧЕН",
"album_info_updated": "Информацията за албума е актуализирана", "album_info_updated": "Информацията за албума е актуализирана",
@@ -406,6 +423,7 @@
"album_options": "Настройки на албума", "album_options": "Настройки на албума",
"album_remove_user": "Премахване на потребител?", "album_remove_user": "Премахване на потребител?",
"album_remove_user_confirmation": "Сигурни ли сте, че искате да премахнете {user}?", "album_remove_user_confirmation": "Сигурни ли сте, че искате да премахнете {user}?",
"album_search_not_found": "Няма намерени албуми, отговарящи на търсенето ви",
"album_share_no_users": "Изглежда, че сте споделили този албум с всички потребители или нямате друг потребител, с когото да го споделите.", "album_share_no_users": "Изглежда, че сте споделили този албум с всички потребители или нямате друг потребител, с когото да го споделите.",
"album_updated": "Албумът е актуализиран", "album_updated": "Албумът е актуализиран",
"album_updated_setting_description": "Получавайте известие по имейл, когато споделен албум има нови файлове", "album_updated_setting_description": "Получавайте известие по имейл, когато споделен албум има нови файлове",
@@ -425,6 +443,7 @@
"albums_default_sort_order": "Ред по подразбиране за сортиране на албуми", "albums_default_sort_order": "Ред по подразбиране за сортиране на албуми",
"albums_default_sort_order_description": "Първоначален ред на сортиране при създаване на нов албум.", "albums_default_sort_order_description": "Първоначален ред на сортиране при създаване на нов албум.",
"albums_feature_description": "Колекции от обекти, които могат да бъдат споделяни с други поребители.", "albums_feature_description": "Колекции от обекти, които могат да бъдат споделяни с други поребители.",
"albums_on_device_count": "Албуми на устройството ({count})",
"all": "Всички", "all": "Всички",
"all_albums": "Всички албуми", "all_albums": "Всички албуми",
"all_people": "Всички хора", "all_people": "Всички хора",
@@ -444,6 +463,7 @@
"app_bar_signout_dialog_title": "Излез от профила", "app_bar_signout_dialog_title": "Излез от профила",
"app_settings": "Настройки ма приложението", "app_settings": "Настройки ма приложението",
"appears_in": "Излиза в", "appears_in": "Излиза в",
"apply_count": "Приложи ({count, number})",
"archive": "Архив", "archive": "Архив",
"archive_action_prompt": "{count} са добавени в Архива", "archive_action_prompt": "{count} са добавени в Архива",
"archive_or_unarchive_photo": "Архивиране или деархивиране на снимка", "archive_or_unarchive_photo": "Архивиране или деархивиране на снимка",
@@ -483,7 +503,9 @@
"assets": "Елементи", "assets": "Елементи",
"assets_added_count": "Добавено {count, plural, one {# asset} other {# assets}}", "assets_added_count": "Добавено {count, plural, one {# asset} other {# assets}}",
"assets_added_to_album_count": "Добавен(и) са {count, plural, one {# актив} other {# актива}} в албума", "assets_added_to_album_count": "Добавен(и) са {count, 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_album_count": "{count, plural, one {Обекта не може да се добави} other {Обектите не може да се добавят}} в албума",
"assets_cannot_be_added_to_albums": "{count, plural, one {обект не може да бъде добавен} other {обекта не могат да бъдат добавени}} в никой от албумите",
"assets_count": "{count, plural, one {# актив} other {# актива}}", "assets_count": "{count, plural, one {# актив} other {# актива}}",
"assets_deleted_permanently": "{count} обекта са изтрити завинаги", "assets_deleted_permanently": "{count} обекта са изтрити завинаги",
"assets_deleted_permanently_from_server": "{count} обекта са изтити от Immich сървъра завинаги", "assets_deleted_permanently_from_server": "{count} обекта са изтити от Immich сървъра завинаги",
@@ -500,6 +522,7 @@
"assets_trashed_count": "Възстановен(и) са {count, plural, one {# файл} other {# файла}}", "assets_trashed_count": "Възстановен(и) са {count, plural, one {# файл} other {# файла}}",
"assets_trashed_from_server": "{count} обекта са преместени в коша на Immich сървъра", "assets_trashed_from_server": "{count} обекта са преместени в коша на Immich сървъра",
"assets_were_part_of_album_count": "{count, plural, one {Файлът е} other {Файловете са}} вече част от албума", "assets_were_part_of_album_count": "{count, plural, one {Файлът е} other {Файловете са}} вече част от албума",
"assets_were_part_of_albums_count": "{count, plural, one {обект вече е} other {обекта вече са}} част от албумите",
"authorized_devices": "Удостоверени устройства", "authorized_devices": "Удостоверени устройства",
"automatic_endpoint_switching_subtitle": "Когато е достъпна, използвай посочената Wi-Fi мрежа, иначе използвай алтернативни връзки", "automatic_endpoint_switching_subtitle": "Когато е достъпна, използвай посочената Wi-Fi мрежа, иначе използвай алтернативни връзки",
"automatic_endpoint_switching_title": "Автоматично превключване на URL", "automatic_endpoint_switching_title": "Автоматично превключване на URL",
@@ -569,9 +592,13 @@
"backup_manual_in_progress": "Върви архивиране. Опитай след малко", "backup_manual_in_progress": "Върви архивиране. Опитай след малко",
"backup_manual_success": "Успешно", "backup_manual_success": "Успешно",
"backup_manual_title": "Състояние на архивирането", "backup_manual_title": "Състояние на архивирането",
"backup_options": "Опции за архивиране",
"backup_options_page_title": "Настройки за архивиране", "backup_options_page_title": "Настройки за архивиране",
"backup_setting_subtitle": "Управлявай настройките за архивиране в активен и фонов режим", "backup_setting_subtitle": "Управлявай настройките за архивиране в активен и фонов режим",
"backup_settings_subtitle": "Управление на настройките за качване",
"backward": "Назад", "backward": "Назад",
"beta_sync": "Статус на бета синхронизацията",
"beta_sync_subtitle": "Управление на новата система за синхронизация",
"biometric_auth_enabled": "Включена биометрично удостоверяване", "biometric_auth_enabled": "Включена биометрично удостоверяване",
"biometric_locked_out": "Няма достъп до биометрично удостоверяване", "biometric_locked_out": "Няма достъп до биометрично удостоверяване",
"biometric_no_options": "Няма биометрична автентикация", "biometric_no_options": "Няма биометрична автентикация",
@@ -589,7 +616,7 @@
"cache_settings_clear_cache_button": "Изчисти кеша", "cache_settings_clear_cache_button": "Изчисти кеша",
"cache_settings_clear_cache_button_title": "Изчиства кеша на приложението. Това ще повлияе производителността на приложението докато кеша не бъде създаден отново.", "cache_settings_clear_cache_button_title": "Изчиства кеша на приложението. Това ще повлияе производителността на приложението докато кеша не бъде създаден отново.",
"cache_settings_duplicated_assets_clear_button": "ИЗЧИСТИ", "cache_settings_duplicated_assets_clear_button": "ИЗЧИСТИ",
"cache_settings_duplicated_assets_subtitle": "Снимки и видеа, които са в Черния списък на приложението", "cache_settings_duplicated_assets_subtitle": "Снимки и видеа, които са в Списъка за игнориране от приложението",
"cache_settings_duplicated_assets_title": "Дублирани обекти ({count})", "cache_settings_duplicated_assets_title": "Дублирани обекти ({count})",
"cache_settings_statistics_album": "Библиотека с миниатюри", "cache_settings_statistics_album": "Библиотека с миниатюри",
"cache_settings_statistics_full": "Пълни изображения", "cache_settings_statistics_full": "Пълни изображения",
@@ -606,6 +633,7 @@
"cancel": "Откажи", "cancel": "Откажи",
"cancel_search": "Отмени търсенето", "cancel_search": "Отмени търсенето",
"canceled": "Отменено", "canceled": "Отменено",
"canceling": "Анулиране",
"cannot_merge_people": "Не може да обединява хора", "cannot_merge_people": "Не може да обединява хора",
"cannot_undo_this_action": "Не можете да отмените това действие!", "cannot_undo_this_action": "Не можете да отмените това действие!",
"cannot_update_the_description": "Описанието не може да бъде актуализирано", "cannot_update_the_description": "Описанието не може да бъде актуализирано",
@@ -637,6 +665,7 @@
"clear": "Изчисти", "clear": "Изчисти",
"clear_all": "Изчисти всичко", "clear_all": "Изчисти всичко",
"clear_all_recent_searches": "Изчистете всички скорошни търсения", "clear_all_recent_searches": "Изчистете всички скорошни търсения",
"clear_file_cache": "Изчистване на кеша на файловете",
"clear_message": "Изчисти съобщението", "clear_message": "Изчисти съобщението",
"clear_value": "Изчисти стойността", "clear_value": "Изчисти стойността",
"client_cert_dialog_msg_confirm": "ОК", "client_cert_dialog_msg_confirm": "ОК",
@@ -707,6 +736,7 @@
"create_new_user": "Създаване на нов потребител", "create_new_user": "Създаване на нов потребител",
"create_shared_album_page_share_add_assets": "ДОБАВИ ОБЕКТИ", "create_shared_album_page_share_add_assets": "ДОБАВИ ОБЕКТИ",
"create_shared_album_page_share_select_photos": "Избери снимки", "create_shared_album_page_share_select_photos": "Избери снимки",
"create_shared_link": "Създай линк за споделяне",
"create_tag": "Създай таг", "create_tag": "Създай таг",
"create_tag_description": "Създайте нов таг. За вложени тагове, моля, въведете пълния път на тага, включително наклонените черти.", "create_tag_description": "Създайте нов таг. За вложени тагове, моля, въведете пълния път на тага, включително наклонените черти.",
"create_user": "Създай потребител", "create_user": "Създай потребител",
@@ -719,6 +749,7 @@
"current_server_address": "Настоящ адрес на сървъра", "current_server_address": "Настоящ адрес на сървъра",
"custom_locale": "Персонализиран локал", "custom_locale": "Персонализиран локал",
"custom_locale_description": "Форматиране на дати и числа в зависимост от езика и региона", "custom_locale_description": "Форматиране на дати и числа в зависимост от езика и региона",
"custom_url": "Персонализиран URL адрес",
"daily_title_text_date": "E, dd MMM", "daily_title_text_date": "E, dd MMM",
"daily_title_text_date_year": "E, dd MMM yyyy", "daily_title_text_date_year": "E, dd MMM yyyy",
"dark": "Тъмен", "dark": "Тъмен",
@@ -730,6 +761,7 @@
"date_of_birth_saved": "Дата на раждане е записана успешно", "date_of_birth_saved": "Дата на раждане е записана успешно",
"date_range": "Период от време", "date_range": "Период от време",
"day": "Ден", "day": "Ден",
"days": "Дни",
"deduplicate_all": "Дедупликиране на всички", "deduplicate_all": "Дедупликиране на всички",
"deduplication_criteria_1": "Размер на снимката в байтове", "deduplication_criteria_1": "Размер на снимката в байтове",
"deduplication_criteria_2": "Брой EXIF данни", "deduplication_criteria_2": "Брой EXIF данни",
@@ -738,7 +770,8 @@
"default_locale": "Локализация по подразбиране", "default_locale": "Локализация по подразбиране",
"default_locale_description": "Форматиране на дати и числа в зависимост от езиковата настройка на браузъра", "default_locale_description": "Форматиране на дати и числа в зависимост от езиковата настройка на браузъра",
"delete": "Изтрий", "delete": "Изтрий",
"delete_action_prompt": "{count} са изтрити завинаги", "delete_action_confirmation_message": "Сигурни ли сте, че искате да изтриете този обект? Следва преместване на обекта в коша за отпадъци на сървъра и ще получите предложение обекта да бъде изтрит локално",
"delete_action_prompt": "{count} са изтрити",
"delete_album": "Изтрий албум", "delete_album": "Изтрий албум",
"delete_api_key_prompt": "Сигурни ли сте, че искате да изтриете този API ключ?", "delete_api_key_prompt": "Сигурни ли сте, че искате да изтриете този API ключ?",
"delete_dialog_alert": "Тези обекти ще бъдат изтрити завинаги и от Immich сървъра и от устройството", "delete_dialog_alert": "Тези обекти ще бъдат изтрити завинаги и от Immich сървъра и от устройството",
@@ -756,6 +789,8 @@
"delete_local_dialog_ok_backed_up_only": "Изтрий локално само архивираните", "delete_local_dialog_ok_backed_up_only": "Изтрий локално само архивираните",
"delete_local_dialog_ok_force": "Въпреки това изтрий", "delete_local_dialog_ok_force": "Въпреки това изтрий",
"delete_others": "Изтрий останалите", "delete_others": "Изтрий останалите",
"delete_permanently": "Изтрий за постоянно",
"delete_permanently_action_prompt": "{count} изтрити за постоянно",
"delete_shared_link": "Изтриване на споделен линк", "delete_shared_link": "Изтриване на споделен линк",
"delete_shared_link_dialog_title": "Изтрий споделената връзка", "delete_shared_link_dialog_title": "Изтрий споделената връзка",
"delete_tag": "Изтрий таг", "delete_tag": "Изтрий таг",
@@ -766,6 +801,7 @@
"description": "Описание", "description": "Описание",
"description_input_hint_text": "Добави описание...", "description_input_hint_text": "Добави описание...",
"description_input_submit_error": "Неуспешно обновяване на описанието. За подробности вижте в дневника", "description_input_submit_error": "Неуспешно обновяване на описанието. За подробности вижте в дневника",
"deselect_all": "Премахни избора от всички",
"details": "Детайли", "details": "Детайли",
"direction": "Посока", "direction": "Посока",
"disabled": "Изключено", "disabled": "Изключено",
@@ -810,8 +846,12 @@
"edit": "Редактиране", "edit": "Редактиране",
"edit_album": "Редактиране на албум", "edit_album": "Редактиране на албум",
"edit_avatar": "Редактиране на аватар", "edit_avatar": "Редактиране на аватар",
"edit_birthday": "Редактиране на рожден ден",
"edit_date": "Редактиране на дата", "edit_date": "Редактиране на дата",
"edit_date_and_time": "Редактиране на дата и час", "edit_date_and_time": "Редактиране на дата и час",
"edit_date_and_time_action_prompt": "{count} дата и време са редактирани",
"edit_date_and_time_by_offset": "Промяна на датата чрез отместване",
"edit_date_and_time_by_offset_interval": "Нов период от време: {from} - {to}",
"edit_description": "Редактирай описание", "edit_description": "Редактирай описание",
"edit_description_prompt": "Моля, избери ново описание:", "edit_description_prompt": "Моля, избери ново описание:",
"edit_exclusion_pattern": "Редактиране на шаблон за изключване", "edit_exclusion_pattern": "Редактиране на шаблон за изключване",
@@ -840,6 +880,7 @@
"empty_trash": "Изпразване на кош", "empty_trash": "Изпразване на кош",
"empty_trash_confirmation": "Сигурни ли сте, че искате да изпразните кошчето? Това ще премахне всичко в кошчето за постоянно от Immich.\nНе можете да отмените това действие!", "empty_trash_confirmation": "Сигурни ли сте, че искате да изпразните кошчето? Това ще премахне всичко в кошчето за постоянно от Immich.\nНе можете да отмените това действие!",
"enable": "Включване", "enable": "Включване",
"enable_backup": "Включи резервното копиране",
"enable_biometric_auth_description": "Въведете вашия PIN код, за да разрешите биометрично удостоверяване", "enable_biometric_auth_description": "Въведете вашия PIN код, за да разрешите биометрично удостоверяване",
"enabled": "Включено", "enabled": "Включено",
"end_date": "Крайна дата", "end_date": "Крайна дата",
@@ -874,7 +915,7 @@
"error_selecting_all_assets": "Грешка при избора на всички файлове", "error_selecting_all_assets": "Грешка при избора на всички файлове",
"exclusion_pattern_already_exists": "Този модел за изключване вече съществува.", "exclusion_pattern_already_exists": "Този модел за изключване вече съществува.",
"failed_to_create_album": "Неуспешно създаване на албум", "failed_to_create_album": "Неуспешно създаване на албум",
"failed_to_create_shared_link": "Неуспешно създаване на споделена връзка", "failed_to_create_shared_link": "Неуспешно създаване на спoделена връзка",
"failed_to_edit_shared_link": "Неуспешно редактиране на споделена връзка", "failed_to_edit_shared_link": "Неуспешно редактиране на споделена връзка",
"failed_to_get_people": "Неуспешно зареждане на хора", "failed_to_get_people": "Неуспешно зареждане на хора",
"failed_to_keep_this_delete_others": "Неуспешно запазване на този обект и изтриване на останалите обекти", "failed_to_keep_this_delete_others": "Неуспешно запазване на този обект и изтриване на останалите обекти",
@@ -883,6 +924,7 @@
"failed_to_load_notifications": "Неуспешно зареждане на известия", "failed_to_load_notifications": "Неуспешно зареждане на известия",
"failed_to_load_people": "Неуспешно зареждане на хора", "failed_to_load_people": "Неуспешно зареждане на хора",
"failed_to_remove_product_key": "Неуспешно премахване на продуктовия ключ", "failed_to_remove_product_key": "Неуспешно премахване на продуктовия ключ",
"failed_to_reset_pin_code": "Неуспешно нулиране на ПИН кода",
"failed_to_stack_assets": "Неуспешно подреждане на обекти", "failed_to_stack_assets": "Неуспешно подреждане на обекти",
"failed_to_unstack_assets": "Неуспешно премахване на подредбата на обекти", "failed_to_unstack_assets": "Неуспешно премахване на подредбата на обекти",
"failed_to_update_notification_status": "Неуспешно обновяване на състоянието на известията", "failed_to_update_notification_status": "Неуспешно обновяване на състоянието на известията",
@@ -891,6 +933,7 @@
"paths_validation_failed": "{paths, plural, one {# път} other {# пътища}} не преминаха валидация", "paths_validation_failed": "{paths, plural, one {# път} other {# пътища}} не преминаха валидация",
"profile_picture_transparent_pixels": "Профилните снимки не могат да имат прозрачни пиксели. Моля, увеличете и/или преместете изображението.", "profile_picture_transparent_pixels": "Профилните снимки не могат да имат прозрачни пиксели. Моля, увеличете и/или преместете изображението.",
"quota_higher_than_disk_size": "Зададена е квота, по-голяма от размера на диска", "quota_higher_than_disk_size": "Зададена е квота, по-голяма от размера на диска",
"something_went_wrong": "Нещо се обърка",
"unable_to_add_album_users": "Неуспешно добавяне на потребители в албум", "unable_to_add_album_users": "Неуспешно добавяне на потребители в албум",
"unable_to_add_assets_to_shared_link": "Неуспешно добавяне на обекти в споделен линк", "unable_to_add_assets_to_shared_link": "Неуспешно добавяне на обекти в споделен линк",
"unable_to_add_comment": "Неуспешно добавяне на коментар", "unable_to_add_comment": "Неуспешно добавяне на коментар",
@@ -976,13 +1019,11 @@
}, },
"exif": "Exif", "exif": "Exif",
"exif_bottom_sheet_description": "Добави Описание...", "exif_bottom_sheet_description": "Добави Описание...",
"exif_bottom_sheet_description_error": "Неуспешно обновяване на описание",
"exif_bottom_sheet_details": "ПОДРОБНОСТИ", "exif_bottom_sheet_details": "ПОДРОБНОСТИ",
"exif_bottom_sheet_location": "МЯСТО", "exif_bottom_sheet_location": "МЯСТО",
"exif_bottom_sheet_people": "ХОРА", "exif_bottom_sheet_people": "ХОРА",
"exif_bottom_sheet_person_add_person": "Добави име", "exif_bottom_sheet_person_add_person": "Добави име",
"exif_bottom_sheet_person_age_months": "Възраст {months} месеца",
"exif_bottom_sheet_person_age_year_months": "Възраст 1 година и {months} месеца",
"exif_bottom_sheet_person_age_years": "Възраст {years}",
"exit_slideshow": "Изход от слайдшоуто", "exit_slideshow": "Изход от слайдшоуто",
"expand_all": "Разшири всички", "expand_all": "Разшири всички",
"experimental_settings_new_asset_list_subtitle": "В развитие", "experimental_settings_new_asset_list_subtitle": "В развитие",
@@ -996,6 +1037,8 @@
"explorer": "Преглед", "explorer": "Преглед",
"export": "Експорт", "export": "Експорт",
"export_as_json": "Експортиране като JSON", "export_as_json": "Експортиране като JSON",
"export_database": "Експорт на базата данни",
"export_database_description": "Експорт на базата данни SQLite",
"extension": "Разширение", "extension": "Разширение",
"external": "Външно", "external": "Външно",
"external_libraries": "Външни библиотеки", "external_libraries": "Външни библиотеки",
@@ -1022,21 +1065,29 @@
"filter_people": "Филтриране на хора", "filter_people": "Филтриране на хора",
"filter_places": "Филтър по място", "filter_places": "Филтър по място",
"find_them_fast": "Намерете ги бързо по име с търсене", "find_them_fast": "Намерете ги бързо по име с търсене",
"first": "Първи",
"fix_incorrect_match": "Поправяне на неправилно съвпадение", "fix_incorrect_match": "Поправяне на неправилно съвпадение",
"folder": "Папка", "folder": "Папка",
"folder_not_found": "Папката не е намерена", "folder_not_found": "Папката не е намерена",
"folders": "Папки", "folders": "Папки",
"folders_feature_description": "Преглеждане на папката за снимките и видеоклиповете в файловата система", "folders_feature_description": "Преглеждане на папката за снимките и видеоклиповете в файловата система",
"forgot_pin_code_question": "Забравили сте своя ПИН код?",
"forward": "Напред", "forward": "Напред",
"gcast_enabled": "Google Cast", "gcast_enabled": "Google Cast",
"gcast_enabled_description": "За да работи тази функция зарежда външни ресурси от Google.", "gcast_enabled_description": "За да работи тази функция зарежда външни ресурси от Google.",
"general": "Общи", "general": "Общи",
"geolocation_instruction_all_have_location": "Всички обекти от тази дата вече имат данни за местоположение. Опитайте да включите показване на всички обекти или изберете друга дата",
"geolocation_instruction_location": "Изберете обект с GPS координати за да използвате тях или изберете място директно от картата",
"geolocation_instruction_no_date": "Изберете дата за да управлявате данните за локация на снимките и видеата от тази дата",
"geolocation_instruction_no_photos": "Не са намерени снимки или видеа от тази дата. Изберете друга дата",
"get_help": "Помощ", "get_help": "Помощ",
"get_wifiname_error": "Неуспешно получаване името на Wi-Fi мрежата. Моля, убедете се, че са предоставени нужните разрешения на приложението и има връзка с Wi-Fi", "get_wifiname_error": "Неуспешно получаване името на Wi-Fi мрежата. Моля, убедете се, че са предоставени нужните разрешения на приложението и има връзка с Wi-Fi",
"getting_started": "Как да започнем", "getting_started": "Как да започнем",
"go_back": "Връщане назад", "go_back": "Връщане назад",
"go_to_folder": "Отиди в папката", "go_to_folder": "Отиди в папката",
"go_to_search": "Преминаване към търсене", "go_to_search": "Преминаване към търсене",
"gps": "GPS координати",
"gps_missing": "Няма GPS координати",
"grant_permission": "Дай разрешение", "grant_permission": "Дай разрешение",
"group_albums_by": "Групирай албум по...", "group_albums_by": "Групирай албум по...",
"group_country": "Групирай по държава", "group_country": "Групирай по държава",
@@ -1047,6 +1098,9 @@
"haptic_feedback_switch": "Включи тактилна обратна връзка", "haptic_feedback_switch": "Включи тактилна обратна връзка",
"haptic_feedback_title": "Тактилна обратна връзка", "haptic_feedback_title": "Тактилна обратна връзка",
"has_quota": "Лимит", "has_quota": "Лимит",
"hash_asset": "Обект с хеш",
"hashed_assets": "Хеширани обекти",
"hashing": "Хеширане",
"header_settings_add_header_tip": "Добави заглавие", "header_settings_add_header_tip": "Добави заглавие",
"header_settings_field_validator_msg": "Недопустимо е да няма стойност", "header_settings_field_validator_msg": "Недопустимо е да няма стойност",
"header_settings_header_name_input": "Име на заглавието", "header_settings_header_name_input": "Име на заглавието",
@@ -1078,7 +1132,9 @@
"home_page_upload_err_limit": "Може да качвате максимум 30 обекта едновременно, пропускане", "home_page_upload_err_limit": "Може да качвате максимум 30 обекта едновременно, пропускане",
"host": "Хост", "host": "Хост",
"hour": "Час", "hour": "Час",
"hours": "Часа",
"id": "ID", "id": "ID",
"idle": "Бездействие",
"ignore_icloud_photos": "Пропусни снимки от iCloud", "ignore_icloud_photos": "Пропусни снимки от iCloud",
"ignore_icloud_photos_description": "Снимки, които са запазени в iCloud няма да се качват в Immich сървъра", "ignore_icloud_photos_description": "Снимки, които са запазени в iCloud няма да се качват в Immich сървъра",
"image": "Изображение", "image": "Изображение",
@@ -1136,10 +1192,13 @@
"language_no_results_title": "Не са намерени езици", "language_no_results_title": "Не са намерени езици",
"language_search_hint": "Търсене на езици...", "language_search_hint": "Търсене на езици...",
"language_setting_description": "Изберете предпочитан език", "language_setting_description": "Изберете предпочитан език",
"large_files": "Големи файлове",
"last": "Последен",
"last_seen": "Последно видяно", "last_seen": "Последно видяно",
"latest_version": "Последна версия", "latest_version": "Последна версия",
"latitude": "Ширина", "latitude": "Ширина",
"leave": "Излез", "leave": "Излез",
"leave_album": "Напускане на албума",
"lens_model": "Модел леща", "lens_model": "Модел леща",
"let_others_respond": "Позволете на другите да отговорят", "let_others_respond": "Позволете на другите да отговорят",
"level": "Ниво", "level": "Ниво",
@@ -1153,6 +1212,7 @@
"library_page_sort_title": "Заглавие на албума", "library_page_sort_title": "Заглавие на албума",
"licenses": "Лицензи", "licenses": "Лицензи",
"light": "Светло", "light": "Светло",
"like": "Харесайте",
"like_deleted": "Като изтрит", "like_deleted": "Като изтрит",
"link_motion_video": "Линк към видео", "link_motion_video": "Линк към видео",
"link_to_oauth": "Линк към OAuth", "link_to_oauth": "Линк към OAuth",
@@ -1160,7 +1220,9 @@
"list": "Лист", "list": "Лист",
"loading": "Зареждане", "loading": "Зареждане",
"loading_search_results_failed": "Зареждането на резултатите от търсенето е неуспешно", "loading_search_results_failed": "Зареждането на резултатите от търсенето е неуспешно",
"local": "Локално",
"local_asset_cast_failed": "Не може да се предава обект, който още не е качен на сървъра", "local_asset_cast_failed": "Не може да се предава обект, който още не е качен на сървъра",
"local_assets": "Локални обекти",
"local_network": "Локална мрежа", "local_network": "Локална мрежа",
"local_network_sheet_info": "Приложението ще се свърже със сървъра на този URL, когато устройството е свързано към зададената Wi-Fi мрежа", "local_network_sheet_info": "Приложението ще се свърже със сървъра на този URL, когато устройството е свързано към зададената Wi-Fi мрежа",
"location_permission": "Разрешение за местоположение", "location_permission": "Разрешение за местоположение",
@@ -1209,6 +1271,7 @@
"main_branch_warning": "Използвате версия за разработчици, силно препоръчваме да използвате официална версия!", "main_branch_warning": "Използвате версия за разработчици, силно препоръчваме да използвате официална версия!",
"main_menu": "Главно меню", "main_menu": "Главно меню",
"make": "Марка", "make": "Марка",
"manage_geolocation": "Управление на местоположенията",
"manage_shared_links": "Управление на споделени връзки", "manage_shared_links": "Управление на споделени връзки",
"manage_sharing_with_partners": "Управление на споделянето с партньори", "manage_sharing_with_partners": "Управление на споделянето с партньори",
"manage_the_app_settings": "Управление на настройките на приложението", "manage_the_app_settings": "Управление на настройките на приложението",
@@ -1217,7 +1280,7 @@
"manage_your_devices": "Управление на влезлите в системата устройства", "manage_your_devices": "Управление на влезлите в системата устройства",
"manage_your_oauth_connection": "Управление на OAuth връзката", "manage_your_oauth_connection": "Управление на OAuth връзката",
"map": "Карта", "map": "Карта",
"map_assets_in_bounds": "{count} снимки", "map_assets_in_bounds": "{count, plural, =0 {Няма снимки} one {# снимка} other {# снимки}}",
"map_cannot_get_user_location": "Не можах да получа местоположението", "map_cannot_get_user_location": "Не можах да получа местоположението",
"map_location_dialog_yes": "Да", "map_location_dialog_yes": "Да",
"map_location_picker_page_use_location": "Използвай това местоположение", "map_location_picker_page_use_location": "Използвай това местоположение",
@@ -1225,7 +1288,6 @@
"map_location_service_disabled_title": "Услугата за местоположение е изключена", "map_location_service_disabled_title": "Услугата за местоположение е изключена",
"map_marker_for_images": "Маркери на картата за снимки направени в {city}, {country}", "map_marker_for_images": "Маркери на картата за снимки направени в {city}, {country}",
"map_marker_with_image": "Маркер на картата с изображение", "map_marker_with_image": "Маркер на картата с изображение",
"map_no_assets_in_bounds": "Няма снимки от този район",
"map_no_location_permission_content": "За да се показват обектите от текущото място, трябва разрешение за определяне на местоположението. Искате ли да предоставите разрешение сега?", "map_no_location_permission_content": "За да се показват обектите от текущото място, трябва разрешение за определяне на местоположението. Искате ли да предоставите разрешение сега?",
"map_no_location_permission_title": "Отказан достъп до местоположение", "map_no_location_permission_title": "Отказан достъп до местоположение",
"map_settings": "Настройки на картата", "map_settings": "Настройки на картата",
@@ -1262,6 +1324,7 @@
"merged_people_count": "Слят {count, plural, one {# човек} other {# човека}}", "merged_people_count": "Слят {count, plural, one {# човек} other {# човека}}",
"minimize": "Минимизиране", "minimize": "Минимизиране",
"minute": "Минута", "minute": "Минута",
"minutes": "Минути",
"missing": "Липсващи", "missing": "Липсващи",
"model": "Модел", "model": "Модел",
"month": "Месец", "month": "Месец",
@@ -1281,6 +1344,9 @@
"my_albums": "Мои албуми", "my_albums": "Мои албуми",
"name": "Име", "name": "Име",
"name_or_nickname": "Име или прякор", "name_or_nickname": "Име или прякор",
"network_requirement_photos_upload": "Използвай мобилни данни за архивиране на снимки",
"network_requirement_videos_upload": "Използвай мобилни данни за архивиране на видео",
"network_requirements_updated": "Мрежовите настройки са променени, нулиране на опашката за архивиране",
"networking_settings": "Мрежа", "networking_settings": "Мрежа",
"networking_subtitle": "Управление на настройките за връзка със сървъра", "networking_subtitle": "Управление на настройките за връзка със сървъра",
"never": "Никога", "never": "Никога",
@@ -1316,6 +1382,7 @@
"no_results": "Няма резултати", "no_results": "Няма резултати",
"no_results_description": "Опитайте със синоним или по-обща ключова дума", "no_results_description": "Опитайте със синоним или по-обща ключова дума",
"no_shared_albums_message": "Създайте албум, за да споделяте снимки и видеоклипове с хората в мрежата си", "no_shared_albums_message": "Създайте албум, за да споделяте снимки и видеоклипове с хората в мрежата си",
"no_uploads_in_progress": "Няма качване в момента",
"not_in_any_album": "Не е в никой албум", "not_in_any_album": "Не е в никой албум",
"not_selected": "Не е избрано", "not_selected": "Не е избрано",
"note_apply_storage_label_to_previously_uploaded assets": "Забележка: За да приложите етикета за съхранение към предварително качени активи, стартирайте", "note_apply_storage_label_to_previously_uploaded assets": "Забележка: За да приложите етикета за съхранение към предварително качени активи, стартирайте",
@@ -1331,6 +1398,7 @@
"oauth": "OAuth", "oauth": "OAuth",
"official_immich_resources": "Официална информация за Immich", "official_immich_resources": "Официална информация за Immich",
"offline": "Офлайн", "offline": "Офлайн",
"offset": "Отместване",
"ok": "Добре", "ok": "Добре",
"oldest_first": "Най-старите първи", "oldest_first": "Най-старите първи",
"on_this_device": "На това устройство", "on_this_device": "На това устройство",
@@ -1353,6 +1421,7 @@
"original": "оригинал", "original": "оригинал",
"other": "Други", "other": "Други",
"other_devices": "Други устройства", "other_devices": "Други устройства",
"other_entities": "Други обекти",
"other_variables": "Други променливи", "other_variables": "Други променливи",
"owned": "Моите", "owned": "Моите",
"owner": "Собственик", "owner": "Собственик",
@@ -1407,6 +1476,9 @@
"permission_onboarding_permission_limited": "Ограничен достъп. За да може Immich да архивира и управлява галерията, предоставете достъп до снимки и видео в настройките.", "permission_onboarding_permission_limited": "Ограничен достъп. За да може Immich да архивира и управлява галерията, предоставете достъп до снимки и видео в настройките.",
"permission_onboarding_request": "Immich се нуждае от разрешение за преглед на снимки и видео.", "permission_onboarding_request": "Immich се нуждае от разрешение за преглед на снимки и видео.",
"person": "Човек", "person": "Човек",
"person_age_months": "{months, plural, one {# месец} other {# месеца}}",
"person_age_year_months": "1 година и {months, plural, one {# месец} other {# месеца}}",
"person_age_years": "{years, plural, other {# години}}",
"person_birthdate": "Дата на раждане {date}", "person_birthdate": "Дата на раждане {date}",
"person_hidden": "{name}{hidden, select, true { (скрит)} other {}}", "person_hidden": "{name}{hidden, select, true { (скрит)} other {}}",
"photo_shared_all_users": "Изглежда, че сте споделили снимките си с всички потребители или нямате потребители, с които да споделяте.", "photo_shared_all_users": "Изглежда, че сте споделили снимките си с всички потребители или нямате потребители, с които да споделяте.",
@@ -1446,6 +1518,7 @@
"profile_drawer_client_out_of_date_minor": "Мобилното приложение е остаряло. Моля, актуализирай до най-новата версия.", "profile_drawer_client_out_of_date_minor": "Мобилното приложение е остаряло. Моля, актуализирай до най-новата версия.",
"profile_drawer_client_server_up_to_date": "Клиента и сървъра са обновени", "profile_drawer_client_server_up_to_date": "Клиента и сървъра са обновени",
"profile_drawer_github": "GitHub", "profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Режима само за четене е активиран. С двоен клик върху картиката-аватар на потребителя ще деактивирате само за четене.",
"profile_drawer_server_out_of_date_major": "Версията на сървъра е остаряла. Моля, актуализирай поне до последната главна версия.", "profile_drawer_server_out_of_date_major": "Версията на сървъра е остаряла. Моля, актуализирай поне до последната главна версия.",
"profile_drawer_server_out_of_date_minor": "Версията на сървъра е остаряла. Моля, актуализирай до последната версия.", "profile_drawer_server_out_of_date_minor": "Версията на сървъра е остаряла. Моля, актуализирай до последната версия.",
"profile_image_of_user": "Профилна снимка на {user}", "profile_image_of_user": "Профилна снимка на {user}",
@@ -1484,12 +1557,15 @@
"purchase_server_description_2": "Статус на поддръжник", "purchase_server_description_2": "Статус на поддръжник",
"purchase_server_title": "Сървър", "purchase_server_title": "Сървър",
"purchase_settings_server_activated": "Продуктовият ключ на сървъра се управлява от администратора", "purchase_settings_server_activated": "Продуктовият ключ на сървъра се управлява от администратора",
"queue_status": "В опашка {count} от {total}",
"rating": "Оценка със звезди", "rating": "Оценка със звезди",
"rating_clear": "Изчисти оценката", "rating_clear": "Изчисти оценката",
"rating_count": "{count, plural, one {# звезда} other {# звезди}}", "rating_count": "{count, plural, one {# звезда} other {# звезди}}",
"rating_description": "Покажи EXIF оценката в панела с информация", "rating_description": "Покажи EXIF оценката в панела с информация",
"reaction_options": "Избор на реакция", "reaction_options": "Избор на реакция",
"read_changelog": "Прочети промените", "read_changelog": "Прочети промените",
"readonly_mode_disabled": "Режима само за четене е деактивиран",
"readonly_mode_enabled": "Режима само за четене е активиран",
"reassign": "Преназначаване", "reassign": "Преназначаване",
"reassigned_assets_to_existing_person": "Преназначени {count, plural, one {# елемент} other {# елемента}} на {name, select, null {съществуващ човек} other {{name}}}", "reassigned_assets_to_existing_person": "Преназначени {count, plural, one {# елемент} other {# елемента}} на {name, select, null {съществуващ човек} other {{name}}}",
"reassigned_assets_to_new_person": "Преназначени {count, plural, one {# елемент} other {# елемента}} на нов човек", "reassigned_assets_to_new_person": "Преназначени {count, plural, one {# елемент} other {# елемента}} на нов човек",
@@ -1512,6 +1588,8 @@
"refreshing_faces": "Опресняване на лицата", "refreshing_faces": "Опресняване на лицата",
"refreshing_metadata": "Опресняване на метаданните", "refreshing_metadata": "Опресняване на метаданните",
"regenerating_thumbnails": "Пресъздаване на миниатюрите", "regenerating_thumbnails": "Пресъздаване на миниатюрите",
"remote": "На сървъра",
"remote_assets": "Обекти на сървъра",
"remove": "Премахни", "remove": "Премахни",
"remove_assets_album_confirmation": "Сигурни ли сте, че искате да премахнете {count, plural, one {# елемент} other {# елемента}} от албума?", "remove_assets_album_confirmation": "Сигурни ли сте, че искате да премахнете {count, plural, one {# елемент} other {# елемента}} от албума?",
"remove_assets_shared_link_confirmation": "Сигурни ли сте, че искате да премахнете {count, plural, one {# елемент} other {# елемента}} от този споеделен линк?", "remove_assets_shared_link_confirmation": "Сигурни ли сте, че искате да премахнете {count, plural, one {# елемент} other {# елемента}} от този споеделен линк?",
@@ -1549,19 +1627,28 @@
"reset_password": "Нулиране на паролата", "reset_password": "Нулиране на паролата",
"reset_people_visibility": "Нулиране на видимостта на хората", "reset_people_visibility": "Нулиране на видимостта на хората",
"reset_pin_code": "Нулирай PIN кода", "reset_pin_code": "Нулирай PIN кода",
"reset_pin_code_description": "Ако сте си забравили ПИН кода, може да се обърнете към администратора на сървъра за да го нулира",
"reset_pin_code_success": "Успешно нулиран ПИН код",
"reset_pin_code_with_password": "С вашата парола можете винаги да нулирате своя ПИН код",
"reset_sqlite": "Нулиране на базата данни SQLite",
"reset_sqlite_confirmation": "Наистина ли искате да нулирате базата данни SQLite? Ще трябва да излезете от системата и да се впишете отново за нова синхронизация на данните",
"reset_sqlite_success": "Успешно нулиране на базата данни SQLite",
"reset_to_default": "Връщане на фабрични настройки", "reset_to_default": "Връщане на фабрични настройки",
"resolve_duplicates": "Реши дубликатите", "resolve_duplicates": "Реши дубликатите",
"resolved_all_duplicates": "Всички дубликати са решени", "resolved_all_duplicates": "Всички дубликати са решени",
"restore": "Възстановяване", "restore": "Възстановяване",
"restore_all": "Възстанови всички", "restore_all": "Възстанови всички",
"restore_trash_action_prompt": "{count} възстановени от коша",
"restore_user": "Възстанови потребител", "restore_user": "Възстанови потребител",
"restored_asset": "Възстановен елемент", "restored_asset": "Възстановен елемент",
"resume": "Продължаване", "resume": "Продължаване",
"retry_upload": "Опитай качването отново", "retry_upload": "Опитай качването отново",
"review_duplicates": "Разгледай дубликатите", "review_duplicates": "Разгледай дубликатите",
"review_large_files": "Преглед на големи файлове",
"role": "Роля", "role": "Роля",
"role_editor": "Редактор", "role_editor": "Редактор",
"role_viewer": "Зрител", "role_viewer": "Зрител",
"running": "Изпълняване",
"save": "Запази", "save": "Запази",
"save_to_gallery": "Запази в галерията", "save_to_gallery": "Запази в галерията",
"saved_api_key": "Запазен API Key", "saved_api_key": "Запазен API Key",
@@ -1648,6 +1735,7 @@
"select_user_for_sharing_page_err_album": "Създаването на албум не бе успешно", "select_user_for_sharing_page_err_album": "Създаването на албум не бе успешно",
"selected": "Избрано", "selected": "Избрано",
"selected_count": "{count, plural, other {# избрани}}", "selected_count": "{count, plural, other {# избрани}}",
"selected_gps_coordinates": "избрани GPS координати",
"send_message": "Изпратете съобщение", "send_message": "Изпратете съобщение",
"send_welcome_email": "Изпратете имейл за добре дошли", "send_welcome_email": "Изпратете имейл за добре дошли",
"server_endpoint": "Адрес на сървъра", "server_endpoint": "Адрес на сървъра",
@@ -1715,6 +1803,7 @@
"shared_link_clipboard_copied_massage": "Копирано в клипборда", "shared_link_clipboard_copied_massage": "Копирано в клипборда",
"shared_link_clipboard_text": "Връзка: {link}\nПарола: {password}", "shared_link_clipboard_text": "Връзка: {link}\nПарола: {password}",
"shared_link_create_error": "Грешка при създаване на споделена връзка", "shared_link_create_error": "Грешка при създаване на споделена връзка",
"shared_link_custom_url_description": "Достъпете споделения линк с персонализиран URL адрес",
"shared_link_edit_description_hint": "Въведи описание на споделеното", "shared_link_edit_description_hint": "Въведи описание на споделеното",
"shared_link_edit_expire_after_option_day": "1 ден", "shared_link_edit_expire_after_option_day": "1 ден",
"shared_link_edit_expire_after_option_days": "{count} дни", "shared_link_edit_expire_after_option_days": "{count} дни",
@@ -1740,6 +1829,7 @@
"shared_link_info_chip_metadata": "EXIF", "shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Управление на споделените връзки", "shared_link_manage_links": "Управление на споделените връзки",
"shared_link_options": "Опции за споделена връзка", "shared_link_options": "Опции за споделена връзка",
"shared_link_password_description": "Изискване на парола за достъп до споделения линк",
"shared_links": "Споделени връзки", "shared_links": "Споделени връзки",
"shared_links_description": "Сподели снимки и видеа с линк", "shared_links_description": "Сподели снимки и видеа с линк",
"shared_photos_and_videos_count": "{assetCount, plural, other {# споделени снимки и видеа.}}", "shared_photos_and_videos_count": "{assetCount, plural, other {# споделени снимки и видеа.}}",
@@ -1756,8 +1846,10 @@
"shift_to_permanent_delete": "Натиснете ⇧, за да изтриете завинаги елемента", "shift_to_permanent_delete": "Натиснете ⇧, за да изтриете завинаги елемента",
"show_album_options": "Показване опции за албум", "show_album_options": "Показване опции за албум",
"show_albums": "Покажи албуми", "show_albums": "Покажи албуми",
"show_all_assets": "Покажи всичко",
"show_all_people": "Покажи всички хора", "show_all_people": "Покажи всички хора",
"show_and_hide_people": "Показване и скриване на хора", "show_and_hide_people": "Показване и скриване на хора",
"show_assets_without_location": "Покажи обекти без координати",
"show_file_location": "Покажи местоположението на файла", "show_file_location": "Покажи местоположението на файла",
"show_gallery": "Покажи галерия", "show_gallery": "Покажи галерия",
"show_hidden_people": "Показване на скритите хора", "show_hidden_people": "Показване на скритите хора",
@@ -1789,6 +1881,7 @@
"sort_created": "Дата на създаване", "sort_created": "Дата на създаване",
"sort_items": "Брой елементи", "sort_items": "Брой елементи",
"sort_modified": "Дата на промяна", "sort_modified": "Дата на промяна",
"sort_newest": "Най-нови снимки",
"sort_oldest": "Най-старата снимка", "sort_oldest": "Най-старата снимка",
"sort_people_by_similarity": "Сортиране на хора по прилика", "sort_people_by_similarity": "Сортиране на хора по прилика",
"sort_recent": "Най-новата снимка", "sort_recent": "Най-новата снимка",
@@ -1815,6 +1908,7 @@
"storage_quota": "Квота на хранилището", "storage_quota": "Квота на хранилището",
"storage_usage": "Използвани {used} от {available}", "storage_usage": "Използвани {used} от {available}",
"submit": "Изпращане", "submit": "Изпращане",
"success": "Успешно",
"suggestions": "Предложения", "suggestions": "Предложения",
"sunrise_on_the_beach": "Изгрев на плажа", "sunrise_on_the_beach": "Изгрев на плажа",
"support": "Поддръжка", "support": "Поддръжка",
@@ -1824,6 +1918,8 @@
"sync": "Синхронизиране", "sync": "Синхронизиране",
"sync_albums": "Синхронизиране на албуми", "sync_albums": "Синхронизиране на албуми",
"sync_albums_manual_subtitle": "Синхронизирай всички заредени видеа и снимки в избраните архивни албуми", "sync_albums_manual_subtitle": "Синхронизирай всички заредени видеа и снимки в избраните архивни албуми",
"sync_local": "Локална синхронизация",
"sync_remote": "Синхронизация със сървъра",
"sync_upload_album_setting_subtitle": "Създавайте и зареждайте снимки и видеа в избрани албуми в Immich", "sync_upload_album_setting_subtitle": "Създавайте и зареждайте снимки и видеа в избрани албуми в Immich",
"tag": "Таг", "tag": "Таг",
"tag_assets": "Тагни елементи", "tag_assets": "Тагни елементи",
@@ -1834,6 +1930,7 @@
"tag_updated": "Актуализиран етикет: {tag}", "tag_updated": "Актуализиран етикет: {tag}",
"tagged_assets": "Тагнати {count, plural, one {# елемент} other {# елементи}}", "tagged_assets": "Тагнати {count, plural, one {# елемент} other {# елементи}}",
"tags": "Етикет", "tags": "Етикет",
"tap_to_run_job": "Докоснете, за да стартирате задачата",
"template": "Шаблон", "template": "Шаблон",
"theme": "Тема", "theme": "Тема",
"theme_selection": "Избор на тема", "theme_selection": "Избор на тема",
@@ -1860,7 +1957,9 @@
"to_change_password": "Промяна на паролата", "to_change_password": "Промяна на паролата",
"to_favorite": "Любим", "to_favorite": "Любим",
"to_login": "Вписване", "to_login": "Вписване",
"to_multi_select": "за избор на няколко",
"to_parent": "Отиди към родителския елемент", "to_parent": "Отиди към родителския елемент",
"to_select": "за избор",
"to_trash": "Кошче", "to_trash": "Кошче",
"toggle_settings": "Превключване на настройките", "toggle_settings": "Превключване на настройките",
"total": "Общо", "total": "Общо",
@@ -1910,13 +2009,17 @@
"unstacked_assets_count": "Разкачени {count, plural, one {# елемент} other {# елементи}}", "unstacked_assets_count": "Разкачени {count, plural, one {# елемент} other {# елементи}}",
"untagged": "Немаркирани", "untagged": "Немаркирани",
"up_next": "Следващ", "up_next": "Следващ",
"update_location_action_prompt": "Обнови координатите на {count} избрани обекта с:",
"updated_at": "Обновено", "updated_at": "Обновено",
"updated_password": "Паролата е актуализирана", "updated_password": "Паролата е актуализирана",
"upload": "Качване", "upload": "Качване",
"upload_action_prompt": "{count} на опашка за качване",
"upload_concurrency": "Успоредни качвания", "upload_concurrency": "Успоредни качвания",
"upload_details": "Детайли за качването",
"upload_dialog_info": "Искате ли да архивирате на сървъра избраните обекти?", "upload_dialog_info": "Искате ли да архивирате на сървъра избраните обекти?",
"upload_dialog_title": "Качи обект", "upload_dialog_title": "Качи обект",
"upload_errors": "Качването е завъшено с {count, plural, one {# грешка} other {# грешки}}, обновете страницата за да видите новите елементи.", "upload_errors": "Качването е завъшено с {count, plural, one {# грешка} other {# грешки}}, обновете страницата за да видите новите елементи.",
"upload_finished": "Качването завърши",
"upload_progress": "Остават {remaining, number} - Обработени {processed, number}/{total, number}", "upload_progress": "Остават {remaining, number} - Обработени {processed, number}/{total, number}",
"upload_skipped_duplicates": "Прескочени {count, plural, one {# дублиран елемент} other {# дублирани елементи}}", "upload_skipped_duplicates": "Прескочени {count, plural, one {# дублиран елемент} other {# дублирани елементи}}",
"upload_status_duplicates": "Дубликати", "upload_status_duplicates": "Дубликати",
@@ -1925,11 +2028,13 @@
"upload_success": "Качването е успешно, опреснете страницата, за да видите новите файлове.", "upload_success": "Качването е успешно, опреснете страницата, за да видите новите файлове.",
"upload_to_immich": "Казване в Immich ({count})", "upload_to_immich": "Казване в Immich ({count})",
"uploading": "Качваме", "uploading": "Качваме",
"uploading_media": "Качване на медийни файлове",
"url": "URL", "url": "URL",
"usage": "Потребление", "usage": "Потребление",
"use_biometric": "Използвай биометрия", "use_biometric": "Използвай биометрия",
"use_current_connection": "използвай текущата връзка", "use_current_connection": "използвай текущата връзка",
"use_custom_date_range": "Използвайте собствен диапазон от дати вместо това", "use_custom_date_range": "Използвайте собствен диапазон от дати вместо това",
"use_this_location": "Избери това място",
"user": "Потребител", "user": "Потребител",
"user_has_been_deleted": "Този потребител е премахнат.", "user_has_been_deleted": "Този потребител е премахнат.",
"user_id": "Потребител ИД", "user_id": "Потребител ИД",
@@ -1945,6 +2050,7 @@
"user_usage_stats_description": "Преглед на статистиката за използването на акаунта", "user_usage_stats_description": "Преглед на статистиката за използването на акаунта",
"username": "Потребителско име", "username": "Потребителско име",
"users": "Потребители", "users": "Потребители",
"users_added_to_album_count": "{count, plural, one {Добавен е # потребител} other {Добавени са # потребителя}} на албума",
"utilities": "Инструменти", "utilities": "Инструменти",
"validate": "Валидиране", "validate": "Валидиране",
"validate_endpoint_error": "Моля, въведи правилен URL", "validate_endpoint_error": "Моля, въведи правилен URL",
@@ -1963,6 +2069,7 @@
"view_album": "Разгледай албума", "view_album": "Разгледай албума",
"view_all": "Преглед на всички", "view_all": "Преглед на всички",
"view_all_users": "Преглед на всички потребители", "view_all_users": "Преглед на всички потребители",
"view_details": "Подробности за изгледа",
"view_in_timeline": "Покажи във времева линия", "view_in_timeline": "Покажи във времева линия",
"view_link": "Преглед на връзката", "view_link": "Преглед на връзката",
"view_links": "Преглед на връзките", "view_links": "Преглед на връзките",

View File

@@ -14,5 +14,10 @@
"add_exclusion_pattern": "Putem wan paten wae hemi karem aot", "add_exclusion_pattern": "Putem wan paten wae hemi karem aot",
"add_import_path": "Putem wan pat blo import", "add_import_path": "Putem wan pat blo import",
"add_location": "Putem wan place blo hem", "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

@@ -14,6 +14,7 @@
"add_a_location": "একটি অবস্থান যোগ করুন", "add_a_location": "একটি অবস্থান যোগ করুন",
"add_a_name": "একটি নাম যোগ করুন", "add_a_name": "একটি নাম যোগ করুন",
"add_a_title": "একটি শিরোনাম যোগ করুন", "add_a_title": "একটি শিরোনাম যোগ করুন",
"add_birthday": "একটি জন্মদিন যোগ করুন",
"add_endpoint": "এন্ডপয়েন্ট যোগ করুন", "add_endpoint": "এন্ডপয়েন্ট যোগ করুন",
"add_exclusion_pattern": "বহির্ভূতকরণ নমুনা", "add_exclusion_pattern": "বহির্ভূতকরণ নমুনা",
"add_import_path": "ইমপোর্ট করার পাথ যুক্ত করুন", "add_import_path": "ইমপোর্ট করার পাথ যুক্ত করুন",
@@ -27,6 +28,9 @@
"add_to_album": "এলবাম এ যোগ করুন", "add_to_album": "এলবাম এ যোগ করুন",
"add_to_album_bottom_sheet_added": "{album} এ যোগ করা হয়েছে", "add_to_album_bottom_sheet_added": "{album} এ যোগ করা হয়েছে",
"add_to_album_bottom_sheet_already_exists": "{album} এ আগে থেকেই আছে", "add_to_album_bottom_sheet_already_exists": "{album} এ আগে থেকেই আছে",
"add_to_album_toggle": "{album} - এর নির্বাচন পরিবর্তন করুন",
"add_to_albums": "অ্যালবামে যোগ করুন",
"add_to_albums_count": "অ্যালবামে যোগ করুন ({count})",
"add_to_shared_album": "শেয়ার করা অ্যালবামে যোগ করুন", "add_to_shared_album": "শেয়ার করা অ্যালবামে যোগ করুন",
"add_url": "লিঙ্ক যোগ করুন", "add_url": "লিঙ্ক যোগ করুন",
"added_to_archive": "আর্কাইভ এ যোগ করা হয়েছে", "added_to_archive": "আর্কাইভ এ যোগ করা হয়েছে",
@@ -44,6 +48,13 @@
"backup_database": "ডাটাবেস ডাম্প তৈরি করুন", "backup_database": "ডাটাবেস ডাম্প তৈরি করুন",
"backup_database_enable_description": "ডাটাবেস ডাম্প সক্রিয় করুন", "backup_database_enable_description": "ডাটাবেস ডাম্প সক্রিয় করুন",
"backup_keep_last_amount": "আগের ডাম্পের পরিমাণ রাখা হবে", "backup_keep_last_amount": "আগের ডাম্পের পরিমাণ রাখা হবে",
"backup_onboarding_1_description": "অফসাইট কপি ক্লাউডে অথবা অন্য কোনও ভৌত স্থানে।",
"backup_onboarding_2_description": "বিভিন্ন ডিভাইসে স্থানীয় কপি। এর মধ্যে রয়েছে প্রধান ফাইল এবং স্থানীয়ভাবে সেই ফাইলগুলির ব্যাকআপ।",
"backup_onboarding_3_description": "মূল ফাইল সহ আপনার ডেটার মোট কপি। এর মধ্যে রয়েছে ১টি অফসাইট কপি এবং ২টি স্থানীয় কপি।",
"backup_onboarding_description": "আপনার ডেটা সুরক্ষিত রাখার জন্য একটি <backblaze-link>3-2-1 ব্যাকআপ কৌশল</backblaze-link> সুপারিশ করা হয়। একটি বিস্তৃত ব্যাকআপ সমাধানের জন্য আপনার আপলোড করা ফটো/ভিডিওগুলির কপি এবং Immich ডাটাবেস রাখা উচিত।",
"backup_onboarding_footer": "Immich এর ব্যাকআপ নেওয়ার বিষয়ে আরও তথ্যের জন্য, অনুগ্রহ করে <link>ডকুমেন্টেশন</link> দেখুন।",
"backup_onboarding_parts_title": "৩-২-১ ব্যাকআপের মধ্যে রয়েছে:",
"backup_onboarding_title": "ব্যাকআপ",
"backup_settings": "ডাটাবেস ডাম্প সেটিংস", "backup_settings": "ডাটাবেস ডাম্প সেটিংস",
"backup_settings_description": "ডাটাবেস ডাম্প সেটিংস পরিচালনা করুন।", "backup_settings_description": "ডাটাবেস ডাম্প সেটিংস পরিচালনা করুন।",
"cleared_jobs": "{job} এর জন্য jobs খালি করা হয়েছে", "cleared_jobs": "{job} এর জন্য jobs খালি করা হয়েছে",
@@ -64,7 +75,7 @@
"external_library_management": "বহিরাগত গ্রন্থাগার ব্যবস্থাপনা", "external_library_management": "বহিরাগত গ্রন্থাগার ব্যবস্থাপনা",
"face_detection": "মুখ সনাক্তকরণ", "face_detection": "মুখ সনাক্তকরণ",
"face_detection_description": "মেশিন লার্নিং ব্যবহার করে অ্যাসেটে থাকা মুখ/চেহারা গুলি সনাক্ত করুন। ভিডিও গুলির জন্য, শুধুমাত্র থাম্বনেইল বিবেচনা করা হয়। \"রিফ্রেশ\" (পুনরায়) সমস্ত অ্যাসেট প্রক্রিয়া করে। \"রিসেট\" করার মাধ্যমে অতিরিক্তভাবে সমস্ত বর্তমান মুখের ডেটা সাফ করে। \"অনুপস্থিত\" অ্যাসেটগুলিকে সারিবদ্ধ করে যা এখনও প্রক্রিয়া করা হয়নি। সনাক্ত করা মুখগুলিকে ফেসিয়াল রিকগনিশনের জন্য সারিবদ্ধ করা হবে, ফেসিয়াল ডিটেকশন সম্পূর্ণ হওয়ার পরে, বিদ্যমান বা নতুন ব্যক্তিদের মধ্যে গোষ্ঠীবদ্ধ করে।", "face_detection_description": "মেশিন লার্নিং ব্যবহার করে অ্যাসেটে থাকা মুখ/চেহারা গুলি সনাক্ত করুন। ভিডিও গুলির জন্য, শুধুমাত্র থাম্বনেইল বিবেচনা করা হয়। \"রিফ্রেশ\" (পুনরায়) সমস্ত অ্যাসেট প্রক্রিয়া করে। \"রিসেট\" করার মাধ্যমে অতিরিক্তভাবে সমস্ত বর্তমান মুখের ডেটা সাফ করে। \"অনুপস্থিত\" অ্যাসেটগুলিকে সারিবদ্ধ করে যা এখনও প্রক্রিয়া করা হয়নি। সনাক্ত করা মুখগুলিকে ফেসিয়াল রিকগনিশনের জন্য সারিবদ্ধ করা হবে, ফেসিয়াল ডিটেকশন সম্পূর্ণ হওয়ার পরে, বিদ্যমান বা নতুন ব্যক্তিদের মধ্যে গোষ্ঠীবদ্ধ করে।",
"facial_recognition_job_description": "শনাক্ত করা মুখগুলিকে মানুষের মধ্যে গোষ্ঠীভুক্ত করুন। মুখ সনাক্তকরণ সম্পূর্ণ হওয়ার পরে এই ধাপটি চলে। \"রিসেট\" (পুনরায়) সমস্ত মুখকে ক্লাস্টার করে। \"অনুপস্থিত\" মুখগুলিকে সারিতে রাখে যেখানে কোনও ব্যক্তিকে বরাদ্দ করা হয়নি।", "facial_recognition_job_description": "শনাক্ত করা মুখগুলিকে মানুষের মধ্যে গোষ্ঠীভুক্ত/গ্রুপ করুন। মুখ সনাক্তকরণ সম্পূর্ণ হওয়ার পরে এই ধাপটি চলে। \"রিসেট\" (পুনরায়) সমস্ত মুখকে ক্লাস্টার করে। \"অনুপস্থিত/মিসিং\" মুখগুলিকে সারিতে রাখে যেগুলো কোনও ব্যক্তিকে এসাইন/বরাদ্দ করা হয়নি।",
"failed_job_command": "কমান্ড {command} কাজের জন্য ব্যর্থ হয়েছে: {job}", "failed_job_command": "কমান্ড {command} কাজের জন্য ব্যর্থ হয়েছে: {job}",
"force_delete_user_warning": "সতর্কতা: এটি ব্যবহারকারী এবং সমস্ত সম্পদ অবিলম্বে সরিয়ে ফেলবে। এটি পূর্বাবস্থায় ফেরানো যাবে না এবং ফাইলগুলি পুনরুদ্ধার করা যাবে না।", "force_delete_user_warning": "সতর্কতা: এটি ব্যবহারকারী এবং সমস্ত সম্পদ অবিলম্বে সরিয়ে ফেলবে। এটি পূর্বাবস্থায় ফেরানো যাবে না এবং ফাইলগুলি পুনরুদ্ধার করা যাবে না।",
"image_format": "ফরম্যাট", "image_format": "ফরম্যাট",
@@ -75,9 +86,9 @@
"image_fullsize_quality_description": "পূর্ণ-আকারের ছবির মান ১-১০০। উচ্চতর হলে ভালো, কিন্তু আরও বড় ফাইল তৈরি হয়।", "image_fullsize_quality_description": "পূর্ণ-আকারের ছবির মান ১-১০০। উচ্চতর হলে ভালো, কিন্তু আরও বড় ফাইল তৈরি হয়।",
"image_fullsize_title": "পূর্ণ-আকারের চিত্র সেটিংস", "image_fullsize_title": "পূর্ণ-আকারের চিত্র সেটিংস",
"image_prefer_embedded_preview": "এম্বেড করা প্রিভিউ পছন্দ করুন", "image_prefer_embedded_preview": "এম্বেড করা প্রিভিউ পছন্দ করুন",
"image_prefer_embedded_preview_setting_description": "ছবি প্রক্রিয়াকরণের জন্য এবং যখনই উপলব্ধ থাকবে তখন RAW ফটোতে এমবেডেড প্রিভিউ ব্যবহার করুন। এটি কিছু ছবির জন্য আরও সঠিক রঙ তৈরি করতে পারে, তবে প্রিভিউয়ের মান ক্যামেরা-নির্ভর এবং ছবিতে আরও কমপ্রেশন আর্টিফ্যাক্ট থাকতে পারে।", "image_prefer_embedded_preview_setting_description": "যদি পাওয়া যায়, RAW ছবির ভেতরে থাকা প্রিভিউ ব্যবহার করুন। এতে কিছু ছবির রঙ আরও সঠিক দেখা যেতে পারে, তবে মান ক্যামেরার ওপর নির্ভর করে এবং ছবিতে বাড়তি কমপ্রেশন আর্টিফ্যাক্ট দেখা যেতে পারে।",
"image_prefer_wide_gamut": "প্রশস্ত পরিসর পছন্দ করুন", "image_prefer_wide_gamut": "প্রশস্ত পরিসর পছন্দ করুন",
"image_prefer_wide_gamut_setting_description": "থাম্বনেইলের জন্য ডিসপ্লে P3 ব্যবহার করুন। এটি প্রশস্ত রঙের স্থান সহ ছবির প্রাণবন্ততা আরও ভালভাবে সংরক্ষণ করে, তবে পুরনো ব্রাউজার সংস্করণ সহ পুরানো ডিভাইসগুলিতে ছবিগুলি ভিন্নভাবে প্রদর্শিত হতে পারে। রঙের পরিবর্তন এড়াতে sRGB ছবিগুলিকে sRGB হিসবে রাখা হয়।", "image_prefer_wide_gamut_setting_description": "থাম্বনেইলের জন্য Display P3 ব্যবহার করুন। এটি ওয়াইড কালারস্পেস ছবির উজ্জ্বলতা ও প্রাণবন্ত রঙ ভালভাবে ধরে রাখে, তবে পুরনো ডিভাইস বা ব্রাউজারে ছবিগুল ভিন্নভাবে দেখা যেতে পারে। sRGB ছবিগুলো রঙের পরিবর্তন এাতে sRGB হিসবে রাখা হবে।",
"image_preview_description": "স্ট্রিপড মেটাডেটা সহ মাঝারি আকারের ছবি, একটি একক সম্পদ দেখার সময় এবং মেশিন লার্নিংয়ের জন্য ব্যবহৃত হয়", "image_preview_description": "স্ট্রিপড মেটাডেটা সহ মাঝারি আকারের ছবি, একটি একক সম্পদ দেখার সময় এবং মেশিন লার্নিংয়ের জন্য ব্যবহৃত হয়",
"image_preview_quality_description": "১-১০০ এর মধ্যে প্রিভিউ কোয়ালিটি। বেশি হলে ভালো, কিন্তু বড় ফাইল তৈরি হয় এবং অ্যাপের প্রতিক্রিয়াশীলতা কমাতে পারে। কম মান সেট করলে মেশিন লার্নিং কোয়ালিটির উপর প্রভাব পড়তে পারে।", "image_preview_quality_description": "১-১০০ এর মধ্যে প্রিভিউ কোয়ালিটি। বেশি হলে ভালো, কিন্তু বড় ফাইল তৈরি হয় এবং অ্যাপের প্রতিক্রিয়াশীলতা কমাতে পারে। কম মান সেট করলে মেশিন লার্নিং কোয়ালিটির উপর প্রভাব পড়তে পারে।",
"image_preview_title": "প্রিভিউ সেটিংস", "image_preview_title": "প্রিভিউ সেটিংস",
@@ -91,9 +102,30 @@
"image_thumbnail_title": "থাম্বনেল সেটিংস", "image_thumbnail_title": "থাম্বনেল সেটিংস",
"job_concurrency": "{job} কনকারেন্সি", "job_concurrency": "{job} কনকারেন্সি",
"job_created": "Job তৈরি হয়েছে", "job_created": "Job তৈরি হয়েছে",
"job_not_concurrency_safe": "এই কাজটি সমকালীন-নিরাপদ নয়।", "job_not_concurrency_safe": "এই কাজটি সমান্তরালভাবে চালানো নিরাপদ ন",
"job_settings": "কাজের সেটিংস", "job_settings": "কাজের সেটিংস",
"job_settings_description": "কাজের সমান্তরালতা পরিচালনা করুন", "job_settings_description": "কাজের সমান্তরালতা পরিচালনা করুন",
"job_status": "চাকরির অবস্থা" "job_status": "চাকরির অবস্থা",
"jobs_delayed": "{jobCount, plural, other {# বিলম্বিত}}",
"jobs_failed": "{jobCount, plural, other {# ব্যর্থ}}",
"library_created": "লাইব্রেরি তৈরি করা হয়েছেঃ {library}",
"library_deleted": "লাইব্রেরি মুছে ফেলা হয়েছে",
"library_import_path_description": "ইম্পোর্ট/যোগ করার জন্য একটি ফোল্ডার নির্দিষ্ট করুন। সাবফোল্ডার সহ এই ফোল্ডারটি ছবি এবং ভিডিওর জন্য স্ক্যান করা হবে।",
"library_scanning": "পর্যায়ক্রমিক স্ক্যানিং",
"library_scanning_description": "পর্যায়ক্রমিক লাইব্রেরি স্ক্যানিং কনফিগার করুন",
"library_scanning_enable_description": "পর্যায়ক্রমিক লাইব্রেরি স্ক্যানিং সক্ষম করুন",
"library_settings": "বহিরাগত লাইব্রেরি",
"library_settings_description": "বহিরাগত লাইব্রেরি সেটিংস পরিচালনা করুন",
"library_tasks_description": "নতুন এবং/অথবা পরিবর্তিত সম্পদের জন্য বহিরাগত লাইব্রেরি স্ক্যান করুন",
"library_watching_enable_description": "ফাইল পরিবর্তনের জন্য বহিরাগত লাইব্রেরিগুলি দেখুন",
"library_watching_settings": "লাইব্রেরি দেখা (পরীক্ষামূলক)",
"library_watching_settings_description": "পরিবর্তিত ফাইলগুলির জন্য স্বয়ংক্রিয়ভাবে নজর রাখুন",
"logging_enable_description": "লগিং এনাবল/সক্ষম করুন",
"logging_level_description": "সক্রিয় থাকাকালীন, কোন লগ স্তর ব্যবহার করতে হবে।",
"logging_settings": "লগিং",
"machine_learning_clip_model": "CLIP মডেল",
"machine_learning_clip_model_description": "<link>এখানে</link> তালিকাভুক্ত একটি CLIP মডেলের নাম। মনে রাখবেন, মডেল পরিবর্তনের পর সব ছবির জন্য অবশ্যই Smart Search কাজটি আবার চালাতে হবে।",
"machine_learning_duplicate_detection": "পুনরাবৃত্তি সনাক্তকরণ",
"machine_learning_duplicate_detection_enabled": "পুনরাবৃত্তি শনাক্তকরণ চালু করুন"
} }
} }

View File

@@ -2,7 +2,7 @@
"about": "Quant a", "about": "Quant a",
"account": "Compte", "account": "Compte",
"account_settings": "Configuració del compte", "account_settings": "Configuració del compte",
"acknowledge": "D'acord", "acknowledge": "Base de coneixement",
"action": "Acció", "action": "Acció",
"action_common_update": "Actualitzar", "action_common_update": "Actualitzar",
"actions": "Accions", "actions": "Accions",
@@ -14,6 +14,7 @@
"add_a_location": "Afegiu una ubicació", "add_a_location": "Afegiu una ubicació",
"add_a_name": "Afegir un nom", "add_a_name": "Afegir un nom",
"add_a_title": "Afegir un títol", "add_a_title": "Afegir un títol",
"add_birthday": "Afegeix la data de naixement",
"add_endpoint": "afegir endpoint", "add_endpoint": "afegir endpoint",
"add_exclusion_pattern": "Afegir un patró d'exclusió", "add_exclusion_pattern": "Afegir un patró d'exclusió",
"add_import_path": "Afegir una ruta d'importació", "add_import_path": "Afegir una ruta d'importació",
@@ -27,6 +28,9 @@
"add_to_album": "Afegir a un l'àlbum", "add_to_album": "Afegir a un l'àlbum",
"add_to_album_bottom_sheet_added": "Afegit a {album}", "add_to_album_bottom_sheet_added": "Afegit a {album}",
"add_to_album_bottom_sheet_already_exists": "Ja està a {album}", "add_to_album_bottom_sheet_already_exists": "Ja està a {album}",
"add_to_album_toggle": "Commutar selecció de {album}",
"add_to_albums": "Afegir als àlbums",
"add_to_albums_count": "Afegir als àlbums ({count})",
"add_to_shared_album": "Afegir a un àlbum compartit", "add_to_shared_album": "Afegir a un àlbum compartit",
"add_url": "Afegir URL", "add_url": "Afegir URL",
"added_to_archive": "Afegit als arxivats", "added_to_archive": "Afegit als arxivats",
@@ -44,6 +48,13 @@
"backup_database": "Fer un bolcat de la base de dades", "backup_database": "Fer un bolcat de la base de dades",
"backup_database_enable_description": "Habilitar bolcat de la base de dades", "backup_database_enable_description": "Habilitar bolcat de la base de dades",
"backup_keep_last_amount": "Quantitat de bolcats anteriors per conservar", "backup_keep_last_amount": "Quantitat de bolcats anteriors per conservar",
"backup_onboarding_1_description": "còpia externa al núvol o en una altra ubicació física.",
"backup_onboarding_2_description": "còpies locals en diferents dispositius. Això inclou els fitxers principals i una còpia de seguretat d'aquests fitxers localment.",
"backup_onboarding_3_description": "còpies totals de les vostres dades, inclosos els fitxers originals. Això inclou 1 còpia externa i 2 còpies locals.",
"backup_onboarding_description": "Es recomana una <backblaze-link>estratègia de còpia de seguretat 3-2-1</backblaze-link> per protegir les vostres dades. Hauríeu de conservar còpies de les vostres fotos/vídeos penjats, així com de la base de dades Immich per obtenir una solució de còpia de seguretat completa.",
"backup_onboarding_footer": "Per obtenir més informació sobre com fer còpies de seguretat d'Immich, consulteu la <link>documentation</link>.",
"backup_onboarding_parts_title": "Una còpia de seguretat 3-2-1 inclou:",
"backup_onboarding_title": "Còpies de seguretat",
"backup_settings": "Configuració dels bolcats", "backup_settings": "Configuració dels bolcats",
"backup_settings_description": "Gestionar la configuració de bolcats de la base de dades. Nota: els treballs no es monitoritzen ni es notifiquen els errors.", "backup_settings_description": "Gestionar la configuració de bolcats de la base de dades. Nota: els treballs no es monitoritzen ni es notifiquen els errors.",
"cleared_jobs": "Tasques esborrades per a: {job}", "cleared_jobs": "Tasques esborrades per a: {job}",
@@ -166,10 +177,20 @@
"metadata_settings_description": "Administrar la configuració de les metadades", "metadata_settings_description": "Administrar la configuració de les metadades",
"migration_job": "Migració", "migration_job": "Migració",
"migration_job_description": "Migra les miniatures d'elements i cares cap a la nova estructura de carpetes", "migration_job_description": "Migra les miniatures d'elements i cares cap a la nova estructura de carpetes",
"nightly_tasks_cluster_faces_setting_description": "Executar el reconeixement facial en cares recentment detectades",
"nightly_tasks_cluster_new_faces_setting": "Agrupa cares noves", "nightly_tasks_cluster_new_faces_setting": "Agrupa cares noves",
"nightly_tasks_database_cleanup_setting": "Tasques de neteja de la base de dades", "nightly_tasks_database_cleanup_setting": "Tasques de neteja de la base de dades",
"nightly_tasks_database_cleanup_setting_description": "Netegeu les dades antigues i caducades de la base de dades", "nightly_tasks_database_cleanup_setting_description": "Netegeu les dades antigues i caducades de la base de dades",
"nightly_tasks_generate_memories_setting": "Generar memòries",
"nightly_tasks_generate_memories_setting_description": "Crear nous records a partir de les fotos penjades",
"nightly_tasks_missing_thumbnails_setting": "Generar les miniatures restants", "nightly_tasks_missing_thumbnails_setting": "Generar les miniatures restants",
"nightly_tasks_missing_thumbnails_setting_description": "Posar en cua les fotos penjades sense miniatures per a la generació de la seva miniatura",
"nightly_tasks_settings": "Configuració de les tasques nocturnes",
"nightly_tasks_settings_description": "Gestionar les tasques nocturnes",
"nightly_tasks_start_time_setting": "Hora d'inici",
"nightly_tasks_start_time_setting_description": "Hora en què el servidor comença a executar les tasques nocturnes",
"nightly_tasks_sync_quota_usage_setting": "Sincronitzar l'ús de la quota",
"nightly_tasks_sync_quota_usage_setting_description": "Actualitzar la quota d'emmagatzematge de l'usuari segons l'ús actual",
"no_paths_added": "No s'ha afegit cap ruta", "no_paths_added": "No s'ha afegit cap ruta",
"no_pattern_added": "Cap patró aplicat", "no_pattern_added": "Cap patró aplicat",
"note_apply_storage_label_previous_assets": "Nota: Per aplicar l'etiquetatge d'emmagatzematge a elements pujats prèviament, executeu la", "note_apply_storage_label_previous_assets": "Nota: Per aplicar l'etiquetatge d'emmagatzematge a elements pujats prèviament, executeu la",
@@ -337,6 +358,9 @@
"trash_number_of_days_description": "Nombre de dies per mantenir els recursos a la paperera abans de suprimir-los permanentment", "trash_number_of_days_description": "Nombre de dies per mantenir els recursos a la paperera abans de suprimir-los permanentment",
"trash_settings": "Configuració de la paperera", "trash_settings": "Configuració de la paperera",
"trash_settings_description": "Gestiona la configuració de la paperera", "trash_settings_description": "Gestiona la configuració de la paperera",
"unlink_all_oauth_accounts": "Desvincula tots els comptes d'OAuth",
"unlink_all_oauth_accounts_description": "Recorda desvincular tots els comptes d'OAuth abans de migrar a un proveïdor nou.",
"unlink_all_oauth_accounts_prompt": "Estàs segur que vols desvincular tots els comptes d'OAuth? Això restablirà l'identificador d'OAuth per a cada usuari i no es pot tornar enrere.",
"user_cleanup_job": "Neteja d'usuari", "user_cleanup_job": "Neteja d'usuari",
"user_delete_delay": "El compte i els recursos de <b>{user}</b> es programaran per a la supressió permanent en {delay, plural, one {# dia} other {# dies}}.", "user_delete_delay": "El compte i els recursos de <b>{user}</b> es programaran per a la supressió permanent en {delay, plural, one {# dia} other {# dies}}.",
"user_delete_delay_settings": "Retard de la supressió", "user_delete_delay_settings": "Retard de la supressió",
@@ -363,6 +387,8 @@
"admin_password": "Contrasenya de l'administrador", "admin_password": "Contrasenya de l'administrador",
"administration": "Administració", "administration": "Administració",
"advanced": "Avançat", "advanced": "Avançat",
"advanced_settings_beta_timeline_subtitle": "Prova la nova experiència de l'aplicació",
"advanced_settings_beta_timeline_title": "Cronologia beta",
"advanced_settings_enable_alternate_media_filter_subtitle": "Feu servir aquesta opció per filtrar els continguts multimèdia durant la sincronització segons criteris alternatius. Només proveu-ho si teniu problemes amb l'aplicació per detectar tots els àlbums.", "advanced_settings_enable_alternate_media_filter_subtitle": "Feu servir aquesta opció per filtrar els continguts multimèdia durant la sincronització segons criteris alternatius. Només proveu-ho si teniu problemes amb l'aplicació per detectar tots els àlbums.",
"advanced_settings_enable_alternate_media_filter_title": "Utilitza el filtre de sincronització d'àlbums de dispositius alternatius", "advanced_settings_enable_alternate_media_filter_title": "Utilitza el filtre de sincronització d'àlbums de dispositius alternatius",
"advanced_settings_log_level_title": "Nivell de registre: {level}", "advanced_settings_log_level_title": "Nivell de registre: {level}",
@@ -370,6 +396,8 @@
"advanced_settings_prefer_remote_title": "Prefereix imatges remotes", "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_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_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_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_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", "advanced_settings_sync_remote_deletions_subtitle": "Suprimeix o restaura automàticament un actiu en aquest dispositiu quan es realitzi aquesta acció al web",
@@ -385,6 +413,7 @@
"album_cover_updated": "Portada de l'àlbum actualitzada", "album_cover_updated": "Portada de l'àlbum actualitzada",
"album_delete_confirmation": "Esteu segur que voleu suprimir l'àlbum {album}?", "album_delete_confirmation": "Esteu segur que voleu suprimir l'àlbum {album}?",
"album_delete_confirmation_description": "Si aquest àlbum es comparteix, els altres usuaris ja no podran accedir-hi.", "album_delete_confirmation_description": "Si aquest àlbum es comparteix, els altres usuaris ja no podran accedir-hi.",
"album_deleted": "S'ha suprimit l'àlbum",
"album_info_card_backup_album_excluded": "Exclosos", "album_info_card_backup_album_excluded": "Exclosos",
"album_info_card_backup_album_included": "Inclosos", "album_info_card_backup_album_included": "Inclosos",
"album_info_updated": "Informació de l'àlbum actualitzada", "album_info_updated": "Informació de l'àlbum actualitzada",
@@ -394,6 +423,7 @@
"album_options": "Opcions de l'àlbum", "album_options": "Opcions de l'àlbum",
"album_remove_user": "Eliminar l'usuari?", "album_remove_user": "Eliminar l'usuari?",
"album_remove_user_confirmation": "Esteu segurs que voleu eliminar {user}?", "album_remove_user_confirmation": "Esteu segurs que voleu eliminar {user}?",
"album_search_not_found": "No s'ha trobat cap àlbum que coincideixi amb la teva cerca",
"album_share_no_users": "Sembla que has compartit aquest àlbum amb tots els usuaris o no tens cap usuari amb qui compartir-ho.", "album_share_no_users": "Sembla que has compartit aquest àlbum amb tots els usuaris o no tens cap usuari amb qui compartir-ho.",
"album_updated": "Àlbum actualitzat", "album_updated": "Àlbum actualitzat",
"album_updated_setting_description": "Rep una notificació per correu electrònic quan un àlbum compartit tingui recursos nous", "album_updated_setting_description": "Rep una notificació per correu electrònic quan un àlbum compartit tingui recursos nous",
@@ -413,6 +443,7 @@
"albums_default_sort_order": "Ordre per defecte de l'àlbum", "albums_default_sort_order": "Ordre per defecte de l'àlbum",
"albums_default_sort_order_description": "Ordre de classificació inicial dels recursos al crear àlbums nous.", "albums_default_sort_order_description": "Ordre de classificació inicial dels recursos al crear àlbums nous.",
"albums_feature_description": "Col·leccions d'actius que es poden compartir amb altres usuaris.", "albums_feature_description": "Col·leccions d'actius que es poden compartir amb altres usuaris.",
"albums_on_device_count": "Àlbums al dispositiu ({count})",
"all": "Tots", "all": "Tots",
"all_albums": "Tots els àlbum", "all_albums": "Tots els àlbum",
"all_people": "Tota la gent", "all_people": "Tota la gent",
@@ -432,6 +463,7 @@
"app_bar_signout_dialog_title": "Tanca la sessió", "app_bar_signout_dialog_title": "Tanca la sessió",
"app_settings": "Configuració de l'app", "app_settings": "Configuració de l'app",
"appears_in": "Apareix a", "appears_in": "Apareix a",
"apply_count": "Aplicar ({count, number})",
"archive": "Arxiu", "archive": "Arxiu",
"archive_action_prompt": "{count} afegit a Arxiu", "archive_action_prompt": "{count} afegit a Arxiu",
"archive_or_unarchive_photo": "Arxivar o desarxivar fotografia", "archive_or_unarchive_photo": "Arxivar o desarxivar fotografia",
@@ -471,7 +503,9 @@
"assets": "Elements", "assets": "Elements",
"assets_added_count": "{count, plural, one {Afegit un element} other {Afegits # elements}}", "assets_added_count": "{count, plural, one {Afegit un element} other {Afegits # elements}}",
"assets_added_to_album_count": "{count, plural, one {Afegit un element} other {Afegits # elements}} a l'àlbum", "assets_added_to_album_count": "{count, plural, one {Afegit un element} other {Afegits # elements}} a l'àlbum",
"assets_added_to_albums_count": "Afegits {assetTotal, plural, one {# recurs} other {# recursos}} a {albumTotal, plural, one {# album} other {# albums}}",
"assets_cannot_be_added_to_album_count": "{count, plural, one {Asset} other {Assets}} no es pot afegir a l'àlbum", "assets_cannot_be_added_to_album_count": "{count, plural, one {Asset} other {Assets}} no es pot afegir a l'àlbum",
"assets_cannot_be_added_to_albums": "{count, plural, one {El recurs} other {Els recursos}} no poden ser afegits a cap dels àlbums",
"assets_count": "{count, plural, one {# recurs} other {# recursos}}", "assets_count": "{count, plural, one {# recurs} other {# recursos}}",
"assets_deleted_permanently": "{count} element(s) esborrats permanentment", "assets_deleted_permanently": "{count} element(s) esborrats permanentment",
"assets_deleted_permanently_from_server": "{count} element(s) esborrats permanentment del servidor d'Immich", "assets_deleted_permanently_from_server": "{count} element(s) esborrats permanentment del servidor d'Immich",
@@ -488,6 +522,7 @@
"assets_trashed_count": "{count, plural, one {# element enviat} other {# elements enviats}} a la paperera", "assets_trashed_count": "{count, plural, one {# element enviat} other {# elements enviats}} a la paperera",
"assets_trashed_from_server": "{count} element(s) enviat a la paperera del servidor d'Immich", "assets_trashed_from_server": "{count} element(s) enviat a la paperera del servidor d'Immich",
"assets_were_part_of_album_count": "{count, plural, one {L'element ja és} other {Els elements ja són}} part de l'àlbum", "assets_were_part_of_album_count": "{count, plural, one {L'element ja és} other {Els elements ja són}} part de l'àlbum",
"assets_were_part_of_albums_count": "{count, plural, one {El recurs ja formava} other {Els recursos ja formaven}} part dels àlbums",
"authorized_devices": "Dispositius autoritzats", "authorized_devices": "Dispositius autoritzats",
"automatic_endpoint_switching_subtitle": "Connecteu-vos localment a través de la Wi-Fi designada quan estigui disponible i utilitzeu connexions alternatives en altres llocs", "automatic_endpoint_switching_subtitle": "Connecteu-vos localment a través de la Wi-Fi designada quan estigui disponible i utilitzeu connexions alternatives en altres llocs",
"automatic_endpoint_switching_title": "Canvi automàtic d'URL", "automatic_endpoint_switching_title": "Canvi automàtic d'URL",
@@ -557,9 +592,13 @@
"backup_manual_in_progress": "La pujada ja està en curs. Torneu-ho a provar més tard", "backup_manual_in_progress": "La pujada ja està en curs. Torneu-ho a provar més tard",
"backup_manual_success": "Èxit", "backup_manual_success": "Èxit",
"backup_manual_title": "Estat de pujada", "backup_manual_title": "Estat de pujada",
"backup_options": "Opcions de Còpia de Seguretat",
"backup_options_page_title": "Opcions de còpia de seguretat", "backup_options_page_title": "Opcions de còpia de seguretat",
"backup_setting_subtitle": "Gestiona la configuració de càrrega en segon pla i en primer pla", "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", "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_auth_enabled": "Autentificació biomètrica activada",
"biometric_locked_out": "Esteu bloquejats fora de l'autenticació biomètrica", "biometric_locked_out": "Esteu bloquejats fora de l'autenticació biomètrica",
"biometric_no_options": "No hi ha opcions biomètriques disponibles", "biometric_no_options": "No hi ha opcions biomètriques disponibles",
@@ -577,7 +616,7 @@
"cache_settings_clear_cache_button": "Neteja la memòria cau", "cache_settings_clear_cache_button": "Neteja la memòria cau",
"cache_settings_clear_cache_button_title": "Neteja la memòria cau de l'aplicació. Això impactarà significativament el rendiment fins que la memòria cau es torni a reconstruir.", "cache_settings_clear_cache_button_title": "Neteja la memòria cau de l'aplicació. Això impactarà significativament el rendiment fins que la memòria cau es torni a reconstruir.",
"cache_settings_duplicated_assets_clear_button": "NETEJA", "cache_settings_duplicated_assets_clear_button": "NETEJA",
"cache_settings_duplicated_assets_subtitle": "Fotos i vídeos que estan a la llista negra de l'aplicació", "cache_settings_duplicated_assets_subtitle": "Fotos i vídeos que estan a la llista ignorada de l'aplicació",
"cache_settings_duplicated_assets_title": "Elements duplicats ({count})", "cache_settings_duplicated_assets_title": "Elements duplicats ({count})",
"cache_settings_statistics_album": "Miniatures de la biblioteca", "cache_settings_statistics_album": "Miniatures de la biblioteca",
"cache_settings_statistics_full": "Imatges completes", "cache_settings_statistics_full": "Imatges completes",
@@ -594,6 +633,7 @@
"cancel": "Cancel·la", "cancel": "Cancel·la",
"cancel_search": "Cancel·la la cerca", "cancel_search": "Cancel·la la cerca",
"canceled": "Cancel·lat", "canceled": "Cancel·lat",
"canceling": "Cancel·lant",
"cannot_merge_people": "No es pot fusionar gent", "cannot_merge_people": "No es pot fusionar gent",
"cannot_undo_this_action": "Aquesta acció no es pot desfer!", "cannot_undo_this_action": "Aquesta acció no es pot desfer!",
"cannot_update_the_description": "No es pot actualitzar la descripció", "cannot_update_the_description": "No es pot actualitzar la descripció",
@@ -625,6 +665,7 @@
"clear": "Buida", "clear": "Buida",
"clear_all": "Neteja-ho tot", "clear_all": "Neteja-ho tot",
"clear_all_recent_searches": "Esborra totes les cerques recents", "clear_all_recent_searches": "Esborra totes les cerques recents",
"clear_file_cache": "Buida la memòria cau de fitxers",
"clear_message": "Neteja el missatge", "clear_message": "Neteja el missatge",
"clear_value": "Neteja el valor", "clear_value": "Neteja el valor",
"client_cert_dialog_msg_confirm": "OK", "client_cert_dialog_msg_confirm": "OK",
@@ -695,6 +736,7 @@
"create_new_user": "Crea un usuari nou", "create_new_user": "Crea un usuari nou",
"create_shared_album_page_share_add_assets": "AFEGEIX ELEMENTS", "create_shared_album_page_share_add_assets": "AFEGEIX ELEMENTS",
"create_shared_album_page_share_select_photos": "Escull fotografies", "create_shared_album_page_share_select_photos": "Escull fotografies",
"create_shared_link": "Crea un enllaç compartit",
"create_tag": "Crear etiqueta", "create_tag": "Crear etiqueta",
"create_tag_description": "Crear una nova etiqueta. Per les etiquetes aniuades, escriu la ruta comperta de l'etiqueta, incloses les barres diagonals.", "create_tag_description": "Crear una nova etiqueta. Per les etiquetes aniuades, escriu la ruta comperta de l'etiqueta, incloses les barres diagonals.",
"create_user": "Crea un usuari", "create_user": "Crea un usuari",
@@ -707,6 +749,7 @@
"current_server_address": "Adreça actual del servidor", "current_server_address": "Adreça actual del servidor",
"custom_locale": "Localització personalitzada", "custom_locale": "Localització personalitzada",
"custom_locale_description": "Format de dates i números segons la llengua i regió", "custom_locale_description": "Format de dates i números segons la llengua i regió",
"custom_url": "URL personalitzada",
"daily_title_text_date": "E, dd MMM", "daily_title_text_date": "E, dd MMM",
"daily_title_text_date_year": "E, dd MMM, yyyy", "daily_title_text_date_year": "E, dd MMM, yyyy",
"dark": "Fosc", "dark": "Fosc",
@@ -718,6 +761,7 @@
"date_of_birth_saved": "Data de naixement guardada amb èxit", "date_of_birth_saved": "Data de naixement guardada amb èxit",
"date_range": "Interval de dates", "date_range": "Interval de dates",
"day": "Dia", "day": "Dia",
"days": "Dies",
"deduplicate_all": "Desduplica-ho tot", "deduplicate_all": "Desduplica-ho tot",
"deduplication_criteria_1": "Mida d'imatge en bytes", "deduplication_criteria_1": "Mida d'imatge en bytes",
"deduplication_criteria_2": "Quantitat de dades EXIF", "deduplication_criteria_2": "Quantitat de dades EXIF",
@@ -726,7 +770,8 @@
"default_locale": "Localització predeterminada", "default_locale": "Localització predeterminada",
"default_locale_description": "Format de dates i números segons la configuració del navegador", "default_locale_description": "Format de dates i números segons la configuració del navegador",
"delete": "Esborra", "delete": "Esborra",
"delete_action_prompt": "{count} eliminats permanentment", "delete_action_confirmation_message": "Segur que vols eliminar aquest recurs? Aquesta acció el mourà a la paperera del servidor, i et preguntarà si el vols eliminar localment",
"delete_action_prompt": "{count} eliminats",
"delete_album": "Esborra l'àlbum", "delete_album": "Esborra l'àlbum",
"delete_api_key_prompt": "Esteu segurs que voleu eliminar aquesta clau API?", "delete_api_key_prompt": "Esteu segurs que voleu eliminar aquesta clau API?",
"delete_dialog_alert": "Aquests elements seran eliminats de manera permanent d'Immich i del vostre dispositiu", "delete_dialog_alert": "Aquests elements seran eliminats de manera permanent d'Immich i del vostre dispositiu",
@@ -740,9 +785,12 @@
"delete_key": "Suprimeix la clau", "delete_key": "Suprimeix la clau",
"delete_library": "Suprimeix la Llibreria", "delete_library": "Suprimeix la Llibreria",
"delete_link": "Esborra l'enllaç", "delete_link": "Esborra l'enllaç",
"delete_local_action_prompt": "{count} eliminats localment",
"delete_local_dialog_ok_backed_up_only": "Esborrar només les que tinguin còpia de seguretat", "delete_local_dialog_ok_backed_up_only": "Esborrar només les que tinguin còpia de seguretat",
"delete_local_dialog_ok_force": "Suprimeix de totes maneres", "delete_local_dialog_ok_force": "Suprimeix de totes maneres",
"delete_others": "Suprimeix altres", "delete_others": "Suprimeix altres",
"delete_permanently": "Eliminar permanentment",
"delete_permanently_action_prompt": "{count} eliminats permanentment",
"delete_shared_link": "Odstranit sdílený odkaz", "delete_shared_link": "Odstranit sdílený odkaz",
"delete_shared_link_dialog_title": "Suprimeix l'enllaç compartit", "delete_shared_link_dialog_title": "Suprimeix l'enllaç compartit",
"delete_tag": "Eliminar etiqueta", "delete_tag": "Eliminar etiqueta",
@@ -753,6 +801,7 @@
"description": "Descripció", "description": "Descripció",
"description_input_hint_text": "Afegeix descripció...", "description_input_hint_text": "Afegeix descripció...",
"description_input_submit_error": "S'ha produït un error en actualitzar la descripció, comproveu el registre per a més detalls", "description_input_submit_error": "S'ha produït un error en actualitzar la descripció, comproveu el registre per a més detalls",
"deselect_all": "Deseleccionar Tots",
"details": "Detalls", "details": "Detalls",
"direction": "Direcció", "direction": "Direcció",
"disabled": "Desactivat", "disabled": "Desactivat",
@@ -770,6 +819,7 @@
"documentation": "Documentació", "documentation": "Documentació",
"done": "Fet", "done": "Fet",
"download": "Descarregar", "download": "Descarregar",
"download_action_prompt": "Baixant {count} recursos",
"download_canceled": "Descàrrega cancel·lada", "download_canceled": "Descàrrega cancel·lada",
"download_complete": "Descàrrega completada", "download_complete": "Descàrrega completada",
"download_enqueue": "Descàrrega en cua", "download_enqueue": "Descàrrega en cua",
@@ -796,8 +846,12 @@
"edit": "Editar", "edit": "Editar",
"edit_album": "Edita l'àlbum", "edit_album": "Edita l'àlbum",
"edit_avatar": "Edita l'avatar", "edit_avatar": "Edita l'avatar",
"edit_birthday": "Editar aniversari",
"edit_date": "Edita la data", "edit_date": "Edita la data",
"edit_date_and_time": "Edita data i hora", "edit_date_and_time": "Edita data i hora",
"edit_date_and_time_action_prompt": "{count} dates i hores editades",
"edit_date_and_time_by_offset": "Canviar data mitjançant diferència",
"edit_date_and_time_by_offset_interval": "Nou rang de dates: {from}-{to}",
"edit_description": "Edita la descripció", "edit_description": "Edita la descripció",
"edit_description_prompt": "Si us plau, selecciona una nova descripció:", "edit_description_prompt": "Si us plau, selecciona una nova descripció:",
"edit_exclusion_pattern": "Edita patró d'exclusió", "edit_exclusion_pattern": "Edita patró d'exclusió",
@@ -826,6 +880,7 @@
"empty_trash": "Buidar la paperera", "empty_trash": "Buidar la paperera",
"empty_trash_confirmation": "Esteu segur que voleu buidar la paperera? Això eliminarà tots els recursos a la paperera permanentment d'Immich.\nNo podeu desfer aquesta acció!", "empty_trash_confirmation": "Esteu segur que voleu buidar la paperera? Això eliminarà tots els recursos a la paperera permanentment d'Immich.\nNo podeu desfer aquesta acció!",
"enable": "Activar", "enable": "Activar",
"enable_backup": "Habilitar Còpia de Seguretat",
"enable_biometric_auth_description": "Introduïu el codi PIN per a habilitar l'autenticació biomètrica", "enable_biometric_auth_description": "Introduïu el codi PIN per a habilitar l'autenticació biomètrica",
"enabled": "Activat", "enabled": "Activat",
"end_date": "Data final", "end_date": "Data final",
@@ -869,6 +924,7 @@
"failed_to_load_notifications": "Error en carregar les notificacions", "failed_to_load_notifications": "Error en carregar les notificacions",
"failed_to_load_people": "No s'han pogut carregar les persones", "failed_to_load_people": "No s'han pogut carregar les persones",
"failed_to_remove_product_key": "No s'ha pogut eliminar la clau del producte", "failed_to_remove_product_key": "No s'ha pogut eliminar la clau del producte",
"failed_to_reset_pin_code": "No s'ha pogut reiniciar el codi PIN",
"failed_to_stack_assets": "No s'han pogut apilar els elements", "failed_to_stack_assets": "No s'han pogut apilar els elements",
"failed_to_unstack_assets": "No s'han pogut desapilar els elements", "failed_to_unstack_assets": "No s'han pogut desapilar els elements",
"failed_to_update_notification_status": "Error en actualitzar l'estat de les notificacions", "failed_to_update_notification_status": "Error en actualitzar l'estat de les notificacions",
@@ -877,6 +933,7 @@
"paths_validation_failed": "{paths, plural, one {# ruta} other {# rutes}} no ha pogut validar", "paths_validation_failed": "{paths, plural, one {# ruta} other {# rutes}} no ha pogut validar",
"profile_picture_transparent_pixels": "Les fotos de perfil no poden tenir píxels transparents. Per favor, feu zoom in, mogueu la imatge o ambdues.", "profile_picture_transparent_pixels": "Les fotos de perfil no poden tenir píxels transparents. Per favor, feu zoom in, mogueu la imatge o ambdues.",
"quota_higher_than_disk_size": "Heu establert una quota més gran que la mida de disc", "quota_higher_than_disk_size": "Heu establert una quota més gran que la mida de disc",
"something_went_wrong": "Alguna cosa ha anat malament",
"unable_to_add_album_users": "No es poden afegir usuaris a l'àlbum", "unable_to_add_album_users": "No es poden afegir usuaris a l'àlbum",
"unable_to_add_assets_to_shared_link": "No s'han pogut afegir els elements a l'enllaç compartit", "unable_to_add_assets_to_shared_link": "No s'han pogut afegir els elements a l'enllaç compartit",
"unable_to_add_comment": "No es pot afegir el comentari", "unable_to_add_comment": "No es pot afegir el comentari",
@@ -962,13 +1019,11 @@
}, },
"exif": "EXIF", "exif": "EXIF",
"exif_bottom_sheet_description": "Afegeix descripció...", "exif_bottom_sheet_description": "Afegeix descripció...",
"exif_bottom_sheet_description_error": "No s'ha pogut actualitzar la descripció",
"exif_bottom_sheet_details": "DETALLS", "exif_bottom_sheet_details": "DETALLS",
"exif_bottom_sheet_location": "UBICACIÓ", "exif_bottom_sheet_location": "UBICACIÓ",
"exif_bottom_sheet_people": "PERSONES", "exif_bottom_sheet_people": "PERSONES",
"exif_bottom_sheet_person_add_person": "Afegir nom", "exif_bottom_sheet_person_add_person": "Afegir nom",
"exif_bottom_sheet_person_age_months": "Edat {months} mesos",
"exif_bottom_sheet_person_age_year_months": "Edat 1 any, {months} mesos",
"exif_bottom_sheet_person_age_years": "Edat {years}",
"exit_slideshow": "Surt de la presentació de diapositives", "exit_slideshow": "Surt de la presentació de diapositives",
"expand_all": "Ampliar-ho tot", "expand_all": "Ampliar-ho tot",
"experimental_settings_new_asset_list_subtitle": "Treball en curs", "experimental_settings_new_asset_list_subtitle": "Treball en curs",
@@ -982,6 +1037,8 @@
"explorer": "Explorador", "explorer": "Explorador",
"export": "Exporta", "export": "Exporta",
"export_as_json": "Exportar com a JSON", "export_as_json": "Exportar com a JSON",
"export_database": "Exportar base de dades",
"export_database_description": "Exportar la base de dades SQLite",
"extension": "Extensió", "extension": "Extensió",
"external": "Extern", "external": "Extern",
"external_libraries": "Llibreries externes", "external_libraries": "Llibreries externes",
@@ -1008,21 +1065,29 @@
"filter_people": "Filtra persones", "filter_people": "Filtra persones",
"filter_places": "Filtrar per llocs", "filter_places": "Filtrar per llocs",
"find_them_fast": "Trobeu-los ràpidament pel nom amb la cerca", "find_them_fast": "Trobeu-los ràpidament pel nom amb la cerca",
"first": "Primer",
"fix_incorrect_match": "Corregiu la coincidència incorrecta", "fix_incorrect_match": "Corregiu la coincidència incorrecta",
"folder": "Carpeta", "folder": "Carpeta",
"folder_not_found": "Carpeta no trobada", "folder_not_found": "Carpeta no trobada",
"folders": "Carpetes", "folders": "Carpetes",
"folders_feature_description": "Explorar la vista de carpetes per les fotos i vídeos del sistema d'arxius", "folders_feature_description": "Explorar la vista de carpetes per les fotos i vídeos del sistema d'arxius",
"forgot_pin_code_question": "Has oblidat el teu PIN?",
"forward": "Endavant", "forward": "Endavant",
"gcast_enabled": "Google Cast", "gcast_enabled": "Google Cast",
"gcast_enabled_description": "Aquesta funció carrega recursos externs de Google per funcionar.", "gcast_enabled_description": "Aquesta funció carrega recursos externs de Google per funcionar.",
"general": "General", "general": "General",
"geolocation_instruction_all_have_location": "Tots els actius d'aquesta data ja tenen dades d'ubicació. Prova de mostrar tots els actius o selecciona una data diferent",
"geolocation_instruction_location": "Fes click en un element amb coordinades GPS per utilitzar la seva ubicació o selecciona una ubicació des del mapa",
"geolocation_instruction_no_date": "Seleccioneu una data per gestionar dades d'ubicació per a fotos i vídeos d'aquest dia",
"geolocation_instruction_no_photos": "Cap foto o vídeo trobats per a aquesta data. Selecciona una data diferent",
"get_help": "Aconseguir ajuda", "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", "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", "getting_started": "Començant",
"go_back": "Torna", "go_back": "Torna",
"go_to_folder": "Anar al directori", "go_to_folder": "Anar al directori",
"go_to_search": "Vés a cercar", "go_to_search": "Vés a cercar",
"gps": "GPS",
"gps_missing": "Sense GPS",
"grant_permission": "Concedir permís", "grant_permission": "Concedir permís",
"group_albums_by": "Agrupa àlbums per...", "group_albums_by": "Agrupa àlbums per...",
"group_country": "Agrupar per país", "group_country": "Agrupar per país",
@@ -1033,6 +1098,9 @@
"haptic_feedback_switch": "Activa la resposta hàptica", "haptic_feedback_switch": "Activa la resposta hàptica",
"haptic_feedback_title": "Resposta Hàptica", "haptic_feedback_title": "Resposta Hàptica",
"has_quota": "Quota", "has_quota": "Quota",
"hash_asset": "Hash del recurs",
"hashed_assets": "Recursos amb hash",
"hashing": "Hashing",
"header_settings_add_header_tip": "Afegeix Capçalera", "header_settings_add_header_tip": "Afegeix Capçalera",
"header_settings_field_validator_msg": "El valor no pot estar buit", "header_settings_field_validator_msg": "El valor no pot estar buit",
"header_settings_header_name_input": "Nom de la capçalera", "header_settings_header_name_input": "Nom de la capçalera",
@@ -1064,7 +1132,9 @@
"home_page_upload_err_limit": "Només es poden pujar un màxim de 30 elements alhora, ometent", "home_page_upload_err_limit": "Només es poden pujar un màxim de 30 elements alhora, ometent",
"host": "Amfitrió", "host": "Amfitrió",
"hour": "Hora", "hour": "Hora",
"hours": "Hores",
"id": "ID", "id": "ID",
"idle": "En espera",
"ignore_icloud_photos": "Ignora fotos d'iCloud", "ignore_icloud_photos": "Ignora fotos d'iCloud",
"ignore_icloud_photos_description": "Les fotos emmagatzemades a iCloud no es penjaran al servidor Immich", "ignore_icloud_photos_description": "Les fotos emmagatzemades a iCloud no es penjaran al servidor Immich",
"image": "Imatge", "image": "Imatge",
@@ -1122,10 +1192,13 @@
"language_no_results_title": "No s'han trobat idiomes", "language_no_results_title": "No s'han trobat idiomes",
"language_search_hint": "Cerca idiomes...", "language_search_hint": "Cerca idiomes...",
"language_setting_description": "Seleccioneu el vostre idioma", "language_setting_description": "Seleccioneu el vostre idioma",
"large_files": "Fitxers Grans",
"last": "Últim",
"last_seen": "Vist per últim cop", "last_seen": "Vist per últim cop",
"latest_version": "Última versió", "latest_version": "Última versió",
"latitude": "Latitud", "latitude": "Latitud",
"leave": "Marxar", "leave": "Marxar",
"leave_album": "Abandonar àlbum",
"lens_model": "Model de lents", "lens_model": "Model de lents",
"let_others_respond": "Deixa que els altres responguin", "let_others_respond": "Deixa que els altres responguin",
"level": "Nivell", "level": "Nivell",
@@ -1137,7 +1210,9 @@
"library_page_sort_created": "Creat més recentment", "library_page_sort_created": "Creat més recentment",
"library_page_sort_last_modified": "Darrera modificació", "library_page_sort_last_modified": "Darrera modificació",
"library_page_sort_title": "Títol de l'àlbum", "library_page_sort_title": "Títol de l'àlbum",
"licenses": "Llicències",
"light": "Llum", "light": "Llum",
"like": "M'agrada",
"like_deleted": "M'agrada suprimit", "like_deleted": "M'agrada suprimit",
"link_motion_video": "Enllaçar vídeo en moviment", "link_motion_video": "Enllaçar vídeo en moviment",
"link_to_oauth": "Enllaç a OAuth", "link_to_oauth": "Enllaç a OAuth",
@@ -1145,7 +1220,9 @@
"list": "Llista", "list": "Llista",
"loading": "Carregant", "loading": "Carregant",
"loading_search_results_failed": "No s'han pogut carregar els resultats de la cerca", "loading_search_results_failed": "No s'han pogut carregar els resultats de la cerca",
"local": "Local",
"local_asset_cast_failed": "No es pot convertir un actiu que no s'ha penjat al servidor", "local_asset_cast_failed": "No es pot convertir un actiu que no s'ha penjat al servidor",
"local_assets": "Recursos Locals",
"local_network": "Xarxa local", "local_network": "Xarxa local",
"local_network_sheet_info": "L'aplicació es connectarà al servidor mitjançant aquest URL quan utilitzeu la xarxa Wi-Fi especificada", "local_network_sheet_info": "L'aplicació es connectarà al servidor mitjançant aquest URL quan utilitzeu la xarxa Wi-Fi especificada",
"location_permission": "Permís d'ubicació", "location_permission": "Permís d'ubicació",
@@ -1168,7 +1245,7 @@
"login_form_back_button_text": "Enrere", "login_form_back_button_text": "Enrere",
"login_form_email_hint": "elteu@correu.cat", "login_form_email_hint": "elteu@correu.cat",
"login_form_endpoint_hint": "http://ip-del-servidor:port", "login_form_endpoint_hint": "http://ip-del-servidor:port",
"login_form_endpoint_url": "URL del servidor", "login_form_endpoint_url": "URL del punt final del servidor",
"login_form_err_http": "Especifica http:// o https://", "login_form_err_http": "Especifica http:// o https://",
"login_form_err_invalid_email": "Adreça de correu electrònic no vàlida", "login_form_err_invalid_email": "Adreça de correu electrònic no vàlida",
"login_form_err_invalid_url": "URL no vàlid", "login_form_err_invalid_url": "URL no vàlid",
@@ -1194,6 +1271,7 @@
"main_branch_warning": "Esteu utilitzant una versió en desenvolupament; Recomanem fer servir una versió publicada!", "main_branch_warning": "Esteu utilitzant una versió en desenvolupament; Recomanem fer servir una versió publicada!",
"main_menu": "Menú principal", "main_menu": "Menú principal",
"make": "Fabricant", "make": "Fabricant",
"manage_geolocation": "Gestioneu la vostra ubicació",
"manage_shared_links": "Administrar enllaços compartits", "manage_shared_links": "Administrar enllaços compartits",
"manage_sharing_with_partners": "Gestiona la compartició amb els companys", "manage_sharing_with_partners": "Gestiona la compartició amb els companys",
"manage_the_app_settings": "Gestioneu la configuració de l'aplicació", "manage_the_app_settings": "Gestioneu la configuració de l'aplicació",
@@ -1202,7 +1280,7 @@
"manage_your_devices": "Gestioneu els vostres dispositius connectats", "manage_your_devices": "Gestioneu els vostres dispositius connectats",
"manage_your_oauth_connection": "Gestioneu la vostra connexió OAuth", "manage_your_oauth_connection": "Gestioneu la vostra connexió OAuth",
"map": "Mapa", "map": "Mapa",
"map_assets_in_bounds": "{count} fotos", "map_assets_in_bounds": "{count, plural, =0 {No hi ha fotos en aquesta àrea} one {# foto} other {# fotos}}",
"map_cannot_get_user_location": "No es pot obtenir la ubicació de l'usuari", "map_cannot_get_user_location": "No es pot obtenir la ubicació de l'usuari",
"map_location_dialog_yes": "Sí", "map_location_dialog_yes": "Sí",
"map_location_picker_page_use_location": "Utilitzar aquesta ubicació", "map_location_picker_page_use_location": "Utilitzar aquesta ubicació",
@@ -1210,7 +1288,6 @@
"map_location_service_disabled_title": "Servei de localització desactivat", "map_location_service_disabled_title": "Servei de localització desactivat",
"map_marker_for_images": "Marcador de mapa per a imatges fetes a {city}, {country}", "map_marker_for_images": "Marcador de mapa per a imatges fetes a {city}, {country}",
"map_marker_with_image": "Marcador de mapa amb imatge", "map_marker_with_image": "Marcador de mapa amb imatge",
"map_no_assets_in_bounds": "No hi ha fotos en aquesta zona",
"map_no_location_permission_content": "Es necessita el permís de localització per mostrar els elements de la teva ubicació actual. Vols permetre-ho ara?", "map_no_location_permission_content": "Es necessita el permís de localització per mostrar els elements de la teva ubicació actual. Vols permetre-ho ara?",
"map_no_location_permission_title": "Permís de localització denegat", "map_no_location_permission_title": "Permís de localització denegat",
"map_settings": "Paràmetres de mapa", "map_settings": "Paràmetres de mapa",
@@ -1247,6 +1324,7 @@
"merged_people_count": "Combinades {count, plural, one {# persona} other {# persones}}", "merged_people_count": "Combinades {count, plural, one {# persona} other {# persones}}",
"minimize": "Minimitza", "minimize": "Minimitza",
"minute": "Minut", "minute": "Minut",
"minutes": "Minuts",
"missing": "Restants", "missing": "Restants",
"model": "Model", "model": "Model",
"month": "Mes", "month": "Mes",
@@ -1266,6 +1344,9 @@
"my_albums": "Els meus àlbums", "my_albums": "Els meus àlbums",
"name": "Nom", "name": "Nom",
"name_or_nickname": "Nom o sobrenom", "name_or_nickname": "Nom o sobrenom",
"network_requirement_photos_upload": "Fes servir dades mòbils per a còpies de seguretat de fotos",
"network_requirement_videos_upload": "Fes servir dades mòbils per a còpies de seguretat de videos",
"network_requirements_updated": "Han canviat els requeriments de xarxa, reiniciant la cua",
"networking_settings": "Xarxes", "networking_settings": "Xarxes",
"networking_subtitle": "Gestiona la configuració del endpoint del servidor", "networking_subtitle": "Gestiona la configuració del endpoint del servidor",
"never": "Mai", "never": "Mai",
@@ -1301,6 +1382,7 @@
"no_results": "Sense resultats", "no_results": "Sense resultats",
"no_results_description": "Proveu un sinònim o una paraula clau més general", "no_results_description": "Proveu un sinònim o una paraula clau més general",
"no_shared_albums_message": "Creeu un àlbum per compartir fotos i vídeos amb persones a la vostra xarxa", "no_shared_albums_message": "Creeu un àlbum per compartir fotos i vídeos amb persones a la vostra xarxa",
"no_uploads_in_progress": "Cap pujada en progrés",
"not_in_any_album": "En cap àlbum", "not_in_any_album": "En cap àlbum",
"not_selected": "No seleccionat", "not_selected": "No seleccionat",
"note_apply_storage_label_to_previously_uploaded assets": "Nota: per aplicar l'etiqueta d'emmagatzematge als actius penjats anteriorment, executeu el", "note_apply_storage_label_to_previously_uploaded assets": "Nota: per aplicar l'etiqueta d'emmagatzematge als actius penjats anteriorment, executeu el",
@@ -1316,6 +1398,7 @@
"oauth": "OAuth", "oauth": "OAuth",
"official_immich_resources": "Recursos oficials d'Immich", "official_immich_resources": "Recursos oficials d'Immich",
"offline": "Fora de línia", "offline": "Fora de línia",
"offset": "Diferència",
"ok": "D'acord", "ok": "D'acord",
"oldest_first": "El més vell primer", "oldest_first": "El més vell primer",
"on_this_device": "En aquest dispositiu", "on_this_device": "En aquest dispositiu",
@@ -1338,6 +1421,7 @@
"original": "original", "original": "original",
"other": "Altres", "other": "Altres",
"other_devices": "Altres dispositius", "other_devices": "Altres dispositius",
"other_entities": "Altres entitats",
"other_variables": "Altres variables", "other_variables": "Altres variables",
"owned": "Propi", "owned": "Propi",
"owner": "Propietari", "owner": "Propietari",
@@ -1392,6 +1476,9 @@
"permission_onboarding_permission_limited": "Permís limitat. Per a permetre que Immich faci còpies de seguretat i gestioni tota la col·lecció de la galeria, concediu permisos de fotos i vídeos a Configuració.", "permission_onboarding_permission_limited": "Permís limitat. Per a permetre que Immich faci còpies de seguretat i gestioni tota la col·lecció de la galeria, concediu permisos de fotos i vídeos a Configuració.",
"permission_onboarding_request": "Immich requereix permís per veure les vostres fotos i vídeos.", "permission_onboarding_request": "Immich requereix permís per veure les vostres fotos i vídeos.",
"person": "Persona", "person": "Persona",
"person_age_months": "{months, plural, one {# mes} other {# mesos}} d'antiguitat",
"person_age_year_months": "1 any, {months, plural, one {# mes} other {# mesos}} d'antiguitat",
"person_age_years": "{years, plural, other {# anys}} d'antiguitat",
"person_birthdate": "Nascut a {date}", "person_birthdate": "Nascut a {date}",
"person_hidden": "{name}{hidden, select, true { (ocultat)} other {}}", "person_hidden": "{name}{hidden, select, true { (ocultat)} other {}}",
"photo_shared_all_users": "Sembla que has compartit les teves fotos amb tots els usuaris o no tens cap usuari amb qui compartir-les.", "photo_shared_all_users": "Sembla que has compartit les teves fotos amb tots els usuaris o no tens cap usuari amb qui compartir-les.",
@@ -1431,6 +1518,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_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_client_server_up_to_date": "El Client i el Servidor estan actualitzats",
"profile_drawer_github": "GitHub", "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_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_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}", "profile_image_of_user": "Imatge de perfil de {user}",
@@ -1469,12 +1557,15 @@
"purchase_server_description_2": "Estat del contribuent", "purchase_server_description_2": "Estat del contribuent",
"purchase_server_title": "Servidor", "purchase_server_title": "Servidor",
"purchase_settings_server_activated": "La clau de producte del servidor la gestiona l'administrador", "purchase_settings_server_activated": "La clau de producte del servidor la gestiona l'administrador",
"queue_status": "En cua {count}/{total}",
"rating": "Valoració", "rating": "Valoració",
"rating_clear": "Esborrar valoració", "rating_clear": "Esborrar valoració",
"rating_count": "{count, plural, one {# estrella} other {# estrelles}}", "rating_count": "{count, plural, one {# estrella} other {# estrelles}}",
"rating_description": "Mostrar la valoració EXIF al panell d'informació", "rating_description": "Mostrar la valoració EXIF al panell d'informació",
"reaction_options": "Opcions de reacció", "reaction_options": "Opcions de reacció",
"read_changelog": "Llegeix el registre de canvis", "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", "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_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", "reassigned_assets_to_new_person": "{count, plural, one {S'ha reassignat # recurs} other {S'han reassignat # recursos}} a una persona nova",
@@ -1497,6 +1588,8 @@
"refreshing_faces": "Refrescant cares", "refreshing_faces": "Refrescant cares",
"refreshing_metadata": "Actualitzant les metadades", "refreshing_metadata": "Actualitzant les metadades",
"regenerating_thumbnails": "Regenerant les miniatures", "regenerating_thumbnails": "Regenerant les miniatures",
"remote": "Remot",
"remote_assets": "Recursos Remots",
"remove": "Eliminar", "remove": "Eliminar",
"remove_assets_album_confirmation": "Confirmes que vols eliminar {count, plural, one {# recurs} other {# recursos}} de l'àlbum?", "remove_assets_album_confirmation": "Confirmes que vols eliminar {count, plural, one {# recurs} other {# recursos}} de l'àlbum?",
"remove_assets_shared_link_confirmation": "Esteu segur que voleu eliminar {count, plural, one {# recurs} other {# recursos}} d'aquest enllaç compartit?", "remove_assets_shared_link_confirmation": "Esteu segur que voleu eliminar {count, plural, one {# recurs} other {# recursos}} d'aquest enllaç compartit?",
@@ -1504,6 +1597,7 @@
"remove_custom_date_range": "Elimina l'interval de dates personalitzat", "remove_custom_date_range": "Elimina l'interval de dates personalitzat",
"remove_deleted_assets": "Suprimeix fitxers fora de línia", "remove_deleted_assets": "Suprimeix fitxers fora de línia",
"remove_from_album": "Treu de l'àlbum", "remove_from_album": "Treu de l'àlbum",
"remove_from_album_action_prompt": "{count} eliminats de l'àlbum",
"remove_from_favorites": "Eliminar dels preferits", "remove_from_favorites": "Eliminar dels preferits",
"remove_from_lock_folder_action_prompt": "{count} eliminades de la carpeta protegida", "remove_from_lock_folder_action_prompt": "{count} eliminades de la carpeta protegida",
"remove_from_locked_folder": "Elimina de la carpeta bloquejada", "remove_from_locked_folder": "Elimina de la carpeta bloquejada",
@@ -1533,19 +1627,28 @@
"reset_password": "Restablir contrasenya", "reset_password": "Restablir contrasenya",
"reset_people_visibility": "Restablir la visibilitat de les persones", "reset_people_visibility": "Restablir la visibilitat de les persones",
"reset_pin_code": "Restablir el codi PIN", "reset_pin_code": "Restablir el codi PIN",
"reset_pin_code_description": "Si has oblidat el teu codi PIN, pots contactar amb l'administrador del servidor per a reiniciar-lo",
"reset_pin_code_success": "Codi PIN reiniciat correctament",
"reset_pin_code_with_password": "Sempre pots reiniciar el codi PIN amb la teva contrasenya",
"reset_sqlite": "Reiniciar base de dades SQLite",
"reset_sqlite_confirmation": "Segur que vols reiniciar la base de dades SQLite? Hauràs de tancar la sessió i tornar a accedir per a resincronitzar les dades",
"reset_sqlite_success": "S'ha reiniciat la base de dades correctament",
"reset_to_default": "Restableix els valors predeterminats", "reset_to_default": "Restableix els valors predeterminats",
"resolve_duplicates": "Resoldre duplicats", "resolve_duplicates": "Resoldre duplicats",
"resolved_all_duplicates": "Tots els duplicats resolts", "resolved_all_duplicates": "Tots els duplicats resolts",
"restore": "Recupera", "restore": "Recupera",
"restore_all": "Restaurar-ho tot", "restore_all": "Restaurar-ho tot",
"restore_trash_action_prompt": "{count} recuperats de la paperera",
"restore_user": "Restaurar l'usuari", "restore_user": "Restaurar l'usuari",
"restored_asset": "Element restaurat", "restored_asset": "Element restaurat",
"resume": "Reprendre", "resume": "Reprendre",
"retry_upload": "Torna a provar de pujar", "retry_upload": "Torna a provar de pujar",
"review_duplicates": "Revisar duplicats", "review_duplicates": "Revisar duplicats",
"review_large_files": "Revisar fitxers grans",
"role": "Rol", "role": "Rol",
"role_editor": "Editor", "role_editor": "Editor",
"role_viewer": "Visor", "role_viewer": "Visor",
"running": "En execució",
"save": "Desa", "save": "Desa",
"save_to_gallery": "Desa a galeria", "save_to_gallery": "Desa a galeria",
"saved_api_key": "Clau d'API guardada", "saved_api_key": "Clau d'API guardada",
@@ -1632,6 +1735,7 @@
"select_user_for_sharing_page_err_album": "Error al crear l'àlbum", "select_user_for_sharing_page_err_album": "Error al crear l'àlbum",
"selected": "Seleccionat", "selected": "Seleccionat",
"selected_count": "{count, plural, one {# seleccionat} other {# seleccionats}}", "selected_count": "{count, plural, one {# seleccionat} other {# seleccionats}}",
"selected_gps_coordinates": "seleccio de coordinades GPS",
"send_message": "Envia missatge", "send_message": "Envia missatge",
"send_welcome_email": "Envia correu de benvinguda", "send_welcome_email": "Envia correu de benvinguda",
"server_endpoint": "Endpoint de Servidor", "server_endpoint": "Endpoint de Servidor",
@@ -1677,6 +1781,7 @@
"settings_saved": "Configuració desada", "settings_saved": "Configuració desada",
"setup_pin_code": "Configurar un codi PIN", "setup_pin_code": "Configurar un codi PIN",
"share": "Comparteix", "share": "Comparteix",
"share_action_prompt": "Compartits {count} recursos",
"share_add_photos": "Afegeix fotografies", "share_add_photos": "Afegeix fotografies",
"share_assets_selected": "{count} seleccionats", "share_assets_selected": "{count} seleccionats",
"share_dialog_preparing": "S'està preparant...", "share_dialog_preparing": "S'està preparant...",
@@ -1698,6 +1803,7 @@
"shared_link_clipboard_copied_massage": "S'ha copiat al porta-retalls", "shared_link_clipboard_copied_massage": "S'ha copiat al porta-retalls",
"shared_link_clipboard_text": "Enllaç: {link}\nContrasenya: {password}", "shared_link_clipboard_text": "Enllaç: {link}\nContrasenya: {password}",
"shared_link_create_error": "S'ha produït un error en crear l'enllaç compartit", "shared_link_create_error": "S'ha produït un error en crear l'enllaç compartit",
"shared_link_custom_url_description": "Accedeix a aquest enllaç compartit amb una URL personalitzada",
"shared_link_edit_description_hint": "Introduïu la descripció de compartició", "shared_link_edit_description_hint": "Introduïu la descripció de compartició",
"shared_link_edit_expire_after_option_day": "1 dia", "shared_link_edit_expire_after_option_day": "1 dia",
"shared_link_edit_expire_after_option_days": "{count} dies", "shared_link_edit_expire_after_option_days": "{count} dies",
@@ -1723,6 +1829,7 @@
"shared_link_info_chip_metadata": "EXIF", "shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Gestiona els enllaços compartits", "shared_link_manage_links": "Gestiona els enllaços compartits",
"shared_link_options": "Opcions d'enllaços compartits", "shared_link_options": "Opcions d'enllaços compartits",
"shared_link_password_description": "Requereix una contrasenya per accedir a aquest enllaç compartit",
"shared_links": "Enllaços compartits", "shared_links": "Enllaços compartits",
"shared_links_description": "Comparteix fotos i vídeos amb un enllaç", "shared_links_description": "Comparteix fotos i vídeos amb un enllaç",
"shared_photos_and_videos_count": "{assetCount, plural, other {# fotos i vídeos compartits.}}", "shared_photos_and_videos_count": "{assetCount, plural, other {# fotos i vídeos compartits.}}",
@@ -1739,8 +1846,10 @@
"shift_to_permanent_delete": "premeu ⇧ per suprimir el recurs permanentment", "shift_to_permanent_delete": "premeu ⇧ per suprimir el recurs permanentment",
"show_album_options": "Mostra les opcions d'àlbum", "show_album_options": "Mostra les opcions d'àlbum",
"show_albums": "Mostrar àlbums", "show_albums": "Mostrar àlbums",
"show_all_assets": "Mostrar tots els elements",
"show_all_people": "Veure totes les persones", "show_all_people": "Veure totes les persones",
"show_and_hide_people": "Mostra i amaga persones", "show_and_hide_people": "Mostra i amaga persones",
"show_assets_without_location": "Mostra els elements sense ubicació",
"show_file_location": "Mostra l'ubicació del fitxer", "show_file_location": "Mostra l'ubicació del fitxer",
"show_gallery": "Mostra la galeria", "show_gallery": "Mostra la galeria",
"show_hidden_people": "Mostra persones ocultes", "show_hidden_people": "Mostra persones ocultes",
@@ -1772,12 +1881,14 @@
"sort_created": "Data de creació", "sort_created": "Data de creació",
"sort_items": "Nombre d'elements", "sort_items": "Nombre d'elements",
"sort_modified": "Data de modificació", "sort_modified": "Data de modificació",
"sort_newest": "Foto més nova",
"sort_oldest": "Foto més antiga", "sort_oldest": "Foto més antiga",
"sort_people_by_similarity": "Ordenar personar per semblança", "sort_people_by_similarity": "Ordenar personar per semblança",
"sort_recent": "Foto més recent", "sort_recent": "Foto més recent",
"sort_title": "Títol", "sort_title": "Títol",
"source": "Font", "source": "Font",
"stack": "Apila", "stack": "Apila",
"stack_action_prompt": "{count} apilats",
"stack_duplicates": "Aplica duplicats", "stack_duplicates": "Aplica duplicats",
"stack_select_one_photo": "Selecciona una imatge principal per la pila", "stack_select_one_photo": "Selecciona una imatge principal per la pila",
"stack_selected_photos": "Apila les fotos seleccionades", "stack_selected_photos": "Apila les fotos seleccionades",
@@ -1797,6 +1908,7 @@
"storage_quota": "Quota d'emmagatzematge", "storage_quota": "Quota d'emmagatzematge",
"storage_usage": "{used} de {available} en ús", "storage_usage": "{used} de {available} en ús",
"submit": "Envia", "submit": "Envia",
"success": "Amb èxit",
"suggestions": "Suggeriments", "suggestions": "Suggeriments",
"sunrise_on_the_beach": "Albada a la platja", "sunrise_on_the_beach": "Albada a la platja",
"support": "Suport", "support": "Suport",
@@ -1806,6 +1918,8 @@
"sync": "Sincronitza", "sync": "Sincronitza",
"sync_albums": "Sincronitzar àlbums", "sync_albums": "Sincronitzar àlbums",
"sync_albums_manual_subtitle": "Sincronitza tots els vídeos i fotos penjats amb els àlbums de còpia de seguretat seleccionats", "sync_albums_manual_subtitle": "Sincronitza tots els vídeos i fotos penjats amb els àlbums de còpia de seguretat seleccionats",
"sync_local": "Sincronitza Local",
"sync_remote": "Sincronitza Remot",
"sync_upload_album_setting_subtitle": "Creeu i pugeu les seves fotos i vídeos als àlbums seleccionats a Immich", "sync_upload_album_setting_subtitle": "Creeu i pugeu les seves fotos i vídeos als àlbums seleccionats a Immich",
"tag": "Etiqueta", "tag": "Etiqueta",
"tag_assets": "Etiquetar actius", "tag_assets": "Etiquetar actius",
@@ -1816,6 +1930,7 @@
"tag_updated": "Etiqueta actualizada: {tag}", "tag_updated": "Etiqueta actualizada: {tag}",
"tagged_assets": "{count, plural, one {#Etiquetat} other {#Etiquetats}} {count, plural, one {# actiu} other {# actius}}", "tagged_assets": "{count, plural, one {#Etiquetat} other {#Etiquetats}} {count, plural, one {# actiu} other {# actius}}",
"tags": "Etiquetes", "tags": "Etiquetes",
"tap_to_run_job": "Toca per executar el treball",
"template": "Plantilla", "template": "Plantilla",
"theme": "Tema", "theme": "Tema",
"theme_selection": "Selecció de tema", "theme_selection": "Selecció de tema",
@@ -1842,7 +1957,9 @@
"to_change_password": "Canviar la contrasenya", "to_change_password": "Canviar la contrasenya",
"to_favorite": "Prefereix", "to_favorite": "Prefereix",
"to_login": "Iniciar sessió", "to_login": "Iniciar sessió",
"to_multi_select": "per multi-seleccionar",
"to_parent": "Anar als pares", "to_parent": "Anar als pares",
"to_select": "per seleccionar",
"to_trash": "Paperera", "to_trash": "Paperera",
"toggle_settings": "Canvia configuració", "toggle_settings": "Canvia configuració",
"total": "Total", "total": "Total",
@@ -1888,15 +2005,21 @@
"unselect_all_duplicates": "Desmarqueu tots els duplicats", "unselect_all_duplicates": "Desmarqueu tots els duplicats",
"unselect_all_in": "Desseleccionar tots els elements de {group}", "unselect_all_in": "Desseleccionar tots els elements de {group}",
"unstack": "Desapila", "unstack": "Desapila",
"unstack_action_prompt": "{count} sense apilar",
"unstacked_assets_count": "No apilat {count, plural, one {# recurs} other {# recursos}}", "unstacked_assets_count": "No apilat {count, plural, one {# recurs} other {# recursos}}",
"untagged": "Sense etiqueta",
"up_next": "Pròxim", "up_next": "Pròxim",
"update_location_action_prompt": "Actualitza la ubicació de {count} elements seleccionats amb:",
"updated_at": "Actualitzat", "updated_at": "Actualitzat",
"updated_password": "Contrasenya actualitzada", "updated_password": "Contrasenya actualitzada",
"upload": "Pujar", "upload": "Pujar",
"upload_action_prompt": "{count} a la cua per a pujar",
"upload_concurrency": "Concurrència de pujades", "upload_concurrency": "Concurrència de pujades",
"upload_details": "Detalls de la Pujada",
"upload_dialog_info": "Vols fer còpia de seguretat dels elements seleccionats al servidor?", "upload_dialog_info": "Vols fer còpia de seguretat dels elements seleccionats al servidor?",
"upload_dialog_title": "Puja elements", "upload_dialog_title": "Puja elements",
"upload_errors": "Càrrega completada amb {count, plural, one {# error} other {# errors}}, actualitzeu la pàgina per veure els nous elements carregats.", "upload_errors": "Càrrega completada amb {count, plural, one {# error} other {# errors}}, actualitzeu la pàgina per veure els nous elements carregats.",
"upload_finished": "Pujada finalitzada",
"upload_progress": "Restant {remaining, number} - Processat {processed, number}/{total, number}", "upload_progress": "Restant {remaining, number} - Processat {processed, number}/{total, number}",
"upload_skipped_duplicates": "{count, plural, one {S'ha omès # recurs duplicat} other {S'han omès # recursos duplicats}}", "upload_skipped_duplicates": "{count, plural, one {S'ha omès # recurs duplicat} other {S'han omès # recursos duplicats}}",
"upload_status_duplicates": "Duplicats", "upload_status_duplicates": "Duplicats",
@@ -1905,11 +2028,13 @@
"upload_success": "Pujada correcta, actualitza la pàgina per veure nous recursos de pujada.", "upload_success": "Pujada correcta, actualitza la pàgina per veure nous recursos de pujada.",
"upload_to_immich": "Puja a Immich ({count})", "upload_to_immich": "Puja a Immich ({count})",
"uploading": "Pujant", "uploading": "Pujant",
"uploading_media": "Pujant mitjans",
"url": "URL", "url": "URL",
"usage": "Ús", "usage": "Ús",
"use_biometric": "Empra biometria", "use_biometric": "Empra biometria",
"use_current_connection": "utilitzar la connexió actual", "use_current_connection": "utilitzar la connexió actual",
"use_custom_date_range": "Fes servir un rang de dates personalitzat", "use_custom_date_range": "Fes servir un rang de dates personalitzat",
"use_this_location": "Fes clic per utilitzar la ubicació",
"user": "Usuari", "user": "Usuari",
"user_has_been_deleted": "Aquest usuari ha sigut eliminat.", "user_has_been_deleted": "Aquest usuari ha sigut eliminat.",
"user_id": "ID d'usuari", "user_id": "ID d'usuari",
@@ -1925,6 +2050,7 @@
"user_usage_stats_description": "Veure les estadístiques d'ús del compte", "user_usage_stats_description": "Veure les estadístiques d'ús del compte",
"username": "Nom d'usuari", "username": "Nom d'usuari",
"users": "Usuaris", "users": "Usuaris",
"users_added_to_album_count": "{count, plural, one {S'ha afegit # usuari} other {S'han afegit # usuaris}} a l'àlbum",
"utilities": "Utilitats", "utilities": "Utilitats",
"validate": "Valida", "validate": "Valida",
"validate_endpoint_error": "Per favor introdueix un URL vàlid", "validate_endpoint_error": "Per favor introdueix un URL vàlid",
@@ -1943,6 +2069,7 @@
"view_album": "Veure l'àlbum", "view_album": "Veure l'àlbum",
"view_all": "Veure tot", "view_all": "Veure tot",
"view_all_users": "Mostra tot els usuaris", "view_all_users": "Mostra tot els usuaris",
"view_details": "Veure Detalls",
"view_in_timeline": "Mostrar a la línia de temps", "view_in_timeline": "Mostrar a la línia de temps",
"view_link": "Veure enllaç", "view_link": "Veure enllaç",
"view_links": "Mostra enllaços", "view_links": "Mostra enllaços",

View File

@@ -28,6 +28,9 @@
"add_to_album": "Přidat do alba", "add_to_album": "Přidat do alba",
"add_to_album_bottom_sheet_added": "Přidáno do {album}", "add_to_album_bottom_sheet_added": "Přidáno do {album}",
"add_to_album_bottom_sheet_already_exists": "Je již v {album}", "add_to_album_bottom_sheet_already_exists": "Je již v {album}",
"add_to_album_toggle": "Přepnout výběr pro {album}",
"add_to_albums": "Přidat do alb",
"add_to_albums_count": "Přidat do alb ({count})",
"add_to_shared_album": "Přidat do sdíleného alba", "add_to_shared_album": "Přidat do sdíleného alba",
"add_url": "Přidat URL", "add_url": "Přidat URL",
"added_to_archive": "Přidáno do archivu", "added_to_archive": "Přidáno do archivu",
@@ -120,7 +123,7 @@
"logging_enable_description": "Povolit protokolování", "logging_enable_description": "Povolit protokolování",
"logging_level_description": "Když je povoleno, jakou úroveň protokolu použít.", "logging_level_description": "Když je povoleno, jakou úroveň protokolu použít.",
"logging_settings": "Protokolování", "logging_settings": "Protokolování",
"machine_learning_clip_model": "CLIP model", "machine_learning_clip_model": "Model CLIP",
"machine_learning_clip_model_description": "Název CLIP modelu je uvedený <link>zde</link>. Pamatujte, že při změně modelu je nutné znovu spustit úlohu 'Chytré vyhledávání' pro všechny obrázky.", "machine_learning_clip_model_description": "Název CLIP modelu je uvedený <link>zde</link>. Pamatujte, že při změně modelu je nutné znovu spustit úlohu 'Chytré vyhledávání' pro všechny obrázky.",
"machine_learning_duplicate_detection": "Kontrola duplicit", "machine_learning_duplicate_detection": "Kontrola duplicit",
"machine_learning_duplicate_detection_enabled": "Povolit kontrolu duplicit", "machine_learning_duplicate_detection_enabled": "Povolit kontrolu duplicit",
@@ -254,7 +257,7 @@
"server_settings_description": "Správa nastavení serveru", "server_settings_description": "Správa nastavení serveru",
"server_welcome_message": "Uvítací zpráva", "server_welcome_message": "Uvítací zpráva",
"server_welcome_message_description": "Zpráva, která se zobrazí na přihlašovací stránce.", "server_welcome_message_description": "Zpráva, která se zobrazí na přihlašovací stránce.",
"sidecar_job": "Sidecar metadata", "sidecar_job": "Postranní metadata",
"sidecar_job_description": "Objevování nebo synchronizace sidecar metadat ze systému souborů", "sidecar_job_description": "Objevování nebo synchronizace sidecar metadat ze systému souborů",
"slideshow_duration_description": "Počet sekund pro zobrazení každého obrázku", "slideshow_duration_description": "Počet sekund pro zobrazení každého obrázku",
"smart_search_job_description": "Strojové učení na objektech pro podporu inteligentního vyhledávání", "smart_search_job_description": "Strojové učení na objektech pro podporu inteligentního vyhledávání",
@@ -329,7 +332,7 @@
"transcoding_policy_description": "Nastavte po překódování videa", "transcoding_policy_description": "Nastavte po překódování videa",
"transcoding_preferred_hardware_device": "Preferované hardwarové zařízení", "transcoding_preferred_hardware_device": "Preferované hardwarové zařízení",
"transcoding_preferred_hardware_device_description": "Platí pouze pro VAAPI a QSV. Nastaví dri uzel použitý pro hardwarové překódování.", "transcoding_preferred_hardware_device_description": "Platí pouze pro VAAPI a QSV. Nastaví dri uzel použitý pro hardwarové překódování.",
"transcoding_preset_preset": "Preset (-preset)", "transcoding_preset_preset": "Předvolba (-preset)",
"transcoding_preset_preset_description": "Rychlost komprese. Pomalejší předvolby vytvářejí menší soubory a zvyšují kvalitu při dosažení určitého datového toku. VP9 ignoruje rychlosti vyšší než 'faster'.", "transcoding_preset_preset_description": "Rychlost komprese. Pomalejší předvolby vytvářejí menší soubory a zvyšují kvalitu při dosažení určitého datového toku. VP9 ignoruje rychlosti vyšší než 'faster'.",
"transcoding_reference_frames": "Referenční snímky", "transcoding_reference_frames": "Referenční snímky",
"transcoding_reference_frames_description": "Počet referenčních snímků při kompresi daného snímku. Vyšší hodnoty zvyšují účinnost komprese, ale zpomalují kódování. Hodnota 0 toto nastavuje automaticky.", "transcoding_reference_frames_description": "Počet referenčních snímků při kompresi daného snímku. Vyšší hodnoty zvyšují účinnost komprese, ale zpomalují kódování. Hodnota 0 toto nastavuje automaticky.",
@@ -338,11 +341,11 @@
"transcoding_settings_description": "Správa rozlišení a kódování videosouborů", "transcoding_settings_description": "Správa rozlišení a kódování videosouborů",
"transcoding_target_resolution": "Cílové rozlišení", "transcoding_target_resolution": "Cílové rozlišení",
"transcoding_target_resolution_description": "Vyšší rozlišení mohou zachovat více detailů, ale jejich kódování trvá déle, mají větší velikost souboru a mohou snížit odezvu aplikace.", "transcoding_target_resolution_description": "Vyšší rozlišení mohou zachovat více detailů, ale jejich kódování trvá déle, mají větší velikost souboru a mohou snížit odezvu aplikace.",
"transcoding_temporal_aq": "Temporal AQ", "transcoding_temporal_aq": "Časové AQ",
"transcoding_temporal_aq_description": "Platí pouze pro NVENC. Zvyšuje kvalitu scén s vysokým počtem detailů a malým počtem pohybů. Nemusí být kompatibilní se staršími zařízeními.", "transcoding_temporal_aq_description": "Platí pouze pro NVENC. Zvyšuje kvalitu scén s vysokým počtem detailů a malým počtem pohybů. Nemusí být kompatibilní se staršími zařízeními.",
"transcoding_threads": "Vlákna", "transcoding_threads": "Vlákna",
"transcoding_threads_description": "Vyšší hodnoty vedou k rychlejšímu kódování, ale ponechávají serveru méně prostoru pro zpracování jiných úloh. Tato hodnota by neměla být vyšší než počet jader procesoru. Maximalizuje využití, pokud je nastavena na 0.", "transcoding_threads_description": "Vyšší hodnoty vedou k rychlejšímu kódování, ale ponechávají serveru méně prostoru pro zpracování jiných úloh. Tato hodnota by neměla být vyšší než počet jader procesoru. Maximalizuje využití, pokud je nastavena na 0.",
"transcoding_tone_mapping": "Tone-mapping", "transcoding_tone_mapping": "Mapování tónů",
"transcoding_tone_mapping_description": "Snaží se zachovat vzhled videí HDR při převodu na SDR. Každý algoritmus dělá různé kompromisy v oblasti barev, detailů a jasu. Hable zachovává detaily, Mobius zachovává barvy a Reinhard zachovává jas.", "transcoding_tone_mapping_description": "Snaží se zachovat vzhled videí HDR při převodu na SDR. Každý algoritmus dělá různé kompromisy v oblasti barev, detailů a jasu. Hable zachovává detaily, Mobius zachovává barvy a Reinhard zachovává jas.",
"transcoding_transcode_policy": "Zásady překódování", "transcoding_transcode_policy": "Zásady překódování",
"transcoding_transcode_policy_description": "Zásady, kdy má být video překódováno. Videa HDR budou překódována vždy (kromě případů, kdy je překódování zakázáno).", "transcoding_transcode_policy_description": "Zásady, kdy má být video překódováno. Videa HDR budou překódována vždy (kromě případů, kdy je překódování zakázáno).",
@@ -355,6 +358,9 @@
"trash_number_of_days_description": "Počet dní, po které je třeba položku ponechat v koši, než bude trvale odstraněna", "trash_number_of_days_description": "Počet dní, po které je třeba položku ponechat v koši, než bude trvale odstraněna",
"trash_settings": "Koš", "trash_settings": "Koš",
"trash_settings_description": "Správa nastavení koše", "trash_settings_description": "Správa nastavení koše",
"unlink_all_oauth_accounts": "Odpojit všechny účty OAuth",
"unlink_all_oauth_accounts_description": "Nezapomeňte odpojit všechny OAuth účty před přechodem k novému poskytovateli.",
"unlink_all_oauth_accounts_prompt": "Opravdu chcete odpojit všechny účty OAuth? Tím se resetuje ID OAuth pro každého uživatele a tento úkon nelze vrátit zpět.",
"user_cleanup_job": "Promazání uživatelů", "user_cleanup_job": "Promazání uživatelů",
"user_delete_delay": "Účet a položky uživatele <b>{user}</b> budou trvale smazány za {delay, plural, one {# den} few {# dny} other {# dní}}.", "user_delete_delay": "Účet a položky uživatele <b>{user}</b> budou trvale smazány za {delay, plural, one {# den} few {# dny} other {# dní}}.",
"user_delete_delay_settings": "Odložení odstranění", "user_delete_delay_settings": "Odložení odstranění",
@@ -382,7 +388,7 @@
"administration": "Administrace", "administration": "Administrace",
"advanced": "Pokročilé", "advanced": "Pokročilé",
"advanced_settings_beta_timeline_subtitle": "Vyzkoušejte nové prostředí aplikace", "advanced_settings_beta_timeline_subtitle": "Vyzkoušejte nové prostředí aplikace",
"advanced_settings_beta_timeline_title": "Beta verze časové osy", "advanced_settings_beta_timeline_title": "Časová osa (beta)",
"advanced_settings_enable_alternate_media_filter_subtitle": "Tuto možnost použijte k filtrování médií během synchronizace na základě alternativních kritérií. Tuto možnost vyzkoušejte pouze v případě, že máte problémy s detekcí všech alb v aplikaci.", "advanced_settings_enable_alternate_media_filter_subtitle": "Tuto možnost použijte k filtrování médií během synchronizace na základě alternativních kritérií. Tuto možnost vyzkoušejte pouze v případě, že máte problémy s detekcí všech alb v aplikaci.",
"advanced_settings_enable_alternate_media_filter_title": "[EXPERIMENTÁLNÍ] Použít alternativní filtr pro synchronizaci alb zařízení", "advanced_settings_enable_alternate_media_filter_title": "[EXPERIMENTÁLNÍ] Použít alternativní filtr pro synchronizaci alb zařízení",
"advanced_settings_log_level_title": "Úroveň protokolování: {level}", "advanced_settings_log_level_title": "Úroveň protokolování: {level}",
@@ -390,6 +396,8 @@
"advanced_settings_prefer_remote_title": "Preferovat vzdálené obrázky", "advanced_settings_prefer_remote_title": "Preferovat vzdálené obrázky",
"advanced_settings_proxy_headers_subtitle": "Definice hlaviček proxy serveru, které by měl Immich odesílat s každým síťovým požadavkem", "advanced_settings_proxy_headers_subtitle": "Definice hlaviček proxy serveru, které by měl Immich odesílat s každým síťovým požadavkem",
"advanced_settings_proxy_headers_title": "Proxy hlavičky", "advanced_settings_proxy_headers_title": "Proxy hlavičky",
"advanced_settings_readonly_mode_subtitle": "Povoluje režim pouze pro čtení, ve kterém lze fotografie pouze prohlížet, ale funkce jako výběr více obrázků, sdílení, přenos, mazání jsou zakázány. Povolení/zakázání režimu pouze pro čtení pomocí avatara uživatele na hlavní obrazovce",
"advanced_settings_readonly_mode_title": "Režim pouze pro čtení",
"advanced_settings_self_signed_ssl_subtitle": "Vynechá ověření SSL certifikátu serveru. Vyžadováno pro self-signed certifikáty.", "advanced_settings_self_signed_ssl_subtitle": "Vynechá ověření SSL certifikátu serveru. Vyžadováno pro self-signed certifikáty.",
"advanced_settings_self_signed_ssl_title": "Povolit self-signed SSL certifikáty", "advanced_settings_self_signed_ssl_title": "Povolit self-signed SSL certifikáty",
"advanced_settings_sync_remote_deletions_subtitle": "Automaticky odstranit nebo obnovit položku v tomto zařízení, když je tato akce provedena na webu", "advanced_settings_sync_remote_deletions_subtitle": "Automaticky odstranit nebo obnovit položku v tomto zařízení, když je tato akce provedena na webu",
@@ -455,6 +463,7 @@
"app_bar_signout_dialog_title": "Odhlásit se", "app_bar_signout_dialog_title": "Odhlásit se",
"app_settings": "Aplikace", "app_settings": "Aplikace",
"appears_in": "Vyskytuje se v", "appears_in": "Vyskytuje se v",
"apply_count": "Použít ({count, number})",
"archive": "Archiv", "archive": "Archiv",
"archive_action_prompt": "{count} přidaných do archivu", "archive_action_prompt": "{count} přidaných do archivu",
"archive_or_unarchive_photo": "Přidat nebo odebrat fotku z archivu", "archive_or_unarchive_photo": "Přidat nebo odebrat fotku z archivu",
@@ -483,7 +492,7 @@
"asset_list_settings_subtitle": "Nastavení rozložení mřížky fotografií", "asset_list_settings_subtitle": "Nastavení rozložení mřížky fotografií",
"asset_list_settings_title": "Mřížka fotografií", "asset_list_settings_title": "Mřížka fotografií",
"asset_offline": "Offline položka", "asset_offline": "Offline položka",
"asset_offline_description": "Toto externí položka se již na disku nenachází. Obraťte se na Immich správce a požádejte o pomoc.", "asset_offline_description": "Toto externí položka se již na disku nenachází. Obraťte se na správce Immich a požádejte o pomoc.",
"asset_restored_successfully": "Položka úspěšně obnovena", "asset_restored_successfully": "Položka úspěšně obnovena",
"asset_skipped": "Přeskočeno", "asset_skipped": "Přeskočeno",
"asset_skipped_in_trash": "V koši", "asset_skipped_in_trash": "V koši",
@@ -494,7 +503,9 @@
"assets": "Položky", "assets": "Položky",
"assets_added_count": "{count, plural, one {Přidána # položka} few {Přidány # položky} other {Přidáno # položek}}", "assets_added_count": "{count, plural, one {Přidána # položka} few {Přidány # položky} other {Přidáno # položek}}",
"assets_added_to_album_count": "Do alba {count, plural, one {byla přidána # položka} few {byly přidány # položky} other {bylo přidáno # položek}}", "assets_added_to_album_count": "Do alba {count, plural, one {byla přidána # položka} few {byly přidány # položky} other {bylo přidáno # položek}}",
"assets_added_to_albums_count": "{assetTotal, plural, one {Přidána # položka} few{Přidány # položky} other {Přidáno # položek}} do {albumTotal, plural, one {# alba} other {# alb}}",
"assets_cannot_be_added_to_album_count": "{count, plural, one {Položku} other {Položky}} nelze přidat do alba", "assets_cannot_be_added_to_album_count": "{count, plural, one {Položku} other {Položky}} nelze přidat do alba",
"assets_cannot_be_added_to_albums": "{count, plural, one {Položku} other {Položky}} nelze přidat do žádného z alb",
"assets_count": "{count, plural, one {# položka} few {# položky} other {# položek}}", "assets_count": "{count, plural, one {# položka} few {# položky} other {# položek}}",
"assets_deleted_permanently": "{count} položek trvale odstraněno", "assets_deleted_permanently": "{count} položek trvale odstraněno",
"assets_deleted_permanently_from_server": "{count} položek trvale odstraněno z Immich serveru", "assets_deleted_permanently_from_server": "{count} položek trvale odstraněno z Immich serveru",
@@ -511,6 +522,7 @@
"assets_trashed_count": "{count, plural, one {Vyhozena # položka} few {Vyhozeny # položky} other {Vyhozeno # položek}}", "assets_trashed_count": "{count, plural, one {Vyhozena # položka} few {Vyhozeny # položky} other {Vyhozeno # položek}}",
"assets_trashed_from_server": "{count} položek vyhozeno do koše na Immich serveru", "assets_trashed_from_server": "{count} položek vyhozeno do koše na Immich serveru",
"assets_were_part_of_album_count": "{count, plural, one {Položka byla} other {Položky byly}} součástí alba", "assets_were_part_of_album_count": "{count, plural, one {Položka byla} other {Položky byly}} součástí alba",
"assets_were_part_of_albums_count": "{count, plural, one {Položka již byla} other {Položky již byly}} součástí alb",
"authorized_devices": "Autorizovaná zařízení", "authorized_devices": "Autorizovaná zařízení",
"automatic_endpoint_switching_subtitle": "Připojit se místně přes určenou Wi-Fi, pokud je k dispozici, a používat alternativní připojení jinde", "automatic_endpoint_switching_subtitle": "Připojit se místně přes určenou Wi-Fi, pokud je k dispozici, a používat alternativní připojení jinde",
"automatic_endpoint_switching_title": "Automatické přepínání URL", "automatic_endpoint_switching_title": "Automatické přepínání URL",
@@ -580,8 +592,10 @@
"backup_manual_in_progress": "Nahrávání již probíhá. Zkuste to znovu později", "backup_manual_in_progress": "Nahrávání již probíhá. Zkuste to znovu později",
"backup_manual_success": "Úspěch", "backup_manual_success": "Úspěch",
"backup_manual_title": "Stav nahrávání", "backup_manual_title": "Stav nahrávání",
"backup_options": "Možnosti zálohování",
"backup_options_page_title": "Nastavení záloh", "backup_options_page_title": "Nastavení záloh",
"backup_setting_subtitle": "Správa nastavení zálohování na pozadí a na popředí", "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", "backward": "Pozpátku",
"beta_sync": "Stav synchronizace (beta)", "beta_sync": "Stav synchronizace (beta)",
"beta_sync_subtitle": "Správa nového systému synchronizace", "beta_sync_subtitle": "Správa nového systému synchronizace",
@@ -651,6 +665,7 @@
"clear": "Vymazat", "clear": "Vymazat",
"clear_all": "Vymazat vše", "clear_all": "Vymazat vše",
"clear_all_recent_searches": "Vymazat všechna nedávná vyhledávání", "clear_all_recent_searches": "Vymazat všechna nedávná vyhledávání",
"clear_file_cache": "Vymazat mezipaměť souborů",
"clear_message": "Vymazat zprávu", "clear_message": "Vymazat zprávu",
"clear_value": "Vymazat hodnotu", "clear_value": "Vymazat hodnotu",
"client_cert_dialog_msg_confirm": "OK", "client_cert_dialog_msg_confirm": "OK",
@@ -721,6 +736,7 @@
"create_new_user": "Vytvořit nového uživatele", "create_new_user": "Vytvořit nového uživatele",
"create_shared_album_page_share_add_assets": "PŘIDAT POLOŽKY", "create_shared_album_page_share_add_assets": "PŘIDAT POLOŽKY",
"create_shared_album_page_share_select_photos": "Vybrat fotografie", "create_shared_album_page_share_select_photos": "Vybrat fotografie",
"create_shared_link": "Vytvořit sdílený odkaz",
"create_tag": "Vytvořit značku", "create_tag": "Vytvořit značku",
"create_tag_description": "Vytvoření nové značky. U vnořených značek zadejte celou cestu ke značce včetně dopředných lomítek.", "create_tag_description": "Vytvoření nové značky. U vnořených značek zadejte celou cestu ke značce včetně dopředných lomítek.",
"create_user": "Vytvořit uživatele", "create_user": "Vytvořit uživatele",
@@ -745,6 +761,7 @@
"date_of_birth_saved": "Datum narození úspěšně uloženo", "date_of_birth_saved": "Datum narození úspěšně uloženo",
"date_range": "Rozsah dat", "date_range": "Rozsah dat",
"day": "Den", "day": "Den",
"days": "Dnů",
"deduplicate_all": "Odstranit všechny duplicity", "deduplicate_all": "Odstranit všechny duplicity",
"deduplication_criteria_1": "Velikost obrázku v bajtech", "deduplication_criteria_1": "Velikost obrázku v bajtech",
"deduplication_criteria_2": "Počet EXIF dat", "deduplication_criteria_2": "Počet EXIF dat",
@@ -832,6 +849,9 @@
"edit_birthday": "Upravit datum narození", "edit_birthday": "Upravit datum narození",
"edit_date": "Upravit datum", "edit_date": "Upravit datum",
"edit_date_and_time": "Upravit datum a čas", "edit_date_and_time": "Upravit datum a čas",
"edit_date_and_time_action_prompt": "{count} časových údajů upraveno",
"edit_date_and_time_by_offset": "Posunout datum",
"edit_date_and_time_by_offset_interval": "Nový rozsah dat: {from} {to}",
"edit_description": "Upravit popis", "edit_description": "Upravit popis",
"edit_description_prompt": "Vyberte nový popis:", "edit_description_prompt": "Vyberte nový popis:",
"edit_exclusion_pattern": "Upravit vzor vyloučení", "edit_exclusion_pattern": "Upravit vzor vyloučení",
@@ -904,6 +924,7 @@
"failed_to_load_notifications": "Nepodařilo se načíst oznámení", "failed_to_load_notifications": "Nepodařilo se načíst oznámení",
"failed_to_load_people": "Chyba načítání osob", "failed_to_load_people": "Chyba načítání osob",
"failed_to_remove_product_key": "Nepodařilo se odebrat klíč produktu", "failed_to_remove_product_key": "Nepodařilo se odebrat klíč produktu",
"failed_to_reset_pin_code": "Nepodařilo se resetovat PIN kód",
"failed_to_stack_assets": "Nepodařilo se seskupit položky", "failed_to_stack_assets": "Nepodařilo se seskupit položky",
"failed_to_unstack_assets": "Nepodařilo se zrušit seskupení položek", "failed_to_unstack_assets": "Nepodařilo se zrušit seskupení položek",
"failed_to_update_notification_status": "Nepodařilo se aktualizovat stav oznámení", "failed_to_update_notification_status": "Nepodařilo se aktualizovat stav oznámení",
@@ -912,6 +933,7 @@
"paths_validation_failed": "{paths, plural, one {# cesta neprošla} few {# cesty neprošly} other {# cest neprošlo}} kontrolou", "paths_validation_failed": "{paths, plural, one {# cesta neprošla} few {# cesty neprošly} other {# cest neprošlo}} kontrolou",
"profile_picture_transparent_pixels": "Profilové obrázky nemohou mít průhledné pixely. Obrázek si prosím zvětšete nebo posuňte.", "profile_picture_transparent_pixels": "Profilové obrázky nemohou mít průhledné pixely. Obrázek si prosím zvětšete nebo posuňte.",
"quota_higher_than_disk_size": "Nastavili jste kvótu vyšší, než je velikost disku", "quota_higher_than_disk_size": "Nastavili jste kvótu vyšší, než je velikost disku",
"something_went_wrong": "Něco se pokazilo",
"unable_to_add_album_users": "Nelze přidat uživatele do alba", "unable_to_add_album_users": "Nelze přidat uživatele do alba",
"unable_to_add_assets_to_shared_link": "Nelze přidat položky do sdíleného odkazu", "unable_to_add_assets_to_shared_link": "Nelze přidat položky do sdíleného odkazu",
"unable_to_add_comment": "Nelze přidat komentář", "unable_to_add_comment": "Nelze přidat komentář",
@@ -1002,9 +1024,6 @@
"exif_bottom_sheet_location": "POLOHA", "exif_bottom_sheet_location": "POLOHA",
"exif_bottom_sheet_people": "LIDÉ", "exif_bottom_sheet_people": "LIDÉ",
"exif_bottom_sheet_person_add_person": "Přidat jméno", "exif_bottom_sheet_person_add_person": "Přidat jméno",
"exif_bottom_sheet_person_age_months": "{months} měsíců",
"exif_bottom_sheet_person_age_year_months": "1 rok a {months} měsíců",
"exif_bottom_sheet_person_age_years": "{years} let",
"exit_slideshow": "Ukončit prezentaci", "exit_slideshow": "Ukončit prezentaci",
"expand_all": "Rozbalit vše", "expand_all": "Rozbalit vše",
"experimental_settings_new_asset_list_subtitle": "Zpracovávám", "experimental_settings_new_asset_list_subtitle": "Zpracovávám",
@@ -1046,21 +1065,29 @@
"filter_people": "Filtrovat lidi", "filter_people": "Filtrovat lidi",
"filter_places": "Filtrovat místa", "filter_places": "Filtrovat místa",
"find_them_fast": "Najděte je rychle vyhledáním jejich jména", "find_them_fast": "Najděte je rychle vyhledáním jejich jména",
"first": "První",
"fix_incorrect_match": "Opravit nesprávnou shodu", "fix_incorrect_match": "Opravit nesprávnou shodu",
"folder": "Složka", "folder": "Složka",
"folder_not_found": "Složka nebyla nalezena", "folder_not_found": "Složka nebyla nalezena",
"folders": "Složky", "folders": "Složky",
"folders_feature_description": "Procházení zobrazení složek s fotografiemi a videi v souborovém systému", "folders_feature_description": "Procházení zobrazení složek s fotografiemi a videi v souborovém systému",
"forgot_pin_code_question": "Zapomněli jste PIN?",
"forward": "Dopředu", "forward": "Dopředu",
"gcast_enabled": "Google Cast", "gcast_enabled": "Google Cast",
"gcast_enabled_description": "Tato funkce načítá externí zdroje z Googlu, aby mohla fungovat.", "gcast_enabled_description": "Tato funkce načítá externí zdroje z Googlu, aby mohla fungovat.",
"general": "Obecné", "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_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", "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", "getting_started": "Začínáme",
"go_back": "Přejít zpět", "go_back": "Přejít zpět",
"go_to_folder": "Přejít do složky", "go_to_folder": "Přejít do složky",
"go_to_search": "Přejít na vyhledávání", "go_to_search": "Přejít na vyhledávání",
"gps": "GPS",
"gps_missing": "Bez GPS",
"grant_permission": "Udělit oprávnění", "grant_permission": "Udělit oprávnění",
"group_albums_by": "Seskupit alba podle...", "group_albums_by": "Seskupit alba podle...",
"group_country": "Seskupit podle země", "group_country": "Seskupit podle země",
@@ -1105,6 +1132,7 @@
"home_page_upload_err_limit": "Lze nahrát nejvýše 30 položek najednou, přeskakuji", "home_page_upload_err_limit": "Lze nahrát nejvýše 30 položek najednou, přeskakuji",
"host": "Hostitel", "host": "Hostitel",
"hour": "Hodina", "hour": "Hodina",
"hours": "Hodin",
"id": "ID", "id": "ID",
"idle": "Nečinnost", "idle": "Nečinnost",
"ignore_icloud_photos": "Ignorovat fotografie na iCloudu", "ignore_icloud_photos": "Ignorovat fotografie na iCloudu",
@@ -1165,10 +1193,12 @@
"language_search_hint": "Vyhledat jazyk...", "language_search_hint": "Vyhledat jazyk...",
"language_setting_description": "Vyberte upřednostňovaný jazyk", "language_setting_description": "Vyberte upřednostňovaný jazyk",
"large_files": "Velké soubory", "large_files": "Velké soubory",
"last": "Poslední",
"last_seen": "Naposledy viděno", "last_seen": "Naposledy viděno",
"latest_version": "Nejnovější verze", "latest_version": "Nejnovější verze",
"latitude": "Zeměpisná šířka", "latitude": "Zeměpisná šířka",
"leave": "Opustit", "leave": "Opustit",
"leave_album": "Opustit album",
"lens_model": "Model objektivu", "lens_model": "Model objektivu",
"let_others_respond": "Nechte ostatní reagovat", "let_others_respond": "Nechte ostatní reagovat",
"level": "Úroveň", "level": "Úroveň",
@@ -1182,7 +1212,8 @@
"library_page_sort_title": "Podle názvu alba", "library_page_sort_title": "Podle názvu alba",
"licenses": "Licence", "licenses": "Licence",
"light": "Světlý", "light": "Světlý",
"like_deleted": "Lajk smazán", "like": "Líbí se mi",
"like_deleted": "Oblíbení smazáno",
"link_motion_video": "Připojit pohyblivé video", "link_motion_video": "Připojit pohyblivé video",
"link_to_oauth": "Propojit s OAuth", "link_to_oauth": "Propojit s OAuth",
"linked_oauth_account": "Propojený OAuth účet", "linked_oauth_account": "Propojený OAuth účet",
@@ -1196,7 +1227,7 @@
"local_network_sheet_info": "Aplikace se při použití zadané sítě Wi-Fi připojí k serveru prostřednictvím tohoto URL", "local_network_sheet_info": "Aplikace se při použití zadané sítě Wi-Fi připojí k serveru prostřednictvím tohoto URL",
"location_permission": "Oprávnění polohy", "location_permission": "Oprávnění polohy",
"location_permission_content": "Aby bylo možné používat funkci automatického přepínání, potřebuje Immich oprávnění k přesné poloze, aby mohl přečíst název aktuální sítě Wi-Fi", "location_permission_content": "Aby bylo možné používat funkci automatického přepínání, potřebuje Immich oprávnění k přesné poloze, aby mohl přečíst název aktuální sítě Wi-Fi",
"location_picker_choose_on_map": "Vyberte na mapě", "location_picker_choose_on_map": "Vybrat na mapě",
"location_picker_latitude_error": "Zadejte platnou zeměpisnou šířku", "location_picker_latitude_error": "Zadejte platnou zeměpisnou šířku",
"location_picker_latitude_hint": "Zadejte vlastní zeměpisnou šířku", "location_picker_latitude_hint": "Zadejte vlastní zeměpisnou šířku",
"location_picker_longitude_error": "Zadejte platnou zeměpisnou délku", "location_picker_longitude_error": "Zadejte platnou zeměpisnou délku",
@@ -1240,6 +1271,7 @@
"main_branch_warning": "Používáte vývojovou verzi; důrazně doporučujeme používat verzi z vydání!", "main_branch_warning": "Používáte vývojovou verzi; důrazně doporučujeme používat verzi z vydání!",
"main_menu": "Hlavní nabídka", "main_menu": "Hlavní nabídka",
"make": "Výrobce", "make": "Výrobce",
"manage_geolocation": "Spravovat polohu",
"manage_shared_links": "Spravovat sdílené odkazy", "manage_shared_links": "Spravovat sdílené odkazy",
"manage_sharing_with_partners": "Správa sdílení s partnery", "manage_sharing_with_partners": "Správa sdílení s partnery",
"manage_the_app_settings": "Správa nastavení aplikace", "manage_the_app_settings": "Správa nastavení aplikace",
@@ -1248,7 +1280,7 @@
"manage_your_devices": "Správa přihlášených zařízení", "manage_your_devices": "Správa přihlášených zařízení",
"manage_your_oauth_connection": "Správa OAuth propojení", "manage_your_oauth_connection": "Správa OAuth propojení",
"map": "Mapa", "map": "Mapa",
"map_assets_in_bounds": "{count, plural, one {# fotka} few{# fotky} other {# fotek}}", "map_assets_in_bounds": "{count, plural, =0 {Žádná fotka v této oblasti} one {# fotka} few{# fotky} other {# fotek}}",
"map_cannot_get_user_location": "Nelze zjistit polohu uživatele", "map_cannot_get_user_location": "Nelze zjistit polohu uživatele",
"map_location_dialog_yes": "Ano", "map_location_dialog_yes": "Ano",
"map_location_picker_page_use_location": "Použít tuto polohu", "map_location_picker_page_use_location": "Použít tuto polohu",
@@ -1256,7 +1288,6 @@
"map_location_service_disabled_title": "Služba určování polohy je zakázána", "map_location_service_disabled_title": "Služba určování polohy je zakázána",
"map_marker_for_images": "Značka na mapě pro snímky pořízené v {city}, {country}", "map_marker_for_images": "Značka na mapě pro snímky pořízené v {city}, {country}",
"map_marker_with_image": "Značka mapy s obrázkem", "map_marker_with_image": "Značka mapy s obrázkem",
"map_no_assets_in_bounds": "Žádné fotografie v této oblasti",
"map_no_location_permission_content": "Oprávnění polohy je nutné pro zobrazení fotek z vaší aktuální polohy. Chcete oprávnění nyní povolit?", "map_no_location_permission_content": "Oprávnění polohy je nutné pro zobrazení fotek z vaší aktuální polohy. Chcete oprávnění nyní povolit?",
"map_no_location_permission_title": "Oprávnění polohy zamítnuto", "map_no_location_permission_title": "Oprávnění polohy zamítnuto",
"map_settings": "Nastavení mapy", "map_settings": "Nastavení mapy",
@@ -1293,6 +1324,7 @@
"merged_people_count": "{count, plural, one {Sloučena # osoba} few {Sloučeny # osoby} other {Sloučeno # lidí}}", "merged_people_count": "{count, plural, one {Sloučena # osoba} few {Sloučeny # osoby} other {Sloučeno # lidí}}",
"minimize": "Minimalizovat", "minimize": "Minimalizovat",
"minute": "Minuta", "minute": "Minuta",
"minutes": "Minut",
"missing": "Chybějící", "missing": "Chybějící",
"model": "Model", "model": "Model",
"month": "Měsíc", "month": "Měsíc",
@@ -1312,6 +1344,9 @@
"my_albums": "Moje alba", "my_albums": "Moje alba",
"name": "Jméno", "name": "Jméno",
"name_or_nickname": "Jméno nebo přezdívka", "name_or_nickname": "Jméno nebo přezdívka",
"network_requirement_photos_upload": "Pro zálohování fotografií používat mobilní data",
"network_requirement_videos_upload": "Pro zálohování videí používat mobilní data",
"network_requirements_updated": "Požadavky na síť se změnily, fronta zálohování se vytvoří znovu",
"networking_settings": "Síť", "networking_settings": "Síť",
"networking_subtitle": "Správa nastavení koncového bodu serveru", "networking_subtitle": "Správa nastavení koncového bodu serveru",
"never": "Nikdy", "never": "Nikdy",
@@ -1363,6 +1398,7 @@
"oauth": "OAuth", "oauth": "OAuth",
"official_immich_resources": "Oficiální zdroje Immich", "official_immich_resources": "Oficiální zdroje Immich",
"offline": "Offline", "offline": "Offline",
"offset": "Posun",
"ok": "Ok", "ok": "Ok",
"oldest_first": "Nejstarší první", "oldest_first": "Nejstarší první",
"on_this_device": "V tomto zařízení", "on_this_device": "V tomto zařízení",
@@ -1381,6 +1417,8 @@
"open_the_search_filters": "Otevřít vyhledávací filtry", "open_the_search_filters": "Otevřít vyhledávací filtry",
"options": "Možnosti", "options": "Možnosti",
"or": "nebo", "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", "organize_your_library": "Uspořádejte si knihovnu",
"original": "originál", "original": "originál",
"other": "Ostatní", "other": "Ostatní",
@@ -1426,7 +1464,7 @@
"permanent_deletion_warning_setting_description": "Zobrazit varování při trvalém odstranění položek", "permanent_deletion_warning_setting_description": "Zobrazit varování při trvalém odstranění položek",
"permanently_delete": "Trvale odstranit", "permanently_delete": "Trvale odstranit",
"permanently_delete_assets_count": "Trvale smazat {count, plural, one {položku} other {položky}}", "permanently_delete_assets_count": "Trvale smazat {count, plural, one {položku} other {položky}}",
"permanently_delete_assets_prompt": "Opravdu chcete trvale smazat {count, plural, one {tuto položku} few {tyto <b>#</b> položky} other {těchto <b>#</b> položek}}? Tím {count, plural, one {ji také odstraníte z jejích} other {je také odstraníte z jejich}} alb.", "permanently_delete_assets_prompt": "Opravdu chcete trvale smazat {count, plural, one {tento soubor?} other {tyto <b>#</b> soubory?}} Tím se také odstraní {count, plural, one {z jeho} other {z jejich}} alba.",
"permanently_deleted_asset": "Položka trvale odstraněna", "permanently_deleted_asset": "Položka trvale odstraněna",
"permanently_deleted_assets_count": "{count, plural, one {Položka trvale vymazána} other {Položky trvale vymazány}}", "permanently_deleted_assets_count": "{count, plural, one {Položka trvale vymazána} other {Položky trvale vymazány}}",
"permission": "Oprávnění", "permission": "Oprávnění",
@@ -1440,6 +1478,9 @@
"permission_onboarding_permission_limited": "Přístup omezen. Chcete-li používat Immich k zálohování a správě celé vaší kolekce galerií, povolte v nastavení přístup k fotkám a videím.", "permission_onboarding_permission_limited": "Přístup omezen. Chcete-li používat Immich k zálohování a správě celé vaší kolekce galerií, povolte v nastavení přístup k fotkám a videím.",
"permission_onboarding_request": "Immich potřebuje přístup k zobrazení vašich fotek a videí.", "permission_onboarding_request": "Immich potřebuje přístup k zobrazení vašich fotek a videí.",
"person": "Osoba", "person": "Osoba",
"person_age_months": "{months, plural, one {# měsíc} few {# měsíce} other {# měsíců}}",
"person_age_year_months": "1 rok a {months, plural, one {# měsíc} few {# měsíce} other {# měsíců}}",
"person_age_years": "{years, plural, one {# rok} few {# roky} other {# let}}",
"person_birthdate": "Narozen(a) {date}", "person_birthdate": "Narozen(a) {date}",
"person_hidden": "{name}{hidden, select, true { (skryto)} other {}}", "person_hidden": "{name}{hidden, select, true { (skryto)} other {}}",
"photo_shared_all_users": "Vypadá to, že jste fotky sdíleli se všemi uživateli, nebo nemáte žádného uživatele, se kterým byste je mohli sdílet.", "photo_shared_all_users": "Vypadá to, že jste fotky sdíleli se všemi uživateli, nebo nemáte žádného uživatele, se kterým byste je mohli sdílet.",
@@ -1479,6 +1520,7 @@
"profile_drawer_client_out_of_date_minor": "Mobilní aplikace je zastaralá. Aktualizujte ji na nejnovější verzi.", "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_client_server_up_to_date": "Klient a server jsou aktuální",
"profile_drawer_github": "GitHub", "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_server_out_of_date_major": "Server je zastaralý. Aktualizujte na nejnovější hlavní verzi.", "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_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}", "profile_image_of_user": "Profilový obrázek uživatele {user}",
@@ -1517,6 +1559,7 @@
"purchase_server_description_2": "Stav podporovatele", "purchase_server_description_2": "Stav podporovatele",
"purchase_server_title": "Server", "purchase_server_title": "Server",
"purchase_settings_server_activated": "Produktový klíč serveru spravuje správce", "purchase_settings_server_activated": "Produktový klíč serveru spravuje správce",
"query_asset_id": "ID položky dotazu",
"queue_status": "Ve frontě {count}/{total}", "queue_status": "Ve frontě {count}/{total}",
"rating": "Hodnocení hvězdičkami", "rating": "Hodnocení hvězdičkami",
"rating_clear": "Vyčistit hodnocení", "rating_clear": "Vyčistit hodnocení",
@@ -1524,6 +1567,8 @@
"rating_description": "Zobrazit EXIF hodnocení v informačním panelu", "rating_description": "Zobrazit EXIF hodnocení v informačním panelu",
"reaction_options": "Možnosti reakce", "reaction_options": "Možnosti reakce",
"read_changelog": "Přečtěte si seznam změn", "read_changelog": "Přečtěte si seznam změn",
"readonly_mode_disabled": "Režim pouze pro čtení je deaktivován",
"readonly_mode_enabled": "Režim pouze pro čtení povolen",
"reassign": "Přeřadit", "reassign": "Přeřadit",
"reassigned_assets_to_existing_person": "Přeřadit {count, plural, one {# položku} few {# položky} other {# položek}} na {name, select, null {existující osobu} other {{name}}}", "reassigned_assets_to_existing_person": "Přeřadit {count, plural, one {# položku} few {# položky} other {# položek}} na {name, select, null {existující osobu} other {{name}}}",
"reassigned_assets_to_new_person": "{count, plural, one {Přeřazena # položka} few {Přeřazeny # položky} other {Přeřazeno # položek}} na novou osobu", "reassigned_assets_to_new_person": "{count, plural, one {Přeřazena # položka} few {Přeřazeny # položky} other {Přeřazeno # položek}} na novou osobu",
@@ -1585,8 +1630,11 @@
"reset_password": "Obnovit heslo", "reset_password": "Obnovit heslo",
"reset_people_visibility": "Obnovit viditelnost lidí", "reset_people_visibility": "Obnovit viditelnost lidí",
"reset_pin_code": "Resetovat PIN kód", "reset_pin_code": "Resetovat PIN kód",
"reset_sqlite": "Obnovit SQLite databázi", "reset_pin_code_description": "Pokud jste zapomněli svůj PIN kód, obraťte se na správce serveru pro jeho resetování",
"reset_sqlite_confirmation": "Jste si jisti, že chcete obnovit SQLite databázi? Pro opětovnou synchronizaci dat se budete muset odhlásit a znovu přihlásit", "reset_pin_code_success": "PIN kód úspěšně resetován",
"reset_pin_code_with_password": "Svůj PIN kód můžete vždy resetovat pomocí hesla",
"reset_sqlite": "Obnovit databázi SQLite",
"reset_sqlite_confirmation": "Jste si jisti, že chcete obnovit databázi SQLite? Pro opětovnou synchronizaci dat se budete muset odhlásit a znovu přihlásit",
"reset_sqlite_success": "Obnovení SQLite databáze proběhlo úspěšně", "reset_sqlite_success": "Obnovení SQLite databáze proběhlo úspěšně",
"reset_to_default": "Obnovit výchozí nastavení", "reset_to_default": "Obnovit výchozí nastavení",
"resolve_duplicates": "Vyřešit duplicity", "resolve_duplicates": "Vyřešit duplicity",
@@ -1690,6 +1738,7 @@
"select_user_for_sharing_page_err_album": "Nepodařilo se vytvořit album", "select_user_for_sharing_page_err_album": "Nepodařilo se vytvořit album",
"selected": "Vybráno", "selected": "Vybráno",
"selected_count": "{count, plural, one {# vybraný} few {# vybrané} other {# vybraných}}", "selected_count": "{count, plural, one {# vybraný} few {# vybrané} other {# vybraných}}",
"selected_gps_coordinates": "Vybrané GPS souřadnice",
"send_message": "Odeslat zprávu", "send_message": "Odeslat zprávu",
"send_welcome_email": "Poslat uvítací e-mail", "send_welcome_email": "Poslat uvítací e-mail",
"server_endpoint": "Koncový bod serveru", "server_endpoint": "Koncový bod serveru",
@@ -1800,8 +1849,10 @@
"shift_to_permanent_delete": "stiskněte ⇧ pro trvalé odstranění položky", "shift_to_permanent_delete": "stiskněte ⇧ pro trvalé odstranění položky",
"show_album_options": "Zobrazit možnosti alba", "show_album_options": "Zobrazit možnosti alba",
"show_albums": "Zobrazit alba", "show_albums": "Zobrazit alba",
"show_all_assets": "Zobrazit všechny položky",
"show_all_people": "Zobrazit všechny lidi", "show_all_people": "Zobrazit všechny lidi",
"show_and_hide_people": "Zobrazit a skrýt osoby", "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_file_location": "Zobrazit umístění souboru",
"show_gallery": "Zobrazit galerii", "show_gallery": "Zobrazit galerii",
"show_hidden_people": "Zobrazit skryté lidi", "show_hidden_people": "Zobrazit skryté lidi",
@@ -1833,6 +1884,7 @@
"sort_created": "Datum vytvoření", "sort_created": "Datum vytvoření",
"sort_items": "Počet položek", "sort_items": "Počet položek",
"sort_modified": "Datum modifikace", "sort_modified": "Datum modifikace",
"sort_newest": "Nejnovější fotka",
"sort_oldest": "Nejstarší fotka", "sort_oldest": "Nejstarší fotka",
"sort_people_by_similarity": "Seřadit lidi podle podobnosti", "sort_people_by_similarity": "Seřadit lidi podle podobnosti",
"sort_recent": "Nejnovější fotka", "sort_recent": "Nejnovější fotka",
@@ -1894,7 +1946,7 @@
"theme_setting_image_viewer_quality_title": "Kvalita prohlížeče obrázků", "theme_setting_image_viewer_quality_title": "Kvalita prohlížeče obrázků",
"theme_setting_primary_color_subtitle": "Zvolte barvu pro hlavní akce a zvýraznění.", "theme_setting_primary_color_subtitle": "Zvolte barvu pro hlavní akce a zvýraznění.",
"theme_setting_primary_color_title": "Hlavní barva", "theme_setting_primary_color_title": "Hlavní barva",
"theme_setting_system_primary_color_title": "Použití systémové barvy", "theme_setting_system_primary_color_title": "Použít systémovou barvu",
"theme_setting_system_theme_switch": "Automaticky (podle systemového nastavení)", "theme_setting_system_theme_switch": "Automaticky (podle systemového nastavení)",
"theme_setting_theme_subtitle": "Vyberte nastavení tématu aplikace", "theme_setting_theme_subtitle": "Vyberte nastavení tématu aplikace",
"theme_setting_three_stage_loading_subtitle": "Třístupňové načítání může zvýšit výkonnost načítání, ale vede k výrazně vyššímu zatížení sítě", "theme_setting_three_stage_loading_subtitle": "Třístupňové načítání může zvýšit výkonnost načítání, ale vede k výrazně vyššímu zatížení sítě",
@@ -1908,7 +1960,9 @@
"to_change_password": "Změnit heslo", "to_change_password": "Změnit heslo",
"to_favorite": "Oblíbit", "to_favorite": "Oblíbit",
"to_login": "Přihlásit", "to_login": "Přihlásit",
"to_multi_select": "na vícenásobný výběr",
"to_parent": "Přejít k rodiči", "to_parent": "Přejít k rodiči",
"to_select": "vybrat",
"to_trash": "Vyhodit", "to_trash": "Vyhodit",
"toggle_settings": "Přepnout nastavení", "toggle_settings": "Přepnout nastavení",
"total": "Celkem", "total": "Celkem",
@@ -1958,6 +2012,7 @@
"unstacked_assets_count": "{count, plural, one {Rozložená # položka} few {Rozložené # položky} other {Rozložených # položek}}", "unstacked_assets_count": "{count, plural, one {Rozložená # položka} few {Rozložené # položky} other {Rozložených # položek}}",
"untagged": "Neoznačeno", "untagged": "Neoznačeno",
"up_next": "To je prozatím vše", "up_next": "To je prozatím vše",
"update_location_action_prompt": "Aktualizovat polohu {count} vybraných položek pomocí:",
"updated_at": "Aktualizováno", "updated_at": "Aktualizováno",
"updated_password": "Heslo aktualizováno", "updated_password": "Heslo aktualizováno",
"upload": "Nahrát", "upload": "Nahrát",
@@ -1982,6 +2037,7 @@
"use_biometric": "Použít biometrické údaje", "use_biometric": "Použít biometrické údaje",
"use_current_connection": "použít aktuální připojení", "use_current_connection": "použít aktuální připojení",
"use_custom_date_range": "Použít vlastní rozsah dat", "use_custom_date_range": "Použít vlastní rozsah dat",
"use_this_location": "Klikněte pro použití polohy",
"user": "Uživatel", "user": "Uživatel",
"user_has_been_deleted": "Tento uživatel byl smazán.", "user_has_been_deleted": "Tento uživatel byl smazán.",
"user_id": "ID uživatele", "user_id": "ID uživatele",
@@ -2006,7 +2062,7 @@
"version_announcement_closing": "Váš přítel Alex", "version_announcement_closing": "Váš přítel Alex",
"version_announcement_message": "Ahoj! K dispozici je nová verze aplikace Immich. Věnujte prosím chvíli přečtení <link>poznámek k vydání</link> a ujistěte se, že je vaše nastavení aktuální, abyste předešli případným chybným konfiguracím, zejména pokud používáte WatchTower nebo jiný mechanismus, který se stará o automatickou aktualizaci instance aplikace Immich.", "version_announcement_message": "Ahoj! K dispozici je nová verze aplikace Immich. Věnujte prosím chvíli přečtení <link>poznámek k vydání</link> a ujistěte se, že je vaše nastavení aktuální, abyste předešli případným chybným konfiguracím, zejména pokud používáte WatchTower nebo jiný mechanismus, který se stará o automatickou aktualizaci instance aplikace Immich.",
"version_history": "Historie verzí", "version_history": "Historie verzí",
"version_history_item": "Nainstalováno {version} dne {date}", "version_history_item": "Verze {version} nainstalována dne {date}",
"video": "Video", "video": "Video",
"video_hover_setting": "Přehrávat miniaturu videa po najetí myší", "video_hover_setting": "Přehrávat miniaturu videa po najetí myší",
"video_hover_setting_description": "Přehrát miniaturu videa při najetí myší na položku. I když je přehrávání vypnuto, lze jej spustit najetím na ikonu přehrávání.", "video_hover_setting_description": "Přehrát miniaturu videa při najetí myší na položku. I když je přehrávání vypnuto, lze jej spustit najetím na ikonu přehrávání.",
@@ -2024,6 +2080,7 @@
"view_next_asset": "Zobrazit další položku", "view_next_asset": "Zobrazit další položku",
"view_previous_asset": "Zobrazit předchozí položku", "view_previous_asset": "Zobrazit předchozí položku",
"view_qr_code": "Zobrazit QR kód", "view_qr_code": "Zobrazit QR kód",
"view_similar_photos": "Zobrazit podobné fotky",
"view_stack": "Zobrazit seskupení", "view_stack": "Zobrazit seskupení",
"view_user": "Zobrazit uživatele", "view_user": "Zobrazit uživatele",
"viewer_remove_from_stack": "Odstranit ze zásobníku", "viewer_remove_from_stack": "Odstranit ze zásobníku",

View File

@@ -4,6 +4,7 @@
"account_settings": "Шута ҫырни ӗнерленӳ", "account_settings": "Шута ҫырни ӗнерленӳ",
"acknowledge": "Çирӗплет", "acknowledge": "Çирӗплет",
"action": "Ӗçлени", "action": "Ӗçлени",
"action_common_update": "Ҫӗнет",
"actions": "Ӗҫсем", "actions": "Ӗҫсем",
"active": "Хастар", "active": "Хастар",
"activity": "Хастарлӑх", "activity": "Хастарлӑх",
@@ -13,6 +14,8 @@
"add_a_location": "Вырӑн хуш", "add_a_location": "Вырӑн хуш",
"add_a_name": "Ятне хуш", "add_a_name": "Ятне хуш",
"add_a_title": "Ят хуш", "add_a_title": "Ят хуш",
"add_birthday": "Ҫуралнӑ кун хушӑр",
"add_endpoint": "Вӗҫӗмлӗ пӑнчӑ хушар",
"add_exclusion_pattern": "Кӑларса пӑрахмалли йӗрке хуш", "add_exclusion_pattern": "Кӑларса пӑрахмалли йӗрке хуш",
"add_import_path": "Импорт ҫулне хуш", "add_import_path": "Импорт ҫулне хуш",
"add_location": "Вырӑн хуш", "add_location": "Вырӑн хуш",
@@ -20,6 +23,7 @@
"add_partner": "Мӑшӑр хуш", "add_partner": "Мӑшӑр хуш",
"add_path": "Ҫулне хуш", "add_path": "Ҫулне хуш",
"add_photos": "Сӑнӳкерчӗксем хуш", "add_photos": "Сӑнӳкерчӗксем хуш",
"add_tag": "Тег хуш",
"add_to": "Мӗн те пулин хуш…", "add_to": "Мӗн те пулин хуш…",
"add_to_album": "Альбома хуш", "add_to_album": "Альбома хуш",
"add_to_shared_album": "Пӗрлехи альбома хуш", "add_to_shared_album": "Пӗрлехи альбома хуш",
@@ -28,9 +32,13 @@
"added_to_favorites": "Суйласа илнине хушнӑ", "added_to_favorites": "Суйласа илнине хушнӑ",
"added_to_favorites_count": "Суйласа илнине {count, number} хушнӑ", "added_to_favorites_count": "Суйласа илнине {count, number} хушнӑ",
"admin": { "admin": {
"admin_user": "Усӑҫ админ",
"asset_offline_description": "Библиотекӑн ҫак тулаш файлне дискра урӑх тупайман, карҫинккана куҫарнӑ. Енчен те файла вулавӑш ӑшне куҫарнӑ пулсан, тивӗҫлӗ ҫӗнӗ ресурс тупас тесен хӑвӑрӑн вӑхӑтлӑх шкалӑна тӗрӗслӗр. Ҫак файла ҫӗнӗрен чӗртес тесен файл патне каймалли ҫула Immich валли аяларах ҫитернине курса ӗненӗр, библиотекӑна сканерланине пурнӑҫлӑр.", "asset_offline_description": "Библиотекӑн ҫак тулаш файлне дискра урӑх тупайман, карҫинккана куҫарнӑ. Енчен те файла вулавӑш ӑшне куҫарнӑ пулсан, тивӗҫлӗ ҫӗнӗ ресурс тупас тесен хӑвӑрӑн вӑхӑтлӑх шкалӑна тӗрӗслӗр. Ҫак файла ҫӗнӗрен чӗртес тесен файл патне каймалли ҫула Immich валли аяларах ҫитернине курса ӗненӗр, библиотекӑна сканерланине пурнӑҫлӑр.",
"authentication_settings": "Ауттентихвикатси ӗнерленӳсем",
"authentication_settings_disable_all": "Эсир кӗмелли пур меслетсене те чарса лартасшӑн тесе шутлатӑр-и? Кӗмелли шӑтӑка пӗтӗмпех уҫаҫҫӗ.", "authentication_settings_disable_all": "Эсир кӗмелли пур меслетсене те чарса лартасшӑн тесе шутлатӑр-и? Кӗмелли шӑтӑка пӗтӗмпех уҫаҫҫӗ.",
"background_task_job": "Курăнман ӗҫсем", "background_task_job": "Курăнман ӗҫсем",
"backup_database": "Пĕлĕм пухмачĕ туса",
"backup_onboarding_title": "Сыхлӑх копписем",
"cleared_jobs": "Ӗҫсене тасатнӑ:{job}", "cleared_jobs": "Ӗҫсене тасатнӑ:{job}",
"confirm_email_below": "Ҫирӗплетес тесен, аяларах «{email}» кӗртӗр", "confirm_email_below": "Ҫирӗплетес тесен, аяларах «{email}» кӗртӗр",
"confirm_reprocess_all_faces": "Пӗтӗм сӑнӗсене тепӗр хут палӑртас килет тесе шанатӑр-и? Ҫавӑн пекех ятсене пур ҫынран та хуратӗҫ.", "confirm_reprocess_all_faces": "Пӗтӗм сӑнӗсене тепӗр хут палӑртас килет тесе шанатӑр-и? Ҫавӑн пекех ятсене пур ҫынран та хуратӗҫ.",
@@ -45,6 +53,8 @@
"image_preview_title": "Малтанлӑха пӑхмалли ӗнерлевсем", "image_preview_title": "Малтанлӑха пӑхмалли ӗнерлевсем",
"image_quality": "Пахалӑх", "image_quality": "Пахалӑх",
"image_resolution": "Виҫе", "image_resolution": "Виҫе",
"image_settings": "Сӑнӳкерчӗк ӗнерленӳсем",
"image_thumbnail_title": "Пӗчӗк ӳкерчӗксен ӗнерленӳсем",
"map_gps_settings": "Карттӑ тата GPS ĕнерленĕвĕ", "map_gps_settings": "Карттӑ тата GPS ĕнерленĕвĕ",
"map_gps_settings_description": "Карттӑпа GPS (каялла геоюмлани) ӗнерленисене йӗркелесе тӑрӑр", "map_gps_settings_description": "Карттӑпа GPS (каялла геоюмлани) ӗнерленисене йӗркелесе тӑрӑр",
"map_settings": "Карттӑ" "map_settings": "Карттӑ"

View File

@@ -14,6 +14,7 @@
"add_a_location": "Tilføj en placering", "add_a_location": "Tilføj en placering",
"add_a_name": "Tilføj et navn", "add_a_name": "Tilføj et navn",
"add_a_title": "Tilføj en titel", "add_a_title": "Tilføj en titel",
"add_birthday": "Tilføj en fødselsdag",
"add_endpoint": "Tilføj endepunkt", "add_endpoint": "Tilføj endepunkt",
"add_exclusion_pattern": "Tilføj udelukkelsesmønster", "add_exclusion_pattern": "Tilføj udelukkelsesmønster",
"add_import_path": "Tilføj importsti", "add_import_path": "Tilføj importsti",
@@ -27,14 +28,17 @@
"add_to_album": "Tilføj til album", "add_to_album": "Tilføj til album",
"add_to_album_bottom_sheet_added": "Tilføjet til {album}", "add_to_album_bottom_sheet_added": "Tilføjet til {album}",
"add_to_album_bottom_sheet_already_exists": "Allerede i {album}", "add_to_album_bottom_sheet_already_exists": "Allerede i {album}",
"add_to_album_toggle": "Skift selektion for {album}",
"add_to_albums": "Tilføj til albummer",
"add_to_albums_count": "Tilføj til albummer({count})",
"add_to_shared_album": "Tilføj til delt album", "add_to_shared_album": "Tilføj til delt album",
"add_url": "Tilføj URL", "add_url": "Tilføj URL",
"added_to_archive": "Tilføjet til arkiv", "added_to_archive": "Tilføjet til arkiv",
"added_to_favorites": "Tilføjet til favoritter", "added_to_favorites": "Tilføjet til favoritter",
"added_to_favorites_count": "Tilføjet {count, number} til favoritter", "added_to_favorites_count": "Tilføjede {count, number} til favoritter",
"admin": { "admin": {
"add_exclusion_pattern_description": "Tilføj udelukkelsesmønstre. Globbing ved hjælp af *, ** og ? understøttes. For at ignorere alle filer i enhver mappe med navnet \"Raw\", brug \"**/Raw/**\". For at ignorere alle filer, der slutter på \".tif\", brug \"**/*.tif\". For at ignorere en absolut sti, brug \"/sti/til/ignoreret/**\".", "add_exclusion_pattern_description": "Tilføj udelukkelsesmønstre. Globbing ved hjælp af *, ** og ? understøttes. For at ignorere alle filer i enhver mappe med navnet \"Raw\", brug \"**/Raw/**\". For at ignorere alle filer, der slutter på \".tif\", brug \"**/*.tif\". For at ignorere en absolut sti, brug \"/sti/til/ignoreret/**\".",
"admin_user": "Administrator bruger", "admin_user": "Administratorbruger",
"asset_offline_description": "Denne eksterne biblioteksressource findes ikke længere på disken og er blevet flyttet til papirkurven. Hvis filen blev flyttet inde i biblioteket, skal du tjekke din tidslinje for den nye tilsvarende ressource. For at gendanne denne ressource skal du sikre, at filstien nedenfor kan tilgås af Immich og scanne biblioteket.", "asset_offline_description": "Denne eksterne biblioteksressource findes ikke længere på disken og er blevet flyttet til papirkurven. Hvis filen blev flyttet inde i biblioteket, skal du tjekke din tidslinje for den nye tilsvarende ressource. For at gendanne denne ressource skal du sikre, at filstien nedenfor kan tilgås af Immich og scanne biblioteket.",
"authentication_settings": "Godkendelsesindstillinger", "authentication_settings": "Godkendelsesindstillinger",
"authentication_settings_description": "Administrer adgangskode, OAuth og andre godkendelsesindstillinger", "authentication_settings_description": "Administrer adgangskode, OAuth og andre godkendelsesindstillinger",
@@ -44,6 +48,13 @@
"backup_database": "Lav Database Dump", "backup_database": "Lav Database Dump",
"backup_database_enable_description": "Slå database-backup til", "backup_database_enable_description": "Slå database-backup til",
"backup_keep_last_amount": "Mængde af tidligere backups, der skal gemmes", "backup_keep_last_amount": "Mængde af tidligere backups, der skal gemmes",
"backup_onboarding_1_description": "kopi på en anden fysisk lokation eller i skyen.",
"backup_onboarding_2_description": "lokale kopier på separate enheder. Dette inkluderer de originale filer og en lokal backup af disse.",
"backup_onboarding_3_description": "kopier af din data i alt, inklusiv de originale filer. Dette inkluderer 1 kopi på en anden fysisk lokation, og 2 lokale kopier.",
"backup_onboarding_description": "En <backblaze-link>3-2-1 backup strategy</backblaze-link> anbefales for at beskytte dine data. En altomfattende backupløsning skulle gerne have kopier af dine uploadede billeder og videoer, samt Immich databasen.",
"backup_onboarding_footer": "Referer venligst til <link>dokumentationen</link> for mere information om hvordan Immich backes op.",
"backup_onboarding_parts_title": "En 3-2-1 backup inkluderer:",
"backup_onboarding_title": "Backupper",
"backup_settings": "Database Backup-indstillinger", "backup_settings": "Database Backup-indstillinger",
"backup_settings_description": "Administrer backupindstillinger for database.", "backup_settings_description": "Administrer backupindstillinger for database.",
"cleared_jobs": "Ryddet jobs til: {job}", "cleared_jobs": "Ryddet jobs til: {job}",
@@ -115,13 +126,13 @@
"machine_learning_clip_model": "CLIP-model", "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_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": "Dubletdetektion",
"machine_learning_duplicate_detection_enabled": "Aktiver duplikatdetektion", "machine_learning_duplicate_detection_enabled": "Aktiver dubletdetektion",
"machine_learning_duplicate_detection_enabled_description": "Når slået fra, vil nøjagtigt identiske mediefiler blive de-duplikerede.", "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 duplikater", "machine_learning_duplicate_detection_setting_description": "Brug CLIP-indlejringer til at finde sandsynlige dubletter",
"machine_learning_enabled": "Aktivér maskinlæring", "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_enabled_description": "Hvis deaktiveret, vil alle ML-funktioner blive deaktiveret uanset nedenstående indstillinger.",
"machine_learning_facial_recognition": "Ansigtsgenkendelse", "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": "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_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", "machine_learning_facial_recognition_setting": "Aktivér ansigtgenkendelse",
@@ -210,6 +221,8 @@
"oauth_mobile_redirect_uri": "Mobilomdiregerings-URL", "oauth_mobile_redirect_uri": "Mobilomdiregerings-URL",
"oauth_mobile_redirect_uri_override": "Tilsidesættelse af mobil omdiregerings-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_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": "OAuth",
"oauth_settings_description": "Administrer OAuth login-indstillinger", "oauth_settings_description": "Administrer OAuth login-indstillinger",
"oauth_settings_more_details": "Læs flere detaljer om funktionen i <link>dokumentationen</link>.", "oauth_settings_more_details": "Læs flere detaljer om funktionen i <link>dokumentationen</link>.",
@@ -258,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_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_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_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_path_length": "Anslået sti-længde begrænsning <b>{length, number}</b>/{limit, number}",
"storage_template_settings": "Lagringsskabelon", "storage_template_settings": "Lagringsskabelon",
"storage_template_settings_description": "Administrer mappestrukturen og filnavnet for den uploadede mediefil", "storage_template_settings_description": "Administrer mappestrukturen og filnavnet for den uploadede mediefil",
@@ -344,6 +358,9 @@
"trash_number_of_days_description": "Antal dage aktiver i skraldespanden skal beholdes inden de fjernes permanent", "trash_number_of_days_description": "Antal dage aktiver i skraldespanden skal beholdes inden de fjernes permanent",
"trash_settings": "Skraldeindstillinger", "trash_settings": "Skraldeindstillinger",
"trash_settings_description": "Administrér 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_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": "<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", "user_delete_delay_settings": "Slet forsinkelse",
@@ -370,13 +387,17 @@
"admin_password": "Administratoradgangskode", "admin_password": "Administratoradgangskode",
"administration": "Administration", "administration": "Administration",
"advanced": "Avanceret", "advanced": "Avanceret",
"advanced_settings_beta_timeline_subtitle": "Prøv den nye app-oplevelse",
"advanced_settings_beta_timeline_title": "Beta-tidslinje",
"advanced_settings_enable_alternate_media_filter_subtitle": "Brug denne valgmulighed for at filtrere media under synkronisering baseret på alternative kriterier. Prøv kun denne hvis du har problemer med at appen ikke opdager alle albums.", "advanced_settings_enable_alternate_media_filter_subtitle": "Brug denne valgmulighed for at filtrere media under synkronisering baseret på alternative kriterier. Prøv kun denne hvis du har problemer med at appen ikke opdager alle albums.",
"advanced_settings_enable_alternate_media_filter_title": "[EKSPERIMENTEL] Brug alternativ enheds album synkroniserings filter", "advanced_settings_enable_alternate_media_filter_title": "[EKSPERIMENTEL] Brug alternativ enheds album synkroniserings filter",
"advanced_settings_log_level_title": "Logniveau: {level}", "advanced_settings_log_level_title": "Logniveau: {level}",
"advanced_settings_prefer_remote_subtitle": "Nogle enheder tager meget lang tid om at indlæse miniaturebilleder af elementer på enheden. Aktiver denne indstilling for i stedetat indlæse elementer fra serveren.", "advanced_settings_prefer_remote_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_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_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_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_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", "advanced_settings_sync_remote_deletions_subtitle": "Slet eller gendan automatisk en mediefil på denne enhed, når denne handling foretages på Immich webinterface",
@@ -392,6 +413,7 @@
"album_cover_updated": "Albumcover opdateret", "album_cover_updated": "Albumcover opdateret",
"album_delete_confirmation": "Er du sikker på at du vil slette albummet {album}?", "album_delete_confirmation": "Er du sikker på at du vil slette albummet {album}?",
"album_delete_confirmation_description": "Hvis dette album er delt, vil andre brugere ikke længere kunne få adgang til det.", "album_delete_confirmation_description": "Hvis dette album er delt, vil andre brugere ikke længere kunne få adgang til det.",
"album_deleted": "Album slettet",
"album_info_card_backup_album_excluded": "EKSKLUDERET", "album_info_card_backup_album_excluded": "EKSKLUDERET",
"album_info_card_backup_album_included": "INKLUDERET", "album_info_card_backup_album_included": "INKLUDERET",
"album_info_updated": "Albuminfo opdateret", "album_info_updated": "Albuminfo opdateret",
@@ -401,6 +423,7 @@
"album_options": "Albumindstillinger", "album_options": "Albumindstillinger",
"album_remove_user": "Fjern bruger?", "album_remove_user": "Fjern bruger?",
"album_remove_user_confirmation": "Er du sikker på at du vil fjerne {user}?", "album_remove_user_confirmation": "Er du sikker på at du vil fjerne {user}?",
"album_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_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": "Album opdateret",
"album_updated_setting_description": "Modtag en emailnotifikation når et delt album får nye mediefiler", "album_updated_setting_description": "Modtag en emailnotifikation når et delt album får nye mediefiler",
@@ -420,6 +443,7 @@
"albums_default_sort_order": "Standard album sortering", "albums_default_sort_order": "Standard album sortering",
"albums_default_sort_order_description": "Grundlæggende sortering ved oprettelse af nyt album.", "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_feature_description": "Samling af billeder der kan deles med andre brugere.",
"albums_on_device_count": "Albummer på enheden ({count})",
"all": "Alt", "all": "Alt",
"all_albums": "Alle albummer", "all_albums": "Alle albummer",
"all_people": "Alle personer", "all_people": "Alle personer",
@@ -439,7 +463,9 @@
"app_bar_signout_dialog_title": "Log ud", "app_bar_signout_dialog_title": "Log ud",
"app_settings": "Appindstillinger", "app_settings": "Appindstillinger",
"appears_in": "Optræder i", "appears_in": "Optræder i",
"apply_count": "Brug ({count, number})",
"archive": "Arkiv", "archive": "Arkiv",
"archive_action_prompt": "{count} føjet til arkiv",
"archive_or_unarchive_photo": "Arkivér eller dearkivér billede", "archive_or_unarchive_photo": "Arkivér eller dearkivér billede",
"archive_page_no_archived_assets": "Ingen arkiverede elementer blev fundet", "archive_page_no_archived_assets": "Ingen arkiverede elementer blev fundet",
"archive_page_title": "Arkivér ({count})", "archive_page_title": "Arkivér ({count})",
@@ -456,11 +482,11 @@
"asset_description_updated": "Mediefilsbeskrivelse er blevet opdateret", "asset_description_updated": "Mediefilsbeskrivelse er blevet opdateret",
"asset_filename_is_offline": "Mediefil {filename} er offline", "asset_filename_is_offline": "Mediefil {filename} er offline",
"asset_has_unassigned_faces": "Aktivet har ikke-tildelte ansigter", "asset_has_unassigned_faces": "Aktivet har ikke-tildelte ansigter",
"asset_hashing": "Hashing…", "asset_hashing": "Hasher…",
"asset_list_group_by_sub_title": "Gruppér efter", "asset_list_group_by_sub_title": "Gruppér efter",
"asset_list_layout_settings_dynamic_layout_title": "Dynamisk layout", "asset_list_layout_settings_dynamic_layout_title": "Dynamisk layout",
"asset_list_layout_settings_group_automatically": "Automatisk", "asset_list_layout_settings_group_automatically": "Automatisk",
"asset_list_layout_settings_group_by": "Gruppér elementer pr.", "asset_list_layout_settings_group_by": "Grupper elementer efter",
"asset_list_layout_settings_group_by_month_day": "Måned + dag", "asset_list_layout_settings_group_by_month_day": "Måned + dag",
"asset_list_layout_sub_title": "Udseende", "asset_list_layout_sub_title": "Udseende",
"asset_list_settings_subtitle": "Indstillinger for billedgitterlayout", "asset_list_settings_subtitle": "Indstillinger for billedgitterlayout",
@@ -474,10 +500,12 @@
"asset_uploading": "Uploader…", "asset_uploading": "Uploader…",
"asset_viewer_settings_subtitle": "Administrer indstillinger for gallerifremviser", "asset_viewer_settings_subtitle": "Administrer indstillinger for gallerifremviser",
"asset_viewer_settings_title": "Billedviser", "asset_viewer_settings_title": "Billedviser",
"assets": "elementer", "assets": "Objekter",
"assets_added_count": "Tilføjet {count, plural, one {# mediefil} other {# mediefiler}}", "assets_added_count": "Tilføjet {count, plural, one {# mediefil} other {# mediefiler}}",
"assets_added_to_album_count": "{count, plural, one {# mediefil} other {# mediefiler}} tilføjet til albummet", "assets_added_to_album_count": "{count, plural, one {# mediefil} other {# mediefiler}} tilføjet til albummet",
"assets_added_to_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_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_count": "{count, plural, one {# mediefil} other {# mediefiler}}",
"assets_deleted_permanently": "{count} element(er) blev fjernet permanent", "assets_deleted_permanently": "{count} element(er) blev fjernet permanent",
"assets_deleted_permanently_from_server": "{count} element(er) blev fjernet permanent fra Immich serveren", "assets_deleted_permanently_from_server": "{count} element(er) blev fjernet permanent fra Immich serveren",
@@ -494,6 +522,7 @@
"assets_trashed_count": "{count, plural, one {# mediefil} other {# mediefiler}} smidt i papirkurven", "assets_trashed_count": "{count, plural, one {# mediefil} other {# mediefiler}} smidt i papirkurven",
"assets_trashed_from_server": "{count} element(er) blev smidt i Immich serverens papirkurv", "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_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", "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_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", "automatic_endpoint_switching_title": "Automatisk skift af URL",
@@ -547,7 +576,7 @@
"backup_controller_page_none_selected": "Ingen valgte", "backup_controller_page_none_selected": "Ingen valgte",
"backup_controller_page_remainder": "Tilbageværende", "backup_controller_page_remainder": "Tilbageværende",
"backup_controller_page_remainder_sub": "Tilbageværende billeder og albummer, at sikkerhedskopiere, fra valgte", "backup_controller_page_remainder_sub": "Tilbageværende billeder og albummer, at sikkerhedskopiere, fra valgte",
"backup_controller_page_server_storage": "Serverlager", "backup_controller_page_server_storage": "Serverplads",
"backup_controller_page_start_backup": "Start sikkerhedskopiering", "backup_controller_page_start_backup": "Start sikkerhedskopiering",
"backup_controller_page_status_off": "Sikkerhedskopiering er slået fra", "backup_controller_page_status_off": "Sikkerhedskopiering er slået fra",
"backup_controller_page_status_on": "Sikkerhedskopiering er slået til", "backup_controller_page_status_on": "Sikkerhedskopiering er slået til",
@@ -558,14 +587,18 @@
"backup_controller_page_turn_on": "Slå sikkerhedskopiering til", "backup_controller_page_turn_on": "Slå sikkerhedskopiering til",
"backup_controller_page_uploading_file_info": "Uploader filinformation", "backup_controller_page_uploading_file_info": "Uploader filinformation",
"backup_err_only_album": "Kan ikke slette det eneste album", "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_cancelled": "Annulleret",
"backup_manual_in_progress": "Upload er allerede undervejs. Prøv igen efter noget tid", "backup_manual_in_progress": "Upload er allerede undervejs. Prøv igen efter noget tid",
"backup_manual_success": "Succes", "backup_manual_success": "Succes",
"backup_manual_title": "Uploadstatus", "backup_manual_title": "Uploadstatus",
"backup_options": "Backup indstillinger",
"backup_options_page_title": "Backupindstillinger", "backup_options_page_title": "Backupindstillinger",
"backup_setting_subtitle": "Administrer indstillnger for upload i forgrund og baggrund", "backup_setting_subtitle": "Administrer indstillnger for upload i forgrund og baggrund",
"backup_settings_subtitle": "Håndtere upload indstillinger",
"backward": "Baglæns", "backward": "Baglæns",
"beta_sync": "Beta synkroniseringsstatus",
"beta_sync_subtitle": "Håndter det nye synkroniseringssystem",
"biometric_auth_enabled": "Biometrisk adgangskontrol slået til", "biometric_auth_enabled": "Biometrisk adgangskontrol slået til",
"biometric_locked_out": "Du er låst ude af biometrisk adgangskontrol", "biometric_locked_out": "Du er låst ude af biometrisk adgangskontrol",
"biometric_no_options": "Ingen biometrisk adgangskontrol tilgængelig", "biometric_no_options": "Ingen biometrisk adgangskontrol tilgængelig",
@@ -583,7 +616,7 @@
"cache_settings_clear_cache_button": "Fjern cache", "cache_settings_clear_cache_button": "Fjern cache",
"cache_settings_clear_cache_button_title": "Fjern appens cache. Dette vil i stor grad påvirke appens ydeevne indtil cachen er genopbygget.", "cache_settings_clear_cache_button_title": "Fjern appens cache. Dette vil i stor grad påvirke appens ydeevne indtil cachen er genopbygget.",
"cache_settings_duplicated_assets_clear_button": "RYD", "cache_settings_duplicated_assets_clear_button": "RYD",
"cache_settings_duplicated_assets_subtitle": "Billeder og videoer der er sortlistet af appen", "cache_settings_duplicated_assets_subtitle": "Billeder og videoer der er ignoreres af appen",
"cache_settings_duplicated_assets_title": "Dublikerede elementer ({count})", "cache_settings_duplicated_assets_title": "Dublikerede elementer ({count})",
"cache_settings_statistics_album": "Biblioteksminiaturer", "cache_settings_statistics_album": "Biblioteksminiaturer",
"cache_settings_statistics_full": "Fulde billeder", "cache_settings_statistics_full": "Fulde billeder",
@@ -600,6 +633,7 @@
"cancel": "Annullér", "cancel": "Annullér",
"cancel_search": "Annullér søgning", "cancel_search": "Annullér søgning",
"canceled": "Annulleret", "canceled": "Annulleret",
"canceling": "Annullerer",
"cannot_merge_people": "Kan ikke sammenflette personer", "cannot_merge_people": "Kan ikke sammenflette personer",
"cannot_undo_this_action": "Du kan ikke fortryde denne handling!", "cannot_undo_this_action": "Du kan ikke fortryde denne handling!",
"cannot_update_the_description": "Kan ikke opdatere beskrivelsen", "cannot_update_the_description": "Kan ikke opdatere beskrivelsen",
@@ -631,6 +665,7 @@
"clear": "Ryd", "clear": "Ryd",
"clear_all": "Ryd alle", "clear_all": "Ryd alle",
"clear_all_recent_searches": "Ryd alle seneste søgninger", "clear_all_recent_searches": "Ryd alle seneste søgninger",
"clear_file_cache": "Ryd filcache",
"clear_message": "Ryd bedsked", "clear_message": "Ryd bedsked",
"clear_value": "Ryd værdi", "clear_value": "Ryd værdi",
"client_cert_dialog_msg_confirm": "OK", "client_cert_dialog_msg_confirm": "OK",
@@ -701,6 +736,7 @@
"create_new_user": "Opret ny bruger", "create_new_user": "Opret ny bruger",
"create_shared_album_page_share_add_assets": "TILFØJ ELEMENT", "create_shared_album_page_share_add_assets": "TILFØJ ELEMENT",
"create_shared_album_page_share_select_photos": "Vælg Billeder", "create_shared_album_page_share_select_photos": "Vælg Billeder",
"create_shared_link": "Opret delt link",
"create_tag": "Opret tag", "create_tag": "Opret tag",
"create_tag_description": "Opret et nyt tag. For indlejrede tags skal du indtaste den fulde sti til tagget inklusive skråstreger.", "create_tag_description": "Opret et nyt tag. For indlejrede tags skal du indtaste den fulde sti til tagget inklusive skråstreger.",
"create_user": "Opret bruger", "create_user": "Opret bruger",
@@ -713,9 +749,11 @@
"current_server_address": "Nuværende serveraddresse", "current_server_address": "Nuværende serveraddresse",
"custom_locale": "Brugerdefineret lokale", "custom_locale": "Brugerdefineret lokale",
"custom_locale_description": "Formatér datoer og tal baseret på sproget og regionen", "custom_locale_description": "Formatér datoer og tal baseret på sproget og regionen",
"custom_url": "Tilpasset URL",
"daily_title_text_date": "E, dd MMM", "daily_title_text_date": "E, dd MMM",
"daily_title_text_date_year": "E, dd MMM, yyyy", "daily_title_text_date_year": "E, dd MMM, yyyy",
"dark": "Mørk", "dark": "Mørk",
"dark_theme": "Skift til mørkt tema",
"date_after": "Dato efter", "date_after": "Dato efter",
"date_and_time": "Dato og klokkeslæt", "date_and_time": "Dato og klokkeslæt",
"date_before": "Dato før", "date_before": "Dato før",
@@ -723,6 +761,7 @@
"date_of_birth_saved": "Fødselsdatoen blev gemt korrekt", "date_of_birth_saved": "Fødselsdatoen blev gemt korrekt",
"date_range": "Datointerval", "date_range": "Datointerval",
"day": "Dag", "day": "Dag",
"days": "Dage",
"deduplicate_all": "Kopier alle", "deduplicate_all": "Kopier alle",
"deduplication_criteria_1": "Billedstørrelse i bytes", "deduplication_criteria_1": "Billedstørrelse i bytes",
"deduplication_criteria_2": "Antal EXIF-data", "deduplication_criteria_2": "Antal EXIF-data",
@@ -731,6 +770,8 @@
"default_locale": "Standardlokalitet", "default_locale": "Standardlokalitet",
"default_locale_description": "Formatér datoer og tal baseret på din browsers regions indstillinger", "default_locale_description": "Formatér datoer og tal baseret på din browsers regions indstillinger",
"delete": "Slet", "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_album": "Slet album",
"delete_api_key_prompt": "Er du sikker på, at du vil slette denne API-nøgle?", "delete_api_key_prompt": "Er du sikker på, at du vil slette denne API-nøgle?",
"delete_dialog_alert": "Disse elementer vil blive slettet permanent fra Immich og din enhed", "delete_dialog_alert": "Disse elementer vil blive slettet permanent fra Immich og din enhed",
@@ -744,9 +785,12 @@
"delete_key": "Slet nøgle", "delete_key": "Slet nøgle",
"delete_library": "Slet bibliotek", "delete_library": "Slet bibliotek",
"delete_link": "Slet link", "delete_link": "Slet link",
"delete_local_action_prompt": "{count} slettet lokalt",
"delete_local_dialog_ok_backed_up_only": "Slet kun backup", "delete_local_dialog_ok_backed_up_only": "Slet kun backup",
"delete_local_dialog_ok_force": "Slet alligevel", "delete_local_dialog_ok_force": "Slet alligevel",
"delete_others": "Slet andre", "delete_others": "Slet andre",
"delete_permanently": "Slet permanent",
"delete_permanently_action_prompt": "{count} slettet permanent",
"delete_shared_link": "Slet delt link", "delete_shared_link": "Slet delt link",
"delete_shared_link_dialog_title": "Slet delt link", "delete_shared_link_dialog_title": "Slet delt link",
"delete_tag": "Slet tag", "delete_tag": "Slet tag",
@@ -757,6 +801,7 @@
"description": "Beskrivelse", "description": "Beskrivelse",
"description_input_hint_text": "Tilføj en beskrivelse...", "description_input_hint_text": "Tilføj en beskrivelse...",
"description_input_submit_error": "Fejl med at opdatere beskrivelsen. Tjek loggen for flere detaljer", "description_input_submit_error": "Fejl med at opdatere beskrivelsen. Tjek loggen for flere detaljer",
"deselect_all": "Afmarkér alt",
"details": "DETALJER", "details": "DETALJER",
"direction": "Retning", "direction": "Retning",
"disabled": "Deaktiveret", "disabled": "Deaktiveret",
@@ -774,6 +819,7 @@
"documentation": "Dokumentation", "documentation": "Dokumentation",
"done": "Færdig", "done": "Færdig",
"download": "Hent", "download": "Hent",
"download_action_prompt": "Downloader {count} objekter",
"download_canceled": "Download annulleret", "download_canceled": "Download annulleret",
"download_complete": "Download fuldført", "download_complete": "Download fuldført",
"download_enqueue": "Donload sat i kø", "download_enqueue": "Donload sat i kø",
@@ -800,8 +846,12 @@
"edit": "Rediger", "edit": "Rediger",
"edit_album": "Redigér album", "edit_album": "Redigér album",
"edit_avatar": "Redigér avatar", "edit_avatar": "Redigér avatar",
"edit_birthday": "Rediger fødselsdag",
"edit_date": "Redigér dato", "edit_date": "Redigér dato",
"edit_date_and_time": "Redigér dato og tid", "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": "Rediger beskrivelse",
"edit_description_prompt": "Vælg venligst en ny beskrivelse:", "edit_description_prompt": "Vælg venligst en ny beskrivelse:",
"edit_exclusion_pattern": "Redigér udelukkelsesmønster", "edit_exclusion_pattern": "Redigér udelukkelsesmønster",
@@ -811,6 +861,7 @@
"edit_key": "Redigér nøgle", "edit_key": "Redigér nøgle",
"edit_link": "Rediger link", "edit_link": "Rediger link",
"edit_location": "Rediger placering", "edit_location": "Rediger placering",
"edit_location_action_prompt": "{count} geolokation redigeret",
"edit_location_dialog_title": "Placering", "edit_location_dialog_title": "Placering",
"edit_name": "Rediger navn", "edit_name": "Rediger navn",
"edit_people": "Redigér personer", "edit_people": "Redigér personer",
@@ -829,6 +880,7 @@
"empty_trash": "Tøm papirkurv", "empty_trash": "Tøm papirkurv",
"empty_trash_confirmation": "Er du sikker på, at du vil tømme papirkurven? Dette vil fjerne alle objekter i papirkurven permanent fra Immich.\nDu kan ikke fortryde denne handling!", "empty_trash_confirmation": "Er du sikker på, at du vil tømme papirkurven? Dette vil fjerne alle objekter i papirkurven permanent fra Immich.\nDu kan ikke fortryde denne handling!",
"enable": "Aktivér", "enable": "Aktivér",
"enable_backup": "Aktiver backup",
"enable_biometric_auth_description": "Indtast din PIN kode for at slå biometrisk adgangskontrol til", "enable_biometric_auth_description": "Indtast din PIN kode for at slå biometrisk adgangskontrol til",
"enabled": "Aktiveret", "enabled": "Aktiveret",
"end_date": "Slutdato", "end_date": "Slutdato",
@@ -872,6 +924,7 @@
"failed_to_load_notifications": "Kunne ikke indlæse notifikationer", "failed_to_load_notifications": "Kunne ikke indlæse notifikationer",
"failed_to_load_people": "Indlæsning af personer mislykkedes", "failed_to_load_people": "Indlæsning af personer mislykkedes",
"failed_to_remove_product_key": "Fjernelse af produktnøgle 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_stack_assets": "Det lykkedes ikke at stable mediefiler",
"failed_to_unstack_assets": "Det lykkedes ikke at fjerne gruperingen af mediefiler", "failed_to_unstack_assets": "Det lykkedes ikke at fjerne gruperingen af mediefiler",
"failed_to_update_notification_status": "Kunne ikke uploade notifikations status", "failed_to_update_notification_status": "Kunne ikke uploade notifikations status",
@@ -880,6 +933,7 @@
"paths_validation_failed": "{paths, plural, one {# sti} other {# stier}} slog fejl ved validering", "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.", "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", "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_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_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", "unable_to_add_comment": "Ikke i stand til at tilføje kommentar",
@@ -965,13 +1019,11 @@
}, },
"exif": "Exif", "exif": "Exif",
"exif_bottom_sheet_description": "Tilføj beskrivelse...", "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_details": "DETALJER",
"exif_bottom_sheet_location": "LOKATION", "exif_bottom_sheet_location": "LOKATION",
"exif_bottom_sheet_people": "PERSONER", "exif_bottom_sheet_people": "PERSONER",
"exif_bottom_sheet_person_add_person": "Tilføj navn", "exif_bottom_sheet_person_add_person": "Tilføj navn",
"exif_bottom_sheet_person_age_months": "Alder {months} måned(er)",
"exif_bottom_sheet_person_age_year_months": "Alder 1 år, {months} måned(er)",
"exif_bottom_sheet_person_age_years": "Alder {years}",
"exit_slideshow": "Afslut slideshow", "exit_slideshow": "Afslut slideshow",
"expand_all": "Udvid alle", "expand_all": "Udvid alle",
"experimental_settings_new_asset_list_subtitle": "Under udarbejdelse", "experimental_settings_new_asset_list_subtitle": "Under udarbejdelse",
@@ -985,6 +1037,8 @@
"explorer": "Udforske", "explorer": "Udforske",
"export": "Eksportér", "export": "Eksportér",
"export_as_json": "Eksportér som JSON", "export_as_json": "Eksportér som JSON",
"export_database": "Eksporter database",
"export_database_description": "Eksporter SQLite databasen",
"extension": "Udvidelse", "extension": "Udvidelse",
"external": "Ekstern", "external": "Ekstern",
"external_libraries": "Eksterne biblioteker", "external_libraries": "Eksterne biblioteker",
@@ -996,6 +1050,7 @@
"failed_to_load_assets": "Kunne ikke indlæse mediefiler", "failed_to_load_assets": "Kunne ikke indlæse mediefiler",
"failed_to_load_folder": "Kunne ikke indlæse mappe", "failed_to_load_folder": "Kunne ikke indlæse mappe",
"favorite": "Favorit", "favorite": "Favorit",
"favorite_action_prompt": "{count} føjet til favoritter",
"favorite_or_unfavorite_photo": "Tilføj eller fjern fra yndlingsbilleder", "favorite_or_unfavorite_photo": "Tilføj eller fjern fra yndlingsbilleder",
"favorites": "Favoritter", "favorites": "Favoritter",
"favorites_page_no_favorites": "Ingen favoritter blev fundet", "favorites_page_no_favorites": "Ingen favoritter blev fundet",
@@ -1010,21 +1065,29 @@
"filter_people": "Filtrér personer", "filter_people": "Filtrér personer",
"filter_places": "Filtrer steder", "filter_places": "Filtrer steder",
"find_them_fast": "Find dem hurtigt med søgning via navn", "find_them_fast": "Find dem hurtigt med søgning via navn",
"first": "Første",
"fix_incorrect_match": "Fix forkert match", "fix_incorrect_match": "Fix forkert match",
"folder": "Mappe", "folder": "Mappe",
"folder_not_found": "Mappe ikke fundet", "folder_not_found": "Mappe ikke fundet",
"folders": "Mapper", "folders": "Mapper",
"folders_feature_description": "Gennemse mappevisningen efter fotos og videoer på filsystemet", "folders_feature_description": "Gennemse mappevisningen efter fotos og videoer på filsystemet",
"forgot_pin_code_question": "Har du glemt PIN-koden?",
"forward": "Fremad", "forward": "Fremad",
"gcast_enabled": "Google Cast", "gcast_enabled": "Google Cast",
"gcast_enabled_description": "Denne funktion indlæser eksterne ressourcer fra Google for at virke.", "gcast_enabled_description": "Denne funktion indlæser eksterne ressourcer fra Google for at virke.",
"general": "Generel", "general": "Generel",
"geolocation_instruction_all_have_location": "Alle objekter for denne dato har allerede lokations-data. Prøv at vise alle objekter eller vælg en anden dato",
"geolocation_instruction_location": "Klik på et objekt med GPS-koordinater for at bruge dettes position, eller vælg position direkte på kortet",
"geolocation_instruction_no_date": "Vælg en dato, for at administrere lokationsdata på billeder og videoer fra den dag",
"geolocation_instruction_no_photos": "Ingen fotos eller videoer fundet for den dato. Vælg en anden dato for at vise dem",
"get_help": "Få hjælp", "get_help": "Få hjælp",
"get_wifiname_error": "Kunne ikke hente Wi-Fi-navn. Sørg for, at du har givet de nødvendige tilladelser og er forbundet til et Wi-Fi-netværk", "get_wifiname_error": "Kunne ikke hente Wi-Fi-navn. Sørg for, at du har givet de nødvendige tilladelser og er forbundet til et Wi-Fi-netværk",
"getting_started": "Kom godt i gang", "getting_started": "Kom godt i gang",
"go_back": "Gå tilbage", "go_back": "Gå tilbage",
"go_to_folder": "Gå til mappe", "go_to_folder": "Gå til mappe",
"go_to_search": "Gå til søgning", "go_to_search": "Gå til søgning",
"gps": "GPS",
"gps_missing": "Ingen GPS",
"grant_permission": "Giv tilladelse", "grant_permission": "Giv tilladelse",
"group_albums_by": "Gruppér albummer efter...", "group_albums_by": "Gruppér albummer efter...",
"group_country": "Gruppér efter land", "group_country": "Gruppér efter land",
@@ -1035,6 +1098,9 @@
"haptic_feedback_switch": "Slå haptisk feedback til", "haptic_feedback_switch": "Slå haptisk feedback til",
"haptic_feedback_title": "Haptisk feedback", "haptic_feedback_title": "Haptisk feedback",
"has_quota": "Har kvote", "has_quota": "Har kvote",
"hash_asset": "Hash objekter",
"hashed_assets": "Hashede objekter",
"hashing": "Hasher",
"header_settings_add_header_tip": "Tilføj Header", "header_settings_add_header_tip": "Tilføj Header",
"header_settings_field_validator_msg": "Værdi kan ikke være tom", "header_settings_field_validator_msg": "Værdi kan ikke være tom",
"header_settings_header_name_input": "Header navn", "header_settings_header_name_input": "Header navn",
@@ -1057,7 +1123,7 @@
"home_page_building_timeline": "Bygger tidslinjen", "home_page_building_timeline": "Bygger tidslinjen",
"home_page_delete_err_partner": "Kan endnu ikke slette partners elementer. Springer over", "home_page_delete_err_partner": "Kan endnu ikke slette partners elementer. Springer over",
"home_page_delete_remote_err_local": "Lokale elementer i fjernsletningssektion. Springer over", "home_page_delete_remote_err_local": "Lokale elementer i fjernsletningssektion. Springer over",
"home_page_favorite_err_local": "Kan endnu ikke gøre lokale elementer til favoritter, springer over.", "home_page_favorite_err_local": "Det er ikke muligt at gøre lokale elementer til favoritter endnu, springer over",
"home_page_favorite_err_partner": "Kan endnu ikke tilføje partners elementer som favoritter. Springer over", "home_page_favorite_err_partner": "Kan endnu ikke tilføje partners elementer som favoritter. Springer over",
"home_page_first_time_notice": "Hvis det er din første gang i appen, bedes du vælge en sikkerhedskopi af albummer så tidlinjen kan blive fyldt med billeder og videoer fra albummerne", "home_page_first_time_notice": "Hvis det er din første gang i appen, bedes du vælge en sikkerhedskopi af albummer så tidlinjen kan blive fyldt med billeder og videoer fra albummerne",
"home_page_locked_error_local": "Kan ikke flytte lokale mediefiler til låst mappe, springer over", "home_page_locked_error_local": "Kan ikke flytte lokale mediefiler til låst mappe, springer over",
@@ -1066,7 +1132,9 @@
"home_page_upload_err_limit": "Det er kun muligt at lave sikkerhedskopi af 30 elementer ad gangen. Springer over", "home_page_upload_err_limit": "Det er kun muligt at lave sikkerhedskopi af 30 elementer ad gangen. Springer over",
"host": "Host", "host": "Host",
"hour": "Time", "hour": "Time",
"hours": "Timer",
"id": "ID", "id": "ID",
"idle": "Inaktiv",
"ignore_icloud_photos": "Ignorer iCloud-billeder", "ignore_icloud_photos": "Ignorer iCloud-billeder",
"ignore_icloud_photos_description": "Billeder der er gemt på iCloud vil ikke blive uploadet til Immich-serveren", "ignore_icloud_photos_description": "Billeder der er gemt på iCloud vil ikke blive uploadet til Immich-serveren",
"image": "Billede", "image": "Billede",
@@ -1124,10 +1192,13 @@
"language_no_results_title": "Ingen sprog fundet", "language_no_results_title": "Ingen sprog fundet",
"language_search_hint": "Vælg sprog...", "language_search_hint": "Vælg sprog...",
"language_setting_description": "Vælg dit foretrukne sprog", "language_setting_description": "Vælg dit foretrukne sprog",
"large_files": "Store filer",
"last": "Sidste",
"last_seen": "Sidst set", "last_seen": "Sidst set",
"latest_version": "Seneste version", "latest_version": "Seneste version",
"latitude": "Breddegrad", "latitude": "Breddegrad",
"leave": "Forlad", "leave": "Forlad",
"leave_album": "Forlad album",
"lens_model": "Objektivmodel", "lens_model": "Objektivmodel",
"let_others_respond": "Lad andre svare", "let_others_respond": "Lad andre svare",
"level": "Niveau", "level": "Niveau",
@@ -1139,7 +1210,9 @@
"library_page_sort_created": "Senest oprettet", "library_page_sort_created": "Senest oprettet",
"library_page_sort_last_modified": "Sidst redigeret", "library_page_sort_last_modified": "Sidst redigeret",
"library_page_sort_title": "Albumtitel", "library_page_sort_title": "Albumtitel",
"licenses": "Licenser",
"light": "Lys", "light": "Lys",
"like": "Synes om",
"like_deleted": "Ligesom slettet", "like_deleted": "Ligesom slettet",
"link_motion_video": "Link bevægelsesvideo", "link_motion_video": "Link bevægelsesvideo",
"link_to_oauth": "Link til OAuth", "link_to_oauth": "Link til OAuth",
@@ -1147,7 +1220,9 @@
"list": "Liste", "list": "Liste",
"loading": "Indlæser", "loading": "Indlæser",
"loading_search_results_failed": "Indlæsning af søgeresultater fejlede", "loading_search_results_failed": "Indlæsning af søgeresultater fejlede",
"local": "Lokal",
"local_asset_cast_failed": "Kan ikke caste et aktiv, der ikke er uploadet til serveren", "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": "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", "local_network_sheet_info": "Appen vil oprette forbindelse til serveren via denne URL, når du bruger det angivne WiFi-netværk",
"location_permission": "Tilladelse til placering", "location_permission": "Tilladelse til placering",
@@ -1161,6 +1236,7 @@
"locked_folder": "Låst mappe", "locked_folder": "Låst mappe",
"log_out": "Log ud", "log_out": "Log ud",
"log_out_all_devices": "Log ud af alle enheder", "log_out_all_devices": "Log ud af alle enheder",
"logged_in_as": "Logget ind som {user}",
"logged_out_all_devices": "Logget ud af alle enheder", "logged_out_all_devices": "Logget ud af alle enheder",
"logged_out_device": "Logget ud af enhed", "logged_out_device": "Logget ud af enhed",
"login": "Log ind", "login": "Log ind",
@@ -1169,7 +1245,7 @@
"login_form_back_button_text": "Tilbage", "login_form_back_button_text": "Tilbage",
"login_form_email_hint": "din-e-mail@e-mail.com", "login_form_email_hint": "din-e-mail@e-mail.com",
"login_form_endpoint_hint": "http://din-server-ip:port", "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_http": "Angiv venligst http:// eller https://",
"login_form_err_invalid_email": "Ugyldig e-mail", "login_form_err_invalid_email": "Ugyldig e-mail",
"login_form_err_invalid_url": "Ugyldig webadresse", "login_form_err_invalid_url": "Ugyldig webadresse",
@@ -1188,13 +1264,14 @@
"login_password_changed_success": "Kodeordet blev opdateret", "login_password_changed_success": "Kodeordet blev opdateret",
"logout_all_device_confirmation": "Er du sikker på, at du vil logge ud af alle enheder?", "logout_all_device_confirmation": "Er du sikker på, at du vil logge ud af alle enheder?",
"logout_this_device_confirmation": "Er du sikker på, at du vil logge denne enhed ud?", "logout_this_device_confirmation": "Er du sikker på, at du vil logge denne enhed ud?",
"longitude": "Længde", "longitude": "Længdegrad",
"look": "Kig", "look": "Kig",
"loop_videos": "Gentag videoer", "loop_videos": "Gentag videoer",
"loop_videos_description": "Aktivér for at genafspille videoer automatisk i detaljeret visning.", "loop_videos_description": "Aktivér for at genafspille videoer automatisk i detaljeret visning.",
"main_branch_warning": "Du bruger en udviklingsversion; vi anbefaler kraftigt at bruge en udgivelsesversion!", "main_branch_warning": "Du bruger en udviklingsversion; vi anbefaler kraftigt at bruge en udgivelsesversion!",
"main_menu": "Hovedmenu", "main_menu": "Hovedmenu",
"make": "Producent", "make": "Producent",
"manage_geolocation": "Administrer placering",
"manage_shared_links": "Håndter delte links", "manage_shared_links": "Håndter delte links",
"manage_sharing_with_partners": "Administrér deling med partnere", "manage_sharing_with_partners": "Administrér deling med partnere",
"manage_the_app_settings": "Administrer appindstillinger", "manage_the_app_settings": "Administrer appindstillinger",
@@ -1203,7 +1280,7 @@
"manage_your_devices": "Administrér dine enheder der er logget ind", "manage_your_devices": "Administrér dine enheder der er logget ind",
"manage_your_oauth_connection": "Administrér din OAuth-tilslutning", "manage_your_oauth_connection": "Administrér din OAuth-tilslutning",
"map": "Kort", "map": "Kort",
"map_assets_in_bounds": "{count} billeder", "map_assets_in_bounds": "{count, plural, =0 {Ingen billeder i dette område} one {# billede} other {# billeder}}",
"map_cannot_get_user_location": "Kan ikke finde brugerens placering", "map_cannot_get_user_location": "Kan ikke finde brugerens placering",
"map_location_dialog_yes": "Ja", "map_location_dialog_yes": "Ja",
"map_location_picker_page_use_location": "Brug denne placering", "map_location_picker_page_use_location": "Brug denne placering",
@@ -1211,7 +1288,6 @@
"map_location_service_disabled_title": "Placeringstjenesten er deaktiveret", "map_location_service_disabled_title": "Placeringstjenesten er deaktiveret",
"map_marker_for_images": "Kortmarkør for billeder taget i {city}, {country}", "map_marker_for_images": "Kortmarkør for billeder taget i {city}, {country}",
"map_marker_with_image": "Kortmarkør med billede", "map_marker_with_image": "Kortmarkør med billede",
"map_no_assets_in_bounds": "Der er ingen billeder i dette område",
"map_no_location_permission_content": "Der kræves tilladelse til placeringen for at vise elementer fra din nuværende placering. Vil du give tilladelse?", "map_no_location_permission_content": "Der kræves tilladelse til placeringen for at vise elementer fra din nuværende placering. Vil du give tilladelse?",
"map_no_location_permission_title": "Placeringstilladelse blev afvist", "map_no_location_permission_title": "Placeringstilladelse blev afvist",
"map_settings": "Kortindstillinger", "map_settings": "Kortindstillinger",
@@ -1248,6 +1324,7 @@
"merged_people_count": "{count, plural, one {# person} other {# personer}} lagt sammen", "merged_people_count": "{count, plural, one {# person} other {# personer}} lagt sammen",
"minimize": "Minimér", "minimize": "Minimér",
"minute": "Minut", "minute": "Minut",
"minutes": "Minutter",
"missing": "Mangler", "missing": "Mangler",
"model": "Model", "model": "Model",
"month": "Måned", "month": "Måned",
@@ -1255,6 +1332,7 @@
"more": "Mere", "more": "Mere",
"move": "Flyt", "move": "Flyt",
"move_off_locked_folder": "Flyt ud af låst mappe", "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": "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", "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", "moved_to_archive": "Flyttede {count, plural, one {# mediefil} other {# mediefiler}} til arkivet",
@@ -1266,6 +1344,9 @@
"my_albums": "Mine albummer", "my_albums": "Mine albummer",
"name": "Navn", "name": "Navn",
"name_or_nickname": "Navn eller kælenavn", "name_or_nickname": "Navn eller kælenavn",
"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_settings": "Netværk",
"networking_subtitle": "Administrer serverens endepunktindstillinger", "networking_subtitle": "Administrer serverens endepunktindstillinger",
"never": "aldrig", "never": "aldrig",
@@ -1301,6 +1382,7 @@
"no_results": "Ingen resultater", "no_results": "Ingen resultater",
"no_results_description": "Prøv et synonym eller et mere generelt søgeord", "no_results_description": "Prøv et synonym eller et mere generelt søgeord",
"no_shared_albums_message": "Opret et album for at dele billeder og videoer med personer i dit netværk", "no_shared_albums_message": "Opret et album for at dele billeder og videoer med personer i dit netværk",
"no_uploads_in_progress": "Ingen upload i gang",
"not_in_any_album": "Ikke i noget album", "not_in_any_album": "Ikke i noget album",
"not_selected": "Ikke valgt", "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", "note_apply_storage_label_to_previously_uploaded assets": "Bemærk: For at anvende Lagringsmærkat på tidligere uploadede medier, kør",
@@ -1316,6 +1398,7 @@
"oauth": "OAuth", "oauth": "OAuth",
"official_immich_resources": "Officielle Immich-ressourcer", "official_immich_resources": "Officielle Immich-ressourcer",
"offline": "Offline", "offline": "Offline",
"offset": "Forskydning",
"ok": "Ok", "ok": "Ok",
"oldest_first": "Ældste først", "oldest_first": "Ældste først",
"on_this_device": "På denne enhed", "on_this_device": "På denne enhed",
@@ -1338,6 +1421,7 @@
"original": "original", "original": "original",
"other": "Andet", "other": "Andet",
"other_devices": "Andre enheder", "other_devices": "Andre enheder",
"other_entities": "Andre enheder",
"other_variables": "Andre variable", "other_variables": "Andre variable",
"owned": "Egne", "owned": "Egne",
"owner": "Ejer", "owner": "Ejer",
@@ -1392,6 +1476,9 @@
"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_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.", "permission_onboarding_request": "Immich kræver tilliadelse til at se dine billeder og videoer.",
"person": "Person", "person": "Person",
"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_birthdate": "Født den {date}",
"person_hidden": "{name}{hidden, select, true { (skjult)} other {}}", "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.", "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.",
@@ -1431,6 +1518,7 @@
"profile_drawer_client_out_of_date_minor": "Mobilapp er forældet. Opdater venligst til den nyeste mindre version.", "profile_drawer_client_out_of_date_minor": "Mobilapp er forældet. Opdater venligst til den nyeste mindre version.",
"profile_drawer_client_server_up_to_date": "Klient og server er ajour", "profile_drawer_client_server_up_to_date": "Klient og server er ajour",
"profile_drawer_github": "GitHub", "profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Skrivebeskyttet tilstand aktiveret. Dobbeltklik 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_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_drawer_server_out_of_date_minor": "Server er forældet. Opdater venligst til den nyeste mindre version.",
"profile_image_of_user": "Profilbillede af {user}", "profile_image_of_user": "Profilbillede af {user}",
@@ -1466,15 +1554,18 @@
"purchase_remove_server_product_key": "Fjern serverens produktnøgle", "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_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_1": "For hele serveren",
"purchase_server_description_2": "Supporter status", "purchase_server_description_2": "Supporterstatus",
"purchase_server_title": "Server", "purchase_server_title": "Server",
"purchase_settings_server_activated": "Serverens produktnøgle administreres af administratoren", "purchase_settings_server_activated": "Serverens produktnøgle administreres af administratoren",
"queue_status": "Kø {count}/{total}",
"rating": "Stjernebedømmelse", "rating": "Stjernebedømmelse",
"rating_clear": "Nulstil vurdering", "rating_clear": "Nulstil vurdering",
"rating_count": "{count, plural, one {# stjerne} other {# stjerner}}", "rating_count": "{count, plural, one {# stjerne} other {# stjerner}}",
"rating_description": "Vis EXIF-klassificeringen i infopanelet", "rating_description": "Vis EXIF-klassificeringen i infopanelet",
"reaction_options": "Reaktionsindstillinger", "reaction_options": "Reaktionsindstillinger",
"read_changelog": "Læs ændringslog", "read_changelog": "Læs ændringslog",
"readonly_mode_disabled": "Skrivebeskyttet tilstand deaktiveret",
"readonly_mode_enabled": "Skrivebeskyttet tilstand aktiveret",
"reassign": "Gentildel", "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_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", "reassigned_assets_to_new_person": "Gentildelt {count, plural, one {# aktiv} other {# aktiver}} til en ny person",
@@ -1497,6 +1588,8 @@
"refreshing_faces": "Opdaterer ansigter", "refreshing_faces": "Opdaterer ansigter",
"refreshing_metadata": "Opdaterer metadata", "refreshing_metadata": "Opdaterer metadata",
"regenerating_thumbnails": "Regenererer forhåndsvisninger", "regenerating_thumbnails": "Regenererer forhåndsvisninger",
"remote": "Eksternt",
"remote_assets": "Eksterne objekter",
"remove": "Fjern", "remove": "Fjern",
"remove_assets_album_confirmation": "Er du sikker på, at du vil fjerne {count, plural, one {# aktiv} other {# aktiver}} fra albummet?", "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?", "remove_assets_shared_link_confirmation": "Er du sikker på, at du vil fjerne {count, plural, one {# aktiv} other {# aktiver}} fra dette delte link?",
@@ -1504,7 +1597,9 @@
"remove_custom_date_range": "Fjern tilpasset datointerval", "remove_custom_date_range": "Fjern tilpasset datointerval",
"remove_deleted_assets": "Fjern slettede mediefiler", "remove_deleted_assets": "Fjern slettede mediefiler",
"remove_from_album": "Fjern fra album", "remove_from_album": "Fjern fra album",
"remove_from_album_action_prompt": "{count} fjernet fra albummet",
"remove_from_favorites": "Fjern fra favoritter", "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": "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_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", "remove_from_shared_link": "Fjern fra delt link",
@@ -1532,19 +1627,28 @@
"reset_password": "Nulstil adgangskode", "reset_password": "Nulstil adgangskode",
"reset_people_visibility": "Nulstil personsynlighed", "reset_people_visibility": "Nulstil personsynlighed",
"reset_pin_code": "Nulstil PIN kode", "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", "reset_to_default": "Nulstil til standard",
"resolve_duplicates": "Løs dubletter", "resolve_duplicates": "Løs dubletter",
"resolved_all_duplicates": "Alle dubletter løst", "resolved_all_duplicates": "Alle dubletter løst",
"restore": "Gendan", "restore": "Gendan",
"restore_all": "Gendan alle", "restore_all": "Gendan alle",
"restore_trash_action_prompt": "{count} genskabt fra papirkurven",
"restore_user": "Gendan bruger", "restore_user": "Gendan bruger",
"restored_asset": "Gendannet mediefilen", "restored_asset": "Gendannet mediefilen",
"resume": "Genoptag", "resume": "Genoptag",
"retry_upload": "Forsøg upload igen", "retry_upload": "Forsøg upload igen",
"review_duplicates": "Gennemgå dubletter", "review_duplicates": "Gennemgå dubletter",
"review_large_files": "Gennemgå store filer",
"role": "Rolle", "role": "Rolle",
"role_editor": "Redaktør", "role_editor": "Redaktør",
"role_viewer": "Seer", "role_viewer": "Seer",
"running": "Kører",
"save": "Gem", "save": "Gem",
"save_to_gallery": "Gem til galleri", "save_to_gallery": "Gem til galleri",
"saved_api_key": "Gemt API-nøgle", "saved_api_key": "Gemt API-nøgle",
@@ -1617,6 +1721,7 @@
"select_album_cover": "Vælg albumcover", "select_album_cover": "Vælg albumcover",
"select_all": "Vælg alle", "select_all": "Vælg alle",
"select_all_duplicates": "Vælg alle dubletter", "select_all_duplicates": "Vælg alle dubletter",
"select_all_in": "Vælg alt i {group}",
"select_avatar_color": "Vælg avatarfarve", "select_avatar_color": "Vælg avatarfarve",
"select_face": "Vælg ansigt", "select_face": "Vælg ansigt",
"select_featured_photo": "Vælg forsidebillede", "select_featured_photo": "Vælg forsidebillede",
@@ -1630,6 +1735,7 @@
"select_user_for_sharing_page_err_album": "Fejlede i at oprette et nyt album", "select_user_for_sharing_page_err_album": "Fejlede i at oprette et nyt album",
"selected": "Valgt", "selected": "Valgt",
"selected_count": "{count, plural, one {# valgt} other {# valgte}}", "selected_count": "{count, plural, one {# valgt} other {# valgte}}",
"selected_gps_coordinates": "Valgte GPS-koordinater",
"send_message": "Send besked", "send_message": "Send besked",
"send_welcome_email": "Send velkomstemail", "send_welcome_email": "Send velkomstemail",
"server_endpoint": "Server endepunkt", "server_endpoint": "Server endepunkt",
@@ -1655,7 +1761,7 @@
"setting_image_viewer_preview_title": "Indlæs forhåndsvisning af billedet", "setting_image_viewer_preview_title": "Indlæs forhåndsvisning af billedet",
"setting_image_viewer_title": "Billeder", "setting_image_viewer_title": "Billeder",
"setting_languages_apply": "Anvend", "setting_languages_apply": "Anvend",
"setting_languages_subtitle": "Ændrer app-sprog", "setting_languages_subtitle": "Ændr app-sprog",
"setting_notifications_notify_failures_grace_period": "Giv besked om fejl med sikkerhedskopiering i baggrunden: {duration}", "setting_notifications_notify_failures_grace_period": "Giv besked om fejl med sikkerhedskopiering i baggrunden: {duration}",
"setting_notifications_notify_hours": "{count} timer", "setting_notifications_notify_hours": "{count} timer",
"setting_notifications_notify_immediately": "med det samme", "setting_notifications_notify_immediately": "med det samme",
@@ -1667,7 +1773,7 @@
"setting_notifications_subtitle": "Tilpas dine notifikationspræferencer", "setting_notifications_subtitle": "Tilpas dine notifikationspræferencer",
"setting_notifications_total_progress_subtitle": "Samlet uploadstatus (færdige/samlet antal elementer)", "setting_notifications_total_progress_subtitle": "Samlet uploadstatus (færdige/samlet antal elementer)",
"setting_notifications_total_progress_title": "Vis samlet baggrundsuploadstatus", "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_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", "setting_video_viewer_original_video_title": "Tving original video",
"settings": "Indstillinger", "settings": "Indstillinger",
@@ -1675,6 +1781,7 @@
"settings_saved": "Indstillinger er gemt", "settings_saved": "Indstillinger er gemt",
"setup_pin_code": "Sæt in PIN kode", "setup_pin_code": "Sæt in PIN kode",
"share": "Del", "share": "Del",
"share_action_prompt": "Delte {count} objekter",
"share_add_photos": "Tilføj billeder", "share_add_photos": "Tilføj billeder",
"share_assets_selected": "{count} valgt", "share_assets_selected": "{count} valgt",
"share_dialog_preparing": "Forbereder...", "share_dialog_preparing": "Forbereder...",
@@ -1696,6 +1803,7 @@
"shared_link_clipboard_copied_massage": "Kopieret til udklipsholderen", "shared_link_clipboard_copied_massage": "Kopieret til udklipsholderen",
"shared_link_clipboard_text": "Link: {link}\nAdgangskode: {password}", "shared_link_clipboard_text": "Link: {link}\nAdgangskode: {password}",
"shared_link_create_error": "Der opstod en fejl i oprettelsen af et delt link", "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_description_hint": "Indtast beskrivelse",
"shared_link_edit_expire_after_option_day": "1 dag", "shared_link_edit_expire_after_option_day": "1 dag",
"shared_link_edit_expire_after_option_days": "{count} dage", "shared_link_edit_expire_after_option_days": "{count} dage",
@@ -1721,6 +1829,7 @@
"shared_link_info_chip_metadata": "EXIF", "shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Håndter delte links", "shared_link_manage_links": "Håndter delte links",
"shared_link_options": "Muligheder for delt link", "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": "Delte links",
"shared_links_description": "Del billeder og videoer med et link", "shared_links_description": "Del billeder og videoer med et link",
"shared_photos_and_videos_count": "{assetCount, plural, other {# delte billeder & videoer.}}", "shared_photos_and_videos_count": "{assetCount, plural, other {# delte billeder & videoer.}}",
@@ -1737,8 +1846,10 @@
"shift_to_permanent_delete": "tryk på ⇧ for at slette aktiv permanent", "shift_to_permanent_delete": "tryk på ⇧ for at slette aktiv permanent",
"show_album_options": "Vis albumindstillinger", "show_album_options": "Vis albumindstillinger",
"show_albums": "Vis albummer", "show_albums": "Vis albummer",
"show_all_assets": "Vis alle objekter",
"show_all_people": "Vis alle personer", "show_all_people": "Vis alle personer",
"show_and_hide_people": "Vis & skjul personer", "show_and_hide_people": "Vis & skjul personer",
"show_assets_without_location": "Vis objekter uden lokation",
"show_file_location": "Vis filplacering", "show_file_location": "Vis filplacering",
"show_gallery": "Vis galleri", "show_gallery": "Vis galleri",
"show_hidden_people": "Vis skjulte personer", "show_hidden_people": "Vis skjulte personer",
@@ -1770,12 +1881,14 @@
"sort_created": "Dato oprettet", "sort_created": "Dato oprettet",
"sort_items": "Antal genstande", "sort_items": "Antal genstande",
"sort_modified": "Ændret dato", "sort_modified": "Ændret dato",
"sort_newest": "Nyeste foto",
"sort_oldest": "Ældste foto", "sort_oldest": "Ældste foto",
"sort_people_by_similarity": "Sorter efter personer der ligner hinanden", "sort_people_by_similarity": "Sorter efter personer der ligner hinanden",
"sort_recent": "Seneste foto", "sort_recent": "Seneste foto",
"sort_title": "Titel", "sort_title": "Titel",
"source": "Kilde", "source": "Kilde",
"stack": "Stak", "stack": "Stak",
"stack_action_prompt": "{count} stakket",
"stack_duplicates": "Stak dubletter", "stack_duplicates": "Stak dubletter",
"stack_select_one_photo": "Vælg ét hovedbillede til stakken", "stack_select_one_photo": "Vælg ét hovedbillede til stakken",
"stack_selected_photos": "Stak valgte billeder", "stack_selected_photos": "Stak valgte billeder",
@@ -1795,6 +1908,7 @@
"storage_quota": "Lagringskvota", "storage_quota": "Lagringskvota",
"storage_usage": "{used} ud af {available} brugt", "storage_usage": "{used} ud af {available} brugt",
"submit": "Indsend", "submit": "Indsend",
"success": "Vellykket",
"suggestions": "Anbefalinger", "suggestions": "Anbefalinger",
"sunrise_on_the_beach": "Solopgang på stranden", "sunrise_on_the_beach": "Solopgang på stranden",
"support": "Support", "support": "Support",
@@ -1804,6 +1918,8 @@
"sync": "Synkronisér", "sync": "Synkronisér",
"sync_albums": "Synkroniser albummer", "sync_albums": "Synkroniser albummer",
"sync_albums_manual_subtitle": "Synkroniser alle uploadet billeder og videoer til de valgte backupalbummer", "sync_albums_manual_subtitle": "Synkroniser alle uploadet billeder og videoer til de valgte backupalbummer",
"sync_local": "Synkroniser lokalt",
"sync_remote": "Synkroniser eksternt",
"sync_upload_album_setting_subtitle": "Opret og upload dine billeder og videoer til de valgte albummer i Immich", "sync_upload_album_setting_subtitle": "Opret og upload dine billeder og videoer til de valgte albummer i Immich",
"tag": "Tag", "tag": "Tag",
"tag_assets": "Tag mediefiler", "tag_assets": "Tag mediefiler",
@@ -1814,6 +1930,7 @@
"tag_updated": "Opdateret tag: {tag}", "tag_updated": "Opdateret tag: {tag}",
"tagged_assets": "Tagget {count, plural, one {# aktiv} other {# aktiver}}", "tagged_assets": "Tagget {count, plural, one {# aktiv} other {# aktiver}}",
"tags": "Tags", "tags": "Tags",
"tap_to_run_job": "Tryk for at køre jobbet",
"template": "Skabelon", "template": "Skabelon",
"theme": "Tema", "theme": "Tema",
"theme_selection": "Temavalg", "theme_selection": "Temavalg",
@@ -1840,12 +1957,15 @@
"to_change_password": "Skift adgangskode", "to_change_password": "Skift adgangskode",
"to_favorite": "Gør til favorit", "to_favorite": "Gør til favorit",
"to_login": "Login", "to_login": "Login",
"to_multi_select": "For at vælge flere",
"to_parent": "Gå op", "to_parent": "Gå op",
"to_select": "for at vælge",
"to_trash": "Papirkurv", "to_trash": "Papirkurv",
"toggle_settings": "Slå indstillinger til eller fra", "toggle_settings": "Slå indstillinger til eller fra",
"total": "Total", "total": "Total",
"total_usage": "Samlet forbrug", "total_usage": "Samlet forbrug",
"trash": "Papirkurv", "trash": "Papirkurv",
"trash_action_prompt": "{count} flyttet til papirkurven",
"trash_all": "Smid alle ud", "trash_all": "Smid alle ud",
"trash_count": "Slet {count, number}", "trash_count": "Slet {count, number}",
"trash_delete_asset": "Flyt mediefil til Papirkurv", "trash_delete_asset": "Flyt mediefil til Papirkurv",
@@ -1863,9 +1983,11 @@
"unable_to_change_pin_code": "Kunne ikke ændre PIN kode", "unable_to_change_pin_code": "Kunne ikke ændre PIN kode",
"unable_to_setup_pin_code": "Kunne ikke sætte PIN kode", "unable_to_setup_pin_code": "Kunne ikke sætte PIN kode",
"unarchive": "Afakivér", "unarchive": "Afakivér",
"unarchive_action_prompt": "{count} slettet fra Arkiv",
"unarchived_count": "{count, plural, other {Uarkiveret #}}", "unarchived_count": "{count, plural, other {Uarkiveret #}}",
"undo": "Fortryd", "undo": "Fortryd",
"unfavorite": "Fjern favorit", "unfavorite": "Fjern favorit",
"unfavorite_action_prompt": "{count} slettet fra Favoritter",
"unhide_person": "Stop med at skjule person", "unhide_person": "Stop med at skjule person",
"unknown": "Ukendt", "unknown": "Ukendt",
"unknown_country": "Ukendt land", "unknown_country": "Ukendt land",
@@ -1881,16 +2003,23 @@
"unsaved_change": "Ændring, der ikke er gemt", "unsaved_change": "Ændring, der ikke er gemt",
"unselect_all": "Fravælg alle", "unselect_all": "Fravælg alle",
"unselect_all_duplicates": "Fjern markeringen af alle dubletter", "unselect_all_duplicates": "Fjern markeringen af alle dubletter",
"unselect_all_in": "Afmarkér alle i {group}",
"unstack": "Fjern fra stak", "unstack": "Fjern fra stak",
"unstack_action_prompt": "{count} ustakket",
"unstacked_assets_count": "Ikke-stablet {count, plural, one {# aktiv} other {# aktiver}}", "unstacked_assets_count": "Ikke-stablet {count, plural, one {# aktiv} other {# aktiver}}",
"untagged": "Umærket",
"up_next": "Næste", "up_next": "Næste",
"update_location_action_prompt": "Opdater lokationen for {count} valgte objekter med:",
"updated_at": "Opdateret", "updated_at": "Opdateret",
"updated_password": "Opdaterede adgangskode", "updated_password": "Opdaterede adgangskode",
"upload": "Upload", "upload": "Upload",
"upload_action_prompt": "{count} i kø til upload",
"upload_concurrency": "Upload samtidighed", "upload_concurrency": "Upload samtidighed",
"upload_details": "Upload detaljer",
"upload_dialog_info": "Vil du sikkerhedskopiere de(t) valgte element(er) til serveren?", "upload_dialog_info": "Vil du sikkerhedskopiere de(t) valgte element(er) til serveren?",
"upload_dialog_title": "Upload element", "upload_dialog_title": "Upload element",
"upload_errors": "Upload afsluttet med {count, plural, one {# fejl} other {# fejl}}. Opdater siden for at se nye uploadaktiver.", "upload_errors": "Upload afsluttet med {count, plural, one {# fejl} other {# fejl}}. Opdater siden for at se nye uploadaktiver.",
"upload_finished": "Upload fuldført",
"upload_progress": "Resterende {remaining, number} - Behandlet {processed, number}/{total, number}", "upload_progress": "Resterende {remaining, number} - Behandlet {processed, number}/{total, number}",
"upload_skipped_duplicates": "Sprang over {count, plural, one {# duplet aktiv} other {# duplikerede aktiver}}", "upload_skipped_duplicates": "Sprang over {count, plural, one {# duplet aktiv} other {# duplikerede aktiver}}",
"upload_status_duplicates": "Dubletter", "upload_status_duplicates": "Dubletter",
@@ -1899,11 +2028,13 @@
"upload_success": "Upload gennemført. Opdater siden for at se nye uploadaktiver.", "upload_success": "Upload gennemført. Opdater siden for at se nye uploadaktiver.",
"upload_to_immich": "Upload til Immich ({count})", "upload_to_immich": "Upload til Immich ({count})",
"uploading": "Uploader", "uploading": "Uploader",
"uploading_media": "Uploader media",
"url": "URL", "url": "URL",
"usage": "Forbrug", "usage": "Forbrug",
"use_biometric": "Brug biometrisk", "use_biometric": "Brug biometrisk",
"use_current_connection": "brug nuværende forbindelse", "use_current_connection": "brug nuværende forbindelse",
"use_custom_date_range": "Brug tilpasset datointerval i stedet", "use_custom_date_range": "Brug tilpasset datointerval i stedet",
"use_this_location": "Klik for at benytte lokationen",
"user": "Bruger", "user": "Bruger",
"user_has_been_deleted": "Denne bruger er slettet.", "user_has_been_deleted": "Denne bruger er slettet.",
"user_id": "Bruger-ID", "user_id": "Bruger-ID",
@@ -1919,6 +2050,7 @@
"user_usage_stats_description": "Vis konto anvendelsesstatistik", "user_usage_stats_description": "Vis konto anvendelsesstatistik",
"username": "Brugernavn", "username": "Brugernavn",
"users": "Brugere", "users": "Brugere",
"users_added_to_album_count": "Føjet {count, plural, one {# bruker} other {# brukere}} til albummet",
"utilities": "Værktøjer", "utilities": "Værktøjer",
"validate": "Validér", "validate": "Validér",
"validate_endpoint_error": "Indtast en gyldig URL", "validate_endpoint_error": "Indtast en gyldig URL",
@@ -1937,6 +2069,7 @@
"view_album": "Se album", "view_album": "Se album",
"view_all": "Se alle", "view_all": "Se alle",
"view_all_users": "Se alle brugere", "view_all_users": "Se alle brugere",
"view_details": "Vis detaljer",
"view_in_timeline": "Se på tidslinjen", "view_in_timeline": "Se på tidslinjen",
"view_link": "Vis Link", "view_link": "Vis Link",
"view_links": "Vis links", "view_links": "Vis links",

View File

@@ -18,7 +18,7 @@
"add_endpoint": "Endpunkt hinzufügen", "add_endpoint": "Endpunkt hinzufügen",
"add_exclusion_pattern": "Ausschlussmuster hinzufügen", "add_exclusion_pattern": "Ausschlussmuster hinzufügen",
"add_import_path": "Importpfad hinzufügen", "add_import_path": "Importpfad hinzufügen",
"add_location": "Ort hinzufügen", "add_location": "Standort hinzufügen",
"add_more_users": "Weitere Nutzer hinzufügen", "add_more_users": "Weitere Nutzer hinzufügen",
"add_partner": "Partner hinzufügen", "add_partner": "Partner hinzufügen",
"add_path": "Pfad hinzufügen", "add_path": "Pfad hinzufügen",
@@ -28,6 +28,9 @@
"add_to_album": "Zu Album hinzufügen", "add_to_album": "Zu Album hinzufügen",
"add_to_album_bottom_sheet_added": "Zu {album} hinzugefügt", "add_to_album_bottom_sheet_added": "Zu {album} hinzugefügt",
"add_to_album_bottom_sheet_already_exists": "Bereits in {album}", "add_to_album_bottom_sheet_already_exists": "Bereits in {album}",
"add_to_album_toggle": "Auswahl umschalten für {album}",
"add_to_albums": "Zu Alben hinzufügen",
"add_to_albums_count": "Zu Alben hinzufügen ({count})",
"add_to_shared_album": "Zu geteiltem Album hinzufügen", "add_to_shared_album": "Zu geteiltem Album hinzufügen",
"add_url": "URL hinzufügen", "add_url": "URL hinzufügen",
"added_to_archive": "Zum Archiv hinzugefügt", "added_to_archive": "Zum Archiv hinzugefügt",
@@ -355,6 +358,9 @@
"trash_number_of_days_description": "Anzahl der Tage, welche die Objekte im Papierkorb verbleiben, bevor sie endgültig entfernt werden", "trash_number_of_days_description": "Anzahl der Tage, welche die Objekte im Papierkorb verbleiben, bevor sie endgültig entfernt werden",
"trash_settings": "Papierkorbeinstellungen", "trash_settings": "Papierkorbeinstellungen",
"trash_settings_description": "Papierkorbeinstellungen verwalten", "trash_settings_description": "Papierkorbeinstellungen verwalten",
"unlink_all_oauth_accounts": "Aus allen OAuth Konten ausloggen",
"unlink_all_oauth_accounts_description": "Denken Sie daran, alle OAuth Konten zu deaktivieren, bevor Sie zu einem neuen Anbieter migrieren.",
"unlink_all_oauth_accounts_prompt": "Sind Sie sich sicher, dass Sie alle OAuth Konten deaktivieren möchten? Diese Aktion kann nicht rückgängig gemacht werden und wird außerdem die OAuth ID aller Benutzer zurücksetzen.",
"user_cleanup_job": "Benutzer aufräumen", "user_cleanup_job": "Benutzer aufräumen",
"user_delete_delay": "Das Konto und die Dateien von <b>{user}</b> werden in {delay, plural, one {einem Tag} other {# Tagen}} für eine permanente Löschung geplant.", "user_delete_delay": "Das Konto und die Dateien von <b>{user}</b> werden in {delay, plural, one {einem Tag} other {# Tagen}} für eine permanente Löschung geplant.",
"user_delete_delay_settings": "Verzögerung für das Löschen von Benutzern", "user_delete_delay_settings": "Verzögerung für das Löschen von Benutzern",
@@ -390,6 +396,8 @@
"advanced_settings_prefer_remote_title": "Server-Bilder bevorzugen", "advanced_settings_prefer_remote_title": "Server-Bilder bevorzugen",
"advanced_settings_proxy_headers_subtitle": "Definiere einen Proxy-Header, den Immich bei jeder Netzwerkanfrage mitschicken soll", "advanced_settings_proxy_headers_subtitle": "Definiere einen Proxy-Header, den Immich bei jeder Netzwerkanfrage mitschicken soll",
"advanced_settings_proxy_headers_title": "Proxy-Headers", "advanced_settings_proxy_headers_title": "Proxy-Headers",
"advanced_settings_readonly_mode_subtitle": "Aktiviert den schreibgeschützten Modus, in dem die Fotos nur angezeigt werden können. Funktionen wie das Auswählen mehrerer Bilder, das Teilen, das Übertragen und das Löschen sind deaktiviert. Aktivieren/Deaktiviere den schreibgeschützten Modus über den Benutzer-Avatar auf dem Hauptbildschirm",
"advanced_settings_readonly_mode_title": "Schreibgeschützter Modus",
"advanced_settings_self_signed_ssl_subtitle": "Verifizierung von SSL-Zertifikaten vom Server überspringen. Notwendig bei selbstsignierten Zertifikaten.", "advanced_settings_self_signed_ssl_subtitle": "Verifizierung von SSL-Zertifikaten vom Server überspringen. Notwendig bei selbstsignierten Zertifikaten.",
"advanced_settings_self_signed_ssl_title": "Selbstsignierte SSL-Zertifikate erlauben", "advanced_settings_self_signed_ssl_title": "Selbstsignierte SSL-Zertifikate erlauben",
"advanced_settings_sync_remote_deletions_subtitle": "Automatisches Löschen oder Wiederherstellen einer Datei auf diesem Gerät, wenn diese Aktion im Web durchgeführt wird", "advanced_settings_sync_remote_deletions_subtitle": "Automatisches Löschen oder Wiederherstellen einer Datei auf diesem Gerät, wenn diese Aktion im Web durchgeführt wird",
@@ -455,6 +463,7 @@
"app_bar_signout_dialog_title": "Abmelden", "app_bar_signout_dialog_title": "Abmelden",
"app_settings": "App-Einstellungen", "app_settings": "App-Einstellungen",
"appears_in": "Erscheint in", "appears_in": "Erscheint in",
"apply_count": "Anwenden ({count, number})",
"archive": "Archiv", "archive": "Archiv",
"archive_action_prompt": "{count} zum Archiv hinzugefügt", "archive_action_prompt": "{count} zum Archiv hinzugefügt",
"archive_or_unarchive_photo": "Foto archivieren bzw. Archivierung aufheben", "archive_or_unarchive_photo": "Foto archivieren bzw. Archivierung aufheben",
@@ -489,12 +498,14 @@
"asset_skipped_in_trash": "Im Papierkorb", "asset_skipped_in_trash": "Im Papierkorb",
"asset_uploaded": "Hochgeladen", "asset_uploaded": "Hochgeladen",
"asset_uploading": "Hochladen…", "asset_uploading": "Hochladen…",
"asset_viewer_settings_subtitle": "Verwaltung der Einstellungen für den Galerie-Viewer", "asset_viewer_settings_subtitle": "Verwaltung der Einstellungen für die Fotoanzeige",
"asset_viewer_settings_title": "Fotoanzeige", "asset_viewer_settings_title": "Fotoanzeige",
"assets": "Dateien", "assets": "Dateien",
"assets_added_count": "{count, plural, one {# Datei} other {# Dateien}} hinzugefügt", "assets_added_count": "{count, plural, one {# Datei} other {# Dateien}} hinzugefügt",
"assets_added_to_album_count": "{count, plural, one {# Datei} other {# Dateien}} zum Album hinzugefügt", "assets_added_to_album_count": "{count, plural, one {# Datei} other {# Dateien}} zum Album hinzugefügt",
"assets_added_to_albums_count": "{assetTotal, plural, one {# Datei} other {# Dateien}} zu {albumTotal, plural, one {# Album} other {# Alben}} hinzugefügt",
"assets_cannot_be_added_to_album_count": "{count, plural, one {Datei kann}other {Dateien können}} nicht zum Album hinzugefügt werden", "assets_cannot_be_added_to_album_count": "{count, plural, one {Datei kann}other {Dateien können}} nicht zum Album hinzugefügt werden",
"assets_cannot_be_added_to_albums": "{count, plural, one {Datei kann} other {Dateien können}} nicht zu den Alben hinzugefügt werden",
"assets_count": "{count, plural, one {# Datei} other {# Dateien}}", "assets_count": "{count, plural, one {# Datei} other {# Dateien}}",
"assets_deleted_permanently": "{count} Element(e) permanent gelöscht", "assets_deleted_permanently": "{count} Element(e) permanent gelöscht",
"assets_deleted_permanently_from_server": "{count} Element(e) permanent vom Immich-Server gelöscht", "assets_deleted_permanently_from_server": "{count} Element(e) permanent vom Immich-Server gelöscht",
@@ -511,6 +522,7 @@
"assets_trashed_count": "{count, plural, one {# Datei} other {# Dateien}} in den Papierkorb verschoben", "assets_trashed_count": "{count, plural, one {# Datei} other {# Dateien}} in den Papierkorb verschoben",
"assets_trashed_from_server": "{count} Element(e) vom Immich-Server gelöscht", "assets_trashed_from_server": "{count} Element(e) vom Immich-Server gelöscht",
"assets_were_part_of_album_count": "{count, plural, one {# Datei ist} other {# Dateien sind}} bereits im Album vorhanden", "assets_were_part_of_album_count": "{count, plural, one {# Datei ist} other {# Dateien sind}} bereits im Album vorhanden",
"assets_were_part_of_albums_count": "{count, plural, one {Datei war} other {Dateien waren}} bereits in den Alben",
"authorized_devices": "Verwendete Geräte", "authorized_devices": "Verwendete Geräte",
"automatic_endpoint_switching_subtitle": "Verbinden Sie sich lokal über ein bestimmtes WLAN, wenn es verfügbar ist, und verwenden Sie andere Verbindungsmöglichkeiten anderswo", "automatic_endpoint_switching_subtitle": "Verbinden Sie sich lokal über ein bestimmtes WLAN, wenn es verfügbar ist, und verwenden Sie andere Verbindungsmöglichkeiten anderswo",
"automatic_endpoint_switching_title": "Automatische URL-Umschaltung", "automatic_endpoint_switching_title": "Automatische URL-Umschaltung",
@@ -580,8 +592,10 @@
"backup_manual_in_progress": "Sicherung läuft bereits. Bitte versuche es später erneut", "backup_manual_in_progress": "Sicherung läuft bereits. Bitte versuche es später erneut",
"backup_manual_success": "Erfolgreich", "backup_manual_success": "Erfolgreich",
"backup_manual_title": "Sicherungsstatus", "backup_manual_title": "Sicherungsstatus",
"backup_options": "Backup-Optionen",
"backup_options_page_title": "Sicherungsoptionen", "backup_options_page_title": "Sicherungsoptionen",
"backup_setting_subtitle": "Verwaltung der Upload-Einstellungen im Hintergrund und im Vordergrund", "backup_setting_subtitle": "Verwaltung der Upload-Einstellungen im Hintergrund und im Vordergrund",
"backup_settings_subtitle": "Upload-Einstellungen verwalten",
"backward": "Rückwärts", "backward": "Rückwärts",
"beta_sync": "Status der Beta-Synchronisierung", "beta_sync": "Status der Beta-Synchronisierung",
"beta_sync_subtitle": "Verwalte das neue Synchronisierungssystem", "beta_sync_subtitle": "Verwalte das neue Synchronisierungssystem",
@@ -629,7 +643,7 @@
"change_description": "Beschreibung anpassen", "change_description": "Beschreibung anpassen",
"change_display_order": "Anzeigereihenfolge ändern", "change_display_order": "Anzeigereihenfolge ändern",
"change_expiration_time": "Verfallszeitpunkt ändern", "change_expiration_time": "Verfallszeitpunkt ändern",
"change_location": "Ort ändern", "change_location": "Standort ändern",
"change_name": "Name ändern", "change_name": "Name ändern",
"change_name_successfully": "Name wurde erfolgreich geändert", "change_name_successfully": "Name wurde erfolgreich geändert",
"change_password": "Passwort ändern", "change_password": "Passwort ändern",
@@ -651,6 +665,7 @@
"clear": "Leeren", "clear": "Leeren",
"clear_all": "Alles leeren", "clear_all": "Alles leeren",
"clear_all_recent_searches": "Alle letzten Suchvorgänge löschen", "clear_all_recent_searches": "Alle letzten Suchvorgänge löschen",
"clear_file_cache": "Dateien-Cache leeren",
"clear_message": "Nachrichten leeren", "clear_message": "Nachrichten leeren",
"clear_value": "Wert leeren", "clear_value": "Wert leeren",
"client_cert_dialog_msg_confirm": "Ok", "client_cert_dialog_msg_confirm": "Ok",
@@ -691,7 +706,7 @@
"control_bottom_app_bar_create_new_album": "Neues Album erstellen", "control_bottom_app_bar_create_new_album": "Neues Album erstellen",
"control_bottom_app_bar_delete_from_immich": "Aus Immich löschen", "control_bottom_app_bar_delete_from_immich": "Aus Immich löschen",
"control_bottom_app_bar_delete_from_local": "Vom Gerät löschen", "control_bottom_app_bar_delete_from_local": "Vom Gerät löschen",
"control_bottom_app_bar_edit_location": "Ort bearbeiten", "control_bottom_app_bar_edit_location": "Standort bearbeiten",
"control_bottom_app_bar_edit_time": "Datum und Uhrzeit bearbeiten", "control_bottom_app_bar_edit_time": "Datum und Uhrzeit bearbeiten",
"control_bottom_app_bar_share_link": "Link teilen", "control_bottom_app_bar_share_link": "Link teilen",
"control_bottom_app_bar_share_to": "Teilen mit", "control_bottom_app_bar_share_to": "Teilen mit",
@@ -721,6 +736,7 @@
"create_new_user": "Neuen Nutzer erstellen", "create_new_user": "Neuen Nutzer erstellen",
"create_shared_album_page_share_add_assets": "INHALTE HINZUFÜGEN", "create_shared_album_page_share_add_assets": "INHALTE HINZUFÜGEN",
"create_shared_album_page_share_select_photos": "Fotos auswählen", "create_shared_album_page_share_select_photos": "Fotos auswählen",
"create_shared_link": "Geteilten Link erstellen",
"create_tag": "Tag erstellen", "create_tag": "Tag erstellen",
"create_tag_description": "Erstelle einen neuen Tag. Für verschachtelte Tags, gib den gesamten Pfad inklusive Schrägstrich an.", "create_tag_description": "Erstelle einen neuen Tag. Für verschachtelte Tags, gib den gesamten Pfad inklusive Schrägstrich an.",
"create_user": "Nutzer erstellen", "create_user": "Nutzer erstellen",
@@ -745,6 +761,7 @@
"date_of_birth_saved": "Das Geburtsdatum wurde erfolgreich gespeichert", "date_of_birth_saved": "Das Geburtsdatum wurde erfolgreich gespeichert",
"date_range": "Datumsbereich", "date_range": "Datumsbereich",
"day": "Tag", "day": "Tag",
"days": "Tage",
"deduplicate_all": "Alle Duplikate entfernen", "deduplicate_all": "Alle Duplikate entfernen",
"deduplication_criteria_1": "Bildgröße in Bytes", "deduplication_criteria_1": "Bildgröße in Bytes",
"deduplication_criteria_2": "Anzahl der EXIF-Daten", "deduplication_criteria_2": "Anzahl der EXIF-Daten",
@@ -832,6 +849,9 @@
"edit_birthday": "Geburtsdatum bearbeiten", "edit_birthday": "Geburtsdatum bearbeiten",
"edit_date": "Datum bearbeiten", "edit_date": "Datum bearbeiten",
"edit_date_and_time": "Datum und Uhrzeit bearbeiten", "edit_date_and_time": "Datum und Uhrzeit bearbeiten",
"edit_date_and_time_action_prompt": "{count} Daten und Zeiten geändert",
"edit_date_and_time_by_offset": "Datum ändern um Versatz",
"edit_date_and_time_by_offset_interval": "Neuer Datumsbereich: {from} - {to}",
"edit_description": "Beschreibung bearbeiten", "edit_description": "Beschreibung bearbeiten",
"edit_description_prompt": "Bitte wähle eine neue Beschreibung:", "edit_description_prompt": "Bitte wähle eine neue Beschreibung:",
"edit_exclusion_pattern": "Ausschlussmuster bearbeiten", "edit_exclusion_pattern": "Ausschlussmuster bearbeiten",
@@ -842,7 +862,7 @@
"edit_link": "Link bearbeiten", "edit_link": "Link bearbeiten",
"edit_location": "Standort bearbeiten", "edit_location": "Standort bearbeiten",
"edit_location_action_prompt": "{count} Geolokationen angepasst", "edit_location_action_prompt": "{count} Geolokationen angepasst",
"edit_location_dialog_title": "Ort bearbeiten", "edit_location_dialog_title": "Standort bearbeiten",
"edit_name": "Name bearbeiten", "edit_name": "Name bearbeiten",
"edit_people": "Personen bearbeiten", "edit_people": "Personen bearbeiten",
"edit_tag": "Tag bearbeiten", "edit_tag": "Tag bearbeiten",
@@ -904,6 +924,7 @@
"failed_to_load_notifications": "Fehler beim Laden der Benachrichtigungen", "failed_to_load_notifications": "Fehler beim Laden der Benachrichtigungen",
"failed_to_load_people": "Fehler beim Laden von Personen", "failed_to_load_people": "Fehler beim Laden von Personen",
"failed_to_remove_product_key": "Fehler beim Entfernen des Produktschlüssels", "failed_to_remove_product_key": "Fehler beim Entfernen des Produktschlüssels",
"failed_to_reset_pin_code": "Zurücksetzen des PIN Codes fehlgeschlagen",
"failed_to_stack_assets": "Dateien konnten nicht gestapelt werden", "failed_to_stack_assets": "Dateien konnten nicht gestapelt werden",
"failed_to_unstack_assets": "Dateien konnten nicht entstapelt werden", "failed_to_unstack_assets": "Dateien konnten nicht entstapelt werden",
"failed_to_update_notification_status": "Benachrichtigungsstatus aktualisieren fehlgeschlagen", "failed_to_update_notification_status": "Benachrichtigungsstatus aktualisieren fehlgeschlagen",
@@ -912,6 +933,7 @@
"paths_validation_failed": "{paths, plural, one {# Pfad konnte} other {# Pfade konnten}} nicht validiert werden", "paths_validation_failed": "{paths, plural, one {# Pfad konnte} other {# Pfade konnten}} nicht validiert werden",
"profile_picture_transparent_pixels": "Profilbilder dürfen keine transparenten Pixel haben. Bitte zoome heran und/oder verschiebe das Bild.", "profile_picture_transparent_pixels": "Profilbilder dürfen keine transparenten Pixel haben. Bitte zoome heran und/oder verschiebe das Bild.",
"quota_higher_than_disk_size": "Dein festgelegtes Kontingent ist größer als der verfügbare Speicher", "quota_higher_than_disk_size": "Dein festgelegtes Kontingent ist größer als der verfügbare Speicher",
"something_went_wrong": "Ein Fehler ist eingetreten",
"unable_to_add_album_users": "Benutzer konnten nicht zum Album hinzugefügt werden", "unable_to_add_album_users": "Benutzer konnten nicht zum Album hinzugefügt werden",
"unable_to_add_assets_to_shared_link": "Datei konnte nicht zum geteilten Link hinzugefügt werden", "unable_to_add_assets_to_shared_link": "Datei konnte nicht zum geteilten Link hinzugefügt werden",
"unable_to_add_comment": "Es kann kein Kommentar hinzufügt werden", "unable_to_add_comment": "Es kann kein Kommentar hinzufügt werden",
@@ -925,7 +947,7 @@
"unable_to_change_date": "Datum kann nicht verändert werden", "unable_to_change_date": "Datum kann nicht verändert werden",
"unable_to_change_description": "Ändern der Beschreibung nicht möglich", "unable_to_change_description": "Ändern der Beschreibung nicht möglich",
"unable_to_change_favorite": "Es konnte der Favoritenstatus für diese Datei nicht geändert werden", "unable_to_change_favorite": "Es konnte der Favoritenstatus für diese Datei nicht geändert werden",
"unable_to_change_location": "Ort kann nicht verändert werden", "unable_to_change_location": "Standort kann nicht verändert werden",
"unable_to_change_password": "Passwort konnte nicht geändert werden", "unable_to_change_password": "Passwort konnte nicht geändert werden",
"unable_to_change_visibility": "Sichtbarkeit von {count, plural, one {einer Person} other {# Personen}} konnte nicht geändert werden", "unable_to_change_visibility": "Sichtbarkeit von {count, plural, one {einer Person} other {# Personen}} konnte nicht geändert werden",
"unable_to_complete_oauth_login": "OAuth-Anmeldung konnte nicht abgeschlossen werden", "unable_to_complete_oauth_login": "OAuth-Anmeldung konnte nicht abgeschlossen werden",
@@ -989,7 +1011,7 @@
"unable_to_update_album_cover": "Album-Cover konnte nicht aktualisiert werden", "unable_to_update_album_cover": "Album-Cover konnte nicht aktualisiert werden",
"unable_to_update_album_info": "Album-Info konnte nicht aktualisiert werden", "unable_to_update_album_info": "Album-Info konnte nicht aktualisiert werden",
"unable_to_update_library": "Die Bibliothek konnte nicht aktualisiert werden", "unable_to_update_library": "Die Bibliothek konnte nicht aktualisiert werden",
"unable_to_update_location": "Der Ort konnte nicht aktualisiert werden", "unable_to_update_location": "Der Standort konnte nicht aktualisiert werden",
"unable_to_update_settings": "Die Einstellungen konnten nicht aktualisiert werden", "unable_to_update_settings": "Die Einstellungen konnten nicht aktualisiert werden",
"unable_to_update_timeline_display_status": "Status der Zeitleistenanzeige konnte nicht aktualisiert werden", "unable_to_update_timeline_display_status": "Status der Zeitleistenanzeige konnte nicht aktualisiert werden",
"unable_to_update_user": "Der Nutzer konnte nicht aktualisiert werden", "unable_to_update_user": "Der Nutzer konnte nicht aktualisiert werden",
@@ -1002,9 +1024,6 @@
"exif_bottom_sheet_location": "STANDORT", "exif_bottom_sheet_location": "STANDORT",
"exif_bottom_sheet_people": "PERSONEN", "exif_bottom_sheet_people": "PERSONEN",
"exif_bottom_sheet_person_add_person": "Namen hinzufügen", "exif_bottom_sheet_person_add_person": "Namen hinzufügen",
"exif_bottom_sheet_person_age_months": "{months} Monate alt",
"exif_bottom_sheet_person_age_year_months": "1 Jahr, {months} Monate alt",
"exif_bottom_sheet_person_age_years": "Alter {years}",
"exit_slideshow": "Diashow beenden", "exit_slideshow": "Diashow beenden",
"expand_all": "Alle aufklappen", "expand_all": "Alle aufklappen",
"experimental_settings_new_asset_list_subtitle": "In Arbeit", "experimental_settings_new_asset_list_subtitle": "In Arbeit",
@@ -1046,21 +1065,29 @@
"filter_people": "Personen filtern", "filter_people": "Personen filtern",
"filter_places": "Orte filtern", "filter_places": "Orte filtern",
"find_them_fast": "Finde sie schneller mit der Suche nach Namen", "find_them_fast": "Finde sie schneller mit der Suche nach Namen",
"first": "Erste",
"fix_incorrect_match": "Fehlerhafte Übereinstimmung beheben", "fix_incorrect_match": "Fehlerhafte Übereinstimmung beheben",
"folder": "Ordner", "folder": "Ordner",
"folder_not_found": "Ordner nicht gefunden", "folder_not_found": "Ordner nicht gefunden",
"folders": "Ordner", "folders": "Ordner",
"folders_feature_description": "Durchsuchen der Ordneransicht für Fotos und Videos im Dateisystem", "folders_feature_description": "Durchsuchen der Ordneransicht für Fotos und Videos im Dateisystem",
"forgot_pin_code_question": "PIN Code vergessen?",
"forward": "Vorwärts", "forward": "Vorwärts",
"gcast_enabled": "Google Cast", "gcast_enabled": "Google Cast",
"gcast_enabled_description": "Diese Funktion lädt externe Quellen von Google, um zu funktionieren.", "gcast_enabled_description": "Diese Funktion lädt externe Quellen von Google, um zu funktionieren.",
"general": "Allgemein", "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_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", "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", "getting_started": "Erste Schritte",
"go_back": "Zurück", "go_back": "Zurück",
"go_to_folder": "Gehe zu Ordner", "go_to_folder": "Gehe zu Ordner",
"go_to_search": "Zur Suche gehen", "go_to_search": "Zur Suche gehen",
"gps": "GPS",
"gps_missing": "Kein GPS",
"grant_permission": "Erlaubnis gewähren", "grant_permission": "Erlaubnis gewähren",
"group_albums_by": "Alben gruppieren nach...", "group_albums_by": "Alben gruppieren nach...",
"group_country": "Nach Land gruppieren", "group_country": "Nach Land gruppieren",
@@ -1098,13 +1125,14 @@
"home_page_delete_remote_err_local": "Lokale Elemente in der Auswahl zum Entfernen von Remote-Elementen, Überspringe", "home_page_delete_remote_err_local": "Lokale Elemente in der Auswahl zum Entfernen von Remote-Elementen, Überspringe",
"home_page_favorite_err_local": "Kann lokale Elemente noch nicht favorisieren, überspringen", "home_page_favorite_err_local": "Kann lokale Elemente noch nicht favorisieren, überspringen",
"home_page_favorite_err_partner": "Inhalte von Partnern können nicht favorisiert werden, überspringe", "home_page_favorite_err_partner": "Inhalte von Partnern können nicht favorisiert werden, überspringe",
"home_page_first_time_notice": "Wenn dies das erste Mal ist dass Du Immich nutzt, stelle bitte sicher, dass mindestens ein Album zur Sicherung ausgewählt ist, sodass die Zeitachse mit Fotos und Videos gefüllt werden kann", "home_page_first_time_notice": "Wenn Sie die App zum ersten Mal verwenden, wählen Sie bitte ein Album zur Sicherung aus, damit die Zeitachse mit Fotos und Videos gefüllt werden kann",
"home_page_locked_error_local": "Lokale Dateien können nicht in den gesperrten Ordner verschoben werden, überspringe", "home_page_locked_error_local": "Lokale Dateien können nicht in den gesperrten Ordner verschoben werden, überspringe",
"home_page_locked_error_partner": "Dateien von Partnern können nicht in den gesperrten Ordner verschoben werden, überspringe", "home_page_locked_error_partner": "Dateien von Partnern können nicht in den gesperrten Ordner verschoben werden, überspringe",
"home_page_share_err_local": "Lokale Inhalte können nicht per Link geteilt werden, überspringe", "home_page_share_err_local": "Lokale Inhalte können nicht per Link geteilt werden, überspringe",
"home_page_upload_err_limit": "Es können max. 30 Elemente gleichzeitig hochgeladen werden, überspringen", "home_page_upload_err_limit": "Es können max. 30 Elemente gleichzeitig hochgeladen werden, überspringen",
"host": "Host", "host": "Host",
"hour": "Stunde", "hour": "Stunde",
"hours": "Stunden",
"id": "ID", "id": "ID",
"idle": "Untätig", "idle": "Untätig",
"ignore_icloud_photos": "iCloud Fotos ignorieren", "ignore_icloud_photos": "iCloud Fotos ignorieren",
@@ -1165,10 +1193,12 @@
"language_search_hint": "Sprachen durchsuchen...", "language_search_hint": "Sprachen durchsuchen...",
"language_setting_description": "Wähle deine bevorzugte Sprache", "language_setting_description": "Wähle deine bevorzugte Sprache",
"large_files": "Große Dateien", "large_files": "Große Dateien",
"last": "Letzte",
"last_seen": "Zuletzt gesehen", "last_seen": "Zuletzt gesehen",
"latest_version": "Aktuellste Version", "latest_version": "Aktuellste Version",
"latitude": "Breitengrad", "latitude": "Breitengrad",
"leave": "Verlassen", "leave": "Verlassen",
"leave_album": "Album verlassen",
"lens_model": "Objektivmodell", "lens_model": "Objektivmodell",
"let_others_respond": "Antworten zulassen", "let_others_respond": "Antworten zulassen",
"level": "Level", "level": "Level",
@@ -1182,6 +1212,7 @@
"library_page_sort_title": "Titel des Albums", "library_page_sort_title": "Titel des Albums",
"licenses": "Lizenzen", "licenses": "Lizenzen",
"light": "Hell", "light": "Hell",
"like": "Gefällt mir",
"like_deleted": "Like gelöscht", "like_deleted": "Like gelöscht",
"link_motion_video": "Bewegungsvideo verknüpfen", "link_motion_video": "Bewegungsvideo verknüpfen",
"link_to_oauth": "Mit OAuth verknüpfen", "link_to_oauth": "Mit OAuth verknüpfen",
@@ -1240,6 +1271,7 @@
"main_branch_warning": "Du benutzt eine Entwicklungsversion. Wir empfehlen dringend, eine Release-Version zu verwenden!", "main_branch_warning": "Du benutzt eine Entwicklungsversion. Wir empfehlen dringend, eine Release-Version zu verwenden!",
"main_menu": "Hauptmenü", "main_menu": "Hauptmenü",
"make": "Marke", "make": "Marke",
"manage_geolocation": "Standort verwalten",
"manage_shared_links": "Freigegebene Links verwalten", "manage_shared_links": "Freigegebene Links verwalten",
"manage_sharing_with_partners": "Gemeinsame Nutzung mit Partnern verwalten", "manage_sharing_with_partners": "Gemeinsame Nutzung mit Partnern verwalten",
"manage_the_app_settings": "App-Einstellungen verwalten", "manage_the_app_settings": "App-Einstellungen verwalten",
@@ -1248,7 +1280,7 @@
"manage_your_devices": "Deine eingeloggten Geräte verwalten", "manage_your_devices": "Deine eingeloggten Geräte verwalten",
"manage_your_oauth_connection": "Deine OAuth-Verknüpfung verwalten", "manage_your_oauth_connection": "Deine OAuth-Verknüpfung verwalten",
"map": "Karte", "map": "Karte",
"map_assets_in_bounds": "{count, plural, one {# Foto} other {# Fotos}}", "map_assets_in_bounds": "{count, plural, =0 {Keine Fotos in diesem Gebiet} one {# Foto} other {# Fotos}}",
"map_cannot_get_user_location": "Standort konnte nicht ermittelt werden", "map_cannot_get_user_location": "Standort konnte nicht ermittelt werden",
"map_location_dialog_yes": "Ja", "map_location_dialog_yes": "Ja",
"map_location_picker_page_use_location": "Aufnahmeort verwenden", "map_location_picker_page_use_location": "Aufnahmeort verwenden",
@@ -1256,7 +1288,6 @@
"map_location_service_disabled_title": "Ortungsdienste deaktiviert", "map_location_service_disabled_title": "Ortungsdienste deaktiviert",
"map_marker_for_images": "Kartenmarkierung für Bilder, die in {city}, {country} aufgenommen wurden", "map_marker_for_images": "Kartenmarkierung für Bilder, die in {city}, {country} aufgenommen wurden",
"map_marker_with_image": "Kartenmarkierung mit Bild", "map_marker_with_image": "Kartenmarkierung mit Bild",
"map_no_assets_in_bounds": "Keine Fotos in dieser Gegend",
"map_no_location_permission_content": "Ortungsdienste müssen aktiviert sein, um Inhalte am aktuellen Standort anzuzeigen. Willst du die Ortungsdienste jetzt aktivieren?", "map_no_location_permission_content": "Ortungsdienste müssen aktiviert sein, um Inhalte am aktuellen Standort anzuzeigen. Willst du die Ortungsdienste jetzt aktivieren?",
"map_no_location_permission_title": "Kein Zugriff auf den Standort", "map_no_location_permission_title": "Kein Zugriff auf den Standort",
"map_settings": "Karteneinstellungen", "map_settings": "Karteneinstellungen",
@@ -1269,7 +1300,7 @@
"map_settings_include_show_archived": "Archivierte anzeigen", "map_settings_include_show_archived": "Archivierte anzeigen",
"map_settings_include_show_partners": "Partner einbeziehen", "map_settings_include_show_partners": "Partner einbeziehen",
"map_settings_only_show_favorites": "Nur Favoriten anzeigen", "map_settings_only_show_favorites": "Nur Favoriten anzeigen",
"map_settings_theme_settings": "Karten Design", "map_settings_theme_settings": "Kartendesign",
"map_zoom_to_see_photos": "Ansicht verkleinern um Fotos zu sehen", "map_zoom_to_see_photos": "Ansicht verkleinern um Fotos zu sehen",
"mark_all_as_read": "Alle als gelesen markieren", "mark_all_as_read": "Alle als gelesen markieren",
"mark_as_read": "Als gelesen markieren", "mark_as_read": "Als gelesen markieren",
@@ -1293,6 +1324,7 @@
"merged_people_count": "{count, plural, one {# Person} other {# Personen}} zusammengefügt", "merged_people_count": "{count, plural, one {# Person} other {# Personen}} zusammengefügt",
"minimize": "Minimieren", "minimize": "Minimieren",
"minute": "Minute", "minute": "Minute",
"minutes": "Minuten",
"missing": "Fehlende", "missing": "Fehlende",
"model": "Modell", "model": "Modell",
"month": "Monat", "month": "Monat",
@@ -1312,6 +1344,9 @@
"my_albums": "Meine Alben", "my_albums": "Meine Alben",
"name": "Name", "name": "Name",
"name_or_nickname": "Name oder Nickname", "name_or_nickname": "Name oder Nickname",
"network_requirement_photos_upload": "Mobiles Datennetz verwenden, um Fotos zu sichern",
"network_requirement_videos_upload": "Mobiles Datennetz verwenden, um Videos zu sichern",
"network_requirements_updated": "Netzwerk-Abhängigkeiten haben sich geändert, Backup-Warteschlange wird zurückgesetzt",
"networking_settings": "Netzwerk", "networking_settings": "Netzwerk",
"networking_subtitle": "Verwaltung von Server-Endpunkt-Einstellungen", "networking_subtitle": "Verwaltung von Server-Endpunkt-Einstellungen",
"never": "Niemals", "never": "Niemals",
@@ -1363,6 +1398,7 @@
"oauth": "OAuth", "oauth": "OAuth",
"official_immich_resources": "Offizielle Immich Quellen", "official_immich_resources": "Offizielle Immich Quellen",
"offline": "Offline", "offline": "Offline",
"offset": "Verschiebung",
"ok": "Ok", "ok": "Ok",
"oldest_first": "Älteste zuerst", "oldest_first": "Älteste zuerst",
"on_this_device": "Auf diesem Gerät", "on_this_device": "Auf diesem Gerät",
@@ -1381,6 +1417,8 @@
"open_the_search_filters": "Die Suchfilter öffnen", "open_the_search_filters": "Die Suchfilter öffnen",
"options": "Optionen", "options": "Optionen",
"or": "oder", "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", "organize_your_library": "Organisiere deine Bibliothek",
"original": "Original", "original": "Original",
"other": "Sonstiges", "other": "Sonstiges",
@@ -1440,6 +1478,9 @@
"permission_onboarding_permission_limited": "Berechtigungen unzureichend. Um Immich das Sichern von ganzen Sammlungen zu ermöglichen, muss der Zugriff auf alle Fotos und Videos in den Einstellungen erlaubt werden.", "permission_onboarding_permission_limited": "Berechtigungen unzureichend. Um Immich das Sichern von ganzen Sammlungen zu ermöglichen, muss der Zugriff auf alle Fotos und Videos in den Einstellungen erlaubt werden.",
"permission_onboarding_request": "Immich benötigt Berechtigung um auf deine Fotos und Videos zuzugreifen.", "permission_onboarding_request": "Immich benötigt Berechtigung um auf deine Fotos und Videos zuzugreifen.",
"person": "Person", "person": "Person",
"person_age_months": "{months, plural, one {# month} other {# months}} alt",
"person_age_year_months": "1 Jahr, {months, plural, one {# month} other {# months}} alt",
"person_age_years": "{years, plural, other {# years}} alt",
"person_birthdate": "Geboren am {date}", "person_birthdate": "Geboren am {date}",
"person_hidden": "{name}{hidden, select, true { (verborgen)} other {}}", "person_hidden": "{name}{hidden, select, true { (verborgen)} other {}}",
"photo_shared_all_users": "Es sieht so aus, als hättest du deine Fotos mit allen Benutzern geteilt oder du hast keine Benutzer, mit denen du teilen kannst.", "photo_shared_all_users": "Es sieht so aus, als hättest du deine Fotos mit allen Benutzern geteilt oder du hast keine Benutzer, mit denen du teilen kannst.",
@@ -1479,6 +1520,7 @@
"profile_drawer_client_out_of_date_minor": "Mobile-App ist veraltet. Bitte aktualisiere auf die neueste Minor-Version.", "profile_drawer_client_out_of_date_minor": "Mobile-App ist veraltet. Bitte aktualisiere auf die neueste Minor-Version.",
"profile_drawer_client_server_up_to_date": "Die App- und Server-Versionen sind aktuell", "profile_drawer_client_server_up_to_date": "Die App- und Server-Versionen sind aktuell",
"profile_drawer_github": "GitHub", "profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Schreibgeschützter Modus aktiviert. Tippe zweimal auf das Benutzer-Avatar-Symbol, um den Modus zu verlassen.",
"profile_drawer_server_out_of_date_major": "Server-Version ist veraltet. Bitte aktualisiere auf die neueste Major-Version.", "profile_drawer_server_out_of_date_major": "Server-Version ist veraltet. Bitte aktualisiere auf die neueste Major-Version.",
"profile_drawer_server_out_of_date_minor": "Server-Version ist veraltet. Bitte aktualisiere auf die neueste Minor-Version.", "profile_drawer_server_out_of_date_minor": "Server-Version ist veraltet. Bitte aktualisiere auf die neueste Minor-Version.",
"profile_image_of_user": "Profilbild von {user}", "profile_image_of_user": "Profilbild von {user}",
@@ -1517,6 +1559,7 @@
"purchase_server_description_2": "Unterstützerstatus", "purchase_server_description_2": "Unterstützerstatus",
"purchase_server_title": "Server", "purchase_server_title": "Server",
"purchase_settings_server_activated": "Der Server-Produktschlüssel wird durch den Administrator verwaltet", "purchase_settings_server_activated": "Der Server-Produktschlüssel wird durch den Administrator verwaltet",
"query_asset_id": "Datei-ID abfragen",
"queue_status": "Warteschlange {count}/{total}", "queue_status": "Warteschlange {count}/{total}",
"rating": "Bewertung", "rating": "Bewertung",
"rating_clear": "Bewertung löschen", "rating_clear": "Bewertung löschen",
@@ -1524,6 +1567,8 @@
"rating_description": "Stellt die EXIF-Bewertung im Informationsbereich dar", "rating_description": "Stellt die EXIF-Bewertung im Informationsbereich dar",
"reaction_options": "Reaktionsmöglichkeiten", "reaction_options": "Reaktionsmöglichkeiten",
"read_changelog": "Changelog lesen", "read_changelog": "Changelog lesen",
"readonly_mode_disabled": "Schreibgeschützter Modus deaktiviert",
"readonly_mode_enabled": "Schreibgeschützter Modus aktiviert",
"reassign": "Neu zuweisen", "reassign": "Neu zuweisen",
"reassigned_assets_to_existing_person": "{count, plural, one {# Datei wurde} other {# Dateien wurden}} {name, select, null {einer vorhandenen Person} other {{name}}} zugewiesen", "reassigned_assets_to_existing_person": "{count, plural, one {# Datei wurde} other {# Dateien wurden}} {name, select, null {einer vorhandenen Person} other {{name}}} zugewiesen",
"reassigned_assets_to_new_person": "{count, plural, one {# Datei wurde} other {# Dateien wurden}} einer neuen Person zugewiesen", "reassigned_assets_to_new_person": "{count, plural, one {# Datei wurde} other {# Dateien wurden}} einer neuen Person zugewiesen",
@@ -1585,6 +1630,9 @@
"reset_password": "Passwort zurücksetzen", "reset_password": "Passwort zurücksetzen",
"reset_people_visibility": "Sichtbarkeit von Personen zurücksetzen", "reset_people_visibility": "Sichtbarkeit von Personen zurücksetzen",
"reset_pin_code": "PIN Code zurücksetzen", "reset_pin_code": "PIN Code zurücksetzen",
"reset_pin_code_description": "Falls du deinen PIN Code vergessen hast, wende dich an deinen Immich-Administrator um ihn zurücksetzen zu lassen",
"reset_pin_code_success": "PIN Code erfolgreich zurückgesetzt",
"reset_pin_code_with_password": "Mit deinem Passwort kannst du jederzeit deinen PIN Code zurücksetzen",
"reset_sqlite": "SQLite Datenbank zurücksetzen", "reset_sqlite": "SQLite Datenbank zurücksetzen",
"reset_sqlite_confirmation": "Bist du sicher, dass du die SQLite-Datenbank zurücksetzen willst? Du musst dich ab- und wieder anmelden, um die Daten neu zu synchronisieren", "reset_sqlite_confirmation": "Bist du sicher, dass du die SQLite-Datenbank zurücksetzen willst? Du musst dich ab- und wieder anmelden, um die Daten neu zu synchronisieren",
"reset_sqlite_success": "SQLite Datenbank erfolgreich zurückgesetzt", "reset_sqlite_success": "SQLite Datenbank erfolgreich zurückgesetzt",
@@ -1690,6 +1738,7 @@
"select_user_for_sharing_page_err_album": "Album konnte nicht erstellt werden", "select_user_for_sharing_page_err_album": "Album konnte nicht erstellt werden",
"selected": "Ausgewählt", "selected": "Ausgewählt",
"selected_count": "{count, plural, other {# ausgewählt}}", "selected_count": "{count, plural, other {# ausgewählt}}",
"selected_gps_coordinates": "Ausgewählte GPS-Koordinaten",
"send_message": "Nachricht senden", "send_message": "Nachricht senden",
"send_welcome_email": "Begrüssungsmail senden", "send_welcome_email": "Begrüssungsmail senden",
"server_endpoint": "Server-Endpunkt", "server_endpoint": "Server-Endpunkt",
@@ -1727,7 +1776,7 @@
"setting_notifications_subtitle": "Benachrichtigungen anpassen", "setting_notifications_subtitle": "Benachrichtigungen anpassen",
"setting_notifications_total_progress_subtitle": "Gesamter Upload-Fortschritt (abgeschlossen/Anzahl Elemente)", "setting_notifications_total_progress_subtitle": "Gesamter Upload-Fortschritt (abgeschlossen/Anzahl Elemente)",
"setting_notifications_total_progress_title": "Zeige den Gesamtfortschritt der Hintergrundsicherung", "setting_notifications_total_progress_title": "Zeige den Gesamtfortschritt der Hintergrundsicherung",
"setting_video_viewer_looping_title": "Schleife / Looping", "setting_video_viewer_looping_title": "Video-Wiederholung",
"setting_video_viewer_original_video_subtitle": "Beim Streaming eines Videos vom Server wird das Original abgespielt, auch wenn eine Transkodierung verfügbar ist. Kann zu Pufferung führen. Lokal verfügbare Videos werden unabhängig von dieser Einstellung in Originalqualität wiedergegeben.", "setting_video_viewer_original_video_subtitle": "Beim Streaming eines Videos vom Server wird das Original abgespielt, auch wenn eine Transkodierung verfügbar ist. Kann zu Pufferung führen. Lokal verfügbare Videos werden unabhängig von dieser Einstellung in Originalqualität wiedergegeben.",
"setting_video_viewer_original_video_title": "Originalvideo erzwingen", "setting_video_viewer_original_video_title": "Originalvideo erzwingen",
"settings": "Einstellungen", "settings": "Einstellungen",
@@ -1745,7 +1794,7 @@
"shared_album_activity_remove_content": "Möchtest du diese Aktivität entfernen?", "shared_album_activity_remove_content": "Möchtest du diese Aktivität entfernen?",
"shared_album_activity_remove_title": "Aktivität entfernen", "shared_album_activity_remove_title": "Aktivität entfernen",
"shared_album_section_people_action_error": "Fehler beim Verlassen oder Entfernen aus dem Album", "shared_album_section_people_action_error": "Fehler beim Verlassen oder Entfernen aus dem Album",
"shared_album_section_people_action_leave": "Album verlassen", "shared_album_section_people_action_leave": "Benutzer vom Album entfernen",
"shared_album_section_people_action_remove_user": "Benutzer von Album entfernen", "shared_album_section_people_action_remove_user": "Benutzer von Album entfernen",
"shared_album_section_people_title": "PERSONEN", "shared_album_section_people_title": "PERSONEN",
"shared_by": "Geteilt von", "shared_by": "Geteilt von",
@@ -1800,8 +1849,10 @@
"shift_to_permanent_delete": "Drücke ⇧, um die Datei endgültig zu löschen", "shift_to_permanent_delete": "Drücke ⇧, um die Datei endgültig zu löschen",
"show_album_options": "Album-Optionen anzeigen", "show_album_options": "Album-Optionen anzeigen",
"show_albums": "Alben anzeigen", "show_albums": "Alben anzeigen",
"show_all_assets": "Alle Dateien anzeigen",
"show_all_people": "Alle Personen anzeigen", "show_all_people": "Alle Personen anzeigen",
"show_and_hide_people": "Personen ein- & ausblenden", "show_and_hide_people": "Personen ein- & ausblenden",
"show_assets_without_location": "Zeige Dateien ohne Ortsangabe",
"show_file_location": "Dateispeicherort anzeigen", "show_file_location": "Dateispeicherort anzeigen",
"show_gallery": "Galerie anzeigen", "show_gallery": "Galerie anzeigen",
"show_hidden_people": "Ausgeblendete Personen anzeigen", "show_hidden_people": "Ausgeblendete Personen anzeigen",
@@ -1833,6 +1884,7 @@
"sort_created": "Erstellungsdatum", "sort_created": "Erstellungsdatum",
"sort_items": "Anzahl der Einträge", "sort_items": "Anzahl der Einträge",
"sort_modified": "Änderungsdatum", "sort_modified": "Änderungsdatum",
"sort_newest": "Neuestes Foto",
"sort_oldest": "Ältestes Foto", "sort_oldest": "Ältestes Foto",
"sort_people_by_similarity": "Personen nach Ähnlichkeit sortieren", "sort_people_by_similarity": "Personen nach Ähnlichkeit sortieren",
"sort_recent": "Neustes Foto", "sort_recent": "Neustes Foto",
@@ -1881,7 +1933,7 @@
"tag_updated": "Tag aktualisiert: {tag}", "tag_updated": "Tag aktualisiert: {tag}",
"tagged_assets": "{count, plural, one {# Datei} other {# Dateien}} getagged", "tagged_assets": "{count, plural, one {# Datei} other {# Dateien}} getagged",
"tags": "Tags", "tags": "Tags",
"tap_to_run_job": "Tippen um den Job zu starten", "tap_to_run_job": "Tippen, um den Job zu starten",
"template": "Vorlage", "template": "Vorlage",
"theme": "Theme", "theme": "Theme",
"theme_selection": "Themenauswahl", "theme_selection": "Themenauswahl",
@@ -1908,7 +1960,9 @@
"to_change_password": "Passwort ändern", "to_change_password": "Passwort ändern",
"to_favorite": "Zu Favoriten hinzufügen", "to_favorite": "Zu Favoriten hinzufügen",
"to_login": "Anmelden", "to_login": "Anmelden",
"to_multi_select": "zur Mehrfachauswahl",
"to_parent": "Gehe zum Übergeordneten", "to_parent": "Gehe zum Übergeordneten",
"to_select": "zum Auswählen",
"to_trash": "In den Papierkorb verschieben", "to_trash": "In den Papierkorb verschieben",
"toggle_settings": "Einstellungen umschalten", "toggle_settings": "Einstellungen umschalten",
"total": "Gesamt", "total": "Gesamt",
@@ -1958,6 +2012,7 @@
"unstacked_assets_count": "{count, plural, one {# Datei} other {# Dateien}} entstapelt", "unstacked_assets_count": "{count, plural, one {# Datei} other {# Dateien}} entstapelt",
"untagged": "Ohne Tag", "untagged": "Ohne Tag",
"up_next": "Weiter", "up_next": "Weiter",
"update_location_action_prompt": "Aktualsiere den Ort von {count} ausgewählten Dateien mit:",
"updated_at": "Aktualisiert", "updated_at": "Aktualisiert",
"updated_password": "Passwort aktualisiert", "updated_password": "Passwort aktualisiert",
"upload": "Hochladen", "upload": "Hochladen",
@@ -1982,6 +2037,7 @@
"use_biometric": "Biometrie verwenden", "use_biometric": "Biometrie verwenden",
"use_current_connection": "aktuelle Verbindung verwenden", "use_current_connection": "aktuelle Verbindung verwenden",
"use_custom_date_range": "Stattdessen einen benutzerdefinierten Datumsbereich verwenden", "use_custom_date_range": "Stattdessen einen benutzerdefinierten Datumsbereich verwenden",
"use_this_location": "Klicken um Ort zu verwenden",
"user": "Nutzer", "user": "Nutzer",
"user_has_been_deleted": "Dieser Benutzer wurde gelöscht.", "user_has_been_deleted": "Dieser Benutzer wurde gelöscht.",
"user_id": "Nutzer-ID", "user_id": "Nutzer-ID",
@@ -2024,6 +2080,7 @@
"view_next_asset": "Nächste Datei anzeigen", "view_next_asset": "Nächste Datei anzeigen",
"view_previous_asset": "Vorherige Datei anzeigen", "view_previous_asset": "Vorherige Datei anzeigen",
"view_qr_code": "QR code anzeigen", "view_qr_code": "QR code anzeigen",
"view_similar_photos": "Zeige ähnliche Fotos an",
"view_stack": "Stapel anzeigen", "view_stack": "Stapel anzeigen",
"view_user": "Benutzer anzeigen", "view_user": "Benutzer anzeigen",
"viewer_remove_from_stack": "Aus Stapel entfernen", "viewer_remove_from_stack": "Aus Stapel entfernen",

View File

@@ -14,6 +14,7 @@
"add_a_location": "Προσθήκη μίας τοποθεσίας", "add_a_location": "Προσθήκη μίας τοποθεσίας",
"add_a_name": "Προσθέστε ένα όνομα", "add_a_name": "Προσθέστε ένα όνομα",
"add_a_title": "Προσθήκη τίτλου", "add_a_title": "Προσθήκη τίτλου",
"add_birthday": "Προσθέστε την ημερομηνία γενεθλίων",
"add_endpoint": "Προσθήκη τελικού σημείου", "add_endpoint": "Προσθήκη τελικού σημείου",
"add_exclusion_pattern": "Προσθήκη μοτίβου αποκλεισμού", "add_exclusion_pattern": "Προσθήκη μοτίβου αποκλεισμού",
"add_import_path": "Προσθήκη μονοπατιού εισαγωγής", "add_import_path": "Προσθήκη μονοπατιού εισαγωγής",
@@ -27,6 +28,9 @@
"add_to_album": "Προσθήκη σε άλμπουμ", "add_to_album": "Προσθήκη σε άλμπουμ",
"add_to_album_bottom_sheet_added": "Προστέθηκε στο {album}", "add_to_album_bottom_sheet_added": "Προστέθηκε στο {album}",
"add_to_album_bottom_sheet_already_exists": "Ήδη στο {album}", "add_to_album_bottom_sheet_already_exists": "Ήδη στο {album}",
"add_to_album_toggle": "Εναλλαγή επιλογής για το {album}",
"add_to_albums": "Προσθήκη στα άλμπουμ",
"add_to_albums_count": "Προσθήκη στα άλμπουμ ({count})",
"add_to_shared_album": "Προσθήκη σε κοινόχρηστο άλμπουμ", "add_to_shared_album": "Προσθήκη σε κοινόχρηστο άλμπουμ",
"add_url": "Προσθήκη Συνδέσμου", "add_url": "Προσθήκη Συνδέσμου",
"added_to_archive": "Προστέθηκε στο αρχείο", "added_to_archive": "Προστέθηκε στο αρχείο",
@@ -44,6 +48,13 @@
"backup_database": "Δημιουργία Dump βάσης δεδομένων", "backup_database": "Δημιουργία Dump βάσης δεδομένων",
"backup_database_enable_description": "Ενεργοποίηση dumps βάσης δεδομένων", "backup_database_enable_description": "Ενεργοποίηση dumps βάσης δεδομένων",
"backup_keep_last_amount": "Ποσότητα προηγούμενων dumps που πρέπει να διατηρηθούν", "backup_keep_last_amount": "Ποσότητα προηγούμενων dumps που πρέπει να διατηρηθούν",
"backup_onboarding_1_description": "αντίγραφο ασφαλείας εκτός εγκατάστασης, είτε στο cloud είτε σε άλλη φυσική τοποθεσία.",
"backup_onboarding_2_description": "τοπικά αντίγραφα σε διαφορετικές συσκευές. Αυτό περιλαμβάνει τα κύρια αρχεία και ένα τοπικό αντίγραφο ασφαλείας αυτών των αρχείων.",
"backup_onboarding_3_description": "συνολικά αντίγραφα των δεδομένων σας, συμπεριλαμβανομένων των αρχικών αρχείων. Αυτό περιλαμβάνει 1 αντίγραφο εκτός εγκατάστασης (offsite) και 2 τοπικά αντίγραφα.",
"backup_onboarding_description": "Συνιστάται η στρατηγική <backblaze-link>αντιγράφων ασφαλείας 3-2-1</backblaze-link> για την προστασία των δεδομένων σας. Θα πρέπει να διατηρείτε αντίγραφα των ανεβασμένων φωτογραφιών/βίντεό σας, καθώς και της βάσης δεδομένων του Immich, για μια ολοκληρωμένη λύση backup.",
"backup_onboarding_footer": "Για περισσότερες πληροφορίες σχετικά με τη δημιουργία αντιγράφων ασφαλείας του Immich, ανατρέξε στον <link>οδηγό τεκμηρίωσης</link>.",
"backup_onboarding_parts_title": "Ένα αντίγραφο ασφαλείας τύπου 3-2-1 περιλαμβάνει:",
"backup_onboarding_title": "Αντίγραφα ασφαλείας",
"backup_settings": "Ρυθμίσεις dump βάσης δεδομένων", "backup_settings": "Ρυθμίσεις dump βάσης δεδομένων",
"backup_settings_description": "Διαχείριση ρυθμίσεων dump της βάσης δεδομένων.", "backup_settings_description": "Διαχείριση ρυθμίσεων dump της βάσης δεδομένων.",
"cleared_jobs": "Εκκαθαρίστηκαν οι εργασίες για: {job}", "cleared_jobs": "Εκκαθαρίστηκαν οι εργασίες για: {job}",
@@ -347,6 +358,9 @@
"trash_number_of_days_description": "Αριθμός ημερών παραμονής των αρχείων στον κάδο, πριν από την οριστική διαγραφή τους", "trash_number_of_days_description": "Αριθμός ημερών παραμονής των αρχείων στον κάδο, πριν από την οριστική διαγραφή τους",
"trash_settings": "Ρυθμίσεις Κάδου Απορριμμάτων", "trash_settings": "Ρυθμίσεις Κάδου Απορριμμάτων",
"trash_settings_description": "Διαχείριση ρυθίσεων κάδου απορριμμάτων", "trash_settings_description": "Διαχείριση ρυθίσεων κάδου απορριμμάτων",
"unlink_all_oauth_accounts": "Αποσύνδεση όλων των λογαριασμών OAuth",
"unlink_all_oauth_accounts_description": "Μην ξεχάσετε να αποσυνδέσετε όλους τους λογαριασμούς OAuth πριν μεταβείτε σε νέο πάροχο.",
"unlink_all_oauth_accounts_prompt": "Είστε σίγουροι ότι θέλετε να αποσυνδέσετε όλους τους λογαριασμούς OAuth; Αυτό θα επαναφέρει το OAuth ID για κάθε χρήστη και δεν μπορεί να αναιρεθεί.",
"user_cleanup_job": "Εκκαθάριση χρηστών", "user_cleanup_job": "Εκκαθάριση χρηστών",
"user_delete_delay": "Ο λογαριασμός και τα αρχεία του/της <b>{user}</b> θα προγραμματιστούν για οριστική διαγραφή σε {delay, plural, one {# ημέρα} other {# ημέρες}}.", "user_delete_delay": "Ο λογαριασμός και τα αρχεία του/της <b>{user}</b> θα προγραμματιστούν για οριστική διαγραφή σε {delay, plural, one {# ημέρα} other {# ημέρες}}.",
"user_delete_delay_settings": "Καθυστέρηση διαγραφής", "user_delete_delay_settings": "Καθυστέρηση διαγραφής",
@@ -486,7 +500,9 @@
"assets": "Αντικείμενα", "assets": "Αντικείμενα",
"assets_added_count": "Προστέθηκε {count, plural, one {# αρχείο} other {# αρχεία}}", "assets_added_count": "Προστέθηκε {count, plural, one {# αρχείο} other {# αρχεία}}",
"assets_added_to_album_count": "Προστέθηκε {count, plural, one {# αρχείο} other {# αρχεία}} στο άλμπουμ", "assets_added_to_album_count": "Προστέθηκε {count, plural, one {# αρχείο} other {# αρχεία}} στο άλμπουμ",
"assets_added_to_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_album_count": "{count, plural, one {Στοιχείο} other {Στοιχεία}} δεν μπορούν να προστεθούν στο άλμπουμ",
"assets_cannot_be_added_to_albums": "Δεν μπορεί να προστεθεί κανένα {count, plural, one {στοιχείο} other {στοιχεία}} σε κανένα από τα άλμπουμ",
"assets_count": "{count, plural, one {# αρχείο} other {# αρχεία}}", "assets_count": "{count, plural, one {# αρχείο} other {# αρχεία}}",
"assets_deleted_permanently": "{count} τα στοιχεία διαγράφηκαν οριστικά", "assets_deleted_permanently": "{count} τα στοιχεία διαγράφηκαν οριστικά",
"assets_deleted_permanently_from_server": "{count} στοιχεία διαγράφηκαν οριστικά από το διακομιστή Immich", "assets_deleted_permanently_from_server": "{count} στοιχεία διαγράφηκαν οριστικά από το διακομιστή Immich",
@@ -503,6 +519,7 @@
"assets_trashed_count": "Μετακιν. στον κάδο απορριμάτων {count, plural, one {# στοιχείο} other {# στοιχεία}}", "assets_trashed_count": "Μετακιν. στον κάδο απορριμάτων {count, plural, one {# στοιχείο} other {# στοιχεία}}",
"assets_trashed_from_server": "{count} στοιχεία μεταφέρθηκαν στον κάδο απορριμμάτων από το διακομιστή Immich", "assets_trashed_from_server": "{count} στοιχεία μεταφέρθηκαν στον κάδο απορριμμάτων από το διακομιστή Immich",
"assets_were_part_of_album_count": "{count, plural, one {Το στοιχείο ανήκει} other {Τα στοιχεία ανήκουν}} ήδη στο άλμπουμ", "assets_were_part_of_album_count": "{count, plural, one {Το στοιχείο ανήκει} other {Τα στοιχεία ανήκουν}} ήδη στο άλμπουμ",
"assets_were_part_of_albums_count": "Το/α {count, plural, one {στοιχείο ήταν} other {στοιχεία ήταν}} ήδη μέρος των άλμπουμ",
"authorized_devices": "Εξουσιοδοτημένες Συσκευές", "authorized_devices": "Εξουσιοδοτημένες Συσκευές",
"automatic_endpoint_switching_subtitle": "Σύνδεση τοπικά μέσω του καθορισμένου Wi-Fi όταν είναι διαθέσιμο και χρήση εναλλακτικών συνδέσεων αλλού", "automatic_endpoint_switching_subtitle": "Σύνδεση τοπικά μέσω του καθορισμένου Wi-Fi όταν είναι διαθέσιμο και χρήση εναλλακτικών συνδέσεων αλλού",
"automatic_endpoint_switching_title": "Αυτόματη εναλλαγή URL", "automatic_endpoint_switching_title": "Αυτόματη εναλλαγή URL",
@@ -511,7 +528,7 @@
"back_close_deselect": "Πίσω, κλείσιμο ή αποεπιλογή", "back_close_deselect": "Πίσω, κλείσιμο ή αποεπιλογή",
"background_location_permission": "Άδεια τοποθεσίας στο παρασκήνιο", "background_location_permission": "Άδεια τοποθεσίας στο παρασκήνιο",
"background_location_permission_content": "Το Immich για να μπορεί να αλλάζει δίκτυα όταν τρέχει στο παρασκήνιο, πρέπει *πάντα* να έχει πρόσβαση στην ακριβή τοποθεσία ώστε η εφαρμογή να μπορεί να διαβάζει το όνομα του δικτύου Wi-Fi", "background_location_permission_content": "Το Immich για να μπορεί να αλλάζει δίκτυα όταν τρέχει στο παρασκήνιο, πρέπει *πάντα* να έχει πρόσβαση στην ακριβή τοποθεσία ώστε η εφαρμογή να μπορεί να διαβάζει το όνομα του δικτύου Wi-Fi",
"backup": "Αντίγραφα ασφαλείας", "backup": "Αντίγραφο ασφαλείας",
"backup_album_selection_page_albums_device": "Άλμπουμ στη συσκευή ({count})", "backup_album_selection_page_albums_device": "Άλμπουμ στη συσκευή ({count})",
"backup_album_selection_page_albums_tap": "Πάτημα για συμπερίληψη, διπλό πάτημα για εξαίρεση", "backup_album_selection_page_albums_tap": "Πάτημα για συμπερίληψη, διπλό πάτημα για εξαίρεση",
"backup_album_selection_page_assets_scatter": "Τα στοιχεία μπορεί να διασκορπιστούν σε πολλά άλμπουμ. Έτσι, τα άλμπουμ μπορούν να περιληφθούν ή να εξαιρεθούν κατά τη διαδικασία δημιουργίας αντιγράφων ασφαλείας.", "backup_album_selection_page_assets_scatter": "Τα στοιχεία μπορεί να διασκορπιστούν σε πολλά άλμπουμ. Έτσι, τα άλμπουμ μπορούν να περιληφθούν ή να εξαιρεθούν κατά τη διαδικασία δημιουργίας αντιγράφων ασφαλείας.",
@@ -543,7 +560,7 @@
"backup_controller_page_background_turn_off": "Απενεργοποίηση υπηρεσίας παρασκηνίου", "backup_controller_page_background_turn_off": "Απενεργοποίηση υπηρεσίας παρασκηνίου",
"backup_controller_page_background_turn_on": "Ενεργοποίηση υπηρεσίας παρασκηνίου", "backup_controller_page_background_turn_on": "Ενεργοποίηση υπηρεσίας παρασκηνίου",
"backup_controller_page_background_wifi": "Μόνο σε σύνδεση Wi-Fi", "backup_controller_page_background_wifi": "Μόνο σε σύνδεση Wi-Fi",
"backup_controller_page_backup": "Αντίγραφα ασφαλείας", "backup_controller_page_backup": "Αντίγραφο ασφαλείας",
"backup_controller_page_backup_selected": "Επιλεγμένα: ", "backup_controller_page_backup_selected": "Επιλεγμένα: ",
"backup_controller_page_backup_sub": "Φωτογραφίες και βίντεο για τα οποία έχουν δημιουργηθεί αντίγραφα ασφαλείας", "backup_controller_page_backup_sub": "Φωτογραφίες και βίντεο για τα οποία έχουν δημιουργηθεί αντίγραφα ασφαλείας",
"backup_controller_page_created": "Δημιουργήθηκε στις: {date}", "backup_controller_page_created": "Δημιουργήθηκε στις: {date}",
@@ -572,8 +589,10 @@
"backup_manual_in_progress": "Μεταφόρτωση σε εξέλιξη. Δοκιμάστε αργότερα", "backup_manual_in_progress": "Μεταφόρτωση σε εξέλιξη. Δοκιμάστε αργότερα",
"backup_manual_success": "Επιτυχία", "backup_manual_success": "Επιτυχία",
"backup_manual_title": "Κατάσταση μεταφόρτωσης", "backup_manual_title": "Κατάσταση μεταφόρτωσης",
"backup_options": "Επιλογές αντιγράφου ασφαλείας",
"backup_options_page_title": "Επιλογές αντιγράφων ασφαλείας", "backup_options_page_title": "Επιλογές αντιγράφων ασφαλείας",
"backup_setting_subtitle": "Διαχείριση ρυθμίσεων μεταφόρτωσης στο παρασκήνιο και στο προσκήνιο", "backup_setting_subtitle": "Διαχείριση ρυθμίσεων μεταφόρτωσης στο παρασκήνιο και στο προσκήνιο",
"backup_settings_subtitle": "Διαχείριση των ρυθμίσεων μεταφόρτωσης",
"backward": "Προς τα πίσω", "backward": "Προς τα πίσω",
"beta_sync": "Κατάσταση Συγχρονισμού Beta (δοκιμαστική)", "beta_sync": "Κατάσταση Συγχρονισμού Beta (δοκιμαστική)",
"beta_sync_subtitle": "Διαχείριση του νέου συστήματος συγχρονισμού", "beta_sync_subtitle": "Διαχείριση του νέου συστήματος συγχρονισμού",
@@ -643,6 +662,7 @@
"clear": "Εκκαθάριση", "clear": "Εκκαθάριση",
"clear_all": "Εκκαθάριση όλων", "clear_all": "Εκκαθάριση όλων",
"clear_all_recent_searches": "Εκκαθάριση όλων των πρόσφατων αναζητήσεων", "clear_all_recent_searches": "Εκκαθάριση όλων των πρόσφατων αναζητήσεων",
"clear_file_cache": "Εκκαθάριση της Προσωρινής Μνήμης Αρχείων",
"clear_message": "Εκκαθάριση μηνύματος", "clear_message": "Εκκαθάριση μηνύματος",
"clear_value": "Εκκαθάριση τιμής", "clear_value": "Εκκαθάριση τιμής",
"client_cert_dialog_msg_confirm": "ΟΚ", "client_cert_dialog_msg_confirm": "ΟΚ",
@@ -713,6 +733,7 @@
"create_new_user": "Δημιουργία νέου χρήστη", "create_new_user": "Δημιουργία νέου χρήστη",
"create_shared_album_page_share_add_assets": "ΠΡΟΣΘΗΚΗ ΣΤΟΙΧΕΙΩΝ", "create_shared_album_page_share_add_assets": "ΠΡΟΣΘΗΚΗ ΣΤΟΙΧΕΙΩΝ",
"create_shared_album_page_share_select_photos": "Επιλέξτε Φωτογραφίες", "create_shared_album_page_share_select_photos": "Επιλέξτε Φωτογραφίες",
"create_shared_link": "Δημιουργία κοινόχρηστου συνδέσμου",
"create_tag": "Δημιουργία ετικέτας", "create_tag": "Δημιουργία ετικέτας",
"create_tag_description": "Δημιουργία νέας ετικέτας. Για τις ένθετες ετικέτες, παρακαλώ εισάγετε τη πλήρη διαδρομή της, συμπεριλαμβανομένων των κάθετων διαχωριστικών.", "create_tag_description": "Δημιουργία νέας ετικέτας. Για τις ένθετες ετικέτες, παρακαλώ εισάγετε τη πλήρη διαδρομή της, συμπεριλαμβανομένων των κάθετων διαχωριστικών.",
"create_user": "Δημιουργία χρήστη", "create_user": "Δημιουργία χρήστη",
@@ -737,6 +758,7 @@
"date_of_birth_saved": "Η ημερομηνία γέννησης αποθηκεύτηκε επιτυχώς", "date_of_birth_saved": "Η ημερομηνία γέννησης αποθηκεύτηκε επιτυχώς",
"date_range": "Εύρος ημερομηνιών", "date_range": "Εύρος ημερομηνιών",
"day": "Ημέρα", "day": "Ημέρα",
"days": "Ημέρες",
"deduplicate_all": "Αφαίρεση όλων των διπλότυπων", "deduplicate_all": "Αφαίρεση όλων των διπλότυπων",
"deduplication_criteria_1": "Μέγεθος εικόνας σε byte", "deduplication_criteria_1": "Μέγεθος εικόνας σε byte",
"deduplication_criteria_2": "Αριθμός δεδομένων EXIF", "deduplication_criteria_2": "Αριθμός δεδομένων EXIF",
@@ -821,8 +843,12 @@
"edit": "Επεξεργασία", "edit": "Επεξεργασία",
"edit_album": "Επεξεργασία άλμπουμ", "edit_album": "Επεξεργασία άλμπουμ",
"edit_avatar": "Επεξεργασία άβαταρ", "edit_avatar": "Επεξεργασία άβαταρ",
"edit_birthday": "Επεξεργασία γενεθλίων",
"edit_date": "Επεξεργασία ημερομηνίας", "edit_date": "Επεξεργασία ημερομηνίας",
"edit_date_and_time": "Επεξεργασία ημερομηνίας και ώρας", "edit_date_and_time": "Επεξεργασία ημερομηνίας και ώρας",
"edit_date_and_time_action_prompt": "{count} ημερομηνία και ώρα επεξεργάστηκαν",
"edit_date_and_time_by_offset": "Αλλαγή ημερομηνίας με μετατόπιση",
"edit_date_and_time_by_offset_interval": "Νέο εύρος ημερομηνιών: {from} - {to}",
"edit_description": "Επεξεργασία περιγραφής", "edit_description": "Επεξεργασία περιγραφής",
"edit_description_prompt": "Παρακαλώ επιλέξτε νέα περιγραφή:", "edit_description_prompt": "Παρακαλώ επιλέξτε νέα περιγραφή:",
"edit_exclusion_pattern": "Επεξεργασία μοτίβου αποκλεισμού", "edit_exclusion_pattern": "Επεξεργασία μοτίβου αποκλεισμού",
@@ -895,6 +921,7 @@
"failed_to_load_notifications": "Αποτυχία φόρτωσης ειδοποιήσεων", "failed_to_load_notifications": "Αποτυχία φόρτωσης ειδοποιήσεων",
"failed_to_load_people": "Αποτυχία φόρτωσης ατόμων", "failed_to_load_people": "Αποτυχία φόρτωσης ατόμων",
"failed_to_remove_product_key": "Αποτυχία αφαίρεσης κλειδιού προϊόντος", "failed_to_remove_product_key": "Αποτυχία αφαίρεσης κλειδιού προϊόντος",
"failed_to_reset_pin_code": "Αποτυχία επαναφοράς του PIN",
"failed_to_stack_assets": "Αποτυχία στην συμπίεση των στοιχείων", "failed_to_stack_assets": "Αποτυχία στην συμπίεση των στοιχείων",
"failed_to_unstack_assets": "Αποτυχία στην αποσυμπίεση των στοιχείων", "failed_to_unstack_assets": "Αποτυχία στην αποσυμπίεση των στοιχείων",
"failed_to_update_notification_status": "Αποτυχία ενημέρωσης της κατάστασης ειδοποίησης", "failed_to_update_notification_status": "Αποτυχία ενημέρωσης της κατάστασης ειδοποίησης",
@@ -903,6 +930,7 @@
"paths_validation_failed": "{paths, plural, one {# διαδρομή} other {# διαδρομές}} απέτυχαν κατά την επικύρωση", "paths_validation_failed": "{paths, plural, one {# διαδρομή} other {# διαδρομές}} απέτυχαν κατά την επικύρωση",
"profile_picture_transparent_pixels": "Οι εικόνες προφίλ δεν μπορούν να έχουν διαφανή εικονοστοιχεία. Παρακαλώ μεγεθύνετε ή/και μετακινήστε την εικόνα.", "profile_picture_transparent_pixels": "Οι εικόνες προφίλ δεν μπορούν να έχουν διαφανή εικονοστοιχεία. Παρακαλώ μεγεθύνετε ή/και μετακινήστε την εικόνα.",
"quota_higher_than_disk_size": "Έχετε ορίσει ένα όριο, μεγαλύτερο από το μέγεθος του δίσκου", "quota_higher_than_disk_size": "Έχετε ορίσει ένα όριο, μεγαλύτερο από το μέγεθος του δίσκου",
"something_went_wrong": "Κάτι πήγε στραβά",
"unable_to_add_album_users": "Αδυναμία προσθήκης χρήστη στο άλμπουμ", "unable_to_add_album_users": "Αδυναμία προσθήκης χρήστη στο άλμπουμ",
"unable_to_add_assets_to_shared_link": "Αδυναμία προσθήκης στοιχείου στον κοινόχρηστο σύνδεσμο", "unable_to_add_assets_to_shared_link": "Αδυναμία προσθήκης στοιχείου στον κοινόχρηστο σύνδεσμο",
"unable_to_add_comment": "Αδυναμία προσθήκης σχολίου", "unable_to_add_comment": "Αδυναμία προσθήκης σχολίου",
@@ -988,13 +1016,11 @@
}, },
"exif": "Μεταδεδομένα Exif", "exif": "Μεταδεδομένα Exif",
"exif_bottom_sheet_description": "Προσθήκη Περιγραφής...", "exif_bottom_sheet_description": "Προσθήκη Περιγραφής...",
"exif_bottom_sheet_description_error": "Σφάλμα κατά την ενημέρωση της περιγραφής",
"exif_bottom_sheet_details": "ΛΕΠΤΟΜΕΡΕΙΕΣ", "exif_bottom_sheet_details": "ΛΕΠΤΟΜΕΡΕΙΕΣ",
"exif_bottom_sheet_location": "ΤΟΠΟΘΕΣΙΑ", "exif_bottom_sheet_location": "ΤΟΠΟΘΕΣΙΑ",
"exif_bottom_sheet_people": "ΑΤΟΜΑ", "exif_bottom_sheet_people": "ΑΤΟΜΑ",
"exif_bottom_sheet_person_add_person": "Προσθήκη ονόματος", "exif_bottom_sheet_person_add_person": "Προσθήκη ονόματος",
"exif_bottom_sheet_person_age_months": "Ηλικία {months} μήνες",
"exif_bottom_sheet_person_age_year_months": "Ηλικία 1 έτους, {months} μηνών",
"exif_bottom_sheet_person_age_years": "Ηλικία {years}",
"exit_slideshow": "Έξοδος από την παρουσίαση", "exit_slideshow": "Έξοδος από την παρουσίαση",
"expand_all": "Ανάπτυξη όλων", "expand_all": "Ανάπτυξη όλων",
"experimental_settings_new_asset_list_subtitle": "Σε εξέλιξη", "experimental_settings_new_asset_list_subtitle": "Σε εξέλιξη",
@@ -1036,11 +1062,13 @@
"filter_people": "Φιλτράρισμα ατόμων", "filter_people": "Φιλτράρισμα ατόμων",
"filter_places": "Φιλτράρισμα τοποθεσιών", "filter_places": "Φιλτράρισμα τοποθεσιών",
"find_them_fast": "Βρείτε τους γρήγορα με αναζήτηση κατά όνομα", "find_them_fast": "Βρείτε τους γρήγορα με αναζήτηση κατά όνομα",
"first": "Αρχικά",
"fix_incorrect_match": "Διόρθωση λανθασμένης αντιστοίχισης", "fix_incorrect_match": "Διόρθωση λανθασμένης αντιστοίχισης",
"folder": "Φάκελος", "folder": "Φάκελος",
"folder_not_found": "Ο φάκελος δεν βρέθηκε", "folder_not_found": "Ο φάκελος δεν βρέθηκε",
"folders": "Φάκελοι", "folders": "Φάκελοι",
"folders_feature_description": "Περιήγηση στην προβολή φακέλου για τις φωτογραφίες και τα βίντεο στο σύστημα αρχείων", "folders_feature_description": "Περιήγηση στην προβολή φακέλου για τις φωτογραφίες και τα βίντεο στο σύστημα αρχείων",
"forgot_pin_code_question": "Ξεχάσατε το PIN;",
"forward": "Προς τα εμπρός", "forward": "Προς τα εμπρός",
"gcast_enabled": "Μετάδοση περιεχομένου Google Cast", "gcast_enabled": "Μετάδοση περιεχομένου Google Cast",
"gcast_enabled_description": "Αυτό το χαρακτηριστικό φορτώνει εξωτερικούς πόρους από τη Google για να λειτουργήσει.", "gcast_enabled_description": "Αυτό το χαρακτηριστικό φορτώνει εξωτερικούς πόρους από τη Google για να λειτουργήσει.",
@@ -1095,6 +1123,7 @@
"home_page_upload_err_limit": "Μπορείτε να ανεβάσετε μόνο 30 στοιχεία κάθε φορά, παραλείπεται", "home_page_upload_err_limit": "Μπορείτε να ανεβάσετε μόνο 30 στοιχεία κάθε φορά, παραλείπεται",
"host": "Φιλοξενία", "host": "Φιλοξενία",
"hour": "Ώρα", "hour": "Ώρα",
"hours": "Ώρες",
"id": "ID", "id": "ID",
"idle": "Αδράνεια", "idle": "Αδράνεια",
"ignore_icloud_photos": "Αγνοήστε τις φωτογραφίες iCloud", "ignore_icloud_photos": "Αγνοήστε τις φωτογραφίες iCloud",
@@ -1155,10 +1184,12 @@
"language_search_hint": "Αναζήτηση γλωσσών...", "language_search_hint": "Αναζήτηση γλωσσών...",
"language_setting_description": "Επιλέξτε τη γλώσσα που προτιμάτε", "language_setting_description": "Επιλέξτε τη γλώσσα που προτιμάτε",
"large_files": "Μεγάλα Αρχεία", "large_files": "Μεγάλα Αρχεία",
"last": "Τελευταία",
"last_seen": "Τελευταία προβολή", "last_seen": "Τελευταία προβολή",
"latest_version": "Τελευταία Έκδοση", "latest_version": "Τελευταία Έκδοση",
"latitude": "Γεωγραφικό πλάτος", "latitude": "Γεωγραφικό πλάτος",
"leave": "Εγκατάλειψη", "leave": "Εγκατάλειψη",
"leave_album": "Αποχώρηση από το άλμπουμ",
"lens_model": "Μοντέλο φακού", "lens_model": "Μοντέλο φακού",
"let_others_respond": "Επέτρεψε σε άλλους να απαντήσουν", "let_others_respond": "Επέτρεψε σε άλλους να απαντήσουν",
"level": "Επίπεδο", "level": "Επίπεδο",
@@ -1172,6 +1203,7 @@
"library_page_sort_title": "Τίτλος άλμπουμ", "library_page_sort_title": "Τίτλος άλμπουμ",
"licenses": "Άδειες", "licenses": "Άδειες",
"light": "Φωτεινό", "light": "Φωτεινό",
"like": "Μου αρέσει",
"like_deleted": "Το \"μου αρέσει\" διαγράφηκε", "like_deleted": "Το \"μου αρέσει\" διαγράφηκε",
"link_motion_video": "Σύνδεσε βίντεο κίνησης", "link_motion_video": "Σύνδεσε βίντεο κίνησης",
"link_to_oauth": "Σύνδεση στον OAuth", "link_to_oauth": "Σύνδεση στον OAuth",
@@ -1238,7 +1270,7 @@
"manage_your_devices": "Διαχειριστείτε τις συνδεδεμένες συσκευές σας", "manage_your_devices": "Διαχειριστείτε τις συνδεδεμένες συσκευές σας",
"manage_your_oauth_connection": "Διαχειριστείτε τη σύνδεσή σας OAuth", "manage_your_oauth_connection": "Διαχειριστείτε τη σύνδεσή σας OAuth",
"map": "Χάρτης", "map": "Χάρτης",
"map_assets_in_bounds": "{count, plural, one {# φωτογραφία} other {# φωτογραφίες}}", "map_assets_in_bounds": "{count, plural, =0 {Καμία φωτογραφία σε αυτή την περιοχή} one {# φωτογραφία} other {# φωτογραφίες}}",
"map_cannot_get_user_location": "Δεν είναι δυνατή η λήψη της τοποθεσίας του χρήστη", "map_cannot_get_user_location": "Δεν είναι δυνατή η λήψη της τοποθεσίας του χρήστη",
"map_location_dialog_yes": "Ναι", "map_location_dialog_yes": "Ναι",
"map_location_picker_page_use_location": "Χρησιμοποιήστε αυτήν την τοποθεσία", "map_location_picker_page_use_location": "Χρησιμοποιήστε αυτήν την τοποθεσία",
@@ -1246,7 +1278,6 @@
"map_location_service_disabled_title": "Η υπηρεσία τοποθεσίας απενεργοποιήθηκε", "map_location_service_disabled_title": "Η υπηρεσία τοποθεσίας απενεργοποιήθηκε",
"map_marker_for_images": "Δείκτης χάρτη για εικόνες που τραβήχτηκαν σε {city}, {country}", "map_marker_for_images": "Δείκτης χάρτη για εικόνες που τραβήχτηκαν σε {city}, {country}",
"map_marker_with_image": "Χάρτης δείκτη με εικόνα", "map_marker_with_image": "Χάρτης δείκτη με εικόνα",
"map_no_assets_in_bounds": "Δεν υπάρχουν φωτογραφίες σε αυτήν την περιοχή",
"map_no_location_permission_content": "Απαιτείται άδεια τοποθεσίας για την εμφάνιση στοιχείων από την τρέχουσα τοποθεσία σας. Θέλετε να το επιτρέψετε τώρα;", "map_no_location_permission_content": "Απαιτείται άδεια τοποθεσίας για την εμφάνιση στοιχείων από την τρέχουσα τοποθεσία σας. Θέλετε να το επιτρέψετε τώρα;",
"map_no_location_permission_title": "Η άδεια τοποθεσίας απορρίφθηκε", "map_no_location_permission_title": "Η άδεια τοποθεσίας απορρίφθηκε",
"map_settings": "Ρυθμίσεις χάρτη", "map_settings": "Ρυθμίσεις χάρτη",
@@ -1283,6 +1314,7 @@
"merged_people_count": "Έγινε συγχώνευση {count, plural, one {# ατόμου} other {# ατόμων}}", "merged_people_count": "Έγινε συγχώνευση {count, plural, one {# ατόμου} other {# ατόμων}}",
"minimize": "Ελαχιστοποίηση", "minimize": "Ελαχιστοποίηση",
"minute": "Λεπτό", "minute": "Λεπτό",
"minutes": "Λεπτά",
"missing": "Όσα Λείπουν", "missing": "Όσα Λείπουν",
"model": "Μοντέλο", "model": "Μοντέλο",
"month": "Μήνας", "month": "Μήνας",
@@ -1302,6 +1334,9 @@
"my_albums": "Τα άλμπουμ μου", "my_albums": "Τα άλμπουμ μου",
"name": "Όνομα", "name": "Όνομα",
"name_or_nickname": "Όνομα ή ψευδώνυμο", "name_or_nickname": "Όνομα ή ψευδώνυμο",
"network_requirement_photos_upload": "Χρήση δεδομένων κινητής τηλεφωνίας για τη δημιουργία αντιγράφων ασφαλείας των φωτογραφιών",
"network_requirement_videos_upload": "Χρήση δεδομένων κινητής τηλεφωνίας για τη δημιουργία αντιγράφων ασφαλείας των βίντεο",
"network_requirements_updated": "Οι απαιτήσεις δικτύου άλλαξαν, γίνεται επαναφορά της ουράς αντιγράφων ασφαλείας",
"networking_settings": "Δικτύωση", "networking_settings": "Δικτύωση",
"networking_subtitle": "Διαχείριση ρυθμίσεων τελικών σημείων διακομιστή", "networking_subtitle": "Διαχείριση ρυθμίσεων τελικών σημείων διακομιστή",
"never": "Ποτέ", "never": "Ποτέ",
@@ -1353,6 +1388,7 @@
"oauth": "OAuth", "oauth": "OAuth",
"official_immich_resources": "Επίσημοι Πόροι του Immich", "official_immich_resources": "Επίσημοι Πόροι του Immich",
"offline": "Εκτός σύνδεσης", "offline": "Εκτός σύνδεσης",
"offset": "Μετατόπιση",
"ok": "Έγινε", "ok": "Έγινε",
"oldest_first": "Τα παλαιότερα πρώτα", "oldest_first": "Τα παλαιότερα πρώτα",
"on_this_device": "Σε αυτή τη συσκευή", "on_this_device": "Σε αυτή τη συσκευή",
@@ -1430,6 +1466,9 @@
"permission_onboarding_permission_limited": "Περιορισμένη άδεια. Για να επιτρέψετε στο Immich να δημιουργεί αντίγραφα ασφαλείας και να διαχειρίζεται ολόκληρη τη συλλογή σας, παραχωρήστε άδειες φωτογραφιών και βίντεο στις Ρυθμίσεις.", "permission_onboarding_permission_limited": "Περιορισμένη άδεια. Για να επιτρέψετε στο Immich να δημιουργεί αντίγραφα ασφαλείας και να διαχειρίζεται ολόκληρη τη συλλογή σας, παραχωρήστε άδειες φωτογραφιών και βίντεο στις Ρυθμίσεις.",
"permission_onboarding_request": "Το Immich απαιτεί άδεια πρόσβασεις στις φωτογραφίες και τα βίντεό σας.", "permission_onboarding_request": "Το Immich απαιτεί άδεια πρόσβασεις στις φωτογραφίες και τα βίντεό σας.",
"person": "Άτομο", "person": "Άτομο",
"person_age_months": "{months, plural, one {# μήνας} other {# μήνες}} παλιά",
"person_age_year_months": "1 χρόνος, {months, plural, one {# μήνας} other {# μήνες}} παλιά",
"person_age_years": "{years, plural, other {# χρόνια}} παλιά",
"person_birthdate": "Γεννηθείς στις {date}", "person_birthdate": "Γεννηθείς στις {date}",
"person_hidden": "{name}{hidden, select, true { (κρυφό)} other {}}", "person_hidden": "{name}{hidden, select, true { (κρυφό)} other {}}",
"photo_shared_all_users": "Φαίνεται ότι μοιραστήκατε τις φωτογραφίες σας με όλους τους χρήστες ή δεν έχετε κανέναν χρήστη για κοινή χρήση.", "photo_shared_all_users": "Φαίνεται ότι μοιραστήκατε τις φωτογραφίες σας με όλους τους χρήστες ή δεν έχετε κανέναν χρήστη για κοινή χρήση.",
@@ -1575,6 +1614,9 @@
"reset_password": "Επαναφορά κωδικού πρόσβασης", "reset_password": "Επαναφορά κωδικού πρόσβασης",
"reset_people_visibility": "Επαναφορά προβολής ατόμων", "reset_people_visibility": "Επαναφορά προβολής ατόμων",
"reset_pin_code": "Επαναφορά κωδικού PIN", "reset_pin_code": "Επαναφορά κωδικού PIN",
"reset_pin_code_description": "Αν ξεχάσατε τον κωδικό PIN σας, μπορείτε να επικοινωνήσετε με τον διαχειριστή του διακομιστή για να τον επαναφέρει",
"reset_pin_code_success": "Ο κωδικός PIN επαναφέρθηκε επιτυχώς",
"reset_pin_code_with_password": "Μπορείτε πάντα να επαναφέρετε τον κωδικό PIN χρησιμοποιώντας τον κωδικό πρόσβασής σας",
"reset_sqlite": "Επαναφορά SQLite βάσης δεδομένων", "reset_sqlite": "Επαναφορά SQLite βάσης δεδομένων",
"reset_sqlite_confirmation": "Είσαι σίγουρος ότι θέλεις να επαναφέρεις τη βάση δεδομένων SQLite; Θα χρειαστεί να κάνεις αποσύνδεση και επανασύνδεση για να επανασυγχρονίσεις τα δεδομένα", "reset_sqlite_confirmation": "Είσαι σίγουρος ότι θέλεις να επαναφέρεις τη βάση δεδομένων SQLite; Θα χρειαστεί να κάνεις αποσύνδεση και επανασύνδεση για να επανασυγχρονίσεις τα δεδομένα",
"reset_sqlite_success": "Η επαναφορά της SQLite βάσης δεδομένων ολοκληρώθηκε με επιτυχία", "reset_sqlite_success": "Η επαναφορά της SQLite βάσης δεδομένων ολοκληρώθηκε με επιτυχία",
@@ -1823,6 +1865,7 @@
"sort_created": "Ημερομηνία Δημιουργίας", "sort_created": "Ημερομηνία Δημιουργίας",
"sort_items": "Αριθμός αντικειμένων", "sort_items": "Αριθμός αντικειμένων",
"sort_modified": "Ημερομηνία τροποποίησης", "sort_modified": "Ημερομηνία τροποποίησης",
"sort_newest": "Νεότερη φωτογραφία",
"sort_oldest": "Η πιο παλιά φωτογραφία", "sort_oldest": "Η πιο παλιά φωτογραφία",
"sort_people_by_similarity": "Ταξινόμηση ατόμων κατά ομοιότητα", "sort_people_by_similarity": "Ταξινόμηση ατόμων κατά ομοιότητα",
"sort_recent": "Η πιο πρόσφατη φωτογραφία", "sort_recent": "Η πιο πρόσφατη φωτογραφία",

View File

@@ -28,6 +28,9 @@
"add_to_album": "Add to album", "add_to_album": "Add to album",
"add_to_album_bottom_sheet_added": "Added to {album}", "add_to_album_bottom_sheet_added": "Added to {album}",
"add_to_album_bottom_sheet_already_exists": "Already in {album}", "add_to_album_bottom_sheet_already_exists": "Already in {album}",
"add_to_album_toggle": "Toggle selection for {album}",
"add_to_albums": "Add to albums",
"add_to_albums_count": "Add to albums ({count})",
"add_to_shared_album": "Add to shared album", "add_to_shared_album": "Add to shared album",
"add_url": "Add URL", "add_url": "Add URL",
"added_to_archive": "Added to archive", "added_to_archive": "Added to archive",
@@ -355,6 +358,9 @@
"trash_number_of_days_description": "Number of days to keep the assets in trash before permanently removing them", "trash_number_of_days_description": "Number of days to keep the assets in trash before permanently removing them",
"trash_settings": "Trash Settings", "trash_settings": "Trash Settings",
"trash_settings_description": "Manage trash settings", "trash_settings_description": "Manage trash settings",
"unlink_all_oauth_accounts": "Unlink all OAuth accounts",
"unlink_all_oauth_accounts_description": "Remember to unlink all OAuth accounts before migrating to a new provider.",
"unlink_all_oauth_accounts_prompt": "Are you sure you want to unlink all OAuth accounts? This will reset the OAuth ID for each user and cannot be undone.",
"user_cleanup_job": "User cleanup", "user_cleanup_job": "User cleanup",
"user_delete_delay": "<b>{user}</b>'s account and assets will be scheduled for permanent deletion in {delay, plural, one {# day} other {# days}}.", "user_delete_delay": "<b>{user}</b>'s account and assets will be scheduled for permanent deletion in {delay, plural, one {# day} other {# days}}.",
"user_delete_delay_settings": "Delete delay", "user_delete_delay_settings": "Delete delay",
@@ -390,6 +396,8 @@
"advanced_settings_prefer_remote_title": "Prefer remote images", "advanced_settings_prefer_remote_title": "Prefer remote images",
"advanced_settings_proxy_headers_subtitle": "Define proxy headers Immich should send with each network request", "advanced_settings_proxy_headers_subtitle": "Define proxy headers Immich should send with each network request",
"advanced_settings_proxy_headers_title": "Proxy Headers", "advanced_settings_proxy_headers_title": "Proxy Headers",
"advanced_settings_readonly_mode_subtitle": "Enables the read-only mode where the photos can be only viewed, things like selecting multiple images, sharing, casting, delete are all disabled. Enable/Disable read-only via user avatar from the main screen",
"advanced_settings_readonly_mode_title": "Read-only Mode",
"advanced_settings_self_signed_ssl_subtitle": "Skips SSL certificate verification for the server endpoint. Required for self-signed certificates.", "advanced_settings_self_signed_ssl_subtitle": "Skips SSL certificate verification for the server endpoint. Required for self-signed certificates.",
"advanced_settings_self_signed_ssl_title": "Allow self-signed SSL certificates", "advanced_settings_self_signed_ssl_title": "Allow self-signed SSL certificates",
"advanced_settings_sync_remote_deletions_subtitle": "Automatically delete or restore an asset on this device when that action is taken on the web", "advanced_settings_sync_remote_deletions_subtitle": "Automatically delete or restore an asset on this device when that action is taken on the web",
@@ -455,6 +463,7 @@
"app_bar_signout_dialog_title": "Sign out", "app_bar_signout_dialog_title": "Sign out",
"app_settings": "App Settings", "app_settings": "App Settings",
"appears_in": "Appears in", "appears_in": "Appears in",
"apply_count": "Apply ({count, number})",
"archive": "Archive", "archive": "Archive",
"archive_action_prompt": "{count} added to Archive", "archive_action_prompt": "{count} added to Archive",
"archive_or_unarchive_photo": "Archive or unarchive photo", "archive_or_unarchive_photo": "Archive or unarchive photo",
@@ -494,7 +503,9 @@
"assets": "Assets", "assets": "Assets",
"assets_added_count": "Added {count, plural, one {# asset} other {# assets}}", "assets_added_count": "Added {count, plural, one {# asset} other {# assets}}",
"assets_added_to_album_count": "Added {count, plural, one {# asset} other {# assets}} to the album", "assets_added_to_album_count": "Added {count, plural, one {# asset} other {# assets}} to the album",
"assets_added_to_albums_count": "Added {assetTotal, plural, one {# asset} other {# assets}} to {albumTotal, plural, one {# album} other {# albums}}",
"assets_cannot_be_added_to_album_count": "{count, plural, one {Asset} other {Assets}} cannot be added to the album", "assets_cannot_be_added_to_album_count": "{count, plural, one {Asset} other {Assets}} cannot be added to the album",
"assets_cannot_be_added_to_albums": "{count, plural, one {Asset} other {Assets}} cannot be added to any of the albums",
"assets_count": "{count, plural, one {# asset} other {# assets}}", "assets_count": "{count, plural, one {# asset} other {# assets}}",
"assets_deleted_permanently": "{count} asset(s) deleted permanently", "assets_deleted_permanently": "{count} asset(s) deleted permanently",
"assets_deleted_permanently_from_server": "{count} asset(s) deleted permanently from the Immich server", "assets_deleted_permanently_from_server": "{count} asset(s) deleted permanently from the Immich server",
@@ -511,6 +522,7 @@
"assets_trashed_count": "Trashed {count, plural, one {# asset} other {# assets}}", "assets_trashed_count": "Trashed {count, plural, one {# asset} other {# assets}}",
"assets_trashed_from_server": "{count} asset(s) trashed from the Immich server", "assets_trashed_from_server": "{count} asset(s) trashed from the Immich server",
"assets_were_part_of_album_count": "{count, plural, one {Asset was} other {Assets were}} already part of the album", "assets_were_part_of_album_count": "{count, plural, one {Asset was} other {Assets were}} already part of the album",
"assets_were_part_of_albums_count": "{count, plural, one {Asset was} other {Assets were}} already part of the albums",
"authorized_devices": "Authorized Devices", "authorized_devices": "Authorized Devices",
"automatic_endpoint_switching_subtitle": "Connect locally over designated Wi-Fi when available and use alternative connections elsewhere", "automatic_endpoint_switching_subtitle": "Connect locally over designated Wi-Fi when available and use alternative connections elsewhere",
"automatic_endpoint_switching_title": "Automatic URL switching", "automatic_endpoint_switching_title": "Automatic URL switching",
@@ -749,6 +761,7 @@
"date_of_birth_saved": "Date of birth saved successfully", "date_of_birth_saved": "Date of birth saved successfully",
"date_range": "Date range", "date_range": "Date range",
"day": "Day", "day": "Day",
"days": "Days",
"deduplicate_all": "Deduplicate All", "deduplicate_all": "Deduplicate All",
"deduplication_criteria_1": "Image size in bytes", "deduplication_criteria_1": "Image size in bytes",
"deduplication_criteria_2": "Count of EXIF data", "deduplication_criteria_2": "Count of EXIF data",
@@ -833,10 +846,12 @@
"edit": "Edit", "edit": "Edit",
"edit_album": "Edit album", "edit_album": "Edit album",
"edit_avatar": "Edit avatar", "edit_avatar": "Edit avatar",
"edit_birthday": "Edit Birthday", "edit_birthday": "Edit birthday",
"edit_date": "Edit date", "edit_date": "Edit date",
"edit_date_and_time": "Edit date and time", "edit_date_and_time": "Edit date and time",
"edit_date_and_time_action_prompt": "{count} date and time edited", "edit_date_and_time_action_prompt": "{count} date and time edited",
"edit_date_and_time_by_offset": "Change date by offset",
"edit_date_and_time_by_offset_interval": "New date range: {from} - {to}",
"edit_description": "Edit description", "edit_description": "Edit description",
"edit_description_prompt": "Please select a new description:", "edit_description_prompt": "Please select a new description:",
"edit_exclusion_pattern": "Edit exclusion pattern", "edit_exclusion_pattern": "Edit exclusion pattern",
@@ -909,6 +924,7 @@
"failed_to_load_notifications": "Failed to load notifications", "failed_to_load_notifications": "Failed to load notifications",
"failed_to_load_people": "Failed to load people", "failed_to_load_people": "Failed to load people",
"failed_to_remove_product_key": "Failed to remove product key", "failed_to_remove_product_key": "Failed to remove product key",
"failed_to_reset_pin_code": "Failed to reset PIN code",
"failed_to_stack_assets": "Failed to stack assets", "failed_to_stack_assets": "Failed to stack assets",
"failed_to_unstack_assets": "Failed to un-stack assets", "failed_to_unstack_assets": "Failed to un-stack assets",
"failed_to_update_notification_status": "Failed to update notification status", "failed_to_update_notification_status": "Failed to update notification status",
@@ -917,6 +933,7 @@
"paths_validation_failed": "{paths, plural, one {# path} other {# paths}} failed validation", "paths_validation_failed": "{paths, plural, one {# path} other {# paths}} failed validation",
"profile_picture_transparent_pixels": "Profile pictures cannot have transparent pixels. Please zoom in and/or move the image.", "profile_picture_transparent_pixels": "Profile pictures cannot have transparent pixels. Please zoom in and/or move the image.",
"quota_higher_than_disk_size": "You set a quota higher than the disk size", "quota_higher_than_disk_size": "You set a quota higher than the disk size",
"something_went_wrong": "Something went wrong",
"unable_to_add_album_users": "Unable to add users to album", "unable_to_add_album_users": "Unable to add users to album",
"unable_to_add_assets_to_shared_link": "Unable to add assets to shared link", "unable_to_add_assets_to_shared_link": "Unable to add assets to shared link",
"unable_to_add_comment": "Unable to add comment", "unable_to_add_comment": "Unable to add comment",
@@ -1007,9 +1024,6 @@
"exif_bottom_sheet_location": "LOCATION", "exif_bottom_sheet_location": "LOCATION",
"exif_bottom_sheet_people": "PEOPLE", "exif_bottom_sheet_people": "PEOPLE",
"exif_bottom_sheet_person_add_person": "Add name", "exif_bottom_sheet_person_add_person": "Add name",
"exif_bottom_sheet_person_age_months": "Age {months} months",
"exif_bottom_sheet_person_age_year_months": "Age 1 year, {months} months",
"exif_bottom_sheet_person_age_years": "Age {years}",
"exit_slideshow": "Exit Slideshow", "exit_slideshow": "Exit Slideshow",
"expand_all": "Expand all", "expand_all": "Expand all",
"experimental_settings_new_asset_list_subtitle": "Work in progress", "experimental_settings_new_asset_list_subtitle": "Work in progress",
@@ -1051,21 +1065,29 @@
"filter_people": "Filter people", "filter_people": "Filter people",
"filter_places": "Filter places", "filter_places": "Filter places",
"find_them_fast": "Find them fast by name with search", "find_them_fast": "Find them fast by name with search",
"first": "First",
"fix_incorrect_match": "Fix incorrect match", "fix_incorrect_match": "Fix incorrect match",
"folder": "Folder", "folder": "Folder",
"folder_not_found": "Folder not found", "folder_not_found": "Folder not found",
"folders": "Folders", "folders": "Folders",
"folders_feature_description": "Browsing the folder view for the photos and videos on the file system", "folders_feature_description": "Browsing the folder view for the photos and videos on the file system",
"forgot_pin_code_question": "Forgot your PIN?",
"forward": "Forward", "forward": "Forward",
"gcast_enabled": "Google Cast", "gcast_enabled": "Google Cast",
"gcast_enabled_description": "This feature loads external resources from Google in order to work.", "gcast_enabled_description": "This feature loads external resources from Google in order to work.",
"general": "General", "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_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", "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", "getting_started": "Getting Started",
"go_back": "Go back", "go_back": "Go back",
"go_to_folder": "Go to folder", "go_to_folder": "Go to folder",
"go_to_search": "Go to search", "go_to_search": "Go to search",
"gps": "GPS",
"gps_missing": "No GPS",
"grant_permission": "Grant permission", "grant_permission": "Grant permission",
"group_albums_by": "Group albums by...", "group_albums_by": "Group albums by...",
"group_country": "Group by country", "group_country": "Group by country",
@@ -1110,6 +1132,7 @@
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping", "home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"host": "Host", "host": "Host",
"hour": "Hour", "hour": "Hour",
"hours": "Hours",
"id": "ID", "id": "ID",
"idle": "Idle", "idle": "Idle",
"ignore_icloud_photos": "Ignore iCloud photos", "ignore_icloud_photos": "Ignore iCloud photos",
@@ -1170,6 +1193,7 @@
"language_search_hint": "Search languages...", "language_search_hint": "Search languages...",
"language_setting_description": "Select your preferred language", "language_setting_description": "Select your preferred language",
"large_files": "Large Files", "large_files": "Large Files",
"last": "Last",
"last_seen": "Last seen", "last_seen": "Last seen",
"latest_version": "Latest Version", "latest_version": "Latest Version",
"latitude": "Latitude", "latitude": "Latitude",
@@ -1188,6 +1212,7 @@
"library_page_sort_title": "Album title", "library_page_sort_title": "Album title",
"licenses": "Licenses", "licenses": "Licenses",
"light": "Light", "light": "Light",
"like": "Like",
"like_deleted": "Like deleted", "like_deleted": "Like deleted",
"link_motion_video": "Link motion video", "link_motion_video": "Link motion video",
"link_to_oauth": "Link to OAuth", "link_to_oauth": "Link to OAuth",
@@ -1246,6 +1271,7 @@
"main_branch_warning": "You're using a development version; we strongly recommend using a release version!", "main_branch_warning": "You're using a development version; we strongly recommend using a release version!",
"main_menu": "Main menu", "main_menu": "Main menu",
"make": "Make", "make": "Make",
"manage_geolocation": "Manage location",
"manage_shared_links": "Manage shared links", "manage_shared_links": "Manage shared links",
"manage_sharing_with_partners": "Manage sharing with partners", "manage_sharing_with_partners": "Manage sharing with partners",
"manage_the_app_settings": "Manage the app settings", "manage_the_app_settings": "Manage the app settings",
@@ -1298,6 +1324,7 @@
"merged_people_count": "Merged {count, plural, one {# person} other {# people}}", "merged_people_count": "Merged {count, plural, one {# person} other {# people}}",
"minimize": "Minimize", "minimize": "Minimize",
"minute": "Minute", "minute": "Minute",
"minutes": "Minutes",
"missing": "Missing", "missing": "Missing",
"model": "Model", "model": "Model",
"month": "Month", "month": "Month",
@@ -1371,6 +1398,7 @@
"oauth": "OAuth", "oauth": "OAuth",
"official_immich_resources": "Official Immich Resources", "official_immich_resources": "Official Immich Resources",
"offline": "Offline", "offline": "Offline",
"offset": "Offset",
"ok": "Ok", "ok": "Ok",
"oldest_first": "Oldest first", "oldest_first": "Oldest first",
"on_this_device": "On this device", "on_this_device": "On this device",
@@ -1389,6 +1417,8 @@
"open_the_search_filters": "Open the search filters", "open_the_search_filters": "Open the search filters",
"options": "Options", "options": "Options",
"or": "or", "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", "organize_your_library": "Organize your library",
"original": "original", "original": "original",
"other": "Other", "other": "Other",
@@ -1448,6 +1478,9 @@
"permission_onboarding_permission_limited": "Permission limited. To let Immich backup and manage your entire gallery collection, grant photo and video permissions in Settings.", "permission_onboarding_permission_limited": "Permission limited. To let Immich backup and manage your entire gallery collection, grant photo and video permissions in Settings.",
"permission_onboarding_request": "Immich requires permission to view your photos and videos.", "permission_onboarding_request": "Immich requires permission to view your photos and videos.",
"person": "Person", "person": "Person",
"person_age_months": "{months, plural, one {# month} other {# months}} old",
"person_age_year_months": "1 year, {months, plural, one {# month} other {# months}} old",
"person_age_years": "{years, plural, other {# years}} old",
"person_birthdate": "Born on {date}", "person_birthdate": "Born on {date}",
"person_hidden": "{name}{hidden, select, true { (hidden)} other {}}", "person_hidden": "{name}{hidden, select, true { (hidden)} other {}}",
"photo_shared_all_users": "Looks like you shared your photos with all users or you don't have any user to share with.", "photo_shared_all_users": "Looks like you shared your photos with all users or you don't have any user to share with.",
@@ -1487,6 +1520,7 @@
"profile_drawer_client_out_of_date_minor": "Mobile App is out of date. Please update to the latest minor version.", "profile_drawer_client_out_of_date_minor": "Mobile App is out of date. Please update to the latest minor version.",
"profile_drawer_client_server_up_to_date": "Client and Server are up-to-date", "profile_drawer_client_server_up_to_date": "Client and Server are up-to-date",
"profile_drawer_github": "GitHub", "profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Read-only mode enabled. Double-tap 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_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_drawer_server_out_of_date_minor": "Server is out of date. Please update to the latest minor version.",
"profile_image_of_user": "Profile image of {user}", "profile_image_of_user": "Profile image of {user}",
@@ -1525,6 +1559,7 @@
"purchase_server_description_2": "Supporter status", "purchase_server_description_2": "Supporter status",
"purchase_server_title": "Server", "purchase_server_title": "Server",
"purchase_settings_server_activated": "The server product key is managed by the admin", "purchase_settings_server_activated": "The server product key is managed by the admin",
"query_asset_id": "Query Asset ID",
"queue_status": "Queuing {count}/{total}", "queue_status": "Queuing {count}/{total}",
"rating": "Star rating", "rating": "Star rating",
"rating_clear": "Clear rating", "rating_clear": "Clear rating",
@@ -1532,6 +1567,8 @@
"rating_description": "Display the EXIF rating in the info panel", "rating_description": "Display the EXIF rating in the info panel",
"reaction_options": "Reaction options", "reaction_options": "Reaction options",
"read_changelog": "Read Changelog", "read_changelog": "Read Changelog",
"readonly_mode_disabled": "Read-only mode disabled",
"readonly_mode_enabled": "Read-only mode enabled",
"reassign": "Reassign", "reassign": "Reassign",
"reassigned_assets_to_existing_person": "Re-assigned {count, plural, one {# asset} other {# assets}} to {name, select, null {an existing person} other {{name}}}", "reassigned_assets_to_existing_person": "Re-assigned {count, plural, one {# asset} other {# assets}} to {name, select, null {an existing person} other {{name}}}",
"reassigned_assets_to_new_person": "Re-assigned {count, plural, one {# asset} other {# assets}} to a new person", "reassigned_assets_to_new_person": "Re-assigned {count, plural, one {# asset} other {# assets}} to a new person",
@@ -1593,6 +1630,9 @@
"reset_password": "Reset password", "reset_password": "Reset password",
"reset_people_visibility": "Reset people visibility", "reset_people_visibility": "Reset people visibility",
"reset_pin_code": "Reset PIN code", "reset_pin_code": "Reset PIN code",
"reset_pin_code_description": "If you forgot your PIN code, you can contact the server administrator to reset it",
"reset_pin_code_success": "Successfully reset PIN code",
"reset_pin_code_with_password": "You can always reset your PIN code with your password",
"reset_sqlite": "Reset SQLite Database", "reset_sqlite": "Reset SQLite Database",
"reset_sqlite_confirmation": "Are you sure you want to reset the SQLite database? You will need to log out and log in again to resync the data", "reset_sqlite_confirmation": "Are you sure you want to reset the SQLite database? You will need to log out and log in again to resync the data",
"reset_sqlite_success": "Successfully reset the SQLite database", "reset_sqlite_success": "Successfully reset the SQLite database",
@@ -1698,6 +1738,7 @@
"select_user_for_sharing_page_err_album": "Failed to create album", "select_user_for_sharing_page_err_album": "Failed to create album",
"selected": "Selected", "selected": "Selected",
"selected_count": "{count, plural, other {# selected}}", "selected_count": "{count, plural, other {# selected}}",
"selected_gps_coordinates": "Selected GPS Coordinates",
"send_message": "Send message", "send_message": "Send message",
"send_welcome_email": "Send welcome email", "send_welcome_email": "Send welcome email",
"server_endpoint": "Server Endpoint", "server_endpoint": "Server Endpoint",
@@ -1808,8 +1849,10 @@
"shift_to_permanent_delete": "press ⇧ to permanently delete asset", "shift_to_permanent_delete": "press ⇧ to permanently delete asset",
"show_album_options": "Show album options", "show_album_options": "Show album options",
"show_albums": "Show albums", "show_albums": "Show albums",
"show_all_assets": "Show all assets",
"show_all_people": "Show all people", "show_all_people": "Show all people",
"show_and_hide_people": "Show & hide people", "show_and_hide_people": "Show & hide people",
"show_assets_without_location": "Show assets without location",
"show_file_location": "Show file location", "show_file_location": "Show file location",
"show_gallery": "Show gallery", "show_gallery": "Show gallery",
"show_hidden_people": "Show hidden people", "show_hidden_people": "Show hidden people",
@@ -1841,6 +1884,7 @@
"sort_created": "Date created", "sort_created": "Date created",
"sort_items": "Number of items", "sort_items": "Number of items",
"sort_modified": "Date modified", "sort_modified": "Date modified",
"sort_newest": "Newest photo",
"sort_oldest": "Oldest photo", "sort_oldest": "Oldest photo",
"sort_people_by_similarity": "Sort people by similarity", "sort_people_by_similarity": "Sort people by similarity",
"sort_recent": "Most recent photo", "sort_recent": "Most recent photo",
@@ -1916,7 +1960,9 @@
"to_change_password": "Change password", "to_change_password": "Change password",
"to_favorite": "Favorite", "to_favorite": "Favorite",
"to_login": "Login", "to_login": "Login",
"to_multi_select": "to multi-select",
"to_parent": "Go to parent", "to_parent": "Go to parent",
"to_select": "to select",
"to_trash": "Trash", "to_trash": "Trash",
"toggle_settings": "Toggle settings", "toggle_settings": "Toggle settings",
"total": "Total", "total": "Total",
@@ -1966,6 +2012,7 @@
"unstacked_assets_count": "Un-stacked {count, plural, one {# asset} other {# assets}}", "unstacked_assets_count": "Un-stacked {count, plural, one {# asset} other {# assets}}",
"untagged": "Untagged", "untagged": "Untagged",
"up_next": "Up next", "up_next": "Up next",
"update_location_action_prompt": "Update the location of {count} selected assets with:",
"updated_at": "Updated", "updated_at": "Updated",
"updated_password": "Updated password", "updated_password": "Updated password",
"upload": "Upload", "upload": "Upload",
@@ -1990,6 +2037,7 @@
"use_biometric": "Use biometric", "use_biometric": "Use biometric",
"use_current_connection": "use current connection", "use_current_connection": "use current connection",
"use_custom_date_range": "Use custom date range instead", "use_custom_date_range": "Use custom date range instead",
"use_this_location": "Click to use location",
"user": "User", "user": "User",
"user_has_been_deleted": "This user has been deleted.", "user_has_been_deleted": "This user has been deleted.",
"user_id": "User ID", "user_id": "User ID",
@@ -2032,6 +2080,7 @@
"view_next_asset": "View next asset", "view_next_asset": "View next asset",
"view_previous_asset": "View previous asset", "view_previous_asset": "View previous asset",
"view_qr_code": "View QR code", "view_qr_code": "View QR code",
"view_similar_photos": "View similar photos",
"view_stack": "View Stack", "view_stack": "View Stack",
"view_user": "View User", "view_user": "View User",
"viewer_remove_from_stack": "Remove from Stack", "viewer_remove_from_stack": "Remove from Stack",

View File

@@ -14,6 +14,7 @@
"add_a_location": "Agregar ubicación", "add_a_location": "Agregar ubicación",
"add_a_name": "Agregar nombre", "add_a_name": "Agregar nombre",
"add_a_title": "Agregar título", "add_a_title": "Agregar título",
"add_birthday": "Agregar un cumpleaños",
"add_endpoint": "Agregar endpoint", "add_endpoint": "Agregar endpoint",
"add_exclusion_pattern": "Agregar patrón de exclusión", "add_exclusion_pattern": "Agregar patrón de exclusión",
"add_import_path": "Agregar ruta de importación", "add_import_path": "Agregar ruta de importación",
@@ -27,23 +28,33 @@
"add_to_album": "Incluir en álbum", "add_to_album": "Incluir en álbum",
"add_to_album_bottom_sheet_added": "Agregado a {album}", "add_to_album_bottom_sheet_added": "Agregado a {album}",
"add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}", "add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}",
"add_to_album_toggle": "Alternar selección para el {album}",
"add_to_albums": "Incluir en álbumes",
"add_to_albums_count": "Incluir en {count} álbumes",
"add_to_shared_album": "Incluir en álbum compartido", "add_to_shared_album": "Incluir en álbum compartido",
"add_url": "Añadir URL", "add_url": "Agregar URL",
"added_to_archive": "Agregado al Archivado", "added_to_archive": "Agregado al Archivado",
"added_to_favorites": "Agregado a favoritos", "added_to_favorites": "Agregado a favoritos",
"added_to_favorites_count": "Agregado {count, number} a favoritos", "added_to_favorites_count": "Agregado {count, number} a favoritos",
"admin": { "admin": {
"add_exclusion_pattern_description": "Agrega patrones de exclusión. Puedes utilizar los caracteres *, ** y ? (globbing). Ejemplos: para ignorar todos los archivos en cualquier directorio llamado \"Raw\", utiliza \"**/Raw/**\". Para ignorar todos los archivos que terminan en \".tif\", utiliza \"**/*.tif\". Para ignorar una ruta absoluta, utiliza \"/carpeta/a/ignorar/**\".", "add_exclusion_pattern_description": "Agrega patrones de exclusión. Puedes utilizar los caracteres *, ** y ? (globbing). Ejemplos: para ignorar todos los archivos en cualquier directorio llamado \"Raw\", utiliza \"**/Raw/**\". Para ignorar todos los archivos que terminan en \".tif\", utiliza \"**/*.tif\". Para ignorar una ruta absoluta, utiliza \"/carpeta/a/ignorar/**\".",
"admin_user": "Usuario admin", "admin_user": "Usuario administrativo",
"asset_offline_description": "Este recurso externo de la biblioteca ya no se encuentra en el disco y se ha movido a la papelera. Si el archivo se movió dentro de la biblioteca, comprueba la línea temporal para el nuevo recurso correspondiente. Para restaurar este recurso, asegúrate de que Immich puede acceder a la siguiente ruta de archivo y escanear la biblioteca.", "asset_offline_description": "Este recurso externo de la biblioteca ya no se encuentra en el disco y se ha movido a la papelera. Si el archivo se movió dentro de la biblioteca, comprueba la línea temporal para el nuevo recurso correspondiente. Para restaurar este recurso, asegúrate de que Immich puede acceder a la siguiente ruta de archivo y escanear la biblioteca.",
"authentication_settings": "Parámetros de autenticación", "authentication_settings": "Parámetros de autenticación",
"authentication_settings_description": "Gestionar contraseñas, OAuth y otros parámetros de autenticación", "authentication_settings_description": "Gestionar contraseñas, OAuth y otros parámetros de autenticación",
"authentication_settings_disable_all": "¿Estás seguro de que deseas desactivar todos los métodos de inicio de sesión? Esto desactivará por completo el inicio de sesión.", "authentication_settings_disable_all": "¿Estás seguro de que deseas desactivar todos los métodos de inicio de sesión? Esto desactivará por completo el inicio de sesión.",
"authentication_settings_reenable": "Para reactivarlo, utiliza un <link>Comando del servidor</link>.", "authentication_settings_reenable": "Para reactivarlo, utiliza un <link>Comando del servidor</link>.",
"background_task_job": "Tareas en segundo plano", "background_task_job": "Tareas en segundo plano",
"backup_database": "Crear volcado de base de datos", "backup_database": "Crear volcado de la base de datos",
"backup_database_enable_description": "Activar volcado de base de datos", "backup_database_enable_description": "Activar volcados de la base de datos",
"backup_keep_last_amount": "Cantidad de volcados previos a mantener", "backup_keep_last_amount": "Cantidad de volcados previos a mantener",
"backup_onboarding_1_description": "Copia en un lugar externo, en la nube u otra ubicación física.",
"backup_onboarding_2_description": "copias locales en diferentes dispositivos. Incluye los archivos principales y una copia de seguridad local de dichos archivos.",
"backup_onboarding_3_description": "copias totales de tu data, incluyendo los archivos originales. Incluye 1 copia fuera de sitio y 2 copias locales.",
"backup_onboarding_description": "Una estrategia de <backblaze-link>copia de seguridad 3-2-1</backblaze-link> es recomendada para proteger tu data. Deberías mantener tanto copias de tus fotos/videos subidos como de la base de datos de Immich para tener una solución de copia de seguridad integral.",
"backup_onboarding_footer": "Para obtener más información sobre cómo hacer una copia de seguridad de Immich, consulta la <link>documentación</link>.",
"backup_onboarding_parts_title": "Una copia de seguridad 3-2-1 incluye:",
"backup_onboarding_title": "Copias de seguridad",
"backup_settings": "Ajustes de volcado de base de datos", "backup_settings": "Ajustes de volcado de base de datos",
"backup_settings_description": "Administrar configuración de volcado de base de datos.", "backup_settings_description": "Administrar configuración de volcado de base de datos.",
"cleared_jobs": "Trabajos borrados para: {job}", "cleared_jobs": "Trabajos borrados para: {job}",
@@ -53,7 +64,7 @@
"confirm_email_below": "Para confirmar, escribe \"{email}\" a continuación", "confirm_email_below": "Para confirmar, escribe \"{email}\" a continuación",
"confirm_reprocess_all_faces": "¿Estás seguro de que deseas reprocesar todas las caras? Esto borrará a todas las personas que nombraste.", "confirm_reprocess_all_faces": "¿Estás seguro de que deseas reprocesar todas las caras? Esto borrará a todas las personas que nombraste.",
"confirm_user_password_reset": "¿Estás seguro de que quieres restablecer la contraseña de {user}?", "confirm_user_password_reset": "¿Estás seguro de que quieres restablecer la contraseña de {user}?",
"confirm_user_pin_code_reset": "Está seguro de que quiere restablecer el PIN de {user}?", "confirm_user_pin_code_reset": "¿Seguro que quieres restablecer el PIN de {user}?",
"create_job": "Crear trabajo", "create_job": "Crear trabajo",
"cron_expression": "Expresión CRON", "cron_expression": "Expresión CRON",
"cron_expression_description": "Establece el intervalo de escaneo utilizando el formato CRON. Para más información puedes consultar, por ejemplo, <link> Crontab Guru</link>", "cron_expression_description": "Establece el intervalo de escaneo utilizando el formato CRON. Para más información puedes consultar, por ejemplo, <link> Crontab Guru</link>",
@@ -80,7 +91,7 @@
"image_prefer_wide_gamut_setting_description": "Usar \"Display P3\" para las miniaturas. Preserva mejor la vivacidad de las imágenes con espacios de color amplios pero las imágenes pueden aparecer de manera diferente en dispositivos antiguos con una versión antigua del navegador. Las imágenes sRGB se mantienen como sRGB para evitar cambios de color.", "image_prefer_wide_gamut_setting_description": "Usar \"Display P3\" para las miniaturas. Preserva mejor la vivacidad de las imágenes con espacios de color amplios pero las imágenes pueden aparecer de manera diferente en dispositivos antiguos con una versión antigua del navegador. Las imágenes sRGB se mantienen como sRGB para evitar cambios de color.",
"image_preview_description": "Imagen de tamaño mediano con metadatos eliminados. Es utilizado al visualizar un solo activo y para el aprendizaje automático", "image_preview_description": "Imagen de tamaño mediano con metadatos eliminados. Es utilizado al visualizar un solo activo y para el aprendizaje automático",
"image_preview_quality_description": "Calidad de vista previa de 1 a 100. Es mejor cuanto más alta sea la calidad pero genera archivos más grandes y puede reducir la capacidad de respuesta de la aplicación. Establecer un valor bajo puede afectar la calidad del aprendizaje automático.", "image_preview_quality_description": "Calidad de vista previa de 1 a 100. Es mejor cuanto más alta sea la calidad pero genera archivos más grandes y puede reducir la capacidad de respuesta de la aplicación. Establecer un valor bajo puede afectar la calidad del aprendizaje automático.",
"image_preview_title": "Ajustes de la vista previa", "image_preview_title": "Ajustes de las vistas previas",
"image_quality": "Calidad", "image_quality": "Calidad",
"image_resolution": "Resolución", "image_resolution": "Resolución",
"image_resolution_description": "Las resoluciones más altas pueden conservar más detalles pero requieren más tiempo para codificar, tienen tamaños de archivo más grandes y pueden afectar la capacidad de respuesta de la aplicación.", "image_resolution_description": "Las resoluciones más altas pueden conservar más detalles pero requieren más tiempo para codificar, tienen tamaños de archivo más grandes y pueden afectar la capacidad de respuesta de la aplicación.",
@@ -105,7 +116,7 @@
"library_scanning_enable_description": "Activar el escaneo periódico de la biblioteca", "library_scanning_enable_description": "Activar el escaneo periódico de la biblioteca",
"library_settings": "Biblioteca externa", "library_settings": "Biblioteca externa",
"library_settings_description": "Administrar configuración biblioteca externa", "library_settings_description": "Administrar configuración biblioteca externa",
"library_tasks_description": "Buscar archivos nuevos o modificados en bibliotecas externas", "library_tasks_description": "Buscar elementos nuevos o modificados en bibliotecas externas",
"library_watching_enable_description": "Vigilar las bibliotecas externas para detectar cambios en los archivos", "library_watching_enable_description": "Vigilar las bibliotecas externas para detectar cambios en los archivos",
"library_watching_settings": "Vigilancia de la biblioteca (EXPERIMENTAL)", "library_watching_settings": "Vigilancia de la biblioteca (EXPERIMENTAL)",
"library_watching_settings_description": "Vigilar automaticamente en busca de archivos modificados", "library_watching_settings_description": "Vigilar automaticamente en busca de archivos modificados",
@@ -152,12 +163,12 @@
"map_manage_reverse_geocoding_settings": "Gestionar los ajustes de la <link>geocodificación inversa</link>", "map_manage_reverse_geocoding_settings": "Gestionar los ajustes de la <link>geocodificación inversa</link>",
"map_reverse_geocoding": "Geocodificación inversa", "map_reverse_geocoding": "Geocodificación inversa",
"map_reverse_geocoding_enable_description": "Activar geocodificación inversa", "map_reverse_geocoding_enable_description": "Activar geocodificación inversa",
"map_reverse_geocoding_settings": "Ajustes Geocodificación Inversa", "map_reverse_geocoding_settings": "Ajustes de la geocodificación inversa",
"map_settings": "Mapa", "map_settings": "Mapa",
"map_settings_description": "Administrar la configuración del mapa", "map_settings_description": "Administrar la configuración del mapa",
"map_style_description": "Dirección URL a un tema de mapa (style.json)", "map_style_description": "Dirección URL a un tema de mapa (style.json)",
"memory_cleanup_job": "Limpieza de memoria", "memory_cleanup_job": "Limpieza de recuerdos",
"memory_generate_job": "Generación de memoria", "memory_generate_job": "Generación de recuerdos",
"metadata_extraction_job": "Extracción de metadatos", "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_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", "metadata_faces_import_setting": "Activar importación de caras",
@@ -180,9 +191,9 @@
"nightly_tasks_start_time_setting_description": "El tiempo cuando el servidor comienza a ejecutar las tareas nocturnas", "nightly_tasks_start_time_setting_description": "El tiempo cuando el servidor comienza a ejecutar las tareas nocturnas",
"nightly_tasks_sync_quota_usage_setting": "Uso de la cuota de sincronización", "nightly_tasks_sync_quota_usage_setting": "Uso de la cuota de sincronización",
"nightly_tasks_sync_quota_usage_setting_description": "Actualizar la cuota de almacenamiento del usuario, según el uso actual", "nightly_tasks_sync_quota_usage_setting_description": "Actualizar la cuota de almacenamiento del usuario, según el uso actual",
"no_paths_added": "No se han añadido carpetas", "no_paths_added": "No se han agregado rutas",
"no_pattern_added": "No se han añadido patrones", "no_pattern_added": "No se han agregado patrones",
"note_apply_storage_label_previous_assets": "Nota: para aplicar una Etiqueta de Almacenamiento a un elemento anteriormente subido, lanza el", "note_apply_storage_label_previous_assets": "Nota: Para aplicar la etiqueta de almacenamiento a los elementos que ya se subieron, ejecuta la",
"note_cannot_be_changed_later": "NOTA: ¡No se puede cambiar posteriormente!", "note_cannot_be_changed_later": "NOTA: ¡No se puede cambiar posteriormente!",
"notification_email_from_address": "Desde", "notification_email_from_address": "Desde",
"notification_email_from_address_description": "Dirección de correo electrónico del remitente, por ejemplo: \"Immich Photo Server <noreply@example.com>\". Asegúrate de utilizar una dirección desde la que puedas enviar correos electrónicos.", "notification_email_from_address_description": "Dirección de correo electrónico del remitente, por ejemplo: \"Immich Photo Server <noreply@example.com>\". Asegúrate de utilizar una dirección desde la que puedas enviar correos electrónicos.",
@@ -215,23 +226,23 @@
"oauth_settings": "OAuth", "oauth_settings": "OAuth",
"oauth_settings_description": "Administrar la configuración de inicio de sesión de OAuth", "oauth_settings_description": "Administrar la configuración de inicio de sesión de OAuth",
"oauth_settings_more_details": "Para más detalles acerca de esta característica, consulte la <link>documentación</link>.", "oauth_settings_more_details": "Para más detalles acerca de esta característica, consulte la <link>documentación</link>.",
"oauth_storage_label_claim": "Petición de etiqueta de almacenamiento", "oauth_storage_label_claim": "Solicitud de etiqueta de almacenamiento",
"oauth_storage_label_claim_description": "Establece la etiqueta del almacenamiento del usuario automáticamente a este valor reclamado.", "oauth_storage_label_claim_description": "Fijar la etiqueta de almacenamiento del usuario automáticamente al valor solicitado.",
"oauth_storage_quota_claim": "Reclamar quota de almacenamiento", "oauth_storage_quota_claim": "Cuota de almacenamiento solicitada",
"oauth_storage_quota_claim_description": "Establezca automáticamente la cuota de almacenamiento del usuario al valor de esta solicitud.", "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": "Cuota de almacenamiento predeterminada (GiB)",
"oauth_storage_quota_default_description": "Cuota en GiB que se utilizará cuando no se proporcione ninguna por defecto.", "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", "oauth_timeout_description": "Tiempo de espera de solicitudes en milisegundos",
"password_enable_description": "Iniciar sesión con correo electrónico y contraseña", "password_enable_description": "Iniciar sesión con correo electrónico y contraseña",
"password_settings": "Contraseña de Acceso", "password_settings": "Contraseña de Acceso",
"password_settings_description": "Administrar la configuración de inicio de sesión con contraseña", "password_settings_description": "Administrar la configuración de inicio de sesión con contraseña",
"paths_validated_successfully": "Todas las carpetas se han validado satisfactoriamente", "paths_validated_successfully": "Todas las carpetas se han validado satisfactoriamente",
"person_cleanup_job": "Limpieza de personas", "person_cleanup_job": "Limpieza de personas",
"quota_size_gib": "Tamaño de Quota (GiB)", "quota_size_gib": "Tamaño de la cuota (GiB)",
"refreshing_all_libraries": "Actualizar todas las bibliotecas", "refreshing_all_libraries": "Actualizar todas las bibliotecas",
"registration": "Registrar administrador", "registration": "Registrar administrador",
"registration_description": "Dado que eres el primer usuario del sistema, se te asignará como Admin y serás responsable de las tareas administrativas, y de crear a los usuarios adicionales.", "registration_description": "Dado que eres el primer usuario del sistema, se te designará como administrador, tendrás a tu cargo las tareas administrativas y deberás crear los demás usuarios.",
"require_password_change_on_login": "Requerir que el usuario cambie la contraseña en el primer inicio de sesión", "require_password_change_on_login": "Requerir que el usuario cambie la contraseña en el primer inicio de sesión",
"reset_settings_to_default": "Restablecer la configuración predeterminada", "reset_settings_to_default": "Restablecer la configuración predeterminada",
"reset_settings_to_recent_saved": "Restablecer la configuración a la configuración guardada recientemente", "reset_settings_to_recent_saved": "Restablecer la configuración a la configuración guardada recientemente",
@@ -241,7 +252,7 @@
"server_external_domain_settings": "Dominio externo", "server_external_domain_settings": "Dominio externo",
"server_external_domain_settings_description": "Dominio para enlaces públicos compartidos, incluidos http(s)://", "server_external_domain_settings_description": "Dominio para enlaces públicos compartidos, incluidos http(s)://",
"server_public_users": "Usuarios públicos", "server_public_users": "Usuarios públicos",
"server_public_users_description": "Todos los usuarios (nombre y correo electrónico) aparecen en la lista cuando se añade un usuario a los álbumes compartidos. Si se desactiva, la lista de usuarios sólo estará disponible para los usuarios administradores.", "server_public_users_description": "Cuando se agrega un usuario a los álbumes compartidos, todos los usuarios aparecen en una lista con su nombre y su correo electrónico. Si deshabilita esta opción, solo los administradores podrán ver la lista de usuarios.",
"server_settings": "Configuración del servidor", "server_settings": "Configuración del servidor",
"server_settings_description": "Administrar la configuración del servidor", "server_settings_description": "Administrar la configuración del servidor",
"server_welcome_message": "Mensaje de bienvenida", "server_welcome_message": "Mensaje de bienvenida",
@@ -265,7 +276,7 @@
"storage_template_settings": "Plantilla de almacenamiento", "storage_template_settings": "Plantilla de almacenamiento",
"storage_template_settings_description": "Administrar la estructura de carpetas y el nombre de archivo del recurso subido", "storage_template_settings_description": "Administrar la estructura de carpetas y el nombre de archivo del recurso subido",
"storage_template_user_label": "<code>{label}</code> es la etiqueta de almacenamiento del usuario", "storage_template_user_label": "<code>{label}</code> es la etiqueta de almacenamiento del usuario",
"system_settings": "Ajustes del Sistema", "system_settings": "Ajustes del sistema",
"tag_cleanup_job": "Limpieza de etiquetas", "tag_cleanup_job": "Limpieza de etiquetas",
"template_email_available_tags": "Puede utilizar las siguientes variables en su plantilla: {tags}", "template_email_available_tags": "Puede utilizar las siguientes variables en su plantilla: {tags}",
"template_email_if_empty": "Si la plantilla está vacía, se utilizará el correo electrónico predeterminado.", "template_email_if_empty": "Si la plantilla está vacía, se utilizará el correo electrónico predeterminado.",
@@ -278,7 +289,7 @@
"template_settings_description": "Gestione plantillas personalizadas para las notificaciones", "template_settings_description": "Gestione plantillas personalizadas para las notificaciones",
"theme_custom_css_settings": "CSS Personalizado", "theme_custom_css_settings": "CSS Personalizado",
"theme_custom_css_settings_description": "Las Hojas de Estilo (CSS) permiten personalizar el diseño de Immich.", "theme_custom_css_settings_description": "Las Hojas de Estilo (CSS) permiten personalizar el diseño de Immich.",
"theme_settings": "Ajustes Tema", "theme_settings": "Ajustes del tema",
"theme_settings_description": "Gestionar la personalización de la interfaz web de Immich", "theme_settings_description": "Gestionar la personalización de la interfaz web de Immich",
"thumbnail_generation_job": "Generar Miniaturas", "thumbnail_generation_job": "Generar Miniaturas",
"thumbnail_generation_job_description": "Genere miniaturas grandes, pequeñas y borrosas para cada archivo, así como miniaturas para cada persona", "thumbnail_generation_job_description": "Genere miniaturas grandes, pequeñas y borrosas para cada archivo, así como miniaturas para cada persona",
@@ -322,7 +333,7 @@
"transcoding_preferred_hardware_device": "Dispositivo de hardware preferido", "transcoding_preferred_hardware_device": "Dispositivo de hardware preferido",
"transcoding_preferred_hardware_device_description": "Se aplica únicamente a VAAPI y QSV. Establece el nodo dri utilizado para la transcodificación de hardware.", "transcoding_preferred_hardware_device_description": "Se aplica únicamente a VAAPI y QSV. Establece el nodo dri utilizado para la transcodificación de hardware.",
"transcoding_preset_preset": "Configuración predefinida (-preset)", "transcoding_preset_preset": "Configuración predefinida (-preset)",
"transcoding_preset_preset_description": "Velocidad de compresión. Los preajustes más lentos producen archivos más pequeños, y aumentan la calidad cuando se apunta a una determinada tasa de bits. VP9 ignora las velocidades superiores a 'más rápido'.", "transcoding_preset_preset_description": "Velocidad de compresión. Los preajustes más lentos producen archivos más pequeños y aumentan la calidad cuando se apunta a una tasa de bits determinada. VP9 ignora las velocidades superiores al valor \"faster\" (\"más rápido\").",
"transcoding_reference_frames": "Frames de referencia", "transcoding_reference_frames": "Frames de referencia",
"transcoding_reference_frames_description": "El número de fotogramas a los que hacer referencia al comprimir un fotograma determinado. Los valores más altos mejoran la eficiencia de la compresión, pero ralentizan la codificación. 0 establece este valor automáticamente.", "transcoding_reference_frames_description": "El número de fotogramas a los que hacer referencia al comprimir un fotograma determinado. Los valores más altos mejoran la eficiencia de la compresión, pero ralentizan la codificación. 0 establece este valor automáticamente.",
"transcoding_required_description": "Sólo vídeos que no estén en un formato soportado", "transcoding_required_description": "Sólo vídeos que no estén en un formato soportado",
@@ -341,19 +352,22 @@
"transcoding_two_pass_encoding": "Codificación en dos pasadas", "transcoding_two_pass_encoding": "Codificación en dos pasadas",
"transcoding_two_pass_encoding_setting_description": "Transcodifica en dos pasadas para producir vídeos mejor codificados. Cuando la velocidad de bits máxima está habilitada (es necesaria para que funcione con H.264 y HEVC), este modo utiliza un rango de velocidad de bits basado en la velocidad de bits máxima e ignora CRF. Para VP9, se puede utilizar CRF si la tasa de bits máxima está deshabilitada.", "transcoding_two_pass_encoding_setting_description": "Transcodifica en dos pasadas para producir vídeos mejor codificados. Cuando la velocidad de bits máxima está habilitada (es necesaria para que funcione con H.264 y HEVC), este modo utiliza un rango de velocidad de bits basado en la velocidad de bits máxima e ignora CRF. Para VP9, se puede utilizar CRF si la tasa de bits máxima está deshabilitada.",
"transcoding_video_codec": "Códecs de Video", "transcoding_video_codec": "Códecs de Video",
"transcoding_video_codec_description": "VP9 tiene alta eficiencia y compatibilidad web, pero lleva más tiempo transcodificarlo. HEVC funciona de manera similar, pero tiene menor compatibilidad web. H.264 es ampliamente compatible y se transcodifica rápidamente, pero produce archivos mucho más grandes. AV1 es el códec más eficiente pero carece de soporte en dispositivos más antiguos.", "transcoding_video_codec_description": "VP9 tiene alta eficiencia y compatibilidad web, pero lleva mucho tiempo transcodificarlo. HEVC ofrece un rendimiento similar, pero tiene menor compatibilidad web. H.264 es ampliamente compatible y se transcodifica muy rápido, pero los archivos producidos son mucho más grandes. AV1 es el códec más eficiente, pero no es compatible con los dispositivos más antiguos.",
"trash_enabled_description": "Habilitar papelera", "trash_enabled_description": "Habilitar papelera",
"trash_number_of_days": "Número de días", "trash_number_of_days": "Número de días",
"trash_number_of_days_description": "Número de días para mantener los archivos en la papelera antes de eliminarlos permanentemente", "trash_number_of_days_description": "Número de días para mantener los archivos en la papelera antes de eliminarlos permanentemente",
"trash_settings": "Configuración papelera", "trash_settings": "Configuración papelera",
"trash_settings_description": "Administrar la configuración de la papelera", "trash_settings_description": "Administrar la configuración de la papelera",
"unlink_all_oauth_accounts": "Desvincular todas las cuentas de OAuth",
"unlink_all_oauth_accounts_description": "Recuerda desvincular todas las cuentas de OAuth antes de migrar a un proveedor nuevo.",
"unlink_all_oauth_accounts_prompt": "¿Seguro que deseas desvincular todas las cuentas de OAuth? Se restablecerá el id. de OAuth de cada usuario. La acción no se podrá deshacer.",
"user_cleanup_job": "Limpieza de usuarios", "user_cleanup_job": "Limpieza de usuarios",
"user_delete_delay": "La cuenta <b>{user}</b> y los archivos se programarán para su eliminación permanente en {delay, plural, one {# día} other {# días}}.", "user_delete_delay": "La cuenta <b>{user}</b> y los archivos se programarán para su eliminación permanente en {delay, plural, one {# día} other {# días}}.",
"user_delete_delay_settings": "Eliminar retardo", "user_delete_delay_settings": "Eliminar retardo",
"user_delete_delay_settings_description": "Número de días después de la eliminación para eliminar permanentemente la cuenta y los activos de un usuario. El trabajo de eliminación de usuarios se ejecuta a medianoche para comprobar si hay usuarios que estén listos para su eliminación. Los cambios a esta configuración se evaluarán en la próxima ejecución.", "user_delete_delay_settings_description": "Número de días después de la eliminación para eliminar permanentemente la cuenta y los activos de un usuario. El trabajo de eliminación de usuarios se ejecuta a medianoche para comprobar si hay usuarios que estén listos para su eliminación. Los cambios a esta configuración se evaluarán en la próxima ejecución.",
"user_delete_immediately": "La cuenta <b>{user}</b> y los archivos se pondrán en cola para su eliminación permanente <b>inmediatamente</b>.", "user_delete_immediately": "La cuenta <b>{user}</b> y los archivos se pondrán en cola para su eliminación permanente <b>inmediatamente</b>.",
"user_delete_immediately_checkbox": "Poner en cola la eliminación inmediata de usuarios y elementos", "user_delete_immediately_checkbox": "Poner en cola la eliminación inmediata de usuarios y elementos",
"user_details": "Detalles de Usuario", "user_details": "Detalles del usuario",
"user_management": "Gestión de usuarios", "user_management": "Gestión de usuarios",
"user_password_has_been_reset": "La contraseña del usuario ha sido restablecida:", "user_password_has_been_reset": "La contraseña del usuario ha sido restablecida:",
"user_password_reset_description": "Proporcione una contraseña temporal al usuario e infórmele que deberá cambiar la contraseña en su próximo inicio de sesión.", "user_password_reset_description": "Proporcione una contraseña temporal al usuario e infórmele que deberá cambiar la contraseña en su próximo inicio de sesión.",
@@ -369,8 +383,8 @@
"video_conversion_job": "Transcodificar vídeos", "video_conversion_job": "Transcodificar vídeos",
"video_conversion_job_description": "Transcodifique vídeos para una mayor compatibilidad con navegadores y dispositivos" "video_conversion_job_description": "Transcodifique vídeos para una mayor compatibilidad con navegadores y dispositivos"
}, },
"admin_email": "Correo Electrónico del Administrador", "admin_email": "Correo electrónico del administrador",
"admin_password": "Contraseña del Administrador", "admin_password": "Contraseña del administrador",
"administration": "Administración", "administration": "Administración",
"advanced": "Avanzada", "advanced": "Avanzada",
"advanced_settings_beta_timeline_subtitle": "Prueba la nueva experiencia de la aplicación", "advanced_settings_beta_timeline_subtitle": "Prueba la nueva experiencia de la aplicación",
@@ -382,6 +396,8 @@
"advanced_settings_prefer_remote_title": "Preferir imágenes remotas", "advanced_settings_prefer_remote_title": "Preferir imágenes remotas",
"advanced_settings_proxy_headers_subtitle": "Configura headers HTTP que Immich incluirá en cada petición de red", "advanced_settings_proxy_headers_subtitle": "Configura headers HTTP que Immich incluirá en cada petición de red",
"advanced_settings_proxy_headers_title": "Cabeceras Proxy", "advanced_settings_proxy_headers_title": "Cabeceras Proxy",
"advanced_settings_readonly_mode_subtitle": "Habilita el modo de solo lectura donde las fotografías sólo pueden ser vistas, funciones como seleccionar múltiples imágenes, compartir, transmitir, eliminar son deshabilitadas. Habilita/Deshabilita solo lectura vía el avatar del usuario en la pantalla principal",
"advanced_settings_readonly_mode_title": "Modo Solo lectura",
"advanced_settings_self_signed_ssl_subtitle": "Omitir verificación del certificado SSL del servidor. Requerido para certificados autofirmados.", "advanced_settings_self_signed_ssl_subtitle": "Omitir verificación del certificado SSL del servidor. Requerido para certificados autofirmados.",
"advanced_settings_self_signed_ssl_title": "Permitir certificados autofirmados", "advanced_settings_self_signed_ssl_title": "Permitir certificados autofirmados",
"advanced_settings_sync_remote_deletions_subtitle": "Eliminar o restaurar automáticamente un recurso en este dispositivo cuando se realice esa acción en la web", "advanced_settings_sync_remote_deletions_subtitle": "Eliminar o restaurar automáticamente un recurso en este dispositivo cuando se realice esa acción en la web",
@@ -392,7 +408,7 @@
"age_months": "Tiempo {months, plural, one {# mes} other {# meses}}", "age_months": "Tiempo {months, plural, one {# mes} other {# meses}}",
"age_year_months": "1 año, {months, plural, one {# mes} other {# meses}}", "age_year_months": "1 año, {months, plural, one {# mes} other {# meses}}",
"age_years": "Edad {years, plural, one {# año} other {# años}}", "age_years": "Edad {years, plural, one {# año} other {# años}}",
"album_added": "Álbum añadido", "album_added": "Álbum agregado",
"album_added_notification_setting_description": "Reciba una notificación por correo electrónico cuando lo agreguen a un álbum compartido", "album_added_notification_setting_description": "Reciba una notificación por correo electrónico cuando lo agreguen a un álbum compartido",
"album_cover_updated": "Portada del álbum actualizada", "album_cover_updated": "Portada del álbum actualizada",
"album_delete_confirmation": "¿Estás seguro de que deseas eliminar el álbum {album}?", "album_delete_confirmation": "¿Estás seguro de que deseas eliminar el álbum {album}?",
@@ -421,21 +437,21 @@
"album_viewer_appbar_share_leave": "Abandonar álbum", "album_viewer_appbar_share_leave": "Abandonar álbum",
"album_viewer_appbar_share_to": "Compartir Con", "album_viewer_appbar_share_to": "Compartir Con",
"album_viewer_page_share_add_users": "Agregar usuarios", "album_viewer_page_share_add_users": "Agregar usuarios",
"album_with_link_access": "Permita que cualquier persona con el enlace vea fotos y personas en este álbum.", "album_with_link_access": "Permite que cualquiera que tenga este enlace vea las fotos y las personas del álbum.",
"albums": "Álbumes", "albums": "Álbumes",
"albums_count": "{count, plural, one {{count, number} Álbum} other {{count, number} Álbumes}}", "albums_count": "{count, plural, one {{count, number} álbum} other {{count, number} álbumes}}",
"albums_default_sort_order": "Ordenación por defecto de los álbumes", "albums_default_sort_order": "Ordenación por defecto de los álbumes",
"albums_default_sort_order_description": "Orden de clasificación inicial de los recursos al crear nuevos álbumes.", "albums_default_sort_order_description": "Orden de clasificación inicial de los recursos al crear nuevos álbumes.",
"albums_feature_description": "Colecciones de recursos que pueden ser compartidos con otros usuarios.", "albums_feature_description": "Colecciones de recursos que pueden ser compartidos con otros usuarios.",
"albums_on_device_count": "Álbumes en el dispositivo ({count})", "albums_on_device_count": "Álbumes en el dispositivo ({count})",
"all": "Todos", "all": "Todos",
"all_albums": "Todos los albums", "all_albums": "Todos los álbumes",
"all_people": "Todas las personas", "all_people": "Todas las personas",
"all_videos": "Todos los videos", "all_videos": "Todos los videos",
"allow_dark_mode": "Permitir modo oscuro", "allow_dark_mode": "Permitir modo oscuro",
"allow_edits": "Permitir edición", "allow_edits": "Permitir edición",
"allow_public_user_to_download": "Permitir descargar al usuario público", "allow_public_user_to_download": "Permitir descargas a los usuarios públicos",
"allow_public_user_to_upload": "Permitir subir al usuario publico", "allow_public_user_to_upload": "Permitir subir fotos a los usuarios públicos",
"alt_text_qr_code": "Código QR", "alt_text_qr_code": "Código QR",
"anti_clockwise": "En sentido antihorario", "anti_clockwise": "En sentido antihorario",
"api_key": "Clave API", "api_key": "Clave API",
@@ -445,10 +461,11 @@
"app_bar_signout_dialog_content": "¿Estás seguro que quieres cerrar sesión?", "app_bar_signout_dialog_content": "¿Estás seguro que quieres cerrar sesión?",
"app_bar_signout_dialog_ok": "Sí", "app_bar_signout_dialog_ok": "Sí",
"app_bar_signout_dialog_title": "Cerrar sesión", "app_bar_signout_dialog_title": "Cerrar sesión",
"app_settings": "Ajustes de Aplicacion", "app_settings": "Ajustes de la aplicacion",
"appears_in": "Aparece en", "appears_in": "Aparece en",
"apply_count": "Aplicar ({count, number})",
"archive": "Archivo", "archive": "Archivo",
"archive_action_prompt": "{count} añadidos al Archivo", "archive_action_prompt": "{count} agregado(s) al archivo",
"archive_or_unarchive_photo": "Archivar o restaurar foto", "archive_or_unarchive_photo": "Archivar o restaurar foto",
"archive_page_no_archived_assets": "No se encontraron elementos archivados", "archive_page_no_archived_assets": "No se encontraron elementos archivados",
"archive_page_title": "Archivo ({count})", "archive_page_title": "Archivo ({count})",
@@ -460,8 +477,8 @@
"are_you_sure_to_do_this": "¿Estas seguro de que quieres hacer esto?", "are_you_sure_to_do_this": "¿Estas seguro de que quieres hacer esto?",
"asset_action_delete_err_read_only": "No se pueden borrar el archivo(s) de solo lectura, omitiendo", "asset_action_delete_err_read_only": "No se pueden borrar el archivo(s) de solo lectura, omitiendo",
"asset_action_share_err_offline": "No se pudo obtener el archivo(s) sin conexión, omitiendo", "asset_action_share_err_offline": "No se pudo obtener el archivo(s) sin conexión, omitiendo",
"asset_added_to_album": "Añadido al álbum", "asset_added_to_album": "Agregado al álbum",
"asset_adding_to_album": "Añadiendo al álbum…", "asset_adding_to_album": "Agregando al álbum…",
"asset_description_updated": "La descripción del elemento ha sido actualizada", "asset_description_updated": "La descripción del elemento ha sido actualizada",
"asset_filename_is_offline": "El archivo {filename} está offline", "asset_filename_is_offline": "El archivo {filename} está offline",
"asset_has_unassigned_faces": "El archivo no tiene rostros asignados", "asset_has_unassigned_faces": "El archivo no tiene rostros asignados",
@@ -484,9 +501,11 @@
"asset_viewer_settings_subtitle": "Administra las configuracioens de tu visor de fotos", "asset_viewer_settings_subtitle": "Administra las configuracioens de tu visor de fotos",
"asset_viewer_settings_title": "Visor de Archivos", "asset_viewer_settings_title": "Visor de Archivos",
"assets": "elementos", "assets": "elementos",
"assets_added_count": "Añadido {count, plural, one {# asset} other {# assets}}", "assets_added_count": "{count, plural, one {# elemento agregado} other {# elementos agregados}}",
"assets_added_to_album_count": "Añadido {count, plural, one {# asset} other {# assets}} al álbum", "assets_added_to_album_count": "{count, plural, one {# elemento agregado} other {# elementos agregados}} al álbum",
"assets_cannot_be_added_to_album_count": "{count, plural, one {El recurso no puede ser añadido al álbum} other {Los recursos no pueden ser añadidos al álbum}}", "assets_added_to_albums_count": "{assetTotal, plural, one {# agregado} other {# agregados}} {albumTotal, plural, one {# al álbum} other {# a los álbumes}}",
"assets_cannot_be_added_to_album_count": "{count, plural, one {El elemento no se puede agregar al álbum} other {Los elementos no se pueden agregar al álbum}}",
"assets_cannot_be_added_to_albums": "{count, plural, one {El elemento} other {Los elementos}} no se {count, plural, one {puede} other {pueden}} agregar a ninguno de los álbumes",
"assets_count": "{count, plural, one {# activo} other {# activos}}", "assets_count": "{count, plural, one {# activo} other {# activos}}",
"assets_deleted_permanently": "{count} elemento(s) eliminado(s) permanentemente", "assets_deleted_permanently": "{count} elemento(s) eliminado(s) permanentemente",
"assets_deleted_permanently_from_server": "{count} recurso(s) eliminado(s) de forma permanente del servidor de Immich", "assets_deleted_permanently_from_server": "{count} recurso(s) eliminado(s) de forma permanente del servidor de Immich",
@@ -503,6 +522,7 @@
"assets_trashed_count": "Borrado {count, plural, one {# elemento} other {# elementos}}", "assets_trashed_count": "Borrado {count, plural, one {# elemento} other {# elementos}}",
"assets_trashed_from_server": "{count} recurso(s) enviado(s) a la papelera desde el servidor de Immich", "assets_trashed_from_server": "{count} recurso(s) enviado(s) a la papelera desde el servidor de Immich",
"assets_were_part_of_album_count": "{count, plural, one {Asset was} other {Assets were}} ya forma parte del álbum", "assets_were_part_of_album_count": "{count, plural, one {Asset was} other {Assets were}} ya forma parte del álbum",
"assets_were_part_of_albums_count": "{count, plural, one {El elemento ya es} other {Los elementos ya son}} parte de los álbumes",
"authorized_devices": "Dispositivos Autorizados", "authorized_devices": "Dispositivos Autorizados",
"automatic_endpoint_switching_subtitle": "Conectarse localmente a través de la Wi-Fi designada cuando esté disponible y usar conexiones alternativas en otros lugares", "automatic_endpoint_switching_subtitle": "Conectarse localmente a través de la Wi-Fi designada cuando esté disponible y usar conexiones alternativas en otros lugares",
"automatic_endpoint_switching_title": "Cambio automático de URL", "automatic_endpoint_switching_title": "Cambio automático de URL",
@@ -515,7 +535,7 @@
"backup_album_selection_page_albums_device": "Álbumes en el dispositivo ({count})", "backup_album_selection_page_albums_device": "Álbumes en el dispositivo ({count})",
"backup_album_selection_page_albums_tap": "Toque para incluir, doble toque para excluir", "backup_album_selection_page_albums_tap": "Toque para incluir, doble toque para excluir",
"backup_album_selection_page_assets_scatter": "Los elementos pueden dispersarse en varios álbumes. De este modo, los álbumes pueden ser incluidos o excluidos durante el proceso de copia de seguridad.", "backup_album_selection_page_assets_scatter": "Los elementos pueden dispersarse en varios álbumes. De este modo, los álbumes pueden ser incluidos o excluidos durante el proceso de copia de seguridad.",
"backup_album_selection_page_select_albums": "Seleccionar Álbumes", "backup_album_selection_page_select_albums": "Seleccionar álbumes",
"backup_album_selection_page_selection_info": "Información sobre la Selección", "backup_album_selection_page_selection_info": "Información sobre la Selección",
"backup_album_selection_page_total_assets": "Total de elementos únicos", "backup_album_selection_page_total_assets": "Total de elementos únicos",
"backup_all": "Todos", "backup_all": "Todos",
@@ -551,7 +571,7 @@
"backup_controller_page_excluded": "Excluido: ", "backup_controller_page_excluded": "Excluido: ",
"backup_controller_page_failed": "Fallidos ({count})", "backup_controller_page_failed": "Fallidos ({count})",
"backup_controller_page_filename": "Nombre del archivo: {filename} [{size}]", "backup_controller_page_filename": "Nombre del archivo: {filename} [{size}]",
"backup_controller_page_id": "ID: {id}", "backup_controller_page_id": "Id.: {id}",
"backup_controller_page_info": "Información de la Copia de Seguridad", "backup_controller_page_info": "Información de la Copia de Seguridad",
"backup_controller_page_none_selected": "Ninguno seleccionado", "backup_controller_page_none_selected": "Ninguno seleccionado",
"backup_controller_page_remainder": "Restante", "backup_controller_page_remainder": "Restante",
@@ -572,8 +592,10 @@
"backup_manual_in_progress": "Subida ya en progreso. Vuelve a intentarlo más tarde", "backup_manual_in_progress": "Subida ya en progreso. Vuelve a intentarlo más tarde",
"backup_manual_success": "Éxito", "backup_manual_success": "Éxito",
"backup_manual_title": "Estado de la subida", "backup_manual_title": "Estado de la subida",
"backup_options": "Opciones de copia de seguridad",
"backup_options_page_title": "Opciones de Copia de Seguridad", "backup_options_page_title": "Opciones de Copia de Seguridad",
"backup_setting_subtitle": "Administra las configuraciones de respaldo en segundo y primer plano", "backup_setting_subtitle": "Administra las configuraciones de respaldo en segundo y primer plano",
"backup_settings_subtitle": "Configura las opciones de subida",
"backward": "Retroceder", "backward": "Retroceder",
"beta_sync": "Estado de Sincronización Beta", "beta_sync": "Estado de Sincronización Beta",
"beta_sync_subtitle": "Administrar el nuevo sistema de sincronización", "beta_sync_subtitle": "Administrar el nuevo sistema de sincronización",
@@ -624,11 +646,11 @@
"change_location": "Cambiar ubicación", "change_location": "Cambiar ubicación",
"change_name": "Cambiar nombre", "change_name": "Cambiar nombre",
"change_name_successfully": "Nombre cambiado exitosamente", "change_name_successfully": "Nombre cambiado exitosamente",
"change_password": "Cambiar Contraseña", "change_password": "Cambiar contraseña",
"change_password_description": "Esta es la primera vez que inicia sesión en el sistema o se ha realizado una solicitud para cambiar su contraseña. Por favor ingrese la nueva contraseña a continuación.", "change_password_description": "Esta es la primera vez que inicia sesión en el sistema o se ha realizado una solicitud para cambiar su contraseña. Por favor ingrese la nueva contraseña a continuación.",
"change_password_form_confirm_password": "Confirmar Contraseña", "change_password_form_confirm_password": "Confirmar contraseña",
"change_password_form_description": "Hola {name},\n\nEsta es la primera vez que inicias sesión en el sistema o se ha solicitado cambiar tu contraseña. Por favor, introduce la nueva contraseña a continuación.", "change_password_form_description": "Hola {name},\n\nEsta es la primera vez que inicias sesión en el sistema o se ha solicitado cambiar tu contraseña. Por favor, introduce la nueva contraseña a continuación.",
"change_password_form_new_password": "Nueva Contraseña", "change_password_form_new_password": "Nueva contraseña",
"change_password_form_password_mismatch": "Las contraseñas no coinciden", "change_password_form_password_mismatch": "Las contraseñas no coinciden",
"change_password_form_reenter_new_password": "Vuelve a ingresar la nueva contraseña", "change_password_form_reenter_new_password": "Vuelve a ingresar la nueva contraseña",
"change_pin_code": "Cambiar PIN", "change_pin_code": "Cambiar PIN",
@@ -638,11 +660,12 @@
"check_corrupt_asset_backup_button": "Realizar comprobación", "check_corrupt_asset_backup_button": "Realizar comprobación",
"check_corrupt_asset_backup_description": "Ejecutar esta comprobación solo por Wi-Fi y una vez que todos los archivos hayan sido respaldados. El procedimiento puede tardar unos minutos.", "check_corrupt_asset_backup_description": "Ejecutar esta comprobación solo por Wi-Fi y una vez que todos los archivos hayan sido respaldados. El procedimiento puede tardar unos minutos.",
"check_logs": "Comprobar Registros", "check_logs": "Comprobar Registros",
"choose_matching_people_to_merge": "Elija personas similares para fusionar", "choose_matching_people_to_merge": "Elija ocurrencias duplicadas de la misma persona para fusionar",
"city": "Ciudad", "city": "Ciudad",
"clear": "Limpiar", "clear": "Limpiar",
"clear_all": "Limpiar todo", "clear_all": "Limpiar todo",
"clear_all_recent_searches": "Borrar búsquedas recientes", "clear_all_recent_searches": "Borrar búsquedas recientes",
"clear_file_cache": "Limpiar la caché de archivos",
"clear_message": "Limpiar mensaje", "clear_message": "Limpiar mensaje",
"clear_value": "Limpiar valor", "clear_value": "Limpiar valor",
"client_cert_dialog_msg_confirm": "OK", "client_cert_dialog_msg_confirm": "OK",
@@ -667,11 +690,11 @@
"common_server_error": "Por favor, verifica tu conexión de red, asegúrate de que el servidor esté accesible y las versiones de la aplicación y del servidor sean compatibles.", "common_server_error": "Por favor, verifica tu conexión de red, asegúrate de que el servidor esté accesible y las versiones de la aplicación y del servidor sean compatibles.",
"completed": "Completado", "completed": "Completado",
"confirm": "Confirmar", "confirm": "Confirmar",
"confirm_admin_password": "Confirmar Contraseña de Administrador", "confirm_admin_password": "Confirmar contraseña del administrador",
"confirm_delete_face": "¿Estás seguro que deseas eliminar la cara de {name} del archivo?", "confirm_delete_face": "¿Estás seguro que deseas eliminar la cara de {name} del archivo?",
"confirm_delete_shared_link": "¿Estás seguro de que deseas eliminar este enlace compartido?", "confirm_delete_shared_link": "¿Estás seguro de que deseas eliminar este enlace compartido?",
"confirm_keep_this_delete_others": "Todos los demás activos de la pila se eliminarán excepto este activo. ¿Está seguro de que quiere continuar?", "confirm_keep_this_delete_others": "Todos los demás activos de la pila se eliminarán excepto este activo. ¿Está seguro de que quiere continuar?",
"confirm_new_pin_code": "Confirmar nuevo pin", "confirm_new_pin_code": "Confirmar nuevo PIN",
"confirm_password": "Confirmar contraseña", "confirm_password": "Confirmar contraseña",
"confirm_tag_face": "¿Quieres etiquetar esta cara como {name}?", "confirm_tag_face": "¿Quieres etiquetar esta cara como {name}?",
"confirm_tag_face_unnamed": "¿Quieres etiquetar esta cara?", "confirm_tag_face_unnamed": "¿Quieres etiquetar esta cara?",
@@ -712,7 +735,8 @@
"create_new_person_hint": "Asignar los archivos seleccionados a una nueva persona", "create_new_person_hint": "Asignar los archivos seleccionados a una nueva persona",
"create_new_user": "Crear nuevo usuario", "create_new_user": "Crear nuevo usuario",
"create_shared_album_page_share_add_assets": "AGREGAR ELEMENTOS", "create_shared_album_page_share_add_assets": "AGREGAR ELEMENTOS",
"create_shared_album_page_share_select_photos": "Seleccionar Fotos", "create_shared_album_page_share_select_photos": "Seleccionar fotos",
"create_shared_link": "Crear un enlace compartido",
"create_tag": "Crear etiqueta", "create_tag": "Crear etiqueta",
"create_tag_description": "Crear una nueva etiqueta. Para las etiquetas anidadas, ingresa la ruta completa de la etiqueta, incluidas las barras diagonales.", "create_tag_description": "Crear una nueva etiqueta. Para las etiquetas anidadas, ingresa la ruta completa de la etiqueta, incluidas las barras diagonales.",
"create_user": "Crear usuario", "create_user": "Crear usuario",
@@ -737,6 +761,7 @@
"date_of_birth_saved": "Guardada con éxito la fecha de nacimiento", "date_of_birth_saved": "Guardada con éxito la fecha de nacimiento",
"date_range": "Rango de fechas", "date_range": "Rango de fechas",
"day": "Día", "day": "Día",
"days": "Días",
"deduplicate_all": "Deduplicar todo", "deduplicate_all": "Deduplicar todo",
"deduplication_criteria_1": "Tamaño de imagen en bytes", "deduplication_criteria_1": "Tamaño de imagen en bytes",
"deduplication_criteria_2": "Conteo de datos EXIF", "deduplication_criteria_2": "Conteo de datos EXIF",
@@ -821,8 +846,12 @@
"edit": "Editar", "edit": "Editar",
"edit_album": "Editar album", "edit_album": "Editar album",
"edit_avatar": "Editar avatar", "edit_avatar": "Editar avatar",
"edit_birthday": "Editar cumpleaños",
"edit_date": "Editar fecha", "edit_date": "Editar fecha",
"edit_date_and_time": "Editar fecha y hora", "edit_date_and_time": "Editar fecha y hora",
"edit_date_and_time_action_prompt": "{count} fecha y hora editadas",
"edit_date_and_time_by_offset": "Cambiar fecha usando una desviación",
"edit_date_and_time_by_offset_interval": "Nuevo intervalo de fechas: {from} - {to}",
"edit_description": "Editar descripción", "edit_description": "Editar descripción",
"edit_description_prompt": "Por favor selecciona una nueva descripción:", "edit_description_prompt": "Por favor selecciona una nueva descripción:",
"edit_exclusion_pattern": "Editar patrón de exclusión", "edit_exclusion_pattern": "Editar patrón de exclusión",
@@ -855,16 +884,16 @@
"enable_biometric_auth_description": "Introduce tu código PIN para habilitar la autentificación biométrica", "enable_biometric_auth_description": "Introduce tu código PIN para habilitar la autentificación biométrica",
"enabled": "Habilitado", "enabled": "Habilitado",
"end_date": "Fecha final", "end_date": "Fecha final",
"enqueued": "Añadido a la cola", "enqueued": "Agregado a la cola",
"enter_wifi_name": "Introduce el nombre Wi-Fi", "enter_wifi_name": "Introduce el nombre Wi-Fi",
"enter_your_pin_code": "Introduce tu código PIN", "enter_your_pin_code": "Introduce tu código PIN",
"enter_your_pin_code_subtitle": "Introduce tu código PIN para acceder a la carpeta bloqueada", "enter_your_pin_code_subtitle": "Introduce tu código PIN para acceder a la carpeta protegida",
"error": "Error", "error": "Error",
"error_change_sort_album": "No se pudo cambiar el orden de visualización del álbum", "error_change_sort_album": "No se pudo cambiar el orden de visualización del álbum",
"error_delete_face": "Error al eliminar la cara del archivo", "error_delete_face": "Error al eliminar la cara del archivo",
"error_loading_image": "Error al cargar la imagen", "error_loading_image": "Error al cargar la imagen",
"error_saving_image": "Error: {error}", "error_saving_image": "Error: {error}",
"error_tag_face_bounding_box": "Error etiquetando cara - no se pueden obtener las coordenadas del marco delimitante", "error_tag_face_bounding_box": "Error al etiquetar la cara: no se pueden obtener las coordenadas del marco",
"error_title": "Error: algo salió mal", "error_title": "Error: algo salió mal",
"errors": { "errors": {
"cannot_navigate_next_asset": "No puedes navegar al siguiente archivo", "cannot_navigate_next_asset": "No puedes navegar al siguiente archivo",
@@ -877,8 +906,8 @@
"cant_get_number_of_comments": "No se puede obtener la cantidad de comentarios", "cant_get_number_of_comments": "No se puede obtener la cantidad de comentarios",
"cant_search_people": "No se puede buscar a personas", "cant_search_people": "No se puede buscar a personas",
"cant_search_places": "No se pueden buscar lugares", "cant_search_places": "No se pueden buscar lugares",
"error_adding_assets_to_album": "Error al añadir archivos al álbum", "error_adding_assets_to_album": "Error al agregar los elementos al álbum",
"error_adding_users_to_album": "Error al añadir usuarios al álbum", "error_adding_users_to_album": "Error al agregar los usuarios al álbum",
"error_deleting_shared_user": "Error al eliminar usuario compartido", "error_deleting_shared_user": "Error al eliminar usuario compartido",
"error_downloading": "Error al descargar {filename}", "error_downloading": "Error al descargar {filename}",
"error_hiding_buy_button": "Error al ocultar el botón de compra", "error_hiding_buy_button": "Error al ocultar el botón de compra",
@@ -895,6 +924,7 @@
"failed_to_load_notifications": "Error al cargar las notificaciones", "failed_to_load_notifications": "Error al cargar las notificaciones",
"failed_to_load_people": "Error al cargar a los usuarios", "failed_to_load_people": "Error al cargar a los usuarios",
"failed_to_remove_product_key": "No se pudo eliminar la clave del producto", "failed_to_remove_product_key": "No se pudo eliminar la clave del producto",
"failed_to_reset_pin_code": "No se pudo restablecer el código PIN",
"failed_to_stack_assets": "No se pudieron agrupar los archivos", "failed_to_stack_assets": "No se pudieron agrupar los archivos",
"failed_to_unstack_assets": "Error al desagrupar los archivos", "failed_to_unstack_assets": "Error al desagrupar los archivos",
"failed_to_update_notification_status": "Error al actualizar el estado de la notificación", "failed_to_update_notification_status": "Error al actualizar el estado de la notificación",
@@ -903,15 +933,16 @@
"paths_validation_failed": "Falló la validación en {paths, plural, one {# carpeta} other {# carpetas}}", "paths_validation_failed": "Falló la validación en {paths, plural, one {# carpeta} other {# carpetas}}",
"profile_picture_transparent_pixels": "Las imágenes de perfil no pueden tener píxeles transparentes. Por favor amplíe y/o mueva la imagen.", "profile_picture_transparent_pixels": "Las imágenes de perfil no pueden tener píxeles transparentes. Por favor amplíe y/o mueva la imagen.",
"quota_higher_than_disk_size": "Se ha establecido una cuota superior al tamaño del disco", "quota_higher_than_disk_size": "Se ha establecido una cuota superior al tamaño del disco",
"something_went_wrong": "Algo salió mal",
"unable_to_add_album_users": "No se pueden agregar usuarios al álbum", "unable_to_add_album_users": "No se pueden agregar usuarios al álbum",
"unable_to_add_assets_to_shared_link": "No se pueden agregar archivos al enlace compartido", "unable_to_add_assets_to_shared_link": "No se pueden agregar archivos al enlace compartido",
"unable_to_add_comment": "No se puede agregar comentario", "unable_to_add_comment": "No se puede agregar comentario",
"unable_to_add_exclusion_pattern": "No se puede agregar el patrón de exclusión", "unable_to_add_exclusion_pattern": "No se puede agregar el patrón de exclusión",
"unable_to_add_import_path": "No se puede añadir la ruta de importación", "unable_to_add_import_path": "No se puede agregar la ruta de importación",
"unable_to_add_partners": "No se pueden añadir invitados", "unable_to_add_partners": "No se pueden agregar compañeros",
"unable_to_add_remove_archive": "No se puede archivar {archived, select, true {remove asset from} other {add asset to}}", "unable_to_add_remove_archive": "No se puede archivar {archived, select, true {remove asset from} other {add asset to}}",
"unable_to_add_remove_favorites": "Añade {favorite, select, true {add asset to} other {remove asset from}} a favoritos", "unable_to_add_remove_favorites": "{favorite, select, true {No se pudo agregar el elemento a los favoritos} other {No se pudo eliminar el elemento de los favoritos}}",
"unable_to_archive_unarchive": "Añade a {archived, select, true {archive} other {unarchive}}", "unable_to_archive_unarchive": "{archived, select, true {No se pudo agregar el elemento al archivo} other {No se pudo quitar el elemento del archivo}}",
"unable_to_change_album_user_role": "No se puede cambiar la función del usuario del álbum", "unable_to_change_album_user_role": "No se puede cambiar la función del usuario del álbum",
"unable_to_change_date": "No se puede cambiar la fecha", "unable_to_change_date": "No se puede cambiar la fecha",
"unable_to_change_description": "Imposible cambiar la descripción", "unable_to_change_description": "Imposible cambiar la descripción",
@@ -987,23 +1018,21 @@
"unable_to_upload_file": "Error al subir el archivo" "unable_to_upload_file": "Error al subir el archivo"
}, },
"exif": "EXIF", "exif": "EXIF",
"exif_bottom_sheet_description": "Agregar Descripción...", "exif_bottom_sheet_description": "Agregar descripción",
"exif_bottom_sheet_description_error": "Error al actualizar la descripción",
"exif_bottom_sheet_details": "DETALLES", "exif_bottom_sheet_details": "DETALLES",
"exif_bottom_sheet_location": "UBICACIÓN", "exif_bottom_sheet_location": "UBICACIÓN",
"exif_bottom_sheet_people": "PERSONAS", "exif_bottom_sheet_people": "PERSONAS",
"exif_bottom_sheet_person_add_person": "Añadir nombre", "exif_bottom_sheet_person_add_person": "Agregar nombre",
"exif_bottom_sheet_person_age_months": "Edad {months} meses",
"exif_bottom_sheet_person_age_year_months": "Edad 1 año, {months} meses",
"exif_bottom_sheet_person_age_years": "Edad {years}",
"exit_slideshow": "Salir de la presentación", "exit_slideshow": "Salir de la presentación",
"expand_all": "Expandir todo", "expand_all": "Expandir todo",
"experimental_settings_new_asset_list_subtitle": "Trabajo en progreso", "experimental_settings_new_asset_list_subtitle": "Trabajo en progreso",
"experimental_settings_new_asset_list_title": "Habilitar cuadrícula fotográfica experimental", "experimental_settings_new_asset_list_title": "Habilitar cuadrícula fotográfica experimental",
"experimental_settings_subtitle": "¡Úsalo bajo tu propia responsabilidad!", "experimental_settings_subtitle": "¡Úsalo bajo tu propia responsabilidad!",
"experimental_settings_title": "Experimental", "experimental_settings_title": "Experimental",
"expire_after": "Expirar después de", "expire_after": "Caducar después de",
"expired": "Caducado", "expired": "Caducado",
"expires_date": "Expira el {date}", "expires_date": "Caduca el {date}",
"explore": "Explorar", "explore": "Explorar",
"explorer": "Explorador", "explorer": "Explorador",
"export": "Exportar", "export": "Exportar",
@@ -1012,16 +1041,16 @@
"export_database_description": "Exportar la Base de Datos SQLite", "export_database_description": "Exportar la Base de Datos SQLite",
"extension": "Extensión", "extension": "Extensión",
"external": "Externo", "external": "Externo",
"external_libraries": "Bibliotecas Externas", "external_libraries": "Bibliotecas externas",
"external_network": "Red externa", "external_network": "Red externa",
"external_network_sheet_info": "Cuando no estés conectado a la red Wi-Fi preferida, la aplicación se conectará al servidor utilizando la primera de las siguientes URLs a la que pueda acceder, comenzando desde la parte superior de la lista hacia abajo", "external_network_sheet_info": "Cuando no tengas conexión con tu red Wi-Fi preferida, la aplicación se conectará al servidor utilizando la primera de las URL siguientes a la que pueda acceder, empezando de arriba hacia abajo",
"face_unassigned": "Sin asignar", "face_unassigned": "Sin asignar",
"failed": "Fallido", "failed": "Fallido",
"failed_to_authenticate": "Fallo al autentificar", "failed_to_authenticate": "Fallo al autentificar",
"failed_to_load_assets": "Error al cargar los activos", "failed_to_load_assets": "Error al cargar los activos",
"failed_to_load_folder": "No se pudo cargar la carpeta", "failed_to_load_folder": "No se pudo cargar la carpeta",
"favorite": "Favorito", "favorite": "Favorito",
"favorite_action_prompt": "{count} añadidos a Favoritos", "favorite_action_prompt": "{count} agregado(s) a Favoritos",
"favorite_or_unfavorite_photo": "Foto favorita o no favorita", "favorite_or_unfavorite_photo": "Foto favorita o no favorita",
"favorites": "Favoritos", "favorites": "Favoritos",
"favorites_page_no_favorites": "No se encontraron elementos marcados como favoritos", "favorites_page_no_favorites": "No se encontraron elementos marcados como favoritos",
@@ -1036,23 +1065,31 @@
"filter_people": "Filtrar personas", "filter_people": "Filtrar personas",
"filter_places": "Filtrar lugares", "filter_places": "Filtrar lugares",
"find_them_fast": "Encuéntrelos rápidamente por nombre con la búsqueda", "find_them_fast": "Encuéntrelos rápidamente por nombre con la búsqueda",
"first": "Primero",
"fix_incorrect_match": "Corregir coincidencia incorrecta", "fix_incorrect_match": "Corregir coincidencia incorrecta",
"folder": "Carpeta", "folder": "Carpeta",
"folder_not_found": "Carpeta no encontrada", "folder_not_found": "Carpeta no encontrada",
"folders": "Carpetas", "folders": "Carpetas",
"folders_feature_description": "Explorar la vista de carpetas para las fotos y los videos en el sistema de archivos", "folders_feature_description": "Explorar la vista de carpetas para las fotos y los videos en el sistema de archivos",
"forgot_pin_code_question": "¿Olvidaste tu código PIN?",
"forward": "Reenviar", "forward": "Reenviar",
"gcast_enabled": "Google Cast", "gcast_enabled": "Google Cast",
"gcast_enabled_description": "Esta funcionalidad carga recursos externos desde Google para poder funcionar.", "gcast_enabled_description": "Esta funcionalidad carga recursos externos desde Google para poder funcionar.",
"general": "General", "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_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", "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", "getting_started": "Comenzamos",
"go_back": "Volver atrás", "go_back": "Volver atrás",
"go_to_folder": "Ir al directorio", "go_to_folder": "Ir al directorio",
"go_to_search": "Ir a búsqueda", "go_to_search": "Ir a búsqueda",
"gps": "GPS",
"gps_missing": "Sin GPS",
"grant_permission": "Conceder permiso", "grant_permission": "Conceder permiso",
"group_albums_by": "Agrupar albums por...", "group_albums_by": "Agrupar álbumes por...",
"group_country": "Agrupar por país", "group_country": "Agrupar por país",
"group_no": "Sin agrupación", "group_no": "Sin agrupación",
"group_owner": "Agrupar por propietario", "group_owner": "Agrupar por propietario",
@@ -1060,11 +1097,11 @@
"group_year": "Agrupar por año", "group_year": "Agrupar por año",
"haptic_feedback_switch": "Activar respuesta háptica", "haptic_feedback_switch": "Activar respuesta háptica",
"haptic_feedback_title": "Respuesta Háptica", "haptic_feedback_title": "Respuesta Háptica",
"has_quota": "Su cuota", "has_quota": "Cuota asignada",
"hash_asset": "Generar hash del archivo", "hash_asset": "Generar hash del archivo",
"hashed_assets": "Archivos con hash generado", "hashed_assets": "Archivos con hash generado",
"hashing": "Generando hash", "hashing": "Generando hash",
"header_settings_add_header_tip": "Añadir cabecera", "header_settings_add_header_tip": "Agregar cabecera",
"header_settings_field_validator_msg": "El valor no puede estar vacío", "header_settings_field_validator_msg": "El valor no puede estar vacío",
"header_settings_header_name_input": "Nombre de la cabecera", "header_settings_header_name_input": "Nombre de la cabecera",
"header_settings_header_value_input": "Valor de la cabecera", "header_settings_header_value_input": "Valor de la cabecera",
@@ -1079,23 +1116,24 @@
"hide_unnamed_people": "Ocultar personas anónimas", "hide_unnamed_people": "Ocultar personas anónimas",
"home_page_add_to_album_conflicts": "{added} elementos agregados al álbum {album}.{failed} elementos ya existen en el álbum.", "home_page_add_to_album_conflicts": "{added} elementos agregados al álbum {album}.{failed} elementos ya existen en el álbum.",
"home_page_add_to_album_err_local": "Aún no se pueden agregar elementos locales a álbumes, omitiendo", "home_page_add_to_album_err_local": "Aún no se pueden agregar elementos locales a álbumes, omitiendo",
"home_page_add_to_album_success": "Se añadieron {added} elementos al álbum {album}.", "home_page_add_to_album_success": "Se agregaron {added} elementos al álbum {album}.",
"home_page_album_err_partner": "Aún no se pueden agregar elementos a un álbum de un compañero, omitiendo", "home_page_album_err_partner": "Aún no se pueden agregar elementos a un álbum de un compañero, omitiendo",
"home_page_archive_err_local": "Los elementos locales no pueden ser archivados, omitiendo", "home_page_archive_err_local": "Los elementos locales no pueden ser archivados, omitiendo",
"home_page_archive_err_partner": "No se pueden archivar elementos de un compañero, omitiendo", "home_page_archive_err_partner": "No se pueden archivar los elementos de un compañero; omitiendo",
"home_page_building_timeline": "Construyendo la línea de tiempo", "home_page_building_timeline": "Construyendo la línea de tiempo",
"home_page_delete_err_partner": "No se pueden eliminar elementos de un compañero, omitiendo", "home_page_delete_err_partner": "No se pueden eliminar los elementos de un compañero; omitiendo",
"home_page_delete_remote_err_local": "Elementos locales en la selección de eliminación remota, omitiendo", "home_page_delete_remote_err_local": "Elementos locales en la selección de eliminación remota, omitiendo",
"home_page_favorite_err_local": "Aún no se pueden archivar elementos locales, omitiendo", "home_page_favorite_err_local": "Aún no se pueden archivar elementos locales, omitiendo",
"home_page_favorite_err_partner": "Aún no se pueden marcar elementos de compañeros como favoritos, omitiendo", "home_page_favorite_err_partner": "Aún no se pueden marcar los elementos de un compañero como favoritos; omitiendo",
"home_page_first_time_notice": "Si es la primera vez que usas la aplicación, asegúrate de elegir un álbum de copia de seguridad para que la línea de tiempo pueda mostrar fotos y vídeos en él", "home_page_first_time_notice": "Si es la primera vez que usas la aplicación, asegúrate de elegir un álbum de copia de seguridad para que la línea de tiempo pueda mostrar fotos y vídeos en él",
"home_page_locked_error_local": "Imposible mover archivos locales a carpeta bloqueada, saltando", "home_page_locked_error_local": "No se pueden mover archivos locales a una carpeta protegida; omitiendo",
"home_page_locked_error_partner": "Imposible mover los archivos del compañero a carpeta bloqueada, obviando", "home_page_locked_error_partner": "No se pueden mover los elementos de un compañero a una carpeta protegida; omitiendo",
"home_page_share_err_local": "No se pueden compartir elementos locales a través de un enlace, omitiendo", "home_page_share_err_local": "No se pueden compartir elementos locales a través de un enlace, omitiendo",
"home_page_upload_err_limit": "Solo se pueden subir 30 elementos simultáneamente, omitiendo", "home_page_upload_err_limit": "Solo se pueden subir 30 elementos simultáneamente, omitiendo",
"host": "Host", "host": "Host",
"hour": "Hora", "hour": "Hora",
"id": "ID", "hours": "Horas",
"id": "Id.",
"idle": "Inactivo", "idle": "Inactivo",
"ignore_icloud_photos": "Ignorar fotos de iCloud", "ignore_icloud_photos": "Ignorar fotos de iCloud",
"ignore_icloud_photos_description": "Las fotos almacenadas en iCloud no se subirán a Immich", "ignore_icloud_photos_description": "Las fotos almacenadas en iCloud no se subirán a Immich",
@@ -1122,7 +1160,7 @@
"in_archive": "En archivo", "in_archive": "En archivo",
"include_archived": "Incluir archivados", "include_archived": "Incluir archivados",
"include_shared_albums": "Incluir álbumes compartidos", "include_shared_albums": "Incluir álbumes compartidos",
"include_shared_partner_assets": "Incluir archivos compartidos de invitados", "include_shared_partner_assets": "Incluir elementos compartidos por compañeros",
"individual_share": "Compartir individualmente", "individual_share": "Compartir individualmente",
"individual_shares": "Acciones individuales", "individual_shares": "Acciones individuales",
"info": "Información", "info": "Información",
@@ -1155,10 +1193,12 @@
"language_search_hint": "Buscar idiomas...", "language_search_hint": "Buscar idiomas...",
"language_setting_description": "Selecciona tu idioma preferido", "language_setting_description": "Selecciona tu idioma preferido",
"large_files": "Archivos Grandes", "large_files": "Archivos Grandes",
"last": "Último",
"last_seen": "Ultima vez visto", "last_seen": "Ultima vez visto",
"latest_version": "Última versión", "latest_version": "Última versión",
"latitude": "Latitud", "latitude": "Latitud",
"leave": "Abandonar", "leave": "Abandonar",
"leave_album": "Abandonar álbum",
"lens_model": "Modelo de objetivo", "lens_model": "Modelo de objetivo",
"let_others_respond": "Permitir que otros respondan", "let_others_respond": "Permitir que otros respondan",
"level": "Nivel", "level": "Nivel",
@@ -1172,11 +1212,12 @@
"library_page_sort_title": "Título del álbum", "library_page_sort_title": "Título del álbum",
"licenses": "Licencias", "licenses": "Licencias",
"light": "Claro", "light": "Claro",
"like": "Me gusta",
"like_deleted": "Me gusta eliminado", "like_deleted": "Me gusta eliminado",
"link_motion_video": "Enlazar vídeo en movimiento", "link_motion_video": "Enlazar vídeo en movimiento",
"link_to_oauth": "Enlace a OAuth", "link_to_oauth": "Enlace a OAuth",
"linked_oauth_account": "Cuenta OAuth vinculada", "linked_oauth_account": "Cuenta OAuth vinculada",
"list": "Listar", "list": "Lista",
"loading": "Cargando", "loading": "Cargando",
"loading_search_results_failed": "Error al cargar los resultados de la búsqueda", "loading_search_results_failed": "Error al cargar los resultados de la búsqueda",
"local": "Local", "local": "Local",
@@ -1192,7 +1233,7 @@
"location_picker_longitude_error": "Introduce una longitud válida", "location_picker_longitude_error": "Introduce una longitud válida",
"location_picker_longitude_hint": "Introduce tu longitud aquí", "location_picker_longitude_hint": "Introduce tu longitud aquí",
"lock": "Bloquear", "lock": "Bloquear",
"locked_folder": "Carpeta bloqueada", "locked_folder": "Carpeta protegida",
"log_out": "Cerrar sesión", "log_out": "Cerrar sesión",
"log_out_all_devices": "Cerrar sesión en todos los dispositivos", "log_out_all_devices": "Cerrar sesión en todos los dispositivos",
"logged_in_as": "Sesión iniciada como {user}", "logged_in_as": "Sesión iniciada como {user}",
@@ -1204,7 +1245,7 @@
"login_form_back_button_text": "Atrás", "login_form_back_button_text": "Atrás",
"login_form_email_hint": "tucorreo@correo.com", "login_form_email_hint": "tucorreo@correo.com",
"login_form_endpoint_hint": "http://tu-ip-de-servidor:puerto", "login_form_endpoint_hint": "http://tu-ip-de-servidor:puerto",
"login_form_endpoint_url": "URL del servidor", "login_form_endpoint_url": "Enlace del punto de acceso (endpoint) del servidor",
"login_form_err_http": "Por favor, especifique http:// o https://", "login_form_err_http": "Por favor, especifique http:// o https://",
"login_form_err_invalid_email": "Correo electrónico no válido", "login_form_err_invalid_email": "Correo electrónico no válido",
"login_form_err_invalid_url": "URL no válida", "login_form_err_invalid_url": "URL no válida",
@@ -1230,15 +1271,16 @@
"main_branch_warning": "Está utilizando una versión de desarrollo; ¡le recomendamos encarecidamente que utilice una versión de lanzamiento!", "main_branch_warning": "Está utilizando una versión de desarrollo; ¡le recomendamos encarecidamente que utilice una versión de lanzamiento!",
"main_menu": "Menú principal", "main_menu": "Menú principal",
"make": "Marca", "make": "Marca",
"manage_geolocation": "Administrar ubicación",
"manage_shared_links": "Administrar enlaces compartidos", "manage_shared_links": "Administrar enlaces compartidos",
"manage_sharing_with_partners": "Administrar el uso compartido con invitados", "manage_sharing_with_partners": "Gestionar el uso compartido con compañeros",
"manage_the_app_settings": "Administrar la configuración de la aplicación", "manage_the_app_settings": "Administrar la configuración de la aplicación",
"manage_your_account": "Gestiona tu cuenta", "manage_your_account": "Gestiona tu cuenta",
"manage_your_api_keys": "Administre sus claves API", "manage_your_api_keys": "Administre sus claves API",
"manage_your_devices": "Administre sus dispositivos conectados", "manage_your_devices": "Administre sus dispositivos conectados",
"manage_your_oauth_connection": "Administra tu conexión OAuth", "manage_your_oauth_connection": "Administra tu conexión OAuth",
"map": "Mapa", "map": "Mapa",
"map_assets_in_bounds": "{count, plural, one {# foto} other {# fotos}}", "map_assets_in_bounds": "{count, plural, =0 {No hay fotos en esta área} one {# foto} other {# fotos}}",
"map_cannot_get_user_location": "No se pudo obtener la posición del usuario", "map_cannot_get_user_location": "No se pudo obtener la posición del usuario",
"map_location_dialog_yes": "Sí", "map_location_dialog_yes": "Sí",
"map_location_picker_page_use_location": "Usar esta ubicación", "map_location_picker_page_use_location": "Usar esta ubicación",
@@ -1246,22 +1288,21 @@
"map_location_service_disabled_title": "Servicios de ubicación desactivados", "map_location_service_disabled_title": "Servicios de ubicación desactivados",
"map_marker_for_images": "Marcador de mapa para imágenes tomadas en {city}, {country}", "map_marker_for_images": "Marcador de mapa para imágenes tomadas en {city}, {country}",
"map_marker_with_image": "Marcador de mapa con imagen", "map_marker_with_image": "Marcador de mapa con imagen",
"map_no_assets_in_bounds": "No hay fotos en esta zona",
"map_no_location_permission_content": "Se necesitan permisos de ubicación para mostrar elementos de tu ubicación actual. ¿Deseas activarlos ahora?", "map_no_location_permission_content": "Se necesitan permisos de ubicación para mostrar elementos de tu ubicación actual. ¿Deseas activarlos ahora?",
"map_no_location_permission_title": "Permisos de ubicación denegados", "map_no_location_permission_title": "Permisos de ubicación denegados",
"map_settings": "Ajustes mapa", "map_settings": "Ajustes del mapa",
"map_settings_dark_mode": "Modo oscuro", "map_settings_dark_mode": "Modo oscuro",
"map_settings_date_range_option_day": "Últimas 24 horas", "map_settings_date_range_option_day": "Últimas 24 horas",
"map_settings_date_range_option_days": "Últimos {days} días", "map_settings_date_range_option_days": "Últimos {days} días",
"map_settings_date_range_option_year": "Último año", "map_settings_date_range_option_year": "Último año",
"map_settings_date_range_option_years": "Últimos {years} años", "map_settings_date_range_option_years": "Últimos {years} años",
"map_settings_dialog_title": "Ajustes mapa", "map_settings_dialog_title": "Ajustes del mapa",
"map_settings_include_show_archived": "Incluir archivados", "map_settings_include_show_archived": "Incluir archivados",
"map_settings_include_show_partners": "Incluir Parejas", "map_settings_include_show_partners": "Incluir compañeros",
"map_settings_only_show_favorites": "Mostrar solo favoritas", "map_settings_only_show_favorites": "Mostrar solo favoritas",
"map_settings_theme_settings": "Apariencia del Mapa", "map_settings_theme_settings": "Apariencia del Mapa",
"map_zoom_to_see_photos": "Alejar para ver fotos", "map_zoom_to_see_photos": "Alejar para ver fotos",
"mark_all_as_read": "Marcar todos como leídos", "mark_all_as_read": "Marcar todas como leídas",
"mark_as_read": "Marcar como leído", "mark_as_read": "Marcar como leído",
"marked_all_as_read": "Todos marcados como leídos", "marked_all_as_read": "Todos marcados como leídos",
"matches": "Coincidencias", "matches": "Coincidencias",
@@ -1283,25 +1324,29 @@
"merged_people_count": "Fusionada {count, plural, one {# persona} other {# personas}}", "merged_people_count": "Fusionada {count, plural, one {# persona} other {# personas}}",
"minimize": "Minimizar", "minimize": "Minimizar",
"minute": "Minuto", "minute": "Minuto",
"minutes": "Minutos",
"missing": "Faltante", "missing": "Faltante",
"model": "Modelo", "model": "Modelo",
"month": "Mes", "month": "Mes",
"monthly_title_text_date_format": "MMMM a", "monthly_title_text_date_format": "MMMM a",
"more": "Mas", "more": "Mas",
"move": "Mover", "move": "Mover",
"move_off_locked_folder": "Mover fuera de la carpeta protegida", "move_off_locked_folder": "Sacar de la carpeta protegida",
"move_to_lock_folder_action_prompt": "{count} añadidos a la carpeta protegida", "move_to_lock_folder_action_prompt": "{count} agregado(s) a la carpeta protegida",
"move_to_locked_folder": "Mover a la carpeta protegida", "move_to_locked_folder": "Mover a la carpeta protegida",
"move_to_locked_folder_confirmation": "Estas fotos y vídeos serán eliminados de todos los álbumes y sólo podrán ser vistos desde la carpeta protegida", "move_to_locked_folder_confirmation": "Estas fotos y vídeos se eliminarán de todos los álbumes; solo se podrán ver en la carpeta protegida",
"moved_to_archive": "Movido(s) {count, plural, one {# recurso} other {# recursos}} a archivo", "moved_to_archive": "Movido(s) {count, plural, one {# recurso} other {# recursos}} a archivo",
"moved_to_library": "Movido(s) {count, plural, one {# recurso} other {# recursos}} a biblioteca", "moved_to_library": "Movido(s) {count, plural, one {# recurso} other {# recursos}} a biblioteca",
"moved_to_trash": "Movido a la papelera", "moved_to_trash": "Movido a la papelera",
"multiselect_grid_edit_date_time_err_read_only": "No se puede cambiar la fecha del archivo(s) de solo lectura, omitiendo", "multiselect_grid_edit_date_time_err_read_only": "No se puede cambiar la fecha del archivo(s) de solo lectura, omitiendo",
"multiselect_grid_edit_gps_err_read_only": "No se puede editar la ubicación de activos de solo lectura, omitiendo", "multiselect_grid_edit_gps_err_read_only": "No se puede editar la ubicación de activos de solo lectura, omitiendo",
"mute_memories": "Silenciar Recuerdos", "mute_memories": "Silenciar Recuerdos",
"my_albums": "Mis albums", "my_albums": "Mis álbumes",
"name": "Nombre", "name": "Nombre",
"name_or_nickname": "Nombre o apodo", "name_or_nickname": "Nombre o apodo",
"network_requirement_photos_upload": "Usar datos móviles para crear una copia de seguridad de las fotos",
"network_requirement_videos_upload": "Usar datos móviles para crear una copia de seguridad de los videos",
"network_requirements_updated": "Los requisitos de red han cambiado, reiniciando la cola de copias de seguridad",
"networking_settings": "Red", "networking_settings": "Red",
"networking_subtitle": "Configuraciones de acceso por URL al servidor", "networking_subtitle": "Configuraciones de acceso por URL al servidor",
"never": "Nunca", "never": "Nunca",
@@ -1310,7 +1355,7 @@
"new_password": "Nueva contraseña", "new_password": "Nueva contraseña",
"new_person": "Nueva persona", "new_person": "Nueva persona",
"new_pin_code": "Nuevo PIN", "new_pin_code": "Nuevo PIN",
"new_pin_code_subtitle": "Esta es tu primera vez accediendo a la carpeta protegida. Crea un PIN seguro para acceder a esta página", "new_pin_code_subtitle": "Esta es la primera vez que accedes a la carpeta protegida. Crea un código PIN seguro para acceder a esta página",
"new_user_created": "Nuevo usuario creado", "new_user_created": "Nuevo usuario creado",
"new_version_available": "NUEVA VERSIÓN DISPONIBLE", "new_version_available": "NUEVA VERSIÓN DISPONIBLE",
"newest_first": "El más reciente primero", "newest_first": "El más reciente primero",
@@ -1329,7 +1374,7 @@
"no_explore_results_message": "Sube más fotos para explorar tu colección.", "no_explore_results_message": "Sube más fotos para explorar tu colección.",
"no_favorites_message": "Agregue favoritos para encontrar rápidamente sus mejores fotos y videos", "no_favorites_message": "Agregue favoritos para encontrar rápidamente sus mejores fotos y videos",
"no_libraries_message": "Crea una biblioteca externa para ver tus fotos y vídeos", "no_libraries_message": "Crea una biblioteca externa para ver tus fotos y vídeos",
"no_locked_photos_message": "Fotos y vídeos en la carpeta protegida están ocultos y no se mostrarán en las búsquedas de tu librería.", "no_locked_photos_message": "Las fotos y los vídeos de la carpeta protegida se mantienen ocultos; no aparecerán cuando veas o busques elementos en tu biblioteca.",
"no_name": "Sin nombre", "no_name": "Sin nombre",
"no_notifications": "Ninguna notificación", "no_notifications": "Ninguna notificación",
"no_people_found": "No se encontraron personas coincidentes", "no_people_found": "No se encontraron personas coincidentes",
@@ -1340,7 +1385,7 @@
"no_uploads_in_progress": "No hay cargas en progreso", "no_uploads_in_progress": "No hay cargas en progreso",
"not_in_any_album": "Sin álbum", "not_in_any_album": "Sin álbum",
"not_selected": "No seleccionado", "not_selected": "No seleccionado",
"note_apply_storage_label_to_previously_uploaded assets": "Nota: Para aplicar la etiqueta de almacenamiento a los archivos subidos previamente, ejecute el", "note_apply_storage_label_to_previously_uploaded assets": "Nota: Para aplicar la etiqueta de almacenamiento a los archivos que ya se subieron, ejecute la",
"notes": "Notas", "notes": "Notas",
"nothing_here_yet": "Sin nada aún", "nothing_here_yet": "Sin nada aún",
"notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.", "notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.",
@@ -1353,13 +1398,14 @@
"oauth": "OAuth", "oauth": "OAuth",
"official_immich_resources": "Recursos oficiales de Immich", "official_immich_resources": "Recursos oficiales de Immich",
"offline": "Desconectado", "offline": "Desconectado",
"offset": "Desviación",
"ok": "Sí", "ok": "Sí",
"oldest_first": "Los más antiguos primero", "oldest_first": "Los más antiguos primero",
"on_this_device": "En este dispositivo", "on_this_device": "En este dispositivo",
"onboarding": "Incorporando", "onboarding": "Incorporando",
"onboarding_locale_description": "Selecciona tu idioma preferido. Podrás cambiarlo después desde tu configuración.", "onboarding_locale_description": "Selecciona tu idioma preferido. Podrás cambiarlo después desde tu configuración.",
"onboarding_privacy_description": "Las siguientes funciones (opcionales) dependen de servicios externos y pueden desactivarse en cualquier momento desde los ajustes.", "onboarding_privacy_description": "Las siguientes funciones, que son opcionales, utilizan servicios externos. Puedes deshabilitarlas mediante los ajustes en cualquier momento.",
"onboarding_server_welcome_description": "Empecemos a configurar tu instancia con algunos ajustes comunes.", "onboarding_server_welcome_description": "Empecemos a configurar tu instancia fijando algunos ajustes comunes.",
"onboarding_theme_description": "Elija un color de tema para su instancia. Puedes cambiar esto más tarde en tu configuración.", "onboarding_theme_description": "Elija un color de tema para su instancia. Puedes cambiar esto más tarde en tu configuración.",
"onboarding_user_welcome_description": "¡Empecemos!", "onboarding_user_welcome_description": "¡Empecemos!",
"onboarding_welcome_user": "Bienvenido, {user}", "onboarding_welcome_user": "Bienvenido, {user}",
@@ -1377,22 +1423,22 @@
"other_devices": "Otro dispositivo", "other_devices": "Otro dispositivo",
"other_entities": "Otras entidades", "other_entities": "Otras entidades",
"other_variables": "Otras variables", "other_variables": "Otras variables",
"owned": "Propio", "owned": "Propios",
"owner": "Propietario", "owner": "Propietario",
"partner": "Invitado", "partner": "Compañero",
"partner_can_access": "{partner} puede acceder", "partner_can_access": "{partner} tiene acceso",
"partner_can_access_assets": "Todas tus fotos y vídeos excepto los Archivados y Eliminados", "partner_can_access_assets": "Todas tus fotos y vídeos excepto los Archivados y Eliminados",
"partner_can_access_location": "Ubicación donde fueron realizadas tus fotos", "partner_can_access_location": "Ubicación donde fueron realizadas tus fotos",
"partner_list_user_photos": "Fotos de {user}", "partner_list_user_photos": "Fotos de {user}",
"partner_list_view_all": "Ver todas", "partner_list_view_all": "Ver todas",
"partner_page_empty_message": "Tus fotos aún no se han compartido con ningún compañero.", "partner_page_empty_message": "Tus fotos aún no se han compartido con ningún compañero.",
"partner_page_no_more_users": "No hay más usuarios para agregar", "partner_page_no_more_users": "No hay más usuarios para agregar",
"partner_page_partner_add_failed": "No se pudo añadir el socio", "partner_page_partner_add_failed": "No se pudo agregar el compañero",
"partner_page_select_partner": "Seleccionar compañero", "partner_page_select_partner": "Seleccionar compañero",
"partner_page_shared_to_title": "Compartido con", "partner_page_shared_to_title": "Compartido con",
"partner_page_stop_sharing_content": "{partner} ya no podrá acceder a tus fotos.", "partner_page_stop_sharing_content": "{partner} ya no podrá acceder a tus fotos.",
"partner_sharing": "Compartir con invitados", "partner_sharing": "Compartir con compañeros",
"partners": "Invitados", "partners": "Compañeros",
"password": "Contraseña", "password": "Contraseña",
"password_does_not_match": "Las contraseñas no coinciden", "password_does_not_match": "Las contraseñas no coinciden",
"password_required": "Contraseña requerida", "password_required": "Contraseña requerida",
@@ -1430,11 +1476,14 @@
"permission_onboarding_permission_limited": "Permiso limitado. Para permitir que Immich haga copia de seguridad y gestione toda tu colección de galería, concede permisos de fotos y videos en Configuración.", "permission_onboarding_permission_limited": "Permiso limitado. Para permitir que Immich haga copia de seguridad y gestione toda tu colección de galería, concede permisos de fotos y videos en Configuración.",
"permission_onboarding_request": "Immich requiere permiso para ver tus fotos y videos.", "permission_onboarding_request": "Immich requiere permiso para ver tus fotos y videos.",
"person": "Persona", "person": "Persona",
"person_age_months": "hace {months, plural, one {# mes} other {# meses}}",
"person_age_year_months": "1 año y {months, plural, one {# mes} other {# meses}}",
"person_age_years": "{years, plural, other {# años}}",
"person_birthdate": "Nacido el {date}", "person_birthdate": "Nacido el {date}",
"person_hidden": "{name}{hidden, select, true { (oculto)} other {}}", "person_hidden": "{name}{hidden, select, true { (oculto)} other {}}",
"photo_shared_all_users": "Parece que compartiste tus fotos con todos los usuarios o no tienes ningún usuario con quien compartirlas.", "photo_shared_all_users": "Parece que compartiste tus fotos con todos los usuarios o no tienes ningún usuario con quien compartirlas.",
"photos": "Fotos", "photos": "Fotos",
"photos_and_videos": "Fotos y Videos", "photos_and_videos": "Fotos y Vídeos",
"photos_count": "{count, plural, one {{count, number} Foto} other {{count, number} Fotos}}", "photos_count": "{count, plural, one {{count, number} Foto} other {{count, number} Fotos}}",
"photos_from_previous_years": "Fotos de años anteriores", "photos_from_previous_years": "Fotos de años anteriores",
"pick_a_location": "Elige una ubicación", "pick_a_location": "Elige una ubicación",
@@ -1469,6 +1518,7 @@
"profile_drawer_client_out_of_date_minor": "La app está desactualizada. Por favor actualiza a la última versión menor.", "profile_drawer_client_out_of_date_minor": "La app está desactualizada. Por favor actualiza a la última versión menor.",
"profile_drawer_client_server_up_to_date": "Cliente y Servidor están actualizados", "profile_drawer_client_server_up_to_date": "Cliente y Servidor están actualizados",
"profile_drawer_github": "GitHub", "profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Modo Solo lectura habilitado. Toque dos veces el ícono del avatar del usuario para salir.",
"profile_drawer_server_out_of_date_major": "El servidor está desactualizado. Por favor actualiza a la última versión principal.", "profile_drawer_server_out_of_date_major": "El servidor está desactualizado. Por favor actualiza a la última versión principal.",
"profile_drawer_server_out_of_date_minor": "El servidor está desactualizado. Por favor actualiza a la última versión menor.", "profile_drawer_server_out_of_date_minor": "El servidor está desactualizado. Por favor actualiza a la última versión menor.",
"profile_image_of_user": "Foto de perfil de {user}", "profile_image_of_user": "Foto de perfil de {user}",
@@ -1514,6 +1564,8 @@
"rating_description": "Mostrar la clasificación exif en el panel de información", "rating_description": "Mostrar la clasificación exif en el panel de información",
"reaction_options": "Opciones de reacción", "reaction_options": "Opciones de reacción",
"read_changelog": "Leer registro de cambios", "read_changelog": "Leer registro de cambios",
"readonly_mode_disabled": "Modo Solo lectura deshabilitado",
"readonly_mode_enabled": "Modo Solo lectura habilitado",
"reassign": "Reasignar", "reassign": "Reasignar",
"reassigned_assets_to_existing_person": "Reasignado {count, plural, one {# elemento} other {# elementos}} a {name, select, null {una persona existente} other {{name}}}", "reassigned_assets_to_existing_person": "Reasignado {count, plural, one {# elemento} other {# elementos}} a {name, select, null {una persona existente} other {{name}}}",
"reassigned_assets_to_new_person": "Reasignado {count, plural, one {# elemento} other {# elementos}} a un nuevo usuario", "reassigned_assets_to_new_person": "Reasignado {count, plural, one {# elemento} other {# elementos}} a un nuevo usuario",
@@ -1547,12 +1599,12 @@
"remove_from_album": "Eliminar del álbum", "remove_from_album": "Eliminar del álbum",
"remove_from_album_action_prompt": "{count} eliminado del álbum", "remove_from_album_action_prompt": "{count} eliminado del álbum",
"remove_from_favorites": "Quitar de favoritos", "remove_from_favorites": "Quitar de favoritos",
"remove_from_lock_folder_action_prompt": "{count} eliminado de la carpeta protegida", "remove_from_lock_folder_action_prompt": "{count} eliminado(s) de la carpeta protegida",
"remove_from_locked_folder": "Eliminar de la carpeta protegida", "remove_from_locked_folder": "Eliminar de la carpeta protegida",
"remove_from_locked_folder_confirmation": "¿Estás seguro de que deseas mover estas fotos y vídeos fuera de la carpeta protegida? Serán visibles en tu biblioteca.", "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_from_shared_link": "Eliminar desde enlace compartido",
"remove_memory": "Quitar memoria", "remove_memory": "Quitar recuerdo",
"remove_photo_from_memory": "Quitar foto de esta memoria", "remove_photo_from_memory": "Quitar foto de este recuerdo",
"remove_tag": "Quitar etiqueta", "remove_tag": "Quitar etiqueta",
"remove_url": "Eliminar URL", "remove_url": "Eliminar URL",
"remove_user": "Eliminar usuario", "remove_user": "Eliminar usuario",
@@ -1560,8 +1612,8 @@
"removed_from_archive": "Eliminado del archivo", "removed_from_archive": "Eliminado del archivo",
"removed_from_favorites": "Eliminado de favoritos", "removed_from_favorites": "Eliminado de favoritos",
"removed_from_favorites_count": "{count, plural, other {Eliminados #}} de favoritos", "removed_from_favorites_count": "{count, plural, other {Eliminados #}} de favoritos",
"removed_memory": "Memoria eliminada", "removed_memory": "Recuerdo eliminado",
"removed_photo_from_memory": "Se ha eliminado la foto de la memoria", "removed_photo_from_memory": "Foto eliminada del recuerdo",
"removed_tagged_assets": "Etiqueta eliminada de {count, plural, one {# activo} other {# activos}}", "removed_tagged_assets": "Etiqueta eliminada de {count, plural, one {# activo} other {# activos}}",
"rename": "Renombrar", "rename": "Renombrar",
"repair": "Reparar", "repair": "Reparar",
@@ -1575,6 +1627,9 @@
"reset_password": "Restablecer la contraseña", "reset_password": "Restablecer la contraseña",
"reset_people_visibility": "Restablecer la visibilidad de las personas", "reset_people_visibility": "Restablecer la visibilidad de las personas",
"reset_pin_code": "Restablecer PIN", "reset_pin_code": "Restablecer PIN",
"reset_pin_code_description": "Si olvidaste tu código PIN, puedes comunicarte con el administrador del servidor para restablecerlo",
"reset_pin_code_success": "Código PIN restablecido correctamente",
"reset_pin_code_with_password": "Siempre puedes restablecer tu código PIN usando tu contraseña",
"reset_sqlite": "Restablecer la Base de Datos SQLite", "reset_sqlite": "Restablecer la Base de Datos SQLite",
"reset_sqlite_confirmation": "¿Estás seguro que deseas restablecer la base de datos SQLite? Deberás cerrar sesión y volver a iniciarla para resincronizar los datos", "reset_sqlite_confirmation": "¿Estás seguro que deseas restablecer la base de datos SQLite? Deberás cerrar sesión y volver a iniciarla para resincronizar los datos",
"reset_sqlite_success": "Restablecer exitosamente la base de datos SQLite", "reset_sqlite_success": "Restablecer exitosamente la base de datos SQLite",
@@ -1606,7 +1661,7 @@
"scan_settings": "Configuración de escaneo", "scan_settings": "Configuración de escaneo",
"scanning_for_album": "Buscando álbum...", "scanning_for_album": "Buscando álbum...",
"search": "Buscar", "search": "Buscar",
"search_albums": "Buscar álbums", "search_albums": "Buscar álbumes",
"search_by_context": "Buscar por contexto", "search_by_context": "Buscar por contexto",
"search_by_description": "Buscar por descripción", "search_by_description": "Buscar por descripción",
"search_by_description_example": "Día de senderismo en Sapa", "search_by_description_example": "Día de senderismo en Sapa",
@@ -1651,7 +1706,7 @@
"search_places": "Buscar lugar", "search_places": "Buscar lugar",
"search_rating": "Buscar por calificación...", "search_rating": "Buscar por calificación...",
"search_result_page_new_search_hint": "Nueva Búsqueda", "search_result_page_new_search_hint": "Nueva Búsqueda",
"search_settings": "Ajustes de la búsqueda", "search_settings": "Ajustes de búsqueda",
"search_state": "Buscar región/estado...", "search_state": "Buscar región/estado...",
"search_suggestion_list_smart_search_hint_1": "La búsqueda inteligente está habilitada por defecto, para buscar metadatos utiliza esta sintaxis ", "search_suggestion_list_smart_search_hint_1": "La búsqueda inteligente está habilitada por defecto, para buscar metadatos utiliza esta sintaxis ",
"search_suggestion_list_smart_search_hint_2": "m:tu-término-de-búsqueda", "search_suggestion_list_smart_search_hint_2": "m:tu-término-de-búsqueda",
@@ -1680,11 +1735,12 @@
"select_user_for_sharing_page_err_album": "Fallo al crear el álbum", "select_user_for_sharing_page_err_album": "Fallo al crear el álbum",
"selected": "Seleccionado", "selected": "Seleccionado",
"selected_count": "{count, plural, one {# seleccionado} other {# seleccionados}}", "selected_count": "{count, plural, one {# seleccionado} other {# seleccionados}}",
"selected_gps_coordinates": "coordenadas gps seleccionadas",
"send_message": "Enviar mensaje", "send_message": "Enviar mensaje",
"send_welcome_email": "Enviar correo de bienvenida", "send_welcome_email": "Enviar correo de bienvenida",
"server_endpoint": "Punto final del servidor", "server_endpoint": "Punto final del servidor",
"server_info_box_app_version": "Versión de la Aplicación", "server_info_box_app_version": "Versión de la Aplicación",
"server_info_box_server_url": "URL del servidor", "server_info_box_server_url": "Enlace del servidor",
"server_offline": "Servidor desconectado", "server_offline": "Servidor desconectado",
"server_online": "Servidor en línea", "server_online": "Servidor en línea",
"server_privacy": "Privacidad del Servidor", "server_privacy": "Privacidad del Servidor",
@@ -1730,7 +1786,7 @@
"share_assets_selected": "{count} seleccionado(s)", "share_assets_selected": "{count} seleccionado(s)",
"share_dialog_preparing": "Preparando...", "share_dialog_preparing": "Preparando...",
"share_link": "Compartir Enlace", "share_link": "Compartir Enlace",
"shared": "Compartido", "shared": "Compartidos",
"shared_album_activities_input_disable": "Los comentarios están deshabilitados", "shared_album_activities_input_disable": "Los comentarios están deshabilitados",
"shared_album_activity_remove_content": "¿Deseas eliminar esta actividad?", "shared_album_activity_remove_content": "¿Deseas eliminar esta actividad?",
"shared_album_activity_remove_title": "Eliminar Actividad", "shared_album_activity_remove_title": "Eliminar Actividad",
@@ -1747,7 +1803,7 @@
"shared_link_clipboard_copied_massage": "Copiado al portapapeles", "shared_link_clipboard_copied_massage": "Copiado al portapapeles",
"shared_link_clipboard_text": "Enlace: {link}\nContraseña: {password}", "shared_link_clipboard_text": "Enlace: {link}\nContraseña: {password}",
"shared_link_create_error": "Error creando el enlace compartido", "shared_link_create_error": "Error creando el enlace compartido",
"shared_link_custom_url_description": "Accede a este enlace compartido con una URL personalizada", "shared_link_custom_url_description": "Acceder a este enlace compartido con una URL personalizada",
"shared_link_edit_description_hint": "Introduce la descripción del enlace", "shared_link_edit_description_hint": "Introduce la descripción del enlace",
"shared_link_edit_expire_after_option_day": "1 día", "shared_link_edit_expire_after_option_day": "1 día",
"shared_link_edit_expire_after_option_days": "{count} días", "shared_link_edit_expire_after_option_days": "{count} días",
@@ -1779,19 +1835,21 @@
"shared_photos_and_videos_count": "{assetCount, plural, other {# Fotos y vídeos compartidos.}}", "shared_photos_and_videos_count": "{assetCount, plural, other {# Fotos y vídeos compartidos.}}",
"shared_with_me": "Compartidos conmigo", "shared_with_me": "Compartidos conmigo",
"shared_with_partner": "Compartido con {partner}", "shared_with_partner": "Compartido con {partner}",
"sharing": "Compartido", "sharing": "Compartidos",
"sharing_enter_password": "Por favor, introduce la contraseña para ver esta página.", "sharing_enter_password": "Por favor, introduce la contraseña para ver esta página.",
"sharing_page_album": "Álbumes compartidos", "sharing_page_album": "Álbumes compartidos",
"sharing_page_description": "Crea álbumes compartidos para compartir fotos y vídeos con las personas de tu red.", "sharing_page_description": "Crea álbumes compartidos para compartir fotos y vídeos con las personas de tu red.",
"sharing_page_empty_list": "LISTA VACIA", "sharing_page_empty_list": "LISTA VACIA",
"sharing_sidebar_description": "Muestra un enlace a \"Compartido\" en el menú lateral", "sharing_sidebar_description": "Muestra un enlace a \"Compartido\" en el menú lateral",
"sharing_silver_appbar_create_shared_album": "Crear un álbum compartido", "sharing_silver_appbar_create_shared_album": "Crear un álbum compartido",
"sharing_silver_appbar_share_partner": "Compartir con el compañero", "sharing_silver_appbar_share_partner": "Compartir con compañero",
"shift_to_permanent_delete": "presiona ⇧ para eliminar permanentemente el archivo", "shift_to_permanent_delete": "presiona ⇧ para eliminar permanentemente el archivo",
"show_album_options": "Mostrar ajustes del álbum", "show_album_options": "Mostrar opciones del álbum",
"show_albums": "Mostrar álbumes", "show_albums": "Mostrar álbumes",
"show_all_assets": "Mostrar todos los assets",
"show_all_people": "Mostrar todas las personas", "show_all_people": "Mostrar todas las personas",
"show_and_hide_people": "Mostrar y ocultar 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_file_location": "Mostrar carpeta del archivo",
"show_gallery": "Ver galería", "show_gallery": "Ver galería",
"show_hidden_people": "Mostrar personas ocultas", "show_hidden_people": "Mostrar personas ocultas",
@@ -1819,15 +1877,16 @@
"skip_to_tags": "Ir a las etiquetas", "skip_to_tags": "Ir a las etiquetas",
"slideshow": "Diapositivas", "slideshow": "Diapositivas",
"slideshow_settings": "Ajustes de diapositivas", "slideshow_settings": "Ajustes de diapositivas",
"sort_albums_by": "Ordenar álbumes por...", "sort_albums_by": "Ordenar álbumes por",
"sort_created": "Fecha de creación", "sort_created": "Fecha de creación",
"sort_items": "Número de archivos", "sort_items": "Número de archivos",
"sort_modified": "Fecha de modificación", "sort_modified": "Fecha de modificación",
"sort_newest": "Foto más nueva",
"sort_oldest": "Foto más antigua", "sort_oldest": "Foto más antigua",
"sort_people_by_similarity": "Ordenar personas por similitud", "sort_people_by_similarity": "Ordenar personas por similitud",
"sort_recent": "Foto más reciente", "sort_recent": "Foto más reciente",
"sort_title": "Título", "sort_title": "Título",
"source": "Origen", "source": "Fuente",
"stack": "Apilar", "stack": "Apilar",
"stack_action_prompt": "{count} apilados", "stack_action_prompt": "{count} apilados",
"stack_duplicates": "Apilar duplicados", "stack_duplicates": "Apilar duplicados",
@@ -1846,7 +1905,7 @@
"stop_sharing_photos_with_user": "Deja de compartir tus fotos con este usuario", "stop_sharing_photos_with_user": "Deja de compartir tus fotos con este usuario",
"storage": "Espacio de almacenamiento", "storage": "Espacio de almacenamiento",
"storage_label": "Etiqueta de almacenamiento", "storage_label": "Etiqueta de almacenamiento",
"storage_quota": "Cuota de Almacenamiento", "storage_quota": "Cuota de almacenamiento",
"storage_usage": "{used} de {available} en uso", "storage_usage": "{used} de {available} en uso",
"submit": "Enviar", "submit": "Enviar",
"success": "Éxito", "success": "Éxito",
@@ -1854,7 +1913,7 @@
"sunrise_on_the_beach": "Amanecer en la playa", "sunrise_on_the_beach": "Amanecer en la playa",
"support": "Soporte", "support": "Soporte",
"support_and_feedback": "Soporte y comentarios", "support_and_feedback": "Soporte y comentarios",
"support_third_party_description": "Su instalación de immich fue empaquetada por un tercero. Los problemas que experimenta pueden ser causados por ese paquete, así que por favor plantee problemas con ellos en primer lugar usando los enlaces inferiores.", "support_third_party_description": "Esta instalación de Immich fue empaquetada por un tercero. Los problemas actuales pueden ser ocasionados por ese paquete; por favor, discuta sus inconvenientes con el empaquetador antes de usar los enlaces de abajo.",
"swap_merge_direction": "Alternar dirección de mezcla", "swap_merge_direction": "Alternar dirección de mezcla",
"sync": "Sincronizar", "sync": "Sincronizar",
"sync_albums": "Sincronizar álbumes", "sync_albums": "Sincronizar álbumes",
@@ -1898,7 +1957,9 @@
"to_change_password": "Cambiar contraseña", "to_change_password": "Cambiar contraseña",
"to_favorite": "A los favoritos", "to_favorite": "A los favoritos",
"to_login": "Iniciar Sesión", "to_login": "Iniciar Sesión",
"to_multi_select": "para multi selección",
"to_parent": "Ir a los padres", "to_parent": "Ir a los padres",
"to_select": "para seleccionar",
"to_trash": "Descartar", "to_trash": "Descartar",
"toggle_settings": "Alternar ajustes", "toggle_settings": "Alternar ajustes",
"total": "Total", "total": "Total",
@@ -1931,7 +1992,7 @@
"unknown": "Desconocido", "unknown": "Desconocido",
"unknown_country": "País desconocido", "unknown_country": "País desconocido",
"unknown_year": "Año desconocido", "unknown_year": "Año desconocido",
"unlimited": "Ilimitado", "unlimited": "Sin límites",
"unlink_motion_video": "Desvincular vídeo en movimiento", "unlink_motion_video": "Desvincular vídeo en movimiento",
"unlink_oauth": "Desvincular OAuth", "unlink_oauth": "Desvincular OAuth",
"unlinked_oauth_account": "Cuenta OAuth desconectada", "unlinked_oauth_account": "Cuenta OAuth desconectada",
@@ -1948,6 +2009,7 @@
"unstacked_assets_count": "Desapilado(s) {count, plural, one {# elemento} other {# elementos}}", "unstacked_assets_count": "Desapilado(s) {count, plural, one {# elemento} other {# elementos}}",
"untagged": "Sin etiqueta", "untagged": "Sin etiqueta",
"up_next": "A continuación", "up_next": "A continuación",
"update_location_action_prompt": "Actualiza la ubicación de {count} assets seleccionados con:",
"updated_at": "Actualizado", "updated_at": "Actualizado",
"updated_password": "Contraseña actualizada", "updated_password": "Contraseña actualizada",
"upload": "Subir", "upload": "Subir",
@@ -1972,9 +2034,10 @@
"use_biometric": "Uso biométrico", "use_biometric": "Uso biométrico",
"use_current_connection": "Usar conexión actual", "use_current_connection": "Usar conexión actual",
"use_custom_date_range": "Usa un intervalo de fechas personalizado", "use_custom_date_range": "Usa un intervalo de fechas personalizado",
"use_this_location": "Click para usar ubicación",
"user": "Usuario", "user": "Usuario",
"user_has_been_deleted": "Este usuario ha sido eliminado.", "user_has_been_deleted": "Este usuario ha sido eliminado.",
"user_id": "ID de usuario", "user_id": "Id. de usuario",
"user_liked": "{user} le gustó {type, select, photo {this photo} video {this video} asset {this asset} other {it}}", "user_liked": "{user} le gustó {type, select, photo {this photo} video {this video} asset {this asset} other {it}}",
"user_pin_code_settings": "PIN", "user_pin_code_settings": "PIN",
"user_pin_code_settings_description": "Gestione su PIN", "user_pin_code_settings_description": "Gestione su PIN",
@@ -2007,7 +2070,7 @@
"view_all": "Ver todas", "view_all": "Ver todas",
"view_all_users": "Mostrar todos los usuarios", "view_all_users": "Mostrar todos los usuarios",
"view_details": "Ver Detalles", "view_details": "Ver Detalles",
"view_in_timeline": "Mostrar en la línea de tiempo", "view_in_timeline": "Ver en la línea de tiempo",
"view_link": "Ver enlace", "view_link": "Ver enlace",
"view_links": "Mostrar enlaces", "view_links": "Mostrar enlaces",
"view_name": "Ver", "view_name": "Ver",

View File

@@ -28,6 +28,9 @@
"add_to_album": "Lisa albumisse", "add_to_album": "Lisa albumisse",
"add_to_album_bottom_sheet_added": "Lisatud albumisse {album}", "add_to_album_bottom_sheet_added": "Lisatud albumisse {album}",
"add_to_album_bottom_sheet_already_exists": "On juba albumis {album}", "add_to_album_bottom_sheet_already_exists": "On juba albumis {album}",
"add_to_album_toggle": "Muuda albumi {album} valikut",
"add_to_albums": "Lisa albumitesse",
"add_to_albums_count": "Lisa albumitesse ({count})",
"add_to_shared_album": "Lisa jagatud albumisse", "add_to_shared_album": "Lisa jagatud albumisse",
"add_url": "Lisa URL", "add_url": "Lisa URL",
"added_to_archive": "Lisatud arhiivi", "added_to_archive": "Lisatud arhiivi",
@@ -355,6 +358,9 @@
"trash_number_of_days_description": "Päevade arv, kui kaua hoida üksusi prügikastis enne nende lõplikku kustutamist", "trash_number_of_days_description": "Päevade arv, kui kaua hoida üksusi prügikastis enne nende lõplikku kustutamist",
"trash_settings": "Prügikasti seaded", "trash_settings": "Prügikasti seaded",
"trash_settings_description": "Halda prügikasti seadeid", "trash_settings_description": "Halda prügikasti seadeid",
"unlink_all_oauth_accounts": "Eemalda kõik OAuth kontod",
"unlink_all_oauth_accounts_description": "Ära unusta enne teenusepakkuja vahetamist kõik OAuth kontod eemaldada.",
"unlink_all_oauth_accounts_prompt": "Kas oled kindel, et soovid kõik OAuth kontod eemaldada? See lähtestab iga kasutaja OAuth ID ja seda tegevust ei saa tagasi võtta.",
"user_cleanup_job": "Kasutajate korrastamine", "user_cleanup_job": "Kasutajate korrastamine",
"user_delete_delay": "Kasutaja <b>{user}</b> konto ja üksuste lõplik kustutamine on planeeritud {delay, plural, one {# päeva} other {# päeva}} pärast.", "user_delete_delay": "Kasutaja <b>{user}</b> konto ja üksuste lõplik kustutamine on planeeritud {delay, plural, one {# päeva} other {# päeva}} pärast.",
"user_delete_delay_settings": "Kustutamise viivitus", "user_delete_delay_settings": "Kustutamise viivitus",
@@ -390,6 +396,8 @@
"advanced_settings_prefer_remote_title": "Eelista kaugpilte", "advanced_settings_prefer_remote_title": "Eelista kaugpilte",
"advanced_settings_proxy_headers_subtitle": "Määra vaheserveri päised, mida Immich peaks iga päringuga saatma", "advanced_settings_proxy_headers_subtitle": "Määra vaheserveri päised, mida Immich peaks iga päringuga saatma",
"advanced_settings_proxy_headers_title": "Vaheserveri päised", "advanced_settings_proxy_headers_title": "Vaheserveri päised",
"advanced_settings_readonly_mode_subtitle": "Lülitab sisse kirjutuskaitserežiimi, milles saab fotosid ainult vaadata ning toimingud nagu mitme pildi valimine, jagamine, edastamine ja kustutamine on keelatud. Lülita kirjutuskaitserežiim sisse/välja põhiekraanil oleva avatari kaudu",
"advanced_settings_readonly_mode_title": "Kirjutuskaitserežiim",
"advanced_settings_self_signed_ssl_subtitle": "Jätab serveri lõpp-punkti SSL-sertifikaadi kontrolli vahele. Nõutud endasigneeritud sertifikaatide jaoks.", "advanced_settings_self_signed_ssl_subtitle": "Jätab serveri lõpp-punkti SSL-sertifikaadi kontrolli vahele. Nõutud endasigneeritud sertifikaatide jaoks.",
"advanced_settings_self_signed_ssl_title": "Luba endasigneeritud SSL-sertifikaadid", "advanced_settings_self_signed_ssl_title": "Luba endasigneeritud SSL-sertifikaadid",
"advanced_settings_sync_remote_deletions_subtitle": "Kustuta või taasta üksus selles seadmes automaatself, kui sama tegevus toimub veebis", "advanced_settings_sync_remote_deletions_subtitle": "Kustuta või taasta üksus selles seadmes automaatself, kui sama tegevus toimub veebis",
@@ -455,6 +463,7 @@
"app_bar_signout_dialog_title": "Logi välja", "app_bar_signout_dialog_title": "Logi välja",
"app_settings": "Rakenduse seaded", "app_settings": "Rakenduse seaded",
"appears_in": "Albumid", "appears_in": "Albumid",
"apply_count": "Rakenda ({count, number})",
"archive": "Arhiiv", "archive": "Arhiiv",
"archive_action_prompt": "{count} lisatud arhiivi", "archive_action_prompt": "{count} lisatud arhiivi",
"archive_or_unarchive_photo": "Arhiveeri või taasta foto", "archive_or_unarchive_photo": "Arhiveeri või taasta foto",
@@ -494,7 +503,9 @@
"assets": "Üksused", "assets": "Üksused",
"assets_added_count": "{count, plural, one {# üksus} other {# üksust}} lisatud", "assets_added_count": "{count, plural, one {# üksus} other {# üksust}} lisatud",
"assets_added_to_album_count": "{count, plural, one {# üksus} other {# üksust}} albumisse lisatud", "assets_added_to_album_count": "{count, plural, one {# üksus} other {# üksust}} albumisse lisatud",
"assets_added_to_albums_count": "{assetTotal, plural, one {# üksus} other {# üksust}} lisatud {albumTotal, plural, one {# albumisse} other {# albumisse}}",
"assets_cannot_be_added_to_album_count": "{count, plural, one {Üksust} other {Üksuseid}} ei saa albumisse lisada", "assets_cannot_be_added_to_album_count": "{count, plural, one {Üksust} other {Üksuseid}} ei saa albumisse lisada",
"assets_cannot_be_added_to_albums": "{count, plural, one {Üksust} other {Üksuseid}} ei saa lisada ühtegi albumisse",
"assets_count": "{count, plural, one {# üksus} other {# üksust}}", "assets_count": "{count, plural, one {# üksus} other {# üksust}}",
"assets_deleted_permanently": "{count} üksus(t) jäädavalt kustutatud", "assets_deleted_permanently": "{count} üksus(t) jäädavalt kustutatud",
"assets_deleted_permanently_from_server": "{count} üksus(t) Immich'i serverist jäädavalt kustutatud", "assets_deleted_permanently_from_server": "{count} üksus(t) Immich'i serverist jäädavalt kustutatud",
@@ -511,6 +522,7 @@
"assets_trashed_count": "{count, plural, one {# üksus} other {# üksust}} liigutatud prügikasti", "assets_trashed_count": "{count, plural, one {# üksus} other {# üksust}} liigutatud prügikasti",
"assets_trashed_from_server": "{count} üksus(t) liigutatud Immich'i serveris prügikasti", "assets_trashed_from_server": "{count} üksus(t) liigutatud Immich'i serveris prügikasti",
"assets_were_part_of_album_count": "{count, plural, one {Üksus oli} other {Üksused olid}} juba osa albumist", "assets_were_part_of_album_count": "{count, plural, one {Üksus oli} other {Üksused olid}} juba osa albumist",
"assets_were_part_of_albums_count": "{count, plural, one {Üksus oli} other {Üksused olid}} juba nendes albumites",
"authorized_devices": "Autoriseeritud seadmed", "authorized_devices": "Autoriseeritud seadmed",
"automatic_endpoint_switching_subtitle": "Ühendu lokaalselt üle valitud WiFi-võrgu, kui see on saadaval, ja kasuta mujal alternatiivseid ühendusi", "automatic_endpoint_switching_subtitle": "Ühendu lokaalselt üle valitud WiFi-võrgu, kui see on saadaval, ja kasuta mujal alternatiivseid ühendusi",
"automatic_endpoint_switching_title": "Automaatne URL-i ümberlülitamine", "automatic_endpoint_switching_title": "Automaatne URL-i ümberlülitamine",
@@ -580,8 +592,10 @@
"backup_manual_in_progress": "Üleslaadimine juba käib. Proovi hiljem uuesti", "backup_manual_in_progress": "Üleslaadimine juba käib. Proovi hiljem uuesti",
"backup_manual_success": "Õnnestus", "backup_manual_success": "Õnnestus",
"backup_manual_title": "Üleslaadimise staatus", "backup_manual_title": "Üleslaadimise staatus",
"backup_options": "Varunduse valikud",
"backup_options_page_title": "Varundamise valikud", "backup_options_page_title": "Varundamise valikud",
"backup_setting_subtitle": "Halda taustal ja esiplaanil üleslaadimise seadeid", "backup_setting_subtitle": "Halda taustal ja esiplaanil üleslaadimise seadeid",
"backup_settings_subtitle": "Halda üleslaadimise seadeid",
"backward": "Tagasi", "backward": "Tagasi",
"beta_sync": "Beeta sünkroonimise staatus", "beta_sync": "Beeta sünkroonimise staatus",
"beta_sync_subtitle": "Halda uut sünkroonimissüsteemi", "beta_sync_subtitle": "Halda uut sünkroonimissüsteemi",
@@ -651,6 +665,7 @@
"clear": "Tühjenda", "clear": "Tühjenda",
"clear_all": "Tühjenda kõik", "clear_all": "Tühjenda kõik",
"clear_all_recent_searches": "Tühjenda hiljutised otsingud", "clear_all_recent_searches": "Tühjenda hiljutised otsingud",
"clear_file_cache": "Tühjenda failipuhver",
"clear_message": "Tühjenda sõnum", "clear_message": "Tühjenda sõnum",
"clear_value": "Tühjenda väärtus", "clear_value": "Tühjenda väärtus",
"client_cert_dialog_msg_confirm": "OK", "client_cert_dialog_msg_confirm": "OK",
@@ -721,6 +736,7 @@
"create_new_user": "Lisa uus kasutaja", "create_new_user": "Lisa uus kasutaja",
"create_shared_album_page_share_add_assets": "LISA ÜKSUSEID", "create_shared_album_page_share_add_assets": "LISA ÜKSUSEID",
"create_shared_album_page_share_select_photos": "Vali fotod", "create_shared_album_page_share_select_photos": "Vali fotod",
"create_shared_link": "Loo jagatud link",
"create_tag": "Lisa silt", "create_tag": "Lisa silt",
"create_tag_description": "Lisa uus silt. Pesastatud siltide jaoks sisesta täielik tee koos kaldkriipsudega.", "create_tag_description": "Lisa uus silt. Pesastatud siltide jaoks sisesta täielik tee koos kaldkriipsudega.",
"create_user": "Lisa kasutaja", "create_user": "Lisa kasutaja",
@@ -745,6 +761,7 @@
"date_of_birth_saved": "Sünnikuupäev salvestatud", "date_of_birth_saved": "Sünnikuupäev salvestatud",
"date_range": "Kuupäevavahemik", "date_range": "Kuupäevavahemik",
"day": "Päev", "day": "Päev",
"days": "Päeva",
"deduplicate_all": "Dedubleeri kõik", "deduplicate_all": "Dedubleeri kõik",
"deduplication_criteria_1": "Pildi suurus baitides", "deduplication_criteria_1": "Pildi suurus baitides",
"deduplication_criteria_2": "EXIF andmete hulk", "deduplication_criteria_2": "EXIF andmete hulk",
@@ -832,6 +849,9 @@
"edit_birthday": "Muuda sünnipäeva", "edit_birthday": "Muuda sünnipäeva",
"edit_date": "Muuda kuupäeva", "edit_date": "Muuda kuupäeva",
"edit_date_and_time": "Muuda kuupäeva ja kellaaega", "edit_date_and_time": "Muuda kuupäeva ja kellaaega",
"edit_date_and_time_action_prompt": "{count} päev ja kellaaeg muudetud",
"edit_date_and_time_by_offset": "Nihuta kuupäeva",
"edit_date_and_time_by_offset_interval": "Uus kuupäevavahemik: {from} - {to}",
"edit_description": "Muuda kirjeldust", "edit_description": "Muuda kirjeldust",
"edit_description_prompt": "Palun vali uus kirjeldus:", "edit_description_prompt": "Palun vali uus kirjeldus:",
"edit_exclusion_pattern": "Muuda välistamismustrit", "edit_exclusion_pattern": "Muuda välistamismustrit",
@@ -904,6 +924,7 @@
"failed_to_load_notifications": "Teavituste laadimine ebaõnnestus", "failed_to_load_notifications": "Teavituste laadimine ebaõnnestus",
"failed_to_load_people": "Isikute laadimine ebaõnnestus", "failed_to_load_people": "Isikute laadimine ebaõnnestus",
"failed_to_remove_product_key": "Tootevõtme eemaldamine ebaõnnestus", "failed_to_remove_product_key": "Tootevõtme eemaldamine ebaõnnestus",
"failed_to_reset_pin_code": "PIN-koodi lähestamine ebaõnnestus",
"failed_to_stack_assets": "Üksuste virnastamine ebaõnnestus", "failed_to_stack_assets": "Üksuste virnastamine ebaõnnestus",
"failed_to_unstack_assets": "Üksuste eraldamine ebaõnnestus", "failed_to_unstack_assets": "Üksuste eraldamine ebaõnnestus",
"failed_to_update_notification_status": "Teavituste seisundi uuendamine ebaõnnestus", "failed_to_update_notification_status": "Teavituste seisundi uuendamine ebaõnnestus",
@@ -912,6 +933,7 @@
"paths_validation_failed": "{paths, plural, one {# tee} other {# teed}} ei valideerunud", "paths_validation_failed": "{paths, plural, one {# tee} other {# teed}} ei valideerunud",
"profile_picture_transparent_pixels": "Profiilipildis ei tohi olla läbipaistvaid piksleid. Palun suumi sisse ja/või liiguta pilti.", "profile_picture_transparent_pixels": "Profiilipildis ei tohi olla läbipaistvaid piksleid. Palun suumi sisse ja/või liiguta pilti.",
"quota_higher_than_disk_size": "Määratud kvoot on suurem kui kettamaht", "quota_higher_than_disk_size": "Määratud kvoot on suurem kui kettamaht",
"something_went_wrong": "Midagi läks valesti",
"unable_to_add_album_users": "Kasutajate lisamine albumisse ebaõnnestus", "unable_to_add_album_users": "Kasutajate lisamine albumisse ebaõnnestus",
"unable_to_add_assets_to_shared_link": "Üksuste jagatud lingile lisamine ebaõnnestus", "unable_to_add_assets_to_shared_link": "Üksuste jagatud lingile lisamine ebaõnnestus",
"unable_to_add_comment": "Kommentaari lisamine ebaõnnestus", "unable_to_add_comment": "Kommentaari lisamine ebaõnnestus",
@@ -1002,9 +1024,6 @@
"exif_bottom_sheet_location": "ASUKOHT", "exif_bottom_sheet_location": "ASUKOHT",
"exif_bottom_sheet_people": "ISIKUD", "exif_bottom_sheet_people": "ISIKUD",
"exif_bottom_sheet_person_add_person": "Lisa nimi", "exif_bottom_sheet_person_add_person": "Lisa nimi",
"exif_bottom_sheet_person_age_months": "Vanus {months} kuud",
"exif_bottom_sheet_person_age_year_months": "Vanus 1 aasta, {months} kuud",
"exif_bottom_sheet_person_age_years": "Vanus {years}",
"exit_slideshow": "Sulge slaidiesitlus", "exit_slideshow": "Sulge slaidiesitlus",
"expand_all": "Näita kõik", "expand_all": "Näita kõik",
"experimental_settings_new_asset_list_subtitle": "Töös", "experimental_settings_new_asset_list_subtitle": "Töös",
@@ -1046,21 +1065,29 @@
"filter_people": "Filtreeri isikuid", "filter_people": "Filtreeri isikuid",
"filter_places": "Filtreeri kohti", "filter_places": "Filtreeri kohti",
"find_them_fast": "Leia teda kiiresti nime järgi otsides", "find_them_fast": "Leia teda kiiresti nime järgi otsides",
"first": "Esimene",
"fix_incorrect_match": "Paranda ebaõige vaste", "fix_incorrect_match": "Paranda ebaõige vaste",
"folder": "Kaust", "folder": "Kaust",
"folder_not_found": "Kausta ei leitud", "folder_not_found": "Kausta ei leitud",
"folders": "Kaustad", "folders": "Kaustad",
"folders_feature_description": "Kaustavaate abil failisüsteemis olevate fotode ja videote sirvimine", "folders_feature_description": "Kaustavaate abil failisüsteemis olevate fotode ja videote sirvimine",
"forgot_pin_code_question": "Unustasid oma PIN-koodi?",
"forward": "Edasi", "forward": "Edasi",
"gcast_enabled": "Google Cast", "gcast_enabled": "Google Cast",
"gcast_enabled_description": "See funktsionaalsus laadib töötamiseks Google'st väliseid ressursse.", "gcast_enabled_description": "See funktsionaalsus laadib töötamiseks Google'st väliseid ressursse.",
"general": "Üldine", "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_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", "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", "getting_started": "Alustamine",
"go_back": "Tagasi", "go_back": "Tagasi",
"go_to_folder": "Mine kausta", "go_to_folder": "Mine kausta",
"go_to_search": "Otsingusse", "go_to_search": "Otsingusse",
"gps": "GPS",
"gps_missing": "GPS puudub",
"grant_permission": "Anna luba", "grant_permission": "Anna luba",
"group_albums_by": "Grupeeri albumid...", "group_albums_by": "Grupeeri albumid...",
"group_country": "Grupeeri riigi kaupa", "group_country": "Grupeeri riigi kaupa",
@@ -1105,6 +1132,7 @@
"home_page_upload_err_limit": "Korraga saab üles laadida ainult 30 üksust, jäetakse vahele", "home_page_upload_err_limit": "Korraga saab üles laadida ainult 30 üksust, jäetakse vahele",
"host": "Host", "host": "Host",
"hour": "Tund", "hour": "Tund",
"hours": "Tundi",
"id": "ID", "id": "ID",
"idle": "Jõude", "idle": "Jõude",
"ignore_icloud_photos": "Ignoreeri iCloud fotosid", "ignore_icloud_photos": "Ignoreeri iCloud fotosid",
@@ -1165,10 +1193,12 @@
"language_search_hint": "Otsi keeli...", "language_search_hint": "Otsi keeli...",
"language_setting_description": "Vali oma eelistatud keel", "language_setting_description": "Vali oma eelistatud keel",
"large_files": "Suured failid", "large_files": "Suured failid",
"last": "Viimane",
"last_seen": "Viimati nähtud", "last_seen": "Viimati nähtud",
"latest_version": "Uusim versioon", "latest_version": "Uusim versioon",
"latitude": "Laiuskraad", "latitude": "Laiuskraad",
"leave": "Lahku", "leave": "Lahku",
"leave_album": "Lahku albumist",
"lens_model": "Läätse mudel", "lens_model": "Läätse mudel",
"let_others_respond": "Luba teistel vastata", "let_others_respond": "Luba teistel vastata",
"level": "Tase", "level": "Tase",
@@ -1182,6 +1212,7 @@
"library_page_sort_title": "Albumi pealkiri", "library_page_sort_title": "Albumi pealkiri",
"licenses": "Litsentsid", "licenses": "Litsentsid",
"light": "Hele", "light": "Hele",
"like": "Meeldib",
"like_deleted": "Meeldimine kustutatud", "like_deleted": "Meeldimine kustutatud",
"link_motion_video": "Lingi liikuv video", "link_motion_video": "Lingi liikuv video",
"link_to_oauth": "Ühenda OAuth", "link_to_oauth": "Ühenda OAuth",
@@ -1240,6 +1271,7 @@
"main_branch_warning": "Sa kasutad arendusversiooni; soovitame tungivalt kasutada väljalaskeversiooni!", "main_branch_warning": "Sa kasutad arendusversiooni; soovitame tungivalt kasutada väljalaskeversiooni!",
"main_menu": "Peamenüü", "main_menu": "Peamenüü",
"make": "Mark", "make": "Mark",
"manage_geolocation": "Halda asukohta",
"manage_shared_links": "Halda jagatud linke", "manage_shared_links": "Halda jagatud linke",
"manage_sharing_with_partners": "Halda partneritega jagamist", "manage_sharing_with_partners": "Halda partneritega jagamist",
"manage_the_app_settings": "Halda rakenduse seadeid", "manage_the_app_settings": "Halda rakenduse seadeid",
@@ -1248,7 +1280,7 @@
"manage_your_devices": "Halda oma autenditud seadmeid", "manage_your_devices": "Halda oma autenditud seadmeid",
"manage_your_oauth_connection": "Halda oma OAuth ühendust", "manage_your_oauth_connection": "Halda oma OAuth ühendust",
"map": "Kaart", "map": "Kaart",
"map_assets_in_bounds": "{count, plural, one {# foto} other {# fotot}}", "map_assets_in_bounds": "{count, plural, =0 {Selles piirkonnas fotosid pole} one {# foto} other {# fotot}}",
"map_cannot_get_user_location": "Ei saa kasutaja asukohta tuvastada", "map_cannot_get_user_location": "Ei saa kasutaja asukohta tuvastada",
"map_location_dialog_yes": "Jah", "map_location_dialog_yes": "Jah",
"map_location_picker_page_use_location": "Kasuta seda asukohta", "map_location_picker_page_use_location": "Kasuta seda asukohta",
@@ -1256,7 +1288,6 @@
"map_location_service_disabled_title": "Asukoha teenus keelatud", "map_location_service_disabled_title": "Asukoha teenus keelatud",
"map_marker_for_images": "Kaardimarker kohas {city}, {country} tehtud piltide jaoks", "map_marker_for_images": "Kaardimarker kohas {city}, {country} tehtud piltide jaoks",
"map_marker_with_image": "Kaardimarker pildiga", "map_marker_with_image": "Kaardimarker pildiga",
"map_no_assets_in_bounds": "Selles piirkonnas ei ole fotosid",
"map_no_location_permission_content": "Praeguse asukoha üksuste kuvamiseks on vaja asukoha luba. Kas soovid seda praegu lubada?", "map_no_location_permission_content": "Praeguse asukoha üksuste kuvamiseks on vaja asukoha luba. Kas soovid seda praegu lubada?",
"map_no_location_permission_title": "Asukoha luba keelatud", "map_no_location_permission_title": "Asukoha luba keelatud",
"map_settings": "Kaardi seaded", "map_settings": "Kaardi seaded",
@@ -1293,6 +1324,7 @@
"merged_people_count": "Ühendatud {count, plural, one {# isik} other {# isikut}}", "merged_people_count": "Ühendatud {count, plural, one {# isik} other {# isikut}}",
"minimize": "Minimeeri", "minimize": "Minimeeri",
"minute": "Minut", "minute": "Minut",
"minutes": "Minutit",
"missing": "Puuduvad", "missing": "Puuduvad",
"model": "Mudel", "model": "Mudel",
"month": "Kuu", "month": "Kuu",
@@ -1312,6 +1344,9 @@
"my_albums": "Minu albumid", "my_albums": "Minu albumid",
"name": "Nimi", "name": "Nimi",
"name_or_nickname": "Nimi või hüüdnimi", "name_or_nickname": "Nimi või hüüdnimi",
"network_requirement_photos_upload": "Kasuta fotode varundamiseks mobiilset andmesidet",
"network_requirement_videos_upload": "Kasuta videote varundamiseks mobiilset andmesidet",
"network_requirements_updated": "Võrgu nõuded muutusid, varundamise järjekord lähtestatakse",
"networking_settings": "Võrguühendus", "networking_settings": "Võrguühendus",
"networking_subtitle": "Halda serveri lõpp-punkti seadeid", "networking_subtitle": "Halda serveri lõpp-punkti seadeid",
"never": "Mitte kunagi", "never": "Mitte kunagi",
@@ -1363,6 +1398,7 @@
"oauth": "OAuth", "oauth": "OAuth",
"official_immich_resources": "Ametlikud Immich'i ressursid", "official_immich_resources": "Ametlikud Immich'i ressursid",
"offline": "Ühendus puudub", "offline": "Ühendus puudub",
"offset": "Nihe",
"ok": "OK", "ok": "OK",
"oldest_first": "Vanemad eespool", "oldest_first": "Vanemad eespool",
"on_this_device": "Sellel seadmel", "on_this_device": "Sellel seadmel",
@@ -1381,6 +1417,8 @@
"open_the_search_filters": "Ava otsingufiltrid", "open_the_search_filters": "Ava otsingufiltrid",
"options": "Valikud", "options": "Valikud",
"or": "või", "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", "organize_your_library": "Korrasta oma kogu",
"original": "originaal", "original": "originaal",
"other": "Muud", "other": "Muud",
@@ -1440,6 +1478,9 @@
"permission_onboarding_permission_limited": "Piiratud luba. Et Immich saaks tervet su galeriid varundada ja hallata, anna Seadetes luba fotodele ja videotele.", "permission_onboarding_permission_limited": "Piiratud luba. Et Immich saaks tervet su galeriid varundada ja hallata, anna Seadetes luba fotodele ja videotele.",
"permission_onboarding_request": "Immich'il on vaja luba su fotode ja videote vaatamiseks.", "permission_onboarding_request": "Immich'il on vaja luba su fotode ja videote vaatamiseks.",
"person": "Isik", "person": "Isik",
"person_age_months": "{months, plural, one {# kuu} other {# kuud}} vana",
"person_age_year_months": "1 aasta {months, plural, one {# kuu} other {# kuud}} vana",
"person_age_years": "{years, plural, other {# aastat}} vana",
"person_birthdate": "Sündinud {date}", "person_birthdate": "Sündinud {date}",
"person_hidden": "{name}{hidden, select, true { (peidetud)} other {}}", "person_hidden": "{name}{hidden, select, true { (peidetud)} other {}}",
"photo_shared_all_users": "Paistab, et oled oma fotosid kõigi kasutajatega jaganud, või pole ühtegi kasutajat, kellega jagada.", "photo_shared_all_users": "Paistab, et oled oma fotosid kõigi kasutajatega jaganud, või pole ühtegi kasutajat, kellega jagada.",
@@ -1479,6 +1520,7 @@
"profile_drawer_client_out_of_date_minor": "Mobiilirakendus on aegunud. Palun uuenda uusimale väikesele versioonile.", "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_client_server_up_to_date": "Klient ja server on uuendatud",
"profile_drawer_github": "GitHub", "profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Kirjutuskaitserežiim sisse lülitatud. Väljumiseks topeltpuuduta avatari ikooni.",
"profile_drawer_server_out_of_date_major": "Server on aegunud. Palun uuenda uusimale suurele versioonile.", "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_drawer_server_out_of_date_minor": "Server on aegunud. Palun uuenda uusimale väikesele versioonile.",
"profile_image_of_user": "Kasutaja {user} profiilipilt", "profile_image_of_user": "Kasutaja {user} profiilipilt",
@@ -1524,6 +1566,8 @@
"rating_description": "Kuva infopaneelis EXIF hinnangut", "rating_description": "Kuva infopaneelis EXIF hinnangut",
"reaction_options": "Reaktsiooni valikud", "reaction_options": "Reaktsiooni valikud",
"read_changelog": "Vaata muudatuste ülevaadet", "read_changelog": "Vaata muudatuste ülevaadet",
"readonly_mode_disabled": "Kirjutuskaitserežiim välja lülitatud",
"readonly_mode_enabled": "Kirjutuskaitserežiim sisse lülitatud",
"reassign": "Määra uuesti", "reassign": "Määra uuesti",
"reassigned_assets_to_existing_person": "{count, plural, one {# üksus} other {# üksust}} seostatud {name, select, null {olemasoleva isikuga} other {isikuga {name}}}", "reassigned_assets_to_existing_person": "{count, plural, one {# üksus} other {# üksust}} seostatud {name, select, null {olemasoleva isikuga} other {isikuga {name}}}",
"reassigned_assets_to_new_person": "{count, plural, one {# üksus} other {# üksust}} seostatud uue isikuga", "reassigned_assets_to_new_person": "{count, plural, one {# üksus} other {# üksust}} seostatud uue isikuga",
@@ -1585,6 +1629,9 @@
"reset_password": "Lähtesta parool", "reset_password": "Lähtesta parool",
"reset_people_visibility": "Lähtesta isikute nähtavus", "reset_people_visibility": "Lähtesta isikute nähtavus",
"reset_pin_code": "Lähtesta PIN-kood", "reset_pin_code": "Lähtesta PIN-kood",
"reset_pin_code_description": "Kui unustasid oma PIN-koodi, võta selle lähtestamiseks ühendust serveri administraatoriga",
"reset_pin_code_success": "PIN-kood edukalt lähtestatud",
"reset_pin_code_with_password": "Saad oma PIN-koodi alati oma parooli abil lähtestada",
"reset_sqlite": "Lähtesta SQLite andmebaas", "reset_sqlite": "Lähtesta SQLite andmebaas",
"reset_sqlite_confirmation": "Kas oled kindel, et soovid SQLite andmebaasi lähtestada? Andmete uuesti sünkroonimiseks pead välja ja jälle sisse logima", "reset_sqlite_confirmation": "Kas oled kindel, et soovid SQLite andmebaasi lähtestada? Andmete uuesti sünkroonimiseks pead välja ja jälle sisse logima",
"reset_sqlite_success": "SQLite andmebaas edukalt lähtestatud", "reset_sqlite_success": "SQLite andmebaas edukalt lähtestatud",
@@ -1690,6 +1737,7 @@
"select_user_for_sharing_page_err_album": "Albumi lisamine ebaõnnestus", "select_user_for_sharing_page_err_album": "Albumi lisamine ebaõnnestus",
"selected": "Valitud", "selected": "Valitud",
"selected_count": "{count, plural, other {# valitud}}", "selected_count": "{count, plural, other {# valitud}}",
"selected_gps_coordinates": "Valitud GPS-koordinaadid",
"send_message": "Saada sõnum", "send_message": "Saada sõnum",
"send_welcome_email": "Saada tervituskiri", "send_welcome_email": "Saada tervituskiri",
"server_endpoint": "Serveri lõpp-punkt", "server_endpoint": "Serveri lõpp-punkt",
@@ -1800,8 +1848,10 @@
"shift_to_permanent_delete": "vajuta ⇧, et üksus jäädavalt kustutada", "shift_to_permanent_delete": "vajuta ⇧, et üksus jäädavalt kustutada",
"show_album_options": "Näita albumi valikuid", "show_album_options": "Näita albumi valikuid",
"show_albums": "Näita albumeid", "show_albums": "Näita albumeid",
"show_all_assets": "Kuva kõik üksused",
"show_all_people": "Näita kõiki isikuid", "show_all_people": "Näita kõiki isikuid",
"show_and_hide_people": "Näita ja peida 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_file_location": "Näita faili asukohta",
"show_gallery": "Näita galeriid", "show_gallery": "Näita galeriid",
"show_hidden_people": "Kuva peidetud inimesed", "show_hidden_people": "Kuva peidetud inimesed",
@@ -1833,6 +1883,7 @@
"sort_created": "Loomise aeg", "sort_created": "Loomise aeg",
"sort_items": "Üksuste arv", "sort_items": "Üksuste arv",
"sort_modified": "Muutmise aeg", "sort_modified": "Muutmise aeg",
"sort_newest": "Uusim foto",
"sort_oldest": "Vanim foto", "sort_oldest": "Vanim foto",
"sort_people_by_similarity": "Sorteeri isikud sarnasuse järgi", "sort_people_by_similarity": "Sorteeri isikud sarnasuse järgi",
"sort_recent": "Uusim foto", "sort_recent": "Uusim foto",
@@ -1958,6 +2009,7 @@
"unstacked_assets_count": "{count, plural, one {# üksus} other {# üksust}} eraldatud", "unstacked_assets_count": "{count, plural, one {# üksus} other {# üksust}} eraldatud",
"untagged": "Sildistamata", "untagged": "Sildistamata",
"up_next": "Järgmine", "up_next": "Järgmine",
"update_location_action_prompt": "Uuenda {count} valitud üksuse asukoht:",
"updated_at": "Uuendatud", "updated_at": "Uuendatud",
"updated_password": "Parool muudetud", "updated_password": "Parool muudetud",
"upload": "Laadi üles", "upload": "Laadi üles",
@@ -1982,6 +2034,7 @@
"use_biometric": "Kasuta biomeetriat", "use_biometric": "Kasuta biomeetriat",
"use_current_connection": "kasuta praegust ühendust", "use_current_connection": "kasuta praegust ühendust",
"use_custom_date_range": "Kasuta kohandatud kuupäevavahemikku", "use_custom_date_range": "Kasuta kohandatud kuupäevavahemikku",
"use_this_location": "Klõpsa asukoha kasutamiseks",
"user": "Kasutaja", "user": "Kasutaja",
"user_has_been_deleted": "See kasutaja on kustutatud.", "user_has_been_deleted": "See kasutaja on kustutatud.",
"user_id": "Kasutaja ID", "user_id": "Kasutaja ID",
@@ -2024,6 +2077,7 @@
"view_next_asset": "Vaata järgmist üksust", "view_next_asset": "Vaata järgmist üksust",
"view_previous_asset": "Vaata eelmist üksust", "view_previous_asset": "Vaata eelmist üksust",
"view_qr_code": "Vaata QR-koodi", "view_qr_code": "Vaata QR-koodi",
"view_similar_photos": "Vaata sarnaseid fotosid",
"view_stack": "Vaata virna", "view_stack": "Vaata virna",
"view_user": "Vaata kasutajat", "view_user": "Vaata kasutajat",
"viewer_remove_from_stack": "Eemalda virnast", "viewer_remove_from_stack": "Eemalda virnast",

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