Compare commits

...

108 Commits

Author SHA1 Message Date
Neeraj Gupta
1952e5278d [auth] Fix key binding for search focus on mac (#4584)
## Description

## Tests
2025-01-03 14:49:43 +05:30
Neeraj Gupta
c5019da4bd [auth] Bump version v4.2.3 2025-01-03 14:42:04 +05:30
Neeraj Gupta
acb898ecf9 [auth] Activate search on cmd+f on mac instead of ctrl+f 2025-01-03 14:41:37 +05:30
mangesh
aea531ee21 [docs] Update self-hosting docs for configurable app urls (#4565) 2025-01-03 14:27:37 +05:30
Neeraj Gupta
22c4a50c2b [auth] Dragable scrollbar for long scrolling list of codes (#4583) 2025-01-03 12:53:42 +05:30
mngshm
290716e8ca minor fix after testing on build 2025-01-03 11:57:43 +05:30
Ashil
f96a336b4b [mob][photos] Add android build folder in gitignore (#4576) 2025-01-03 11:54:42 +05:30
Aman Raj
a6600b4718 [auth] added scrollbar for custom sorting of codes 2025-01-03 00:12:00 +05:30
Aman Raj
ce0798fbec [auth] Dragable scrollbar for selecting custom icons 2025-01-02 23:29:54 +05:30
Ashil
7cbc5ffb2d [mob][photos] Fix minor UX issue move/add to a newly created album (#4575)
## Description

When adding/moving items to a newly created album from the vertical
albums list sheet, after items are added, the app fails to navigate to
the newly created album. This PR fixes this issue.
2025-01-02 23:00:38 +05:30
ashilkn
88ac10d96c [mob][photos] Add android build folder in gitignore 2025-01-02 22:56:52 +05:30
ashilkn
0a7fd03df7 [mob][photos] Fix move/add to album UX issue 2025-01-02 22:48:52 +05:30
Manav Rathi
9b47595f2c [web] Video preview - Prep - Part x/x (#4572) 2025-01-02 17:25:05 +05:30
Manav Rathi
af5e072ea5 Prune 2025-01-02 16:39:38 +05:30
Manav Rathi
2bc9251a09 Specific 2025-01-02 16:36:52 +05:30
Aman Raj Singh Mourya
12a19a484c [auth] Export Code Lockscreen fix (#4571)
https://github.com/user-attachments/assets/3f6d3726-d333-4dc3-ba67-3c100d00d93f
2025-01-02 16:35:14 +05:30
Manav Rathi
8906cb2a1d Agenda 2025-01-02 16:29:41 +05:30
Manav Rathi
6f936a42c4 Unused 2025-01-02 16:23:58 +05:30
Manav Rathi
497e546129 Doc 2025-01-02 16:22:14 +05:30
Manav Rathi
2736ab5334 Tweak 2025-01-02 16:15:40 +05:30
Manav Rathi
f04b8ffce6 Move 2025-01-02 16:11:23 +05:30
Manav Rathi
b7f33233d9 R 2025-01-02 16:05:35 +05:30
Manav Rathi
6dffb1f289 Conv 2025-01-02 15:59:26 +05:30
Manav Rathi
5a131e7f83 Conv 2025-01-02 15:44:15 +05:30
Manav Rathi
2138ef602a Inline 2025-01-02 15:43:42 +05:30
Manav Rathi
6adadcaf93 Inline 2025-01-02 15:34:56 +05:30
Manav Rathi
0ce4ed494d Inline 2025-01-02 15:31:36 +05:30
Manav Rathi
77257aa6ab T 2025-01-02 15:27:04 +05:30
Manav Rathi
184bb6ec6c Tweak 2025-01-02 15:23:42 +05:30
Manav Rathi
2e7e9c1ca8 Reorder 2025-01-02 15:14:52 +05:30
Manav Rathi
7ef3a7a726 Doc 2025-01-02 15:12:44 +05:30
Manav Rathi
fbf27b4544 Reduce state 2025-01-02 14:51:02 +05:30
Manav Rathi
67ba7614db Flip 2025-01-02 14:33:26 +05:30
Manav Rathi
b05e675820 Tweaks 2025-01-02 14:14:25 +05:30
Manav Rathi
ff3033f1ae Reclaim preview 2025-01-02 13:57:47 +05:30
Manav Rathi
4dda92219a Tie 2025-01-02 13:31:58 +05:30
Manav Rathi
53618d0e1f preview 1 2025-01-02 13:14:15 +05:30
Manav Rathi
0642e41a2e [web] Improve handling of in-memory favorite state until sync completes (#4570) 2025-01-02 13:07:05 +05:30
Manav Rathi
0be4aed185 Other 2025-01-02 13:03:35 +05:30
Neeraj Gupta
ef93482523 [auth] Ctrl+F to activate search tab (#4552) 2025-01-02 12:43:32 +05:30
Manav Rathi
bb161ad3a9 Rew 2025-01-02 12:42:01 +05:30
Manav Rathi
bf7be69c3d Fix 2025-01-02 12:30:52 +05:30
Manav Rathi
82358812bd Combine 2025-01-02 12:28:52 +05:30
Manav Rathi
e52e61c0af ft 2025-01-02 12:22:17 +05:30
Manav Rathi
17ea9dfaaa thread 2025-01-02 12:15:26 +05:30
Manav Rathi
6e045affa4 Rename 2025-01-02 11:53:01 +05:30
Manav Rathi
1232b956c9 Keep fav file overrides in reducer 2025-01-02 11:40:35 +05:30
mngshm
9a284f916f adapt docs to PR#4562 2025-01-01 19:06:44 +05:30
Aman Raj
df321f9dea [auth] fix: remove extra setstate 2025-01-01 17:57:21 +05:30
Neeraj Gupta
543411254b [auth] Fix progress bar (#4564)
## Description

## Tests
2025-01-01 17:04:35 +05:30
Neeraj Gupta
a3b9b6bb90 [mob] Add authentication for trashed section (#4561)
## Description

## Tests
2025-01-01 17:04:24 +05:30
Manav Rathi
5b9e1abec3 [web] Remove hardcoded URLs (#4562)
Museum now supports configuring the URL that the clients should use for
cast, accounts (passkeys) and families portal.

Changes are in main, and also the latest published Docker image.

If you're using the old method (which was only supported by the web app,
unlike the new method which is supported by both mobile and web) of
configuring the custom environment variables, then you should instead
use the corresponding setting in the museum configuration.

```
NEXT_PUBLIC_ENTE_ACCOUNTS_URL => apps.account
NEXT_PUBLIC_ENTE_FAMILY_URL => apps.family
```

Reference: [apps block in
local.yaml](fe2771f2e0/server/configurations/local.yaml (L75-L89))
2025-01-01 16:38:23 +05:30
Neeraj Gupta
a1e97239c3 [server] Skip sending ott during signup when registrations are disabled (#4563)
## Description

## Tests
2025-01-01 14:39:00 +05:30
Manav Rathi
2f372cdbe1 Doesn't work outside of the next process 2025-01-01 14:19:12 +05:30
Manav Rathi
9910049d1d [web] Remove hardcoded URLs
Museum now supports configuring the URL that the clients should use for cast,
accounts (passkeys) and families portal.

If you're using the old method (which was only supported by the web app, unlike
the new method which is supported by both mobile and web, and also for cast) of
configuring the custom environment variables, then you should instead use the
corresponding setting in the museum configuration:

- NEXT_PUBLIC_ENTE_ACCOUNTS_URL => apps.account
- NEXT_PUBLIC_ENTE_FAMILY_URL => apps.family

Reference: [apps block in
local.yaml](fe2771f2e0/server/configurations/local.yaml (L75-L89))
2025-01-01 14:12:38 +05:30
github-actions[bot]
fe2771f2e0 [auth] New translations (#4539)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-01-01 13:47:54 +05:30
Rui Chen
2e517535b3 [cli] Switch to go v1.23 (#4556)
## Description

feat: update to use go1.23

---

relates to https://github.com/Homebrew/homebrew-core/pull/201919
(homebrew side always use latest go for building the artifact)

also love a new cli release for some patches so that we can proceed with
the homebrew PR

Signed-off-by: Rui Chen <rui@chenrui.dev>
2025-01-01 13:47:39 +05:30
Alan Moyano
e459fb5686 [auth] Adding icon for Belo (#4548)
## Description
Belo is a popular fintech in Argentina and Brazil.
2025-01-01 13:46:12 +05:30
Neeraj Gupta
9498571c10 [auth] Update Amazon icon (#4554)
## Description

- Update Amazon icon to comply with new branding.
2025-01-01 13:44:16 +05:30
Neeraj Gupta
f2a9675911 [server] Speed up deletion (#4560)
## Description

## Tests
2025-01-01 13:42:04 +05:30
Neeraj Gupta
ede505d939 [server] Speed up deletion 2025-01-01 13:40:48 +05:30
Manav Rathi
65a92f1a77 [web] Remove unnecessary queuing primitive for non-async function (#4558)
The useEffect that underlay useMemoSingleThreaded shouldn't be having
any impact none of this code has an async dispatch, and all of it
already runs serially on the main thread.
2025-01-01 10:14:28 +05:30
Manav Rathi
56cdb9064d [web] Remove unnecessary queuing primitive for non-async function
The useEffect that underlay useMemoSingleThreaded shouldn't be having any impact
none of this code has an async dispatch, and all of it already runs serially on
the main thread.
2025-01-01 10:08:48 +05:30
Tanguy
7ddf70eb86 Update Amazon icon to new branding 2024-12-31 15:31:44 +01:00
Aman Raj
6592ddedfd [auth] fix: disposing text controller 2024-12-31 15:53:02 +05:30
Aman Raj
1b74049eb5 [auth] ctrl+f to activate search box for icons 2024-12-31 15:52:13 +05:30
Aman Raj
568377d4e7 [auth] ctrl+f to activate search box 2024-12-31 15:51:43 +05:30
Vishnu Mohandas
4bd416fd10 [auth] add caixa icon (#4551)
Solves [issue](https://github.com/ente-io/ente/issues/4531)
2024-12-31 15:47:10 +05:30
Aman Raj
634ae71a5d [auth] add caixa icon 2024-12-31 15:10:28 +05:30
Neeraj Gupta
0ae1557508 [mobile] New translations (#4538)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-12-31 02:03:31 +05:30
Manav Rathi
93071af19a [server] Add workaround for intermittent Safari CORS errors (#4540)
At times, Safari will fail our API responses because its CORS preflight
fails. The errors are reproducible, but intermittently, and not on
localhost. We seem not to be the first ones to hit
[this](https://github.com/processing/p5.js-web-editor/issues/3156).

Based on a hint from:


https://github.com/supabase/supabase/issues/20982#issuecomment-2548329565

Modify our CORS responses to use 200 instead of 204 to try and fix
Safari.
2024-12-30 18:54:31 +05:30
Manav Rathi
ab15263a17 [web] Use urls from museum response instead of hardcoded ones (#4546)
Next step will be to remove the hardcoded ones completely (this is
pending on a new museum image release).
2024-12-30 17:26:28 +05:30
Manav Rathi
d2d02f3591 lf 2024-12-30 17:18:51 +05:30
Manav Rathi
1e79409f73 fam 2024-12-30 16:54:56 +05:30
Manav Rathi
866d2bb00a Use 2024-12-30 16:51:10 +05:30
Manav Rathi
1832005d72 Use 2024-12-30 16:46:51 +05:30
Manav Rathi
b054c070ad Parse 2024-12-30 16:45:14 +05:30
Manav Rathi
64a47694d0 Type 2024-12-30 16:37:05 +05:30
Aman Raj
8af02aa4c8 [auth] fix dialog not hiding after saving the codes/logs 2024-12-30 16:20:13 +05:30
Manav Rathi
a4e09a40e8 Doc 2024-12-30 16:19:10 +05:30
Manav Rathi
82fc1a1434 Opt 2024-12-30 16:15:33 +05:30
Manav Rathi
b511aeb401 zod type 2024-12-30 16:01:28 +05:30
Manav Rathi
6812527607 Use accounts url 2024-12-30 15:44:34 +05:30
Manav Rathi
2263eb684c Use 2024-12-30 15:44:34 +05:30
Manav Rathi
8df68cf529 Parse cast URL 2024-12-30 15:44:34 +05:30
Manav Rathi
ba11a5a755 [desktop] Prettier upgrade (#4545)
And then some.

Sibling of https://github.com/ente-io/ente/pull/4542
2024-12-30 15:42:58 +05:30
Manav Rathi
e31b55499b Upd 2024-12-30 15:37:38 +05:30
Manav Rathi
89f917220d Fix 2024-12-30 15:34:56 +05:30
Manav Rathi
fad26a960d Elsewhere 2024-12-30 14:55:44 +05:30
Manav Rathi
6e3d285428 Manually run in code too 2024-12-30 14:54:13 +05:30
Manav Rathi
2198eeb372 Prettier upgraed 2024-12-30 14:53:37 +05:30
Manav Rathi
184c044377 [docs] Prettier and vitepress update (#4543)
Run `yarn pretty` afterwords.

Sibling of https://github.com/ente-io/ente/pull/4542
2024-12-30 14:51:32 +05:30
Manav Rathi
63d41434a9 yarn pretty 2024-12-30 14:47:46 +05:30
Manav Rathi
310f180c5a Update prettier and vitepress 2024-12-30 14:45:10 +05:30
Manav Rathi
5da05467d6 Elsewhere 2024-12-30 14:45:10 +05:30
Manav Rathi
a2decb5030 Workers 2024-12-30 14:45:10 +05:30
Manav Rathi
6f891a45de [web] Prettier upgrade (#4542)
The list formatting changed (again).
2024-12-30 14:31:45 +05:30
Manav Rathi
4e7d764722 numered lists too 2024-12-30 14:23:48 +05:30
Manav Rathi
9aae713207 Update comments to match prettier defaults
These comments were earlier written to match the way prettier formatted
markdown, but they've changed that upstream with 3.4, so revert back to the more
natural style that prettier also uses.
2024-12-30 14:18:36 +05:30
Manav Rathi
17aa1b67c1 [web] Prettier upgrade 2024-12-30 14:10:54 +05:30
Manav Rathi
5e22c95bfb [server] Retain published image commit as branch instead of tag (#4541)
Overwriting tags is clunky (besides being generally discouraged). e.g.
pulling the overwritten tags locally requires `git fetch --force
--tags`. So instead use the branch `server/ghcr` to point to the commit
from which the latest published ghcr docker image has been built.
2024-12-30 14:03:41 +05:30
Manav Rathi
182fd89356 [server] Retain published image commit as branch instead of tag
Overwriting tags is clunky (besides being generally discouraged). e.g. pulling
the overwritten tags locally requires `git fetch --force --tags`. So instead use
the branch `server/ghcr` to point to the commit from which the latest published
ghcr docker image has been built
2024-12-30 13:58:08 +05:30
Manav Rathi
6516b457cb [server] Add workaround for intermittent Safari CORS errors
At times, Safari will fail our API responses because its CORS preflight fails.
The errors are reproducible, but intermittently, and not on localhost.  We seem
not to be the first ones to hit [this](https://github.com/processing/p5.js-web-editor/issues/3156).

Based on a hint from:

https://github.com/supabase/supabase/issues/20982#issuecomment-2548329565

Modify our CORS responses to use 200 instead of 204 to try and fix Safari.
2024-12-30 12:13:53 +05:30
Manav Rathi
bf78b2e671 [web] New translations (#4537)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-12-30 09:50:40 +05:30
Crowdin Bot
58afaa9405 New Crowdin translations by GitHub Action 2024-12-30 04:18:26 +00:00
Crowdin Bot
1bffbdad03 New Crowdin translations by GitHub Action 2024-12-30 01:05:17 +00:00
Manav Rathi
267d5cef65 [web] Fix typo in (report only) CSP policy (#4525) 2024-12-27 19:55:52 +05:30
Manav Rathi
d391db2dd5 [web] Fix typo in (report only) CSP policy 2024-12-27 19:52:30 +05:30
217 changed files with 4901 additions and 3819 deletions

View File

@@ -45,7 +45,7 @@ jobs:
goarch: ${{ matrix.goarch }}
asset_name: ente-${{ github.ref_name }}-${{ matrix.goos }}-${{ matrix.goarch }}
release_name: ${{ github.ref_name }}
goversion: "1.20"
goversion: "1.23"
project_path: "./cli"
pre_command: export CGO_ENABLED=0
build_flags: "-trimpath"

View File

@@ -1,4 +1,4 @@
name: "Publish (server)"
name: "Publish ghcr (server)"
on:
# Run manually, providing it the commit.
@@ -39,7 +39,6 @@ jobs:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Tag as server/ghcr
- name: Update branch server/ghcr to point to source commit
run: |
git tag -f server/ghcr
git push -f origin server/ghcr
git push -f origin HEAD:server/ghcr

View File

@@ -72,6 +72,10 @@
"NGA社区"
]
},
{
"title": "Belo",
"hex": "5717d4"
},
{
"title": "Bethesda",
"altNames": [
@@ -175,6 +179,9 @@
{
"title": "Bybit"
},
{
"title": "Caixa"
},
{
"title": "Canva"
},

View File

@@ -1,6 +1,10 @@
<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="M442.375 441.562C390.672 479.687 315.75 500 251.25 500C160.625 500 79.344 466.562 17.7346 410.89C13.0471 406.515 17.2346 400.547 23.0471 403.953C89.5315 442.656 171.875 465.937 256.656 465.937C317.884 465.655 378.451 453.272 434.875 429.5C443.625 425.781 450.969 435.218 442.375 441.562ZM463.875 416.968C457.313 408.531 420.188 412.984 403.563 414.937C398.485 415.562 397.719 411.14 402.281 407.968C431.969 387.187 480.313 393.172 485.969 400.156C491.625 407.14 484.5 455.781 456.75 478.968C452.485 482.531 448.422 480.64 450.5 475.906C456.75 460.343 470.719 425.437 464.094 416.968" fill="#FF9900"/>
<g style="mix-blend-mode:difference">
<path fill-rule="evenodd" clip-rule="evenodd" d="M287.969 216.625C287.969 243.063 288.641 265.109 275.281 288.578C264.344 307.641 247.156 319.406 228.328 319.406C202.281 319.406 187.016 299.563 187.016 270.266C187.016 212.453 238.828 201.938 287.984 201.938L287.969 216.625ZM356.422 382C351.938 386.016 345.453 386.297 340.391 383.625C317.891 364.922 313.766 356.234 301.453 338.391C264.234 376.359 237.797 387.719 189.609 387.719C132.453 387.719 88.0781 352.5 88.0781 281.984C88.0781 226.922 117.844 189.422 160.422 171.094C197.25 154.875 248.703 152.031 288 147.656V139.062C288 122.938 289.25 103.844 279.719 89.9219C271.516 77.4219 255.656 72.2656 241.641 72.2656C215.781 72.2656 192.781 85.5469 187.156 113.016C186.016 119.266 181.531 125.141 175.328 125.422L109.375 118.047C103.844 116.797 97.6563 112.328 99.2656 103.984C114.5 24.0625 186.641 0 251.156 0C284.172 0 327.313 8.78125 353.344 33.7812C386.359 64.6094 383.219 105.734 383.219 150.5V256.25C383.219 288.031 396.391 301.953 408.797 319.141C413.094 325.391 414.047 332.578 408.516 337.172C391.003 351.98 373.669 366.997 356.516 382.219L356.422 382.031" fill="white"/>
</g>
</svg>
<svg width="500" height="500" viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">
<path d="M16.05 385.03C13.89 386.74 13.44 389.58 14.69 393.56C15.83 397.09 18.5 401.47 22.71 406.7C39.65 427.63 59.84 445.03 83.27 458.9C106.7 472.78 131.78 483.01 158.51 489.61C185.35 496.32 212.76 499.68 240.73 499.68C276.56 499.68 310.68 494.44 343.09 483.98C375.51 473.63 402.58 459.07 424.3 440.31C431.92 433.6 435.73 428.25 435.73 424.27C435.73 422.79 435.1 421.31 433.85 419.83C432.15 418.13 430.1 417.56 427.71 418.13C425.32 418.7 421.97 420.12 417.65 422.39C396.83 433.31 371.47 442.01 341.56 448.49C311.76 455.09 280.65 458.39 248.24 458.39C208.09 458.39 169.31 452.93 131.89 442.01C94.47 431.09 61.32 414.03 32.43 390.83C28.22 387.53 24.81 385.43 22.19 384.52C19.69 383.61 17.65 383.78 16.05 385.03Z"
fill="#FF6200"/>
<path d="M395.12 393.57C392.73 395.85 392.11 398.24 393.24 400.74C394.04 402.56 395.58 403.58 397.85 403.81C400.12 404.15 403.37 403.92 407.57 403.13C414.4 401.65 421.51 400.62 428.9 400.06C436.29 399.6 442.72 399.71 448.18 400.4C453.64 401.19 457.05 402.56 458.41 404.49C460.46 407.56 459.72 414.04 456.2 423.94C452.78 433.83 448.12 443.44 442.21 452.77C439.93 456.52 438.57 459.48 438.11 461.64C437.66 463.8 438.23 465.62 439.82 467.1C440.84 468.12 441.98 468.64 443.23 468.64C446.53 468.64 451.31 465.74 457.56 459.94C468.82 450.16 476.72 438.55 481.27 425.13C483.78 418.2 485.31 410.92 485.88 403.3C486.45 395.68 485.6 390.22 483.32 386.92C481.16 383.73 476.38 381.12 468.99 379.07C461.71 377.02 454.38 376 446.98 376C432.54 376 418.83 379.41 405.87 386.24C401.09 388.85 397.51 391.3 395.12 393.57Z"
fill="#FF6200"/>
<g style="mix-blend-mode:difference">
<path d="M209.76 387.72C188.61 387.72 170 383.1 153.92 373.87C137.84 364.34 125.33 351.24 116.4 334.56C107.47 317.59 103 298.09 103 276.05C103 249.55 109.55 226.32 122.65 206.37C136.05 186.42 154.96 171.08 179.38 160.36C204.1 149.64 232.98 144.28 266.04 144.28C281.23 144.28 293.58 145.32 303.11 147.41V138.03C303.11 115.39 298.94 98.57 290.61 87.55C282.27 76.23 269.61 70.58 252.64 70.58C225.24 70.58 207.67 85.02 199.93 113.9C197.55 122.24 192.63 125.82 185.19 124.62L124.44 113.9C119.97 113.01 116.85 111.08 115.06 108.1C113.57 105.12 113.42 101.1 114.61 96.04C122.36 65.66 138.74 42.14 163.75 25.46C189.06 8.49 220.78 0 258.89 0C304.16 0 338.55 12.21 362.08 36.63C385.9 61.05 397.81 96.63 397.81 143.39V368.07C397.81 371.34 396.62 374.17 394.24 376.55C392.15 378.64 389.47 379.68 386.2 379.68H328.13C320.98 379.68 316.51 375.81 314.73 368.07L305.79 326.08H302.22C294.18 345.73 282.12 360.92 266.04 371.64C250.26 382.36 231.49 387.72 209.76 387.72ZM200.38 265.33C200.38 281.11 204.4 293.77 212.44 303.3C220.78 312.53 231.94 317.14 245.94 317.14C264.4 317.14 278.55 308.95 288.37 292.58C298.2 275.9 303.11 252.08 303.11 221.11V197.43C294.78 195.94 286.88 195.2 279.44 195.2C255.02 195.2 235.66 201.6 221.37 214.41C207.37 226.91 200.38 243.89 200.38 265.33Z"
fill="white"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="87" height="87" fill="none"><rect width="86.1667" height="86.2257" fill="#5717D4" rx="14.7344"/><path fill="#00FFB2" fill-rule="evenodd" d="M24.448 35.976c.461-.504 1.242-.536 1.767-.098a26.25 26.25 0 0 0 16.867 6.09 26.25 26.25 0 0 0 16.867-6.09c.525-.438 1.306-.406 1.767.098l4.178 4.562a1.204 1.204 0 0 1-.092 1.732 34.9 34.9 0 0 1-22.72 8.36 34.9 34.9 0 0 1-22.72-8.36 1.204 1.204 0 0 1-.092-1.732z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 478 B

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="500px" height="500px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
<g><path style="opacity:0.99" fill="#0170ae" d="M 268.5,114.5 C 268.343,115.873 268.51,117.207 269,118.5C 291.11,156.392 312.943,194.392 334.5,232.5C 281.008,234.166 227.341,235.166 173.5,235.5C 135.941,171.393 98.6076,107.06 61.5,42.5C 116.5,41.1667 171.5,41.1667 226.5,42.5C 240.022,66.8911 254.022,90.8911 268.5,114.5 Z"/></g>
<g><path style="opacity:0.982" fill="#f5812a" d="M 499.5,43.5 C 499.5,44.5 499.5,45.5 499.5,46.5C 449.174,108.835 399.174,171.502 349.5,234.5C 345.217,235.492 340.884,235.826 336.5,235.5C 336.573,233.973 335.906,232.973 334.5,232.5C 312.943,194.392 291.11,156.392 269,118.5C 268.51,117.207 268.343,115.873 268.5,114.5C 286.953,90.8749 305.619,67.3749 324.5,44C 382.832,43.5 441.166,43.3333 499.5,43.5 Z"/></g>
<g><path style="opacity:0.561" fill="#337394" d="M 334.5,232.5 C 335.906,232.973 336.573,233.973 336.5,235.5C 282.167,235.5 227.833,235.5 173.5,235.5C 227.341,235.166 281.008,234.166 334.5,232.5 Z"/></g>
<g><path style="opacity:0.988" fill="#f5812a" d="M 325.5,264.5 C 322.22,267.043 319.387,270.043 317,273.5C 289.381,309.454 261.381,345.12 233,380.5C 231.121,382.527 229.954,384.86 229.5,387.5C 211.307,410.688 192.973,433.855 174.5,457C 116.168,457.5 57.8343,457.667 -0.5,457.5C -0.5,456.5 -0.5,455.5 -0.5,454.5C 50.0174,391.474 100.017,327.974 149.5,264C 208.335,263.168 267.001,263.335 325.5,264.5 Z"/></g>
<g><path style="opacity:0.99" fill="#0170ae" d="M 325.5,264.5 C 364.664,327.999 402.998,391.999 440.5,456.5C 383.829,456.833 327.163,456.5 270.5,455.5C 256.822,432.806 243.155,410.139 229.5,387.5C 229.954,384.86 231.121,382.527 233,380.5C 261.381,345.12 289.381,309.454 317,273.5C 319.387,270.043 322.22,267.043 325.5,264.5 Z"/></g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -258,6 +258,10 @@
"areYouSureYouWantToLogout": "Наистина ли искате да излезете от профила си?",
"yesLogout": "Да, излез",
"exit": "Изход",
"theme": "Тема",
"lightTheme": "Светла",
"darkTheme": "Тъмна",
"systemTheme": "Системна",
"verifyingRecoveryKey": "Проверка на ключа за възстановяване...",
"recoveryKeyVerified": "Ключът за възстановяване е проверен",
"recoveryKeySuccessBody": "Страхотно! Вашият ключ за възстановяване е валиден. Благодарим Ви за проверката.\n\nМоля, не забравяйте да запазите безопасно архивирания си ключ за възстановяване.",
@@ -490,5 +494,13 @@
"appLockNotEnabled": "Заключването на приложението не е активирано",
"appLockNotEnabledDescription": "Моля, активирайте заключването на приложението от Сигурност > Заключване на приложението",
"authToViewPasskey": "Моля, удостоверете се, за да видите Вашите ключове за парола",
"appLockOfflineModeWarning": "Избрахте да продължите без резервни копия. Ако забравите паролата на приложението си, ще бъдете заключени от достъп до вашите данни."
"appLockOfflineModeWarning": "Избрахте да продължите без резервни копия. Ако забравите паролата на приложението си, ще бъдете заключени от достъп до вашите данни.",
"duplicateCodes": "Повтарящи се кодове",
"noDuplicates": "✨ Няма дубликати",
"youveNoDuplicateCodesThatCanBeCleared": "Нямате повтарящи се кодове, които могат да бъдат изчистени",
"deduplicateCodes": "Премахване на повтарящи се кодове",
"deselectAll": "Демаркиране на всички",
"selectAll": "Избиране на всички",
"deleteDuplicates": "Изтриване на дубликатите",
"plainHTML": "Обикновен HTML"
}

View File

@@ -156,6 +156,7 @@
"twoFactorAuthTitle": "Autenticació de dos factors",
"passkeyAuthTitle": "Verificació per passkey",
"verifyPasskey": "Verifica la passkey",
"loginWithTOTP": "Inici de sessió amb TOTP",
"recoverAccount": "Recupera el compte",
"enterRecoveryKeyHint": "Introdueix la teva clau de recuperació",
"recover": "Recupera",
@@ -257,6 +258,10 @@
"areYouSureYouWantToLogout": "Segur que vols tancar la sessió?",
"yesLogout": "Sí, tanca la sessió",
"exit": "Surt",
"theme": "Tema",
"lightTheme": "Clar",
"darkTheme": "Fosc",
"systemTheme": "Del sistema",
"verifyingRecoveryKey": "Verificant clau de recuperació...",
"recoveryKeyVerified": "Clau de recuperació verificada",
"recoveryKeySuccessBody": "Perfecte! La teva clau de recuperació és vàlida. Gràcies per verificar-ho.\n\nSi us plau, recorda mantenir una còpia de seguretat de la teva clau de recuperació en un lloc segur.",
@@ -327,6 +332,10 @@
}
}
},
"manualSort": "Personalitzat",
"editOrder": "Edita l'ordre",
"mostFrequentlyUsed": "Usats sovint",
"mostRecentlyUsed": "Usats recentment",
"activeSessions": "Sessions actives",
"somethingWentWrongPleaseTryAgain": "S'ha produït un error, si us plau, intenta-ho de nou",
"thisWillLogYouOutOfThisDevice": "Això tancarà la sessió en aquest dispositiu!",
@@ -446,6 +455,9 @@
"customEndpoint": "Connectat a {endpoint}",
"pinText": "Fixa",
"unpinText": "Desfixa",
"pinnedCodeMessage": "{code} s'ha fixat",
"unpinnedCodeMessage": "{code} s'ha deixat de fixar",
"pinned": "Fixat",
"tags": "Etiquetes",
"createNewTag": "Crea una nova etiqueta",
"tag": "Etiqueta",
@@ -482,5 +494,13 @@
"appLockNotEnabled": "Bloqueig de l'aplicació no habilitat",
"appLockNotEnabledDescription": "Si us plau, habilita el bloqueig de l'aplicació a Seguretat > Bloqueig de l'aplicació",
"authToViewPasskey": "Autentica't per veure la passkey",
"appLockOfflineModeWarning": "Has triat procedir sense còpies de seguretat. Si oblides el bloqueig de l'aplicació, no podràs accedir a les teves dades."
"appLockOfflineModeWarning": "Has triat procedir sense còpies de seguretat. Si oblides el bloqueig de l'aplicació, no podràs accedir a les teves dades.",
"duplicateCodes": "Codis duplicats",
"noDuplicates": "✨ Sense duplicats",
"youveNoDuplicateCodesThatCanBeCleared": "No teniu codis duplicats que es puguin esborrar",
"deduplicateCodes": "Desduplica codis",
"deselectAll": "Desselecciona-ho tot",
"selectAll": "Seleccionar-ho tot",
"deleteDuplicates": "Elimina duplicats",
"plainHTML": "HTML pla"
}

View File

@@ -487,7 +487,7 @@
"hideContentDescriptioniOS": "Ocultar el contenido de la aplicación en el selector de aplicaciones",
"autoLockFeatureDescription": "Tiempo tras el cual la aplicación se bloquea después de ser colocada en segundo plano",
"appLockDescription": "Elija entre la pantalla de bloqueo por defecto de su dispositivo y una pantalla de bloqueo personalizada con un PIN o contraseña.",
"pinLock": "Bloqueo con Pin",
"pinLock": "Bloqueo con PIN",
"enterPin": "Ingresa el PIN",
"setNewPin": "Establecer nuevo PIN",
"importFailureDescNew": "No se pudo analizar el archivo seleccionado.",
@@ -501,5 +501,6 @@
"deduplicateCodes": "Desduplicar códigos",
"deselectAll": "Deseleccionar todo",
"selectAll": "Seleccionar todo",
"deleteDuplicates": "Eliminar duplicados"
"deleteDuplicates": "Eliminar duplicados",
"plainHTML": "HTML plano"
}

View File

@@ -1,16 +1,16 @@
{
"account": "Akun\n",
"account": "Akun",
"unlock": "Buka",
"recoveryKey": "Kunci pemulihan",
"counterAppBarTitle": "Pencacah",
"counterAppBarTitle": "Penghitung",
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
},
"onBoardingBody": "Cadangkan kode autentikasi 2 langkah Anda dengan aman",
"onBoardingBody": "Cadangkan kode 2FA Anda dengan aman",
"onBoardingGetStarted": "Mulai",
"setupFirstAccount": "Siapkan akun pertama Anda",
"importScanQrCode": "Pindai Kode Respons Cepat (QR)",
"qrCode": "Kode Respons Cepat (QR)",
"importScanQrCode": "Pindai Kode QR",
"qrCode": "Kode QR",
"importEnterSetupKey": "Masukkan kunci penyiapan",
"importAccountPageTitle": "Masukkan rincian akun",
"secretCanNotBeEmpty": "Rahasia tidak boleh kosong",
@@ -22,7 +22,7 @@
"secret": "Rahasia",
"all": "Semua",
"notes": "Catatan",
"notesLengthLimit": "Banyaknya karakter pada catatan yang diperbolehkan paling banyak adalah sebanyak {count} karakter",
"notesLengthLimit": "Catatan dapat memiliki panjang maksimal {count} karakter",
"@notesLengthLimit": {
"description": "Text to indicate the maximum number of characters allowed for notes",
"placeholders": {
@@ -33,29 +33,29 @@
}
}
},
"codeAccountHint": "Akun (nama@domain.com)",
"codeAccountHint": "Akun (anda@domain.com)",
"codeTagHint": "Tag",
"accountKeyType": "Jenis kunci",
"sessionExpired": "Sesi berakhir",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
},
"pleaseLoginAgain": "Silakan masuk akun lagi",
"loggingOut": "Keluar dari akun...",
"pleaseLoginAgain": "Silakan masuk lagi",
"loggingOut": "Mengeluarkan akun...",
"timeBasedKeyType": "Berbasis waktu (TOTP)",
"counterBasedKeyType": "Berbasis pencacah (HOTP)",
"counterBasedKeyType": "Berbasis Penghitung (HOTP)",
"saveAction": "Simpan",
"nextTotpTitle": "berikutnya",
"deleteCodeTitle": "Hapus kode?",
"deleteCodeMessage": "Anda yakin ingin menghapus kode ini? Tindakan ini tidak dapat dikembalikan ke semula.",
"deleteCodeMessage": "Apakah Anda yakin ingin menghapus kode ini? Tindakan ini tidak dapat dibatalkan.",
"trashCode": "Hapus kode?",
"trashCodeMessage": "Anda yakin ingin menghapus kode untuk akun {account}?",
"trashCodeMessage": "Apakah anda yakin ingin menghapus kode untuk {account}?",
"trash": "Hapus",
"viewLogsAction": "Lihat log",
"sendLogsDescription": "Langkah ini akan mengirimkan log untuk membantu kami menyelesaikan masalah Anda. Kami menyarankan Anda untuk meninjau log-log berikut sebelum dibagikan walaupun kami sudah berupaya untuk memastikan agar segala informasi yang bersifat sensitif tidak terlog.",
"preparingLogsTitle": "Menyiapkan log...",
"emailLogsTitle": "Log surel",
"emailLogsMessage": "Harap kirim log ke {email}",
"viewLogsAction": "Lihat catatan",
"sendLogsDescription": "Ini akan mengirimkan catatan untuk membantu kami memecahkan masalah Anda. Meskipun kami mengambil langkah-langkah untuk memastikan informasi sensitif tidak tercatat, kami menyarankan Anda untuk melihat catatan ini sebelum membagikannya.",
"preparingLogsTitle": "Menyiapkan catatan...",
"emailLogsTitle": "Catatan email",
"emailLogsMessage": "Harap kirim catatan ke {email}",
"@emailLogsMessage": {
"placeholders": {
"email": {
@@ -63,12 +63,12 @@
}
}
},
"copyEmailAction": "Salin surel",
"exportLogsAction": "Ekspor log",
"reportABug": "Laporkan keberadaan kutu",
"crashAndErrorReporting": "Pelaporan Galat dan Kemogokan",
"reportBug": "Laporkan kutu",
"emailUsMessage": "Harap kirimkan surel ke {email}",
"copyEmailAction": "Salin alamat email",
"exportLogsAction": "Ekspor catatan",
"reportABug": "Laporkan bug",
"crashAndErrorReporting": "Pelaporan Kerusakan & Kesalahan",
"reportBug": "Laporkan bug",
"emailUsMessage": "Harap kirim email kepada kami di {email}",
"@emailUsMessage": {
"placeholders": {
"email": {
@@ -76,91 +76,91 @@
}
}
},
"contactSupport": "Hubungi bantuan",
"rateUsOnStore": "Beri kami penilaian di {storeName}",
"contactSupport": "Hubungi dukungan",
"rateUsOnStore": "Nilai kami di {storeName}",
"blog": "Blog",
"merchandise": "Toko kami",
"merchandise": "Merchandise",
"verifyPassword": "Verifikasi kata sandi",
"pleaseWait": "Mohon tunggu...",
"generatingEncryptionKeysTitle": "Membuat kunci enkripsi...",
"generatingEncryptionKeysTitle": "Sedang membuat kunci enkripsi...",
"recreatePassword": "Buat ulang kata sandi",
"recreatePasswordMessage": "Gawai ini tidak cukup mutakhir untuk memverifikasi kata sandi Anda, sehingga kami perlu membuat ulang kata sandi Anda sekali lagi dengan cara yang dapat digunakan di semua perangkat.\n\nSilakan masuk dengan kunci pemulihan dan buat ulang kata sandi Anda (Gunakan kata sandi yang sama lagi jika Anda mau).",
"recreatePasswordMessage": "Perangkat saat ini tidak cukup kuat untuk memverifikasi kata sandi Anda, jadi kami perlu membuat ulang kata sandi Anda dengan cara yang dapat digunakan di semua perangkat.\n\nHarap masuk menggunakan kunci pemulihan Anda dan buat ulang kata sandi Anda (Anda dapat menggunakan yang sama lagi jika diinginkan).",
"useRecoveryKey": "Gunakan kunci pemulihan",
"incorrectPasswordTitle": "Kata sandi salah",
"welcomeBack": "Selamat datang kembali!",
"madeWithLoveAtPrefix": "dibuat dengan ❤️ di ",
"supportDevs": "Berlangganan <bold-green>ente</bold-green> untuk memberikan kami dukungan",
"supportDiscount": "Gunakan kode kupon \"AUTH\" untuk mendapatkan diskon 10% pada tahun Anda berlangganan",
"changeEmail": "Ubah surel",
"supportDevs": "Berlangganan <bold-green>ente</bold-green> untuk mendukung kami",
"supportDiscount": "Gunakan kode kupon \"AUTH\" untuk mendapatkan potongan 10% untuk tahun pertama",
"changeEmail": "Ubah alamat email",
"changePassword": "Ubah kata sandi",
"data": "Data",
"importCodes": "Impor kode",
"importTypePlainText": "Teks biasa",
"importTypeEnteEncrypted": "Eksporan Ente Terenkripsi",
"passwordForDecryptingExport": "Kata sandi untuk mendekripsi eksporan",
"passwordForDecryptingExport": "Kata sandi untuk mendekripsi ekspor",
"passwordEmptyError": "Kata sandi tidak boleh kosong",
"importFromApp": "Impor kode dari {appName}",
"importGoogleAuthGuide": "Ekspor semua akun Anda dari Google Authenticator ke kode respons cepat (QR) dengan pilihan \"Transfer Akun\". Kemudian, pindai kode respons cepat tersebut dengan perangkat lain.\n\nKiat: webcam laptop juga dapat digunakan untuk untuk memindai kode respons cepat.",
"importGoogleAuthGuide": "Ekspor akun Anda dari Google Authenticator ke kode QR menggunakan opsi \"Transfer Akun\". Kemudian, gunakan perangkat lain untuk memindai kode QR tersebut.\n\nTip: Anda bisa menggunakan webcam laptop Anda untuk memotret kode QR.",
"importSelectJsonFile": "Pilih berkas JSON",
"importSelectAppExport": "Pilih berkas eksporan dari {appName}",
"importEnteEncGuide": "Pilih berkas JSON terenkripsi yang telah diekspor dari Ente",
"importRaivoGuide": "Gunakan pilihan \"Export OTPs to Zip archive\" pada pengaturan Raivo.\n\nEkstrak berkas zip dan impor berkas JSON tersebut.",
"importBitwardenGuide": "Gunakan pilihan \"Export vault\" pada Bitwarden Tools dan impor ber JSON yang takterenkripsi.",
"importAegisGuide": "Gunakan pilihan \"Export vault\" pada pengaturan Aegis.\n\nJika brankas terenkripsi, masukkan kata sandi brankas untuk mendekripsi brankas.",
"import2FasGuide": "Gunakan pilihan \"Pengaturan->Cadangkan -Eksport\" pada 2FAS.\n\nJika cadangan Anda dienkripsi, kata sandi akan Anda perlukan untuk mendekripsi cadangan",
"importLastpassGuide": "Gunakan pilihan \"Transfer accounts\" pada pengaturan Lastpass Authenticator dan tekan \"Export accounts to file\". Impor berkas JSON terunduh.",
"exportCodes": "Kode pengeksporan",
"importEnteEncGuide": "Pilih file enkripsi JSON yang telah diekspor dari Ente",
"importRaivoGuide": "Gunakan opsi \"Export OTPs to Zip archive\" pada pengaturan Raivo.\n\nEkstrak file zip dan impor file JSON tersebut.",
"importBitwardenGuide": "Gunakan opsi \"Export vault\" di Bitwarden dan impor file JSON yang tidak terenkripsi.",
"importAegisGuide": "Gunakan opsi \"Export the vault\" di Pengaturan Aegis.\n\nJika brankas Anda terenkripsi, Anda perlu memasukkan kata sandi brankas untuk mendekripsi brankas.",
"import2FasGuide": "Gunakan opsi \"Settings->Backup -Export\" di 2FAS.\n\nJika cadangan Anda terenkripsi, Anda perlu memasukkan kata sandi untuk mendekripsi cadangan",
"importLastpassGuide": "Gunakan opsi \"Transfer accounts\" di Pengaturan Lastpass Authenticator dan tekan \"Export accounts to file\". Impor file JSON yang diunduh.",
"exportCodes": "Ekspor kode",
"importLabel": "Impor",
"importInstruction": "Mohon pilih berkas yang mengandung daftar kode dalam format seperti berikut",
"importCodeDelimiterInfo": "Kode dapat dipisahkan oleh tanda koma atau baris baru",
"importInstruction": "Harap pilih file yang berisi daftar kode Anda dalam format berikut",
"importCodeDelimiterInfo": "Kode dapat dipisahkan dengan koma atau baris baru",
"selectFile": "Pilih file",
"emailVerificationToggle": "Verifikasi surel",
"emailVerificationEnableWarning": "Agar tidak akun Anda tidak terkunci, pastikan simpan salinan pengaturan 2FA surel Anda di luar aplikasi Ente Auth sebelum verifikasi surel Anda nyalakan.",
"authToChangeEmailVerificationSetting": "Mohon autentikasikan untuk mengubah verifikasi surel",
"authenticateGeneric": "Mohon autentikasikan",
"authToViewYourRecoveryKey": "Mohon autentikasikan untuk menampilkan kunci pemulihan",
"authToChangeYourEmail": "Moohn autentikasikan untuk mengubah surel",
"authToChangeYourPassword": "Mohon autentikasikan untuk mengubah kata sandi",
"authToViewSecrets": "Mohon autentikasikan untuk menampilkan RahasiaKu",
"authToInitiateSignIn": "Mohon autentikasikan untuk memulai proses pencadangan.",
"emailVerificationToggle": "Verifikasi email",
"emailVerificationEnableWarning": "Untuk menghindari terkunci dari akun Anda, pastikan untuk menyimpan salinan 2FA email Anda di luar Ente Auth sebelum mengaktifkan verifikasi email.",
"authToChangeEmailVerificationSetting": "Harap lakukan autentikasi untuk mengubah verifikasi email",
"authenticateGeneric": "Harap lakukan autentikasi",
"authToViewYourRecoveryKey": "Harap lakukan autentikasi untuk melihat kunci pemulihan Anda",
"authToChangeYourEmail": "Harap lakukan autentikasi untuk mengubah email Anda",
"authToChangeYourPassword": "Harap lakukan autentikasi untuk mengubah kata sandi Anda",
"authToViewSecrets": "Harap lakukan autentikasi untuk melihat rahasia Anda",
"authToInitiateSignIn": "Harap lakukan autentikasi untuk memulai proses masuk untuk pencadangan.",
"ok": "Oke",
"cancel": "Batal",
"yes": "Ya",
"no": "Tidak",
"email": "Surel",
"support": "Bantuan",
"email": "Email",
"support": "Dukungan",
"general": "Umum",
"settings": "Pengaturan",
"copied": "Disalin",
"pleaseTryAgain": "Mohon coba lagi",
"existingUser": "Pengguna yang Sudah Ada",
"pleaseTryAgain": "Harap coba lagi",
"existingUser": "Pengguna yang ada",
"newUser": "Baru di Ente",
"delete": "Hapus",
"enterYourPasswordHint": "Masukkan kata sandi Anda",
"forgotPassword": "Lupa kata sandi",
"oops": "Aduh",
"oops": "Ups",
"suggestFeatures": "Sarankan fitur",
"faq": "Tanya Jawab Umum",
"faq": "Pertanyaan yang sering ditanyakan",
"somethingWentWrongMessage": "Terjadi kesalahan, silakan coba lagi",
"leaveFamily": "Tinggalkan keluarga",
"leaveFamilyMessage": "Anda yakin sudah tidak ingin berlangganan paket keluarga ini?",
"leaveFamilyMessage": "Apakah Anda yakin sudah tidak ingin berlangganan paket keluarga ini?",
"inFamilyPlanMessage": "Anda sedang berlangganan paket keluarga!",
"hintForMobile": "Tekan lama kode untuk menyunting atau menghapus.",
"hintForDesktop": "Klik kanan kode untuk menyunting atau menghapus.",
"hintForMobile": "Tekan lama kode untuk mengedit atau menghapusnya.",
"hintForDesktop": "Klik kanan kode untuk mengedit atau menghapus.",
"scan": "Pindai",
"scanACode": "Pindai kode",
"verify": "Verifikasi",
"verifyEmail": "Verifikasi email",
"enterCodeHint": "Masukkan kode 6 angka pada aplikasi pengautentikasi Anda",
"enterCodeHint": "Masukkan kode 6 digit dari aplikasi autentikator Anda",
"lostDeviceTitle": "Perangkat hilang?",
"twoFactorAuthTitle": "Autentikasi dua langkah",
"passkeyAuthTitle": "Verifikasi passkey",
"verifyPasskey": "Verifikasi passkey",
"loginWithTOTP": "Login menggunakan TOTP",
"loginWithTOTP": "Masuk menggunakan TOTP",
"recoverAccount": "Pulihkan akun",
"enterRecoveryKeyHint": "Masukkan kunci pemulihanmu",
"enterRecoveryKeyHint": "Masukkan kunci pemulihan Anda",
"recover": "Pulihkan",
"contactSupportViaEmailMessage": "Silakan kirimkan surel ke {email} dari alamat surelmu yang terdaftar",
"contactSupportViaEmailMessage": "Harap kirim email ke {email} dari alamat email terdaftar Anda",
"@contactSupportViaEmailMessage": {
"placeholders": {
"email": {
@@ -168,13 +168,13 @@
}
}
},
"invalidQRCode": "Kode QR tidak sah",
"invalidQRCode": "Kode QR tidak valid",
"noRecoveryKeyTitle": "Tidak punya kunci pemulihan?",
"enterEmailHint": "Masukkan alamat surelmu",
"invalidEmailTitle": "Alamat surel tidak sah",
"invalidEmailMessage": "Harap masukkan alamat surel yang sah.",
"enterEmailHint": "Masukkan alamat email Anda",
"invalidEmailTitle": "Alamat email tidak valid",
"invalidEmailMessage": "Harap masukkan alamat email yang valid.",
"deleteAccount": "Hapus akun",
"deleteAccountQuery": "Sayang sekali Anda harus pergi. Apakah ada masalah?",
"deleteAccountQuery": "Kami akan merasa kehilangan Anda. Apakah Anda menghadapi masalah?",
"yesSendFeedbackAction": "Ya, kirim umpan balik",
"noDeleteAccountAction": "Tidak, hapus akun",
"initiateAccountDeleteTitle": "Harap autentikasi untuk memulai penghapusan akun",
@@ -183,37 +183,37 @@
"weakStrength": "Lemah",
"strongStrength": "Kuat",
"moderateStrength": "Sedang",
"confirmPassword": "Konfirmasi sandi",
"confirmPassword": "Konfirmasi kata sandi",
"close": "Tutup",
"oopsSomethingWentWrong": "Ups, sepertinya ada yang salah.",
"oopsSomethingWentWrong": "Ups, Ada yang tidak beres.",
"selectLanguage": "Pilih bahasa",
"language": "Bahasa",
"social": "Sosial",
"security": "Keamanan",
"lockscreen": "Layar kunci",
"authToChangeLockscreenSetting": "Mohon autentikan untuk mengganti pengaturan layar kunci",
"authToChangeLockscreenSetting": "Harap lakukan autentikasi untuk mengubah pengaturan layar kunci",
"deviceLockEnablePreSteps": "Pasang kunci sandi atau kunci layar pada pengaturan sistem untuk menyalakan Pengunci Gawai.",
"viewActiveSessions": "Tampilkan sesi yang aktif",
"authToViewYourActiveSessions": "Mohon autentikasikan untuk menampilkan sesi aktif Anda",
"viewActiveSessions": "Lihat sesi aktif",
"authToViewYourActiveSessions": "Harap lakukan autentikasi untuk melihat sesi aktif Anda",
"searchHint": "Cari...",
"search": "Cari",
"sorryUnableToGenCode": "Maaf, kami tidak dapat membuat kode untuk {issuerName}",
"noResult": "Tiada hasil",
"sorryUnableToGenCode": "Maaf, tidak dapat menghasilkan kode untuk {issuerName}",
"noResult": "Tidak ada hasil",
"addCode": "Tambahkan kode",
"scanAQrCode": "Pindai kode Respons Cepat (QR)",
"scanAQrCode": "Pindai kode QR",
"enterDetailsManually": "Masukkan rincian secara manual",
"edit": "Sunting",
"edit": "Edit",
"share": "Bagikan",
"shareCodes": "Bagikan kode",
"shareCodesDuration": "Pilih durasi untuk membagikan kode.",
"shareCodesDuration": "Pilih durasi untuk berbagi kode.",
"restore": "Pulihkan",
"copiedToClipboard": "Tersalin ke papan klip",
"copiedNextToClipboard": "",
"error": "Galat",
"recoveryKeyCopiedToClipboard": "Kunci pemulihan tersalin ke papan klip",
"recoveryKeyOnForgotPassword": "Jika Anda lupa kata sandi Anda, satu-satunya cara untuk memulihkan data Anda adalah dengan kunci ini.",
"recoveryKeySaveDescription": "Kami tidak menyimpan kunci ini, tolong simpan kunci berisikan 24 kata ini di tempat yang aman.",
"doThisLater": "Nanti saja",
"copiedToClipboard": "Disalin ke papan klip",
"copiedNextToClipboard": "Kode berikutnya telah disalin ke papan klip",
"error": "Kesalahan",
"recoveryKeyCopiedToClipboard": "Kunci pemulihan disalin ke papan klip",
"recoveryKeyOnForgotPassword": "Jika Anda lupa kata sandi, satu-satunya cara memulihkan data Anda adalah dengan kunci ini.",
"recoveryKeySaveDescription": "Kami tidak menyimpan kunci ini, jadi harap simpan kunci yang berisi 24 kata ini dengan aman.",
"doThisLater": "Lakukan lain kali",
"saveKey": "Simpan kunci",
"save": "Simpan",
"send": "Kirim",
@@ -248,7 +248,7 @@
"passwordChangedSuccessfully": "Kata sandi sukses diubah",
"generatingEncryptionKeys": "Sedang membuat kunci enkripsi...",
"continueLabel": "Lanjutkan",
"insecureDevice": "Gawai takaman",
"insecureDevice": "Perangkat tidak aman",
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Maaf, kami tidak dapat membuat kunci yang aman pada perangkat ini.\n\nHarap mendaftar dengan perangkat lain.",
"howItWorks": "Cara kerjanya",
"ackPasswordLostWarning": "Saya mengerti bahwa jika saya lupa kata sandi saya, data saya dapat hilang karena data saya <underline>terenkripsi secara end-to-end</underline>.",
@@ -258,6 +258,10 @@
"areYouSureYouWantToLogout": "Anda yakin ingin keluar dari akun ini?",
"yesLogout": "Ya, keluar akun",
"exit": "Keluar",
"theme": "Tema",
"lightTheme": "Terang",
"darkTheme": "Gelap",
"systemTheme": "Sistem",
"verifyingRecoveryKey": "Memverifikasi kunci pemulihan...",
"recoveryKeyVerified": "Kunci pemulihan terverifikasi",
"recoveryKeySuccessBody": "Bagus! Kunci pemulihan ada valid. Terima kasih.\n\nMohon ingat-ingat untuk mencadangkan kunci pemulihan Anda dengan aman.",
@@ -391,7 +395,7 @@
"@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": "Autentikasi",
"androidSignInTitle": "Autentikasi diperlukan",
"@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."
},
@@ -399,15 +403,15 @@
"@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": "Kredensial gawal diperlukan",
"androidDeviceCredentialsRequiredTitle": "Kredensial perangkat diperlukan",
"@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": "Kredensial gawal diperlukan",
"androidDeviceCredentialsSetupDescription": "Kredensial perangkat diperlukan",
"@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": "Ke pengaturan",
"goToSettings": "Pergi ke pengaturan",
"@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."
},
@@ -447,45 +451,56 @@
"serverEndpoint": "Peladen endpoint",
"invalidEndpoint": "Endpoint takvalid",
"invalidEndpointMessage": "Maaf, endpoint yang Anda masukkan takvalid. Mohon masukkan endpoint yang valid, lalu coba kembali.",
"endpointUpdatedMessage": "Endpoint sukses dimutakhirkan",
"customEndpoint": "Terkoneksi ke {endpoint}",
"endpointUpdatedMessage": "Endpoint berhasil diubah",
"customEndpoint": "Terhubung ke {endpoint}",
"pinText": "Sematkan",
"unpinText": "Awasematkan",
"pinnedCodeMessage": "{code} telah disematkan",
"unpinnedCodeMessage": "{code} telah dilepas",
"pinned": "Disematkan",
"tags": "Tanda",
"createNewTag": "Buat Tanda Baru",
"tag": "Tanda",
"create": "Buat",
"editTag": "Sunting tanda",
"editTag": "Ubah tanda",
"deleteTagTitle": "Hapus tanda?",
"deleteTagMessage": "Anda yakin ingin menghapus tanda? Langkah ini tidak akan dapat dikembalikan seperti semula.",
"deleteTagMessage": "Apakah Anda yakin ingin menghapus tanda ini? Tindakan ini tidak dapat dibatalkan.",
"somethingWentWrongParsingCode": "Kode {x} tidak dapat kami urai.",
"updateNotAvailable": "Pemutakhiran tidak tersedia",
"viewRawCodes": "Tampilkan kode mentahan",
"rawCodes": "Kode mentahan",
"rawCodeData": "Data kode mentahan",
"appLock": "Pengunci Apl",
"noSystemLockFound": "Pengunci sistem tidak ditemukan",
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "Untuk menyalakan Pengunci Apl, mohon pasang kode sandi atau kunci layar di pengaturan sistem gawai Anda",
"autoLock": "Autokunci",
"immediately": "Dengan segera",
"updateNotAvailable": "Pembaruan tidak tersedia",
"viewRawCodes": "Lihat kode mentah",
"rawCodes": "Kode mentah",
"rawCodeData": "Data kode mentah",
"appLock": "Kunci aplikasi",
"noSystemLockFound": "Tidak ditemukan kunci sistem",
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "Untuk mengaktifkan kunci aplikasi, harap atur kode sandi perangkat atau kunci layar di pengaturan sistem Anda.",
"autoLock": "Kunci otomatis",
"immediately": "Segera",
"reEnterPassword": "Masukkan kembali kata sandi",
"reEnterPin": "Masukkan kembali PIN",
"next": "Selanjutnya",
"tooManyIncorrectAttempts": "Terlalu banyak percobaan yang salah",
"tapToUnlock": "Ketuk untuk membuka",
"setNewPassword": "Pasang kata sandi baru",
"deviceLock": "Pengunci bawaan gawai",
"deviceLock": "Kunci perangkat",
"hideContent": "Sembunyikan isi",
"hideContentDescriptionAndroid": "Sembunyikan isi aplikasi pada pengganti apl dan matikan penangkap layar",
"hideContentDescriptioniOS": "Sembunyikan isi aplikasi di pengganti apl",
"hideContentDescriptionAndroid": "Menyembunyikan konten aplikasi di pemilih aplikasi dan menonaktifkan tangkapan layar",
"hideContentDescriptioniOS": "Menyembunyikan konten aplikasi di pemilih aplikasi",
"autoLockFeatureDescription": "Durasi waktu aplikasi akan terkunci setelah aplikasi ditutup",
"appLockDescription": "Pilih layar kunci bawaan gawai Anda ATAU layar kunci kustom dengan PIN atau kata sandi.",
"pinLock": "PIN",
"enterPin": "Masukkan PIN",
"setNewPin": "Pasang PIN yang baru",
"importFailureDescNew": "Berkas yang dipilih tidak dapat diurai",
"appLockNotEnabled": "Pengunci Apl tidak dinyalakan",
"appLockNotEnabled": "Kunci aplikasi tidak diaktifkan",
"appLockNotEnabledDescription": "Mohon nyalakan pengunci apl di Keamanan > Pengunci Apl",
"authToViewPasskey": "Mohon autentikasikan untuk menampilkan kunci sandi",
"appLockOfflineModeWarning": "Anda telah memilih untuk mengunci aplikasi tanpa cadangan apa pun. Jika Anda lupa kode Pengunci Apl Anda, Anda tidak akan dapat mengakses data-data Anda."
"appLockOfflineModeWarning": "Anda telah memilih untuk mengunci aplikasi tanpa cadangan apa pun. Jika Anda lupa kode Pengunci Apl Anda, Anda tidak akan dapat mengakses data-data Anda.",
"duplicateCodes": "Kode duplikat",
"noDuplicates": "✨ Tak ada duplikat",
"youveNoDuplicateCodesThatCanBeCleared": "Kamu tidak memiliki kode duplikat yang dapat dihapus",
"deduplicateCodes": "Hapus kode duplikat",
"deselectAll": "Batalkan semua pilihan",
"selectAll": "Pilih semua",
"deleteDuplicates": "Hapus duplikat",
"plainHTML": "HTML Sederhana"
}

View File

@@ -258,6 +258,10 @@
"areYouSureYouWantToLogout": "Sei sicuro di volerti disconnettere?",
"yesLogout": "Si, effettua la disconnessione",
"exit": "Esci",
"theme": "Tema",
"lightTheme": "Chiaro",
"darkTheme": "Scuro",
"systemTheme": "Sistema",
"verifyingRecoveryKey": "Verifica della chiave di recupero...",
"recoveryKeyVerified": "Chiave di recupero verificata",
"recoveryKeySuccessBody": "Ottimo! La tua chiave di recupero è valida. Grazie per averla verificata.\n\nRicordati di effettuare il backup sicuro della tua chiave di recupero.",
@@ -497,5 +501,6 @@
"deduplicateCodes": "Codici deduplicati",
"deselectAll": "Deselezionare tutti",
"selectAll": "Seleziona tutti",
"deleteDuplicates": "Elimina i duplicati"
"deleteDuplicates": "Elimina i duplicati",
"plainHTML": "HTML semplice"
}

View File

@@ -258,6 +258,10 @@
"areYouSureYouWantToLogout": "로그아웃 하시겠습니까?",
"yesLogout": "네, 로그아웃하기",
"exit": "나가기",
"theme": "테마",
"lightTheme": "라이트",
"darkTheme": "다크",
"systemTheme": "시스템",
"verifyingRecoveryKey": "복구 키 확인 중...",
"recoveryKeyVerified": "복구 키 확인 됨",
"recoveryKeySuccessBody": "좋습니다! 복구 키가 확인되었습니다. 확인 절차를 거쳐주셔서 감사합니다.\n\n잊지 마시고 꼭 복구 키를 안전하게 보관해주세요.",
@@ -490,5 +494,13 @@
"appLockNotEnabled": "어플 잠금 설정되지 않음",
"appLockNotEnabledDescription": "설정 > 어플 잠금에서 어플 잠금을 활성화해주세요",
"authToViewPasskey": "패스키를 보려면 인증절차를 거쳐주세요",
"appLockOfflineModeWarning": "백업 없이 진행하는 것을 선택하셨습니다. 어플 잠금 방법을 잊어버리신 경우, 데이터에 접근하실 수 없게 됩니다."
"appLockOfflineModeWarning": "백업 없이 진행하는 것을 선택하셨습니다. 어플 잠금 방법을 잊어버리신 경우, 데이터에 접근하실 수 없게 됩니다.",
"duplicateCodes": "중복된 코드",
"noDuplicates": "✨ 중복 없음",
"youveNoDuplicateCodesThatCanBeCleared": "지울 수 있는 중복 코드가 없습니다",
"deduplicateCodes": "중복된 코드 제거",
"deselectAll": "모두 선택 해제",
"selectAll": "모두 선택",
"deleteDuplicates": "중복 제거",
"plainHTML": "일반 HTML"
}

View File

@@ -495,7 +495,7 @@
"appLockNotEnabledDescription": "Prosimy włączyć blokadę aplikacji z Zabezpieczenia > Blokada aplikacji",
"authToViewPasskey": "Prosimy uwierzytelnić się, aby wyświetlić klucz dostępu",
"appLockOfflineModeWarning": "Wybrano kontynuowanie bez kopii zapasowych. Jeśli zapomnisz blokady aplikacji, utracisz dostęp do swoich danych.",
"duplicateCodes": "Duplikuj kody",
"duplicateCodes": "Zduplikowane kody",
"noDuplicates": "✨ Brak duplikatów",
"youveNoDuplicateCodesThatCanBeCleared": "Nie masz duplikatów kodów, które mogą być wyczyszczone",
"deduplicateCodes": "Deduplikuj kody",

View File

@@ -11,7 +11,7 @@
"setupFirstAccount": "Configure sua primeira conta",
"importScanQrCode": "Escanear QR code",
"qrCode": "QR Code",
"importEnterSetupKey": "Insira uma chave de configuração",
"importEnterSetupKey": "Inserir chave de config.",
"importAccountPageTitle": "Inserir detalhes da conta",
"secretCanNotBeEmpty": "A chave secreta não pode estar vazia",
"bothIssuerAndAccountCanNotBeEmpty": "O emissor e a conta não podem estar vazios",
@@ -40,16 +40,16 @@
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
},
"pleaseLoginAgain": "Entre novamente",
"loggingOut": "Saindo...",
"pleaseLoginAgain": "Registre-se novamente",
"loggingOut": "Desconectando...",
"timeBasedKeyType": "Baseado no horário (TOTP)",
"counterBasedKeyType": "Baseado no contador (HOTP)",
"saveAction": "Salvar",
"nextTotpTitle": "avançar",
"nextTotpTitle": "próximo",
"deleteCodeTitle": "Excluir código?",
"deleteCodeMessage": "Deseja mesmo excluir este código? Esta ação é irreversível.",
"trashCode": "Excluir código?",
"trashCodeMessage": "Você tem certeza de que quer excluir o código para {account}?",
"trashCodeMessage": "Deseja mesmo excluir o código da {account}?",
"trash": "Excluir",
"viewLogsAction": "Ver registros",
"sendLogsDescription": "Isso compartilhará seus dados para lhe ajudarmos a resolver seu problema. Enquanto tomamos precauções para ter certeza que as informações sensíveis não estejam registradas, nós encorajamos você a visualizar esses dados antes de compartilhá-los.",
@@ -65,7 +65,7 @@
},
"copyEmailAction": "Copiar e-mail",
"exportLogsAction": "Exportar registros",
"reportABug": "Informe um erro",
"reportABug": "Informar erro",
"crashAndErrorReporting": "Relatórios de erros e falhas",
"reportBug": "Informar erro",
"emailUsMessage": "Envie um e-mail para {email}",
@@ -77,7 +77,7 @@
}
},
"contactSupport": "Contatar suporte",
"rateUsOnStore": "Avalies na {storeName}",
"rateUsOnStore": "Avalie-nos na {storeName}",
"blog": "Blog",
"merchandise": "Produtos",
"verifyPassword": "Verificar senha",
@@ -89,7 +89,7 @@
"incorrectPasswordTitle": "Senha incorreta",
"welcomeBack": "Bem-vindo(a) de volta!",
"madeWithLoveAtPrefix": "feito com ❤️ em ",
"supportDevs": "Inscreva-se no <bold-green>ente</bold-green> para nos apoiar",
"supportDevs": "Inscreva-se no <bold-green>Ente</bold-green> para apoiar-nos",
"supportDiscount": "Use o cupom \"AUTH\" para obter 10% de desconto no primeiro ano",
"changeEmail": "Alterar e-mail",
"changePassword": "Alterar senha",
@@ -112,25 +112,25 @@
"exportCodes": "Exportar códigos",
"importLabel": "Importar",
"importInstruction": "Selecione um arquivo que contenha uma lista de códigos no formato a seguir",
"importCodeDelimiterInfo": "Os códigos podem ser separados por uma vírgula ou uma nova linha",
"importCodeDelimiterInfo": "Códigos podem ser separados por vírgula ou uma nova linha",
"selectFile": "Selecionar arquivo",
"emailVerificationToggle": "Verificação por e-mail",
"emailVerificationEnableWarning": "Para evitar ser bloqueado da sua conta, certifique-se de guardar uma cópia do seu e-mail 2FA fora do Ente Auth antes de ativar a verificação de e-mail.",
"authToChangeEmailVerificationSetting": "Autentique-se para alterar a verificação de e-mail",
"authenticateGeneric": "Autentique",
"authToViewYourRecoveryKey": "Autentique para ver sua chave de recuperação",
"authToChangeYourEmail": "Autentique para alterar o seu e-mail",
"authToChangeYourPassword": "Autentique para alterar sua senha",
"authToViewSecrets": "Autentique para ver suas chaves secretas",
"authToInitiateSignIn": "Autentique para iniciar sessão para fazer uma cópia de segurança.",
"ok": "OK",
"authenticateGeneric": "Autentique-se",
"authToViewYourRecoveryKey": "Autentique-se para ver sua chave de recuperação",
"authToChangeYourEmail": "Autentique-se para alterar o seu e-mail",
"authToChangeYourPassword": "Autentique-se para alterar sua senha",
"authToViewSecrets": "Autentique-se para ver suas chaves secretas",
"authToInitiateSignIn": "Autentique-se para registrar e fazer uma cópia de segurança.",
"ok": "Ok",
"cancel": "Cancelar",
"yes": "Sim",
"no": "Não",
"email": "E-mail",
"support": "Suporte",
"general": "Geral",
"settings": "Ajustes",
"settings": "Opções",
"copied": "Copiado",
"pleaseTryAgain": "Tente novamente",
"existingUser": "Usuário existente",
@@ -151,8 +151,8 @@
"scanACode": "Escanear código",
"verify": "Verificar",
"verifyEmail": "Verificar e-mail",
"enterCodeHint": "Digite o código de 6 dígitos\ndo seu app autenticador",
"lostDeviceTitle": "Perdeu um dispositivo?",
"enterCodeHint": "Insira o código de 6 dígitos do aplicativo autenticador",
"lostDeviceTitle": "Perdeu o dispositivo?",
"twoFactorAuthTitle": "Autenticação de dois fatores",
"passkeyAuthTitle": "Verificação de chave de acesso",
"verifyPasskey": "Verificar chave de acesso",
@@ -177,7 +177,7 @@
"deleteAccountQuery": "Estamos tristes por vê-lo sair. Você enfrentou algum problema?",
"yesSendFeedbackAction": "Sim, enviar feedback",
"noDeleteAccountAction": "Não, excluir conta",
"initiateAccountDeleteTitle": "Autentique para iniciar a exclusão de conta",
"initiateAccountDeleteTitle": "Autentique-se para iniciar a exclusão de conta",
"sendEmail": "Enviar e-mail",
"createNewAccount": "Criar nova conta",
"weakStrength": "Fraca",
@@ -186,15 +186,15 @@
"confirmPassword": "Confirmar senha",
"close": "Fechar",
"oopsSomethingWentWrong": "Opa. Algo deu errado.",
"selectLanguage": "Trocar idioma",
"selectLanguage": "Alterar idioma",
"language": "Idioma",
"social": "Redes sociais",
"security": "Segurança",
"lockscreen": "Tela de bloqueio",
"authToChangeLockscreenSetting": "Autentique para alterar a opção de tela de bloqueio",
"authToChangeLockscreenSetting": "Autentique-se para alterar a opção da tela de bloqueio",
"deviceLockEnablePreSteps": "Para ativar o bloqueio do dispositivo, configure a senha do dispositivo ou o bloqueio de tela nas configurações do seu sistema.",
"viewActiveSessions": "Ver sessões ativas",
"authToViewYourActiveSessions": "Autentique para ver suas sessões ativas",
"authToViewYourActiveSessions": "Autentique-se para ver suas sessões ativas",
"searchHint": "Buscar...",
"search": "Buscar",
"sorryUnableToGenCode": "Desculpe, não foi possível gerar um código para {issuerName}",
@@ -208,7 +208,7 @@
"shareCodesDuration": "Selecione a duração em que você queira compartilhar os códigos.",
"restore": "Restaurar",
"copiedToClipboard": "Copiado para a área de transferência",
"copiedNextToClipboard": "Próximo código copiado para a área de transferência",
"copiedNextToClipboard": "Copiado próximo código à área de transferência",
"error": "Erro",
"recoveryKeyCopiedToClipboard": "Chave de recuperação copiada para a área de transferência",
"recoveryKeyOnForgotPassword": "Caso esqueça sua senha, a única maneira de recuperar seus dados é com esta chave.",
@@ -217,8 +217,8 @@
"saveKey": "Salvar chave",
"save": "Salvar",
"send": "Enviar",
"saveOrSendDescription": "Deseja mesmo salvar em seu armazenamento (pasta Downloads por padrão) ou enviar para outros apps?",
"saveOnlyDescription": "Deseja mesmo salvar em seu armazenamento (pasta Downloads por padrão)?",
"saveOrSendDescription": "Deseja mesmo salvar isso no armazenamento (pasta de Downloads por padrão) ou enviar a outros aplicativos?",
"saveOnlyDescription": "Deseja mesmo salvar em seu armazenamento (pasta de Downloads por padrão)?",
"back": "Voltar",
"createAccount": "Criar conta",
"passwordStrength": "Força da senha: {passwordStrengthValue}",
@@ -303,7 +303,7 @@
"description": "Text for the button to confirm the user understands the warning"
},
"authToExportCodes": "Autentique para exportar seus códigos",
"importSuccessTitle": "Oba!",
"importSuccessTitle": "Sucesso!",
"importSuccessDesc": "Você importou {count} códigos!",
"@importSuccessDesc": {
"placeholders": {
@@ -387,7 +387,7 @@
"@androidBiometricNotRecognized": {
"description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters."
},
"androidBiometricSuccess": "Êxito",
"androidBiometricSuccess": "Sucesso",
"@androidBiometricSuccess": {
"description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters."
},
@@ -403,15 +403,15 @@
"@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": "Credenciais do dispositivo necessárias",
"androidDeviceCredentialsRequiredTitle": "Credenciais necessários do dispositivo",
"@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": "Credenciais do dispositivo necessárias",
"androidDeviceCredentialsSetupDescription": "Credenciais necessários do dispositivo",
"@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": "Ir para Ajustes",
"goToSettings": "Ir para Opções",
"@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."
},
@@ -438,7 +438,7 @@
"signOutOtherDevices": "Sair em outros dispositivos",
"doNotSignOut": "Não sair",
"hearUsWhereTitle": "Como você descobriu o Ente? (opcional)",
"hearUsExplanation": "Não sabemos como você encontrou nosso app. Seria útil se você nos contasse!",
"hearUsExplanation": "Não rastreamos instalações. Ajudaria bastante se você contasse onde nos achou!",
"recoveryKeySaved": "Chave de recuperação salva na pasta Downloads!",
"waitingForBrowserRequest": "Aguardando solicitação do navegador...",
"waitingForVerification": "Aguardando verificação...",
@@ -446,8 +446,8 @@
"passKeyPendingVerification": "A verificação ainda está pendente",
"loginSessionExpired": "Sessão expirada",
"loginSessionExpiredDetails": "Sua sessão expirou. Registre-se novamente.",
"developerSettingsWarning": "Deseja mesmo alterar os ajustes de Desenvolvedor?",
"developerSettings": "Ajustes de Desenvolvedor",
"developerSettingsWarning": "Deseja mesmo alterar as Opções de Desenvolvedor?",
"developerSettings": "Opções de Desenvolvedor",
"serverEndpoint": "Endpoint do servidor",
"invalidEndpoint": "Endpoint inválido",
"invalidEndpointMessage": "Desculpe, o ponto de acesso inserido é inválido. Insira um ponto de acesso válido e tente novamente.",
@@ -463,16 +463,16 @@
"tag": "Etiqueta",
"create": "Criar",
"editTag": "Editar etiqueta",
"deleteTagTitle": "Apagar etiqueta?",
"deleteTagTitle": "Excluir etiqueta?",
"deleteTagMessage": "Deseja mesmo excluir esta etiqueta? Essa ação é irreversível.",
"somethingWentWrongParsingCode": "Não foi possível analisar os códigos {x}.",
"updateNotAvailable": "Atualização indisponível",
"viewRawCodes": "Ver códigos brutos",
"rawCodes": "Códigos brutos",
"rawCodeData": "Dados de códigos brutos",
"appLock": "Bloqueio do app",
"appLock": "Bloqueio do aplicativo",
"noSystemLockFound": "Nenhum bloqueio do sistema encontrado",
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "Para ativar o bloqueio do app, configure uma senha no dispositivo ou tela de bloqueio nas configurações do sistema.",
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "Para ativar o bloqueio do aplicativo, configure uma senha no dispositivo ou tela de bloqueio nas opções do sistema.",
"autoLock": "Bloqueio automático",
"immediately": "Imediatamente",
"reEnterPassword": "Reinserir senha",
@@ -483,17 +483,17 @@
"setNewPassword": "Defina a nova senha",
"deviceLock": "Bloqueio do dispositivo",
"hideContent": "Ocultar conteúdo",
"hideContentDescriptionAndroid": "Oculta o conteúdo do app no seletor de apps e desativa as capturas de tela",
"hideContentDescriptioniOS": "Oculta o conteúdo do seletor de apps",
"autoLockFeatureDescription": "Tempo de bloqueio do app em segundo plano",
"hideContentDescriptionAndroid": "Oculta o conteúdo do aplicativo no seletor de aplicativos e desativa as capturas de tela",
"hideContentDescriptioniOS": "Oculta o conteúdo do seletor de aplicativos",
"autoLockFeatureDescription": "Tempo de bloqueio do aplicativo em segundo plano",
"appLockDescription": "Escolha entre a tela de bloqueio padrão do seu dispositivo e uma tela de bloqueio personalizada com PIN ou senha.",
"pinLock": "Bloqueio PIN",
"enterPin": "Insira o PIN",
"pinLock": "PIN de bloqueio",
"enterPin": "Inserir PIN",
"setNewPin": "Definir novo PIN",
"importFailureDescNew": "Não foi possível analisar o arquivo selecionado.",
"appLockNotEnabled": "Bloqueio de aplicativo não ativado",
"appLockNotEnabledDescription": "Ative o bloqueio de aplicativo em Segurança > Bloqueio de aplicativo",
"authToViewPasskey": "Autentique para ver a sua chave de acesso",
"authToViewPasskey": "Autentique-se para ver a sua chave de acesso",
"appLockOfflineModeWarning": "Você prosseguiu sem cópias de segurança. Caso, se esqueça de seu aplicativo de bloqueio, você não poderá mais acessar seus dados.",
"duplicateCodes": "Duplicar códigos",
"noDuplicates": "✨ Sem duplicados",

View File

@@ -501,5 +501,6 @@
"deduplicateCodes": "Loại bỏ mã trùng lặp",
"deselectAll": "Bỏ chọn tất cả",
"selectAll": "Chọn tất cả",
"deleteDuplicates": "Xóa trùng lặp"
"deleteDuplicates": "Xóa trùng lặp",
"plainHTML": "HTML thuần"
}

View File

@@ -22,9 +22,6 @@ class _CodeTimerProgressState extends State<CodeTimerProgress> {
late final ValueNotifier<double> _progress;
late final int _periodInMicros;
// Cache the start time to avoid repeated system calls
late final int _startMicros;
// Reduce update frequency
final int _updateIntervalMs =
(Platform.isAndroid || Platform.isIOS) ? 16 : 500; // approximately 60 FPS
@@ -34,9 +31,8 @@ class _CodeTimerProgressState extends State<CodeTimerProgress> {
super.initState();
_periodInMicros = widget.period * 1000000;
_progress = ValueNotifier<double>(0.0);
_startMicros = DateTime.now().microsecondsSinceEpoch;
_updateTimeRemaining(DateTime.now().microsecondsSinceEpoch);
// Use a Timer instead of a Ticker
_timer = Timer.periodic(Duration(milliseconds: _updateIntervalMs), (timer) {
final now = DateTime.now().microsecondsSinceEpoch;
_updateTimeRemaining(now);
@@ -45,11 +41,20 @@ class _CodeTimerProgressState extends State<CodeTimerProgress> {
void _updateTimeRemaining(int currentMicros) {
// More efficient time calculation using modulo
final elapsed = (currentMicros - _startMicros) % _periodInMicros;
final elapsed = (currentMicros) % _periodInMicros;
final timeRemaining = _periodInMicros - elapsed;
_progress.value = timeRemaining / _periodInMicros;
}
@override
void didUpdateWidget(covariant CodeTimerProgress oldWidget) {
super.didUpdateWidget(oldWidget);
if (oldWidget.period != widget.period) {
_periodInMicros = widget.period * 1000000;
_updateTimeRemaining(DateTime.now().microsecondsSinceEpoch);
}
}
@override
void dispose() {
_timer.cancel();

View File

@@ -21,8 +21,10 @@ Future<ButtonResult?> showDialogWidget({
required List<ButtonWidget> buttons,
IconData? icon,
bool isDismissible = true,
bool useRootNavigator = false,
}) {
return showDialog(
useRootNavigator: useRootNavigator,
barrierDismissible: isDismissible,
barrierColor: backdropFaintDark,
context: context,

View File

@@ -4,6 +4,7 @@ import 'package:ente_auth/services/preference_service.dart';
import 'package:ente_auth/theme/ente_theme.dart';
import 'package:ente_auth/ui/utils/icon_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
class CustomIconPage extends StatefulWidget {
final Map<String, AllIconData> allIcons;
@@ -29,12 +30,15 @@ class _CustomIconPageState extends State<CustomIconPage> {
// Used to request focus on the search box when clicked the search icon
late FocusNode searchBoxFocusNode;
final Set<LogicalKeyboardKey> _pressedKeys = <LogicalKeyboardKey>{};
final ScrollController _scrollController = ScrollController();
@override
void initState() {
_filteredIcons = widget.allIcons;
_showSearchBox = _autoFocusSearch;
searchBoxFocusNode = FocusNode();
ServicesBinding.instance.keyboard.addHandler(_handleKeyEvent);
super.initState();
}
@@ -42,9 +46,41 @@ class _CustomIconPageState extends State<CustomIconPage> {
void dispose() {
_textController.dispose();
searchBoxFocusNode.dispose();
_scrollController.dispose();
ServicesBinding.instance.keyboard.removeHandler(_handleKeyEvent);
super.dispose();
}
bool _handleKeyEvent(KeyEvent event) {
if (event is KeyDownEvent) {
_pressedKeys.add(event.logicalKey);
if ((_pressedKeys.contains(LogicalKeyboardKey.controlLeft) ||
_pressedKeys.contains(LogicalKeyboardKey.control) ||
_pressedKeys.contains(LogicalKeyboardKey.controlRight)) &&
event.logicalKey == LogicalKeyboardKey.keyF) {
setState(() {
_showSearchBox = true;
searchBoxFocusNode.requestFocus();
_textController.clear();
_searchText = "";
});
return true;
}
if (event.logicalKey == LogicalKeyboardKey.escape) {
setState(() {
_textController.clear();
_searchText = "";
_showSearchBox = false;
_applyFilteringAndRefresh();
});
return true;
}
} else if (event is KeyUpEvent) {
_pressedKeys.remove(event.logicalKey);
}
return false;
}
void _applyFilteringAndRefresh() {
if (_searchText.isEmpty) {
setState(() {
@@ -121,8 +157,11 @@ class _CustomIconPageState extends State<CustomIconPage> {
children: [
Expanded(
child: Scrollbar(
controller: _scrollController,
thumbVisibility: true,
interactive: true,
child: GridView.builder(
controller: _scrollController,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: (MediaQuery.sizeOf(context).width ~/ 90)
.clamp(1, double.infinity)

View File

@@ -83,6 +83,7 @@ class _HomePageState extends State<HomePage> {
bool isCompactMode = false;
late CodeSortKey _codeSortKey;
final Set<LogicalKeyboardKey> _pressedKeys = <LogicalKeyboardKey>{};
@override
void initState() {
@@ -109,6 +110,40 @@ class _HomePageState extends State<HomePage> {
_showSearchBox = _autoFocusSearch;
searchBoxFocusNode = FocusNode();
ServicesBinding.instance.keyboard.addHandler(_handleKeyEvent);
}
bool _handleKeyEvent(KeyEvent event) {
if (event is KeyDownEvent) {
_pressedKeys.add(event.logicalKey);
bool isMetaKeyPressed = Platform.isMacOS || Platform.isIOS
? (_pressedKeys.contains(LogicalKeyboardKey.metaLeft) ||
_pressedKeys.contains(LogicalKeyboardKey.meta) ||
_pressedKeys.contains(LogicalKeyboardKey.metaRight))
: (_pressedKeys.contains(LogicalKeyboardKey.controlLeft) ||
_pressedKeys.contains(LogicalKeyboardKey.control) ||
_pressedKeys.contains(LogicalKeyboardKey.controlRight));
if (isMetaKeyPressed && event.logicalKey == LogicalKeyboardKey.keyF) {
setState(() {
_showSearchBox = true;
searchBoxFocusNode.requestFocus();
});
return true;
}
if (event.logicalKey == LogicalKeyboardKey.escape) {
setState(() {
_textController.clear();
_searchText = "";
_showSearchBox = false;
_applyFilteringAndRefresh();
});
return true;
}
} else if (event is KeyUpEvent) {
_pressedKeys.remove(event.logicalKey);
}
return false;
}
void _loadCodes() {
@@ -208,8 +243,9 @@ class _HomePageState extends State<HomePage> {
_streamSubscription?.cancel();
_triggerLogoutEvent?.cancel();
_iconsChangedEvent?.cancel();
_textController.dispose();
_textController.removeListener(_applyFilteringAndRefresh);
ServicesBinding.instance.keyboard.removeHandler(_handleKeyEvent);
searchBoxFocusNode.dispose();
super.dispose();

View File

@@ -20,6 +20,14 @@ class _ReorderCodesPageState extends State<ReorderCodesPage> {
bool hasChanged = false;
final logger = Logger('ReorderCodesPage');
final ScrollController _scrollController = ScrollController();
@override
void dispose() {
_scrollController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
final bool isCompactMode = PreferenceService.instance.isCompactMode();
@@ -55,33 +63,40 @@ class _ReorderCodesPageState extends State<ReorderCodesPage> {
),
],
),
body: ReorderableListView(
buildDefaultDragHandles: false,
proxyDecorator: (Widget child, int index, Animation<double> animation) {
return AnimatedBuilder(
animation: animation,
builder: (BuildContext context, _) {
final animValue = Curves.easeInOut.transform(animation.value);
final scale = lerpDouble(1, 1.05, animValue)!;
return Transform.scale(scale: scale, child: child);
},
);
},
children: [
for (final code in widget.codes)
ReorderableDragStartListener(
key: ValueKey('${code.hashCode}_${code.generatedID}'),
index: widget.codes.indexOf(code),
child: CodeWidget(
key: ValueKey(code.generatedID),
code,
isCompactMode: isCompactMode,
body: Scrollbar(
controller: _scrollController,
thumbVisibility: true,
interactive: true,
child: ReorderableListView(
scrollController: _scrollController,
buildDefaultDragHandles: false,
proxyDecorator:
(Widget child, int index, Animation<double> animation) {
return AnimatedBuilder(
animation: animation,
builder: (BuildContext context, _) {
final animValue = Curves.easeInOut.transform(animation.value);
final scale = lerpDouble(1, 1.05, animValue)!;
return Transform.scale(scale: scale, child: child);
},
);
},
children: [
for (final code in widget.codes)
ReorderableDragStartListener(
key: ValueKey('${code.hashCode}_${code.generatedID}'),
index: widget.codes.indexOf(code),
child: CodeWidget(
key: ValueKey(code.generatedID),
code,
isCompactMode: isCompactMode,
),
),
),
],
onReorder: (oldIndex, newIndex) {
updateCodeIndex(oldIndex, newIndex);
},
],
onReorder: (oldIndex, newIndex) {
updateCodeIndex(oldIndex, newIndex);
},
),
),
);
}

View File

@@ -329,7 +329,7 @@ class _LockScreenState extends State<LockScreen> with WidgetsBindingObserver {
_isShowingLockScreen = false;
if (result) {
lastAuthenticatingTime = DateTime.now().millisecondsSinceEpoch;
AppLock.of(context)!.didUnlock();
AppLock.of(context)?.didUnlock();
await _lockscreenSetting.setInvalidAttemptCount(0);
setState(() {
lockedTimeInSeconds = 15;

View File

@@ -413,9 +413,11 @@ Future<dynamic> showTextInputDialog(
TextCapitalization textCapitalization = TextCapitalization.none,
bool alwaysShowSuccessState = false,
bool isPasswordInput = false,
bool useRootNavigator = false,
}) {
return showDialog(
barrierColor: backdropFaintDark,
useRootNavigator: useRootNavigator,
context: context,
builder: (context) {
final bottomInset = MediaQuery.of(context).viewInsets.bottom;

View File

@@ -1,6 +1,6 @@
name: ente_auth
description: ente two-factor authenticator
version: 4.2.2+422
version: 4.2.3+423
publish_to: none
environment:

View File

@@ -1,4 +1,4 @@
FROM golang:1.20-alpine3.17 AS builder
FROM golang:1.23-alpine3.21 AS builder
RUN apk add --no-cache gcc musl-dev git build-base pkgconfig libsodium-dev
ENV GOOS=linux
@@ -14,7 +14,7 @@ COPY . .
RUN --mount=type=cache,target=/root/.cache/go-build \
go build -o ente-cli main.go
FROM alpine:3.17
FROM alpine:3.21
RUN apk add libsodium-dev
COPY --from=builder /etc/ente/ente-cli .

View File

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

View File

@@ -1,6 +1,6 @@
module github.com/ente-io/cli
go 1.20
go 1.23
require (
github.com/go-resty/resty/v2 v2.7.0
@@ -33,7 +33,7 @@ require (
github.com/spf13/cast v1.5.1 // indirect
github.com/spf13/cobra v1.7.0
github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/spf13/pflag v1.0.5
github.com/spf13/viper v1.16.0
github.com/subosito/gotenv v1.6.0 // indirect
go.etcd.io/bbolt v1.3.7

View File

@@ -64,6 +64,7 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7
github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs=
github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw=
github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY=
github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
@@ -110,6 +111,7 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
@@ -146,9 +148,11 @@ github.com/kong/go-srp v0.0.0-20191210190804-cde1efa3c083/go.mod h1:Zde5RRLiH8/2
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
@@ -169,6 +173,7 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM=

View File

@@ -2,56 +2,56 @@
## v1.7.8 (Unreleased)
- .
- .
## v1.7.7
- Retain JPEG originals even on date modifications.
- Support Portuguese and Vietnamese translations.
- Retain JPEG originals even on date modifications.
- Support Portuguese and Vietnamese translations.
## v1.7.6
- Face merging and suggestions (beta).
- Parse description from metadata JSON.
- Support Italian, Ukrainian and Lithuanian translations.
- Fix an out of memory crash on uploading large libraries.
- Face merging and suggestions (beta).
- Parse description from metadata JSON.
- Support Italian, Ukrainian and Lithuanian translations.
- Fix an out of memory crash on uploading large libraries.
## v1.7.5
- Face grouping (beta).
- Include shared files in export.
- Directly upload to selected album on drag and drop.
- Improve heuristics for clubbing a photo and video into a live photo.
- Face grouping (beta).
- Include shared files in export.
- Directly upload to selected album on drag and drop.
- Improve heuristics for clubbing a photo and video into a live photo.
## v1.7.4
- Improved date search, including support for day of week and hour of day.
- Fix video thumbnail generation and upload on Intel macOS.
- Club a photo and video into a live photo only if both are within 2 minutes.
- Fix an issue causing ZIP uploads to sometimes fail.
- Improved date search, including support for day of week and hour of day.
- Fix video thumbnail generation and upload on Intel macOS.
- Club a photo and video into a live photo only if both are within 2 minutes.
- Fix an issue causing ZIP uploads to sometimes fail.
## v1.7.3
- Face recognition and magic search (public beta).
- Support Polish translations.
- Face recognition and magic search (public beta).
- Support Polish translations.
## v1.7.2
- Significantly improve the speed of the metadata parsing step during imports
of Google takeouts.
- Add a option to set and use a custom endpoint.
- 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.
- Significantly improve the speed of the metadata parsing step during imports of
Google takeouts.
- Add a option to set and use a custom endpoint.
- 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
- Support for passkeys as a second factor authentication mechanism.
- Remember the window size across app restarts.
- Revert changes to the Linux icon.
- Fix an issue causing deleted items in watched folders to not move to
uncategorized.
- Fix duplicate file uploads when initializing a folder watch (sometimes).
- Support for passkeys as a second factor authentication mechanism.
- Remember the window size across app restarts.
- Revert changes to the Linux icon.
- Fix an issue causing deleted items in watched folders to not move to
uncategorized.
- Fix duplicate file uploads when initializing a folder watch (sometimes).
## v1.7.0
@@ -61,138 +61,138 @@ communicate only using a predefined IPC boundary.
Other highlights:
- View your photos on big screens and Chromecast devices by using the "Play
album on TV" option in the album menu.
- Support Brazilian Portuguese, German and Russian.
- Provide a checkbox to select all photos in a day.
- Fix a case where the dedup screen would not refresh after removing items.
- View your photos on big screens and Chromecast devices by using the "Play
album on TV" option in the album menu.
- Support Brazilian Portuguese, German and Russian.
- Provide a checkbox to select all photos in a day.
- Fix a case where the dedup screen would not refresh after removing items.
## v1.6.63
### New
- Option to select file download location.
- Add support for searching popular cities
- Sorted duplicates in desecending order of size
- Add Counter to upload section
- Display full name and collection name on hover on dedupe screen photos
- Option to select file download location.
- Add support for searching popular cities
- Sorted duplicates in desecending order of size
- Add Counter to upload section
- Display full name and collection name on hover on dedupe screen photos
### Bug Fixes
- Fix add to album padding issue
- Fix double uncategorized album issue
- Hide Hidden collection files from all section
- Fix add to album padding issue
- Fix double uncategorized album issue
- Hide Hidden collection files from all section
## v1.6.62
### New
- Integrated onnx clip runner
- Integrated onnx clip runner
### Bug Fixes
- Fixes login button requiring double click issue
- Fixes Collection sort state not preserved issue
- Fixes continuous export causing app crash
- Improves ML related copies for better distinction from clip
- Added Better favicon for light mode
- Fixed face indexing issues
- Fixed thumbnail load issue
- Fixes login button requiring double click issue
- Fixes Collection sort state not preserved issue
- Fixes continuous export causing app crash
- Improves ML related copies for better distinction from clip
- Added Better favicon for light mode
- Fixed face indexing issues
- Fixed thumbnail load issue
## v1.6.60
### Bug Fixes
- Fix Thumbnail Orientation issue
- Fix ML logging issue
- Fix Thumbnail Orientation issue
- Fix ML logging issue
## v1.6.59
### New
- Added arm64 builds for linux
- Added arm64 builds for linux
### Bug Fixes
- Fix Editor file not loading issue
- Fix ML results missing thumbnail issue
- Fix Editor file not loading issue
- Fix ML results missing thumbnail issue
## v1.6.58
### Bug Fixes
- Fix File load issue
- Fix File load issue
## v1.6.57
### New Features
- Added encrypted Disk caching for files
- Added option to customize cache folder location
- Added encrypted Disk caching for files
- Added option to customize cache folder location
### Bug Fixes
- Fixed caching issue,causing multiple download of file during ml sync
- Fixed caching issue,causing multiple download of file during ml sync
## v1.6.55
### Bug Fixes
- Added manage family portal option if add-on is active
- Fixed filename date parsing issue
- Fixed storage limit ui glitch
- Fixed dedupe page layout issue
- Fixed ElectronAPI refactoring issue
- Fixed Search related issues
- Added manage family portal option if add-on is active
- Fixed filename date parsing issue
- Fixed storage limit ui glitch
- Fixed dedupe page layout issue
- Fixed ElectronAPI refactoring issue
- Fixed Search related issues
## v1.6.54
### New Features
- Added support for HEIC and raw image in photo editor
- Added support for HEIC and raw image in photo editor
### Bug Fixes
- Fixed 16bit HDR HEIC images support
- Fixed blocked login due safe storage issue
- Fixed Search related issues
- Fixed issue of watch folder not cleared on logout
- other under the hood ui/ux improvements
- Fixed 16bit HDR HEIC images support
- Fixed blocked login due safe storage issue
- Fixed Search related issues
- Fixed issue of watch folder not cleared on logout
- other under the hood ui/ux improvements
## v1.6.53
### Bug Fixes
- Fixed watch folder disabled issue
- Fixed BF Add on related issues
- Fixed clip sync issue and added better logging
- Fixed mov file upload
- Fixed clip extraction related issue
- Fixed watch folder disabled issue
- Fixed BF Add on related issues
- Fixed clip sync issue and added better logging
- Fixed mov file upload
- Fixed clip extraction related issue
## v1.6.52
### New Features
- Added Clip Desktop on windows
- Added Clip Desktop on windows
### Bug Fixes
- fixed google json matching issue
- other under-the-hood changes to improve performance and bug fixes
- fixed google json matching issue
- other under-the-hood changes to improve performance and bug fixes
## v1.6.50
### New Features
- Added Clip desktop
- Added Clip desktop
### Bug Fixes
- Fixed desktop downloaded file had extra dot in the name
- Cleanup error messages
- fix the motion photo clustering issue
- Add option to disable cf proxy locally
- other under-the-hood changes to improve UX
- Fixed desktop downloaded file had extra dot in the name
- Cleanup error messages
- fix the motion photo clustering issue
- Add option to disable cf proxy locally
- other under-the-hood changes to improve UX
## v1.6.49
@@ -205,63 +205,63 @@ to know about feature and functionalities.
### Bug Fixes
- Fixed misaligned icons in photo-viewer
- Fixed issue with Motion photo upload
- Fixed issue with Live-photo upload
- other minor ux improvement
- Fixed misaligned icons in photo-viewer
- Fixed issue with Motion photo upload
- Fixed issue with Live-photo upload
- other minor ux improvement
## v1.6.46
### Bug Fixes
- Fixes OOM crashes during file upload
[#1379](https://github.com/ente-io/photos-web/pull/1379)
- Fixes OOM crashes during file upload
[#1379](https://github.com/ente-io/photos-web/pull/1379)
## v1.6.45
### Bug Fixes
- Fixed app keeps reloading issue
[#235](https://github.com/ente-io/photos-desktop/pull/235)
- Fixed dng and arw preview issue
[#1378](https://github.com/ente-io/photos-web/pull/1378)
- Added view crash report option (help menu) for user to share electron crash
report locally
- Fixed app keeps reloading issue
[#235](https://github.com/ente-io/photos-desktop/pull/235)
- Fixed dng and arw preview issue
[#1378](https://github.com/ente-io/photos-web/pull/1378)
- Added view crash report option (help menu) for user to share electron crash
report locally
## v1.6.44
- Upgraded electron to get latest security patches and other improvements.
- Upgraded electron to get latest security patches and other improvements.
## v1.6.43
### Added
- #### Check for update and changelog option
- #### Check for update and changelog option
Added options to check for update manually and a view changelog via the app
menubar
- #### Opt out of crash reporting
- #### Opt out of crash reporting
Added option to out of a crash reporting, it can accessed from the settings
-> preferences -> disable crash reporting
- #### Type search
- #### Type search
Added new search option to search files based on file type i.e, image,
video, live-photo.
- #### Manual Convert Button
- #### Manual Convert Button
In case the video is not playable, Now there is a convert button which can
be used to trigger conversion of the video to supported format.
- #### File Download Progress
- #### File Download Progress
The file loader now also shows the exact percentage download progress,
instead of just a simple loader.
- #### Bug fixes & other enhancements
- #### Bug fixes & other enhancements
We have squashed a few pesky bugs that were reported by our community
@@ -269,23 +269,23 @@ to know about feature and functionalities.
### Added
- #### Hidden albums
- #### Hidden albums
You can now hide albums, just like individual memories.
- #### Email verification
- #### Email verification
We have now made email verification optional, so you can sign in with just
your email address and password, without waiting for a verification code.
You can opt in / out of email verification from Settings > Security.
- #### Download Album
- #### Download Album
You can now chose the download location for downloading albums. Along with
that we have also added progress bar for album download.
- #### Bug fixes & other enhancements
- #### Bug fixes & other enhancements
We have squashed a few pesky bugs that were reported by our community

View File

@@ -1,8 +1,8 @@
# Dependencies
- [Electron](#electron)
- [Dev dependencies](#dev)
- [Functionality](#functionality)
- [Electron](#electron)
- [Dev dependencies](#dev)
- [Functionality](#functionality)
## Electron
@@ -13,24 +13,24 @@ Electron embeds Chromium and Node.js in the generated app's binary. The
generated app thus consists of two separate processes - the _main_ process, and
a _renderer_ process.
- The _main_ process runs the embedded node. This process can deal with the
host OS - it is conceptually like a `node` repl running on your machine. In
our case, the TypeScript code (in the `src/` directory) gets transpiled by
`tsc` into JavaScript in the `build/app/` directory, which gets bundled in
the generated app's binary and is loaded by the node (main) process when the
app starts.
- The _main_ process runs the embedded node. This process can deal with the host
OS - it is conceptually like a `node` repl running on your machine. In our
case, the TypeScript code (in the `src/` directory) gets transpiled by `tsc`
into JavaScript in the `build/app/` directory, which gets bundled in the
generated app's binary and is loaded by the node (main) process when the app
starts.
- The _renderer_ process is a regular web app that gets loaded into the
embedded Chromium. When the main process starts, it creates a new "window"
that shows this embedded Chromium. In our case, we build and bundle a static
export of the [Photos web app](../../web/README.md) in the generated desktop
app. This gets loaded by the embedded Chromium at runtime, acting as the
desktop app's UI.
- The _renderer_ process is a regular web app that gets loaded into the embedded
Chromium. When the main process starts, it creates a new "window" that shows
this embedded Chromium. In our case, we build and bundle a static export of
the [Photos web app](../../web/README.md) in the generated desktop app. This
gets loaded by the embedded Chromium at runtime, acting as the desktop app's
UI.
There is also a third environment that gets temporarily created:
- The [preload script](../src/preload.ts) acts as a gateway between the _main_
and the _renderer_ process. It runs in its own isolated environment.
- The [preload script](../src/preload.ts) acts as a gateway between the _main_
and the _renderer_ process. It runs in its own isolated environment.
### Packaging
@@ -66,15 +66,15 @@ Electron process. This allows us to directly use the output produced by
### Others
- [any-shell-escape](https://github.com/boazy/any-shell-escape) is for
escaping shell commands before we execute them (e.g. say when invoking the
embedded ffmpeg CLI).
- [any-shell-escape](https://github.com/boazy/any-shell-escape) is for escaping
shell commands before we execute them (e.g. say when invoking the embedded
ffmpeg CLI).
- [auto-launch](https://github.com/Teamwork/node-auto-launch) is for
automatically starting our app on login, if the user so wishes.
- [auto-launch](https://github.com/Teamwork/node-auto-launch) is for
automatically starting our app on login, if the user so wishes.
- [electron-store](https://github.com/sindresorhus/electron-store) is used for
persisting user preferences and other arbitrary data.
- [electron-store](https://github.com/sindresorhus/electron-store) is used for
persisting user preferences and other arbitrary data.
## Dev
@@ -84,20 +84,20 @@ are similar to that in the web code.
Some extra ones specific to the code here are:
- [@tsconfig/recommended](https://github.com/tsconfig/bases) gives us a base
tsconfig for the Node.js version that our current Electron version uses.
- [@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.
- [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.
- [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.
- We don't need `ajv`, but it is a transitive dependency which breaks the
build if we let its version be resolved via the yarn resolution mechanism.
Taking a direct dependency on it is the easiest workaround for now.
- We don't need `ajv`, but it is a transitive dependency which breaks the build
if we let its version be resolved via the yarn resolution mechanism. Taking a
direct dependency on it is the easiest workaround for now.
## Functionality

View File

@@ -6,9 +6,9 @@
Launch the app in development mode:
- Transpiles the files in `src/` and starts the main process.
- Transpiles the files in `src/` and starts the main process.
- Runs a development server for the renderer, with hot module reload.
- Runs a development server for the renderer, with hot module reload.
### yarn build

View File

@@ -2,21 +2,21 @@
Conceptually, the release is straightforward:
1. We trigger a GitHub workflow that creates a (pre-)release with the build.
1. We trigger a GitHub workflow that creates a (pre-)release with the build.
2. When ready, we make that release the latest.
2. When ready, we make that release the latest.
3. The download links on our website, and existing apps already check the
latest GitHub release and update automatically.
3. The download links on our website, and existing apps already check the latest
GitHub release and update automatically.
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.
- Source code lives here, in [ente-io/ente](https://github.com/ente-io/ente).
- Source code lives here, in [ente-io/ente](https://github.com/ente-io/ente).
- Releases are done from
[ente-io/photos-desktop](https://github.com/ente-io/photos-desktop).
- Releases are done from
[ente-io/photos-desktop](https://github.com/ente-io/photos-desktop).
## Nightly builds
@@ -32,17 +32,17 @@ gh workflow run desktop-release.yml --source=<branch>
## Release checklist
1. Update source repo to set version `1.x.x` in `package.json` and finalize the
CHANGELOG.
1. Update source repo to set version `1.x.x` in `package.json` and finalize the
CHANGELOG.
2. Merge PR then tag the merge commit on `main` in the source repo:
2. Merge PR then tag the merge commit on `main` in the source repo:
```sh
git tag photosd-v1.x.x
git push origin photosd-v1.x.x
```
3. In the release repo:
3. In the release repo:
```sh
./.github/trigger-release.sh v1.x.x
@@ -56,20 +56,20 @@ 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-beta`, and
merge these changes into `main`.
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:
2. In the release repo, delete the existing _nightly_ pre-release, then:
```sh
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`).
3. Start a new run of the workflow (`gh workflow run desktop-release.yml`).
4. Once the workflow creates the new 1.x.x-beta pre-release, edit its
description to "Nightly builds".
4. Once the workflow creates the new 1.x.x-beta pre-release, edit its
description to "Nightly builds".
Subsequent scheduled nightly workflows will keep updating this pre-release.
@@ -77,14 +77,14 @@ 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-beta`s,
1. In your branch in the source repository, set the version in `package.json`
to something different, say `1.x.x-foo`.
1. In your branch in the source repository, set the version in `package.json` to
something different, say `1.x.x-foo`.
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".
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:
3. Trigger the workflow in the release repo:
```sh
gh workflow run desktop-release.yml --source=my-branch
@@ -95,9 +95,9 @@ To create extra one-off pre-releases in addition to the nightly `1.x.x-beta`s,
The GitHub Action runs on Windows, Linux and macOS. It produces the artifacts
defined in the `build` value in `package.json`.
- Windows - An NSIS installer.
- Linux - An AppImage, and 3 other packages (`.rpm`, `.deb`, `.pacman`)
- macOS - A universal DMG
- Windows - An NSIS installer.
- Linux - An AppImage, and 3 other packages (`.rpm`, `.deb`, `.pacman`)
- macOS - A universal DMG
Additionally, the GitHub action notarizes and signs the macOS DMG (For this it
uses credentials provided via GitHub secrets).
@@ -105,16 +105,16 @@ uses credentials provided via GitHub secrets).
To rollout the build, we need to publish the draft release. Thereafter,
everything is automated:
- The website automatically redirects to the latest release on GitHub when
people try to download.
- The website automatically redirects to the latest release on GitHub when
people try to download.
- The file formats with support auto update (Windows `exe`, the Linux AppImage
and the macOS DMG) also check the latest GitHub release automatically to
download and apply the update (the rest of the formats don't support auto
updates yet).
- The file formats with support auto update (Windows `exe`, the Linux AppImage
and the macOS DMG) also check the latest GitHub release automatically to
download and apply the update (the rest of the formats don't support auto
updates yet).
- We're not putting the desktop app in other stores currently. It is available
as a `brew cask`, but we only had to open a PR to add the initial formula,
now their maintainers automatically bump the SHA, version number and the
(derived from the version) URL in the formula when their tools notice a new
release on our GitHub.
- We're not putting the desktop app in other stores currently. It is available
as a `brew cask`, but we only had to open a PR to add the initial formula, now
their maintainers automatically bump the SHA, version number and the (derived
from the version) URL in the formula when their tools notice a new release on
our GitHub.

View File

@@ -30,7 +30,7 @@
"clip-bpe-js": "^0.0.6",
"comlink": "^4.4.2",
"compare-versions": "^6.1.1",
"electron-log": "^5.2.3",
"electron-log": "^5.2.4",
"electron-store": "^8.2.0",
"electron-updater": "^6.3.9",
"ffmpeg-static": "^5.2.0",
@@ -40,23 +40,23 @@
"onnxruntime-node": "^1.20.1"
},
"devDependencies": {
"@eslint/js": "^9.15.0",
"@eslint/js": "^9.17.0",
"@tsconfig/node20": "^20.1.4",
"@types/auto-launch": "^5.0.5",
"@types/eslint__js": "^8.42.3",
"@types/ffmpeg-static": "^3.0.3",
"ajv": "^8.17.1",
"concurrently": "^9.1.0",
"concurrently": "^9.1.1",
"cross-env": "^7.0.3",
"electron": "^33.2.1",
"electron-builder": "^25.1.8",
"eslint": "^9",
"prettier": "3.3.3",
"prettier": "3.4.2",
"prettier-plugin-organize-imports": "^4.1.0",
"prettier-plugin-packagejson": "^2.5.6",
"shx": "^0.3.4",
"typescript": "^5.7.2",
"typescript-eslint": "^8.16.0"
"typescript-eslint": "^8.18.2"
},
"packageManager": "yarn@1.22.22",
"productName": "ente"

View File

@@ -255,10 +255,10 @@ const registerPrivilegedSchemes = () => {
* See: [Note: Passkey verification in the desktop app].
*
* Implementation notes:
* - https://www.electronjs.org/docs/latest/tutorial/launch-app-from-url-in-another-app
* - This works only when the app is packaged.
* - On Windows and Linux, we get the deeplink in the "second-instance" event.
* - On macOS, we get the deeplink in the "open-url" event.
* - https://www.electronjs.org/docs/latest/tutorial/launch-app-from-url-in-another-app
* - This works only when the app is packaged.
* - On Windows and Linux, we get the deeplink in the "second-instance" event.
* - On macOS, we get the deeplink in the "open-url" event.
*/
const registerForEnteLinks = () => app.setAsDefaultProtocolClient("ente");

View File

@@ -57,9 +57,9 @@ let _child: UtilityProcess | undefined;
*
* So we
*
* 1. In the utility process create a message channel.
* 2. Spawn a utility process, and send one port of the pair to it.
* 3. Send the other port of the pair to the renderer.
* 1. In the utility process create a message channel.
* 2. Spawn a utility process, and send one port of the pair to it.
* 3. Send the other port of the pair to the renderer.
*
* The renderer will forward that port to the web worker that is coordinating
* the ML indexing on the web layer. Thereafter, the utility process and web

View File

@@ -31,9 +31,9 @@
* and when changing one of them, remember to see if the other two also need
* changing:
*
* - [renderer] web/packages/base/types/ipc.ts contains docs
* - [preload] desktop/src/preload.ts ↕︎
* - [main] desktop/src/main/ipc.ts contains impl
* - [renderer] web/packages/base/types/ipc.ts contains docs
* - [preload] desktop/src/preload.ts ↕︎
* - [main] desktop/src/main/ipc.ts contains impl
*/
// This code runs in the (isolated) web layer. Contrary to the impression given

View File

@@ -144,10 +144,10 @@
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.9.1.tgz#4a97e85e982099d6c7ee8410aacb55adaa576f06"
integrity sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==
"@eslint/js@^9.15.0":
version "9.15.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.15.0.tgz#df0e24fe869143b59731942128c19938fdbadfb5"
integrity sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==
"@eslint/js@^9.17.0":
version "9.17.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.17.0.tgz#1523e586791f80376a6f8398a3964455ecc651ec"
integrity sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==
"@eslint/object-schema@^2.1.4":
version "2.1.4"
@@ -384,62 +384,62 @@
dependencies:
"@types/node" "*"
"@typescript-eslint/eslint-plugin@8.16.0":
version "8.16.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.16.0.tgz#ac56825bcdf3b392fc76a94b1315d4a162f201a6"
integrity sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q==
"@typescript-eslint/eslint-plugin@8.18.2":
version "8.18.2"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.2.tgz#c78e363ab5fe3b21dd1c90d8be9581534417f78e"
integrity sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==
dependencies:
"@eslint-community/regexpp" "^4.10.0"
"@typescript-eslint/scope-manager" "8.16.0"
"@typescript-eslint/type-utils" "8.16.0"
"@typescript-eslint/utils" "8.16.0"
"@typescript-eslint/visitor-keys" "8.16.0"
"@typescript-eslint/scope-manager" "8.18.2"
"@typescript-eslint/type-utils" "8.18.2"
"@typescript-eslint/utils" "8.18.2"
"@typescript-eslint/visitor-keys" "8.18.2"
graphemer "^1.4.0"
ignore "^5.3.1"
natural-compare "^1.4.0"
ts-api-utils "^1.3.0"
"@typescript-eslint/parser@8.16.0":
version "8.16.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.16.0.tgz#ee5b2d6241c1ab3e2e53f03fd5a32d8e266d8e06"
integrity sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w==
"@typescript-eslint/parser@8.18.2":
version "8.18.2"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.18.2.tgz#0379a2e881d51d8fcf7ebdfa0dd18eee79182ce2"
integrity sha512-y7tcq4StgxQD4mDr9+Jb26dZ+HTZ/SkfqpXSiqeUXZHxOUyjWDKsmwKhJ0/tApR08DgOhrFAoAhyB80/p3ViuA==
dependencies:
"@typescript-eslint/scope-manager" "8.16.0"
"@typescript-eslint/types" "8.16.0"
"@typescript-eslint/typescript-estree" "8.16.0"
"@typescript-eslint/visitor-keys" "8.16.0"
"@typescript-eslint/scope-manager" "8.18.2"
"@typescript-eslint/types" "8.18.2"
"@typescript-eslint/typescript-estree" "8.18.2"
"@typescript-eslint/visitor-keys" "8.18.2"
debug "^4.3.4"
"@typescript-eslint/scope-manager@8.16.0":
version "8.16.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.16.0.tgz#ebc9a3b399a69a6052f3d88174456dd399ef5905"
integrity sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==
"@typescript-eslint/scope-manager@8.18.2":
version "8.18.2"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.18.2.tgz#d193c200d61eb0ddec5987c8e48c9d4e1c0510bd"
integrity sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==
dependencies:
"@typescript-eslint/types" "8.16.0"
"@typescript-eslint/visitor-keys" "8.16.0"
"@typescript-eslint/types" "8.18.2"
"@typescript-eslint/visitor-keys" "8.18.2"
"@typescript-eslint/type-utils@8.16.0":
version "8.16.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.16.0.tgz#585388735f7ac390f07c885845c3d185d1b64740"
integrity sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg==
"@typescript-eslint/type-utils@8.18.2":
version "8.18.2"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.18.2.tgz#5ad07e09002eee237591881df674c1c0c91ca52f"
integrity sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==
dependencies:
"@typescript-eslint/typescript-estree" "8.16.0"
"@typescript-eslint/utils" "8.16.0"
"@typescript-eslint/typescript-estree" "8.18.2"
"@typescript-eslint/utils" "8.18.2"
debug "^4.3.4"
ts-api-utils "^1.3.0"
"@typescript-eslint/types@8.16.0":
version "8.16.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.16.0.tgz#49c92ae1b57942458ab83d9ec7ccab3005e64737"
integrity sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==
"@typescript-eslint/types@8.18.2":
version "8.18.2"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.18.2.tgz#5ebad5b384c8aa1c0f86cee1c61bcdbe7511f547"
integrity sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==
"@typescript-eslint/typescript-estree@8.16.0":
version "8.16.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.16.0.tgz#9d741e56e5b13469b5190e763432ce5551a9300c"
integrity sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw==
"@typescript-eslint/typescript-estree@8.18.2":
version "8.18.2"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.2.tgz#fffb85527f8304e29bfbbdc712f4515da9f8b47c"
integrity sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==
dependencies:
"@typescript-eslint/types" "8.16.0"
"@typescript-eslint/visitor-keys" "8.16.0"
"@typescript-eslint/types" "8.18.2"
"@typescript-eslint/visitor-keys" "8.18.2"
debug "^4.3.4"
fast-glob "^3.3.2"
is-glob "^4.0.3"
@@ -447,22 +447,22 @@
semver "^7.6.0"
ts-api-utils "^1.3.0"
"@typescript-eslint/utils@8.16.0":
version "8.16.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.16.0.tgz#c71264c437157feaa97842809836254a6fc833c3"
integrity sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA==
"@typescript-eslint/utils@8.18.2":
version "8.18.2"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.18.2.tgz#a2635f71904a84f9e47fe1b6f65a6d944ff1adf9"
integrity sha512-Cr4A0H7DtVIPkauj4sTSXVl+VBWewE9/o40KcF3TV9aqDEOWoXF3/+oRXNby3DYzZeCATvbdksYsGZzplwnK/Q==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
"@typescript-eslint/scope-manager" "8.16.0"
"@typescript-eslint/types" "8.16.0"
"@typescript-eslint/typescript-estree" "8.16.0"
"@typescript-eslint/scope-manager" "8.18.2"
"@typescript-eslint/types" "8.18.2"
"@typescript-eslint/typescript-estree" "8.18.2"
"@typescript-eslint/visitor-keys@8.16.0":
version "8.16.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.16.0.tgz#d5086afc060b01ff7a4ecab8d49d13d5a7b07705"
integrity sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==
"@typescript-eslint/visitor-keys@8.18.2":
version "8.18.2"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.2.tgz#b3e434b701f086b10a7c82416ebc56899d27ef2f"
integrity sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==
dependencies:
"@typescript-eslint/types" "8.16.0"
"@typescript-eslint/types" "8.18.2"
eslint-visitor-keys "^4.2.0"
"@xmldom/xmldom@^0.8.8":
@@ -999,10 +999,10 @@ concat-stream@^2.0.0:
readable-stream "^3.0.2"
typedarray "^0.0.6"
concurrently@^9.1.0:
version "9.1.0"
resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-9.1.0.tgz#8da6d609f4321752912dab9be8710232ac496aa0"
integrity sha512-VxkzwMAn4LP7WyMnJNbHN5mKV9L2IbyDjpzemKr99sXNR3GqRNMMHdm7prV1ws9wg7ETj6WUkNOigZVsptwbgg==
concurrently@^9.1.1:
version "9.1.1"
resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-9.1.1.tgz#609dde2ce12f4f12d6a5ea6eace4c38bb7ab2ead"
integrity sha512-6VX8lrBIycgZKTwBsWS+bLrmkGRkDmvtGsYylRN9b93CygN6CbK46HmnQ3rdSOR8HRjdahDrxb5MqD9cEFOg5Q==
dependencies:
chalk "^4.1.2"
lodash "^4.17.21"
@@ -1233,10 +1233,10 @@ electron-builder@^25.1.8:
simple-update-notifier "2.0.0"
yargs "^17.6.2"
electron-log@^5.2.3:
version "5.2.3"
resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-5.2.3.tgz#b58447b2158b9aa5faa07c4d15340113069d3f15"
integrity sha512-BabCiEV+p362LzY0EFE8hyzeGknzKDWSbhS0VFfRYQGA4FHWXWSfaKJlvTR9LFepNoORXxc/BWvqBXIPgsVFgA==
electron-log@^5.2.4:
version "5.2.4"
resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-5.2.4.tgz#6b488d9db80aa3c6f3dc39bcd635fc9d1f79c8af"
integrity sha512-iX12WXc5XAaKeHg2QpiFjVwL+S1NVHPFd3V5RXtCmKhpAzXsVQnR3UEc0LovM6p6NkUQxDWnkdkaam9FNUVmCA==
electron-publish@25.1.7:
version "25.1.7"
@@ -2732,10 +2732,10 @@ prettier-plugin-packagejson@^2.5.6:
sort-package-json "2.12.0"
synckit "0.9.2"
prettier@3.3.3:
version "3.3.3"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105"
integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==
prettier@3.4.2:
version "3.4.2"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f"
integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==
progress@^2.0.3:
version "2.0.3"
@@ -3264,14 +3264,14 @@ 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.16.0:
version "8.16.0"
resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.16.0.tgz#d608c972d6b2461ca10ec30fd3fa62a080baba19"
integrity sha512-wDkVmlY6O2do4V+lZd0GtRfbtXbeD0q9WygwXXSJnC1xorE8eqyC2L1tJimqpSeFrOzRlYtWnUp/uzgHQOgfBQ==
typescript-eslint@^8.18.2:
version "8.18.2"
resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.18.2.tgz#71334dcf843adc3fbb771dce5ade7876aa0d62b7"
integrity sha512-KuXezG6jHkvC3MvizeXgupZzaG5wjhU3yE8E7e6viOvAvD9xAWYp8/vy0WULTGe9DYDWcQu7aW03YIV3mSitrQ==
dependencies:
"@typescript-eslint/eslint-plugin" "8.16.0"
"@typescript-eslint/parser" "8.16.0"
"@typescript-eslint/utils" "8.16.0"
"@typescript-eslint/eslint-plugin" "8.18.2"
"@typescript-eslint/parser" "8.18.2"
"@typescript-eslint/utils" "8.18.2"
typescript@^5.4.3:
version "5.5.4"

View File

@@ -231,11 +231,14 @@ export const sidebar = [
collapsed: true,
items: [
{ text: "Getting started", link: "/self-hosting/" },
{ text: "System requirements", link: "/self-hosting/guides/system-requirements", },
{
text: "System requirements",
link: "/self-hosting/guides/system-requirements",
},
{
text: "Guides",
items: [
{ text: "Introduction", link: "/self-hosting/guides/" },
{ text: "Introduction", link: "/self-hosting/guides/" },
{
text: "Connect to custom server",
link: "/self-hosting/guides/custom-server/",
@@ -271,8 +274,8 @@ export const sidebar = [
},
{
text: "Configure CLI for Self Hosted Instance",
link: "/self-hosting/guides/selfhost-cli"
}
link: "/self-hosting/guides/selfhost-cli",
},
],
},
{

View File

@@ -11,9 +11,9 @@ Ente is a end-to-end encrypted platform for privately, reliably, and securely
storing your data on the cloud. On top of this platform, Ente offers two
products:
- **Ente Photos** - An alternative to Google Photos and Apple Photos
- **Ente Photos** - An alternative to Google Photos and Apple Photos
- **Ente Auth** - A free 2FA alternative to Authy
- **Ente Auth** - A free 2FA alternative to Authy
Both these apps are available for all desktop (Linux, Mac, Windows) and mobile
(Android, iOS and F-Droid) platforms. They also work directly in your web
@@ -46,7 +46,8 @@ the name, and also led to the adoption of "Ducky", Ente's mascot:
</div>
For the full origin story of Ducky you can check out [this blog post](https://ente.io/blog/ducky/).
For the full origin story of Ducky you can check out
[this blog post](https://ente.io/blog/ducky/).
### How do I pronounce Ente?

View File

@@ -17,7 +17,6 @@ You can install Auth directly from
Reproducible builds for Auth are available on
[F-Droid](https://f-droid.org/packages/io.ente.auth/).
> [!NOTE]
>
> Releases over F-Droid are generally slower since they run their own build
@@ -34,20 +33,22 @@ you stay updated.
### Obtainium
You can setup [Obtainium](https://github.com/ImranR98/Obtainium) to track our
GitHub releases by [clicking this link](https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22io.ente.auth.independent%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2Fente-io%2Fente%22%2C%22author%22%3A%22ente-io%22%2C%22name%22%3A%22Ente%20Auth%22%2C%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Afalse%2C%5C%22fallbackToOlderReleases%5C%22%3Atrue%2C%5C%22filterReleaseTitlesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22filterReleaseNotesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22verifyLatestTag%5C%22%3Afalse%2C%5C%22dontSortReleasesList%5C%22%3Atrue%2C%5C%22useLatestAssetDateAsReleaseDate%5C%22%3Afalse%2C%5C%22releaseTitleAsVersion%5C%22%3Afalse%2C%5C%22trackOnly%5C%22%3Afalse%2C%5C%22versionExtractionRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22matchGroupToUse%5C%22%3A%5C%22%5C%22%2C%5C%22versionDetection%5C%22%3Atrue%2C%5C%22releaseDateAsVersion%5C%22%3Afalse%2C%5C%22useVersionCodeAsOSVersion%5C%22%3Afalse%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22ente-auth*%5C%22%2C%5C%22invertAPKFilter%5C%22%3Afalse%2C%5C%22autoApkFilterByArch%5C%22%3Atrue%2C%5C%22appName%5C%22%3A%5C%22%5C%22%2C%5C%22shizukuPretendToBeGooglePlay%5C%22%3Afalse%2C%5C%22allowInsecure%5C%22%3Afalse%2C%5C%22exemptFromBackgroundUpdates%5C%22%3Afalse%2C%5C%22skipUpdateNotifications%5C%22%3Afalse%2C%5C%22about%5C%22%3A%5C%22%5C%22%7D%22%2C%22overrideSource%22%3Anull%7D) to add it instantly.
GitHub releases by
[clicking this link](https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22io.ente.auth.independent%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2Fente-io%2Fente%22%2C%22author%22%3A%22ente-io%22%2C%22name%22%3A%22Ente%20Auth%22%2C%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Afalse%2C%5C%22fallbackToOlderReleases%5C%22%3Atrue%2C%5C%22filterReleaseTitlesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22filterReleaseNotesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22verifyLatestTag%5C%22%3Afalse%2C%5C%22dontSortReleasesList%5C%22%3Atrue%2C%5C%22useLatestAssetDateAsReleaseDate%5C%22%3Afalse%2C%5C%22releaseTitleAsVersion%5C%22%3Afalse%2C%5C%22trackOnly%5C%22%3Afalse%2C%5C%22versionExtractionRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22matchGroupToUse%5C%22%3A%5C%22%5C%22%2C%5C%22versionDetection%5C%22%3Atrue%2C%5C%22releaseDateAsVersion%5C%22%3Afalse%2C%5C%22useVersionCodeAsOSVersion%5C%22%3Afalse%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22ente-auth*%5C%22%2C%5C%22invertAPKFilter%5C%22%3Afalse%2C%5C%22autoApkFilterByArch%5C%22%3Atrue%2C%5C%22appName%5C%22%3A%5C%22%5C%22%2C%5C%22shizukuPretendToBeGooglePlay%5C%22%3Afalse%2C%5C%22allowInsecure%5C%22%3Afalse%2C%5C%22exemptFromBackgroundUpdates%5C%22%3Afalse%2C%5C%22skipUpdateNotifications%5C%22%3Afalse%2C%5C%22about%5C%22%3A%5C%22%5C%22%7D%22%2C%22overrideSource%22%3Anull%7D)
to add it instantly.
Alternatively, you can follow these steps:
1. Click **Add App** to open a new app config screen
2. Enter `https://github.com/ente-io/ente` in the **App Source URL** field
3. Enable the **Retain release order** from API toggle
4. Scroll down to the **Filter APKs by Regular Expression** field and enter `ente-auth*`
4. Scroll down to the **Filter APKs by Regular Expression** field and enter
`ente-auth*`
5. Enable the **Attempt to filter APKs by CPU architecture** if possible toggle
6. Select any applicable app category labels you may have setup
7. Enable the **Try inferring app ID from source code** toggle
8. Scroll back to the top and click **Add** to complete the setup
<br/>
---
@@ -78,7 +79,8 @@ You can grab the latest version of Ente Auth for Mac, Windows and Linux from
# Web
Latest versions of our web app are available at [auth.ente.io](https://auth.ente.io).
Latest versions of our web app are available at
[auth.ente.io](https://auth.ente.io).
<br/>

View File

@@ -150,55 +150,57 @@ Authenticator. To import your codes, please follow one of the steps below,
depending on which method you used to export your codes.
## Method 3
**Who should use this?** Power users who have spare time on their hands and
who have a rooted android phone running android 6 or newer that passes Play
**Who should use this?** Power users who have spare time on their hands and who
have a rooted android phone running android 6 or newer that passes Play
Integrity.
This way of exporting your data will require a rooted phone.
### Exporting codes using Android OTP Extractor
This uses the tool [Android OTP Extractor](https://github.com/puddly/android-otp-extractor) from [puddly](https://github.com/puddly) on GitHub
This uses the tool
[Android OTP Extractor](https://github.com/puddly/android-otp-extractor) from
[puddly](https://github.com/puddly) on GitHub
1. Install python 3 and adb to your computer you can download binaries for
it from [Google](https://developer.android.com/tools/releases/platform-tools)
2. Add adb to your path.
2.1. On windows search for "Edit the system environment variables"
2.2. Click "Environment Variables"
2.3. At the top in "User variables" click the "path" variable and then click "Edit"
2.4. Click "New" and type the path to where you extracted the Platform Tools
3. Enable USB debugging on the Android Phone
3.1. Open settings
3.2. Open "About phone" (Might say tablet depending on what device you use)
(skip steps 3.2 and 3.3 if you already have developer options enabled)
3.3. Tap "Build Number" 7 or more times
3.4. Go to the main settings page
3.5. Open "System Settings"
3.6. Open "Developer options"
3.7. Enable "USB Debugging"
3.8. On your computer verify the phone is connected by running `adb devices`
(You may need to tap "Allow" on the device to allow the computer to access it)
5. Install Android OTP Extractor using pip
```
pip install git+https://github.com/puddly/android-otp-extractor
```
6. Install Authy from the playstore and login to your account
7. Run the command below to export the TOTP to QRCodes and URLS
```
python -m android_otp_extractor --prepend-issuer --include authy
```
1. Install python 3 and adb to your computer you can download binaries for it
from [Google](https://developer.android.com/tools/releases/platform-tools)
2. Add adb to your path. 2.1. On windows search for "Edit the system environment
variables" 2.2. Click "Environment Variables" 2.3. At the top in "User
variables" click the "path" variable and then click "Edit" 2.4. Click "New"
and type the path to where you extracted the Platform Tools
3. Enable USB debugging on the Android Phone 3.1. Open settings 3.2. Open "About
phone" (Might say tablet depending on what device you use) (skip steps 3.2
and 3.3 if you already have developer options enabled) 3.3. Tap "Build
Number" 7 or more times 3.4. Go to the main settings page 3.5. Open "System
Settings" 3.6. Open "Developer options" 3.7. Enable "USB Debugging" 3.8. On
your computer verify the phone is connected by running `adb devices` (You may
need to tap "Allow" on the device to allow the computer to access it)
4. Install Android OTP Extractor using pip
```
pip install git+https://github.com/puddly/android-otp-extractor
```
5. Install Authy from the playstore and login to your account
6. Run the command below to export the TOTP to QRCodes and URLS
```
python -m android_otp_extractor --prepend-issuer --include authy
```
### Exporting codes using Aegis Authenticator
This uses the tool [Aegis Authenticator](https://getaegis.app/) from [beemdevelopment](
https://github.com/beemdevelopment).
This uses the tool [Aegis Authenticator](https://getaegis.app/) from
[beemdevelopment](https://github.com/beemdevelopment).
1. Install Authy and login on your rooted phone.
2. Install Aegis Authenticator from the [Google Play Store](https://play.google.com/store/apps/details?id=com.beemdevelopment.aegis).
3. In the app, click the three dots in the top right corner and click "Import & Export".
2. Install Aegis Authenticator from the
[Google Play Store](https://play.google.com/store/apps/details?id=com.beemdevelopment.aegis).
3. In the app, click the three dots in the top right corner and click "Import &
Export".
4. Click "Import from another app" and choose Authy.
5. The app will ask for root permissions, then automatically import your codes from Authy.
6. Then export the codes from Aegis Authenticator to `json` or `txt` using the "Export to file" option in the "Import & Export" menu.
5. The app will ask for root permissions, then automatically import your codes
from Authy.
6. Then export the codes from Aegis Authenticator to `json` or `txt` using the
"Export to file" option in the "Import & Export" menu.
## Importing to Ente Authenticator (Method 1, method 2.1)

View File

@@ -31,10 +31,10 @@ exported data, including versioning and key derivation parameters.
The main object used to represent the export data. It contains the following
key-value pairs:
- `version`: The version of the export format.
- `kdfParams`: Key derivation function parameters.
- `encryptedData"`: The encrypted authentication data.
- `encryptionNonce`: The nonce used for encryption.
- `version`: The version of the export format.
- `kdfParams`: Key derivation function parameters.
- `encryptedData"`: The encrypted authentication data.
- `encryptionNonce`: The nonce used for encryption.
#### Version
@@ -42,17 +42,17 @@ Export version is used to identify the format of the export data.
##### Ver: 1
- KDF Algorithm: `ARGON2ID`
- Decrypted data format: `otpauth://totp/...`, separated by a new line.
- Encryption Algo: `XChaCha20-Poly1305`
- KDF Algorithm: `ARGON2ID`
- Decrypted data format: `otpauth://totp/...`, separated by a new line.
- Encryption Algo: `XChaCha20-Poly1305`
##### Key Derivation Function Params (KDF)
This section contains the parameters that were using during KDF operation:
- `memLimit`: Memory limit for the algorithm.
- `opsLimit`: Operations limit for the algorithm.
- `salt`: The salt used in the derivation process.
- `memLimit`: Memory limit for the algorithm.
- `opsLimit`: Operations limit for the algorithm.
- `salt`: The salt used in the derivation process.
##### Encrypted Data
@@ -77,14 +77,14 @@ ente account update --app auth --email <email> --dir <path>
## How to use the exported data
- **Ente Authenticator app**: You can directly import the codes in the Ente
Authenticator app.
- **Ente Authenticator app**: You can directly import the codes in the Ente
Authenticator app.
> Settings -> Data -> Import Codes -> Ente Encrypted export.
- **Decrypt using Ente CLI** : Download the latest version of [Ente
CLI](https://github.com/ente-io/ente/releases?q=tag%3Acli-v0), and run the
following command
- **Decrypt using Ente CLI** : Download the latest version of
[Ente CLI](https://github.com/ente-io/ente/releases?q=tag%3Acli-v0), and run
the following command
```
./ente auth decrypt <export_file> <output_file>

View File

@@ -12,12 +12,12 @@ description:
Ente Auth natively supports imports from many 2FA providers. In addition to the
providers specifically listed in the documentation, the supported providers are:
- 2FAS Authenticator
- Aegis Authenticator
- Bitwarden
- Google Authenticator
- Raivo OTP
- LastPass
- 2FAS Authenticator
- Aegis Authenticator
- Bitwarden
- Google Authenticator
- Raivo OTP
- LastPass
Details as to how codes may be imported from these providers may be found within
the app.

View File

@@ -6,7 +6,7 @@ description:
# Migrating to/from Ente Auth
- [Migrating from Authy](authy/)
- [Importing codes from Steam](steam/)
- [Migrating from other apps](import)
- [Exporting your data out of Ente Auth](export)
- [Migrating from Authy](authy/)
- [Importing codes from Steam](steam/)
- [Migrating from other apps](import)
- [Exporting your data out of Ente Auth](export)

View File

@@ -12,17 +12,15 @@ to your local drive. This way, you can use Ente in your day to day use, but will
have an additional guarantee that a copy of your original photos and videos are
always available in normal directories and files.
- You can use
[Ente's CLI](https://github.com/ente-io/ente/tree/main/cli#export) to export
your data in a cron job to a location of your choice. The exports are
incremental, and will also gracefully handle interruptions.
- You can use [Ente's CLI](https://github.com/ente-io/ente/tree/main/cli#export)
to export your data in a cron job to a location of your choice. The exports
are incremental, and will also gracefully handle interruptions.
- Similarly, you can use Ente's
[desktop app](https://ente.io/download/desktop) to export your data to a
folder of your choice. The desktop app also supports "continuous" exports,
where it will automatically export new items in the background without you
needing to run any other cron jobs. See
[migration/export](/photos/migration/export/) for more details.
- Similarly, you can use Ente's [desktop app](https://ente.io/download/desktop)
to export your data to a folder of your choice. The desktop app also supports
"continuous" exports, where it will automatically export new items in the
background without you needing to run any other cron jobs. See
[migration/export](/photos/migration/export/) for more details.
## Does the exported data preserve folder structure?
@@ -32,8 +30,8 @@ album structure how you have set up within Ente.
## Does the exported data preserve metadata?
Yes, the metadata is written out to a separate JSON file during export. Note
that the original is not modified. For more details, see the [description of the
exported metadata](https://help.ente.io/photos/faq/photo-dates#export).
that the original is not modified. For more details, see the
[description of the exported metadata](https://help.ente.io/photos/faq/photo-dates#export).
## Can I do a 2-way sync?

View File

@@ -17,7 +17,6 @@ You can install Ente directly from
Reproducible builds for Ente are available on
[F-Droid](https://f-droid.org/packages/io.ente.photos.fdroid/).
> [!NOTE]
>
> Releases over F-Droid are generally slower since they run their own build
@@ -34,20 +33,22 @@ you stay updated.
### Obtainium
You can setup [Obtainium](https://github.com/ImranR98/Obtainium) to track our
GitHub releases by [clicking this link](https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22io.ente.photos.independent%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2Fente-io%2Fente%22%2C%22author%22%3A%22ente-io%22%2C%22name%22%3A%22Ente%20Photos%22%2C%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Afalse%2C%5C%22fallbackToOlderReleases%5C%22%3Atrue%2C%5C%22filterReleaseTitlesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22filterReleaseNotesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22verifyLatestTag%5C%22%3Afalse%2C%5C%22dontSortReleasesList%5C%22%3Atrue%2C%5C%22useLatestAssetDateAsReleaseDate%5C%22%3Afalse%2C%5C%22releaseTitleAsVersion%5C%22%3Afalse%2C%5C%22trackOnly%5C%22%3Afalse%2C%5C%22versionExtractionRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22matchGroupToUse%5C%22%3A%5C%22%5C%22%2C%5C%22versionDetection%5C%22%3Atrue%2C%5C%22releaseDateAsVersion%5C%22%3Afalse%2C%5C%22useVersionCodeAsOSVersion%5C%22%3Afalse%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22ente-photos*%5C%22%2C%5C%22invertAPKFilter%5C%22%3Afalse%2C%5C%22autoApkFilterByArch%5C%22%3Atrue%2C%5C%22appName%5C%22%3A%5C%22%5C%22%2C%5C%22shizukuPretendToBeGooglePlay%5C%22%3Afalse%2C%5C%22allowInsecure%5C%22%3Afalse%2C%5C%22exemptFromBackgroundUpdates%5C%22%3Afalse%2C%5C%22skipUpdateNotifications%5C%22%3Afalse%2C%5C%22about%5C%22%3A%5C%22%5C%22%7D%22%2C%22overrideSource%22%3Anull%7D) to add it instantly.
GitHub releases by
[clicking this link](https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22io.ente.photos.independent%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2Fente-io%2Fente%22%2C%22author%22%3A%22ente-io%22%2C%22name%22%3A%22Ente%20Photos%22%2C%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Afalse%2C%5C%22fallbackToOlderReleases%5C%22%3Atrue%2C%5C%22filterReleaseTitlesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22filterReleaseNotesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22verifyLatestTag%5C%22%3Afalse%2C%5C%22dontSortReleasesList%5C%22%3Atrue%2C%5C%22useLatestAssetDateAsReleaseDate%5C%22%3Afalse%2C%5C%22releaseTitleAsVersion%5C%22%3Afalse%2C%5C%22trackOnly%5C%22%3Afalse%2C%5C%22versionExtractionRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22matchGroupToUse%5C%22%3A%5C%22%5C%22%2C%5C%22versionDetection%5C%22%3Atrue%2C%5C%22releaseDateAsVersion%5C%22%3Afalse%2C%5C%22useVersionCodeAsOSVersion%5C%22%3Afalse%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22ente-photos*%5C%22%2C%5C%22invertAPKFilter%5C%22%3Afalse%2C%5C%22autoApkFilterByArch%5C%22%3Atrue%2C%5C%22appName%5C%22%3A%5C%22%5C%22%2C%5C%22shizukuPretendToBeGooglePlay%5C%22%3Afalse%2C%5C%22allowInsecure%5C%22%3Afalse%2C%5C%22exemptFromBackgroundUpdates%5C%22%3Afalse%2C%5C%22skipUpdateNotifications%5C%22%3Afalse%2C%5C%22about%5C%22%3A%5C%22%5C%22%7D%22%2C%22overrideSource%22%3Anull%7D)
to add it instantly.
Alternatively, you can follow these steps:
1. Click **Add App** to open a new app config screen
2. Enter `https://github.com/ente-io/ente` in the **App Source URL** field
3. Enable the **Retain release order** from API toggle
4. Scroll down to the **Filter APKs by Regular Expression** field and enter `ente-photos*`
4. Scroll down to the **Filter APKs by Regular Expression** field and enter
`ente-photos*`
5. Enable the **Attempt to filter APKs by CPU architecture** if possible toggle
6. Select any applicable app category labels you may have setup
7. Enable the **Try inferring app ID from source code** toggle
8. Scroll back to the top and click **Add** to complete the setup
<br/>
---
@@ -78,7 +79,8 @@ You can grab the latest version of Ente for Mac, Windows and Linux from
# Web
Latest versions of our web app are available at [web.ente.io](https://web.ente.io).
Latest versions of our web app are available at
[web.ente.io](https://web.ente.io).
<br/>

View File

@@ -25,9 +25,9 @@ your files. For technical details, please see our
We use the following encryption algorithms:
- Encryption: `XChaCha20` and `XSalsa20`
- Authentication: Poly1305 message authentication code (MAC)
- Key derivation: Argon2id with high memory and computation parameters
- Encryption: `XChaCha20` and `XSalsa20`
- Authentication: Poly1305 message authentication code (MAC)
- Key derivation: Argon2id with high memory and computation parameters
These algorithms are implemented using
[libsodium](https://libsodium.gitbook.io/doc/), a externally audited
@@ -38,9 +38,9 @@ provides full technical specifications.
Your encrypted data is stored redundantly across multiple providers in the EU:
- Amsterdam, Netherlands
- Paris, France
- Frankfurt, Germany
- Amsterdam, Netherlands
- Paris, France
- Frankfurt, Germany
We use a combination of object storage and distributed databases to ensure high
availability and durability. Our
@@ -79,8 +79,8 @@ please choose a strong one.
Yes, we recommend enabling 2FA for an additional layer of security. We support:
- Time-based One-Time Passwords (TOTP)
- WebAuthn/FIDO2 for hardware security keys
- Time-based One-Time Passwords (TOTP)
- WebAuthn/FIDO2 for hardware security keys
You can set up 2FA in the settings of our mobile or desktop apps.

View File

@@ -15,17 +15,16 @@ Yes we do! Please check out our announcement post
In brief,
- Your family members can use storage space from your plan without paying
extra.
- Your family members can use storage space from your plan without paying extra.
- Ask them to sign up for Ente, and then just add them to your existing plan
using the "Manage family" option within your Subscription settings.
- Ask them to sign up for Ente, and then just add them to your existing plan
using the "Manage family" option within your Subscription settings.
- Each member gets their own private space, and cannot see each other's files
unless they're shared.
- Each member gets their own private space, and cannot see each other's files
unless they're shared.
- You can invite 5 family members. So including yourself, it will be 6 people
who can share a single subscription, paying only once.
- You can invite 5 family members. So including yourself, it will be 6 people
who can share a single subscription, paying only once.
Note that family plans are meant as a way to share storage. For sharing photos,
you can create [shared albums and links](/photos/features/share).
@@ -72,9 +71,9 @@ Once the payment is completed, your account will be upgraded to the chosen plan.
We accept the following crypto currencies:
- Bitcoin
- Ethereum
- Dogecoin
- Bitcoin
- Ethereum
- Dogecoin
To purchase a subscription with any of the above mentioned currencies, please
write to crypto@ente.io from your registered email address, citing the
@@ -129,11 +128,10 @@ invoicing you for the new plan.
For example, if you are half way through the year on the 50 GB yearly plan, and
upgrade to the 200 GB yearly plan, then
- The new 200 GB yearly plan will go into effect immediately.
- The new 200 GB yearly plan will go into effect immediately.
- But we will reduce the charges for the first year by subtracting the
remaining half year balance of the 50 GB yearly plan that you'd already
paid.
- But we will reduce the charges for the first year by subtracting the remaining
half year balance of the 50 GB yearly plan that you'd already paid.
The same applies to monthly plans.
@@ -146,14 +144,13 @@ future invoices.
For example, if you are half way through the year on the 200 GB yearly plan, and
downgrade to the 50 GB yearly plan, then
- The new 50 GB yearly plan will go into effect immediately.
- The new 50 GB yearly plan will go into effect immediately.
- We will calculate a credit by subtracting half the price of the 50 GB plan
from half the price of the 200 GB plan. This will be credited to your
account.
- We will calculate a credit by subtracting half the price of the 50 GB plan
from half the price of the 200 GB plan. This will be credited to your account.
- This credited amount will be discounted from your next invoice, which will
be due in half a year.
- This credited amount will be discounted from your next invoice, which will be
due in half a year.
The same applies to monthly plans.

View File

@@ -29,28 +29,28 @@ If the folder you're trying to upload has nesting and you select the option to
create a new album, you will see two options - **A single album** and **Separate
albums**.
- **Single album** will create a new Ente album with the same name as the
folder's name, and will then sync all the changes in the folder (and any
nested folders) to this single album.
- **Single album** will create a new Ente album with the same name as the
folder's name, and will then sync all the changes in the folder (and any
nested folders) to this single album.
- **Separate albums** will create separate albums for each nested folder of
the selected folder, and will then sync the changes in each nested folder
separately.
- **Separate albums** will create separate albums for each nested folder of the
selected folder, and will then sync the changes in each nested folder
separately.
- For example, suppose you have a folder name `Photos` on your computer, and
inside that folder you have two nested folders named `New Year` and
`Summer`. In the single album mode, the app will create an Ente album named
"Photos" and put all the files from both `New Year` and `Summer` there. In
the separate album mode, the app will create two Ente albums, "New Year" and
"Summer", each only containing the respective files.
- For example, suppose you have a folder name `Photos` on your computer, and
inside that folder you have two nested folders named `New Year` and `Summer`.
In the single album mode, the app will create an Ente album named "Photos" and
put all the files from both `New Year` and `Summer` there. In the separate
album mode, the app will create two Ente albums, "New Year" and "Summer", each
only containing the respective files.
- In separate album mode, only nested folders that have at least one file will
result in the creation of a new album  empty folders (or folders that only
contain other folders) will be ignored.
- In separate album mode, only nested folders that have at least one file will
result in the creation of a new album  empty folders (or folders that only
contain other folders) will be ignored.
- In separate album mode, only the leafmost folder name is considered. For
example, both `A/B/C/D/x.png` and `1/2/3/D/y.png` will get uploaded into the
same Ente album named "D".
- In separate album mode, only the leafmost folder name is considered. For
example, both `A/B/C/D/x.png` and `1/2/3/D/y.png` will get uploaded into the
same Ente album named "D".
> [!NOTE]
>
@@ -64,18 +64,18 @@ Personalize your albums by giving them a meaningful name.
### How to rename an album on your mobile?
- Open the album
- Tap the three dots button in the top right corner of the screen
- Tap _Rename album_, then type in a new name
- Tap on _Rename_ button
- Open the album
- Tap the three dots button in the top right corner of the screen
- Tap _Rename album_, then type in a new name
- Tap on _Rename_ button
### How to rename an album on your web / desktop?
- Open the album
- Click on the overflow menu in the top right corner
- Click the _Rename album_ button
- Type in a new name
- Click on _Rename_ or press enter
- Open the album
- Click on the overflow menu in the top right corner
- Click the _Rename album_ button
- Type in a new name
- Click on _Rename_ or press enter
## Set album cover
@@ -83,13 +83,13 @@ Select any photo you want to use as the cover for your album.
### How to set an album cover on mobile?
- Open the album you want to change
- Tap the three dots button in the top right corner
- From the menu options, select _Set cover_
- A new screen will appear, propmpting you to select the cover photo
- Browse through your photos and tap on the image you want to set as the album
cover
- Then tap on _Use selected photo_
- Open the album you want to change
- Tap the three dots button in the top right corner
- From the menu options, select _Set cover_
- A new screen will appear, propmpting you to select the cover photo
- Browse through your photos and tap on the image you want to set as the album
cover
- Then tap on _Use selected photo_
## View your photos on a map
@@ -97,10 +97,10 @@ Explore your memories based on their location.
### How to explore the album's photos in map view?
- Open the album
- Tap on the three dots button in the top right corner
- Select _Map_
- This will show all photos of the album in a map view
- Open the album
- Tap on the three dots button in the top right corner
- Select _Map_
- This will show all photos of the album in a map view
## Sort albums
@@ -108,17 +108,17 @@ Maintain order in your albums by arranging them from the newest to the oldest.
### How to change the sort order on mobile?
- Open the album
- Tap on the three dots button in the top right corner
- Select _Sort by_
- Tap on the _Newest first_ for the latest, Or _Oldest first_ for the oldest
- Open the album
- Tap on the three dots button in the top right corner
- Select _Sort by_
- Tap on the _Newest first_ for the latest, Or _Oldest first_ for the oldest
### How to change the sort order on web / desktop?
- Open the album
- Click on the three dots button in the top right corner
- Click _Sort by_
- Tap on the _Newest first_ for the latest, Or _Oldest first_ for the oldest
- Open the album
- Click on the three dots button in the top right corner
- Click _Sort by_
- Tap on the _Newest first_ for the latest, Or _Oldest first_ for the oldest
## Pin albums
@@ -126,6 +126,6 @@ Keep your favorite album at the top by pinning them for quick access.
### How to pin/unpin an album on mobile?
- Open the album
- Tap on the three dots button in the top right corner
- Tap on _Pin album_ / _Unpin album_
- Open the album
- Tap on the three dots button in the top right corner
- Tap on _Pin album_ / _Unpin album_

View File

@@ -11,43 +11,43 @@ You can remove a photo (owned by you) or an album from your **home timeline** by
archiving it. Archived photos won't be included in the memories section on the
mobile app.
- All photos within a archived album will be removed from home timeline, even
when some of the photos are also present in a non-archived album.
- You can archive albums that are owned by you or shared with you.
- Search results will include archived photos. If you want to hide photos from
search result, use [Hide](./hide) feature.
- All photos within a archived album will be removed from home timeline, even
when some of the photos are also present in a non-archived album.
- You can archive albums that are owned by you or shared with you.
- Search results will include archived photos. If you want to hide photos from
search result, use [Hide](./hide) feature.
## How to
### Archive Album
- Open the album
- Click on the overflow menu
- Click on Archive album
- Open the album
- Click on the overflow menu
- Click on Archive album
### Archive Photo
- Long press to select the photo
- Select Archive option from the bottom menu.
- Long press to select the photo
- Select Archive option from the bottom menu.
### View Archived Photos and Albums
#### Mobile
- Go to Albums tab
- Scroll down to bottom
- Click on Archive button.
- Go to Albums tab
- Scroll down to bottom
- Click on Archive button.
#### Web / Desktop
- Click on the topleft hamburger menu
- Click on Archive
- Click on the topleft hamburger menu
- Click on Archive
### Metadata Privacy
Both Ente and the person with whom you are sharing an album or photo have no
information about whether you have:
- Archived a photo
- Archived an album
- Archived a shared album
- Archived a photo
- Archived an album
- Archived a shared album

View File

@@ -52,6 +52,6 @@ app, though the [way that works](watch-folders) is a bit different.
## Troubleshooting
- On iOS, make sure that you're not killing the Ente app.
- On Android, make sure that "Optimize battery usage" is not turned on in
system settings for the Ente app.
- On iOS, make sure that you're not killing the Ente app.
- On Android, make sure that "Optimize battery usage" is not turned on in system
settings for the Ente app.

View File

@@ -7,9 +7,9 @@ description: Collaborate with other people using shared albums and public links
Ente allows you to collaborate with people in 2 ways:
- Collaborative albums
- Collaborative albums
- Collaborative links
- Collaborative links
## Collaborative albums
@@ -17,25 +17,25 @@ Collaborative albums allow multiple Ente users to add photos to the same shared
album. Storage is only counted once, irrespective of the number of collaborators
and viewers.
- The owner of the album is the person who created it.
- The owner of the album is the person who created it.
- The owner can add collaborators and viewers by their email. The owner can
also change permissions of participants at any time, and remove them.
- The owner can add collaborators and viewers by their email. The owner can also
change permissions of participants at any time, and remove them.
- Collaborators can add photos (and videos) to the shared album.
- Collaborators can add photos (and videos) to the shared album.
- The storage of the photo is counted towards the owner of the photo - the
person who uploaded it. Since the uploader usually has the photo in their
account anyway, effectively this means that the photo can be added to a
collaborative album without paying anything extra.
- The storage of the photo is counted towards the owner of the photo - the
person who uploaded it. Since the uploader usually has the photo in their
account anyway, effectively this means that the photo can be added to a
collaborative album without paying anything extra.
- The owner of the photo can remove it from the album (or delete it).
- The owner of the photo can remove it from the album (or delete it).
- The owner of the album can remove all photos from the album (they can only
delete the photos they own).
- The owner of the album can remove all photos from the album (they can only
delete the photos they own).
- When a collaborator is removed from a shared album (or when they leave the
album), any photos they'd uploaded will also be removed.
- When a collaborator is removed from a shared album (or when they leave the
album), any photos they'd uploaded will also be removed.
Currently collaborative albums can only be used from the mobile app. A
collaborator will see them in view only mode in the web and desktop apps; we're
@@ -46,13 +46,12 @@ actively working on adding support for them on web and desktop too.
Collaborative links allow you to collaborate with people who might not have an
Ente account or the Ente apps.
- You can create a public link, and anyone with access to the link will be
able to view the shared photos using just their web browser (no login
required).
- You can create a public link, and anyone with access to the link will be able
to view the shared photos using just their web browser (no login required).
- You can enable the "Allow adding photos" option on a public link to allow
people to also add photos the same way (from their web browser, no login
required).
- You can enable the "Allow adding photos" option on a public link to allow
people to also add photos the same way (from their web browser, no login
required).
Such collaborative links are also sometimes called "collect links", since they
allow you to collect photos from people without them needing Ente accounts. A

View File

@@ -7,27 +7,26 @@ description: Collecting photos from others using Ente Photos
Collecting memories from events is now a breeze!
- Whether it's a birthday party, vacation trip or wedding, easily share your
album using a unique, secure, end-to-end encrypted link.
- Introduce the 'collect photos' feature to your friends and family who can
contribute without an Ente account.
- This allows them to effortlessly add, view, and download photos from the
link without an Ente account.
- Also preserves metadata and photo quality.
- Whether it's a birthday party, vacation trip or wedding, easily share your
album using a unique, secure, end-to-end encrypted link.
- Introduce the 'collect photos' feature to your friends and family who can
contribute without an Ente account.
- This allows them to effortlessly add, view, and download photos from the link
without an Ente account.
- Also preserves metadata and photo quality.
## How to collect photos on mobile?
- Open the album you want to share with
- Tap on the Share album icon in the top right corner of the screen
- Select _Collect photos_
- Tap _Copy link_
- The link will get copied to your clipboard. Now, feel free to share it
- Open the album you want to share with
- Tap on the Share album icon in the top right corner of the screen
- Select _Collect photos_
- Tap _Copy link_
- The link will get copied to your clipboard. Now, feel free to share it
## How to Collect photos on web / desktop?
- Open the album
- Click on the share album icon
- Select _Collect photos_
- Click on _Copy link_
- The link will get copied to your clipboard. Share it effortlessly with
others!
- Open the album
- Click on the share album icon
- Select _Collect photos_
- Click on _Copy link_
- The link will get copied to your clipboard. Share it effortlessly with others!

View File

@@ -21,16 +21,16 @@ the platform's nuances.
#### Mobile
- On iOS, a hash will be used to detect exact duplicates. If the duplicate is
being uploaded to an album where a photo with the same hash already exists,
then the duplicate will be skipped. If it is being uploaded to a different
album, then a symlink will be created (so no actual data will need to be
uploaded, just a symlink will be created to the existing file).
- On iOS, a hash will be used to detect exact duplicates. If the duplicate is
being uploaded to an album where a photo with the same hash already exists,
then the duplicate will be skipped. If it is being uploaded to a different
album, then a symlink will be created (so no actual data will need to be
uploaded, just a symlink will be created to the existing file).
- On Android also, a hash check is used. But unlike iOS, the native Android
filesystem behaviour is to keep physical copies if the same photo is in
different albums. So Ente does the same: duplicates to same album will be
skipped, duplicates when going to separate albums will create copies.
- On Android also, a hash check is used. But unlike iOS, the native Android
filesystem behaviour is to keep physical copies if the same photo is in
different albums. So Ente does the same: duplicates to same album will be
skipped, duplicates when going to separate albums will create copies.
#### Web and desktop

View File

@@ -11,22 +11,21 @@ additional cost** as you have already paid for the storage.
In brief,
- Your family members can use storage space from your plan without paying
extra.
- Your family members can use storage space from your plan without paying extra.
- Ask them to sign up for Ente, and then just add them to your existing plan
using the "Manage family" option within your Subscription settings.
- Ask them to sign up for Ente, and then just add them to your existing plan
using the "Manage family" option within your Subscription settings.
- Each member gets their own private space, and cannot see each other's files
unless they're shared.
- Each member gets their own private space, and cannot see each other's files
unless they're shared.
- You can invite 5 family members. So including yourself, it will be 6 people
who can share a single subscription, paying only once.
- You can invite 5 family members. So including yourself, it will be 6 people
who can share a single subscription, paying only once.
## FAQ
- **Can you assign a storage quota for each individual member in the family
plan?**
- **Can you assign a storage quota for each individual member in the family
plan?**
Unfortunately, at this moment, assigning a storage quota for each individual
member in the family plan is not supported. For updates on this feature

View File

@@ -12,54 +12,54 @@ that the hidden photos won't be surfaced anywhere in the app without explicit
authentication, whereas archiving only removes them from the home timeline and
memories sections.
- Hidden photos and albums will be removed from home timelines, memories,
albums tab, search results, and any other visable place in the app.
- Hidden photos and albums will be removed from home timelines, memories, albums
tab, search results, and any other visable place in the app.
- Hidden photos will be removed from all regular albums. If you want to unhide
again you will have to specify the album to move it to.
- Hidden photos will be removed from all regular albums. If you want to unhide
again you will have to specify the album to move it to.
- You cannot hide photos or albums shared with you. You can archive shared
albums instead.
- You cannot hide photos or albums shared with you. You can archive shared
albums instead.
## How to
### Hide album
- Open the album
- Click on the overflow menu
- Click on _Hide album_
- Open the album
- Click on the overflow menu
- Click on _Hide album_
### Hide photo
- Select the photo
- Click on _Hide_ option from the select menu
- Select the photo
- Click on _Hide_ option from the select menu
### View hidden photos and albums
#### Mobile
- Go to Albums tab
- Scroll down to bottom
- Click on _Hidden_ button
- Authenticate in app
- Go to Albums tab
- Scroll down to bottom
- Click on _Hidden_ button
- Authenticate in app
#### Web / Desktop
- Click on the topleft hamburger menu
- Click on _Hidden_
- Authenticate in app
- Click on the topleft hamburger menu
- Click on _Hidden_
- Authenticate in app
### Unhide album
- Open the hidden album
- Click on the overflow menu
- Click on _Unhide album_
- Open the hidden album
- Click on the overflow menu
- Click on _Unhide album_
### Unhide photo
- Select the hidden photo
- Click on _Unhide_ option from the select menu
- Click on the album the photo should be restored to
- Select the hidden photo
- Click on _Unhide_ option from the select menu
- Click on the album the photo should be restored to
## Metadata Privacy

View File

@@ -5,15 +5,21 @@ description: Using Legacy to pass on your memories to loved ones
# Legacy
Legacy allows trusted contacts to recover your account in your absence. The main usecase here is to pass on your memories after your death. It can also be useful for other cases - for e.g., when you forget your password and recovery key.
Legacy allows trusted contacts to recover your account in your absence. The main
usecase here is to pass on your memories after your death. It can also be useful
for other cases - for e.g., when you forget your password and recovery key.
Trusted Contacts can initiate a recovery, and if not blocked in 30 days, would be able to change the password to your account and thereby access your memories.
Trusted Contacts can initiate a recovery, and if not blocked in 30 days, would
be able to change the password to your account and thereby access your memories.
## Adding a trusted contact
You can add a trusted contact for your account using the mobile app for Ente Photos. Go to Settings -> Account -> Legacy, and click on "Add Trusted Contact".
You can add a trusted contact for your account using the mobile app for Ente
Photos. Go to Settings -> Account -> Legacy, and click on "Add Trusted Contact".
You would be asked to enter the email address of the trusted contact you want to add or choose from a list of contacts on Ente. Please note that the trusted contact must be an Ente user.
You would be asked to enter the email address of the trusted contact you want to
add or choose from a list of contacts on Ente. Please note that the trusted
contact must be an Ente user.
<div align="center">
@@ -21,7 +27,10 @@ You would be asked to enter the email address of the trusted contact you want to
</div>
The trusted contact must accept your request. They can do so by going to Settings -> Account -> Legacy in the Ente Photos mobile app, and clicking on your email address within the Legacy accounts sections. Ente would also send an email notification to the trusted contact to nudge them to accept the invite.
The trusted contact must accept your request. They can do so by going to
Settings -> Account -> Legacy in the Ente Photos mobile app, and clicking on
your email address within the Legacy accounts sections. Ente would also send an
email notification to the trusted contact to nudge them to accept the invite.
<div align="center">
@@ -31,7 +40,9 @@ The trusted contact must accept your request. They can do so by going to Setting
## Recovering an account as a trusted contact
As a trusted contact, you can recover an account by going to Settings -> Account -> Legacy in the Ente photos app, tapping on the email address of the account within the Legacy account sections.
As a trusted contact, you can recover an account by going to Settings -> Account
-> Legacy in the Ente photos app, tapping on the email address of the account
within the Legacy account sections.
<div align="center">
@@ -39,12 +50,20 @@ As a trusted contact, you can recover an account by going to Settings -> Account
</div>
Once the recovery is initiated, the account owner would get 30 days to block the recovery. After 30 days, you can go the same page in the app, where you will be prompted to change the password of the account. Once you change the password, you would be able to access the recovered account with the new password.
Once the recovery is initiated, the account owner would get 30 days to block the
recovery. After 30 days, you can go the same page in the app, where you will be
prompted to change the password of the account. Once you change the password,
you would be able to access the recovered account with the new password.
## Blocking account recovery by a trusted contact
After a trusted contact initiates a recover, you, as the account owner, would get 30 days to block the recovery. To do this, you must go to Settings -> Account -> Legacy, where you will see a message that recovery of the account has been initiated. Tapping on that will allow you to block the recovery.
After a trusted contact initiates a recover, you, as the account owner, would
get 30 days to block the recovery. To do this, you must go to Settings ->
Account -> Legacy, where you will see a message that recovery of the account has
been initiated. Tapping on that will allow you to block the recovery.
## Removing a trusted contact
You can remove a trusted contact by going to Settings -> Account -> Legacy, tapping on the trusted contact you want to remove, and choosing "Remove" in the popup.
You can remove a trusted contact by going to Settings -> Account -> Legacy,
tapping on the trusted contact you want to remove, and choosing "Remove" in the
popup.

View File

@@ -30,14 +30,14 @@ device.
## Tips
- The app will automatically cluster photos falling within a radius under a
specified location.
- The app will automatically cluster photos falling within a radius under a
specified location.
- Location Tags provide a seamless way to filter photos without compromising
your privacy.
- Location Tags provide a seamless way to filter photos without compromising
your privacy.
- Location tags are stored end-to-end encrypted, ensuring the security of your
data.
- Location tags are stored end-to-end encrypted, ensuring the security of your
data.
- Enjoy a more organized photo library by tagging important places like home,
office, and vacation spots.
- Enjoy a more organized photo library by tagging important places like home,
office, and vacation spots.

View File

@@ -10,15 +10,15 @@ description:
Ente supports on-device machine learning. This allows you to use the latest
advances in AI in a privacy preserving manner.
- You can search for your photos by the **Faces** of the people in them. Ente
will show you all the faces in a photo, and will also try to group similar
faces together to create clusters of people so that you can give them names,
and quickly find all photos with a given person in them.
- You can search for your photos by the **Faces** of the people in them. Ente
will show you all the faces in a photo, and will also try to group similar
faces together to create clusters of people so that you can give them names,
and quickly find all photos with a given person in them.
- You can search for your photos by typing natural language descriptions of
them. For example, you can search for "night", "by the seaside", or "the red
motorcycle next to a fountain". Within the app, this ability is referred to
as **Magic search**.
- You can search for your photos by typing natural language descriptions of
them. For example, you can search for "night", "by the seaside", or "the red
motorcycle next to a fountain". Within the app, this ability is referred to as
**Magic search**.
You can enable face recognition and magic search in the app's preferences on
either the mobile app or the desktop app.

View File

@@ -9,31 +9,30 @@ _View and explore your photos on the map_
## How can I view photos on the map on mobile?
- Find the search icon located at the bottom right corner of your screen.
- Tap on the globe icon (Your map) withing the location
- Enter the map view and start exploring your photos from around the world.
- Find the search icon located at the bottom right corner of your screen.
- Tap on the globe icon (Your map) withing the location
- Enter the map view and start exploring your photos from around the world.
## How to enable map on your mobile app?
- Tap the three horizontal lines located at the top left corner of your home
screen or swipe left on the home screen.
- Select _General_ settings.
- Enter the _Advanced_ settings.
- Use the toggle switch to turn the map feature on or off.
- Tap the three horizontal lines located at the top left corner of your home
screen or swipe left on the home screen.
- Select _General_ settings.
- Enter the _Advanced_ settings.
- Use the toggle switch to turn the map feature on or off.
## How to view Album photos on the map?
- Open the album containing the photos you want to view
- Tap on the three horizontal lines located in the top right corner of the
screen.
- Select _Map_ from the options.
- View and explore your photos on the map.
- Open the album containing the photos you want to view
- Tap on the three horizontal lines located in the top right corner of the
screen.
- Select _Map_ from the options.
- View and explore your photos on the map.
## How to enable map on desktop?
- Click on the three horizontal lines located in the top left corner of the
app.
- Navigate to _Preferences_ from the menu.
- Select _Advanced_ in the preferences menu.
- Click on _Map_ to access map settings.
- Toggle the map settings on and off based on your preferences.
- Click on the three horizontal lines located in the top left corner of the app.
- Navigate to _Preferences_ from the menu.
- Select _Advanced_ in the preferences menu.
- Click on _Map_ to access map settings.
- Toggle the map settings on and off based on your preferences.

View File

@@ -14,11 +14,11 @@ a second factor to secure your Ente account.**
> Passkeys are the colloquial term for a WebAuthn (Web Authentication)
> credentials.
>
> - More details about why and how are in the Passkeys announcement
> [blog post](https://ente.io/blog/introducing-passkeys-on-ente/).
> - And to know more technical details about how our passkey verification
> works, you can see this
> [technical note in our source code](https://github.com/ente-io/ente/blob/main/web/docs/webauthn-passkeys.md).
> - More details about why and how are in the Passkeys announcement
> [blog post](https://ente.io/blog/introducing-passkeys-on-ente/).
> - And to know more technical details about how our passkey verification works,
> you can see this
> [technical note in our source code](https://github.com/ente-io/ente/blob/main/web/docs/webauthn-passkeys.md).
## Passkeys and TOTP

View File

@@ -20,8 +20,8 @@ or event. Everything they add also remains end-to-end encrypted.
In addition to this, links support the following features:
- Link expiry (so the links go poof after a duration you define)
- Device limits (in case you don't want someone to forwarding your link)
- Password lock (to add an additional level of protection to your photos)
- Prevent downloads (while we can't prevent screenshots, we can disable the
option to download your original photos)
- Link expiry (so the links go poof after a duration you define)
- Device limits (in case you don't want someone to forwarding your link)
- Password lock (to add an additional level of protection to your photos)
- Prevent downloads (while we can't prevent screenshots, we can disable the
option to download your original photos)

View File

@@ -11,12 +11,12 @@ that you can then share. You don't need to create an album first.
> Behind the scene, Ente creates a special album and put all the selected files
> in that special album.
- You can view all quick links created by you in the sharing tab, under Quick
links section.
- You can view all quick links created by you in the sharing tab, under Quick
links section.
- Quick links can be converted to regular album.
- Quick links can be converted to regular album.
- Removing a link will not delete the photos that are present in that link.
- Removing a link will not delete the photos that are present in that link.
- Similar to a [public-link](./public-link), you can set link expiry,
passwords or device limits.
- Similar to a [public-link](./public-link), you can set link expiry, passwords
or device limits.

View File

@@ -11,14 +11,14 @@ This allows you to share your photos and videos with only the people you want,
without them being visible to anybody else. The files remain encrypted at all
times, and only the people you have shared with get the decryption keys.
- If the person you want to share with is already on Ente, you can share an
album with them by entering their email address.
- If the person you want to share with is already on Ente, you can share an
album with them by entering their email address.
- If they are not already on Ente, you can send them an invite and then share
with them after they've signed up.
- If they are not already on Ente, you can send them an invite and then share
with them after they've signed up.
- Alternatively, you can create public links to share albums with people who
are not on Ente.
- Alternatively, you can create public links to share albums with people who are
not on Ente.
With public links, the files are still end-to-end encrypted, so the sharing is
still secure. Note that the decryption keys are part of the public link so keep
@@ -82,14 +82,14 @@ sounds useful to you, please participate in
More details, including technical aspect about how the sharing features were
implemented, are in various blog posts announcing these features.
- [Collaborative albums](https://ente.io/blog/collaborative-albums)
- [Collaborative albums](https://ente.io/blog/collaborative-albums)
- [Collect photos from people not on ente](https://ente.io/blog/collect-photos)
- [Collect photos from people not on ente](https://ente.io/blog/collect-photos)
- [Shareable links for albums](https://ente.io/blog/shareable-links),
[and their underlying technical implementation](https://ente.io/blog/building-shareable-links).
Since then, we have also added the ability to password protect public links,
and configure a duration after which the link will automatically expire.
- [Shareable links for albums](https://ente.io/blog/shareable-links),
[and their underlying technical implementation](https://ente.io/blog/building-shareable-links).
Since then, we have also added the ability to password protect public links,
and configure a duration after which the link will automatically expire.
We are now working on the other requested features around sharing, including
comments and reactions.

View File

@@ -8,12 +8,12 @@ description: Uncategorized items in Ente Photos
_Uncategorized_ is a special album type where photos are automatically added
under the following circumstances:
- When you remove a photo from the last album, it is relocated to
_Uncategorized_ section.
- When you remove a photo from the last album, it is relocated to
_Uncategorized_ section.
- During album deletion, if you choose to keep photos but delete the album,
all photos exclusive to the current album are moved to the _Uncategorized_
section.
- During album deletion, if you choose to keep photos but delete the album, all
photos exclusive to the current album are moved to the _Uncategorized_
section.
Note: This does not include photos uploaded by others.

View File

@@ -64,7 +64,7 @@ data reflects the latest album states with new files, moves, and deletions.
If you run into any issues during your data export, please reach out to
[support@ente.io](mailto:support@ente.io) and we will be happy to help you!
Note that we also provide a [CLI
tool](https://github.com/ente-io/ente/tree/main/cli#export) to export your data.
You can find more information about the export in the [export
FAQ](/photos/faq/export).
Note that we also provide a
[CLI tool](https://github.com/ente-io/ente/tree/main/cli#export) to export your
data. You can find more information about the export in the
[export FAQ](/photos/faq/export).

View File

@@ -72,6 +72,7 @@ If you run into any issues during this migration, please reach out to
> [!TIP]
>
> In case you wish to use face recognition and other advanced search features
> provided by Ente, we recommend that you enable [machine
> learning](/photos/features/machine-learning) before importing your photos so
> that the Ente app can directly index files as they are getting uploaded.
> provided by Ente, we recommend that you enable
> [machine learning](/photos/features/machine-learning) before importing your
> photos so that the Ente app can directly index files as they are getting
> uploaded.

View File

@@ -7,8 +7,8 @@ description:
# Migrating to/from Ente Photos
- [Import from Google Photos](from-google-photos/)
- [Import from Apple Photos](from-apple-photos/)
- [Import from Amazon Photos](from-amazon-photos)
- [Import from local hard disk](from-local-hard-disk)
- [Export out of Ente Photos](export/)
- [Import from Google Photos](from-google-photos/)
- [Import from Apple Photos](from-apple-photos/)
- [Import from Amazon Photos](from-amazon-photos)
- [Import from local hard disk](from-local-hard-disk)
- [Export out of Ente Photos](export/)

View File

@@ -9,8 +9,8 @@ The latest version of the Ente Photos desktop app can be downloaded from
[ente.io/download](https://ente.io/download). If you're having trouble, please
see if any of the following cases apply.
- [Windows](#windows)
- [Linux](#linux)
- [Windows](#windows)
- [Linux](#linux)
## Windows
@@ -36,9 +36,9 @@ https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=ms
AppImages are not fully standalone, and they require additional steps to enable
full "desktop integration":
- Showing the app icon,
- Surfacing the app in the list of installed apps,
- Handling redirection after passkey verification.
- Showing the app icon,
- Surfacing the app in the list of installed apps,
- Handling redirection after passkey verification.
All the ways of enabling AppImage desktop integration are mentioned in
[AppImage documentation](https://docs.appimage.org/user-guide/run-appimages.html#integrating-appimages-into-the-desktop).
@@ -62,11 +62,11 @@ It is possible that the exact path might be different on your machine. Briefly,
what we need to do is create `libz.so` as an alias for `libz.so.1`. For more
details, see the following upstream issues:
- libz.so cannot open shared object file on ARM64 -
[AppImage/AppImageKit/issues/1092](https://github.com/AppImage/AppImageKit/issues/1092)
- libz.so cannot open shared object file on ARM64 -
[AppImage/AppImageKit/issues/1092](https://github.com/AppImage/AppImageKit/issues/1092)
- libz.so: cannot open shared object file with Ubuntu arm64 -
[electron-userland/electron-builder/issues/7835](https://github.com/electron-userland/electron-builder/issues/7835)
- libz.so: cannot open shared object file with Ubuntu arm64 -
[electron-userland/electron-builder/issues/7835](https://github.com/electron-userland/electron-builder/issues/7835)
### AppImage says it requires FUSE

View File

@@ -15,28 +15,28 @@ the logs just make the process a bit faster and easier.
## Mobile
- 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_.
- 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_.
## 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.
- 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.
## Web
- 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.
- 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.
## Send email manually

View File

@@ -8,9 +8,9 @@ description: Getting the OTP for a self hosted Ente
The self-hosted Ente by default does not send out emails, so you can pick the
verification code by:
- Getting it from the server logs, or
- Getting it from the server logs, or
- Reading it from the DB (otts table)
- Reading it from the DB (otts table)
You can also set pre-defined hardcoded OTTs for certain users when running
locally by creating a `museum.yaml` and adding the `internal.hardcoded-ott`

View File

@@ -50,16 +50,15 @@ explicit whitelist of admins.
To whitelist the user IDs that can perform admin actions on the server, use the
following steps:
- Create a `museum.yaml` in the directory where you're starting museum from.
For example, if you're running using `docker compose up`, then this file
should be in the same directory as `compose.yaml` (generally,
`server/museum.yaml`).
- Create a `museum.yaml` in the directory where you're starting museum from. For
example, if you're running using `docker compose up`, then this file should be
in the same directory as `compose.yaml` (generally, `server/museum.yaml`).
> Docker might've created an empty `museum.yaml` _directory_ on your machine
> previously. If so, delete that empty directory and create a new file named
> `museum.yaml`.
- In this `museum.yaml` we can add overrides over the default configuration.
- In this `museum.yaml` we can add overrides over the default configuration.
For whitelisting the admin userIDs we need to define an `internal.admins`. See
the "internal" section in

View File

@@ -167,10 +167,10 @@ RUN chmod +x /docker-entrypoint.d/replace_ente_endpoints.sh
This runs nginx inside to handle both the web & album URLs so we don't have to
make two web images with different port.
- `DOCKER_RUNTIME_REPLACE_ENDPOINT` this is your public museum API URL.
- `DOCKER_RUNTIME_REPLACE_ALBUMS_ENDPOINT` this is the shared albums URL (for
more details about configuring shared albums, see
[faq/sharing](/self-hosting/faq/sharing)).
- `DOCKER_RUNTIME_REPLACE_ENDPOINT` this is your public museum API URL.
- `DOCKER_RUNTIME_REPLACE_ALBUMS_ENDPOINT` this is the shared albums URL (for
more details about configuring shared albums, see
[faq/sharing](/self-hosting/faq/sharing)).
Note how above we had updated the `compose.yaml` file for the server with
@@ -218,11 +218,11 @@ s3:
use_path_style_urls: true
# The key must be named like so
b2-eu-cen:
key: $YOUR_S3_KEY
secret: $YOUR_S3_SECRET
key: $YOUR_S3_KEY
secret: $YOUR_S3_SECRET
endpoint: $YOUR_S3_ENDPOINT
region: $YOUR_S3_REGION
bucket: $YOUR_S3_BUCKET_NAME
region: $YOUR_S3_REGION
bucket: $YOUR_S3_BUCKET_NAME
# The same value as the one specified in ALBUMS_ENDPOINT
apps:
public-albums: http://localhost:8082
@@ -235,10 +235,12 @@ background).
## 4. Create an account and increase storage quota
Open `http://localhost:8080` or whatever Endpoint you mentioned for the web app and create an account.
If your SMTP related configurations are all set and right, you will receive an email with
your OTT in it. There are two work arounds to retrieve the OTP,
checkout [this document](https://help.ente.io/self-hosting/faq/otp) for getting your OTT's..
Open `http://localhost:8080` or whatever Endpoint you mentioned for the web app
and create an account. If your SMTP related configurations are all set and
right, you will receive an email with your OTT in it. There are two work arounds
to retrieve the OTP, checkout
[this document](https://help.ente.io/self-hosting/faq/otp) for getting your
OTT's..
If you successfully log in, select any plan and increase the storage quota with
the following command:
@@ -251,8 +253,7 @@ After few reloads, you should see 1 To of quota.
## 5. Fix potential CORS issue with your bucket
### For AWS S3
### For AWS S3
If you cannot upload a photo due to a CORS issue, you need to fix the CORS
configuration of your bucket.
@@ -275,7 +276,8 @@ Create a `cors.json` file with the following content:
You may want to change the `AllowedOrigins` to a more restrictive value.
If you are using AWS for S3, you can execute the below command to get rid of CORS. Make sure to enter the right path for the `cors.json` file.
If you are using AWS for S3, you can execute the below command to get rid of
CORS. Make sure to enter the right path for the `cors.json` file.
```bash
aws s3api put-bucket-cors --bucket YOUR_S3_BUCKET --cors-configuration /path/to/cors.json
@@ -283,18 +285,27 @@ aws s3api put-bucket-cors --bucket YOUR_S3_BUCKET --cors-configuration /path/to/
### For Self-hosted Minio Instance
> Important: MinIO does not take JSON CORS file as the input, instead you will have to build a CORS.xml file or just convert the above `cors.json` to XML.
> Important: MinIO does not take JSON CORS file as the input, instead you will
> have to build a CORS.xml file or just convert the above `cors.json` to XML.
A minor requirement here is the tool `mc` for managing buckets via command line
interface. Checkout the `mc set alias` document to configure alias for your
instance and bucket. After this you will be prompted for your AccessKey and
Secret, which is your username and password, go ahead and enter that.
A minor requirement here is the tool `mc` for managing buckets via command line interface. Checkout the `mc set alias` document to configure alias for your instance and bucket.
After this you will be prompted for your AccessKey and Secret, which is your username and password, go ahead and enter that.
```sh
mc cors set <your-minio>/<your-bucket-name /path/to/cors.xml
```
or, if you just want to just set the `AllowedOrigins` Header, you can use the following command to do so.
```sh
or, if you just want to just set the `AllowedOrigins` Header, you can use the
following command to do so.
```sh
mc admin config set <your-minio>/<your-bucket-name> set "cors_allowed_origin=*"
```
You can create also `.csv` file and dump the list of origins you would like to allow and replace the `*` with `path` to the CSV file.
You can create also `.csv` file and dump the list of origins you would like to
allow and replace the `*` with `path` to the CSV file.
Now, uploads should be working fine.
@@ -302,6 +313,6 @@ Now, uploads should be working fine.
Some other users have also shared their setups.
- [Using Traefik](https://github.com/ente-io/ente/pull/3663)
- [Using Traefik](https://github.com/ente-io/ente/pull/3663)
- [Building custom images from source (Linux)](https://github.com/ente-io/ente/discussions/3778)
- [Building custom images from source (Linux)](https://github.com/ente-io/ente/discussions/3778)

View File

@@ -10,14 +10,14 @@ walkthroughs, tutorials and other FAQ pages in this directory.
See the sidebar for existing guides. In particular:
- If you're just looking to get started, see
[configure custom server](custom-server/).
- If you're just looking to get started, see
[configure custom server](custom-server/).
- For various admin related tasks, e.g. increasing the storage quota on your
self hosted instance, see [administering your custom server](admin).
- For various admin related tasks, e.g. increasing the storage quota on your
self hosted instance, see [administering your custom server](admin).
- For configuring your S3 buckets to get the object storage to work from your
mobile device or for fixing an upload errors, see
[configuring S3](configuring-s3). There is also a longer
[community contributed guide](external-s3) for a more self hosted setup of
both the server and web app using external S3 buckets for object storage.
- For configuring your S3 buckets to get the object storage to work from your
mobile device or for fixing an upload errors, see
[configuring S3](configuring-s3). There is also a longer
[community contributed guide](external-s3) for a more self hosted setup of
both the server and web app using external S3 buckets for object storage.

View File

@@ -5,33 +5,35 @@ description: Guide to configuring Ente CLI for Self Hosted Instance
## Self Hosting
If you are self-hosting the server, you can still configure CLI to export
data & perform basic admin actions.
If you are self-hosting the server, you can still configure CLI to export data &
perform basic admin actions.
To do this, first configure the CLI to point to your server. Define a config.yaml
and put it either in the same directory as CLI binary
or path defined in env variable `ENTE_CLI_CONFIG_DIR`
To do this, first configure the CLI to point to your server. Define a
config.yaml and put it either in the same directory as CLI binary or path
defined in env variable `ENTE_CLI_CONFIG_DIR`
```yaml
endpoint:
api: "http://localhost:8080"
api: "http://localhost:8080"
```
You should be able to [add an account](https://github.com/ente-io/ente/blob/main/cli/docs/generated/ente_account_add.md),
and subsequently increase the
[storage and account validity](https://github.com/ente-io/ente/blob/main/cli/docs/generated/ente_admin_update-subscription.md) using the CLI.
You should be able to
[add an account](https://github.com/ente-io/ente/blob/main/cli/docs/generated/ente_account_add.md),
and subsequently increase the
[storage and account validity](https://github.com/ente-io/ente/blob/main/cli/docs/generated/ente_admin_update-subscription.md)
using the CLI.
For the admin actions, you first need to whitelist admin users. You can create
`server/museum.yaml`, and whitelist add the admin userID `internal.admins`.
See [local.yaml](https://github.com/ente-io/ente/blob/main/server/configurations/local.yaml#L211C1-L232C1)
For the admin actions, you first need to whitelist admin users. You can create
`server/museum.yaml`, and whitelist add the admin userID `internal.admins`. See
[local.yaml](https://github.com/ente-io/ente/blob/main/server/configurations/local.yaml#L211C1-L232C1)
in the server source code for details about how to define this.
You can use [account list](https://github.com/ente-io/ente/blob/main/cli/docs/generated/ente_account_list.md)
You can use
[account list](https://github.com/ente-io/ente/blob/main/cli/docs/generated/ente_account_list.md)
command to find the user id of any account.
```yaml
internal:
admins:
# - 1580559962386440
admins:
# - 1580559962386440
```

View File

@@ -7,72 +7,78 @@ description: Installing and setting up Ente standalone without docker.
## Running Museum (Ente's server) without Docker
First, start by installing all the dependencies to get your machine ready for development.
First, start by installing all the dependencies to get your machine ready for
development.
```sh
```sh
# For MacOS
brew tap homebrew/core
brew update
brew install go
brew tap homebrew/core
brew update
brew install go
# For Ubuntu based distros
sudo apt update && sudo apt upgrade
sudo apt update && sudo apt upgrade
sudo apt install golang-go
```
Alternatively, you can also download the latest binaries from ['All Release'](https://go.dev/dl/) page from the official website.
Alternatively, you can also download the latest binaries from
['All Release'](https://go.dev/dl/) page from the official website.
```sh
brew install postgres@15
# Link the postgres keg
brew link postgresql@15
```sh
brew install postgres@15
# Link the postgres keg
brew link postgresql@15
brew install libsodium
brew install libsodium
# For Ubuntu based distros
# For Ubuntu based distros
sudo apt install postgresql
sudo apt install libsodium23 libsodium-dev
sudo apt install libsodium23 libsodium-dev
```
The package `libsodium23` might be installed already in some cases.
Installing pkg-config
```sh
brew install pkg-config
```sh
brew install pkg-config
# For Ubuntu based distros
# For Ubuntu based distros
sudo apt install pkg-config
```
## Starting Postgres
## Starting Postgres
### With pg_ctl
### With pg_ctl
```sh
pg_ctl -D /usr/local/var/postgres -l logfile start
```sh
pg_ctl -D /usr/local/var/postgres -l logfile start
```
Dependeing on the Operating System type the path for postgres binary or configuration file might be different, please check if the command keeps failing for you.
Dependeing on the Operating System type the path for postgres binary or
configuration file might be different, please check if the command keeps failing
for you.
Ideally, if you are on a Linux system with systemd as the init. You can also start postgres as a systemd service. After Installation execute the following commands:
Ideally, if you are on a Linux system with systemd as the init. You can also
start postgres as a systemd service. After Installation execute the following
commands:
```sh
sudo systemctl enable postgresql
```sh
sudo systemctl enable postgresql
sudo systemctl daemon-reload && sudo systemctl start postgresql
```
### Create user
### Create user
```sh
```sh
createuser -s postgres
```
## Start Museum
## Start Museum
Start by cloning ente to your system.
Start by cloning ente to your system.
```sh
```sh
git clone https://github.com/ente-io/ente
```
@@ -82,23 +88,29 @@ cd ente/server
go run cmd/museum/main.go
```
You can also add the export line to your shell's RC file, to avoid exporting the environment variable every time.
You can also add the export line to your shell's RC file, to avoid exporting the
environment variable every time.
For live reloads, install [air](https://github.com/air-verse/air#installation). Then you can just call air after declaring the required environment variables. For example,
For live reloads, install [air](https://github.com/air-verse/air#installation).
Then you can just call air after declaring the required environment variables.
For example,
```sh
ENTE_DB_USER=postgres
air
```
## Museum as a background service
## Museum as a background service
Please check the below links if you want to run Museum as a service, both of them are battle tested.
Please check the below links if you want to run Museum as a service, both of
them are battle tested.
1. [How to run museum as a systemd service](https://gist.github.com/mngshm/a0edb097c91d1dc45aeed755af310323)
2. [Museum.service](https://github.com/ente-io/ente/blob/23e678889189157ecc389c258267685934b83631/server/scripts/deploy/museum.service#L4)
Once you are done with setting and running Museum, all you are left to do is run the web app and reverse_proxy it with a webserver. You can check the following resources for Deploying your web app.
Once you are done with setting and running Museum, all you are left to do is run
the web app and reverse_proxy it with a webserver. You can check the following
resources for Deploying your web app.
1. [Hosting the Web App](https://help.ente.io/self-hosting/guides/web-app).
2. [Running Ente Web app as a systemd Service](https://gist.github.com/mngshm/72e32bd483c2129621ed0d74412492fd)

View File

@@ -17,20 +17,21 @@ yarn install
NEXT_PUBLIC_ENTE_ENDPOINT=http://localhost:8080 yarn dev:photos
```
This is fine for trying the web app and verifying that your self-hosted server is
working as expected etc. But if you would like to use the web app for a longer term,
then it is recommended to follow the Docker approach.
This is fine for trying the web app and verifying that your self-hosted server
is working as expected etc. But if you would like to use the web app for a
longer term, then it is recommended to follow the Docker approach.
## With Docker/Docker Compose (Recommended)
> [!IMPORTANT]
>
> This docker image is still in testing stage and it might show up with some
> unknown variables in different scenarios. But this image has been tested on a production
> ente site.
>
> unknown variables in different scenarios. But this image has been tested on a
> production Ente site.
>
> Recurring changes might be made by the team or from community if more
> improvements can be made so that we are able to build a full-fledged docker image.
> improvements can be made so that we are able to build a full-fledged docker
> image.
```dockerfile
FROM node:20-bookworm-slim as builder
@@ -43,9 +44,9 @@ COPY apps/ .
# Will help default to yarn versoin 1.22.22
RUN corepack enable
# Configure Albums and Accounts Endpoints
ENV NEXT_PUBLIC_ENTE_ALBUMS_ENDPOINT=https://your-domain.com
ENV NEXT_PUBLIC_ENTE_ACCOUNTS_URL=https://your-domain.com
# Endpoint for Ente Server
NEXT_PUBLIC_ENTE_ENDPOINT=https://your-ente-endpoint.com
NEXT_PUBLIC_ENTE_ALBUMS_ENDPOINT=https://your-albums-endpoint.com
RUN yarn cache clean
RUN yarn install --network-timeout 1000000000
@@ -74,8 +75,8 @@ EXPOSE ${AUTH}
ENV CAST=3003
EXPOSE ${CAST}
# The albums app does not have navigable pages on it, but the
# port will be exposed in-order to self up the albums endpoint
# The albums app does not have navigable pages on it, but the
# port will be exposed in-order to self up the albums endpoint
# `apps.public-albums` in museum.yaml configuration file.
ENV ALBUMS=3004
EXPOSE ${ALBUMS}
@@ -83,82 +84,80 @@ EXPOSE ${ALBUMS}
CMD ["sh", "-c", "serve /app/photos -l tcp://0.0.0.0:${PHOTOS} & serve /app/accounts -l tcp://0.0.0.0:${ACCOUNTS} & serve /app/auth -l tcp://0.0.0.0:${AUTH} & serve /app/cast -l tcp://0.0.0.0:${CAST}"]
```
The above is a multi-stage Dockerfile which creates a production ready static output
of the 4 apps (Photos, Accounts, Auth and Cast) and serves the static content with
Caddy.
The above is a multi-stage Dockerfile which creates a production ready static
output of the 4 apps (Photos, Accounts, Auth and Cast) and serves the static
content with Caddy.
Looking at 2 different node base-images doing different tasks in the same Dockerfile
would not make sense, but the Dockerfile is divided into two just to improve the build
efficiency as building this Dockerfile will arguably take more time.
Lets build a Docker image from the above Dockerfile. Copy and paste the above Dockerfile
contents in the root of your web directory which is inside `ente/web`. Execute the
below command to create an image from this Dockerfile.
Looking at 2 different node base-images doing different tasks in the same
Dockerfile would not make sense, but the Dockerfile is divided into two just to
improve the build efficiency as building this Dockerfile will arguably take more
time.
Lets build a Docker image from the above Dockerfile. Copy and paste the above
Dockerfile contents in the root of your web directory which is inside
`ente/web`. Execute the below command to create an image from this Dockerfile.
```sh
# Build the image
docker build -t <image-name>:<tag> --no-cache --progress plain .
docker build -t <image-name>:<tag> --no-cache --progress plain .
```
You can always edit the Dockerfile and remove the steps for apps which you do not
intend to install on your system (like auth or cast) and opt out of those.
You can always edit the Dockerfile and remove the steps for apps which you do
not intend to install on your system (like auth or cast) and opt out of those.
Regarding Albums App, please take a note that they are not web pages with
navigable pages, if accessed on the web-browser they will simply redirect to
ente.web.io.
Regarding Albums App, please take a note that they are not web pages with
navigable pages, if accessed on the web-browser they will simply redirect to
ente.web.io.
## compose.yaml
Moving ahead, we need to paste the below contents into the compose.yaml inside
`ente/server/compose.yaml` under the services section.
`ente/server/compose.yaml` under the services section.
```yaml
ente-web:
ente-web:
image: <image-name> # name of the image you used while building
ports:
- 3000:3000
- 3001:3001
- 3002:3002
- 3003:3003
- 3004:3004
- 3000:3000
- 3001:3001
- 3002:3002
- 3003:3003
- 3004:3004
environment:
- NEXT_PUBLIC_ENTE_ALBUMS_ENDPOINT=https://your-domain.com
- NEXT_PUBLIC_ENTE_ACCOUNTS_URL=https://your-domain.com
- NODE_ENV=development
- NODE_ENV=development
restart: always
```
Now, we're good to go. All we are left to do now is start the containers.
Now, we're good to go. All we are left to do now is start the containers.
```sh
docker compose up -d # --build
```sh
docker compose up -d # --build
# Accessing the logs
docker compose logs <container-name>
```
Next part is to configure a [web server](#web-server-configuration).
## Without Docker / Docker compose
One way to run all the apps together without Docker is by using [PM2](https://pm2.keymetrics.io/)
in this setup. The configuration and usage is very simple and just needs one
configuration file for it. You can run the apps both in dev server mode as
well as static files.
One way to run all the apps together without Docker is by using
[PM2](https://pm2.keymetrics.io/) in this setup. The configuration and usage is
very simple and just needs one configuration file for it. You can run the apps
both in dev server mode as well as static files.
The below configuration will run the apps in dev server mode.
### Install PM2
```sh
npm install pm2@latest
```sh
npm install pm2@latest
```
Copy the below contents to a file called `ecosystem.config.js` inside the `ente/web`
directory.
Copy the below contents to a file called `ecosystem.config.js` inside the
`ente/web` directory.
```js
```js
module.exports = {
apps: [
{
@@ -197,22 +196,36 @@ directory.
```
Finally, start pm2.
Finally, start pm2.
```sh
pm2 start
```sh
pm2 start
# for logs
pm2 logs all
```
# Web server configuration
## Configure App Endpoints
The last step ahead is configuring reverse_proxy for the ports on which the
apps are being served (you will have to make changes, if you have cusotmized the ports).
The web server of choice in this guide is [Caddy](https://caddyserver.com) because
with caddy you don't have to manually configure/setup SSL ceritifcates as caddy
will take care of that.
> [!NOTE]
> Previously, this was dependent on the env variables `NEXT_ENTE_PUBLIC_ACCOUNTS_ENDPOINT`
> and etc. Please check the below documentation to update your setup configurations
You can configure the web endpoints for the other apps including Accounts, Albums
Family and Cast in your `museum.yaml`` configuration file. Checkout
[`local.yaml`](https://github.com/ente-io/ente/blob/543411254b2bb55bd00a0e515dcafa12d12d3b35/server/configurations/local.yaml#L76-L89)
to configure the endpoints. Make sure to setup up your DNS Records accordingly to the
similar URL's you set up in `museum.yaml``
Next part is to configure the web server.
# Web server configuration
The last step ahead is configuring reverse_proxy for the ports on which the apps
are being served (you will have to make changes, if you have cusotmized the
ports). The web server of choice in this guide is
[Caddy](https://caddyserver.com) because with caddy you don't have to manually
configure/setup SSL ceritifcates as caddy will take care of that.
```sh
photos.yourdomain.com {
@@ -229,17 +242,17 @@ auth.yourdomain.com {
# and so on ...
```
Next, start the caddy server :).
Next, start the caddy server :).
```sh
```sh
# If caddy service is not enabled
sudo systemctl enable caddy
sudo systemctl daemon-reload
sudo systemctl daemon-reload
sudo systemctl start caddy
```
## Contributing
## Contributing
Please start a discussion on the Github Repo if you have any suggestions for the Dockerfile,
You can also share your setups on Github Discussions.
Please start a discussion on the Github Repo if you have any suggestions for the
Dockerfile, You can also share your setups on Github Discussions.

View File

@@ -16,9 +16,11 @@ the same code we use for our own cloud service.
## Getting started
#### Installing Docker
#### Installing Docker
Refer to [How to install Docker from the APT repository](https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository) for detailed instructions.
Refer to
[How to install Docker from the APT repository](https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository)
for detailed instructions.
#### Start the server
@@ -33,12 +35,12 @@ docker compose up --build
> You can also use a pre-built Docker image from `ghcr.io/ente-io/server`
> ([More info](https://github.com/ente-io/ente/blob/main/server/docs/docker.md))
Install the necessary dependencies for running the web client
Install the necessary dependencies for running the web client
```sh
# installing npm and yarn
```sh
# installing npm and yarn
sudo apt update
sudo apt update
sudo apt install nodejs npm
sudo npm install -g yarn // to install yarn globally
```
@@ -66,16 +68,16 @@ apps and configure them to use your
## Next steps
- More details about the server are in its
[README](https://github.com/ente-io/ente/tree/main/server#readme)
- More details about the server are in its
[README](https://github.com/ente-io/ente/tree/main/server#readme)
- More details about running the server (with or without Docker) are in
[RUNNING](https://github.com/ente-io/ente/blob/main/server/RUNNING.md)
- More details about running the server (with or without Docker) are in
[RUNNING](https://github.com/ente-io/ente/blob/main/server/RUNNING.md)
- If you have questions around self-hosting that are not answered in any of
the existing documentation, you can ask in our
[GitHub Discussions](https://github.com/ente-io/ente/discussions). **Please
remember to search first if the query has been already asked and answered.**
- If you have questions around self-hosting that are not answered in any of the
existing documentation, you can ask in our
[GitHub Discussions](https://github.com/ente-io/ente/discussions). **Please
remember to search first if the query has been already asked and answered.**
## Contributing!

View File

@@ -1,35 +1,39 @@
---
title: Ente CLI Secrets
description: A quick hotfix for keyring errors while running Ente CLI.
title: Ente CLI Secrets
description: A quick hotfix for keyring errors while running Ente CLI.
---
# Ente CLI Secrets
# Ente CLI Secrets
Ente CLI makes use of keyring for storing sensitive information
like your passwords. And running the cli straight out of the
box might give you some errors related to keyrings in some case.
Ente CLI makes use of keyring for storing sensitive information like your
passwords. And running the cli straight out of the box might give you some
errors related to keyrings in some case.
Follow the below steps to run Ente CLI and also avoid keyrings errors.
Follow the below steps to run Ente CLI and also avoid keyrings errors.
Run:
```sh
```sh
# export the secrets path
export ENTE_CLI_SECRETS_PATH=./<path-to-secrets.txt>
./ente-cli
```
You can also add the above line to your shell's rc file, to prevent the need to export manually every time.
You can also add the above line to your shell's rc file, to prevent the need to
export manually every time.
Then one of the following:
1. If the file doesn't exist, Ente CLI will create it and fill it with a random 32 character encryption key.
2. If you do create the file, please fill it with a cryptographically generated 32 byte string.
1. If the file doesn't exist, Ente CLI will create it and fill it with a random
32 character encryption key.
2. If you do create the file, please fill it with a cryptographically generated
32 byte string.
And you are good to go.
## Ref
## Ref
- [Ente CLI Secrets Path](https://www.reddit.com/r/selfhosted/comments/1gc09il/comment/lu2hox2/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button)
- [Keyrings](https://man7.org/linux/man-pages/man7/keyrings.7.html)

View File

@@ -7,7 +7,7 @@ description: Fixing yarn install errors when trying to self host Ente
If your `yarn install` is failing, make sure you are using Yarn Classic
- https://classic.yarnpkg.com/lang/en/docs/install
- https://classic.yarnpkg.com/lang/en/docs/install
For more details, see the
[getting started instructions](https://github.com/ente-io/ente/blob/main/web/docs/new.md).

View File

@@ -8,8 +8,8 @@
"pretty": "prettier --write ."
},
"devDependencies": {
"prettier": "^3",
"vitepress": "^1.0.0-rc.45"
"prettier": "^3.3.4",
"vitepress": "^1.5.0"
},
"packageManager": "yarn@1.22.22"
}

File diff suppressed because it is too large Load Diff

View File

@@ -15,10 +15,10 @@ Install dependencies with `yarn`.
Then, to deploy an individual worker
- Login into wrangler (if needed) using
`yarn workspace health-check wrangler login`
- Login into wrangler (if needed) using
`yarn workspace health-check wrangler login`
- Deploy! `yarn workspace health-check wrangler deploy`
- Deploy! `yarn workspace health-check wrangler deploy`
Wrangler is the CLI provided by Cloudflare to manage workers. Apart from
deploying, it also allows us to stream logs from running workers by using

View File

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

3
mobile/.gitignore vendored
View File

@@ -40,3 +40,6 @@ android/.settings/
.env
fastlane/report.xml
# Android related
android/app/build/

View File

@@ -185,83 +185,86 @@ class MessageLookup extends MessageLookupByLibrary {
static String m62(count) =>
"${Intl.plural(count, one: '${count} Ergebnis gefunden', other: '${count} Ergebnisse gefunden')}";
static String m63(snapshotLength, searchLength) =>
"Abschnittslänge stimmt nicht überein: ${snapshotLength} != ${searchLength}";
static String m4(count) => "${count} ausgewählt";
static String m63(count, yourCount) =>
static String m64(count, yourCount) =>
"${count} ausgewählt (${yourCount} von Ihnen)";
static String m64(verificationID) =>
static String m65(verificationID) =>
"Hier ist meine Verifizierungs-ID: ${verificationID} für ente.io.";
static String m5(verificationID) =>
"Hey, kannst du bestätigen, dass dies deine ente.io Verifizierungs-ID ist: ${verificationID}";
static String m65(referralCode, referralStorageInGB) =>
static String m66(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 m66(numberOfPeople) =>
static String m67(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Teile mit bestimmten Personen', one: 'Teilen mit 1 Person', other: 'Teilen mit ${numberOfPeople} Personen')}";
static String m67(emailIDs) => "Geteilt mit ${emailIDs}";
static String m68(fileType) =>
"Dieses ${fileType} wird von deinem Gerät gelöscht.";
static String m68(emailIDs) => "Geteilt mit ${emailIDs}";
static String m69(fileType) =>
"Dieses ${fileType} wird von deinem Gerät gelöscht.";
static String m70(fileType) =>
"Diese Datei ist sowohl in Ente als auch auf deinem Gerät.";
static String m70(fileType) => "Diese Datei wird von Ente gelöscht.";
static String m71(fileType) => "Diese Datei wird von Ente gelöscht.";
static String m1(storageAmountInGB) => "${storageAmountInGB} GB";
static String m71(
static String m72(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} von ${totalAmount} ${totalStorageUnit} verwendet";
static String m72(id) =>
static String m73(id) =>
"Dein ${id} ist bereits mit einem anderen Ente-Konto verknüpft.\nWenn du deine ${id} mit diesem Konto verwenden möchtest, kontaktiere bitte unseren Support";
static String m73(endDate) => "Dein Abo endet am ${endDate}";
static String m74(endDate) => "Dein Abo endet am ${endDate}";
static String m74(completed, total) =>
static String m75(completed, total) =>
"${completed}/${total} Erinnerungsstücke gesichert";
static String m75(ignoreReason) =>
static String m76(ignoreReason) =>
"Zum Hochladen tippen, Hochladen wird derzeit ignoriert, da ${ignoreReason}";
static String m76(storageAmountInGB) =>
static String m77(storageAmountInGB) =>
"Diese erhalten auch ${storageAmountInGB} GB";
static String m77(email) => "Dies ist ${email}s Verifizierungs-ID";
static String m78(email) => "Dies ist ${email}s Verifizierungs-ID";
static String m78(count) =>
static String m79(count) =>
"${Intl.plural(count, zero: 'Demnächst', one: '1 Tag', other: '${count} Tage')}";
static String m79(email) =>
static String m80(email) =>
"Du wurdest von ${email} eingeladen, ein Kontakt für das digitale Erbe zu werden.";
static String m80(galleryType) =>
static String m81(galleryType) =>
"Der Galerie-Typ ${galleryType} unterstützt kein Umbenennen";
static String m81(ignoreReason) =>
static String m82(ignoreReason) =>
"Upload wird aufgrund von ${ignoreReason} ignoriert";
static String m82(count) => "Sichere ${count} Erinnerungsstücke...";
static String m83(count) => "Sichere ${count} Erinnerungsstücke...";
static String m83(endDate) => "Gültig bis ${endDate}";
static String m84(endDate) => "Gültig bis ${endDate}";
static String m84(email) => "Verifiziere ${email}";
static String m85(email) => "Verifiziere ${email}";
static String m85(count) =>
static String m86(count) =>
"${Intl.plural(count, zero: '0 Betrachter hinzugefügt', one: '1 Betrachter hinzugefügt', other: '${count} Betrachter hinzugefügt')}";
static String m2(email) =>
"Wir haben eine E-Mail an <green>${email}</green> gesendet";
static String m86(count) =>
static String m87(count) =>
"${Intl.plural(count, one: 'vor einem Jahr', other: 'vor ${count} Jahren')}";
static String m87(storageSaved) =>
static String m88(storageSaved) =>
"Du hast ${storageSaved} erfolgreich freigegeben!";
final messages = _notInlinedMessages(_notInlinedMessages);
@@ -1178,6 +1181,8 @@ class MessageLookup extends MessageLookupByLibrary {
"magicSearchHint": MessageLookupByLibrary.simpleMessage(
"Die magische Suche erlaubt das Durchsuchen von Fotos nach ihrem Inhalt, z.B. \'Blumen\', \'rotes Auto\', \'Ausweisdokumente\'"),
"manage": MessageLookupByLibrary.simpleMessage("Verwalten"),
"manageDeviceStorage":
MessageLookupByLibrary.simpleMessage("Geräte-Cache verwalten"),
"manageDeviceStorageDesc": MessageLookupByLibrary.simpleMessage(
"Lokalen Cache-Speicher überprüfen und löschen."),
"manageFamily":
@@ -1606,6 +1611,7 @@ class MessageLookup extends MessageLookupByLibrary {
"searchPersonsEmptySection": MessageLookupByLibrary.simpleMessage(
"Personen werden hier angezeigt, sobald Verarbeitung und Synchronisierung abgeschlossen sind"),
"searchResultCount": m62,
"searchSectionsLengthMismatch": m63,
"security": MessageLookupByLibrary.simpleMessage("Sicherheit"),
"seePublicAlbumLinksInApp": MessageLookupByLibrary.simpleMessage(
"Öffentliche Album-Links in der App ansehen"),
@@ -1640,7 +1646,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Ausgewählte Elemente werden aus allen Alben gelöscht und in den Papierkorb verschoben."),
"selectedPhotos": m4,
"selectedPhotosWithYours": m63,
"selectedPhotosWithYours": m64,
"send": MessageLookupByLibrary.simpleMessage("Absenden"),
"sendEmail": MessageLookupByLibrary.simpleMessage("E-Mail senden"),
"sendInvite": MessageLookupByLibrary.simpleMessage("Einladung senden"),
@@ -1670,16 +1676,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Teile jetzt ein Album"),
"shareLink": MessageLookupByLibrary.simpleMessage("Link teilen"),
"shareMyVerificationID": m64,
"shareMyVerificationID": m65,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Teile mit ausgewählten Personen"),
"shareTextConfirmOthersVerificationID": m5,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Hol dir Ente, damit wir ganz einfach Fotos und Videos in Originalqualität teilen können\n\nhttps://ente.io"),
"shareTextReferralCode": m65,
"shareTextReferralCode": m66,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Mit Nicht-Ente-Benutzern teilen"),
"shareWithPeopleSectionTitle": m66,
"shareWithPeopleSectionTitle": m67,
"shareYourFirstAlbum":
MessageLookupByLibrary.simpleMessage("Teile dein erstes Album"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1690,7 +1696,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": m67,
"sharedWith": m68,
"sharedWithMe": MessageLookupByLibrary.simpleMessage("Mit mir geteilt"),
"sharedWithYou":
MessageLookupByLibrary.simpleMessage("Mit dir geteilt"),
@@ -1706,11 +1712,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": m68,
"singleFileDeleteFromDevice": m69,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Es wird aus allen Alben gelöscht."),
"singleFileInBothLocalAndRemote": m69,
"singleFileInRemoteOnly": m70,
"singleFileInBothLocalAndRemote": m70,
"singleFileInRemoteOnly": m71,
"skip": MessageLookupByLibrary.simpleMessage("Überspringen"),
"social": MessageLookupByLibrary.simpleMessage("Social Media"),
"someItemsAreInBothEnteAndYourDevice":
@@ -1762,10 +1768,10 @@ class MessageLookup extends MessageLookupByLibrary {
"storageInGB": m1,
"storageLimitExceeded": MessageLookupByLibrary.simpleMessage(
"Speichergrenze überschritten"),
"storageUsageInfo": m71,
"storageUsageInfo": m72,
"strongStrength": MessageLookupByLibrary.simpleMessage("Stark"),
"subAlreadyLinkedErrMessage": m72,
"subWillBeCancelledOn": m73,
"subAlreadyLinkedErrMessage": m73,
"subWillBeCancelledOn": m74,
"subscribe": MessageLookupByLibrary.simpleMessage("Abonnieren"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Du benötigst ein aktives, bezahltes Abonnement, um das Teilen zu aktivieren."),
@@ -1782,7 +1788,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Verbesserung vorschlagen"),
"support": MessageLookupByLibrary.simpleMessage("Support"),
"syncProgress": m74,
"syncProgress": m75,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Synchronisierung angehalten"),
"syncing": MessageLookupByLibrary.simpleMessage("Synchronisiere …"),
@@ -1795,7 +1801,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Zum Entsperren antippen"),
"tapToUpload":
MessageLookupByLibrary.simpleMessage("Zum Hochladen antippen"),
"tapToUploadIsIgnoredDue": m75,
"tapToUploadIsIgnoredDue": m76,
"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"),
@@ -1819,7 +1825,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Diese Elemente werden von deinem Gerät gelöscht."),
"theyAlsoGetXGb": m76,
"theyAlsoGetXGb": m77,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Sie werden aus allen Alben gelöscht."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@@ -1835,7 +1841,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Diese E-Mail-Adresse wird bereits verwendet"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Dieses Bild hat keine Exif-Daten"),
"thisIsPersonVerificationId": m77,
"thisIsPersonVerificationId": m78,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"Dies ist deine Verifizierungs-ID"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1860,11 +1866,11 @@ class MessageLookup extends MessageLookupByLibrary {
"total": MessageLookupByLibrary.simpleMessage("Gesamt"),
"totalSize": MessageLookupByLibrary.simpleMessage("Gesamtgröße"),
"trash": MessageLookupByLibrary.simpleMessage("Papierkorb"),
"trashDaysLeft": m78,
"trashDaysLeft": m79,
"trim": MessageLookupByLibrary.simpleMessage("Schneiden"),
"trustedContacts":
MessageLookupByLibrary.simpleMessage("Vertrauenswürdige Kontakte"),
"trustedInviteBody": m79,
"trustedInviteBody": m80,
"tryAgain": MessageLookupByLibrary.simpleMessage("Erneut versuchen"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
"Aktiviere die Sicherung, um neue Dateien in diesem Ordner automatisch zu Ente hochzuladen."),
@@ -1883,7 +1889,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Zwei-Faktor-Authentifizierung (2FA) erfolgreich zurückgesetzt"),
"twofactorSetup": MessageLookupByLibrary.simpleMessage(
"Zweiten Faktor (2FA) einrichten"),
"typeOfGallerGallerytypeIsNotSupportedForRename": m80,
"typeOfGallerGallerytypeIsNotSupportedForRename": m81,
"unarchive": MessageLookupByLibrary.simpleMessage("Dearchivieren"),
"unarchiveAlbum":
MessageLookupByLibrary.simpleMessage("Album dearchivieren"),
@@ -1907,10 +1913,10 @@ class MessageLookup extends MessageLookupByLibrary {
"updatingFolderSelection": MessageLookupByLibrary.simpleMessage(
"Ordnerauswahl wird aktualisiert..."),
"upgrade": MessageLookupByLibrary.simpleMessage("Upgrade"),
"uploadIsIgnoredDueToIgnorereason": m81,
"uploadIsIgnoredDueToIgnorereason": m82,
"uploadingFilesToAlbum": MessageLookupByLibrary.simpleMessage(
"Dateien werden ins Album hochgeladen..."),
"uploadingMultipleMemories": m82,
"uploadingMultipleMemories": m83,
"uploadingSingleMemory": MessageLookupByLibrary.simpleMessage(
"Sichere ein Erinnerungsstück..."),
"upto50OffUntil4thDec": MessageLookupByLibrary.simpleMessage(
@@ -1929,7 +1935,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Ausgewähltes Foto verwenden"),
"usedSpace":
MessageLookupByLibrary.simpleMessage("Belegter Speicherplatz"),
"validTill": m83,
"validTill": m84,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Verifizierung fehlgeschlagen, bitte versuchen Sie es erneut"),
@@ -1938,7 +1944,7 @@ class MessageLookup extends MessageLookupByLibrary {
"verify": MessageLookupByLibrary.simpleMessage("Überprüfen"),
"verifyEmail":
MessageLookupByLibrary.simpleMessage("E-Mail-Adresse verifizieren"),
"verifyEmailID": m84,
"verifyEmailID": m85,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Überprüfen"),
"verifyPasskey":
MessageLookupByLibrary.simpleMessage("Passkey verifizieren"),
@@ -1965,7 +1971,7 @@ class MessageLookup extends MessageLookupByLibrary {
"viewRecoveryKey": MessageLookupByLibrary.simpleMessage(
"Wiederherstellungsschlüssel anzeigen"),
"viewer": MessageLookupByLibrary.simpleMessage("Zuschauer"),
"viewersSuccessfullyAdded": m85,
"viewersSuccessfullyAdded": m86,
"visitWebToManage": MessageLookupByLibrary.simpleMessage(
"Bitte rufe \"web.ente.io\" auf, um dein Abo zu verwalten"),
"waitingForVerification":
@@ -1987,7 +1993,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Ein vertrauenswürdiger Kontakt kann helfen, deine Daten wiederherzustellen."),
"yearShort": MessageLookupByLibrary.simpleMessage("Jahr"),
"yearly": MessageLookupByLibrary.simpleMessage("Jährlich"),
"yearsAgo": m86,
"yearsAgo": m87,
"yes": MessageLookupByLibrary.simpleMessage("Ja"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Ja, kündigen"),
"yesConvertToViewer": MessageLookupByLibrary.simpleMessage(
@@ -2019,7 +2025,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Du kannst nicht mit dir selbst teilen"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"Du hast keine archivierten Elemente."),
"youHaveSuccessfullyFreedUp": m87,
"youHaveSuccessfullyFreedUp": m88,
"yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
"Dein Benutzerkonto wurde gelöscht"),
"yourMap": MessageLookupByLibrary.simpleMessage("Deine Karte"),

View File

@@ -182,85 +182,85 @@ class MessageLookup extends MessageLookupByLibrary {
static String m62(count) =>
"${Intl.plural(count, one: '${count} result found', other: '${count} results found')}";
static String m88(snapshotLength, searchLength) =>
static String m63(snapshotLength, searchLength) =>
"Sections length mismatch: ${snapshotLength} != ${searchLength}";
static String m4(count) => "${count} selected";
static String m63(count, yourCount) =>
static String m64(count, yourCount) =>
"${count} selected (${yourCount} yours)";
static String m64(verificationID) =>
static String m65(verificationID) =>
"Here\'s my verification ID: ${verificationID} for ente.io.";
static String m5(verificationID) =>
"Hey, can you confirm that this is your ente.io verification ID: ${verificationID}";
static String m65(referralCode, referralStorageInGB) =>
static String m66(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 m66(numberOfPeople) =>
static String m67(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Share with specific people', one: 'Shared with 1 person', other: 'Shared with ${numberOfPeople} people')}";
static String m67(emailIDs) => "Shared with ${emailIDs}";
static String m68(fileType) =>
"This ${fileType} will be deleted from your device.";
static String m68(emailIDs) => "Shared with ${emailIDs}";
static String m69(fileType) =>
"This ${fileType} will be deleted from your device.";
static String m70(fileType) =>
"This ${fileType} is in both Ente and your device.";
static String m70(fileType) => "This ${fileType} will be deleted from Ente.";
static String m71(fileType) => "This ${fileType} will be deleted from Ente.";
static String m1(storageAmountInGB) => "${storageAmountInGB} GB";
static String m71(
static String m72(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} of ${totalAmount} ${totalStorageUnit} used";
static String m72(id) =>
static String m73(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 m73(endDate) =>
static String m74(endDate) =>
"Your subscription will be cancelled on ${endDate}";
static String m74(completed, total) =>
static String m75(completed, total) =>
"${completed}/${total} memories preserved";
static String m75(ignoreReason) =>
static String m76(ignoreReason) =>
"Tap to upload, upload is currently ignored due to ${ignoreReason}";
static String m76(storageAmountInGB) =>
static String m77(storageAmountInGB) =>
"They also get ${storageAmountInGB} GB";
static String m77(email) => "This is ${email}\'s Verification ID";
static String m78(email) => "This is ${email}\'s Verification ID";
static String m78(count) =>
static String m79(count) =>
"${Intl.plural(count, zero: 'Soon', one: '1 day', other: '${count} days')}";
static String m79(email) =>
static String m80(email) =>
"You have been invited to be a legacy contact by ${email}.";
static String m80(galleryType) =>
static String m81(galleryType) =>
"Type of gallery ${galleryType} is not supported for rename";
static String m81(ignoreReason) => "Upload is ignored due to ${ignoreReason}";
static String m82(ignoreReason) => "Upload is ignored due to ${ignoreReason}";
static String m82(count) => "Preserving ${count} memories...";
static String m83(count) => "Preserving ${count} memories...";
static String m83(endDate) => "Valid till ${endDate}";
static String m84(endDate) => "Valid till ${endDate}";
static String m84(email) => "Verify ${email}";
static String m85(email) => "Verify ${email}";
static String m85(count) =>
static String m86(count) =>
"${Intl.plural(count, zero: 'Added 0 viewer', one: 'Added 1 viewer', other: 'Added ${count} viewers')}";
static String m2(email) => "We have sent a mail to <green>${email}</green>";
static String m86(count) =>
static String m87(count) =>
"${Intl.plural(count, one: '${count} year ago', other: '${count} years ago')}";
static String m87(storageSaved) =>
static String m88(storageSaved) =>
"You have successfully freed up ${storageSaved}!";
final messages = _notInlinedMessages(_notInlinedMessages);
@@ -424,6 +424,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Please authenticate to manage your trusted contacts"),
"authToViewPasskey": MessageLookupByLibrary.simpleMessage(
"Please authenticate to view your passkey"),
"authToViewTrashedFiles": MessageLookupByLibrary.simpleMessage(
"Please authenticate to view your trashed files"),
"authToViewYourActiveSessions": MessageLookupByLibrary.simpleMessage(
"Please authenticate to view your active sessions"),
"authToViewYourHiddenFiles": MessageLookupByLibrary.simpleMessage(
@@ -1540,7 +1542,7 @@ class MessageLookup extends MessageLookupByLibrary {
"searchPersonsEmptySection": MessageLookupByLibrary.simpleMessage(
"People will be shown here once processing and syncing is complete"),
"searchResultCount": m62,
"searchSectionsLengthMismatch": m88,
"searchSectionsLengthMismatch": m63,
"security": MessageLookupByLibrary.simpleMessage("Security"),
"seePublicAlbumLinksInApp": MessageLookupByLibrary.simpleMessage(
"See public album links in app"),
@@ -1575,7 +1577,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Selected items will be deleted from all albums and moved to trash."),
"selectedPhotos": m4,
"selectedPhotosWithYours": m63,
"selectedPhotosWithYours": m64,
"send": MessageLookupByLibrary.simpleMessage("Send"),
"sendEmail": MessageLookupByLibrary.simpleMessage("Send email"),
"sendInvite": MessageLookupByLibrary.simpleMessage("Send invite"),
@@ -1604,16 +1606,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Share an album now"),
"shareLink": MessageLookupByLibrary.simpleMessage("Share link"),
"shareMyVerificationID": m64,
"shareMyVerificationID": m65,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Share only with the people you want"),
"shareTextConfirmOthersVerificationID": m5,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Download Ente so we can easily share original quality photos and videos\n\nhttps://ente.io"),
"shareTextReferralCode": m65,
"shareTextReferralCode": m66,
"shareWithNonenteUsers":
MessageLookupByLibrary.simpleMessage("Share with non-Ente users"),
"shareWithPeopleSectionTitle": m66,
"shareWithPeopleSectionTitle": m67,
"shareYourFirstAlbum":
MessageLookupByLibrary.simpleMessage("Share your first album"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1624,7 +1626,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": m67,
"sharedWith": m68,
"sharedWithMe": MessageLookupByLibrary.simpleMessage("Shared with me"),
"sharedWithYou":
MessageLookupByLibrary.simpleMessage("Shared with you"),
@@ -1639,11 +1641,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": m68,
"singleFileDeleteFromDevice": m69,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"It will be deleted from all albums."),
"singleFileInBothLocalAndRemote": m69,
"singleFileInRemoteOnly": m70,
"singleFileInBothLocalAndRemote": m70,
"singleFileInRemoteOnly": m71,
"skip": MessageLookupByLibrary.simpleMessage("Skip"),
"social": MessageLookupByLibrary.simpleMessage("Social"),
"someItemsAreInBothEnteAndYourDevice":
@@ -1691,10 +1693,10 @@ class MessageLookup extends MessageLookupByLibrary {
"storageInGB": m1,
"storageLimitExceeded":
MessageLookupByLibrary.simpleMessage("Storage limit exceeded"),
"storageUsageInfo": m71,
"storageUsageInfo": m72,
"strongStrength": MessageLookupByLibrary.simpleMessage("Strong"),
"subAlreadyLinkedErrMessage": m72,
"subWillBeCancelledOn": m73,
"subAlreadyLinkedErrMessage": m73,
"subWillBeCancelledOn": m74,
"subscribe": MessageLookupByLibrary.simpleMessage("Subscribe"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"You need an active paid subscription to enable sharing."),
@@ -1711,7 +1713,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Suggest features"),
"support": MessageLookupByLibrary.simpleMessage("Support"),
"syncProgress": m74,
"syncProgress": m75,
"syncStopped": MessageLookupByLibrary.simpleMessage("Sync stopped"),
"syncing": MessageLookupByLibrary.simpleMessage("Syncing..."),
"systemTheme": MessageLookupByLibrary.simpleMessage("System"),
@@ -1720,7 +1722,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Tap to enter code"),
"tapToUnlock": MessageLookupByLibrary.simpleMessage("Tap to unlock"),
"tapToUpload": MessageLookupByLibrary.simpleMessage("Tap to upload"),
"tapToUploadIsIgnoredDue": m75,
"tapToUploadIsIgnoredDue": m76,
"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"),
@@ -1743,7 +1745,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"These items will be deleted from your device."),
"theyAlsoGetXGb": m76,
"theyAlsoGetXGb": m77,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"They will be deleted from all albums."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@@ -1759,7 +1761,7 @@ class MessageLookup extends MessageLookupByLibrary {
"This email is already in use"),
"thisImageHasNoExifData":
MessageLookupByLibrary.simpleMessage("This image has no exif data"),
"thisIsPersonVerificationId": m77,
"thisIsPersonVerificationId": m78,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"This is your Verification ID"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1783,11 +1785,11 @@ class MessageLookup extends MessageLookupByLibrary {
"total": MessageLookupByLibrary.simpleMessage("total"),
"totalSize": MessageLookupByLibrary.simpleMessage("Total size"),
"trash": MessageLookupByLibrary.simpleMessage("Trash"),
"trashDaysLeft": m78,
"trashDaysLeft": m79,
"trim": MessageLookupByLibrary.simpleMessage("Trim"),
"trustedContacts":
MessageLookupByLibrary.simpleMessage("Trusted contacts"),
"trustedInviteBody": m79,
"trustedInviteBody": m80,
"tryAgain": MessageLookupByLibrary.simpleMessage("Try again"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
"Turn on backup to automatically upload files added to this device folder to Ente."),
@@ -1805,7 +1807,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Two-factor authentication successfully reset"),
"twofactorSetup":
MessageLookupByLibrary.simpleMessage("Two-factor setup"),
"typeOfGallerGallerytypeIsNotSupportedForRename": m80,
"typeOfGallerGallerytypeIsNotSupportedForRename": m81,
"unarchive": MessageLookupByLibrary.simpleMessage("Unarchive"),
"unarchiveAlbum":
MessageLookupByLibrary.simpleMessage("Unarchive album"),
@@ -1828,10 +1830,10 @@ class MessageLookup extends MessageLookupByLibrary {
"updatingFolderSelection": MessageLookupByLibrary.simpleMessage(
"Updating folder selection..."),
"upgrade": MessageLookupByLibrary.simpleMessage("Upgrade"),
"uploadIsIgnoredDueToIgnorereason": m81,
"uploadIsIgnoredDueToIgnorereason": m82,
"uploadingFilesToAlbum":
MessageLookupByLibrary.simpleMessage("Uploading files to album..."),
"uploadingMultipleMemories": m82,
"uploadingMultipleMemories": m83,
"uploadingSingleMemory":
MessageLookupByLibrary.simpleMessage("Preserving 1 memory..."),
"upto50OffUntil4thDec": MessageLookupByLibrary.simpleMessage(
@@ -1849,7 +1851,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Use selected photo"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Used space"),
"validTill": m83,
"validTill": m84,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Verification failed, please try again"),
@@ -1857,7 +1859,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Verification ID"),
"verify": MessageLookupByLibrary.simpleMessage("Verify"),
"verifyEmail": MessageLookupByLibrary.simpleMessage("Verify email"),
"verifyEmailID": m84,
"verifyEmailID": m85,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Verify"),
"verifyPasskey": MessageLookupByLibrary.simpleMessage("Verify passkey"),
"verifyPassword":
@@ -1881,7 +1883,7 @@ class MessageLookup extends MessageLookupByLibrary {
"viewRecoveryKey":
MessageLookupByLibrary.simpleMessage("View recovery key"),
"viewer": MessageLookupByLibrary.simpleMessage("Viewer"),
"viewersSuccessfullyAdded": m85,
"viewersSuccessfullyAdded": m86,
"visitWebToManage": MessageLookupByLibrary.simpleMessage(
"Please visit web.ente.io to manage your subscription"),
"waitingForVerification":
@@ -1902,7 +1904,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Trusted contact can help in recovering your data."),
"yearShort": MessageLookupByLibrary.simpleMessage("yr"),
"yearly": MessageLookupByLibrary.simpleMessage("Yearly"),
"yearsAgo": m86,
"yearsAgo": m87,
"yes": MessageLookupByLibrary.simpleMessage("Yes"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Yes, cancel"),
"yesConvertToViewer":
@@ -1934,7 +1936,7 @@ class MessageLookup extends MessageLookupByLibrary {
"You cannot share with yourself"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"You don\'t have any archived items."),
"youHaveSuccessfullyFreedUp": m87,
"youHaveSuccessfullyFreedUp": m88,
"yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
"Your account has been deleted"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map"),

View File

@@ -186,86 +186,86 @@ class MessageLookup extends MessageLookupByLibrary {
static String m62(count) =>
"${Intl.plural(count, one: '${count} resultado encontrado', other: '${count} resultados encontrados')}";
static String m88(snapshotLength, searchLength) =>
static String m63(snapshotLength, searchLength) =>
"La longitud de las secciones no coincide: ${snapshotLength} != ${searchLength}";
static String m4(count) => "${count} seleccionados";
static String m63(count, yourCount) =>
static String m64(count, yourCount) =>
"${count} seleccionados (${yourCount} tuyos)";
static String m64(verificationID) =>
static String m65(verificationID) =>
"Aquí está mi ID de verificación: ${verificationID} para ente.io.";
static String m5(verificationID) =>
"Hola, ¿puedes confirmar que esta es tu ID de verificación ente.io: ${verificationID}?";
static String m65(referralCode, referralStorageInGB) =>
static String m66(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 m66(numberOfPeople) =>
static String m67(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Compartir con personas específicas', one: 'Compartido con 1 persona', other: 'Compartido con ${numberOfPeople} personas')}";
static String m67(emailIDs) => "Compartido con ${emailIDs}";
static String m68(fileType) =>
"Este ${fileType} se eliminará de tu dispositivo.";
static String m68(emailIDs) => "Compartido con ${emailIDs}";
static String m69(fileType) =>
"Este ${fileType} se eliminará de tu dispositivo.";
static String m70(fileType) =>
"Este ${fileType} está tanto en Ente como en tu dispositivo.";
static String m70(fileType) => "Este ${fileType} será eliminado de Ente.";
static String m71(fileType) => "Este ${fileType} será eliminado de Ente.";
static String m1(storageAmountInGB) => "${storageAmountInGB} GB";
static String m71(
static String m72(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} de ${totalAmount} ${totalStorageUnit} usados";
static String m72(id) =>
static String m73(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 m73(endDate) => "Tu suscripción se cancelará el ${endDate}";
static String m74(endDate) => "Tu suscripción se cancelará el ${endDate}";
static String m74(completed, total) =>
static String m75(completed, total) =>
"${completed}/${total} recuerdos conservados";
static String m75(ignoreReason) =>
static String m76(ignoreReason) =>
"Toca para subir, la subida se está ignorando debido a ${ignoreReason}";
static String m76(storageAmountInGB) =>
static String m77(storageAmountInGB) =>
"También obtienen ${storageAmountInGB} GB";
static String m77(email) => "Este es el ID de verificación de ${email}";
static String m78(email) => "Este es el ID de verificación de ${email}";
static String m78(count) =>
static String m79(count) =>
"${Intl.plural(count, zero: 'Pronto', one: '1 día', other: '${count} días')}";
static String m79(email) =>
static String m80(email) =>
"Has sido invitado a ser un contacto legado por ${email}.";
static String m80(galleryType) =>
static String m81(galleryType) =>
"El tipo de galería ${galleryType} no es compatible con el renombrado";
static String m81(ignoreReason) =>
static String m82(ignoreReason) =>
"La subida se ignoró debido a ${ignoreReason}";
static String m82(count) => "Preservando ${count} memorias...";
static String m83(count) => "Preservando ${count} memorias...";
static String m83(endDate) => "Válido hasta ${endDate}";
static String m84(endDate) => "Válido hasta ${endDate}";
static String m84(email) => "Verificar ${email}";
static String m85(email) => "Verificar ${email}";
static String m85(count) =>
static String m86(count) =>
"${Intl.plural(count, zero: '0 espectadores añadidos', one: '1 espectador añadido', other: '${count} espectadores añadidos')}";
static String m2(email) =>
"Hemos enviado un correo a <green>${email}</green>";
static String m86(count) =>
static String m87(count) =>
"${Intl.plural(count, one: 'Hace ${count} año', other: 'Hace ${count} años')}";
static String m87(storageSaved) => "¡Has liberado ${storageSaved} con éxito!";
static String m88(storageSaved) => "¡Has liberado ${storageSaved} con éxito!";
final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
@@ -1619,7 +1619,7 @@ class MessageLookup extends MessageLookupByLibrary {
"searchPersonsEmptySection": MessageLookupByLibrary.simpleMessage(
"Las personas se mostrarán aquí cuando se complete el procesado y la sincronización"),
"searchResultCount": m62,
"searchSectionsLengthMismatch": m88,
"searchSectionsLengthMismatch": m63,
"security": MessageLookupByLibrary.simpleMessage("Seguridad"),
"seePublicAlbumLinksInApp": MessageLookupByLibrary.simpleMessage(
"Ver enlaces del álbum público en la aplicación"),
@@ -1656,7 +1656,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Los archivos seleccionados serán eliminados de todos los álbumes y movidos a la papelera."),
"selectedPhotos": m4,
"selectedPhotosWithYours": m63,
"selectedPhotosWithYours": m64,
"send": MessageLookupByLibrary.simpleMessage("Enviar"),
"sendEmail":
MessageLookupByLibrary.simpleMessage("Enviar correo electrónico"),
@@ -1690,16 +1690,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Compartir un álbum ahora"),
"shareLink": MessageLookupByLibrary.simpleMessage("Compartir enlace"),
"shareMyVerificationID": m64,
"shareMyVerificationID": m65,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Comparte sólo con la gente que quieres"),
"shareTextConfirmOthersVerificationID": m5,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Descarga Ente para que podamos compartir fácilmente fotos y videos en calidad original.\n\nhttps://ente.io"),
"shareTextReferralCode": m65,
"shareTextReferralCode": m66,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Compartir con usuarios fuera de Ente"),
"shareWithPeopleSectionTitle": m66,
"shareWithPeopleSectionTitle": m67,
"shareYourFirstAlbum":
MessageLookupByLibrary.simpleMessage("Comparte tu primer álbum"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1711,7 +1711,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": m67,
"sharedWith": m68,
"sharedWithMe":
MessageLookupByLibrary.simpleMessage("Compartido conmigo"),
"sharedWithYou":
@@ -1728,11 +1728,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": m68,
"singleFileDeleteFromDevice": m69,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Se borrará de todos los álbumes."),
"singleFileInBothLocalAndRemote": m69,
"singleFileInRemoteOnly": m70,
"singleFileInBothLocalAndRemote": m70,
"singleFileInRemoteOnly": m71,
"skip": MessageLookupByLibrary.simpleMessage("Omitir"),
"social": MessageLookupByLibrary.simpleMessage("Social"),
"someItemsAreInBothEnteAndYourDevice":
@@ -1783,10 +1783,10 @@ class MessageLookup extends MessageLookupByLibrary {
"storageInGB": m1,
"storageLimitExceeded":
MessageLookupByLibrary.simpleMessage("Límite de datos excedido"),
"storageUsageInfo": m71,
"storageUsageInfo": m72,
"strongStrength": MessageLookupByLibrary.simpleMessage("Segura"),
"subAlreadyLinkedErrMessage": m72,
"subWillBeCancelledOn": m73,
"subAlreadyLinkedErrMessage": m73,
"subWillBeCancelledOn": m74,
"subscribe": MessageLookupByLibrary.simpleMessage("Suscribirse"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Necesitas una suscripción activa de pago para habilitar el compartir."),
@@ -1803,7 +1803,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Sugerir una característica"),
"support": MessageLookupByLibrary.simpleMessage("Soporte"),
"syncProgress": m74,
"syncProgress": m75,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Sincronización detenida"),
"syncing": MessageLookupByLibrary.simpleMessage("Sincronizando..."),
@@ -1814,7 +1814,7 @@ class MessageLookup extends MessageLookupByLibrary {
"tapToUnlock":
MessageLookupByLibrary.simpleMessage("Toca para desbloquear"),
"tapToUpload": MessageLookupByLibrary.simpleMessage("Toca para subir"),
"tapToUploadIsIgnoredDue": m75,
"tapToUploadIsIgnoredDue": m76,
"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"),
@@ -1838,7 +1838,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Estos elementos se eliminarán de tu dispositivo."),
"theyAlsoGetXGb": m76,
"theyAlsoGetXGb": m77,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Se borrarán de todos los álbumes."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@@ -1854,7 +1854,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Este correo electrónico ya está en uso"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Esta imagen no tiene datos exif"),
"thisIsPersonVerificationId": m77,
"thisIsPersonVerificationId": m78,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"Esta es tu ID de verificación"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1878,11 +1878,11 @@ class MessageLookup extends MessageLookupByLibrary {
"total": MessageLookupByLibrary.simpleMessage("total"),
"totalSize": MessageLookupByLibrary.simpleMessage("Tamaño total"),
"trash": MessageLookupByLibrary.simpleMessage("Papelera"),
"trashDaysLeft": m78,
"trashDaysLeft": m79,
"trim": MessageLookupByLibrary.simpleMessage("Ajustar duración"),
"trustedContacts":
MessageLookupByLibrary.simpleMessage("Contactos de confianza"),
"trustedInviteBody": m79,
"trustedInviteBody": m80,
"tryAgain": MessageLookupByLibrary.simpleMessage("Inténtalo de nuevo"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
"Activar la copia de seguridad para subir automáticamente archivos añadidos a la carpeta de este dispositivo a Ente."),
@@ -1900,7 +1900,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Autenticación de doble factor restablecida con éxito"),
"twofactorSetup":
MessageLookupByLibrary.simpleMessage("Configuración de dos pasos"),
"typeOfGallerGallerytypeIsNotSupportedForRename": m80,
"typeOfGallerGallerytypeIsNotSupportedForRename": m81,
"unarchive": MessageLookupByLibrary.simpleMessage("Desarchivar"),
"unarchiveAlbum":
MessageLookupByLibrary.simpleMessage("Desarchivar álbum"),
@@ -1925,10 +1925,10 @@ class MessageLookup extends MessageLookupByLibrary {
"updatingFolderSelection": MessageLookupByLibrary.simpleMessage(
"Actualizando la selección de carpeta..."),
"upgrade": MessageLookupByLibrary.simpleMessage("Mejorar"),
"uploadIsIgnoredDueToIgnorereason": m81,
"uploadIsIgnoredDueToIgnorereason": m82,
"uploadingFilesToAlbum": MessageLookupByLibrary.simpleMessage(
"Subiendo archivos al álbum..."),
"uploadingMultipleMemories": m82,
"uploadingMultipleMemories": m83,
"uploadingSingleMemory":
MessageLookupByLibrary.simpleMessage("Preservando 1 memoria..."),
"upto50OffUntil4thDec": MessageLookupByLibrary.simpleMessage(
@@ -1947,7 +1947,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Usar foto seleccionada"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Espacio usado"),
"validTill": m83,
"validTill": m84,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Verificación fallida, por favor inténtalo de nuevo"),
@@ -1956,7 +1956,7 @@ class MessageLookup extends MessageLookupByLibrary {
"verify": MessageLookupByLibrary.simpleMessage("Verificar"),
"verifyEmail": MessageLookupByLibrary.simpleMessage(
"Verificar correo electrónico"),
"verifyEmailID": m84,
"verifyEmailID": m85,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Verificar"),
"verifyPasskey":
MessageLookupByLibrary.simpleMessage("Verificar clave de acceso"),
@@ -1984,7 +1984,7 @@ class MessageLookup extends MessageLookupByLibrary {
"viewRecoveryKey":
MessageLookupByLibrary.simpleMessage("Ver código de recuperación"),
"viewer": MessageLookupByLibrary.simpleMessage("Espectador"),
"viewersSuccessfullyAdded": m85,
"viewersSuccessfullyAdded": m86,
"visitWebToManage": MessageLookupByLibrary.simpleMessage(
"Por favor, visita web.ente.io para administrar tu suscripción"),
"waitingForVerification":
@@ -2006,7 +2006,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Un contacto de confianza puede ayudar a recuperar sus datos."),
"yearShort": MessageLookupByLibrary.simpleMessage("año"),
"yearly": MessageLookupByLibrary.simpleMessage("Anualmente"),
"yearsAgo": m86,
"yearsAgo": m87,
"yes": MessageLookupByLibrary.simpleMessage(""),
"yesCancel": MessageLookupByLibrary.simpleMessage("Sí, cancelar"),
"yesConvertToViewer":
@@ -2038,7 +2038,7 @@ class MessageLookup extends MessageLookupByLibrary {
"No puedes compartir contigo mismo"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"No tienes ningún elemento archivado."),
"youHaveSuccessfullyFreedUp": m87,
"youHaveSuccessfullyFreedUp": m88,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("Tu cuenta ha sido eliminada"),
"yourMap": MessageLookupByLibrary.simpleMessage("Tu mapa"),

View File

@@ -33,11 +33,11 @@ class MessageLookup extends MessageLookupByLibrary {
static String m55(storeName) => "به ما در ${storeName} امتیاز دهید";
static String m71(
static String m72(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} از ${totalAmount} ${totalStorageUnit} استفاده شده";
static String m84(email) => "تایید ${email}";
static String m85(email) => "تایید ${email}";
static String m2(email) =>
"ما یک ایمیل به <green>${email}</green> ارسال کرده‌ایم";
@@ -368,7 +368,7 @@ class MessageLookup extends MessageLookupByLibrary {
"storageBreakupFamily":
MessageLookupByLibrary.simpleMessage("خانوادگی"),
"storageBreakupYou": MessageLookupByLibrary.simpleMessage("شما"),
"storageUsageInfo": m71,
"storageUsageInfo": m72,
"strongStrength": MessageLookupByLibrary.simpleMessage("قوی"),
"support": MessageLookupByLibrary.simpleMessage("پشتیبانی"),
"systemTheme": MessageLookupByLibrary.simpleMessage("سیستم"),
@@ -409,7 +409,7 @@ class MessageLookup extends MessageLookupByLibrary {
"از کلید بازیابی استفاده کنید"),
"verify": MessageLookupByLibrary.simpleMessage("تایید"),
"verifyEmail": MessageLookupByLibrary.simpleMessage("تایید ایمیل"),
"verifyEmailID": m84,
"verifyEmailID": m85,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("تایید"),
"verifyPassword":
MessageLookupByLibrary.simpleMessage("تایید رمز عبور"),

View File

@@ -185,86 +185,86 @@ class MessageLookup extends MessageLookupByLibrary {
static String m62(count) =>
"${Intl.plural(count, one: '${count} résultat trouvé', other: '${count} résultats trouvés')}";
static String m88(snapshotLength, searchLength) =>
static String m63(snapshotLength, searchLength) =>
"Incompatibilité de longueur des sections : ${snapshotLength} != ${searchLength}";
static String m4(count) => "${count} sélectionné(s)";
static String m63(count, yourCount) =>
static String m64(count, yourCount) =>
"${count} sélectionné(s) (${yourCount} à vous)";
static String m64(verificationID) =>
static String m65(verificationID) =>
"Voici mon ID de vérification : ${verificationID} pour ente.io.";
static String m5(verificationID) =>
"Hé, pouvez-vous confirmer qu\'il s\'agit de votre ID de vérification ente.io : ${verificationID}";
static String m65(referralCode, referralStorageInGB) =>
static String m66(referralCode, referralStorageInGB) =>
"Code de parrainage Ente : ${referralCode} \n\nValidez 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 m66(numberOfPeople) =>
static String m67(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Partagez avec des personnes spécifiques', one: 'Partagé avec 1 personne', other: 'Partagé avec ${numberOfPeople} personnes')}";
static String m67(emailIDs) => "Partagé avec ${emailIDs}";
static String m68(fileType) =>
"Elle ${fileType} sera supprimée de votre appareil.";
static String m68(emailIDs) => "Partagé avec ${emailIDs}";
static String m69(fileType) =>
"Elle ${fileType} sera supprimée de votre appareil.";
static String m70(fileType) =>
"Cette ${fileType} est à la fois sur ente et sur votre appareil.";
static String m70(fileType) => "Cette ${fileType} sera supprimée de l\'Ente.";
static String m71(fileType) => "Cette ${fileType} sera supprimée de l\'Ente.";
static String m1(storageAmountInGB) => "${storageAmountInGB} Go";
static String m71(
static String m72(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} sur ${totalAmount} ${totalStorageUnit} utilisés";
static String m72(id) =>
static String m73(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 m73(endDate) => "Votre abonnement sera annulé le ${endDate}";
static String m74(endDate) => "Votre abonnement sera annulé le ${endDate}";
static String m74(completed, total) =>
static String m75(completed, total) =>
"${completed}/${total} souvenirs conservés";
static String m75(ignoreReason) =>
static String m76(ignoreReason) =>
"Appuyer pour envoyer, l\'envoi est actuellement ignoré en raison de ${ignoreReason}";
static String m76(storageAmountInGB) =>
static String m77(storageAmountInGB) =>
"Ils obtiennent aussi ${storageAmountInGB} Go";
static String m77(email) => "Ceci est l\'ID de vérification de ${email}";
static String m78(email) => "Ceci est l\'ID de vérification de ${email}";
static String m78(count) =>
static String m79(count) =>
"${Intl.plural(count, zero: 'Bientôt', one: '1 jour', other: '${count} jours')}";
static String m79(email) =>
static String m80(email) =>
"Vous avez été invité(e) à être un(e) héritier(e) par ${email}.";
static String m80(galleryType) =>
static String m81(galleryType) =>
"Les galeries de type \'${galleryType}\' ne peuvent être renommées";
static String m81(ignoreReason) =>
static String m82(ignoreReason) =>
"L\'envoi est ignoré en raison de ${ignoreReason}";
static String m82(count) => "Sauvegarde ${count} souvenirs...";
static String m83(count) => "Sauvegarde ${count} souvenirs...";
static String m83(endDate) => "Valable jusqu\'au ${endDate}";
static String m84(endDate) => "Valable jusqu\'au ${endDate}";
static String m84(email) => "Vérifier ${email}";
static String m85(email) => "Vérifier ${email}";
static String m85(count) =>
static String m86(count) =>
"${Intl.plural(count, zero: '0 observateur ajouté', one: '1 observateur ajouté', other: '${count} observateurs ajoutés')}";
static String m2(email) =>
"Nous avons envoyé un e-mail à <green>${email}</green>";
static String m86(count) =>
static String m87(count) =>
"${Intl.plural(count, one: 'il y a ${count} an', other: 'il y a ${count} ans')}";
static String m87(storageSaved) =>
static String m88(storageSaved) =>
"Vous avez libéré ${storageSaved} avec succès !";
final messages = _notInlinedMessages(_notInlinedMessages);
@@ -1642,7 +1642,7 @@ class MessageLookup extends MessageLookupByLibrary {
"searchPersonsEmptySection": MessageLookupByLibrary.simpleMessage(
"Les personnes seront affichées ici une fois le traitement terminé"),
"searchResultCount": m62,
"searchSectionsLengthMismatch": m88,
"searchSectionsLengthMismatch": m63,
"security": MessageLookupByLibrary.simpleMessage("Sécurité"),
"seePublicAlbumLinksInApp": MessageLookupByLibrary.simpleMessage(
"Ouvrir les liens des albums publics dans l\'application"),
@@ -1679,7 +1679,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Les éléments sélectionnés seront supprimés de tous les albums et déplacés dans la corbeille."),
"selectedPhotos": m4,
"selectedPhotosWithYours": m63,
"selectedPhotosWithYours": m64,
"send": MessageLookupByLibrary.simpleMessage("Envoyer"),
"sendEmail": MessageLookupByLibrary.simpleMessage("Envoyer un e-mail"),
"sendInvite":
@@ -1713,16 +1713,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow": MessageLookupByLibrary.simpleMessage(
"Partagez un album maintenant"),
"shareLink": MessageLookupByLibrary.simpleMessage("Partager le lien"),
"shareMyVerificationID": m64,
"shareMyVerificationID": m65,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Partagez uniquement avec les personnes que vous souhaitez"),
"shareTextConfirmOthersVerificationID": m5,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Téléchargez Ente pour pouvoir facilement partager des photos et vidéos en qualité originale\n\nhttps://ente.io"),
"shareTextReferralCode": m65,
"shareTextReferralCode": m66,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Partager avec des utilisateurs non-Ente"),
"shareWithPeopleSectionTitle": m66,
"shareWithPeopleSectionTitle": m67,
"shareYourFirstAlbum": MessageLookupByLibrary.simpleMessage(
"Partagez votre premier album"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1733,7 +1733,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": m67,
"sharedWith": m68,
"sharedWithMe":
MessageLookupByLibrary.simpleMessage("Partagés avec moi"),
"sharedWithYou":
@@ -1751,11 +1751,11 @@ class MessageLookup extends MessageLookupByLibrary {
"Déconnecter les autres appareils"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"J\'accepte les <u-terms>conditions d\'utilisation</u-terms> et la <u-policy>politique de confidentialité</u-policy>"),
"singleFileDeleteFromDevice": m68,
"singleFileDeleteFromDevice": m69,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Elle sera supprimée de tous les albums."),
"singleFileInBothLocalAndRemote": m69,
"singleFileInRemoteOnly": m70,
"singleFileInBothLocalAndRemote": m70,
"singleFileInRemoteOnly": m71,
"skip": MessageLookupByLibrary.simpleMessage("Ignorer"),
"social": MessageLookupByLibrary.simpleMessage("Réseaux sociaux"),
"someItemsAreInBothEnteAndYourDevice":
@@ -1806,10 +1806,10 @@ class MessageLookup extends MessageLookupByLibrary {
"storageInGB": m1,
"storageLimitExceeded":
MessageLookupByLibrary.simpleMessage("Limite de stockage atteinte"),
"storageUsageInfo": m71,
"storageUsageInfo": m72,
"strongStrength": MessageLookupByLibrary.simpleMessage("Forte"),
"subAlreadyLinkedErrMessage": m72,
"subWillBeCancelledOn": m73,
"subAlreadyLinkedErrMessage": m73,
"subWillBeCancelledOn": m74,
"subscribe": MessageLookupByLibrary.simpleMessage("S\'abonner"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Vous avez besoin d\'un abonnement payant actif pour activer le partage."),
@@ -1826,7 +1826,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures": MessageLookupByLibrary.simpleMessage(
"Suggérer des fonctionnalités"),
"support": MessageLookupByLibrary.simpleMessage("Support"),
"syncProgress": m74,
"syncProgress": m75,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Synchronisation arrêtée ?"),
"syncing": MessageLookupByLibrary.simpleMessage(
@@ -1839,7 +1839,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Appuyer pour déverrouiller"),
"tapToUpload":
MessageLookupByLibrary.simpleMessage("Appuyer pour envoyer"),
"tapToUploadIsIgnoredDue": m75,
"tapToUploadIsIgnoredDue": m76,
"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"),
@@ -1863,7 +1863,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Ces éléments seront supprimés de votre appareil."),
"theyAlsoGetXGb": m76,
"theyAlsoGetXGb": m77,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Ils seront supprimés de tous les albums."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@@ -1879,7 +1879,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": m77,
"thisIsPersonVerificationId": m78,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"Ceci est votre ID de vérification"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1903,11 +1903,11 @@ class MessageLookup extends MessageLookupByLibrary {
"total": MessageLookupByLibrary.simpleMessage("total"),
"totalSize": MessageLookupByLibrary.simpleMessage("Taille totale"),
"trash": MessageLookupByLibrary.simpleMessage("Corbeille"),
"trashDaysLeft": m78,
"trashDaysLeft": m79,
"trim": MessageLookupByLibrary.simpleMessage("Recadrer"),
"trustedContacts":
MessageLookupByLibrary.simpleMessage("Contacts de confiance"),
"trustedInviteBody": m79,
"trustedInviteBody": m80,
"tryAgain": MessageLookupByLibrary.simpleMessage("Réessayer"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
"Activez la sauvegarde pour charger automatiquement sur Ente les fichiers ajoutés à ce dossier de l\'appareil."),
@@ -1927,7 +1927,7 @@ class MessageLookup extends MessageLookupByLibrary {
"L\'authentification à deux facteurs a été réinitialisée avec succès "),
"twofactorSetup": MessageLookupByLibrary.simpleMessage(
"Configuration de l\'authentification à deux facteurs"),
"typeOfGallerGallerytypeIsNotSupportedForRename": m80,
"typeOfGallerGallerytypeIsNotSupportedForRename": m81,
"unarchive": MessageLookupByLibrary.simpleMessage("Désarchiver"),
"unarchiveAlbum":
MessageLookupByLibrary.simpleMessage("Désarchiver l\'album"),
@@ -1955,10 +1955,10 @@ class MessageLookup extends MessageLookupByLibrary {
"updatingFolderSelection": MessageLookupByLibrary.simpleMessage(
"Mise à jour de la sélection du dossier..."),
"upgrade": MessageLookupByLibrary.simpleMessage("Améliorer"),
"uploadIsIgnoredDueToIgnorereason": m81,
"uploadIsIgnoredDueToIgnorereason": m82,
"uploadingFilesToAlbum": MessageLookupByLibrary.simpleMessage(
"Envoi des fichiers vers l\'album..."),
"uploadingMultipleMemories": m82,
"uploadingMultipleMemories": m83,
"uploadingSingleMemory":
MessageLookupByLibrary.simpleMessage("Sauvegarde 1 souvenir..."),
"upto50OffUntil4thDec": MessageLookupByLibrary.simpleMessage(
@@ -1976,7 +1976,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto": MessageLookupByLibrary.simpleMessage(
"Utiliser la photo sélectionnée"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Stockage utilisé"),
"validTill": m83,
"validTill": m84,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"La vérification a échouée, veuillez réessayer"),
@@ -1985,7 +1985,7 @@ class MessageLookup extends MessageLookupByLibrary {
"verify": MessageLookupByLibrary.simpleMessage("Vérifier"),
"verifyEmail":
MessageLookupByLibrary.simpleMessage("Vérifier l\'e-mail"),
"verifyEmailID": m84,
"verifyEmailID": m85,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Vérifier"),
"verifyPasskey":
MessageLookupByLibrary.simpleMessage("Vérifier le code d\'accès"),
@@ -2014,7 +2014,7 @@ class MessageLookup extends MessageLookupByLibrary {
"viewRecoveryKey":
MessageLookupByLibrary.simpleMessage("Voir la clé de récupération"),
"viewer": MessageLookupByLibrary.simpleMessage("Observateur"),
"viewersSuccessfullyAdded": m85,
"viewersSuccessfullyAdded": m86,
"visitWebToManage": MessageLookupByLibrary.simpleMessage(
"Veuillez visiter web.ente.io pour gérer votre abonnement"),
"waitingForVerification": MessageLookupByLibrary.simpleMessage(
@@ -2035,7 +2035,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Un contact de confiance peut vous aider à récupérer vos données."),
"yearShort": MessageLookupByLibrary.simpleMessage("an"),
"yearly": MessageLookupByLibrary.simpleMessage("Annuel"),
"yearsAgo": m86,
"yearsAgo": m87,
"yes": MessageLookupByLibrary.simpleMessage("Oui"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Oui, annuler"),
"yesConvertToViewer": MessageLookupByLibrary.simpleMessage(
@@ -2068,7 +2068,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": m87,
"youHaveSuccessfullyFreedUp": m88,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("Votre compte a été supprimé"),
"yourMap": MessageLookupByLibrary.simpleMessage("Votre carte"),

View File

@@ -94,39 +94,39 @@ class MessageLookup extends MessageLookupByLibrary {
static String m4(count) => "${count} נבחרו";
static String m63(count, yourCount) => "${count} נבחרו (${yourCount} שלך)";
static String m64(count, yourCount) => "${count} נבחרו (${yourCount} שלך)";
static String m64(verificationID) =>
static String m65(verificationID) =>
"הנה מזהה האימות שלי: ${verificationID} עבור ente.io.";
static String m5(verificationID) =>
"היי, תוכל לוודא שזה מזהה האימות שלך של ente.io: ${verificationID}";
static String m66(numberOfPeople) =>
static String m67(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'שתף עם אנשים ספציפיים', one: 'שותף עם איש 1', two: 'שותף עם 2 אנשים', other: 'שותף עם ${numberOfPeople} אנשים')}";
static String m67(emailIDs) => "הושתף ע\"י ${emailIDs}";
static String m68(emailIDs) => "הושתף ע\"י ${emailIDs}";
static String m68(fileType) => "${fileType} יימחק מהמכשיר שלך.";
static String m69(fileType) => "${fileType} יימחק מהמכשיר שלך.";
static String m1(storageAmountInGB) => "${storageAmountInGB} GB";
static String m73(endDate) => "המנוי שלך יבוטל ב-${endDate}";
static String m74(endDate) => "המנוי שלך יבוטל ב-${endDate}";
static String m74(completed, total) => "${completed}/${total} זכרונות נשמרו";
static String m75(completed, total) => "${completed}/${total} זכרונות נשמרו";
static String m76(storageAmountInGB) => "הם גם יקבלו ${storageAmountInGB} GB";
static String m77(storageAmountInGB) => "הם גם יקבלו ${storageAmountInGB} GB";
static String m77(email) => "זה מזהה האימות של ${email}";
static String m78(email) => "זה מזהה האימות של ${email}";
static String m84(email) => "אמת ${email}";
static String m85(email) => "אמת ${email}";
static String m2(email) => "שלחנו דוא\"ל ל<green>${email}</green>";
static String m86(count) =>
static String m87(count) =>
"${Intl.plural(count, one: 'לפני ${count} שנה', two: 'לפני ${count} שנים', many: 'לפני ${count} שנים', other: 'לפני ${count} שנים')}";
static String m87(storageSaved) => "הצלחת לפנות ${storageSaved}!";
static String m88(storageSaved) => "הצלחת לפנות ${storageSaved}!";
final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
@@ -751,7 +751,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"התיקיות שנבחרו יוצפנו ויגובו"),
"selectedPhotos": m4,
"selectedPhotosWithYours": m63,
"selectedPhotosWithYours": m64,
"send": MessageLookupByLibrary.simpleMessage("שלח"),
"sendEmail": MessageLookupByLibrary.simpleMessage("שלח דוא\"ל"),
"sendInvite": MessageLookupByLibrary.simpleMessage("שלח הזמנה"),
@@ -770,7 +770,7 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("שתף אלבום עכשיו"),
"shareLink": MessageLookupByLibrary.simpleMessage("שתף קישור"),
"shareMyVerificationID": m64,
"shareMyVerificationID": m65,
"shareOnlyWithThePeopleYouWant":
MessageLookupByLibrary.simpleMessage("שתף רק אם אנשים שאתה בוחר"),
"shareTextConfirmOthersVerificationID": m5,
@@ -778,7 +778,7 @@ class MessageLookup extends MessageLookupByLibrary {
"הורד את ente על מנת שנוכל לשתף תמונות וסרטונים באיכות המקור באופן קל\n\nhttps://ente.io"),
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"שתף עם משתמשים שהם לא של ente"),
"shareWithPeopleSectionTitle": m66,
"shareWithPeopleSectionTitle": m67,
"shareYourFirstAlbum":
MessageLookupByLibrary.simpleMessage("שתף את האלבום הראשון שלך"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -789,13 +789,13 @@ class MessageLookup extends MessageLookupByLibrary {
"sharedPhotoNotificationsExplanation":
MessageLookupByLibrary.simpleMessage(
"קבל התראות כשמישהו מוסיף תמונה לאלבום משותף שאתה חלק ממנו"),
"sharedWith": m67,
"sharedWith": m68,
"sharedWithMe": MessageLookupByLibrary.simpleMessage("שותף איתי"),
"sharing": MessageLookupByLibrary.simpleMessage("משתף..."),
"showMemories": MessageLookupByLibrary.simpleMessage("הצג זכרונות"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"אני מסכים ל<u-terms>תנאי שירות</u-terms> ול<u-policy>מדיניות הפרטיות</u-policy>"),
"singleFileDeleteFromDevice": m68,
"singleFileDeleteFromDevice": m69,
"singleFileDeleteHighlight":
MessageLookupByLibrary.simpleMessage("זה יימחק מכל האלבומים."),
"skip": MessageLookupByLibrary.simpleMessage("דלג"),
@@ -828,14 +828,14 @@ class MessageLookup extends MessageLookupByLibrary {
"storageLimitExceeded":
MessageLookupByLibrary.simpleMessage("גבול מקום האחסון נחרג"),
"strongStrength": MessageLookupByLibrary.simpleMessage("חזקה"),
"subWillBeCancelledOn": m73,
"subWillBeCancelledOn": m74,
"subscribe": MessageLookupByLibrary.simpleMessage("הרשם"),
"subscription": MessageLookupByLibrary.simpleMessage("מנוי"),
"success": MessageLookupByLibrary.simpleMessage("הצלחה"),
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("הציעו מאפיינים"),
"support": MessageLookupByLibrary.simpleMessage("תמיכה"),
"syncProgress": m74,
"syncProgress": m75,
"syncing": MessageLookupByLibrary.simpleMessage("מסנכרן..."),
"systemTheme": MessageLookupByLibrary.simpleMessage("מערכת"),
"tapToCopy": MessageLookupByLibrary.simpleMessage("הקש כדי להעתיק"),
@@ -851,12 +851,12 @@ class MessageLookup extends MessageLookupByLibrary {
"theDownloadCouldNotBeCompleted":
MessageLookupByLibrary.simpleMessage("לא ניתן להשלים את ההורדה"),
"theme": MessageLookupByLibrary.simpleMessage("ערכת נושא"),
"theyAlsoGetXGb": m76,
"theyAlsoGetXGb": m77,
"thisCanBeUsedToRecoverYourAccountIfYou":
MessageLookupByLibrary.simpleMessage(
"זה יכול לשמש לשחזור החשבון שלך במקרה ותאבד את הגורם השני"),
"thisDevice": MessageLookupByLibrary.simpleMessage("מכשיר זה"),
"thisIsPersonVerificationId": m77,
"thisIsPersonVerificationId": m78,
"thisIsYourVerificationId":
MessageLookupByLibrary.simpleMessage("זה מזהה האימות שלך"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -900,7 +900,7 @@ class MessageLookup extends MessageLookupByLibrary {
"verificationId": MessageLookupByLibrary.simpleMessage("מזהה אימות"),
"verify": MessageLookupByLibrary.simpleMessage("אמת"),
"verifyEmail": MessageLookupByLibrary.simpleMessage("אימות דוא\"ל"),
"verifyEmailID": m84,
"verifyEmailID": m85,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("אמת"),
"verifyPassword": MessageLookupByLibrary.simpleMessage("אמת סיסמא"),
"verifyingRecoveryKey":
@@ -921,7 +921,7 @@ class MessageLookup extends MessageLookupByLibrary {
"weakStrength": MessageLookupByLibrary.simpleMessage("חלשה"),
"welcomeBack": MessageLookupByLibrary.simpleMessage("ברוך שובך!"),
"yearly": MessageLookupByLibrary.simpleMessage("שנתי"),
"yearsAgo": m86,
"yearsAgo": m87,
"yes": MessageLookupByLibrary.simpleMessage("כן"),
"yesCancel": MessageLookupByLibrary.simpleMessage("כן, בטל"),
"yesConvertToViewer":
@@ -944,7 +944,7 @@ class MessageLookup extends MessageLookupByLibrary {
"אתה לא יכול לשנמך לתוכנית הזו"),
"youCannotShareWithYourself":
MessageLookupByLibrary.simpleMessage("אתה לא יכול לשתף עם עצמך"),
"youHaveSuccessfullyFreedUp": m87,
"youHaveSuccessfullyFreedUp": m88,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("החשבון שלך נמחק"),
"yourPlanWasSuccessfullyDowngraded":

View File

@@ -148,59 +148,59 @@ class MessageLookup extends MessageLookupByLibrary {
static String m4(count) => "${count} terpilih";
static String m63(count, yourCount) =>
static String m64(count, yourCount) =>
"${count} dipilih (${yourCount} milikmu)";
static String m64(verificationID) =>
static String m65(verificationID) =>
"Ini ID Verifikasi saya di ente.io: ${verificationID}.";
static String m5(verificationID) =>
"Halo, bisakah kamu pastikan bahwa ini adalah ID Verifikasi ente.io milikmu: ${verificationID}";
static String m65(referralCode, referralStorageInGB) =>
static String m66(referralCode, referralStorageInGB) =>
"Kode rujukan Ente: ${referralCode} \n\nTerapkan pada Pengaturan → Umum → Rujukan untuk mendapatkan ${referralStorageInGB} GB gratis setelah kamu mendaftar paket berbayar\n\nhttps://ente.io";
static String m66(numberOfPeople) =>
static String m67(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Bagikan dengan orang tertentu', one: 'Berbagi dengan 1 orang', other: 'Berbagi dengan ${numberOfPeople} orang')}";
static String m67(emailIDs) => "Dibagikan dengan ${emailIDs}";
static String m68(fileType) =>
"${fileType} ini akan dihapus dari perangkat ini.";
static String m68(emailIDs) => "Dibagikan dengan ${emailIDs}";
static String m69(fileType) =>
"${fileType} ini akan dihapus dari perangkat ini.";
static String m70(fileType) =>
"${fileType} ini tersimpan di Ente dan juga di perangkat ini.";
static String m70(fileType) => "${fileType} ini akan dihapus dari Ente.";
static String m71(fileType) => "${fileType} ini akan dihapus dari Ente.";
static String m1(storageAmountInGB) => "${storageAmountInGB} GB";
static String m71(
static String m72(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} dari ${totalAmount} ${totalStorageUnit} terpakai";
static String m72(id) =>
static String m73(id) =>
"${id} kamu telah terhubung dengan akun Ente lain.\nJika kamu ingin menggunakan ${id} kamu untuk akun ini, silahkan hubungi tim bantuan kami";
static String m73(endDate) =>
static String m74(endDate) =>
"Langganan kamu akan dibatalkan pada ${endDate}";
static String m76(storageAmountInGB) =>
static String m77(storageAmountInGB) =>
"Ia juga mendapat ${storageAmountInGB} GB";
static String m77(email) => "Ini adalah ID Verifikasi milik ${email}";
static String m78(email) => "Ini adalah ID Verifikasi milik ${email}";
static String m83(endDate) => "Berlaku hingga ${endDate}";
static String m84(endDate) => "Berlaku hingga ${endDate}";
static String m84(email) => "Verifikasi ${email}";
static String m85(email) => "Verifikasi ${email}";
static String m2(email) =>
"Kami telah mengirimkan email ke <green>${email}</green>";
static String m86(count) =>
static String m87(count) =>
"${Intl.plural(count, other: '${count} tahun lalu')}";
static String m87(storageSaved) =>
static String m88(storageSaved) =>
"Kamu telah berhasil membersihkan ${storageSaved}!";
final messages = _notInlinedMessages(_notInlinedMessages);
@@ -1205,7 +1205,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Item terpilih akan dihapus dari semua album dan dipindahkan ke sampah."),
"selectedPhotos": m4,
"selectedPhotosWithYours": m63,
"selectedPhotosWithYours": m64,
"send": MessageLookupByLibrary.simpleMessage("Kirim"),
"sendEmail": MessageLookupByLibrary.simpleMessage("Kirim email"),
"sendInvite": MessageLookupByLibrary.simpleMessage("Kirim undangan"),
@@ -1226,16 +1226,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Bagikan album sekarang"),
"shareLink": MessageLookupByLibrary.simpleMessage("Bagikan link"),
"shareMyVerificationID": m64,
"shareMyVerificationID": m65,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Bagikan hanya dengan orang yang kamu inginkan"),
"shareTextConfirmOthersVerificationID": m5,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Unduh Ente agar kita bisa berbagi foto dan video kualitas asli dengan mudah\n\nhttps://ente.io"),
"shareTextReferralCode": m65,
"shareTextReferralCode": m66,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Bagikan ke pengguna non-Ente"),
"shareWithPeopleSectionTitle": m66,
"shareWithPeopleSectionTitle": m67,
"shareYourFirstAlbum":
MessageLookupByLibrary.simpleMessage("Bagikan album pertamamu"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1248,7 +1248,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Foto terbagi baru"),
"sharedPhotoNotificationsExplanation": MessageLookupByLibrary.simpleMessage(
"Terima notifikasi apabila seseorang menambahkan foto ke album bersama yang kamu ikuti"),
"sharedWith": m67,
"sharedWith": m68,
"sharedWithMe":
MessageLookupByLibrary.simpleMessage("Dibagikan dengan saya"),
"sharedWithYou":
@@ -1263,11 +1263,11 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Keluar di perangkat lain"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"Saya menyetujui <u-terms>ketentuan layanan</u-terms> dan <u-policy>kebijakan privasi</u-policy> Ente"),
"singleFileDeleteFromDevice": m68,
"singleFileDeleteFromDevice": m69,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Ia akan dihapus dari semua album."),
"singleFileInBothLocalAndRemote": m69,
"singleFileInRemoteOnly": m70,
"singleFileInBothLocalAndRemote": m70,
"singleFileInRemoteOnly": m71,
"skip": MessageLookupByLibrary.simpleMessage("Lewati"),
"social": MessageLookupByLibrary.simpleMessage("Sosial"),
"someItemsAreInBothEnteAndYourDevice":
@@ -1312,10 +1312,10 @@ class MessageLookup extends MessageLookupByLibrary {
"storageInGB": m1,
"storageLimitExceeded": MessageLookupByLibrary.simpleMessage(
"Batas penyimpanan terlampaui"),
"storageUsageInfo": m71,
"storageUsageInfo": m72,
"strongStrength": MessageLookupByLibrary.simpleMessage("Kuat"),
"subAlreadyLinkedErrMessage": m72,
"subWillBeCancelledOn": m73,
"subAlreadyLinkedErrMessage": m73,
"subWillBeCancelledOn": m74,
"subscribe": MessageLookupByLibrary.simpleMessage("Berlangganan"),
"subscription": MessageLookupByLibrary.simpleMessage("Langganan"),
"success": MessageLookupByLibrary.simpleMessage("Berhasil"),
@@ -1355,7 +1355,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Item ini akan dihapus dari perangkat ini."),
"theyAlsoGetXGb": m76,
"theyAlsoGetXGb": m77,
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
"Tindakan ini tidak dapat dibatalkan"),
"thisAlbumAlreadyHDACollaborativeLink":
@@ -1369,7 +1369,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Email ini telah digunakan"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Gambar ini tidak memiliki data exif"),
"thisIsPersonVerificationId": m77,
"thisIsPersonVerificationId": m78,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"Ini adalah ID Verifikasi kamu"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1435,14 +1435,14 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Gunakan kunci pemulihan"),
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Gunakan foto terpilih"),
"validTill": m83,
"validTill": m84,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Verifikasi gagal, silakan coba lagi"),
"verificationId": MessageLookupByLibrary.simpleMessage("ID Verifikasi"),
"verify": MessageLookupByLibrary.simpleMessage("Verifikasi"),
"verifyEmail": MessageLookupByLibrary.simpleMessage("Verifikasi email"),
"verifyEmailID": m84,
"verifyEmailID": m85,
"verifyPasskey":
MessageLookupByLibrary.simpleMessage("Verifikasi passkey"),
"verifyPassword":
@@ -1478,7 +1478,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Selamat datang kembali!"),
"whatsNew": MessageLookupByLibrary.simpleMessage("Hal yang baru"),
"yearly": MessageLookupByLibrary.simpleMessage("Tahunan"),
"yearsAgo": m86,
"yearsAgo": m87,
"yes": MessageLookupByLibrary.simpleMessage("Ya"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Ya, batalkan"),
"yesConvertToViewer":
@@ -1505,7 +1505,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Kamu tidak bisa berbagi dengan dirimu sendiri"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"Kamu tidak memiliki item di arsip."),
"youHaveSuccessfullyFreedUp": m87,
"youHaveSuccessfullyFreedUp": m88,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("Akunmu telah dihapus"),
"yourMap": MessageLookupByLibrary.simpleMessage("Peta kamu"),

View File

@@ -165,63 +165,63 @@ class MessageLookup extends MessageLookupByLibrary {
static String m4(count) => "${count} selezionati";
static String m63(count, yourCount) =>
static String m64(count, yourCount) =>
"${count} selezionato (${yourCount} tuoi)";
static String m64(verificationID) =>
static String m65(verificationID) =>
"Ecco il mio ID di verifica: ${verificationID} per ente.io.";
static String m5(verificationID) =>
"Hey, puoi confermare che questo è il tuo ID di verifica: ${verificationID} su ente.io";
static String m65(referralCode, referralStorageInGB) =>
static String m66(referralCode, referralStorageInGB) =>
"Codice invito Ente: ${referralCode} \n\nInseriscilo in Impostazioni → Generali → Inviti per ottenere ${referralStorageInGB} GB gratis dopo la sottoscrizione a un piano a pagamento\n\nhttps://ente.io";
static String m66(numberOfPeople) =>
static String m67(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Condividi con persone specifiche', one: 'Condividi con una persona', other: 'Condividi con ${numberOfPeople} persone')}";
static String m67(emailIDs) => "Condiviso con ${emailIDs}";
static String m68(fileType) =>
"Questo ${fileType} verrà eliminato dal tuo dispositivo.";
static String m68(emailIDs) => "Condiviso con ${emailIDs}";
static String m69(fileType) =>
"Questo ${fileType} verrà eliminato dal tuo dispositivo.";
static String m70(fileType) =>
"Questo ${fileType} è sia su Ente che sul tuo dispositivo.";
static String m70(fileType) => "Questo ${fileType} verrà eliminato da Ente.";
static String m71(fileType) => "Questo ${fileType} verrà eliminato da Ente.";
static String m1(storageAmountInGB) => "${storageAmountInGB} GB";
static String m71(
static String m72(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} di ${totalAmount} ${totalStorageUnit} utilizzati";
static String m72(id) =>
static String m73(id) =>
"Il tuo ${id} è già collegato a un altro account Ente.\nSe desideri utilizzare il tuo ${id} con questo account, per favore contatta il nostro supporto\'\'";
static String m73(endDate) => "L\'abbonamento verrà cancellato il ${endDate}";
static String m74(endDate) => "L\'abbonamento verrà cancellato il ${endDate}";
static String m74(completed, total) =>
static String m75(completed, total) =>
"${completed}/${total} ricordi conservati";
static String m76(storageAmountInGB) =>
static String m77(storageAmountInGB) =>
"Anche loro riceveranno ${storageAmountInGB} GB";
static String m77(email) => "Questo è l\'ID di verifica di ${email}";
static String m78(email) => "Questo è l\'ID di verifica di ${email}";
static String m82(count) => "Conservando ${count} ricordi...";
static String m83(count) => "Conservando ${count} ricordi...";
static String m83(endDate) => "Valido fino al ${endDate}";
static String m84(endDate) => "Valido fino al ${endDate}";
static String m84(email) => "Verifica ${email}";
static String m85(email) => "Verifica ${email}";
static String m2(email) =>
"Abbiamo inviato una mail a <green>${email}</green>";
static String m86(count) =>
static String m87(count) =>
"${Intl.plural(count, one: '${count} anno fa', other: '${count} anni fa')}";
static String m87(storageSaved) =>
static String m88(storageSaved) =>
"Hai liberato con successo ${storageSaved}!";
final messages = _notInlinedMessages(_notInlinedMessages);
@@ -1504,7 +1504,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Gli elementi selezionati verranno eliminati da tutti gli album e spostati nel cestino."),
"selectedPhotos": m4,
"selectedPhotosWithYours": m63,
"selectedPhotosWithYours": m64,
"send": MessageLookupByLibrary.simpleMessage("Invia"),
"sendEmail": MessageLookupByLibrary.simpleMessage("Invia email"),
"sendInvite": MessageLookupByLibrary.simpleMessage("Invita"),
@@ -1536,16 +1536,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Condividi un album"),
"shareLink": MessageLookupByLibrary.simpleMessage("Condividi link"),
"shareMyVerificationID": m64,
"shareMyVerificationID": m65,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Condividi solo con le persone che vuoi"),
"shareTextConfirmOthersVerificationID": m5,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Scarica Ente in modo da poter facilmente condividere foto e video in qualità originale\n\nhttps://ente.io"),
"shareTextReferralCode": m65,
"shareTextReferralCode": m66,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Condividi con utenti che non hanno un account Ente"),
"shareWithPeopleSectionTitle": m66,
"shareWithPeopleSectionTitle": m67,
"shareYourFirstAlbum": MessageLookupByLibrary.simpleMessage(
"Condividi il tuo primo album"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1556,7 +1556,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": m67,
"sharedWith": m68,
"sharedWithMe":
MessageLookupByLibrary.simpleMessage("Condivisi con me"),
"sharedWithYou":
@@ -1573,11 +1573,11 @@ class MessageLookup extends MessageLookupByLibrary {
"Esci dagli altri dispositivi"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"Accetto i <u-terms>termini di servizio</u-terms> e la <u-policy>politica sulla privacy</u-policy>"),
"singleFileDeleteFromDevice": m68,
"singleFileDeleteFromDevice": m69,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Verrà eliminato da tutti gli album."),
"singleFileInBothLocalAndRemote": m69,
"singleFileInRemoteOnly": m70,
"singleFileInBothLocalAndRemote": m70,
"singleFileInRemoteOnly": m71,
"skip": MessageLookupByLibrary.simpleMessage("Salta"),
"social": MessageLookupByLibrary.simpleMessage("Social"),
"someItemsAreInBothEnteAndYourDevice":
@@ -1627,10 +1627,10 @@ class MessageLookup extends MessageLookupByLibrary {
"storageInGB": m1,
"storageLimitExceeded": MessageLookupByLibrary.simpleMessage(
"Limite d\'archiviazione superato"),
"storageUsageInfo": m71,
"storageUsageInfo": m72,
"strongStrength": MessageLookupByLibrary.simpleMessage("Forte"),
"subAlreadyLinkedErrMessage": m72,
"subWillBeCancelledOn": m73,
"subAlreadyLinkedErrMessage": m73,
"subWillBeCancelledOn": m74,
"subscribe": MessageLookupByLibrary.simpleMessage("Iscriviti"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"È necessario un abbonamento a pagamento attivo per abilitare la condivisione."),
@@ -1647,7 +1647,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Suggerisci una funzionalità"),
"support": MessageLookupByLibrary.simpleMessage("Assistenza"),
"syncProgress": m74,
"syncProgress": m75,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Sincronizzazione interrotta"),
"syncing": MessageLookupByLibrary.simpleMessage(
@@ -1680,7 +1680,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Questi file verranno eliminati dal tuo dispositivo."),
"theyAlsoGetXGb": m76,
"theyAlsoGetXGb": m77,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Verranno eliminati da tutti gli album."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@@ -1697,7 +1697,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Questo indirizzo email è già registrato"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Questa immagine non ha dati EXIF"),
"thisIsPersonVerificationId": m77,
"thisIsPersonVerificationId": m78,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"Questo è il tuo ID di verifica"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1769,7 +1769,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Acquista altro spazio"),
"uploadingFilesToAlbum": MessageLookupByLibrary.simpleMessage(
"Caricamento dei file nell\'album..."),
"uploadingMultipleMemories": m82,
"uploadingMultipleMemories": m83,
"uploadingSingleMemory":
MessageLookupByLibrary.simpleMessage("Conservando 1 ricordo..."),
"upto50OffUntil4thDec": MessageLookupByLibrary.simpleMessage(
@@ -1786,7 +1786,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Usa la foto selezionata"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Spazio utilizzato"),
"validTill": m83,
"validTill": m84,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Verifica fallita, per favore prova di nuovo"),
@@ -1794,7 +1794,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("ID di verifica"),
"verify": MessageLookupByLibrary.simpleMessage("Verifica"),
"verifyEmail": MessageLookupByLibrary.simpleMessage("Verifica email"),
"verifyEmailID": m84,
"verifyEmailID": m85,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Verifica"),
"verifyPasskey":
MessageLookupByLibrary.simpleMessage("Verifica passkey"),
@@ -1839,7 +1839,7 @@ class MessageLookup extends MessageLookupByLibrary {
"whatsNew": MessageLookupByLibrary.simpleMessage("Novità"),
"yearShort": MessageLookupByLibrary.simpleMessage("anno"),
"yearly": MessageLookupByLibrary.simpleMessage("Annuale"),
"yearsAgo": m86,
"yearsAgo": m87,
"yes": MessageLookupByLibrary.simpleMessage("Si"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Sì, cancella"),
"yesConvertToViewer": MessageLookupByLibrary.simpleMessage(
@@ -1871,7 +1871,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Non puoi condividere con te stesso"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"Non hai nulla di archiviato."),
"youHaveSuccessfullyFreedUp": m87,
"youHaveSuccessfullyFreedUp": m88,
"yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
"Il tuo account è stato eliminato"),
"yourMap": MessageLookupByLibrary.simpleMessage("La tua mappa"),

View File

@@ -158,56 +158,56 @@ class MessageLookup extends MessageLookupByLibrary {
static String m4(count) => "${count} 個を選択";
static String m63(count, yourCount) => "${count} 個選択中(${yourCount} あなた)";
static String m64(count, yourCount) => "${count} 個選択中(${yourCount} あなた)";
static String m64(verificationID) => "私の確認ID: ente.ioの ${verificationID}";
static String m65(verificationID) => "私の確認ID: ente.ioの ${verificationID}";
static String m5(verificationID) =>
"これがあなたのente.io確認用IDであることを確認できますか ${verificationID}";
static String m65(referralCode, referralStorageInGB) =>
static String m66(referralCode, referralStorageInGB) =>
"リフェラルコード: ${referralCode}\n\n設定→一般→リフェラルで使うことで${referralStorageInGB}が無料になります(あなたが有料プランに加入したあと)。\n\nhttps://ente.io";
static String m66(numberOfPeople) =>
static String m67(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: '誰かと共有しましょう', one: '1人と共有されています', other: '${numberOfPeople} 人と共有されています')}";
static String m67(emailIDs) => "${emailIDs} と共有中";
static String m68(emailIDs) => "${emailIDs} と共有中";
static String m68(fileType) => "${fileType} はEnteから削除されます。";
static String m69(fileType) => "${fileType} はEnteから削除されます。";
static String m69(fileType) => "この ${fileType} はEnteとお使いのデバイスの両方にあります。";
static String m70(fileType) => "この ${fileType} はEnteとお使いのデバイスの両方にあります。";
static String m70(fileType) => "${fileType} はEnteから削除されます。";
static String m71(fileType) => "${fileType} はEnteから削除されます。";
static String m1(storageAmountInGB) => "${storageAmountInGB} GB";
static String m71(
static String m72(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} / ${totalAmount} ${totalStorageUnit} 使用";
static String m72(id) =>
static String m73(id) =>
"あなたの ${id} はすでに別のEnteアカウントにリンクされています。\nこのアカウントであなたの ${id} を使用したい場合は、サポートにお問い合わせください。";
static String m73(endDate) => "サブスクリプションは ${endDate} でキャンセルされます";
static String m74(endDate) => "サブスクリプションは ${endDate} でキャンセルされます";
static String m74(completed, total) => "${completed}/${total} のメモリが保存されました";
static String m75(completed, total) => "${completed}/${total} のメモリが保存されました";
static String m76(storageAmountInGB) => "紹介者も ${storageAmountInGB} GB を得ます";
static String m77(storageAmountInGB) => "紹介者も ${storageAmountInGB} GB を得ます";
static String m77(email) => "これは ${email} の確認用ID";
static String m78(email) => "これは ${email} の確認用ID";
static String m82(count) => "${count} メモリを保存しています...";
static String m83(count) => "${count} メモリを保存しています...";
static String m83(endDate) => "${endDate} まで";
static String m84(endDate) => "${endDate} まで";
static String m84(email) => "${email} を確認";
static String m85(email) => "${email} を確認";
static String m2(email) => "<green>${email}</green>にメールを送りました";
static String m86(count) =>
static String m87(count) =>
"${Intl.plural(count, one: '${count} 年前', other: '${count} 年前')}";
static String m87(storageSaved) => "${storageSaved} を解放しました";
static String m88(storageSaved) => "${storageSaved} を解放しました";
final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
@@ -1256,7 +1256,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"選択したアイテムはすべてのアルバムから削除され、ゴミ箱に移動されます。"),
"selectedPhotos": m4,
"selectedPhotosWithYours": m63,
"selectedPhotosWithYours": m64,
"send": MessageLookupByLibrary.simpleMessage("送信"),
"sendEmail": MessageLookupByLibrary.simpleMessage("メールを送信する"),
"sendInvite": MessageLookupByLibrary.simpleMessage("招待を送る"),
@@ -1278,16 +1278,16 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("アルバムを開いて右上のシェアボタンをタップ"),
"shareAnAlbumNow": MessageLookupByLibrary.simpleMessage("アルバムを共有"),
"shareLink": MessageLookupByLibrary.simpleMessage("リンクの共有"),
"shareMyVerificationID": m64,
"shareMyVerificationID": m65,
"shareOnlyWithThePeopleYouWant":
MessageLookupByLibrary.simpleMessage("選んだ人と共有します"),
"shareTextConfirmOthersVerificationID": m5,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Enteをダウンロードして、写真や動画の共有を簡単に\n\nhttps://ente.io"),
"shareTextReferralCode": m65,
"shareTextReferralCode": m66,
"shareWithNonenteUsers":
MessageLookupByLibrary.simpleMessage("Enteを使っていない人に共有"),
"shareWithPeopleSectionTitle": m66,
"shareWithPeopleSectionTitle": m67,
"shareYourFirstAlbum":
MessageLookupByLibrary.simpleMessage("アルバムの共有をしてみましょう"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1298,7 +1298,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("新しい共有写真"),
"sharedPhotoNotificationsExplanation":
MessageLookupByLibrary.simpleMessage("誰かが写真を共有アルバムに追加した時に通知を受け取る"),
"sharedWith": m67,
"sharedWith": m68,
"sharedWithMe": MessageLookupByLibrary.simpleMessage("あなたと共有されたアルバム"),
"sharedWithYou": MessageLookupByLibrary.simpleMessage("あなたと共有されています"),
"sharing": MessageLookupByLibrary.simpleMessage("共有中..."),
@@ -1312,11 +1312,11 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("他のデバイスからサインアウトする"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"<u-terms>利用規約</u-terms>と<u-policy>プライバシーポリシー</u-policy>に同意します"),
"singleFileDeleteFromDevice": m68,
"singleFileDeleteFromDevice": m69,
"singleFileDeleteHighlight":
MessageLookupByLibrary.simpleMessage("全てのアルバムから削除されます。"),
"singleFileInBothLocalAndRemote": m69,
"singleFileInRemoteOnly": m70,
"singleFileInBothLocalAndRemote": m70,
"singleFileInRemoteOnly": m71,
"skip": MessageLookupByLibrary.simpleMessage("スキップ"),
"social": MessageLookupByLibrary.simpleMessage("SNS"),
"someItemsAreInBothEnteAndYourDevice":
@@ -1357,10 +1357,10 @@ class MessageLookup extends MessageLookupByLibrary {
"storageInGB": m1,
"storageLimitExceeded":
MessageLookupByLibrary.simpleMessage("ストレージの上限を超えました"),
"storageUsageInfo": m71,
"storageUsageInfo": m72,
"strongStrength": MessageLookupByLibrary.simpleMessage("強いパスワード"),
"subAlreadyLinkedErrMessage": m72,
"subWillBeCancelledOn": m73,
"subAlreadyLinkedErrMessage": m73,
"subWillBeCancelledOn": m74,
"subscribe": MessageLookupByLibrary.simpleMessage("サブスクライブ"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"共有を有効にするには、有料サブスクリプションが必要です。"),
@@ -1374,7 +1374,7 @@ class MessageLookup extends MessageLookupByLibrary {
"successfullyUnhid": MessageLookupByLibrary.simpleMessage("非表示を解除しました"),
"suggestFeatures": MessageLookupByLibrary.simpleMessage("機能を提案"),
"support": MessageLookupByLibrary.simpleMessage("サポート"),
"syncProgress": m74,
"syncProgress": m75,
"syncStopped": MessageLookupByLibrary.simpleMessage("同期が停止しました"),
"syncing": MessageLookupByLibrary.simpleMessage("同期中..."),
"systemTheme": MessageLookupByLibrary.simpleMessage("システム"),
@@ -1397,7 +1397,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theme": MessageLookupByLibrary.simpleMessage("テーマ"),
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage("これらの項目はデバイスから削除されます。"),
"theyAlsoGetXGb": m76,
"theyAlsoGetXGb": m77,
"theyWillBeDeletedFromAllAlbums":
MessageLookupByLibrary.simpleMessage("全てのアルバムから削除されます。"),
"thisActionCannotBeUndone":
@@ -1413,7 +1413,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("このメールアドレスはすでに使用されています。"),
"thisImageHasNoExifData":
MessageLookupByLibrary.simpleMessage("この画像にEXIFデータはありません"),
"thisIsPersonVerificationId": m77,
"thisIsPersonVerificationId": m78,
"thisIsYourVerificationId":
MessageLookupByLibrary.simpleMessage("これはあなたの認証IDです"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1472,7 +1472,7 @@ class MessageLookup extends MessageLookupByLibrary {
"upgrade": MessageLookupByLibrary.simpleMessage("アップグレード"),
"uploadingFilesToAlbum":
MessageLookupByLibrary.simpleMessage("アルバムにファイルをアップロード中"),
"uploadingMultipleMemories": m82,
"uploadingMultipleMemories": m83,
"uploadingSingleMemory":
MessageLookupByLibrary.simpleMessage("1メモリを保存しています..."),
"upto50OffUntil4thDec":
@@ -1486,13 +1486,13 @@ class MessageLookup extends MessageLookupByLibrary {
"useRecoveryKey": MessageLookupByLibrary.simpleMessage("リカバリーキーを使用"),
"useSelectedPhoto": MessageLookupByLibrary.simpleMessage("選択した写真を使用"),
"usedSpace": MessageLookupByLibrary.simpleMessage("使用済み領域"),
"validTill": m83,
"validTill": m84,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage("確認に失敗しました、再試行してください"),
"verificationId": MessageLookupByLibrary.simpleMessage("確認用ID"),
"verify": MessageLookupByLibrary.simpleMessage("確認"),
"verifyEmail": MessageLookupByLibrary.simpleMessage("Eメールの確認"),
"verifyEmailID": m84,
"verifyEmailID": m85,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("確認"),
"verifyPasskey": MessageLookupByLibrary.simpleMessage("パスキーを確認"),
"verifyPassword": MessageLookupByLibrary.simpleMessage("パスワードの確認"),
@@ -1529,7 +1529,7 @@ class MessageLookup extends MessageLookupByLibrary {
"welcomeBack": MessageLookupByLibrary.simpleMessage("おかえりなさい!"),
"whatsNew": MessageLookupByLibrary.simpleMessage("最新情報"),
"yearly": MessageLookupByLibrary.simpleMessage("年額"),
"yearsAgo": m86,
"yearsAgo": m87,
"yes": MessageLookupByLibrary.simpleMessage("はい"),
"yesCancel": MessageLookupByLibrary.simpleMessage("キャンセル"),
"yesConvertToViewer":
@@ -1557,7 +1557,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("自分自身と共有することはできません"),
"youDontHaveAnyArchivedItems":
MessageLookupByLibrary.simpleMessage("アーカイブした項目はありません"),
"youHaveSuccessfullyFreedUp": m87,
"youHaveSuccessfullyFreedUp": m88,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("アカウントは削除されました"),
"yourMap": MessageLookupByLibrary.simpleMessage("あなたの地図"),

View File

@@ -122,66 +122,66 @@ class MessageLookup extends MessageLookupByLibrary {
static String m62(count) =>
"${Intl.plural(count, one: 'Rastas ${count} rezultatas', few: 'Rasti ${count} rezultatai', many: 'Rasta ${count} rezultato', other: 'Rasta ${count} rezultatų')}";
static String m88(snapshotLength, searchLength) =>
static String m63(snapshotLength, searchLength) =>
"Sekcijų ilgio neatitikimas: ${snapshotLength} != ${searchLength}";
static String m4(count) => "${count} pasirinkta";
static String m63(count, yourCount) =>
static String m64(count, yourCount) =>
"${count} pasirinkta (${yourCount} jūsų)";
static String m64(verificationID) =>
static String m65(verificationID) =>
"Štai mano patvirtinimo ID: ${verificationID}, skirta ente.io.";
static String m5(verificationID) =>
"Ei, ar galite patvirtinti, kad tai yra jūsų ente.io patvirtinimo ID: ${verificationID}";
static String m65(referralCode, referralStorageInGB) =>
static String m66(referralCode, referralStorageInGB) =>
"„Ente“ rekomendacijos kodas: ${referralCode} \n\nTaikykite jį per Nustatymai → Bendrieji → Rekomendacijos, kad gautumėte ${referralStorageInGB} GB nemokamai po to, kai užsiregistruosite mokamam planui.\n\nhttps://ente.io";
static String m66(numberOfPeople) =>
static String m67(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Bendrinti su konkrečiais asmenimis', one: 'Bendrinta su 1 asmeniu', other: 'Bendrinta su ${numberOfPeople} asmenimis')}";
static String m69(fileType) =>
static String m70(fileType) =>
"Šis ${fileType} yra ir saugykloje „Ente“ bei įrenginyje.";
static String m70(fileType) => "Šis ${fileType} bus ištrintas iš „Ente“.";
static String m71(fileType) => "Šis ${fileType} bus ištrintas iš „Ente“.";
static String m1(storageAmountInGB) => "${storageAmountInGB} GB";
static String m72(id) =>
static String m73(id) =>
"Jūsų ${id} jau susietas su kita „Ente“ paskyra.\nJei norite naudoti savo ${id} su šia paskyra, susisiekite su mūsų palaikymo komanda.";
static String m74(completed, total) =>
static String m75(completed, total) =>
"${completed} / ${total} išsaugomi prisiminimai";
static String m75(ignoreReason) =>
static String m76(ignoreReason) =>
"Palieskite, kad įkeltumėte. Įkėlimas šiuo metu ignoruojamas dėl ${ignoreReason}.";
static String m77(email) => "Tai ${email} patvirtinimo ID";
static String m78(email) => "Tai ${email} patvirtinimo ID";
static String m78(count) =>
static String m79(count) =>
"${Intl.plural(count, zero: 'Netrukus', one: '1 diena', other: '${count} dienų')}";
static String m79(email) =>
static String m80(email) =>
"Buvote pakviesti tapti ${email} palikimo kontaktu.";
static String m80(galleryType) =>
static String m81(galleryType) =>
"Galerijos tipas ${galleryType} nepalaikomas pervadinimui.";
static String m81(ignoreReason) =>
static String m82(ignoreReason) =>
"Įkėlimas ignoruojamas dėl ${ignoreReason}.";
static String m83(endDate) => "Galioja iki ${endDate}";
static String m84(endDate) => "Galioja iki ${endDate}";
static String m84(email) => "Patvirtinti ${email}";
static String m85(email) => "Patvirtinti ${email}";
static String m85(count) =>
static String m86(count) =>
"${Intl.plural(count, zero: 'Pridėta 0 žiūrėtojų', one: 'Pridėtas 1 žiūrėtojas', other: 'Pridėta ${count} žiūrėtojų')}";
static String m2(email) => "Išsiuntėme laišką adresu <green>${email}</green>";
static String m86(count) =>
static String m87(count) =>
"${Intl.plural(count, one: 'prieš ${count} metus', few: 'prieš ${count} metus', many: 'prieš ${count} metų', other: 'prieš ${count} metų')}";
final messages = _notInlinedMessages(_notInlinedMessages);
@@ -1236,7 +1236,7 @@ class MessageLookup extends MessageLookupByLibrary {
"searchPersonsEmptySection": MessageLookupByLibrary.simpleMessage(
"Asmenys bus rodomi čia, kai bus užbaigtas apdorojimas ir sinchronizavimas."),
"searchResultCount": m62,
"searchSectionsLengthMismatch": m88,
"searchSectionsLengthMismatch": m63,
"security": MessageLookupByLibrary.simpleMessage("Saugumas"),
"seePublicAlbumLinksInApp": MessageLookupByLibrary.simpleMessage(
"Žiūrėti viešų albumų nuorodas programoje"),
@@ -1264,7 +1264,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Pasirinkti aplankai bus užšifruoti ir sukurtos atsarginės kopijos."),
"selectedPhotos": m4,
"selectedPhotosWithYours": m63,
"selectedPhotosWithYours": m64,
"send": MessageLookupByLibrary.simpleMessage("Siųsti"),
"sendEmail": MessageLookupByLibrary.simpleMessage("Siųsti el. laišką"),
"sendInvite": MessageLookupByLibrary.simpleMessage("Siųsti kvietimą"),
@@ -1295,16 +1295,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Bendrinti albumą dabar"),
"shareLink": MessageLookupByLibrary.simpleMessage("Bendrinti nuorodą"),
"shareMyVerificationID": m64,
"shareMyVerificationID": m65,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Bendrinkite tik su tais asmenimis, su kuriais norite"),
"shareTextConfirmOthersVerificationID": m5,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Atsisiųskite „Ente“, kad galėtume lengvai bendrinti originalios kokybės nuotraukas ir vaizdo įrašus.\n\nhttps://ente.io"),
"shareTextReferralCode": m65,
"shareTextReferralCode": m66,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Bendrinkite su ne „Ente“ naudotojais."),
"shareWithPeopleSectionTitle": m66,
"shareWithPeopleSectionTitle": m67,
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
"Sukurkite bendrinamus ir bendradarbiaujamus albumus su kitais „Ente“ naudotojais, įskaitant naudotojus nemokamuose planuose."),
"sharedByYou":
@@ -1325,8 +1325,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Jei manote, kad kas nors gali žinoti jūsų slaptažodį, galite priverstinai atsijungti iš visų kitų įrenginių, naudojančių jūsų paskyrą."),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"Sutinku su <u-terms>paslaugų sąlygomis</u-terms> ir <u-policy> privatumo politika</u-policy>"),
"singleFileInBothLocalAndRemote": m69,
"singleFileInRemoteOnly": m70,
"singleFileInBothLocalAndRemote": m70,
"singleFileInRemoteOnly": m71,
"skip": MessageLookupByLibrary.simpleMessage("Praleisti"),
"social": MessageLookupByLibrary.simpleMessage("Socialinės"),
"someoneSharingAlbumsWithYouShouldSeeTheSameId":
@@ -1365,7 +1365,7 @@ class MessageLookup extends MessageLookupByLibrary {
"storageLimitExceeded":
MessageLookupByLibrary.simpleMessage("Viršyta saugyklos riba."),
"strongStrength": MessageLookupByLibrary.simpleMessage("Stipri"),
"subAlreadyLinkedErrMessage": m72,
"subAlreadyLinkedErrMessage": m73,
"subscribe": MessageLookupByLibrary.simpleMessage("Prenumeruoti"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Kad įjungtumėte bendrinimą, reikia aktyvios mokamos prenumeratos."),
@@ -1378,7 +1378,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Siūlyti funkcijas"),
"support": MessageLookupByLibrary.simpleMessage("Palaikymas"),
"syncProgress": m74,
"syncProgress": m75,
"syncStopped": MessageLookupByLibrary.simpleMessage(
"Sinchronizavimas sustabdytas"),
"syncing": MessageLookupByLibrary.simpleMessage("Sinchronizuojama..."),
@@ -1391,7 +1391,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Palieskite, kad atrakintumėte"),
"tapToUpload":
MessageLookupByLibrary.simpleMessage("Palieskite, kad įkeltumėte"),
"tapToUploadIsIgnoredDue": m75,
"tapToUploadIsIgnoredDue": m76,
"tempErrorContactSupportIfPersists": MessageLookupByLibrary.simpleMessage(
"Atrodo, kad kažkas nutiko ne taip. Bandykite dar kartą po kurio laiko. Jei klaida tęsiasi, susisiekite su mūsų palaikymo komanda."),
"terminate": MessageLookupByLibrary.simpleMessage("Baigti"),
@@ -1415,7 +1415,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Šis el. paštas jau naudojamas."),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Šis vaizdas neturi Exif duomenų"),
"thisIsPersonVerificationId": m77,
"thisIsPersonVerificationId": m78,
"thisIsYourVerificationId":
MessageLookupByLibrary.simpleMessage("Tai jūsų patvirtinimo ID"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1437,11 +1437,11 @@ class MessageLookup extends MessageLookupByLibrary {
"Per daug neteisingų bandymų."),
"total": MessageLookupByLibrary.simpleMessage("iš viso"),
"trash": MessageLookupByLibrary.simpleMessage("Šiukšlinė"),
"trashDaysLeft": m78,
"trashDaysLeft": m79,
"trim": MessageLookupByLibrary.simpleMessage("Trumpinti"),
"trustedContacts":
MessageLookupByLibrary.simpleMessage("Patikimi kontaktai"),
"trustedInviteBody": m79,
"trustedInviteBody": m80,
"tryAgain": MessageLookupByLibrary.simpleMessage("Bandyti dar kartą"),
"twitter": MessageLookupByLibrary.simpleMessage("„Twitter“"),
"twoMonthsFreeOnYearlyPlans": MessageLookupByLibrary.simpleMessage(
@@ -1453,7 +1453,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Dvigubas tapatybės nustatymas"),
"twofactorSetup": MessageLookupByLibrary.simpleMessage(
"Dvigubo tapatybės nustatymo sąranka"),
"typeOfGallerGallerytypeIsNotSupportedForRename": m80,
"typeOfGallerGallerytypeIsNotSupportedForRename": m81,
"unarchive": MessageLookupByLibrary.simpleMessage("Išarchyvuoti"),
"unarchiveAlbum":
MessageLookupByLibrary.simpleMessage("Išarchyvuoti albumą"),
@@ -1469,7 +1469,7 @@ class MessageLookup extends MessageLookupByLibrary {
"updatingFolderSelection": MessageLookupByLibrary.simpleMessage(
"Atnaujinamas aplankų pasirinkimas..."),
"upgrade": MessageLookupByLibrary.simpleMessage("Keisti planą"),
"uploadIsIgnoredDueToIgnorereason": m81,
"uploadIsIgnoredDueToIgnorereason": m82,
"upto50OffUntil4thDec": MessageLookupByLibrary.simpleMessage(
"Iki 50% nuolaida, gruodžio 4 d."),
"usableReferralStorageInfo": MessageLookupByLibrary.simpleMessage(
@@ -1483,7 +1483,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useRecoveryKey":
MessageLookupByLibrary.simpleMessage("Naudoti atkūrimo raktą"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Naudojama vieta"),
"validTill": m83,
"validTill": m84,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Patvirtinimas nepavyko. Bandykite dar kartą."),
@@ -1492,7 +1492,7 @@ class MessageLookup extends MessageLookupByLibrary {
"verify": MessageLookupByLibrary.simpleMessage("Patvirtinti"),
"verifyEmail":
MessageLookupByLibrary.simpleMessage("Patvirtinti el. paštą"),
"verifyEmailID": m84,
"verifyEmailID": m85,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Patvirtinti"),
"verifyPasskey":
MessageLookupByLibrary.simpleMessage("Patvirtinti slaptaraktį"),
@@ -1512,7 +1512,7 @@ class MessageLookup extends MessageLookupByLibrary {
"viewRecoveryKey":
MessageLookupByLibrary.simpleMessage("Peržiūrėti atkūrimo raktą"),
"viewer": MessageLookupByLibrary.simpleMessage("Žiūrėtojas"),
"viewersSuccessfullyAdded": m85,
"viewersSuccessfullyAdded": m86,
"visitWebToManage": MessageLookupByLibrary.simpleMessage(
"Aplankykite web.ente.io, kad tvarkytumėte savo prenumeratą"),
"waitingForVerification":
@@ -1531,7 +1531,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Patikimas kontaktas gali padėti atkurti jūsų duomenis."),
"yearShort": MessageLookupByLibrary.simpleMessage("m."),
"yearly": MessageLookupByLibrary.simpleMessage("Metinis"),
"yearsAgo": m86,
"yearsAgo": m87,
"yes": MessageLookupByLibrary.simpleMessage("Taip"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Taip, atsisakyti"),
"yesConvertToViewer":

View File

@@ -187,82 +187,82 @@ class MessageLookup extends MessageLookupByLibrary {
static String m4(count) => "${count} geselecteerd";
static String m63(count, yourCount) =>
static String m64(count, yourCount) =>
"${count} geselecteerd (${yourCount} van jou)";
static String m64(verificationID) =>
static String m65(verificationID) =>
"Hier is mijn verificatie-ID: ${verificationID} voor ente.io.";
static String m5(verificationID) =>
"Hey, kunt u bevestigen dat dit uw ente.io verificatie-ID is: ${verificationID}";
static String m65(referralCode, referralStorageInGB) =>
static String m66(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 m66(numberOfPeople) =>
static String m67(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Deel met specifieke mensen', one: 'Gedeeld met 1 persoon', other: 'Gedeeld met ${numberOfPeople} mensen')}";
static String m67(emailIDs) => "Gedeeld met ${emailIDs}";
static String m68(fileType) =>
"Deze ${fileType} zal worden verwijderd van jouw apparaat.";
static String m68(emailIDs) => "Gedeeld met ${emailIDs}";
static String m69(fileType) =>
"Deze ${fileType} staat zowel in Ente als op jouw apparaat.";
"Deze ${fileType} zal worden verwijderd van jouw apparaat.";
static String m70(fileType) =>
"Deze ${fileType} staat zowel in Ente als op jouw apparaat.";
static String m71(fileType) =>
"Deze ${fileType} zal worden verwijderd uit Ente.";
static String m1(storageAmountInGB) => "${storageAmountInGB} GB";
static String m71(
static String m72(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} van ${totalAmount} ${totalStorageUnit} gebruikt";
static String m72(id) =>
static String m73(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 m73(endDate) => "Uw abonnement loopt af op ${endDate}";
static String m74(endDate) => "Uw abonnement loopt af op ${endDate}";
static String m74(completed, total) =>
static String m75(completed, total) =>
"${completed}/${total} herinneringen bewaard";
static String m75(ignoreReason) =>
static String m76(ignoreReason) =>
"Tik om te uploaden, upload wordt momenteel genegeerd vanwege ${ignoreReason}";
static String m76(storageAmountInGB) =>
static String m77(storageAmountInGB) =>
"Zij krijgen ook ${storageAmountInGB} GB";
static String m77(email) => "Dit is de verificatie-ID van ${email}";
static String m78(email) => "Dit is de verificatie-ID van ${email}";
static String m78(count) =>
static String m79(count) =>
"${Intl.plural(count, zero: 'Binnenkort', one: '1 dag', other: '${count} dagen')}";
static String m79(email) =>
static String m80(email) =>
"Je bent uitgenodigd om een legacy contact van ${email} te zijn.";
static String m80(galleryType) =>
static String m81(galleryType) =>
"Galerijtype ${galleryType} wordt niet ondersteund voor hernoemen";
static String m81(ignoreReason) =>
static String m82(ignoreReason) =>
"Upload wordt genegeerd omdat ${ignoreReason}";
static String m82(count) => "${count} herinneringen veiligstellen...";
static String m83(count) => "${count} herinneringen veiligstellen...";
static String m83(endDate) => "Geldig tot ${endDate}";
static String m84(endDate) => "Geldig tot ${endDate}";
static String m84(email) => "Verifieer ${email}";
static String m85(email) => "Verifieer ${email}";
static String m85(count) =>
static String m86(count) =>
"${Intl.plural(count, zero: '0 kijkers toegevoegd', one: '1 kijker toegevoegd', other: '${count} kijkers toegevoegd')}";
static String m2(email) =>
"We hebben een e-mail gestuurd naar <green>${email}</green>";
static String m86(count) =>
static String m87(count) =>
"${Intl.plural(count, one: '${count} jaar geleden', other: '${count} jaar geleden')}";
static String m87(storageSaved) =>
static String m88(storageSaved) =>
"Je hebt ${storageSaved} succesvol vrijgemaakt!";
final messages = _notInlinedMessages(_notInlinedMessages);
@@ -1628,7 +1628,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Geselecteerde bestanden worden verwijderd uit alle albums en verplaatst naar de prullenbak."),
"selectedPhotos": m4,
"selectedPhotosWithYours": m63,
"selectedPhotosWithYours": m64,
"send": MessageLookupByLibrary.simpleMessage("Verzenden"),
"sendEmail": MessageLookupByLibrary.simpleMessage("E-mail versturen"),
"sendInvite":
@@ -1660,16 +1660,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Deel nu een album"),
"shareLink": MessageLookupByLibrary.simpleMessage("Link delen"),
"shareMyVerificationID": m64,
"shareMyVerificationID": m65,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Deel alleen met de mensen die u wilt"),
"shareTextConfirmOthersVerificationID": m5,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Download Ente zodat we gemakkelijk foto\'s en video\'s in originele kwaliteit kunnen delen\n\nhttps://ente.io"),
"shareTextReferralCode": m65,
"shareTextReferralCode": m66,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Delen met niet-Ente gebruikers"),
"shareWithPeopleSectionTitle": m66,
"shareWithPeopleSectionTitle": m67,
"shareYourFirstAlbum":
MessageLookupByLibrary.simpleMessage("Deel jouw eerste album"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1680,7 +1680,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": m67,
"sharedWith": m68,
"sharedWithMe": MessageLookupByLibrary.simpleMessage("Gedeeld met mij"),
"sharedWithYou":
MessageLookupByLibrary.simpleMessage("Gedeeld met jou"),
@@ -1696,11 +1696,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": m68,
"singleFileDeleteFromDevice": m69,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Het wordt uit alle albums verwijderd."),
"singleFileInBothLocalAndRemote": m69,
"singleFileInRemoteOnly": m70,
"singleFileInBothLocalAndRemote": m70,
"singleFileInRemoteOnly": m71,
"skip": MessageLookupByLibrary.simpleMessage("Overslaan"),
"social": MessageLookupByLibrary.simpleMessage("Sociale media"),
"someItemsAreInBothEnteAndYourDevice": MessageLookupByLibrary.simpleMessage(
@@ -1748,10 +1748,10 @@ class MessageLookup extends MessageLookupByLibrary {
"storageInGB": m1,
"storageLimitExceeded":
MessageLookupByLibrary.simpleMessage("Opslaglimiet overschreden"),
"storageUsageInfo": m71,
"storageUsageInfo": m72,
"strongStrength": MessageLookupByLibrary.simpleMessage("Sterk"),
"subAlreadyLinkedErrMessage": m72,
"subWillBeCancelledOn": m73,
"subAlreadyLinkedErrMessage": m73,
"subWillBeCancelledOn": m74,
"subscribe": MessageLookupByLibrary.simpleMessage("Abonneer"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Je hebt een actief betaald abonnement nodig om delen mogelijk te maken."),
@@ -1768,7 +1768,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Features voorstellen"),
"support": MessageLookupByLibrary.simpleMessage("Ondersteuning"),
"syncProgress": m74,
"syncProgress": m75,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Synchronisatie gestopt"),
"syncing": MessageLookupByLibrary.simpleMessage("Synchroniseren..."),
@@ -1780,7 +1780,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Tik om te ontgrendelen"),
"tapToUpload":
MessageLookupByLibrary.simpleMessage("Tik om te uploaden"),
"tapToUploadIsIgnoredDue": m75,
"tapToUploadIsIgnoredDue": m76,
"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"),
@@ -1804,7 +1804,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Deze bestanden zullen worden verwijderd van uw apparaat."),
"theyAlsoGetXGb": m76,
"theyAlsoGetXGb": m77,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Ze zullen uit alle albums worden verwijderd."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@@ -1820,7 +1820,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Dit e-mailadres is al in gebruik"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Deze foto heeft geen exif gegevens"),
"thisIsPersonVerificationId": m77,
"thisIsPersonVerificationId": m78,
"thisIsYourVerificationId":
MessageLookupByLibrary.simpleMessage("Dit is uw verificatie-ID"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1845,11 +1845,11 @@ class MessageLookup extends MessageLookupByLibrary {
"total": MessageLookupByLibrary.simpleMessage("totaal"),
"totalSize": MessageLookupByLibrary.simpleMessage("Totale grootte"),
"trash": MessageLookupByLibrary.simpleMessage("Prullenbak"),
"trashDaysLeft": m78,
"trashDaysLeft": m79,
"trim": MessageLookupByLibrary.simpleMessage("Knippen"),
"trustedContacts":
MessageLookupByLibrary.simpleMessage("Vertrouwde contacten"),
"trustedInviteBody": m79,
"trustedInviteBody": m80,
"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."),
@@ -1868,7 +1868,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Tweestapsverificatie succesvol gereset"),
"twofactorSetup":
MessageLookupByLibrary.simpleMessage("Tweestapsverificatie"),
"typeOfGallerGallerytypeIsNotSupportedForRename": m80,
"typeOfGallerGallerytypeIsNotSupportedForRename": m81,
"unarchive": MessageLookupByLibrary.simpleMessage("Uit archief halen"),
"unarchiveAlbum":
MessageLookupByLibrary.simpleMessage("Album uit archief halen"),
@@ -1894,10 +1894,10 @@ class MessageLookup extends MessageLookupByLibrary {
"updatingFolderSelection":
MessageLookupByLibrary.simpleMessage("Map selectie bijwerken..."),
"upgrade": MessageLookupByLibrary.simpleMessage("Upgraden"),
"uploadIsIgnoredDueToIgnorereason": m81,
"uploadIsIgnoredDueToIgnorereason": m82,
"uploadingFilesToAlbum": MessageLookupByLibrary.simpleMessage(
"Bestanden worden geüpload naar album..."),
"uploadingMultipleMemories": m82,
"uploadingMultipleMemories": m83,
"uploadingSingleMemory": MessageLookupByLibrary.simpleMessage(
"1 herinnering veiligstellen..."),
"upto50OffUntil4thDec": MessageLookupByLibrary.simpleMessage(
@@ -1915,7 +1915,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Gebruik geselecteerde foto"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Gebruikte ruimte"),
"validTill": m83,
"validTill": m84,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Verificatie mislukt, probeer het opnieuw"),
@@ -1923,7 +1923,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Verificatie ID"),
"verify": MessageLookupByLibrary.simpleMessage("Verifiëren"),
"verifyEmail": MessageLookupByLibrary.simpleMessage("Bevestig e-mail"),
"verifyEmailID": m84,
"verifyEmailID": m85,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Verifiëren"),
"verifyPasskey":
MessageLookupByLibrary.simpleMessage("Bevestig passkey"),
@@ -1950,7 +1950,7 @@ class MessageLookup extends MessageLookupByLibrary {
"viewRecoveryKey":
MessageLookupByLibrary.simpleMessage("Toon herstelsleutel"),
"viewer": MessageLookupByLibrary.simpleMessage("Kijker"),
"viewersSuccessfullyAdded": m85,
"viewersSuccessfullyAdded": m86,
"visitWebToManage": MessageLookupByLibrary.simpleMessage(
"Bezoek alstublieft web.ente.io om uw abonnement te beheren"),
"waitingForVerification":
@@ -1971,7 +1971,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Vertrouwde contacten kunnen helpen bij het herstellen van je data."),
"yearShort": MessageLookupByLibrary.simpleMessage("jr"),
"yearly": MessageLookupByLibrary.simpleMessage("Jaarlijks"),
"yearsAgo": m86,
"yearsAgo": m87,
"yes": MessageLookupByLibrary.simpleMessage("Ja"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Ja, opzeggen"),
"yesConvertToViewer":
@@ -2003,7 +2003,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Je kunt niet met jezelf delen"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"U heeft geen gearchiveerde bestanden."),
"youHaveSuccessfullyFreedUp": m87,
"youHaveSuccessfullyFreedUp": m88,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("Je account is verwijderd"),
"yourMap": MessageLookupByLibrary.simpleMessage("Jouw kaart"),

View File

@@ -51,20 +51,20 @@ class MessageLookup extends MessageLookupByLibrary {
static String m4(count) => "${count} valgt";
static String m63(count, yourCount) => "${count} valgt (${yourCount} dine)";
static String m64(count, yourCount) => "${count} valgt (${yourCount} dine)";
static String m64(verificationID) =>
static String m65(verificationID) =>
"Her er min verifiserings-ID: ${verificationID} for ente.io.";
static String m5(verificationID) =>
"Hei, kan du bekrefte at dette er din ente.io verifiserings-ID: ${verificationID}";
static String m66(numberOfPeople) =>
static String m67(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Del med bestemte personer', one: 'Delt med 1 person', other: 'Delt med ${numberOfPeople} personer')}";
static String m77(email) => "Dette er ${email} sin verifiserings-ID";
static String m78(email) => "Dette er ${email} sin verifiserings-ID";
static String m84(email) => "Verifiser ${email}";
static String m85(email) => "Verifiser ${email}";
static String m2(email) =>
"Vi har sendt en e-post til <green>${email}</green>";
@@ -355,7 +355,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Valgte mapper vil bli kryptert og sikkerhetskopiert"),
"selectedPhotos": m4,
"selectedPhotosWithYours": m63,
"selectedPhotosWithYours": m64,
"sendEmail": MessageLookupByLibrary.simpleMessage("Send e-post"),
"sendInvite": MessageLookupByLibrary.simpleMessage("Send invitasjon"),
"sendLink": MessageLookupByLibrary.simpleMessage("Send lenke"),
@@ -365,9 +365,9 @@ class MessageLookup extends MessageLookupByLibrary {
"setupComplete":
MessageLookupByLibrary.simpleMessage("Oppsett fullført"),
"shareALink": MessageLookupByLibrary.simpleMessage("Del en lenke"),
"shareMyVerificationID": m64,
"shareMyVerificationID": m65,
"shareTextConfirmOthersVerificationID": m5,
"shareWithPeopleSectionTitle": m66,
"shareWithPeopleSectionTitle": m67,
"sharedPhotoNotifications":
MessageLookupByLibrary.simpleMessage("Nye delte bilder"),
"sharedPhotoNotificationsExplanation": MessageLookupByLibrary.simpleMessage(
@@ -405,7 +405,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Dette kan brukes til å gjenopprette kontoen din hvis du mister din andre faktor"),
"thisDevice": MessageLookupByLibrary.simpleMessage("Denne enheten"),
"thisIsPersonVerificationId": m77,
"thisIsPersonVerificationId": m78,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"Dette er din bekreftelses-ID"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -432,7 +432,7 @@ class MessageLookup extends MessageLookupByLibrary {
"verify": MessageLookupByLibrary.simpleMessage("Bekreft"),
"verifyEmail":
MessageLookupByLibrary.simpleMessage("Bekreft e-postadresse"),
"verifyEmailID": m84,
"verifyEmailID": m85,
"verifyPassword":
MessageLookupByLibrary.simpleMessage("Bekreft passord"),
"verifyingRecoveryKey": MessageLookupByLibrary.simpleMessage(

View File

@@ -184,85 +184,88 @@ class MessageLookup extends MessageLookupByLibrary {
static String m62(count) =>
"${Intl.plural(count, one: 'Znaleziono ${count} wynik', few: 'Znaleziono ${count} wyniki', other: 'Znaleziono ${count} wyników')}";
static String m63(snapshotLength, searchLength) =>
"Niezgodność długości sekcji: ${snapshotLength} != ${searchLength}";
static String m4(count) => "Wybrano ${count}";
static String m63(count, yourCount) =>
static String m64(count, yourCount) =>
"Wybrano ${count} (twoich ${yourCount})";
static String m64(verificationID) =>
static String m65(verificationID) =>
"Oto mój identyfikator weryfikacyjny: ${verificationID} dla ente.io.";
static String m5(verificationID) =>
"Hej, czy możesz potwierdzić, że to jest Twój identyfikator weryfikacyjny ente.io: ${verificationID}";
static String m65(referralCode, referralStorageInGB) =>
static String m66(referralCode, referralStorageInGB) =>
"Kod polecający: ${referralCode} \n\nZastosuj go w: Ustawienia → Ogólne → Polecanie, aby otrzymać ${referralStorageInGB} GB za darmo po zarejestrowaniu się w płatnym planie\n\nhttps://ente.io";
static String m66(numberOfPeople) =>
static String m67(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Udostępnione określonym osobom', one: 'Udostępnione 1 osobie', other: 'Udostępnione ${numberOfPeople} osobom')}";
static String m67(emailIDs) => "Udostępnione z ${emailIDs}";
static String m68(fileType) =>
"Ten ${fileType} zostanie usunięty z Twojego urządzenia.";
static String m68(emailIDs) => "Udostępnione z ${emailIDs}";
static String m69(fileType) =>
"Ten ${fileType} zostanie usunięty z Twojego urządzenia.";
static String m70(fileType) =>
"Ten ${fileType} jest zarówno w Ente, jak i na twoim urządzeniu.";
static String m70(fileType) => "Ten ${fileType} zostanie usunięty z Ente.";
static String m71(fileType) => "Ten ${fileType} zostanie usunięty z Ente.";
static String m1(storageAmountInGB) => "${storageAmountInGB} GB";
static String m71(
static String m72(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"Użyto ${usedAmount} ${usedStorageUnit} z ${totalAmount} ${totalStorageUnit}";
static String m72(id) =>
static String m73(id) =>
"Twoje ${id} jest już połączony z innym kontem Ente.\nJeśli chcesz użyć swojego ${id} za pomocą tego konta, skontaktuj się z naszym wsparciem technicznym";
static String m73(endDate) =>
static String m74(endDate) =>
"Twoja subskrypcja zostanie anulowana dnia ${endDate}";
static String m74(completed, total) =>
static String m75(completed, total) =>
"Zachowano ${completed}/${total} wspomnień";
static String m75(ignoreReason) =>
static String m76(ignoreReason) =>
"Naciśnij, aby przesłać, przesyłanie jest obecnie ignorowane z powodu ${ignoreReason}";
static String m76(storageAmountInGB) =>
static String m77(storageAmountInGB) =>
"Oni również otrzymują ${storageAmountInGB} GB";
static String m77(email) => "To jest identyfikator weryfikacyjny ${email}";
static String m78(email) => "To jest identyfikator weryfikacyjny ${email}";
static String m78(count) =>
static String m79(count) =>
"${Intl.plural(count, zero: 'Wkrótce', one: '1 dzień', few: '${count} dni', other: '${count} dni')}";
static String m79(email) =>
static String m80(email) =>
"Zostałeś zaproszony do bycia dziedzicznym kontaktem przez ${email}.";
static String m80(galleryType) =>
static String m81(galleryType) =>
"Typ galerii ${galleryType} nie jest obsługiwany dla zmiany nazwy";
static String m81(ignoreReason) =>
static String m82(ignoreReason) =>
"Przesyłanie jest ignorowane z powodu ${ignoreReason}";
static String m82(count) =>
static String m83(count) =>
"${Intl.plural(count, one: 'Zachowywanie ${count} wspomnienia...', few: 'Zachowywanie ${count} wspomnienia...', many: 'Zachowywanie ${count} wspomnień...', other: 'Zachowywanie ${count} wspomnień...')}";
static String m83(endDate) => "Ważne do ${endDate}";
static String m84(endDate) => "Ważne do ${endDate}";
static String m84(email) => "Zweryfikuj ${email}";
static String m85(email) => "Zweryfikuj ${email}";
static String m85(count) =>
static String m86(count) =>
"${Intl.plural(count, zero: 'Dodano 0 widzów', one: 'Dodano 1 widza', other: 'Dodano ${count} widzów')}";
static String m2(email) =>
"Wysłaliśmy wiadomość na adres <green>${email}</green>";
static String m86(count) =>
static String m87(count) =>
"${Intl.plural(count, one: '${count} rok temu', few: '${count} lata temu', many: '${count} lat temu', other: '${count} lata temu')}";
static String m87(storageSaved) => "Pomyślnie zwolniłeś/aś ${storageSaved}!";
static String m88(storageSaved) => "Pomyślnie zwolniłeś/aś ${storageSaved}!";
final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
@@ -846,8 +849,8 @@ class MessageLookup extends MessageLookupByLibrary {
"enterCode": MessageLookupByLibrary.simpleMessage("Wprowadź kod"),
"enterCodeDescription": MessageLookupByLibrary.simpleMessage(
"Wprowadź kod dostarczony przez znajomego, aby uzyskać bezpłatne miejsce dla was obojga"),
"enterDateOfBirth": MessageLookupByLibrary.simpleMessage(
"Data urodzenia (nieobowiązkowo)"),
"enterDateOfBirth":
MessageLookupByLibrary.simpleMessage("Urodziny (nieobowiązkowo)"),
"enterEmail":
MessageLookupByLibrary.simpleMessage("Wprowadź adres e-mail"),
"enterFileName":
@@ -1173,6 +1176,8 @@ class MessageLookup extends MessageLookupByLibrary {
"magicSearchHint": MessageLookupByLibrary.simpleMessage(
"Magiczne wyszukiwanie pozwala na wyszukiwanie zdjęć według ich zawartości, np. \"kwiat\", \"czerwony samochód\", \"dokumenty tożsamości\""),
"manage": MessageLookupByLibrary.simpleMessage("Zarządzaj"),
"manageDeviceStorage": MessageLookupByLibrary.simpleMessage(
"Zarządzaj pamięcią podręczną urządzenia"),
"manageDeviceStorageDesc": MessageLookupByLibrary.simpleMessage(
"Przejrzyj i wyczyść lokalną pamięć podręczną."),
"manageFamily":
@@ -1597,6 +1602,7 @@ class MessageLookup extends MessageLookupByLibrary {
"searchPersonsEmptySection": MessageLookupByLibrary.simpleMessage(
"Osoby będą wyświetlane tutaj po zakończeniu przetwarzania i synchronizacji"),
"searchResultCount": m62,
"searchSectionsLengthMismatch": m63,
"security": MessageLookupByLibrary.simpleMessage("Bezpieczeństwo"),
"seePublicAlbumLinksInApp": MessageLookupByLibrary.simpleMessage(
"Zobacz publiczne linki do albumów w aplikacji"),
@@ -1630,7 +1636,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Wybrane elementy zostaną usunięte ze wszystkich albumów i przeniesione do kosza."),
"selectedPhotos": m4,
"selectedPhotosWithYours": m63,
"selectedPhotosWithYours": m64,
"send": MessageLookupByLibrary.simpleMessage("Wyślij"),
"sendEmail": MessageLookupByLibrary.simpleMessage("Wyślij e-mail"),
"sendInvite":
@@ -1659,16 +1665,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Udostępnij teraz album"),
"shareLink": MessageLookupByLibrary.simpleMessage("Udostępnij link"),
"shareMyVerificationID": m64,
"shareMyVerificationID": m65,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Udostępnij tylko ludziom, którym chcesz"),
"shareTextConfirmOthersVerificationID": m5,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Pobierz Ente, abyśmy mogli łatwo udostępniać zdjęcia i wideo w oryginalnej jakości\n\nhttps://ente.io"),
"shareTextReferralCode": m65,
"shareTextReferralCode": m66,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Udostępnij użytkownikom bez konta Ente"),
"shareWithPeopleSectionTitle": m66,
"shareWithPeopleSectionTitle": m67,
"shareYourFirstAlbum": MessageLookupByLibrary.simpleMessage(
"Udostępnij swój pierwszy album"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1681,7 +1687,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Nowe udostępnione zdjęcia"),
"sharedPhotoNotificationsExplanation": MessageLookupByLibrary.simpleMessage(
"Otrzymuj powiadomienia, gdy ktoś doda zdjęcie do udostępnionego albumu, którego jesteś częścią"),
"sharedWith": m67,
"sharedWith": m68,
"sharedWithMe":
MessageLookupByLibrary.simpleMessage("Udostępnione ze mną"),
"sharedWithYou":
@@ -1698,11 +1704,11 @@ class MessageLookup extends MessageLookupByLibrary {
"Wyloguj z pozostałych urządzeń"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"Akceptuję <u-terms>warunki korzystania z usługi</u-terms> i <u-policy>politykę prywatności</u-policy>"),
"singleFileDeleteFromDevice": m68,
"singleFileDeleteFromDevice": m69,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"To zostanie usunięte ze wszystkich albumów."),
"singleFileInBothLocalAndRemote": m69,
"singleFileInRemoteOnly": m70,
"singleFileInBothLocalAndRemote": m70,
"singleFileInRemoteOnly": m71,
"skip": MessageLookupByLibrary.simpleMessage("Pomiń"),
"social": MessageLookupByLibrary.simpleMessage("Społeczność"),
"someItemsAreInBothEnteAndYourDevice":
@@ -1753,10 +1759,10 @@ class MessageLookup extends MessageLookupByLibrary {
"storageInGB": m1,
"storageLimitExceeded":
MessageLookupByLibrary.simpleMessage("Przekroczono limit pamięci"),
"storageUsageInfo": m71,
"storageUsageInfo": m72,
"strongStrength": MessageLookupByLibrary.simpleMessage("Silne"),
"subAlreadyLinkedErrMessage": m72,
"subWillBeCancelledOn": m73,
"subAlreadyLinkedErrMessage": m73,
"subWillBeCancelledOn": m74,
"subscribe": MessageLookupByLibrary.simpleMessage("Subskrybuj"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Potrzebujesz aktywnej płatnej subskrypcji, aby włączyć udostępnianie."),
@@ -1773,7 +1779,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Zaproponuj funkcje"),
"support": MessageLookupByLibrary.simpleMessage("Wsparcie techniczne"),
"syncProgress": m74,
"syncProgress": m75,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Synchronizacja zatrzymana"),
"syncing": MessageLookupByLibrary.simpleMessage("Synchronizowanie..."),
@@ -1786,7 +1792,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Naciśnij, aby odblokować"),
"tapToUpload":
MessageLookupByLibrary.simpleMessage("Naciśnij, aby przesłać"),
"tapToUploadIsIgnoredDue": m75,
"tapToUploadIsIgnoredDue": m76,
"tempErrorContactSupportIfPersists": MessageLookupByLibrary.simpleMessage(
"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."),
"terminate": MessageLookupByLibrary.simpleMessage("Zakończ"),
@@ -1810,7 +1816,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Te elementy zostaną usunięte z Twojego urządzenia."),
"theyAlsoGetXGb": m76,
"theyAlsoGetXGb": m77,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Zostaną one usunięte ze wszystkich albumów."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@@ -1826,7 +1832,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Ten e-mail jest już używany"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Ten obraz nie posiada danych exif"),
"thisIsPersonVerificationId": m77,
"thisIsPersonVerificationId": m78,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"To jest Twój Identyfikator Weryfikacji"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1850,11 +1856,11 @@ class MessageLookup extends MessageLookupByLibrary {
"total": MessageLookupByLibrary.simpleMessage("ogółem"),
"totalSize": MessageLookupByLibrary.simpleMessage("Całkowity rozmiar"),
"trash": MessageLookupByLibrary.simpleMessage("Kosz"),
"trashDaysLeft": m78,
"trashDaysLeft": m79,
"trim": MessageLookupByLibrary.simpleMessage("Przytnij"),
"trustedContacts":
MessageLookupByLibrary.simpleMessage("Zaufane kontakty"),
"trustedInviteBody": m79,
"trustedInviteBody": m80,
"tryAgain": MessageLookupByLibrary.simpleMessage("Spróbuj ponownie"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
"Włącz kopię zapasową, aby automatycznie przesyłać pliki dodane do folderu urządzenia do Ente."),
@@ -1874,7 +1880,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Pomyślnie zresetowano uwierzytelnianie dwustopniowe"),
"twofactorSetup": MessageLookupByLibrary.simpleMessage(
"Uwierzytelnianie dwustopniowe"),
"typeOfGallerGallerytypeIsNotSupportedForRename": m80,
"typeOfGallerGallerytypeIsNotSupportedForRename": m81,
"unarchive":
MessageLookupByLibrary.simpleMessage("Przywróć z archiwum"),
"unarchiveAlbum":
@@ -1899,10 +1905,10 @@ class MessageLookup extends MessageLookupByLibrary {
"updatingFolderSelection": MessageLookupByLibrary.simpleMessage(
"Aktualizowanie wyboru folderu..."),
"upgrade": MessageLookupByLibrary.simpleMessage("Ulepsz"),
"uploadIsIgnoredDueToIgnorereason": m81,
"uploadIsIgnoredDueToIgnorereason": m82,
"uploadingFilesToAlbum": MessageLookupByLibrary.simpleMessage(
"Przesyłanie plików do albumu..."),
"uploadingMultipleMemories": m82,
"uploadingMultipleMemories": m83,
"uploadingSingleMemory": MessageLookupByLibrary.simpleMessage(
"Zachowywanie 1 wspomnienia..."),
"upto50OffUntil4thDec": MessageLookupByLibrary.simpleMessage(
@@ -1920,7 +1926,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Użyj zaznaczone zdjęcie"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Zajęta przestrzeń"),
"validTill": m83,
"validTill": m84,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Weryfikacja nie powiodła się, spróbuj ponownie"),
@@ -1929,7 +1935,7 @@ class MessageLookup extends MessageLookupByLibrary {
"verify": MessageLookupByLibrary.simpleMessage("Zweryfikuj"),
"verifyEmail":
MessageLookupByLibrary.simpleMessage("Zweryfikuj adres e-mail"),
"verifyEmailID": m84,
"verifyEmailID": m85,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Zweryfikuj"),
"verifyPasskey":
MessageLookupByLibrary.simpleMessage("Zweryfikuj klucz dostępu"),
@@ -1955,7 +1961,7 @@ class MessageLookup extends MessageLookupByLibrary {
"viewRecoveryKey":
MessageLookupByLibrary.simpleMessage("Zobacz klucz odzyskiwania"),
"viewer": MessageLookupByLibrary.simpleMessage("Widz"),
"viewersSuccessfullyAdded": m85,
"viewersSuccessfullyAdded": m86,
"visitWebToManage": MessageLookupByLibrary.simpleMessage(
"Odwiedź stronę web.ente.io, aby zarządzać subskrypcją"),
"waitingForVerification": MessageLookupByLibrary.simpleMessage(
@@ -1976,7 +1982,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Zaufany kontakt może pomóc w odzyskaniu Twoich danych."),
"yearShort": MessageLookupByLibrary.simpleMessage("r"),
"yearly": MessageLookupByLibrary.simpleMessage("Rocznie"),
"yearsAgo": m86,
"yearsAgo": m87,
"yes": MessageLookupByLibrary.simpleMessage("Tak"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Tak, anuluj"),
"yesConvertToViewer":
@@ -2008,7 +2014,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Nie możesz udostępnić samemu sobie"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"Nie masz żadnych zarchiwizowanych elementów."),
"youHaveSuccessfullyFreedUp": m87,
"youHaveSuccessfullyFreedUp": m88,
"yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
"Twoje konto zostało usunięte"),
"yourMap": MessageLookupByLibrary.simpleMessage("Twoja mapa"),

View File

@@ -182,82 +182,85 @@ class MessageLookup extends MessageLookupByLibrary {
static String m62(count) =>
"${Intl.plural(count, one: '${count} resultado encontrado', other: '${count} resultados encontrados')}";
static String m63(snapshotLength, searchLength) =>
"Incompatibilidade de comprimento de seções: ${snapshotLength} != ${searchLength}";
static String m4(count) => "${count} selecionado(s)";
static String m63(count, yourCount) =>
static String m64(count, yourCount) =>
"${count} selecionado(s) (${yourCount} seus)";
static String m64(verificationID) =>
static String m65(verificationID) =>
"Aqui está meu ID de verificação para o ente.io: ${verificationID}";
static String m5(verificationID) =>
"Ei, você pode confirmar se este ID de verificação do ente.io é seu?: ${verificationID}";
static String m65(referralCode, referralStorageInGB) =>
static String m66(referralCode, referralStorageInGB) =>
"Código de referência do Ente: ${referralCode} \n\nAplique-o em Configurações → Geral → Referências para obter ${referralStorageInGB} GB grátis após a sua inscrição num plano pago\n\nhttps://ente.io";
static String m66(numberOfPeople) =>
static String m67(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Compartilhe com pessoas específicas', one: 'Compartilhado com 1 pessoa', other: 'Compartilhado com ${numberOfPeople} pessoas')}";
static String m67(emailIDs) => "Compartilhado com ${emailIDs}";
static String m68(fileType) =>
"Este ${fileType} será excluído do dispositivo.";
static String m68(emailIDs) => "Compartilhado com ${emailIDs}";
static String m69(fileType) =>
"Este ${fileType} será excluído do dispositivo.";
static String m70(fileType) =>
"Este ${fileType} está no Ente e em seu dispositivo.";
static String m70(fileType) => "Este ${fileType} será excluído do Ente.";
static String m71(fileType) => "Este ${fileType} será excluído do Ente.";
static String m1(storageAmountInGB) => "${storageAmountInGB} GB";
static String m71(
static String m72(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} de ${totalAmount} ${totalStorageUnit} usado";
static String m72(id) =>
static String m73(id) =>
"Seu ${id} já está vinculado a outra conta Ente. Se você gostaria de usar seu ${id} com esta conta, entre em contato conosco\"";
static String m73(endDate) => "Sua assinatura será cancelada em ${endDate}";
static String m74(endDate) => "Sua assinatura será cancelada em ${endDate}";
static String m74(completed, total) =>
static String m75(completed, total) =>
"${completed}/${total} memórias preservadas";
static String m75(ignoreReason) =>
static String m76(ignoreReason) =>
"Toque para enviar, atualmente o envio é ignorado devido a ${ignoreReason}";
static String m76(storageAmountInGB) =>
static String m77(storageAmountInGB) =>
"Eles também recebem ${storageAmountInGB} GB";
static String m77(email) => "Este é o ID de verificação de ${email}";
static String m78(email) => "Este é o ID de verificação de ${email}";
static String m78(count) =>
static String m79(count) =>
"${Intl.plural(count, zero: 'Em breve', one: '1 dia', other: '${count} dias')}";
static String m79(email) =>
static String m80(email) =>
"Você foi convidado para ser um contato legado por ${email}.";
static String m80(galleryType) =>
static String m81(galleryType) =>
"O tipo de galeria ${galleryType} não é suportado para renomear";
static String m81(ignoreReason) =>
static String m82(ignoreReason) =>
"O envio é ignorado devido a ${ignoreReason}";
static String m82(count) => "Preservando ${count} memórias...";
static String m83(count) => "Preservando ${count} memórias...";
static String m83(endDate) => "Válido até ${endDate}";
static String m84(endDate) => "Válido até ${endDate}";
static String m84(email) => "Verificar ${email}";
static String m85(email) => "Verificar ${email}";
static String m85(count) =>
static String m86(count) =>
"${Intl.plural(count, zero: 'Adicionado 0 visualizadores', one: 'Adicionado 1 visualizador', other: 'Adicionado ${count} visualizadores')}";
static String m2(email) => "Nós enviamos um e-mail à <green>${email}</green>";
static String m86(count) =>
static String m87(count) =>
"${Intl.plural(count, one: '${count} ano atrás', other: '${count} anos atrás')}";
static String m87(storageSaved) =>
static String m88(storageSaved) =>
"Você liberou ${storageSaved} com sucesso!";
final messages = _notInlinedMessages(_notInlinedMessages);
@@ -1167,6 +1170,8 @@ class MessageLookup extends MessageLookupByLibrary {
"magicSearchHint": MessageLookupByLibrary.simpleMessage(
"A busca mágica permite buscar fotos pelo conteúdo, p. e.x. \'flor\', \'carro vermelho\', \'identidade\'"),
"manage": MessageLookupByLibrary.simpleMessage("Gerenciar"),
"manageDeviceStorage": MessageLookupByLibrary.simpleMessage(
"Gerenciar cache do dispositivo"),
"manageDeviceStorageDesc": MessageLookupByLibrary.simpleMessage(
"Reveja e limpe o armazenamento de cache local."),
"manageFamily":
@@ -1587,6 +1592,7 @@ class MessageLookup extends MessageLookupByLibrary {
"searchPersonsEmptySection": MessageLookupByLibrary.simpleMessage(
"As pessoas serão exibidas aqui quando o processamento e sincronização for concluído"),
"searchResultCount": m62,
"searchSectionsLengthMismatch": m63,
"security": MessageLookupByLibrary.simpleMessage("Segurança"),
"seePublicAlbumLinksInApp": MessageLookupByLibrary.simpleMessage(
"Ver links de álbum compartilhado no aplicativo"),
@@ -1621,7 +1627,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Os itens selecionados serão excluídos de todos os álbuns e movidos para a lixeira."),
"selectedPhotos": m4,
"selectedPhotosWithYours": m63,
"selectedPhotosWithYours": m64,
"send": MessageLookupByLibrary.simpleMessage("Enviar"),
"sendEmail": MessageLookupByLibrary.simpleMessage("Enviar e-mail"),
"sendInvite": MessageLookupByLibrary.simpleMessage("Enviar convite"),
@@ -1651,16 +1657,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Compartilhar um álbum agora"),
"shareLink": MessageLookupByLibrary.simpleMessage("Compartilhar link"),
"shareMyVerificationID": m64,
"shareMyVerificationID": m65,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Compartilhar apenas com as pessoas que você quiser"),
"shareTextConfirmOthersVerificationID": m5,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Baixe o Ente para que nós possamos compartilhar com facilidade fotos e vídeos de qualidade original\n\nhttps://ente.io"),
"shareTextReferralCode": m65,
"shareTextReferralCode": m66,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Compartilhar com usuários não ente"),
"shareWithPeopleSectionTitle": m66,
"shareWithPeopleSectionTitle": m67,
"shareYourFirstAlbum": MessageLookupByLibrary.simpleMessage(
"Compartilhar seu primeiro álbum"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1673,7 +1679,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Novas fotos compartilhadas"),
"sharedPhotoNotificationsExplanation": MessageLookupByLibrary.simpleMessage(
"Receber notificações quando alguém adicionar uma foto a um álbum compartilhado que você faz parte"),
"sharedWith": m67,
"sharedWith": m68,
"sharedWithMe":
MessageLookupByLibrary.simpleMessage("Compartilhado comigo"),
"sharedWithYou":
@@ -1690,11 +1696,11 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Sair 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": m68,
"singleFileDeleteFromDevice": m69,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Ele será excluído de todos os álbuns."),
"singleFileInBothLocalAndRemote": m69,
"singleFileInRemoteOnly": m70,
"singleFileInBothLocalAndRemote": m70,
"singleFileInRemoteOnly": m71,
"skip": MessageLookupByLibrary.simpleMessage("Pular"),
"social": MessageLookupByLibrary.simpleMessage("Redes sociais"),
"someItemsAreInBothEnteAndYourDevice":
@@ -1745,10 +1751,10 @@ class MessageLookup extends MessageLookupByLibrary {
"storageInGB": m1,
"storageLimitExceeded": MessageLookupByLibrary.simpleMessage(
"Limite de armazenamento excedido"),
"storageUsageInfo": m71,
"storageUsageInfo": m72,
"strongStrength": MessageLookupByLibrary.simpleMessage("Forte"),
"subAlreadyLinkedErrMessage": m72,
"subWillBeCancelledOn": m73,
"subAlreadyLinkedErrMessage": m73,
"subWillBeCancelledOn": m74,
"subscribe": MessageLookupByLibrary.simpleMessage("Inscrever-se"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Você precisa de uma inscrição paga ativa para ativar o compartilhamento."),
@@ -1765,7 +1771,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Sugerir recurso"),
"support": MessageLookupByLibrary.simpleMessage("Suporte"),
"syncProgress": m74,
"syncProgress": m75,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Sincronização interrompida"),
"syncing": MessageLookupByLibrary.simpleMessage("Sincronizando..."),
@@ -1777,7 +1783,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Toque para desbloquear"),
"tapToUpload":
MessageLookupByLibrary.simpleMessage("Toque para enviar"),
"tapToUploadIsIgnoredDue": m75,
"tapToUploadIsIgnoredDue": m76,
"tempErrorContactSupportIfPersists": MessageLookupByLibrary.simpleMessage(
"Parece que algo deu errado. Tente novamente mais tarde. Caso o erro persistir, por favor, entre em contato com nossa equipe."),
"terminate": MessageLookupByLibrary.simpleMessage("Encerrar"),
@@ -1799,7 +1805,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Estes itens serão excluídos do seu dispositivo."),
"theyAlsoGetXGb": m76,
"theyAlsoGetXGb": m77,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Eles serão excluídos de todos os álbuns."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@@ -1815,7 +1821,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Este e-mail já está sendo usado"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Esta imagem não possui dados EXIF"),
"thisIsPersonVerificationId": m77,
"thisIsPersonVerificationId": m78,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"Este é o seu ID de verificação"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1839,11 +1845,11 @@ class MessageLookup extends MessageLookupByLibrary {
"total": MessageLookupByLibrary.simpleMessage("total"),
"totalSize": MessageLookupByLibrary.simpleMessage("Tamanho total"),
"trash": MessageLookupByLibrary.simpleMessage("Lixeira"),
"trashDaysLeft": m78,
"trashDaysLeft": m79,
"trim": MessageLookupByLibrary.simpleMessage("Recortar"),
"trustedContacts":
MessageLookupByLibrary.simpleMessage("Contatos confiáveis"),
"trustedInviteBody": m79,
"trustedInviteBody": m80,
"tryAgain": MessageLookupByLibrary.simpleMessage("Tente novamente"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
"Ative a cópia de segurança para automaticamente enviar arquivos adicionados à pasta do dispositivo para o Ente."),
@@ -1862,7 +1868,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Autenticação de dois fatores redefinida com sucesso"),
"twofactorSetup": MessageLookupByLibrary.simpleMessage(
"Configuração de dois fatores"),
"typeOfGallerGallerytypeIsNotSupportedForRename": m80,
"typeOfGallerGallerytypeIsNotSupportedForRename": m81,
"unarchive": MessageLookupByLibrary.simpleMessage("Desarquivar"),
"unarchiveAlbum":
MessageLookupByLibrary.simpleMessage("Desarquivar álbum"),
@@ -1885,10 +1891,10 @@ class MessageLookup extends MessageLookupByLibrary {
"updatingFolderSelection": MessageLookupByLibrary.simpleMessage(
"Atualizando seleção de pasta..."),
"upgrade": MessageLookupByLibrary.simpleMessage("Atualizar"),
"uploadIsIgnoredDueToIgnorereason": m81,
"uploadIsIgnoredDueToIgnorereason": m82,
"uploadingFilesToAlbum": MessageLookupByLibrary.simpleMessage(
"Enviando arquivos para o álbum..."),
"uploadingMultipleMemories": m82,
"uploadingMultipleMemories": m83,
"uploadingSingleMemory":
MessageLookupByLibrary.simpleMessage("Preservando 1 memória..."),
"upto50OffUntil4thDec": MessageLookupByLibrary.simpleMessage(
@@ -1906,7 +1912,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Usar foto selecionada"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Espaço usado"),
"validTill": m83,
"validTill": m84,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Falha na verificação. Tente novamente"),
@@ -1914,7 +1920,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("ID de verificação"),
"verify": MessageLookupByLibrary.simpleMessage("Verificar"),
"verifyEmail": MessageLookupByLibrary.simpleMessage("Verificar e-mail"),
"verifyEmailID": m84,
"verifyEmailID": m85,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Verificar"),
"verifyPasskey":
MessageLookupByLibrary.simpleMessage("Verificar chave de acesso"),
@@ -1942,7 +1948,7 @@ class MessageLookup extends MessageLookupByLibrary {
"viewRecoveryKey":
MessageLookupByLibrary.simpleMessage("Ver chave de recuperação"),
"viewer": MessageLookupByLibrary.simpleMessage("Visualizador"),
"viewersSuccessfullyAdded": m85,
"viewersSuccessfullyAdded": m86,
"visitWebToManage": MessageLookupByLibrary.simpleMessage(
"Visite o web.ente.io para gerenciar sua assinatura"),
"waitingForVerification":
@@ -1964,7 +1970,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Um contato confiável pode ajudá-lo em recuperar seus dados."),
"yearShort": MessageLookupByLibrary.simpleMessage("ano"),
"yearly": MessageLookupByLibrary.simpleMessage("Anual"),
"yearsAgo": m86,
"yearsAgo": m87,
"yes": MessageLookupByLibrary.simpleMessage("Sim"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Sim"),
"yesConvertToViewer": MessageLookupByLibrary.simpleMessage(
@@ -1997,7 +2003,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Você não pode compartilhar consigo mesmo"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"Você não tem nenhum item arquivado."),
"youHaveSuccessfullyFreedUp": m87,
"youHaveSuccessfullyFreedUp": m88,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("Sua conta foi excluída"),
"yourMap": MessageLookupByLibrary.simpleMessage("Seu mapa"),

View File

@@ -162,66 +162,66 @@ class MessageLookup extends MessageLookupByLibrary {
static String m4(count) => "${count} selectate";
static String m63(count, yourCount) =>
static String m64(count, yourCount) =>
"${count} selectate (${yourCount} ale dvs.)";
static String m64(verificationID) =>
static String m65(verificationID) =>
"Acesta este ID-ul meu de verificare: ${verificationID} pentru ente.io.";
static String m5(verificationID) =>
"Poți confirma că acesta este ID-ul tău de verificare ente.io: ${verificationID}";
static String m65(referralCode, referralStorageInGB) =>
static String m66(referralCode, referralStorageInGB) =>
"Codul de recomandare Ente: ${referralCode}\n\nAplică-l în Setări → General → Recomandări pentru a obține ${referralStorageInGB} GB gratuit după ce te înscrii pentru un plan plătit\n\nhttps://ente.io";
static String m66(numberOfPeople) =>
static String m67(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Distribuiți cu anumite persoane', one: 'Distribuit cu o persoană', other: 'Distribuit cu ${numberOfPeople} de persoane')}";
static String m67(emailIDs) => "Distribuit cu ${emailIDs}";
static String m68(fileType) =>
"Fișierul de tip ${fileType} va fi șters din dispozitivul dvs.";
static String m68(emailIDs) => "Distribuit cu ${emailIDs}";
static String m69(fileType) =>
"Fișierul de tip ${fileType} este atât în Ente, cât și în dispozitivul dvs.";
"Fișierul de tip ${fileType} va fi șters din dispozitivul dvs.";
static String m70(fileType) =>
"Fișierul de tip ${fileType} este atât în Ente, cât și în dispozitivul dvs.";
static String m71(fileType) =>
"Fișierul de tip ${fileType} va fi șters din Ente.";
static String m1(storageAmountInGB) => "${storageAmountInGB} GB";
static String m71(
static String m72(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} din ${totalAmount} ${totalStorageUnit} utilizat";
static String m72(id) =>
static String m73(id) =>
"${id} este deja legat la un alt cont Ente.\nDacă doriți să folosiți ${id} cu acest cont, vă rugăm să contactați asistența noastră";
static String m73(endDate) => "Abonamentul dvs. va fi anulat pe ${endDate}";
static String m74(endDate) => "Abonamentul dvs. va fi anulat pe ${endDate}";
static String m74(completed, total) =>
static String m75(completed, total) =>
"${completed}/${total} amintiri salvate";
static String m76(storageAmountInGB) =>
static String m77(storageAmountInGB) =>
"De asemenea, va primii ${storageAmountInGB} GB";
static String m77(email) => "Acesta este ID-ul de verificare al ${email}";
static String m78(email) => "Acesta este ID-ul de verificare al ${email}";
static String m78(count) =>
static String m79(count) =>
"${Intl.plural(count, zero: 'Curând', one: 'O zi', other: '${count} de zile')}";
static String m82(count) => "Se salvează ${count} amintiri...";
static String m83(count) => "Se salvează ${count} amintiri...";
static String m83(endDate) => "Valabil până pe ${endDate}";
static String m84(endDate) => "Valabil până pe ${endDate}";
static String m84(email) => "Verificare ${email}";
static String m85(email) => "Verificare ${email}";
static String m2(email) => "Am trimis un e-mail la <green>${email}</green>";
static String m86(count) =>
static String m87(count) =>
"${Intl.plural(count, one: 'acum ${count} an', few: 'acum ${count} ani', other: 'acum ${count} de ani')}";
static String m87(storageSaved) => "Ați eliberat cu succes ${storageSaved}!";
static String m88(storageSaved) => "Ați eliberat cu succes ${storageSaved}!";
final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
@@ -1346,7 +1346,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Articolele selectate vor fi șterse din toate albumele și mutate în coșul de gunoi."),
"selectedPhotos": m4,
"selectedPhotosWithYours": m63,
"selectedPhotosWithYours": m64,
"send": MessageLookupByLibrary.simpleMessage("Trimitere"),
"sendEmail": MessageLookupByLibrary.simpleMessage("Trimiteți e-mail"),
"sendInvite":
@@ -1373,16 +1373,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Distribuiți un album acum"),
"shareLink": MessageLookupByLibrary.simpleMessage("Distribuiți linkul"),
"shareMyVerificationID": m64,
"shareMyVerificationID": m65,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Distribuiți numai cu persoanele pe care le doriți"),
"shareTextConfirmOthersVerificationID": m5,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Descarcă Ente pentru a putea distribui cu ușurință fotografii și videoclipuri în calitate originală\n\nhttps://ente.io"),
"shareTextReferralCode": m65,
"shareTextReferralCode": m66,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Distribuiți cu utilizatori din afara Ente"),
"shareWithPeopleSectionTitle": m66,
"shareWithPeopleSectionTitle": m67,
"shareYourFirstAlbum":
MessageLookupByLibrary.simpleMessage("Distribuiți primul album"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1395,7 +1395,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Fotografii partajate noi"),
"sharedPhotoNotificationsExplanation": MessageLookupByLibrary.simpleMessage(
"Primiți notificări atunci când cineva adaugă o fotografie la un album distribuit din care faceți parte"),
"sharedWith": m67,
"sharedWith": m68,
"sharedWithMe": MessageLookupByLibrary.simpleMessage("Distribuit mie"),
"sharedWithYou":
MessageLookupByLibrary.simpleMessage("Distribuite cu dvs."),
@@ -1410,11 +1410,11 @@ class MessageLookup extends MessageLookupByLibrary {
"Deconectați alte dispozitive"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"Sunt de acord cu <u-terms>termenii de prestare ai serviciului</u-terms> și <u-policy>politica de confidențialitate</u-policy>"),
"singleFileDeleteFromDevice": m68,
"singleFileDeleteFromDevice": m69,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Acesta va fi șters din toate albumele."),
"singleFileInBothLocalAndRemote": m69,
"singleFileInRemoteOnly": m70,
"singleFileInBothLocalAndRemote": m70,
"singleFileInRemoteOnly": m71,
"skip": MessageLookupByLibrary.simpleMessage("Omiteți"),
"social": MessageLookupByLibrary.simpleMessage("Rețele socializare"),
"someItemsAreInBothEnteAndYourDevice":
@@ -1462,10 +1462,10 @@ class MessageLookup extends MessageLookupByLibrary {
"storageInGB": m1,
"storageLimitExceeded":
MessageLookupByLibrary.simpleMessage("Limita de spațiu depășită"),
"storageUsageInfo": m71,
"storageUsageInfo": m72,
"strongStrength": MessageLookupByLibrary.simpleMessage("Puternică"),
"subAlreadyLinkedErrMessage": m72,
"subWillBeCancelledOn": m73,
"subAlreadyLinkedErrMessage": m73,
"subWillBeCancelledOn": m74,
"subscribe": MessageLookupByLibrary.simpleMessage("Abonare"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Aveți nevoie de un abonament plătit activ pentru a activa distribuirea."),
@@ -1482,7 +1482,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Sugerați funcționalități"),
"support": MessageLookupByLibrary.simpleMessage("Asistență"),
"syncProgress": m74,
"syncProgress": m75,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Sincronizare oprită"),
"syncing": MessageLookupByLibrary.simpleMessage("Sincronizare..."),
@@ -1510,7 +1510,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Aceste articole vor fi șterse din dispozitivul dvs."),
"theyAlsoGetXGb": m76,
"theyAlsoGetXGb": m77,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Acestea vor fi șterse din toate albumele."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@@ -1526,7 +1526,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Această adresă de e-mail este deja folosită"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Această imagine nu are date exif"),
"thisIsPersonVerificationId": m77,
"thisIsPersonVerificationId": m78,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"Acesta este ID-ul dvs. de verificare"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1543,7 +1543,7 @@ class MessageLookup extends MessageLookupByLibrary {
"total": MessageLookupByLibrary.simpleMessage("total"),
"totalSize": MessageLookupByLibrary.simpleMessage("Dimensiune totală"),
"trash": MessageLookupByLibrary.simpleMessage("Coș de gunoi"),
"trashDaysLeft": m78,
"trashDaysLeft": m79,
"trim": MessageLookupByLibrary.simpleMessage("Decupare"),
"tryAgain": MessageLookupByLibrary.simpleMessage("Încercați din nou"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
@@ -1588,7 +1588,7 @@ class MessageLookup extends MessageLookupByLibrary {
"upgrade": MessageLookupByLibrary.simpleMessage("Îmbunătățire"),
"uploadingFilesToAlbum": MessageLookupByLibrary.simpleMessage(
"Se încarcă fișiere în album..."),
"uploadingMultipleMemories": m82,
"uploadingMultipleMemories": m83,
"uploadingSingleMemory":
MessageLookupByLibrary.simpleMessage("Se salvează o amintire..."),
"upto50OffUntil4thDec": MessageLookupByLibrary.simpleMessage(
@@ -1604,7 +1604,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto": MessageLookupByLibrary.simpleMessage(
"Folosiți fotografia selectată"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Spațiu utilizat"),
"validTill": m83,
"validTill": m84,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Verificare eșuată, încercați din nou"),
@@ -1613,7 +1613,7 @@ class MessageLookup extends MessageLookupByLibrary {
"verify": MessageLookupByLibrary.simpleMessage("Verificare"),
"verifyEmail":
MessageLookupByLibrary.simpleMessage("Verificare e-mail"),
"verifyEmailID": m84,
"verifyEmailID": m85,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Verificare"),
"verifyPassword":
MessageLookupByLibrary.simpleMessage("Verificați parola"),
@@ -1650,7 +1650,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Bine ați revenit!"),
"whatsNew": MessageLookupByLibrary.simpleMessage("Noutăți"),
"yearly": MessageLookupByLibrary.simpleMessage("Anual"),
"yearsAgo": m86,
"yearsAgo": m87,
"yes": MessageLookupByLibrary.simpleMessage("Da"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Da, anulează"),
"yesConvertToViewer":
@@ -1680,7 +1680,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Nu poți distribui cu tine însuți"),
"youDontHaveAnyArchivedItems":
MessageLookupByLibrary.simpleMessage("Nu aveți articole arhivate."),
"youHaveSuccessfullyFreedUp": m87,
"youHaveSuccessfullyFreedUp": m88,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("Contul dvs. a fost șters"),
"yourMap": MessageLookupByLibrary.simpleMessage("Harta dvs."),

View File

@@ -169,68 +169,68 @@ class MessageLookup extends MessageLookupByLibrary {
static String m4(count) => "${count} выбрано";
static String m63(count, yourCount) => "${count} выбрано (${yourCount} ваши)";
static String m64(count, yourCount) => "${count} выбрано (${yourCount} ваши)";
static String m64(verificationID) =>
static String m65(verificationID) =>
"Вот мой проверочный ID: ${verificationID} для ente.io.";
static String m5(verificationID) =>
"Эй, вы можете подтвердить, что это ваш идентификатор подтверждения ente.io: ${verificationID}";
static String m65(referralCode, referralStorageInGB) =>
static String m66(referralCode, referralStorageInGB) =>
"Реферальный код Ente: ${referralCode} \n\nПримените его в разделе «Настройки» → «Основные» → «Рефералы», чтобы получить ${referralStorageInGB} Гигабайт бесплатно после того как вы подпишетесь на платный план";
static String m66(numberOfPeople) =>
static String m67(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Поделится с конкретными людьми', one: 'Поделено с 1 человеком', other: 'Поделено с ${numberOfPeople} людьми')}";
static String m67(emailIDs) => "Поделиться с ${emailIDs}";
static String m68(fileType) =>
"Это ${fileType} будет удалено с вашего устройства.";
static String m68(emailIDs) => "Поделиться с ${emailIDs}";
static String m69(fileType) =>
"Это ${fileType} будет удалено с вашего устройства.";
static String m70(fileType) =>
"Этот ${fileType} есть и в Ente, и на вашем устройстве.";
static String m70(fileType) => "Этот ${fileType} будет удалён из Ente.";
static String m71(fileType) => "Этот ${fileType} будет удалён из Ente.";
static String m1(storageAmountInGB) => "${storageAmountInGB} Гигабайт";
static String m71(
static String m72(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} из ${totalAmount} ${totalStorageUnit} использовано";
static String m72(id) =>
static String m73(id) =>
"Ваш ${id} уже связан с другой учетной записью Ente.\nЕсли вы хотите использовать ${id} с этой учетной записью, пожалуйста, свяжитесь с нашей службой поддержки";
static String m73(endDate) => "Ваша подписка будет отменена ${endDate}";
static String m74(endDate) => "Ваша подписка будет отменена ${endDate}";
static String m74(completed, total) => "${completed}/${total} сохранено";
static String m75(completed, total) => "${completed}/${total} сохранено";
static String m76(storageAmountInGB) =>
static String m77(storageAmountInGB) =>
"Они тоже получат ${storageAmountInGB} Гигабайт";
static String m77(email) =>
static String m78(email) =>
"Этот идентификатор подтверждения пользователя ${email}";
static String m80(galleryType) =>
static String m81(galleryType) =>
"Тип галереи ${galleryType} не поддерживается для переименования";
static String m81(ignoreReason) =>
static String m82(ignoreReason) =>
"Загрузка игнорируется из-за ${ignoreReason}";
static String m83(endDate) => "Действителен по ${endDate}";
static String m84(endDate) => "Действителен по ${endDate}";
static String m84(email) => "Подтвердить ${email}";
static String m85(email) => "Подтвердить ${email}";
static String m85(count) =>
static String m86(count) =>
"${Intl.plural(count, zero: 'Добавлено 0 зрителей', one: 'Добавлен 1 зритель', other: 'Добавлено ${count} зрителей')}";
static String m2(email) => "Мы отправили письмо на <green>${email}</green>";
static String m86(count) =>
static String m87(count) =>
"${Intl.plural(count, one: '${count} год назад', other: '${count} лет назад')}";
static String m87(storageSaved) => "Вы успешно освободили ${storageSaved}!";
static String m88(storageSaved) => "Вы успешно освободили ${storageSaved}!";
final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
@@ -1561,7 +1561,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Выбранные элементы будут удалены из всех альбомов и перемещены в корзину."),
"selectedPhotos": m4,
"selectedPhotosWithYours": m63,
"selectedPhotosWithYours": m64,
"send": MessageLookupByLibrary.simpleMessage("Отправить"),
"sendEmail": MessageLookupByLibrary.simpleMessage(
"Отправить электронное письмо"),
@@ -1596,16 +1596,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Поделиться альбомом сейчас"),
"shareLink": MessageLookupByLibrary.simpleMessage("Поделиться ссылкой"),
"shareMyVerificationID": m64,
"shareMyVerificationID": m65,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Поделитесь только с теми людьми, с которыми вы хотите"),
"shareTextConfirmOthersVerificationID": m5,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Скачай Ente, чтобы мы могли легко поделиться фотографиями и видео без сжатия\n\nhttps://ente.io"),
"shareTextReferralCode": m65,
"shareTextReferralCode": m66,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Поделится с пользователями без Ente"),
"shareWithPeopleSectionTitle": m66,
"shareWithPeopleSectionTitle": m67,
"shareYourFirstAlbum":
MessageLookupByLibrary.simpleMessage("Поделиться первым альбомом"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@@ -1616,7 +1616,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Новые общие фотографии"),
"sharedPhotoNotificationsExplanation": MessageLookupByLibrary.simpleMessage(
"Получать уведомления, когда кто-то добавляет фото в общий альбом, в котором вы состоите"),
"sharedWith": m67,
"sharedWith": m68,
"sharedWithMe":
MessageLookupByLibrary.simpleMessage("Поделиться со мной"),
"sharedWithYou":
@@ -1633,11 +1633,11 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Выйти из других устройств"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"Я согласен с <u-terms>условиями предоставления услуг</u-terms> и <u-policy>политикой конфиденциальности</u-policy>"),
"singleFileDeleteFromDevice": m68,
"singleFileDeleteFromDevice": m69,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Он будет удален из всех альбомов."),
"singleFileInBothLocalAndRemote": m69,
"singleFileInRemoteOnly": m70,
"singleFileInBothLocalAndRemote": m70,
"singleFileInRemoteOnly": m71,
"skip": MessageLookupByLibrary.simpleMessage("Пропустить"),
"social": MessageLookupByLibrary.simpleMessage("Соцсети"),
"someItemsAreInBothEnteAndYourDevice": MessageLookupByLibrary.simpleMessage(
@@ -1685,10 +1685,10 @@ class MessageLookup extends MessageLookupByLibrary {
"storageInGB": m1,
"storageLimitExceeded":
MessageLookupByLibrary.simpleMessage("Превышен предел хранения"),
"storageUsageInfo": m71,
"storageUsageInfo": m72,
"strongStrength": MessageLookupByLibrary.simpleMessage("Сильный"),
"subAlreadyLinkedErrMessage": m72,
"subWillBeCancelledOn": m73,
"subAlreadyLinkedErrMessage": m73,
"subWillBeCancelledOn": m74,
"subscribe": MessageLookupByLibrary.simpleMessage("Подписаться"),
"subscription": MessageLookupByLibrary.simpleMessage("Подписка"),
"success": MessageLookupByLibrary.simpleMessage("Успешно"),
@@ -1703,7 +1703,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Предложить идею"),
"support": MessageLookupByLibrary.simpleMessage("Поддержка"),
"syncProgress": m74,
"syncProgress": m75,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Синхронизация остановлена"),
"syncing": MessageLookupByLibrary.simpleMessage("Синхронизация..."),
@@ -1737,7 +1737,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Эти элементы будут удалено с вашего устройства."),
"theyAlsoGetXGb": m76,
"theyAlsoGetXGb": m77,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Они будут удален из всех альбомов."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@@ -1753,7 +1753,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Этот адрес электронной почты уже используется"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Это изображение не имеет exif данных"),
"thisIsPersonVerificationId": m77,
"thisIsPersonVerificationId": m78,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"Это ваш идентификатор подтверждения"),
"thisWillLogYouOutOfTheFollowingDevice":
@@ -1797,7 +1797,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Двухфакторная аутентификация успешно сброшена"),
"twofactorSetup": MessageLookupByLibrary.simpleMessage("Вход с 2FA"),
"typeOfGallerGallerytypeIsNotSupportedForRename": m80,
"typeOfGallerGallerytypeIsNotSupportedForRename": m81,
"unarchive": MessageLookupByLibrary.simpleMessage("Разархивировать"),
"unarchiveAlbum":
MessageLookupByLibrary.simpleMessage("Разархивировать альбом"),
@@ -1821,7 +1821,7 @@ class MessageLookup extends MessageLookupByLibrary {
"updatingFolderSelection":
MessageLookupByLibrary.simpleMessage("Обновление выбора папки..."),
"upgrade": MessageLookupByLibrary.simpleMessage("Обновить"),
"uploadIsIgnoredDueToIgnorereason": m81,
"uploadIsIgnoredDueToIgnorereason": m82,
"uploadingFilesToAlbum":
MessageLookupByLibrary.simpleMessage("Загрузка файлов в альбом..."),
"upto50OffUntil4thDec": MessageLookupByLibrary.simpleMessage(
@@ -1838,7 +1838,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Использовать выбранное фото"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Использовано места"),
"validTill": m83,
"validTill": m84,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Проверка не удалась, попробуйте еще раз"),
@@ -1847,7 +1847,7 @@ class MessageLookup extends MessageLookupByLibrary {
"verify": MessageLookupByLibrary.simpleMessage("Подтвердить"),
"verifyEmail": MessageLookupByLibrary.simpleMessage(
"Подтвердить электронную почту"),
"verifyEmailID": m84,
"verifyEmailID": m85,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Подтверждение"),
"verifyPasskey":
MessageLookupByLibrary.simpleMessage("Подтвердить ключ"),
@@ -1871,7 +1871,7 @@ class MessageLookup extends MessageLookupByLibrary {
"viewRecoveryKey": MessageLookupByLibrary.simpleMessage(
"Просмотреть ключ восстановления"),
"viewer": MessageLookupByLibrary.simpleMessage("Наблюдатель"),
"viewersSuccessfullyAdded": m85,
"viewersSuccessfullyAdded": m86,
"visitWebToManage": MessageLookupByLibrary.simpleMessage(
"Пожалуйста, посетите web.ente.io для управления вашей подпиской"),
"waitingForVerification":
@@ -1889,7 +1889,7 @@ class MessageLookup extends MessageLookupByLibrary {
"whatsNew": MessageLookupByLibrary.simpleMessage("Что нового"),
"yearShort": MessageLookupByLibrary.simpleMessage("г."),
"yearly": MessageLookupByLibrary.simpleMessage("Ежегодно"),
"yearsAgo": m86,
"yearsAgo": m87,
"yes": MessageLookupByLibrary.simpleMessage("Да"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Да, отменить"),
"yesConvertToViewer":
@@ -1921,7 +1921,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Вы не можете поделиться с самим собой"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"У вас нет архивных элементов."),
"youHaveSuccessfullyFreedUp": m87,
"youHaveSuccessfullyFreedUp": m88,
"yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
"Ваша учетная запись была удалена"),
"yourMap": MessageLookupByLibrary.simpleMessage("Ваша карта"),

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