Compare commits

...

113 Commits

Author SHA1 Message Date
Alex The Bot
58ae734fc2 Version v1.76.1 2023-08-30 08:26:04 +00:00
Mert
54b2779b79 chore(ml): improved logging (#3918)
* fixed `minScore` not being set correctly

* apply to init

* don't send `enabled`

* fix eslint warning

* added logger

* added logging

* refinements

* enable access log for info level

* formatting

* merged strings

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2023-08-30 08:22:01 +00:00
Mert
df26e12db6 fix(ml): minScore not being set correctly (#3916)
* fixed `minScore` not being set correctly

* apply to init

* don't send `enabled`

* fix eslint warning

* better error message
2023-08-30 03:16:00 -05:00
Alex
343d89c032 chore: post release 2023-08-29 14:51:57 -05:00
Alex The Bot
49c2d4d115 Version v1.76.0 2023-08-29 19:24:43 +00:00
Alex Tran
58aefc928d Merge branch 'main' of github.com:immich-app/immich 2023-08-29 14:09:06 -05:00
Alex
70d8902737 Revert "feat(mobile): upload image assets before videos (#3872)" (#3910)
This reverts commit 912a13ea0d.
2023-08-29 14:08:53 -05:00
Alex Tran
78eeebf8e6 Revert "feat(mobile): upload image assets before videos (#3872)"
This reverts commit 912a13ea0d.
2023-08-29 14:07:59 -05:00
Daniele Ricci
585330b179 Refer to FFmpeg documentation (#3908)
* Fix unsecure URL

* Some links to FFmpeg docs
2023-08-29 13:54:06 -05:00
waclaw66
5b1ac27058 fix(web): null location (#3906) 2023-08-29 13:49:51 -05:00
Mert
bcc36d14a1 feat(ml)!: customizable ML settings (#3891)
* consolidated endpoints, added live configuration

* added ml settings to server

* added settings dashboard

* updated deps, fixed typos

* simplified modelconfig

updated tests

* Added ml setting accordion for admin page

updated tests

* merge `clipText` and `clipVision`

* added face distance setting

clarified setting

* add clip mode in request, dropdown for face models

* polished ml settings

updated descriptions

* update clip field on error

* removed unused import

* add description for image classification threshold

* pin safetensors for arm wheel

updated poetry lock

* moved dto

* set model type only in ml repository

* revert form-data package install

use fetch instead of axios

* added slotted description with link

updated facial recognition description

clarified effect of disabling tasks

* validation before model load

* removed unnecessary getconfig call

* added migration

* updated api

updated api

updated api

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-08-29 08:58:00 -05:00
waclaw66
22f5e05060 fix(web, mobile): camera info (#3904)
* fix(web): camera lens info

* fix(mobile): camera lens ISO fix

* fix svelte-check
2023-08-29 08:57:20 -05:00
Mert
e510e733cd fix(server): extract motion photo android single frame (#3903) 2023-08-29 04:01:42 -05:00
Alex
d0a06739d8 chore(server): bump server dependencies (#3899)
* chore(server): bump server dependencies

* fix: test
2023-08-28 14:41:57 -05:00
dependabot[bot]
26c43617d1 chore(deps): bump docker/setup-buildx-action from 2.9.1 to 2.10.0 (#3897)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2.9.1 to 2.10.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v2.9.1...v2.10.0)

---
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>
2023-08-28 06:25:14 -05:00
Alex
0a89c7ffc4 chore(mobile): add more catch all error log detail (#3893) 2023-08-27 23:54:04 -05:00
Daniel Dietzler
7097cf6319 fix(admin-cli): Fixes immich-admin because npm bin does not like arguments (#3864)
* fix admin cli

* move script to bin, actually pass arguments

* remove accidentally created package-lock.json
2023-08-27 09:35:49 -05:00
shalong-tanwen
912a13ea0d feat(mobile): upload image assets before videos (#3872)
* feat(mobile): upload image assets before videos

* mobile: sort by creation date before uploading assets
2023-08-27 02:18:17 -05:00
shalong-tanwen
cb391342d7 feat(mobile): map view (#3661)
* feat(mobile): map page - add map view

* map: add map-markers

* feat(map): add relative date filter

* fix: do not let users scroll past map bounds

* fix: fetch relative date from store to state on init

* feat(mobile):re-fetch markers only on filter change

* feat(mobile) - asset bottom sheet in map page

* feat(mobile): display markers based on bottom sheet scroll

* fix: exif-bottom-sheet - rebase conflict

* feat(mobile): map-view - strongly typed map page events

* feat(map): zoom to asset

* chore: dart analyzer fixes

* map-page move attribution to top-right

* feat(mobile): map view - asset selection handling

* feat(mobile): map-view display map in places row

* fix: make asset marker icon responsive

* optimise map page rebuilds

* refactor(mobile): map page

* feat(mobile): map-view: Go to location

* map-view(mobile): minor refactor

* fix(mobile): Handle invalid coords gracefully

* small styling

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-08-27 05:07:35 +00:00
Skyler Mäntysaari
305889f32b chore(web): Fixing up missing awaits (#3882)
* chore(web): Fixing up some missing awaits.

* chore(web/shared-viewer): Update import to shorted version.
2023-08-26 23:31:52 -05:00
Alex The Bot
f1027d7807 Version v1.75.2 2023-08-26 22:34:54 +00:00
Alex
2806ac6eb4 fix(web): refresh job page render incorrect job buttons (#3884)
* fix(web): refresh job page render incorrect job buttons

* lint
2023-08-26 17:32:22 -05:00
Alex The Bot
cc1fecfffd Version v1.75.1 2023-08-26 18:31:14 +00:00
Alex
e02817362c fix(server): initialization search service (#3879) 2023-08-26 13:29:34 -05:00
shalong-tanwen
1b0484fc46 fix(mobile): Widget overflow due to exception on logout (#3869) 2023-08-26 00:06:55 -05:00
Alex The Bot
6fe214a784 Version v1.75.0 2023-08-26 04:44:39 +00:00
Alex
e18a9f84a4 feat(web): slideshow mode (#3813)
* slideshow

slideshow for main screen

Added control buttons

update

close detail panel window sif opened

format

5 seconds

remove unused files

handle video player

format

* fix: restrict slideshow to timeline views

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-08-25 18:20:45 -05:00
Daniel Dietzler
59bb727636 feat(web, server): Ability to use config file instead of admin UI (#3836)
* implement method to read config file

* getConfig returns config file if present

* return isConfigFile for http requests

* disable elements if config file is used, show message if config file is set, copy existing config to clipboard

* fix allowing partial configuration files

* add new env variable to docs

* fix tests

* minor refactoring, address review

* adapt config type in frontend

* remove unnecessary imports

* move config file reading to system-config repo

* add documentation

* fix code formatting in system settings page

* add validator for config file

* fix formatting in docs

* update generated files

* throw error when trying to update config. e.g. via cli or api

* switch to feature flags for isConfigFile

* refactoring

* refactor: config file

* chore: open api

* feat: always show copy/export buttons

* fix: default flags

* refactor: copy to clipboard

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-08-25 13:44:52 -04:00
Le_Futuriste
20e0c03b39 feat(web): add link to external map in leaflet popup (#3847)
* feat(web): add link to external map in leaflet popup

Sometimes it's useful to open a geo location to an external map
application to not have to copy the coordinates manually.
Here I put a link to OpenStreetMap because it's what I personally use.
But I known some people would want to use something different. We could
instead link to geohacks (eg. https://geohack.toolforge.org/geohack.php?params=048.861085_N_0002.313158_E_globe:Earth)
or make it a configurable param.

* chore: cleanup

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-08-25 13:19:49 +00:00
waclaw66
6d1567cf44 smaller album title (#3860) 2023-08-25 14:10:08 +02:00
waclaw66
dc3f53a973 album and face menu dots visible on hover only (#3859) 2023-08-25 06:35:52 -05:00
waclaw66
dad7cf47b4 fix(web): delete album consolidation (#3858) 2023-08-25 13:03:16 +02:00
Mert
165b91b068 feat(ml)!: switch image classification and CLIP models to ONNX (#3809) 2023-08-25 06:28:51 +02:00
Jason Rasmussen
8211afb726 feat(web,server)!: configure machine learning via the UI (#3768) 2023-08-25 06:15:03 +02:00
James58899
2cccef174a fix(mobile): missing conversion to UTC time zone (#3495) 2023-08-25 06:08:19 +02:00
Jason Rasmussen
9bbef4a97b refactor(web): shared link key auth (#3855) 2023-08-25 06:03:28 +02:00
Jason Rasmussen
10c2bda3a9 chore: remove without thumbs (#3529)
* refactor(server): remove withoutThumbs

* chore: open api

* fix: bad merge
2023-08-24 21:45:54 -04:00
Fynn Petersen-Frey
cf9e04c8ec feat(server): asset entity audit (#3824)
* feat(server): audit log

* feedback

* Insert to database

* migration

* test

* controller/repository/service

* test

* module

* feat(server): implement audit endpoint

* directly return changed assets

* add daily cleanup of audit table

* fix tests

* review feedback

* ci

* refactor(server): audit implementation

* chore: open api

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
Co-authored-by: Fynn Petersen-Frey <zoodyy@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-08-24 15:28:50 -04:00
Daniele Ricci
d6887117ac chore(web): improve drop shadow on three-dots icon (#3835) 2023-08-23 07:20:50 +02:00
Alex
3b11be2859 fix(web): cannot view publlic shared album (#3829) 2023-08-22 08:05:48 +02:00
Alex
d7f52739e8 fix(web): shared link return 404 (#3791) 2023-08-22 07:22:49 +02:00
waclaw66
71ea46d95e fix(web): merge face thumbnail (#3822) 2023-08-22 04:34:53 +02:00
Daniele Ricci
e2afc43506 Use proper text/drop shadow on tree-dots icon and face name (#3800) 2023-08-20 18:36:31 -05:00
waclaw66
6aed1180e7 fix(web): album list padding (#3790) 2023-08-20 18:30:52 -05:00
Flyot
476b735e3c fix(web): ContextMenu unsatisfying UI behaviors (#3787) 2023-08-20 18:28:25 -05:00
Mert
7ad12c7f33 use camera wb for raw (#3806) 2023-08-20 18:26:01 -05:00
Mert
60729a091a make lazy loading default (#3797) 2023-08-20 18:24:14 -05:00
Alex The Bot
d2bad1d553 Version v1.74.0 2023-08-19 06:09:16 +00:00
Jason Rasmussen
3e31ad51be feat: shared link album time buckets (#3776) 2023-08-18 22:19:42 -05:00
Jason Rasmussen
fbeb4664f7 feat(web): archive from album (#3773) 2023-08-18 17:55:06 -05:00
Steffen Auer
4ee8a30a5a chore(mobile): ios map launch, use OSM as map fallback, use dates as labels (#3772) 2023-08-18 17:53:50 -05:00
martyfuhry
6243bce46c chore(mobile): Bump to Flutter 3.13 (#3767)
* Bump to Flutter 3.13.0

* Updates permission status

* Adds hidden to app livecycle state

* Updates and switches to WakelockPlus

* bump flutter version github action

* mobile test version

* fix format

* video player

* video uri

* ios test

* Update android target sdk requirement to PlayStore

---------

Co-authored-by: Alex Tran <Alex.Tran@conductix.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-08-18 17:52:40 -05:00
Daniele Ricci
98b72fdb9b feat: set person birth date (web only) (#3721)
* Person birth date (data layer)

* Person birth date (data layer)

* Person birth date (service layer)

* Person birth date (service layer, API)

* Person birth date (service layer, API)

* Person birth date (UI) (wip)

* Person birth date (UI) (wip)

* Person birth date (UI) (wip)

* Person birth date (UI) (wip)

* UI: Use "date of birth" everywhere

* UI: better modal dialog

Similar to the API key modal.

* UI: set date of birth from people page

* Use typed events for modal dispatcher

* Date of birth tests (wip)

* Regenerate API

* Code formatting

* Fix Svelte typing

* Fix Svelte typing

* Fix person model [skip ci]

* Minor refactoring [skip ci]

* Typed event dispatcher [skip ci]

* Refactor typed event dispatcher [skip ci]

* Fix unchanged birthdate check [skip ci]

* Remove unnecessary custom transformer [skip ci]

* PersonUpdate: call search index update job only when needed

* Regenerate API

* Code formatting

* Fix tests

* Fix DTO

* Regenerate API

* chore: verbiage and view mode

* feat: show current age

* test: person e2e

* fix: show name for birth date selection

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-08-18 16:10:29 -04:00
Jason Rasmussen
5e901e4d21 feat(web,server): run jobs for specific assets (#3712)
* feat(web,server): manually queue asset job

* chore: open api

* chore: tests
2023-08-18 09:31:48 -05:00
Craeckie
66490d5db4 chore: Enable logging, but reduce verboseness of typesense container (#3761)
Co-authored-by: ultrabook <ultrabook>
2023-08-18 09:25:52 -05:00
Jason Rasmussen
2b839088c7 feat(web,server): server features (#3756)
* feat: server features

* chore: open api

* icon size

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-08-18 04:55:26 +00:00
Alex
28d3d3e679 fix(mobile): invalid range on label builder crash timeline (#3759)
* fix(mobile): invalid date on label builder crash timeline

* actual fix

---------

Co-authored-by: Alex Tran <Alex.Tran@conductix.com>
2023-08-17 23:50:41 -05:00
Alex
2de30e34f4 feat(mobile): Improve album UI and Interactions (#3754)
* fix: outlick editable field does not change edit icon

* fix: unfocus on submit change album name

* styling

* styling

* confirm dialog

* Confirm deletion

* render user

* user avatar with image

* use UserCircleAvatar

* rights

* stlying

* remove/leave options

* styling

* state management

---------

Co-authored-by: Alex Tran <Alex.Tran@conductix.com>
2023-08-17 23:26:12 -05:00
Jason Rasmussen
2ff71b0d27 fix(web): play videos on safari (#3748)
* fix(web): play videos on safari

* autoplay

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-08-17 13:52:50 -05:00
Jason Rasmussen
cdb45364c3 feat(server): add support for the tif extension (#3743) 2023-08-17 10:27:29 -05:00
Jason Rasmussen
8ba338fbe1 refactor(web): harden video can play method (#3745) 2023-08-17 10:02:12 -05:00
Kevin
ce84f9c755 feat(web): album list options (#3667)
* Album view option for cover or list view

* Dropdown can now receive list of icons to display with selected option

* Formatting

* Use table element with formatting similar to other pages

* Make table rows clickable with hover styling

* Also make row navigateable using keyboard without mouse

* Formatting

* Define DropdownOption interface

* Album view mode type definition for typescript support in if statements

* format

* fix typing

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-08-17 08:46:39 -05:00
shalong-tanwen
d1e74a28d9 fix(mobile): LivePhoto video not uploaded during manual asset upload (#3732) 2023-08-17 07:29:49 -05:00
martin
78a2a9e666 refactor(web): user-settings (#3700)
* refactor(web): user-settings

* feat: move the logic to the server

* use const

* fix: error 403

* fix: remove console.log
2023-08-16 22:56:06 -05:00
Lucas Eduardo
53f5643994 fix: shebangs (#3643)
Signed-off-by: lucasew <lucas59356@gmail.com>
2023-08-16 22:50:01 -05:00
Daniele Ricci
4ee634766d fix(web): label for attribute (#3731) 2023-08-16 16:09:38 -05:00
Jason Rasmussen
bab739efbd restore: bulk actions (#3730)
* feat: improve bulk isArchive and isFavorite updates

* chore: open api
2023-08-16 15:04:55 -05:00
Daniele Ricci
8568ec838a fix(web): Fix label for attribute (#3726) 2023-08-16 13:27:57 -05:00
Jason Rasmussen
4cbb18aabc feat(web): remove and delete from album (#3725) 2023-08-16 13:25:39 -05:00
Daniele Ricci
3fb60aca4f chore(web): better explain what the thumbnails type are for (#3724) 2023-08-16 13:25:07 -05:00
Skyler Mäntysaari
19bbdebdf7 fix(mobile): Do not show version announcement if user is not admin. (#3703) 2023-08-15 21:12:49 -05:00
martin
bc66b1a556 fix(web): user-management layout (#3704)
* fix: user-management layout

* better user form scrollbar

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-08-16 01:46:23 +00:00
Jason Rasmussen
4762fd83d4 fix(server): link live photos after metadata extraction finishes (#3702)
* fix(server): link live photos after metadata extraction finishes

* chore: fix test

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2023-08-15 20:34:57 -05:00
martin
c27c12d975 fix(server): people sorting (#3713) 2023-08-15 19:06:49 -05:00
Jason Rasmussen
0abbd85134 fix(web,server): album share performance (#3698) 2023-08-15 13:34:02 -05:00
Jason Rasmussen
af1f00dff9 chore(server): cleanup (#3699) 2023-08-15 11:05:32 -05:00
Vantao
35b4c9d375 doc: update README_zh_CN.md (#3701) 2023-08-15 16:05:00 +00:00
Sergey Kondrikov
74da15e20d fix(web,server): disable partner's archive access (#3695) 2023-08-15 11:02:38 -05:00
Jason Rasmussen
efc7fdb669 fix(web,server): use POST request to get download info (#3694)
* fix(web,server): use POST request to get download info

* chore: open api
2023-08-15 10:49:32 -05:00
Alex
a75f368d5b chore: post update 2023-08-15 09:42:28 -05:00
Alex The Bot
a3b6095b61 Version v1.73.0 2023-08-15 12:45:48 +00:00
Jason Rasmussen
7ca6f80ed2 fix(server): display insta-360 (#3688) 2023-08-15 03:14:52 +00:00
Russell Tan
f1b8a7ab54 fix(server): Does not assign lat/lon if they are at 0,0 #2991 (#3669)
* fix(server): Does not assign lat/lon if they are at 0,0 #2991

* Adds migration file to fix null island rows

* Removed down migration

* Leave empty down function
2023-08-14 20:37:17 -05:00
Jason Rasmussen
079aa13edb fix(web): use server api media types (#3687) 2023-08-14 20:22:33 -05:00
Alex
67bac9ff59 [Localizely] Translations update (#3682) 2023-08-14 13:16:16 -05:00
Alex
0d80ae3a91 fix(mobile): make user.memoryEnable optional (#3680)
* chore(server): avoid breaking changes

* generate api

* mobile app
2023-08-14 12:52:06 -05:00
shalong-tanwen
b1b215f083 fix(server): sort un-named faces in query (#3662) 2023-08-14 11:09:26 -05:00
BMaster
f55c80eadf doc: how move assets,albums,persons from one account to another (#3652)
* Update FAQ.md

Added an item to document what can be done to move photos, albums and persons from one account to another,

* Update FAQ.md

typo in the numbering

* Update FAQ.md

add an 'advanced operation' warning

* Update FAQ.md

Typos

* chore: format

* chore: cleanup syntax codeblock

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-08-14 09:50:59 -05:00
abhi-chakrab
c81bb2b70a doc: update bulk-upload.md (#3673)
* Update bulk-upload.md

This PR is to add a small clarification to use the same volumes for read only gallery in the docker command. Since the current docker commands refer to "/import" volume mounts that caused some confusion to me.

* chore: formatting

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-08-14 09:39:47 -05:00
X
5fa9704a65 fix(mobile): Empty albums don't show title (#3576) 2023-08-13 08:39:46 -05:00
Mert
60d39a7d1f fix(sever): meson flag (#3656) 2023-08-13 08:26:13 -05:00
Mert
13564fbc17 fix(server): build sharp without tiff (#3655) 2023-08-12 21:02:33 -05:00
shalong-tanwen
77a5820c3c fix(mobile): manual asset upload - app state handling + cancel button (#3611)
* feat(mobile): Cancel manual asset upload

* fix(mobile): re-add the missing translation keys

* feat(mobile): show manual upload error in backup page

* refactor: manual upload in-progress count

* fix(mobile): handle app state properly during manual asset upload
2023-08-12 16:02:58 -05:00
Jorge Avila
b790354f9a fix(mobile): update useEffect to run on any change instead of only on lead (#3650)
-- this change is mainly for the AlbumInfoListTile widget
2023-08-12 10:02:24 -05:00
Jason Rasmussen
7948819e0c fix(server): time bucket and where (#3649) 2023-08-11 20:29:42 -05:00
Jason Rasmussen
5cd13227ad feat(web): timeline bucket for albums (4) (#3604)
* feat: server changes for album timeline

* feat(web): album timeline view

* chore: open api

* chore: remove archive action

* fix: favorite for non-owners
2023-08-11 11:00:51 -05:00
bo0tzz
36dc7bd924 Chore: clean up example.env file (#3561) 2023-08-10 14:11:07 -05:00
Jason Rasmussen
6bd7c6c06d feat(web): multi-line description edit input (#3640)
* feat(web): multi-line description edit input

* fix: remove focus border
2023-08-10 18:46:41 +00:00
X
e9b0840f01 fix(mobile): improve hero animation (#3636) 2023-08-10 08:38:49 -05:00
Russell Tan
a8b01dc21a fix(web): show warning if upload completed with errors (#3634) 2023-08-10 08:38:29 -05:00
waclaw66
a815592954 fix(web): fix single photo on a map (#3635) 2023-08-10 08:32:01 -05:00
Alex
f4475549d6 chore(web): better action button consistency (#3633)
Co-authored-by: Alex Tran <Alex.Tran@conductix.com>
2023-08-09 21:05:52 -05:00
Jason Rasmussen
a6eb227330 feat(web,server): user memory settings (#3628)
* feat(web,server): user preference for time-based memories

* chore: open api

* dev: mobile

* fix: update

* mobile work

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Alex Tran <Alex.Tran@conductix.com>
2023-08-09 21:01:16 -05:00
Fabian Nagel
343087e2b4 docs(guide): run ML on another machine (#3335)
* Add documentation for hosting the ML container on a different machine

* Revert "Add documentation for hosting the ML container on a different machine"

This reverts commit 11e635eb57.

* Moved to Guides section and removed .env file reference
2023-08-10 01:12:39 +00:00
Russell Tan
66b2ad7939 fix(web): show warning on duplicate uploads #2557 (#3613)
* fix(web): show warning on duplicate uploads #2557

* Prettier fix

* color

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-08-10 01:11:26 +00:00
shalong-tanwen
57a7103d75 feat(mobile): launch map app from exif info (#3626) 2023-08-09 14:47:49 -05:00
Mert
23b836ffbb fix(server): add video capability for nvenc (#3612) 2023-08-09 14:35:41 -05:00
Alex Tran
e54cf914d7 chore: update readme 2023-08-08 13:19:52 -05:00
Mert
fa57853bd2 fix(ml): clear cache if bad zip file (#3600) 2023-08-08 12:33:13 -05:00
Alex
ddd4ec2d9e feat(web/server): webp thumbnail size configurable (#3598)
* feat(server/web): webp thumbnail size configurable

* update api

* add ui and fix test

* lint

* setting for jpeg size

* feat: coerce to number

* api

* jpeg resolution

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-08-08 09:39:51 -05:00
Mert
1812e8811b fix(server): compile libraw (#3593) 2023-08-08 05:58:03 -05:00
Mert
1d37d8cac0 feat(server): tone-mapping (#3512)
* added tonemapping

* check for hdr in transcode policy

* merged video thumbnail and transcoding logic

* updated tests

* removed log

* added dashboard option, updated api

* `out_color_matrix` for sdr video thumbs, cleanup

* updated tests & styling

* refactored tonemapping setting

* fixed tests

* formatting

* added tests

* updated api

* set target npl higher for mobius and reinhard

* convert to nv12 before nvenc

* fix test

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-08-07 15:35:25 -05:00
Alex
19da705fcb [Localizely] Translations update (#3589) 2023-08-07 15:35:11 -05:00
541 changed files with 25092 additions and 10738 deletions

View File

@@ -45,7 +45,7 @@ jobs:
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
channel: "stable" channel: "stable"
flutter-version: "3.10.5" flutter-version: "3.13.0"
cache: true cache: true
- name: Create the Keystore - name: Create the Keystore

View File

@@ -42,7 +42,7 @@ jobs:
uses: docker/setup-qemu-action@v2.2.0 uses: docker/setup-qemu-action@v2.2.0
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.9.1 uses: docker/setup-buildx-action@v2.10.0
# Workaround to fix error: # Workaround to fix error:
# failed to push: failed to copy: io: read/write on closed pipe # failed to push: failed to copy: io: read/write on closed pipe
# See https://github.com/docker/build-push-action/issues/761 # See https://github.com/docker/build-push-action/issues/761
@@ -126,7 +126,7 @@ jobs:
uses: docker/setup-qemu-action@v2.2.0 uses: docker/setup-qemu-action@v2.2.0
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.9.1 uses: docker/setup-buildx-action@v2.10.0
# Workaround to fix error: # Workaround to fix error:
# failed to push: failed to copy: io: read/write on closed pipe # failed to push: failed to copy: io: read/write on closed pipe
# See https://github.com/docker/build-push-action/issues/761 # See https://github.com/docker/build-push-action/issues/761

View File

@@ -23,7 +23,7 @@ jobs:
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
channel: "stable" channel: "stable"
flutter-version: "3.10.5" flutter-version: "3.13.0"
- name: Install dependencies - name: Install dependencies
run: dart pub get run: dart pub get

View File

@@ -149,7 +149,7 @@ jobs:
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
channel: "stable" channel: "stable"
flutter-version: "3.10.5" flutter-version: "3.13.0"
- name: Run tests - name: Run tests
working-directory: ./mobile working-directory: ./mobile
run: flutter test -j 1 run: flutter test -j 1
@@ -171,6 +171,7 @@ jobs:
- name: Install dependencies - name: Install dependencies
run: | run: |
poetry install --with dev poetry install --with dev
poetry run pip install --no-deps -r requirements.txt
- name: Lint with ruff - name: Lint with ruff
run: | run: |
poetry run ruff check --format=github app poetry run ruff check --format=github app

View File

@@ -28,7 +28,8 @@
- ⚠️ The project is under **very active** development. - ⚠️ The project is under **very active** development.
- ⚠️ Expect bugs and breaking changes. - ⚠️ Expect bugs and breaking changes.
- ⚠️ **Do not use the app as the only way to store your photos and videos!** - ⚠️ **Do not use the app as the only way to store your photos and videos.**
- ⚠️ Always follow [3-2-1](https://www.backblaze.com/blog/the-3-2-1-backup-strategy/) backup plan for your precious photos and videos!
## Content ## Content

View File

@@ -13,7 +13,7 @@
</p> </p>
<h3 align="center">Immich - 高性能的自托管照片和视频备份方案</h3> <h3 align="center">Immich - 高性能的自托管照片和视频备份方案</h3>
<p align="center"> <p align="center">
请注意: 此README不是由Immich团队维护, 这意味着它在某一时间点不会被更新,因为我们是依靠贡献者来更新的。感谢理解。 请注意: 此 README 不是由 Immich 团队维护, 而是依靠贡献者来更新的,这意味着它可能并不会被及时更新。感谢理解。
</p> </p>
<br/> <br/>
<a href="https://immich.app"> <a href="https://immich.app">
@@ -31,29 +31,31 @@
## 免责声明 ## 免责声明
- ⚠️ 本项目正在 **非常活跃** 开发中。 - ⚠️ 本项目正在 **非常活跃** 开发中。
- ⚠️ 可能存在bug或者重大变更。 - ⚠️ 可能存在 bug 或者随时有重大变更。
- ⚠️ **不要把本软件作为存储照片或视频的唯一方式!** - ⚠️ **不要把本软件作为存储照片或视频的唯一方式**
- ⚠️ 为了您宝贵的照片与视频,始终遵守 [3-2-1](https://www.backblaze.com/blog/the-3-2-1-backup-strategy/) 备份方案!
## 目录 ## 目录
- [官方文档](https://immich.app/docs/overview/introduction) - [官方文档](https://immich.app/docs)
- [路线图](https://github.com/orgs/immich-app/projects/1)
- [示例](#示例) - [示例](#示例)
- [功能特性](#功能特性) - [功能特性](#功能特性)
- [介绍](https://immich.app/docs/overview/introduction) - [介绍](https://immich.app/docs/overview/introduction)
- [安装](https://immich.app/docs/install/requirements) - [安装](https://immich.app/docs/install/requirements)
- [贡献指南](https://immich.app/docs/overview/support-the-project) - [贡献指南](https://immich.app/docs/overview/support-the-project)
- [支持本项目](#support-the-project) - [支持本项目](#支持本项目)
- [已知问题](#known-issues)
## 官方文档 ## 官方文档
可以在 https://immich.app/ 找到包含安装手册的官方文档. 可以在 https://immich.app/ 找到官方文档(包含安装手册)。
## 示例 ## 示例
可以在 https://demo.immich.app 访问示例. 可以在 https://demo.immich.app 访问示例
在移动端, 可以使用 `https://demo.immich.app/api`获取`服务终端链接` 在移动端, 可以使用 `https://demo.immich.app/api` 获取 `服务终端链接`
```bash title="示例认证信息" ```bash title="示例认证信息"
认证信息 认证信息
@@ -62,57 +64,52 @@
``` ```
``` ```
规格: 甲骨文免费虚拟机套餐-阿姆斯特丹 4核 2.4Ghz ARM64 CPU, 24GB RAM。 规格: 甲骨文免费虚拟机套餐——阿姆斯特丹 4核 2.4Ghz ARM64 CPU, 24GB RAM。
``` ```
# 功能特性 # 功能特性
| 功能特性 | 移动端 | 网页端 | | 功能特性 | 移动端 | 网页端 |
| ------------------------------------------- | ------- | --- | | ------------------------------------------- | ------- | --- |
| 上传并查看照片和视频 | 是 | 是 | | 上传并查看照片和视频 | 是 | 是 |
| 软件运行时自动备份 | 是 | N/A | | 软件运行时自动备份 | 是 | N/A |
| 选择需要备份的相册 | 是 | N/A | | 选择需要备份的相册 | 是 | N/A |
| 下载照片和视频到本地 | 是 | 是 | | 下载照片和视频到本地 | 是 | 是 |
| 多用户支持 | 是 | 是 | | 多用户支持 | 是 | 是 |
| 相册 | 是 | 是 | | 相册 | 是 | 是 |
| 共享相册 | 是 | 是 | | 共享相册 | 是 | 是 |
| 可拖动的快速导航栏 | 是 | 是 | | 可拖动的快速导航栏 | 是 | 是 |
| 支持RAW格式 (HEIC, HEIF, DNG, Apple ProRaw) | 是 | 是 | | 支持RAW格式 (HEIC, HEIF, DNG, Apple ProRaw) | 是 | 是 |
| 元数据视图 (EXIF, 地图) | 是 | 是 | | 元数据视图EXIF, 地图 | 是 | 是 |
| 通过元数据、对象和标签进行搜索 | 是 | No | | 通过元数据、对象和标签进行搜索 | 是 | |
| 管理功能 (用户管理) | N/A | 是 | | 管理功能用户管理 | | 是 |
| 后台备份 | Android | N/A | | 后台备份 | | N/A |
| 虚拟滚动 | 是 | 是 | | 虚拟滚动 | 是 | 是 |
| OAuth支持 | 是 | 是 | | OAuth 支持 | 是 | 是 |
| 实时照片备份和查看 (仅iOS) | 是 | 是 | | API Keys|N/A|是|
| 实况照片备份和查看 | 仅 iOS | 是 |
|用户自定义存储结构|是|是|
|公共分享|否|是|
|归档与收藏功能|是|是|
|全局地图|否|是|
|好友分享|是|是|
|人像识别与分组|是|是|
|回忆(那年今日)|是|是|
|离线支持|是|否|
|只读相册|是|是|
# 支持本项目 # 支持本项目
我已经致力于本项目并且将我会持续更新文档、新增功能和修复问题。但是我不能一个人走下去,所以我需要给予我下去的动力。 我已经致力于本项目并且将我会持续更新文档、新增功能和修复问题。但是独木不成林,我需要给予我坚持下去的动力。
就像我主页里面 [selfhosted.show - In the episode 'The-organization-must-not-be-name is a Hostile Actor'](https://selfhosted.show/79?t=1418) 说的一样,这是我和团队的一项艰巨任务。我希望某一天我能够全职开发本项目,在此我希望你们能够助我梦想成真。 就像我 [selfhosted.show - In the episode 'The-organization-must-not-be-name is a Hostile Actor'](https://selfhosted.show/79?t=1418) 节目里说的一样,这是我和团队的一项艰巨任务。并且我希望某一天我能够全职开发本项目,在此我请求您能够助我梦想成真。
如果使用了本项目一段时间,并且觉得上面的话有道理,那么请你按照如下方式帮助我吧。 如果使用了本项目一段时间,并且觉得上面的话有道理,那么请您考虑通过下列任一方式支持我吧。
## 捐赠 ## 捐赠
- [按月捐赠](https://github.com/sponsors/alextran1502) via GitHub Sponsors - 通过 GitHub Sponsors [按月捐赠](https://github.com/sponsors/alextran1502)
- [一次捐赠](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502) via Github Sponsors - 通过 Github Sponsors [次捐赠](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502)
- [Librepay](https://liberapay.com/alex.tran1502/)
# 已知问题 - [buymeacoffee](https://www.buymeacoffee.com/altran1502)
- 比特币: 1FvEp6P6NM8EZEkpGUFAN2LqJ1gxusNxZX
## TensorFlow 构建问题
_这是一个针对于Proxmox的已知问题_
TensorFlow 不能运行在很旧的CPU架构上, 需要运行在AVX和AVX2指令集的CPU上。如果你在docker-compose的命令行中遇到了 `illegal instruction core dump`的错误, 通过如下命令检查你的CPU flag寄存器然后确保你能够看到`AVX`和`AVX2`的字样:
```bash
more /proc/cpuinfo | grep flags
```
如果你在Proxmox中运行虚拟机, 虚拟机中没有启用flag寄存器。
你需要在虚拟机的硬件面板中把CPU类型从`kvm64`改为`host`。
`Hardware > Processors > Edit > Advanced > Type (dropdown menu) > host`

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
* Immich * Immich
* Immich API * Immich API
* *
* The version of the OpenAPI document: 1.72.2 * The version of the OpenAPI document: 1.76.1
* *
* *
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).

View File

@@ -4,7 +4,7 @@
* Immich * Immich
* Immich API * Immich API
* *
* The version of the OpenAPI document: 1.72.2 * The version of the OpenAPI document: 1.76.1
* *
* *
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).

View File

@@ -4,7 +4,7 @@
* Immich * Immich
* Immich API * Immich API
* *
* The version of the OpenAPI document: 1.72.2 * The version of the OpenAPI document: 1.76.1
* *
* *
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).

View File

@@ -4,7 +4,7 @@
* Immich * Immich
* Immich API * Immich API
* *
* The version of the OpenAPI document: 1.72.2 * The version of the OpenAPI document: 1.76.1
* *
* *
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).

View File

@@ -4,14 +4,14 @@ import { SessionService } from '../services/session.service';
import { LoginError } from '../cores/errors/login-error'; import { LoginError } from '../cores/errors/login-error';
import { exit } from 'node:process'; import { exit } from 'node:process';
import os from 'os'; import os from 'os';
import { ServerVersionReponseDto, UserResponseDto } from 'src/api/open-api'; import { ServerVersionResponseDto, UserResponseDto } from 'src/api/open-api';
export abstract class BaseCommand { export abstract class BaseCommand {
protected sessionService!: SessionService; protected sessionService!: SessionService;
protected immichApi!: ImmichApi; protected immichApi!: ImmichApi;
protected deviceId!: string; protected deviceId!: string;
protected user!: UserResponseDto; protected user!: UserResponseDto;
protected serverVersion!: ServerVersionReponseDto; protected serverVersion!: ServerVersionResponseDto;
protected configDir; protected configDir;
protected authPath; protected authPath;

View File

@@ -100,8 +100,8 @@ services:
environment: environment:
- TYPESENSE_API_KEY=${TYPESENSE_API_KEY} - TYPESENSE_API_KEY=${TYPESENSE_API_KEY}
- TYPESENSE_DATA_DIR=/data - TYPESENSE_DATA_DIR=/data
logging: # remove this to get debug messages
driver: none - GLOG_minloglevel=1
volumes: volumes:
- tsdata:/data - tsdata:/data

View File

@@ -68,8 +68,8 @@ services:
environment: environment:
- TYPESENSE_API_KEY=${TYPESENSE_API_KEY} - TYPESENSE_API_KEY=${TYPESENSE_API_KEY}
- TYPESENSE_DATA_DIR=/data - TYPESENSE_DATA_DIR=/data
logging: # remove this to get debug messages
driver: none - GLOG_minloglevel=1
volumes: volumes:
- tsdata:/data - tsdata:/data
restart: always restart: always

View File

@@ -54,6 +54,8 @@ services:
environment: environment:
- TYPESENSE_API_KEY=${TYPESENSE_API_KEY} - TYPESENSE_API_KEY=${TYPESENSE_API_KEY}
- TYPESENSE_DATA_DIR=/data - TYPESENSE_DATA_DIR=/data
# remove this to get debug messages
- GLOG_minloglevel=1
volumes: volumes:
- tsdata:/data - tsdata:/data
restart: always restart: always

View File

@@ -1,116 +1,19 @@
################################################################################### # You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
# Database
###################################################################################
# NOTE: The following four database variables support Docker secrets by adding a *_FILE suffix to the variable name # The location where your uploaded files are stored
# See the docker-compose documentation on secrets for additional details: https://docs.docker.com/compose/compose-file/compose-file-v3/#secrets UPLOAD_LOCATION=./library
# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release
# Connection secrets for postgres and typesense. You should change these to random passwords
TYPESENSE_API_KEY=some-random-text
DB_PASSWORD=postgres
# The values below this line do not need to be changed
###################################################################################
DB_HOSTNAME=immich_postgres DB_HOSTNAME=immich_postgres
DB_USERNAME=postgres DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_DATABASE_NAME=immich DB_DATABASE_NAME=immich
# Optional Database settings:
# DB_PORT=5432
###################################################################################
# Redis
###################################################################################
REDIS_HOSTNAME=immich_redis REDIS_HOSTNAME=immich_redis
# REDIS_URL will be used to pass custom options to ioredis.
# Example for Sentinel
# {"sentinels":[{"host":"redis-sentinel-node-0","port":26379},{"host":"redis-sentinel-node-1","port":26379},{"host":"redis-sentinel-node-2","port":26379}],"name":"redis-sentinel"}
# REDIS_URL=ioredis://eyJzZW50aW5lbHMiOlt7Imhvc3QiOiJyZWRpcy1zZW50aW5lbDEiLCJwb3J0IjoyNjM3OX0seyJob3N0IjoicmVkaXMtc2VudGluZWwyIiwicG9ydCI6MjYzNzl9XSwibmFtZSI6Im15bWFzdGVyIn0=
# Optional Redis settings:
# Note: these parameters are not automatically passed to the Redis Container
# to do so, please edit the docker-compose.yml file as well. Redis is not configured
# via environment variables, only redis.conf or the command line
# REDIS_PORT=6379
# REDIS_DBINDEX=0
# REDIS_USERNAME=
# REDIS_PASSWORD=
# REDIS_SOCKET=
###################################################################################
# Upload File Location
#
# This is the location where uploaded files are stored.
###################################################################################
UPLOAD_LOCATION=absolute_location_on_your_machine_where_you_want_to_store_the_backup
###################################################################################
# Typesense
###################################################################################
TYPESENSE_API_KEY=some-random-text
# TYPESENSE_ENABLED=false
# TYPESENSE_URL uses base64 encoding for the nodes json.
# Example JSON that was used:
# [
# { "host": "typesense-1.example.net", "port": "443", "protocol": "https" },
# { "host": "typesense-2.example.net", "port": "443", "protocol": "https" },
# { "host": "typesense-3.example.net", "port": "443", "protocol": "https" },
# ]
# TYPESENSE_URL=ha://WwogIHsgImhvc3QiOiAidHlwZXNlbnNlLTEuZXhhbXBsZS5uZXQiLCAicG9ydCI6ICI0NDMiLCAicHJvdG9jb2wiOiAiaHR0cHMiIH0sCiAgeyAiaG9zdCI6ICJ0eXBlc2Vuc2UtMi5leGFtcGxlLm5ldCIsICJwb3J0IjogIjQ0MyIsICJwcm90b2NvbCI6ICJodHRwcyIgfSwKICB7ICJob3N0IjogInR5cGVzZW5zZS0zLmV4YW1wbGUubmV0IiwgInBvcnQiOiAiNDQzIiwgInByb3RvY29sIjogImh0dHBzIiB9Cl0=
###################################################################################
# Reverse Geocoding
#
# Reverse geocoding is done locally which has a small impact on memory usage
# This memory usage can be altered by changing the REVERSE_GEOCODING_PRECISION variable
# This ranges from 0-3 with 3 being the most precise
# 3 - Cities > 500 population: ~200MB RAM
# 2 - Cities > 1000 population: ~150MB RAM
# 1 - Cities > 5000 population: ~80MB RAM
# 0 - Cities > 15000 population: ~40MB RAM
####################################################################################
# DISABLE_REVERSE_GEOCODING=false
# REVERSE_GEOCODING_PRECISION=3
####################################################################################
# WEB - Optional
#
# Custom message on the login page, should be written in HTML form.
# For example:
# PUBLIC_LOGIN_PAGE_MESSAGE="This is a demo instance of Immich.<br><br>Email: <i>demo@demo.de</i><br>Password: <i>demo</i>"
####################################################################################
PUBLIC_LOGIN_PAGE_MESSAGE=
####################################################################################
# Alternative Service Addresses - Optional
#
# This is an advanced feature for users who may be running their immich services on different hosts.
# It will not change which address or port that services bind to within their containers, but it will change where other services look for their peers.
# Note: immich-microservices is bound to 3002, but no references are made
####################################################################################
IMMICH_WEB_URL=http://immich-web:3000
IMMICH_SERVER_URL=http://immich-server:3001
IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003
####################################################################################
# Alternative API's External Address - Optional
#
# This is an advanced feature used to control the public server endpoint returned to clients during Well-known discovery.
# You should only use this if you want mobile apps to access the immich API over a custom URL. Do not include trailing slash.
# NOTE: At this time, the web app will not be affected by this setting and will continue to use the relative path: /api
# Examples: http://localhost:3001, http://immich-api.example.com, etc
####################################################################################
#IMMICH_API_URL_EXTERNAL=http://localhost:3001
###################################################################################
# Immich Version - Optional
#
# This allows all immich docker images to be pinned to a specific version. By default,
# the version is "release" but could be a specific version, like "v1.59.0".
###################################################################################
#IMMICH_VERSION=

View File

@@ -20,4 +20,4 @@ services:
# devices: # devices:
# - driver: nvidia # - driver: nvidia
# count: 1 # count: 1
# capabilities: [gpu] # capabilities: [gpu,video]

View File

@@ -39,7 +39,7 @@ This often happens when using a reverse proxy or cloudflare tunnel in front of I
### Why is Immich slow on low-memory systems like the Raspberry Pi? ### Why is Immich slow on low-memory systems like the Raspberry Pi?
Immich uses optional machine-learning features to enhance search results. This feature, however, can be too heavy to run on a Raspberry Pi. To disable machine learning, comment out the `immich-machine-learning` section of your docker-compose.yml and set `IMMICH_MACHINE_LEARNING_URL=false` in your .env file. Immich uses optional machine-learning features to enhance search results. This feature, however, can be too heavy to run on a Raspberry Pi. To disable machine learning, comment out the `immich-machine-learning` section of your docker-compose.yml and set `IMMICH_MACHINE_LEARNING_ENABLED=false` in your .env file.
### How to disable machine-learning and TypeSense? ### How to disable machine-learning and TypeSense?
@@ -47,7 +47,7 @@ Immich uses optional machine-learning features to enhance search results. This f
Disabling both will result in poor search experience and typesense utilizes CLIP embeddings which are generated by machine-learning. Disabling both will result in poor search experience and typesense utilizes CLIP embeddings which are generated by machine-learning.
::: :::
These features can be disabled by commenting out `immich-typesense` and `immich-machine-learning` sections of the docker-compose.yml and setting `IMMICH_MACHINE_LEARNING_URL=false` & `TYPESENSE_ENABLED=false` in your .env file. These features can be disabled by commenting out `immich-typesense` and `immich-machine-learning` sections of the docker-compose.yml and setting `IMMICH_MACHINE_LEARNING_ENABLED=false` & `TYPESENSE_ENABLED=false` in your .env file.
### What happens to existing files after I choose a new [Storage Template](/docs/administration/storage-template.mdx)? ### What happens to existing files after I choose a new [Storage Template](/docs/administration/storage-template.mdx)?
@@ -99,3 +99,29 @@ After removing the containers and volumes, the **Files** can be cleaned up (if n
### Why iOS app shows duplicate photos on the timeline while the web doesn't? ### Why iOS app shows duplicate photos on the timeline while the web doesn't?
If you are using `My Photo Stream`, the Photos app temporarily creates duplicates of photos taken in the last 30 days. These photos are included in the `Recents` album and thus shown up twice. To fix this, you can disable `My Photo Stream` in the native Photos app or choose a different album in the backup screen in Immich. If you are using `My Photo Stream`, the Photos app temporarily creates duplicates of photos taken in the last 30 days. These photos are included in the `Recents` album and thus shown up twice. To fix this, you can disable `My Photo Stream` in the native Photos app or choose a different album in the backup screen in Immich.
### How can I move all data (photos, persons, albums) from one user to another?
This requires some database queries. You can do this on the command line (in the PostgreSQL container using the psql command), or you can add for example an [Adminer](https://www.adminer.org/) container to the `docker-compose.yml` file, so that you can use a web-interface.
:::warning
This is an advanced operation. If you can't to do it with the steps described here, this is not for you.
:::
1. **MAKE A BACKUP** - See [backup and restore](/docs/administration/backup-and-restore.md).
2. Find the id of both the 'source' and the 'destination' user (it's the id column in the users table)
3. Three tables need to be updated:
```sql
// reassign albums
update albums set "ownerId" = '<destinationId>' where "ownerId" = '<sourceId>';
// reassign people
update person set "ownerId" = '<destinationId>' where "ownerId" = '<sourceId>';
// reassign assets
update assets set "ownerId" = '<destinationId>' where "ownerId" = '<sourceId>'
and checksum not in (select checksum from assets where "ownerId" = '<destinationId>');
```
4. There might be left-over assets in the 'source' user's library if they are skipped by the last query because of duplicate checksums. These are probably duplicates anyway, and can probably be removed.

View File

@@ -170,4 +170,10 @@ The proper command for above would be as shown below. You should have access to
immich upload --key HFEJ38DNSDUEG --server http://192.168.1.216:2283/api --recursive /path/to/media --import immich upload --key HFEJ38DNSDUEG --server http://192.168.1.216:2283/api --recursive /path/to/media --import
``` ```
If you are running the import using the docker command, please note that the volumes should point to the `/path/to/media` exactly on the environment the CLI command is being run on
```
docker run -it --rm -v "/path/to/media:/path/to/media" ghcr.io/immich-app/immich-cli:latest upload --key HFEJ38DNSDUEG --server http://192.168.1.216:2283/api --recursive /path/to/media --import
```
::: :::

View File

@@ -0,0 +1,26 @@
# Hosting the machine-learning service on another system
To alleviate [performance issues on low-memory systems](/docs/FAQ.md#why-is-immich-slow-on-low-memory-systems-like-the-raspberry-pi) like the Raspberry Pi, you may also host Immich's machine-learning container on a more powerful system (e.g. your laptop or desktop computer):
- Set `IMMICH_MACHINE_LEARNING_URL` to point to the designated ML system, e.g. `http://workstation:3003`.
- Copy the following `docker-compose.yml` to your ML system.
- Start the container by running `docker-compose up -d` or `docker compose up -d` (depending on your Docker version).
```yaml
version: '3.8'
services:
immich-machine-learning:
container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
volumes:
- model-cache:/cache
restart: always
ports:
- 3003:3003
volumes:
model-cache:
```
Please note that version mismatches between both hosts may cause instabilities and bugs, so make sure to always perform updates together.

View File

@@ -0,0 +1,91 @@
# Config File
A config file can be provided as an alternative to the UI configuration.
### Step 1 - Create a new config file
In JSON format, create a new config file (e.g. `immich.config`) and put it in a location that can be accessed by Immich.
The default configuration looks like this:
```json
{
"ffmpeg": {
"crf": 23,
"threads": 0,
"preset": "ultrafast",
"targetVideoCodec": "h264",
"targetAudioCodec": "aac",
"targetResolution": "720",
"maxBitrate": "0",
"twoPass": false,
"transcode": "required",
"tonemap": "hable",
"accel": "disabled"
},
"job": {
"backgroundTask": {
"concurrency": 5
},
"clipEncoding": {
"concurrency": 2
},
"metadataExtraction": {
"concurrency": 5
},
"objectTagging": {
"concurrency": 2
},
"recognizeFaces": {
"concurrency": 2
},
"search": {
"concurrency": 5
},
"sidecar": {
"concurrency": 5
},
"storageTemplateMigration": {
"concurrency": 5
},
"thumbnailGeneration": {
"concurrency": 5
},
"videoConversion": {
"concurrency": 1
}
},
"oauth": {
"enabled": false,
"issuerUrl": "",
"clientId": "",
"clientSecret": "",
"mobileOverrideEnabled": false,
"mobileRedirectUri": "",
"scope": "openid email profile",
"storageLabelClaim": "preferred_username",
"buttonText": "Login with OAuth",
"autoRegister": true,
"autoLaunch": false
},
"passwordLogin": {
"enabled": true
},
"storageTemplate": {
"template": "{{y}}/{{y}}-{{MM}}-{{dd}}/{{filename}}"
},
"thumbnail": {
"webpSize": 250,
"jpegSize": 1440
}
}
```
:::tip
In Administration > Settings is a button to copy the current configuration to your clipboard.
So you can just grab it from there, paste it into a file and you're pretty much good to go.
:::
### Step 2 - Specify the file location
In your `.env` file, set the variable `IMMICH_CONFIG_FILE` to the path of your config.
For more information, refer to the [Environment Variables](https://docs.immich.app/docs/install/environment-variables) section.

View File

@@ -132,7 +132,6 @@ PUBLIC_LOGIN_PAGE_MESSAGE="My Family Photos and Videos Backup Server"
IMMICH_WEB_URL=http://immich-web:3000 IMMICH_WEB_URL=http://immich-web:3000
IMMICH_SERVER_URL=http://immich-server:3001 IMMICH_SERVER_URL=http://immich-server:3001
IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003
#################################################################################### ####################################################################################
# Alternative API's External Address - Optional # Alternative API's External Address - Optional

View File

@@ -1,3 +1,7 @@
---
sidebar_position: 90
---
# Environment Variables # Environment Variables
## Docker Compose ## Docker Compose
@@ -22,6 +26,7 @@ These environment variables are used by the `docker-compose.yml` file and do **N
| `LOG_LEVEL` | Log Level (verbose, debug, log, warn, error) | `log` | server, microservices | | `LOG_LEVEL` | Log Level (verbose, debug, log, warn, error) | `log` | server, microservices |
| `IMMICH_MEDIA_LOCATION` | Media Location | `./upload` | server, microservices | | `IMMICH_MEDIA_LOCATION` | Media Location | `./upload` | server, microservices |
| `PUBLIC_LOGIN_PAGE_MESSAGE` | Public Login Page Message | | web | | `PUBLIC_LOGIN_PAGE_MESSAGE` | Public Login Page Message | | web |
| `IMMICH_CONFIG_FILE` | Path to config file | | server |
:::tip :::tip
@@ -50,13 +55,14 @@ These environment variables are used by the `docker-compose.yml` file and do **N
## URLs ## URLs
| Variable | Description | Default | Services | | Variable | Description | Default | Services |
| :---------------------------- | :------------------------------------------------------- | :-----------------------------------: | :-------------------- | | :-------------------------------- | :--------------------------- | :-----------------------------------: | :-------------------- |
| `IMMICH_WEB_URL` | Immich Web URL | `http://immich-web:3000` | proxy | | `IMMICH_WEB_URL` | Immich Web URL | `http://immich-web:3000` | proxy |
| `IMMICH_SERVER_URL` | Immich Server URL | `http://immich-server:3001` | web, proxy | | `IMMICH_SERVER_URL` | Immich Server URL | `http://immich-server:3001` | web, proxy |
| `IMMICH_MACHINE_LEARNING_URL` | Immich Machine Learning URL, set `"false"` to disable ML | `http://immich-machine-learning:3003` | server, microservices | | `IMMICH_MACHINE_LEARNING_ENABLED` | Enabled machine learning | `true` | server, microservices |
| `PUBLIC_IMMICH_SERVER_URL` | Public Immich URL | `http://immich-server:3001` | web | | `IMMICH_MACHINE_LEARNING_URL` | Immich Machine Learning URL, | `http://immich-machine-learning:3003` | server, microservices |
| `IMMICH_API_URL_EXTERNAL` | Immich API URL External | `/api` | web | | `PUBLIC_IMMICH_SERVER_URL` | Public Immich URL | `http://immich-server:3001` | web |
| `IMMICH_API_URL_EXTERNAL` | Immich API URL External | `/api` | web |
:::info :::info

View File

@@ -1,5 +1,5 @@
--- ---
sidebar_position: 100 sidebar_position: 80
--- ---
import RegisterAdminUser from '../partials/_register-admin.md'; import RegisterAdminUser from '../partials/_register-admin.md';

View File

@@ -10,8 +10,9 @@ RUN poetry config installer.max-workers 10 && \
RUN python -m venv /opt/venv RUN python -m venv /opt/venv
ENV VIRTUAL_ENV="/opt/venv" PATH="/opt/venv/bin:${PATH}" ENV VIRTUAL_ENV="/opt/venv" PATH="/opt/venv/bin:${PATH}"
COPY poetry.lock pyproject.toml ./ COPY poetry.lock pyproject.toml requirements.txt ./
RUN poetry install --sync --no-interaction --no-ansi --no-root --only main RUN poetry install --sync --no-interaction --no-ansi --no-root --only main
RUN pip install --no-deps -r requirements.txt
FROM python:3.11.4-slim-bullseye@sha256:91d194f58f50594cda71dcd2e8fdefd90e7ecc57d07823813b67c8521e565dcd FROM python:3.11.4-slim-bullseye@sha256:91d194f58f50594cda71dcd2e8fdefd90e7ecc57d07823813b67c8521e565dcd

View File

@@ -1,32 +1,67 @@
import logging
import os
from pathlib import Path from pathlib import Path
import starlette
from pydantic import BaseSettings from pydantic import BaseSettings
from rich.console import Console
from rich.logging import RichHandler
from .schemas import ModelType from .schemas import ModelType
class Settings(BaseSettings): class Settings(BaseSettings):
cache_folder: str = "/cache" cache_folder: str = "/cache"
classification_model: str = "microsoft/resnet-50" eager_startup: bool = False
clip_image_model: str = "clip-ViT-B-32"
clip_text_model: str = "clip-ViT-B-32"
facial_recognition_model: str = "buffalo_l"
min_tag_score: float = 0.9
eager_startup: bool = True
model_ttl: int = 0 model_ttl: int = 0
host: str = "0.0.0.0" host: str = "0.0.0.0"
port: int = 3003 port: int = 3003
workers: int = 1 workers: int = 1
min_face_score: float = 0.7
test_full: bool = False test_full: bool = False
request_threads: int = os.cpu_count() or 4
model_inter_op_threads: int = 1
model_intra_op_threads: int = 2
class Config: class Config:
env_prefix = "MACHINE_LEARNING_" env_prefix = "MACHINE_LEARNING_"
case_sensitive = False case_sensitive = False
def get_cache_dir(model_name: str, model_type: ModelType) -> Path: class LogSettings(BaseSettings):
return Path(settings.cache_folder, model_type.value, model_name) log_level: str = "info"
no_color: bool = False
class Config:
case_sensitive = False
_clean_name = str.maketrans(":\\/", "___", ".")
def get_cache_dir(model_name: str, model_type: ModelType) -> Path:
return Path(settings.cache_folder) / model_type.value / model_name.translate(_clean_name)
LOG_LEVELS: dict[str, int] = {
"critical": logging.ERROR,
"error": logging.ERROR,
"warning": logging.WARNING,
"warn": logging.WARNING,
"info": logging.INFO,
"log": logging.INFO,
"debug": logging.DEBUG,
"verbose": logging.DEBUG,
}
settings = Settings() settings = Settings()
log_settings = LogSettings()
console = Console(color_system="standard", no_color=log_settings.no_color)
logging.basicConfig(
format="%(message)s",
handlers=[
RichHandler(show_path=False, omit_repeated_times=False, console=console, tracebacks_suppress=[starlette])
],
)
log = logging.getLogger("uvicorn")
log.setLevel(LOG_LEVELS.get(log_settings.log_level.lower(), logging.INFO))

View File

@@ -1,58 +1,45 @@
import asyncio
import logging
import os import os
from io import BytesIO from concurrent.futures import ThreadPoolExecutor
from typing import Any from typing import Any
import cv2 import orjson
import numpy as np
import uvicorn import uvicorn
from fastapi import Body, Depends, FastAPI from fastapi import FastAPI, Form, HTTPException, UploadFile
from PIL import Image from fastapi.responses import ORJSONResponse
from starlette.formparsers import MultiPartParser
from .config import settings from app.models.base import InferenceModel
from .config import log, settings
from .models.cache import ModelCache from .models.cache import ModelCache
from .schemas import ( from .schemas import (
EmbeddingResponse,
FaceResponse,
MessageResponse, MessageResponse,
ModelType, ModelType,
TagResponse,
TextModelRequest,
TextResponse, TextResponse,
) )
MultiPartParser.max_file_size = 2**24 # spools to disk if payload is 16 MiB or larger
app = FastAPI() app = FastAPI()
def init_state() -> None: def init_state() -> None:
app.state.model_cache = ModelCache(ttl=settings.model_ttl, revalidate=settings.model_ttl > 0) app.state.model_cache = ModelCache(ttl=settings.model_ttl, revalidate=settings.model_ttl > 0)
log.info(
(
async def load_models() -> None: "Created in-memory cache with unloading "
models = [ f"{f'after {settings.model_ttl}s of inactivity' if settings.model_ttl > 0 else 'disabled'}."
(settings.classification_model, ModelType.IMAGE_CLASSIFICATION), )
(settings.clip_image_model, ModelType.CLIP), )
(settings.clip_text_model, ModelType.CLIP), # asyncio is a huge bottleneck for performance, so we use a thread pool to run blocking code
(settings.facial_recognition_model, ModelType.FACIAL_RECOGNITION), app.state.thread_pool = ThreadPoolExecutor(settings.request_threads)
] log.info(f"Initialized request thread pool with {settings.request_threads} threads.")
# Get all models
for model_name, model_type in models:
await app.state.model_cache.get(model_name, model_type, eager=settings.eager_startup)
@app.on_event("startup") @app.on_event("startup")
async def startup_event() -> None: async def startup_event() -> None:
init_state() init_state()
await load_models()
def dep_pil_image(byte_image: bytes = Body(...)) -> Image.Image:
return Image.open(BytesIO(byte_image))
def dep_cv_image(byte_image: bytes = Body(...)) -> cv2.Mat:
byte_image_np = np.frombuffer(byte_image, np.uint8)
return cv2.imdecode(byte_image_np, cv2.IMREAD_COLOR)
@app.get("/", response_model=MessageResponse) @app.get("/", response_model=MessageResponse)
@@ -65,54 +52,28 @@ def ping() -> str:
return "pong" return "pong"
@app.post( @app.post("/predict")
"/image-classifier/tag-image", async def predict(
response_model=TagResponse, model_name: str = Form(alias="modelName"),
status_code=200, model_type: ModelType = Form(alias="modelType"),
) options: str = Form(default="{}"),
async def image_classification( text: str | None = Form(default=None),
image: Image.Image = Depends(dep_pil_image), image: UploadFile | None = None,
) -> list[str]: ) -> Any:
model = await app.state.model_cache.get(settings.classification_model, ModelType.IMAGE_CLASSIFICATION) if image is not None:
labels = model.predict(image) inputs: str | bytes = await image.read()
return labels elif text is not None:
inputs = text
else:
raise HTTPException(400, "Either image or text must be provided")
model: InferenceModel = await app.state.model_cache.get(model_name, model_type, **orjson.loads(options))
outputs = await run(model, inputs)
return ORJSONResponse(outputs)
@app.post( async def run(model: InferenceModel, inputs: Any) -> Any:
"/sentence-transformer/encode-image", return await asyncio.get_running_loop().run_in_executor(app.state.thread_pool, model.predict, inputs)
response_model=EmbeddingResponse,
status_code=200,
)
async def clip_encode_image(
image: Image.Image = Depends(dep_pil_image),
) -> list[float]:
model = await app.state.model_cache.get(settings.clip_image_model, ModelType.CLIP)
embedding = model.predict(image)
return embedding
@app.post(
"/sentence-transformer/encode-text",
response_model=EmbeddingResponse,
status_code=200,
)
async def clip_encode_text(payload: TextModelRequest) -> list[float]:
model = await app.state.model_cache.get(settings.clip_text_model, ModelType.CLIP)
embedding = model.predict(payload.text)
return embedding
@app.post(
"/facial-recognition/detect-faces",
response_model=FaceResponse,
status_code=200,
)
async def facial_recognition(
image: cv2.Mat = Depends(dep_cv_image),
) -> list[dict[str, Any]]:
model = await app.state.model_cache.get(settings.facial_recognition_model, ModelType.FACIAL_RECOGNITION)
faces = model.predict(image)
return faces
if __name__ == "__main__": if __name__ == "__main__":
@@ -123,4 +84,6 @@ if __name__ == "__main__":
port=settings.port, port=settings.port,
reload=is_dev, reload=is_dev,
workers=settings.workers, workers=settings.workers,
log_config=None,
access_log=log.isEnabledFor(logging.INFO),
) )

View File

@@ -1,3 +1,3 @@
from .clip import CLIPSTEncoder from .clip import CLIPEncoder
from .facial_recognition import FaceRecognizer from .facial_recognition import FaceRecognizer
from .image_classification import ImageClassifier from .image_classification import ImageClassifier

View File

@@ -1,13 +1,16 @@
from __future__ import annotations from __future__ import annotations
import pickle
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from pathlib import Path from pathlib import Path
from shutil import rmtree from shutil import rmtree
from typing import Any from typing import Any
from zipfile import BadZipFile
import onnxruntime as ort
from onnxruntime.capi.onnxruntime_pybind11_state import InvalidProtobuf # type: ignore from onnxruntime.capi.onnxruntime_pybind11_state import InvalidProtobuf # type: ignore
from ..config import get_cache_dir from ..config import get_cache_dir, log, settings
from ..schemas import ModelType from ..schemas import ModelType
@@ -15,20 +18,59 @@ class InferenceModel(ABC):
_model_type: ModelType _model_type: ModelType
def __init__( def __init__(
self, model_name: str, cache_dir: Path | str | None = None, eager: bool = True, **model_kwargs: Any self,
model_name: str,
cache_dir: Path | str | None = None,
eager: bool = True,
inter_op_num_threads: int = settings.model_inter_op_threads,
intra_op_num_threads: int = settings.model_intra_op_threads,
**model_kwargs: Any,
) -> None: ) -> None:
self.model_name = model_name self.model_name = model_name
self._loaded = False self._loaded = False
self._cache_dir = Path(cache_dir) if cache_dir is not None else get_cache_dir(model_name, self.model_type) self._cache_dir = Path(cache_dir) if cache_dir is not None else get_cache_dir(model_name, self.model_type)
loader = self.load if eager else self.download loader = self.load if eager else self.download
self.providers = model_kwargs.pop("providers", ["CPUExecutionProvider"])
# don't pre-allocate more memory than needed
self.provider_options = model_kwargs.pop(
"provider_options", [{"arena_extend_strategy": "kSameAsRequested"}] * len(self.providers)
)
log.debug(
(
f"Setting '{self.model_name}' execution providers to {self.providers}"
"in descending order of preference"
),
)
log.debug(f"Setting execution provider options to {self.provider_options}")
self.sess_options = PicklableSessionOptions()
# avoid thread contention between models
if inter_op_num_threads > 1:
self.sess_options.execution_mode = ort.ExecutionMode.ORT_PARALLEL
log.debug(f"Setting execution_mode to {self.sess_options.execution_mode.name}")
log.debug(f"Setting inter_op_num_threads to {inter_op_num_threads}")
log.debug(f"Setting intra_op_num_threads to {intra_op_num_threads}")
self.sess_options.inter_op_num_threads = inter_op_num_threads
self.sess_options.intra_op_num_threads = intra_op_num_threads
try: try:
loader(**model_kwargs) loader(**model_kwargs)
except (OSError, InvalidProtobuf): except (OSError, InvalidProtobuf, BadZipFile):
log.warn(
(
f"Failed to load {self.model_type.replace('_', ' ')} model '{self.model_name}'."
"Clearing cache and retrying."
)
)
self.clear_cache() self.clear_cache()
loader(**model_kwargs) loader(**model_kwargs)
def download(self, **model_kwargs: Any) -> None: def download(self, **model_kwargs: Any) -> None:
if not self.cached: if not self.cached:
log.info(
(f"Downloading {self.model_type.replace('_', ' ')} model '{self.model_name}'." "This may take a while.")
)
self._download(**model_kwargs) self._download(**model_kwargs)
def load(self, **model_kwargs: Any) -> None: def load(self, **model_kwargs: Any) -> None:
@@ -36,15 +78,21 @@ class InferenceModel(ABC):
self._load(**model_kwargs) self._load(**model_kwargs)
self._loaded = True self._loaded = True
def predict(self, inputs: Any) -> Any: def predict(self, inputs: Any, **model_kwargs: Any) -> Any:
if not self._loaded: if not self._loaded:
log.info(f"Loading {self.model_type.replace('_', ' ')} model '{self.model_name}'")
self.load() self.load()
if model_kwargs:
self.configure(**model_kwargs)
return self._predict(inputs) return self._predict(inputs)
@abstractmethod @abstractmethod
def _predict(self, inputs: Any) -> Any: def _predict(self, inputs: Any) -> Any:
... ...
def configure(self, **model_kwargs: Any) -> None:
pass
@abstractmethod @abstractmethod
def _download(self, **model_kwargs: Any) -> None: def _download(self, **model_kwargs: Any) -> None:
... ...
@@ -79,12 +127,33 @@ class InferenceModel(ABC):
def clear_cache(self) -> None: def clear_cache(self) -> None:
if not self.cache_dir.exists(): if not self.cache_dir.exists():
log.warn(
f"Attempted to clear cache for model '{self.model_name}' but cache directory does not exist.",
)
return return
if not rmtree.avoids_symlink_attacks: if not rmtree.avoids_symlink_attacks:
raise RuntimeError("Attempted to clear cache, but rmtree is not safe on this platform.") raise RuntimeError("Attempted to clear cache, but rmtree is not safe on this platform.")
if self.cache_dir.is_dir(): if self.cache_dir.is_dir():
log.info(f"Cleared cache directory for model '{self.model_name}'.")
rmtree(self.cache_dir) rmtree(self.cache_dir)
else: else:
log.warn(
(
f"Encountered file instead of directory at cache path "
f"for '{self.model_name}'. Removing file and replacing with a directory."
),
)
self.cache_dir.unlink() self.cache_dir.unlink()
self.cache_dir.mkdir(parents=True, exist_ok=True) self.cache_dir.mkdir(parents=True, exist_ok=True)
# HF deep copies configs, so we need to make session options picklable
class PicklableSessionOptions(ort.SessionOptions):
def __getstate__(self) -> bytes:
return pickle.dumps([(attr, getattr(self, attr)) for attr in dir(self) if not callable(getattr(self, attr))])
def __setstate__(self, state: Any) -> None:
self.__init__() # type: ignore
for attr, val in pickle.loads(state):
setattr(self, attr, val)

View File

@@ -46,7 +46,7 @@ class ModelCache:
model: The requested model. model: The requested model.
""" """
key = self.cache.build_key(model_name, model_type.value) key = f"{model_name}{model_type.value}{model_kwargs.get('mode', '')}"
async with OptimisticLock(self.cache, key) as lock: async with OptimisticLock(self.cache, key) as lock:
model = await self.cache.get(key) model = await self.cache.get(key)
if model is None: if model is None:

View File

@@ -1,31 +1,148 @@
from typing import Any import os
import zipfile
from io import BytesIO
from typing import Any, Literal
from PIL.Image import Image import onnxruntime as ort
from sentence_transformers import SentenceTransformer import torch
from sentence_transformers.util import snapshot_download from clip_server.model.clip import BICUBIC, _convert_image_to_rgb
from clip_server.model.clip_onnx import _MODELS, _S3_BUCKET_V2, CLIPOnnxModel, download_model
from clip_server.model.pretrained_models import _VISUAL_MODEL_IMAGE_SIZE
from clip_server.model.tokenization import Tokenizer
from PIL import Image
from torchvision.transforms import CenterCrop, Compose, Normalize, Resize, ToTensor
from ..config import log
from ..schemas import ModelType from ..schemas import ModelType
from .base import InferenceModel from .base import InferenceModel
_ST_TO_JINA_MODEL_NAME = {
"clip-ViT-B-16": "ViT-B-16::openai",
"clip-ViT-B-32": "ViT-B-32::openai",
"clip-ViT-B-32-multilingual-v1": "M-CLIP/XLM-Roberta-Large-Vit-B-32",
"clip-ViT-L-14": "ViT-L-14::openai",
}
class CLIPSTEncoder(InferenceModel):
class CLIPEncoder(InferenceModel):
_model_type = ModelType.CLIP _model_type = ModelType.CLIP
def __init__(
self,
model_name: str,
cache_dir: str | None = None,
mode: Literal["text", "vision"] | None = None,
**model_kwargs: Any,
) -> None:
if mode is not None and mode not in ("text", "vision"):
raise ValueError(f"Mode must be 'text', 'vision', or omitted; got '{mode}'")
if "vit-b" not in model_name.lower():
raise ValueError(f"Only ViT-B models are currently supported; got '{model_name}'")
self.mode = mode
jina_model_name = self._get_jina_model_name(model_name)
super().__init__(jina_model_name, cache_dir, **model_kwargs)
def _download(self, **model_kwargs: Any) -> None: def _download(self, **model_kwargs: Any) -> None:
repo_id = self.model_name if "/" in self.model_name else f"sentence-transformers/{self.model_name}" models: tuple[tuple[str, str], tuple[str, str]] = _MODELS[self.model_name]
snapshot_download( text_onnx_path = self.cache_dir / "textual.onnx"
cache_dir=self.cache_dir, vision_onnx_path = self.cache_dir / "visual.onnx"
repo_id=repo_id,
library_name="sentence-transformers", if not text_onnx_path.is_file():
ignore_files=["flax_model.msgpack", "rust_model.ot", "tf_model.h5"], self._download_model(*models[0])
)
if not vision_onnx_path.is_file():
self._download_model(*models[1])
def _load(self, **model_kwargs: Any) -> None: def _load(self, **model_kwargs: Any) -> None:
self.model = SentenceTransformer( if self.mode == "text" or self.mode is None:
self.model_name, self.text_model = ort.InferenceSession(
cache_folder=self.cache_dir.as_posix(), self.cache_dir / "textual.onnx",
**model_kwargs, sess_options=self.sess_options,
) providers=self.providers,
provider_options=self.provider_options,
)
self.text_outputs = [output.name for output in self.text_model.get_outputs()]
self.tokenizer = Tokenizer(self.model_name)
def _predict(self, image_or_text: Image | str) -> list[float]: if self.mode == "vision" or self.mode is None:
return self.model.encode(image_or_text).tolist() self.vision_model = ort.InferenceSession(
self.cache_dir / "visual.onnx",
sess_options=self.sess_options,
providers=self.providers,
provider_options=self.provider_options,
)
self.vision_outputs = [output.name for output in self.vision_model.get_outputs()]
image_size = _VISUAL_MODEL_IMAGE_SIZE[CLIPOnnxModel.get_model_name(self.model_name)]
self.transform = _transform_pil_image(image_size)
def _predict(self, image_or_text: Image.Image | str) -> list[float]:
if isinstance(image_or_text, bytes):
image_or_text = Image.open(BytesIO(image_or_text))
match image_or_text:
case Image.Image():
if self.mode == "text":
raise TypeError("Cannot encode image as text-only model")
pixel_values = self.transform(image_or_text)
assert isinstance(pixel_values, torch.Tensor)
pixel_values = torch.unsqueeze(pixel_values, 0).numpy()
outputs = self.vision_model.run(self.vision_outputs, {"pixel_values": pixel_values})
case str():
if self.mode == "vision":
raise TypeError("Cannot encode text as vision-only model")
text_inputs: dict[str, torch.Tensor] = self.tokenizer(image_or_text)
inputs = {
"input_ids": text_inputs["input_ids"].int().numpy(),
"attention_mask": text_inputs["attention_mask"].int().numpy(),
}
outputs = self.text_model.run(self.text_outputs, inputs)
case _:
raise TypeError(f"Expected Image or str, but got: {type(image_or_text)}")
return outputs[0][0].tolist()
def _get_jina_model_name(self, model_name: str) -> str:
if model_name in _MODELS:
return model_name
elif model_name in _ST_TO_JINA_MODEL_NAME:
log.warn(
(
f"Sentence-Transformer models like '{model_name}' are not supported."
f"Using '{_ST_TO_JINA_MODEL_NAME[model_name]}' instead as it is the best match for '{model_name}'."
),
)
return _ST_TO_JINA_MODEL_NAME[model_name]
else:
raise ValueError(f"Unknown model name {model_name}.")
def _download_model(self, model_name: str, model_md5: str) -> bool:
# downloading logic is adapted from clip-server's CLIPOnnxModel class
download_model(
url=_S3_BUCKET_V2 + model_name,
target_folder=self.cache_dir.as_posix(),
md5sum=model_md5,
with_resume=True,
)
file = self.cache_dir / model_name.split("/")[1]
if file.suffix == ".zip":
with zipfile.ZipFile(file, "r") as zip_ref:
zip_ref.extractall(self.cache_dir)
os.remove(file)
return True
# same as `_transform_blob` without `_blob2image`
def _transform_pil_image(n_px: int) -> Compose:
return Compose(
[
Resize(n_px, interpolation=BICUBIC),
CenterCrop(n_px),
_convert_image_to_rgb,
ToTensor(),
Normalize(
(0.48145466, 0.4578275, 0.40821073),
(0.26862954, 0.26130258, 0.27577711),
),
]
)

View File

@@ -4,11 +4,11 @@ from typing import Any
import cv2 import cv2
import numpy as np import numpy as np
import onnxruntime as ort
from insightface.model_zoo import ArcFaceONNX, RetinaFace from insightface.model_zoo import ArcFaceONNX, RetinaFace
from insightface.utils.face_align import norm_crop from insightface.utils.face_align import norm_crop
from insightface.utils.storage import BASE_REPO_URL, download_file from insightface.utils.storage import BASE_REPO_URL, download_file
from ..config import settings
from ..schemas import ModelType from ..schemas import ModelType
from .base import InferenceModel from .base import InferenceModel
@@ -19,11 +19,11 @@ class FaceRecognizer(InferenceModel):
def __init__( def __init__(
self, self,
model_name: str, model_name: str,
min_score: float = settings.min_face_score, min_score: float = 0.7,
cache_dir: Path | str | None = None, cache_dir: Path | str | None = None,
**model_kwargs: Any, **model_kwargs: Any,
) -> None: ) -> None:
self.min_score = min_score self.min_score = model_kwargs.pop("minScore", min_score)
super().__init__(model_name, cache_dir, **model_kwargs) super().__init__(model_name, cache_dir, **model_kwargs)
def _download(self, **model_kwargs: Any) -> None: def _download(self, **model_kwargs: Any) -> None:
@@ -42,21 +42,39 @@ class FaceRecognizer(InferenceModel):
rec_file = next(self.cache_dir.glob("w600k_*.onnx")) rec_file = next(self.cache_dir.glob("w600k_*.onnx"))
except StopIteration: except StopIteration:
raise FileNotFoundError("Facial recognition models not found in cache directory") raise FileNotFoundError("Facial recognition models not found in cache directory")
self.det_model = RetinaFace(det_file.as_posix())
self.rec_model = ArcFaceONNX(rec_file.as_posix()) self.det_model = RetinaFace(
session=ort.InferenceSession(
det_file.as_posix(),
sess_options=self.sess_options,
providers=self.providers,
provider_options=self.provider_options,
),
)
self.rec_model = ArcFaceONNX(
rec_file.as_posix(),
session=ort.InferenceSession(
rec_file.as_posix(),
sess_options=self.sess_options,
providers=self.providers,
provider_options=self.provider_options,
),
)
self.det_model.prepare( self.det_model.prepare(
ctx_id=-1, ctx_id=0,
det_thresh=self.min_score, det_thresh=self.min_score,
input_size=(640, 640), input_size=(640, 640),
) )
self.rec_model.prepare(ctx_id=-1) self.rec_model.prepare(ctx_id=0)
def _predict(self, image: cv2.Mat) -> list[dict[str, Any]]: def _predict(self, image: np.ndarray[int, np.dtype[Any]] | bytes) -> list[dict[str, Any]]:
if isinstance(image, bytes):
image = cv2.imdecode(np.frombuffer(image, np.uint8), cv2.IMREAD_COLOR)
bboxes, kpss = self.det_model.detect(image) bboxes, kpss = self.det_model.detect(image)
if bboxes.size == 0: if bboxes.size == 0:
return [] return []
assert isinstance(kpss, np.ndarray) assert isinstance(image, np.ndarray) and isinstance(kpss, np.ndarray)
scores = bboxes[:, 4].tolist() scores = bboxes[:, 4].tolist()
bboxes = bboxes[:, :4].round().tolist() bboxes = bboxes[:, :4].round().tolist()
@@ -85,3 +103,6 @@ class FaceRecognizer(InferenceModel):
@property @property
def cached(self) -> bool: def cached(self) -> bool:
return self.cache_dir.is_dir() and any(self.cache_dir.glob("*.onnx")) return self.cache_dir.is_dir() and any(self.cache_dir.glob("*.onnx"))
def configure(self, **model_kwargs: Any) -> None:
self.det_model.det_thresh = model_kwargs.pop("minScore", self.det_model.det_thresh)

View File

@@ -1,11 +1,14 @@
from io import BytesIO
from pathlib import Path from pathlib import Path
from typing import Any from typing import Any
from huggingface_hub import snapshot_download from huggingface_hub import snapshot_download
from PIL.Image import Image from optimum.onnxruntime import ORTModelForImageClassification
from transformers.pipelines import pipeline from optimum.pipelines import pipeline
from PIL import Image
from transformers import AutoImageProcessor
from ..config import settings from ..config import log
from ..schemas import ModelType from ..schemas import ModelType
from .base import InferenceModel from .base import InferenceModel
@@ -16,27 +19,57 @@ class ImageClassifier(InferenceModel):
def __init__( def __init__(
self, self,
model_name: str, model_name: str,
min_score: float = settings.min_tag_score, min_score: float = 0.9,
cache_dir: Path | str | None = None, cache_dir: Path | str | None = None,
**model_kwargs: Any, **model_kwargs: Any,
) -> None: ) -> None:
self.min_score = min_score self.min_score = model_kwargs.pop("minScore", min_score)
super().__init__(model_name, cache_dir, **model_kwargs) super().__init__(model_name, cache_dir, **model_kwargs)
def _download(self, **model_kwargs: Any) -> None: def _download(self, **model_kwargs: Any) -> None:
snapshot_download( snapshot_download(
cache_dir=self.cache_dir, repo_id=self.model_name, allow_patterns=["*.bin", "*.json", "*.txt"] cache_dir=self.cache_dir,
repo_id=self.model_name,
allow_patterns=["*.bin", "*.json", "*.txt"],
local_dir=self.cache_dir,
local_dir_use_symlinks=True,
) )
def _load(self, **model_kwargs: Any) -> None: def _load(self, **model_kwargs: Any) -> None:
self.model = pipeline( processor = AutoImageProcessor.from_pretrained(self.cache_dir, cache_dir=self.cache_dir)
self.model_type.value, model_path = self.cache_dir / "model.onnx"
self.model_name, model_kwargs |= {
model_kwargs={"cache_dir": self.cache_dir, **model_kwargs}, "cache_dir": self.cache_dir,
) "provider": self.providers[0],
"provider_options": self.provider_options[0],
"session_options": self.sess_options,
}
def _predict(self, image: Image) -> list[str]: if model_path.exists():
model = ORTModelForImageClassification.from_pretrained(self.cache_dir, **model_kwargs)
self.model = pipeline(self.model_type.value, model, feature_extractor=processor)
else:
log.info(
(
f"ONNX model not found in cache directory for '{self.model_name}'."
"Exporting optimized model for future use."
),
)
self.sess_options.optimized_model_filepath = model_path.as_posix()
self.model = pipeline(
self.model_type.value,
self.model_name,
model_kwargs=model_kwargs,
feature_extractor=processor,
)
def _predict(self, image: Image.Image | bytes) -> list[str]:
if isinstance(image, bytes):
image = Image.open(BytesIO(image))
predictions: list[dict[str, Any]] = self.model(image) # type: ignore predictions: list[dict[str, Any]] = self.model(image) # type: ignore
tags = [tag for pred in predictions for tag in pred["label"].split(", ") if pred["score"] >= self.min_score] tags = [tag for pred in predictions for tag in pred["label"].split(", ") if pred["score"] >= self.min_score]
return tags return tags
def configure(self, **model_kwargs: Any) -> None:
self.min_score = model_kwargs.pop("minScore", self.min_score)

View File

@@ -1,4 +1,4 @@
from enum import Enum from enum import StrEnum
from pydantic import BaseModel from pydantic import BaseModel
@@ -20,18 +20,6 @@ class MessageResponse(BaseModel):
message: str message: str
class TagResponse(BaseModel):
__root__: list[str]
class Embedding(BaseModel):
__root__: list[float]
class EmbeddingResponse(BaseModel):
__root__: Embedding
class BoundingBox(BaseModel): class BoundingBox(BaseModel):
x1: int x1: int
y1: int y1: int
@@ -39,23 +27,7 @@ class BoundingBox(BaseModel):
y2: int y2: int
class Face(BaseModel): class ModelType(StrEnum):
image_width: int
image_height: int
bounding_box: BoundingBox
score: float
embedding: Embedding
class Config:
alias_generator = to_lower_camel
allow_population_by_field_name = True
class FaceResponse(BaseModel):
__root__: list[Face]
class ModelType(Enum):
IMAGE_CLASSIFICATION = "image-classification" IMAGE_CLASSIFICATION = "image-classification"
CLIP = "clip" CLIP = "clip"
FACIAL_RECOGNITION = "facial-recognition" FACIAL_RECOGNITION = "facial-recognition"

View File

@@ -1,17 +1,20 @@
import pickle
from io import BytesIO from io import BytesIO
from typing import TypeAlias from typing import TypeAlias
from unittest import mock from unittest import mock
import cv2 import cv2
import numpy as np import numpy as np
import onnxruntime as ort
import pytest import pytest
from fastapi.testclient import TestClient from fastapi.testclient import TestClient
from PIL import Image from PIL import Image
from pytest_mock import MockerFixture from pytest_mock import MockerFixture
from .config import settings from .config import settings
from .models.base import PicklableSessionOptions
from .models.cache import ModelCache from .models.cache import ModelCache
from .models.clip import CLIPSTEncoder from .models.clip import CLIPEncoder
from .models.facial_recognition import FaceRecognizer from .models.facial_recognition import FaceRecognizer
from .models.image_classification import ImageClassifier from .models.image_classification import ImageClassifier
from .schemas import ModelType from .schemas import ModelType
@@ -72,45 +75,47 @@ class TestCLIP:
embedding = np.random.rand(512).astype(np.float32) embedding = np.random.rand(512).astype(np.float32)
def test_eager_init(self, mocker: MockerFixture) -> None: def test_eager_init(self, mocker: MockerFixture) -> None:
mocker.patch.object(CLIPSTEncoder, "download") mocker.patch.object(CLIPEncoder, "download")
mock_load = mocker.patch.object(CLIPSTEncoder, "load") mock_load = mocker.patch.object(CLIPEncoder, "load")
clip_model = CLIPSTEncoder("test_model_name", cache_dir="test_cache", eager=True, test_arg="test_arg") clip_model = CLIPEncoder("ViT-B-32::openai", cache_dir="test_cache", eager=True, test_arg="test_arg")
assert clip_model.model_name == "test_model_name" assert clip_model.model_name == "ViT-B-32::openai"
mock_load.assert_called_once_with(test_arg="test_arg") mock_load.assert_called_once_with(test_arg="test_arg")
def test_lazy_init(self, mocker: MockerFixture) -> None: def test_lazy_init(self, mocker: MockerFixture) -> None:
mock_download = mocker.patch.object(CLIPSTEncoder, "download") mock_download = mocker.patch.object(CLIPEncoder, "download")
mock_load = mocker.patch.object(CLIPSTEncoder, "load") mock_load = mocker.patch.object(CLIPEncoder, "load")
clip_model = CLIPSTEncoder("test_model_name", cache_dir="test_cache", eager=False, test_arg="test_arg") clip_model = CLIPEncoder("ViT-B-32::openai", cache_dir="test_cache", eager=False, test_arg="test_arg")
assert clip_model.model_name == "test_model_name" assert clip_model.model_name == "ViT-B-32::openai"
mock_download.assert_called_once_with(test_arg="test_arg") mock_download.assert_called_once_with(test_arg="test_arg")
mock_load.assert_not_called() mock_load.assert_not_called()
def test_basic_image(self, pil_image: Image.Image, mocker: MockerFixture) -> None: def test_basic_image(self, pil_image: Image.Image, mocker: MockerFixture) -> None:
mocker.patch.object(CLIPSTEncoder, "load") mocker.patch.object(CLIPEncoder, "download")
clip_encoder = CLIPSTEncoder("test_model_name", cache_dir="test_cache") mocked = mocker.patch("app.models.clip.ort.InferenceSession", autospec=True)
clip_encoder.model = mock.Mock() mocked.return_value.run.return_value = [[self.embedding]]
clip_encoder.model.encode.return_value = self.embedding clip_encoder = CLIPEncoder("ViT-B-32::openai", cache_dir="test_cache", mode="vision")
assert clip_encoder.mode == "vision"
embedding = clip_encoder.predict(pil_image) embedding = clip_encoder.predict(pil_image)
assert isinstance(embedding, list) assert isinstance(embedding, list)
assert len(embedding) == 512 assert len(embedding) == 512
assert all([isinstance(num, float) for num in embedding]) assert all([isinstance(num, float) for num in embedding])
clip_encoder.model.encode.assert_called_once() clip_encoder.vision_model.run.assert_called_once()
def test_basic_text(self, mocker: MockerFixture) -> None: def test_basic_text(self, mocker: MockerFixture) -> None:
mocker.patch.object(CLIPSTEncoder, "load") mocker.patch.object(CLIPEncoder, "download")
clip_encoder = CLIPSTEncoder("test_model_name", cache_dir="test_cache") mocked = mocker.patch("app.models.clip.ort.InferenceSession", autospec=True)
clip_encoder.model = mock.Mock() mocked.return_value.run.return_value = [[self.embedding]]
clip_encoder.model.encode.return_value = self.embedding clip_encoder = CLIPEncoder("ViT-B-32::openai", cache_dir="test_cache", mode="text")
assert clip_encoder.mode == "text"
embedding = clip_encoder.predict("test search query") embedding = clip_encoder.predict("test search query")
assert isinstance(embedding, list) assert isinstance(embedding, list)
assert len(embedding) == 512 assert len(embedding) == 512
assert all([isinstance(num, float) for num in embedding]) assert all([isinstance(num, float) for num in embedding])
clip_encoder.model.encode.assert_called_once() clip_encoder.text_model.run.assert_called_once()
class TestFaceRecognition: class TestFaceRecognition:
@@ -254,3 +259,13 @@ class TestEndpoints:
headers=headers, headers=headers,
) )
assert response.status_code == 200 assert response.status_code == 200
def test_sess_options() -> None:
sess_options = PicklableSessionOptions()
sess_options.intra_op_num_threads = 1
sess_options.inter_op_num_threads = 1
pickled = pickle.dumps(sess_options)
unpickled = pickle.loads(pickled)
assert unpickled.intra_op_num_threads == 1
assert unpickled.inter_op_num_threads == 1

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = "machine-learning" name = "machine-learning"
version = "1.72.2" version = "1.76.1"
description = "" description = ""
authors = ["Hau Tran <alex.tran1502@gmail.com>"] authors = ["Hau Tran <alex.tran1502@gmail.com>"]
readme = "README.md" readme = "README.md"
@@ -13,7 +13,6 @@ torch = [
{markers = "platform_machine == 'amd64' or platform_machine == 'x86_64'", version = "=2.0.1", source = "pytorch-cpu"} {markers = "platform_machine == 'amd64' or platform_machine == 'x86_64'", version = "=2.0.1", source = "pytorch-cpu"}
] ]
transformers = "^4.29.2" transformers = "^4.29.2"
sentence-transformers = "^2.2.2"
onnxruntime = "^1.15.0" onnxruntime = "^1.15.0"
insightface = "^0.7.3" insightface = "^0.7.3"
opencv-python-headless = "^4.7.0.72" opencv-python-headless = "^4.7.0.72"
@@ -22,6 +21,18 @@ fastapi = "^0.95.2"
uvicorn = {extras = ["standard"], version = "^0.22.0"} uvicorn = {extras = ["standard"], version = "^0.22.0"}
pydantic = "^1.10.8" pydantic = "^1.10.8"
aiocache = "^0.12.1" aiocache = "^0.12.1"
optimum = "^1.9.1"
torchvision = [
{markers = "platform_machine == 'arm64' or platform_machine == 'aarch64'", version = "=0.15.2", source = "pypi"},
{markers = "platform_machine == 'amd64' or platform_machine == 'x86_64'", version = "=0.15.2", source = "pytorch-cpu"}
]
rich = "^13.4.2"
ftfy = "^6.1.1"
setuptools = "^68.0.0"
open-clip-torch = "^2.20.0"
python-multipart = "^0.0.6"
orjson = "^3.9.5"
safetensors = "0.3.2"
[tool.poetry.group.dev.dependencies] [tool.poetry.group.dev.dependencies]
mypy = "^1.3.0" mypy = "^1.3.0"
@@ -62,13 +73,20 @@ warn_untyped_fields = true
[[tool.mypy.overrides]] [[tool.mypy.overrides]]
module = [ module = [
"huggingface_hub", "huggingface_hub",
"transformers.pipelines", "transformers",
"cv2", "cv2",
"insightface.model_zoo", "insightface.model_zoo",
"insightface.utils.face_align", "insightface.utils.face_align",
"insightface.utils.storage", "insightface.utils.storage",
"sentence_transformers", "onnxruntime",
"sentence_transformers.util", "optimum",
"optimum.pipelines",
"optimum.onnxruntime",
"clip_server.model.clip",
"clip_server.model.clip_onnx",
"clip_server.model.pretrained_models",
"clip_server.model.tokenization",
"torchvision.transforms",
"aiocache.backends.memory", "aiocache.backends.memory",
"aiocache.lock", "aiocache.lock",
"aiocache.plugins" "aiocache.plugins"

View File

@@ -0,0 +1,2 @@
# requirements to be installed with `--no-deps` flag
clip-server==0.8.*

View File

@@ -1,4 +1,4 @@
{ {
"flutterSdkVersion": "3.10.5", "flutterSdkVersion": "3.13.0",
"flavors": {} "flavors": {}
} }

View File

@@ -52,7 +52,7 @@ android {
defaultConfig { defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "app.alextran.immich" applicationId "app.alextran.immich"
minSdkVersion 23 minSdkVersion 26
targetSdkVersion 33 targetSdkVersion 33
versionCode flutterVersionCode.toInteger() versionCode flutterVersionCode.toInteger()
versionName flutterVersionName versionName flutterVersionName

View File

@@ -56,7 +56,7 @@
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <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.READ_MEDIA_IMAGES" /> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
@@ -64,11 +64,16 @@
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" /> <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<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" />
<queries> <queries>
<intent> <intent>
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW" />
<data android:scheme="https" /> <data android:scheme="https" />
</intent> </intent>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="geo" />
</intent>
</queries> </queries>
</manifest> </manifest>

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" => 95, "android.injected.version.code" => 99,
"android.injected.version.name" => "1.72.2", "android.injected.version.name" => "1.76.1",
} }
) )
upload_to_play_store(skip_upload_apk: true, skip_upload_images: true, skip_upload_screenshots: true, aab: '../build/app/outputs/bundle/release/app-release.aab') 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

@@ -5,17 +5,17 @@
<testcase classname="fastlane.lanes" name="0: default_platform" time="0.000239"> <testcase classname="fastlane.lanes" name="0: default_platform" time="0.00023">
</testcase> </testcase>
<testcase classname="fastlane.lanes" name="1: bundleRelease" time="68.788432"> <testcase classname="fastlane.lanes" name="1: bundleRelease" time="63.585931">
</testcase> </testcase>
<testcase classname="fastlane.lanes" name="2: upload_to_play_store" time="29.76592"> <testcase classname="fastlane.lanes" name="2: upload_to_play_store" time="24.755096">
</testcase> </testcase>

View File

@@ -2,60 +2,60 @@
"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}",
"advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.", "advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.",
"advanced_settings_prefer_remote_title": "Prefer remote images", "advanced_settings_prefer_remote_title": "Prefereix imatges remotes",
"advanced_settings_tile_subtitle": "Advanced user's settings", "advanced_settings_tile_subtitle": "Advanced user's settings",
"advanced_settings_tile_title": "Avançat", "advanced_settings_tile_title": "Avançat",
"advanced_settings_troubleshooting_subtitle": "Enable additional features for troubleshooting", "advanced_settings_troubleshooting_subtitle": "Enable additional features for troubleshooting",
"advanced_settings_troubleshooting_title": "Resolució de problemes", "advanced_settings_troubleshooting_title": "Resolució de problemes",
"album_info_card_backup_album_excluded": "EXCLUDED", "album_info_card_backup_album_excluded": "Exclosos",
"album_info_card_backup_album_included": "INCLUDED", "album_info_card_backup_album_included": "Inclosos",
"album_thumbnail_card_item": "1 item", "album_thumbnail_card_item": "1 item",
"album_thumbnail_card_items": "{} items", "album_thumbnail_card_items": "{} items",
"album_thumbnail_card_shared": " · Shared", "album_thumbnail_card_shared": " · Shared",
"album_thumbnail_owned": "Owned", "album_thumbnail_owned": "Owned",
"album_thumbnail_shared_by": "Compartit per {}", "album_thumbnail_shared_by": "Compartit per {}",
"album_viewer_appbar_share_delete": "Delete album", "album_viewer_appbar_share_delete": "Esborra l'àlbum",
"album_viewer_appbar_share_err_delete": "Failed to delete album", "album_viewer_appbar_share_err_delete": "Error al esborrar l'àlbum",
"album_viewer_appbar_share_err_leave": "Failed to leave album", "album_viewer_appbar_share_err_leave": "Error al sortir de l'àlbum",
"album_viewer_appbar_share_err_remove": "There are problems in removing assets from album", "album_viewer_appbar_share_err_remove": "Hi ha hagut problemes al treure elements de l'àlbum",
"album_viewer_appbar_share_err_title": "Failed to change album title", "album_viewer_appbar_share_err_title": "Error al modificar el títol de l'àlbum",
"album_viewer_appbar_share_leave": "Leave album", "album_viewer_appbar_share_leave": "Surt de l'àlbum",
"album_viewer_appbar_share_remove": "Remove from album", "album_viewer_appbar_share_remove": "Treu de l'àlbum",
"album_viewer_page_share_add_users": "Add users", "album_viewer_page_share_add_users": "Afegeix usuaris",
"all_people_page_title": "People", "all_people_page_title": "Persones",
"all_videos_page_title": "Vídeos", "all_videos_page_title": "Vídeos",
"archive_page_no_archived_assets": "No s'ha trobat res arxivat", "archive_page_no_archived_assets": "No s'ha trobat res arxivat",
"archive_page_title": "Arxiu({})", "archive_page_title": "Arxiu({})",
"asset_list_layout_settings_dynamic_layout_title": "Dynamic layout", "asset_list_layout_settings_dynamic_layout_title": "Dynamic layout",
"asset_list_layout_settings_group_automatically": "Automatic", "asset_list_layout_settings_group_automatically": "Automàtic",
"asset_list_layout_settings_group_by": "Group assets by", "asset_list_layout_settings_group_by": "Group assets by",
"asset_list_layout_settings_group_by_month": "Month", "asset_list_layout_settings_group_by_month": "Month",
"asset_list_layout_settings_group_by_month_day": "Month + day", "asset_list_layout_settings_group_by_month_day": "Month + day",
"asset_list_settings_subtitle": "Photo grid layout settings", "asset_list_settings_subtitle": "Photo grid layout settings",
"asset_list_settings_title": "Photo Grid", "asset_list_settings_title": "Photo Grid",
"backup_album_selection_page_albums_device": "Albums on device ({})", "backup_album_selection_page_albums_device": "Àlbums al dispositiu ({})",
"backup_album_selection_page_albums_tap": "Tap to include, double tap to exclude", "backup_album_selection_page_albums_tap": "Tap to include, double tap to exclude",
"backup_album_selection_page_assets_scatter": "Assets can scatter across multiple albums. Thus, albums can be included or excluded during the backup process.", "backup_album_selection_page_assets_scatter": "Assets can scatter across multiple albums. Thus, albums can be included or excluded during the backup process.",
"backup_album_selection_page_select_albums": "Select albums", "backup_album_selection_page_select_albums": "Selecciona àlbums",
"backup_album_selection_page_selection_info": "Selection Info", "backup_album_selection_page_selection_info": "Informació de la selecció",
"backup_album_selection_page_total_assets": "Total unique assets", "backup_album_selection_page_total_assets": "Total d'elements únics",
"backup_all": "All", "backup_all": "All",
"backup_background_service_backup_failed_message": "Failed to backup assets. Retrying…", "backup_background_service_backup_failed_message": "Failed to backup assets. Retrying…",
"backup_background_service_connection_failed_message": "Failed to connect to the server. Retrying…", "backup_background_service_connection_failed_message": "Failed to connect to the server. Retrying…",
"backup_background_service_current_upload_notification": "Uploading {}", "backup_background_service_current_upload_notification": "Pujant {}",
"backup_background_service_default_notification": "Checking for new assets…", "backup_background_service_default_notification": "Cercant nous elements...",
"backup_background_service_error_title": "Backup error", "backup_background_service_error_title": "Error copiant",
"backup_background_service_in_progress_notification": "Backing up your assets", "backup_background_service_in_progress_notification": "Copiant els teus elements",
"backup_background_service_upload_failure_notification": "Failed to upload {}", "backup_background_service_upload_failure_notification": "Error al pujar {}",
"backup_controller_page_albums": "Backup Albums", "backup_controller_page_albums": "Copia els àlbums",
"backup_controller_page_background_app_refresh_disabled_content": "Enable background app refresh in Settings > General > Background App Refresh in order to use background backup.", "backup_controller_page_background_app_refresh_disabled_content": "Enable background app refresh in Settings > General > Background App Refresh in order to use background backup.",
"backup_controller_page_background_app_refresh_disabled_title": "Background app refresh disabled", "backup_controller_page_background_app_refresh_disabled_title": "Background app refresh disabled",
"backup_controller_page_background_app_refresh_enable_button_text": "Go to settings", "backup_controller_page_background_app_refresh_enable_button_text": "Vés a configuració",
"backup_controller_page_background_battery_info_link": "Show me how", "backup_controller_page_background_battery_info_link": "Mostra'm com",
"backup_controller_page_background_battery_info_message": "For the best background backup experience, please disable any battery optimizations restricting background activity for Immich.\n\nSince this is device-specific, please lookup the required information for your device manufacturer.", "backup_controller_page_background_battery_info_message": "For the best background backup experience, please disable any battery optimizations restricting background activity for Immich.\n\nSince this is device-specific, please lookup the required information for your device manufacturer.",
"backup_controller_page_background_battery_info_ok": "OK", "backup_controller_page_background_battery_info_ok": "D'acord",
"backup_controller_page_background_battery_info_title": "Battery optimizations", "backup_controller_page_background_battery_info_title": "Optimitzacions de bateria",
"backup_controller_page_background_charging": "Only while charging", "backup_controller_page_background_charging": "Només mentre es carrega",
"backup_controller_page_background_configure_error": "Failed to configure the background service", "backup_controller_page_background_configure_error": "Failed to configure the background service",
"backup_controller_page_background_delay": "Delay new assets backup: {}", "backup_controller_page_background_delay": "Delay new assets backup: {}",
"backup_controller_page_background_description": "Turn on the background service to automatically backup any new assets without needing to open the app", "backup_controller_page_background_description": "Turn on the background service to automatically backup any new assets without needing to open the app",
@@ -64,85 +64,90 @@
"backup_controller_page_background_turn_off": "Turn off background service", "backup_controller_page_background_turn_off": "Turn off background service",
"backup_controller_page_background_turn_on": "Turn on background service", "backup_controller_page_background_turn_on": "Turn on background service",
"backup_controller_page_background_wifi": "Only on WiFi", "backup_controller_page_background_wifi": "Only on WiFi",
"backup_controller_page_backup": "Backup", "backup_controller_page_backup": "Còpia",
"backup_controller_page_backup_selected": "Selected: ", "backup_controller_page_backup_selected": "Selected: ",
"backup_controller_page_backup_sub": "Backed up photos and videos", "backup_controller_page_backup_sub": "Fotografies i vídeos copiats",
"backup_controller_page_cancel": "Cancel", "backup_controller_page_cancel": "Cancel·la",
"backup_controller_page_created": "Created on: {}", "backup_controller_page_created": "Created on: {}",
"backup_controller_page_desc_backup": "Turn on foreground backup to automatically upload new assets to the server when opening the app.", "backup_controller_page_desc_backup": "Turn on foreground backup to automatically upload new assets to the server when opening the app.",
"backup_controller_page_excluded": "Excluded: ", "backup_controller_page_excluded": "Exclosos:",
"backup_controller_page_failed": "Failed ({})", "backup_controller_page_failed": "Failed ({})",
"backup_controller_page_filename": "File name: {} [{}]", "backup_controller_page_filename": "File name: {} [{}]",
"backup_controller_page_id": "ID: {}", "backup_controller_page_id": "ID: {}",
"backup_controller_page_info": "Backup Information", "backup_controller_page_info": "Informació de la còpia",
"backup_controller_page_none_selected": "None selected", "backup_controller_page_none_selected": "None selected",
"backup_controller_page_remainder": "Remainder", "backup_controller_page_remainder": "Restant",
"backup_controller_page_remainder_sub": "Remaining photos and videos to back up from selection", "backup_controller_page_remainder_sub": "Fotografies i vídeos restants per copiar de la selecció",
"backup_controller_page_select": "Select", "backup_controller_page_select": "Selecciona",
"backup_controller_page_server_storage": "Server Storage", "backup_controller_page_server_storage": "Server Storage",
"backup_controller_page_start_backup": "Start Backup", "backup_controller_page_start_backup": "Inicia la còpia",
"backup_controller_page_status_off": "Automatic foreground backup is off", "backup_controller_page_status_off": "Automatic foreground backup is off",
"backup_controller_page_status_on": "Automatic foreground backup is on", "backup_controller_page_status_on": "Automatic foreground backup is on",
"backup_controller_page_storage_format": "{} of {} used", "backup_controller_page_storage_format": "{} of {} used",
"backup_controller_page_to_backup": "Albums to be backup", "backup_controller_page_to_backup": "Àlbums a copiar",
"backup_controller_page_total": "Total", "backup_controller_page_total": "Total",
"backup_controller_page_total_sub": "All unique photos and videos from selected albums", "backup_controller_page_total_sub": "Totes les fotografies i vídeos dels àlbums seleccionats",
"backup_controller_page_turn_off": "Turn off foreground backup", "backup_controller_page_turn_off": "Turn off foreground backup",
"backup_controller_page_turn_on": "Turn on foreground backup", "backup_controller_page_turn_on": "Turn on foreground backup",
"backup_controller_page_uploading_file_info": "Uploading file info", "backup_controller_page_uploading_file_info": "Uploading file info",
"backup_err_only_album": "Cannot remove the only album", "backup_err_only_album": "Cannot remove the only album",
"backup_info_card_assets": "assets", "backup_info_card_assets": "elements",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)", "cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
"cache_settings_clear_cache_button": "Clear cache", "cache_settings_clear_cache_button": "Clear cache",
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.", "cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.",
"cache_settings_image_cache_size": "Image cache size ({} assets)", "cache_settings_image_cache_size": "Image cache size ({} assets)",
"cache_settings_statistics_album": "Library thumbnails", "cache_settings_statistics_album": "Library thumbnails",
"cache_settings_statistics_assets": "{} assets ({})", "cache_settings_statistics_assets": "{} elements ({})",
"cache_settings_statistics_full": "Full images", "cache_settings_statistics_full": "Imatges completes",
"cache_settings_statistics_shared": "Shared album thumbnails", "cache_settings_statistics_shared": "Shared album thumbnails",
"cache_settings_statistics_thumbnail": "Thumbnails", "cache_settings_statistics_thumbnail": "Miniatures",
"cache_settings_statistics_title": "Cache usage", "cache_settings_statistics_title": "Ús de memòria cau",
"cache_settings_subtitle": "Control the caching behaviour of the Immich mobile application", "cache_settings_subtitle": "Control the caching behaviour of the Immich mobile application",
"cache_settings_thumbnail_size": "Thumbnail cache size ({} assets)", "cache_settings_thumbnail_size": "Thumbnail cache size ({} assets)",
"cache_settings_title": "Caching Settings", "cache_settings_title": "Configuració de la memòria cau",
"change_password_form_confirm_password": "Confirm Password", "change_password_form_confirm_password": "Confirma la contrasenya",
"change_password_form_description": "Hi {firstName} {lastName},\n\nThis is either the first time you are signing into the system or a request has been made to change your password. Please enter the new password below.", "change_password_form_description": "Hi {firstName} {lastName},\n\nThis is either the first time you are signing into the system or a request has been made to change your password. Please enter the new password below.",
"change_password_form_new_password": "New Password", "change_password_form_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",
"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": "Crea un àlbum nou",
"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": "Compartit", "common_shared": "Compartit",
"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": "{} elements",
"control_bottom_app_bar_album_info_shared": "{} items · Shared", "control_bottom_app_bar_album_info_shared": "{} elements - Compartits",
"control_bottom_app_bar_archive": "Arxiu", "control_bottom_app_bar_archive": "Arxiu",
"control_bottom_app_bar_create_new_album": "Create new album", "control_bottom_app_bar_create_new_album": "Crea un àlbum nou",
"control_bottom_app_bar_delete": "Delete", "control_bottom_app_bar_delete": "Esborra",
"control_bottom_app_bar_favorite": "Favorite", "control_bottom_app_bar_favorite": "Preferit",
"control_bottom_app_bar_share": "Share", "control_bottom_app_bar_share": "Share",
"control_bottom_app_bar_unarchive": "Unarchive", "control_bottom_app_bar_unarchive": "Desarxiva",
"create_album_page_untitled": "Untitled", "create_album_page_untitled": "Untitled",
"create_shared_album_page_create": "Create", "create_shared_album_page_create": "Create",
"create_shared_album_page_share": "Share", "create_shared_album_page_share": "Comparteix",
"create_shared_album_page_share_add_assets": "ADD ASSETS", "create_shared_album_page_share_add_assets": "AFEGEIX ELEMENTS",
"create_shared_album_page_share_select_photos": "Select Photos", "create_shared_album_page_share_select_photos": "Escull fotografies",
"curated_location_page_title": "Localitzacions", "curated_location_page_title": "Localitzacions",
"curated_object_page_title": "Coses", "curated_object_page_title": "Coses",
"daily_title_text_date": "E, MMM dd", "daily_title_text_date": "E, MMM dd",
"daily_title_text_date_year": "E, MMM dd, yyyy", "daily_title_text_date_year": "E, MMM dd, yyyy",
"date_format": "E, LLL d, y • h:mm a", "date_format": "E, LLL d, y • h:mm a",
"delete_dialog_alert": "These items will be permanently deleted from Immich and from your device", "delete_dialog_alert": "These items will be permanently deleted from Immich and from your device",
"delete_dialog_cancel": "Cancel", "delete_dialog_cancel": "Cancel·la",
"delete_dialog_ok": "Delete", "delete_dialog_ok": "Esborra",
"delete_dialog_title": "Delete Permanently", "delete_dialog_title": "Esborra permanentment",
"description_input_hint_text": "Afegeix descripció...", "description_input_hint_text": "Afegeix descripció...",
"description_input_submit_error": "Error updating description, check the log for more details", "description_input_submit_error": "Error updating description, check the log for more details",
"exif_bottom_sheet_description": "Add Description...", "exif_bottom_sheet_description": "Afegeix descripció",
"exif_bottom_sheet_details": "DETAILS", "exif_bottom_sheet_details": "DETALLS",
"exif_bottom_sheet_location": "LOCATION", "exif_bottom_sheet_location": "UBICACIÓ",
"experimental_settings_new_asset_list_subtitle": "Work in progress", "experimental_settings_new_asset_list_subtitle": "Work in progress",
"experimental_settings_new_asset_list_title": "Enable experimental photo grid", "experimental_settings_new_asset_list_title": "Enable experimental photo grid",
"experimental_settings_subtitle": "Use at your own risk!", "experimental_settings_subtitle": "Use at your own risk!",
@@ -156,9 +161,10 @@
"home_page_building_timeline": "Building the timeline", "home_page_building_timeline": "Building the timeline",
"home_page_favorite_err_local": "Can not favorite local assets yet, skipping", "home_page_favorite_err_local": "Can not favorite local assets yet, skipping",
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).", "home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Download Error", "image_viewer_page_state_provider_download_error": "Download Error",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_success": "Download Success",
"library_page_albums": "Albums", "library_page_albums": "Àlbums",
"library_page_archive": "Arxiu", "library_page_archive": "Arxiu",
"library_page_device_albums": "Àlbums al Dispositiu", "library_page_device_albums": "Àlbums al Dispositiu",
"library_page_favorites": "Favorites", "library_page_favorites": "Favorites",
@@ -166,24 +172,25 @@
"library_page_sharing": "Sharing", "library_page_sharing": "Sharing",
"library_page_sort_created": "Most recently created", "library_page_sort_created": "Most recently created",
"library_page_sort_title": "Album title", "library_page_sort_title": "Album title",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API exception. Please check the server URL and try again.", "login_form_api_exception": "API exception. Please check the server URL and try again.",
"login_form_button_text": "Login", "login_form_button_text": "Entra",
"login_form_email_hint": "youremail@email.com", "login_form_email_hint": "elteu@correu.cat",
"login_form_endpoint_hint": "http://your-server-ip:port/api", "login_form_endpoint_hint": "http://ip-del-servidor:port/api",
"login_form_endpoint_url": "Server Endpoint URL", "login_form_endpoint_url": "URL del servidor",
"login_form_err_http": "Please specify http:// or https://", "login_form_err_http": "Especifica http:// o https://",
"login_form_err_invalid_email": "Invalid Email", "login_form_err_invalid_email": "Adreça de correu electrònic no vàlida",
"login_form_err_invalid_url": "Invalid URL", "login_form_err_invalid_url": "Invalid URL",
"login_form_err_leading_whitespace": "Leading whitespace", "login_form_err_leading_whitespace": "Espai en blanc al principi",
"login_form_err_trailing_whitespace": "Trailing whitespace", "login_form_err_trailing_whitespace": "Espai en blanc al final",
"login_form_failed_get_oauth_server_config": "Error logging using OAuth, check server URL", "login_form_failed_get_oauth_server_config": "Error logging using OAuth, check server URL",
"login_form_failed_get_oauth_server_disable": "OAuth feature is not available on this server", "login_form_failed_get_oauth_server_disable": "OAuth feature is not available on this server",
"login_form_failed_login": "Error logging you in, check server URL, email and password", "login_form_failed_login": "Error logging you in, check server URL, email and password",
"login_form_label_email": "Email", "login_form_label_email": "Correu electrònic",
"login_form_label_password": "Password", "login_form_label_password": "Contrasenya",
"login_form_next_button": "Següent", "login_form_next_button": "Següent",
"login_form_password_hint": "password", "login_form_password_hint": "contrasenya",
"login_form_save_login": "Stay logged in", "login_form_save_login": "Mantingues identificat",
"login_form_server_empty": "Enter a server URL.", "login_form_server_empty": "Enter a server URL.",
"login_form_server_error": "Could not connect to server.", "login_form_server_error": "Could not connect to server.",
"monthly_title_text_date_format": "MMMM y", "monthly_title_text_date_format": "MMMM y",
@@ -194,15 +201,15 @@
"notification_permission_list_tile_content": "Grant permission to enable notifications.", "notification_permission_list_tile_content": "Grant permission to enable notifications.",
"notification_permission_list_tile_enable_button": "Activa les notificacions", "notification_permission_list_tile_enable_button": "Activa les notificacions",
"notification_permission_list_tile_title": "Notification Permission", "notification_permission_list_tile_title": "Notification Permission",
"partner_page_add_partner": "Add partner", "partner_page_add_partner": "Afegeix company",
"partner_page_empty_message": "Your photos are not yet shared with any partner.", "partner_page_empty_message": "Your photos are not yet shared with any partner.",
"partner_page_no_more_users": "No more users to add", "partner_page_no_more_users": "No more users to add",
"partner_page_partner_add_failed": "Failed to add partner", "partner_page_partner_add_failed": "Failed to add partner",
"partner_page_select_partner": "Select partner", "partner_page_select_partner": "Escull company",
"partner_page_shared_to_title": "Shared to", "partner_page_shared_to_title": "Compartit amb",
"partner_page_stop_sharing_content": "{} will no longer be able to access your photos.", "partner_page_stop_sharing_content": "{} will no longer be able to access your photos.",
"partner_page_stop_sharing_title": "Stop sharing your photos?", "partner_page_stop_sharing_title": "Stop sharing your photos?",
"partner_page_title": "Partner", "partner_page_title": "Company",
"permission_onboarding_continue_anyway": "Continue anyway", "permission_onboarding_continue_anyway": "Continue anyway",
"permission_onboarding_get_started": "Get started", "permission_onboarding_get_started": "Get started",
"permission_onboarding_go_to_settings": "Go to settings", "permission_onboarding_go_to_settings": "Go to settings",
@@ -215,7 +222,7 @@
"profile_drawer_app_logs": "Logs", "profile_drawer_app_logs": "Logs",
"profile_drawer_client_server_up_to_date": "Client and Server are up-to-date", "profile_drawer_client_server_up_to_date": "Client and Server are up-to-date",
"profile_drawer_settings": "Settings", "profile_drawer_settings": "Settings",
"profile_drawer_sign_out": "Sign Out", "profile_drawer_sign_out": "Tanca la sessió",
"recently_added_page_title": "Recently Added", "recently_added_page_title": "Recently Added",
"search_bar_hint": "Search your photos", "search_bar_hint": "Search your photos",
"search_page_categories": "Categories", "search_page_categories": "Categories",
@@ -223,20 +230,20 @@
"search_page_motion_photos": "Fotografies animades", "search_page_motion_photos": "Fotografies animades",
"search_page_no_objects": "No Objects Info Available", "search_page_no_objects": "No Objects Info Available",
"search_page_no_places": "No Places Info Available", "search_page_no_places": "No Places Info Available",
"search_page_people": "People", "search_page_people": "Persones",
"search_page_places": "Places", "search_page_places": "Llocs",
"search_page_recently_added": "Afegit recentment", "search_page_recently_added": "Afegit recentment",
"search_page_screenshots": "Captures de pantalla", "search_page_screenshots": "Captures de pantalla",
"search_page_selfies": "Autofotos", "search_page_selfies": "Autofotos",
"search_page_things": "Things", "search_page_things": "Coses",
"search_page_videos": "Videos", "search_page_videos": "Videos",
"search_page_view_all_button": "Veure tot", "search_page_view_all_button": "Veure tot",
"search_page_your_activity": "Your activity", "search_page_your_activity": "Your activity",
"search_result_page_new_search_hint": "New Search", "search_result_page_new_search_hint": "Cerca nova",
"search_suggestion_list_smart_search_hint_1": "Smart search is enabled by default, to search for metadata use the syntax ", "search_suggestion_list_smart_search_hint_1": "Smart search is enabled by default, to search for metadata use the syntax ",
"search_suggestion_list_smart_search_hint_2": "m:your-search-term", "search_suggestion_list_smart_search_hint_2": "m:your-search-term",
"select_additional_user_for_sharing_page_suggestions": "Suggestions", "select_additional_user_for_sharing_page_suggestions": "Suggeriments",
"select_user_for_sharing_page_err_album": "Failed to create album", "select_user_for_sharing_page_err_album": "Error al crear l'àlbum",
"select_user_for_sharing_page_share_suggestions": "Suggestions", "select_user_for_sharing_page_share_suggestions": "Suggestions",
"server_info_box_app_version": "Versió de l'aplicació", "server_info_box_app_version": "Versió de l'aplicació",
"server_info_box_server_version": "Versió del servidor", "server_info_box_server_version": "Versió del servidor",
@@ -259,21 +266,21 @@
"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", "settings_require_restart": "Please restart Immich to apply this setting",
"share_add": "Add", "share_add": "Afegeix",
"share_add_photos": "Add photos", "share_add_photos": "Afegeix fotografies",
"share_add_title": "Add a title", "share_add_title": "Afegeix un títol",
"share_create_album": "Create album", "share_create_album": "Crea un àlbum",
"share_dialog_preparing": "Preparing...", "share_dialog_preparing": "Preparing...",
"share_invite": "Invite to album", "share_invite": "Convida a l'àlbum",
"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": "Create shared album", "sharing_silver_appbar_create_shared_album": "Crea àlbum compartit",
"sharing_silver_appbar_share_partner": "Share with partner", "sharing_silver_appbar_share_partner": "Comparteix amb un company",
"tab_controller_nav_library": "Library", "tab_controller_nav_library": "Library",
"tab_controller_nav_photos": "Photos", "tab_controller_nav_photos": "Fotografies",
"tab_controller_nav_search": "Search", "tab_controller_nav_search": "Cerca",
"tab_controller_nav_sharing": "Sharing", "tab_controller_nav_sharing": "Compartint",
"theme_setting_asset_list_storage_indicator_title": "Show storage indicator on asset tiles", "theme_setting_asset_list_storage_indicator_title": "Show storage indicator on asset tiles",
"theme_setting_asset_list_tiles_per_row_title": "Number of assets per row ({})", "theme_setting_asset_list_tiles_per_row_title": "Number of assets per row ({})",
"theme_setting_dark_mode_switch": "Dark mode", "theme_setting_dark_mode_switch": "Dark mode",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Theme", "theme_setting_theme_title": "Theme",
"theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load", "theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load",
"theme_setting_three_stage_loading_title": "Enable three-stage loading", "theme_setting_three_stage_loading_title": "Enable three-stage loading",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Acknowledge", "version_announcement_overlay_ack": "Acknowledge",
"version_announcement_overlay_release_notes": "release notes", "version_announcement_overlay_release_notes": "release notes",
"version_announcement_overlay_text_1": "Hi friend, there is a new release of", "version_announcement_overlay_text_1": "Hi friend, there is a new release of",

View File

@@ -1,8 +1,8 @@
{ {
"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": "Již v {album}", "add_to_album_bottom_sheet_already_exists": "Již v {album}",
"advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.", "advanced_settings_prefer_remote_subtitle": "U některých zařízení je načítání miniatur z prostředků v zařízení velmi pomalé. Aktivujte toto nastavení, aby se místo toho načítaly vzdálené obrázky.",
"advanced_settings_prefer_remote_title": "Prefer remote images", "advanced_settings_prefer_remote_title": "Preferovat vzdálené obrázky",
"advanced_settings_tile_subtitle": "Pokročilé uživatelské nastavení", "advanced_settings_tile_subtitle": "Pokročilé uživatelské nastavení",
"advanced_settings_tile_title": "Pokročilé", "advanced_settings_tile_title": "Pokročilé",
"advanced_settings_troubleshooting_subtitle": "Povolit dodatečné funkce pro řešení problémů", "advanced_settings_troubleshooting_subtitle": "Povolit dodatečné funkce pro řešení problémů",
@@ -22,12 +22,12 @@
"album_viewer_appbar_share_leave": "Opustit album", "album_viewer_appbar_share_leave": "Opustit album",
"album_viewer_appbar_share_remove": "Odstranit z alba", "album_viewer_appbar_share_remove": "Odstranit z alba",
"album_viewer_page_share_add_users": "Přidat uživatele", "album_viewer_page_share_add_users": "Přidat uživatele",
"all_people_page_title": "People", "all_people_page_title": "Lidé",
"all_videos_page_title": "Videa", "all_videos_page_title": "Videa",
"archive_page_no_archived_assets": "No archived assets found", "archive_page_no_archived_assets": "Nebyla nalezena žádná archivovaná média",
"archive_page_title": "Archív ({})", "archive_page_title": "Archív ({})",
"asset_list_layout_settings_dynamic_layout_title": "Dynamické rozložení", "asset_list_layout_settings_dynamic_layout_title": "Dynamické rozložení",
"asset_list_layout_settings_group_automatically": "Automatic", "asset_list_layout_settings_group_automatically": "Automaticky",
"asset_list_layout_settings_group_by": "Seskupit položky podle", "asset_list_layout_settings_group_by": "Seskupit položky podle",
"asset_list_layout_settings_group_by_month": "Měsíc", "asset_list_layout_settings_group_by_month": "Měsíc",
"asset_list_layout_settings_group_by_month_day": "Měsíc + den", "asset_list_layout_settings_group_by_month_day": "Měsíc + den",
@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Nahrávaný soubor", "backup_controller_page_uploading_file_info": "Nahrávaný soubor",
"backup_err_only_album": "Nelze odstranit jediné vybrané album", "backup_err_only_album": "Nelze odstranit jediné vybrané album",
"backup_info_card_assets": "položek", "backup_info_card_assets": "položek",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Selhalo",
"backup_manual_in_progress": "Zálohování již probíhá. Zkuste znovu později",
"backup_manual_success": "Úspěch",
"backup_manual_title": "Stav zálohování",
"cache_settings_album_thumbnails": "Náhledy stránek knihovny (položek {})", "cache_settings_album_thumbnails": "Náhledy stránek knihovny (položek {})",
"cache_settings_clear_cache_button": "Vymazat vyrovnávací paměť", "cache_settings_clear_cache_button": "Vymazat vyrovnávací paměť",
"cache_settings_clear_cache_button_title": "Vymaže vyrovnávací paměť aplikace. To výrazně ovlivní výkon aplikace, dokud se vyrovnávací paměť neobnoví.", "cache_settings_clear_cache_button_title": "Vymaže vyrovnávací paměť aplikace. To výrazně ovlivní výkon aplikace, dokud se vyrovnávací paměť neobnoví.",
@@ -123,7 +128,7 @@
"control_bottom_app_bar_delete": "Vymazat", "control_bottom_app_bar_delete": "Vymazat",
"control_bottom_app_bar_favorite": "Oblíbené", "control_bottom_app_bar_favorite": "Oblíbené",
"control_bottom_app_bar_share": "Sdílet", "control_bottom_app_bar_share": "Sdílet",
"control_bottom_app_bar_unarchive": "Unarchive", "control_bottom_app_bar_unarchive": "Odarchivovat",
"create_album_page_untitled": "Bez názvu", "create_album_page_untitled": "Bez názvu",
"create_shared_album_page_create": "Vytvořit", "create_shared_album_page_create": "Vytvořit",
"create_shared_album_page_share": "Sdílet", "create_shared_album_page_share": "Sdílet",
@@ -147,7 +152,7 @@
"experimental_settings_new_asset_list_title": "Povolení experimentální mřížky fotografií", "experimental_settings_new_asset_list_title": "Povolení experimentální mřížky fotografií",
"experimental_settings_subtitle": "Používejte na vlastní riziko!", "experimental_settings_subtitle": "Používejte na vlastní riziko!",
"experimental_settings_title": "Experimentální", "experimental_settings_title": "Experimentální",
"favorites_page_no_favorites": "No favorite assets found", "favorites_page_no_favorites": "Nebyla nalezena žádná oblíbená média",
"favorites_page_title": "Oblíbené", "favorites_page_title": "Oblíbené",
"home_page_add_to_album_conflicts": "Přidáno {added} položek do alba {album}. {failed} položek již je v albu.", "home_page_add_to_album_conflicts": "Přidáno {added} položek do alba {album}. {failed} položek již je v albu.",
"home_page_add_to_album_err_local": "Zatím není možné přidat lokální média do alb, přeskakuje se", "home_page_add_to_album_err_local": "Zatím není možné přidat lokální média do alb, přeskakuje se",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "Vytváření časové osy", "home_page_building_timeline": "Vytváření časové osy",
"home_page_favorite_err_local": "Zatím není možné zařadit lokální média mezi oblíbená, přeskakuje se", "home_page_favorite_err_local": "Zatím není možné zařadit lokální média mezi oblíbená, přeskakuje se",
"home_page_first_time_notice": "Pokud aplikaci používáte poprvé, nezapomeňte si vybrat zálohovaná alba, aby se na časové ose mohly nacházet fotografie a videa z vybraných albech.", "home_page_first_time_notice": "Pokud aplikaci používáte poprvé, nezapomeňte si vybrat zálohovaná alba, aby se na časové ose mohly nacházet fotografie a videa z vybraných albech.",
"home_page_upload_err_limit": "Lze nahrát nejvýše 30 položek najednou, přeskakuji",
"image_viewer_page_state_provider_download_error": "Chyba stahování", "image_viewer_page_state_provider_download_error": "Chyba stahování",
"image_viewer_page_state_provider_download_success": "Stahování bylo úspěšné", "image_viewer_page_state_provider_download_success": "Stahování bylo úspěšné",
"library_page_albums": "Alba", "library_page_albums": "Alba",
@@ -166,6 +172,7 @@
"library_page_sharing": "Sdílení", "library_page_sharing": "Sdílení",
"library_page_sort_created": "Naposledy vytvořené", "library_page_sort_created": "Naposledy vytvořené",
"library_page_sort_title": "Podle názvu alba", "library_page_sort_title": "Podle názvu alba",
"login_disabled": "Přihlášení bylo zakázáno",
"login_form_api_exception": "Výjimka API. Zkontrolujte URL serveru a zkuste to znovu.", "login_form_api_exception": "Výjimka API. Zkontrolujte URL serveru a zkuste to znovu.",
"login_form_button_text": "Přihlásit se", "login_form_button_text": "Přihlásit se",
"login_form_email_hint": "tvůjmail@email.com", "login_form_email_hint": "tvůjmail@email.com",
@@ -194,14 +201,14 @@
"notification_permission_list_tile_content": "Udělte oprávnění k aktivaci oznámení.", "notification_permission_list_tile_content": "Udělte oprávnění k aktivaci oznámení.",
"notification_permission_list_tile_enable_button": "Povolit oznámení", "notification_permission_list_tile_enable_button": "Povolit oznámení",
"notification_permission_list_tile_title": "Povolení oznámení", "notification_permission_list_tile_title": "Povolení oznámení",
"partner_page_add_partner": "Add partner", "partner_page_add_partner": "Přidat partnera",
"partner_page_empty_message": "Your photos are not yet shared with any partner.", "partner_page_empty_message": "Vaše fotografie zatím nejsou sdíleny s žádným partnerem.",
"partner_page_no_more_users": "No more users to add", "partner_page_no_more_users": "Žádní další uživatelé k přidání",
"partner_page_partner_add_failed": "Failed to add partner", "partner_page_partner_add_failed": "Nepodařilo se přidat partnera",
"partner_page_select_partner": "Select partner", "partner_page_select_partner": "Vyberte partnera",
"partner_page_shared_to_title": "Shared to", "partner_page_shared_to_title": "Sdíleno",
"partner_page_stop_sharing_content": "{} will no longer be able to access your photos.", "partner_page_stop_sharing_content": "{} již nebude mít přístup k vašim fotografiím.",
"partner_page_stop_sharing_title": "Stop sharing your photos?", "partner_page_stop_sharing_title": "Přestat sdílet vaše fotografie?",
"partner_page_title": "Partner", "partner_page_title": "Partner",
"permission_onboarding_continue_anyway": "Přesto pokračovat", "permission_onboarding_continue_anyway": "Přesto pokračovat",
"permission_onboarding_get_started": "Začít", "permission_onboarding_get_started": "Začít",
@@ -223,7 +230,7 @@
"search_page_motion_photos": "Pohyblivé fotky", "search_page_motion_photos": "Pohyblivé fotky",
"search_page_no_objects": "Informace o objektech nejsou k dispozici", "search_page_no_objects": "Informace o objektech nejsou k dispozici",
"search_page_no_places": "Informace o místě nejsou k dispozici", "search_page_no_places": "Informace o místě nejsou k dispozici",
"search_page_people": "People", "search_page_people": "Lidé",
"search_page_places": "Místa", "search_page_places": "Místa",
"search_page_recently_added": "Nedávno přidané", "search_page_recently_added": "Nedávno přidané",
"search_page_screenshots": "Snímky obrazovky", "search_page_screenshots": "Snímky obrazovky",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Téma", "theme_setting_theme_title": "Téma",
"theme_setting_three_stage_loading_subtitle": "Třístupňové načítání může zvýšit výkonnost načítání, ale vede k výrazně vyššímu zatížení sítě.", "theme_setting_three_stage_loading_subtitle": "Třístupňové načítání může zvýšit výkonnost načítání, ale vede k výrazně vyššímu zatížení sítě.",
"theme_setting_three_stage_loading_title": "Povolení třístupňového načítání", "theme_setting_three_stage_loading_title": "Povolení třístupňového načítání",
"upload_dialog_cancel": "Zrušit",
"upload_dialog_info": "Chcete zálohovat vybrané položky na server?",
"upload_dialog_ok": "Zálohovat",
"upload_dialog_title": "Zálohovat položku",
"version_announcement_overlay_ack": "Potvrdit", "version_announcement_overlay_ack": "Potvrdit",
"version_announcement_overlay_release_notes": "poznámky k vydání", "version_announcement_overlay_release_notes": "poznámky k vydání",
"version_announcement_overlay_text_1": "Ahoj, je zde nová verze", "version_announcement_overlay_text_1": "Ahoj, je zde nová verze",

View File

@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Uploader filinformation", "backup_controller_page_uploading_file_info": "Uploader filinformation",
"backup_err_only_album": "Kan ikke slette det eneste album", "backup_err_only_album": "Kan ikke slette det eneste album",
"backup_info_card_assets": "elementer", "backup_info_card_assets": "elementer",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Biblioteksminiaturebilleder ({} elementer)", "cache_settings_album_thumbnails": "Biblioteksminiaturebilleder ({} elementer)",
"cache_settings_clear_cache_button": "Fjern cache", "cache_settings_clear_cache_button": "Fjern cache",
"cache_settings_clear_cache_button_title": "Fjern appens cache. Dette vil i stor grad påvirke appens ydeevne indtil cachen er genopbygget.", "cache_settings_clear_cache_button_title": "Fjern appens cache. Dette vil i stor grad påvirke appens ydeevne indtil cachen er genopbygget.",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "Bygger tidslinjen", "home_page_building_timeline": "Bygger tidslinjen",
"home_page_favorite_err_local": "Kan endnu ikke gøre lokale elementer til favoritter. Springer over..", "home_page_favorite_err_local": "Kan endnu ikke gøre lokale elementer til favoritter. Springer over..",
"home_page_first_time_notice": "Hvis dette er din første gang i appen, bedes du vælge en backup af albummer så tidlinjen kan blive fyldt med billeder og videoer fra albummerne.", "home_page_first_time_notice": "Hvis dette er din første gang i appen, bedes du vælge en backup af albummer så tidlinjen kan blive fyldt med billeder og videoer fra albummerne.",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Fejl ved download", "image_viewer_page_state_provider_download_error": "Fejl ved download",
"image_viewer_page_state_provider_download_success": "Download succesfuld", "image_viewer_page_state_provider_download_success": "Download succesfuld",
"library_page_albums": "Albummer", "library_page_albums": "Albummer",
@@ -166,6 +172,7 @@
"library_page_sharing": "Delte", "library_page_sharing": "Delte",
"library_page_sort_created": "Senest oprettet", "library_page_sort_created": "Senest oprettet",
"library_page_sort_title": "Albumtitel", "library_page_sort_title": "Albumtitel",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API-undtagelse. Tjek serverens URL og prøv igen. ", "login_form_api_exception": "API-undtagelse. Tjek serverens URL og prøv igen. ",
"login_form_button_text": "Log ind", "login_form_button_text": "Log ind",
"login_form_email_hint": "din-e-mail@e-mail.com", "login_form_email_hint": "din-e-mail@e-mail.com",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Tema", "theme_setting_theme_title": "Tema",
"theme_setting_three_stage_loading_subtitle": "Tre-trins indlæsning kan øge ydeevnen, men kan ligeledes føre til højere netværksbelastning", "theme_setting_three_stage_loading_subtitle": "Tre-trins indlæsning kan øge ydeevnen, men kan ligeledes føre til højere netværksbelastning",
"theme_setting_three_stage_loading_title": "Slå tre-trins indlæsning til", "theme_setting_three_stage_loading_title": "Slå tre-trins indlæsning til",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Accepter", "version_announcement_overlay_ack": "Accepter",
"version_announcement_overlay_release_notes": "udgivelsesnoterne", "version_announcement_overlay_release_notes": "udgivelsesnoterne",
"version_announcement_overlay_text_1": "Hej ven, der er en ny version af", "version_announcement_overlay_text_1": "Hej ven, der er en ny version af",

View File

@@ -1,8 +1,8 @@
{ {
"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}",
"advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.", "advanced_settings_prefer_remote_subtitle": "Manche Endgeräte laden Vorschaubilder lokaler Bilder sehr langsam. Durch diese Einstellung werden diese stattdessen direkt vom Server geladen.",
"advanced_settings_prefer_remote_title": "Prefer remote images", "advanced_settings_prefer_remote_title": "Server-Bilder bevorzugen",
"advanced_settings_tile_subtitle": "Erweiterte Benutzereinstellungen", "advanced_settings_tile_subtitle": "Erweiterte Benutzereinstellungen",
"advanced_settings_tile_title": "Sonstige", "advanced_settings_tile_title": "Sonstige",
"advanced_settings_troubleshooting_subtitle": "Aktiviere erweiterte Funktionen zur Fehlersuche", "advanced_settings_troubleshooting_subtitle": "Aktiviere erweiterte Funktionen zur Fehlersuche",
@@ -22,9 +22,9 @@
"album_viewer_appbar_share_leave": "Album verlassen", "album_viewer_appbar_share_leave": "Album verlassen",
"album_viewer_appbar_share_remove": "Entferne vom Album", "album_viewer_appbar_share_remove": "Entferne vom Album",
"album_viewer_page_share_add_users": "Nutzer hinzufügen", "album_viewer_page_share_add_users": "Nutzer hinzufügen",
"all_people_page_title": "People", "all_people_page_title": "Personen",
"all_videos_page_title": "Videos", "all_videos_page_title": "Videos",
"archive_page_no_archived_assets": "Keine archivierten Elemente gefunden", "archive_page_no_archived_assets": "Keine archivierten Inhalte gefunden",
"archive_page_title": "Archive ({})", "archive_page_title": "Archive ({})",
"asset_list_layout_settings_dynamic_layout_title": "Dynamisches Layout", "asset_list_layout_settings_dynamic_layout_title": "Dynamisches Layout",
"asset_list_layout_settings_group_automatically": "Automatisch", "asset_list_layout_settings_group_automatically": "Automatisch",
@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Informationen", "backup_controller_page_uploading_file_info": "Informationen",
"backup_err_only_album": "Das einzige Album kann nicht entfernt werden", "backup_err_only_album": "Das einzige Album kann nicht entfernt werden",
"backup_info_card_assets": "Elemente", "backup_info_card_assets": "Elemente",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)", "cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
"cache_settings_clear_cache_button": "Zwischenspeicher löschen", "cache_settings_clear_cache_button": "Zwischenspeicher löschen",
"cache_settings_clear_cache_button_title": "Löscht den Zwischenspeicher der App. Dies wird die Leistungsfähigkeit der App deutlich einschränken, bis der Zwischenspeicher wieder aufgebaut wurde.", "cache_settings_clear_cache_button_title": "Löscht den Zwischenspeicher der App. Dies wird die Leistungsfähigkeit der App deutlich einschränken, bis der Zwischenspeicher wieder aufgebaut wurde.",
@@ -127,7 +132,7 @@
"create_album_page_untitled": "Unbenannt", "create_album_page_untitled": "Unbenannt",
"create_shared_album_page_create": "Erstellen", "create_shared_album_page_create": "Erstellen",
"create_shared_album_page_share": "Teilen", "create_shared_album_page_share": "Teilen",
"create_shared_album_page_share_add_assets": "ELEMENTE HINZUFÜGEN", "create_shared_album_page_share_add_assets": "INHALTE HINZUFÜGEN",
"create_shared_album_page_share_select_photos": "Fotos auswählen", "create_shared_album_page_share_select_photos": "Fotos auswählen",
"curated_location_page_title": "Orte", "curated_location_page_title": "Orte",
"curated_object_page_title": "Dinge", "curated_object_page_title": "Dinge",
@@ -147,7 +152,7 @@
"experimental_settings_new_asset_list_title": "Experimentelle Fotogitter aktivieren", "experimental_settings_new_asset_list_title": "Experimentelle Fotogitter aktivieren",
"experimental_settings_subtitle": "Benutzung auf eigene Gefahr!", "experimental_settings_subtitle": "Benutzung auf eigene Gefahr!",
"experimental_settings_title": "Experimentell", "experimental_settings_title": "Experimentell",
"favorites_page_no_favorites": "Keine favorisierten Elemente gefunden", "favorites_page_no_favorites": "Keine favorisierten Inhalte gefunden",
"favorites_page_title": "Favoriten", "favorites_page_title": "Favoriten",
"home_page_add_to_album_conflicts": "{added} Elemente zu {album} hinzugefügt. {failed} Elemente sind bereits vorhanden.", "home_page_add_to_album_conflicts": "{added} Elemente zu {album} hinzugefügt. {failed} Elemente sind bereits vorhanden.",
"home_page_add_to_album_err_local": "Kann lokale Elemente noch nicht zu Alben hinzufügen, überspringe", "home_page_add_to_album_err_local": "Kann lokale Elemente noch nicht zu Alben hinzufügen, überspringe",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "Zeitachse wird erstellt.", "home_page_building_timeline": "Zeitachse wird erstellt.",
"home_page_favorite_err_local": "Kann lokale Elemente noch nicht favorisieren, überspringe", "home_page_favorite_err_local": "Kann lokale Elemente noch nicht favorisieren, überspringe",
"home_page_first_time_notice": "Wenn dies das erste Mal ist dass Du Immich nutzt, stelle bitte sicher, dass mindestens ein Album zur Sicherung ausgewählt ist, sodass die Zeitachse mit Fotos und Videos gefüllt werden kann.", "home_page_first_time_notice": "Wenn dies das erste Mal ist dass Du Immich nutzt, stelle bitte sicher, dass mindestens ein Album zur Sicherung ausgewählt ist, sodass die Zeitachse mit Fotos und Videos gefüllt werden kann.",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Fehler beim Herunterladen", "image_viewer_page_state_provider_download_error": "Fehler beim Herunterladen",
"image_viewer_page_state_provider_download_success": "Erfolgreich heruntergeladen", "image_viewer_page_state_provider_download_success": "Erfolgreich heruntergeladen",
"library_page_albums": "Alben", "library_page_albums": "Alben",
@@ -166,6 +172,7 @@
"library_page_sharing": "Teilen", "library_page_sharing": "Teilen",
"library_page_sort_created": "Zuletzt erstellt", "library_page_sort_created": "Zuletzt erstellt",
"library_page_sort_title": "Albumtitel", "library_page_sort_title": "Albumtitel",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API Fehler. Bitte die Serveradresse überprüfen und erneut versuchen.", "login_form_api_exception": "API Fehler. Bitte die Serveradresse überprüfen und erneut versuchen.",
"login_form_button_text": "Anmelden", "login_form_button_text": "Anmelden",
"login_form_email_hint": "deine@email.de", "login_form_email_hint": "deine@email.de",
@@ -174,8 +181,8 @@
"login_form_err_http": "Bitte gebe http:// oder https:// an", "login_form_err_http": "Bitte gebe http:// oder https:// an",
"login_form_err_invalid_email": "Ungültige E-Mail", "login_form_err_invalid_email": "Ungültige E-Mail",
"login_form_err_invalid_url": "Ungültige URL", "login_form_err_invalid_url": "Ungültige URL",
"login_form_err_leading_whitespace": "Führendes Leerzichen", "login_form_err_leading_whitespace": "Leerzichen am Anfang",
"login_form_err_trailing_whitespace": "Folgendes Leerzeichen", "login_form_err_trailing_whitespace": "Leerzeichen am Ende",
"login_form_failed_get_oauth_server_config": "Fehler beim Login per OAuth, Server-URL überprüfen", "login_form_failed_get_oauth_server_config": "Fehler beim Login per OAuth, Server-URL überprüfen",
"login_form_failed_get_oauth_server_disable": "OAuth-Funktion nicht verfügbar auf diesem Server.", "login_form_failed_get_oauth_server_disable": "OAuth-Funktion nicht verfügbar auf diesem Server.",
"login_form_failed_login": "Error logging you in, check server url, email and password", "login_form_failed_login": "Error logging you in, check server url, email and password",
@@ -194,13 +201,13 @@
"notification_permission_list_tile_content": "Erlaube Berechtigung für Benachrichtigungen", "notification_permission_list_tile_content": "Erlaube Berechtigung für Benachrichtigungen",
"notification_permission_list_tile_enable_button": "Aktiviere Benachrichtigungen", "notification_permission_list_tile_enable_button": "Aktiviere Benachrichtigungen",
"notification_permission_list_tile_title": "Benachrichtigungs-Berechtigung", "notification_permission_list_tile_title": "Benachrichtigungs-Berechtigung",
"partner_page_add_partner": "Add partner", "partner_page_add_partner": "Partner hinzufügen",
"partner_page_empty_message": "Your photos are not yet shared with any partner.", "partner_page_empty_message": "Your photos are not yet shared with any partner.",
"partner_page_no_more_users": "No more users to add", "partner_page_no_more_users": "No more users to add",
"partner_page_partner_add_failed": "Failed to add partner", "partner_page_partner_add_failed": "Failed to add partner",
"partner_page_select_partner": "Select partner", "partner_page_select_partner": "Partner auswählen",
"partner_page_shared_to_title": "Shared to", "partner_page_shared_to_title": "Geteilt mit",
"partner_page_stop_sharing_content": "{} will no longer be able to access your photos.", "partner_page_stop_sharing_content": "{} wird nicht mehr auf deine Fotos zugreifen können.",
"partner_page_stop_sharing_title": "Stop sharing your photos?", "partner_page_stop_sharing_title": "Stop sharing your photos?",
"partner_page_title": "Partner", "partner_page_title": "Partner",
"permission_onboarding_continue_anyway": "Trotzdem fortfahren", "permission_onboarding_continue_anyway": "Trotzdem fortfahren",
@@ -223,7 +230,7 @@
"search_page_motion_photos": "Live Photos", "search_page_motion_photos": "Live Photos",
"search_page_no_objects": "Keine Objektinformationen verfügbar", "search_page_no_objects": "Keine Objektinformationen verfügbar",
"search_page_no_places": "Keine Informationen über Orte verfügbar", "search_page_no_places": "Keine Informationen über Orte verfügbar",
"search_page_people": "People", "search_page_people": "Personen",
"search_page_places": "Orte", "search_page_places": "Orte",
"search_page_recently_added": "Zuletzt hinzugefügt", "search_page_recently_added": "Zuletzt hinzugefügt",
"search_page_screenshots": "Bildschirmfotos", "search_page_screenshots": "Bildschirmfotos",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Theme", "theme_setting_theme_title": "Theme",
"theme_setting_three_stage_loading_subtitle": "Das dreistufige Ladeverfahren kann die Performance beim Laden verbessern, erhöht allerdings den Datenverbrauch deutlich", "theme_setting_three_stage_loading_subtitle": "Das dreistufige Ladeverfahren kann die Performance beim Laden verbessern, erhöht allerdings den Datenverbrauch deutlich",
"theme_setting_three_stage_loading_title": "Dreistufiges Laden aktivieren", "theme_setting_three_stage_loading_title": "Dreistufiges Laden aktivieren",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Ich habe verstanden", "version_announcement_overlay_ack": "Ich habe verstanden",
"version_announcement_overlay_release_notes": "Änderungsprotokoll", "version_announcement_overlay_release_notes": "Änderungsprotokoll",
"version_announcement_overlay_text_1": "Hallo mein Freund! Es gibt eine neue Version von", "version_announcement_overlay_text_1": "Hallo mein Freund! Es gibt eine neue Version von",

View File

@@ -84,7 +84,7 @@
"backup_controller_page_status_off": "Automatic foreground backup is off", "backup_controller_page_status_off": "Automatic foreground backup is off",
"backup_controller_page_status_on": "Automatic foreground backup is on", "backup_controller_page_status_on": "Automatic foreground backup is on",
"backup_controller_page_storage_format": "{} of {} used", "backup_controller_page_storage_format": "{} of {} used",
"backup_controller_page_to_backup": "Albums to be backed up", "backup_controller_page_to_backup": "Albums to be backup",
"backup_controller_page_total": "Total", "backup_controller_page_total": "Total",
"backup_controller_page_total_sub": "All unique photos and videos from selected albums", "backup_controller_page_total_sub": "All unique photos and videos from selected albums",
"backup_controller_page_turn_off": "Turn off foreground backup", "backup_controller_page_turn_off": "Turn off foreground backup",
@@ -92,10 +92,11 @@
"backup_controller_page_uploading_file_info": "Uploading file info", "backup_controller_page_uploading_file_info": "Uploading file info",
"backup_err_only_album": "Cannot remove the only album", "backup_err_only_album": "Cannot remove the only album",
"backup_info_card_assets": "assets", "backup_info_card_assets": "assets",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed", "backup_manual_failed": "Failed",
"backup_manual_title": "Upload status",
"backup_manual_success": "Success",
"backup_manual_in_progress": "Upload already in progress. Try after sometime", "backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)", "cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
"cache_settings_clear_cache_button": "Clear cache", "cache_settings_clear_cache_button": "Clear cache",
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.", "cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.",
@@ -142,10 +143,6 @@
"delete_dialog_cancel": "Cancel", "delete_dialog_cancel": "Cancel",
"delete_dialog_ok": "Delete", "delete_dialog_ok": "Delete",
"delete_dialog_title": "Delete Permanently", "delete_dialog_title": "Delete Permanently",
"upload_dialog_title": "Upload Asset",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_cancel": "Cancel",
"description_input_hint_text": "Add description...", "description_input_hint_text": "Add description...",
"description_input_submit_error": "Error updating description, check the log for more details", "description_input_submit_error": "Error updating description, check the log for more details",
"exif_bottom_sheet_description": "Add Description...", "exif_bottom_sheet_description": "Add Description...",
@@ -161,10 +158,10 @@
"home_page_add_to_album_err_local": "Can not add local assets to albums yet, skipping", "home_page_add_to_album_err_local": "Can not add local assets to albums yet, skipping",
"home_page_add_to_album_success": "Added {added} assets to album {album}.", "home_page_add_to_album_success": "Added {added} assets to album {album}.",
"home_page_archive_err_local": "Can not archive local assets yet, skipping", "home_page_archive_err_local": "Can not archive local assets yet, skipping",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"home_page_building_timeline": "Building the timeline", "home_page_building_timeline": "Building the timeline",
"home_page_favorite_err_local": "Can not favorite local assets yet, skipping", "home_page_favorite_err_local": "Can not favorite local assets yet, skipping",
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).", "home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Download Error", "image_viewer_page_state_provider_download_error": "Download Error",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_success": "Download Success",
"library_page_albums": "Albums", "library_page_albums": "Albums",
@@ -175,6 +172,7 @@
"library_page_sharing": "Sharing", "library_page_sharing": "Sharing",
"library_page_sort_created": "Most recently created", "library_page_sort_created": "Most recently created",
"library_page_sort_title": "Album title", "library_page_sort_title": "Album title",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API exception. Please check the server URL and try again.", "login_form_api_exception": "API exception. Please check the server URL and try again.",
"login_form_button_text": "Login", "login_form_button_text": "Login",
"login_form_email_hint": "youremail@email.com", "login_form_email_hint": "youremail@email.com",
@@ -195,7 +193,6 @@
"login_form_save_login": "Stay logged in", "login_form_save_login": "Stay logged in",
"login_form_server_empty": "Enter a server URL.", "login_form_server_empty": "Enter a server URL.",
"login_form_server_error": "Could not connect to server.", "login_form_server_error": "Could not connect to server.",
"login_disabled": "Login has been disabled",
"monthly_title_text_date_format": "MMMM y", "monthly_title_text_date_format": "MMMM y",
"motion_photos_page_title": "Motion Photos", "motion_photos_page_title": "Motion Photos",
"notification_permission_dialog_cancel": "Cancel", "notification_permission_dialog_cancel": "Cancel",
@@ -294,10 +291,30 @@
"theme_setting_theme_title": "Theme", "theme_setting_theme_title": "Theme",
"theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load", "theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load",
"theme_setting_three_stage_loading_title": "Enable three-stage loading", "theme_setting_three_stage_loading_title": "Enable three-stage loading",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Acknowledge", "version_announcement_overlay_ack": "Acknowledge",
"version_announcement_overlay_release_notes": "release notes", "version_announcement_overlay_release_notes": "release notes",
"version_announcement_overlay_text_1": "Hi friend, there is a new release of", "version_announcement_overlay_text_1": "Hi friend, there is a new release of",
"version_announcement_overlay_text_2": "please take your time to visit the ", "version_announcement_overlay_text_2": "please take your time to visit the ",
"version_announcement_overlay_text_3": " and ensure your docker-compose and .env setup is up-to-date to prevent any misconfigurations, especially if you use WatchTower or any mechanism that handles updating your server application automatically.", "version_announcement_overlay_text_3": " and ensure your docker-compose and .env setup is up-to-date to prevent any misconfigurations, especially if you use WatchTower or any mechanism that handles updating your server application automatically.",
"version_announcement_overlay_title": "New Server Version Available \uD83C\uDF89" "version_announcement_overlay_title": "New Server Version Available \uD83C\uDF89",
"translated_text_options": "Options",
"map_no_assets_in_bounds": "No photos in this area",
"map_zoom_to_see_photos": "Zoom out to see photos",
"map_settings_dialog_title": "Map Settings",
"map_settings_dark_mode": "Dark mode",
"map_settings_only_show_favorites": "Show Favorite Only",
"map_settings_only_relative_range": "Date range",
"map_settings_dialog_cancel": "Cancel",
"map_settings_dialog_save": "Save",
"map_cannot_get_user_location": "Cannot get user's location",
"map_location_service_disabled_title": "Location Service disabled",
"map_location_service_disabled_content": "Location service needs to be enabled to display assets from your current location. Do you want to enable it now?",
"map_no_location_permission_title": "Location Permission denied",
"map_no_location_permission_content": "Location permission is needed to display assets from your current location. Do you want to allow it now?",
"map_location_dialog_cancel": "Cancel",
"map_location_dialog_yes": "Yes"
} }

View File

@@ -1,83 +1,83 @@
{ {
"add_to_album_bottom_sheet_added": "Added to {album}", "add_to_album_bottom_sheet_added": "Agregado a {album}",
"add_to_album_bottom_sheet_already_exists": "Already in {album}", "add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}",
"advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.", "advanced_settings_prefer_remote_subtitle": "Algunos dispositivos tardan mucho en cargar las miniaturas de recursos encontrados el dispositivo. Activa esta opción para cargar imágenes remotas en su lugar.",
"advanced_settings_prefer_remote_title": "Prefer remote images", "advanced_settings_prefer_remote_title": "Preferir imágenes remotas",
"advanced_settings_tile_subtitle": "Advanced user's settings", "advanced_settings_tile_subtitle": "Configuraciones avanzadas del usuario",
"advanced_settings_tile_title": "Advanced", "advanced_settings_tile_title": "Avanzado",
"advanced_settings_troubleshooting_subtitle": "Enable additional features for troubleshooting", "advanced_settings_troubleshooting_subtitle": "Habilitar funciones adicionales para solución de problemas",
"advanced_settings_troubleshooting_title": "Troubleshooting", "advanced_settings_troubleshooting_title": "Solución de problemas",
"album_info_card_backup_album_excluded": "EXCLUIDOS", "album_info_card_backup_album_excluded": "EXCLUIDOS",
"album_info_card_backup_album_included": "INCLUIDOS", "album_info_card_backup_album_included": "INCLUIDOS",
"album_thumbnail_card_item": "1 item", "album_thumbnail_card_item": "1 elemento",
"album_thumbnail_card_items": "{} items", "album_thumbnail_card_items": "{} elementos",
"album_thumbnail_card_shared": " · Shared", "album_thumbnail_card_shared": "Compartido",
"album_thumbnail_owned": "Owned", "album_thumbnail_owned": "Propio",
"album_thumbnail_shared_by": "Shared by {}", "album_thumbnail_shared_by": "Compartido por {}",
"album_viewer_appbar_share_delete": "Eliminar álbum ", "album_viewer_appbar_share_delete": "Eliminar álbum ",
"album_viewer_appbar_share_err_delete": "No ha podido eliminar el álbum", "album_viewer_appbar_share_err_delete": "No ha podido eliminar el álbum",
"album_viewer_appbar_share_err_leave": "No ha podido dejar el álbum", "album_viewer_appbar_share_err_leave": "No se ha podido abandonar el álbum",
"album_viewer_appbar_share_err_remove": "Hay problemas para eliminar los activos del álbum", "album_viewer_appbar_share_err_remove": "Hay problemas para eliminar los archivos del álbum",
"album_viewer_appbar_share_err_title": "Error al cambiar el título del álbum ", "album_viewer_appbar_share_err_title": "Error al cambiar el título del álbum ",
"album_viewer_appbar_share_leave": "Abandonar álbum ", "album_viewer_appbar_share_leave": "Abandonar álbum ",
"album_viewer_appbar_share_remove": "Eliminar del álbum ", "album_viewer_appbar_share_remove": "Eliminar del álbum ",
"album_viewer_page_share_add_users": "Añadir usuarios", "album_viewer_page_share_add_users": "Agregar usuarios",
"all_people_page_title": "People", "all_people_page_title": "Personas",
"all_videos_page_title": "Videos", "all_videos_page_title": "Videos",
"archive_page_no_archived_assets": "No archived assets found", "archive_page_no_archived_assets": "No se encontraron recursos archivados",
"archive_page_title": "Archive ({})", "archive_page_title": "Archivo ({})",
"asset_list_layout_settings_dynamic_layout_title": "Disposición dinámica", "asset_list_layout_settings_dynamic_layout_title": "Diseño dinámico",
"asset_list_layout_settings_group_automatically": "Automatic", "asset_list_layout_settings_group_automatically": "Automatico",
"asset_list_layout_settings_group_by": "Agrupar recursos por", "asset_list_layout_settings_group_by": "Agrupar recursos por",
"asset_list_layout_settings_group_by_month": "Mes", "asset_list_layout_settings_group_by_month": "Mes",
"asset_list_layout_settings_group_by_month_day": "Mes + día", "asset_list_layout_settings_group_by_month_day": "Mes + día",
"asset_list_settings_subtitle": "Photo grid layout settings", "asset_list_settings_subtitle": "Configuraciones del diseño de la cuadrícula de fotos",
"asset_list_settings_title": "Photo Grid", "asset_list_settings_title": "Cuadrícula de fotos",
"backup_album_selection_page_albums_device": "Álbumes en el dispositivo ({})", "backup_album_selection_page_albums_device": "Álbumes en el dispositivo ({})",
"backup_album_selection_page_albums_tap": "Toque para incluir, doble toque para excluir", "backup_album_selection_page_albums_tap": "Toque para incluir, doble toque para excluir",
"backup_album_selection_page_assets_scatter": "Los activos pueden dispersarse en varios álbumes. De este modo, los álbumes pueden ser incluidos o excluidos durante el proceso de copia de seguridad.", "backup_album_selection_page_assets_scatter": "Los archivos pueden dispersarse en varios álbumes. De este modo, los álbumes pueden ser incluidos o excluidos durante el proceso de copia de seguridad.",
"backup_album_selection_page_select_albums": "Seleccionar Álbumes", "backup_album_selection_page_select_albums": "Seleccionar Álbumes",
"backup_album_selection_page_selection_info": "Información sobre la Selección", "backup_album_selection_page_selection_info": "Información sobre la Selección",
"backup_album_selection_page_total_assets": "Total de activos únicos", "backup_album_selection_page_total_assets": "Total de archivos únicos",
"backup_all": "Todos", "backup_all": "Todos",
"backup_background_service_backup_failed_message": "Failed to backup assets. Retrying…", "backup_background_service_backup_failed_message": "Error al copiar archivos. Reintentando...",
"backup_background_service_connection_failed_message": "Failed to connect to the server. Retrying…", "backup_background_service_connection_failed_message": "Error al conectar con el servidor. Reintentando...",
"backup_background_service_current_upload_notification": "Uploading {}", "backup_background_service_current_upload_notification": "Cargando {}",
"backup_background_service_default_notification": "Checking for new assets…", "backup_background_service_default_notification": "Verificando si hay nuevos archivos",
"backup_background_service_error_title": "Backup error", "backup_background_service_error_title": "Error de copia de seguridad",
"backup_background_service_in_progress_notification": "Backing up your assets…", "backup_background_service_in_progress_notification": "Creando copia de seguridad de tus archivos...",
"backup_background_service_upload_failure_notification": "Failed to upload {}", "backup_background_service_upload_failure_notification": "Error al cargar {}",
"backup_controller_page_albums": "Álbumes de copia de seguridad", "backup_controller_page_albums": "Álbumes de copia de seguridad",
"backup_controller_page_background_app_refresh_disabled_content": "Enable background app refresh in Settings > General > Background App Refresh in order to use background backup.", "backup_controller_page_background_app_refresh_disabled_content": "Activa la actualización en segundo plano de la aplicación en Configuración > General > Actualización en segundo plano para usar la copia de seguridad en segundo plano.",
"backup_controller_page_background_app_refresh_disabled_title": "Background app refresh disabled", "backup_controller_page_background_app_refresh_disabled_title": "Actualización en segundo plano desactivada",
"backup_controller_page_background_app_refresh_enable_button_text": "Go to settings", "backup_controller_page_background_app_refresh_enable_button_text": "Ir a configuración",
"backup_controller_page_background_battery_info_link": "Show me how", "backup_controller_page_background_battery_info_link": "Muestrame cómo",
"backup_controller_page_background_battery_info_message": "For the best background backup experience, please disable any battery optimizations restricting background activity for Immich.\n\nSince this is device-specific, please lookup the required information for your device manufacturer.", "backup_controller_page_background_battery_info_message": "Para obtener la mejor experiencia de copia de seguridad en segundo plano, desactiva cualquier optimización de batería que restrinja la actividad en segundo plano para Immich.\n\nDado que esto es específico en cada dispositivo, busca la información necesaria de el fabricante de tu dispositivo.",
"backup_controller_page_background_battery_info_ok": "OK", "backup_controller_page_background_battery_info_ok": "Ok",
"backup_controller_page_background_battery_info_title": "Battery optimizations", "backup_controller_page_background_battery_info_title": "Optimizaciones de batería",
"backup_controller_page_background_charging": "Only while charging", "backup_controller_page_background_charging": "Solo mientras se carga",
"backup_controller_page_background_configure_error": "Failed to configure the background service", "backup_controller_page_background_configure_error": "Error al configurar el servicio en segundo plano",
"backup_controller_page_background_delay": "Delay new assets backup: {}", "backup_controller_page_background_delay": "Retraso en la copia de seguridad de nuevos activos: {}",
"backup_controller_page_background_description": "Turn on the background service to automatically backup any new assets without needing to open the app", "backup_controller_page_background_description": "Activa el servicio en segundo plano para copiar automáticamente cualquier nuevos archivos sin necesidad de abrir la aplicación.",
"backup_controller_page_background_is_off": "Automatic background backup is off", "backup_controller_page_background_is_off": "La copia de seguridad en segundo plano automática está desactivada",
"backup_controller_page_background_is_on": "Automatic background backup is on", "backup_controller_page_background_is_on": "La copia de seguridad en segundo plano automática está activada",
"backup_controller_page_background_turn_off": "Turn off background service", "backup_controller_page_background_turn_off": "Desactivar el servicio en segundo plano",
"backup_controller_page_background_turn_on": "Turn on background service", "backup_controller_page_background_turn_on": "Activar el servicio en segundo plano",
"backup_controller_page_background_wifi": "Only on WiFi", "backup_controller_page_background_wifi": "Solo en WiFi",
"backup_controller_page_backup": "Copia de Seguridad", "backup_controller_page_backup": "Copia de Seguridad",
"backup_controller_page_backup_selected": "Seleccionado:", "backup_controller_page_backup_selected": "Seleccionado:",
"backup_controller_page_backup_sub": "Copia de seguridad de fotos y vídeos", "backup_controller_page_backup_sub": "Fotos y videos respaldados",
"backup_controller_page_cancel": "Cancelar", "backup_controller_page_cancel": "Cancelar",
"backup_controller_page_created": "Created on: {}", "backup_controller_page_created": "Creado el: {}",
"backup_controller_page_desc_backup": "Active la copia de seguridad para cargar automáticamente los nuevos activos al servidor.", "backup_controller_page_desc_backup": "Active la copia de seguridad para cargar automáticamente los nuevos activos al servidor.",
"backup_controller_page_excluded": "Excluido:", "backup_controller_page_excluded": "Excluido:",
"backup_controller_page_failed": "Failed ({})", "backup_controller_page_failed": "Fallidos ({})",
"backup_controller_page_filename": "File name: {} [{}]", "backup_controller_page_filename": "Nombre del archivo: {} [{}]",
"backup_controller_page_id": "ID: {}", "backup_controller_page_id": "ID: {}",
"backup_controller_page_info": "Información de la Copia de Seguridad", "backup_controller_page_info": "Información de la Copia de Seguridad",
"backup_controller_page_none_selected": "Ninguno seleccionado", "backup_controller_page_none_selected": "Ninguno seleccionado",
"backup_controller_page_remainder": "Remanente", "backup_controller_page_remainder": "Restante",
"backup_controller_page_remainder_sub": "Fotos y álbumes restantes para hacer una copia de seguridad de la selección", "backup_controller_page_remainder_sub": "Fotos y videos restantes para hacer una copia de seguridad de la selección",
"backup_controller_page_select": "Seleccionar", "backup_controller_page_select": "Seleccionar",
"backup_controller_page_server_storage": "Almacenamiento en el servidor", "backup_controller_page_server_storage": "Almacenamiento en el servidor",
"backup_controller_page_start_backup": "Iniciar copia de seguridad", "backup_controller_page_start_backup": "Iniciar copia de seguridad",
@@ -89,48 +89,53 @@
"backup_controller_page_total_sub": "Todas las fotos y vídeos únicos de los álbumes seleccionados", "backup_controller_page_total_sub": "Todas las fotos y vídeos únicos de los álbumes seleccionados",
"backup_controller_page_turn_off": "Apagar la copia de seguridad", "backup_controller_page_turn_off": "Apagar la copia de seguridad",
"backup_controller_page_turn_on": "Activar la copia de seguridad", "backup_controller_page_turn_on": "Activar la copia de seguridad",
"backup_controller_page_uploading_file_info": "Uploading file info", "backup_controller_page_uploading_file_info": "Cargando información del archivo",
"backup_err_only_album": "No se puede eliminar el único álbum", "backup_err_only_album": "No se puede eliminar el único álbum",
"backup_info_card_assets": "activos", "backup_info_card_assets": "archivos",
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)", "backup_manual_cancelled": "Cancelled",
"cache_settings_clear_cache_button": "Clear cache", "backup_manual_failed": "Failed",
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.", "backup_manual_in_progress": "Upload already in progress. Try after sometime",
"cache_settings_image_cache_size": "Image cache size ({} assets)", "backup_manual_success": "Success",
"cache_settings_statistics_album": "Library thumbnails", "backup_manual_title": "Upload status",
"cache_settings_statistics_assets": "{} assets ({})", "cache_settings_album_thumbnails": "Miniaturas de la página de la biblioteca ({} archivos)",
"cache_settings_statistics_full": "Full images", "cache_settings_clear_cache_button": "Borrar caché",
"cache_settings_statistics_shared": "Shared album thumbnails", "cache_settings_clear_cache_button_title": "Borra la caché de la aplicación. Esto afectará significativamente el rendimiento de la aplicación hasta que se reconstruya la caché.",
"cache_settings_statistics_thumbnail": "Thumbnails", "cache_settings_image_cache_size": "Tamaño de la caché de imágenes ({} archivos)",
"cache_settings_statistics_title": "Cache usage", "cache_settings_statistics_album": "Miniaturas de la biblioteca",
"cache_settings_subtitle": "Control the caching behaviour of the Immich mobile application", "cache_settings_statistics_assets": "{} archivos ({})",
"cache_settings_thumbnail_size": "Thumbnail cache size ({} assets)", "cache_settings_statistics_full": "Imágenes completas",
"cache_settings_title": "Caching Settings", "cache_settings_statistics_shared": "Miniaturas de álbumes compartidos",
"change_password_form_confirm_password": "Confirm Password", "cache_settings_statistics_thumbnail": "Miniaturas",
"change_password_form_description": "Hi {firstName} {lastName},\n\nThis is either the first time you are signing into the system or a request has been made to change your password. Please enter the new password below.", "cache_settings_statistics_title": "Uso de caché",
"change_password_form_new_password": "New Password", "cache_settings_subtitle": "Controla el comportamiento del almacenamiento en caché de la aplicación móvil Immich",
"change_password_form_password_mismatch": "Passwords do not match", "cache_settings_thumbnail_size": "Tamaño de la caché de miniaturas ({} archivos)",
"change_password_form_reenter_new_password": "Re-enter New Password", "cache_settings_title": "Configuración de la caché",
"common_add_to_album": "Add to album", "change_password_form_confirm_password": "Confirmar Contraseña",
"common_change_password": "Change Password", "change_password_form_description": "Hola {firstName} {lastName},\n\nEsta es la primera vez que inicias sesión en el sistema o se ha solicitado cambiar tu contraseña. Por favor, introduce la nueva contraseña a continuación.",
"common_create_new_album": "Create new album", "change_password_form_new_password": "Nueva Contraseña",
"common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.", "change_password_form_password_mismatch": "Las contraseñas no coinciden",
"common_shared": "Shared", "change_password_form_reenter_new_password": "Vuelve a ingresar la nueva contraseña",
"control_bottom_app_bar_add_to_album": "Añadir al álbum", "common_add_to_album": "Agregar al álbum",
"common_change_password": "Cambiar Contraseña",
"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_shared": "Compartido",
"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 · Compartidos",
"control_bottom_app_bar_archive": "Archive", "control_bottom_app_bar_archive": "Archivar",
"control_bottom_app_bar_create_new_album": "Crear nuevo álbum", "control_bottom_app_bar_create_new_album": "Crear nuevo álbum",
"control_bottom_app_bar_delete": "Eliminar", "control_bottom_app_bar_delete": "Eliminar",
"control_bottom_app_bar_favorite": "Favorite", "control_bottom_app_bar_favorite": "Favorito",
"control_bottom_app_bar_share": "Share", "control_bottom_app_bar_share": "Compartir",
"control_bottom_app_bar_unarchive": "Unarchive", "control_bottom_app_bar_unarchive": "Desarchivar",
"create_album_page_untitled": "Untitled", "create_album_page_untitled": "Sin título",
"create_shared_album_page_create": "Create", "create_shared_album_page_create": "Crear",
"create_shared_album_page_share": "Compartir", "create_shared_album_page_share": "Compartir",
"create_shared_album_page_share_add_assets": "AÑADIR ACTIVOS", "create_shared_album_page_share_add_assets": "AGREGAR ARCHIVOS",
"create_shared_album_page_share_select_photos": "Seleccionar Fotos", "create_shared_album_page_share_select_photos": "Seleccionar Fotos",
"curated_location_page_title": "Places", "curated_location_page_title": "Lugares",
"curated_object_page_title": "Things", "curated_object_page_title": "Objetos",
"daily_title_text_date": "E dd, MMM", "daily_title_text_date": "E dd, MMM",
"daily_title_text_date_year": "E dd de MMM, yyyy", "daily_title_text_date_year": "E dd de MMM, yyyy",
"date_format": "E d, LLL y • h:mm a", "date_format": "E d, LLL y • h:mm a",
@@ -138,35 +143,37 @@
"delete_dialog_cancel": "Cancelar", "delete_dialog_cancel": "Cancelar",
"delete_dialog_ok": "Eliminar", "delete_dialog_ok": "Eliminar",
"delete_dialog_title": "Eliminar Permanentemente", "delete_dialog_title": "Eliminar Permanentemente",
"description_input_hint_text": "Add description...", "description_input_hint_text": "Agregar descripción...",
"description_input_submit_error": "Error updating description, check the log for more details", "description_input_submit_error": "Error al actualizar la descripción, verifica el registro para obtener más detalles",
"exif_bottom_sheet_description": "Añadir Descripción...", "exif_bottom_sheet_description": "Agregar Descripción...",
"exif_bottom_sheet_details": "DETALLES", "exif_bottom_sheet_details": "DETALLES",
"exif_bottom_sheet_location": "LOCALZACIÓN", "exif_bottom_sheet_location": "UBICACIÓN",
"experimental_settings_new_asset_list_subtitle": "Work in progress", "experimental_settings_new_asset_list_subtitle": "Trabajo en progreso",
"experimental_settings_new_asset_list_title": "Enable experimental photo grid", "experimental_settings_new_asset_list_title": "Habilitar cuadrícula fotográfica experimental",
"experimental_settings_subtitle": "Use at your own risk!", "experimental_settings_subtitle": "Úsalo bajo tu responsabilidad",
"experimental_settings_title": "Experimental", "experimental_settings_title": "Experimental",
"favorites_page_no_favorites": "No favorite assets found", "favorites_page_no_favorites": "No se encontraron recursos marcados como favoritos",
"favorites_page_title": "Favoritos", "favorites_page_title": "Favoritos",
"home_page_add_to_album_conflicts": "Añadidos {added} elementos al álbum {album}. {failed} elementos ya están añadidos.", "home_page_add_to_album_conflicts": "{added} elementos agregados al álbum {album}.{failed} elementos ya existen en el álbum.",
"home_page_add_to_album_err_local": "Can not add local assets to albums yet, skipping", "home_page_add_to_album_err_local": "n no se pueden agregar recursos locales a álbumes, omitiendo",
"home_page_add_to_album_success": "Añadidos {added} elementos al álbum {album}.", "home_page_add_to_album_success": "{added} elementos agregados al álbum {album}. ",
"home_page_archive_err_local": "Can not archive local assets yet, skipping", "home_page_archive_err_local": "Los recursos locales no pueden ser archivados, omitiendo",
"home_page_building_timeline": "Construyendo la línea de tiempo", "home_page_building_timeline": "Construyendo la línea de tiempo",
"home_page_favorite_err_local": "Can not favorite local assets yet, skipping", "home_page_favorite_err_local": "n no se pueden archivar recursos locales, omitiendo",
"home_page_first_time_notice": "Si esta es la primera vez que usas la app, por favor, asegúrate de elegir un álbum de respaldo para que la línea de tiempo pueda cargar fotos y videos en los álbumes.", "home_page_first_time_notice": "Si esta es la primera vez que usas la app, por favor, asegúrate de elegir un álbum de respaldo para que la línea de tiempo pueda cargar fotos y videos en los álbumes.",
"image_viewer_page_state_provider_download_error": "Download Error", "home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_error": "Error de descarga",
"library_page_albums": "Albums", "image_viewer_page_state_provider_download_success": "Descarga exitosa",
"library_page_archive": "Archive", "library_page_albums": "Álbumes",
"library_page_device_albums": "Albums on Device", "library_page_archive": "Archivo",
"library_page_device_albums": "Álbumes en el dispositivo",
"library_page_favorites": "Favoritos", "library_page_favorites": "Favoritos",
"library_page_new_album": "New album", "library_page_new_album": "Nuevo álbum",
"library_page_sharing": "Compartiendo", "library_page_sharing": "Compartiendo",
"library_page_sort_created": "Creado más recientemente", "library_page_sort_created": "Creado más recientemente",
"library_page_sort_title": "Título del álbum", "library_page_sort_title": "Título del álbum",
"login_form_api_exception": "API exception. Please check the server URL and try again.", "login_disabled": "Login has been disabled",
"login_form_api_exception": "Excepción producida por API. Por favor, verifica el URL del servidor e inténtalo de nuevo.",
"login_form_button_text": "Iniciar Sesión", "login_form_button_text": "Iniciar Sesión",
"login_form_email_hint": "tucorreo@correo.com", "login_form_email_hint": "tucorreo@correo.com",
"login_form_endpoint_hint": "http://tu-ip-de-servidor:puerto/api", "login_form_endpoint_hint": "http://tu-ip-de-servidor:puerto/api",
@@ -176,118 +183,122 @@
"login_form_err_invalid_url": "URL no válida", "login_form_err_invalid_url": "URL no válida",
"login_form_err_leading_whitespace": "Espacio en blanco inicial", "login_form_err_leading_whitespace": "Espacio en blanco inicial",
"login_form_err_trailing_whitespace": "Espacio en blanco al final", "login_form_err_trailing_whitespace": "Espacio en blanco al final",
"login_form_failed_get_oauth_server_config": "Error logging using OAuth, check server URL", "login_form_failed_get_oauth_server_config": "Error al iniciar sesión con OAuth, verifica la URL del servidor",
"login_form_failed_get_oauth_server_disable": "OAuth feature is not available on this server", "login_form_failed_get_oauth_server_disable": "La función de OAuth no está disponible en este servidor",
"login_form_failed_login": "Error logging you in, check server URL, email and password", "login_form_failed_login": "Error al iniciar sesión, comprueba la URL del servidor, el correo electrónico y la contraseña",
"login_form_label_email": "Correo", "login_form_label_email": "Correo",
"login_form_label_password": "Contraseña", "login_form_label_password": "Contraseña",
"login_form_next_button": "Next", "login_form_next_button": "Siguiente",
"login_form_password_hint": "contraseña", "login_form_password_hint": "contraseña",
"login_form_save_login": "Mantener la sesión iniciada", "login_form_save_login": "Mantener la sesión iniciada",
"login_form_server_empty": "Enter a server URL.", "login_form_server_empty": "Agrega la URL del servidor.",
"login_form_server_error": "Could not connect to server.", "login_form_server_error": "No se pudo conectar al servidor.",
"monthly_title_text_date_format": "MMMM y", "monthly_title_text_date_format": "MMMM y",
"motion_photos_page_title": "Motion Photos", "motion_photos_page_title": "Foto en Movimiento",
"notification_permission_dialog_cancel": "Cancel", "notification_permission_dialog_cancel": "Cancelar",
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.", "notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.",
"notification_permission_dialog_settings": "Settings", "notification_permission_dialog_settings": "Ajustes",
"notification_permission_list_tile_content": "Grant permission to enable notifications.", "notification_permission_list_tile_content": "Concede permiso para habilitar las notificaciones.",
"notification_permission_list_tile_enable_button": "Enable Notifications", "notification_permission_list_tile_enable_button": "Permitir notificaciones",
"notification_permission_list_tile_title": "Notification Permission", "notification_permission_list_tile_title": "Permisos de Notificacion",
"partner_page_add_partner": "Add partner", "partner_page_add_partner": "Agregar compañero",
"partner_page_empty_message": "Your photos are not yet shared with any partner.", "partner_page_empty_message": "Tus fotos aún no se han compartido con ningún compañero.",
"partner_page_no_more_users": "No more users to add", "partner_page_no_more_users": "No hay más usuarios para agregar",
"partner_page_partner_add_failed": "Failed to add partner", "partner_page_partner_add_failed": "Compañero no pudo ser agregado ",
"partner_page_select_partner": "Select partner", "partner_page_select_partner": "Seleccionar compañero",
"partner_page_shared_to_title": "Shared to", "partner_page_shared_to_title": "Compartido con",
"partner_page_stop_sharing_content": "{} will no longer be able to access your photos.", "partner_page_stop_sharing_content": "{} ya no podrá acceder a tus fotos",
"partner_page_stop_sharing_title": "Stop sharing your photos?", "partner_page_stop_sharing_title": "¿Dejar de compartir tus fotos?",
"partner_page_title": "Partner", "partner_page_title": "Compañero",
"permission_onboarding_continue_anyway": "Continue anyway", "permission_onboarding_continue_anyway": "Continuar de todos modos",
"permission_onboarding_get_started": "Get started", "permission_onboarding_get_started": "Empezar",
"permission_onboarding_go_to_settings": "Go to settings", "permission_onboarding_go_to_settings": "Ir a configuración",
"permission_onboarding_grant_permission": "Grant permission", "permission_onboarding_grant_permission": "Conceder permiso",
"permission_onboarding_log_out": "Log out", "permission_onboarding_log_out": "Cerrar sesión",
"permission_onboarding_permission_denied": "Permission denied. To use Immich, grant photo and video permissions in Settings.", "permission_onboarding_permission_denied": "Permiso denegado. Para usar Immich, concede permisos de fotos y videos en Configuración.",
"permission_onboarding_permission_granted": "Permission granted! You are all set.", "permission_onboarding_permission_granted": "¡Permiso concedido! Todo listo.",
"permission_onboarding_permission_limited": "Permission limited. To let Immich backup and manage your entire gallery collection, grant photo and video permissions in Settings.", "permission_onboarding_permission_limited": "Permiso limitado. Para permitir que Immich haga copia de seguridad y gestione toda tu colección de galería, concede permisos de fotos y videos en Configuración.",
"permission_onboarding_request": "Immich requires permission to view your photos and videos.", "permission_onboarding_request": "Immich requiere permiso para ver tus fotos y videos.",
"profile_drawer_app_logs": "Logs", "profile_drawer_app_logs": "Registros",
"profile_drawer_client_server_up_to_date": "El Cliente y el Servidor están actualizados", "profile_drawer_client_server_up_to_date": "El Cliente y el Servidor están actualizados",
"profile_drawer_settings": "Settings", "profile_drawer_settings": "Configuración",
"profile_drawer_sign_out": "Cerrar Sesión", "profile_drawer_sign_out": "Cerrar Sesión",
"recently_added_page_title": "Recently Added", "recently_added_page_title": "Recién Agregadas",
"search_bar_hint": "Busca tus fotos", "search_bar_hint": "Busca tus fotos",
"search_page_categories": "Categories", "search_page_categories": "Categorías",
"search_page_favorites": "Favorites", "search_page_favorites": "Favoritos",
"search_page_motion_photos": "Motion Photos", "search_page_motion_photos": "Foto en Movimiento",
"search_page_no_objects": "No Objects Info Available", "search_page_no_objects": "No hay información de objetos disponibles",
"search_page_no_places": "No hay información de lugares disponibles", "search_page_no_places": "No hay información de lugares disponibles",
"search_page_people": "People", "search_page_people": "Personas",
"search_page_places": "Lugares", "search_page_places": "Lugares",
"search_page_recently_added": "Recently added", "search_page_recently_added": "Recién agregadas",
"search_page_screenshots": "Screenshots", "search_page_screenshots": "Capturas de pantalla",
"search_page_selfies": "Selfies", "search_page_selfies": "Selfies",
"search_page_things": "Cosas", "search_page_things": "Cosas",
"search_page_videos": "Videos", "search_page_videos": "Videos",
"search_page_view_all_button": "View all", "search_page_view_all_button": "Ver todo",
"search_page_your_activity": "Your activity", "search_page_your_activity": "Tu actividad",
"search_result_page_new_search_hint": "Nueva Busqueda", "search_result_page_new_search_hint": "Nueva Busqueda",
"search_suggestion_list_smart_search_hint_1": "Smart search is enabled by default, to search for metadata use the syntax ", "search_suggestion_list_smart_search_hint_1": "La búsqueda inteligente está habilitada por defecto, para buscar metadatos utiliza esta sintaxis ",
"search_suggestion_list_smart_search_hint_2": "m:your-search-term", "search_suggestion_list_smart_search_hint_2": "m:tu-término-de-búsqueda",
"select_additional_user_for_sharing_page_suggestions": "Sugerencias", "select_additional_user_for_sharing_page_suggestions": "Sugerencias",
"select_user_for_sharing_page_err_album": "Fallo al crear el álbum", "select_user_for_sharing_page_err_album": "Fallo al crear el álbum",
"select_user_for_sharing_page_share_suggestions": "Suggestions", "select_user_for_sharing_page_share_suggestions": "Sugerencias",
"server_info_box_app_version": "App Version", "server_info_box_app_version": "Versión de la Aplicación",
"server_info_box_server_version": "Server Version", "server_info_box_server_version": "Versión del Servidor",
"setting_image_viewer_help": "The detail viewer loads the small thumbnail first, then loads the medium-size preview (if enabled), finally loads the original (if enabled).", "setting_image_viewer_help": "El visor de detalles carga primero la miniatura pequeña, luego carga la vista previa de tamaño mediano (si está habilitada), finalmente carga la original (si está habilitada).",
"setting_image_viewer_original_subtitle": "Habilitar para cargar la imagen en resolución original (¡muy grande!). Deshabilitar para reducir el consumo de datos (de red y caché).", "setting_image_viewer_original_subtitle": "Activar para cargar la imagen en resolución original (¡muy grande!). Deshabilitar para reducir el consumo de datos (de red y caché).",
"setting_image_viewer_original_title": "Cargar imagen original", "setting_image_viewer_original_title": "Cargar imagen original",
"setting_image_viewer_preview_subtitle": "Habilitar para cargar una imagen de resolución media. Deshabilitar para cargar directamente la imagen original o usar una miniatura.", "setting_image_viewer_preview_subtitle": "Activar para cargar una imagen de resolución media. Deshabilitar para cargar directamente la imagen original o usar una miniatura.",
"setting_image_viewer_preview_title": "Cargar imagen de previsualización", "setting_image_viewer_preview_title": "Cargar imagen de previsualización",
"setting_notifications_notify_failures_grace_period": "Notify background backup failures: {}", "setting_notifications_notify_failures_grace_period": "Notificar fallos de copia de seguridad en segundo plano: {}",
"setting_notifications_notify_hours": "{} hours", "setting_notifications_notify_hours": "{} horas",
"setting_notifications_notify_immediately": "immediately", "setting_notifications_notify_immediately": "inmediatamente",
"setting_notifications_notify_minutes": "{} minutes", "setting_notifications_notify_minutes": "{} minutos",
"setting_notifications_notify_never": "never", "setting_notifications_notify_never": "nunca",
"setting_notifications_notify_seconds": "{} seconds", "setting_notifications_notify_seconds": "{} segundos",
"setting_notifications_single_progress_subtitle": "Detailed upload progress information per asset", "setting_notifications_single_progress_subtitle": "Información detallada del progreso de subida de cada archivo",
"setting_notifications_single_progress_title": "Show background backup detail progress", "setting_notifications_single_progress_title": "Mostrar progreso detallado de copia de seguridad en segundo plano",
"setting_notifications_subtitle": "Adjust your notification preferences", "setting_notifications_subtitle": "Ajusta tus preferencias de notificación",
"setting_notifications_title": "Notifications", "setting_notifications_title": "Notificaciones",
"setting_notifications_total_progress_subtitle": "Overall upload progress (done/total assets)", "setting_notifications_total_progress_subtitle": "Progreso general de subida (archivos completados/total)",
"setting_notifications_total_progress_title": "Show background backup total progress", "setting_notifications_total_progress_title": "Mostrar progreso total de copia de seguridad en segundo plano",
"setting_pages_app_bar_settings": "Settings", "setting_pages_app_bar_settings": "Ajustes",
"settings_require_restart": "Please restart Immich to apply this setting", "settings_require_restart": "Por favor, reinicia Immich para aplicar este ajuste",
"share_add": "Añadir", "share_add": "Agregar",
"share_add_photos": "Añadir fotos", "share_add_photos": "Agregar fotos",
"share_add_title": "Añadir un título", "share_add_title": "Agregar un título",
"share_create_album": "Crear álbum", "share_create_album": "Crear álbum",
"share_dialog_preparing": "Preparing...", "share_dialog_preparing": "Preparando...",
"share_invite": "Invitar al álbum", "share_invite": "Invitar al álbum",
"sharing_page_album": "Álbumes compartidos", "sharing_page_album": "Álbumes compartidos",
"sharing_page_description": "Crea álbumes compartidos para compartir fotos y vídeos con las personas de tu red.", "sharing_page_description": "Crea álbumes compartidos para compartir fotos y vídeos con las personas de tu red.",
"sharing_page_empty_list": "LISTA VACIA", "sharing_page_empty_list": "LISTA VACIA",
"sharing_silver_appbar_create_shared_album": "Crear un álbum compartido", "sharing_silver_appbar_create_shared_album": "Crear un álbum compartido",
"sharing_silver_appbar_share_partner": "Compartir con el compañero", "sharing_silver_appbar_share_partner": "Compartir con el compañero",
"tab_controller_nav_library": "Library", "tab_controller_nav_library": "Biblioteca",
"tab_controller_nav_photos": "Fotos", "tab_controller_nav_photos": "Fotos",
"tab_controller_nav_search": "Buscar", "tab_controller_nav_search": "Buscar",
"tab_controller_nav_sharing": "Compartiendo", "tab_controller_nav_sharing": "Compartiendo",
"theme_setting_asset_list_storage_indicator_title": "Show storage indicator on asset tiles", "theme_setting_asset_list_storage_indicator_title": "Mostrar indicador de almacenamiento en las miniaturas de los archivos",
"theme_setting_asset_list_tiles_per_row_title": "Number of assets per row ({})", "theme_setting_asset_list_tiles_per_row_title": "Número de activos por fila ({})",
"theme_setting_dark_mode_switch": "Dark mode", "theme_setting_dark_mode_switch": "Modo oscuro",
"theme_setting_image_viewer_quality_subtitle": "Adjust the quality of the detail image viewer", "theme_setting_image_viewer_quality_subtitle": "Ajustar la calidad del visor de detalles de imágenes",
"theme_setting_image_viewer_quality_title": "Image viewer quality", "theme_setting_image_viewer_quality_title": "Calidad del visor de imágenes",
"theme_setting_system_theme_switch": "Automatic (Follow system setting)", "theme_setting_system_theme_switch": "Automático (seguir ajuste del sistema)",
"theme_setting_theme_subtitle": "Choose the app's theme setting", "theme_setting_theme_subtitle": "Elige la configuración del tema de la aplicación",
"theme_setting_theme_title": "Theme", "theme_setting_theme_title": "Tema",
"theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load", "theme_setting_three_stage_loading_subtitle": "La carga en tres etapas puede aumentar el rendimiento de carga pero provoca un consumo de red significativamente mayor",
"theme_setting_three_stage_loading_title": "Enable three-stage loading", "theme_setting_three_stage_loading_title": "Activar carga en tres etapas",
"version_announcement_overlay_ack": "Reconocer", "upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Aceptar",
"version_announcement_overlay_release_notes": "notas de versión", "version_announcement_overlay_release_notes": "notas de versión",
"version_announcement_overlay_text_1": "Hola amigo, hay una nueva versión de", "version_announcement_overlay_text_1": "Hola amigo, hay una nueva versión de",
"version_announcement_overlay_text_2": "tómese su tiempo para visitar la ", "version_announcement_overlay_text_2": "por favor, tómate tu tiempo para visitar las ",
"version_announcement_overlay_text_3": "y asegurate de que tu configuración de docker-compose y .env está actualizada para evitar cualquier desconfiguración, especialmente si utiliza WatchTower o cualquier mecanismo que se encargue de actualizar su aplicación de servidor automáticamente.", "version_announcement_overlay_text_3": " y asegúrate de que la configuración de docker-compose y .env estén actualizadas para evitar cualquier error de configuración, especialmente si utilizas WatchTower o cualquier mecanismo que actualice automáticamente la aplicación del servidor.",
"version_announcement_overlay_title": "Nueva versión del servidor disponible \uD83C\uDF89" "version_announcement_overlay_title": "Nueva versión del servidor disponible \uD83C\uDF89"
} }

View File

@@ -1,69 +1,69 @@
{ {
"add_to_album_bottom_sheet_added": "Added to {album}", "add_to_album_bottom_sheet_added": "Agregado a {album}",
"add_to_album_bottom_sheet_already_exists": "Already in {album}", "add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}",
"advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.", "advanced_settings_prefer_remote_subtitle": "Algunos dispositivos tardan mucho en cargar las miniaturas de recursos encontrados el dispositivo. Activa esta opción para cargar imágenes remotas en su lugar.",
"advanced_settings_prefer_remote_title": "Prefer remote images", "advanced_settings_prefer_remote_title": "Preferir imágenes remotas",
"advanced_settings_tile_subtitle": "Advanced user's settings", "advanced_settings_tile_subtitle": "Configuraciones avanzadas del usuario",
"advanced_settings_tile_title": "Advanced", "advanced_settings_tile_title": "Avanzado",
"advanced_settings_troubleshooting_subtitle": "Enable additional features for troubleshooting", "advanced_settings_troubleshooting_subtitle": "Habilitar funciones adicionales para solución de problemas",
"advanced_settings_troubleshooting_title": "Troubleshooting", "advanced_settings_troubleshooting_title": "Solución de problemas",
"album_info_card_backup_album_excluded": "EXCLUIDOS", "album_info_card_backup_album_excluded": "EXCLUIDOS",
"album_info_card_backup_album_included": "INCLUIDOS", "album_info_card_backup_album_included": "INCLUIDOS",
"album_thumbnail_card_item": "1 elemento", "album_thumbnail_card_item": "1 elemento",
"album_thumbnail_card_items": "{} elementos", "album_thumbnail_card_items": "{} elementos",
"album_thumbnail_card_shared": " · Compartido", "album_thumbnail_card_shared": " · Compartido",
"album_thumbnail_owned": "Owned", "album_thumbnail_owned": "Propio",
"album_thumbnail_shared_by": "Shared by {}", "album_thumbnail_shared_by": "Compartido por {}",
"album_viewer_appbar_share_delete": "Eliminar álbum", "album_viewer_appbar_share_delete": "Eliminar álbum",
"album_viewer_appbar_share_err_delete": "No se ha podido eliminar el álbum", "album_viewer_appbar_share_err_delete": "No se ha podido eliminar el álbum",
"album_viewer_appbar_share_err_leave": "No se ha podido abandonar el álbum", "album_viewer_appbar_share_err_leave": "No se ha podido abandonar el álbum",
"album_viewer_appbar_share_err_remove": "Hay problemas para eliminar recursos del álbum", "album_viewer_appbar_share_err_remove": "Hay problemas para eliminar los archivos del álbum",
"album_viewer_appbar_share_err_title": "Error al cambiar el título del álbum", "album_viewer_appbar_share_err_title": "Error al cambiar el título del álbum",
"album_viewer_appbar_share_leave": "Abandonar álbum ", "album_viewer_appbar_share_leave": "Abandonar álbum ",
"album_viewer_appbar_share_remove": "Eliminar del álbum", "album_viewer_appbar_share_remove": "Eliminar del álbum",
"album_viewer_page_share_add_users": "Añadir usuarios", "album_viewer_page_share_add_users": "Agregar usuarios",
"all_people_page_title": "People", "all_people_page_title": "Personas",
"all_videos_page_title": "Videos", "all_videos_page_title": "Videos",
"archive_page_no_archived_assets": "No archived assets found", "archive_page_no_archived_assets": "No se encontraron recursos archivados",
"archive_page_title": "Archive ({})", "archive_page_title": "Archivo ({})",
"asset_list_layout_settings_dynamic_layout_title": "Dynamic layout", "asset_list_layout_settings_dynamic_layout_title": "Diseño dinámico",
"asset_list_layout_settings_group_automatically": "Automatic", "asset_list_layout_settings_group_automatically": "Automatico",
"asset_list_layout_settings_group_by": "Group assets by", "asset_list_layout_settings_group_by": "Agrupar recursos por",
"asset_list_layout_settings_group_by_month": "Month", "asset_list_layout_settings_group_by_month": "Mes",
"asset_list_layout_settings_group_by_month_day": "Month + day", "asset_list_layout_settings_group_by_month_day": "Mes + día",
"asset_list_settings_subtitle": "Photo grid layout settings", "asset_list_settings_subtitle": "Configuraciones del diseño de la cuadrícula de fotos",
"asset_list_settings_title": "Photo Grid", "asset_list_settings_title": "Cuadrícula de fotos",
"backup_album_selection_page_albums_device": "Álbumes en el dispositivo ({})", "backup_album_selection_page_albums_device": "Álbumes en el dispositivo ({})",
"backup_album_selection_page_albums_tap": "Pulsar para incluir, pulsar dos veces para excluir", "backup_album_selection_page_albums_tap": "Pulsar para incluir, pulsar dos veces para excluir",
"backup_album_selection_page_assets_scatter": "Los recursos pueden dispersarse entre varios álbumes. Por lo tanto, los álbumes pueden incluirse o excluirse durante el proceso de respaldo.", "backup_album_selection_page_assets_scatter": "Los archivos pueden dispersarse en varios álbumes. De este modo, los álbumes pueden ser incluidos o excluidos durante el proceso de copia de seguridad.",
"backup_album_selection_page_select_albums": "Seleccionar álbumes", "backup_album_selection_page_select_albums": "Seleccionar álbumes",
"backup_album_selection_page_selection_info": "Información de la selección", "backup_album_selection_page_selection_info": "Información de la selección",
"backup_album_selection_page_total_assets": "Total de recursos únicos", "backup_album_selection_page_total_assets": "Total de archivos únicos",
"backup_all": "Todos", "backup_all": "Todos",
"backup_background_service_backup_failed_message": "Failed to backup assets. Retrying…", "backup_background_service_backup_failed_message": "Error al copiar archivos. Reintentando...",
"backup_background_service_connection_failed_message": "Failed to connect to the server. Retrying…", "backup_background_service_connection_failed_message": "Error al conectar con el servidor. Reintentando...",
"backup_background_service_current_upload_notification": "Cargando {}", "backup_background_service_current_upload_notification": "Cargando {}",
"backup_background_service_default_notification": "Comprobando por nuevos recursos...", "backup_background_service_default_notification": "Verificando si hay nuevos archivos",
"backup_background_service_error_title": "Error al respaldar", "backup_background_service_error_title": "Error de copia de seguridad",
"backup_background_service_in_progress_notification": "Respaldando tus recursos...", "backup_background_service_in_progress_notification": "Creando copia de seguridad de tus archivos...",
"backup_background_service_upload_failure_notification": "Error al cargar {}", "backup_background_service_upload_failure_notification": "Error al cargar {}",
"backup_controller_page_albums": "Álbumes de respaldo", "backup_controller_page_albums": "Álbumes de respaldo",
"backup_controller_page_background_app_refresh_disabled_content": "Enable background app refresh in Settings > General > Background App Refresh in order to use background backup.", "backup_controller_page_background_app_refresh_disabled_content": "Activa la actualización en segundo plano de la aplicación en Configuración > General > Actualización en segundo plano para usar la copia de seguridad en segundo plano.",
"backup_controller_page_background_app_refresh_disabled_title": "Background app refresh disabled", "backup_controller_page_background_app_refresh_disabled_title": "Actualización en segundo plano desactivada",
"backup_controller_page_background_app_refresh_enable_button_text": "Go to settings", "backup_controller_page_background_app_refresh_enable_button_text": "Ir a configuración",
"backup_controller_page_background_battery_info_link": "Show me how", "backup_controller_page_background_battery_info_link": "Muestrame cómo",
"backup_controller_page_background_battery_info_message": "For the best background backup experience, please disable any battery optimizations restricting background activity for Immich.\n\nSince this is device-specific, please lookup the required information for your device manufacturer.", "backup_controller_page_background_battery_info_message": "Para obtener la mejor experiencia de copia de seguridad en segundo plano, desactiva cualquier optimización de batería que restrinja la actividad en segundo plano para Immich.\n\nDado que esto es específico en cada dispositivo, busca la información necesaria de el fabricante de tu dispositivo.",
"backup_controller_page_background_battery_info_ok": "OK", "backup_controller_page_background_battery_info_ok": "Ok",
"backup_controller_page_background_battery_info_title": "Battery optimizations", "backup_controller_page_background_battery_info_title": "Optimizaciones de batería",
"backup_controller_page_background_charging": "Only while charging", "backup_controller_page_background_charging": "Solo mientras se carga",
"backup_controller_page_background_configure_error": "Failed to configure the background service", "backup_controller_page_background_configure_error": "Error al configurar el servicio en segundo plano",
"backup_controller_page_background_delay": "Delay new assets backup: {}", "backup_controller_page_background_delay": "Retraso en la copia de seguridad de nuevos activos: {}",
"backup_controller_page_background_description": "Turn on the background service to automatically backup any new assets without needing to open the app", "backup_controller_page_background_description": "Activa el servicio en segundo plano para copiar automáticamente cualquier nuevos archivos sin necesidad de abrir la aplicación.",
"backup_controller_page_background_is_off": "Automatic background backup is off", "backup_controller_page_background_is_off": "La copia de seguridad en segundo plano automática está desactivada",
"backup_controller_page_background_is_on": "Automatic background backup is on", "backup_controller_page_background_is_on": "La copia de seguridad en segundo plano automática está desactivada",
"backup_controller_page_background_turn_off": "Turn off background service", "backup_controller_page_background_turn_off": "Desactivar el servicio en segundo plano",
"backup_controller_page_background_turn_on": "Turn on background service", "backup_controller_page_background_turn_on": "Activar el servicio en segundo plano",
"backup_controller_page_background_wifi": "Only on WiFi", "backup_controller_page_background_wifi": "Solo en WiFi",
"backup_controller_page_backup": "Respaldo", "backup_controller_page_backup": "Respaldo",
"backup_controller_page_backup_selected": "Seleccionado:", "backup_controller_page_backup_selected": "Seleccionado:",
"backup_controller_page_backup_sub": "Fotos y videos respaldados", "backup_controller_page_backup_sub": "Fotos y videos respaldados",
@@ -72,12 +72,12 @@
"backup_controller_page_desc_backup": "Activa la copia de seguridad en primer plano para cargar automáticamente nuevos recursos al servidor al abrir la aplicación.", "backup_controller_page_desc_backup": "Activa la copia de seguridad en primer plano para cargar automáticamente nuevos recursos al servidor al abrir la aplicación.",
"backup_controller_page_excluded": "Excluido:", "backup_controller_page_excluded": "Excluido:",
"backup_controller_page_failed": "Fallidos ({})", "backup_controller_page_failed": "Fallidos ({})",
"backup_controller_page_filename": "Nombre: {} [{}]", "backup_controller_page_filename": "Nombre del archivo: {} [{}]",
"backup_controller_page_id": "ID: {}", "backup_controller_page_id": "ID: {}",
"backup_controller_page_info": "Información del respaldo", "backup_controller_page_info": "Información del respaldo",
"backup_controller_page_none_selected": "Ninguno seleccionado", "backup_controller_page_none_selected": "Ninguno seleccionado",
"backup_controller_page_remainder": "Restante", "backup_controller_page_remainder": "Restante",
"backup_controller_page_remainder_sub": "Fotos y videos restantes de la selección a los que realizar un respaldo", "backup_controller_page_remainder_sub": "Fotos y videos restantes para hacer una copia de seguridad de la selección",
"backup_controller_page_select": "Seleccionar", "backup_controller_page_select": "Seleccionar",
"backup_controller_page_server_storage": "Almacenamiento del servidor", "backup_controller_page_server_storage": "Almacenamiento del servidor",
"backup_controller_page_start_backup": "Iniciar respaldo", "backup_controller_page_start_backup": "Iniciar respaldo",
@@ -89,48 +89,53 @@
"backup_controller_page_total_sub": "Todas las fotos y videos únicos de los álbumes seleccionados", "backup_controller_page_total_sub": "Todas las fotos y videos únicos de los álbumes seleccionados",
"backup_controller_page_turn_off": "Desactivar la copia de seguridad en primer plano", "backup_controller_page_turn_off": "Desactivar la copia de seguridad en primer plano",
"backup_controller_page_turn_on": "Activar la copia de seguridad en primer plano", "backup_controller_page_turn_on": "Activar la copia de seguridad en primer plano",
"backup_controller_page_uploading_file_info": "Info de carga de archivo", "backup_controller_page_uploading_file_info": "Cargando información del archivo",
"backup_err_only_album": "No se puede eliminar el único álbum", "backup_err_only_album": "No se puede eliminar el único álbum",
"backup_info_card_assets": "recursos", "backup_info_card_assets": "archivos",
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)", "backup_manual_cancelled": "Cancelled",
"cache_settings_clear_cache_button": "Clear cache", "backup_manual_failed": "Failed",
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.", "backup_manual_in_progress": "Upload already in progress. Try after sometime",
"cache_settings_image_cache_size": "Image cache size ({} assets)", "backup_manual_success": "Success",
"cache_settings_statistics_album": "Library thumbnails", "backup_manual_title": "Upload status",
"cache_settings_statistics_assets": "{} assets ({})", "cache_settings_album_thumbnails": "Miniaturas de la página de la biblioteca ({} archivos)",
"cache_settings_statistics_full": "Full images", "cache_settings_clear_cache_button": "Borrar caché",
"cache_settings_statistics_shared": "Shared album thumbnails", "cache_settings_clear_cache_button_title": "Borra la caché de la aplicación. Esto afectará significativamente el rendimiento de la aplicación hasta que se reconstruya la caché.",
"cache_settings_statistics_thumbnail": "Thumbnails", "cache_settings_image_cache_size": "Tamaño de la caché de imágenes ({} archivos)",
"cache_settings_statistics_title": "Cache usage", "cache_settings_statistics_album": "Miniaturas de la biblioteca",
"cache_settings_subtitle": "Control the caching behaviour of the Immich mobile application", "cache_settings_statistics_assets": "{} archivos ({})",
"cache_settings_thumbnail_size": "Thumbnail cache size ({} assets)", "cache_settings_statistics_full": "Imágenes completas",
"cache_settings_title": "Caching Settings", "cache_settings_statistics_shared": "Miniaturas de álbumes compartidos",
"change_password_form_confirm_password": "Confirm Password", "cache_settings_statistics_thumbnail": "Miniaturas",
"change_password_form_description": "Hi {firstName} {lastName},\n\nThis is either the first time you are signing into the system or a request has been made to change your password. Please enter the new password below.", "cache_settings_statistics_title": "Uso de caché",
"change_password_form_new_password": "New Password", "cache_settings_subtitle": "Controla el comportamiento del almacenamiento en caché de la aplicación móvil Immich",
"change_password_form_password_mismatch": "Passwords do not match", "cache_settings_thumbnail_size": "Tamaño de la caché de miniaturas ({} archivos)",
"change_password_form_reenter_new_password": "Re-enter New Password", "cache_settings_title": "Configuración de la caché",
"common_add_to_album": "Add to album", "change_password_form_confirm_password": "Confirmar Contraseña",
"common_change_password": "Change Password", "change_password_form_description": "Hola {firstName} {lastName},\n\nEsta es la primera vez que inicias sesión en el sistema o se ha solicitado cambiar tu contraseña. Por favor, introduce la nueva contraseña a continuación.",
"common_create_new_album": "Create new album", "change_password_form_new_password": "Nueva Contraseña",
"common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.", "change_password_form_password_mismatch": "Las contraseñas no coinciden",
"common_shared": "Shared", "change_password_form_reenter_new_password": "Vuelve a ingresar la nueva contraseña",
"control_bottom_app_bar_add_to_album": "Add to album", "common_add_to_album": "Agregar al álbum",
"control_bottom_app_bar_album_info": "{} items", "common_change_password": "Cambiar Contraseña",
"control_bottom_app_bar_album_info_shared": "{} items · Shared", "common_create_new_album": "Crear nuevo álbum",
"control_bottom_app_bar_archive": "Archive", "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.",
"control_bottom_app_bar_create_new_album": "Create new album", "common_shared": "Compartido",
"control_bottom_app_bar_add_to_album": "Agregar al álbum",
"control_bottom_app_bar_album_info": "{} elementos",
"control_bottom_app_bar_album_info_shared": "{} elementos · Compartidos",
"control_bottom_app_bar_archive": "Archivar",
"control_bottom_app_bar_create_new_album": "Crear nuevo álbum",
"control_bottom_app_bar_delete": "Eliminar", "control_bottom_app_bar_delete": "Eliminar",
"control_bottom_app_bar_favorite": "Favorite", "control_bottom_app_bar_favorite": "Favorito",
"control_bottom_app_bar_share": "Compartir", "control_bottom_app_bar_share": "Compartir",
"control_bottom_app_bar_unarchive": "Unarchive", "control_bottom_app_bar_unarchive": "Desarchivar",
"create_album_page_untitled": "Sin título", "create_album_page_untitled": "Sin título",
"create_shared_album_page_create": "Crear", "create_shared_album_page_create": "Crear",
"create_shared_album_page_share": "Compartir", "create_shared_album_page_share": "Compartir",
"create_shared_album_page_share_add_assets": "AÑADIR RECURSOS", "create_shared_album_page_share_add_assets": "AGREGAR ARCHIVOS",
"create_shared_album_page_share_select_photos": "Seleccionar fotos", "create_shared_album_page_share_select_photos": "Seleccionar fotos",
"curated_location_page_title": "Places", "curated_location_page_title": "Lugares",
"curated_object_page_title": "Things", "curated_object_page_title": "Objetos",
"daily_title_text_date": "E, dd MMM", "daily_title_text_date": "E, dd MMM",
"daily_title_text_date_year": "E, dd de MMM de yyyy", "daily_title_text_date_year": "E, dd de MMM de yyyy",
"date_format": "E d, LLL y • h:mm a", "date_format": "E d, LLL y • h:mm a",
@@ -138,130 +143,132 @@
"delete_dialog_cancel": "Cancelar", "delete_dialog_cancel": "Cancelar",
"delete_dialog_ok": "Eliminar", "delete_dialog_ok": "Eliminar",
"delete_dialog_title": "Eliminar permanentemente", "delete_dialog_title": "Eliminar permanentemente",
"description_input_hint_text": "Add description...", "description_input_hint_text": "Agregar descripción...",
"description_input_submit_error": "Error updating description, check the log for more details", "description_input_submit_error": "Error al actualizar la descripción, verifica el registro para obtener más detalles",
"exif_bottom_sheet_description": "Añadir descripción...", "exif_bottom_sheet_description": "Agregar Descripción...",
"exif_bottom_sheet_details": "DETALLES", "exif_bottom_sheet_details": "DETALLES",
"exif_bottom_sheet_location": "UBICACIÓN", "exif_bottom_sheet_location": "UBICACIÓN",
"experimental_settings_new_asset_list_subtitle": "Work in progress", "experimental_settings_new_asset_list_subtitle": "Trabajo en progreso",
"experimental_settings_new_asset_list_title": "Enable experimental photo grid", "experimental_settings_new_asset_list_title": "Habilitar cuadrícula fotográfica experimental",
"experimental_settings_subtitle": "Use at your own risk!", "experimental_settings_subtitle": "Úsalo bajo tu responsabilidad",
"experimental_settings_title": "Experimental", "experimental_settings_title": "Experimental",
"favorites_page_no_favorites": "No favorite assets found", "favorites_page_no_favorites": "No se encontraron recursos marcados como favoritos",
"favorites_page_title": "Favorites", "favorites_page_title": "Favoritos",
"home_page_add_to_album_conflicts": "Added {added} assets to album {album}. {failed} assets are already in the album.", "home_page_add_to_album_conflicts": "{added} elementos agregados al álbum {album}.\n{failed} elementos ya existen en el álbum.",
"home_page_add_to_album_err_local": "Can not add local assets to albums yet, skipping", "home_page_add_to_album_err_local": "n no se pueden agregar recursos locales a álbumes, omitiendo",
"home_page_add_to_album_success": "Added {added} assets to album {album}.", "home_page_add_to_album_success": "{added} elementos agregados al álbum {album}. ",
"home_page_archive_err_local": "Can not archive local assets yet, skipping", "home_page_archive_err_local": "Los recursos locales no pueden ser archivados, omitiendo",
"home_page_building_timeline": "Building the timeline", "home_page_building_timeline": "Construyendo la línea de tiempo",
"home_page_favorite_err_local": "Can not favorite local assets yet, skipping", "home_page_favorite_err_local": "n no se pueden archivar recursos locales, omitiendo",
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).", "home_page_first_time_notice": "Si esta es la primera vez que usas la app, por favor, asegúrate de elegir un álbum de respaldo para que la línea de tiempo pueda cargar fotos y videos en los álbumes.",
"image_viewer_page_state_provider_download_error": "Download Error", "home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_error": "Error de descarga",
"image_viewer_page_state_provider_download_success": "Descarga exitosa",
"library_page_albums": "Álbumes", "library_page_albums": "Álbumes",
"library_page_archive": "Archive", "library_page_archive": "Archivo",
"library_page_device_albums": "Albums on Device", "library_page_device_albums": "Álbumes en el dispositivo",
"library_page_favorites": "Favorites", "library_page_favorites": "Favoritos",
"library_page_new_album": "Nuevo álbum", "library_page_new_album": "Nuevo álbum",
"library_page_sharing": "Sharing", "library_page_sharing": "Compartiendo",
"library_page_sort_created": "Most recently created", "library_page_sort_created": "Creado más recientemente",
"library_page_sort_title": "Album title", "library_page_sort_title": "Título del álbum",
"login_form_api_exception": "API exception. Please check the server URL and try again.", "login_disabled": "Login has been disabled",
"login_form_api_exception": "Excepción producida por API. Por favor, verifica el URL del servidor e inténtalo de nuevo.",
"login_form_button_text": "Iniciar sesión", "login_form_button_text": "Iniciar sesión",
"login_form_email_hint": "tucorreo@correo.com", "login_form_email_hint": "tucorreo@correo.com",
"login_form_endpoint_hint": "http://la-ip-de-tu-servidor:puerto/api", "login_form_endpoint_hint": "http://la-ip-de-tu-servidor:puerto/api",
"login_form_endpoint_url": "URL del servidor", "login_form_endpoint_url": "URL del servidor",
"login_form_err_http": "Por favor, especifique http:// o https://", "login_form_err_http": "Por favor, especifique http:// o https://",
"login_form_err_invalid_email": "Correo electrónico inválido", "login_form_err_invalid_email": "Correo electrónico inválido",
"login_form_err_invalid_url": "Invalid URL", "login_form_err_invalid_url": "URL no válida",
"login_form_err_leading_whitespace": "Espacio en blanco inicial", "login_form_err_leading_whitespace": "Espacio en blanco inicial",
"login_form_err_trailing_whitespace": "Espacio en blanco al final", "login_form_err_trailing_whitespace": "Espacio en blanco al final",
"login_form_failed_get_oauth_server_config": "Error logging using OAuth, check server URL", "login_form_failed_get_oauth_server_config": "Error al iniciar sesión con OAuth, verifica la URL del servidor",
"login_form_failed_get_oauth_server_disable": "OAuth feature is not available on this server", "login_form_failed_get_oauth_server_disable": "La función de OAuth no está disponible en este servidor",
"login_form_failed_login": "Error al iniciar sesión, comprueba la URL del servidor, el correo electrónico y la contraseña", "login_form_failed_login": "Error al iniciar sesión, comprueba la URL del servidor, el correo electrónico y la contraseña",
"login_form_label_email": "Correo electrónico", "login_form_label_email": "Correo electrónico",
"login_form_label_password": "Contraseña", "login_form_label_password": "Contraseña",
"login_form_next_button": "Next", "login_form_next_button": "Siguiente",
"login_form_password_hint": "contraseña", "login_form_password_hint": "contraseña",
"login_form_save_login": "Permanecer conectado", "login_form_save_login": "Permanecer conectado",
"login_form_server_empty": "Enter a server URL.", "login_form_server_empty": "Agrega la URL del servidor.",
"login_form_server_error": "Could not connect to server.", "login_form_server_error": "No se pudo conectar al servidor.",
"monthly_title_text_date_format": "MMMM y", "monthly_title_text_date_format": "MMMM y",
"motion_photos_page_title": "Motion Photos", "motion_photos_page_title": "Foto en Movimiento",
"notification_permission_dialog_cancel": "Cancel", "notification_permission_dialog_cancel": "Cancelar",
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.", "notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.",
"notification_permission_dialog_settings": "Settings", "notification_permission_dialog_settings": "Ajustes",
"notification_permission_list_tile_content": "Grant permission to enable notifications.", "notification_permission_list_tile_content": "Concede permiso para habilitar las notificaciones.",
"notification_permission_list_tile_enable_button": "Enable Notifications", "notification_permission_list_tile_enable_button": "Permitir notificaciones",
"notification_permission_list_tile_title": "Notification Permission", "notification_permission_list_tile_title": "Permisos de Notificacion",
"partner_page_add_partner": "Add partner", "partner_page_add_partner": "Agregar compañero",
"partner_page_empty_message": "Your photos are not yet shared with any partner.", "partner_page_empty_message": "Tus fotos aún no se han compartido con ningún compañero.",
"partner_page_no_more_users": "No more users to add", "partner_page_no_more_users": "No hay más usuarios para agregar",
"partner_page_partner_add_failed": "Failed to add partner", "partner_page_partner_add_failed": "Compañero no pudo ser agregado ",
"partner_page_select_partner": "Select partner", "partner_page_select_partner": "Seleccionar compañero",
"partner_page_shared_to_title": "Shared to", "partner_page_shared_to_title": "Compartido con",
"partner_page_stop_sharing_content": "{} will no longer be able to access your photos.", "partner_page_stop_sharing_content": "{} ya no podrá acceder a tus fotos",
"partner_page_stop_sharing_title": "Stop sharing your photos?", "partner_page_stop_sharing_title": "¿Dejar de compartir tus fotos?",
"partner_page_title": "Partner", "partner_page_title": "Compañero",
"permission_onboarding_continue_anyway": "Continue anyway", "permission_onboarding_continue_anyway": "Continuar de todos modos",
"permission_onboarding_get_started": "Get started", "permission_onboarding_get_started": "Empezar",
"permission_onboarding_go_to_settings": "Go to settings", "permission_onboarding_go_to_settings": "Ir a configuración",
"permission_onboarding_grant_permission": "Grant permission", "permission_onboarding_grant_permission": "Conceder permiso",
"permission_onboarding_log_out": "Log out", "permission_onboarding_log_out": "Cerrar sesión",
"permission_onboarding_permission_denied": "Permission denied. To use Immich, grant photo and video permissions in Settings.", "permission_onboarding_permission_denied": "Permiso denegado. Para usar Immich, concede permisos de fotos y videos en Configuración.",
"permission_onboarding_permission_granted": "Permission granted! You are all set.", "permission_onboarding_permission_granted": "¡Permiso concedido! Todo listo.",
"permission_onboarding_permission_limited": "Permission limited. To let Immich backup and manage your entire gallery collection, grant photo and video permissions in Settings.", "permission_onboarding_permission_limited": "Permiso limitado. Para permitir que Immich haga copia de seguridad y gestione toda tu colección de galería, concede permisos de fotos y videos en Configuración.",
"permission_onboarding_request": "Immich requires permission to view your photos and videos.", "permission_onboarding_request": "Immich requiere permiso para ver tus fotos y videos.",
"profile_drawer_app_logs": "Logs", "profile_drawer_app_logs": "Registros",
"profile_drawer_client_server_up_to_date": "El cliente y el servidor están actualizados", "profile_drawer_client_server_up_to_date": "El cliente y el servidor están actualizados",
"profile_drawer_settings": "Configuración", "profile_drawer_settings": "Configuración",
"profile_drawer_sign_out": "Cerrar sesión", "profile_drawer_sign_out": "Cerrar sesión",
"recently_added_page_title": "Recently Added", "recently_added_page_title": "Recién Agregadas",
"search_bar_hint": "Busca tus fotos", "search_bar_hint": "Busca tus fotos",
"search_page_categories": "Categories", "search_page_categories": "Categorías",
"search_page_favorites": "Favorites", "search_page_favorites": "Favoritos",
"search_page_motion_photos": "Motion Photos", "search_page_motion_photos": "Foto en Movimiento",
"search_page_no_objects": "No hay información de objetos disponible", "search_page_no_objects": "No hay información de objetos disponibles",
"search_page_no_places": "No hay información de lugares disponible", "search_page_no_places": "No hay información de lugares disponible",
"search_page_people": "People", "search_page_people": "Personas",
"search_page_places": "Lugares", "search_page_places": "Lugares",
"search_page_recently_added": "Recently added", "search_page_recently_added": "Recién agregadas",
"search_page_screenshots": "Screenshots", "search_page_screenshots": "Capturas de pantalla",
"search_page_selfies": "Selfies", "search_page_selfies": "Selfies",
"search_page_things": "Cosas", "search_page_things": "Cosas",
"search_page_videos": "Videos", "search_page_videos": "Videos",
"search_page_view_all_button": "View all", "search_page_view_all_button": "Ver todo",
"search_page_your_activity": "Your activity", "search_page_your_activity": "Tu actividad",
"search_result_page_new_search_hint": "Nueva búsqueda", "search_result_page_new_search_hint": "Nueva búsqueda",
"search_suggestion_list_smart_search_hint_1": "Smart search is enabled by default, to search for metadata use the syntax ", "search_suggestion_list_smart_search_hint_1": "La búsqueda inteligente está habilitada por defecto, para buscar metadatos utiliza esta sintaxis ",
"search_suggestion_list_smart_search_hint_2": "m:your-search-term", "search_suggestion_list_smart_search_hint_2": "m:tu-término-de-búsqueda",
"select_additional_user_for_sharing_page_suggestions": "Sugerencias", "select_additional_user_for_sharing_page_suggestions": "Sugerencias",
"select_user_for_sharing_page_err_album": "Error al crear álbum", "select_user_for_sharing_page_err_album": "Error al crear álbum",
"select_user_for_sharing_page_share_suggestions": "Sugerencias", "select_user_for_sharing_page_share_suggestions": "Sugerencias",
"server_info_box_app_version": "App Version", "server_info_box_app_version": "Versión de la Aplicación",
"server_info_box_server_version": "Server Version", "server_info_box_server_version": "Versión del Servidor",
"setting_image_viewer_help": "The detail viewer loads the small thumbnail first, then loads the medium-size preview (if enabled), finally loads the original (if enabled).", "setting_image_viewer_help": "El visor de detalles carga primero la miniatura pequeña, luego carga la vista previa de tamaño mediano (si está habilitada), finalmente carga la original (si está habilitada).",
"setting_image_viewer_original_subtitle": "Enable to load the original full-resolution image (large!). Disable to reduce data usage (both network and on device cache).", "setting_image_viewer_original_subtitle": "Activar para cargar la imagen en resolución original (¡muy grande!). Deshabilitar para reducir el consumo de datos (de red y caché).",
"setting_image_viewer_original_title": "Load original image", "setting_image_viewer_original_title": "Cargar imagen original",
"setting_image_viewer_preview_subtitle": "Enable to load a medium-resolution image. Disable to either directly load the original or only use the thumbnail.", "setting_image_viewer_preview_subtitle": "Activar para cargar una imagen de resolución media. Deshabilitar para cargar directamente la imagen original o usar una miniatura.",
"setting_image_viewer_preview_title": "Load preview image", "setting_image_viewer_preview_title": "Cargar imagen de previsualización",
"setting_notifications_notify_failures_grace_period": "Notify background backup failures: {}", "setting_notifications_notify_failures_grace_period": "Notificar fallos de copia de seguridad en segundo plano: {}",
"setting_notifications_notify_hours": "{} hours", "setting_notifications_notify_hours": "{} horas",
"setting_notifications_notify_immediately": "immediately", "setting_notifications_notify_immediately": "inmediatamente",
"setting_notifications_notify_minutes": "{} minutes", "setting_notifications_notify_minutes": "{} minutos",
"setting_notifications_notify_never": "never", "setting_notifications_notify_never": "nunca",
"setting_notifications_notify_seconds": "{} seconds", "setting_notifications_notify_seconds": "{} segundos",
"setting_notifications_single_progress_subtitle": "Detailed upload progress information per asset", "setting_notifications_single_progress_subtitle": "Información detallada del progreso de subida de cada archivo",
"setting_notifications_single_progress_title": "Show background backup detail progress", "setting_notifications_single_progress_title": "Mostrar progreso detallado de copia de seguridad en segundo plano",
"setting_notifications_subtitle": "Adjust your notification preferences", "setting_notifications_subtitle": "Ajusta tus preferencias de notificación",
"setting_notifications_title": "Notifications", "setting_notifications_title": "Notificaciones",
"setting_notifications_total_progress_subtitle": "Overall upload progress (done/total assets)", "setting_notifications_total_progress_subtitle": "Progreso general de subida (archivos completados/total)",
"setting_notifications_total_progress_title": "Show background backup total progress", "setting_notifications_total_progress_title": "Mostrar progreso total de copia de seguridad en segundo plano",
"setting_pages_app_bar_settings": "Settings", "setting_pages_app_bar_settings": "Ajustes",
"settings_require_restart": "Please restart Immich to apply this setting", "settings_require_restart": "Por favor, reinicia Immich para aplicar este ajuste",
"share_add": "Añadir", "share_add": "Agregar",
"share_add_photos": "Añadir fotos", "share_add_photos": "Agregar fotos",
"share_add_title": "Añadir un título", "share_add_title": "Agregar un título",
"share_create_album": "Crear álbum", "share_create_album": "Crear álbum",
"share_dialog_preparing": "Preparando...", "share_dialog_preparing": "Preparando...",
"share_invite": "Invitar al álbum", "share_invite": "Invitar al álbum",
@@ -274,20 +281,24 @@
"tab_controller_nav_photos": "Fotos", "tab_controller_nav_photos": "Fotos",
"tab_controller_nav_search": "Buscar", "tab_controller_nav_search": "Buscar",
"tab_controller_nav_sharing": "Compartiendo", "tab_controller_nav_sharing": "Compartiendo",
"theme_setting_asset_list_storage_indicator_title": "Show storage indicator on asset tiles", "theme_setting_asset_list_storage_indicator_title": "Mostrar indicador de almacenamiento en las miniaturas de los archivos",
"theme_setting_asset_list_tiles_per_row_title": "Number of assets per row ({})", "theme_setting_asset_list_tiles_per_row_title": "Número de activos por fila ({})",
"theme_setting_dark_mode_switch": "Dark mode", "theme_setting_dark_mode_switch": "Modo oscuro",
"theme_setting_image_viewer_quality_subtitle": "Adjust the quality of the detail image viewer", "theme_setting_image_viewer_quality_subtitle": "Ajustar la calidad del visor de detalles de imágenes",
"theme_setting_image_viewer_quality_title": "Image viewer quality", "theme_setting_image_viewer_quality_title": "Calidad del visor de imágenes",
"theme_setting_system_theme_switch": "Automatic (Follow system setting)", "theme_setting_system_theme_switch": "Automático (seguir ajuste del sistema)",
"theme_setting_theme_subtitle": "Choose the app's theme setting", "theme_setting_theme_subtitle": "Elige la configuración del tema de la aplicación",
"theme_setting_theme_title": "Theme", "theme_setting_theme_title": "Tema",
"theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load", "theme_setting_three_stage_loading_subtitle": "La carga en tres etapas puede aumentar el rendimiento de carga pero provoca un consumo de red significativamente mayor",
"theme_setting_three_stage_loading_title": "Enable three-stage loading", "theme_setting_three_stage_loading_title": "Activar carga en tres etapas",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Aceptar", "version_announcement_overlay_ack": "Aceptar",
"version_announcement_overlay_release_notes": "notas de la versión", "version_announcement_overlay_release_notes": "notas de la versión",
"version_announcement_overlay_text_1": "Hola, amigo, hay una nueva versión de", "version_announcement_overlay_text_1": "Hola, amigo, hay una nueva versión de",
"version_announcement_overlay_text_2": "por favor, tómese su tiempo para visitar las", "version_announcement_overlay_text_2": "por favor, tómate tu tiempo para visitar las ",
"version_announcement_overlay_text_3": "y asegúrate de que tu configuración de docker-compose y .env está actualizada para evitar cualquier error de configuración, especialmente si utilizas WatchTower o cualquier mecanismo que se encargue de actualizar tu aplicación de servidor automáticamente.", "version_announcement_overlay_text_3": " y asegúrate de que la configuración de docker-compose y .env estén actualizadas para evitar cualquier error de configuración, especialmente si utilizas WatchTower o cualquier mecanismo que actualice automáticamente la aplicación del servidor.",
"version_announcement_overlay_title": "Nueva versión del servidor disponible \uD83C\uDF89" "version_announcement_overlay_title": "Nueva versión del servidor disponible \uD83C\uDF89"
} }

View File

@@ -1,69 +1,69 @@
{ {
"add_to_album_bottom_sheet_added": "Added to {album}", "add_to_album_bottom_sheet_added": "Agregado a {album}",
"add_to_album_bottom_sheet_already_exists": "Already in {album}", "add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}",
"advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.", "advanced_settings_prefer_remote_subtitle": "Algunos dispositivos tardan mucho en cargar las miniaturas de recursos encontrados el dispositivo. Activa esta opción para cargar imágenes remotas en su lugar.",
"advanced_settings_prefer_remote_title": "Prefer remote images", "advanced_settings_prefer_remote_title": "Preferir imágenes remotas",
"advanced_settings_tile_subtitle": "Advanced user's settings", "advanced_settings_tile_subtitle": "Configuraciones avanzadas del usuario",
"advanced_settings_tile_title": "Advanced", "advanced_settings_tile_title": "Avanzado",
"advanced_settings_troubleshooting_subtitle": "Enable additional features for troubleshooting", "advanced_settings_troubleshooting_subtitle": "Habilitar funciones adicionales para solución de problemas",
"advanced_settings_troubleshooting_title": "Troubleshooting", "advanced_settings_troubleshooting_title": "Solución de problemas",
"album_info_card_backup_album_excluded": "EXCLUIDOS", "album_info_card_backup_album_excluded": "EXCLUIDOS",
"album_info_card_backup_album_included": "INCLUIDOS", "album_info_card_backup_album_included": "INCLUIDOS",
"album_thumbnail_card_item": "1 elemento", "album_thumbnail_card_item": "1 elemento",
"album_thumbnail_card_items": "{} elementos", "album_thumbnail_card_items": "{} elementos",
"album_thumbnail_card_shared": " · Compartido", "album_thumbnail_card_shared": " · Compartido",
"album_thumbnail_owned": "Owned", "album_thumbnail_owned": "Propio",
"album_thumbnail_shared_by": "Shared by {}", "album_thumbnail_shared_by": "Compartido por {}",
"album_viewer_appbar_share_delete": "Eliminar álbum", "album_viewer_appbar_share_delete": "Eliminar álbum",
"album_viewer_appbar_share_err_delete": "No se ha podido eliminar el álbum", "album_viewer_appbar_share_err_delete": "No se ha podido eliminar el álbum",
"album_viewer_appbar_share_err_leave": "No se ha podido abandonar el álbum", "album_viewer_appbar_share_err_leave": "No se ha podido abandonar el álbum",
"album_viewer_appbar_share_err_remove": "Hay problemas para eliminar recursos del álbum", "album_viewer_appbar_share_err_remove": "Hay problemas para eliminar los archivos del álbum",
"album_viewer_appbar_share_err_title": "Error al cambiar el título del álbum", "album_viewer_appbar_share_err_title": "Error al cambiar el título del álbum",
"album_viewer_appbar_share_leave": "Abandonar álbum ", "album_viewer_appbar_share_leave": "Abandonar álbum ",
"album_viewer_appbar_share_remove": "Eliminar del álbum", "album_viewer_appbar_share_remove": "Eliminar del álbum",
"album_viewer_page_share_add_users": "Añadir usuarios", "album_viewer_page_share_add_users": "Agregar usuarios",
"all_people_page_title": "People", "all_people_page_title": "Personas",
"all_videos_page_title": "Videos", "all_videos_page_title": "Videos",
"archive_page_no_archived_assets": "No archived assets found", "archive_page_no_archived_assets": "No se encontraron recursos archivados",
"archive_page_title": "Archive ({})", "archive_page_title": "Archivo ({})",
"asset_list_layout_settings_dynamic_layout_title": "Dynamic layout", "asset_list_layout_settings_dynamic_layout_title": "Diseño dinámico",
"asset_list_layout_settings_group_automatically": "Automatic", "asset_list_layout_settings_group_automatically": "Automatico",
"asset_list_layout_settings_group_by": "Group assets by", "asset_list_layout_settings_group_by": "Agrupar recursos por",
"asset_list_layout_settings_group_by_month": "Month", "asset_list_layout_settings_group_by_month": "Mes",
"asset_list_layout_settings_group_by_month_day": "Month + day", "asset_list_layout_settings_group_by_month_day": "Mes + día",
"asset_list_settings_subtitle": "Photo grid layout settings", "asset_list_settings_subtitle": "Configuraciones del diseño de la cuadrícula de fotos",
"asset_list_settings_title": "Photo Grid", "asset_list_settings_title": "Cuadrícula de fotos",
"backup_album_selection_page_albums_device": "Álbumes en el dispositivo ({})", "backup_album_selection_page_albums_device": "Álbumes en el dispositivo ({})",
"backup_album_selection_page_albums_tap": "Pulsar para incluir, pulsar dos veces para excluir", "backup_album_selection_page_albums_tap": "Pulsar para incluir, pulsar dos veces para excluir",
"backup_album_selection_page_assets_scatter": "Los recursos pueden dispersarse entre varios álbumes. Por lo tanto, los álbumes pueden incluirse o excluirse durante el proceso de respaldo.", "backup_album_selection_page_assets_scatter": "Los archivos pueden dispersarse en varios álbumes. De este modo, los álbumes pueden ser incluidos o excluidos durante el proceso de copia de seguridad.",
"backup_album_selection_page_select_albums": "Seleccionar álbumes", "backup_album_selection_page_select_albums": "Seleccionar álbumes",
"backup_album_selection_page_selection_info": "Información de la selección", "backup_album_selection_page_selection_info": "Información de la selección",
"backup_album_selection_page_total_assets": "Total de recursos únicos", "backup_album_selection_page_total_assets": "Total de archivos únicos",
"backup_all": "Todos", "backup_all": "Todos",
"backup_background_service_backup_failed_message": "Failed to backup assets. Retrying…", "backup_background_service_backup_failed_message": "Error al copiar archivos. Reintentando...",
"backup_background_service_connection_failed_message": "Failed to connect to the server. Retrying…", "backup_background_service_connection_failed_message": "Error al conectar con el servidor. Reintentando...",
"backup_background_service_current_upload_notification": "Cargando {}", "backup_background_service_current_upload_notification": "Cargando {}",
"backup_background_service_default_notification": "Comprobando por nuevos recursos...", "backup_background_service_default_notification": "Verificando si hay nuevos archivos",
"backup_background_service_error_title": "Error al respaldar", "backup_background_service_error_title": "Error de copia de seguridad",
"backup_background_service_in_progress_notification": "Respaldando tus recursos...", "backup_background_service_in_progress_notification": "Creando copia de seguridad de tus archivos...",
"backup_background_service_upload_failure_notification": "Error al cargar {}", "backup_background_service_upload_failure_notification": "Error al cargar {}",
"backup_controller_page_albums": "Álbumes de respaldo", "backup_controller_page_albums": "Álbumes de respaldo",
"backup_controller_page_background_app_refresh_disabled_content": "Enable background app refresh in Settings > General > Background App Refresh in order to use background backup.", "backup_controller_page_background_app_refresh_disabled_content": "Activa la actualización en segundo plano de la aplicación en Configuración > General > Actualización en segundo plano para usar la copia de seguridad en segundo plano.",
"backup_controller_page_background_app_refresh_disabled_title": "Background app refresh disabled", "backup_controller_page_background_app_refresh_disabled_title": "Actualización en segundo plano desactivada",
"backup_controller_page_background_app_refresh_enable_button_text": "Go to settings", "backup_controller_page_background_app_refresh_enable_button_text": "Ir a configuración",
"backup_controller_page_background_battery_info_link": "Show me how", "backup_controller_page_background_battery_info_link": "Muestrame cómo",
"backup_controller_page_background_battery_info_message": "For the best background backup experience, please disable any battery optimizations restricting background activity for Immich.\n\nSince this is device-specific, please lookup the required information for your device manufacturer.", "backup_controller_page_background_battery_info_message": "Para obtener la mejor experiencia de copia de seguridad en segundo plano, desactiva cualquier optimización de batería que restrinja la actividad en segundo plano para Immich.\n\nDado que esto es específico en cada dispositivo, busca la información necesaria de el fabricante de tu dispositivo.",
"backup_controller_page_background_battery_info_ok": "OK", "backup_controller_page_background_battery_info_ok": "Ok",
"backup_controller_page_background_battery_info_title": "Battery optimizations", "backup_controller_page_background_battery_info_title": "Optimizaciones de batería",
"backup_controller_page_background_charging": "Only while charging", "backup_controller_page_background_charging": "Solo mientras se carga",
"backup_controller_page_background_configure_error": "Failed to configure the background service", "backup_controller_page_background_configure_error": "Error al configurar el servicio en segundo plano",
"backup_controller_page_background_delay": "Delay new assets backup: {}", "backup_controller_page_background_delay": "Retraso en la copia de seguridad de nuevos activos: {}",
"backup_controller_page_background_description": "Turn on the background service to automatically backup any new assets without needing to open the app", "backup_controller_page_background_description": "Activa el servicio en segundo plano para copiar automáticamente cualquier nuevos archivos sin necesidad de abrir la aplicación.",
"backup_controller_page_background_is_off": "Automatic background backup is off", "backup_controller_page_background_is_off": "La copia de seguridad en segundo plano automática está desactivada",
"backup_controller_page_background_is_on": "Automatic background backup is on", "backup_controller_page_background_is_on": "La copia de seguridad en segundo plano automática está desactivada",
"backup_controller_page_background_turn_off": "Turn off background service", "backup_controller_page_background_turn_off": "Desactivar el servicio en segundo plano",
"backup_controller_page_background_turn_on": "Turn on background service", "backup_controller_page_background_turn_on": "Activar el servicio en segundo plano",
"backup_controller_page_background_wifi": "Only on WiFi", "backup_controller_page_background_wifi": "Solo en WiFi",
"backup_controller_page_backup": "Respaldo", "backup_controller_page_backup": "Respaldo",
"backup_controller_page_backup_selected": "Seleccionado:", "backup_controller_page_backup_selected": "Seleccionado:",
"backup_controller_page_backup_sub": "Fotos y videos respaldados", "backup_controller_page_backup_sub": "Fotos y videos respaldados",
@@ -72,12 +72,12 @@
"backup_controller_page_desc_backup": "Activa la copia de seguridad en primer plano para cargar automáticamente nuevos recursos al servidor al abrir la aplicación.", "backup_controller_page_desc_backup": "Activa la copia de seguridad en primer plano para cargar automáticamente nuevos recursos al servidor al abrir la aplicación.",
"backup_controller_page_excluded": "Excluido:", "backup_controller_page_excluded": "Excluido:",
"backup_controller_page_failed": "Fallidos ({})", "backup_controller_page_failed": "Fallidos ({})",
"backup_controller_page_filename": "Nombre: {} [{}]", "backup_controller_page_filename": "Nombre del archivo: {} [{}]",
"backup_controller_page_id": "ID: {}", "backup_controller_page_id": "ID: {}",
"backup_controller_page_info": "Información del respaldo", "backup_controller_page_info": "Información del respaldo",
"backup_controller_page_none_selected": "Ninguno seleccionado", "backup_controller_page_none_selected": "Ninguno seleccionado",
"backup_controller_page_remainder": "Restante", "backup_controller_page_remainder": "Restante",
"backup_controller_page_remainder_sub": "Fotos y videos restantes de la selección a los que realizar un respaldo", "backup_controller_page_remainder_sub": "Fotos y videos restantes para hacer una copia de seguridad de la selección",
"backup_controller_page_select": "Seleccionar", "backup_controller_page_select": "Seleccionar",
"backup_controller_page_server_storage": "Almacenamiento del servidor", "backup_controller_page_server_storage": "Almacenamiento del servidor",
"backup_controller_page_start_backup": "Iniciar respaldo", "backup_controller_page_start_backup": "Iniciar respaldo",
@@ -89,48 +89,53 @@
"backup_controller_page_total_sub": "Todas las fotos y videos únicos de los álbumes seleccionados", "backup_controller_page_total_sub": "Todas las fotos y videos únicos de los álbumes seleccionados",
"backup_controller_page_turn_off": "Desactivar la copia de seguridad en primer plano", "backup_controller_page_turn_off": "Desactivar la copia de seguridad en primer plano",
"backup_controller_page_turn_on": "Activar la copia de seguridad en primer plano", "backup_controller_page_turn_on": "Activar la copia de seguridad en primer plano",
"backup_controller_page_uploading_file_info": "Info de carga de archivo", "backup_controller_page_uploading_file_info": "Cargando información del archivo",
"backup_err_only_album": "No se puede eliminar el único álbum", "backup_err_only_album": "No se puede eliminar el único álbum",
"backup_info_card_assets": "recursos", "backup_info_card_assets": "archivos",
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)", "backup_manual_cancelled": "Cancelled",
"cache_settings_clear_cache_button": "Clear cache", "backup_manual_failed": "Failed",
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.", "backup_manual_in_progress": "Upload already in progress. Try after sometime",
"cache_settings_image_cache_size": "Image cache size ({} assets)", "backup_manual_success": "Success",
"cache_settings_statistics_album": "Library thumbnails", "backup_manual_title": "Upload status",
"cache_settings_statistics_assets": "{} assets ({})", "cache_settings_album_thumbnails": "Miniaturas de la página de la biblioteca ({} archivos)",
"cache_settings_statistics_full": "Full images", "cache_settings_clear_cache_button": "Borrar caché",
"cache_settings_statistics_shared": "Shared album thumbnails", "cache_settings_clear_cache_button_title": "Borra la caché de la aplicación. Esto afectará significativamente el rendimiento de la aplicación hasta que se reconstruya la caché.",
"cache_settings_statistics_thumbnail": "Thumbnails", "cache_settings_image_cache_size": "Tamaño de la caché de imágenes ({} archivos)",
"cache_settings_statistics_title": "Cache usage", "cache_settings_statistics_album": "Miniaturas de la biblioteca",
"cache_settings_subtitle": "Control the caching behaviour of the Immich mobile application", "cache_settings_statistics_assets": "{} archivos ({})",
"cache_settings_thumbnail_size": "Thumbnail cache size ({} assets)", "cache_settings_statistics_full": "Imágenes completas",
"cache_settings_title": "Caching Settings", "cache_settings_statistics_shared": "Miniaturas de álbumes compartidos",
"change_password_form_confirm_password": "Confirm Password", "cache_settings_statistics_thumbnail": "Miniaturas",
"change_password_form_description": "Hi {firstName} {lastName},\n\nThis is either the first time you are signing into the system or a request has been made to change your password. Please enter the new password below.", "cache_settings_statistics_title": "Uso de caché",
"change_password_form_new_password": "New Password", "cache_settings_subtitle": "Controla el comportamiento del almacenamiento en caché de la aplicación móvil Immich",
"change_password_form_password_mismatch": "Passwords do not match", "cache_settings_thumbnail_size": "Tamaño de la caché de miniaturas ({} archivos)",
"change_password_form_reenter_new_password": "Re-enter New Password", "cache_settings_title": "Configuración de la caché",
"common_add_to_album": "Add to album", "change_password_form_confirm_password": "Confirmar Contraseña",
"common_change_password": "Change Password", "change_password_form_description": "Hola {firstName} {lastName},\n\nEsta es la primera vez que inicias sesión en el sistema o se ha solicitado cambiar tu contraseña. Por favor, introduce la nueva contraseña a continuación.",
"common_create_new_album": "Create new album", "change_password_form_new_password": "Nueva Contraseña",
"common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.", "change_password_form_password_mismatch": "Las contraseñas no coinciden",
"common_shared": "Shared", "change_password_form_reenter_new_password": "Vuelve a ingresar la nueva contraseña",
"control_bottom_app_bar_add_to_album": "Add to album", "common_add_to_album": "Agregar al álbum",
"control_bottom_app_bar_album_info": "{} items", "common_change_password": "Cambiar Contraseña",
"control_bottom_app_bar_album_info_shared": "{} items · Shared", "common_create_new_album": "Crear nuevo álbum",
"control_bottom_app_bar_archive": "Archive", "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.",
"control_bottom_app_bar_create_new_album": "Create new album", "common_shared": "Compartido",
"control_bottom_app_bar_add_to_album": "Agregar al álbum",
"control_bottom_app_bar_album_info": "{} elementos",
"control_bottom_app_bar_album_info_shared": "{} elementos · Compartidos",
"control_bottom_app_bar_archive": "Archivar",
"control_bottom_app_bar_create_new_album": "Crear nuevo álbum",
"control_bottom_app_bar_delete": "Eliminar", "control_bottom_app_bar_delete": "Eliminar",
"control_bottom_app_bar_favorite": "Favorite", "control_bottom_app_bar_favorite": "Favorito",
"control_bottom_app_bar_share": "Compartir", "control_bottom_app_bar_share": "Compartir",
"control_bottom_app_bar_unarchive": "Unarchive", "control_bottom_app_bar_unarchive": "Desarchivar",
"create_album_page_untitled": "Sin título", "create_album_page_untitled": "Sin título",
"create_shared_album_page_create": "Crear", "create_shared_album_page_create": "Crear",
"create_shared_album_page_share": "Compartir", "create_shared_album_page_share": "Compartir",
"create_shared_album_page_share_add_assets": "AÑADIR RECURSOS", "create_shared_album_page_share_add_assets": "AGREGAR ARCHIVOS",
"create_shared_album_page_share_select_photos": "Seleccionar fotos", "create_shared_album_page_share_select_photos": "Seleccionar fotos",
"curated_location_page_title": "Places", "curated_location_page_title": "Lugares",
"curated_object_page_title": "Things", "curated_object_page_title": "Objetos",
"daily_title_text_date": "E, dd MMM", "daily_title_text_date": "E, dd MMM",
"daily_title_text_date_year": "E, dd de MMM de yyyy", "daily_title_text_date_year": "E, dd de MMM de yyyy",
"date_format": "E d, LLL y • h:mm a", "date_format": "E d, LLL y • h:mm a",
@@ -138,130 +143,132 @@
"delete_dialog_cancel": "Cancelar", "delete_dialog_cancel": "Cancelar",
"delete_dialog_ok": "Eliminar", "delete_dialog_ok": "Eliminar",
"delete_dialog_title": "Eliminar permanentemente", "delete_dialog_title": "Eliminar permanentemente",
"description_input_hint_text": "Add description...", "description_input_hint_text": "Agregar descripción...",
"description_input_submit_error": "Error updating description, check the log for more details", "description_input_submit_error": "Error al actualizar la descripción, verifica el registro para obtener más detalles",
"exif_bottom_sheet_description": "Añadir descripción...", "exif_bottom_sheet_description": "Agregar Descripción...",
"exif_bottom_sheet_details": "DETALLES", "exif_bottom_sheet_details": "DETALLES",
"exif_bottom_sheet_location": "UBICACIÓN", "exif_bottom_sheet_location": "UBICACIÓN",
"experimental_settings_new_asset_list_subtitle": "Work in progress", "experimental_settings_new_asset_list_subtitle": "Trabajo en progreso",
"experimental_settings_new_asset_list_title": "Enable experimental photo grid", "experimental_settings_new_asset_list_title": "Habilitar cuadrícula fotográfica experimental",
"experimental_settings_subtitle": "Use at your own risk!", "experimental_settings_subtitle": "Úsalo bajo tu responsabilidad",
"experimental_settings_title": "Experimental", "experimental_settings_title": "Experimental",
"favorites_page_no_favorites": "No favorite assets found", "favorites_page_no_favorites": "No se encontraron recursos marcados como favoritos",
"favorites_page_title": "Favorites", "favorites_page_title": "Favoritos",
"home_page_add_to_album_conflicts": "Added {added} assets to album {album}. {failed} assets are already in the album.", "home_page_add_to_album_conflicts": "{added} elementos agregados al álbum {album}.\n{failed} elementos ya existen en el álbum.",
"home_page_add_to_album_err_local": "Can not add local assets to albums yet, skipping", "home_page_add_to_album_err_local": "n no se pueden agregar recursos locales a álbumes, omitiendo",
"home_page_add_to_album_success": "Added {added} assets to album {album}.", "home_page_add_to_album_success": "{added} elementos agregados al álbum {album}. ",
"home_page_archive_err_local": "Can not archive local assets yet, skipping", "home_page_archive_err_local": "Los recursos locales no pueden ser archivados, omitiendo",
"home_page_building_timeline": "Building the timeline", "home_page_building_timeline": "Construyendo la línea de tiempo",
"home_page_favorite_err_local": "Can not favorite local assets yet, skipping", "home_page_favorite_err_local": "n no se pueden archivar recursos locales, omitiendo",
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).", "home_page_first_time_notice": "Si esta es la primera vez que usas la app, por favor, asegúrate de elegir un álbum de respaldo para que la línea de tiempo pueda cargar fotos y videos en los álbumes.",
"image_viewer_page_state_provider_download_error": "Download Error", "home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_error": "Error de descarga",
"image_viewer_page_state_provider_download_success": "Descarga exitosa",
"library_page_albums": "Álbumes", "library_page_albums": "Álbumes",
"library_page_archive": "Archive", "library_page_archive": "Archivo",
"library_page_device_albums": "Albums on Device", "library_page_device_albums": "Álbumes en el dispositivo",
"library_page_favorites": "Favorites", "library_page_favorites": "Favoritos",
"library_page_new_album": "Nuevo álbum", "library_page_new_album": "Nuevo álbum",
"library_page_sharing": "Sharing", "library_page_sharing": "Compartiendo",
"library_page_sort_created": "Most recently created", "library_page_sort_created": "Creado más recientemente",
"library_page_sort_title": "Album title", "library_page_sort_title": "Título del álbum",
"login_form_api_exception": "API exception. Please check the server URL and try again.", "login_disabled": "Login has been disabled",
"login_form_api_exception": "Excepción producida por API. Por favor, verifica el URL del servidor e inténtalo de nuevo.",
"login_form_button_text": "Iniciar sesión", "login_form_button_text": "Iniciar sesión",
"login_form_email_hint": "tucorreo@correo.com", "login_form_email_hint": "tucorreo@correo.com",
"login_form_endpoint_hint": "http://la-ip-de-tu-servidor:puerto/api", "login_form_endpoint_hint": "http://la-ip-de-tu-servidor:puerto/api",
"login_form_endpoint_url": "URL del servidor", "login_form_endpoint_url": "URL del servidor",
"login_form_err_http": "Por favor, especifique http:// o https://", "login_form_err_http": "Por favor, especifique http:// o https://",
"login_form_err_invalid_email": "Correo electrónico inválido", "login_form_err_invalid_email": "Correo electrónico inválido",
"login_form_err_invalid_url": "Invalid URL", "login_form_err_invalid_url": "URL no válida",
"login_form_err_leading_whitespace": "Espacio en blanco inicial", "login_form_err_leading_whitespace": "Espacio en blanco inicial",
"login_form_err_trailing_whitespace": "Espacio en blanco al final", "login_form_err_trailing_whitespace": "Espacio en blanco al final",
"login_form_failed_get_oauth_server_config": "Error logging using OAuth, check server URL", "login_form_failed_get_oauth_server_config": "Error al iniciar sesión con OAuth, verifica la URL del servidor",
"login_form_failed_get_oauth_server_disable": "OAuth feature is not available on this server", "login_form_failed_get_oauth_server_disable": "La función de OAuth no está disponible en este servidor",
"login_form_failed_login": "Error al iniciar sesión, comprueba la URL del servidor, el correo electrónico y la contraseña", "login_form_failed_login": "Error al iniciar sesión, comprueba la URL del servidor, el correo electrónico y la contraseña",
"login_form_label_email": "Correo electrónico", "login_form_label_email": "Correo electrónico",
"login_form_label_password": "Contraseña", "login_form_label_password": "Contraseña",
"login_form_next_button": "Next", "login_form_next_button": "Siguiente",
"login_form_password_hint": "contraseña", "login_form_password_hint": "contraseña",
"login_form_save_login": "Permanecer conectado", "login_form_save_login": "Permanecer conectado",
"login_form_server_empty": "Enter a server URL.", "login_form_server_empty": "Agrega la URL del servidor.",
"login_form_server_error": "Could not connect to server.", "login_form_server_error": "No se pudo conectar al servidor.",
"monthly_title_text_date_format": "MMMM y", "monthly_title_text_date_format": "MMMM y",
"motion_photos_page_title": "Motion Photos", "motion_photos_page_title": "Foto en Movimiento",
"notification_permission_dialog_cancel": "Cancel", "notification_permission_dialog_cancel": "Cancelar",
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.", "notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.",
"notification_permission_dialog_settings": "Settings", "notification_permission_dialog_settings": "Ajustes",
"notification_permission_list_tile_content": "Grant permission to enable notifications.", "notification_permission_list_tile_content": "Concede permiso para habilitar las notificaciones.",
"notification_permission_list_tile_enable_button": "Enable Notifications", "notification_permission_list_tile_enable_button": "Permitir notificaciones",
"notification_permission_list_tile_title": "Notification Permission", "notification_permission_list_tile_title": "Permisos de Notificacion",
"partner_page_add_partner": "Add partner", "partner_page_add_partner": "Agregar compañero",
"partner_page_empty_message": "Your photos are not yet shared with any partner.", "partner_page_empty_message": "Tus fotos aún no se han compartido con ningún compañero.",
"partner_page_no_more_users": "No more users to add", "partner_page_no_more_users": "No hay más usuarios para agregar",
"partner_page_partner_add_failed": "Failed to add partner", "partner_page_partner_add_failed": "Compañero no pudo ser agregado ",
"partner_page_select_partner": "Select partner", "partner_page_select_partner": "Seleccionar compañero",
"partner_page_shared_to_title": "Shared to", "partner_page_shared_to_title": "Compartido con",
"partner_page_stop_sharing_content": "{} will no longer be able to access your photos.", "partner_page_stop_sharing_content": "{} ya no podrá acceder a tus fotos",
"partner_page_stop_sharing_title": "Stop sharing your photos?", "partner_page_stop_sharing_title": "¿Dejar de compartir tus fotos?",
"partner_page_title": "Partner", "partner_page_title": "Compañero",
"permission_onboarding_continue_anyway": "Continue anyway", "permission_onboarding_continue_anyway": "Continuar de todos modos",
"permission_onboarding_get_started": "Get started", "permission_onboarding_get_started": "Empezar",
"permission_onboarding_go_to_settings": "Go to settings", "permission_onboarding_go_to_settings": "Ir a configuración",
"permission_onboarding_grant_permission": "Grant permission", "permission_onboarding_grant_permission": "Conceder permiso",
"permission_onboarding_log_out": "Log out", "permission_onboarding_log_out": "Cerrar sesión",
"permission_onboarding_permission_denied": "Permission denied. To use Immich, grant photo and video permissions in Settings.", "permission_onboarding_permission_denied": "Permiso denegado. Para usar Immich, concede permisos de fotos y videos en Configuración.",
"permission_onboarding_permission_granted": "Permission granted! You are all set.", "permission_onboarding_permission_granted": "¡Permiso concedido! Todo listo.",
"permission_onboarding_permission_limited": "Permission limited. To let Immich backup and manage your entire gallery collection, grant photo and video permissions in Settings.", "permission_onboarding_permission_limited": "Permiso limitado. Para permitir que Immich haga copia de seguridad y gestione toda tu colección de galería, concede permisos de fotos y videos en Configuración.",
"permission_onboarding_request": "Immich requires permission to view your photos and videos.", "permission_onboarding_request": "Immich requiere permiso para ver tus fotos y videos.",
"profile_drawer_app_logs": "Logs", "profile_drawer_app_logs": "Registros",
"profile_drawer_client_server_up_to_date": "El cliente y el servidor están actualizados", "profile_drawer_client_server_up_to_date": "El cliente y el servidor están actualizados",
"profile_drawer_settings": "Configuración", "profile_drawer_settings": "Configuración",
"profile_drawer_sign_out": "Cerrar sesión", "profile_drawer_sign_out": "Cerrar sesión",
"recently_added_page_title": "Recently Added", "recently_added_page_title": "Recién Agregadas",
"search_bar_hint": "Busca tus fotos", "search_bar_hint": "Busca tus fotos",
"search_page_categories": "Categories", "search_page_categories": "Categorías",
"search_page_favorites": "Favorites", "search_page_favorites": "Favoritos",
"search_page_motion_photos": "Motion Photos", "search_page_motion_photos": "Foto en Movimiento",
"search_page_no_objects": "No hay información de objetos disponible", "search_page_no_objects": "No hay información de objetos disponibles",
"search_page_no_places": "No hay información de lugares disponible", "search_page_no_places": "No hay información de lugares disponible",
"search_page_people": "People", "search_page_people": "Personas",
"search_page_places": "Lugares", "search_page_places": "Lugares",
"search_page_recently_added": "Recently added", "search_page_recently_added": "Recién agregadas",
"search_page_screenshots": "Screenshots", "search_page_screenshots": "Capturas de pantalla",
"search_page_selfies": "Selfies", "search_page_selfies": "Selfies",
"search_page_things": "Cosas", "search_page_things": "Cosas",
"search_page_videos": "Videos", "search_page_videos": "Videos",
"search_page_view_all_button": "View all", "search_page_view_all_button": "Ver todo",
"search_page_your_activity": "Your activity", "search_page_your_activity": "Tu actividad",
"search_result_page_new_search_hint": "Nueva búsqueda", "search_result_page_new_search_hint": "Nueva búsqueda",
"search_suggestion_list_smart_search_hint_1": "Smart search is enabled by default, to search for metadata use the syntax ", "search_suggestion_list_smart_search_hint_1": "La búsqueda inteligente está habilitada por defecto, para buscar metadatos utiliza esta sintaxis ",
"search_suggestion_list_smart_search_hint_2": "m:your-search-term", "search_suggestion_list_smart_search_hint_2": "m:tu-término-de-búsqueda",
"select_additional_user_for_sharing_page_suggestions": "Sugerencias", "select_additional_user_for_sharing_page_suggestions": "Sugerencias",
"select_user_for_sharing_page_err_album": "Error al crear álbum", "select_user_for_sharing_page_err_album": "Error al crear álbum",
"select_user_for_sharing_page_share_suggestions": "Sugerencias", "select_user_for_sharing_page_share_suggestions": "Sugerencias",
"server_info_box_app_version": "App Version", "server_info_box_app_version": "Versión de la Aplicación",
"server_info_box_server_version": "Server Version", "server_info_box_server_version": "Versión del Servidor",
"setting_image_viewer_help": "The detail viewer loads the small thumbnail first, then loads the medium-size preview (if enabled), finally loads the original (if enabled).", "setting_image_viewer_help": "El visor de detalles carga primero la miniatura pequeña, luego carga la vista previa de tamaño mediano (si está habilitada), finalmente carga la original (si está habilitada).",
"setting_image_viewer_original_subtitle": "Enable to load the original full-resolution image (large!). Disable to reduce data usage (both network and on device cache).", "setting_image_viewer_original_subtitle": "Activar para cargar la imagen en resolución original (¡muy grande!). Deshabilitar para reducir el consumo de datos (de red y caché).",
"setting_image_viewer_original_title": "Load original image", "setting_image_viewer_original_title": "Cargar imagen original",
"setting_image_viewer_preview_subtitle": "Enable to load a medium-resolution image. Disable to either directly load the original or only use the thumbnail.", "setting_image_viewer_preview_subtitle": "Activar para cargar una imagen de resolución media. Deshabilitar para cargar directamente la imagen original o usar una miniatura.",
"setting_image_viewer_preview_title": "Load preview image", "setting_image_viewer_preview_title": "Cargar imagen de previsualización",
"setting_notifications_notify_failures_grace_period": "Notify background backup failures: {}", "setting_notifications_notify_failures_grace_period": "Notificar fallos de copia de seguridad en segundo plano: {}",
"setting_notifications_notify_hours": "{} hours", "setting_notifications_notify_hours": "{} horas",
"setting_notifications_notify_immediately": "immediately", "setting_notifications_notify_immediately": "inmediatamente",
"setting_notifications_notify_minutes": "{} minutes", "setting_notifications_notify_minutes": "{} minutos",
"setting_notifications_notify_never": "never", "setting_notifications_notify_never": "nunca",
"setting_notifications_notify_seconds": "{} seconds", "setting_notifications_notify_seconds": "{} segundos",
"setting_notifications_single_progress_subtitle": "Detailed upload progress information per asset", "setting_notifications_single_progress_subtitle": "Información detallada del progreso de subida de cada archivo",
"setting_notifications_single_progress_title": "Show background backup detail progress", "setting_notifications_single_progress_title": "Mostrar progreso detallado de copia de seguridad en segundo plano",
"setting_notifications_subtitle": "Adjust your notification preferences", "setting_notifications_subtitle": "Ajusta tus preferencias de notificación",
"setting_notifications_title": "Notifications", "setting_notifications_title": "Notificaciones",
"setting_notifications_total_progress_subtitle": "Overall upload progress (done/total assets)", "setting_notifications_total_progress_subtitle": "Progreso general de subida (archivos completados/total)",
"setting_notifications_total_progress_title": "Show background backup total progress", "setting_notifications_total_progress_title": "Mostrar progreso total de copia de seguridad en segundo plano",
"setting_pages_app_bar_settings": "Settings", "setting_pages_app_bar_settings": "Ajustes",
"settings_require_restart": "Please restart Immich to apply this setting", "settings_require_restart": "Por favor, reinicia Immich para aplicar este ajuste",
"share_add": "Añadir", "share_add": "Agregar",
"share_add_photos": "Añadir fotos", "share_add_photos": "Agregar fotos",
"share_add_title": "Añadir un título", "share_add_title": "Agregar un título",
"share_create_album": "Crear álbum", "share_create_album": "Crear álbum",
"share_dialog_preparing": "Preparando...", "share_dialog_preparing": "Preparando...",
"share_invite": "Invitar al álbum", "share_invite": "Invitar al álbum",
@@ -274,20 +281,24 @@
"tab_controller_nav_photos": "Fotos", "tab_controller_nav_photos": "Fotos",
"tab_controller_nav_search": "Buscar", "tab_controller_nav_search": "Buscar",
"tab_controller_nav_sharing": "Compartiendo", "tab_controller_nav_sharing": "Compartiendo",
"theme_setting_asset_list_storage_indicator_title": "Show storage indicator on asset tiles", "theme_setting_asset_list_storage_indicator_title": "Mostrar indicador de almacenamiento en las miniaturas de los archivos",
"theme_setting_asset_list_tiles_per_row_title": "Number of assets per row ({})", "theme_setting_asset_list_tiles_per_row_title": "Número de activos por fila ({})",
"theme_setting_dark_mode_switch": "Dark mode", "theme_setting_dark_mode_switch": "Modo oscuro",
"theme_setting_image_viewer_quality_subtitle": "Adjust the quality of the detail image viewer", "theme_setting_image_viewer_quality_subtitle": "Ajustar la calidad del visor de detalles de imágenes",
"theme_setting_image_viewer_quality_title": "Image viewer quality", "theme_setting_image_viewer_quality_title": "Calidad del visor de imágenes",
"theme_setting_system_theme_switch": "Automatic (Follow system setting)", "theme_setting_system_theme_switch": "Automático (seguir ajuste del sistema)",
"theme_setting_theme_subtitle": "Choose the app's theme setting", "theme_setting_theme_subtitle": "Elige la configuración del tema de la aplicación",
"theme_setting_theme_title": "Theme", "theme_setting_theme_title": "Tema",
"theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load", "theme_setting_three_stage_loading_subtitle": "La carga en tres etapas puede aumentar el rendimiento de carga pero provoca un consumo de red significativamente mayor",
"theme_setting_three_stage_loading_title": "Enable three-stage loading", "theme_setting_three_stage_loading_title": "Activar carga en tres etapas",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Aceptar", "version_announcement_overlay_ack": "Aceptar",
"version_announcement_overlay_release_notes": "notas de la versión", "version_announcement_overlay_release_notes": "notas de la versión",
"version_announcement_overlay_text_1": "Hola, amigo, hay una nueva versión de", "version_announcement_overlay_text_1": "Hola, amigo, hay una nueva versión de",
"version_announcement_overlay_text_2": "por favor, tómese su tiempo para visitar las", "version_announcement_overlay_text_2": "por favor, tómate tu tiempo para visitar las ",
"version_announcement_overlay_text_3": "y asegúrate de que tu configuración de docker-compose y .env está actualizada para evitar cualquier error de configuración, especialmente si utilizas WatchTower o cualquier mecanismo que se encargue de actualizar tu aplicación de servidor automáticamente.", "version_announcement_overlay_text_3": " y asegúrate de que la configuración de docker-compose y .env estén actualizadas para evitar cualquier error de configuración, especialmente si utilizas WatchTower o cualquier mecanismo que actualice automáticamente la aplicación del servidor.",
"version_announcement_overlay_title": "Nueva versión del servidor disponible \uD83C\uDF89" "version_announcement_overlay_title": "Nueva versión del servidor disponible \uD83C\uDF89"
} }

View File

@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Tiedostojen lähetystiedot", "backup_controller_page_uploading_file_info": "Tiedostojen lähetystiedot",
"backup_err_only_album": "Vähintään yhden albumin tulee olla valittuna", "backup_err_only_album": "Vähintään yhden albumin tulee olla valittuna",
"backup_info_card_assets": "kohdetta", "backup_info_card_assets": "kohdetta",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Kirjastosivun esikatselukuvat ({} kohdetta)", "cache_settings_album_thumbnails": "Kirjastosivun esikatselukuvat ({} kohdetta)",
"cache_settings_clear_cache_button": "Tyhjennä välimuisti", "cache_settings_clear_cache_button": "Tyhjennä välimuisti",
"cache_settings_clear_cache_button_title": "Tyhjennä sovelluksen välimuisti. Tämä vaikuttaa merkittävästi sovelluksen suorituskykyyn, kunnes välimuisti on rakennettu uudelleen.", "cache_settings_clear_cache_button_title": "Tyhjennä sovelluksen välimuisti. Tämä vaikuttaa merkittävästi sovelluksen suorituskykyyn, kunnes välimuisti on rakennettu uudelleen.",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "Rakennetaan aikajanaa", "home_page_building_timeline": "Rakennetaan aikajanaa",
"home_page_favorite_err_local": "Paikallisten kohteiden lisääminen suosikkeihin ei ole mahdollista, ohitetaan", "home_page_favorite_err_local": "Paikallisten kohteiden lisääminen suosikkeihin ei ole mahdollista, ohitetaan",
"home_page_first_time_notice": "Jos käytät sovellusta ensimmäistä kertaa, muista valita varmuuskopioitavat albumi(t), jotta aikajanalla voi olla kuvia ja videoita.", "home_page_first_time_notice": "Jos käytät sovellusta ensimmäistä kertaa, muista valita varmuuskopioitavat albumi(t), jotta aikajanalla voi olla kuvia ja videoita.",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Lataus epäonnistui", "image_viewer_page_state_provider_download_error": "Lataus epäonnistui",
"image_viewer_page_state_provider_download_success": "Lataus onnistui", "image_viewer_page_state_provider_download_success": "Lataus onnistui",
"library_page_albums": "Albumit", "library_page_albums": "Albumit",
@@ -166,6 +172,7 @@
"library_page_sharing": "Jakaminen", "library_page_sharing": "Jakaminen",
"library_page_sort_created": "Viimeisin luotu", "library_page_sort_created": "Viimeisin luotu",
"library_page_sort_title": "Albumin otsikko", "library_page_sort_title": "Albumin otsikko",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API-virhe. Tarkista palvelimen URL-osoite ja yritä uudelleen.", "login_form_api_exception": "API-virhe. Tarkista palvelimen URL-osoite ja yritä uudelleen.",
"login_form_button_text": "Kirjaudu", "login_form_button_text": "Kirjaudu",
"login_form_email_hint": "sahkopostisi@esimerkki.fi", "login_form_email_hint": "sahkopostisi@esimerkki.fi",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Teema", "theme_setting_theme_title": "Teema",
"theme_setting_three_stage_loading_subtitle": "Kolmivaiheinen lataaminen saattaa parantaa latauksen suorituskykyä, mutta lisää kaistankäyttöä huomattavasti.", "theme_setting_three_stage_loading_subtitle": "Kolmivaiheinen lataaminen saattaa parantaa latauksen suorituskykyä, mutta lisää kaistankäyttöä huomattavasti.",
"theme_setting_three_stage_loading_title": "Ota kolmivaiheinen lataus käyttöön", "theme_setting_three_stage_loading_title": "Ota kolmivaiheinen lataus käyttöön",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Tiedostan", "version_announcement_overlay_ack": "Tiedostan",
"version_announcement_overlay_release_notes": "julkaisutiedoissa", "version_announcement_overlay_release_notes": "julkaisutiedoissa",
"version_announcement_overlay_text_1": "Hei, kaveri! Uusi palvelinversio on saatavilla sovelluksesta", "version_announcement_overlay_text_1": "Hei, kaveri! Uusi palvelinversio on saatavilla sovelluksesta",

View File

@@ -1,19 +1,19 @@
{ {
"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}",
"advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.", "advanced_settings_prefer_remote_subtitle": "Certains appareils sont terriblement lents à charger des miniatures à partir de ressources présentes sur l'appareil. Activez ce paramètre pour charger des images distantes à la place.",
"advanced_settings_prefer_remote_title": "Prefer remote images", "advanced_settings_prefer_remote_title": "Préférer les images distantes",
"advanced_settings_tile_subtitle": "Advanced user's settings", "advanced_settings_tile_subtitle": "Paramètres d'utilisateur avancés",
"advanced_settings_tile_title": "Advanced", "advanced_settings_tile_title": "Avancé",
"advanced_settings_troubleshooting_subtitle": "Enable additional features for troubleshooting", "advanced_settings_troubleshooting_subtitle": "Activer des fonctions supplémentaires pour le dépannage",
"advanced_settings_troubleshooting_title": "Troubleshooting", "advanced_settings_troubleshooting_title": "Dépannage",
"album_info_card_backup_album_excluded": "EXCLU", "album_info_card_backup_album_excluded": "EXCLU",
"album_info_card_backup_album_included": "INCLUS", "album_info_card_backup_album_included": "INCLUS",
"album_thumbnail_card_item": "1 élément", "album_thumbnail_card_item": "1 élément",
"album_thumbnail_card_items": "{} éléments", "album_thumbnail_card_items": "{} éléments",
"album_thumbnail_card_shared": " · Partagé", "album_thumbnail_card_shared": " · Partagé",
"album_thumbnail_owned": "Owned", "album_thumbnail_owned": "Possédé",
"album_thumbnail_shared_by": "Shared by {}", "album_thumbnail_shared_by": "Partagé par {}",
"album_viewer_appbar_share_delete": "Supprimer l'album", "album_viewer_appbar_share_delete": "Supprimer l'album",
"album_viewer_appbar_share_err_delete": "Échec de la suppression de l'album", "album_viewer_appbar_share_err_delete": "Échec de la suppression de l'album",
"album_viewer_appbar_share_err_leave": "Impossible de quitter l'album", "album_viewer_appbar_share_err_leave": "Impossible de quitter l'album",
@@ -22,12 +22,12 @@
"album_viewer_appbar_share_leave": "Quitter l'album", "album_viewer_appbar_share_leave": "Quitter l'album",
"album_viewer_appbar_share_remove": "Retirer de l'album", "album_viewer_appbar_share_remove": "Retirer de l'album",
"album_viewer_page_share_add_users": "Ajouter des utilisateurs", "album_viewer_page_share_add_users": "Ajouter des utilisateurs",
"all_people_page_title": "People", "all_people_page_title": "Personnes",
"all_videos_page_title": "Videos", "all_videos_page_title": "Vidéos",
"archive_page_no_archived_assets": "No archived assets found", "archive_page_no_archived_assets": "Aucun élément archivé n'a été trouvé",
"archive_page_title": "Archive ({})", "archive_page_title": "Archive ({})",
"asset_list_layout_settings_dynamic_layout_title": "Affichage dynamique", "asset_list_layout_settings_dynamic_layout_title": "Affichage dynamique",
"asset_list_layout_settings_group_automatically": "Automatic", "asset_list_layout_settings_group_automatically": "Automatique",
"asset_list_layout_settings_group_by": "Grouper les éléments par", "asset_list_layout_settings_group_by": "Grouper les éléments par",
"asset_list_layout_settings_group_by_month": "Mois", "asset_list_layout_settings_group_by_month": "Mois",
"asset_list_layout_settings_group_by_month_day": "Mois + jour", "asset_list_layout_settings_group_by_month_day": "Mois + jour",
@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Transfert des informations du fichier", "backup_controller_page_uploading_file_info": "Transfert des informations du fichier",
"backup_err_only_album": "Impossible de retirer le seul album", "backup_err_only_album": "Impossible de retirer le seul album",
"backup_info_card_assets": "éléments", "backup_info_card_assets": "éléments",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Miniatures de la page bibliothèque ({} éléments)", "cache_settings_album_thumbnails": "Miniatures de la page bibliothèque ({} éléments)",
"cache_settings_clear_cache_button": "Effacer le cache", "cache_settings_clear_cache_button": "Effacer le cache",
"cache_settings_clear_cache_button_title": "Efface le cache de l'application. Cela aura un impact significatif sur les performances de l'application jusqu'à ce que le cache soit reconstruit.", "cache_settings_clear_cache_button_title": "Efface le cache de l'application. Cela aura un impact significatif sur les performances de l'application jusqu'à ce que le cache soit reconstruit.",
@@ -113,7 +118,7 @@
"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": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.", "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é",
"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",
@@ -123,14 +128,14 @@
"control_bottom_app_bar_delete": "Supprimer", "control_bottom_app_bar_delete": "Supprimer",
"control_bottom_app_bar_favorite": "Favoris", "control_bottom_app_bar_favorite": "Favoris",
"control_bottom_app_bar_share": "Partager", "control_bottom_app_bar_share": "Partager",
"control_bottom_app_bar_unarchive": "Unarchive", "control_bottom_app_bar_unarchive": "Désarchiver",
"create_album_page_untitled": "Sans titre", "create_album_page_untitled": "Sans titre",
"create_shared_album_page_create": "Créer", "create_shared_album_page_create": "Créer",
"create_shared_album_page_share": "Partager", "create_shared_album_page_share": "Partager",
"create_shared_album_page_share_add_assets": "AJOUTER DES ÉLÉMENTS", "create_shared_album_page_share_add_assets": "AJOUTER DES ÉLÉMENTS",
"create_shared_album_page_share_select_photos": "Sélectionner les photos", "create_shared_album_page_share_select_photos": "Sélectionner les photos",
"curated_location_page_title": "Places", "curated_location_page_title": "Places",
"curated_object_page_title": "Things", "curated_object_page_title": "Objets",
"daily_title_text_date": "E, dd MMM", "daily_title_text_date": "E, dd MMM",
"daily_title_text_date_year": "E, dd MMM, yyyy", "daily_title_text_date_year": "E, dd MMM, yyyy",
"date_format": "E, LLL d, y • h:mm a", "date_format": "E, LLL d, y • h:mm a",
@@ -138,8 +143,8 @@
"delete_dialog_cancel": "Annuler", "delete_dialog_cancel": "Annuler",
"delete_dialog_ok": "Supprimer", "delete_dialog_ok": "Supprimer",
"delete_dialog_title": "Supprimer définitivement", "delete_dialog_title": "Supprimer définitivement",
"description_input_hint_text": "Add description...", "description_input_hint_text": "Ajouter une description...",
"description_input_submit_error": "Error updating description, check the log for more details", "description_input_submit_error": "Erreur de mise à jour de la description, vérifier le journal pour plus de détails",
"exif_bottom_sheet_description": "Ajouter une description...", "exif_bottom_sheet_description": "Ajouter une description...",
"exif_bottom_sheet_details": "DÉTAILS", "exif_bottom_sheet_details": "DÉTAILS",
"exif_bottom_sheet_location": "LOCALISATION", "exif_bottom_sheet_location": "LOCALISATION",
@@ -147,94 +152,96 @@
"experimental_settings_new_asset_list_title": "Activer la grille de photos expérimentale", "experimental_settings_new_asset_list_title": "Activer la grille de photos expérimentale",
"experimental_settings_subtitle": "Utilisez à vos dépends !", "experimental_settings_subtitle": "Utilisez à vos dépends !",
"experimental_settings_title": "Expérimental", "experimental_settings_title": "Expérimental",
"favorites_page_no_favorites": "No favorite assets found", "favorites_page_no_favorites": "Aucun élément favori n'a été trouvé",
"favorites_page_title": "Favoris", "favorites_page_title": "Favoris",
"home_page_add_to_album_conflicts": "{added} éléments ajoutés à l'album {album}. Les éléments {failed} sont déjà dans l'album.", "home_page_add_to_album_conflicts": "{added} éléments ajoutés à l'album {album}. Les éléments {failed} sont déjà dans l'album.",
"home_page_add_to_album_err_local": "Impossible d'ajouter des éléments locaux aux albums pour le moment, étape ignorée", "home_page_add_to_album_err_local": "Impossible d'ajouter des éléments locaux aux albums pour le moment, étape ignorée",
"home_page_add_to_album_success": "{added} éléments ajoutés à l'album {album}.", "home_page_add_to_album_success": "{added} éléments ajoutés à l'album {album}.",
"home_page_archive_err_local": "Can not archive local assets yet, skipping", "home_page_archive_err_local": "Impossible d'archiver les ressources locales pour l'instant, étape ignorée",
"home_page_building_timeline": "Construction de la chronologie", "home_page_building_timeline": "Construction de la chronologie",
"home_page_favorite_err_local": "Impossible d'ajouter des éléments locaux aux favoris pour le moment, étape ignorée", "home_page_favorite_err_local": "Impossible d'ajouter des éléments locaux aux favoris pour le moment, étape ignorée",
"home_page_first_time_notice": "Si c'est la première fois que vous utilisez l'application, veillez à choisir un ou plusieurs albums de sauvegarde afin que la chronologie puisse alimenter les photos et les vidéos de cet ou ces albums.", "home_page_first_time_notice": "Si c'est la première fois que vous utilisez l'application, veillez à choisir un ou plusieurs albums de sauvegarde afin que la chronologie puisse alimenter les photos et les vidéos de cet ou ces albums.",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Erreur de téléchargement", "image_viewer_page_state_provider_download_error": "Erreur de téléchargement",
"image_viewer_page_state_provider_download_success": "Téléchargement réussi", "image_viewer_page_state_provider_download_success": "Téléchargement réussi",
"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 sur l'appareil",
"library_page_favorites": "Favoris", "library_page_favorites": "Favoris",
"library_page_new_album": "Nouvel album", "library_page_new_album": "Nouvel album",
"library_page_sharing": "Partage", "library_page_sharing": "Partage",
"library_page_sort_created": "Créations les plus récentes", "library_page_sort_created": "Créations les plus récentes",
"library_page_sort_title": "Titre de l'album", "library_page_sort_title": "Titre de l'album",
"login_form_api_exception": "API exception. Please check the server URL and try again.", "login_disabled": "Login has been disabled",
"login_form_api_exception": "Erreur de l'API. Veuillez vérifier l'URL du serveur et et réessayer.",
"login_form_button_text": "Connexion", "login_form_button_text": "Connexion",
"login_form_email_hint": "votreemail@email.com", "login_form_email_hint": "votreemail@email.com",
"login_form_endpoint_hint": "http://adresse-ip-serveur:port/api", "login_form_endpoint_hint": "http://adresse-ip-serveur:port/api",
"login_form_endpoint_url": "URL du point d'accès au serveur", "login_form_endpoint_url": "URL du point d'accès au serveur",
"login_form_err_http": "Veuillez préciser http:// ou https://", "login_form_err_http": "Veuillez préciser http:// ou https://",
"login_form_err_invalid_email": "Email invalide", "login_form_err_invalid_email": "E-mail invalide",
"login_form_err_invalid_url": "URL invalide", "login_form_err_invalid_url": "URL invalide",
"login_form_err_leading_whitespace": "Espace en début de ligne", "login_form_err_leading_whitespace": "Espace en début de ligne",
"login_form_err_trailing_whitespace": "Espace de fin de ligne", "login_form_err_trailing_whitespace": "Espace de fin de ligne",
"login_form_failed_get_oauth_server_config": "Erreur de connexion par OAuth, vérifiez l\"URL du serveur", "login_form_failed_get_oauth_server_config": "Erreur de connexion par OAuth, vérifiez l\"URL du serveur",
"login_form_failed_get_oauth_server_disable": "La fonctionnalité OAuth n'est pas disponible sur ce serveur", "login_form_failed_get_oauth_server_disable": "La fonctionnalité OAuth n'est pas disponible sur ce serveur",
"login_form_failed_login": "Erreur de connexion, vérifiez l'url du serveur, l'email et le mot de passe", "login_form_failed_login": "Erreur de connexion, vérifiez l'url du serveur, l'email et le mot de passe",
"login_form_label_email": "Email", "login_form_label_email": "E-mail",
"login_form_label_password": "Mot de passe", "login_form_label_password": "Mot de passe",
"login_form_next_button": "Next", "login_form_next_button": "Suivant",
"login_form_password_hint": "mot de passe", "login_form_password_hint": "mot de passe",
"login_form_save_login": "Rester connecté", "login_form_save_login": "Rester connecté",
"login_form_server_empty": "Enter a server URL.", "login_form_server_empty": "Saisissez l'URL du serveur.",
"login_form_server_error": "Could not connect to server.", "login_form_server_error": "Impossible de se connecter au serveur.",
"monthly_title_text_date_format": "MMMM y", "monthly_title_text_date_format": "MMMM y",
"motion_photos_page_title": "Motion Photos", "motion_photos_page_title": "Photos avec mouvement",
"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",
"notification_permission_list_tile_content": "Accordez la permission d'activer les notifications.", "notification_permission_list_tile_content": "Accordez la permission d'activer les notifications.",
"notification_permission_list_tile_enable_button": "Activer les notifications", "notification_permission_list_tile_enable_button": "Activer les notifications",
"notification_permission_list_tile_title": "Permission de notification", "notification_permission_list_tile_title": "Permission de notification",
"partner_page_add_partner": "Add partner", "partner_page_add_partner": "Ajouter un partenaire",
"partner_page_empty_message": "Your photos are not yet shared with any partner.", "partner_page_empty_message": "Vos photos ne sont pas encore partagées avec un partenaire.",
"partner_page_no_more_users": "No more users to add", "partner_page_no_more_users": "Plus d'utilisateurs à ajouter",
"partner_page_partner_add_failed": "Failed to add partner", "partner_page_partner_add_failed": "Échec de l'ajout d'un partenaire",
"partner_page_select_partner": "Select partner", "partner_page_select_partner": "Sélectionner un partenaire",
"partner_page_shared_to_title": "Shared to", "partner_page_shared_to_title": "Partagé avec",
"partner_page_stop_sharing_content": "{} will no longer be able to access your photos.", "partner_page_stop_sharing_content": "{} ne pourra plus accéder à vos photos.",
"partner_page_stop_sharing_title": "Stop sharing your photos?", "partner_page_stop_sharing_title": "Arrêter de partager vos photos ?",
"partner_page_title": "Partner", "partner_page_title": "Partenaire",
"permission_onboarding_continue_anyway": "Continue anyway", "permission_onboarding_continue_anyway": "Continuer quand même",
"permission_onboarding_get_started": "Get started", "permission_onboarding_get_started": "Commencer",
"permission_onboarding_go_to_settings": "Go to settings", "permission_onboarding_go_to_settings": "Accéder aux paramètres",
"permission_onboarding_grant_permission": "Grant permission", "permission_onboarding_grant_permission": "Accorder l'autorisation",
"permission_onboarding_log_out": "Log out", "permission_onboarding_log_out": "Se déconnecter",
"permission_onboarding_permission_denied": "Permission denied. To use Immich, grant photo and video permissions in Settings.", "permission_onboarding_permission_denied": "Permission refusée. Pour utiliser Immich, accordez lautorisation pour les photos et vidéos dans les Paramètres.",
"permission_onboarding_permission_granted": "Permission granted! You are all set.", "permission_onboarding_permission_granted": "Permission accordée ! Vous êtes prêts.",
"permission_onboarding_permission_limited": "Permission limited. To let Immich backup and manage your entire gallery collection, grant photo and video permissions in Settings.", "permission_onboarding_permission_limited": "Permission limitée. Pour permettre à Immich de sauvegarder et de gérer l'ensemble de votre bibliothèque, accordez l'autorisation pour les photos et vidéos dans les Paramètres.",
"permission_onboarding_request": "Immich requires permission to view your photos and videos.", "permission_onboarding_request": "Immich demande l'autorisation de visionner vos photos et vidéo",
"profile_drawer_app_logs": "Journaux", "profile_drawer_app_logs": "Journaux",
"profile_drawer_client_server_up_to_date": "Le client et le serveur sont à jour", "profile_drawer_client_server_up_to_date": "Le client et le serveur sont à jour",
"profile_drawer_settings": "Paramètres", "profile_drawer_settings": "Paramètres",
"profile_drawer_sign_out": "Se déconnecter", "profile_drawer_sign_out": "Se déconnecter",
"recently_added_page_title": "Recently Added", "recently_added_page_title": "Récemment ajouté",
"search_bar_hint": "Rechercher vos photos", "search_bar_hint": "Rechercher vos photos",
"search_page_categories": "Categories", "search_page_categories": "Catégories",
"search_page_favorites": "Favorites", "search_page_favorites": "Favoris",
"search_page_motion_photos": "Motion Photos", "search_page_motion_photos": "Photos avec mouvement",
"search_page_no_objects": "Aucune information disponible sur les objets", "search_page_no_objects": "Aucune information disponible sur les objets",
"search_page_no_places": "Aucune information disponible sur la localisation", "search_page_no_places": "Aucune information disponible sur la localisation",
"search_page_people": "People", "search_page_people": "Personnes",
"search_page_places": "Lieux", "search_page_places": "Lieux",
"search_page_recently_added": "Recently added", "search_page_recently_added": "Récemment ajouté",
"search_page_screenshots": "Screenshots", "search_page_screenshots": "Captures d'écran",
"search_page_selfies": "Selfies", "search_page_selfies": "Selfies",
"search_page_things": "Objets", "search_page_things": "Objets",
"search_page_videos": "Videos", "search_page_videos": "Vidéos",
"search_page_view_all_button": "View all", "search_page_view_all_button": "Voir tout",
"search_page_your_activity": "Your activity", "search_page_your_activity": "Votre activité",
"search_result_page_new_search_hint": "Nouvelle recherche", "search_result_page_new_search_hint": "Nouvelle recherche",
"search_suggestion_list_smart_search_hint_1": "Smart search is enabled by default, to search for metadata use the syntax ", "search_suggestion_list_smart_search_hint_1": "La recherche intelligente est activée par défaut. Pour rechercher des métadonnées, utilisez la syntaxe suivante",
"search_suggestion_list_smart_search_hint_2": "m:your-search-term", "search_suggestion_list_smart_search_hint_2": "m:votre-terme-de-recherche",
"select_additional_user_for_sharing_page_suggestions": "Suggestions", "select_additional_user_for_sharing_page_suggestions": "Suggestions",
"select_user_for_sharing_page_err_album": "Échec de la création de l'album", "select_user_for_sharing_page_err_album": "Échec de la création de l'album",
"select_user_for_sharing_page_share_suggestions": "Suggestions", "select_user_for_sharing_page_share_suggestions": "Suggestions",
@@ -255,7 +262,7 @@
"setting_notifications_single_progress_title": "Afficher la progression du détail de la sauvegarde en arrière-plan", "setting_notifications_single_progress_title": "Afficher la progression du détail de la sauvegarde en arrière-plan",
"setting_notifications_subtitle": "Ajustez vos préférences de notification", "setting_notifications_subtitle": "Ajustez vos préférences de notification",
"setting_notifications_title": "Notifications", "setting_notifications_title": "Notifications",
"setting_notifications_total_progress_subtitle": "Progrès global du transfert (effectué/total des éléments)", "setting_notifications_total_progress_subtitle": "Progression globale du transfert (effectué/total des éléments)",
"setting_notifications_total_progress_title": "Afficher la progression totale de la sauvegarde en arrière-plan", "setting_notifications_total_progress_title": "Afficher la progression totale de la sauvegarde en arrière-plan",
"setting_pages_app_bar_settings": "Paramètres", "setting_pages_app_bar_settings": "Paramètres",
"settings_require_restart": "Veuillez redémarrer Immich pour appliquer ce paramètre", "settings_require_restart": "Veuillez redémarrer Immich pour appliquer ce paramètre",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Thème", "theme_setting_theme_title": "Thème",
"theme_setting_three_stage_loading_subtitle": "Le chargement en trois étapes peut améliorer les performances de chargement, mais entraîne une augmentation significative de la charge du réseau.", "theme_setting_three_stage_loading_subtitle": "Le chargement en trois étapes peut améliorer les performances de chargement, mais entraîne une augmentation significative de la charge du réseau.",
"theme_setting_three_stage_loading_title": "Activer le chargement en trois étapes", "theme_setting_three_stage_loading_title": "Activer le chargement en trois étapes",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Confirmer", "version_announcement_overlay_ack": "Confirmer",
"version_announcement_overlay_release_notes": "notes de mise à jour", "version_announcement_overlay_release_notes": "notes de mise à jour",
"version_announcement_overlay_text_1": "Bonjour, une nouvelle version de", "version_announcement_overlay_text_1": "Bonjour, une nouvelle version de",

View File

@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Uploading file info", "backup_controller_page_uploading_file_info": "Uploading file info",
"backup_err_only_album": "Cannot remove the only album", "backup_err_only_album": "Cannot remove the only album",
"backup_info_card_assets": "assets", "backup_info_card_assets": "assets",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)", "cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
"cache_settings_clear_cache_button": "Clear cache", "cache_settings_clear_cache_button": "Clear cache",
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.", "cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "Building the timeline", "home_page_building_timeline": "Building the timeline",
"home_page_favorite_err_local": "Can not favorite local assets yet, skipping", "home_page_favorite_err_local": "Can not favorite local assets yet, skipping",
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).", "home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Download Error", "image_viewer_page_state_provider_download_error": "Download Error",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_success": "Download Success",
"library_page_albums": "Albums", "library_page_albums": "Albums",
@@ -166,6 +172,7 @@
"library_page_sharing": "Sharing", "library_page_sharing": "Sharing",
"library_page_sort_created": "Most recently created", "library_page_sort_created": "Most recently created",
"library_page_sort_title": "Album title", "library_page_sort_title": "Album title",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API exception. Please check the server URL and try again.", "login_form_api_exception": "API exception. Please check the server URL and try again.",
"login_form_button_text": "Login", "login_form_button_text": "Login",
"login_form_email_hint": "youremail@email.com", "login_form_email_hint": "youremail@email.com",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Theme", "theme_setting_theme_title": "Theme",
"theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load", "theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load",
"theme_setting_three_stage_loading_title": "Enable three-stage loading", "theme_setting_three_stage_loading_title": "Enable three-stage loading",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Acknowledge", "version_announcement_overlay_ack": "Acknowledge",
"version_announcement_overlay_release_notes": "release notes", "version_announcement_overlay_release_notes": "release notes",
"version_announcement_overlay_text_1": "Hi friend, there is a new release of", "version_announcement_overlay_text_1": "Hi friend, there is a new release of",

View File

@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Uploading file info", "backup_controller_page_uploading_file_info": "Uploading file info",
"backup_err_only_album": "Cannot remove the only album", "backup_err_only_album": "Cannot remove the only album",
"backup_info_card_assets": "assets", "backup_info_card_assets": "assets",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)", "cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
"cache_settings_clear_cache_button": "Clear cache", "cache_settings_clear_cache_button": "Clear cache",
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.", "cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "Building the timeline", "home_page_building_timeline": "Building the timeline",
"home_page_favorite_err_local": "Helyi médiát még nem lehet a kedvencek közé tenni. Kihagyjuk.", "home_page_favorite_err_local": "Helyi médiát még nem lehet a kedvencek közé tenni. Kihagyjuk.",
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).", "home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Letöltési Hiba", "image_viewer_page_state_provider_download_error": "Letöltési Hiba",
"image_viewer_page_state_provider_download_success": "Letöltés Sikeres", "image_viewer_page_state_provider_download_success": "Letöltés Sikeres",
"library_page_albums": "Albums", "library_page_albums": "Albums",
@@ -166,6 +172,7 @@
"library_page_sharing": "Sharing", "library_page_sharing": "Sharing",
"library_page_sort_created": "Most recently created", "library_page_sort_created": "Most recently created",
"library_page_sort_title": "Album title", "library_page_sort_title": "Album title",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API hiba. Kérljük, ellenőrid a szerver címét, majd próbáld újra.", "login_form_api_exception": "API hiba. Kérljük, ellenőrid a szerver címét, majd próbáld újra.",
"login_form_button_text": "Login", "login_form_button_text": "Login",
"login_form_email_hint": "youremail@email.com", "login_form_email_hint": "youremail@email.com",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Theme", "theme_setting_theme_title": "Theme",
"theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load", "theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load",
"theme_setting_three_stage_loading_title": "Enable three-stage loading", "theme_setting_three_stage_loading_title": "Enable three-stage loading",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Acknowledge", "version_announcement_overlay_ack": "Acknowledge",
"version_announcement_overlay_release_notes": "release notes", "version_announcement_overlay_release_notes": "release notes",
"version_announcement_overlay_text_1": "Hi friend, there is a new release of", "version_announcement_overlay_text_1": "Hi friend, there is a new release of",

View File

@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Caricando informazioni sul file", "backup_controller_page_uploading_file_info": "Caricando informazioni sul file",
"backup_err_only_album": "Non è possibile rimuovere l'unico album", "backup_err_only_album": "Non è possibile rimuovere l'unico album",
"backup_info_card_assets": "oggetti ", "backup_info_card_assets": "oggetti ",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Anteprime pagine librerie ({} assets)", "cache_settings_album_thumbnails": "Anteprime pagine librerie ({} assets)",
"cache_settings_clear_cache_button": "Cancella cache", "cache_settings_clear_cache_button": "Cancella cache",
"cache_settings_clear_cache_button_title": "Cancella la cache dell'app. Questo impatterà significativamente le prestazioni dell''app fino a quando la cache non sarà rigenerata.", "cache_settings_clear_cache_button_title": "Cancella la cache dell'app. Questo impatterà significativamente le prestazioni dell''app fino a quando la cache non sarà rigenerata.",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "Costruendo il Timeline", "home_page_building_timeline": "Costruendo il Timeline",
"home_page_favorite_err_local": "Non puoi aggiungere tra i preferiti le foto ancora non caricate", "home_page_favorite_err_local": "Non puoi aggiungere tra i preferiti le foto ancora non caricate",
"home_page_first_time_notice": "Se è la prima volta che usi l'app, assicurati di scegliere gli album per avere il Timeline con immagini e video", "home_page_first_time_notice": "Se è la prima volta che usi l'app, assicurati di scegliere gli album per avere il Timeline con immagini e video",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Errore nel Download", "image_viewer_page_state_provider_download_error": "Errore nel Download",
"image_viewer_page_state_provider_download_success": "Download con successo", "image_viewer_page_state_provider_download_success": "Download con successo",
"library_page_albums": "Album", "library_page_albums": "Album",
@@ -166,6 +172,7 @@
"library_page_sharing": "Condividendo", "library_page_sharing": "Condividendo",
"library_page_sort_created": "Creato il più recente", "library_page_sort_created": "Creato il più recente",
"library_page_sort_title": "Titolo album", "library_page_sort_title": "Titolo album",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API error, per favore ricontrolli URL del server e riprovi", "login_form_api_exception": "API error, per favore ricontrolli URL del server e riprovi",
"login_form_button_text": "Login", "login_form_button_text": "Login",
"login_form_email_hint": "tuaemail@email.com", "login_form_email_hint": "tuaemail@email.com",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Tema", "theme_setting_theme_title": "Tema",
"theme_setting_three_stage_loading_subtitle": "Il caricamento a tre stage aumenterà le performance di caricamento ma anche il consumo di banda", "theme_setting_three_stage_loading_subtitle": "Il caricamento a tre stage aumenterà le performance di caricamento ma anche il consumo di banda",
"theme_setting_three_stage_loading_title": "Abilita il caricamento a tre stage", "theme_setting_three_stage_loading_title": "Abilita il caricamento a tre stage",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Presa visione", "version_announcement_overlay_ack": "Presa visione",
"version_announcement_overlay_release_notes": "note di rilascio ", "version_announcement_overlay_release_notes": "note di rilascio ",
"version_announcement_overlay_text_1": "Ciao, c'è una nuova versione di", "version_announcement_overlay_text_1": "Ciao, c'è una nuova versione di",

View File

@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "アップロード中のファイル", "backup_controller_page_uploading_file_info": "アップロード中のファイル",
"backup_err_only_album": "最低1つのアルバムを選択してください", "backup_err_only_album": "最低1つのアルバムを選択してください",
"backup_info_card_assets": "写真と動画", "backup_info_card_assets": "写真と動画",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "ライブラリのサムネイル ({}枚)", "cache_settings_album_thumbnails": "ライブラリのサムネイル ({}枚)",
"cache_settings_clear_cache_button": "キャッシュをクリア", "cache_settings_clear_cache_button": "キャッシュをクリア",
"cache_settings_clear_cache_button_title": "キャッシュを削除(キャッシュ再生成までアプリのパフォーマンスが著しく低下)", "cache_settings_clear_cache_button_title": "キャッシュを削除(キャッシュ再生成までアプリのパフォーマンスが著しく低下)",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "タイムライン構築中", "home_page_building_timeline": "タイムライン構築中",
"home_page_favorite_err_local": "まだアップロードされてない項目はお気に入り登録できません", "home_page_favorite_err_local": "まだアップロードされてない項目はお気に入り登録できません",
"home_page_first_time_notice": "はじめてアプリを使う場合、タイムラインに写真を表示するためにアルバムを選択してください", "home_page_first_time_notice": "はじめてアプリを使う場合、タイムラインに写真を表示するためにアルバムを選択してください",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "ダウンロード失敗", "image_viewer_page_state_provider_download_error": "ダウンロード失敗",
"image_viewer_page_state_provider_download_success": "ダウンロード成功", "image_viewer_page_state_provider_download_success": "ダウンロード成功",
"library_page_albums": "アルバム", "library_page_albums": "アルバム",
@@ -166,6 +172,7 @@
"library_page_sharing": "共有中", "library_page_sharing": "共有中",
"library_page_sort_created": "作成日時", "library_page_sort_created": "作成日時",
"library_page_sort_title": "アルバム名", "library_page_sort_title": "アルバム名",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "APIエラー。URLをチェックしてもう一度試してください", "login_form_api_exception": "APIエラー。URLをチェックしてもう一度試してください",
"login_form_button_text": "ログイン", "login_form_button_text": "ログイン",
"login_form_email_hint": "hoge@email.com", "login_form_email_hint": "hoge@email.com",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "テーマ", "theme_setting_theme_title": "テーマ",
"theme_setting_three_stage_loading_subtitle": "三段階読み込みを有効にするとパフォーマンスが改善する可能性がありますが、ネットワーク負荷が著しく増加します", "theme_setting_three_stage_loading_subtitle": "三段階読み込みを有効にするとパフォーマンスが改善する可能性がありますが、ネットワーク負荷が著しく増加します",
"theme_setting_three_stage_loading_title": "三段階読み込みをオンにする", "theme_setting_three_stage_loading_title": "三段階読み込みをオンにする",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "了解", "version_announcement_overlay_ack": "了解",
"version_announcement_overlay_release_notes": "更新情報", "version_announcement_overlay_release_notes": "更新情報",
"version_announcement_overlay_text_1": "こんにちは、またはこんばんは!新しい", "version_announcement_overlay_text_1": "こんにちは、またはこんばんは!新しい",

View File

@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "파일 정보 업로드 중", "backup_controller_page_uploading_file_info": "파일 정보 업로드 중",
"backup_err_only_album": "유일한 앨범은 제거할 수 없습니다", "backup_err_only_album": "유일한 앨범은 제거할 수 없습니다",
"backup_info_card_assets": "미디어", "backup_info_card_assets": "미디어",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "라이브러리 페이지 썸네일 ({} 미디어)", "cache_settings_album_thumbnails": "라이브러리 페이지 썸네일 ({} 미디어)",
"cache_settings_clear_cache_button": "캐시 지우기", "cache_settings_clear_cache_button": "캐시 지우기",
"cache_settings_clear_cache_button_title": "앱의 캐시를 지웁니다. 이 작업은 캐시가 다시 빌드될 때까지 앱의 성능에 상당한 영향을 미칩니다.", "cache_settings_clear_cache_button_title": "앱의 캐시를 지웁니다. 이 작업은 캐시가 다시 빌드될 때까지 앱의 성능에 상당한 영향을 미칩니다.",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "타임라인 생성", "home_page_building_timeline": "타임라인 생성",
"home_page_favorite_err_local": "미디어파일을 즐겨찾기에 추가할 수 없어, 건너뜁니다.", "home_page_favorite_err_local": "미디어파일을 즐겨찾기에 추가할 수 없어, 건너뜁니다.",
"home_page_first_time_notice": "앱을 처음 사용하는 경우 타임라인이 앨범의 사진과 비디오를 채울 수 있도록 백업대상 앨범을 선택해야 합니다.", "home_page_first_time_notice": "앱을 처음 사용하는 경우 타임라인이 앨범의 사진과 비디오를 채울 수 있도록 백업대상 앨범을 선택해야 합니다.",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "다운로드 에러", "image_viewer_page_state_provider_download_error": "다운로드 에러",
"image_viewer_page_state_provider_download_success": "다운로드 완료", "image_viewer_page_state_provider_download_success": "다운로드 완료",
"library_page_albums": "앨범", "library_page_albums": "앨범",
@@ -166,6 +172,7 @@
"library_page_sharing": "공유", "library_page_sharing": "공유",
"library_page_sort_created": "최근생성일", "library_page_sort_created": "최근생성일",
"library_page_sort_title": "앨범 제목", "library_page_sort_title": "앨범 제목",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API exception. Please check the server URL and try again.", "login_form_api_exception": "API exception. Please check the server URL and try again.",
"login_form_button_text": "로그인", "login_form_button_text": "로그인",
"login_form_email_hint": "youremail@email.com", "login_form_email_hint": "youremail@email.com",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "테마", "theme_setting_theme_title": "테마",
"theme_setting_three_stage_loading_subtitle": "이 기능은 로딩 성능을 향상시킬 수 있지만 훨씬 더 많은 데이터를 사용합니다.", "theme_setting_three_stage_loading_subtitle": "이 기능은 로딩 성능을 향상시킬 수 있지만 훨씬 더 많은 데이터를 사용합니다.",
"theme_setting_three_stage_loading_title": "3단계 로딩 활성화", "theme_setting_three_stage_loading_title": "3단계 로딩 활성화",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "승인", "version_announcement_overlay_ack": "승인",
"version_announcement_overlay_release_notes": "릴리스 정보", "version_announcement_overlay_release_notes": "릴리스 정보",
"version_announcement_overlay_text_1": "안녕하세요!", "version_announcement_overlay_text_1": "안녕하세요!",

View File

@@ -1,8 +1,8 @@
{ {
"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}",
"advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.", "advanced_settings_prefer_remote_subtitle": "Dažās ierīcēs sīktēli no ierīcē esošajiem resursiem tiek ielādēti ļoti lēni. Aktivizējiet šo iestatījumu, lai tā vietā ielādētu attālus attēlus.",
"advanced_settings_prefer_remote_title": "Prefer remote images", "advanced_settings_prefer_remote_title": "Dot priekšroku attāliem attēliem",
"advanced_settings_tile_subtitle": "Lietotāja papildu iestatījumi", "advanced_settings_tile_subtitle": "Lietotāja papildu iestatījumi",
"advanced_settings_tile_title": "Papildu", "advanced_settings_tile_title": "Papildu",
"advanced_settings_troubleshooting_subtitle": "Iespējot papildu aktīvus problēmu novēršanai", "advanced_settings_troubleshooting_subtitle": "Iespējot papildu aktīvus problēmu novēršanai",
@@ -22,7 +22,7 @@
"album_viewer_appbar_share_leave": "Pamest albumu", "album_viewer_appbar_share_leave": "Pamest albumu",
"album_viewer_appbar_share_remove": "Noņemt no albuma", "album_viewer_appbar_share_remove": "Noņemt no albuma",
"album_viewer_page_share_add_users": "Pievienot lietotājus", "album_viewer_page_share_add_users": "Pievienot lietotājus",
"all_people_page_title": "People", "all_people_page_title": "Cilvēki",
"all_videos_page_title": "Videoklipi", "all_videos_page_title": "Videoklipi",
"archive_page_no_archived_assets": "Nav atrasts neviens arhivēts aktīvs", "archive_page_no_archived_assets": "Nav atrasts neviens arhivēts aktīvs",
"archive_page_title": "Arhīvs ({})", "archive_page_title": "Arhīvs ({})",
@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Faila informācijas augšupielāde", "backup_controller_page_uploading_file_info": "Faila informācijas augšupielāde",
"backup_err_only_album": "Nevar noņemt vienīgo albumu", "backup_err_only_album": "Nevar noņemt vienīgo albumu",
"backup_info_card_assets": "aktīvi", "backup_info_card_assets": "aktīvi",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Bibliotēkas lapu sīktēli ({} aktīvi)", "cache_settings_album_thumbnails": "Bibliotēkas lapu sīktēli ({} aktīvi)",
"cache_settings_clear_cache_button": "Iztīrīt kešatmiņu", "cache_settings_clear_cache_button": "Iztīrīt kešatmiņu",
"cache_settings_clear_cache_button_title": "Iztīra aplikācijas kešatmiņu. Tas būtiski ietekmēs lietotnes veiktspēju, līdz kešatmiņa būs pārbūvēta.", "cache_settings_clear_cache_button_title": "Iztīra aplikācijas kešatmiņu. Tas būtiski ietekmēs lietotnes veiktspēju, līdz kešatmiņa būs pārbūvēta.",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "Tiek izveidota laika skala", "home_page_building_timeline": "Tiek izveidota laika skala",
"home_page_favorite_err_local": "Vēl nevar pievienot izlaisei vietējos aktīvus, notiek izlaišana", "home_page_favorite_err_local": "Vēl nevar pievienot izlaisei vietējos aktīvus, notiek izlaišana",
"home_page_first_time_notice": "Ja šī ir pirmā reize, kad izmantojat aplikāciju, lūdzu, izvēlieties dublējuma albumu(s), lai laika skala varētu aizpildīt fotoattēlus un videoklipus albumā(os).", "home_page_first_time_notice": "Ja šī ir pirmā reize, kad izmantojat aplikāciju, lūdzu, izvēlieties dublējuma albumu(s), lai laika skala varētu aizpildīt fotoattēlus un videoklipus albumā(os).",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Lejupielādes Kļūda", "image_viewer_page_state_provider_download_error": "Lejupielādes Kļūda",
"image_viewer_page_state_provider_download_success": "Lejupielāde Izdevās", "image_viewer_page_state_provider_download_success": "Lejupielāde Izdevās",
"library_page_albums": "Albums", "library_page_albums": "Albums",
@@ -166,6 +172,7 @@
"library_page_sharing": "Kopīgošana", "library_page_sharing": "Kopīgošana",
"library_page_sort_created": "Jaunākais izveidotais", "library_page_sort_created": "Jaunākais izveidotais",
"library_page_sort_title": "Albuma virsraksts", "library_page_sort_title": "Albuma virsraksts",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API izņēmums. Lūdzu, pārbaudiet servera URL un mēģiniet vēlreiz.", "login_form_api_exception": "API izņēmums. Lūdzu, pārbaudiet servera URL un mēģiniet vēlreiz.",
"login_form_button_text": "Pieteikties", "login_form_button_text": "Pieteikties",
"login_form_email_hint": "jūsuepasts@email.com", "login_form_email_hint": "jūsuepasts@email.com",
@@ -194,15 +201,15 @@
"notification_permission_list_tile_content": "Piešķirt atļauju, lai iespējotu paziņojumus.", "notification_permission_list_tile_content": "Piešķirt atļauju, lai iespējotu paziņojumus.",
"notification_permission_list_tile_enable_button": "Iespējot Paziņojumus", "notification_permission_list_tile_enable_button": "Iespējot Paziņojumus",
"notification_permission_list_tile_title": "Paziņojumu Atļaujas", "notification_permission_list_tile_title": "Paziņojumu Atļaujas",
"partner_page_add_partner": "Add partner", "partner_page_add_partner": "Pievienot partneri",
"partner_page_empty_message": "Your photos are not yet shared with any partner.", "partner_page_empty_message": "Jūsu fotogrāfijas pagaidām nav kopīgotas ar nevienu partneri.",
"partner_page_no_more_users": "No more users to add", "partner_page_no_more_users": "Nav vairs lietotāju, kurus var pievienot",
"partner_page_partner_add_failed": "Failed to add partner", "partner_page_partner_add_failed": "Neizdevās pievienot partneri",
"partner_page_select_partner": "Select partner", "partner_page_select_partner": "Izvēlēties partneri",
"partner_page_shared_to_title": "Shared to", "partner_page_shared_to_title": "Kopīgots uz",
"partner_page_stop_sharing_content": "{} will no longer be able to access your photos.", "partner_page_stop_sharing_content": "{} vairs nevarēs piekļūt jūsu fotoattēliem.",
"partner_page_stop_sharing_title": "Stop sharing your photos?", "partner_page_stop_sharing_title": "Beigt kopīgot jūsu fotogrāfijas?",
"partner_page_title": "Partner", "partner_page_title": "Partneris",
"permission_onboarding_continue_anyway": "Tomēr turpināt", "permission_onboarding_continue_anyway": "Tomēr turpināt",
"permission_onboarding_get_started": "Darba sākšana", "permission_onboarding_get_started": "Darba sākšana",
"permission_onboarding_go_to_settings": "Doties uz iestatījumiem", "permission_onboarding_go_to_settings": "Doties uz iestatījumiem",
@@ -223,7 +230,7 @@
"search_page_motion_photos": "Kustību Fotoattēli", "search_page_motion_photos": "Kustību Fotoattēli",
"search_page_no_objects": "Informācija par Objektiem nav pieejama", "search_page_no_objects": "Informācija par Objektiem nav pieejama",
"search_page_no_places": "Nav pieejama Informācija par Vietām", "search_page_no_places": "Nav pieejama Informācija par Vietām",
"search_page_people": "People", "search_page_people": "Cilvēki",
"search_page_places": "Vietas", "search_page_places": "Vietas",
"search_page_recently_added": "Nesen Pievienotais", "search_page_recently_added": "Nesen Pievienotais",
"search_page_screenshots": "Ekrānuzņēmumi", "search_page_screenshots": "Ekrānuzņēmumi",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Dizains", "theme_setting_theme_title": "Dizains",
"theme_setting_three_stage_loading_subtitle": "Trīspakāpju ielāde var palielināt ielādēšanas veiktspēju, bet izraisa ievērojami lielāku tīkla noslodzi", "theme_setting_three_stage_loading_subtitle": "Trīspakāpju ielāde var palielināt ielādēšanas veiktspēju, bet izraisa ievērojami lielāku tīkla noslodzi",
"theme_setting_three_stage_loading_title": "Iespējot trīspakāpju ielādi", "theme_setting_three_stage_loading_title": "Iespējot trīspakāpju ielādi",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Atzīt", "version_announcement_overlay_ack": "Atzīt",
"version_announcement_overlay_release_notes": "informācija par laidienu", "version_announcement_overlay_release_notes": "informācija par laidienu",
"version_announcement_overlay_text_1": "Sveiks draugs, ir jauns izlaidums no", "version_announcement_overlay_text_1": "Sveiks draugs, ir jauns izlaidums no",

View File

@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Uploading file info", "backup_controller_page_uploading_file_info": "Uploading file info",
"backup_err_only_album": "Cannot remove the only album", "backup_err_only_album": "Cannot remove the only album",
"backup_info_card_assets": "assets", "backup_info_card_assets": "assets",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)", "cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
"cache_settings_clear_cache_button": "Clear cache", "cache_settings_clear_cache_button": "Clear cache",
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.", "cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "Building the timeline", "home_page_building_timeline": "Building the timeline",
"home_page_favorite_err_local": "Can not favorite local assets yet, skipping", "home_page_favorite_err_local": "Can not favorite local assets yet, skipping",
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).", "home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Download Error", "image_viewer_page_state_provider_download_error": "Download Error",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_success": "Download Success",
"library_page_albums": "Albums", "library_page_albums": "Albums",
@@ -166,6 +172,7 @@
"library_page_sharing": "Sharing", "library_page_sharing": "Sharing",
"library_page_sort_created": "Most recently created", "library_page_sort_created": "Most recently created",
"library_page_sort_title": "Album title", "library_page_sort_title": "Album title",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API exception. Please check the server URL and try again.", "login_form_api_exception": "API exception. Please check the server URL and try again.",
"login_form_button_text": "Login", "login_form_button_text": "Login",
"login_form_email_hint": "youremail@email.com", "login_form_email_hint": "youremail@email.com",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Theme", "theme_setting_theme_title": "Theme",
"theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load", "theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load",
"theme_setting_three_stage_loading_title": "Enable three-stage loading", "theme_setting_three_stage_loading_title": "Enable three-stage loading",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Acknowledge", "version_announcement_overlay_ack": "Acknowledge",
"version_announcement_overlay_release_notes": "release notes", "version_announcement_overlay_release_notes": "release notes",
"version_announcement_overlay_text_1": "Hi friend, there is a new release of", "version_announcement_overlay_text_1": "Hi friend, there is a new release of",

View File

@@ -1,8 +1,8 @@
{ {
"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}",
"advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.", "advanced_settings_prefer_remote_subtitle": "Noen enheter er veldige trege til å hente mikrobilder fra enheten. Aktiver denne innstillingen for å hente de eksternt istedenfor.",
"advanced_settings_prefer_remote_title": "Prefer remote images", "advanced_settings_prefer_remote_title": "Foretrekk eksterne bilder",
"advanced_settings_tile_subtitle": "Avanserte brukerinnstillinger", "advanced_settings_tile_subtitle": "Avanserte brukerinnstillinger",
"advanced_settings_tile_title": "Avansert", "advanced_settings_tile_title": "Avansert",
"advanced_settings_troubleshooting_subtitle": "Aktiver ekstra funksjoner for feilsøking", "advanced_settings_troubleshooting_subtitle": "Aktiver ekstra funksjoner for feilsøking",
@@ -22,7 +22,7 @@
"album_viewer_appbar_share_leave": "Forlat album", "album_viewer_appbar_share_leave": "Forlat album",
"album_viewer_appbar_share_remove": "Fjern fra album", "album_viewer_appbar_share_remove": "Fjern fra album",
"album_viewer_page_share_add_users": "Legg til brukere", "album_viewer_page_share_add_users": "Legg til brukere",
"all_people_page_title": "People", "all_people_page_title": "Folk",
"all_videos_page_title": "Videoer", "all_videos_page_title": "Videoer",
"archive_page_no_archived_assets": "Ingen arkiverte objekter funnet", "archive_page_no_archived_assets": "Ingen arkiverte objekter funnet",
"archive_page_title": "Arkiv ({})", "archive_page_title": "Arkiv ({})",
@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Laster opp filinformasjon", "backup_controller_page_uploading_file_info": "Laster opp filinformasjon",
"backup_err_only_album": "Kan ikke fjerne det eneste albumet", "backup_err_only_album": "Kan ikke fjerne det eneste albumet",
"backup_info_card_assets": "objekter", "backup_info_card_assets": "objekter",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Feilet",
"backup_manual_in_progress": "Opplasting er allerede i gang. Prøv igjen om litt",
"backup_manual_success": "Vellykket",
"backup_manual_title": "Opplastingsstatus",
"cache_settings_album_thumbnails": "Bibliotekminiatyrbilder ({} objekter)", "cache_settings_album_thumbnails": "Bibliotekminiatyrbilder ({} objekter)",
"cache_settings_clear_cache_button": "Tøm buffer", "cache_settings_clear_cache_button": "Tøm buffer",
"cache_settings_clear_cache_button_title": "Tømmer app-ens buffer. Dette vil ha betydelig innvirkning på appens ytelse inntil bufferen er gjenoppbygd.", "cache_settings_clear_cache_button_title": "Tømmer app-ens buffer. Dette vil ha betydelig innvirkning på appens ytelse inntil bufferen er gjenoppbygd.",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "Genererer tidslinjen", "home_page_building_timeline": "Genererer tidslinjen",
"home_page_favorite_err_local": "Kan ikke sette favoritt på lokale objekter enda, hopper over", "home_page_favorite_err_local": "Kan ikke sette favoritt på lokale objekter enda, hopper over",
"home_page_first_time_notice": "Hvis dette er første gangen du benytter appen, velg et album (eller flere) for sikkerhetskopiering, slik at tidslinjen kan fylles med dine bilder og videoer.", "home_page_first_time_notice": "Hvis dette er første gangen du benytter appen, velg et album (eller flere) for sikkerhetskopiering, slik at tidslinjen kan fylles med dine bilder og videoer.",
"home_page_upload_err_limit": "Maksimalt 30 objekter kan lastes opp om gangen, hopper over",
"image_viewer_page_state_provider_download_error": "Nedlasting feilet", "image_viewer_page_state_provider_download_error": "Nedlasting feilet",
"image_viewer_page_state_provider_download_success": "Nedlasting vellykket", "image_viewer_page_state_provider_download_success": "Nedlasting vellykket",
"library_page_albums": "Albumer", "library_page_albums": "Albumer",
@@ -166,6 +172,7 @@
"library_page_sharing": "Deling", "library_page_sharing": "Deling",
"library_page_sort_created": "Nylig opplastet", "library_page_sort_created": "Nylig opplastet",
"library_page_sort_title": "Albumtittel", "library_page_sort_title": "Albumtittel",
"login_disabled": "Innlogging har blitt deaktivert",
"login_form_api_exception": "API-feil. Sjekk URL-en til serveren og prøv igjen.", "login_form_api_exception": "API-feil. Sjekk URL-en til serveren og prøv igjen.",
"login_form_button_text": "Logg inn", "login_form_button_text": "Logg inn",
"login_form_email_hint": "dinepost@epost.no", "login_form_email_hint": "dinepost@epost.no",
@@ -194,14 +201,14 @@
"notification_permission_list_tile_content": "Gi tilgang for å aktivere notifikasjoner", "notification_permission_list_tile_content": "Gi tilgang for å aktivere notifikasjoner",
"notification_permission_list_tile_enable_button": "Aktiver notifikasjoner", "notification_permission_list_tile_enable_button": "Aktiver notifikasjoner",
"notification_permission_list_tile_title": "Notifikasjonstilgang", "notification_permission_list_tile_title": "Notifikasjonstilgang",
"partner_page_add_partner": "Add partner", "partner_page_add_partner": "Legg til partner",
"partner_page_empty_message": "Your photos are not yet shared with any partner.", "partner_page_empty_message": "Dine bilder deles ikke med noen partner.",
"partner_page_no_more_users": "No more users to add", "partner_page_no_more_users": "Ingen flere brukere å legge til",
"partner_page_partner_add_failed": "Failed to add partner", "partner_page_partner_add_failed": "Klarte ikke å legge til partner",
"partner_page_select_partner": "Select partner", "partner_page_select_partner": "Velg partner",
"partner_page_shared_to_title": "Shared to", "partner_page_shared_to_title": "Delt med",
"partner_page_stop_sharing_content": "{} will no longer be able to access your photos.", "partner_page_stop_sharing_content": "{} vil ikke lenger ha tilgang til dine bilder.",
"partner_page_stop_sharing_title": "Stop sharing your photos?", "partner_page_stop_sharing_title": "Stopp deling av bildene dine?",
"partner_page_title": "Partner", "partner_page_title": "Partner",
"permission_onboarding_continue_anyway": "Fortsett uansett", "permission_onboarding_continue_anyway": "Fortsett uansett",
"permission_onboarding_get_started": "Kom i gang", "permission_onboarding_get_started": "Kom i gang",
@@ -223,7 +230,7 @@
"search_page_motion_photos": "Bevegelige bilder", "search_page_motion_photos": "Bevegelige bilder",
"search_page_no_objects": "Ingen objektinfo tilgjengelig", "search_page_no_objects": "Ingen objektinfo tilgjengelig",
"search_page_no_places": "Ingen stedsinformasjon er tilgjengelig", "search_page_no_places": "Ingen stedsinformasjon er tilgjengelig",
"search_page_people": "People", "search_page_people": "Folk",
"search_page_places": "Steder", "search_page_places": "Steder",
"search_page_recently_added": "Nylig lagt til", "search_page_recently_added": "Nylig lagt til",
"search_page_screenshots": "Skjermbilder", "search_page_screenshots": "Skjermbilder",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Tema", "theme_setting_theme_title": "Tema",
"theme_setting_three_stage_loading_subtitle": "Tre-trinns innlasting kan øke lasteytelsen, men forårsaker betydelig høyere nettverksbelastning", "theme_setting_three_stage_loading_subtitle": "Tre-trinns innlasting kan øke lasteytelsen, men forårsaker betydelig høyere nettverksbelastning",
"theme_setting_three_stage_loading_title": "Aktiver tre-trinns innlasting", "theme_setting_three_stage_loading_title": "Aktiver tre-trinns innlasting",
"upload_dialog_cancel": "Avbryt",
"upload_dialog_info": "Vil du utføre backup av valgte objekt(er) til serveren?",
"upload_dialog_ok": "Last opp",
"upload_dialog_title": "Last opp objekt",
"version_announcement_overlay_ack": "Bekreft", "version_announcement_overlay_ack": "Bekreft",
"version_announcement_overlay_release_notes": "endringsloggen", "version_announcement_overlay_release_notes": "endringsloggen",
"version_announcement_overlay_text_1": "Hei, det er en ny versjon av", "version_announcement_overlay_text_1": "Hei, det er en ny versjon av",

View File

@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Bestandsgegevens uploaden", "backup_controller_page_uploading_file_info": "Bestandsgegevens uploaden",
"backup_err_only_album": "Kan het enige album niet verwijderen", "backup_err_only_album": "Kan het enige album niet verwijderen",
"backup_info_card_assets": "items", "backup_info_card_assets": "items",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Thumbnails bibliotheekpagina ({} items)", "cache_settings_album_thumbnails": "Thumbnails bibliotheekpagina ({} items)",
"cache_settings_clear_cache_button": "Cache wissen", "cache_settings_clear_cache_button": "Cache wissen",
"cache_settings_clear_cache_button_title": "Wist de cache van de app. Dit zal de presentaties van de app aanzienlijk beïnvloeden totdat de cache opnieuw is opgebouwd.", "cache_settings_clear_cache_button_title": "Wist de cache van de app. Dit zal de presentaties van de app aanzienlijk beïnvloeden totdat de cache opnieuw is opgebouwd.",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "Tijdlijn opbouwen", "home_page_building_timeline": "Tijdlijn opbouwen",
"home_page_favorite_err_local": "Lokale items kunnen nog niet als favoriet worden aangemerkt, overslaan", "home_page_favorite_err_local": "Lokale items kunnen nog niet als favoriet worden aangemerkt, overslaan",
"home_page_first_time_notice": "Als dit de eerste keer is dat je de app gebruikt, zorg er dan voor dat je een back-up album kiest, zodat de tijdlijn gevuld kan worden met foto's en video's uit het album.", "home_page_first_time_notice": "Als dit de eerste keer is dat je de app gebruikt, zorg er dan voor dat je een back-up album kiest, zodat de tijdlijn gevuld kan worden met foto's en video's uit het album.",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Download mislukt", "image_viewer_page_state_provider_download_error": "Download mislukt",
"image_viewer_page_state_provider_download_success": "Download succesvol", "image_viewer_page_state_provider_download_success": "Download succesvol",
"library_page_albums": "Albums", "library_page_albums": "Albums",
@@ -166,6 +172,7 @@
"library_page_sharing": "Gedeeld", "library_page_sharing": "Gedeeld",
"library_page_sort_created": "Meest recent gemaakt", "library_page_sort_created": "Meest recent gemaakt",
"library_page_sort_title": "Albumtitel", "library_page_sort_title": "Albumtitel",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API fout. Controleer de server URL en probeer opnieuw.", "login_form_api_exception": "API fout. Controleer de server URL en probeer opnieuw.",
"login_form_button_text": "Inloggen", "login_form_button_text": "Inloggen",
"login_form_email_hint": "jouwemail@email.com", "login_form_email_hint": "jouwemail@email.com",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Thema", "theme_setting_theme_title": "Thema",
"theme_setting_three_stage_loading_subtitle": "Laden in drie fasen kan de laadprestaties verbeteren, maar veroorzaakt een aanzienlijk hogere netwerkbelasting", "theme_setting_three_stage_loading_subtitle": "Laden in drie fasen kan de laadprestaties verbeteren, maar veroorzaakt een aanzienlijk hogere netwerkbelasting",
"theme_setting_three_stage_loading_title": "Laden in drie fasen inschakelen", "theme_setting_three_stage_loading_title": "Laden in drie fasen inschakelen",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Bevestig", "version_announcement_overlay_ack": "Bevestig",
"version_announcement_overlay_release_notes": "releaseopmerkingen", "version_announcement_overlay_release_notes": "releaseopmerkingen",
"version_announcement_overlay_text_1": "Hoi, er is een nieuwe versie beschikbaar van", "version_announcement_overlay_text_1": "Hoi, er is een nieuwe versie beschikbaar van",

View File

@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Przesyłanie informacji o pliku", "backup_controller_page_uploading_file_info": "Przesyłanie informacji o pliku",
"backup_err_only_album": "Nie można usunąć tylko i wyłącznie albumu", "backup_err_only_album": "Nie można usunąć tylko i wyłącznie albumu",
"backup_info_card_assets": "zasoby", "backup_info_card_assets": "zasoby",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Miniatury stron bibliotek ({} zasobów)", "cache_settings_album_thumbnails": "Miniatury stron bibliotek ({} zasobów)",
"cache_settings_clear_cache_button": "Wyczyść Cache", "cache_settings_clear_cache_button": "Wyczyść Cache",
"cache_settings_clear_cache_button_title": "Czyści pamięć podręczną aplikacji. Wpłynie to znacząco na wydajność aplikacji, dopóki pamięć podręczna nie zostanie odbudowana.", "cache_settings_clear_cache_button_title": "Czyści pamięć podręczną aplikacji. Wpłynie to znacząco na wydajność aplikacji, dopóki pamięć podręczna nie zostanie odbudowana.",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "Building the timeline", "home_page_building_timeline": "Building the timeline",
"home_page_favorite_err_local": "Can not favorite local assets yet, skipping", "home_page_favorite_err_local": "Can not favorite local assets yet, skipping",
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).", "home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Download Error", "image_viewer_page_state_provider_download_error": "Download Error",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_success": "Download Success",
"library_page_albums": "Albumy", "library_page_albums": "Albumy",
@@ -166,6 +172,7 @@
"library_page_sharing": "Sharing", "library_page_sharing": "Sharing",
"library_page_sort_created": "Most recently created", "library_page_sort_created": "Most recently created",
"library_page_sort_title": "Album title", "library_page_sort_title": "Album title",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API exception. Please check the server URL and try again.", "login_form_api_exception": "API exception. Please check the server URL and try again.",
"login_form_button_text": "Login", "login_form_button_text": "Login",
"login_form_email_hint": "twojmail@email.com", "login_form_email_hint": "twojmail@email.com",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Motyw", "theme_setting_theme_title": "Motyw",
"theme_setting_three_stage_loading_subtitle": "Trójstopniowe ładowanie może zwiększyć wydajność ładowania, ale powoduje znacznie większe obciążenie sieci", "theme_setting_three_stage_loading_subtitle": "Trójstopniowe ładowanie może zwiększyć wydajność ładowania, ale powoduje znacznie większe obciążenie sieci",
"theme_setting_three_stage_loading_title": "Włączenie trójstopniowego ładowania", "theme_setting_three_stage_loading_title": "Włączenie trójstopniowego ładowania",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Potwierdzam", "version_announcement_overlay_ack": "Potwierdzam",
"version_announcement_overlay_release_notes": "informacje o wydaniu", "version_announcement_overlay_release_notes": "informacje o wydaniu",
"version_announcement_overlay_text_1": "Cześć przyjacielu, jest nowe wydanie", "version_announcement_overlay_text_1": "Cześć przyjacielu, jest nowe wydanie",

View File

@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Загрузка информации о файле", "backup_controller_page_uploading_file_info": "Загрузка информации о файле",
"backup_err_only_album": "Невозможно удалить единственный альбом", "backup_err_only_album": "Невозможно удалить единственный альбом",
"backup_info_card_assets": "объекты", "backup_info_card_assets": "объекты",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Миниатюры страниц библиотеки ({} объектов)", "cache_settings_album_thumbnails": "Миниатюры страниц библиотеки ({} объектов)",
"cache_settings_clear_cache_button": "Очистить кэш", "cache_settings_clear_cache_button": "Очистить кэш",
"cache_settings_clear_cache_button_title": "Очищает кэш приложения. Это значительно повлияет на производительность приложения, до тех пор, пока кэш не будет перестроен заново.", "cache_settings_clear_cache_button_title": "Очищает кэш приложения. Это значительно повлияет на производительность приложения, до тех пор, пока кэш не будет перестроен заново.",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "Построение временной шкалы", "home_page_building_timeline": "Построение временной шкалы",
"home_page_favorite_err_local": "Пока не удается добавить в избранное локальные объекты, пропускаем", "home_page_favorite_err_local": "Пока не удается добавить в избранное локальные объекты, пропускаем",
"home_page_first_time_notice": "Если вы используете приложение впервые, убедитесь, что вы выбрали резервный(е) альбом(ы), чтобы временная шкала могла заполнить фотографии и видео в альбоме(ах).", "home_page_first_time_notice": "Если вы используете приложение впервые, убедитесь, что вы выбрали резервный(е) альбом(ы), чтобы временная шкала могла заполнить фотографии и видео в альбоме(ах).",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Ошибка загрузки", "image_viewer_page_state_provider_download_error": "Ошибка загрузки",
"image_viewer_page_state_provider_download_success": "Успешно загружено", "image_viewer_page_state_provider_download_success": "Успешно загружено",
"library_page_albums": "Альбомы", "library_page_albums": "Альбомы",
@@ -166,6 +172,7 @@
"library_page_sharing": "Общие", "library_page_sharing": "Общие",
"library_page_sort_created": "По новизне", "library_page_sort_created": "По новизне",
"library_page_sort_title": "По названию альбома", "library_page_sort_title": "По названию альбома",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API exception. Please check the server URL and try again.", "login_form_api_exception": "API exception. Please check the server URL and try again.",
"login_form_button_text": "Войти", "login_form_button_text": "Войти",
"login_form_email_hint": "youremail@email.com", "login_form_email_hint": "youremail@email.com",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Тема", "theme_setting_theme_title": "Тема",
"theme_setting_three_stage_loading_subtitle": "Трехэтапная загрузка может повысить производительность загрузки, но вызывает значительно более высокую нагрузку на сеть", "theme_setting_three_stage_loading_subtitle": "Трехэтапная загрузка может повысить производительность загрузки, но вызывает значительно более высокую нагрузку на сеть",
"theme_setting_three_stage_loading_title": "Включить трехэтапную загрузку", "theme_setting_three_stage_loading_title": "Включить трехэтапную загрузку",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Подтверждение", "version_announcement_overlay_ack": "Подтверждение",
"version_announcement_overlay_release_notes": "примечания к выпуску", "version_announcement_overlay_release_notes": "примечания к выпуску",
"version_announcement_overlay_text_1": "Привет друг, вышел новый релиз", "version_announcement_overlay_text_1": "Привет друг, вышел новый релиз",

View File

@@ -1,8 +1,8 @@
{ {
"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}",
"advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.", "advanced_settings_prefer_remote_subtitle": "Niektoré zariadenia sú extrémne pomalé pre načítavanie miniatúr z fotiek na zariadení. Povoľte toto nastavenie aby sa namiesto toho načítavali obrázky zo servera.",
"advanced_settings_prefer_remote_title": "Prefer remote images", "advanced_settings_prefer_remote_title": "Preferovať vzdialené obrázky",
"advanced_settings_tile_subtitle": "Pokročilé nastavenia používateľa", "advanced_settings_tile_subtitle": "Pokročilé nastavenia používateľa",
"advanced_settings_tile_title": "Pokročilé", "advanced_settings_tile_title": "Pokročilé",
"advanced_settings_troubleshooting_subtitle": "Povoliť ďalšie funkcie pre opravu chýb", "advanced_settings_troubleshooting_subtitle": "Povoliť ďalšie funkcie pre opravu chýb",
@@ -22,7 +22,7 @@
"album_viewer_appbar_share_leave": "Opustiť album", "album_viewer_appbar_share_leave": "Opustiť album",
"album_viewer_appbar_share_remove": "Odstrániť z albumu", "album_viewer_appbar_share_remove": "Odstrániť z albumu",
"album_viewer_page_share_add_users": "Pridať používateľov", "album_viewer_page_share_add_users": "Pridať používateľov",
"all_people_page_title": "People", "all_people_page_title": "Ľudia",
"all_videos_page_title": "Videá", "all_videos_page_title": "Videá",
"archive_page_no_archived_assets": "Žiadne archivované médiá", "archive_page_no_archived_assets": "Žiadne archivované médiá",
"archive_page_title": "Archív ({})", "archive_page_title": "Archív ({})",
@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Nahrávaný súbor", "backup_controller_page_uploading_file_info": "Nahrávaný súbor",
"backup_err_only_album": "Nie je možné odstrániť jediný vybraný album", "backup_err_only_album": "Nie je možné odstrániť jediný vybraný album",
"backup_info_card_assets": "položiek", "backup_info_card_assets": "položiek",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Náhľady stránok knižnice (položiek {})", "cache_settings_album_thumbnails": "Náhľady stránok knižnice (položiek {})",
"cache_settings_clear_cache_button": "Vymazať vyrovnávaciu pamäť", "cache_settings_clear_cache_button": "Vymazať vyrovnávaciu pamäť",
"cache_settings_clear_cache_button_title": "Vymaže vyrovnávaciu pamäť aplikácie. To výrazne ovplyvní výkon aplikácie, kým sa vyrovnávacia pamäť neobnoví.", "cache_settings_clear_cache_button_title": "Vymaže vyrovnávaciu pamäť aplikácie. To výrazne ovplyvní výkon aplikácie, kým sa vyrovnávacia pamäť neobnoví.",
@@ -156,16 +161,18 @@
"home_page_building_timeline": "Vytváranie časovej osi", "home_page_building_timeline": "Vytváranie časovej osi",
"home_page_favorite_err_local": "Zatiaľ nie je možné zaradiť lokálne média medzi obľúbené, preskakuje sa", "home_page_favorite_err_local": "Zatiaľ nie je možné zaradiť lokálne média medzi obľúbené, preskakuje sa",
"home_page_first_time_notice": "Ak aplikáciu používate prvý krát, nezabudnite si vybrať zálohované albumy, aby sa na časovej osi mohli nachádzať fotografie a videá z vybraných albumoch.", "home_page_first_time_notice": "Ak aplikáciu používate prvý krát, nezabudnite si vybrať zálohované albumy, aby sa na časovej osi mohli nachádzať fotografie a videá z vybraných albumoch.",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Chyba sťahovania", "image_viewer_page_state_provider_download_error": "Chyba sťahovania",
"image_viewer_page_state_provider_download_success": "Sťahovanie bolo úspešné", "image_viewer_page_state_provider_download_success": "Sťahovanie bolo úspešné",
"library_page_albums": "Albumy", "library_page_albums": "Albumy",
"library_page_archive": "Archivovať", "library_page_archive": "Archív",
"library_page_device_albums": "Albumy v zariadení", "library_page_device_albums": "Albumy v zariadení",
"library_page_favorites": "Obľúbené", "library_page_favorites": "Obľúbené",
"library_page_new_album": "Nový album", "library_page_new_album": "Nový album",
"library_page_sharing": "Zdieľanie", "library_page_sharing": "Zdieľanie",
"library_page_sort_created": "Najnovšie vytvorené", "library_page_sort_created": "Najnovšie vytvorené",
"library_page_sort_title": "Podľa názvu albumu", "library_page_sort_title": "Podľa názvu albumu",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "Chyba API. Skontrolujte adresu URL servera a skúste to znova.", "login_form_api_exception": "Chyba API. Skontrolujte adresu URL servera a skúste to znova.",
"login_form_button_text": "Prihlásiť sa", "login_form_button_text": "Prihlásiť sa",
"login_form_email_hint": "tvojmail@email.com", "login_form_email_hint": "tvojmail@email.com",
@@ -194,14 +201,14 @@
"notification_permission_list_tile_content": "Udeľte oprávnenie k aktivácii oznámení.", "notification_permission_list_tile_content": "Udeľte oprávnenie k aktivácii oznámení.",
"notification_permission_list_tile_enable_button": "Povoliť upozornenia", "notification_permission_list_tile_enable_button": "Povoliť upozornenia",
"notification_permission_list_tile_title": "Povolenie oznámení", "notification_permission_list_tile_title": "Povolenie oznámení",
"partner_page_add_partner": "Add partner", "partner_page_add_partner": "Pridať partnera",
"partner_page_empty_message": "Your photos are not yet shared with any partner.", "partner_page_empty_message": "Vaše fotky zatiaľ nie sú zdieľané so žiadnym partnerom.",
"partner_page_no_more_users": "No more users to add", "partner_page_no_more_users": "Žiadni ďalší užívatelia na zdieľanie",
"partner_page_partner_add_failed": "Failed to add partner", "partner_page_partner_add_failed": "Pridávanie partnera zlyhalo",
"partner_page_select_partner": "Select partner", "partner_page_select_partner": "Zvoliť partnera",
"partner_page_shared_to_title": "Shared to", "partner_page_shared_to_title": "Zdieľané pre",
"partner_page_stop_sharing_content": "{} will no longer be able to access your photos.", "partner_page_stop_sharing_content": "{} už nebude mať prístup ku vašim fotkám.",
"partner_page_stop_sharing_title": "Stop sharing your photos?", "partner_page_stop_sharing_title": "Zastaviť zdieľanie vašich fotiek?",
"partner_page_title": "Partner", "partner_page_title": "Partner",
"permission_onboarding_continue_anyway": "Pokračovať aj tak", "permission_onboarding_continue_anyway": "Pokračovať aj tak",
"permission_onboarding_get_started": "Začať", "permission_onboarding_get_started": "Začať",
@@ -223,7 +230,7 @@
"search_page_motion_photos": "Pohyblivé fotky", "search_page_motion_photos": "Pohyblivé fotky",
"search_page_no_objects": "Žiadne informácie o objektoch", "search_page_no_objects": "Žiadne informácie o objektoch",
"search_page_no_places": "Žiadne informácie o mieste", "search_page_no_places": "Žiadne informácie o mieste",
"search_page_people": "People", "search_page_people": "Ľudia",
"search_page_places": "Miesta", "search_page_places": "Miesta",
"search_page_recently_added": "Nedávno pridané", "search_page_recently_added": "Nedávno pridané",
"search_page_screenshots": "Snímky obrazovky", "search_page_screenshots": "Snímky obrazovky",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Téma", "theme_setting_theme_title": "Téma",
"theme_setting_three_stage_loading_subtitle": "Trojstupňové načítanie môže zvýšiť výkonnosť načítania, ale vedie k výrazne vyššiemu zaťaženiu siete.", "theme_setting_three_stage_loading_subtitle": "Trojstupňové načítanie môže zvýšiť výkonnosť načítania, ale vedie k výrazne vyššiemu zaťaženiu siete.",
"theme_setting_three_stage_loading_title": "Povolenie trojstupňového načítavania", "theme_setting_three_stage_loading_title": "Povolenie trojstupňového načítavania",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Potvrdiť", "version_announcement_overlay_ack": "Potvrdiť",
"version_announcement_overlay_release_notes": "poznámky k vydaniu", "version_announcement_overlay_release_notes": "poznámky k vydaniu",
"version_announcement_overlay_text_1": "Ahoj, je tu nová verzia", "version_announcement_overlay_text_1": "Ahoj, je tu nová verzia",

View File

@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Uploading file info", "backup_controller_page_uploading_file_info": "Uploading file info",
"backup_err_only_album": "Cannot remove the only album", "backup_err_only_album": "Cannot remove the only album",
"backup_info_card_assets": "assets", "backup_info_card_assets": "assets",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)", "cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
"cache_settings_clear_cache_button": "Clear cache", "cache_settings_clear_cache_button": "Clear cache",
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.", "cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "Building the timeline", "home_page_building_timeline": "Building the timeline",
"home_page_favorite_err_local": "Can not favorite local assets yet, skipping", "home_page_favorite_err_local": "Can not favorite local assets yet, skipping",
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).", "home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Download Error", "image_viewer_page_state_provider_download_error": "Download Error",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_success": "Download Success",
"library_page_albums": "Albums", "library_page_albums": "Albums",
@@ -166,6 +172,7 @@
"library_page_sharing": "Sharing", "library_page_sharing": "Sharing",
"library_page_sort_created": "Most recently created", "library_page_sort_created": "Most recently created",
"library_page_sort_title": "Album title", "library_page_sort_title": "Album title",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API exception. Please check the server URL and try again.", "login_form_api_exception": "API exception. Please check the server URL and try again.",
"login_form_button_text": "Login", "login_form_button_text": "Login",
"login_form_email_hint": "youremail@email.com", "login_form_email_hint": "youremail@email.com",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Theme", "theme_setting_theme_title": "Theme",
"theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load", "theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load",
"theme_setting_three_stage_loading_title": "Enable three-stage loading", "theme_setting_three_stage_loading_title": "Enable three-stage loading",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Acknowledge", "version_announcement_overlay_ack": "Acknowledge",
"version_announcement_overlay_release_notes": "release notes", "version_announcement_overlay_release_notes": "release notes",
"version_announcement_overlay_text_1": "Hi friend, there is a new release of", "version_announcement_overlay_text_1": "Hi friend, there is a new release of",

View File

@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Otpremanje svojstava datoteke", "backup_controller_page_uploading_file_info": "Otpremanje svojstava datoteke",
"backup_err_only_album": "Nemoguće brisanje jedinog albuma", "backup_err_only_album": "Nemoguće brisanje jedinog albuma",
"backup_info_card_assets": "zapisi", "backup_info_card_assets": "zapisi",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Sličice na stranici biblioteke", "cache_settings_album_thumbnails": "Sličice na stranici biblioteke",
"cache_settings_clear_cache_button": "Obriši keš memoriju", "cache_settings_clear_cache_button": "Obriši keš memoriju",
"cache_settings_clear_cache_button_title": "Ova opcija briše keš memoriju aplikacije. Ovo će bitno uticati na performanse aplikacije dok se keš memorija ne učita ponovo.", "cache_settings_clear_cache_button_title": "Ova opcija briše keš memoriju aplikacije. Ovo će bitno uticati na performanse aplikacije dok se keš memorija ne učita ponovo.",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "Kreiranje hronološke linije", "home_page_building_timeline": "Kreiranje hronološke linije",
"home_page_favorite_err_local": "Trenutno nije moguce dodati lokalne zapise u favorite, preskacu se", "home_page_favorite_err_local": "Trenutno nije moguce dodati lokalne zapise u favorite, preskacu se",
"home_page_first_time_notice": "Ako je ovo prvi put da koristite aplikaciju, molimo Vas da odaberete albume koje želite da sačuvate", "home_page_first_time_notice": "Ako je ovo prvi put da koristite aplikaciju, molimo Vas da odaberete albume koje želite da sačuvate",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Preuzimanje Neuspešno", "image_viewer_page_state_provider_download_error": "Preuzimanje Neuspešno",
"image_viewer_page_state_provider_download_success": "Preuzimanje Uspešno", "image_viewer_page_state_provider_download_success": "Preuzimanje Uspešno",
"library_page_albums": "Albumi", "library_page_albums": "Albumi",
@@ -166,6 +172,7 @@
"library_page_sharing": "Deljenje", "library_page_sharing": "Deljenje",
"library_page_sort_created": "Najnovije kreirano", "library_page_sort_created": "Najnovije kreirano",
"library_page_sort_title": "Naziv albuma", "library_page_sort_title": "Naziv albuma",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API exception. Please check the server URL and try again.", "login_form_api_exception": "API exception. Please check the server URL and try again.",
"login_form_button_text": "Prijavi se", "login_form_button_text": "Prijavi se",
"login_form_email_hint": "vašemail@email.com", "login_form_email_hint": "vašemail@email.com",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Teme", "theme_setting_theme_title": "Teme",
"theme_setting_three_stage_loading_subtitle": "Trostepeno učitavanje možda ubrza učitavanje, po cenu potrošnje podataka", "theme_setting_three_stage_loading_subtitle": "Trostepeno učitavanje možda ubrza učitavanje, po cenu potrošnje podataka",
"theme_setting_three_stage_loading_title": "Aktiviraj trostepeno učitavanje", "theme_setting_three_stage_loading_title": "Aktiviraj trostepeno učitavanje",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Priznati", "version_announcement_overlay_ack": "Priznati",
"version_announcement_overlay_release_notes": "novine nove verzije", "version_announcement_overlay_release_notes": "novine nove verzije",
"version_announcement_overlay_text_1": "Ćao, nova verzija", "version_announcement_overlay_text_1": "Ćao, nova verzija",

View File

@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Uploading file info", "backup_controller_page_uploading_file_info": "Uploading file info",
"backup_err_only_album": "Cannot remove the only album", "backup_err_only_album": "Cannot remove the only album",
"backup_info_card_assets": "assets", "backup_info_card_assets": "assets",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)", "cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
"cache_settings_clear_cache_button": "Clear cache", "cache_settings_clear_cache_button": "Clear cache",
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.", "cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "Building the timeline", "home_page_building_timeline": "Building the timeline",
"home_page_favorite_err_local": "Can not favorite local assets yet, skipping", "home_page_favorite_err_local": "Can not favorite local assets yet, skipping",
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).", "home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Download Error", "image_viewer_page_state_provider_download_error": "Download Error",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_success": "Download Success",
"library_page_albums": "Albums", "library_page_albums": "Albums",
@@ -166,6 +172,7 @@
"library_page_sharing": "Sharing", "library_page_sharing": "Sharing",
"library_page_sort_created": "Most recently created", "library_page_sort_created": "Most recently created",
"library_page_sort_title": "Album title", "library_page_sort_title": "Album title",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API exception. Please check the server URL and try again.", "login_form_api_exception": "API exception. Please check the server URL and try again.",
"login_form_button_text": "Login", "login_form_button_text": "Login",
"login_form_email_hint": "youremail@email.com", "login_form_email_hint": "youremail@email.com",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Theme", "theme_setting_theme_title": "Theme",
"theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load", "theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load",
"theme_setting_three_stage_loading_title": "Enable three-stage loading", "theme_setting_three_stage_loading_title": "Enable three-stage loading",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Acknowledge", "version_announcement_overlay_ack": "Acknowledge",
"version_announcement_overlay_release_notes": "release notes", "version_announcement_overlay_release_notes": "release notes",
"version_announcement_overlay_text_1": "Hi friend, there is a new release of", "version_announcement_overlay_text_1": "Hi friend, there is a new release of",

View File

@@ -4,7 +4,7 @@
"advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.", "advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.",
"advanced_settings_prefer_remote_title": "Prefer remote images", "advanced_settings_prefer_remote_title": "Prefer remote images",
"advanced_settings_tile_subtitle": "Advanced user's settings", "advanced_settings_tile_subtitle": "Advanced user's settings",
"advanced_settings_tile_title": "Advanced", "advanced_settings_tile_title": "Avancerad",
"advanced_settings_troubleshooting_subtitle": "Enable additional features for troubleshooting", "advanced_settings_troubleshooting_subtitle": "Enable additional features for troubleshooting",
"advanced_settings_troubleshooting_title": "Troubleshooting", "advanced_settings_troubleshooting_title": "Troubleshooting",
"album_info_card_backup_album_excluded": "EXKLUDERAD", "album_info_card_backup_album_excluded": "EXKLUDERAD",
@@ -25,7 +25,7 @@
"all_people_page_title": "People", "all_people_page_title": "People",
"all_videos_page_title": "Videos", "all_videos_page_title": "Videos",
"archive_page_no_archived_assets": "No archived assets found", "archive_page_no_archived_assets": "No archived assets found",
"archive_page_title": "Archive ({})", "archive_page_title": "Arkivera ({})",
"asset_list_layout_settings_dynamic_layout_title": "Dynamisk layout", "asset_list_layout_settings_dynamic_layout_title": "Dynamisk layout",
"asset_list_layout_settings_group_automatically": "Automatic", "asset_list_layout_settings_group_automatically": "Automatic",
"asset_list_layout_settings_group_by": "Gruppera bilder efter", "asset_list_layout_settings_group_by": "Gruppera bilder efter",
@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Laddar upp filinformation", "backup_controller_page_uploading_file_info": "Laddar upp filinformation",
"backup_err_only_album": "Kan inte ta bort det enda albumet", "backup_err_only_album": "Kan inte ta bort det enda albumet",
"backup_info_card_assets": "objekt", "backup_info_card_assets": "objekt",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Miniatyrbilder för bibliotek ({} bilder och videor)", "cache_settings_album_thumbnails": "Miniatyrbilder för bibliotek ({} bilder och videor)",
"cache_settings_clear_cache_button": "Rensa cacheminnet", "cache_settings_clear_cache_button": "Rensa cacheminnet",
"cache_settings_clear_cache_button_title": "Rensar appens cacheminne. Detta kommer att avsevärt påverka appens prestanda tills cachen har byggts om.", "cache_settings_clear_cache_button_title": "Rensar appens cacheminne. Detta kommer att avsevärt påverka appens prestanda tills cachen har byggts om.",
@@ -138,7 +143,7 @@
"delete_dialog_cancel": "Avbryt", "delete_dialog_cancel": "Avbryt",
"delete_dialog_ok": "Radera", "delete_dialog_ok": "Radera",
"delete_dialog_title": "Radera permanent", "delete_dialog_title": "Radera permanent",
"description_input_hint_text": "Add description...", "description_input_hint_text": "Lägg till beskrivning...",
"description_input_submit_error": "Error updating description, check the log for more details", "description_input_submit_error": "Error updating description, check the log for more details",
"exif_bottom_sheet_description": "Lägg till beskrivning...", "exif_bottom_sheet_description": "Lägg till beskrivning...",
"exif_bottom_sheet_details": "DETALJER", "exif_bottom_sheet_details": "DETALJER",
@@ -156,16 +161,18 @@
"home_page_building_timeline": "Bygger tidslinjen", "home_page_building_timeline": "Bygger tidslinjen",
"home_page_favorite_err_local": "Can not favorite local assets yet, skipping", "home_page_favorite_err_local": "Can not favorite local assets yet, skipping",
"home_page_first_time_notice": "Om det här är första gången du använder appen, välj ett eller flera backup-album så att tidslinjen kan fyllas med foton och videor från albumen.", "home_page_first_time_notice": "Om det här är första gången du använder appen, välj ett eller flera backup-album så att tidslinjen kan fyllas med foton och videor från albumen.",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Download Error", "image_viewer_page_state_provider_download_error": "Download Error",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_success": "Download Success",
"library_page_albums": "Album", "library_page_albums": "Album",
"library_page_archive": "Archive", "library_page_archive": "Arkiv",
"library_page_device_albums": "Albums on Device", "library_page_device_albums": "Albums on Device",
"library_page_favorites": "Favoriter", "library_page_favorites": "Favoriter",
"library_page_new_album": "Nytt album", "library_page_new_album": "Nytt album",
"library_page_sharing": "Delas", "library_page_sharing": "Delas",
"library_page_sort_created": "Senast skapad", "library_page_sort_created": "Senast skapad",
"library_page_sort_title": "Albumtitel", "library_page_sort_title": "Albumtitel",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API exception. Please check the server URL and try again.", "login_form_api_exception": "API exception. Please check the server URL and try again.",
"login_form_button_text": "Logga in", "login_form_button_text": "Logga in",
"login_form_email_hint": "din.email@email.com", "login_form_email_hint": "din.email@email.com",
@@ -194,24 +201,24 @@
"notification_permission_list_tile_content": "Grant permission to enable notifications.", "notification_permission_list_tile_content": "Grant permission to enable notifications.",
"notification_permission_list_tile_enable_button": "Enable Notifications", "notification_permission_list_tile_enable_button": "Enable Notifications",
"notification_permission_list_tile_title": "Notification Permission", "notification_permission_list_tile_title": "Notification Permission",
"partner_page_add_partner": "Add partner", "partner_page_add_partner": "Lägg till partner",
"partner_page_empty_message": "Your photos are not yet shared with any partner.", "partner_page_empty_message": "Your photos are not yet shared with any partner.",
"partner_page_no_more_users": "No more users to add", "partner_page_no_more_users": "No more users to add",
"partner_page_partner_add_failed": "Failed to add partner", "partner_page_partner_add_failed": "Failed to add partner",
"partner_page_select_partner": "Select partner", "partner_page_select_partner": "Select partner",
"partner_page_shared_to_title": "Shared to", "partner_page_shared_to_title": "Shared to",
"partner_page_stop_sharing_content": "{} will no longer be able to access your photos.", "partner_page_stop_sharing_content": "{} will no longer be able to access your photos.",
"partner_page_stop_sharing_title": "Stop sharing your photos?", "partner_page_stop_sharing_title": "Sluta dela dina foton?",
"partner_page_title": "Partner", "partner_page_title": "Partner",
"permission_onboarding_continue_anyway": "Continue anyway", "permission_onboarding_continue_anyway": "Continue anyway",
"permission_onboarding_get_started": "Get started", "permission_onboarding_get_started": "Kom igång",
"permission_onboarding_go_to_settings": "Gå till inställningar", "permission_onboarding_go_to_settings": "Gå till inställningar",
"permission_onboarding_grant_permission": "Grant permission", "permission_onboarding_grant_permission": "Tillåt",
"permission_onboarding_log_out": "Logga ut", "permission_onboarding_log_out": "Logga ut",
"permission_onboarding_permission_denied": "Permission denied. To use Immich, grant photo and video permissions in Settings.", "permission_onboarding_permission_denied": "Permission denied. To use Immich, grant photo and video permissions in Settings.",
"permission_onboarding_permission_granted": "Permission granted! You are all set.", "permission_onboarding_permission_granted": "Permission granted! You are all set.",
"permission_onboarding_permission_limited": "Permission limited. To let Immich backup and manage your entire gallery collection, grant photo and video permissions in Settings.", "permission_onboarding_permission_limited": "Permission limited. To let Immich backup and manage your entire gallery collection, grant photo and video permissions in Settings.",
"permission_onboarding_request": "Immich requires permission to view your photos and videos.", "permission_onboarding_request": "Immich kräver tillstånd för att se dina foton och videor.",
"profile_drawer_app_logs": "Loggar", "profile_drawer_app_logs": "Loggar",
"profile_drawer_client_server_up_to_date": "Klient och server är uppdaterade", "profile_drawer_client_server_up_to_date": "Klient och server är uppdaterade",
"profile_drawer_settings": "Inställningar", "profile_drawer_settings": "Inställningar",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Tema", "theme_setting_theme_title": "Tema",
"theme_setting_three_stage_loading_subtitle": "Trestegsladdning kan öka prestandan, men kan också leda till signifikant högre nätverksbelastning", "theme_setting_three_stage_loading_subtitle": "Trestegsladdning kan öka prestandan, men kan också leda till signifikant högre nätverksbelastning",
"theme_setting_three_stage_loading_title": "Aktivera trestegsladdning", "theme_setting_three_stage_loading_title": "Aktivera trestegsladdning",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Bekräfta", "version_announcement_overlay_ack": "Bekräfta",
"version_announcement_overlay_release_notes": "versionsinformation", "version_announcement_overlay_release_notes": "versionsinformation",
"version_announcement_overlay_text_1": "Hej vännen, det finns en ny version av", "version_announcement_overlay_text_1": "Hej vännen, det finns en ny version av",

View File

@@ -1,199 +1,206 @@
{ {
"add_to_album_bottom_sheet_added": "Added to {album}", "add_to_album_bottom_sheet_added": "เพิ่มไปยัง {album}",
"add_to_album_bottom_sheet_already_exists": "Already in {album}", "add_to_album_bottom_sheet_already_exists": "อยู่ใน {album} อยู่แล้ว",
"advanced_settings_prefer_remote_subtitle": "อุปกรณ์บางเครื่องโหลด thumbnails ช้ามาก เปิดการตั้งค่านี้เพื่อโหลดรูปภาพรีโมทแทน", "advanced_settings_prefer_remote_subtitle": "อุปกรณ์บางเครื่องโหลดภาพขนาดย่อช้ามาก เปิดการตั้งค่านี้เพื่อโหลดรูปภาพจากรีโมทแทน",
"advanced_settings_prefer_remote_title": "ให้ความสำคัญกับรูปภาพรีโมท", "advanced_settings_prefer_remote_title": "ให้ความสำคัญกับรูปภาพรีโมท",
"advanced_settings_tile_subtitle": "ตั้งค่าผู้ใช้งานขั้นสูง", "advanced_settings_tile_subtitle": "ตั้งค่าผู้ใช้งานขั้นสูง",
"advanced_settings_tile_title": "ขั้สูง", "advanced_settings_tile_title": "ขั้สูง",
"advanced_settings_troubleshooting_subtitle": "เปิดฟีเจอร์เพิ่มเติมเพื่อแก้ไขปัญหา", "advanced_settings_troubleshooting_subtitle": "เปิดฟีเจอร์เพิ่มเติมเพื่อแก้ไขปัญหา",
"advanced_settings_troubleshooting_title": "แก้ไขปัญหา", "advanced_settings_troubleshooting_title": "แก้ไขปัญหา",
"album_info_card_backup_album_excluded": "EXCLUDED", "album_info_card_backup_album_excluded": "ถูกยกเว้น",
"album_info_card_backup_album_included": "INCLUDED", "album_info_card_backup_album_included": "รวม",
"album_thumbnail_card_item": "1 item", "album_thumbnail_card_item": "1 item",
"album_thumbnail_card_items": "{} items", "album_thumbnail_card_items": "{} items",
"album_thumbnail_card_shared": " · Shared", "album_thumbnail_card_shared": " · Shared",
"album_thumbnail_owned": "เป็นเจ้าของ", "album_thumbnail_owned": "เป็นเจ้าของ",
"album_thumbnail_shared_by": "แชร์โดย {}", "album_thumbnail_shared_by": "แชร์โดย {}",
"album_viewer_appbar_share_delete": "Delete album", "album_viewer_appbar_share_delete": "ลบอั้ลบั้ม",
"album_viewer_appbar_share_err_delete": "Failed to delete album", "album_viewer_appbar_share_err_delete": "ลบอัลบั้มไม่สำเร็จ",
"album_viewer_appbar_share_err_leave": "Failed to leave album", "album_viewer_appbar_share_err_leave": "ออกจากอัลบั้มไม่สำเร็จ",
"album_viewer_appbar_share_err_remove": "There are problems in removing assets from album", "album_viewer_appbar_share_err_remove": "มีปัญหาในการนำทรัพยากรออกจากอัลบั้ม",
"album_viewer_appbar_share_err_title": "Failed to change album title", "album_viewer_appbar_share_err_title": "เปลี่ยนชื่ออัลบั้มไม่สำเร็จ",
"album_viewer_appbar_share_leave": "Leave album", "album_viewer_appbar_share_leave": "ออกจากอัลบั้ม",
"album_viewer_appbar_share_remove": "Remove from album", "album_viewer_appbar_share_remove": "ลบออกจากอัลบั้ม",
"album_viewer_page_share_add_users": "Add users", "album_viewer_page_share_add_users": "เพิ่มผู้ใช้งาน",
"all_people_page_title": "ผู้คน", "all_people_page_title": "ผู้คน",
"all_videos_page_title": "วิดีโอ", "all_videos_page_title": "วิดีโอ",
"archive_page_no_archived_assets": "ไม่พบทรัพยากรในที่เก็บถาวร", "archive_page_no_archived_assets": "ไม่พบทรัพยากรในที่เก็บถาวร",
"archive_page_title": "เก็บถาวร ({})", "archive_page_title": "เก็บถาวร ({})",
"asset_list_layout_settings_dynamic_layout_title": "Dynamic layout", "asset_list_layout_settings_dynamic_layout_title": "แผนผังปรับตัว",
"asset_list_layout_settings_group_automatically": "อัตโนมัติ", "asset_list_layout_settings_group_automatically": "อัตโนมัติ",
"asset_list_layout_settings_group_by": "Group assets by", "asset_list_layout_settings_group_by": "จัดกลุ่มทรัพยากรโดย",
"asset_list_layout_settings_group_by_month": "Month", "asset_list_layout_settings_group_by_month": "เดือน",
"asset_list_layout_settings_group_by_month_day": "Month + day", "asset_list_layout_settings_group_by_month_day": "เดือน + วัน",
"asset_list_settings_subtitle": "Photo grid layout settings", "asset_list_settings_subtitle": "Photo grid layout settings",
"asset_list_settings_title": "Photo Grid", "asset_list_settings_title": "Photo Grid",
"backup_album_selection_page_albums_device": "Albums on device ({})", "backup_album_selection_page_albums_device": "อัลบั้มบนเครื่อง ({})",
"backup_album_selection_page_albums_tap": "Tap to include, double tap to exclude", "backup_album_selection_page_albums_tap": "กดเพื่อรวม กดสองครั้งเพื่อยกเว้น",
"backup_album_selection_page_assets_scatter": "Assets can scatter across multiple albums. Thus, albums can be included or excluded during the backup process.", "backup_album_selection_page_assets_scatter": "ทรัพยาการสามารถกระจายไปในหลายอัลบั้ม ดังนั้นอัลบั้มสามารถถูกรวมหรือยกเว้นในกระบวนการสำรองข้อมูล",
"backup_album_selection_page_select_albums": "Select albums", "backup_album_selection_page_select_albums": "เลือกอัลบั้ม",
"backup_album_selection_page_selection_info": "Selection Info", "backup_album_selection_page_selection_info": "ข้อมูลของที่เลือก",
"backup_album_selection_page_total_assets": "Total unique assets", "backup_album_selection_page_total_assets": "ทรัพยากรทั้งหมด",
"backup_all": "All", "backup_all": "ทั้งหมด",
"backup_background_service_backup_failed_message": "Failed to backup assets. Retrying…", "backup_background_service_backup_failed_message": "ไม่สามารถสำรองทรัพยากรได้ กำลังลองใหม่...",
"backup_background_service_connection_failed_message": "Failed to connect to the server. Retrying…", "backup_background_service_connection_failed_message": "ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ได้ กำลังลองใหม่...",
"backup_background_service_current_upload_notification": "Uploading {}", "backup_background_service_current_upload_notification": "กำลังอัพโหลด {}",
"backup_background_service_default_notification": "Checking for new assets…", "backup_background_service_default_notification": "ตรวจสอบหาทรัพยากรใหม่...",
"backup_background_service_error_title": "Backup error", "backup_background_service_error_title": "สำรองข้อมูลผิดพลาด",
"backup_background_service_in_progress_notification": "Backing up your assets…", "backup_background_service_in_progress_notification": "กำลังสำรองทรัพยากรของคุณ...",
"backup_background_service_upload_failure_notification": "Failed to upload {}", "backup_background_service_upload_failure_notification": "อัพโหลดล้มเหลว {}",
"backup_controller_page_albums": "Backup Albums", "backup_controller_page_albums": "สำรองข้อมูลอัลบั้ม",
"backup_controller_page_background_app_refresh_disabled_content": "Enable background app refresh in Settings > General > Background App Refresh in order to use background backup.", "backup_controller_page_background_app_refresh_disabled_content": "เปิดการดึงข้อมูลแอพอยู่เบื้องหลังโดยการไปที่ ตั้งค่า > ทั่วไป > ดึงข้อมูลแอปอยู่เบื้องหลัง เพื่อใช้การดึงข้อมูลในเบื้องหลัง",
"backup_controller_page_background_app_refresh_disabled_title": "Background app refresh disabled", "backup_controller_page_background_app_refresh_disabled_title": "การรีเฟรชแอพในฉากหลังปิด",
"backup_controller_page_background_app_refresh_enable_button_text": "Go to settings", "backup_controller_page_background_app_refresh_enable_button_text": "ไปยังการตั้งค่า",
"backup_controller_page_background_battery_info_link": "Show me how", "backup_controller_page_background_battery_info_link": "แสดงให้ฉันเห็น",
"backup_controller_page_background_battery_info_message": "For the best background backup experience, please disable any battery optimizations restricting background activity for Immich.\n\nSince this is device-specific, please lookup the required information for your device manufacturer.", "backup_controller_page_background_battery_info_message": "เพื่อประสบการณ์สำรองข้อมูลที่ดีที่สุด กรุณาปิดการตั้งค่าประสิทธิภาพแบตเตอรี่จำกัดกิจกรรมในเบื้องหลังสำหรับ Immich\n\nเนื่องจากการตั้งค่าดังกล่าวเฉพาะเจาะจงสำหรับโทรศัพท์แต่ละเครื่อง กรุณาค้นหาข้อมูลจากผู้ผลิตโทรศัพท์ของคุณ",
"backup_controller_page_background_battery_info_ok": "OK", "backup_controller_page_background_battery_info_ok": "โอเค",
"backup_controller_page_background_battery_info_title": "Battery optimizations", "backup_controller_page_background_battery_info_title": "ประสิทธิภาพแบตเตอรี่",
"backup_controller_page_background_charging": "Only while charging", "backup_controller_page_background_charging": "ขณะชาร์จอย่างเดียว",
"backup_controller_page_background_configure_error": "Failed to configure the background service", "backup_controller_page_background_configure_error": "ไม่สามารถติดตั้งบริการเบื้องหลัง",
"backup_controller_page_background_delay": "Delay new assets backup: {}", "backup_controller_page_background_delay": "ล่าช้าการลำรองทรัพยากรใหม่: {}",
"backup_controller_page_background_description": "Turn on the background service to automatically backup any new assets without needing to open the app", "backup_controller_page_background_description": "เปิดบริการเบื้องหลังเพื่อที่จะสำรองทรัพยากรใหม่โดยที่ไม่จำเป็นต้องเปิดแอป",
"backup_controller_page_background_is_off": "Automatic background backup is off", "backup_controller_page_background_is_off": "การสำรองข้อมูลอัตโนมัติปิดอยู่",
"backup_controller_page_background_is_on": "Automatic background backup is on", "backup_controller_page_background_is_on": "การสำรองข้อมูลอัตโนมัติเปิดอยู่",
"backup_controller_page_background_turn_off": "Turn off background service", "backup_controller_page_background_turn_off": "ปิดบริการเบื้องหลัง",
"backup_controller_page_background_turn_on": "Turn on background service", "backup_controller_page_background_turn_on": "เปิดบริการเบื้องหลัง",
"backup_controller_page_background_wifi": "Only on WiFi", "backup_controller_page_background_wifi": "บน WiFi เท่านั้น",
"backup_controller_page_backup": "Backup", "backup_controller_page_backup": "สำรองข้อมูล",
"backup_controller_page_backup_selected": "Selected: ", "backup_controller_page_backup_selected": "ที่เลือก:",
"backup_controller_page_backup_sub": "Backed up photos and videos", "backup_controller_page_backup_sub": "รูปภาพและวิดีโอที่สำรองแล้ว",
"backup_controller_page_cancel": "Cancel", "backup_controller_page_cancel": "ยกเลิก",
"backup_controller_page_created": "Created on: {}", "backup_controller_page_created": "Created on: {}",
"backup_controller_page_desc_backup": "Turn on foreground backup to automatically upload new assets to the server when opening the app.", "backup_controller_page_desc_backup": "เปิดการสำรองข้อมูลในฉากหน้าเพื่อที่จะอัพโหลดทรัพยากรใหม่ไปยังเซิร์ฟเวอร์เมื่อเปิดแอพ",
"backup_controller_page_excluded": "Excluded: ", "backup_controller_page_excluded": "ถูกยกเว้น:",
"backup_controller_page_failed": "Failed ({})", "backup_controller_page_failed": "Failed ({})",
"backup_controller_page_filename": "File name: {} [{}]", "backup_controller_page_filename": "File name: {} [{}]",
"backup_controller_page_id": "ID: {}", "backup_controller_page_id": "ID: {}",
"backup_controller_page_info": "Backup Information", "backup_controller_page_info": "ข้อมูลเกี่ยวกับการสำรองข้อมูล",
"backup_controller_page_none_selected": "None selected", "backup_controller_page_none_selected": "ไม่มีที่เลือก",
"backup_controller_page_remainder": "Remainder", "backup_controller_page_remainder": "ที่เหลือ",
"backup_controller_page_remainder_sub": "Remaining photos and videos to back up from selection", "backup_controller_page_remainder_sub": "รูปภาพและวิดีโอที่เลือกสำรองที่เหลือ",
"backup_controller_page_select": "Select", "backup_controller_page_select": "เลือก",
"backup_controller_page_server_storage": "Server Storage", "backup_controller_page_server_storage": "พื้นที่จัดเก็บเซิร์ฟเวอร์",
"backup_controller_page_start_backup": "Start Backup", "backup_controller_page_start_backup": "เริ่มสำรองข้อมูล",
"backup_controller_page_status_off": "Automatic foreground backup is off", "backup_controller_page_status_off": "การสำรองข้อมูลในฉากหน้าปิดอยู่",
"backup_controller_page_status_on": "Automatic foreground backup is on", "backup_controller_page_status_on": "การสำรองข้อมูลในฉากหน้าเปิดอยู่",
"backup_controller_page_storage_format": "{} of {} used", "backup_controller_page_storage_format": "{} จาก {} ถูกใช้งาน",
"backup_controller_page_to_backup": "Albums to be backup", "backup_controller_page_to_backup": "อัลบั้มที่จะสำรองข้อมูล",
"backup_controller_page_total": "Total", "backup_controller_page_total": "ทั้งหมด",
"backup_controller_page_total_sub": "All unique photos and videos from selected albums", "backup_controller_page_total_sub": "รูปภาพและวิดีโอที่ไม่ซ้ำทั้งหมดจากอัลบั้มที่เลือก",
"backup_controller_page_turn_off": "Turn off foreground backup", "backup_controller_page_turn_off": "ปิดการสำรองข้อมูลในฉากหน้า",
"backup_controller_page_turn_on": "Turn on foreground backup", "backup_controller_page_turn_on": "เปิดการสำรองข้อมูลในฉากหน้า",
"backup_controller_page_uploading_file_info": "Uploading file info", "backup_controller_page_uploading_file_info": "Uploading file info",
"backup_err_only_album": "Cannot remove the only album", "backup_err_only_album": "ไม่สามารถนำอัลบั้มสุดท้ายออกได้",
"backup_info_card_assets": "assets", "backup_info_card_assets": "ทรัพยากร",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "ล้มเหลว",
"backup_manual_in_progress": "อัปโหลดกำลังดำเนินการอยู่ โปรดลองใหม่ในสักพัก",
"backup_manual_success": "สำเร็จ",
"backup_manual_title": "สถานะอัพโหลด",
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)", "cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
"cache_settings_clear_cache_button": "Clear cache", "cache_settings_clear_cache_button": "ล้างแคช",
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.", "cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.",
"cache_settings_image_cache_size": "Image cache size ({} assets)", "cache_settings_image_cache_size": "Image cache size ({} assets)",
"cache_settings_statistics_album": "Library thumbnails", "cache_settings_statistics_album": "รูปย่อไลบลารี่",
"cache_settings_statistics_assets": "{} assets ({})", "cache_settings_statistics_assets": "{} assets ({})",
"cache_settings_statistics_full": "Full images", "cache_settings_statistics_full": "รูปภาพเต็ม",
"cache_settings_statistics_shared": "Shared album thumbnails", "cache_settings_statistics_shared": "Shared album thumbnails",
"cache_settings_statistics_thumbnail": "Thumbnails", "cache_settings_statistics_thumbnail": "รูปย่อ",
"cache_settings_statistics_title": "Cache usage", "cache_settings_statistics_title": "การใช้งานแคช",
"cache_settings_subtitle": "Control the caching behaviour of the Immich mobile application", "cache_settings_subtitle": "ควบคุมพฤติกรรมการแคชของแอปพลิเคชัน Immich",
"cache_settings_thumbnail_size": "Thumbnail cache size ({} assets)", "cache_settings_thumbnail_size": "ขนาดแคชรูปย่อ ({} ทรัพยากร)",
"cache_settings_title": "Caching Settings", "cache_settings_title": "ตั้งค่าแคช",
"change_password_form_confirm_password": "Confirm Password", "change_password_form_confirm_password": "ยืนยันรหัสผ่าน",
"change_password_form_description": "Hi {firstName} {lastName},\n\nThis is either the first time you are signing into the system or a request has been made to change your password. Please enter the new password below.", "change_password_form_description": "สวัสดี {firstName} {lastName},\n\nครั้งนี้อาจจะเป็นครั้งแรกที่คุณเข้าสู่ระบบ หรือมีคำขอเพื่อที่จะเปลี่ยนรหัสผ่านของคุI กรุณาเพิ่มรหัสผ่านใหม่ข้างล่าง",
"change_password_form_new_password": "New Password", "change_password_form_new_password": "รหัสผ่านใหม่",
"change_password_form_password_mismatch": "Passwords do not match", "change_password_form_password_mismatch": "รหัสผ่านไม่ตรงกัน",
"change_password_form_reenter_new_password": "Re-enter New Password", "change_password_form_reenter_new_password": "กรอกรหัสผ่านใหม่",
"common_add_to_album": "Add to album", "common_add_to_album": "เพิ่มเข้าอัลบั้ม",
"common_change_password": "Change Password", "common_change_password": "เปลี่ยนรหัสผ่าน",
"common_create_new_album": "Create new album", "common_create_new_album": "สร้างอัลบั้มใหม่",
"common_server_error": "กรุณาตรวจสอบการเชื่อมต่ออินเทอร์เน็ต ให้แน่ใจว่าเซิร์ฟเวอร์สามารถเข้าถึงได้ และเวอร์ชั่นแอพและเซิร์ฟเวอร์เข้ากันได้", "common_server_error": "กรุณาตรวจสอบการเชื่อมต่ออินเทอร์เน็ต ให้แน่ใจว่าเซิร์ฟเวอร์สามารถเข้าถึงได้ และเวอร์ชั่นแอพกับเซิร์ฟเวอร์เข้ากันได้",
"common_shared": "Shared", "common_shared": "แชร์",
"control_bottom_app_bar_add_to_album": "Add to album", "control_bottom_app_bar_add_to_album": "เพิ่มลงอัลบั้ม",
"control_bottom_app_bar_album_info": "{} items", "control_bottom_app_bar_album_info": "{} รายการ",
"control_bottom_app_bar_album_info_shared": "{} items · Shared", "control_bottom_app_bar_album_info_shared": "{} รายการ · ถูกแชร์",
"control_bottom_app_bar_archive": "เก็บถาวร", "control_bottom_app_bar_archive": "เก็บถาวร",
"control_bottom_app_bar_create_new_album": "Create new album", "control_bottom_app_bar_create_new_album": "สร้างอัลบั้มใหม่",
"control_bottom_app_bar_delete": "Delete", "control_bottom_app_bar_delete": "ลบออก",
"control_bottom_app_bar_favorite": "Favorite", "control_bottom_app_bar_favorite": "รายการโปรด",
"control_bottom_app_bar_share": "Share", "control_bottom_app_bar_share": "แชร์",
"control_bottom_app_bar_unarchive": "นำออกจากที่เก็บถาวร", "control_bottom_app_bar_unarchive": "นำออกจากที่เก็บถาวร",
"create_album_page_untitled": "Untitled", "create_album_page_untitled": "ไม่มีชื่อ",
"create_shared_album_page_create": "Create", "create_shared_album_page_create": "Create",
"create_shared_album_page_share": "Share", "create_shared_album_page_share": "แชร์",
"create_shared_album_page_share_add_assets": "ADD ASSETS", "create_shared_album_page_share_add_assets": "เพิ่มทรัพยากร",
"create_shared_album_page_share_select_photos": "Select Photos", "create_shared_album_page_share_select_photos": "เลือกรูปภาพ",
"curated_location_page_title": "สถานที่", "curated_location_page_title": "สถานที่",
"curated_object_page_title": "สิ่งของ", "curated_object_page_title": "สิ่งของ",
"daily_title_text_date": "E, MMM dd", "daily_title_text_date": "E dd MMM",
"daily_title_text_date_year": "E, MMM dd, yyyy", "daily_title_text_date_year": "E dd MMM yyyy",
"date_format": "E, LLL d, y • h:mm a", "date_format": "E, LLL d, y • h:mm a",
"delete_dialog_alert": "These items will be permanently deleted from Immich and from your device", "delete_dialog_alert": "รายการดังกล่าวจะถูกลบจาก Immich และเครื่องอย่างถาวร",
"delete_dialog_cancel": "Cancel", "delete_dialog_cancel": "ยกเลิก",
"delete_dialog_ok": "Delete", "delete_dialog_ok": "ลบออก",
"delete_dialog_title": "Delete Permanently", "delete_dialog_title": "ลบถาวร",
"description_input_hint_text": "เพื่มรายละเอียด...", "description_input_hint_text": "เพื่มรายละเอียด...",
"description_input_submit_error": "อัพเดตรายละเอียดผิดพลาด ตรวจสอบการบันทึกเพื่อรายละเอียดเพิ่มเติม", "description_input_submit_error": "อัพเดตรายละเอียดผิดพลาด ตรวจสอบ log เพื่อรายละเอียดเพิ่มเติม",
"exif_bottom_sheet_description": "Add Description...", "exif_bottom_sheet_description": "เพิ่มคำอธิบาย",
"exif_bottom_sheet_details": "DETAILS", "exif_bottom_sheet_details": "รายละเอียด",
"exif_bottom_sheet_location": "LOCATION", "exif_bottom_sheet_location": "ตำแหน่ง",
"experimental_settings_new_asset_list_subtitle": "Work in progress", "experimental_settings_new_asset_list_subtitle": "กำลังพัฒนา",
"experimental_settings_new_asset_list_title": "Enable experimental photo grid", "experimental_settings_new_asset_list_title": "Enable experimental photo grid",
"experimental_settings_subtitle": "Use at your own risk!", "experimental_settings_subtitle": "Use at your own risk!",
"experimental_settings_title": "Experimental", "experimental_settings_title": "ทดลอง",
"favorites_page_no_favorites": "ไม่พบทรัพยากรในรายการโปรด", "favorites_page_no_favorites": "ไม่พบทรัพยากรในรายการโปรด",
"favorites_page_title": "Favorites", "favorites_page_title": "รายการโปรด",
"home_page_add_to_album_conflicts": "Added {added} assets to album {album}. {failed} assets are already in the album.", "home_page_add_to_album_conflicts": "เพิ่ม {added} ทรัพยากรเข้าอัลบั้ม {album}. {failed} ทรัพยากรอยู่ในอัลบั้มอยู่แล้ว",
"home_page_add_to_album_err_local": "Can not add local assets to albums yet, skipping", "home_page_add_to_album_err_local": " ไม่สามารถเพิ่มทรัพยากรบนเครื่องเข้าอัลบั้ม กำลังข้าม",
"home_page_add_to_album_success": "Added {added} assets to album {album}.", "home_page_add_to_album_success": "Added {added} assets to album {album}.",
"home_page_archive_err_local": "ไม่สามารถเก็บถาวรในขณะนี้ กำลังข้าม", "home_page_archive_err_local": "ไม่สามารถเก็บถาวรในขณะนี้ กำลังข้าม",
"home_page_building_timeline": "Building the timeline", "home_page_building_timeline": "กำลังสร้าง timeline",
"home_page_favorite_err_local": "Can not favorite local assets yet, skipping", "home_page_favorite_err_local": " ไม่สามารถตั้งทรัพยากรบนเครื่องเป็นรายการโปรด กำลังข้าม",
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).", "home_page_first_time_notice": "ถ้าครั้งนี้เป็นครั้งแรกที่ใช้แอปนี้ กรุณาเลือกอัลบั้มที่จะสำรองข้อมูล ไทม์ไลน์จะได้เพิ่มรูปภาพและวิดีโอที่อยู่ในอัลบั้ม",
"image_viewer_page_state_provider_download_error": "Download Error", "home_page_upload_err_limit": "สามารถอัพโหลดได้มากสุดครั้งละ 30 ทรัพยากร กำลังข้าม",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_error": "ดาวน์โหลดผิดพลาด",
"image_viewer_page_state_provider_download_success": "ดาวน์โหลดสำเร็จ",
"library_page_albums": "Albums", "library_page_albums": "Albums",
"library_page_archive": "เก็บถาวร", "library_page_archive": "เก็บถาวร",
"library_page_device_albums": "อัลบั้มบนเครื่อง", "library_page_device_albums": "อัลบั้มบนเครื่อง",
"library_page_favorites": "Favorites", "library_page_favorites": "รายการโปรด",
"library_page_new_album": "New album", "library_page_new_album": "อัลบั้มใหม่",
"library_page_sharing": "Sharing", "library_page_sharing": "การแชร์",
"library_page_sort_created": "Most recently created", "library_page_sort_created": "สร้างล่าสุด",
"library_page_sort_title": "Album title", "library_page_sort_title": "ชื่ออัลบั้ม",
"login_disabled": "ล็อกอินถูกปิด",
"login_form_api_exception": "ข้อผิดพลาด API กรุณาตรวจสอบ URL แล้วลองใหม่", "login_form_api_exception": "ข้อผิดพลาด API กรุณาตรวจสอบ URL แล้วลองใหม่",
"login_form_button_text": "Login", "login_form_button_text": "เข้าสู่ระบบ",
"login_form_email_hint": "youremail@email.com", "login_form_email_hint": "อีเมลคุณ@อีเมล.com",
"login_form_endpoint_hint": "http://your-server-ip:port/api", "login_form_endpoint_hint": "http://ไอพีเชอร์ฟเวอร์คุณ:พอร์ต/api",
"login_form_endpoint_url": "Server Endpoint URL", "login_form_endpoint_url": "URL ปลายทางของเซิร์ฟเวอร์",
"login_form_err_http": "Please specify http:// or https://", "login_form_err_http": "โปรดระบุ http:// หรือ https://",
"login_form_err_invalid_email": "Invalid Email", "login_form_err_invalid_email": "อีเมลไม่ถูกต้อง",
"login_form_err_invalid_url": "Invalid URL", "login_form_err_invalid_url": "URL ไม่ถูกต้อง",
"login_form_err_leading_whitespace": "Leading whitespace", "login_form_err_leading_whitespace": "เว้นว่างข้างหน้า",
"login_form_err_trailing_whitespace": "Trailing whitespace", "login_form_err_trailing_whitespace": "เว้นว่างข้างหลัง",
"login_form_failed_get_oauth_server_config": "Error logging using OAuth, check server URL", "login_form_failed_get_oauth_server_config": "เกิดข้อผิดพลาดในการล็อกอินผ่าน OAuth ตรวจสอบ URL เซิร์ฟเวอร์",
"login_form_failed_get_oauth_server_disable": "OAuth feature is not available on this server", "login_form_failed_get_oauth_server_disable": "ฟีเจอร์ OAuth ไม่สามารถใช้งานบนเซิร์ฟเวอร์นี้",
"login_form_failed_login": "Error logging you in, check server URL, email and password", "login_form_failed_login": "เกิดข้อผิดพลาดในการล็อกอิน โปรดตรวจสอบ URL ของเซิร์ฟเวอร์ อีเมล และรหัสผ่าน",
"login_form_label_email": "Email", "login_form_label_email": "อีเมล",
"login_form_label_password": "Password", "login_form_label_password": "รหัสผ่าน",
"login_form_next_button": "ต่อไป", "login_form_next_button": "ต่อไป",
"login_form_password_hint": "password", "login_form_password_hint": "รหัสผ่าน",
"login_form_save_login": "Stay logged in", "login_form_save_login": "อยู่ในระบบต่อไป",
"login_form_server_empty": "กรอก URL เซิร์ฟเวอร์", "login_form_server_empty": "กรอก URL เซิร์ฟเวอร์",
"login_form_server_error": "ไม่สามารถติดต่อกับเซิร์ฟเวอร์", "login_form_server_error": "ไม่สามารถติดต่อกับเซิร์ฟเวอร์",
"monthly_title_text_date_format": "MMMM y", "monthly_title_text_date_format": "MMMM y",
"motion_photos_page_title": "ภาพเคลื่อนไหว", "motion_photos_page_title": "ภาพเคลื่อนไหว",
"notification_permission_dialog_cancel": "Cancel", "notification_permission_dialog_cancel": "ยกเลิก",
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.", "notification_permission_dialog_content": "เพื่อเปิดการแจ้งเตือน เข้าตั้งค่าแล้วกดอนุญาต",
"notification_permission_dialog_settings": "Settings", "notification_permission_dialog_settings": "ตั้งค่า",
"notification_permission_list_tile_content": "Grant permission to enable notifications.", "notification_permission_list_tile_content": "อนุญาตการแจ้งเตือน",
"notification_permission_list_tile_enable_button": "Enable Notifications", "notification_permission_list_tile_enable_button": "เปิดการแจ้งเดือน",
"notification_permission_list_tile_title": "Notification Permission", "notification_permission_list_tile_title": "สิทธิ์การแจ้งเตือน",
"partner_page_add_partner": "เพิ่มพันธมิตร", "partner_page_add_partner": "เพิ่มพันธมิตร",
"partner_page_empty_message": "รูปภาพของคุณยังไม่ถูกแชร์กับพันธมิตร", "partner_page_empty_message": "รูปภาพของคุณยังไม่ถูกแชร์กับพันธมิตร",
"partner_page_no_more_users": "ไม่มีผู้ใช้งานให้เพิ่ม", "partner_page_no_more_users": "ไม่มีผู้ใช้งานให้เพิ่ม",
@@ -201,80 +208,80 @@
"partner_page_select_partner": "เลือกพันธมิตร", "partner_page_select_partner": "เลือกพันธมิตร",
"partner_page_shared_to_title": "แชร์กับ", "partner_page_shared_to_title": "แชร์กับ",
"partner_page_stop_sharing_content": "{} จะไม่สามารถเข้าถึงรูปภาพของคุณ", "partner_page_stop_sharing_content": "{} จะไม่สามารถเข้าถึงรูปภาพของคุณ",
"partner_page_stop_sharing_title": "หยุดแชร์รูปภาพหรือไม่?", "partner_page_stop_sharing_title": "หยุดแชร์รูปภาพ?",
"partner_page_title": "พันธมิตร", "partner_page_title": "พันธมิตร",
"permission_onboarding_continue_anyway": "ไปต่ออยู่ดี", "permission_onboarding_continue_anyway": "ดำเนินการต่อ",
"permission_onboarding_get_started": "เริ่มต้น", "permission_onboarding_get_started": "เริ่มต้น",
"permission_onboarding_go_to_settings": "ไปยังการตั้งค่า", "permission_onboarding_go_to_settings": "ไปยังการตั้งค่า",
"permission_onboarding_grant_permission": "ใหสิทธิ์", "permission_onboarding_grant_permission": "ใหสิทธิ์",
"permission_onboarding_log_out": "ออกจากระบบ", "permission_onboarding_log_out": "ออกจากระบบ",
"permission_onboarding_permission_denied": "ไม่อนุญาต ตั้งค่าสิทธิ์เข้าถึงรูปภาพและวิดีโอเพื่อใช้งาน Immich", "permission_onboarding_permission_denied": "ไม่อนุญาต ตั้งค่าสิทธิ์เข้าถึงรูปภาพและวิดีโอเพื่อใช้งาน Immich",
"permission_onboarding_permission_granted": "ให้สิทธิ์สำเร็จ คุณพร้อมใช้งานแล้ว", "permission_onboarding_permission_granted": "ให้สิทธิ์สำเร็จ คุณพร้อมใช้งานแล้ว",
"permission_onboarding_permission_limited": "สิทธ์จำกัด เพื่อให้ Immich สำรองข้อมูลและบริหารคลังรูปภาพได้ ตั้งค่าสิทธิเข้าถึงรูปภาพและวิดโอ", "permission_onboarding_permission_limited": "สิทธ์จำกัด เพื่อให้ Immich สำรองข้อมูลและบริหารคลังรูปภาพได้ ตั้งค่าสิทธิเข้าถึงรูปภาพและวิดโอ",
"permission_onboarding_request": "Immich จำเป็นจะต้องได้รับสิทธิ์ดูรูปภาพและวิดีโอ", "permission_onboarding_request": "Immich จำเป็นจะต้องได้รับสิทธิ์ดูรูปภาพและวิดีโอ",
"profile_drawer_app_logs": "Logs", "profile_drawer_app_logs": "Log",
"profile_drawer_client_server_up_to_date": "Client and Server are up-to-date", "profile_drawer_client_server_up_to_date": "ไคลเอนต์และเซิร์ฟเวอร์เป็นปัจจุบัน",
"profile_drawer_settings": "Settings", "profile_drawer_settings": "Settings",
"profile_drawer_sign_out": "Sign Out", "profile_drawer_sign_out": "ออกจากระบบ",
"recently_added_page_title": "เพิ่มมาเร็วๆนี้", "recently_added_page_title": "เพิ่มล่าสุด",
"search_bar_hint": "Search your photos", "search_bar_hint": "ค้นหารูปภาพของคุณ",
"search_page_categories": "หมวดหมู่", "search_page_categories": "หมวดหมู่",
"search_page_favorites": "รายการโปรด", "search_page_favorites": "รายการโปรด",
"search_page_motion_photos": "ภาพเคลื่อนไหว", "search_page_motion_photos": "ภาพเคลื่อนไหว",
"search_page_no_objects": "No Objects Info Available", "search_page_no_objects": "No Objects Info Available",
"search_page_no_places": "No Places Info Available", "search_page_no_places": "ไม่มีข้อมูลสถานที่",
"search_page_people": "ผู้คน", "search_page_people": "ผู้คน",
"search_page_places": "Places", "search_page_places": "สถานที่",
"search_page_recently_added": "เพิ่มมาเร็วๆนี้", "search_page_recently_added": "เพิ่มล่าสุด",
"search_page_screenshots": "แคปหน้าจอ", "search_page_screenshots": "แคปหน้าจอ",
"search_page_selfies": "เซลฟี่", "search_page_selfies": "เซลฟี่",
"search_page_things": "Things", "search_page_things": "สิ่งของ",
"search_page_videos": "วิดีโอ", "search_page_videos": "วิดีโอ",
"search_page_view_all_button": "ดูทั้งหมด", "search_page_view_all_button": "ดูทั้งหมด",
"search_page_your_activity": "กิจกรรมของคุณ", "search_page_your_activity": "กิจกรรมของคุณ",
"search_result_page_new_search_hint": "New Search", "search_result_page_new_search_hint": "ค้นหาใหม่",
"search_suggestion_list_smart_search_hint_1": "การค้นหาอัจฉริยะเปิดเป็นค่าเริ่มต้น เพื่อค้นหา metadata ให้ใช้ไวยากรณ์", "search_suggestion_list_smart_search_hint_1": "การค้นหาอัจฉริยะเปิดเป็นค่าเริ่มต้น เพื่อค้นหา metadata ให้ใช้ไวยากรณ์",
"search_suggestion_list_smart_search_hint_2": "m:คำค้นหา", "search_suggestion_list_smart_search_hint_2": "m:คำค้นหา",
"select_additional_user_for_sharing_page_suggestions": "Suggestions", "select_additional_user_for_sharing_page_suggestions": "ข้อเสนอแนะ",
"select_user_for_sharing_page_err_album": "Failed to create album", "select_user_for_sharing_page_err_album": "สร้างอัลบั้มล้มเหลว",
"select_user_for_sharing_page_share_suggestions": "Suggestions", "select_user_for_sharing_page_share_suggestions": "Suggestions",
"server_info_box_app_version": "App Version", "server_info_box_app_version": "เวอร์ชั่นแอพ",
"server_info_box_server_version": "Server Version", "server_info_box_server_version": "เวอร์ชั้นเซิร์ฟเวอร์",
"setting_image_viewer_help": "The detail viewer loads the small thumbnail first, then loads the medium-size preview (if enabled), finally loads the original (if enabled).", "setting_image_viewer_help": "The detail viewer loads the small thumbnail first, then loads the medium-size preview (if enabled), finally loads the original (if enabled).",
"setting_image_viewer_original_subtitle": "Enable to load the original full-resolution image (large!). Disable to reduce data usage (both network and on device cache).", "setting_image_viewer_original_subtitle": "Enable to load the original full-resolution image (large!). Disable to reduce data usage (both network and on device cache).",
"setting_image_viewer_original_title": "Load original image", "setting_image_viewer_original_title": "โหลดรูปต้นฉบับ",
"setting_image_viewer_preview_subtitle": "Enable to load a medium-resolution image. Disable to either directly load the original or only use the thumbnail.", "setting_image_viewer_preview_subtitle": "Enable to load a medium-resolution image. Disable to either directly load the original or only use the thumbnail.",
"setting_image_viewer_preview_title": "Load preview image", "setting_image_viewer_preview_title": "โหลดรูปภาพตัวอย่าง",
"setting_notifications_notify_failures_grace_period": "Notify background backup failures: {}", "setting_notifications_notify_failures_grace_period": "แจ้งการสำรองข้อมูลในเบื้องหลังล้มเหลว: {}",
"setting_notifications_notify_hours": "{} hours", "setting_notifications_notify_hours": "{} ชั่วโมง",
"setting_notifications_notify_immediately": "immediately", "setting_notifications_notify_immediately": "immediately",
"setting_notifications_notify_minutes": "{} minutes", "setting_notifications_notify_minutes": "{} นาที",
"setting_notifications_notify_never": "never", "setting_notifications_notify_never": "ไม่เคย",
"setting_notifications_notify_seconds": "{} seconds", "setting_notifications_notify_seconds": "{} วินาที",
"setting_notifications_single_progress_subtitle": "Detailed upload progress information per asset", "setting_notifications_single_progress_subtitle": "Detailed upload progress information per asset",
"setting_notifications_single_progress_title": "Show background backup detail progress", "setting_notifications_single_progress_title": "แสดงรายละเอียดสถานะการสำรองข้อมูลในเบื้องหลัง",
"setting_notifications_subtitle": "Adjust your notification preferences", "setting_notifications_subtitle": "Adjust your notification preferences",
"setting_notifications_title": "Notifications", "setting_notifications_title": "Notifications",
"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": "แสดงสถานะการสำรองข้อมูลในเบื้องหลังทั้งหมด",
"setting_pages_app_bar_settings": "Settings", "setting_pages_app_bar_settings": "Settings",
"settings_require_restart": "Please restart Immich to apply this setting", "settings_require_restart": "กรุณารีสตาร์ท Immmich เพื่อใช้การตั้งค่า",
"share_add": "Add", "share_add": "เพิ่ม",
"share_add_photos": "Add photos", "share_add_photos": "เพิ่มรูปภาพ",
"share_add_title": "Add a title", "share_add_title": "เพิ่มชื่อ",
"share_create_album": "Create album", "share_create_album": "สร้างอัลบั้ม",
"share_dialog_preparing": "Preparing...", "share_dialog_preparing": "กำลังเตรียม...",
"share_invite": "Invite to album", "share_invite": "เชิญเข้าอัลบั้ม",
"sharing_page_album": "Shared albums", "sharing_page_album": "อัลบั้มที่แชร์",
"sharing_page_description": "Create shared albums to share photos and videos with people in your network.", "sharing_page_description": "สร้างอัลบั้มที่แชร์เพื่อแชร์รูปภาพและวิดีโอให้กับคนบนเครื่อข่ายคุณ",
"sharing_page_empty_list": "EMPTY LIST", "sharing_page_empty_list": "รายการว่างเปล่า",
"sharing_silver_appbar_create_shared_album": "Create shared album", "sharing_silver_appbar_create_shared_album": "สร้างอัลบั้มแชร์",
"sharing_silver_appbar_share_partner": "Share with partner", "sharing_silver_appbar_share_partner": "แชร์กับพันธมิตร",
"tab_controller_nav_library": "Library", "tab_controller_nav_library": "Library",
"tab_controller_nav_photos": "Photos", "tab_controller_nav_photos": "รูปภาพ",
"tab_controller_nav_search": "Search", "tab_controller_nav_search": "ค้นหา",
"tab_controller_nav_sharing": "Sharing", "tab_controller_nav_sharing": "แชร์",
"theme_setting_asset_list_storage_indicator_title": "Show storage indicator on asset tiles", "theme_setting_asset_list_storage_indicator_title": "แสดงตัวพื้นที่จัดเก็บบนตารางทรัพยากร",
"theme_setting_asset_list_tiles_per_row_title": "Number of assets per row ({})", "theme_setting_asset_list_tiles_per_row_title": "Number of assets per row ({})",
"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",
@@ -284,10 +291,14 @@
"theme_setting_theme_title": "Theme", "theme_setting_theme_title": "Theme",
"theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load", "theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load",
"theme_setting_three_stage_loading_title": "Enable three-stage loading", "theme_setting_three_stage_loading_title": "Enable three-stage loading",
"upload_dialog_cancel": "ยกเลิก",
"upload_dialog_info": "คุณต้องการอัพโหลดทรัพยากรดังกล่าวบนเซิร์ฟเวอร์หรือไม่?",
"upload_dialog_ok": "อัปโหลด",
"upload_dialog_title": "อัปโหลดทรัพยากร",
"version_announcement_overlay_ack": "Acknowledge", "version_announcement_overlay_ack": "Acknowledge",
"version_announcement_overlay_release_notes": "release notes", "version_announcement_overlay_release_notes": "release notes",
"version_announcement_overlay_text_1": "Hi friend, there is a new release of", "version_announcement_overlay_text_1": "Hi friend, there is a new release of",
"version_announcement_overlay_text_2": "please take your time to visit the ", "version_announcement_overlay_text_2": "please take your time to visit the ",
"version_announcement_overlay_text_3": " and ensure your docker-compose and .env setup is up-to-date to prevent any misconfigurations, especially if you use WatchTower or any mechanism that handles updating your server application automatically.", "version_announcement_overlay_text_3": " and ensure your docker-compose and .env setup is up-to-date to prevent any misconfigurations, especially if you use WatchTower or any mechanism that handles updating your server application automatically.",
"version_announcement_overlay_title": "New Server Version Available \uD83C\uDF89" "version_announcement_overlay_title": "มีเวอร์ชั่นใหม่สำหรับเซิร์ฟเวอร์ \uD83C\uDF89"
} }

View File

@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Uploading file info", "backup_controller_page_uploading_file_info": "Uploading file info",
"backup_err_only_album": "Cannot remove the only album", "backup_err_only_album": "Cannot remove the only album",
"backup_info_card_assets": "assets", "backup_info_card_assets": "assets",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)", "cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
"cache_settings_clear_cache_button": "Clear cache", "cache_settings_clear_cache_button": "Clear cache",
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.", "cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "Building the timeline", "home_page_building_timeline": "Building the timeline",
"home_page_favorite_err_local": "Can not favorite local assets yet, skipping", "home_page_favorite_err_local": "Can not favorite local assets yet, skipping",
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).", "home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Download Error", "image_viewer_page_state_provider_download_error": "Download Error",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_success": "Download Success",
"library_page_albums": "Albums", "library_page_albums": "Albums",
@@ -166,6 +172,7 @@
"library_page_sharing": "Sharing", "library_page_sharing": "Sharing",
"library_page_sort_created": "Most recently created", "library_page_sort_created": "Most recently created",
"library_page_sort_title": "Album title", "library_page_sort_title": "Album title",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API exception. Please check the server URL and try again.", "login_form_api_exception": "API exception. Please check the server URL and try again.",
"login_form_button_text": "Login", "login_form_button_text": "Login",
"login_form_email_hint": "youremail@email.com", "login_form_email_hint": "youremail@email.com",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Theme", "theme_setting_theme_title": "Theme",
"theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load", "theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load",
"theme_setting_three_stage_loading_title": "Enable three-stage loading", "theme_setting_three_stage_loading_title": "Enable three-stage loading",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Acknowledge", "version_announcement_overlay_ack": "Acknowledge",
"version_announcement_overlay_release_notes": "release notes", "version_announcement_overlay_release_notes": "release notes",
"version_announcement_overlay_text_1": "Hi friend, there is a new release of", "version_announcement_overlay_text_1": "Hi friend, there is a new release of",

View File

@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "Uploading file info", "backup_controller_page_uploading_file_info": "Uploading file info",
"backup_err_only_album": "Cannot remove the only album", "backup_err_only_album": "Cannot remove the only album",
"backup_info_card_assets": "assets", "backup_info_card_assets": "assets",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "Failed",
"backup_manual_in_progress": "Upload already in progress. Try after sometime",
"backup_manual_success": "Success",
"backup_manual_title": "Upload status",
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)", "cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
"cache_settings_clear_cache_button": "Clear cache", "cache_settings_clear_cache_button": "Clear cache",
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.", "cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "Building the timeline", "home_page_building_timeline": "Building the timeline",
"home_page_favorite_err_local": "Can not favorite local assets yet, skipping", "home_page_favorite_err_local": "Can not favorite local assets yet, skipping",
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).", "home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
"image_viewer_page_state_provider_download_error": "Download Error", "image_viewer_page_state_provider_download_error": "Download Error",
"image_viewer_page_state_provider_download_success": "Download Success", "image_viewer_page_state_provider_download_success": "Download Success",
"library_page_albums": "Albums", "library_page_albums": "Albums",
@@ -166,6 +172,7 @@
"library_page_sharing": "Sharing", "library_page_sharing": "Sharing",
"library_page_sort_created": "Most recently created", "library_page_sort_created": "Most recently created",
"library_page_sort_title": "Album title", "library_page_sort_title": "Album title",
"login_disabled": "Login has been disabled",
"login_form_api_exception": "API exception. Please check the server URL and try again.", "login_form_api_exception": "API exception. Please check the server URL and try again.",
"login_form_button_text": "Login", "login_form_button_text": "Login",
"login_form_email_hint": "youremail@email.com", "login_form_email_hint": "youremail@email.com",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "Theme", "theme_setting_theme_title": "Theme",
"theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load", "theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load",
"theme_setting_three_stage_loading_title": "Enable three-stage loading", "theme_setting_three_stage_loading_title": "Enable three-stage loading",
"upload_dialog_cancel": "Cancel",
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
"upload_dialog_ok": "Upload",
"upload_dialog_title": "Upload Asset",
"version_announcement_overlay_ack": "Acknowledge", "version_announcement_overlay_ack": "Acknowledge",
"version_announcement_overlay_release_notes": "release notes", "version_announcement_overlay_release_notes": "release notes",
"version_announcement_overlay_text_1": "Hi friend, there is a new release of", "version_announcement_overlay_text_1": "Hi friend, there is a new release of",

View File

@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "正在上传文件信息", "backup_controller_page_uploading_file_info": "正在上传文件信息",
"backup_err_only_album": "不能移除唯一的一个相册", "backup_err_only_album": "不能移除唯一的一个相册",
"backup_info_card_assets": "张", "backup_info_card_assets": "张",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "失败",
"backup_manual_in_progress": "上传正在进行中,请稍后再试",
"backup_manual_success": "成功",
"backup_manual_title": "上传状态",
"cache_settings_album_thumbnails": "图库缩略图({} 张)", "cache_settings_album_thumbnails": "图库缩略图({} 张)",
"cache_settings_clear_cache_button": "清除缓存", "cache_settings_clear_cache_button": "清除缓存",
"cache_settings_clear_cache_button_title": "清除应用缓存。在重新生成缓存之前,将显著影响应用的性能。", "cache_settings_clear_cache_button_title": "清除应用缓存。在重新生成缓存之前,将显著影响应用的性能。",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "正在生成时间线", "home_page_building_timeline": "正在生成时间线",
"home_page_favorite_err_local": "暂不能收藏本地项目,跳过", "home_page_favorite_err_local": "暂不能收藏本地项目,跳过",
"home_page_first_time_notice": "如果这是您第一次使用该应用程序,请确保选择一个要备份的本地相册,以便可以在时间线中预览该相册中的照片和视频。", "home_page_first_time_notice": "如果这是您第一次使用该应用程序,请确保选择一个要备份的本地相册,以便可以在时间线中预览该相册中的照片和视频。",
"home_page_upload_err_limit": "一次最多只能上传 30 个项目,跳过",
"image_viewer_page_state_provider_download_error": "下载出现错误", "image_viewer_page_state_provider_download_error": "下载出现错误",
"image_viewer_page_state_provider_download_success": "下载成功", "image_viewer_page_state_provider_download_success": "下载成功",
"library_page_albums": "相册", "library_page_albums": "相册",
@@ -166,6 +172,7 @@
"library_page_sharing": "共享", "library_page_sharing": "共享",
"library_page_sort_created": "最近创建的", "library_page_sort_created": "最近创建的",
"library_page_sort_title": "相册标题", "library_page_sort_title": "相册标题",
"login_disabled": "登录已被禁用",
"login_form_api_exception": "API 异常,请检查服务器地址并重试。", "login_form_api_exception": "API 异常,请检查服务器地址并重试。",
"login_form_button_text": "登录", "login_form_button_text": "登录",
"login_form_email_hint": "youremail@email.com", "login_form_email_hint": "youremail@email.com",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "主题", "theme_setting_theme_title": "主题",
"theme_setting_three_stage_loading_subtitle": "三段式加载可能会提升加载性能,但可能会导致更高的网络负载", "theme_setting_three_stage_loading_subtitle": "三段式加载可能会提升加载性能,但可能会导致更高的网络负载",
"theme_setting_three_stage_loading_title": "启用三段式加载", "theme_setting_three_stage_loading_title": "启用三段式加载",
"upload_dialog_cancel": "取消",
"upload_dialog_info": "是否要将所选项目备份到服务器?",
"upload_dialog_ok": "上传",
"upload_dialog_title": "上传项目",
"version_announcement_overlay_ack": "我知道了", "version_announcement_overlay_ack": "我知道了",
"version_announcement_overlay_release_notes": "发行说明", "version_announcement_overlay_release_notes": "发行说明",
"version_announcement_overlay_text_1": "号外号外,有新版本的", "version_announcement_overlay_text_1": "号外号外,有新版本的",

View File

@@ -92,6 +92,11 @@
"backup_controller_page_uploading_file_info": "正在上传文件信息", "backup_controller_page_uploading_file_info": "正在上传文件信息",
"backup_err_only_album": "不能移除唯一的一个相册", "backup_err_only_album": "不能移除唯一的一个相册",
"backup_info_card_assets": "张", "backup_info_card_assets": "张",
"backup_manual_cancelled": "Cancelled",
"backup_manual_failed": "失败",
"backup_manual_in_progress": "上传正在进行中,请稍后再试",
"backup_manual_success": "成功",
"backup_manual_title": "上传状态",
"cache_settings_album_thumbnails": "图库缩略图({} 张)", "cache_settings_album_thumbnails": "图库缩略图({} 张)",
"cache_settings_clear_cache_button": "清除缓存", "cache_settings_clear_cache_button": "清除缓存",
"cache_settings_clear_cache_button_title": "清除应用缓存。在重新生成缓存之前,将显著影响应用的性能。", "cache_settings_clear_cache_button_title": "清除应用缓存。在重新生成缓存之前,将显著影响应用的性能。",
@@ -156,6 +161,7 @@
"home_page_building_timeline": "正在生成时间线", "home_page_building_timeline": "正在生成时间线",
"home_page_favorite_err_local": "暂不能收藏本地项目,跳过", "home_page_favorite_err_local": "暂不能收藏本地项目,跳过",
"home_page_first_time_notice": "如果这是您第一次使用该应用程序,请确保选择一个要备份的本地相册,以便可以在时间线中预览该相册中的照片和视频。", "home_page_first_time_notice": "如果这是您第一次使用该应用程序,请确保选择一个要备份的本地相册,以便可以在时间线中预览该相册中的照片和视频。",
"home_page_upload_err_limit": "一次最多只能上传 30 个项目,跳过",
"image_viewer_page_state_provider_download_error": "下载出现错误", "image_viewer_page_state_provider_download_error": "下载出现错误",
"image_viewer_page_state_provider_download_success": "下载成功", "image_viewer_page_state_provider_download_success": "下载成功",
"library_page_albums": "相册", "library_page_albums": "相册",
@@ -166,6 +172,7 @@
"library_page_sharing": "共享", "library_page_sharing": "共享",
"library_page_sort_created": "最近创建的", "library_page_sort_created": "最近创建的",
"library_page_sort_title": "相册标题", "library_page_sort_title": "相册标题",
"login_disabled": "登录已被禁用",
"login_form_api_exception": "API 异常,请检查服务器地址并重试。", "login_form_api_exception": "API 异常,请检查服务器地址并重试。",
"login_form_button_text": "登录", "login_form_button_text": "登录",
"login_form_email_hint": "youremail@email.com", "login_form_email_hint": "youremail@email.com",
@@ -284,6 +291,10 @@
"theme_setting_theme_title": "主题", "theme_setting_theme_title": "主题",
"theme_setting_three_stage_loading_subtitle": "三段式加载可能会提升加载性能,但可能会导致更高的网络负载", "theme_setting_three_stage_loading_subtitle": "三段式加载可能会提升加载性能,但可能会导致更高的网络负载",
"theme_setting_three_stage_loading_title": "启用三段式加载", "theme_setting_three_stage_loading_title": "启用三段式加载",
"upload_dialog_cancel": "取消",
"upload_dialog_info": "是否要将所选项目备份到服务器?",
"upload_dialog_ok": "上传",
"upload_dialog_title": "上传正在进行中,请稍后再试",
"version_announcement_overlay_ack": "我知道了", "version_announcement_overlay_ack": "我知道了",
"version_announcement_overlay_release_notes": "发行说明", "version_announcement_overlay_release_notes": "发行说明",
"version_announcement_overlay_text_1": "号外号外,有新版本的", "version_announcement_overlay_text_1": "号外号外,有新版本的",

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

View File

@@ -20,6 +20,8 @@ PODS:
- FMDB (2.7.5): - FMDB (2.7.5):
- FMDB/standard (= 2.7.5) - FMDB/standard (= 2.7.5)
- FMDB/standard (2.7.5) - FMDB/standard (2.7.5)
- geolocator_apple (1.2.0):
- Flutter
- image_picker_ios (0.0.1): - image_picker_ios (0.0.1):
- Flutter - Flutter
- integration_test (0.0.1): - integration_test (0.0.1):
@@ -33,7 +35,7 @@ PODS:
- FlutterMacOS - FlutterMacOS
- path_provider_ios (0.0.1): - path_provider_ios (0.0.1):
- Flutter - Flutter
- permission_handler_apple (9.0.4): - permission_handler_apple (9.1.1):
- Flutter - Flutter
- photo_manager (2.0.0): - photo_manager (2.0.0):
- Flutter - Flutter
@@ -53,7 +55,7 @@ PODS:
- Flutter - Flutter
- video_player_avfoundation (0.0.1): - video_player_avfoundation (0.0.1):
- Flutter - Flutter
- wakelock (0.0.1): - wakelock_plus (0.0.1):
- Flutter - Flutter
DEPENDENCIES: DEPENDENCIES:
@@ -65,6 +67,7 @@ DEPENDENCIES:
- flutter_udid (from `.symlinks/plugins/flutter_udid/ios`) - flutter_udid (from `.symlinks/plugins/flutter_udid/ios`)
- flutter_web_auth (from `.symlinks/plugins/flutter_web_auth/ios`) - flutter_web_auth (from `.symlinks/plugins/flutter_web_auth/ios`)
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
- geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
- integration_test (from `.symlinks/plugins/integration_test/ios`) - integration_test (from `.symlinks/plugins/integration_test/ios`)
- isar_flutter_libs (from `.symlinks/plugins/isar_flutter_libs/ios`) - isar_flutter_libs (from `.symlinks/plugins/isar_flutter_libs/ios`)
@@ -78,7 +81,7 @@ DEPENDENCIES:
- sqflite (from `.symlinks/plugins/sqflite/ios`) - sqflite (from `.symlinks/plugins/sqflite/ios`)
- 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/ios`) - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/ios`)
- wakelock (from `.symlinks/plugins/wakelock/ios`) - wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`)
SPEC REPOS: SPEC REPOS:
trunk: trunk:
@@ -104,6 +107,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/flutter_web_auth/ios" :path: ".symlinks/plugins/flutter_web_auth/ios"
fluttertoast: fluttertoast:
:path: ".symlinks/plugins/fluttertoast/ios" :path: ".symlinks/plugins/fluttertoast/ios"
geolocator_apple:
:path: ".symlinks/plugins/geolocator_apple/ios"
image_picker_ios: image_picker_ios:
:path: ".symlinks/plugins/image_picker_ios/ios" :path: ".symlinks/plugins/image_picker_ios/ios"
integration_test: integration_test:
@@ -130,8 +135,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/url_launcher_ios/ios" :path: ".symlinks/plugins/url_launcher_ios/ios"
video_player_avfoundation: video_player_avfoundation:
:path: ".symlinks/plugins/video_player_avfoundation/ios" :path: ".symlinks/plugins/video_player_avfoundation/ios"
wakelock: wakelock_plus:
:path: ".symlinks/plugins/wakelock/ios" :path: ".symlinks/plugins/wakelock_plus/ios"
SPEC CHECKSUMS: SPEC CHECKSUMS:
connectivity_plus: 07c49e96d7fc92bc9920617b83238c4d178b446a connectivity_plus: 07c49e96d7fc92bc9920617b83238c4d178b446a
@@ -141,26 +146,27 @@ SPEC CHECKSUMS:
flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef
flutter_udid: 0848809dbed4c055175747ae6a45a8b4f6771e1c flutter_udid: 0848809dbed4c055175747ae6a45a8b4f6771e1c
flutter_web_auth: c25208760459cec375a3c39f6a8759165ca0fa4d flutter_web_auth: c25208760459cec375a3c39f6a8759165ca0fa4d
fluttertoast: eb263d302cc92e04176c053d2385237e9f43fad0 fluttertoast: fafc4fa4d01a6a9e4f772ecd190ffa525e9e2d9c
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
geolocator_apple: cc556e6844d508c95df1e87e3ea6fa4e58c50401
image_picker_ios: 4a8aadfbb6dc30ad5141a2ce3832af9214a705b5 image_picker_ios: 4a8aadfbb6dc30ad5141a2ce3832af9214a705b5
integration_test: 13825b8a9334a850581300559b8839134b124670 integration_test: 13825b8a9334a850581300559b8839134b124670
isar_flutter_libs: b69f437aeab9c521821c3f376198c4371fa21073 isar_flutter_libs: b69f437aeab9c521821c3f376198c4371fa21073
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e package_info_plus: fd030dabf36271f146f1f3beacd48f564b0f17f7
path_provider_foundation: eaf5b3e458fc0e5fbb9940fb09980e853fe058b8 path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02 path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02
permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6
photo_manager: 4f6810b7dfc4feb03b461ac1a70dacf91fba7604 photo_manager: 4f6810b7dfc4feb03b461ac1a70dacf91fba7604
ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825 ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
SAMKeychain: 483e1c9f32984d50ca961e26818a534283b4cd5c SAMKeychain: 483e1c9f32984d50ca961e26818a534283b4cd5c
share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68 share_plus: 599aa54e4ea31d4b4c0e9c911bcc26c55e791028
shared_preferences_foundation: e2dae3258e06f44cc55f49d42024fd8dd03c590c shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126
sqflite: 31f7eba61e3074736dff8807a9b41581e4f7f15a sqflite: 31f7eba61e3074736dff8807a9b41581e4f7f15a
Toast: 91b396c56ee72a5790816f40d3a94dd357abc196 Toast: 91b396c56ee72a5790816f40d3a94dd357abc196
url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4 url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4
video_player_avfoundation: 81e49bb3d9fb63dccf9fa0f6d877dc3ddbeac126 video_player_avfoundation: 81e49bb3d9fb63dccf9fa0f6d877dc3ddbeac126
wakelock: d0fc7c864128eac40eba1617cb5264d9c940b46f wakelock_plus: 8b09852c8876491e4b6d179e17dfe2a0b5f60d47
PODFILE CHECKSUM: 599d8aeb73728400c15364e734525722250a5382 PODFILE CHECKSUM: 599d8aeb73728400c15364e734525722250a5382
COCOAPODS: 1.11.3 COCOAPODS: 1.12.1

View File

@@ -171,7 +171,7 @@
97C146E61CF9000F007C117D /* Project object */ = { 97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
LastUpgradeCheck = 1300; LastUpgradeCheck = 1430;
ORGANIZATIONNAME = ""; ORGANIZATIONNAME = "";
TargetAttributes = { TargetAttributes = {
97C146ED1CF9000F007C117D = { 97C146ED1CF9000F007C117D = {
@@ -379,7 +379,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 = 110; CURRENT_PROJECT_VERSION = 116;
DEVELOPMENT_TEAM = 2F67MQ8R79; DEVELOPMENT_TEAM = 2F67MQ8R79;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
@@ -515,7 +515,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 = 110; CURRENT_PROJECT_VERSION = 116;
DEVELOPMENT_TEAM = 2F67MQ8R79; DEVELOPMENT_TEAM = 2F67MQ8R79;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
@@ -543,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 = 110; CURRENT_PROJECT_VERSION = 116;
DEVELOPMENT_TEAM = 2F67MQ8R79; DEVELOPMENT_TEAM = 2F67MQ8R79;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "1300" LastUpgradeVersion = "1430"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"

View File

@@ -59,11 +59,11 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.70.0</string> <string>1.76.0</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>110</string> <string>116</string>
<key>FLTEnableImpeller</key> <key>FLTEnableImpeller</key>
<true /> <true />
<key>ITSAppUsesNonExemptEncryption</key> <key>ITSAppUsesNonExemptEncryption</key>
@@ -83,8 +83,6 @@
</dict> </dict>
<key>NSCameraUsageDescription</key> <key>NSCameraUsageDescription</key>
<string>We need to access the camera to let you take beautiful video using this app</string> <string>We need to access the camera to let you take beautiful video using this app</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Enable location setting to show position of assets on map</string>
<key>NSLocationWhenInUseUsageDescription</key> <key>NSLocationWhenInUseUsageDescription</key>
<string>Enable location setting to show position of assets on map</string> <string>Enable location setting to show position of assets on map</string>
<key>NSMicrophoneUsageDescription</key> <key>NSMicrophoneUsageDescription</key>

View File

@@ -1,4 +1,4 @@
#!/bin/sh #!/usr/bin/env sh
# The default execution directory of this script is the ci_scripts directory. # The default execution directory of this script is the ci_scripts directory.
cd $CI_WORKSPACE/mobile cd $CI_WORKSPACE/mobile

View File

@@ -19,7 +19,7 @@ platform :ios do
desc "iOS Beta" desc "iOS Beta"
lane :beta do lane :beta do
increment_version_number( increment_version_number(
version_number: "1.72.2" version_number: "1.76.1"
) )
increment_build_number( increment_build_number(
build_number: latest_testflight_build_number + 1, build_number: latest_testflight_build_number + 1,

View File

@@ -5,32 +5,32 @@
<testcase classname="fastlane.lanes" name="0: default_platform" time="0.000211"> <testcase classname="fastlane.lanes" name="0: default_platform" time="0.000243">
</testcase> </testcase>
<testcase classname="fastlane.lanes" name="1: increment_version_number" time="2.108738"> <testcase classname="fastlane.lanes" name="1: increment_version_number" time="2.611762">
</testcase> </testcase>
<testcase classname="fastlane.lanes" name="2: latest_testflight_build_number" time="28.952846"> <testcase classname="fastlane.lanes" name="2: latest_testflight_build_number" time="6.937008">
</testcase> </testcase>
<testcase classname="fastlane.lanes" name="3: increment_build_number" time="1.821481"> <testcase classname="fastlane.lanes" name="3: increment_build_number" time="2.740416">
</testcase> </testcase>
<testcase classname="fastlane.lanes" name="4: build_app" time="99.212621"> <testcase classname="fastlane.lanes" name="4: build_app" time="93.625943">
</testcase> </testcase>
<testcase classname="fastlane.lanes" name="5: upload_to_testflight" time="68.366701"> <testcase classname="fastlane.lanes" name="5: upload_to_testflight" time="62.107671">
</testcase> </testcase>

View File

@@ -11,13 +11,6 @@ import 'package:immich_mobile/constants/locales.dart';
import 'package:immich_mobile/modules/backup/background_service/background.service.dart'; import 'package:immich_mobile/modules/backup/background_service/background.service.dart';
import 'package:immich_mobile/modules/backup/models/backup_album.model.dart'; import 'package:immich_mobile/modules/backup/models/backup_album.model.dart';
import 'package:immich_mobile/modules/backup/models/duplicated_asset.model.dart'; import 'package:immich_mobile/modules/backup/models/duplicated_asset.model.dart';
import 'package:immich_mobile/modules/backup/providers/backup.provider.dart';
import 'package:immich_mobile/modules/backup/providers/ios_background_settings.provider.dart';
import 'package:immich_mobile/modules/backup/providers/manual_upload.provider.dart';
import 'package:immich_mobile/modules/login/providers/authentication.provider.dart';
import 'package:immich_mobile/modules/memories/providers/memory.provider.dart';
import 'package:immich_mobile/modules/onboarding/providers/gallery_permission.provider.dart';
import 'package:immich_mobile/modules/settings/providers/notification_permission.provider.dart';
import 'package:immich_mobile/routing/router.dart'; import 'package:immich_mobile/routing/router.dart';
import 'package:immich_mobile/routing/tab_navigation_observer.dart'; import 'package:immich_mobile/routing/tab_navigation_observer.dart';
import 'package:immich_mobile/shared/models/album.dart'; import 'package:immich_mobile/shared/models/album.dart';
@@ -30,11 +23,8 @@ import 'package:immich_mobile/shared/models/logger_message.model.dart';
import 'package:immich_mobile/shared/models/store.dart'; import 'package:immich_mobile/shared/models/store.dart';
import 'package:immich_mobile/shared/models/user.dart'; import 'package:immich_mobile/shared/models/user.dart';
import 'package:immich_mobile/shared/providers/app_state.provider.dart'; import 'package:immich_mobile/shared/providers/app_state.provider.dart';
import 'package:immich_mobile/shared/providers/asset.provider.dart';
import 'package:immich_mobile/shared/providers/db.provider.dart'; import 'package:immich_mobile/shared/providers/db.provider.dart';
import 'package:immich_mobile/shared/providers/release_info.provider.dart'; import 'package:immich_mobile/shared/providers/release_info.provider.dart';
import 'package:immich_mobile/shared/providers/server_info.provider.dart';
import 'package:immich_mobile/shared/providers/websocket.provider.dart';
import 'package:immich_mobile/shared/services/immich_logger.service.dart'; import 'package:immich_mobile/shared/services/immich_logger.service.dart';
import 'package:immich_mobile/shared/services/local_notification.service.dart'; import 'package:immich_mobile/shared/services/local_notification.service.dart';
import 'package:immich_mobile/shared/views/immich_loading_overlay.dart'; import 'package:immich_mobile/shared/views/immich_loading_overlay.dart';
@@ -44,7 +34,6 @@ import 'package:immich_mobile/utils/migration.dart';
import 'package:isar/isar.dart'; import 'package:isar/isar.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart';
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
@@ -74,11 +63,15 @@ Future<void> initApp() async {
FlutterError.onError = (details) { FlutterError.onError = (details) {
FlutterError.presentError(details); FlutterError.presentError(details);
log.severe(details.toString(), details, details.stack); log.severe(
'Catch all error: ${details.toString()} - ${details.exception} - ${details.library} - ${details.context} - ${details.stack}',
details,
details.stack,
);
}; };
PlatformDispatcher.instance.onError = (error, stack) { PlatformDispatcher.instance.onError = (error, stack) {
log.severe(error.toString(), error, stack); log.severe('Catch all error: ${error.toString()} - $error', error, stack);
return true; return true;
}; };
} }
@@ -133,54 +126,26 @@ class ImmichAppState extends ConsumerState<ImmichApp>
switch (state) { switch (state) {
case AppLifecycleState.resumed: case AppLifecycleState.resumed:
debugPrint("[APP STATE] resumed"); debugPrint("[APP STATE] resumed");
ref.watch(appStateProvider.notifier).state = AppStateEnum.resumed; ref.read(appStateProvider.notifier).handleAppResume();
var isAuthenticated = ref.watch(authenticationProvider).isAuthenticated;
final permission = ref.watch(galleryPermissionNotifier);
// Needs to be logged in and have gallery permissions
if (isAuthenticated && (permission.isGranted || permission.isLimited)) {
ref.read(backupProvider.notifier).resumeBackup();
ref.read(backgroundServiceProvider).resumeServiceIfEnabled();
ref.watch(assetProvider.notifier).getAllAsset();
ref.watch(serverInfoProvider.notifier).getServerVersion();
}
ref.watch(websocketProvider.notifier).connect();
ref.watch(releaseInfoProvider.notifier).checkGithubReleaseInfo();
ref
.watch(notificationPermissionProvider.notifier)
.getNotificationPermission();
ref
.watch(galleryPermissionNotifier.notifier)
.getGalleryPermissionStatus();
ref.read(iOSBackgroundSettingsProvider.notifier).refresh();
ref.invalidate(memoryFutureProvider);
break; break;
case AppLifecycleState.inactive: case AppLifecycleState.inactive:
debugPrint("[APP STATE] inactive"); debugPrint("[APP STATE] inactive");
ref.watch(appStateProvider.notifier).state = AppStateEnum.inactive; ref.read(appStateProvider.notifier).handleAppInactivity();
ImmichLogger().flush();
ref.watch(websocketProvider.notifier).disconnect();
ref.watch(manualUploadProvider.notifier).cancelBackup();
ref.read(backupProvider.notifier).cancelBackup();
break; break;
case AppLifecycleState.paused: case AppLifecycleState.paused:
debugPrint("[APP STATE] paused"); debugPrint("[APP STATE] paused");
ref.watch(appStateProvider.notifier).state = AppStateEnum.paused; ref.read(appStateProvider.notifier).handleAppPause();
break; break;
case AppLifecycleState.detached: case AppLifecycleState.detached:
debugPrint("[APP STATE] detached"); debugPrint("[APP STATE] detached");
ref.watch(appStateProvider.notifier).state = AppStateEnum.detached; ref.read(appStateProvider.notifier).handleAppDetached();
break;
case AppLifecycleState.hidden:
debugPrint("[APP STATE] hidden");
ref.read(appStateProvider.notifier).handleAppHidden();
break; break;
} }
} }

View File

@@ -56,6 +56,16 @@ class SharedAlbumNotifier extends StateNotifier<List<Album>> {
return _albumService.removeAssetFromAlbum(album, assets); return _albumService.removeAssetFromAlbum(album, assets);
} }
Future<bool> removeUserFromAlbum(Album album, User user) async {
final result = await _albumService.removeUserFromAlbum(album, user);
if (result && album.sharedUsers.isEmpty) {
state = state.where((element) => element.id != album.id).toList();
}
return result;
}
@override @override
void dispose() { void dispose() {
_streamSub.cancel(); _streamSub.cancel();

View File

@@ -348,6 +348,26 @@ class AlbumService {
} }
} }
Future<bool> removeUserFromAlbum(
Album album,
User user,
) async {
try {
await _apiService.albumApi.removeUserFromAlbum(
album.remoteId!,
user.id,
);
album.sharedUsers.remove(user);
await _db.writeTxn(() => album.sharedUsers.update(unlink: [user]));
return true;
} catch (e) {
debugPrint("Error removeUserFromAlbum ${e.toString()}");
return false;
}
}
Future<bool> changeTitleAlbum( Future<bool> changeTitleAlbum(
Album album, Album album,
String newAlbumTitle, String newAlbumTitle,

View File

@@ -49,7 +49,7 @@ class AlbumThumbnailListTile extends StatelessWidget {
type: ThumbnailFormat.JPEG, type: ThumbnailFormat.JPEG,
), ),
httpHeaders: { httpHeaders: {
"Authorization": "Bearer ${Store.get(StoreKey.accessToken)}" "Authorization": "Bearer ${Store.get(StoreKey.accessToken)}",
}, },
cacheKey: getAlbumThumbNailCacheKey(album, type: ThumbnailFormat.JPEG), cacheKey: getAlbumThumbNailCacheKey(album, type: ThumbnailFormat.JPEG),
errorWidget: (context, url, error) => errorWidget: (context, url, error) =>
@@ -105,9 +105,9 @@ class AlbumThumbnailListTile extends StatelessWidget {
style: TextStyle( style: TextStyle(
fontSize: 12, fontSize: 12,
), ),
).tr() ).tr(),
], ],
) ),
], ],
), ),
), ),

View File

@@ -69,6 +69,11 @@ class AlbumTitleTextField extends ConsumerWidget {
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
), ),
hintText: 'share_add_title'.tr(), hintText: 'share_add_title'.tr(),
hintStyle: TextStyle(
fontSize: 28,
color: isDarkTheme ? Colors.grey[300] : Colors.grey[700],
fontWeight: FontWeight.bold,
),
focusColor: Colors.grey[300], focusColor: Colors.grey[300],
fillColor: isDarkTheme fillColor: isDarkTheme
? const Color.fromARGB(255, 32, 33, 35) ? const Color.fromARGB(255, 32, 33, 35)

View File

@@ -39,7 +39,7 @@ class AlbumViewerAppbar extends HookConsumerWidget
final newAlbumTitle = ref.watch(albumViewerProvider).editTitleText; final newAlbumTitle = ref.watch(albumViewerProvider).editTitleText;
final isEditAlbum = ref.watch(albumViewerProvider).isEditAlbum; final isEditAlbum = ref.watch(albumViewerProvider).isEditAlbum;
void onDeleteAlbumPressed() async { deleteAlbum() async {
ImmichLoadingOverlayController.appLoader.show(); ImmichLoadingOverlayController.appLoader.show();
final bool success; final bool success;
@@ -65,6 +65,52 @@ class AlbumViewerAppbar extends HookConsumerWidget
ImmichLoadingOverlayController.appLoader.hide(); ImmichLoadingOverlayController.appLoader.hide();
} }
Future<void> showConfirmationDialog() async {
return showDialog<void>(
context: context,
barrierDismissible: false, // user must tap button!
builder: (BuildContext context) {
return AlertDialog(
title: const Text('Delete album'),
content: const Text(
'Are you sure you want to delete this album from your account?',
),
actions: <Widget>[
TextButton(
onPressed: () => Navigator.pop(context, 'Cancel'),
child: Text(
'Cancel',
style: TextStyle(
color: Theme.of(context).primaryColor,
fontWeight: FontWeight.bold,
),
),
),
TextButton(
onPressed: () {
Navigator.pop(context, 'Confirm');
deleteAlbum();
},
child: Text(
'Confirm',
style: TextStyle(
fontWeight: FontWeight.bold,
color: Theme.of(context).brightness == Brightness.light
? Colors.red
: Colors.red[300],
),
),
),
],
);
},
);
}
void onDeleteAlbumPressed() async {
showConfirmationDialog();
}
void onLeaveAlbumPressed() async { void onLeaveAlbumPressed() async {
ImmichLoadingOverlayController.appLoader.show(); ImmichLoadingOverlayController.appLoader.show();
@@ -152,43 +198,61 @@ class AlbumViewerAppbar extends HookConsumerWidget
} }
void buildBottomSheet() { void buildBottomSheet() {
final ownerActions = [
ListTile(
leading: const Icon(Icons.person_add_alt_rounded),
onTap: () {
Navigator.pop(context);
onAddUsers!(album);
},
title: const Text(
"album_viewer_page_share_add_users",
style: TextStyle(fontWeight: FontWeight.bold),
).tr(),
),
ListTile(
leading: const Icon(Icons.settings_rounded),
onTap: () =>
AutoRouter.of(context).navigate(AlbumOptionsRoute(album: album)),
title: const Text(
"translated_text_options",
style: TextStyle(fontWeight: FontWeight.bold),
).tr(),
),
];
final commonActions = [
ListTile(
leading: const Icon(Icons.add_photo_alternate_outlined),
onTap: () {
Navigator.pop(context);
onAddPhotos!(album);
},
title: const Text(
"share_add_photos",
style: TextStyle(fontWeight: FontWeight.bold),
).tr(),
),
];
showModalBottomSheet( showModalBottomSheet(
backgroundColor: Theme.of(context).scaffoldBackgroundColor, backgroundColor: Theme.of(context).scaffoldBackgroundColor,
isScrollControlled: false, isScrollControlled: false,
context: context, context: context,
builder: (context) { builder: (context) {
return SafeArea( return SafeArea(
child: Column( child: Padding(
mainAxisSize: MainAxisSize.min, padding: const EdgeInsets.only(top: 24.0),
children: [ child: Column(
buildBottomSheetActionButton(), mainAxisSize: MainAxisSize.min,
if (selected.isEmpty && onAddPhotos != null) children: [
ListTile( buildBottomSheetActionButton(),
leading: const Icon(Icons.add_photo_alternate_outlined), if (selected.isEmpty && onAddPhotos != null) ...commonActions,
onTap: () { if (selected.isEmpty &&
Navigator.pop(context); onAddPhotos != null &&
onAddPhotos!(album); userId == album.ownerId)
}, ...ownerActions,
title: const Text( ],
"share_add_photos", ),
style: TextStyle(fontWeight: FontWeight.bold),
).tr(),
),
if (selected.isEmpty &&
onAddPhotos != null &&
userId == album.ownerId)
ListTile(
leading: const Icon(Icons.person_add_alt_rounded),
onTap: () {
Navigator.pop(context);
onAddUsers!(album);
},
title: const Text(
"album_viewer_page_share_add_users",
style: TextStyle(fontWeight: FontWeight.bold),
).tr(),
),
],
), ),
); );
}, },
@@ -217,6 +281,8 @@ class AlbumViewerAppbar extends HookConsumerWidget
toastType: ToastType.error, toastType: ToastType.error,
); );
} }
titleFocusNode.unfocus();
}, },
icon: const Icon(Icons.check_rounded), icon: const Icon(Icons.check_rounded),
splashRadius: 25, splashRadius: 25,

View File

@@ -84,6 +84,11 @@ class AlbumViewerEditableTitle extends HookConsumerWidget {
: Colors.grey[200], : Colors.grey[200],
filled: titleFocusNode.hasFocus, filled: titleFocusNode.hasFocus,
hintText: 'share_add_title'.tr(), hintText: 'share_add_title'.tr(),
hintStyle: TextStyle(
fontSize: 28,
color: isDarkTheme ? Colors.grey[300] : Colors.grey[700],
fontWeight: FontWeight.bold,
),
), ),
); );
} }

View File

@@ -0,0 +1,205 @@
import 'package:auto_route/auto_route.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/modules/album/providers/shared_album.provider.dart';
import 'package:immich_mobile/modules/login/providers/authentication.provider.dart';
import 'package:immich_mobile/routing/router.dart';
import 'package:immich_mobile/shared/models/album.dart';
import 'package:immich_mobile/shared/models/user.dart';
import 'package:immich_mobile/shared/ui/immich_toast.dart';
import 'package:immich_mobile/shared/ui/user_circle_avatar.dart';
import 'package:immich_mobile/shared/views/immich_loading_overlay.dart';
class AlbumOptionsPage extends HookConsumerWidget {
final Album album;
const AlbumOptionsPage({super.key, required this.album});
@override
Widget build(BuildContext context, WidgetRef ref) {
final sharedUsers = useState(album.sharedUsers.toList());
final owner = album.owner.value;
final userId = ref.watch(authenticationProvider).userId;
final isOwner = owner?.id == userId;
void showErrorMessage() {
Navigator.pop(context);
ImmichToast.show(
context: context,
msg: "Error leaving/removing from album",
toastType: ToastType.error,
gravity: ToastGravity.BOTTOM,
);
}
void leaveAlbum() async {
ImmichLoadingOverlayController.appLoader.show();
try {
final isSuccess =
await ref.read(sharedAlbumProvider.notifier).leaveAlbum(album);
if (isSuccess) {
AutoRouter.of(context)
.navigate(const TabControllerRoute(children: [SharingRoute()]));
} else {
showErrorMessage();
}
} catch (_) {
showErrorMessage();
}
ImmichLoadingOverlayController.appLoader.hide();
}
void removeUserFromAlbum(User user) async {
ImmichLoadingOverlayController.appLoader.show();
try {
await ref
.read(sharedAlbumProvider.notifier)
.removeUserFromAlbum(album, user);
album.sharedUsers.remove(user);
sharedUsers.value = album.sharedUsers.toList();
} catch (error) {
showErrorMessage();
}
Navigator.pop(context);
ImmichLoadingOverlayController.appLoader.hide();
}
void handleUserClick(User user) {
var actions = [];
if (user.id == userId) {
actions = [
ListTile(
leading: const Icon(Icons.exit_to_app_rounded),
title: const Text("Leave album"),
onTap: leaveAlbum,
),
];
}
if (isOwner) {
actions = [
ListTile(
leading: const Icon(Icons.person_remove_rounded),
title: const Text("Remove user from album"),
onTap: () => removeUserFromAlbum(user),
),
];
}
showModalBottomSheet(
backgroundColor: Theme.of(context).scaffoldBackgroundColor,
isScrollControlled: false,
context: context,
builder: (context) {
return SafeArea(
child: Padding(
padding: const EdgeInsets.only(top: 24.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [...actions],
),
),
);
},
);
}
buildOwnerInfo() {
return ListTile(
leading: owner != null
? UserCircleAvatar(
user: owner,
useRandomBackgroundColor: true,
)
: const SizedBox(),
title: Text(
album.owner.value?.firstName ?? "",
style: const TextStyle(
fontWeight: FontWeight.bold,
),
),
subtitle: Text(
album.owner.value?.email ?? "",
style: TextStyle(color: Colors.grey[500]),
),
trailing: const Text(
"Owner",
style: TextStyle(
fontWeight: FontWeight.bold,
),
),
);
}
buildSharedUsersList() {
return ListView.builder(
shrinkWrap: true,
itemCount: sharedUsers.value.length,
itemBuilder: (context, index) {
final user = sharedUsers.value[index];
return ListTile(
leading: UserCircleAvatar(
user: user,
useRandomBackgroundColor: true,
radius: 22,
),
title: Text(
user.firstName,
style: const TextStyle(
fontWeight: FontWeight.bold,
),
),
subtitle: Text(
user.email,
style: TextStyle(color: Colors.grey[500]),
),
trailing: userId == user.id || isOwner
? const Icon(Icons.more_horiz_rounded)
: const SizedBox(),
onTap: userId == user.id || isOwner
? () => handleUserClick(user)
: null,
);
},
);
}
buildSectionTitle(String text) {
return Padding(
padding: const EdgeInsets.all(16.0),
child: Text(text, style: Theme.of(context).textTheme.bodySmall),
);
}
return Scaffold(
appBar: AppBar(
leading: IconButton(
icon: const Icon(Icons.arrow_back_ios_new_rounded),
onPressed: () {
AutoRouter.of(context).pop(null);
},
),
centerTitle: true,
title: Text("translated_text_options".tr()),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
buildSectionTitle("PEOPLE"),
buildOwnerInfo(),
buildSharedUsersList(),
],
),
);
}
}

View File

@@ -17,6 +17,7 @@ import 'package:immich_mobile/routing/router.dart';
import 'package:immich_mobile/shared/models/album.dart'; import 'package:immich_mobile/shared/models/album.dart';
import 'package:immich_mobile/shared/models/asset.dart'; import 'package:immich_mobile/shared/models/asset.dart';
import 'package:immich_mobile/shared/ui/immich_loading_indicator.dart'; import 'package:immich_mobile/shared/ui/immich_loading_indicator.dart';
import 'package:immich_mobile/shared/ui/user_circle_avatar.dart';
import 'package:immich_mobile/shared/views/immich_loading_overlay.dart'; import 'package:immich_mobile/shared/views/immich_loading_overlay.dart';
class AlbumViewerPage extends HookConsumerWidget { class AlbumViewerPage extends HookConsumerWidget {
@@ -116,7 +117,7 @@ class AlbumViewerPage extends HookConsumerWidget {
Widget buildControlButton(Album album) { Widget buildControlButton(Album album) {
return Padding( return Padding(
padding: const EdgeInsets.only(left: 16.0, top: 8, bottom: 8), padding: const EdgeInsets.only(left: 16.0, top: 8, bottom: 16),
child: SizedBox( child: SizedBox(
height: 40, height: 40,
child: ListView( child: ListView(
@@ -141,7 +142,7 @@ class AlbumViewerPage extends HookConsumerWidget {
Widget buildTitle(Album album) { Widget buildTitle(Album album) {
return Padding( return Padding(
padding: const EdgeInsets.only(left: 8, right: 8, top: 16), padding: const EdgeInsets.only(left: 8, right: 8, top: 24),
child: userId == album.ownerId && album.isRemote child: userId == album.ownerId && album.isRemote
? AlbumViewerEditableTitle( ? AlbumViewerEditableTitle(
album: album, album: album,
@@ -172,7 +173,6 @@ class AlbumViewerPage extends HookConsumerWidget {
return Padding( return Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
left: 16.0, left: 16.0,
top: 8.0,
bottom: album.shared ? 0.0 : 8.0, bottom: album.shared ? 0.0 : 8.0,
), ),
child: Text( child: Text(
@@ -180,7 +180,34 @@ class AlbumViewerPage extends HookConsumerWidget {
style: const TextStyle( style: const TextStyle(
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: Colors.grey, ),
),
);
}
Widget buildSharedUserIconsRow(Album album) {
return GestureDetector(
onTap: () async {
await AutoRouter.of(context).push(AlbumOptionsRoute(album: album));
ref.invalidate(albumDetailProvider(album.id));
},
child: SizedBox(
height: 50,
child: ListView.builder(
padding: const EdgeInsets.only(left: 16),
scrollDirection: Axis.horizontal,
itemBuilder: ((context, index) {
return Padding(
padding: const EdgeInsets.only(right: 8.0),
child: UserCircleAvatar(
user: album.sharedUsers.toList()[index],
radius: 18,
size: 36,
useRandomBackgroundColor: true,
),
);
}),
itemCount: album.sharedUsers.length,
), ),
), ),
); );
@@ -193,33 +220,7 @@ class AlbumViewerPage extends HookConsumerWidget {
children: [ children: [
buildTitle(album), buildTitle(album),
if (album.assets.isNotEmpty == true) buildAlbumDateRange(album), if (album.assets.isNotEmpty == true) buildAlbumDateRange(album),
if (album.shared) if (album.shared) buildSharedUserIconsRow(album),
SizedBox(
height: 50,
child: ListView.builder(
padding: const EdgeInsets.only(left: 16),
scrollDirection: Axis.horizontal,
itemBuilder: ((context, index) {
return Padding(
padding: const EdgeInsets.only(right: 8.0),
child: CircleAvatar(
backgroundColor: Colors.grey[300],
radius: 18,
child: Padding(
padding: const EdgeInsets.all(2.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(50.0),
child: Image.asset(
'assets/immich-logo-no-outline.png',
),
),
),
),
);
}),
itemCount: album.sharedUsers.length,
),
),
], ],
); );
} }

View File

@@ -73,9 +73,12 @@ class AssetSelectionPage extends HookConsumerWidget {
AutoRouter.of(context) AutoRouter.of(context)
.popForced<AssetSelectionPageResult>(payload); .popForced<AssetSelectionPageResult>(payload);
}, },
child: const Text( child: Text(
"share_add", "share_add",
style: TextStyle(fontWeight: FontWeight.bold), style: TextStyle(
fontWeight: FontWeight.bold,
color: Theme.of(context).primaryColor,
),
).tr(), ).tr(),
), ),
], ],

View File

@@ -30,7 +30,8 @@ class CreateAlbumPage extends HookConsumerWidget {
final albumTitleTextFieldFocusNode = useFocusNode(); final albumTitleTextFieldFocusNode = useFocusNode();
final isAlbumTitleTextFieldFocus = useState(false); final isAlbumTitleTextFieldFocus = useState(false);
final isAlbumTitleEmpty = useState(true); final isAlbumTitleEmpty = useState(true);
final selectedAssets = useState<Set<Asset>>(initialAssets != null ? Set.from(initialAssets!) : const {}); final selectedAssets = useState<Set<Asset>>(
initialAssets != null ? Set.from(initialAssets!) : const {},);
final isDarkTheme = Theme.of(context).brightness == Brightness.dark; final isDarkTheme = Theme.of(context).brightness == Brightness.dark;
showSelectUserPage() async { showSelectUserPage() async {
@@ -248,8 +249,9 @@ class CreateAlbumPage extends HookConsumerWidget {
: null, : null,
child: Text( child: Text(
'create_shared_album_page_create'.tr(), 'create_shared_album_page_create'.tr(),
style: const TextStyle( style: TextStyle(
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: Theme.of(context).primaryColor,
), ),
), ),
), ),

View File

@@ -60,7 +60,7 @@ class LibraryPage extends HookConsumerWidget {
Widget buildSortButton() { Widget buildSortButton() {
final options = [ final options = [
"library_page_sort_created".tr(), "library_page_sort_created".tr(),
"library_page_sort_title".tr() "library_page_sort_title".tr(),
]; ];
return PopupMenuButton( return PopupMenuButton(
@@ -87,7 +87,7 @@ class LibraryPage extends HookConsumerWidget {
color: selected ? Theme.of(context).primaryColor : null, color: selected ? Theme.of(context).primaryColor : null,
fontSize: 12.0, fontSize: 12.0,
), ),
) ),
], ],
), ),
); );

View File

@@ -7,6 +7,7 @@ import 'package:immich_mobile/modules/album/providers/suggested_shared_users.pro
import 'package:immich_mobile/shared/models/album.dart'; import 'package:immich_mobile/shared/models/album.dart';
import 'package:immich_mobile/shared/models/user.dart'; import 'package:immich_mobile/shared/models/user.dart';
import 'package:immich_mobile/shared/ui/immich_loading_indicator.dart'; import 'package:immich_mobile/shared/ui/immich_loading_indicator.dart';
import 'package:immich_mobile/shared/ui/user_circle_avatar.dart';
class SelectAdditionalUserForSharingPage extends HookConsumerWidget { class SelectAdditionalUserForSharingPage extends HookConsumerWidget {
final Album album; final Album album;
@@ -35,10 +36,8 @@ class SelectAdditionalUserForSharingPage extends HookConsumerWidget {
), ),
); );
} else { } else {
return CircleAvatar( return UserCircleAvatar(
backgroundImage: user: user,
const AssetImage('assets/immich-logo-no-outline.png'),
backgroundColor: Theme.of(context).primaryColor.withAlpha(50),
); );
} }
} }
@@ -103,7 +102,7 @@ class SelectAdditionalUserForSharingPage extends HookConsumerWidget {
} else { } else {
sharedUsersList.value = { sharedUsersList.value = {
...sharedUsersList.value, ...sharedUsersList.value,
users[index] users[index],
}; };
} }
}, },
@@ -136,7 +135,7 @@ class SelectAdditionalUserForSharingPage extends HookConsumerWidget {
"share_add", "share_add",
style: TextStyle(fontSize: 14, fontWeight: FontWeight.bold), style: TextStyle(fontSize: 14, fontWeight: FontWeight.bold),
).tr(), ).tr(),
) ),
], ],
), ),
body: suggestedShareUsers.when( body: suggestedShareUsers.when(

View File

@@ -10,6 +10,7 @@ import 'package:immich_mobile/routing/router.dart';
import 'package:immich_mobile/shared/models/asset.dart'; import 'package:immich_mobile/shared/models/asset.dart';
import 'package:immich_mobile/shared/models/user.dart'; import 'package:immich_mobile/shared/models/user.dart';
import 'package:immich_mobile/shared/ui/immich_loading_indicator.dart'; import 'package:immich_mobile/shared/ui/immich_loading_indicator.dart';
import 'package:immich_mobile/shared/ui/user_circle_avatar.dart';
class SelectUserForSharingPage extends HookConsumerWidget { class SelectUserForSharingPage extends HookConsumerWidget {
const SelectUserForSharingPage({Key? key, required this.assets}) const SelectUserForSharingPage({Key? key, required this.assets})
@@ -56,10 +57,8 @@ class SelectUserForSharingPage extends HookConsumerWidget {
), ),
); );
} else { } else {
return CircleAvatar( return UserCircleAvatar(
backgroundImage: user: user,
const AssetImage('assets/immich-logo-no-outline.png'),
backgroundColor: Theme.of(context).primaryColor.withAlpha(50),
); );
} }
} }
@@ -124,7 +123,7 @@ class SelectUserForSharingPage extends HookConsumerWidget {
} else { } else {
sharedUsersList.value = { sharedUsersList.value = {
...sharedUsersList.value, ...sharedUsersList.value,
users[index] users[index],
}; };
} }
}, },
@@ -164,7 +163,7 @@ class SelectUserForSharingPage extends HookConsumerWidget {
// color: Theme.of(context).primaryColor, // color: Theme.of(context).primaryColor,
), ),
).tr(), ).tr(),
) ),
], ],
), ),
body: suggestedShareUsers.when( body: suggestedShareUsers.when(

View File

@@ -160,7 +160,7 @@ class SharingPage extends HookConsumerWidget {
maxLines: 1, maxLines: 1,
).tr(), ).tr(),
), ),
) ),
], ],
), ),
); );

View File

@@ -2,14 +2,12 @@ import 'package:auto_route/auto_route.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/modules/archive/providers/archive_asset_provider.dart'; import 'package:immich_mobile/modules/archive/providers/archive_asset_provider.dart';
import 'package:immich_mobile/modules/home/ui/asset_grid/immich_asset_grid.dart'; import 'package:immich_mobile/modules/home/ui/asset_grid/immich_asset_grid.dart';
import 'package:immich_mobile/shared/models/asset.dart'; import 'package:immich_mobile/shared/models/asset.dart';
import 'package:immich_mobile/shared/providers/asset.provider.dart';
import 'package:immich_mobile/shared/ui/immich_loading_indicator.dart'; import 'package:immich_mobile/shared/ui/immich_loading_indicator.dart';
import 'package:immich_mobile/shared/ui/immich_toast.dart'; import 'package:immich_mobile/utils/selection_handlers.dart';
class ArchivePage extends HookConsumerWidget { class ArchivePage extends HookConsumerWidget {
const ArchivePage({super.key}); const ArchivePage({super.key});
@@ -68,30 +66,18 @@ class ArchivePage extends HookConsumerWidget {
: () async { : () async {
processing.value = true; processing.value = true;
try { try {
if (selection.value.isNotEmpty) { await handleArchiveAssets(
await ref ref,
.watch(assetProvider.notifier) context,
.toggleArchive( selection.value.toList(),
selection.value.toList(), shouldArchive: false,
false, );
);
final assetOrAssets = selection.value.length > 1
? 'assets'
: 'asset';
ImmichToast.show(
context: context,
msg:
'Moved ${selection.value.length} $assetOrAssets to library',
gravity: ToastGravity.CENTER,
);
}
} finally { } finally {
processing.value = false; processing.value = false;
selectionEnabledHook.value = false; selectionEnabledHook.value = false;
} }
}, },
) ),
], ],
), ),
), ),
@@ -124,7 +110,7 @@ class ArchivePage extends HookConsumerWidget {
), ),
if (selectionEnabledHook.value) buildBottomBar(), if (selectionEnabledHook.value) buildBottomBar(),
if (processing.value) if (processing.value)
const Center(child: ImmichLoadingIndicator()) const Center(child: ImmichLoadingIndicator()),
], ],
), ),
), ),

View File

@@ -1,8 +1,11 @@
import 'dart:io';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_map/flutter_map.dart'; import 'package:flutter_map/flutter_map.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/modules/asset_viewer/ui/description_input.dart'; import 'package:immich_mobile/modules/asset_viewer/ui/description_input.dart';
import 'package:immich_mobile/modules/map/ui/map_thumbnail.dart';
import 'package:immich_mobile/shared/models/asset.dart'; import 'package:immich_mobile/shared/models/asset.dart';
import 'package:immich_mobile/shared/ui/drag_sheet.dart'; import 'package:immich_mobile/shared/ui/drag_sheet.dart';
import 'package:latlong2/latlong.dart'; import 'package:latlong2/latlong.dart';
@@ -14,9 +17,59 @@ class ExifBottomSheet extends HookConsumerWidget {
const ExifBottomSheet({Key? key, required this.asset}) : super(key: key); const ExifBottomSheet({Key? key, required this.asset}) : super(key: key);
bool get showMap => bool get hasCoordinates =>
asset.exifInfo?.latitude != null && asset.exifInfo?.longitude != null; asset.exifInfo?.latitude != null && asset.exifInfo?.longitude != null;
String get formattedDateTime {
final fileCreatedAt = asset.fileCreatedAt.toLocal();
final date = DateFormat.yMMMEd().format(fileCreatedAt);
final time = DateFormat.jm().format(fileCreatedAt);
return '$date$time';
}
Future<Uri?> _createCoordinatesUri() async {
if (!hasCoordinates) {
return null;
}
double latitude = asset.exifInfo!.latitude!;
double longitude = asset.exifInfo!.longitude!;
const zoomLevel = 16;
if (Platform.isAndroid) {
Uri uri = Uri(
scheme: 'geo',
host: '$latitude,$longitude',
queryParameters: {
'z': '$zoomLevel',
'q': '$latitude,$longitude($formattedDateTime)',
},
);
if (await canLaunchUrl(uri)) {
return uri;
}
} else if (Platform.isIOS) {
var params = {
'll': '$latitude,$longitude',
'q': formattedDateTime,
'z': '$zoomLevel',
};
Uri uri = Uri.https('maps.apple.com', '/', params);
if (await canLaunchUrl(uri)) {
return uri;
}
}
return Uri(
scheme: 'https',
host: 'openstreetmap.org',
queryParameters: {'mlat': '$latitude', 'mlon': '$longitude'},
fragment: 'map=$zoomLevel/$latitude/$longitude',
);
}
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
final exifInfo = asset.exifInfo; final exifInfo = asset.exifInfo;
@@ -28,55 +81,35 @@ class ExifBottomSheet extends HookConsumerWidget {
padding: const EdgeInsets.symmetric(vertical: 16.0), padding: const EdgeInsets.symmetric(vertical: 16.0),
child: LayoutBuilder( child: LayoutBuilder(
builder: (context, constraints) { builder: (context, constraints) {
return Container( return MapThumbnail(
height: 150, coords: LatLng(
width: constraints.maxWidth, exifInfo?.latitude ?? 0,
decoration: const BoxDecoration( exifInfo?.longitude ?? 0,
borderRadius: BorderRadius.all(Radius.circular(15)),
), ),
child: FlutterMap( height: 150,
options: MapOptions( zoom: 16.0,
interactiveFlags: InteractiveFlag.none, markers: [
center: LatLng( Marker(
anchorPos: AnchorPos.align(AnchorAlign.top),
point: LatLng(
exifInfo?.latitude ?? 0, exifInfo?.latitude ?? 0,
exifInfo?.longitude ?? 0, exifInfo?.longitude ?? 0,
), ),
zoom: 16.0, builder: (ctx) => const Image(
image: AssetImage('assets/location-pin.png'),
),
), ),
nonRotatedChildren: [ ],
RichAttributionWidget( onTap: (tapPosition, latLong) async {
attributions: [ Uri? uri = await _createCoordinatesUri();
TextSourceAttribution(
'OpenStreetMap contributors', if (uri == null) {
onTap: () => launchUrl( return;
Uri.parse('https://openstreetmap.org/copyright'), }
),
), debugPrint('Opening Map Uri: $uri');
], launchUrl(uri);
), },
],
children: [
TileLayer(
urlTemplate:
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
subdomains: const ['a', 'b', 'c'],
),
MarkerLayer(
markers: [
Marker(
anchorPos: AnchorPos.align(AnchorAlign.top),
point: LatLng(
exifInfo?.latitude ?? 0,
exifInfo?.longitude ?? 0,
),
builder: (ctx) => const Image(
image: AssetImage('assets/location-pin.png'),
),
),
],
),
],
),
); );
}, },
), ),
@@ -110,7 +143,7 @@ class ExifBottomSheet extends HookConsumerWidget {
buildLocation() { buildLocation() {
// Guard no lat/lng // Guard no lat/lng
if (!showMap) { if (!hasCoordinates) {
return Container(); return Container();
} }
@@ -158,7 +191,7 @@ class ExifBottomSheet extends HookConsumerWidget {
Text( Text(
"${exifInfo!.latitude!.toStringAsFixed(4)}, ${exifInfo.longitude!.toStringAsFixed(4)}", "${exifInfo!.latitude!.toStringAsFixed(4)}, ${exifInfo.longitude!.toStringAsFixed(4)}",
style: const TextStyle(fontSize: 12), style: const TextStyle(fontSize: 12),
) ),
], ],
), ),
], ],
@@ -166,12 +199,8 @@ class ExifBottomSheet extends HookConsumerWidget {
} }
buildDate() { buildDate() {
final fileCreatedAt = asset.fileCreatedAt.toLocal();
final date = DateFormat.yMMMEd().format(fileCreatedAt);
final time = DateFormat.jm().format(fileCreatedAt);
return Text( return Text(
'$date$time', formattedDateTime,
style: const TextStyle( style: const TextStyle(
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: 14, fontSize: 14,
@@ -226,7 +255,7 @@ class ExifBottomSheet extends HookConsumerWidget {
), ),
), ),
subtitle: Text( subtitle: Text(
"ƒ/${exifInfo.fNumber} ${exifInfo.exposureTime} ${exifInfo.focalLength} mm ISO${exifInfo.iso} ", "ƒ/${exifInfo.fNumber} ${exifInfo.exposureTime} ${exifInfo.focalLength} mm ISO ${exifInfo.iso ?? ''} ",
), ),
), ),
], ],
@@ -265,7 +294,7 @@ class ExifBottomSheet extends HookConsumerWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Flexible( Flexible(
flex: showMap ? 5 : 0, flex: hasCoordinates ? 5 : 0,
child: Padding( child: Padding(
padding: const EdgeInsets.only(right: 8.0), padding: const EdgeInsets.only(right: 8.0),
child: buildLocation(), child: buildLocation(),
@@ -295,7 +324,7 @@ class ExifBottomSheet extends HookConsumerWidget {
if (asset.isRemote) DescriptionInput(asset: asset), if (asset.isRemote) DescriptionInput(asset: asset),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
buildLocation(), buildLocation(),
SizedBox(height: showMap ? 16.0 : 0.0), SizedBox(height: hasCoordinates ? 16.0 : 0.0),
buildDetail(), buildDetail(),
const SizedBox(height: 50), const SizedBox(height: 50),
], ],

View File

@@ -128,7 +128,7 @@ class TopControlAppBar extends HookConsumerWidget {
if (asset.isLocal && !asset.isRemote) buildUploadButton(), if (asset.isLocal && !asset.isRemote) buildUploadButton(),
if (asset.isRemote && !asset.isLocal) buildDownloadButton(), if (asset.isRemote && !asset.isLocal) buildDownloadButton(),
if (asset.isRemote) buildAddToAlbumButtom(), if (asset.isRemote) buildAddToAlbumButtom(),
buildMoreInfoButton() buildMoreInfoButton(),
], ],
); );
} }

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