Compare commits

..

614 Commits

Author SHA1 Message Date
Prateek Sunal
0939d4c0d1 fix(auth/connectivity): try to fix certificate issue on windows 11 2024-07-17 16:00:01 +05:30
Neeraj Gupta
2242bdb2f8 fix(auth/import): remove cross button from import page (#2469)
## Description

## Tests
2024-07-17 15:57:43 +05:30
Prateek Sunal
c794eabf23 Merge remote-tracking branch 'origin/main' into auth-fixes 2024-07-17 15:41:40 +05:30
Prateek Sunal
de8a48287b chore(auth): lint fixes 2024-07-17 15:40:21 +05:30
Prateek Sunal
d9471e406c fix(auth/import): remove cross button from import page 2024-07-17 15:38:51 +05:30
Neeraj Gupta
70162c17d1 [mob] Use video probe data for getting location during upload (#2468)
## Description

## Tests
2024-07-17 15:16:09 +05:30
Neeraj Gupta
62f0825522 generated strings 2024-07-17 15:14:09 +05:30
Neeraj Gupta
826e549462 bump version 2024-07-17 15:13:51 +05:30
Neeraj Gupta
dac589b6b8 Backfill video location when fileInfo is viewed 2024-07-17 15:13:35 +05:30
Neeraj Gupta
600cbc15d2 Switch back to new video player 2024-07-17 15:03:48 +05:30
Neeraj Gupta
f33cea212f Use ffprobe for getting video location in Android 2024-07-17 15:01:26 +05:30
Neeraj Gupta
95369097a5 Merge metadata streams 2024-07-17 14:57:54 +05:30
Neeraj Gupta
087e84b7ba Remove border 2024-07-17 14:18:09 +05:30
Neeraj Gupta
7744b8101b Refactor 2024-07-17 14:10:07 +05:30
Neeraj Gupta
5d078b06be [mob] Show video metadata inside fileInfo (#2466)
## Description

## Tests
2024-07-16 18:02:29 +05:30
Neeraj Gupta
24aff0b9c1 bump version 2024-07-16 18:00:19 +05:30
Neeraj Gupta
fd001a9181 Fix lint 2024-07-16 17:59:56 +05:30
Neeraj Gupta
d6a970274c Format fps value 2024-07-16 17:57:02 +05:30
Neeraj Gupta
428b3e2cd6 Enable drag to close 2024-07-16 17:49:49 +05:30
Neeraj Gupta
1c5154ac26 Show dims and fps in the video info dialog 2024-07-16 17:47:10 +05:30
Neeraj Gupta
2b7dc88281 iOS build changes 2024-07-16 17:39:02 +05:30
Neeraj Gupta
95c92b0572 Show fps, bitrate and dim for video 2024-07-16 17:38:52 +05:30
Neeraj Gupta
c28b4934c4 Parse make, model and location for iPhone Videos 2024-07-16 16:52:55 +05:30
Neeraj Gupta
92b188bc21 Improve UI 2024-07-16 15:44:36 +05:30
Neeraj Gupta
daaa1d7423 Format creation time 2024-07-16 15:35:46 +05:30
Neeraj Gupta
f2ed6802d2 [mob] Rename 2024-07-16 14:48:38 +05:30
Neeraj Gupta
aeeed9cd11 [mob] Rename 2024-07-16 14:45:34 +05:30
Neeraj Gupta
e2ef2eacc4 [mob] Display video metadata in file info 2024-07-16 14:12:46 +05:30
Manav Rathi
9dc8a054f8 Fix typo (#2462) 2024-07-15 22:00:35 +05:30
Manav Rathi
c1f4a9f0d6 Fix typo 2024-07-15 21:59:16 +05:30
Ashil
b2e43624ba [mob][photos] Init magic cache service only if internal user (#2445) 2024-07-15 18:23:30 +05:30
Neeraj Gupta
8f5210d0a2 Fix grammar in CLI readme (#2449) 2024-07-15 18:21:29 +05:30
Neeraj Gupta
803e8b3a14 [auth] Add new icons (#2452)
Add Instant Gaming, Teleport and Mistral icons.

<!--- Describe your changes in detail -->

## Type of Change

<!--- Put an `x` in all the boxes that apply: -->

- [x] 🖼️ New icon
- [ ]  New feature (non-breaking change which adds functionality)
- [ ] 🛠️ Bug fix (non-breaking change which fixes an issue)
- [ ]  Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] 🧹 Code refactor
- [ ]  Build configuration change
- [ ] 📝 Documentation
- [ ] 🗑️ Chore
2024-07-15 18:21:10 +05:30
Neeraj Gupta
177bab2961 [mobile] New translations (#2454)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-07-15 18:20:34 +05:30
Neeraj Gupta
f2894d1d62 [auth] New translations (#2455)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-07-15 18:20:01 +05:30
Manav Rathi
1a39d2b648 [desktop] ML new derived data format - Part 1/x (#2460) 2024-07-15 16:22:49 +05:30
Manav Rathi
d6908ffda3 Fix 2024-07-15 16:16:17 +05:30
Manav Rathi
73ee6f5284 Mark bad images as failed instead of retrying indefinitely 2024-07-15 16:11:39 +05:30
Manav Rathi
32750599b9 Outline 2024-07-15 14:41:39 +05:30
Manav Rathi
e054247359 Rely on ML flag 2024-07-15 14:35:07 +05:30
Manav Rathi
6dca5c2a8b Fix p nesting warning 2024-07-15 14:28:50 +05:30
Manav Rathi
3941c05229 Simplify UI 2024-07-15 14:25:07 +05:30
Manav Rathi
1a61c02602 Simplify 2024-07-15 14:13:53 +05:30
Manav Rathi
bc45261efa Handle the API quirk 2024-07-15 13:35:03 +05:30
Manav Rathi
bd884c9db8 [web] [desktop] Enable Polish translations (#2459)
A big hats off to the person who did 0-99% 🇵🇱 over the weekend!
2024-07-15 12:28:16 +05:30
Manav Rathi
326b347bc6 [web] [desktop] Enable Polish translations
A big hats off to the person who did 0-99% over the weekend!
2024-07-15 11:59:40 +05:30
Manav Rathi
03b8b69080 [web] ML related translation fixes (#2458) 2024-07-15 10:38:33 +05:30
Manav Rathi
839a94fcef Fix markup in translations 2024-07-15 10:30:54 +05:30
Manav Rathi
39c600de46 Remove out of date translations that don't reflect source string 2024-07-15 10:29:49 +05:30
Manav Rathi
6226f43b5a Update 2024-07-15 10:28:23 +05:30
Neeraj Gupta
74f4698fd6 [mob] Format brand 2024-07-15 10:21:19 +05:30
Manav Rathi
428288338f Fix casing 2024-07-15 09:59:30 +05:30
Manav Rathi
e254cfd752 Rename 2024-07-15 09:55:44 +05:30
Manav Rathi
c22b7fb218 [web] New translations (#2457)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-07-15 09:53:46 +05:30
Crowdin Bot
34db62cefa New Crowdin translations by GitHub Action 2024-07-15 04:23:15 +00:00
Manav Rathi
ab7d894ed2 [web] Prune unused translations (#2456)
Reduce work for translators in new languages
2024-07-15 09:52:27 +05:30
Manav Rathi
8c8cff5f80 [web] Prune unused translations
Reduce work for translators in new languages
2024-07-15 09:51:46 +05:30
Manav Rathi
98671760dd [web] New translations (#2453)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-07-15 09:47:55 +05:30
Crowdin Bot
b7b5977b85 New Crowdin translations by GitHub Action 2024-07-15 01:16:52 +00:00
Crowdin Bot
a3cbfc52c7 New Crowdin translations by GitHub Action 2024-07-15 01:04:12 +00:00
Crowdin Bot
c843656fa3 New Crowdin translations by GitHub Action 2024-07-15 00:31:52 +00:00
Eseltwift
a8be3be3b4 Add Instant Gaming, Teleport and Mistral icons. 2024-07-13 22:05:33 +02:00
Manav Rathi
057521e0e4 [desktop] Throttle ML status updates (#2450) 2024-07-13 19:10:55 +05:30
Manav Rathi
86b70ec325 Commentary 2024-07-13 18:13:16 +05:30
Manav Rathi
166474a1b5 Add a throttle 2024-07-13 18:02:06 +05:30
dnred
faee7cc642 fix typo in CLI readme 2024-07-13 13:02:41 +02:00
Manav Rathi
ebe76cbd1b [desktop] Fix yarn dev flakiness when renderer is not ready (#2448) 2024-07-13 15:19:43 +05:30
Manav Rathi
5b23e32c7d Meh 2024-07-13 15:14:47 +05:30
Manav Rathi
a10ca66e57 [desktop] Fix yarn dev flakiness when renderer is not ready
...by the time the main window is ready to open it.
2024-07-13 14:56:09 +05:30
ashilkn
89ff4cf43e [mob][photos] Initialise MagicCacheService only if internal user 2024-07-13 14:26:07 +05:30
Neeraj Gupta
c552ab61f9 [cli] Fix typo with ente account url constant (#2440)
## Description
I noticed there was a typo in the EnteAccountUrl constant for the CLI,
which resulted in an incorrect URL being generated when asking the user
to verify their passkey.

## Tests
I didn't see tests in the project, but I did build the cli project and
manually tested `cli.exe` by adding my ente account and verifying the
URL that's generated is correct now.

```
Nick  ~\..\ente\cli  .\cli.exe account add
Enter app type (default: photos):
Use default app type: photos
Enter export directory: .\
Enter email address: redacted@pm.me
Enter OTP: 123456
Open this url in browser to verify passkey: https://accounts.ente.io/passkeys/verify?redacted
Press enter once you have completed the passkey verification
```
2024-07-13 11:42:24 +05:30
Manav Rathi
f724c998a6 [desktop] Graceful shutdown in dev mode (#2444)
Ref: https://github.com/electron/electron/issues/22048
2024-07-13 11:24:57 +05:30
Manav Rathi
86f79575aa [desktop] Graceful shutdown in dev mode 2024-07-13 11:23:52 +05:30
Manav Rathi
2f2265e85d [desktop] Update deps (#2442)
Notable:

- Electron 30.2.0
  https://github.com/electron/electron/releases
2024-07-13 10:19:26 +05:30
Manav Rathi
2c506c9cc2 npx npm-check-updates --interactive --target greatest 2024-07-13 10:16:54 +05:30
Manav Rathi
4528dc2d2a [desktop] Update deps
- Electron 30.2.0
  https://github.com/electron/electron/releases
2024-07-13 10:11:08 +05:30
Manav Rathi
3e301cabec [desktop] Don't show what's new on fresh installs (#2441)
Also: Stylistic tweaks
2024-07-13 10:00:24 +05:30
Manav Rathi
d72813dd07 Stylistic tweaks 2024-07-13 09:56:11 +05:30
Manav Rathi
6e9dd8d4c8 [desktop] Don't show what's new on fresh installs 2024-07-13 08:56:32 +05:30
Nicholas DiMucci
33dcf48127 Fix typo with ente account url in cli. 2024-07-12 21:05:38 -04:00
Manav Rathi
b525e91aa1 [docs] Mark the desktop custom server option as released (#2439)
+ yarn pretty
2024-07-12 21:41:33 +05:30
Manav Rathi
392ed6e212 yarn pretty 2024-07-12 21:40:49 +05:30
Manav Rathi
653761137a [docs] Mark the desktop custom server option as released 2024-07-12 21:40:07 +05:30
Manav Rathi
ec4644158b [desktop] Fix post release checklist instructions (#2438) 2024-07-12 21:18:54 +05:30
Manav Rathi
a6dda741cb [desktop] Fix post release checklist instructions 2024-07-12 21:17:11 +05:30
Manav Rathi
43fd13c00f [desktop] Start the next release sequence for 1.7.3 (#2437) 2024-07-12 20:50:36 +05:30
Manav Rathi
b0677049cb [desktop] Start the next release sequence for 1.7.3 2024-07-12 20:47:05 +05:30
Neeraj Gupta
c941783fd3 [mob] Expose and log video metadata 2024-07-12 17:45:30 +05:30
Manav Rathi
20a8df378c [desktop] Release v1.7.2 (#2434) 2024-07-12 17:12:23 +05:30
Manav Rathi
d9ec95b8ab photosd-v1.7.2 2024-07-12 15:52:35 +05:30
Manav Rathi
c16b6a7d43 -rc => -beta to be clearer 2024-07-12 15:52:32 +05:30
Neeraj Gupta
d3dccb1bea [mobile] Add FFProbe Metadata (#2054)
## Description

This PR adds support for fetching location and creationTime using
ffprobe (if available).

## Tests
2024-07-12 15:30:50 +05:30
Neeraj Gupta
f115ce4a0d [mob] Fix lint 2024-07-12 15:27:53 +05:30
Neeraj Gupta
7c8febfc1b Merge remote-tracking branch 'origin/main' into mobile-ffprobe 2024-07-12 14:30:54 +05:30
Neeraj Gupta
bffbc6041b [mob] Add missing tr file for Turkish (#2432)
## Description

## Tests
2024-07-12 14:04:41 +05:30
Neeraj Gupta
7640789f08 [mob] Fix dependencies order 2024-07-12 14:04:19 +05:30
Neeraj Gupta
95c04b554c [mob] Add missing tr file for Turkish 2024-07-12 13:59:03 +05:30
Manav Rathi
5e15fccb75 [accounts] Restore the passkey workaround for Safari (#2431)
This restores the workaround I'd removed in
4d84e966b0.

    listItem.transports = ["usb", "nfc", "ble", "internal"];

- This PR should fix the passkey verification on Safari:
https://github.com/ente-io/ente/issues/2406

- Sibling PR that fixes the passkey registration:
https://github.com/ente-io/ente/pull/2429
2024-07-12 13:49:15 +05:30
Manav Rathi
7047383e09 [accounts] Restore the workaround for Safari
This restores the workaround I'd removed in
4d84e966b0.

    listItem.transports = ["usb", "nfc", "ble", "internal"];

- This PR fixes the passkey verification on Safari.

- Sibling PR that fixes the passkey registration: https://github.com/ente-io/ente/pull/2429/files
2024-07-12 13:45:59 +05:30
Manav Rathi
f02bd096b0 [server] Add a workaround for Safari to recognize Yubikeys (#2429)
Safari just doesn't recognize the Yubikey (macOS/iOS, NFC/USB, doesn't
matter) if display name is set to the empty string. Safari's long
description doesn't care to mention this requirement:
https://webkit.org/blog/11312/meet-face-id-and-touch-id-for-the-web/

Tested on localhost with Safari macOS. Will test on iOS post deployment.
2024-07-12 12:57:13 +05:30
Manav Rathi
617ae0701b [server] [cli] Fix docker "FROM AS" case warnings (#2430)
With the latest Docker update (27.0.3), it now warns about the "FROM"
and "AS" in the Dockerfile not matching. E.g. when building the server
docker image:

> WARN: FromAsCasing: 'as' and 'FROM' keywords' casing do not match
(line 1)
2024-07-12 12:56:53 +05:30
Neeraj Gupta
8e136ecdc1 Fix: don't edit location/time in the file object 2024-07-12 12:05:42 +05:30
Manav Rathi
0ea408379a [server] [cli] Fix docker "FROM AS" case warnings
With the latest Docker update (27.0.3), it now warns about the "FROM" and "AS"
in the Dockerfile not matching. E.g. when building the server docker image:

> WARN: FromAsCasing: 'as' and 'FROM' keywords' casing do not match (line 1)
2024-07-12 11:19:37 +05:30
Manav Rathi
eeab98c768 [server] Add a workaround for Safari to recognize Yubikeys
Safari just doesn't recognize the Yubikey (macOS/iOS, NFC/USB, doesn't matter)
if display name is set to the empty string. Safari's long description doesn't
care to mention this requirement:
https://webkit.org/blog/11312/meet-face-id-and-touch-id-for-the-web/

Tested on localhost with Safari macOS. Will test on iOS post deployment.
2024-07-12 11:10:56 +05:30
Manav Rathi
e881c15026 [desktop] Consolidate face and CLIP pipelines - Part 3/3 (#2424)
Continuation, and finalization, of
https://github.com/ente-io/ente/pull/2408

While the integration is complete, there is a server side integration we
still need to do. That in turn will have an impact on the embedding
formats. So for now, disable ML for the beta users too so that we can
put out the regular release that was schedule to go out this week
(otherwise the beta users will end up in a half-way state).
2024-07-11 20:30:05 +05:30
Manav Rathi
21b6316996 Disable ML for everyone while it is WIP
Preparing for merge and the interim release
2024-07-11 20:19:01 +05:30
Manav Rathi
349a5021a5 Debounce never calls the underyling if it keeps getting called within wait 2024-07-11 20:07:31 +05:30
Neeraj Gupta
4aa92ffc43 Merge remote-tracking branch 'origin/main' into mobile-ffprobe 2024-07-11 18:35:06 +05:30
Neeraj Gupta
3f5a8a503b [auth] Fix json (#2423)
## Description

## Tests
2024-07-11 18:34:39 +05:30
Neeraj Gupta
9fe894e368 [auth] Fix json 2024-07-11 18:34:14 +05:30
Ashil
e537ba0a9a [mob][photos] Bump up to v0.9.7 (#2421) 2024-07-11 16:03:18 +05:30
ashilkn
5033ab2fed [mob][photos] bump up to v0.9.7 2024-07-11 16:01:11 +05:30
Ashil
987cc1c520 [mob][photos] Lockscreen Fixes (#2398) 2024-07-11 15:54:37 +05:30
Manav Rathi
4773c7c262 Debounce 2024-07-11 15:16:39 +05:30
Manav Rathi
936e0470e6 Live update 2024-07-11 14:56:55 +05:30
Neeraj Gupta
ecbb71a97b Merge remote-tracking branch 'origin' into mobile-ffprobe 2024-07-11 14:39:57 +05:30
Manav Rathi
544a5a9ccc Use consistent key 2024-07-11 14:39:45 +05:30
Manav Rathi
fdcc6b6997 Tweak and lint 2024-07-11 14:21:01 +05:30
Manav Rathi
73ad758191 Fix 2024-07-11 14:18:10 +05:30
Manav Rathi
a3dc691885 Use in search bar 2024-07-11 14:13:58 +05:30
Manav Rathi
b25dbfc10b wip separate flag 2024-07-11 14:02:55 +05:30
Manav Rathi
13c042f692 Remove scaffolding code 2024-07-11 13:53:27 +05:30
Manav Rathi
62e4a6c344 Dot product 2024-07-11 13:50:22 +05:30
Manav Rathi
8dad88eca6 Disable ripples on the background item for toggles 2024-07-11 13:43:04 +05:30
Manav Rathi
6ccb61b425 Enhance 2024-07-11 13:40:57 +05:30
Victor Muthiani
b402c6ae32 [Auth] Add 2 new icons and optimize 2 icons (#2411)
## Description

New icons:
- Deriv
- Airtm

Optimized icons
- Yahoo
- Bitget
2024-07-11 12:43:59 +05:30
Manav Rathi
52251ad654 Improve UI feedback 2024-07-11 12:37:37 +05:30
Manav Rathi
5ff9f408eb Touchups 2024-07-11 12:07:42 +05:30
Manav Rathi
06bf2ddad4 Integrate 2024-07-11 12:00:59 +05:30
Manav Rathi
0214ccf680 Integrate 2024-07-11 11:43:49 +05:30
Manav Rathi
2e1fde906e The type annotation for _mlStatusSnapshot is required 2024-07-11 11:15:53 +05:30
Manav Rathi
df4364525d Hook it up 2024-07-11 11:00:22 +05:30
Manav Rathi
661d0383fb Scaffold 2024-07-11 10:41:37 +05:30
Manav Rathi
6f577d150a wip useSyncExternalStore 2024-07-11 10:37:57 +05:30
Manav Rathi
6086e139e4 Degrade gracefully 2024-07-11 10:06:52 +05:30
Manav Rathi
5fef9b21e5 Template 2024-07-11 10:00:54 +05:30
Manav Rathi
7069e15b79 Duals 2024-07-10 20:49:19 +05:30
Manav Rathi
44e165b8ee Rework 2024-07-10 20:41:07 +05:30
Manav Rathi
b0b82aabd8 Face => ML 2024-07-10 20:03:52 +05:30
Manav Rathi
d043658331 Modify 2024-07-10 19:42:13 +05:30
Manav Rathi
9616640fce Fix p nesting warning 2024-07-10 19:34:46 +05:30
Manav Rathi
10e55b6739 Newer 2024-07-10 19:28:00 +05:30
Manav Rathi
d661f4ac1f Space 2024-07-10 19:14:04 +05:30
Manav Rathi
2865b33fc2 lf 2024-07-10 16:01:04 +05:30
Manav Rathi
0f4459112e Context 2024-07-10 15:59:51 +05:30
Manav Rathi
f9b8c5287d Work towards 2024-07-10 15:51:53 +05:30
Manav Rathi
2ac968fdf6 Fixed 2024-07-10 15:34:23 +05:30
Vishnu Mohandas
440f9293d8 Incorporate suggestions (#2414) 2024-07-10 15:26:16 +05:30
vishnukvmd
d1968e46e5 Incorporate suggestions 2024-07-10 15:25:54 +05:30
Manav Rathi
70b74fc285 Continue 2024-07-10 15:08:09 +05:30
Manav Rathi
c92a117e8d [docs] Improve send logs instructions (#2413) 2024-07-10 14:52:34 +05:30
Manav Rathi
d7371392fe [docs] Improve send logs instructions 2024-07-10 14:50:13 +05:30
Manav Rathi
b5972a6395 r4 2024-07-10 14:35:00 +05:30
Manav Rathi
ebfd8909a9 Move to its final place 2024-07-10 14:32:36 +05:30
Manav Rathi
83d6d99469 r3 2024-07-10 14:32:01 +05:30
Manav Rathi
1322e5df79 r2 2024-07-10 14:23:44 +05:30
Manav Rathi
3b951f237f wip refactor 2024-07-10 14:16:28 +05:30
Manav Rathi
162107b3a9 Fix 2024-07-10 13:40:39 +05:30
Manav Rathi
54936303c8 Tweaks 2024-07-10 13:40:11 +05:30
Manav Rathi
8830a60ecf Move up 2024-07-10 13:34:54 +05:30
Manav Rathi
071a63a81c Outer 2024-07-10 13:27:00 +05:30
Manav Rathi
aa6e5c9234 Start fixing lint issues 2024-07-10 13:17:50 +05:30
Manav Rathi
5c916374f3 Move 2024-07-10 13:04:48 +05:30
Manav Rathi
c5cd6cbbca Use new 2024-07-10 13:03:25 +05:30
Manav Rathi
cfad9f841e flags 2024-07-10 12:53:06 +05:30
Manav Rathi
6d09d1f9b7 rs 1 2024-07-10 12:39:51 +05:30
Manav Rathi
e1ce2e5e84 Cont 2024-07-10 12:22:45 +05:30
Manav Rathi
6f40cbe27e Agenda 2024-07-10 12:08:22 +05:30
Manav Rathi
8e10c8bec6 Move 2024-07-10 11:33:07 +05:30
Manav Rathi
eb271088a4 Move 2024-07-10 11:02:01 +05:30
Manav Rathi
fde6e14440 Move 2024-07-10 11:00:43 +05:30
Manav Rathi
cd433aa39e Move 2024-07-10 10:58:57 +05:30
Manav Rathi
2510226a57 Consolidate 2024-07-10 10:54:27 +05:30
Manav Rathi
ecd4201304 Fix warnings 2024-07-10 10:49:11 +05:30
Manav Rathi
4d11623f77 Fix warnings 2024-07-10 10:47:41 +05:30
Manav Rathi
4519dc94b8 Move 2024-07-10 10:45:40 +05:30
Manav Rathi
57ff75b855 lf 2024-07-10 10:22:50 +05:30
Manav Rathi
d4be782b9c Silence a warning to avoid changing behaviour for now 2024-07-10 10:22:14 +05:30
Manav Rathi
24858ab73b Move 2024-07-10 10:17:44 +05:30
Manav Rathi
99545f0038 [web] Enhance log.debug (#2412) 2024-07-10 09:44:59 +05:30
Manav Rathi
072ee3861b lf 2024-07-10 09:36:34 +05:30
Manav Rathi
881993ed65 Match 2024-07-10 09:32:14 +05:30
Manav Rathi
83516a7f27 More 2024-07-10 09:28:54 +05:30
Aman Raj Singh Mourya
8117a2929c [mob][photos] Used better names 2024-07-10 00:13:10 +05:30
Manav Rathi
8821372515 [web] Enhance log.debug 2024-07-09 21:30:23 +05:30
Manav Rathi
825a215213 [desktop] Consolidate face and CLIP pipelines - Part 2/x (#2408)
* Continuation of https://github.com/ente-io/ente/pull/2391
* CLIP indexing (and search) is disabled for now until the new format is
finalized
2024-07-09 20:51:20 +05:30
Manav Rathi
be61cd08b8 Prepare for merge to main 2024-07-09 20:38:55 +05:30
Manav Rathi
bab30ec508 lf 2024-07-09 20:35:41 +05:30
Manav Rathi
064af381c5 Move 2024-07-09 19:42:57 +05:30
Manav Rathi
840b415254 Reframe 2024-07-09 19:41:23 +05:30
Manav Rathi
711c858d06 Debug logs 2024-07-09 19:35:43 +05:30
Manav Rathi
4f60cabdd0 math 2024-07-09 19:33:11 +05:30
Manav Rathi
8fbcef4221 tsc 2024-07-09 16:03:27 +05:30
Manav Rathi
49bfe5aabb Restore search 2024-07-09 15:35:46 +05:30
Manav Rathi
11584ce089 Simplify 2024-07-09 15:34:47 +05:30
Manav Rathi
b8b2d58734 Clip matches 2024-07-09 15:29:34 +05:30
Manav Rathi
920685e15c lint 2024-07-09 14:56:49 +05:30
Manav Rathi
56fe538f07 Tie 2024-07-09 14:55:27 +05:30
Manav Rathi
942231c521 Prune 2024-07-09 14:45:26 +05:30
Manav Rathi
c5b10b14d1 Desktop changes 2024-07-09 14:42:06 +05:30
Manav Rathi
df80d9c355 Prune 2024-07-09 14:40:04 +05:30
Manav Rathi
e90ab70cc8 Remove unused dep 2024-07-09 14:34:34 +05:30
Manav Rathi
53dc3bace9 Untie 2024-07-09 14:30:31 +05:30
Manav Rathi
82ec83caf3 Remove 2 2024-07-09 14:24:45 +05:30
Manav Rathi
2f5c966892 Remove old 2024-07-09 14:22:59 +05:30
Manav Rathi
45b1f82032 wip towards removal 2024-07-09 14:08:58 +05:30
Manav Rathi
cb148ea3b1 both 2024-07-09 13:52:26 +05:30
Manav Rathi
ed660c36df Remove unnecessary return 2024-07-09 13:30:17 +05:30
Manav Rathi
2920e04aa5 Pull both 2024-07-09 13:26:30 +05:30
Manav Rathi
ca44202fcd remote 2024-07-09 13:14:24 +05:30
Manav Rathi
023610cebd Remove the need for null assertions 2024-07-09 12:39:55 +05:30
Manav Rathi
d11e94c939 Silence warning 2024-07-09 12:37:33 +05:30
Manav Rathi
cfb1b8423b Continue 2024-07-09 12:33:09 +05:30
Manav Rathi
4d84e966b0 db done 2024-07-09 12:09:38 +05:30
Manav Rathi
3bef2e8268 generalize 2024-07-09 12:05:42 +05:30
Manav Rathi
f2bcf1744f generalize 2024-07-09 11:51:00 +05:30
Manav Rathi
8d4629254c Agenda 2024-07-09 11:40:24 +05:30
Aman Raj Singh Mourya
a0980a9638 [mob][photos] Lockscreen Fixes 2024-07-09 11:24:50 +05:30
Manav Rathi
4fada9bdf9 face => ml 2024-07-09 11:13:22 +05:30
Manav Rathi
2bc95782a6 db 2 2024-07-09 11:01:03 +05:30
Manav Rathi
b36c4398c1 wip DB changes for clip 2024-07-09 11:01:03 +05:30
Manav Rathi
e183e1f9dd [meta] Change translation cron schedule Tue => Mon (#2397) 2024-07-09 10:48:52 +05:30
Manav Rathi
a8c267e2b0 [meta] Change translation cron schedule Tue => Mon 2024-07-09 10:48:05 +05:30
Neeraj Gupta
8d8b113ef8 [auth] New translations (#2393)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-07-09 10:47:22 +05:30
Neeraj Gupta
6f389cb64d [mobile] New translations (#2339)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-07-09 10:47:00 +05:30
Neeraj Gupta
f534984c0e Added 2 icons and optimised 1 icon (#2343)
## Description
Added bitmart and htx icon optimised coindcx icon.
## Tests
2024-07-09 10:46:47 +05:30
Manav Rathi
a7e5de7493 [web] New translations (#2396)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-07-09 10:42:20 +05:30
Crowdin Bot
49ca581904 New Crowdin translations by GitHub Action 2024-07-09 05:01:06 +00:00
Manav Rathi
e82e243b77 [web] Translation improvements (#2395) 2024-07-09 10:30:23 +05:30
Manav Rathi
26f421c77e Tweak 2024-07-09 10:25:42 +05:30
Manav Rathi
d4f0384f13 Move to tr 2024-07-09 10:20:07 +05:30
Manav Rathi
2a07684de0 More 2024-07-09 10:14:38 +05:30
Manav Rathi
e4f86794be More 2024-07-09 10:10:54 +05:30
Manav Rathi
b5a3821933 More 2024-07-09 10:06:02 +05:30
Manav Rathi
c7defa31f5 Match the casing of the en version 2024-07-09 10:03:48 +05:30
Manav Rathi
374b803ecc Migrate 2024-07-09 10:00:04 +05:30
Manav Rathi
0769ba2fff [web] New translations (#2392)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-07-09 09:54:11 +05:30
Crowdin Bot
95dc3d1e6c New Crowdin translations by GitHub Action 2024-07-09 02:11:09 +00:00
Crowdin Bot
da5270daa7 New Crowdin translations by GitHub Action 2024-07-09 02:00:58 +00:00
Crowdin Bot
a3de155a10 New Crowdin translations by GitHub Action 2024-07-09 01:46:46 +00:00
Neeraj Gupta
a761c06396 [auth] New translations (#2340)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-07-08 17:47:50 +05:30
Ashil
369680b4a8 bump up to v0.9.6 (#2384)
## Description

## Tests
2024-07-08 17:47:02 +05:30
Manav Rathi
24ea02c521 [desktop] Consolidate face and CLIP pipelines - Part 1/x (#2391) 2024-07-08 15:54:16 +05:30
Manav Rathi
1fb95f7d7d Reuse 2024-07-08 15:48:45 +05:30
Manav Rathi
c82ef796f2 Extract 2024-07-08 15:37:20 +05:30
Manav Rathi
f1c76adb38 Towards CLIP 2024-07-08 15:23:26 +05:30
Manav Rathi
46db1c240c [desktop] Fix CLIP preprocessing (#2389)
Fix format mismatch (ref: https://github.com/ente-io/ente/pull/2342)
2024-07-08 14:45:24 +05:30
Manav Rathi
8b5ad13595 Fix format mismatch 2024-07-08 14:40:41 +05:30
Manav Rathi
6511179766 Introduce bounds checking 2024-07-08 14:36:58 +05:30
Manav Rathi
bbacbb08b6 doc 2024-07-08 14:20:43 +05:30
ashilkn
67ca028dbf bump up to v0.9.6 2024-07-06 17:24:59 +05:30
Manav Rathi
2f2d988eaa [web] Improve JPEG 2000 handling (#2383)
- Let supporting browsers (e.g. Safari) upload them.
- Let them be indexed by converting to JPEG.
2024-07-06 17:05:03 +05:30
Manav Rathi
d0f585fc97 Special case jp2 rendering 2024-07-06 16:57:46 +05:30
Manav Rathi
c86be54ac1 [desktop] Handle jp2 and simplify 2024-07-06 16:21:43 +05:30
Vishnu Mohandas
d24c116d14 [mob][photos] Prepare for release v0.9.5 (#2381) 2024-07-06 16:09:48 +05:30
ashilkn
a279c442b8 [mob][photos] Update change log and change log version 2024-07-06 15:48:33 +05:30
ashilkn
5b76225542 [mob][photos] Remove feature flag on select all feature 2024-07-06 15:16:20 +05:30
ashilkn
e2f2921d78 bump up to v 0.9.5 2024-07-06 15:05:30 +05:30
Ashil
86584e7424 [mob][photos] Lockscreen Fixes (#2367) 2024-07-06 15:01:27 +05:30
Ashil
05a400102a [mob][photos] Added button to logout from Lockscreen (#2379) 2024-07-06 14:59:51 +05:30
Manav Rathi
9c7c0b9592 [web] Fix duplication emotion instances (#2378)
Something's wrong with yarn's resolution algorithm, but let's leave that
be until we migrate off classic. 11.11.4 doesn't have anything we need,
so use 11.11.3 that seems to not result in dupes.

The warning was

gallery.js:16547 You are loading @emotion/react when it is already
loaded. Running multiple instances may cause problems. This can happen
if multiple versions are used, or if multiple builds of the same version
are used.

Ref:
- https://github.com/ente-io/ente/pull/2372
2024-07-06 14:46:22 +05:30
Aman Raj Singh Mourya
e807712cdc [mob][photos] Added button to logout from Lockscreen 2024-07-06 14:44:45 +05:30
Manav Rathi
e468ecc98c [web] Fix duplication emotion instances
Something's wrong with yarn's resolution algorithm, but let's leave that be
until we migrate off classic. 11.11.4 doesn't have anything we need, so use
11.11.3 that seems to not result in dupes.

The warning was

    gallery.js:16547 You are loading @emotion/react when it is already loaded. Running multiple instances may cause problems. This can happen if multiple versions are used, or if multiple builds of the same version are used.

Ref:
- https://github.com/ente-io/ente/pull/2372
2024-07-06 14:41:43 +05:30
Manav Rathi
dc80aac487 [desktop] Consider HTTP 4xx errors when PUT-ing embeddings as perm failures (#2377)
Also continue processing the liveQ even if embeddings pull fails.
2024-07-06 14:24:37 +05:30
Manav Rathi
1a06fce8f2 lf 2024-07-06 14:21:37 +05:30
Manav Rathi
933212ba59 Use elsewhere 2024-07-06 14:16:45 +05:30
Manav Rathi
26d8ecda08 tokens 2024-07-06 14:07:49 +05:30
Manav Rathi
8fc897ad16 Ok 2024-07-06 14:02:32 +05:30
Manav Rathi
53a8de9ac4 Shorten 2024-07-06 14:00:50 +05:30
Manav Rathi
a99a179ef9 Nicer error logs on desktop 2024-07-06 13:40:00 +05:30
Manav Rathi
cdba99a7c2 Use elsewhere 2024-07-06 13:23:55 +05:30
Manav Rathi
b03b9fd314 Let the liveQ be processed 2024-07-06 11:02:10 +05:30
Manav Rathi
4019afdd90 [desktop] Consider HTTP 4xx errors when PUT-ing embeddings as perm failures
Ref:
- https://github.com/ente-io/ente/pull/2369
- https://github.com/ente-io/ente/pull/2368
2024-07-06 10:23:33 +05:30
Manav Rathi
c12130d357 [desktop] Update eslint to fix warnings introduced after update to TypeScript 5.5 (#2375) 2024-07-06 09:47:00 +05:30
Manav Rathi
4427352f51 Handle update 2024-07-06 09:44:38 +05:30
Manav Rathi
ac06f67891 Update the typescript-eslint v8 alpha 2024-07-06 09:37:57 +05:30
ashilkn
27dab94782 [mob][photos] Immediately logout if too many attempts on lockscreen 2024-07-06 09:37:49 +05:30
Manav Rathi
99616b46a1 [desktop] Upgrade eslint (within the 9x series) 2024-07-06 09:26:45 +05:30
ashilkn
d72a561a9b [mob][photos] Minor UI fix on lock screen password entry page 2024-07-06 08:57:14 +05:30
ashilkn
75baee00c2 [mob][photos] Fix unexpected animation in lockscreen 2024-07-06 08:35:34 +05:30
Manav Rathi
8b696b1242 [web] Various minor chores (#2372)
See commit messages for details.
2024-07-05 20:43:36 +05:30
Manav Rathi
aebe12bd9e Fix 2024-07-05 20:37:58 +05:30
Manav Rathi
fcb86da03c Update some dependencies (minor versions); pin otpauth
Pin otpauth since upstream changed from jsSHA some other library, and we'd need
to do the same for our steam codes implementation to avoid increasing the bundle
size.

https://github.com/hectorm/otpauth/pull/505

---

For the rest of the updates, Scanned the CHANGELOGs (linked):

@emotion/react, @emotion/styled
- https://github.com/emotion-js/emotion/releases

@mui/icons-material, @mui/material
https://github.com/mui/material-ui/releases

get-user-locale
https://github.com/wojtekmaj/get-user-locale/releases

i18next, i18next-resources-to-backend, react-i18next
https://github.com/i18next/i18next/releases

ml-matrix
https://github.com/mljs/matrix/releases

next
Doesn't have a changelog. Rely on hope.
See: https://github.com/vercel/next.js/discussions/65212

react, react-dom, @types/react, @types/react-dom
https://github.com/facebook/react/blob/main/CHANGELOG.md

react-virtualized-auto-sizer
https://github.com/bvaughn/react-virtualized-auto-sizer/releases

@types/chromecast-caf-receiver, @types/leaflet
Minor updates, type only
2024-07-05 20:31:37 +05:30
Manav Rathi
99af0ff294 Update to vite 5.3.3 (payments)
https://github.com/vitejs/vite/blob/v5.3.3/packages/vite/CHANGELOG.md

Also update sibling @vitejs/plugin-react
2024-07-05 19:49:48 +05:30
Manav Rathi
7cef60f8b9 Inline 2024-07-05 19:39:20 +05:30
Manav Rathi
31b6572e17 New convention 2024-07-05 19:37:27 +05:30
Manav Rathi
d07a46f514 Tense 2024-07-05 19:36:35 +05:30
Manav Rathi
547d03049a [web] Start using TypeScript 5.5 goodies
We updated to 5.5 in https://github.com/ente-io/ente/pull/2351, but I was
waiting for the VS Code release with 5.5 to also go out (so that we don't see
the editor squigglies).
2024-07-05 19:34:47 +05:30
Manav Rathi
18ab41b9ec [workers] Restrict CORS ACAH headers to the whitelist (#2371) 2024-07-05 18:45:22 +05:30
Manav Rathi
e9938c2ac4 [workers] Restrict CORS ACAH headers to the whitelist 2024-07-05 18:17:34 +05:30
Manav Rathi
089ed89045 [meta] Prettier 3.3 (#2370)
No breaking changes that affect us.

https://prettier.io/blog/2024/06/01/3.3.0
2024-07-05 17:55:53 +05:30
Manav Rathi
9c11a7f4b7 [meta] Prettier 3.3
No breaking changes that affect us.

https://prettier.io/blog/2024/06/01/3.3.0
2024-07-05 17:51:07 +05:30
Manav Rathi
543fb835f3 [server] Increase HTTP request body size to prevent 413 Too Large errors (#2369)
Allow HTTP request body up to 4 MB. The default is 1 MB, which is too
small for face embeddings for photos with more than a couple of hundred
faces.

Roughly, each face embedding is 4KB, but encrypting and base-64-ing the
embedding also has a 30% addition (just from one sample I saw), so this
should allow photos with ~700 faces to go through.

Ref:
-
https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
2024-07-05 14:20:31 +05:30
Manav Rathi
0b3ca8db69 [server] Increase HTTP request body size to prevent 413 Too Large errors
Allow HTTP request body up to 4 MB. The default is 1 MB, which is too small for
face embeddings for photos with more than a couple of hundred faces.

Roughly, each face embedding is 4KB, but encrypting and base-64-ing the
embedding also has a 30% addition (just from one sample I saw), so this should
allow photos with ~700 faces to go through.

Ref:
- https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
2024-07-05 14:08:10 +05:30
Aman Raj Singh Mourya
05e7863bdc [mob][photos] Lock count fixed 2024-07-05 13:32:17 +05:30
Manav Rathi
a2ee8a2ee9 [desktop] Embed faces in batches to prevent memory pressure crash (#2368) 2024-07-05 12:54:06 +05:30
Manav Rathi
969154baff [desktop] Embed faces in batches to prevent memory pressure crash 2024-07-05 11:53:52 +05:30
Aman Raj Singh Mourya
27525907af [mob][photos] Lock screen Clean Up 2024-07-05 11:46:38 +05:30
Aman Raj Singh Mourya
92e89d3589 [mob][photos] Timer animation fixed 2024-07-05 11:36:43 +05:30
Manav Rathi
9898a7c221 [desktop] Update Electron 30.0.9 => 30.1.2 (#2366)
- Update Electron 30.0.9 => 30.1.2
- Revert to the now un-deprecated API that we were using earlier
- Upgrade lru-cache
2024-07-05 10:59:47 +05:30
Manav Rathi
ef788b16b9 Upgrade lru-cache 2024-07-05 10:57:48 +05:30
Manav Rathi
5f7577309a Revert to the now un-deprecated API that we were using earlier
https://github.com/electron/electron/pull/42411
2024-07-05 10:53:13 +05:30
Manav Rathi
cd39e5e9cd Update Electron 30.0.9 => 30.1.2
https://github.com/electron/electron/releases/tag/v30.1.2
2024-07-05 10:48:04 +05:30
Manav Rathi
588662d1ce [desktop] Only attempt indexing after a successful pull (#2365) 2024-07-05 10:45:56 +05:30
Manav Rathi
4f98e72a58 [desktop] Only attempt indexing after a successful pull 2024-07-05 09:38:03 +05:30
Manav Rathi
5bd3f6076b [infra] Teach copycat db how to restore specific versions (#2363) 2024-07-04 22:08:19 +05:30
Manav Rathi
adcdba3f8f Update SCW cli version
No specific changes, just bringing it up to speed. No breaking changes I noticed in the CHANGELOG
https://github.com/scaleway/scaleway-cli/releases
2024-07-04 22:06:57 +05:30
Manav Rathi
5c4c6f2677 Allow restoring specific backups 2024-07-04 22:06:46 +05:30
Manav Rathi
f217d85b70 [desktop] Allow live indexing during uploads (#2361)
Saves on an unnecessary download.

With this final piece in place, the face indexing part is feature
complete.
2024-07-04 20:31:25 +05:30
Manav Rathi
52448cd2a2 Shorten 2024-07-04 20:26:31 +05:30
Manav Rathi
dca76f304c Increase liveq limit 2024-07-04 20:19:30 +05:30
Manav Rathi
26f6ab0464 Use uploadItem 2024-07-04 20:11:50 +05:30
Manav Rathi
90c01a19a5 Tweak 2024-07-04 19:26:00 +05:30
Manav Rathi
38e23ca1b5 Rename 2024-07-04 19:20:19 +05:30
Manav Rathi
5698ee12a3 Doc 2024-07-04 19:05:19 +05:30
Manav Rathi
c3bbceae49 delegate 2024-07-04 18:45:13 +05:30
Manav Rathi
95ef21ae4f Forward the upload item 2024-07-04 17:39:30 +05:30
Manav Rathi
0ce729a312 Expand 2024-07-04 15:19:11 +05:30
Manav Rathi
73b78916de Ref 2024-07-04 15:16:59 +05:30
Manav Rathi
864e4c6dd1 Rename 2024-07-04 15:16:19 +05:30
Manav Rathi
00de818e65 Index new 2024-07-04 15:12:28 +05:30
Manav Rathi
41fe7ad794 Doc and rearrange 2024-07-04 15:07:10 +05:30
Manav Rathi
13843bf52d [desktop] Regenerate face crops whenever needed (#2358) 2024-07-04 14:14:23 +05:30
Manav Rathi
6d630e0c2a Misc 2024-07-04 14:06:04 +05:30
Manav Rathi
7bd10ed78b Trigger 2024-07-04 13:54:14 +05:30
Manav Rathi
ce0442a5dd Regen if needed 2024-07-04 13:42:56 +05:30
Manav Rathi
b950fde3f2 Regen upper 2024-07-04 13:31:59 +05:30
Manav Rathi
1ab844da36 regen lower 2024-07-04 13:13:44 +05:30
Manav Rathi
eb7611a6d1 Fix warnings on opening drawer 2024-07-04 12:53:26 +05:30
Manav Rathi
ce045fb680 Cleanup 2024-07-04 12:41:02 +05:30
Manav Rathi
594d0e7ea0 The missing bit (as compared to mobile) 2024-07-04 12:17:54 +05:30
Aman Raj Singh Mourya
8c79aedd19 [mob][photos] Implemeted Applock to set custom pin/password (#2130)
This PR add the following features
1. **Device Lock:** If the user's device has a screen lock (PIN,
fingerprint, etc.), it will be used for initial authentication.
2. **Custom PIN/Passwprd**: Users can set a custom PIN/Password for app
access, independent of the device lock.

<br/>
<img width="300"
src="https://github.com/ente-io/ente/assets/146618155/54b044d1-d361-4ed8-a138-87b4838d75fc">
<img align="left" width="300"
src="https://github.com/ente-io/ente/assets/146618155/9bb90ab7-2d97-472e-90da-945a3a043533">

<br/>

<img width="300"
src="https://github.com/ente-io/ente/assets/146618155/8207605f-3495-4f62-bc34-b5a8ec64ab0a">
<img align="left" width="300"
src="https://github.com/ente-io/ente/assets/146618155/9f5fb83f-37a1-4214-b27e-4433b40a8773">
2024-07-04 12:12:40 +05:30
Manav Rathi
401ae85f40 take 3 2024-07-04 12:08:58 +05:30
Manav Rathi
3065b392f3 cmp 2024-07-04 11:44:43 +05:30
Manav Rathi
2a587039b0 gen2 2024-07-04 11:10:22 +05:30
Manav Rathi
6af39d52e3 Impl 2024-07-04 11:07:11 +05:30
Manav Rathi
e15dbc2023 Outline 2024-07-04 10:57:45 +05:30
Manav Rathi
ed2c63cf03 Port the mobile algo
Function: generateFaceThumbnailsUsingCanvas
File: mobile/lib/utils/image_ml_util.dart
2024-07-04 10:28:48 +05:30
Manav Rathi
b04538ada2 Rename and merge 2024-07-04 10:00:19 +05:30
Manav Rathi
52cd2d30a1 Agenda 2024-07-04 09:44:43 +05:30
Manav Rathi
0d0d501518 Swap 2024-07-04 09:28:48 +05:30
Manav Rathi
5b7dcddab3 [desktop] Fetch face indexes - Part 7/7 (#2357)
There still remain things to fix (e.g. the live sync), but now overall
the fetch + index flow is complete.
2024-07-03 21:03:21 +05:30
Manav Rathi
809b02cb26 Last trace 2024-07-03 20:33:39 +05:30
ashilkn
cb94d95d94 [mob][photos] Bump up to v0.9.4 2024-07-03 20:13:46 +05:30
ashilkn
4665cac03d [mob][photos] Extract strings 2024-07-03 20:11:40 +05:30
ashilkn
98d1a1c219 [mob][photos] Remove old assets 2024-07-03 19:43:15 +05:30
Manav Rathi
3b4897b86a Omit middleman 2024-07-03 19:37:20 +05:30
ashilkn
1042332f5b [mob][photos] Add title to error dialog when there is no system lock 2024-07-03 19:34:57 +05:30
ashilkn
c71850be07 [mob][photos] Change lock screen background asset 2024-07-03 19:21:16 +05:30
Manav Rathi
c0a6918c09 Trim 2024-07-03 18:18:16 +05:30
Manav Rathi
c66a74d1c7 Cleanup 2024-07-03 18:09:15 +05:30
Aman Raj Singh Mourya
80881816f3 [mob][photos] Lock screen UI tweaks (#2355) 2024-07-03 17:51:08 +05:30
Aman Raj Singh Mourya
39a3a48fd3 [mob][photos] show error dialog on no device lock enabled 2024-07-03 17:50:30 +05:30
ashilkn
5dbe46092a [mob][photos] lock screen UI tweaks 2024-07-03 17:35:41 +05:30
Aman Raj Singh Mourya
6e6da8152d [mob][photos] UI update 2024-07-03 16:20:24 +05:30
ashilkn
f570773f23 [mob][photos] Use better names 2024-07-03 15:49:13 +05:30
Manav Rathi
b43e6e5981 Lint fix 2024-07-03 15:09:51 +05:30
ashilkn
2dc7d19784 Merge branch 'main' into lockscreen_options 2024-07-03 14:57:55 +05:30
Aman Raj Singh Mourya
c789684c31 [mob][photos] Tap anywhere on Lock screen to unlock 2024-07-03 14:53:35 +05:30
Manav Rathi
d539eb9b1b hook to upload events 2024-07-03 14:44:31 +05:30
Manav Rathi
c8f3df3969 Reorder 2024-07-03 14:34:15 +05:30
Manav Rathi
5f771e923c New flow 2024-07-03 14:31:46 +05:30
Manav Rathi
8acb2a1b98 Clarify 2024-07-03 14:09:32 +05:30
Manav Rathi
0fa0bf124a Only reset the idle duration on non-empty pulls 2024-07-03 14:07:42 +05:30
Manav Rathi
1b6d362314 Handle first run 2024-07-03 13:58:47 +05:30
Manav Rathi
1987f2354a Test run 2024-07-03 13:34:50 +05:30
Manav Rathi
2ab2a13dc0 Download manager 2024-07-03 13:33:17 +05:30
Manav Rathi
70e198ee7f Intertwine 2024-07-03 13:17:30 +05:30
Aman Raj Singh Mourya
b3e7bab0cb [mob][photos] UI update 2024-07-03 13:17:25 +05:30
Aman Raj Singh Mourya
23acf45d6b Merge branch 'lockscreen_options' of https://github.com/ente-io/ente into lockscreen_options 2024-07-03 13:13:34 +05:30
Aman Raj Singh Mourya
4ad8d0c0fd [mob][photos] UI update 2024-07-03 13:08:43 +05:30
Manav Rathi
da06653c6a Implicit state machine 2024-07-03 12:41:38 +05:30
Manav Rathi
ea47936231 ua and more 2024-07-03 12:25:23 +05:30
Manav Rathi
fc46552b0f Batch 2024-07-03 11:50:45 +05:30
Manav Rathi
532a9f64ff Read 2024-07-03 11:45:49 +05:30
Manav Rathi
910013572d Make the user's ID accessible to web workers 2024-07-03 11:44:31 +05:30
Manav Rathi
c61263f179 Support nums and bools 2024-07-03 11:34:21 +05:30
Manav Rathi
206a8a538a Start using it 2024-07-03 11:12:10 +05:30
Manav Rathi
9e69798d79 In memory flag 2024-07-03 11:03:02 +05:30
Manav Rathi
5948714aff S2 2024-07-03 10:42:45 +05:30
Manav Rathi
08a23d8733 Sketch 2024-07-03 10:22:18 +05:30
Manav Rathi
0814fd42d1 [web] Misc minor tsc improvements (#2352) 2024-07-02 21:43:26 +05:30
Manav Rathi
dbe3e9a7d8 New convention 2024-07-02 21:29:02 +05:30
Manav Rathi
94f5822e72 Works 2024-07-02 21:17:41 +05:30
Manav Rathi
851cd77c50 ditto 2024-07-02 21:15:37 +05:30
Manav Rathi
2709298df0 Isolate 2024-07-02 21:15:02 +05:30
Manav Rathi
eee9a32b9a [web] TypeScript 5.5 (#2351) 2024-07-02 21:03:04 +05:30
Manav Rathi
4a84309e23 Apparently 2024-07-02 20:57:54 +05:30
Manav Rathi
6aeaea65ca [web] TypeScript 5.5 2024-07-02 20:43:15 +05:30
Ashil
61eb8d4282 [mob][photos] Lock screen clean up + refactor (#2350) 2024-07-02 20:07:31 +05:30
ashilkn
a3b19162f4 [mob][photos] Clean up 2024-07-02 20:04:18 +05:30
Manav Rathi
c8d0ccfe6a [desktop] Fetch face indexes - Part 6/x (#2349) 2024-07-02 20:01:42 +05:30
Manav Rathi
bb31f44227 Prepare for merge 2024-07-02 19:58:12 +05:30
ashilkn
6ab5015b9d [mob][photos] Refactor + use better variable names 2024-07-02 19:42:25 +05:30
Manav Rathi
d77b9d06f9 lf 2024-07-02 19:24:21 +05:30
Manav Rathi
9758b85e96 Prune 2024-07-02 19:22:45 +05:30
Manav Rathi
e8445d99fb Tweak 2024-07-02 19:17:22 +05:30
Manav Rathi
177a04830b Match face DB 2024-07-02 19:10:15 +05:30
Manav Rathi
3861e48737 Prune 2024-07-02 19:03:18 +05:30
Manav Rathi
f60ff6d8df Rename and shuffle 2024-07-02 18:59:50 +05:30
ashilkn
365e8e6eb8 [mob][photos] Make custom key pad for pin a separate widget and reuse it instead of writing duplicates of it 2024-07-02 18:19:16 +05:30
Manav Rathi
f757c996e7 [desktop] Fetch face indexes - Part 5/x (#2348) 2024-07-02 15:53:13 +05:30
ashilkn
71e7e660b2 [mob][photos] Use better keys + make members private 2024-07-02 15:46:01 +05:30
Manav Rathi
ff94ceb254 Fix condition 2024-07-02 15:44:02 +05:30
Manav Rathi
54b0374680 Parse array 2024-07-02 15:41:24 +05:30
Manav Rathi
33ab6809e2 Cleanup 2024-07-02 15:31:24 +05:30
Manav Rathi
c9a2494ac8 Test 2024-07-02 15:17:51 +05:30
ashilkn
03ded09cb4 [mob][photos] Use consistent names for all lock screen related classes and file names 2024-07-02 15:17:07 +05:30
Manav Rathi
e28a6b5290 Add custom error
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error
2024-07-02 15:12:07 +05:30
ashilkn
f6e4d4c7c9 [mob][photos]
Clean up main.dart
2024-07-02 15:04:06 +05:30
Manav Rathi
8031f27feb Sanity check 2024-07-02 14:53:35 +05:30
ashilkn
ec04becd0e [mob][photos] Clean up configuration.dart 2024-07-02 14:44:22 +05:30
Manav Rathi
1a4b3199f1 new 2024-07-02 14:15:55 +05:30
Manav Rathi
f7137b721e Move 2024-07-02 13:56:53 +05:30
Manav Rathi
080d5630a8 imports 2024-07-02 13:52:58 +05:30
Manav Rathi
af61774d93 Give tsc a helping hand 2024-07-02 13:49:51 +05:30
Manav Rathi
0e1b490371 Assert 2024-07-02 13:47:27 +05:30
Manav Rathi
6bb126e58f Move 2024-07-02 13:34:43 +05:30
Manav Rathi
369ff7833c Fix 2024-07-02 13:32:10 +05:30
Manav Rathi
658a258ddc Fix 2024-07-02 13:31:12 +05:30
Manav Rathi
9c377d9ced fix 2024-07-02 13:27:16 +05:30
Manav Rathi
c27f4a64df assert 2024-07-02 13:22:31 +05:30
Manav Rathi
4d9b7d7632 fix 2024-07-02 13:18:20 +05:30
Manav Rathi
1f00330fd4 fix or neuter or workaround 2024-07-02 13:14:22 +05:30
Manav Rathi
6c178a4476 fix 2024-07-02 13:07:47 +05:30
Manav Rathi
f3bd395f11 New loc 2024-07-02 13:04:51 +05:30
Manav Rathi
9d30ffc96f [desktop] Fix CI lint errors (#2344)
Ref: https://github.com/ente-io/ente/pull/2342
2024-07-02 12:32:46 +05:30
Manav Rathi
8fe0a31da3 [desktop] Fix CI lint errors
https://github.com/ente-io/ente/pull/2342
2024-07-02 12:30:38 +05:30
Nikunj Kumar Nakum
06fae3836e Merge branch 'ente-io:main' into main 2024-07-02 12:29:22 +05:30
Manav Rathi
6ee237716e [desktop] Fetch face indexes - Part 4/x (#2341)
This mostly moves a few files that are transitively used by f-index.ts
to new (so that we can move f-index.ts to new and call it from the
worker therein).
2024-07-02 12:28:11 +05:30
Nikunj Kumar Nakum
d86ce619c0 Update custom-icons.json
added bitmart and htx
2024-07-02 12:26:37 +05:30
Manav Rathi
93b264443c next line 2024-07-02 12:25:21 +05:30
Manav Rathi
47e8474466 wc 2024-07-02 12:21:39 +05:30
Manav Rathi
dd80b2174f Try once more 2024-07-02 12:18:32 +05:30
Laurens Priem
fa28d6d6db [web][photos] Correct clip preprocessing (#2342)
## Description

Fixed issues with the old clip preprocessing.

## Tests

Not tested, but confident it's correct. Should compare embeddings
between platforms after all web changes are done.
2024-07-02 12:10:29 +05:30
Manav Rathi
f8e5bd3d66 Workaround failures on GitHub action 2024-07-02 12:07:45 +05:30
laurenspriem
ff2d838b64 [web][photos] Correct clip preprocessing 2024-07-02 12:06:41 +05:30
Aman Raj Singh Mourya
9fd94c63d9 [mob][photos] lockscreen UI updated 2024-07-02 11:52:47 +05:30
Manav Rathi
8abcd39966 Fix warning 2024-07-02 11:48:48 +05:30
Manav Rathi
a65e0ddfa4 lf 2024-07-02 11:47:30 +05:30
Manav Rathi
406e7bd5bd tsc 2024-07-02 11:41:44 +05:30
Manav Rathi
a7f0dc74fd tsc 2024-07-02 11:26:11 +05:30
Manav Rathi
b49d1323db tsc 2024-07-02 11:14:35 +05:30
Manav Rathi
16b79bcf4a tsc 2024-07-02 11:11:06 +05:30
Manav Rathi
16e197455b Update imports 2024-07-02 11:00:38 +05:30
Manav Rathi
cd27168f5f Move 2024-07-02 10:58:59 +05:30
Manav Rathi
1c7f25723e Conv 2024-07-02 10:58:27 +05:30
Manav Rathi
025fe35999 tsc transitive 2024-07-02 10:55:57 +05:30
Manav Rathi
892a90d83b esl 2024-07-02 10:51:44 +05:30
Manav Rathi
94f179ebab Fix esl 2024-07-02 10:41:06 +05:30
Manav Rathi
f2ea1a05c1 Fix tsc 2024-07-02 10:38:51 +05:30
Manav Rathi
b88d6d26a6 Fix tsc 2024-07-02 10:37:44 +05:30
Manav Rathi
18194dc61a Fix tsc 2024-07-02 10:35:29 +05:30
Manav Rathi
f7324d5388 Move 2024-07-02 10:22:04 +05:30
Manav Rathi
93488e149d move and merge 2024-07-02 10:15:40 +05:30
Crowdin Bot
23b0ea67ae New Crowdin translations by GitHub Action 2024-07-02 02:10:11 +00:00
Nikunj Kumar Nakum
a2599f3415 updated coindcx icon and added 2 more icons
added new HTX and bitmart icons
2024-07-02 00:15:33 +05:30
Manav Rathi
2cce5fb17c Move more 2024-07-01 20:44:09 +05:30
Manav Rathi
9205907588 Inline 2024-07-01 20:33:28 +05:30
Manav Rathi
a282c6cb40 Move more 2024-07-01 20:28:32 +05:30
Manav Rathi
cec60520d9 Move 2024-07-01 20:16:57 +05:30
Manav Rathi
5c0f183740 lf 2024-07-01 20:09:49 +05:30
Manav Rathi
03150482f7 Use our check 2024-07-01 20:07:25 +05:30
Manav Rathi
5fcb1de540 Rename etc 2024-07-01 20:06:48 +05:30
Manav Rathi
157f3696e4 Move 2024-07-01 19:58:28 +05:30
Neeraj Gupta
a60c50fe97 [mob] Avoid FileUploader cache clear in case of autoLogout (#2335)
## Description

## Tests
2024-07-01 16:48:57 +05:30
Victor Muthiani
6544ed3d3d [auth] Icons for Yahoo, OKX, 1XBET, Bitget, & Crypto.com (#2291)
## Description
Added Yahoo,okx,1xbet,bitget & crypto.com icons
uploaded respective optimized svgs and updated the json file
2024-07-01 16:46:57 +05:30
Laurens Priem
b4d0eb843b [mob][photos] Fix german translation (#2337)
## Description

Fixed translation.
2024-07-01 16:45:44 +05:30
laurenspriem
c40a051f5f [mob][photos] Fix german translation 2024-07-01 16:43:54 +05:30
Manav Rathi
0b76287f80 [desktop] Fetch face indexes - Part 3/x (#2336) 2024-07-01 16:25:08 +05:30
Manav Rathi
df85e70a37 lf 2024-07-01 16:23:28 +05:30
Manav Rathi
9734797bac Comment out for now 2024-07-01 16:19:24 +05:30
Manav Rathi
b430aeb7c4 Shorten 2024-07-01 15:55:08 +05:30
Manav Rathi
ff0f940798 Shorten 2024-07-01 15:32:15 +05:30
Manav Rathi
5988052521 Fix 2024-07-01 15:29:32 +05:30
Manav Rathi
c929d3dc74 Simplify 2024-07-01 15:10:57 +05:30
Manav Rathi
bf2873821d Allow to be set/get from webworkers 2024-07-01 14:54:42 +05:30
Manav Rathi
eaecf91aa1 Rearrange 2024-07-01 14:52:11 +05:30
Neeraj Gupta
49f96dbea1 [mob] Avoid FileUploader cache clear in case of autoLogout 2024-07-01 14:43:53 +05:30
Manav Rathi
b9972e131a [web] Update case of some recently touched l10n keys (#2334) 2024-07-01 14:25:10 +05:30
Manav Rathi
c318a15236 Update l10n keys 2024-07-01 14:22:21 +05:30
Manav Rathi
1a545aeef6 [web] New translations (#2333)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-07-01 14:19:19 +05:30
Crowdin Bot
d40d119b82 New Crowdin translations by GitHub Action 2024-07-01 08:48:44 +00:00
Manav Rathi
e71410af4e [web] Allow web workers to access token to make API calls (#2332) 2024-07-01 14:16:32 +05:30
Manav Rathi
612e81d74e tsc 2024-07-01 13:53:29 +05:30
Manav Rathi
bf1f4b26cf Keep separate 2024-07-01 13:51:43 +05:30
Manav Rathi
de7b80a352 Fix 2024-07-01 13:48:29 +05:30
Manav Rathi
cf3728eee8 Migrate 2024-07-01 13:46:48 +05:30
Manav Rathi
5b9c173b0e Clean 2024-07-01 13:37:17 +05:30
Manav Rathi
4179d183bd Unenum 2024-07-01 13:32:51 +05:30
Manav Rathi
fbae7b6fd0 Inline 2024-07-01 13:27:57 +05:30
Manav Rathi
62c9b2afc2 Remove dependency 2024-07-01 13:22:22 +05:30
Manav Rathi
cd81bbe19e Scope 2024-07-01 13:20:11 +05:30
Manav Rathi
39a6b3cd6b Make the context more specific 2024-07-01 13:20:11 +05:30
Manav Rathi
d14a6591d2 Assert that accounts has no local state 2024-07-01 13:20:11 +05:30
Manav Rathi
6b6edfb5bf Reduce state 2024-07-01 13:20:11 +05:30
Manav Rathi
7b20bbd5a2 Reorder 2024-07-01 13:20:11 +05:30
Manav Rathi
61a62f5656 Reduce local state for accounts 2024-07-01 13:20:11 +05:30
Manav Rathi
0376af8d38 Read from kv 2024-07-01 13:20:11 +05:30
Manav Rathi
85aaf94c89 4 2024-07-01 13:20:11 +05:30
Manav Rathi
af53585f6c 3 2024-07-01 13:20:11 +05:30
Manav Rathi
22fbf0a1be 2 2024-07-01 13:20:11 +05:30
Manav Rathi
4acd17f06b Funnel point 2024-07-01 13:20:11 +05:30
Manav Rathi
05e7a998e2 [desktop] Use clip-bpe-js as the Tokenizer (#2331)
Replace the inlined code with the library.

Tested by comparing the produced embeddings on a few sample prompts
(were exactly the same).
2024-07-01 13:05:31 +05:30
Manav Rathi
bbc44d6ac1 [desktop] Use clip-bpe-js as the Tokenizer
Replace the inlined code with the library.

Tested by comparing the produced embeddings on a few sample prompts (were
exactly the same).
2024-07-01 13:03:07 +05:30
Manav Rathi
b1da1dfe05 [infra] Change prometheus scrape interval to 60s (the default) (#2330) 2024-07-01 11:47:12 +05:30
Manav Rathi
26c1dda600 [infra] Change prometheus scrape interval to 60s (the default) 2024-07-01 11:42:11 +05:30
Manav Rathi
2f0112d5de [web] Make the client package available to web worker code (#2329) 2024-07-01 09:55:41 +05:30
Manav Rathi
ca0fa88bb5 Incl x-c-p in all API fetches 2024-06-30 18:58:35 +05:30
Manav Rathi
45093fcc0c Inline 2024-06-30 18:44:25 +05:30
Manav Rathi
776915e659 Continue painting 2024-06-30 18:22:58 +05:30
Manav Rathi
4a14017cff cast 2024-06-30 18:14:27 +05:30
Manav Rathi
67e054a26d Continue second pass 2024-06-30 18:03:08 +05:30
Manav Rathi
6f073b007b isDesktop 2024-06-30 17:58:22 +05:30
Manav Rathi
284799bc7a Second pass 2024-06-30 17:54:11 +05:30
Manav Rathi
54c54d50c6 Static pkg name 2024-06-30 17:52:52 +05:30
Manav Rathi
f11960981a Use static app name 2024-06-30 17:41:56 +05:30
Manav Rathi
9973e5c701 Test 2024-06-30 08:07:38 +05:30
Manav Rathi
8fbc7b3937 Case 2024-06-30 07:58:14 +05:30
Manav Rathi
d09a7b290b New constant 2024-06-30 07:55:24 +05:30
Manav Rathi
bd627a6e54 Case 2024-06-30 07:49:21 +05:30
Manav Rathi
3ddd5bff2d Add cross-env (shx doesn't allow this)
https://github.com/shelljs/shx/issues/127
2024-06-29 21:48:50 +05:30
Manav Rathi
f7b7bae0af The plan
But will Windows play along...
2024-06-29 21:19:46 +05:30
Ashil
62c3ca3ecc [mob][photos] Fix: Intermittent disappearance of favorite album on 'On Ente' section. (#2314)
## Description

Quite possible the on ente section is built before favorites service is
finished initialising which is causing this issue. Reloading after init
is complete should fix this bug

## Tests

Tested and working fine.
2024-06-29 14:39:21 +05:30
Ashil
a967d2fbd0 [mob][photos] Unselect all selected items on system back navigation (#2315) 2024-06-29 14:39:12 +05:30
Aman Raj Singh Mourya
3c86a9bc06 [mob][photos] Added time delay for invalid attempts 2024-06-29 14:19:47 +05:30
Manav Rathi
450981a5fb [desktop] Fetch face indexes - Part 2/x (#2320)
Continuation of https://github.com/ente-io/ente/pull/2297
2024-06-29 12:01:52 +05:30
Manav Rathi
ad2dabcc96 Fix again 2024-06-29 11:43:15 +05:30
Manav Rathi
8b16b4632f Renames 2024-06-29 11:36:45 +05:30
Manav Rathi
bb37630bae Nicer 2024-06-29 11:32:21 +05:30
Manav Rathi
66cb95e32c Fix hanging paren 2024-06-29 11:31:43 +05:30
Manav Rathi
ea51cdfc77 Remove unused 2024-06-29 11:18:46 +05:30
Manav Rathi
4d41f2d64c Remove unused 2024-06-29 11:15:43 +05:30
Manav Rathi
266796f619 wa 2024-06-29 10:52:43 +05:30
Manav Rathi
57a587301b Hook back into the app 2024-06-29 10:44:29 +05:30
Manav Rathi
90c15774d7 Extract 2024-06-29 10:44:29 +05:30
Manav Rathi
7d46de139e Logout 2024-06-29 10:44:29 +05:30
Manav Rathi
dd3243492a Use module state 2024-06-29 10:44:29 +05:30
Manav Rathi
ea7619d405 Potential entry point 2024-06-29 10:44:29 +05:30
Manav Rathi
7d8ade7fe4 Extract 2024-06-29 10:44:29 +05:30
Manav Rathi
ddf18bd036 Handle versioning 2024-06-29 10:44:27 +05:30
Manav Rathi
84a03dafe3 Isolate what changes 2024-06-29 10:44:02 +05:30
Manav Rathi
dc5b0b4393 Save 2024-06-29 10:44:02 +05:30
Manav Rathi
36d8c2a427 Specific-er than sync 2024-06-29 10:44:02 +05:30
Manav Rathi
b63a15a521 Move trash handling to existing sync 2024-06-29 10:44:02 +05:30
Manav Rathi
53452344f3 Lints 2024-06-29 10:44:02 +05:30
Manav Rathi
a119d544af prune prep 2024-06-29 10:44:02 +05:30
Manav Rathi
67d9e650ba Include files from trash 2024-06-29 10:44:02 +05:30
Manav Rathi
61d35159fa Dup 2024-06-29 10:44:02 +05:30
Manav Rathi
593ece7681 Compile 2024-06-29 10:44:01 +05:30
Manav Rathi
45a103f66a New layer 2024-06-29 10:42:28 +05:30
Manav Rathi
27c6474f06 Doc all 2024-06-29 10:42:28 +05:30
Manav Rathi
660f6c645b Rearrange 2024-06-29 10:42:28 +05:30
Manav Rathi
90cffef7be Doc 2024-06-29 10:42:28 +05:30
Manav Rathi
d6f30546b9 Rearrange 2024-06-29 10:42:28 +05:30
Manav Rathi
a9e0aa13ff Inline 2024-06-29 10:42:28 +05:30
Manav Rathi
1496b60895 Inline 2024-06-29 10:42:28 +05:30
Manav Rathi
2f7923b097 Rearrange 2024-06-29 10:42:28 +05:30
Manav Rathi
d5d7efd657 doc 3 2024-06-29 10:42:28 +05:30
Manav Rathi
c4b93019d5 doc 2 2024-06-29 10:42:28 +05:30
Manav Rathi
0943d1db8c wip doc 2024-06-29 10:42:28 +05:30
Manav Rathi
822e82d709 [desktop] Speed up reconciliation (#2319)
- Do an upfront directory listing.
- Avoid JSON parsing (the various LivePhoto functions we were callling
were internally doing it), and even when we have to, don't do it twice
(I tested, the JSON parsing does have a noticeable impact)

@ua741 Monkey testing shows it to be _*almost_ O(1) compared to the
earlier O(n). _*almost_ is with many caveats:
- The recursive ls is still multi-second (takes ~5s for 300k files on my
SSD)
- The loop is now almost instantaneous for people who don't have live
photos or have already synced, but there is still one JSON parse (in the
else branch) that'll run for initial exports or people with many live
photos
2024-06-29 09:32:11 +05:30
Manav Rathi
51eec12af5 Avoid JSON parsing, and even when we have to, don't do it twice 2024-06-29 09:14:17 +05:30
Manav Rathi
5da4028ebf [desktop] Speed up reconciliation by doing an upfront directory listing 2024-06-29 08:31:28 +05:30
Manav Rathi
26626797ff [web] Minor localization fixes (#2317) 2024-06-29 08:12:59 +05:30
Manav Rathi
ee3ddad4d1 Fix 2024-06-29 08:11:02 +05:30
Manav Rathi
730ca2119c Fix typo 2024-06-29 08:09:24 +05:30
Manav Rathi
58127591d0 Mark as pending translation 2024-06-29 08:08:55 +05:30
Manav Rathi
c9eaa2df12 Fix 2024-06-29 08:03:36 +05:30
Manav Rathi
66549445d1 [web] Fix download notification text overflow (#2316)
Fix overflowing file name on download success notification in case the
file name is very long and without any spaces.
2024-06-28 22:25:15 +05:30
Manav Rathi
f167839ddc Fix overflowing file name on download success notification
Ellipse text in notifications. This wasn't happening earlier if the file name
was long, without spaces to act as breaks.
2024-06-28 22:20:32 +05:30
Manav Rathi
6f0a36acde Inline 2024-06-28 22:13:13 +05:30
Ashil
1463d4199e [mob][photos] upgrade photo_manager (#2301) 2024-06-28 19:04:54 +05:30
ashilkn
094d4053fb [mob][photos] unselect all selected items on system back navigation 2024-06-28 18:52:36 +05:30
ashilkn
0a4abada00 [mob][photos] add debouncer to reloading user collections tab on FavoritesServiceInitCompleteEvent 2024-06-28 16:38:48 +05:30
ashilkn
6bf00c40a0 [mob][photos] Fix: Intermittent disappearance of favorite album on 'On Ente' section
Quite possible the on ente section is built before favorites service is finished initialising which is causing this issue. Reloading after init is compelte should fix this bug
2024-06-28 15:55:46 +05:30
Aman Raj Singh Mourya
b4e0eb8491 Merge branch 'lockscreen_options' of https://github.com/ente-io/ente into lockscreen_options 2024-06-27 13:34:34 +05:30
Aman Raj Singh Mourya
bdbed2aa17 [mob][photos] Show errorText with border on invalid Pin 2024-06-27 13:33:40 +05:30
Aman Raj Singh Mourya
2652f39c21 [mob][photos] Fix visibility toggle disappearing on error state in lockscreen (#2303) 2024-06-27 13:32:37 +05:30
ashilkn
6f95272400 [mob][photos] Deprecate isPasswordInput in TextInputWidget, since the widget is becoming bloated and hard to maintain. Will be create a separate PasswordInputWidget instead in future 2024-06-27 12:54:26 +05:30
ashilkn
20c33fd00b [mob][photos] Workaround for visibility icon disappearing when password is wrong in lock screen password 2024-06-27 12:50:39 +05:30
ashilkn
1d5366c6b6 [mob][photos] upgrade photo_manager 2024-06-27 10:05:43 +05:30
Aman Raj Singh Mourya
59b132edf8 [mob][photos] moved funtions to lockscreen_setting.dart from configuration.dart 2024-06-26 14:02:27 +05:30
Prateek Sunal
73a53994f3 chore(mobile): add adapted from header in relevant files 2024-06-25 12:37:35 +05:30
Aman Raj Singh Mourya
3fe0faff6a [mob][photos] Implement hashing and salting for storing custom PIN/password in secure storage 2024-06-21 18:03:39 +05:30
Aman Raj Singh Mourya
fc7e7f4c88 [mob][photos] resolved PR comments 2024-06-20 12:57:14 +05:30
Aman Raj Singh Mourya
39d232a937 [mob][photos] landscape mode keyboard configured 2024-06-19 18:26:36 +05:30
Aman Raj Singh Mourya
1d9f4e27c7 [mob][photos] changes to the Pinput container 2024-06-18 18:59:01 +05:30
Aman Raj Singh Mourya
aeb3e2be24 [mob][photos] implemeted custom keyboard 2024-06-18 13:37:32 +05:30
Aman Raj Singh Mourya
89e7cfb357 [mob][photos] Add Animation to the lock icon & errorBorder on wrong password 2024-06-15 15:17:28 +05:30
Ashil
4e7b575c18 Error state for text input widget (#2139)
## Description

Surface error state in `TextInputWidget` if password entered is
incorrect.
2024-06-14 15:33:59 +05:30
ashilkn
c6d9b7d875 [mob][photos] Log from TextInputWidge when password is wrong 2024-06-14 15:31:05 +05:30
ashilkn
b63bd89512 [mob][photos] Show password wrong state in TextInputField 2024-06-14 15:28:53 +05:30
ashilkn
da59a29ea2 Merge branch 'main' into lockscreen_options 2024-06-14 13:58:37 +05:30
Aman Raj Singh Mourya
a135f46775 [mob][photos] Added Haptic feedback to pin/password input 2024-06-14 11:48:15 +05:30
Aman Raj Singh Mourya
b20e8a5d17 [mob][photos] upgraded Pinput pakage and Added custom password input widget 2024-06-13 01:21:06 +05:30
Aman Raj Singh Mourya
11da0704c6 [mob][photos] show lock when app starts & authenticate to change lock settings 2024-06-11 18:17:25 +05:30
Aman Raj Singh Mourya
d3c7ba6874 [mob][photos] added the dynamicFAV and made seprate function for each type of lock 2024-06-10 18:06:24 +05:30
Aman Raj Singh Mourya
d94fe56318 [mob][photos] update the UI acc. to the new figma design 2024-06-10 15:19:09 +05:30
Aman Raj Singh Mourya
53b1dc9b67 [mob][photos] function of the lockscreen completed 2024-06-09 00:41:32 +05:30
Aman Raj Singh Mourya
d2b6ca53f8 Merge branch 'main' of https://github.com/ente-io/ente into lockscreen_options 2024-06-08 13:14:27 +05:30
Prateek Sunal
d694f2796b chore(mobile): move models to ffmpeg folder 2024-06-08 01:48:36 +05:30
Prateek Sunal
5dd42b5a07 chore(mobile): import dart typed_dart instead of flutter foundation 2024-06-08 01:46:03 +05:30
Prateek Sunal
cd8709be9d chore(mobile): import dart async for StreamSubscription 2024-06-08 01:45:04 +05:30
Prateek Sunal
4a9c09e896 fix(mobile): revert intl_en.arb change (again) 2024-06-08 01:44:06 +05:30
Prateek Sunal
6de7b840ae fix(mobile): revert intl_en.arb change (again) 2024-06-08 01:43:43 +05:30
Prateek Sunal
f34d2afced fix(mobile): revert intl_en.arb change 2024-06-08 01:42:54 +05:30
Prateek Sunal
d41a8d7a11 fix(mobile): revert intl_en.arb change 2024-06-08 01:42:13 +05:30
Prateek Sunal
ed9cb9668c Merge branch 'mobile-videoeditor' into mobile-ffprobe 2024-06-08 01:23:05 +05:30
Prateek Sunal
f8fa6adad8 Merge branch 'mobile-videoeditor' into mobile-ffprobe 2024-06-08 01:19:02 +05:30
Prateek Sunal
c1acc3eca1 fix(mobile): add ffprobe parser 2024-06-08 01:14:54 +05:30
Aman Raj Singh Mourya
1cd0440453 [mob][photos] added logic of Pin and Password screen 2024-06-07 01:57:59 +05:30
Aman Raj Singh Mourya
356d119fb9 [mob][photos] password screen added 2024-06-06 00:37:19 +05:30
Aman Raj Singh Mourya
5b89ef972f lock option screen added 2024-06-05 02:27:55 +05:30
466 changed files with 21354 additions and 9164 deletions

View File

@@ -2,8 +2,9 @@ name: "Sync Crowdin translations (auth)"
on:
schedule:
# Run Mondays at ~6:30 AM IST
# See: [Note: Run workflow on specific days of the week]
- cron: "50 1 * * 2"
- cron: "50 0 * * 1"
# Also allow manually running the workflow.
workflow_dispatch:

View File

@@ -2,8 +2,9 @@ name: "Sync Crowdin translations (mobile)"
on:
schedule:
# Run Mondays at ~6:30 AM IST
# See: [Note: Run workflow on specific days of the week]
- cron: "40 1 * * 2"
- cron: "40 0 * * 1"
# Also allow manually running the workflow.
workflow_dispatch:

View File

@@ -9,6 +9,8 @@ on:
# Or the workflow itself is changed
- ".github/workflows/web-crowdin.yml"
schedule:
# Run Mondays at ~6:00 AM IST
#
# [Note: Run workflow on specific days of the week]
#
# The last (5th) component of the cron syntax denotes the day of the
@@ -16,7 +18,7 @@ on:
# and FRI, this can be set to `2,5`.
#
# See also: [Note: Run workflow every 24 hours]
- cron: "20 1 * * 2"
- cron: "20 0 * * 1"
# Also allow manually running the workflow.
workflow_dispatch:

View File

@@ -1,5 +1,9 @@
{
"icons": [
{ "title": "1xBet",
"altNames": ["1x", "1x bet", "1x-bet"
]
},
{
"title": "3Commas"
},
@@ -10,6 +14,10 @@
{
"title": "Airtable"
},
{
"title": "airtm",
"hex": "000000"
},
{
"title": "Anycoin Direct",
"slug": "anycoindirect"
@@ -20,6 +28,12 @@
{
"title": "Bitfinex"
},
{
"title": "bitget"
},
{
"title": "Bitmart"
},
{
"title": "BitMEX"
},
@@ -92,6 +106,10 @@
{
"title": "Crowdpear"
},
{
"title": "crypto.com",
"altNames": ["crypto"]
},
{
"title": "DCS",
"altNames": [
@@ -102,6 +120,9 @@
{
"title": "DEGIRO"
},
{
"title": "deriv"
},
{
"title": "DirectAdmin"
},
@@ -171,6 +192,9 @@
{
"title": "Hivelocity"
},
{
"title": "HTX"
},
{
"title": "IceDrive",
"slug": "Icedrive"
@@ -178,6 +202,10 @@
{
"title": "ING"
},
{
"title": "Instant Gaming",
"slug": "instant_gaming"
},
{
"title": "Instagram"
},
@@ -273,6 +301,13 @@
{
"title": "Mintos"
},
{
"title": "Mistral",
"altNames": [
"Mistral AI",
"MistralAI"
]
},
{
"title": "Mozilla"
},
@@ -317,6 +352,8 @@
{
"title": "Odido"
},
{ "title": "okx",
"hex": "858585" },
{
"title": "Parsec"
},
@@ -446,6 +483,13 @@
"Techlore Forums"
]
},
{
"title": "Teleport",
"altNames": [
"Gravitational Teleport",
"GoTeleport"
]
},
{
"title": "Termius",
"hex": "858585"
@@ -534,6 +578,8 @@
],
"slug": "Yandex"
},
{ "title": "yahoo" },
{
"title": "YNAB",
"altNames": [
@@ -543,4 +589,4 @@
"hex": "3B5EDA"
}
]
}
}

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 127.56 27.9"><defs><style>.cls-1{fill:#007acc;}.cls-2{fill:#002f5e;}</style></defs><title>logoo</title><g id="Слой_2" data-name="Слой 2"><g id="Layer_1" data-name="Layer 1"><path class="cls-1" d="M73.8,8.37C74.94,3.79,72.16,0,65.35,0L50.59,0,45.06,22.4l3.21,5.51h10.5c6.88,0,12.21-3.21,13.58-8.79.69-2.86-.11-4.86-1.91-5.86v-.07A7.78,7.78,0,0,0,73.8,8.37Zm-9,10.57c-.28,1.17-1.07,2.37-4.34,2.37h-6.7l1.17-4.8h6.67C64.83,16.5,65.07,17.73,64.76,18.94ZM66.14,8.52c-.24.9-.93,2-3.75,2h-6l1-3.9h6C66.24,6.6,66.38,7.52,66.14,8.52Z"/><polygon class="cls-1" points="83.09 17.1 96.53 17.1 98.06 10.5 84.71 10.5 85.75 6.6 98.97 6.6 100.5 0 78.8 0 71.92 27.9 96.5 27.9 98.11 21.3 82.1 21.3 83.09 17.1"/><polygon class="cls-1" points="102.38 0 100.84 6.6 108.87 6.6 103.6 27.9 112.03 27.9 117.31 6.6 125.91 6.6 127.56 0 102.38 0"/><path class="cls-2" d="M8.82,27.9H.32L4,13l.85-2.25L2.6,13,.1,15.53,0,8.09,8.82,0h6.87Z"/><path class="cls-2" d="M39.51,16.34,36.8,11.75,49.95,0H37.7l-5,4.8,0,0L15.74,20.35,7.6,27.9H19.19l8.71-7.77,2.93,5c1,1.26,2.41,2.79,8.39,2.79h7L39.52,16.33Z"/><path class="cls-2" d="M31.76,3.26l0-.06A7.69,7.69,0,0,0,25.12,0H16.07l6.75,11.48Z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-738.2 149.1 435.4 102.8" xml:space="preserve"><path d="M-612.2 149.1h-18.4v99.6h18.4zm-104.1 79 25.4-55 14 30.2zm79.3 20.7-17.9-38.7 17.4-11-8.9-15-15.9 10-17.4-37.6c-1.1-2.3-2.7-4.2-4.7-5.5s-4.4-2-6.7-1.9c-2.4.1-4.7.9-6.6 2.3s-3.4 3.3-4.3 5.5l-34.9 75.5-.1.2c-2.3 5.7-.8 12.2 3.8 16.2 4.5 3.9 10.8 4.2 15.6.9l48.2-30.3 13.7 29.5zm54.3-53.1h27.3c14.1 0 18.8-7.7 18.8-16.4s-4.7-15.9-18.7-15.9h-27.4zm30.9-46.6c26.2 0 34.6 14.6 34.6 30 0 11.6-5.8 23.7-21.5 27.9l24.7 41.7h-20.8l-23-39.1h-24.9v39.1H-601v-99.6zm40.1 15.4h35v84.2h18.4v-84.2h35v-15.4h-88.4zm123.9-15.4H-415v99.6h16.6v-72.1c0-4.5-.3-8.6-.7-12.1h.5c.5 2.7 1.9 7.9 3.2 11.6l27.3 72.5h17.3l27.3-72.5c1.5-3.8 3.1-9.4 3.5-11.6h.5c-.4 3.6-.7 8-.7 12.1v72.1h17.2v-99.6h-27.4l-25.8 69.5c-1.5 4.2-2.3 6.7-2.8 10.1h-.3c-.5-3-1.2-5.2-2.3-8.7-.1-.4-.3-.9-.4-1.4z" style="fill:#050505"/></svg>

After

Width:  |  Height:  |  Size: 892 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="40" height="40" rx="8.711" fill="#00f0ff"/><path d="M18.46 15.767h7.468l7.64 7.592c.498.493.5 1.297.006 1.793L23.775 35h-7.693l2.326-2.261 8.54-8.486-8.432-8.487" fill="#1b1b1b"/><path d="M21.53 24.234h-7.47l-7.64-7.592a1.267 1.267 0 0 1-.005-1.793L16.214 5h7.693l-2.326 2.261-8.54 8.486 8.432 8.487" fill="#1b1b1b"/></svg>

After

Width:  |  Height:  |  Size: 410 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="logo" viewBox="0 0 500 500">
<g fill="#fff">
<path d="M307.382 358.988H153.698v13.428h153.684v-13.428zm-115.22 83.526H76.885v13.43h115.277v-13.43zm-76.984-83.468h-76.7v13.428h76.7v-13.428zm192.204-38.864H192.105v13.428h115.277v-13.428zm-153.797 0H76.942v13.428h76.643v-13.428zM307.38 146.585H115.236v13.428H307.38v-13.428zm-153.795-44.664h-76.7v13.428h76.7v-13.428z"/>
<path d="M409.287 231.022v-.34A153.91 153.91 0 0 0 276.144.3h-160.91v19.232H276.6a134.58 134.58 0 0 1 106.653 53.207 134.574 134.574 0 0 1 22.564 117.033 117.661 117.661 0 0 0-63.274-132.566A117.668 117.668 0 0 0 291.45 45.42H153.7v19.232h137.92a98.265 98.265 0 0 1 93.597 128.078 76.986 76.986 0 0 0-13.255-66.509 76.985 76.985 0 0 0-60.713-30.218H191.764v19.402H310.68a57.81 57.81 0 0 1 50.186 86.316 154.248 154.248 0 0 0-53.714-9.673H153.528v19.23h153.625a134.624 134.624 0 0 1 132.234 109.474 115.392 115.392 0 0 0-112.32-89.559H115.179v19.062h212.175a96.05 96.05 0 0 1 62.678 23.55 96.055 96.055 0 0 1 32.058 58.781 76.87 76.87 0 0 0-75.505-62.986H115.292v19.233h231.236a57.637 57.637 0 1 1 0 115.276H76.885v19.232h269.7a76.872 76.872 0 0 0 75.504-62.988 96.047 96.047 0 0 1-95.021 82.163H230.34v19.23h96.727a115.44 115.44 0 0 0 110.838-83.697A134.673 134.673 0 0 1 307.44 480.466H115.463V499.7h191.69a153.629 153.629 0 0 0 149.901-190.401 153.642 153.642 0 0 0-47.482-78.388l-.285.112z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -1,4 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 500 500">
<path fill="#182954" d="m75.705 269.386 12.606 10.812a40.902 40.902 0 0 1-8.642 8.853 53.365 53.365 0 0 1-13.599 7.73 45.769 45.769 0 0 1-16.998 3.094 49.02 49.02 0 0 1-25.212-6.466A45.84 45.84 0 0 1 6.72 275.84a50.83 50.83 0 0 1-6.212-25.287 52.621 52.621 0 0 1 3.525-19.394 49.28 49.28 0 0 1 10.2-16.022 46.603 46.603 0 0 1 15.44-10.812 49.626 49.626 0 0 1 19.969-3.938 45.9 45.9 0 0 1 23.51 5.48A49.016 49.016 0 0 1 88.308 219.5l-12.744 11.244A39.368 39.368 0 0 0 64.938 220.2a27.358 27.358 0 0 0-15.296-3.933 27.636 27.636 0 0 0-16.147 4.632 30.695 30.695 0 0 0-10.478 12.508 38.957 38.957 0 0 0-3.688 16.879 36.724 36.724 0 0 0 3.684 16.442 29.719 29.719 0 0 0 10.184 11.793 27.208 27.208 0 0 0 15.44 4.358c4.608.197 9.203-.62 13.456-2.391a27.765 27.765 0 0 0 8.214-5.622l5.381-5.481M93.275 264.047a35.477 35.477 0 0 1 4.535-17.71 34.84 34.84 0 0 1 12.748-12.929 39.497 39.497 0 0 1 18.838-4.778 39.497 39.497 0 0 1 18.838 4.778 34.846 34.846 0 0 1 12.749 12.928 36.889 36.889 0 0 1 4.532 17.709 36.891 36.891 0 0 1-4.532 17.708 36.519 36.519 0 0 1-13.365 13.153 36.875 36.875 0 0 1-18.181 4.837 36.88 36.88 0 0 1-18.203-4.756 36.513 36.513 0 0 1-13.424-13.092 35.479 35.479 0 0 1-4.535-17.707v-.141zm35.979 21.224a16.949 16.949 0 0 0 10.623-3.23c2.804-2.121 5-4.93 6.375-8.151a24.848 24.848 0 0 0 2.124-9.698 24.293 24.293 0 0 0-2.124-9.697 20.265 20.265 0 0 0-6.375-8.15 19.056 19.056 0 0 0-10.623-3.233 19.057 19.057 0 0 0-10.625 3.233 20.118 20.118 0 0 0-6.231 8.009 24.296 24.296 0 0 0-2.125 9.697 24.713 24.713 0 0 0 2.125 9.839 19.985 19.985 0 0 0 6.374 8.15 16.949 16.949 0 0 0 10.624 3.231M168.905 202.628h16.856v17.71h-16.856v-17.71zm0 28.11h16.856v66.758h-16.856v-66.758zM192.416 297.495V230.88h16.147l.42 7.589a35.937 35.937 0 0 1 7.505-5.905 23.656 23.656 0 0 1 12.749-3.094 24.38 24.38 0 0 1 10.396 1.612 24.22 24.22 0 0 1 8.726 5.836 29.047 29.047 0 0 1 6.66 20.097v40.477H238.02v-40.335a13.257 13.257 0 0 0-.76-5.278 13.337 13.337 0 0 0-2.78-4.561 12.19 12.19 0 0 0-4.164-2.694 12.27 12.27 0 0 0-4.902-.82 14.974 14.974 0 0 0-6.377 1.24 14.87 14.87 0 0 0-5.236 3.82 18.046 18.046 0 0 0-4.534 12.51v36.118l-16.851.004z"/>
<path fill="#FA4A29" d="m463.25 246.618 29.754-44.007h-28.187l-15.44 24.596-15.883-24.596h-31.163l1.416 1.967-.993-.416a63.329 63.329 0 0 0-23.083-4.046 50.453 50.453 0 0 0-25.92 6.607 46.609 46.609 0 0 0-14.308 12.929 40.334 40.334 0 0 0-15.582-11.806 65.028 65.028 0 0 0-26.344-5.077h-36.686v94.727h36.544a64.026 64.026 0 0 0 26.344-5.202A41.612 41.612 0 0 0 339.3 280.63c3.87 5.299 8.846 9.709 14.59 12.928a51.44 51.44 0 0 0 25.777 6.325 55.023 55.023 0 0 0 24.646-5.34l-1.982 2.953h27.76l18.558-29.108 19.122 29.108h31.73l-36.252-50.878zm-147.452 21.624a25.772 25.772 0 0 1-8.902 5.504 25.916 25.916 0 0 1-10.376 1.523h-10.334v-50.573h10.338c3.62-.305 7.264.165 10.685 1.378a25.427 25.427 0 0 1 9.147 5.65 26.146 26.146 0 0 1 6.374 18.271 24.821 24.821 0 0 1-1.597 9.836 24.965 24.965 0 0 1-5.343 8.436l.008-.025zm101.549 6.911-12.04-11.228a38.572 38.572 0 0 1-10.197 9.149 27.09 27.09 0 0 1-13.6 2.952 25.509 25.509 0 0 1-13.314-3.372 22.838 22.838 0 0 1-8.8-9.415 29.459 29.459 0 0 1-3.118-13.63c-.091-4.623.929-9.2 2.975-13.353a23.258 23.258 0 0 1 8.642-9.415 25.653 25.653 0 0 1 13.738-3.513 24.798 24.798 0 0 1 12.748 3.23 32.061 32.061 0 0 1 9.639 8.733l12.606-12.508 18.415 26.28-17.694 26.09z"/>
<path fill="#182954" d="m75.006 269.464 12.657 10.855a41.066 41.066 0 0 1-8.676 8.889 53.579 53.579 0 0 1-13.654 7.76 45.952 45.952 0 0 1-17.066 3.107 49.217 49.217 0 0 1-25.313-6.492 46.023 46.023 0 0 1-17.21-17.64A51.033 51.033 0 0 1-.49 250.556a52.832 52.832 0 0 1 3.538-19.472 49.477 49.477 0 0 1 10.242-16.086 46.79 46.79 0 0 1 15.5-10.855 49.825 49.825 0 0 1 20.05-3.954 46.083 46.083 0 0 1 23.605 5.503 49.212 49.212 0 0 1 15.215 13.685l-12.795 11.29a39.526 39.526 0 0 0-10.667-10.584 27.467 27.467 0 0 0-15.358-3.95 27.747 27.747 0 0 0-16.212 4.651 30.818 30.818 0 0 0-10.52 12.559 39.113 39.113 0 0 0-3.702 16.946 36.87 36.87 0 0 0 3.699 16.508 29.838 29.838 0 0 0 10.224 11.84 27.317 27.317 0 0 0 15.501 4.376 31.64 31.64 0 0 0 13.511-2.401 27.877 27.877 0 0 0 8.247-5.644l5.403-5.503m17.656-5.362a35.619 35.619 0 0 1 4.553-17.781 34.98 34.98 0 0 1 12.8-12.98 39.655 39.655 0 0 1 18.913-4.797 39.66 39.66 0 0 1 18.913 4.797 34.985 34.985 0 0 1 12.8 12.98 37.037 37.037 0 0 1 4.55 17.779 37.04 37.04 0 0 1-4.55 17.78 36.665 36.665 0 0 1-13.418 13.205 37.023 37.023 0 0 1-18.254 4.856 37.027 37.027 0 0 1-18.276-4.774A36.659 36.659 0 0 1 97.2 282.022a35.62 35.62 0 0 1-4.553-17.777v-.142zm36.123 21.31a17.017 17.017 0 0 0 10.666-3.244 20.199 20.199 0 0 0 6.4-8.184 24.947 24.947 0 0 0 2.133-9.736 24.391 24.391 0 0 0-2.133-9.736 20.347 20.347 0 0 0-6.4-8.183 19.133 19.133 0 0 0-10.666-3.245c-3.803 0-7.518 1.13-10.667 3.245a20.2 20.2 0 0 0-6.256 8.041 24.393 24.393 0 0 0-2.134 9.736 24.812 24.812 0 0 0 2.134 9.878 20.065 20.065 0 0 0 6.4 8.184 17.017 17.017 0 0 0 10.666 3.244m39.667-82.975h16.924v17.781H168.58v-17.781zm0 28.223h16.924v67.026H168.58V230.66zm23.605 67.025v-66.884h16.212l.42 7.62a36.08 36.08 0 0 1 7.537-5.929 23.751 23.751 0 0 1 12.8-3.106c3.556-.227 7.12.326 10.438 1.618a24.317 24.317 0 0 1 8.76 5.86 29.164 29.164 0 0 1 6.687 20.177v40.64h-17.067v-40.498a13.31 13.31 0 0 0-.763-5.298 13.39 13.39 0 0 0-2.792-4.58 12.239 12.239 0 0 0-4.18-2.705 12.32 12.32 0 0 0-4.921-.823c-2.2-.058-4.388.367-6.403 1.245a14.929 14.929 0 0 0-5.257 3.836 18.118 18.118 0 0 0-4.552 12.559v36.264l-16.919.004z"/>
<path fill="#FA4A29" d="m464.104 246.605 29.874-44.184h-28.3l-15.502 24.695-15.946-24.695h-31.288l1.421 1.975-.997-.418a63.582 63.582 0 0 0-23.175-4.062 50.655 50.655 0 0 0-26.025 6.634 46.796 46.796 0 0 0-14.365 12.98 40.496 40.496 0 0 0-15.644-11.853 65.288 65.288 0 0 0-26.45-5.098h-36.833v95.107h36.691a64.283 64.283 0 0 0 26.45-5.223 41.778 41.778 0 0 0 15.643-11.71 45.958 45.958 0 0 0 14.647 12.98 51.646 51.646 0 0 0 25.882 6.35 55.244 55.244 0 0 0 24.744-5.361l-1.99 2.964h27.872l18.631-29.225 19.2 29.225H500.5l-36.396-51.081zm-148.042 21.71a25.875 25.875 0 0 1-8.938 5.526 26.02 26.02 0 0 1-10.417 1.53H286.33v-50.777h10.38a25.677 25.677 0 0 1 10.727 1.384 25.529 25.529 0 0 1 9.184 5.672 26.25 26.25 0 0 1 6.4 18.345 24.92 24.92 0 0 1-1.604 9.876 25.065 25.065 0 0 1-5.365 8.469l.009-.025zm101.955 6.939L405.93 263.98a38.727 38.727 0 0 1-10.237 9.185 27.198 27.198 0 0 1-13.654 2.965 25.611 25.611 0 0 1-13.368-3.386 22.93 22.93 0 0 1-8.836-9.453 29.577 29.577 0 0 1-3.13-13.685 29.036 29.036 0 0 1 2.987-13.406 23.352 23.352 0 0 1 8.676-9.452 25.756 25.756 0 0 1 13.793-3.528 24.898 24.898 0 0 1 12.8 3.244 32.19 32.19 0 0 1 9.677 8.767l12.657-12.558 18.488 26.386-17.765 26.194z"/>
</svg>

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg"><circle cx="512" cy="512" r="512" style="fill:#002967"/><path d="M714.2 628.8 512 745.5 309.8 628.8V395.3L512 278.5l202.2 116.8zM512 256 290.3 384v256L512 768l221.7-128V384zm86.9 110.5H424.7l-20.2 88.8h215.4zM455.6 577.6v-59L404 485.8l-58.4 43.4 79.6 138.4H457l37.6-35V615zm113-108.9H455.8l19 49.6L469 574h43l43.4-.2-5.4-55.4zm51.6 16.7-51 33.2v59l-39 37.4v17.6l37.6 34.6h31.4l79.2-138z" style="fill:#fff"/></svg>

After

Width:  |  Height:  |  Size: 479 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 216.86 72"><path fill="#FF444F" d="m43.472 2.271-3.715 21.06H26.86c-12.03 0-23.498 9.744-25.623 21.77l-.9 5.118C-1.777 62.246 6.25 71.99 18.281 71.99h10.755c8.768 0 17.122-7.095 18.664-15.86L57.605 0zm-9.15 51.872c-.475 2.707-2.914 4.911-5.622 4.911h-6.534c-5.408 0-9.026-4.388-8.077-9.803l.564-3.192c.958-5.405 6.119-9.803 11.526-9.803h11.298zm108.463 17.845 8.462-47.986h13.385l-8.462 47.986zm1.448-47.433-2.016 11.419c-6.341-1.97-12.883-1.343-14.893-.942L120.806 72h-13.394l8.032-45.52c4.357-1.803 15.055-5.462 28.789-1.925m-54.27-1.232h-10.42c-10.152 0-19.83 8.221-21.619 18.37L55.819 53.62c-1.79 10.15 4.981 18.37 15.135 18.37h22.163l2.273-12.895H74.562c-3.38 0-5.644-2.737-5.041-6.127l.07-.405h33.58l1.918-10.87c1.789-10.149-4.982-18.37-15.135-18.37zm1.69 17.342-.079.692H71.606l.109-.613c.602-3.38 3.687-6.354 7.077-6.354h7.8c3.351 0 5.615 2.925 5.061 6.275m111.81-16.663h13.394c-4.563 12.126-15.019 32.755-25.149 47.986h-13.394c-4.65-14.496-7.653-34.695-8.225-47.986h13.395c.241 4.335 2.183 20.417 4.399 31.651 6.077-10.93 12.777-25.269 15.569-31.651z"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500">
<g clip-path="url(#a)">
<path fill="#fff" d="M301.399 153.471c1.48-73.53-40.157-137.614-61.84-153.005-.098-.1-2.022-1.16-1.874 1.726 0 .05-.05.05-.05.099-2.219 138.897-73.628 176.315-112.38 227.227-86.16 113.194-14.281 242.323 78.86 266.792 1.578.395 5.895 1.677 14.06 3.355 4.266.912 5.5-2.714 2.367-8.116-11.124-19.363-30.932-52.046-34.854-94.028-8.904-97.482 113.984-158.506 115.71-244.05z"/>
<path fill="#008CD6" d="M348.339 200.56c-.74-.543-1.776-.494-1.875.444-1.973 17.66-20.25 54.315-44.325 88.577-81.005 115.513-40.207 167.904-8.51 204.262 5.846 6.734 8.756 5.23 11.84.444 2.86-4.563 7.227-10.36 25.949-19.215 2.91-1.381 73.604-38.923 81.276-124.393 7.4-82.681-45.633-134.974-64.355-150.12z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 790 B

View File

@@ -0,0 +1,19 @@
<svg width="500" height="500" viewBox="0 0 500 500" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M42.3044 77.0441C33.8578 77.0441 25.6439 72.6653 21.1175 64.8302C14.3699 53.1508 18.3751 38.2158 30.0626 31.4721L78.9366 3.27575C90.6254 -3.46792 105.571 0.534679 112.319 12.2141C119.066 23.8936 115.062 38.8286 103.374 45.5723L54.5009 73.7686C50.7944 75.9145 46.5873 77.0444 42.3044 77.0441Z" fill="url(#paint0_linear_154_309)"/>
<path d="M408.844 235.902L66.7177 433.284V348.692L335.121 193.755L286.49 165.698L30.0615 313.446C22.5003 317.808 17.8424 325.869 17.8424 334.593V475.58C17.8433 479.868 18.973 484.079 21.118 487.792C23.2629 491.504 26.3475 494.586 30.0615 496.728C33.7768 498.873 37.9911 500.001 42.2807 500C46.5703 500 50.7844 498.872 54.4999 496.728L469.94 257.051C477.501 252.689 482.159 244.627 482.159 235.902C482.159 227.178 477.501 219.117 469.94 214.756L348.167 144.501C347.907 144.344 347.643 144.192 347.377 144.046L225.564 73.7685C218.003 69.4069 208.689 69.4069 201.127 73.7685L30.0629 172.459C18.3741 179.203 14.3702 194.136 21.1178 205.817C25.6442 213.651 33.8581 218.031 42.3046 218.031C46.587 218.03 50.7935 216.901 54.4999 214.756L213.344 123.114L408.844 235.904V235.902Z" fill="url(#paint1_linear_154_309)"/>
<path d="M408.844 235.902L66.7177 433.284V348.692L82.1938 339.759L54.4972 299.366L30.0615 313.446C22.5003 317.808 17.8424 325.869 17.8424 334.593V475.58C17.8433 479.868 18.973 484.079 21.118 487.792C23.2629 491.504 26.3475 494.586 30.0615 496.728C33.7768 498.873 37.9911 500.001 42.2807 500C46.5703 500 50.7844 498.872 54.4999 496.728L469.94 257.051C477.501 252.689 482.159 244.627 482.159 235.902C482.159 227.178 477.501 219.117 469.94 214.756L348.167 144.501C347.907 144.344 347.643 144.192 347.377 144.046L225.564 73.7685C218.003 69.4069 208.689 69.4069 201.127 73.7685L30.0629 172.459C18.3741 179.203 14.3702 194.136 21.1178 205.817C25.6442 213.651 33.8581 218.031 42.3046 218.031C46.587 218.03 50.7935 216.901 54.4999 214.756L213.344 123.114L408.844 235.902Z" fill="url(#paint2_linear_154_309)"/>
<defs>
<linearGradient id="paint0_linear_154_309" x1="31.2204" y1="111.73" x2="108.384" y2="0.000287497" gradientUnits="userSpaceOnUse">
<stop offset="0.26" stop-color="#FF670D"/>
<stop offset="1" stop-color="#FF5317"/>
</linearGradient>
<linearGradient id="paint1_linear_154_309" x1="86.5912" y1="285.221" x2="187.325" y2="109.662" gradientUnits="userSpaceOnUse">
<stop stop-color="#FF7207"/>
<stop offset="1" stop-color="#FF7208" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint2_linear_154_309" x1="35.1941" y1="500" x2="482.158" y2="227.227" gradientUnits="userSpaceOnUse">
<stop stop-color="#FF8000"/>
<stop offset="1" stop-color="#FF4020"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1,8 @@
<svg width="500" height="500" viewBox="0 0 500 500" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 22.72H90.9091V113.629V113.629V204.538V295.447H0V204.538V113.629V113.629V22.72ZM363.636 22.72H454.545V113.629H363.636V22.72ZM363.636 113.629L363.636 204.538H272.727V113.629L363.636 113.629ZM90.9091 295.447H0V386.357V477.266H90.9091V386.357V295.447ZM181.818 295.447H272.727V386.357H181.818V295.447ZM454.545 295.447H363.636V386.357V477.266H454.545V386.357V295.447Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M409.091 386.356H500V477.266H409.091V386.356ZM45.4551 386.356H136.364V477.266H45.4551V386.356Z" fill="#EA3326"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M45.4551 295.448H136.364V386.357H45.4551V295.448ZM318.182 295.448H227.273V386.357H318.182V295.448ZM500 295.448H409.091V386.357H500V295.448Z" fill="#EB5829"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M45.4551 204.538H136.364H136.364H227.273H318.182H409.091H500V295.447H409.091H318.182H227.273H136.364H136.364H45.4551V204.538Z" fill="#EE792F"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M45.4551 113.629H136.364L227.273 113.629V204.538L136.364 204.538L136.364 204.538L45.4551 204.538V113.629ZM409.091 113.629H500V204.538H409.091H318.182V113.629H409.091Z" fill="#F2A73B"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M45.4551 22.72H136.364V113.629H45.4551V22.72ZM409.091 22.72H500V113.629H409.091V22.72Z" fill="#F7D046"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="157.42708mm"
height="44.185417mm"
viewBox="0 0 157.42708 44.185417"
version="1.1"
id="svg8"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
sodipodi:docname="okx logo.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="567.26578"
inkscape:cy="219.28838"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:pagecheckerboard="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="1912"
inkscape:window-y="70"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-62.058587,-90.445746)">
<g
style="fill:#000000"
id="g886"
transform="matrix(0.39972707,0,0,0.34817986,61.931647,90.445746)">
<path
id="path839"
d="M 115.822,0 H 2.94268 C 2.24645,0 1.57875,0.297103 1.08644,0.825953 0.594137,1.3548 0.317566,2.07208 0.317566,2.81999 V 124.079 c 0,0.748 0.276571,1.466 0.768874,1.995 0.49231,0.528 1.16001,0.825 1.85624,0.825 H 115.822 c 0.697,0 1.364,-0.297 1.857,-0.825 0.492,-0.529 0.769,-1.247 0.769,-1.995 V 2.81999 c 0,-0.74791 -0.277,-1.46519 -0.769,-1.994037 C 117.186,0.297103 116.519,0 115.822,0 Z M 79.0709,81.7797 c 0,0.7479 -0.2766,1.4651 -0.7689,1.994 -0.4923,0.5288 -1.16,0.8259 -1.8562,0.8259 H 42.3193 c -0.6962,0 -1.3639,-0.2971 -1.8562,-0.8259 -0.4923,-0.5289 -0.7689,-1.2461 -0.7689,-1.994 V 45.1198 c 0,-0.7479 0.2766,-1.4652 0.7689,-1.994 0.4923,-0.5289 1.16,-0.826 1.8562,-0.826 h 34.1265 c 0.6962,0 1.3639,0.2971 1.8562,0.826 0.4923,0.5288 0.7689,1.2461 0.7689,1.994 z"
inkscape:connector-curvature="0"
style="fill:#000000" />
<path
id="path841"
d="m 352.131,42.305 h -34.127 c -1.449,0 -2.625,1.2625 -2.625,2.82 v 36.6598 c 0,1.5574 1.176,2.82 2.625,2.82 h 34.127 c 1.45,0 2.625,-1.2626 2.625,-2.82 V 45.125 c 0,-1.5575 -1.175,-2.82 -2.625,-2.82 z"
inkscape:connector-curvature="0"
style="fill:#000000" />
<path
id="path843"
d="m 312.763,0.00204468 h -34.126 c -1.45,0 -2.625,1.26255532 -2.625,2.81998532 V 39.4819 c 0,1.5574 1.175,2.82 2.625,2.82 h 34.126 c 1.45,0 2.626,-1.2626 2.626,-2.82 V 2.82203 c 0,-1.55743 -1.176,-2.81998532 -2.626,-2.81998532 z"
inkscape:connector-curvature="0"
style="fill:#000000" />
<path
id="path845"
d="m 391.529,0.00204468 h -34.127 c -1.449,0 -2.625,1.26255532 -2.625,2.81998532 V 39.4819 c 0,1.5574 1.176,2.82 2.625,2.82 h 34.127 c 1.45,0 2.625,-1.2626 2.625,-2.82 V 2.82203 c 0,-1.55743 -1.175,-2.81998532 -2.625,-2.81998532 z"
inkscape:connector-curvature="0"
style="fill:#000000" />
<path
id="path847"
d="m 312.763,84.6038 h -34.126 c -1.45,0 -2.625,1.2625 -2.625,2.8199 v 36.6603 c 0,1.557 1.175,2.82 2.625,2.82 h 34.126 c 1.45,0 2.626,-1.263 2.626,-2.82 V 87.4237 c 0,-1.5574 -1.176,-2.8199 -2.626,-2.8199 z"
inkscape:connector-curvature="0"
style="fill:#000000" />
<path
id="path849"
d="m 391.529,84.6038 h -34.127 c -1.449,0 -2.625,1.2625 -2.625,2.8199 v 36.6603 c 0,1.557 1.176,2.82 2.625,2.82 h 34.127 c 1.45,0 2.625,-1.263 2.625,-2.82 V 87.4237 c 0,-1.5574 -1.175,-2.8199 -2.625,-2.8199 z"
inkscape:connector-curvature="0"
style="fill:#000000" />
<path
id="path851"
d="m 253.651,0.00204468 h -34.126 c -1.45,0 -2.626,1.26255532 -2.626,2.81998532 V 39.4819 c 0,1.5574 1.176,2.82 2.626,2.82 h 34.126 c 1.45,0 2.625,-1.2626 2.625,-2.82 V 2.82203 c 0,-1.55743 -1.175,-2.81998532 -2.625,-2.81998532 z"
inkscape:connector-curvature="0"
style="fill:#000000" />
<path
id="path853"
d="m 253.651,84.6038 h -34.126 c -1.45,0 -2.626,1.2625 -2.626,2.8199 v 36.6603 c 0,1.557 1.176,2.82 2.626,2.82 h 34.126 c 1.45,0 2.625,-1.263 2.625,-2.82 V 87.4237 c 0,-1.5574 -1.175,-2.8199 -2.625,-2.8199 z"
inkscape:connector-curvature="0"
style="fill:#000000" />
<path
id="path855"
d="m 216.888,45.0881 c 0,-0.7479 -0.277,-1.4652 -0.769,-1.994 -0.492,-0.5289 -1.16,-0.826 -1.856,-0.826 H 177.511 V 2.81999 c 0,-0.74791 -0.277,-1.46519 -0.769,-1.994037 C 176.25,0.297103 175.582,0 174.886,0 H 140.76 c -0.697,0 -1.364,0.297103 -1.857,0.825953 -0.492,0.528847 -0.769,1.246127 -0.769,1.994037 V 124.016 c 0,0.748 0.277,1.465 0.769,1.994 0.493,0.529 1.16,0.826 1.857,0.826 h 34.126 c 0.696,0 1.364,-0.297 1.856,-0.826 0.492,-0.529 0.769,-1.246 0.769,-1.994 V 84.5679 h 36.752 c 0.696,0 1.364,-0.2971 1.856,-0.8259 0.492,-0.5289 0.769,-1.2462 0.769,-1.9941 z"
inkscape:connector-curvature="0"
style="fill:#000000" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@@ -0,0 +1,10 @@
<svg width="500" height="500" viewBox="0 0 500 500" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_154_102)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M297.647 4.78775C299.464 5.07025 301.17 5.85037 302.58 7.04373C303.991 8.23707 305.052 9.79823 305.649 11.5583L305.999 12.85L318.014 75.3062C334.084 81.5487 349.235 89.9877 363.046 100.389L368.086 104.347L428.753 83.3683C432.661 81.6601 436.838 82.8893 439.78 86.285C460.64 109.972 477.591 138.554 487.424 168.574C488.164 170.248 488.382 172.11 488.047 173.912C487.713 175.714 486.842 177.369 485.553 178.657L484.483 179.552L436.345 221.01C438.072 230.28 438.566 240.3 438.566 250.05C438.566 257.904 438.238 265.862 437.229 273.465L436.345 279.112L484.483 320.611C486.153 321.812 487.359 323.564 487.896 325.567C488.433 327.568 488.266 329.698 487.424 331.589C477.613 361.63 460.682 390.17 439.801 413.836C437.167 416.877 433.588 418.19 430.07 417.232L428.753 416.774L368.107 395.774C354.797 406.629 339.923 415.565 324.041 422.357L318.034 424.816L305.999 487.313C305.584 489.358 304.561 491.226 303.069 492.668C301.577 494.108 299.685 495.052 297.647 495.375C281.93 498.292 266.213 500 250.023 500C233.813 500 218.095 498.292 202.378 495.375C200.559 495.092 198.851 494.312 197.438 493.119C196.023 491.926 194.958 490.366 194.354 488.605L194.026 487.313L182.011 424.816C165.665 418.593 150.284 410.026 136.341 399.379L131.919 395.774L71.2717 416.774C67.363 418.482 63.187 417.252 60.2246 413.836C39.3439 390.17 22.4131 361.63 12.6001 331.589C11.8637 329.914 11.6483 328.054 11.9828 326.252C12.3172 324.45 13.1856 322.795 14.4722 321.506L15.542 320.611L63.6601 279.112C62.0471 269.513 61.3034 259.786 61.4383 250.05C61.4383 242.258 61.7469 234.28 62.755 226.655L63.6601 221.03L15.5214 179.552C13.8514 178.351 12.6452 176.599 12.1087 174.596C11.5722 172.594 11.7386 170.465 12.5796 168.574C22.3925 138.554 39.3233 109.972 60.204 86.285C61.3417 84.8444 62.8613 83.7618 64.5845 83.1642C66.3078 82.5664 68.1636 82.4783 69.9346 82.9101L71.2717 83.3475L131.919 104.326C145.41 93.2005 160.453 84.1583 176.56 77.4936L182.011 75.2854L194.026 12.8292C194.435 10.7811 195.457 8.9099 196.949 7.46812C198.444 6.02634 200.338 5.08349 202.378 4.76692C233.817 -1.58897 266.188 -1.58897 297.627 4.76692L297.647 4.78775ZM250.002 103.722C170.017 103.722 105.257 169.219 105.257 250.008C105.257 330.798 170.059 396.295 250.002 396.295C329.946 396.295 394.747 330.798 394.747 250.008C394.747 169.219 329.946 103.722 249.982 103.722H250.002ZM341.61 229.676V186.136H158.395V229.676H228.196V334.256H271.809V229.676H341.61Z" fill="#512FC9"/>
</g>
<defs>
<clipPath id="clip0_154_102">
<rect width="500" height="500" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"><circle cx="512" cy="512" r="512" style="fill:#6001d2"/><path d="M256 390.61h101.45l59.06 151 59.83-151H575L426.38 748.15H327l40.66-94.74Zm332.7 143.54a61.36 61.36 0 1 0 61.37 61.35 61.36 61.36 0 0 0-61.37-61.35M768 275.85H657.83l-98.09 235.67h110.55Z" style="fill:#fff"/></svg>

After

Width:  |  Height:  |  Size: 344 B

View File

@@ -1,6 +1,7 @@
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:dio/io.dart';
import 'package:ente_auth/core/configuration.dart';
import 'package:ente_auth/core/event_bus.dart';
import 'package:ente_auth/events/endpoint_updated_event.dart';
@@ -36,6 +37,11 @@ class Network {
),
);
(_dio.httpClientAdapter as IOHttpClientAdapter).createHttpClient = () =>
HttpClient()
..badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
_enteDio = Dio(
BaseOptions(
baseUrl: endpoint,
@@ -50,6 +56,11 @@ class Network {
},
),
);
(_enteDio.httpClientAdapter as IOHttpClientAdapter).createHttpClient = () =>
HttpClient()
..badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
_setupInterceptors(endpoint);
Bus.instance.on<EndpointUpdatedEvent>().listen((event) {

View File

@@ -0,0 +1 @@
{}

View File

@@ -9,7 +9,7 @@
"onBoardingBody": "Sichern Sie Ihre 2FA-Codes",
"onBoardingGetStarted": "Los geht's",
"setupFirstAccount": "Ihr erstes Konto einrichten",
"importScanQrCode": "Scannen eines QR-Codes",
"importScanQrCode": "QR-Code scannen",
"qrCode": "QR-Code",
"importEnterSetupKey": "Einen Setup-Schlüssel eingeben",
"importAccountPageTitle": "Kontodaten eingeben",
@@ -31,7 +31,7 @@
"timeBasedKeyType": "Zeitbasiert (TOTP)",
"counterBasedKeyType": "Zählerbasiert (HOTP)",
"saveAction": "Speichern",
"nextTotpTitle": "Weiter",
"nextTotpTitle": "Nächster Code",
"deleteCodeTitle": "Code löschen?",
"deleteCodeMessage": "Sind Sie sicher, dass Sie diesen Code löschen wollen? Diese Aktion ist unumkehrbar.",
"viewLogsAction": "Protokolle anzeigen",
@@ -139,7 +139,7 @@
"inFamilyPlanMessage": "Sie haben einen Familien-Plan!",
"swipeHint": "Wischen Sie nach links, um Codes zu bearbeiten oder zu entfernen",
"scan": "Scannen",
"scanACode": "Scannen eines Codes",
"scanACode": "Scan einen Code",
"verify": "Überprüfen Sie",
"verifyEmail": "E-Mail-Adresse verifizieren",
"enterCodeHint": "Geben Sie den 6-stelligen Code \naus Ihrer Authentifikator-App ein.",

View File

@@ -20,6 +20,8 @@
"codeIssuerHint": "Emisor",
"codeSecretKeyHint": "Llave Secreta",
"codeAccountHint": "Cuenta (tu@dominio.com)",
"codeTagHint": "Marcado",
"accountKeyType": "Tipo de llave",
"sessionExpired": "La sesión ha expirado",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
@@ -77,12 +79,14 @@
"data": "Datos",
"importCodes": "Importar códigos",
"importTypePlainText": "Texto sin formato",
"importTypeEnteEncrypted": "Exportación cifrada Ente",
"passwordForDecryptingExport": "Contraseña para descifrar exportación",
"passwordEmptyError": "La contraseña no puede estar vacía",
"importFromApp": "Importar códigos de {appName}",
"importGoogleAuthGuide": "Exportar tus cuentas desde Google Authenticator a un código QR usando la opción \"Transferir Cuentas\". A continuación, usando otro dispositivo, escanee el código QR.\n\nConsejo: Puede usar la webcam de su portátil para tomar una foto del código QR.",
"importSelectJsonFile": "Seleccione el archivo JSON",
"importSelectAppExport": "Seleccione el archivo de exportación de {appName}",
"importEnteEncGuide": "Seleccione el archivo JSON cifrado exportado desde Ente",
"importRaivoGuide": "Utilice la opción \"Exportar códigos a un archivo de Zip\" en la configuración de Raivo.\n\nExtraiga el archivo zip e importe el archivo JSON.",
"importBitwardenGuide": "Use la opción \"Exportar caja fuerte\" dentro del menú Herramientas de Bitwarden e importe el fichero JSON no crifrado.",
"importAegisGuide": "Utilice la opción \"Exportar la bóveda\" en ajustes de Aegis.\n\nSi tu bóveda es cifrada, necesitara entrar contraseña de bóveda para descifrar la bóveda.",
@@ -119,12 +123,15 @@
"oops": "Ups",
"suggestFeatures": "Sugerir funcionalidades",
"faq": "Preguntas Frecuentes",
"faq_q_1": "¿Qué tan seguro es Auth?",
"faq_a_1": "Todos los códigos que copia de seguridad vía Ente se almacenan cifrados de extremo a extremo. Esto significa que solo usted puede acceder a sus códigos. Nuestras aplicaciones son de código abierto y nuestra criptografía ha sido auditada externamente.",
"faq_q_2": "¿Puedo acceder a mis códigos en el escritorio?",
"faq_a_2": "Puede acceder a tus códigos en la web en auth.ente.io.",
"faq_q_3": "¿Cómo puedo borrar códigos?",
"faq_a_3": "Puede eliminar un código deslizando a la izquierda en ese elemento.",
"faq_q_4": "¿Cómo puedo apoyar este proyecto?",
"faq_a_4": "Puedes apoyar el desarrollo de este proyecto suscribiéndote a nuestra app de Fotos en ente.io.",
"faq_q_5": "Cómo puedo habilitar bloqueo FaceID en Ente Auth",
"faq_a_5": "Puede activar el bloqueo FaceID en Ajustes → Seguridad → Pantalla de bloqueo.",
"somethingWentWrongMessage": "Algo ha ido mal, por favor, prueba otra vez",
"leaveFamily": "Dejar plan familiar",
@@ -151,6 +158,7 @@
}
}
},
"invalidQRCode": "Código QR no válido",
"noRecoveryKeyTitle": "¿Sin clave de recuperación?",
"enterEmailHint": "Introduce tu dirección de correo electrónico",
"invalidEmailTitle": "Dirección de correo electrónico no válida",
@@ -195,6 +203,8 @@
"saveKey": "Guardar Clave",
"save": "Guardar",
"send": "Enviar",
"saveOrSendDescription": "¿Desea guardar esto en el almacenamiento (carpeta Descargas por defecto) o enviarlo a otras aplicaciones?",
"saveOnlyDescription": "¿Desea guardar esto en el almacenamiento (carpeta Descargas por defecto)?",
"back": "Atrás",
"createAccount": "Crear cuenta",
"passwordStrength": "Fortaleza de la contraseña: {passwordStrengthValue}",
@@ -253,12 +263,15 @@
"exportLogs": "Exportar registros",
"enterYourRecoveryKey": "Introduzca su clave de recuperación",
"tempErrorContactSupportIfPersists": "Parece que algo salió mal. Por favor, vuelve a intentarlo después de algún tiempo. Si el error persiste, ponte en contacto con nuestro equipo de soporte.",
"networkHostLookUpErr": "No se puede conectar a Ente. Por favor, comprueba tu configuración de red y ponte en contacto con el soporte técnico si el error persiste.",
"networkConnectionRefusedErr": "No se puede conectar a Ente. Por favor, vuelve a intentarlo pasado un tiempo. Si el error persiste, ponte en contacto con el soporte técnico.",
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Parece que algo salió mal. Por favor, vuelve a intentarlo después de algún tiempo. Si el error persiste, ponte en contacto con nuestro equipo de soporte.",
"about": "Acerca de",
"weAreOpenSource": "¡Somos de código abierto!",
"privacy": "Privacidad",
"terms": "Términos",
"checkForUpdates": "Comprobar actualizaciones",
"checkStatus": "Comprobar estado",
"downloadUpdate": "Descargar",
"criticalUpdateAvailable": "Actualización crítica disponible",
"updateAvailable": "Actualizacion disponible",
@@ -342,6 +355,7 @@
"deleteCodeAuthMessage": "Autenticar para borrar código",
"showQRAuthMessage": "Autenticar para mostrar código QR",
"confirmAccountDeleteTitle": "Confirmar eliminación de la cuenta",
"confirmAccountDeleteMessage": "Esta cuenta está vinculada a otras aplicaciones de Ente, si utilizas alguna. Se programará la eliminación de los datos cargados en todas las aplicaciones de Ente, y tu cuenta se eliminará permanentemente.",
"androidBiometricHint": "Verificar identidad",
"@androidBiometricHint": {
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
@@ -402,7 +416,31 @@
"doNotSignOut": "No cerrar la sesión",
"hearUsWhereTitle": "¿Cómo conoció Ente? (opcional)",
"hearUsExplanation": "No rastreamos las aplicaciones instaladas. ¡Nos ayudaría si nos dijera dónde nos encontró!",
"recoveryKeySaved": "¡Clave de recuperación guardada en la carpeta Descargas!",
"waitingForBrowserRequest": "Esperando la solicitud del navegador...",
"waitingForVerification": "Esperando verificación...",
"passkey": "Llave de acceso",
"passKeyPendingVerification": "La verificación todavía está pendiente",
"loginSessionExpired": "La sesión ha expirado",
"loginSessionExpiredDetails": "Tu sesión ha expirado. Por favor, vuelve a iniciar sesión.",
"developerSettingsWarning": "¿Estás seguro de que quieres modificar los ajustes de desarrollador?",
"developerSettings": "Ajustes de desarrollador"
"developerSettings": "Ajustes de desarrollador",
"serverEndpoint": "Punto final del servidor",
"invalidEndpoint": "Punto final no válido",
"invalidEndpointMessage": "Lo sentimos, el punto final introducido no es válido. Por favor, introduce un punto final válido y vuelve a intentarlo.",
"endpointUpdatedMessage": "Punto final actualizado con éxito",
"customEndpoint": "Conectado a {endpoint}",
"pinText": "Fijar",
"unpinText": "Desanclar",
"pinnedCodeMessage": "{code} ha sido anclado",
"unpinnedCodeMessage": "{code} ha sido desanclado",
"tags": "Etiquetas",
"createNewTag": "Crear Nueva Etiqueta",
"tag": "Etiqueta",
"create": "Crear",
"editTag": "Editar Etiqueta",
"deleteTagTitle": "¿Eliminar etiqueta?",
"deleteTagMessage": "¿Estás seguro de que quieres eliminar esta etiqueta? Esta acción es irreversible.",
"somethingWentWrongParsingCode": "No se han podido analizar los códigos {x}.",
"updateNotAvailable": "Actualización no disponible"
}

View File

@@ -230,5 +230,10 @@
"thisDevice": "این دستگاه",
"editCodeAuthMessage": "احراز هویت برای ویرایش کد",
"deleteCodeAuthMessage": "احراز هویت برای حذف کد",
"showQRAuthMessage": "احراز هویت برای نمایش کد QR"
"showQRAuthMessage": "احراز هویت برای نمایش کد QR",
"tags": "برچسب‌ها",
"createNewTag": "ایجاد برچسب جدید",
"tag": "برچسب",
"create": "ایجاد",
"editTag": "ویرایش برچسب"
}

View File

@@ -263,6 +263,8 @@
"exportLogs": "Logs exporteren",
"enterYourRecoveryKey": "Voer je herstelsleutel in",
"tempErrorContactSupportIfPersists": "Het lijkt erop dat er iets fout is gegaan. Probeer het later opnieuw. Als de fout zich blijft voordoen, neem dan contact op met ons supportteam.",
"networkHostLookUpErr": "Kan geen verbinding maken met Ente, controleer uw netwerkinstellingen en neem contact op met ondersteuning als de fout zich blijft voordoen.",
"networkConnectionRefusedErr": "Kan geen verbinding maken met Ente, probeer het later opnieuw. Als de fout zich blijft voordoen, neem dan contact op met support.",
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Het lijkt erop dat er iets fout is gegaan. Probeer het later opnieuw. Als de fout zich blijft voordoen, neem dan contact op met ons supportteam.",
"about": "Over",
"weAreOpenSource": "We zijn open source!",

View File

@@ -20,6 +20,7 @@
"codeIssuerHint": "Wydawca",
"codeSecretKeyHint": "Tajny klucz",
"codeAccountHint": "Konto (ty@domena.com)",
"codeTagHint": "Oznacz",
"accountKeyType": "Rodzaj klucza",
"sessionExpired": "Sesja wygasła",
"@sessionExpired": {
@@ -78,16 +79,19 @@
"data": "Dane",
"importCodes": "Importuj kody",
"importTypePlainText": "Zwykły tekst",
"importTypeEnteEncrypted": "Zaszyfrowany eksport ente",
"importTypeEnteEncrypted": "Zaszyfrowany eksport Ente",
"passwordForDecryptingExport": "Hasło do odszyfrowania eksportu",
"passwordEmptyError": "Pole hasło nie może być puste",
"importFromApp": "Importuj kody z {appName}",
"importGoogleAuthGuide": "Wyeksportuj twoje konta z Google Authenticator do kodu QR używając opcji \"Przenieś konta\". Potem używając innego urządzenia, zeskanuj kod QR.",
"importSelectJsonFile": "Wybierz plik JSON",
"importSelectAppExport": "Wybierz plik eksportu {appName}",
"importEnteEncGuide": "Wybierz zaszyfrowany plik JSON wyeksportowany z ente",
"importEnteEncGuide": "Wybierz zaszyfrowany plik JSON wyeksportowany z Ente",
"importRaivoGuide": "Użyj opcji \"Eksportuj OTP do archiwum ZIP\" w Ustawieniach Raivo.\n\nWyodrębnij plik zip i zaimportuj plik JSON.",
"importBitwardenGuide": "Użyj opcji \"Eksportuj sejf\" w Narzędziach Bitwarden i zaimportuj niezaszyfrowany plik JSON.",
"importAegisGuide": "Użyj opcji \"Eksportuj sejf\" w ustawieniach Aegis.\n\nJeśli twój sejf jest zaszyfrowany, musisz wprowadzić hasło sejfu, aby odszyfrować sejf.",
"import2FasGuide": "Użyj opcji \"Ustawienia->Kopia Zapasowa-Eksport\" w 2FAS.\n\nJeśli twoja kopia zapasowa jest zaszyfrowana, musisz wprowadzić hasło, aby odszyfrować kopię zapasową",
"importLastpassGuide": "Użyj opcji \"Przenieś konta\" w Ustawieniach Lastpass Authenticator i naciśnij \"Eksportuj konta do pliku\". Zaimportuj pobrany plik JSON.",
"exportCodes": "Eksportuj kody",
"importLabel": "Importuj",
"importInstruction": "Wybierz plik, który zawiera listę twoich kodów w następującym formacie",
@@ -100,6 +104,7 @@
"authToChangeYourEmail": "Proszę uwierzytelnić, aby zmienić swój adres e-mail",
"authToChangeYourPassword": "Proszę uwierzytelnić, aby zmienić hasło",
"authToViewSecrets": "Proszę uwierzytelnić, aby wyświetlić swoje sekrety",
"authToInitiateSignIn": "Proszę uwierzytelnić się, aby zainicjować logowanie do kopii zapasowej.",
"ok": "Ok",
"cancel": "Anuluj",
"yes": "Tak",
@@ -111,7 +116,7 @@
"copied": "Skopiowano",
"pleaseTryAgain": "Proszę spróbować ponownie",
"existingUser": "Istniejący użytkownik",
"newUser": "Nowy do Ente",
"newUser": "Nowy/a do Ente",
"delete": "Usuń",
"enterYourPasswordHint": "Wprowadź swoje hasło",
"forgotPassword": "Nie pamiętam hasła",
@@ -119,12 +124,14 @@
"suggestFeatures": "Zaproponuj funkcje",
"faq": "Najczęściej zadawane pytania (FAQ)",
"faq_q_1": "Jak bezpieczny jest Auth?",
"faq_a_1": "Wszystkie kody, których tworzysz kopię zapasową za pomocą Ente są przechowywane zaszyfrowane end-to-end. Oznacza to, że tylko Ty możesz uzyskać dostęp do swoich kodów. Nasze aplikacje są otwarto-źródłowe, a nasza kryptografia została poddana zewnętrznemu audytowi.",
"faq_q_2": "Czy mogę uzyskać dostęp do moich kodów na komputerze?",
"faq_a_2": "Możesz uzyskać dostęp do swoich kodów na stronie auth.ente.io.",
"faq_q_3": "Jak mogę usunąć kody?",
"faq_a_3": "Możesz usunąć kod, przesuwając go w lewo.",
"faq_q_4": "Jak mogę wesprzeć ten projekt?",
"faq_a_4": "Możesz wspierać rozwój tego projektu, subskrybując do naszej aplikacji Zdjęcia na ente.io.",
"faq_q_5": "Jak mogę włączyć blokadę FaceID w Ente Auth",
"faq_a_5": "Możesz włączyć blokadę FaceID w Ustawienia → Bezpieczeństwo→ Ekran blokady.",
"somethingWentWrongMessage": "Coś poszło nie tak. Proszę, spróbuj ponownie",
"leaveFamily": "Opuść rodzinę",
@@ -138,6 +145,8 @@
"enterCodeHint": "Wprowadź sześciocyfrowy kod z twojej aplikacji uwierzytelniającej",
"lostDeviceTitle": "Zagubiono urządzenie?",
"twoFactorAuthTitle": "Uwierzytelnianie dwuetapowe",
"passkeyAuthTitle": "Weryfikacja kluczem dostępu",
"verifyPasskey": "Zweryfikuj klucz dostępu",
"recoverAccount": "Odzyskaj konto",
"enterRecoveryKeyHint": "Wprowadź swój klucz odzyskiwania",
"recover": "Odzyskaj",
@@ -194,6 +203,8 @@
"saveKey": "Zapisz klucz",
"save": "Zapisz",
"send": "Wyślij",
"saveOrSendDescription": "Czy chcesz zapisać to do pamięci masowej (domyślnie folder Pobrane) czy wysłać to do innych aplikacji?",
"saveOnlyDescription": "Czy chcesz zapisać to do pamięci masowej (domyślnie folder Pobrane)?",
"back": "Wstecz",
"createAccount": "Utwórz konto",
"passwordStrength": "Siła hasła: {passwordStrengthValue}",
@@ -252,12 +263,15 @@
"exportLogs": "Eksportuj logi",
"enterYourRecoveryKey": "Wprowadź swój klucz odzyskiwania",
"tempErrorContactSupportIfPersists": "Wygląda na to, że coś poszło nie tak. Spróbuj ponownie po pewnym czasie. Jeśli błąd będzie się powtarzał, skontaktuj się z naszym zespołem pomocy technicznej.",
"networkHostLookUpErr": "Nie można połączyć się z Ente, sprawdź ustawienia sieci i skontaktuj się z pomocą techniczną, jeśli błąd będzie się powtarzał.",
"networkConnectionRefusedErr": "Nie można połączyć się z Ente, spróbuj ponownie po pewnym czasie. Jeśli błąd będzie się powtarzał, skontaktuj się z pomocą techniczną.",
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Wygląda na to, że coś poszło nie tak. Spróbuj ponownie po pewnym czasie. Jeśli błąd będzie się powtarzał, skontaktuj się z naszym zespołem pomocy technicznej.",
"about": "O nas",
"weAreOpenSource": "Posiadamy otwarte źródło!",
"privacy": "Prywatność",
"terms": "Warunki",
"checkForUpdates": "Sprawdź czy są dostępne nowe aktualizacje",
"checkStatus": "Sprawdź stan",
"downloadUpdate": "Pobierz",
"criticalUpdateAvailable": "Dostępna jest krytyczna aktualizacja",
"updateAvailable": "Dostępna jest aktualizacja",
@@ -333,6 +347,7 @@
"offlineModeWarning": "Wybrałeś kontynuację bez kopii zapasowych. Proszę wykonywać ręczne kopie zapasowe, aby upewnić się, że Twoje kody są bezpieczne.",
"showLargeIcons": "Pokaż duże ikony",
"shouldHideCode": "Ukryj kody",
"doubleTapToViewHiddenCode": "Możesz kliknąć dwukrotnie na wpis, aby wyświetlić kod",
"focusOnSearchBar": "Uaktywnij wyszukiwanie przy uruchamianiu aplikacji",
"confirmUpdatingkey": "Czy na pewno chcesz zaktualizować tajny klucz?",
"minimizeAppOnCopy": "Minimalizuj aplikację przy kopiowaniu",
@@ -340,6 +355,7 @@
"deleteCodeAuthMessage": "Uwierzytelnij, aby usunąć kod",
"showQRAuthMessage": "Uwierzytelnij, aby pokazać kod QR",
"confirmAccountDeleteTitle": "Potwierdź usunięcie konta",
"confirmAccountDeleteMessage": "To konto jest połączone z innymi aplikacjami Ente, jeśli ich używasz.\n\nTwoje przesłane dane, we wszystkich aplikacjach Ente, zostaną zaplanowane do usunięcia, a Twoje konto zostanie trwale usunięte.",
"androidBiometricHint": "Potwierdź swoją tożsamość",
"@androidBiometricHint": {
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
@@ -364,10 +380,30 @@
"@androidBiometricRequiredTitle": {
"description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters."
},
"androidDeviceCredentialsRequiredTitle": "Wymagane dane logowania urządzenia",
"@androidDeviceCredentialsRequiredTitle": {
"description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters."
},
"androidDeviceCredentialsSetupDescription": "Wymagane dane logowania urządzenia",
"@androidDeviceCredentialsSetupDescription": {
"description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side."
},
"goToSettings": "Przejdź do Ustawień",
"@goToSettings": {
"description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters."
},
"androidGoToSettingsDescription": "Uwierzytelnianie biometryczne nie jest skonfigurowane na tym urządzeniu. Przejdź do 'Ustawienia > Bezpieczeństwo', aby dodać uwierzytelnianie biometryczne.",
"@androidGoToSettingsDescription": {
"description": "Message advising the user to go to the settings and configure biometric on their device. It shows in a dialog on Android side."
},
"iOSLockOut": "Uwierzytelnianie biometryczne jest wyłączone. Proszę zablokować i odblokować ekran, aby je włączyć.",
"@iOSLockOut": {
"description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side."
},
"iOSGoToSettingsDescription": "Uwierzytelnianie biometryczne nie jest skonfigurowane na Twoim urządzeniu. Proszę włączyć Touch ID lub Face ID na swoim telefonie.",
"@iOSGoToSettingsDescription": {
"description": "Message advising the user to go to the settings and configure Biometrics for their device. It shows in a dialog on iOS side."
},
"iOSOkButton": "OK",
"@iOSOkButton": {
"description": "Message showed on a button that the user can click to leave the current dialog. It is used on iOS side. Maximum 30 characters."
@@ -379,19 +415,32 @@
"signOutOtherDevices": "Wyloguj z pozostałych urządzeń",
"doNotSignOut": "Nie wylogowuj mnie",
"hearUsWhereTitle": "Jak usłyszałeś o Ente? (opcjonalnie)",
"hearUsExplanation": "Nie śledzimy instalacji aplikacji. Pomogłyby nam, gdybyś powiedział/a nam, gdzie nas znalazłeś/aś!",
"recoveryKeySaved": "Klucz odzyskiwania zapisany w folderze Pobrane!",
"waitingForBrowserRequest": "Oczekiwanie na żądanie przeglądarki...",
"waitingForVerification": "Oczekiwanie na weryfikację...",
"passkey": "Klucz dostępu",
"passKeyPendingVerification": "Weryfikacja jest nadal w toku",
"loginSessionExpired": "Sesja wygasła",
"loginSessionExpiredDetails": "Twoja sesja wygasła. Zaloguj się ponownie.",
"developerSettingsWarning": "Czy na pewno chcesz zmodyfikować ustawienia programisty?",
"developerSettings": "Ustawienia deweloperskie",
"serverEndpoint": "Punkt końcowy serwera",
"invalidEndpoint": "Punkt końcowy jest nieprawidłowy",
"invalidEndpointMessage": "Niestety, wprowadzony punkt końcowy jest nieprawidłowy. Wprowadź prawidłowy punkt końcowy i spróbuj ponownie.",
"endpointUpdatedMessage": "Punkt końcowy zaktualizowany pomyślnie",
"customEndpoint": "Połączono z {endpoint}",
"pinText": "Przypnij",
"unpinText": "Odepnij",
"pinnedCodeMessage": "Przypięto {code}",
"unpinnedCodeMessage": "Odpięto {code}",
"tags": "Etykiety",
"createNewTag": "Utwórz Nową Etykietę",
"tag": "Etykieta",
"create": "Utwórz",
"editTag": "Edytuj Etykietę",
"deleteTagTitle": "Usunąć etykietę?",
"deleteTagMessage": "Czy na pewno chcesz usunąć tę etykietę? Ta akcja jest nieodwracalna.",
"somethingWentWrongParsingCode": "Nie udało się przetworzyć kodów {x}.",
"updateNotAvailable": "Aktualizacja jest niedostępna"
}

View File

@@ -146,7 +146,7 @@
"lostDeviceTitle": "Perdeu um dispositivo?",
"twoFactorAuthTitle": "Autenticação de dois fatores",
"passkeyAuthTitle": "Autenticação via Chave de acesso",
"verifyPasskey": "Verificar senha-mestra",
"verifyPasskey": "Verificar chave de acesso",
"recoverAccount": "Recuperar conta",
"enterRecoveryKeyHint": "Digite a chave de recuperação",
"recover": "Recuperar",
@@ -419,7 +419,7 @@
"recoveryKeySaved": "Chave de recuperação salva na pasta Downloads!",
"waitingForBrowserRequest": "Aguardando solicitação do navegador...",
"waitingForVerification": "Esperando por verificação...",
"passkey": "Senha-mestra",
"passkey": "Chave de acesso",
"passKeyPendingVerification": "A verificação ainda está pendente",
"loginSessionExpired": "Sessão expirada",
"loginSessionExpiredDetails": "Sua sessão expirou. Por favor, entre novamente.",
@@ -442,5 +442,5 @@
"deleteTagTitle": "Apagar etiqueta?",
"deleteTagMessage": "Tem certeza de que deseja excluir esta etiqueta? Essa ação é irreversível.",
"somethingWentWrongParsingCode": "Não foi possível analisar os códigos {x}.",
"updateNotAvailable": "Atualização não está disponível"
"updateNotAvailable": "Atualização indisponível"
}

View File

@@ -0,0 +1,232 @@
{
"account": "Cont",
"unlock": "Deblochează",
"recoveryKey": "Cheie de recuperare",
"onBoardingBody": "Salvează în siguranță codurile 2FA",
"onBoardingGetStarted": "Începe",
"setupFirstAccount": "Configurează primul cont",
"importScanQrCode": "Scanează un cod QR",
"qrCode": "Cod QR",
"importEnterSetupKey": "Introdu o cheie de configurare",
"importAccountPageTitle": "Introdu detaliile contului",
"secretCanNotBeEmpty": "Secretul nu poate fi gol",
"incorrectDetails": "Detalii incorecte",
"pleaseVerifyDetails": "Te rog verifică detaliile și încearcă din nou",
"codeIssuerHint": "Emitent",
"codeSecretKeyHint": "Cheie Secretă",
"codeAccountHint": "Cont (tu@domeniu.com)",
"codeTagHint": "Etichetă",
"accountKeyType": "Tipul de cheie",
"sessionExpired": "Sesiune expirată",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
},
"pleaseLoginAgain": "Te rugăm să te autentifici din nou",
"loggingOut": "Deconectare...",
"timeBasedKeyType": "Bazat pe timp (TOTP)",
"counterBasedKeyType": "Bazat pe contor (HOTP)",
"saveAction": "Salvare",
"nextTotpTitle": "următor",
"deleteCodeTitle": "Șterge codul?",
"deleteCodeMessage": "Ești sigur că vrei să ștergi acest cod? Acțiunea este ireversibilă.",
"viewLogsAction": "Afișare jurnale",
"preparingLogsTitle": "Se pregătesc jurnalele...",
"emailLogsTitle": "Jurnale e-mail",
"emailLogsMessage": "Te rugăm să trimiți jurnalele la {email}",
"@emailLogsMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"copyEmailAction": "Copiază e-mailul",
"exportLogsAction": "Exportează log-urile",
"reportABug": "Raportează o eroare",
"crashAndErrorReporting": "Închidere accidentală şi raportare erori",
"reportBug": "Raportare bug",
"emailUsMessage": "Te rugăm să ne trimiți un e-mail la {email}",
"@emailUsMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"contactSupport": "Contactează suportul",
"rateUsOnStore": "Evaluează-ne pe {storeName}",
"blog": "Blog",
"verifyPassword": "Verifică parola",
"pleaseWait": "Te rog așteaptă...",
"recreatePassword": "Recreează parola",
"incorrectPasswordTitle": "Parolă incorectă",
"welcomeBack": "Bine ai revenit!",
"supportDevs": "Abonează-te la <bold-green>ente</bold-green> pentru a ne susține",
"supportDiscount": "Folosește codul \"AUTH\" pentru a obține o reducere de 10% în primul an",
"changeEmail": "Schimbă e-mailul",
"changePassword": "Schimbă parola",
"data": "Date",
"importCodes": "Importă coduri",
"importTypePlainText": "Text simplu",
"passwordForDecryptingExport": "Parola pentru a decripta exportul",
"passwordEmptyError": "Parola nu poate fi goală",
"importFromApp": "Importă coduri din {appName}",
"importSelectJsonFile": "Selectează fișierul JSON",
"importSelectAppExport": "Selectează fișierul de export din {appName}",
"importEnteEncGuide": "Selectează fișierul criptat JSON exportat din Bențe",
"exportCodes": "Exportă coduri",
"importLabel": "Importă",
"selectFile": "Selectează fișier",
"emailVerificationToggle": "Verificarea adresei de e-mail",
"authToChangeEmailVerificationSetting": "Te rugăm să te autentifici pentru a schimba verificarea prin e-mail",
"authToChangeYourEmail": "Te rugăm să te autentifici pentru a-ți schimba adresa de e-mail",
"ok": "Ok",
"cancel": "Anulare",
"yes": "Da",
"no": "Nu",
"email": "E-mail",
"support": "Asistență",
"general": "General",
"settings": "Setări",
"copied": "S-a copiat",
"pleaseTryAgain": "Te rugăm să încerci din nou",
"existingUser": "Utilizator existent",
"newUser": "Nou în Ente",
"delete": "Ștergere",
"enterYourPasswordHint": "Introdu parola",
"forgotPassword": "Am uitat parola",
"oops": "Ups",
"suggestFeatures": "Sugerează funcționalități",
"faq": "Întrebări frecvente",
"faq_q_1": "Cât de sigur este Auth?",
"faq_q_2": "Pot accesa codurile de pe desktop?",
"faq_q_3": "Cum pot șterge codurile?",
"faq_q_4": "Cum pot susţine acest proiect?",
"faq_a_4": "Poți susține dezvoltarea acestui proiect prin cumpărarea unui abonament la aplicația noastră de fotografii @ ente.io.",
"faq_q_5": "Cum pot activa blocarea cu FaceID în Auth",
"faq_a_5": "Poți activa blocarea FaceID din Setări → Securitate → Ecran de blocare.",
"somethingWentWrongMessage": "Ceva n-a mers bine, te rog încearcă din nou",
"leaveFamily": "Părăsește familia",
"verifyEmail": "Verifică e-mail",
"twoFactorAuthTitle": "Autentificare cu doi factori",
"recoverAccount": "Recuperare cont",
"recover": "Recuperează",
"invalidQRCode": "Codul QR nu este valid",
"enterEmailHint": "Introdu adresa ta de e-mail",
"invalidEmailTitle": "Adresa e-mail nu este validă",
"invalidEmailMessage": "Te rugăm să introduci o adresă de e-mail validă.",
"deleteAccount": "Ștergere cont",
"yesSendFeedbackAction": "Da, trimite feedback",
"noDeleteAccountAction": "Nu, șterge contul",
"initiateAccountDeleteTitle": "Te rugăm să te autentifici pentru a iniția ștergerea contului",
"sendEmail": "Trimite e-mail",
"confirmPassword": "Confirmă parola",
"close": "Închide",
"selectLanguage": "Selectare limbă",
"language": "Limbă",
"social": "Social",
"security": "Securitate",
"lockscreen": "Ecran de blocare",
"scanAQrCode": "Scanează un cod QR",
"copiedToClipboard": "Copiat în clipboard",
"copiedNextToClipboard": "Codul următor a fost copiat în clipboard",
"error": "Eroare",
"recoveryKeyOnForgotPassword": "Dacă îți uiți parola, singura modalitate prin care poți recupera datele este cu această cheie.",
"saveKey": "Salvare cheie",
"save": "Salvare",
"send": "Trimitere",
"back": "Înapoi",
"password": "Parolă",
"termsOfServicesTitle": "Termeni",
"setPasswordTitle": "Setează parola",
"changePasswordTitle": "Schimbă parola",
"resetPasswordTitle": "Resetează parola",
"passwordWarning": "Nu stocăm această parolă, deci dacă o uiți, <underline>nu îți putem decripta datele</underline>",
"enterPasswordToEncrypt": "Introdu o parolă pe care o putem folosi pentru a-ți cripta datele",
"passwordChangedSuccessfully": "Parola a fost modificată cu succes",
"recreatePasswordTitle": "Recreează parola",
"invalidKey": "Cheie invalidă",
"tryAgain": "Încearcă din nou",
"viewRecoveryKey": "Vezi cheia de recuperare",
"pleaseSendTheLogsTo": "Te rugăm să trimiți jurnalele la {toEmail}",
"copyEmailAddress": "Copiază adresa de e-mail",
"about": "Despre",
"weAreOpenSource": "Suntem open source!",
"privacy": "Confidențialitate",
"terms": "Termeni",
"checkForUpdates": "Verifică actualizări",
"checkStatus": "Verifică status",
"downloadUpdate": "Descărcare",
"criticalUpdateAvailable": "Actualizare critică disponibilă",
"updateAvailable": "Actualizare disponibilă",
"update": "Actualizare",
"checking": "Se verifică...",
"youAreOnTheLatestVersion": "Utilizezi cea mai recentă versiune",
"warning": "Atenție",
"iUnderStand": "Înţeleg",
"@iUnderStand": {
"description": "Text for the button to confirm the user understands the warning"
},
"importSuccessTitle": "Ura!",
"sorry": "Ne pare rău",
"pendingSyncs": "Atenție",
"tapToEnterCode": "Apasă pentru a introduce codul",
"resendEmail": "Retrimite e-mail",
"weHaveSendEmailTo": "Am trimis un e-mail la <green>{email}</green>",
"@weHaveSendEmailTo": {
"description": "Text to indicate that we have sent a mail to the user",
"placeholders": {
"email": {
"description": "The email address of the user",
"type": "String",
"example": "example@ente.io"
}
}
},
"activeSessions": "Sesiuni active",
"somethingWentWrongPleaseTryAgain": "Ceva n-a mers bine, te rog încearcă din nou",
"thisDevice": "Acest dispozitiv",
"toResetVerifyEmail": "Pentru a reseta parola, te rugăm să confirmi mai întâi adresa de e-mail.",
"thisEmailIsAlreadyInUse": "Această adresă de e-mail este deja folosită",
"emailChangedTo": "E-mail modificat în {newEmail}",
"enterPassword": "Introdu parola",
"passwordToEncryptExport": "Parolă pentru a cripta exportul",
"useOffline": "Utilizează fără backup-uri",
"offlineModeWarning": "Ai ales să continui fără backup-uri. Te rog salvează-ți backup-urile manual ca să fii sigur că ai codurile în siguranță.",
"showLargeIcons": "Afișează iconițele mari",
"shouldHideCode": "Ascunde codurile",
"androidBiometricHint": "Verifică identitatea",
"@androidBiometricHint": {
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
},
"androidBiometricNotRecognized": "Neidentificat. Încearcă din nou.",
"@androidBiometricNotRecognized": {
"description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters."
},
"androidBiometricSuccess": "Succes",
"@androidBiometricSuccess": {
"description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters."
},
"androidCancelButton": "Anulare",
"@androidCancelButton": {
"description": "Message showed on a button that the user can click to leave the current dialog. It is used on Android side. Maximum 30 characters."
},
"androidSignInTitle": "Autentificare necesară",
"@androidSignInTitle": {
"description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters."
},
"goToSettings": "Mergi la setări",
"@goToSettings": {
"description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters."
},
"iOSOkButton": "Ok",
"@iOSOkButton": {
"description": "Message showed on a button that the user can click to leave the current dialog. It is used on iOS side. Maximum 30 characters."
},
"noInternetConnection": "Nu există conexiune la internet",
"signOutFromOtherDevices": "Deconectare de pe alte dispozitive",
"signOutOtherDevices": "Deconectează alte dispozitive",
"doNotSignOut": "Nu te deconecta",
"loginSessionExpired": "Sesiune expirată",
"updateNotAvailable": "Actualizare indisponibilă"
}

View File

@@ -269,6 +269,7 @@
"privacy": "Gizlilik",
"terms": "Şartlar",
"checkForUpdates": "Güncellemeleri denetleyin",
"checkStatus": "Durumu kontrol et",
"downloadUpdate": "İndir",
"criticalUpdateAvailable": "Kritik güncelleme mevcut",
"updateAvailable": "Güncelleme mevcut",
@@ -417,6 +418,9 @@
"waitingForBrowserRequest": "Tarayıcı isteği bekleniyor...",
"waitingForVerification": "Doğrulama bekleniyor...",
"passkey": "Geçiş anahtarı",
"passKeyPendingVerification": "Doğrulama hala bekliyor",
"loginSessionExpired": "Oturum süresi doldu",
"loginSessionExpiredDetails": "Oturum süreniz doldu. Tekrar giriş yapın.",
"developerSettingsWarning": "Geliştirici ayarlarını değiştirmekten emin misiniz?",
"developerSettings": "Geliştirici ayarları",
"serverEndpoint": "Sunucu uç noktası",

View File

@@ -1,6 +1,5 @@
import 'package:ente_auth/l10n/l10n.dart';
import 'package:ente_auth/theme/ente_theme.dart';
import 'package:ente_auth/ui/components/buttons/icon_button_widget.dart';
import 'package:ente_auth/ui/components/captioned_text_widget.dart';
import 'package:ente_auth/ui/components/divider_widget.dart';
import 'package:ente_auth/ui/components/menu_item_widget.dart';
@@ -68,18 +67,7 @@ class ImportCodePage extends StatelessWidget {
title: context.l10n.importCodes,
),
flexibleSpaceCaption: "Import source",
actionIcons: [
IconButtonWidget(
icon: Icons.close_outlined,
iconButtonType: IconButtonType.secondary,
onTap: () {
Navigator.pop(context);
if (Navigator.canPop(context)) {
Navigator.pop(context);
}
},
),
],
actionIcons: const [],
),
SliverList(
delegate: SliverChildBuilderDelegate(

View File

@@ -1,4 +1,4 @@
FROM golang:1.20-alpine3.17 as builder
FROM golang:1.20-alpine3.17 AS builder
RUN apk add --no-cache gcc musl-dev git build-base pkgconfig libsodium-dev
ENV GOOS=linux

View File

@@ -1,4 +1,4 @@
FROM golang:1.20-alpine3.17@sha256:9c2f89db6fda13c3c480749787f62fed5831699bb2c32881b8f327f1cf7bae42 as builder386
FROM golang:1.20-alpine3.17@sha256:9c2f89db6fda13c3c480749787f62fed5831699bb2c32881b8f327f1cf7bae42 AS builder386
RUN apt-get update
RUN apt-get install -y gcc
RUN apt-get install -y git

View File

@@ -2,7 +2,7 @@
The Ente CLI is a Command Line Utility for exporting data from
[Ente](https://ente.io). It also does a few more things, for example, you can
use it to decrypting the export from Ente Auth.
use it to decrypt the export from Ente Auth.
## Install

View File

@@ -3,4 +3,4 @@ package constants
const CliDataPath = "/cli-data/"
const EnteApiUrl = "https://api.ente.io"
const EnteAccountUrl = "https://account.ente.io"
const EnteAccountUrl = "https://accounts.ente.io"

View File

@@ -17,8 +17,8 @@ on:
#
- cron: "45 2 * * 1-6"
push:
# Run when a tag matching the pattern "vd.d.d"" is pushed. Crucially for
# us, this excludes the "-rc" tags.
# Run when a tag matching the pattern "vd.d.d" is pushed. In particular,
# this excludes the "-beta" tags.
tags:
- "v[0-9]+.[0-9]+.[0-9]+"

View File

@@ -1,6 +1,11 @@
# CHANGELOG
## v1.7.2 (Unreleased)
## v1.7.3 (Unreleased)
- Support Polish translations.
- .
## v1.7.2
- Significantly improve the speed of the metadata parsing step during imports
of Google takeouts.
@@ -8,7 +13,6 @@
- Fix an issue preventing subscription purchases and renewals.
- Clear cached password after changing it on a different device.
- Reconcile exported files with disk on app start and resync.
- .
## v1.7.1

View File

@@ -83,13 +83,17 @@ are similar to that in the web code.
Some extra ones specific to the code here are:
- [shx](https://github.com/shelljs/shx) for providing a portable way to use
Unix commands in our `package.json` scripts. This allows us to use the same
commands (like `ln`) across different platforms like Linux and Windows.
- [@tsconfig/recommended](https://github.com/tsconfig/bases) gives us a base
tsconfig for the Node.js version that our current Electron version uses.
- [shx](https://github.com/shelljs/shx) provides us a portable way to use Unix
commands in our `package.json` scripts. This allows us to use the same
commands (like `ln`) across both POSIX platforms (Linux, macOS) and Windows.
- [cross-env](https://github.com/kentcdodds/cross-env) is similar to shx, but
for allowing us to set environment variables in a way that also works on
Windows.
## Functionality
### Format conversion
@@ -108,21 +112,14 @@ resources (`build`) folder. This is used for thumbnail generation on Linux.
On macOS, we use the `sips` CLI tool for conversion, but that is already
available on the host machine, and is not bundled with our app.
### AI/ML
### ML
[onnxruntime-node](https://github.com/Microsoft/onnxruntime) is used as the
AI/ML runtime. It powers both natural language searches (using CLIP) and face
[onnxruntime-node](https://github.com/Microsoft/onnxruntime) is used as the ML
runtime. It powers both natural language searches (using CLIP) and face
detection (using YOLO).
[jpeg-js](https://github.com/jpeg-js/jpeg-js#readme) is used for decoding JPEG
data into raw RGB bytes before passing it to ONNX.
html-entities is used by the bundled clip-bpe-ts tokenizer for CLIP.
### Watch Folders
[chokidar](https://github.com/paulmillr/chokidar) is used as a file system
watcher for the watch folders functionality.
[clip-bpe-js](https://github.com/simonwarchol/clip-bpe-js) is used for tokening
the user's search phrase before computing its CLIP (text) embedding.
### ZIP
@@ -131,3 +128,8 @@ reading of large ZIP files (e.g. during imports of Google Takeout ZIPs).
[lru-cache](https://github.com/isaacs/node-lru-cache) is used to cache file ZIP
handles to avoid reopening them for every operation.
### Watch folders
[chokidar](https://github.com/paulmillr/chokidar) is used as a file system
watcher for the watch folders functionality.

View File

@@ -9,7 +9,7 @@ Conceptually, the release is straightforward:
3. The download links on our website, and existing apps already check the
latest GitHub release and update automatically.
The complication comes by the fact that electron-builder's auto updater (the
The complication comes from the fact that electron-builder's auto updater (the
mechanism that we use for auto updates) doesn't work with monorepos. So we need
to keep a separate repository just for holding the releases.
@@ -18,20 +18,19 @@ to keep a separate repository just for holding the releases.
- Releases are done from
[ente-io/photos-desktop](https://github.com/ente-io/photos-desktop).
## Workflow - Release candidates
## Nightly builds
Nightly RC builds of `main` are published by a scheduled workflow automatically.
If needed, these builds can also be manually updated, and the branch of the
source repository to build (default "main") also specified:
Nightly builds of `main` are published by a scheduled workflow automatically.
Each such workflow run will update the artifacts attached to the same
(pre-existing) pre-release.
If needed, this workflow can also be manually triggered:
```sh
gh workflow run desktop-release.yml --source=<branch>
```
Each such workflow run will update the artifacts attached to the same
(pre-existing) pre-release.
## Workflow - Release
## Release checklist
1. Update source repo to set version `1.x.x` in `package.json` and finalize the
CHANGELOG.
@@ -50,37 +49,39 @@ Each such workflow run will update the artifacts attached to the same
```
This'll trigger the workflow and create a new pre-release. We can edit this to
add the release notes, convert it to a release. Once it is marked as latest, the
release goes live.
add the release notes, and convert it to a release.
We are done at this point, and can now update the other pre-release that hosts
Once it is marked as latest, the release goes live.
We are done at this point, and can now update the other pre-release that'll hold
subsequent nightly builds.
1. Update `package.json` in the source repo to use version `1.x.x-rc`, and
1. Update `package.json` in the source repo to use version `1.x.x-beta`, and
merge these changes into `main`.
2. In the release repo, delete the existing _nightly_ pre-release, then:
```sh
git tag 1.x.x-rc
git push origin 1.x.x-rc
git tag v1.x.x-beta
git push origin v1.x.x-beta
```
3. Start a new run of the workflow (`gh workflow run desktop-release.yml`).
Once the workflow finishes and the 1.x.x-rc pre-release is created, edit its
description to "Nightly builds". Subsequent scheduled nightly builds will update
this pre-release.
4. Once the workflow creates the new 1.x.x-beta pre-release, edit its
description to "Nightly builds".
## Workflow - Extra pre-releases
Subsequent scheduled nightly workflows will keep updating this pre-release.
To create extra one off pre-releases in addition to the nightly `1.x.x-rc` ones,
## Ad-hoc builds
To create extra one-off pre-releases in addition to the nightly `1.x.x-beta`s,
1. In your branch in the source repository, set the version in `package.json`
to something different, say `1.x.x-my-test`.
to something different, say `1.x.x-foo`.
2. Create a new pre-release in the release repo with title `1.x.x-test`. In the
tag input enter `v1.x.x-test` and select the option to "create a new tag on
2. Create a new pre-release in the release repo with title `1.x.x-foo`. In the
tag input enter `v1.x.x-foo` and select the option to "Create a new tag on
publish".
3. Trigger the workflow in the release repo:

View File

@@ -38,6 +38,13 @@ export default ts.config(
ignoreArrowShorthand: true,
},
],
// Allow free standing ternary expressions.
"@typescript-eslint/no-unused-expressions": [
"error",
{
allowTernary: true,
},
],
},
},
);

View File

@@ -1,6 +1,6 @@
{
"name": "ente",
"version": "1.7.2-rc",
"version": "1.7.3-beta",
"private": true,
"description": "Desktop client for Ente Photos",
"repository": "github:ente-io/photos-desktop",
@@ -10,12 +10,12 @@
"build": "yarn build-renderer && yarn build-main",
"build-main": "tsc && electron-builder",
"build-main:quick": "tsc && electron-builder --dir --config.compression=store --config.mac.identity=null",
"build-renderer": "cd ../web && yarn install && yarn build:photos && cd ../desktop && shx rm -f out && shx ln -sf ../web/apps/photos/out out",
"build-renderer": "cross-env-shell _ENTE_IS_DESKTOP=1 \"cd ../web && yarn install && yarn build:photos && cd ../desktop && shx rm -f out && shx ln -sf ../web/apps/photos/out out\"",
"build:ci": "yarn build-renderer && tsc",
"build:quick": "yarn build-renderer && yarn build-main:quick",
"dev": "concurrently --kill-others --success first --names 'main,rndr' \"yarn dev-main\" \"yarn dev-renderer\"",
"dev-main": "tsc && electron .",
"dev-renderer": "cd ../web && yarn install && yarn dev:photos",
"dev-renderer": "cross-env-shell _ENTE_IS_DESKTOP=1 \"cd ../web && yarn install && yarn dev:photos\"",
"postinstall": "electron-builder install-app-deps",
"lint": "yarn prettier --check --log-level warn . && yarn eslint && yarn tsc",
"lint-fix": "yarn prettier --write --log-level warn . && yarn eslint && yarn tsc"
@@ -27,34 +27,34 @@
"any-shell-escape": "^0.1",
"auto-launch": "^5.0",
"chokidar": "^3.6",
"clip-bpe-js": "^0.0.6",
"compare-versions": "^6.1",
"electron-log": "^5.1",
"electron-store": "^8.2",
"electron-updater": "^6.2",
"ffmpeg-static": "^5.2",
"html-entities": "^2.5",
"jpeg-js": "^0.4",
"lru-cache": "^10.2",
"lru-cache": "^11",
"next-electron-server": "^1",
"node-stream-zip": "^1.15",
"onnxruntime-node": "^1.18"
},
"devDependencies": {
"@eslint/js": "^9.4.0",
"@eslint/js": "^9",
"@tsconfig/node20": "^20.1.4",
"@types/auto-launch": "^5.0",
"@types/eslint__js": "^8.42.3",
"@types/ffmpeg-static": "^3.0",
"concurrently": "^8",
"cross-env": "^7.0.3",
"electron": "^30",
"electron-builder": "25.0.0-alpha.8",
"eslint": "^9.4.0",
"eslint": "^9",
"prettier": "^3",
"prettier-plugin-organize-imports": "^3",
"prettier-plugin-organize-imports": "^4",
"prettier-plugin-packagejson": "^2",
"shx": "^0.3",
"typescript": "^5",
"typescript-eslint": "8.0.0-alpha.10"
"typescript-eslint": "^8.0.0-alpha.41"
},
"packageManager": "yarn@1.22.22",
"productName": "ente"

View File

@@ -30,6 +30,7 @@ import { createWatcher } from "./main/services/watch";
import { userPreferences } from "./main/stores/user-preferences";
import { migrateLegacyWatchStoreIfNeeded } from "./main/stores/watch";
import { registerStreamProtocol } from "./main/stream";
import { wait } from "./main/utils/common";
import { isDev } from "./main/utils/electron";
/**
@@ -109,7 +110,11 @@ const main = () => {
//
// Note that some Electron APIs can only be used after this event occurs.
void app.whenReady().then(() => {
attachProcessHandlers();
void (async () => {
if (isDev) await waitForRendererDevServer();
// Create window and prepare for the renderer.
mainWindow = createMainWindow();
@@ -260,6 +265,50 @@ const handleEnteLinks = (mainWindow: BrowserWindow, url: string) => {
mainWindow.webContents.send("openURL", url);
};
/** Attach handlers to the (node) process. */
const attachProcessHandlers = () => {
// Gracefully quit the app if we get a SIGINT.
//
// This is meant to allow graceful shutdowns during development, when the
// app is launched using `yarn dev`. In such cases, pressing CTRL-C sends a
// SIGINT to the process. The default handling of SIGINT is not graceful
// enough (apparently), since I can observe that sometimes recent writes to
// local storage are lost. This has also been reported by other people:
// https://github.com/electron/electron/issues/22048
//
// Hopefully handling SIGINT prevents that issue. But beyond that, it allows
// us to also write out `userPreferences.json` (as would happen during a
// normal quit sequence), so this is an improvement either ways.
process.on("SIGINT", () => app.quit());
};
/**
* Wait for the renderer process' dev server to be ready.
*
* After creating the main window, we load the web app into it using `loadURL`.
* In production, these are served directly from the SSR-ed static files bundled
* with the app, and so can be served instantly. However, during development, we
* start a dev server for serving the HMR-ed files.
*
* This Next.js HMR server takes time to startup and is sometimes not ready to
* handle incoming requests when the main window tries to load it. In such
* cases, Electron just hangs with this:
*
* [main] Error: net::ERR_CONNECTION_REFUSED
* [main] at SimpleURLLoaderWrapper.<anonymous> (node:electron/js2c/browser_init:2:114482)
* [main] at SimpleURLLoaderWrapper.emit (node:events:519:28)
*
* As a workaround, we wait for 1 second.
*
* I'd also tried fancier workaround - polling the URL - but waits until the dev
* server has the response ready, delaying everything many seconds (we just want
* to see if the dev server can accept connections). The 1 second delay seems to
* get the job done for now.
*
* This workaround can likely be removed when we migrate to Vite.
*/
const waitForRendererDevServer = () => wait(1000);
/**
* Create an return the {@link BrowserWindow} that will form our app's UI.
*
@@ -295,9 +344,8 @@ const createMainWindow = () => {
// On macOS, also hide the dock icon on macOS.
if (process.platform == "darwin") app.dock.hide();
} else {
// Show our window otherwise.
//
// If we did not give it an explicit size, maximize it
// Show our window otherwise, maximizing it if we're not asked to set it
// to a specific size.
bounds ? window.show() : window.maximize();
}
@@ -538,7 +586,7 @@ const setupTrayItem = (mainWindow: BrowserWindow) => {
* old cache dir if it exists.
*
* Added May 2024, v1.7.0. This migration code can be removed after some time
* once most people have upgraded to newer versions.
* once most people have upgraded to newer versions (tag: Migration).
*/
const deleteLegacyDiskCacheDirIfExists = async () => {
const removeIfExists = async (dirPath: string) => {

View File

@@ -31,6 +31,7 @@ import {
import { ffmpegExec } from "./services/ffmpeg";
import {
fsExists,
fsFindFiles,
fsIsDir,
fsMkdirIfNeeded,
fsReadTextFile,
@@ -63,7 +64,6 @@ import {
} from "./services/upload";
import {
watchAdd,
watchFindFiles,
watchGet,
watchRemove,
watchUpdateIgnoredFiles,
@@ -154,6 +154,10 @@ export const attachIPCHandlers = () => {
ipcMain.handle("fsIsDir", (_, dirPath: string) => fsIsDir(dirPath));
ipcMain.handle("fsFindFiles", (_, folderPath: string) =>
fsFindFiles(folderPath),
);
// - Conversion
ipcMain.handle("convertToJPEG", (_, imageData: Uint8Array) =>
@@ -182,10 +186,8 @@ export const attachIPCHandlers = () => {
// - ML
ipcMain.handle(
"computeCLIPImageEmbedding",
(_, jpegImageData: Uint8Array) =>
computeCLIPImageEmbedding(jpegImageData),
ipcMain.handle("computeCLIPImageEmbedding", (_, input: Float32Array) =>
computeCLIPImageEmbedding(input),
);
ipcMain.handle("computeCLIPTextEmbeddingIfAvailable", (_, text: string) =>
@@ -262,10 +264,6 @@ export const attachFSWatchIPCHandlers = (watcher: FSWatcher) => {
(_, ignoredFiles: FolderWatch["ignoredFiles"], folderPath: string) =>
watchUpdateIgnoredFiles(ignoredFiles, folderPath),
);
ipcMain.handle("watchFindFiles", (_, folderPath: string) =>
watchFindFiles(folderPath),
);
};
/**

View File

@@ -42,7 +42,7 @@ class AutoLauncher {
if (this.autoLaunch) {
return app.commandLine.hasSwitch("hidden");
} else {
return app.getLoginItemSettings().openAtLogin;
return app.getLoginItemSettings().wasOpenedAtLogin;
}
}
}

View File

@@ -4,6 +4,7 @@
import { existsSync } from "node:fs";
import fs from "node:fs/promises";
import path from "node:path";
export const fsExists = (path: string) => existsSync(path);
@@ -28,3 +29,17 @@ export const fsIsDir = async (dirPath: string) => {
const stat = await fs.stat(dirPath);
return stat.isDirectory();
};
export const fsFindFiles = async (dirPath: string) => {
const items = await fs.readdir(dirPath, { withFileTypes: true });
let paths: string[] = [];
for (const item of items) {
const itemPath = path.posix.join(dirPath, item.name);
if (item.isFile()) {
paths.push(itemPath);
} else if (item.isDirectory()) {
paths = [...paths, ...(await fsFindFiles(itemPath))];
}
}
return paths;
};

View File

@@ -2,17 +2,12 @@
* @file Compute CLIP embeddings for images and text.
*
* The embeddings are computed using ONNX runtime, with CLIP as the model.
*
* @see `web/apps/photos/src/services/clip-service.ts` for more details.
*/
import jpeg from "jpeg-js";
import fs from "node:fs/promises";
import Tokenizer from "clip-bpe-js";
import * as ort from "onnxruntime-node";
import Tokenizer from "../../thirdparty/clip-bpe-ts/mod";
import log from "../log";
import { writeStream } from "../stream";
import { ensure, wait } from "../utils/common";
import { deleteTempFile, makeTempFilePath } from "../utils/temp";
import { makeCachedInferenceSession } from "./ml";
const cachedCLIPImageSession = makeCachedInferenceSession(
@@ -20,113 +15,16 @@ const cachedCLIPImageSession = makeCachedInferenceSession(
351468764 /* 335.2 MB */,
);
export const computeCLIPImageEmbedding = async (jpegImageData: Uint8Array) => {
const tempFilePath = await makeTempFilePath();
const imageStream = new Response(jpegImageData.buffer).body;
await writeStream(tempFilePath, ensure(imageStream));
try {
return await clipImageEmbedding_(tempFilePath);
} finally {
await deleteTempFile(tempFilePath);
}
};
const clipImageEmbedding_ = async (jpegFilePath: string) => {
export const computeCLIPImageEmbedding = async (input: Float32Array) => {
const session = await cachedCLIPImageSession();
const t1 = Date.now();
const rgbData = await getRGBData(jpegFilePath);
const t = Date.now();
const feeds = {
input: new ort.Tensor("float32", rgbData, [1, 3, 224, 224]),
input: new ort.Tensor("float32", input, [1, 3, 224, 224]),
};
const t2 = Date.now();
const results = await session.run(feeds);
log.debug(
() =>
`ONNX/CLIP image embedding took ${Date.now() - t1} ms (prep: ${t2 - t1} ms, inference: ${Date.now() - t2} ms)`,
);
log.debug(() => `ONNX/CLIP image embedding took ${Date.now() - t} ms`);
/* Need these model specific casts to type the result */
const imageEmbedding = ensure(results.output).data as Float32Array;
return normalizeEmbedding(imageEmbedding);
};
const getRGBData = async (jpegFilePath: string): Promise<number[]> => {
const jpegData = await fs.readFile(jpegFilePath);
const rawImageData = jpeg.decode(jpegData, {
useTArray: true,
formatAsRGBA: false,
});
const nx = rawImageData.width;
const ny = rawImageData.height;
const inputImage = rawImageData.data;
const nx2 = 224;
const ny2 = 224;
const totalSize = 3 * nx2 * ny2;
const result = Array<number>(totalSize).fill(0);
const scale = Math.max(nx, ny) / 224;
const nx3 = Math.round(nx / scale);
const ny3 = Math.round(ny / scale);
const mean: number[] = [0.48145466, 0.4578275, 0.40821073];
const std: number[] = [0.26862954, 0.26130258, 0.27577711];
for (let y = 0; y < ny3; y++) {
for (let x = 0; x < nx3; x++) {
for (let c = 0; c < 3; c++) {
// Linear interpolation
const sx = (x + 0.5) * scale - 0.5;
const sy = (y + 0.5) * scale - 0.5;
const x0 = Math.max(0, Math.floor(sx));
const y0 = Math.max(0, Math.floor(sy));
const x1 = Math.min(x0 + 1, nx - 1);
const y1 = Math.min(y0 + 1, ny - 1);
const dx = sx - x0;
const dy = sy - y0;
const j00 = 3 * (y0 * nx + x0) + c;
const j01 = 3 * (y0 * nx + x1) + c;
const j10 = 3 * (y1 * nx + x0) + c;
const j11 = 3 * (y1 * nx + x1) + c;
const v00 = inputImage[j00] ?? 0;
const v01 = inputImage[j01] ?? 0;
const v10 = inputImage[j10] ?? 0;
const v11 = inputImage[j11] ?? 0;
const v0 = v00 * (1 - dx) + v01 * dx;
const v1 = v10 * (1 - dx) + v11 * dx;
const v = v0 * (1 - dy) + v1 * dy;
const v2 = Math.min(Math.max(Math.round(v), 0), 255);
// createTensorWithDataList is dumb compared to reshape and
// hence has to be given with one channel after another
const i = y * nx3 + x + (c % 3) * 224 * 224;
result[i] = (v2 / 255 - (mean[c] ?? 0)) / (std[c] ?? 1);
}
}
}
return result;
};
const normalizeEmbedding = (embedding: Float32Array) => {
let normalization = 0;
for (const v of embedding) normalization += v * v;
const sqrtNormalization = Math.sqrt(normalization);
for (let index = 0; index < embedding.length; index++)
embedding[index] = ensure(embedding[index]) / sqrtNormalization;
return embedding;
return ensure(results.output).data as Float32Array;
};
const cachedCLIPTextSession = makeCachedInferenceSession(
@@ -157,18 +55,14 @@ export const computeCLIPTextEmbeddingIfAvailable = async (text: string) => {
}
const session = sessionOrSkip;
const t1 = Date.now();
const t = Date.now();
const tokenizer = getTokenizer();
const tokenizedText = Int32Array.from(tokenizer.encodeForCLIP(text));
const feeds = {
input: new ort.Tensor("int32", tokenizedText, [1, 77]),
};
const t2 = Date.now();
const results = await session.run(feeds);
log.debug(
() =>
`ONNX/CLIP text embedding took ${Date.now() - t1} ms (prep: ${t2 - t1} ms, inference: ${Date.now() - t2} ms)`,
);
const textEmbedding = ensure(results.output).data as Float32Array;
return normalizeEmbedding(textEmbedding);
log.debug(() => `ONNX/CLIP text embedding took ${Date.now() - t} ms`);
return ensure(results.output).data as Float32Array;
};

View File

@@ -6,6 +6,7 @@
*
* The runtime used is ONNX.
*/
import * as ort from "onnxruntime-node";
import log from "../log";
import { ensure } from "../utils/common";

View File

@@ -1,5 +1,5 @@
/**
* @file AI/ML related functionality, generic layer.
* @file ML related functionality, generic layer.
*
* @see also `ml-clip.ts`, `ml-face.ts`.
*
@@ -10,6 +10,7 @@
* can use the binary ONNX runtime which is 10-20x faster than the WASM based
* web one.
*/
import { app, net } from "electron/main";
import { existsSync } from "fs";
import fs from "node:fs/promises";

View File

@@ -58,7 +58,7 @@ export const pendingUploads = async (): Promise<PendingUploads | undefined> => {
const allZipItems = uploadStatusStore.get("zipItems");
let zipItems: typeof allZipItems;
// Migration code - May 2024. Remove after a bit.
// Migration code - May 2024. Remove after a bit (tag: Migration).
//
// The older store formats will not have zipItems and instead will have
// zipPaths. If we find such a case, read the zipPaths and enqueue all of

View File

@@ -1,7 +1,5 @@
import chokidar, { type FSWatcher } from "chokidar";
import { BrowserWindow } from "electron/main";
import fs from "node:fs/promises";
import path from "node:path";
import { FolderWatch, type CollectionMapping } from "../../types/ipc";
import log from "../log";
import { watchStore } from "../stores/watch";
@@ -143,20 +141,6 @@ export const watchUpdateIgnoredFiles = (
);
};
export const watchFindFiles = async (dirPath: string) => {
const items = await fs.readdir(dirPath, { withFileTypes: true });
let paths: string[] = [];
for (const item of items) {
const itemPath = path.posix.join(dirPath, item.name);
if (item.isFile()) {
paths.push(itemPath);
} else if (item.isDirectory()) {
paths = [...paths, ...(await watchFindFiles(itemPath))];
}
}
return paths;
};
/**
* Stop watching all existing folder watches and remove any callbacks.
*

View File

@@ -163,8 +163,8 @@ const ffmpegExec = (
// - ML
const computeCLIPImageEmbedding = (jpegImageData: Uint8Array) =>
ipcRenderer.invoke("computeCLIPImageEmbedding", jpegImageData);
const computeCLIPImageEmbedding = (input: Float32Array) =>
ipcRenderer.invoke("computeCLIPImageEmbedding", input);
const computeCLIPTextEmbeddingIfAvailable = (text: string) =>
ipcRenderer.invoke("computeCLIPTextEmbeddingIfAvailable", text);
@@ -216,8 +216,8 @@ const watchOnRemoveDir = (f: (path: string, watch: FolderWatch) => void) => {
);
};
const watchFindFiles = (folderPath: string) =>
ipcRenderer.invoke("watchFindFiles", folderPath);
const fsFindFiles = (folderPath: string) =>
ipcRenderer.invoke("fsFindFiles", folderPath);
const watchRemoveListeners = () => {
ipcRenderer.removeAllListeners("watchAddFile");
@@ -340,6 +340,7 @@ contextBridge.exposeInMainWorld("electron", {
readTextFile: fsReadTextFile,
writeFile: fsWriteFile,
isDir: fsIsDir,
findFiles: fsFindFiles,
},
// - Conversion
@@ -366,7 +367,6 @@ contextBridge.exposeInMainWorld("electron", {
onAddFile: watchOnAddFile,
onRemoveFile: watchOnRemoveFile,
onRemoveDir: watchOnRemoveDir,
findFiles: watchFindFiles,
},
// - Upload

View File

@@ -1,21 +0,0 @@
MIT License
Copyright (c) 2023 josephrocca
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,40 +0,0 @@
# CLIP Byte Pair Encoding JavaScript Port
A JavaScript port of
[OpenAI's CLIP byte-pair-encoding tokenizer](https://github.com/openai/CLIP/blob/3bee28119e6b28e75b82b811b87b56935314e6a5/clip/simple_tokenizer.py).
```js
import Tokenizer from "https://deno.land/x/clip_bpe@v0.0.6/mod.js";
let t = new Tokenizer();
t.encode("hello"); // [3306]
t.encode("magnificent"); // [10724]
t.encode("magnificently"); // [9725, 2922]
t.decode(t.encode("HELLO")); // "hello "
t.decode(t.encode("abc123")); // "abc 1 2 3 "
t.decode(st.encode("let's see here")); // "let 's see here "
t.encode("hello world!"); // [3306, 1002, 256]
// to encode for CLIP (trims to maximum of 77 tokens and adds start and end token, and pads with zeros if less than 77 tokens):
t.encodeForCLIP("hello world!"); // [49406,3306,1002,256,49407,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
```
This encoder/decoder behaves differently to the the GPT-2/3 tokenizer
(JavaScript version of that
[here](https://github.com/latitudegames/GPT-3-Encoder)). For example, it doesn't
preserve capital letters, as shown above.
The
[Python version](https://github.com/openai/CLIP/blob/3bee28119e6b28e75b82b811b87b56935314e6a5/clip/simple_tokenizer.py)
of this tokenizer uses the `ftfy` module to clean up the text before encoding
it. I didn't include that module by default because currently the only version
available in JavaScript is
[this one](https://github.com/josephrocca/ftfy-pyodide), which requires
importing a full Python runtime as a WebAssembly module. If you want the `ftfy`
cleaning, just import it and clean your text with it before passing it to the
`.encode()` method.
# License
To the extent that there is any original work in this repo, it is MIT Licensed,
just like [openai/CLIP](https://github.com/openai/CLIP).

File diff suppressed because one or more lines are too long

View File

@@ -1,470 +0,0 @@
/* eslint-disable */
import * as htmlEntities from "html-entities";
import bpeVocabData from "./bpe_simple_vocab_16e6";
// import ftfy from "https://deno.land/x/ftfy_pyodide@v0.1.1/mod.js";
function ord(c: string) {
return c.charCodeAt(0);
}
function range(start: number, stop?: number, step: number = 1) {
if (stop === undefined) {
stop = start;
start = 0;
}
if ((step > 0 && start >= stop) || (step < 0 && start <= stop)) {
return [];
}
const result: number[] = [];
for (let i = start; step > 0 ? i < stop : i > stop; i += step) {
result.push(i);
}
return result;
}
function bytesToUnicode() {
const bs = [
...range(ord("!"), ord("~") + 1),
...range(ord("¡"), ord("¬") + 1),
...range(ord("®"), ord("ÿ") + 1),
];
const cs = bs.slice(0);
let n = 0;
for (const b of range(2 ** 8)) {
if (!bs.includes(b)) {
bs.push(b);
cs.push(2 ** 8 + n);
n += 1;
}
}
const csString = cs.map((n) => String.fromCharCode(n));
return Object.fromEntries(bs.map((v, i) => [v, csString[i]]));
}
function getPairs(word: string | any[]) {
const pairs: [string, string][] = [];
let prevChar = word[0];
for (const char of word.slice(1)) {
pairs.push([prevChar, char]);
prevChar = char;
}
return pairs;
}
function basicClean(text: string) {
// text = ftfy.fix_text(text);
text = htmlEntities.decode(htmlEntities.decode(text));
return text.trim();
}
function whitespaceClean(text: string) {
return text.replace(/\s+/g, " ").trim();
}
export default class {
byteEncoder;
byteDecoder: {
[k: string]: number;
};
encoder;
decoder: any;
bpeRanks: any;
cache: Record<string, string>;
pat: RegExp;
constructor() {
this.byteEncoder = bytesToUnicode();
this.byteDecoder = Object.fromEntries(
Object.entries(this.byteEncoder).map(([k, v]) => [v, Number(k)]),
);
let merges = bpeVocabData.text.split("\n");
merges = merges.slice(1, 49152 - 256 - 2 + 1);
const mergedMerges = merges.map((merge) => merge.split(" "));
// There was a bug related to the ordering of Python's .values() output. I'm lazy do I've just copy-pasted the Python output:
let vocab = [
"!",
'"',
"#",
"$",
"%",
"&",
"'",
"(",
")",
"*",
"+",
",",
"-",
".",
"/",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
":",
";",
"<",
"=",
">",
"?",
"@",
"A",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I",
"J",
"K",
"L",
"M",
"N",
"O",
"P",
"Q",
"R",
"S",
"T",
"U",
"V",
"W",
"X",
"Y",
"Z",
"[",
"\\",
"]",
"^",
"_",
"`",
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
"o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
"{",
"|",
"}",
"~",
"¡",
"¢",
"£",
"¤",
"¥",
"¦",
"§",
"¨",
"©",
"ª",
"«",
"¬",
"®",
"¯",
"°",
"±",
"²",
"³",
"´",
"µ",
"¶",
"·",
"¸",
"¹",
"º",
"»",
"¼",
"½",
"¾",
"¿",
"À",
"Á",
"Â",
"Ã",
"Ä",
"Å",
"Æ",
"Ç",
"È",
"É",
"Ê",
"Ë",
"Ì",
"Í",
"Î",
"Ï",
"Ð",
"Ñ",
"Ò",
"Ó",
"Ô",
"Õ",
"Ö",
"×",
"Ø",
"Ù",
"Ú",
"Û",
"Ü",
"Ý",
"Þ",
"ß",
"à",
"á",
"â",
"ã",
"ä",
"å",
"æ",
"ç",
"è",
"é",
"ê",
"ë",
"ì",
"í",
"î",
"ï",
"ð",
"ñ",
"ò",
"ó",
"ô",
"õ",
"ö",
"÷",
"ø",
"ù",
"ú",
"û",
"ü",
"ý",
"þ",
"ÿ",
"Ā",
"ā",
"Ă",
"ă",
"Ą",
"ą",
"Ć",
"ć",
"Ĉ",
"ĉ",
"Ċ",
"ċ",
"Č",
"č",
"Ď",
"ď",
"Đ",
"đ",
"Ē",
"ē",
"Ĕ",
"ĕ",
"Ė",
"ė",
"Ę",
"ę",
"Ě",
"ě",
"Ĝ",
"ĝ",
"Ğ",
"ğ",
"Ġ",
"ġ",
"Ģ",
"ģ",
"Ĥ",
"ĥ",
"Ħ",
"ħ",
"Ĩ",
"ĩ",
"Ī",
"ī",
"Ĭ",
"ĭ",
"Į",
"į",
"İ",
"ı",
"IJ",
"ij",
"Ĵ",
"ĵ",
"Ķ",
"ķ",
"ĸ",
"Ĺ",
"ĺ",
"Ļ",
"ļ",
"Ľ",
"ľ",
"Ŀ",
"ŀ",
"Ł",
"ł",
"Ń",
];
vocab = [...vocab, ...vocab.map((v) => v + "</w>")];
for (const merge of mergedMerges) {
vocab.push(merge.join(""));
}
vocab.push("<|startoftext|>", "<|endoftext|>");
this.encoder = Object.fromEntries(vocab.map((v, i) => [v, i]));
this.decoder = Object.fromEntries(
Object.entries(this.encoder).map(([k, v]) => [v, k]),
);
this.bpeRanks = Object.fromEntries(
mergedMerges.map((v, i) => [v.join("·😎·"), i]),
); // ·😎· because js doesn't yet have tuples
this.cache = {
"<|startoftext|>": "<|startoftext|>",
"<|endoftext|>": "<|endoftext|>",
};
this.pat =
/<\|startoftext\|>|<\|endoftext\|>|'s|'t|'re|'ve|'m|'ll|'d|[\p{L}]+|[\p{N}]|[^\s\p{L}\p{N}]+/giu;
}
bpe(token: string) {
if (this.cache[token] !== undefined) {
return this.cache[token];
}
let word = [...token.slice(0, -1), token.slice(-1) + "</w>"];
let pairs = getPairs(word);
if (pairs.length === 0) {
return token + "</w>";
}
while (1) {
let bigram: [string, string] | null = null;
let minRank = Infinity;
for (const p of pairs) {
const r = this.bpeRanks[p.join("·😎·")];
if (r === undefined) continue;
if (r < minRank) {
minRank = r;
bigram = p;
}
}
if (bigram === null) {
break;
}
const [first, second] = bigram;
const newWord: string[] = [];
let i = 0;
while (i < word.length) {
const j = word.indexOf(first, i);
if (j === -1) {
newWord.push(...word.slice(i));
break;
}
newWord.push(...word.slice(i, j));
i = j;
if (
word[i] === first &&
i < word.length - 1 &&
word[i + 1] === second
) {
newWord.push(first + second);
i += 2;
} else {
// @ts-expect-error "Array indexing can return undefined but not modifying thirdparty code"
newWord.push(word[i]);
i += 1;
}
}
word = newWord;
if (word.length === 1) {
break;
} else {
pairs = getPairs(word);
}
}
const joinedWord = word.join(" ");
this.cache[token] = joinedWord;
return joinedWord;
}
encode(text: string) {
const bpeTokens: number[] = [];
text = whitespaceClean(basicClean(text)).toLowerCase();
for (let token of [...text.matchAll(this.pat)].map((m) => m[0])) {
token = [...token]
.map((b) => this.byteEncoder[b.charCodeAt(0) as number])
.join("");
bpeTokens.push(
// @ts-expect-error "Array indexing can return undefined but not modifying thirdparty code"
...this.bpe(token)
.split(" ")
.map((bpeToken: string) => this.encoder[bpeToken]),
);
}
return bpeTokens;
}
// adds start and end token, and adds padding 0's and ensures it's 77 tokens long
encodeForCLIP(text: string) {
let tokens = this.encode(text);
tokens.unshift(49406); // start token
tokens = tokens.slice(0, 76);
tokens.push(49407); // end token
while (tokens.length < 77) tokens.push(0);
return tokens;
}
decode(tokens: any[]) {
let text = tokens
.map((token: string | number) => this.decoder[token])
.join("");
text = [...text]
.map((c) => this.byteDecoder[c])
// @ts-expect-error "Array indexing can return undefined but not modifying thirdparty code"
.map((v) => String.fromCharCode(v))
.join("")
.replace(/<\/w>/g, " ");
return text;
}
}

View File

@@ -0,0 +1,11 @@
/**
* @file Types for "clip-bpe-js"
*
* Non exhaustive, only the function we need.
*/
declare module "clip-bpe-js" {
class Tokenizer {
encodeForCLIP(text: string): number[];
}
}

View File

@@ -117,19 +117,19 @@
dependencies:
eslint-visitor-keys "^3.3.0"
"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1":
version "4.10.0"
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63"
integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==
"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0":
version "4.11.0"
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae"
integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==
"@eslint/config-array@^0.15.1":
version "0.15.1"
resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.15.1.tgz#1fa78b422d98f4e7979f2211a1fde137e26c7d61"
integrity sha512-K4gzNq+yymn/EVsXYmf+SBcBro8MTf+aXJZUphM96CdzUEr+ClGDvAbpmaEK+cGVigVXIgs9gNmvHAlrzzY5JQ==
"@eslint/config-array@^0.17.0":
version "0.17.0"
resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.17.0.tgz#ff305e1ee618a00e6e5d0485454c8d92d94a860d"
integrity sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==
dependencies:
"@eslint/object-schema" "^2.1.3"
"@eslint/object-schema" "^2.1.4"
debug "^4.3.1"
minimatch "^3.0.5"
minimatch "^3.1.2"
"@eslint/eslintrc@^3.1.0":
version "3.1.0"
@@ -146,15 +146,15 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
"@eslint/js@9.4.0", "@eslint/js@^9.4.0":
version "9.4.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.4.0.tgz#96a2edd37ec0551ce5f9540705be23951c008a0c"
integrity sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==
"@eslint/js@9.7.0", "@eslint/js@^9":
version "9.7.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.7.0.tgz#b712d802582f02b11cfdf83a85040a296afec3f0"
integrity sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng==
"@eslint/object-schema@^2.1.3":
version "2.1.3"
resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.3.tgz#e65ae80ee2927b4fd8c5c26b15ecacc2b2a6cc2a"
integrity sha512-HAbhAYKfsAC2EkTqve00ibWIZlaU74Z1EHwAjYr4PXF0YU2VEA1zSIKSSpKszRLRWwHzzRZXvK632u+uXzvsvw==
"@eslint/object-schema@^2.1.4":
version "2.1.4"
resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843"
integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==
"@gar/promisify@^1.1.3":
version "1.1.3"
@@ -323,7 +323,7 @@
resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4"
integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==
"@types/json-schema@*", "@types/json-schema@^7.0.15":
"@types/json-schema@*":
version "7.0.15"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
@@ -341,9 +341,9 @@
integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==
"@types/node@*", "@types/node@^20.9.0":
version "20.13.0"
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.13.0.tgz#011a76bc1e71ae9a026dddcfd7039084f752c4b6"
integrity sha512-FM6AOb3khNkNIXPnHFDYaHerSv8uN22C91z098AnGccVu+Pcdhi+pNUFDi0iLmPIsVE0JBD0KVS7mzUYt4nRzQ==
version "20.14.10"
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.10.tgz#a1a218290f1b6428682e3af044785e5874db469a"
integrity sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==
dependencies:
undici-types "~5.26.4"
@@ -367,11 +367,6 @@
dependencies:
"@types/node" "*"
"@types/semver@^7.5.8":
version "7.5.8"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e"
integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==
"@types/verror@^1.10.3":
version "1.10.10"
resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.10.tgz#d5a4b56abac169bfbc8b23d291363a682e6fa087"
@@ -384,64 +379,62 @@
dependencies:
"@types/node" "*"
"@typescript-eslint/eslint-plugin@8.0.0-alpha.10":
version "8.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.0-alpha.10.tgz#a102e40da7b72a2981cb2da43064d9b3c865ca58"
integrity sha512-jsNKqn41nIS8jz5Li5xsueGEBBmRYLaflUKlclEkj8cWrO1tMK1/7xITeiVz7ZlNFZF2nop2NlXrbLtRpLEzhg==
"@typescript-eslint/eslint-plugin@8.0.0-alpha.41":
version "8.0.0-alpha.41"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.0-alpha.41.tgz#8dfb0416c802cf53d9b8ba2688bb5d87c3b5a5ba"
integrity sha512-WePtbzWMaQO4qtGAXp3zzEN8yYZCEuAHVCERCUXgoSUTQ80F5UB7T5lYyA9ySpFDB7rqJ2ev98DtnbS4U3Ms+w==
dependencies:
"@eslint-community/regexpp" "^4.10.0"
"@typescript-eslint/scope-manager" "8.0.0-alpha.10"
"@typescript-eslint/type-utils" "8.0.0-alpha.10"
"@typescript-eslint/utils" "8.0.0-alpha.10"
"@typescript-eslint/visitor-keys" "8.0.0-alpha.10"
debug "^4.3.4"
"@typescript-eslint/scope-manager" "8.0.0-alpha.41"
"@typescript-eslint/type-utils" "8.0.0-alpha.41"
"@typescript-eslint/utils" "8.0.0-alpha.41"
"@typescript-eslint/visitor-keys" "8.0.0-alpha.41"
graphemer "^1.4.0"
ignore "^5.3.1"
natural-compare "^1.4.0"
semver "^7.6.0"
ts-api-utils "^1.3.0"
"@typescript-eslint/parser@8.0.0-alpha.10":
version "8.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.0.0-alpha.10.tgz#fbefd39da010d65407b985f2b5c6e0a79bc8a6f4"
integrity sha512-4EerPviLfBKgExHARehJgWrCtX2a7+PXBc0LBPlH93ypSgj0LU1ejMgjrB0gcfd6bJ7LN/UGNAAy3B7/Y785sA==
"@typescript-eslint/parser@8.0.0-alpha.41":
version "8.0.0-alpha.41"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.0.0-alpha.41.tgz#d6b5f3a869a78d490c94628bc119a9a38c5842a8"
integrity sha512-7HMXwy/q/59ZASBXz2FtdIsR7LgABrR8j2dTKq9GMR8OkjjdO4klxWSY/uOBozVt4UxlMRYsBdBDhEq4/tHRiw==
dependencies:
"@typescript-eslint/scope-manager" "8.0.0-alpha.10"
"@typescript-eslint/types" "8.0.0-alpha.10"
"@typescript-eslint/typescript-estree" "8.0.0-alpha.10"
"@typescript-eslint/visitor-keys" "8.0.0-alpha.10"
"@typescript-eslint/scope-manager" "8.0.0-alpha.41"
"@typescript-eslint/types" "8.0.0-alpha.41"
"@typescript-eslint/typescript-estree" "8.0.0-alpha.41"
"@typescript-eslint/visitor-keys" "8.0.0-alpha.41"
debug "^4.3.4"
"@typescript-eslint/scope-manager@8.0.0-alpha.10":
version "8.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.0.0-alpha.10.tgz#25506ce51ab64e99f2bc0b7d3f0f82656e14a794"
integrity sha512-SUU0yhqehjuWilWRJWfhcxf6eMKVrZ3bpV2w6NF6GmBHR3FJo6oWZYLVXP04s6//INxpC2ynvKSglo4LRzWVTw==
"@typescript-eslint/scope-manager@8.0.0-alpha.41":
version "8.0.0-alpha.41"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.0.0-alpha.41.tgz#7729d129d966cc34a3b37c12cf08ba1b0467d516"
integrity sha512-iNxuQ0TMVfFiMJ2al4bGd/mY9+aLtBxnHfo7B2xoVzR6cRFgUdBLlMa//MSIjSmVRpCEqNLQnkxpJb96tFG+xw==
dependencies:
"@typescript-eslint/types" "8.0.0-alpha.10"
"@typescript-eslint/visitor-keys" "8.0.0-alpha.10"
"@typescript-eslint/types" "8.0.0-alpha.41"
"@typescript-eslint/visitor-keys" "8.0.0-alpha.41"
"@typescript-eslint/type-utils@8.0.0-alpha.10":
version "8.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.0.0-alpha.10.tgz#d27f0fdd81450380887b3a07297440ba3588a70e"
integrity sha512-6aTcbnDZWKgKr3gquECJSFyvXWLSKtUHrk2ZXDP4DEzmzTDjrkY7tIQpqv4SczPQJ+3/aky3ArPhtnQYJbAMzg==
"@typescript-eslint/type-utils@8.0.0-alpha.41":
version "8.0.0-alpha.41"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.0.0-alpha.41.tgz#6da1e44d9ce1e060e66feaa45f73a792965a0e69"
integrity sha512-+QIA1z/jrox6bbvqlyqBQjotpevieLTycfiuoKuqGcKoskFZV5Rma51BV8LCJacnOafwJtSi+7b8zDo8OsXUvA==
dependencies:
"@typescript-eslint/typescript-estree" "8.0.0-alpha.10"
"@typescript-eslint/utils" "8.0.0-alpha.10"
"@typescript-eslint/typescript-estree" "8.0.0-alpha.41"
"@typescript-eslint/utils" "8.0.0-alpha.41"
debug "^4.3.4"
ts-api-utils "^1.3.0"
"@typescript-eslint/types@8.0.0-alpha.10":
version "8.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.0.0-alpha.10.tgz#89be400c6a1751fe86f5917ed8087ec100e002da"
integrity sha512-prbN+b/I4yH6H43WmyenMz8K5e34Hs73BQuWXR4wwij3Cg2xNGLPcpjr2cKWKlH4dZQPTz6R6oBeC+LfaoKi8g==
"@typescript-eslint/types@8.0.0-alpha.41":
version "8.0.0-alpha.41"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.0.0-alpha.41.tgz#c1f8dacfb118e4d9febdff2f065802c4db69beae"
integrity sha512-n0P2FP3YC3pD3yoiCf4lHqbUP45xlnOk8HkjB+LtKSUZZWLLJ8k1ZXZtQj7MEX22tytCMj//Bmq403xFuCwfIg==
"@typescript-eslint/typescript-estree@8.0.0-alpha.10":
version "8.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.0-alpha.10.tgz#e850056d2a5029688269a60206dec3bbd7beb953"
integrity sha512-8wBUIhu6IRa440hv5/0ZEnb5JLp/UsfzIXYKRwICUOMTVj2ss1n+w3m1CtT5ghVWy5Z05qkscsbhlKFmZguU8w==
"@typescript-eslint/typescript-estree@8.0.0-alpha.41":
version "8.0.0-alpha.41"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.0-alpha.41.tgz#c78c96d6b3f39355aac2bdf2f999abfd9333121f"
integrity sha512-adCr+vbLYTFhwhIwjIjjMxTdUYiPA2Jlyuhnbj092IzgLHtT79bvuwcgPWeTyLbFb/13SMKmOEka00xHiqLpig==
dependencies:
"@typescript-eslint/types" "8.0.0-alpha.10"
"@typescript-eslint/visitor-keys" "8.0.0-alpha.10"
"@typescript-eslint/types" "8.0.0-alpha.41"
"@typescript-eslint/visitor-keys" "8.0.0-alpha.41"
debug "^4.3.4"
globby "^11.1.0"
is-glob "^4.0.3"
@@ -449,25 +442,22 @@
semver "^7.6.0"
ts-api-utils "^1.3.0"
"@typescript-eslint/utils@8.0.0-alpha.10":
version "8.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.0.0-alpha.10.tgz#b77f743227353bfa493e95409c0e079044c9258e"
integrity sha512-WZyNf49CuvaW/whz/B8XjYwXE/wm/EQAXq+Vqgp6BrJb8SC3bMCwGuUxReNDN1o+dNdOC96ofVSvqa8NUQ65Jg==
"@typescript-eslint/utils@8.0.0-alpha.41":
version "8.0.0-alpha.41"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.0.0-alpha.41.tgz#de7d1fb1856773c7343028352cf326a668aa43b9"
integrity sha512-DTxc9VdERS6iloiw1P5tgRDqRArmp/sIuvgdHBvGh2SiltEFc3VjLGnHHGSTr6GfH7tjFWvcCnCtxx+pjWfp5Q==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
"@types/json-schema" "^7.0.15"
"@types/semver" "^7.5.8"
"@typescript-eslint/scope-manager" "8.0.0-alpha.10"
"@typescript-eslint/types" "8.0.0-alpha.10"
"@typescript-eslint/typescript-estree" "8.0.0-alpha.10"
semver "^7.6.0"
"@typescript-eslint/scope-manager" "8.0.0-alpha.41"
"@typescript-eslint/types" "8.0.0-alpha.41"
"@typescript-eslint/typescript-estree" "8.0.0-alpha.41"
"@typescript-eslint/visitor-keys@8.0.0-alpha.10":
version "8.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.0-alpha.10.tgz#d0a9250c69cc2f73c7f423c36183d222a329e260"
integrity sha512-UohTNnT7S29uQgXsGZY489nWmoBBSJucNdRvog62R1QX9pQQb2pKVV1kHepUxoY2vd+M4tb9SQwZQ3gPNgqQ6w==
"@typescript-eslint/visitor-keys@8.0.0-alpha.41":
version "8.0.0-alpha.41"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.0-alpha.41.tgz#6ddefe0a08a36683e2e8db4b161d6b67374b7757"
integrity sha512-uetCAUBVC+YarBdZnWzDDgX11PpAEGV8Cw31I3d1xNrhx6/bJGThKX+holEmd3amMdnr4w/XUKH/4YuQOgtjDA==
dependencies:
"@typescript-eslint/types" "8.0.0-alpha.10"
"@typescript-eslint/types" "8.0.0-alpha.41"
eslint-visitor-keys "^3.4.3"
"@xmldom/xmldom@^0.8.8":
@@ -485,10 +475,10 @@ acorn-jsx@^5.3.2:
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn@^8.11.3:
version "8.11.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
acorn@^8.12.0:
version "8.12.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248"
integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
agent-base@6, agent-base@^6.0.2:
version "6.0.2"
@@ -928,6 +918,11 @@ cli-truncate@^2.1.0:
slice-ansi "^3.0.0"
string-width "^4.2.0"
clip-bpe-js@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/clip-bpe-js/-/clip-bpe-js-0.0.6.tgz#a11c228e793fa29841f8cd4f8576fc1ff3403511"
integrity sha512-+0n0eeacgFmg9hKhHhXanKkRDhqRwzYK7dj46VYMzePxmN8zbbDgeTQZchfvARNpbBMRi7FfWRSW3lysOUDX/Q==
cliui@^8.0.1:
version "8.0.1"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
@@ -1067,6 +1062,13 @@ crc@^3.8.0:
dependencies:
buffer "^5.1.0"
cross-env@^7.0.3:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf"
integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==
dependencies:
cross-spawn "^7.0.1"
cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
@@ -1090,14 +1092,14 @@ debounce-fn@^4.0.0:
dependencies:
mimic-fn "^3.0.0"
debug@4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3:
debug@4, debug@^4.3.3:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
debug@^4.1.0, debug@^4.1.1, debug@^4.3.4:
debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
version "4.3.5"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e"
integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==
@@ -1313,9 +1315,9 @@ electron-updater@^6.2:
tiny-typed-emitter "^2.1.0"
electron@^30:
version "30.0.9"
resolved "https://registry.yarnpkg.com/electron/-/electron-30.0.9.tgz#b11400e4642a4b635e79244ba365f1d401ee60b5"
integrity sha512-ArxgdGHVu3o5uaP+Tqj8cJDvU03R6vrGrOqiMs7JXLnvQHMqXJIIxmFKQAIdJW8VoT3ac3hD21tA7cPO10RLow==
version "30.2.0"
resolved "https://registry.yarnpkg.com/electron/-/electron-30.2.0.tgz#a309deba0289d24c3059fa349729f1eab7a7b720"
integrity sha512-x4/pUsOyWReAAo3/ZfvL7AvNbfS5dE8HqMC1mjFM/mL847KE/LpRFfOe5DjKqI2OQMTNvSth1mH0LJageHB0Zg==
dependencies:
"@electron/get" "^2.0.0"
"@types/node" "^20.9.0"
@@ -1377,10 +1379,10 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
eslint-scope@^8.0.1:
version "8.0.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.1.tgz#a9601e4b81a0b9171657c343fb13111688963cfc"
integrity sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==
eslint-scope@^8.0.2:
version "8.0.2"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.2.tgz#5cbb33d4384c9136083a71190d548158fe128f94"
integrity sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==
dependencies:
esrecurse "^4.3.0"
estraverse "^5.2.0"
@@ -1395,16 +1397,16 @@ eslint-visitor-keys@^4.0.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb"
integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==
eslint@^9.4.0:
version "9.4.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.4.0.tgz#79150c3610ae606eb131f1d648d5f43b3d45f3cd"
integrity sha512-sjc7Y8cUD1IlwYcTS9qPSvGjAC8Ne9LctpxKKu3x/1IC9bnOg98Zy6GxEJUfr1NojMgVPlyANXYns8oE2c1TAA==
eslint@^9:
version "9.7.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.7.0.tgz#bedb48e1cdc2362a0caaa106a4c6ed943e8b09e4"
integrity sha512-FzJ9D/0nGiCGBf8UXO/IGLTgLVzIxze1zpfA8Ton2mjLovXdAPlYDv+MQDcqj3TmrhAGYfOpz9RfR+ent0AgAw==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.6.1"
"@eslint/config-array" "^0.15.1"
"@eslint-community/regexpp" "^4.11.0"
"@eslint/config-array" "^0.17.0"
"@eslint/eslintrc" "^3.1.0"
"@eslint/js" "9.4.0"
"@eslint/js" "9.7.0"
"@humanwhocodes/module-importer" "^1.0.1"
"@humanwhocodes/retry" "^0.3.0"
"@nodelib/fs.walk" "^1.2.8"
@@ -1413,10 +1415,10 @@ eslint@^9.4.0:
cross-spawn "^7.0.2"
debug "^4.3.2"
escape-string-regexp "^4.0.0"
eslint-scope "^8.0.1"
eslint-scope "^8.0.2"
eslint-visitor-keys "^4.0.0"
espree "^10.0.1"
esquery "^1.4.2"
espree "^10.1.0"
esquery "^1.5.0"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
file-entry-cache "^8.0.0"
@@ -1435,19 +1437,19 @@ eslint@^9.4.0:
strip-ansi "^6.0.1"
text-table "^0.2.0"
espree@^10.0.1:
version "10.0.1"
resolved "https://registry.yarnpkg.com/espree/-/espree-10.0.1.tgz#600e60404157412751ba4a6f3a2ee1a42433139f"
integrity sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==
espree@^10.0.1, espree@^10.1.0:
version "10.1.0"
resolved "https://registry.yarnpkg.com/espree/-/espree-10.1.0.tgz#8788dae611574c0f070691f522e4116c5a11fc56"
integrity sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==
dependencies:
acorn "^8.11.3"
acorn "^8.12.0"
acorn-jsx "^5.3.2"
eslint-visitor-keys "^4.0.0"
esquery@^1.4.2:
version "1.5.0"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b"
integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
esquery@^1.5.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
dependencies:
estraverse "^5.1.0"
@@ -1893,11 +1895,6 @@ hosted-git-info@^4.1.0:
dependencies:
lru-cache "^6.0.0"
html-entities@^2.5:
version "2.5.2"
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f"
integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==
http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a"
@@ -2123,11 +2120,6 @@ jake@^10.8.5:
filelist "^1.0.4"
minimatch "^3.1.2"
jpeg-js@^0.4:
version "0.4.4"
resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.4.tgz#a9f1c6f1f9f0fa80cdb3484ed9635054d28936aa"
integrity sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==
js-yaml@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
@@ -2259,11 +2251,16 @@ lowercase-keys@^2.0.0:
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
lru-cache@^10.2, lru-cache@^10.2.0:
lru-cache@^10.2.0:
version "10.2.2"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878"
integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==
lru-cache@^11:
version "11.0.0"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.0.0.tgz#15d93a196f189034d7166caf9fe55e7384c98a21"
integrity sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==
lru-cache@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
@@ -2369,13 +2366,20 @@ minimatch@^5.0.1, minimatch@^5.1.1:
dependencies:
brace-expansion "^2.0.1"
minimatch@^9.0.1, minimatch@^9.0.3, minimatch@^9.0.4:
minimatch@^9.0.1, minimatch@^9.0.3:
version "9.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51"
integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==
dependencies:
brace-expansion "^2.0.1"
minimatch@^9.0.4:
version "9.0.5"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
dependencies:
brace-expansion "^2.0.1"
minimist@^1.2.3, minimist@^1.2.6:
version "1.2.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
@@ -2748,10 +2752,10 @@ prelude-ls@^1.2.1:
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
prettier-plugin-organize-imports@^3:
version "3.2.4"
resolved "https://registry.yarnpkg.com/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.4.tgz#77967f69d335e9c8e6e5d224074609309c62845e"
integrity sha512-6m8WBhIp0dfwu0SkgfOxJqh+HpdyfqSSLfKKRZSFbDuEQXDDndb8fTpRWkUrX/uBenkex3MgnVk0J3b3Y5byog==
prettier-plugin-organize-imports@^4:
version "4.0.0"
resolved "https://registry.yarnpkg.com/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.0.0.tgz#a69acf024ea3c8eb650c81f664693826ca853534"
integrity sha512-vnKSdgv9aOlqKeEFGhf9SCBsTyzDSyScy1k7E0R1Uo4L0cTcOV7c1XQaT7jfXIOc/p08WLBfN2QUQA9zDSZMxA==
prettier-plugin-packagejson@^2:
version "2.5.0"
@@ -2762,9 +2766,9 @@ prettier-plugin-packagejson@^2:
synckit "0.9.0"
prettier@^3:
version "3.3.0"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.0.tgz#d173ea0524a691d4c0b1181752f2b46724328cdf"
integrity sha512-J9odKxERhCQ10OC2yb93583f6UnYutOeiV5i0zEDS7UGTdUt0u+y8erxl3lBKvwo/JHyyoEdXjwp4dke9oyZ/g==
version "3.3.2"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.2.tgz#03ff86dc7c835f2d2559ee76876a3914cec4a90a"
integrity sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==
progress@^2.0.3:
version "2.0.3"
@@ -3329,16 +3333,21 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
typescript-eslint@8.0.0-alpha.10:
version "8.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.0.0-alpha.10.tgz#2172d41ab30c8447927c3823c5a549b9c09be89f"
integrity sha512-iMbN7boDtUmcSDor/J022+H4G018W3r3RSUUr7yoghMTmFuKVIkI89xJHDg82DBGYkA0xOoDNPBr7XfRFbEXKQ==
typescript-eslint@^8.0.0-alpha.41:
version "8.0.0-alpha.41"
resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.0.0-alpha.41.tgz#b88af15dfbfa08051f4697698193fcae04ee147f"
integrity sha512-+e7D2XDZeHLe9D3bP7S0Va8YdLHzn3YcesoxMS9SjMWhtaSb5ylxk2txqT84sUS0WIDQetZlvDg2/UmY5B/ycg==
dependencies:
"@typescript-eslint/eslint-plugin" "8.0.0-alpha.10"
"@typescript-eslint/parser" "8.0.0-alpha.10"
"@typescript-eslint/utils" "8.0.0-alpha.10"
"@typescript-eslint/eslint-plugin" "8.0.0-alpha.41"
"@typescript-eslint/parser" "8.0.0-alpha.41"
"@typescript-eslint/utils" "8.0.0-alpha.41"
typescript@^5, typescript@^5.3.3, typescript@^5.4.3:
typescript@^5:
version "5.5.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.3.tgz#e1b0a3c394190838a0b168e771b0ad56a0af0faa"
integrity sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==
typescript@^5.3.3, typescript@^5.4.3:
version "5.4.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611"
integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==

View File

@@ -1,73 +1,88 @@
---
title: Security and privacy FAQ
title: Security and Privacy FAQ
description:
Frequently asked questions about security and privacy of Ente Photos
Comprehensive information about security and privacy measures in Ente Photos
---
# Security and privacy
# Security and Privacy FAQ
## Can Ente see my photos and videos?
Welcome to Ente Photos' Security and Privacy FAQ. This document provides
detailed information about our security practices, privacy measures, and how we
protect your data. We are committed to maintaining the highest standards of data
protection and transparency.
No.
## Data Encryption and Storage
Your files are encrypted with a key before they are uploaded to our servers.
### Can Ente see my photos and videos?
These keys can be accessed only with your password.
No. Your files are encrypted on your device before being uploaded to our
servers. The encryption keys are derived from your password using advanced key
derivation functions. Since only you know your password, only you can decrypt
your files. For technical details, please see our
[architecture document](https://ente.io/architecture).
Since only you know your password, only you can decrypt your files.
### How is my data encrypted?
To learn more about our encryption protocol, please read about our
[architecture](https://ente.io/architecture).
We use the following encryption algorithms:
## How is my data encrypted?
- Encryption: `XChaCha20` and `XSalsa20`
- Authentication: Poly1305 message authentication code (MAC)
- Key derivation: Argon2id with high memory and computation parameters
We use [libsodium](https://libsodium.gitbook.io/doc/)'s implementations
`XChaCha20` and `XSalsa20` to encrypt your data, along with `Poly1305` MAC for
authentication.
These algorithms are implemented using
[libsodium](https://libsodium.gitbook.io/doc/), a externally audited
cryptographic library. Our [architecture document](https://ente.io/architecture)
provides full technical specifications.
Please refer to the document on our [architecture](https://ente.io/architecture)
for more details.
### Where is my data stored?
## Where is my data stored?
Your data is replicated to multiple providers in different countries in the EU.
Currently we have datacenters in the following locations:
Your encrypted data is stored redundantly across multiple providers in the EU:
- Amsterdam, Netherlands
- Paris, France
- Frankfurt, Germany
Much more details about our replication and reliability are documented
[here](https://ente.io/reliability).
We use a combination of object storage and distributed databases to ensure high
availability and durability. Our
[reliability document](https://ente.io/reliability) provides in-depth
information about our storage infrastructure and data replication strategies.
## What happens if I forget my password?
### How does Ente's encryption compare to industry standards?
You can reset your password with your recovery key.
Our encryption model goes beyond industry standards. While many services use
server-side encryption, we implement end-to-end encryption. This means that even
in the unlikely event of a server breach, your data remains protected.
If you lose both your password and your recovery key, you will not be able to
decrypt your data.
## Account Security
## Can I change my password?
### What happens if I forget my password?
Yes.
You can reset your password using your recovery key. This key is a randomly
generated string provided to you during account creation. Store it securely, as
it's your lifeline if you forget your password. If you lose both your password
and recovery key, we cannot recover your account or data due to our
zero-knowledge architecture.
You can change your password from any of our apps.
### Can I change my password?
Thanks to our [architecture](https://ente.io/architecture), you can do so
without having to re-encrypt any of your files.
Yes, you can change your password at any time from our apps. Our architecture
allows password changes without re-encrypting your entire library.
The privacy of your account is a function of the strength of your password,
please choose a strong one.
## Do you support 2FA?
### Do you support two-factor authentication (2FA)?
Yes.
Yes, we recommend enabling 2FA for an additional layer of security. We support:
You can setup two-factor authentication from the settings screen of the mobile
app or from the side bar of our desktop app.
- Time-based One-Time Passwords (TOTP)
- WebAuthn/FIDO2 for hardware security keys
## How does sharing work?
You can set up 2FA in the settings of our mobile or desktop apps.
## Sharing and Collaboration
### How does sharing work?
The information required to decrypt an album is encrypted with the recipient's
public key such that only they can decrypt them.
@@ -81,6 +96,8 @@ and is never sent to our servers.
Please note that only users on the paid plan are allowed to share albums. The
receiver just needs a free Ente account.
## Security Audits
## Has the Ente Photos app been audited by a credible source?
Yes, Ente Photos has undergone a thorough security audit conducted by Cure53, in
@@ -88,15 +105,23 @@ collaboration with Symbolic Software. Cure53 is a prominent German cybersecurity
firm, while Symbolic Software specializes in applied cryptography. Please find
the full report here: https://ente.io/blog/cryptography-audit/
## How can I delete my account?
## Account Management
### How can I delete my account?
You can delete your account at any time by using the "Delete account" option in
the settings. For security reasons, we request you to delete your account on
your own instead of contacting support to ask them to delete your account.
Note that both Ente photos and Ente auth data will be deleted when you delete
Note that both Ente Photos and Ente Auth data will be deleted when you delete
your account (irrespective of which app you delete it from) since both photos
and auth use the same underlying account.
To know details of how your data is deleted, including when you delete your
account, please see https://ente.io/blog/how-ente-deletes-data/.
## Additional Support
For any security or privacy questions not covered here, please contact our team
at security@ente.io. We're committed to addressing your concerns and
continuously improving our security measures.

View File

@@ -5,41 +5,41 @@ description: How to report bugs and share the logs from your Ente Photos app
# Sharing debug logs
In some cases when you report a bug, our customer support might request you to
share debug logs from your app to help our developers find the issue.
In some cases when you report an issue, our customer support might request you
to share debug logs from your app to help our developers find the issue.
Note that the debug logs contain potentially sensitive information like the file
names, so please feel free to not share them if you have any hesitation or want
to keep these private. We will try to diagnose the issue even without the logs,
the logs just make the process a bit faster and easier.
### Mobile
## Mobile
To **_Report a bug_** on your mobile device, follow these steps:
- Open settings (tap on the three horizontal lines button).
- Tap on _Support_ from the settings.
- Select for the option to _Report a Bug_.
- Tap on _Report a bug_.
- Tap on the three horizontal lines to access the settings.
- Tap on **"Support"** from the settings.
- Select for the option to **"Report a Bug"**.
- Tap on **"Report a bug"** .
## Desktop
### Desktop
- Click on _Help_ menu at the top of your screen, and select the _View logs_
option.
- Open settings (click on the three horizontal lines button located at the top
left corner of the screen).
- Click on _Support_. This will open your email client where you can attach
the logs in the email and describe the issue.
To **_Report a bug_** on the desktop app, follow these steps:
## Web
- Click on the three horizontal lines located in the top left corner of the
screen to access the settings.
- Click on **"Debug logs"** from the settings.
- Click on **Download logs**.
- Then Click on **"Support"**.
- Attach the downloaded logs in the email and describe the issue.
- Open settings (click on the three horizontal lines button located at the top
left corner of the screen).
- Click on _Debug Logs_ towards the bottom of settings.
- Click on _Download logs_
- Click on _Support_. This will open your email client where you can attach
the logs in the email and describe the issue.
### Web
## Send email manually
To **_Report a bug_** on the web, follow these steps:
- Click on the three horizontal lines located in the top left corner of the
screen to access the settings.
- Click on **"Debug Logs"**
- Click on **Download logs**
- Click on **"Support"** from the settings.
- Attach the downloaded logs in the email and describe the issue.
If _Report a bug_ or _Support_ doesn't automatically open your email client, you
can also directly send a mail to <a
href="mailto:support@ente.io">support@ente.io</a>.

View File

@@ -32,11 +32,6 @@ apps](web-dev-settings.png){width=400px}
This works on both the desktop app and web app (if you deploy on your own).
> [!CAUTION]
>
> This setting is currently available in the nightly builds of the desktop app.
> It'll be available in the regular builds with the upcoming release (1.7.2).
To make it easier to identify when a custom server is being used, app will
thereafter show the endpoint in use (if not Ente's production server) at the
bottom of the login prompt:

View File

@@ -659,9 +659,9 @@ preact@^10.0.0:
integrity sha512-gympg+T2Z1fG1unB8NH29yHJwnEaCH37Z32diPDku316OTnRPeMbiRV9kTrfZpocXjdfnWuFUl/Mj4BHaf6gnw==
prettier@^3:
version "3.2.5"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368"
integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==
version "3.3.2"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.2.tgz#03ff86dc7c835f2d2559ee76876a3914cec4a90a"
integrity sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==
rfdc@^1.3.1:
version "1.3.1"

View File

@@ -17,7 +17,7 @@ RUN \
# Install SCW CLI
# Latest release: https://github.com/scaleway/scaleway-cli/releases/latest
RUN \
export VERSION="2.26.0" && \
export VERSION="2.32.1" && \
curl -o /usr/local/bin/scw -L "https://github.com/scaleway/scaleway-cli/releases/download/v${VERSION}/scaleway-cli_${VERSION}_linux_amd64" && \
chmod +x /usr/local/bin/scw

View File

@@ -3,9 +3,16 @@
set -o errexit
set -o xtrace
# Find the name of the latest backup
# The backup file name contains the epoch, so we can just sort.
BACKUP_FILE=$(rclone lsf --include 'db-*.custom' --files-only $RCLONE_DESTINATION | sort | tail -1)
if test -z "$1"; then
# Find the name of the latest backup.
#
# The backup file name contains the epoch, so we can just sort.
BACKUP_FILE=$(rclone lsf --include 'db-*.custom' --files-only $RCLONE_DESTINATION | sort | tail -1)
else
# If a CLI argument is provided, use that as the name of the backup file to
# restore.
BACKUP_FILE="$1"
fi
# Download it
rclone copy --log-level INFO "${RCLONE_DESTINATION}${BACKUP_FILE}" .

View File

@@ -1,8 +1,5 @@
# https://prometheus.io/docs/prometheus/latest/configuration/
global:
scrape_interval: 30s # Default is 1m
scrape_configs:
- job_name: museum
static_configs:

View File

@@ -61,7 +61,7 @@ const handleGET = async (request: Request) => {
const params = new URLSearchParams({ castToken });
let response = await fetch(
`https://api.ente.io/cast/files${pathname}${fileID}?${params.toString()}`
`https://api.ente.io/cast/files${pathname}${fileID}?${params.toString()}`,
);
if (!response.ok) console.log("Upstream error", response.status);

View File

@@ -17,16 +17,12 @@ export default {
const handleOPTIONS = (request: Request) => {
const origin = request.headers.get("Origin");
if (!isAllowedOrigin(origin)) console.warn("Unknown origin", origin);
const headers = request.headers.get("Access-Control-Request-Headers");
if (!areAllowedHeaders(headers))
console.warn("Unknown header in list", headers);
return new Response("", {
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, OPTIONS",
"Access-Control-Allow-Headers": "X-Auth-Token, X-Client-Package",
"Access-Control-Max-Age": "86400",
// "Access-Control-Allow-Headers": "X-Auth-Token, X-Client-Package",
"Access-Control-Allow-Headers": "*",
},
});
};
@@ -48,16 +44,6 @@ const isAllowedOrigin = (origin: string | null) => {
}
};
const areAllowedHeaders = (headers: string | null) => {
const allowed = ["x-auth-token", "x-client-package"];
if (!headers) return true;
for (const header of headers.split(",")) {
if (!allowed.includes(header.trim().toLowerCase())) return false;
}
return true;
};
const handleGET = async (request: Request) => {
const url = new URL(request.url);
@@ -91,7 +77,7 @@ const handleGET = async (request: Request) => {
headers: {
"User-Agent": request.headers.get("User-Agent") ?? "",
},
}
},
);
if (!response.ok) console.log("Upstream error", response.status);

View File

@@ -4,7 +4,8 @@
"devDependencies": {
"@cloudflare/workers-types": "^4.20240614.0",
"typescript": "^5",
"wrangler": "^3"
"wrangler": "^3",
"prettier": "^3"
},
"workspaces": [
"*"

View File

@@ -17,17 +17,13 @@ export default {
const handleOPTIONS = (request: Request) => {
const origin = request.headers.get("Origin");
if (!isAllowedOrigin(origin)) console.warn("Unknown origin", origin);
const headers = request.headers.get("Access-Control-Request-Headers");
if (!areAllowedHeaders(headers))
console.warn("Unknown header in list", headers);
return new Response("", {
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, OPTIONS",
"Access-Control-Allow-Headers":
"X-Auth-Access-Token, X-Auth-Access-Token-JWT, X-Client-Package",
"Access-Control-Max-Age": "86400",
// "Access-Control-Allow-Headers": "X-Auth-Access-Token, X-Auth-Access-Token-JWT",
// "Access-Control-Allow-Headers": "X-Auth-Access-Token, X-Auth-Access-Token-JWT, x-client-package",
"Access-Control-Allow-Headers": "*",
},
});
};
@@ -45,21 +41,6 @@ const isAllowedOrigin = (origin: string | null) => {
}
};
const areAllowedHeaders = (headers: string | null) => {
// TODO(MR): Stop sending "x-client-package"
const allowed = [
"x-auth-access-token",
"x-auth-access-token-jwt",
"x-client-package",
];
if (!headers) return true;
for (const header of headers.split(",")) {
if (!allowed.includes(header.trim().toLowerCase())) return false;
}
return true;
};
const handleGET = async (request: Request) => {
const url = new URL(request.url);
@@ -90,7 +71,7 @@ const handleGET = async (request: Request) => {
if (accessTokenJWT) params.set("accessTokenJWT", accessTokenJWT);
let response = await fetch(
`https://api.ente.io/public-collection/files${pathname}${fileID}?${params.toString()}`
`https://api.ente.io/public-collection/files${pathname}${fileID}?${params.toString()}`,
);
if (!response.ok) console.log("Upstream error", response.status);

View File

@@ -17,16 +17,12 @@ export default {
const handleOPTIONS = (request: Request) => {
const origin = request.headers.get("Origin");
if (!isAllowedOrigin(origin)) console.warn("Unknown origin", origin);
const headers = request.headers.get("Access-Control-Request-Headers");
if (!areAllowedHeaders(headers))
console.warn("Unknown header in list", headers);
return new Response("", {
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, OPTIONS",
"Access-Control-Allow-Headers": "X-Auth-Token, X-Client-Package",
"Access-Control-Max-Age": "86400",
// "Access-Control-Allow-Headers": "X-Auth-Token, X-Client-Package",
"Access-Control-Allow-Headers": "*",
},
});
};
@@ -48,16 +44,6 @@ const isAllowedOrigin = (origin: string | null) => {
}
};
const areAllowedHeaders = (headers: string | null) => {
const allowed = ["x-auth-token", "x-client-package"];
if (!headers) return true;
for (const header of headers.split(",")) {
if (!allowed.includes(header.trim().toLowerCase())) return false;
}
return true;
};
const handleGET = async (request: Request) => {
const url = new URL(request.url);
@@ -79,7 +65,7 @@ const handleGET = async (request: Request) => {
if (token) params.set("token", token);
let response = await fetch(
`https://api.ente.io/files/preview/${fileID}?${params.toString()}`
`https://api.ente.io/files/preview/${fileID}?${params.toString()}`,
);
if (!response.ok) console.log("Upstream error", response.status);

View File

@@ -23,17 +23,14 @@ export default {
const handleOPTIONS = (request: Request) => {
const origin = request.headers.get("Origin");
if (!isAllowedOrigin(origin)) console.warn("Unknown origin", origin);
const headers = request.headers.get("Access-Control-Request-Headers");
if (!areAllowedHeaders(headers))
console.warn("Unknown header in list", headers);
return new Response("", {
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "POST, PUT, OPTIONS",
"Access-Control-Max-Age": "86400",
// "Access-Control-Allow-Headers": "Content-Type", "UPLOAD-URL, X-Client-Package",
"Access-Control-Allow-Headers": "*",
"Access-Control-Allow-Headers":
"Content-Type, UPLOAD-URL, X-Client-Package",
"Access-Control-Expose-Headers": "X-Request-Id, CF-Ray",
"Access-Control-Max-Age": "86400",
},
});
};
@@ -55,16 +52,6 @@ const isAllowedOrigin = (origin: string | null) => {
}
};
const areAllowedHeaders = (headers: string | null) => {
const allowed = ["content-type", "upload-url", "x-client-package"];
if (!headers) return true;
for (const header of headers.split(",")) {
if (!allowed.includes(header.trim().toLowerCase())) return false;
}
return true;
};
const handlePOSTOrPUT = async (request: Request) => {
const url = new URL(request.url);
@@ -116,7 +103,7 @@ const handlePOSTOrPUT = async (request: Request) => {
response.headers.set("Access-Control-Allow-Origin", "*");
response.headers.set(
"Access-Control-Expose-Headers",
"X-Request-Id, CF-Ray"
"X-Request-Id, CF-Ray",
);
return response;
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -0,0 +1 @@
ente - ذخیره‌سازی عکس رمزگذاری شده

View File

@@ -0,0 +1,36 @@
Ente to prosta aplikacja do tworzenia kopii zapasowej Twoich zdjęć i filmów.
Jeśli szukałeś/aś przyjaznej dla prywatności alternatywy do Google Photos to dotarłeś/aś do właściwego miejsca. Dzięki Ente są one przechowywane w pełni zaszyfrowane (e2ee). Oznacza to, że tylko Ty możesz je oglądać.
Mamy otwarto-źródłowe aplikacje na wszystkich platformach, a Twoje zdjęcia będą płynnie synchronizowane między Twoimi urządzeniami w sposób szyfrowany end-to-end (e2ee).
Ente sprawia, że udostępnianie twoich albumów swoim bliskim również jest proste, nawet jeśli nie są w Ente. Możesz udostępniać publicznie widoczne linki, gdzie mogą oglądać twój album i współpracować, dodając do niego zdjęcia, nawet bez konta lub aplikacji.
Twoje zaszyfrowane dane są przechowywane w wielu lokalizacjach, między innymi w schronie przeciwatomowym w Paryżu. Poważnie podchodzimy do kwestii zachowania pamięci i ułatwiamy zadbanie o to, by wspomnienia przetrwały dłużej niż ty sam.
Jesteśmy tutaj, aby zrobić najbezpieczniejszą aplikację na zdjęcia, dołącz do naszej podróży!
FUNKCJE
- Oryginalne kopie zapasowe wysokiej jakości, ponieważ każdy piksel jest ważny
- Plany rodzinne, umożliwiające współdzielenie pamięci z rodziną
- Wspólne albumy, dzięki czemu możesz zbierać zdjęcia po podróży
- Udostępnione foldery, jeśli chcesz, aby Twój partner cieszył się kliknięciami "Aparatu"
- Linki do albumów, które mogą być chronione hasłem
- Możliwość zwolnienia miejsca poprzez usunięcie plików, które zostały bezpiecznie zarchiwizowane
- Wsparcie ludzkie, ponieważ jesteś tego warty/a
- Opisy, dzięki którym możesz podpisać swoje wspomnienia i łatwo je znaleźć
- Edytor obrazów, aby dodać ostatnie poprawki
- Dodaj do ulubionych, ukryj i przeżyj swoje wspomnienia, ponieważ są cenne
- Import jednym kliknięciem z Google, Apple, dysku twardego i więcej
- Ciemny motyw, ponieważ Twoje zdjęcia wyglądają w nim dobrze
- 2FA, 3FA, uwierzytelnianie biometryczne
- i o WIELE więcej!
UPRAWNIENIA
Ente prosi o określone uprawnienia, aby służyć jako dostawca usług przechowywania zdjęć, które można przejrzeć tutaj: https://github.com/ente-io/ente/blob/f-droid/mobile/android/permissions.md
CENNIK
Nie oferujemy wiecznie darmowych planów, ponieważ ważne jest dla nas, abyśmy pozostali zrównoważeni i wytrzymali próbę czasu. Zamiast tego oferujemy przystępne cenowo plany, którymi można swobodnie dzielić się z rodziną. Więcej informacji możesz znaleźć na stronie ente.io.
WSPARCIE
Jesteśmy dumni z tego, że oferujemy ludzkie wsparcie. Jeśli jesteś naszym płatnym klientem, możesz skontaktować się z nami pod adresem team@ente.io i oczekiwać odpowiedzi od naszego zespołu w ciągu 24 godzin.

View File

@@ -1 +1 @@
ente to w pełni szyfrowana aplikacja do przechowywania zdjęć
Ente to w pełni szyfrowana aplikacja do przechowywania zdjęć

View File

@@ -1 +1 @@
ente - szyfrowane przechowywanie zdjęć
Ente - szyfrowane przechowywanie zdjęć

View File

@@ -1,8 +1,8 @@
Ente to prosta aplikacja do automatycznego tworzenia kopii zapasowych oraz porządkowania zdjęć i filmów.
Jeśli szukasz przyjaznej dla prywatności alternatywy, aby zachować swoje wspomnienia, jesteś we właściwym miejscu. Dzięki Ente są one przechowywane w pełni zaszyfrowane (e2ee). Oznacza to, że tylko Ty możesz je oglądać.
Jeśli szukałeś/aś przyjaznej dla prywatności alternatywy, aby zachować swoje wspomnienia, to dotarłeś/aś do właściwego miejsca. Dzięki Ente są one przechowywane w pełni zaszyfrowane (e2ee). Oznacza to, że tylko Ty możesz je oglądać.
Mamy aplikacje na wszystkich platformach, a Twoje zdjęcia będą płynnie synchronizowane między Twoimi urządzeniami w sposób szyfrowany (e2ee).
Mamy aplikacje na wszystkich platformach, a Twoje zdjęcia będą płynnie synchronizowane między Twoimi urządzeniami w sposób szyfrowany end-to-end (e2ee).
Ente ułatwia również udostępnianie albumów najbliższym. Możesz udostępniać je bezpośrednio innym użytkownikom Ente, w pełni zaszyfrowane; lub za pomocą publicznie dostępnych linków.
@@ -23,11 +23,11 @@ FUNKCJE
- 2FA, 3FA, uwierzytelnianie biometryczne
- i o WIELE więcej!
WARUNKI
CENNIK
Nie oferujemy planów darmowych na zawsze, ponieważ ważne jest dla nas, abyśmy pozostali zrównoważeni i wytrzymali próbę czasu. Zamiast tego oferujemy przystępne cenowo plany, którymi można swobodnie dzielić się z rodziną. Więcej informacji możesz znaleźć na stronie ente.io.
WSPARCIE
Jesteśmy dumni z tego, że oferujemy ludzkie wsparcie. Jeśli jesteś naszym płatnym klientem, możesz skontaktować się z nami pod adresem team@ente.io i oczekiwać odpowiedzi od naszego zespołu w ciągu 24 godzin.
CENA
WARUNKI
https://ente.io/terms

View File

@@ -0,0 +1,30 @@
Ente to prosta aplikacja do automatycznego tworzenia kopii zapasowych oraz porządkowania zdjęć i filmów.
Jeśli szukałeś/aś przyjaznej dla prywatności alternatywy, aby zachować swoje wspomnienia, to dotarłeś/aś do właściwego miejsca. Dzięki Ente są one przechowywane w pełni zaszyfrowane (e2ee). Oznacza to, że tylko Ty możesz je oglądać.
Mamy otwarto-źródłowe aplikacje na wszystkich platformach, a Twoje zdjęcia będą płynnie synchronizowane między Twoimi urządzeniami w sposób szyfrowany end-to-end (e2ee).
Ente ułatwia również udostępnianie albumów najbliższym. Możesz udostępniać je bezpośrednio innym użytkownikom Ente, w pełni zaszyfrowane; lub za pomocą publicznie dostępnych linków.
Twoje zaszyfrowane dane są przechowywane w wielu lokalizacjach, między innymi w schronie przeciwatomowym w Paryżu. Poważnie podchodzimy do kwestii zachowania pamięci i ułatwiamy zadbanie o to, by wspomnienia przetrwały dłużej niż ty sam.
Jesteśmy tutaj, aby zrobić najbezpieczniejszą aplikację na zdjęcia, dołącz do naszej podróży!
✨ FUNKCJE
- Kopie zapasowe oryginalnej jakości, ponieważ każdy piksel jest ważny
- Plany rodzinne, dzięki czemu możesz udostępnić pamięć swojej rodzinie
- Udostępnione foldery, jeśli chcesz, aby Twój partner cieszył się kliknięciami "Aparatu"
- Linki do albumów, które mogą być chronione hasłem i automatycznie wygasać
- Możliwość zwolnienia miejsca poprzez usunięcie plików, które zostały bezpiecznie zarchiwizowane
- Edytor obrazów, aby dodać ostatnie poprawki
- Dodaj do ulubionych, ukryj i przeżyj swoje wspomnienia, ponieważ są cenne
- Import jednym kliknięciem z Google, Apple, dysku twardego i więcej
- Ciemny motyw, ponieważ Twoje zdjęcia wyglądają w nim dobrze
- 2FA, 3FA, uwierzytelnianie biometryczne
- i o WIELE więcej!
💲 CENNIK
Nie oferujemy wiecznie darmowych planów, ponieważ ważne jest dla nas, abyśmy pozostali zrównoważeni i wytrzymali próbę czasu. Zamiast tego oferujemy przystępne cenowo plany, którymi można swobodnie dzielić się z rodziną. Więcej informacji możesz znaleźć na stronie ente.io.
🙋 WSPARCIE
Jesteśmy dumni z tego, że oferujemy ludzkie wsparcie. Jeśli jesteś naszym płatnym klientem, możesz skontaktować się z nami pod adresem team@ente.io i oczekiwać odpowiedzi od naszego zespołu w ciągu 24 godzin.

View File

@@ -199,6 +199,8 @@ PODS:
- shared_preferences_foundation (0.0.1):
- Flutter
- FlutterMacOS
- smart_auth (0.0.1):
- Flutter
- sqflite (0.0.3):
- Flutter
- FlutterMacOS
@@ -277,6 +279,7 @@ DEPENDENCIES:
- sentry_flutter (from `.symlinks/plugins/sentry_flutter/ios`)
- share_plus (from `.symlinks/plugins/share_plus/ios`)
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
- smart_auth (from `.symlinks/plugins/smart_auth/ios`)
- sqflite (from `.symlinks/plugins/sqflite/darwin`)
- sqlite3_flutter_libs (from `.symlinks/plugins/sqlite3_flutter_libs/ios`)
- uni_links (from `.symlinks/plugins/uni_links/ios`)
@@ -397,6 +400,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/share_plus/ios"
shared_preferences_foundation:
:path: ".symlinks/plugins/shared_preferences_foundation/darwin"
smart_auth:
:path: ".symlinks/plugins/smart_auth/ios"
sqflite:
:path: ".symlinks/plugins/sqflite/darwin"
sqlite3_flutter_libs:
@@ -466,7 +471,7 @@ SPEC CHECKSUMS:
package_info_plus: 115f4ad11e0698c8c1c5d8a689390df880f47e85
path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
photo_manager: 4f6810b7dfc4feb03b461ac1a70dacf91fba7604
photo_manager: ff695c7a1dd5bc379974953a2b5c0a293f7c4c8a
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
receive_sharing_intent: 6837b01768e567fe8562182397bf43d63d8c6437
screen_brightness_ios: 715ca807df953bf676d339f11464e438143ee625
@@ -477,6 +482,7 @@ SPEC CHECKSUMS:
SentryPrivate: d651efb234cf385ec9a1cdd3eff94b5e78a0e0fe
share_plus: 8875f4f2500512ea181eef553c3e27dba5135aad
shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695
smart_auth: 4bedbc118723912d0e45a07e8ab34039c19e04f2
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
sqlite3: 02d1f07eaaa01f80a1c16b4b31dfcbb3345ee01a
sqlite3_flutter_libs: af0e8fe9bce48abddd1ffdbbf839db0302d72d80

View File

@@ -329,6 +329,7 @@
"${BUILT_PRODUCTS_DIR}/sentry_flutter/sentry_flutter.framework",
"${BUILT_PRODUCTS_DIR}/share_plus/share_plus.framework",
"${BUILT_PRODUCTS_DIR}/shared_preferences_foundation/shared_preferences_foundation.framework",
"${BUILT_PRODUCTS_DIR}/smart_auth/smart_auth.framework",
"${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework",
"${BUILT_PRODUCTS_DIR}/sqlite3/sqlite3.framework",
"${BUILT_PRODUCTS_DIR}/sqlite3_flutter_libs/sqlite3_flutter_libs.framework",
@@ -420,6 +421,7 @@
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sentry_flutter.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/share_plus.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences_foundation.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/smart_auth.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqlite3.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqlite3_flutter_libs.framework",

View File

@@ -34,6 +34,7 @@ import 'package:photos/services/search_service.dart';
import 'package:photos/services/sync_service.dart';
import 'package:photos/utils/crypto_util.dart';
import 'package:photos/utils/file_uploader.dart';
import "package:photos/utils/lock_screen_settings.dart";
import 'package:photos/utils/validator_util.dart';
import "package:photos/utils/wakelock_util.dart";
import 'package:shared_preferences/shared_preferences.dart';
@@ -59,7 +60,7 @@ class Configuration {
// keyShouldKeepDeviceAwake is used to determine whether the device screen
// should be kept on while the app is in foreground.
static const keyShouldKeepDeviceAwake = "should_keep_device_awake";
static const keyShouldShowLockScreen = "should_show_lock_screen";
static const keyShowSystemLockScreen = "should_show_lock_screen";
static const keyHasSelectedAnyBackupFolder =
"has_selected_any_folder_for_backup";
static const lastTempFolderClearTimeKey = "last_temp_folder_clear_time";
@@ -72,7 +73,6 @@ class Configuration {
"has_selected_all_folders_for_backup";
static const anonymousUserIDKey = "anonymous_user_id";
static const endPointKey = "endpoint";
static final _logger = Logger("Configuration");
String? _cachedToken;
@@ -83,7 +83,6 @@ class Configuration {
late FlutterSecureStorage _secureStorage;
late String _tempDocumentsDirPath;
late String _thumbnailCacheDirectory;
// 6th July 22: Remove this after 3 months. Hopefully, active users
// will migrate to newer version of the app, where shared media is stored
// on appSupport directory which OS won't clean up automatically
@@ -216,8 +215,9 @@ class Configuration {
await UploadLocksDB.instance.clearTable();
await IgnoredFilesService.instance.reset();
await TrashDB.instance.clearTable();
FileUploader.instance.clearCachedUploadURLs();
if (!autoLogout) {
// Following services won't be initialized if it's the case of autoLogout
FileUploader.instance.clearCachedUploadURLs();
CollectionsService.instance.clearCache();
FavoritesService.instance.clearCache();
MemoriesService.instance.clearCache();
@@ -620,16 +620,22 @@ class Configuration {
}
}
bool shouldShowLockScreen() {
if (_preferences.containsKey(keyShouldShowLockScreen)) {
return _preferences.getBool(keyShouldShowLockScreen)!;
Future<bool> shouldShowLockScreen() async {
final bool isPin = await LockScreenSettings.instance.isPinSet();
final bool isPass = await LockScreenSettings.instance.isPasswordSet();
return isPin || isPass || shouldShowSystemLockScreen();
}
bool shouldShowSystemLockScreen() {
if (_preferences.containsKey(keyShowSystemLockScreen)) {
return _preferences.getBool(keyShowSystemLockScreen)!;
} else {
return false;
}
}
Future<void> setShouldShowLockScreen(bool value) {
return _preferences.setBool(keyShouldShowLockScreen, value);
Future<void> setSystemLockScreen(bool value) {
return _preferences.setBool(keyShowSystemLockScreen, value);
}
void setVolatilePassword(String volatilePassword) {

View File

@@ -0,0 +1,3 @@
import "package:photos/events/event.dart";
class FavoritesServiceInitCompleteEvent extends Event {}

View File

@@ -28,6 +28,7 @@ import 'messages_no.dart' as messages_no;
import 'messages_pl.dart' as messages_pl;
import 'messages_pt.dart' as messages_pt;
import 'messages_ru.dart' as messages_ru;
import 'messages_tr.dart' as messages_tr;
import 'messages_zh.dart' as messages_zh;
typedef Future<dynamic> LibraryLoader();
@@ -44,6 +45,7 @@ Map<String, LibraryLoader> _deferredLibraries = {
'pl': () => new SynchronousFuture(null),
'pt': () => new SynchronousFuture(null),
'ru': () => new SynchronousFuture(null),
'tr': () => new SynchronousFuture(null),
'zh': () => new SynchronousFuture(null),
};
@@ -73,6 +75,8 @@ MessageLookupByLibrary? _findExact(String localeName) {
return messages_pt.messages;
case 'ru':
return messages_ru.messages;
case 'tr':
return messages_tr.messages;
case 'zh':
return messages_zh.messages;
default:

View File

@@ -32,6 +32,7 @@ class MessageLookup extends MessageLookupByLibrary {
"addToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Add to hidden album"),
"addViewers": m1,
"appLock": MessageLookupByLibrary.simpleMessage("App lock"),
"changeLocationOfSelectedItems": MessageLookupByLibrary.simpleMessage(
"Change location of selected items?"),
"clusteringProgress":
@@ -42,12 +43,14 @@ class MessageLookup extends MessageLookupByLibrary {
"deleteConfirmDialogBody": MessageLookupByLibrary.simpleMessage(
"This account is linked to other ente apps, if you use any.\\n\\nYour uploaded data, across all ente apps, will be scheduled for deletion, and your account will be permanently deleted."),
"descriptions": MessageLookupByLibrary.simpleMessage("Descriptions"),
"deviceLock": MessageLookupByLibrary.simpleMessage("Device lock"),
"editLocation": MessageLookupByLibrary.simpleMessage("Edit location"),
"editsToLocationWillOnlyBeSeenWithinEnte":
MessageLookupByLibrary.simpleMessage(
"Edits to location will only be seen within Ente"),
"enterPersonName":
MessageLookupByLibrary.simpleMessage("Enter person name"),
"enterPin": MessageLookupByLibrary.simpleMessage("Enter PIN"),
"faceRecognition":
MessageLookupByLibrary.simpleMessage("Face recognition"),
"fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
@@ -64,6 +67,14 @@ class MessageLookup extends MessageLookupByLibrary {
"Modify your query, or try searching for"),
"moveToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Move to hidden album"),
"next": MessageLookupByLibrary.simpleMessage("Next"),
"noSystemLockFound":
MessageLookupByLibrary.simpleMessage("No system lock found"),
"passwordLock": MessageLookupByLibrary.simpleMessage("Password lock"),
"pinLock": MessageLookupByLibrary.simpleMessage("PIN lock"),
"reenterPassword":
MessageLookupByLibrary.simpleMessage("Re-enter password"),
"reenterPin": MessageLookupByLibrary.simpleMessage("Re-enter PIN"),
"removePersonLabel":
MessageLookupByLibrary.simpleMessage("Remove person label"),
"search": MessageLookupByLibrary.simpleMessage("Search"),
@@ -71,6 +82,15 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Select a location"),
"selectALocationFirst":
MessageLookupByLibrary.simpleMessage("Select a location first"),
"setNewPassword":
MessageLookupByLibrary.simpleMessage("Set new password"),
"setNewPin": MessageLookupByLibrary.simpleMessage("Set new PIN"),
"tapToUnlock": MessageLookupByLibrary.simpleMessage("Tap to unlock"),
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen":
MessageLookupByLibrary.simpleMessage(
"To enable app lock, please setup device passcode or screen lock in your system settings."),
"tooManyIncorrectAttempts":
MessageLookupByLibrary.simpleMessage("Too many incorrect attempts"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map")
};
}

View File

@@ -42,7 +42,7 @@ class MessageLookup extends MessageLookupByLibrary {
static String m7(versionValue) => "Version: ${versionValue}";
static String m8(freeAmount, storageUnit) =>
"${freeAmount} ${storageUnit} kostenlos";
"${freeAmount} ${storageUnit} frei";
static String m9(paymentProvider) =>
"Bitte kündigen Sie Ihr aktuelles Abo über ${paymentProvider} zuerst";
@@ -127,92 +127,94 @@ class MessageLookup extends MessageLookupByLibrary {
static String m36(albumName) => "Erfolgreich zu ${albumName} hinzugefügt";
static String m37(passwordStrengthValue) =>
static String m37(name) => "Nicht ${name}?";
static String m38(passwordStrengthValue) =>
"Passwortstärke: ${passwordStrengthValue}";
static String m38(providerName) =>
static String m39(providerName) =>
"Bitte kontaktiere den Support von ${providerName}, falls etwas abgebucht wurde";
static String m39(endDate) =>
static String m40(endDate) =>
"Kostenlose Testversion gültig bis ${endDate}.\nSie können anschließend ein bezahltes Paket auswählen.";
static String m40(toEmail) => "Bitte sende uns eine E-Mail an ${toEmail}";
static String m41(toEmail) => "Bitte sende uns eine E-Mail an ${toEmail}";
static String m41(toEmail) => "Bitte sende die Protokolle an ${toEmail}";
static String m42(toEmail) => "Bitte sende die Protokolle an ${toEmail}";
static String m42(storeName) => "Bewerte uns auf ${storeName}";
static String m43(storeName) => "Bewerte uns auf ${storeName}";
static String m43(storageInGB) =>
static String m44(storageInGB) =>
"3. Ihr beide erhaltet ${storageInGB} GB* kostenlos";
static String m44(userEmail) =>
static String m45(userEmail) =>
"${userEmail} wird aus diesem geteilten Album entfernt\n\nAlle von ihnen hinzugefügte Fotos werden ebenfalls aus dem Album entfernt";
static String m45(endDate) => "Erneuert am ${endDate}";
static String m46(endDate) => "Erneuert am ${endDate}";
static String m46(count) =>
static String m47(count) =>
"${Intl.plural(count, one: '${count} Ergebnis gefunden', other: '${count} Ergebnisse gefunden')}";
static String m47(count) => "${count} ausgewählt";
static String m48(count) => "${count} ausgewählt";
static String m48(count, yourCount) =>
static String m49(count, yourCount) =>
"${count} ausgewählt (${yourCount} von Ihnen)";
static String m49(verificationID) =>
static String m50(verificationID) =>
"Hier ist meine Verifizierungs-ID: ${verificationID} für ente.io.";
static String m50(verificationID) =>
static String m51(verificationID) =>
"Hey, kannst du bestätigen, dass dies deine ente.io Verifizierungs-ID ist: ${verificationID}";
static String m51(referralCode, referralStorageInGB) =>
static String m52(referralCode, referralStorageInGB) =>
"Ente Weiterempfehlungs-Code: ${referralCode} \n\nEinlösen unter Einstellungen → Allgemein → Weiterempfehlungen, um ${referralStorageInGB} GB kostenlos zu erhalten, sobald Sie einen kostenpflichtigen Tarif abgeschlossen haben\n\nhttps://ente.io";
static String m52(numberOfPeople) =>
static String m53(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Teile mit bestimmten Personen', one: 'Teilen mit 1 Person', other: 'Teilen mit ${numberOfPeople} Personen')}";
static String m53(emailIDs) => "Geteilt mit ${emailIDs}";
static String m54(fileType) =>
"Dieses ${fileType} wird von deinem Gerät gelöscht.";
static String m54(emailIDs) => "Geteilt mit ${emailIDs}";
static String m55(fileType) =>
"Dieses ${fileType} wird von deinem Gerät gelöscht.";
static String m56(fileType) =>
"Diese Datei ist sowohl in Ente als auch auf deinem Gerät.";
static String m56(fileType) => "Diese Datei wird von Ente gelöscht.";
static String m57(fileType) => "Diese Datei wird von Ente gelöscht.";
static String m57(storageAmountInGB) => "${storageAmountInGB} GB";
static String m58(storageAmountInGB) => "${storageAmountInGB} GB";
static String m58(
static String m59(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} von ${totalAmount} ${totalStorageUnit} verwendet";
static String m59(id) =>
static String m60(id) =>
"Ihr ${id} ist bereits mit einem anderen Ente-Konto verknüpft.\nWenn Sie Ihre ${id} mit diesem Konto verwenden möchten, kontaktieren Sie bitte unseren Support";
static String m60(endDate) => "Ihr Abo endet am ${endDate}";
static String m61(endDate) => "Ihr Abo endet am ${endDate}";
static String m61(completed, total) =>
static String m62(completed, total) =>
"${completed}/${total} Erinnerungsstücke gesichert";
static String m62(storageAmountInGB) =>
static String m63(storageAmountInGB) =>
"Diese erhalten auch ${storageAmountInGB} GB";
static String m63(email) => "Dies ist ${email}s Verifizierungs-ID";
static String m64(email) => "Dies ist ${email}s Verifizierungs-ID";
static String m64(count) =>
static String m65(count) =>
"${Intl.plural(count, zero: '', one: '1 Tag', other: '${count} Tage')}";
static String m65(endDate) => "Gültig bis ${endDate}";
static String m66(endDate) => "Gültig bis ${endDate}";
static String m66(email) => "Verifiziere ${email}";
static String m67(email) => "Verifiziere ${email}";
static String m67(email) =>
static String m68(email) =>
"Wir haben eine E-Mail an <green>${email}</green> gesendet";
static String m68(count) =>
static String m69(count) =>
"${Intl.plural(count, one: 'vor einem Jahr', other: 'vor ${count} Jahren')}";
static String m69(storageSaved) =>
static String m70(storageSaved) =>
"Du hast ${storageSaved} erfolgreich freigegeben!";
final messages = _notInlinedMessages(_notInlinedMessages);
@@ -309,6 +311,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Android, iOS, Web, Desktop"),
"androidSignInTitle": MessageLookupByLibrary.simpleMessage(
"Authentifizierung erforderlich"),
"appLock": MessageLookupByLibrary.simpleMessage("App-Sperre"),
"appVersion": m7,
"appleId": MessageLookupByLibrary.simpleMessage("Apple ID"),
"apply": MessageLookupByLibrary.simpleMessage("Anwenden"),
@@ -612,6 +615,7 @@ class MessageLookup extends MessageLookupByLibrary {
"deviceCodeHint": MessageLookupByLibrary.simpleMessage("Code eingeben"),
"deviceFilesAutoUploading": MessageLookupByLibrary.simpleMessage(
"Dateien, die zu diesem Album hinzugefügt werden, werden automatisch zu Ente hochgeladen."),
"deviceLock": MessageLookupByLibrary.simpleMessage("Gerätsperre"),
"deviceLockExplanation": MessageLookupByLibrary.simpleMessage(
"Verhindern, dass der Bildschirm gesperrt wird, während die App im Vordergrund ist und eine Sicherung läuft. Das ist normalerweise nicht notwendig, kann aber dabei helfen, große Uploads wie einen Erstimport schneller abzuschließen."),
"deviceNotFound":
@@ -706,6 +710,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Gib ein Passwort ein, mit dem wir deine Daten verschlüsseln können"),
"enterPersonName":
MessageLookupByLibrary.simpleMessage("Namen der Person eingeben"),
"enterPin": MessageLookupByLibrary.simpleMessage("PIN eingeben"),
"enterReferralCode": MessageLookupByLibrary.simpleMessage(
"Gib den Weiterempfehlungs-Code ein"),
"enterThe6digitCodeFromnyourAuthenticatorApp":
@@ -1012,6 +1017,7 @@ class MessageLookup extends MessageLookupByLibrary {
"newAlbum": MessageLookupByLibrary.simpleMessage("Neues Album"),
"newToEnte": MessageLookupByLibrary.simpleMessage("Neu bei Ente"),
"newest": MessageLookupByLibrary.simpleMessage("Zuletzt"),
"next": MessageLookupByLibrary.simpleMessage("Weiter"),
"no": MessageLookupByLibrary.simpleMessage("Nein"),
"noAlbumsSharedByYouYet": MessageLookupByLibrary.simpleMessage(
"Noch keine Alben von dir geteilt"),
@@ -1041,6 +1047,9 @@ class MessageLookup extends MessageLookupByLibrary {
"noResults": MessageLookupByLibrary.simpleMessage("Keine Ergebnisse"),
"noResultsFound":
MessageLookupByLibrary.simpleMessage("Keine Ergebnisse gefunden"),
"noSystemLockFound":
MessageLookupByLibrary.simpleMessage("Keine Systemsperre gefunden"),
"notPersonLabel": m37,
"nothingSharedWithYouYet":
MessageLookupByLibrary.simpleMessage("Noch nichts mit Dir geteilt"),
"nothingToSeeHere": MessageLookupByLibrary.simpleMessage(
@@ -1078,7 +1087,7 @@ class MessageLookup extends MessageLookupByLibrary {
"passwordChangedSuccessfully": MessageLookupByLibrary.simpleMessage(
"Passwort erfolgreich geändert"),
"passwordLock": MessageLookupByLibrary.simpleMessage("Passwort Sperre"),
"passwordStrength": m37,
"passwordStrength": m38,
"passwordWarning": MessageLookupByLibrary.simpleMessage(
"Wir speichern dieses Passwort nicht. Wenn du es vergisst, <underline>können wir deine Daten nicht entschlüsseln</underline>"),
"paymentDetails":
@@ -1087,7 +1096,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Zahlung fehlgeschlagen"),
"paymentFailedMessage": MessageLookupByLibrary.simpleMessage(
"Leider ist deine Zahlung fehlgeschlagen. Wende dich an unseren Support und wir helfen dir weiter!"),
"paymentFailedTalkToProvider": m38,
"paymentFailedTalkToProvider": m39,
"pendingItems":
MessageLookupByLibrary.simpleMessage("Ausstehende Elemente"),
"pendingSync":
@@ -1113,9 +1122,10 @@ class MessageLookup extends MessageLookupByLibrary {
"pickCenterPoint":
MessageLookupByLibrary.simpleMessage("Mittelpunkt auswählen"),
"pinAlbum": MessageLookupByLibrary.simpleMessage("Album anheften"),
"pinLock": MessageLookupByLibrary.simpleMessage("PIN-Sperre"),
"playOnTv": MessageLookupByLibrary.simpleMessage(
"Album auf dem Fernseher wiedergeben"),
"playStoreFreeTrialValidTill": m39,
"playStoreFreeTrialValidTill": m40,
"playstoreSubscription":
MessageLookupByLibrary.simpleMessage("PlayStore Abo"),
"pleaseCheckYourInternetConnectionAndTryAgain":
@@ -1127,12 +1137,12 @@ class MessageLookup extends MessageLookupByLibrary {
"pleaseContactSupportIfTheProblemPersists":
MessageLookupByLibrary.simpleMessage(
"Bitte wenden Sie sich an den Support, falls das Problem weiterhin besteht"),
"pleaseEmailUsAt": m40,
"pleaseEmailUsAt": m41,
"pleaseGrantPermissions": MessageLookupByLibrary.simpleMessage(
"Bitte erteile die nötigen Berechtigungen"),
"pleaseLoginAgain":
MessageLookupByLibrary.simpleMessage("Bitte logge dich erneut ein"),
"pleaseSendTheLogsTo": m41,
"pleaseSendTheLogsTo": m42,
"pleaseTryAgain":
MessageLookupByLibrary.simpleMessage("Bitte versuche es erneut"),
"pleaseVerifyTheCodeYouHaveEntered":
@@ -1168,7 +1178,7 @@ class MessageLookup extends MessageLookupByLibrary {
"raiseTicket": MessageLookupByLibrary.simpleMessage("Ticket erstellen"),
"rateTheApp": MessageLookupByLibrary.simpleMessage("App bewerten"),
"rateUs": MessageLookupByLibrary.simpleMessage("Bewerte uns"),
"rateUsOnStore": m42,
"rateUsOnStore": m43,
"recover": MessageLookupByLibrary.simpleMessage("Wiederherstellen"),
"recoverAccount":
MessageLookupByLibrary.simpleMessage("Konto wiederherstellen"),
@@ -1195,13 +1205,17 @@ class MessageLookup extends MessageLookupByLibrary {
"recreatePasswordTitle":
MessageLookupByLibrary.simpleMessage("Passwort wiederherstellen"),
"reddit": MessageLookupByLibrary.simpleMessage("Reddit"),
"reenterPassword":
MessageLookupByLibrary.simpleMessage("Passwort erneut eingeben"),
"reenterPin":
MessageLookupByLibrary.simpleMessage("PIN erneut eingeben"),
"referFriendsAnd2xYourPlan": MessageLookupByLibrary.simpleMessage(
"Begeistere Freunde für uns und verdopple deinen Speicher"),
"referralStep1": MessageLookupByLibrary.simpleMessage(
"1. Gib diesen Code an deine Freunde"),
"referralStep2": MessageLookupByLibrary.simpleMessage(
"2. Sie schließen ein bezahltes Abo ab"),
"referralStep3": m43,
"referralStep3": m44,
"referrals": MessageLookupByLibrary.simpleMessage("Weiterempfehlungen"),
"referralsAreCurrentlyPaused": MessageLookupByLibrary.simpleMessage(
"Einlösungen sind derzeit pausiert"),
@@ -1229,7 +1243,7 @@ class MessageLookup extends MessageLookupByLibrary {
"removeLink": MessageLookupByLibrary.simpleMessage("Link entfernen"),
"removeParticipant":
MessageLookupByLibrary.simpleMessage("Teilnehmer entfernen"),
"removeParticipantBody": m44,
"removeParticipantBody": m45,
"removePersonLabel":
MessageLookupByLibrary.simpleMessage("Personenetikett entfernen"),
"removePublicLink":
@@ -1245,7 +1259,7 @@ class MessageLookup extends MessageLookupByLibrary {
"renameFile": MessageLookupByLibrary.simpleMessage("Datei umbenennen"),
"renewSubscription":
MessageLookupByLibrary.simpleMessage("Abonnement erneuern"),
"renewsOn": m45,
"renewsOn": m46,
"reportABug": MessageLookupByLibrary.simpleMessage("Fehler melden"),
"reportBug": MessageLookupByLibrary.simpleMessage("Fehler melden"),
"resendEmail":
@@ -1315,7 +1329,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Gruppiere Fotos, die innerhalb des Radius eines bestimmten Fotos aufgenommen wurden"),
"searchPeopleEmptySection": MessageLookupByLibrary.simpleMessage(
"Laden Sie Personen ein, damit Sie geteilte Fotos hier einsehen können"),
"searchResultCount": m46,
"searchResultCount": m47,
"security": MessageLookupByLibrary.simpleMessage("Sicherheit"),
"selectALocation":
MessageLookupByLibrary.simpleMessage("Standort auswählen"),
@@ -1342,8 +1356,8 @@ class MessageLookup extends MessageLookupByLibrary {
"selectedItemsWillBeDeletedFromAllAlbumsAndMoved":
MessageLookupByLibrary.simpleMessage(
"Ausgewählte Elemente werden aus allen Alben gelöscht und in den Papierkorb verschoben."),
"selectedPhotos": m47,
"selectedPhotosWithYours": m48,
"selectedPhotos": m48,
"selectedPhotosWithYours": m49,
"send": MessageLookupByLibrary.simpleMessage("Absenden"),
"sendEmail": MessageLookupByLibrary.simpleMessage("E-Mail senden"),
"sendInvite": MessageLookupByLibrary.simpleMessage("Einladung senden"),
@@ -1356,6 +1370,9 @@ class MessageLookup extends MessageLookupByLibrary {
"setAs": MessageLookupByLibrary.simpleMessage("Festlegen als"),
"setCover": MessageLookupByLibrary.simpleMessage("Titelbild festlegen"),
"setLabel": MessageLookupByLibrary.simpleMessage("Festlegen"),
"setNewPassword":
MessageLookupByLibrary.simpleMessage("Neues Passwort festlegen"),
"setNewPin": MessageLookupByLibrary.simpleMessage("Neue PIN festlegen"),
"setPasswordTitle":
MessageLookupByLibrary.simpleMessage("Passwort festlegen"),
"setRadius": MessageLookupByLibrary.simpleMessage("Radius festlegen"),
@@ -1368,16 +1385,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Teile jetzt ein Album"),
"shareLink": MessageLookupByLibrary.simpleMessage("Link teilen"),
"shareMyVerificationID": m49,
"shareMyVerificationID": m50,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Teile mit ausgewählten Personen"),
"shareTextConfirmOthersVerificationID": m50,
"shareTextConfirmOthersVerificationID": m51,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Hol dir Ente, damit wir ganz einfach Fotos und Videos in Originalqualität teilen können\n\nhttps://ente.io"),
"shareTextReferralCode": m51,
"shareTextReferralCode": m52,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Mit Nicht-Ente-Benutzern teilen"),
"shareWithPeopleSectionTitle": m52,
"shareWithPeopleSectionTitle": m53,
"shareYourFirstAlbum":
MessageLookupByLibrary.simpleMessage("Teile dein erstes Album"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1388,7 +1405,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Neue geteilte Fotos"),
"sharedPhotoNotificationsExplanation": MessageLookupByLibrary.simpleMessage(
"Erhalte Benachrichtigungen, wenn jemand ein Foto zu einem gemeinsam genutzten Album hinzufügt, dem du angehörst"),
"sharedWith": m53,
"sharedWith": m54,
"sharedWithMe": MessageLookupByLibrary.simpleMessage("Mit mir geteilt"),
"sharedWithYou":
MessageLookupByLibrary.simpleMessage("Mit dir geteilt"),
@@ -1403,11 +1420,11 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Andere Geräte abmelden"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"Ich stimme den <u-terms>Nutzungsbedingungen</u-terms> und der <u-policy>Datenschutzerklärung</u-policy> zu"),
"singleFileDeleteFromDevice": m54,
"singleFileDeleteFromDevice": m55,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Es wird aus allen Alben gelöscht."),
"singleFileInBothLocalAndRemote": m55,
"singleFileInRemoteOnly": m56,
"singleFileInBothLocalAndRemote": m56,
"singleFileInRemoteOnly": m57,
"skip": MessageLookupByLibrary.simpleMessage("Überspringen"),
"social": MessageLookupByLibrary.simpleMessage("Social Media"),
"someItemsAreInBothEnteAndYourDevice":
@@ -1453,13 +1470,13 @@ class MessageLookup extends MessageLookupByLibrary {
"storage": MessageLookupByLibrary.simpleMessage("Speicherplatz"),
"storageBreakupFamily": MessageLookupByLibrary.simpleMessage("Familie"),
"storageBreakupYou": MessageLookupByLibrary.simpleMessage("Sie"),
"storageInGB": m57,
"storageInGB": m58,
"storageLimitExceeded": MessageLookupByLibrary.simpleMessage(
"Speichergrenze überschritten"),
"storageUsageInfo": m58,
"storageUsageInfo": m59,
"strongStrength": MessageLookupByLibrary.simpleMessage("Stark"),
"subAlreadyLinkedErrMessage": m59,
"subWillBeCancelledOn": m60,
"subAlreadyLinkedErrMessage": m60,
"subWillBeCancelledOn": m61,
"subscribe": MessageLookupByLibrary.simpleMessage("Abonnieren"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Sieht aus, als sei dein Abonnement abgelaufen. Bitte abonniere, um das Teilen zu aktivieren."),
@@ -1476,7 +1493,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Verbesserung vorschlagen"),
"support": MessageLookupByLibrary.simpleMessage("Support"),
"syncProgress": m61,
"syncProgress": m62,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Synchronisierung angehalten"),
"syncing": MessageLookupByLibrary.simpleMessage("Synchronisiere …"),
@@ -1485,6 +1502,8 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("zum Kopieren antippen"),
"tapToEnterCode": MessageLookupByLibrary.simpleMessage(
"Antippen, um den Code einzugeben"),
"tapToUnlock":
MessageLookupByLibrary.simpleMessage("Zum Entsperren antippen"),
"tempErrorContactSupportIfPersists": MessageLookupByLibrary.simpleMessage(
"Etwas ist schiefgelaufen. Bitte versuche es später noch einmal. Sollte der Fehler weiter bestehen, kontaktiere unser Supportteam."),
"terminate": MessageLookupByLibrary.simpleMessage("Beenden"),
@@ -1505,7 +1524,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Diese Elemente werden von deinem Gerät gelöscht."),
"theyAlsoGetXGb": m62,
"theyAlsoGetXGb": m63,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Sie werden aus allen Alben gelöscht."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@@ -1521,7 +1540,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Diese E-Mail-Adresse wird bereits verwendet"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Dieses Bild hat keine Exif-Daten"),
"thisIsPersonVerificationId": m63,
"thisIsPersonVerificationId": m64,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"Dies ist deine Verifizierungs-ID"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1529,16 +1548,21 @@ class MessageLookup extends MessageLookupByLibrary {
"Dadurch wirst du von folgendem Gerät abgemeldet:"),
"thisWillLogYouOutOfThisDevice": MessageLookupByLibrary.simpleMessage(
"Dadurch wirst du von diesem Gerät abgemeldet!"),
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen":
MessageLookupByLibrary.simpleMessage(
"Um die App-Sperre zu aktivieren, konfigurieren Sie bitte den Gerätepasscode oder die Bildschirmsperre in Ihren Systemeinstellungen."),
"toHideAPhotoOrVideo":
MessageLookupByLibrary.simpleMessage("Foto oder Video verstecken"),
"toResetVerifyEmail": MessageLookupByLibrary.simpleMessage(
"Um dein Passwort zurückzusetzen, verifiziere bitte zuerst deine E-Mail Adresse."),
"todaysLogs":
MessageLookupByLibrary.simpleMessage("Heutiges Protokoll"),
"tooManyIncorrectAttempts": MessageLookupByLibrary.simpleMessage(
"Zu viele fehlerhafte Versuche"),
"total": MessageLookupByLibrary.simpleMessage("Gesamt"),
"totalSize": MessageLookupByLibrary.simpleMessage("Gesamtgröße"),
"trash": MessageLookupByLibrary.simpleMessage("Papierkorb"),
"trashDaysLeft": m64,
"trashDaysLeft": m65,
"trim": MessageLookupByLibrary.simpleMessage("Schneiden"),
"tryAgain": MessageLookupByLibrary.simpleMessage("Erneut versuchen"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
@@ -1585,6 +1609,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Bis zu 50% Rabatt bis zum 4. Dezember."),
"usableReferralStorageInfo": MessageLookupByLibrary.simpleMessage(
"Der verwendbare Speicherplatz ist von deinem aktuellen Abonnement eingeschränkt. Überschüssiger, beanspruchter Speicherplatz wird automatisch verwendbar werden, wenn du ein höheres Abonnement buchst."),
"useAsCover":
MessageLookupByLibrary.simpleMessage("Als Titelbild festlegen"),
"usePublicLinksForPeopleNotOnEnte": MessageLookupByLibrary.simpleMessage(
"Verwenden Sie öffentliche Links für Personen, die kein Ente-Konto haben"),
"useRecoveryKey": MessageLookupByLibrary.simpleMessage(
@@ -1593,7 +1619,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Ausgewähltes Foto verwenden"),
"usedSpace":
MessageLookupByLibrary.simpleMessage("Belegter Speicherplatz"),
"validTill": m65,
"validTill": m66,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Verifizierung fehlgeschlagen, bitte versuchen Sie es erneut"),
@@ -1602,7 +1628,7 @@ class MessageLookup extends MessageLookupByLibrary {
"verify": MessageLookupByLibrary.simpleMessage("Überprüfen"),
"verifyEmail":
MessageLookupByLibrary.simpleMessage("E-Mail-Adresse verifizieren"),
"verifyEmailID": m66,
"verifyEmailID": m67,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Überprüfen"),
"verifyPasskey":
MessageLookupByLibrary.simpleMessage("Passkey verifizieren"),
@@ -1638,13 +1664,13 @@ class MessageLookup extends MessageLookupByLibrary {
"weDontSupportEditingPhotosAndAlbumsThatYouDont":
MessageLookupByLibrary.simpleMessage(
"Wir unterstützen keine Bearbeitung von Fotos und Alben, die du noch nicht besitzt"),
"weHaveSendEmailTo": m67,
"weHaveSendEmailTo": m68,
"weakStrength": MessageLookupByLibrary.simpleMessage("Schwach"),
"welcomeBack":
MessageLookupByLibrary.simpleMessage("Willkommen zurück!"),
"whatsNew": MessageLookupByLibrary.simpleMessage("Neue Funktionen"),
"yearly": MessageLookupByLibrary.simpleMessage("Jährlich"),
"yearsAgo": m68,
"yearsAgo": m69,
"yes": MessageLookupByLibrary.simpleMessage("Ja"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Ja, kündigen"),
"yesConvertToViewer": MessageLookupByLibrary.simpleMessage(
@@ -1674,7 +1700,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Du kannst nicht mit dir selbst teilen"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"Du hast keine archivierten Elemente."),
"youHaveSuccessfullyFreedUp": m69,
"youHaveSuccessfullyFreedUp": m70,
"yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
"Dein Benutzerkonto wurde gelöscht"),
"yourMap": MessageLookupByLibrary.simpleMessage("Deine Karte"),

View File

@@ -125,94 +125,94 @@ class MessageLookup extends MessageLookupByLibrary {
static String m36(albumName) => "Moved successfully to ${albumName}";
static String m70(name) => "Not ${name}?";
static String m37(name) => "Not ${name}?";
static String m37(passwordStrengthValue) =>
static String m38(passwordStrengthValue) =>
"Password strength: ${passwordStrengthValue}";
static String m38(providerName) =>
static String m39(providerName) =>
"Please talk to ${providerName} support if you were charged";
static String m39(endDate) =>
static String m40(endDate) =>
"Free trial valid till ${endDate}.\nYou can choose a paid plan afterwards.";
static String m40(toEmail) => "Please email us at ${toEmail}";
static String m41(toEmail) => "Please email us at ${toEmail}";
static String m41(toEmail) => "Please send the logs to \n${toEmail}";
static String m42(toEmail) => "Please send the logs to \n${toEmail}";
static String m42(storeName) => "Rate us on ${storeName}";
static String m43(storeName) => "Rate us on ${storeName}";
static String m43(storageInGB) =>
static String m44(storageInGB) =>
"3. Both of you get ${storageInGB} GB* free";
static String m44(userEmail) =>
static String m45(userEmail) =>
"${userEmail} will be removed from this shared album\n\nAny photos added by them will also be removed from the album";
static String m45(endDate) => "Subscription renews on ${endDate}";
static String m46(endDate) => "Subscription renews on ${endDate}";
static String m46(count) =>
static String m47(count) =>
"${Intl.plural(count, one: '${count} result found', other: '${count} results found')}";
static String m47(count) => "${count} selected";
static String m48(count) => "${count} selected";
static String m48(count, yourCount) =>
static String m49(count, yourCount) =>
"${count} selected (${yourCount} yours)";
static String m49(verificationID) =>
static String m50(verificationID) =>
"Here\'s my verification ID: ${verificationID} for ente.io.";
static String m50(verificationID) =>
static String m51(verificationID) =>
"Hey, can you confirm that this is your ente.io verification ID: ${verificationID}";
static String m51(referralCode, referralStorageInGB) =>
static String m52(referralCode, referralStorageInGB) =>
"Ente referral code: ${referralCode} \n\nApply it in Settings → General → Referrals to get ${referralStorageInGB} GB free after you signup for a paid plan\n\nhttps://ente.io";
static String m52(numberOfPeople) =>
static String m53(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Share with specific people', one: 'Shared with 1 person', other: 'Shared with ${numberOfPeople} people')}";
static String m53(emailIDs) => "Shared with ${emailIDs}";
static String m54(fileType) =>
"This ${fileType} will be deleted from your device.";
static String m54(emailIDs) => "Shared with ${emailIDs}";
static String m55(fileType) =>
"This ${fileType} will be deleted from your device.";
static String m56(fileType) =>
"This ${fileType} is in both Ente and your device.";
static String m56(fileType) => "This ${fileType} will be deleted from Ente.";
static String m57(fileType) => "This ${fileType} will be deleted from Ente.";
static String m57(storageAmountInGB) => "${storageAmountInGB} GB";
static String m58(storageAmountInGB) => "${storageAmountInGB} GB";
static String m58(
static String m59(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} of ${totalAmount} ${totalStorageUnit} used";
static String m59(id) =>
static String m60(id) =>
"Your ${id} is already linked to another Ente account.\nIf you would like to use your ${id} with this account, please contact our support\'\'";
static String m60(endDate) =>
static String m61(endDate) =>
"Your subscription will be cancelled on ${endDate}";
static String m61(completed, total) =>
static String m62(completed, total) =>
"${completed}/${total} memories preserved";
static String m62(storageAmountInGB) =>
static String m63(storageAmountInGB) =>
"They also get ${storageAmountInGB} GB";
static String m63(email) => "This is ${email}\'s Verification ID";
static String m64(email) => "This is ${email}\'s Verification ID";
static String m64(count) =>
static String m65(count) =>
"${Intl.plural(count, zero: '', one: '1 day', other: '${count} days')}";
static String m65(endDate) => "Valid till ${endDate}";
static String m66(endDate) => "Valid till ${endDate}";
static String m66(email) => "Verify ${email}";
static String m67(email) => "Verify ${email}";
static String m67(email) => "We have sent a mail to <green>${email}</green>";
static String m68(email) => "We have sent a mail to <green>${email}</green>";
static String m68(count) =>
static String m69(count) =>
"${Intl.plural(count, one: '${count} year ago', other: '${count} years ago')}";
static String m69(storageSaved) =>
static String m70(storageSaved) =>
"You have successfully freed up ${storageSaved}!";
final messages = _notInlinedMessages(_notInlinedMessages);
@@ -300,6 +300,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Android, iOS, Web, Desktop"),
"androidSignInTitle":
MessageLookupByLibrary.simpleMessage("Authentication required"),
"appLock": MessageLookupByLibrary.simpleMessage("App lock"),
"appVersion": m7,
"appleId": MessageLookupByLibrary.simpleMessage("Apple ID"),
"apply": MessageLookupByLibrary.simpleMessage("Apply"),
@@ -596,6 +597,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Enter the code"),
"deviceFilesAutoUploading": MessageLookupByLibrary.simpleMessage(
"Files added to this device album will automatically get uploaded to Ente."),
"deviceLock": MessageLookupByLibrary.simpleMessage("Device lock"),
"deviceLockExplanation": MessageLookupByLibrary.simpleMessage(
"Disable the device screen lock when Ente is in the foreground and there is a backup in progress. This is normally not needed, but may help big uploads and initial imports of large libraries complete faster."),
"deviceNotFound":
@@ -685,6 +687,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Enter a password we can use to encrypt your data"),
"enterPersonName":
MessageLookupByLibrary.simpleMessage("Enter person name"),
"enterPin": MessageLookupByLibrary.simpleMessage("Enter PIN"),
"enterReferralCode":
MessageLookupByLibrary.simpleMessage("Enter referral code"),
"enterThe6digitCodeFromnyourAuthenticatorApp":
@@ -973,6 +976,7 @@ class MessageLookup extends MessageLookupByLibrary {
"newAlbum": MessageLookupByLibrary.simpleMessage("New album"),
"newToEnte": MessageLookupByLibrary.simpleMessage("New to Ente"),
"newest": MessageLookupByLibrary.simpleMessage("Newest"),
"next": MessageLookupByLibrary.simpleMessage("Next"),
"no": MessageLookupByLibrary.simpleMessage("No"),
"noAlbumsSharedByYouYet":
MessageLookupByLibrary.simpleMessage("No albums shared by you yet"),
@@ -1001,7 +1005,9 @@ class MessageLookup extends MessageLookupByLibrary {
"noResults": MessageLookupByLibrary.simpleMessage("No results"),
"noResultsFound":
MessageLookupByLibrary.simpleMessage("No results found"),
"notPersonLabel": m70,
"noSystemLockFound":
MessageLookupByLibrary.simpleMessage("No system lock found"),
"notPersonLabel": m37,
"nothingSharedWithYouYet":
MessageLookupByLibrary.simpleMessage("Nothing shared with you yet"),
"nothingToSeeHere":
@@ -1037,7 +1043,7 @@ class MessageLookup extends MessageLookupByLibrary {
"passwordChangedSuccessfully": MessageLookupByLibrary.simpleMessage(
"Password changed successfully"),
"passwordLock": MessageLookupByLibrary.simpleMessage("Password lock"),
"passwordStrength": m37,
"passwordStrength": m38,
"passwordWarning": MessageLookupByLibrary.simpleMessage(
"We don\'t store this password, so if you forget, <underline>we cannot decrypt your data</underline>"),
"paymentDetails":
@@ -1045,7 +1051,7 @@ class MessageLookup extends MessageLookupByLibrary {
"paymentFailed": MessageLookupByLibrary.simpleMessage("Payment failed"),
"paymentFailedMessage": MessageLookupByLibrary.simpleMessage(
"Unfortunately your payment failed. Please contact support and we\'ll help you out!"),
"paymentFailedTalkToProvider": m38,
"paymentFailedTalkToProvider": m39,
"pendingItems": MessageLookupByLibrary.simpleMessage("Pending items"),
"pendingSync": MessageLookupByLibrary.simpleMessage("Pending sync"),
"people": MessageLookupByLibrary.simpleMessage("People"),
@@ -1069,8 +1075,9 @@ class MessageLookup extends MessageLookupByLibrary {
"pickCenterPoint":
MessageLookupByLibrary.simpleMessage("Pick center point"),
"pinAlbum": MessageLookupByLibrary.simpleMessage("Pin album"),
"pinLock": MessageLookupByLibrary.simpleMessage("PIN lock"),
"playOnTv": MessageLookupByLibrary.simpleMessage("Play album on TV"),
"playStoreFreeTrialValidTill": m39,
"playStoreFreeTrialValidTill": m40,
"playstoreSubscription":
MessageLookupByLibrary.simpleMessage("PlayStore subscription"),
"pleaseCheckYourInternetConnectionAndTryAgain":
@@ -1082,12 +1089,12 @@ class MessageLookup extends MessageLookupByLibrary {
"pleaseContactSupportIfTheProblemPersists":
MessageLookupByLibrary.simpleMessage(
"Please contact support if the problem persists"),
"pleaseEmailUsAt": m40,
"pleaseEmailUsAt": m41,
"pleaseGrantPermissions":
MessageLookupByLibrary.simpleMessage("Please grant permissions"),
"pleaseLoginAgain":
MessageLookupByLibrary.simpleMessage("Please login again"),
"pleaseSendTheLogsTo": m41,
"pleaseSendTheLogsTo": m42,
"pleaseTryAgain":
MessageLookupByLibrary.simpleMessage("Please try again"),
"pleaseVerifyTheCodeYouHaveEntered":
@@ -1122,7 +1129,7 @@ class MessageLookup extends MessageLookupByLibrary {
"raiseTicket": MessageLookupByLibrary.simpleMessage("Raise ticket"),
"rateTheApp": MessageLookupByLibrary.simpleMessage("Rate the app"),
"rateUs": MessageLookupByLibrary.simpleMessage("Rate us"),
"rateUsOnStore": m42,
"rateUsOnStore": m43,
"recover": MessageLookupByLibrary.simpleMessage("Recover"),
"recoverAccount":
MessageLookupByLibrary.simpleMessage("Recover account"),
@@ -1147,13 +1154,16 @@ class MessageLookup extends MessageLookupByLibrary {
"recreatePasswordTitle":
MessageLookupByLibrary.simpleMessage("Recreate password"),
"reddit": MessageLookupByLibrary.simpleMessage("Reddit"),
"reenterPassword":
MessageLookupByLibrary.simpleMessage("Re-enter password"),
"reenterPin": MessageLookupByLibrary.simpleMessage("Re-enter PIN"),
"referFriendsAnd2xYourPlan": MessageLookupByLibrary.simpleMessage(
"Refer friends and 2x your plan"),
"referralStep1": MessageLookupByLibrary.simpleMessage(
"1. Give this code to your friends"),
"referralStep2": MessageLookupByLibrary.simpleMessage(
"2. They sign up for a paid plan"),
"referralStep3": m43,
"referralStep3": m44,
"referrals": MessageLookupByLibrary.simpleMessage("Referrals"),
"referralsAreCurrentlyPaused": MessageLookupByLibrary.simpleMessage(
"Referrals are currently paused"),
@@ -1179,7 +1189,7 @@ class MessageLookup extends MessageLookupByLibrary {
"removeLink": MessageLookupByLibrary.simpleMessage("Remove link"),
"removeParticipant":
MessageLookupByLibrary.simpleMessage("Remove participant"),
"removeParticipantBody": m44,
"removeParticipantBody": m45,
"removePersonLabel":
MessageLookupByLibrary.simpleMessage("Remove person label"),
"removePublicLink":
@@ -1195,7 +1205,7 @@ class MessageLookup extends MessageLookupByLibrary {
"renameFile": MessageLookupByLibrary.simpleMessage("Rename file"),
"renewSubscription":
MessageLookupByLibrary.simpleMessage("Renew subscription"),
"renewsOn": m45,
"renewsOn": m46,
"reportABug": MessageLookupByLibrary.simpleMessage("Report a bug"),
"reportBug": MessageLookupByLibrary.simpleMessage("Report bug"),
"resendEmail": MessageLookupByLibrary.simpleMessage("Resend email"),
@@ -1261,7 +1271,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Group photos that are taken within some radius of a photo"),
"searchPeopleEmptySection": MessageLookupByLibrary.simpleMessage(
"Invite people, and you\'ll see all photos shared by them here"),
"searchResultCount": m46,
"searchResultCount": m47,
"security": MessageLookupByLibrary.simpleMessage("Security"),
"selectALocation":
MessageLookupByLibrary.simpleMessage("Select a location"),
@@ -1288,8 +1298,8 @@ class MessageLookup extends MessageLookupByLibrary {
"selectedItemsWillBeDeletedFromAllAlbumsAndMoved":
MessageLookupByLibrary.simpleMessage(
"Selected items will be deleted from all albums and moved to trash."),
"selectedPhotos": m47,
"selectedPhotosWithYours": m48,
"selectedPhotos": m48,
"selectedPhotosWithYours": m49,
"send": MessageLookupByLibrary.simpleMessage("Send"),
"sendEmail": MessageLookupByLibrary.simpleMessage("Send email"),
"sendInvite": MessageLookupByLibrary.simpleMessage("Send invite"),
@@ -1302,6 +1312,9 @@ class MessageLookup extends MessageLookupByLibrary {
"setAs": MessageLookupByLibrary.simpleMessage("Set as"),
"setCover": MessageLookupByLibrary.simpleMessage("Set cover"),
"setLabel": MessageLookupByLibrary.simpleMessage("Set"),
"setNewPassword":
MessageLookupByLibrary.simpleMessage("Set new password"),
"setNewPin": MessageLookupByLibrary.simpleMessage("Set new PIN"),
"setPasswordTitle":
MessageLookupByLibrary.simpleMessage("Set password"),
"setRadius": MessageLookupByLibrary.simpleMessage("Set radius"),
@@ -1313,16 +1326,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Share an album now"),
"shareLink": MessageLookupByLibrary.simpleMessage("Share link"),
"shareMyVerificationID": m49,
"shareMyVerificationID": m50,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Share only with the people you want"),
"shareTextConfirmOthersVerificationID": m50,
"shareTextConfirmOthersVerificationID": m51,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Download Ente so we can easily share original quality photos and videos\n\nhttps://ente.io"),
"shareTextReferralCode": m51,
"shareTextReferralCode": m52,
"shareWithNonenteUsers":
MessageLookupByLibrary.simpleMessage("Share with non-Ente users"),
"shareWithPeopleSectionTitle": m52,
"shareWithPeopleSectionTitle": m53,
"shareYourFirstAlbum":
MessageLookupByLibrary.simpleMessage("Share your first album"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1333,7 +1346,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("New shared photos"),
"sharedPhotoNotificationsExplanation": MessageLookupByLibrary.simpleMessage(
"Receive notifications when someone adds a photo to a shared album that you\'re a part of"),
"sharedWith": m53,
"sharedWith": m54,
"sharedWithMe": MessageLookupByLibrary.simpleMessage("Shared with me"),
"sharedWithYou":
MessageLookupByLibrary.simpleMessage("Shared with you"),
@@ -1347,11 +1360,11 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Sign out other devices"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"I agree to the <u-terms>terms of service</u-terms> and <u-policy>privacy policy</u-policy>"),
"singleFileDeleteFromDevice": m54,
"singleFileDeleteFromDevice": m55,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"It will be deleted from all albums."),
"singleFileInBothLocalAndRemote": m55,
"singleFileInRemoteOnly": m56,
"singleFileInBothLocalAndRemote": m56,
"singleFileInRemoteOnly": m57,
"skip": MessageLookupByLibrary.simpleMessage("Skip"),
"social": MessageLookupByLibrary.simpleMessage("Social"),
"someItemsAreInBothEnteAndYourDevice":
@@ -1393,13 +1406,13 @@ class MessageLookup extends MessageLookupByLibrary {
"storage": MessageLookupByLibrary.simpleMessage("Storage"),
"storageBreakupFamily": MessageLookupByLibrary.simpleMessage("Family"),
"storageBreakupYou": MessageLookupByLibrary.simpleMessage("You"),
"storageInGB": m57,
"storageInGB": m58,
"storageLimitExceeded":
MessageLookupByLibrary.simpleMessage("Storage limit exceeded"),
"storageUsageInfo": m58,
"storageUsageInfo": m59,
"strongStrength": MessageLookupByLibrary.simpleMessage("Strong"),
"subAlreadyLinkedErrMessage": m59,
"subWillBeCancelledOn": m60,
"subAlreadyLinkedErrMessage": m60,
"subWillBeCancelledOn": m61,
"subscribe": MessageLookupByLibrary.simpleMessage("Subscribe"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Looks like your subscription has expired. Please subscribe to enable sharing."),
@@ -1416,13 +1429,14 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Suggest features"),
"support": MessageLookupByLibrary.simpleMessage("Support"),
"syncProgress": m61,
"syncProgress": m62,
"syncStopped": MessageLookupByLibrary.simpleMessage("Sync stopped"),
"syncing": MessageLookupByLibrary.simpleMessage("Syncing..."),
"systemTheme": MessageLookupByLibrary.simpleMessage("System"),
"tapToCopy": MessageLookupByLibrary.simpleMessage("tap to copy"),
"tapToEnterCode":
MessageLookupByLibrary.simpleMessage("Tap to enter code"),
"tapToUnlock": MessageLookupByLibrary.simpleMessage("Tap to unlock"),
"tempErrorContactSupportIfPersists": MessageLookupByLibrary.simpleMessage(
"It looks like something went wrong. Please retry after some time. If the error persists, please contact our support team."),
"terminate": MessageLookupByLibrary.simpleMessage("Terminate"),
@@ -1442,7 +1456,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"These items will be deleted from your device."),
"theyAlsoGetXGb": m62,
"theyAlsoGetXGb": m63,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"They will be deleted from all albums."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@@ -1458,7 +1472,7 @@ class MessageLookup extends MessageLookupByLibrary {
"This email is already in use"),
"thisImageHasNoExifData":
MessageLookupByLibrary.simpleMessage("This image has no exif data"),
"thisIsPersonVerificationId": m63,
"thisIsPersonVerificationId": m64,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"This is your Verification ID"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1466,15 +1480,20 @@ class MessageLookup extends MessageLookupByLibrary {
"This will log you out of the following device:"),
"thisWillLogYouOutOfThisDevice": MessageLookupByLibrary.simpleMessage(
"This will log you out of this device!"),
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen":
MessageLookupByLibrary.simpleMessage(
"To enable app lock, please setup device passcode or screen lock in your system settings."),
"toHideAPhotoOrVideo":
MessageLookupByLibrary.simpleMessage("To hide a photo or video"),
"toResetVerifyEmail": MessageLookupByLibrary.simpleMessage(
"To reset your password, please verify your email first."),
"todaysLogs": MessageLookupByLibrary.simpleMessage("Today\'s logs"),
"tooManyIncorrectAttempts":
MessageLookupByLibrary.simpleMessage("Too many incorrect attempts"),
"total": MessageLookupByLibrary.simpleMessage("total"),
"totalSize": MessageLookupByLibrary.simpleMessage("Total size"),
"trash": MessageLookupByLibrary.simpleMessage("Trash"),
"trashDaysLeft": m64,
"trashDaysLeft": m65,
"trim": MessageLookupByLibrary.simpleMessage("Trim"),
"tryAgain": MessageLookupByLibrary.simpleMessage("Try again"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
@@ -1528,7 +1547,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Use selected photo"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Used space"),
"validTill": m65,
"validTill": m66,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Verification failed, please try again"),
@@ -1536,7 +1555,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Verification ID"),
"verify": MessageLookupByLibrary.simpleMessage("Verify"),
"verifyEmail": MessageLookupByLibrary.simpleMessage("Verify email"),
"verifyEmailID": m66,
"verifyEmailID": m67,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Verify"),
"verifyPasskey": MessageLookupByLibrary.simpleMessage("Verify passkey"),
"verifyPassword":
@@ -1570,12 +1589,12 @@ class MessageLookup extends MessageLookupByLibrary {
"weDontSupportEditingPhotosAndAlbumsThatYouDont":
MessageLookupByLibrary.simpleMessage(
"We don\'t support editing photos and albums that you don\'t own yet"),
"weHaveSendEmailTo": m67,
"weHaveSendEmailTo": m68,
"weakStrength": MessageLookupByLibrary.simpleMessage("Weak"),
"welcomeBack": MessageLookupByLibrary.simpleMessage("Welcome back!"),
"whatsNew": MessageLookupByLibrary.simpleMessage("What\'s new"),
"yearly": MessageLookupByLibrary.simpleMessage("Yearly"),
"yearsAgo": m68,
"yearsAgo": m69,
"yes": MessageLookupByLibrary.simpleMessage("Yes"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Yes, cancel"),
"yesConvertToViewer":
@@ -1605,7 +1624,7 @@ class MessageLookup extends MessageLookupByLibrary {
"You cannot share with yourself"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"You don\'t have any archived items."),
"youHaveSuccessfullyFreedUp": m69,
"youHaveSuccessfullyFreedUp": m70,
"yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
"Your account has been deleted"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map"),

View File

@@ -129,93 +129,93 @@ class MessageLookup extends MessageLookupByLibrary {
static String m36(albumName) => "Movido exitosamente a ${albumName}";
static String m37(passwordStrengthValue) =>
static String m38(passwordStrengthValue) =>
"Seguridad de la contraseña : ${passwordStrengthValue}";
static String m38(providerName) =>
static String m39(providerName) =>
"Por favor, habla con el soporte de ${providerName} si se te cobró";
static String m39(endDate) =>
static String m40(endDate) =>
"Prueba gratuita válida hasta ${endDate}.\nPuedes elegir un plan de pago después.";
static String m40(toEmail) =>
static String m41(toEmail) =>
"Por favor, envíanos un correo electrónico a ${toEmail}";
static String m41(toEmail) => "Por favor, envía los registros a ${toEmail}";
static String m42(toEmail) => "Por favor, envía los registros a ${toEmail}";
static String m42(storeName) => "Califícanos en ${storeName}";
static String m43(storeName) => "Califícanos en ${storeName}";
static String m43(storageInGB) =>
static String m44(storageInGB) =>
"3. Ambos obtienen ${storageInGB} GB* gratis";
static String m44(userEmail) =>
static String m45(userEmail) =>
"${userEmail} será eliminado de este álbum compartido\n\nCualquier foto añadida por ellos también será eliminada del álbum";
static String m45(endDate) => "La suscripción se renueva el ${endDate}";
static String m46(endDate) => "La suscripción se renueva el ${endDate}";
static String m46(count) =>
static String m47(count) =>
"${Intl.plural(count, one: '${count} resultado encontrado', other: '${count} resultados encontrados')}";
static String m47(count) => "${count} seleccionados";
static String m48(count) => "${count} seleccionados";
static String m48(count, yourCount) =>
static String m49(count, yourCount) =>
"${count} seleccionados (${yourCount} tuyos)";
static String m49(verificationID) =>
static String m50(verificationID) =>
"Aquí está mi ID de verificación: ${verificationID} para ente.io.";
static String m50(verificationID) =>
static String m51(verificationID) =>
"Hola, ¿puedes confirmar que esta es tu ID de verificación ente.io: ${verificationID}?";
static String m51(referralCode, referralStorageInGB) =>
static String m52(referralCode, referralStorageInGB) =>
"Código de referido de Ente: ${referralCode} \n\nAñádelo en Ajustes → General → Referidos para obtener ${referralStorageInGB} GB gratis tras comprar un plan de pago.\n\nhttps://ente.io";
static String m52(numberOfPeople) =>
static String m53(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Compartir con personas específicas', one: 'Compartido con 1 persona', other: 'Compartido con ${numberOfPeople} personas')}";
static String m53(emailIDs) => "Compartido con ${emailIDs}";
static String m54(fileType) =>
"Este ${fileType} se eliminará de tu dispositivo.";
static String m54(emailIDs) => "Compartido con ${emailIDs}";
static String m55(fileType) =>
"Este ${fileType} se eliminará de tu dispositivo.";
static String m56(fileType) =>
"Este ${fileType} está tanto en Ente como en tu dispositivo.";
static String m56(fileType) => "Este ${fileType} será eliminado de Ente.";
static String m57(fileType) => "Este ${fileType} será eliminado de Ente.";
static String m57(storageAmountInGB) => "${storageAmountInGB} GB";
static String m58(storageAmountInGB) => "${storageAmountInGB} GB";
static String m58(
static String m59(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} de ${totalAmount} ${totalStorageUnit} usados";
static String m59(id) =>
static String m60(id) =>
"Tu ${id} ya está vinculada a otra cuenta de Ente.\nSi deseas utilizar tu ${id} con esta cuenta, ponte en contacto con nuestro servicio de asistencia\'\'";
static String m60(endDate) => "Tu suscripción se cancelará el ${endDate}";
static String m61(endDate) => "Tu suscripción se cancelará el ${endDate}";
static String m61(completed, total) =>
static String m62(completed, total) =>
"${completed}/${total} recuerdos conservados";
static String m62(storageAmountInGB) =>
static String m63(storageAmountInGB) =>
"También obtienen ${storageAmountInGB} GB";
static String m63(email) => "Este es el ID de verificación de ${email}";
static String m64(email) => "Este es el ID de verificación de ${email}";
static String m64(count) =>
static String m65(count) =>
"${Intl.plural(count, zero: '', one: '1 día', other: '${count} días')}";
static String m65(endDate) => "Válido hasta ${endDate}";
static String m66(endDate) => "Válido hasta ${endDate}";
static String m66(email) => "Verificar ${email}";
static String m67(email) => "Verificar ${email}";
static String m67(email) =>
static String m68(email) =>
"Hemos enviado un correo a <green>${email}</green>";
static String m68(count) =>
static String m69(count) =>
"${Intl.plural(count, one: '${count} año atrás', other: '${count} años atrás')}";
static String m69(storageSaved) => "¡Has liberado ${storageSaved} con éxito!";
static String m70(storageSaved) => "¡Has liberado ${storageSaved} con éxito!";
final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
@@ -310,6 +310,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Android, iOS, Web, Computadora"),
"androidSignInTitle":
MessageLookupByLibrary.simpleMessage("Autentificación requerida"),
"appLock": MessageLookupByLibrary.simpleMessage("App lock"),
"appVersion": m7,
"appleId": MessageLookupByLibrary.simpleMessage("ID de Apple"),
"apply": MessageLookupByLibrary.simpleMessage("Aplicar"),
@@ -616,6 +617,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Introduce el código"),
"deviceFilesAutoUploading": MessageLookupByLibrary.simpleMessage(
"Los archivos añadidos a este álbum de dispositivo se subirán automáticamente a Ente."),
"deviceLock": MessageLookupByLibrary.simpleMessage("Device lock"),
"deviceLockExplanation": MessageLookupByLibrary.simpleMessage(
"Deshabilita el bloqueo de pantalla del dispositivo cuando Ente está en primer plano y haya una copia de seguridad en curso. Normalmente esto no es necesario, pero puede ayudar a que las grandes cargas y las importaciones iniciales de grandes bibliotecas se completen más rápido."),
"deviceNotFound":
@@ -713,6 +715,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Introduce una contraseña que podamos usar para cifrar tus datos"),
"enterPersonName": MessageLookupByLibrary.simpleMessage(
"Ingresar el nombre de una persona"),
"enterPin": MessageLookupByLibrary.simpleMessage("Enter PIN"),
"enterReferralCode": MessageLookupByLibrary.simpleMessage(
"Ingresar código de referencia"),
"enterThe6digitCodeFromnyourAuthenticatorApp":
@@ -1021,6 +1024,7 @@ class MessageLookup extends MessageLookupByLibrary {
"newAlbum": MessageLookupByLibrary.simpleMessage("Nuevo álbum"),
"newToEnte": MessageLookupByLibrary.simpleMessage("Nuevo en Ente"),
"newest": MessageLookupByLibrary.simpleMessage("Más reciente"),
"next": MessageLookupByLibrary.simpleMessage("Next"),
"no": MessageLookupByLibrary.simpleMessage("No"),
"noAlbumsSharedByYouYet": MessageLookupByLibrary.simpleMessage(
"Aún no has compartido ningún álbum"),
@@ -1050,6 +1054,8 @@ class MessageLookup extends MessageLookupByLibrary {
"noResults": MessageLookupByLibrary.simpleMessage("Sin resultados"),
"noResultsFound": MessageLookupByLibrary.simpleMessage(
"No se han encontrado resultados"),
"noSystemLockFound":
MessageLookupByLibrary.simpleMessage("No system lock found"),
"nothingSharedWithYouYet": MessageLookupByLibrary.simpleMessage(
"Aún no hay nada compartido contigo"),
"nothingToSeeHere": MessageLookupByLibrary.simpleMessage(
@@ -1088,7 +1094,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Contraseña cambiada correctamente"),
"passwordLock":
MessageLookupByLibrary.simpleMessage("Bloqueo por contraseña"),
"passwordStrength": m37,
"passwordStrength": m38,
"passwordWarning": MessageLookupByLibrary.simpleMessage(
"No almacenamos esta contraseña, así que si la olvidas, <underline>no podemos descifrar tus datos</underline>"),
"paymentDetails":
@@ -1096,7 +1102,7 @@ class MessageLookup extends MessageLookupByLibrary {
"paymentFailed": MessageLookupByLibrary.simpleMessage("Pago fallido"),
"paymentFailedMessage": MessageLookupByLibrary.simpleMessage(
"Lamentablemente tu pago falló. Por favor, ¡contacta con el soporte técnico y te ayudaremos!"),
"paymentFailedTalkToProvider": m38,
"paymentFailedTalkToProvider": m39,
"pendingItems":
MessageLookupByLibrary.simpleMessage("Elementos pendientes"),
"pendingSync":
@@ -1122,9 +1128,10 @@ class MessageLookup extends MessageLookupByLibrary {
"pickCenterPoint":
MessageLookupByLibrary.simpleMessage("Elegir punto central"),
"pinAlbum": MessageLookupByLibrary.simpleMessage("Fijar álbum"),
"pinLock": MessageLookupByLibrary.simpleMessage("PIN lock"),
"playOnTv":
MessageLookupByLibrary.simpleMessage("Reproducir álbum en TV"),
"playStoreFreeTrialValidTill": m39,
"playStoreFreeTrialValidTill": m40,
"playstoreSubscription":
MessageLookupByLibrary.simpleMessage("Suscripción en la PlayStore"),
"pleaseCheckYourInternetConnectionAndTryAgain":
@@ -1136,12 +1143,12 @@ class MessageLookup extends MessageLookupByLibrary {
"pleaseContactSupportIfTheProblemPersists":
MessageLookupByLibrary.simpleMessage(
"Por favor, contacta a soporte técnico si el problema persiste"),
"pleaseEmailUsAt": m40,
"pleaseEmailUsAt": m41,
"pleaseGrantPermissions":
MessageLookupByLibrary.simpleMessage("Por favor, concede permiso"),
"pleaseLoginAgain": MessageLookupByLibrary.simpleMessage(
"Por favor, vuelve a iniciar sesión"),
"pleaseSendTheLogsTo": m41,
"pleaseSendTheLogsTo": m42,
"pleaseTryAgain": MessageLookupByLibrary.simpleMessage(
"Por favor, inténtalo nuevamente"),
"pleaseVerifyTheCodeYouHaveEntered":
@@ -1178,7 +1185,7 @@ class MessageLookup extends MessageLookupByLibrary {
"rateTheApp":
MessageLookupByLibrary.simpleMessage("Evalúa la aplicación"),
"rateUs": MessageLookupByLibrary.simpleMessage("Califícanos"),
"rateUsOnStore": m42,
"rateUsOnStore": m43,
"recover": MessageLookupByLibrary.simpleMessage("Recuperar"),
"recoverAccount":
MessageLookupByLibrary.simpleMessage("Recuperar cuenta"),
@@ -1204,13 +1211,16 @@ class MessageLookup extends MessageLookupByLibrary {
"recreatePasswordTitle":
MessageLookupByLibrary.simpleMessage("Recrear contraseña"),
"reddit": MessageLookupByLibrary.simpleMessage("Reddit"),
"reenterPassword":
MessageLookupByLibrary.simpleMessage("Re-enter password"),
"reenterPin": MessageLookupByLibrary.simpleMessage("Re-enter PIN"),
"referFriendsAnd2xYourPlan": MessageLookupByLibrary.simpleMessage(
"Refiere a amigos y 2x su plan"),
"referralStep1": MessageLookupByLibrary.simpleMessage(
"1. Dale este código a tus amigos"),
"referralStep2": MessageLookupByLibrary.simpleMessage(
"2. Se inscriben a un plan pagado"),
"referralStep3": m43,
"referralStep3": m44,
"referrals": MessageLookupByLibrary.simpleMessage("Referidos"),
"referralsAreCurrentlyPaused": MessageLookupByLibrary.simpleMessage(
"Las referencias están actualmente en pausa"),
@@ -1237,7 +1247,7 @@ class MessageLookup extends MessageLookupByLibrary {
"removeLink": MessageLookupByLibrary.simpleMessage("Eliminar enlace"),
"removeParticipant":
MessageLookupByLibrary.simpleMessage("Quitar participante"),
"removeParticipantBody": m44,
"removeParticipantBody": m45,
"removePersonLabel": MessageLookupByLibrary.simpleMessage(
"Eliminar etiqueta de persona"),
"removePublicLink":
@@ -1253,7 +1263,7 @@ class MessageLookup extends MessageLookupByLibrary {
"renameFile": MessageLookupByLibrary.simpleMessage("Renombrar archivo"),
"renewSubscription":
MessageLookupByLibrary.simpleMessage("Renovar suscripción"),
"renewsOn": m45,
"renewsOn": m46,
"reportABug": MessageLookupByLibrary.simpleMessage("Reportar un error"),
"reportBug": MessageLookupByLibrary.simpleMessage("Reportar error"),
"resendEmail":
@@ -1324,7 +1334,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Agrupar las fotos que se tomaron cerca de la localización de una foto"),
"searchPeopleEmptySection": MessageLookupByLibrary.simpleMessage(
"Invita a gente y verás todas las fotos compartidas aquí"),
"searchResultCount": m46,
"searchResultCount": m47,
"security": MessageLookupByLibrary.simpleMessage("Seguridad"),
"selectALocation":
MessageLookupByLibrary.simpleMessage("Seleccionar una ubicación"),
@@ -1353,8 +1363,8 @@ class MessageLookup extends MessageLookupByLibrary {
"selectedItemsWillBeDeletedFromAllAlbumsAndMoved":
MessageLookupByLibrary.simpleMessage(
"Los archivos seleccionados serán eliminados de todos los álbumes y movidos a la papelera."),
"selectedPhotos": m47,
"selectedPhotosWithYours": m48,
"selectedPhotos": m48,
"selectedPhotosWithYours": m49,
"send": MessageLookupByLibrary.simpleMessage("Enviar"),
"sendEmail":
MessageLookupByLibrary.simpleMessage("Enviar correo electrónico"),
@@ -1369,6 +1379,9 @@ class MessageLookup extends MessageLookupByLibrary {
"setAs": MessageLookupByLibrary.simpleMessage("Establecer como"),
"setCover": MessageLookupByLibrary.simpleMessage("Definir portada"),
"setLabel": MessageLookupByLibrary.simpleMessage("Establecer"),
"setNewPassword":
MessageLookupByLibrary.simpleMessage("Set new password"),
"setNewPin": MessageLookupByLibrary.simpleMessage("Set new PIN"),
"setPasswordTitle":
MessageLookupByLibrary.simpleMessage("Establecer contraseña"),
"setRadius": MessageLookupByLibrary.simpleMessage("Establecer radio"),
@@ -1382,16 +1395,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Compartir un álbum ahora"),
"shareLink": MessageLookupByLibrary.simpleMessage("Compartir enlace"),
"shareMyVerificationID": m49,
"shareMyVerificationID": m50,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Comparte sólo con la gente que quieres"),
"shareTextConfirmOthersVerificationID": m50,
"shareTextConfirmOthersVerificationID": m51,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Descarga Ente para que podamos compartir fácilmente fotos y videos en calidad original.\n\nhttps://ente.io"),
"shareTextReferralCode": m51,
"shareTextReferralCode": m52,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Compartir con usuarios fuera de Ente"),
"shareWithPeopleSectionTitle": m52,
"shareWithPeopleSectionTitle": m53,
"shareYourFirstAlbum":
MessageLookupByLibrary.simpleMessage("Comparte tu primer álbum"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1403,7 +1416,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Nuevas fotos compartidas"),
"sharedPhotoNotificationsExplanation": MessageLookupByLibrary.simpleMessage(
"Recibir notificaciones cuando alguien agrega una foto a un álbum compartido contigo"),
"sharedWith": m53,
"sharedWith": m54,
"sharedWithMe":
MessageLookupByLibrary.simpleMessage("Compartido conmigo"),
"sharedWithYou":
@@ -1419,11 +1432,11 @@ class MessageLookup extends MessageLookupByLibrary {
"Cerrar la sesión de otros dispositivos"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"Estoy de acuerdo con los <u-terms>términos del servicio</u-terms> y <u-policy> la política de privacidad</u-policy>"),
"singleFileDeleteFromDevice": m54,
"singleFileDeleteFromDevice": m55,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Se borrará de todos los álbumes."),
"singleFileInBothLocalAndRemote": m55,
"singleFileInRemoteOnly": m56,
"singleFileInBothLocalAndRemote": m56,
"singleFileInRemoteOnly": m57,
"skip": MessageLookupByLibrary.simpleMessage("Omitir"),
"social": MessageLookupByLibrary.simpleMessage("Social"),
"someItemsAreInBothEnteAndYourDevice":
@@ -1468,13 +1481,13 @@ class MessageLookup extends MessageLookupByLibrary {
"storage": MessageLookupByLibrary.simpleMessage("Almacenamiento"),
"storageBreakupFamily": MessageLookupByLibrary.simpleMessage("Familia"),
"storageBreakupYou": MessageLookupByLibrary.simpleMessage("Usted"),
"storageInGB": m57,
"storageInGB": m58,
"storageLimitExceeded":
MessageLookupByLibrary.simpleMessage("Límite de datos excedido"),
"storageUsageInfo": m58,
"storageUsageInfo": m59,
"strongStrength": MessageLookupByLibrary.simpleMessage("Segura"),
"subAlreadyLinkedErrMessage": m59,
"subWillBeCancelledOn": m60,
"subAlreadyLinkedErrMessage": m60,
"subWillBeCancelledOn": m61,
"subscribe": MessageLookupByLibrary.simpleMessage("Suscribirse"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Parece que tu suscripción ha caducado. Por favor, suscríbete para habilitar el compartir."),
@@ -1491,7 +1504,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Sugerir una característica"),
"support": MessageLookupByLibrary.simpleMessage("Soporte"),
"syncProgress": m61,
"syncProgress": m62,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Sincronización detenida"),
"syncing": MessageLookupByLibrary.simpleMessage("Sincronizando..."),
@@ -1499,6 +1512,7 @@ class MessageLookup extends MessageLookupByLibrary {
"tapToCopy": MessageLookupByLibrary.simpleMessage("toca para copiar"),
"tapToEnterCode": MessageLookupByLibrary.simpleMessage(
"Toca para introducir el código"),
"tapToUnlock": MessageLookupByLibrary.simpleMessage("Tap to unlock"),
"tempErrorContactSupportIfPersists": MessageLookupByLibrary.simpleMessage(
"Parece que algo salió mal. Por favor, vuelve a intentarlo después de algún tiempo. Si el error persiste, ponte en contacto con nuestro equipo de soporte."),
"terminate": MessageLookupByLibrary.simpleMessage("Terminar"),
@@ -1519,7 +1533,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Estos elementos se eliminarán de tu dispositivo."),
"theyAlsoGetXGb": m62,
"theyAlsoGetXGb": m63,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Se borrarán de todos los álbumes."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@@ -1535,7 +1549,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Este correo electrónico ya está en uso"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Esta imagen no tiene datos exif"),
"thisIsPersonVerificationId": m63,
"thisIsPersonVerificationId": m64,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"Esta es tu ID de verificación"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1543,15 +1557,20 @@ class MessageLookup extends MessageLookupByLibrary {
"Esto cerrará la sesión del siguiente dispositivo:"),
"thisWillLogYouOutOfThisDevice": MessageLookupByLibrary.simpleMessage(
"¡Esto cerrará la sesión de este dispositivo!"),
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen":
MessageLookupByLibrary.simpleMessage(
"To enable app lock, please setup device passcode or screen lock in your system settings."),
"toHideAPhotoOrVideo": MessageLookupByLibrary.simpleMessage(
"Para ocultar una foto o video"),
"toResetVerifyEmail": MessageLookupByLibrary.simpleMessage(
"Para restablecer tu contraseña, por favor verifica tu correo electrónico primero."),
"todaysLogs": MessageLookupByLibrary.simpleMessage("Registros de hoy"),
"tooManyIncorrectAttempts":
MessageLookupByLibrary.simpleMessage("Too many incorrect attempts"),
"total": MessageLookupByLibrary.simpleMessage("total"),
"totalSize": MessageLookupByLibrary.simpleMessage("Tamaño total"),
"trash": MessageLookupByLibrary.simpleMessage("Papelera"),
"trashDaysLeft": m64,
"trashDaysLeft": m65,
"trim": MessageLookupByLibrary.simpleMessage("Recortar"),
"tryAgain": MessageLookupByLibrary.simpleMessage("Inténtalo de nuevo"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
@@ -1606,7 +1625,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Usar foto seleccionada"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Espacio usado"),
"validTill": m65,
"validTill": m66,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Verificación fallida, por favor inténtalo de nuevo"),
@@ -1615,7 +1634,7 @@ class MessageLookup extends MessageLookupByLibrary {
"verify": MessageLookupByLibrary.simpleMessage("Verificar"),
"verifyEmail": MessageLookupByLibrary.simpleMessage(
"Verificar correo electrónico"),
"verifyEmailID": m66,
"verifyEmailID": m67,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Verificar"),
"verifyPasskey":
MessageLookupByLibrary.simpleMessage("Verificar clave de acceso"),
@@ -1652,13 +1671,13 @@ class MessageLookup extends MessageLookupByLibrary {
"weDontSupportEditingPhotosAndAlbumsThatYouDont":
MessageLookupByLibrary.simpleMessage(
"No admitimos la edición de fotos y álbumes que aún no son tuyos"),
"weHaveSendEmailTo": m67,
"weHaveSendEmailTo": m68,
"weakStrength": MessageLookupByLibrary.simpleMessage("Poco segura"),
"welcomeBack":
MessageLookupByLibrary.simpleMessage("¡Bienvenido de nuevo!"),
"whatsNew": MessageLookupByLibrary.simpleMessage("Qué hay de nuevo"),
"yearly": MessageLookupByLibrary.simpleMessage("Anualmente"),
"yearsAgo": m68,
"yearsAgo": m69,
"yes": MessageLookupByLibrary.simpleMessage(""),
"yesCancel": MessageLookupByLibrary.simpleMessage("Sí, cancelar"),
"yesConvertToViewer":
@@ -1688,7 +1707,7 @@ class MessageLookup extends MessageLookupByLibrary {
"No puedes compartir contigo mismo"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"No tienes ningún elemento archivado."),
"youHaveSuccessfullyFreedUp": m69,
"youHaveSuccessfullyFreedUp": m70,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("Tu cuenta ha sido eliminada"),
"yourMap": MessageLookupByLibrary.simpleMessage("Tu mapa"),

View File

@@ -120,92 +120,92 @@ class MessageLookup extends MessageLookupByLibrary {
static String m36(albumName) => "Déplacé avec succès vers ${albumName}";
static String m37(passwordStrengthValue) =>
static String m38(passwordStrengthValue) =>
"Sécurité du mot de passe : ${passwordStrengthValue}";
static String m38(providerName) =>
static String m39(providerName) =>
"Veuillez contacter le support ${providerName} si vous avez été facturé";
static String m39(endDate) =>
static String m40(endDate) =>
"Essai gratuit valable jusqu\'à ${endDate}.\nVous pouvez choisir un plan payant par la suite.";
static String m40(toEmail) => "Merci de nous envoyer un e-mail à ${toEmail}";
static String m41(toEmail) => "Merci de nous envoyer un e-mail à ${toEmail}";
static String m41(toEmail) => "Envoyez les logs à ${toEmail}";
static String m42(toEmail) => "Envoyez les logs à ${toEmail}";
static String m42(storeName) => "Notez-nous sur ${storeName}";
static String m43(storeName) => "Notez-nous sur ${storeName}";
static String m43(storageInGB) =>
static String m44(storageInGB) =>
"3. Vous recevez tous les deux ${storageInGB} GB* gratuits";
static String m44(userEmail) =>
static String m45(userEmail) =>
"${userEmail} sera retiré de cet album partagé\n\nToutes les photos ajoutées par eux seront également retirées de l\'album";
static String m45(endDate) => "Renouvellement le ${endDate}";
static String m46(endDate) => "Renouvellement le ${endDate}";
static String m46(count) =>
static String m47(count) =>
"${Intl.plural(count, one: '${count} résultat trouvé', other: '${count} résultats trouvés')}";
static String m47(count) => "${count} sélectionné(s)";
static String m48(count) => "${count} sélectionné(s)";
static String m48(count, yourCount) =>
static String m49(count, yourCount) =>
"${count} sélectionné(s) (${yourCount} à vous)";
static String m49(verificationID) =>
static String m50(verificationID) =>
"Voici mon ID de vérification : ${verificationID} pour ente.io.";
static String m50(verificationID) =>
static String m51(verificationID) =>
"Hé, pouvez-vous confirmer qu\'il s\'agit de votre ID de vérification ente.io : ${verificationID}";
static String m51(referralCode, referralStorageInGB) =>
static String m52(referralCode, referralStorageInGB) =>
"code de parrainage ente : ${referralCode} \n\nAppliquez le dans Paramètres → Général → Références pour obtenir ${referralStorageInGB} Go gratuitement après votre inscription à un plan payant\n\nhttps://ente.io";
static String m52(numberOfPeople) =>
static String m53(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Partagez avec des personnes spécifiques', one: 'Partagé avec 1 personne', other: 'Partagé avec ${numberOfPeople} des gens')}";
static String m53(emailIDs) => "Partagé avec ${emailIDs}";
static String m54(fileType) =>
"Elle ${fileType} sera supprimée de votre appareil.";
static String m54(emailIDs) => "Partagé avec ${emailIDs}";
static String m55(fileType) =>
"Elle ${fileType} sera supprimée de votre appareil.";
static String m56(fileType) =>
"Cette ${fileType} est à la fois sur ente et sur votre appareil.";
static String m56(fileType) => "Ce ${fileType} sera supprimé de ente.";
static String m57(fileType) => "Ce ${fileType} sera supprimé de ente.";
static String m57(storageAmountInGB) => "${storageAmountInGB} Go";
static String m58(storageAmountInGB) => "${storageAmountInGB} Go";
static String m58(
static String m59(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} sur ${totalAmount} ${totalStorageUnit} utilisé";
static String m59(id) =>
static String m60(id) =>
"Votre ${id} est déjà lié à un autre compte ente.\nSi vous souhaitez utiliser votre ${id} avec ce compte, veuillez contacter notre support";
static String m60(endDate) => "Votre abonnement sera annulé le ${endDate}";
static String m61(endDate) => "Votre abonnement sera annulé le ${endDate}";
static String m61(completed, total) =>
static String m62(completed, total) =>
"${completed}/${total} souvenirs préservés";
static String m62(storageAmountInGB) =>
static String m63(storageAmountInGB) =>
"Ils obtiennent aussi ${storageAmountInGB} Go";
static String m63(email) => "Ceci est l\'ID de vérification de ${email}";
static String m64(email) => "Ceci est l\'ID de vérification de ${email}";
static String m64(count) =>
static String m65(count) =>
"${Intl.plural(count, zero: '0 jour', one: '1 jour', other: '${count} jours')}";
static String m65(endDate) => "Valable jusqu\'au ${endDate}";
static String m66(endDate) => "Valable jusqu\'au ${endDate}";
static String m66(email) => "Vérifier ${email}";
static String m67(email) => "Vérifier ${email}";
static String m67(email) =>
static String m68(email) =>
"Nous avons envoyé un e-mail à <green>${email}</green>";
static String m68(count) =>
static String m69(count) =>
"${Intl.plural(count, one: 'il y a ${count} an', other: 'il y a ${count} ans')}";
static String m69(storageSaved) =>
static String m70(storageSaved) =>
"Vous avez libéré ${storageSaved} avec succès !";
final messages = _notInlinedMessages(_notInlinedMessages);
@@ -298,6 +298,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Android, iOS, Web, Ordinateur"),
"androidSignInTitle":
MessageLookupByLibrary.simpleMessage("Authentification requise"),
"appLock": MessageLookupByLibrary.simpleMessage("App lock"),
"appVersion": m7,
"appleId": MessageLookupByLibrary.simpleMessage("Apple ID"),
"apply": MessageLookupByLibrary.simpleMessage("Appliquer"),
@@ -580,6 +581,7 @@ class MessageLookup extends MessageLookupByLibrary {
"details": MessageLookupByLibrary.simpleMessage("Détails"),
"deviceFilesAutoUploading": MessageLookupByLibrary.simpleMessage(
"Les fichiers ajoutés à cet album seront automatiquement téléchargés sur ente."),
"deviceLock": MessageLookupByLibrary.simpleMessage("Device lock"),
"deviceLockExplanation": MessageLookupByLibrary.simpleMessage(
"Désactiver le verrouillage de l\'écran de l\'appareil lorsque ente est au premier plan et il y a une sauvegarde en cours. Ce n\'est normalement pas nécessaire, mais peut aider les gros téléchargements et les premières importations de grandes bibliothèques plus rapidement."),
"didYouKnow": MessageLookupByLibrary.simpleMessage("Le savais-tu ?"),
@@ -668,6 +670,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Entrez un mot de passe que nous pouvons utiliser pour chiffrer vos données"),
"enterPersonName":
MessageLookupByLibrary.simpleMessage("Enter person name"),
"enterPin": MessageLookupByLibrary.simpleMessage("Enter PIN"),
"enterReferralCode": MessageLookupByLibrary.simpleMessage(
"Entrez le code de parrainage"),
"enterThe6digitCodeFromnyourAuthenticatorApp":
@@ -944,6 +947,7 @@ class MessageLookup extends MessageLookupByLibrary {
"newAlbum": MessageLookupByLibrary.simpleMessage("Nouvel album"),
"newToEnte": MessageLookupByLibrary.simpleMessage("Nouveau sur ente"),
"newest": MessageLookupByLibrary.simpleMessage("Le plus récent"),
"next": MessageLookupByLibrary.simpleMessage("Next"),
"no": MessageLookupByLibrary.simpleMessage("Non"),
"noAlbumsSharedByYouYet": MessageLookupByLibrary.simpleMessage(
"Aucun album que vous avez partagé"),
@@ -969,6 +973,8 @@ class MessageLookup extends MessageLookupByLibrary {
"noResults": MessageLookupByLibrary.simpleMessage("Aucun résultat"),
"noResultsFound":
MessageLookupByLibrary.simpleMessage("Aucun résultat trouvé"),
"noSystemLockFound":
MessageLookupByLibrary.simpleMessage("No system lock found"),
"nothingSharedWithYouYet": MessageLookupByLibrary.simpleMessage(
"Rien n\'a encore été partagé avec vous"),
"nothingToSeeHere": MessageLookupByLibrary.simpleMessage(
@@ -998,14 +1004,14 @@ class MessageLookup extends MessageLookupByLibrary {
"Le mot de passe a été modifié"),
"passwordLock":
MessageLookupByLibrary.simpleMessage("Mot de passe verrou"),
"passwordStrength": m37,
"passwordStrength": m38,
"passwordWarning": MessageLookupByLibrary.simpleMessage(
"Nous ne stockons pas ce mot de passe, donc si vous l\'oubliez, <underline>nous ne pouvons pas déchiffrer vos données</underline>"),
"paymentDetails":
MessageLookupByLibrary.simpleMessage("Détails de paiement"),
"paymentFailed":
MessageLookupByLibrary.simpleMessage("Échec du paiement"),
"paymentFailedTalkToProvider": m38,
"paymentFailedTalkToProvider": m39,
"pendingSync":
MessageLookupByLibrary.simpleMessage("Synchronisation en attente"),
"peopleUsingYourCode": MessageLookupByLibrary.simpleMessage(
@@ -1028,7 +1034,8 @@ class MessageLookup extends MessageLookupByLibrary {
"pickCenterPoint": MessageLookupByLibrary.simpleMessage(
"Sélectionner le point central"),
"pinAlbum": MessageLookupByLibrary.simpleMessage("Épingler l\'album"),
"playStoreFreeTrialValidTill": m39,
"pinLock": MessageLookupByLibrary.simpleMessage("PIN lock"),
"playStoreFreeTrialValidTill": m40,
"playstoreSubscription":
MessageLookupByLibrary.simpleMessage("Abonnement au PlayStore"),
"pleaseContactSupportAndWeWillBeHappyToHelp":
@@ -1037,12 +1044,12 @@ class MessageLookup extends MessageLookupByLibrary {
"pleaseContactSupportIfTheProblemPersists":
MessageLookupByLibrary.simpleMessage(
"Merci de contacter l\'assistance si cette erreur persiste"),
"pleaseEmailUsAt": m40,
"pleaseEmailUsAt": m41,
"pleaseGrantPermissions": MessageLookupByLibrary.simpleMessage(
"Veuillez accorder la permission"),
"pleaseLoginAgain":
MessageLookupByLibrary.simpleMessage("Veuillez vous reconnecter"),
"pleaseSendTheLogsTo": m41,
"pleaseSendTheLogsTo": m42,
"pleaseTryAgain":
MessageLookupByLibrary.simpleMessage("Veuillez réessayer"),
"pleaseVerifyTheCodeYouHaveEntered":
@@ -1078,7 +1085,7 @@ class MessageLookup extends MessageLookupByLibrary {
"rateTheApp":
MessageLookupByLibrary.simpleMessage("Évaluer l\'application"),
"rateUs": MessageLookupByLibrary.simpleMessage("Évaluez-nous"),
"rateUsOnStore": m42,
"rateUsOnStore": m43,
"recover": MessageLookupByLibrary.simpleMessage("Récupérer"),
"recoverAccount":
MessageLookupByLibrary.simpleMessage("Récupérer un compte"),
@@ -1103,13 +1110,16 @@ class MessageLookup extends MessageLookupByLibrary {
"recreatePasswordTitle":
MessageLookupByLibrary.simpleMessage("Recréer le mot de passe"),
"reddit": MessageLookupByLibrary.simpleMessage("Reddit"),
"reenterPassword":
MessageLookupByLibrary.simpleMessage("Re-enter password"),
"reenterPin": MessageLookupByLibrary.simpleMessage("Re-enter PIN"),
"referFriendsAnd2xYourPlan": MessageLookupByLibrary.simpleMessage(
"Parrainez des amis et 2x votre abonnement"),
"referralStep1": MessageLookupByLibrary.simpleMessage(
"1. Donnez ce code à vos amis"),
"referralStep2": MessageLookupByLibrary.simpleMessage(
"2. Ils s\'inscrivent à une offre payante"),
"referralStep3": m43,
"referralStep3": m44,
"referrals": MessageLookupByLibrary.simpleMessage("Parrainages"),
"referralsAreCurrentlyPaused": MessageLookupByLibrary.simpleMessage(
"Les recommandations sont actuellement en pause"),
@@ -1135,7 +1145,7 @@ class MessageLookup extends MessageLookupByLibrary {
"removeLink": MessageLookupByLibrary.simpleMessage("Supprimer le lien"),
"removeParticipant":
MessageLookupByLibrary.simpleMessage("Supprimer le participant"),
"removeParticipantBody": m44,
"removeParticipantBody": m45,
"removePersonLabel":
MessageLookupByLibrary.simpleMessage("Remove person label"),
"removePublicLink":
@@ -1153,7 +1163,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Renommer le fichier"),
"renewSubscription":
MessageLookupByLibrary.simpleMessage("Renouveler labonnement"),
"renewsOn": m45,
"renewsOn": m46,
"reportABug": MessageLookupByLibrary.simpleMessage("Signaler un bug"),
"reportBug": MessageLookupByLibrary.simpleMessage("Signaler un bug"),
"resendEmail":
@@ -1219,7 +1229,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Grouper les photos qui sont prises dans un certain angle d\'une photo"),
"searchPeopleEmptySection": MessageLookupByLibrary.simpleMessage(
"Invitez des gens, et vous verrez ici toutes les photos qu\'ils partagent"),
"searchResultCount": m46,
"searchResultCount": m47,
"security": MessageLookupByLibrary.simpleMessage("Sécurité"),
"selectALocation":
MessageLookupByLibrary.simpleMessage("Select a location"),
@@ -1248,8 +1258,8 @@ class MessageLookup extends MessageLookupByLibrary {
"selectedItemsWillBeDeletedFromAllAlbumsAndMoved":
MessageLookupByLibrary.simpleMessage(
"Les éléments sélectionnés seront supprimés de tous les albums et déplacés dans la corbeille."),
"selectedPhotos": m47,
"selectedPhotosWithYours": m48,
"selectedPhotos": m48,
"selectedPhotosWithYours": m49,
"send": MessageLookupByLibrary.simpleMessage("Envoyer"),
"sendEmail": MessageLookupByLibrary.simpleMessage("Envoyer un e-mail"),
"sendInvite":
@@ -1263,6 +1273,9 @@ class MessageLookup extends MessageLookupByLibrary {
"setCover":
MessageLookupByLibrary.simpleMessage("Définir la couverture"),
"setLabel": MessageLookupByLibrary.simpleMessage("Définir"),
"setNewPassword":
MessageLookupByLibrary.simpleMessage("Set new password"),
"setNewPin": MessageLookupByLibrary.simpleMessage("Set new PIN"),
"setPasswordTitle":
MessageLookupByLibrary.simpleMessage("Définir le mot de passe"),
"setRadius": MessageLookupByLibrary.simpleMessage("Définir le rayon"),
@@ -1275,16 +1288,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow": MessageLookupByLibrary.simpleMessage(
"Partagez un album maintenant"),
"shareLink": MessageLookupByLibrary.simpleMessage("Partager le lien"),
"shareMyVerificationID": m49,
"shareMyVerificationID": m50,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Partager uniquement avec les personnes que vous voulez"),
"shareTextConfirmOthersVerificationID": m50,
"shareTextConfirmOthersVerificationID": m51,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Téléchargez ente pour que nous puissions facilement partager des photos et des vidéos de qualité originale\n\nhttps://ente.io"),
"shareTextReferralCode": m51,
"shareTextReferralCode": m52,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Partager avec des utilisateurs non-ente"),
"shareWithPeopleSectionTitle": m52,
"shareWithPeopleSectionTitle": m53,
"shareYourFirstAlbum": MessageLookupByLibrary.simpleMessage(
"Partagez votre premier album"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1295,7 +1308,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Nouvelles photos partagées"),
"sharedPhotoNotificationsExplanation": MessageLookupByLibrary.simpleMessage(
"Recevoir des notifications quand quelqu\'un ajoute une photo à un album partagé dont vous faites partie"),
"sharedWith": m53,
"sharedWith": m54,
"sharedWithMe":
MessageLookupByLibrary.simpleMessage("Partagés avec moi"),
"sharedWithYou":
@@ -1305,11 +1318,11 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Montrer les souvenirs"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"J\'accepte les <u-terms>conditions d\'utilisation</u-terms> et la <u-policy>politique de confidentialité</u-policy>"),
"singleFileDeleteFromDevice": m54,
"singleFileDeleteFromDevice": m55,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Elle sera supprimée de tous les albums."),
"singleFileInBothLocalAndRemote": m55,
"singleFileInRemoteOnly": m56,
"singleFileInBothLocalAndRemote": m56,
"singleFileInRemoteOnly": m57,
"skip": MessageLookupByLibrary.simpleMessage("Ignorer"),
"social": MessageLookupByLibrary.simpleMessage("Réseaux Sociaux"),
"someItemsAreInBothEnteAndYourDevice":
@@ -1349,14 +1362,14 @@ class MessageLookup extends MessageLookupByLibrary {
"storage": MessageLookupByLibrary.simpleMessage("Stockage"),
"storageBreakupFamily": MessageLookupByLibrary.simpleMessage("Famille"),
"storageBreakupYou": MessageLookupByLibrary.simpleMessage("Vous"),
"storageInGB": m57,
"storageInGB": m58,
"storageLimitExceeded":
MessageLookupByLibrary.simpleMessage("Limite de stockage atteinte"),
"storageUsageInfo": m58,
"storageUsageInfo": m59,
"strongStrength":
MessageLookupByLibrary.simpleMessage("Securité forte"),
"subAlreadyLinkedErrMessage": m59,
"subWillBeCancelledOn": m60,
"subAlreadyLinkedErrMessage": m60,
"subWillBeCancelledOn": m61,
"subscribe": MessageLookupByLibrary.simpleMessage("S\'abonner"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Il semble que votre abonnement ait expiré. Veuillez vous abonner pour activer le partage."),
@@ -1373,7 +1386,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures": MessageLookupByLibrary.simpleMessage(
"Suggérer des fonctionnalités"),
"support": MessageLookupByLibrary.simpleMessage("Support"),
"syncProgress": m61,
"syncProgress": m62,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Synchronisation arrêtée ?"),
"syncing": MessageLookupByLibrary.simpleMessage(
@@ -1382,6 +1395,7 @@ class MessageLookup extends MessageLookupByLibrary {
"tapToCopy": MessageLookupByLibrary.simpleMessage("taper pour copier"),
"tapToEnterCode":
MessageLookupByLibrary.simpleMessage("Appuyez pour entrer le code"),
"tapToUnlock": MessageLookupByLibrary.simpleMessage("Tap to unlock"),
"tempErrorContactSupportIfPersists": MessageLookupByLibrary.simpleMessage(
"Il semble qu\'une erreur s\'est produite. Veuillez réessayer après un certain temps. Si l\'erreur persiste, veuillez contacter notre équipe d\'assistance."),
"terminate": MessageLookupByLibrary.simpleMessage("Se déconnecter"),
@@ -1402,7 +1416,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Ces éléments seront supprimés de votre appareil."),
"theyAlsoGetXGb": m62,
"theyAlsoGetXGb": m63,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Ils seront supprimés de tous les albums."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@@ -1418,7 +1432,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Cette adresse mail est déjà utilisé"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Cette image n\'a pas de données exif"),
"thisIsPersonVerificationId": m63,
"thisIsPersonVerificationId": m64,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"Ceci est votre ID de vérification"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1426,15 +1440,20 @@ class MessageLookup extends MessageLookupByLibrary {
"Cela vous déconnectera de l\'appareil suivant :"),
"thisWillLogYouOutOfThisDevice": MessageLookupByLibrary.simpleMessage(
"Cela vous déconnectera de cet appareil !"),
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen":
MessageLookupByLibrary.simpleMessage(
"To enable app lock, please setup device passcode or screen lock in your system settings."),
"toHideAPhotoOrVideo": MessageLookupByLibrary.simpleMessage(
"Cacher une photo ou une vidéo"),
"toResetVerifyEmail": MessageLookupByLibrary.simpleMessage(
"Pour réinitialiser votre mot de passe, veuillez d\'abord vérifier votre e-mail."),
"todaysLogs": MessageLookupByLibrary.simpleMessage("Journaux du jour"),
"tooManyIncorrectAttempts":
MessageLookupByLibrary.simpleMessage("Too many incorrect attempts"),
"total": MessageLookupByLibrary.simpleMessage("total"),
"totalSize": MessageLookupByLibrary.simpleMessage("Taille totale"),
"trash": MessageLookupByLibrary.simpleMessage("Corbeille"),
"trashDaysLeft": m64,
"trashDaysLeft": m65,
"tryAgain": MessageLookupByLibrary.simpleMessage("Réessayer"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
"Activez la sauvegarde pour télécharger automatiquement les fichiers ajoutés à ce dossier de l\'appareil sur ente."),
@@ -1492,7 +1511,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto": MessageLookupByLibrary.simpleMessage(
"Utiliser la photo sélectionnée"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Mémoire utilisée"),
"validTill": m65,
"validTill": m66,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"La vérification a échouée, veuillez réessayer"),
@@ -1501,7 +1520,7 @@ class MessageLookup extends MessageLookupByLibrary {
"verify": MessageLookupByLibrary.simpleMessage("Vérifier"),
"verifyEmail":
MessageLookupByLibrary.simpleMessage("Vérifier l\'email"),
"verifyEmailID": m66,
"verifyEmailID": m67,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Vérifier"),
"verifyPassword":
MessageLookupByLibrary.simpleMessage("Vérifier le mot de passe"),
@@ -1530,11 +1549,11 @@ class MessageLookup extends MessageLookupByLibrary {
"weDontSupportEditingPhotosAndAlbumsThatYouDont":
MessageLookupByLibrary.simpleMessage(
"Nous ne prenons pas en charge l\'édition des photos et des albums que vous ne possédez pas encore"),
"weHaveSendEmailTo": m67,
"weHaveSendEmailTo": m68,
"weakStrength": MessageLookupByLibrary.simpleMessage("Securité Faible"),
"welcomeBack": MessageLookupByLibrary.simpleMessage("Bienvenue !"),
"yearly": MessageLookupByLibrary.simpleMessage("Annuel"),
"yearsAgo": m68,
"yearsAgo": m69,
"yes": MessageLookupByLibrary.simpleMessage("Oui"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Oui, annuler"),
"yesConvertToViewer": MessageLookupByLibrary.simpleMessage(
@@ -1565,7 +1584,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Vous ne pouvez pas partager avec vous-même"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"Vous n\'avez aucun élément archivé."),
"youHaveSuccessfullyFreedUp": m69,
"youHaveSuccessfullyFreedUp": m70,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("Votre compte a été supprimé"),
"yourMap": MessageLookupByLibrary.simpleMessage("Votre carte"),

View File

@@ -118,89 +118,89 @@ class MessageLookup extends MessageLookupByLibrary {
static String m36(albumName) => "Spostato con successo su ${albumName}";
static String m37(passwordStrengthValue) =>
static String m38(passwordStrengthValue) =>
"Sicurezza password: ${passwordStrengthValue}";
static String m38(providerName) =>
static String m39(providerName) =>
"Si prega di parlare con il supporto di ${providerName} se ti è stato addebitato qualcosa";
static String m39(endDate) =>
static String m40(endDate) =>
"Prova gratuita valida fino al ${endDate}.\nPuoi scegliere un piano a pagamento in seguito.";
static String m40(toEmail) => "Per favore invia un\'email a ${toEmail}";
static String m41(toEmail) => "Per favore invia un\'email a ${toEmail}";
static String m41(toEmail) => "Invia i log a \n${toEmail}";
static String m42(toEmail) => "Invia i log a \n${toEmail}";
static String m42(storeName) => "Valutaci su ${storeName}";
static String m43(storeName) => "Valutaci su ${storeName}";
static String m43(storageInGB) =>
static String m44(storageInGB) =>
"3. Ottenete entrambi ${storageInGB} GB* gratis";
static String m44(userEmail) =>
static String m45(userEmail) =>
"${userEmail} verrà rimosso da questo album condiviso\n\nQualsiasi foto aggiunta dall\'utente verrà rimossa dall\'album";
static String m45(endDate) => "Si rinnova il ${endDate}";
static String m46(endDate) => "Si rinnova il ${endDate}";
static String m47(count) => "${count} selezionati";
static String m48(count) => "${count} selezionati";
static String m48(count, yourCount) =>
static String m49(count, yourCount) =>
"${count} selezionato (${yourCount} tuoi)";
static String m49(verificationID) =>
static String m50(verificationID) =>
"Ecco il mio ID di verifica: ${verificationID} per ente.io.";
static String m50(verificationID) =>
static String m51(verificationID) =>
"Hey, puoi confermare che questo è il tuo ID di verifica: ${verificationID} su ente.io";
static String m51(referralCode, referralStorageInGB) =>
static String m52(referralCode, referralStorageInGB) =>
"ente referral code: ${referralCode} \n\nApplicalo in Impostazioni → Generale → Referral per ottenere ${referralStorageInGB} GB gratis dopo la registrazione di un piano a pagamento\n\nhttps://ente.io";
static String m52(numberOfPeople) =>
static String m53(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Condividi con persone specifiche', one: 'Condividi con una persona', other: 'Condividi con ${numberOfPeople} persone')}";
static String m53(emailIDs) => "Condiviso con ${emailIDs}";
static String m54(fileType) =>
"Questo ${fileType} verrà eliminato dal tuo dispositivo.";
static String m54(emailIDs) => "Condiviso con ${emailIDs}";
static String m55(fileType) =>
"Questo ${fileType} verrà eliminato dal tuo dispositivo.";
static String m56(fileType) =>
"Questo ${fileType} è sia su ente che sul tuo dispositivo.";
static String m56(fileType) => "Questo ${fileType} verrà eliminato su ente.";
static String m57(fileType) => "Questo ${fileType} verrà eliminato su ente.";
static String m57(storageAmountInGB) => "${storageAmountInGB} GB";
static String m58(storageAmountInGB) => "${storageAmountInGB} GB";
static String m58(
static String m59(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} di ${totalAmount} ${totalStorageUnit} utilizzati";
static String m59(id) =>
static String m60(id) =>
"Il tuo ${id} è già collegato ad un altro account ente.\nSe desideri utilizzare il tuo ${id} con questo account, contatta il nostro supporto\'\'";
static String m60(endDate) => "L\'abbonamento verrà cancellato il ${endDate}";
static String m61(endDate) => "L\'abbonamento verrà cancellato il ${endDate}";
static String m61(completed, total) =>
static String m62(completed, total) =>
"${completed}/${total} ricordi conservati";
static String m62(storageAmountInGB) =>
static String m63(storageAmountInGB) =>
"Anche loro riceveranno ${storageAmountInGB} GB";
static String m63(email) => "Questo è l\'ID di verifica di ${email}";
static String m64(email) => "Questo è l\'ID di verifica di ${email}";
static String m64(count) =>
static String m65(count) =>
"${Intl.plural(count, zero: '', one: '1 giorno', other: '${count} giorni')}";
static String m65(endDate) => "Valido fino al ${endDate}";
static String m66(endDate) => "Valido fino al ${endDate}";
static String m66(email) => "Verifica ${email}";
static String m67(email) => "Verifica ${email}";
static String m67(email) =>
static String m68(email) =>
"Abbiamo inviato una mail a <green>${email}</green>";
static String m68(count) =>
static String m69(count) =>
"${Intl.plural(count, one: '${count} anno fa', other: '${count} anni fa')}";
static String m69(storageSaved) =>
static String m70(storageSaved) =>
"Hai liberato con successo ${storageSaved}!";
final messages = _notInlinedMessages(_notInlinedMessages);
@@ -291,6 +291,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Android, iOS, Web, Desktop"),
"androidSignInTitle":
MessageLookupByLibrary.simpleMessage("Autenticazione necessaria"),
"appLock": MessageLookupByLibrary.simpleMessage("App lock"),
"appVersion": m7,
"appleId": MessageLookupByLibrary.simpleMessage("Apple ID"),
"apply": MessageLookupByLibrary.simpleMessage("Applica"),
@@ -560,6 +561,7 @@ class MessageLookup extends MessageLookupByLibrary {
"details": MessageLookupByLibrary.simpleMessage("Dettagli"),
"deviceFilesAutoUploading": MessageLookupByLibrary.simpleMessage(
"I file aggiunti in questa cartella del dispositivo verranno automaticamente caricati su ente."),
"deviceLock": MessageLookupByLibrary.simpleMessage("Device lock"),
"deviceLockExplanation": MessageLookupByLibrary.simpleMessage(
"Disabilita il blocco schermo del dispositivo quando ente è in primo piano e c\'è un backup in corso. Questo normalmente non è necessario, ma può aiutare durante grossi caricamenti e le importazioni iniziali di grandi librerie si completano più velocemente."),
"didYouKnow": MessageLookupByLibrary.simpleMessage("Lo sapevi che?"),
@@ -647,6 +649,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Inserisci una password per criptare i tuoi dati"),
"enterPersonName":
MessageLookupByLibrary.simpleMessage("Enter person name"),
"enterPin": MessageLookupByLibrary.simpleMessage("Enter PIN"),
"enterReferralCode": MessageLookupByLibrary.simpleMessage(
"Inserisci il codice di invito"),
"enterThe6digitCodeFromnyourAuthenticatorApp":
@@ -911,6 +914,7 @@ class MessageLookup extends MessageLookupByLibrary {
"newAlbum": MessageLookupByLibrary.simpleMessage("Nuovo album"),
"newToEnte": MessageLookupByLibrary.simpleMessage("Nuovo utente"),
"newest": MessageLookupByLibrary.simpleMessage("Più recenti"),
"next": MessageLookupByLibrary.simpleMessage("Next"),
"no": MessageLookupByLibrary.simpleMessage("No"),
"noAlbumsSharedByYouYet": MessageLookupByLibrary.simpleMessage(
"Ancora nessun album condiviso da te"),
@@ -936,6 +940,8 @@ class MessageLookup extends MessageLookupByLibrary {
"noResults": MessageLookupByLibrary.simpleMessage("Nessun risultato"),
"noResultsFound":
MessageLookupByLibrary.simpleMessage("Nessun risultato trovato"),
"noSystemLockFound":
MessageLookupByLibrary.simpleMessage("No system lock found"),
"nothingSharedWithYouYet": MessageLookupByLibrary.simpleMessage(
"Ancora nulla di condiviso con te"),
"nothingToSeeHere":
@@ -965,14 +971,14 @@ class MessageLookup extends MessageLookupByLibrary {
"Password modificata con successo"),
"passwordLock":
MessageLookupByLibrary.simpleMessage("Blocco con password"),
"passwordStrength": m37,
"passwordStrength": m38,
"passwordWarning": MessageLookupByLibrary.simpleMessage(
"Noi non memorizziamo la tua password, quindi se te la dimentichi, <underline>non possiamo decriptare i tuoi dati</underline>"),
"paymentDetails":
MessageLookupByLibrary.simpleMessage("Dettagli di Pagamento"),
"paymentFailed":
MessageLookupByLibrary.simpleMessage("Pagamento non riuscito"),
"paymentFailedTalkToProvider": m38,
"paymentFailedTalkToProvider": m39,
"pendingSync":
MessageLookupByLibrary.simpleMessage("Sincronizzazione in sospeso"),
"peopleUsingYourCode": MessageLookupByLibrary.simpleMessage(
@@ -992,7 +998,8 @@ class MessageLookup extends MessageLookupByLibrary {
"pickCenterPoint": MessageLookupByLibrary.simpleMessage(
"Selezionare il punto centrale"),
"pinAlbum": MessageLookupByLibrary.simpleMessage("Fissa l\'album"),
"playStoreFreeTrialValidTill": m39,
"pinLock": MessageLookupByLibrary.simpleMessage("PIN lock"),
"playStoreFreeTrialValidTill": m40,
"playstoreSubscription":
MessageLookupByLibrary.simpleMessage("Abbonamento su PlayStore"),
"pleaseContactSupportAndWeWillBeHappyToHelp":
@@ -1001,12 +1008,12 @@ class MessageLookup extends MessageLookupByLibrary {
"pleaseContactSupportIfTheProblemPersists":
MessageLookupByLibrary.simpleMessage(
"Riprova. Se il problema persiste, ti invitiamo a contattare l\'assistenza"),
"pleaseEmailUsAt": m40,
"pleaseEmailUsAt": m41,
"pleaseGrantPermissions":
MessageLookupByLibrary.simpleMessage("Concedi i permessi"),
"pleaseLoginAgain": MessageLookupByLibrary.simpleMessage(
"Effettua nuovamente l\'accesso"),
"pleaseSendTheLogsTo": m41,
"pleaseSendTheLogsTo": m42,
"pleaseTryAgain": MessageLookupByLibrary.simpleMessage("Riprova"),
"pleaseVerifyTheCodeYouHaveEntered":
MessageLookupByLibrary.simpleMessage(
@@ -1040,7 +1047,7 @@ class MessageLookup extends MessageLookupByLibrary {
"raiseTicket": MessageLookupByLibrary.simpleMessage("Invia ticket"),
"rateTheApp": MessageLookupByLibrary.simpleMessage("Valuta l\'app"),
"rateUs": MessageLookupByLibrary.simpleMessage("Lascia una recensione"),
"rateUsOnStore": m42,
"rateUsOnStore": m43,
"recover": MessageLookupByLibrary.simpleMessage("Recupera"),
"recoverAccount":
MessageLookupByLibrary.simpleMessage("Recupera account"),
@@ -1066,13 +1073,16 @@ class MessageLookup extends MessageLookupByLibrary {
"recreatePasswordTitle":
MessageLookupByLibrary.simpleMessage("Reimposta password"),
"reddit": MessageLookupByLibrary.simpleMessage("Reddit"),
"reenterPassword":
MessageLookupByLibrary.simpleMessage("Re-enter password"),
"reenterPin": MessageLookupByLibrary.simpleMessage("Re-enter PIN"),
"referFriendsAnd2xYourPlan": MessageLookupByLibrary.simpleMessage(
"Invita un amico e raddoppia il tuo spazio"),
"referralStep1": MessageLookupByLibrary.simpleMessage(
"1. Condividi questo codice con i tuoi amici"),
"referralStep2": MessageLookupByLibrary.simpleMessage(
"2. Si iscrivono per un piano a pagamento"),
"referralStep3": m43,
"referralStep3": m44,
"referrals": MessageLookupByLibrary.simpleMessage("Invita un Amico"),
"referralsAreCurrentlyPaused": MessageLookupByLibrary.simpleMessage(
"I referral code sono attualmente in pausa"),
@@ -1096,7 +1106,7 @@ class MessageLookup extends MessageLookupByLibrary {
"removeLink": MessageLookupByLibrary.simpleMessage("Elimina link"),
"removeParticipant":
MessageLookupByLibrary.simpleMessage("Rimuovi partecipante"),
"removeParticipantBody": m44,
"removeParticipantBody": m45,
"removePersonLabel":
MessageLookupByLibrary.simpleMessage("Remove person label"),
"removePublicLink":
@@ -1112,7 +1122,7 @@ class MessageLookup extends MessageLookupByLibrary {
"renameFile": MessageLookupByLibrary.simpleMessage("Rinomina file"),
"renewSubscription":
MessageLookupByLibrary.simpleMessage("Rinnova abbonamento"),
"renewsOn": m45,
"renewsOn": m46,
"reportABug": MessageLookupByLibrary.simpleMessage("Segnala un bug"),
"reportBug": MessageLookupByLibrary.simpleMessage("Segnala un bug"),
"resendEmail": MessageLookupByLibrary.simpleMessage("Rinvia email"),
@@ -1178,8 +1188,8 @@ class MessageLookup extends MessageLookupByLibrary {
"selectedItemsWillBeDeletedFromAllAlbumsAndMoved":
MessageLookupByLibrary.simpleMessage(
"Gli elementi selezionati verranno eliminati da tutti gli album e spostati nel cestino."),
"selectedPhotos": m47,
"selectedPhotosWithYours": m48,
"selectedPhotos": m48,
"selectedPhotosWithYours": m49,
"send": MessageLookupByLibrary.simpleMessage("Invia"),
"sendEmail": MessageLookupByLibrary.simpleMessage("Invia email"),
"sendInvite": MessageLookupByLibrary.simpleMessage("Invita"),
@@ -1191,6 +1201,9 @@ class MessageLookup extends MessageLookupByLibrary {
"setAs": MessageLookupByLibrary.simpleMessage("Imposta come"),
"setCover": MessageLookupByLibrary.simpleMessage("Imposta copertina"),
"setLabel": MessageLookupByLibrary.simpleMessage("Imposta"),
"setNewPassword":
MessageLookupByLibrary.simpleMessage("Set new password"),
"setNewPin": MessageLookupByLibrary.simpleMessage("Set new PIN"),
"setPasswordTitle":
MessageLookupByLibrary.simpleMessage("Imposta password"),
"setRadius": MessageLookupByLibrary.simpleMessage("Imposta raggio"),
@@ -1203,16 +1216,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Condividi un album"),
"shareLink": MessageLookupByLibrary.simpleMessage("Condividi link"),
"shareMyVerificationID": m49,
"shareMyVerificationID": m50,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Condividi solo con le persone che vuoi"),
"shareTextConfirmOthersVerificationID": m50,
"shareTextConfirmOthersVerificationID": m51,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Scarica ente in modo da poter facilmente condividere foto e video senza perdita di qualità\n\nhttps://ente.io"),
"shareTextReferralCode": m51,
"shareTextReferralCode": m52,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Condividi con utenti che non hanno un account ente"),
"shareWithPeopleSectionTitle": m52,
"shareWithPeopleSectionTitle": m53,
"shareYourFirstAlbum": MessageLookupByLibrary.simpleMessage(
"Condividi il tuo primo album"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1223,7 +1236,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Nuove foto condivise"),
"sharedPhotoNotificationsExplanation": MessageLookupByLibrary.simpleMessage(
"Ricevi notifiche quando qualcuno aggiunge una foto a un album condiviso, di cui fai parte"),
"sharedWith": m53,
"sharedWith": m54,
"sharedWithMe":
MessageLookupByLibrary.simpleMessage("Condivisi con me"),
"sharedWithYou":
@@ -1233,11 +1246,11 @@ class MessageLookup extends MessageLookupByLibrary {
"showMemories": MessageLookupByLibrary.simpleMessage("Mostra ricordi"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"Accetto i <u-terms>termini di servizio</u-terms> e la <u-policy>politica sulla privacy</u-policy>"),
"singleFileDeleteFromDevice": m54,
"singleFileDeleteFromDevice": m55,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Verrà eliminato da tutti gli album."),
"singleFileInBothLocalAndRemote": m55,
"singleFileInRemoteOnly": m56,
"singleFileInBothLocalAndRemote": m56,
"singleFileInRemoteOnly": m57,
"skip": MessageLookupByLibrary.simpleMessage("Salta"),
"social": MessageLookupByLibrary.simpleMessage("Social"),
"someItemsAreInBothEnteAndYourDevice":
@@ -1278,13 +1291,13 @@ class MessageLookup extends MessageLookupByLibrary {
"storageBreakupFamily":
MessageLookupByLibrary.simpleMessage("Famiglia"),
"storageBreakupYou": MessageLookupByLibrary.simpleMessage("Tu"),
"storageInGB": m57,
"storageInGB": m58,
"storageLimitExceeded": MessageLookupByLibrary.simpleMessage(
"Limite d\'archiviazione superato"),
"storageUsageInfo": m58,
"storageUsageInfo": m59,
"strongStrength": MessageLookupByLibrary.simpleMessage("Forte"),
"subAlreadyLinkedErrMessage": m59,
"subWillBeCancelledOn": m60,
"subAlreadyLinkedErrMessage": m60,
"subWillBeCancelledOn": m61,
"subscribe": MessageLookupByLibrary.simpleMessage("Iscriviti"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Sembra che il tuo abbonamento sia scaduto. Iscriviti per abilitare la condivisione."),
@@ -1301,7 +1314,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Suggerisci una funzionalità"),
"support": MessageLookupByLibrary.simpleMessage("Assistenza"),
"syncProgress": m61,
"syncProgress": m62,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Sincronizzazione interrotta"),
"syncing": MessageLookupByLibrary.simpleMessage(
@@ -1310,6 +1323,7 @@ class MessageLookup extends MessageLookupByLibrary {
"tapToCopy": MessageLookupByLibrary.simpleMessage("tocca per copiare"),
"tapToEnterCode": MessageLookupByLibrary.simpleMessage(
"Tocca per inserire il codice"),
"tapToUnlock": MessageLookupByLibrary.simpleMessage("Tap to unlock"),
"tempErrorContactSupportIfPersists": MessageLookupByLibrary.simpleMessage(
"Sembra che qualcosa sia andato storto. Riprova tra un po\'. Se l\'errore persiste, contatta il nostro team di supporto."),
"terminate": MessageLookupByLibrary.simpleMessage("Terminata"),
@@ -1330,7 +1344,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Questi file verranno eliminati dal tuo dispositivo."),
"theyAlsoGetXGb": m62,
"theyAlsoGetXGb": m63,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Verranno eliminati da tutti gli album."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@@ -1347,7 +1361,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Questo indirizzo email è già registrato"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Questa immagine non ha dati EXIF"),
"thisIsPersonVerificationId": m63,
"thisIsPersonVerificationId": m64,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"Questo è il tuo ID di verifica"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1355,15 +1369,20 @@ class MessageLookup extends MessageLookupByLibrary {
"Verrai disconnesso dai seguenti dispositivi:"),
"thisWillLogYouOutOfThisDevice": MessageLookupByLibrary.simpleMessage(
"Verrai disconnesso dal tuo dispositivo!"),
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen":
MessageLookupByLibrary.simpleMessage(
"To enable app lock, please setup device passcode or screen lock in your system settings."),
"toHideAPhotoOrVideo": MessageLookupByLibrary.simpleMessage(
"Per nascondere una foto o un video"),
"toResetVerifyEmail": MessageLookupByLibrary.simpleMessage(
"Per reimpostare la tua password, verifica prima la tua email."),
"todaysLogs": MessageLookupByLibrary.simpleMessage("Log di oggi"),
"tooManyIncorrectAttempts":
MessageLookupByLibrary.simpleMessage("Too many incorrect attempts"),
"total": MessageLookupByLibrary.simpleMessage("totale"),
"totalSize": MessageLookupByLibrary.simpleMessage("Dimensioni totali"),
"trash": MessageLookupByLibrary.simpleMessage("Cestino"),
"trashDaysLeft": m64,
"trashDaysLeft": m65,
"tryAgain": MessageLookupByLibrary.simpleMessage("Riprova"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
"Attiva il backup per caricare automaticamente i file aggiunti in questa cartella del dispositivo su ente."),
@@ -1420,7 +1439,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Usa la foto selezionata"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Spazio utilizzato"),
"validTill": m65,
"validTill": m66,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Verifica fallita, per favore prova di nuovo"),
@@ -1428,7 +1447,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("ID di verifica"),
"verify": MessageLookupByLibrary.simpleMessage("Verifica"),
"verifyEmail": MessageLookupByLibrary.simpleMessage("Verifica email"),
"verifyEmailID": m66,
"verifyEmailID": m67,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Verifica"),
"verifyPassword":
MessageLookupByLibrary.simpleMessage("Verifica password"),
@@ -1455,11 +1474,11 @@ class MessageLookup extends MessageLookupByLibrary {
"weDontSupportEditingPhotosAndAlbumsThatYouDont":
MessageLookupByLibrary.simpleMessage(
"Non puoi modificare foto e album che non possiedi"),
"weHaveSendEmailTo": m67,
"weHaveSendEmailTo": m68,
"weakStrength": MessageLookupByLibrary.simpleMessage("Debole"),
"welcomeBack": MessageLookupByLibrary.simpleMessage("Bentornato/a!"),
"yearly": MessageLookupByLibrary.simpleMessage("Annuale"),
"yearsAgo": m68,
"yearsAgo": m69,
"yes": MessageLookupByLibrary.simpleMessage("Si"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Sì, cancella"),
"yesConvertToViewer": MessageLookupByLibrary.simpleMessage(
@@ -1489,7 +1508,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Non puoi condividere con te stesso"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"Non hai nulla di archiviato."),
"youHaveSuccessfullyFreedUp": m69,
"youHaveSuccessfullyFreedUp": m70,
"yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
"Il tuo account è stato eliminato"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map"),

View File

@@ -32,6 +32,7 @@ class MessageLookup extends MessageLookupByLibrary {
"addToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Add to hidden album"),
"addViewers": m1,
"appLock": MessageLookupByLibrary.simpleMessage("App lock"),
"changeLocationOfSelectedItems": MessageLookupByLibrary.simpleMessage(
"Change location of selected items?"),
"clusteringProgress":
@@ -42,12 +43,14 @@ class MessageLookup extends MessageLookupByLibrary {
"deleteConfirmDialogBody": MessageLookupByLibrary.simpleMessage(
"This account is linked to other ente apps, if you use any.\\n\\nYour uploaded data, across all ente apps, will be scheduled for deletion, and your account will be permanently deleted."),
"descriptions": MessageLookupByLibrary.simpleMessage("Descriptions"),
"deviceLock": MessageLookupByLibrary.simpleMessage("Device lock"),
"editLocation": MessageLookupByLibrary.simpleMessage("Edit location"),
"editsToLocationWillOnlyBeSeenWithinEnte":
MessageLookupByLibrary.simpleMessage(
"Edits to location will only be seen within Ente"),
"enterPersonName":
MessageLookupByLibrary.simpleMessage("Enter person name"),
"enterPin": MessageLookupByLibrary.simpleMessage("Enter PIN"),
"faceRecognition":
MessageLookupByLibrary.simpleMessage("Face recognition"),
"fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
@@ -64,6 +67,14 @@ class MessageLookup extends MessageLookupByLibrary {
"Modify your query, or try searching for"),
"moveToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Move to hidden album"),
"next": MessageLookupByLibrary.simpleMessage("Next"),
"noSystemLockFound":
MessageLookupByLibrary.simpleMessage("No system lock found"),
"passwordLock": MessageLookupByLibrary.simpleMessage("Password lock"),
"pinLock": MessageLookupByLibrary.simpleMessage("PIN lock"),
"reenterPassword":
MessageLookupByLibrary.simpleMessage("Re-enter password"),
"reenterPin": MessageLookupByLibrary.simpleMessage("Re-enter PIN"),
"removePersonLabel":
MessageLookupByLibrary.simpleMessage("Remove person label"),
"search": MessageLookupByLibrary.simpleMessage("Search"),
@@ -71,6 +82,15 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Select a location"),
"selectALocationFirst":
MessageLookupByLibrary.simpleMessage("Select a location first"),
"setNewPassword":
MessageLookupByLibrary.simpleMessage("Set new password"),
"setNewPin": MessageLookupByLibrary.simpleMessage("Set new PIN"),
"tapToUnlock": MessageLookupByLibrary.simpleMessage("Tap to unlock"),
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen":
MessageLookupByLibrary.simpleMessage(
"To enable app lock, please setup device passcode or screen lock in your system settings."),
"tooManyIncorrectAttempts":
MessageLookupByLibrary.simpleMessage("Too many incorrect attempts"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map")
};
}

View File

@@ -127,94 +127,96 @@ class MessageLookup extends MessageLookupByLibrary {
static String m36(albumName) => "Succesvol verplaatst naar ${albumName}";
static String m37(passwordStrengthValue) =>
static String m37(name) => "Niet ${name}?";
static String m38(passwordStrengthValue) =>
"Wachtwoord sterkte: ${passwordStrengthValue}";
static String m38(providerName) =>
static String m39(providerName) =>
"Praat met ${providerName} klantenservice als u in rekening bent gebracht";
static String m39(endDate) =>
static String m40(endDate) =>
"Gratis proefperiode geldig tot ${endDate}.\nU kunt naderhand een betaald abonnement kiezen.";
static String m40(toEmail) => "Stuur ons een e-mail op ${toEmail}";
static String m41(toEmail) => "Stuur ons een e-mail op ${toEmail}";
static String m41(toEmail) =>
static String m42(toEmail) =>
"Verstuur de logboeken alstublieft naar ${toEmail}";
static String m42(storeName) => "Beoordeel ons op ${storeName}";
static String m43(storeName) => "Beoordeel ons op ${storeName}";
static String m43(storageInGB) =>
static String m44(storageInGB) =>
"Jullie krijgen allebei ${storageInGB} GB* gratis";
static String m44(userEmail) =>
static String m45(userEmail) =>
"${userEmail} zal worden verwijderd uit dit gedeelde album\n\nAlle door hen toegevoegde foto\'s worden ook uit het album verwijderd";
static String m45(endDate) => "Wordt verlengd op ${endDate}";
static String m46(endDate) => "Wordt verlengd op ${endDate}";
static String m46(count) =>
static String m47(count) =>
"${Intl.plural(count, one: '${count} resultaat gevonden', other: '${count} resultaten gevonden')}";
static String m47(count) => "${count} geselecteerd";
static String m48(count) => "${count} geselecteerd";
static String m48(count, yourCount) =>
static String m49(count, yourCount) =>
"${count} geselecteerd (${yourCount} van jou)";
static String m49(verificationID) =>
static String m50(verificationID) =>
"Hier is mijn verificatie-ID: ${verificationID} voor ente.io.";
static String m50(verificationID) =>
static String m51(verificationID) =>
"Hey, kunt u bevestigen dat dit uw ente.io verificatie-ID is: ${verificationID}";
static String m51(referralCode, referralStorageInGB) =>
static String m52(referralCode, referralStorageInGB) =>
"Ente verwijzingscode: ${referralCode} \n\nPas het toe bij Instellingen → Algemeen → Verwijzingen om ${referralStorageInGB} GB gratis te krijgen nadat je je hebt aangemeld voor een betaald abonnement\n\nhttps://ente.io";
static String m52(numberOfPeople) =>
static String m53(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Deel met specifieke mensen', one: 'Gedeeld met 1 persoon', other: 'Gedeeld met ${numberOfPeople} mensen')}";
static String m53(emailIDs) => "Gedeeld met ${emailIDs}";
static String m54(fileType) =>
"Deze ${fileType} zal worden verwijderd van jouw apparaat.";
static String m54(emailIDs) => "Gedeeld met ${emailIDs}";
static String m55(fileType) =>
"Deze ${fileType} staat zowel in Ente als op jouw apparaat.";
"Deze ${fileType} zal worden verwijderd van jouw apparaat.";
static String m56(fileType) =>
"Deze ${fileType} staat zowel in Ente als op jouw apparaat.";
static String m57(fileType) =>
"Deze ${fileType} zal worden verwijderd uit Ente.";
static String m57(storageAmountInGB) => "${storageAmountInGB} GB";
static String m58(storageAmountInGB) => "${storageAmountInGB} GB";
static String m58(
static String m59(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} van ${totalAmount} ${totalStorageUnit} gebruikt";
static String m59(id) =>
static String m60(id) =>
"Jouw ${id} is al aan een ander Ente account gekoppeld.\nAls je jouw ${id} wilt gebruiken met dit account, neem dan contact op met onze klantenservice";
static String m60(endDate) => "Uw abonnement loopt af op ${endDate}";
static String m61(endDate) => "Uw abonnement loopt af op ${endDate}";
static String m61(completed, total) =>
static String m62(completed, total) =>
"${completed}/${total} herinneringen bewaard";
static String m62(storageAmountInGB) =>
static String m63(storageAmountInGB) =>
"Zij krijgen ook ${storageAmountInGB} GB";
static String m63(email) => "Dit is de verificatie-ID van ${email}";
static String m64(email) => "Dit is de verificatie-ID van ${email}";
static String m64(count) =>
static String m65(count) =>
"${Intl.plural(count, zero: '', one: '1 dag', other: '${count} dagen')}";
static String m65(endDate) => "Geldig tot ${endDate}";
static String m66(endDate) => "Geldig tot ${endDate}";
static String m66(email) => "Verifieer ${email}";
static String m67(email) => "Verifieer ${email}";
static String m67(email) =>
static String m68(email) =>
"We hebben een e-mail gestuurd naar <green>${email}</green>";
static String m68(count) =>
static String m69(count) =>
"${Intl.plural(count, one: '${count} jaar geleden', other: '${count} jaar geleden')}";
static String m69(storageSaved) =>
static String m70(storageSaved) =>
"Je hebt ${storageSaved} succesvol vrijgemaakt!";
final messages = _notInlinedMessages(_notInlinedMessages);
@@ -229,6 +231,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Ik begrijp dat als ik mijn wachtwoord verlies, ik mijn gegevens kan verliezen omdat mijn gegevens <underline>end-to-end versleuteld</underline> zijn."),
"activeSessions":
MessageLookupByLibrary.simpleMessage("Actieve sessies"),
"addAName": MessageLookupByLibrary.simpleMessage("Een naam toevoegen"),
"addANewEmail":
MessageLookupByLibrary.simpleMessage("Nieuw e-mailadres toevoegen"),
"addCollaborator":
@@ -307,6 +310,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Android, iOS, Web, Desktop"),
"androidSignInTitle":
MessageLookupByLibrary.simpleMessage("Verificatie vereist"),
"appLock": MessageLookupByLibrary.simpleMessage("App-vergrendeling"),
"appVersion": m7,
"appleId": MessageLookupByLibrary.simpleMessage("Apple ID"),
"apply": MessageLookupByLibrary.simpleMessage("Toepassen"),
@@ -372,6 +376,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Je zult de beschikbare Cast apparaten hier zien."),
"autoCastiOSPermission": MessageLookupByLibrary.simpleMessage(
"Zorg ervoor dat lokale netwerkrechten zijn ingeschakeld voor de Ente Photos app, in Instellingen."),
"autoLogoutMessage": MessageLookupByLibrary.simpleMessage(
"Door een technische storing bent u uitgelogd. Onze excuses voor het ongemak."),
"autoPair":
MessageLookupByLibrary.simpleMessage("Automatisch koppelen"),
"autoPairDesc": MessageLookupByLibrary.simpleMessage(
@@ -428,6 +434,8 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Controleer op updates"),
"checkInboxAndSpamFolder": MessageLookupByLibrary.simpleMessage(
"Controleer je inbox (en spam) om verificatie te voltooien"),
"checkStatus":
MessageLookupByLibrary.simpleMessage("Status controleren"),
"checking": MessageLookupByLibrary.simpleMessage("Controleren..."),
"claimFreeStorage":
MessageLookupByLibrary.simpleMessage("Claim gratis opslag"),
@@ -449,7 +457,7 @@ class MessageLookup extends MessageLookupByLibrary {
"clubByFileName":
MessageLookupByLibrary.simpleMessage("Samenvoegen op bestandsnaam"),
"clusteringProgress":
MessageLookupByLibrary.simpleMessage("Clustering progress"),
MessageLookupByLibrary.simpleMessage("Voortgang clusteren"),
"codeAppliedPageTitle":
MessageLookupByLibrary.simpleMessage("Code toegepast"),
"codeCopiedToClipboard": MessageLookupByLibrary.simpleMessage(
@@ -534,6 +542,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Link aanmaken..."),
"criticalUpdateAvailable": MessageLookupByLibrary.simpleMessage(
"Belangrijke update beschikbaar"),
"crop": MessageLookupByLibrary.simpleMessage("Bijsnijden"),
"currentUsageIs":
MessageLookupByLibrary.simpleMessage("Huidig gebruik is "),
"custom": MessageLookupByLibrary.simpleMessage("Aangepast"),
@@ -607,6 +616,8 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Voer de code in"),
"deviceFilesAutoUploading": MessageLookupByLibrary.simpleMessage(
"Bestanden toegevoegd aan dit album van dit apparaat zullen automatisch geüpload worden naar Ente."),
"deviceLock":
MessageLookupByLibrary.simpleMessage("Apparaat vergrendeld"),
"deviceLockExplanation": MessageLookupByLibrary.simpleMessage(
"Schakel de schermvergrendeling van het apparaat uit wanneer Ente op de voorgrond is en er een back-up aan de gang is. Dit is normaal gesproken niet nodig, maar kan grote uploads en initiële imports van grote mappen sneller laten verlopen."),
"deviceNotFound":
@@ -700,6 +711,9 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Voer wachtwoord in"),
"enterPasswordToEncrypt": MessageLookupByLibrary.simpleMessage(
"Voer een wachtwoord in dat we kunnen gebruiken om je gegevens te versleutelen"),
"enterPersonName":
MessageLookupByLibrary.simpleMessage("Naam van persoon invoeren"),
"enterPin": MessageLookupByLibrary.simpleMessage("PIN invoeren"),
"enterReferralCode":
MessageLookupByLibrary.simpleMessage("Voer verwijzingscode in"),
"enterThe6digitCodeFromnyourAuthenticatorApp":
@@ -725,7 +739,7 @@ class MessageLookup extends MessageLookupByLibrary {
"exportYourData":
MessageLookupByLibrary.simpleMessage("Exporteer je gegevens"),
"faceRecognition":
MessageLookupByLibrary.simpleMessage("Face recognition"),
MessageLookupByLibrary.simpleMessage("Gezichtsherkenning"),
"faces": MessageLookupByLibrary.simpleMessage("Gezichten"),
"failedToApplyCode":
MessageLookupByLibrary.simpleMessage("Code toepassen mislukt"),
@@ -769,12 +783,15 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Bestanden verwijderd"),
"filesSavedToGallery": MessageLookupByLibrary.simpleMessage(
"Bestand opgeslagen in galerij"),
"findPeopleByName":
MessageLookupByLibrary.simpleMessage("Mensen snel op naam zoeken"),
"flip": MessageLookupByLibrary.simpleMessage("Omdraaien"),
"forYourMemories":
MessageLookupByLibrary.simpleMessage("voor uw herinneringen"),
"forgotPassword":
MessageLookupByLibrary.simpleMessage("Wachtwoord vergeten"),
"foundFaces": MessageLookupByLibrary.simpleMessage("Found faces"),
"foundFaces":
MessageLookupByLibrary.simpleMessage("Gezichten gevonden"),
"freeStorageClaimed":
MessageLookupByLibrary.simpleMessage("Gratis opslag geclaimd"),
"freeStorageOnReferralSuccess": m26,
@@ -786,6 +803,8 @@ class MessageLookup extends MessageLookupByLibrary {
"freeUpAmount": m29,
"freeUpDeviceSpace":
MessageLookupByLibrary.simpleMessage("Apparaatruimte vrijmaken"),
"freeUpDeviceSpaceDesc": MessageLookupByLibrary.simpleMessage(
"Bespaar ruimte op je apparaat door bestanden die al geback-upt zijn te wissen."),
"freeUpSpace": MessageLookupByLibrary.simpleMessage("Ruimte vrijmaken"),
"freeUpSpaceSaving": m30,
"galleryMemoryLimitInfo": MessageLookupByLibrary.simpleMessage(
@@ -837,7 +856,7 @@ class MessageLookup extends MessageLookupByLibrary {
"indexedItems":
MessageLookupByLibrary.simpleMessage("Geïndexeerde bestanden"),
"indexingIsPaused": MessageLookupByLibrary.simpleMessage(
"Indexing is paused, will automatically resume when device is ready"),
"Indexeren is gepauzeerd. Het zal automatisch hervatten wanneer het apparaat klaar is."),
"insecureDevice":
MessageLookupByLibrary.simpleMessage("Onveilig apparaat"),
"installManually":
@@ -880,6 +899,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Familie abonnement verlaten"),
"leaveSharedAlbum":
MessageLookupByLibrary.simpleMessage("Gedeeld album verlaten?"),
"left": MessageLookupByLibrary.simpleMessage("Links"),
"light": MessageLookupByLibrary.simpleMessage("Licht"),
"lightTheme": MessageLookupByLibrary.simpleMessage("Licht"),
"linkCopiedToClipboard": MessageLookupByLibrary.simpleMessage(
@@ -932,6 +952,10 @@ class MessageLookup extends MessageLookupByLibrary {
"lockscreen": MessageLookupByLibrary.simpleMessage("Vergrendelscherm"),
"logInLabel": MessageLookupByLibrary.simpleMessage("Inloggen"),
"loggingOut": MessageLookupByLibrary.simpleMessage("Uitloggen..."),
"loginSessionExpired":
MessageLookupByLibrary.simpleMessage("Sessie verlopen"),
"loginSessionExpiredDetails": MessageLookupByLibrary.simpleMessage(
"Jouw sessie is verlopen. Log opnieuw in."),
"loginTerms": MessageLookupByLibrary.simpleMessage(
"Door op inloggen te klikken, ga ik akkoord met de <u-terms>gebruiksvoorwaarden</u-terms> en <u-policy>privacybeleid</u-policy>"),
"logout": MessageLookupByLibrary.simpleMessage("Uitloggen"),
@@ -965,6 +989,8 @@ class MessageLookup extends MessageLookupByLibrary {
"matrix": MessageLookupByLibrary.simpleMessage("Matrix"),
"memoryCount": m34,
"merchandise": MessageLookupByLibrary.simpleMessage("Merchandise"),
"mlIndexingDescription": MessageLookupByLibrary.simpleMessage(
"Houd er rekening mee dat dit zal resulteren in een hoger internet- en batterijverbruik totdat alle items zijn geïndexeerd."),
"mobileWebDesktop":
MessageLookupByLibrary.simpleMessage("Mobiel, Web, Desktop"),
"moderateStrength": MessageLookupByLibrary.simpleMessage("Matig"),
@@ -992,6 +1018,7 @@ class MessageLookup extends MessageLookupByLibrary {
"newAlbum": MessageLookupByLibrary.simpleMessage("Nieuw album"),
"newToEnte": MessageLookupByLibrary.simpleMessage("Nieuw bij Ente"),
"newest": MessageLookupByLibrary.simpleMessage("Nieuwste"),
"next": MessageLookupByLibrary.simpleMessage("Volgende"),
"no": MessageLookupByLibrary.simpleMessage("Nee"),
"noAlbumsSharedByYouYet": MessageLookupByLibrary.simpleMessage(
"Nog geen albums gedeeld door jou"),
@@ -1022,6 +1049,9 @@ class MessageLookup extends MessageLookupByLibrary {
"noResults": MessageLookupByLibrary.simpleMessage("Geen resultaten"),
"noResultsFound":
MessageLookupByLibrary.simpleMessage("Geen resultaten gevonden"),
"noSystemLockFound": MessageLookupByLibrary.simpleMessage(
"Geen systeemvergrendeling gevonden"),
"notPersonLabel": m37,
"nothingSharedWithYouYet":
MessageLookupByLibrary.simpleMessage("Nog niets met je gedeeld"),
"nothingToSeeHere":
@@ -1049,6 +1079,8 @@ class MessageLookup extends MessageLookupByLibrary {
"pairWithPin": MessageLookupByLibrary.simpleMessage("Koppelen met PIN"),
"pairingComplete":
MessageLookupByLibrary.simpleMessage("Koppeling voltooid"),
"passKeyPendingVerification": MessageLookupByLibrary.simpleMessage(
"Verificatie is nog in behandeling"),
"passkey": MessageLookupByLibrary.simpleMessage("Passkey"),
"passkeyAuthTitle":
MessageLookupByLibrary.simpleMessage("Passkey verificatie"),
@@ -1056,7 +1088,7 @@ class MessageLookup extends MessageLookupByLibrary {
"passwordChangedSuccessfully": MessageLookupByLibrary.simpleMessage(
"Wachtwoord succesvol aangepast"),
"passwordLock": MessageLookupByLibrary.simpleMessage("Wachtwoord slot"),
"passwordStrength": m37,
"passwordStrength": m38,
"passwordWarning": MessageLookupByLibrary.simpleMessage(
"Wij slaan dit wachtwoord niet op, dus als je het vergeet, kunnen <underline>we je gegevens niet ontsleutelen</underline>"),
"paymentDetails":
@@ -1065,11 +1097,12 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Betaling mislukt"),
"paymentFailedMessage": MessageLookupByLibrary.simpleMessage(
"Helaas is je betaling mislukt. Neem contact op met support zodat we je kunnen helpen!"),
"paymentFailedTalkToProvider": m38,
"paymentFailedTalkToProvider": m39,
"pendingItems":
MessageLookupByLibrary.simpleMessage("Bestanden in behandeling"),
"pendingSync": MessageLookupByLibrary.simpleMessage(
"Synchronisatie in behandeling"),
"people": MessageLookupByLibrary.simpleMessage("Personen"),
"peopleUsingYourCode": MessageLookupByLibrary.simpleMessage(
"Mensen die jouw code gebruiken"),
"permDeleteWarning": MessageLookupByLibrary.simpleMessage(
@@ -1091,9 +1124,10 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Kies middelpunt"),
"pinAlbum":
MessageLookupByLibrary.simpleMessage("Album bovenaan vastzetten"),
"pinLock": MessageLookupByLibrary.simpleMessage("PIN vergrendeling"),
"playOnTv":
MessageLookupByLibrary.simpleMessage("Album afspelen op TV"),
"playStoreFreeTrialValidTill": m39,
"playStoreFreeTrialValidTill": m40,
"playstoreSubscription":
MessageLookupByLibrary.simpleMessage("PlayStore abonnement"),
"pleaseCheckYourInternetConnectionAndTryAgain":
@@ -1105,12 +1139,12 @@ class MessageLookup extends MessageLookupByLibrary {
"pleaseContactSupportIfTheProblemPersists":
MessageLookupByLibrary.simpleMessage(
"Neem contact op met klantenservice als het probleem aanhoudt"),
"pleaseEmailUsAt": m40,
"pleaseEmailUsAt": m41,
"pleaseGrantPermissions": MessageLookupByLibrary.simpleMessage(
"Geef alstublieft toestemming"),
"pleaseLoginAgain":
MessageLookupByLibrary.simpleMessage("Log opnieuw in"),
"pleaseSendTheLogsTo": m41,
"pleaseSendTheLogsTo": m42,
"pleaseTryAgain":
MessageLookupByLibrary.simpleMessage("Probeer het nog eens"),
"pleaseVerifyTheCodeYouHaveEntered":
@@ -1145,7 +1179,7 @@ class MessageLookup extends MessageLookupByLibrary {
"raiseTicket": MessageLookupByLibrary.simpleMessage("Meld probleem"),
"rateTheApp": MessageLookupByLibrary.simpleMessage("Beoordeel de app"),
"rateUs": MessageLookupByLibrary.simpleMessage("Beoordeel ons"),
"rateUsOnStore": m42,
"rateUsOnStore": m43,
"recover": MessageLookupByLibrary.simpleMessage("Herstellen"),
"recoverAccount":
MessageLookupByLibrary.simpleMessage("Account herstellen"),
@@ -1170,13 +1204,17 @@ class MessageLookup extends MessageLookupByLibrary {
"recreatePasswordTitle": MessageLookupByLibrary.simpleMessage(
"Wachtwoord opnieuw instellen"),
"reddit": MessageLookupByLibrary.simpleMessage("Reddit"),
"reenterPassword":
MessageLookupByLibrary.simpleMessage("Wachtwoord opnieuw invoeren"),
"reenterPin":
MessageLookupByLibrary.simpleMessage("PIN opnieuw invoeren"),
"referFriendsAnd2xYourPlan": MessageLookupByLibrary.simpleMessage(
"Verwijs vrienden en 2x uw abonnement"),
"referralStep1": MessageLookupByLibrary.simpleMessage(
"1. Geef deze code aan je vrienden"),
"referralStep2": MessageLookupByLibrary.simpleMessage(
"2. Ze registreren voor een betaald plan"),
"referralStep3": m43,
"referralStep3": m44,
"referrals": MessageLookupByLibrary.simpleMessage("Referenties"),
"referralsAreCurrentlyPaused": MessageLookupByLibrary.simpleMessage(
"Verwijzingen zijn momenteel gepauzeerd"),
@@ -1193,6 +1231,8 @@ class MessageLookup extends MessageLookupByLibrary {
"remove": MessageLookupByLibrary.simpleMessage("Verwijder"),
"removeDuplicates":
MessageLookupByLibrary.simpleMessage("Duplicaten verwijderen"),
"removeDuplicatesDesc": MessageLookupByLibrary.simpleMessage(
"Controleer en verwijder bestanden die exacte kopieën zijn."),
"removeFromAlbum":
MessageLookupByLibrary.simpleMessage("Verwijder uit album"),
"removeFromAlbumTitle":
@@ -1202,7 +1242,9 @@ class MessageLookup extends MessageLookupByLibrary {
"removeLink": MessageLookupByLibrary.simpleMessage("Verwijder link"),
"removeParticipant":
MessageLookupByLibrary.simpleMessage("Deelnemer verwijderen"),
"removeParticipantBody": m44,
"removeParticipantBody": m45,
"removePersonLabel":
MessageLookupByLibrary.simpleMessage("Verwijder persoonslabel"),
"removePublicLink":
MessageLookupByLibrary.simpleMessage("Verwijder publieke link"),
"removeShareItemsWarning": MessageLookupByLibrary.simpleMessage(
@@ -1218,7 +1260,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Bestandsnaam wijzigen"),
"renewSubscription":
MessageLookupByLibrary.simpleMessage("Abonnement verlengen"),
"renewsOn": m45,
"renewsOn": m46,
"reportABug": MessageLookupByLibrary.simpleMessage("Een fout melden"),
"reportBug": MessageLookupByLibrary.simpleMessage("Fout melden"),
"resendEmail":
@@ -1237,6 +1279,10 @@ class MessageLookup extends MessageLookupByLibrary {
"retry": MessageLookupByLibrary.simpleMessage("Opnieuw"),
"reviewDeduplicateItems": MessageLookupByLibrary.simpleMessage(
"Controleer en verwijder de bestanden die u denkt dat dubbel zijn."),
"reviewSuggestions":
MessageLookupByLibrary.simpleMessage("Suggesties beoordelen"),
"right": MessageLookupByLibrary.simpleMessage("Rechts"),
"rotate": MessageLookupByLibrary.simpleMessage("Roteren"),
"rotateLeft": MessageLookupByLibrary.simpleMessage("Roteer links"),
"rotateRight": MessageLookupByLibrary.simpleMessage("Rechtsom draaien"),
"safelyStored":
@@ -1249,6 +1295,8 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Sla je herstelsleutel op als je dat nog niet gedaan hebt"),
"saving": MessageLookupByLibrary.simpleMessage("Opslaan..."),
"savingEdits":
MessageLookupByLibrary.simpleMessage("Bewerken opslaan..."),
"scanCode": MessageLookupByLibrary.simpleMessage("Scan code"),
"scanThisBarcodeWithnyourAuthenticatorApp":
MessageLookupByLibrary.simpleMessage(
@@ -1265,7 +1313,7 @@ class MessageLookup extends MessageLookupByLibrary {
"searchDatesEmptySection": MessageLookupByLibrary.simpleMessage(
"Zoeken op een datum, maand of jaar"),
"searchFaceEmptySection": MessageLookupByLibrary.simpleMessage(
"Vind alle foto\'s van een persoon"),
"Mensen worden hier getoond als het indexeren klaar is"),
"searchFileTypesAndNamesEmptySection":
MessageLookupByLibrary.simpleMessage("Bestandstypen en namen"),
"searchHint1":
@@ -1281,7 +1329,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Foto\'s groeperen die in een bepaalde straal van een foto worden genomen"),
"searchPeopleEmptySection": MessageLookupByLibrary.simpleMessage(
"Nodig mensen uit, en je ziet alle foto\'s die door hen worden gedeeld hier"),
"searchResultCount": m46,
"searchResultCount": m47,
"security": MessageLookupByLibrary.simpleMessage("Beveiliging"),
"selectALocation":
MessageLookupByLibrary.simpleMessage("Selecteer een locatie"),
@@ -1308,8 +1356,8 @@ class MessageLookup extends MessageLookupByLibrary {
"selectedItemsWillBeDeletedFromAllAlbumsAndMoved":
MessageLookupByLibrary.simpleMessage(
"Geselecteerde bestanden worden verwijderd uit alle albums en verplaatst naar de prullenbak."),
"selectedPhotos": m47,
"selectedPhotosWithYours": m48,
"selectedPhotos": m48,
"selectedPhotosWithYours": m49,
"send": MessageLookupByLibrary.simpleMessage("Verzenden"),
"sendEmail": MessageLookupByLibrary.simpleMessage("E-mail versturen"),
"sendInvite":
@@ -1324,6 +1372,10 @@ class MessageLookup extends MessageLookupByLibrary {
"setAs": MessageLookupByLibrary.simpleMessage("Instellen als"),
"setCover": MessageLookupByLibrary.simpleMessage("Omslag instellen"),
"setLabel": MessageLookupByLibrary.simpleMessage("Instellen"),
"setNewPassword":
MessageLookupByLibrary.simpleMessage("Nieuw wachtwoord instellen"),
"setNewPin":
MessageLookupByLibrary.simpleMessage("Nieuwe PIN instellen"),
"setPasswordTitle":
MessageLookupByLibrary.simpleMessage("Wachtwoord instellen"),
"setRadius": MessageLookupByLibrary.simpleMessage("Radius instellen"),
@@ -1335,16 +1387,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Deel nu een album"),
"shareLink": MessageLookupByLibrary.simpleMessage("Link delen"),
"shareMyVerificationID": m49,
"shareMyVerificationID": m50,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Deel alleen met de mensen die u wilt"),
"shareTextConfirmOthersVerificationID": m50,
"shareTextConfirmOthersVerificationID": m51,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Download Ente zodat we gemakkelijk foto\'s en video\'s in originele kwaliteit kunnen delen\n\nhttps://ente.io"),
"shareTextReferralCode": m51,
"shareTextReferralCode": m52,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Delen met niet-Ente gebruikers"),
"shareWithPeopleSectionTitle": m52,
"shareWithPeopleSectionTitle": m53,
"shareYourFirstAlbum":
MessageLookupByLibrary.simpleMessage("Deel jouw eerste album"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1355,7 +1407,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Nieuwe gedeelde foto\'s"),
"sharedPhotoNotificationsExplanation": MessageLookupByLibrary.simpleMessage(
"Ontvang meldingen wanneer iemand een foto toevoegt aan een gedeeld album waar je deel van uitmaakt"),
"sharedWith": m53,
"sharedWith": m54,
"sharedWithMe": MessageLookupByLibrary.simpleMessage("Gedeeld met mij"),
"sharedWithYou":
MessageLookupByLibrary.simpleMessage("Gedeeld met jou"),
@@ -1370,11 +1422,11 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Log uit op andere apparaten"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"Ik ga akkoord met de <u-terms>gebruiksvoorwaarden</u-terms> en <u-policy>privacybeleid</u-policy>"),
"singleFileDeleteFromDevice": m54,
"singleFileDeleteFromDevice": m55,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Het wordt uit alle albums verwijderd."),
"singleFileInBothLocalAndRemote": m55,
"singleFileInRemoteOnly": m56,
"singleFileInBothLocalAndRemote": m56,
"singleFileInRemoteOnly": m57,
"skip": MessageLookupByLibrary.simpleMessage("Overslaan"),
"social": MessageLookupByLibrary.simpleMessage("Sociale media"),
"someItemsAreInBothEnteAndYourDevice": MessageLookupByLibrary.simpleMessage(
@@ -1416,13 +1468,13 @@ class MessageLookup extends MessageLookupByLibrary {
"storage": MessageLookupByLibrary.simpleMessage("Opslagruimte"),
"storageBreakupFamily": MessageLookupByLibrary.simpleMessage("Familie"),
"storageBreakupYou": MessageLookupByLibrary.simpleMessage("Jij"),
"storageInGB": m57,
"storageInGB": m58,
"storageLimitExceeded":
MessageLookupByLibrary.simpleMessage("Opslaglimiet overschreden"),
"storageUsageInfo": m58,
"storageUsageInfo": m59,
"strongStrength": MessageLookupByLibrary.simpleMessage("Sterk"),
"subAlreadyLinkedErrMessage": m59,
"subWillBeCancelledOn": m60,
"subAlreadyLinkedErrMessage": m60,
"subWillBeCancelledOn": m61,
"subscribe": MessageLookupByLibrary.simpleMessage("Abonneer"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Het lijkt erop dat je abonnement is verlopen. Abonneer om delen mogelijk te maken."),
@@ -1439,7 +1491,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Features voorstellen"),
"support": MessageLookupByLibrary.simpleMessage("Ondersteuning"),
"syncProgress": m61,
"syncProgress": m62,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Synchronisatie gestopt"),
"syncing": MessageLookupByLibrary.simpleMessage("Synchroniseren..."),
@@ -1447,6 +1499,8 @@ class MessageLookup extends MessageLookupByLibrary {
"tapToCopy": MessageLookupByLibrary.simpleMessage("tik om te kopiëren"),
"tapToEnterCode":
MessageLookupByLibrary.simpleMessage("Tik om code in te voeren"),
"tapToUnlock":
MessageLookupByLibrary.simpleMessage("Tik om te ontgrendelen"),
"tempErrorContactSupportIfPersists": MessageLookupByLibrary.simpleMessage(
"Het lijkt erop dat er iets fout is gegaan. Probeer het later opnieuw. Als de fout zich blijft voordoen, neem dan contact op met ons supportteam."),
"terminate": MessageLookupByLibrary.simpleMessage("Beëindigen"),
@@ -1467,7 +1521,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Deze bestanden zullen worden verwijderd van uw apparaat."),
"theyAlsoGetXGb": m62,
"theyAlsoGetXGb": m63,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Ze zullen uit alle albums worden verwijderd."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@@ -1483,7 +1537,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Dit e-mailadres is al in gebruik"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Deze foto heeft geen exif gegevens"),
"thisIsPersonVerificationId": m63,
"thisIsPersonVerificationId": m64,
"thisIsYourVerificationId":
MessageLookupByLibrary.simpleMessage("Dit is uw verificatie-ID"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1491,16 +1545,22 @@ class MessageLookup extends MessageLookupByLibrary {
"Dit zal je uitloggen van het volgende apparaat:"),
"thisWillLogYouOutOfThisDevice": MessageLookupByLibrary.simpleMessage(
"Dit zal je uitloggen van dit apparaat!"),
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen":
MessageLookupByLibrary.simpleMessage(
"Om vergrendelscherm in te schakelen, moet u een toegangscode of schermvergrendeling instellen in uw systeeminstellingen."),
"toHideAPhotoOrVideo": MessageLookupByLibrary.simpleMessage(
"Om een foto of video te verbergen"),
"toResetVerifyEmail": MessageLookupByLibrary.simpleMessage(
"Verifieer eerst je e-mailadres om je wachtwoord opnieuw in te stellen."),
"todaysLogs":
MessageLookupByLibrary.simpleMessage("Logboeken van vandaag"),
"tooManyIncorrectAttempts":
MessageLookupByLibrary.simpleMessage("Te veel onjuiste pogingen"),
"total": MessageLookupByLibrary.simpleMessage("totaal"),
"totalSize": MessageLookupByLibrary.simpleMessage("Totale grootte"),
"trash": MessageLookupByLibrary.simpleMessage("Prullenbak"),
"trashDaysLeft": m64,
"trashDaysLeft": m65,
"trim": MessageLookupByLibrary.simpleMessage("Knippen"),
"tryAgain": MessageLookupByLibrary.simpleMessage("Probeer opnieuw"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
"Schakel back-up in om bestanden die toegevoegd zijn aan deze map op dit apparaat automatisch te uploaden."),
@@ -1548,6 +1608,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Tot 50% korting, tot 4 december."),
"usableReferralStorageInfo": MessageLookupByLibrary.simpleMessage(
"Bruikbare opslag is beperkt door je huidige abonnement. Buitensporige geclaimde opslag zal automatisch bruikbaar worden wanneer je je abonnement upgrade."),
"useAsCover":
MessageLookupByLibrary.simpleMessage("Als cover gebruiken"),
"usePublicLinksForPeopleNotOnEnte": MessageLookupByLibrary.simpleMessage(
"Gebruik publieke links voor mensen die geen Ente account hebben"),
"useRecoveryKey":
@@ -1555,7 +1617,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Gebruik geselecteerde foto"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Gebruikte ruimte"),
"validTill": m65,
"validTill": m66,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Verificatie mislukt, probeer het opnieuw"),
@@ -1563,7 +1625,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Verificatie ID"),
"verify": MessageLookupByLibrary.simpleMessage("Verifiëren"),
"verifyEmail": MessageLookupByLibrary.simpleMessage("Bevestig e-mail"),
"verifyEmailID": m66,
"verifyEmailID": m67,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Verifiëren"),
"verifyPasskey":
MessageLookupByLibrary.simpleMessage("Bevestig passkey"),
@@ -1581,6 +1643,10 @@ class MessageLookup extends MessageLookupByLibrary {
"viewAll": MessageLookupByLibrary.simpleMessage("Alles weergeven"),
"viewAllExifData":
MessageLookupByLibrary.simpleMessage("Bekijk alle EXIF gegevens"),
"viewLargeFiles":
MessageLookupByLibrary.simpleMessage("Grote bestanden"),
"viewLargeFilesDesc": MessageLookupByLibrary.simpleMessage(
"Bekijk bestanden die de meeste opslagruimte verbruiken"),
"viewLogs": MessageLookupByLibrary.simpleMessage("Logboeken bekijken"),
"viewRecoveryKey":
MessageLookupByLibrary.simpleMessage("Toon herstelsleutel"),
@@ -1596,11 +1662,12 @@ class MessageLookup extends MessageLookupByLibrary {
"weDontSupportEditingPhotosAndAlbumsThatYouDont":
MessageLookupByLibrary.simpleMessage(
"We ondersteunen het bewerken van foto\'s en albums waar je niet de eigenaar van bent nog niet"),
"weHaveSendEmailTo": m67,
"weHaveSendEmailTo": m68,
"weakStrength": MessageLookupByLibrary.simpleMessage("Zwak"),
"welcomeBack": MessageLookupByLibrary.simpleMessage("Welkom terug!"),
"whatsNew": MessageLookupByLibrary.simpleMessage("Nieuw"),
"yearly": MessageLookupByLibrary.simpleMessage("Jaarlijks"),
"yearsAgo": m68,
"yearsAgo": m69,
"yes": MessageLookupByLibrary.simpleMessage("Ja"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Ja, opzeggen"),
"yesConvertToViewer":
@@ -1630,7 +1697,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Je kunt niet met jezelf delen"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"U heeft geen gearchiveerde bestanden."),
"youHaveSuccessfullyFreedUp": m69,
"youHaveSuccessfullyFreedUp": m70,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("Je account is verwijderd"),
"yourMap": MessageLookupByLibrary.simpleMessage("Jouw kaart"),

View File

@@ -34,6 +34,7 @@ class MessageLookup extends MessageLookupByLibrary {
"addToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Add to hidden album"),
"addViewers": m1,
"appLock": MessageLookupByLibrary.simpleMessage("App lock"),
"askDeleteReason": MessageLookupByLibrary.simpleMessage(
"Hva er hovedårsaken til at du sletter kontoen din?"),
"cancel": MessageLookupByLibrary.simpleMessage("Avbryt"),
@@ -54,6 +55,7 @@ class MessageLookup extends MessageLookupByLibrary {
"deleteConfirmDialogBody": MessageLookupByLibrary.simpleMessage(
"This account is linked to other ente apps, if you use any.\\n\\nYour uploaded data, across all ente apps, will be scheduled for deletion, and your account will be permanently deleted."),
"descriptions": MessageLookupByLibrary.simpleMessage("Descriptions"),
"deviceLock": MessageLookupByLibrary.simpleMessage("Device lock"),
"editLocation": MessageLookupByLibrary.simpleMessage("Edit location"),
"editsToLocationWillOnlyBeSeenWithinEnte":
MessageLookupByLibrary.simpleMessage(
@@ -61,6 +63,7 @@ class MessageLookup extends MessageLookupByLibrary {
"email": MessageLookupByLibrary.simpleMessage("E-post"),
"enterPersonName":
MessageLookupByLibrary.simpleMessage("Enter person name"),
"enterPin": MessageLookupByLibrary.simpleMessage("Enter PIN"),
"enterValidEmail": MessageLookupByLibrary.simpleMessage(
"Vennligst skriv inn en gyldig e-postadresse."),
"enterYourEmailAddress": MessageLookupByLibrary.simpleMessage(
@@ -86,6 +89,14 @@ class MessageLookup extends MessageLookupByLibrary {
"Modify your query, or try searching for"),
"moveToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Move to hidden album"),
"next": MessageLookupByLibrary.simpleMessage("Next"),
"noSystemLockFound":
MessageLookupByLibrary.simpleMessage("No system lock found"),
"passwordLock": MessageLookupByLibrary.simpleMessage("Password lock"),
"pinLock": MessageLookupByLibrary.simpleMessage("PIN lock"),
"reenterPassword":
MessageLookupByLibrary.simpleMessage("Re-enter password"),
"reenterPin": MessageLookupByLibrary.simpleMessage("Re-enter PIN"),
"removePersonLabel":
MessageLookupByLibrary.simpleMessage("Remove person label"),
"search": MessageLookupByLibrary.simpleMessage("Search"),
@@ -93,6 +104,15 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Select a location"),
"selectALocationFirst":
MessageLookupByLibrary.simpleMessage("Select a location first"),
"setNewPassword":
MessageLookupByLibrary.simpleMessage("Set new password"),
"setNewPin": MessageLookupByLibrary.simpleMessage("Set new PIN"),
"tapToUnlock": MessageLookupByLibrary.simpleMessage("Tap to unlock"),
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen":
MessageLookupByLibrary.simpleMessage(
"To enable app lock, please setup device passcode or screen lock in your system settings."),
"tooManyIncorrectAttempts":
MessageLookupByLibrary.simpleMessage("Too many incorrect attempts"),
"verify": MessageLookupByLibrary.simpleMessage("Bekreft"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map")
};

File diff suppressed because it is too large Load Diff

View File

@@ -21,7 +21,7 @@ class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'pt';
static String m0(count) =>
"${Intl.plural(count, zero: 'Adicionar colaborador', one: 'Adicionar coloborador', other: 'Adicionar colaboradores')}";
"${Intl.plural(count, zero: 'Adicionar colaborador', one: 'Adicionar colaborador', other: 'Adicionar colaboradores')}";
static String m2(count) =>
"${Intl.plural(count, one: 'Adicionar item', other: 'Adicionar itens')}";
@@ -126,92 +126,94 @@ class MessageLookup extends MessageLookupByLibrary {
static String m36(albumName) => "Movido com sucesso para ${albumName}";
static String m37(passwordStrengthValue) =>
static String m37(name) => "Não é ${name}?";
static String m38(passwordStrengthValue) =>
"Segurança da senha: ${passwordStrengthValue}";
static String m38(providerName) =>
static String m39(providerName) =>
"Por favor, fale com o suporte ${providerName} se você foi cobrado";
static String m39(endDate) =>
static String m40(endDate) =>
"Teste gratuito válido até ${endDate}.\nVocê pode escolher um plano pago depois.";
static String m40(toEmail) =>
static String m41(toEmail) =>
"Por favor, envie-nos um e-mail para ${toEmail}";
static String m41(toEmail) => "Por favor, envie os logs para \n${toEmail}";
static String m42(toEmail) => "Por favor, envie os logs para \n${toEmail}";
static String m42(storeName) => "Avalie-nos em ${storeName}";
static String m43(storeName) => "Avalie-nos em ${storeName}";
static String m43(storageInGB) => "3. Ambos ganham ${storageInGB} GB* grátis";
static String m44(storageInGB) => "3. Ambos ganham ${storageInGB} GB* grátis";
static String m44(userEmail) =>
static String m45(userEmail) =>
"${userEmail} será removido deste álbum compartilhado\n\nQuaisquer fotos adicionadas por eles também serão removidas do álbum";
static String m45(endDate) => "Renovação de assinatura em ${endDate}";
static String m46(endDate) => "Renovação de assinatura em ${endDate}";
static String m46(count) =>
static String m47(count) =>
"${Intl.plural(count, one: '${count} resultado encontrado', other: '${count} resultado encontrado')}";
static String m47(count) => "${count} Selecionados";
static String m48(count) => "${count} Selecionados";
static String m48(count, yourCount) =>
static String m49(count, yourCount) =>
"${count} Selecionado (${yourCount} seus)";
static String m49(verificationID) =>
static String m50(verificationID) =>
"Aqui está meu ID de verificação para o Ente.io: ${verificationID}";
static String m50(verificationID) =>
static String m51(verificationID) =>
"Ei, você pode confirmar que este é seu ID de verificação do Ente.io? ${verificationID}";
static String m51(referralCode, referralStorageInGB) =>
static String m52(referralCode, referralStorageInGB) =>
"Código de referência do ente: ${referralCode} \n\nAplique em Configurações → Geral → Indicações para obter ${referralStorageInGB} GB gratuitamente após a sua inscrição em um plano pago\n\nhttps://ente.io";
static String m52(numberOfPeople) =>
static String m53(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Compartilhe com pessoas específicas', one: 'Compartilhado com 1 pessoa', other: 'Compartilhado com ${numberOfPeople} pessoas')}";
static String m53(emailIDs) => "Compartilhado com ${emailIDs}";
static String m54(fileType) =>
"Este(a) ${fileType} será excluído(a) do seu dispositivo.";
static String m54(emailIDs) => "Compartilhado com ${emailIDs}";
static String m55(fileType) =>
"Este(a) ${fileType} está tanto no Ente quanto no seu dispositivo.";
"Este(a) ${fileType} será excluído(a) do seu dispositivo.";
static String m56(fileType) =>
"Este(a) ${fileType} está tanto no Ente quanto no seu dispositivo.";
static String m57(fileType) =>
"Este(a) ${fileType} será excluído(a) do Ente.";
static String m57(storageAmountInGB) => "${storageAmountInGB} GB";
static String m58(storageAmountInGB) => "${storageAmountInGB} GB";
static String m58(
static String m59(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} de ${totalAmount} ${totalStorageUnit} usado";
static String m59(id) =>
static String m60(id) =>
"Seu ${id} já está vinculado a outra conta Ente.\nSe você gostaria de usar seu ${id} com esta conta, por favor contate nosso suporte\'\'";
static String m60(endDate) => "Sua assinatura será cancelada em ${endDate}";
static String m61(endDate) => "Sua assinatura será cancelada em ${endDate}";
static String m61(completed, total) =>
static String m62(completed, total) =>
"${completed}/${total} memórias preservadas";
static String m62(storageAmountInGB) =>
static String m63(storageAmountInGB) =>
"Eles também recebem ${storageAmountInGB} GB";
static String m63(email) => "Este é o ID de verificação de ${email}";
static String m64(email) => "Este é o ID de verificação de ${email}";
static String m64(count) =>
static String m65(count) =>
"${Intl.plural(count, zero: '', one: '1 dia', other: '${count} dias')}";
static String m65(endDate) => "Válido até ${endDate}";
static String m66(endDate) => "Válido até ${endDate}";
static String m66(email) => "Verificar ${email}";
static String m67(email) => "Verificar ${email}";
static String m67(email) => "Enviamos um e-mail à <green>${email}</green>";
static String m68(email) => "Enviamos um e-mail à <green>${email}</green>";
static String m68(count) =>
static String m69(count) =>
"${Intl.plural(count, one: '${count} anos atrás', other: '${count} anos atrás')}";
static String m69(storageSaved) =>
static String m70(storageSaved) =>
"Você liberou ${storageSaved} com sucesso!";
final messages = _notInlinedMessages(_notInlinedMessages);
@@ -228,7 +230,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Sessões ativas"),
"addAName": MessageLookupByLibrary.simpleMessage("Adicione um nome"),
"addANewEmail":
MessageLookupByLibrary.simpleMessage("Adicionar um novo email"),
MessageLookupByLibrary.simpleMessage("Adicionar um novo e-mail"),
"addCollaborator":
MessageLookupByLibrary.simpleMessage("Adicionar colaborador"),
"addCollaborators": m0,
@@ -306,6 +308,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Android, iOS, Web, Desktop"),
"androidSignInTitle":
MessageLookupByLibrary.simpleMessage("Autenticação necessária"),
"appLock": MessageLookupByLibrary.simpleMessage("Bloqueio de app"),
"appVersion": m7,
"appleId": MessageLookupByLibrary.simpleMessage("ID da Apple"),
"apply": MessageLookupByLibrary.simpleMessage("Aplicar"),
@@ -380,7 +383,7 @@ class MessageLookup extends MessageLookupByLibrary {
"available": MessageLookupByLibrary.simpleMessage("Disponível"),
"availableStorageSpace": m8,
"backedUpFolders":
MessageLookupByLibrary.simpleMessage("Backup de pastas concluído"),
MessageLookupByLibrary.simpleMessage("Pastas com backup"),
"backup": MessageLookupByLibrary.simpleMessage("Backup"),
"backupFailed":
MessageLookupByLibrary.simpleMessage("Erro ao efetuar o backup"),
@@ -429,7 +432,7 @@ class MessageLookup extends MessageLookupByLibrary {
"checkForUpdates":
MessageLookupByLibrary.simpleMessage("Verificar por atualizações"),
"checkInboxAndSpamFolder": MessageLookupByLibrary.simpleMessage(
"Verifique sua caixa de entrada (e spam) para concluir a verificação"),
"Verifique sua caixa de entrada (e spam) para concluir a verificação"),
"checkStatus": MessageLookupByLibrary.simpleMessage("Verificar status"),
"checking": MessageLookupByLibrary.simpleMessage("Verificando..."),
"claimFreeStorage": MessageLookupByLibrary.simpleMessage(
@@ -606,6 +609,8 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Insira o código"),
"deviceFilesAutoUploading": MessageLookupByLibrary.simpleMessage(
"Arquivos adicionados a este álbum do dispositivo serão automaticamente enviados para o Ente."),
"deviceLock":
MessageLookupByLibrary.simpleMessage("Bloqueio de dispositivo"),
"deviceLockExplanation": MessageLookupByLibrary.simpleMessage(
"Desative o bloqueio de tela do dispositivo quando o Ente estiver em primeiro plano e houver um backup em andamento. Isso normalmente não é necessário, mas pode ajudar nos envios grandes e importações iniciais de grandes bibliotecas a serem concluídos mais rapidamente."),
"deviceNotFound":
@@ -660,7 +665,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Verificação de e-mail"),
"emailYourLogs":
MessageLookupByLibrary.simpleMessage("Enviar por email seus logs"),
"empty": MessageLookupByLibrary.simpleMessage("Vazio"),
"empty": MessageLookupByLibrary.simpleMessage("Esvaziar"),
"emptyTrash":
MessageLookupByLibrary.simpleMessage("Esvaziar a lixeira?"),
"enableMaps": MessageLookupByLibrary.simpleMessage("Habilitar mapa"),
@@ -699,6 +704,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Insira a senha para criptografar seus dados"),
"enterPersonName":
MessageLookupByLibrary.simpleMessage("Inserir nome da pessoa"),
"enterPin": MessageLookupByLibrary.simpleMessage("Insira o PIN"),
"enterReferralCode": MessageLookupByLibrary.simpleMessage(
"Insira o código de referência"),
"enterThe6digitCodeFromnyourAuthenticatorApp":
@@ -735,7 +741,7 @@ class MessageLookup extends MessageLookupByLibrary {
"failedToFetchOriginalForEdit": MessageLookupByLibrary.simpleMessage(
"Falha ao obter original para edição"),
"failedToFetchReferralDetails": MessageLookupByLibrary.simpleMessage(
"Não foi possível buscar informações do produto. Por favor, tente novamente mais tarde."),
"Não foi possível buscar os detalhes de referência. Por favor, tente novamente mais tarde."),
"failedToLoadAlbums":
MessageLookupByLibrary.simpleMessage("Falha ao carregar álbuns"),
"failedToRenew":
@@ -1003,6 +1009,7 @@ class MessageLookup extends MessageLookupByLibrary {
"newAlbum": MessageLookupByLibrary.simpleMessage("Novo álbum"),
"newToEnte": MessageLookupByLibrary.simpleMessage("Novo no Ente"),
"newest": MessageLookupByLibrary.simpleMessage("Mais recente"),
"next": MessageLookupByLibrary.simpleMessage("Próximo"),
"no": MessageLookupByLibrary.simpleMessage("Não"),
"noAlbumsSharedByYouYet": MessageLookupByLibrary.simpleMessage(
"Nenhum álbum compartilhado por você ainda"),
@@ -1032,6 +1039,9 @@ class MessageLookup extends MessageLookupByLibrary {
"noResults": MessageLookupByLibrary.simpleMessage("Nenhum resultado"),
"noResultsFound":
MessageLookupByLibrary.simpleMessage("Nenhum resultado encontrado"),
"noSystemLockFound": MessageLookupByLibrary.simpleMessage(
"Nenhum bloqueio de sistema encontrado"),
"notPersonLabel": m37,
"nothingSharedWithYouYet": MessageLookupByLibrary.simpleMessage(
"Nada compartilhado com você ainda"),
"nothingToSeeHere":
@@ -1069,7 +1079,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Senha alterada com sucesso"),
"passwordLock":
MessageLookupByLibrary.simpleMessage("Bloqueio de senha"),
"passwordStrength": m37,
"passwordStrength": m38,
"passwordWarning": MessageLookupByLibrary.simpleMessage(
"Nós não salvamos essa senha, se você esquecer <underline> nós não poderemos descriptografar seus dados</underline>"),
"paymentDetails":
@@ -1078,7 +1088,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Falha no pagamento"),
"paymentFailedMessage": MessageLookupByLibrary.simpleMessage(
"Infelizmente o seu pagamento falhou. Entre em contato com o suporte e nós ajudaremos você!"),
"paymentFailedTalkToProvider": m38,
"paymentFailedTalkToProvider": m39,
"pendingItems": MessageLookupByLibrary.simpleMessage("Itens pendentes"),
"pendingSync":
MessageLookupByLibrary.simpleMessage("Sincronização pendente"),
@@ -1103,9 +1113,10 @@ class MessageLookup extends MessageLookupByLibrary {
"pickCenterPoint":
MessageLookupByLibrary.simpleMessage("Escolha o ponto central"),
"pinAlbum": MessageLookupByLibrary.simpleMessage("Fixar álbum"),
"pinLock": MessageLookupByLibrary.simpleMessage("Bloqueio PIN"),
"playOnTv":
MessageLookupByLibrary.simpleMessage("Reproduzir álbum na TV"),
"playStoreFreeTrialValidTill": m39,
"playStoreFreeTrialValidTill": m40,
"playstoreSubscription":
MessageLookupByLibrary.simpleMessage("Assinatura da PlayStore"),
"pleaseCheckYourInternetConnectionAndTryAgain":
@@ -1117,12 +1128,12 @@ class MessageLookup extends MessageLookupByLibrary {
"pleaseContactSupportIfTheProblemPersists":
MessageLookupByLibrary.simpleMessage(
"Por favor, contate o suporte se o problema persistir"),
"pleaseEmailUsAt": m40,
"pleaseEmailUsAt": m41,
"pleaseGrantPermissions": MessageLookupByLibrary.simpleMessage(
"Por favor, conceda as permissões"),
"pleaseLoginAgain": MessageLookupByLibrary.simpleMessage(
"Por favor, faça login novamente"),
"pleaseSendTheLogsTo": m41,
"pleaseSendTheLogsTo": m42,
"pleaseTryAgain":
MessageLookupByLibrary.simpleMessage("Por favor, tente novamente"),
"pleaseVerifyTheCodeYouHaveEntered":
@@ -1159,7 +1170,7 @@ class MessageLookup extends MessageLookupByLibrary {
"rateTheApp":
MessageLookupByLibrary.simpleMessage("Avalie o aplicativo"),
"rateUs": MessageLookupByLibrary.simpleMessage("Avalie-nos"),
"rateUsOnStore": m42,
"rateUsOnStore": m43,
"recover": MessageLookupByLibrary.simpleMessage("Recuperar"),
"recoverAccount":
MessageLookupByLibrary.simpleMessage("Recuperar conta"),
@@ -1185,13 +1196,16 @@ class MessageLookup extends MessageLookupByLibrary {
"recreatePasswordTitle":
MessageLookupByLibrary.simpleMessage("Redefinir senha"),
"reddit": MessageLookupByLibrary.simpleMessage("Reddit"),
"reenterPassword":
MessageLookupByLibrary.simpleMessage("Reinserir senha"),
"reenterPin": MessageLookupByLibrary.simpleMessage("Reinserir PIN"),
"referFriendsAnd2xYourPlan": MessageLookupByLibrary.simpleMessage(
"Indique amigos e 2x seu plano"),
"referralStep1": MessageLookupByLibrary.simpleMessage(
"Envie esse código aos seus amigos"),
"referralStep2": MessageLookupByLibrary.simpleMessage(
"2. Eles se inscreveram para um plano pago"),
"referralStep3": m43,
"referralStep3": m44,
"referrals": MessageLookupByLibrary.simpleMessage("Referências"),
"referralsAreCurrentlyPaused": MessageLookupByLibrary.simpleMessage(
"Referências estão atualmente pausadas"),
@@ -1217,7 +1231,7 @@ class MessageLookup extends MessageLookupByLibrary {
"removeLink": MessageLookupByLibrary.simpleMessage("Remover link"),
"removeParticipant":
MessageLookupByLibrary.simpleMessage("Remover participante"),
"removeParticipantBody": m44,
"removeParticipantBody": m45,
"removePersonLabel":
MessageLookupByLibrary.simpleMessage("Remover etiqueta da pessoa"),
"removePublicLink":
@@ -1233,7 +1247,7 @@ class MessageLookup extends MessageLookupByLibrary {
"renameFile": MessageLookupByLibrary.simpleMessage("Renomear arquivo"),
"renewSubscription":
MessageLookupByLibrary.simpleMessage("Renovar assinatura"),
"renewsOn": m45,
"renewsOn": m46,
"reportABug":
MessageLookupByLibrary.simpleMessage("Reportar um problema"),
"reportBug":
@@ -1305,7 +1319,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Fotos de grupo que estão sendo tiradas em algum raio da foto"),
"searchPeopleEmptySection": MessageLookupByLibrary.simpleMessage(
"Convide pessoas e você verá todas as fotos compartilhadas por elas aqui"),
"searchResultCount": m46,
"searchResultCount": m47,
"security": MessageLookupByLibrary.simpleMessage("Segurança"),
"selectALocation":
MessageLookupByLibrary.simpleMessage("Selecionar um local"),
@@ -1333,14 +1347,14 @@ class MessageLookup extends MessageLookupByLibrary {
"selectedItemsWillBeDeletedFromAllAlbumsAndMoved":
MessageLookupByLibrary.simpleMessage(
"Os itens selecionados serão excluídos de todos os álbuns e movidos para a lixeira."),
"selectedPhotos": m47,
"selectedPhotosWithYours": m48,
"selectedPhotos": m48,
"selectedPhotosWithYours": m49,
"send": MessageLookupByLibrary.simpleMessage("Enviar"),
"sendEmail": MessageLookupByLibrary.simpleMessage("Enviar e-mail"),
"sendInvite": MessageLookupByLibrary.simpleMessage("Enviar convite"),
"sendLink": MessageLookupByLibrary.simpleMessage("Enviar link"),
"serverEndpoint":
MessageLookupByLibrary.simpleMessage("Servidor endpoint"),
MessageLookupByLibrary.simpleMessage("Endpoint do servidor"),
"sessionExpired":
MessageLookupByLibrary.simpleMessage("Sessão expirada"),
"setAPassword":
@@ -1348,6 +1362,9 @@ class MessageLookup extends MessageLookupByLibrary {
"setAs": MessageLookupByLibrary.simpleMessage("Definir como"),
"setCover": MessageLookupByLibrary.simpleMessage("Definir capa"),
"setLabel": MessageLookupByLibrary.simpleMessage("Aplicar"),
"setNewPassword":
MessageLookupByLibrary.simpleMessage("Defina nova senha"),
"setNewPin": MessageLookupByLibrary.simpleMessage("Definir novo PIN"),
"setPasswordTitle":
MessageLookupByLibrary.simpleMessage("Definir senha"),
"setRadius": MessageLookupByLibrary.simpleMessage("Definir raio"),
@@ -1360,16 +1377,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Compartilhar um álbum agora"),
"shareLink": MessageLookupByLibrary.simpleMessage("Compartilhar link"),
"shareMyVerificationID": m49,
"shareMyVerificationID": m50,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Compartilhar apenas com as pessoas que você quiser"),
"shareTextConfirmOthersVerificationID": m50,
"shareTextConfirmOthersVerificationID": m51,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Baixe o Ente para que possamos compartilhar facilmente fotos e vídeos de qualidade original\n\nhttps://ente.io"),
"shareTextReferralCode": m51,
"shareTextReferralCode": m52,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Compartilhar com usuários não-Ente"),
"shareWithPeopleSectionTitle": m52,
"shareWithPeopleSectionTitle": m53,
"shareYourFirstAlbum": MessageLookupByLibrary.simpleMessage(
"Compartilhar seu primeiro álbum"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1382,7 +1399,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Novas fotos compartilhadas"),
"sharedPhotoNotificationsExplanation": MessageLookupByLibrary.simpleMessage(
"Receber notificações quando alguém adicionar uma foto em um álbum compartilhado que você faz parte"),
"sharedWith": m53,
"sharedWith": m54,
"sharedWithMe":
MessageLookupByLibrary.simpleMessage("Compartilhado comigo"),
"sharedWithYou":
@@ -1398,11 +1415,11 @@ class MessageLookup extends MessageLookupByLibrary {
"Encerrar sessão em outros dispositivos"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"Eu concordo com os <u-terms>termos de serviço</u-terms> e a <u-policy>política de privacidade</u-policy>"),
"singleFileDeleteFromDevice": m54,
"singleFileDeleteFromDevice": m55,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Será excluído de todos os álbuns."),
"singleFileInBothLocalAndRemote": m55,
"singleFileInRemoteOnly": m56,
"singleFileInBothLocalAndRemote": m56,
"singleFileInRemoteOnly": m57,
"skip": MessageLookupByLibrary.simpleMessage("Pular"),
"social": MessageLookupByLibrary.simpleMessage("Redes sociais"),
"someItemsAreInBothEnteAndYourDevice":
@@ -1447,13 +1464,13 @@ class MessageLookup extends MessageLookupByLibrary {
"storage": MessageLookupByLibrary.simpleMessage("Armazenamento"),
"storageBreakupFamily": MessageLookupByLibrary.simpleMessage("Família"),
"storageBreakupYou": MessageLookupByLibrary.simpleMessage("Você"),
"storageInGB": m57,
"storageInGB": m58,
"storageLimitExceeded": MessageLookupByLibrary.simpleMessage(
"Limite de armazenamento excedido"),
"storageUsageInfo": m58,
"storageUsageInfo": m59,
"strongStrength": MessageLookupByLibrary.simpleMessage("Forte"),
"subAlreadyLinkedErrMessage": m59,
"subWillBeCancelledOn": m60,
"subAlreadyLinkedErrMessage": m60,
"subWillBeCancelledOn": m61,
"subscribe": MessageLookupByLibrary.simpleMessage("Assinar"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Parece que sua assinatura expirou. Por favor inscreva-se para ativar o compartilhamento."),
@@ -1470,7 +1487,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Sugerir recurso"),
"support": MessageLookupByLibrary.simpleMessage("Suporte"),
"syncProgress": m61,
"syncProgress": m62,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Sincronização interrompida"),
"syncing": MessageLookupByLibrary.simpleMessage("Sincronizando..."),
@@ -1478,6 +1495,8 @@ class MessageLookup extends MessageLookupByLibrary {
"tapToCopy": MessageLookupByLibrary.simpleMessage("toque para copiar"),
"tapToEnterCode":
MessageLookupByLibrary.simpleMessage("Toque para inserir código"),
"tapToUnlock":
MessageLookupByLibrary.simpleMessage("Toque para desbloquear"),
"tempErrorContactSupportIfPersists": MessageLookupByLibrary.simpleMessage(
"Parece que algo deu errado. Por favor, tente novamente mais tarde. Se o erro persistir, entre em contato com nossa equipe de suporte."),
"terminate": MessageLookupByLibrary.simpleMessage("Encerrar"),
@@ -1497,7 +1516,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Estes itens serão excluídos do seu dispositivo."),
"theyAlsoGetXGb": m62,
"theyAlsoGetXGb": m63,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Eles(a) serão excluídos(as) de todos os álbuns."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@@ -1513,7 +1532,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Este e-mail já está em uso"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Esta imagem não tem dados exif"),
"thisIsPersonVerificationId": m63,
"thisIsPersonVerificationId": m64,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"Este é o seu ID de verificação"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1521,15 +1540,20 @@ class MessageLookup extends MessageLookupByLibrary {
"Isso fará com que você saia do seguinte dispositivo:"),
"thisWillLogYouOutOfThisDevice": MessageLookupByLibrary.simpleMessage(
"Isso fará com que você saia deste dispositivo!"),
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen":
MessageLookupByLibrary.simpleMessage(
"Para ativar o bloqueio de app, por favor ative um método de autenticação nas configurações do sistema do seu dispositivo."),
"toHideAPhotoOrVideo": MessageLookupByLibrary.simpleMessage(
"Para ocultar uma foto ou vídeo"),
"toResetVerifyEmail": MessageLookupByLibrary.simpleMessage(
"Para redefinir a sua senha, por favor verifique o seu email primeiro."),
"Para redefinir a sua senha, por favor verifique o seu e-mail primeiro."),
"todaysLogs": MessageLookupByLibrary.simpleMessage("Logs de hoje"),
"tooManyIncorrectAttempts": MessageLookupByLibrary.simpleMessage(
"Muitas tentativas incorretas"),
"total": MessageLookupByLibrary.simpleMessage("total"),
"totalSize": MessageLookupByLibrary.simpleMessage("Tamanho total"),
"trash": MessageLookupByLibrary.simpleMessage("Lixeira"),
"trashDaysLeft": m64,
"trashDaysLeft": m65,
"trim": MessageLookupByLibrary.simpleMessage("Cortar"),
"tryAgain": MessageLookupByLibrary.simpleMessage("Tente novamente"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
@@ -1575,6 +1599,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Até 50% de desconto, até 4 de dezembro."),
"usableReferralStorageInfo": MessageLookupByLibrary.simpleMessage(
"Armazenamento utilizável é limitado pelo seu plano atual. O armazenamento reivindicado em excesso se tornará utilizável automaticamente quando você fizer a melhoria do seu plano."),
"useAsCover": MessageLookupByLibrary.simpleMessage("Usar como capa"),
"usePublicLinksForPeopleNotOnEnte":
MessageLookupByLibrary.simpleMessage(
"Usar links públicos para pessoas que não estão no Ente"),
@@ -1583,7 +1608,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Utilizar foto selecionada"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Espaço em uso"),
"validTill": m65,
"validTill": m66,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Falha na verificação, por favor, tente novamente"),
@@ -1591,7 +1616,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("ID de Verificação"),
"verify": MessageLookupByLibrary.simpleMessage("Verificar"),
"verifyEmail": MessageLookupByLibrary.simpleMessage("Verificar e-mail"),
"verifyEmailID": m66,
"verifyEmailID": m67,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Verificar"),
"verifyPasskey":
MessageLookupByLibrary.simpleMessage("Verificar chave de acesso"),
@@ -1628,13 +1653,13 @@ class MessageLookup extends MessageLookupByLibrary {
"weDontSupportEditingPhotosAndAlbumsThatYouDont":
MessageLookupByLibrary.simpleMessage(
"Não suportamos a edição de fotos e álbuns que você ainda não possui"),
"weHaveSendEmailTo": m67,
"weHaveSendEmailTo": m68,
"weakStrength": MessageLookupByLibrary.simpleMessage("Fraca"),
"welcomeBack":
MessageLookupByLibrary.simpleMessage("Bem-vindo de volta!"),
"whatsNew": MessageLookupByLibrary.simpleMessage("O que há de novo"),
"yearly": MessageLookupByLibrary.simpleMessage("Anual"),
"yearsAgo": m68,
"yearsAgo": m69,
"yes": MessageLookupByLibrary.simpleMessage("Sim"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Sim, cancelar"),
"yesConvertToViewer": MessageLookupByLibrary.simpleMessage(
@@ -1665,7 +1690,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Você não pode compartilhar consigo mesmo"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"Você não tem nenhum item arquivado."),
"youHaveSuccessfullyFreedUp": m69,
"youHaveSuccessfullyFreedUp": m70,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("Sua conta foi excluída"),
"yourMap": MessageLookupByLibrary.simpleMessage("Seu mapa"),

View File

@@ -127,90 +127,90 @@ class MessageLookup extends MessageLookupByLibrary {
static String m36(albumName) => "Успешно перемещено в ${albumName}";
static String m37(passwordStrengthValue) =>
static String m38(passwordStrengthValue) =>
"Мощность пароля: ${passwordStrengthValue}";
static String m38(providerName) =>
static String m39(providerName) =>
"Если с вас сняли оплату, обратитесь в службу поддержки ${providerName}";
static String m39(endDate) =>
static String m40(endDate) =>
"Бесплатный пробный период до ${endDate}.\nПосле, вы сможете выбрать платный план.";
static String m40(toEmail) => "Пожалуйста, напишите нам на ${toEmail}";
static String m41(toEmail) => "Пожалуйста, напишите нам на ${toEmail}";
static String m41(toEmail) => "Пожалуйста, отправьте логи на \n${toEmail}";
static String m42(toEmail) => "Пожалуйста, отправьте логи на \n${toEmail}";
static String m42(storeName) => "Оцените нас в ${storeName}";
static String m43(storeName) => "Оцените нас в ${storeName}";
static String m43(storageInGB) =>
static String m44(storageInGB) =>
"3. Вы оба получаете ${storageInGB} Гигабайт* бесплатно";
static String m44(userEmail) =>
static String m45(userEmail) =>
"${userEmail} будет удален из этого общего альбома\n\nВсе добавленные им фотографии также будут удалены из альбома";
static String m45(endDate) => "Обновление подписки на ${endDate}";
static String m46(endDate) => "Обновление подписки на ${endDate}";
static String m46(count) =>
static String m47(count) =>
"${Intl.plural(count, one: '${count} результат найден', other: '${count} результатов найдено')}";
static String m47(count) => "${count} выбрано";
static String m48(count) => "${count} выбрано";
static String m48(count, yourCount) => "${count} выбрано (${yourCount} ваши)";
static String m49(verificationID) =>
"Вот мой проверочный ID: ${verificationID} для ente.io.";
static String m49(count, yourCount) => "${count} выбрано (${yourCount} ваши)";
static String m50(verificationID) =>
"Вот мой проверочный ID: ${verificationID} для ente.io.";
static String m51(verificationID) =>
"Эй, вы можете подтвердить, что это ваш идентификатор подтверждения ente.io: ${verificationID}";
static String m51(referralCode, referralStorageInGB) =>
static String m52(referralCode, referralStorageInGB) =>
"Реферальный код Ente: ${referralCode} \n\nПримените его в разделе «Настройки» → «Основные» → «Рефералы», чтобы получить ${referralStorageInGB} Гигабайт бесплатно после того как вы подпишетесь на платный план";
static String m52(numberOfPeople) =>
static String m53(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Поделится с конкретными людьми', one: 'Поделено с 1 человеком', other: 'Поделено с ${numberOfPeople} людьми')}";
static String m53(emailIDs) => "Поделиться с ${emailIDs}";
static String m54(fileType) =>
"Это ${fileType} будет удалено с вашего устройства.";
static String m54(emailIDs) => "Поделиться с ${emailIDs}";
static String m55(fileType) =>
"Это ${fileType} будет удалено с вашего устройства.";
static String m56(fileType) =>
"Этот ${fileType} есть и в Ente, и на вашем устройстве.";
static String m56(fileType) => "Этот ${fileType} будет удалён из Ente.";
static String m57(fileType) => "Этот ${fileType} будет удалён из Ente.";
static String m57(storageAmountInGB) => "${storageAmountInGB} Гигабайт";
static String m58(storageAmountInGB) => "${storageAmountInGB} Гигабайт";
static String m58(
static String m59(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} из ${totalAmount} ${totalStorageUnit} использовано";
static String m59(id) =>
static String m60(id) =>
"Ваш ${id} уже связан с другой учетной записью Ente.\nЕсли вы хотите использовать ${id} с этой учетной записью, пожалуйста, свяжитесь с нашей службой поддержки";
static String m60(endDate) => "Ваша подписка будет отменена ${endDate}";
static String m61(endDate) => "Ваша подписка будет отменена ${endDate}";
static String m61(completed, total) => "${completed}/${total} сохранено";
static String m62(completed, total) => "${completed}/${total} сохранено";
static String m62(storageAmountInGB) =>
static String m63(storageAmountInGB) =>
"Они тоже получат ${storageAmountInGB} Гигабайт";
static String m63(email) =>
static String m64(email) =>
"Этот идентификатор подтверждения пользователя ${email}";
static String m64(count) =>
static String m65(count) =>
"${Intl.plural(count, zero: '', one: '1 день', other: '${count} дней')}";
static String m65(endDate) => "Действителен по ${endDate}";
static String m66(endDate) => "Действителен по ${endDate}";
static String m66(email) => "Подтвердить ${email}";
static String m67(email) => "Подтвердить ${email}";
static String m67(email) => "Мы отправили письмо на <green>${email}</green>";
static String m68(email) => "Мы отправили письмо на <green>${email}</green>";
static String m68(count) =>
static String m69(count) =>
"${Intl.plural(count, one: '${count} год назад', other: '${count} лет назад')}";
static String m69(storageSaved) => "Вы успешно освободили ${storageSaved}!";
static String m70(storageSaved) => "Вы успешно освободили ${storageSaved}!";
final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
@@ -304,6 +304,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Android, iOS, Web, ПК"),
"androidSignInTitle":
MessageLookupByLibrary.simpleMessage("Требуется аутентификация"),
"appLock": MessageLookupByLibrary.simpleMessage("App lock"),
"appVersion": m7,
"appleId": MessageLookupByLibrary.simpleMessage("Apple ID"),
"apply": MessageLookupByLibrary.simpleMessage("Применить"),
@@ -609,6 +610,7 @@ class MessageLookup extends MessageLookupByLibrary {
"deviceCodeHint": MessageLookupByLibrary.simpleMessage("Введите код"),
"deviceFilesAutoUploading": MessageLookupByLibrary.simpleMessage(
"Файлы, добавленные в этот альбом на устройстве, будут автоматически загружены в Ente."),
"deviceLock": MessageLookupByLibrary.simpleMessage("Device lock"),
"deviceLockExplanation": MessageLookupByLibrary.simpleMessage(
"Отключить блокировку экрана, когда Ente находится на переднем плане и выполняется резервное копирование. Обычно это не нужно, но это может ускорить загрузку и первоначальный импорт больших библиотек."),
"deviceNotFound":
@@ -700,6 +702,7 @@ class MessageLookup extends MessageLookupByLibrary {
"enterPasswordToEncrypt": MessageLookupByLibrary.simpleMessage(
"Введите пароль, который мы можем использовать для шифрования ваших данных"),
"enterPersonName": MessageLookupByLibrary.simpleMessage("Введите имя"),
"enterPin": MessageLookupByLibrary.simpleMessage("Enter PIN"),
"enterReferralCode":
MessageLookupByLibrary.simpleMessage("Введите реферальный код"),
"enterThe6digitCodeFromnyourAuthenticatorApp":
@@ -1005,6 +1008,7 @@ class MessageLookup extends MessageLookupByLibrary {
"newAlbum": MessageLookupByLibrary.simpleMessage("Новый альбом"),
"newToEnte": MessageLookupByLibrary.simpleMessage("Впервые в Ente"),
"newest": MessageLookupByLibrary.simpleMessage("Самые новые"),
"next": MessageLookupByLibrary.simpleMessage("Next"),
"no": MessageLookupByLibrary.simpleMessage("Нет"),
"noAlbumsSharedByYouYet":
MessageLookupByLibrary.simpleMessage("У вас пока нет альбомов"),
@@ -1035,6 +1039,8 @@ class MessageLookup extends MessageLookupByLibrary {
"noResults": MessageLookupByLibrary.simpleMessage("Ничего не найденo"),
"noResultsFound":
MessageLookupByLibrary.simpleMessage("Ничего не найдено"),
"noSystemLockFound":
MessageLookupByLibrary.simpleMessage("No system lock found"),
"nothingSharedWithYouYet": MessageLookupByLibrary.simpleMessage(
"Пока никто не поделился с вами"),
"nothingToSeeHere":
@@ -1073,7 +1079,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Пароль успешно изменён"),
"passwordLock":
MessageLookupByLibrary.simpleMessage("Блокировка паролем"),
"passwordStrength": m37,
"passwordStrength": m38,
"passwordWarning": MessageLookupByLibrary.simpleMessage(
"Мы не храним этот пароль, поэтому если вы забудете его, <underline>мы не сможем расшифровать ваши данные</underline>"),
"paymentDetails":
@@ -1081,7 +1087,7 @@ class MessageLookup extends MessageLookupByLibrary {
"paymentFailed": MessageLookupByLibrary.simpleMessage("Сбой платежа"),
"paymentFailedMessage": MessageLookupByLibrary.simpleMessage(
"К сожалению, ваш платеж не был выполнен. Пожалуйста, свяжитесь со службой поддержки, и мы вам поможем!"),
"paymentFailedTalkToProvider": m38,
"paymentFailedTalkToProvider": m39,
"pendingItems":
MessageLookupByLibrary.simpleMessage("Отложенные элементы"),
"pendingSync":
@@ -1107,9 +1113,10 @@ class MessageLookup extends MessageLookupByLibrary {
"pickCenterPoint":
MessageLookupByLibrary.simpleMessage("Указать центральную точку"),
"pinAlbum": MessageLookupByLibrary.simpleMessage("Закрепить альбом"),
"pinLock": MessageLookupByLibrary.simpleMessage("PIN lock"),
"playOnTv":
MessageLookupByLibrary.simpleMessage("Воспроизвести альбом на ТВ"),
"playStoreFreeTrialValidTill": m39,
"playStoreFreeTrialValidTill": m40,
"playstoreSubscription":
MessageLookupByLibrary.simpleMessage("Подписка на PlayStore"),
"pleaseCheckYourInternetConnectionAndTryAgain":
@@ -1121,12 +1128,12 @@ class MessageLookup extends MessageLookupByLibrary {
"pleaseContactSupportIfTheProblemPersists":
MessageLookupByLibrary.simpleMessage(
"Если проблема не устранена, обратитесь в службу поддержки"),
"pleaseEmailUsAt": m40,
"pleaseEmailUsAt": m41,
"pleaseGrantPermissions":
MessageLookupByLibrary.simpleMessage("Предоставьте разрешение"),
"pleaseLoginAgain":
MessageLookupByLibrary.simpleMessage("Пожалуйста, войдите снова"),
"pleaseSendTheLogsTo": m41,
"pleaseSendTheLogsTo": m42,
"pleaseTryAgain": MessageLookupByLibrary.simpleMessage(
"Пожалуйста, попробуйте ещё раз"),
"pleaseVerifyTheCodeYouHaveEntered":
@@ -1163,7 +1170,7 @@ class MessageLookup extends MessageLookupByLibrary {
"rateTheApp":
MessageLookupByLibrary.simpleMessage("Оценить приложение"),
"rateUs": MessageLookupByLibrary.simpleMessage("Оцените нас"),
"rateUsOnStore": m42,
"rateUsOnStore": m43,
"recover": MessageLookupByLibrary.simpleMessage("Восстановить"),
"recoverAccount":
MessageLookupByLibrary.simpleMessage("Восстановить аккаунт"),
@@ -1189,13 +1196,16 @@ class MessageLookup extends MessageLookupByLibrary {
"recreatePasswordTitle":
MessageLookupByLibrary.simpleMessage("Сбросить пароль"),
"reddit": MessageLookupByLibrary.simpleMessage("Reddit"),
"reenterPassword":
MessageLookupByLibrary.simpleMessage("Re-enter password"),
"reenterPin": MessageLookupByLibrary.simpleMessage("Re-enter PIN"),
"referFriendsAnd2xYourPlan": MessageLookupByLibrary.simpleMessage(
"Пригласите друзей и удвойте свой план"),
"referralStep1": MessageLookupByLibrary.simpleMessage(
"1. Дайте этот код своим друзьям"),
"referralStep2": MessageLookupByLibrary.simpleMessage(
"2. Они подписываются на платный план"),
"referralStep3": m43,
"referralStep3": m44,
"referrals": MessageLookupByLibrary.simpleMessage("Рефералы"),
"referralsAreCurrentlyPaused": MessageLookupByLibrary.simpleMessage(
"Рефералы в настоящее время приостановлены"),
@@ -1222,7 +1232,7 @@ class MessageLookup extends MessageLookupByLibrary {
"removeLink": MessageLookupByLibrary.simpleMessage("Удалить ссылку"),
"removeParticipant":
MessageLookupByLibrary.simpleMessage("Исключить участника"),
"removeParticipantBody": m44,
"removeParticipantBody": m45,
"removePersonLabel":
MessageLookupByLibrary.simpleMessage("Удалить метку человека"),
"removePublicLink":
@@ -1240,7 +1250,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Переименовать файл"),
"renewSubscription":
MessageLookupByLibrary.simpleMessage("Продлить подписку"),
"renewsOn": m45,
"renewsOn": m46,
"reportABug":
MessageLookupByLibrary.simpleMessage("Сообщить об ошибке"),
"reportBug": MessageLookupByLibrary.simpleMessage("Сообщить об ошибке"),
@@ -1308,7 +1318,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Групповые фотографии, сделанные в некотором радиусе от фотографии"),
"searchPeopleEmptySection": MessageLookupByLibrary.simpleMessage(
"Пригласите людей, и вы увидите все фотографии, которыми они поделились здесь"),
"searchResultCount": m46,
"searchResultCount": m47,
"security": MessageLookupByLibrary.simpleMessage("Безопасность"),
"selectALocation":
MessageLookupByLibrary.simpleMessage("Выбрать место"),
@@ -1334,8 +1344,8 @@ class MessageLookup extends MessageLookupByLibrary {
"selectedItemsWillBeDeletedFromAllAlbumsAndMoved":
MessageLookupByLibrary.simpleMessage(
"Выбранные элементы будут удалены из всех альбомов и перемещены в корзину."),
"selectedPhotos": m47,
"selectedPhotosWithYours": m48,
"selectedPhotos": m48,
"selectedPhotosWithYours": m49,
"send": MessageLookupByLibrary.simpleMessage("Отправить"),
"sendEmail": MessageLookupByLibrary.simpleMessage(
"Отправить электронное письмо"),
@@ -1351,6 +1361,9 @@ class MessageLookup extends MessageLookupByLibrary {
"setAs": MessageLookupByLibrary.simpleMessage("Установить как"),
"setCover": MessageLookupByLibrary.simpleMessage("Установить обложку"),
"setLabel": MessageLookupByLibrary.simpleMessage("Установить"),
"setNewPassword":
MessageLookupByLibrary.simpleMessage("Set new password"),
"setNewPin": MessageLookupByLibrary.simpleMessage("Set new PIN"),
"setPasswordTitle":
MessageLookupByLibrary.simpleMessage("Установить пароль"),
"setRadius": MessageLookupByLibrary.simpleMessage("Установить радиус"),
@@ -1364,16 +1377,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Поделиться альбомом сейчас"),
"shareLink": MessageLookupByLibrary.simpleMessage("Поделиться ссылкой"),
"shareMyVerificationID": m49,
"shareMyVerificationID": m50,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Поделитесь только с теми людьми, с которыми вы хотите"),
"shareTextConfirmOthersVerificationID": m50,
"shareTextConfirmOthersVerificationID": m51,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Скачай Ente, чтобы мы могли легко поделиться фотографиями и видео без сжатия\n\nhttps://ente.io"),
"shareTextReferralCode": m51,
"shareTextReferralCode": m52,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Поделится с пользователями без Ente"),
"shareWithPeopleSectionTitle": m52,
"shareWithPeopleSectionTitle": m53,
"shareYourFirstAlbum":
MessageLookupByLibrary.simpleMessage("Поделиться первым альбомом"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1384,7 +1397,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Новые общие фотографии"),
"sharedPhotoNotificationsExplanation": MessageLookupByLibrary.simpleMessage(
"Получать уведомления, когда кто-то добавляет фото в общий альбом, в котором вы состоите"),
"sharedWith": m53,
"sharedWith": m54,
"sharedWithMe":
MessageLookupByLibrary.simpleMessage("Поделиться со мной"),
"sharedWithYou":
@@ -1400,11 +1413,11 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Выйти из других устройств"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"Я согласен с <u-terms>условиями предоставления услуг</u-terms> и <u-policy>политикой конфиденциальности</u-policy>"),
"singleFileDeleteFromDevice": m54,
"singleFileDeleteFromDevice": m55,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Он будет удален из всех альбомов."),
"singleFileInBothLocalAndRemote": m55,
"singleFileInRemoteOnly": m56,
"singleFileInBothLocalAndRemote": m56,
"singleFileInRemoteOnly": m57,
"skip": MessageLookupByLibrary.simpleMessage("Пропустить"),
"social": MessageLookupByLibrary.simpleMessage("Соцсети"),
"someItemsAreInBothEnteAndYourDevice": MessageLookupByLibrary.simpleMessage(
@@ -1448,13 +1461,13 @@ class MessageLookup extends MessageLookupByLibrary {
"storage": MessageLookupByLibrary.simpleMessage("Хранилище"),
"storageBreakupFamily": MessageLookupByLibrary.simpleMessage("Семья"),
"storageBreakupYou": MessageLookupByLibrary.simpleMessage("Вы"),
"storageInGB": m57,
"storageInGB": m58,
"storageLimitExceeded":
MessageLookupByLibrary.simpleMessage("Превышен предел хранения"),
"storageUsageInfo": m58,
"storageUsageInfo": m59,
"strongStrength": MessageLookupByLibrary.simpleMessage("Сильный"),
"subAlreadyLinkedErrMessage": m59,
"subWillBeCancelledOn": m60,
"subAlreadyLinkedErrMessage": m60,
"subWillBeCancelledOn": m61,
"subscribe": MessageLookupByLibrary.simpleMessage("Подписаться"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Похоже, ваша подписка истекла. Пожалуйста, подпишитесь, чтобы включить функцию общего доступа."),
@@ -1471,7 +1484,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Предложить идею"),
"support": MessageLookupByLibrary.simpleMessage("Поддержка"),
"syncProgress": m61,
"syncProgress": m62,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Синхронизация остановлена"),
"syncing": MessageLookupByLibrary.simpleMessage("Синхронизация..."),
@@ -1480,6 +1493,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("нажмите, чтобы скопировать"),
"tapToEnterCode":
MessageLookupByLibrary.simpleMessage("Нажмите, чтобы ввести код"),
"tapToUnlock": MessageLookupByLibrary.simpleMessage("Tap to unlock"),
"tempErrorContactSupportIfPersists": MessageLookupByLibrary.simpleMessage(
"Похоже, что-то пошло не так. Пожалуйста, повторите попытку через некоторое время. Если ошибка повторится, обратитесь в нашу службу поддержки."),
"terminate": MessageLookupByLibrary.simpleMessage("Завершить"),
@@ -1500,7 +1514,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Эти элементы будут удалено с вашего устройства."),
"theyAlsoGetXGb": m62,
"theyAlsoGetXGb": m63,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Они будут удален из всех альбомов."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@@ -1516,7 +1530,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Этот адрес электронной почты уже используется"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Это изображение не имеет exif данных"),
"thisIsPersonVerificationId": m63,
"thisIsPersonVerificationId": m64,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"Это ваш идентификатор подтверждения"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1524,15 +1538,20 @@ class MessageLookup extends MessageLookupByLibrary {
"Вы выйдете из списка следующих устройств:"),
"thisWillLogYouOutOfThisDevice": MessageLookupByLibrary.simpleMessage(
"Совершив это действие, Вы выйдете из своей учетной записи!"),
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen":
MessageLookupByLibrary.simpleMessage(
"To enable app lock, please setup device passcode or screen lock in your system settings."),
"toHideAPhotoOrVideo":
MessageLookupByLibrary.simpleMessage("Скрыть фото или видео"),
"toResetVerifyEmail": MessageLookupByLibrary.simpleMessage(
"Чтобы сбросить пароль, сначала подтвердите свой адрес электронной почты."),
"todaysLogs": MessageLookupByLibrary.simpleMessage("Сегодняшние логи"),
"tooManyIncorrectAttempts":
MessageLookupByLibrary.simpleMessage("Too many incorrect attempts"),
"total": MessageLookupByLibrary.simpleMessage("всего"),
"totalSize": MessageLookupByLibrary.simpleMessage("Общий размер"),
"trash": MessageLookupByLibrary.simpleMessage("Корзина"),
"trashDaysLeft": m64,
"trashDaysLeft": m65,
"trim": MessageLookupByLibrary.simpleMessage("Сократить"),
"tryAgain": MessageLookupByLibrary.simpleMessage("Попробовать снова"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
@@ -1587,7 +1606,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Использовать выбранное фото"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Использовано места"),
"validTill": m65,
"validTill": m66,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Проверка не удалась, попробуйте еще раз"),
@@ -1596,7 +1615,7 @@ class MessageLookup extends MessageLookupByLibrary {
"verify": MessageLookupByLibrary.simpleMessage("Подтвердить"),
"verifyEmail": MessageLookupByLibrary.simpleMessage(
"Подтвердить электронную почту"),
"verifyEmailID": m66,
"verifyEmailID": m67,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Подтверждение"),
"verifyPasskey":
MessageLookupByLibrary.simpleMessage("Подтвердить ключ"),
@@ -1632,12 +1651,12 @@ class MessageLookup extends MessageLookupByLibrary {
"weDontSupportEditingPhotosAndAlbumsThatYouDont":
MessageLookupByLibrary.simpleMessage(
"Мы не можем поддержать редактирование фотографий и альбомов, которыми вы не владеете"),
"weHaveSendEmailTo": m67,
"weHaveSendEmailTo": m68,
"weakStrength": MessageLookupByLibrary.simpleMessage("Слабый"),
"welcomeBack": MessageLookupByLibrary.simpleMessage("С возвращением!"),
"whatsNew": MessageLookupByLibrary.simpleMessage("Что нового"),
"yearly": MessageLookupByLibrary.simpleMessage("Ежегодно"),
"yearsAgo": m68,
"yearsAgo": m69,
"yes": MessageLookupByLibrary.simpleMessage("Да"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Да, отменить"),
"yesConvertToViewer":
@@ -1667,7 +1686,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Вы не можете поделиться с самим собой"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"У вас нет архивных элементов."),
"youHaveSuccessfullyFreedUp": m69,
"youHaveSuccessfullyFreedUp": m70,
"yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
"Ваша учетная запись была удалена"),
"yourMap": MessageLookupByLibrary.simpleMessage("Ваша карта"),

1710
mobile/lib/generated/intl/messages_tr.dart generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -120,81 +120,83 @@ class MessageLookup extends MessageLookupByLibrary {
static String m36(albumName) => "成功移动到 ${albumName}";
static String m37(passwordStrengthValue) => "密码强度: ${passwordStrengthValue}";
static String m37(name) => "不是 ${name}";
static String m38(providerName) => "如果您被收取费用,请用英语与 ${providerName} 的客服聊天";
static String m38(passwordStrengthValue) => "密码强度: ${passwordStrengthValue}";
static String m39(endDate) => "免费试用有效期至 ${endDate}\n在此之后您可以选择付费计划。";
static String m39(providerName) => "如果您被收取费用,请用英语与 ${providerName} 的客服聊天";
static String m40(toEmail) => "请给我们发送电子邮件至 ${toEmail}";
static String m40(endDate) => "免费试用有效期至 ${endDate}\n在此之后您可以选择付费计划。";
static String m41(toEmail) => "将日志发送至 \n${toEmail}";
static String m41(toEmail) => "给我们发送电子邮件至 ${toEmail}";
static String m42(storeName) => "${storeName} 上给我们评分";
static String m42(toEmail) => "请将日志发送至 \n${toEmail}";
static String m43(storageInGB) => "3. 你和朋友都将免费获得 ${storageInGB} GB*";
static String m43(storeName) => "${storeName} 上给我们评分";
static String m44(userEmail) =>
static String m44(storageInGB) => "3. 你和朋友都将免费获得 ${storageInGB} GB*";
static String m45(userEmail) =>
"${userEmail} 将从这个共享相册中删除\n\nTA们添加的任何照片也将从相册中删除";
static String m45(endDate) => "${endDate} 前续费";
static String m46(endDate) => "${endDate} 前续费";
static String m46(count) =>
static String m47(count) =>
"${Intl.plural(count, other: '已找到 ${count} 个结果')}";
static String m47(count) => "已选择 ${count}";
static String m48(count) => "已选择 ${count}";
static String m48(count, yourCount) => "选择了 ${count} 个 (您的 ${yourCount} 个)";
static String m49(count, yourCount) => "选择了 ${count} 个 (您的 ${yourCount} 个)";
static String m49(verificationID) => "这是我的ente.io 的验证 ID ${verificationID}";
static String m50(verificationID) => "这是我的ente.io 的验证 ID ${verificationID}";
static String m50(verificationID) =>
static String m51(verificationID) =>
"嘿,你能确认这是你的 ente.io 验证 ID吗${verificationID}";
static String m51(referralCode, referralStorageInGB) =>
static String m52(referralCode, referralStorageInGB) =>
"Ente 推荐代码:${referralCode}\n\n\"设置\"\"通用\"\"推荐 \"中应用它,即可在注册付费计划后免费获得 ${referralStorageInGB} GB 存储空间\n\nhttps://ente.io";
static String m52(numberOfPeople) =>
static String m53(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: '与特定人员共享', one: '与 1 人共享', other: '${numberOfPeople} 人共享')}";
static String m53(emailIDs) => "${emailIDs} 共享";
static String m54(emailIDs) => "${emailIDs} 共享";
static String m54(fileType) => "${fileType} 将从您的设备中删除。";
static String m55(fileType) => "${fileType} 将从您的设备中删除。";
static String m55(fileType) => "${fileType} 已同时存在于 Ente 和您的设备中。";
static String m56(fileType) => "${fileType} 已同时存在于 Ente 和您的设备中。";
static String m56(fileType) => "${fileType} 将从 Ente 中删除。";
static String m57(fileType) => "${fileType} 将从 Ente 中删除。";
static String m57(storageAmountInGB) => "${storageAmountInGB} GB";
static String m58(storageAmountInGB) => "${storageAmountInGB} GB";
static String m58(
static String m59(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"已使用 ${usedAmount} ${usedStorageUnit} / ${totalAmount} ${totalStorageUnit}";
static String m59(id) =>
static String m60(id) =>
"您的 ${id} 已链接到另一个 Ente 账户。\n如果您想在此账户中使用您的 ${id} ,请联系我们的支持人员";
static String m60(endDate) => "您的订阅将于 ${endDate} 取消";
static String m61(endDate) => "您的订阅将于 ${endDate} 取消";
static String m61(completed, total) => "已保存的回忆 ${completed}/共 ${total}";
static String m62(completed, total) => "已保存的回忆 ${completed}/共 ${total}";
static String m62(storageAmountInGB) => "他们也会获得 ${storageAmountInGB} GB";
static String m63(storageAmountInGB) => "他们也会获得 ${storageAmountInGB} GB";
static String m63(email) => "这是 ${email} 的验证ID";
static String m64(email) => "这是 ${email} 的验证ID";
static String m64(count) =>
static String m65(count) =>
"${Intl.plural(count, zero: '', one: '1天', other: '${count} 天')}";
static String m65(endDate) => "有效期至 ${endDate}";
static String m66(endDate) => "有效期至 ${endDate}";
static String m66(email) => "验证 ${email}";
static String m67(email) => "验证 ${email}";
static String m67(email) => "我们已经发送邮件到 <green>${email}</green>";
static String m68(email) => "我们已经发送邮件到 <green>${email}</green>";
static String m68(count) =>
static String m69(count) =>
"${Intl.plural(count, one: '${count} 年前', other: '${count} 年前')}";
static String m69(storageSaved) => "您已成功释放了 ${storageSaved}";
static String m70(storageSaved) => "您已成功释放了 ${storageSaved}";
final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
@@ -268,6 +270,7 @@ class MessageLookup extends MessageLookupByLibrary {
"androidIosWebDesktop":
MessageLookupByLibrary.simpleMessage("安卓, iOS, 网页端, 桌面端"),
"androidSignInTitle": MessageLookupByLibrary.simpleMessage("需要身份验证"),
"appLock": MessageLookupByLibrary.simpleMessage("应用锁"),
"appVersion": m7,
"appleId": MessageLookupByLibrary.simpleMessage("Apple ID"),
"apply": MessageLookupByLibrary.simpleMessage("应用"),
@@ -506,6 +509,7 @@ class MessageLookup extends MessageLookupByLibrary {
"deviceCodeHint": MessageLookupByLibrary.simpleMessage("输入代码"),
"deviceFilesAutoUploading":
MessageLookupByLibrary.simpleMessage("添加到此设备相册的文件将自动上传到 Ente。"),
"deviceLock": MessageLookupByLibrary.simpleMessage("设备锁"),
"deviceLockExplanation": MessageLookupByLibrary.simpleMessage(
"当 Ente 置于前台且正在进行备份时将禁用设备屏幕锁定。这通常是不需要的,但可能有助于更快地完成大型上传和大型库的初始导入。"),
"deviceNotFound": MessageLookupByLibrary.simpleMessage("未发现设备"),
@@ -580,6 +584,7 @@ class MessageLookup extends MessageLookupByLibrary {
"enterPasswordToEncrypt":
MessageLookupByLibrary.simpleMessage("输入我们可以用来加密您的数据的密码"),
"enterPersonName": MessageLookupByLibrary.simpleMessage("输入人物名称"),
"enterPin": MessageLookupByLibrary.simpleMessage("输入 PIN 码"),
"enterReferralCode": MessageLookupByLibrary.simpleMessage("输入推荐代码"),
"enterThe6digitCodeFromnyourAuthenticatorApp":
MessageLookupByLibrary.simpleMessage("从你的身份验证器应用中\n输入6位数字代码"),
@@ -825,6 +830,7 @@ class MessageLookup extends MessageLookupByLibrary {
"newAlbum": MessageLookupByLibrary.simpleMessage("新建相册"),
"newToEnte": MessageLookupByLibrary.simpleMessage("初来 Ente"),
"newest": MessageLookupByLibrary.simpleMessage("最新"),
"next": MessageLookupByLibrary.simpleMessage("下一步"),
"no": MessageLookupByLibrary.simpleMessage(""),
"noAlbumsSharedByYouYet":
MessageLookupByLibrary.simpleMessage("您尚未共享任何相册"),
@@ -847,6 +853,8 @@ class MessageLookup extends MessageLookupByLibrary {
"由于我们端到端加密协议的性质,如果没有您的密码或恢复密钥,您的数据将无法解密"),
"noResults": MessageLookupByLibrary.simpleMessage("无结果"),
"noResultsFound": MessageLookupByLibrary.simpleMessage("未找到任何结果"),
"noSystemLockFound": MessageLookupByLibrary.simpleMessage("未找到系统锁"),
"notPersonLabel": m37,
"nothingSharedWithYouYet":
MessageLookupByLibrary.simpleMessage("尚未与您共享任何内容"),
"nothingToSeeHere": MessageLookupByLibrary.simpleMessage("这里空空如也! 👀"),
@@ -879,14 +887,14 @@ class MessageLookup extends MessageLookupByLibrary {
"passwordChangedSuccessfully":
MessageLookupByLibrary.simpleMessage("密码修改成功"),
"passwordLock": MessageLookupByLibrary.simpleMessage("密码锁"),
"passwordStrength": m37,
"passwordStrength": m38,
"passwordWarning": MessageLookupByLibrary.simpleMessage(
"我们不储存这个密码,所以如果忘记, <underline>我们将无法解密您的数据</underline>"),
"paymentDetails": MessageLookupByLibrary.simpleMessage("付款明细"),
"paymentFailed": MessageLookupByLibrary.simpleMessage("支付失败"),
"paymentFailedMessage": MessageLookupByLibrary.simpleMessage(
"不幸的是,您的付款失败。请联系支持人员,我们将为您提供帮助!"),
"paymentFailedTalkToProvider": m38,
"paymentFailedTalkToProvider": m39,
"pendingItems": MessageLookupByLibrary.simpleMessage("待处理项目"),
"pendingSync": MessageLookupByLibrary.simpleMessage("正在等待同步"),
"people": MessageLookupByLibrary.simpleMessage("人物"),
@@ -904,8 +912,9 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("您添加的照片将从相册中移除"),
"pickCenterPoint": MessageLookupByLibrary.simpleMessage("选择中心点"),
"pinAlbum": MessageLookupByLibrary.simpleMessage("置顶相册"),
"pinLock": MessageLookupByLibrary.simpleMessage("PIN 锁定"),
"playOnTv": MessageLookupByLibrary.simpleMessage("在电视上播放相册"),
"playStoreFreeTrialValidTill": m39,
"playStoreFreeTrialValidTill": m40,
"playstoreSubscription":
MessageLookupByLibrary.simpleMessage("PlayStore 订阅"),
"pleaseCheckYourInternetConnectionAndTryAgain":
@@ -915,10 +924,10 @@ class MessageLookup extends MessageLookupByLibrary {
"请用英语联系 support@ente.io ,我们将乐意提供帮助!"),
"pleaseContactSupportIfTheProblemPersists":
MessageLookupByLibrary.simpleMessage("如果问题仍然存在,请联系支持"),
"pleaseEmailUsAt": m40,
"pleaseEmailUsAt": m41,
"pleaseGrantPermissions": MessageLookupByLibrary.simpleMessage("请授予权限"),
"pleaseLoginAgain": MessageLookupByLibrary.simpleMessage("请重新登录"),
"pleaseSendTheLogsTo": m41,
"pleaseSendTheLogsTo": m42,
"pleaseTryAgain": MessageLookupByLibrary.simpleMessage("请重试"),
"pleaseVerifyTheCodeYouHaveEntered":
MessageLookupByLibrary.simpleMessage("请验证您输入的代码"),
@@ -944,7 +953,7 @@ class MessageLookup extends MessageLookupByLibrary {
"raiseTicket": MessageLookupByLibrary.simpleMessage("提升工单"),
"rateTheApp": MessageLookupByLibrary.simpleMessage("为此应用评分"),
"rateUs": MessageLookupByLibrary.simpleMessage("给我们评分"),
"rateUsOnStore": m42,
"rateUsOnStore": m43,
"recover": MessageLookupByLibrary.simpleMessage("恢复"),
"recoverAccount": MessageLookupByLibrary.simpleMessage("恢复账户"),
"recoverButton": MessageLookupByLibrary.simpleMessage("恢复"),
@@ -965,11 +974,13 @@ class MessageLookup extends MessageLookupByLibrary {
"当前设备的功能不足以验证您的密码,但我们可以以适用于所有设备的方式重新生成。\n\n请使用您的恢复密钥登录并重新生成您的密码(如果您希望,可以再次使用相同的密码)。"),
"recreatePasswordTitle": MessageLookupByLibrary.simpleMessage("重新创建密码"),
"reddit": MessageLookupByLibrary.simpleMessage("Reddit"),
"reenterPassword": MessageLookupByLibrary.simpleMessage("再次输入密码"),
"reenterPin": MessageLookupByLibrary.simpleMessage("再次输入 PIN 码"),
"referFriendsAnd2xYourPlan":
MessageLookupByLibrary.simpleMessage("把我们推荐给你的朋友然后获得延长一倍的订阅计划"),
"referralStep1": MessageLookupByLibrary.simpleMessage("1. 将此代码提供给您的朋友"),
"referralStep2": MessageLookupByLibrary.simpleMessage("2. 他们注册一个付费计划"),
"referralStep3": m43,
"referralStep3": m44,
"referrals": MessageLookupByLibrary.simpleMessage("推荐"),
"referralsAreCurrentlyPaused":
MessageLookupByLibrary.simpleMessage("推荐已暂停"),
@@ -990,7 +1001,7 @@ class MessageLookup extends MessageLookupByLibrary {
"removeFromFavorite": MessageLookupByLibrary.simpleMessage("从收藏中移除"),
"removeLink": MessageLookupByLibrary.simpleMessage("移除链接"),
"removeParticipant": MessageLookupByLibrary.simpleMessage("移除参与者"),
"removeParticipantBody": m44,
"removeParticipantBody": m45,
"removePersonLabel": MessageLookupByLibrary.simpleMessage("移除人物标签"),
"removePublicLink": MessageLookupByLibrary.simpleMessage("删除公开链接"),
"removeShareItemsWarning":
@@ -1002,7 +1013,7 @@ class MessageLookup extends MessageLookupByLibrary {
"renameAlbum": MessageLookupByLibrary.simpleMessage("重命名相册"),
"renameFile": MessageLookupByLibrary.simpleMessage("重命名文件"),
"renewSubscription": MessageLookupByLibrary.simpleMessage("续费订阅"),
"renewsOn": m45,
"renewsOn": m46,
"reportABug": MessageLookupByLibrary.simpleMessage("报告错误"),
"reportBug": MessageLookupByLibrary.simpleMessage("报告错误"),
"resendEmail": MessageLookupByLibrary.simpleMessage("重新发送电子邮件"),
@@ -1054,7 +1065,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("在照片的一定半径内拍摄的几组照片"),
"searchPeopleEmptySection":
MessageLookupByLibrary.simpleMessage("邀请他人,您将在此看到他们分享的所有照片"),
"searchResultCount": m46,
"searchResultCount": m47,
"security": MessageLookupByLibrary.simpleMessage("安全"),
"selectALocation": MessageLookupByLibrary.simpleMessage("选择一个位置"),
"selectALocationFirst":
@@ -1074,8 +1085,8 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("所选文件夹将被加密并备份"),
"selectedItemsWillBeDeletedFromAllAlbumsAndMoved":
MessageLookupByLibrary.simpleMessage("所选项目将从所有相册中删除并移动到回收站。"),
"selectedPhotos": m47,
"selectedPhotosWithYours": m48,
"selectedPhotos": m48,
"selectedPhotosWithYours": m49,
"send": MessageLookupByLibrary.simpleMessage("发送"),
"sendEmail": MessageLookupByLibrary.simpleMessage("发送电子邮件"),
"sendInvite": MessageLookupByLibrary.simpleMessage("发送邀请"),
@@ -1086,6 +1097,8 @@ class MessageLookup extends MessageLookupByLibrary {
"setAs": MessageLookupByLibrary.simpleMessage("设置为"),
"setCover": MessageLookupByLibrary.simpleMessage("设置封面"),
"setLabel": MessageLookupByLibrary.simpleMessage("设置"),
"setNewPassword": MessageLookupByLibrary.simpleMessage("设置新密码"),
"setNewPin": MessageLookupByLibrary.simpleMessage("设置新 PIN 码"),
"setPasswordTitle": MessageLookupByLibrary.simpleMessage("设置密码"),
"setRadius": MessageLookupByLibrary.simpleMessage("设定半径"),
"setupComplete": MessageLookupByLibrary.simpleMessage("设置完成"),
@@ -1095,16 +1108,16 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("打开相册并点击右上角的分享按钮进行分享"),
"shareAnAlbumNow": MessageLookupByLibrary.simpleMessage("立即分享相册"),
"shareLink": MessageLookupByLibrary.simpleMessage("分享链接"),
"shareMyVerificationID": m49,
"shareMyVerificationID": m50,
"shareOnlyWithThePeopleYouWant":
MessageLookupByLibrary.simpleMessage("仅与您想要的人分享"),
"shareTextConfirmOthersVerificationID": m50,
"shareTextConfirmOthersVerificationID": m51,
"shareTextRecommendUsingEnte":
MessageLookupByLibrary.simpleMessage("下载 Ente让我们轻松共享高质量的原始照片和视频"),
"shareTextReferralCode": m51,
"shareTextReferralCode": m52,
"shareWithNonenteUsers":
MessageLookupByLibrary.simpleMessage("与非 Ente 用户共享"),
"shareWithPeopleSectionTitle": m52,
"shareWithPeopleSectionTitle": m53,
"shareYourFirstAlbum":
MessageLookupByLibrary.simpleMessage("分享您的第一个相册"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1115,7 +1128,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("新共享的照片"),
"sharedPhotoNotificationsExplanation":
MessageLookupByLibrary.simpleMessage("当有人将照片添加到您所属的共享相册时收到通知"),
"sharedWith": m53,
"sharedWith": m54,
"sharedWithMe": MessageLookupByLibrary.simpleMessage("与我共享"),
"sharedWithYou": MessageLookupByLibrary.simpleMessage("已与您共享"),
"sharing": MessageLookupByLibrary.simpleMessage("正在分享..."),
@@ -1127,11 +1140,11 @@ class MessageLookup extends MessageLookupByLibrary {
"signOutOtherDevices": MessageLookupByLibrary.simpleMessage("登出其他设备"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"我同意 <u-terms>服务条款</u-terms> 和 <u-policy>隐私政策</u-policy>"),
"singleFileDeleteFromDevice": m54,
"singleFileDeleteFromDevice": m55,
"singleFileDeleteHighlight":
MessageLookupByLibrary.simpleMessage("它将从所有相册中删除。"),
"singleFileInBothLocalAndRemote": m55,
"singleFileInRemoteOnly": m56,
"singleFileInBothLocalAndRemote": m56,
"singleFileInRemoteOnly": m57,
"skip": MessageLookupByLibrary.simpleMessage("跳过"),
"social": MessageLookupByLibrary.simpleMessage("社交"),
"someItemsAreInBothEnteAndYourDevice":
@@ -1164,12 +1177,12 @@ class MessageLookup extends MessageLookupByLibrary {
"storage": MessageLookupByLibrary.simpleMessage("存储空间"),
"storageBreakupFamily": MessageLookupByLibrary.simpleMessage("家庭"),
"storageBreakupYou": MessageLookupByLibrary.simpleMessage(""),
"storageInGB": m57,
"storageInGB": m58,
"storageLimitExceeded": MessageLookupByLibrary.simpleMessage("已超出存储限制"),
"storageUsageInfo": m58,
"storageUsageInfo": m59,
"strongStrength": MessageLookupByLibrary.simpleMessage(""),
"subAlreadyLinkedErrMessage": m59,
"subWillBeCancelledOn": m60,
"subAlreadyLinkedErrMessage": m60,
"subWillBeCancelledOn": m61,
"subscribe": MessageLookupByLibrary.simpleMessage("订阅"),
"subscribeToEnableSharing":
MessageLookupByLibrary.simpleMessage("您的订阅似乎已过期。请订阅以启用分享。"),
@@ -1182,12 +1195,13 @@ class MessageLookup extends MessageLookupByLibrary {
"successfullyUnhid": MessageLookupByLibrary.simpleMessage("已成功取消隐藏"),
"suggestFeatures": MessageLookupByLibrary.simpleMessage("建议新功能"),
"support": MessageLookupByLibrary.simpleMessage("支持"),
"syncProgress": m61,
"syncProgress": m62,
"syncStopped": MessageLookupByLibrary.simpleMessage("同步已停止"),
"syncing": MessageLookupByLibrary.simpleMessage("正在同步···"),
"systemTheme": MessageLookupByLibrary.simpleMessage("适应系统"),
"tapToCopy": MessageLookupByLibrary.simpleMessage("点击以复制"),
"tapToEnterCode": MessageLookupByLibrary.simpleMessage("点击以输入代码"),
"tapToUnlock": MessageLookupByLibrary.simpleMessage("点击解锁"),
"tempErrorContactSupportIfPersists":
MessageLookupByLibrary.simpleMessage(
"看起来出了点问题。 请稍后重试。 如果错误仍然存在,请联系我们的支持团队。"),
@@ -1205,7 +1219,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theme": MessageLookupByLibrary.simpleMessage("主题"),
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage("这些项目将从您的设备中删除。"),
"theyAlsoGetXGb": m62,
"theyAlsoGetXGb": m63,
"theyWillBeDeletedFromAllAlbums":
MessageLookupByLibrary.simpleMessage("他们将从所有相册中删除。"),
"thisActionCannotBeUndone":
@@ -1219,21 +1233,25 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("这个邮箱地址已经被使用"),
"thisImageHasNoExifData":
MessageLookupByLibrary.simpleMessage("此图像没有Exif 数据"),
"thisIsPersonVerificationId": m63,
"thisIsPersonVerificationId": m64,
"thisIsYourVerificationId":
MessageLookupByLibrary.simpleMessage("这是您的验证 ID"),
"thisWillLogYouOutOfTheFollowingDevice":
MessageLookupByLibrary.simpleMessage("这将使您在以下设备中退出登录:"),
"thisWillLogYouOutOfThisDevice":
MessageLookupByLibrary.simpleMessage("这将使您在此设备上退出登录!"),
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen":
MessageLookupByLibrary.simpleMessage("要启用应用锁,请在系统设置中设置设备密码或屏幕锁定。"),
"toHideAPhotoOrVideo": MessageLookupByLibrary.simpleMessage("隐藏照片或视频"),
"toResetVerifyEmail":
MessageLookupByLibrary.simpleMessage("要重置您的密码,请先验证您的电子邮件。"),
"todaysLogs": MessageLookupByLibrary.simpleMessage("当天日志"),
"tooManyIncorrectAttempts":
MessageLookupByLibrary.simpleMessage("错误尝试次数过多"),
"total": MessageLookupByLibrary.simpleMessage("总计"),
"totalSize": MessageLookupByLibrary.simpleMessage("总大小"),
"trash": MessageLookupByLibrary.simpleMessage("回收站"),
"trashDaysLeft": m64,
"trashDaysLeft": m65,
"trim": MessageLookupByLibrary.simpleMessage("修剪"),
"tryAgain": MessageLookupByLibrary.simpleMessage("请再试一次"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
@@ -1272,18 +1290,19 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("最高五折优惠直至12月4日。"),
"usableReferralStorageInfo": MessageLookupByLibrary.simpleMessage(
"可用存储空间受您当前计划的限制。 当您升级您的计划时,超出要求的存储空间将自动变为可用。"),
"useAsCover": MessageLookupByLibrary.simpleMessage("用作封面"),
"usePublicLinksForPeopleNotOnEnte":
MessageLookupByLibrary.simpleMessage("对不在 Ente 上的人使用公开链接"),
"useRecoveryKey": MessageLookupByLibrary.simpleMessage("使用恢复密钥"),
"useSelectedPhoto": MessageLookupByLibrary.simpleMessage("使用所选照片"),
"usedSpace": MessageLookupByLibrary.simpleMessage("已用空间"),
"validTill": m65,
"validTill": m66,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage("验证失败,请重试"),
"verificationId": MessageLookupByLibrary.simpleMessage("验证 ID"),
"verify": MessageLookupByLibrary.simpleMessage("验证"),
"verifyEmail": MessageLookupByLibrary.simpleMessage("验证电子邮件"),
"verifyEmailID": m66,
"verifyEmailID": m67,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("验证"),
"verifyPasskey": MessageLookupByLibrary.simpleMessage("验证通行密钥"),
"verifyPassword": MessageLookupByLibrary.simpleMessage("验证密码"),
@@ -1310,12 +1329,12 @@ class MessageLookup extends MessageLookupByLibrary {
"weAreOpenSource": MessageLookupByLibrary.simpleMessage("我们是开源的 "),
"weDontSupportEditingPhotosAndAlbumsThatYouDont":
MessageLookupByLibrary.simpleMessage("我们不支持编辑您尚未拥有的照片和相册"),
"weHaveSendEmailTo": m67,
"weHaveSendEmailTo": m68,
"weakStrength": MessageLookupByLibrary.simpleMessage(""),
"welcomeBack": MessageLookupByLibrary.simpleMessage("欢迎回来!"),
"whatsNew": MessageLookupByLibrary.simpleMessage("更新日志"),
"yearly": MessageLookupByLibrary.simpleMessage("每年"),
"yearsAgo": m68,
"yearsAgo": m69,
"yes": MessageLookupByLibrary.simpleMessage(""),
"yesCancel": MessageLookupByLibrary.simpleMessage("是的,取消"),
"yesConvertToViewer": MessageLookupByLibrary.simpleMessage("是的,转换为查看者"),
@@ -1341,7 +1360,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("莫开玩笑,您不能与自己分享"),
"youDontHaveAnyArchivedItems":
MessageLookupByLibrary.simpleMessage("您没有任何存档的项目。"),
"youHaveSuccessfullyFreedUp": m69,
"youHaveSuccessfullyFreedUp": m70,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("您的账户已删除"),
"yourMap": MessageLookupByLibrary.simpleMessage("您的地图"),

View File

@@ -8974,6 +8974,136 @@ class S {
args: [name],
);
}
/// `Re-enter password`
String get reenterPassword {
return Intl.message(
'Re-enter password',
name: 'reenterPassword',
desc: '',
args: [],
);
}
/// `Re-enter PIN`
String get reenterPin {
return Intl.message(
'Re-enter PIN',
name: 'reenterPin',
desc: '',
args: [],
);
}
/// `Device lock`
String get deviceLock {
return Intl.message(
'Device lock',
name: 'deviceLock',
desc: '',
args: [],
);
}
/// `PIN lock`
String get pinLock {
return Intl.message(
'PIN lock',
name: 'pinLock',
desc: '',
args: [],
);
}
/// `Next`
String get next {
return Intl.message(
'Next',
name: 'next',
desc: '',
args: [],
);
}
/// `Set new password`
String get setNewPassword {
return Intl.message(
'Set new password',
name: 'setNewPassword',
desc: '',
args: [],
);
}
/// `Enter PIN`
String get enterPin {
return Intl.message(
'Enter PIN',
name: 'enterPin',
desc: '',
args: [],
);
}
/// `Set new PIN`
String get setNewPin {
return Intl.message(
'Set new PIN',
name: 'setNewPin',
desc: '',
args: [],
);
}
/// `App lock`
String get appLock {
return Intl.message(
'App lock',
name: 'appLock',
desc: '',
args: [],
);
}
/// `No system lock found`
String get noSystemLockFound {
return Intl.message(
'No system lock found',
name: 'noSystemLockFound',
desc: '',
args: [],
);
}
/// `To enable app lock, please setup device passcode or screen lock in your system settings.`
String get toEnableAppLockPleaseSetupDevicePasscodeOrScreen {
return Intl.message(
'To enable app lock, please setup device passcode or screen lock in your system settings.',
name: 'toEnableAppLockPleaseSetupDevicePasscodeOrScreen',
desc: '',
args: [],
);
}
/// `Tap to unlock`
String get tapToUnlock {
return Intl.message(
'Tap to unlock',
name: 'tapToUnlock',
desc: '',
args: [],
);
}
/// `Too many incorrect attempts`
String get tooManyIncorrectAttempts {
return Intl.message(
'Too many incorrect attempts',
name: 'tooManyIncorrectAttempts',
desc: '',
args: [],
);
}
}
class AppLocalizationDelegate extends LocalizationsDelegate<S> {
@@ -8993,6 +9123,7 @@ class AppLocalizationDelegate extends LocalizationsDelegate<S> {
Locale.fromSubtags(languageCode: 'pl'),
Locale.fromSubtags(languageCode: 'pt'),
Locale.fromSubtags(languageCode: 'ru'),
Locale.fromSubtags(languageCode: 'tr'),
Locale.fromSubtags(languageCode: 'zh'),
];
}

View File

@@ -25,5 +25,19 @@
"faceRecognitionIndexingDescription": "Please note that this will result in a higher bandwidth and battery usage until all items are indexed.",
"foundFaces": "Found faces",
"clusteringProgress": "Clustering progress",
"indexingIsPaused": "Indexing is paused, will automatically resume when device is ready"
"indexingIsPaused": "Indexing is paused, will automatically resume when device is ready",
"reenterPassword": "Re-enter password",
"reenterPin": "Re-enter PIN",
"deviceLock": "Device lock",
"pinLock": "PIN lock",
"passwordLock": "Password lock",
"next": "Next",
"setNewPassword": "Set new password",
"enterPin": "Enter PIN",
"setNewPin": "Set new PIN",
"appLock": "App lock",
"noSystemLockFound": "No system lock found",
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "To enable app lock, please setup device passcode or screen lock in your system settings.",
"tapToUnlock": "Tap to unlock",
"tooManyIncorrectAttempts": "Too many incorrect attempts"
}

View File

@@ -1,4 +1,5 @@
{
"@@locale ": "en",
"enterYourEmailAddress": "Gib deine E-Mail-Adresse ein",
"accountWelcomeBack": "Willkommen zurück!",
"email": "E-Mail",
@@ -1047,7 +1048,7 @@
"@storageUsageInfo": {
"description": "Example: 1.2 GB of 2 GB used or 100 GB or 2TB used"
},
"availableStorageSpace": "{freeAmount} {storageUnit} kostenlos",
"availableStorageSpace": "{freeAmount} {storageUnit} frei",
"appVersion": "Version: {versionValue}",
"verifyIDLabel": "Überprüfen",
"fileInfoAddDescHint": "Beschreibung hinzufügen …",
@@ -1251,5 +1252,29 @@
"left": "Links",
"right": "Rechts",
"whatsNew": "Neue Funktionen",
"reviewSuggestions": "Vorschläge überprüfen"
"reviewSuggestions": "Vorschläge überprüfen",
"useAsCover": "Als Titelbild festlegen",
"notPersonLabel": "Nicht {name}?",
"@notPersonLabel": {
"description": "Label to indicate that the person in the photo is not the person whose name is mentioned",
"placeholders": {
"name": {
"content": "{name}",
"type": "String"
}
}
},
"reenterPassword": "Passwort erneut eingeben",
"reenterPin": "PIN erneut eingeben",
"deviceLock": "Gerätsperre",
"pinLock": "PIN-Sperre",
"next": "Weiter",
"setNewPassword": "Neues Passwort festlegen",
"enterPin": "PIN eingeben",
"setNewPin": "Neue PIN festlegen",
"appLock": "App-Sperre",
"noSystemLockFound": "Keine Systemsperre gefunden",
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "Um die App-Sperre zu aktivieren, konfigurieren Sie bitte den Gerätepasscode oder die Bildschirmsperre in Ihren Systemeinstellungen.",
"tapToUnlock": "Zum Entsperren antippen",
"tooManyIncorrectAttempts": "Zu viele fehlerhafte Versuche"
}

View File

@@ -1,4 +1,5 @@
{
"@@locale ": "en",
"enterYourEmailAddress": "Enter your email address",
"accountWelcomeBack": "Welcome back!",
"email": "Email",
@@ -1200,7 +1201,7 @@
"passkey": "Passkey",
"passkeyAuthTitle": "Passkey verification",
"passKeyPendingVerification": "Verification is still pending",
"loginSessionExpired" : "Session expired",
"loginSessionExpired": "Session expired",
"loginSessionExpiredDetails": "Your session has expired. Please login again.",
"verifyPasskey": "Verify passkey",
"playOnTv": "Play album on TV",
@@ -1262,6 +1263,18 @@
"type": "String"
}
}
}
},
"reenterPassword": "Re-enter password",
"reenterPin": "Re-enter PIN",
"deviceLock": "Device lock",
"pinLock": "PIN lock",
"next": "Next",
"setNewPassword": "Set new password",
"enterPin": "Enter PIN",
"setNewPin": "Set new PIN",
"appLock": "App lock",
"noSystemLockFound": "No system lock found",
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "To enable app lock, please setup device passcode or screen lock in your system settings.",
"tapToUnlock": "Tap to unlock",
"tooManyIncorrectAttempts": "Too many incorrect attempts"
}

View File

@@ -1251,5 +1251,18 @@
"left": "Izquierda",
"right": "Derecha",
"whatsNew": "Qué hay de nuevo",
"reviewSuggestions": "Revisar sugerencias"
"reviewSuggestions": "Revisar sugerencias",
"reenterPassword": "Re-enter password",
"reenterPin": "Re-enter PIN",
"deviceLock": "Device lock",
"pinLock": "PIN lock",
"next": "Next",
"setNewPassword": "Set new password",
"enterPin": "Enter PIN",
"setNewPin": "Set new PIN",
"appLock": "App lock",
"noSystemLockFound": "No system lock found",
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "To enable app lock, please setup device passcode or screen lock in your system settings.",
"tapToUnlock": "Tap to unlock",
"tooManyIncorrectAttempts": "Too many incorrect attempts"
}

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