Compare commits

...

224 Commits

Author SHA1 Message Date
mertalev
7ba458668b remove upload-length from conventional upload e2e 2025-11-06 12:15:54 -05:00
mertalev
ea034f21bc linting 2025-11-06 12:15:54 -05:00
mertalev
a68513247d redundant check 2025-11-06 12:15:54 -05:00
mertalev
59f7f3c23e update api 2025-11-06 12:15:54 -05:00
mertalev
c88bde3cab lint 2025-11-06 12:15:54 -05:00
mertalev
818bd51036 support conventional uploads 2025-11-06 12:15:54 -05:00
mertalev
3c72409712 require header for incomplete uploads 2025-11-06 12:15:54 -05:00
mertalev
8d1a8b9465 reject empty file 2025-11-06 12:15:54 -05:00
mertalev
d880e7baed infer upload length when possible 2025-11-06 12:15:54 -05:00
mertalev
42801ace35 update api 2025-11-06 12:15:54 -05:00
mertalev
838b8e9126 set max-age limit 2025-11-06 12:15:19 -05:00
mertalev
9da5a48bdd add live photo e2e 2025-11-06 12:15:19 -05:00
mertalev
27f126bd58 better abort check 2025-11-06 12:15:19 -05:00
mertalev
a238c6a70d unnecessary change 2025-11-06 12:15:19 -05:00
mertalev
7222d7af30 configurable cleanup 2025-11-06 12:15:19 -05:00
mertalev
d660ab2218 handle live photos 2025-11-06 12:13:33 -05:00
mertalev
69ffbcd5cf tweak types 2025-11-06 12:13:33 -05:00
mertalev
bc84486668 MUST NOT validation 2025-11-06 12:13:33 -05:00
mertalev
2666ee2b4f remove log 2025-11-06 12:12:27 -05:00
mertalev
72ea7799c0 lint 2025-11-06 12:12:27 -05:00
mertalev
98c8c28b62 test interruption + abort 2025-11-06 12:12:27 -05:00
mertalev
6b1d26d3a2 more content length test inputs 2025-11-06 12:12:27 -05:00
mertalev
5e07976288 fix abortion return 2025-11-06 12:12:27 -05:00
mertalev
3f1133f9b7 typo 2025-11-06 12:12:27 -05:00
mertalev
3a087ed2cd proactive abortion 2025-11-06 12:12:27 -05:00
mertalev
c723a9ac78 better content length handling 2025-11-06 12:09:27 -05:00
mertalev
550460891d add timeout 2025-11-06 12:09:27 -05:00
mertalev
e3e8da168f tidying 2025-11-06 12:09:27 -05:00
mertalev
de117ebe7a listen to upload event in e2e
test resume with real image
2025-11-06 12:09:27 -05:00
mertalev
3d507015e0 add service tests 2025-11-06 12:09:26 -05:00
mertalev
fe71662d24 add controller tests, move validation testing from e2e
revert unnecessary change

update mocks

add structured-headers to e2e deps
2025-11-06 12:09:26 -05:00
mertalev
81a66350f6 add note about RFC 9651
authdto

remove excess logs

use structured dictionary
2025-11-06 12:07:34 -05:00
mertalev
c33e65362a clean up stale uploads
stale upload cleanup

try/catch file check
2025-11-06 12:07:34 -05:00
mertalev
bb5519036a unnecessary quota check 2025-11-06 12:07:34 -05:00
mertalev
177c997d96 interim+500
interim+500

interim+500
2025-11-06 12:07:34 -05:00
mertalev
2d6a2dc77b more e2e tests
consistent e2e sections

decrement quota on cancel
2025-11-06 12:07:34 -05:00
mertalev
e193cb3a5b tweaks
shared pipe method

shared pipe method

require size upfront

make length optional for patch requests
2025-11-06 12:07:34 -05:00
mertalev
4b63d3d055 ensure stream is closed before releasing lock 2025-11-06 12:07:34 -05:00
mertalev
4ed92f5df5 dto refactor
add logging

handle metadata
2025-11-06 12:07:34 -05:00
mertalev
6f61bf04e4 backward compatibility 2025-11-06 12:07:34 -05:00
mertalev
b21d0a1c53 working e2e 2025-11-06 12:07:34 -05:00
mertalev
f80326872e interop v8 compliance 2025-11-06 12:07:34 -05:00
mertalev
7561c5e1c4 chunked upload controller 2025-11-06 12:05:56 -05:00
Snowknight26
2c50f2e244 fix(web): add URLs to results in large files utility (#23617)
fix(web): add URLs to results in large files
2025-11-06 09:24:47 -05:00
shenlong
365abd8906 fix: check if unmetered instead of wifi (#23380)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-11-05 13:27:38 -06:00
Alex
25fb43bbe3 fix: fully sync local library on app restart (#23323) 2025-11-05 14:09:50 +00:00
bo0tzz
125e8cee01 chore: update config.json example (#23471)
* chore: update config.json example

closes #23465

* fix: format, for real this time
2025-11-05 08:05:53 -06:00
Arnaud Wery
c15e9bfa72 fix(web): "select all" button in trash and permanently deleted count (#23594) 2025-11-05 14:05:48 +00:00
Dmitry
35e188e6e7 docs: sync ru docs with main README.md (#23627) 2025-11-05 08:05:03 -06:00
Sergey Katsubo
3cc9dd126c fix(web): fix timezone dropdown for timestamps lacking milliseconds (#23615)
Fix timezone selector for timestamps without milliseconds
2025-11-05 08:03:55 -06:00
Jason Rasmussen
aa69d89b9f fix: bad merge (#23610) 2025-11-04 16:22:45 -05:00
Jason Rasmussen
29c14a3f58 refactor: database column names (#23356) 2025-11-04 16:03:21 -05:00
Jason Rasmussen
0df70365d7 feat: exif medium tests (#23561) 2025-11-04 16:03:02 -05:00
Mees Frensel
c34be73d81 fix(web): consistently use mdiMotionPauseOutline icon (#23595) 2025-11-04 12:12:47 +01:00
renovate[bot]
f396e9e374 chore(deps): update prom/prometheus docker digest to 4921475 (#23578)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 11:49:12 +01:00
renovate[bot]
821a9d4691 chore(deps): update redis:6.2-alpine docker digest to 37e0024 (#23579)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 11:48:21 +01:00
renovate[bot]
cad654586f chore(deps): update dependency @types/node to ^22.18.13 (#23581)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 11:47:54 +01:00
github-actions
28eb1bc13c chore: version v2.2.3 2025-11-04 03:14:34 +00:00
Brandon Wees
1e4779cf48 fix(mobile): ignore patch releases for app version alerts (#23565)
* fix(mobile): ignore patch releases for app version alerts

* chore: make difference type nullable to indicate when versions match

* chore: add error handling for semver parsing

* chore: tests
2025-11-03 21:09:32 -06:00
Sergey Katsubo
0647c22956 fix(mobile): handle empty original filename (#23469)
* Handle empty original filename

* Handle TypeError from photo_manager titleAsync

* More compact exception log
2025-11-03 21:09:18 -06:00
Alex
b8087b4fa2 chore: ios prod build with correct argument, get version number from pubspec (#23554)
* chore: ios prod build with correct argument, get version number from pubspec

* Update mobile/ios/fastlane/Fastfile

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

---------

Co-authored-by: bo0tzz <git@bo0tzz.me>
2025-11-03 10:11:11 -06:00
Jonathan S
d94cb9641b chore: correct hosted isar paths in fdroid_build_isar.sh (#23529)
This should hopefully unblock F-Droid builds, which are a few versions behind.

Based on the suggestion in https://github.com/immich-app/immich/pull/22757#issuecomment-3404516987
2025-11-03 08:35:56 -06:00
Daniel Dietzler
517c3e1d4c fix: exif gps parsing of malformed data (#23551)
* fix: exif gps parsing of malformed data

* chore: e2e test
2025-11-03 09:02:41 -05:00
Ben
619de2a5e4 fix(web): search bar accessibility (#23550)
* fix: always show search type when search bar is focused

* fix: indicate search type to screen reader users
2025-11-03 08:31:57 -05:00
Mert
79d0e3e1ed fix(ml): ocr inputs not resized correctly (#23541)
* fix resizing, use pillow

* unused import

* linting

* lanczos

* optimizations

fused operations

unused import
2025-11-03 07:21:30 +00:00
github-actions
f5ff36a1f8 chore: version v2.2.2 2025-11-02 21:56:36 +00:00
Alex
b5efc9c16e fix: passing secrets to trigger workflow (#23447)
* fix: passing secrets to trigger workflow

* pass secrets to workflow call
2025-11-02 15:54:35 -06:00
Alex
1036076b0d fix: disable prunning for more investigation (#23531) 2025-11-02 15:54:03 -06:00
Daniel Dietzler
c76324c611 fix(web): mobile scrubber on page load (#23488) 2025-11-01 22:15:33 -05:00
bo0tzz
0ddb92e1ec fix: use pnpm directly for fix-format (#23483) 2025-11-01 15:38:18 -04:00
Alex
d08a520aa2 chore: post release tasks (#23443) 2025-11-01 01:21:39 -05:00
dotlambda
7bdf0f6c50 chore(ml): remove setuptools from dependencies (#23446) 2025-10-31 21:34:10 +00:00
shenlong
2b33a58448 fix: show in timeline from search page (#23440)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-10-31 14:55:28 -05:00
github-actions
b35f00f768 chore: version v2.2.1 2025-10-31 18:04:27 +00:00
Weblate (bot)
86cc7c3c73 chore(web): update translations (#23375)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translation: Immich/immich

Co-authored-by: Akhil Raj Baranwal <akhil.r.baranwal@gmail.com>
Co-authored-by: Dennis Kjær Jensen <weblate@signout.dk>
Co-authored-by: DevServs <bonov@mail.ru>
Co-authored-by: Florian Amsallem <florian.amsallem@gmail.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Kai Heine <kai-heine@users.noreply.hosted.weblate.org>
Co-authored-by: Marrick Schröder <marrick.schroeder@gmail.com>
Co-authored-by: Michael <parieren.gefuehl5g@icloud.com>
Co-authored-by: PontusÖsterlindh <pontus@osterlindh.com>
Co-authored-by: S M, Aravinth (A.) <asm1@ford.com>
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org>
Co-authored-by: Vegard Fladby <vegard@fladby.org>
Co-authored-by: linux-universe <lauro@dilorenzo.one>
Co-authored-by: shiuh67 <shiuh.cheng@gmail.com>
Co-authored-by: slick-daddy <129640104+slick-daddy@users.noreply.github.com>
Co-authored-by: ti-guru <anders.egeland@outlook.com>
2025-10-31 18:02:30 +00:00
Alex
5854cbbe97 fix: show close button on purchase modal (#23436) 2025-10-31 17:47:14 +00:00
Alex
ceb36a304d fix: view in timeline does not jump to the timeline correctly (#23428) 2025-10-31 17:24:41 +00:00
Daniel Dietzler
f5d7e5acca chore: cannonical tailwind classes (#23427) 2025-10-31 11:38:17 -04:00
luneth
be15a84f9b chore: update android signing fingerprints to docs (#23361)
* Update mobile-app.mdx

Add certificate fingerprint for android releases.

* chore: formatting

* Chore: Typo

---------

Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-10-31 09:40:53 -05:00
Alex
32791e98c2 chore: trigger prod build on prepare-release (#23424)
* chore: trigger prod build on prepare-release

* clean up
2025-10-31 14:26:03 +00:00
Alex
7ea443b3a9 chore: gha ios release | take 5 (#23203)
* chore: gha ios release | take 5

* code signing

* code signing 2

* manual signing for extensions

* chore(ios): add explicit code signing identity and debug output

* dev appbundle

* Deployment flow for development app

* skip waiting for change log

* refactor

* fix: ruby version

* fix: manual release lane

* build on main
2025-10-31 09:05:03 -05:00
Alex
c69786b039 fix: button condition rendering (#23400) 2025-10-31 08:42:01 -05:00
Mert
5c7d5539ea fix(mobile): video seeking on android (#23405)
use int for seeking
2025-10-31 08:41:09 -05:00
Daniel Dietzler
3531856d1c refactor: api key modals (#23420) 2025-10-31 08:58:52 -04:00
Mert
4abaad548a fix(ml): ocr failing with rootless docker (#23402)
don't download font
2025-10-31 02:41:49 -04:00
Jonathan Jogenfors
61a2c3ace3 chore(server): clarify asset copy parameters (#23396) 2025-10-30 23:55:39 +00:00
Daniel Dietzler
e9038193db fix: asset copy validation error (#23387) 2025-10-30 19:40:58 -04:00
bo0tzz
3f5cd48a59 fix: don't use app token for cli push (#23378) 2025-10-30 21:31:56 +01:00
idubnori
4cb094e7ae fix(mobile): regression - not displayed activity button in top bar (#23366) 2025-10-30 14:39:36 -05:00
github-actions
57c8378ca7 chore: version v2.2.0 2025-10-30 14:42:44 +00:00
Weblate (bot)
b073f9b802 chore(web): update translations (#22937)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/el/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/eu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fa/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fil/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/gl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/mk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/mr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Cyrl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/th/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: 0xflotus <0xflotus@gmail.com>
Co-authored-by: Aarón Rosa Díaz <sraaronrock@tuta.io>
Co-authored-by: Abhijeet Bonde <abhijeetbonde19@gmail.com>
Co-authored-by: Abraham Escalona <abrahamescalona@live.com>
Co-authored-by: Adam Havránek <adamhavra@seznam.cz>
Co-authored-by: Aitor Astorga <a.astorga.sdv@protonmail.com>
Co-authored-by: Alberto Serluca <alberto.ser11@gmail.com>
Co-authored-by: Alejandro Gonzalez <alejandrok5@gmail.com>
Co-authored-by: Alejandro Moya <alejandro_moya_moya@hotmail.com>
Co-authored-by: Alex <alex.osheter@gmail.com>
Co-authored-by: Alexis-Loskoutoff <alexis@pctraining.fr>
Co-authored-by: AndreiP28 <andreiprica28@gmail.com>
Co-authored-by: Antonio <1628876+antonio-ivanovski@users.noreply.github.com>
Co-authored-by: Beans <leey0818@gmail.com>
Co-authored-by: Benjamin GOUPIL <benjamin@goupil.bzh>
Co-authored-by: Blomblo <mr.blomblo@gmail.com>
Co-authored-by: Cyril CHARLIER <cyril.charlier@gmail.com>
Co-authored-by: Davide Vegliante <davidevegliante@gmail.com>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: DevServs <bonov@mail.ru>
Co-authored-by: Devansh Sehgal <devanshsehgal02@gmail.com>
Co-authored-by: Diego Heras <ngosang@hotmail.es>
Co-authored-by: Durneztj <thibault.durnez@telenet.be>
Co-authored-by: Eetu Mäenpää <me@eetumaenpaa.fi>
Co-authored-by: Emil Friis Osmann <Emilfriisosmann@gmail.com>
Co-authored-by: Espen Faale <espen@faale.no>
Co-authored-by: Flyingfufu <fabien.fuster@icloud.com>
Co-authored-by: Frederick “Fredyy” Behrends <frederick.behrends@gmail.com>
Co-authored-by: Hamed Hojjati <hamed334@gmail.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Ignatius Liu <suitangi777@gmail.com>
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com>
Co-authored-by: Ivan Dimitrov <idimitrov08@gmail.com>
Co-authored-by: Jacob Zhang <jacob-z@live.de>
Co-authored-by: Jason Song <songpeiheng@gmail.com>
Co-authored-by: Jasper van der Neut - Stulen <jasper@neutstulen.nl>
Co-authored-by: Jeppe Nellemann <jepnel@proton.me>
Co-authored-by: Jirapan <jirapan_yankhan@hotmail.com>
Co-authored-by: Jonas A <demo007@gmail.com>
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: Liviu Roman <contact@liviuroman.com>
Co-authored-by: Lotzi <info@lorenzmueller.de>
Co-authored-by: Lukas Konsin <lukaskonsin@proton.me>
Co-authored-by: MSDNicrosoft <wang3311835119@hotmail.com>
Co-authored-by: Marcelo Popper Costa <marcelo_popper@hotmail.com>
Co-authored-by: Mario Carlotti <info@carlotti.ch>
Co-authored-by: Marko Stanković <stankovic.marko@gmail.com>
Co-authored-by: Martin Piron <martin.piron@hotmail.com>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Mees Frensel <meesfrensel@gmail.com>
Co-authored-by: Mehmet MENENGEÇ <mehmetmenengec+weblate@gmail.com>
Co-authored-by: Metin <durmus38metin@gmail.com>
Co-authored-by: Mohsin Bouhout <bouhout.mohsin@gmail.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Nicolai Bonde <git@nicolaibonde.dk>
Co-authored-by: Ole Steinbrück <ole.steinbrueck@googlemail.com>
Co-authored-by: Paolo Forte <paoloforte71@gmail.com>
Co-authored-by: Passawish Paktiwong <passawishp@outlook.com>
Co-authored-by: Pedro Vendeira <vendeira.pedro@gmail.com>
Co-authored-by: Peter Dave Hello <hsu@peterdavehello.org>
Co-authored-by: Petri Hämäläinen <petri.hamalainen@mailbox.org>
Co-authored-by: PontusÖsterlindh <pontus@osterlindh.com>
Co-authored-by: Rasmus Sehlin <rasmus@sehl.in>
Co-authored-by: Robert Gonzales <bgonz808@gmail.com>
Co-authored-by: Ron Turner <admin@meetronturner.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Stan P <g97d6liib@mozmail.com>
Co-authored-by: Steven Barash <stevenbarash6@gmail.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: TMM4MN <tmgweb@yahoo.com>
Co-authored-by: TV Box <realceday.tvbox@gmail.com>
Co-authored-by: Tage Lauritsen <tage@tunenet.dk>
Co-authored-by: Theofilos Nikolaou <th.nikolaou@gmail.com>
Co-authored-by: Tjibbe Chris <github@tjibbechris.nl>
Co-authored-by: Tmpod <tom@tmpod.dev>
Co-authored-by: Tom Kay <kowalzik@proton.me>
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org>
Co-authored-by: Valentino Harpa <valen.ginga@gmail.com>
Co-authored-by: Vegard Fladby <vegard@fladby.org>
Co-authored-by: Zsombor L <lzso1.lzso1@gmail.com>
Co-authored-by: anton garcias <isaga.percompartir@gmail.com>
Co-authored-by: aouani jaessin <aouanijaessin@gmail.com>
Co-authored-by: basti n00b0ss <n00b0ss@mailbox.org>
Co-authored-by: bilal-khendaf <bilalkhendaf@gmail.com>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Co-authored-by: chamdim <chamdim@protonmail.com>
Co-authored-by: intothevolt <francesco.ferriero97@gmail.com>
Co-authored-by: khaled maayeh <maayehkhaled@gmail.com>
Co-authored-by: kiwinho <kiwicaja@gmail.com>
Co-authored-by: millallo <millallo@tiscali.it>
Co-authored-by: mkubant <marek@kubantovi.cz>
Co-authored-by: nachtpfoetchen <nachtpfoetchen@posteo.de>
Co-authored-by: om1s186 <om1s186@gmail.com>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: rw-r-r-0644 <rw-r-r-0644@proton.me>
Co-authored-by: ssantos <ssantos@web.de>
Co-authored-by: vytautas <immichtranslation.a03gn@simplelogin.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Àlex Bravo <alexbravobosch@gmail.com>
Co-authored-by: özcan karakuş <ozcan.krakus@gmail.com>
Co-authored-by: Александр Стельмах <aguhadug@gmail.com>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: Максим Горпиніч <gorpinicmaksim0@gmail.com>
Co-authored-by: தமிழ்நேரம் <tamilneram247@gmail.com>
Co-authored-by: 안세훈 <on9686@gmail.com>
2025-10-30 14:40:49 +00:00
Alex
1a2e7d06cb chore: make view similar photo button more discoverable (#23350) 2025-10-29 15:38:50 +00:00
Alex
217d719b0b chore: re-enable android build (#23349) 2025-10-29 10:22:07 -05:00
shenlong
cf75ad2f26 fix: prune stale assets (#22530)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-10-29 14:41:03 +00:00
Alex
2286444158 chore: css nits (#23330) 2025-10-29 09:20:04 -05:00
renovate[bot]
b489bdf8d3 chore(deps): update node.js to v24 (#23346)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-29 14:48:20 +01:00
idubnori
5e6087ea28 feat(mobile): chat-style album activities timeline (#23185)
* feat(mobile): open assetviewer via album activities page

* adjust ui behavior: keep current asset & disable initial forcus

* init of v2...

* refactoring...

* refactor: remove _DismissibleWrapper

* feat: initial scrolling to bottom

* refactor: use feature toggle

* refactor: new route page

* fix: file name, dcm analyze

* fix: test failure

* fix: remove toggle and the exisitng style based on review feedback

* refactorr: rename methods for clarity in comment bubble widget

* chore: styling

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-10-29 13:45:28 +00:00
Daniel Dietzler
4ae7cadeae feat: asset copy (#23172) 2025-10-29 08:43:47 -05:00
renovate[bot]
fdfb04d83c fix(deps): update typescript-projects (#23311)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-10-29 11:34:20 +00:00
renovate[bot]
8273c822d7 chore(deps): pin dependencies (#23304)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 20:27:54 -05:00
Viktor Mykhailiv
12bb39a111 feat(mobile): view similar photos (#22148)
* feat: view similar photos on mobile

# Conflicts:
#	mobile/lib/models/search/search_filter.model.dart
#	mobile/lib/utils/action_button.utils.dart

* fix: bottom sheet is unusable after navigating to search

* feat(mobile): open DriftSearchPage as root route

* reset search state on tab navigation

* fix tests

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-10-28 16:17:26 -05:00
Alex
9098717c55 feat: getAssetOcr endpoint (#23331)
* feat: getAssetOcr endpoint

* pr feedback
2025-10-28 20:57:03 +00:00
Min Idzelis
8d25f81bec fix: regression - search results not visible until scroll (#23321) 2025-10-28 14:15:24 -05:00
Jason Rasmussen
52596255c8 feat: toasts (#23298) 2025-10-28 14:09:11 -05:00
Alex
106effca2e feat: check server feature to render OCR search option (#23325) 2025-10-28 13:54:41 -05:00
shenlong
9676da27c9 fix: clear temp cache on iOS before uploads (#23326)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-10-28 13:53:48 -05:00
Brandon Wees
3edcb180eb fix: flaky mobile sync api tests (#23324) 2025-10-28 12:16:36 -05:00
renovate[bot]
9f0b5790af chore(deps): update dependency @types/node to ^22.18.12 (#23305)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 18:16:18 +01:00
Brandon Wees
e0c2cdddd4 feat: show "appears in" albums on asset viewer bottom sheet (#21925)
* feat: show "appears in" albums on asset viewer bottom sheet

fix: multiple RemoteAlbumPages in navigation stack

this also allows us to not have to set the current album before navigating to RemoteAlbumPage

chore: clarification comments

handle nested album pages

fix: hide "appears in" when an asset is not in any albums

fix: way more bottom padding

for some reason we can't query the safe area here :/

* fix: bottom sheet now is usable when navigating to another asset viewer

* fix: rebase conflict

* fix: restore ancestors album to currentRemoteAlbumProvider when popping

* fix: view flashing when dismissing a album viewer

* chore: code review changes

* fix: styling and padding

* chore: rework currentRemoteAlbumProvider to be scoped by the Remote album page

* fix: override remote album provider on required pages

* chore: convert query to all SQL calls instead of matching in Dart

* fix: album query

* fix: unawaited future

* Update deep_link.service.dart

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-10-28 16:52:01 +00:00
Brandon Wees
74f2c10a5a fix: make hitbox on app bar dialog bigger (#23316) 2025-10-28 09:19:40 -05:00
Thomas Stachl
fb97d9f4d9 fix(web): disable picture-in-picture on video viewer (#23318) 2025-10-28 09:15:35 -05:00
renovate[bot]
f72bcc8a8f chore(deps): update node.js to v22.21.0 (#23314)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 12:36:19 +00:00
renovate[bot]
46a4dce16b chore(deps): update grafana/grafana docker tag to v12.2.1 (#23312)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 12:32:37 +00:00
renovate[bot]
62ed5fe27f chore(deps): update base-image to v202510281104 (major) (#23315)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 12:30:42 +00:00
Zack Pollard
8e3f6cdbbf fix: ml container tags incorrect for different hardware builds (#23313)
Co-authored-by: bo0tzz <git@bo0tzz.me>
2025-10-28 12:30:12 +00:00
Min Idzelis
d51b8c1cdf fix: focus-trap on safari (#23246) 2025-10-27 21:29:30 -05:00
Alex
698531d6e0 feat: improve UI for resolving duplication detection (#23145)
* feat: improve UI for resolving duplication detection

* pr feedback
2025-10-27 17:32:52 -04:00
Thomas Stachl
44149d187f feat(server): enhance metadata reading for video files (#23258) 2025-10-27 14:46:54 -05:00
shenlong
9e3b4ef3db chore(dep): bump flutter to 3.35.7 (#23287)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-10-27 10:24:41 -05:00
shenlong
ac0d646401 fix: mobile unawaited_futures lint (#21661)
* chore: add unawaited_futures lint as warning

# Conflicts:
#	mobile/analysis_options.yaml

* remove unused dcm lints

They will be added back later on a case by case basis

* fix warning

# Conflicts:
#	mobile/lib/presentation/pages/drift_remote_album.page.dart

* auto gen file

* review changes

* conflict resolution

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-10-27 09:32:52 -05:00
shenlong
664a8fa499 fix: fetch original name before upload (#21877)
* fix: fetch origin name before upload

* fix: Show correct photo name in buttom sheet and backup details page (#22978)

* add tests

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: FawenYo <40032648+FawenYo@users.noreply.github.com>
2025-10-27 09:32:24 -05:00
shenlong
3194538817 fix: handle null bucketId or name in android local sync (#23224)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-10-27 09:22:51 -05:00
Zac Warham
b0d427f8f9 chore: show leading zero week in storage template (#23275)
* Use date which shows week with a zero

* Update sample date in SupportedDatetimePanel

* Update web/src/lib/components/admin-settings/SupportedDatetimePanel.svelte

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-10-27 09:21:37 -05:00
Kang
02b29046b3 feat: ocr (#18836)
* feat: add OCR functionality and related configurations

* chore: update labeler configuration for machine learning files

* feat(i18n): enhance OCR model descriptions and add orientation classification and unwarping features

* chore: update Dockerfile to include ccache for improved build performance

* feat(ocr): enhance OCR model configuration with orientation classification and unwarping options, update PaddleOCR integration, and improve response structure

* refactor(ocr): remove OCR_CLEANUP job from enum and type definitions

* refactor(ocr): remove obsolete OCR entity and migration files, and update asset job status and schema to accommodate new OCR table structure

* refactor(ocr): update OCR schema and response structure to use individual coordinates instead of bounding box, and adjust related service and repository files

* feat: enhance OCR configuration and functionality

- Updated OCR settings to include minimum detection box score, minimum detection score, and minimum recognition score.
- Refactored PaddleOCRecognizer to utilize new scoring parameters.
- Introduced new database tables for asset OCR data and search functionality.
- Modified related services and repositories to support the new OCR features.
- Updated translations for improved clarity in settings UI.

* sql changes

* use rapidocr

* change dto

* update web

* update lock

* update api

* store positions as normalized floats

* match column order in db

* update admin ui settings descriptions

fix max resolution key

set min threshold to 0.1

fix bind

* apply config correctly, adjust defaults

* unnecessary model type

* unnecessary sources

* fix(ocr): switch RapidOCR lang type from LangDet to LangRec

* fix(ocr): expose lang_type (LangRec.CH) and font_path on OcrOptions for RapidOCR

* fix(ocr): make OCR text search case- and accent-insensitive using ILIKE + unaccent

* fix(ocr): add OCR search fields

* fix: Add OCR database migration and update ML prediction logic.

* trigrams are already case insensitive

* add tests

* format

* update migrations

* wrong uuid function

* linting

* maybe fix medium tests

* formatting

* fix weblate check

* openapi

* sql

* minor fixes

* maybe fix medium tests part 2

* passing medium tests

* format web

* readd sql

* format dart

* disabled in e2e

* chore: translation ordering

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-10-27 14:09:55 +00:00
Min Idzelis
c666dc6c67 fix: back/forward navigation won't reset scroll in timeline (#22838)
* fix: back/forward navigation won't reset scroll in timeline

Fixes a bug where navigating to/from the asser-viewer from timeline causes the scroll position to be reset.

* Fix back after assetviewer next/prev navigation

* Bug fix from review

* review comments
2025-10-27 08:56:03 -05:00
Jorge Montejo
382481735a feat: logout sessions on password change (#23188)
* log out ohter sessions on password change

* translations

* update and add tests

* rename event to UserLogoutOtherSessions

* fix typo

* requested changes

* fix tests

* fix medium:test

* use ValidateBoolean

* fix format

* dont delete current session id

* Update server/src/dtos/auth.dto.ts

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

* rename event and invalidateOtherSessions

* chore: cleanup

---------

Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-10-27 13:16:10 +00:00
Min Idzelis
6bb1a9e083 fix: incomplete dynamic imports (#23217) 2025-10-27 08:45:30 -04:00
Mert
3f03a88767 feat(web): wasm justified layout, sync edition (#23194)
* the invisible wasm

use npm version

* deterministic tests

* add todo

* linting

* bump library, add helpers

* use target height for unfilled rows

* update tests
2025-10-25 00:06:05 -05:00
Jason Rasmussen
328380cfda refactor: websocket repository (#23228) 2025-10-24 16:26:27 -04:00
Robin Jacobs
65f29afb0f feat(cli): add --delete-duplicates option (#20035)
* Add --delete-duplicates option to delete local assets that already exist on the server, fixes #12181

* Update docs

* Fix `--delete-duplicates` implying `--delete`

* fix the test, break the english

* format

* also ran the formatter on the e2e folder :)

* early return, fewer allocations

* add back log

---------

Co-authored-by: Robin Jacobs <robin.jacobs@beeline.com>
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-10-24 19:31:54 +00:00
andre-antunesdesa
f721a62776 feat(web): load original videos (#20041)
* added user preference for always loading original video

added ability to toggle between transcoded/original in the video viewer

add fix to static check error

* address PR comments

* Update asset-viewer-nav-bar.svelte

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

---------

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
2025-10-24 19:03:51 +00:00
Mert
c73e3dacea feat(mobile): high precision seeking (#22346)
* millisecond precision video playback

* wrap in unawaited

* update commit
2025-10-24 18:59:30 +00:00
Dag Stuan
78fb815cdb feat(web): add search filter for camera lens model. (#21792) 2025-10-24 14:41:34 -04:00
Jason Rasmussen
d9cddeb0f1 chore: use reverse proxy during local preview (#23184) 2025-10-24 14:00:51 -04:00
bo0tzz
c4ff2ea6d5 fix: actually use tf output (#23221) 2025-10-24 17:07:05 +02:00
renovate[bot]
b91b855473 chore(deps): update github-actions (major) (#22919)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 16:21:41 +02:00
bo0tzz
7773d6d44f chore: update multi-runner-build-workflow (#23183) 2025-10-24 14:08:04 +00:00
idubnori
2129f889f5 feat: (mobile) open asset viewer from album activity page (#23182)
* feat(mobile): open assetviewer via album activities page

* adjust ui behavior: keep current asset & disable initial forcus

* fix: Run 'make build' and 'make pigeon'
2025-10-24 09:02:56 -05:00
shenlong
221e0ef02f fix: android skip posting hash response after detached from engine (#23192)
fix: native cancellations for hashing

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-10-24 08:56:49 -05:00
Basharat Ahmad Khan
0a6b2ad26e feat(web): reactively update shared link expiration (#22274)
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-10-24 13:18:49 +02:00
renovate[bot]
719bf763e4 chore(deps): update prom/prometheus docker digest to 23031bf (#23111)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 13:16:11 +02:00
Lauritz Tieste
34bad1ce71 feat: improvements of thumbnail animations (#20300)
* feat: improve thumbnail border radius animation

feat: remove thin border between image and image selection container

feat: enhance selection icon in thumbnail image

feat: add animated selection indicator for multiselect in thumbnail image

feat: remove unnecessary widgets and variables

style: format code

fix: errors with formatting checks

* chore: port to new timeline

* chore: revert mobile/lib/widgets/asset_grid/thumbnail_image.dart

---------

Co-authored-by: bwees <brandonwees@gmail.com>
2025-10-23 22:36:49 -05:00
Szymon Łągiewka
6164b027e2 chore(dep): bump ioredis to 5.8.2 (#23130) 2025-10-23 22:29:18 -05:00
Alex
d9a13dc8ac chore: gha ios release | take 4 (#23202) 2025-10-23 16:06:55 -05:00
Alex
722dbfa11f chore: gha ios release | take 3 (#23200) 2025-10-23 15:48:44 -05:00
Alex
f8afef0f9d chore: gha ios release | take 3 (#23199)
* chore: gha ios release | take 3

* chore: gha ios release | take 3
2025-10-23 20:35:43 +00:00
bo0tzz
3c8df55986 fix: add bundle platform arm64-darwin-23 (#23197) 2025-10-23 20:19:44 +00:00
Alex
47436ad0ce feat: GHA for iOS release flow (#23196) 2025-10-23 21:57:19 +02:00
Zack Pollard
9b58d5663a feat: support database dumps for pg18 (#23186) 2025-10-23 10:14:01 -04:00
Matthew Momjian
b6cebb3ece feat(server): pin to v2 (#23170)
* pin to v2

* remove release
2025-10-22 16:06:00 -04:00
Jason Rasmussen
cb7e68a287 refactor: user edit modal (#23169) 2025-10-22 15:21:16 -04:00
Jason Rasmussen
e196cac6f4 refactor: asset description modal (#23168) 2025-10-22 13:08:59 -05:00
Jason Rasmussen
351c0d2a4d refactor: user delete confirm modal (#23166) 2025-10-22 13:49:06 -04:00
Alex
f4969694cd fix: isolate freeze app on older ios device (#22509)
* fix: isolate freeze app on older ios device

* always use at-least 5 isolates

* fix: bad merge

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-10-22 12:43:03 -05:00
Daniel Dietzler
b334288529 fix: session list text color (#23165) 2025-10-22 17:33:54 +00:00
Jason Rasmussen
834e52fda6 refactor: user delete (#23163) 2025-10-22 12:54:29 -04:00
Jason Rasmussen
8c27ba3e52 refactor: job events (#23161) 2025-10-22 12:16:55 -04:00
aviv926
cd8d66f5dd fix(web): show upload speed (#23138)
* remove unnecessary else

* Better fix

* fix: update text color

* chore: stylings

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-10-22 15:40:10 +00:00
Nykri
446f738c7d chore: set default concurrency number to #CPU cores - 1 (#22888)
Set default concurrency number to #CPU cores - 1

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
2025-10-22 10:16:07 -05:00
shenlong
f19ad9726f chore(dep): minor mobile dependency updates (#23126)
* chore(dep): minor dependency updates

* build_runner changes

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-10-22 10:14:44 -05:00
Brandon Wees
65cac118ca fix: allow editing all images (#23144)
* fix: allow editing local asset

* chore: remove isOwner check
2025-10-22 10:12:32 -05:00
Brandon Wees
efac8c6667 fix: semver parser grab everything before hyphen (#23140)
used for versions like 2.1.0-DEBUG
2025-10-22 10:06:40 -05:00
Jason Rasmussen
a70843e2b4 refactor: users.total metric (#23158)
* refactor: users.total metric

* fix: broken test
2025-10-22 10:18:17 -04:00
bo0tzz
0b941d78c4 fix: set TG_NON_INTERACTIVE (#23153) 2025-10-22 13:22:45 +01:00
bo0tzz
fc5fc58759 fix: bump tofu (#23152) 2025-10-22 11:13:03 +00:00
bo0tzz
9bb2fc238a fix: don't use app for final close-duplicates request (#23143) 2025-10-22 11:00:31 +00:00
Alex
76f5036026 chore: improve onboarding, app download links styling (#23134) 2025-10-21 21:10:12 -05:00
aviv926
032de9ff2f feat: view the user's app version on the user page (#21345)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-10-22 00:36:18 +02:00
shenlong
c3a533ab40 chore(dep): bump flutter to 3.35.6 (#23120)
* chore(dep): bump flutter to 3.35.6

* chore(dep): bump flutter to 3.35.6 (#23121)

chore(dep): remove unused pub deps

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

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-10-21 15:46:48 +00:00
Rui Gonçalves
dbd6dcb786 fix(server): use GPSLongitudeRef and GPSLatitudeRef EXIF fields (#21445)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-10-21 16:12:22 +02:00
renovate[bot]
9dffbaea98 chore(deps): update dependency @types/node to ^22.18.10 (#23112)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-21 11:31:22 +00:00
renovate[bot]
70bda45551 chore(deps): update dependency vite to v7.1.11 [security] (#23108)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-21 10:28:20 +00:00
renovate[bot]
d9452e485c fix(deps): update typescript-projects (#23119)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-10-21 10:22:53 +00:00
idubnori
85e9ced68d chore: remove unused code file (#23116)
chore: remove unused code
2025-10-21 09:58:02 +05:30
Min Idzelis
04e2e42c88 refactor(web): improve date labels in scrubber (#23046)
refactor(web): improve timeline scrubber labeling logic

Refactor the segment calculation in the timeline scrubber to improve code clarity and fix label positioning. Process months in reverse order for more intuitive label selection, use descriptive variable names, and remove unnecessary index tracking.
2025-10-20 22:13:49 -05:00
Mert
bcfdb2f9df fix(ml): pin cudnn version (#23110)
pin cudnn version
2025-10-20 18:18:09 -05:00
Brandon Wees
23a34bee6f feat: improved update messaging on app bar server info (#22938)
* feat: improved update messaging on app bar server info

* chore: message improvements

* chore: failed to fetch version error message

* feat: open latest release when tapping "Update" on server out of date message

* fix: text alignment states

* chore: code review updates

* Apply suggestion from @alextran1502

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

* Apply suggestion from @alextran1502

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

* chore: lots of rework of the version checking code to be cleaner

Added a semver utility class to simplify comparisons, broke the update notification logic into own widget, reworked view construction and colors.

* fix: show warnign without having to tap on app bar icon

* chore: colors

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-10-20 21:13:31 +00:00
bo0tzz
6f31f27218 fix: bump use-mise version (#23098) 2025-10-20 21:26:56 +02:00
Matthew Momjian
b102f94e97 fix(mobile): notate experimental network features, cleanup mis assigned translation tags (#23021)
* cleanup i18n, return experimental notation

* add renamed file

* rename 2

* caps

* Update mobile/lib/pages/common/headers_settings.page.dart

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

* IntlKeys

* fix: import

---------

Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-10-20 19:20:49 +00:00
idubnori
becb56e1b1 feat(mobile): Change the UI of asset activity list to bottom sheet (#23075)
* init of activities bottom sheet

* reverse list order, padding bottom...

* chore: remove scrolling

* chore: clean up

* chore

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-10-20 13:35:52 -05:00
bo0tzz
05f174a180 feat: move previews to immich.build (#23089)
dep https://github.com/immich-app/devtools/pull/1064
2025-10-20 12:39:15 -05:00
shenlong
476bb1cacd chore: skip dialog for single merged asset (#22958)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-10-20 12:38:51 -05:00
Brandon Wees
24fe62ff9d chore: rework backup success notification descriptions (#23024)
* chore: rework backup success notification descriptions

* chore: use static text until for completion description
2025-10-20 09:56:48 -05:00
bo0tzz
a390e44402 fix: don't use app token to push to ghcr (#23099)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-20 15:57:52 +02:00
bo0tzz
08f81eb3c6 feat: use explicit app token for all workflows (#22949) 2025-10-20 14:38:01 +02:00
bo0tzz
13d33f834f chore: use mise instead of terragrunt-action (#22905) 2025-10-20 12:32:52 +01:00
Min Idzelis
58f9659cf6 fix: blank page on assetviewer to timeline (regression) (#23073) 2025-10-19 11:01:42 -05:00
bo0tzz
e14d5fb277 fix: skip ML availability check if ML is disabled (#23053) 2025-10-18 20:32:30 -05:00
Alex
06151ad173 chore: use correct tailwindcss class (#23054) 2025-10-18 20:32:11 -05:00
Arno
0700758621 fix: remove unnecessary api call (#23050)
Co-authored-by: Arno <arno@crewbrain.com>
2025-10-18 19:21:37 +02:00
Yaros
f26db8053b fix(web): two scrollbars in folder view (#23045) 2025-10-18 10:24:49 +00:00
Matthew Momjian
4836047e50 fix(server): notify of reindex taking a while (#23033)
note
2025-10-17 20:15:45 -04:00
Adrian Jost
0979528a05 feat: show location & date on duplicate asset comparison overview (#22632) 2025-10-17 21:04:45 +00:00
Jason Rasmussen
24a6757630 refactor: user edit modal (#23025) 2025-10-17 14:38:57 -04:00
Jason Rasmussen
67f093f75b feat(web): create user as admin (#23026) 2025-10-17 14:26:07 -04:00
Min Idzelis
3174a27902 refactor(web): Extract VirtualScrollManager base class from TimelineManager (#23017)
Extract common virtual scrolling functionality from TimelineManager into
a new abstract VirtualScrollManager base class. This refactoring improves
code organization and enables reuse of virtual scrolling logic.

Changes:
- Create new VirtualScrollManager abstract base class with common virtual
  scrolling state and methods
- Refactor TimelineManager to extend VirtualScrollManager
- Rename 'assetsHeight' to 'bodySectionHeight' for semantic clarity
- Convert methods to use override keyword where appropriate
- Enable noImplicitOverride in tsconfig for better type safety
- Fix ApiError and AbortError class definitions with override keywords
2025-10-17 17:37:54 +00:00
Nick
e7d6a066f8 docs: update backup-and-restore.md (#21065)
* Update backup-and-restore.md

Added, and consolidated messaging across the md file in relation to updating the username when running scripts.

* chore: formatting

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-10-17 11:38:37 -04:00
renovate[bot]
73da80394e chore(deps): update github-actions (#22914)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-17 10:48:36 -04:00
renovate[bot]
471cc74ff2 chore(deps): update dependency happy-dom to v20.0.2 [security] (#22964)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-17 10:24:50 -04:00
Lee Peuker
ca745d00ee fix(docs): cli upload json format example (#22858)
Fix cli upload json format example
2025-10-17 14:08:42 +00:00
Jason Rasmussen
3ea8d140a2 feat: move community projects and guides to immich-aweseome (#23016) 2025-10-17 10:00:28 -04:00
Jason Rasmussen
8b8012f89d docs: clarify well-known usage (#23018) 2025-10-17 10:00:07 -04:00
Joren Guillaume
4b7f851428 docs: Expand on OpenVINO WSL HW accel (#21054)
* add group/render section to openvino-wsl hwaccel

* Fix indentation for YAML

* Remove obsolete enter

* chore: formatting

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-10-17 09:05:07 -04:00
Nicholas
cc1cd299f3 feat(web): Download links and Obtainium link generator on Utilities page and onboarding (#20589) 2025-10-17 13:22:00 +02:00
Paul Larsen
3163afd24a fix(web): render context overlays over the scrollbar (#23007) 2025-10-17 12:35:19 +02:00
Clement Martin
95889a69c9 feat(server): Option to configure SMTPS transport (#22833)
* feat(server): Option to configure SMTPS transport

This commit adds a boolean option in the SMTP transport configuration to
enable the so-called "secure" mode. What it does is use SMTP over TLS
instead of relying on the more common STARTTLS option over plain SMTP.

* Add missing field in dto

* Add missing field

* Use a switch instead of text field

* Add field in spec

* chore: regen open-api

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-10-17 10:21:27 +00:00
Brandon Wees
81554e5ad1 chore: change usage of pnpx to pnpm dlx (#23009) 2025-10-17 12:20:50 +02:00
Paweł Wojtaszko
505e16c37c fix(server): only asset owner should see favorite status (#20654)
* fix: Any asset update disables isFavorite action in GUI. Only owner of asset in album should see favorited image.

* Fix unit tests

* Fix formatting

* better query, add medium test

* update sql

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-10-16 21:52:36 +00:00
Jason Rasmussen
24bfdf3263 fix(web): immich-form-label usage (#23006) 2025-10-16 17:49:12 -04:00
Jorge Montejo
a23dfff6cf fix: remove assets from shared link (#22935)
* fix remove assets from shared link

* rename var

* test: should remove individually shared asset

* test: should share individually assets

* fix failing tests
2025-10-16 15:03:41 -04:00
Min Idzelis
2919ee4c65 fix: navigate to time action (#20928)
* fix: navigate to time action

* change-date -> DateSelectionModal; use luxon; use handle* for callback fn name

* refactor change-date dialogs

* Review comments

* chore: clean up

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-10-16 17:44:09 +00:00
Alex
d0eae97037 fix: unit overlapses value in server stats card (#22994) 2025-10-16 17:14:39 +00:00
Jorge Montejo
9d639607c7 fix: tag clean up query and add tests (#22633)
* fix delete empty tags query

* rewrite as a single statement

* create tag service medium test

* single tag exists, connected to one asset, and is not deleted

* do not delete parent tag if children have an asset

* hierarchical tag tests

* fix query to match 3 test

* remove transaction and format:fix

* remove transaction and format:fix

* simplify query, handle nested empty tag

* unused helper

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2025-10-15 22:51:57 +00:00
Matthew Momjian
74a9be4a0e fix(server): bump valkey to 8 (#22911)
* unpin valkey

* pin
2025-10-15 18:48:36 -04:00
0xflotus
26e877cba7 docs: fix small error (#22890)
* docs: fix small error

* docs: fix small error

* docs: fix small error

* docs: fix small error

* docs: fix small error

* docs: fix small error

* docs: fix small error
2025-10-15 21:30:33 +00:00
Alex
7b7d91a5e1 fix: get all assets for the Recents album on iOS (#22956) 2025-10-15 23:06:52 +05:30
Min Idzelis
b3055d2e94 refactor: TimelineManager is owned by Timeline.svelte (#22839)
feat: TimelineManager is owned by Timeline.svelte
2025-10-15 17:27:44 +00:00
Min Idzelis
f1e03d0022 fix(web): improve scrubber behavior on scroll-limited timelines (#22917)
Improves scroll indicator positioning when scrubbing through timelines with limited scrollable content (e.g., small albums). When a timeline's scrollable height is less than 50% of the viewport height, the scroll position is now properly distributed across the entire scrubber height, making the indicator more responsive and accurate.

Changes:
- Add `limitedScroll` state to detect scroll-constrained timelines (threshold: 50%)
- Introduce `ViewportTopMonth` type to handle lead-in/lead-out sections
- Calculate `totalViewerHeight` including top/bottom sections for accurate positioning
- Refactor scrubber to treat lead-in and lead-out as distinct scroll segments
- Update scroll position calculations to use relative percentages on constrained timelines
2025-10-15 13:13:05 -04:00
Saschl
9b5855f848 feat: add video auto play setting (#20416)
* feat: add auto play setting to mobile

* feat: add auto play video setting to web

* address review comments

* fix setting id

---------

Co-authored-by: Saschl <noreply@saschl.com>
2025-10-15 11:24:47 -04:00
Alex
7d0228a159 chore: post release tasks (#22936) 2025-10-15 09:31:49 -05:00
Mees Frensel
c18df7ae25 fix(web): clarify some transcoding settings (#22797) 2025-10-15 09:17:07 -04:00
Mees Frensel
72f5ca4420 fix(web): prevent photo-only memories showing mute button (#22802) 2025-10-15 12:15:29 +02:00
Chaoscontrol
02beb85642 feat(album): show per-user contributions in shared albums (#21740)
* feat: show per-user contribution counts on shared albums

Add API support and UI display for per-user asset contribution
counts on shared albums:
- server: add ContributorCountResponseDto and repository method to
  aggregate counts per user (excluding deleted assets), expose via
  album response only when shared and counts > 0
- web: display contributor counts in Album Users modal next to each
  member’s role

This helps users understand participation levels in shared albums.

* Add ContributorCountResponseDto and expose contributorCounts
on AlbumResponseDto in OpenAPI spec. Regenerate TypeScript SDK
and mobile OpenAPI clients to include new types.

No breaking changes; fields are additive.

* fix: shrink age view to fit and not overflow (#22405)

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

* chore: post release tasks (#22587)

* chore: clean auth-user entity on reset (#22583)

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

* fix: mitigate database lock scenario when running full sync in splash screen page (#22608)

* fix: improve sync backup error indicator   (#22527)

* fix: improve sync indicator error

* prefer backup disabled icon before error

---------

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

* fix: bottom navigation bar overlay sheet info (#22610)

* fix: respect storage indicator setting (#22596)

* fix: respect storage indicator size setting

* remove black bar on the bottom of the setting scaffold page

---------

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

* fix: do not run multiple engines on cold startup (#22518)

fix: do not run multiple engines on app startup

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

* fix: album selector in favorite view (#22612)

* chore(web): update translations (#22486)

Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/az/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/el/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/kn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ml/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Arthur Bols <arthur@bols.dev>
Co-authored-by: Ben Kim <benkim1129@gmail.com>
Co-authored-by: César Gómez <cegomez@gmail.com>
Co-authored-by: DR <weblate-kavita.snowflake668@slmail.me>
Co-authored-by: DevServs <bonov@mail.ru>
Co-authored-by: Emil Friis Osmann <Emilfriisosmann@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Godwin T <godwintgn@protonmail.com>
Co-authored-by: Hristo T <hristotarnev@gmail.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: KecskeTech <teonyitas@gmail.com>
Co-authored-by: Kiril Panayotov <eccyboo@protonmail.com>
Co-authored-by: Liviu Roman <contact@liviuroman.com>
Co-authored-by: Lorenzo <artale.lorenzo@outlook.it>
Co-authored-by: Marcelo Popper Costa <marcelo_popper@hotmail.com>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Miryusif Rahimov <miryusifrahimov@gmail.com>
Co-authored-by: Msaood <msaood@msaood.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Pedro Vendeira <vendeira.pedro@gmail.com>
Co-authored-by: PontusÖsterlindh <pontus@osterlindh.com>
Co-authored-by: Rahees <ahdrahees.dev@gmail.com>
Co-authored-by: Sandeep R <sandeep1891995@gmail.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: TV Box <realceday.tvbox@gmail.com>
Co-authored-by: Tino Altmann <usinggrant@hotmail.de>
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org>
Co-authored-by: Vegard Fladby <vegard@fladby.org>
Co-authored-by: anton garcias <isaga.percompartir@gmail.com>
Co-authored-by: chamdim <chamdim@protonmail.com>
Co-authored-by: longlarry <weblate.gm@tuta.io>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: swever <swever@users.noreply.hosted.weblate.org>
Co-authored-by: தமிழ்நேரம் <tamilneram247@gmail.com>
Co-authored-by: 안세훈 <on9686@gmail.com>

* chore: version v2.0.1

* fix(docs): link to immich docs does not lead correctly to docs (#22687)

* fix(server): fix chunking Postgres query parameters (#22684)

* feat(server): improve checkAlbumAccess query performance (#22467)

* Fix slow SQL query in checkAlbumAccess caused by the array overlap operator &&

* Update access.repository.sql

* Rewrite the query to pass assetIds once as a single array parameter

* chore: mark VSCode tasks as background tasks (#22631)

VSCode expect tasks that aren't marked as background tasks to finish eventually. That's not how a dev-server is supposed to work, we expect it to run for basically infinite time.

By marking those tasks as background tasks, VSCode stops showing the infinite loading spinner on those processes.

* fix(ml): Resolve IPv6 startup crash and healthcheck failure (#22387)

* fix(ml): Resolve IPv6 startup crash and healthcheck failure

Fixes #13782

* fix(ml): updated the fix to use the std lib

* Apply code formatting to __main__.py

* fix(server): override reserved color metadata for video thumbnails (#22348)

override reserved metadata

* fix(mobile): trash description cut off (#22662)

* fix(mobile): empty album description does not save (#22649)

* fix(mobile): video player using ref after disposal (#21843)

check if disposed

* docs: add job order diagram (#22673)

* docs: add job order diagram

* wording

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>

* fix: missing responsive calculation in UserPageLayout (#22455)

* fix: use full-size image for non-web-compatible panoramas (#20359)

* fix(web): use full-size image for non-web-compatible panoramas

* always generate full-size image for panoramas

* add unit test

* fix formatting

---------

Co-authored-by: gergo= <gergo@pitty.hu>

* chore: update cli docs to pnpm (#22702)

update cli docs to pnpm

* chore(web): upgrade ESLint and plugins (#22495)

* chore(web): upgrade ESLint and plugins, simplify linting configuration

- Update eslint from ^9.18.0 to ^9.36.0
- Update eslint plugins:
  - eslint-plugin-svelte: ^3.9.0 → ^3.12.4
  - eslint-plugin-unicorn: ^60.0.0 → ^61.0.2
  - svelte-eslint-parser: ^1.2.0 → ^1.3.3
  - typescript-eslint: ^8.28.0 → ^8.45.0
- Remove eslint-p dependency in favor of native eslint concurrency
- Add unicorn/no-array-sort rule exception
- Update linting scripts to use eslint's native --concurrency flag
- Update Makefile and mise.toml to reflect simplified lint commands
- Update GitHub Actions workflow to use standard pnpm lint command

* pnpm dedupe

---------

Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>

* fix(web): do not notify on patch releases (#22591)

* chore: post release tasks (#22616)

* fix: hide view in timeline button on local timeline (#22713)

* chore(server): support vectorchord 0.5.x (#21602)

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>

* fix: Fix issue fail to download iOS live photos (#22708)

Co-authored-by: bwees <brandonwees@gmail.com>

* fix(docs): Remove immich_remove_offline_files as no longer functional (#21774)

Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Brandon Wees <brandonwees@gmail.com>

* fix(mobile): closing editor goes back to main page (#22647)

Co-authored-by: bwees <brandonwees@gmail.com>

* docs: update TrueNAS migration instructions (#22463)

Co-authored-by: bo0tzz <git@bo0tzz.me>
Co-authored-by: Nicholas Flamy <30300649+NicholasFlamy@users.noreply.github.com>

* docs: update Synology install guide (#21996)

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>

* fix: improve the selected sidebar item text color in dark mode (#22640)

* chore(deps): update redis:6.2-alpine docker digest to 2185e74 (#22718)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore: update devcontainers for trixie, devenv changes (#22194)

* fix(deps): update dependency device_info_plus to v12 (#22724)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency flutter to v3.35.5 (#22720)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update github-actions (#22721)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix: --no-git-checks on pnpm publish (#22715)

* fix: --no-git-checks on sdk publish

* fix: --no-git-checks on cli publish

* refactor(web): Clarify property names in Timeline and Scrubber (#22265)

refactor(web): Clarify property names in Timeline and Scrubber

  Renamed properties across Timeline/Scrubber components for clarity:
  - scrubOverallPercent → timelineScrollPercent
  - scrubberMonthPercent → viewportTopMonthScrollPercent
  - scrubberMonth → viewportTopMonth
  - leadout → isInLeadOutSection

  Additional changes:
  - Updated ScrubberListener signature to accept object parameter
  - Added detailed JSDoc comments for all Scrubber props
  - Fixed callback invocations to use new object syntax
  - Aligned Timeline's local state variables with Scrubber prop names

* fix: promote to foreground service before starting engine (#22517)

fix: show notification from native

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

* refactor(web): extract timeline keyboard actions into separate component (#22266)

refactor(web): extract timeline keyboard actions into separate component

Extracts keyboard shortcuts and related functionality from Timeline component into a dedicated TimelineKeyboardActions component for better separation of concerns and maintainability.

* feat: make skeleton title optional (#22396)

feat: skeleton title is optional

feat: skeleton title optional

* refactor(web): extract asset viewer logic from Timeline into TimelineAssetViewer component (#22268)

refactor(web): extract asset viewer logic from Timeline into TimelineAssetViewer component

- Extracted asset viewer navigation and action handling logic from Timeline.svelte into a dedicated TimelineAssetViewer component
- Reduces Timeline.svelte complexity by ~150 lines and improves separation of concerns
- No functional changes - purely a refactoring to improve code organization

## Changes
- Created new TimelineAssetViewer.svelte component containing all asset viewer-related logic
- Moved handlePrevious, handleNext, handleRandom, handleClose, handlePreAction, and handleAction methods
- Timeline.svelte now only passes required props to the new component
- Maintained all existing functionality including navigation, asset actions, and stack management

* chore: track full actions/cache version in comment (#22359)

* fix(ml): ipv6 check (#22735)

* chore(deps): cache pnpm dependencies in prod build (#22555)

* cache pnpm dependencies

use different ids to be safe

unnecessary lines

* use buildcache folder

* chore: use isar immich fork (#22738)

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

* fix: bottom sheet blank with local assets that have remote counterparts (#22743)

* chore(deps): update dependency @types/node to ^22.18.8 (#22719)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency nodemailer to v7.0.7 [security] (#22740)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency connectivity_plus to v7 (#22723)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>

* chore: use hosted isar flutter libs (#22757)

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

* fix: skip local only assets in move to lock action (#22728)

* fix:prefer trashing to deletions

* skip local only assets in move to lock action

---------

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

* fix: brief flashing when swiping from video (#22187)

* fix(web): Uniform random distribution during shuffle (#19902)

feat: better random distribution

* fix: persist search page scroll offset between rebuilds (#22733)

fix: persist search scroll between rebuilds

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

* docs: add some external library notes (#22776)

* feat(web): seconds and milliseconds in timestamps (#20337)

* fix(web): seconds in timestamps

* changed date-input step to provide millisecond precision

* feat(cli): add debug development config (#22712)

* add debug and change ts-node with tsx

* update pr changes

* update pnpm-lock

* remove ts-node from readme

* typo

* resolve conflicts

* remove tsx

* launch from dist

* add preLaunchTask

* update readme

* undo main in package.json

* remove typo

* Apply suggestion from @bwees

Co-authored-by: Brandon Wees <brandonwees@gmail.com>

* revert pnpm-lock changes

* @jrasm91 suggestions

* chore: run node with source maps

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: Brandon Wees <brandonwees@gmail.com>

* docs: add Immich-Stack to community-projects (#21563)

docs: add Immich Stack community project

Co-authored-by: Jason Rasmussen <jason@rasm.me>

* feat(web): Add upload to stack action (#19842)

* feat(web): Add upload to stack action

* Event handling and translation

* Update asset viewer instead

* lint, improve upload return type

* Add suggestions from code review

* Resolve merge conflicts

* Apply suggestions from code review

* feat(server): add `immich.users.total` metric (#21780)

* Add immich.users.total metric

* Fix tests & one lint error

* Lint

* Fix SQL Schema checks

* Fix nit

* Use workers argument in OnEvent hook and remove condition from method body

* feat(docs): add zh_TW Traditional Chinese version README (#22703)

docs: add zh_TW Traditional Chinese version README

* chore: ignore renovate major updates for postgres image (#22764)

* fix: remove postgres exclude datasource match (#22811)

* chore(deps): update github-actions (major) (#22810)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix: revert terragrunt-action bump (#22812)

* chore: don't enforce runes (#22813)

* chore(deps): update base-image to v202510092146 (major) (#22818)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update typescript-projects (#22809)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>

* fix: only cast to device if the asset is a RemoteAsset (#22805)

* feat: (perf) remove scroll compensation (#22837)

* fix(deps): update dependency happy-dom to v20 [security] (#22846)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update github-actions (#22793)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix: various typos (#22867)

Found via `codespell -q 3 -S "*.svg,./i18n,./docs/package-lock.json,./readme_i18n,./mobile/assets/i18n" -L afterall,devlop,finaly,inout,nd,optin,renderd,sade`

* fix: ios skip posting hash response after detached from engine (#22695)

* skip posting message after detached from engine

* review changes

* cancel plugin before destroying engine

---------

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

* chore(deps): update ghcr.io/immich-app/postgres:14-vectorchord0.3.0 docker digest to 6f3e9d2 (#22912)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0 docker digest to bcf6335 (#22913)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix: re-add scroll compensation (efficiently) (#22848)

* fix: re-add scroll compensation (efficient)

* Rename showSkeleton to invisible. Adjust skeleton margins, invisible support.

* Fix faulty logic, simplify

* Calculate ratios and determine compensation strategy: height comp for above/partiality visible, month-scroll comp within a fully visible month.

---------

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

* fix: shared album control permissions (#22435)

* fix: shared album control permissions

* fix: properly display "add photos"

* fix: dont allow modification of album order

* fix: album title/description edit from app bar

* chore: code review changes

* chore: format translations

* chore: lintings

* fix: show dialog before delete local action (#22280)

* fix: show dialog on delete local action

# Conflicts:
#	mobile/lib/repositories/asset_media.repository.dart

* button style

---------

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

* fix(deps): update dependency kysely-postgres-js to v3 (#22924)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update redis:6.2-alpine docker digest to 77697a7 (#22915)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update typescript-projects (#22918)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>

* feat: local album events notification (#22817)

* feat: local album events notification

* pr feedback

* show number of unread notification

* chore: refactor show view in timeline button (#22894)

* chore: refactor show view in timeline button

This refactor includes changes to notify asset viewer about where an asset was shown from.

* chore: realized I could just pull from the timelineProvider instead of storing it in the asset viewer state

* chore: rename enum to TimelineOrigin and update members

* fix: update isOwner condition

---------

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

* chore(web): update translations (#22623)

Translate-URL: https://hosted.weblate.org/projects/immich/immich/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ar/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/be/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/el/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/gl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ka/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/mr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pa/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ro/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sr_Latn/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Abhijeet Bonde <abhijeetbonde19@gmail.com>
Co-authored-by: Adam Uchmanowicz <auchmanowicz@gmail.com>
Co-authored-by: Adrian Hermida <adrian.hermida.baloira@gmail.com>
Co-authored-by: Aleksa Milošević <akimaki15@gmail.com>
Co-authored-by: Amin <amnsharif@gmail.com>
Co-authored-by: AndreiP28 <andreiprica28@gmail.com>
Co-authored-by: António Santos <antoniomsantos99@gmail.com>
Co-authored-by: Asger Mogensen <asgermog@gmail.com>
Co-authored-by: Christoph Auer <Christoph.Auer@pilsheim.de>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: DevServs <bonov@mail.ru>
Co-authored-by: Eetu Mäenpää <me@eetumaenpaa.fi>
Co-authored-by: Felipe Garcia <garcia.o.felipe@gmail.com>
Co-authored-by: Filip Joković <filip@jokovic.dev>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com>
Co-authored-by: Jason Song <songpeiheng@gmail.com>
Co-authored-by: Javier Villanueva García <jvg2203@gmail.com>
Co-authored-by: Jordy H <jordy@hoebergen.net>
Co-authored-by: Jorge Montejo <jorgemon.lopez@gmail.com>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: Konstantinos D <kdemer@yahoo.com>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Liviu Roman <contact@liviuroman.com>
Co-authored-by: Lorenz Baum <LorenzBaum@gmx.de>
Co-authored-by: Lukas Konsin <lukaskonsin@proton.me>
Co-authored-by: Mandeep <mandeeps708@gmail.com>
Co-authored-by: Marc Casillas <mcasillassu@gmail.com>
Co-authored-by: Marcelo Popper Costa <marcelo_popper@hotmail.com>
Co-authored-by: MatijaThe245th <matija245matakovic@gmail.com>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Mees Frensel <meesfrensel@gmail.com>
Co-authored-by: Mirko <itzmirko@itzmirko.it>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Oleksandr Yurov <oyurov@icloud.com>
Co-authored-by: Orkun Sürel <orkunsurel@gmail.com>
Co-authored-by: Peter Dave Hello <hsu@peterdavehello.org>
Co-authored-by: Philipp Burndorfer <phi.bur@gmx.at>
Co-authored-by: Prasanth Baskar <bupdprasanth@gmail.com>
Co-authored-by: Roman Zhukov <Softver161@gmail.com>
Co-authored-by: Sayan Goswami <goswami.sayan47@gmail.com>
Co-authored-by: Sergey Katsubo <skatsubo@gmail.com>
Co-authored-by: Simon Bierwald <simon.bierwald@gmail.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: TV Box <realceday.tvbox@gmail.com>
Co-authored-by: Taiki M <vexingly-many-mace@duck.com>
Co-authored-by: Theodore Zhvania <zhvania@ted.ge>
Co-authored-by: Tim De Meyer <demeyer.tim@gmail.com>
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org>
Co-authored-by: Valentino Harpa <valen.ginga@gmail.com>
Co-authored-by: Vegard Fladby <vegard@fladby.org>
Co-authored-by: Willem Schipper <git@willem.page>
Co-authored-by: Yago Raña Gayoso <yago.rana.gayoso@gmail.com>
Co-authored-by: Zurab Sajaia <vavalomi@hotmail.com>
Co-authored-by: albanobattistella <albanobattistella@gmail.com>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Co-authored-by: dark&white <darkwhite@users.noreply.hosted.weblate.org>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: findussoft <sella_violett_8i@icloud.com>
Co-authored-by: kiwinho <kiwicaja@gmail.com>
Co-authored-by: millallo <millallo@tiscali.it>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: rokon001 <rnacc3579@gmail.com>
Co-authored-by: vaibhav kumar <catvaku@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Максим Горпиніч <gorpinicmaksim0@gmail.com>
Co-authored-by: தமிழ்நேரம் <tamilneram247@gmail.com>

* chore: version v2.1.0

* refactor

* question marks are the enemy

* refactor count map

* update readme

* e2e

* count of 0 is impossible

* useless async

---------

Co-authored-by: Chaoscontrol <6642238+Chaoscontrol@users.noreply.github.com>
Co-authored-by: Brandon Wees <brandonwees@gmail.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Weblate (bot) <hosted@weblate.org>
Co-authored-by: Arthur Bols <arthur@bols.dev>
Co-authored-by: Ben Kim <benkim1129@gmail.com>
Co-authored-by: César Gómez <cegomez@gmail.com>
Co-authored-by: DR <weblate-kavita.snowflake668@slmail.me>
Co-authored-by: DevServs <bonov@mail.ru>
Co-authored-by: Emil Friis Osmann <Emilfriisosmann@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Godwin T <godwintgn@protonmail.com>
Co-authored-by: Hristo T <hristotarnev@gmail.com>
Co-authored-by: Hurricane-32 <rodrigorimo@hotmail.com>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: KecskeTech <teonyitas@gmail.com>
Co-authored-by: Kiril Panayotov <eccyboo@protonmail.com>
Co-authored-by: Liviu Roman <contact@liviuroman.com>
Co-authored-by: Lorenzo <artale.lorenzo@outlook.it>
Co-authored-by: Marcelo Popper Costa <marcelo_popper@hotmail.com>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Miryusif Rahimov <miryusifrahimov@gmail.com>
Co-authored-by: Msaood <msaood@msaood.com>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Pedro Vendeira <vendeira.pedro@gmail.com>
Co-authored-by: PontusÖsterlindh <pontus@osterlindh.com>
Co-authored-by: Rahees <ahdrahees.dev@gmail.com>
Co-authored-by: Sandeep R <sandeep1891995@gmail.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: TV Box <realceday.tvbox@gmail.com>
Co-authored-by: Tino Altmann <usinggrant@hotmail.de>
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org>
Co-authored-by: Vegard Fladby <vegard@fladby.org>
Co-authored-by: anton garcias <isaga.percompartir@gmail.com>
Co-authored-by: chamdim <chamdim@protonmail.com>
Co-authored-by: longlarry <weblate.gm@tuta.io>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: swever <swever@users.noreply.hosted.weblate.org>
Co-authored-by: தமிழ்நேரம் <tamilneram247@gmail.com>
Co-authored-by: 안세훈 <on9686@gmail.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Xavier Dupuis <xavier0978@hotmail.fr>
Co-authored-by: Sergey Katsubo <skatsubo@gmail.com>
Co-authored-by: Adrian Jost <22987140+adrianjost@users.noreply.github.com>
Co-authored-by: Cokodayo <78474654+CaptainJack2491@users.noreply.github.com>
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Yaros <thedj.launchpadder.dmx512@gmail.com>
Co-authored-by: USBAkimbo <71508071+USBAkimbo@users.noreply.github.com>
Co-authored-by: Min Idzelis <min123@gmail.com>
Co-authored-by: grgergo <gergo_g@proton.me>
Co-authored-by: gergo= <gergo@pitty.hu>
Co-authored-by: Jorge Montejo <jorgemon.lopez@gmail.com>
Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: Diogo Correia <me@diogotc.com>
Co-authored-by: CuberL <liaoziyue10@gmail.com>
Co-authored-by: Xantin <56741168+Xiticks@users.noreply.github.com>
Co-authored-by: bo0tzz <git@bo0tzz.me>
Co-authored-by: Nicholas Flamy <30300649+NicholasFlamy@users.noreply.github.com>
Co-authored-by: TDR001 <redp50@outlook.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Saschl <19493808+Saschl@users.noreply.github.com>
Co-authored-by: Pascal Sommer <Pascal-So@users.noreply.github.com>
Co-authored-by: kaziu687 <kaziu687@gmail.com>
Co-authored-by: Qhilm <3350433+Qhilm@users.noreply.github.com>
Co-authored-by: Sebastian Schneider <sese.tailor@gmx.net>
Co-authored-by: Tushar Harsora <tusharharsora95@gmail.com>
Co-authored-by: Peter Dave Hello <hsu@peterdavehello.org>
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
Co-authored-by: luzpaz <luzpaz@users.noreply.github.com>
Co-authored-by: Abhijeet Bonde <abhijeetbonde19@gmail.com>
Co-authored-by: Adam Uchmanowicz <auchmanowicz@gmail.com>
Co-authored-by: Adrian Hermida <adrian.hermida.baloira@gmail.com>
Co-authored-by: Aleksa Milošević <akimaki15@gmail.com>
Co-authored-by: Amin <amnsharif@gmail.com>
Co-authored-by: AndreiP28 <andreiprica28@gmail.com>
Co-authored-by: António Santos <antoniomsantos99@gmail.com>
Co-authored-by: Asger Mogensen <asgermog@gmail.com>
Co-authored-by: Christoph Auer <Christoph.Auer@pilsheim.de>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: Eetu Mäenpää <me@eetumaenpaa.fi>
Co-authored-by: Felipe Garcia <garcia.o.felipe@gmail.com>
Co-authored-by: Filip Joković <filip@jokovic.dev>
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com>
Co-authored-by: Jason Song <songpeiheng@gmail.com>
Co-authored-by: Javier Villanueva García <jvg2203@gmail.com>
Co-authored-by: Jordy H <jordy@hoebergen.net>
Co-authored-by: Konstantinos D <kdemer@yahoo.com>
Co-authored-by: Leo Bottaro <github@leobottaro.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: Lorenz Baum <LorenzBaum@gmx.de>
Co-authored-by: Lukas Konsin <lukaskonsin@proton.me>
Co-authored-by: Mandeep <mandeeps708@gmail.com>
Co-authored-by: Marc Casillas <mcasillassu@gmail.com>
Co-authored-by: MatijaThe245th <matija245matakovic@gmail.com>
Co-authored-by: Mees Frensel <meesfrensel@gmail.com>
Co-authored-by: Mirko <itzmirko@itzmirko.it>
Co-authored-by: Oleksandr Yurov <oyurov@icloud.com>
Co-authored-by: Orkun Sürel <orkunsurel@gmail.com>
Co-authored-by: Philipp Burndorfer <phi.bur@gmx.at>
Co-authored-by: Prasanth Baskar <bupdprasanth@gmail.com>
Co-authored-by: Roman Zhukov <Softver161@gmail.com>
Co-authored-by: Sayan Goswami <goswami.sayan47@gmail.com>
Co-authored-by: Simon Bierwald <simon.bierwald@gmail.com>
Co-authored-by: Taiki M <vexingly-many-mace@duck.com>
Co-authored-by: Theodore Zhvania <zhvania@ted.ge>
Co-authored-by: Tim De Meyer <demeyer.tim@gmail.com>
Co-authored-by: Valentino Harpa <valen.ginga@gmail.com>
Co-authored-by: Willem Schipper <git@willem.page>
Co-authored-by: Yago Raña Gayoso <yago.rana.gayoso@gmail.com>
Co-authored-by: Zurab Sajaia <vavalomi@hotmail.com>
Co-authored-by: albanobattistella <albanobattistella@gmail.com>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Co-authored-by: dark&white <darkwhite@users.noreply.hosted.weblate.org>
Co-authored-by: eav5jhl0 <eav5jhl0@users.noreply.hosted.weblate.org>
Co-authored-by: findussoft <sella_violett_8i@icloud.com>
Co-authored-by: kiwinho <kiwicaja@gmail.com>
Co-authored-by: millallo <millallo@tiscali.it>
Co-authored-by: rokon001 <rnacc3579@gmail.com>
Co-authored-by: vaibhav kumar <catvaku@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Максим Горпиніч <gorpinicmaksim0@gmail.com>
2025-10-14 17:34:20 -04:00
Mert
1b62c2ef55 feat(ml): coreml (#17718)
* coreml

* add test

* use arena by default in native installation

* fix tests

* add env to docs

* remove availability envs
2025-10-14 17:51:31 +00:00
736 changed files with 23894 additions and 12178 deletions

2
.github/.nvmrc vendored
View File

@@ -1 +1 @@
22.20.0
24.11.0

2
.github/labeler.yml vendored
View File

@@ -31,7 +31,7 @@ documentation:
🧠machine-learning:
- changed-files:
- any-glob-to-any-file:
- machine-learning/app/**
- machine-learning/**
changelog:translation:
- head-branch: ['^chore/translations$']

View File

@@ -1,12 +1,16 @@
name: Build Mobile
on:
workflow_dispatch:
workflow_call:
inputs:
ref:
required: false
type: string
environment:
description: 'Target environment'
required: true
default: 'development'
type: string
secrets:
KEY_JKS:
required: true
@@ -16,6 +20,30 @@ on:
required: true
ANDROID_STORE_PASSWORD:
required: true
APP_STORE_CONNECT_API_KEY_ID:
required: true
APP_STORE_CONNECT_API_KEY_ISSUER_ID:
required: true
APP_STORE_CONNECT_API_KEY:
required: true
IOS_CERTIFICATE_P12:
required: true
IOS_CERTIFICATE_PASSWORD:
required: true
IOS_PROVISIONING_PROFILE:
required: true
IOS_PROVISIONING_PROFILE_SHARE_EXTENSION:
required: true
IOS_PROVISIONING_PROFILE_WIDGET_EXTENSION:
required: true
IOS_DEVELOPMENT_PROVISIONING_PROFILE:
required: true
IOS_DEVELOPMENT_PROVISIONING_PROFILE_SHARE_EXTENSION:
required: true
IOS_DEVELOPMENT_PROVISIONING_PROFILE_WIDGET_EXTENSION:
required: true
FASTLANE_TEAM_ID:
required: true
pull_request:
push:
branches: [main]
@@ -34,10 +62,17 @@ jobs:
outputs:
should_run: ${{ steps.check.outputs.should_run }}
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Check what should run
id: check
uses: immich-app/devtools/actions/pre-job@5f91b52dfbb92b8d96ca411ab59c896cd59714ca # pre-job-action-v1.1.0
uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
with:
github-token: ${{ steps.token.outputs.token }}
filters: |
mobile:
- 'mobile/**'
@@ -55,10 +90,17 @@ jobs:
runs-on: mich
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
ref: ${{ inputs.ref || github.sha }}
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Create the Keystore
env:
@@ -140,3 +182,142 @@ jobs:
mobile/android/.gradle
mobile/.dart_tool
key: ${{ steps.cache-gradle-restore.outputs.cache-primary-key }}
build-sign-ios:
name: Build and sign iOS
needs: pre-job
permissions:
contents: read
# Run on main branch or workflow_dispatch
if: ${{ !github.event.pull_request.head.repo.fork && fromJSON(needs.pre-job.outputs.should_run).mobile == true && github.ref == 'refs/heads/main' }}
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
with:
ref: ${{ inputs.ref || github.sha }}
persist-credentials: false
- name: Setup Flutter SDK
uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2
with:
channel: 'stable'
flutter-version-file: ./mobile/pubspec.yaml
cache: true
- name: Install Flutter dependencies
working-directory: ./mobile
run: flutter pub get
- name: Generate translation files
run: dart run easy_localization:generate -S ../i18n && dart run bin/generate_keys.dart
working-directory: ./mobile
- name: Generate platform APIs
run: make pigeon
working-directory: ./mobile
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3'
working-directory: ./mobile/ios
- name: Install CocoaPods dependencies
working-directory: ./mobile/ios
run: |
pod install
- name: Install Fastlane
working-directory: ./mobile/ios
run: |
gem install bundler
bundle config set --local path 'vendor/bundle'
bundle install
- name: Create API Key
env:
API_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ID }}
API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ISSUER_ID }}
API_KEY_CONTENT: ${{ secrets.APP_STORE_CONNECT_API_KEY }}
working-directory: ./mobile/ios
run: |
mkdir -p ~/.appstoreconnect/private_keys
echo "$API_KEY_CONTENT" | base64 --decode > ~/.appstoreconnect/private_keys/AuthKey_${API_KEY_ID}.p8
- name: Import Certificate and Provisioning Profiles
env:
IOS_CERTIFICATE_P12: ${{ secrets.IOS_CERTIFICATE_P12 }}
IOS_CERTIFICATE_PASSWORD: ${{ secrets.IOS_CERTIFICATE_PASSWORD }}
IOS_PROVISIONING_PROFILE: ${{ secrets.IOS_PROVISIONING_PROFILE }}
IOS_PROVISIONING_PROFILE_SHARE_EXTENSION: ${{ secrets.IOS_PROVISIONING_PROFILE_SHARE_EXTENSION }}
IOS_PROVISIONING_PROFILE_WIDGET_EXTENSION: ${{ secrets.IOS_PROVISIONING_PROFILE_WIDGET_EXTENSION }}
IOS_DEVELOPMENT_PROVISIONING_PROFILE: ${{ secrets.IOS_DEVELOPMENT_PROVISIONING_PROFILE }}
IOS_DEVELOPMENT_PROVISIONING_PROFILE_SHARE_EXTENSION: ${{ secrets.IOS_DEVELOPMENT_PROVISIONING_PROFILE_SHARE_EXTENSION }}
IOS_DEVELOPMENT_PROVISIONING_PROFILE_WIDGET_EXTENSION: ${{ secrets.IOS_DEVELOPMENT_PROVISIONING_PROFILE_WIDGET_EXTENSION }}
ENVIRONMENT: ${{ inputs.environment || 'development' }}
working-directory: ./mobile/ios
run: |
# Decode certificate
echo "$IOS_CERTIFICATE_P12" | base64 --decode > certificate.p12
# Decode provisioning profiles based on environment
if [[ "$ENVIRONMENT" == "development" ]]; then
echo "$IOS_DEVELOPMENT_PROVISIONING_PROFILE" | base64 --decode > profile_dev.mobileprovision
echo "$IOS_DEVELOPMENT_PROVISIONING_PROFILE_SHARE_EXTENSION" | base64 --decode > profile_dev_share.mobileprovision
echo "$IOS_DEVELOPMENT_PROVISIONING_PROFILE_WIDGET_EXTENSION" | base64 --decode > profile_dev_widget.mobileprovision
ls -lh profile_dev*.mobileprovision
else
echo "$IOS_PROVISIONING_PROFILE" | base64 --decode > profile.mobileprovision
echo "$IOS_PROVISIONING_PROFILE_SHARE_EXTENSION" | base64 --decode > profile_share.mobileprovision
echo "$IOS_PROVISIONING_PROFILE_WIDGET_EXTENSION" | base64 --decode > profile_widget.mobileprovision
ls -lh profile*.mobileprovision
fi
- name: Create keychain and import certificate
env:
KEYCHAIN_PASSWORD: ${{ secrets.IOS_CERTIFICATE_PASSWORD }}
CERTIFICATE_PASSWORD: ${{ secrets.IOS_CERTIFICATE_PASSWORD }}
working-directory: ./mobile/ios
run: |
# Create keychain
security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
security set-keychain-settings -t 3600 -u build.keychain
# Import certificate
security import certificate.p12 -k build.keychain -P "$CERTIFICATE_PASSWORD" -T /usr/bin/codesign -T /usr/bin/security
security set-key-partition-list -S apple-tool:,apple: -s -k "$KEYCHAIN_PASSWORD" build.keychain
# Verify certificate was imported
security find-identity -v -p codesigning build.keychain
- name: Build and deploy to TestFlight
env:
FASTLANE_TEAM_ID: ${{ secrets.FASTLANE_TEAM_ID }}
IOS_CERTIFICATE_PASSWORD: ${{ secrets.IOS_CERTIFICATE_PASSWORD }}
KEYCHAIN_NAME: build.keychain
KEYCHAIN_PASSWORD: ${{ secrets.IOS_CERTIFICATE_PASSWORD }}
APP_STORE_CONNECT_API_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ID }}
APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ISSUER_ID }}
ENVIRONMENT: ${{ inputs.environment || 'development' }}
working-directory: ./mobile/ios
run: |
if [[ "$ENVIRONMENT" == "development" ]]; then
bundle exec fastlane gha_testflight_dev
else
bundle exec fastlane gha_release_prod
fi
- name: Clean up keychain
if: always()
run: |
security delete-keychain build.keychain || true
- name: Upload IPA artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: ios-release-ipa
path: mobile/ios/Runner.ipa

View File

@@ -18,14 +18,21 @@ jobs:
contents: read
actions: write
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Cleanup
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ steps.token.outputs.token }}
REF: ${{ github.ref }}
run: |
gh extension install actions/gh-actions-cache

View File

@@ -29,15 +29,22 @@ jobs:
working-directory: ./cli
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './cli/.nvmrc'
registry-url: 'https://registry.npmjs.org'
@@ -64,10 +71,17 @@ jobs:
needs: publish
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Set up QEMU
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0

View File

@@ -35,7 +35,7 @@ jobs:
needs: [get_body, should_run]
if: ${{ needs.should_run.outputs.should_run == 'true' }}
container:
image: ghcr.io/immich-app/mdq:main@sha256:d8ae47cf2e6cf4e2559bd57a60b73674fe44f897cba2c2bddff2987a05be10a4
image: ghcr.io/immich-app/mdq:main@sha256:6b8450bfc06770af1af66bce9bf2ced7d1d9b90df1a59fc4c83a17777a9f6723
outputs:
checked: ${{ steps.get_checkbox.outputs.checked }}
steps:

View File

@@ -43,14 +43,21 @@ jobs:
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6
uses: github/codeql-action/init@16140ae1a102900babc80a33c44059580f687047 # v4.30.9
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -63,7 +70,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6
uses: github/codeql-action/autobuild@16140ae1a102900babc80a33c44059580f687047 # v4.30.9
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@@ -76,6 +83,6 @@ jobs:
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6
uses: github/codeql-action/analyze@16140ae1a102900babc80a33c44059580f687047 # v4.30.9
with:
category: '/language:${{matrix.language}}'

View File

@@ -22,10 +22,17 @@ jobs:
outputs:
should_run: ${{ steps.check.outputs.should_run }}
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Check what should run
id: check
uses: immich-app/devtools/actions/pre-job@5f91b52dfbb92b8d96ca411ab59c896cd59714ca # pre-job-action-v1.1.0
uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
with:
github-token: ${{ steps.token.outputs.token }}
filters: |
server:
- 'server/**'
@@ -58,6 +65,7 @@ jobs:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Re-tag image
env:
REGISTRY_NAME: 'ghcr.io'
@@ -87,6 +95,7 @@ jobs:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Re-tag image
env:
REGISTRY_NAME: 'ghcr.io'
@@ -107,24 +116,23 @@ jobs:
matrix:
include:
- device: cpu
tag-suffix: ''
- device: cuda
tag-suffix: '-cuda'
suffixes: '-cuda'
platforms: linux/amd64
- device: openvino
tag-suffix: '-openvino'
suffixes: '-openvino'
platforms: linux/amd64
- device: armnn
tag-suffix: '-armnn'
suffixes: '-armnn'
platforms: linux/arm64
- device: rknn
tag-suffix: '-rknn'
suffixes: '-rknn'
platforms: linux/arm64
- device: rocm
tag-suffix: '-rocm'
suffixes: '-rocm'
platforms: linux/amd64
runner-mapping: '{"linux/amd64": "mich"}'
uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@946acac326940f8badf09ccf591d9cb345d6a689 # multi-runner-build-workflow-v0.2.1
uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@47a2ee86898ccff51592d6572391fb1abcd7f782 # multi-runner-build-workflow-v2.0.1
permissions:
contents: read
actions: read
@@ -138,7 +146,7 @@ jobs:
dockerfile: machine-learning/Dockerfile
platforms: ${{ matrix.platforms }}
runner-mapping: ${{ matrix.runner-mapping }}
tag-suffix: ${{ matrix.tag-suffix }}
suffixes: ${{ matrix.suffixes }}
dockerhub-push: ${{ github.event_name == 'release' }}
build-args: |
DEVICE=${{ matrix.device }}
@@ -147,7 +155,7 @@ jobs:
name: Build and Push Server
needs: pre-job
if: ${{ fromJSON(needs.pre-job.outputs.should_run).server == true }}
uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@946acac326940f8badf09ccf591d9cb345d6a689 # multi-runner-build-workflow-v0.2.1
uses: immich-app/devtools/.github/workflows/multi-runner-build.yml@47a2ee86898ccff51592d6572391fb1abcd7f782 # multi-runner-build-workflow-v2.0.1
permissions:
contents: read
actions: read

View File

@@ -20,10 +20,17 @@ jobs:
outputs:
should_run: ${{ steps.check.outputs.should_run }}
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Check what should run
id: check
uses: immich-app/devtools/actions/pre-job@5f91b52dfbb92b8d96ca411ab59c896cd59714ca # pre-job-action-v1.1.0
uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
with:
github-token: ${{ steps.token.outputs.token }}
filters: |
docs:
- 'docs/**'
@@ -46,16 +53,23 @@ jobs:
working-directory: ./docs
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './docs/.nvmrc'
cache: 'pnpm'

View File

@@ -5,6 +5,9 @@ on:
types:
- completed
env:
TG_NON_INTERACTIVE: 'true'
jobs:
checks:
name: Docs Deploy Checks
@@ -16,12 +19,19 @@ jobs:
parameters: ${{ steps.parameters.outputs.result }}
artifact: ${{ steps.get-artifact.outputs.result }}
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- if: ${{ github.event.workflow_run.conclusion != 'success' }}
run: echo 'The triggering workflow did not succeed' && exit 1
- name: Get artifact
id: get-artifact
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
github-token: ${{ steps.token.outputs.token }}
script: |
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
@@ -42,6 +52,7 @@ jobs:
env:
HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
with:
github-token: ${{ steps.token.outputs.token }}
script: |
const eventType = context.payload.workflow_run.event;
const isFork = context.payload.workflow_run.repository.fork;
@@ -107,10 +118,20 @@ jobs:
pull-requests: write
if: ${{ fromJson(needs.checks.outputs.artifact).found && fromJson(needs.checks.outputs.parameters).shouldDeploy }}
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Setup Mise
uses: immich-app/devtools/actions/use-mise@cd24790a7f5f6439ac32cc94f5523cb2de8bfa8c # use-mise-action-v1.1.0
- name: Load parameters
id: parameters
@@ -118,6 +139,7 @@ jobs:
env:
PARAM_JSON: ${{ needs.checks.outputs.parameters }}
with:
github-token: ${{ steps.token.outputs.token }}
script: |
const parameters = JSON.parse(process.env.PARAM_JSON);
core.setOutput("event", parameters.event);
@@ -129,6 +151,7 @@ jobs:
env:
ARTIFACT_JSON: ${{ needs.checks.outputs.artifact }}
with:
github-token: ${{ steps.token.outputs.token }}
script: |
let artifact = JSON.parse(process.env.ARTIFACT_JSON);
let download = await github.rest.actions.downloadArtifact({
@@ -150,12 +173,8 @@ jobs:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
TF_STATE_POSTGRES_CONN_STR: ${{ secrets.TF_STATE_POSTGRES_CONN_STR }}
uses: gruntwork-io/terragrunt-action@aee21a7df999be8b471c2a8564c6cd853cb674e1 # v2.1.8
with:
tg_version: '0.58.12'
tofu_version: '1.7.1'
tg_dir: 'deployment/modules/cloudflare/docs'
tg_command: 'apply'
working-directory: 'deployment/modules/cloudflare/docs'
run: 'mise run tf apply'
- name: Deploy Docs Subdomain Output
id: docs-output
@@ -165,20 +184,12 @@ jobs:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
TF_STATE_POSTGRES_CONN_STR: ${{ secrets.TF_STATE_POSTGRES_CONN_STR }}
uses: gruntwork-io/terragrunt-action@aee21a7df999be8b471c2a8564c6cd853cb674e1 # v2.1.8
with:
tg_version: '0.58.12'
tofu_version: '1.7.1'
tg_dir: 'deployment/modules/cloudflare/docs'
tg_command: 'output -json'
- name: Output Cleaning
id: clean
env:
TG_OUTPUT: ${{ steps.docs-output.outputs.tg_action_output }}
working-directory: 'deployment/modules/cloudflare/docs'
run: |
CLEANED=$(echo "$TG_OUTPUT" | sed 's|%0A|\n|g ; s|%3C|<|g' | jq -c .)
echo "output=$CLEANED" >> $GITHUB_OUTPUT
mise run tf output -- -json | jq -r '
"projectName=\(.pages_project_name.value)",
"subdomain=\(.immich_app_branch_subdomain.value)"
' >> $GITHUB_OUTPUT
- name: Publish to Cloudflare Pages
# TODO: Action is deprecated
@@ -186,7 +197,7 @@ jobs:
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN_PAGES_UPLOAD }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
projectName: ${{ fromJson(steps.clean.outputs.output).pages_project_name.value }}
projectName: ${{ steps.docs-output.outputs.projectName }}
workingDirectory: 'docs'
directory: 'build'
branch: ${{ steps.parameters.outputs.name }}
@@ -199,19 +210,16 @@ jobs:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
TF_STATE_POSTGRES_CONN_STR: ${{ secrets.TF_STATE_POSTGRES_CONN_STR }}
uses: gruntwork-io/terragrunt-action@aee21a7df999be8b471c2a8564c6cd853cb674e1 # v2.1.8
with:
tg_version: '0.58.12'
tofu_version: '1.7.1'
tg_dir: 'deployment/modules/cloudflare/docs-release'
tg_command: 'apply'
working-directory: 'deployment/modules/cloudflare/docs-release'
run: 'mise run tf apply'
- name: Comment
uses: actions-cool/maintain-one-comment@4b2dbf086015f892dcb5e8c1106f5fccd6c1476b # v3.2.0
if: ${{ steps.parameters.outputs.event == 'pr' }}
with:
token: ${{ steps.token.outputs.token }}
number: ${{ fromJson(needs.checks.outputs.parameters).pr_number }}
body: |
📖 Documentation deployed to [${{ fromJson(steps.clean.outputs.output).immich_app_branch_subdomain.value }}](https://${{ fromJson(steps.clean.outputs.output).immich_app_branch_subdomain.value }})
📖 Documentation deployed to [${{ steps.docs-output.outputs.subdomain }}](https://${{ steps.docs-output.outputs.subdomain }})
emojis: 'rocket'
body-include: '<!-- Docs PR URL -->'

View File

@@ -5,6 +5,9 @@ on:
permissions: {}
env:
TG_NON_INTERACTIVE: 'true'
jobs:
deploy:
name: Docs Destroy
@@ -13,10 +16,20 @@ jobs:
contents: read
pull-requests: write
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Setup Mise
uses: immich-app/devtools/actions/use-mise@cd24790a7f5f6439ac32cc94f5523cb2de8bfa8c # use-mise-action-v1.1.0
- name: Destroy Docs Subdomain
env:
@@ -25,16 +38,13 @@ jobs:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
TF_STATE_POSTGRES_CONN_STR: ${{ secrets.TF_STATE_POSTGRES_CONN_STR }}
uses: gruntwork-io/terragrunt-action@aee21a7df999be8b471c2a8564c6cd853cb674e1 # v2.1.8
with:
tg_version: '0.58.12'
tofu_version: '1.7.1'
tg_dir: 'deployment/modules/cloudflare/docs'
tg_command: 'destroy -refresh=false'
working-directory: 'deployment/modules/cloudflare/docs'
run: 'mise run tf destroy -- -refresh=false'
- name: Comment
uses: actions-cool/maintain-one-comment@4b2dbf086015f892dcb5e8c1106f5fccd6c1476b # v3.2.0
with:
token: ${{ steps.token.outputs.token }}
number: ${{ github.event.number }}
delete: true
body-include: '<!-- Docs PR URL -->'

View File

@@ -29,17 +29,17 @@ jobs:
persist-credentials: true
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
cache-dependency-path: '**/pnpm-lock.yaml'
- name: Fix formatting
run: make install-all && make format-all
run: pnpm --recursive install && pnpm run --recursive --parallel fix:format
- name: Commit and push
uses: EndBug/add-and-commit@a94899bca583c204427a224a7af87c02f9b325d5 # v9.1.4
@@ -51,6 +51,7 @@ jobs:
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
if: always()
with:
github-token: ${{ steps.generate-token.outputs.token }}
script: |
github.rest.issues.removeLabel({
issue_number: context.payload.pull_request.number,

View File

@@ -28,11 +28,19 @@ jobs:
permissions:
pull-requests: write
steps:
- name: Generate a token
id: generate_token
if: ${{ inputs.skip != true }}
uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Find translation PR
id: find_pr
if: ${{ inputs.skip != true }}
env:
GH_TOKEN: ${{ github.token }}
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
run: |
set -euo pipefail
@@ -55,14 +63,6 @@ jobs:
exit 1
fi
- name: Generate a token
id: generate_token
if: ${{ inputs.skip != true }}
uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Lock weblate
if: ${{ inputs.skip != true }}
env:

View File

@@ -13,9 +13,16 @@ jobs:
issues: write
pull-requests: write
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Require PR to have a changelog label
uses: mheap/github-action-required-labels@8afbe8ae6ab7647d0c9f0cfa7c2f939650d22509 # v5.5.1
with:
token: ${{ steps.token.outputs.token }}
mode: exactly
count: 1
use_regex: true

View File

@@ -11,4 +11,12 @@ jobs:
pull-requests: write
runs-on: ubuntu-latest
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # v6.0.1
with:
repo-token: ${{ steps.token.outputs.token }}

View File

@@ -62,13 +62,13 @@ jobs:
ref: main
- name: Install uv
uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0
uses: astral-sh/setup-uv@2ddd2b9cb38ad8efd50337e8ab201519a34c9f24 # v7.1.1
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
@@ -99,8 +99,23 @@ jobs:
ALIAS: ${{ secrets.ALIAS }}
ANDROID_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }}
ANDROID_STORE_PASSWORD: ${{ secrets.ANDROID_STORE_PASSWORD }}
# iOS secrets
APP_STORE_CONNECT_API_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ID }}
APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ISSUER_ID }}
APP_STORE_CONNECT_API_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY }}
IOS_CERTIFICATE_P12: ${{ secrets.IOS_CERTIFICATE_P12 }}
IOS_CERTIFICATE_PASSWORD: ${{ secrets.IOS_CERTIFICATE_PASSWORD }}
IOS_PROVISIONING_PROFILE: ${{ secrets.IOS_PROVISIONING_PROFILE }}
IOS_PROVISIONING_PROFILE_SHARE_EXTENSION: ${{ secrets.IOS_PROVISIONING_PROFILE_SHARE_EXTENSION }}
IOS_PROVISIONING_PROFILE_WIDGET_EXTENSION: ${{ secrets.IOS_PROVISIONING_PROFILE_WIDGET_EXTENSION }}
IOS_DEVELOPMENT_PROVISIONING_PROFILE: ${{ secrets.IOS_DEVELOPMENT_PROVISIONING_PROFILE }}
IOS_DEVELOPMENT_PROVISIONING_PROFILE_SHARE_EXTENSION: ${{ secrets.IOS_DEVELOPMENT_PROVISIONING_PROFILE_SHARE_EXTENSION }}
IOS_DEVELOPMENT_PROVISIONING_PROFILE_WIDGET_EXTENSION: ${{ secrets.IOS_DEVELOPMENT_PROVISIONING_PROFILE_WIDGET_EXTENSION }}
FASTLANE_TEAM_ID: ${{ secrets.FASTLANE_TEAM_ID }}
with:
ref: ${{ needs.bump_version.outputs.ref }}
environment: production
prepare_release:
runs-on: ubuntu-latest
@@ -126,9 +141,10 @@ jobs:
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
name: release-apk-signed
github-token: ${{ steps.generate-token.outputs.token }}
- name: Create draft release
uses: softprops/action-gh-release@aec2ec56f94eb8180ceec724245f64ef008b89f5 # v2.4.0
uses: softprops/action-gh-release@6da8fa9354ddfdc4aeace5fc48d7f679b5214090 # v2.4.1
with:
draft: true
tag_name: ${{ env.IMMICH_VERSION }}

View File

@@ -13,10 +13,17 @@ jobs:
permissions:
pull-requests: write
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2.8.2
with:
github-token: ${{ steps.token.outputs.token }}
message-id: 'preview-status'
message: 'Deploying preview environment to https://pr-${{ github.event.pull_request.number }}.preview.internal.immich.cloud/'
message: 'Deploying preview environment to https://pr-${{ github.event.pull_request.number }}.preview.internal.immich.build/'
remove-label:
runs-on: ubuntu-latest
@@ -24,8 +31,15 @@ jobs:
permissions:
pull-requests: write
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
github-token: ${{ steps.token.outputs.token }}
script: |
github.rest.issues.removeLabel({
issue_number: context.payload.pull_request.number,
@@ -37,11 +51,13 @@ jobs:
- uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2.8.2
if: ${{ github.event.pull_request.head.repo.fork }}
with:
github-token: ${{ steps.token.outputs.token }}
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:
github-token: ${{ steps.token.outputs.token }}
message-id: 'preview-status'
message: 'Preview environment has been removed.'

View File

@@ -16,15 +16,22 @@ jobs:
run:
working-directory: ./open-api/typescript-sdk
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
# Setup .npmrc file to publish to npm
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
- uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './open-api/typescript-sdk/.nvmrc'
registry-url: 'https://registry.npmjs.org'

View File

@@ -19,10 +19,17 @@ jobs:
outputs:
should_run: ${{ steps.check.outputs.should_run }}
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Check what should run
id: check
uses: immich-app/devtools/actions/pre-job@5f91b52dfbb92b8d96ca411ab59c896cd59714ca # pre-job-action-v1.1.0
uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
with:
github-token: ${{ steps.token.outputs.token }}
filters: |
mobile:
- 'mobile/**'
@@ -41,10 +48,17 @@ jobs:
run:
working-directory: ./mobile
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Setup Flutter SDK
uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2.21.0
@@ -58,7 +72,7 @@ jobs:
- name: Install DCM
uses: CQLabs/setup-dcm@8697ae0790c0852e964a6ef1d768d62a6675481a # v2.0.1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
github-token: ${{ steps.token.outputs.token }}
version: auto
working-directory: ./mobile

View File

@@ -16,10 +16,17 @@ jobs:
outputs:
should_run: ${{ steps.check.outputs.should_run }}
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Check what should run
id: check
uses: immich-app/devtools/actions/pre-job@5f91b52dfbb92b8d96ca411ab59c896cd59714ca # pre-job-action-v1.1.0
uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
with:
github-token: ${{ steps.token.outputs.token }}
filters: |
i18n:
- 'i18n/**'
@@ -55,14 +62,22 @@ jobs:
run:
working-directory: ./server
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
@@ -92,14 +107,21 @@ jobs:
run:
working-directory: ./cli
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './cli/.nvmrc'
cache: 'pnpm'
@@ -132,14 +154,21 @@ jobs:
run:
working-directory: ./cli
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './cli/.nvmrc'
cache: 'pnpm'
@@ -167,14 +196,21 @@ jobs:
run:
working-directory: ./web
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './web/.nvmrc'
cache: 'pnpm'
@@ -204,14 +240,21 @@ jobs:
run:
working-directory: ./web
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './web/.nvmrc'
cache: 'pnpm'
@@ -235,14 +278,21 @@ jobs:
permissions:
contents: read
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './web/.nvmrc'
cache: 'pnpm'
@@ -276,14 +326,21 @@ jobs:
run:
working-directory: ./e2e
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './e2e/.nvmrc'
cache: 'pnpm'
@@ -315,14 +372,22 @@ jobs:
run:
working-directory: ./server
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
submodules: 'recursive'
token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
@@ -346,15 +411,22 @@ jobs:
matrix:
runner: [ubuntu-latest, ubuntu-24.04-arm]
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
submodules: 'recursive'
token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './e2e/.nvmrc'
cache: 'pnpm'
@@ -394,15 +466,22 @@ jobs:
matrix:
runner: [ubuntu-latest, ubuntu-24.04-arm]
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
submodules: 'recursive'
token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './e2e/.nvmrc'
cache: 'pnpm'
@@ -441,9 +520,16 @@ jobs:
permissions:
contents: read
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Setup Flutter SDK
uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2.21.0
with:
@@ -466,11 +552,18 @@ jobs:
run:
working-directory: ./machine-learning
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Install uv
uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0
uses: astral-sh/setup-uv@2ddd2b9cb38ad8efd50337e8ab201519a34c9f24 # v7.1.1
- uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
# TODO: add caching when supported (https://github.com/actions/setup-python/pull/818)
# with:
@@ -502,14 +595,21 @@ jobs:
run:
working-directory: ./.github
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './.github/.nvmrc'
cache: 'pnpm'
@@ -525,9 +625,16 @@ jobs:
permissions:
contents: read
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Run ShellCheck
uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38 # 2.0.0
with:
@@ -539,14 +646,21 @@ jobs:
permissions:
contents: read
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'
@@ -594,14 +708,21 @@ jobs:
run:
working-directory: ./server
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
token: ${{ steps.token.outputs.token }}
- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- name: Setup Node
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version-file: './server/.nvmrc'
cache: 'pnpm'

View File

@@ -23,10 +23,17 @@ jobs:
outputs:
should_run: ${{ steps.check.outputs.should_run }}
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Check what should run
id: check
uses: immich-app/devtools/actions/pre-job@5f91b52dfbb92b8d96ca411ab59c896cd59714ca # pre-job-action-v1.1.0
uses: immich-app/devtools/actions/pre-job@08bac802a312fc89808e0dd589271ca0974087b5 # pre-job-action-v2.0.0
with:
github-token: ${{ steps.token.outputs.token }}
filters: |
i18n:
- 'i18n/!(en)**\.json'
@@ -40,10 +47,16 @@ jobs:
permissions: {}
if: ${{ fromJSON(needs.pre-job.outputs.should_run).i18n == true }}
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@da177fa133657503ddb7503f8ba53dccefec5da1 # create-workflow-token-action-v1.0.0
with:
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
- name: Bot review status
env:
PR_NUMBER: ${{ github.event.pull_request.number || github.event.pull_request_review.pull_request.number }}
GH_TOKEN: ${{ github.token }}
GH_TOKEN: ${{ steps.token.outputs.token }}
run: |
# Then check for APPROVED by the bot, if absent fail
gh pr view "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --json reviews | jq -e '.reviews | map(select(.author.login == env.BOT_NAME and .state == "APPROVED")) | length > 0' \

View File

@@ -1 +1 @@
22.20.0
24.11.0

View File

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

View File

@@ -271,7 +271,7 @@ describe('startWatch', () => {
});
});
it('should filger out ignored patterns', async () => {
it('should filter out ignored patterns', async () => {
const testFilePath = path.join(testFolder, 'test.jpg');
const ignoredPattern = 'ignored';
const ignoredFolder = path.join(testFolder, ignoredPattern);

View File

@@ -37,6 +37,7 @@ export interface UploadOptionsDto {
dryRun?: boolean;
skipHash?: boolean;
delete?: boolean;
deleteDuplicates?: boolean;
album?: boolean;
albumName?: string;
includeHidden?: boolean;
@@ -70,10 +71,8 @@ const uploadBatch = async (files: string[], options: UploadOptionsDto) => {
console.log(JSON.stringify({ newFiles, duplicates, newAssets }, undefined, 4));
}
await updateAlbums([...newAssets, ...duplicates], options);
await deleteFiles(
newAssets.map(({ filepath }) => filepath),
options,
);
await deleteFiles(newAssets, duplicates, options);
};
export const startWatch = async (
@@ -406,28 +405,46 @@ const uploadFile = async (input: string, stats: Stats): Promise<AssetMediaRespon
return response.json();
};
const deleteFiles = async (files: string[], options: UploadOptionsDto): Promise<void> => {
if (!options.delete) {
return;
const deleteFiles = async (uploaded: Asset[], duplicates: Asset[], options: UploadOptionsDto): Promise<void> => {
let fileCount = 0;
if (options.delete) {
fileCount += uploaded.length;
}
if (options.deleteDuplicates) {
fileCount += duplicates.length;
}
if (options.dryRun) {
console.log(`Would have deleted ${files.length} local asset${s(files.length)}`);
console.log(`Would have deleted ${fileCount} local asset${s(fileCount)}`);
return;
}
if (fileCount === 0) {
return;
}
console.log('Deleting assets that have been uploaded...');
const deletionProgress = new SingleBar(
{ format: 'Deleting local assets | {bar} | {percentage}% | ETA: {eta}s | {value}/{total} assets' },
Presets.shades_classic,
);
deletionProgress.start(files.length, 0);
deletionProgress.start(fileCount, 0);
const chunkDelete = async (files: Asset[]) => {
for (const assetBatch of chunk(files, options.concurrency)) {
await Promise.all(assetBatch.map((input: Asset) => unlink(input.filepath)));
deletionProgress.update(assetBatch.length);
}
};
try {
for (const assetBatch of chunk(files, options.concurrency)) {
await Promise.all(assetBatch.map((input: string) => unlink(input)));
deletionProgress.update(assetBatch.length);
if (options.delete) {
await chunkDelete(uploaded);
}
if (options.deleteDuplicates) {
await chunkDelete(duplicates);
}
} finally {
deletionProgress.stop();

View File

@@ -8,6 +8,7 @@ import { serverInfo } from 'src/commands/server-info';
import { version } from '../package.json';
const defaultConfigDirectory = path.join(os.homedir(), '.config/immich/');
const defaultConcurrency = Math.max(1, os.cpus().length - 1);
const program = new Command()
.name('immich')
@@ -66,7 +67,7 @@ program
.addOption(
new Option('-c, --concurrency <number>', 'Number of assets to upload at the same time')
.env('IMMICH_UPLOAD_CONCURRENCY')
.default(4),
.default(defaultConcurrency),
)
.addOption(
new Option('-j, --json-output', 'Output detailed information in json format')
@@ -74,6 +75,11 @@ program
.default(false),
)
.addOption(new Option('--delete', 'Delete local assets after upload').env('IMMICH_DELETE_ASSETS'))
.addOption(
new Option('--delete-duplicates', 'Delete local assets that are duplicates (already exist on server)').env(
'IMMICH_DELETE_DUPLICATES',
),
)
.addOption(new Option('--no-progress', 'Hide progress bars').env('IMMICH_PROGRESS_BAR').default(true))
.addOption(
new Option('--watch', 'Watch for changes and upload automatically')

View File

@@ -122,7 +122,7 @@ services:
ports:
- 3003:3003
volumes:
- ../machine-learning:/usr/src/app
- ../machine-learning/immich_ml:/usr/src/immich_ml
- model-cache:/cache
env_file:
- .env
@@ -134,7 +134,7 @@ services:
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:fea8b3e67b15729d4bb70589eb03367bab9ad1ee89c876f54327fc7c6e618571
image: docker.io/valkey/valkey:8@sha256:81db6d39e1bba3b3ff32bd3a1b19a6d69690f94a3954ec131277b9a26b95b3aa
healthcheck:
test: redis-cli ping || exit 1

View File

@@ -56,7 +56,7 @@ services:
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:fea8b3e67b15729d4bb70589eb03367bab9ad1ee89c876f54327fc7c6e618571
image: docker.io/valkey/valkey:8@sha256:81db6d39e1bba3b3ff32bd3a1b19a6d69690f94a3954ec131277b9a26b95b3aa
healthcheck:
test: redis-cli ping || exit 1
restart: always
@@ -83,7 +83,7 @@ services:
container_name: immich_prometheus
ports:
- 9090:9090
image: prom/prometheus@sha256:63805ebb8d2b3920190daf1cb14a60871b16fd38bed42b857a3182bc621f4996
image: prom/prometheus@sha256:49214755b6153f90a597adcbff0252cc61069f8ab69ce8411285cd4a560e8038
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus-data:/prometheus
@@ -95,7 +95,7 @@ services:
command: ['./run.sh', '-disable-reporting']
ports:
- 3000:3000
image: grafana/grafana:12.1.1-ubuntu@sha256:d1da838234ff2de93e0065ee1bf0e66d38f948dcc5d718c25fa6237e14b4424a
image: grafana/grafana:12.2.1-ubuntu@sha256:797530c642f7b41ba7848c44cfda5e361ef1f3391a98bed1e5d448c472b6826a
volumes:
- grafana-data:/var/lib/grafana

View File

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

View File

@@ -9,8 +9,8 @@ DB_DATA_LOCATION=./postgres
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
# TZ=Etc/UTC
# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release
# The Immich version to use. You can pin this to a specific version like "v2.1.0"
IMMICH_VERSION=v2
# Connection secret for postgres. You should change it to a random password
# Please use only the characters `A-Za-z0-9`, without special characters or spaces

View File

@@ -1 +1 @@
22.20.0
24.11.0

View File

@@ -57,6 +57,7 @@ Then please follow the steps in the following section for restoring the database
<TabItem value="Linux system" label="Linux system" default>
```bash title='Backup'
# Replace <DB_USERNAME> with the database username - usually postgres unless you have changed it.
docker exec -t immich_postgres pg_dumpall --clean --if-exists --username=<DB_USERNAME> | gzip > "/path/to/backup/dump.sql.gz"
```
@@ -69,16 +70,18 @@ docker compose create # Create Docker containers for Immich apps witho
docker start immich_postgres # Start Postgres server
sleep 10 # Wait for Postgres server to start up
# Check the database user if you deviated from the default
# Replace <DB_USERNAME> with the database username - usually postgres unless you have changed it.
gunzip --stdout "/path/to/backup/dump.sql.gz" \
| sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" \
| docker exec -i immich_postgres psql --dbname=postgres --username=<DB_USERNAME> # Restore Backup
docker compose up -d # Start remainder of Immich apps
```
</TabItem>
</TabItem>
<TabItem value="Windows system (PowerShell)" label="Windows system (PowerShell)">
```powershell title='Backup'
# Replace <DB_USERNAME> with the database username - usually postgres unless you have changed it.
[System.IO.File]::WriteAllLines("C:\absolute\path\to\backup\dump.sql", (docker exec -t immich_postgres pg_dumpall --clean --if-exists --username=<DB_USERNAME>))
```
@@ -92,13 +95,15 @@ docker compose create # Create Docker containers for
docker start immich_postgres # Start Postgres server
sleep 10 # Wait for Postgres server to start up
docker exec -it immich_postgres bash # Enter the Docker shell and run the following command
# Check the database user if you deviated from the default. If your backup ends in `.gz`, replace `cat` with `gunzip --stdout`
# If your backup ends in `.gz`, replace `cat` with `gunzip --stdout`
# Replace <DB_USERNAME> with the database username - usually postgres unless you have changed it.
cat "/dump.sql" | sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" | psql --dbname=postgres --username=<DB_USERNAME>
exit # Exit the Docker shell
docker compose up -d # Start remainder of Immich apps
```
</TabItem>
</TabItem>
</Tabs>
Note that for the database restore to proceed properly, it requires a completely fresh install (i.e. the Immich server has never run since creating the Docker containers). If the Immich app has run, Postgres conflicts may be encountered upon database restoration (relation already exists, violated foreign key constraints, multiple primary keys, etc.), in which case you need to delete the `DB_DATA_LOCATION` folder to reset the database.

View File

@@ -6,6 +6,10 @@ Users can deploy a custom reverse proxy that forwards requests to Immich. This w
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.
:::
:::info
If your reverse proxy uses the [Let's Encrypt](https://letsencrypt.org/) [http-01 challenge](https://letsencrypt.org/docs/challenge-types/#http-01-challenge), you may want to verify that the Immich well-known endpoint (`/.well-known/immich`) gets correctly routed to Immich, otherwise it will likely be routed elsewhere and the mobile app may run into connection issues.
:::
### Nginx example config
Below is an example config for nginx. Make sure to set `public_url` to the front-facing URL of your instance, and `backend_url` to the path of the Immich server.
@@ -37,29 +41,14 @@ server {
location / {
proxy_pass http://<backend_url>:2283;
}
# useful when using Let's Encrypt http-01 challenge
# location = /.well-known/immich {
# proxy_pass http://<backend_url>:2283;
# }
}
```
#### Compatibility with Let's Encrypt
In the event that your nginx configuration includes a section for Let's Encrypt, it's likely that you have a segment similar to the following:
```nginx
location ~ /.well-known {
...
}
```
This particular `location` directive can inadvertently prevent mobile clients from reaching the `/.well-known/immich` path, which is crucial for discovery. Usual error message for this case is: "Your app major version is not compatible with the server". To remedy this, you should introduce an additional location block specifically for this path, ensuring that requests are correctly proxied to the Immich server:
```nginx
location = /.well-known/immich {
proxy_pass http://<backend_url>:2283;
}
```
By doing so, you'll maintain the functionality of Let's Encrypt while allowing mobile clients to access the necessary Immich path without obstruction.
### Caddy example config
As an alternative to nginx, you can also use [Caddy](https://caddyserver.com/) as a reverse proxy (with automatic HTTPS configuration). Below is an example config.

View File

@@ -1,12 +0,0 @@
# Community Guides
This page lists community guides that are written around Immich, but not officially supported by the development team.
:::warning
This list comes with no guarantees about security, performance, reliability, or accuracy. Use at your own risk.
:::
import CommunityGuides from '../src/components/community-guides.tsx';
import React from 'react';
<CommunityGuides />

View File

@@ -1,12 +0,0 @@
# Community Projects
This page lists community projects that are built around Immich, but not officially supported by the development team.
:::warning
This list comes with no guarantees about security, performance, reliability, or accuracy. Use at your own risk.
:::
import CommunityProjects from '../src/components/community-projects.tsx';
import React from 'react';
<CommunityProjects />

View File

@@ -103,6 +103,7 @@ Options:
-c, --concurrency <number> Number of assets to upload at the same time (default: 4, env: IMMICH_UPLOAD_CONCURRENCY)
-j, --json-output Output detailed information in json format (default: false, env: IMMICH_JSON_OUTPUT)
--delete Delete local assets after upload (env: IMMICH_DELETE_ASSETS)
--delete-duplicates Delete local assets that are duplicates (already exist on server) (env: IMMICH_DELETE_DUPLICATES)
--no-progress Hide progress bars (env: IMMICH_PROGRESS_BAR)
--watch Watch for changes and upload automatically (default: false, env: IMMICH_WATCH_CHANGES)
--help display help for command
@@ -182,7 +183,7 @@ For example to get a list of files that would be uploaded for further
processing:
```bash
immich upload --dry-run . | tail -n +4 | jq .newFiles[]
immich upload --dry-run . | tail -n +6 | jq .newFiles[]
```
### Obtain the API Key

View File

@@ -54,9 +54,25 @@ You do not need to redo any machine learning jobs after enabling hardware accele
#### OpenVINO
- Integrated GPUs are more likely to experience issues than discrete GPUs, especially for older processors or servers with low RAM.
- Ensure the server's kernel version is new enough to use the device for hardware accceleration.
- Ensure the server's kernel version is new enough to use the device for hardware acceleration.
- Expect higher RAM usage when using OpenVINO compared to CPU processing.
#### OpenVINO-WSL
- Ensure your container can access the /dev/dri directory, you can verify this by doing `docker exec -t immich_machine_learning ls -la /dev/dri`. If this is not the case execute `getent group render` and `getent group video` on the WSL host, then add those groups to hwaccel.ml.yaml
```yaml
openvino-wsl:
devices:
- /dev/dri:/dev/dri
- /dev/dxg:/dev/dxg
volumes:
- /dev/bus/usb:/dev/bus/usb
- /usr/lib/wsl:/usr/lib/wsl
group_add:
- 44 # Replace this number with the number you found with getent group video
- 992 # Replace this number with the number you found with getent group render
```
#### RKNN
- You must have a supported Rockchip SoC: only RK3566, RK3568, RK3576 and RK3588 are supported at this moment.

View File

@@ -3,7 +3,6 @@ import { mdiCloudOffOutline, mdiCloudCheckOutline } from '@mdi/js';
import MobileAppDownload from '/docs/partials/_mobile-app-download.md';
import MobileAppLogin from '/docs/partials/_mobile-app-login.md';
import MobileAppBackup from '/docs/partials/_mobile-app-backup.md';
import { cloudDonePath, cloudOffPath } from '@site/src/components/svg-paths';
# Mobile App
@@ -11,6 +10,16 @@ import { cloudDonePath, cloudOffPath } from '@site/src/components/svg-paths';
<MobileAppDownload />
:::info Android verification
Below are the SHA-256 fingerprints for the certificates signing the android applications.
- Playstore / Github releases:
`86:C5:C4:55:DF:AF:49:85:92:3A:8F:35:AD:B3:1D:0C:9E:0B:95:7D:7F:94:C2:D2:AF:6A:24:38:AA:96:00:20`
- F-Droid releases:
`FA:8B:43:95:F4:A6:47:71:A0:53:D1:C7:57:73:5F:A2:30:13:74:F5:3D:58:0D:D1:75:AA:F7:A1:35:72:9C:BF`
:::
:::info Beta Program
The beta release channel allows users to test upcoming changes before they are officially released. To join the channel use the links below.

View File

@@ -28,7 +28,7 @@ You can read this guide to learn more about [partner sharing](/features/partner-
## Public sharing
You can create a public link to share a group of photos or videos, or an album, with anyone. The public link can be shared via email, social media, or any other method. There are a varierity of options to customize the public link, such as setting an expiration date, password protection, and more. Public shared link is handy when you want to share a group of photos or videos with someone who doesn't have an Immich account and allow the shared user to upload their photos or videos to your account.
You can create a public link to share a group of photos or videos, or an album, with anyone. The public link can be shared via email, social media, or any other method. There are a variety of options to customize the public link, such as setting an expiration date, password protection, and more. Public shared link is handy when you want to share a group of photos or videos with someone who doesn't have an Immich account and allow the shared user to upload their photos or videos to your account.
The public shared link is generated with a random URL, which acts as as a secret to avoid the link being guessed by unwanted parties, for instance.

View File

@@ -106,14 +106,14 @@ SELECT "user"."email", "asset"."type", COUNT(*) FROM "asset"
```sql title="Count by tag"
SELECT "t"."value" AS "tag_name", COUNT(*) AS "number_assets" FROM "tag" "t"
JOIN "tag_asset" "ta" ON "t"."id" = "ta"."tagsId" JOIN "asset" "a" ON "ta"."assetsId" = "a"."id"
JOIN "tag_asset" "ta" ON "t"."id" = "ta"."tagId" JOIN "asset" "a" ON "ta"."assetId" = "a"."id"
WHERE "a"."visibility" != 'hidden'
GROUP BY "t"."value" ORDER BY "number_assets" DESC;
```
```sql title="Count by tag (per user)"
SELECT "t"."value" AS "tag_name", "u"."email" as "user_email", COUNT(*) AS "number_assets" FROM "tag" "t"
JOIN "tag_asset" "ta" ON "t"."id" = "ta"."tagsId" JOIN "asset" "a" ON "ta"."assetsId" = "a"."id" JOIN "user" "u" ON "a"."ownerId" = "u"."id"
JOIN "tag_asset" "ta" ON "t"."id" = "ta"."tagId" JOIN "asset" "a" ON "ta"."assetId" = "a"."id" JOIN "user" "u" ON "a"."ownerId" = "u"."id"
WHERE "a"."visibility" != 'hidden'
GROUP BY "t"."value", "u"."email" ORDER BY "number_assets" DESC;
```

View File

@@ -37,7 +37,7 @@ In the Immich web UI:
<img src={require('./img/create-external-library.webp').default} width="50%" title="Create Library button" />
- In the dialog, select which user should own the new library
<img src={require('./img/library-owner.webp').default} width="50%" title="Library owner diaglog" />
<img src={require('./img/library-owner.webp').default} width="50%" title="Library owner dialog" />
- Click the three-dots menu and select **Edit Import Paths**
<img src={require('./img/edit-import-paths.webp').default} width="50%" title="Edit Import Paths menu option" />

View File

@@ -16,48 +16,76 @@ The default configuration looks like this:
```json
{
"ffmpeg": {
"crf": 23,
"threads": 0,
"preset": "ultrafast",
"targetVideoCodec": "h264",
"acceptedVideoCodecs": ["h264"],
"targetAudioCodec": "aac",
"acceptedAudioCodecs": ["aac", "mp3", "libopus", "pcm_s16le"],
"acceptedContainers": ["mov", "ogg", "webm"],
"targetResolution": "720",
"maxBitrate": "0",
"bframes": -1,
"refs": 0,
"gopSize": 0,
"temporalAQ": false,
"cqMode": "auto",
"twoPass": false,
"preferredHwDevice": "auto",
"transcode": "required",
"tonemap": "hable",
"accel": "disabled",
"accelDecode": false
},
"backup": {
"database": {
"enabled": true,
"cronExpression": "0 02 * * *",
"enabled": true,
"keepLastAmount": 14
}
},
"ffmpeg": {
"accel": "disabled",
"accelDecode": false,
"acceptedAudioCodecs": ["aac", "mp3", "libopus"],
"acceptedContainers": ["mov", "ogg", "webm"],
"acceptedVideoCodecs": ["h264"],
"bframes": -1,
"cqMode": "auto",
"crf": 23,
"gopSize": 0,
"maxBitrate": "0",
"preferredHwDevice": "auto",
"preset": "ultrafast",
"refs": 0,
"targetAudioCodec": "aac",
"targetResolution": "720",
"targetVideoCodec": "h264",
"temporalAQ": false,
"threads": 0,
"tonemap": "hable",
"transcode": "required",
"twoPass": false
},
"image": {
"colorspace": "p3",
"extractEmbedded": false,
"fullsize": {
"enabled": false,
"format": "jpeg",
"quality": 80
},
"preview": {
"format": "jpeg",
"quality": 80,
"size": 1440
},
"thumbnail": {
"format": "webp",
"quality": 80,
"size": 250
}
},
"job": {
"backgroundTask": {
"concurrency": 5
},
"smartSearch": {
"faceDetection": {
"concurrency": 2
},
"library": {
"concurrency": 5
},
"metadataExtraction": {
"concurrency": 5
},
"faceDetection": {
"concurrency": 2
"migration": {
"concurrency": 5
},
"notifications": {
"concurrency": 5
},
"ocr": {
"concurrency": 1
},
"search": {
"concurrency": 5
@@ -65,20 +93,23 @@ The default configuration looks like this:
"sidecar": {
"concurrency": 5
},
"library": {
"concurrency": 5
},
"migration": {
"concurrency": 5
"smartSearch": {
"concurrency": 2
},
"thumbnailGeneration": {
"concurrency": 3
},
"videoConversion": {
"concurrency": 1
}
},
"library": {
"scan": {
"cronExpression": "0 0 * * *",
"enabled": true
},
"notifications": {
"concurrency": 5
"watch": {
"enabled": false
}
},
"logging": {
@@ -86,8 +117,11 @@ The default configuration looks like this:
"level": "log"
},
"machineLearning": {
"enabled": true,
"urls": ["http://immich-machine-learning:3003"],
"availabilityChecks": {
"enabled": true,
"interval": 30000,
"timeout": 2000
},
"clip": {
"enabled": true,
"modelName": "ViT-B-32__openai"
@@ -96,27 +130,59 @@ The default configuration looks like this:
"enabled": true,
"maxDistance": 0.01
},
"enabled": true,
"facialRecognition": {
"enabled": true,
"modelName": "buffalo_l",
"minScore": 0.7,
"maxDistance": 0.5,
"minFaces": 3
}
"minFaces": 3,
"minScore": 0.7,
"modelName": "buffalo_l"
},
"ocr": {
"enabled": true,
"maxResolution": 736,
"minDetectionScore": 0.5,
"minRecognitionScore": 0.8,
"modelName": "PP-OCRv5_mobile"
},
"urls": ["http://immich-machine-learning:3003"]
},
"map": {
"darkStyle": "https://tiles.immich.cloud/v1/style/dark.json",
"enabled": true,
"lightStyle": "https://tiles.immich.cloud/v1/style/light.json",
"darkStyle": "https://tiles.immich.cloud/v1/style/dark.json"
},
"reverseGeocoding": {
"enabled": true
"lightStyle": "https://tiles.immich.cloud/v1/style/light.json"
},
"metadata": {
"faces": {
"import": false
}
},
"newVersionCheck": {
"enabled": true
},
"nightlyTasks": {
"clusterNewFaces": true,
"databaseCleanup": true,
"generateMemories": true,
"missingThumbnails": true,
"startTime": "00:00",
"syncQuotaUsage": true
},
"notifications": {
"smtp": {
"enabled": false,
"from": "",
"replyTo": "",
"transport": {
"host": "",
"ignoreCert": false,
"password": "",
"port": 587,
"secure": false,
"username": ""
}
}
},
"oauth": {
"autoLaunch": false,
"autoRegister": true,
@@ -128,70 +194,44 @@ The default configuration looks like this:
"issuerUrl": "",
"mobileOverrideEnabled": false,
"mobileRedirectUri": "",
"profileSigningAlgorithm": "none",
"roleClaim": "immich_role",
"scope": "openid email profile",
"signingAlgorithm": "RS256",
"profileSigningAlgorithm": "none",
"storageLabelClaim": "preferred_username",
"storageQuotaClaim": "immich_quota"
"storageQuotaClaim": "immich_quota",
"timeout": 30000,
"tokenEndpointAuthMethod": "client_secret_post"
},
"passwordLogin": {
"enabled": true
},
"reverseGeocoding": {
"enabled": true
},
"server": {
"externalDomain": "",
"loginPageMessage": "",
"publicUsers": true
},
"storageTemplate": {
"enabled": false,
"hashVerificationEnabled": true,
"template": "{{y}}/{{y}}-{{MM}}-{{dd}}/{{filename}}"
},
"image": {
"thumbnail": {
"format": "webp",
"size": 250,
"quality": 80
},
"preview": {
"format": "jpeg",
"size": 1440,
"quality": 80
},
"colorspace": "p3",
"extractEmbedded": false
},
"newVersionCheck": {
"enabled": true
},
"trash": {
"enabled": true,
"days": 30
"templates": {
"email": {
"albumInviteTemplate": "",
"albumUpdateTemplate": "",
"welcomeTemplate": ""
}
},
"theme": {
"customCss": ""
},
"library": {
"scan": {
"enabled": true,
"cronExpression": "0 0 * * *"
},
"watch": {
"enabled": false
}
},
"server": {
"externalDomain": "",
"loginPageMessage": ""
},
"notifications": {
"smtp": {
"enabled": false,
"from": "",
"replyTo": "",
"transport": {
"ignoreCert": false,
"host": "",
"port": 587,
"username": "",
"password": ""
}
}
"trash": {
"days": 30,
"enabled": true
},
"user": {
"deleteDelay": 7

View File

@@ -171,6 +171,7 @@ Redis (Sentinel) URL example JSON before encoding:
| `MACHINE_LEARNING_MAX_BATCH_SIZE__FACIAL_RECOGNITION` | Set the maximum number of faces that will be processed at once by the facial recognition model | None (`1` if using OpenVINO) | machine learning |
| `MACHINE_LEARNING_RKNN` | Enable RKNN hardware acceleration if supported | `True` | machine learning |
| `MACHINE_LEARNING_RKNN_THREADS` | How many threads of RKNN runtime should be spinned up while inferencing. | `1` | machine learning |
| `MACHINE_LEARNING_MODEL_ARENA` | Pre-allocates CPU memory to avoid memory fragmentation | true | machine learning |
\*1: It is recommended to begin with this parameter when changing the concurrency levels of the machine learning service and then tune the other ones.

View File

@@ -40,7 +40,7 @@ In the settings of your new project, set "**Project name**" to a name you'll rem
![Set path](../../static/img/synology-container-manager-set-path.png)
The following screen will give you the option to further customize your `docker-compose.yml` file. Take note of `DB_STORAGE_TYPE: 'HDD'`and uncomment if applicable for your Synology setup.
The following screen will give you the option to further customize your `docker-compose.yml` file. Take note of `DB_STORAGE_TYPE: 'HDD'` and uncomment if applicable for your Synology setup.
![DB storage](../../static/img/synology-container-manager-customize-docker-compose.png)

View File

@@ -87,7 +87,7 @@ After making a backup, please modify your `docker-compose.yml` file with the fol
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.
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.

View File

@@ -1,5 +1,6 @@
The mobile app can be downloaded from the following places:
- Obtainium: You can get your Obtainium config link from the [Utilities page of your Immich server](https://my.immich.app/utilities).
- [Google Play Store](https://play.google.com/store/apps/details?id=app.alextran.immich)
- [Apple App Store](https://apps.apple.com/us/app/immich/id1613945652)
- [F-Droid](https://f-droid.org/packages/app.alextran.immich)

View File

@@ -57,6 +57,6 @@
"node": ">=20"
},
"volta": {
"node": "22.20.0"
"node": "24.11.0"
}
}

View File

@@ -1,108 +0,0 @@
import Link from '@docusaurus/Link';
import React from 'react';
interface CommunityGuidesProps {
title: string;
description: string;
url: string;
}
const guides: CommunityGuidesProps[] = [
{
title: 'Cloudflare Tunnels with SSO/OAuth',
description: `Setting up Cloudflare Tunnels and a SaaS App for Immich.`,
url: 'https://github.com/immich-app/immich/discussions/8299',
},
{
title: 'Database backup in TrueNAS',
description: `Create a database backup with pgAdmin in TrueNAS.`,
url: 'https://github.com/immich-app/immich/discussions/8809',
},
{
title: 'Unraid backup scripts',
description: `Back up your assets in Unraid with a pre-prepared script.`,
url: 'https://github.com/immich-app/immich/discussions/8416',
},
{
title: 'Sync folders with albums',
description: `synchronize folders in imported library with albums having the folders name.`,
url: 'https://github.com/immich-app/immich/discussions/3382',
},
{
title: 'Immich Podman Quadlets Handbook',
description:
'A rewrite of the original Immich Docker Compose file using Podman Quadlets, with a set of extra guides in the repositorys wiki.',
url: 'https://github.com/linux-universe/immich-podman-quadlets/blob/main/README.md',
},
{
title: 'Podman/Quadlets Install',
description: 'Documentation for simple podman setup using quadlets.',
url: 'https://github.com/tbelway/immich-podman-quadlets/blob/main/docs/install/podman-quadlet.md',
},
{
title: 'Google Photos import + albums',
description: 'Import your Google Photos files into Immich and add your albums.',
url: 'https://github.com/immich-app/immich/discussions/1340',
},
{
title: 'Access Immich with custom domain',
description: 'Access your local Immich installation over the internet using your own domain.',
url: 'https://github.com/ppr88/immich-guides/blob/main/open-immich-custom-domain.md',
},
{
title: 'Nginx caching map server',
description: 'Increase privacy by using nginx as a caching proxy in front of a map tile server.',
url: 'https://github.com/pcouy/pcouy.github.io/blob/main/_posts/2024-08-30-proxying-a-map-tile-server-for-increased-privacy.md',
},
{
title: 'fail2ban setup instructions',
description: 'How to configure an existing fail2ban installation to block incorrect login attempts.',
url: 'https://github.com/immich-app/immich/discussions/3243#discussioncomment-6681948',
},
{
title: 'Immich remote access with NordVPN Meshnet',
description: 'Access Immich with an end-to-end encrypted connection.',
url: 'https://meshnet.nordvpn.com/how-to/remote-files-media-access/immich-remote-access',
},
{
title: 'Trust Self Signed Certificates with Immich - OAuth Setup',
description:
'Set up Certificate Authority trust with Immich, and your private OAuth2/OpenID service, while using a private CA for HTTPS commication.',
url: 'https://github.com/immich-app/immich/discussions/18614',
},
];
function CommunityGuide({ title, description, url }: CommunityGuidesProps): JSX.Element {
return (
<section className="flex flex-col gap-4 justify-between dark:bg-immich-dark-gray bg-immich-gray dark:border-0 border-gray-200 border border-solid rounded-2xl px-4 py-6">
<div className="flex flex-col gap-2">
<p className="m-0 items-start flex gap-2 text-2xl font-bold text-immich-primary dark:text-immich-dark-primary">
<span>{title}</span>
</p>
<p className="m-0 text-sm text-gray-600 dark:text-gray-300">{description}</p>
<p className="m-0 text-sm text-gray-600 dark:text-gray-300 my-4">
<a href={url}>{url}</a>
</p>
</div>
<div className="flex">
<Link
className="px-4 py-2 bg-immich-primary/10 dark:bg-gray-300 rounded-xl text-sm hover:no-underline text-immich-primary dark:text-immich-dark-bg font-semibold"
to={url}
>
View Guide
</Link>
</div>
</section>
);
}
export default function CommunityGuides(): JSX.Element {
return (
<div className="grid grid-cols-1 xl:grid-cols-2 gap-4">
{guides.map((guides) => (
<CommunityGuide {...guides} />
))}
</div>
);
}

View File

@@ -1,158 +0,0 @@
import Link from '@docusaurus/Link';
import React from 'react';
interface CommunityProjectProps {
title: string;
description: string;
url: string;
}
const projects: CommunityProjectProps[] = [
{
title: 'immich-go',
description: `An alternative to the immich-CLI that doesn't depend on nodejs. It specializes in importing Google Photos Takeout archives.`,
url: 'https://github.com/simulot/immich-go',
},
{
title: 'ImmichFrame',
description: 'Run an Immich slideshow in a photo frame.',
url: 'https://github.com/3rob3/ImmichFrame',
},
{
title: 'API Album Sync',
description: 'A Python script to sync folders as albums.',
url: 'https://git.orenit.solutions/open/immichalbumpull',
},
{
title: 'Immich-Tools',
description: 'Provides scripts for handling problems on the repair page.',
url: 'https://github.com/clumsyCoder00/Immich-Tools',
},
{
title: 'Lightroom Publisher: mi.Immich.Publisher',
description: 'Lightroom plugin to publish photos from Lightroom collections to Immich albums.',
url: 'https://github.com/midzelis/mi.Immich.Publisher',
},
{
title: 'Lightroom Immich Plugin: lrc-immich-plugin',
description:
'Lightroom plugin to publish, export photos from Lightroom to Immich. Import from Immich to Lightroom is also supported.',
url: 'https://blog.fokuspunk.de/lrc-immich-plugin/',
},
{
title: 'Immich-Tiktok-Remover',
description: 'Script to search for and remove TikTok videos from your Immich library.',
url: 'https://github.com/mxc2/immich-tiktok-remover',
},
{
title: 'Immich Android TV',
description: 'Unofficial Immich Android TV app.',
url: 'https://github.com/giejay/Immich-Android-TV',
},
{
title: 'Create albums from folders',
description: 'A Python script to create albums based on the folder structure of an external library.',
url: 'https://github.com/Salvoxia/immich-folder-album-creator',
},
{
title: 'Powershell Module PSImmich',
description: 'Powershell Module for the Immich API',
url: 'https://github.com/hanpq/PSImmich',
},
{
title: 'Immich Distribution',
description: 'Snap package for easy install and zero-care auto updates of Immich. Self-hosted photo management.',
url: 'https://immich-distribution.nsg.cc',
},
{
title: 'Immich Kiosk',
description: 'Lightweight slideshow to run on kiosk devices and browsers.',
url: 'https://github.com/damongolding/immich-kiosk',
},
{
title: 'Immich Power Tools',
description: 'Power tools for organizing your immich library.',
url: 'https://github.com/varun-raj/immich-power-tools',
},
{
title: 'Immich Public Proxy',
description:
'Share your Immich photos and albums in a safe way without exposing your Immich instance to the public.',
url: 'https://github.com/alangrainger/immich-public-proxy',
},
{
title: 'Immich Kodi',
description: 'Unofficial Kodi plugin for Immich.',
url: 'https://github.com/vladd11/immich-kodi',
},
{
title: 'Immich Downloader',
description: 'Downloads a configurable number of random photos based on people or album ID.',
url: 'https://github.com/jon6fingrs/immich-dl',
},
{
title: 'Immich Upload Optimizer',
description: 'Automatically optimize files uploaded to Immich in order to save storage space',
url: 'https://github.com/miguelangel-nubla/immich-upload-optimizer',
},
{
title: 'Immich Machine Learning Load Balancer',
description: 'Speed up your machine learning by load balancing your requests to multiple computers',
url: 'https://github.com/apetersson/immich_ml_balancer',
},
{
title: 'Immich Drop Uploader',
description: 'A tiny, zero-login web app for collecting photos/videos from anyone into your Immich server.',
url: 'https://github.com/Nasogaa/immich-drop',
},
{
title: 'Immich Birthday Sync',
description: 'Bulk-upload and -download birthdays, with CardDAV sync support',
url: 'https://github.com/sid3windr/immich-birthday',
},
{
title: 'Immich Stack',
description: 'Auto-stack photos with identical filenames and differing extensions (i.e. JPG+RAW)',
url: 'https://github.com/sid3windr/immich-stack',
},
{
title: 'Immich Stack',
description: 'Automatically groups similar photos into stacks within the Immich photo management system.',
url: 'https://github.com/Majorfi/immich-stack/',
},
];
function CommunityProject({ title, description, url }: CommunityProjectProps): JSX.Element {
return (
<section className="flex flex-col gap-4 justify-between dark:bg-immich-dark-gray bg-immich-gray dark:border-0 border-gray-200 border border-solid rounded-2xl px-4 py-6">
<div className="flex flex-col gap-2">
<p className="m-0 items-start flex gap-2 text-2xl font-bold text-immich-primary dark:text-immich-dark-primary">
<span>{title}</span>
</p>
<p className="m-0 text-sm text-gray-600 dark:text-gray-300">{description}</p>
<p className="m-0 text-sm text-gray-600 dark:text-gray-300 my-4">
<a href={url}>{url}</a>
</p>
</div>
<div className="flex">
<Link
className="px-4 py-2 bg-immich-primary/10 dark:bg-gray-300 rounded-xl text-sm hover:no-underline text-immich-primary dark:text-immich-dark-bg font-semibold"
to={url}
>
View Link
</Link>
</div>
</section>
);
}
export default function CommunityProjects(): JSX.Element {
return (
<div className="grid grid-cols-1 xl:grid-cols-2 gap-4">
{projects.map((project) => (
<CommunityProject {...project} />
))}
</div>
);
}

View File

@@ -1,3 +0,0 @@
export const discordPath =
'M81.15,0c-1.2376,2.1973-2.3489,4.4704-3.3591,6.794-9.5975-1.4396-19.3718-1.4396-28.9945,0-.985-2.3236-2.1216-4.5967-3.3591-6.794-9.0166,1.5407-17.8059,4.2431-26.1405,8.0568C2.779,32.5304-1.6914,56.3725.5312,79.8863c9.6732,7.1476,20.5083,12.603,32.0505,16.0884,2.6014-3.4854,4.8998-7.1981,6.8698-11.0623-3.738-1.3891-7.3497-3.1318-10.8098-5.1523.9092-.6567,1.7932-1.3386,2.6519-1.9953,20.281,9.547,43.7696,9.547,64.0758,0,.8587.7072,1.7427,1.3891,2.6519,1.9953-3.4601,2.0457-7.0718,3.7632-10.835,5.1776,1.97,3.8642,4.2683,7.5769,6.8698,11.0623,11.5419-3.4854,22.3769-8.9156,32.0509-16.0631,2.626-27.2771-4.496-50.9172-18.817-71.8548C98.9811,4.2684,90.1918,1.5659,81.1752.0505l-.0252-.0505ZM42.2802,65.4144c-6.2383,0-11.4159-5.6575-11.4159-12.6535s4.9755-12.6788,11.3907-12.6788,11.5169,5.708,11.4159,12.6788c-.101,6.9708-5.026,12.6535-11.3907,12.6535ZM84.3576,65.4144c-6.2637,0-11.3907-5.6575-11.3907-12.6535s4.9755-12.6788,11.3907-12.6788,11.4917,5.708,11.3906,12.6788c-.101,6.9708-5.026,12.6535-11.3906,12.6535Z';
export const discordViewBox = '0 0 126.644 96';

View File

@@ -27,8 +27,10 @@
/administration/password-login /administration/system-settings 307
/features/search /features/searching 307
/features/smart-search /features/searching 307
/guides/api-album-sync /community-projects 307
/guides/remove-offline-files /community-projects 307
/guides/api-album-sync https://awesome.immich.app/ 307
/guides/remove-offline-files https://awesome.immich.app/ 307
/community-guides https://awesome.immich.app/ 307
/community-projects https://awesome.immich.app/ 307
/overview/introduction /overview/quick-start 307
/overview/welcome /overview/quick-start 307
/docs/* /:splat 307

View File

@@ -1,4 +1,20 @@
[
{
"label": "v2.2.3",
"url": "https://docs.v2.2.3.archive.immich.app"
},
{
"label": "v2.2.2",
"url": "https://docs.v2.2.2.archive.immich.app"
},
{
"label": "v2.2.1",
"url": "https://docs.v2.2.1.archive.immich.app"
},
{
"label": "v2.2.0",
"url": "https://docs.v2.2.0.archive.immich.app"
},
{
"label": "v2.1.0",
"url": "https://docs.v2.1.0.archive.immich.app"

View File

@@ -1 +1 @@
22.20.0
24.11.0

View File

@@ -35,7 +35,7 @@ services:
- 2285:2285
redis:
image: redis:6.2-alpine@sha256:77697a75da9f94e9357b61fcaf8345f69e3d9d32e9d15032c8415c21263977dc
image: redis:6.2-alpine@sha256:37e002448575b32a599109664107e374c8709546905c372a34d64919043b9ceb
database:
image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0@sha256:6f3e9d2c2177af16c2988ff71425d79d89ca630ec2f9c8db03209ab716542338

View File

@@ -1,6 +1,6 @@
{
"name": "immich-e2e",
"version": "2.1.0",
"version": "2.2.3",
"description": "",
"main": "index.js",
"type": "module",
@@ -25,7 +25,7 @@
"@playwright/test": "^1.44.1",
"@socket.io/component-emitter": "^3.1.2",
"@types/luxon": "^3.4.2",
"@types/node": "^22.18.8",
"@types/node": "^22.18.13",
"@types/oidc-provider": "^9.0.0",
"@types/pg": "^8.15.1",
"@types/pngjs": "^6.0.4",
@@ -34,7 +34,7 @@
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-unicorn": "^60.0.0",
"exiftool-vendored": "^28.3.1",
"exiftool-vendored": "^31.1.0",
"globals": "^16.0.0",
"jose": "^5.6.3",
"luxon": "^3.4.4",
@@ -52,6 +52,9 @@
"vitest": "^3.0.0"
},
"volta": {
"node": "22.20.0"
"node": "24.11.0"
},
"dependencies": {
"structured-headers": "^2.0.2"
}
}

View File

@@ -136,6 +136,7 @@ describe('/albums', () => {
expect(body).toEqual({
...user1Albums[0],
assets: [expect.objectContaining({ isFavorite: false })],
contributorCounts: [{ userId: user1.userId, assetCount: 1 }],
lastModifiedAssetTimestamp: expect.any(String),
startDate: expect.any(String),
endDate: expect.any(String),
@@ -310,6 +311,7 @@ describe('/albums', () => {
expect(body).toEqual({
...user1Albums[0],
assets: [expect.objectContaining({ id: user1Albums[0].assets[0].id })],
contributorCounts: [{ userId: user1.userId, assetCount: 1 }],
lastModifiedAssetTimestamp: expect.any(String),
startDate: expect.any(String),
endDate: expect.any(String),
@@ -345,6 +347,7 @@ describe('/albums', () => {
expect(body).toEqual({
...user1Albums[0],
assets: [expect.objectContaining({ id: user1Albums[0].assets[0].id })],
contributorCounts: [{ userId: user1.userId, assetCount: 1 }],
lastModifiedAssetTimestamp: expect.any(String),
startDate: expect.any(String),
endDate: expect.any(String),
@@ -362,6 +365,7 @@ describe('/albums', () => {
expect(body).toEqual({
...user1Albums[0],
assets: [],
contributorCounts: [{ userId: user1.userId, assetCount: 1 }],
assetCount: 1,
lastModifiedAssetTimestamp: expect.any(String),
endDate: expect.any(String),
@@ -382,6 +386,7 @@ describe('/albums', () => {
expect(body).toEqual({
...user2Albums[0],
assets: [],
contributorCounts: [{ userId: user1.userId, assetCount: 1 }],
assetCount: 1,
lastModifiedAssetTimestamp: expect.any(String),
endDate: expect.any(String),

File diff suppressed because it is too large Load Diff

View File

@@ -15,7 +15,6 @@ import { DateTime } from 'luxon';
import { randomBytes } from 'node:crypto';
import { readFile, writeFile } from 'node:fs/promises';
import { basename, join } from 'node:path';
import sharp from 'sharp';
import { Socket } from 'socket.io-client';
import { createUserDto, uuidDto } from 'src/fixtures';
import { makeRandomImage } from 'src/generators';
@@ -41,40 +40,6 @@ const today = DateTime.fromObject({
}) as DateTime<true>;
const yesterday = today.minus({ days: 1 });
const createTestImageWithExif = async (filename: string, exifData: Record<string, any>) => {
// Generate unique color to ensure different checksums for each image
const r = Math.floor(Math.random() * 256);
const g = Math.floor(Math.random() * 256);
const b = Math.floor(Math.random() * 256);
// Create a 100x100 solid color JPEG using Sharp
const imageBytes = await sharp({
create: {
width: 100,
height: 100,
channels: 3,
background: { r, g, b },
},
})
.jpeg({ quality: 90 })
.toBuffer();
// Add random suffix to filename to avoid collisions
const uniqueFilename = filename.replace('.jpg', `-${randomBytes(4).toString('hex')}.jpg`);
const filepath = join(tempDir, uniqueFilename);
await writeFile(filepath, imageBytes);
// Filter out undefined values before writing EXIF
const cleanExifData = Object.fromEntries(Object.entries(exifData).filter(([, value]) => value !== undefined));
await exiftool.write(filepath, cleanExifData);
// Re-read the image bytes after EXIF has been written
const finalImageBytes = await readFile(filepath);
return { filepath, imageBytes: finalImageBytes, filename: uniqueFilename };
};
describe('/asset', () => {
let admin: LoginResponseDto;
let websocket: Socket;
@@ -1249,411 +1214,6 @@ describe('/asset', () => {
});
});
describe('EXIF metadata extraction', () => {
describe('Additional date tag extraction', () => {
describe('Date-time vs time-only tag handling', () => {
it('should fall back to file timestamps when only time-only tags are available', async () => {
const { imageBytes, filename } = await createTestImageWithExif('time-only-fallback.jpg', {
TimeCreated: '2023:11:15 14:30:00', // Time-only tag, should not be used for dateTimeOriginal
// Exclude all date-time tags to force fallback to file timestamps
SubSecDateTimeOriginal: undefined,
DateTimeOriginal: undefined,
SubSecCreateDate: undefined,
SubSecMediaCreateDate: undefined,
CreateDate: undefined,
MediaCreateDate: undefined,
CreationDate: undefined,
DateTimeCreated: undefined,
GPSDateTime: undefined,
DateTimeUTC: undefined,
SonyDateTime2: undefined,
GPSDateStamp: undefined,
});
const oldDate = new Date('2020-01-01T00:00:00.000Z');
const asset = await utils.createAsset(admin.accessToken, {
assetData: {
filename,
bytes: imageBytes,
},
fileCreatedAt: oldDate.toISOString(),
fileModifiedAt: oldDate.toISOString(),
});
await utils.waitForWebsocketEvent({ event: 'assetUpload', id: asset.id });
const assetInfo = await getAssetInfo({ id: asset.id }, { headers: asBearerAuth(admin.accessToken) });
expect(assetInfo.exifInfo?.dateTimeOriginal).toBeDefined();
// Should fall back to file timestamps, which we set to 2020-01-01
expect(new Date(assetInfo.exifInfo!.dateTimeOriginal!).getTime()).toBe(
new Date('2020-01-01T00:00:00.000Z').getTime(),
);
});
it('should prefer DateTimeOriginal over time-only tags', async () => {
const { imageBytes, filename } = await createTestImageWithExif('datetime-over-time.jpg', {
DateTimeOriginal: '2023:10:10 10:00:00', // Should be preferred
TimeCreated: '2023:11:15 14:30:00', // Should be ignored (time-only)
});
const asset = await utils.createAsset(admin.accessToken, {
assetData: {
filename,
bytes: imageBytes,
},
});
await utils.waitForWebsocketEvent({ event: 'assetUpload', id: asset.id });
const assetInfo = await getAssetInfo({ id: asset.id }, { headers: asBearerAuth(admin.accessToken) });
expect(assetInfo.exifInfo?.dateTimeOriginal).toBeDefined();
// Should use DateTimeOriginal, not TimeCreated
expect(new Date(assetInfo.exifInfo!.dateTimeOriginal!).getTime()).toBe(
new Date('2023-10-10T10:00:00.000Z').getTime(),
);
});
});
describe('GPSDateTime tag extraction', () => {
it('should extract GPSDateTime with GPS coordinates', async () => {
const { imageBytes, filename } = await createTestImageWithExif('gps-datetime.jpg', {
GPSDateTime: '2023:11:15 12:30:00Z',
GPSLatitude: 37.7749,
GPSLongitude: -122.4194,
// Exclude other date tags
SubSecDateTimeOriginal: undefined,
DateTimeOriginal: undefined,
SubSecCreateDate: undefined,
SubSecMediaCreateDate: undefined,
CreateDate: undefined,
MediaCreateDate: undefined,
CreationDate: undefined,
DateTimeCreated: undefined,
TimeCreated: undefined,
});
const asset = await utils.createAsset(admin.accessToken, {
assetData: {
filename,
bytes: imageBytes,
},
});
await utils.waitForWebsocketEvent({ event: 'assetUpload', id: asset.id });
const assetInfo = await getAssetInfo({ id: asset.id }, { headers: asBearerAuth(admin.accessToken) });
expect(assetInfo.exifInfo?.dateTimeOriginal).toBeDefined();
expect(assetInfo.exifInfo?.latitude).toBeCloseTo(37.7749, 4);
expect(assetInfo.exifInfo?.longitude).toBeCloseTo(-122.4194, 4);
expect(new Date(assetInfo.exifInfo!.dateTimeOriginal!).getTime()).toBe(
new Date('2023-11-15T12:30:00.000Z').getTime(),
);
});
});
describe('CreateDate tag extraction', () => {
it('should extract CreateDate when available', async () => {
const { imageBytes, filename } = await createTestImageWithExif('create-date.jpg', {
CreateDate: '2023:11:15 10:30:00',
// Exclude other higher priority date tags
SubSecDateTimeOriginal: undefined,
DateTimeOriginal: undefined,
SubSecCreateDate: undefined,
SubSecMediaCreateDate: undefined,
MediaCreateDate: undefined,
CreationDate: undefined,
DateTimeCreated: undefined,
TimeCreated: undefined,
GPSDateTime: undefined,
});
const asset = await utils.createAsset(admin.accessToken, {
assetData: {
filename,
bytes: imageBytes,
},
});
await utils.waitForWebsocketEvent({ event: 'assetUpload', id: asset.id });
const assetInfo = await getAssetInfo({ id: asset.id }, { headers: asBearerAuth(admin.accessToken) });
expect(assetInfo.exifInfo?.dateTimeOriginal).toBeDefined();
expect(new Date(assetInfo.exifInfo!.dateTimeOriginal!).getTime()).toBe(
new Date('2023-11-15T10:30:00.000Z').getTime(),
);
});
});
describe('GPSDateStamp tag extraction', () => {
it('should fall back to file timestamps when only date-only tags are available', async () => {
const { imageBytes, filename } = await createTestImageWithExif('gps-datestamp.jpg', {
GPSDateStamp: '2023:11:15', // Date-only tag, should not be used for dateTimeOriginal
// Note: NOT including GPSTimeStamp to avoid automatic GPSDateTime creation
GPSLatitude: 51.5074,
GPSLongitude: -0.1278,
// Explicitly exclude all testable date-time tags to force fallback to file timestamps
DateTimeOriginal: undefined,
CreateDate: undefined,
CreationDate: undefined,
GPSDateTime: undefined,
});
const oldDate = new Date('2020-01-01T00:00:00.000Z');
const asset = await utils.createAsset(admin.accessToken, {
assetData: {
filename,
bytes: imageBytes,
},
fileCreatedAt: oldDate.toISOString(),
fileModifiedAt: oldDate.toISOString(),
});
await utils.waitForWebsocketEvent({ event: 'assetUpload', id: asset.id });
const assetInfo = await getAssetInfo({ id: asset.id }, { headers: asBearerAuth(admin.accessToken) });
expect(assetInfo.exifInfo?.dateTimeOriginal).toBeDefined();
expect(assetInfo.exifInfo?.latitude).toBeCloseTo(51.5074, 4);
expect(assetInfo.exifInfo?.longitude).toBeCloseTo(-0.1278, 4);
// Should fall back to file timestamps, which we set to 2020-01-01
expect(new Date(assetInfo.exifInfo!.dateTimeOriginal!).getTime()).toBe(
new Date('2020-01-01T00:00:00.000Z').getTime(),
);
});
});
/*
* NOTE: The following EXIF date tags are NOT effectively usable with JPEG test files:
*
* NOT WRITABLE to JPEG:
* - MediaCreateDate: Can be read from video files but not written to JPEG
* - DateTimeCreated: Read-only tag in JPEG format
* - DateTimeUTC: Cannot be written to JPEG files
* - SonyDateTime2: Proprietary Sony tag, not writable to JPEG
* - SubSecMediaCreateDate: Tag not defined for JPEG format
* - SourceImageCreateTime: Non-standard insta360 tag, not writable to JPEG
*
* WRITABLE but NOT READABLE from JPEG:
* - SubSecDateTimeOriginal: Can be written but not read back from JPEG
* - SubSecCreateDate: Can be written but not read back from JPEG
*
* EFFECTIVELY TESTABLE TAGS (writable and readable):
* - DateTimeOriginal ✓
* - CreateDate ✓
* - CreationDate ✓
* - GPSDateTime ✓
*
* The metadata service correctly handles non-readable tags and will fall back to
* file timestamps when only non-readable tags are present.
*/
describe('Date tag priority order', () => {
it('should respect the complete date tag priority order', async () => {
// Test cases using only EFFECTIVELY TESTABLE tags (writable AND readable from JPEG)
const testCases = [
{
name: 'DateTimeOriginal has highest priority among testable tags',
exifData: {
DateTimeOriginal: '2023:04:04 04:00:00', // TESTABLE - highest priority among readable tags
CreateDate: '2023:05:05 05:00:00', // TESTABLE
CreationDate: '2023:07:07 07:00:00', // TESTABLE
GPSDateTime: '2023:10:10 10:00:00', // TESTABLE
},
expectedDate: '2023-04-04T04:00:00.000Z',
},
{
name: 'CreationDate when DateTimeOriginal missing',
exifData: {
CreationDate: '2023:05:05 05:00:00', // TESTABLE
CreateDate: '2023:07:07 07:00:00', // TESTABLE
GPSDateTime: '2023:10:10 10:00:00', // TESTABLE
},
expectedDate: '2023-05-05T05:00:00.000Z',
},
{
name: 'CreationDate when standard EXIF tags missing',
exifData: {
CreationDate: '2023:07:07 07:00:00', // TESTABLE
GPSDateTime: '2023:10:10 10:00:00', // TESTABLE
},
expectedDate: '2023-07-07T07:00:00.000Z',
},
{
name: 'GPSDateTime when no other testable date tags present',
exifData: {
GPSDateTime: '2023:10:10 10:00:00', // TESTABLE
Make: 'SONY',
},
expectedDate: '2023-10-10T10:00:00.000Z',
},
];
for (const testCase of testCases) {
const { imageBytes, filename } = await createTestImageWithExif(
`${testCase.name.replaceAll(/\s+/g, '-').toLowerCase()}.jpg`,
testCase.exifData,
);
const asset = await utils.createAsset(admin.accessToken, {
assetData: {
filename,
bytes: imageBytes,
},
});
await utils.waitForWebsocketEvent({ event: 'assetUpload', id: asset.id });
const assetInfo = await getAssetInfo({ id: asset.id }, { headers: asBearerAuth(admin.accessToken) });
expect(assetInfo.exifInfo?.dateTimeOriginal, `Failed for: ${testCase.name}`).toBeDefined();
expect(
new Date(assetInfo.exifInfo!.dateTimeOriginal!).getTime(),
`Date mismatch for: ${testCase.name}`,
).toBe(new Date(testCase.expectedDate).getTime());
}
});
});
describe('Edge cases for date tag handling', () => {
it('should fall back to file timestamps with GPSDateStamp alone', async () => {
const { imageBytes, filename } = await createTestImageWithExif('gps-datestamp-only.jpg', {
GPSDateStamp: '2023:08:08', // Date-only tag, should not be used for dateTimeOriginal
// Intentionally no GPSTimeStamp
// Exclude all other date tags
SubSecDateTimeOriginal: undefined,
DateTimeOriginal: undefined,
SubSecCreateDate: undefined,
SubSecMediaCreateDate: undefined,
CreateDate: undefined,
MediaCreateDate: undefined,
CreationDate: undefined,
DateTimeCreated: undefined,
TimeCreated: undefined,
GPSDateTime: undefined,
DateTimeUTC: undefined,
});
const oldDate = new Date('2020-01-01T00:00:00.000Z');
const asset = await utils.createAsset(admin.accessToken, {
assetData: {
filename,
bytes: imageBytes,
},
fileCreatedAt: oldDate.toISOString(),
fileModifiedAt: oldDate.toISOString(),
});
await utils.waitForWebsocketEvent({ event: 'assetUpload', id: asset.id });
const assetInfo = await getAssetInfo({ id: asset.id }, { headers: asBearerAuth(admin.accessToken) });
expect(assetInfo.exifInfo?.dateTimeOriginal).toBeDefined();
// Should fall back to file timestamps, which we set to 2020-01-01
expect(new Date(assetInfo.exifInfo!.dateTimeOriginal!).getTime()).toBe(
new Date('2020-01-01T00:00:00.000Z').getTime(),
);
});
it('should handle all testable date tags present to verify complete priority order', async () => {
const { imageBytes, filename } = await createTestImageWithExif('all-testable-date-tags.jpg', {
// All TESTABLE date tags to JPEG format (writable AND readable)
DateTimeOriginal: '2023:04:04 04:00:00', // TESTABLE - highest priority among readable tags
CreateDate: '2023:05:05 05:00:00', // TESTABLE
CreationDate: '2023:07:07 07:00:00', // TESTABLE
GPSDateTime: '2023:10:10 10:00:00', // TESTABLE
// Note: Excluded non-testable tags:
// SubSec tags: writable but not readable from JPEG
// Non-writable tags: MediaCreateDate, DateTimeCreated, DateTimeUTC, SonyDateTime2, etc.
// Time-only/date-only tags: already excluded from EXIF_DATE_TAGS
});
const asset = await utils.createAsset(admin.accessToken, {
assetData: {
filename,
bytes: imageBytes,
},
});
await utils.waitForWebsocketEvent({ event: 'assetUpload', id: asset.id });
const assetInfo = await getAssetInfo({ id: asset.id }, { headers: asBearerAuth(admin.accessToken) });
expect(assetInfo.exifInfo?.dateTimeOriginal).toBeDefined();
// Should use DateTimeOriginal as it has the highest priority among testable tags
expect(new Date(assetInfo.exifInfo!.dateTimeOriginal!).getTime()).toBe(
new Date('2023-04-04T04:00:00.000Z').getTime(),
);
});
it('should use CreationDate when SubSec tags are missing', async () => {
const { imageBytes, filename } = await createTestImageWithExif('creation-date-priority.jpg', {
CreationDate: '2023:07:07 07:00:00', // WRITABLE
GPSDateTime: '2023:10:10 10:00:00', // WRITABLE
// Note: DateTimeCreated, DateTimeUTC, SonyDateTime2 are NOT writable to JPEG
// Note: TimeCreated and GPSDateStamp are excluded from EXIF_DATE_TAGS (time-only/date-only)
// Exclude SubSec and standard EXIF tags
SubSecDateTimeOriginal: undefined,
DateTimeOriginal: undefined,
SubSecCreateDate: undefined,
CreateDate: undefined,
});
const asset = await utils.createAsset(admin.accessToken, {
assetData: {
filename,
bytes: imageBytes,
},
});
await utils.waitForWebsocketEvent({ event: 'assetUpload', id: asset.id });
const assetInfo = await getAssetInfo({ id: asset.id }, { headers: asBearerAuth(admin.accessToken) });
expect(assetInfo.exifInfo?.dateTimeOriginal).toBeDefined();
// Should use CreationDate when available
expect(new Date(assetInfo.exifInfo!.dateTimeOriginal!).getTime()).toBe(
new Date('2023-07-07T07:00:00.000Z').getTime(),
);
});
it('should skip invalid date formats and use next valid tag', async () => {
const { imageBytes, filename } = await createTestImageWithExif('invalid-date-handling.jpg', {
// Note: Testing invalid date handling with only WRITABLE tags
GPSDateTime: '2023:10:10 10:00:00', // WRITABLE - Valid date
CreationDate: '2023:13:13 13:00:00', // WRITABLE - Valid date
// Note: TimeCreated excluded (time-only), DateTimeCreated not writable to JPEG
// Exclude other date tags
SubSecDateTimeOriginal: undefined,
DateTimeOriginal: undefined,
SubSecCreateDate: undefined,
CreateDate: undefined,
});
const asset = await utils.createAsset(admin.accessToken, {
assetData: {
filename,
bytes: imageBytes,
},
});
await utils.waitForWebsocketEvent({ event: 'assetUpload', id: asset.id });
const assetInfo = await getAssetInfo({ id: asset.id }, { headers: asBearerAuth(admin.accessToken) });
expect(assetInfo.exifInfo?.dateTimeOriginal).toBeDefined();
// Should skip invalid dates and use the first valid one (GPSDateTime)
expect(new Date(assetInfo.exifInfo!.dateTimeOriginal!).getTime()).toBe(
new Date('2023-10-10T10:00:00.000Z').getTime(),
);
});
});
});
});
describe('POST /assets/exist', () => {
it('ignores invalid deviceAssetIds', async () => {
const response = await utils.checkExistingAssets(user1.accessToken, {

View File

@@ -113,6 +113,7 @@ describe('/server', () => {
importFaces: false,
oauth: false,
oauthAutoLaunch: false,
ocr: false,
passwordLogin: true,
search: true,
sidecar: true,

View File

@@ -582,7 +582,7 @@ describe('/tags', () => {
expect(body).toEqual([expect.objectContaining({ id: userAsset.id, success: true })]);
});
it('should remove duplicate assets only once', async () => {
it.skip('should remove duplicate assets only once', async () => {
const tagA = await create(user.accessToken, { name: 'TagA' });
await tagAssets(
{ id: tagA.id, bulkIdsDto: { ids: [userAsset.id] } },

View File

@@ -1,4 +1,5 @@
import {
JobName,
LoginResponseDto,
createStack,
deleteUserAdmin,
@@ -327,6 +328,8 @@ describe('/admin/users', () => {
{ headers: asBearerAuth(user.accessToken) },
);
await utils.waitForQueueFinish(admin.accessToken, JobName.BackgroundTask);
const { status, body } = await request(app)
.delete(`/admin/users/${user.userId}`)
.send({ force: true })

View File

@@ -442,6 +442,176 @@ describe(`immich upload`, () => {
});
});
describe('immich upload --delete-duplicates', () => {
it('should delete local duplicate files', async () => {
const {
stderr: firstStderr,
stdout: firstStdout,
exitCode: firstExitCode,
} = await immichCli(['upload', `${testAssetDir}/albums/nature/silver_fir.jpg`]);
expect(firstStderr).toContain('{message}');
expect(firstStdout.split('\n')).toEqual(
expect.arrayContaining([expect.stringContaining('Successfully uploaded 1 new asset')]),
);
expect(firstExitCode).toBe(0);
await mkdir(`/tmp/albums/nature`, { recursive: true });
await symlink(`${testAssetDir}/albums/nature/silver_fir.jpg`, `/tmp/albums/nature/silver_fir.jpg`);
// Upload with --delete-duplicates flag
const { stderr, stdout, exitCode } = await immichCli([
'upload',
`/tmp/albums/nature/silver_fir.jpg`,
'--delete-duplicates',
]);
// Check that the duplicate file was deleted
const files = await readdir(`/tmp/albums/nature`);
await rm(`/tmp/albums/nature`, { recursive: true });
expect(files.length).toBe(0);
expect(stdout.split('\n')).toEqual(
expect.arrayContaining([
expect.stringContaining('Found 0 new files and 1 duplicate'),
expect.stringContaining('All assets were already uploaded, nothing to do'),
]),
);
expect(stderr).toContain('{message}');
expect(exitCode).toBe(0);
// Verify no new assets were uploaded
const assets = await getAssetStatistics({}, { headers: asKeyAuth(key) });
expect(assets.total).toBe(1);
});
it('should have accurate dry run with --delete-duplicates', async () => {
const {
stderr: firstStderr,
stdout: firstStdout,
exitCode: firstExitCode,
} = await immichCli(['upload', `${testAssetDir}/albums/nature/silver_fir.jpg`]);
expect(firstStderr).toContain('{message}');
expect(firstStdout.split('\n')).toEqual(
expect.arrayContaining([expect.stringContaining('Successfully uploaded 1 new asset')]),
);
expect(firstExitCode).toBe(0);
await mkdir(`/tmp/albums/nature`, { recursive: true });
await symlink(`${testAssetDir}/albums/nature/silver_fir.jpg`, `/tmp/albums/nature/silver_fir.jpg`);
// Upload with --delete-duplicates and --dry-run flags
const { stderr, stdout, exitCode } = await immichCli([
'upload',
`/tmp/albums/nature/silver_fir.jpg`,
'--delete-duplicates',
'--dry-run',
]);
// Check that the duplicate file was NOT deleted in dry run mode
const files = await readdir(`/tmp/albums/nature`);
await rm(`/tmp/albums/nature`, { recursive: true });
expect(files.length).toBe(1);
expect(stdout.split('\n')).toEqual(
expect.arrayContaining([
expect.stringContaining('Found 0 new files and 1 duplicate'),
expect.stringContaining('Would have deleted 1 local asset'),
]),
);
expect(stderr).toContain('{message}');
expect(exitCode).toBe(0);
// Verify no new assets were uploaded
const assets = await getAssetStatistics({}, { headers: asKeyAuth(key) });
expect(assets.total).toBe(1);
});
it('should work with both --delete and --delete-duplicates flags', async () => {
// First, upload a file to create a duplicate on the server
const {
stderr: firstStderr,
stdout: firstStdout,
exitCode: firstExitCode,
} = await immichCli(['upload', `${testAssetDir}/albums/nature/silver_fir.jpg`]);
expect(firstStderr).toContain('{message}');
expect(firstStdout.split('\n')).toEqual(
expect.arrayContaining([expect.stringContaining('Successfully uploaded 1 new asset')]),
);
expect(firstExitCode).toBe(0);
// Both new and duplicate files
await mkdir(`/tmp/albums/nature`, { recursive: true });
await symlink(`${testAssetDir}/albums/nature/silver_fir.jpg`, `/tmp/albums/nature/silver_fir.jpg`); // duplicate
await symlink(`${testAssetDir}/albums/nature/el_torcal_rocks.jpg`, `/tmp/albums/nature/el_torcal_rocks.jpg`); // new
// Upload with both --delete and --delete-duplicates flags
const { stderr, stdout, exitCode } = await immichCli([
'upload',
`/tmp/albums/nature`,
'--delete',
'--delete-duplicates',
]);
// Check that both files were deleted (new file due to --delete, duplicate due to --delete-duplicates)
const files = await readdir(`/tmp/albums/nature`);
await rm(`/tmp/albums/nature`, { recursive: true });
expect(files.length).toBe(0);
expect(stdout.split('\n')).toEqual(
expect.arrayContaining([
expect.stringContaining('Found 1 new files and 1 duplicate'),
expect.stringContaining('Successfully uploaded 1 new asset'),
expect.stringContaining('Deleting assets that have been uploaded'),
]),
);
expect(stderr).toContain('{message}');
expect(exitCode).toBe(0);
// Verify one new asset was uploaded (total should be 2 now)
const assets = await getAssetStatistics({}, { headers: asKeyAuth(key) });
expect(assets.total).toBe(2);
});
it('should only delete duplicates when --delete-duplicates is used without --delete', async () => {
const {
stderr: firstStderr,
stdout: firstStdout,
exitCode: firstExitCode,
} = await immichCli(['upload', `${testAssetDir}/albums/nature/silver_fir.jpg`]);
expect(firstStderr).toContain('{message}');
expect(firstStdout.split('\n')).toEqual(
expect.arrayContaining([expect.stringContaining('Successfully uploaded 1 new asset')]),
);
expect(firstExitCode).toBe(0);
// Both new and duplicate files
await mkdir(`/tmp/albums/nature`, { recursive: true });
await symlink(`${testAssetDir}/albums/nature/silver_fir.jpg`, `/tmp/albums/nature/silver_fir.jpg`); // duplicate
await symlink(`${testAssetDir}/albums/nature/el_torcal_rocks.jpg`, `/tmp/albums/nature/el_torcal_rocks.jpg`); // new
// Upload with only --delete-duplicates flag
const { stderr, stdout, exitCode } = await immichCli(['upload', `/tmp/albums/nature`, '--delete-duplicates']);
// Check that only the duplicate was deleted, new file should remain
const files = await readdir(`/tmp/albums/nature`);
await rm(`/tmp/albums/nature`, { recursive: true });
expect(files).toEqual(['el_torcal_rocks.jpg']);
expect(stdout.split('\n')).toEqual(
expect.arrayContaining([
expect.stringContaining('Found 1 new files and 1 duplicate'),
expect.stringContaining('Successfully uploaded 1 new asset'),
]),
);
expect(stderr).toContain('{message}');
expect(exitCode).toBe(0);
// Verify one new asset was uploaded (total should be 2 now)
const assets = await getAssetStatistics({}, { headers: asKeyAuth(key) });
expect(assets.total).toBe(2);
});
});
describe('immich upload --skip-hash', () => {
it('should skip hashing', async () => {
const filename = `albums/nature/silver_fir.jpg`;

View File

@@ -1,178 +0,0 @@
#!/usr/bin/env node
/**
* Script to generate test images with additional EXIF date tags
* This creates actual JPEG images with embedded metadata for testing
* Images are generated into e2e/test-assets/metadata/dates/
*/
import { execSync } from 'node:child_process';
import { writeFileSync } from 'node:fs';
import { dirname, join } from 'node:path';
import { fileURLToPath } from 'node:url';
import sharp from 'sharp';
interface TestImage {
filename: string;
description: string;
exifTags: Record<string, string>;
}
const testImages: TestImage[] = [
{
filename: 'time-created.jpg',
description: 'Image with TimeCreated tag',
exifTags: {
TimeCreated: '2023:11:15 14:30:00',
Make: 'Canon',
Model: 'EOS R5',
},
},
{
filename: 'gps-datetime.jpg',
description: 'Image with GPSDateTime and coordinates',
exifTags: {
GPSDateTime: '2023:11:15 12:30:00Z',
GPSLatitude: '37.7749',
GPSLongitude: '-122.4194',
GPSLatitudeRef: 'N',
GPSLongitudeRef: 'W',
},
},
{
filename: 'datetime-utc.jpg',
description: 'Image with DateTimeUTC tag',
exifTags: {
DateTimeUTC: '2023:11:15 10:30:00',
Make: 'Nikon',
Model: 'D850',
},
},
{
filename: 'gps-datestamp.jpg',
description: 'Image with GPSDateStamp and GPSTimeStamp',
exifTags: {
GPSDateStamp: '2023:11:15',
GPSTimeStamp: '08:30:00',
GPSLatitude: '51.5074',
GPSLongitude: '-0.1278',
GPSLatitudeRef: 'N',
GPSLongitudeRef: 'W',
},
},
{
filename: 'sony-datetime2.jpg',
description: 'Sony camera image with SonyDateTime2 tag',
exifTags: {
SonyDateTime2: '2023:11:15 06:30:00',
Make: 'SONY',
Model: 'ILCE-7RM5',
},
},
{
filename: 'date-priority-test.jpg',
description: 'Image with multiple date tags to test priority',
exifTags: {
SubSecDateTimeOriginal: '2023:01:01 01:00:00',
DateTimeOriginal: '2023:02:02 02:00:00',
SubSecCreateDate: '2023:03:03 03:00:00',
CreateDate: '2023:04:04 04:00:00',
CreationDate: '2023:05:05 05:00:00',
DateTimeCreated: '2023:06:06 06:00:00',
TimeCreated: '2023:07:07 07:00:00',
GPSDateTime: '2023:08:08 08:00:00',
DateTimeUTC: '2023:09:09 09:00:00',
GPSDateStamp: '2023:10:10',
SonyDateTime2: '2023:11:11 11:00:00',
},
},
{
filename: 'new-tags-only.jpg',
description: 'Image with only additional date tags (no standard tags)',
exifTags: {
TimeCreated: '2023:12:01 15:45:30',
GPSDateTime: '2023:12:01 13:45:30Z',
DateTimeUTC: '2023:12:01 13:45:30',
GPSDateStamp: '2023:12:01',
SonyDateTime2: '2023:12:01 08:45:30',
GPSLatitude: '40.7128',
GPSLongitude: '-74.0060',
GPSLatitudeRef: 'N',
GPSLongitudeRef: 'W',
},
},
];
const generateTestImages = async (): Promise<void> => {
// Target directory: e2e/test-assets/metadata/dates/
// Current file is in: e2e/src/
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const targetDir = join(__dirname, '..', 'test-assets', 'metadata', 'dates');
console.log('Generating test images with additional EXIF date tags...');
console.log(`Target directory: ${targetDir}`);
for (const image of testImages) {
try {
const imagePath = join(targetDir, image.filename);
// Create unique JPEG file using Sharp
const r = Math.floor(Math.random() * 256);
const g = Math.floor(Math.random() * 256);
const b = Math.floor(Math.random() * 256);
const jpegData = await sharp({
create: {
width: 100,
height: 100,
channels: 3,
background: { r, g, b },
},
})
.jpeg({ quality: 90 })
.toBuffer();
writeFileSync(imagePath, jpegData);
// Build exiftool command to add EXIF data
const exifArgs = Object.entries(image.exifTags)
.map(([tag, value]) => `-${tag}="${value}"`)
.join(' ');
const command = `exiftool ${exifArgs} -overwrite_original "${imagePath}"`;
console.log(`Creating ${image.filename}: ${image.description}`);
execSync(command, { stdio: 'pipe' });
// Verify the tags were written
const verifyCommand = `exiftool -json "${imagePath}"`;
const result = execSync(verifyCommand, { encoding: 'utf8' });
const metadata = JSON.parse(result)[0];
console.log(` ✓ Created with ${Object.keys(image.exifTags).length} EXIF tags`);
// Log first date tag found for verification
const firstDateTag = Object.keys(image.exifTags).find(
(tag) => tag.includes('Date') || tag.includes('Time') || tag.includes('Created'),
);
if (firstDateTag && metadata[firstDateTag]) {
console.log(` ✓ Verified ${firstDateTag}: ${metadata[firstDateTag]}`);
}
} catch (error) {
console.error(`Failed to create ${image.filename}:`, (error as Error).message);
}
}
console.log('\nTest image generation complete!');
console.log('Files created in:', targetDir);
console.log('\nTo test these images:');
console.log(`cd ${targetDir} && exiftool -time:all -gps:all *.jpg`);
};
export { generateTestImages };
// Run the generator if this file is executed directly
if (import.meta.url === `file://${process.argv[1]}`) {
generateTestImages().catch(console.error);
}

View File

@@ -119,5 +119,6 @@ export const deviceDto = {
isPendingSyncReset: false,
deviceOS: '',
deviceType: '',
appVersion: null,
},
};

View File

@@ -561,6 +561,16 @@ export const utils = {
await utils.waitForQueueFinish(accessToken, 'sidecar');
await utils.waitForQueueFinish(accessToken, 'metadataExtraction');
},
downloadAsset: async (accessToken: string, id: string) => {
const downloadedRes = await fetch(`${baseUrl}/api/assets/${id}/original`, {
headers: asBearerAuth(accessToken),
});
if (!downloadedRes.ok) {
throw new Error(`Failed to download asset ${id}: ${downloadedRes.status} ${await downloadedRes.text()}`);
}
return await downloadedRes.blob();
},
};
utils.initSdk();

View File

@@ -59,7 +59,7 @@ test.describe('Asset Viewer Navbar', () => {
await page.goto(`/photos/${asset.id}`);
await page.waitForSelector('#immich-asset-viewer');
await page.keyboard.press('f');
await expect(page.locator('#notification-list').getByTestId('message')).toHaveText('Added to favorites');
await expect(page.getByText('Added to favorites')).toBeVisible();
});
});
});

View File

@@ -51,6 +51,6 @@ test.describe('Slideshow', () => {
await expect(page.getByRole('button', { name: 'Exit Slideshow' })).toBeVisible();
await page.keyboard.press('f');
await expect(page.locator('#notification-list')).not.toBeVisible();
await expect(page.getByText('Added to favorites')).not.toBeVisible();
});
});

View File

@@ -38,6 +38,7 @@ test.describe('Registration', () => {
await page.getByRole('button', { name: 'User Privacy' }).click();
await page.getByRole('button', { name: 'Storage Template' }).click();
await page.getByRole('button', { name: 'Backups' }).click();
await page.getByRole('button', { name: 'Mobile App' }).click();
await page.getByRole('button', { name: 'Done' }).click();
// success
@@ -85,6 +86,7 @@ test.describe('Registration', () => {
await page.getByRole('button', { name: 'Theme' }).click();
await page.getByRole('button', { name: 'Language' }).click();
await page.getByRole('button', { name: 'User Privacy' }).click();
await page.getByRole('button', { name: 'Mobile App' }).click();
await page.getByRole('button', { name: 'Done' }).click();
// success

View File

@@ -170,7 +170,6 @@
"duplicates": "Duplikate",
"duration": "Duur",
"edit": "Wysig",
"edited": "Gewysigd",
"search_by_description": "Soek by beskrywing",
"search_by_description_example": "Stapdag in Sapa",
"version": "Weergawe",

View File

@@ -119,12 +119,12 @@
"library_settings": "المكتبة الخارجية",
"library_settings_description": "إدارة إعدادات المكتبة الخارجية",
"library_tasks_description": "مسح المكتبات الخارجية للعثور على الأصول الجديدة و/أو المتغيرة",
"library_watching_enable_description": "راقب المكتبات الخارجية لتغييرات الملفات",
"library_watching_settings": "مراقبة المكتبات (تجريبي)",
"library_watching_enable_description": "مراقبة المكتبات الخارجية لاكتشاف تغييرات الملفات",
"library_watching_settings": "مراقبة المكتبات [تجريبي]",
"library_watching_settings_description": "راقب تلقائيًا التغييرات في الملفات",
"logging_enable_description": "تفعيل تسجيل الأحداث",
"logging_level_description": "عند التفعيل، أي مستوى تسجيل سيستخدم.",
"logging_settings": "تسجيل الاحداث",
"logging_settings": "السجلات",
"machine_learning_availability_checks": "تحقق من التوفر",
"machine_learning_availability_checks_description": "تحديد خوادم التعلم الآلي المتاحة تلقائيًا وإعطاءها الأولوية",
"machine_learning_availability_checks_enabled": "تفعيل عمليات فحص التوفر",
@@ -206,7 +206,7 @@
"note_cannot_be_changed_later": "ملاحظة: لا يمكن تغيير هذا لاحقًا!",
"notification_email_from_address": "عنوان المرسل",
"notification_email_from_address_description": "عنوان البريد الإلكتروني للمرسل، على سبيل المثال: \"Immich Photo Server noreply@example.com\". تاكد من استخدام عنوان بريد الكتروني يسمح لك بارسال البريد الالكتروني منه.",
"notification_email_host_description": "مضيف خادم البريد الإلكتروني (مثلًا: smtp.immich.app)",
"notification_email_host_description": "عنوان خادم البريد الإلكتروني (مثل smtp.immich.app)",
"notification_email_ignore_certificate_errors": "تجاهل أخطاء الشهادة",
"notification_email_ignore_certificate_errors_description": "تجاهل أخطاء التحقق من صحة شهادة TLS (غير مستحسن)",
"notification_email_password_description": "كلمة المرور المستخدمة للمصادقة مع خادم البريد الإلكتروني",
@@ -333,7 +333,7 @@
"transcoding_max_b_frames": "أقصى عدد من الإطارات B",
"transcoding_max_b_frames_description": "القيم الأعلى تعزز كفاءة الضغط، ولكنها تبطئ عملية الترميز. قد لا تكون متوافقة مع التسريع العتادي على الأجهزة القديمة. قيمة 0 تعطل إطارات B، بينما تضبط القيمة -1 هذا القيمة تلقائيًا.",
"transcoding_max_bitrate": "الحد الأقصى لمعدل البت",
"transcoding_max_bitrate_description": مكن أن يؤدي تعيين الحد الأقصى لمعدل البت إلى جعل أحجام الملفات أكثر قابلية للتنبؤ بها بتكلفة بسيطة بالنسبة للجودة. عند دقة 720 بكسل، تكون القيم النموذجية 2600 كيلو بت لـ VP9 أو HEVC، أو 4500 كيلو بت لـ H.264. معطل إذا تم ضبطه على 0.",
"transcoding_max_bitrate_description": تيح تعيين معدل البت الأقصى التحكم في حجم الملف مع تأثير طفيف على الجودة.عند دقة 720p، القيم المقترحة هي 2600 كيلوبت/ثانية لـ VP9 أو HEVC، و4500 كيلوبت/ثانية لـ H.264.يتم تعطيل الإعداد عند القيمة 0. إذا لم تُحدَّد وحدة، يُفترض k (كيلوبت/ثانية)؛ لذا فإن 5000، 5000k، و5M متكافئة.",
"transcoding_max_keyframe_interval": "الحد الأقصى للفاصل الزمني للإطار الرئيسي",
"transcoding_max_keyframe_interval_description": "يضبط الحد الأقصى لمسافة الإطار بين الإطارات الرئيسية. تؤدي القيم المنخفضة إلى زيادة سوء كفاءة الضغط، ولكنها تعمل على تحسين أوقات البحث وقد تعمل على تحسين الجودة في المشاهد ذات الحركة السريعة. 0 يضبط هذه القيمة تلقائيًا.",
"transcoding_optimal_description": "مقاطع الفيديو ذات الدقة الأعلى من الدقة المستهدفة أو بتنسيق غير مقبول",
@@ -351,7 +351,7 @@
"transcoding_target_resolution": "القرار المستهدف",
"transcoding_target_resolution_description": "يمكن أن تحافظ الدقة الأعلى على المزيد من التفاصيل ولكنها تستغرق وقتًا أطول للتشفير، ولها أحجام ملفات أكبر، ويمكن أن تقلل من استجابة التطبيق.",
"transcoding_temporal_aq": "التكميم التكيفي الزمني",
"transcoding_temporal_aq_description": "ينطبق فقط على NVENC. يزيد من جودة المشاهد عالية التفاصيل ومنخفضة الحركة. قد لا يكون متوافقًا مع الأجهزة القديمة.",
"transcoding_temporal_aq_description": "ينطبق فقط على NVENC. تعمل \"الكمّية التكيفية الزمنية\" على تحسين جودة المشاهد ذات التفاصيل الدقيقة والحركة البطيئة. قد لا يكون هذا الخيار متوافقًا مع الأجهزة القديمة.",
"transcoding_threads": "الخيوط",
"transcoding_threads_description": "تؤدي القيم الأعلى إلى تشفير أسرع، ولكنها تترك مساحة أقل للخادم لمعالجة المهام الأخرى أثناء النشاط. يجب ألا تزيد هذه القيمة عن عدد مراكز وحدة المعالجة المركزية. يزيد من الإستغلال إذا تم ضبطه على 0.",
"transcoding_tone_mapping": "رسم الخرائط النغمية",
@@ -701,7 +701,6 @@
"comments_and_likes": "التعليقات والإعجابات",
"comments_are_disabled": "التعليقات معطلة",
"common_create_new_album": "إنشاء ألبوم جديد",
"common_server_error": "يرجى التحقق من اتصال الشبكة الخاص بك ، والتأكد من أن الجهاز قابل للوصول وإصدارات التطبيق/الجهاز متوافقة.",
"completed": "اكتمل",
"confirm": "تأكيد",
"confirm_admin_password": "تأكيد كلمة مرور المسؤول",
@@ -883,7 +882,6 @@
"edit_tag": "تعديل العلامة",
"edit_title": "تعديل العنوان",
"edit_user": "تعديل المستخدم",
"edited": "تم التعديل",
"editor": "محرر",
"editor_close_without_save_prompt": "لن يتم حفظ التغييرات",
"editor_close_without_save_title": "إغلاق المحرر؟",
@@ -1120,7 +1118,6 @@
"header_settings_field_validator_msg": "القيمة لا يمكن ان تكون فارغة",
"header_settings_header_name_input": "اسم الرأس",
"header_settings_header_value_input": "قيمة الرأس",
"headers_settings_tile_subtitle": "قم بتعريف رؤوس الوكيل التي يجب أن يرسلها التطبيق مع كل طلب شبكة",
"headers_settings_tile_title": "رؤوس وكيل مخصصة",
"hi_user": "مرحبا {name} ({email})",
"hide_all_people": "إخفاء جميع الأشخاص",
@@ -1543,13 +1540,9 @@
"privacy": "الخصوصية",
"profile": "حساب تعريفي",
"profile_drawer_app_logs": "السجلات",
"profile_drawer_client_out_of_date_major": "تطبيق الهاتف المحمول قديم.يرجى التحديث إلى أحدث إصدار رئيسي.",
"profile_drawer_client_out_of_date_minor": "تطبيق الهاتف المحمول قديم.يرجى التحديث إلى أحدث إصدار صغير.",
"profile_drawer_client_server_up_to_date": "العميل والخادم محدثان",
"profile_drawer_github": "Github",
"profile_drawer_readonly_mode": "تم تفعيل وضع القراءة فقط. اضغط مطولا على رمز صورة المستخدم للخروج.",
"profile_drawer_server_out_of_date_major": "الخادم قديم.يرجى التحديث إلى أحدث إصدار رئيسي.",
"profile_drawer_server_out_of_date_minor": "الخادم قديم.يرجى التحديث إلى أحدث إصدار صغير.",
"profile_image_of_user": "صورة الملف الشخصي لـ {user}",
"profile_picture_set": "مجموعة الصور الشخصية.",
"public_album": "الألبوم العام",

View File

@@ -329,7 +329,6 @@
"edit_tag": "Рэдагаваць тэг",
"edit_title": "Рэдагаваць загаловак",
"edit_user": "Рэдагаваць карыстальніка",
"edited": "Адрэдагавана",
"editor": "Рэдактар",
"editor_close_without_save_prompt": "Змены не будуць захаваны",
"editor_close_without_save_title": "Закрыць рэдактар?",

View File

@@ -33,6 +33,7 @@
"add_to_albums": "Добавяне в албуми",
"add_to_albums_count": "Добавяне в албуми ({count})",
"add_to_shared_album": "Добави към споделен албум",
"add_upload_to_stack": "Добави качените в група",
"add_url": "Добави URL",
"added_to_archive": "Добавено към архива",
"added_to_favorites": "Добавени към любимите ви",
@@ -90,7 +91,7 @@
"image_prefer_embedded_preview_setting_description": "Използване на вградените миниатюри в RAW снимките като входни за обработка на изображенията, когато има такива. Това може да доведе до по-точни цветове за някои изображения, но качеството на прегледите зависи от камерата и изображението може да има повече компресионни артефакти.",
"image_prefer_wide_gamut": "Предпочитане на широка гама",
"image_prefer_wide_gamut_setting_description": "Използване на Display P3 за миниатюри. Това запазва по-добре жизнеността на изображенията с широки цветови пространства, но изображенията може да изглеждат по различен начин на стари устройства със стара версия на браузъра. sRGB изображенията се запазват като sRGB, за да се избегнат цветови промени.",
"image_preview_description": "Среден размер на изображението с премахнати метаданни, използвано при преглед на един актив и за машинно обучение",
"image_preview_description": "Среден размер на изображението с премахнати метаданни, използвано при преглед на един елемент и за машинно обучение",
"image_preview_quality_description": "Качество на предварителния преглед от 1 до 100. По-високата стойност е по-добра, но води до по-големи файлове и може да намали бързодействието на приложението. Задаването на ниска стойност може да повлияе на качеството на машинното обучение.",
"image_preview_title": "Настройки на прегледа",
"image_quality": "Качество",
@@ -117,9 +118,9 @@
"library_scanning_enable_description": "Включване на периодичното сканиране на библиотеката",
"library_settings": "Външна библиотека",
"library_settings_description": "Управление на настройките за външна библиотека",
"library_tasks_description": "Сканирайте външни библиотеки за нови и/или променени активи",
"library_tasks_description": "Сканирайте външни библиотеки за нови и/или променени елементи",
"library_watching_enable_description": "Наблюдаване за промяна на файловете във външната библиотека",
"library_watching_settings": "Наблюдаване на библиотеката (ЕКСПЕРИМЕНТАЛНО)",
"library_watching_settings": "Наблюдаване на библиотеката [ЕКСПЕРИМЕНТАЛНО]",
"library_watching_settings_description": "Автоматично наблюдавай за променени файлове",
"logging_enable_description": "Включване на запис (логове)",
"logging_level_description": "Когато е включено, какво ниво на записване да се използва.",
@@ -178,7 +179,7 @@
"memory_cleanup_job": "Почистване на паметта",
"memory_generate_job": "Генериране на паметта",
"metadata_extraction_job": "Извличане на метаданни",
"metadata_extraction_job_description": "Извличане на метаданни от всеки от елемент, като GPS локация, лица и резолюция на файловете",
"metadata_extraction_job_description": "Извличане на метаданни от всеки елемент, като GPS локация, лица и резолюция на файловете",
"metadata_faces_import_setting": "Включи импорт на лице",
"metadata_faces_import_setting_description": "Импортирай лица от EXIF данни и помощни файлове",
"metadata_settings": "Опции за метаданни",
@@ -210,6 +211,8 @@
"notification_email_ignore_certificate_errors_description": "Игнорирай грешки свързани с валидация на TLS сертификат (не се препоръчва)",
"notification_email_password_description": "Парола използвана за удостоверяване пред сървъра за електронна поща",
"notification_email_port_description": "Порт на сървъра за електронна поща (например 25, 465 или 587)",
"notification_email_secure": "SMTPS",
"notification_email_secure_description": "Използвай SMTPS (SMTP по TLS)",
"notification_email_sent_test_email_button": "Изпрати тестов имейл и запази",
"notification_email_setting_description": "Настройки за изпращане на имейл известия",
"notification_email_test_email": "Изпрати тестов имейл",
@@ -332,7 +335,7 @@
"transcoding_max_b_frames": "Максимални B-фрейма",
"transcoding_max_b_frames_description": "По-високите стойности подобряват ефективността на компресията, но забавят разкодирането. Може да не е съвместим с хардуерното ускорение на по-стари устройства. 0 деактивира B-фрейма, докато -1 задава тази стойност автоматично.",
"transcoding_max_bitrate": "Максимален битрейт",
"transcoding_max_bitrate_description": "Задаването на максимален битрейт може да направи размерите на файловете по-предвидими при незначителни разлики за качеството. При 720p типичните стойности са 2600 kbit/s за VP9 или HEVC или 4500 kbit/s за H.264. Деактивирано, ако е зададено на 0.",
"transcoding_max_bitrate_description": "Задаването на максимален битрейт може да направи размерите на файловете по-предвидими при незначителни разлики за качеството. При 720p типичните стойности са 2600 kbit/s за VP9 или HEVC или 4500 kbit/s за H.264. Деактивирано, ако е зададено на 0. Когато не е зададена мерна единица, подразбира се k (kbit/s); така 5000, 5000k и 5M (Mbit/s) са еквивалентни.",
"transcoding_max_keyframe_interval": "Максимален интервал между ключовите кадри",
"transcoding_max_keyframe_interval_description": "Задава максималното разстояние между ключовите кадри. По-ниските стойности влошават ефективността на компресията, но подобряват времето за търсене и могат да подобрят качеството в сцени с бързо движение. 0 задава тази стойност автоматично.",
"transcoding_optimal_description": "Видеоклипове с по-висока от целевата разделителна способност или не в приетия формат",
@@ -350,7 +353,7 @@
"transcoding_target_resolution": "Целева резолюция",
"transcoding_target_resolution_description": "По-високите разделителни способности могат да представят повече детайли, но отнемат повече време за разкодиране, имат по-големи размери на файловете и могат да намалят отзивчивостта на приложението.",
"transcoding_temporal_aq": "Темпорален AQ",
"transcoding_temporal_aq_description": "Само за NVENC. Повишава качеството на сцени с висока детайлност и ниско ниво на движение. Може да не е съвместимо с по-стари устройства.",
"transcoding_temporal_aq_description": "Само за NVENC. Повишава качеството на сцени с висока детайлност и малко движение. Може да не е съвместимо с по-стари устройства.",
"transcoding_threads": "Нишки",
"transcoding_threads_description": "По-високите стойности водят до по-бързо разкодиране, но оставят по-малко място за сървъра да обработва други задачи, докато е активен. Тази стойност не трябва да надвишава броя на процесорните ядра. Увеличава максимално използването, ако е зададено на 0.",
"transcoding_tone_mapping": "Тонално картографиране",
@@ -401,11 +404,11 @@
"advanced_settings_prefer_remote_subtitle": "Някои устройства са твърде бавни за да генерират миниатюри. Активирай тази опция за да се зареждат винаги от сървъра.",
"advanced_settings_prefer_remote_title": "Предпочитай изображенията на сървъра",
"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_title": "Разреши самоподписани SSL сертификати",
"advanced_settings_self_signed_ssl_title": "Разреши самоподписани SSL сертификати [ЕКСПЕРИМЕНТАЛНО]",
"advanced_settings_sync_remote_deletions_subtitle": "Автоматично изтрии или възстанови обект на това устройство, когато действието е извършено през уеб-интерфейса",
"advanced_settings_sync_remote_deletions_title": "Синхронизация на дистанционни изтривания [ЕКСПЕРИМЕНТАЛНО]",
"advanced_settings_tile_subtitle": "Разширени потребителски настройки",
@@ -465,10 +468,14 @@
"api_key_description": "Тази стойност ще бъде показана само веднъж. Моля, не забравяйте да го копирате, преди да затворите прозореца.",
"api_key_empty": "Името на вашия API ключ не трябва да е празно",
"api_keys": "API ключове",
"app_architecture_variant": "Вариант (Ахитектура)",
"app_bar_signout_dialog_content": "Наистина ли искате да излезете?",
"app_bar_signout_dialog_ok": "Да",
"app_bar_signout_dialog_title": "Излез от профила",
"app_download_links": "Линкове за сваляне на приложението",
"app_settings": "Настройки ма приложението",
"app_stores": "Магазини за приложения",
"app_update_available": "Налична е нова версия",
"appears_in": "Излиза в",
"apply_count": "Приложи ({count, number})",
"archive": "Архив",
@@ -552,6 +559,7 @@
"backup_albums_sync": "Синхронизиране на архивите",
"backup_all": "Всичко",
"backup_background_service_backup_failed_message": "Неуспешно архивиране. Нов опит…",
"backup_background_service_complete_notification": "Завърши архивирането на обектите",
"backup_background_service_connection_failed_message": "Неуспешно свързване към сървъра. Нов опит…",
"backup_background_service_current_upload_notification": "Зареждам {filename}",
"backup_background_service_default_notification": "Търсене на нови обекти…",
@@ -687,8 +695,8 @@
"client_cert_import_success_msg": "Клиентския сертификат е импортиран",
"client_cert_invalid_msg": "Невалиден сертификат или грешна парола",
"client_cert_remove_msg": "Клиентския сертификат е премахнат",
"client_cert_subtitle": "Поддържа се само формат PKCS12 (.p12, .pfx). Импорт и премахване на сертификат може само преди вписване в системата",
"client_cert_title": "Клиентски SSL сертификат",
"client_cert_subtitle": "Поддържа се само формат PKCS12 (.p12, .pfx). Импорт/премахване на сертификат може само преди вписване в системата",
"client_cert_title": "Клиентски SSL сертификат [ЕКСПЕРИМЕНТАЛНО]",
"clockwise": "По часовниковата стрелка",
"close": "Затвори",
"collapse": "Свиване",
@@ -700,7 +708,6 @@
"comments_and_likes": "Коментари и харесвания",
"comments_are_disabled": "Коментарите са деактивирани",
"common_create_new_album": "Създай нов албум",
"common_server_error": "Моля, проверете мрежовата връзка, убедете се, че сървъра е достъпен и версиите на сървъра и приложението са съвместими.",
"completed": "Завършено",
"confirm": "Потвърди",
"confirm_admin_password": "Потвърждаване на паролата на администратора",
@@ -739,6 +746,7 @@
"create": "Създай",
"create_album": "Създай албум",
"create_album_page_untitled": "Без заглавие",
"create_api_key": "Създайте API ключ",
"create_library": "Създай библиотека",
"create_link": "Създай линк",
"create_link_to_share": "Създаване на линк за споделяне",
@@ -882,7 +890,6 @@
"edit_tag": "Редактирай таг",
"edit_title": "Редактиране на заглавието",
"edit_user": "Редактиране на потребител",
"edited": "Редактирано",
"editor": "Редактор",
"editor_close_without_save_prompt": "Промените няма да бъдат запазени",
"editor_close_without_save_title": "Затваряне на редактора?",
@@ -1038,6 +1045,7 @@
"exif_bottom_sheet_description_error": "Неуспешно обновяване на описание",
"exif_bottom_sheet_details": "ПОДРОБНОСТИ",
"exif_bottom_sheet_location": "МЯСТО",
"exif_bottom_sheet_no_description": "Няма описание",
"exif_bottom_sheet_people": "ХОРА",
"exif_bottom_sheet_person_add_person": "Добави име",
"exit_slideshow": "Изход от слайдшоуто",
@@ -1119,7 +1127,6 @@
"header_settings_field_validator_msg": "Недопустимо е да няма стойност",
"header_settings_header_name_input": "Име на заглавието",
"header_settings_header_value_input": "Стойност на заглавието",
"headers_settings_tile_subtitle": "Дефиниране на прокси заглавия, които приложението трябва да изпраща с всяка мрежова заявка",
"headers_settings_tile_title": "Потребителски прокси заглавия",
"hi_user": "Здравей, {name} {email}",
"hide_all_people": "Скрий всички хора",
@@ -1344,6 +1351,8 @@
"minute": "Минута",
"minutes": "Минути",
"missing": "Липсващи",
"mobile_app": "Мобилно приложение",
"mobile_app_download_onboarding_note": "Свалете мобилното приложение Immich с някоя от следните опции",
"model": "Модел",
"month": "Месец",
"monthly_title_text_date_format": "MMMM г",
@@ -1362,6 +1371,8 @@
"my_albums": "Мои албуми",
"name": "Име",
"name_or_nickname": "Име или прякор",
"navigate": "Придвижване",
"navigate_to_time": "Придвижване до момент във времето",
"network_requirement_photos_upload": "Използвай мобилни данни за архивиране на снимки",
"network_requirement_videos_upload": "Използвай мобилни данни за архивиране на видео",
"network_requirements": "Изисквания към мрежата",
@@ -1371,6 +1382,7 @@
"never": "Никога",
"new_album": "Нов Албум",
"new_api_key": "Нов API ключ",
"new_date_range": "Нов период от време",
"new_password": "Нова парола",
"new_person": "Нов човек",
"new_pin_code": "Нов PIN код",
@@ -1421,6 +1433,8 @@
"notifications": "Известия",
"notifications_setting_description": "Управление на известията",
"oauth": "OAuth",
"obtainium_configurator": "Конфигуратор за получаване",
"obtainium_configurator_instructions": "Използвайте Obtainium за инсталация и обновяване на приложението за Android директно от GitHub на Immich. Създайте API ключ и изберете вариант за да създадете Obtainium конфигурационен линк",
"official_immich_resources": "Официална информация за Immich",
"offline": "Офлайн",
"offset": "Отместване",
@@ -1542,13 +1556,9 @@
"privacy": "Поверителност",
"profile": "Профил",
"profile_drawer_app_logs": "Дневник",
"profile_drawer_client_out_of_date_major": "Мобилното приложение е остаряло. Моля, актуализирайте до най-новата основна версия.",
"profile_drawer_client_out_of_date_minor": "Мобилното приложение е остаряло. Моля, актуализирайте до най-новата версия.",
"profile_drawer_client_server_up_to_date": "Клиента и сървъра са обновени",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Режима само за четене е активиран. С дълго натискане върху картиката-аватар на потребителя ще деактивирате само за четене.",
"profile_drawer_server_out_of_date_major": "Версията на сървъра е остаряла. Моля, актуализирайте поне до последната главна версия.",
"profile_drawer_server_out_of_date_minor": "Версията на сървъра е остаряла. Моля, актуализирайте до последната версия.",
"profile_image_of_user": "Профилна снимка на {user}",
"profile_picture_set": "Профилната снимка е сложена.",
"public_album": "Публичен албум",
@@ -1777,6 +1787,7 @@
"server_online": "Сървър онлайн",
"server_privacy": "Поверителност на сървъра",
"server_stats": "Статус на сървъра",
"server_update_available": "Налична е нова версия за сървъра",
"server_version": "Версия на сървъра",
"set": "Задай",
"set_as_album_cover": "Задаване като обложка на албум",
@@ -1805,6 +1816,8 @@
"setting_notifications_subtitle": "Настройка на известията",
"setting_notifications_total_progress_subtitle": "Общ напредък на зареждане (готово/всички обекти)",
"setting_notifications_total_progress_title": "Показване на общия напредък на архивиране във фонов режим",
"setting_video_viewer_auto_play_subtitle": "Автоматично започни възпроизвеждане на видео при отваряне",
"setting_video_viewer_auto_play_title": "Автоматично възпроизвеждане на видео",
"setting_video_viewer_looping_title": "Циклично",
"setting_video_viewer_original_video_subtitle": "При показване на видео от сървъра показвай оригиналния файл, дори и да има транскодирана версия. Може да използва буфериране. Локално наличните видеа се показват винаги в оригинал, независимо от тази настройка.",
"setting_video_viewer_original_video_title": "Само оригинално видео",
@@ -2016,6 +2029,7 @@
"troubleshoot": "Отстраняване на проблеми",
"type": "Тип",
"unable_to_change_pin_code": "Невъзможна промяна на PIN кода",
"unable_to_check_version": "Невъзможна проверка на версията на приложението или сървъра",
"unable_to_setup_pin_code": "Неуспешно задаване на PIN кода",
"unarchive": "Разархивирай",
"unarchive_action_prompt": "{count} са премахнати от Архива",

View File

@@ -64,7 +64,7 @@
"confirm_delete_library": "Esteu segurs que voleu eliminar la llibreria {library}?",
"confirm_delete_library_assets": "Esteu segurs que voleu esborrar aquesta llibreria? Això esborrarà {count, plural, one {# contained asset} other {all # contained assets}} d'Immich i no es podrà desfer. Els fitxers romandran al disc.",
"confirm_email_below": "Per a confirmar, escriviu \"{email}\" a sota",
"confirm_reprocess_all_faces": "Esteu segur que voleu reprocessar totes les cares? Això també esborrarà la gent que heu anomenat.",
"confirm_reprocess_all_faces": "Esteu segurs que voleu reprocessar totes les cares? Això també esborrarà la gent que heu anomenat.",
"confirm_user_password_reset": "Esteu segur que voleu reinicialitzar la contrasenya de l'usuari {user}?",
"confirm_user_pin_code_reset": "Esteu segur que voleu restablir el codi PIN de {user}?",
"create_job": "Crear tasca",
@@ -333,7 +333,7 @@
"transcoding_max_b_frames": "Nombre màxim de B-frames",
"transcoding_max_b_frames_description": "Els valors més alts milloren l'eficiència de la compressió, però alenteixen la codificació. És possible que no sigui compatible amb l'acceleració de maquinari en dispositius antics. 0 desactiva els B-frames, mentre que -1 estableix aquest valor automàticament.",
"transcoding_max_bitrate": "Taxa de bits màxima",
"transcoding_max_bitrate_description": "Establir una taxa de bits màxima pot fer que les mides dels fitxers siguin més previsibles amb un cost menor per a la qualitat. A 720p, els valors típics són 2600 kbit/s per a VP9 o HEVC, o 4500 kbit/s per a H.264. Desactivat si s'estableix a 0.",
"transcoding_max_bitrate_description": "Establir una taxa de bits màxima pot fer que les mides dels fitxers siguin més previsibles amb un cost menor per a la qualitat. A 720p, els valors típics són 2600 kbit/s per a VP9 o HEVC, o 4500 kbit/s per a H.264. Desactivat si s'estableix a 0. Quan no s'especifica, s'assumeix kbit/s; per tant 5000 i 5000k i 5M son equivalents.",
"transcoding_max_keyframe_interval": "Interval màxim de fotogrames clau",
"transcoding_max_keyframe_interval_description": "Estableix la distància màxima entre fotogrames clau. Els valors més baixos empitjoren l'eficiència de la compressió, però milloren els temps de cerca i poden millorar la qualitat en escenes amb moviment ràpid. 0 estableix aquest valor automàticament.",
"transcoding_optimal_description": "Vídeos superiors a la resolució objectiu o que no tenen un format acceptat",
@@ -351,7 +351,7 @@
"transcoding_target_resolution": "Resolució objectiu",
"transcoding_target_resolution_description": "Les resolucions més altes poden conservar més detalls, però triguen més temps a codificar-se, tenen mides de fitxer més grans i poden reduir la capacitat de resposta de l'aplicació.",
"transcoding_temporal_aq": "AQ temporal",
"transcoding_temporal_aq_description": "S'aplica només a NVENC. Augmenta la qualitat de les escenes de baix moviment i alt detall. És possible que no sigui compatible amb dispositius antics.",
"transcoding_temporal_aq_description": "S'aplica només a NVENC. Quantització adaptativa temporal augmenta la qualitat de les escenes de baix moviment i alt detall. És possible que no sigui compatible amb dispositius antics.",
"transcoding_threads": "Fils",
"transcoding_threads_description": "Els valors més alts condueixen a una codificació més ràpida, però deixen menys espai perquè el servidor processi altres tasques mentre està actiu. Aquest valor no hauria de ser superior al nombre de nuclis de CPU. Maximitza la utilització si s'estableix a 0.",
"transcoding_tone_mapping": "Mapeig de to",
@@ -621,7 +621,7 @@
"bugs_and_feature_requests": "Errors i sol·licituds de funcions",
"build": "Construeix",
"build_image": "Construeix la imatge",
"bulk_delete_duplicates_confirmation": "Esteu segur que voleu suprimir de manera massiva {count, plural, one {# recurs duplicat} other {# recursos duplicats}}? Això mantindrà el recurs més gran de cada grup i esborrarà permanentment tots els altres duplicats. No podeu desfer aquesta acció!",
"bulk_delete_duplicates_confirmation": "Esteu segurs que voleu suprimir de manera massiva {count, plural, one {# recurs duplicat} other {# recursos duplicats}}? Això mantindrà el recurs més gran de cada grup i esborrarà permanentment tots els altres duplicats. No podeu desfer aquesta acció!",
"bulk_keep_duplicates_confirmation": "Esteu segur que voleu mantenir {count, plural, one {# recurs duplicat} other {# recursos duplicats}}? Això resoldrà tots els grups duplicats sense eliminar res.",
"bulk_trash_duplicates_confirmation": "Esteu segur que voleu enviar a les escombraries {count, plural, one {# recurs duplicat} other {# recursos duplicats}}? Això mantindrà el recurs més gran de cada grup i eliminarà la resta de duplicats.",
"buy": "Comprar Immich",
@@ -701,7 +701,6 @@
"comments_and_likes": "Comentaris i agradaments",
"comments_are_disabled": "Els comentaris estan desactivats",
"common_create_new_album": "Crea un àlbum nou",
"common_server_error": "Si us plau, comproveu la vostra connexió de xarxa, assegureu-vos que el servidor és accessible i que les versions de l'aplicació i del servidor són compatibles.",
"completed": "Completat",
"confirm": "Confirmar",
"confirm_admin_password": "Confirmeu la contrasenya d'administrador",
@@ -784,7 +783,7 @@
"deduplication_info_description": "Per preseleccionar recursos automàticament i eliminar els duplicats de manera massiva, ens fixem en:",
"default_locale": "Localització predeterminada",
"default_locale_description": "Format de dates i números segons la configuració del navegador",
"delete": "Esborra",
"delete": "Esborrar",
"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",
@@ -883,7 +882,6 @@
"edit_tag": "Editar etiqueta",
"edit_title": "Edita títol",
"edit_user": "Edita l'usuari",
"edited": "Editat",
"editor": "Editor",
"editor_close_without_save_prompt": "No es desaran els canvis",
"editor_close_without_save_title": "Tancar l'editor?",
@@ -1039,6 +1037,7 @@
"exif_bottom_sheet_description_error": "No s'ha pogut actualitzar la descripció",
"exif_bottom_sheet_details": "DETALLS",
"exif_bottom_sheet_location": "UBICACIÓ",
"exif_bottom_sheet_no_description": "Sense descrioció",
"exif_bottom_sheet_people": "PERSONES",
"exif_bottom_sheet_person_add_person": "Afegir nom",
"exit_slideshow": "Surt de la presentació de diapositives",
@@ -1120,7 +1119,6 @@
"header_settings_field_validator_msg": "El valor no pot estar buit",
"header_settings_header_name_input": "Nom de la capçalera",
"header_settings_header_value_input": "Valor de la capçalera",
"headers_settings_tile_subtitle": "Definiu les capçaleres de proxy que l'aplicació hauria d'enviar amb cada sol·licitud de xarxa",
"headers_settings_tile_title": "Capçaleres proxy personalitzades",
"hi_user": "Hola {name} ({email})",
"hide_all_people": "Amaga totes les persones",
@@ -1345,6 +1343,7 @@
"minute": "Minut",
"minutes": "Minuts",
"missing": "Restants",
"mobile_app": "Aplicació mòbil",
"model": "Model",
"month": "Mes",
"monthly_title_text_date_format": "MMMM y",
@@ -1363,6 +1362,7 @@
"my_albums": "Els meus àlbums",
"name": "Nom",
"name_or_nickname": "Nom o sobrenom",
"navigate": "Navegar",
"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": "Requeriments de Xarxa",
@@ -1543,13 +1543,9 @@
"privacy": "Privacitat",
"profile": "Perfil",
"profile_drawer_app_logs": "Registres",
"profile_drawer_client_out_of_date_major": "L'aplicació mòbil està desactualitzada. Si us plau, actualitzeu a l'última versió major.",
"profile_drawer_client_out_of_date_minor": "L'aplicació mòbil està desactualitzada. Si us plau, actualitzeu a l'última versió menor.",
"profile_drawer_client_server_up_to_date": "El client i el servidor estan actualitzats",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Mode només lectura. Feu pulsació llarga a la icona de l'avatar d'usuari per sortir.",
"profile_drawer_server_out_of_date_major": "El servidor està desactualitzat. Si us plau, actualitzeu a l'última versió major.",
"profile_drawer_server_out_of_date_minor": "El servidor està desactualitzat. Si us plau, actualitzeu a l'última versió menor.",
"profile_image_of_user": "Imatge de perfil de {user}",
"profile_picture_set": "Imatge de perfil configurada.",
"public_album": "Àlbum públic",
@@ -1778,6 +1774,7 @@
"server_online": "Servidor en línia",
"server_privacy": "Privadesa del servidor",
"server_stats": "Estadístiques del servidor",
"server_update_available": "Actualització del servidor disponible",
"server_version": "Versió del servidor",
"set": "Establir",
"set_as_album_cover": "Establir com a portada de l'àlbum",
@@ -1806,6 +1803,8 @@
"setting_notifications_subtitle": "Ajusta les preferències de notificació",
"setting_notifications_total_progress_subtitle": "Progrés general de la pujada (elements completats/total)",
"setting_notifications_total_progress_title": "Mostra el progrés total de la còpia de seguretat en segon pla",
"setting_video_viewer_auto_play_subtitle": "Comença a veure videos quan s'obrin",
"setting_video_viewer_auto_play_title": "Veure videos automàticament",
"setting_video_viewer_looping_title": "Bucle",
"setting_video_viewer_original_video_subtitle": "Quan reproduïu un vídeo des del servidor, reproduïu l'original encara que hi hagi una transcodificació disponible. Pot conduir a l'amortització. Els vídeos disponibles localment es reprodueixen en qualitat original independentment d'aquesta configuració.",
"setting_video_viewer_original_video_title": "Força el vídeo original",
@@ -1813,7 +1812,7 @@
"settings_require_restart": "Si us plau, reinicieu Immich per a aplicar aquest canvi",
"settings_saved": "Configuració desada",
"setup_pin_code": "Configurar un codi PIN",
"share": "Comparteix",
"share": "Compartir",
"share_action_prompt": "Compartits {count} recursos",
"share_add_photos": "Afegeix fotografies",
"share_assets_selected": "{count} seleccionats",
@@ -2017,6 +2016,7 @@
"troubleshoot": "Solució de problemes",
"type": "Tipus",
"unable_to_change_pin_code": "No es pot canviar el codi PIN",
"unable_to_check_version": "No es pot comprovar la versió de l'aplicació ni del servidor",
"unable_to_setup_pin_code": "No s'ha pogut configurar el codi PIN",
"unarchive": "Desarxivar",
"unarchive_action_prompt": "{count} eliminades de l'arxiu",

View File

@@ -120,7 +120,7 @@
"library_settings_description": "Správa nastavení externí knihovny",
"library_tasks_description": "Vyhledávání nových nebo změněných položek v externích knihovnách",
"library_watching_enable_description": "Sledovat změny souborů v externích knihovnách",
"library_watching_settings": "Sledování knihovny (EXPERIMENTÁLNÍ)",
"library_watching_settings": "Sledování knihovny [EXPERIMENTÁLNÍ]",
"library_watching_settings_description": "Automatické sledování změněných souborů",
"logging_enable_description": "Povolit protokolování",
"logging_level_description": "Když je povoleno, jakou úroveň protokolu použít.",
@@ -154,6 +154,18 @@
"machine_learning_min_detection_score_description": "Minimální skóre důvěryhodnosti pro detekci obličeje od 0 do 1. Nižší hodnoty odhalí více tváří, ale mohou vést k falešně pozitivním výsledkům.",
"machine_learning_min_recognized_faces": "Mininum rozpoznaných obličejů",
"machine_learning_min_recognized_faces_description": "Minimální počet rozpoznaných obličejů pro vytvoření osoby. Zvýšení tohoto počtu zpřesňuje rozpoznávání obličejů za cenu zvýšení pravděpodobnosti, že obličej nebude přiřazen k osobě.",
"machine_learning_ocr": "OCR",
"machine_learning_ocr_description": "Použijte strojové učení k rozpoznávání textu v obrázcích",
"machine_learning_ocr_enabled": "Povolit OCR",
"machine_learning_ocr_enabled_description": "Pokud je tato funkce vypnuta, obrázky nebudou podrobeny rozpoznávání textu.",
"machine_learning_ocr_max_resolution": "Maximální rozlišení",
"machine_learning_ocr_max_resolution_description": "Náhledy nad tímto rozlišením budou změněny tak, aby byl zachován poměr stran. Vyšší hodnoty jsou přesnější, ale jejich zpracování trvá déle a zabírají více paměti.",
"machine_learning_ocr_min_detection_score": "Minimální detekční skóre",
"machine_learning_ocr_min_detection_score_description": "Minimální skóre spolehlivosti pro detekci textu v rozmezí 01. Nižší hodnoty detekují více textu, ale mohou vést k falešným pozitivním výsledkům.",
"machine_learning_ocr_min_recognition_score": "Minimální počet bodů pro rozpoznání",
"machine_learning_ocr_min_score_recognition_description": "Minimální skóre spolehlivosti pro rozpoznání detekovaného textu v rozmezí 01. Nižší hodnoty rozpoznají více textu, ale mohou vést k falešným pozitivům.",
"machine_learning_ocr_model": "OCR model",
"machine_learning_ocr_model_description": "Serverové modely jsou přesnější než mobilní modely, ale jejich zpracování trvá déle a zabírají více paměti.",
"machine_learning_settings": "Strojové učení",
"machine_learning_settings_description": "Správa funkcí a nastavení strojového učení",
"machine_learning_smart_search": "Chytré vyhledávání",
@@ -211,6 +223,8 @@
"notification_email_ignore_certificate_errors_description": "Ignorovat chyby ověření certifikátu TLS (nedoporučuje se)",
"notification_email_password_description": "Heslo pro ověření na e-mailovém serveru",
"notification_email_port_description": "Port e-mailového serveru (např. 25, 465 nebo 587)",
"notification_email_secure": "SMTPS",
"notification_email_secure_description": "Používat SMTPS (SMTP přes TLS)",
"notification_email_sent_test_email_button": "Odeslat testovací e-mail a uložit",
"notification_email_setting_description": "Nastavení pro zasílání e-mailových oznámení",
"notification_email_test_email": "Odeslat testovací e-mail",
@@ -243,6 +257,7 @@
"oauth_storage_quota_default_description": "Kvóta v GiB, která se použije, pokud není poskytnuta žádná deklarace.",
"oauth_timeout": "Časový limit požadavku",
"oauth_timeout_description": "Časový limit pro požadavky v milisekundách",
"ocr_job_description": "Použijte strojové učení k rozpoznávání textu v obrázcích",
"password_enable_description": "Přihlášení pomocí e-mailu a hesla",
"password_settings": "Přihlášení heslem",
"password_settings_description": "Správa nastavení přihlašování pomocí hesla",
@@ -333,7 +348,7 @@
"transcoding_max_b_frames": "Maximální počet B-snímků",
"transcoding_max_b_frames_description": "Vyšší hodnoty zvyšují účinnost komprese, ale zpomalují kódování. Nemusí být kompatibilní s hardwarovou akcelerací na starších zařízeních. Hodnota 0 zakáže B-snímky, zatímco -1 tuto hodnotu nastaví automaticky.",
"transcoding_max_bitrate": "Maximální datový tok",
"transcoding_max_bitrate_description": "Nastavení maximálního datového toku může zvýšit předvídatelnost velikosti souborů za cenu menší újmy na kvalitě. Při rozlišení 720p jsou typické hodnoty 2600 kbit/s pro VP9 nebo HEVC nebo 4500 kbit/s pro H.264. Je zakázáno, pokud je nastavena hodnota 0.",
"transcoding_max_bitrate_description": "Nastavení maximálního datového toku může zvýšit předvídatelnost velikosti souborů za cenu menší újmy na kvalitě. Při rozlišení 720p jsou typické hodnoty 2600 kbit/s pro VP9 nebo HEVC nebo 4500 kbit/s pro H.264. Pokud je nastaveno na 0, je zakázáno. Pokud není zadána žádná jednotka, předpokládá se k (pro kbit/s); proto jsou 5000, 5000k a 5M (pro Mbit/s) ekvivalentní.",
"transcoding_max_keyframe_interval": "Maximální interval klíčových snímků",
"transcoding_max_keyframe_interval_description": "Nastavuje maximální vzdálenost mezi klíčovými snímky. Nižší hodnoty zhoršují účinnost komprese, ale zlepšují rychlost při přeskakování a mohou zlepšit kvalitu ve scénách s rychlým pohybem. Hodnota 0 nastavuje tuto hodnotu automaticky.",
"transcoding_optimal_description": "Videa s vyšším než cílovým rozlišením nebo videa, která nejsou v akceptovaném formátu",
@@ -351,7 +366,7 @@
"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_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. Časová adaptivní kvantizace zvyšuje kvalitu scén s vysokým rozlišením a malým pohybem. Nemusí být kompatibilní se staršími zařízeními.",
"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_tone_mapping": "Mapování tónů",
@@ -402,11 +417,11 @@
"advanced_settings_prefer_remote_subtitle": "U některých zařízení je načítání miniatur z lokálních prostředků velmi pomalé. Aktivujte toto nastavení, aby se místo toho načítaly 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_title": "Proxy hlavičky",
"advanced_settings_proxy_headers_title": "Vlastní proxy hlavičky [EXPERIMENTÁLNÍ]",
"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_title": "Povolit self-signed SSL certifikáty",
"advanced_settings_self_signed_ssl_title": "Povolit self-signed SSL certifikáty [EXPERIMENTÁLNÍ]",
"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_title": "Synchronizace vzdáleného mazání [EXPERIMENTÁLNÍ]",
"advanced_settings_tile_subtitle": "Pokročilé uživatelské nastavení",
@@ -466,10 +481,14 @@
"api_key_description": "Tato hodnota se zobrazí pouze jednou. Před zavřením okna ji nezapomeňte zkopírovat.",
"api_key_empty": "Název klíče API by neměl být prázdný",
"api_keys": "API klíče",
"app_architecture_variant": "Varianta (architektura)",
"app_bar_signout_dialog_content": "Určitě se chcete odhlásit?",
"app_bar_signout_dialog_ok": "Ano",
"app_bar_signout_dialog_title": "Odhlásit se",
"app_download_links": "Odkazy ke stažení aplikace",
"app_settings": "Aplikace",
"app_stores": "Obchody s aplikacemi",
"app_update_available": "K dispozici je aktualizace aplikace",
"appears_in": "Vyskytuje se v",
"apply_count": "Použít ({count, number})",
"archive": "Archiv",
@@ -553,6 +572,7 @@
"backup_albums_sync": "Synchronizace zálohovaných alb",
"backup_all": "Vše",
"backup_background_service_backup_failed_message": "Zálohování médií selhalo. Zkouším to znovu…",
"backup_background_service_complete_notification": "Zálohování položek dokončeno",
"backup_background_service_connection_failed_message": "Nepodařilo se připojit k serveru. Zkouším to znovu…",
"backup_background_service_current_upload_notification": "Nahrávání {filename}",
"backup_background_service_default_notification": "Kontrola nových médií…",
@@ -662,6 +682,8 @@
"change_password_description": "Buď se do systému přihlašujete poprvé, nebo jste byli požádáni o změnu hesla. Zadejte prosím nové heslo níže.",
"change_password_form_confirm_password": "Potvrďte heslo",
"change_password_form_description": "Dobrý den, {name}\n\nje to buď poprvé, co se přihlašujete do systému, nebo byl vytvořen požadavek na změnu hesla. Níže zadejte nové heslo.",
"change_password_form_log_out": "Odhlásit všechna ostatní zařízení",
"change_password_form_log_out_description": "Doporučujeme se odhlásit ze všech ostatních zařízení",
"change_password_form_new_password": "Nové heslo",
"change_password_form_password_mismatch": "Hesla se neshodují",
"change_password_form_reenter_new_password": "Znovu zadejte nové heslo",
@@ -688,8 +710,8 @@
"client_cert_import_success_msg": "Klientský certifikát je importován",
"client_cert_invalid_msg": "Neplatný soubor certifikátu nebo špatné heslo",
"client_cert_remove_msg": "Klientský certifikát je odstraněn",
"client_cert_subtitle": "Podpora pouze formátu PKCS12 (.p12, .pfx). Import/odstranění certifikátu je možné pouze před přihlášením",
"client_cert_title": "Klientský SSL certifikát",
"client_cert_subtitle": "Podporuje pouze formát PKCS12 (.p12, .pfx). Import/odstranění certifikátu je možné pouze před přihlášením",
"client_cert_title": "Klientský SSL certifikát [EXPERIMENTÁLNÍ]",
"clockwise": "Po směru hodinových ručiček",
"close": "Zavřít",
"collapse": "Sbalit",
@@ -701,7 +723,6 @@
"comments_and_likes": "Komentáře a lajky",
"comments_are_disabled": "Komentáře jsou vypnuty",
"common_create_new_album": "Vytvořit nové album",
"common_server_error": "Zkontrolujte připojení k internetu. Ujistěte se, že server je dostupný a aplikace/server jsou v kompatibilní verzi.",
"completed": "Dokončeno",
"confirm": "Potvrdit",
"confirm_admin_password": "Potvrzení hesla správce",
@@ -740,6 +761,7 @@
"create": "Vytvořit",
"create_album": "Vytvořit album",
"create_album_page_untitled": "Bez názvu",
"create_api_key": "Vytvořit API klíč",
"create_library": "Vytvořit knihovnu",
"create_link": "Vytvořit odkaz",
"create_link_to_share": "Vytvořit odkaz pro sdílení",
@@ -769,6 +791,7 @@
"daily_title_text_date_year": "EEEE, d. MMMM y",
"dark": "Tmavý",
"dark_theme": "Přepnout tmavý motiv",
"date": "Datum",
"date_after": "Datum po",
"date_and_time": "Datum a čas",
"date_before": "Datum před",
@@ -866,7 +889,7 @@
"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_date_and_time_by_offset_interval": "Nový rozsah dat: {from} - {to}",
"edit_description": "Upravit popis",
"edit_description_prompt": "Vyberte nový popis:",
"edit_exclusion_pattern": "Upravit vzor vyloučení",
@@ -883,7 +906,6 @@
"edit_tag": "Upravit značku",
"edit_title": "Upravit název",
"edit_user": "Upravit uživatele",
"edited": "Upraveno",
"editor": "Editor",
"editor_close_without_save_prompt": "Změny nebudou uloženy",
"editor_close_without_save_title": "Zavřít editor?",
@@ -1039,6 +1061,7 @@
"exif_bottom_sheet_description_error": "Chyba při aktualizaci popisu",
"exif_bottom_sheet_details": "PODROBNOSTI",
"exif_bottom_sheet_location": "POLOHA",
"exif_bottom_sheet_no_description": "Žádný popisek",
"exif_bottom_sheet_people": "LIDÉ",
"exif_bottom_sheet_person_add_person": "Přidat jméno",
"exit_slideshow": "Ukončit prezentaci",
@@ -1077,6 +1100,7 @@
"features_setting_description": "Správa funkcí aplikace",
"file_name": "Název souboru",
"file_name_or_extension": "Název nebo přípona souboru",
"file_size": "Velikost souboru",
"filename": "Název souboru",
"filetype": "Typ souboru",
"filter": "Filtr",
@@ -1120,7 +1144,6 @@
"header_settings_field_validator_msg": "Hodnota nemůže být prázdná",
"header_settings_header_name_input": "Název hlavičky",
"header_settings_header_value_input": "Hodnota hlavičky",
"headers_settings_tile_subtitle": "Definice hlaviček proxy serveru, které má aplikace odesílat s každým síťovým požadavkem",
"headers_settings_tile_title": "Vlastní proxy hlavičky",
"hi_user": "Ahoj {name} ({email})",
"hide_all_people": "Skrýt všechny lidi",
@@ -1241,6 +1264,7 @@
"local_media_summary": "Souhrn místních médií",
"local_network": "Místní síť",
"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": "Poloha",
"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_picker_choose_on_map": "Vybrat na mapě",
@@ -1345,6 +1369,8 @@
"minute": "Minuta",
"minutes": "Minut",
"missing": "Chybějící",
"mobile_app": "Mobilní aplikace",
"mobile_app_download_onboarding_note": "Stáhněte si doprovodnou mobilní aplikaci pomocí následujících možností",
"model": "Model",
"month": "Měsíc",
"monthly_title_text_date_format": "LLLL y",
@@ -1363,6 +1389,8 @@
"my_albums": "Moje alba",
"name": "Jméno",
"name_or_nickname": "Jméno nebo přezdívka",
"navigate": "Navigovat",
"navigate_to_time": "Navigovat na čas",
"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": "Požadavky na síť",
@@ -1372,6 +1400,7 @@
"never": "Nikdy",
"new_album": "Nové album",
"new_api_key": "Nový API klíč",
"new_date_range": "Nový rozsah dat",
"new_password": "Nové heslo",
"new_person": "Nová osoba",
"new_pin_code": "Nový PIN kód",
@@ -1422,6 +1451,9 @@
"notifications": "Oznámení",
"notifications_setting_description": "Správa oznámení",
"oauth": "OAuth",
"obtainium_configurator": "Obtainium konfigurátor",
"obtainium_configurator_instructions": "Pomocí Obtainia nainstalujte a aktualizujte aplikaci pro Android přímo z vydání na Immich GitHubu. Vytvořte API klíč a vyberte variantu pro vytvoření konfiguračního odkazu Obtainia",
"ocr": "OCR",
"official_immich_resources": "Oficiální zdroje Immich",
"offline": "Offline",
"offset": "Posun",
@@ -1526,6 +1558,9 @@
"play_memories": "Přehrát vzpomníky",
"play_motion_photo": "Přehrát pohybovou fotografii",
"play_or_pause_video": "Přehrát nebo pozastavit video",
"play_original_video": "Přehrát původní video",
"play_original_video_setting_description": "Upřednostňujte přehrávání originálních videí před překódovanými videi. Pokud originální soubor není kompatibilní, nemusí se přehrávat správně.",
"play_transcoded_video": "Přehrát překódované video",
"please_auth_to_access": "Pro přístup se prosím ověřte",
"port": "Port",
"preferences_settings_subtitle": "Správa předvoleb aplikace",
@@ -1543,13 +1578,9 @@
"privacy": "Soukromí",
"profile": "Profil",
"profile_drawer_app_logs": "Logy",
"profile_drawer_client_out_of_date_major": "Mobilní aplikace je zastaralá. Aktualizujte ji na nejnovější hlavní 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_github": "GitHub",
"profile_drawer_readonly_mode": "Režim jen pro čtení. Ukončíte ho dlouhým podržením ikony avataru.",
"profile_drawer_server_out_of_date_major": "Server je zastaralý. Aktualizujte na nejnovější hlavní verzi.",
"profile_drawer_server_out_of_date_minor": "Server je zastaralý. Aktualizujte je na nejnovější verzi.",
"profile_image_of_user": "Profilový obrázek uživatele {user}",
"profile_picture_set": "Profilový obrázek nastaven.",
"public_album": "Veřejné album",
@@ -1626,7 +1657,7 @@
"remove_assets_album_confirmation": "Opravdu chcete z alba odstranit {count, plural, one {# položku} few {# položky} other {# položek}}?",
"remove_assets_shared_link_confirmation": "Opravdu chcete ze sdíleného odkazu odstranit {count, plural, one {# položku} few {# položky} other {# položek}}?",
"remove_assets_title": "Odstranit položky?",
"remove_custom_date_range": "Odstranit vlastní rozsah datumů",
"remove_custom_date_range": "Odstranit vlastní rozsah dat",
"remove_deleted_assets": "Odstranit offline soubory",
"remove_from_album": "Odstranit z alba",
"remove_from_album_action_prompt": "{count} odstraněných z alba",
@@ -1666,6 +1697,7 @@
"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_to_default": "Obnovit výchozí nastavení",
"resolution": "Rozlišení",
"resolve_duplicates": "Vyřešit duplicity",
"resolved_all_duplicates": "Vyřešeny všechny duplicity",
"restore": "Obnovit",
@@ -1684,6 +1716,7 @@
"running": "Probíhá",
"save": "Uložit",
"save_to_gallery": "Uložit do galerie",
"saved": "Uloženo",
"saved_api_key": "API klíč uložen",
"saved_profile": "Profil uložen",
"saved_settings": "Nastavení uloženo",
@@ -1700,6 +1733,9 @@
"search_by_description_example": "Pěší turistika v Sapě",
"search_by_filename": "Vyhledávání podle názvu nebo přípony souboru",
"search_by_filename_example": "např. IMG_1234.JPG nebo PNG",
"search_by_ocr": "Hledat pomocí OCR",
"search_by_ocr_example": "Latte",
"search_camera_lens_model": "Vyhledat model objektivu...",
"search_camera_make": "Vyhledat výrobce fotoaparátu...",
"search_camera_model": "Vyhledat model fotoaparátu...",
"search_city": "Vyhledat město...",
@@ -1708,7 +1744,7 @@
"search_filter_camera_title": "Výběr typu fotoaparátu",
"search_filter_date": "Datum",
"search_filter_date_interval": "{start} až {end}",
"search_filter_date_title": "Výběr rozmezí dat",
"search_filter_date_title": "Výběr rozsahu dat",
"search_filter_display_option_not_in_album": "Není v albu",
"search_filter_display_options": "Možnost zobrazení",
"search_filter_filename": "Vyhledávat podle názvu souboru",
@@ -1716,6 +1752,7 @@
"search_filter_location_title": "Výběr polohy",
"search_filter_media_type": "Typ média",
"search_filter_media_type_title": "Výběr typu média",
"search_filter_ocr": "Hledat pomocí OCR",
"search_filter_people_title": "Výběr lidí",
"search_for": "Vyhledat",
"search_for_existing_person": "Vyhledat existující osobu",
@@ -1778,6 +1815,7 @@
"server_online": "Server online",
"server_privacy": "Ochrana soukromí serveru",
"server_stats": "Statistiky serveru",
"server_update_available": "K dispozici je aktualizace serveru",
"server_version": "Verze serveru",
"set": "Nastavit",
"set_as_album_cover": "Nastavit jako obal alba",
@@ -1806,6 +1844,8 @@
"setting_notifications_subtitle": "Přizpůsobení předvoleb oznámení",
"setting_notifications_total_progress_subtitle": "Celkový průběh nahrání (hotovo/celkově)",
"setting_notifications_total_progress_title": "Zobrazit celkový průběh zálohování na pozadí",
"setting_video_viewer_auto_play_subtitle": "Automaticky spustit přehrávání videí při jejich otevření",
"setting_video_viewer_auto_play_title": "Automatické přehrávání videí",
"setting_video_viewer_looping_title": "Smyčka",
"setting_video_viewer_original_video_subtitle": "Při streamování videa ze serveru přehrávat originál, i když je k dispozici překódovaná verze. Může vést k bufferování. Videa dostupná lokálně se přehrávají v původní kvalitě bez ohledu na toto nastavení.",
"setting_video_viewer_original_video_title": "Vynutit původní video",
@@ -1965,7 +2005,7 @@
"tag_updated": "Aktualizována značka: {tag}",
"tagged_assets": "Přiřazena značka {count, plural, one {# položce} other {# položkám}}",
"tags": "Značky",
"tap_to_run_job": "Klepnutím na spustíte úlohu",
"tap_to_run_job": "Klepnutím spustíte úlohu",
"template": "Šablona",
"theme": "Motiv",
"theme_selection": "Výběr motivu",
@@ -1985,6 +2025,7 @@
"theme_setting_three_stage_loading_title": "Povolení třístupňového načítání",
"they_will_be_merged_together": "Budou sloučeny dohromady",
"third_party_resources": "Zdroje třetích stran",
"time": "Čas",
"time_based_memories": "Časové vzpomínky",
"timeline": "Časová osa",
"timezone": "Časové pásmo",
@@ -2017,6 +2058,7 @@
"troubleshoot": "Diagnostika",
"type": "Typ",
"unable_to_change_pin_code": "Nelze změnit PIN kód",
"unable_to_check_version": "Nepodařilo se zjistit verzi aplikace nebo serveru",
"unable_to_setup_pin_code": "Nelze nastavit PIN kód",
"unarchive": "Odebrat z archivu",
"unarchive_action_prompt": "{count} odstraněných z archivu",

View File

@@ -6,7 +6,7 @@
"action": "Handling",
"action_common_update": "Opdater",
"actions": "Handlinger",
"active": "Aktive",
"active": "Aktiv",
"activity": "Aktivitet",
"activity_changed": "Aktivitet er {enabled, select, true {aktiveret} other {deaktiveret}}",
"add": "Tilføj",
@@ -33,6 +33,7 @@
"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_upload_to_stack": "Tilføj upload til stack",
"add_url": "Tilføj URL",
"added_to_archive": "Tilføjet til arkiv",
"added_to_favorites": "Tilføjet til favoritter",
@@ -119,7 +120,7 @@
"library_settings_description": "Administrer eksterne biblioteksindstillinger",
"library_tasks_description": "Scan eksterne biblioteker for nye og/eller ændrede mediefiler",
"library_watching_enable_description": "Overvåg eksterne biblioteker for filændringer",
"library_watching_settings": "Biblioteks overvågning (EKSPERIMENTEL)",
"library_watching_settings": "Biblioteks overvågning [EKSPERIMENTEL]",
"library_watching_settings_description": "Tjek automatisk for ændrede filer",
"logging_enable_description": "Aktiver logning",
"logging_level_description": "Når slået til, hvilket logniveau, der skal bruges.",
@@ -153,6 +154,18 @@
"machine_learning_min_detection_score_description": "Minimum tillidsscore for et ansigt, der kan registreres fra 0-1. Lavere værdier vil registrere flere ansigter, men kan resultere i falske positiver.",
"machine_learning_min_recognized_faces": "Minimum genkendte ansigter",
"machine_learning_min_recognized_faces_description": "Minimumsantallet af genkendte ansigter for en person, før denne person bliver oprettet. At øge dette gør ansigtsgenkendelse mere præcis på bekostning af at øge chancen for, at et ansigt ikke er tildelt en person.",
"machine_learning_ocr": "OCR",
"machine_learning_ocr_description": "Brug maskinlæring til at genkende tekst i billeder",
"machine_learning_ocr_enabled": "Aktiver OCR",
"machine_learning_ocr_enabled_description": "Hvis deaktiveret, vil tekstgenkendelse ikke blive udført på billederne.",
"machine_learning_ocr_max_resolution": "Maksimum opløsning",
"machine_learning_ocr_max_resolution_description": "Forhåndsvisninger over denne opløsning ændres i størrelse, mens billedformatet bevares. Højere værdier er mere nøjagtige, men tager længere tid at behandle og bruger mere hukommelse.",
"machine_learning_ocr_min_detection_score": "Minimum detektionsscore",
"machine_learning_ocr_min_detection_score_description": "Minimums konfidensscore for tekst, der skal detekteres, fra 0-1. Lavere værdier vil detektere mere tekst, men kan resultere i falsk positiver.",
"machine_learning_ocr_min_recognition_score": "Minimum genkendelsesscore",
"machine_learning_ocr_min_score_recognition_description": "Minimum konfidensscore for genkendelse af registreret tekst er fra 0-1. Lavere værdier vil genkende mere tekst, men kan resultere i falsk positiver.",
"machine_learning_ocr_model": "OCR model",
"machine_learning_ocr_model_description": "Server modeller er mere præcise end mobil modeller, men tager længer tid at processere og bruger mere hukommelse.",
"machine_learning_settings": "Maskinlæringsindstillinger",
"machine_learning_settings_description": "Administrer maskinlæringsfunktioner og indstillinger",
"machine_learning_smart_search": "Smart søgning",
@@ -210,6 +223,8 @@
"notification_email_ignore_certificate_errors_description": "Ignorér TLS-certifikatgodkendelsesfejl (ikke anbefalet)",
"notification_email_password_description": "Adgangskode til brug ved autentificering med e-mailserveren",
"notification_email_port_description": "Emailserverens port (fx 25, 465 eller 587)",
"notification_email_secure": "SMTPS",
"notification_email_secure_description": "Brug SMTPS (SMTP over TLS)",
"notification_email_sent_test_email_button": "Send test-email og gem",
"notification_email_setting_description": "Indstillinger for sending af emailnotifikationer",
"notification_email_test_email": "Send test-email",
@@ -242,6 +257,7 @@
"oauth_storage_quota_default_description": "Kvote i GiB som bruges, når der ikke bliver oplyst en fordring.",
"oauth_timeout": "Forespørgslen udløb",
"oauth_timeout_description": "Udløbstid for forespørgsel i milisekunder",
"ocr_job_description": "Brug maskinlæring til at genkende tekst i billeder",
"password_enable_description": "Log ind med email og adgangskode",
"password_settings": "Adgangskodelogin",
"password_settings_description": "Administrer indstillinger for adgangskodelogin",
@@ -332,7 +348,7 @@
"transcoding_max_b_frames": "Maksimum B-frames",
"transcoding_max_b_frames_description": "Højere værdier forbedrer kompressionseffektivitet, men kan gøre indkodning langsommere. Er måske ikke kompatibelt med hardware-acceleration på ældre enheder. 0 slår B-frames fra, mens -1 sætter denne værdi automatisk.",
"transcoding_max_bitrate": "Maksimal bitrate",
"transcoding_max_bitrate_description": "At sætte en maksmimal bitrate kan gøre filstørrelserne mere forudsigelige med et lille tab i kvalitet. Ved 720p er almindelige værdier 2600 kbit/s for VP9 eller HEVC, eller 4500 kbit/s for H.264. Slået fra hvis sat til 0.",
"transcoding_max_bitrate_description": "Indstilling af en maksimal bitrate kan gøre filstørrelser mere forudsigelige, men med et mindre fald i kvaliteten. Ved 720p er typiske værdier 2600 kbit/s for VP9 eller HEVC eller 4500 kbit/s for H.264. Deaktiveret, hvis den er indstillet til 0. Når der ikke er angivet nogen enhed, antages k (for kbit/s); derfor er 5000, 5000k og 5M (for Mbit/s) ækvivalente.",
"transcoding_max_keyframe_interval": "Maksimal keyframe-interval",
"transcoding_max_keyframe_interval_description": "Sætter den maksimale frameafstand mellem keyframes. Lavere værdier forringer kompressionseffektiviteten, men forbedrer søgetider og kan forbedre kvaliteten i scener med hurtig bevægelse. 0 sætter denne værdi automatisk.",
"transcoding_optimal_description": "Videoer højere end målopløsningen eller ikke i et godkendt format",
@@ -395,17 +411,17 @@
"admin_password": "Administratoradgangskode",
"administration": "Administration",
"advanced": "Avanceret",
"advanced_settings_enable_alternate_media_filter_subtitle": "Brug denne valgmulighed for at filtrere media under synkronisering baseret på alternative kriterier. Prøv kun denne hvis du har problemer med at appen ikke opdager alle albums.",
"advanced_settings_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_log_level_title": "Logniveau: {level}",
"advanced_settings_prefer_remote_subtitle": "Nogle enheder er meget lang tid om at indlæse miniaturebilleder af lokale elementer. Aktiver denne indstilling for at indlæse elementer fra serveren i stedet.",
"advanced_settings_prefer_remote_title": "Foretræk elementer på serveren",
"advanced_settings_proxy_headers_subtitle": "Definer proxy headers Immich skal sende med hver netværks forespørgsel",
"advanced_settings_proxy_headers_title": "Proxy headere",
"advanced_settings_proxy_headers_title": "Tilpasset proxy headere [EKSPERIMENTALT]",
"advanced_settings_readonly_mode_subtitle": "Aktiverer skrivebeskyttet tilstand, hvor billederne alene kan vises. Ting som at vælge flere billeder, dele, caste og slette er alle deaktiveret. Aktiver skrivebeskyttet tilstand via en bruger avatar fra hovedskærmen",
"advanced_settings_readonly_mode_title": "Skrivebeskyttet tilstand",
"advanced_settings_self_signed_ssl_subtitle": "Spring verificering af SSL-certifikat over for serverens endelokation. Kræves for selvsignerede certifikater.",
"advanced_settings_self_signed_ssl_title": "Tillad selvsignerede certifikater",
"advanced_settings_self_signed_ssl_title": "Tillad selvsignerede SSL certifikater [EKSPERIMENTALT]",
"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_title": "Synkroniser fjernsletninger [EKSPERIMENTELT]",
"advanced_settings_tile_subtitle": "Avancerede brugerindstillinger",
@@ -465,10 +481,14 @@
"api_key_description": "Denne værdi vises kun én gang. Venligst kopiér den før du lukker vinduet.",
"api_key_empty": "Din API-nøgle-navn burde ikke være tom",
"api_keys": "API-nøgler",
"app_architecture_variant": "Variant (Arkitektur)",
"app_bar_signout_dialog_content": "Er du sikker på, du vil logge ud?",
"app_bar_signout_dialog_ok": "Ja",
"app_bar_signout_dialog_title": "Log ud",
"app_download_links": "App Download Links",
"app_settings": "Appindstillinger",
"app_stores": "App Butikker",
"app_update_available": "App opdatering er tilgængelig",
"appears_in": "Optræder i",
"apply_count": "Brug ({count, number})",
"archive": "Arkiv",
@@ -552,6 +572,7 @@
"backup_albums_sync": "Synkronisering af backupalbums",
"backup_all": "Alt",
"backup_background_service_backup_failed_message": "Sikkerhedskopiering af elementer fejlede. Forsøger igen…",
"backup_background_service_complete_notification": "Sikkerhedskopiering af aktiver fuldført",
"backup_background_service_connection_failed_message": "Forbindelsen til serveren blev tabt. Forsøger igen…",
"backup_background_service_current_upload_notification": "Uploader {filename}",
"backup_background_service_default_notification": "Søger efter nye elementer…",
@@ -661,6 +682,8 @@
"change_password_description": "Dette er enten første gang du tilmelder dig, eller en ændring af kodeordet blev bestilt. Indtast dit nye kodeord herunder.",
"change_password_form_confirm_password": "Bekræft kodeord",
"change_password_form_description": "Hej {name},\n\nDette er enten første gang du logger ind eller også er der lavet en anmodning om at ændre dit kodeord. Indtast venligst et nyt kodeord nedenfor.",
"change_password_form_log_out": "Log ud af alle andre enheder",
"change_password_form_log_out_description": "Det er anbefalet at logge ud af alle andre enheder",
"change_password_form_new_password": "Nyt kodeord",
"change_password_form_password_mismatch": "Kodeord er ikke ens",
"change_password_form_reenter_new_password": "Gentag nyt kodeord",
@@ -687,8 +710,8 @@
"client_cert_import_success_msg": "Klient certifikat er importeret",
"client_cert_invalid_msg": "Invalid certifikat fil eller forkert adgangskode",
"client_cert_remove_msg": "Klient certifikat er fjernet",
"client_cert_subtitle": "Supportere kin PKCS12 (.p12, .pfx) Certifikat importering/fjernelse er kun tilgængeligt før login",
"client_cert_title": "SSL Klient Certifikat",
"client_cert_subtitle": "Supportere kun PKCS12 (.p12, .pfx) format. Certifikat importering/fjernelse er kun tilgængeligt før login",
"client_cert_title": "SSL Klient Certifikat [EKSPERIMENTAL]",
"clockwise": "Med uret",
"close": "Luk",
"collapse": "Klap sammen",
@@ -700,7 +723,6 @@
"comments_and_likes": "Kommentarer og likes",
"comments_are_disabled": "Kommentarer er slået fra",
"common_create_new_album": "Opret et nyt album",
"common_server_error": "Tjek din internetforbindelse, sørg for at serveren er tilgængelig og at app- og serversioner er kompatible.",
"completed": "Fuldført",
"confirm": "Bekræft",
"confirm_admin_password": "Bekræft administratoradgangskode",
@@ -739,6 +761,7 @@
"create": "Opret",
"create_album": "Opret album",
"create_album_page_untitled": "Uden titel",
"create_api_key": "Opret API nøgle",
"create_library": "Opret bibliotek",
"create_link": "Opret link",
"create_link_to_share": "Opret link for at dele",
@@ -768,6 +791,7 @@
"daily_title_text_date_year": "E, dd MMM, yyyy",
"dark": "Mørk",
"dark_theme": "Skift til mørkt tema",
"date": "Dato",
"date_after": "Dato efter",
"date_and_time": "Dato og klokkeslæt",
"date_before": "Dato før",
@@ -882,7 +906,6 @@
"edit_tag": "Rediger tag",
"edit_title": "Redigér titel",
"edit_user": "Redigér bruger",
"edited": "Redigeret",
"editor": "Redaktør",
"editor_close_without_save_prompt": "Ændringerne vil ikke blive gemt",
"editor_close_without_save_title": "Luk editor?",
@@ -1038,6 +1061,7 @@
"exif_bottom_sheet_description_error": "Fejl ved opdatering af beskrivelsen",
"exif_bottom_sheet_details": "DETALJER",
"exif_bottom_sheet_location": "LOKATION",
"exif_bottom_sheet_no_description": "Ingen beskrivelse",
"exif_bottom_sheet_people": "PERSONER",
"exif_bottom_sheet_person_add_person": "Tilføj navn",
"exit_slideshow": "Afslut slideshow",
@@ -1076,6 +1100,7 @@
"features_setting_description": "Administrer app-funktioner",
"file_name": "Filnavn",
"file_name_or_extension": "Filnavn eller filtype",
"file_size": "Fil størrelse",
"filename": "Filnavn",
"filetype": "Filtype",
"filter": "Filter",
@@ -1115,11 +1140,10 @@
"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_header_name_input": "Header navn",
"header_settings_header_value_input": "Header værdi",
"headers_settings_tile_subtitle": "Definer proxy headers appen skal sende med hver netværks forespørgsel",
"headers_settings_tile_title": "Brugerdefineret proxy headers",
"hi_user": "Hej {name} ({email})",
"hide_all_people": "Skjul alle personer",
@@ -1240,6 +1264,7 @@
"local_media_summary": "Opsummering af lokale media",
"local_network": "Lokalt netværk",
"local_network_sheet_info": "Appen vil oprette forbindelse til serveren via denne URL, når du bruger det angivne WiFi-netværk",
"location": "Lokation",
"location_permission": "Tilladelse til placering",
"location_permission_content": "For automatisk at skifte netværk, skal Immich *altid* have præcis placeringsadgang, så appen kan læse Wi-Fi netværkets navn",
"location_picker_choose_on_map": "Vælg på kort",
@@ -1344,33 +1369,38 @@
"minute": "Minut",
"minutes": "Minutter",
"missing": "Mangler",
"mobile_app": "Mobil App",
"mobile_app_download_onboarding_note": "Hent den tilhørende mobilapp via en af følgende muligheder",
"model": "Model",
"month": "Måned",
"monthly_title_text_date_format": "MMMM y",
"monthly_title_text_date_format": "MMMM å",
"more": "Mere",
"move": "Flyt",
"move_off_locked_folder": "Flyt ud af låst mappe",
"move_to_lock_folder_action_prompt": "{count} føjet til i den låste mappe",
"move_to_lock_folder_action_prompt": "{count} føjet til den låste mappe",
"move_to_locked_folder": "Flyt til låst mappe",
"move_to_locked_folder_confirmation": "Disse billeder og videoer vil blive fjernet fra alle albums, og vil kun være synlig fra den låste mappe",
"moved_to_archive": "Flyttede {count, plural, one {# mediefil} other {# mediefiler}} til arkivet",
"moved_to_library": "Flyttede {count, plural, one {# mediefil} other {# mediefiler}} til biblioteket",
"moved_to_trash": "Flyttet til skraldespand",
"multiselect_grid_edit_date_time_err_read_only": "Kan ikke redigere datoen på kun læselige elementer. Springer over",
"multiselect_grid_edit_gps_err_read_only": "Kan ikke redigere lokation af kun læselige elementer. Springer over",
"multiselect_grid_edit_date_time_err_read_only": "Kan ikke redigere datoen på skrivebeskyttet elementer. Springer over",
"multiselect_grid_edit_gps_err_read_only": "Kan ikke redigere lokation af skrivebeskyttet elementer. Springer over",
"mute_memories": "Dæmp minder",
"my_albums": "Mine albummer",
"name": "Navn",
"name_or_nickname": "Navn eller kælenavn",
"name_or_nickname": "Navn eller kaldenavn",
"navigate": "Naviger",
"navigate_to_time": "Naviger til tid",
"network_requirement_photos_upload": "Benyt mobildatanettet for at sikkerhedskopiere dine fotos",
"network_requirement_videos_upload": "Benyt mobildatanettet for at sikkerhedskopiere dine videoer",
"network_requirements": "Netværkskrav",
"network_requirements_updated": "Netværkskravene er ændret, backup-køen nulstilles",
"networking_settings": "Netværk",
"networking_subtitle": "Administrer serverens endepunktindstillinger",
"never": "aldrig",
"never": "Aldrig",
"new_album": "Nyt album",
"new_api_key": "Ny API-nøgle",
"new_date_range": "Nyt datointerval",
"new_password": "Ny adgangskode",
"new_person": "Ny person",
"new_pin_code": "Ny PIN kode",
@@ -1421,6 +1451,9 @@
"notifications": "Notifikationer",
"notifications_setting_description": "Administrér notifikationer",
"oauth": "OAuth",
"obtainium_configurator": "Obtainium-konfigurator",
"obtainium_configurator_instructions": "Brug Obtainium til at installere og opdatere Android-appen direkte fra Immich-udgivelsen på GitHub. Opret en API-nøgle, og vælg en variant for at generere dit Obtainium-konfigurationslink",
"ocr": "OCR",
"official_immich_resources": "Officielle Immich-ressourcer",
"offline": "Offline",
"offset": "Forskydning",
@@ -1525,6 +1558,9 @@
"play_memories": "Afspil minder",
"play_motion_photo": "Afspil bevægelsesbillede",
"play_or_pause_video": "Afspil eller pause video",
"play_original_video": "Afspil original video",
"play_original_video_setting_description": "Foretrækker afspilning af originale videoer frem for transkodede videoer. Hvis det originale element ikke er kompatibelt, afspilles det muligvis ikke korrekt.",
"play_transcoded_video": "Afspil transkodet video",
"please_auth_to_access": "Log venligst ind for at tilgå",
"port": "Port",
"preferences_settings_subtitle": "Administrer app-præferencer",
@@ -1542,13 +1578,9 @@
"privacy": "Privatliv",
"profile": "Profil",
"profile_drawer_app_logs": "Log",
"profile_drawer_client_out_of_date_major": "Mobilapp er forældet. Opdater venligst til den nyeste større version.",
"profile_drawer_client_out_of_date_minor": "Mobilapp er forældet. Opdater venligst til den nyeste mindre version.",
"profile_drawer_client_server_up_to_date": "Klient og server er ajour",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Skrivebeskyttet tilstand aktiveret. Lang tryk på bruger avatar ikonet for at afslutte.",
"profile_drawer_server_out_of_date_major": "Server er forældet. Opdater venligst til den nyeste større version.",
"profile_drawer_server_out_of_date_minor": "Server er forældet. Opdater venligst til den nyeste mindre version.",
"profile_image_of_user": "Profilbillede af {user}",
"profile_picture_set": "Profilbillede indstillet.",
"public_album": "Offentligt album",
@@ -1665,6 +1697,7 @@
"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",
"resolution": "Opløsning",
"resolve_duplicates": "Løs dubletter",
"resolved_all_duplicates": "Alle dubletter løst",
"restore": "Gendan",
@@ -1683,6 +1716,7 @@
"running": "Kører",
"save": "Gem",
"save_to_gallery": "Gem til galleri",
"saved": "Gemt",
"saved_api_key": "Gemt API-nøgle",
"saved_profile": "Gemte profil",
"saved_settings": "Gemte indstillinger",
@@ -1699,6 +1733,9 @@
"search_by_description_example": "Vandredag i Paris",
"search_by_filename": "Søg efter filnavn eller filtypenavn",
"search_by_filename_example": "dvs. IMG_1234.JPG eller PNG",
"search_by_ocr": "Søg via OCR",
"search_by_ocr_example": "Latte",
"search_camera_lens_model": "Søg objektiv model...",
"search_camera_make": "Søg efter kameraproducent...",
"search_camera_model": "Søg efter kameramodel...",
"search_city": "Søg efter by...",
@@ -1715,6 +1752,7 @@
"search_filter_location_title": "Vælg lokation",
"search_filter_media_type": "Medietype",
"search_filter_media_type_title": "Vælg medietype",
"search_filter_ocr": "Søg via OCR",
"search_filter_people_title": "Vælg personer",
"search_for": "Søg efter",
"search_for_existing_person": "Søg efter eksisterende person",
@@ -1777,6 +1815,7 @@
"server_online": "Server online",
"server_privacy": "Serverens privatliv",
"server_stats": "Serverstatus",
"server_update_available": "Serveropdatering er tilgængelig",
"server_version": "Server version",
"set": "Indstil",
"set_as_album_cover": "Indstil som albumcover",
@@ -1805,6 +1844,8 @@
"setting_notifications_subtitle": "Tilpas dine notifikationspræferencer",
"setting_notifications_total_progress_subtitle": "Samlet uploadstatus (færdige/samlet antal elementer)",
"setting_notifications_total_progress_title": "Vis samlet baggrundsuploadstatus",
"setting_video_viewer_auto_play_subtitle": "Begynd automatisk at afspille videoer, når de åbnes",
"setting_video_viewer_auto_play_title": "Automatisk afspilning af videoer",
"setting_video_viewer_looping_title": "Looper",
"setting_video_viewer_original_video_subtitle": "Når der streames video fra serveren, afspil da den originale selv når en omkodet udgave er tilgængelig. Kan føre til buffering. Videoer, der er tilgængelige lokalt, afspilles i original kvalitet uanset denne indstilling.",
"setting_video_viewer_original_video_title": "Tving original video",
@@ -1984,6 +2025,7 @@
"theme_setting_three_stage_loading_title": "Slå tre-trins indlæsning til",
"they_will_be_merged_together": "De vil blive slået sammen",
"third_party_resources": "Tredjepartsressourcer",
"time": "Tid",
"time_based_memories": "Tidsbaserede minder",
"timeline": "Tidslinje",
"timezone": "Tidszone",
@@ -2016,6 +2058,7 @@
"troubleshoot": "Fejlfinding",
"type": "Type",
"unable_to_change_pin_code": "Kunne ikke ændre PIN kode",
"unable_to_check_version": "Kan ikke tjekke app- eller serverversion",
"unable_to_setup_pin_code": "Kunne ikke sætte PIN kode",
"unarchive": "Afakivér",
"unarchive_action_prompt": "{count} slettet fra Arkiv",

View File

@@ -53,7 +53,7 @@
"backup_onboarding_1_description": "Offsite-Kopie in der Cloud oder an einem anderen physischen Ort.",
"backup_onboarding_2_description": "lokale Kopien auf verschiedenen Geräten. Dazu gehören die Hauptdateien und eine lokale Sicherung dieser Dateien.",
"backup_onboarding_3_description": "Kopien deiner Daten inklusive Originaldateien. Dies umfasst 1 Kopie an einem anderen Ort und 2 lokale Kopien.",
"backup_onboarding_description": "Eine <backblaze-link>3-2-1 Sicherungssrategie</backblaze-link> wird empfohlen, um deine Daten zu schützen. Du solltest sowohl Kopien deiner hochgeladenen Fotos/Videos als auch der Immich-Datenbank aufbewahren, um eine umfassende Sicherungslösung zu haben.",
"backup_onboarding_description": "Eine <backblaze-link>3-2-1 Sicherungsstrategie</backblaze-link> wird empfohlen, um deine Daten zu schützen. Du solltest sowohl Kopien deiner hochgeladenen Fotos/Videos als auch der Immich-Datenbank aufbewahren, um eine umfassende Sicherungslösung zu haben.",
"backup_onboarding_footer": "Weitere Informationen zum Sichern von Immich findest du in der <link>Dokumentation</link>.",
"backup_onboarding_parts_title": "Eine 3-2-1-Sicherung umfasst:",
"backup_onboarding_title": "Sicherungen",
@@ -66,7 +66,7 @@
"confirm_email_below": "Bestätige, indem du unten \"{email}\" eingibst",
"confirm_reprocess_all_faces": "Bist du sicher, dass du alle Gesichter erneut verarbeiten möchtest? Dies löscht auch alle bereits benannten Personen.",
"confirm_user_password_reset": "Bist du sicher, dass du das Passwort für {user} zurücksetzen möchtest?",
"confirm_user_pin_code_reset": "Bist du sicher, dass du den PIN Code von {user} zurücksetzen möchtest?",
"confirm_user_pin_code_reset": "Bist du sicher, dass du den PIN-Code von {user} zurücksetzen möchtest?",
"create_job": "Aufgabe erstellen",
"cron_expression": "Cron-Zeitangabe",
"cron_expression_description": "Setze das Scanintervall im Cron-Format. Hilfe mit dem Format bietet dir dabei z. B. der <link>Crontab Guru</link>",
@@ -120,7 +120,7 @@
"library_settings_description": "Einstellungen externer Bibliotheken verwalten",
"library_tasks_description": "Überprüfe externe Bibliotheken auf neue und/oder veränderte Medien",
"library_watching_enable_description": "Überwache externe Bibliotheken auf Dateiänderungen",
"library_watching_settings": "Bibliotheksüberwachung (EXPERIMENTELL)",
"library_watching_settings": "Überwache Bibliothek [EXPERIMENTELL]",
"library_watching_settings_description": "Automatisch auf geänderte Dateien prüfen",
"logging_enable_description": "Aktiviere Logging",
"logging_level_description": "Wenn aktiviert, welches Log-Level genutzt wird.",
@@ -154,6 +154,18 @@
"machine_learning_min_detection_score_description": "Minimale Konfidenzrate für die Erkennung eines Gesichts von 0-1. Bei niedrigeren Werten werden mehr Gesichter erkannt, aber es kann zu falsch-positiven Ergebnissen kommen.",
"machine_learning_min_recognized_faces": "Mindestens erkannte Gesichter",
"machine_learning_min_recognized_faces_description": "Die Mindestanzahl von erkannten Gesichtern, damit eine Person erstellt werden kann. Eine Erhöhung dieses Wertes macht die Gesichtserkennung präziser, erhöht aber die Wahrscheinlichkeit, dass ein Gesicht nicht zu einer Person zugeordnet wird.",
"machine_learning_ocr": "OCR",
"machine_learning_ocr_description": "Maschinelles Lernen nutzen um Texte in Bildern zu erkennen",
"machine_learning_ocr_enabled": "OCR aktivieren",
"machine_learning_ocr_enabled_description": "Wenn deaktiviert, werden die Bilder nicht von der Texterkennung bearbeitet.",
"machine_learning_ocr_max_resolution": "Maximale Auflösung",
"machine_learning_ocr_max_resolution_description": "Vorschauen über dieser Auflösung werden unter Beibehaltung des Seitenverhältnisses verkleinert. Höhere Werte sind genauer, benötigen jedoch mehr Zeit für die Verarbeitung und verbrauchen mehr Speicher.",
"machine_learning_ocr_min_detection_score": "Minimaler Erkennungswert",
"machine_learning_ocr_min_detection_score_description": "Minimale Konfidenzrate für die Texterkennung von 01. Niedrigere Werte führen dazu, dass mehr Text erkannt wird, können jedoch zu falsch-positiven Ergebnissen führen.",
"machine_learning_ocr_min_recognition_score": "Minimale Erkennungsrate",
"machine_learning_ocr_min_score_recognition_description": "Minimale Konfidenzrate für die Erkennung von erkanntem Text von 01. Niedrigere Werte führen dazu, dass mehr Text erkannt wird, können jedoch zu falsch-positiven Ergebnissen führen.",
"machine_learning_ocr_model": "OCR Modell",
"machine_learning_ocr_model_description": "Server Modelle sind genauer als mobile Modelle, brauchen aber länger zur Verarbeitung und brauchen mehr Speicher.",
"machine_learning_settings": "Einstellungen für maschinelles Lernen",
"machine_learning_settings_description": "Funktionen und Einstellungen des maschinellen Lernens verwalten",
"machine_learning_smart_search": "Intelligente Suche",
@@ -211,6 +223,8 @@
"notification_email_ignore_certificate_errors_description": "TLS-Zertifikatsvalidierungsfehler ignorieren (nicht empfohlen)",
"notification_email_password_description": "Passwort für die Anmeldung am E-Mail-Server",
"notification_email_port_description": "Port des E-Mail-Servers (z.B. 25, 465, oder 587)",
"notification_email_secure": "SMTPS",
"notification_email_secure_description": "Benutze SMTPS (SMTP über TLS)",
"notification_email_sent_test_email_button": "Test-E-Mail versenden und speichern",
"notification_email_setting_description": "Einstellungen für E-Mail-Benachrichtigungen",
"notification_email_test_email": "Test-E-Mail senden",
@@ -243,6 +257,7 @@
"oauth_storage_quota_default_description": "Kontingent in GiB, das verwendet werden soll, wenn keines übermittelt wird.",
"oauth_timeout": "Zeitüberschreitung bei Anfrage",
"oauth_timeout_description": "Zeitüberschreitung für Anfragen in Millisekunden",
"ocr_job_description": "Verwende Machine Learning zur Erkennung von Text in Bildern",
"password_enable_description": "Mit E-Mail und Passwort anmelden",
"password_settings": "Passwort-Anmeldung",
"password_settings_description": "Passwort-Anmeldeeinstellungen verwalten",
@@ -333,7 +348,7 @@
"transcoding_max_b_frames": "Maximale B-Frames",
"transcoding_max_b_frames_description": "Höhere Werte verbessern die Komprimierungseffizienz, verlangsamen aber die Kodierung. Ist möglicherweise nicht mit der Hardware-Beschleunigung älterer Geräte kompatibel. 0 deaktiviert die B-Frames, während -1 diesen Wert automatisch setzt.",
"transcoding_max_bitrate": "Maximale Bitrate",
"transcoding_max_bitrate_description": "Die Festlegung einer maximalen Bitrate kann die Dateigrößen vorhersagbarer machen, ohne dass die Qualität darunter leidet. Bei 720p sind typische Werte 2600 kbit/s für VP9 oder HEVC oder 4500 kbit/s für H.264. Deaktiviert, wenn der Wert auf 0 gesetzt ist.",
"transcoding_max_bitrate_description": "Das Festlegen einer maximalen Bitrate kann die Dateigrößen vorhersagbarer machen, ohne dass die Qualität darunter leidet. Bei 720p sind typische Werte 2600 kbit/s für VP9 oder HEVC oder 4500 kbit/s für H.264. Deaktiviert, wenn der Wert auf 0 gesetzt ist. Wenn keine Einheit angegeben wird, wird von k (für kbit/s) ausgegangen; also sind 5000, 5000k und 5M (für Mbit/s) identisch.",
"transcoding_max_keyframe_interval": "Maximales Keyframe-Intervall",
"transcoding_max_keyframe_interval_description": "Legt den maximalen Frame-Abstand zwischen Keyframes fest. Niedrigere Werte verschlechtern die Komprimierungseffizienz, verbessern aber die Suchzeiten und können die Qualität in Szenen mit schnellen Bewegungen verbessern. Bei 0 wird dieser Wert automatisch eingestellt.",
"transcoding_optimal_description": "Videos mit einer höheren Auflösung als der Zielauflösung oder in einem nicht akzeptierten Format",
@@ -351,7 +366,7 @@
"transcoding_target_resolution": "Ziel-Auflösung",
"transcoding_target_resolution_description": "Höhere Auflösungen können mehr Details erhalten, benötigen aber mehr Zeit für die Codierung, haben größere Dateigrößen und können die Reaktionszeit der Anwendung beeinträchtigen.",
"transcoding_temporal_aq": "Temporäre AQ",
"transcoding_temporal_aq_description": "Gilt nur für NVENC. Verbessert die Qualität von Szenen mit hohem Detailreichtum und geringen Bewegungen. Dies ist möglicherweise nicht mit älteren Geräten kompatibel.",
"transcoding_temporal_aq_description": "Gilt nur für NVENC. Zeitlich adaptive Quantisierung verbessert die Qualität von Szenen mit hohem Detailreichtum und geringen Bewegungen. Dies ist möglicherweise nicht mit älteren Geräten kompatibel.",
"transcoding_threads": "Threads",
"transcoding_threads_description": "Höhere Werte führen zu einer schnelleren Kodierung, lassen dem Server jedoch weniger Spielraum für die Verarbeitung anderer Aufgaben im aktiven Zustand. Dieser Wert sollte nicht höher sein als die Anzahl der CPU-Kerne. Maximiert die Auslastung, wenn der Wert auf 0 gesetzt wird.",
"transcoding_tone_mapping": "Farbton-Mapping",
@@ -402,11 +417,11 @@
"advanced_settings_prefer_remote_subtitle": "Einige Geräte sind sehr langsam beim Laden von lokalen Vorschaubildern. Aktivieren Sie diese Einstellung, um stattdessen die Server-Bilder zu laden.",
"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_title": "Proxy-Headers",
"advanced_settings_proxy_headers_title": "Benutzerdefinierte Proxy-Header [Experimentell]",
"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_title": "Selbstsignierte SSL-Zertifikate erlauben",
"advanced_settings_self_signed_ssl_title": "Selbstsignierte SSL-Zertifikate erlauben [Experimentell]",
"advanced_settings_sync_remote_deletions_subtitle": "Automatisches Löschen oder Wiederherstellen einer Datei auf diesem Gerät, wenn diese Aktion im Web durchgeführt wird",
"advanced_settings_sync_remote_deletions_title": "Mit Server-Löschungen synchronisieren [Experimentell]",
"advanced_settings_tile_subtitle": "Erweiterte Benutzereinstellungen",
@@ -466,10 +481,14 @@
"api_key_description": "Dieser Wert wird nur einmal angezeigt. Bitte kopiere ihn, bevor du das Fenster schließt.",
"api_key_empty": "Dein API-Schlüssel-Name darf nicht leer sein",
"api_keys": "API-Schlüssel",
"app_architecture_variant": "Variante (Architektur)",
"app_bar_signout_dialog_content": "Bist du dir sicher, dass du dich abmelden möchtest?",
"app_bar_signout_dialog_ok": "Ja",
"app_bar_signout_dialog_title": "Abmelden",
"app_download_links": "App Download Links",
"app_settings": "App-Einstellungen",
"app_stores": "App Stores",
"app_update_available": "App Update verfügbar",
"appears_in": "Erscheint in",
"apply_count": "Anwenden ({count, number})",
"archive": "Archiv",
@@ -553,6 +572,7 @@
"backup_albums_sync": "Synchronisation der Sicherungsalben",
"backup_all": "Alle",
"backup_background_service_backup_failed_message": "Es trat ein Fehler bei der Sicherung auf. Erneuter Versuch…",
"backup_background_service_complete_notification": "Datei Backup abgeschlossen",
"backup_background_service_connection_failed_message": "Es konnte keine Verbindung zum Server hergestellt werden. Erneuter Versuch…",
"backup_background_service_current_upload_notification": "Lädt {filename} hoch",
"backup_background_service_default_notification": "Suche nach neuen Elementen…",
@@ -662,10 +682,12 @@
"change_password_description": "Dies ist entweder das erste Mal, dass du dich im System anmeldest, oder es wurde eine Anfrage zur Änderung deines Passworts gestellt. Bitte gib unten dein neues Passwort ein.",
"change_password_form_confirm_password": "Passwort bestätigen",
"change_password_form_description": "Hallo {name}\n\nDas ist entweder das erste Mal dass du dich einloggst oder es wurde eine Anfrage zur Änderung deines Passwortes gestellt. Bitte gib das neue Passwort ein.",
"change_password_form_log_out": "Von allen Geräte abmelden",
"change_password_form_log_out_description": "Es wird empfohlen, alle anderen Geräte abzumelden",
"change_password_form_new_password": "Neues Passwort",
"change_password_form_password_mismatch": "Passwörter stimmen nicht überein",
"change_password_form_reenter_new_password": "Passwort erneut eingeben",
"change_pin_code": "PIN Code ändern",
"change_pin_code": "PIN-Code ändern",
"change_your_password": "Ändere dein Passwort",
"changed_visibility_successfully": "Die Sichtbarkeit wurde erfolgreich geändert",
"charging": "Aufladen",
@@ -689,7 +711,7 @@
"client_cert_invalid_msg": "Ungültige Zertifikatsdatei oder falsches Passwort",
"client_cert_remove_msg": "Client Zertifikat wurde entfernt",
"client_cert_subtitle": "Unterstützt nur das PKCS12 (.p12, .pfx) Format. Zertifikatsimporte oder -entfernungen sind nur vor dem Login möglich",
"client_cert_title": "SSL-Client-Zertifikat",
"client_cert_title": "SSL-Client-Zertifikat [Experimentell]",
"clockwise": "Im Uhrzeigersinn",
"close": "Schließen",
"collapse": "Zusammenklappen",
@@ -701,14 +723,13 @@
"comments_and_likes": "Kommentare & Likes",
"comments_are_disabled": "Kommentare sind deaktiviert",
"common_create_new_album": "Neues Album erstellen",
"common_server_error": "Bitte überprüfe deine Netzwerkverbindung und stelle sicher, dass die App und Server Versionen kompatibel sind.",
"completed": "Abgeschlossen",
"confirm": "Bestätigen",
"confirm_admin_password": "Administrator Passwort bestätigen",
"confirm_delete_face": "Bist du sicher dass du das Gesicht von {name} aus der Datei entfernen willst?",
"confirm_delete_shared_link": "Bist du sicher, dass du diesen geteilten Link löschen willst?",
"confirm_keep_this_delete_others": "Alle anderen Dateien im Stapel bis auf diese werden gelöscht. Bist du sicher, dass du fortfahren möchten?",
"confirm_new_pin_code": "Neuen PIN Code bestätigen",
"confirm_new_pin_code": "Neuen PIN-Code bestätigen",
"confirm_password": "Passwort bestätigen",
"confirm_tag_face": "Wollen Sie dieses Gesicht mit {name} markieren?",
"confirm_tag_face_unnamed": "Möchten Sie dieses Gesicht markieren?",
@@ -740,6 +761,7 @@
"create": "Erstellen",
"create_album": "Album erstellen",
"create_album_page_untitled": "Unbenannt",
"create_api_key": "API Key erstellen",
"create_library": "Bibliothek erstellen",
"create_link": "Link erstellen",
"create_link_to_share": "Link zum Teilen erstellen",
@@ -760,7 +782,7 @@
"crop": "Zuschneiden",
"curated_object_page_title": "Dinge",
"current_device": "Aktuelles Gerät",
"current_pin_code": "Aktueller PIN Code",
"current_pin_code": "Aktueller PIN-Code",
"current_server_address": "Aktuelle Serveradresse",
"custom_locale": "Benutzerdefinierte Sprache",
"custom_locale_description": "Datumsangaben und Zahlen je nach Sprache und Land formatieren",
@@ -769,6 +791,7 @@
"daily_title_text_date_year": "E, dd MMM, yyyy",
"dark": "Dunkel",
"dark_theme": "Dunkle Ansicht umschalten",
"date": "Datum",
"date_after": "Datum nach",
"date_and_time": "Datum und Zeit",
"date_before": "Datum vor",
@@ -883,7 +906,6 @@
"edit_tag": "Tag bearbeiten",
"edit_title": "Titel bearbeiten",
"edit_user": "Nutzer bearbeiten",
"edited": "Bearbeitet",
"editor": "Bearbeiter",
"editor_close_without_save_prompt": "Die Änderungen werden nicht gespeichert",
"editor_close_without_save_title": "Editor schließen?",
@@ -896,13 +918,13 @@
"empty_trash_confirmation": "Bist du sicher, dass du den Papierkorb leeren willst?\nDies entfernt alle Dateien im Papierkorb endgültig aus Immich und kann nicht rückgängig gemacht werden!",
"enable": "Aktivieren",
"enable_backup": "Sicherung aktivieren",
"enable_biometric_auth_description": "Gib deinen PIN Code ein, um die biometrische Authentifizierung zu aktivieren",
"enable_biometric_auth_description": "Gib deinen PIN-Code ein, um die biometrische Authentifizierung zu aktivieren",
"enabled": "Aktiviert",
"end_date": "Enddatum",
"enqueued": "Eingereiht",
"enter_wifi_name": "WLAN-Name eingeben",
"enter_your_pin_code": "PIN Code eingeben",
"enter_your_pin_code_subtitle": "Gib deinen PIN Code ein, um auf den gesperrten Ordner zuzugreifen",
"enter_your_pin_code": "PIN-Code eingeben",
"enter_your_pin_code_subtitle": "Gib deinen PIN-Code ein, um auf den gesperrten Ordner zuzugreifen",
"error": "Fehler",
"error_change_sort_album": "Ändern der Anzeigereihenfolge fehlgeschlagen",
"error_delete_face": "Fehler beim Löschen des Gesichts",
@@ -941,7 +963,7 @@
"failed_to_load_notifications": "Fehler beim Laden der Benachrichtigungen",
"failed_to_load_people": "Fehler beim Laden von Personen",
"failed_to_remove_product_key": "Fehler beim Entfernen des Produktschlüssels",
"failed_to_reset_pin_code": "Zurücksetzen des PIN Codes fehlgeschlagen",
"failed_to_reset_pin_code": "Zurücksetzen des PIN-Codes fehlgeschlagen",
"failed_to_stack_assets": "Dateien konnten nicht gestapelt werden",
"failed_to_unstack_assets": "Dateien konnten nicht entstapelt werden",
"failed_to_update_notification_status": "Benachrichtigungsstatus aktualisieren fehlgeschlagen",
@@ -1006,7 +1028,7 @@
"unable_to_remove_partner": "Partner kann nicht entfernt werden",
"unable_to_remove_reaction": "Reaktion kann nicht entfernt werden",
"unable_to_reset_password": "Passwort kann nicht zurückgesetzt werden",
"unable_to_reset_pin_code": "Zurücksetzen des PIN Code nicht möglich",
"unable_to_reset_pin_code": "Zurücksetzen des PIN-Code nicht möglich",
"unable_to_resolve_duplicate": "Duplikate können nicht aufgelöst werden",
"unable_to_restore_assets": "Dateien konnten nicht wiederhergestellt werden",
"unable_to_restore_trash": "Papierkorb kann nicht wiederhergestellt werden",
@@ -1078,6 +1100,7 @@
"features_setting_description": "Funktionen der App verwalten",
"file_name": "Dateiname",
"file_name_or_extension": "Dateiname oder -erweiterung",
"file_size": "Dateigröße",
"filename": "Dateiname",
"filetype": "Dateityp",
"filter": "Filter",
@@ -1090,7 +1113,7 @@
"folder_not_found": "Ordner nicht gefunden",
"folders": "Ordner",
"folders_feature_description": "Durchsuchen der Ordneransicht für Fotos und Videos im Dateisystem",
"forgot_pin_code_question": "PIN Code vergessen?",
"forgot_pin_code_question": "PIN-Code vergessen?",
"forward": "Vorwärts",
"gcast_enabled": "Google Cast",
"gcast_enabled_description": "Diese Funktion lädt externe Quellen von Google, um zu funktionieren.",
@@ -1121,7 +1144,6 @@
"header_settings_field_validator_msg": "Der Wert darf nicht leer sein",
"header_settings_header_name_input": "Header-Name",
"header_settings_header_value_input": "Header-Wert",
"headers_settings_tile_subtitle": "Definiere einen Proxy-Header, den die Anwendung bei jeder Netzwerkanfrage mitschicken soll",
"headers_settings_tile_title": "Benutzerdefinierte Proxy-Header",
"hi_user": "Hallo {name} ({email})",
"hide_all_people": "Alle Personen verbergen",
@@ -1242,6 +1264,7 @@
"local_media_summary": "Zusammenfassung der lokalen Medien",
"local_network": "Lokales Netzwerk",
"local_network_sheet_info": "Die App stellt über diese URL eine Verbindung zum Server her, wenn sie das angegebene WLAN-Netzwerk verwendet",
"location": "Standort",
"location_permission": "Standort Genehmigung",
"location_permission_content": "Um die automatische Umschaltfunktion nutzen zu können, benötigt Immich genaue Standortberechtigung, damit es den Namen des aktuellen WLAN-Netzwerks ermitteln kann",
"location_picker_choose_on_map": "Auf der Karte auswählen",
@@ -1332,7 +1355,7 @@
"memories_check_back_tomorrow": "Schau morgen wieder vorbei für weitere Erinnerungen",
"memories_setting_description": "Verwalte, was du in deinen Erinnerungen siehst",
"memories_start_over": "Erneut beginnen",
"memories_swipe_to_close": "Nach oben Wischen zum schließen",
"memories_swipe_to_close": "Nach oben Wischen zum Schließen",
"memory": "Erinnerung",
"memory_lane_title": "Foto-Erinnerungen {title}",
"menu": "Menü",
@@ -1346,6 +1369,8 @@
"minute": "Minute",
"minutes": "Minuten",
"missing": "Fehlende",
"mobile_app": "Mobile App",
"mobile_app_download_onboarding_note": "Herunterladen der mobilen Begleiter-App über einen der folgenden Möglichkeiten",
"model": "Modell",
"month": "Monat",
"monthly_title_text_date_format": "MMMM y",
@@ -1364,6 +1389,8 @@
"my_albums": "Meine Alben",
"name": "Name",
"name_or_nickname": "Name oder Nickname",
"navigate": "Navigation",
"navigate_to_time": "Navigiere zu Zeit",
"network_requirement_photos_upload": "Mobile Daten verwenden, um Fotos zu sichern",
"network_requirement_videos_upload": "Mobile Daten verwenden, um Videos zu sichern",
"network_requirements": "Anforderungen ans Netzwerk",
@@ -1373,10 +1400,11 @@
"never": "Niemals",
"new_album": "Neues Album",
"new_api_key": "Neuer API-Schlüssel",
"new_date_range": "Neuer Datumsbereich",
"new_password": "Neues Passwort",
"new_person": "Neue Person",
"new_pin_code": "Neuer PIN Code",
"new_pin_code_subtitle": "Dies ist dein erster Zugriff auf den gesperrten Ordner. Erstelle einen PIN Code für den sicheren Zugriff auf diese Seite",
"new_pin_code": "Neuer PIN-Code",
"new_pin_code_subtitle": "Dies ist dein erster Zugriff auf den gesperrten Ordner. Erstelle einen PIN-Code für den sicheren Zugriff auf diese Seite",
"new_timeline": "Neue Zeitleiste",
"new_user_created": "Neuer Benutzer wurde erstellt",
"new_version_available": "NEUE VERSION VERFÜGBAR",
@@ -1423,6 +1451,9 @@
"notifications": "Benachrichtigungen",
"notifications_setting_description": "Benachrichtigungen verwalten",
"oauth": "OAuth",
"obtainium_configurator": "Obtainium Konfiguratior",
"obtainium_configurator_instructions": "Du kannst Obtainium benutzen, um die App direkt aus den Github Releases zu installieren oder zu aktualisieren. Bitte erstelle dazu einen API-Schlüssel und wähle eine Variante aus um einen Obtainium-Konfigurationslink zu erstellen",
"ocr": "OCR",
"official_immich_resources": "Offizielle Immich Quellen",
"offline": "Offline",
"offset": "Verschiebung",
@@ -1516,10 +1547,10 @@
"photos_count": "{count, plural, one {{count, number} Foto} other {{count, number} Fotos}}",
"photos_from_previous_years": "Fotos von vorherigen Jahren",
"pick_a_location": "Wähle einen Ort",
"pin_code_changed_successfully": "PIN Code erfolgreich geändert",
"pin_code_reset_successfully": "PIN Code erfolgreich zurückgesetzt",
"pin_code_setup_successfully": "PIN Code erfolgreich festgelegt",
"pin_verification": "PIN Code Überprüfung",
"pin_code_changed_successfully": "PIN-Code erfolgreich geändert",
"pin_code_reset_successfully": "PIN-Code erfolgreich zurückgesetzt",
"pin_code_setup_successfully": "PIN-Code erfolgreich festgelegt",
"pin_verification": "PIN-Code Überprüfung",
"place": "Ort",
"places": "Orte",
"places_count": "{count, plural, one {{count, number} Ort} other {{count, number} Orte}}",
@@ -1527,6 +1558,9 @@
"play_memories": "Erinnerungen abspielen",
"play_motion_photo": "Bewegte Bilder abspielen",
"play_or_pause_video": "Video abspielen oder pausieren",
"play_original_video": "Originales Video abspielen",
"play_original_video_setting_description": "Bevorzugen die Wiedergabe von Originalvideos gegenüber transkodierten Videos. Wenn das Original nicht kompatibel ist, wird es möglicherweise nicht korrekt wiedergegeben.",
"play_transcoded_video": "Transkodiertes Video abspielen",
"please_auth_to_access": "Für den Zugriff bitte Authentifizieren",
"port": "Port",
"preferences_settings_subtitle": "App-Einstellungen verwalten",
@@ -1544,13 +1578,9 @@
"privacy": "Privatsphäre",
"profile": "Profil",
"profile_drawer_app_logs": "Logs",
"profile_drawer_client_out_of_date_major": "Mobile-App ist veraltet. Bitte aktualisiere auf die neueste Major-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_github": "GitHub",
"profile_drawer_readonly_mode": "Schreibgeschützter Modus aktiviert. Halte das Benutzer-Avatar-Symbol gedrückt, 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_minor": "Server-Version ist veraltet. Bitte aktualisiere auf die neueste Minor-Version.",
"profile_image_of_user": "Profilbild von {user}",
"profile_picture_set": "Profilbild gesetzt.",
"public_album": "Öffentliches Album",
@@ -1652,21 +1682,22 @@
"repair": "Reparatur",
"repair_no_results_message": "Nicht auffindbare und fehlende Dateien werden hier angezeigt",
"replace_with_upload": "Durch Upload ersetzen",
"repository": "Repository",
"repository": "Repositorium",
"require_password": "Passwort erforderlich",
"require_user_to_change_password_on_first_login": "Benutzer muss das Passwort beim ersten Login ändern",
"rescan": "Erneut scannen",
"reset": "Zurücksetzen",
"reset_password": "Passwort zurücksetzen",
"reset_people_visibility": "Sichtbarkeit von Personen 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_pin_code": "PIN-Code zurücksetzen",
"reset_pin_code_description": "Falls du deinen PIN-Code vergessen hast, kannst du dich an den Server-Administrator wenden, um ihn zurückzusetzen",
"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_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_to_default": "Auf Standard zurücksetzen",
"resolution": "Auflösung",
"resolve_duplicates": "Duplikate entfernen",
"resolved_all_duplicates": "Alle Duplikate aufgelöst",
"restore": "Wiederherstellen",
@@ -1685,6 +1716,7 @@
"running": "Läuft",
"save": "Speichern",
"save_to_gallery": "In Galerie speichern",
"saved": "Gespeichert",
"saved_api_key": "API-Schlüssel wurde gespeichert",
"saved_profile": "Profil gespeichert",
"saved_settings": "Einstellungen gespeichert",
@@ -1701,6 +1733,9 @@
"search_by_description_example": "Wandern in Sapa",
"search_by_filename": "Suche nach Dateiname oder -erweiterung",
"search_by_filename_example": "z.B. IMG_1234.JPG oder PNG",
"search_by_ocr": "Suche per OCR",
"search_by_ocr_example": "Latte",
"search_camera_lens_model": "Suche nach Kameralinse...",
"search_camera_make": "Suche nach Kameramarke...",
"search_camera_model": "Suche nach Kameramodell...",
"search_city": "Suche nach Stadt...",
@@ -1717,6 +1752,7 @@
"search_filter_location_title": "Ort auswählen",
"search_filter_media_type": "Medientyp",
"search_filter_media_type_title": "Medientyp auswählen",
"search_filter_ocr": "Suche per OCR",
"search_filter_people_title": "Personen auswählen",
"search_for": "Suche nach",
"search_for_existing_person": "Suche nach vorhandener Person",
@@ -1779,6 +1815,7 @@
"server_online": "Server online",
"server_privacy": "Privatsphäre auf dem Server",
"server_stats": "Server-Statistiken",
"server_update_available": "Server Update verfügbar",
"server_version": "Server-Version",
"set": "Speichern",
"set_as_album_cover": "Als Albumcover festlegen",
@@ -1807,13 +1844,15 @@
"setting_notifications_subtitle": "Benachrichtigungen anpassen",
"setting_notifications_total_progress_subtitle": "Gesamter Upload-Fortschritt (abgeschlossen/Anzahl Elemente)",
"setting_notifications_total_progress_title": "Zeige den Gesamtfortschritt der Hintergrundsicherung",
"setting_video_viewer_auto_play_subtitle": "Videos automatisch wiedergeben sobald sie geöffnet werden",
"setting_video_viewer_auto_play_title": "Videos automatisch wiedergeben",
"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_title": "Originalvideo erzwingen",
"settings": "Einstellungen",
"settings_require_restart": "Bitte starte Immich neu, um diese Einstellung anzuwenden",
"settings_saved": "Einstellungen gespeichert",
"setup_pin_code": "Einen PIN Code festlegen",
"setup_pin_code": "Einen PIN-Code festlegen",
"share": "Teilen",
"share_action_prompt": "{count} Dateien geteilt",
"share_add_photos": "Fotos hinzufügen",
@@ -1986,6 +2025,7 @@
"theme_setting_three_stage_loading_title": "Dreistufiges Laden aktivieren",
"they_will_be_merged_together": "Sie werden zusammengeführt",
"third_party_resources": "Drittanbieter-Quellen",
"time": "Zeit",
"time_based_memories": "Zeitbasierte Erinnerungen",
"timeline": "Zeitleiste",
"timezone": "Zeitzone",
@@ -2014,11 +2054,12 @@
"trash_page_restore_all": "Alle wiederherstellen",
"trash_page_select_assets_btn": "Elemente auswählen",
"trash_page_title": "Papierkorb ({count})",
"trashed_items_will_be_permanently_deleted_after": "Gelöschte Objekte werden nach {days, plural, one {# Tag} other {# Tagen}} endgültig gelöscht.",
"trashed_items_will_be_permanently_deleted_after": "Objekte im Papierkorb werden nach {days, plural, one {# Tag} other {# Tagen}} endgültig gelöscht.",
"troubleshoot": "Fehler beheben",
"type": "Typ",
"unable_to_change_pin_code": "PIN Code konnte nicht geändert werden",
"unable_to_setup_pin_code": "PIN Code konnte nicht festgelegt werden",
"unable_to_change_pin_code": "PIN-Code konnte nicht geändert werden",
"unable_to_check_version": "App oder Server Versionscheck nicht möglich",
"unable_to_setup_pin_code": "PIN-Code konnte nicht festgelegt werden",
"unarchive": "Entarchivieren",
"unarchive_action_prompt": "{count} aus dem Archiv entfernt",
"unarchived_count": "{count, plural, other {# entarchiviert}}",
@@ -2075,8 +2116,8 @@
"user_has_been_deleted": "Dieser Benutzer wurde gelöscht.",
"user_id": "Nutzer-ID",
"user_liked": "{type, select, photo {Dieses Foto} video {Dieses Video} asset {Diese Datei} other {Dies}} gefällt {user}",
"user_pin_code_settings": "PIN Code",
"user_pin_code_settings_description": "Verwalte deinen PIN Code",
"user_pin_code_settings": "PIN-Code",
"user_pin_code_settings_description": "Verwalte deinen PIN-Code",
"user_privacy": "Datenschutzeinstellungen Nutzer",
"user_purchase_settings": "Kauf",
"user_purchase_settings_description": "Kauf verwalten",
@@ -2087,7 +2128,7 @@
"username": "Nutzername",
"users": "Benutzer",
"users_added_to_album_count": "{count, plural, one {# Benutzer} other {# Benutzer}} zum Album hinzugefügt",
"utilities": "Hilfsmittel",
"utilities": "Werkzeuge",
"validate": "Validieren",
"validate_endpoint_error": "Bitte gib eine gültige URL ein",
"variables": "Variablen",
@@ -2126,7 +2167,7 @@
"welcome": "Willkommen",
"welcome_to_immich": "Willkommen bei Immich",
"wifi_name": "WLAN-Name",
"wrong_pin_code": "PIN Code falsch",
"wrong_pin_code": "PIN-Code falsch",
"year": "Jahr",
"years_ago": "Vor {years, plural, one {einem Jahr} other {# Jahren}}",
"yes": "Ja",

View File

@@ -11,10 +11,10 @@
"activity_changed": "Η δραστηριότητα είναι {enabled, select, true {ενεργοποιημένη} other {απενεργοποιημένη}}",
"add": "Προσθήκη",
"add_a_description": "Προσθήκη περιγραφής",
"add_a_location": "Προσθήκη μίας τοποθεσίας",
"add_a_name": "Προσθέστε ένα όνομα",
"add_a_location": "Προσθήκη τοποθεσίας",
"add_a_name": "Προσθήκη ονόματος",
"add_a_title": "Προσθήκη τίτλου",
"add_birthday": "Προσθέστε την ημερομηνία γενεθλίων",
"add_birthday": "Προσθήκη γενεθλίων",
"add_endpoint": "Προσθήκη τελικού σημείου",
"add_exclusion_pattern": "Προσθήκη μοτίβου αποκλεισμού",
"add_import_path": "Προσθήκη μονοπατιού εισαγωγής",
@@ -28,7 +28,7 @@
"add_to_album": "Προσθήκη σε άλμπουμ",
"add_to_album_bottom_sheet_added": "Προστέθηκε στο {album}",
"add_to_album_bottom_sheet_already_exists": "Ήδη στο {album}",
"add_to_album_bottom_sheet_some_local_assets": "Ορισμένοι τοπικά στοιχεία δεν μπόρεσαν να προστεθούν στο άλμπουμ",
"add_to_album_bottom_sheet_some_local_assets": "Ορισμένα τοπικά στοιχεία δεν μπόρεσαν να προστεθούν στο άλμπουμ",
"add_to_album_toggle": "Εναλλαγή επιλογής για το {album}",
"add_to_albums": "Προσθήκη στα άλμπουμ",
"add_to_albums_count": "Προσθήκη στα άλμπουμ ({count})",
@@ -211,6 +211,7 @@
"notification_email_ignore_certificate_errors_description": "Παράβλεψη σφαλμάτων επικύρωσης της πιστοποίησης TLS (δεν προτείνεται)",
"notification_email_password_description": "Κωδικός για την αυθεντικοποίηση με τον server του email",
"notification_email_port_description": "Θύρα του email server (πχ 25, 465, ή 587)",
"notification_email_secure_description": "Χρήση SMTPS (SMTP over TLS)",
"notification_email_sent_test_email_button": "Αποστολή test email και αποθήκευση",
"notification_email_setting_description": "Ρυθμίσεις για την αποστολή ειδοποιήσεων μέσω email",
"notification_email_test_email": "Αποστολή test email",
@@ -333,7 +334,7 @@
"transcoding_max_b_frames": "Μέγιστος αριθμός B-frames(Bidirectional Predictive Frames)",
"transcoding_max_b_frames_description": "Οι υψηλότερες τιμές βελτιώνουν την αποδοτικότητα της συμπίεσης, αλλά επιβραδύνουν την κωδικοποίηση. Ενδέχεται να μην είναι συμβατές με την επιτάχυνση υλικού σε παλαιότερες συσκευές. Η τιμή 0 απενεργοποιεί τα B-frames, ενώ η -1, τη ρυθμίζει αυτόματα.",
"transcoding_max_bitrate": "Μέγιστος ρυθμός μετάδοσης (bitrate)",
"transcoding_max_bitrate_description": "Η ρύθμιση ενός μέγιστου ρυθμού μετάδοσης(bitrate) μπορεί να κάνει το μέγεθος των αρχείων πιο προβλέψιμο, αλλά με ένα μικρό κόστος στην ποιότητα. Στην ανάλυση των 720p, οι τυπικές τιμές είναι 2600 kbit/s για VP9 ή HEVC, ή 4500 kbit/s για H.264. Απενεργοποιείται εάν οριστεί σε 0.",
"transcoding_max_bitrate_description": "Ο καθορισμός του μέγιστου bitrate μπορεί να κάνει το μέγεθος των αρχείων πιο προβλέψιμο, με ένα μικρό κόστος στην ποιότητα. Στα 720p, οι τυπικές τιμές είναι 2600 kbit/s για VP9 ή HEVC, ή 4500 kbit/s για H.264. Αν οριστεί σε 0, η ρύθμιση απενεργοποιείται. Όταν δεν καθορίζεται, θεωρείται το k (για kbit/s)· επομένως τα 5000, 5000k και 5M (για Mbit/s) είναι ισοδύναμα.",
"transcoding_max_keyframe_interval": "Μέγιστο χρονικό διάστημα μεταξύ των καρέ αναφοράς (keyframe)",
"transcoding_max_keyframe_interval_description": "Ορίζει το μέγιστο διάστημα μεταξύ των καρέ αναφοράς. Χαμηλότερες τιμές μειώνουν την αποδοτικότητα συμπίεσης, αλλά βελτιώνουν τον χρόνο αναζήτησης και μπορεί να βελτιώσουν την ποιότητα σε σκηνές με γρήγορη κίνηση. Η τιμή 0 ρυθμίζει αυτό το διάστημα αυτόματα.",
"transcoding_optimal_description": "Βίντεο με ανώτερη ανάλυση από την επιθυμητή ή σε μη αποδεκτή μορφή",
@@ -351,7 +352,7 @@
"transcoding_target_resolution": "Επιθυμητή ανάλυση",
"transcoding_target_resolution_description": "Οι υψηλότερες αναλύσεις μπορούν να διατηρήσουν περισσότερες λεπτομέρειες, αλλά απαιτούν περισσότερο χρόνο για κωδικοποίηση, παράγουν μεγαλύτερα αρχεία και μπορεί να μειώσουν την απόκριση της εφαρμογής.",
"transcoding_temporal_aq": "Χρονική Προσαρμοστική Ποιότητα AQ(Adaptive Quantization)",
"transcoding_temporal_aq_description": "Ισχύει μόνο για NVENC. Αυξάνει την ποιότητα σε σκηνές με υψηλή λεπτομέρεια και χαμηλή κίνηση. Ενδέχεται να μην είναι συμβατό με παλαιότερες συσκευές.",
"transcoding_temporal_aq_description": "Ισχύει μόνο για το NVENC. Η Χρονική προσαρμογή ποιότητας (Temporal Adaptive Quantization) βελτιώνει την ποιότητα σε σκηνές με υψηλή λεπτομέρεια και χαμηλή κίνηση. Ενδέχεται να μην είναι συμβατή με παλαιότερες συσκευές.",
"transcoding_threads": "Νήματα (παράλληλες διεργασίες)",
"transcoding_threads_description": "Οι υψηλότερες τιμές οδηγούν σε ταχύτερη κωδικοποίηση, αλλά αφήνουν λιγότερο χώρο στον διακομιστή για να επεξεργαστεί άλλες εργασίες όσο είναι ενεργή. Αυτή η τιμή δεν πρέπει να ξεπερνά τον αριθμό των πυρήνων του επεξεργαστή. Η μέγιστη αξιοποίηση επιτυγχάνεται αν οριστεί στο 0.",
"transcoding_tone_mapping": "Χαρτογράφηση χρωματικών τόνων",
@@ -466,9 +467,11 @@
"api_key_description": "Αυτή η τιμή θα εμφανιστεί μόνο μία φορά. Παρακαλώ βεβαιωθείτε ότι την έχετε αντιγράψει πριν κλείσετε το παράθυρο.",
"api_key_empty": "Το όνομα του κλειδιού API, δεν πρέπει να είναι κενό",
"api_keys": "Κλειδιά API",
"app_architecture_variant": "Παραλλαγή (Αρχιτεκτονική)",
"app_bar_signout_dialog_content": "Είστε βέβαιοι ότι θέλετε να αποσυνδεθείτε;",
"app_bar_signout_dialog_ok": "Ναι",
"app_bar_signout_dialog_title": "Αποσύνδεση",
"app_download_links": "Σύνδεσμοι Λήψης Εφαρμογής",
"app_settings": "Ρυθμίσεις εφαρμογής",
"appears_in": "Εμφανίζεται σε",
"apply_count": "Εφαρμογή ({count, number})",
@@ -701,7 +704,6 @@
"comments_and_likes": "Σχόλια & αντιδράσεις (likes)",
"comments_are_disabled": "Τα σχόλια είναι απενεργοποιημένα",
"common_create_new_album": "Δημιουργία νέου άλμπουμ",
"common_server_error": "Ελέγξτε τη σύνδεσή σας, βεβαιωθείτε ότι ο διακομιστής είναι προσβάσιμος και ότι οι εκδόσεις της εφαρμογής/διακομιστή είναι συμβατές.",
"completed": "Ολοκληρώθηκε",
"confirm": "Επιβεβαίωση",
"confirm_admin_password": "Επιβεβαίωση κωδικού Διαχειριστή",
@@ -883,7 +885,6 @@
"edit_tag": "Επεξεργασία ετικέτας",
"edit_title": "Επεξεργασία Τίτλου",
"edit_user": "Επεξεργασία χρήστη",
"edited": "Επεξεργάστηκε",
"editor": "Επεξεργαστής",
"editor_close_without_save_prompt": "Αυτές οι αλλαγές δεν θα αποθηκευτούν",
"editor_close_without_save_title": "Κλείσιμο επεξεργαστή;",
@@ -1039,6 +1040,7 @@
"exif_bottom_sheet_description_error": "Σφάλμα κατά την ενημέρωση της περιγραφής",
"exif_bottom_sheet_details": "ΛΕΠΤΟΜΕΡΕΙΕΣ",
"exif_bottom_sheet_location": "ΤΟΠΟΘΕΣΙΑ",
"exif_bottom_sheet_no_description": "Καμία περιγραφή",
"exif_bottom_sheet_people": "ΑΤΟΜΑ",
"exif_bottom_sheet_person_add_person": "Προσθήκη ονόματος",
"exit_slideshow": "Έξοδος από την παρουσίαση",
@@ -1120,7 +1122,6 @@
"header_settings_field_validator_msg": "Η τιμή δεν μπορεί να είναι κενή",
"header_settings_header_name_input": "Όνομα κεφαλίδας",
"header_settings_header_value_input": "Τιμή κεφαλίδας",
"headers_settings_tile_subtitle": "Καθορίστε τις κεφαλίδες διακομιστή μεσολάβησης που θα πρέπει να στέλνει η εφαρμογή με κάθε αίτημα δικτύου",
"headers_settings_tile_title": "Προσαρμοσμένες κεφαλίδες διακομιστή μεσολάβησης",
"hi_user": "Γειά σου {name} {email}",
"hide_all_people": "Απόκρυψη όλων των ατόμων",
@@ -1345,6 +1346,8 @@
"minute": "Λεπτό",
"minutes": "Λεπτά",
"missing": "Όσα Λείπουν",
"mobile_app": "Εφαρμογή για κινητά",
"mobile_app_download_onboarding_note": "Μπορείτε να αποκτήσετε ξανά πρόσβαση σε αυτές τις επιλογές από τη σελίδα Βοηθήματα.",
"model": "Μοντέλο",
"month": "Μήνας",
"monthly_title_text_date_format": "ΜΜΜΜ y",
@@ -1363,6 +1366,8 @@
"my_albums": "Τα άλμπουμ μου",
"name": "Όνομα",
"name_or_nickname": "Όνομα ή ψευδώνυμο",
"navigate": "Πλοηγηθείτε",
"navigate_to_time": "Πλοηγηθείτε στο Χρόνο",
"network_requirement_photos_upload": "Χρήση δεδομένων κινητής τηλεφωνίας για τη δημιουργία αντιγράφων ασφαλείας των φωτογραφιών",
"network_requirement_videos_upload": "Χρήση δεδομένων κινητής τηλεφωνίας για τη δημιουργία αντιγράφων ασφαλείας των βίντεο",
"network_requirements": "Απαιτήσεις Δυκτίου",
@@ -1372,6 +1377,7 @@
"never": "Ποτέ",
"new_album": "Νέο Άλμπουμ",
"new_api_key": "Νέο API Key",
"new_date_range": "Εύρος νέας ημερομηνίας",
"new_password": "Νέος κωδικός πρόσβασης",
"new_person": "Νέο άτομο",
"new_pin_code": "Νέος κωδικός PIN",
@@ -1422,6 +1428,8 @@
"notifications": "Ειδοποιήσεις",
"notifications_setting_description": "Διαχείριση ειδοποιήσεων",
"oauth": "OAuth",
"obtainium_configurator": "Ρυθμιστής Obtainium",
"obtainium_configurator_instructions": "Δημιουργήστε ένα κλειδί API και επιλέξτε μια παραλλαγή για να δημιουργήσετε τον σύνδεσμο σας ρύθμισης Obtainium.",
"official_immich_resources": "Επίσημοι Πόροι του Immich",
"offline": "Εκτός σύνδεσης",
"offset": "Μετατόπιση",
@@ -1543,13 +1551,9 @@
"privacy": "Ιδιωτικότητα",
"profile": "Προφίλ",
"profile_drawer_app_logs": "Καταγραφές",
"profile_drawer_client_out_of_date_major": "Παρακαλώ ενημερώστε την εφαρμογή στην πιο πρόσφατη κύρια έκδοση.",
"profile_drawer_client_out_of_date_minor": "Παρακαλώ ενημερώστε την εφαρμογή στην πιο πρόσφατη δευτερεύουσα έκδοση.",
"profile_drawer_client_server_up_to_date": "Ο πελάτης και ο διακομιστής είναι ενημερωμένοι",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Η λειτουργία μόνο-για-ανάγνωση ενεργοποιήθηκε. Κρατήστε πατημένο το εικονίδιο του χρήστη για απενεργοποίηση.",
"profile_drawer_server_out_of_date_major": "Παρακαλώ ενημερώστε τον διακομιστή στην πιο πρόσφατη κύρια έκδοση.",
"profile_drawer_server_out_of_date_minor": "Παρακαλώ ενημερώστε τον διακομιστή στην πιο πρόσφατη δευτερεύουσα έκδοση.",
"profile_image_of_user": "Εικόνα προφίλ του χρήστη {user}",
"profile_picture_set": "Ορισμός εικόνας προφίλ.",
"public_album": "Δημόσιο άλμπουμ",
@@ -1806,6 +1810,8 @@
"setting_notifications_subtitle": "Προσαρμόστε τις προτιμήσεις ειδοποίησης",
"setting_notifications_total_progress_subtitle": "Συνολική πρόοδος μεταφόρτωσης (ολοκληρώθηκε/σύνολο στοιχείων)",
"setting_notifications_total_progress_title": "Εμφάνιση συνολικής προόδου δημιουργίας αντιγράφων ασφαλείας παρασκηνίου",
"setting_video_viewer_auto_play_subtitle": "Αυτόματη αναπαραγωγή βίντεο κατά το άνοιγμά τους",
"setting_video_viewer_auto_play_title": "Αυτόματη αναπαραγωγή βίντεο",
"setting_video_viewer_looping_title": "Συνεχής Επανάληψη",
"setting_video_viewer_original_video_subtitle": "Όταν μεταδίδετε ένα βίντεο από τον διακομιστή, αναπαράγετε το αυθεντικό ακόμη και όταν υπάρχει διαθέσιμο με διαφορετική κωδικοποίηση. Μπορεί να προκαλέσει καθυστέρηση φόρτωσης. Τα βίντεο που είναι διαθέσιμα τοπικά, αναπαράγονται στην αυθεντική ποιότητα, ανεξαρτήτως αυτής της ρύθμισης.",
"setting_video_viewer_original_video_title": "Αναγκαστική αναπαραγωγή αυθεντικού βίντεο",

View File

@@ -120,7 +120,7 @@
"library_settings_description": "Manage external library settings",
"library_tasks_description": "Scan external libraries for new and/or changed assets",
"library_watching_enable_description": "Watch external libraries for file changes",
"library_watching_settings": "Library watching (EXPERIMENTAL)",
"library_watching_settings": "Library watching [EXPERIMENTAL]",
"library_watching_settings_description": "Automatically watch for changed files",
"logging_enable_description": "Enable logging",
"logging_level_description": "When enabled, what log level to use.",
@@ -154,6 +154,18 @@
"machine_learning_min_detection_score_description": "Minimum confidence score for a face to be detected from 0-1. Lower values will detect more faces but may result in false positives.",
"machine_learning_min_recognized_faces": "Minimum recognized faces",
"machine_learning_min_recognized_faces_description": "The minimum number of recognized faces for a person to be created. Increasing this makes Facial Recognition more precise at the cost of increasing the chance that a face is not assigned to a person.",
"machine_learning_ocr": "OCR",
"machine_learning_ocr_description": "Use machine learning to recognize text in images",
"machine_learning_ocr_enabled": "Enable OCR",
"machine_learning_ocr_enabled_description": "If disabled, images will not undergo text recognition.",
"machine_learning_ocr_max_resolution": "Maximum resolution",
"machine_learning_ocr_max_resolution_description": "Previews above this resolution will be resized while preserving aspect ratio. Higher values are more accurate, but take longer to process and use more memory.",
"machine_learning_ocr_min_detection_score": "Minimum detection score",
"machine_learning_ocr_min_detection_score_description": "Minimum confidence score for text to be detected from 0-1. Lower values will detect more text but may result in false positives.",
"machine_learning_ocr_min_recognition_score": "Minimum recognition score",
"machine_learning_ocr_min_score_recognition_description": "Minimum confidence score for detected text to be recognized from 0-1. Lower values will recognize more text but may result in false positives.",
"machine_learning_ocr_model": "OCR model",
"machine_learning_ocr_model_description": "Server models are more accurate than mobile models, but take longer to process and use more memory.",
"machine_learning_settings": "Machine Learning Settings",
"machine_learning_settings_description": "Manage machine learning features and settings",
"machine_learning_smart_search": "Smart Search",
@@ -211,6 +223,8 @@
"notification_email_ignore_certificate_errors_description": "Ignore TLS certificate validation errors (not recommended)",
"notification_email_password_description": "Password to use when authenticating with the email server",
"notification_email_port_description": "Port of the email server (e.g 25, 465, or 587)",
"notification_email_secure": "SMTPS",
"notification_email_secure_description": "Use SMTPS (SMTP over TLS)",
"notification_email_sent_test_email_button": "Send test email and save",
"notification_email_setting_description": "Settings for sending email notifications",
"notification_email_test_email": "Send test email",
@@ -243,6 +257,7 @@
"oauth_storage_quota_default_description": "Quota in GiB to be used when no claim is provided.",
"oauth_timeout": "Request Timeout",
"oauth_timeout_description": "Timeout for requests in milliseconds",
"ocr_job_description": "Use machine learning to recognize text in images",
"password_enable_description": "Login with email and password",
"password_settings": "Password Login",
"password_settings_description": "Manage password login settings",
@@ -333,7 +348,7 @@
"transcoding_max_b_frames": "Maximum B-frames",
"transcoding_max_b_frames_description": "Higher values improve compression efficiency, but slow down encoding. May not be compatible with hardware acceleration on older devices. 0 disables B-frames, while -1 sets this value automatically.",
"transcoding_max_bitrate": "Maximum bitrate",
"transcoding_max_bitrate_description": "Setting a max bitrate can make file sizes more predictable at a minor cost to quality. At 720p, typical values are 2600 kbit/s for VP9 or HEVC, or 4500 kbit/s for H.264. Disabled if set to 0.",
"transcoding_max_bitrate_description": "Setting a max bitrate can make file sizes more predictable at a minor cost to quality. At 720p, typical values are 2600 kbit/s for VP9 or HEVC, or 4500 kbit/s for H.264. Disabled if set to 0. When no unit is specified, k (for kbit/s) is assumed; therefore 5000, 5000k, and 5M (for Mbit/s) are equivalent.",
"transcoding_max_keyframe_interval": "Maximum keyframe interval",
"transcoding_max_keyframe_interval_description": "Sets the maximum frame distance between keyframes. Lower values worsen compression efficiency, but improve seek times and may improve quality in scenes with fast movement. 0 sets this value automatically.",
"transcoding_optimal_description": "Videos higher than target resolution or not in an accepted format",
@@ -351,7 +366,7 @@
"transcoding_target_resolution": "Target resolution",
"transcoding_target_resolution_description": "Higher resolutions can preserve more detail but take longer to encode, have larger file sizes, and can reduce app responsiveness.",
"transcoding_temporal_aq": "Temporal AQ",
"transcoding_temporal_aq_description": "Applies only to NVENC. Increases quality of high-detail, low-motion scenes. May not be compatible with older devices.",
"transcoding_temporal_aq_description": "Applies only to NVENC. Temporal Adaptive Quantization increases quality of high-detail, low-motion scenes. May not be compatible with older devices.",
"transcoding_threads": "Threads",
"transcoding_threads_description": "Higher values lead to faster encoding, but leave less room for the server to process other tasks while active. This value should not be more than the number of CPU cores. Maximizes utilization if set to 0.",
"transcoding_tone_mapping": "Tone-mapping",
@@ -402,11 +417,11 @@
"advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from local assets. Activate this setting to load remote images instead.",
"advanced_settings_prefer_remote_title": "Prefer remote images",
"advanced_settings_proxy_headers_subtitle": "Define proxy headers Immich should send with each network request",
"advanced_settings_proxy_headers_title": "Proxy Headers",
"advanced_settings_proxy_headers_title": "Custom proxy headers [EXPERIMENTAL]",
"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_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_title": "Allow self-signed SSL certificates",
"advanced_settings_self_signed_ssl_title": "Allow self-signed SSL certificates [EXPERIMENTAL]",
"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_title": "Sync remote deletions [EXPERIMENTAL]",
"advanced_settings_tile_subtitle": "Advanced user's settings",
@@ -466,10 +481,14 @@
"api_key_description": "This value will only be shown once. Please be sure to copy it before closing the window.",
"api_key_empty": "Your API Key name shouldn't be empty",
"api_keys": "API Keys",
"app_architecture_variant": "Variant (Architecture)",
"app_bar_signout_dialog_content": "Are you sure you want to sign out?",
"app_bar_signout_dialog_ok": "Yes",
"app_bar_signout_dialog_title": "Sign out",
"app_download_links": "App Download Links",
"app_settings": "App Settings",
"app_stores": "App Stores",
"app_update_available": "App update is available",
"appears_in": "Appears in",
"apply_count": "Apply ({count, number})",
"archive": "Archive",
@@ -553,6 +572,7 @@
"backup_albums_sync": "Backup albums synchronization",
"backup_all": "All",
"backup_background_service_backup_failed_message": "Failed to backup assets. Retrying…",
"backup_background_service_complete_notification": "Asset backup complete",
"backup_background_service_connection_failed_message": "Failed to connect to the server. Retrying…",
"backup_background_service_current_upload_notification": "Uploading {filename}",
"backup_background_service_default_notification": "Checking for new assets…",
@@ -662,6 +682,8 @@
"change_password_description": "This is either the first time you are signing into the system or a request has been made to change your password. Please enter the new password below.",
"change_password_form_confirm_password": "Confirm Password",
"change_password_form_description": "Hi {name},\n\nThis is either the first time you are signing into the system or a request has been made to change your password. Please enter the new password below.",
"change_password_form_log_out": "Log out all other devices",
"change_password_form_log_out_description": "It is recommended to log out of all other devices",
"change_password_form_new_password": "New Password",
"change_password_form_password_mismatch": "Passwords do not match",
"change_password_form_reenter_new_password": "Re-enter New Password",
@@ -688,8 +710,8 @@
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove_msg": "Client certificate is removed",
"client_cert_subtitle": "Supports PKCS12 (.p12, .pfx) format only. Certificate Import/Remove is available only before login",
"client_cert_title": "SSL Client Certificate",
"client_cert_subtitle": "Supports PKCS12 (.p12, .pfx) format only. Certificate import/removal is available only before login",
"client_cert_title": "SSL client certificate [EXPERIMENTAL]",
"clockwise": "Сlockwise",
"close": "Close",
"collapse": "Collapse",
@@ -701,7 +723,6 @@
"comments_and_likes": "Comments & likes",
"comments_are_disabled": "Comments are disabled",
"common_create_new_album": "Create new album",
"common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.",
"completed": "Completed",
"confirm": "Confirm",
"confirm_admin_password": "Confirm Admin Password",
@@ -740,6 +761,7 @@
"create": "Create",
"create_album": "Create album",
"create_album_page_untitled": "Untitled",
"create_api_key": "Create API key",
"create_library": "Create Library",
"create_link": "Create link",
"create_link_to_share": "Create link to share",
@@ -769,6 +791,7 @@
"daily_title_text_date_year": "E, MMM dd, yyyy",
"dark": "Dark",
"dark_theme": "Toggle dark theme",
"date": "Date",
"date_after": "Date after",
"date_and_time": "Date and Time",
"date_before": "Date before",
@@ -883,7 +906,6 @@
"edit_tag": "Edit tag",
"edit_title": "Edit Title",
"edit_user": "Edit user",
"edited": "Edited",
"editor": "Editor",
"editor_close_without_save_prompt": "The changes will not be saved",
"editor_close_without_save_title": "Close editor?",
@@ -1078,6 +1100,7 @@
"features_setting_description": "Manage the app features",
"file_name": "File name",
"file_name_or_extension": "File name or extension",
"file_size": "File size",
"filename": "Filename",
"filetype": "Filetype",
"filter": "Filter",
@@ -1117,11 +1140,10 @@
"hash_asset": "Hash asset",
"hashed_assets": "Hashed assets",
"hashing": "Hashing",
"header_settings_add_header_tip": "Add Header",
"header_settings_add_header_tip": "Add header",
"header_settings_field_validator_msg": "Value cannot be empty",
"header_settings_header_name_input": "Header name",
"header_settings_header_value_input": "Header value",
"headers_settings_tile_subtitle": "Define proxy headers the app should send with each network request",
"headers_settings_tile_title": "Custom proxy headers",
"hi_user": "Hi {name} ({email})",
"hide_all_people": "Hide all people",
@@ -1242,6 +1264,7 @@
"local_media_summary": "Local Media Summary",
"local_network": "Local network",
"local_network_sheet_info": "The app will connect to the server through this URL when using the specified Wi-Fi network",
"location": "Location",
"location_permission": "Location permission",
"location_permission_content": "In order to use the auto-switching feature, Immich needs precise location permission so it can read the current Wi-Fi network's name",
"location_picker_choose_on_map": "Choose on map",
@@ -1346,6 +1369,8 @@
"minute": "Minute",
"minutes": "Minutes",
"missing": "Missing",
"mobile_app": "Mobile App",
"mobile_app_download_onboarding_note": "Download the companion mobile app using the following options",
"model": "Model",
"month": "Month",
"monthly_title_text_date_format": "MMMM y",
@@ -1364,6 +1389,8 @@
"my_albums": "My albums",
"name": "Name",
"name_or_nickname": "Name or nickname",
"navigate": "Navigate",
"navigate_to_time": "Navigate to Time",
"network_requirement_photos_upload": "Use cellular data to backup photos",
"network_requirement_videos_upload": "Use cellular data to backup videos",
"network_requirements": "Network Requirements",
@@ -1373,6 +1400,7 @@
"never": "Never",
"new_album": "New Album",
"new_api_key": "New API Key",
"new_date_range": "New date range",
"new_password": "New password",
"new_person": "New person",
"new_pin_code": "New PIN code",
@@ -1423,6 +1451,9 @@
"notifications": "Notifications",
"notifications_setting_description": "Manage notifications",
"oauth": "OAuth",
"obtainium_configurator": "Obtainium Configurator",
"obtainium_configurator_instructions": "Use Obtainium to install and update the Android app directly from Immich GitHub's release. Create an API key and select a variant to create your Obtainium configuration link",
"ocr": "OCR",
"official_immich_resources": "Official Immich Resources",
"offline": "Offline",
"offset": "Offset",
@@ -1527,6 +1558,9 @@
"play_memories": "Play memories",
"play_motion_photo": "Play Motion Photo",
"play_or_pause_video": "Play or pause video",
"play_original_video": "Play original video",
"play_original_video_setting_description": "Prefer playback of original videos rather than transcoded videos. If original asset is not compatible it may not playback correctly.",
"play_transcoded_video": "Play transcoded video",
"please_auth_to_access": "Please authenticate to access",
"port": "Port",
"preferences_settings_subtitle": "Manage the app's preferences",
@@ -1544,13 +1578,9 @@
"privacy": "Privacy",
"profile": "Profile",
"profile_drawer_app_logs": "Logs",
"profile_drawer_client_out_of_date_major": "Mobile App is out of date. Please update to the latest major version.",
"profile_drawer_client_out_of_date_minor": "Mobile App is out of date. Please update to the latest minor version.",
"profile_drawer_client_server_up_to_date": "Client and Server are up-to-date",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Read-only mode enabled. Long-press the user avatar icon to exit.",
"profile_drawer_server_out_of_date_major": "Server is out of date. Please update to the latest major version.",
"profile_drawer_server_out_of_date_minor": "Server is out of date. Please update to the latest minor version.",
"profile_image_of_user": "Profile image of {user}",
"profile_picture_set": "Profile picture set.",
"public_album": "Public album",
@@ -1667,6 +1697,7 @@
"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_to_default": "Reset to default",
"resolution": "Resolution",
"resolve_duplicates": "Resolve duplicates",
"resolved_all_duplicates": "Resolved all duplicates",
"restore": "Restore",
@@ -1685,6 +1716,7 @@
"running": "Running",
"save": "Save",
"save_to_gallery": "Save to gallery",
"saved": "Saved",
"saved_api_key": "Saved API Key",
"saved_profile": "Saved profile",
"saved_settings": "Saved settings",
@@ -1701,6 +1733,9 @@
"search_by_description_example": "Hiking day in Sapa",
"search_by_filename": "Search by file name or extension",
"search_by_filename_example": "i.e. IMG_1234.JPG or PNG",
"search_by_ocr": "Search by OCR",
"search_by_ocr_example": "Latte",
"search_camera_lens_model": "Search lens model...",
"search_camera_make": "Search camera make...",
"search_camera_model": "Search camera model...",
"search_city": "Search city...",
@@ -1717,6 +1752,7 @@
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_title": "Select media type",
"search_filter_ocr": "Search by OCR",
"search_filter_people_title": "Select people",
"search_for": "Search for",
"search_for_existing_person": "Search for existing person",
@@ -1779,6 +1815,7 @@
"server_online": "Server Online",
"server_privacy": "Server Privacy",
"server_stats": "Server Stats",
"server_update_available": "Server update is available",
"server_version": "Server Version",
"set": "Set",
"set_as_album_cover": "Set as album cover",
@@ -1807,6 +1844,8 @@
"setting_notifications_subtitle": "Adjust your notification preferences",
"setting_notifications_total_progress_subtitle": "Overall upload progress (done/total assets)",
"setting_notifications_total_progress_title": "Show background backup total progress",
"setting_video_viewer_auto_play_subtitle": "Automatically start playing videos when they are opened",
"setting_video_viewer_auto_play_title": "Auto play videos",
"setting_video_viewer_looping_title": "Looping",
"setting_video_viewer_original_video_subtitle": "When streaming a video from the server, play the original even when a transcode is available. May lead to buffering. Videos available locally are played in original quality regardless of this setting.",
"setting_video_viewer_original_video_title": "Force original video",
@@ -1986,6 +2025,7 @@
"theme_setting_three_stage_loading_title": "Enable three-stage loading",
"they_will_be_merged_together": "They will be merged together",
"third_party_resources": "Third-Party Resources",
"time": "Time",
"time_based_memories": "Time-based memories",
"timeline": "Timeline",
"timezone": "Timezone",
@@ -2018,6 +2058,7 @@
"troubleshoot": "Troubleshoot",
"type": "Type",
"unable_to_change_pin_code": "Unable to change PIN code",
"unable_to_check_version": "Unable to check app or server version",
"unable_to_setup_pin_code": "Unable to setup PIN code",
"unarchive": "Unarchive",
"unarchive_action_prompt": "{count} removed from Archive",

View File

@@ -120,7 +120,7 @@
"library_settings_description": "Administrar configuración biblioteca externa",
"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_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",
"logging_enable_description": "Habilitar registro",
"logging_level_description": "Indica el nivel de registro a utilizar cuando está habilitado.",
@@ -154,6 +154,18 @@
"machine_learning_min_detection_score_description": "Puntuación de confianza mínima para que se detecte una cara de 0 a 1. Los valores más bajos detectarán más rostros pero pueden generar falsos positivos.",
"machine_learning_min_recognized_faces": "Rostros mínimos reconocidos",
"machine_learning_min_recognized_faces_description": "El número mínimo de rostros reconocidos para que se cree una persona. Aumentar esto permite que el reconocimiento facial sea más preciso a costa de aumentar la posibilidad de que no se asigne una cara a una persona.",
"machine_learning_ocr": "OCR",
"machine_learning_ocr_description": "Usa el aprendizaje automático para reconocer texto en imágenes",
"machine_learning_ocr_enabled": "Activar OCR",
"machine_learning_ocr_enabled_description": "Si está desactivado, las imágenes no se someterán al reconocimiento de texto.",
"machine_learning_ocr_max_resolution": "Resolución máxima",
"machine_learning_ocr_max_resolution_description": "Las vistas previas por encima de esta resolución se redimensionarán manteniendo la relación de aspecto. Los valores más altos son más precisos, pero tardan más en procesarse y consumen más memoria.",
"machine_learning_ocr_min_detection_score": "Puntuación mínima de detección",
"machine_learning_ocr_min_detection_score_description": "Puntuación mínima de confianza para que el texto sea detectado de 0 a 1. Los valores más bajos detectarán más texto, pero pueden producir falsos positivos.",
"machine_learning_ocr_min_recognition_score": "Puntuación mínima de reconocimiento",
"machine_learning_ocr_min_score_recognition_description": "Puntuación mínima de confianza para que el texto detectado sea reconocido de 0 a 1. Los valores más bajos reconocerán más texto, pero pueden producir falsos positivos.",
"machine_learning_ocr_model": "Modelo de OCR",
"machine_learning_ocr_model_description": "Los modelos del servidor son más precisos que los modelos para móviles móviles, pero tardan más en procesar y consumen más memoria.",
"machine_learning_settings": "Configuración de aprendizaje automático",
"machine_learning_settings_description": "Administrar funciones y configuraciones de aprendizaje automático",
"machine_learning_smart_search": "Busqueda inteligente",
@@ -202,7 +214,7 @@
"nightly_tasks_sync_quota_usage_setting_description": "Actualizar la cuota de almacenamiento del usuario, según el uso actual",
"no_paths_added": "No se han agregado rutas",
"no_pattern_added": "No se han agregado patrones",
"note_apply_storage_label_previous_assets": "Nota: Para aplicar la etiqueta de almacenamiento a los elementos que ya se subieron, ejecuta la",
"note_apply_storage_label_previous_assets": "Nota: Para aplicar la Etiqueta de Almacenamiento a los elementos previamente subidos, ejecuta la",
"note_cannot_be_changed_later": "NOTA: ¡No se puede cambiar posteriormente!",
"notification_email_from_address": "Desde",
"notification_email_from_address_description": "Dirección de correo electrónico del remitente, por ejemplo: \"Immich Photo Server <noreply@example.com>\". Asegúrate de utilizar una dirección desde la que puedas enviar correos electrónicos.",
@@ -211,6 +223,8 @@
"notification_email_ignore_certificate_errors_description": "Ignorar los errores de validación del certificado TLS (no recomendado)",
"notification_email_password_description": "Contraseña a utilizar al autenticarse con el servidor de correo electrónico",
"notification_email_port_description": "Puerto del servidor de correo electrónico (por ejemplo: 25, 465 o 587)",
"notification_email_secure": "SMTPS",
"notification_email_secure_description": "Usar SMTPS (SMTP sobre TLS)",
"notification_email_sent_test_email_button": "Enviar correo electrónico de prueba y guardar",
"notification_email_setting_description": "Configuraciones para enviar notificaciones por correo electrónico",
"notification_email_test_email": "Enviar email de prueba",
@@ -241,8 +255,9 @@
"oauth_storage_quota_claim_description": "Fijar la cuota de almacenamiento del usuario automáticamente al valor solicitado.",
"oauth_storage_quota_default": "Cuota de almacenamiento predeterminada (GiB)",
"oauth_storage_quota_default_description": "Cuota (en GiB) que se usará cuando no se solicite un valor específico.",
"oauth_timeout": "Tiempo de espera agotado para la solicitud",
"oauth_timeout": "Tiempo de espera de la solicitud agotado",
"oauth_timeout_description": "Tiempo de espera de solicitudes en milisegundos",
"ocr_job_description": "Usar aprendizaje automático para reconocer texto en imágenes",
"password_enable_description": "Iniciar sesión con correo electrónico y contraseña",
"password_settings": "Contraseña de Acceso",
"password_settings_description": "Administrar la configuración de inicio de sesión con contraseña",
@@ -333,7 +348,7 @@
"transcoding_max_b_frames": "Maximos B-frames",
"transcoding_max_b_frames_description": "Los valores más altos mejoran la eficiencia de la compresión, pero ralentizan la codificación. Puede que no sea compatible con la aceleración de hardware en dispositivos más antiguos. 0 desactiva los fotogramas B, mientras que -1 establece este valor automáticamente.",
"transcoding_max_bitrate": "Máxima tasa de bits",
"transcoding_max_bitrate_description": "Establecer una tasa de bits máxima puede hacer que los tamaños de archivos sean más predecibles con un costo menor para la calidad. A 720p, los valores típicos son 2600 kbit/s para VP9 o HEVC, o 4500 kbit/s para H.264. Deshabilitado si se establece en 0.",
"transcoding_max_bitrate_description": "Establecer una tasa de bits máxima puede hacer que los tamaños de archivo sean más predecibles a un coste menor en la calidad. A 720p, los valores típicos son 2600 kbit/s para VP9 o HEVC, o 4500 kbit/s para H.264. Se desactiva si se establece en 0. Cuando no se especifica una unidad, se asume k (para kbit/s); por lo tanto, 5000, 5000k y 5M (para Mbit/s) son equivalentes.",
"transcoding_max_keyframe_interval": "Intervalo máximo de fotogramas clave",
"transcoding_max_keyframe_interval_description": "Establece la distancia máxima de fotograma entre fotogramas clave. Los valores más bajos empeoran la eficiencia de la compresión, pero mejoran los tiempos de búsqueda y pueden mejorar la calidad en escenas con movimientos rápidos. 0 establece este valor automáticamente.",
"transcoding_optimal_description": "Vídeos con una resolución superior a la fijada o que no están en un formato aceptado",
@@ -351,7 +366,7 @@
"transcoding_target_resolution": "Resolución deseada",
"transcoding_target_resolution_description": "Las resoluciones más altas pueden conservar más detalles, pero la codificación tarda más, tienen tamaños de archivo más grandes y pueden reducir la capacidad de respuesta de la aplicación.",
"transcoding_temporal_aq": "AQ temporal",
"transcoding_temporal_aq_description": "Se aplica únicamente a NVENC. Aumenta la calidad de escenas con mucho detalle y poco movimiento. Puede que no sea compatible con dispositivos más antiguos.",
"transcoding_temporal_aq_description": "Solo se aplica a NVENC. La Cuantificación Adaptativa Temporal aumenta la calidad de las escenas con mucho detalle y poco movimiento. Podría no ser compatible con dispositivos más antiguos.",
"transcoding_threads": "Hilos",
"transcoding_threads_description": "Los valores más altos conducen a una codificación más rápida, pero dejan menos espacio para que el servidor procese otras tareas mientras está activo. Este valor no debe ser mayor que la cantidad de núcleos de CPU. Maximiza la utilización si se establece en 0.",
"transcoding_tone_mapping": "Mapeo de tonos",
@@ -402,11 +417,11 @@
"advanced_settings_prefer_remote_subtitle": "Algunos dispositivos tardan mucho en cargar las miniaturas desde los archivos locales. Activa esta opción para cargar imágenes remotas en su lugar.",
"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_title": "Cabeceras Proxy",
"advanced_settings_proxy_headers_title": "Cabeceras proxy personalizadas [EXPERIMENTAL]",
"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_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_title": "Permitir certificados autofirmados",
"advanced_settings_self_signed_ssl_title": "Permitir certificados SSL autofirmados [EXPERIMENTAL]",
"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_title": "Sincronizar eliminaciones remotas [EXPERIMENTAL]",
"advanced_settings_tile_subtitle": "Configuraciones avanzadas del usuario",
@@ -445,7 +460,7 @@
"album_viewer_appbar_share_leave": "Abandonar álbum",
"album_viewer_appbar_share_to": "Compartir Con",
"album_viewer_page_share_add_users": "Agregar usuarios",
"album_with_link_access": "Permite que cualquiera que tenga este enlace vea las fotos y las personas del álbum.",
"album_with_link_access": "Permitir que cualquiera que tenga el enlace vea las fotos y las personas del álbum.",
"albums": "Álbumes",
"albums_count": "{count, plural, one {{count, number} álbum} other {{count, number} álbumes}}",
"albums_default_sort_order": "Ordenación por defecto de los álbumes",
@@ -459,17 +474,21 @@
"allow_dark_mode": "Permitir modo oscuro",
"allow_edits": "Permitir edición",
"allow_public_user_to_download": "Permitir descargas a los usuarios públicos",
"allow_public_user_to_upload": "Permitir subir fotos a los usuarios públicos",
"allow_public_user_to_upload": "Permitir a los usuarios públicos subir fotos",
"alt_text_qr_code": "Código QR",
"anti_clockwise": "En sentido antihorario",
"api_key": "Clave API",
"api_key_description": "Este valor sólo se mostrará una vez. Asegúrese de copiarlo antes de cerrar la ventana.",
"api_key_empty": "El nombre de su clave API no debe estar vacío",
"api_keys": "Claves API",
"app_architecture_variant": "Variante (Arquitectura)",
"app_bar_signout_dialog_content": "¿Estás seguro que quieres cerrar sesión?",
"app_bar_signout_dialog_ok": "Sí",
"app_bar_signout_dialog_title": "Cerrar sesión",
"app_download_links": "Enlaces de Descarga de la Aplicación",
"app_settings": "Ajustes de la aplicacion",
"app_stores": "App Stores",
"app_update_available": "Actualización de aplicación está disponible",
"appears_in": "Aparece en",
"apply_count": "Aplicar ({count, number})",
"archive": "Archivo",
@@ -553,6 +572,7 @@
"backup_albums_sync": "Sincronización de álbumes de respaldo",
"backup_all": "Todos",
"backup_background_service_backup_failed_message": "Error al copiar elementos. Reintentando…",
"backup_background_service_complete_notification": "Copia de seguridad de activos completada",
"backup_background_service_connection_failed_message": "Error al conectar con el servidor. Reintentando…",
"backup_background_service_current_upload_notification": "Subiendo {filename}",
"backup_background_service_default_notification": "Comprobando nuevos elementos…",
@@ -649,7 +669,7 @@
"cannot_merge_people": "No se pueden fusionar personas",
"cannot_undo_this_action": "¡No puedes deshacer esta acción!",
"cannot_update_the_description": "No se puede actualizar la descripción",
"cast": "Convertir",
"cast": "Enviar contenido",
"cast_description": "Configura los posibles destinos de retransmisión",
"change_date": "Cambiar fecha",
"change_description": "Cambiar descripción",
@@ -662,6 +682,8 @@
"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_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_log_out": "Cerrar sesión los demás dispositivos",
"change_password_form_log_out_description": "Se recomienda cerrar sesión en todos los demás dispositivos",
"change_password_form_new_password": "Nueva contraseña",
"change_password_form_password_mismatch": "Las contraseñas no coinciden",
"change_password_form_reenter_new_password": "Vuelve a ingresar la nueva contraseña",
@@ -689,7 +711,7 @@
"client_cert_invalid_msg": "Archivo de certificado no válido o contraseña incorrecta",
"client_cert_remove_msg": "El certificado de cliente se ha eliminado",
"client_cert_subtitle": "Solo se admite el formato PKCS12 (.p12, .pfx). La importación/eliminación de certificados solo está disponible antes de iniciar sesión",
"client_cert_title": "Certificado de cliente SSL",
"client_cert_title": "Certificado de cliente SSL [EXPERIMENTAL]",
"clockwise": "En el sentido de las agujas del reloj",
"close": "Cerrar",
"collapse": "Agrupar",
@@ -701,7 +723,6 @@
"comments_and_likes": "Comentarios y me gusta",
"comments_are_disabled": "Los comentarios están deshabilitados",
"common_create_new_album": "Crear nuevo álbum",
"common_server_error": "Por favor, comprueba 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",
"confirm": "Confirmar",
"confirm_admin_password": "Confirmar contraseña del administrador",
@@ -740,6 +761,7 @@
"create": "Crear",
"create_album": "Crear álbum",
"create_album_page_untitled": "Sin título",
"create_api_key": "Crear clave API",
"create_library": "Crear biblioteca",
"create_link": "Crear enlace",
"create_link_to_share": "Crear enlace compartido",
@@ -769,6 +791,7 @@
"daily_title_text_date_year": "E dd de MMM, yyyy",
"dark": "Oscuro",
"dark_theme": "Alternar tema oscuro",
"date": "Fecha",
"date_after": "Fecha posterior",
"date_and_time": "Fecha y Hora",
"date_before": "Fecha anterior",
@@ -883,7 +906,6 @@
"edit_tag": "Editar etiqueta",
"edit_title": "Editar Titulo",
"edit_user": "Editar usuario",
"edited": "Editado",
"editor": "Editor",
"editor_close_without_save_prompt": "No se guardarán los cambios",
"editor_close_without_save_title": "¿Cerrar el editor?",
@@ -1039,6 +1061,7 @@
"exif_bottom_sheet_description_error": "Error al actualizar la descripción",
"exif_bottom_sheet_details": "DETALLES",
"exif_bottom_sheet_location": "UBICACIÓN",
"exif_bottom_sheet_no_description": "Sin descripción",
"exif_bottom_sheet_people": "PERSONAS",
"exif_bottom_sheet_person_add_person": "Agregar nombre",
"exit_slideshow": "Salir de la presentación",
@@ -1077,9 +1100,10 @@
"features_setting_description": "Administrar las funciones de la aplicación",
"file_name": "Nombre de archivo",
"file_name_or_extension": "Nombre del archivo o extensión",
"file_size": "Tamaño del archivo",
"filename": "Nombre del archivo",
"filetype": "Tipo de archivo",
"filter": "Filtrar",
"filter": "Filtros",
"filter_people": "Filtrar personas",
"filter_places": "Filtrar lugares",
"find_them_fast": "Encuéntrelos rápidamente por nombre con la búsqueda",
@@ -1120,7 +1144,6 @@
"header_settings_field_validator_msg": "El valor no puede estar vacío",
"header_settings_header_name_input": "Nombre de la cabecera",
"header_settings_header_value_input": "Valor de la cabecera",
"headers_settings_tile_subtitle": "Configura headers HTTP que la aplicación incluirá en cada petición de red",
"headers_settings_tile_title": "Cabeceras de proxy personalizadas",
"hi_user": "Hola {name} ({email})",
"hide_all_people": "Ocultar a todas las personas",
@@ -1241,6 +1264,7 @@
"local_media_summary": "Resumen de Medios Locales",
"local_network": "Red local",
"local_network_sheet_info": "La aplicación se conectará al servidor a través de esta URL cuando utilice la red Wi-Fi especificada",
"location": "Ubicación",
"location_permission": "Permiso de ubicación",
"location_permission_content": "Para usar la función de cambio automático, Immich necesita permiso de ubicación precisa para poder leer el nombre de la red Wi-Fi actual",
"location_picker_choose_on_map": "Elegir en el mapa",
@@ -1345,6 +1369,8 @@
"minute": "Minuto",
"minutes": "Minutos",
"missing": "Faltante",
"mobile_app": "Aplicación Móvil",
"mobile_app_download_onboarding_note": "Descarga la aplicación móvil utilizando las siguientes opciones",
"model": "Modelo",
"month": "Mes",
"monthly_title_text_date_format": "MMMM a",
@@ -1363,6 +1389,8 @@
"my_albums": "Mis álbumes",
"name": "Nombre",
"name_or_nickname": "Nombre o apodo",
"navigate": "Navegar",
"navigate_to_time": "Navegar a Hora",
"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": "Requisitos de red",
@@ -1372,6 +1400,7 @@
"never": "Nunca",
"new_album": "Nuevo álbum",
"new_api_key": "Nueva clave API",
"new_date_range": "Nuevo rango de fechas",
"new_password": "Nueva contraseña",
"new_person": "Nueva persona",
"new_pin_code": "Nuevo PIN",
@@ -1422,6 +1451,9 @@
"notifications": "Notificaciones",
"notifications_setting_description": "Administrar notificaciones",
"oauth": "OAuth",
"obtainium_configurator": "Configurador de Obtainium",
"obtainium_configurator_instructions": "Usa Obtainium para instalar y actualizar la aplicación de Android directamente desde las versiones publicadas en el GitHub de Immich. Crea una clave API y selecciona una variante para generar tu enlace de configuración de Obtainium",
"ocr": "OCR",
"official_immich_resources": "Recursos oficiales de Immich",
"offline": "Desconectado",
"offset": "Desviación",
@@ -1526,6 +1558,9 @@
"play_memories": "Reproducir recuerdos",
"play_motion_photo": "Reproducir foto en movimiento",
"play_or_pause_video": "Reproducir o pausar vídeo",
"play_original_video": "Reproducir video original",
"play_original_video_setting_description": "Preferir la reproducción de videos originales en lugar de videos transcodificados. Si el recurso original no es compatible, es posible que no se reproduzca correctamente.",
"play_transcoded_video": "Reproducir video transcodificado",
"please_auth_to_access": "Por favor, autentícate para acceder",
"port": "Puerto",
"preferences_settings_subtitle": "Configuraciones de la aplicación",
@@ -1543,13 +1578,9 @@
"privacy": "Privacidad",
"profile": "Perfil",
"profile_drawer_app_logs": "Registros",
"profile_drawer_client_out_of_date_major": "La app está desactualizada. Por favor actualiza a la última versión principal.",
"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_github": "GitHub",
"profile_drawer_readonly_mode": "Modo Solo lectura habilitado. Mantén pulsado el icono 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_minor": "El servidor está desactualizado. Por favor actualiza a la última versión menor.",
"profile_image_of_user": "Foto de perfil de {user}",
"profile_picture_set": "Conjunto de imágenes de perfil.",
"public_album": "Álbum público",
@@ -1606,8 +1637,8 @@
"recent_searches": "Búsquedas recientes",
"recently_added": "Añadidos recientemente",
"recently_added_page_title": "Recién Agregadas",
"recently_taken": "Recientemente tomado",
"recently_taken_page_title": "Recientemente Tomado",
"recently_taken": "Tomadas recientemente",
"recently_taken_page_title": "Tomadas Recientemente",
"refresh": "Actualizar",
"refresh_encoded_videos": "Recargar los vídeos codificados",
"refresh_faces": "Actualizar caras",
@@ -1666,6 +1697,7 @@
"reset_sqlite_confirmation": "¿Estás seguro que deseas restablecer la base de datos SQLite? Deberás cerrar sesión y volver a iniciarla para resincronizar los datos",
"reset_sqlite_success": "Restablecer exitosamente la base de datos SQLite",
"reset_to_default": "Restablecer los valores predeterminados",
"resolution": "Resolución",
"resolve_duplicates": "Resolver duplicados",
"resolved_all_duplicates": "Todos los duplicados resueltos",
"restore": "Restaurar",
@@ -1684,6 +1716,7 @@
"running": "En ejecución",
"save": "Guardar",
"save_to_gallery": "Guardado en la galería",
"saved": "Guardado",
"saved_api_key": "Clave API guardada",
"saved_profile": "Perfil guardado",
"saved_settings": "Configuraciones guardadas",
@@ -1700,6 +1733,9 @@
"search_by_description_example": "Día de senderismo en Sapa",
"search_by_filename": "Buscar por nombre de archivo o extensión",
"search_by_filename_example": "es decir IMG_1234.JPG o PNG",
"search_by_ocr": "Buscar por OCR",
"search_by_ocr_example": "Café con leche",
"search_camera_lens_model": "Buscar modelo de lente...",
"search_camera_make": "Buscar fabricante de cámara...",
"search_camera_model": "Buscar modelo de cámara...",
"search_city": "Buscar ciudad...",
@@ -1716,6 +1752,7 @@
"search_filter_location_title": "Seleccionar una ubicación",
"search_filter_media_type": "Tipo de archivo",
"search_filter_media_type_title": "Seleccionar el tipo de archivo",
"search_filter_ocr": "Buscar por OCR",
"search_filter_people_title": "Seleccionar personas",
"search_for": "Buscar",
"search_for_existing_person": "Buscar persona existente",
@@ -1772,12 +1809,13 @@
"send_message": "Enviar mensaje",
"send_welcome_email": "Enviar correo de bienvenida",
"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": "Enlace del servidor",
"server_offline": "Servidor desconectado",
"server_online": "Servidor en línea",
"server_privacy": "Privacidad del Servidor",
"server_stats": "Estadísticas del servidor",
"server_update_available": "Actualización de servidor disponible",
"server_version": "Versión del servidor",
"set": "Establecer",
"set_as_album_cover": "Establecer portada del álbum",
@@ -1806,6 +1844,8 @@
"setting_notifications_subtitle": "Ajusta tus preferencias de notificación",
"setting_notifications_total_progress_subtitle": "Progreso general de subida (elementos completados/total)",
"setting_notifications_total_progress_title": "Mostrar progreso total de copia de seguridad en segundo plano",
"setting_video_viewer_auto_play_subtitle": "Reproducir vídeos automáticamente al abrirlos",
"setting_video_viewer_auto_play_title": "Reproducir vídeos automáticamente",
"setting_video_viewer_looping_title": "Bucle",
"setting_video_viewer_original_video_subtitle": "Al reproducir un video en streaming desde el servidor, reproducir el original incluso cuando haya una transcodificación disponible. Puede causar buffering. Los videos disponibles localmente se reproducen en calidad original independientemente de esta configuración.",
"setting_video_viewer_original_video_title": "Forzar vídeo original",
@@ -1985,6 +2025,7 @@
"theme_setting_three_stage_loading_title": "Activar carga en tres etapas",
"they_will_be_merged_together": "Se fusionarán entre sí",
"third_party_resources": "Recursos de terceros",
"time": "Tiempo",
"time_based_memories": "Recuerdos basados en tiempo",
"timeline": "Cronología",
"timezone": "Zona horaria",
@@ -2017,6 +2058,7 @@
"troubleshoot": "Solucionar problemas",
"type": "Tipo",
"unable_to_change_pin_code": "No se ha podido cambiar el PIN",
"unable_to_check_version": "No se puede comprobar la versión de la aplicación o del servidor",
"unable_to_setup_pin_code": "No se ha podido establecer el PIN",
"unarchive": "Desarchivar",
"unarchive_action_prompt": "{count} eliminados del archivo",

View File

@@ -120,7 +120,7 @@
"library_settings_description": "Halda välise kogu seadeid",
"library_tasks_description": "Otsi välistest kogudest uusi ja muutunud üksuseid",
"library_watching_enable_description": "Jälgi välises kogus failide muudatusi",
"library_watching_settings": "Kogu jälgimine (EKSPERIMENTAALNE)",
"library_watching_settings": "Kogu jälgimine [EKSPERIMENTAALNE]",
"library_watching_settings_description": "Jälgi automaatselt muutunud faile",
"logging_enable_description": "Luba logimine",
"logging_level_description": "Kui lubatud, millist logimistaset kasutada.",
@@ -154,6 +154,18 @@
"machine_learning_min_detection_score_description": "Minimaalne usaldusskoor näo avastamiseks, vahemikus 0-1. Madalamad väärtused leiavad rohkem nägusid, kuid võib esineda valepositiivseid.",
"machine_learning_min_recognized_faces": "Minimaalne tuvastatud nägude arv",
"machine_learning_min_recognized_faces_description": "Minimaalne tuvastatud nägude arv, mida saab isikuks grupeerida. Selle suurendamine teeb näotuvastuse täpsemaks, kuid suureneb tõenäosus, et nägu ei seostata ühegi isikuga.",
"machine_learning_ocr": "OCR",
"machine_learning_ocr_description": "Kasuta piltidelt teksti tuvastamiseks masinõpet",
"machine_learning_ocr_enabled": "Luba OCR",
"machine_learning_ocr_enabled_description": "Kui keelatud, ei rakendata piltidele tekstituvastust.",
"machine_learning_ocr_max_resolution": "Maksimaalne resolutsioon",
"machine_learning_ocr_max_resolution_description": "Eelvaated üle selle resolutsiooni vähendatakse, säilitades külgede suhte. Suuremad väärtused on täpsemad, aga töötlemine võtab kauem aega ja kasutab rohkem mälu.",
"machine_learning_ocr_min_detection_score": "Minimaalne avastusskoor",
"machine_learning_ocr_min_detection_score_description": "Minimaalne usaldusskoor teksti avastamiseks, vahemikus 0-1. Madalamad väärtused leiavad rohkem teksti, kuid võib esineda valepositiivseid.",
"machine_learning_ocr_min_recognition_score": "Minimaalne tuvastusskoor",
"machine_learning_ocr_min_score_recognition_description": "Minimaalne usaldusskoor avastatud teksti tuvastamiseks, vahemikus 0-1. Madalamad väärtused tuvastavad rohkem teksti, kuid võib esineda valepositiivseid.",
"machine_learning_ocr_model": "OCR mudel",
"machine_learning_ocr_model_description": "Serverimudelid on täpsemad kui mobiilsed mudelid, aga töötlemine võtab rohkem aega ja kasutab rohkem mälu.",
"machine_learning_settings": "Masinõppe seaded",
"machine_learning_settings_description": "Halda masinõppe funktsioone ja seadeid",
"machine_learning_smart_search": "Nutiotsing",
@@ -211,6 +223,8 @@
"notification_email_ignore_certificate_errors_description": "Ignoreeri TLS sertifikaadi valideerimise vigu (mittesoovituslik)",
"notification_email_password_description": "Parool e-posti serveriga autentimiseks",
"notification_email_port_description": "E-posti serveri port (nt. 25, 465 või 587)",
"notification_email_secure": "SMTPS",
"notification_email_secure_description": "Kasuta SMTPS-i (SMTP üle TLS-i)",
"notification_email_sent_test_email_button": "Saada test e-kiri ja salvesta",
"notification_email_setting_description": "E-posti teel teavituste saatmise seaded",
"notification_email_test_email": "Saada test e-kiri",
@@ -243,6 +257,7 @@
"oauth_storage_quota_default_description": "Kvoot (GiB), mida kasutada, kui ühtegi väidet pole esitatud.",
"oauth_timeout": "Päringu ajalõpp",
"oauth_timeout_description": "Päringute ajalõpp millisekundites",
"ocr_job_description": "Kasuta piltidelt teksti tuvastamiseks masinõpet",
"password_enable_description": "Logi sisse e-posti aadressi ja parooliga",
"password_settings": "Parooliga sisselogimine",
"password_settings_description": "Halda parooliga sisselogimise seadeid",
@@ -333,7 +348,7 @@
"transcoding_max_b_frames": "Maksimaalne B-kaadrite arv",
"transcoding_max_b_frames_description": "Kõrgemad väärtused parandavad pakkimise efektiivsust, aga aeglustavad kodeerimist. See valik ei pruugi olla ühilduv riistvaralise kiirendusega vanematel seadmetel. 0 lülitab B-kaadrid välja, -1 määrab väärtuse automaatselt.",
"transcoding_max_bitrate": "Maksimaalne bitisagedus",
"transcoding_max_bitrate_description": "Maksimaalse bitisageduse määramine teeb failisuurused ennustatavamaks, väikese kvaliteedikao hinnaga. 720p resolutsiooni puhul on tüüpilised väärtused 2600 kbit/s (VP9 ja HEVC) või 4500 kbit/s (H.264). Väärtus 0 eemaldab piirangu.",
"transcoding_max_bitrate_description": "Maksimaalse bitisageduse määramine teeb failisuurused ennustatavamaks, väikese kvaliteedikao hinnaga. 720p resolutsiooni puhul on tüüpilised väärtused 2600 kbit/s (VP9 ja HEVC) või 4500 kbit/s (H.264). Väärtus 0 eemaldab piirangu. Kui ühikut pole määratud, eeldatakse k (kbit/s); seega 5000, 5000k ja 5M (Mbit/s) on samaväärsed.",
"transcoding_max_keyframe_interval": "Maksimaalne võtmekaadri intervall",
"transcoding_max_keyframe_interval_description": "Määrab maksimaalse kauguse võtmekaadrite vahel. Madalamad väärtused vähendavad pakkimise efektiivsust, aga parandavad otsimiskiirust ning võivad tõsta kiire liikumisega stseenide kvaliteeti. 0 määrab väärtuse automaatselt.",
"transcoding_optimal_description": "Kõrgema kui lubatud resolutsiooniga või mittelubatud formaadis videod",
@@ -351,7 +366,7 @@
"transcoding_target_resolution": "Sihtresolutsioon",
"transcoding_target_resolution_description": "Kõrgemad resolutsioonid säilitavad rohkem detaile, aga kodeerimine võtab kauem aega, tekitab suuremaid faile ning võib mõjutada rakenduse töökiirust.",
"transcoding_temporal_aq": "Temporal AQ",
"transcoding_temporal_aq_description": "Rakendub NVENC puhul. Parandab paljude detailide, aga vähese liikumisega stseenide kvaliteeti. Ei pruugi ühilduda vanemate seadmetega.",
"transcoding_temporal_aq_description": "Rakendub NVENC puhul. Temporal Adaptive Quantization parandab paljude detailide, aga vähese liikumisega stseenide kvaliteeti. Ei pruugi ühilduda vanemate seadmetega.",
"transcoding_threads": "Lõimed",
"transcoding_threads_description": "Kõrgem väärtus tähendab kiiremat kodeerimist, aga jätab serverile muude tegevuste jaoks vähem ressursse. See väärtus ei tohiks olla suurem kui protsessori tuumade arv. Väärtus 0 tähendab maksimaalset kasutust.",
"transcoding_tone_mapping": "Toonivastendus",
@@ -402,11 +417,11 @@
"advanced_settings_prefer_remote_subtitle": "Mõned seadmed laadivad lokaalsete üksuste pisipilte piinavalt aeglaselt. Aktiveeri see seadistus, et laadida selle asemel 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_title": "Vaheserveri päised",
"advanced_settings_proxy_headers_title": "Kohandatud vaheserveri päised [EKSPERIMENTAALNE]",
"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_title": "Luba endasigneeritud SSL-sertifikaadid",
"advanced_settings_self_signed_ssl_title": "Luba endasigneeritud SSL-sertifikaadid [EKSPERIMENTAALNE]",
"advanced_settings_sync_remote_deletions_subtitle": "Kustuta või taasta üksus selles seadmes automaatself, kui sama tegevus toimub veebis",
"advanced_settings_sync_remote_deletions_title": "Sünkrooni kaugkustutamised [EKSPERIMENTAALNE]",
"advanced_settings_tile_subtitle": "Edasijõudnud kasutajate seaded",
@@ -466,10 +481,14 @@
"api_key_description": "Seda väärtust kuvatakse ainult üks kord. Kopeeri see enne akna sulgemist.",
"api_key_empty": "Su API võtme nimi ei tohiks olla tühi",
"api_keys": "API võtmed",
"app_architecture_variant": "Variant (arhitektuur)",
"app_bar_signout_dialog_content": "Kas oled kindel, et soovid välja logida?",
"app_bar_signout_dialog_ok": "Jah",
"app_bar_signout_dialog_title": "Logi välja",
"app_download_links": "Rakenduse allalaadimise lingid",
"app_settings": "Rakenduse seaded",
"app_stores": "Rakendusepoed",
"app_update_available": "Rakenduse uuendus on saadaval",
"appears_in": "Albumid",
"apply_count": "Rakenda ({count, number})",
"archive": "Arhiiv",
@@ -553,6 +572,7 @@
"backup_albums_sync": "Varundusalbumite sünkroniseerimine",
"backup_all": "Kõik",
"backup_background_service_backup_failed_message": "Üksuste varundamine ebaõnnestus. Uuesti proovimine…",
"backup_background_service_complete_notification": "Üksuste varundamine lõppenud",
"backup_background_service_connection_failed_message": "Serveriga ühendumine ebaõnnestus. Uuesti proovimine…",
"backup_background_service_current_upload_notification": "{filename} üleslaadimine",
"backup_background_service_default_notification": "Uute üksuste kontrollimine…",
@@ -662,6 +682,8 @@
"change_password_description": "See on su esimene kord süsteemi siseneda, või on tehtud taotlus parooli muutmiseks. Palun sisesta allpool uus parool.",
"change_password_form_confirm_password": "Kinnita parool",
"change_password_form_description": "Hei {name},\n\nSa kas logid süsteemi esimest korda sisse, või on esitatud taotlus sinu parooli muutmiseks. Palun sisesta allpool uus parool.",
"change_password_form_log_out": "Logi muudest seadmetest välja",
"change_password_form_log_out_description": "Soovituslik on kõigist muudest seadmetest välja logida",
"change_password_form_new_password": "Uus parool",
"change_password_form_password_mismatch": "Paroolid ei klapi",
"change_password_form_reenter_new_password": "Korda uut parooli",
@@ -689,7 +711,7 @@
"client_cert_invalid_msg": "Vigane sertifikaadi fail või vale parool",
"client_cert_remove_msg": "Klientsertifikaat on eemaldatud",
"client_cert_subtitle": "Toetab ainult PKCS12 (.p12, .pfx) formaati. Sertifikaadi importimine/eemaldamine on saadaval ainult enne sisselogimist",
"client_cert_title": "SSL klientsertifikaat",
"client_cert_title": "SSL klientsertifikaat [EKSPERIMENTAALNE]",
"clockwise": "Päripäeva",
"close": "Sulge",
"collapse": "Peida",
@@ -701,7 +723,6 @@
"comments_and_likes": "Kommentaarid ja meeldimised",
"comments_are_disabled": "Kommentaarid on keelatud",
"common_create_new_album": "Lisa uus album",
"common_server_error": "Kontrolli oma võrguühendust ja veendu, et server on kättesaadav ning rakenduse ja serveri versioonid on ühilduvad.",
"completed": "Lõpetatud",
"confirm": "Kinnita",
"confirm_admin_password": "Kinnita administraatori parool",
@@ -740,6 +761,7 @@
"create": "Lisa",
"create_album": "Lisa album",
"create_album_page_untitled": "Pealkirjata",
"create_api_key": "Lisa API võti",
"create_library": "Lisa kogu",
"create_link": "Lisa link",
"create_link_to_share": "Lisa jagamiseks link",
@@ -769,6 +791,7 @@
"daily_title_text_date_year": "d. MMMM yyyy",
"dark": "Tume",
"dark_theme": "Lülita tume teema",
"date": "Kuupäev",
"date_after": "Kuupäev pärast",
"date_and_time": "Kuupäev ja kellaaeg",
"date_before": "Kuupäev enne",
@@ -883,7 +906,6 @@
"edit_tag": "Muuda silti",
"edit_title": "Muuda pealkirja",
"edit_user": "Muuda kasutajat",
"edited": "Muudetud",
"editor": "Muutja",
"editor_close_without_save_prompt": "Muudatusi ei salvestata",
"editor_close_without_save_title": "Sulge muutja?",
@@ -1078,6 +1100,7 @@
"features_setting_description": "Halda rakenduse funktsioone",
"file_name": "Failinimi",
"file_name_or_extension": "Failinimi või -laiend",
"file_size": "Failisuurus",
"filename": "Failinimi",
"filetype": "Failitüüp",
"filter": "Filter",
@@ -1121,7 +1144,6 @@
"header_settings_field_validator_msg": "Väärtus ei saa olla tühi",
"header_settings_header_name_input": "Päise nimi",
"header_settings_header_value_input": "Päise väärtus",
"headers_settings_tile_subtitle": "Määra vaheserveri päised, mida rakendus peaks iga päringuga saatma",
"headers_settings_tile_title": "Kohandatud vaheserveri päised",
"hi_user": "Tere {name} ({email})",
"hide_all_people": "Peida kõik isikud",
@@ -1242,6 +1264,7 @@
"local_media_summary": "Lokaalsete üksuste kokkuvõte",
"local_network": "Kohalik võrk",
"local_network_sheet_info": "Rakendus ühendub valitud Wi-Fi võrgus olles serveriga selle URL-i kaudu",
"location": "Asukoht",
"location_permission": "Asukoha luba",
"location_permission_content": "Automaatseks ümberlülitumiseks vajab Immich täpse asukoha luba, et saaks lugeda aktiivse WiFi-võrgu nime",
"location_picker_choose_on_map": "Vali kaardil",
@@ -1346,6 +1369,8 @@
"minute": "Minut",
"minutes": "Minutit",
"missing": "Puuduvad",
"mobile_app": "Mobiilirakendus",
"mobile_app_download_onboarding_note": "Mobiilirakenduse allalaadimiseks kasuta järgnevaid valikuid",
"model": "Mudel",
"month": "Kuu",
"monthly_title_text_date_format": "MMMM y",
@@ -1364,6 +1389,8 @@
"my_albums": "Minu albumid",
"name": "Nimi",
"name_or_nickname": "Nimi või hüüdnimi",
"navigate": "Navigeeri",
"navigate_to_time": "Navigeeri aega",
"network_requirement_photos_upload": "Kasuta fotode varundamiseks mobiilset andmesidet",
"network_requirement_videos_upload": "Kasuta videote varundamiseks mobiilset andmesidet",
"network_requirements": "Võrgu nõuded",
@@ -1373,6 +1400,7 @@
"never": "Mitte kunagi",
"new_album": "Uus album",
"new_api_key": "Uus API võti",
"new_date_range": "Uus kuupäevavahemik",
"new_password": "Uus parool",
"new_person": "Uus isik",
"new_pin_code": "Uus PIN-kood",
@@ -1423,6 +1451,9 @@
"notifications": "Teavitused",
"notifications_setting_description": "Halda teavitusi",
"oauth": "OAuth",
"obtainium_configurator": "Obtainiumi seadistamine",
"obtainium_configurator_instructions": "Androidi rakenduse otse GitHub'ist paigaldamiseks ja uuendamiseks kasuta Obtainiumit. Seadistamise lingi loomiseks lisa API võti ja vali rakenduse variant",
"ocr": "OCR",
"official_immich_resources": "Ametlikud Immich'i ressursid",
"offline": "Ühendus puudub",
"offset": "Nihe",
@@ -1527,6 +1558,9 @@
"play_memories": "Esita mälestused",
"play_motion_photo": "Esita liikuv foto",
"play_or_pause_video": "Esita või peata video",
"play_original_video": "Taasesita algne video",
"play_original_video_setting_description": "Eelista transkodeeritud video asemel algse video taasesitamist. Kui algne üksus ei ole ühilduv, võib taasesitamine ebaõnnestuda.",
"play_transcoded_video": "Taasesita transkodeeritud video",
"please_auth_to_access": "Ligipääsemiseks palun autendi",
"port": "Port",
"preferences_settings_subtitle": "Halda rakenduse eelistusi",
@@ -1544,13 +1578,9 @@
"privacy": "Privaatsus",
"profile": "Profiil",
"profile_drawer_app_logs": "Logid",
"profile_drawer_client_out_of_date_major": "Mobiilirakendus on aegunud. Palun uuenda uusimale suurele 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_github": "GitHub",
"profile_drawer_readonly_mode": "Kirjutuskaitserežiim sisse lülitatud. Väljumiseks puuduta pikalt avatari ikooni.",
"profile_drawer_server_out_of_date_major": "Server on aegunud. Palun uuenda uusimale suurele versioonile.",
"profile_drawer_server_out_of_date_minor": "Server on aegunud. Palun uuenda uusimale väikesele versioonile.",
"profile_image_of_user": "Kasutaja {user} profiilipilt",
"profile_picture_set": "Profiilipilt määratud.",
"public_album": "Avalik album",
@@ -1667,6 +1697,7 @@
"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_to_default": "Lähtesta",
"resolution": "Resolutsioon",
"resolve_duplicates": "Lahenda duplikaadid",
"resolved_all_duplicates": "Kõik duplikaadid lahendatud",
"restore": "Taasta",
@@ -1685,6 +1716,7 @@
"running": "Käimas",
"save": "Salvesta",
"save_to_gallery": "Salvesta galeriisse",
"saved": "Salvestatud",
"saved_api_key": "API võti salvestatud",
"saved_profile": "Profiil salvestatud",
"saved_settings": "Seaded salvestatud",
@@ -1701,6 +1733,9 @@
"search_by_description_example": "Matkapäev Sapas",
"search_by_filename": "Otsi failinime või -laiendi järgi",
"search_by_filename_example": "st. IMG_1234.JPG või PNG",
"search_by_ocr": "Otsi OCR-i abil",
"search_by_ocr_example": "Latte",
"search_camera_lens_model": "Otsi läätse mudelit...",
"search_camera_make": "Otsi kaamera marki...",
"search_camera_model": "Otsi kaamera mudelit...",
"search_city": "Otsi linna...",
@@ -1717,6 +1752,7 @@
"search_filter_location_title": "Vali asukoht",
"search_filter_media_type": "Üksuse tüüp",
"search_filter_media_type_title": "Vali üksuse tüüp",
"search_filter_ocr": "Otsi OCR-i abil",
"search_filter_people_title": "Vali isikud",
"search_for": "Otsi",
"search_for_existing_person": "Otsi olemasolevat isikut",
@@ -1779,6 +1815,7 @@
"server_online": "Server ühendatud",
"server_privacy": "Serveri privaatsus",
"server_stats": "Serveri statistika",
"server_update_available": "Serveri uuendus on saadaval",
"server_version": "Serveri versioon",
"set": "Määra",
"set_as_album_cover": "Sea albumi kaanepildiks",
@@ -1807,6 +1844,8 @@
"setting_notifications_subtitle": "Halda oma teavituste eelistusi",
"setting_notifications_total_progress_subtitle": "Üldine üleslaadimise edenemine (üksuseid tehtud/kokku)",
"setting_notifications_total_progress_title": "Kuva taustal varundamise üldist edenemist",
"setting_video_viewer_auto_play_subtitle": "Alusta videote avamisel automaatselt taasesitust",
"setting_video_viewer_auto_play_title": "Esita videod automaatselt",
"setting_video_viewer_looping_title": "Taasesitus",
"setting_video_viewer_original_video_subtitle": "Esita serverist video voogedastamisel originaal, isegi kui transkodeeritud video on saadaval. Võib põhjustada puhverdamist. Lokaalselt saadaolevad videod mängitakse originaalkvaliteediga sõltumata sellest seadest.",
"setting_video_viewer_original_video_title": "Sunni originaalvideo",
@@ -1986,6 +2025,7 @@
"theme_setting_three_stage_loading_title": "Luba kolmeastmeline laadimine",
"they_will_be_merged_together": "Nad ühendatakse kokku",
"third_party_resources": "Kolmanda osapoole ressursid",
"time": "Aeg",
"time_based_memories": "Ajapõhised mälestused",
"timeline": "Ajajoon",
"timezone": "Ajavöönd",
@@ -2018,6 +2058,7 @@
"troubleshoot": "Tõrkeotsing",
"type": "Tüüp",
"unable_to_change_pin_code": "PIN-koodi muutmine ebaõnnestus",
"unable_to_check_version": "Rakenduse või serveri versiooni kontrollimine ebaõnnestus",
"unable_to_setup_pin_code": "PIN-koodi seadistamine ebaõnnestus",
"unarchive": "Taasta arhiivist",
"unarchive_action_prompt": "{count} eemaldatud arhiivist",

View File

@@ -58,6 +58,7 @@
"image_format_description": "WebP ereduak JPEG baino fitxategi txikiagoak sortzen ditu, baina motelagoa da kodifikatzen.",
"image_preview_title": "Aurreikusiaen Konfigurazioa",
"image_quality": "Kalitatea",
"image_resolution": "Erresoluzioa",
"image_settings": "Argazkien Konfigurazioa",
"image_thumbnail_title": "Argazki Txikien Konfigurazioa",
"job_created": "Zeregina sortuta",
@@ -81,8 +82,11 @@
"metadata_faces_import_setting": "Gaitu aurpegien inportazioa",
"metadata_settings": "Metadata Konfigurazioa",
"metadata_settings_description": "Kudeatu metadaten konfigurazioa",
"migration_job": "Migrazio"
"migration_job": "Migrazio",
"oauth_settings": "OAuth",
"transcoding_acceleration_vaapi": "VAAPI"
},
"advanced": "Aurreratua",
"advanced_settings_readonly_mode_title": "Irakurri-bakarrik Modua",
"apply_count": "Ezarri ({count, number})",
"assets_added_to_albums_count": "Gehituta {assetTotal, plural, one {# asset} other {# assets}} to {albumTotal, plural, one {# album} other {# albums}}",

View File

@@ -44,6 +44,7 @@
"confirm_email_below": "برای تأیید، \"{email}\" را در زیر تایپ کنید",
"confirm_reprocess_all_faces": "آیا مطمئن هستید که می‌خواهید تمام چهره‌ها را مجددا پردازش کنید؟ این عمل باعث پاک شدن افراد مشخص شده نیز خواهد شد.",
"confirm_user_password_reset": "آیا مطمئن هستید که می‌خواهید رمز عبور {user} را بازنشانی کنید؟",
"confirm_user_pin_code_reset": "آیا مطمئن هستید که می‌خواهید کد PIN {user} را بازنشانی کنید؟",
"disable_login": "غیرفعال کردن ورود",
"duplicate_detection_job_description": "اجرای یادگیری ماشین بر روی فایل‌ها برای شناسایی تصاویر مشابه. این وابسته به جستجوی هوشمند است",
"exclusion_pattern_description": "الگوهای استثنا به شما امکان می‌دهد هنگام اسکن کتابخانه خود فایل‌ها و پوشه‌ها را نادیده بگیرید . این مفید است اگر پوشه‌هایی دارید که فایل‌هایی را شامل می‌شوند که نمی‌خواهید وارد کنید، مانند فایل‌های RAW.",
@@ -54,11 +55,21 @@
"failed_job_command": "دستور {command} برای کار: {job} ناموفق بود",
"force_delete_user_warning": "هشدار: این عمل باعث حذف فوری کاربر و تمام فایل‌ها می‌شود. این عمل قابل بازگشت نیست و فایل‌ها قابل بازیابی نیستند.",
"image_format_description": "فرمت WebP فایل‌های کوچکتری نسبت به JPEG ایجاد می‌کند، اما زمان کدگذاری آن کندتر است.",
"image_fullsize_description": "تصویر با اندازه کامل و بدون فراداده، مورد استفاده هنگام بزرگ‌نمایی",
"image_fullsize_enabled": "فعال‌سازی تولید تصویر با اندازه کامل",
"image_fullsize_enabled_description": "تولید تصویر با اندازه کامل برای فرمت‌های غیرسازگار با وب. هنگامی که گزینه «استفاده از پیش‌نمایش تعبیه‌شده» فعال باشد، پیش‌نمایش‌های تعبیه‌شده مستقیماً بدون تبدیل استفاده می‌شوند. این تنظیم بر فرمت‌های سازگار با وب مانند JPEG تأثیری ندارد.",
"image_fullsize_quality_description": "کیفیت تصویر با اندازه کامل از ۱ تا ۱۰۰. هرچه بالاتر باشد، کیفیت بهتر است، اما فایل‌های بزرگ‌تری ایجاد می‌کند.",
"image_fullsize_title": "تنظیمات تصویر با اندازه کامل",
"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_setting_description": "برای تصاویر کوچک از فضای رنگی Display P3 استفاده کنید. این کار باعث حفظ زنده بودن رنگ‌ها در تصاویر با گستره رنگی وسیع می‌شود، اما ممکن است تصاویر در دستگاه‌های قدیمی با نسخه‌های قدیمی مرورگر به شکل متفاوتی نمایش داده شوند. تصاویر با فضای رنگی sRGB به همان حالت sRGB نگه داشته می‌شوند تا از تغییرات رنگی جلوگیری شود.",
"image_preview_description": "تصویر با اندازه متوسط و بدون فراداده، مورد استفاده هنگام مشاهده یک دارایی و برای یادگیری ماشین",
"image_preview_quality_description": "کیفیت پیش‌نمایش از ۱ تا ۱۰۰. هرچه بالاتر باشد، کیفیت بهتر است، اما فایل‌های بزرگ‌تری ایجاد می‌کند و ممکن است پاسخ‌گویی برنامه کاهش یابد. تنظیم مقدار پایین می‌تواند بر کیفیت یادگیری ماشین تأثیر بگذارد.",
"image_preview_title": "تنظیمات پیش‌نمایش",
"image_quality": "کیفیت",
"image_resolution": "وضوح تصویر",
"image_resolution_description": "وضوح بالاتر می‌تواند جزئیات بیشتری را حفظ کند، اما تبدیل آن زمان بیشتری می‌برد، حجم فایل‌ها را افزایش می‌دهد و ممکن است پاسخ‌گویی برنامه را کاهش دهد.",
"image_settings": "تنظیمات عکس",
"image_settings_description": "مدیریت کیفیت و وضوح تصاویر تولید شده",
"job_concurrency": "همزمانی {job}",
@@ -412,7 +423,6 @@
"edit_people": "ویرایش افراد",
"edit_title": "ویرایش عنوان",
"edit_user": "ویرایش کاربر",
"edited": "ویرایش شد",
"editor": "ویرایشگر",
"email": "ایمیل",
"empty_trash": "خالی کردن سطل زباله",

View File

@@ -28,11 +28,12 @@
"add_to_album": "Lisää albumiin",
"add_to_album_bottom_sheet_added": "Lisätty albumiin {album}",
"add_to_album_bottom_sheet_already_exists": "Kohde on jo albumissa {album}",
"add_to_album_bottom_sheet_some_local_assets": "Joitakin osia paikallisesta sisällöstä ei pystytty lisämään albumiin",
"add_to_album_bottom_sheet_some_local_assets": "Joitakin osia paikallisesta sisällöstä ei pystytty lisäämään albumiin",
"add_to_album_toggle": "Vaihda albumin {album} valintaa",
"add_to_albums": "Lisää albumeihin",
"add_to_albums_count": "Lisää albumeihin ({count})",
"add_to_shared_album": "Lisää jaettuun albumiin",
"add_upload_to_stack": "Lisää kuvapinoon",
"add_url": "Lisää URL",
"added_to_archive": "Lisätty arkistoon",
"added_to_favorites": "Lisätty suosikkeihin",
@@ -153,6 +154,18 @@
"machine_learning_min_detection_score_description": "Pienin kasvojen tunnistamisessa saatu vahvuusarvo välillä 0-1. Matalammalla arvolla havaitaan enemmän kasvoja, mutta voi lisätä virhearvioiden määrää.",
"machine_learning_min_recognized_faces": "Tunnistettujen kasvojen vähimmäismäärä",
"machine_learning_min_recognized_faces_description": "Luotavan käyttäjän kasvojen vähimmäismäärä. Arvoa nostamalla kasvojentunnistuksen tarkkuus paranee, mutta todennäköisyys sille, että kasvoja ei osata yhdistää henkilöön kasvaa.",
"machine_learning_ocr": "Tekstintunnistus (OCR)",
"machine_learning_ocr_description": "Käytä koneoppimista tekstin tunnistamiseen kuvista",
"machine_learning_ocr_enabled": "Aktivoi OCR",
"machine_learning_ocr_enabled_description": "Jos asetus on pois päältä, kuvia ei prosessoida tekstin tunnistamiseksi.",
"machine_learning_ocr_max_resolution": "Maksimiresoluutio",
"machine_learning_ocr_max_resolution_description": "Tätä suuremmat esikatselukuvat tullaan pienentämään samassa kuvasuhteessa. Suuremmat arvot ovat tarkempia, mutta kestävät pidempään prosessoida ja käyttävät enemmän muistia.",
"machine_learning_ocr_min_detection_score": "Pienin paikannuksen pistemäärä",
"machine_learning_ocr_min_detection_score_description": "Pienin arvo tekstin paikannukselle varmuudelle välillä 0-1. Pienemmät arvot paikantavat enemmän tekstiä, mutta saattavat johtaa useampaan väärään positiiviseen.",
"machine_learning_ocr_min_recognition_score": "Pienin tunnistuksen pistemäärä",
"machine_learning_ocr_min_score_recognition_description": "Pienin arvo tekstin tunnistuksen varmuudelle välillä 0-1. Pienemmät arvot tunnistavat enemmän tekstiä, mutta saattavat johtaa useampaan väärään positiiviseen.",
"machine_learning_ocr_model": "OCR-malli",
"machine_learning_ocr_model_description": "Palvelinmallit ovat tarkempia kuin mobiilimallit, mutta prosessointi kestää pidempään ja käyttää enemmän muistia.",
"machine_learning_settings": "Koneoppimisen asetukset",
"machine_learning_settings_description": "Koneoppimisen ominaisuudet ja asetukset",
"machine_learning_smart_search": "Älykäs etsintä",
@@ -210,6 +223,8 @@
"notification_email_ignore_certificate_errors_description": "Älä huomioi TLS-varmenteiden validointivirheitä (ei suositeltu)",
"notification_email_password_description": "Sähköpostipalvelimen salasana",
"notification_email_port_description": "Sähköpostipalvelimen portti (esim. 25, 465, tai 587)",
"notification_email_secure": "SMTPS",
"notification_email_secure_description": "Käytä SMTPS:ää (SMTP over TLS)",
"notification_email_sent_test_email_button": "Lähetä testaussähköposti ja tallenna",
"notification_email_setting_description": "Sähköposti-ilmoitusten asetukset",
"notification_email_test_email": "Lähetä testisähköposti",
@@ -242,6 +257,7 @@
"oauth_storage_quota_default_description": "Käytettävä kiintiön määrä gigatavuissa, kun väittämää ei ole annettu.",
"oauth_timeout": "Pyynnön aikakatkaisu",
"oauth_timeout_description": "Pyyntöjen aikakatkaisu millisekunteina",
"ocr_job_description": "Käytä koneoppimista tunnistamaan tekstiä kuvista",
"password_enable_description": "Kirjaudu käyttäen sähköpostiosoitetta ja salasanaa",
"password_settings": "Kirjaudu salasanalla",
"password_settings_description": "Hallitse salasanakirjautumisen asetuksia",
@@ -332,7 +348,7 @@
"transcoding_max_b_frames": "B-kehysten enimmäismäärä",
"transcoding_max_b_frames_description": "Korkeampi arvo parantaa pakkausta, mutta hidastaa enkoodausta. Ei välttämättä ole yhteensopiva vanhempien laitteiden kanssa. 0 poistaa B-kehykset käytöstä, -1 määrittää arvon automaattisesti.",
"transcoding_max_bitrate": "Suurin bittinopeus",
"transcoding_max_bitrate_description": "Suurimman sallitun bittinopeuden asettaminen tekee tiedostojen koosta ennustettavampaa vaikka laatu voi hieman heiketä. 720p videossa tyypilliset arvot ovat 2600 kbit/s VP9:lle ja HEVC:lle, tai 4500 kbit/s H.254:lle. Jos 0, ei käytössä.",
"transcoding_max_bitrate_description": "Suurimman sallitun bittinopeuden asettaminen tekee tiedostojen koosta ennustettavampaa vaikka laatu voi hieman heiketä. 720p videossa tyypilliset arvot ovat 2600 kbit/s VP9:lle ja HEVC:lle, tai 4500 kbit/s H.254:lle. Jos 0, ei käytössä. Jos yksikköä ei ole annettu, oletus on k (kbit/s). Eli 5000, 5000k ja 5M ovat yhtä suuria.",
"transcoding_max_keyframe_interval": "Suurin avainkehysten väli",
"transcoding_max_keyframe_interval_description": "Asettaa avainkehysten välin maksimiarvon. Alempi arvo huonontaa pakkauksen tehoa, mutta parantaa hakuaikoja ja voi parantaa laatua nopealiikkeisissä kohtauksissa. 0 asettaa arvon automaattisesti.",
"transcoding_optimal_description": "Videot, joiden resoluutio on korkeampi kuin kohteen, tai ei hyväksytyssä formaatissa",
@@ -350,7 +366,7 @@
"transcoding_target_resolution": "Kohderesoluutio",
"transcoding_target_resolution_description": "Korkeampi resoluutio on tarkempi, mutta kestää kauemmin enkoodata, vie enemmän tilaa ja voi hidastaa sovelluksen responsiivisuutta.",
"transcoding_temporal_aq": "Väliaikainen AQ",
"transcoding_temporal_aq_description": "Vaikuttaa vain NVENC:lle. Parantaa laatua kohtauksissa, joissa on paljon yksityiskohtia ja vähän liikettä. Ei välttämättä ole yhteensopiva vanhempien laitteiden kanssa.",
"transcoding_temporal_aq_description": "Vaikuttaa vain NVENC:lle. Aikaperusteinen adaptiivinen kvantisointi parantaa laatua kohtauksissa, joissa on paljon yksityiskohtia ja vähän liikettä. Ei välttämättä ole yhteensopiva vanhempien laitteiden kanssa.",
"transcoding_threads": "Säikeet",
"transcoding_threads_description": "Korkeampi arvo nopeuttaa enkoodausta, mutta vie tilaa palvelimen muilta tehtäviltä. Tämä arvo ei tulisi olla suurempi mitä suorittimen ytimien määrä. Suurin mahdollinen käyttö, mikäli arvo on 0.",
"transcoding_tone_mapping": "Sävykartoitus",
@@ -401,11 +417,11 @@
"advanced_settings_prefer_remote_subtitle": "Jotkut laitteet ovat erittäin hitaita lataamaan esikatselukuvia paikallisista kohteista. Aktivoi tämä asetus käyttääksesi etäkuvia.",
"advanced_settings_prefer_remote_title": "Suosi etäkuvia",
"advanced_settings_proxy_headers_subtitle": "Määritä välityspalvelimen otsikot(proxy headers), jotka Immichin tulisi lähettää jokaisen verkkopyynnön mukana",
"advanced_settings_proxy_headers_title": "Välityspalvelimen otsikot",
"advanced_settings_proxy_headers_title": "Mukautetut välityspalvelimen otsikot [KOKEELLINEN]",
"advanced_settings_readonly_mode_subtitle": "Aktivoi vain luku -tilan, jolloin valokuvia voi ainoastaan selata. Toiminnot kuten useiden kuvien valitseminen, jakaminen, siirtäminen toistolaitteelle ja poistaminen ovat pois käytöstä. Laita vain luku -tila päälle tai pois päältä päävalikon käyttäjäkuvakkeesta",
"advanced_settings_readonly_mode_title": "Vain luku -tila",
"advanced_settings_self_signed_ssl_subtitle": "Ohita SSL sertifikaattivarmennus palvelimen päätepisteellä. Vaaditaan self-signed -sertifikaateissa.",
"advanced_settings_self_signed_ssl_title": "Salli self-signed SSL -sertifikaatit",
"advanced_settings_self_signed_ssl_title": "Salli self-signed SSL -sertifikaatit [KOKEELLINEN]",
"advanced_settings_sync_remote_deletions_subtitle": "Poista tai palauta kohde automaattisesti tällä laitteella, kun kyseinen toiminto suoritetaan verkossa",
"advanced_settings_sync_remote_deletions_title": "Synkronoi etäpoistot [KOKEELLINEN]",
"advanced_settings_tile_subtitle": "Edistyneen käyttäjän asetukset",
@@ -465,10 +481,14 @@
"api_key_description": "Tämä arvo näytetään vain kerran. Varmista, että olet kopioinut sen ennen kuin suljet ikkunan.",
"api_key_empty": "API-avaimesi ei pitäisi olla tyhjä",
"api_keys": "API-avaimet",
"app_architecture_variant": "Variantti (Arkkitehtuuri)",
"app_bar_signout_dialog_content": "Haluatko varmasti kirjautua ulos?",
"app_bar_signout_dialog_ok": "Kyllä",
"app_bar_signout_dialog_title": "Kirjaudu ulos",
"app_download_links": "Sovelluksen latauslinkit",
"app_settings": "Sovellusasetukset",
"app_stores": "Sovelluskaupat",
"app_update_available": "Sovellukseen on saatavilla päivitys",
"appears_in": "Esiintyy albumeissa",
"apply_count": "Aseta {count, number}",
"archive": "Arkisto",
@@ -552,6 +572,7 @@
"backup_albums_sync": "Varmuuskopioitujen albumeiden synkronointi",
"backup_all": "Kaikki",
"backup_background_service_backup_failed_message": "Kohteiden varmuuskopiointi epäonnistui. Yritetään uudelleen…",
"backup_background_service_complete_notification": "Kohteiden varmuuskopiointi valmis",
"backup_background_service_connection_failed_message": "Palvelimeen ei saatu yhteyttä. Yritetään uudelleen…",
"backup_background_service_current_upload_notification": "Lähetetään {filename}",
"backup_background_service_default_notification": "Tarkistetaan uusia kohteita…",
@@ -661,6 +682,8 @@
"change_password_description": "Tämä on joko ensimmäinen kertasi kun kirjaudut järjestelmään, tai salasanasi on pyydetty vaihtamaan. Määritä uusi salasana alle.",
"change_password_form_confirm_password": "Vahvista salasana",
"change_password_form_description": "Hei {name},\n\nTämä on joko ensimmäinen kerta, kun kirjaudut järjestelmään, tai sinulta on pyydetty salasanan vaihtoa. Ole hyvä ja syötä uusi salasana alle.",
"change_password_form_log_out": "Kirjaudu ulos kaikilta muilta laitteilta",
"change_password_form_log_out_description": "On suositeltavaa kirjautua ulos kaikilta muilta laitteilta",
"change_password_form_new_password": "Uusi salasana",
"change_password_form_password_mismatch": "Salasanat eivät täsmää",
"change_password_form_reenter_new_password": "Uusi salasana uudelleen",
@@ -688,7 +711,7 @@
"client_cert_invalid_msg": "Virheellinen varmennetiedosto tai väärä salasana",
"client_cert_remove_msg": "Asiakassertifikaatti on poistettu",
"client_cert_subtitle": "Vain PKCS12 (.p12, .pfx) -muotoa tuetaan. Varmenteen tuonti/poisto on käytettävissä vain ennen sisäänkirjautumista",
"client_cert_title": "SSL-asiakassertifikaatti",
"client_cert_title": "SSL-asiakassertifikaatti [KOKEELLINEN]",
"clockwise": "Myötäpäivään",
"close": "Sulje",
"collapse": "Supista",
@@ -700,7 +723,6 @@
"comments_and_likes": "Kommentit ja tykkäykset",
"comments_are_disabled": "Kommentointi ei käytössä",
"common_create_new_album": "Luo uusi albumi",
"common_server_error": "Tarkista internet-yhteytesi. Varmista että palvelin on saavutettavissa ja sovellus-/palvelinversiot ovat yhteensopivia.",
"completed": "Valmis",
"confirm": "Vahvista",
"confirm_admin_password": "Vahvista ylläpitäjän salasana",
@@ -739,6 +761,7 @@
"create": "Luo",
"create_album": "Luo albumi",
"create_album_page_untitled": "Nimetön",
"create_api_key": "Luo API-avain",
"create_library": "Luo uusi kirjasto",
"create_link": "Luo linkki",
"create_link_to_share": "Luo linkki jaettavaksi",
@@ -768,6 +791,7 @@
"daily_title_text_date_year": "E, dd MMM, yyyy",
"dark": "Tumma",
"dark_theme": "Vaihda tumma teema",
"date": "Päivämäärä",
"date_after": "Päivämäärän jälkeen",
"date_and_time": "Päivämäärä ja aika",
"date_before": "Päivä ennen",
@@ -882,7 +906,6 @@
"edit_tag": "Muokkaa tunnistetta",
"edit_title": "Muokkaa otsikkoa",
"edit_user": "Muokkaa käyttäjää",
"edited": "Muokattu",
"editor": "Muokkaaja",
"editor_close_without_save_prompt": "Muutoksia ei tallenneta",
"editor_close_without_save_title": "Suljetaanko editori?",
@@ -1038,6 +1061,7 @@
"exif_bottom_sheet_description_error": "Kuvauksen muuttaminen epäonnistui",
"exif_bottom_sheet_details": "TIEDOT",
"exif_bottom_sheet_location": "SIJAINTI",
"exif_bottom_sheet_no_description": "Ei kuvausta",
"exif_bottom_sheet_people": "IHMISET",
"exif_bottom_sheet_person_add_person": "Lisää nimi",
"exit_slideshow": "Poistu diaesityksestä",
@@ -1076,6 +1100,7 @@
"features_setting_description": "Hallitse sovelluksen ominaisuuksia",
"file_name": "Tiedoston nimi",
"file_name_or_extension": "Tiedostonimi tai tiedostopääte",
"file_size": "Tiedostokoko",
"filename": "Tiedostonimi",
"filetype": "Tiedostotyyppi",
"filter": "Suodatin",
@@ -1119,7 +1144,6 @@
"header_settings_field_validator_msg": "Arvo ei voi olla tyhjä",
"header_settings_header_name_input": "Otsikon nimi",
"header_settings_header_value_input": "Otsikon arvo",
"headers_settings_tile_subtitle": "Määritä välityspalvelimen otsikot, jotka sovelluksen tulisi lähettää jokaisen verkkopyynnön mukana",
"headers_settings_tile_title": "Mukautettu proxy headers",
"hi_user": "Hei {name} ({email})",
"hide_all_people": "Piilota kaikki henkilöt",
@@ -1240,6 +1264,7 @@
"local_media_summary": "Paikallisen median yhteenveto",
"local_network": "Lähiverkko",
"local_network_sheet_info": "Sovellus muodostaa yhteyden palvelimeen tämän URL-osoitteen kautta, kun käytetään määritettyä Wi-Fi-verkkoa",
"location": "Sijainti",
"location_permission": "Sijainnin käyttöoikeus",
"location_permission_content": "Automaattisen vaihtotoiminnon käyttämiseksi Immich tarvitsee tarkan sijainnin käyttöoikeuden, jotta se voi lukea nykyisen Wi-Fi-verkon nimen",
"location_picker_choose_on_map": "Valitse kartalta",
@@ -1340,10 +1365,12 @@
"merge_people_prompt": "Haluatko yhdistää nämä henkilöt? Tätä valintaa ei voi peruuttaa.",
"merge_people_successfully": "Henkilöt yhdistetty",
"merged_people_count": "{count, plural, one {# Henkilö} other {# henkilöä}} yhdistetty",
"minimize": "PIenennä",
"minimize": "Pienennä",
"minute": "Minuutti",
"minutes": "Minuutit",
"missing": "Puuttuvat",
"mobile_app": "Mobiilisovellus",
"mobile_app_download_onboarding_note": "Lataa mobiilisovellus käyttämällä seuraavia vaihtoehtoja",
"model": "Malli",
"month": "Kuukauden mukaan",
"monthly_title_text_date_format": "MMMM y",
@@ -1362,6 +1389,8 @@
"my_albums": "Omat albumit",
"name": "Nimi",
"name_or_nickname": "Nimi tai lempinimi",
"navigate": "Navigoi",
"navigate_to_time": "Navigoi aikaan",
"network_requirement_photos_upload": "Käytä mobiiliverkkoa kuvien varmuuskopioimiseksi",
"network_requirement_videos_upload": "Käytä mobiiliverkkoa videoiden varmuuskopioimiseksi",
"network_requirements": "Verkkovaatimukset",
@@ -1371,6 +1400,7 @@
"never": "ei koskaan",
"new_album": "Uusi Albumi",
"new_api_key": "Uusi API-avain",
"new_date_range": "Uusi aikaväli",
"new_password": "Uusi salasana",
"new_person": "Uusi henkilö",
"new_pin_code": "Uusi PIN-koodi",
@@ -1421,6 +1451,9 @@
"notifications": "Ilmoitukset",
"notifications_setting_description": "Hallitse ilmoituksia",
"oauth": "OAuth",
"obtainium_configurator": "Obtainium-määritystyökalu",
"obtainium_configurator_instructions": "Käytä Obtainiumia asentaaksesi ja päivittääksesi Android-sovelluksen suoraan Immichin GitHubin julkaisukanavasta. Luo API-avain ja valitse variantti luodaksesi Obtainium-määrityslinkin",
"ocr": "OCR (Tekstintunnistus)",
"official_immich_resources": "Viralliset Immich-resurssit",
"offline": "Offline",
"offset": "Ero",
@@ -1525,6 +1558,9 @@
"play_memories": "Toista muistot",
"play_motion_photo": "Toista Liikekuva",
"play_or_pause_video": "Toista tai keskeytä video",
"play_original_video": "Toista alkuperäinen video",
"play_original_video_setting_description": "Suosi alkuperäisten videoiden toistoa transkoodattujen videoiden sijaan. Jos alkuperäinen tiedosto ei ole yhteensopiva, se ei välttämättä toistu oikein.",
"play_transcoded_video": "Toista transkoodattu video",
"please_auth_to_access": "Ole hyvä ja kirjaudu sisään",
"port": "Portti",
"preferences_settings_subtitle": "Hallitse sovelluksen asetuksia",
@@ -1542,13 +1578,9 @@
"privacy": "Tietosuoja",
"profile": "Profiili",
"profile_drawer_app_logs": "Lokit",
"profile_drawer_client_out_of_date_major": "Sovelluksen mobiiliversio on vanhentunut. Päivitä viimeisimpään merkittävään versioon.",
"profile_drawer_client_out_of_date_minor": "Sovelluksen mobiiliversio on vanhentunut. Päivitä viimeisimpään versioon.",
"profile_drawer_client_server_up_to_date": "Asiakasohjelma ja palvelin ovat ajan tasalla",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Muokkaus on estetty. Paina käyttäjäkuvaketta pitkään palataksesi muokkaustilaan.",
"profile_drawer_server_out_of_date_major": "Palvelimen ohjelmistoversio on vanhentunut. Päivitä viimeisimpään merkittävään versioon.",
"profile_drawer_server_out_of_date_minor": "Palvelimen ohjelmistoversio on vanhentunut. Päivitä viimeisimpään versioon.",
"profile_image_of_user": "Käyttäjän {user} profiilikuva",
"profile_picture_set": "Profiilikuva asetettu.",
"public_album": "Julkinen albumi",
@@ -1665,6 +1697,7 @@
"reset_sqlite_confirmation": "Haluatko varmasti nollata SQLite tietokannan? Sinun tulee kirjautua sovelluksesta ulos ja takaisin sisään uudelleensynkronoidaksesi datan",
"reset_sqlite_success": "SQLite Tietokanta nollattu onnistuneesti",
"reset_to_default": "Palauta oletusasetukset",
"resolution": "Resoluutio",
"resolve_duplicates": "Ratkaise kaksoiskappaleet",
"resolved_all_duplicates": "Kaikki kaksoiskappaleet selvitetty",
"restore": "Palauta",
@@ -1699,6 +1732,9 @@
"search_by_description_example": "Vaelluspäivä Sapassa",
"search_by_filename": "Hae tiedostonimen tai -päätteen mukaan",
"search_by_filename_example": "esim. IMG_1234.JPG tai PNG",
"search_by_ocr": "Etsi tekstintunnistuksella (OCR)",
"search_by_ocr_example": "Latte",
"search_camera_lens_model": "Etsi linssin mallia...",
"search_camera_make": "Etsi kameramerkkiä...",
"search_camera_model": "Etsi kameramallia...",
"search_city": "Etsi kaupunkia...",
@@ -1715,6 +1751,7 @@
"search_filter_location_title": "Valitse sijainti",
"search_filter_media_type": "Mediatyyppi",
"search_filter_media_type_title": "Valitse mediatyyppi",
"search_filter_ocr": "Hae tekstintunnistuksella (OCR)",
"search_filter_people_title": "Valitse ihmiset",
"search_for": "Hae",
"search_for_existing_person": "Etsi olemassa olevaa henkilöä",
@@ -1777,6 +1814,7 @@
"server_online": "Palvelin Online-tilassa",
"server_privacy": "Palvelimen tietosuoja",
"server_stats": "Palvelimen tilastot",
"server_update_available": "Palvelimeen on saatavilla päivitys",
"server_version": "Palvelimen versio",
"set": "Aseta",
"set_as_album_cover": "Aseta albumin kanneksi",
@@ -1805,6 +1843,8 @@
"setting_notifications_subtitle": "Ilmoitusasetusten määrittely",
"setting_notifications_total_progress_subtitle": "Lähetyksen yleinen edistyminen (kohteita lähetetty/yhteensä)",
"setting_notifications_total_progress_title": "Näytä taustavarmuuskopioinnin kokonaisedistyminen",
"setting_video_viewer_auto_play_subtitle": "Aloita videoiden toistaminen automaattisesti kun ne avataan",
"setting_video_viewer_auto_play_title": "Toista videoita automaattisesti",
"setting_video_viewer_looping_title": "Silmukkatoisto",
"setting_video_viewer_original_video_subtitle": "Kun toistat videota palvelimelta, toista alkuperäinen, vaikka transkoodattu versio olisi saatavilla. Tämä voi johtaa puskurointiin. Paikalliset videot toistetaan aina alkuperäislaadulla.",
"setting_video_viewer_original_video_title": "Pakota alkuperäinen video",
@@ -1984,6 +2024,7 @@
"theme_setting_three_stage_loading_title": "Ota kolmivaiheinen lataus käyttöön",
"they_will_be_merged_together": "Nämä tullaan yhdistämään",
"third_party_resources": "Kolmannen osapuolen resurssit",
"time": "Aika",
"time_based_memories": "Aikaan perustuvat muistot",
"timeline": "Aikajana",
"timezone": "Aikavyöhyke",
@@ -2016,6 +2057,7 @@
"troubleshoot": "Vianetsintä",
"type": "Tyyppi",
"unable_to_change_pin_code": "PIN-koodin vaihtaminen epäonnistui",
"unable_to_check_version": "Sovelluksen tai palvelimen versiota ei voitu tarkistaa",
"unable_to_setup_pin_code": "PIN-koodin määrittäminen epäonnistui",
"unarchive": "Palauta arkistosta",
"unarchive_action_prompt": "{count} poistettu arkistosta",

View File

@@ -25,6 +25,8 @@
"add_to_album": "Idagdag sa album",
"add_to_album_bottom_sheet_added": "Naidagdag sa {album}",
"add_to_album_bottom_sheet_already_exists": "Nasa {album} na",
"add_to_albums": "Idagdag sa mga album",
"add_to_albums_count": "Idagdag sa mga album ({count})",
"add_to_shared_album": "Idagdag sa shared album",
"add_url": "Magdagdag ng URL",
"added_to_archive": "Naidagdag sa archive",
@@ -67,16 +69,18 @@
},
"album_user_left": "Umalis sa {album}",
"all_albums": "Lahat ng albums",
"all_people": "Lahat ng tao",
"all_videos": "Lahat ng video",
"api_key_description": "Isang beses lamang na ipapakita itong value. Siguraduhin na ikopya itong value bago iclose ang window na ito.",
"are_these_the_same_person": "Itong tao na ito ay parehas?",
"asset_adding_to_album": "Dinadagdag sa album...",
"asset_filename_is_offline": "Offline ang asset {filename}",
"asset_uploading": "Ina-upload...",
"create_album_page_untitled": "Walang pamagat",
"documentation": "Dokumentasyion",
"done": "Tapos na",
"download": "I-download",
"edit": "I-edit",
"edited": "Inedit",
"editor_close_without_save_title": "Isara ang editor?",
"explore": "I-explore",
"export": "I-export",

View File

@@ -120,7 +120,7 @@
"library_settings_description": "Gestion des paramètres des bibliothèques externes",
"library_tasks_description": "Scanner les bibliothèques externes pour les nouveaux et/ou les éléments modifiés",
"library_watching_enable_description": "Surveiller les modifications de fichiers dans les bibliothèques externes",
"library_watching_settings": "Surveillance de bibliothèque (EXPÉRIMENTAL)",
"library_watching_settings": "Surveillance de bibliothèque [EXPÉRIMENTAL]",
"library_watching_settings_description": "Surveiller automatiquement les fichiers modifiés",
"logging_enable_description": "Activer la journalisation",
"logging_level_description": "Niveau de journalisation lorsque cette option est activée.",
@@ -154,6 +154,18 @@
"machine_learning_min_detection_score_description": "Score de confiance minimal pour qu'un visage soit détecté, allant de 0 à 1. Des valeurs plus basses détecteront plus de visages mais peuvent entraîner des faux positifs.",
"machine_learning_min_recognized_faces": "Nombre minimal de visages reconnus",
"machine_learning_min_recognized_faces_description": "Nombre minimal de visages reconnus pour qu'une personne soit créée. Augmenter cette valeur rend la reconnaissance faciale plus précise au détriment d'augmenter la chance qu'un visage ne soit pas attribué à une personne.",
"machine_learning_ocr": "OCR",
"machine_learning_ocr_description": "Utiliser l'apprentissage automatique pour reconnaître le texte dans les images",
"machine_learning_ocr_enabled": "Activer la reconnaissance de caractères",
"machine_learning_ocr_enabled_description": "Si désactivé, la reconnaissance de texte ne s'appliquera pas aux images.",
"machine_learning_ocr_max_resolution": "Résolution maximale",
"machine_learning_ocr_max_resolution_description": "Les prévisualisations au-dessus de cette résolution seront retaillées en conservant leur ratio. Des valeurs plus grandes sont plus précises, mais sont plus lentes et utilisent plus de mémoire.",
"machine_learning_ocr_min_detection_score": "Score minimum de détection",
"machine_learning_ocr_min_detection_score_description": "Score de confiance minimum pour la détection du textew entre 0 et 1. Des valeurs faibles permettront de reconnaître davantage de texte mais peuvent entraîner des faux positifs.",
"machine_learning_ocr_min_recognition_score": "Score de reconnaissance minimum",
"machine_learning_ocr_min_score_recognition_description": "Score de confiance minimum pour la reconnaissance du texte, entre 0 et 1. Des valeurs faible permettront de reconnaître davantage de texte, mais peuvent entraîner des faux positifs.",
"machine_learning_ocr_model": "Modèle de Reconnaissance Optique de Caractères",
"machine_learning_ocr_model_description": "Les modèles du serveur sont plus précis que les modèles mobiles, mais ils sont plus lents et utilisent plus de mémoire.",
"machine_learning_settings": "Paramètres d'apprentissage automatique",
"machine_learning_settings_description": "Gérer les fonctionnalités et les paramètres d'apprentissage automatique",
"machine_learning_smart_search": "Recherche intelligente",
@@ -211,6 +223,8 @@
"notification_email_ignore_certificate_errors_description": "Ignorer les erreurs de validation du certificat TLS (non recommandé)",
"notification_email_password_description": "Mot de passe à utiliser lors de l'authentification avec le serveur de messagerie",
"notification_email_port_description": "Port du serveur de messagerie (par exemple 25, 465 ou 587)",
"notification_email_secure": "SMTPS",
"notification_email_secure_description": "Utilise SMTPS (SMTP via TLS)",
"notification_email_sent_test_email_button": "Envoyer un courriel de test et enregistrer",
"notification_email_setting_description": "Paramètres pour l'envoi de notifications par courriel",
"notification_email_test_email": "Envoyer un courriel de test",
@@ -243,6 +257,7 @@
"oauth_storage_quota_default_description": "Quota en Gio à utiliser lorsqu'aucune valeur n'est précisée.",
"oauth_timeout": "Expiration de la durée de la requête",
"oauth_timeout_description": "Délai d'expiration des requêtes en millisecondes",
"ocr_job_description": "Utiliser un modèle d'apprentissage automatique pour reconnaitre le texte dans les images",
"password_enable_description": "Connexion avec courriel et mot de passe",
"password_settings": "Connexion par mot de passe",
"password_settings_description": "Gérer les paramètres de connexion par mot de passe",
@@ -305,7 +320,7 @@
"transcoding_acceleration_api": "API d'accélération",
"transcoding_acceleration_api_description": "Il s'agit de l'API qui interagira avec votre appareil pour accélérer le transcodage. Ce paramètre fait au mieux: il basculera vers le transcodage logiciel en cas d'échec. Le codec vidéo VP9 peut fonctionner ou non selon votre matériel.",
"transcoding_acceleration_nvenc": "NVENC (nécessite un GPU NVIDIA)",
"transcoding_acceleration_qsv": "Quick Sync (nécessite un processeur Intel de 7ème génération ou plus)",
"transcoding_acceleration_qsv": "Quick Sync (nécessite un processeur Intel de 7ème génération ou supérieur)",
"transcoding_acceleration_rkmpp": "RKMPP (uniquement sur les SOCs Rockchip)",
"transcoding_acceleration_vaapi": "VAAPI",
"transcoding_accepted_audio_codecs": "Codecs audio acceptés",
@@ -333,7 +348,7 @@
"transcoding_max_b_frames": "Nombre maximum de trames B",
"transcoding_max_b_frames_description": "Des valeurs plus élevées améliorent l'efficacité de la compression, mais ralentissent l'encodage. Elles peuvent ne pas être compatibles avec l'accélération matérielle sur les anciens appareils. Une valeur de 0 désactive les trames B, tandis qu'une valeur de -1 définit automatiquement ce paramètre.",
"transcoding_max_bitrate": "Débit binaire maximal",
"transcoding_max_bitrate_description": "Définir un débit binaire maximal peut résulter en des fichiers de taille plus prédictible, au prix d'une légère perte en qualité. En 720p, les valeurs sont 2600 kbit/s pour du VP9 ou du HEVC ou 4500 kbit/s pour du H.264. Désactivé si le débit binaire est à 0.",
"transcoding_max_bitrate_description": "Définir un débit binaire maximal peut rendre la taille des fichiers plus prévisible, au prix dune légère perte de qualité. En 720p, les valeurs typiques sont de 2600 kbit/s pour du VP9 ou du HEVC, ou de 4500 kbit/s pour du H.264. Désactivé si le débit binaire est fixé à 0. Lorsquaucune unité nest spécifiée, k (pour kbit/s) est supposée; ainsi, 5000, 5000k et 5M (pour Mbit/s) sont équivalents.",
"transcoding_max_keyframe_interval": "Intervalle maximal entre les images clés",
"transcoding_max_keyframe_interval_description": "Définit la distance maximale de trames entre les images clés. Les valeurs plus basses diminuent l'efficacité de la compression, mais améliorent les temps de recherche et peuvent améliorer la qualité dans les scènes avec des mouvements rapides. Une valeur de 0 définit automatiquement ce paramètre.",
"transcoding_optimal_description": "Les vidéos dont la résolution est supérieure à celle attendue ou celles qui ne sont pas dans un format accepté",
@@ -351,7 +366,7 @@
"transcoding_target_resolution": "Résolution cible",
"transcoding_target_resolution_description": "Des résolutions plus élevées peuvent préserver plus de détails, mais prennent plus de temps à encoder, ont de plus grandes tailles de fichiers, et peuvent réduire la réactivité de l'application.",
"transcoding_temporal_aq": "Quantification adaptative temporelle (temporal AQ)",
"transcoding_temporal_aq_description": "S'applique uniquement à NVENC. Améliore la qualité des scènes riches en détails et à faible mouvement. Peut ne pas être compatible avec les anciens appareils.",
"transcoding_temporal_aq_description": "S'applique uniquement à NVENC. La quantification adaptative temporelle améliore la qualité des scènes riches en détails et à faible mouvement. Peut ne pas être compatible avec les anciens appareils.",
"transcoding_threads": "Processus",
"transcoding_threads_description": "Une valeur plus élevée entraîne un encodage plus rapide, mais laisse moins de place au serveur pour traiter d'autres tâches pendant son activité. Cette valeur ne doit pas être supérieure au nombre de cœurs de CPU. Une valeur égale à 0 maximise l'utilisation.",
"transcoding_tone_mapping": "Mappage tonal",
@@ -402,11 +417,11 @@
"advanced_settings_prefer_remote_subtitle": "Certains appareils sont très lents à charger des miniatures à partir de ressources locales. Activez ce paramètre pour charger des images externes à la place.",
"advanced_settings_prefer_remote_title": "Préférer les images externes",
"advanced_settings_proxy_headers_subtitle": "Ajoutez des en-têtes personnalisés à chaque requête réseau",
"advanced_settings_proxy_headers_title": "En-têtes de proxy",
"advanced_settings_proxy_headers_title": "En-têtes de proxy personnalisés [EXPÉRIMENTAL]",
"advanced_settings_readonly_mode_subtitle": "Active le mode lecture seule, où les photos peuvent seulement être visualisées, et les actions comme les sélections multiples, le partage, la diffusion, la suppression sont désactivées. Activer/désactiver la lecture seule via l'image de l'utilisateur depuis l'écran d'accueil",
"advanced_settings_readonly_mode_title": "Mode lecture seule",
"advanced_settings_self_signed_ssl_subtitle": "Permet d'ignorer la vérification du certificat SSL pour le point d'accès du serveur. Requis pour les certificats auto-signés.",
"advanced_settings_self_signed_ssl_title": "Autoriser les certificats SSL auto-signés",
"advanced_settings_self_signed_ssl_title": "Autoriser les certificats SSL auto-signés [EXPÉRIMENTAL]",
"advanced_settings_sync_remote_deletions_subtitle": "Supprimer ou restaurer automatiquement un média sur cet appareil lorsqu'une action a été faite sur le web",
"advanced_settings_sync_remote_deletions_title": "Synchroniser les suppressions depuis le serveur [EXPÉRIMENTAL]",
"advanced_settings_tile_subtitle": "Paramètres d'utilisateur avancés",
@@ -466,10 +481,14 @@
"api_key_description": "Cette valeur ne sera affichée qu'une seule fois. Assurez-vous de la copier avant de fermer la fenêtre.",
"api_key_empty": "Le nom de votre clé API ne doit pas être vide",
"api_keys": "Clés d'API",
"app_architecture_variant": "Variante (Architecture)",
"app_bar_signout_dialog_content": "Êtes-vous sûr(e) de vouloir vous déconnecter?",
"app_bar_signout_dialog_ok": "Oui",
"app_bar_signout_dialog_title": "Se déconnecter",
"app_download_links": "Liens de téléchargement de l'appli",
"app_settings": "Paramètres de l'application",
"app_stores": "Magasins d'applications",
"app_update_available": "Une mise à jour est disponible",
"appears_in": "Apparaît dans",
"apply_count": "Appliquer ({count, number})",
"archive": "Archive",
@@ -553,6 +572,7 @@
"backup_albums_sync": "Sauvegarde de la synchronisation des albums",
"backup_all": "Tout",
"backup_background_service_backup_failed_message": "Échec de la sauvegarde des médias. Nouvelle tentative…",
"backup_background_service_complete_notification": "Sauvegarde du média terminée",
"backup_background_service_connection_failed_message": "Impossible de se connecter au serveur. Nouvelle tentative…",
"backup_background_service_current_upload_notification": "Envoi de {filename}",
"backup_background_service_default_notification": "Recherche de nouveaux médias…",
@@ -600,7 +620,7 @@
"backup_controller_page_turn_on": "Activer la sauvegarde au premier plan",
"backup_controller_page_uploading_file_info": "Envoi des informations du fichier",
"backup_err_only_album": "Impossible de retirer le seul album",
"backup_error_sync_failed": "Échec de la synchronisation. Impossible d'exécuter la sauvegarde.",
"backup_error_sync_failed": "Échec de synchronisation.",
"backup_info_card_assets": "médias",
"backup_manual_cancelled": "Annulé",
"backup_manual_in_progress": "Envoi déjà en cours. Réessayez plus tard",
@@ -662,6 +682,8 @@
"change_password_description": "C'est la première fois que vous vous connectez ou une demande a été faite pour changer votre mot de passe. Veuillez entrer le nouveau mot de passe ci-dessous.",
"change_password_form_confirm_password": "Confirmez le mot de passe",
"change_password_form_description": "Bonjour {name},\n\nC'est la première fois que vous vous connectez au système ou vous avez demandé de changer votre mot de passe. Veuillez saisir le nouveau mot de passe ci-dessous.",
"change_password_form_log_out": "Déconnecter tous les autres appareils",
"change_password_form_log_out_description": "Il est recommandé de déconnecter tous les autres appareils",
"change_password_form_new_password": "Nouveau mot de passe",
"change_password_form_password_mismatch": "Les mots de passe ne correspondent pas",
"change_password_form_reenter_new_password": "Saisissez à nouveau le nouveau mot de passe",
@@ -689,7 +711,7 @@
"client_cert_invalid_msg": "Fichier de certificat invalide ou mot de passe incorrect",
"client_cert_remove_msg": "Certificat supprimé",
"client_cert_subtitle": "Prend en charge uniquement le format PKCS12 (.p12, .pfx). L'importation/suppression de certificats n'est possible qu'avant la connexion",
"client_cert_title": "Certificat SSL",
"client_cert_title": "Certificat SSL [EXPÉRIMENTAL]",
"clockwise": "Sens horaire",
"close": "Fermer",
"collapse": "Réduire",
@@ -701,7 +723,6 @@
"comments_and_likes": "Commentaires et \"J'aime\"",
"comments_are_disabled": "Les commentaires sont désactivés",
"common_create_new_album": "Créer un nouvel album",
"common_server_error": "Veuillez vérifier votre connexion réseau, vous assurer que le serveur est accessible et que les versions de l'application et du serveur sont compatibles.",
"completed": "Complété",
"confirm": "Confirmez",
"confirm_admin_password": "Confirmez le mot de passe Admin",
@@ -740,6 +761,7 @@
"create": "Créer",
"create_album": "Créer un album",
"create_album_page_untitled": "Sans titre",
"create_api_key": "Créer une clé d'API",
"create_library": "Créer une bibliothèque",
"create_link": "Créer le lien",
"create_link_to_share": "Créer un lien pour partager",
@@ -769,6 +791,7 @@
"daily_title_text_date_year": "E, dd MMM, yyyy",
"dark": "Sombre",
"dark_theme": "Activer le thème sombre",
"date": "Date",
"date_after": "Date après",
"date_and_time": "Date et heure",
"date_before": "Date avant",
@@ -883,7 +906,6 @@
"edit_tag": "Modifier l'étiquette",
"edit_title": "Modifier le titre",
"edit_user": "Modifier l'utilisateur",
"edited": "Modifié",
"editor": "Editeur",
"editor_close_without_save_prompt": "Les changements ne seront pas enregistrés",
"editor_close_without_save_title": "Fermer l'éditeur?",
@@ -895,7 +917,7 @@
"empty_trash": "Vider la corbeille",
"empty_trash_confirmation": "Êtes-vous sûr de vouloir vider la corbeille? Cela supprimera définitivement de Immich tous les médias qu'elle contient.\nVous ne pouvez pas annuler cette action!",
"enable": "Active",
"enable_backup": "Activer la sauvegarde",
"enable_backup": "Sauvegarde",
"enable_biometric_auth_description": "Entrez votre code PIN pour activer l'authentification biométrique",
"enabled": "Activé",
"end_date": "Date de fin",
@@ -1039,6 +1061,7 @@
"exif_bottom_sheet_description_error": "Erreur de mise à jour de la description",
"exif_bottom_sheet_details": "DÉTAILS",
"exif_bottom_sheet_location": "LOCALISATION",
"exif_bottom_sheet_no_description": "Aucune description",
"exif_bottom_sheet_people": "PERSONNES",
"exif_bottom_sheet_person_add_person": "Ajouter un nom",
"exit_slideshow": "Quitter le diaporama",
@@ -1077,6 +1100,7 @@
"features_setting_description": "Gérer les fonctionnalités de l'application",
"file_name": "Nom du fichier",
"file_name_or_extension": "Nom du fichier ou extension",
"file_size": "Taille du fichier",
"filename": "Nom du fichier",
"filetype": "Type de fichier",
"filter": "Filtres",
@@ -1120,7 +1144,6 @@
"header_settings_field_validator_msg": "Cette valeur ne peut pas être vide",
"header_settings_header_name_input": "Nom de l'en-tête",
"header_settings_header_value_input": "Valeur de l'en-tête",
"headers_settings_tile_subtitle": "Définir les en-têtes de proxy que l'application doit envoyer avec chaque requête réseau",
"headers_settings_tile_title": "En-têtes de proxy personnalisés",
"hi_user": "Bonjour {name} ({email})",
"hide_all_people": "Cacher toutes les personnes",
@@ -1241,6 +1264,7 @@
"local_media_summary": "Résumé du média local",
"local_network": "Réseau local",
"local_network_sheet_info": "L'application va se connecter au serveur via cette URL quand l'appareil est connecté à ce réseau Wi-Fi",
"location": "Localisation",
"location_permission": "Autorisation de localisation",
"location_permission_content": "Afin de pouvoir changer d'adresse automatiquement, Immich doit avoir accès à la localisation précise, afin d'accéder au nom du réseau wifi utilisé",
"location_picker_choose_on_map": "Sélectionner sur la carte",
@@ -1345,6 +1369,8 @@
"minute": "Minute",
"minutes": "Minutes",
"missing": "Manquant",
"mobile_app": "Appli mobile",
"mobile_app_download_onboarding_note": "Téléchargez l'application mobile compagnon via les options suivantes",
"model": "Modèle",
"month": "Mois",
"monthly_title_text_date_format": "MMMM y",
@@ -1363,6 +1389,8 @@
"my_albums": "Mes albums",
"name": "Nom",
"name_or_nickname": "Nom ou surnom",
"navigate": "Naviguer vers",
"navigate_to_time": "Naviguer vers Date/Heure",
"network_requirement_photos_upload": "Utiliser les données mobile pour sauvegarder les photos",
"network_requirement_videos_upload": "Utiliser les données mobile pour sauvegarder les vidéos",
"network_requirements": "Prérequis réseau",
@@ -1372,6 +1400,7 @@
"never": "Jamais",
"new_album": "Nouvel Album",
"new_api_key": "Nouvelle clé API",
"new_date_range": "Nouvelle plage de date",
"new_password": "Nouveau mot de passe",
"new_person": "Nouvelle personne",
"new_pin_code": "Nouveau code PIN",
@@ -1422,6 +1451,9 @@
"notifications": "Notifications",
"notifications_setting_description": "Gérer les notifications",
"oauth": "OAuth",
"obtainium_configurator": "Configuration pour Obtainium",
"obtainium_configurator_instructions": "Utilisez Obtainium pour installer et mettre à jour l'application Android directement depuis la version d'Immich sur Github. Créer une clé d'API et sélectionner une variante pour créer votre lien de configuration pour Obtainium",
"ocr": "Reconnaissance Optique de Caractères",
"official_immich_resources": "Ressources Immich officielles",
"offline": "Hors ligne",
"offset": "Décalage",
@@ -1526,6 +1558,9 @@
"play_memories": "Lancer les souvenirs",
"play_motion_photo": "Jouer la photo animée",
"play_or_pause_video": "Lancer ou mettre en pause la vidéo",
"play_original_video": "Lire la vidéo originale",
"play_original_video_setting_description": "Préférer la lecture des vidéos originales plutôt que les vidéos transcodées. Si le média original n'est pas compatible, il pourrait ne pas être lu correctement.",
"play_transcoded_video": "Lire la vidéo transcodée",
"please_auth_to_access": "Merci de vous authentifier pour accéder",
"port": "Port",
"preferences_settings_subtitle": "Gérer les préférences de l'application",
@@ -1543,13 +1578,9 @@
"privacy": "Vie privée",
"profile": "Profil",
"profile_drawer_app_logs": "Journaux",
"profile_drawer_client_out_of_date_major": "L'application mobile est obsolète. Veuillez effectuer la mise à jour vers la dernière version majeure.",
"profile_drawer_client_out_of_date_minor": "L'application mobile est obsolète. Veuillez effectuer la mise à jour vers la dernière version mineure.",
"profile_drawer_client_server_up_to_date": "Le client et le serveur sont à jour",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Mode lecture seule activé. Faites un appui long sur l'image de l'utilisateur pour quitter.",
"profile_drawer_server_out_of_date_major": "Le serveur est obsolète. Veuillez mettre à jour vers la dernière version majeure.",
"profile_drawer_server_out_of_date_minor": "Le serveur est obsolète. Veuillez mettre à jour vers la dernière version mineure.",
"profile_image_of_user": "Image de profil de {user}",
"profile_picture_set": "Photo de profil définie.",
"public_album": "Album public",
@@ -1666,6 +1697,7 @@
"reset_sqlite_confirmation": "Êtes-vous certain de vouloir réinitialiser la base de données SQLite? Vous devrez vous déconnecter puis vous reconnecter à nouveau pour resynchroniser les données",
"reset_sqlite_success": "La base de données SQLite à été réinitialisé avec succès",
"reset_to_default": "Rétablir les valeurs par défaut",
"resolution": "Résolution",
"resolve_duplicates": "Résoudre les doublons",
"resolved_all_duplicates": "Résolution de tous les doublons",
"restore": "Restaurer",
@@ -1684,6 +1716,7 @@
"running": "En cours",
"save": "Sauvegarder",
"save_to_gallery": "Enregistrer",
"saved": "Sauvegardé",
"saved_api_key": "Clé API sauvegardée",
"saved_profile": "Profil enregistré",
"saved_settings": "Paramètres enregistrés",
@@ -1700,6 +1733,9 @@
"search_by_description_example": "Randonnée à Sapa",
"search_by_filename": "Rechercher par nom du fichier ou extension",
"search_by_filename_example": "Exemple: IMG_1234.JPG ou PNG",
"search_by_ocr": "Recherche par OCR",
"search_by_ocr_example": "café latte",
"search_camera_lens_model": "Chercher par modèle d'objectif...",
"search_camera_make": "Rechercher par marque d'appareil photo...",
"search_camera_model": "Rechercher par modèle d'appareil photo...",
"search_city": "Rechercher par ville...",
@@ -1716,6 +1752,7 @@
"search_filter_location_title": "Sélectionner une localisation",
"search_filter_media_type": "Type de média",
"search_filter_media_type_title": "Sélectionner type de média",
"search_filter_ocr": "Recherche par OCR",
"search_filter_people_title": "Sélectionner une personne",
"search_for": "Chercher",
"search_for_existing_person": "Rechercher une personne existante",
@@ -1773,11 +1810,12 @@
"send_welcome_email": "Envoyer un courriel de bienvenue",
"server_endpoint": "Adresse du serveur",
"server_info_box_app_version": "Version de l'application",
"server_info_box_server_url": "URL du serveur",
"server_info_box_server_url": "Server URL",
"server_offline": "Serveur hors ligne",
"server_online": "Serveur en ligne",
"server_privacy": "Vie privée pour le serveur",
"server_stats": "Statistiques du serveur",
"server_update_available": "Une mise à jour du serveur est disponible",
"server_version": "Version du serveur",
"set": "Définir",
"set_as_album_cover": "Définir comme couverture d'album",
@@ -1806,6 +1844,8 @@
"setting_notifications_subtitle": "Ajustez vos préférences de notification",
"setting_notifications_total_progress_subtitle": "Progression globale de l'envoi (effectué/total des médias)",
"setting_notifications_total_progress_title": "Afficher la progression totale de la sauvegarde en arrière-plan",
"setting_video_viewer_auto_play_subtitle": "Lancer automatiquement la lecture des vidéos lorsquelles sont ouvertes",
"setting_video_viewer_auto_play_title": "Lecture automatique des vidéos",
"setting_video_viewer_looping_title": "Boucle",
"setting_video_viewer_original_video_subtitle": "Lors de la diffusion d'une vidéo depuis le serveur, lisez l'original même si un transcodage est disponible. Cela peut entraîner de la mise en mémoire tampon. Les vidéos disponibles localement sont lues en qualité d'origine, quel que soit ce paramètre.",
"setting_video_viewer_original_video_title": "Forcer la vidéo originale",
@@ -1898,7 +1938,7 @@
"show_supporter_badge": "Badge de contributeur",
"show_supporter_badge_description": "Afficher le badge de contributeur",
"show_text_search_menu": "Afficher le menu de recherche de texte",
"shuffle": "Mélanger",
"shuffle": "Aléatoire",
"sidebar": "Barre latérale",
"sidebar_display_description": "Afficher un lien vers la vue dans la barre latérale",
"sign_out": "Déconnexion",
@@ -1985,6 +2025,7 @@
"theme_setting_three_stage_loading_title": "Activer le chargement en trois étapes",
"they_will_be_merged_together": "Elles seront fusionnées ensemble",
"third_party_resources": "Ressources tierces",
"time": "Horaire",
"time_based_memories": "Souvenirs basés sur la date",
"timeline": "Vue chronologique",
"timezone": "Fuseau horaire",
@@ -2017,6 +2058,7 @@
"troubleshoot": "Dépannage",
"type": "Type",
"unable_to_change_pin_code": "Impossible de changer le code PIN",
"unable_to_check_version": "Impossible de vérifier la version de l'application ou du serveur",
"unable_to_setup_pin_code": "Impossible de définir le code PIN",
"unarchive": "Désarchiver",
"unarchive_action_prompt": "{count} supprimé(s) de l'archive",

View File

@@ -33,6 +33,7 @@
"add_to_albums": "Engadir a álbums",
"add_to_albums_count": "Engadir a {count} álbums",
"add_to_shared_album": "Engadir ao álbum compartido",
"add_upload_to_stack": "Engade cargar á pila",
"add_url": "Engadir URL",
"added_to_archive": "Engadido ao arquivo",
"added_to_favorites": "Engadido a favoritos",
@@ -57,7 +58,7 @@
"backup_onboarding_parts_title": "Unha copia de seguridade 3-2-1 inclúe:",
"backup_onboarding_title": "Copia de seguridade",
"backup_settings": "Configuración da copia da base de datos",
"backup_settings_description": "Xestionar a configuración da copia da base de datos",
"backup_settings_description": "Xestionar a configuración da copia da base de datos.",
"cleared_jobs": "Traballos borrados para: {job}",
"config_set_by_file": "A configuración establécese actualmente mediante un ficheiro de configuración",
"confirm_delete_library": "Está seguro de que quere eliminar a biblioteca {library}?",
@@ -210,6 +211,8 @@
"notification_email_ignore_certificate_errors_description": "Ignorar erros de validación do certificado TLS (non recomendado)",
"notification_email_password_description": "Contrasinal a usar ao autenticarse co servidor de correo electrónico",
"notification_email_port_description": "Porto do servidor de correo electrónico (p. ex. 25, 465 ou 587)",
"notification_email_secure": "SMTPS",
"notification_email_secure_description": "Usar SMTPS (SMTP sobre TLS)",
"notification_email_sent_test_email_button": "Enviar correo de proba e gardar",
"notification_email_setting_description": "Configuración para enviar notificacións por correo electrónico",
"notification_email_test_email": "Enviar correo de proba",
@@ -273,7 +276,7 @@
"storage_template_date_time_sample": "Tempo de mostra {date}",
"storage_template_enable_description": "Activar o motor de modelos de almacenamento",
"storage_template_hash_verification_enabled": "Verificación de hash activada",
"storage_template_hash_verification_enabled_description": "Activa a verificación de hash. Non desactive isto a menos que estea seguro das implicacións.",
"storage_template_hash_verification_enabled_description": "Activa a verificación de hash. Non desactive isto a menos que estea seguro das implicacións",
"storage_template_migration": "Migración do modelo de almacenamento",
"storage_template_migration_description": "Aplicar o <link>{template}</link> actual aos activos cargados previamente",
"storage_template_migration_info": "O modelo de almacenamento converterá todas as extensións a minúsculas. Os cambios no modelo só se aplicarán aos activos novos. Para aplicar retroactivamente o modelo aos activos cargados previamente, execute o <link>{job}</link>.",
@@ -332,7 +335,7 @@
"transcoding_max_b_frames": "Máximo de B-frames",
"transcoding_max_b_frames_description": "Valores máis altos melloran a eficiencia da compresión, pero ralentizan a codificación. Pode non ser compatible coa aceleración por hardware en dispositivos máis antigos. 0 desactiva os B-frames, mentres que -1 establece este valor automaticamente.",
"transcoding_max_bitrate": "Bitrate máximo",
"transcoding_max_bitrate_description": "Establecer un bitrate máximo pode facer que os tamaños dos ficheiros sexan máis predicibles a un custo menor para a calidade. A 720p, os valores típicos son 2600 kbit/s para VP9 ou HEVC, ou 4500 kbit/s para H.264. Desactivado se se establece en 0.",
"transcoding_max_bitrate_description": "Establecer unha taxa de bits máxima pode facer que os tamaños dos ficheiros sexan máis predicibles a un custo menor na calidade. En 720p, os valores típicos son 2600 kbit/s para VP9 ou HEVC, ou 4500 kbit/s para H.264. Desactivado se se establece en 0. Cando non se especifica unha unidade, asúmese k (para kbit/s); polo tanto, 5000, 5000k e 5M (para Mbit/s) son equivalentes.",
"transcoding_max_keyframe_interval": "Intervalo máximo de fotogramas clave",
"transcoding_max_keyframe_interval_description": "Establece a distancia máxima de fotogramas entre fotogramas clave. Valores máis baixos empeoran a eficiencia da compresión, pero melloran os tempos de busca e poden mellorar a calidade en escenas con movemento rápido. 0 establece este valor automaticamente.",
"transcoding_optimal_description": "Vídeos cunha resolución superior á obxectivo ou que non estean nun formato aceptado",
@@ -350,7 +353,7 @@
"transcoding_target_resolution": "Resolución obxectivo",
"transcoding_target_resolution_description": "Resolucións máis altas poden preservar máis detalles pero tardan máis en codificarse, teñen tamaños de ficheiro máis grandes e poden reducir a capacidade de resposta da aplicación.",
"transcoding_temporal_aq": "AQ Temporal",
"transcoding_temporal_aq_description": "Aplícase só a NVENC. Aumenta a calidade de escenas de alto detalle e baixo movemento. Pode non ser compatible con dispositivos máis antigos.",
"transcoding_temporal_aq_description": "Aplícase só a NVENC. A Cuantización Adaptativa Temporal aumenta a calidade das escenas con moito detalle e pouco movemento. Pode que non sexa compatible con dispositivos máis antigos.",
"transcoding_threads": "Fíos",
"transcoding_threads_description": "Valores máis altos levan a unha codificación máis rápida, pero deixan menos marxe para que o servidor procese outras tarefas mentres está activo. Este valor non debería ser maior que o número de núcleos da CPU. Maximiza a utilización se se establece en 0.",
"transcoding_tone_mapping": "Mapeo de tons",
@@ -465,9 +468,11 @@
"api_key_description": "Este valor só se mostrará unha vez. Asegúrese de copialo antes de pechar a xanela.",
"api_key_empty": "O nome da súa chave API non pode estar baleiro",
"api_keys": "Chaves API",
"app_architecture_variant": "Variante (Arquitectura)",
"app_bar_signout_dialog_content": "Está seguro de que quere pechar sesión?",
"app_bar_signout_dialog_ok": "Si",
"app_bar_signout_dialog_title": "Pechar sesión",
"app_download_links": "Ligazóns de Descarga da Aplicación",
"app_settings": "Configuración da Aplicación",
"appears_in": "Aparece en",
"apply_count": "Aplicar ({count, number})",
@@ -700,7 +705,6 @@
"comments_and_likes": "Comentarios e Gústames",
"comments_are_disabled": "Os comentarios están desactivados",
"common_create_new_album": "Crear novo álbum",
"common_server_error": "Por favor, comprobe a súa conexión de rede, asegúrese de que o servidor sexa accesible e que as versións da aplicación/servidor sexan compatibles.",
"completed": "Completado",
"confirm": "Confirmar",
"confirm_admin_password": "Confirmar Contrasinal do Administrador",
@@ -882,7 +886,6 @@
"edit_tag": "Editar etiqueta",
"edit_title": "Editar Título",
"edit_user": "Editar usuario",
"edited": "Editado",
"editor": "Editor",
"editor_close_without_save_prompt": "Os cambios non se gardarán",
"editor_close_without_save_title": "Pechar editor?",
@@ -1038,6 +1041,7 @@
"exif_bottom_sheet_description_error": "Erro ao actualizar a descrición",
"exif_bottom_sheet_details": "DETALLES",
"exif_bottom_sheet_location": "LOCALIZACIÓN",
"exif_bottom_sheet_no_description": "Sen descrición",
"exif_bottom_sheet_people": "PERSOAS",
"exif_bottom_sheet_person_add_person": "Engadir nome",
"exit_slideshow": "Saír da Presentación",
@@ -1119,7 +1123,6 @@
"header_settings_field_validator_msg": "O valor non pode estar baleiro",
"header_settings_header_name_input": "Nome da cabeceira",
"header_settings_header_value_input": "Valor da cabeceira",
"headers_settings_tile_subtitle": "Definir cabeceiras de proxy que a aplicación debería enviar con cada solicitude de rede",
"headers_settings_tile_title": "Cabeceiras de proxy personalizadas",
"hi_user": "Ola {name} ({email})",
"hide_all_people": "Ocultar todas as persoas",
@@ -1344,6 +1347,8 @@
"minute": "Minuto",
"minutes": "Minutos",
"missing": "Faltantes",
"mobile_app": "Aplicación Móbil",
"mobile_app_download_onboarding_note": "Podes acceder a estas opcións de novo dende a páxina de Utilidades.",
"model": "Modelo",
"month": "Mes",
"monthly_title_text_date_format": "MMMM a",
@@ -1362,6 +1367,8 @@
"my_albums": "Os meus álbums",
"name": "Nome",
"name_or_nickname": "Nome ou alcume",
"navigate": "Navegar",
"navigate_to_time": "Navegar ata Hora",
"network_requirement_photos_upload": "Usar datos móbiles para facer copia de seguridade das fotos",
"network_requirement_videos_upload": "Usar datos móbiles para facer copia de seguridade dos vídeos",
"network_requirements": "Requisitos de rede",
@@ -1371,6 +1378,7 @@
"never": "Nunca",
"new_album": "Novo Álbum",
"new_api_key": "Nova Chave API",
"new_date_range": "Novo rango de datas",
"new_password": "Novo contrasinal",
"new_person": "Nova persoa",
"new_pin_code": "Novo código PIN",
@@ -1389,22 +1397,30 @@
"no_assets_message": "PREMA PARA CARGAR A SÚA PRIMEIRA FOTO",
"no_assets_to_show": "Non hai activos para mostrar",
"no_cast_devices_found": "Non se atoparon dispositivos de transmisión",
"no_checksum_local": "Non hai suma de verificación dispoñible - non se poden obter os activos locais",
"no_checksum_remote": "Non hai suma de verificación dispoñible - non se pode obter o activo remoto",
"no_duplicates_found": "Non se atoparon duplicados.",
"no_exif_info_available": "Non hai información EXIF dispoñible",
"no_explore_results_message": "Suba máis fotos para explorar a súa colección.",
"no_favorites_message": "Engada favoritos para atopar rapidamente as súas mellores fotos e vídeos",
"no_libraries_message": "Cree unha biblioteca externa para ver as súas fotos e vídeos",
"no_local_assets_found": "Non se atoparon elementos locais con esta suma de comprobación",
"no_locked_photos_message": "As fotos e vídeos no cartafol con chave están ocultos e non aparecerán mentres navegas ou buscas na túa biblioteca.",
"no_name": "Sen Nome",
"no_notifications": "Sen notificacións",
"no_people_found": "Non se atoparon persoas coincidentes",
"no_places": "Sen lugares",
"no_remote_assets_found": "Non se atoparon activos remotos con esta suma de verificación",
"no_results": "Sen resultados",
"no_results_description": "Probe cun sinónimo ou palabra chave máis xeral",
"no_shared_albums_message": "Cree un álbum para compartir fotos e vídeos con persoas na súa rede",
"no_uploads_in_progress": "Non hai cargas en curso",
"not_available": "Non dispoñible",
"not_in_any_album": "Non está en ningún álbum",
"not_selected": "Non seleccionado",
"note_apply_storage_label_to_previously_uploaded assets": "Nota: Para aplicar a Etiqueta de Almacenamento a activos cargados previamente, execute o",
"notes": "Notas",
"nothing_here_yet": "Aínda nada por aquí",
"notification_permission_dialog_content": "Para activar as notificacións, vaia a Axustes e seleccione permitir.",
"notification_permission_list_tile_content": "Conceda permiso para activar as notificacións.",
"notification_permission_list_tile_enable_button": "Activar Notificacións",
@@ -1412,14 +1428,21 @@
"notification_toggle_setting_description": "Activar notificacións por correo electrónico",
"notifications": "Notificacións",
"notifications_setting_description": "Xestionar notificacións",
"oauth": "OAuth",
"obtainium_configurator": "Configurador de Obtainium",
"obtainium_configurator_instructions": "Por favor, crea unha chave API e selecciona unha variante para xerar a túa ligazón de configuración de Obtainium.",
"official_immich_resources": "Recursos Oficiais de Immich",
"offline": "Fóra de liña",
"offset": "Desprazamento",
"ok": "Aceptar",
"oldest_first": "Máis antigos primeiro",
"on_this_device": "Neste dispositivo",
"onboarding": "Primeiros pasos",
"onboarding_locale_description": "Selecciona o teu idioma preferido. Podes cambialo máis tarde na túa configuración.",
"onboarding_privacy_description": "As seguintes funcións (opcionais) dependen de servizos externos e poden desactivarse en calquera momento na configuración da administración.",
"onboarding_server_welcome_description": "Imos configurar a túa instancia con algunhas opcións comúns.",
"onboarding_theme_description": "Elixa un tema de cor para a súa instancia. Pode cambialo máis tarde na súa configuración.",
"onboarding_user_welcome_description": "Imos comezar!",
"onboarding_welcome_user": "Benvido/a, {user}",
"online": "En liña",
"only_favorites": "Só favoritos",
@@ -1429,10 +1452,13 @@
"open_the_search_filters": "Abrir os filtros de busca",
"options": "Opcións",
"or": "ou",
"organize_into_albums": "Organizar en álbums",
"organize_into_albums_description": "Poñer as fotos existentes en álbums usando as opcións de sincronización actuais",
"organize_your_library": "Organizar a súa biblioteca",
"original": "orixinal",
"other": "Outro",
"other_devices": "Outros dispositivos",
"other_entities": "Outras entidades",
"other_variables": "Outras variables",
"owned": "Propio",
"owner": "Propietario",
@@ -1476,6 +1502,8 @@
"permanently_delete_assets_prompt": "Está seguro de que quere eliminar permanentemente {count, plural, one {este activo?} other {estes <b>#</b> activos?}} Isto tamén {count, plural, one {o eliminará do seu} other {os eliminará dos seus}} álbum(s).",
"permanently_deleted_asset": "Activo eliminado permanentemente",
"permanently_deleted_assets_count": "Eliminados permanentemente {count, plural, one {# activo} other {# activos}}",
"permission": "Permiso",
"permission_empty": "O teu permiso non debe estar baleiro",
"permission_onboarding_back": "Atrás",
"permission_onboarding_continue_anyway": "Continuar de todos os xeitos",
"permission_onboarding_get_started": "Comezar",
@@ -1485,6 +1513,9 @@
"permission_onboarding_permission_limited": "Permiso limitado. Para permitir que Immich faga copia de seguridade e xestione toda a súa colección da galería, conceda permisos de fotos e vídeos en Configuración.",
"permission_onboarding_request": "Immich require permiso para ver as súas fotos e vídeos.",
"person": "Persoa",
"person_age_months": "{months, plural, one {# mes} other {# meses}} de idade",
"person_age_year_months": "1 ano, {months, plural, one {# mes} other {# meses}} de idade",
"person_age_years": "{years, plural, one {# ano} other {# anos}} de idade",
"person_birthdate": "Nacido/a o {date}",
"person_hidden": "{name}{hidden, select, true { (oculto)} other {}}",
"photo_shared_all_users": "Parece que compartiu as súas fotos con todos os usuarios ou non ten ningún usuario co que compartir.",
@@ -1493,6 +1524,10 @@
"photos_count": "{count, plural, one {{count, number} Foto} other {{count, number} Fotos}}",
"photos_from_previous_years": "Fotos de anos anteriores",
"pick_a_location": "Elixir unha localización",
"pin_code_changed_successfully": "Código PIN cambiado correctamente",
"pin_code_reset_successfully": "Código PIN restablecido correctamente",
"pin_code_setup_successfully": "Código PIN configurado correctamente",
"pin_verification": "Verificación do código PIN",
"place": "Lugar",
"places": "Lugares",
"places_count": "{count, plural, one {{count, number} Lugar} other {{count, number} Lugares}}",
@@ -1500,22 +1535,26 @@
"play_memories": "Reproducir recordos",
"play_motion_photo": "Reproducir Foto en Movemento",
"play_or_pause_video": "Reproducir ou pausar vídeo",
"please_auth_to_access": "Por favor, autentícate para acceder",
"port": "Porto",
"preferences_settings_subtitle": "Xestionar as preferencias da aplicación",
"preferences_settings_title": "Preferencias",
"preparing": "Preparando",
"preset": "Preaxuste",
"preview": "Vista previa",
"previous": "Anterior",
"previous_memory": "Recordo anterior",
"previous_or_next_day": "Día seguinte / Día anterior",
"previous_or_next_month": "Mes seguinte / Mes anterior",
"previous_or_next_photo": "Foto anterior ou seguinte",
"previous_or_next_year": "Ano seguinte / Ano anterior",
"primary": "Principal",
"privacy": "Privacidade",
"profile": "Perfil",
"profile_drawer_app_logs": "Rexistros",
"profile_drawer_client_out_of_date_major": "A aplicación móbil está desactualizada. Por favor, actualice á última versión maior.",
"profile_drawer_client_out_of_date_minor": "A aplicación móbil está desactualizada. Por favor, actualice á última versión menor.",
"profile_drawer_client_server_up_to_date": "Cliente e Servidor están actualizados",
"profile_drawer_server_out_of_date_major": "O servidor está desactualizado. Por favor, actualice á última versión maior.",
"profile_drawer_server_out_of_date_minor": "O servidor está desactualizado. Por favor, actualice á última versión menor.",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Modo só lectura activado. Mantén premido o ícone do avatar do usuario para saír.",
"profile_image_of_user": "Imaxe de perfil de {user}",
"profile_picture_set": "Imaxe de perfil establecida.",
"public_album": "Álbum público",
@@ -1534,6 +1573,7 @@
"purchase_failed_activation": "Erro ao activar! Por favor, comprobe o seu correo electrónico para a chave do produto correcta!",
"purchase_individual_description_1": "Para un individuo",
"purchase_individual_description_2": "Estado de seguidor/a",
"purchase_individual_title": "Individual",
"purchase_input_suggestion": "Ten unha chave de produto? Introduza a chave a continuación",
"purchase_license_subtitle": "Apoie Immich para contribuír ao desenvolvemento continuado do servizo",
"purchase_lifetime_description": "Contribución vitalicia",
@@ -1551,12 +1591,17 @@
"purchase_server_description_2": "Estado de seguidor/a",
"purchase_server_title": "Servidor",
"purchase_settings_server_activated": "A chave do produto do servidor é xestionada polo administrador",
"query_asset_id": "Consultar o ID do activo",
"queue_status": "Pondo en cola {count}/{total}",
"rating": "Clasificación por estrelas",
"rating_clear": "Borrar clasificación",
"rating_count": "{count, plural, one {# estrela} other {# estrelas}}",
"rating_description": "Mostrar a clasificación EXIF no panel de información",
"reaction_options": "Opcións de reacción",
"read_changelog": "Ler Rexistro de Cambios",
"readonly_mode_disabled": "Modo só lectura desactivado",
"readonly_mode_enabled": "Modo só lectura activado",
"ready_for_upload": "Listo para a carga",
"reassign": "Reasignar",
"reassigned_assets_to_existing_person": "Reasignados {count, plural, one {# activo} other {# activos}} a {name, select, null {unha persoa existente} other {{name}}}",
"reassigned_assets_to_new_person": "Reasignados {count, plural, one {# activo} other {# activos}} a unha nova persoa",
@@ -1579,6 +1624,9 @@
"refreshing_faces": "Actualizando caras",
"refreshing_metadata": "Actualizando metadatos",
"regenerating_thumbnails": "Rexenerando miniaturas",
"remote": "Remoto",
"remote_assets": "Activos Remotos",
"remote_media_summary": "Resumo de Medios Remotos",
"remove": "Eliminar",
"remove_assets_album_confirmation": "Está seguro de que quere eliminar {count, plural, one {# activo} other {# activos}} do álbum?",
"remove_assets_shared_link_confirmation": "Está seguro de que quere eliminar {count, plural, one {# activo} other {# activos}} desta ligazón compartida?",
@@ -1586,10 +1634,15 @@
"remove_custom_date_range": "Eliminar rango de datas personalizado",
"remove_deleted_assets": "Eliminar Activos Eliminados",
"remove_from_album": "Eliminar do álbum",
"remove_from_album_action_prompt": "{count} eliminado(s) do álbum",
"remove_from_favorites": "Eliminar de favoritos",
"remove_from_lock_folder_action_prompt": "{count} eliminado(s) do cartafol con chave",
"remove_from_locked_folder": "Eliminar do cartafol con chave",
"remove_from_locked_folder_confirmation": "Estás seguro de que queres mover estas fotos e vídeos fóra do cartafol con chave? Serán visibles na túa biblioteca.",
"remove_from_shared_link": "Eliminar da ligazón compartida",
"remove_memory": "Eliminar recordo",
"remove_photo_from_memory": "Eliminar foto deste recordo",
"remove_tag": "Eliminar a etiqueta",
"remove_url": "Eliminar URL",
"remove_user": "Eliminar usuario",
"removed_api_key": "Chave API eliminada: {name}",
@@ -1610,24 +1663,36 @@
"reset": "Restablecer",
"reset_password": "Restablecer contrasinal",
"reset_people_visibility": "Restablecer visibilidade das persoas",
"reset_pin_code": "Restablecer o código PIN",
"reset_pin_code_description": "Se esqueciches o teu código PIN, podes contactar co administrador do servidor para restablecelo",
"reset_pin_code_success": "Código PIN restablecido correctamente",
"reset_pin_code_with_password": "Sempre podes restablecer o teu código PIN coa túa contrasinal",
"reset_sqlite": "Restablecer a Base de Datos SQLite",
"reset_sqlite_confirmation": "Estás seguro de que queres restablecer a base de datos SQLite? Terás que pechar a sesión e iniciar sesión de novo para sincronizar os datos outra vez",
"reset_sqlite_success": "Base de datos SQLite restablecida correctamente",
"reset_to_default": "Restablecer ao predeterminado",
"resolve_duplicates": "Resolver duplicados",
"resolved_all_duplicates": "Resolvéronse todos os duplicados",
"restore": "Restaurar",
"restore_all": "Restaurar todo",
"restore_trash_action_prompt": "{count} restaurado(s) do lixo",
"restore_user": "Restaurar usuario",
"restored_asset": "Activo restaurado",
"resume": "Reanudar",
"resume_paused_jobs": "Retomar {count, plural, one {# traballo pausado} other {# traballos pausados}}",
"retry_upload": "Reintentar carga",
"review_duplicates": "Revisar duplicados",
"review_large_files": "Revisar ficheiros grandes",
"role": "Rol",
"role_editor": "Editor",
"role_viewer": "Visor",
"running": "Executándose",
"save": "Gardar",
"save_to_gallery": "Gardar na galería",
"saved_api_key": "Chave API gardada",
"saved_profile": "Perfil gardado",
"saved_settings": "Configuración gardada",
"say_something": "Dicir algo...",
"say_something": "Dicir algo",
"scaffold_body_error_occurred": "Ocorreu un erro",
"scan_all_libraries": "Escanear Todas as Bibliotecas",
"scan_library": "Escanear",
@@ -1670,6 +1735,7 @@
"search_page_no_places": "Non hai Información de Lugares Dispoñible",
"search_page_screenshots": "Capturas de pantalla",
"search_page_search_photos_videos": "Busca as súas fotos e vídeos",
"search_page_selfies": "Selfies",
"search_page_things": "Cousas",
"search_page_view_all_button": "Ver todo",
"search_page_your_activity": "A súa actividade",
@@ -1693,6 +1759,7 @@
"select_album_cover": "Seleccionar portada do álbum",
"select_all": "Seleccionar todo",
"select_all_duplicates": "Seleccionar todos os duplicados",
"select_all_in": "Seleccionar todo en {group}",
"select_avatar_color": "Seleccionar cor do avatar",
"select_face": "Seleccionar cara",
"select_featured_photo": "Seleccionar foto destacada",
@@ -1700,11 +1767,13 @@
"select_keep_all": "Seleccionar conservar todo",
"select_library_owner": "Seleccionar propietario da biblioteca",
"select_new_face": "Seleccionar nova cara",
"select_person_to_tag": "Seleccionar unha persoa para etiquetar",
"select_photos": "Seleccionar fotos",
"select_trash_all": "Seleccionar mover todo ao lixo",
"select_user_for_sharing_page_err_album": "Erro ao crear o álbum",
"selected": "Seleccionado",
"selected_count": "{count, plural, other {# seleccionados}}",
"selected_gps_coordinates": "Coordenadas GPS seleccionadas",
"send_message": "Enviar mensaxe",
"send_welcome_email": "Enviar correo electrónico de benvida",
"server_endpoint": "Punto Final do Servidor",
@@ -1712,6 +1781,7 @@
"server_info_box_server_url": "URL do Servidor",
"server_offline": "Servidor Fóra de Liña",
"server_online": "Servidor En Liña",
"server_privacy": "Privacidade do Servidor",
"server_stats": "Estatísticas do Servidor",
"server_version": "Versión do Servidor",
"set": "Establecer",
@@ -1721,6 +1791,7 @@
"set_date_of_birth": "Establecer data de nacemento",
"set_profile_picture": "Establecer imaxe de perfil",
"set_slideshow_to_fullscreen": "Poñer Presentación a pantalla completa",
"set_stack_primary_asset": "Establecer como activo principal",
"setting_image_viewer_help": "O visor de detalles carga primeiro a miniatura pequena, despois carga a vista previa de tamaño medio (se está activada), e finalmente carga o orixinal (se está activado).",
"setting_image_viewer_original_subtitle": "Activar para cargar a imaxe orixinal a resolución completa (grande!). Desactivar para reducir o uso de datos (tanto na rede como na caché do dispositivo).",
"setting_image_viewer_original_title": "Cargar imaxe orixinal",
@@ -1740,16 +1811,21 @@
"setting_notifications_subtitle": "Axustar as súas preferencias de notificación",
"setting_notifications_total_progress_subtitle": "Progreso xeral da carga (feitos/total activos)",
"setting_notifications_total_progress_title": "Mostrar progreso total da copia de seguridade en segundo plano",
"setting_video_viewer_auto_play_subtitle": "Reproducir vídeos automaticamente cando se abren",
"setting_video_viewer_auto_play_title": "Reproducir vídeos automaticamente",
"setting_video_viewer_looping_title": "Bucle",
"setting_video_viewer_original_video_subtitle": "Ao transmitir un vídeo desde o servidor, reproducir o orixinal aínda que haxa unha transcodificación dispoñible. Pode provocar buffering. Os vídeos dispoñibles localmente reprodúcense en calidade orixinal independentemente desta configuración.",
"setting_video_viewer_original_video_title": "Forzar vídeo orixinal",
"settings": "Configuración",
"settings_require_restart": "Por favor, reinicie Immich para aplicar esta configuración",
"settings_saved": "Configuración gardada",
"setup_pin_code": "Configurar un código PIN",
"share": "Compartir",
"share_action_prompt": "Compartidos {count} activos",
"share_add_photos": "Engadir fotos",
"share_assets_selected": "{count} seleccionados",
"share_dialog_preparing": "Preparando...",
"share_link": "Ligazón para Compartir",
"shared": "Compartido",
"shared_album_activities_input_disable": "O comentario está desactivado",
"shared_album_activity_remove_content": "Quere eliminar esta actividade?",
@@ -1767,6 +1843,7 @@
"shared_link_clipboard_copied_massage": "Copiado ao portapapeis",
"shared_link_clipboard_text": "Ligazón: {link}\nContrasinal: {password}",
"shared_link_create_error": "Erro ao crear ligazón compartida",
"shared_link_custom_url_description": "Acceder a esta ligazón compartida cun URL personalizado",
"shared_link_edit_description_hint": "Introduza a descrición da compartición",
"shared_link_edit_expire_after_option_day": "1 día",
"shared_link_edit_expire_after_option_days": "{count} días",
@@ -1789,8 +1866,10 @@
"shared_link_expires_second": "Caduca en {count} segundo",
"shared_link_expires_seconds": "Caduca en {count} segundos",
"shared_link_individual_shared": "Compartido individualmente",
"shared_link_info_chip_metadata": "EXIF",
"shared_link_manage_links": "Xestionar ligazóns Compartidas",
"shared_link_options": "Opcións da ligazón compartida",
"shared_link_password_description": "Requirir un contrasinal para acceder a esta ligazón compartida",
"shared_links": "Ligazóns compartidas",
"shared_links_description": "Compartir fotos e vídeos cunha ligazón",
"shared_photos_and_videos_count": "{assetCount, plural, other {# fotos e vídeos compartidos.}}",
@@ -1825,6 +1904,7 @@
"show_slideshow_transition": "Mostrar transición da presentación",
"show_supporter_badge": "Insignia de seguidor/a",
"show_supporter_badge_description": "Mostrar unha insignia de seguidor/a",
"show_text_search_menu": "Mostrar o menú de busca de texto",
"shuffle": "Aleatorio",
"sidebar": "Barra lateral",
"sidebar_display_description": "Mostrar unha ligazón á vista na barra lateral",
@@ -1840,12 +1920,14 @@
"sort_created": "Data de creación",
"sort_items": "Número de elementos",
"sort_modified": "Data de modificación",
"sort_newest": "Foto máis recente",
"sort_oldest": "Foto máis antiga",
"sort_people_by_similarity": "Ordenar persoas por similitude",
"sort_recent": "Foto máis recente",
"sort_title": "Título",
"source": "Fonte",
"stack": "Apilar",
"stack_action_prompt": "{count} apilados",
"stack_duplicates": "Apilar duplicados",
"stack_select_one_photo": "Seleccionar unha foto principal para a pila",
"stack_selected_photos": "Apilar fotos seleccionadas",
@@ -1853,16 +1935,20 @@
"stacktrace": "Rastro da Pila",
"start": "Iniciar",
"start_date": "Data de inicio",
"start_date_before_end_date": "A data de inicio debe ser anterior á data de fin",
"state": "Estado",
"status": "Estado",
"stop_casting": "Deixade de emitir",
"stop_motion_photo": "Deter Foto en Movemento",
"stop_photo_sharing": "Deixar de compartir as súas fotos?",
"stop_photo_sharing_description": "{partner} xa non poderá acceder ás súas fotos.",
"stop_sharing_photos_with_user": "Deixar de compartir as súas fotos con este usuario",
"storage": "Almacenamento",
"storage_label": "Etiqueta de almacenamento",
"storage_quota": "Cota de Almacenamento",
"storage_usage": "{used} de {available} usado",
"submit": "Enviar",
"success": "Éxito",
"suggestions": "Suxestións",
"sunrise_on_the_beach": "Amencer na praia",
"support": "Soporte",
@@ -1872,6 +1958,10 @@
"sync": "Sincronizar",
"sync_albums": "Sincronizar álbums",
"sync_albums_manual_subtitle": "Sincronizar todos os vídeos e fotos cargados aos álbums de copia de seguridade seleccionados",
"sync_local": "Sincronizar Local",
"sync_remote": "Sincronizar Remoto",
"sync_status": "Estado de Sincronización",
"sync_status_subtitle": "Ver e xestionar o sistema de sincronización",
"sync_upload_album_setting_subtitle": "Crear e subir as súas fotos e vídeos aos álbums seleccionados en Immich",
"tag": "Etiqueta",
"tag_assets": "Etiquetar activos",
@@ -1882,6 +1972,7 @@
"tag_updated": "Etiqueta actualizada: {tag}",
"tagged_assets": "Etiquetados {count, plural, one {# activo} other {# activos}}",
"tags": "Etiquetas",
"tap_to_run_job": "Tocar para executar tarefa",
"template": "Modelo",
"theme": "Tema",
"theme_selection": "Selección de tema",
@@ -1908,11 +1999,15 @@
"to_change_password": "Cambiar contrasinal",
"to_favorite": "Favorito",
"to_login": "Iniciar sesión",
"to_multi_select": "Para a selección múltiple",
"to_parent": "Ir ao pai",
"to_select": "Para seleccionar",
"to_trash": "Lixo",
"toggle_settings": "Alternar configuración",
"total": "Total",
"total_usage": "Uso total",
"trash": "Lixo",
"trash_action_prompt": "{count} movidos ao lixo",
"trash_all": "Mover Todo ao Lixo",
"trash_count": "Lixo ({count, number})",
"trash_delete_asset": "Mover ao Lixo/Eliminar Activo",
@@ -1926,10 +2021,16 @@
"trash_page_select_assets_btn": "Seleccionar activos",
"trash_page_title": "Lixo ({count})",
"trashed_items_will_be_permanently_deleted_after": "Os elementos no lixo eliminaranse permanentemente despois de {days, plural, one {# día} other {# días}}.",
"troubleshoot": "Solucionar problemas",
"type": "Tipo",
"unable_to_change_pin_code": "Non é posible cambiar o código PIN",
"unable_to_setup_pin_code": "Non é posible configurar o código PIN",
"unarchive": "Desarquivar",
"unarchive_action_prompt": "{count} eliminados do Arquivo",
"unarchived_count": "{count, plural, other {Desarquivados #}}",
"undo": "Desfacer",
"unfavorite": "Desmarcar como favorito",
"unfavorite_action_prompt": "{count} eliminados de Favoritos",
"unhide_person": "Mostrar persoa",
"unknown": "Descoñecido",
"unknown_country": "País Descoñecido",
@@ -1945,15 +2046,23 @@
"unsaved_change": "Cambio sen gardar",
"unselect_all": "Deseleccionar todo",
"unselect_all_duplicates": "Deseleccionar todos os duplicados",
"unselect_all_in": "Desmarcar todo en {group}",
"unstack": "Desapilar",
"unstack_action_prompt": "{count} desapilados",
"unstacked_assets_count": "Desapilados {count, plural, one {# activo} other {# activos}}",
"untagged": "Sen etiquetar",
"up_next": "A continuación",
"update_location_action_prompt": "Actualizar a localización de {count} elementos seleccionados con:",
"updated_at": "Actualizado",
"updated_password": "Contrasinal actualizado",
"upload": "Subir",
"upload_action_prompt": "{count} en cola de espera para cargar",
"upload_concurrency": "Concorrencia de subida",
"upload_details": "Detalles da Carga",
"upload_dialog_info": "Quere facer copia de seguridade do(s) Activo(s) seleccionado(s) no servidor?",
"upload_dialog_title": "Subir Activo",
"upload_errors": "Subida completada con {count, plural, one {# erro} other {# erros}}. Actualice a páxina para ver os novos activos subidos.",
"upload_finished": "Carga finalizada",
"upload_progress": "Restantes {remaining, number} - Procesados {processed, number}/{total, number}",
"upload_skipped_duplicates": "Omitidos {count, plural, one {# activo duplicado} other {# activos duplicados}}",
"upload_status_duplicates": "Duplicados",
@@ -1962,7 +2071,10 @@
"upload_success": "Subida exitosa. Actualice a páxina para ver os novos activos subidos.",
"upload_to_immich": "Subir a Immich ({count})",
"uploading": "Subindo",
"uploading_media": "Cargando multimedia",
"url": "URL",
"usage": "Uso",
"use_biometric": "Usar biometría",
"use_current_connection": "usar conexión actual",
"use_custom_date_range": "Usar rango de datas personalizado no seu lugar",
"user": "Usuario",
@@ -1980,6 +2092,7 @@
"user_usage_stats_description": "Ver estatísticas de uso da conta",
"username": "Nome de usuario",
"users": "Usuarios",
"users_added_to_album_count": "Engadido/s {count, plural, one {# usuario} other {# usuarios}} ao álbum",
"utilities": "Utilidades",
"validate": "Validar",
"validate_endpoint_error": "Por favor, introduza unha URL válida",
@@ -2006,7 +2119,9 @@
"view_next_asset": "Ver seguinte activo",
"view_previous_asset": "Ver activo anterior",
"view_qr_code": "Ver código QR",
"view_similar_photos": "Ver fotos semellantes",
"view_stack": "Ver Pila",
"view_user": "Ver Usuario",
"viewer_remove_from_stack": "Eliminar da Pila",
"viewer_stack_use_as_main_asset": "Usar como Activo Principal",
"viewer_unstack": "Desapilar",
@@ -2017,10 +2132,12 @@
"welcome": "Benvido/a",
"welcome_to_immich": "Benvido/a a Immich",
"wifi_name": "Nome da wifi",
"wrong_pin_code": "Código PIN incorrecto",
"year": "Ano",
"years_ago": "Hai {years, plural, one {# ano} other {# anos}}",
"yes": "Si",
"you_dont_have_any_shared_links": "Non ten ningunha ligazón compartida",
"your_wifi_name": "O nome da súa wifi",
"zoom_image": "Ampliar Imaxe"
"zoom_image": "Ampliar Imaxe",
"zoom_to_bounds": "Axustar ao perímetro"
}

View File

@@ -33,6 +33,7 @@
"add_to_albums": "הוספה לאלבומים",
"add_to_albums_count": "הוסף ({count}) לאלבום",
"add_to_shared_album": "הוספה לאלבום משותף",
"add_upload_to_stack": "הוסף את ההעלאה לערימה",
"add_url": "הוספת קישור",
"added_to_archive": "נוסף לארכיון",
"added_to_favorites": "נוסף למועדפים",
@@ -700,7 +701,6 @@
"comments_and_likes": "תגובות & לייקים",
"comments_are_disabled": "תגובות מושבתות",
"common_create_new_album": "צור אלבום חדש",
"common_server_error": "נא לבדוק את חיבור הרשת שלך, תוודא/י שהשרת נגיש ושגרסאות אפליקציה/שרת תואמות.",
"completed": "הושלמו",
"confirm": "אישור",
"confirm_admin_password": "אישור סיסמת מנהל",
@@ -882,7 +882,6 @@
"edit_tag": "ערוך תג",
"edit_title": "ערוך כותרת",
"edit_user": "ערוך משתמש",
"edited": "נערך",
"editor": "עורך",
"editor_close_without_save_prompt": "השינויים לא יישמרו",
"editor_close_without_save_title": "לסגור את העורך?",
@@ -1119,7 +1118,6 @@
"header_settings_field_validator_msg": "ערך אינו יכול להיות ריק",
"header_settings_header_name_input": "שם כותרת",
"header_settings_header_value_input": "ערך כותרת",
"headers_settings_tile_subtitle": "הגדר כותרות פרוקסי שהיישום צריך לשלוח עם כל בקשת רשת",
"headers_settings_tile_title": "כותרות פרוקסי מותאמות",
"hi_user": "היי {name}, ({email})",
"hide_all_people": "הסתר את כל האנשים",
@@ -1542,13 +1540,9 @@
"privacy": "פרטיות",
"profile": "פרופיל",
"profile_drawer_app_logs": "יומן",
"profile_drawer_client_out_of_date_major": "גרסת היישום לנייד מיושנת. נא לעדכן לגרסה הראשית האחרונה.",
"profile_drawer_client_out_of_date_minor": "גרסת היישום לנייד מיושנת. נא לעדכן לגרסה המשנית האחרונה.",
"profile_drawer_client_server_up_to_date": "היישום והשרת מעודכנים",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "מצב לקריאה בלבד מופעל. לחץ לחיצה ארוכה על סמל היצגן של המשתמש כדי לצאת.",
"profile_drawer_server_out_of_date_major": "השרת אינו מעודכן. נא לעדכן לגרסה הראשית האחרונה.",
"profile_drawer_server_out_of_date_minor": "השרת אינו מעודכן. נא לעדכן לגרסה המשנית האחרונה.",
"profile_image_of_user": "תמונת פרופיל של {user}",
"profile_picture_set": "תמונת פרופיל נבחרה.",
"public_album": "אלבום ציבורי",

View File

@@ -28,8 +28,12 @@
"add_to_album": "एल्बम में डालें",
"add_to_album_bottom_sheet_added": "{album} में डालें",
"add_to_album_bottom_sheet_already_exists": "{album} में पहले से है",
"add_to_album_bottom_sheet_some_local_assets": "कुछ स्थानीय एसेट एल्बम में नहीं जोड़े जा सके",
"add_to_album_toggle": "{album} के लिए चयन टॉगल करें",
"add_to_albums": "एकाधिक एल्बम में डाले",
"add_to_albums_count": "एल्बमों में डालें ({count})",
"add_to_shared_album": "शेयर किए गए एल्बम में डालें",
"add_upload_to_stack": "स्टैक में अपलोड करें",
"add_url": "URL डालें",
"added_to_archive": "संग्रहीत कर दिया गया है",
"added_to_favorites": "पसंदीदा में डाला गया",
@@ -116,11 +120,18 @@
"library_settings_description": "बाहरी संग्रह सेटिंग प्रबंधित करें",
"library_tasks_description": "नई और/या परिवर्तित संपत्तियों के लिए बाहरी लाइब्रेरीज़ को स्कैन करें",
"library_watching_enable_description": "एक्सटर्नल लाइब्रेरीज में बदलावों के लिए निगरानी रखें",
"library_watching_settings": "पुस्तकालय निगरानी (प्रायोगिक)",
"library_watching_settings": "पुस्तकालय निगरानी [प्रायोगिक]",
"library_watching_settings_description": "परिवर्तित फ़ाइलों पर स्वचालित रूप से नज़र रखें",
"logging_enable_description": "लॉगिंग करने देना",
"logging_level_description": "सक्षम होने पर, किस लॉग स्तर का उपयोग करना है।",
"logging_settings": "लॉगिंग",
"machine_learning_availability_checks": "उपलब्धता जांच",
"machine_learning_availability_checks_description": "उपलब्ध मशीन लर्निंग सर्वर का स्वचालित रूप से पता लगाएं और प्राथमिकता दें",
"machine_learning_availability_checks_enabled": "उपलब्धता जांच सक्षम करें",
"machine_learning_availability_checks_interval": "अंतराल की जाँच करें",
"machine_learning_availability_checks_interval_description": "उपलब्धता जांच के बीच मिलीसेकेंड में अंतराल",
"machine_learning_availability_checks_timeout": "अनुरोध समयबाह्य हुआ",
"machine_learning_availability_checks_timeout_description": "उपलब्धता जांच के लिए मिलीसेकंड में समयबाह्य अंतराल",
"machine_learning_clip_model": "क्लिप मॉडल",
"machine_learning_clip_model_description": "CLIP मॉडल का नाम <link>यहां</link> सूचीबद्ध है। ध्यान दें कि मॉडल बदलने पर आपको सभी छवियों के लिए 'स्मार्ट सर्च' जोब फिर से चलाना होगा।",
"machine_learning_duplicate_detection": "डुप्लिकेट का पता लगाना",
@@ -143,6 +154,18 @@
"machine_learning_min_detection_score_description": "किसी चेहरे का पता लगाने के लिए न्यूनतम आत्मविश्वास स्कोर 0-1 होना चाहिए।",
"machine_learning_min_recognized_faces": "निम्नतम पहचाने चेहरे",
"machine_learning_min_recognized_faces_description": "किसी व्यक्ति के लिए पहचाने जाने वाले चेहरों की न्यूनतम संख्या।",
"machine_learning_ocr": "ओ.सी.आर",
"machine_learning_ocr_description": "चित्रों में पाठ को पहचानने के लिए मशीन लर्निंग का उपयोग करें",
"machine_learning_ocr_enabled": "ओ.सी.आर. सक्षम करें",
"machine_learning_ocr_enabled_description": "यदि अक्षम किया गया है, तो चित्रों पर पाठ-पहचान नहीं होगा।",
"machine_learning_ocr_max_resolution": "अधिकतम रिज़ॉल्यूशन",
"machine_learning_ocr_max_resolution_description": "इस रिज़ॉल्यूशन से ऊपर के प्रदर्शन का आकार मूल अनुपात को संरक्षित करते हुए बदल दिया जाएगा। उच्च मान अधिक सटीक होते हैं, लेकिन संसाधित होने में अधिक मेमोरी और समय लगाते हैं।",
"machine_learning_ocr_min_detection_score": "न्यूनतम खोज अंक",
"machine_learning_ocr_min_detection_score_description": "पाठ का पता लगाने के लिए 0-1 के बीच न्यूनतम आत्मविश्वास अंक। कम अंक अधिक पाठ का पता लगाएंगे लेकिन परिणाम गलत हो सकते हैं।",
"machine_learning_ocr_min_recognition_score": "न्यूनतम पहचान अंक",
"machine_learning_ocr_min_score_recognition_description": "पाठ को पहचानने के लिए 0-1 के बीच न्यूनतम आत्मविश्वास अंक। कम अंक अधिक पाठ को पहचानेंगे लेकिन परिणाम गलत हो सकते हैं।",
"machine_learning_ocr_model": "ओसीआर प्रतिमान",
"machine_learning_ocr_model_description": "सर्वर प्रतिमान मोबाइल प्रतिमान की तुलना में अधिक सटीक होते हैं, लेकिन संसाधित होने में अधिक मेमोरी और समय लेते हैं।",
"machine_learning_settings": "मशीन लर्निंग सेटिंग्स",
"machine_learning_settings_description": "मशीन लर्निंग सुविधाओं और सेटिंग्स को प्रबंधित करें",
"machine_learning_smart_search": "स्मार्ट खोज",
@@ -200,6 +223,8 @@
"notification_email_ignore_certificate_errors_description": "टीएलएस प्रमाणपत्र सत्यापन त्रुटियों पर ध्यान न दें (अनुशंसित नहीं)",
"notification_email_password_description": "ईमेल सर्वर से प्रमाणीकरण करते समय उपयोग किया जाने वाला पासवर्ड",
"notification_email_port_description": "ईमेल सर्वर का पोर्ट (जैसे 25, 465, या 587)",
"notification_email_secure": "एस एम टी पी एस",
"notification_email_secure_description": "एस.एम.टी.पी.एस. प्रयोग करें (टी.एल.एस पर एस.एम.टी.पी)",
"notification_email_sent_test_email_button": "परीक्षण ईमेल भेजें और सहेजें",
"notification_email_setting_description": "ईमेल सूचनाएं भेजने के लिए सेटिंग्स",
"notification_email_test_email": "परीक्षण ईमेल भेजें",
@@ -232,6 +257,7 @@
"oauth_storage_quota_default_description": "GiB में कोटा का उपयोग तब किया जाएगा जब कोई दावा प्रदान नहीं किया गया हो ।",
"oauth_timeout": "ब्रेक का अनुरोध",
"oauth_timeout_description": "अनुरोधों के लिए समय-सीमा मिलीसेकंड में",
"ocr_job_description": "चित्रों में पाठ को पहचानने के लिए मशीन लर्निंग का उपयोग करें",
"password_enable_description": "ईमेल और पासवर्ड से लॉगिन करें",
"password_settings": "पासवर्ड लॉग इन",
"password_settings_description": "पासवर्ड लॉगिन सेटिंग प्रबंधित करें",
@@ -322,7 +348,7 @@
"transcoding_max_b_frames": "अधिकतम बी-फ्रेम",
"transcoding_max_b_frames_description": "उच्च मान संपीड़न दक्षता में सुधार करते हैं, लेकिन एन्कोडिंग को धीमा कर देते हैं।",
"transcoding_max_bitrate": "अधिकतम बिटरेट",
"transcoding_max_bitrate_description": "अधिकतम बिटरेट सेट करने से फ़ाइल आकार को गुणवत्ता पर मामूली लागत के साथ अधिक पूर्वानुमानित किया जा सकता है। 720p पर, सामान्य मान VP9 या HEVC के लिए 2600k kbit/s या H.264 के लिए 4500k kbit/s हैं। 0 पर सेट होने पर अक्षम।",
"transcoding_max_bitrate_description": "अधिकतम बिटरेट सेट करने से फ़ाइल आकार को गुणवत्ता पर मामूली लागत के साथ अधिक पूर्वानुमानित किया जा सकता है। 720p पर, सामान्य मान VP9 या HEVC के लिए 2600k kbit/s या H.264 के लिए 4500k kbit/s हैं। 0 पर सेट होने पर अक्षम। जब कोई इकाई निर्दिष्ट नहीं की जाती है, तो k (kbit/s के लिए) मान लिया जाता है; इसलिए 5000, 5000k, और 5M (Mbit/s के लिए) समतुल्य हैं।",
"transcoding_max_keyframe_interval": "अधिकतम मुख्यफ़्रेम अंतराल",
"transcoding_max_keyframe_interval_description": "मुख्यफ़्रेम के बीच अधिकतम फ़्रेम दूरी निर्धारित करता है।",
"transcoding_optimal_description": "लक्ष्य रिज़ॉल्यूशन से अधिक ऊंचे वीडियो या स्वीकृत प्रारूप में नहीं",
@@ -356,6 +382,9 @@
"trash_number_of_days_description": "संपत्तियों को स्थायी रूप से हटाने से पहले उन्हें कूड़ेदान में रखने के लिए दिनों की संख्या",
"trash_settings": "ट्रैश सेटिंग",
"trash_settings_description": "ट्रैश सेटिंग प्रबंधित करें",
"unlink_all_oauth_accounts": "सभी ओ.औथ खातों से संपर्क तोड़ दें",
"unlink_all_oauth_accounts_description": "नए प्रदाता पर सतानांतरण करने से पहले सभी ओ.औथ खातों से संपर्क तोड़ना याद रखें।",
"unlink_all_oauth_accounts_prompt": "क्या आप वाकई सभी ओ.औथ खातों से संपर्क तोड़ना चाहते हैं? इससे प्रत्येक उपयोगकर्ता के लिए ओ.औथ आई.डी रद्द हो जाएगी और इसे पूर्ववत नहीं किया जा सकेगा।",
"user_cleanup_job": "उपयोगकर्ता सफ़ाई",
"user_delete_delay": "<b>{user}</b> के खाते और परिसंपत्तियों को {delay, plural, one {# day} other {# days}} में स्थायी रूप से हटाने के लिए शेड्यूल किया जाएगा।",
"user_delete_delay_settings": "हटाने में देरी",
@@ -389,6 +418,8 @@
"advanced_settings_prefer_remote_title": "दूरस्थ छवियों को प्राथमिकता दें",
"advanced_settings_proxy_headers_subtitle": "प्रत्येक नेटवर्क अनुरोध के साथ इम्मिच द्वारा भेजे जाने वाले प्रॉक्सी हेडर को परिभाषित करें",
"advanced_settings_proxy_headers_title": "प्रॉक्सी हेडर",
"advanced_settings_readonly_mode_subtitle": "रीड-ओनली प्रणाली को सक्षम करता है जहां चित्र को केवल देखा जा सकता है, एकाधिक चित्रों का चयन करना, साझा करना, कास्टिंग करना, हटाना जैसी सभी चीज़ें अक्षम हैं। मुख्य स्क्रीन में उपयोगकर्ता- अवतार के माध्यम से रीड-ओनली प्रणाली को सक्षम/अक्षम करें",
"advanced_settings_readonly_mode_title": "रीड-ओनली प्रणाली",
"advanced_settings_self_signed_ssl_subtitle": "सर्वर एंडपॉइंट के लिए SSL प्रमाणपत्र सत्यापन को छोड़ देता है। स्व-हस्ताक्षरित प्रमाणपत्रों के लिए आवश्यक है।",
"advanced_settings_self_signed_ssl_title": "स्व-हस्ताक्षरित SSL प्रमाणपत्रों की अनुमति दें",
"advanced_settings_sync_remote_deletions_subtitle": "वेब पर कार्रवाई किए जाने पर इस डिवाइस पर किसी संपत्ति को स्वचालित रूप से हटाएँ या पुनर्स्थापित करें",
@@ -416,6 +447,7 @@
"album_remove_user_confirmation": "क्या आप वाकई {user} को हटाना चाहते हैं?",
"album_search_not_found": "आपकी खोज से मेल खाता कोई एल्बम नहीं मिला",
"album_share_no_users": "ऐसा लगता है कि आपने यह एल्बम सभी उपयोगकर्ताओं के साथ साझा कर दिया है या आपके पास साझा करने के लिए कोई उपयोगकर्ता नहीं है।",
"album_summary": "एल्बम सारांश",
"album_updated": "एल्बम अपडेट किया गया",
"album_updated_setting_description": "जब किसी साझा एल्बम में नई संपत्तियाँ हों तो एक ईमेल सूचना प्राप्त करें",
"album_user_left": "बायाँ {album}",
@@ -449,11 +481,16 @@
"api_key_description": "यह की केवल एक बार दिखाई जाएगी। विंडो बंद करने से पहले कृपया इसे कॉपी करना सुनिश्चित करें।।",
"api_key_empty": "आपका एपीआई कुंजी नाम खाली नहीं होना चाहिए",
"api_keys": "एपीआई कीज",
"app_architecture_variant": "रूपान्तर (स्थापत्य/आर्किटेक्चर)",
"app_bar_signout_dialog_content": "क्या आप सुनिश्चित हैं कि आप लॉग आउट करना चाहते हैं?",
"app_bar_signout_dialog_ok": "हाँ",
"app_bar_signout_dialog_title": "लॉग आउट",
"app_download_links": "ऐप डाउनलोड लिंक",
"app_settings": "एप्लिकेशन सेटिंग",
"app_stores": "ऐप स्टोर/गोदाम",
"app_update_available": "आधुनिक ऐप उपलब्ध है",
"appears_in": "प्रकट होता है",
"apply_count": "लागू करें ({count, number})",
"archive": "संग्रहालय",
"archive_action_prompt": "{count} को संग्रह में जोड़ा गया",
"archive_or_unarchive_photo": "फ़ोटो को संग्रहीत या असंग्रहीत करें",
@@ -462,17 +499,17 @@
"archive_size": "पुरालेख आकार",
"archive_size_description": "डाउनलोड के लिए संग्रह आकार कॉन्फ़िगर करें (GiB में)",
"archived": "संग्रहित",
"archived_count": "{count, plural, other {# संग्रहीत किए गए}",
"archived_count": "{count, plural, other {# संग्रहीत किए गए}}",
"are_these_the_same_person": "क्या ये वही व्यक्ति हैं?",
"are_you_sure_to_do_this": "क्या आप वास्तव में इसे करना चाहते हैं?",
"asset_action_delete_err_read_only": "केवल पढ़ने योग्य परिसंपत्ति(ओं) को हटाया नहीं जा सकता, छोड़ा जा सकता है",
"asset_action_share_err_offline": "ऑफ़लाइन परिसंपत्ति(एँ) प्राप्त नहीं की जा सकती, छोड़ी जा रही है",
"asset_added_to_album": "एल्बम में डाला गया",
"asset_adding_to_album": "एल्बम में डाला जा रहा है..।",
"asset_adding_to_album": "एल्बम में डाला जा रहा है",
"asset_description_updated": "संपत्ति विवरण अद्यतन कर दिया गया है",
"asset_filename_is_offline": "एसेट {filename} ऑफ़लाइन है",
"asset_has_unassigned_faces": "एसेट में अनिर्धारित चेहरे हैं",
"asset_hashing": "हैशिंग...।",
"asset_hashing": "हैशिंग",
"asset_list_group_by_sub_title": "द्वारा समूह बनाएं",
"asset_list_layout_settings_dynamic_layout_title": "गतिशील लेआउट",
"asset_list_layout_settings_group_automatically": "स्वचालित",
@@ -486,6 +523,8 @@
"asset_restored_successfully": "संपत्ति(याँ) सफलतापूर्वक पुनर्स्थापित की गईं",
"asset_skipped": "छोड़ा गया",
"asset_skipped_in_trash": "कचरे में",
"asset_trashed": "एसेट नष्ट किया गया",
"asset_troubleshoot": "एसेट समस्या निवारण",
"asset_uploaded": "अपलोड किए गए",
"asset_uploading": "अपलोड हो रहा है…",
"asset_viewer_settings_subtitle": "अपनी गैलरी व्यूअर सेटिंग प्रबंधित करें",
@@ -493,7 +532,9 @@
"assets": "संपत्तियां",
"assets_added_count": "{count, plural, one {# asset} other {# assets}} जोड़ा गया",
"assets_added_to_album_count": "एल्बम में {count, plural, one {# asset} other {# assets}} जोड़ा गया",
"assets_added_to_albums_count": "{assetTotal, plural, one {# asset} other {# assets}} को {albumTotal, plural, one {# album} other {# albums}} से जोड़ा गया",
"assets_cannot_be_added_to_album_count": "{count, plural, one {Asset} other {Assets}} को एल्बम में नहीं जोड़ा जा सकता",
"assets_cannot_be_added_to_albums": "{count, plural, one {Asset} other {Assets}} किसी एल्बम से नहीं जोड़े जा सकते",
"assets_count": "{count, plural, one {# आइटम} other {# आइटम्स}}",
"assets_deleted_permanently": "{count} संपत्ति(याँ) स्थायी रूप से हटा दी गईं",
"assets_deleted_permanently_from_server": "{count} संपत्ति(याँ) इमिच सर्वर से स्थायी रूप से हटा दी गईं",
@@ -510,14 +551,17 @@
"assets_trashed_count": "ट्रैश की गई {count, plural, one {# asset} other {# assets}}",
"assets_trashed_from_server": "{count} संपत्ति(याँ) इमिच सर्वर से कचरे में डाली गईं",
"assets_were_part_of_album_count": "{count, plural, one {Asset was} other {Assets were}}एल्बम का पहले से ही हिस्सा थे",
"assets_were_part_of_albums_count": "{count, plural, one {Asset was} other {Assets were}} पहले ही एल्बम में संयोजित हैं",
"authorized_devices": "अधिकृत उपकरण",
"automatic_endpoint_switching_subtitle": "उपलब्ध होने पर निर्दिष्ट वाई-फाई से स्थानीय रूप से कनेक्ट करें और अन्यत्र वैकल्पिक कनेक्शन का उपयोग करें",
"automatic_endpoint_switching_title": "स्वचालित URL स्विचिंग",
"autoplay_slideshow": "ऑटोप्ले स्लाइड शो",
"back": "वापस",
"back_close_deselect": "वापस जाएँ, बंद करें, या अचयनित करें",
"background_backup_running_error": "परिप्रेक्ष्य बैकअप अभी जारी है, नियमावली बैकअप प्रारंभ नहीं किया जा सकता",
"background_location_permission": "पृष्ठभूमि स्थान अनुमति",
"background_location_permission_content": "पृष्ठभूमि में चलते समय नेटवर्क बदलने के लिए, Immich के पास *हमेशा* सटीक स्थान तक पहुंच होनी चाहिए ताकि ऐप वाई-फाई नेटवर्क का नाम पढ़ सके",
"background_options": "परिप्रेक्ष्य विकल्प",
"backup": "बैकअप",
"backup_album_selection_page_albums_device": "डिवाइस पर एल्बम ({count})",
"backup_album_selection_page_albums_tap": "शामिल करने के लिए टैप करें, बाहर करने के लिए डबल टैप करें",
@@ -525,8 +569,10 @@
"backup_album_selection_page_select_albums": "एल्बम चुनें",
"backup_album_selection_page_selection_info": "चयन जानकारी",
"backup_album_selection_page_total_assets": "कुल अद्वितीय संपत्तियाँ",
"backup_albums_sync": "बैकअप एल्बम का तुल्यकालन",
"backup_all": "सभी",
"backup_background_service_backup_failed_message": "संपत्तियों का बैकअप लेने में विफल. पुनः प्रयास किया जा रहा है…",
"backup_background_service_complete_notification": "एसेट का बैकअप पूरा हुआ",
"backup_background_service_connection_failed_message": "सर्वर से कनेक्ट करने में विफल. पुनः प्रयास किया जा रहा है…",
"backup_background_service_current_upload_notification": "{filename} अपलोड हो रहा है",
"backup_background_service_default_notification": "नई परिसंपत्तियों की जांच की जा रही है…",
@@ -574,6 +620,7 @@
"backup_controller_page_turn_on": "अग्रभूमि बैकअप चालू करें",
"backup_controller_page_uploading_file_info": "फ़ाइल जानकारी अपलोड करना",
"backup_err_only_album": "एकमात्र एल्बम नहीं हटाया जा सकता",
"backup_error_sync_failed": "तुल्यकालन विफल. बैकअप संसाधित नहीं किया जा सकता।",
"backup_info_card_assets": "संपत्ति",
"backup_manual_cancelled": "रद्द",
"backup_manual_in_progress": "अपलोड पहले से ही प्रगति पर है। कुछ देर बाद प्रयास करें",
@@ -635,12 +682,16 @@
"change_password_description": "यह या तो पहली बार है जब आप सिस्टम में साइन इन कर रहे हैं या आपका पासवर्ड बदलने का अनुरोध किया गया है।",
"change_password_form_confirm_password": "पासवर्ड की पुष्टि कीजिये",
"change_password_form_description": "नमस्ते {name},\n\nया तो आप पहली बार सिस्टम में साइन इन कर रहे हैं या फिर आपका पासवर्ड बदलने का अनुरोध किया गया है। कृपया नीचे नया पासवर्ड डालें।",
"change_password_form_log_out": "अन्य सभी डिवाइस को लॉग आउट करें",
"change_password_form_log_out_description": "अन्य सभी डिवाइस से लॉग आउट करना अनुशंसित है",
"change_password_form_new_password": "नया पासवर्ड",
"change_password_form_password_mismatch": "सांकेतिक शब्द मेल नहीं खाते",
"change_password_form_reenter_new_password": "नया पासवर्ड पुनः दर्ज करें",
"change_pin_code": "पिन कोड बदलें",
"change_your_password": "अपना पासवर्ड बदलें",
"changed_visibility_successfully": "दृश्यता सफलतापूर्वक परिवर्तित",
"charging": "चार्जिंग",
"charging_requirement_mobile_backup": "परिप्रेक्ष्य बैकअप के लिए डिवाइस का चार्जिंग पे लगे होना आवश्यक है",
"check_corrupt_asset_backup": "दूषित परिसंपत्ति बैकअप की जाँच करें",
"check_corrupt_asset_backup_button": "जाँच करें",
"check_corrupt_asset_backup_description": "यह जाँच केवल वाई-फ़ाई पर ही करें और सभी संपत्तियों का बैकअप लेने के बाद ही करें। इस प्रक्रिया में कुछ मिनट लग सकते हैं।",
@@ -662,7 +713,7 @@
"client_cert_subtitle": "केवल PKCS12 (.p12, .pfx) फ़ॉर्मैट का समर्थन करता है। प्रमाणपत्र आयात/हटाएँ केवल लॉगिन से पहले उपलब्ध हैं",
"client_cert_title": "SSL क्लाइंट प्रमाणपत्र",
"clockwise": "दक्षिणावर्त",
"close": "बंद",
"close": "बंद करें",
"collapse": "गिर जाना",
"collapse_all": "सभी को संकुचित करें",
"color": "रंग",
@@ -672,9 +723,8 @@
"comments_and_likes": "टिप्पणियाँ और पसंद",
"comments_are_disabled": "टिप्पणियाँ अक्षम हैं",
"common_create_new_album": "नया एल्बम बनाएँ",
"common_server_error": "कृपया अपने नेटवर्क कनेक्शन की जांच करें, सुनिश्चित करें कि सर्वर पहुंच योग्य है और ऐप/सर्वर संस्करण संगत हैं।",
"completed": "पुरा होना",
"confirm": "पुष्टि",
"completed": "पूरित",
"confirm": "पुष्टि करें",
"confirm_admin_password": "एडमिन पासवर्ड की पुष्टि करें",
"confirm_delete_face": "क्या आप वाकई एसेट से {name} चेहरा हटाना चाहते हैं?",
"confirm_delete_shared_link": "क्या आप वाकई इस साझा लिंक को हटाना चाहते हैं?",
@@ -683,13 +733,13 @@
"confirm_password": "पासवर्ड की पुष्टि कीजिये",
"confirm_tag_face": "क्या आप इस चेहरे को {name} के रूप में टैग करना चाहते हैं?",
"confirm_tag_face_unnamed": "क्या आप इस चेहरे को टैग करना चाहते हैं?",
"connected_device": "कनेक्टेड डिवाइस",
"connected_device": "योजित यंत्र",
"connected_to": "से जुड़ा",
"contain": "समाहित",
"context": "संदर्भ",
"continue": "जारी",
"control_bottom_app_bar_create_new_album": "नया एल्बम बनाएँ",
"control_bottom_app_bar_delete_from_immich": "Immich से हटाएं",
"control_bottom_app_bar_delete_from_immich": "इम्मिच से हटाएं",
"control_bottom_app_bar_delete_from_local": "डिवाइस से हटाएं",
"control_bottom_app_bar_edit_location": "स्थान संपादित करें",
"control_bottom_app_bar_edit_time": "तारीख और समय संपादित करें",
@@ -711,6 +761,7 @@
"create": "तैयार करें",
"create_album": "एल्बम बनाओ",
"create_album_page_untitled": "शीर्षकहीन",
"create_api_key": "ऐ.पी.आई. चाभी बनाएं",
"create_library": "लाइब्रेरी बनाएं",
"create_link": "लिंक बनाएं",
"create_link_to_share": "शेयर करने के लिए लिंक बनाएं",
@@ -727,6 +778,7 @@
"create_user": "उपयोगकर्ता बनाइये",
"created": "बनाया",
"created_at": "बनाया था",
"creating_linked_albums": "जुड़े हुए एल्बम बनाए जा रहे हैं..।",
"crop": "छाँटें",
"curated_object_page_title": "चीज़ें",
"current_device": "वर्तमान उपकरण",
@@ -739,6 +791,7 @@
"daily_title_text_date_year": "ई, एमएमएम दिन, वर्ष",
"dark": "डार्क",
"dark_theme": "डार्क थीम टॉगल करें",
"date": "दिनांक",
"date_after": "इसके बाद की तारीख",
"date_and_time": "तिथि और समय",
"date_before": "पहले की तारीख",
@@ -746,6 +799,7 @@
"date_of_birth_saved": "जन्मतिथि सफलतापूर्वक सहेजी गई",
"date_range": "तिथि सीमा",
"day": "दिन",
"days": "दिन",
"deduplicate_all": "सभी को डुप्लिकेट करें",
"deduplication_criteria_1": "छवि का आकार बाइट्स में",
"deduplication_criteria_2": "EXIF डेटा की संख्या",
@@ -834,6 +888,8 @@
"edit_date": "संपादन की तारीख",
"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_prompt": "कृपया एक नया विवरण चुनें:",
"edit_exclusion_pattern": "बहिष्करण पैटर्न संपादित करें",
@@ -850,7 +906,6 @@
"edit_tag": "टैग बदलें",
"edit_title": "शीर्षक संपादित करें",
"edit_user": "यूजर को संपादित करो",
"edited": "संपादित",
"editor": "संपादक",
"editor_close_without_save_prompt": "परिवर्तन सहेजे नहीं जाएँगे",
"editor_close_without_save_title": "संपादक बंद करें?",
@@ -873,7 +928,9 @@
"error": "गलती",
"error_change_sort_album": "एल्बम का क्रम बदलने में असफल रहा",
"error_delete_face": "एसेट से चेहरे को हटाने में त्रुटि हुई",
"error_getting_places": "स्थानों को प्राप्त करने में त्रुटि हुई",
"error_loading_image": "छवि लोड करने में त्रुटि",
"error_loading_partners": "जोड़ीदार लोड करने में त्रुटि हुई: {error}",
"error_saving_image": "त्रुटि: {error}",
"error_tag_face_bounding_box": "चेहरे को टैग करने में त्रुटि बाउंडिंग बॉक्स निर्देशांक प्राप्त नहीं कर सके",
"error_title": "त्रुटि - कुछ गलत हो गया",
@@ -906,6 +963,7 @@
"failed_to_load_notifications": "सूचनाएँ लोड करने में विफल",
"failed_to_load_people": "लोगों को लोड करने में विफल",
"failed_to_remove_product_key": "उत्पाद कुंजी निकालने में विफल",
"failed_to_reset_pin_code": "पिन कोड रीसेट करना विफल हुआ",
"failed_to_stack_assets": "परिसंपत्तियों का ढेर लगाने में विफल",
"failed_to_unstack_assets": "परिसंपत्तियों का ढेर खोलने में विफल",
"failed_to_update_notification_status": "सूचना की स्थिति अपडेट करने में विफल",
@@ -914,6 +972,7 @@
"paths_validation_failed": "{paths, plural, one {# पथ} other {# पथ}} सत्यापन में विफल रहे",
"profile_picture_transparent_pixels": "प्रोफ़ाइल चित्रों में पारदर्शी पिक्सेल नहीं हो सकते।",
"quota_higher_than_disk_size": "आपने डिस्क आकार से अधिक कोटा निर्धारित किया है",
"something_went_wrong": "कुछ त्रुटि हुई",
"unable_to_add_album_users": "उपयोगकर्ताओं को एल्बम में डालने में असमर्थ",
"unable_to_add_assets_to_shared_link": "साझा लिंक में संपत्ति डालने में असमर्थ",
"unable_to_add_comment": "टिप्पणी डालने में असमर्थ",
@@ -999,22 +1058,42 @@
},
"exif": "एक्सिफ",
"exif_bottom_sheet_description": "विवरण जोड़ें..।",
"exif_bottom_sheet_description_error": "विवरण के आधुनीकरण करने में त्रुटि हुई",
"exif_bottom_sheet_details": "विवरण",
"exif_bottom_sheet_location": "स्थान",
"exif_bottom_sheet_no_description": "कोई विवरण नहीं",
"exif_bottom_sheet_people": "लोग",
"exif_bottom_sheet_person_add_person": "नाम डालें",
"exit_slideshow": "स्लाइड शो से बाहर निकलें",
"expand_all": "सभी का विस्तार",
"experimental_settings_new_asset_list_subtitle": "कार्य प्रगति पर है",
"experimental_settings_new_asset_list_title": "प्रयोगात्मक फोटो ग्रिड सक्षम करें",
"experimental_settings_subtitle": "अपने जोखिम पर उपयोग करें!",
"experimental_settings_title": "प्रयोगात्मक",
"expire_after": "एक्सपायर आफ्टर",
"expired": "खत्म हो चुका",
"expires_date": "{date} को समाप्त हो रहा है",
"explore": "अन्वेषण करना",
"explorer": "समन्वेषक",
"export": "निर्यात",
"export_as_json": "JSON के रूप में निर्यात करें",
"export_database": "डेटाबेस निर्यात करें",
"export_database_description": "इस.क्यू.लाइट डेटाबेस निर्यात करें",
"extension": "विस्तार",
"external": "बाहरी",
"external_libraries": "बाहरी पुस्तकालय",
"external_network": "बाहरी नेटवर्क",
"external_network_sheet_info": "When not on the preferred WiFi network, the app will connect to the server through the first of the below URLs it can reach, starting from top to bottom",
"face_unassigned": "सौंपे नहीं गए",
"failed": "विफल हुआ",
"failed_to_authenticate": "प्रमाणित करने में विफल",
"failed_to_load_assets": "एसेट लोड करने में विफल",
"failed_to_load_folder": "फोल्डर लोड करने में विफल",
"favorite": "पसंदीदा",
"favorite_action_prompt": "{count} पसंदीदा संकलन में जोड़े गए",
"favorite_or_unfavorite_photo": "पसंदीदा या नापसंद फोटो",
"favorites": "पसंदीदा",
"favorites_page_no_favorites": "कोई पसंदीदा एसेट नहीं मिले",
"feature_photo_updated": "फ़ीचर फ़ोटो अपडेट किया गया",
"file_name": "फ़ाइल का नाम",
"file_name_or_extension": "फ़ाइल का नाम या एक्सटेंशन",

View File

@@ -208,6 +208,8 @@
"notification_email_ignore_certificate_errors_description": "Ignoriraj pogreške provjere valjanosti TLS certifikata (nije preporučeno)",
"notification_email_password_description": "Lozinka za korištenje pri autentifikaciji s poslužiteljem e-pošte",
"notification_email_port_description": "Port poslužitelja e-pošte (npr. 25, 465, ili 587)",
"notification_email_secure": "SMTPS",
"notification_email_secure_description": "Koristi SMTPS (SMTP umjesto TLS)",
"notification_email_sent_test_email_button": "Pošaljite probni e-mail i spremi",
"notification_email_setting_description": "Postavke za slanje e-mail obavijeste",
"notification_email_test_email": "Pošalji probni e-mail",
@@ -400,6 +402,8 @@
"advanced_settings_prefer_remote_title": "Preferiraj udaljene slike",
"advanced_settings_proxy_headers_subtitle": "Definirajte zaglavlja posrednika koja Immich treba slati sa svakim mrežnim zahtjevom.",
"advanced_settings_proxy_headers_title": "Proxy zaglavlja",
"advanced_settings_readonly_mode_subtitle": "Omogućuje read-only mod u kojem je moguće samo pregledavanje fotografija, radnje poput odabira više fotografija, dijeljenje, proiciranje i brisanje svih fotografija su onemogućene. Upali/ugasi read-only mod preko korisnickog avatara na glavnom ekranu.",
"advanced_settings_readonly_mode_title": "Read-only mod",
"advanced_settings_self_signed_ssl_subtitle": "Preskoči provjeru SSL certifikata za krajnju točku poslužitelja. Potrebno za samo-potpisane certifikate.",
"advanced_settings_self_signed_ssl_title": "Dopusti samo-potpisane SSL certifikate",
"advanced_settings_sync_remote_deletions_subtitle": "Automatski izbriši ili obnovi stavku na ovom uređaju kada se ta radnja izvrši na webu",
@@ -461,10 +465,13 @@
"api_key_description": "Ova će vrijednost biti prikazana samo jednom. Obavezno ju kopirajte prije zatvaranja prozora.",
"api_key_empty": "Naziv vašeg API ključa ne smije biti prazan",
"api_keys": "API Ključevi",
"app_architecture_variant": "Varijanta(Arhitektura)",
"app_bar_signout_dialog_content": "Jeste li sigurni da se želite odjaviti?",
"app_bar_signout_dialog_ok": "Da",
"app_bar_signout_dialog_title": "Odjavi se",
"app_download_links": "Poveznica za preuzimanje aplikacije",
"app_settings": "Postavke aplikacije",
"app_update_available": "Ažuriranje aplikacije je dostupno",
"appears_in": "Pojavljuje se u",
"archive": "Arhiva",
"archive_action_prompt": "{count} dodano u arhivu",
@@ -689,7 +696,6 @@
"comments_and_likes": "Komentari i lajkovi",
"comments_are_disabled": "Komentari onemogućeni",
"common_create_new_album": "Kreiraj novi album",
"common_server_error": "Provjerite svoju mrežnu vezu, osigurajte da je poslužitelj dostupan i da su verzije aplikacije/poslužitelja kompatibilne.",
"completed": "Dovršeno",
"confirm": "Potvrdi",
"confirm_admin_password": "Potvrdite lozinku administratora",
@@ -870,7 +876,6 @@
"edit_tag": "Uredi oznaku",
"edit_title": "Uredi Naslov",
"edit_user": "Uredi korisnika",
"edited": "Uređeno",
"editor": "Urednik",
"editor_close_without_save_prompt": "Promjene neće biti spremljene",
"editor_close_without_save_title": "Zatvoriti uređivač?",
@@ -1101,7 +1106,6 @@
"header_settings_field_validator_msg": "Vrijednost ne može biti prazna",
"header_settings_header_name_input": "Naziv zaglavlja",
"header_settings_header_value_input": "Vrijednost zaglavlja",
"headers_settings_tile_subtitle": "Definirajte proxy zaglavlja koja aplikacija treba slati sa svakim mrežnim zahtjevom",
"headers_settings_tile_title": "Prilagođena proxy zaglavlja",
"hi_user": "Bok {name} ({email})",
"hide_all_people": "Sakrij sve ljude",
@@ -1509,12 +1513,8 @@
"privacy": "Privatnost",
"profile": "Profil",
"profile_drawer_app_logs": "Zapisnici",
"profile_drawer_client_out_of_date_major": "Mobilna aplikacija je zastarjela. Ažurirajte na najnoviju glavnu verziju.",
"profile_drawer_client_out_of_date_minor": "Mobilna aplikacija je zastarjela. Ažurirajte na najnoviju manju verziju.",
"profile_drawer_client_server_up_to_date": "Klijent i poslužitelj su ažurirani",
"profile_drawer_github": "GitHub",
"profile_drawer_server_out_of_date_major": "Poslužitelj je zastario. Ažurirajte na najnoviju glavnu verziju.",
"profile_drawer_server_out_of_date_minor": "Poslužitelj je zastario. Ažurirajte na najnoviju manju verziju.",
"profile_image_of_user": "Profilna slika korisnika {user}",
"profile_picture_set": "Profilna slika postavljena.",
"public_album": "Javni album",

View File

@@ -33,6 +33,7 @@
"add_to_albums": "Hozzáadás albumokhoz",
"add_to_albums_count": "Hozzáadás albumokhoz ({count})",
"add_to_shared_album": "Felvétel megosztott albumba",
"add_upload_to_stack": "Feltöltés hozzáadása csoporthoz",
"add_url": "URL hozzáadása",
"added_to_archive": "Hozzáadva az archívumhoz",
"added_to_favorites": "Hozzáadva a kedvencekhez",
@@ -119,7 +120,7 @@
"library_settings_description": "Külső képtár beállításainak kezelése",
"library_tasks_description": "Külső könyvtárak szkennelése új és/vagy módosított elemek után",
"library_watching_enable_description": "Külső képtár változásainak figyelése",
"library_watching_settings": "Képtár figyelése (KÍSÉRLETI)",
"library_watching_settings": "Könyvtár figyelése [KÍSÉRLETI]",
"library_watching_settings_description": "Megváltozott fájlok automatikus észlelése",
"logging_enable_description": "Naplózás engedélyezése",
"logging_level_description": "Ha be van kapcsolva, milyen részletességű legyen a naplózás.",
@@ -149,10 +150,22 @@
"machine_learning_max_detection_distance_description": "Két kép közötti maximális távolság, amely esetében még duplikációnak tekintendők (0.001 és 0.1 közötti érték). Minél magasabb az érték, annál több lesz a megtalált duplikáció, de a hamis találatok esélye is egyre nagyobb.",
"machine_learning_max_recognition_distance": "Maximum felismerési távolság",
"machine_learning_max_recognition_distance_description": "Két arc közötti maximális távolság, amely alapján ugyanazon személynek tekinthetők, 0 és 2 között. Ennek csökkentése megakadályozhatja, hogy két különböző személyt ugyanannak a személynek jelöljünk, míg a növelése megakadályozhatja, hogy ugyanazt a személyt két különböző személyként jelöljük. Vedd figyelembe, hogy könnyebb két személyt összevonni, mint egy személyt kettéválasztani, ezért lehetőség szerint inkább alacsonyabb küszöbértéket válassz.",
"machine_learning_min_detection_score": "Minimum keresési pontszám",
"machine_learning_min_detection_score": "Minimális észlelési érték",
"machine_learning_min_detection_score_description": "Az arcok észleléséhez szükséges minimális megbízhatósági pontszám 0 és 1 között. Minél alacsonyabb az érték, annál több lesz a megtalált arc, de a hamis találatok esélye is egyre nagyobb.",
"machine_learning_min_recognized_faces": "Minimum felismert arc",
"machine_learning_min_recognized_faces_description": "Egy személy létrehozásához szükséges minimálisan felismert arcok száma. Ennek növelésével a arcfelismerés pontosabbá válik, azonban növeli annak az esélyét, hogy egy arc nem rendelődik hozzá egy személyhez.",
"machine_learning_ocr": "OCR (Optikai karakterfelismerés)",
"machine_learning_ocr_description": "Gépi tanulás használata a képeken megjelenő szövegek felismerésére",
"machine_learning_ocr_enabled": "OCR engedélyezése",
"machine_learning_ocr_enabled_description": "Kikapcsolt állapotban a képeken nem történik szövegfelismerés.",
"machine_learning_ocr_max_resolution": "Maximális felbontás",
"machine_learning_ocr_max_resolution_description": "Az ennél nagyobb felbontású előnézetek átméretezésre kerülnek a képarány megtartásával. A magasabb értékeknél az előnézetek pontosabbak, de ez hosszabb feldolgozási időt és több memóriát igényel.",
"machine_learning_ocr_min_detection_score": "Minimális észlelési érték",
"machine_learning_ocr_min_detection_score_description": "A szövegfelismerés minimális bizalmi szintje 0 és 1 között. Az alacsonyabb érték több szöveget észlelhet, de növeli a téves találatok esélyét.",
"machine_learning_ocr_min_recognition_score": "Minimális felismerési érték",
"machine_learning_ocr_min_score_recognition_description": "A szövegfelismerés minimális bizalmi szintje 0 és 1 között. Az alacsonyabb értékek több szöveget ismerhetnek fel, de növelhetik a téves találatok számát.",
"machine_learning_ocr_model": "Szövegfelismerő modell (OCR)",
"machine_learning_ocr_model_description": "A szervermodellek pontosabbak, mint a mobilmodellek, de hosszabb feldolgozási időt és több memóriát igényelnek.",
"machine_learning_settings": "Gépi Tanulási Beállítások",
"machine_learning_settings_description": "Gépi tanulási funkciók és beállítások kezelése",
"machine_learning_smart_search": "Okos Keresés",
@@ -210,6 +223,8 @@
"notification_email_ignore_certificate_errors_description": "TLS tanúsítvány érvényességi hibák figyelmen kívül hagyása (nem ajánlott)",
"notification_email_password_description": "Az email szerverrel való hitelesítéshez használt jelszó",
"notification_email_port_description": "Email szerver portja (pl. 25, 465 vagy 587)",
"notification_email_secure": "SMTPS",
"notification_email_secure_description": "SMTPS használata (SMTP TLS-en keresztül)",
"notification_email_sent_test_email_button": "Teszt email küldése és mentés",
"notification_email_setting_description": "Email értesítés küldés beállításai",
"notification_email_test_email": "Teszt email küldése",
@@ -242,6 +257,7 @@
"oauth_storage_quota_default_description": "Alapértelmezett tárhely kvóta GiB-ban, amennyiben a felhasználó nem jelezte az igényét.",
"oauth_timeout": "Kérés időkorlátja",
"oauth_timeout_description": "Kérések időkorlátja milliszekundumban",
"ocr_job_description": "Gépi tanulás használata a képeken lévő szövegek felismerésére",
"password_enable_description": "Bejelentkezés emaillel és jelszóval",
"password_settings": "Jelszavas Bejelentkezés",
"password_settings_description": "Jelszavas bejelentkezés beállítások kezelése",
@@ -332,7 +348,7 @@
"transcoding_max_b_frames": "B-képkockák maximum száma",
"transcoding_max_b_frames_description": "Nagyobb értékek megnövelik a tömörítés hatékonyságát, de lelassítják a kódolást. Nem minden hardvereszköz támogatja. A 0 érték kikapcsolja a B-képkockákat, míg -1 esetén a szoftver magának választ értéket.",
"transcoding_max_bitrate": "Maximum bitráta",
"transcoding_max_bitrate_description": "Maximum bitráta beállítása konzisztensebb fájlméretet eredményez egy kevés minőségi romlás árán. 720p esetén jellemző érték lehet 2600 kbit/s a VP9 vagy HEVC kódoláshoz, 4500 kbit/s a H.264 kódoláshoz. A 0 érték esetén nincs maximum bitráta.",
"transcoding_max_bitrate_description": "Maximum bitráta beállítása konzisztensebb fájlméretet eredményez egy kevés minőségi romlás árán. 720p esetén jellemző érték lehet 2600 kbit/s a VP9 vagy HEVC kódoláshoz, 4500 kbit/s a H.264 kódoláshoz. A 0 érték esetén nincs maximum bitráta. Ha nincs megadva mértékegység, alapértelmezetten „k” (kbit/s) értendő - tehát az 5000, 5000k és az 5M (Mbit/s) azonos beállítások.",
"transcoding_max_keyframe_interval": "Maximum kulcskocka intervallum",
"transcoding_max_keyframe_interval_description": "Beállítja a kulcskockák közötti legnagyobb lehetséges távolságot. Alacsony érték csökkenti a tömörítési hatékonyságot, de lejátszás közben az előre- és hátratekerés gyorsabb, valamint javíthatja a gyorsan mozgó jelenetek képminőségét. 0 esetén a szoftver magának állítja be az értéket.",
"transcoding_optimal_description": "A célfelbontásnál nagyobb vagy a nem elfogadott formátumú videókat",
@@ -350,7 +366,7 @@
"transcoding_target_resolution": "Célfelbontás",
"transcoding_target_resolution_description": "A magasabb felbontás jobb minőségben őrzi meg a részleteket, de tovább tart létrehozni, nagyobb fájlmérethez vezet és belassíthatja az alkalmazást.",
"transcoding_temporal_aq": "Időbeli (Temporal) AQ",
"transcoding_temporal_aq_description": "Csak NVENC esetén. Növeli a nagyon részletes, keveset mozgó videóanyag minőségét. Nem minden régi eszköz támogatja.",
"transcoding_temporal_aq_description": "Csak NVENC esetén. Az Időbeli Adaptív Kvantálás növeli a nagyon részletes, keveset mozgó videóanyag minőségét. Nem minden régi eszköz támogatja.",
"transcoding_threads": "Folyamatok száma",
"transcoding_threads_description": "Magas értékek esetén gyorsabban kódol, viszont kevesebb erőforrást hagy a szerver többi folyamatának. Nem ajánlott a CPU magjainak számánál nagyobb érték beállítása. A 0 érték maximalizálja a processzor kihasználását.",
"transcoding_tone_mapping": "Tónusleképezés (tone-mapping)",
@@ -401,11 +417,11 @@
"advanced_settings_prefer_remote_subtitle": "Néhány eszköz fájdalmasan lassan tölti be az eszközön lévő indexképeket. Ez a beállítás inkább a távoli képeket (a szerverről) tölti be helyettük.",
"advanced_settings_prefer_remote_title": "Távoli képek előnyben részesítése",
"advanced_settings_proxy_headers_subtitle": "Add meg azokat a proxy fejléceket, amiket az app elküldjön minden hálózati kérésnél",
"advanced_settings_proxy_headers_title": "Proxy Fejlécek",
"advanced_settings_proxy_headers_title": "Egyedi Proxy Fejlécek [KÍSÉRLETI]",
"advanced_settings_readonly_mode_subtitle": "Bekapcsol egy írásvédett módot ahol csak fotókat nézni lehetséges, egyebek, mint több kép kiválasztása, megosztás, kivetítés és törlés ki vannak kapcsolva. Ki/bekapcsolható a felhasználó ikonjáról a fő képernyőn",
"advanced_settings_readonly_mode_title": "Írásvédett Mód",
"advanced_settings_readonly_mode_title": "Írásvédett mód",
"advanced_settings_self_signed_ssl_subtitle": "Nem ellenőrzi a szerver SSL tanúsítványát. Önaláírt tanúsítvány esetén szükséges beállítás.",
"advanced_settings_self_signed_ssl_title": "Önaláírt SSL tanúsítványok engedélyezése",
"advanced_settings_self_signed_ssl_title": "Önaláírt SSL tanúsítványok engedélyezése [KÍSÉRLETI]",
"advanced_settings_sync_remote_deletions_subtitle": "Automatikusan törölni vagy visszaállítani egy elemet ezen az eszközön, ha az adott műveletet a weben hajtották végre",
"advanced_settings_sync_remote_deletions_title": "Távoli törlések szinkronizálása [KÍSÉRLETI FUNKCIÓ]",
"advanced_settings_tile_subtitle": "Haladó felhasználói beállítások",
@@ -465,10 +481,14 @@
"api_key_description": "Ez csak most az egyszer jelenik meg. Az ablak bezárása előtt feltétlenül másold.",
"api_key_empty": "Az API Kulcs név nem kéne, hogy üres legyen",
"api_keys": "API Kulcsok",
"app_architecture_variant": "Variant (Architektúra)",
"app_bar_signout_dialog_content": "Biztos, hogy ki szeretnél jelentkezni?",
"app_bar_signout_dialog_ok": "Igen",
"app_bar_signout_dialog_title": "Kijelentkezés",
"app_download_links": "App letöltési linkek",
"app_settings": "Alkalmazás Beállítások",
"app_stores": "App Store-ok",
"app_update_available": "Egy új frissítés érhető el",
"appears_in": "Itt szerepel",
"apply_count": "Alkalmaz ({count, number})",
"archive": "Archívum",
@@ -552,6 +572,7 @@
"backup_albums_sync": "Backup albumok szinkronizálása",
"backup_all": "Összes",
"backup_background_service_backup_failed_message": "Az elemek mentése sikertelen. Újrapróbálkozás…",
"backup_background_service_complete_notification": "Az adatok mentése befejeződött",
"backup_background_service_connection_failed_message": "A szerverhez csatlakozás sikertelen. Újrapróbálkozás…",
"backup_background_service_current_upload_notification": "Feltöltés {filename}",
"backup_background_service_default_notification": "Új elemek ellenőrzése…",
@@ -661,6 +682,8 @@
"change_password_description": "Most jelentkezel be a rendszerbe első alkalommal, vagy valaki jelszó-változtatást kezdeményezett. Kérjük, add meg az új jelszót.",
"change_password_form_confirm_password": "Jelszó Megerősítése",
"change_password_form_description": "Szia {name}!\n\nMost jelentkezel be először a rendszerbe vagy más okból szükséges a jelszavad meváltoztatása. Kérjük, add meg új jelszavad.",
"change_password_form_log_out": "Kijelentkezés az összes többi eszközről",
"change_password_form_log_out_description": "Javasolt kijelentkezni az összes többi eszközről",
"change_password_form_new_password": "Új Jelszó",
"change_password_form_password_mismatch": "A beírt jelszavak nem egyeznek",
"change_password_form_reenter_new_password": "Jelszó (Még Egyszer)",
@@ -687,8 +710,8 @@
"client_cert_import_success_msg": "Kliens tanúsítvány importálva",
"client_cert_invalid_msg": "Érvénytelen tanúsítvány fájl vagy hibás jelszó",
"client_cert_remove_msg": "Kliens tanúsítvány eltávolítva",
"client_cert_subtitle": "Csak a PKCS12 (.p12, .pfx) formátum támogatott. Tanúsítvány Importálása/Eltávolítása csak a bejelentkezés előtt lehetséges",
"client_cert_title": "SSL Kliens Tanúsítvány",
"client_cert_subtitle": "Csak a PKCS12 (.p12, .pfx) formátum támogatott. Tanúsítvány importálása/eltávolítása csak a bejelentkezés előtt lehetséges",
"client_cert_title": "SSL kliens tanúsítvány [KÍSÉRLETI]",
"clockwise": "Óramutató járásával megegyező irány",
"close": "Bezárás",
"collapse": "Összecsuk",
@@ -700,7 +723,6 @@
"comments_and_likes": "Megjegyzések és reakciók",
"comments_are_disabled": "A megjegyzések le vannak tiltva",
"common_create_new_album": "Új album létrehozása",
"common_server_error": "Kérjük, ellenőrizd a hálózati kapcsolatot, gondoskodj róla, hogy a szerver elérhető legyen, valamint az alkalmazás és a szerver kompatibilis verziójú legyen.",
"completed": "Kész",
"confirm": "Jóváhagy",
"confirm_admin_password": "Admin Jelszó Újból",
@@ -739,6 +761,7 @@
"create": "Létrehoz",
"create_album": "Album létrehozása",
"create_album_page_untitled": "Névtelen",
"create_api_key": "API kulcs létrehozása",
"create_library": "Képtár Létrehozása",
"create_link": "Link létrehozása",
"create_link_to_share": "Megosztási link létrehozása",
@@ -768,6 +791,7 @@
"daily_title_text_date_year": "yyyy MMM dd (E)",
"dark": "Sötét",
"dark_theme": "Sötét téma kapcsolása",
"date": "Dátum",
"date_after": "Dátumtól",
"date_and_time": "Dátum és Idő",
"date_before": "Dátumig",
@@ -882,7 +906,6 @@
"edit_tag": "Címke módosítása",
"edit_title": "Cím Módosítása",
"edit_user": "Felhasználó módosítása",
"edited": "Módosítva",
"editor": "Szerkesztő",
"editor_close_without_save_prompt": "A változtatások nem lesznek elmentve",
"editor_close_without_save_title": "Szerkesztő bezárása?",
@@ -1038,6 +1061,7 @@
"exif_bottom_sheet_description_error": "Hiba a leírás frissítésekor",
"exif_bottom_sheet_details": "RÉSZLETEK",
"exif_bottom_sheet_location": "HELY",
"exif_bottom_sheet_no_description": "Nincs leírás",
"exif_bottom_sheet_people": "EMBEREK",
"exif_bottom_sheet_person_add_person": "Elnevez",
"exit_slideshow": "Kilépés a Diavetítésből",
@@ -1076,6 +1100,7 @@
"features_setting_description": "Az alkalmazás jellemzőinek kezelése",
"file_name": "Fájlnév",
"file_name_or_extension": "Fájlnév vagy kiterjesztés",
"file_size": "Fájlméret",
"filename": "Fájlnév",
"filetype": "Fájltípus",
"filter": "Szűrő",
@@ -1115,11 +1140,10 @@
"hash_asset": "Elem hash-elése",
"hashed_assets": "Hash-elt elemek",
"hashing": "Hash-elés folyamatban",
"header_settings_add_header_tip": "Fejléc Hozzáadása",
"header_settings_add_header_tip": "Fejléc hozzáadása",
"header_settings_field_validator_msg": "Az érték nem lehet üres",
"header_settings_header_name_input": "Fejléc neve",
"header_settings_header_value_input": "Fejléc értéke",
"headers_settings_tile_subtitle": "Add meg azokat a proxy fejléceket, amiket az app elküldjön minden hálózati kérésnél",
"headers_settings_tile_title": "Egyéni proxy fejlécek",
"hi_user": "Szia {name} ({email})",
"hide_all_people": "Minden személy elrejtése",
@@ -1240,6 +1264,7 @@
"local_media_summary": "Helyi média összegzés",
"local_network": "Helyi hálózat",
"local_network_sheet_info": "Az alkalmazés ezen az URL címen fogja elérni a szervert, ha a megadott WiFi hálózathoz van csatlankozva",
"location": "Lokáció",
"location_permission": "Helymeghatározási engedély",
"location_permission_content": "A Hálózatok automatikus váltásához az Immich-nek szüksége van a pontos helymeghatározásra, hogy az alkalmazás le tudja kérni a Wi-Fi hálózat nevét",
"location_picker_choose_on_map": "Válassz a térképen",
@@ -1344,6 +1369,8 @@
"minute": "Perc",
"minutes": "Percek",
"missing": "Hiányzók",
"mobile_app": "Mobilapplikáció",
"mobile_app_download_onboarding_note": "Töltse le a kiegészítő mobilalkalmazást az alábbi opciók segítségével",
"model": "Modell",
"month": "Hónap",
"monthly_title_text_date_format": "y MMMM",
@@ -1362,6 +1389,8 @@
"my_albums": "Saját albumaim",
"name": "Név",
"name_or_nickname": "Név vagy becenév",
"navigate": "Navigáció",
"navigate_to_time": "Navigálás adott időponthoz",
"network_requirement_photos_upload": "Mobil adatforgalmat használjon a fényképek biztonsági mentéséhez",
"network_requirement_videos_upload": "Mobil adatforgalmat használjon a videók biztonsági mentéséhez",
"network_requirements": "Hálózati követelmények",
@@ -1371,6 +1400,7 @@
"never": "Soha",
"new_album": "Új Album",
"new_api_key": "Új API Kulcs",
"new_date_range": "Új dátumtartomány",
"new_password": "Új jelszó",
"new_person": "Új személy",
"new_pin_code": "Új PIN kód",
@@ -1421,6 +1451,9 @@
"notifications": "Értesítések",
"notifications_setting_description": "Értesítések kezelése",
"oauth": "OAuth",
"obtainium_configurator": "Obtainium Konfigurátor",
"obtainium_configurator_instructions": "Az Obtainium segítségével közvetlenül az Immich GitHub-os kiadásából telepítheted és frissítheted az Android-alkalmazást. Hozz létre egy API-kulcsot és válassz egy változatot az Obtainium konfigurációs hivatkozás elkészítéséhez",
"ocr": "OCR",
"official_immich_resources": "Hivatalos Immich Források",
"offline": "Nem elérhető (offline)",
"offset": "Eltolás",
@@ -1525,6 +1558,9 @@
"play_memories": "Emlékek lejátszása",
"play_motion_photo": "Mozgókép lejátszása",
"play_or_pause_video": "Videó elindítása vagy megállítása",
"play_original_video": "Eredeti videó lejátszása",
"play_original_video_setting_description": "A rendszer az eredeti videók lejátszását részesíti előnyben a transzkódolt verziókkal szemben. Ha az eredeti fájl nem kompatibilis, előfordulhat, hogy nem játszható le megfelelően.",
"play_transcoded_video": "Transzkódolt videó lejátszása",
"please_auth_to_access": "Kérlek jelentkezz be a hozzáféréshez",
"port": "Port",
"preferences_settings_subtitle": "Alkalmazásbeállítások kezelése",
@@ -1542,13 +1578,9 @@
"privacy": "Magánszféra",
"profile": "Profil",
"profile_drawer_app_logs": "Naplók",
"profile_drawer_client_out_of_date_major": "A mobilalkalmazás elavult. Kérjük, frissítsd a legfrisebb főverzióra.",
"profile_drawer_client_out_of_date_minor": "A mobilalkalmazás elavult. Kérjük, frissítsd a legfrisebb alverzióra.",
"profile_drawer_client_server_up_to_date": "A Kliens és a Szerver is naprakész",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Csak olvasható mód engedélyezve. A kilépéshez hosszan nyomja meg a felhasználói avatar ikont.",
"profile_drawer_server_out_of_date_major": "A szerver elavult. Kérjük, frissítsd a legfrisebb főverzióra.",
"profile_drawer_server_out_of_date_minor": "A szerver elavult. Kérjük, frissítsd a legfrisebb alverzióra.",
"profile_image_of_user": "{user} profilképe",
"profile_picture_set": "Profilkép beállítva.",
"public_album": "Nyilvános album",
@@ -1665,6 +1697,7 @@
"reset_sqlite_confirmation": "Biztosan vissza szeretnéd állítani az SQLite adatbázist? Az adatok újraszinkronizálásához ki kell jelentkezed, majd újra be kell lépned",
"reset_sqlite_success": "SQLite adatbázis sikeresen visszaállítva",
"reset_to_default": "Visszaállítás alapállapotba",
"resolution": "Felbontás",
"resolve_duplicates": "Duplikátumok feloldása",
"resolved_all_duplicates": "Minden duplikátum feloldása",
"restore": "Visszaállít",
@@ -1699,6 +1732,9 @@
"search_by_description_example": "Túrázós nap Szapában",
"search_by_filename": "Keresés fájlnév vagy kiterjesztés alapján",
"search_by_filename_example": "például IMG_1234.JPG vagy PNG",
"search_by_ocr": "Keresés szövegfelismeréssel (OCR)",
"search_by_ocr_example": "Latte",
"search_camera_lens_model": "Keresés objektívmodell alapján...",
"search_camera_make": "Kameragyártó keresése...",
"search_camera_model": "Kameramodell keresése...",
"search_city": "Város keresése...",
@@ -1715,6 +1751,7 @@
"search_filter_location_title": "Válassz helyet",
"search_filter_media_type": "Média Típus",
"search_filter_media_type_title": "Válassz média típust",
"search_filter_ocr": "Keresés szövegfelismeréssel (OCR)",
"search_filter_people_title": "Válassz embereket",
"search_for": "Keresés",
"search_for_existing_person": "Már meglévő személy keresése",
@@ -1777,6 +1814,7 @@
"server_online": "Szerver Elérhető",
"server_privacy": "Szerver biztonság",
"server_stats": "Szerver Statisztikák",
"server_update_available": "Szerverfrissítés érhető el",
"server_version": "Szerver Verzió",
"set": "Beállít",
"set_as_album_cover": "Beállítás albumborítóként",
@@ -1805,9 +1843,11 @@
"setting_notifications_subtitle": "Értesítési beállítások módosítása",
"setting_notifications_total_progress_subtitle": "Átfogó feltöltési folyamat (kész/összes elem)",
"setting_notifications_total_progress_title": "Mutassa a háttérben történő mentés teljes folyamatát",
"setting_video_viewer_auto_play_subtitle": "A videók automatikus lejátszása megnyitáskor",
"setting_video_viewer_auto_play_title": "Videók automatikus lejátszása",
"setting_video_viewer_looping_title": "Ismétlés",
"setting_video_viewer_original_video_subtitle": "A szerverről történő videólejátszás során az eredeti videó lejátszása még akkor is, ha van optimalizált, átkódolt verzió. Akadozó lejátszást eredményezhet. A helyi eszközön eleve elérhető videókat mindenképpen eredeti minőségben játszuk le.",
"setting_video_viewer_original_video_title": "Eredeti videó lejátszása",
"setting_video_viewer_original_video_title": "Mindig az eredeti videó lejátszása",
"settings": "Beállítások",
"settings_require_restart": "Ennek a beállításnak az érvénybe lépéséhez indítsd újra az Immich-et",
"settings_saved": "Beállítások elmentve",
@@ -1984,6 +2024,7 @@
"theme_setting_three_stage_loading_title": "Háromlépcsős betöltés engedélyezése",
"they_will_be_merged_together": "Egyesítve lesznek",
"third_party_resources": "Harmadik Féltől Származó Források",
"time": "Idő",
"time_based_memories": "Emlékek idő alapján",
"timeline": "Idővonal",
"timezone": "Időzóna",
@@ -2016,6 +2057,7 @@
"troubleshoot": "Hibaelhárítás",
"type": "Típus",
"unable_to_change_pin_code": "Sikertelen PIN kód változtatás",
"unable_to_check_version": "Az alkalmazás vagy a szerver verziója nem ellenőrizhető",
"unable_to_setup_pin_code": "Sikertelen PIN kód beállítás",
"unarchive": "Archívumból kivesz",
"unarchive_action_prompt": "{count} eltávolítva az Archívumból",

View File

@@ -120,7 +120,7 @@
"library_settings_description": "Kelola pengaturan pustaka eksternal",
"library_tasks_description": "Pindai pustaka eksternal untuk aset baru dan/atau berubah",
"library_watching_enable_description": "Pantau perubahan berkas dalam pustaka eksternal",
"library_watching_settings": "Pemantauan pustaka (UJI COBA)",
"library_watching_settings": "Pemantauan pustaka [UJI COBA]",
"library_watching_settings_description": "Pantau berkas yang telah diubah secara otomatis",
"logging_enable_description": "Aktifkan log",
"logging_level_description": "Ketika diaktifkan, tingkat log apa yang digunakan.",
@@ -154,6 +154,11 @@
"machine_learning_min_detection_score_description": "Nilai keyakinan minimum untuk sebuah wajah untuk dideteksi dari 0 sampai 1. Nilai yang lebih rendah akan mendeteksi lebih banyak wajah tetapi dapat mengakibatkan positif palsu.",
"machine_learning_min_recognized_faces": "Wajah terkenal minimum",
"machine_learning_min_recognized_faces_description": "Jumlah minimum wajah yang dikenal untuk seseorang untuk dibuat. Meningkatkan ini membuat Pengenalan Wajah lebih tepat dengan kemungkinan bahwa sebuah wajah tidak dikaitkan dengan seseorang.",
"machine_learning_ocr": "OCR",
"machine_learning_ocr_description": "Gunakan pembelajaran mesin untuk mengenali teks di dalam gambar",
"machine_learning_ocr_enabled": "Aktfikan OCR",
"machine_learning_ocr_enabled_description": "Jika dinonaktifkan, gambar-gambar tidak akan mengalami pengenalan teks.",
"machine_learning_ocr_max_resolution": "Resolusi maksimum",
"machine_learning_settings": "Pengaturan Pembelajaran Mesin",
"machine_learning_settings_description": "Keola fitur dan pengaturan pembelajaran mesin",
"machine_learning_smart_search": "Pencarian Pintar",
@@ -701,7 +706,6 @@
"comments_and_likes": "Komentar & suka",
"comments_are_disabled": "Komentar dinonaktifkan",
"common_create_new_album": "Buat album baru",
"common_server_error": "Koneksi gagal, pastikan server dapat diakses dan memiliki versi yang kompatibel.",
"completed": "Selesai",
"confirm": "Konfirmasi",
"confirm_admin_password": "Konfirmasi Kata Sandi Admin",
@@ -883,7 +887,6 @@
"edit_tag": "Ubah tag",
"edit_title": "Sunting Judul",
"edit_user": "Sunting pengguna",
"edited": "Disunting",
"editor": "Penyunting",
"editor_close_without_save_prompt": "Perubahan tidak akan di simpan",
"editor_close_without_save_title": "Tutup editor?",
@@ -1116,11 +1119,10 @@
"hash_asset": "Aset Hash",
"hashed_assets": "Aset yang di-hash",
"hashing": "Proses Hash",
"header_settings_add_header_tip": "Tambahkan Header",
"header_settings_add_header_tip": "Tambahkan header",
"header_settings_field_validator_msg": "Nilai tidak boleh kosong",
"header_settings_header_name_input": "Nama Header",
"header_settings_header_value_input": "Nilai Header",
"headers_settings_tile_subtitle": "Menentukan header proksi yang akan dikirimkan oleh aplikasi pada setiap permintaan jaringan",
"header_settings_header_name_input": "Nama header",
"header_settings_header_value_input": "Nilai header",
"headers_settings_tile_title": "Header proksi kustom",
"hi_user": "Hai {name} ({email})",
"hide_all_people": "Sembunyikan semua orang",
@@ -1543,13 +1545,9 @@
"privacy": "Privasi",
"profile": "Profil",
"profile_drawer_app_logs": "Log",
"profile_drawer_client_out_of_date_major": "Versi app seluler ini sudah kedaluwarsa. Silakan perbarui ke versi major terbaru.",
"profile_drawer_client_out_of_date_minor": "Versi app seluler ini sudah kedaluwarsa. Silakan perbarui ke versi minor terbaru.",
"profile_drawer_client_server_up_to_date": "Klien dan server menjalankan versi terbaru",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Mode baca-saja aktif. Tekan lama ikon avatar pengguna untuk keluar.",
"profile_drawer_server_out_of_date_major": "Versi server ini telah kedaluwarsa. Silakan perbarui ke versi major terbaru.",
"profile_drawer_server_out_of_date_minor": "Versi server ini telah kedaluwarsa. Silakan perbarui ke versi minor terbaru.",
"profile_image_of_user": "Foto profil dari {user}",
"profile_picture_set": "Foto profil ditetapkan.",
"public_album": "Album publik",

View File

@@ -120,7 +120,7 @@
"library_settings_description": "Gestisci le impostazioni della libreria esterna",
"library_tasks_description": "Scansiona le librerie esterne per risorse nuove o modificate",
"library_watching_enable_description": "Osserva le librerie esterne per cambiamenti",
"library_watching_settings": "Osserva librerie (SPERIMENTALE)",
"library_watching_settings": "Osserva librerie [SPERIMENTALE]",
"library_watching_settings_description": "Osserva automaticamente i cambiamenti dei file",
"logging_enable_description": "Attiva il logging",
"logging_level_description": "Quando attivato, che livello di log utilizzare.",
@@ -154,6 +154,18 @@
"machine_learning_min_detection_score_description": "Punteggio di confidenza minimo per rilevare un volto, da 0 a 1. Valori più bassi rileveranno più volti, ma potrebbero generare risultati fasulli.",
"machine_learning_min_recognized_faces": "Minimo numero di volti rilevati",
"machine_learning_min_recognized_faces_description": "Il numero minimo di volti riconosciuti per creare una persona. Aumentando questo valore si rende il riconoscimento facciale più preciso, ma aumenta la possibilità che un volto non venga assegnato a una persona.",
"machine_learning_ocr": "OCR",
"machine_learning_ocr_description": "Utilizza il machine learning per riconoscere il testo nelle immagini",
"machine_learning_ocr_enabled": "Attiva OCR",
"machine_learning_ocr_enabled_description": "Se disattivato, le immagini non saranno sottoposte al riconoscimento del testo.",
"machine_learning_ocr_max_resolution": "Massima risoluzione",
"machine_learning_ocr_max_resolution_description": "L'anteprima maggiore di questa risoluzione verrà ridimensionata preservando le proporzioni. Valori maggiori sono più accurati, ma impiegano più tempo per essere processati e usano più memoria.",
"machine_learning_ocr_min_detection_score": "Punteggio minimo di rilevamento",
"machine_learning_ocr_min_detection_score_description": "Punteggio minimo di affidabilità per il rilevamento del testo da 0 a 1. Valori più bassi rileveranno più testo, ma potrebbero generare falsi positivi.",
"machine_learning_ocr_min_recognition_score": "Punteggio minimo di riconoscimento",
"machine_learning_ocr_min_score_recognition_description": "Punteggio minimo di affidabilità per il riconoscimento del testo da 0 a 1. Valori più bassi rileveranno più testo, ma potrebbero generare falsi positivi.",
"machine_learning_ocr_model": "Modello OCR",
"machine_learning_ocr_model_description": "I modelli server sono più accurati dei modelli mobile, ma impiegano più tempo nel processo e utilizzano più memoria.",
"machine_learning_settings": "Impostazioni Machine Learning",
"machine_learning_settings_description": "Gestisci le impostazioni e le funzionalità del machine learning",
"machine_learning_smart_search": "Ricerca Intelligente",
@@ -211,6 +223,8 @@
"notification_email_ignore_certificate_errors_description": "Ignora errori TLS di validazione del certificato (sconsigliato)",
"notification_email_password_description": "Password da usare per l'autenticazione con il server email",
"notification_email_port_description": "Porta del server email (es. 25, 465, 587)",
"notification_email_secure": "SMTPS",
"notification_email_secure_description": "Usa SMTPS (SMTP over TLS)",
"notification_email_sent_test_email_button": "Invia email di prova e salva",
"notification_email_setting_description": "Impostazioni per le notifiche via email",
"notification_email_test_email": "Invia email di prova",
@@ -243,6 +257,7 @@
"oauth_storage_quota_default_description": "Limite in GiB da usare quanto nessuna dichiarazione di ambito(claim) è stata fornita.",
"oauth_timeout": "Timeout Richiesta",
"oauth_timeout_description": "Timeout per le richieste, espresso in millisecondi",
"ocr_job_description": "Utilizza il machine learning per riconoscere il testo nelle immagini",
"password_enable_description": "Login con email e password",
"password_settings": "Login con password",
"password_settings_description": "Gestisci impostazioni del login con password",
@@ -333,7 +348,7 @@
"transcoding_max_b_frames": "B-frames Massimi",
"transcoding_max_b_frames_description": "Valori più alti migliorano l'efficienza di compressione, ma rallentano l'encoding. Potrebbero non essere compatibili con l'accelerazione hardware su dispositivi più vecchi. 0 disabilita i B-frames, mentre -1 imposta questo valore automaticamente.",
"transcoding_max_bitrate": "Bitrate massimo",
"transcoding_max_bitrate_description": "Impostare un bitrate massimo può rendere le dimensioni dei file più prevedibili a un costo minore per la qualità. A 720p, i valori tipici sono 2600 kbit/s per VP9 o HEVC, o 4500 kbit/s per H.264. Disabilitato se impostato su 0.",
"transcoding_max_bitrate_description": "Impostare un bitrate massimo può rendere le dimensioni dei file più prevedibili a un costo minore per la qualità. A 720p, i valori tipici sono 2600 kbit/s per VP9 o HEVC, o 4500 kbit/s per H.264. Disabilitato se impostato su 0. Quando non viene specificata alcuna unità, si presume k (per kbit/s); pertanto 5000, 5000k e 5M (per Mbit/s) sono equivalenti.",
"transcoding_max_keyframe_interval": "Intervallo massimo dei keyframe",
"transcoding_max_keyframe_interval_description": "Imposta la distanza massima tra i keyframe. Valori più bassi peggiorano l'efficienza di compressione, però migliorano i tempi di ricerca e possono migliorare la qualità nelle scene con movimenti rapidi. 0 imposta questo valore automaticamente.",
"transcoding_optimal_description": "Video con risoluzione più alta rispetto alla risoluzione desiderata o in formato non accettato",
@@ -351,7 +366,7 @@
"transcoding_target_resolution": "Risoluzione desiderata",
"transcoding_target_resolution_description": "Risoluzioni più elevate possono preservare più dettagli ma richiedono più tempo per la codifica, producono file di dimensioni maggiori e possono ridurre la reattività dell'applicazione.",
"transcoding_temporal_aq": "AQ temporale",
"transcoding_temporal_aq_description": "Si applica solo a NVENC. Aumenta la qualità delle scene con molto dettaglio e poco movimento. Potrebbe non essere compatibile con dispositivi più vecchi.",
"transcoding_temporal_aq_description": "Si applica solo a NVENC. La Quantizzazione Adattiva Temporale aumenta la qualità delle scene con molto dettaglio e poco movimento. Potrebbe non essere compatibile con dispositivi più vecchi.",
"transcoding_threads": "Thread",
"transcoding_threads_description": "Valori più alti portano a una codifica più veloce, ma lasciano meno spazio al server per elaborare altre attività durante l'attività. Questo valore non dovrebbe essere superiore al numero di core CPU. Massimizza l'utilizzo se impostato su 0.",
"transcoding_tone_mapping": "Mappatura della tonalità",
@@ -402,11 +417,11 @@
"advanced_settings_prefer_remote_subtitle": "Alcuni dispositivi sono estremamente lenti a caricare le miniature da risorse locali. Attiva questa impostazione per caricare invece le immagini remote.",
"advanced_settings_prefer_remote_title": "Preferisci immagini remote",
"advanced_settings_proxy_headers_subtitle": "Definisci gli header per i proxy che Immich dovrebbe inviare con ogni richiesta di rete",
"advanced_settings_proxy_headers_title": "Header Proxy",
"advanced_settings_proxy_headers_title": "Header Proxy Personalizzato [SPERIMENTALE]",
"advanced_settings_readonly_mode_subtitle": "Abilita la modalità di sola lettura in cui le foto possono essere solo visualizzate, mentre funzioni come la selezione di più immagini, la condivisione, la trasmissione e l'eliminazione sono tutte disabilitate. Abilita/Disabilita la sola lettura tramite l'avatar dell'utente dalla schermata principale",
"advanced_settings_readonly_mode_title": "Modalità di sola lettura",
"advanced_settings_self_signed_ssl_subtitle": "Salta la verifica dei certificati SSL del server. Richiesto con l'uso di certificati self-signed.",
"advanced_settings_self_signed_ssl_title": "Consenti certificati SSL self-signed",
"advanced_settings_self_signed_ssl_title": "Consenti certificati SSL self-signed [SPERIMENTALE]",
"advanced_settings_sync_remote_deletions_subtitle": "Rimuovi o ripristina automaticamente un elemento su questo dispositivo quando l'azione è stata fatta via web",
"advanced_settings_sync_remote_deletions_title": "Sincronizza le cancellazioni remote [SPERIMENTALE]",
"advanced_settings_tile_subtitle": "Impostazioni avanzate dell'utente",
@@ -466,10 +481,14 @@
"api_key_description": "Questo valore verrà mostrato una sola volta. Assicurati di copiarlo prima di chiudere la finestra.",
"api_key_empty": "Il nome della chiave API non dovrebbe essere vuoto",
"api_keys": "Chiavi API",
"app_architecture_variant": "Variante (Architettura)",
"app_bar_signout_dialog_content": "Sei sicuro di volerti disconnettere?",
"app_bar_signout_dialog_ok": "Si",
"app_bar_signout_dialog_title": "Disconnetti",
"app_download_links": "Link per il download dell'app",
"app_settings": "Impostazioni Applicazione",
"app_stores": "App Stores",
"app_update_available": "Aggiornamento App disponibile",
"appears_in": "Compare in",
"apply_count": "Applica ({count, number})",
"archive": "Archivio",
@@ -553,6 +572,7 @@
"backup_albums_sync": "Sincronizzazione album di backup",
"backup_all": "Tutti",
"backup_background_service_backup_failed_message": "È stato impossibile fare il backup dei contenuti. Riprovo…",
"backup_background_service_complete_notification": "Backup completato",
"backup_background_service_connection_failed_message": "Impossibile connettersi al server. Riprovo…",
"backup_background_service_current_upload_notification": "Caricamento di {filename} in corso",
"backup_background_service_default_notification": "Ricerca di nuovi contenuti…",
@@ -662,6 +682,8 @@
"change_password_description": "È stato richiesto di cambiare la password (oppure è la prima volta che accedi). Inserisci la tua nuova password qui sotto.",
"change_password_form_confirm_password": "Conferma Password",
"change_password_form_description": "Ciao {name},\n\nQuesto è la prima volta che accedi al sistema oppure è stato fatto una richiesta di cambiare la password. Per favore inserisca la nuova password qui sotto.",
"change_password_form_log_out": "Log out da tutti gli altri dispositivi",
"change_password_form_log_out_description": "È consigliato il log out da tutti gli altri dispositivi",
"change_password_form_new_password": "Nuova Password",
"change_password_form_password_mismatch": "Le password non coincidono",
"change_password_form_reenter_new_password": "Inserisci ancora la nuova password",
@@ -689,7 +711,7 @@
"client_cert_invalid_msg": "File certificato invalido o password errata",
"client_cert_remove_msg": "Certificato client rimosso",
"client_cert_subtitle": "Supporta solo il formato PKCS12 (.p12, .pfx). L'importazione/rimozione del certificato è disponibile solo prima del login",
"client_cert_title": "Certificato Client SSL",
"client_cert_title": "Certificato Client SSL [SPERIMENTALE]",
"clockwise": "Senso orario",
"close": "Chiudi",
"collapse": "Restringi",
@@ -701,7 +723,6 @@
"comments_and_likes": "Commenti & mi piace",
"comments_are_disabled": "I commenti sono disabilitati",
"common_create_new_album": "Crea nuovo Album",
"common_server_error": "Verifica la connessione di rete, assicurati che il server sia raggiungibile e che le versioni dellapp e del server siano compatibili.",
"completed": "Completato",
"confirm": "Conferma",
"confirm_admin_password": "Conferma password dell'amministratore",
@@ -740,6 +761,7 @@
"create": "Crea",
"create_album": "Crea album",
"create_album_page_untitled": "Senza titolo",
"create_api_key": "Crea chiave API",
"create_library": "Crea libreria",
"create_link": "Crea link",
"create_link_to_share": "Crea link da condividere",
@@ -769,6 +791,7 @@
"daily_title_text_date_year": "E, dd MMM, yyyy",
"dark": "Scuro",
"dark_theme": "Imposta tema scuro",
"date": "Data",
"date_after": "Dopo la data",
"date_and_time": "Data e ora",
"date_before": "Prima della data",
@@ -883,7 +906,6 @@
"edit_tag": "Modifica tag",
"edit_title": "Modifica Titolo",
"edit_user": "Modifica utente",
"edited": "Modificato",
"editor": "Editor",
"editor_close_without_save_prompt": "Le modifiche non verranno salvate",
"editor_close_without_save_title": "Vuoi chiudere l'editor?",
@@ -1078,6 +1100,7 @@
"features_setting_description": "Gestisci le funzionalità dell'app",
"file_name": "Nome file",
"file_name_or_extension": "Nome file o estensione",
"file_size": "Dimensione del file",
"filename": "Nome file",
"filetype": "Tipo file",
"filter": "Filtro",
@@ -1117,11 +1140,10 @@
"hash_asset": "Risorsa hash",
"hashed_assets": "Risorse hash",
"hashing": "Hashing",
"header_settings_add_header_tip": "Aggiungi Header",
"header_settings_add_header_tip": "Aggiungi header",
"header_settings_field_validator_msg": "Il valore non può essere vuoto",
"header_settings_header_name_input": "Nome header",
"header_settings_header_value_input": "Valore header",
"headers_settings_tile_subtitle": "Definisci gli header per i proxy che l'app deve inviare con ogni richiesta di rete",
"headers_settings_tile_title": "Header proxy personalizzati",
"hi_user": "Ciao {name} ({email})",
"hide_all_people": "Nascondi tutte le persone",
@@ -1242,6 +1264,7 @@
"local_media_summary": "Riepilogo dei Media Locali",
"local_network": "Rete locale",
"local_network_sheet_info": "L'app si collegherà al server tramite questo URL quando è in uso la rete Wi-Fi specificata",
"location": "Posizione",
"location_permission": "Permesso di localizzazione",
"location_permission_content": "Per usare la funzione di cambio automatico, Immich necessita del permesso di localizzazione così da poter leggere il nome della rete Wi-Fi in uso",
"location_picker_choose_on_map": "Scegli una mappa",
@@ -1346,6 +1369,8 @@
"minute": "Minuto",
"minutes": "Minuti",
"missing": "Mancanti",
"mobile_app": "App Cellulare",
"mobile_app_download_onboarding_note": "Scarica lapp mobile dedicata utilizzando una delle seguenti opzioni",
"model": "Modello",
"month": "Mese",
"monthly_title_text_date_format": "MMMM y",
@@ -1364,6 +1389,8 @@
"my_albums": "I miei album",
"name": "Nome",
"name_or_nickname": "Nome o soprannome",
"navigate": "Naviga",
"navigate_to_time": "Navigazione alla data",
"network_requirement_photos_upload": "Utilizza la connessione dati per il backup delle foto",
"network_requirement_videos_upload": "Utilizza la connessione dati per il backup dei video",
"network_requirements": "Requisiti di rete",
@@ -1373,6 +1400,7 @@
"never": "Mai",
"new_album": "Nuovo Album",
"new_api_key": "Nuova Chiave di API",
"new_date_range": "Nuovo intervallo di date",
"new_password": "Nuova password",
"new_person": "Nuova persona",
"new_pin_code": "Nuovo codice PIN",
@@ -1423,6 +1451,9 @@
"notifications": "Notifiche",
"notifications_setting_description": "Gestisci notifiche",
"oauth": "OAuth",
"obtainium_configurator": "Configuratore Obtainium",
"obtainium_configurator_instructions": "Utilizza Obtainium per installare e aggiornare l'app Android direttamente dalla versione rilasciata su GitHub da Immich. Crea una chiave API e seleziona una variante per creare il tuo link di configurazione Obtainium",
"ocr": "OCR",
"official_immich_resources": "Risorse Ufficiali Immich",
"offline": "Offline",
"offset": "Offset",
@@ -1527,6 +1558,9 @@
"play_memories": "Riproduci ricordi",
"play_motion_photo": "Riproduci foto in movimento",
"play_or_pause_video": "Avvia o metti in pausa il video",
"play_original_video": "Riproduci il video originale",
"play_original_video_setting_description": "Preferisci la riproduzione dei video originali anzichè ricodificarli. Se l'originale non è compatibile non sarà riprodotto correttamente.",
"play_transcoded_video": "Riproduci video ricodificato",
"please_auth_to_access": "Autenticati per accedere",
"port": "Porta",
"preferences_settings_subtitle": "Gestisci le preferenze dell'app",
@@ -1544,13 +1578,9 @@
"privacy": "Privacy",
"profile": "Profilo",
"profile_drawer_app_logs": "Registri",
"profile_drawer_client_out_of_date_major": "Lapp non è aggiornata. Aggiorna allultima versione principale.",
"profile_drawer_client_out_of_date_minor": "L'applicazione non è aggiornata. Aggiorna all'ultima versione minore.",
"profile_drawer_client_server_up_to_date": "Client e server sono aggiornati",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Modalità di sola lettura abilitata. Tieni premuto sull'avatar dell'utente per disabilitarla.",
"profile_drawer_server_out_of_date_major": "Il server non è aggiornato. Aggiorna all'ultima versione principale.",
"profile_drawer_server_out_of_date_minor": "Il server non è aggiornato. Aggiorna all'ultima versione minore.",
"profile_image_of_user": "Immagine profilo di {user}",
"profile_picture_set": "Foto profilo impostata.",
"public_album": "Album pubblico",
@@ -1667,6 +1697,7 @@
"reset_sqlite_confirmation": "Vuoi davvero reimpostare il database SQLite? Dovrai disconnetterti e riconnetterti per risincronizzare i dati",
"reset_sqlite_success": "Database SQLite reimpostato correttamente",
"reset_to_default": "Ripristina i valori predefiniti",
"resolution": "Risoluzione",
"resolve_duplicates": "Risolvi duplicati",
"resolved_all_duplicates": "Tutti i duplicati sono stati risolti",
"restore": "Ripristina",
@@ -1701,6 +1732,9 @@
"search_by_description_example": "Giornata di escursioni a Sapa",
"search_by_filename": "Cerca per nome del file o estensione",
"search_by_filename_example": "es. IMG_1234.JPG o PNG",
"search_by_ocr": "Ricerca tramite OCR",
"search_by_ocr_example": "Caffè Latte",
"search_camera_lens_model": "Cerca il modello del'obiettivo...",
"search_camera_make": "Cerca produttore fotocamera...",
"search_camera_model": "Cerca modello fotocamera...",
"search_city": "Cerca città...",
@@ -1717,6 +1751,7 @@
"search_filter_location_title": "Seleziona posizione",
"search_filter_media_type": "Tipo di media",
"search_filter_media_type_title": "Seleziona il tipo di media",
"search_filter_ocr": "Cerca tramite OCR",
"search_filter_people_title": "Seleziona persone",
"search_for": "Cerca per",
"search_for_existing_person": "Cerca per persona esistente",
@@ -1779,6 +1814,7 @@
"server_online": "Server Online",
"server_privacy": "Privacy del Server",
"server_stats": "Statistiche Server",
"server_update_available": "Aggiornamento Server disponibile",
"server_version": "Versione Server",
"set": "Imposta",
"set_as_album_cover": "Imposta come copertina album",
@@ -1807,6 +1843,8 @@
"setting_notifications_subtitle": "Cambia le impostazioni di notifica",
"setting_notifications_total_progress_subtitle": "Avanzamento complessivo del caricamento (completati/risorse totali)",
"setting_notifications_total_progress_title": "Mostra avanzamento del backup in background",
"setting_video_viewer_auto_play_subtitle": "Avvia automaticamente la riproduzione dei video quando vengono aperti",
"setting_video_viewer_auto_play_title": "Riproduci video automaticamente",
"setting_video_viewer_looping_title": "Looping",
"setting_video_viewer_original_video_subtitle": "Quando riproduci un video dal server, riproduci l'originale anche se è disponibile una versione transcodificata. Questo potrebbe portare a buffering. I video disponibili localmente sono sempre riprodotti a qualità originale indipendentemente da questa impostazione.",
"setting_video_viewer_original_video_title": "Forza video originale",
@@ -1986,6 +2024,7 @@
"theme_setting_three_stage_loading_title": "Abilita il caricamento a tre stage",
"they_will_be_merged_together": "Verranno uniti insieme",
"third_party_resources": "Risorse di Terze Parti",
"time": "Orario",
"time_based_memories": "Ricordi basati sul tempo",
"timeline": "Linea temporale",
"timezone": "Fuso orario",
@@ -2018,6 +2057,7 @@
"troubleshoot": "Risoluzione dei problemi",
"type": "Tipo",
"unable_to_change_pin_code": "Impossibile cambiare il codice PIN",
"unable_to_check_version": "Impossibile controllare la versione del server o dell'app",
"unable_to_setup_pin_code": "Impossibile configurare il codice PIN",
"unarchive": "Annulla l'archiviazione",
"unarchive_action_prompt": "{count} elementi rimossi dall'Archivio",

View File

@@ -700,7 +700,6 @@
"comments_and_likes": "コメントといいね",
"comments_are_disabled": "コメントは無効化されています",
"common_create_new_album": "アルバムを作成",
"common_server_error": "ネットワーク接続を確認し、サーバーが接続できる状態にあるか確認してください。アプリとサーバーのバージョンが一致しているかも確認してください。",
"completed": "完了",
"confirm": "確認",
"confirm_admin_password": "管理者パスワードを確認",
@@ -882,7 +881,6 @@
"edit_tag": "タグを編集する",
"edit_title": "タイトルを編集",
"edit_user": "ユーザーを編集",
"edited": "編集しました",
"editor": "編集画面",
"editor_close_without_save_prompt": "変更は破棄されます",
"editor_close_without_save_title": "編集画面を閉じますか?",
@@ -1119,7 +1117,6 @@
"header_settings_field_validator_msg": "ヘッダを空白にはできません",
"header_settings_header_name_input": "ヘッダの名前",
"header_settings_header_value_input": "ヘッダのバリュー",
"headers_settings_tile_subtitle": "プロキシヘッダを設定する",
"headers_settings_tile_title": "カスタムプロキシヘッダ",
"hi_user": "こんにちは、{name}( {email})さん",
"hide_all_people": "全ての人物を非表示",
@@ -1542,13 +1539,9 @@
"privacy": "プライバシー",
"profile": "プロフィール",
"profile_drawer_app_logs": "ログ",
"profile_drawer_client_out_of_date_major": "アプリが更新されてません。最新のバージョンに更新してください",
"profile_drawer_client_out_of_date_minor": "アプリが更新されてません。最新のバージョンに更新してください",
"profile_drawer_client_server_up_to_date": "すべて最新版です",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "読み取り専用モードが有効です。ユーザーのアイコンを長押しして読み取り専用モードを解除してください。",
"profile_drawer_server_out_of_date_major": "サーバーが更新されてません。最新のバージョンに更新してください",
"profile_drawer_server_out_of_date_minor": "サーバーが更新されてません。最新のバージョンに更新してください",
"profile_image_of_user": "{user} のプロフィール画像",
"profile_picture_set": "プロフィール画像が設定されました。",
"public_album": "公開アルバム",

View File

@@ -132,7 +132,6 @@
"duplicates": "დუბლიკატები",
"duration": "ხანგრძლივობა",
"edit": "ჩასწორება",
"edited": "ჩასწორებულია",
"editor": "რედაქტორი",
"editor_crop_tool_h2_rotation": "ტრიალი",
"email": "ელფოსტა",

View File

@@ -8,7 +8,7 @@
"actions": "작업",
"active": "활성",
"activity": "활동",
"activity_changed": "활동이 {enabled, select, true {활성화} other {비활성화}}되었습니다",
"activity_changed": "활동이 {enabled, select, true {활성화} other {비활성화}}되었습니다.",
"add": "추가",
"add_a_description": "설명 추가",
"add_a_location": "위치 추가",
@@ -28,21 +28,22 @@
"add_to_album": "앨범에 추가",
"add_to_album_bottom_sheet_added": "{album}에 추가됨",
"add_to_album_bottom_sheet_already_exists": "이미 {album}에 있음",
"add_to_album_bottom_sheet_some_local_assets": "몇 개의 로컬 항목이 앨범에 추가되지 않았습니다",
"add_to_album_bottom_sheet_some_local_assets": "일부 로컬 항목이 앨범에 추가되지 않았습니다.",
"add_to_album_toggle": "{album} 선택/해제",
"add_to_albums": "여러 앨범에 추가",
"add_to_albums_count": "여러 앨범에 추가 ({count})",
"add_to_shared_album": "공유 앨범에 추가",
"add_upload_to_stack": "스택에 업로드 추가",
"add_url": "URL 추가",
"added_to_archive": "보관함으로 이동되었습니다",
"added_to_favorites": "즐겨찾기에 추가되었습니다",
"added_to_archive": "보관함으로 이동되었습니다.",
"added_to_favorites": "즐겨찾기에 추가되었습니다.",
"added_to_favorites_count": "즐겨찾기에 항목 {count, number}개 추가됨",
"admin": {
"add_exclusion_pattern_description": "*, **, ? 등의 glob 패턴을 사용할 수 있습니다. 예를 들어 \"Raw\" 폴더 내 모든 파일을 제외하려면 \"**/Raw/**\"를, .tif 파일을 제외하려면 \"**/*.tif\", 특정한 절대 경로를 제외하려면 \"/path/to/ignore/**\" 처럼 사용합니다.",
"admin_user": "관리자",
"asset_offline_description": "이 항목은 외부 라이브러리에 등록되었으나 디스크에서 찾을 수 없어 휴지통으로 이동했습니다. 파일이 라이브러리 경로 내에서 이동된 경우 타임라인에서 새로 인식된 항목이 있는지 확인해보세요. 이 항목을 복원하려면 아래 경로에 Immich가 접근할 수 있는지 확인하고 라이브러리를 다시 스캔하세요.",
"authentication_settings": "인증 설정",
"authentication_settings_description": "비밀번호, OAuth 및 기타 인증 설정을 관리합니다",
"authentication_settings_description": "비밀번호, OAuth 및 기타 인증 설정을 관리합니다.",
"authentication_settings_disable_all": "모든 로그인 수단을 비활성화하시겠습니까? 더이상 로그인할 수 없습니다.",
"authentication_settings_reenable": "다시 활성화하려면 <link>서버 명령어</link>를 사용하세요.",
"background_task_job": "백그라운드 작업",
@@ -50,7 +51,7 @@
"backup_database_enable_description": "데이터베이스 덤프 활성화",
"backup_keep_last_amount": "보관할 이전 덤프 수",
"backup_onboarding_1_description": "개는 클라우드나 다른 물리적 위치에 보관합니다.",
"backup_onboarding_2_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>를 참조하세요.",
@@ -59,10 +60,10 @@
"backup_settings": "데이터베이스 덤프 설정",
"backup_settings_description": "데이터베이스 덤프 주기와 보관 기간을 설정합니다.",
"cleared_jobs": "작업 중단: {job}",
"config_set_by_file": "설정이 구성 파일을 통해 관리되고 있습니다",
"config_set_by_file": "설정이 구성 파일을 통해 관리되고 있습니다.",
"confirm_delete_library": "{library} 라이브러리를 삭제하시겠습니까?",
"confirm_delete_library_assets": "이 라이브러리를 삭제하시겠습니까? Immich에서 {count, plural, one {항목 #개가} other {항목 #개가}} 삭제되며 되돌릴 수 없습니다. 원본 파일은 디스크에 남아 있습니다.",
"confirm_email_below": "계속하려면 아래에 \"{email}\"을(를) 입력하세요",
"confirm_email_below": "계속하려면 아래에 \"{email}\"을(를) 입력하세요.",
"confirm_reprocess_all_faces": "모든 얼굴을 다시 처리하시겠습니까? 이름이 지정된 인물도 초기화됩니다.",
"confirm_user_password_reset": "{user}님의 비밀번호를 초기화하시겠습니까?",
"confirm_user_pin_code_reset": "{user}님의 PIN 코드를 초기화하시겠습니까?",
@@ -71,7 +72,7 @@
"cron_expression_description": "Cron 표현식으로 스캔 주기를 설정합니다. 자세한 내용은 다음을 참조하세요, <link>Crontab Guru</link>",
"cron_expression_presets": "Cron 표현식 프리셋",
"disable_login": "로그인 비활성화",
"duplicate_detection_job_description": "기계 학습으로 유사한 이미지를 감지합니다. 스마트 검색이 활성화되어 있어야 합니다",
"duplicate_detection_job_description": "기계 학습으로 유사한 이미지를 감지합니다. 스마트 검색이 활성화되어 있어야 합니다.",
"exclusion_pattern_description": "라이브러리 스캔에서 제외할 파일이나 폴더 규칙을 설정합니다. 폴더에 원하지 않는 파일(RAW 파일 등)이 함께 존재하는 경우 유용합니다.",
"external_library_management": "외부 라이브러리 관리",
"face_detection": "얼굴 감지",
@@ -125,7 +126,7 @@
"logging_level_description": "활성화 시 사용할 로그 레벨을 선택합니다.",
"logging_settings": "로깅",
"machine_learning_availability_checks": "가용성 확인",
"machine_learning_availability_checks_description": "사용 가능한 머신 러닝 서버를 자동으로 감지하고 우선적으로 선택합니다",
"machine_learning_availability_checks_description": "사용 가능한 기계 학습 서버를 자동으로 감지하고 우선적으로 선택합니다.",
"machine_learning_availability_checks_enabled": "가용성 확인 활성화",
"machine_learning_availability_checks_interval": "확인 주기",
"machine_learning_availability_checks_interval_description": "가용성 확인 주기 (밀리초 단위)",
@@ -153,6 +154,10 @@
"machine_learning_min_detection_score_description": "감지된 얼굴의 최소 신뢰도 점수를 0에서 1 사이로 설정합니다. 값을 낮추면 더 많은 얼굴을 감지하지만 잘못 감지될 가능성도 높아집니다.",
"machine_learning_min_recognized_faces": "최소 인식 얼굴",
"machine_learning_min_recognized_faces_description": "인물을 생성하기 위해 인식할 얼굴 수의 최솟값을 설정합니다. 값이 높으면 얼굴 인식이 정확해지지만 감지된 얼굴이 인물에 할당되지 않을 가능성이 증가합니다.",
"machine_learning_ocr": "OCR",
"machine_learning_ocr_description": "기계 학습으로 이미지에서 텍스트를 인식합니다.",
"machine_learning_ocr_enabled": "OCR 활성화",
"machine_learning_ocr_min_detection_score": "최소 신뢰도 점수",
"machine_learning_settings": "기계 학습 설정",
"machine_learning_settings_description": "기계 학습 시 사용할 모델과 세부 설정을 관리합니다.",
"machine_learning_smart_search": "스마트 검색",
@@ -210,6 +215,8 @@
"notification_email_ignore_certificate_errors_description": "TLS 인증서 유효성 검사 오류 무시 (권장되지 않음)",
"notification_email_password_description": "이메일 서버 인증 시 사용할 비밀번호",
"notification_email_port_description": "이메일 서버 포트 (예: 25, 465 또는 587)",
"notification_email_secure": "SMTPS",
"notification_email_secure_description": "SMTPS 사용 (SMTP over TLS)",
"notification_email_sent_test_email_button": "테스트 이메일 전송 및 저장",
"notification_email_setting_description": "이메일 알림 전송 설정",
"notification_email_test_email": "테스트 이메일 전송",
@@ -332,7 +339,7 @@
"transcoding_max_b_frames": "최대 B-프레임",
"transcoding_max_b_frames_description": "값을 높이면 압축 효율이 향상되지만 인코딩 속도가 느려집니다. 오래된 장치의 하드웨어 가속과 호환되지 않을 수 있습니다. 0을 입력하면 B-프레임을 비활성화하고, -1을 입력하면 자동으로 설정합니다.",
"transcoding_max_bitrate": "최대 비트레이트",
"transcoding_max_bitrate_description": "최대 비트레이트를 지정하면 파일 크기를 일정하게 조절할 수 있지만 품질이 다소 저하될 수 있습니다. 일반적으로 720p 기준 VP9 HEVC 2600kbit/s, H.264는 4500kbit/s를 사용합니다. 0을 입력하면 비활성화됩니다.",
"transcoding_max_bitrate_description": "최대 비트레이트를 지정하면 파일 크기가 예측 가능해지지만 품질이 다소 저하될 수 있습니다. 일반적으로 720p 해상도에서는 VP9, HEVC 2600kbit/s, H.264는 4500kbit/s를 사용하며, 0으로 설정하면 비활성화됩니다. 단위를 생략하면 k(kbit/s)로 간주되며 5000, 5000k, 5M(Mbit/s)은 같은 값으로 처리됩니다.",
"transcoding_max_keyframe_interval": "최대 키프레임 간격",
"transcoding_max_keyframe_interval_description": "키프레임 간 최대 프레임 간격을 설정합니다. 값을 낮추면 압축 효율은 떨어지지만 탐색 속도가 빨라지고 움직임이 많은 장면에서 품질이 향상될 수 있습니다. 0을 입력하면 자동으로 설정합니다.",
"transcoding_optimal_description": "목표 해상도를 초과하거나 허용되지 않은 포맷의 동영상",
@@ -350,7 +357,7 @@
"transcoding_target_resolution": "목표 해상도",
"transcoding_target_resolution_description": "해상도를 높이면 세부 정보가 더 많이 보존되지만, 인코딩 시간이 늘어나고 파일 크기가 커져 앱 반응 속도가 느려질 수 있습니다.",
"transcoding_temporal_aq": "Temporal AQ",
"transcoding_temporal_aq_description": "(NVENC인 경우) 디테일이 많고 정적인 장면의 품질이 향상됩니다. 오래된 기기에서 호환되지 않을 수 있습니다.",
"transcoding_temporal_aq_description": "NVENC에만 적용됩니다. Temporal Adaptive Quantization은 디테일이 많고 정적인 장면의 품질이 향상됩니다. 오래된 기기에서 호환되지 않을 수 있습니다.",
"transcoding_threads": "스레드 수",
"transcoding_threads_description": "값을 높이면 인코딩 속도가 빨라지지만, 서버가 다른 작업을 처리할 여유가 줄어듭니다. 입력한 값은 CPU 코어 수를 초과하지 않아야 하며, 0으로 설정하면 CPU를 최대한 활용합니다.",
"transcoding_tone_mapping": "톤 매핑",
@@ -401,11 +408,11 @@
"advanced_settings_prefer_remote_subtitle": "일부 기기의 경우 로컬 항목에서 섬네일을 로드하는 속도가 매우 느립니다. 서버 이미지를 대신 로드하려면 이 설정을 활성화하세요.",
"advanced_settings_prefer_remote_title": "서버 이미지 선호",
"advanced_settings_proxy_headers_subtitle": "Immich가 네트워크 요청 시 사용할 프록시 헤더를 정의합니다.",
"advanced_settings_proxy_headers_title": "프록시 헤더",
"advanced_settings_readonly_mode_subtitle": "읽기 전용 모드를 활성화하면 여러 이미지 선택, 공유, 캐스트, 삭제 동작이 모두 비활성화됩니다. 메인 화면에서 사용자 프로필을 통해 읽기 전용 모드 활성 상태를 전환하세요",
"advanced_settings_proxy_headers_title": "커스텀 프록시 헤더 (실험적)",
"advanced_settings_readonly_mode_subtitle": "읽기 전용 모드를 활성화하면 이미지 선택, 공유, 캐스트, 삭제 등의 동작이 비활성화됩니다. 메인 화면에서 사용자 아이콘을 길게 눌러 읽기 전용 모드 활성화/비활성화하세요.",
"advanced_settings_readonly_mode_title": "읽기 전용 모드",
"advanced_settings_self_signed_ssl_subtitle": "서버 엔드포인트의 SSL 인증서 검증을 건너뜁니다. 자체 서명 인증서를 사용하는 경우 활성화하세요.",
"advanced_settings_self_signed_ssl_title": "자체 서명된 SSL 인증서 허용",
"advanced_settings_self_signed_ssl_title": "자체 서명된 SSL 인증서 허용 (실험적)",
"advanced_settings_sync_remote_deletions_subtitle": "웹에서 삭제하거나 복원한 항목을 이 기기에서도 자동으로 처리하도록 설정",
"advanced_settings_sync_remote_deletions_title": "원격 삭제 동기화 (실험적)",
"advanced_settings_tile_subtitle": "고급 사용자 설정",
@@ -465,10 +472,14 @@
"api_key_description": "이 값은 한 번만 표시됩니다. 창을 닫기 전 반드시 복사해주세요.",
"api_key_empty": "API 키 이름은 비워둘 수 없습니다.",
"api_keys": "API 키",
"app_architecture_variant": "변형 (아키텍처)",
"app_bar_signout_dialog_content": "정말 로그아웃하시겠습니까?",
"app_bar_signout_dialog_ok": "네",
"app_bar_signout_dialog_title": "로그아웃",
"app_download_links": "앱 다운로드 링크",
"app_settings": "앱 설정",
"app_stores": "앱 스토어",
"app_update_available": "앱 업데이트 가능",
"appears_in": "다음 앨범에 포함됨",
"apply_count": "적용 ({count, number})",
"archive": "보관함",
@@ -538,7 +549,7 @@
"autoplay_slideshow": "슬라이드 쇼 자동 재생",
"back": "뒤로",
"back_close_deselect": "뒤로, 닫기 또는 선택 해제",
"background_backup_running_error": "백그라운드 백업이 현재 진행 중이므로 수동 백업을 시작할 수 없습니다",
"background_backup_running_error": "백그라운드 백업이 진행 중입니다. 수동 백업을 시작할 수 없습니다.",
"background_location_permission": "백그라운드 위치 권한",
"background_location_permission_content": "Immich가 백그라운드에서 실행 중일 때 네트워크를 전환하려면 Wi-Fi 네트워크 이름을 확인해야 하며, 이를 위해 '정확한 위치' 권한을 항상 허용해야 합니다.",
"background_options": "백그라운드 옵션",
@@ -552,6 +563,7 @@
"backup_albums_sync": "앨범 동기화 백업",
"backup_all": "모두",
"backup_background_service_backup_failed_message": "항목 백업에 실패했습니다. 다시 시도하는 중…",
"backup_background_service_complete_notification": "항목 백업 완료",
"backup_background_service_connection_failed_message": "서버 연결에 실패했습니다. 다시 시도하는 중…",
"backup_background_service_current_upload_notification": "{filename} 업로드 중",
"backup_background_service_default_notification": "새로운 항목을 확인하는 중…",
@@ -668,7 +680,7 @@
"change_your_password": "사용자 계정의 비밀번호를 변경합니다.",
"changed_visibility_successfully": "숨김 여부가 변경되었습니다.",
"charging": "충전 중",
"charging_requirement_mobile_backup": "백그라운드 백업은 기기 충전 상태에서 가능합니다",
"charging_requirement_mobile_backup": "백그라운드 백업은 기기 충전 중일 때 진행됩니다.",
"check_corrupt_asset_backup": "백업된 항목의 손상 여부 확인",
"check_corrupt_asset_backup_button": "확인 수행",
"check_corrupt_asset_backup_description": "이 검사는 모든 항목이 백업된 후 Wi-Fi가 연결된 상태에서만 실행하세요. 이 작업은 몇 분 정도 소요될 수 있습니다.",
@@ -688,7 +700,7 @@
"client_cert_invalid_msg": "인증서가 유효하지 않거나 비밀번호가 올바르지 않음",
"client_cert_remove_msg": "클라이언트 인증서 제거됨",
"client_cert_subtitle": "인증서 가져오기/제거는 로그인 전에만 가능하며, PKCS12 (.p12, .pfx) 형식만 지원합니다.",
"client_cert_title": "SSL 클라이언트 인증서",
"client_cert_title": "SSL 클라이언트 인증서 (실험적)",
"clockwise": "시계 방향",
"close": "닫기",
"collapse": "접기",
@@ -700,7 +712,6 @@
"comments_and_likes": "댓글 및 좋아요",
"comments_are_disabled": "댓글이 비활성화되었습니다.",
"common_create_new_album": "앨범 생성",
"common_server_error": "네트워크 연결 상태를 확인하고, 서버에 접속할 수 있는지, 앱/서버 버전이 호환되는지 확인해주세요.",
"completed": "완료됨",
"confirm": "확인",
"confirm_admin_password": "관리자 비밀번호 확인",
@@ -739,6 +750,7 @@
"create": "생성",
"create_album": "앨범 생성",
"create_album_page_untitled": "제목 없음",
"create_api_key": "API 키 생성",
"create_library": "새 라이브러리",
"create_link": "링크 생성",
"create_link_to_share": "공유 링크 생성",
@@ -755,7 +767,7 @@
"create_user": "사용자 계정 생성",
"created": "생성됨",
"created_at": "생성됨",
"creating_linked_albums": "링크 연결된 앨범 생성 중...",
"creating_linked_albums": "연결된 앨범 생성 중...",
"crop": "자르기",
"curated_object_page_title": "사물",
"current_device": "현재 기기",
@@ -882,7 +894,6 @@
"edit_tag": "태그 수정",
"edit_title": "제목 변경",
"edit_user": "사용자 수정",
"edited": "수정되었습니다.",
"editor": "편집자",
"editor_close_without_save_prompt": "변경 사항이 저장되지 않습니다.",
"editor_close_without_save_title": "편집을 종료하시겠습니까?",
@@ -905,7 +916,7 @@
"error": "오류",
"error_change_sort_album": "앨범 표시 순서 변경 실패",
"error_delete_face": "항목에서 얼굴 삭제 중 오류 발생",
"error_getting_places": "장소 정보 입력 실패",
"error_getting_places": "장소 로드 오류",
"error_loading_image": "이미지를 불러오는 중 오류 발생",
"error_loading_partners": "파트너 불러오기 실패: {error}",
"error_saving_image": "오류: {error}",
@@ -1038,6 +1049,7 @@
"exif_bottom_sheet_description_error": "설명 변경 중 오류 발생",
"exif_bottom_sheet_details": "상세 정보",
"exif_bottom_sheet_location": "위치",
"exif_bottom_sheet_no_description": "설명 없음",
"exif_bottom_sheet_people": "인물",
"exif_bottom_sheet_person_add_person": "이름 추가",
"exit_slideshow": "슬라이드 쇼 종료",
@@ -1091,9 +1103,9 @@
"forgot_pin_code_question": "PIN 번호를 잊어버렸나요?",
"forward": "앞으로",
"gcast_enabled": "구글 캐스트",
"gcast_enabled_description": "이 기능은 Google의 외부 리소스를 사용하여 실행됩니다.",
"gcast_enabled_description": "이 기능은 Google의 외부 리소스를 사용니다.",
"general": "일반",
"geolocation_instruction_location": "GPS 좌표가 포함된 항목을 클릭해 위치를 사용하거나, 지도에서 직접 위치를 선택하세요",
"geolocation_instruction_location": "GPS 좌표가 포함된 항목을 클릭해 위치를 사용하거나, 지도에서 직접 위치를 선택하세요.",
"get_help": "도움 얻기",
"get_wifiname_error": "Wi-Fi 이름을 가져올 수 없습니다. 필수 권한이 부여되었는지, Wi-Fi 네트워크에 연결되어 있는지 확인하세요.",
"getting_started": "시작하기",
@@ -1119,7 +1131,6 @@
"header_settings_field_validator_msg": "값은 비워둘 수 없습니다.",
"header_settings_header_name_input": "헤더 이름",
"header_settings_header_value_input": "헤더 값",
"headers_settings_tile_subtitle": "네트워크 요청 전송에 포함할 프록시 헤더를 정의합니다.",
"headers_settings_tile_title": "사용자 지정 프록시 헤더",
"hi_user": "안녕하세요 {name}님, ({email})",
"hide_all_people": "모든 인물 숨기기",
@@ -1344,6 +1355,8 @@
"minute": "분",
"minutes": "분",
"missing": "누락",
"mobile_app": "모바일 앱",
"mobile_app_download_onboarding_note": "다음 옵션 중 하나를 사용해 모바일 앱을 다운로드하세요.",
"model": "모델",
"month": "월",
"monthly_title_text_date_format": "yyyy년 M월",
@@ -1362,6 +1375,8 @@
"my_albums": "내 앨범",
"name": "이름",
"name_or_nickname": "이름 또는 닉네임",
"navigate": "탐색",
"navigate_to_time": "시간으로 탐색",
"network_requirement_photos_upload": "사진 백업에 모바일 데이터 사용",
"network_requirement_videos_upload": "동영상 백업에 모바일 데이터 사용",
"network_requirements": "네트워크 요구사항",
@@ -1371,6 +1386,7 @@
"never": "없음",
"new_album": "새 앨범",
"new_api_key": "새 API 키",
"new_date_range": "새 날짜 범위",
"new_password": "새 비밀번호",
"new_person": "새 인물 생성",
"new_pin_code": "새 PIN 코드",
@@ -1389,20 +1405,20 @@
"no_assets_message": "여기를 클릭해 첫 사진을 업로드하세요.",
"no_assets_to_show": "표시할 항목 없음",
"no_cast_devices_found": "캐스트 기기 없음",
"no_checksum_local": "체크섬이 없습니다. 로컬 항목을 불러올 수 없습니다",
"no_checksum_remote": "체크섬이 없습니다. 외부 항목을 불러올 수 없습니다",
"no_checksum_local": "체크섬이 없습니다. 로컬 항목을 불러올 수 없습니다.",
"no_checksum_remote": "체크섬이 없습니다. 원격 항목을 불러올 수 없습니다.",
"no_duplicates_found": "비슷한 항목이 없습니다.",
"no_exif_info_available": "EXIF 정보 없음",
"no_explore_results_message": "더 많은 사진을 업로드하여 탐색 기능을 사용하세요.",
"no_favorites_message": "즐겨찾기에서 사진과 동영상을 빠르게 찾기",
"no_libraries_message": "외부 라이브러리로 다른 경로의 사진과 동영상을 확인하세요.",
"no_local_assets_found": "체크섬에 맞는 로컬 항목을 찾을 수 없습니다",
"no_local_assets_found": "체크섬과 일치하는 로컬 항목을 찾을 수 없습니다.",
"no_locked_photos_message": "잠금 폴더의 사진 및 동영상은 숨겨지며 라이브러리를 탐색할 때 표시되지 않습니다.",
"no_name": "이름 없음",
"no_notifications": "알림 없음",
"no_people_found": "일치하는 인물 없음",
"no_places": "장소 없음",
"no_remote_assets_found": "체크섬에 맞는 외부 항목을 찾을 수 없습니다",
"no_remote_assets_found": "체크섬과 일치하는 원격 항목을 찾을 수 없습니다.",
"no_results": "결과 없음",
"no_results_description": "동의어 또는 더 일반적인 단어를 사용해 보세요.",
"no_shared_albums_message": "앨범을 만들어 주변 사람들과 사진 및 동영상을 공유하세요.",
@@ -1421,6 +1437,8 @@
"notifications": "알림",
"notifications_setting_description": "알림 전송 설정을 관리합니다.",
"oauth": "OAuth",
"obtainium_configurator": "Obtainium 구성",
"obtainium_configurator_instructions": "Obtainium으로 Immich GitHub 릴리스에서 직접 안드로이드 앱을 설치하고 업데이트하세요. API 키를 생성하고 변형을 선택해 Obtanium 설정 링크를 생성하세요.",
"official_immich_resources": "Immich 공식 리소스",
"offline": "오프라인",
"offset": "오프셋",
@@ -1432,8 +1450,8 @@
"onboarding_privacy_description": "다음 선택적 기능은 외부 서비스를 사용하며 설정에서 언제든 비활성화할 수 있습니다.",
"onboarding_server_welcome_description": "몇 가지 일반적인 설정을 진행하겠습니다.",
"onboarding_theme_description": "사용할 테마를 선택하세요. 설정에서 언제든 변경할 수 있습니다.",
"onboarding_user_welcome_description": "시작해 보겠습니다!",
"onboarding_welcome_user": "{user}님, 환영합니다",
"onboarding_user_welcome_description": "기본 설정을 시작하겠습니다!",
"onboarding_welcome_user": "환영합니다, {user}님.",
"online": "온라인",
"only_favorites": "즐겨찾기만",
"open": "열기",
@@ -1525,6 +1543,9 @@
"play_memories": "추억 재생",
"play_motion_photo": "모션 포토 재생",
"play_or_pause_video": "동영상 재생/일시 정지",
"play_original_video": "원본 동영상 재생",
"play_original_video_setting_description": "트랜스코딩된 영상보다 원본 영상을 우선 재생합니다. 원본이 호환되지 않는 형식인 경우 정상적으로 재생되지 않을 수 있습니다.",
"play_transcoded_video": "트랜스코딩 동영상 재생",
"please_auth_to_access": "계속 진행하려면 인증하세요.",
"port": "포트",
"preferences_settings_subtitle": "앱 개인 설정을 관리합니다.",
@@ -1542,13 +1563,9 @@
"privacy": "개인정보",
"profile": "프로필",
"profile_drawer_app_logs": "로그",
"profile_drawer_client_out_of_date_major": "모바일 앱이 최신 버전이 아닙니다. 최신 버전으로 업데이트하세요.",
"profile_drawer_client_out_of_date_minor": "모바일 앱이 최신 버전이 아닙니다. 최신 버전으로 업데이트하세요.",
"profile_drawer_client_server_up_to_date": "클라이언트와 서버가 최신 상태입니다.",
"profile_drawer_github": "Github",
"profile_drawer_readonly_mode": "읽기 전용 모드 활성화. 유저 아바타 아이콘을 길게 눌러 해제할 수 있습니다.",
"profile_drawer_server_out_of_date_major": "서버 버전이 최신이 아닙니다. 최신 버전으로 업데이트하세요.",
"profile_drawer_server_out_of_date_minor": "서버 버전이 최신이 아닙니다. 최신 버전으로 업데이트하세요.",
"profile_drawer_readonly_mode": "읽기 전용 모드 활성화. 사용자 아이콘을 길게 눌러 해제할 수 있습니다.",
"profile_image_of_user": "{user}님의 프로필 이미지",
"profile_picture_set": "프로필 사진이 설정되었습니다.",
"public_album": "공개 앨범",
@@ -1673,7 +1690,7 @@
"restore_user": "사용자 복원",
"restored_asset": "항목이 복원되었습니다.",
"resume": "재개",
"resume_paused_jobs": "재개 {count, plural, one {# 일시 중지된 작업} other {# 일시 중지된 작업}}",
"resume_paused_jobs": "일시 중지된 작업 {count, plural, one {#개} other {#개}} 재개",
"retry_upload": "다시 시도",
"review_duplicates": "비슷한 항목 확인",
"review_large_files": "용량이 큰 파일 확인",
@@ -1694,11 +1711,12 @@
"scanning_for_album": "앨범을 스캔하는 중...",
"search": "검색",
"search_albums": "앨범 검색",
"search_by_context": "문맥으로 검색",
"search_by_context": "문맥 기반 검색",
"search_by_description": "설명으로 검색",
"search_by_description_example": "동해안에서 맞이한 새해 일출",
"search_by_filename": "파일명 또는 확장자로 검색",
"search_by_filename_example": "예: IMG_1234.JPG 또는 PNG",
"search_camera_lens_model": "렌즈 모델 검색...",
"search_camera_make": "카메라 제조사 검색...",
"search_camera_model": "카메라 모델명 검색...",
"search_city": "도시 검색...",
@@ -1715,6 +1733,7 @@
"search_filter_location_title": "위치 선택",
"search_filter_media_type": "미디어 종류",
"search_filter_media_type_title": "미디어 종류 선택",
"search_filter_ocr": "OCR 검색",
"search_filter_people_title": "인물 선택",
"search_for": "검색",
"search_for_existing_person": "존재하는 인물 검색",
@@ -1777,6 +1796,7 @@
"server_online": "온라인",
"server_privacy": "개인정보",
"server_stats": "서버 통계",
"server_update_available": "서버 업데이트 가능",
"server_version": "서버 버전",
"set": "설정",
"set_as_album_cover": "앨범 커버로 설정",
@@ -1789,7 +1809,7 @@
"setting_image_viewer_help": "상세 보기에서는 작은 섬네일, (활성화된 경우) 중간 섬네일, 원본 순으로 불러옵니다.",
"setting_image_viewer_original_subtitle": "원본 고해상도 이미지를 불러옵니다. 데이터 사용량 및 캐시 크기를 줄이려면 비활성화하세요.",
"setting_image_viewer_original_title": "원본 이미지 로드",
"setting_image_viewer_preview_subtitle": "원본 고해상도 이미지를 불러옵니다. 비활성화하는 경우 원본 또는 섬네일만 불러옵니다.",
"setting_image_viewer_preview_subtitle": "중간 해상도 이미지를 불러옵니다. 비활성화하는 경우 원본 또는 섬네일만 불러옵니다.",
"setting_image_viewer_preview_title": "미리보기 이미지 로드",
"setting_image_viewer_title": "이미지",
"setting_languages_apply": "적용",
@@ -1805,6 +1825,8 @@
"setting_notifications_subtitle": "알림 기본 설정 조정",
"setting_notifications_total_progress_subtitle": "전체 업로드 진행률 (완료/총 항목)",
"setting_notifications_total_progress_title": "백그라운드 백업 전체 진행률 표시",
"setting_video_viewer_auto_play_subtitle": "동영상을 열면 자동으로 재생",
"setting_video_viewer_auto_play_title": "동영상 자동 재생",
"setting_video_viewer_looping_title": "반복",
"setting_video_viewer_original_video_subtitle": "동영상 스트리밍 시 트랜스코딩된 파일 대신 원본을 재생합니다. 재생 시 버퍼링이 발생할 수 있습니다. 로컬에 있는 영상은 항상 원본 화질로 재생됩니다.",
"setting_video_viewer_original_video_title": "원본 동영상 강제 사용",
@@ -2013,9 +2035,10 @@
"trash_page_select_assets_btn": "항목 선택",
"trash_page_title": "휴지통 ({count})",
"trashed_items_will_be_permanently_deleted_after": "휴지통으로 이동된 항목은 {days, plural, one {#일} other {#일}} 후 영구적으로 삭제됩니다.",
"troubleshoot": "트러블슈팅",
"troubleshoot": "문제 해결",
"type": "형식",
"unable_to_change_pin_code": "PIN 코드를 변경할 수 없음",
"unable_to_check_version": "앱 또는 서버 버전을 확인할 수 없음",
"unable_to_setup_pin_code": "PIN 코드를 설정할 수 없음",
"unarchive": "보관함에서 제거",
"unarchive_action_prompt": "보관함에서 항목 {count}개 제거됨",

View File

@@ -597,6 +597,7 @@
"backup_controller_page_turn_on": "Įjungti foninį atsarginį kopijavimą",
"backup_controller_page_uploading_file_info": "Įkeliama failo info",
"backup_err_only_album": "Negalima pašalinti vienintelio albumo",
"backup_error_sync_failed": "Sinchronizavimas nepavyko. Atsarginė kopija negali būti apdorota.",
"backup_info_card_assets": "elementai",
"backup_manual_cancelled": "Atšaukta",
"backup_manual_in_progress": "Jau įkeliama, bandykite dar kartą vėliau",
@@ -695,7 +696,6 @@
"comments_and_likes": "Komentarai ir patiktukai",
"comments_are_disabled": "Komentarai yra išjungti",
"common_create_new_album": "Sukurti naują albumą",
"common_server_error": "Prašome patikrinti tinklo prisijungimą ir įsitikinti, kad serveris pasiekiamas ir programos/serverio versija sutampa.",
"completed": "Užbaigta",
"confirm": "Patvirtinti",
"confirm_admin_password": "Patvirtinti administratoriaus slaptažodį",
@@ -877,7 +877,6 @@
"edit_tag": "Redaguoti žymą",
"edit_title": "Redaguoti antraštę",
"edit_user": "Redaguoti naudotoją",
"edited": "Redaguota",
"editor": "Redaktorius",
"editor_close_without_save_prompt": "Pakeitimai nebus išsaugoti",
"editor_close_without_save_title": "Uždaryti redaktorių?",
@@ -1033,6 +1032,7 @@
"exif_bottom_sheet_description_error": "Klaida atnaujinant aprašymą",
"exif_bottom_sheet_details": "DETALĖS",
"exif_bottom_sheet_location": "VIETOVĖ",
"exif_bottom_sheet_no_description": "Nėra aprašymo",
"exif_bottom_sheet_people": "ŽMONĖS",
"exif_bottom_sheet_person_add_person": "Pridėti vardą",
"exit_slideshow": "Išeiti iš skaidrių peržiūros",
@@ -1114,7 +1114,6 @@
"header_settings_field_validator_msg": "Reikšmė negali būti tuščia",
"header_settings_header_name_input": "Antraštės pavadinimas",
"header_settings_header_value_input": "Antraštės reikšmė",
"headers_settings_tile_subtitle": "Apibrėžkite tarpinio serverio antraštes, kurias programa turėtų siųsti su kiekviena tinklo užklausa",
"headers_settings_tile_title": "Pasirinktinės tarpinio serverio antraštės",
"hi_user": "Labas {name} ({email})",
"hide_all_people": "Slėpti visus asmenis",
@@ -1536,13 +1535,9 @@
"privacy": "Privatumas",
"profile": "Profilis",
"profile_drawer_app_logs": "Logai",
"profile_drawer_client_out_of_date_major": "Mobili aplikacija jau pasenusios versijos. Prašome atsinaujinti į paskutinę didžiąją versiją.",
"profile_drawer_client_out_of_date_minor": "Mobili aplikacija jau pasenusios versijos. Prašome atsinaujinti į paskutinę mažąją versiją.",
"profile_drawer_client_server_up_to_date": "Klientas ir Serveris yra atnaujinti",
"profile_drawer_github": "GitHub",
"profile_drawer_readonly_mode": "Tik skaitymo rėžimas įgalintas. Ilgai paspauskite vartotojo ikoną išėjimui.",
"profile_drawer_server_out_of_date_major": "Serveris jau yra pasenusios versijos. Prašome atsinaujinti į paskutinę didžiąją versiją.",
"profile_drawer_server_out_of_date_minor": "Serveris jau yra pasenusios versijos. Prašome atsinaujinti į paskutinę mažąją versiją.",
"profile_image_of_user": "{user} profilio nuotrauka",
"profile_picture_set": "Profilio nuotrauka nustatyta.",
"public_album": "Viešas albumas",
@@ -1582,6 +1577,11 @@
"rating": "Įvertinimas žvaigždutėmis",
"rating_count": "{count, plural, one {# įvertinimas} few {# įvertinimai} other {# įvertinimų}}",
"rating_description": "Rodyti EXIF įvertinimus informacijos skydelyje",
"read_changelog": "Skaityti pakeitimų sąrašą",
"recent-albums": "Naujausi albumai",
"recent_searches": "Naujausios paieškos",
"recently_added": "Neseniai pridėta",
"recently_added_page_title": "Neseniai pridėta",
"recently_taken": "Neseniai sukurti",
"recently_taken_page_title": "Neseniai sukurti",
"refresh": "Atnaujinti",
@@ -1616,11 +1616,14 @@
"repair": "Pataisyti",
"repair_no_results_message": "Nesekami ir trūkstami failai bus rodomi čia",
"replace_with_upload": "Pakeisti naujai įkeltu failu",
"repository": "Repozitoriumas",
"require_password": "Reikalauti slaptažodžio",
"rescan": "Perskenuoti",
"reset": "Atstatyti",
"reset_password": "Atstayti slaptažodį",
"reset_pin_code": "Atsatyti PIN kodą",
"reset_pin_code_description": "Jei pamiršote PIN kodą, galite susisiekti su serverio administratoriumi, kad jis jį atstatytų",
"reset_pin_code_with_password": "PIN kodą visada galite atkurti naudodami savo slaptažodį",
"reset_to_default": "Atkurti numatytuosius",
"resolve_duplicates": "Sutvarkyti dublikatus",
"resolved_all_duplicates": "Sutvarkyti visi dublikatai",
@@ -1728,8 +1731,11 @@
"shared_intent_upload_button_progress_text": "{current} / {total} Įkelta",
"shared_link_clipboard_copied_massage": "Nukopijuota į iškarpinę",
"shared_link_clipboard_text": "Nuoroda: {link}\nSlaptažodis: {password}",
"shared_link_edit_expire_after_option_day": "1 diena",
"shared_link_edit_expire_after_option_days": "{count} dienų",
"shared_link_edit_expire_after_option_hour": "1 valanda",
"shared_link_edit_expire_after_option_hours": "{count} valandų",
"shared_link_edit_expire_after_option_minute": "1 minutė",
"shared_link_edit_expire_after_option_minutes": "{count} minučių",
"shared_link_edit_expire_after_option_months": "{count} mėnesių",
"shared_link_edit_expire_after_option_year": "{count} metų",
@@ -1785,6 +1791,7 @@
"sort_created": "Sukūrimo data",
"sort_items": "Elementų skaičių",
"sort_modified": "Keitimo data",
"sort_newest": "Naujausia nuotrauka",
"sort_oldest": "Seniausia nuotrauka",
"sort_people_by_similarity": "Rikiuoti žmonės pagal panašumą",
"sort_recent": "Naujausia nuotrauka",
@@ -1797,8 +1804,11 @@
"stacked_assets_count": "{count, plural, one {Sugrupuotas # elementas} few {Sugrupuoti # elementai} other {Sugrupuota # elementų}}",
"start": "Pradėti",
"start_date": "Pradžios data",
"start_date_before_end_date": "Pradžios data turi būti ankstesnė už pabaigos datą",
"status": "Statusas",
"stop_casting": "Nutraukti transliavimą",
"stop_photo_sharing": "Nustoti dalytis savo nuotraukomis?",
"stop_sharing_photos_with_user": "Nustoti dalintis savo nuotraukomis su šiuo vartotoju",
"storage": "Saugykla",
"storage_label": "Saugyklos Žyma",
"storage_usage": "Naudojama {used} iš {available}",
@@ -1809,6 +1819,7 @@
"support_and_feedback": "Palaikymas ir atsiliepimai",
"sync": "Sinchronizuoti",
"sync_albums": "Sinchronizuoti albumus",
"sync_albums_manual_subtitle": "Sinchronizuoti visus įkeltus vaizdo įrašus ir nuotraukas su pasirinktomis atsarginėmis kopijomis",
"sync_upload_album_setting_subtitle": "Sukurti ir įkelti jūsų nuotraukas ir vaizdo įrašus į pasirinktus Immich albumus",
"tag": "Žyma",
"tag_created": "Sukurta žyma: {tag}",
@@ -1820,10 +1831,12 @@
"template": "Šablonas",
"theme": "Tema",
"theme_selection": "Temos pasirinkimas",
"theme_selection_description": "Automatiškai nustatykite šviesią arba tamsią temą pagal naršyklės sistemos nustatymus",
"theme_setting_asset_list_tiles_per_row_title": "Elementų per eilutę ({count})",
"theme_setting_primary_color_title": "Pagrindinė spalva",
"theme_setting_system_primary_color_title": "Naudoti sistemos spalvą",
"theme_setting_system_theme_switch": "Automatinė (Naudoti sistemos nustatymus)",
"theme_setting_three_stage_loading_subtitle": "Trijų etapų įkėlimas gali padidinti įkėlimo našumą, tačiau sukelia žymiai didesnę tinklo apkrovą",
"time_based_memories": "Atsiminimai pagal laiką",
"timeline": "Laiko skalė",
"timezone": "Laiko juosta",
@@ -1832,6 +1845,7 @@
"to_favorite": "Įtraukti prie mėgstamiausių",
"to_login": "Prisijungti",
"to_trash": "Išmesti",
"total": "Viso",
"trash": "Šiukšliadėžė",
"trash_all": "Perkelti visus į šiukšliadėžę",
"trash_count": "Perkelti {count, number} į šiukšliadėžę",
@@ -1845,6 +1859,7 @@
"trash_page_title": "Šiukšlių ({count})",
"trashed_items_will_be_permanently_deleted_after": "Į šiukšliadėžę perkelti elementai bus visam laikui ištrinti po {days, plural, one {# dienos} other {# dienų}}.",
"type": "Tipas",
"unable_to_change_pin_code": "Negalima pakeisti PIN kodo",
"unarchive": "Išarchyvuoti",
"unarchived_count": "{count, plural, other {# išarchyvuota}}",
"unfavorite": "Pašalinti iš mėgstamiausių",

View File

@@ -39,9 +39,9 @@
"added_to_favorites": "Pievienots izlasei",
"added_to_favorites_count": "{count, number} pievienoti izlasei",
"admin": {
"add_exclusion_pattern_description": "Pievienojiet izlaišanas shēmas. Aizstājējzīmju izmantoša *, **, un ? tiek atbalstīta. Lai ignorētu visus failus jebkurā direktorijā ar nosaukumu “RAW”, izmantojiet “**/RAW/**”. Lai ignorētu visus failus, kas beidzas ar “. tif”, izmantojiet “**/*. tif”. Lai ignorētu absolūto ceļu, izmantojiet “/path/to/ignore/**”.",
"add_exclusion_pattern_description": "Pievieno izslēgšanas šablonus. Tiek atbalstīta aizstājējzīmju *, **, un ? izmantošana. Lai ignorētu visus failus jebkurā direktorijā ar nosaukumu “RAW”, izmanto “**/RAW/**”. Lai ignorētu visus failus, kas beidzas ar “. tif”, izmanto “**/*. tif”. Lai ignorētu absolūto ceļu, izmanto “/kāds/ignorējamais/ceļš/**”.",
"admin_user": "Administrators",
"asset_offline_description": "Šis ārējās bibliotēkas resurss vairs nav atrodams diskā un ir pārvietots uz atkritni. Ja fails tika pārvietots bibliotēkas ietvaros, pārbaudi, vai jūsu laika skalā ir jauns atbilstošais resurss. Lai atjaunotu šo resursu, pārliecinies, vai Immich var piekļūt tālāk norādītajam faila ceļam un uzsāc bibliotēkas skenēšanu.",
"asset_offline_description": "Šis ārējās bibliotēkas resurss vairs nav atrodams diskā un ir pārvietots uz atkritni. Ja fails tika pārvietots bibliotēkas ietvaros, pārbaudiet, vai jūsu laika skalā ir jauns atbilstošais resurss. Lai atjaunotu šo resursu, pārliecinieties, vai Immich var piekļūt tālāk norādītajam faila ceļam un uzsāc bibliotēkas skenēšanu.",
"authentication_settings": "Autentifikācijas iestatījumi",
"authentication_settings_description": "Paroļu, OAuth un citu autentifikācijas iestatījumu pārvaldība",
"authentication_settings_disable_all": "Vai tiešām vēlaties atspējot visas pieteikšanās metodes? Pieteikšanās tiks pilnībā atspējota.",
@@ -62,19 +62,23 @@
"cleared_jobs": "Notīrīti uzdevumi priekš: {job}",
"config_set_by_file": "Konfigurāciju pašlaik iestata konfigurācijas fails",
"confirm_delete_library": "Vai tiešām vēlaties dzēst {library} bibliotēku?",
"confirm_delete_library_assets": "Vai tiešām vēlaties dzēst šo bibliotēku? Tas izdzēsīs {count, plural, one {# contained asset} other {all # contained assets}} no Immich un to nevar atsaukt. Faili paliks diskā.",
"confirm_email_below": "Lai apstiprinātu, zemāk ierakstiet “{email}”",
"confirm_reprocess_all_faces": "Vai tiešām vēlies atkārtoti apstrādāt visas sejas? Tas arī atiestatīs personas ar vārdiem.",
"confirm_user_password_reset": "Vai tiešām vēlaties atiestatīt lietotāja {user} paroli?",
"confirm_user_pin_code_reset": "Vai tiešām vēlaties atiestatīt {user} PIN kodu?",
"create_job": "Izveidot uzdevumu",
"cron_expression": "Cron izteiksme",
"cron_expression_description": "Iestatiet skenēšanas intervālu, izmantojot cron formātu. Papildu informācijai skatiet, piemēram, <link>Crontab Guru</link>",
"cron_expression_presets": "Cron izteiksmju sagataves",
"disable_login": "Atspējot pieteikšanos",
"duplicate_detection_job_description": "Analizēt failus ar mašīnmācīšanos, lai noteiktu līdzīgus attēlus. Šī funkcija izmanto viedo meklēšanu",
"exclusion_pattern_description": "Izslēgšanas šabloni ļauj ignorēt failus un mapes, skenējot bibliotēku. Tas ir noderīgi, ja jums ir mapes, kas satur failus, kurus nevēlaties importēt, piemēram, RAW failus.",
"external_library_management": "Ārējo bibliotēku pārvaldība",
"face_detection": "Seju noteikšana",
"face_detection_description": "Atpazīt attēlos sejas, izmantojot mašīnmācīšanos. Video gadījumā tiek ņemta vērā tikai sīktēls. \"Atsvaidzināt\" atkārtoti apstrādā visus attēlus. \"Atiestatīt\" izdzēš visus pašreizējos seju datus. \"Trūkstošie\" ierindo attēlus, kas vēl nav apstrādāti. Pēc seju noteikšanas pabeigšanas atrastās sejas tiek ierindotas seju atpazīšanai, grupējot tās pēc esošas vai jauns personas.",
"facial_recognition_job_description": "Grupēt atpazītās sejas pēc cilvēkiem. Šis solis tiek veikts pēc seju noteikšanas pabeigšanas. \"Atiestatīt\" atkārtoti sagrupē visas sejas. \"Trūkstošie\" ierindo sejas, kurām nav piešķirta persona.",
"failed_job_command": "Kļūda, izpildot {job} komandu {command}",
"force_delete_user_warning": "BRĪDINĀJUMS: Tas uzreiz izdzēsīs lietotāju ar visiem failiem. Šo darbību nevar atcelt, un failus nevarēs atgūt.",
"image_format": "Formāts",
"image_format_description": "WebP veido mazākus failus nekā JPEG, taču to kodēšana ir lēnāka.",
@@ -87,6 +91,7 @@
"image_prefer_embedded_preview_setting_description": "Izmanto RAW fotoattēlos iestrādātos priekšskatījumus, ja tādi ir pieejami, kā ievades datus attēlu apstrādei. Tādējādi dažiem attēliem var iegūt precīzākas krāsas, taču priekšskatījuma kvalitāte ir atkarīga no fotokameras un attēlam var būt vairāk saspiešanas artefaktu.",
"image_prefer_wide_gamut": "Dot priekšroku plašai krāsu gammai",
"image_prefer_wide_gamut_setting_description": "Sīktēliem izmanto Display P3. Tas labāk saglabā attēlu dzīvīgumu ar plašu krāsu gammu, bet attēli var izskatīties atšķirīgi vecās ierīcēs ar vecu pārlūka versiju. sRGB attēli tiek saglabāti kā sRGB, lai izvairītos no krāsu izmaiņām.",
"image_preview_description": "Vidēja izmēra attēls ar noņemtiem metadatiem, ko izmanto, skatot vienu failu un mašīnmācīšanās apmācībai",
"image_preview_quality_description": "Priekšskatījuma kvalitāte no 1 līdz 100. Augstāka kvalitāte ir labāka, bet veido lielākus failus un var samazināt lietotnes reaģēšanas ātrumu. Zemas vērtības iestatīšana var ietekmēt mašīnmācīšanās kvalitāti.",
"image_preview_title": "Priekšskatījuma iestatījumi",
"image_quality": "Kvalitāte",
@@ -113,42 +118,75 @@
"library_settings_description": "Ārējo bibliotēku iestatījumu pārvaldība",
"library_tasks_description": "Pārbaudīt ārējās bibliotēkas, lai atrastu jaunus un/vai mainītus failus",
"library_watching_enable_description": "Uzraudzīt ārējo bibliotēku failu izmaiņas",
"library_watching_settings": "Bibliotēku uzraudzīšana (EKSPERIMENTĀLA)",
"library_watching_settings": "Bibliotēku uzraudzīšana [EKSPERIMENTĀLA]",
"library_watching_settings_description": "Automātiski uzraudzīt, vai ir mainīti faili",
"logging_level_description": "Ja iespējots, kādu žurnāla līmeni izmantot.",
"logging_settings": "Žurnalēšana",
"machine_learning_availability_checks": "Pieejamības pārbaudes",
"machine_learning_availability_checks_description": "Automātiski atklāt un dod priekšroku pieejamajiem mašīnmācīšanās serveriem",
"machine_learning_availability_checks_enabled": "Iespējot pieejamības pārbaudes",
"machine_learning_availability_checks_interval": "Pārbaudes intevāls",
"machine_learning_availability_checks_interval_description": "Intervāls milisekundēs starp pieejamības pārbaudēm",
"machine_learning_availability_checks_timeout": "Pieprasījumu noildze",
"machine_learning_availability_checks_timeout_description": "Pieejamības pārbaužu noildze milisekundēs",
"machine_learning_clip_model": "CLIP modelis",
"machine_learning_clip_model_description": "<link>Sarakstā</link> norādītais CLIP modeļa nosaukums. Ņem vērā, ka, mainot modeli, visiem attēliem ir vēlreiz jāpalaiž \"Viedās meklēšanas\" uzdevums.",
"machine_learning_duplicate_detection": "Dublikātu noteikšana",
"machine_learning_duplicate_detection_enabled": "Iespējot dublikātu noteikšanu",
"machine_learning_duplicate_detection_enabled_description": "Ja šī funkcija ir atspējota, joprojām tiks izlaisti identiski faili.",
"machine_learning_duplicate_detection_setting_description": "Izmantot CLIP iegultos elementus, lai atrastu iespējamos dublikātus",
"machine_learning_enabled": "Iespējot mašīnmācīšanos",
"machine_learning_enabled_description": "Ja funkcija ir atspējota, tiks atspējotas visas ML funkcijas neatkarīgi no zemāk esošajiem iestatījumiem.",
"machine_learning_facial_recognition": "Seju atpazīšana",
"machine_learning_facial_recognition_description": "Noteikt, atpazīt un sagrupēt sejas attēlos",
"machine_learning_facial_recognition_model": "Seju atpazīšanas modelis",
"machine_learning_facial_recognition_model_description": "Modeļi ir uzskaitīti pēc to izmēra dilstošā secībā. Lielāki modeļi ir lēnāki un izmanto vairāk atmiņas, bet nodrošina labākus rezultātus. Ņem vērā, ka, mainot modeli, ir atkārtoti jāpalaiž sejas atpazīšanas uzdevums visiem attēliem.",
"machine_learning_facial_recognition_setting": "Iespējot seju atpazīšanu",
"machine_learning_facial_recognition_setting_description": "Ja šī funkcija ir atspējota, attēli netiks kodēti sejas atpazīšanai un netiks parādīti sadaļā “Personas” lapā “Izpētīt”.",
"machine_learning_max_detection_distance": "Maksimālā noteikšanas distance",
"machine_learning_max_detection_distance_description": "Maksimālā distance starp diviem attēliem, lai tos uzskatītu par dublikātiem, ir no 0,001 līdz 0,1. Lielākas vērtības atklās vairāk dublikātu, taču var izraisīt kļūdaini pozitīvus rezultātus.",
"machine_learning_max_recognition_distance": "Maksimālā atpazīšanas distance",
"machine_learning_max_recognition_distance_description": "Maksimālā distance starp divām sejām, lai tās tiktu uzskatītas par vienu un to pašu personu, ir no 0 līdz 2. Samazinot šo distanci, var novērst divu cilvēku apzīmēšanu kā vienu un to pašu personu, savukārt palielinot to, var novērst vienas un tās pašas personas apzīmēšanu.",
"machine_learning_min_detection_score": "Minimālais atpazīšanas rezultāts",
"machine_learning_min_detection_score_description": "Minimālais sejas noteikšanas ticamības rādītājs no 0 līdz 1. Zemākas vērtības atklās vairāk seju, taču var rasties kļūdaini pozitīvi rezultāti.",
"machine_learning_min_recognized_faces": "Minimālais atpazīto seju skaits",
"machine_learning_min_recognized_faces_description": "Minimālais atpazīto seju skaits, kas nepieciešams, lai izveidotu personu. Palielinot šo skaitu, sejas atpazīšana kļūst precīzāka, taču palielinās iespēja, ka seja netiks piešķirta personai.",
"machine_learning_ocr": "OCR",
"machine_learning_ocr_description": "Izmantot mašīnmācīšanos, lai atpazītu tekstu attēlos",
"machine_learning_ocr_enabled": "Aktivizēt OCR",
"machine_learning_ocr_enabled_description": "Ja šī opcija ir atspējota, attēli netiks pakļauti teksta atpazīšanai.",
"machine_learning_ocr_max_resolution": "Maksimālā izšķirtspēja",
"machine_learning_ocr_max_resolution_description": "Priekšskatījumi, kuru izšķirtspēja ir lielāka par šo, tiks mainīti, saglabājot malu attiecību. Augstākas vērtības ir precīzākas, taču apstrāde aizņem ilgāku laiku un izmanto vairāk atmiņas.",
"machine_learning_ocr_min_detection_score": "Minimālais atpazīšanas rezultāts",
"machine_learning_ocr_min_detection_score_description": "Minimālais teksta noteikšanas ticamības rādītājs no 0 līdz 1. Zemākas vērtības noteiks vairāk teksta, taču var izraisīt kļūdaini pozitīvus rezultātus.",
"machine_learning_ocr_min_recognition_score": "Minimālais atpazīšanas rezultāts",
"machine_learning_ocr_model": "OCR modelis",
"machine_learning_ocr_model_description": "Serveru modeļi ir precīzāki nekā mobilie modeļi, bet apstrāde aizņem vairāk laika un tie izmanto vairāk atmiņas.",
"machine_learning_settings": "Mašīnmācīšanās iestatījumi",
"machine_learning_settings_description": "Mašīnmācīšanās funkciju un iestatījumu pārvaldība",
"machine_learning_smart_search": "Viedā meklēšana",
"machine_learning_smart_search_description": "Meklēt attēlus semantiski, izmantojot CLIP iegultos elementus",
"machine_learning_smart_search_enabled": "Iespējot viedo meklēšanu",
"machine_learning_smart_search_enabled_description": "Ja funkcija ir atspējota, attēli netiks kodēti viedai meklēšanai.",
"machine_learning_url_description": "Mašīnmācīšanās servera URL. Ja ir norādīts vairāk nekā viens URL, katrs serveris, sākot no pirmā līdz pēdējam, tiks pārbaudīts pa vienam, līdz kāds no tiem atbildēs veiksmīgi. Serveri, kas neatbild, tiks īslaicīgi ignorēti, līdz tie atkal būs pieejami tiešsaistē.",
"manage_concurrency": "Vienlaicīgas darbības pārvaldība",
"manage_log_settings": "Žurnāla iestatījumu pārvaldība",
"map_dark_style": "Tumšais stils",
"map_enable_description": "Iespējot kartes funkcijas",
"map_gps_settings": "Kartes un GPS iestatījumi",
"map_gps_settings_description": "Karšu un GPS (apgrieztās ģeokodēšanas) iestatījumu pārvaldība",
"map_implications": "Kartes funkcija izmanto ārējo kartes fragmentu pakalpojumu (tiles.immich.cloud)",
"map_light_style": "Gaišais stils",
"map_manage_reverse_geocoding_settings": "<link>Reversās ģeokodēšanas</link> iestatījumu pārvaldība",
"map_reverse_geocoding": "Reversā ģeokodēšana",
"map_reverse_geocoding_enable_description": "Iespējot apgriezto ģeokodēšanu",
"map_reverse_geocoding_settings": "Reversās ģeokodēšanas iestatījumi",
"map_settings": "Karte",
"map_settings_description": "Kartes iestatījumu pārvaldība",
"map_style_description": "URL uz style.json kartes tēmu",
"memory_generate_job": "Atmiņu ģenerēšana",
"metadata_extraction_job": "Metadatu iegūšana",
"metadata_extraction_job_description": "iegūt metadatu informāciju no katra faila, piemēram, GPS, sejas un izšķirtspēju",
"metadata_extraction_job_description": "Iegūt metadatu informāciju no katra faila, piemēram, GPS, sejas un izšķirtspēju",
"metadata_faces_import_setting": "Iespējot seju importēšanu",
"metadata_faces_import_setting_description": "Importēt sejas no attēla EXIF datiem un blakusfailiem",
"metadata_settings": "Metadatu iestatījumi",
@@ -174,15 +212,21 @@
"note_apply_storage_label_previous_assets": "Piezīme: Lai piemērotu glabātuves nosaukumu iepriekš augšupielādētiem failiem, izpildiet",
"note_cannot_be_changed_later": "PIEZĪME: Vēlāk to vairs nevar mainīt!",
"notification_email_from_address": "No adreses",
"notification_email_from_address_description": "Sūtītāja e-pasta adrese, piemēram: “Immich foto serveris <noreply@example.com>”",
"notification_email_from_address_description": "Sūtītāja e-pasta adrese, piemēram: “Immich foto serveris <noreply@example.com>”. Pārliecinies, ka izmanto adresi, no kuras tev atļauts sūtīt e-pastus.",
"notification_email_host_description": "E-pasta servera nosaukums (piemēram, smtp.immich.app)",
"notification_email_ignore_certificate_errors": "Ignorēt sertifikātu kļūdas",
"notification_email_ignore_certificate_errors_description": "Ignorēt TLS sertifikāta apstiprināšanas kļūdas (nav ieteicams)",
"notification_email_password_description": "Parole, kas jāizmanto, autentificējoties ar e-pasta serveri",
"notification_email_port_description": "e-pasta servera ports (piemēram, 25, 465 vai 587)",
"notification_email_secure": "SMTPS",
"notification_email_secure_description": "Izmantot SMTPS (SMTP caur TLS)",
"notification_email_sent_test_email_button": "Nosūtīt testa e-pastu un saglabāt",
"notification_email_setting_description": "E-pasta paziņojumu sūtīšanas iestatījumi",
"notification_email_test_email": "Nosūtīt testa e-pastu",
"notification_email_test_email_failed": "Neizdevās nosūtīt pārbaudes e-pastu, pārbaudi ievadītās vērtības",
"notification_email_test_email_sent": "Uz {email} ir nosūtīts testa e-pasts. Lūdzu, pārbaudi savu iesūtni.",
"notification_email_username_description": "Lietotājvārds, kas jāizmanto, autentificējoties ar e-pasta serveri",
"notification_enable_email_notifications": "Iespējot e-pasta paziņojumus",
"notification_settings": "Paziņojumu iestatījumi",
"notification_settings_description": "Paziņojumu iestatījumu, tostarp e-pasta, pārvaldība",
"oauth_auto_launch": "Palaist automātiski",
@@ -190,12 +234,18 @@
"oauth_auto_register": "Automātiska reģistrācija",
"oauth_auto_register_description": "Pēc pieslēgšanās ar OAuth automātiski reģistrēt jaunus lietotājus",
"oauth_button_text": "Pogas teksts",
"oauth_client_secret_description": "Nepieciešams, ja OAuth pakalpojuma sniedzējs neatbalsta PKCE (Proof Key for Code Exchange)",
"oauth_enable_description": "Pieslēgties ar OAuth",
"oauth_role_claim": "Lomas pieteikums",
"oauth_role_claim_description": "Automātiski piešķirt administratora piekļuvi, pamatojoties uz šīs prasības klātbūtni. Prasība var būt vai nu \"user\", vai \"admin\".",
"oauth_settings": "OAuth",
"oauth_settings_description": "OAuth pieteikšanās iestatījumu pārvaldība",
"oauth_settings_more_details": "Plašāku informāciju par šo funkcionalitāti skatīt <link>dokumentācijā</link>.",
"oauth_storage_label_claim": "Glabātuves nosaukuma pieteikums",
"oauth_storage_label_claim_description": "Automātiski iestatīt lietotāja glabātuves nosaukumu uz šī pieteikuma vērtību.",
"oauth_storage_quota_default": "Noklusējuma krātuves kvota (GiB)",
"oauth_timeout": "Pieprasījuma noildze",
"oauth_timeout_description": "Pieprasījumu laika limits milisekundēs",
"password_enable_description": "Pieteikšanās ar e-pasta adresi un paroli",
"password_settings": "Pieteikšanās ar paroli",
"password_settings_description": "Pieteikšanās ar paroli iestatījumu pārvaldība",
@@ -223,13 +273,17 @@
"slideshow_duration_description": "Katra attēla rādīšanas ilgums sekundēs",
"smart_search_job_description": "Analizēt failus ar mašīnmācīšanos lai sagatavotu datus viedajai meklēšanai",
"storage_template_date_time_sample": "Laika paraugs {date}",
"storage_template_hash_verification_enabled": "Jaucējvērtību pārbaude ir iespējota",
"storage_template_hash_verification_enabled_description": "Iespējo jaucējvērtību pārbaudi, neatslēdz to, ja neapzinies sekas",
"storage_template_migration": "Krātuves veidņu migrācija",
"storage_template_migration_description": "Piemēro pašreizējo <link>{template}</link> iepriekš augšupielādētajiem failiem",
"storage_template_migration_info": "Krātuves veidne pārveidos visus failu paplašinājumus uz mazajiem burtiem. Veidnes izmaiņas attieksies tikai uz jauniem failiem. Lai veidni piemērotu ar atpakaļejošu efektu iepriekš augšupielādētiem failiem, palaidiet <link>{job}</link>.",
"storage_template_migration_job": "Krātuves veidņu migrācijas uzdevumu",
"storage_template_more_details": "Plašāku informāciju par šo funkcionalitāti skatīt sadaļā <template-link>Krātuves veidne</template-link> un tās <implications-link>sekas</implications-link>",
"storage_template_path_length": "Aptuvenais ceļa garuma ierobežojums: <b>{length, number}</b>/{limit, number}",
"storage_template_settings": "Krātuves veidne",
"storage_template_user_label": "<code>{label}</code> ir lietotāja glabātuves nosaukums",
"storage_template_settings_description": "Pārvaldīt augšupielādēto failu mapju struktūru un faila nosaukumu",
"storage_template_user_label": "Lietotāja krātuves nosaukums ir <code>{label}</code>",
"system_settings": "Sistēmas iestatījumi",
"template_email_available_tags": "Sagatavē var izmantot šos mainīgos: {tags}",
"template_email_if_empty": "Ja sagatave ir tukša, tiks izmantots noklusējuma e-pasts.",
@@ -249,6 +303,7 @@
"transcoding_acceleration_rkmpp": "RKMPP (tikai Rockchip SOC)",
"transcoding_acceleration_vaapi": "VAAPI",
"transcoding_accepted_video_codecs": "Akceptētie video kodeki",
"transcoding_accepted_video_codecs_description": "Izvēlies, kurus video kodekus nav nepieciešams transkodēt. Tiek izmantots tikai noteiktām transkodēšanas politikām.",
"transcoding_advanced_options_description": "Lielākajai daļai lietotāju nevajadzētu mainīt šīs opcijas",
"transcoding_audio_codec": "Audio kodeks",
"transcoding_audio_codec_description": "Opus ir augstākās kvalitātes izvēle, bet tā ir mazāk saderīga ar vecām ierīcēm vai programmatūru.",
@@ -288,9 +343,9 @@
"advanced_settings_log_level_title": "Žurnalēšanas līmenis: {level}",
"advanced_settings_prefer_remote_subtitle": "Dažās ierīcēs sīktēli no ierīces atmiņas ielādējas ļoti lēni. Aktivizējiet šo iestatījumu, lai tā vietā ielādētu attālus attēlus.",
"advanced_settings_prefer_remote_title": "Dot priekšroku attāliem attēliem",
"advanced_settings_proxy_headers_title": "Starpniekservera galvenes",
"advanced_settings_proxy_headers_title": "Pielāgotas starpniekservera galvenes [EKSPERIMENTĀLAS]",
"advanced_settings_self_signed_ssl_subtitle": "Izlaiž servera galapunkta SSL sertifikātu verifikāciju. Nepieciešams pašparakstītajiem sertifikātiem.",
"advanced_settings_self_signed_ssl_title": "Atļaut pašparakstītus SSL sertifikātus",
"advanced_settings_self_signed_ssl_title": "Atļaut pašparakstītus SSL sertifikātus [EKSPERIMENTĀLI]",
"advanced_settings_tile_subtitle": "Lietotāja papildu iestatījumi",
"advanced_settings_troubleshooting_subtitle": "Iespējot papildu aktīvus problēmu novēršanai",
"advanced_settings_troubleshooting_title": "Problēmas novēršana",
@@ -308,6 +363,7 @@
"album_leave": "Pamest albumu?",
"album_name": "Albuma nosaukums",
"album_remove_user": "Noņemt lietotāju?",
"album_summary": "Albuma kopsavilkums",
"album_updated": "Albums atjaunināts",
"album_user_left": "Pameta {album}",
"album_user_removed": "Noņēma {user}",
@@ -337,10 +393,14 @@
"api_key": "API atslēga",
"api_key_description": "Šī vērtība tiks parādīta tikai vienu reizi. Nokopējiet to pirms loga aizvēršanas.",
"api_keys": "API atslēgas",
"app_architecture_variant": "Variants (arhitektūra)",
"app_bar_signout_dialog_content": "Vai tiešām vēlaties izrakstīties?",
"app_bar_signout_dialog_ok": "Jā",
"app_bar_signout_dialog_title": "Izrakstīties",
"app_download_links": "Lietotņu lejupielādes saites",
"app_settings": "Lietotnes iestatījumi",
"app_stores": "Lietotņu veikali",
"app_update_available": "Pieejams lietotnes atjauninājums",
"appears_in": "Parādās iekš",
"apply_count": "Pielietot ({count, number})",
"archive": "Arhīvs",
@@ -354,6 +414,7 @@
"asset_added_to_album": "Pievienots albumam",
"asset_adding_to_album": "Pievieno albumam…",
"asset_description_updated": "Faila apraksts ir atjaunināts",
"asset_hashing": "Veido jaucējvērtības…",
"asset_list_group_by_sub_title": "Grupēt pēc",
"asset_list_layout_settings_dynamic_layout_title": "Dinamiskais izkārtojums",
"asset_list_layout_settings_group_automatically": "Automātiski",
@@ -517,7 +578,7 @@
"client_cert_invalid_msg": "Nederīgs sertifikāta fails vai nepareiza parole",
"client_cert_remove_msg": "Klienta sertifikāts ir noņemts",
"client_cert_subtitle": "Atbalsta tikai PKCS12 (.p12, .pfx) formātu. Sertifikātu importēšana/noņemšana ir pieejama tikai pirms pieslēgšanās",
"client_cert_title": "SSL klienta sertifikāts",
"client_cert_title": "SSL klienta sertifikāts [EKSPERIMENTĀLS]",
"clockwise": "Pulksteņrādītāja virzienā",
"close": "Aizvērt",
"collapse": "Sakļaut",
@@ -529,7 +590,6 @@
"comments_and_likes": "Komentāri un tīkšķi",
"comments_are_disabled": "Komentāri ir atslēgti",
"common_create_new_album": "Izveidot jaunu albumu",
"common_server_error": "Lūdzu, pārbaudiet tīkla savienojumu, pārliecinieties, vai serveris ir sasniedzams un aplikācijas/servera versijas ir saderīgas.",
"completed": "Pabeigts",
"confirm": "Apstiprināt",
"confirm_admin_password": "Administratora paroles apstiprinājums",
@@ -554,6 +614,7 @@
"create": "Izveidot",
"create_album": "Izveidot albumu",
"create_album_page_untitled": "Bez nosaukuma",
"create_api_key": "Izveidot API atslēgu",
"create_library": "Izveidot bibliotēku",
"create_link": "Izveidot saiti",
"create_link_to_share": "Izveidot kopīgošanas saiti",
@@ -654,6 +715,7 @@
"edit_date_and_time_action_prompt": "{count} datums un laiks labots",
"edit_description": "Labot aprakstu",
"edit_description_prompt": "Lūdzu, izvēlies jaunu aprakstu:",
"edit_exclusion_pattern": "Labot izslēgšanas šablonu",
"edit_faces": "Labot sejas",
"edit_import_path": "Labot importa ceļu",
"edit_import_paths": "Labot importa ceļus",
@@ -665,7 +727,6 @@
"edit_people": "Labot profilu",
"edit_title": "Labot nosaukumu",
"edit_user": "Labot lietotāju",
"edited": "Labots",
"editor": "Redaktors",
"editor_close_without_save_prompt": "Izmaiņas netiks saglabātas",
"editor_close_without_save_title": "Aizvērt redaktoru?",
@@ -693,7 +754,7 @@
"cant_apply_changes": "Nevar piemērot izmaiņas",
"cant_get_faces": "Nevar iegūt sejas",
"cant_search_people": "Neizdevās veikt peronu meklēšanu",
"exclusion_pattern_already_exists": "Šāds izslēgšanas paraugs jau pastāv.",
"exclusion_pattern_already_exists": "Šāds izslēgšanas šablons jau pastāv.",
"failed_to_create_album": "Neizdevās izveidot albumu",
"failed_to_create_shared_link": "Neizdevās izvedot kopīgošanas saiti",
"failed_to_edit_shared_link": "Neizdevās labot kopīgoto saiti",
@@ -712,6 +773,7 @@
"incorrect_email_or_password": "Nepareizs e-pasts vai parole",
"profile_picture_transparent_pixels": "Profila attēlos nevar būt caurspīdīgi pikseļi. Lūdzu, palielini un/vai pārvieto attēlu.",
"something_went_wrong": "Kaut kas nogāja greizi",
"unable_to_add_exclusion_pattern": "Neizdevās pievienot izslēgšanas šablonu",
"unable_to_change_description": "Neizdevās nomainīt aprakstu",
"unable_to_create_admin_account": "Nevar izveidot administratora kontu",
"unable_to_create_api_key": "Nevar izveidot jaunu API atslēgu",
@@ -719,7 +781,9 @@
"unable_to_create_user": "Neizdevās izveidot lietotāju",
"unable_to_delete_album": "Nevar izdzēst albumu",
"unable_to_delete_asset": "Nevar izdzēst failu",
"unable_to_delete_exclusion_pattern": "Neizdevās dzēst izslēgšanas šablonu",
"unable_to_delete_user": "Neizdevās dzēst lietotāju",
"unable_to_edit_exclusion_pattern": "Neizdevās labot izslēgšanas šablonu",
"unable_to_empty_trash": "Neizdevās iztukšot atkritni",
"unable_to_hide_person": "Neizdevās paslēpt personu",
"unable_to_restore_trash": "Neizdevās atjaunot failus no atkritnes",
@@ -733,6 +797,7 @@
"exif_bottom_sheet_description": "Pievienot Aprakstu...",
"exif_bottom_sheet_details": "INFORMĀCIJA",
"exif_bottom_sheet_location": "ATRAŠANĀS VIETA",
"exif_bottom_sheet_no_description": "Nav apraksta",
"exif_bottom_sheet_people": "PERSONAS",
"exif_bottom_sheet_person_add_person": "Pievienot vārdu",
"exit_slideshow": "Iziet no slīdrādes",
@@ -801,7 +866,6 @@
"header_settings_field_validator_msg": "Vērtība nevar būt tukša",
"header_settings_header_name_input": "Galvenes lauks",
"header_settings_header_value_input": "Galvenes vērtība",
"headers_settings_tile_subtitle": "Norādiet starpniekservera galvenes, kuras lietotnei jānosūta ar katru tīkla pieprasījumu",
"headers_settings_tile_title": "Pielāgotas starpniekservera galvenes",
"hide_all_people": "Paslēpt visas personas",
"hide_gallery": "Paslēpt galeriju",
@@ -889,6 +953,8 @@
"library_page_sort_last_modified": "Pēdējās izmaiņas",
"library_page_sort_title": "Albuma virsraksts",
"licenses": "Licences",
"like": "Patīk",
"like_deleted": "Tīkšķis dzēsts",
"link_to_oauth": "Piesaistīt OAuth",
"linked_oauth_account": "Piesaistītais OAuth konts",
"list": "Saraksts",
@@ -983,6 +1049,8 @@
"minute": "Minūte",
"minutes": "Minūtes",
"missing": "Trūkstošie",
"mobile_app": "Mobilā lietotne",
"mobile_app_download_onboarding_note": "Lejupielādē papildinošo mobilo lietotni, izmantojot šādas izvēles iespējas",
"model": "Modelis",
"month": "Mēnesis",
"monthly_title_text_date_format": "MMMM g",
@@ -1000,6 +1068,7 @@
"my_albums": "Mani albumi",
"name": "Vārds",
"name_or_nickname": "Vārds vai iesauka",
"navigate_to_time": "Pāriet uz laiku",
"network_requirement_photos_upload": "Izmantot mobilo datu pārraidi, lai dublētu fotoattēlus",
"network_requirement_videos_upload": "Izmantot mobilo datu pārraidi, lai dublētu video",
"network_requirements": "Tīkla prasības",
@@ -1036,6 +1105,7 @@
"no_places": "Nav atrašanās vietu",
"no_results": "Nav rezultātu",
"no_results_description": "Izmēģiniet sinonīmu vai vispārīgāku atslēgvārdu",
"not_available": "Nav pieejams",
"not_in_any_album": "Nav nevienā albumā",
"not_selected": "Nav izvēlēts",
"note_apply_storage_label_to_previously_uploaded assets": "Piezīme: Lai piemērotu glabātuves nosaukumu iepriekš augšupielādētiem failiem, izpildiet",
@@ -1049,6 +1119,8 @@
"notifications": "Paziņojumi",
"notifications_setting_description": "Paziņojumu pārvaldība",
"oauth": "OAuth",
"obtainium_configurator": "Obtainium konfigurētājs",
"obtainium_configurator_instructions": "Lūdzu, izveido API atslēgu un izvēlies variantu, lai izveidotu savu Obtainium konfigurācijas saiti.",
"official_immich_resources": "Oficiālie Immich resursi",
"offline": "Bezsaistē",
"offset": "Nobīde",
@@ -1090,6 +1162,7 @@
"password": "Parole",
"password_does_not_match": "Parole nesakrīt",
"path": "Ceļš",
"pattern": "Šablons",
"pause": "Pauzēt",
"pause_memories": "Pauzēt atmiņas",
"paused": "Nopauzēts",
@@ -1118,6 +1191,7 @@
"please_auth_to_access": "Lai piekļūtu, lūdzu, autentificējieties",
"port": "Ports",
"preferences_settings_title": "Iestatījumi",
"preparing": "Sagatavo",
"preview": "Priekšskatījums",
"previous": "Iepriekšējais",
"previous_memory": "Iepriekšējā atmiņa",
@@ -1127,12 +1201,8 @@
"privacy": "Privātums",
"profile": "Profils",
"profile_drawer_app_logs": "Žurnāli",
"profile_drawer_client_out_of_date_major": "Mobilā lietotne ir novecojusi. Lūdzu, atjaunini to uz jaunāko pamatversiju.",
"profile_drawer_client_out_of_date_minor": "Mobilā lietotne ir novecojusi. Lūdzu, atjaunini to uz jaunāko papildversiju.",
"profile_drawer_client_server_up_to_date": "Klients un serveris ir atjaunināti",
"profile_drawer_github": "GitHub",
"profile_drawer_server_out_of_date_major": "Serveris ir novecojis. Lūdzu, atjaunini to uz jaunāko pamatversiju.",
"profile_drawer_server_out_of_date_minor": "Serveris ir novecojis. Lūdzu, atjaunini to uz jaunāko papildversiju.",
"profile_image_of_user": "{user} profila attēls",
"profile_picture_set": "Profila attēls iestatīts.",
"public_album": "Publisks albums",
@@ -1303,6 +1373,7 @@
"server_online": "Serveris tiešsaistē",
"server_privacy": "Servera privātums",
"server_stats": "Servera statistika",
"server_update_available": "Pieejams servera atjauninājums",
"server_version": "Servera versija",
"set_as_album_cover": "Iestatīt kā albuma vāciņu",
"set_as_profile_picture": "Iestatīt kā profila attēlu",
@@ -1325,6 +1396,8 @@
"setting_notifications_subtitle": "Paziņojumu preferenču pielāgošana",
"setting_notifications_total_progress_subtitle": "Kopējais augšupielādes progress (pabeigti/kopējie faili)",
"setting_notifications_total_progress_title": "Rādīt fona dublējuma kopējo progresu",
"setting_video_viewer_auto_play_subtitle": "Automātiski sākt videoklipu atskaņošanu, kad tie tiek atvērti",
"setting_video_viewer_auto_play_title": "Automātiska video atskaņošana",
"setting_video_viewer_looping_title": "Cikliski",
"setting_video_viewer_original_video_subtitle": "Straumējot video no servera, izmantot oriģinālu, pat ja ir pieejama pārkodēšana. Tas var izraisīt buferēšanu. Lokāli pieejamie video tiek atskaņoti oriģinālajā kvalitātē, neatkarīgi no šīs iestatījuma.",
"setting_video_viewer_original_video_title": "Vienmēr izmantot oriģinālo video",
@@ -1499,6 +1572,7 @@
"unsaved_change": "Nesaglabāta izmaiņa",
"unselect_all": "Atcelt visu atlasi",
"unstack": "At-Stekot",
"update_location_action_prompt": "Norādīt {count} izvēlēto failu atrašanās vietu kā:",
"updated_at": "Atjaunināts",
"updated_password": "Parole ir atjaunināta",
"upload": "Augšupielādēt",

View File

@@ -2,7 +2,7 @@
"about": "За Immich",
"account": "Профил",
"account_settings": "Поставки за профилот",
"acknowledge": "Прочитано",
"acknowledge": "Маркирај прочитано",
"action": "Акција",
"action_common_update": "Ажурирај",
"actions": "Акции",
@@ -33,6 +33,7 @@
"add_to_albums": "Додади во албуми",
"add_to_albums_count": "Додади во албуми ({count})",
"add_to_shared_album": "Додади во споделен албум",
"add_upload_to_stack": "Додај прикаченото во куп",
"add_url": "Додади URL",
"added_to_archive": "Додадено во архива",
"added_to_favorites": "Додадено во омилени",
@@ -197,7 +198,6 @@
"edit_location": "Уреди локација",
"edit_people": "Уреди луѓе",
"edit_user": "Уреди корисник",
"edited": "Уредено",
"editor": "Уредувач",
"editor_crop_tool_h2_rotation": "Ротација",
"email": "Е-пошта",

View File

@@ -700,7 +700,6 @@
"comments_and_likes": "അഭിപ്രായങ്ങളും ലൈക്കുകളും",
"comments_are_disabled": "അഭിപ്രായങ്ങൾ പ്രവർത്തനരഹിതമാക്കി",
"common_create_new_album": "പുതിയ ആൽബം ഉണ്ടാക്കുക",
"common_server_error": "നിങ്ങളുടെ നെറ്റ്‌വർക്ക് കണക്ഷൻ പരിശോധിക്കുക, സെർവർ ലഭ്യമാണെന്നും ആപ്പ്/സെർവർ പതിപ്പുകൾ അനുയോജ്യമാണെന്നും ഉറപ്പാക്കുക.",
"completed": "പൂർത്തിയായി",
"confirm": "സ്ഥിരീകരിക്കുക",
"confirm_admin_password": "അഡ്മിൻ പാസ്‌വേഡ് സ്ഥിരീകരിക്കുക",
@@ -882,7 +881,6 @@
"edit_tag": "ടാഗ് എഡിറ്റുചെയ്യുക",
"edit_title": "ശീർഷകം എഡിറ്റുചെയ്യുക",
"edit_user": "ഉപയോക്താവിനെ എഡിറ്റുചെയ്യുക",
"edited": "എഡിറ്റുചെയ്തു",
"editor": "എഡിറ്റർ",
"editor_close_without_save_prompt": "മാറ്റങ്ങൾ സേവ് ചെയ്യില്ല",
"editor_close_without_save_title": "എഡിറ്റർ അടയ്ക്കണോ?",
@@ -1119,7 +1117,6 @@
"header_settings_field_validator_msg": "മൂല്യം ശൂന്യമാകരുത്",
"header_settings_header_name_input": "ഹെഡറിന്റെ പേര്",
"header_settings_header_value_input": "ഹെഡറിന്റെ മൂല്യം",
"headers_settings_tile_subtitle": "ഓരോ നെറ്റ്‌വർക്ക് അഭ്യർത്ഥനയ്‌ക്കൊപ്പവും ആപ്പ് അയയ്‌ക്കേണ്ട പ്രോക്സി ഹെഡറുകൾ നിർവചിക്കുക",
"headers_settings_tile_title": "കസ്റ്റം പ്രോക്സി ഹെഡറുകൾ",
"hi_user": "നമസ്കാരം {name} ({email})",
"hide_all_people": "എല്ലാ ആളുകളെയും മറയ്ക്കുക",
@@ -1542,13 +1539,9 @@
"privacy": "സ്വകാര്യത",
"profile": "പ്രൊഫൈൽ",
"profile_drawer_app_logs": "ലോഗുകൾ",
"profile_drawer_client_out_of_date_major": "മൊബൈൽ ആപ്പ് കാലഹരണപ്പെട്ടു. ദയവായി ഏറ്റവും പുതിയ പ്രധാന പതിപ്പിലേക്ക് അപ്ഡേറ്റ് ചെയ്യുക.",
"profile_drawer_client_out_of_date_minor": "മൊബൈൽ ആപ്പ് കാലഹരണപ്പെട്ടു. ദയവായി ഏറ്റവും പുതിയ മൈനർ പതിപ്പിലേക്ക് അപ്ഡേറ്റ് ചെയ്യുക.",
"profile_drawer_client_server_up_to_date": "ക്ലയിന്റും സെർവറും ഏറ്റവും പുതിയതാണ്",
"profile_drawer_github": "ഗിറ്റ്ഹബ്",
"profile_drawer_readonly_mode": "റീഡ്-ഓൺലി മോഡ് പ്രവർത്തനക്ഷമമാക്കി. പുറത്തുകടക്കാൻ ഉപയോക്തൃ അവതാർ ഐക്കണിൽ ദീർഘനേരം അമർത്തുക.",
"profile_drawer_server_out_of_date_major": "സെർവർ കാലഹരണപ്പെട്ടു. ദയവായി ഏറ്റവും പുതിയ പ്രധാന പതിപ്പിലേക്ക് അപ്ഡേറ്റ് ചെയ്യുക.",
"profile_drawer_server_out_of_date_minor": "സെർവർ കാലഹരണപ്പെട്ടു. ദയവായി ഏറ്റവും പുതിയ മൈനർ പതിപ്പിലേക്ക് അപ്ഡേറ്റ് ചെയ്യുക.",
"profile_image_of_user": "{user}-ന്റെ പ്രൊഫൈൽ ചിത്രം",
"profile_picture_set": "പ്രൊഫൈൽ ചിത്രം സജ്ജീകരിച്ചു.",
"public_album": "പൊതു ആൽബം",

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