Compare commits

...

80 Commits

Author SHA1 Message Date
Jason Rasmussen
82f05e9ca9 feat: editor endpoints 2024-08-08 15:45:42 -04:00
Michel Heusschen
11f41099c3 chore(web): remove font-size of 17px (#11657) 2024-08-08 13:26:53 -05:00
Michel Heusschen
96481aae5d refactor(web): supporter badge (#11656)
* refactor(web): supporter badge

* add style lang
2024-08-08 14:02:44 -04:00
Michel Heusschen
4a42a72bd3 fix(server): use luxon for maxdate validator (#11651) 2024-08-08 09:02:39 -05:00
Michel Heusschen
66f2ac8ce3 fix(web): keep album description in sync (#11652) 2024-08-08 09:02:08 -05:00
dependabot[bot]
6b2de807a7 chore(deps): bump docker/build-push-action from 6.6.0 to 6.6.1 (#11646)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.6.0 to 6.6.1.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6.6.0...v6.6.1)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-08 07:28:40 -04:00
Michel Heusschen
96f8050143 feat(web): improve group-tab accessibility (#11647)
feat(web): improve GroupTab accessibility
2024-08-08 07:28:24 -04:00
Zack Pollard
14689462f8 feat: change web asset detail map to zoom level 12.5 (#11643) 2024-08-07 23:38:02 +01:00
Matthew Mirvish
fb68da2b51 fix(server): avoid transcoding thumbnail streams (#11603)
Co-authored-by: mincrmatt12 <mincrmatt12@users.noreply.github.com>
2024-08-07 18:36:37 -04:00
Alex
720b9a286e chore(mobile): update other dependencies (#11641) 2024-08-07 14:09:56 -05:00
Alex
d93ccb1669 chore(mobile): update maplibre_gl dep (#11640) 2024-08-07 13:47:40 -05:00
Alex
c34fc4f2d1 fix(mobile): iOS crashing when download iCloud content (#11639) 2024-08-07 13:09:15 -05:00
Matthew Momjian
905a062a6e docs: how to decrease Redis logs (#11638) 2024-08-07 18:38:27 +01:00
renovate[bot]
aeed24b5b4 fix(deps): update typescript-projects (#11606)
* fix(deps): update typescript-projects

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-08-07 15:45:30 +00:00
Johannes Groß
28ba22e8c1 fix(server): handle numeric 'Image Description' and 'Description' values (#11636)
* Made 'Image Description' and 'Description' type safe during exif parsing

* add test + update types

---------

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2024-08-07 15:23:36 +00:00
Jason Rasmussen
5b64456f48 chore: more cursed knowledge (#11631)
* chore: more cursed knowledge

* chore: more cursed knowledge

* chore: rework footer
2024-08-07 09:54:57 -04:00
Jason Rasmussen
02fd6d22b3 chore: more cursed knowledge (#11630) 2024-08-07 12:36:30 +00:00
dependabot[bot]
10ed31d725 chore(deps): bump docker/build-push-action from 6.5.0 to 6.6.0 (#11629)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.5.0 to 6.6.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6.5.0...v6.6.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-07 08:31:23 -04:00
Mert
23d4314eed chore(server): support pgvecto.rs 0.3.0 (#11624)
relax pgvecto.rs constraint
2024-08-06 23:04:55 -04:00
renovate[bot]
ea135cc310 chore(deps): update dependency @types/node to ^20.14.13 (#11604)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-06 22:59:26 -04:00
Saschl
745e1b003d feat(mobile): enable wakelock on backup page (#11621) 2024-08-06 17:13:11 -05:00
Alex
1dae622dbc chore(mobile): minor styling fix (#11619) 2024-08-06 14:39:07 -05:00
renovate[bot]
8ca24f0ef2 fix(deps): update dependency auto_route to v9 (#11566)
* fix(deps): update dependency auto_route to v9

* fix dep conflict

* linting

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-08-06 12:50:20 -05:00
renovate[bot]
f679021f0e fix(deps): update dependency share_plus to v10 (#11550)
* fix(deps): update dependency share_plus to v10

* resolve dep conflict

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-08-06 17:24:55 +00:00
i-am-a-teapot
65f5118bdd feat(web): Add stacking option to deduplication utilities (#11114)
* feat(web): Add stacking option to deduplication utilities

* Update web/src/lib/components/utilities-page/duplicates/duplicates-compare-control.svelte

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

* Fix prettier

* Draft for server side modifications. Endpoint for stacks (PUT,DELETE)

* Fix error

* Disable stakc button if less or more than one asset selected

* Remove unnecesarry log

* Revert to first commit

* Further Revert

* Actually Revert to Origin

* Only one stack button

* Update +page.svelte

* Fix optional arguments

* Fix Prettier

* Fix Linting

* Add stack information to asset view

* clean up

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-08-06 17:06:30 +00:00
renovate[bot]
9f4fad2a0f chore(deps): update base-image to v20240806 (major) (#11616)
chore(deps): update base-image to v20240806

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-06 12:57:03 -04:00
Michel Heusschen
325fb4b5d1 fix(server): video duration extraction (#11610) 2024-08-06 11:27:05 -05:00
Alex
f040c9fb38 chore(server): remove get person asset limit (#11597)
* chore(server): remover get person asset limit

* sql

* remove getPersonAsset endpoint

* remove getPersonAsset endpoint

* use search endpoint to get people

* fix: server test

* mobile linter

* fix: server test

* remove debuglog

* deprecated endpoint

* change page size on mobile

* revert max size

* fix test
2024-08-06 16:22:13 +00:00
Pruthvi Bugidi
0eacdf93eb feat(mobile): add support for material themes (#11560)
* feat(mobile): add support for material themes

Added support for custom theming and updated all elements accordingly.

* fix(mobile): Restored immich brand colors to default theme

* fix(mobile): make ListTile titles bold in settings main page

* feat(mobile): update bottom nav and appbar colors

* small tweaks

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-08-06 14:20:27 +00:00
renovate[bot]
20262209ce fix(deps): update dependency setuptools to v70 [security] (#11609) 2024-08-06 10:09:38 -04:00
Michel Heusschen
dd638ac207 fix(web): slideshow on iphone (#11599)
* fix(web): slideshow on iphone

* make requestFullscreen type optional
2024-08-06 08:34:17 -05:00
Mert
d5b23373c7 refactor(server): startup checks for vector extension (#11559)
* update update logic

refactor

* update tests

* get version range through repo method, make tests more static

* move "should work" test
2024-08-05 21:00:25 -04:00
renovate[bot]
9765ccb5a7 chore(deps): update machine-learning (#11605)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-05 21:00:00 -04:00
renovate[bot]
82d934d09d chore(deps): update dependency eslint to v9 (#11601)
* chore(deps): update dependency eslint to v9

* chore: migrate to eslint flat config files

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-08-05 16:13:16 -04:00
renovate[bot]
2821e0bf95 chore(deps): update typescript-eslint monorepo to v8 (major) (#11598)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-08-05 19:13:00 +00:00
Michel Heusschen
bb3d9b6306 chore(web): remove unused event type definitions (#11600) 2024-08-05 14:50:48 -04:00
Alex
c83df2686a fix(mobile): autofill (#11591) 2024-08-05 12:02:31 -05:00
Jason Rasmussen
94da5942bd feat(web): open in map view (#11592) 2024-08-05 10:25:53 -05:00
Alex
54d2c12fff feat(docs): privacy policy (#11535) 2024-08-05 10:06:01 -05:00
foxit64
64fcb25971 fix: dockerfile linter error (#11590)
fix yamllint

Co-authored-by: sysadmin <sysadmin@localhost>
2024-08-05 09:02:02 -05:00
Jason Rasmussen
7f03bd8440 chore: dockerfile casing (#11589)
chore: docokerfile casing
2024-08-05 07:51:30 -05:00
Jason Rasmussen
2974cdbbee chore: dockerfile casing (#11588) 2024-08-05 12:07:28 +00:00
Yuvraj P
f0677735fd fix(mobile): Naming fix for the edited file (#11503) 2024-08-04 23:48:02 -05:00
Stefan Berggren
bb78eb4c4b Add Immich Distribution to Community Projects page (#11576)
Signed-off-by: Stefan Berggren <nsg@nsg.cc>
2024-08-05 03:36:55 +00:00
Mert
4ed75f2ac9 refactor(server): add config events for clip (#11575)
use config events for clip, add tests

formatting
2024-08-04 21:00:36 +00:00
Mert
3f4b783889 chore: add healthcheck field to server and ml (#11573)
add healthcheck field to server and ml
2024-08-04 13:37:43 -05:00
renovate[bot]
3968d76a57 fix(deps): update machine-learning (#11320) 2024-08-03 09:24:09 -04:00
Zack Pollard
55b31d1ce2 chore(web): fix weblate and other cleanup (#11532) 2024-08-02 13:35:47 +00:00
oidq
37cc6fbf27 fix(web): prevent change-location suggestion race-condition (#11523)
When debouncer activated on deletion, the handleSearchPlaces() function
would fire a request with empty query. UI would then show Immich API error.
2024-08-02 05:52:17 +00:00
Weblate (bot)
899b8a0ce7 chore(web): update translations (#11458)
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/he/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/hu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ko/
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/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/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Atakan Dulker <atakandulker@gmail.com>
Co-authored-by: Czerjak N <czerjaknorbert@gmail.com>
Co-authored-by: Dmitry Banny <dj.icecore@gmail.com>
Co-authored-by: ElTopo <cameos@gmail.com>
Co-authored-by: Enoé Mugnaschi <enmuro@gmail.com>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Laurentiu <laurfb@gmail.com>
Co-authored-by: Luna Kowalik <0skar16.contact@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Pheggas <petko252@gmail.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Vladimir Petrov (Vlado) <mr.vlado@gmail.com>
Co-authored-by: Voinea Laurentiu Gabriel <gabivoinea29@gmail.com>
Co-authored-by: chapvic <victor@chapaev.org>
Co-authored-by: dkorecko <reset259@gmail.com>
Co-authored-by: dvbthien <dvbthien@dvbthien.onmicrosoft.com>
Co-authored-by: oopzzozzo <ek3ru8m4@gmail.com>
Co-authored-by: 李奕寯 <eugenelego88@gmail.com>
2024-08-01 23:30:44 -04:00
Justin Forseth
d3a5490e71 feat(server): search unknown place (#10866)
* Allow submission of null country

* Update searchAssetBuilder to handle nulls

andWhere({country:null}) produces `"exifInfo"."country" = NULL`. We want
`"exifInfo"."country" IS NULL`, so we have to treat NULL as a special
case

* Allow null country in frontend

* Make the query code a bit more straightforward

* Remove unused brackets import

* Remove log message

* Don't change whitespace for no reason

* Fix prettier style issue

* Update search.dto.ts validators per @jrasm91's recommendation

* Update api types

* Combine null country and state into one guard clause

* chore: clean up

* chore: add e2e for null/empty city, state, country search

* refactor: server returns suggestion for null values

* chore: clean up

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-08-02 03:27:40 +00:00
Michel Heusschen
3afb5b497f fix(web): correctly format future timeline dates (#11506) 2024-08-01 07:39:26 -04:00
Michel Heusschen
1f0f880ecb fix(web): websocket over ipv6 (#11508) 2024-08-01 07:36:31 -04:00
martyfuhry
2c05ceaf50 fix(server): external domain url validation (#11493)
* fix(web): Changes externalDomain to IsUrl()

* refactor(web): asset viewer actions (#11449)

* refactor(web): asset viewer actions

* motion photo slot and more refactoring

fix(web): Changes externalDomain to IsUrl()

---------

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2024-07-31 14:09:30 -04:00
Yuvraj P
01f8b7e458 fix(mobile): Crop presets break crop rectangle #11462 (#11467)
Fix Issue 11464
2024-07-31 12:19:19 -05:00
Michel Heusschen
b73f7fe16f refactor: deduplicate MemoryType and ReactionType enums (#11479)
* refactor: deduplicate memorytype and reactiontype enums

* fix mobile
2024-07-31 12:08:31 -05:00
Michel Heusschen
281cfc95a4 refactor(web): asset viewer actions (#11449)
* refactor(web): asset viewer actions

* motion photo slot and more refactoring
2024-07-31 12:25:38 -04:00
renovate[bot]
3a3ea6135e chore(deps): update typescript-projects (#11437)
* chore(deps): update typescript-projects

* chore: formatting

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-07-31 15:40:23 +00:00
Jason Rasmussen
c44271e9b2 fix(deps): vitest@2 (#11491) 2024-07-31 11:26:35 -04:00
Jason Rasmussen
86904a8382 feat(web): more languages (#11488) 2024-07-31 10:26:17 -04:00
renovate[bot]
cf54829b3b chore(deps): update dependency eslint-plugin-unicorn to v55 (#11435)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-31 08:49:35 -04:00
dependabot[bot]
990627e00d chore(deps): bump stumpylog/image-cleaner-action from 0.7.0 to 0.8.0 (#11480)
Bumps [stumpylog/image-cleaner-action](https://github.com/stumpylog/image-cleaner-action) from 0.7.0 to 0.8.0.
- [Release notes](https://github.com/stumpylog/image-cleaner-action/releases)
- [Changelog](https://github.com/stumpylog/image-cleaner-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stumpylog/image-cleaner-action/compare/v0.7.0...v0.8.0)

---
updated-dependencies:
- dependency-name: stumpylog/image-cleaner-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-31 08:48:06 -04:00
Mert
41580696c7 feat(ml): add more search models (#11468)
* update export code

* add uuid glob, sort model names

* add new models to ml, sort names

* add new models to server, sort by dims and name

* typo in name

* update export dependencies

* onnx save function

* format
2024-07-31 04:34:45 +00:00
renovate[bot]
2423bb36c4 chore(deps): update grafana/grafana docker tag to v11.1.3 (#11451)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-31 00:09:13 -04:00
Ben McCann
82b899649d fix: make HTML valid (#11465) 2024-07-31 00:05:08 -04:00
Alex
8ee8450d18 chore(mobile): post release task (#11456) 2024-07-30 21:41:10 -05:00
dependabot[bot]
6d47d52b3c chore(deps): bump docker/setup-buildx-action from 3.5.0 to 3.6.1 (#11445)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.5.0 to 3.6.1.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v3.5.0...v3.6.1)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-30 16:22:11 -04:00
Alex The Bot
919fd7d41f Version v1.111.0 2024-07-30 19:06:39 +00:00
Alex
c2fdb6aab8 chores(mobile): Translations update (#11454)
chore(mobile): translation update
2024-07-30 14:03:04 -05:00
Weblate (bot)
b6c4da37fd chore(web): update translations (#11429)
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/de/
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/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/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/vi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Atakan Dulker <atakandulker@gmail.com>
Co-authored-by: CanbiZ <mickey.leskowitz@gmail.com>
Co-authored-by: Dmitry Banny <dj.icecore@gmail.com>
Co-authored-by: Enoé Mugnaschi <enmuro@gmail.com>
Co-authored-by: Florian Ostertag <florian.kuepper@gmail.com>
Co-authored-by: Junghyuk Kwon <kwon@junghy.uk>
Co-authored-by: Maciek S <maslanypotwor1@gmail.com>
Co-authored-by: Manar Aldroubi <droubi@gmail.com>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Ponas <le.slab124@aleeas.com>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: Ultragian <giancarlo.brasil@gmail.com>
Co-authored-by: Unimpeded Lemur <yg7lh0fz3@mozmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: tddaij <xdaint@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Вячеслав Лукьяненко <madeinchuguev@gmail.com>
Co-authored-by: 李奕寯 <eugenelego88@gmail.com>
2024-07-30 14:01:42 -05:00
Alex
17c3e8e8bf fix(mobile): mobile logging out randomly (#11431)
* fix(mobile): refactor splash screen to not require online connection

* chore: bump flutter sdk path for vscode

* refactor: authentication provider always try network calls and only fail if 401 or no local user

* lint

* fix: revert change to lookup serverendpoint from store the isar store implementation is very broken

* fix: clear serverUrl and serverEndpoint on logout, and await logout call

* refactor: remove unneeded extra conditions in splash screen useEffect

* revert change to remove serverEndpoint on logging out

* pr feedback

---------

Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2024-07-30 13:15:48 -05:00
renovate[bot]
21d3f248da chore(deps): update base-image to v20240730 (major) (#11447)
chore(deps): update base-image to v20240730

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-30 08:57:27 -04:00
renovate[bot]
a29660aae3 chore(deps): update dependency exiftool-vendored to v28 (#11440)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-30 07:30:25 -04:00
renovate[bot]
6c81fa0f0a fix(deps): update dependency exiftool-vendored to v28.2.0 (#11439)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-30 07:29:31 -04:00
renovate[bot]
7156da502f chore(deps): update node.js to eb8101c (#11436)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-29 22:53:17 -04:00
Alex
13741410a7 chore(mobile): Add text to bottom gallery bar (#11417) 2024-07-29 21:25:04 -05:00
Matthew Momjian
3408e6b3cb docs: warning to not edit volumes in compose (#11432)
* Update docker-compose.yml

* Update docker-compose.yml

* Update docker-compose.yml
2024-07-29 21:24:47 -05:00
Michel Heusschen
434bcec5cc fix(server): correct person birth date across timezones (#11369)
* fix(server): correct person birth date across timezones

* fix test

* update e2e tests

* use Optional decorator
2024-07-29 19:52:04 -04:00
Jason Rasmussen
ebc71e428d feat(server): reverse geocoding endpoint (#11430)
* feat(server): reverse geocoding endpoint

* chore: rename error message
2024-07-29 18:17:26 -04:00
eleith
a70cd368af fix(server): use fqdn for og:image meta tag value (#11082)
* attempt to use fqdn for og:image

opengraph image specifies that the url contains http or https, thus
implying a fqdn.

this change uses the external domain from the server config to attempt
to make the og:image have both the existing path to the thumbnail along
with the desired domain

if the server setting is empty, the old behavior will persist

please note, some og implementations do work with relative paths, so not
all og image checkers may still pass, but not all implementations have
this fallback and thus will not find the image otherwise

* tests and ssr for og:image value as fqdn

* formatting

* fix test

* formatting

* formatting

* fix tests

getConfig was requiring authentication. using already initiated global stores instead

* load config in shared link service itself

* join host and pathname/params safely

* use origin instead of host for full domain string

also fixes lint and address the imageURL type which is optional

* chore: clean up

---------

Co-authored-by: eleith <eleith@lemon.localdomain>
Co-authored-by: eleith <online-github@eleith.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2024-07-29 21:38:47 +00:00
353 changed files with 16811 additions and 11808 deletions

View File

@@ -59,7 +59,7 @@ jobs:
uses: docker/setup-qemu-action@v3.2.0 uses: docker/setup-qemu-action@v3.2.0
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.5.0 uses: docker/setup-buildx-action@v3.6.1
- name: Login to GitHub Container Registry - name: Login to GitHub Container Registry
uses: docker/login-action@v3 uses: docker/login-action@v3
@@ -88,7 +88,7 @@ jobs:
type=raw,value=latest,enable=${{ github.event_name == 'release' }} type=raw,value=latest,enable=${{ github.event_name == 'release' }}
- name: Build and push image - name: Build and push image
uses: docker/build-push-action@v6.5.0 uses: docker/build-push-action@v6.6.1
with: with:
file: cli/Dockerfile file: cli/Dockerfile
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64

View File

@@ -35,7 +35,7 @@ jobs:
steps: steps:
- name: Clean temporary images - name: Clean temporary images
if: "${{ env.TOKEN != '' }}" if: "${{ env.TOKEN != '' }}"
uses: stumpylog/image-cleaner-action/ephemeral@v0.7.0 uses: stumpylog/image-cleaner-action/ephemeral@v0.8.0
with: with:
token: "${{ env.TOKEN }}" token: "${{ env.TOKEN }}"
owner: "immich-app" owner: "immich-app"
@@ -64,7 +64,7 @@ jobs:
steps: steps:
- name: Clean untagged images - name: Clean untagged images
if: "${{ env.TOKEN != '' }}" if: "${{ env.TOKEN != '' }}"
uses: stumpylog/image-cleaner-action/untagged@v0.7.0 uses: stumpylog/image-cleaner-action/untagged@v0.8.0
with: with:
token: "${{ env.TOKEN }}" token: "${{ env.TOKEN }}"
owner: "immich-app" owner: "immich-app"

View File

@@ -66,7 +66,7 @@ jobs:
uses: docker/setup-qemu-action@v3.2.0 uses: docker/setup-qemu-action@v3.2.0
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.5.0 uses: docker/setup-buildx-action@v3.6.1
- name: Login to Docker Hub - name: Login to Docker Hub
# Only push to Docker Hub when making a release # Only push to Docker Hub when making a release
@@ -115,7 +115,7 @@ jobs:
fi fi
- name: Build and push image - name: Build and push image
uses: docker/build-push-action@v6.5.0 uses: docker/build-push-action@v6.6.1
with: with:
context: ${{ matrix.context }} context: ${{ matrix.context }}
file: ${{ matrix.file }} file: ${{ matrix.file }}

View File

@@ -1 +0,0 @@
/dist

View File

@@ -1,28 +0,0 @@
module.exports = {
parser: '@typescript-eslint/parser',
parserOptions: {
project: 'tsconfig.json',
sourceType: 'module',
tsconfigRootDir: __dirname,
},
plugins: ['@typescript-eslint/eslint-plugin'],
extends: ['plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended', 'plugin:unicorn/recommended'],
root: true,
env: {
node: true,
},
ignorePatterns: ['.eslintrc.js'],
rules: {
'@typescript-eslint/interface-name-prefix': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-floating-promises': 'error',
'unicorn/prefer-module': 'off',
'unicorn/prevent-abbreviations': 'off',
'unicorn/no-process-exit': 'off',
'unicorn/import-style': 'off',
curly: 2,
'prettier/prettier': 0,
},
};

View File

@@ -1,4 +1,4 @@
FROM node:20.16.0-alpine3.20@sha256:aada767bf3e4b4a1437642b81db7d8bb99a6dba27627088e4608772f1f02ebc0 as core FROM node:20.16.0-alpine3.20@sha256:eb8101caae9ac02229bd64c024919fe3d4504ff7f329da79ca60a04db08cef52 AS core
WORKDIR /usr/src/open-api/typescript-sdk WORKDIR /usr/src/open-api/typescript-sdk
COPY open-api/typescript-sdk/package*.json open-api/typescript-sdk/tsconfig*.json ./ COPY open-api/typescript-sdk/package*.json open-api/typescript-sdk/tsconfig*.json ./

60
cli/eslint.config.mjs Normal file
View File

@@ -0,0 +1,60 @@
import { FlatCompat } from '@eslint/eslintrc';
import js from '@eslint/js';
import typescriptEslint from '@typescript-eslint/eslint-plugin';
import tsParser from '@typescript-eslint/parser';
import globals from 'globals';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all,
});
export default [
{
ignores: ['eslint.config.mjs', 'dist'],
},
...compat.extends(
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended',
'plugin:unicorn/recommended',
),
{
plugins: {
'@typescript-eslint': typescriptEslint,
},
languageOptions: {
globals: {
...globals.node,
},
parser: tsParser,
ecmaVersion: 5,
sourceType: 'module',
parserOptions: {
project: 'tsconfig.json',
tsconfigRootDir: __dirname,
},
},
rules: {
'@typescript-eslint/interface-name-prefix': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-floating-promises': 'error',
'unicorn/prefer-module': 'off',
'unicorn/prevent-abbreviations': 'off',
'unicorn/no-process-exit': 'off',
'unicorn/import-style': 'off',
curly: 2,
'prettier/prettier': 0,
},
},
];

1537
cli/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{ {
"name": "@immich/cli", "name": "@immich/cli",
"version": "2.2.12", "version": "2.2.13",
"description": "Command Line Interface (CLI) for Immich", "description": "Command Line Interface (CLI) for Immich",
"type": "module", "type": "module",
"exports": "./dist/index.js", "exports": "./dist/index.js",
@@ -13,30 +13,33 @@
"cli" "cli"
], ],
"devDependencies": { "devDependencies": {
"@eslint/eslintrc": "^3.1.0",
"@eslint/js": "^9.8.0",
"@immich/sdk": "file:../open-api/typescript-sdk", "@immich/sdk": "file:../open-api/typescript-sdk",
"@types/byte-size": "^8.1.0", "@types/byte-size": "^8.1.0",
"@types/cli-progress": "^3.11.0", "@types/cli-progress": "^3.11.0",
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"@types/mock-fs": "^4.13.1", "@types/mock-fs": "^4.13.1",
"@types/node": "^20.14.12", "@types/node": "^20.14.13",
"@typescript-eslint/eslint-plugin": "^7.0.0", "@typescript-eslint/eslint-plugin": "^8.0.0",
"@typescript-eslint/parser": "^7.0.0", "@typescript-eslint/parser": "^8.0.0",
"@vitest/coverage-v8": "^1.2.2", "@vitest/coverage-v8": "^2.0.5",
"byte-size": "^9.0.0", "byte-size": "^9.0.0",
"cli-progress": "^3.12.0", "cli-progress": "^3.12.0",
"commander": "^12.0.0", "commander": "^12.0.0",
"eslint": "^8.56.0", "eslint": "^9.0.0",
"eslint-config-prettier": "^9.1.0", "eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^5.1.3", "eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-unicorn": "^54.0.0", "eslint-plugin-unicorn": "^55.0.0",
"globals": "^15.9.0",
"mock-fs": "^5.2.0", "mock-fs": "^5.2.0",
"prettier": "^3.2.5", "prettier": "^3.2.5",
"prettier-plugin-organize-imports": "^4.0.0", "prettier-plugin-organize-imports": "^4.0.0",
"typescript": "^5.3.3", "typescript": "^5.3.3",
"vite": "^5.0.12", "vite": "^5.0.12",
"vite-tsconfig-paths": "^4.3.2", "vite-tsconfig-paths": "^4.3.2",
"vitest": "^1.2.2", "vitest": "^2.0.5",
"vitest-fetch-mock": "^0.2.2", "vitest-fetch-mock": "^0.3.0",
"yaml": "^2.3.1" "yaml": "^2.3.1"
}, },
"scripts": { "scripts": {

View File

@@ -46,6 +46,8 @@ services:
depends_on: depends_on:
- redis - redis
- database - database
healthcheck:
disable: false
immich-web: immich-web:
container_name: immich_web container_name: immich_web
@@ -91,6 +93,8 @@ services:
depends_on: depends_on:
- database - database
restart: unless-stopped restart: unless-stopped
healthcheck:
disable: false
redis: redis:
container_name: immich_redis container_name: immich_redis

View File

@@ -21,6 +21,8 @@ services:
- redis - redis
- database - database
restart: always restart: always
healthcheck:
disable: false
immich-machine-learning: immich-machine-learning:
container_name: immich_machine_learning container_name: immich_machine_learning
@@ -40,6 +42,8 @@ services:
env_file: env_file:
- .env - .env
restart: always restart: always
healthcheck:
disable: false
redis: redis:
container_name: immich_redis container_name: immich_redis
@@ -67,7 +71,7 @@ services:
interval: 5m interval: 5m
start_interval: 30s start_interval: 30s
start_period: 5m start_period: 5m
command: ["postgres", "-c" ,"shared_preload_libraries=vectors.so", "-c", 'search_path="$$user", public, vectors', "-c", "logging_collector=on", "-c", "max_wal_size=2GB", "-c", "shared_buffers=512MB", "-c", "wal_compression=on"] command: ["postgres", "-c", "shared_preload_libraries=vectors.so", "-c", 'search_path="$$user", public, vectors', "-c", "logging_collector=on", "-c", "max_wal_size=2GB", "-c", "shared_buffers=512MB", "-c", "wal_compression=on"]
restart: always restart: always
# set IMMICH_METRICS=true in .env to enable metrics # set IMMICH_METRICS=true in .env to enable metrics
@@ -87,7 +91,7 @@ services:
command: ['./run.sh', '-disable-reporting'] command: ['./run.sh', '-disable-reporting']
ports: ports:
- 3000:3000 - 3000:3000
image: grafana/grafana:11.1.0-ubuntu@sha256:c7fc29ec783d5e7fc1bdfaad6f92345a345cffbc5d21c388ca228175006fc107 image: grafana/grafana:11.1.3-ubuntu@sha256:e10453733015f31103cb530425f32c994816b50102886fa885dafea2c50a711c
volumes: volumes:
- grafana-data:/var/lib/grafana - grafana-data:/var/lib/grafana

View File

@@ -16,6 +16,7 @@ services:
# file: hwaccel.transcoding.yml # file: hwaccel.transcoding.yml
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
volumes: volumes:
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
- ${UPLOAD_LOCATION}:/usr/src/app/upload - ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
env_file: env_file:
@@ -26,6 +27,8 @@ services:
- redis - redis
- database - database
restart: always restart: always
healthcheck:
disable: false
immich-machine-learning: immich-machine-learning:
container_name: immich_machine_learning container_name: immich_machine_learning
@@ -40,6 +43,8 @@ services:
env_file: env_file:
- .env - .env
restart: always restart: always
healthcheck:
disable: false
redis: redis:
container_name: immich_redis container_name: immich_redis
@@ -57,13 +62,14 @@ services:
POSTGRES_DB: ${DB_DATABASE_NAME} POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums' POSTGRES_INITDB_ARGS: '--data-checksums'
volumes: volumes:
# Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
healthcheck: healthcheck:
test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1 test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
interval: 5m interval: 5m
start_interval: 30s start_interval: 30s
start_period: 5m start_period: 5m
command: ["postgres", "-c" ,"shared_preload_libraries=vectors.so", "-c", 'search_path="$$user", public, vectors', "-c", "logging_collector=on", "-c", "max_wal_size=2GB", "-c", "shared_buffers=512MB", "-c", "wal_compression=on"] command: ["postgres", "-c", "shared_preload_libraries=vectors.so", "-c", 'search_path="$$user", public, vectors', "-c", "logging_collector=on", "-c", "max_wal_size=2GB", "-c", "shared_buffers=512MB", "-c", "wal_compression=on"]
restart: always restart: always
volumes: volumes:

View File

@@ -294,6 +294,12 @@ You need to enable WebSockets on your reverse proxy.
Immich components are typically deployed using docker. To see logs for deployed docker containers, you can use the [Docker CLI](https://docs.docker.com/engine/reference/commandline/cli/), specifically the `docker logs` command. For examples, see [Docker Help](/docs/guides/docker-help.md). Immich components are typically deployed using docker. To see logs for deployed docker containers, you can use the [Docker CLI](https://docs.docker.com/engine/reference/commandline/cli/), specifically the `docker logs` command. For examples, see [Docker Help](/docs/guides/docker-help.md).
### How can I reduce the log verbosity of Redis?
To decrease Redis logs, you can add the following line to the `redis:` section of the `docker-compose.yml`:
` command: redis-server --loglevel warning`
### How can I run Immich as a non-root user? ### How can I run Immich as a non-root user?
You can change the user in the container by setting the `user` argument in `docker-compose.yml` for each service. You can change the user in the container by setting the `user` argument in `docker-compose.yml` for each service.

View File

@@ -145,28 +145,36 @@ const config = {
label: 'Installation', label: 'Installation',
to: '/docs/install/requirements', to: '/docs/install/requirements',
}, },
{
label: 'Contributing',
to: '/docs/overview/support-the-project',
},
{
label: 'Privacy Policy',
to: '/privacy-policy',
},
], ],
}, },
{ {
title: 'Community', title: 'Documentation',
items: [ items: [
{ {
label: 'Discord', label: 'Roadmap',
href: 'https://discord.immich.app', to: '/roadmap',
}, },
{ {
label: 'Reddit', label: 'API',
href: 'https://www.reddit.com/r/immich/', to: '/docs/api',
},
{
label: 'Cursed Knowledge',
to: '/cursed-knowledge',
}, },
], ],
}, },
{ {
title: 'Links', title: 'Links',
items: [ items: [
// {
// label: "Blog",
// to: "/blog",
// },
{ {
label: 'GitHub', label: 'GitHub',
href: 'https://github.com/immich-app/immich', href: 'https://github.com/immich-app/immich',
@@ -175,6 +183,14 @@ const config = {
label: 'YouTube', label: 'YouTube',
href: 'https://www.youtube.com/@immich-app', href: 'https://www.youtube.com/@immich-app',
}, },
{
label: 'Discord',
href: 'https://discord.immich.app',
},
{
label: 'Reddit',
href: 'https://www.reddit.com/r/immich/',
},
], ],
}, },
], ],

46
docs/package-lock.json generated
View File

@@ -12754,9 +12754,9 @@
} }
}, },
"node_modules/postcss": { "node_modules/postcss": {
"version": "8.4.39", "version": "8.4.40",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.40.tgz",
"integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", "integrity": "sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==",
"funding": [ "funding": [
{ {
"type": "opencollective", "type": "opencollective",
@@ -13600,9 +13600,9 @@
} }
}, },
"node_modules/prettier": { "node_modules/prettier": {
"version": "3.3.2", "version": "3.3.3",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
"integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"bin": { "bin": {
@@ -13747,9 +13747,10 @@
} }
}, },
"node_modules/qs": { "node_modules/qs": {
"version": "6.12.1", "version": "6.13.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
"integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
"license": "BSD-3-Clause",
"dependencies": { "dependencies": {
"side-channel": "^1.0.6" "side-channel": "^1.0.6"
}, },
@@ -16014,9 +16015,9 @@
} }
}, },
"node_modules/tailwindcss": { "node_modules/tailwindcss": {
"version": "3.4.4", "version": "3.4.7",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.7.tgz",
"integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", "integrity": "sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@alloc/quick-lru": "^5.2.0", "@alloc/quick-lru": "^5.2.0",
@@ -16376,9 +16377,9 @@
} }
}, },
"node_modules/typescript": { "node_modules/typescript": {
"version": "5.5.3", "version": "5.5.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
"integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
"license": "Apache-2.0", "license": "Apache-2.0",
"bin": { "bin": {
"tsc": "bin/tsc", "tsc": "bin/tsc",
@@ -16714,12 +16715,16 @@
} }
}, },
"node_modules/url": { "node_modules/url": {
"version": "0.11.3", "version": "0.11.4",
"resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz",
"integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==",
"license": "MIT",
"dependencies": { "dependencies": {
"punycode": "^1.4.1", "punycode": "^1.4.1",
"qs": "^6.11.2" "qs": "^6.12.3"
},
"engines": {
"node": ">= 0.4"
} }
}, },
"node_modules/url-loader": { "node_modules/url-loader": {
@@ -16783,7 +16788,8 @@
"node_modules/url/node_modules/punycode": { "node_modules/url/node_modules/punycode": {
"version": "1.4.1", "version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
"license": "MIT"
}, },
"node_modules/util": { "node_modules/util": {
"version": "0.10.4", "version": "0.10.4",

View File

@@ -63,6 +63,11 @@ const projects: CommunityProjectProps[] = [
description: 'Powershell Module for the Immich API', description: 'Powershell Module for the Immich API',
url: 'https://github.com/hanpq/PSImmich', 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',
},
]; ];
function CommunityProject({ title, description, url }: CommunityProjectProps): JSX.Element { function CommunityProject({ title, description, url }: CommunityProjectProps): JSX.Element {

View File

@@ -1,4 +1,13 @@
import { mdiCalendarToday, mdiLeadPencil, mdiLockOutline, mdiSpeedometerSlow, mdiWeb } from '@mdi/js'; import {
mdiCalendarToday,
mdiCrosshairsOff,
mdiLeadPencil,
mdiLockOff,
mdiLockOutline,
mdiSpeedometerSlow,
mdiWeb,
mdiWrap,
} from '@mdi/js';
import Layout from '@theme/Layout'; import Layout from '@theme/Layout';
import React from 'react'; import React from 'react';
import { Item as TimelineItem, Timeline } from '../components/timeline'; import { Item as TimelineItem, Timeline } from '../components/timeline';
@@ -8,6 +17,41 @@ const withLanguage = (date: Date) => (language: string) => date.toLocaleDateStri
type Item = Omit<TimelineItem, 'done' | 'getDateLabel'> & { date: Date }; type Item = Omit<TimelineItem, 'done' | 'getDateLabel'> & { date: Date };
const items: Item[] = [ const items: Item[] = [
{
icon: mdiWrap,
iconColor: 'gray',
title: 'Carriage returns in bash scripts are cursed',
description: 'Git can be configured to automatically convert LF to CRLF on checkout and CRLF breaks bash scripts.',
link: {
url: 'https://github.com/immich-app/immich/pull/11613',
text: '#11613',
},
date: new Date(2024, 7, 7),
},
{
icon: mdiLockOff,
iconColor: 'red',
title: 'Fetch inside Cloudflare Workers is cursed',
description:
'Fetch requests in Cloudflare Workers use http by default, even if you explicitly specify https, which can often cause redirect loops.',
link: {
url: 'https://community.cloudflare.com/t/does-cloudflare-worker-allow-secure-https-connection-to-fetch-even-on-flexible-ssl/68051/5',
text: 'Cloudflare',
},
date: new Date(2024, 7, 7),
},
{
icon: mdiCrosshairsOff,
iconColor: 'gray',
title: 'GPS sharing on mobile is cursed',
description:
'Some phones will silently strip GPS data from images when apps without location permission try to access them.',
link: {
url: 'https://github.com/immich-app/immich/discussions/11268',
text: '#11268',
},
date: new Date(2024, 6, 21),
},
{ {
icon: mdiLeadPencil, icon: mdiLeadPencil,
iconColor: 'gold', iconColor: 'gold',

View File

@@ -0,0 +1,114 @@
import React from 'react';
import Link from '@docusaurus/Link';
import Layout from '@theme/Layout';
import { useColorMode } from '@docusaurus/theme-common';
function HomepageHeader() {
const { isDarkTheme } = useColorMode();
return (
<header>
<section className="max-w-[900px] m-4 p-4 md:p-6 md:m-auto md:my-12 border border-red-400 rounded-2xl bg-slate-200 dark:bg-immich-dark-gray">
<section>
<h1>Privacy Policy</h1>
<p>Last updated: July 31st 2024</p>
<p>
Welcome to Immich. We are committed to respecting your privacy. This Privacy Policy sets out how we collect,
use, and share information when you use our Immich app.
</p>
</section>
{/* 1. Scope of This Policy */}
<section>
<h2>1. Scope of This Policy</h2>
<p>
This Privacy Policy applies to the Immich app ("we", "our", or "us") and covers our collection, use, and
disclosure of your information. This Policy does not cover any third-party websites, services, or
applications that can be accessed through our app, or third-party services you may access through Immich.
</p>
</section>
{/* 2. Information We Collect */}
<section>
<h2>2. Information We Collect</h2>
<div>
<p>
<strong>Locally Stored Data</strong>: Immich stores all your photos, albums, settings, and locally on your
device. We do not have access to this data, nor do we transmit or store it on any of our servers.
</p>
</div>
<div>
<p>
<strong>Purchase Information:</strong> When you make a purchase within the{' '}
<a href="https://buy.immich.app">https://buy.immich.app</a>, we collect the following information for tax
calculation purposes:
</p>
<ul>
<li>Country of origin</li>
<li>Postal code (if the user is from Canada or the United States)</li>
</ul>
</div>
</section>
{/* 3. Use of Your Information */}
<section>
<h2>3. Use of Your Information</h2>
<p>
<strong>Tax Calculation:</strong> The country of origin and postal code (for users from Canada or the United
States) are collected solely for determining the applicable tax rates on your purchase.
</p>
</section>
{/* 4. Sharing of Your Information */}
<section>
<h2>4. Sharing of Your Information</h2>
<ul>
<li>
<strong>Tax Authorities:</strong> The purchase information may be shared with tax authorities as required
by law.
</li>
<li>
<strong>Payment Providers:</strong> The purchase information may be shared with payment providers where
required.
</li>
</ul>
</section>
{/* 5. Changes to This Policy */}
<section>
<h2>5. Changes to This Policy</h2>
<p>
We may update our Privacy Policy from time to time. If we make any changes, we will notify you by revising
the "Last updated" date at the top of this policy. It's encouraged that users frequently check this page for
any changes to stay informed about how we are helping to protect the personal information we collect.
</p>
</section>
{/* 6. Contact Us */}
<section>
<h2>6. Contact Us</h2>
<p>
If you have any questions about this Privacy Policy, please contact us at{' '}
<a href="mailto:immich@futo.org">immich@futo.org</a>
</p>
</section>
</section>
</header>
);
}
export default function Home(): JSX.Element {
return (
<Layout
title="Home"
description="immich Self-hosted photo and video backup solution directly from your mobile phone "
noFooter={true}
>
<HomepageHeader />
<div className="flex flex-col place-items-center place-content-center">
<p>This project is available under GNU AGPL v3 license.</p>
<p className="text-xs">Privacy should not be a luxury</p>
</div>
</Layout>
);
}

View File

@@ -1,4 +1,8 @@
[ [
{
"label": "v1.111.0",
"url": "https://v1.111.0.archive.immich.app"
},
{ {
"label": "v1.110.0", "label": "v1.110.0",
"url": "https://v1.110.0.archive.immich.app" "url": "https://v1.110.0.archive.immich.app"

View File

@@ -1,32 +0,0 @@
module.exports = {
parser: '@typescript-eslint/parser',
parserOptions: {
project: 'tsconfig.json',
sourceType: 'module',
tsconfigRootDir: __dirname,
},
plugins: ['@typescript-eslint/eslint-plugin'],
extends: ['plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended', 'plugin:unicorn/recommended'],
root: true,
env: {
node: true,
},
ignorePatterns: ['.eslintrc.js'],
rules: {
'@typescript-eslint/interface-name-prefix': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-floating-promises': 'error',
'unicorn/prefer-module': 'off',
'unicorn/import-style': 'off',
curly: 2,
'prettier/prettier': 0,
'unicorn/prevent-abbreviations': 'off',
'unicorn/filename-case': 'off',
'unicorn/no-null': 'off',
'unicorn/prefer-top-level-await': 'off',
'unicorn/prefer-event-target': 'off',
'unicorn/no-thenable': 'off',
},
};

64
e2e/eslint.config.mjs Normal file
View File

@@ -0,0 +1,64 @@
import { FlatCompat } from '@eslint/eslintrc';
import js from '@eslint/js';
import typescriptEslint from '@typescript-eslint/eslint-plugin';
import tsParser from '@typescript-eslint/parser';
import globals from 'globals';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all,
});
export default [
{
ignores: ['eslint.config.mjs'],
},
...compat.extends(
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended',
'plugin:unicorn/recommended',
),
{
plugins: {
'@typescript-eslint': typescriptEslint,
},
languageOptions: {
globals: {
...globals.node,
},
parser: tsParser,
ecmaVersion: 5,
sourceType: 'module',
parserOptions: {
project: 'tsconfig.json',
tsconfigRootDir: __dirname,
},
},
rules: {
'@typescript-eslint/interface-name-prefix': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-floating-promises': 'error',
'unicorn/prefer-module': 'off',
'unicorn/import-style': 'off',
curly: 2,
'prettier/prettier': 0,
'unicorn/prevent-abbreviations': 'off',
'unicorn/filename-case': 'off',
'unicorn/no-null': 'off',
'unicorn/prefer-top-level-await': 'off',
'unicorn/prefer-event-target': 'off',
'unicorn/no-thenable': 'off',
},
},
];

1769
e2e/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{ {
"name": "immich-e2e", "name": "immich-e2e",
"version": "1.110.0", "version": "1.111.0",
"description": "", "description": "",
"main": "index.js", "main": "index.js",
"type": "module", "type": "module",
@@ -19,23 +19,26 @@
"author": "", "author": "",
"license": "GNU Affero General Public License version 3", "license": "GNU Affero General Public License version 3",
"devDependencies": { "devDependencies": {
"@eslint/eslintrc": "^3.1.0",
"@eslint/js": "^9.8.0",
"@immich/cli": "file:../cli", "@immich/cli": "file:../cli",
"@immich/sdk": "file:../open-api/typescript-sdk", "@immich/sdk": "file:../open-api/typescript-sdk",
"@playwright/test": "^1.44.1", "@playwright/test": "^1.44.1",
"@types/luxon": "^3.4.2", "@types/luxon": "^3.4.2",
"@types/node": "^20.14.12", "@types/node": "^20.14.13",
"@types/oidc-provider": "^8.5.1", "@types/oidc-provider": "^8.5.1",
"@types/pg": "^8.11.0", "@types/pg": "^8.11.0",
"@types/pngjs": "^6.0.4", "@types/pngjs": "^6.0.4",
"@types/supertest": "^6.0.2", "@types/supertest": "^6.0.2",
"@typescript-eslint/eslint-plugin": "^7.1.0", "@typescript-eslint/eslint-plugin": "^8.0.0",
"@typescript-eslint/parser": "^7.1.0", "@typescript-eslint/parser": "^8.0.0",
"@vitest/coverage-v8": "^1.3.0", "@vitest/coverage-v8": "^2.0.5",
"eslint": "^8.57.0", "eslint": "^9.0.0",
"eslint-config-prettier": "^9.1.0", "eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^5.1.3", "eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-unicorn": "^54.0.0", "eslint-plugin-unicorn": "^55.0.0",
"exiftool-vendored": "^27.0.0", "exiftool-vendored": "^28.0.0",
"globals": "^15.9.0",
"jose": "^5.6.3", "jose": "^5.6.3",
"luxon": "^3.4.4", "luxon": "^3.4.4",
"oidc-provider": "^8.5.1", "oidc-provider": "^8.5.1",
@@ -47,7 +50,7 @@
"supertest": "^7.0.0", "supertest": "^7.0.0",
"typescript": "^5.3.3", "typescript": "^5.3.3",
"utimes": "^5.2.1", "utimes": "^5.2.1",
"vitest": "^1.6.0" "vitest": "^2.0.5"
}, },
"volta": { "volta": {
"node": "20.16.0" "node": "20.16.0"

View File

@@ -159,4 +159,75 @@ describe('/map', () => {
expect(body).toEqual(expect.objectContaining({ id: 'immich-map-dark' })); expect(body).toEqual(expect.objectContaining({ id: 'immich-map-dark' }));
}); });
}); });
describe('GET /map/reverse-geocode', () => {
it('should require authentication', async () => {
const { status, body } = await request(app).get('/map/reverse-geocode');
expect(status).toBe(401);
expect(body).toEqual(errorDto.unauthorized);
});
it('should throw an error if a lat is not provided', async () => {
const { status, body } = await request(app)
.get('/map/reverse-geocode?lon=123')
.set('Authorization', `Bearer ${admin.accessToken}`);
expect(status).toBe(400);
expect(body).toEqual(errorDto.badRequest(['lat must be a number between -90 and 90']));
});
it('should throw an error if a lat is not a number', async () => {
const { status, body } = await request(app)
.get('/map/reverse-geocode?lat=abc&lon=123.456')
.set('Authorization', `Bearer ${admin.accessToken}`);
expect(status).toBe(400);
expect(body).toEqual(errorDto.badRequest(['lat must be a number between -90 and 90']));
});
it('should throw an error if a lat is out of range', async () => {
const { status, body } = await request(app)
.get('/map/reverse-geocode?lat=91&lon=123.456')
.set('Authorization', `Bearer ${admin.accessToken}`);
expect(status).toBe(400);
expect(body).toEqual(errorDto.badRequest(['lat must be a number between -90 and 90']));
});
it('should throw an error if a lon is not provided', async () => {
const { status, body } = await request(app)
.get('/map/reverse-geocode?lat=75')
.set('Authorization', `Bearer ${admin.accessToken}`);
expect(status).toBe(400);
expect(body).toEqual(errorDto.badRequest(['lon must be a number between -180 and 180']));
});
const reverseGeocodeTestCases = [
{
name: 'Vaucluse',
lat: -33.858_977_058_663_13,
lon: 151.278_490_730_270_48,
results: [{ city: 'Vaucluse', state: 'New South Wales', country: 'Australia' }],
},
{
name: 'Ravenhall',
lat: -37.765_732_399_174_75,
lon: 144.752_453_164_883_3,
results: [{ city: 'Ravenhall', state: 'Victoria', country: 'Australia' }],
},
{
name: 'Scarborough',
lat: -31.894_346_156_789_997,
lon: 115.757_617_103_904_64,
results: [{ city: 'Scarborough', state: 'Western Australia', country: 'Australia' }],
},
];
it.each(reverseGeocodeTestCases)(`should resolve to $name`, async ({ lat, lon, results }) => {
const { status, body } = await request(app)
.get(`/map/reverse-geocode?lat=${lat}&lon=${lon}`)
.set('Authorization', `Bearer ${admin.accessToken}`);
expect(status).toBe(200);
expect(Array.isArray(body)).toBe(true);
expect(body.length).toBe(results.length);
expect(body).toEqual(results);
});
});
}); });

View File

@@ -6,10 +6,19 @@ import request from 'supertest';
import { beforeAll, beforeEach, describe, expect, it } from 'vitest'; import { beforeAll, beforeEach, describe, expect, it } from 'vitest';
const invalidBirthday = [ const invalidBirthday = [
{ birthDate: 'false', response: 'birthDate must be a date string' }, {
{ birthDate: '123567', response: 'birthDate must be a date string' }, birthDate: 'false',
{ birthDate: 123_567, response: 'birthDate must be a date string' }, response: ['birthDate must be a string in the format yyyy-MM-dd', 'Birth date cannot be in the future'],
{ birthDate: new Date(9999, 0, 0).toISOString(), response: ['Birth date cannot be in the future'] }, },
{
birthDate: '123567',
response: ['birthDate must be a string in the format yyyy-MM-dd', 'Birth date cannot be in the future'],
},
{
birthDate: 123_567,
response: ['birthDate must be a string in the format yyyy-MM-dd', 'Birth date cannot be in the future'],
},
{ birthDate: '9999-01-01', response: ['Birth date cannot be in the future'] },
]; ];
describe('/people', () => { describe('/people', () => {
@@ -185,13 +194,13 @@ describe('/people', () => {
.set('Authorization', `Bearer ${admin.accessToken}`) .set('Authorization', `Bearer ${admin.accessToken}`)
.send({ .send({
name: 'New Person', name: 'New Person',
birthDate: '1990-01-01T05:00:00.000Z', birthDate: '1990-01-01',
}); });
expect(status).toBe(201); expect(status).toBe(201);
expect(body).toMatchObject({ expect(body).toMatchObject({
id: expect.any(String), id: expect.any(String),
name: 'New Person', name: 'New Person',
birthDate: '1990-01-01T05:00:00.000Z', birthDate: '1990-01-01',
}); });
}); });
}); });
@@ -233,7 +242,7 @@ describe('/people', () => {
const { status, body } = await request(app) const { status, body } = await request(app)
.put(`/people/${visiblePerson.id}`) .put(`/people/${visiblePerson.id}`)
.set('Authorization', `Bearer ${admin.accessToken}`) .set('Authorization', `Bearer ${admin.accessToken}`)
.send({ birthDate: '1990-01-01T05:00:00.000Z' }); .send({ birthDate: '1990-01-01' });
expect(status).toBe(200); expect(status).toBe(200);
expect(body).toMatchObject({ birthDate: '1990-01-01' }); expect(body).toMatchObject({ birthDate: '1990-01-01' });
}); });

View File

@@ -1,4 +1,4 @@
import { AssetMediaResponseDto, LoginResponseDto, deleteAssets, getMapMarkers, updateAsset } from '@immich/sdk'; import { AssetMediaResponseDto, LoginResponseDto, deleteAssets, updateAsset } from '@immich/sdk';
import { DateTime } from 'luxon'; import { DateTime } from 'luxon';
import { readFile } from 'node:fs/promises'; import { readFile } from 'node:fs/promises';
import { join } from 'node:path'; import { join } from 'node:path';
@@ -32,9 +32,6 @@ describe('/search', () => {
let assetOneJpg5: AssetMediaResponseDto; let assetOneJpg5: AssetMediaResponseDto;
let assetSprings: AssetMediaResponseDto; let assetSprings: AssetMediaResponseDto;
let assetLast: AssetMediaResponseDto; let assetLast: AssetMediaResponseDto;
let cities: string[];
let states: string[];
let countries: string[];
beforeAll(async () => { beforeAll(async () => {
await utils.resetDatabase(); await utils.resetDatabase();
@@ -85,7 +82,7 @@ describe('/search', () => {
// note: the coordinates here are not the actual coordinates of the images and are random for most of them // note: the coordinates here are not the actual coordinates of the images and are random for most of them
const coordinates = [ const coordinates = [
{ latitude: 48.853_41, longitude: 2.3488 }, // paris { latitude: 48.853_41, longitude: 2.3488 }, // paris
{ latitude: 63.0695, longitude: -151.0074 }, // denali { latitude: 35.6895, longitude: 139.691_71 }, // tokyo
{ latitude: 52.524_37, longitude: 13.410_53 }, // berlin { latitude: 52.524_37, longitude: 13.410_53 }, // berlin
{ latitude: 1.314_663_1, longitude: 103.845_409_3 }, // singapore { latitude: 1.314_663_1, longitude: 103.845_409_3 }, // singapore
{ latitude: 41.013_84, longitude: 28.949_66 }, // istanbul { latitude: 41.013_84, longitude: 28.949_66 }, // istanbul
@@ -101,16 +98,15 @@ describe('/search', () => {
{ latitude: 31.634_16, longitude: -7.999_94 }, // marrakesh { latitude: 31.634_16, longitude: -7.999_94 }, // marrakesh
{ latitude: 38.523_735_4, longitude: -78.488_619_4 }, // tanners ridge { latitude: 38.523_735_4, longitude: -78.488_619_4 }, // tanners ridge
{ latitude: 59.938_63, longitude: 30.314_13 }, // st. petersburg { latitude: 59.938_63, longitude: 30.314_13 }, // st. petersburg
{ latitude: 35.6895, longitude: 139.691_71 }, // tokyo
]; ];
const updates = assets.map((asset, i) => const updates = coordinates.map((dto, i) =>
updateAsset({ id: asset.id, updateAssetDto: coordinates[i] }, { headers: asBearerAuth(admin.accessToken) }), updateAsset({ id: assets[i].id, updateAssetDto: dto }, { headers: asBearerAuth(admin.accessToken) }),
); );
await Promise.all(updates); await Promise.all(updates);
for (const asset of assets) { for (const [i] of coordinates.entries()) {
await utils.waitForWebsocketEvent({ event: 'assetUpdate', id: asset.id }); await utils.waitForWebsocketEvent({ event: 'assetUpdate', id: assets[i].id });
} }
[ [
@@ -137,12 +133,6 @@ describe('/search', () => {
assetLast = assets.at(-1) as AssetMediaResponseDto; assetLast = assets.at(-1) as AssetMediaResponseDto;
await deleteAssets({ assetBulkDeleteDto: { ids: [assetSilver.id] } }, { headers: asBearerAuth(admin.accessToken) }); await deleteAssets({ assetBulkDeleteDto: { ids: [assetSilver.id] } }, { headers: asBearerAuth(admin.accessToken) });
const mapMarkers = await getMapMarkers({}, { headers: asBearerAuth(admin.accessToken) });
const nonTrashed = mapMarkers.filter((mark) => mark.id !== assetSilver.id);
cities = [...new Set(nonTrashed.map((mark) => mark.city).filter((entry): entry is string => !!entry))].sort();
states = [...new Set(nonTrashed.map((mark) => mark.state).filter((entry): entry is string => !!entry))].sort();
countries = [...new Set(nonTrashed.map((mark) => mark.country).filter((entry): entry is string => !!entry))].sort();
}, 30_000); }, 30_000);
afterAll(async () => { afterAll(async () => {
@@ -321,23 +311,120 @@ describe('/search', () => {
}, },
{ {
should: 'should search by city', should: 'should search by city',
deferred: () => ({ dto: { city: 'Accra' }, assets: [assetHeic] }), deferred: () => ({
dto: {
city: 'Accra',
includeNull: true,
},
assets: [assetHeic],
}),
},
{
should: "should search city ('')",
deferred: () => ({
dto: {
city: '',
isVisible: true,
includeNull: true,
},
assets: [assetLast],
}),
},
{
should: 'should search city (null)',
deferred: () => ({
dto: {
city: null,
isVisible: true,
includeNull: true,
},
assets: [assetLast],
}),
}, },
{ {
should: 'should search by state', should: 'should search by state',
deferred: () => ({ dto: { state: 'New York' }, assets: [assetDensity] }), deferred: () => ({
dto: {
state: 'New York',
includeNull: true,
},
assets: [assetDensity],
}),
},
{
should: "should search state ('')",
deferred: () => ({
dto: {
state: '',
isVisible: true,
withExif: true,
includeNull: true,
},
assets: [assetLast, assetNotocactus],
}),
},
{
should: 'should search state (null)',
deferred: () => ({
dto: {
state: null,
isVisible: true,
includeNull: true,
},
assets: [assetLast, assetNotocactus],
}),
}, },
{ {
should: 'should search by country', should: 'should search by country',
deferred: () => ({ dto: { country: 'France' }, assets: [assetFalcon] }), deferred: () => ({
dto: {
country: 'France',
includeNull: true,
},
assets: [assetFalcon],
}),
},
{
should: "should search country ('')",
deferred: () => ({
dto: {
country: '',
isVisible: true,
includeNull: true,
},
assets: [assetLast],
}),
},
{
should: 'should search country (null)',
deferred: () => ({
dto: {
country: null,
isVisible: true,
includeNull: true,
},
assets: [assetLast],
}),
}, },
{ {
should: 'should search by make', should: 'should search by make',
deferred: () => ({ dto: { make: 'Canon' }, assets: [assetFalcon, assetDenali] }), deferred: () => ({
dto: {
make: 'Canon',
includeNull: true,
},
assets: [assetFalcon, assetDenali],
}),
}, },
{ {
should: 'should search by model', should: 'should search by model',
deferred: () => ({ dto: { model: 'Canon EOS 7D' }, assets: [assetDenali] }), deferred: () => ({
dto: {
model: 'Canon EOS 7D',
includeNull: true,
},
assets: [assetDenali],
}),
}, },
{ {
should: 'should allow searching the upload library (libraryId: null)', should: 'should allow searching the upload library (libraryId: null)',
@@ -450,32 +537,79 @@ describe('/search', () => {
it('should get suggestions for country', async () => { it('should get suggestions for country', async () => {
const { status, body } = await request(app) const { status, body } = await request(app)
.get('/search/suggestions?type=country') .get('/search/suggestions?type=country&includeNull=true')
.set('Authorization', `Bearer ${admin.accessToken}`); .set('Authorization', `Bearer ${admin.accessToken}`);
expect(body).toEqual(countries); expect(body).toEqual([
'Cuba',
'France',
'Georgia',
'Germany',
'Ghana',
'Japan',
'Morocco',
"People's Republic of China",
'Russian Federation',
'Singapore',
'Spain',
'Switzerland',
'United States of America',
null,
]);
expect(status).toBe(200); expect(status).toBe(200);
}); });
it('should get suggestions for state', async () => { it('should get suggestions for state', async () => {
const { status, body } = await request(app) const { status, body } = await request(app)
.get('/search/suggestions?type=state') .get('/search/suggestions?type=state&includeNull=true')
.set('Authorization', `Bearer ${admin.accessToken}`); .set('Authorization', `Bearer ${admin.accessToken}`);
expect(body).toHaveLength(states.length); expect(body).toEqual([
expect(body).toEqual(expect.arrayContaining(states)); 'Andalusia',
'Berlin',
'Glarus',
'Greater Accra',
'Havana',
'Île-de-France',
'Marrakesh-Safi',
'Mississippi',
'New York',
'Shanghai',
'St.-Petersburg',
'Tbilisi',
'Tokyo',
'Virginia',
null,
]);
expect(status).toBe(200); expect(status).toBe(200);
}); });
it('should get suggestions for city', async () => { it('should get suggestions for city', async () => {
const { status, body } = await request(app) const { status, body } = await request(app)
.get('/search/suggestions?type=city') .get('/search/suggestions?type=city&includeNull=true')
.set('Authorization', `Bearer ${admin.accessToken}`); .set('Authorization', `Bearer ${admin.accessToken}`);
expect(body).toEqual(cities); expect(body).toEqual([
'Accra',
'Berlin',
'Glarus',
'Havana',
'Marrakesh',
'Montalbán de Córdoba',
'New York City',
'Novena',
'Paris',
'Philadelphia',
'Saint Petersburg',
'Shanghai',
'Stanley',
'Tbilisi',
'Tokyo',
null,
]);
expect(status).toBe(200); expect(status).toBe(200);
}); });
it('should get suggestions for camera make', async () => { it('should get suggestions for camera make', async () => {
const { status, body } = await request(app) const { status, body } = await request(app)
.get('/search/suggestions?type=camera-make') .get('/search/suggestions?type=camera-make&includeNull=true')
.set('Authorization', `Bearer ${admin.accessToken}`); .set('Authorization', `Bearer ${admin.accessToken}`);
expect(body).toEqual([ expect(body).toEqual([
'Apple', 'Apple',
@@ -485,13 +619,14 @@ describe('/search', () => {
'PENTAX Corporation', 'PENTAX Corporation',
'samsung', 'samsung',
'SONY', 'SONY',
null,
]); ]);
expect(status).toBe(200); expect(status).toBe(200);
}); });
it('should get suggestions for camera model', async () => { it('should get suggestions for camera model', async () => {
const { status, body } = await request(app) const { status, body } = await request(app)
.get('/search/suggestions?type=camera-model') .get('/search/suggestions?type=camera-model&includeNull=true')
.set('Authorization', `Bearer ${admin.accessToken}`); .set('Authorization', `Bearer ${admin.accessToken}`);
expect(body).toEqual([ expect(body).toEqual([
'Canon EOS 7D', 'Canon EOS 7D',
@@ -506,6 +641,7 @@ describe('/search', () => {
'SM-F711N', 'SM-F711N',
'SM-S906U', 'SM-S906U',
'SM-T970', 'SM-T970',
null,
]); ]);
expect(status).toBe(200); expect(status).toBe(200);
}); });

View File

@@ -112,6 +112,13 @@ describe('/shared-links', () => {
expect(resp.header['content-type']).toContain('text/html'); expect(resp.header['content-type']).toContain('text/html');
expect(resp.text).toContain(`<meta name="description" content="1 shared photos & videos" />`); expect(resp.text).toContain(`<meta name="description" content="1 shared photos & videos" />`);
}); });
it('should have fqdn og:image meta tag for shared asset', async () => {
const resp = await request(shareUrl).get(`/${linkWithAssets.key}`);
expect(resp.status).toBe(200);
expect(resp.header['content-type']).toContain('text/html');
expect(resp.text).toContain(`<meta property="og:image" content="http://`);
});
}); });
describe('GET /shared-links', () => { describe('GET /shared-links', () => {

View File

@@ -424,12 +424,12 @@ export const utils = {
createPartner: (accessToken: string, id: string) => createPartner({ id }, { headers: asBearerAuth(accessToken) }), createPartner: (accessToken: string, id: string) => createPartner({ id }, { headers: asBearerAuth(accessToken) }),
setAuthCookies: async (context: BrowserContext, accessToken: string) => setAuthCookies: async (context: BrowserContext, accessToken: string, domain = '127.0.0.1') =>
await context.addCookies([ await context.addCookies([
{ {
name: 'immich_access_token', name: 'immich_access_token',
value: accessToken, value: accessToken,
domain: '127.0.0.1', domain,
path: '/', path: '/',
expires: 1_742_402_728, expires: 1_742_402_728,
httpOnly: true, httpOnly: true,
@@ -439,7 +439,7 @@ export const utils = {
{ {
name: 'immich_auth_type', name: 'immich_auth_type',
value: 'password', value: 'password',
domain: '127.0.0.1', domain,
path: '/', path: '/',
expires: 1_742_402_728, expires: 1_742_402_728,
httpOnly: true, httpOnly: true,
@@ -449,7 +449,7 @@ export const utils = {
{ {
name: 'immich_is_authenticated', name: 'immich_is_authenticated',
value: 'true', value: 'true',
domain: '127.0.0.1', domain,
path: '/', path: '/',
expires: 1_742_402_728, expires: 1_742_402_728,
httpOnly: false, httpOnly: false,

View File

@@ -10,6 +10,9 @@ test.describe('Asset Viewer Navbar', () => {
utils.initSdk(); utils.initSdk();
await utils.resetDatabase(); await utils.resetDatabase();
admin = await utils.adminSetup(); admin = await utils.adminSetup();
});
test.beforeEach(async () => {
asset = await utils.createAsset(admin.accessToken); asset = await utils.createAsset(admin.accessToken);
}); });
@@ -49,4 +52,14 @@ test.describe('Asset Viewer Navbar', () => {
} }
}); });
}); });
test.describe('actions', () => {
test('favorite asset with shortcut', async ({ context, page }) => {
await utils.setAuthCookies(context, admin.accessToken);
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');
});
});
}); });

View File

@@ -0,0 +1,56 @@
import { AssetMediaResponseDto, LoginResponseDto } from '@immich/sdk';
import { expect, type Page, test } from '@playwright/test';
import { utils } from 'src/utils';
test.describe('Slideshow', () => {
let admin: LoginResponseDto;
let asset: AssetMediaResponseDto;
test.beforeAll(async () => {
utils.initSdk();
await utils.resetDatabase();
admin = await utils.adminSetup();
asset = await utils.createAsset(admin.accessToken);
});
const openSlideshow = async (page: Page) => {
await page.goto(`/photos/${asset.id}`);
await page.waitForSelector('#immich-asset-viewer');
await page.getByRole('button', { name: 'More' }).click();
await page.getByRole('menuitem', { name: 'Slideshow' }).click();
};
test('open slideshow', async ({ context, page }) => {
await utils.setAuthCookies(context, admin.accessToken);
await openSlideshow(page);
await expect(page.getByRole('button', { name: 'Exit Slideshow' })).toBeVisible();
});
test('exit slideshow with button', async ({ context, page }) => {
await utils.setAuthCookies(context, admin.accessToken);
await openSlideshow(page);
const exitButton = page.getByRole('button', { name: 'Exit Slideshow' });
await exitButton.click();
await expect(exitButton).not.toBeVisible();
});
test('exit slideshow with shortcut', async ({ context, page }) => {
await utils.setAuthCookies(context, admin.accessToken);
await openSlideshow(page);
const exitButton = page.getByRole('button', { name: 'Exit Slideshow' });
await expect(exitButton).toBeVisible();
await page.keyboard.press('Escape');
await expect(exitButton).not.toBeVisible();
});
test('favorite shortcut is disabled', async ({ context, page }) => {
await utils.setAuthCookies(context, admin.accessToken);
await openSlideshow(page);
await expect(page.getByRole('button', { name: 'Exit Slideshow' })).toBeVisible();
await page.keyboard.press('f');
await expect(page.locator('#notification-list')).not.toBeVisible();
});
});

View File

@@ -25,7 +25,7 @@ test.describe('Photo Viewer', () => {
test('initially shows a loading spinner', async ({ page }) => { test('initially shows a loading spinner', async ({ page }) => {
await page.route(`/api/assets/${asset.id}/thumbnail**`, async (route) => { await page.route(`/api/assets/${asset.id}/thumbnail**`, async (route) => {
// slow down the request for thumbnail, so spiner has chance to show up // slow down the request for thumbnail, so spinner has chance to show up
await new Promise((f) => setTimeout(f, 2000)); await new Promise((f) => setTimeout(f, 2000));
await route.continue(); await route.continue();
}); });
@@ -40,7 +40,7 @@ test.describe('Photo Viewer', () => {
await page.goto(`/photos/${asset.id}`); await page.goto(`/photos/${asset.id}`);
await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('thumbnail'); await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('thumbnail');
const box = await imageLocator(page).boundingBox(); const box = await imageLocator(page).boundingBox();
expect(box).toBeTruthy; expect(box).toBeTruthy();
const { x, y, width, height } = box!; const { x, y, width, height } = box!;
await page.mouse.move(x + width / 2, y + height / 2); await page.mouse.move(x + width / 2, y + height / 2);
await page.mouse.wheel(0, -1); await page.mouse.wheel(0, -1);

View File

@@ -0,0 +1,25 @@
import { LoginResponseDto } from '@immich/sdk';
import { expect, test } from '@playwright/test';
import { utils } from 'src/utils';
test.describe('Websocket', () => {
let admin: LoginResponseDto;
test.beforeAll(async () => {
utils.initSdk();
await utils.resetDatabase();
admin = await utils.adminSetup();
});
test('connects using ipv4', async ({ page, context }) => {
await utils.setAuthCookies(context, admin.accessToken);
await page.goto('http://127.0.0.1:2283/');
await expect(page.locator('#sidebar')).toContainText('Server Online');
});
test('connects using ipv6', async ({ page, context }) => {
await utils.setAuthCookies(context, admin.accessToken, '[::1]');
await page.goto('http://[::1]:2283/');
await expect(page.locator('#sidebar')).toContainText('Server Online');
});
});

View File

@@ -13,6 +13,7 @@ export default defineConfig({
include: ['src/{api,cli,immich-admin}/specs/*.e2e-spec.ts'], include: ['src/{api,cli,immich-admin}/specs/*.e2e-spec.ts'],
globalSetup, globalSetup,
testTimeout: 15_000, testTimeout: 15_000,
pool: 'threads',
poolOptions: { poolOptions: {
threads: { threads: {
singleThread: true, singleThread: true,

View File

@@ -1,12 +1,12 @@
ARG DEVICE=cpu ARG DEVICE=cpu
FROM python:3.11-bookworm@sha256:ef4b550f029a76b94f8e6cc6e4a8ed0e870fc6c5af1c4e9d77faaea50f41f6cd as builder-cpu FROM python:3.11-bookworm@sha256:d0131ce0ff4bdb5e9eae6bc86ebde891c207d5cac1f3f582b5de0f903cc68384 AS builder-cpu
FROM builder-cpu as builder-openvino FROM builder-cpu AS builder-openvino
FROM builder-cpu as builder-cuda FROM builder-cpu AS builder-cuda
FROM builder-cpu as builder-armnn FROM builder-cpu AS builder-armnn
ENV ARMNN_PATH=/opt/armnn ENV ARMNN_PATH=/opt/armnn
COPY ann /opt/ann COPY ann /opt/ann
@@ -15,7 +15,7 @@ RUN mkdir /opt/armnn && \
cd /opt/ann && \ cd /opt/ann && \
sh build.sh sh build.sh
FROM builder-${DEVICE} as builder FROM builder-${DEVICE} AS builder
ARG DEVICE ARG DEVICE
ENV PYTHONDONTWRITEBYTECODE=1 \ ENV PYTHONDONTWRITEBYTECODE=1 \
@@ -34,9 +34,9 @@ RUN python3 -m venv /opt/venv
COPY poetry.lock pyproject.toml ./ COPY poetry.lock pyproject.toml ./
RUN poetry install --sync --no-interaction --no-ansi --no-root --with ${DEVICE} --without dev RUN poetry install --sync --no-interaction --no-ansi --no-root --with ${DEVICE} --without dev
FROM python:3.11-slim-bookworm@sha256:ee317183d292ee6ed30e90bc325043ca3f7d2e8c79ac5019575490b5256ae244 as prod-cpu FROM python:3.11-slim-bookworm@sha256:a90e299af8a9cd6b59c4aaed2b024c78561476978244a1ab89742a4a5ac8c974 AS prod-cpu
FROM prod-cpu as prod-openvino FROM prod-cpu AS prod-openvino
COPY scripts/configure-apt.sh ./ COPY scripts/configure-apt.sh ./
RUN ./configure-apt.sh && \ RUN ./configure-apt.sh && \
@@ -44,13 +44,13 @@ RUN ./configure-apt.sh && \
apt-get install -t unstable --no-install-recommends -yqq intel-opencl-icd && \ apt-get install -t unstable --no-install-recommends -yqq intel-opencl-icd && \
rm configure-apt.sh rm configure-apt.sh
FROM nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04@sha256:fa44193567d1908f7ca1f3abf8623ce9c63bc8cba7bcfdb32702eb04d326f7a8 as prod-cuda FROM nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04@sha256:fa44193567d1908f7ca1f3abf8623ce9c63bc8cba7bcfdb32702eb04d326f7a8 AS prod-cuda
COPY --from=builder-cuda /usr/local/bin/python3 /usr/local/bin/python3 COPY --from=builder-cuda /usr/local/bin/python3 /usr/local/bin/python3
COPY --from=builder-cuda /usr/local/lib/python3.11 /usr/local/lib/python3.11 COPY --from=builder-cuda /usr/local/lib/python3.11 /usr/local/lib/python3.11
COPY --from=builder-cuda /usr/local/lib/libpython3.11.so /usr/local/lib/libpython3.11.so COPY --from=builder-cuda /usr/local/lib/libpython3.11.so /usr/local/lib/libpython3.11.so
FROM prod-cpu as prod-armnn FROM prod-cpu AS prod-armnn
ENV LD_LIBRARY_PATH=/opt/armnn ENV LD_LIBRARY_PATH=/opt/armnn
@@ -70,7 +70,7 @@ COPY --from=builder-armnn \
/opt/ann/build.sh \ /opt/ann/build.sh \
/opt/armnn/ /opt/armnn/
FROM prod-${DEVICE} as prod FROM prod-${DEVICE} AS prod
ARG DEVICE ARG DEVICE
RUN apt-get update && \ RUN apt-get update && \

View File

@@ -65,7 +65,7 @@ class Ann(metaclass=_Singleton):
self.input_shapes: dict[int, tuple[tuple[int], ...]] = {} self.input_shapes: dict[int, tuple[tuple[int], ...]] = {}
self.ann: int | None = None self.ann: int | None = None
self.new() self.new()
if self.tuning_file is not None: if self.tuning_file is not None:
# make sure tuning file exists (without clearing contents) # make sure tuning file exists (without clearing contents)
# once filled, the tuning file reduces the cost/time of the first # once filled, the tuning file reduces the cost/time of the first
@@ -105,7 +105,7 @@ class Ann(metaclass=_Singleton):
raise ValueError("model_path must be a file with extension .armnn, .tflite or .onnx") raise ValueError("model_path must be a file with extension .armnn, .tflite or .onnx")
if not exists(model_path): if not exists(model_path):
raise ValueError("model_path must point to an existing file!") raise ValueError("model_path must point to an existing file!")
save_cached_network = False save_cached_network = False
if cached_network_path is not None and not exists(cached_network_path): if cached_network_path is not None and not exists(cached_network_path):
save_cached_network = True save_cached_network = True

View File

@@ -2,53 +2,64 @@ from app.config import clean_name
from app.schemas import ModelSource from app.schemas import ModelSource
_OPENCLIP_MODELS = { _OPENCLIP_MODELS = {
"RN50__openai",
"RN50__yfcc15m",
"RN50__cc12m",
"RN101__openai", "RN101__openai",
"RN101__yfcc15m", "RN101__yfcc15m",
"RN50x4__openai", "RN50__cc12m",
"RN50__openai",
"RN50__yfcc15m",
"RN50x16__openai", "RN50x16__openai",
"RN50x4__openai",
"RN50x64__openai", "RN50x64__openai",
"ViT-B-32__openai", "ViT-B-16-SigLIP-256__webli",
"ViT-B-16-SigLIP-384__webli",
"ViT-B-16-SigLIP-512__webli",
"ViT-B-16-SigLIP-i18n-256__webli",
"ViT-B-16-SigLIP__webli",
"ViT-B-16-plus-240__laion400m_e31",
"ViT-B-16-plus-240__laion400m_e32",
"ViT-B-16__laion400m_e31",
"ViT-B-16__laion400m_e32",
"ViT-B-16__openai",
"ViT-B-32__laion2b-s34b-b79k",
"ViT-B-32__laion2b_e16", "ViT-B-32__laion2b_e16",
"ViT-B-32__laion400m_e31", "ViT-B-32__laion400m_e31",
"ViT-B-32__laion400m_e32", "ViT-B-32__laion400m_e32",
"ViT-B-32__laion2b-s34b-b79k", "ViT-B-32__openai",
"ViT-B-16__openai", "ViT-H-14-378-quickgelu__dfn5b",
"ViT-B-16__laion400m_e31", "ViT-H-14-quickgelu__dfn5b",
"ViT-B-16__laion400m_e32", "ViT-H-14__laion2b-s32b-b79k",
"ViT-B-16-plus-240__laion400m_e31", "ViT-L-14-336__openai",
"ViT-B-16-plus-240__laion400m_e32", "ViT-L-14-quickgelu__dfn2b",
"ViT-L-14__openai", "ViT-L-14__laion2b-s32b-b82k",
"ViT-L-14__laion400m_e31", "ViT-L-14__laion400m_e31",
"ViT-L-14__laion400m_e32", "ViT-L-14__laion400m_e32",
"ViT-L-14__laion2b-s32b-b82k", "ViT-L-14__openai",
"ViT-L-14-336__openai", "ViT-L-16-SigLIP-256__webli",
"ViT-H-14__laion2b-s32b-b79k", "ViT-L-16-SigLIP-384__webli",
"ViT-SO400M-14-SigLIP-384__webli",
"ViT-g-14__laion2b-s12b-b42k", "ViT-g-14__laion2b-s12b-b42k",
"ViT-L-14-quickgelu__dfn2b", "XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k",
"ViT-H-14-quickgelu__dfn5b",
"ViT-H-14-378-quickgelu__dfn5b",
"XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k", "XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k",
"nllb-clip-base-siglip__mrl",
"nllb-clip-base-siglip__v1", "nllb-clip-base-siglip__v1",
"nllb-clip-large-siglip__mrl",
"nllb-clip-large-siglip__v1", "nllb-clip-large-siglip__v1",
} }
_MCLIP_MODELS = { _MCLIP_MODELS = {
"LABSE-Vit-L-14", "LABSE-Vit-L-14",
"XLM-Roberta-Large-Vit-B-32",
"XLM-Roberta-Large-Vit-B-16Plus", "XLM-Roberta-Large-Vit-B-16Plus",
"XLM-Roberta-Large-Vit-B-32",
"XLM-Roberta-Large-Vit-L-14", "XLM-Roberta-Large-Vit-L-14",
} }
_INSIGHTFACE_MODELS = { _INSIGHTFACE_MODELS = {
"antelopev2", "antelopev2",
"buffalo_l",
"buffalo_m",
"buffalo_s", "buffalo_s",
"buffalo_m",
"buffalo_l",
} }

View File

@@ -1,4 +1,4 @@
FROM mambaorg/micromamba:bookworm-slim@sha256:94d6837f023c0fc0bb68782dd2a984ff7fe0e21ea7e533056c9b8ca060e31de2 as builder FROM mambaorg/micromamba:bookworm-slim@sha256:954e438daab0ad0835430ea84acb27dd47d1ea35a7120c3c9dd9d1a5578f4b13 AS builder
ENV TRANSFORMERS_CACHE=/cache \ ENV TRANSFORMERS_CACHE=/cache \
PYTHONDONTWRITEBYTECODE=1 \ PYTHONDONTWRITEBYTECODE=1 \

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@ name: base
channels: channels:
- conda-forge - conda-forge
- nvidia - nvidia
- pytorch-nightly - pytorch
platforms: platforms:
- linux-64 - linux-64
dependencies: dependencies:
@@ -13,7 +13,7 @@ dependencies:
- orjson==3.* - orjson==3.*
- pip - pip
- python==3.11.* - python==3.11.*
- pytorch - pytorch>=2.3
- rich==13.* - rich==13.*
- safetensors==0.* - safetensors==0.*
- setuptools==68.* - setuptools==68.*
@@ -21,5 +21,5 @@ dependencies:
- transformers==4.* - transformers==4.*
- pip: - pip:
- multilingual-clip - multilingual-clip
- onnx-simplifier - onnxsim
category: main category: main

View File

@@ -1,3 +1,4 @@
import os
import tempfile import tempfile
import warnings import warnings
from pathlib import Path from pathlib import Path
@@ -8,7 +9,6 @@ from transformers import AutoTokenizer
from .openclip import OpenCLIPModelConfig from .openclip import OpenCLIPModelConfig
from .openclip import to_onnx as openclip_to_onnx from .openclip import to_onnx as openclip_to_onnx
from .optimize import optimize
from .util import get_model_path from .util import get_model_path
_MCLIP_TO_OPENCLIP = { _MCLIP_TO_OPENCLIP = {
@@ -23,18 +23,20 @@ def to_onnx(
model_name: str, model_name: str,
output_dir_visual: Path | str, output_dir_visual: Path | str,
output_dir_textual: Path | str, output_dir_textual: Path | str,
) -> None: ) -> tuple[Path, Path]:
textual_path = get_model_path(output_dir_textual) textual_path = get_model_path(output_dir_textual)
with tempfile.TemporaryDirectory() as tmpdir: with tempfile.TemporaryDirectory() as tmpdir:
model = MultilingualCLIP.from_pretrained(model_name, cache_dir=tmpdir) model = MultilingualCLIP.from_pretrained(model_name, cache_dir=os.environ.get("CACHE_DIR", tmpdir))
AutoTokenizer.from_pretrained(model_name).save_pretrained(output_dir_textual) AutoTokenizer.from_pretrained(model_name).save_pretrained(output_dir_textual)
model.eval()
for param in model.parameters(): for param in model.parameters():
param.requires_grad_(False) param.requires_grad_(False)
export_text_encoder(model, textual_path) export_text_encoder(model, textual_path)
openclip_to_onnx(_MCLIP_TO_OPENCLIP[model_name], output_dir_visual) visual_path, _ = openclip_to_onnx(_MCLIP_TO_OPENCLIP[model_name], output_dir_visual)
optimize(textual_path) assert visual_path is not None, "Visual model export failed"
return visual_path, textual_path
def export_text_encoder(model: MultilingualCLIP, output_path: Path | str) -> None: def export_text_encoder(model: MultilingualCLIP, output_path: Path | str) -> None:
@@ -58,10 +60,10 @@ def export_text_encoder(model: MultilingualCLIP, output_path: Path | str) -> Non
args, args,
output_path.as_posix(), output_path.as_posix(),
input_names=["input_ids", "attention_mask"], input_names=["input_ids", "attention_mask"],
output_names=["text_embedding"], output_names=["embedding"],
opset_version=17, opset_version=17,
dynamic_axes={ # dynamic_axes={
"input_ids": {0: "batch_size", 1: "sequence_length"}, # "input_ids": {0: "batch_size", 1: "sequence_length"},
"attention_mask": {0: "batch_size", 1: "sequence_length"}, # "attention_mask": {0: "batch_size", 1: "sequence_length"},
}, # },
) )

View File

@@ -1,3 +1,4 @@
import os
import tempfile import tempfile
import warnings import warnings
from dataclasses import dataclass, field from dataclasses import dataclass, field
@@ -7,7 +8,6 @@ import open_clip
import torch import torch
from transformers import AutoTokenizer from transformers import AutoTokenizer
from .optimize import optimize
from .util import get_model_path, save_config from .util import get_model_path, save_config
@@ -23,25 +23,28 @@ class OpenCLIPModelConfig:
if open_clip_cfg is None: if open_clip_cfg is None:
raise ValueError(f"Unknown model {self.name}") raise ValueError(f"Unknown model {self.name}")
self.image_size = open_clip_cfg["vision_cfg"]["image_size"] self.image_size = open_clip_cfg["vision_cfg"]["image_size"]
self.sequence_length = open_clip_cfg["text_cfg"]["context_length"] self.sequence_length = open_clip_cfg["text_cfg"].get("context_length", 77)
def to_onnx( def to_onnx(
model_cfg: OpenCLIPModelConfig, model_cfg: OpenCLIPModelConfig,
output_dir_visual: Path | str | None = None, output_dir_visual: Path | str | None = None,
output_dir_textual: Path | str | None = None, output_dir_textual: Path | str | None = None,
) -> None: ) -> tuple[Path | None, Path | None]:
visual_path = None
textual_path = None
with tempfile.TemporaryDirectory() as tmpdir: with tempfile.TemporaryDirectory() as tmpdir:
model = open_clip.create_model( model = open_clip.create_model(
model_cfg.name, model_cfg.name,
pretrained=model_cfg.pretrained, pretrained=model_cfg.pretrained,
jit=False, jit=False,
cache_dir=tmpdir, cache_dir=os.environ.get("CACHE_DIR", tmpdir),
require_pretrained=True, require_pretrained=True,
) )
text_vision_cfg = open_clip.get_model_config(model_cfg.name) text_vision_cfg = open_clip.get_model_config(model_cfg.name)
model.eval()
for param in model.parameters(): for param in model.parameters():
param.requires_grad_(False) param.requires_grad_(False)
@@ -53,8 +56,6 @@ def to_onnx(
save_config(text_vision_cfg, output_dir_visual.parent / "config.json") save_config(text_vision_cfg, output_dir_visual.parent / "config.json")
export_image_encoder(model, model_cfg, visual_path) export_image_encoder(model, model_cfg, visual_path)
optimize(visual_path)
if output_dir_textual is not None: if output_dir_textual is not None:
output_dir_textual = Path(output_dir_textual) output_dir_textual = Path(output_dir_textual)
textual_path = get_model_path(output_dir_textual) textual_path = get_model_path(output_dir_textual)
@@ -62,7 +63,7 @@ def to_onnx(
tokenizer_name = text_vision_cfg["text_cfg"].get("hf_tokenizer_name", "openai/clip-vit-base-patch32") tokenizer_name = text_vision_cfg["text_cfg"].get("hf_tokenizer_name", "openai/clip-vit-base-patch32")
AutoTokenizer.from_pretrained(tokenizer_name).save_pretrained(output_dir_textual) AutoTokenizer.from_pretrained(tokenizer_name).save_pretrained(output_dir_textual)
export_text_encoder(model, model_cfg, textual_path) export_text_encoder(model, model_cfg, textual_path)
optimize(textual_path) return visual_path, textual_path
def export_image_encoder(model: open_clip.CLIP, model_cfg: OpenCLIPModelConfig, output_path: Path | str) -> None: def export_image_encoder(model: open_clip.CLIP, model_cfg: OpenCLIPModelConfig, output_path: Path | str) -> None:
@@ -83,9 +84,9 @@ def export_image_encoder(model: open_clip.CLIP, model_cfg: OpenCLIPModelConfig,
args, args,
output_path.as_posix(), output_path.as_posix(),
input_names=["image"], input_names=["image"],
output_names=["image_embedding"], output_names=["embedding"],
opset_version=17, opset_version=17,
dynamic_axes={"image": {0: "batch_size"}}, # dynamic_axes={"image": {0: "batch_size"}},
) )
@@ -107,7 +108,7 @@ def export_text_encoder(model: open_clip.CLIP, model_cfg: OpenCLIPModelConfig, o
args, args,
output_path.as_posix(), output_path.as_posix(),
input_names=["text"], input_names=["text"],
output_names=["text_embedding"], output_names=["embedding"],
opset_version=17, opset_version=17,
dynamic_axes={"text": {0: "batch_size"}}, # dynamic_axes={"text": {0: "batch_size"}},
) )

View File

@@ -5,13 +5,26 @@ import onnxruntime as ort
import onnxsim import onnxsim
def save_onnx(model: onnx.ModelProto, output_path: Path | str) -> None:
try:
onnx.save(model, output_path)
except ValueError as e:
if "The proto size is larger than the 2 GB limit." in str(e):
onnx.save(model, output_path, save_as_external_data=True, size_threshold=1_000_000)
else:
raise e
def optimize_onnxsim(model_path: Path | str, output_path: Path | str) -> None: def optimize_onnxsim(model_path: Path | str, output_path: Path | str) -> None:
model_path = Path(model_path) model_path = Path(model_path)
output_path = Path(output_path) output_path = Path(output_path)
model = onnx.load(model_path.as_posix()) model = onnx.load(model_path.as_posix())
model, check = onnxsim.simplify(model, skip_shape_inference=True) model, check = onnxsim.simplify(model)
assert check, "Simplified ONNX model could not be validated" assert check, "Simplified ONNX model could not be validated"
onnx.save(model, output_path.as_posix()) for file in model_path.parent.iterdir():
if file.name.startswith("Constant") or "onnx" in file.name or file.suffix == ".weight":
file.unlink()
save_onnx(model, output_path)
def optimize_ort( def optimize_ort(
@@ -33,6 +46,4 @@ def optimize(model_path: Path | str) -> None:
model_path = Path(model_path) model_path = Path(model_path)
optimize_ort(model_path, model_path) optimize_ort(model_path, model_path)
# onnxsim serializes large models as a blob, which uses much more memory when loading the model at runtime optimize_onnxsim(model_path, model_path)
if not any(file.name.startswith("Constant") for file in model_path.parent.iterdir()):
optimize_onnxsim(model_path, model_path)

View File

@@ -3,74 +3,111 @@ import os
from pathlib import Path from pathlib import Path
from tempfile import TemporaryDirectory from tempfile import TemporaryDirectory
from huggingface_hub import create_repo, login, upload_folder import torch
from huggingface_hub import create_repo, upload_folder
from models import mclip, openclip from models import mclip, openclip
from models.optimize import optimize
from rich.progress import Progress from rich.progress import Progress
models = [ models = [
"RN50::openai", "M-CLIP/LABSE-Vit-L-14",
"RN50::yfcc15m", "M-CLIP/XLM-Roberta-Large-Vit-B-16Plus",
"RN50::cc12m", "M-CLIP/XLM-Roberta-Large-Vit-B-32",
"M-CLIP/XLM-Roberta-Large-Vit-L-14",
"RN101::openai", "RN101::openai",
"RN101::yfcc15m", "RN101::yfcc15m",
"RN50x4::openai", "RN50::cc12m",
"RN50::openai",
"RN50::yfcc15m",
"RN50x16::openai", "RN50x16::openai",
"RN50x4::openai",
"RN50x64::openai", "RN50x64::openai",
"ViT-B-32::openai", "ViT-B-16-SigLIP-256::webli",
"ViT-B-16-SigLIP-384::webli",
"ViT-B-16-SigLIP-512::webli",
"ViT-B-16-SigLIP-i18n-256::webli",
"ViT-B-16-SigLIP::webli",
"ViT-B-16-plus-240::laion400m_e31",
"ViT-B-16-plus-240::laion400m_e32",
"ViT-B-16::laion400m_e31",
"ViT-B-16::laion400m_e32",
"ViT-B-16::openai",
"ViT-B-32::laion2b-s34b-b79k",
"ViT-B-32::laion2b_e16", "ViT-B-32::laion2b_e16",
"ViT-B-32::laion400m_e31", "ViT-B-32::laion400m_e31",
"ViT-B-32::laion400m_e32", "ViT-B-32::laion400m_e32",
"ViT-B-32::laion2b-s34b-b79k", "ViT-B-32::openai",
"ViT-B-16::openai", "ViT-H-14-378-quickgelu::dfn5b",
"ViT-B-16::laion400m_e31", "ViT-H-14-quickgelu::dfn5b",
"ViT-B-16::laion400m_e32", "ViT-H-14::laion2b-s32b-b79k",
"ViT-B-16-plus-240::laion400m_e31", "ViT-L-14-336::openai",
"ViT-B-16-plus-240::laion400m_e32", "ViT-L-14-quickgelu::dfn2b",
"ViT-L-14::openai", "ViT-L-14::laion2b-s32b-b82k",
"ViT-L-14::laion400m_e31", "ViT-L-14::laion400m_e31",
"ViT-L-14::laion400m_e32", "ViT-L-14::laion400m_e32",
"ViT-L-14::laion2b-s32b-b82k", "ViT-L-14::openai",
"ViT-L-14-336::openai", "ViT-L-16-SigLIP-256::webli",
"ViT-H-14::laion2b-s32b-b79k", "ViT-L-16-SigLIP-384::webli",
"ViT-SO400M-14-SigLIP-384::webli",
"ViT-g-14::laion2b-s12b-b42k", "ViT-g-14::laion2b-s12b-b42k",
"M-CLIP/LABSE-Vit-L-14", "nllb-clip-base-siglip::mrl",
"M-CLIP/XLM-Roberta-Large-Vit-B-32", "nllb-clip-base-siglip::v1",
"M-CLIP/XLM-Roberta-Large-Vit-B-16Plus", "nllb-clip-large-siglip::mrl",
"M-CLIP/XLM-Roberta-Large-Vit-L-14", "nllb-clip-large-siglip::v1",
"xlm-roberta-base-ViT-B-32::laion5b_s13b_b90k",
"xlm-roberta-large-ViT-H-14::frozen_laion5b_s13b_b90k",
] ]
login(token=os.environ["HF_AUTH_TOKEN"]) # glob to delete old UUID blobs when reuploading models
uuid_char = "[a-fA-F0-9]"
uuid_glob = uuid_char * 8 + "-" + uuid_char * 4 + "-" + uuid_char * 4 + "-" + uuid_char * 4 + "-" + uuid_char * 12
# remote repo files to be deleted before uploading
# deletion is in the same commit as the upload, so it's atomic
delete_patterns = ["**/*onnx*", "**/Constant*", "**/*.weight", "**/*.bias", f"**/{uuid_glob}"]
with Progress() as progress: with Progress() as progress:
task1 = progress.add_task("[green]Exporting models...", total=len(models)) task = progress.add_task("[green]Exporting models...", total=len(models))
task2 = progress.add_task("[yellow]Uploading models...", total=len(models)) token = os.environ.get("HF_AUTH_TOKEN")
torch.backends.mha.set_fastpath_enabled(False)
with TemporaryDirectory() as tmp: with TemporaryDirectory() as tmp:
tmpdir = Path(tmp) tmpdir = Path(tmp)
for model in models: for model in models:
model_name = model.split("/")[-1].replace("::", "__") model_name = model.split("/")[-1].replace("::", "__")
hf_model_name = model_name.replace("xlm-roberta-large", "XLM-Roberta-Large")
hf_model_name = model_name.replace("xlm-roberta-base", "XLM-Roberta-Base")
config_path = tmpdir / model_name / "config.json" config_path = tmpdir / model_name / "config.json"
def upload() -> None:
progress.update(task2, description=f"[yellow]Uploading {model_name}")
repo_id = f"immich-app/{model_name}"
create_repo(repo_id, exist_ok=True)
upload_folder(repo_id=repo_id, folder_path=tmpdir / model_name)
progress.update(task2, advance=1)
def export() -> None: def export() -> None:
progress.update(task1, description=f"[green]Exporting {model_name}") progress.update(task, description=f"[green]Exporting {hf_model_name}")
visual_dir = tmpdir / model_name / "visual" visual_dir = tmpdir / hf_model_name / "visual"
textual_dir = tmpdir / model_name / "textual" textual_dir = tmpdir / hf_model_name / "textual"
if model.startswith("M-CLIP"): if model.startswith("M-CLIP"):
mclip.to_onnx(model, visual_dir, textual_dir) visual_path, textual_path = mclip.to_onnx(model, visual_dir, textual_dir)
else: else:
name, _, pretrained = model_name.partition("__") name, _, pretrained = model_name.partition("__")
openclip.to_onnx(openclip.OpenCLIPModelConfig(name, pretrained), visual_dir, textual_dir) config = openclip.OpenCLIPModelConfig(name, pretrained)
visual_path, textual_path = openclip.to_onnx(config, visual_dir, textual_dir)
progress.update(task, description=f"[green]Optimizing {hf_model_name} (visual)")
optimize(visual_path)
progress.update(task, description=f"[green]Optimizing {hf_model_name} (textual)")
optimize(textual_path)
progress.update(task1, advance=1)
gc.collect() gc.collect()
def upload() -> None:
progress.update(task, description=f"[yellow]Uploading {hf_model_name}")
repo_id = f"immich-app/{hf_model_name}"
create_repo(repo_id, exist_ok=True)
upload_folder(
repo_id=repo_id,
folder_path=tmpdir / hf_model_name,
delete_patterns=delete_patterns,
token=token,
)
export() export()
upload() if token is not None:
upload()
progress.update(task, advance=1)

View File

@@ -1236,13 +1236,13 @@ socks = ["socksio (==1.*)"]
[[package]] [[package]]
name = "huggingface-hub" name = "huggingface-hub"
version = "0.24.0" version = "0.24.5"
description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub"
optional = false optional = false
python-versions = ">=3.8.0" python-versions = ">=3.8.0"
files = [ files = [
{file = "huggingface_hub-0.24.0-py3-none-any.whl", hash = "sha256:7ad92edefb93d8145c061f6df8d99df2ff85f8379ba5fac8a95aca0642afa5d7"}, {file = "huggingface_hub-0.24.5-py3-none-any.whl", hash = "sha256:d93fb63b1f1a919a22ce91a14518974e81fc4610bf344dfe7572343ce8d3aced"},
{file = "huggingface_hub-0.24.0.tar.gz", hash = "sha256:6c7092736b577d89d57b3cdfea026f1b0dc2234ae783fa0d59caf1bf7d52dfa7"}, {file = "huggingface_hub-0.24.5.tar.gz", hash = "sha256:7b45d6744dd53ce9cbf9880957de00e9d10a9ae837f1c9b7255fc8fa4e8264f3"},
] ]
[package.dependencies] [package.dependencies]
@@ -1530,13 +1530,13 @@ test = ["pytest (>=7.4)", "pytest-cov (>=4.1)"]
[[package]] [[package]]
name = "locust" name = "locust"
version = "2.29.1" version = "2.31.1"
description = "Developer-friendly load testing framework" description = "Developer-friendly load testing framework"
optional = false optional = false
python-versions = ">=3.9" python-versions = ">=3.9"
files = [ files = [
{file = "locust-2.29.1-py3-none-any.whl", hash = "sha256:8b15daab44cdf50eef1860a32bb30969423e3795247115e5a37446da3240c6d6"}, {file = "locust-2.31.1-py3-none-any.whl", hash = "sha256:20756509939004e95c622ac3042886edab38b736f00534cc03ce2774064e7f71"},
{file = "locust-2.29.1.tar.gz", hash = "sha256:2e0628a59e2689a50cb4735a9a43709e30f2da7ed276c15d877c5325507f44b1"}, {file = "locust-2.31.1.tar.gz", hash = "sha256:d26b7333cdef80645f3978d8ff9aabab4d53e41ed82cc8490212aa68e8498fdd"},
] ]
[package.dependencies] [package.dependencies]
@@ -1548,14 +1548,14 @@ gevent = ">=22.10.2"
geventhttpclient = ">=2.3.1" geventhttpclient = ">=2.3.1"
msgpack = ">=1.0.0" msgpack = ">=1.0.0"
psutil = ">=5.9.1" psutil = ">=5.9.1"
pywin32 = {version = "*", markers = "platform_system == \"Windows\""} pywin32 = {version = "*", markers = "sys_platform == \"win32\""}
pyzmq = ">=25.0.0" pyzmq = ">=25.0.0"
requests = [ requests = [
{version = ">=2.32.2", markers = "python_version > \"3.11\""}, {version = ">=2.26.0", markers = "python_full_version <= \"3.11.0\""},
{version = ">=2.26.0", markers = "python_version <= \"3.11\""}, {version = ">=2.32.2", markers = "python_full_version > \"3.11.0\""},
] ]
tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
typing-extensions = {version = ">=4.6.0", markers = "python_version < \"3.11\""} typing_extensions = {version = ">=4.6.0", markers = "python_version < \"3.11\""}
Werkzeug = ">=2.0.0" Werkzeug = ">=2.0.0"
[[package]] [[package]]
@@ -1794,38 +1794,38 @@ files = [
[[package]] [[package]]
name = "mypy" name = "mypy"
version = "1.11.0" version = "1.11.1"
description = "Optional static typing for Python" description = "Optional static typing for Python"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
{file = "mypy-1.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3824187c99b893f90c845bab405a585d1ced4ff55421fdf5c84cb7710995229"}, {file = "mypy-1.11.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a32fc80b63de4b5b3e65f4be82b4cfa362a46702672aa6a0f443b4689af7008c"},
{file = "mypy-1.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:96f8dbc2c85046c81bcddc246232d500ad729cb720da4e20fce3b542cab91287"}, {file = "mypy-1.11.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c1952f5ea8a5a959b05ed5f16452fddadbaae48b5d39235ab4c3fc444d5fd411"},
{file = "mypy-1.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a5d8d8dd8613a3e2be3eae829ee891b6b2de6302f24766ff06cb2875f5be9c6"}, {file = "mypy-1.11.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1e30dc3bfa4e157e53c1d17a0dad20f89dc433393e7702b813c10e200843b03"},
{file = "mypy-1.11.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:72596a79bbfb195fd41405cffa18210af3811beb91ff946dbcb7368240eed6be"}, {file = "mypy-1.11.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2c63350af88f43a66d3dfeeeb8d77af34a4f07d760b9eb3a8697f0386c7590b4"},
{file = "mypy-1.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:35ce88b8ed3a759634cb4eb646d002c4cef0a38f20565ee82b5023558eb90c00"}, {file = "mypy-1.11.1-cp310-cp310-win_amd64.whl", hash = "sha256:a831671bad47186603872a3abc19634f3011d7f83b083762c942442d51c58d58"},
{file = "mypy-1.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:98790025861cb2c3db8c2f5ad10fc8c336ed2a55f4daf1b8b3f877826b6ff2eb"}, {file = "mypy-1.11.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7b6343d338390bb946d449677726edf60102a1c96079b4f002dedff375953fc5"},
{file = "mypy-1.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:25bcfa75b9b5a5f8d67147a54ea97ed63a653995a82798221cca2a315c0238c1"}, {file = "mypy-1.11.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4fe9f4e5e521b458d8feb52547f4bade7ef8c93238dfb5bbc790d9ff2d770ca"},
{file = "mypy-1.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bea2a0e71c2a375c9fa0ede3d98324214d67b3cbbfcbd55ac8f750f85a414e3"}, {file = "mypy-1.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:886c9dbecc87b9516eff294541bf7f3655722bf22bb898ee06985cd7269898de"},
{file = "mypy-1.11.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d2b3d36baac48e40e3064d2901f2fbd2a2d6880ec6ce6358825c85031d7c0d4d"}, {file = "mypy-1.11.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fca4a60e1dd9fd0193ae0067eaeeb962f2d79e0d9f0f66223a0682f26ffcc809"},
{file = "mypy-1.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:d8e2e43977f0e09f149ea69fd0556623919f816764e26d74da0c8a7b48f3e18a"}, {file = "mypy-1.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:0bd53faf56de9643336aeea1c925012837432b5faf1701ccca7fde70166ccf72"},
{file = "mypy-1.11.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1d44c1e44a8be986b54b09f15f2c1a66368eb43861b4e82573026e04c48a9e20"}, {file = "mypy-1.11.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f39918a50f74dc5969807dcfaecafa804fa7f90c9d60506835036cc1bc891dc8"},
{file = "mypy-1.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cea3d0fb69637944dd321f41bc896e11d0fb0b0aa531d887a6da70f6e7473aba"}, {file = "mypy-1.11.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0bc71d1fb27a428139dd78621953effe0d208aed9857cb08d002280b0422003a"},
{file = "mypy-1.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a83ec98ae12d51c252be61521aa5731f5512231d0b738b4cb2498344f0b840cd"}, {file = "mypy-1.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b868d3bcff720dd7217c383474008ddabaf048fad8d78ed948bb4b624870a417"},
{file = "mypy-1.11.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c7b73a856522417beb78e0fb6d33ef89474e7a622db2653bc1285af36e2e3e3d"}, {file = "mypy-1.11.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a707ec1527ffcdd1c784d0924bf5cb15cd7f22683b919668a04d2b9c34549d2e"},
{file = "mypy-1.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:f2268d9fcd9686b61ab64f077be7ffbc6fbcdfb4103e5dd0cc5eaab53a8886c2"}, {file = "mypy-1.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:64f4a90e3ea07f590c5bcf9029035cf0efeae5ba8be511a8caada1a4893f5525"},
{file = "mypy-1.11.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:940bfff7283c267ae6522ef926a7887305945f716a7704d3344d6d07f02df850"}, {file = "mypy-1.11.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:749fd3213916f1751fff995fccf20c6195cae941dc968f3aaadf9bb4e430e5a2"},
{file = "mypy-1.11.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:14f9294528b5f5cf96c721f231c9f5b2733164e02c1c018ed1a0eff8a18005ac"}, {file = "mypy-1.11.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b639dce63a0b19085213ec5fdd8cffd1d81988f47a2dec7100e93564f3e8fb3b"},
{file = "mypy-1.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d7b54c27783991399046837df5c7c9d325d921394757d09dbcbf96aee4649fe9"}, {file = "mypy-1.11.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c956b49c5d865394d62941b109728c5c596a415e9c5b2be663dd26a1ff07bc0"},
{file = "mypy-1.11.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:65f190a6349dec29c8d1a1cd4aa71284177aee5949e0502e6379b42873eddbe7"}, {file = "mypy-1.11.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45df906e8b6804ef4b666af29a87ad9f5921aad091c79cc38e12198e220beabd"},
{file = "mypy-1.11.0-cp38-cp38-win_amd64.whl", hash = "sha256:dbe286303241fea8c2ea5466f6e0e6a046a135a7e7609167b07fd4e7baf151bf"}, {file = "mypy-1.11.1-cp38-cp38-win_amd64.whl", hash = "sha256:d44be7551689d9d47b7abc27c71257adfdb53f03880841a5db15ddb22dc63edb"},
{file = "mypy-1.11.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:104e9c1620c2675420abd1f6c44bab7dd33cc85aea751c985006e83dcd001095"}, {file = "mypy-1.11.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2684d3f693073ab89d76da8e3921883019ea8a3ec20fa5d8ecca6a2db4c54bbe"},
{file = "mypy-1.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f006e955718ecd8d159cee9932b64fba8f86ee6f7728ca3ac66c3a54b0062abe"}, {file = "mypy-1.11.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:79c07eb282cb457473add5052b63925e5cc97dfab9812ee65a7c7ab5e3cb551c"},
{file = "mypy-1.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:becc9111ca572b04e7e77131bc708480cc88a911adf3d0239f974c034b78085c"}, {file = "mypy-1.11.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11965c2f571ded6239977b14deebd3f4c3abd9a92398712d6da3a772974fad69"},
{file = "mypy-1.11.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6801319fe76c3f3a3833f2b5af7bd2c17bb93c00026a2a1b924e6762f5b19e13"}, {file = "mypy-1.11.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a2b43895a0f8154df6519706d9bca8280cda52d3d9d1514b2d9c3e26792a0b74"},
{file = "mypy-1.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:c1a184c64521dc549324ec6ef7cbaa6b351912be9cb5edb803c2808a0d7e85ac"}, {file = "mypy-1.11.1-cp39-cp39-win_amd64.whl", hash = "sha256:1a81cf05975fd61aec5ae16501a091cfb9f605dc3e3c878c0da32f250b74760b"},
{file = "mypy-1.11.0-py3-none-any.whl", hash = "sha256:56913ec8c7638b0091ef4da6fcc9136896914a9d60d54670a75880c3e5b99ace"}, {file = "mypy-1.11.1-py3-none-any.whl", hash = "sha256:0624bdb940255d2dd24e829d99a13cfeb72e4e9031f9492148f410ed30bcab54"},
{file = "mypy-1.11.0.tar.gz", hash = "sha256:93743608c7348772fdc717af4aeee1997293a1ad04bc0ea6efa15bf65385c538"}, {file = "mypy-1.11.1.tar.gz", hash = "sha256:f404a0b069709f18bbdb702eb3dcfe51910602995de00bd39cea3050b5772d08"},
] ]
[package.dependencies] [package.dependencies]
@@ -2074,10 +2074,10 @@ files = [
[package.dependencies] [package.dependencies]
numpy = [ numpy = [
{version = ">=1.26.0", markers = "python_version >= \"3.12\""},
{version = ">=1.23.5", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, {version = ">=1.23.5", markers = "python_version >= \"3.11\" and python_version < \"3.12\""},
{version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\" and python_version < \"3.11\""}, {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\" and python_version < \"3.11\""},
{version = ">=1.21.2", markers = "platform_system != \"Darwin\" and python_version >= \"3.10\" and python_version < \"3.11\""}, {version = ">=1.21.2", markers = "platform_system != \"Darwin\" and python_version >= \"3.10\" and python_version < \"3.11\""},
{version = ">=1.26.0", markers = "python_version >= \"3.12\""},
] ]
[[package]] [[package]]
@@ -2466,13 +2466,13 @@ files = [
[[package]] [[package]]
name = "pytest" name = "pytest"
version = "8.2.2" version = "8.3.2"
description = "pytest: simple powerful testing with Python" description = "pytest: simple powerful testing with Python"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
{file = "pytest-8.2.2-py3-none-any.whl", hash = "sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343"}, {file = "pytest-8.3.2-py3-none-any.whl", hash = "sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5"},
{file = "pytest-8.2.2.tar.gz", hash = "sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977"}, {file = "pytest-8.3.2.tar.gz", hash = "sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce"},
] ]
[package.dependencies] [package.dependencies]
@@ -2480,7 +2480,7 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""}
exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
iniconfig = "*" iniconfig = "*"
packaging = "*" packaging = "*"
pluggy = ">=1.5,<2.0" pluggy = ">=1.5,<2"
tomli = {version = ">=1", markers = "python_version < \"3.11\""} tomli = {version = ">=1", markers = "python_version < \"3.11\""}
[package.extras] [package.extras]
@@ -2827,29 +2827,29 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"]
[[package]] [[package]]
name = "ruff" name = "ruff"
version = "0.5.4" version = "0.5.6"
description = "An extremely fast Python linter and code formatter, written in Rust." description = "An extremely fast Python linter and code formatter, written in Rust."
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
{file = "ruff-0.5.4-py3-none-linux_armv6l.whl", hash = "sha256:82acef724fc639699b4d3177ed5cc14c2a5aacd92edd578a9e846d5b5ec18ddf"}, {file = "ruff-0.5.6-py3-none-linux_armv6l.whl", hash = "sha256:a0ef5930799a05522985b9cec8290b185952f3fcd86c1772c3bdbd732667fdcd"},
{file = "ruff-0.5.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:da62e87637c8838b325e65beee485f71eb36202ce8e3cdbc24b9fcb8b99a37be"}, {file = "ruff-0.5.6-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b652dc14f6ef5d1552821e006f747802cc32d98d5509349e168f6bf0ee9f8f42"},
{file = "ruff-0.5.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e98ad088edfe2f3b85a925ee96da652028f093d6b9b56b76fc242d8abb8e2059"}, {file = "ruff-0.5.6-py3-none-macosx_11_0_arm64.whl", hash = "sha256:80521b88d26a45e871f31e4b88938fd87db7011bb961d8afd2664982dfc3641a"},
{file = "ruff-0.5.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c55efbecc3152d614cfe6c2247a3054cfe358cefbf794f8c79c8575456efe19"}, {file = "ruff-0.5.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9bc8f328a9f1309ae80e4d392836e7dbc77303b38ed4a7112699e63d3b066ab"},
{file = "ruff-0.5.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f9b85eaa1f653abd0a70603b8b7008d9e00c9fa1bbd0bf40dad3f0c0bdd06793"}, {file = "ruff-0.5.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4d394940f61f7720ad371ddedf14722ee1d6250fd8d020f5ea5a86e7be217daf"},
{file = "ruff-0.5.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0cf497a47751be8c883059c4613ba2f50dd06ec672692de2811f039432875278"}, {file = "ruff-0.5.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111a99cdb02f69ddb2571e2756e017a1496c2c3a2aeefe7b988ddab38b416d36"},
{file = "ruff-0.5.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:09c14ed6a72af9ccc8d2e313d7acf7037f0faff43cde4b507e66f14e812e37f7"}, {file = "ruff-0.5.6-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:e395daba77a79f6dc0d07311f94cc0560375ca20c06f354c7c99af3bf4560c5d"},
{file = "ruff-0.5.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:628f6b8f97b8bad2490240aa84f3e68f390e13fabc9af5c0d3b96b485921cd60"}, {file = "ruff-0.5.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c476acb43c3c51e3c614a2e878ee1589655fa02dab19fe2db0423a06d6a5b1b6"},
{file = "ruff-0.5.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3520a00c0563d7a7a7c324ad7e2cde2355733dafa9592c671fb2e9e3cd8194c1"}, {file = "ruff-0.5.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2ff8003f5252fd68425fd53d27c1f08b201d7ed714bb31a55c9ac1d4c13e2eb"},
{file = "ruff-0.5.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93789f14ca2244fb91ed481456f6d0bb8af1f75a330e133b67d08f06ad85b516"}, {file = "ruff-0.5.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c94e084ba3eaa80c2172918c2ca2eb2230c3f15925f4ed8b6297260c6ef179ad"},
{file = "ruff-0.5.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:029454e2824eafa25b9df46882f7f7844d36fd8ce51c1b7f6d97e2615a57bbcc"}, {file = "ruff-0.5.6-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:1f77c1c3aa0669fb230b06fb24ffa3e879391a3ba3f15e3d633a752da5a3e670"},
{file = "ruff-0.5.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:9492320eed573a13a0bc09a2957f17aa733fff9ce5bf00e66e6d4a88ec33813f"}, {file = "ruff-0.5.6-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:f908148c93c02873210a52cad75a6eda856b2cbb72250370ce3afef6fb99b1ed"},
{file = "ruff-0.5.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a6e1f62a92c645e2919b65c02e79d1f61e78a58eddaebca6c23659e7c7cb4ac7"}, {file = "ruff-0.5.6-py3-none-musllinux_1_2_i686.whl", hash = "sha256:563a7ae61ad284187d3071d9041c08019975693ff655438d8d4be26e492760bd"},
{file = "ruff-0.5.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:768fa9208df2bec4b2ce61dbc7c2ddd6b1be9fb48f1f8d3b78b3332c7d71c1ff"}, {file = "ruff-0.5.6-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:94fe60869bfbf0521e04fd62b74cbca21cbc5beb67cbb75ab33fe8c174f54414"},
{file = "ruff-0.5.4-py3-none-win32.whl", hash = "sha256:e1e7393e9c56128e870b233c82ceb42164966f25b30f68acbb24ed69ce9c3a4e"}, {file = "ruff-0.5.6-py3-none-win32.whl", hash = "sha256:e6a584c1de6f8591c2570e171cc7ce482bb983d49c70ddf014393cd39e9dfaed"},
{file = "ruff-0.5.4-py3-none-win_amd64.whl", hash = "sha256:58b54459221fd3f661a7329f177f091eb35cf7a603f01d9eb3eb11cc348d38c4"}, {file = "ruff-0.5.6-py3-none-win_amd64.whl", hash = "sha256:d7fe7dccb1a89dc66785d7aa0ac283b2269712d8ed19c63af908fdccca5ccc1a"},
{file = "ruff-0.5.4-py3-none-win_arm64.whl", hash = "sha256:bd53da65f1085fb5b307c38fd3c0829e76acf7b2a912d8d79cadcdb4875c1eb7"}, {file = "ruff-0.5.6-py3-none-win_arm64.whl", hash = "sha256:57c6c0dd997b31b536bff49b9eee5ed3194d60605a4427f735eeb1f9c1b8d264"},
{file = "ruff-0.5.4.tar.gz", hash = "sha256:2795726d5f71c4f4e70653273d1c23a8182f07dd8e48c12de5d867bfb7557eed"}, {file = "ruff-0.5.6.tar.gz", hash = "sha256:07c9e3c2a8e1fe377dd460371c3462671a728c981c3205a5217291422209f642"},
] ]
[[package]] [[package]]
@@ -2991,19 +2991,18 @@ test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeo
[[package]] [[package]]
name = "setuptools" name = "setuptools"
version = "68.2.2" version = "70.3.0"
description = "Easily download, build, install, upgrade, and uninstall Python packages" description = "Easily download, build, install, upgrade, and uninstall Python packages"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
{file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, {file = "setuptools-70.3.0-py3-none-any.whl", hash = "sha256:fe384da74336c398e0d956d1cae0669bc02eed936cdb1d49b57de1990dc11ffc"},
{file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, {file = "setuptools-70.3.0.tar.gz", hash = "sha256:f171bab1dfbc86b132997f26a119f6056a57950d058587841a0082e8830f9dc5"},
] ]
[package.extras] [package.extras]
docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
[[package]] [[package]]
name = "six" name = "six"
@@ -3263,13 +3262,13 @@ zstd = ["zstandard (>=0.18.0)"]
[[package]] [[package]]
name = "uvicorn" name = "uvicorn"
version = "0.30.1" version = "0.30.5"
description = "The lightning-fast ASGI server." description = "The lightning-fast ASGI server."
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
{file = "uvicorn-0.30.1-py3-none-any.whl", hash = "sha256:cd17daa7f3b9d7a24de3617820e634d0933b69eed8e33a516071174427238c81"}, {file = "uvicorn-0.30.5-py3-none-any.whl", hash = "sha256:b2d86de274726e9878188fa07576c9ceeff90a839e2b6e25c917fe05f5a6c835"},
{file = "uvicorn-0.30.1.tar.gz", hash = "sha256:d46cd8e0fd80240baffbcd9ec1012a712938754afcf81bce56c024c1656aece8"}, {file = "uvicorn-0.30.5.tar.gz", hash = "sha256:ac6fdbd4425c5fd17a9fe39daf4d4d075da6fdc80f653e5894cdc2fd98752bee"},
] ]
[package.dependencies] [package.dependencies]
@@ -3601,4 +3600,4 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"]
[metadata] [metadata]
lock-version = "2.0" lock-version = "2.0"
python-versions = ">=3.10,<4.0" python-versions = ">=3.10,<4.0"
content-hash = "df9afeda50e05cb62b322a047028a9b0851db197c4f379903c70adab3a98777a" content-hash = "b2b053886ca1dd3a3305c63caf155b1976dfc4066f72f5d1ecfc42099db34aab"

View File

@@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = "machine-learning" name = "machine-learning"
version = "1.110.0" version = "1.111.0"
description = "" description = ""
authors = ["Hau Tran <alex.tran1502@gmail.com>"] authors = ["Hau Tran <alex.tran1502@gmail.com>"]
readme = "README.md" readme = "README.md"
@@ -17,7 +17,7 @@ pydantic = "^1.10.8"
aiocache = ">=0.12.1,<1.0" aiocache = ">=0.12.1,<1.0"
rich = ">=13.4.2" rich = ">=13.4.2"
ftfy = ">=6.1.1" ftfy = ">=6.1.1"
setuptools = "^68.0.0" setuptools = "^70.0.0"
python-multipart = ">=0.0.6,<1.0" python-multipart = ">=0.0.6,<1.0"
orjson = ">=3.9.5" orjson = ">=3.9.5"
gunicorn = ">=21.1.0" gunicorn = ">=21.1.0"

View File

@@ -1,5 +1,5 @@
{ {
"dart.flutterSdkPath": ".fvm/versions/3.22.1", "dart.flutterSdkPath": ".fvm/versions/3.22.3",
"search.exclude": { "search.exclude": {
"**/.fvm": true "**/.fvm": true
}, },

View File

@@ -1,7 +1,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="app.alextran.immich" <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="app.alextran.immich"
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<application android:label="Immich" android:name=".ImmichApp" android:usesCleartextTraffic="true" <application android:label="Immich" android:name=".ImmichApp" android:usesCleartextTraffic="true"
android:icon="@mipmap/ic_launcher" android:requestLegacyExternalStorage="true" android:largeHeap="true"> android:icon="@mipmap/ic_launcher" android:requestLegacyExternalStorage="true"
android:largeHeap="true">
<meta-data <meta-data
android:name="io.flutter.embedding.android.EnableImpeller" android:name="io.flutter.embedding.android.EnableImpeller"
@@ -55,7 +56,8 @@
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />
<uses-permission android:name="android.permission.MANAGE_MEDIA" /> <uses-permission android:name="android.permission.MANAGE_MEDIA" />
@@ -65,6 +67,7 @@
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<queries> <queries>
<intent> <intent>
@@ -76,4 +79,4 @@
<data android:scheme="geo" /> <data android:scheme="geo" />
</intent> </intent>
</queries> </queries>
</manifest> </manifest>

View File

@@ -8,9 +8,11 @@ allprojects {
} }
rootProject.buildDir = '../build' rootProject.buildDir = '../build'
subprojects { subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}" project.buildDir = "${rootProject.buildDir}/${project.name}"
} }
subprojects { subprojects {
project.evaluationDependsOn(':app') project.evaluationDependsOn(':app')
} }

View File

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

View File

@@ -19,8 +19,8 @@ pluginManagement {
plugins { plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0" id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "7.4.2" apply false id "com.android.application" version "7.4.2" apply false
id "org.jetbrains.kotlin.android" version "1.9.24" apply false id "org.jetbrains.kotlin.android" version "1.9.0" apply false
id "org.jetbrains.kotlin.kapt" version "1.9.24" apply false id "org.jetbrains.kotlin.kapt" version "1.9.0" apply false
} }
include ":app" include ":app"

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "يلغي", "action_common_cancel": "يلغي",
"action_common_clear": "مسح", "action_common_clear": "مسح",
"action_common_confirm": "تأكيد", "action_common_confirm": "تأكيد",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "تحديث", "action_common_update": "تحديث",
"add_to_album_bottom_sheet_added": "تمت الاضافة{album}", "add_to_album_bottom_sheet_added": "تمت الاضافة{album}",
"add_to_album_bottom_sheet_already_exists": "موجودة مسبقا {album}", "add_to_album_bottom_sheet_already_exists": "موجودة مسبقا {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "كلمة المرور الجديدة", "change_password_form_new_password": "كلمة المرور الجديدة",
"change_password_form_password_mismatch": "كلمة المرور غير مطابقة", "change_password_form_password_mismatch": "كلمة المرور غير مطابقة",
"change_password_form_reenter_new_password": "أعد إدخال كلمة مرور جديدة", "change_password_form_reenter_new_password": "أعد إدخال كلمة مرور جديدة",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "أضف إلى الألبوم", "common_add_to_album": "أضف إلى الألبوم",
"common_change_password": "تغيير كلمة المرور", "common_change_password": "تغيير كلمة المرور",
"common_create_new_album": "إنشاء ألبوم جديد", "common_create_new_album": "إنشاء ألبوم جديد",
"common_server_error": "يرجى التحقق من اتصال الشبكة الخاص بك ، والتأكد من أن الجهاز قابل للوصول وإصدارات التطبيق/الجهاز متوافقة.", "common_server_error": "يرجى التحقق من اتصال الشبكة الخاص بك ، والتأكد من أن الجهاز قابل للوصول وإصدارات التطبيق/الجهاز متوافقة.",
"common_shared": "مشترك", "common_shared": "مشترك",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "أضف إلى الألبوم", "control_bottom_app_bar_add_to_album": "أضف إلى الألبوم",
"control_bottom_app_bar_album_info": "{} items", "control_bottom_app_bar_album_info": "{} items",
"control_bottom_app_bar_album_info_shared": "{} items · Shared", "control_bottom_app_bar_album_info_shared": "{} items · Shared",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "يمسح", "control_bottom_app_bar_delete": "يمسح",
"control_bottom_app_bar_delete_from_immich": " حذف منال تطبيق", "control_bottom_app_bar_delete_from_immich": " حذف منال تطبيق",
"control_bottom_app_bar_delete_from_local": "حذف من الجهاز", "control_bottom_app_bar_delete_from_local": "حذف من الجهاز",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "تحديد الوجهة", "control_bottom_app_bar_edit_location": "تحديد الوجهة",
"control_bottom_app_bar_edit_time": "تحرير التاريخ والوقت", "control_bottom_app_bar_edit_time": "تحرير التاريخ والوقت",
"control_bottom_app_bar_favorite": "مفضل", "control_bottom_app_bar_favorite": "مفضل",
@@ -203,6 +216,7 @@
"experimental_settings_title": "تجريبي", "experimental_settings_title": "تجريبي",
"favorites_page_no_favorites": "لم يتم العثور على الأصول المفضلة", "favorites_page_no_favorites": "لم يتم العثور على الأصول المفضلة",
"favorites_page_title": "المفضلة", "favorites_page_title": "المفضلة",
"filename_search": "File name or extension",
"haptic_feedback_switch": "تمكين ردود الفعل اللمسية", "haptic_feedback_switch": "تمكين ردود الفعل اللمسية",
"haptic_feedback_title": "ردود فعل لمسية", "haptic_feedback_title": "ردود فعل لمسية",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "بدأ التنزيل", "image_viewer_page_state_provider_download_started": "بدأ التنزيل",
"image_viewer_page_state_provider_download_success": "تم التنزيل بنجاح", "image_viewer_page_state_provider_download_success": "تم التنزيل بنجاح",
"image_viewer_page_state_provider_share_error": "خطأ في المشاركة", "image_viewer_page_state_provider_share_error": "خطأ في المشاركة",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "ألبومات", "library_page_albums": "ألبومات",
"library_page_archive": "أرشيف", "library_page_archive": "أرشيف",
"library_page_device_albums": "ألبومات على الجهاز", "library_page_device_albums": "ألبومات على الجهاز",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "لا يمكن تعديل تاريخ الأصول (المواد) للقراءة فقط، سوف يتخطى", "multiselect_grid_edit_date_time_err_read_only": "لا يمكن تعديل تاريخ الأصول (المواد) للقراءة فقط، سوف يتخطى",
"multiselect_grid_edit_gps_err_read_only": "لا يمكن تعديل موقع الأصول (المواد) للقراءة فقط، سوف يتخطى", "multiselect_grid_edit_gps_err_read_only": "لا يمكن تعديل موقع الأصول (المواد) للقراءة فقط، سوف يتخطى",
"no_assets_to_show": "لا توجد أصول لعرضها", "no_assets_to_show": "لا توجد أصول لعرضها",
"no_name": "No name",
"notification_permission_dialog_cancel": "يلغي", "notification_permission_dialog_cancel": "يلغي",
"notification_permission_dialog_content": "لتمكين الإخطارات ، انتقل إلى الإعدادات و اختار السماح.", "notification_permission_dialog_content": "لتمكين الإخطارات ، انتقل إلى الإعدادات و اختار السماح.",
"notification_permission_dialog_settings": "إعدادات", "notification_permission_dialog_settings": "إعدادات",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "حدث خطأ", "scaffold_body_error_occurred": "حدث خطأ",
"search_bar_hint": "ابحث عن صورك", "search_bar_hint": "ابحث عن صورك",
"search_filter_apply": "اختار الفلتر ", "search_filter_apply": "اختار الفلتر ",
"search_filter_camera": "Camera",
"search_filter_camera_make": "صنع", "search_filter_camera_make": "صنع",
"search_filter_camera_model": "نموذج", "search_filter_camera_model": "نموذج",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "أرشيف", "search_filter_display_option_archive": "أرشيف",
"search_filter_display_option_favorite": "مفضل", "search_filter_display_option_favorite": "مفضل",
"search_filter_display_option_not_in_album": "ليس في الألبوم", "search_filter_display_option_not_in_album": "ليس في الألبوم",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "مدينة", "search_filter_location_city": "مدينة",
"search_filter_location_country": "دولة", "search_filter_location_country": "دولة",
"search_filter_location_state": "ولاية", "search_filter_location_state": "ولاية",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "الجميع", "search_filter_media_type_all": "الجميع",
"search_filter_media_type_image": "صورة", "search_filter_media_type_image": "صورة",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "شريط فيديو", "search_filter_media_type_video": "شريط فيديو",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "فئات", "search_page_categories": "فئات",
"search_page_favorites": "المفضلة", "search_page_favorites": "المفضلة",
"search_page_motion_photos": "الصور المتحركه", "search_page_motion_photos": "الصور المتحركه",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Zrušit", "action_common_cancel": "Zrušit",
"action_common_clear": "Vyčistit", "action_common_clear": "Vyčistit",
"action_common_confirm": "Potvrdit", "action_common_confirm": "Potvrdit",
"action_common_save": "Uložit",
"action_common_select": "Vybrat",
"action_common_update": "Aktualizovat", "action_common_update": "Aktualizovat",
"add_to_album_bottom_sheet_added": "Přidáno do {album}", "add_to_album_bottom_sheet_added": "Přidáno do {album}",
"add_to_album_bottom_sheet_already_exists": "Je již v {album}", "add_to_album_bottom_sheet_already_exists": "Je již v {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Nové heslo", "change_password_form_new_password": "Nové heslo",
"change_password_form_password_mismatch": "Hesla se neshodují", "change_password_form_password_mismatch": "Hesla se neshodují",
"change_password_form_reenter_new_password": "Znovu zadejte nové heslo", "change_password_form_reenter_new_password": "Znovu zadejte nové heslo",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Zadejte heslo",
"client_cert_import": "Importovat",
"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": "Odstranit",
"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",
"common_add_to_album": "Přidat do alba", "common_add_to_album": "Přidat do alba",
"common_change_password": "Změnit heslo", "common_change_password": "Změnit heslo",
"common_create_new_album": "Vytvořit nové album", "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.", "common_server_error": "Zkontrolujte připojení k internetu. Ujistěte se, že server je dostupný a aplikace/server jsou v kompatibilní verzi.",
"common_shared": "Sdílené", "common_shared": "Sdílené",
"contextual_search": "Východ slunce na pláži",
"control_bottom_app_bar_add_to_album": "Přidat do alba", "control_bottom_app_bar_add_to_album": "Přidat do alba",
"control_bottom_app_bar_album_info": "{} položek", "control_bottom_app_bar_album_info": "{} položek",
"control_bottom_app_bar_album_info_shared": "{} položky sdílené", "control_bottom_app_bar_album_info_shared": "{} položky sdílené",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Smazat", "control_bottom_app_bar_delete": "Smazat",
"control_bottom_app_bar_delete_from_immich": "Smazat ze serveru Immich", "control_bottom_app_bar_delete_from_immich": "Smazat ze serveru Immich",
"control_bottom_app_bar_delete_from_local": "Smazat ze zařízení", "control_bottom_app_bar_delete_from_local": "Smazat ze zařízení",
"control_bottom_app_bar_edit": "Upravit",
"control_bottom_app_bar_edit_location": "Upravit polohu", "control_bottom_app_bar_edit_location": "Upravit polohu",
"control_bottom_app_bar_edit_time": "Upravit datum a čas", "control_bottom_app_bar_edit_time": "Upravit datum a čas",
"control_bottom_app_bar_favorite": "Oblíbené", "control_bottom_app_bar_favorite": "Oblíbené",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Experimentální", "experimental_settings_title": "Experimentální",
"favorites_page_no_favorites": "Nebyla nalezena žádná oblíbená média", "favorites_page_no_favorites": "Nebyla nalezena žádná oblíbená média",
"favorites_page_title": "Oblíbené", "favorites_page_title": "Oblíbené",
"filename_search": "Název nebo přípona souboru",
"haptic_feedback_switch": "Povolit dotykovou zpětnou vazbu", "haptic_feedback_switch": "Povolit dotykovou zpětnou vazbu",
"haptic_feedback_title": "Dotyková zpětná vazba", "haptic_feedback_title": "Dotyková zpětná vazba",
"header_settings_add_header_tip": "Přidat hlavičku", "header_settings_add_header_tip": "Přidat hlavičku",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Stahování zahájeno", "image_viewer_page_state_provider_download_started": "Stahování zahájeno",
"image_viewer_page_state_provider_download_success": "Stahování bylo úspěšné", "image_viewer_page_state_provider_download_success": "Stahování bylo úspěšné",
"image_viewer_page_state_provider_share_error": "Chyba sdílení", "image_viewer_page_state_provider_share_error": "Chyba sdílení",
"invalid_date": "Chybné datum",
"invalid_date_format": "Chybný formát data",
"library_page_albums": "Alba", "library_page_albums": "Alba",
"library_page_archive": "Archív", "library_page_archive": "Archív",
"library_page_device_albums": "Alba v zařízení", "library_page_device_albums": "Alba v zařízení",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Nelze upravit datum položek pouze pro čtení, přeskakuji", "multiselect_grid_edit_date_time_err_read_only": "Nelze upravit datum položek pouze pro čtení, přeskakuji",
"multiselect_grid_edit_gps_err_read_only": "Nelze upravit polohu položek pouze pro čtení, přeskakuji", "multiselect_grid_edit_gps_err_read_only": "Nelze upravit polohu položek pouze pro čtení, přeskakuji",
"no_assets_to_show": "Žádné položky k zobrazení", "no_assets_to_show": "Žádné položky k zobrazení",
"no_name": "Bez jména",
"notification_permission_dialog_cancel": "Zrušit", "notification_permission_dialog_cancel": "Zrušit",
"notification_permission_dialog_content": "Chcete-li povolit oznámení, přejděte do nastavení a vyberte možnost povolit.", "notification_permission_dialog_content": "Chcete-li povolit oznámení, přejděte do nastavení a vyberte možnost povolit.",
"notification_permission_dialog_settings": "Nastavení", "notification_permission_dialog_settings": "Nastavení",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Došlo k chybě", "scaffold_body_error_occurred": "Došlo k chybě",
"search_bar_hint": "Prohledejte své fotky", "search_bar_hint": "Prohledejte své fotky",
"search_filter_apply": "Použít filtr", "search_filter_apply": "Použít filtr",
"search_filter_camera": "Fotoaparát",
"search_filter_camera_make": "Výrobce", "search_filter_camera_make": "Výrobce",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"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_display_option_archive": "Archiv", "search_filter_display_option_archive": "Archiv",
"search_filter_display_option_favorite": "Oblíbené", "search_filter_display_option_favorite": "Oblíbené",
"search_filter_display_option_not_in_album": "Není v albu", "search_filter_display_option_not_in_album": "Není v albu",
"search_filter_display_options": "Možnost zobrazení",
"search_filter_display_options_title": "Možnosti zobrazení",
"search_filter_location": "Poloha",
"search_filter_location_city": "Město", "search_filter_location_city": "Město",
"search_filter_location_country": "Země", "search_filter_location_country": "Země",
"search_filter_location_state": "Stát", "search_filter_location_state": "Stát",
"search_filter_location_title": "Výběr polohy",
"search_filter_media_type": "Typ média",
"search_filter_media_type_all": "Všechny", "search_filter_media_type_all": "Všechny",
"search_filter_media_type_image": "Obrázek", "search_filter_media_type_image": "Obrázek",
"search_filter_media_type_title": "Výběr typu média",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "Lidé",
"search_filter_people_title": "Výběr lidí",
"search_page_categories": "Kategorie", "search_page_categories": "Kategorie",
"search_page_favorites": "Oblíbené", "search_page_favorites": "Oblíbené",
"search_page_motion_photos": "Pohyblivé fotky", "search_page_motion_photos": "Pohyblivé fotky",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Annuller", "action_common_cancel": "Annuller",
"action_common_clear": "Ryd", "action_common_clear": "Ryd",
"action_common_confirm": "Bekræft", "action_common_confirm": "Bekræft",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Opdater", "action_common_update": "Opdater",
"add_to_album_bottom_sheet_added": "Tilføjet til {album}", "add_to_album_bottom_sheet_added": "Tilføjet til {album}",
"add_to_album_bottom_sheet_already_exists": "Allerede i {album}", "add_to_album_bottom_sheet_already_exists": "Allerede i {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Nyt kodeord", "change_password_form_new_password": "Nyt kodeord",
"change_password_form_password_mismatch": "Kodeord er ikke ens", "change_password_form_password_mismatch": "Kodeord er ikke ens",
"change_password_form_reenter_new_password": "Gentag nyt kodeord", "change_password_form_reenter_new_password": "Gentag nyt kodeord",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Tilføj til album", "common_add_to_album": "Tilføj til album",
"common_change_password": "Skift kodeord", "common_change_password": "Skift kodeord",
"common_create_new_album": "Opret et nyt album", "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.", "common_server_error": "Tjek din internetforbindelse, sørg for at serveren er tilgængelig og at app- og serversioner er kompatible.",
"common_shared": "Delt", "common_shared": "Delt",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Tilføj til album", "control_bottom_app_bar_add_to_album": "Tilføj til album",
"control_bottom_app_bar_album_info": "{} genstande", "control_bottom_app_bar_album_info": "{} genstande",
"control_bottom_app_bar_album_info_shared": "{} genstande • Delt", "control_bottom_app_bar_album_info_shared": "{} genstande • Delt",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Slet", "control_bottom_app_bar_delete": "Slet",
"control_bottom_app_bar_delete_from_immich": "Slet fra Immich", "control_bottom_app_bar_delete_from_immich": "Slet fra Immich",
"control_bottom_app_bar_delete_from_local": "Slet fra enhed", "control_bottom_app_bar_delete_from_local": "Slet fra enhed",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Rediger placering", "control_bottom_app_bar_edit_location": "Rediger placering",
"control_bottom_app_bar_edit_time": "Rediger tid og dato", "control_bottom_app_bar_edit_time": "Rediger tid og dato",
"control_bottom_app_bar_favorite": "Favorit", "control_bottom_app_bar_favorite": "Favorit",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Eksperimentelle", "experimental_settings_title": "Eksperimentelle",
"favorites_page_no_favorites": "Ingen favoritter blev fundet", "favorites_page_no_favorites": "Ingen favoritter blev fundet",
"favorites_page_title": "Favoritter", "favorites_page_title": "Favoritter",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Slå haptisk feedback til", "haptic_feedback_switch": "Slå haptisk feedback til",
"haptic_feedback_title": "Haptisk feedback", "haptic_feedback_title": "Haptisk feedback",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Download startet", "image_viewer_page_state_provider_download_started": "Download startet",
"image_viewer_page_state_provider_download_success": "Download succesfuld", "image_viewer_page_state_provider_download_success": "Download succesfuld",
"image_viewer_page_state_provider_share_error": "Delingsfejl", "image_viewer_page_state_provider_share_error": "Delingsfejl",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albummer", "library_page_albums": "Albummer",
"library_page_archive": "Arkiv", "library_page_archive": "Arkiv",
"library_page_device_albums": "Albummer på enhed", "library_page_device_albums": "Albummer på enhed",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Kan ikke redigere datoen på kun læselige elementer. Springer over", "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_gps_err_read_only": "Kan ikke redigere lokation af kun læselige elementer. Springer over",
"no_assets_to_show": "Ingen elementer at vise", "no_assets_to_show": "Ingen elementer at vise",
"no_name": "No name",
"notification_permission_dialog_cancel": "Annuller", "notification_permission_dialog_cancel": "Annuller",
"notification_permission_dialog_content": "Gå til indstillinger for at slå notifikationer til.", "notification_permission_dialog_content": "Gå til indstillinger for at slå notifikationer til.",
"notification_permission_dialog_settings": "Indstillinger", "notification_permission_dialog_settings": "Indstillinger",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Der opstod en fejl", "scaffold_body_error_occurred": "Der opstod en fejl",
"search_bar_hint": "Søg i dine billeder", "search_bar_hint": "Søg i dine billeder",
"search_filter_apply": "Tilføj filter", "search_filter_apply": "Tilføj filter",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Producent", "search_filter_camera_make": "Producent",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Arkiv", "search_filter_display_option_archive": "Arkiv",
"search_filter_display_option_favorite": "Favorit", "search_filter_display_option_favorite": "Favorit",
"search_filter_display_option_not_in_album": "Ikke i album", "search_filter_display_option_not_in_album": "Ikke i album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "By", "search_filter_location_city": "By",
"search_filter_location_country": "Land", "search_filter_location_country": "Land",
"search_filter_location_state": "Stat", "search_filter_location_state": "Stat",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "Alle", "search_filter_media_type_all": "Alle",
"search_filter_media_type_image": "Billede", "search_filter_media_type_image": "Billede",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Kategorier", "search_page_categories": "Kategorier",
"search_page_favorites": "Favoritter", "search_page_favorites": "Favoritter",
"search_page_motion_photos": "Bevægelsesbilleder", "search_page_motion_photos": "Bevægelsesbilleder",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Abbrechen", "action_common_cancel": "Abbrechen",
"action_common_clear": "Leeren", "action_common_clear": "Leeren",
"action_common_confirm": "Bestätigen", "action_common_confirm": "Bestätigen",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Aktualisieren", "action_common_update": "Aktualisieren",
"add_to_album_bottom_sheet_added": "Zu {album} hinzugefügt", "add_to_album_bottom_sheet_added": "Zu {album} hinzugefügt",
"add_to_album_bottom_sheet_already_exists": "Bereits in {album}", "add_to_album_bottom_sheet_already_exists": "Bereits in {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Neues Passwort", "change_password_form_new_password": "Neues Passwort",
"change_password_form_password_mismatch": "Passwörter stimmen nicht überein", "change_password_form_password_mismatch": "Passwörter stimmen nicht überein",
"change_password_form_reenter_new_password": "Passwort erneut eingeben", "change_password_form_reenter_new_password": "Passwort erneut eingeben",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Zu Album hinzufügen", "common_add_to_album": "Zu Album hinzufügen",
"common_change_password": "Passwort ändern", "common_change_password": "Passwort ändern",
"common_create_new_album": "Neues Album erstellen", "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.", "common_server_error": "Bitte überprüfe Deine Netzwerkverbindung und stelle sicher, dass die App und Server Versionen kompatibel sind.",
"common_shared": "Geteilt", "common_shared": "Geteilt",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Zu Album hinzufügen", "control_bottom_app_bar_add_to_album": "Zu Album hinzufügen",
"control_bottom_app_bar_album_info": "{} Elemente", "control_bottom_app_bar_album_info": "{} Elemente",
"control_bottom_app_bar_album_info_shared": "{} Elemente · Geteilt", "control_bottom_app_bar_album_info_shared": "{} Elemente · Geteilt",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Löschen", "control_bottom_app_bar_delete": "Löschen",
"control_bottom_app_bar_delete_from_immich": "Aus Immich löschen", "control_bottom_app_bar_delete_from_immich": "Aus Immich löschen",
"control_bottom_app_bar_delete_from_local": "Vom Gerät löschen", "control_bottom_app_bar_delete_from_local": "Vom Gerät löschen",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Ort bearbeiten", "control_bottom_app_bar_edit_location": "Ort bearbeiten",
"control_bottom_app_bar_edit_time": "Datum und Uhrzeit bearbeiten", "control_bottom_app_bar_edit_time": "Datum und Uhrzeit bearbeiten",
"control_bottom_app_bar_favorite": "Favorit", "control_bottom_app_bar_favorite": "Favorit",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Experimentell", "experimental_settings_title": "Experimentell",
"favorites_page_no_favorites": "Keine favorisierten Inhalte gefunden", "favorites_page_no_favorites": "Keine favorisierten Inhalte gefunden",
"favorites_page_title": "Favoriten", "favorites_page_title": "Favoriten",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Haptisches Feedback aktivieren", "haptic_feedback_switch": "Haptisches Feedback aktivieren",
"haptic_feedback_title": "Haptisches Feedback", "haptic_feedback_title": "Haptisches Feedback",
"header_settings_add_header_tip": "Header hinzufügen", "header_settings_add_header_tip": "Header hinzufügen",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Download gestartet", "image_viewer_page_state_provider_download_started": "Download gestartet",
"image_viewer_page_state_provider_download_success": "Erfolgreich heruntergeladen", "image_viewer_page_state_provider_download_success": "Erfolgreich heruntergeladen",
"image_viewer_page_state_provider_share_error": "Fehler beim Teilen", "image_viewer_page_state_provider_share_error": "Fehler beim Teilen",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Alben", "library_page_albums": "Alben",
"library_page_archive": "Archiv", "library_page_archive": "Archiv",
"library_page_device_albums": "Alben auf dem Gerät", "library_page_device_albums": "Alben auf dem Gerät",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Das Datum und die Uhrzeit von schreibgeschützten Inhalten kann nicht verändert werden, überspringen...", "multiselect_grid_edit_date_time_err_read_only": "Das Datum und die Uhrzeit von schreibgeschützten Inhalten kann nicht verändert werden, überspringen...",
"multiselect_grid_edit_gps_err_read_only": "Der Aufnahmeort von schreibgeschützten Inhalten kann nicht verändert werden, überspringen...", "multiselect_grid_edit_gps_err_read_only": "Der Aufnahmeort von schreibgeschützten Inhalten kann nicht verändert werden, überspringen...",
"no_assets_to_show": "Keine Vorschau vorhanden", "no_assets_to_show": "Keine Vorschau vorhanden",
"no_name": "No name",
"notification_permission_dialog_cancel": "Abbrechen", "notification_permission_dialog_cancel": "Abbrechen",
"notification_permission_dialog_content": "Um Benachrichtigungen zu aktivieren, navigiere zu Einstellungen und klicke \"Erlauben\"", "notification_permission_dialog_content": "Um Benachrichtigungen zu aktivieren, navigiere zu Einstellungen und klicke \"Erlauben\"",
"notification_permission_dialog_settings": "Einstellungen", "notification_permission_dialog_settings": "Einstellungen",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Ein Fehler ist aufgetreten", "scaffold_body_error_occurred": "Ein Fehler ist aufgetreten",
"search_bar_hint": "Durchsuche deine Fotos", "search_bar_hint": "Durchsuche deine Fotos",
"search_filter_apply": "Filter anwenden", "search_filter_apply": "Filter anwenden",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Marke", "search_filter_camera_make": "Marke",
"search_filter_camera_model": "Modell", "search_filter_camera_model": "Modell",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archiv", "search_filter_display_option_archive": "Archiv",
"search_filter_display_option_favorite": "Favorit", "search_filter_display_option_favorite": "Favorit",
"search_filter_display_option_not_in_album": "Nicht im Album", "search_filter_display_option_not_in_album": "Nicht im Album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "Stadt", "search_filter_location_city": "Stadt",
"search_filter_location_country": "Land", "search_filter_location_country": "Land",
"search_filter_location_state": "Bundesland", "search_filter_location_state": "Bundesland",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "Alle", "search_filter_media_type_all": "Alle",
"search_filter_media_type_image": "Bild", "search_filter_media_type_image": "Bild",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Kategorien", "search_page_categories": "Kategorien",
"search_page_favorites": "Favoriten", "search_page_favorites": "Favoriten",
"search_page_motion_photos": "Live-Fotos", "search_page_motion_photos": "Live-Fotos",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Ακύρωση", "action_common_cancel": "Ακύρωση",
"action_common_clear": "Clear", "action_common_clear": "Clear",
"action_common_confirm": "Confirm", "action_common_confirm": "Confirm",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Ενημέρωση", "action_common_update": "Ενημέρωση",
"add_to_album_bottom_sheet_added": "Προστέθηκε στο {album}", "add_to_album_bottom_sheet_added": "Προστέθηκε στο {album}",
"add_to_album_bottom_sheet_already_exists": "Ήδη στο {album}", "add_to_album_bottom_sheet_already_exists": "Ήδη στο {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Νέος Κωδικός", "change_password_form_new_password": "Νέος Κωδικός",
"change_password_form_password_mismatch": "Οι κωδικοί δεν ταιριάζουν", "change_password_form_password_mismatch": "Οι κωδικοί δεν ταιριάζουν",
"change_password_form_reenter_new_password": "Επανεισαγωγή Νέου Κωδικού", "change_password_form_reenter_new_password": "Επανεισαγωγή Νέου Κωδικού",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Προσθήκη στο άλμπουμ", "common_add_to_album": "Προσθήκη στο άλμπουμ",
"common_change_password": "Αλλαγή Κωδικού", "common_change_password": "Αλλαγή Κωδικού",
"common_create_new_album": "Δημιουργία νέου άλμπουμ", "common_create_new_album": "Δημιουργία νέου άλμπουμ",
"common_server_error": "Ελέγξτε τη σύνδεσή σας, βεβαιωθείτε ότι ο διακομιστής είναι προσβάσιμος και ότι οι εκδόσεις της εφαρμογής/διακομιστή είναι συμβατές.", "common_server_error": "Ελέγξτε τη σύνδεσή σας, βεβαιωθείτε ότι ο διακομιστής είναι προσβάσιμος και ότι οι εκδόσεις της εφαρμογής/διακομιστή είναι συμβατές.",
"common_shared": "Κοινόχρηστο", "common_shared": "Κοινόχρηστο",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Προσθήκη στο άλμπουμ", "control_bottom_app_bar_add_to_album": "Προσθήκη στο άλμπουμ",
"control_bottom_app_bar_album_info": "{} αντικείμενα", "control_bottom_app_bar_album_info": "{} αντικείμενα",
"control_bottom_app_bar_album_info_shared": "{} αντικείμενα · Κοινόχρηστα", "control_bottom_app_bar_album_info_shared": "{} αντικείμενα · Κοινόχρηστα",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Διαγραφή", "control_bottom_app_bar_delete": "Διαγραφή",
"control_bottom_app_bar_delete_from_immich": "Διαγραφή από το Immich", "control_bottom_app_bar_delete_from_immich": "Διαγραφή από το Immich",
"control_bottom_app_bar_delete_from_local": "Διαγραφή από τη συσκευή", "control_bottom_app_bar_delete_from_local": "Διαγραφή από τη συσκευή",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Επεξεργασία Τοποθεσίας", "control_bottom_app_bar_edit_location": "Επεξεργασία Τοποθεσίας",
"control_bottom_app_bar_edit_time": "Επεξεργασία Ημερομηνίας & Ώρας", "control_bottom_app_bar_edit_time": "Επεξεργασία Ημερομηνίας & Ώρας",
"control_bottom_app_bar_favorite": "Προσθήκη στα αγαπημένα", "control_bottom_app_bar_favorite": "Προσθήκη στα αγαπημένα",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Πειραματικό", "experimental_settings_title": "Πειραματικό",
"favorites_page_no_favorites": "Δεν βρέθηκαν αγαπημένα στοιχεία", "favorites_page_no_favorites": "Δεν βρέθηκαν αγαπημένα στοιχεία",
"favorites_page_title": "Αγαπημένα", "favorites_page_title": "Αγαπημένα",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Enable haptic feedback", "haptic_feedback_switch": "Enable haptic feedback",
"haptic_feedback_title": "Haptic Feedback", "haptic_feedback_title": "Haptic Feedback",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Download Started", "image_viewer_page_state_provider_download_started": "Download Started",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_success": "Download Success",
"image_viewer_page_state_provider_share_error": "Share Error", "image_viewer_page_state_provider_share_error": "Share Error",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albums", "library_page_albums": "Albums",
"library_page_archive": "Archive", "library_page_archive": "Archive",
"library_page_device_albums": "Albums on Device", "library_page_device_albums": "Albums on Device",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping", "multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping",
"multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping", "multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping",
"no_assets_to_show": "No assets to show", "no_assets_to_show": "No assets to show",
"no_name": "No name",
"notification_permission_dialog_cancel": "Cancel", "notification_permission_dialog_cancel": "Cancel",
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.", "notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
"notification_permission_dialog_settings": "Settings", "notification_permission_dialog_settings": "Settings",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Error occurred", "scaffold_body_error_occurred": "Error occurred",
"search_bar_hint": "Search your photos", "search_bar_hint": "Search your photos",
"search_filter_apply": "Apply filter", "search_filter_apply": "Apply filter",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Make", "search_filter_camera_make": "Make",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archive", "search_filter_display_option_archive": "Archive",
"search_filter_display_option_favorite": "Favorite", "search_filter_display_option_favorite": "Favorite",
"search_filter_display_option_not_in_album": "Not in album", "search_filter_display_option_not_in_album": "Not in album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "City", "search_filter_location_city": "City",
"search_filter_location_country": "Country", "search_filter_location_country": "Country",
"search_filter_location_state": "State", "search_filter_location_state": "State",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "All", "search_filter_media_type_all": "All",
"search_filter_media_type_image": "Image", "search_filter_media_type_image": "Image",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Categories", "search_page_categories": "Categories",
"search_page_favorites": "Favorites", "search_page_favorites": "Favorites",
"search_page_motion_photos": "Motion Photos", "search_page_motion_photos": "Motion Photos",

View File

@@ -143,6 +143,15 @@
"change_password_form_new_password": "New Password", "change_password_form_new_password": "New Password",
"change_password_form_password_mismatch": "Passwords do not match", "change_password_form_password_mismatch": "Passwords do not match",
"change_password_form_reenter_new_password": "Re-enter New Password", "change_password_form_reenter_new_password": "Re-enter New Password",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Add to album", "common_add_to_album": "Add to album",
"common_change_password": "Change Password", "common_change_password": "Change Password",
"common_create_new_album": "Create new album", "common_create_new_album": "Create new album",
@@ -157,6 +166,7 @@
"control_bottom_app_bar_delete": "Delete", "control_bottom_app_bar_delete": "Delete",
"control_bottom_app_bar_delete_from_immich": "Delete from Immich", "control_bottom_app_bar_delete_from_immich": "Delete from Immich",
"control_bottom_app_bar_delete_from_local": "Delete from device", "control_bottom_app_bar_delete_from_local": "Delete from device",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Edit Location", "control_bottom_app_bar_edit_location": "Edit Location",
"control_bottom_app_bar_edit_time": "Edit Date & Time", "control_bottom_app_bar_edit_time": "Edit Date & Time",
"control_bottom_app_bar_favorite": "Favorite", "control_bottom_app_bar_favorite": "Favorite",
@@ -438,18 +448,15 @@
"setting_notifications_total_progress_subtitle": "Overall upload progress (done/total assets)", "setting_notifications_total_progress_subtitle": "Overall upload progress (done/total assets)",
"setting_notifications_total_progress_title": "Show background backup total progress", "setting_notifications_total_progress_title": "Show background backup total progress",
"setting_pages_app_bar_settings": "Settings", "setting_pages_app_bar_settings": "Settings",
"settings_require_restart": "Please restart Immich to apply this setting",
"setting_video_viewer_looping_subtitle": "Enable to automatically loop a video in the detail viewer.", "setting_video_viewer_looping_subtitle": "Enable to automatically loop a video in the detail viewer.",
"setting_video_viewer_looping_title": "Looping", "setting_video_viewer_looping_title": "Looping",
"setting_video_viewer_title": "Videos", "setting_video_viewer_title": "Videos",
"settings_require_restart": "Please restart Immich to apply this setting",
"share_add": "Add", "share_add": "Add",
"share_add_photos": "Add photos", "share_add_photos": "Add photos",
"share_add_title": "Add a title", "share_add_title": "Add a title",
"share_assets_selected": "{} selected", "share_assets_selected": "{} selected",
"share_create_album": "Create album", "share_create_album": "Create album",
"share_dialog_preparing": "Preparing...",
"share_done": "Done",
"share_invite": "Invite to album",
"shared_album_activities_input_disable": "Comment is disabled", "shared_album_activities_input_disable": "Comment is disabled",
"shared_album_activities_input_hint": "Say something", "shared_album_activities_input_hint": "Say something",
"shared_album_activity_remove_content": "Do you want to delete this activity?", "shared_album_activity_remove_content": "Do you want to delete this activity?",
@@ -461,6 +468,7 @@
"shared_album_section_people_action_remove_user": "Remove user from album", "shared_album_section_people_action_remove_user": "Remove user from album",
"shared_album_section_people_owner_label": "Owner", "shared_album_section_people_owner_label": "Owner",
"shared_album_section_people_title": "PEOPLE", "shared_album_section_people_title": "PEOPLE",
"share_dialog_preparing": "Preparing...",
"shared_link_app_bar_title": "Shared Links", "shared_link_app_bar_title": "Shared Links",
"shared_link_clipboard_copied_massage": "Copied to clipboard", "shared_link_clipboard_copied_massage": "Copied to clipboard",
"shared_link_clipboard_text": "Link: {}\nPassword: {}", "shared_link_clipboard_text": "Link: {}\nPassword: {}",
@@ -506,12 +514,14 @@
"shared_link_info_chip_upload": "Upload", "shared_link_info_chip_upload": "Upload",
"shared_link_manage_links": "Manage Shared links", "shared_link_manage_links": "Manage Shared links",
"shared_link_public_album": "Public album", "shared_link_public_album": "Public album",
"share_done": "Done",
"share_invite": "Invite to album",
"sharing_page_album": "Shared albums", "sharing_page_album": "Shared albums",
"sharing_page_description": "Create shared albums to share photos and videos with people in your network.", "sharing_page_description": "Create shared albums to share photos and videos with people in your network.",
"sharing_page_empty_list": "EMPTY LIST", "sharing_page_empty_list": "EMPTY LIST",
"sharing_silver_appbar_create_shared_album": "New shared album", "sharing_silver_appbar_create_shared_album": "New shared album",
"sharing_silver_appbar_share_partner": "Share with partner",
"sharing_silver_appbar_shared_links": "Shared links", "sharing_silver_appbar_shared_links": "Shared links",
"sharing_silver_appbar_share_partner": "Share with partner",
"tab_controller_nav_library": "Library", "tab_controller_nav_library": "Library",
"tab_controller_nav_photos": "Photos", "tab_controller_nav_photos": "Photos",
"tab_controller_nav_search": "Search", "tab_controller_nav_search": "Search",
@@ -521,6 +531,11 @@
"theme_setting_dark_mode_switch": "Dark mode", "theme_setting_dark_mode_switch": "Dark mode",
"theme_setting_image_viewer_quality_subtitle": "Adjust the quality of the detail image viewer", "theme_setting_image_viewer_quality_subtitle": "Adjust the quality of the detail image viewer",
"theme_setting_image_viewer_quality_title": "Image viewer quality", "theme_setting_image_viewer_quality_title": "Image viewer quality",
"theme_setting_primary_color_title": "Primary color",
"theme_setting_primary_color_subtitle": "Pick a color for primary actions and accents.",
"theme_setting_colorful_interface_title": "Colorful interface",
"theme_setting_colorful_interface_subtitle": "Apply primary color to background surfaces.",
"theme_setting_system_primary_color_title": "Use system color",
"theme_setting_system_theme_switch": "Automatic (Follow system setting)", "theme_setting_system_theme_switch": "Automatic (Follow system setting)",
"theme_setting_theme_subtitle": "Choose the app's theme setting", "theme_setting_theme_subtitle": "Choose the app's theme setting",
"theme_setting_theme_title": "Theme", "theme_setting_theme_title": "Theme",
@@ -551,19 +566,5 @@
"version_announcement_overlay_title": "New Server Version Available \uD83C\uDF89", "version_announcement_overlay_title": "New Server Version Available \uD83C\uDF89",
"viewer_remove_from_stack": "Remove from Stack", "viewer_remove_from_stack": "Remove from Stack",
"viewer_stack_use_as_main_asset": "Use as Main Asset", "viewer_stack_use_as_main_asset": "Use as Main Asset",
"viewer_unstack": "Un-Stack", "viewer_unstack": "Un-Stack"
"header_settings_header_name_input": "Header name",
"header_settings_header_value_input": "Header value",
"header_settings_page_title": "Proxy Headers",
"header_settings_add_header_tip": "Add Header",
"header_settings_field_validator_msg": "Value cannot be empty",
"client_cert_title": "SSL Client Certificate",
"client_cert_subtitle": "Supports PKCS12 (.p12, .pfx) format only. Certificate Import/Remove is available only before login",
"client_cert_import": "Import",
"client_cert_remove": "Remove",
"client_cert_remove_msg": "Client certificate is removed",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password"
} }

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Cancelar", "action_common_cancel": "Cancelar",
"action_common_clear": "Limpiar", "action_common_clear": "Limpiar",
"action_common_confirm": "Confirmar", "action_common_confirm": "Confirmar",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Actualizar", "action_common_update": "Actualizar",
"add_to_album_bottom_sheet_added": "Agregado a {album}", "add_to_album_bottom_sheet_added": "Agregado a {album}",
"add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}", "add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Nueva Contraseña", "change_password_form_new_password": "Nueva Contraseña",
"change_password_form_password_mismatch": "Las contraseñas no coinciden", "change_password_form_password_mismatch": "Las contraseñas no coinciden",
"change_password_form_reenter_new_password": "Vuelve a ingresar la nueva contraseña", "change_password_form_reenter_new_password": "Vuelve a ingresar la nueva contraseña",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Agregar al álbum", "common_add_to_album": "Agregar al álbum",
"common_change_password": "Cambiar Contraseña", "common_change_password": "Cambiar Contraseña",
"common_create_new_album": "Crear nuevo álbum", "common_create_new_album": "Crear nuevo álbum",
"common_server_error": "Por favor, verifica tu conexión de red, asegúrate de que el servidor esté accesible y las versiones de la aplicación y del servidor sean compatibles.", "common_server_error": "Por favor, verifica tu conexión de red, asegúrate de que el servidor esté accesible y las versiones de la aplicación y del servidor sean compatibles.",
"common_shared": "Compartido", "common_shared": "Compartido",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Agregar al álbum", "control_bottom_app_bar_add_to_album": "Agregar al álbum",
"control_bottom_app_bar_album_info": "{} elementos", "control_bottom_app_bar_album_info": "{} elementos",
"control_bottom_app_bar_album_info_shared": "{} elementos · Compartidos", "control_bottom_app_bar_album_info_shared": "{} elementos · Compartidos",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Eliminar", "control_bottom_app_bar_delete": "Eliminar",
"control_bottom_app_bar_delete_from_immich": "Borrar de Immich", "control_bottom_app_bar_delete_from_immich": "Borrar de Immich",
"control_bottom_app_bar_delete_from_local": "Borrar del dispositivo", "control_bottom_app_bar_delete_from_local": "Borrar del dispositivo",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Editar ubicación", "control_bottom_app_bar_edit_location": "Editar ubicación",
"control_bottom_app_bar_edit_time": "Editar fecha y hora", "control_bottom_app_bar_edit_time": "Editar fecha y hora",
"control_bottom_app_bar_favorite": "Favorito", "control_bottom_app_bar_favorite": "Favorito",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Experimental", "experimental_settings_title": "Experimental",
"favorites_page_no_favorites": "No se encontraron elementos marcados como favoritos", "favorites_page_no_favorites": "No se encontraron elementos marcados como favoritos",
"favorites_page_title": "Favoritos", "favorites_page_title": "Favoritos",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Activar respuesta háptica", "haptic_feedback_switch": "Activar respuesta háptica",
"haptic_feedback_title": "Respuesta Háptica", "haptic_feedback_title": "Respuesta Háptica",
"header_settings_add_header_tip": "Añadir cabecera", "header_settings_add_header_tip": "Añadir cabecera",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Descarga Iniciada", "image_viewer_page_state_provider_download_started": "Descarga Iniciada",
"image_viewer_page_state_provider_download_success": "Descarga exitosa", "image_viewer_page_state_provider_download_success": "Descarga exitosa",
"image_viewer_page_state_provider_share_error": "Error al compartir", "image_viewer_page_state_provider_share_error": "Error al compartir",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Álbumes", "library_page_albums": "Álbumes",
"library_page_archive": "Archivo", "library_page_archive": "Archivo",
"library_page_device_albums": "Álbumes en el dispositivo", "library_page_device_albums": "Álbumes en el dispositivo",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "No se puede cambiar la fecha del archivo(s) de solo lectura, omitiendo", "multiselect_grid_edit_date_time_err_read_only": "No se puede cambiar la fecha del archivo(s) de solo lectura, omitiendo",
"multiselect_grid_edit_gps_err_read_only": "No se puede cambiar la localización de archivos de solo lectura. Saltando.", "multiselect_grid_edit_gps_err_read_only": "No se puede cambiar la localización de archivos de solo lectura. Saltando.",
"no_assets_to_show": "No hay elementos a mostrar", "no_assets_to_show": "No hay elementos a mostrar",
"no_name": "No name",
"notification_permission_dialog_cancel": "Cancelar", "notification_permission_dialog_cancel": "Cancelar",
"notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.", "notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.",
"notification_permission_dialog_settings": "Ajustes", "notification_permission_dialog_settings": "Ajustes",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Ha ocurrido un error", "scaffold_body_error_occurred": "Ha ocurrido un error",
"search_bar_hint": "Busca tus fotos", "search_bar_hint": "Busca tus fotos",
"search_filter_apply": "Aplicar filtros", "search_filter_apply": "Aplicar filtros",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Marca", "search_filter_camera_make": "Marca",
"search_filter_camera_model": "Modelo", "search_filter_camera_model": "Modelo",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archivado", "search_filter_display_option_archive": "Archivado",
"search_filter_display_option_favorite": "Favorito", "search_filter_display_option_favorite": "Favorito",
"search_filter_display_option_not_in_album": "No en álbum", "search_filter_display_option_not_in_album": "No en álbum",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "Ciudad", "search_filter_location_city": "Ciudad",
"search_filter_location_country": "País", "search_filter_location_country": "País",
"search_filter_location_state": "Estado", "search_filter_location_state": "Estado",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "Todos", "search_filter_media_type_all": "Todos",
"search_filter_media_type_image": "Imagen", "search_filter_media_type_image": "Imagen",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Vídeo", "search_filter_media_type_video": "Vídeo",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Categorías", "search_page_categories": "Categorías",
"search_page_favorites": "Favoritos", "search_page_favorites": "Favoritos",
"search_page_motion_photos": "Foto en Movimiento", "search_page_motion_photos": "Foto en Movimiento",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Cancel", "action_common_cancel": "Cancel",
"action_common_clear": "Clear", "action_common_clear": "Clear",
"action_common_confirm": "Confirm", "action_common_confirm": "Confirm",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Update", "action_common_update": "Update",
"add_to_album_bottom_sheet_added": "Agregado a {album}", "add_to_album_bottom_sheet_added": "Agregado a {album}",
"add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}", "add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Nueva Contraseña", "change_password_form_new_password": "Nueva Contraseña",
"change_password_form_password_mismatch": "Las contraseñas no coinciden", "change_password_form_password_mismatch": "Las contraseñas no coinciden",
"change_password_form_reenter_new_password": "Vuelve a ingresar la nueva contraseña", "change_password_form_reenter_new_password": "Vuelve a ingresar la nueva contraseña",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Agregar al álbum", "common_add_to_album": "Agregar al álbum",
"common_change_password": "Cambiar Contraseña", "common_change_password": "Cambiar Contraseña",
"common_create_new_album": "Crear nuevo álbum", "common_create_new_album": "Crear nuevo álbum",
"common_server_error": "Por favor, verifica tu conexión de red, asegúrate de que el servidor esté accesible y las versiones de la aplicación y del servidor sean compatibles.", "common_server_error": "Por favor, verifica tu conexión de red, asegúrate de que el servidor esté accesible y las versiones de la aplicación y del servidor sean compatibles.",
"common_shared": "Compartido", "common_shared": "Compartido",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Agregar al álbum", "control_bottom_app_bar_add_to_album": "Agregar al álbum",
"control_bottom_app_bar_album_info": "{} elementos", "control_bottom_app_bar_album_info": "{} elementos",
"control_bottom_app_bar_album_info_shared": "{} elementos · Compartidos", "control_bottom_app_bar_album_info_shared": "{} elementos · Compartidos",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Eliminar", "control_bottom_app_bar_delete": "Eliminar",
"control_bottom_app_bar_delete_from_immich": "Delete from Immich", "control_bottom_app_bar_delete_from_immich": "Delete from Immich",
"control_bottom_app_bar_delete_from_local": "Delete from device", "control_bottom_app_bar_delete_from_local": "Delete from device",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Edit Location", "control_bottom_app_bar_edit_location": "Edit Location",
"control_bottom_app_bar_edit_time": "Edit Date & Time", "control_bottom_app_bar_edit_time": "Edit Date & Time",
"control_bottom_app_bar_favorite": "Favorito", "control_bottom_app_bar_favorite": "Favorito",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Experimental", "experimental_settings_title": "Experimental",
"favorites_page_no_favorites": "No se encontraron recursos marcados como favoritos", "favorites_page_no_favorites": "No se encontraron recursos marcados como favoritos",
"favorites_page_title": "Favoritos", "favorites_page_title": "Favoritos",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Enable haptic feedback", "haptic_feedback_switch": "Enable haptic feedback",
"haptic_feedback_title": "Haptic Feedback", "haptic_feedback_title": "Haptic Feedback",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Download Started", "image_viewer_page_state_provider_download_started": "Download Started",
"image_viewer_page_state_provider_download_success": "Descarga exitosa", "image_viewer_page_state_provider_download_success": "Descarga exitosa",
"image_viewer_page_state_provider_share_error": "Error al compartir", "image_viewer_page_state_provider_share_error": "Error al compartir",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Álbumes", "library_page_albums": "Álbumes",
"library_page_archive": "Archivo", "library_page_archive": "Archivo",
"library_page_device_albums": "Álbumes en el dispositivo", "library_page_device_albums": "Álbumes en el dispositivo",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping", "multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping",
"multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping", "multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping",
"no_assets_to_show": "No assets to show", "no_assets_to_show": "No assets to show",
"no_name": "No name",
"notification_permission_dialog_cancel": "Cancelar", "notification_permission_dialog_cancel": "Cancelar",
"notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.", "notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.",
"notification_permission_dialog_settings": "Ajustes", "notification_permission_dialog_settings": "Ajustes",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Error occurred", "scaffold_body_error_occurred": "Error occurred",
"search_bar_hint": "Busca tus fotos", "search_bar_hint": "Busca tus fotos",
"search_filter_apply": "Apply filter", "search_filter_apply": "Apply filter",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Make", "search_filter_camera_make": "Make",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archive", "search_filter_display_option_archive": "Archive",
"search_filter_display_option_favorite": "Favorite", "search_filter_display_option_favorite": "Favorite",
"search_filter_display_option_not_in_album": "Not in album", "search_filter_display_option_not_in_album": "Not in album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "City", "search_filter_location_city": "City",
"search_filter_location_country": "Country", "search_filter_location_country": "Country",
"search_filter_location_state": "State", "search_filter_location_state": "State",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "All", "search_filter_media_type_all": "All",
"search_filter_media_type_image": "Image", "search_filter_media_type_image": "Image",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Categorías", "search_page_categories": "Categorías",
"search_page_favorites": "Favoritos", "search_page_favorites": "Favoritos",
"search_page_motion_photos": "Foto en Movimiento", "search_page_motion_photos": "Foto en Movimiento",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Cancel", "action_common_cancel": "Cancel",
"action_common_clear": "Clear", "action_common_clear": "Clear",
"action_common_confirm": "Confirm", "action_common_confirm": "Confirm",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Update", "action_common_update": "Update",
"add_to_album_bottom_sheet_added": "Agregado a {album}", "add_to_album_bottom_sheet_added": "Agregado a {album}",
"add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}", "add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Nueva Contraseña", "change_password_form_new_password": "Nueva Contraseña",
"change_password_form_password_mismatch": "Las contraseñas no coinciden", "change_password_form_password_mismatch": "Las contraseñas no coinciden",
"change_password_form_reenter_new_password": "Vuelve a ingresar la nueva contraseña", "change_password_form_reenter_new_password": "Vuelve a ingresar la nueva contraseña",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Agregar al álbum", "common_add_to_album": "Agregar al álbum",
"common_change_password": "Cambiar Contraseña", "common_change_password": "Cambiar Contraseña",
"common_create_new_album": "Crear nuevo álbum", "common_create_new_album": "Crear nuevo álbum",
"common_server_error": "Por favor, verifica tu conexión de red, asegúrate de que el servidor esté accesible y las versiones de la aplicación y del servidor sean compatibles.", "common_server_error": "Por favor, verifica tu conexión de red, asegúrate de que el servidor esté accesible y las versiones de la aplicación y del servidor sean compatibles.",
"common_shared": "Compartido", "common_shared": "Compartido",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Agregar al álbum", "control_bottom_app_bar_add_to_album": "Agregar al álbum",
"control_bottom_app_bar_album_info": "{} elementos", "control_bottom_app_bar_album_info": "{} elementos",
"control_bottom_app_bar_album_info_shared": "{} elementos · Compartidos", "control_bottom_app_bar_album_info_shared": "{} elementos · Compartidos",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Eliminar", "control_bottom_app_bar_delete": "Eliminar",
"control_bottom_app_bar_delete_from_immich": "Delete from Immich", "control_bottom_app_bar_delete_from_immich": "Delete from Immich",
"control_bottom_app_bar_delete_from_local": "Delete from device", "control_bottom_app_bar_delete_from_local": "Delete from device",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Edit Location", "control_bottom_app_bar_edit_location": "Edit Location",
"control_bottom_app_bar_edit_time": "Edit Date & Time", "control_bottom_app_bar_edit_time": "Edit Date & Time",
"control_bottom_app_bar_favorite": "Favorito", "control_bottom_app_bar_favorite": "Favorito",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Experimental", "experimental_settings_title": "Experimental",
"favorites_page_no_favorites": "No se encontraron recursos marcados como favoritos", "favorites_page_no_favorites": "No se encontraron recursos marcados como favoritos",
"favorites_page_title": "Favoritos", "favorites_page_title": "Favoritos",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Enable haptic feedback", "haptic_feedback_switch": "Enable haptic feedback",
"haptic_feedback_title": "Haptic Feedback", "haptic_feedback_title": "Haptic Feedback",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Download Started", "image_viewer_page_state_provider_download_started": "Download Started",
"image_viewer_page_state_provider_download_success": "Descarga exitosa", "image_viewer_page_state_provider_download_success": "Descarga exitosa",
"image_viewer_page_state_provider_share_error": "Error al compartir", "image_viewer_page_state_provider_share_error": "Error al compartir",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Álbumes", "library_page_albums": "Álbumes",
"library_page_archive": "Archivo", "library_page_archive": "Archivo",
"library_page_device_albums": "Álbumes en el dispositivo", "library_page_device_albums": "Álbumes en el dispositivo",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping", "multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping",
"multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping", "multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping",
"no_assets_to_show": "No assets to show", "no_assets_to_show": "No assets to show",
"no_name": "No name",
"notification_permission_dialog_cancel": "Cancelar", "notification_permission_dialog_cancel": "Cancelar",
"notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.", "notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.",
"notification_permission_dialog_settings": "Ajustes", "notification_permission_dialog_settings": "Ajustes",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Error occurred", "scaffold_body_error_occurred": "Error occurred",
"search_bar_hint": "Busca tus fotos", "search_bar_hint": "Busca tus fotos",
"search_filter_apply": "Apply filter", "search_filter_apply": "Apply filter",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Make", "search_filter_camera_make": "Make",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archive", "search_filter_display_option_archive": "Archive",
"search_filter_display_option_favorite": "Favorite", "search_filter_display_option_favorite": "Favorite",
"search_filter_display_option_not_in_album": "Not in album", "search_filter_display_option_not_in_album": "Not in album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "City", "search_filter_location_city": "City",
"search_filter_location_country": "Country", "search_filter_location_country": "Country",
"search_filter_location_state": "State", "search_filter_location_state": "State",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "All", "search_filter_media_type_all": "All",
"search_filter_media_type_image": "Image", "search_filter_media_type_image": "Image",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Categorías", "search_page_categories": "Categorías",
"search_page_favorites": "Favoritos", "search_page_favorites": "Favoritos",
"search_page_motion_photos": "Foto en Movimiento", "search_page_motion_photos": "Foto en Movimiento",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Cancel", "action_common_cancel": "Cancel",
"action_common_clear": "Clear", "action_common_clear": "Clear",
"action_common_confirm": "Confirm", "action_common_confirm": "Confirm",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Update", "action_common_update": "Update",
"add_to_album_bottom_sheet_added": "Agregado a {album}", "add_to_album_bottom_sheet_added": "Agregado a {album}",
"add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}", "add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Nueva Contraseña", "change_password_form_new_password": "Nueva Contraseña",
"change_password_form_password_mismatch": "Las contraseñas no coinciden", "change_password_form_password_mismatch": "Las contraseñas no coinciden",
"change_password_form_reenter_new_password": "Vuelve a ingresar la nueva contraseña", "change_password_form_reenter_new_password": "Vuelve a ingresar la nueva contraseña",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Agregar al álbum", "common_add_to_album": "Agregar al álbum",
"common_change_password": "Cambiar Contraseña", "common_change_password": "Cambiar Contraseña",
"common_create_new_album": "Crear nuevo álbum", "common_create_new_album": "Crear nuevo álbum",
"common_server_error": "Por favor, verifica tu conexión de red, asegúrate de que el servidor esté accesible y las versiones de la aplicación y del servidor sean compatibles.", "common_server_error": "Por favor, verifica tu conexión de red, asegúrate de que el servidor esté accesible y las versiones de la aplicación y del servidor sean compatibles.",
"common_shared": "Compartido", "common_shared": "Compartido",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Agregar al álbum", "control_bottom_app_bar_add_to_album": "Agregar al álbum",
"control_bottom_app_bar_album_info": "{} elementos", "control_bottom_app_bar_album_info": "{} elementos",
"control_bottom_app_bar_album_info_shared": "{} elementos · Compartido", "control_bottom_app_bar_album_info_shared": "{} elementos · Compartido",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Eliminar", "control_bottom_app_bar_delete": "Eliminar",
"control_bottom_app_bar_delete_from_immich": "Delete from Immich", "control_bottom_app_bar_delete_from_immich": "Delete from Immich",
"control_bottom_app_bar_delete_from_local": "Delete from device", "control_bottom_app_bar_delete_from_local": "Delete from device",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Edit Location", "control_bottom_app_bar_edit_location": "Edit Location",
"control_bottom_app_bar_edit_time": "Edit Date & Time", "control_bottom_app_bar_edit_time": "Edit Date & Time",
"control_bottom_app_bar_favorite": "Favorito", "control_bottom_app_bar_favorite": "Favorito",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Experimental", "experimental_settings_title": "Experimental",
"favorites_page_no_favorites": "No se encontraron recursos marcados como favoritos", "favorites_page_no_favorites": "No se encontraron recursos marcados como favoritos",
"favorites_page_title": "Favoritos", "favorites_page_title": "Favoritos",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Enable haptic feedback", "haptic_feedback_switch": "Enable haptic feedback",
"haptic_feedback_title": "Haptic Feedback", "haptic_feedback_title": "Haptic Feedback",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Download Started", "image_viewer_page_state_provider_download_started": "Download Started",
"image_viewer_page_state_provider_download_success": "Descarga exitosa", "image_viewer_page_state_provider_download_success": "Descarga exitosa",
"image_viewer_page_state_provider_share_error": "Error al compartir", "image_viewer_page_state_provider_share_error": "Error al compartir",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Álbumes", "library_page_albums": "Álbumes",
"library_page_archive": "Archivo", "library_page_archive": "Archivo",
"library_page_device_albums": "Álbumes en el dispositivo", "library_page_device_albums": "Álbumes en el dispositivo",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping", "multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping",
"multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping", "multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping",
"no_assets_to_show": "No assets to show", "no_assets_to_show": "No assets to show",
"no_name": "No name",
"notification_permission_dialog_cancel": "Cancelar", "notification_permission_dialog_cancel": "Cancelar",
"notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.", "notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.",
"notification_permission_dialog_settings": "Configuración", "notification_permission_dialog_settings": "Configuración",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Error occurred", "scaffold_body_error_occurred": "Error occurred",
"search_bar_hint": "Busca tus fotos", "search_bar_hint": "Busca tus fotos",
"search_filter_apply": "Apply filter", "search_filter_apply": "Apply filter",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Make", "search_filter_camera_make": "Make",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archive", "search_filter_display_option_archive": "Archive",
"search_filter_display_option_favorite": "Favorite", "search_filter_display_option_favorite": "Favorite",
"search_filter_display_option_not_in_album": "Not in album", "search_filter_display_option_not_in_album": "Not in album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "City", "search_filter_location_city": "City",
"search_filter_location_country": "Country", "search_filter_location_country": "Country",
"search_filter_location_state": "State", "search_filter_location_state": "State",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "All", "search_filter_media_type_all": "All",
"search_filter_media_type_image": "Image", "search_filter_media_type_image": "Image",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Categorías", "search_page_categories": "Categorías",
"search_page_favorites": "Favoritos", "search_page_favorites": "Favoritos",
"search_page_motion_photos": "Fotos en .ovimiento", "search_page_motion_photos": "Fotos en .ovimiento",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Peruuta", "action_common_cancel": "Peruuta",
"action_common_clear": "Tyhjennä", "action_common_clear": "Tyhjennä",
"action_common_confirm": "Vahvista", "action_common_confirm": "Vahvista",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Päivitä", "action_common_update": "Päivitä",
"add_to_album_bottom_sheet_added": "Lisätty albumiin {album}", "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_already_exists": "Kohde on jo albumissa {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Uusi salasana", "change_password_form_new_password": "Uusi salasana",
"change_password_form_password_mismatch": "Salasanat eivät täsmää", "change_password_form_password_mismatch": "Salasanat eivät täsmää",
"change_password_form_reenter_new_password": "Uusi salasana uudelleen", "change_password_form_reenter_new_password": "Uusi salasana uudelleen",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Lisää albumiin", "common_add_to_album": "Lisää albumiin",
"common_change_password": "Vaihda salasana", "common_change_password": "Vaihda salasana",
"common_create_new_album": "Luo uusi albumi", "common_create_new_album": "Luo uusi albumi",
"common_server_error": "Tarkista internet-yhteytesi. Varmista että palvelin on saavutettavissa ja sovellus-/palvelinversiot ovat yhteensopivia.", "common_server_error": "Tarkista internet-yhteytesi. Varmista että palvelin on saavutettavissa ja sovellus-/palvelinversiot ovat yhteensopivia.",
"common_shared": "Jaettu", "common_shared": "Jaettu",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Lisää albumiin", "control_bottom_app_bar_add_to_album": "Lisää albumiin",
"control_bottom_app_bar_album_info": "{} kohdetta", "control_bottom_app_bar_album_info": "{} kohdetta",
"control_bottom_app_bar_album_info_shared": "{} kohdetta · Jaettu", "control_bottom_app_bar_album_info_shared": "{} kohdetta · Jaettu",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Poista", "control_bottom_app_bar_delete": "Poista",
"control_bottom_app_bar_delete_from_immich": "Poista Immichistä", "control_bottom_app_bar_delete_from_immich": "Poista Immichistä",
"control_bottom_app_bar_delete_from_local": "Poista laitteelta", "control_bottom_app_bar_delete_from_local": "Poista laitteelta",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Muokkaa sijaintia", "control_bottom_app_bar_edit_location": "Muokkaa sijaintia",
"control_bottom_app_bar_edit_time": "Muokkaa aikaa", "control_bottom_app_bar_edit_time": "Muokkaa aikaa",
"control_bottom_app_bar_favorite": "Suosikki", "control_bottom_app_bar_favorite": "Suosikki",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Kokeellinen", "experimental_settings_title": "Kokeellinen",
"favorites_page_no_favorites": "Suosikkikohteita ei löytynyt", "favorites_page_no_favorites": "Suosikkikohteita ei löytynyt",
"favorites_page_title": "Suosikit", "favorites_page_title": "Suosikit",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Ota haptinen palaute käyttöön", "haptic_feedback_switch": "Ota haptinen palaute käyttöön",
"haptic_feedback_title": "Haptinen palaute", "haptic_feedback_title": "Haptinen palaute",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Lataaminen aloitettu", "image_viewer_page_state_provider_download_started": "Lataaminen aloitettu",
"image_viewer_page_state_provider_download_success": "Lataus onnistui", "image_viewer_page_state_provider_download_success": "Lataus onnistui",
"image_viewer_page_state_provider_share_error": "Jakovirhe", "image_viewer_page_state_provider_share_error": "Jakovirhe",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albumit", "library_page_albums": "Albumit",
"library_page_archive": "Arkisto", "library_page_archive": "Arkisto",
"library_page_device_albums": "Laitteen albumit", "library_page_device_albums": "Laitteen albumit",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Vain luku -tilassa olevien kohteiden päivämäärää ei voitu muokata, ohitetaan", "multiselect_grid_edit_date_time_err_read_only": "Vain luku -tilassa olevien kohteiden päivämäärää ei voitu muokata, ohitetaan",
"multiselect_grid_edit_gps_err_read_only": "Vain luku-tilassa olevien kohteiden sijantitietoja ei voitu muokata, ohitetaan", "multiselect_grid_edit_gps_err_read_only": "Vain luku-tilassa olevien kohteiden sijantitietoja ei voitu muokata, ohitetaan",
"no_assets_to_show": "Ei näytettäviä kohteita", "no_assets_to_show": "Ei näytettäviä kohteita",
"no_name": "No name",
"notification_permission_dialog_cancel": "Peruuta", "notification_permission_dialog_cancel": "Peruuta",
"notification_permission_dialog_content": "Ottaaksesi ilmoitukset käyttöön, siirry asetuksiin ja valitse 'salli'.", "notification_permission_dialog_content": "Ottaaksesi ilmoitukset käyttöön, siirry asetuksiin ja valitse 'salli'.",
"notification_permission_dialog_settings": "Asetukset", "notification_permission_dialog_settings": "Asetukset",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Tapahtui virhe", "scaffold_body_error_occurred": "Tapahtui virhe",
"search_bar_hint": "Etsi kuvia", "search_bar_hint": "Etsi kuvia",
"search_filter_apply": "Käytä", "search_filter_apply": "Käytä",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Valmistaja", "search_filter_camera_make": "Valmistaja",
"search_filter_camera_model": "Malli", "search_filter_camera_model": "Malli",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Arkisto", "search_filter_display_option_archive": "Arkisto",
"search_filter_display_option_favorite": "Suosikki", "search_filter_display_option_favorite": "Suosikki",
"search_filter_display_option_not_in_album": "Ei kuulu albumiin", "search_filter_display_option_not_in_album": "Ei kuulu albumiin",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "Kaupunki", "search_filter_location_city": "Kaupunki",
"search_filter_location_country": "Maa", "search_filter_location_country": "Maa",
"search_filter_location_state": "Maakunta/osavaltio", "search_filter_location_state": "Maakunta/osavaltio",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "Kaikki", "search_filter_media_type_all": "Kaikki",
"search_filter_media_type_image": "Kuva", "search_filter_media_type_image": "Kuva",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Kategoriat", "search_page_categories": "Kategoriat",
"search_page_favorites": "Suosikit", "search_page_favorites": "Suosikit",
"search_page_motion_photos": "Liikekuvat", "search_page_motion_photos": "Liikekuvat",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Cancel", "action_common_cancel": "Cancel",
"action_common_clear": "Clear", "action_common_clear": "Clear",
"action_common_confirm": "Confirm", "action_common_confirm": "Confirm",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Update", "action_common_update": "Update",
"add_to_album_bottom_sheet_added": "Ajouté à {album}", "add_to_album_bottom_sheet_added": "Ajouté à {album}",
"add_to_album_bottom_sheet_already_exists": "Déjà dans {album}", "add_to_album_bottom_sheet_already_exists": "Déjà dans {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Nouveau mot de passe", "change_password_form_new_password": "Nouveau mot de passe",
"change_password_form_password_mismatch": "Les mots de passe ne correspondent pas", "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", "change_password_form_reenter_new_password": "Saisissez à nouveau le nouveau mot de passe",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Ajouter à l'album", "common_add_to_album": "Ajouter à l'album",
"common_change_password": "Modifier le mot de passe", "common_change_password": "Modifier le mot de passe",
"common_create_new_album": "Créer un nouvel album", "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.", "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.",
"common_shared": "Partagé", "common_shared": "Partagé",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Ajouter à l'album", "control_bottom_app_bar_add_to_album": "Ajouter à l'album",
"control_bottom_app_bar_album_info": "{} éléments", "control_bottom_app_bar_album_info": "{} éléments",
"control_bottom_app_bar_album_info_shared": "{} éléments - Partagés", "control_bottom_app_bar_album_info_shared": "{} éléments - Partagés",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Supprimer", "control_bottom_app_bar_delete": "Supprimer",
"control_bottom_app_bar_delete_from_immich": "Delete from Immich", "control_bottom_app_bar_delete_from_immich": "Delete from Immich",
"control_bottom_app_bar_delete_from_local": "Delete from device", "control_bottom_app_bar_delete_from_local": "Delete from device",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Edit Location", "control_bottom_app_bar_edit_location": "Edit Location",
"control_bottom_app_bar_edit_time": "Edit Date & Time", "control_bottom_app_bar_edit_time": "Edit Date & Time",
"control_bottom_app_bar_favorite": "Favoris", "control_bottom_app_bar_favorite": "Favoris",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Expérimental", "experimental_settings_title": "Expérimental",
"favorites_page_no_favorites": "Aucun élément favori n'a été trouvé", "favorites_page_no_favorites": "Aucun élément favori n'a été trouvé",
"favorites_page_title": "Favoris", "favorites_page_title": "Favoris",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Enable haptic feedback", "haptic_feedback_switch": "Enable haptic feedback",
"haptic_feedback_title": "Haptic Feedback", "haptic_feedback_title": "Haptic Feedback",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Download Started", "image_viewer_page_state_provider_download_started": "Download Started",
"image_viewer_page_state_provider_download_success": "Téléchargement réussi", "image_viewer_page_state_provider_download_success": "Téléchargement réussi",
"image_viewer_page_state_provider_share_error": "Erreur de partage", "image_viewer_page_state_provider_share_error": "Erreur de partage",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albums", "library_page_albums": "Albums",
"library_page_archive": "Archive", "library_page_archive": "Archive",
"library_page_device_albums": "Albums sur l'appareil", "library_page_device_albums": "Albums sur l'appareil",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping", "multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping",
"multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping", "multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping",
"no_assets_to_show": "No assets to show", "no_assets_to_show": "No assets to show",
"no_name": "No name",
"notification_permission_dialog_cancel": "Annuler", "notification_permission_dialog_cancel": "Annuler",
"notification_permission_dialog_content": "Pour activer les notifications, allez dans Paramètres et sélectionnez Autoriser.", "notification_permission_dialog_content": "Pour activer les notifications, allez dans Paramètres et sélectionnez Autoriser.",
"notification_permission_dialog_settings": "Paramètres", "notification_permission_dialog_settings": "Paramètres",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Error occurred", "scaffold_body_error_occurred": "Error occurred",
"search_bar_hint": "Rechercher vos photos", "search_bar_hint": "Rechercher vos photos",
"search_filter_apply": "Apply filter", "search_filter_apply": "Apply filter",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Make", "search_filter_camera_make": "Make",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archive", "search_filter_display_option_archive": "Archive",
"search_filter_display_option_favorite": "Favorite", "search_filter_display_option_favorite": "Favorite",
"search_filter_display_option_not_in_album": "Not in album", "search_filter_display_option_not_in_album": "Not in album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "City", "search_filter_location_city": "City",
"search_filter_location_country": "Country", "search_filter_location_country": "Country",
"search_filter_location_state": "State", "search_filter_location_state": "State",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "All", "search_filter_media_type_all": "All",
"search_filter_media_type_image": "Image", "search_filter_media_type_image": "Image",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Catégories", "search_page_categories": "Catégories",
"search_page_favorites": "Favoris", "search_page_favorites": "Favoris",
"search_page_motion_photos": "Photos avec mouvement", "search_page_motion_photos": "Photos avec mouvement",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Annuler", "action_common_cancel": "Annuler",
"action_common_clear": "Vider", "action_common_clear": "Vider",
"action_common_confirm": "Confirmer", "action_common_confirm": "Confirmer",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Mise à jour", "action_common_update": "Mise à jour",
"add_to_album_bottom_sheet_added": "Ajouté à {album}", "add_to_album_bottom_sheet_added": "Ajouté à {album}",
"add_to_album_bottom_sheet_already_exists": "Déjà dans {album}", "add_to_album_bottom_sheet_already_exists": "Déjà dans {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Nouveau mot de passe", "change_password_form_new_password": "Nouveau mot de passe",
"change_password_form_password_mismatch": "Les mots de passe ne correspondent pas", "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", "change_password_form_reenter_new_password": "Saisissez à nouveau le nouveau mot de passe",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Ajouter à l'album", "common_add_to_album": "Ajouter à l'album",
"common_change_password": "Modifier le mot de passe", "common_change_password": "Modifier le mot de passe",
"common_create_new_album": "Créer un nouvel album", "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.", "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.",
"common_shared": "Partagé", "common_shared": "Partagé",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Ajouter à l'album", "control_bottom_app_bar_add_to_album": "Ajouter à l'album",
"control_bottom_app_bar_album_info": "{} éléments", "control_bottom_app_bar_album_info": "{} éléments",
"control_bottom_app_bar_album_info_shared": "{} éléments - Partagés", "control_bottom_app_bar_album_info_shared": "{} éléments - Partagés",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Supprimer", "control_bottom_app_bar_delete": "Supprimer",
"control_bottom_app_bar_delete_from_immich": "Supprimer de Immich", "control_bottom_app_bar_delete_from_immich": "Supprimer de Immich",
"control_bottom_app_bar_delete_from_local": "Supprimer de l'appareil", "control_bottom_app_bar_delete_from_local": "Supprimer de l'appareil",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Modifier la localisation", "control_bottom_app_bar_edit_location": "Modifier la localisation",
"control_bottom_app_bar_edit_time": "Modifier la date et l'heure", "control_bottom_app_bar_edit_time": "Modifier la date et l'heure",
"control_bottom_app_bar_favorite": "Favoris", "control_bottom_app_bar_favorite": "Favoris",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Expérimental", "experimental_settings_title": "Expérimental",
"favorites_page_no_favorites": "Aucun élément favori n'a été trouvé", "favorites_page_no_favorites": "Aucun élément favori n'a été trouvé",
"favorites_page_title": "Favoris", "favorites_page_title": "Favoris",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Activer le retour haptique", "haptic_feedback_switch": "Activer le retour haptique",
"haptic_feedback_title": "Retour haptique", "haptic_feedback_title": "Retour haptique",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Téléchargement Démarré", "image_viewer_page_state_provider_download_started": "Téléchargement Démarré",
"image_viewer_page_state_provider_download_success": "Téléchargement réussi", "image_viewer_page_state_provider_download_success": "Téléchargement réussi",
"image_viewer_page_state_provider_share_error": "Erreur de partage", "image_viewer_page_state_provider_share_error": "Erreur de partage",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albums", "library_page_albums": "Albums",
"library_page_archive": "Archive", "library_page_archive": "Archive",
"library_page_device_albums": "Albums sur l'appareil", "library_page_device_albums": "Albums sur l'appareil",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Impossible de modifier la date d'un élément d'actif en lecture seule.", "multiselect_grid_edit_date_time_err_read_only": "Impossible de modifier la date d'un élément d'actif en lecture seule.",
"multiselect_grid_edit_gps_err_read_only": "Impossible de modifier l'emplacement d'un élément en lecture seule.", "multiselect_grid_edit_gps_err_read_only": "Impossible de modifier l'emplacement d'un élément en lecture seule.",
"no_assets_to_show": "Aucuns éléments à afficher", "no_assets_to_show": "Aucuns éléments à afficher",
"no_name": "No name",
"notification_permission_dialog_cancel": "Annuler", "notification_permission_dialog_cancel": "Annuler",
"notification_permission_dialog_content": "Pour activer les notifications, allez dans Paramètres et sélectionnez Autoriser.", "notification_permission_dialog_content": "Pour activer les notifications, allez dans Paramètres et sélectionnez Autoriser.",
"notification_permission_dialog_settings": "Paramètres", "notification_permission_dialog_settings": "Paramètres",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Une erreur s'est produite", "scaffold_body_error_occurred": "Une erreur s'est produite",
"search_bar_hint": "Rechercher vos photos", "search_bar_hint": "Rechercher vos photos",
"search_filter_apply": "Appliquer le filtre", "search_filter_apply": "Appliquer le filtre",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Fabricant", "search_filter_camera_make": "Fabricant",
"search_filter_camera_model": "Modéle", "search_filter_camera_model": "Modéle",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Achive", "search_filter_display_option_archive": "Achive",
"search_filter_display_option_favorite": "Favoris", "search_filter_display_option_favorite": "Favoris",
"search_filter_display_option_not_in_album": "Pas dans un album", "search_filter_display_option_not_in_album": "Pas dans un album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "Ville", "search_filter_location_city": "Ville",
"search_filter_location_country": "Pays", "search_filter_location_country": "Pays",
"search_filter_location_state": "Région", "search_filter_location_state": "Région",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "Tous", "search_filter_media_type_all": "Tous",
"search_filter_media_type_image": "Image", "search_filter_media_type_image": "Image",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Vidéo", "search_filter_media_type_video": "Vidéo",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Catégories", "search_page_categories": "Catégories",
"search_page_favorites": "Favoris", "search_page_favorites": "Favoris",
"search_page_motion_photos": "Photos animées", "search_page_motion_photos": "Photos animées",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "ביטול", "action_common_cancel": "ביטול",
"action_common_clear": "נקה", "action_common_clear": "נקה",
"action_common_confirm": "אישור", "action_common_confirm": "אישור",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "עדכון", "action_common_update": "עדכון",
"add_to_album_bottom_sheet_added": "נוסף ל {album}", "add_to_album_bottom_sheet_added": "נוסף ל {album}",
"add_to_album_bottom_sheet_already_exists": "כבר ב {album}", "add_to_album_bottom_sheet_already_exists": "כבר ב {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "סיסמה חדשה", "change_password_form_new_password": "סיסמה חדשה",
"change_password_form_password_mismatch": "סיסמאות לא תואמות", "change_password_form_password_mismatch": "סיסמאות לא תואמות",
"change_password_form_reenter_new_password": "הכנס שוב סיסמה חדשה", "change_password_form_reenter_new_password": "הכנס שוב סיסמה חדשה",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "הוסף לאלבום", "common_add_to_album": "הוסף לאלבום",
"common_change_password": "שנה סיסמה", "common_change_password": "שנה סיסמה",
"common_create_new_album": "צור אלבום חדש", "common_create_new_album": "צור אלבום חדש",
"common_server_error": "נא לבדוק את חיבור הרשת שלך, תוודא/י שהשרת נגיש ושגרסאות אפליקציה/שרת תואמות", "common_server_error": "נא לבדוק את חיבור הרשת שלך, תוודא/י שהשרת נגיש ושגרסאות אפליקציה/שרת תואמות",
"common_shared": "משותף", "common_shared": "משותף",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "הוסף לאלבום", "control_bottom_app_bar_add_to_album": "הוסף לאלבום",
"control_bottom_app_bar_album_info": "{} פריטים", "control_bottom_app_bar_album_info": "{} פריטים",
"control_bottom_app_bar_album_info_shared": "{} פריטים · משותפים", "control_bottom_app_bar_album_info_shared": "{} פריטים · משותפים",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "מחק", "control_bottom_app_bar_delete": "מחק",
"control_bottom_app_bar_delete_from_immich": "מחק מהשרת", "control_bottom_app_bar_delete_from_immich": "מחק מהשרת",
"control_bottom_app_bar_delete_from_local": "מחק מהמכשיר", "control_bottom_app_bar_delete_from_local": "מחק מהמכשיר",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "ערוך מיקום", "control_bottom_app_bar_edit_location": "ערוך מיקום",
"control_bottom_app_bar_edit_time": "ערוך תאריך & זמן", "control_bottom_app_bar_edit_time": "ערוך תאריך & זמן",
"control_bottom_app_bar_favorite": "הוסף למועדפים", "control_bottom_app_bar_favorite": "הוסף למועדפים",
@@ -203,6 +216,7 @@
"experimental_settings_title": "נסיוני", "experimental_settings_title": "נסיוני",
"favorites_page_no_favorites": "לא נמצאו נכסים מועדפים", "favorites_page_no_favorites": "לא נמצאו נכסים מועדפים",
"favorites_page_title": "מועדפים", "favorites_page_title": "מועדפים",
"filename_search": "File name or extension",
"haptic_feedback_switch": "אפשר משוב ברטט", "haptic_feedback_switch": "אפשר משוב ברטט",
"haptic_feedback_title": "משוב ברטט", "haptic_feedback_title": "משוב ברטט",
"header_settings_add_header_tip": "הוסף כותרת", "header_settings_add_header_tip": "הוסף כותרת",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "ההורדה החלה", "image_viewer_page_state_provider_download_started": "ההורדה החלה",
"image_viewer_page_state_provider_download_success": "הצלחת הורדה", "image_viewer_page_state_provider_download_success": "הצלחת הורדה",
"image_viewer_page_state_provider_share_error": "שיתוף שגיאה", "image_viewer_page_state_provider_share_error": "שיתוף שגיאה",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "אלבומים", "library_page_albums": "אלבומים",
"library_page_archive": "ארכיון", "library_page_archive": "ארכיון",
"library_page_device_albums": "אלבומים במכשיר", "library_page_device_albums": "אלבומים במכשיר",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "לא ניתן לערוך תאריך של נכס(ים) לקריאה בלבד, מדלג", "multiselect_grid_edit_date_time_err_read_only": "לא ניתן לערוך תאריך של נכס(ים) לקריאה בלבד, מדלג",
"multiselect_grid_edit_gps_err_read_only": "לא ניתן לערוך מיקום של נכס(ים) לקריאה בלבד, מדלג", "multiselect_grid_edit_gps_err_read_only": "לא ניתן לערוך מיקום של נכס(ים) לקריאה בלבד, מדלג",
"no_assets_to_show": "אין נכסים להציג", "no_assets_to_show": "אין נכסים להציג",
"no_name": "No name",
"notification_permission_dialog_cancel": "ביטול", "notification_permission_dialog_cancel": "ביטול",
"notification_permission_dialog_content": "כדי לאפשר התראות, לך להגדרות ובחר התר", "notification_permission_dialog_content": "כדי לאפשר התראות, לך להגדרות ובחר התר",
"notification_permission_dialog_settings": "הגדרות", "notification_permission_dialog_settings": "הגדרות",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "אירעה שגיאה", "scaffold_body_error_occurred": "אירעה שגיאה",
"search_bar_hint": "חפש/י בתמונות שלך", "search_bar_hint": "חפש/י בתמונות שלך",
"search_filter_apply": "החל סינון", "search_filter_apply": "החל סינון",
"search_filter_camera": "Camera",
"search_filter_camera_make": "תוצרת", "search_filter_camera_make": "תוצרת",
"search_filter_camera_model": "דגם", "search_filter_camera_model": "דגם",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "ארכיון", "search_filter_display_option_archive": "ארכיון",
"search_filter_display_option_favorite": "מועדף", "search_filter_display_option_favorite": "מועדף",
"search_filter_display_option_not_in_album": "לא באלבום", "search_filter_display_option_not_in_album": "לא באלבום",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "עיר", "search_filter_location_city": "עיר",
"search_filter_location_country": "ארץ", "search_filter_location_country": "ארץ",
"search_filter_location_state": "מדינה", "search_filter_location_state": "מדינה",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "הכל", "search_filter_media_type_all": "הכל",
"search_filter_media_type_image": "תמונה", "search_filter_media_type_image": "תמונה",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "סרטון", "search_filter_media_type_video": "סרטון",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "קטגוריות", "search_page_categories": "קטגוריות",
"search_page_favorites": "מועדפים", "search_page_favorites": "מועדפים",
"search_page_motion_photos": "תמונות עם תנועה", "search_page_motion_photos": "תמונות עם תנועה",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Cancel", "action_common_cancel": "Cancel",
"action_common_clear": "Clear", "action_common_clear": "Clear",
"action_common_confirm": "Confirm", "action_common_confirm": "Confirm",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Update", "action_common_update": "Update",
"add_to_album_bottom_sheet_added": "Added to {album}", "add_to_album_bottom_sheet_added": "Added to {album}",
"add_to_album_bottom_sheet_already_exists": "Already in {album}", "add_to_album_bottom_sheet_already_exists": "Already in {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "New Password", "change_password_form_new_password": "New Password",
"change_password_form_password_mismatch": "Passwords do not match", "change_password_form_password_mismatch": "Passwords do not match",
"change_password_form_reenter_new_password": "Re-enter New Password", "change_password_form_reenter_new_password": "Re-enter New Password",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Add to album", "common_add_to_album": "Add to album",
"common_change_password": "Change Password", "common_change_password": "Change Password",
"common_create_new_album": "Create new album", "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.", "common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.",
"common_shared": "Shared", "common_shared": "Shared",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Add to album", "control_bottom_app_bar_add_to_album": "Add to album",
"control_bottom_app_bar_album_info": "{} items", "control_bottom_app_bar_album_info": "{} items",
"control_bottom_app_bar_album_info_shared": "{} items · Shared", "control_bottom_app_bar_album_info_shared": "{} items · Shared",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Delete", "control_bottom_app_bar_delete": "Delete",
"control_bottom_app_bar_delete_from_immich": "Delete from Immich", "control_bottom_app_bar_delete_from_immich": "Delete from Immich",
"control_bottom_app_bar_delete_from_local": "Delete from device", "control_bottom_app_bar_delete_from_local": "Delete from device",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Edit Location", "control_bottom_app_bar_edit_location": "Edit Location",
"control_bottom_app_bar_edit_time": "Edit Date & Time", "control_bottom_app_bar_edit_time": "Edit Date & Time",
"control_bottom_app_bar_favorite": "Favorite", "control_bottom_app_bar_favorite": "Favorite",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Experimental", "experimental_settings_title": "Experimental",
"favorites_page_no_favorites": "No favorite assets found", "favorites_page_no_favorites": "No favorite assets found",
"favorites_page_title": "Favorites", "favorites_page_title": "Favorites",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Enable haptic feedback", "haptic_feedback_switch": "Enable haptic feedback",
"haptic_feedback_title": "Haptic Feedback", "haptic_feedback_title": "Haptic Feedback",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Download Started", "image_viewer_page_state_provider_download_started": "Download Started",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_success": "Download Success",
"image_viewer_page_state_provider_share_error": "Share Error", "image_viewer_page_state_provider_share_error": "Share Error",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albums", "library_page_albums": "Albums",
"library_page_archive": "Archive", "library_page_archive": "Archive",
"library_page_device_albums": "Albums on Device", "library_page_device_albums": "Albums on Device",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping", "multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping",
"multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping", "multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping",
"no_assets_to_show": "No assets to show", "no_assets_to_show": "No assets to show",
"no_name": "No name",
"notification_permission_dialog_cancel": "Cancel", "notification_permission_dialog_cancel": "Cancel",
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.", "notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
"notification_permission_dialog_settings": "Settings", "notification_permission_dialog_settings": "Settings",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Error occurred", "scaffold_body_error_occurred": "Error occurred",
"search_bar_hint": "Search your photos", "search_bar_hint": "Search your photos",
"search_filter_apply": "Apply filter", "search_filter_apply": "Apply filter",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Make", "search_filter_camera_make": "Make",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archive", "search_filter_display_option_archive": "Archive",
"search_filter_display_option_favorite": "Favorite", "search_filter_display_option_favorite": "Favorite",
"search_filter_display_option_not_in_album": "Not in album", "search_filter_display_option_not_in_album": "Not in album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "City", "search_filter_location_city": "City",
"search_filter_location_country": "Country", "search_filter_location_country": "Country",
"search_filter_location_state": "State", "search_filter_location_state": "State",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "All", "search_filter_media_type_all": "All",
"search_filter_media_type_image": "Image", "search_filter_media_type_image": "Image",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Categories", "search_page_categories": "Categories",
"search_page_favorites": "Favorites", "search_page_favorites": "Favorites",
"search_page_motion_photos": "Motion Photos", "search_page_motion_photos": "Motion Photos",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Mégsem", "action_common_cancel": "Mégsem",
"action_common_clear": "Kitöröl", "action_common_clear": "Kitöröl",
"action_common_confirm": "Jóváhagy", "action_common_confirm": "Jóváhagy",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Frissít", "action_common_update": "Frissít",
"add_to_album_bottom_sheet_added": "Hozzáadva a(z) \"{album}\" albumhoz", "add_to_album_bottom_sheet_added": "Hozzáadva a(z) \"{album}\" albumhoz",
"add_to_album_bottom_sheet_already_exists": "Már benne van a(z) \"{album}\" albumban", "add_to_album_bottom_sheet_already_exists": "Már benne van a(z) \"{album}\" albumban",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Új Jelszó", "change_password_form_new_password": "Új Jelszó",
"change_password_form_password_mismatch": "A beírt jelszavak nem egyeznek", "change_password_form_password_mismatch": "A beírt jelszavak nem egyeznek",
"change_password_form_reenter_new_password": "Jelszó (még egyszer)", "change_password_form_reenter_new_password": "Jelszó (még egyszer)",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Albumhoz ad", "common_add_to_album": "Albumhoz ad",
"common_change_password": "Jelszócsere", "common_change_password": "Jelszócsere",
"common_create_new_album": "Új album létrehozása", "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.", "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.",
"common_shared": "Megosztva", "common_shared": "Megosztva",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Albumhoz ad", "control_bottom_app_bar_add_to_album": "Albumhoz ad",
"control_bottom_app_bar_album_info": "{} elem", "control_bottom_app_bar_album_info": "{} elem",
"control_bottom_app_bar_album_info_shared": "{} elemek · Megosztva", "control_bottom_app_bar_album_info_shared": "{} elemek · Megosztva",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Törlés", "control_bottom_app_bar_delete": "Törlés",
"control_bottom_app_bar_delete_from_immich": "Törlés az Immich-ből", "control_bottom_app_bar_delete_from_immich": "Törlés az Immich-ből",
"control_bottom_app_bar_delete_from_local": "Törlés az eszközről", "control_bottom_app_bar_delete_from_local": "Törlés az eszközről",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Hely Módosítása", "control_bottom_app_bar_edit_location": "Hely Módosítása",
"control_bottom_app_bar_edit_time": "Dátum és Idő Módosítása", "control_bottom_app_bar_edit_time": "Dátum és Idő Módosítása",
"control_bottom_app_bar_favorite": "Kedvenc", "control_bottom_app_bar_favorite": "Kedvenc",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Kísérleti", "experimental_settings_title": "Kísérleti",
"favorites_page_no_favorites": "Nem található kedvencnek jelölt elem", "favorites_page_no_favorites": "Nem található kedvencnek jelölt elem",
"favorites_page_title": "Kedvencek", "favorites_page_title": "Kedvencek",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Rezgéses visszajelzés engedélyezése", "haptic_feedback_switch": "Rezgéses visszajelzés engedélyezése",
"haptic_feedback_title": "Rezgéses Visszajelzés", "haptic_feedback_title": "Rezgéses Visszajelzés",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Letöltés Megkezdődött", "image_viewer_page_state_provider_download_started": "Letöltés Megkezdődött",
"image_viewer_page_state_provider_download_success": "Letöltés Sikeres", "image_viewer_page_state_provider_download_success": "Letöltés Sikeres",
"image_viewer_page_state_provider_share_error": "Megosztási Hiba", "image_viewer_page_state_provider_share_error": "Megosztási Hiba",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albumok", "library_page_albums": "Albumok",
"library_page_archive": "Archívum", "library_page_archive": "Archívum",
"library_page_device_albums": "Albumok az Eszközön", "library_page_device_albums": "Albumok az Eszközön",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Csak-olvasható elem(ek) dátuma nem módosítható, ezért kihagyjuk", "multiselect_grid_edit_date_time_err_read_only": "Csak-olvasható elem(ek) dátuma nem módosítható, ezért kihagyjuk",
"multiselect_grid_edit_gps_err_read_only": "Csak-olvasható elem(ek) helyszíne nem módosítható, ezért kihagyjuk", "multiselect_grid_edit_gps_err_read_only": "Csak-olvasható elem(ek) helyszíne nem módosítható, ezért kihagyjuk",
"no_assets_to_show": "Nincs megjeleníthető elem", "no_assets_to_show": "Nincs megjeleníthető elem",
"no_name": "No name",
"notification_permission_dialog_cancel": "Mégsem", "notification_permission_dialog_cancel": "Mégsem",
"notification_permission_dialog_content": "Az értesítések bekapcsolásához a Beállítások menüben válaszd ki az Engedélyezés-t.", "notification_permission_dialog_content": "Az értesítések bekapcsolásához a Beállítások menüben válaszd ki az Engedélyezés-t.",
"notification_permission_dialog_settings": "Beállítások", "notification_permission_dialog_settings": "Beállítások",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Hiba történt", "scaffold_body_error_occurred": "Hiba történt",
"search_bar_hint": "Fotók keresése", "search_bar_hint": "Fotók keresése",
"search_filter_apply": "Szűrő alkalmazása", "search_filter_apply": "Szűrő alkalmazása",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Gyártó", "search_filter_camera_make": "Gyártó",
"search_filter_camera_model": "Modell", "search_filter_camera_model": "Modell",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archivált", "search_filter_display_option_archive": "Archivált",
"search_filter_display_option_favorite": "Kedvenc", "search_filter_display_option_favorite": "Kedvenc",
"search_filter_display_option_not_in_album": "Nincs albumban", "search_filter_display_option_not_in_album": "Nincs albumban",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "Város", "search_filter_location_city": "Város",
"search_filter_location_country": "Ország", "search_filter_location_country": "Ország",
"search_filter_location_state": "Állam", "search_filter_location_state": "Állam",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "Összes", "search_filter_media_type_all": "Összes",
"search_filter_media_type_image": "Kép", "search_filter_media_type_image": "Kép",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Videó", "search_filter_media_type_video": "Videó",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Kategóriák", "search_page_categories": "Kategóriák",
"search_page_favorites": "Kedvencek", "search_page_favorites": "Kedvencek",
"search_page_motion_photos": "Mozgó Fotók", "search_page_motion_photos": "Mozgó Fotók",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Annulla", "action_common_cancel": "Annulla",
"action_common_clear": "Pulisci", "action_common_clear": "Pulisci",
"action_common_confirm": "Conferma", "action_common_confirm": "Conferma",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Aggiorna", "action_common_update": "Aggiorna",
"add_to_album_bottom_sheet_added": "Aggiunto in {album}", "add_to_album_bottom_sheet_added": "Aggiunto in {album}",
"add_to_album_bottom_sheet_already_exists": "Già presente in {album}", "add_to_album_bottom_sheet_already_exists": "Già presente in {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Nuova Password", "change_password_form_new_password": "Nuova Password",
"change_password_form_password_mismatch": "Le password non coincidono", "change_password_form_password_mismatch": "Le password non coincidono",
"change_password_form_reenter_new_password": "Inserisci ancora la nuova password ", "change_password_form_reenter_new_password": "Inserisci ancora la nuova password ",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Aggiungi all'album", "common_add_to_album": "Aggiungi all'album",
"common_change_password": "Cambia Password", "common_change_password": "Cambia Password",
"common_create_new_album": "Crea nuovo Album", "common_create_new_album": "Crea nuovo Album",
"common_server_error": "Si prega di controllare la connessione network, che il server sia raggiungibile e che le versione del server e app sono gli stessi", "common_server_error": "Si prega di controllare la connessione network, che il server sia raggiungibile e che le versione del server e app sono gli stessi",
"common_shared": "Condivisi", "common_shared": "Condivisi",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Aggiungi all'album", "control_bottom_app_bar_add_to_album": "Aggiungi all'album",
"control_bottom_app_bar_album_info": "{} elementi", "control_bottom_app_bar_album_info": "{} elementi",
"control_bottom_app_bar_album_info_shared": "{} elementi · Condivisi", "control_bottom_app_bar_album_info_shared": "{} elementi · Condivisi",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Elimina", "control_bottom_app_bar_delete": "Elimina",
"control_bottom_app_bar_delete_from_immich": "Elimina da Immich", "control_bottom_app_bar_delete_from_immich": "Elimina da Immich",
"control_bottom_app_bar_delete_from_local": "Elimina dal dispositivo", "control_bottom_app_bar_delete_from_local": "Elimina dal dispositivo",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Modifica posizione", "control_bottom_app_bar_edit_location": "Modifica posizione",
"control_bottom_app_bar_edit_time": "Modifica data e ora", "control_bottom_app_bar_edit_time": "Modifica data e ora",
"control_bottom_app_bar_favorite": "Preferito", "control_bottom_app_bar_favorite": "Preferito",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Sperimentale", "experimental_settings_title": "Sperimentale",
"favorites_page_no_favorites": "Nessun preferito", "favorites_page_no_favorites": "Nessun preferito",
"favorites_page_title": "Preferiti", "favorites_page_title": "Preferiti",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Abilita feedback aptico", "haptic_feedback_switch": "Abilita feedback aptico",
"haptic_feedback_title": "Feedback aptico", "haptic_feedback_title": "Feedback aptico",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Download Started", "image_viewer_page_state_provider_download_started": "Download Started",
"image_viewer_page_state_provider_download_success": "Download con successo", "image_viewer_page_state_provider_download_success": "Download con successo",
"image_viewer_page_state_provider_share_error": "Errore di condivisione", "image_viewer_page_state_provider_share_error": "Errore di condivisione",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Album", "library_page_albums": "Album",
"library_page_archive": "Archivia", "library_page_archive": "Archivia",
"library_page_device_albums": "Album sul dispositivo", "library_page_device_albums": "Album sul dispositivo",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Non puoi modificare la data di risorse in sola lettura, azione ignorata", "multiselect_grid_edit_date_time_err_read_only": "Non puoi modificare la data di risorse in sola lettura, azione ignorata",
"multiselect_grid_edit_gps_err_read_only": "Non puoi modificare la posizione di risorse in sola lettura, azione ignorata", "multiselect_grid_edit_gps_err_read_only": "Non puoi modificare la posizione di risorse in sola lettura, azione ignorata",
"no_assets_to_show": "Nessuna risorsa da mostrare", "no_assets_to_show": "Nessuna risorsa da mostrare",
"no_name": "No name",
"notification_permission_dialog_cancel": "Annulla", "notification_permission_dialog_cancel": "Annulla",
"notification_permission_dialog_content": "Per attivare le notifiche, vai alle Impostazioni e seleziona concedi", "notification_permission_dialog_content": "Per attivare le notifiche, vai alle Impostazioni e seleziona concedi",
"notification_permission_dialog_settings": "Impostazioni", "notification_permission_dialog_settings": "Impostazioni",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Si è verificato un errore.", "scaffold_body_error_occurred": "Si è verificato un errore.",
"search_bar_hint": "Cerca le tue foto", "search_bar_hint": "Cerca le tue foto",
"search_filter_apply": "Applica filtro", "search_filter_apply": "Applica filtro",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Produttore", "search_filter_camera_make": "Produttore",
"search_filter_camera_model": "Modello", "search_filter_camera_model": "Modello",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archivia", "search_filter_display_option_archive": "Archivia",
"search_filter_display_option_favorite": "Preferito", "search_filter_display_option_favorite": "Preferito",
"search_filter_display_option_not_in_album": "Non nell'album", "search_filter_display_option_not_in_album": "Non nell'album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "Città", "search_filter_location_city": "Città",
"search_filter_location_country": "Nazione", "search_filter_location_country": "Nazione",
"search_filter_location_state": "Provincia", "search_filter_location_state": "Provincia",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "Tutto", "search_filter_media_type_all": "Tutto",
"search_filter_media_type_image": "Immagine", "search_filter_media_type_image": "Immagine",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "VIdeo", "search_filter_media_type_video": "VIdeo",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Categoria", "search_page_categories": "Categoria",
"search_page_favorites": "Preferiti", "search_page_favorites": "Preferiti",
"search_page_motion_photos": "Foto in movimento", "search_page_motion_photos": "Foto in movimento",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "キャンセル", "action_common_cancel": "キャンセル",
"action_common_clear": "クリア", "action_common_clear": "クリア",
"action_common_confirm": "了解", "action_common_confirm": "了解",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "更新", "action_common_update": "更新",
"add_to_album_bottom_sheet_added": "{album}に追加", "add_to_album_bottom_sheet_added": "{album}に追加",
"add_to_album_bottom_sheet_already_exists": "{album}に追加済み", "add_to_album_bottom_sheet_already_exists": "{album}に追加済み",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "新しいパスワード", "change_password_form_new_password": "新しいパスワード",
"change_password_form_password_mismatch": "パスワードが一致しません", "change_password_form_password_mismatch": "パスワードが一致しません",
"change_password_form_reenter_new_password": "再度パスワードを入力してください", "change_password_form_reenter_new_password": "再度パスワードを入力してください",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "アルバムに追加", "common_add_to_album": "アルバムに追加",
"common_change_password": "パスワードを変更", "common_change_password": "パスワードを変更",
"common_create_new_album": "アルバムを作成", "common_create_new_album": "アルバムを作成",
"common_server_error": "ネットワーク接続を確認し、サーバーが接続できる状態にあるか確認してください。アプリとサーバーのバージョンが一致しているかも確認してください。", "common_server_error": "ネットワーク接続を確認し、サーバーが接続できる状態にあるか確認してください。アプリとサーバーのバージョンが一致しているかも確認してください。",
"common_shared": "共有済み", "common_shared": "共有済み",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "アルバムに追加", "control_bottom_app_bar_add_to_album": "アルバムに追加",
"control_bottom_app_bar_album_info": "{}枚", "control_bottom_app_bar_album_info": "{}枚",
"control_bottom_app_bar_album_info_shared": "{}枚 · 共有済", "control_bottom_app_bar_album_info_shared": "{}枚 · 共有済",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "削除", "control_bottom_app_bar_delete": "削除",
"control_bottom_app_bar_delete_from_immich": "Immichから削除", "control_bottom_app_bar_delete_from_immich": "Immichから削除",
"control_bottom_app_bar_delete_from_local": "デバイスから削除", "control_bottom_app_bar_delete_from_local": "デバイスから削除",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "位置情報を編集", "control_bottom_app_bar_edit_location": "位置情報を編集",
"control_bottom_app_bar_edit_time": "日時を変更", "control_bottom_app_bar_edit_time": "日時を変更",
"control_bottom_app_bar_favorite": "お気に入り", "control_bottom_app_bar_favorite": "お気に入り",
@@ -203,6 +216,7 @@
"experimental_settings_title": "試験的機能", "experimental_settings_title": "試験的機能",
"favorites_page_no_favorites": "お気に入り登録された写真またはビデオがありません", "favorites_page_no_favorites": "お気に入り登録された写真またはビデオがありません",
"favorites_page_title": "お気に入り", "favorites_page_title": "お気に入り",
"filename_search": "File name or extension",
"haptic_feedback_switch": "ハプティックフィードバック", "haptic_feedback_switch": "ハプティックフィードバック",
"haptic_feedback_title": "ハプティックフィードバックを有効にする", "haptic_feedback_title": "ハプティックフィードバックを有効にする",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "ダウンロードが始まります", "image_viewer_page_state_provider_download_started": "ダウンロードが始まります",
"image_viewer_page_state_provider_download_success": "ダウンロード成功", "image_viewer_page_state_provider_download_success": "ダウンロード成功",
"image_viewer_page_state_provider_share_error": "共有エラー", "image_viewer_page_state_provider_share_error": "共有エラー",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "アルバム", "library_page_albums": "アルバム",
"library_page_archive": "アーカイブ", "library_page_archive": "アーカイブ",
"library_page_device_albums": "デバイス上のアルバム", "library_page_device_albums": "デバイス上のアルバム",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "読み取り専用の項目の日付を変更できません", "multiselect_grid_edit_date_time_err_read_only": "読み取り専用の項目の日付を変更できません",
"multiselect_grid_edit_gps_err_read_only": "読み取り専用の項目の位置情報を変更できません", "multiselect_grid_edit_gps_err_read_only": "読み取り専用の項目の位置情報を変更できません",
"no_assets_to_show": "表示する項目がありません", "no_assets_to_show": "表示する項目がありません",
"no_name": "No name",
"notification_permission_dialog_cancel": "キャンセル", "notification_permission_dialog_cancel": "キャンセル",
"notification_permission_dialog_content": "通知を許可するには設定を開いてオンにしてください", "notification_permission_dialog_content": "通知を許可するには設定を開いてオンにしてください",
"notification_permission_dialog_settings": "設定", "notification_permission_dialog_settings": "設定",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "エラーが発生しました", "scaffold_body_error_occurred": "エラーが発生しました",
"search_bar_hint": "写真を検索", "search_bar_hint": "写真を検索",
"search_filter_apply": "フィルターを適用する", "search_filter_apply": "フィルターを適用する",
"search_filter_camera": "Camera",
"search_filter_camera_make": "メーカー", "search_filter_camera_make": "メーカー",
"search_filter_camera_model": "モデル", "search_filter_camera_model": "モデル",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "アーカイブ", "search_filter_display_option_archive": "アーカイブ",
"search_filter_display_option_favorite": "お気に入り", "search_filter_display_option_favorite": "お気に入り",
"search_filter_display_option_not_in_album": "アルバムにありません", "search_filter_display_option_not_in_album": "アルバムにありません",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "市町村", "search_filter_location_city": "市町村",
"search_filter_location_country": "国", "search_filter_location_country": "国",
"search_filter_location_state": "都道府県", "search_filter_location_state": "都道府県",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "すべて", "search_filter_media_type_all": "すべて",
"search_filter_media_type_image": "写真", "search_filter_media_type_image": "写真",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "動画", "search_filter_media_type_video": "動画",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "カテゴリ", "search_page_categories": "カテゴリ",
"search_page_favorites": "お気に入り", "search_page_favorites": "お気に入り",
"search_page_motion_photos": "モーションフォト", "search_page_motion_photos": "モーションフォト",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "취소", "action_common_cancel": "취소",
"action_common_clear": "지우기", "action_common_clear": "지우기",
"action_common_confirm": "확인", "action_common_confirm": "확인",
"action_common_save": "저장",
"action_common_select": "선택",
"action_common_update": "업데이트", "action_common_update": "업데이트",
"add_to_album_bottom_sheet_added": "{album}에 추가되었습니다.", "add_to_album_bottom_sheet_added": "{album}에 추가되었습니다.",
"add_to_album_bottom_sheet_already_exists": "{album}에 이미 존재하는 항목입니다.", "add_to_album_bottom_sheet_already_exists": "{album}에 이미 존재하는 항목입니다.",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "새 비밀번호 입력", "change_password_form_new_password": "새 비밀번호 입력",
"change_password_form_password_mismatch": "비밀번호가 일치하지 않습니다.", "change_password_form_password_mismatch": "비밀번호가 일치하지 않습니다.",
"change_password_form_reenter_new_password": "새 비밀번호 확인", "change_password_form_reenter_new_password": "새 비밀번호 확인",
"client_cert_dialog_msg_confirm": "확인",
"client_cert_enter_password": "비밀번호 입력",
"client_cert_import": "가져오기",
"client_cert_import_success_msg": "클라이언트 인증서를 가져왔습니다.",
"client_cert_invalid_msg": "올바르지 않은 인증서이거나 비밀번호가 일치하지 않습니다.",
"client_cert_remove": "제거",
"client_cert_remove_msg": "클라이언트 인증서가 제거되었습니다.",
"client_cert_subtitle": "인증서 가져오기/제거는 로그인 전에만 가능합니다. PKCS12 (.p12, .pfx) 형식을 지원합니다.",
"client_cert_title": "SSL 클라이언트 인증서",
"common_add_to_album": "앨범에 추가", "common_add_to_album": "앨범에 추가",
"common_change_password": "비밀번호 변경", "common_change_password": "비밀번호 변경",
"common_create_new_album": "앨범 생성", "common_create_new_album": "앨범 생성",
"common_server_error": "네트워크 연결 상태를 확인하고, 서버에 접속할 수 있는지, 앱/서버 버전이 호환되는지 확인해주세요.", "common_server_error": "네트워크 연결 상태를 확인하고, 서버에 접속할 수 있는지, 앱/서버 버전이 호환되는지 확인해주세요.",
"common_shared": "공유됨", "common_shared": "공유됨",
"contextual_search": "동해안에서 맞이하는 새해 일출",
"control_bottom_app_bar_add_to_album": "앨범에 추가", "control_bottom_app_bar_add_to_album": "앨범에 추가",
"control_bottom_app_bar_album_info": "{}개 항목", "control_bottom_app_bar_album_info": "{}개 항목",
"control_bottom_app_bar_album_info_shared": "{}개 항목 · 공유됨", "control_bottom_app_bar_album_info_shared": "{}개 항목 · 공유됨",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "삭제", "control_bottom_app_bar_delete": "삭제",
"control_bottom_app_bar_delete_from_immich": "Immich에서 삭제", "control_bottom_app_bar_delete_from_immich": "Immich에서 삭제",
"control_bottom_app_bar_delete_from_local": "기기에서 삭제", "control_bottom_app_bar_delete_from_local": "기기에서 삭제",
"control_bottom_app_bar_edit": "편집",
"control_bottom_app_bar_edit_location": "위치 편집", "control_bottom_app_bar_edit_location": "위치 편집",
"control_bottom_app_bar_edit_time": "날짜 및 시간 변경", "control_bottom_app_bar_edit_time": "날짜 및 시간 변경",
"control_bottom_app_bar_favorite": "즐겨찾기", "control_bottom_app_bar_favorite": "즐겨찾기",
@@ -203,6 +216,7 @@
"experimental_settings_title": "실험적", "experimental_settings_title": "실험적",
"favorites_page_no_favorites": "즐겨찾기된 항목 없음", "favorites_page_no_favorites": "즐겨찾기된 항목 없음",
"favorites_page_title": "즐겨찾기", "favorites_page_title": "즐겨찾기",
"filename_search": "파일 이름 또는 확장자",
"haptic_feedback_switch": "햅틱 피드백 활성화", "haptic_feedback_switch": "햅틱 피드백 활성화",
"haptic_feedback_title": "햅틱 피드백", "haptic_feedback_title": "햅틱 피드백",
"header_settings_add_header_tip": "헤더 추가", "header_settings_add_header_tip": "헤더 추가",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "다운로드 시작됨", "image_viewer_page_state_provider_download_started": "다운로드 시작됨",
"image_viewer_page_state_provider_download_success": "다운로드 완료", "image_viewer_page_state_provider_download_success": "다운로드 완료",
"image_viewer_page_state_provider_share_error": "공유 오류", "image_viewer_page_state_provider_share_error": "공유 오류",
"invalid_date": "올바르지 않은 날짜입니다.",
"invalid_date_format": "올바르지 않은 날짜 형식입니다.",
"library_page_albums": "앨범", "library_page_albums": "앨범",
"library_page_archive": "보관함", "library_page_archive": "보관함",
"library_page_device_albums": "기기의 앨범", "library_page_device_albums": "기기의 앨범",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "읽기 전용 항목의 날짜는 변경할 수 없습니다. 건너뜁니다.", "multiselect_grid_edit_date_time_err_read_only": "읽기 전용 항목의 날짜는 변경할 수 없습니다. 건너뜁니다.",
"multiselect_grid_edit_gps_err_read_only": "읽기 전용 항목의 위치는 변경할 수 없습니다. 건너뜁니다.", "multiselect_grid_edit_gps_err_read_only": "읽기 전용 항목의 위치는 변경할 수 없습니다. 건너뜁니다.",
"no_assets_to_show": "표시할 항목 없음", "no_assets_to_show": "표시할 항목 없음",
"no_name": "이름 없음",
"notification_permission_dialog_cancel": "취소", "notification_permission_dialog_cancel": "취소",
"notification_permission_dialog_content": "알림을 활성화하려면 설정에서 알림 권한을 허용하세요.", "notification_permission_dialog_content": "알림을 활성화하려면 설정에서 알림 권한을 허용하세요.",
"notification_permission_dialog_settings": "설정", "notification_permission_dialog_settings": "설정",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "문제가 발생했습니다.", "scaffold_body_error_occurred": "문제가 발생했습니다.",
"search_bar_hint": "사진 검색", "search_bar_hint": "사진 검색",
"search_filter_apply": "필터 적용", "search_filter_apply": "필터 적용",
"search_filter_camera": "카메라",
"search_filter_camera_make": "제조사", "search_filter_camera_make": "제조사",
"search_filter_camera_model": "모델명", "search_filter_camera_model": "모델명",
"search_filter_camera_title": "카메라 종류 선택",
"search_filter_date": "날짜\n",
"search_filter_date_interval": "{start}에서 {end} 까지",
"search_filter_date_title": "날짜 범위 선택\n",
"search_filter_display_option_archive": "보관함", "search_filter_display_option_archive": "보관함",
"search_filter_display_option_favorite": "즐겨찾기", "search_filter_display_option_favorite": "즐겨찾기",
"search_filter_display_option_not_in_album": "앨범에 없음", "search_filter_display_option_not_in_album": "앨범에 없음",
"search_filter_display_options": "표시 옵션",
"search_filter_display_options_title": "표시 옵션",
"search_filter_location": "위치",
"search_filter_location_city": "도시", "search_filter_location_city": "도시",
"search_filter_location_country": "국가", "search_filter_location_country": "국가",
"search_filter_location_state": "지역", "search_filter_location_state": "지역",
"search_filter_location_title": "위치 선택",
"search_filter_media_type": "미디어 종류",
"search_filter_media_type_all": "모두", "search_filter_media_type_all": "모두",
"search_filter_media_type_image": "이미지", "search_filter_media_type_image": "이미지",
"search_filter_media_type_title": "미디어 종류 선택",
"search_filter_media_type_video": "동영상", "search_filter_media_type_video": "동영상",
"search_filter_people": "인물",
"search_filter_people_title": "인물 선택",
"search_page_categories": "분류", "search_page_categories": "분류",
"search_page_favorites": "즐겨찾기", "search_page_favorites": "즐겨찾기",
"search_page_motion_photos": "모션 포토", "search_page_motion_photos": "모션 포토",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Cancel", "action_common_cancel": "Cancel",
"action_common_clear": "Clear", "action_common_clear": "Clear",
"action_common_confirm": "Confirm", "action_common_confirm": "Confirm",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Update", "action_common_update": "Update",
"add_to_album_bottom_sheet_added": "Added to {album}", "add_to_album_bottom_sheet_added": "Added to {album}",
"add_to_album_bottom_sheet_already_exists": "Already in {album}", "add_to_album_bottom_sheet_already_exists": "Already in {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "New Password", "change_password_form_new_password": "New Password",
"change_password_form_password_mismatch": "Passwords do not match", "change_password_form_password_mismatch": "Passwords do not match",
"change_password_form_reenter_new_password": "Re-enter New Password", "change_password_form_reenter_new_password": "Re-enter New Password",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Add to album", "common_add_to_album": "Add to album",
"common_change_password": "Change Password", "common_change_password": "Change Password",
"common_create_new_album": "Create new album", "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.", "common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.",
"common_shared": "Shared", "common_shared": "Shared",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Add to album", "control_bottom_app_bar_add_to_album": "Add to album",
"control_bottom_app_bar_album_info": "{} items", "control_bottom_app_bar_album_info": "{} items",
"control_bottom_app_bar_album_info_shared": "{} items · Shared", "control_bottom_app_bar_album_info_shared": "{} items · Shared",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Delete", "control_bottom_app_bar_delete": "Delete",
"control_bottom_app_bar_delete_from_immich": "Delete from Immich", "control_bottom_app_bar_delete_from_immich": "Delete from Immich",
"control_bottom_app_bar_delete_from_local": "Delete from device", "control_bottom_app_bar_delete_from_local": "Delete from device",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Edit Location", "control_bottom_app_bar_edit_location": "Edit Location",
"control_bottom_app_bar_edit_time": "Edit Date & Time", "control_bottom_app_bar_edit_time": "Edit Date & Time",
"control_bottom_app_bar_favorite": "Favorite", "control_bottom_app_bar_favorite": "Favorite",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Experimental", "experimental_settings_title": "Experimental",
"favorites_page_no_favorites": "No favorite assets found", "favorites_page_no_favorites": "No favorite assets found",
"favorites_page_title": "Favorites", "favorites_page_title": "Favorites",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Enable haptic feedback", "haptic_feedback_switch": "Enable haptic feedback",
"haptic_feedback_title": "Haptic Feedback", "haptic_feedback_title": "Haptic Feedback",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Download Started", "image_viewer_page_state_provider_download_started": "Download Started",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_success": "Download Success",
"image_viewer_page_state_provider_share_error": "Share Error", "image_viewer_page_state_provider_share_error": "Share Error",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albums", "library_page_albums": "Albums",
"library_page_archive": "Archive", "library_page_archive": "Archive",
"library_page_device_albums": "Albums on Device", "library_page_device_albums": "Albums on Device",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping", "multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping",
"multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping", "multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping",
"no_assets_to_show": "No assets to show", "no_assets_to_show": "No assets to show",
"no_name": "No name",
"notification_permission_dialog_cancel": "Cancel", "notification_permission_dialog_cancel": "Cancel",
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.", "notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
"notification_permission_dialog_settings": "Settings", "notification_permission_dialog_settings": "Settings",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Error occurred", "scaffold_body_error_occurred": "Error occurred",
"search_bar_hint": "Search your photos", "search_bar_hint": "Search your photos",
"search_filter_apply": "Apply filter", "search_filter_apply": "Apply filter",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Make", "search_filter_camera_make": "Make",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archive", "search_filter_display_option_archive": "Archive",
"search_filter_display_option_favorite": "Favorite", "search_filter_display_option_favorite": "Favorite",
"search_filter_display_option_not_in_album": "Not in album", "search_filter_display_option_not_in_album": "Not in album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "City", "search_filter_location_city": "City",
"search_filter_location_country": "Country", "search_filter_location_country": "Country",
"search_filter_location_state": "State", "search_filter_location_state": "State",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "All", "search_filter_media_type_all": "All",
"search_filter_media_type_image": "Image", "search_filter_media_type_image": "Image",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Categories", "search_page_categories": "Categories",
"search_page_favorites": "Favorites", "search_page_favorites": "Favorites",
"search_page_motion_photos": "Motion Photos", "search_page_motion_photos": "Motion Photos",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Atcelt", "action_common_cancel": "Atcelt",
"action_common_clear": "Notīrīt", "action_common_clear": "Notīrīt",
"action_common_confirm": "Apstiprināt", "action_common_confirm": "Apstiprināt",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Atjaunināt", "action_common_update": "Atjaunināt",
"add_to_album_bottom_sheet_added": "Pievienots {album}", "add_to_album_bottom_sheet_added": "Pievienots {album}",
"add_to_album_bottom_sheet_already_exists": "Jau pievienots {album}", "add_to_album_bottom_sheet_already_exists": "Jau pievienots {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Jauna Parole", "change_password_form_new_password": "Jauna Parole",
"change_password_form_password_mismatch": "Paroles nesakrīt", "change_password_form_password_mismatch": "Paroles nesakrīt",
"change_password_form_reenter_new_password": "Atkārtoti ievadīt jaunu paroli", "change_password_form_reenter_new_password": "Atkārtoti ievadīt jaunu paroli",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Pievienot albumam", "common_add_to_album": "Pievienot albumam",
"common_change_password": "Nomainīt Paroli", "common_change_password": "Nomainīt Paroli",
"common_create_new_album": "Izveidot jaunu albumu", "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.", "common_server_error": "Lūdzu, pārbaudiet tīkla savienojumu, pārliecinieties, vai serveris ir sasniedzams un aplikācijas/servera versijas ir saderīgas.",
"common_shared": "Kopīgots", "common_shared": "Kopīgots",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Pievienot albumam", "control_bottom_app_bar_add_to_album": "Pievienot albumam",
"control_bottom_app_bar_album_info": "{} vienumi", "control_bottom_app_bar_album_info": "{} vienumi",
"control_bottom_app_bar_album_info_shared": "{} vienumi · Koplietoti", "control_bottom_app_bar_album_info_shared": "{} vienumi · Koplietoti",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Dzēst", "control_bottom_app_bar_delete": "Dzēst",
"control_bottom_app_bar_delete_from_immich": "Dzēst no Immich", "control_bottom_app_bar_delete_from_immich": "Dzēst no Immich",
"control_bottom_app_bar_delete_from_local": "Dzēst no ierīces", "control_bottom_app_bar_delete_from_local": "Dzēst no ierīces",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Rediģēt Atrašanās Vietu", "control_bottom_app_bar_edit_location": "Rediģēt Atrašanās Vietu",
"control_bottom_app_bar_edit_time": "Rediģēt Datumu un Laiku", "control_bottom_app_bar_edit_time": "Rediģēt Datumu un Laiku",
"control_bottom_app_bar_favorite": "Izlase", "control_bottom_app_bar_favorite": "Izlase",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Eksperimentāls", "experimental_settings_title": "Eksperimentāls",
"favorites_page_no_favorites": "Nav atrasti iecienītākie aktīvi", "favorites_page_no_favorites": "Nav atrasti iecienītākie aktīvi",
"favorites_page_title": "Izlase", "favorites_page_title": "Izlase",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Iestatīt haptisku reakciju", "haptic_feedback_switch": "Iestatīt haptisku reakciju",
"haptic_feedback_title": "Haptiska Reakcija", "haptic_feedback_title": "Haptiska Reakcija",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Lejupielāde Uzsākta", "image_viewer_page_state_provider_download_started": "Lejupielāde Uzsākta",
"image_viewer_page_state_provider_download_success": "Lejupielāde Izdevās", "image_viewer_page_state_provider_download_success": "Lejupielāde Izdevās",
"image_viewer_page_state_provider_share_error": "Kopīgošanas Kļūda", "image_viewer_page_state_provider_share_error": "Kopīgošanas Kļūda",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albums", "library_page_albums": "Albums",
"library_page_archive": "Arhīvs", "library_page_archive": "Arhīvs",
"library_page_device_albums": "Albumi ierīcē", "library_page_device_albums": "Albumi ierīcē",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Nevar rediģēt read only aktīva(-u) datumu, notiek izlaišana", "multiselect_grid_edit_date_time_err_read_only": "Nevar rediģēt read only aktīva(-u) datumu, notiek izlaišana",
"multiselect_grid_edit_gps_err_read_only": "Nevar rediģēt atrašanās vietu read only aktīva(-u) datumu, notiek izlaišana", "multiselect_grid_edit_gps_err_read_only": "Nevar rediģēt atrašanās vietu read only aktīva(-u) datumu, notiek izlaišana",
"no_assets_to_show": "Nav uzrādāmo aktīvu", "no_assets_to_show": "Nav uzrādāmo aktīvu",
"no_name": "No name",
"notification_permission_dialog_cancel": "Atcelt", "notification_permission_dialog_cancel": "Atcelt",
"notification_permission_dialog_content": "Lai iespējotu paziņojumus, atveriet Iestatījumi un atlasiet Atļaut.", "notification_permission_dialog_content": "Lai iespējotu paziņojumus, atveriet Iestatījumi un atlasiet Atļaut.",
"notification_permission_dialog_settings": "Iestatījumi", "notification_permission_dialog_settings": "Iestatījumi",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Radās kļūda", "scaffold_body_error_occurred": "Radās kļūda",
"search_bar_hint": "Meklēt Jūsu fotoattēlus", "search_bar_hint": "Meklēt Jūsu fotoattēlus",
"search_filter_apply": "Lietot filtru", "search_filter_apply": "Lietot filtru",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Firma", "search_filter_camera_make": "Firma",
"search_filter_camera_model": "Modelis", "search_filter_camera_model": "Modelis",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Arhīvs", "search_filter_display_option_archive": "Arhīvs",
"search_filter_display_option_favorite": "Izlase", "search_filter_display_option_favorite": "Izlase",
"search_filter_display_option_not_in_album": "Nav albumā", "search_filter_display_option_not_in_album": "Nav albumā",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "Pilsēta", "search_filter_location_city": "Pilsēta",
"search_filter_location_country": "Valsts", "search_filter_location_country": "Valsts",
"search_filter_location_state": "Štats", "search_filter_location_state": "Štats",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "Viss", "search_filter_media_type_all": "Viss",
"search_filter_media_type_image": "Attēls", "search_filter_media_type_image": "Attēls",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Videoklips", "search_filter_media_type_video": "Videoklips",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Kategorijas", "search_page_categories": "Kategorijas",
"search_page_favorites": "Izlase", "search_page_favorites": "Izlase",
"search_page_motion_photos": "Kustību Fotoattēli", "search_page_motion_photos": "Kustību Fotoattēli",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Cancel", "action_common_cancel": "Cancel",
"action_common_clear": "Clear", "action_common_clear": "Clear",
"action_common_confirm": "Confirm", "action_common_confirm": "Confirm",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Update", "action_common_update": "Update",
"add_to_album_bottom_sheet_added": "Added to {album}", "add_to_album_bottom_sheet_added": "Added to {album}",
"add_to_album_bottom_sheet_already_exists": "Already in {album}", "add_to_album_bottom_sheet_already_exists": "Already in {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "New Password", "change_password_form_new_password": "New Password",
"change_password_form_password_mismatch": "Passwords do not match", "change_password_form_password_mismatch": "Passwords do not match",
"change_password_form_reenter_new_password": "Re-enter New Password", "change_password_form_reenter_new_password": "Re-enter New Password",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Add to album", "common_add_to_album": "Add to album",
"common_change_password": "Change Password", "common_change_password": "Change Password",
"common_create_new_album": "Create new album", "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.", "common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.",
"common_shared": "Shared", "common_shared": "Shared",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Add to album", "control_bottom_app_bar_add_to_album": "Add to album",
"control_bottom_app_bar_album_info": "{} items", "control_bottom_app_bar_album_info": "{} items",
"control_bottom_app_bar_album_info_shared": "{} items · Shared", "control_bottom_app_bar_album_info_shared": "{} items · Shared",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Delete", "control_bottom_app_bar_delete": "Delete",
"control_bottom_app_bar_delete_from_immich": "Delete from Immich", "control_bottom_app_bar_delete_from_immich": "Delete from Immich",
"control_bottom_app_bar_delete_from_local": "Delete from device", "control_bottom_app_bar_delete_from_local": "Delete from device",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Edit Location", "control_bottom_app_bar_edit_location": "Edit Location",
"control_bottom_app_bar_edit_time": "Edit Date & Time", "control_bottom_app_bar_edit_time": "Edit Date & Time",
"control_bottom_app_bar_favorite": "Favorite", "control_bottom_app_bar_favorite": "Favorite",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Experimental", "experimental_settings_title": "Experimental",
"favorites_page_no_favorites": "No favorite assets found", "favorites_page_no_favorites": "No favorite assets found",
"favorites_page_title": "Favorites", "favorites_page_title": "Favorites",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Enable haptic feedback", "haptic_feedback_switch": "Enable haptic feedback",
"haptic_feedback_title": "Haptic Feedback", "haptic_feedback_title": "Haptic Feedback",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Download Started", "image_viewer_page_state_provider_download_started": "Download Started",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_success": "Download Success",
"image_viewer_page_state_provider_share_error": "Share Error", "image_viewer_page_state_provider_share_error": "Share Error",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albums", "library_page_albums": "Albums",
"library_page_archive": "Archive", "library_page_archive": "Archive",
"library_page_device_albums": "Albums on Device", "library_page_device_albums": "Albums on Device",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping", "multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping",
"multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping", "multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping",
"no_assets_to_show": "No assets to show", "no_assets_to_show": "No assets to show",
"no_name": "No name",
"notification_permission_dialog_cancel": "Цуцлах", "notification_permission_dialog_cancel": "Цуцлах",
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.", "notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
"notification_permission_dialog_settings": "Тохиргоо", "notification_permission_dialog_settings": "Тохиргоо",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Error occurred", "scaffold_body_error_occurred": "Error occurred",
"search_bar_hint": "Search your photos", "search_bar_hint": "Search your photos",
"search_filter_apply": "Apply filter", "search_filter_apply": "Apply filter",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Make", "search_filter_camera_make": "Make",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archive", "search_filter_display_option_archive": "Archive",
"search_filter_display_option_favorite": "Favorite", "search_filter_display_option_favorite": "Favorite",
"search_filter_display_option_not_in_album": "Not in album", "search_filter_display_option_not_in_album": "Not in album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "City", "search_filter_location_city": "City",
"search_filter_location_country": "Country", "search_filter_location_country": "Country",
"search_filter_location_state": "State", "search_filter_location_state": "State",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "All", "search_filter_media_type_all": "All",
"search_filter_media_type_image": "Image", "search_filter_media_type_image": "Image",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Categories", "search_page_categories": "Categories",
"search_page_favorites": "Favorites", "search_page_favorites": "Favorites",
"search_page_motion_photos": "Motion Photos", "search_page_motion_photos": "Motion Photos",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Avbryt", "action_common_cancel": "Avbryt",
"action_common_clear": "Tøm", "action_common_clear": "Tøm",
"action_common_confirm": "Bekreft", "action_common_confirm": "Bekreft",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Oppdater", "action_common_update": "Oppdater",
"add_to_album_bottom_sheet_added": "Lagt til i {album}", "add_to_album_bottom_sheet_added": "Lagt til i {album}",
"add_to_album_bottom_sheet_already_exists": "Allerede i {album}", "add_to_album_bottom_sheet_already_exists": "Allerede i {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Nytt passord", "change_password_form_new_password": "Nytt passord",
"change_password_form_password_mismatch": "Passordene stemmer ikke", "change_password_form_password_mismatch": "Passordene stemmer ikke",
"change_password_form_reenter_new_password": "Skriv nytt passord igjen", "change_password_form_reenter_new_password": "Skriv nytt passord igjen",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Legg til i album", "common_add_to_album": "Legg til i album",
"common_change_password": "Endre passord", "common_change_password": "Endre passord",
"common_create_new_album": "Lag nytt album", "common_create_new_album": "Lag nytt album",
"common_server_error": "Sjekk nettverkstilkoblingen din, forsikre deg om at serveren er mulig å nå, og at app-/server-versjonene er kompatible.", "common_server_error": "Sjekk nettverkstilkoblingen din, forsikre deg om at serveren er mulig å nå, og at app-/server-versjonene er kompatible.",
"common_shared": "Delt", "common_shared": "Delt",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Legg til i album", "control_bottom_app_bar_add_to_album": "Legg til i album",
"control_bottom_app_bar_album_info": "{} objekter", "control_bottom_app_bar_album_info": "{} objekter",
"control_bottom_app_bar_album_info_shared": "{} objekter · Delt", "control_bottom_app_bar_album_info_shared": "{} objekter · Delt",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Slett", "control_bottom_app_bar_delete": "Slett",
"control_bottom_app_bar_delete_from_immich": "Slett fra Immich", "control_bottom_app_bar_delete_from_immich": "Slett fra Immich",
"control_bottom_app_bar_delete_from_local": "Slett fra enhet", "control_bottom_app_bar_delete_from_local": "Slett fra enhet",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Endre lokasjon", "control_bottom_app_bar_edit_location": "Endre lokasjon",
"control_bottom_app_bar_edit_time": "Endre Dato og tid", "control_bottom_app_bar_edit_time": "Endre Dato og tid",
"control_bottom_app_bar_favorite": "Favoritt", "control_bottom_app_bar_favorite": "Favoritt",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Eksperimentelt", "experimental_settings_title": "Eksperimentelt",
"favorites_page_no_favorites": "Ingen favorittobjekter funnet", "favorites_page_no_favorites": "Ingen favorittobjekter funnet",
"favorites_page_title": "Favoritter", "favorites_page_title": "Favoritter",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Aktivert haptisk tilbakemelding", "haptic_feedback_switch": "Aktivert haptisk tilbakemelding",
"haptic_feedback_title": "Haptisk tilbakemelding", "haptic_feedback_title": "Haptisk tilbakemelding",
"header_settings_add_header_tip": "Legg til header", "header_settings_add_header_tip": "Legg til header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Nedlasting startet", "image_viewer_page_state_provider_download_started": "Nedlasting startet",
"image_viewer_page_state_provider_download_success": "Nedlasting vellykket", "image_viewer_page_state_provider_download_success": "Nedlasting vellykket",
"image_viewer_page_state_provider_share_error": "Delingsfeil", "image_viewer_page_state_provider_share_error": "Delingsfeil",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albumer", "library_page_albums": "Albumer",
"library_page_archive": "Arkiv", "library_page_archive": "Arkiv",
"library_page_device_albums": "Albumer på enheten", "library_page_device_albums": "Albumer på enheten",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Kan ikke endre dato på objekt(er) med kun lese-rettigheter, hopper over", "multiselect_grid_edit_date_time_err_read_only": "Kan ikke endre dato på objekt(er) med kun lese-rettigheter, hopper over",
"multiselect_grid_edit_gps_err_read_only": "Kan ikke endre lokasjon på objekt(er) med kun lese-rettigheter, hopper over", "multiselect_grid_edit_gps_err_read_only": "Kan ikke endre lokasjon på objekt(er) med kun lese-rettigheter, hopper over",
"no_assets_to_show": "Ingen objekter å vise", "no_assets_to_show": "Ingen objekter å vise",
"no_name": "No name",
"notification_permission_dialog_cancel": "Avbryt", "notification_permission_dialog_cancel": "Avbryt",
"notification_permission_dialog_content": "For å aktivere notifikasjoner, gå til Innstillinger og velg tillat.", "notification_permission_dialog_content": "For å aktivere notifikasjoner, gå til Innstillinger og velg tillat.",
"notification_permission_dialog_settings": "Innstillinger", "notification_permission_dialog_settings": "Innstillinger",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Feil oppstått", "scaffold_body_error_occurred": "Feil oppstått",
"search_bar_hint": "Søk i dine bilder", "search_bar_hint": "Søk i dine bilder",
"search_filter_apply": "Aktiver filter", "search_filter_apply": "Aktiver filter",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Merke", "search_filter_camera_make": "Merke",
"search_filter_camera_model": "Modell", "search_filter_camera_model": "Modell",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Arkiver", "search_filter_display_option_archive": "Arkiver",
"search_filter_display_option_favorite": "Favoritt", "search_filter_display_option_favorite": "Favoritt",
"search_filter_display_option_not_in_album": "Ikke i album", "search_filter_display_option_not_in_album": "Ikke i album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "By", "search_filter_location_city": "By",
"search_filter_location_country": "Land", "search_filter_location_country": "Land",
"search_filter_location_state": "Fylke", "search_filter_location_state": "Fylke",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "Alle", "search_filter_media_type_all": "Alle",
"search_filter_media_type_image": "Bilde", "search_filter_media_type_image": "Bilde",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Kategorier", "search_page_categories": "Kategorier",
"search_page_favorites": "Favoritter", "search_page_favorites": "Favoritter",
"search_page_motion_photos": "Bevegelige bilder", "search_page_motion_photos": "Bevegelige bilder",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Annuleren", "action_common_cancel": "Annuleren",
"action_common_clear": "Resetten", "action_common_clear": "Resetten",
"action_common_confirm": "Bevestigen", "action_common_confirm": "Bevestigen",
"action_common_save": "Opslaan",
"action_common_select": "Selecteren",
"action_common_update": "Bijwerken", "action_common_update": "Bijwerken",
"add_to_album_bottom_sheet_added": "Toegevoegd aan {album}", "add_to_album_bottom_sheet_added": "Toegevoegd aan {album}",
"add_to_album_bottom_sheet_already_exists": "Staat al in {album}", "add_to_album_bottom_sheet_already_exists": "Staat al in {album}",
@@ -32,7 +34,7 @@
"album_viewer_appbar_share_err_title": "Albumtitel wijzigen mislukt", "album_viewer_appbar_share_err_title": "Albumtitel wijzigen mislukt",
"album_viewer_appbar_share_leave": "Verlaat album", "album_viewer_appbar_share_leave": "Verlaat album",
"album_viewer_appbar_share_remove": "Verwijder uit album", "album_viewer_appbar_share_remove": "Verwijder uit album",
"album_viewer_appbar_share_to": "Delen met", "album_viewer_appbar_share_to": "Delen via",
"album_viewer_page_share_add_users": "Gebruikers toevoegen", "album_viewer_page_share_add_users": "Gebruikers toevoegen",
"all_people_page_title": "Mensen", "all_people_page_title": "Mensen",
"all_videos_page_title": "Video's", "all_videos_page_title": "Video's",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Nieuw wachtwoord", "change_password_form_new_password": "Nieuw wachtwoord",
"change_password_form_password_mismatch": "Wachtwoorden komen niet overeen", "change_password_form_password_mismatch": "Wachtwoorden komen niet overeen",
"change_password_form_reenter_new_password": "Vul het wachtwoord opnieuw in", "change_password_form_reenter_new_password": "Vul het wachtwoord opnieuw in",
"client_cert_dialog_msg_confirm": "Ok",
"client_cert_enter_password": "Voer wachtwoord in",
"client_cert_import": "Importeren",
"client_cert_import_success_msg": "Clientcertificaat is geïmporteerd",
"client_cert_invalid_msg": "Ongeldig certificaatbestand of verkeerd wachtwoord",
"client_cert_remove": "Verwijderen",
"client_cert_remove_msg": "Clientcertificaat is verwijderd",
"client_cert_subtitle": "Ondersteunt alleen PKCS12 (.p12, .pfx) formaat. Certificaat importeren/verwijderen is alleen beschikbaar vóór het inloggen",
"client_cert_title": "SSL clientcertificaat",
"common_add_to_album": "Aan album toevoegen", "common_add_to_album": "Aan album toevoegen",
"common_change_password": "Wachtwoord wijzigen", "common_change_password": "Wachtwoord wijzigen",
"common_create_new_album": "Nieuw album maken", "common_create_new_album": "Nieuw album maken",
"common_server_error": "Controleer je netwerkverbinding, zorg ervoor dat de server bereikbaar is en de app/server versies compatibel zijn.", "common_server_error": "Controleer je netwerkverbinding, zorg ervoor dat de server bereikbaar is en de app/server versies compatibel zijn.",
"common_shared": "Gedeeld", "common_shared": "Gedeeld",
"contextual_search": "Zonsopkomst op het strand",
"control_bottom_app_bar_add_to_album": "Aan album toevoegen", "control_bottom_app_bar_add_to_album": "Aan album toevoegen",
"control_bottom_app_bar_album_info": "{} items", "control_bottom_app_bar_album_info": "{} items",
"control_bottom_app_bar_album_info_shared": "{} items · Gedeeld", "control_bottom_app_bar_album_info_shared": "{} items · Gedeeld",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Verwijderen", "control_bottom_app_bar_delete": "Verwijderen",
"control_bottom_app_bar_delete_from_immich": "Verwijderen van Immich", "control_bottom_app_bar_delete_from_immich": "Verwijderen van Immich",
"control_bottom_app_bar_delete_from_local": "Verwijderen van apparaat", "control_bottom_app_bar_delete_from_local": "Verwijderen van apparaat",
"control_bottom_app_bar_edit": "Bewerken",
"control_bottom_app_bar_edit_location": "Locatie bewerken", "control_bottom_app_bar_edit_location": "Locatie bewerken",
"control_bottom_app_bar_edit_time": "Datum & tijd bewerken", "control_bottom_app_bar_edit_time": "Datum & tijd bewerken",
"control_bottom_app_bar_favorite": "Favoriet", "control_bottom_app_bar_favorite": "Favoriet",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Experimenteel", "experimental_settings_title": "Experimenteel",
"favorites_page_no_favorites": "Geen favoriete assets gevonden", "favorites_page_no_favorites": "Geen favoriete assets gevonden",
"favorites_page_title": "Favorieten", "favorites_page_title": "Favorieten",
"filename_search": "Bestandsnaam of extensie",
"haptic_feedback_switch": "Aanraaktrillingen inschakelen", "haptic_feedback_switch": "Aanraaktrillingen inschakelen",
"haptic_feedback_title": "Aanraaktrillingen", "haptic_feedback_title": "Aanraaktrillingen",
"header_settings_add_header_tip": "Header toevoegen", "header_settings_add_header_tip": "Header toevoegen",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Download gestart", "image_viewer_page_state_provider_download_started": "Download gestart",
"image_viewer_page_state_provider_download_success": "Download succesvol", "image_viewer_page_state_provider_download_success": "Download succesvol",
"image_viewer_page_state_provider_share_error": "Deel Error", "image_viewer_page_state_provider_share_error": "Deel Error",
"invalid_date": "Ongeldige datum",
"invalid_date_format": "Ongeldig datumformaat",
"library_page_albums": "Albums", "library_page_albums": "Albums",
"library_page_archive": "Archief", "library_page_archive": "Archief",
"library_page_device_albums": "Albums op apparaat", "library_page_device_albums": "Albums op apparaat",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Kan datum van alleen-lezen asset(s) niet wijzigen, overslaan", "multiselect_grid_edit_date_time_err_read_only": "Kan datum van alleen-lezen asset(s) niet wijzigen, overslaan",
"multiselect_grid_edit_gps_err_read_only": "Kan locatie van alleen-lezen asset(s) niet wijzigen, overslaan", "multiselect_grid_edit_gps_err_read_only": "Kan locatie van alleen-lezen asset(s) niet wijzigen, overslaan",
"no_assets_to_show": "Geen foto's om te laten zien", "no_assets_to_show": "Geen foto's om te laten zien",
"no_name": "Geen naam",
"notification_permission_dialog_cancel": "Annuleren", "notification_permission_dialog_cancel": "Annuleren",
"notification_permission_dialog_content": "Om meldingen in te schakelen, ga naar Instellingen en selecteer toestaan.", "notification_permission_dialog_content": "Om meldingen in te schakelen, ga naar Instellingen en selecteer toestaan.",
"notification_permission_dialog_settings": "Instellingen", "notification_permission_dialog_settings": "Instellingen",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Fout opgetreden", "scaffold_body_error_occurred": "Fout opgetreden",
"search_bar_hint": "Foto's doorzoeken", "search_bar_hint": "Foto's doorzoeken",
"search_filter_apply": "Filter toepassen", "search_filter_apply": "Filter toepassen",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Merk", "search_filter_camera_make": "Merk",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Selecteer cameratype",
"search_filter_date": "Datum",
"search_filter_date_interval": "{start} tot {end}",
"search_filter_date_title": "Selecteer datumbereik",
"search_filter_display_option_archive": "Archief", "search_filter_display_option_archive": "Archief",
"search_filter_display_option_favorite": "Favoriet", "search_filter_display_option_favorite": "Favoriet",
"search_filter_display_option_not_in_album": "Niet in album", "search_filter_display_option_not_in_album": "Niet in album",
"search_filter_display_options": "Weergaveopties",
"search_filter_display_options_title": "Weergaveopties",
"search_filter_location": "Locatie",
"search_filter_location_city": "Stad", "search_filter_location_city": "Stad",
"search_filter_location_country": "Land", "search_filter_location_country": "Land",
"search_filter_location_state": "Status", "search_filter_location_state": "Status",
"search_filter_location_title": "Selecteer locatie",
"search_filter_media_type": "Mediatype",
"search_filter_media_type_all": "Alle", "search_filter_media_type_all": "Alle",
"search_filter_media_type_image": "Afbeelding", "search_filter_media_type_image": "Afbeelding",
"search_filter_media_type_title": "Selecteer mediatype",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "Mensen",
"search_filter_people_title": "Selecteer mensen",
"search_page_categories": "Categorieën", "search_page_categories": "Categorieën",
"search_page_favorites": "Favorieten", "search_page_favorites": "Favorieten",
"search_page_motion_photos": "Bewegende foto's", "search_page_motion_photos": "Bewegende foto's",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Anuluj", "action_common_cancel": "Anuluj",
"action_common_clear": "Wyrzuść", "action_common_clear": "Wyrzuść",
"action_common_confirm": "Potwierdzać", "action_common_confirm": "Potwierdzać",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Aktualizuj", "action_common_update": "Aktualizuj",
"add_to_album_bottom_sheet_added": "Dodano do {album}", "add_to_album_bottom_sheet_added": "Dodano do {album}",
"add_to_album_bottom_sheet_already_exists": "Już w {album}", "add_to_album_bottom_sheet_already_exists": "Już w {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Nowe Hasło", "change_password_form_new_password": "Nowe Hasło",
"change_password_form_password_mismatch": "Hasła nie są zgodne", "change_password_form_password_mismatch": "Hasła nie są zgodne",
"change_password_form_reenter_new_password": "Wprowadź ponownie Nowe Hasło", "change_password_form_reenter_new_password": "Wprowadź ponownie Nowe Hasło",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Dodaj do albumu", "common_add_to_album": "Dodaj do albumu",
"common_change_password": "Zmień Hasło", "common_change_password": "Zmień Hasło",
"common_create_new_album": "Utwórz nowy album", "common_create_new_album": "Utwórz nowy album",
"common_server_error": "Sprawdź połączenie sieciowe, upewnij się, że serwer jest osiągalny i wersje aplikacji/serwera są kompatybilne.", "common_server_error": "Sprawdź połączenie sieciowe, upewnij się, że serwer jest osiągalny i wersje aplikacji/serwera są kompatybilne.",
"common_shared": "Udostępnione", "common_shared": "Udostępnione",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Dodaj do albumu", "control_bottom_app_bar_add_to_album": "Dodaj do albumu",
"control_bottom_app_bar_album_info": "{} pozycji", "control_bottom_app_bar_album_info": "{} pozycji",
"control_bottom_app_bar_album_info_shared": "{} pozycji · Udostępnionych", "control_bottom_app_bar_album_info_shared": "{} pozycji · Udostępnionych",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Usuń", "control_bottom_app_bar_delete": "Usuń",
"control_bottom_app_bar_delete_from_immich": "Usuń z Immicha", "control_bottom_app_bar_delete_from_immich": "Usuń z Immicha",
"control_bottom_app_bar_delete_from_local": "Usuń z urządzenia", "control_bottom_app_bar_delete_from_local": "Usuń z urządzenia",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Edytuj lokalizację", "control_bottom_app_bar_edit_location": "Edytuj lokalizację",
"control_bottom_app_bar_edit_time": "Edytuj datę i godzinę", "control_bottom_app_bar_edit_time": "Edytuj datę i godzinę",
"control_bottom_app_bar_favorite": "Ulubione", "control_bottom_app_bar_favorite": "Ulubione",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Eksperymentalny", "experimental_settings_title": "Eksperymentalny",
"favorites_page_no_favorites": "Nie znaleziono ulubionych zasobów", "favorites_page_no_favorites": "Nie znaleziono ulubionych zasobów",
"favorites_page_title": "Ulubione", "favorites_page_title": "Ulubione",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Enable haptic feedback", "haptic_feedback_switch": "Enable haptic feedback",
"haptic_feedback_title": "Haptic Feedback", "haptic_feedback_title": "Haptic Feedback",
"header_settings_add_header_tip": "Dodaj nagłówek", "header_settings_add_header_tip": "Dodaj nagłówek",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Pobieranie rozpoczęte", "image_viewer_page_state_provider_download_started": "Pobieranie rozpoczęte",
"image_viewer_page_state_provider_download_success": "Pobieranie zakończone", "image_viewer_page_state_provider_download_success": "Pobieranie zakończone",
"image_viewer_page_state_provider_share_error": "Udostępnij błąd", "image_viewer_page_state_provider_share_error": "Udostępnij błąd",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albumy", "library_page_albums": "Albumy",
"library_page_archive": "Archiwum", "library_page_archive": "Archiwum",
"library_page_device_albums": "Albumy na Urządzeniu", "library_page_device_albums": "Albumy na Urządzeniu",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Nie można edytować daty zasobów tylko do odczytu, pomijanie", "multiselect_grid_edit_date_time_err_read_only": "Nie można edytować daty zasobów tylko do odczytu, pomijanie",
"multiselect_grid_edit_gps_err_read_only": "Nie można edytować lokalizacji zasobów tylko do odczytu, pomijanie", "multiselect_grid_edit_gps_err_read_only": "Nie można edytować lokalizacji zasobów tylko do odczytu, pomijanie",
"no_assets_to_show": "Brak zasobów do pokazania", "no_assets_to_show": "Brak zasobów do pokazania",
"no_name": "No name",
"notification_permission_dialog_cancel": "Anuluj", "notification_permission_dialog_cancel": "Anuluj",
"notification_permission_dialog_content": "Aby włączyć powiadomienia, przejdź do Ustawień i wybierz opcję Zezwalaj.", "notification_permission_dialog_content": "Aby włączyć powiadomienia, przejdź do Ustawień i wybierz opcję Zezwalaj.",
"notification_permission_dialog_settings": "Ustawienia", "notification_permission_dialog_settings": "Ustawienia",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Wystąpił błąd", "scaffold_body_error_occurred": "Wystąpił błąd",
"search_bar_hint": "Szukaj swoich zdjęć", "search_bar_hint": "Szukaj swoich zdjęć",
"search_filter_apply": "Zastosuj filtr", "search_filter_apply": "Zastosuj filtr",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Make", "search_filter_camera_make": "Make",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archiwum", "search_filter_display_option_archive": "Archiwum",
"search_filter_display_option_favorite": "Ulubiony", "search_filter_display_option_favorite": "Ulubiony",
"search_filter_display_option_not_in_album": "Nie w albumie", "search_filter_display_option_not_in_album": "Nie w albumie",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "Miasto", "search_filter_location_city": "Miasto",
"search_filter_location_country": "Kraj", "search_filter_location_country": "Kraj",
"search_filter_location_state": "State", "search_filter_location_state": "State",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "Wszystko", "search_filter_media_type_all": "Wszystko",
"search_filter_media_type_image": "Obrazy", "search_filter_media_type_image": "Obrazy",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Filmy", "search_filter_media_type_video": "Filmy",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Kategorie", "search_page_categories": "Kategorie",
"search_page_favorites": "Ulubione", "search_page_favorites": "Ulubione",
"search_page_motion_photos": "Zdjęcia ruchome", "search_page_motion_photos": "Zdjęcia ruchome",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Cancelar", "action_common_cancel": "Cancelar",
"action_common_clear": "Clear", "action_common_clear": "Clear",
"action_common_confirm": "Confirm", "action_common_confirm": "Confirm",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Atualizar", "action_common_update": "Atualizar",
"add_to_album_bottom_sheet_added": "Adicionar a {album}", "add_to_album_bottom_sheet_added": "Adicionar a {album}",
"add_to_album_bottom_sheet_already_exists": "Já pertence a {album}", "add_to_album_bottom_sheet_already_exists": "Já pertence a {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Nova senha", "change_password_form_new_password": "Nova senha",
"change_password_form_password_mismatch": "As senhas não coincidem", "change_password_form_password_mismatch": "As senhas não coincidem",
"change_password_form_reenter_new_password": "Re-introduza a nova senha", "change_password_form_reenter_new_password": "Re-introduza a nova senha",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Adicionar ao álbum", "common_add_to_album": "Adicionar ao álbum",
"common_change_password": "Mudar a senha", "common_change_password": "Mudar a senha",
"common_create_new_album": "Criar novo álbum", "common_create_new_album": "Criar novo álbum",
"common_server_error": "Verifique a sua ligação de rede, certifique-se de que o servidor está acessível e de que as versões da aplicação/servidor são compatíveis.", "common_server_error": "Verifique a sua ligação de rede, certifique-se de que o servidor está acessível e de que as versões da aplicação/servidor são compatíveis.",
"common_shared": "Partilhado", "common_shared": "Partilhado",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Adicionar ao álbum", "control_bottom_app_bar_add_to_album": "Adicionar ao álbum",
"control_bottom_app_bar_album_info": "{} itens", "control_bottom_app_bar_album_info": "{} itens",
"control_bottom_app_bar_album_info_shared": "{} itens · Partilhado", "control_bottom_app_bar_album_info_shared": "{} itens · Partilhado",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Deletar", "control_bottom_app_bar_delete": "Deletar",
"control_bottom_app_bar_delete_from_immich": "Apagar do Immich", "control_bottom_app_bar_delete_from_immich": "Apagar do Immich",
"control_bottom_app_bar_delete_from_local": "Apagar do dispositivo", "control_bottom_app_bar_delete_from_local": "Apagar do dispositivo",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Editar Localização", "control_bottom_app_bar_edit_location": "Editar Localização",
"control_bottom_app_bar_edit_time": "Editar Data & Hora", "control_bottom_app_bar_edit_time": "Editar Data & Hora",
"control_bottom_app_bar_favorite": "Favorito", "control_bottom_app_bar_favorite": "Favorito",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Experimental", "experimental_settings_title": "Experimental",
"favorites_page_no_favorites": "Nenhum recurso favorito encontrado", "favorites_page_no_favorites": "Nenhum recurso favorito encontrado",
"favorites_page_title": "Favoritos", "favorites_page_title": "Favoritos",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Enable haptic feedback", "haptic_feedback_switch": "Enable haptic feedback",
"haptic_feedback_title": "Haptic Feedback", "haptic_feedback_title": "Haptic Feedback",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Download Started", "image_viewer_page_state_provider_download_started": "Download Started",
"image_viewer_page_state_provider_download_success": "Descarregado", "image_viewer_page_state_provider_download_success": "Descarregado",
"image_viewer_page_state_provider_share_error": "Erro ao partilhar", "image_viewer_page_state_provider_share_error": "Erro ao partilhar",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Álbuns", "library_page_albums": "Álbuns",
"library_page_archive": "Arquivo", "library_page_archive": "Arquivo",
"library_page_device_albums": "Álbuns no dispositivo", "library_page_device_albums": "Álbuns no dispositivo",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Não é possível editar a data de recurso(s) só de leitura, ignorando", "multiselect_grid_edit_date_time_err_read_only": "Não é possível editar a data de recurso(s) só de leitura, ignorando",
"multiselect_grid_edit_gps_err_read_only": "Não é possível editar a localização de recurso(s) só de leitura, ignorando", "multiselect_grid_edit_gps_err_read_only": "Não é possível editar a localização de recurso(s) só de leitura, ignorando",
"no_assets_to_show": "No assets to show", "no_assets_to_show": "No assets to show",
"no_name": "No name",
"notification_permission_dialog_cancel": "Cancelar", "notification_permission_dialog_cancel": "Cancelar",
"notification_permission_dialog_content": "Para ativar as notificações, vá a Definições e selecione permitir.", "notification_permission_dialog_content": "Para ativar as notificações, vá a Definições e selecione permitir.",
"notification_permission_dialog_settings": "Definições", "notification_permission_dialog_settings": "Definições",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Ocorreu um erro", "scaffold_body_error_occurred": "Ocorreu um erro",
"search_bar_hint": "Busque suas fotos", "search_bar_hint": "Busque suas fotos",
"search_filter_apply": "Apply filter", "search_filter_apply": "Apply filter",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Make", "search_filter_camera_make": "Make",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archive", "search_filter_display_option_archive": "Archive",
"search_filter_display_option_favorite": "Favorite", "search_filter_display_option_favorite": "Favorite",
"search_filter_display_option_not_in_album": "Not in album", "search_filter_display_option_not_in_album": "Not in album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "City", "search_filter_location_city": "City",
"search_filter_location_country": "Country", "search_filter_location_country": "Country",
"search_filter_location_state": "State", "search_filter_location_state": "State",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "All", "search_filter_media_type_all": "All",
"search_filter_media_type_image": "Image", "search_filter_media_type_image": "Image",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Categorias", "search_page_categories": "Categorias",
"search_page_favorites": "Favoritos", "search_page_favorites": "Favoritos",
"search_page_motion_photos": "Fotos com movimento", "search_page_motion_photos": "Fotos com movimento",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Anulează", "action_common_cancel": "Anulează",
"action_common_clear": "Clear", "action_common_clear": "Clear",
"action_common_confirm": "Confirm", "action_common_confirm": "Confirm",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Actualizează", "action_common_update": "Actualizează",
"add_to_album_bottom_sheet_added": "Adăugat în {album}", "add_to_album_bottom_sheet_added": "Adăugat în {album}",
"add_to_album_bottom_sheet_already_exists": "Deja în {album}", "add_to_album_bottom_sheet_already_exists": "Deja în {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Parolă nouă", "change_password_form_new_password": "Parolă nouă",
"change_password_form_password_mismatch": "Parolele nu se potrivesc", "change_password_form_password_mismatch": "Parolele nu se potrivesc",
"change_password_form_reenter_new_password": "Reintrodu noua parolă", "change_password_form_reenter_new_password": "Reintrodu noua parolă",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Adaugă în album", "common_add_to_album": "Adaugă în album",
"common_change_password": "Schimbă parola", "common_change_password": "Schimbă parola",
"common_create_new_album": "Creează album nou", "common_create_new_album": "Creează album nou",
"common_server_error": "Te rugăm să verifici conexiunea la rețea, asigura-te că server-ul este accesibil și că versiunile aplicației/server-ului sunt compatibile.", "common_server_error": "Te rugăm să verifici conexiunea la rețea, asigura-te că server-ul este accesibil și că versiunile aplicației/server-ului sunt compatibile.",
"common_shared": "Distribuit", "common_shared": "Distribuit",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Adaugă în album", "control_bottom_app_bar_add_to_album": "Adaugă în album",
"control_bottom_app_bar_album_info": "{} elemente", "control_bottom_app_bar_album_info": "{} elemente",
"control_bottom_app_bar_album_info_shared": "{} elemente · Distribuite", "control_bottom_app_bar_album_info_shared": "{} elemente · Distribuite",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Șterge", "control_bottom_app_bar_delete": "Șterge",
"control_bottom_app_bar_delete_from_immich": "Șterge din Immich", "control_bottom_app_bar_delete_from_immich": "Șterge din Immich",
"control_bottom_app_bar_delete_from_local": "Șterge din dispozitiv", "control_bottom_app_bar_delete_from_local": "Șterge din dispozitiv",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Editează locație", "control_bottom_app_bar_edit_location": "Editează locație",
"control_bottom_app_bar_edit_time": "Editează Data și Ora", "control_bottom_app_bar_edit_time": "Editează Data și Ora",
"control_bottom_app_bar_favorite": "Favorite", "control_bottom_app_bar_favorite": "Favorite",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Experimental", "experimental_settings_title": "Experimental",
"favorites_page_no_favorites": "Nu au fost găsite resurse favorite", "favorites_page_no_favorites": "Nu au fost găsite resurse favorite",
"favorites_page_title": "Favorite", "favorites_page_title": "Favorite",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Enable haptic feedback", "haptic_feedback_switch": "Enable haptic feedback",
"haptic_feedback_title": "Haptic Feedback", "haptic_feedback_title": "Haptic Feedback",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Download Started", "image_viewer_page_state_provider_download_started": "Download Started",
"image_viewer_page_state_provider_download_success": "Descărcare cu succes", "image_viewer_page_state_provider_download_success": "Descărcare cu succes",
"image_viewer_page_state_provider_share_error": "Eroare distribuire", "image_viewer_page_state_provider_share_error": "Eroare distribuire",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albume", "library_page_albums": "Albume",
"library_page_archive": "Arhivă", "library_page_archive": "Arhivă",
"library_page_device_albums": "Albume în dispozitiv", "library_page_device_albums": "Albume în dispozitiv",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Nu se poate edita data fișierului(lor) cu permisiuni doar pentru citire, omitere", "multiselect_grid_edit_date_time_err_read_only": "Nu se poate edita data fișierului(lor) cu permisiuni doar pentru citire, omitere",
"multiselect_grid_edit_gps_err_read_only": "Nu se poate edita locația fișierului(lor) cu permisiuni doar pentru citire, omitere", "multiselect_grid_edit_gps_err_read_only": "Nu se poate edita locația fișierului(lor) cu permisiuni doar pentru citire, omitere",
"no_assets_to_show": "No assets to show", "no_assets_to_show": "No assets to show",
"no_name": "No name",
"notification_permission_dialog_cancel": "Anulează", "notification_permission_dialog_cancel": "Anulează",
"notification_permission_dialog_content": "Pentru a activa notificările, mergi în Setări > Immich și selectează permite.", "notification_permission_dialog_content": "Pentru a activa notificările, mergi în Setări > Immich și selectează permite.",
"notification_permission_dialog_settings": "Setări", "notification_permission_dialog_settings": "Setări",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "A apărut o eroare", "scaffold_body_error_occurred": "A apărut o eroare",
"search_bar_hint": "Căutare fotografii", "search_bar_hint": "Căutare fotografii",
"search_filter_apply": "Apply filter", "search_filter_apply": "Apply filter",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Make", "search_filter_camera_make": "Make",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archive", "search_filter_display_option_archive": "Archive",
"search_filter_display_option_favorite": "Favorite", "search_filter_display_option_favorite": "Favorite",
"search_filter_display_option_not_in_album": "Not in album", "search_filter_display_option_not_in_album": "Not in album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "City", "search_filter_location_city": "City",
"search_filter_location_country": "Country", "search_filter_location_country": "Country",
"search_filter_location_state": "State", "search_filter_location_state": "State",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "All", "search_filter_media_type_all": "All",
"search_filter_media_type_image": "Image", "search_filter_media_type_image": "Image",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Categorii", "search_page_categories": "Categorii",
"search_page_favorites": "Favorite", "search_page_favorites": "Favorite",
"search_page_motion_photos": "Fotografii în mișcare", "search_page_motion_photos": "Fotografii în mișcare",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Отмена", "action_common_cancel": "Отмена",
"action_common_clear": "Очистить", "action_common_clear": "Очистить",
"action_common_confirm": "Подтвердить", "action_common_confirm": "Подтвердить",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Обновить", "action_common_update": "Обновить",
"add_to_album_bottom_sheet_added": "Добавлено в {album}", "add_to_album_bottom_sheet_added": "Добавлено в {album}",
"add_to_album_bottom_sheet_already_exists": "Уже в {album}", "add_to_album_bottom_sheet_already_exists": "Уже в {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Новый пароль", "change_password_form_new_password": "Новый пароль",
"change_password_form_password_mismatch": "Пароли не совпадают", "change_password_form_password_mismatch": "Пароли не совпадают",
"change_password_form_reenter_new_password": "Повторно введите новый пароль", "change_password_form_reenter_new_password": "Повторно введите новый пароль",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Добавить в альбом", "common_add_to_album": "Добавить в альбом",
"common_change_password": "Изменить пароль", "common_change_password": "Изменить пароль",
"common_create_new_album": "Создать новый альбом", "common_create_new_album": "Создать новый альбом",
"common_server_error": "Пожалуйста, проверьте подключение к сети и убедитесь, что ваш сервер доступен, а версии приложения и сервера — совместимы.", "common_server_error": "Пожалуйста, проверьте подключение к сети и убедитесь, что ваш сервер доступен, а версии приложения и сервера — совместимы.",
"common_shared": "Общие", "common_shared": "Общие",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Добавить в альбом", "control_bottom_app_bar_add_to_album": "Добавить в альбом",
"control_bottom_app_bar_album_info": "{} файлов", "control_bottom_app_bar_album_info": "{} файлов",
"control_bottom_app_bar_album_info_shared": "{} файлов · Общий", "control_bottom_app_bar_album_info_shared": "{} файлов · Общий",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Удалить", "control_bottom_app_bar_delete": "Удалить",
"control_bottom_app_bar_delete_from_immich": "Удалить из Immich\n", "control_bottom_app_bar_delete_from_immich": "Удалить из Immich\n",
"control_bottom_app_bar_delete_from_local": "Удалить с устройства", "control_bottom_app_bar_delete_from_local": "Удалить с устройства",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Редактировать местоположение", "control_bottom_app_bar_edit_location": "Редактировать местоположение",
"control_bottom_app_bar_edit_time": "Редактировать дату и время", "control_bottom_app_bar_edit_time": "Редактировать дату и время",
"control_bottom_app_bar_favorite": "В избранное", "control_bottom_app_bar_favorite": "В избранное",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Экспериментальные функции", "experimental_settings_title": "Экспериментальные функции",
"favorites_page_no_favorites": "В избранном сейчас пусто", "favorites_page_no_favorites": "В избранном сейчас пусто",
"favorites_page_title": "Избранное", "favorites_page_title": "Избранное",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Включить тактильную отдачу", "haptic_feedback_switch": "Включить тактильную отдачу",
"haptic_feedback_title": "Тактильная отдача", "haptic_feedback_title": "Тактильная отдача",
"header_settings_add_header_tip": "Добавить заголовок", "header_settings_add_header_tip": "Добавить заголовок",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Загрузка началась", "image_viewer_page_state_provider_download_started": "Загрузка началась",
"image_viewer_page_state_provider_download_success": "Успешно загружено", "image_viewer_page_state_provider_download_success": "Успешно загружено",
"image_viewer_page_state_provider_share_error": "Ошибка общего доступа", "image_viewer_page_state_provider_share_error": "Ошибка общего доступа",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Альбомы", "library_page_albums": "Альбомы",
"library_page_archive": "Архив", "library_page_archive": "Архив",
"library_page_device_albums": "Альбомы на устройстве", "library_page_device_albums": "Альбомы на устройстве",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Невозможно редактировать дату объектов только для чтения, пропуск...", "multiselect_grid_edit_date_time_err_read_only": "Невозможно редактировать дату объектов только для чтения, пропуск...",
"multiselect_grid_edit_gps_err_read_only": "Невозможно редактировать местоположение объектов только для чтения, пропуск...", "multiselect_grid_edit_gps_err_read_only": "Невозможно редактировать местоположение объектов только для чтения, пропуск...",
"no_assets_to_show": "Объекты отсутствуют", "no_assets_to_show": "Объекты отсутствуют",
"no_name": "No name",
"notification_permission_dialog_cancel": "Отмена", "notification_permission_dialog_cancel": "Отмена",
"notification_permission_dialog_content": "Чтобы включить уведомления, перейдите в «Настройки» и выберите «Разрешить».", "notification_permission_dialog_content": "Чтобы включить уведомления, перейдите в «Настройки» и выберите «Разрешить».",
"notification_permission_dialog_settings": "Настройки", "notification_permission_dialog_settings": "Настройки",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Возникла ошибка", "scaffold_body_error_occurred": "Возникла ошибка",
"search_bar_hint": "Поиск фотографий", "search_bar_hint": "Поиск фотографий",
"search_filter_apply": "Применить фильтр", "search_filter_apply": "Применить фильтр",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Производитель", "search_filter_camera_make": "Производитель",
"search_filter_camera_model": "Модель", "search_filter_camera_model": "Модель",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Архив", "search_filter_display_option_archive": "Архив",
"search_filter_display_option_favorite": "Избранное", "search_filter_display_option_favorite": "Избранное",
"search_filter_display_option_not_in_album": "Не в альбоме", "search_filter_display_option_not_in_album": "Не в альбоме",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "Город", "search_filter_location_city": "Город",
"search_filter_location_country": "Страна", "search_filter_location_country": "Страна",
"search_filter_location_state": "Регион", "search_filter_location_state": "Регион",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "Все", "search_filter_media_type_all": "Все",
"search_filter_media_type_image": "Изображения", "search_filter_media_type_image": "Изображения",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Видео", "search_filter_media_type_video": "Видео",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Категории", "search_page_categories": "Категории",
"search_page_favorites": "Избранное", "search_page_favorites": "Избранное",
"search_page_motion_photos": "Динамические фото", "search_page_motion_photos": "Динамические фото",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Zrušiť", "action_common_cancel": "Zrušiť",
"action_common_clear": "Vyčistiť", "action_common_clear": "Vyčistiť",
"action_common_confirm": "Potvrdiť", "action_common_confirm": "Potvrdiť",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Aktualizovať", "action_common_update": "Aktualizovať",
"add_to_album_bottom_sheet_added": "Pridané do {album}", "add_to_album_bottom_sheet_added": "Pridané do {album}",
"add_to_album_bottom_sheet_already_exists": "Už v {album}", "add_to_album_bottom_sheet_already_exists": "Už v {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Nové heslo", "change_password_form_new_password": "Nové heslo",
"change_password_form_password_mismatch": "Heslá sa nezhodujú", "change_password_form_password_mismatch": "Heslá sa nezhodujú",
"change_password_form_reenter_new_password": "Znova zadajte nové heslo", "change_password_form_reenter_new_password": "Znova zadajte nové heslo",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Pridať do albumu", "common_add_to_album": "Pridať do albumu",
"common_change_password": "Zmeniť heslo", "common_change_password": "Zmeniť heslo",
"common_create_new_album": "Vytvoriť nový album", "common_create_new_album": "Vytvoriť nový album",
"common_server_error": "Skontrolujte svoje sieťové pripojenie, uistite sa, že server je dostupný a verzie aplikácie/server sú kompatibilné.", "common_server_error": "Skontrolujte svoje sieťové pripojenie, uistite sa, že server je dostupný a verzie aplikácie/server sú kompatibilné.",
"common_shared": "Zdieľané", "common_shared": "Zdieľané",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Pridať do albumu", "control_bottom_app_bar_add_to_album": "Pridať do albumu",
"control_bottom_app_bar_album_info": "{} položiek", "control_bottom_app_bar_album_info": "{} položiek",
"control_bottom_app_bar_album_info_shared": "{} položiek - zdieľané", "control_bottom_app_bar_album_info_shared": "{} položiek - zdieľané",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Vymazať", "control_bottom_app_bar_delete": "Vymazať",
"control_bottom_app_bar_delete_from_immich": "Vymazať z Immichu", "control_bottom_app_bar_delete_from_immich": "Vymazať z Immichu",
"control_bottom_app_bar_delete_from_local": "Vymazať zo zariadenia", "control_bottom_app_bar_delete_from_local": "Vymazať zo zariadenia",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Upraviť polohu", "control_bottom_app_bar_edit_location": "Upraviť polohu",
"control_bottom_app_bar_edit_time": "Upraviť dátum a čas", "control_bottom_app_bar_edit_time": "Upraviť dátum a čas",
"control_bottom_app_bar_favorite": "Obľúbené", "control_bottom_app_bar_favorite": "Obľúbené",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Experimentálne", "experimental_settings_title": "Experimentálne",
"favorites_page_no_favorites": "Žiadne obľúbené médiá", "favorites_page_no_favorites": "Žiadne obľúbené médiá",
"favorites_page_title": "Obľúbené", "favorites_page_title": "Obľúbené",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Povoliť hmatovú odozvu", "haptic_feedback_switch": "Povoliť hmatovú odozvu",
"haptic_feedback_title": "Hmatová odozva", "haptic_feedback_title": "Hmatová odozva",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Sťahovanie sa začalo", "image_viewer_page_state_provider_download_started": "Sťahovanie sa začalo",
"image_viewer_page_state_provider_download_success": "Sťahovanie bolo úspešné", "image_viewer_page_state_provider_download_success": "Sťahovanie bolo úspešné",
"image_viewer_page_state_provider_share_error": "Chyba zdieľania", "image_viewer_page_state_provider_share_error": "Chyba zdieľania",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albumy", "library_page_albums": "Albumy",
"library_page_archive": "Archív", "library_page_archive": "Archív",
"library_page_device_albums": "Albumy v zariadení", "library_page_device_albums": "Albumy v zariadení",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Nemožno upraviť dátum položky len na čítanie, preskakujem", "multiselect_grid_edit_date_time_err_read_only": "Nemožno upraviť dátum položky len na čítanie, preskakujem",
"multiselect_grid_edit_gps_err_read_only": "Nemožno upraviť polohu položky len na čítanie, preskakujem", "multiselect_grid_edit_gps_err_read_only": "Nemožno upraviť polohu položky len na čítanie, preskakujem",
"no_assets_to_show": "Žiadne položky", "no_assets_to_show": "Žiadne položky",
"no_name": "No name",
"notification_permission_dialog_cancel": "Zrušiť", "notification_permission_dialog_cancel": "Zrušiť",
"notification_permission_dialog_content": "Ak chcete povoliť upozornenia, prejdite do Nastavenia a vyberte možnosť Povoliť.", "notification_permission_dialog_content": "Ak chcete povoliť upozornenia, prejdite do Nastavenia a vyberte možnosť Povoliť.",
"notification_permission_dialog_settings": "Nastavenia", "notification_permission_dialog_settings": "Nastavenia",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Vyskytla sa chyba", "scaffold_body_error_occurred": "Vyskytla sa chyba",
"search_bar_hint": "Prehľadajte svoje obrázky", "search_bar_hint": "Prehľadajte svoje obrázky",
"search_filter_apply": "Použiť filter", "search_filter_apply": "Použiť filter",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Spraviť", "search_filter_camera_make": "Spraviť",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archív", "search_filter_display_option_archive": "Archív",
"search_filter_display_option_favorite": "Obľúbené", "search_filter_display_option_favorite": "Obľúbené",
"search_filter_display_option_not_in_album": "Mimo albumu", "search_filter_display_option_not_in_album": "Mimo albumu",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "Mesto", "search_filter_location_city": "Mesto",
"search_filter_location_country": "Oblasť", "search_filter_location_country": "Oblasť",
"search_filter_location_state": "Štát", "search_filter_location_state": "Štát",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "Všetky", "search_filter_media_type_all": "Všetky",
"search_filter_media_type_image": "Obrázok", "search_filter_media_type_image": "Obrázok",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Kategórie", "search_page_categories": "Kategórie",
"search_page_favorites": "Obľúbené", "search_page_favorites": "Obľúbené",
"search_page_motion_photos": "Pohyblivé fotky", "search_page_motion_photos": "Pohyblivé fotky",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Prekliči", "action_common_cancel": "Prekliči",
"action_common_clear": "Počisti", "action_common_clear": "Počisti",
"action_common_confirm": "Potrdi", "action_common_confirm": "Potrdi",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Posodobi", "action_common_update": "Posodobi",
"add_to_album_bottom_sheet_added": "Dodano v {album}", "add_to_album_bottom_sheet_added": "Dodano v {album}",
"add_to_album_bottom_sheet_already_exists": "Že v {albumu}", "add_to_album_bottom_sheet_already_exists": "Že v {albumu}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Novo geslo", "change_password_form_new_password": "Novo geslo",
"change_password_form_password_mismatch": "Gesli se ne ujemata", "change_password_form_password_mismatch": "Gesli se ne ujemata",
"change_password_form_reenter_new_password": "Znova vnesi novo geslo", "change_password_form_reenter_new_password": "Znova vnesi novo geslo",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Dodaj v album", "common_add_to_album": "Dodaj v album",
"common_change_password": "Zamenjaj geslo", "common_change_password": "Zamenjaj geslo",
"common_create_new_album": "Ustvari nov album", "common_create_new_album": "Ustvari nov album",
"common_server_error": "Preverite omrežno povezavo, preverite, ali je strežnik dosegljiv in ali sta različici aplikacije/strežnika združljivi.", "common_server_error": "Preverite omrežno povezavo, preverite, ali je strežnik dosegljiv in ali sta različici aplikacije/strežnika združljivi.",
"common_shared": "V skupni rabi", "common_shared": "V skupni rabi",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Dodaj v album", "control_bottom_app_bar_add_to_album": "Dodaj v album",
"control_bottom_app_bar_album_info": "{} elementov", "control_bottom_app_bar_album_info": "{} elementov",
"control_bottom_app_bar_album_info_shared": "{} elementov · V skupni rabi", "control_bottom_app_bar_album_info_shared": "{} elementov · V skupni rabi",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Izbriši", "control_bottom_app_bar_delete": "Izbriši",
"control_bottom_app_bar_delete_from_immich": "Izbriši iz Immicha", "control_bottom_app_bar_delete_from_immich": "Izbriši iz Immicha",
"control_bottom_app_bar_delete_from_local": "Izbriši iz naprave", "control_bottom_app_bar_delete_from_local": "Izbriši iz naprave",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Uredi lokacijo", "control_bottom_app_bar_edit_location": "Uredi lokacijo",
"control_bottom_app_bar_edit_time": "Uredi datum in uro", "control_bottom_app_bar_edit_time": "Uredi datum in uro",
"control_bottom_app_bar_favorite": "Priljubljen", "control_bottom_app_bar_favorite": "Priljubljen",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Eksperimentalno", "experimental_settings_title": "Eksperimentalno",
"favorites_page_no_favorites": "Ni priljubljenih sredstev", "favorites_page_no_favorites": "Ni priljubljenih sredstev",
"favorites_page_title": "Priljubljene", "favorites_page_title": "Priljubljene",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Uporabi haptičen odziv", "haptic_feedback_switch": "Uporabi haptičen odziv",
"haptic_feedback_title": "Haptičen odziv", "haptic_feedback_title": "Haptičen odziv",
"header_settings_add_header_tip": "Dodaj glavo", "header_settings_add_header_tip": "Dodaj glavo",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Prenos se je začel", "image_viewer_page_state_provider_download_started": "Prenos se je začel",
"image_viewer_page_state_provider_download_success": "Prenos je uspel", "image_viewer_page_state_provider_download_success": "Prenos je uspel",
"image_viewer_page_state_provider_share_error": "Napaka skupne rabe", "image_viewer_page_state_provider_share_error": "Napaka skupne rabe",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albumi", "library_page_albums": "Albumi",
"library_page_archive": "Arhiv", "library_page_archive": "Arhiv",
"library_page_device_albums": "Albumi v napravi", "library_page_device_albums": "Albumi v napravi",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Ni mogoče urediti datuma sredstev samo za branje, preskočim", "multiselect_grid_edit_date_time_err_read_only": "Ni mogoče urediti datuma sredstev samo za branje, preskočim",
"multiselect_grid_edit_gps_err_read_only": "Ni mogoče urediti lokacije sredstev samo za branje, preskočim", "multiselect_grid_edit_gps_err_read_only": "Ni mogoče urediti lokacije sredstev samo za branje, preskočim",
"no_assets_to_show": "Ni sredstev za prikaz", "no_assets_to_show": "Ni sredstev za prikaz",
"no_name": "No name",
"notification_permission_dialog_cancel": "Prekliči", "notification_permission_dialog_cancel": "Prekliči",
"notification_permission_dialog_content": "Če želite omogočiti obvestila, pojdite v Nastavitve in izberite Dovoli.", "notification_permission_dialog_content": "Če želite omogočiti obvestila, pojdite v Nastavitve in izberite Dovoli.",
"notification_permission_dialog_settings": "Nastavitve", "notification_permission_dialog_settings": "Nastavitve",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Prišlo je do napake", "scaffold_body_error_occurred": "Prišlo je do napake",
"search_bar_hint": "Poišči svoje fotografije", "search_bar_hint": "Poišči svoje fotografije",
"search_filter_apply": "Uporabi filter", "search_filter_apply": "Uporabi filter",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Izdelava", "search_filter_camera_make": "Izdelava",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Arhiv", "search_filter_display_option_archive": "Arhiv",
"search_filter_display_option_favorite": "Priljubljen", "search_filter_display_option_favorite": "Priljubljen",
"search_filter_display_option_not_in_album": "Ni v albumu", "search_filter_display_option_not_in_album": "Ni v albumu",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "Mesto", "search_filter_location_city": "Mesto",
"search_filter_location_country": "Država", "search_filter_location_country": "Država",
"search_filter_location_state": "Dežela", "search_filter_location_state": "Dežela",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "Vse", "search_filter_media_type_all": "Vse",
"search_filter_media_type_image": "Slika", "search_filter_media_type_image": "Slika",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Kategorije", "search_page_categories": "Kategorije",
"search_page_favorites": "Priljubljene", "search_page_favorites": "Priljubljene",
"search_page_motion_photos": "Fotografije v gibanju", "search_page_motion_photos": "Fotografije v gibanju",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Cancel", "action_common_cancel": "Cancel",
"action_common_clear": "Clear", "action_common_clear": "Clear",
"action_common_confirm": "Confirm", "action_common_confirm": "Confirm",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Update", "action_common_update": "Update",
"add_to_album_bottom_sheet_added": "Added to {album}", "add_to_album_bottom_sheet_added": "Added to {album}",
"add_to_album_bottom_sheet_already_exists": "Already in {album}", "add_to_album_bottom_sheet_already_exists": "Already in {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "New Password", "change_password_form_new_password": "New Password",
"change_password_form_password_mismatch": "Passwords do not match", "change_password_form_password_mismatch": "Passwords do not match",
"change_password_form_reenter_new_password": "Re-enter New Password", "change_password_form_reenter_new_password": "Re-enter New Password",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Add to album", "common_add_to_album": "Add to album",
"common_change_password": "Change Password", "common_change_password": "Change Password",
"common_create_new_album": "Create new album", "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.", "common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.",
"common_shared": "Shared", "common_shared": "Shared",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Add to album", "control_bottom_app_bar_add_to_album": "Add to album",
"control_bottom_app_bar_album_info": "{} items", "control_bottom_app_bar_album_info": "{} items",
"control_bottom_app_bar_album_info_shared": "{} items · Shared", "control_bottom_app_bar_album_info_shared": "{} items · Shared",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Delete", "control_bottom_app_bar_delete": "Delete",
"control_bottom_app_bar_delete_from_immich": "Delete from Immich", "control_bottom_app_bar_delete_from_immich": "Delete from Immich",
"control_bottom_app_bar_delete_from_local": "Delete from device", "control_bottom_app_bar_delete_from_local": "Delete from device",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Edit Location", "control_bottom_app_bar_edit_location": "Edit Location",
"control_bottom_app_bar_edit_time": "Edit Date & Time", "control_bottom_app_bar_edit_time": "Edit Date & Time",
"control_bottom_app_bar_favorite": "Favorite", "control_bottom_app_bar_favorite": "Favorite",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Experimental", "experimental_settings_title": "Experimental",
"favorites_page_no_favorites": "No favorite assets found", "favorites_page_no_favorites": "No favorite assets found",
"favorites_page_title": "Favorites", "favorites_page_title": "Favorites",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Enable haptic feedback", "haptic_feedback_switch": "Enable haptic feedback",
"haptic_feedback_title": "Haptic Feedback", "haptic_feedback_title": "Haptic Feedback",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Download Started", "image_viewer_page_state_provider_download_started": "Download Started",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_success": "Download Success",
"image_viewer_page_state_provider_share_error": "Share Error", "image_viewer_page_state_provider_share_error": "Share Error",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albums", "library_page_albums": "Albums",
"library_page_archive": "Archive", "library_page_archive": "Archive",
"library_page_device_albums": "Albums on Device", "library_page_device_albums": "Albums on Device",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping", "multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping",
"multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping", "multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping",
"no_assets_to_show": "No assets to show", "no_assets_to_show": "No assets to show",
"no_name": "No name",
"notification_permission_dialog_cancel": "Cancel", "notification_permission_dialog_cancel": "Cancel",
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.", "notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
"notification_permission_dialog_settings": "Settings", "notification_permission_dialog_settings": "Settings",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Error occurred", "scaffold_body_error_occurred": "Error occurred",
"search_bar_hint": "Search your photos", "search_bar_hint": "Search your photos",
"search_filter_apply": "Apply filter", "search_filter_apply": "Apply filter",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Make", "search_filter_camera_make": "Make",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archive", "search_filter_display_option_archive": "Archive",
"search_filter_display_option_favorite": "Favorite", "search_filter_display_option_favorite": "Favorite",
"search_filter_display_option_not_in_album": "Not in album", "search_filter_display_option_not_in_album": "Not in album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "City", "search_filter_location_city": "City",
"search_filter_location_country": "Country", "search_filter_location_country": "Country",
"search_filter_location_state": "State", "search_filter_location_state": "State",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "All", "search_filter_media_type_all": "All",
"search_filter_media_type_image": "Image", "search_filter_media_type_image": "Image",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Categories", "search_page_categories": "Categories",
"search_page_favorites": "Favorites", "search_page_favorites": "Favorites",
"search_page_motion_photos": "Motion Photos", "search_page_motion_photos": "Motion Photos",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Cancel", "action_common_cancel": "Cancel",
"action_common_clear": "Clear", "action_common_clear": "Clear",
"action_common_confirm": "Confirm", "action_common_confirm": "Confirm",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Update", "action_common_update": "Update",
"add_to_album_bottom_sheet_added": "Dodato u {album}", "add_to_album_bottom_sheet_added": "Dodato u {album}",
"add_to_album_bottom_sheet_already_exists": "Već u {album}", "add_to_album_bottom_sheet_already_exists": "Već u {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Nova šifra", "change_password_form_new_password": "Nova šifra",
"change_password_form_password_mismatch": "Šifre se ne podudaraju", "change_password_form_password_mismatch": "Šifre se ne podudaraju",
"change_password_form_reenter_new_password": "Ponovo unesite novu šifru", "change_password_form_reenter_new_password": "Ponovo unesite novu šifru",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Dodaj u album", "common_add_to_album": "Dodaj u album",
"common_change_password": "Promeni Šifru", "common_change_password": "Promeni Šifru",
"common_create_new_album": "Kreiraj novi album", "common_create_new_album": "Kreiraj novi album",
"common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.", "common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.",
"common_shared": "Deljeno", "common_shared": "Deljeno",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Dodaj u album", "control_bottom_app_bar_add_to_album": "Dodaj u album",
"control_bottom_app_bar_album_info": "{} stvari", "control_bottom_app_bar_album_info": "{} stvari",
"control_bottom_app_bar_album_info_shared": "{} stvari podeljeno", "control_bottom_app_bar_album_info_shared": "{} stvari podeljeno",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Obriši", "control_bottom_app_bar_delete": "Obriši",
"control_bottom_app_bar_delete_from_immich": "Delete from Immich", "control_bottom_app_bar_delete_from_immich": "Delete from Immich",
"control_bottom_app_bar_delete_from_local": "Delete from device", "control_bottom_app_bar_delete_from_local": "Delete from device",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Edit Location", "control_bottom_app_bar_edit_location": "Edit Location",
"control_bottom_app_bar_edit_time": "Edit Date & Time", "control_bottom_app_bar_edit_time": "Edit Date & Time",
"control_bottom_app_bar_favorite": "Omliljeno", "control_bottom_app_bar_favorite": "Omliljeno",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Eksperimentalno", "experimental_settings_title": "Eksperimentalno",
"favorites_page_no_favorites": "No favorite assets found", "favorites_page_no_favorites": "No favorite assets found",
"favorites_page_title": "Omiljeno", "favorites_page_title": "Omiljeno",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Enable haptic feedback", "haptic_feedback_switch": "Enable haptic feedback",
"haptic_feedback_title": "Haptic Feedback", "haptic_feedback_title": "Haptic Feedback",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Download Started", "image_viewer_page_state_provider_download_started": "Download Started",
"image_viewer_page_state_provider_download_success": "Preuzimanje Uspešno", "image_viewer_page_state_provider_download_success": "Preuzimanje Uspešno",
"image_viewer_page_state_provider_share_error": "Share Error", "image_viewer_page_state_provider_share_error": "Share Error",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albumi", "library_page_albums": "Albumi",
"library_page_archive": "Archive", "library_page_archive": "Archive",
"library_page_device_albums": "Albums on Device", "library_page_device_albums": "Albums on Device",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping", "multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping",
"multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping", "multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping",
"no_assets_to_show": "No assets to show", "no_assets_to_show": "No assets to show",
"no_name": "No name",
"notification_permission_dialog_cancel": "Odustani", "notification_permission_dialog_cancel": "Odustani",
"notification_permission_dialog_content": "Da bi ukljucili notifikacije, idite u Opcije i odaberite Dozvoli", "notification_permission_dialog_content": "Da bi ukljucili notifikacije, idite u Opcije i odaberite Dozvoli",
"notification_permission_dialog_settings": "Podešavanja", "notification_permission_dialog_settings": "Podešavanja",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Error occurred", "scaffold_body_error_occurred": "Error occurred",
"search_bar_hint": "Pretražite Vaše fotografije", "search_bar_hint": "Pretražite Vaše fotografije",
"search_filter_apply": "Apply filter", "search_filter_apply": "Apply filter",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Make", "search_filter_camera_make": "Make",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archive", "search_filter_display_option_archive": "Archive",
"search_filter_display_option_favorite": "Favorite", "search_filter_display_option_favorite": "Favorite",
"search_filter_display_option_not_in_album": "Not in album", "search_filter_display_option_not_in_album": "Not in album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "City", "search_filter_location_city": "City",
"search_filter_location_country": "Country", "search_filter_location_country": "Country",
"search_filter_location_state": "State", "search_filter_location_state": "State",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "All", "search_filter_media_type_all": "All",
"search_filter_media_type_image": "Image", "search_filter_media_type_image": "Image",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Categories", "search_page_categories": "Categories",
"search_page_favorites": "Favorites", "search_page_favorites": "Favorites",
"search_page_motion_photos": "Motion Photos", "search_page_motion_photos": "Motion Photos",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Cancel", "action_common_cancel": "Cancel",
"action_common_clear": "Clear", "action_common_clear": "Clear",
"action_common_confirm": "Confirm", "action_common_confirm": "Confirm",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Update", "action_common_update": "Update",
"add_to_album_bottom_sheet_added": "Added to {album}", "add_to_album_bottom_sheet_added": "Added to {album}",
"add_to_album_bottom_sheet_already_exists": "Already in {album}", "add_to_album_bottom_sheet_already_exists": "Already in {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "New Password", "change_password_form_new_password": "New Password",
"change_password_form_password_mismatch": "Passwords do not match", "change_password_form_password_mismatch": "Passwords do not match",
"change_password_form_reenter_new_password": "Re-enter New Password", "change_password_form_reenter_new_password": "Re-enter New Password",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Add to album", "common_add_to_album": "Add to album",
"common_change_password": "Change Password", "common_change_password": "Change Password",
"common_create_new_album": "Create new album", "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.", "common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.",
"common_shared": "Shared", "common_shared": "Shared",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Add to album", "control_bottom_app_bar_add_to_album": "Add to album",
"control_bottom_app_bar_album_info": "{} items", "control_bottom_app_bar_album_info": "{} items",
"control_bottom_app_bar_album_info_shared": "{} items · Shared", "control_bottom_app_bar_album_info_shared": "{} items · Shared",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Delete", "control_bottom_app_bar_delete": "Delete",
"control_bottom_app_bar_delete_from_immich": "Delete from Immich", "control_bottom_app_bar_delete_from_immich": "Delete from Immich",
"control_bottom_app_bar_delete_from_local": "Delete from device", "control_bottom_app_bar_delete_from_local": "Delete from device",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Edit Location", "control_bottom_app_bar_edit_location": "Edit Location",
"control_bottom_app_bar_edit_time": "Edit Date & Time", "control_bottom_app_bar_edit_time": "Edit Date & Time",
"control_bottom_app_bar_favorite": "Favorite", "control_bottom_app_bar_favorite": "Favorite",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Experimental", "experimental_settings_title": "Experimental",
"favorites_page_no_favorites": "No favorite assets found", "favorites_page_no_favorites": "No favorite assets found",
"favorites_page_title": "Favorites", "favorites_page_title": "Favorites",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Enable haptic feedback", "haptic_feedback_switch": "Enable haptic feedback",
"haptic_feedback_title": "Haptic Feedback", "haptic_feedback_title": "Haptic Feedback",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Download Started", "image_viewer_page_state_provider_download_started": "Download Started",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_success": "Download Success",
"image_viewer_page_state_provider_share_error": "Share Error", "image_viewer_page_state_provider_share_error": "Share Error",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albums", "library_page_albums": "Albums",
"library_page_archive": "Archive", "library_page_archive": "Archive",
"library_page_device_albums": "Albums on Device", "library_page_device_albums": "Albums on Device",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping", "multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping",
"multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping", "multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping",
"no_assets_to_show": "No assets to show", "no_assets_to_show": "No assets to show",
"no_name": "No name",
"notification_permission_dialog_cancel": "Cancel", "notification_permission_dialog_cancel": "Cancel",
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.", "notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
"notification_permission_dialog_settings": "Settings", "notification_permission_dialog_settings": "Settings",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Error occurred", "scaffold_body_error_occurred": "Error occurred",
"search_bar_hint": "Search your photos", "search_bar_hint": "Search your photos",
"search_filter_apply": "Apply filter", "search_filter_apply": "Apply filter",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Make", "search_filter_camera_make": "Make",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archive", "search_filter_display_option_archive": "Archive",
"search_filter_display_option_favorite": "Favorite", "search_filter_display_option_favorite": "Favorite",
"search_filter_display_option_not_in_album": "Not in album", "search_filter_display_option_not_in_album": "Not in album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "City", "search_filter_location_city": "City",
"search_filter_location_country": "Country", "search_filter_location_country": "Country",
"search_filter_location_state": "State", "search_filter_location_state": "State",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "All", "search_filter_media_type_all": "All",
"search_filter_media_type_image": "Image", "search_filter_media_type_image": "Image",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Categories", "search_page_categories": "Categories",
"search_page_favorites": "Favorites", "search_page_favorites": "Favorites",
"search_page_motion_photos": "Motion Photos", "search_page_motion_photos": "Motion Photos",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Avbryt", "action_common_cancel": "Avbryt",
"action_common_clear": "Rensa", "action_common_clear": "Rensa",
"action_common_confirm": "Bekräfta", "action_common_confirm": "Bekräfta",
"action_common_save": "Spara",
"action_common_select": "Välj",
"action_common_update": "Uppdatera", "action_common_update": "Uppdatera",
"add_to_album_bottom_sheet_added": "Tillagd till {album}", "add_to_album_bottom_sheet_added": "Tillagd till {album}",
"add_to_album_bottom_sheet_already_exists": "Redan i {album}", "add_to_album_bottom_sheet_already_exists": "Redan i {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Nytt lösenord", "change_password_form_new_password": "Nytt lösenord",
"change_password_form_password_mismatch": "Lösenorden matchar inte", "change_password_form_password_mismatch": "Lösenorden matchar inte",
"change_password_form_reenter_new_password": "Ange Nytt Lösenord Igen", "change_password_form_reenter_new_password": "Ange Nytt Lösenord Igen",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Ange Lösenord",
"client_cert_import": "Importera",
"client_cert_import_success_msg": "Klientcertifikatet är importerat",
"client_cert_invalid_msg": "Felaktig certifikatfil eller fel lösenord",
"client_cert_remove": "Ta bort",
"client_cert_remove_msg": "Klientcertifikatet är borttaget",
"client_cert_subtitle": "Stödjer endast formatet PKCS12 (.p12, .pfx). Import/borttagning av certifikat är tillgängligt endast före inloggning",
"client_cert_title": "SSL-Klientcertifikat",
"common_add_to_album": "Lägg till, till album", "common_add_to_album": "Lägg till, till album",
"common_change_password": "Ändra lösenord", "common_change_password": "Ändra lösenord",
"common_create_new_album": "Skapa ett nytt album", "common_create_new_album": "Skapa ett nytt album",
"common_server_error": "Kontrollera din nätverksanslutning, se till att servern går att nå och att app- och server-versioner är kompatibla.", "common_server_error": "Kontrollera din nätverksanslutning, se till att servern går att nå och att app- och server-versioner är kompatibla.",
"common_shared": "Delad", "common_shared": "Delad",
"contextual_search": "Soluppgång på stranden",
"control_bottom_app_bar_add_to_album": "Lägg till i album", "control_bottom_app_bar_add_to_album": "Lägg till i album",
"control_bottom_app_bar_album_info": "{} objekt", "control_bottom_app_bar_album_info": "{} objekt",
"control_bottom_app_bar_album_info_shared": "{} objekt • Delat", "control_bottom_app_bar_album_info_shared": "{} objekt • Delat",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Radera", "control_bottom_app_bar_delete": "Radera",
"control_bottom_app_bar_delete_from_immich": "Ta bort från Immich", "control_bottom_app_bar_delete_from_immich": "Ta bort från Immich",
"control_bottom_app_bar_delete_from_local": "Ta bort från enhet", "control_bottom_app_bar_delete_from_local": "Ta bort från enhet",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Redigera plats", "control_bottom_app_bar_edit_location": "Redigera plats",
"control_bottom_app_bar_edit_time": "Redigera Datum & Tid", "control_bottom_app_bar_edit_time": "Redigera Datum & Tid",
"control_bottom_app_bar_favorite": "Favorit", "control_bottom_app_bar_favorite": "Favorit",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Experimentellt", "experimental_settings_title": "Experimentellt",
"favorites_page_no_favorites": "Inga favoritobjekt hittades", "favorites_page_no_favorites": "Inga favoritobjekt hittades",
"favorites_page_title": "Favoriter", "favorites_page_title": "Favoriter",
"filename_search": "Filnamn eller filändelse",
"haptic_feedback_switch": "Aktivera haptisk feedback", "haptic_feedback_switch": "Aktivera haptisk feedback",
"haptic_feedback_title": "Haptisk Feedback", "haptic_feedback_title": "Haptisk Feedback",
"header_settings_add_header_tip": "Lägg Till Header", "header_settings_add_header_tip": "Lägg Till Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Nedladdning Påbörjad", "image_viewer_page_state_provider_download_started": "Nedladdning Påbörjad",
"image_viewer_page_state_provider_download_success": "Nedladdningen Lyckades", "image_viewer_page_state_provider_download_success": "Nedladdningen Lyckades",
"image_viewer_page_state_provider_share_error": "Delningsfel", "image_viewer_page_state_provider_share_error": "Delningsfel",
"invalid_date": "Felaktigt datum",
"invalid_date_format": "Felaktigt datumformat",
"library_page_albums": "Album", "library_page_albums": "Album",
"library_page_archive": "Arkiv", "library_page_archive": "Arkiv",
"library_page_device_albums": "Album på Enheten", "library_page_device_albums": "Album på Enheten",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Kan inte ändra datum på skrivskyddade objekt, hoppar över", "multiselect_grid_edit_date_time_err_read_only": "Kan inte ändra datum på skrivskyddade objekt, hoppar över",
"multiselect_grid_edit_gps_err_read_only": "Kan inte ändra plats på skrivskyddade objekt, hoppar över", "multiselect_grid_edit_gps_err_read_only": "Kan inte ändra plats på skrivskyddade objekt, hoppar över",
"no_assets_to_show": "Inga objekt att visa", "no_assets_to_show": "Inga objekt att visa",
"no_name": "Inget namn",
"notification_permission_dialog_cancel": "Avbryt", "notification_permission_dialog_cancel": "Avbryt",
"notification_permission_dialog_content": "För att aktivera notiser, gå till Inställningar och välj tillåt", "notification_permission_dialog_content": "För att aktivera notiser, gå till Inställningar och välj tillåt",
"notification_permission_dialog_settings": "Inställningar", "notification_permission_dialog_settings": "Inställningar",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Fel uppstod", "scaffold_body_error_occurred": "Fel uppstod",
"search_bar_hint": "Sök bland dina foton", "search_bar_hint": "Sök bland dina foton",
"search_filter_apply": "Aktivera filter", "search_filter_apply": "Aktivera filter",
"search_filter_camera": "Kamera",
"search_filter_camera_make": "Tillverkare", "search_filter_camera_make": "Tillverkare",
"search_filter_camera_model": "Modell", "search_filter_camera_model": "Modell",
"search_filter_camera_title": "Välj kameratyp",
"search_filter_date": "Datum",
"search_filter_date_interval": "{start} till {end}",
"search_filter_date_title": "Välj datumintervall",
"search_filter_display_option_archive": "Arkiv", "search_filter_display_option_archive": "Arkiv",
"search_filter_display_option_favorite": "Favorit", "search_filter_display_option_favorite": "Favorit",
"search_filter_display_option_not_in_album": "Ej i album", "search_filter_display_option_not_in_album": "Ej i album",
"search_filter_display_options": "Visningsalternativ",
"search_filter_display_options_title": "Visningsalternativ",
"search_filter_location": "Plats",
"search_filter_location_city": "Stad", "search_filter_location_city": "Stad",
"search_filter_location_country": "Land", "search_filter_location_country": "Land",
"search_filter_location_state": "Stat", "search_filter_location_state": "Stat",
"search_filter_location_title": "Välj plats",
"search_filter_media_type": "Mediatyp",
"search_filter_media_type_all": "Alla", "search_filter_media_type_all": "Alla",
"search_filter_media_type_image": "Bild", "search_filter_media_type_image": "Bild",
"search_filter_media_type_title": "Välj mediatyp",
"search_filter_media_type_video": "Videor", "search_filter_media_type_video": "Videor",
"search_filter_people": "Personer",
"search_filter_people_title": "Välj personer",
"search_page_categories": "Kategorier", "search_page_categories": "Kategorier",
"search_page_favorites": "Favoriter", "search_page_favorites": "Favoriter",
"search_page_motion_photos": "Rörelsefoton", "search_page_motion_photos": "Rörelsefoton",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "ยกเลิก", "action_common_cancel": "ยกเลิก",
"action_common_clear": "เคลียร์", "action_common_clear": "เคลียร์",
"action_common_confirm": "ยืนยัน", "action_common_confirm": "ยืนยัน",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "อัปเดต", "action_common_update": "อัปเดต",
"add_to_album_bottom_sheet_added": "เพิ่มไปยัง {album}", "add_to_album_bottom_sheet_added": "เพิ่มไปยัง {album}",
"add_to_album_bottom_sheet_already_exists": "อยู่ใน {album} อยู่แล้ว", "add_to_album_bottom_sheet_already_exists": "อยู่ใน {album} อยู่แล้ว",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "รหัสผ่านใหม่", "change_password_form_new_password": "รหัสผ่านใหม่",
"change_password_form_password_mismatch": "รหัสผ่านไม่ตรงกัน", "change_password_form_password_mismatch": "รหัสผ่านไม่ตรงกัน",
"change_password_form_reenter_new_password": "กรอกรหัสผ่านใหม่", "change_password_form_reenter_new_password": "กรอกรหัสผ่านใหม่",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "เพิ่มเข้าอัลบั้ม", "common_add_to_album": "เพิ่มเข้าอัลบั้ม",
"common_change_password": "เปลี่ยนรหัสผ่าน", "common_change_password": "เปลี่ยนรหัสผ่าน",
"common_create_new_album": "สร้างอัลบั้มใหม่", "common_create_new_album": "สร้างอัลบั้มใหม่",
"common_server_error": "กรุณาตรวจสอบการเชื่อมต่ออินเทอร์เน็ต ให้แน่ใจว่าเซิร์ฟเวอร์สามารถเข้าถึงได้ และเวอร์ชันแอพกับเซิร์ฟเวอร์เข้ากันได้", "common_server_error": "กรุณาตรวจสอบการเชื่อมต่ออินเทอร์เน็ต ให้แน่ใจว่าเซิร์ฟเวอร์สามารถเข้าถึงได้ และเวอร์ชันแอพกับเซิร์ฟเวอร์เข้ากันได้",
"common_shared": "แชร์", "common_shared": "แชร์",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "เพิ่มลงอัลบั้ม", "control_bottom_app_bar_add_to_album": "เพิ่มลงอัลบั้ม",
"control_bottom_app_bar_album_info": "{} รายการ", "control_bottom_app_bar_album_info": "{} รายการ",
"control_bottom_app_bar_album_info_shared": "{} รายการ · ถูกแชร์", "control_bottom_app_bar_album_info_shared": "{} รายการ · ถูกแชร์",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "ลบออก", "control_bottom_app_bar_delete": "ลบออก",
"control_bottom_app_bar_delete_from_immich": "ลบจาก Immich", "control_bottom_app_bar_delete_from_immich": "ลบจาก Immich",
"control_bottom_app_bar_delete_from_local": "ลบจากเรื่อง", "control_bottom_app_bar_delete_from_local": "ลบจากเรื่อง",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "แก้ไขตำแหน่ง", "control_bottom_app_bar_edit_location": "แก้ไขตำแหน่ง",
"control_bottom_app_bar_edit_time": "แก้ไขวันและเวลา", "control_bottom_app_bar_edit_time": "แก้ไขวันและเวลา",
"control_bottom_app_bar_favorite": "รายการโปรด", "control_bottom_app_bar_favorite": "รายการโปรด",
@@ -203,6 +216,7 @@
"experimental_settings_title": "ทดลอง", "experimental_settings_title": "ทดลอง",
"favorites_page_no_favorites": "ไม่พบทรัพยากรในรายการโปรด", "favorites_page_no_favorites": "ไม่พบทรัพยากรในรายการโปรด",
"favorites_page_title": "รายการโปรด", "favorites_page_title": "รายการโปรด",
"filename_search": "File name or extension",
"haptic_feedback_switch": "เปิดการตอบสนองแบบสัมผัส", "haptic_feedback_switch": "เปิดการตอบสนองแบบสัมผัส",
"haptic_feedback_title": "การตอบสนองแบบสัมผัส", "haptic_feedback_title": "การตอบสนองแบบสัมผัส",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "ดาวน์โหลดเริ่มต้น", "image_viewer_page_state_provider_download_started": "ดาวน์โหลดเริ่มต้น",
"image_viewer_page_state_provider_download_success": "ดาวน์โหลดสำเร็จ", "image_viewer_page_state_provider_download_success": "ดาวน์โหลดสำเร็จ",
"image_viewer_page_state_provider_share_error": "แชร์ผิดพลาด", "image_viewer_page_state_provider_share_error": "แชร์ผิดพลาด",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "อัลบั้ม", "library_page_albums": "อัลบั้ม",
"library_page_archive": "เก็บถาวร", "library_page_archive": "เก็บถาวร",
"library_page_device_albums": "อัลบั้มบนเครื่อง", "library_page_device_albums": "อัลบั้มบนเครื่อง",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "ไม่สามารถแก้ไขวันที่ทรัพยากรแบบอ่านอย่างเดียว กำลังข้าม", "multiselect_grid_edit_date_time_err_read_only": "ไม่สามารถแก้ไขวันที่ทรัพยากรแบบอ่านอย่างเดียว กำลังข้าม",
"multiselect_grid_edit_gps_err_read_only": "ไม่สามารถแก้ตำแหน่งของทรัพยากรแบบอ่านอย่างเดียว กำลังข้าม", "multiselect_grid_edit_gps_err_read_only": "ไม่สามารถแก้ตำแหน่งของทรัพยากรแบบอ่านอย่างเดียว กำลังข้าม",
"no_assets_to_show": "ไม่มีทรัพยากรให้แสดง", "no_assets_to_show": "ไม่มีทรัพยากรให้แสดง",
"no_name": "No name",
"notification_permission_dialog_cancel": "ยกเลิก", "notification_permission_dialog_cancel": "ยกเลิก",
"notification_permission_dialog_content": "เพื่อเปิดการแจ้งเตือน เข้าตั้งค่าแล้วกดอนุญาต", "notification_permission_dialog_content": "เพื่อเปิดการแจ้งเตือน เข้าตั้งค่าแล้วกดอนุญาต",
"notification_permission_dialog_settings": "ตั้งค่า", "notification_permission_dialog_settings": "ตั้งค่า",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "เกิดข้อผิดพลาด", "scaffold_body_error_occurred": "เกิดข้อผิดพลาด",
"search_bar_hint": "ค้นหารูปภาพของคุณ", "search_bar_hint": "ค้นหารูปภาพของคุณ",
"search_filter_apply": "บันทึกตัวกรอง", "search_filter_apply": "บันทึกตัวกรอง",
"search_filter_camera": "Camera",
"search_filter_camera_make": "ยี่ห้อ", "search_filter_camera_make": "ยี่ห้อ",
"search_filter_camera_model": "รุ่น", "search_filter_camera_model": "รุ่น",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "เก็บถาวร", "search_filter_display_option_archive": "เก็บถาวร",
"search_filter_display_option_favorite": "รายการโปรด", "search_filter_display_option_favorite": "รายการโปรด",
"search_filter_display_option_not_in_album": "ไม่อยู่ในอัลบั้ม", "search_filter_display_option_not_in_album": "ไม่อยู่ในอัลบั้ม",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "เมือง", "search_filter_location_city": "เมือง",
"search_filter_location_country": "ประเทศ", "search_filter_location_country": "ประเทศ",
"search_filter_location_state": "รัฐ", "search_filter_location_state": "รัฐ",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "ทั้งหมด", "search_filter_media_type_all": "ทั้งหมด",
"search_filter_media_type_image": "รูปภาพ", "search_filter_media_type_image": "รูปภาพ",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "วิดีโอ", "search_filter_media_type_video": "วิดีโอ",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "หมวดหมู่", "search_page_categories": "หมวดหมู่",
"search_page_favorites": "รายการโปรด", "search_page_favorites": "รายการโปรด",
"search_page_motion_photos": "ภาพเคลื่อนไหว", "search_page_motion_photos": "ภาพเคลื่อนไหว",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Скасувати", "action_common_cancel": "Скасувати",
"action_common_clear": "Очистити", "action_common_clear": "Очистити",
"action_common_confirm": "Підтвердити", "action_common_confirm": "Підтвердити",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Оновити", "action_common_update": "Оновити",
"add_to_album_bottom_sheet_added": "Додати до {album}", "add_to_album_bottom_sheet_added": "Додати до {album}",
"add_to_album_bottom_sheet_already_exists": "Вже є в {album}", "add_to_album_bottom_sheet_already_exists": "Вже є в {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Новий пароль", "change_password_form_new_password": "Новий пароль",
"change_password_form_password_mismatch": "Паролі не співпадають", "change_password_form_password_mismatch": "Паролі не співпадають",
"change_password_form_reenter_new_password": "Повторіть новий пароль", "change_password_form_reenter_new_password": "Повторіть новий пароль",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Додати у альбом", "common_add_to_album": "Додати у альбом",
"common_change_password": "Змінити пароль", "common_change_password": "Змінити пароль",
"common_create_new_album": "Створити новий альбом", "common_create_new_album": "Створити новий альбом",
"common_server_error": "Будь ласка, перевірте з'єднання, переконайтеся, що сервер доступний і версія програми/сервера сумісна.", "common_server_error": "Будь ласка, перевірте з'єднання, переконайтеся, що сервер доступний і версія програми/сервера сумісна.",
"common_shared": "Спільні", "common_shared": "Спільні",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Додати у альбом", "control_bottom_app_bar_add_to_album": "Додати у альбом",
"control_bottom_app_bar_album_info": "{} елементи", "control_bottom_app_bar_album_info": "{} елементи",
"control_bottom_app_bar_album_info_shared": "{} елементи · Спільні", "control_bottom_app_bar_album_info_shared": "{} елементи · Спільні",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Видалити", "control_bottom_app_bar_delete": "Видалити",
"control_bottom_app_bar_delete_from_immich": "Видалити з Immich", "control_bottom_app_bar_delete_from_immich": "Видалити з Immich",
"control_bottom_app_bar_delete_from_local": "Видалити з пристрою", "control_bottom_app_bar_delete_from_local": "Видалити з пристрою",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Редагувати місцезнаходження", "control_bottom_app_bar_edit_location": "Редагувати місцезнаходження",
"control_bottom_app_bar_edit_time": "Редагувати дату та час", "control_bottom_app_bar_edit_time": "Редагувати дату та час",
"control_bottom_app_bar_favorite": "До улюблених", "control_bottom_app_bar_favorite": "До улюблених",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Експериментальні", "experimental_settings_title": "Експериментальні",
"favorites_page_no_favorites": "Немає улюблених елементів", "favorites_page_no_favorites": "Немає улюблених елементів",
"favorites_page_title": "Улюблені", "favorites_page_title": "Улюблені",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Увімкнути тактильну віддачу", "haptic_feedback_switch": "Увімкнути тактильну віддачу",
"haptic_feedback_title": "Тактильна віддача", "haptic_feedback_title": "Тактильна віддача",
"header_settings_add_header_tip": "Додати заголовок", "header_settings_add_header_tip": "Додати заголовок",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Завантаження почалося", "image_viewer_page_state_provider_download_started": "Завантаження почалося",
"image_viewer_page_state_provider_download_success": "Усіпшно завантажено", "image_viewer_page_state_provider_download_success": "Усіпшно завантажено",
"image_viewer_page_state_provider_share_error": "Помилка спільного доступу", "image_viewer_page_state_provider_share_error": "Помилка спільного доступу",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Альбоми", "library_page_albums": "Альбоми",
"library_page_archive": "Архів", "library_page_archive": "Архів",
"library_page_device_albums": "Альбоми на пристрої", "library_page_device_albums": "Альбоми на пристрої",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Неможливо редагувати дату елементів лише для читання, пропущено", "multiselect_grid_edit_date_time_err_read_only": "Неможливо редагувати дату елементів лише для читання, пропущено",
"multiselect_grid_edit_gps_err_read_only": "Неможливо редагувати місцезнаходження елементів лише для читання, пропущено", "multiselect_grid_edit_gps_err_read_only": "Неможливо редагувати місцезнаходження елементів лише для читання, пропущено",
"no_assets_to_show": "Елементи відсутні", "no_assets_to_show": "Елементи відсутні",
"no_name": "No name",
"notification_permission_dialog_cancel": "Скасувати", "notification_permission_dialog_cancel": "Скасувати",
"notification_permission_dialog_content": "Щоб увімкнути сповіщення, перейдіть до Налаштувань і надайте дозвіл.", "notification_permission_dialog_content": "Щоб увімкнути сповіщення, перейдіть до Налаштувань і надайте дозвіл.",
"notification_permission_dialog_settings": "Налаштування", "notification_permission_dialog_settings": "Налаштування",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Виникла помилка", "scaffold_body_error_occurred": "Виникла помилка",
"search_bar_hint": "Шукати ваші знімки", "search_bar_hint": "Шукати ваші знімки",
"search_filter_apply": "Застосувати фільтр", "search_filter_apply": "Застосувати фільтр",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Виробник", "search_filter_camera_make": "Виробник",
"search_filter_camera_model": "Модель", "search_filter_camera_model": "Модель",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Архів", "search_filter_display_option_archive": "Архів",
"search_filter_display_option_favorite": "Улюблені", "search_filter_display_option_favorite": "Улюблені",
"search_filter_display_option_not_in_album": "Не в альбомі", "search_filter_display_option_not_in_album": "Не в альбомі",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "Місто", "search_filter_location_city": "Місто",
"search_filter_location_country": "Країна", "search_filter_location_country": "Країна",
"search_filter_location_state": "Регіон", "search_filter_location_state": "Регіон",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "Усі", "search_filter_media_type_all": "Усі",
"search_filter_media_type_image": "Зображення", "search_filter_media_type_image": "Зображення",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Відео", "search_filter_media_type_video": "Відео",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Категорії", "search_page_categories": "Категорії",
"search_page_favorites": "Улюблені", "search_page_favorites": "Улюблені",
"search_page_motion_photos": "Рухомі знімки", "search_page_motion_photos": "Рухомі знімки",

View File

@@ -3,13 +3,15 @@
"action_common_cancel": "Từ chối", "action_common_cancel": "Từ chối",
"action_common_clear": "Xoá", "action_common_clear": "Xoá",
"action_common_confirm": "Xác nhận", "action_common_confirm": "Xác nhận",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Cập nhật", "action_common_update": "Cập nhật",
"add_to_album_bottom_sheet_added": "Thêm vào {album}", "add_to_album_bottom_sheet_added": "Thêm vào {album}",
"add_to_album_bottom_sheet_already_exists": "Đã có sẵn trong {album}", "add_to_album_bottom_sheet_already_exists": "Đã có sẵn trong {album}",
"advanced_settings_log_level_title": "Phân loại nhật ký: {}", "advanced_settings_log_level_title": "Phân loại nhật ký: {}",
"advanced_settings_prefer_remote_subtitle": "Trên một số thiết bị, việc tải hình thu nhỏ từ ảnh trên thiết bị diễn ra chậm. Kích hoạt cài đặt này để tải ảnh từ máy chủ.", "advanced_settings_prefer_remote_subtitle": "Trên một số thiết bị, việc tải hình thu nhỏ từ ảnh trên thiết bị diễn ra chậm. Kích hoạt cài đặt này để tải ảnh từ máy chủ.",
"advanced_settings_prefer_remote_title": "Ưu tiên ảnh từ máy chủ", "advanced_settings_prefer_remote_title": "Ưu tiên ảnh từ máy chủ",
"advanced_settings_proxy_headers_subtitle": "Xác định các header của proxy Immich sẽ gửi kèm theo mỗi yêu cầu mạng.", "advanced_settings_proxy_headers_subtitle": "Xác định các header của proxy Immich sẽ gửi kèm theo mỗi yêu cầu mạng.",
"advanced_settings_proxy_headers_title": "Các header của proxy", "advanced_settings_proxy_headers_title": "Các header của proxy",
"advanced_settings_self_signed_ssl_subtitle": "Bỏ qua xác minh chứng chỉ SSL cho máy chủ cuối. Yêu cầu cho chứng chỉ tự ký.", "advanced_settings_self_signed_ssl_subtitle": "Bỏ qua xác minh chứng chỉ SSL cho máy chủ cuối. Yêu cầu cho chứng chỉ tự ký.",
"advanced_settings_self_signed_ssl_title": "Cho phép chứng chỉ SSL tự ký", "advanced_settings_self_signed_ssl_title": "Cho phép chứng chỉ SSL tự ký",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "Mật khẩu mới", "change_password_form_new_password": "Mật khẩu mới",
"change_password_form_password_mismatch": "Mật khẩu không giống nhau", "change_password_form_password_mismatch": "Mật khẩu không giống nhau",
"change_password_form_reenter_new_password": "Nhập lại mật khẩu mới", "change_password_form_reenter_new_password": "Nhập lại mật khẩu mới",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Thêm vào album", "common_add_to_album": "Thêm vào album",
"common_change_password": "Thay đổi mật khẩu", "common_change_password": "Thay đổi mật khẩu",
"common_create_new_album": "Tạo album mới", "common_create_new_album": "Tạo album mới",
"common_server_error": "Vui lòng kiểm tra kết nối mạng của bạn, đảm bảo máy chủ có thể truy cập được và các phiên bản ứng dụng/máy chủ phải tương thích với nhau", "common_server_error": "Vui lòng kiểm tra kết nối mạng của bạn, đảm bảo máy chủ có thể truy cập được và các phiên bản ứng dụng/máy chủ phải tương thích với nhau",
"common_shared": "Chia sẻ", "common_shared": "Chia sẻ",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Thêm vào album", "control_bottom_app_bar_add_to_album": "Thêm vào album",
"control_bottom_app_bar_album_info": "{} mục", "control_bottom_app_bar_album_info": "{} mục",
"control_bottom_app_bar_album_info_shared": "{} mục chia sẻ", "control_bottom_app_bar_album_info_shared": "{} mục chia sẻ",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Xoá", "control_bottom_app_bar_delete": "Xoá",
"control_bottom_app_bar_delete_from_immich": "Xóa khỏi Immich", "control_bottom_app_bar_delete_from_immich": "Xóa khỏi Immich",
"control_bottom_app_bar_delete_from_local": "Xóa khỏi thiết bị\n", "control_bottom_app_bar_delete_from_local": "Xóa khỏi thiết bị\n",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Chỉnh sửa vị trí", "control_bottom_app_bar_edit_location": "Chỉnh sửa vị trí",
"control_bottom_app_bar_edit_time": "Chỉnh sửa Ngày và Giờ", "control_bottom_app_bar_edit_time": "Chỉnh sửa Ngày và Giờ",
"control_bottom_app_bar_favorite": "Yêu thích", "control_bottom_app_bar_favorite": "Yêu thích",
@@ -203,12 +216,13 @@
"experimental_settings_title": "Chưa hoàn thiện", "experimental_settings_title": "Chưa hoàn thiện",
"favorites_page_no_favorites": "Không tìm thấy ảnh yêu thích", "favorites_page_no_favorites": "Không tìm thấy ảnh yêu thích",
"favorites_page_title": "Ảnh yêu thích", "favorites_page_title": "Ảnh yêu thích",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Bật haptic feedback\n", "haptic_feedback_switch": "Bật haptic feedback\n",
"haptic_feedback_title": "Haptic Feedback\n", "haptic_feedback_title": "Haptic Feedback\n",
"header_settings_add_header_tip": "Thêm Header", "header_settings_add_header_tip": "Thêm Header",
"header_settings_field_validator_msg": "Trường này không được để trống", "header_settings_field_validator_msg": "Trường này không được để trống",
"header_settings_header_name_input": "Tên header", "header_settings_header_name_input": "Tên Header",
"header_settings_header_value_input": "Giá trị header", "header_settings_header_value_input": "Giá trị Header",
"header_settings_page_title": "Các header của proxy", "header_settings_page_title": "Các header của proxy",
"headers_settings_tile_subtitle": "Xác định proxy header ứng dụng sẽ gửi kèm theo mỗi yêu cầu mạng.", "headers_settings_tile_subtitle": "Xác định proxy header ứng dụng sẽ gửi kèm theo mỗi yêu cầu mạng.",
"headers_settings_tile_title": "Tuỳ chỉnh các header của proxy", "headers_settings_tile_title": "Tuỳ chỉnh các header của proxy",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Đã bắt đầu tải xuống", "image_viewer_page_state_provider_download_started": "Đã bắt đầu tải xuống",
"image_viewer_page_state_provider_download_success": "Tải xuống thành công", "image_viewer_page_state_provider_download_success": "Tải xuống thành công",
"image_viewer_page_state_provider_share_error": "Chia sẻ không thành công", "image_viewer_page_state_provider_share_error": "Chia sẻ không thành công",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Album", "library_page_albums": "Album",
"library_page_archive": "Kho lưu trữ", "library_page_archive": "Kho lưu trữ",
"library_page_device_albums": "Album trên thiết bị", "library_page_device_albums": "Album trên thiết bị",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Không thể chỉnh sửa ngày của ảnh chỉ có quyền đọc, bỏ qua", "multiselect_grid_edit_date_time_err_read_only": "Không thể chỉnh sửa ngày của ảnh chỉ có quyền đọc, bỏ qua",
"multiselect_grid_edit_gps_err_read_only": "Không thể chỉnh sửa vị trí của ảnh chỉ có quyền đọc, bỏ qua", "multiselect_grid_edit_gps_err_read_only": "Không thể chỉnh sửa vị trí của ảnh chỉ có quyền đọc, bỏ qua",
"no_assets_to_show": "Không có mục nào để hiển thị", "no_assets_to_show": "Không có mục nào để hiển thị",
"no_name": "No name",
"notification_permission_dialog_cancel": "Từ chối", "notification_permission_dialog_cancel": "Từ chối",
"notification_permission_dialog_content": "Để bật thông báo, chuyển tới Cài đặt và chọn cho phép", "notification_permission_dialog_content": "Để bật thông báo, chuyển tới Cài đặt và chọn cho phép",
"notification_permission_dialog_settings": "Cài đặt", "notification_permission_dialog_settings": "Cài đặt",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Xảy ra lỗi", "scaffold_body_error_occurred": "Xảy ra lỗi",
"search_bar_hint": "Tìm kiếm ảnh của bạn", "search_bar_hint": "Tìm kiếm ảnh của bạn",
"search_filter_apply": "Áp dụng bộ lọc", "search_filter_apply": "Áp dụng bộ lọc",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Chụp bởi", "search_filter_camera_make": "Chụp bởi",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Kho lưu trữ", "search_filter_display_option_archive": "Kho lưu trữ",
"search_filter_display_option_favorite": "Yêu thích", "search_filter_display_option_favorite": "Yêu thích",
"search_filter_display_option_not_in_album": "Không nằm trong album", "search_filter_display_option_not_in_album": "Không nằm trong album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "Thành phố", "search_filter_location_city": "Thành phố",
"search_filter_location_country": "Quốc gia", "search_filter_location_country": "Quốc gia",
"search_filter_location_state": "Tỉnh", "search_filter_location_state": "Tỉnh",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "Tất cả", "search_filter_media_type_all": "Tất cả",
"search_filter_media_type_image": "Ảnh", "search_filter_media_type_image": "Ảnh",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Danh mục", "search_page_categories": "Danh mục",
"search_page_favorites": "Ảnh yêu thích", "search_page_favorites": "Ảnh yêu thích",
"search_page_motion_photos": "Ảnh động", "search_page_motion_photos": "Ảnh động",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "取消", "action_common_cancel": "取消",
"action_common_clear": "清空", "action_common_clear": "清空",
"action_common_confirm": "确定", "action_common_confirm": "确定",
"action_common_save": "保存",
"action_common_select": "选择",
"action_common_update": "更新", "action_common_update": "更新",
"add_to_album_bottom_sheet_added": "添加到 {album}", "add_to_album_bottom_sheet_added": "添加到 {album}",
"add_to_album_bottom_sheet_already_exists": "已在 {album} 中", "add_to_album_bottom_sheet_already_exists": "已在 {album} 中",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "新密码", "change_password_form_new_password": "新密码",
"change_password_form_password_mismatch": "密码不匹配", "change_password_form_password_mismatch": "密码不匹配",
"change_password_form_reenter_new_password": "再次输入新密码", "change_password_form_reenter_new_password": "再次输入新密码",
"client_cert_dialog_msg_confirm": "确定",
"client_cert_enter_password": "输入密码",
"client_cert_import": "导入",
"client_cert_import_success_msg": "客户端证书已导入",
"client_cert_invalid_msg": "无效的证书文件或密码错误",
"client_cert_remove": "移除",
"client_cert_remove_msg": "客户端证书已移除",
"client_cert_subtitle": "仅支持PKCS12 (.p12, .pfx)格式。仅可在登录前进行证书的导入和移除",
"client_cert_title": "SSL客户端证书",
"common_add_to_album": "添加到相册", "common_add_to_album": "添加到相册",
"common_change_password": "更改密码", "common_change_password": "更改密码",
"common_create_new_album": "新建相册", "common_create_new_album": "新建相册",
"common_server_error": "请检查您的网络连接,确保服务器可访问且该应用程序与服务器版本兼容。", "common_server_error": "请检查您的网络连接,确保服务器可访问且该应用程序与服务器版本兼容。",
"common_shared": "共享", "common_shared": "共享",
"contextual_search": "海滩上的日出",
"control_bottom_app_bar_add_to_album": "添加到相册", "control_bottom_app_bar_add_to_album": "添加到相册",
"control_bottom_app_bar_album_info": "{} 项", "control_bottom_app_bar_album_info": "{} 项",
"control_bottom_app_bar_album_info_shared": "{} 项 · 已共享", "control_bottom_app_bar_album_info_shared": "{} 项 · 已共享",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "删除", "control_bottom_app_bar_delete": "删除",
"control_bottom_app_bar_delete_from_immich": "从Immich服务器中删除", "control_bottom_app_bar_delete_from_immich": "从Immich服务器中删除",
"control_bottom_app_bar_delete_from_local": "从移动设备中删除", "control_bottom_app_bar_delete_from_local": "从移动设备中删除",
"control_bottom_app_bar_edit": "编辑",
"control_bottom_app_bar_edit_location": "编辑位置信息", "control_bottom_app_bar_edit_location": "编辑位置信息",
"control_bottom_app_bar_edit_time": "编辑日期和时间", "control_bottom_app_bar_edit_time": "编辑日期和时间",
"control_bottom_app_bar_favorite": "收藏", "control_bottom_app_bar_favorite": "收藏",
@@ -203,6 +216,7 @@
"experimental_settings_title": "实验性功能", "experimental_settings_title": "实验性功能",
"favorites_page_no_favorites": "未找到收藏项目", "favorites_page_no_favorites": "未找到收藏项目",
"favorites_page_title": "收藏", "favorites_page_title": "收藏",
"filename_search": "文件名或扩展名",
"haptic_feedback_switch": "启用振动反馈", "haptic_feedback_switch": "启用振动反馈",
"haptic_feedback_title": "振动反馈", "haptic_feedback_title": "振动反馈",
"header_settings_add_header_tip": "添加标头", "header_settings_add_header_tip": "添加标头",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "下载启动", "image_viewer_page_state_provider_download_started": "下载启动",
"image_viewer_page_state_provider_download_success": "下载成功", "image_viewer_page_state_provider_download_success": "下载成功",
"image_viewer_page_state_provider_share_error": "共享出错", "image_viewer_page_state_provider_share_error": "共享出错",
"invalid_date": "无效的日期",
"invalid_date_format": "无效的日期格式",
"library_page_albums": "相册", "library_page_albums": "相册",
"library_page_archive": "归档", "library_page_archive": "归档",
"library_page_device_albums": "设备上的相册", "library_page_device_albums": "设备上的相册",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "无法编辑只读项目的日期,跳过", "multiselect_grid_edit_date_time_err_read_only": "无法编辑只读项目的日期,跳过",
"multiselect_grid_edit_gps_err_read_only": "无法编辑只读项目的位置信息,跳过", "multiselect_grid_edit_gps_err_read_only": "无法编辑只读项目的位置信息,跳过",
"no_assets_to_show": "无项目展示", "no_assets_to_show": "无项目展示",
"no_name": "无姓名",
"notification_permission_dialog_cancel": "取消", "notification_permission_dialog_cancel": "取消",
"notification_permission_dialog_content": "要启用通知,请转到“设置”,并选择“允许”。", "notification_permission_dialog_content": "要启用通知,请转到“设置”,并选择“允许”。",
"notification_permission_dialog_settings": "设置", "notification_permission_dialog_settings": "设置",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "发生错误", "scaffold_body_error_occurred": "发生错误",
"search_bar_hint": "搜索照片", "search_bar_hint": "搜索照片",
"search_filter_apply": "应用筛选", "search_filter_apply": "应用筛选",
"search_filter_camera": "相机",
"search_filter_camera_make": "制造商", "search_filter_camera_make": "制造商",
"search_filter_camera_model": "型号", "search_filter_camera_model": "型号",
"search_filter_camera_title": "选择相机类型",
"search_filter_date": "日期",
"search_filter_date_interval": "从{start}到{end}",
"search_filter_date_title": "选择日期范围",
"search_filter_display_option_archive": "归档", "search_filter_display_option_archive": "归档",
"search_filter_display_option_favorite": "收藏", "search_filter_display_option_favorite": "收藏",
"search_filter_display_option_not_in_album": "不在相册中", "search_filter_display_option_not_in_album": "不在相册中",
"search_filter_display_options": "显示选项",
"search_filter_display_options_title": "显示选项",
"search_filter_location": "位置",
"search_filter_location_city": "城市", "search_filter_location_city": "城市",
"search_filter_location_country": "国家", "search_filter_location_country": "国家",
"search_filter_location_state": "省", "search_filter_location_state": "省",
"search_filter_location_title": "选择位置",
"search_filter_media_type": "媒体类型",
"search_filter_media_type_all": "所有", "search_filter_media_type_all": "所有",
"search_filter_media_type_image": "照片", "search_filter_media_type_image": "照片",
"search_filter_media_type_title": "选择媒体类型",
"search_filter_media_type_video": "视频", "search_filter_media_type_video": "视频",
"search_filter_people": "人物",
"search_filter_people_title": "选择人物",
"search_page_categories": "类别", "search_page_categories": "类别",
"search_page_favorites": "收藏", "search_page_favorites": "收藏",
"search_page_motion_photos": "动图", "search_page_motion_photos": "动图",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "取消", "action_common_cancel": "取消",
"action_common_clear": "清空", "action_common_clear": "清空",
"action_common_confirm": "确定", "action_common_confirm": "确定",
"action_common_save": "保存",
"action_common_select": "选择",
"action_common_update": "更新", "action_common_update": "更新",
"add_to_album_bottom_sheet_added": "添加到 {album}", "add_to_album_bottom_sheet_added": "添加到 {album}",
"add_to_album_bottom_sheet_already_exists": "已在 {album} 中", "add_to_album_bottom_sheet_already_exists": "已在 {album} 中",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "新密码", "change_password_form_new_password": "新密码",
"change_password_form_password_mismatch": "密码不匹配", "change_password_form_password_mismatch": "密码不匹配",
"change_password_form_reenter_new_password": "再次输入新密码", "change_password_form_reenter_new_password": "再次输入新密码",
"client_cert_dialog_msg_confirm": "确定",
"client_cert_enter_password": "输入密码",
"client_cert_import": "导入",
"client_cert_import_success_msg": "客户端证书已导入",
"client_cert_invalid_msg": "无效的证书文件或密码错误",
"client_cert_remove": "移除",
"client_cert_remove_msg": "客户端证书已移除",
"client_cert_subtitle": "仅支持PKCS12 (.p12, .pfx)格式。仅可在登录前进行证书的导入和移除",
"client_cert_title": "SSL客户端证书",
"common_add_to_album": "添加到相册", "common_add_to_album": "添加到相册",
"common_change_password": "更改密码", "common_change_password": "更改密码",
"common_create_new_album": "新建相册", "common_create_new_album": "新建相册",
"common_server_error": "请检查您的网络连接,确保服务器可访问且该应用程序与服务器版本兼容。", "common_server_error": "请检查您的网络连接,确保服务器可访问且该应用程序与服务器版本兼容。",
"common_shared": "共享", "common_shared": "共享",
"contextual_search": "海滩上的日出",
"control_bottom_app_bar_add_to_album": "添加到相册", "control_bottom_app_bar_add_to_album": "添加到相册",
"control_bottom_app_bar_album_info": "{} 项", "control_bottom_app_bar_album_info": "{} 项",
"control_bottom_app_bar_album_info_shared": "{} 项 · 已共享", "control_bottom_app_bar_album_info_shared": "{} 项 · 已共享",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "删除", "control_bottom_app_bar_delete": "删除",
"control_bottom_app_bar_delete_from_immich": "从Immich服务器中删除", "control_bottom_app_bar_delete_from_immich": "从Immich服务器中删除",
"control_bottom_app_bar_delete_from_local": "从移动设备中删除", "control_bottom_app_bar_delete_from_local": "从移动设备中删除",
"control_bottom_app_bar_edit": "编辑",
"control_bottom_app_bar_edit_location": "编辑位置信息", "control_bottom_app_bar_edit_location": "编辑位置信息",
"control_bottom_app_bar_edit_time": "编辑日期和时间", "control_bottom_app_bar_edit_time": "编辑日期和时间",
"control_bottom_app_bar_favorite": "收藏", "control_bottom_app_bar_favorite": "收藏",
@@ -203,6 +216,7 @@
"experimental_settings_title": "实验性功能", "experimental_settings_title": "实验性功能",
"favorites_page_no_favorites": "未找到收藏项目", "favorites_page_no_favorites": "未找到收藏项目",
"favorites_page_title": "收藏", "favorites_page_title": "收藏",
"filename_search": "文件名或扩展名",
"haptic_feedback_switch": "启用振动反馈", "haptic_feedback_switch": "启用振动反馈",
"haptic_feedback_title": "振动反馈", "haptic_feedback_title": "振动反馈",
"header_settings_add_header_tip": "添加标头", "header_settings_add_header_tip": "添加标头",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "下载启动", "image_viewer_page_state_provider_download_started": "下载启动",
"image_viewer_page_state_provider_download_success": "下载成功", "image_viewer_page_state_provider_download_success": "下载成功",
"image_viewer_page_state_provider_share_error": "共享出错", "image_viewer_page_state_provider_share_error": "共享出错",
"invalid_date": "无效的日期",
"invalid_date_format": "无效的日期格式",
"library_page_albums": "相册", "library_page_albums": "相册",
"library_page_archive": "归档", "library_page_archive": "归档",
"library_page_device_albums": "设备上的相册", "library_page_device_albums": "设备上的相册",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "无法编辑只读项目的日期,跳过", "multiselect_grid_edit_date_time_err_read_only": "无法编辑只读项目的日期,跳过",
"multiselect_grid_edit_gps_err_read_only": "无法编辑只读项目的位置信息,跳过", "multiselect_grid_edit_gps_err_read_only": "无法编辑只读项目的位置信息,跳过",
"no_assets_to_show": "无项目展示", "no_assets_to_show": "无项目展示",
"no_name": "无姓名",
"notification_permission_dialog_cancel": "取消", "notification_permission_dialog_cancel": "取消",
"notification_permission_dialog_content": "要启用通知,请转到“设置”,并选择“允许”。", "notification_permission_dialog_content": "要启用通知,请转到“设置”,并选择“允许”。",
"notification_permission_dialog_settings": "设置", "notification_permission_dialog_settings": "设置",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "发生错误", "scaffold_body_error_occurred": "发生错误",
"search_bar_hint": "搜索照片", "search_bar_hint": "搜索照片",
"search_filter_apply": "应用筛选", "search_filter_apply": "应用筛选",
"search_filter_camera": "相机",
"search_filter_camera_make": "制造商", "search_filter_camera_make": "制造商",
"search_filter_camera_model": "型号", "search_filter_camera_model": "型号",
"search_filter_camera_title": "选择相机类型",
"search_filter_date": "日期",
"search_filter_date_interval": "从{start}到{end}",
"search_filter_date_title": "选择日期范围",
"search_filter_display_option_archive": "归档", "search_filter_display_option_archive": "归档",
"search_filter_display_option_favorite": "收藏", "search_filter_display_option_favorite": "收藏",
"search_filter_display_option_not_in_album": "不在相册中", "search_filter_display_option_not_in_album": "不在相册中",
"search_filter_display_options": "显示选项",
"search_filter_display_options_title": "显示选项",
"search_filter_location": "位置",
"search_filter_location_city": "城市", "search_filter_location_city": "城市",
"search_filter_location_country": "国家", "search_filter_location_country": "国家",
"search_filter_location_state": "省", "search_filter_location_state": "省",
"search_filter_location_title": "选择位置",
"search_filter_media_type": "媒体类型",
"search_filter_media_type_all": "所有", "search_filter_media_type_all": "所有",
"search_filter_media_type_image": "照片", "search_filter_media_type_image": "照片",
"search_filter_media_type_title": "选择媒体类型",
"search_filter_media_type_video": "视频", "search_filter_media_type_video": "视频",
"search_filter_people": "人物",
"search_filter_people_title": "选择人物",
"search_page_categories": "类别", "search_page_categories": "类别",
"search_page_favorites": "收藏", "search_page_favorites": "收藏",
"search_page_motion_photos": "动图", "search_page_motion_photos": "动图",

View File

@@ -3,6 +3,8 @@
"action_common_cancel": "Cancel", "action_common_cancel": "Cancel",
"action_common_clear": "Clear", "action_common_clear": "Clear",
"action_common_confirm": "Confirm", "action_common_confirm": "Confirm",
"action_common_save": "Save",
"action_common_select": "Select",
"action_common_update": "Update", "action_common_update": "Update",
"add_to_album_bottom_sheet_added": "Added to {album}", "add_to_album_bottom_sheet_added": "Added to {album}",
"add_to_album_bottom_sheet_already_exists": "Already in {album}", "add_to_album_bottom_sheet_already_exists": "Already in {album}",
@@ -141,11 +143,21 @@
"change_password_form_new_password": "New Password", "change_password_form_new_password": "New Password",
"change_password_form_password_mismatch": "Passwords do not match", "change_password_form_password_mismatch": "Passwords do not match",
"change_password_form_reenter_new_password": "Re-enter New Password", "change_password_form_reenter_new_password": "Re-enter New Password",
"client_cert_dialog_msg_confirm": "OK",
"client_cert_enter_password": "Enter Password",
"client_cert_import": "Import",
"client_cert_import_success_msg": "Client certificate is imported",
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
"client_cert_remove": "Remove",
"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",
"common_add_to_album": "Add to album", "common_add_to_album": "Add to album",
"common_change_password": "Change Password", "common_change_password": "Change Password",
"common_create_new_album": "Create new album", "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.", "common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.",
"common_shared": "Shared", "common_shared": "Shared",
"contextual_search": "Sunrise on the beach",
"control_bottom_app_bar_add_to_album": "Add to album", "control_bottom_app_bar_add_to_album": "Add to album",
"control_bottom_app_bar_album_info": "{} items", "control_bottom_app_bar_album_info": "{} items",
"control_bottom_app_bar_album_info_shared": "{} items · Shared", "control_bottom_app_bar_album_info_shared": "{} items · Shared",
@@ -154,6 +166,7 @@
"control_bottom_app_bar_delete": "Delete", "control_bottom_app_bar_delete": "Delete",
"control_bottom_app_bar_delete_from_immich": "Delete from Immich", "control_bottom_app_bar_delete_from_immich": "Delete from Immich",
"control_bottom_app_bar_delete_from_local": "Delete from device", "control_bottom_app_bar_delete_from_local": "Delete from device",
"control_bottom_app_bar_edit": "Edit",
"control_bottom_app_bar_edit_location": "Edit Location", "control_bottom_app_bar_edit_location": "Edit Location",
"control_bottom_app_bar_edit_time": "Edit Date & Time", "control_bottom_app_bar_edit_time": "Edit Date & Time",
"control_bottom_app_bar_favorite": "Favorite", "control_bottom_app_bar_favorite": "Favorite",
@@ -203,6 +216,7 @@
"experimental_settings_title": "Experimental", "experimental_settings_title": "Experimental",
"favorites_page_no_favorites": "No favorite assets found", "favorites_page_no_favorites": "No favorite assets found",
"favorites_page_title": "Favorites", "favorites_page_title": "Favorites",
"filename_search": "File name or extension",
"haptic_feedback_switch": "Enable haptic feedback", "haptic_feedback_switch": "Enable haptic feedback",
"haptic_feedback_title": "Haptic Feedback", "haptic_feedback_title": "Haptic Feedback",
"header_settings_add_header_tip": "Add Header", "header_settings_add_header_tip": "Add Header",
@@ -230,6 +244,8 @@
"image_viewer_page_state_provider_download_started": "Download Started", "image_viewer_page_state_provider_download_started": "Download Started",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_success": "Download Success",
"image_viewer_page_state_provider_share_error": "Share Error", "image_viewer_page_state_provider_share_error": "Share Error",
"invalid_date": "Invalid date",
"invalid_date_format": "Invalid date format",
"library_page_albums": "Albums", "library_page_albums": "Albums",
"library_page_archive": "Archive", "library_page_archive": "Archive",
"library_page_device_albums": "Albums on Device", "library_page_device_albums": "Albums on Device",
@@ -311,6 +327,7 @@
"multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping", "multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping",
"multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping", "multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping",
"no_assets_to_show": "No assets to show", "no_assets_to_show": "No assets to show",
"no_name": "No name",
"notification_permission_dialog_cancel": "Cancel", "notification_permission_dialog_cancel": "Cancel",
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.", "notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
"notification_permission_dialog_settings": "Settings", "notification_permission_dialog_settings": "Settings",
@@ -354,17 +371,30 @@
"scaffold_body_error_occurred": "Error occurred", "scaffold_body_error_occurred": "Error occurred",
"search_bar_hint": "Search your photos", "search_bar_hint": "Search your photos",
"search_filter_apply": "Apply filter", "search_filter_apply": "Apply filter",
"search_filter_camera": "Camera",
"search_filter_camera_make": "Make", "search_filter_camera_make": "Make",
"search_filter_camera_model": "Model", "search_filter_camera_model": "Model",
"search_filter_camera_title": "Select camera type",
"search_filter_date": "Date",
"search_filter_date_interval": "{start} to {end}",
"search_filter_date_title": "Select a date range",
"search_filter_display_option_archive": "Archive", "search_filter_display_option_archive": "Archive",
"search_filter_display_option_favorite": "Favorite", "search_filter_display_option_favorite": "Favorite",
"search_filter_display_option_not_in_album": "Not in album", "search_filter_display_option_not_in_album": "Not in album",
"search_filter_display_options": "Display Options",
"search_filter_display_options_title": "Display options",
"search_filter_location": "Location",
"search_filter_location_city": "City", "search_filter_location_city": "City",
"search_filter_location_country": "Country", "search_filter_location_country": "Country",
"search_filter_location_state": "State", "search_filter_location_state": "State",
"search_filter_location_title": "Select location",
"search_filter_media_type": "Media Type",
"search_filter_media_type_all": "All", "search_filter_media_type_all": "All",
"search_filter_media_type_image": "Image", "search_filter_media_type_image": "Image",
"search_filter_media_type_title": "Select media type",
"search_filter_media_type_video": "Video", "search_filter_media_type_video": "Video",
"search_filter_people": "People",
"search_filter_people_title": "Select people",
"search_page_categories": "Categories", "search_page_categories": "Categories",
"search_page_favorites": "Favorites", "search_page_favorites": "Favorites",
"search_page_motion_photos": "Motion Photos", "search_page_motion_photos": "Motion Photos",

View File

@@ -51,9 +51,6 @@ PODS:
- fluttertoast (0.0.2): - fluttertoast (0.0.2):
- Flutter - Flutter
- Toast - Toast
- FMDB (2.7.5):
- FMDB/standard (= 2.7.5)
- FMDB/standard (2.7.5)
- geolocator_apple (1.2.0): - geolocator_apple (1.2.0):
- Flutter - Flutter
- image_picker_ios (0.0.1): - image_picker_ios (0.0.1):
@@ -73,7 +70,7 @@ PODS:
- FlutterMacOS - FlutterMacOS
- path_provider_ios (0.0.1): - path_provider_ios (0.0.1):
- Flutter - Flutter
- permission_handler_apple (9.1.1): - permission_handler_apple (9.3.0):
- Flutter - Flutter
- photo_manager (2.0.0): - photo_manager (2.0.0):
- Flutter - Flutter
@@ -90,7 +87,7 @@ PODS:
- FlutterMacOS - FlutterMacOS
- sqflite (0.0.3): - sqflite (0.0.3):
- Flutter - Flutter
- FMDB (>= 2.7.5) - FlutterMacOS
- SwiftyGif (5.4.5) - SwiftyGif (5.4.5)
- Toast (4.0.0) - Toast (4.0.0)
- url_launcher_ios (0.0.1): - url_launcher_ios (0.0.1):
@@ -123,7 +120,7 @@ DEPENDENCIES:
- photo_manager (from `.symlinks/plugins/photo_manager/ios`) - photo_manager (from `.symlinks/plugins/photo_manager/ios`)
- share_plus (from `.symlinks/plugins/share_plus/ios`) - share_plus (from `.symlinks/plugins/share_plus/ios`)
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
- sqflite (from `.symlinks/plugins/sqflite/ios`) - sqflite (from `.symlinks/plugins/sqflite/darwin`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
- video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`) - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`)
- wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`) - wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`)
@@ -132,7 +129,6 @@ SPEC REPOS:
trunk: trunk:
- DKImagePickerController - DKImagePickerController
- DKPhotoGallery - DKPhotoGallery
- FMDB
- MapLibre - MapLibre
- ReachabilitySwift - ReachabilitySwift
- SAMKeychain - SAMKeychain
@@ -184,7 +180,7 @@ EXTERNAL SOURCES:
shared_preferences_foundation: shared_preferences_foundation:
:path: ".symlinks/plugins/shared_preferences_foundation/darwin" :path: ".symlinks/plugins/shared_preferences_foundation/darwin"
sqflite: sqflite:
:path: ".symlinks/plugins/sqflite/ios" :path: ".symlinks/plugins/sqflite/darwin"
url_launcher_ios: url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios" :path: ".symlinks/plugins/url_launcher_ios/ios"
video_player_avfoundation: video_player_avfoundation:
@@ -200,33 +196,32 @@ SPEC CHECKSUMS:
file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655 file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086 flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086
flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef flutter_native_splash: edf599c81f74d093a4daf8e17bd7a018854bc778
flutter_udid: a2482c67a61b9c806ef59dd82ed8d007f1b7ac04 flutter_udid: a2482c67a61b9c806ef59dd82ed8d007f1b7ac04
flutter_web_auth: c25208760459cec375a3c39f6a8759165ca0fa4d flutter_web_auth: c25208760459cec375a3c39f6a8759165ca0fa4d
fluttertoast: 31b00dabfa7fb7bacd9e7dbee580d7a2ff4bf265 fluttertoast: e9a18c7be5413da53898f660530c56f35edfba9c
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a geolocator_apple: 6cbaf322953988e009e5ecb481f07efece75c450
geolocator_apple: 9157311f654584b9bb72686c55fc02a97b73f461 image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1
image_picker_ios: 4a8aadfbb6dc30ad5141a2ce3832af9214a705b5
integration_test: ce0a3ffa1de96d1a89ca0ac26fca7ea18a749ef4 integration_test: ce0a3ffa1de96d1a89ca0ac26fca7ea18a749ef4
isar_flutter_libs: b69f437aeab9c521821c3f376198c4371fa21073 isar_flutter_libs: b69f437aeab9c521821c3f376198c4371fa21073
MapLibre: 620fc933c1d6029b33738c905c1490d024e5d4ef MapLibre: 620fc933c1d6029b33738c905c1490d024e5d4ef
maplibre_gl: a2efec727dd340e4c65e26d2b03b584f14881fd9 maplibre_gl: a2efec727dd340e4c65e26d2b03b584f14881fd9
package_info_plus: 115f4ad11e0698c8c1c5d8a689390df880f47e85 package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c
path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943 path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02 path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02
permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6 permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
photo_manager: ff695c7a1dd5bc379974953a2b5c0a293f7c4c8a photo_manager: ff695c7a1dd5bc379974953a2b5c0a293f7c4c8a
ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825 ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
SAMKeychain: 483e1c9f32984d50ca961e26818a534283b4cd5c SAMKeychain: 483e1c9f32984d50ca961e26818a534283b4cd5c
SDWebImage: 066c47b573f408f18caa467d71deace7c0f8280d SDWebImage: 066c47b573f408f18caa467d71deace7c0f8280d
share_plus: c3fef564749587fc939ef86ffb283ceac0baf9f5 share_plus: 8875f4f2500512ea181eef553c3e27dba5135aad
shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126 shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
sqflite: 31f7eba61e3074736dff8807a9b41581e4f7f15a sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
Toast: 91b396c56ee72a5790816f40d3a94dd357abc196 Toast: 91b396c56ee72a5790816f40d3a94dd357abc196
url_launcher_ios: bbd758c6e7f9fd7b5b1d4cde34d2b95fcce5e812 url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
video_player_avfoundation: 02011213dab73ae3687df27ce441fbbcc82b5579 video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3
wakelock_plus: 8b09852c8876491e4b6d179e17dfe2a0b5f60d47 wakelock_plus: 78ec7c5b202cab7761af8e2b2b3d0671be6c4ae1
PODFILE CHECKSUM: 64c9b5291666c0ca3caabdfe9865c141ac40321d PODFILE CHECKSUM: 64c9b5291666c0ca3caabdfe9865c141ac40321d

View File

@@ -155,6 +155,7 @@
9705A1C41CF9048500538489 /* Embed Frameworks */, 9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
D218A34AEE62BC1EF119F5B0 /* [CP] Embed Pods Frameworks */, D218A34AEE62BC1EF119F5B0 /* [CP] Embed Pods Frameworks */,
C494C1A226E78FAB736DAB6C /* [CP] Copy Pods Resources */,
); );
buildRules = ( buildRules = (
); );
@@ -267,6 +268,23 @@
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n"; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n";
}; };
C494C1A226E78FAB736DAB6C /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
showEnvVarsInLog = 0;
};
D218A34AEE62BC1EF119F5B0 /* [CP] Embed Pods Frameworks */ = { D218A34AEE62BC1EF119F5B0 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@@ -383,7 +401,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/RunnerProfile.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/RunnerProfile.entitlements;
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 165; CURRENT_PROJECT_VERSION = 167;
DEVELOPMENT_TEAM = 2F67MQ8R79; DEVELOPMENT_TEAM = 2F67MQ8R79;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
@@ -525,7 +543,7 @@
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 165; CURRENT_PROJECT_VERSION = 167;
DEVELOPMENT_TEAM = 2F67MQ8R79; DEVELOPMENT_TEAM = 2F67MQ8R79;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
@@ -553,7 +571,7 @@
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 165; CURRENT_PROJECT_VERSION = 167;
DEVELOPMENT_TEAM = 2F67MQ8R79; DEVELOPMENT_TEAM = 2F67MQ8R79;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;

View File

@@ -58,11 +58,11 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.110.0</string> <string>1.111.0</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>165</string> <string>167</string>
<key>FLTEnableImpeller</key> <key>FLTEnableImpeller</key>
<true/> <true/>
<key>ITSAppUsesNonExemptEncryption</key> <key>ITSAppUsesNonExemptEncryption</key>

View File

@@ -19,7 +19,7 @@ platform :ios do
desc "iOS Release" desc "iOS Release"
lane :release do lane :release do
increment_version_number( increment_version_number(
version_number: "1.110.0" version_number: "1.111.0"
) )
increment_build_number( increment_build_number(
build_number: latest_testflight_build_number + 1, build_number: latest_testflight_build_number + 1,

View File

@@ -1,5 +1,108 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:immich_mobile/utils/immich_app_theme.dart';
const Color immichBackgroundColor = Color(0xFFf6f8fe); enum ImmichColorPreset {
const Color immichDarkBackgroundColor = Color.fromARGB(255, 0, 0, 0); indigo,
const Color immichDarkThemePrimaryColor = Color.fromARGB(255, 173, 203, 250); deepPurple,
pink,
red,
orange,
yellow,
lime,
green,
cyan,
slateGray
}
const ImmichColorPreset defaultColorPreset = ImmichColorPreset.indigo;
const String defaultColorPresetName = "indigo";
const Color immichBrandColorLight = Color(0xFF4150AF);
const Color immichBrandColorDark = Color(0xFFACCBFA);
final Map<ImmichColorPreset, ImmichTheme> _themePresetsMap = {
ImmichColorPreset.indigo: ImmichTheme(
light: ColorScheme.fromSeed(
seedColor: immichBrandColorLight,
).copyWith(primary: immichBrandColorLight),
dark: ColorScheme.fromSeed(
seedColor: immichBrandColorDark,
brightness: Brightness.dark,
).copyWith(primary: immichBrandColorDark),
),
ImmichColorPreset.deepPurple: ImmichTheme(
light: ColorScheme.fromSeed(seedColor: const Color(0xFF6F43C0)),
dark: ColorScheme.fromSeed(
seedColor: const Color(0xFFD3BBFF),
brightness: Brightness.dark,
),
),
ImmichColorPreset.pink: ImmichTheme(
light: ColorScheme.fromSeed(seedColor: const Color(0xFFED79B5)),
dark: ColorScheme.fromSeed(
seedColor: const Color(0xFFED79B5),
brightness: Brightness.dark,
),
),
ImmichColorPreset.red: ImmichTheme(
light: ColorScheme.fromSeed(seedColor: const Color(0xFFC51C16)),
dark: ColorScheme.fromSeed(
seedColor: const Color(0xFFD3302F),
brightness: Brightness.dark,
),
),
ImmichColorPreset.orange: ImmichTheme(
light: ColorScheme.fromSeed(
seedColor: const Color(0xffff5b01),
dynamicSchemeVariant: DynamicSchemeVariant.fidelity,
),
dark: ColorScheme.fromSeed(
seedColor: const Color(0xFFCC6D08),
brightness: Brightness.dark,
dynamicSchemeVariant: DynamicSchemeVariant.fidelity,
),
),
ImmichColorPreset.yellow: ImmichTheme(
light: ColorScheme.fromSeed(seedColor: const Color(0xFFFFB400)),
dark: ColorScheme.fromSeed(
seedColor: const Color(0xFFFFB400),
brightness: Brightness.dark,
),
),
ImmichColorPreset.lime: ImmichTheme(
light: ColorScheme.fromSeed(seedColor: const Color(0xFFCDDC39)),
dark: ColorScheme.fromSeed(
seedColor: const Color(0xFFCDDC39),
brightness: Brightness.dark,
),
),
ImmichColorPreset.green: ImmichTheme(
light: ColorScheme.fromSeed(seedColor: const Color(0xFF18C249)),
dark: ColorScheme.fromSeed(
seedColor: const Color(0xFF18C249),
brightness: Brightness.dark,
),
),
ImmichColorPreset.cyan: ImmichTheme(
light: ColorScheme.fromSeed(seedColor: const Color(0xFF00BCD4)),
dark: ColorScheme.fromSeed(
seedColor: const Color(0xFF00BCD4),
brightness: Brightness.dark,
),
),
ImmichColorPreset.slateGray: ImmichTheme(
light: ColorScheme.fromSeed(
seedColor: const Color(0xFF696969),
dynamicSchemeVariant: DynamicSchemeVariant.neutral,
),
dark: ColorScheme.fromSeed(
seedColor: const Color(0xff696969),
brightness: Brightness.dark,
dynamicSchemeVariant: DynamicSchemeVariant.neutral,
),
),
};
extension ImmichColorModeExtension on ImmichColorPreset {
ImmichTheme getTheme() => _themePresetsMap[this]!;
}

View File

@@ -229,6 +229,11 @@ enum StoreKey<T> {
mapwithPartners<bool>(125, type: bool), mapwithPartners<bool>(125, type: bool),
enableHapticFeedback<bool>(126, type: bool), enableHapticFeedback<bool>(126, type: bool),
customHeaders<String>(127, type: String), customHeaders<String>(127, type: String),
// theme settings
primaryColor<String>(128, type: String),
dynamicTheme<bool>(129, type: bool),
colorfulInterface<bool>(130, type: bool),
; ;
const StoreKey( const StoreKey(

View File

@@ -20,10 +20,10 @@ extension ContextHelper on BuildContext {
bool get isDarkTheme => themeData.brightness == Brightness.dark; bool get isDarkTheme => themeData.brightness == Brightness.dark;
// Returns the current Primary color of the Theme // Returns the current Primary color of the Theme
Color get primaryColor => themeData.primaryColor; Color get primaryColor => themeData.colorScheme.primary;
// Returns the Scaffold background color of the Theme // Returns the Scaffold background color of the Theme
Color get scaffoldBackgroundColor => themeData.scaffoldBackgroundColor; Color get scaffoldBackgroundColor => colorScheme.surface;
// Returns the current TextTheme // Returns the current TextTheme
TextTheme get textTheme => themeData.textTheme; TextTheme get textTheme => themeData.textTheme;

View File

@@ -0,0 +1,24 @@
import 'package:flutter/material.dart';
extension ImmichColorSchemeExtensions on ColorScheme {
bool get _isDarkMode => brightness == Brightness.dark;
Color get onSurfaceSecondary => _isDarkMode
? onSurface.darken(amount: .3)
: onSurface.lighten(amount: .3);
}
extension ColorExtensions on Color {
Color lighten({double amount = 0.1}) {
return Color.alphaBlend(
Colors.white.withOpacity(amount),
this,
);
}
Color darken({double amount = 0.1}) {
return Color.alphaBlend(
Colors.black.withOpacity(amount),
this,
);
}
}

View File

@@ -65,6 +65,8 @@ Future<void> initApp() async {
} }
} }
await fetchSystemPalette();
// Initialize Immich Logger Service // Initialize Immich Logger Service
ImmichLogger(); ImmichLogger();
@@ -187,6 +189,7 @@ class ImmichAppState extends ConsumerState<ImmichApp>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var router = ref.watch(appRouterProvider); var router = ref.watch(appRouterProvider);
var immichTheme = ref.watch(immichThemeProvider);
return MaterialApp( return MaterialApp(
localizationsDelegates: context.localizationDelegates, localizationsDelegates: context.localizationDelegates,
@@ -196,9 +199,9 @@ class ImmichAppState extends ConsumerState<ImmichApp>
home: MaterialApp.router( home: MaterialApp.router(
title: 'Immich', title: 'Immich',
debugShowCheckedModeBanner: false, debugShowCheckedModeBanner: false,
themeMode: ref.watch(immichThemeProvider), themeMode: ref.watch(immichThemeModeProvider),
darkTheme: immichDarkTheme, darkTheme: getThemeData(colorScheme: immichTheme.dark),
theme: immichLightTheme, theme: getThemeData(colorScheme: immichTheme.light),
routeInformationParser: router.defaultRouteParser(), routeInformationParser: router.defaultRouteParser(),
routerDelegate: router.delegate( routerDelegate: router.delegate(
navigatorObservers: () => [TabNavigationObserver(ref: ref)], navigatorObservers: () => [TabNavigationObserver(ref: ref)],

View File

@@ -43,7 +43,7 @@ class Activity {
assetId = dto.assetId, assetId = dto.assetId,
comment = dto.comment, comment = dto.comment,
createdAt = dto.createdAt, createdAt = dto.createdAt,
type = dto.type == ActivityResponseDtoTypeEnum.comment type = dto.type == ReactionType.comment
? ActivityType.comment ? ActivityType.comment
: ActivityType.like, : ActivityType.like,
user = User.fromSimpleUserDto(dto.user); user = User.fromSimpleUserDto(dto.user);

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