Compare commits
536 Commits
auth-v4.0.
...
photos-v0.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
33b7cafb9d | ||
|
|
e0988596e4 | ||
|
|
745ff262da | ||
|
|
335e4777a3 | ||
|
|
a0b601c847 | ||
|
|
9c4d734b26 | ||
|
|
b2b649d203 | ||
|
|
358f741d7d | ||
|
|
e0b8999696 | ||
|
|
fa8060ee6b | ||
|
|
2b147c1a87 | ||
|
|
2c91eb82bc | ||
|
|
a745b69ebe | ||
|
|
39f4f55bae | ||
|
|
270aa4301e | ||
|
|
6b05782446 | ||
|
|
865b5f3c8f | ||
|
|
81d9cc6e7f | ||
|
|
2e15cb35bc | ||
|
|
b21639059e | ||
|
|
5a691778f6 | ||
|
|
bee9694f34 | ||
|
|
9f1a3ad7d6 | ||
|
|
5e401cc9a8 | ||
|
|
2e36ea788c | ||
|
|
520777083b | ||
|
|
ebab2e0387 | ||
|
|
3298cb6c14 | ||
|
|
c629d66d67 | ||
|
|
a14db23873 | ||
|
|
f89c03318a | ||
|
|
3121462829 | ||
|
|
050347762a | ||
|
|
a27310b80c | ||
|
|
c3c8d157e3 | ||
|
|
97fad5962e | ||
|
|
f9ad4c36a6 | ||
|
|
78a87ad6d4 | ||
|
|
d8ed89d5fd | ||
|
|
8e35068271 | ||
|
|
79740eeee7 | ||
|
|
a6a647786f | ||
|
|
832841e424 | ||
|
|
d2110afe68 | ||
|
|
78c51a7042 | ||
|
|
6279b280a8 | ||
|
|
b56cd4490b | ||
|
|
bf5f9b6af5 | ||
|
|
74bbdd5e72 | ||
|
|
b11e0e42bf | ||
|
|
192f2062b9 | ||
|
|
ef64bfb249 | ||
|
|
3935734942 | ||
|
|
785f54e043 | ||
|
|
5d9e37730f | ||
|
|
1df253d41a | ||
|
|
3a4e798e1e | ||
|
|
97eaafc67c | ||
|
|
80f5cf0f66 | ||
|
|
d2db4c9cfa | ||
|
|
7a95495390 | ||
|
|
4fa7a4e794 | ||
|
|
de5772b045 | ||
|
|
877e36ab96 | ||
|
|
8c176cce22 | ||
|
|
be1a79b1a3 | ||
|
|
73ee5a8131 | ||
|
|
44ba81e781 | ||
|
|
bf096572a6 | ||
|
|
5aeb3fa615 | ||
|
|
8c6363efce | ||
|
|
7701823abb | ||
|
|
74d4046671 | ||
|
|
efb88f1c90 | ||
|
|
e0519d30e9 | ||
|
|
f5229f1117 | ||
|
|
4173a8a02f | ||
|
|
616e970dd0 | ||
|
|
0053f4fcbd | ||
|
|
8af518a9db | ||
|
|
61e870fe79 | ||
|
|
2fc6a24565 | ||
|
|
14f618af71 | ||
|
|
70d74a47e0 | ||
|
|
704db942da | ||
|
|
c89efebf7a | ||
|
|
028036128a | ||
|
|
2f9ff47720 | ||
|
|
7b1f42714c | ||
|
|
fe46b68a4e | ||
|
|
af5afb124d | ||
|
|
9dc989a613 | ||
|
|
e8cf688d95 | ||
|
|
14a350b261 | ||
|
|
15e0c96db5 | ||
|
|
2d7fa257cd | ||
|
|
54b6e6636e | ||
|
|
2bec720074 | ||
|
|
1e8ae47f2e | ||
|
|
c0a1b2daef | ||
|
|
67fda60ba5 | ||
|
|
51cf2aef4b | ||
|
|
572a36abcc | ||
|
|
552116f51c | ||
|
|
46ea59ed9e | ||
|
|
ed7047e440 | ||
|
|
4085742de9 | ||
|
|
1cb0799bd0 | ||
|
|
7506a35f1f | ||
|
|
1ac9594fe3 | ||
|
|
ab75a9e55f | ||
|
|
85cb80597f | ||
|
|
dfa782068f | ||
|
|
605e9ae533 | ||
|
|
9cc3ade58e | ||
|
|
26e4b6a724 | ||
|
|
b2100c1e1f | ||
|
|
71982d5557 | ||
|
|
4bf2780807 | ||
|
|
d1a202fd8b | ||
|
|
04b61ddb21 | ||
|
|
70cd901571 | ||
|
|
413d85bbf9 | ||
|
|
1332dffad3 | ||
|
|
d3b45cab6d | ||
|
|
6515e13a9a | ||
|
|
e9ed2fd332 | ||
|
|
b5d2fbbd69 | ||
|
|
58ff5a6ede | ||
|
|
f69ada05de | ||
|
|
75b127f8c8 | ||
|
|
38a0d73926 | ||
|
|
a32ceed72a | ||
|
|
547d64f3b2 | ||
|
|
d2c8f0bff4 | ||
|
|
f1e148e316 | ||
|
|
5cd8ae0677 | ||
|
|
2f1ecbc79d | ||
|
|
893b504e94 | ||
|
|
bd97a49640 | ||
|
|
4ecd89f326 | ||
|
|
897c584438 | ||
|
|
293d0a642f | ||
|
|
9d9baa5bc5 | ||
|
|
4384a72f3a | ||
|
|
d527a97cd5 | ||
|
|
d665a6a23a | ||
|
|
c92bfc1f1c | ||
|
|
4bef94aac0 | ||
|
|
add1c7a089 | ||
|
|
0466d7024a | ||
|
|
c7191ae7f0 | ||
|
|
e5c6999b94 | ||
|
|
5442742cf3 | ||
|
|
4bfcd9d374 | ||
|
|
651575ec6e | ||
|
|
06f19b26d2 | ||
|
|
b92e9e366b | ||
|
|
e1199222e1 | ||
|
|
2465871c7c | ||
|
|
7788ba1fa4 | ||
|
|
88801beaf1 | ||
|
|
be60bec4ae | ||
|
|
6c8bec0bad | ||
|
|
f3eb0fc181 | ||
|
|
3512615780 | ||
|
|
b9dd0bc3b7 | ||
|
|
61236650dc | ||
|
|
cbbaecb2a2 | ||
|
|
1400604687 | ||
|
|
aed85f2327 | ||
|
|
41c8f9578f | ||
|
|
62ecfc34c2 | ||
|
|
1c1ad93875 | ||
|
|
c23fc79134 | ||
|
|
16f54342ae | ||
|
|
96e541acb4 | ||
|
|
fa75392a37 | ||
|
|
c48fbb328b | ||
|
|
29477ab4a0 | ||
|
|
d1bcd12599 | ||
|
|
86add71393 | ||
|
|
a7c31b65a2 | ||
|
|
8dfd7b5921 | ||
|
|
1cdc7aa594 | ||
|
|
54662a34ea | ||
|
|
710b7e93dc | ||
|
|
78962b2611 | ||
|
|
de74acedab | ||
|
|
4d3b89048c | ||
|
|
5e639e9729 | ||
|
|
24dc72eee3 | ||
|
|
e822d327e4 | ||
|
|
ed17206f51 | ||
|
|
151c50f7af | ||
|
|
dde2b8894a | ||
|
|
288d66dfa7 | ||
|
|
f9209e212d | ||
|
|
d6a39ae452 | ||
|
|
6b64e20a7e | ||
|
|
03e5e16bc3 | ||
|
|
79eb912a42 | ||
|
|
68e7a38463 | ||
|
|
88c10db52d | ||
|
|
8b24225fbb | ||
|
|
473e22c0c1 | ||
|
|
0a6ffb226f | ||
|
|
a0ecc943d4 | ||
|
|
86f0dbb620 | ||
|
|
d904b9318a | ||
|
|
0e46287eee | ||
|
|
f5ebecfa69 | ||
|
|
4908648137 | ||
|
|
d2d5f630aa | ||
|
|
8999c7045a | ||
|
|
d5d015c13c | ||
|
|
8479809109 | ||
|
|
c7dd5dcbca | ||
|
|
126904c68f | ||
|
|
145c7356a8 | ||
|
|
0dd5fd6d23 | ||
|
|
bc3488cb9c | ||
|
|
2cede3a46f | ||
|
|
ceed538181 | ||
|
|
ec37cb3eff | ||
|
|
4b38164c58 | ||
|
|
66ac35cbcc | ||
|
|
9e10ec7ff6 | ||
|
|
2f4c4e0948 | ||
|
|
cc0902f021 | ||
|
|
dd2bc6df9a | ||
|
|
edd3aa4ea0 | ||
|
|
aed143919e | ||
|
|
3607bb95a4 | ||
|
|
11edb980e8 | ||
|
|
d53b0b62c4 | ||
|
|
9411f28194 | ||
|
|
c27393c97e | ||
|
|
de5e811f12 | ||
|
|
66123e2876 | ||
|
|
17f02cd749 | ||
|
|
9c35c28e90 | ||
|
|
2540a8bcfe | ||
|
|
832a8c77c9 | ||
|
|
6e08ca8f14 | ||
|
|
ea0532d76a | ||
|
|
0a424deceb | ||
|
|
08623b50db | ||
|
|
fb4c15bf52 | ||
|
|
bdb30f15fa | ||
|
|
4cd3590a07 | ||
|
|
8717ca1b28 | ||
|
|
1de0fe9ab2 | ||
|
|
c3389a6cf8 | ||
|
|
ef75956a24 | ||
|
|
f2dc01c579 | ||
|
|
c297a60c85 | ||
|
|
744707ca5c | ||
|
|
4e5747b19b | ||
|
|
51be3fb130 | ||
|
|
c556c1e882 | ||
|
|
810729add9 | ||
|
|
0934aa9c6d | ||
|
|
85a5c99d46 | ||
|
|
8a256da26a | ||
|
|
d20717df00 | ||
|
|
490c05ed98 | ||
|
|
c29d9fcc45 | ||
|
|
9f97814027 | ||
|
|
f41bd698f7 | ||
|
|
05d9b18e9e | ||
|
|
fcc4122bcb | ||
|
|
77c1642b38 | ||
|
|
9b4658dc14 | ||
|
|
aac7544818 | ||
|
|
5e810e65a8 | ||
|
|
9637816262 | ||
|
|
6183263e60 | ||
|
|
336bf4e383 | ||
|
|
2a19e6ecf7 | ||
|
|
e035bf48e1 | ||
|
|
c1309cd97c | ||
|
|
062ef579c1 | ||
|
|
efa5e6a448 | ||
|
|
97c28b4fb7 | ||
|
|
b00bc79c38 | ||
|
|
ef9d7f4214 | ||
|
|
c99a616978 | ||
|
|
273947df19 | ||
|
|
0f68d02f83 | ||
|
|
7c21ed8869 | ||
|
|
3068b369e4 | ||
|
|
d43d82c9c1 | ||
|
|
a6cff1ffeb | ||
|
|
55fde1d87c | ||
|
|
09c92827bb | ||
|
|
2283d19d57 | ||
|
|
d976c066e1 | ||
|
|
fa88313ddc | ||
|
|
00346534b4 | ||
|
|
ad4f4e293c | ||
|
|
e0de52b915 | ||
|
|
692bb0221c | ||
|
|
823347fdd2 | ||
|
|
1caff81a88 | ||
|
|
1a6cfe2264 | ||
|
|
c122bbcde9 | ||
|
|
3e3effe8a0 | ||
|
|
10e5018f94 | ||
|
|
1c535cd9f0 | ||
|
|
3d863d49e1 | ||
|
|
ca89e31602 | ||
|
|
982e5876d9 | ||
|
|
8bc8ed95a9 | ||
|
|
c4d89f07af | ||
|
|
f4c7cff9e2 | ||
|
|
89f1f001ad | ||
|
|
f3f69ade45 | ||
|
|
fe8884c37f | ||
|
|
c90c740d83 | ||
|
|
bb0f7915f0 | ||
|
|
8606f43173 | ||
|
|
ca5ac8da6b | ||
|
|
978f82c809 | ||
|
|
bc84ea7529 | ||
|
|
019b9c3ebd | ||
|
|
f1d1bf9e02 | ||
|
|
8b64c6d2bc | ||
|
|
8ece709661 | ||
|
|
ac9648e885 | ||
|
|
ac9e907961 | ||
|
|
3bfe471110 | ||
|
|
bd9cb1ac86 | ||
|
|
5746ad1942 | ||
|
|
50f924e3c5 | ||
|
|
851ca1afe2 | ||
|
|
d7fd432f6e | ||
|
|
3be7abf381 | ||
|
|
41fce9b57c | ||
|
|
d8f98b4daa | ||
|
|
51be8e0622 | ||
|
|
f0ea95e141 | ||
|
|
a0f0333f5f | ||
|
|
fb2fd7d986 | ||
|
|
d9dddec33c | ||
|
|
fe79e4a5eb | ||
|
|
d781d2c2fc | ||
|
|
9be5d1461d | ||
|
|
28529560f0 | ||
|
|
ca08b3eb5f | ||
|
|
dfab58ce33 | ||
|
|
d69d223bce | ||
|
|
02f42a0bb7 | ||
|
|
d502a10103 | ||
|
|
127172938b | ||
|
|
dae65736a8 | ||
|
|
c0e9642d97 | ||
|
|
aedbbeb321 | ||
|
|
c88fb258be | ||
|
|
17948e8364 | ||
|
|
1c3f560cb0 | ||
|
|
3a95823256 | ||
|
|
2e5c678690 | ||
|
|
1a3ca7c0fe | ||
|
|
cb404637cf | ||
|
|
617090a8c5 | ||
|
|
bfdda59b39 | ||
|
|
c37e5afed1 | ||
|
|
373d25e2d6 | ||
|
|
157cefd657 | ||
|
|
63b3732f82 | ||
|
|
1c306bf7b5 | ||
|
|
a13f3020ca | ||
|
|
3eb9b6bd77 | ||
|
|
3d994a5f07 | ||
|
|
fbc68f1143 | ||
|
|
7227a4b084 | ||
|
|
62f1713a1a | ||
|
|
c56a96454a | ||
|
|
72842e8c36 | ||
|
|
bb13d1d98f | ||
|
|
ec115b3f8b | ||
|
|
8e79884e31 | ||
|
|
70051b66b7 | ||
|
|
46134b3b9a | ||
|
|
b1c30417ba | ||
|
|
90b994c752 | ||
|
|
0d4d39a959 | ||
|
|
344c3d72ec | ||
|
|
b26e3b31d8 | ||
|
|
2cc9801fbc | ||
|
|
2ee2377490 | ||
|
|
dd65f4f156 | ||
|
|
d5216886d8 | ||
|
|
02e059989e | ||
|
|
61763ed16f | ||
|
|
51e8c2797d | ||
|
|
4a1db1edcc | ||
|
|
9a7a338339 | ||
|
|
4fd3fb09c9 | ||
|
|
11bbb70c3f | ||
|
|
5605c5b794 | ||
|
|
14c5ea5b86 | ||
|
|
6fc1f8c2d0 | ||
|
|
0dfa8ceee1 | ||
|
|
29ae5bfb09 | ||
|
|
b970f047e4 | ||
|
|
752f50efd2 | ||
|
|
7737d162ce | ||
|
|
c10317ae2a | ||
|
|
b3f210702d | ||
|
|
8b6ae56202 | ||
|
|
b51bacb3f8 | ||
|
|
5c6b0b8679 | ||
|
|
2c417cd711 | ||
|
|
64065b9a2f | ||
|
|
211d2ac4a9 | ||
|
|
fca8e13c03 | ||
|
|
535963b229 | ||
|
|
b4470e1e62 | ||
|
|
b00009aaab | ||
|
|
b1f603d463 | ||
|
|
79b311af8d | ||
|
|
68c28df945 | ||
|
|
924707fa56 | ||
|
|
a218d09960 | ||
|
|
c012055835 | ||
|
|
5e5d362341 | ||
|
|
fe473bcd0a | ||
|
|
855d0d43b6 | ||
|
|
fdc641be88 | ||
|
|
fb4712dced | ||
|
|
2dbbff0185 | ||
|
|
83990e1160 | ||
|
|
44d8f8b96f | ||
|
|
f76e64157b | ||
|
|
bd01340315 | ||
|
|
c50067bf7d | ||
|
|
48840a3df4 | ||
|
|
1942239989 | ||
|
|
7ff420a82e | ||
|
|
8be54b3f31 | ||
|
|
db95c07e73 | ||
|
|
507c79c2a1 | ||
|
|
8f39473720 | ||
|
|
c4e9e6014b | ||
|
|
248c24b522 | ||
|
|
3c7db36f62 | ||
|
|
5a4c08fa5d | ||
|
|
1cf4e920f2 | ||
|
|
a26838db00 | ||
|
|
17608df71e | ||
|
|
e19100cbac | ||
|
|
0322b125a1 | ||
|
|
702561e215 | ||
|
|
351026377f | ||
|
|
0a8cfb108a | ||
|
|
ffbe03c283 | ||
|
|
8fefddde7a | ||
|
|
aac4c261db | ||
|
|
baeb09a800 | ||
|
|
ed69d7874e | ||
|
|
ef66e94cb1 | ||
|
|
7d1a674f22 | ||
|
|
536936f97b | ||
|
|
395d8a8ab8 | ||
|
|
a0b80a40f4 | ||
|
|
5c93b5a1af | ||
|
|
9d8cec7c4c | ||
|
|
f61174a5c7 | ||
|
|
8ddd9f07cc | ||
|
|
0ae498d9c1 | ||
|
|
0957ab7f66 | ||
|
|
a7443710ac | ||
|
|
1d8f4b2ebc | ||
|
|
cd2d7be69a | ||
|
|
491b628577 | ||
|
|
bd5e53b83d | ||
|
|
27bdc5d229 | ||
|
|
d40f4a78c6 | ||
|
|
6ccc85d318 | ||
|
|
51ba9270e7 | ||
|
|
8db71fe45e | ||
|
|
0a095d71f8 | ||
|
|
f3ea391aa9 | ||
|
|
a273bbb577 | ||
|
|
6c4ef2e674 | ||
|
|
237b7c4116 | ||
|
|
379d549300 | ||
|
|
aecd7dc9f9 | ||
|
|
8ccfe3c609 | ||
|
|
91c8406e27 | ||
|
|
d0341ba50c | ||
|
|
d93d4a3601 | ||
|
|
10f4fd1118 | ||
|
|
7357d0599b | ||
|
|
ac86b3097c | ||
|
|
063a8dd792 | ||
|
|
ea5fa5b252 | ||
|
|
94298cc1b5 | ||
|
|
f2e3b0e0bf | ||
|
|
f9cf9733a0 | ||
|
|
8a5a923c93 | ||
|
|
3483ea0d1b | ||
|
|
b6baffa97e | ||
|
|
1dfd295f40 | ||
|
|
49b5c2ca14 | ||
|
|
dccd98dd0c | ||
|
|
0002e871c2 | ||
|
|
d8356ae0c0 | ||
|
|
3178a7a61d | ||
|
|
2f2fc43fa6 | ||
|
|
093d7fd333 | ||
|
|
0bc96f58fd | ||
|
|
3f7a42ba49 | ||
|
|
9bc3926372 | ||
|
|
2d17aa5550 | ||
|
|
7dcfc8ee47 | ||
|
|
fa361904f6 | ||
|
|
00e75c0fb2 | ||
|
|
026ab8dcc6 | ||
|
|
7d42ed37e1 | ||
|
|
a5d01a9ffe | ||
|
|
675b7f6cea | ||
|
|
772373580a | ||
|
|
f0a19e38aa | ||
|
|
d1d6590547 | ||
|
|
03da960c33 | ||
|
|
2bdc010849 | ||
|
|
2d7e58d743 | ||
|
|
fa3a9f4f52 | ||
|
|
0dcc840179 | ||
|
|
58384004b4 | ||
|
|
3361c1f149 | ||
|
|
c7a4cbc365 | ||
|
|
de9c294977 |
BIN
.github/assets/obtainium-badge.png
vendored
Normal file
|
After Width: | Height: | Size: 18 KiB |
22
README.md
@@ -42,11 +42,12 @@ You can also clone this repository and choose to self-host.
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img height="42" src=".github/assets/app-store-badge.svg">](https://apps.apple.com/app/id1542026904)
|
||||
[<img height="42" src=".github/assets/play-store-badge.png">](https://play.google.com/store/apps/details?id=io.ente.photos)
|
||||
[<img height="42" src=".github/assets/f-droid-badge.png">](https://f-droid.org/packages/io.ente.photos.fdroid/)
|
||||
[<img height="42" src=".github/assets/desktop-badge.png">](https://ente.io/download/desktop)
|
||||
[<img height="42" src=".github/assets/web-badge.svg">](https://web.ente.io)
|
||||
[<img height="40" src=".github/assets/app-store-badge.svg">](https://apps.apple.com/app/id1542026904)
|
||||
[<img height="40" src=".github/assets/play-store-badge.png">](https://play.google.com/store/apps/details?id=io.ente.photos)
|
||||
[<img height="40" src=".github/assets/f-droid-badge.png">](https://f-droid.org/packages/io.ente.photos.fdroid/)
|
||||
[<img height="40" src=".github/assets/obtainium-badge.png">](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)
|
||||
[<img height="40" src=".github/assets/desktop-badge.png">](https://ente.io/download/desktop)
|
||||
[<img height="40" src=".github/assets/web-badge.svg">](https://web.ente.io)
|
||||
|
||||
</div>
|
||||
|
||||
@@ -67,11 +68,12 @@ want to give back, please check out Ente Photos or spread the word.
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img height="42" src=".github/assets/app-store-badge.svg">](https://apps.apple.com/app/id6444121398)
|
||||
[<img height="42" src=".github/assets/play-store-badge.png">](https://play.google.com/store/apps/details?id=io.ente.auth)
|
||||
[<img height="42" src=".github/assets/f-droid-badge.png">](https://f-droid.org/packages/io.ente.auth/)
|
||||
[<img height="42" src=".github/assets/desktop-badge.png">](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v4)
|
||||
[<img height="42" src=".github/assets/web-badge.svg">](https://auth.ente.io)
|
||||
[<img height="40" src=".github/assets/app-store-badge.svg">](https://apps.apple.com/app/id6444121398)
|
||||
[<img height="40" src=".github/assets/play-store-badge.png">](https://play.google.com/store/apps/details?id=io.ente.auth)
|
||||
[<img height="40" src=".github/assets/f-droid-badge.png">](https://f-droid.org/packages/io.ente.auth/)
|
||||
[<img height="40" src=".github/assets/obtainium-badge.png">](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)
|
||||
[<img height="40" src=".github/assets/desktop-badge.png">](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v4)
|
||||
[<img height="40" src=".github/assets/web-badge.svg">](https://auth.ente.io)
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@@ -20,6 +20,12 @@
|
||||
"title": "airtm",
|
||||
"hex": "000000"
|
||||
},
|
||||
{
|
||||
"title": "aliyun",
|
||||
"altNames": [
|
||||
"阿里云"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Amazon"
|
||||
},
|
||||
@@ -30,6 +36,16 @@
|
||||
{
|
||||
"title": "AscendEX"
|
||||
},
|
||||
{
|
||||
"title": "BaiduCloud",
|
||||
"altNames": [
|
||||
"百度云",
|
||||
"baiduyun"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Band"
|
||||
},
|
||||
{
|
||||
"title": "Battle.net",
|
||||
"slug": "battlenet",
|
||||
@@ -38,12 +54,25 @@
|
||||
"Blizzard"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "BBS.NGA",
|
||||
"altNames": [
|
||||
"NGA玩家社区",
|
||||
"NGA社区"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Bethesda",
|
||||
"altNames": [
|
||||
"Bethesda Softworks"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Binance",
|
||||
"altNames": [
|
||||
"币安"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "BinanceUS",
|
||||
"slug": "binance_us",
|
||||
@@ -327,6 +356,12 @@
|
||||
"title": "Jagex",
|
||||
"hex": "D3D800"
|
||||
},
|
||||
{
|
||||
"title": "jianguoyun",
|
||||
"altNames": [
|
||||
"坚果云"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Kagi"
|
||||
},
|
||||
@@ -356,9 +391,23 @@
|
||||
"title": "La Poste",
|
||||
"slug": "laposte"
|
||||
},
|
||||
{
|
||||
"title": "Lark",
|
||||
"altNames": [
|
||||
"飞书"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Letterboxd"
|
||||
},
|
||||
{
|
||||
"title": "Linux.Do",
|
||||
"slug": "LINUX_DO",
|
||||
"altNames": [
|
||||
"LINUX DO",
|
||||
"LinxDo"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Local",
|
||||
"slug": "local_wp",
|
||||
@@ -446,6 +495,13 @@
|
||||
"title": "Name.com",
|
||||
"slug": "name_com"
|
||||
},
|
||||
{
|
||||
"title": "NeteaseMail",
|
||||
"altNames": [
|
||||
"网易邮箱",
|
||||
"Mail.163"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "NextDNS"
|
||||
},
|
||||
@@ -459,6 +515,12 @@
|
||||
"title": "ngrok",
|
||||
"hex": "858585"
|
||||
},
|
||||
{
|
||||
"title": "Nintendo",
|
||||
"altNames": [
|
||||
"任天堂"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Njalla"
|
||||
},
|
||||
@@ -487,7 +549,10 @@
|
||||
},
|
||||
{
|
||||
"title": "okx",
|
||||
"hex": "000000"
|
||||
"hex": "000000",
|
||||
"altNames": [
|
||||
"欧易"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Parsec"
|
||||
@@ -495,6 +560,11 @@
|
||||
{
|
||||
"title": "PayPal"
|
||||
},
|
||||
{
|
||||
"title": "PBTech",
|
||||
"slug": "pbtech",
|
||||
"hex": "f08222"
|
||||
},
|
||||
{
|
||||
"title": "pCloud"
|
||||
},
|
||||
@@ -531,10 +601,21 @@
|
||||
{
|
||||
"title": "Proxmox"
|
||||
},
|
||||
{
|
||||
"title": "qiniuyun",
|
||||
"altNames": [
|
||||
"七牛云",
|
||||
"qiniu"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Real-Debrid",
|
||||
"slug": "real_debrid"
|
||||
},
|
||||
{
|
||||
"title": "RealMe",
|
||||
"slug": "realme"
|
||||
},
|
||||
{
|
||||
"title": "Registro br",
|
||||
"slug": "registro_br",
|
||||
@@ -580,6 +661,13 @@
|
||||
{
|
||||
"title": "SimpleLogin"
|
||||
},
|
||||
{
|
||||
"title": "Simplicity",
|
||||
"altNames": [
|
||||
"simplicitynz",
|
||||
"simplicity.kiwi"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Sipgate"
|
||||
},
|
||||
@@ -625,6 +713,14 @@
|
||||
{
|
||||
"title": "TCPShield"
|
||||
},
|
||||
{
|
||||
"title": "tencent cloud",
|
||||
"slug": "tencent_cloud"
|
||||
"altNames": [
|
||||
"腾讯云",
|
||||
"tencentcloud"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Techlore",
|
||||
"altNames": [
|
||||
@@ -646,6 +742,12 @@
|
||||
{
|
||||
"title": "Titan"
|
||||
},
|
||||
{
|
||||
"title": "tianyiyun",
|
||||
"altNames": [
|
||||
"天翼云"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "TorGuard"
|
||||
},
|
||||
@@ -695,6 +797,15 @@
|
||||
{
|
||||
"title": "Vikunja"
|
||||
},
|
||||
{
|
||||
"title": "volcengine",
|
||||
"altNames": [
|
||||
"火山引擎"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "WARGAMING.NET"
|
||||
},
|
||||
{
|
||||
"title": "Wealthfront"
|
||||
},
|
||||
|
||||
1
auth/assets/custom-icons/icons/BAND.svg
Normal file
|
After Width: | Height: | Size: 16 KiB |
1
auth/assets/custom-icons/icons/BBS.NGA.svg
Normal file
|
After Width: | Height: | Size: 52 KiB |
1
auth/assets/custom-icons/icons/BaiduCloud.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1727340333809" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8815" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M245.824 651.52V459.776c0-37.44-18.56-72.512-51.2-91.264L64.32 291.328v465.472c0 11.712 6.976 23.36 16.256 28.096l400.32 233.856v-152c0-37.44-18.624-72.512-51.2-91.264L262.144 679.68c-9.344-7.04-16.32-16.384-16.32-28.096" fill="#008DD5" p-id="8816"></path><path d="M760.192 679.616l-167.616 98.24c-32.576 18.688-51.2 53.76-51.2 91.2v152.064l400.32-233.92a32.448 32.448 0 0 0 16.256-28.032v-467.84l-130.304 74.88c-32.576 18.688-51.2 53.76-51.2 91.2v191.808c0 14.08-6.976 23.36-16.256 30.4" fill="#EE3306" p-id="8817"></path><path d="M701.952 101.888L534.4 3.648a39.552 39.552 0 0 0-32.576 0L101.568 237.568l130.304 74.88c32.64 18.688 72.128 18.688 102.4 0l167.552-98.304c2.368-2.304 4.672-2.304 7.04-2.304a32.832 32.832 0 0 1 25.6 2.304l167.488 98.24c32.64 18.752 72.192 18.752 102.4 0l130.368-74.88-232.768-135.616z" fill="#5AB200" p-id="8818"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
1
auth/assets/custom-icons/icons/Binance.svg
Normal file
|
After Width: | Height: | Size: 15 KiB |
1
auth/assets/custom-icons/icons/LINUX_DO.svg
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
1
auth/assets/custom-icons/icons/Lark.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1727340558126" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="16285" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M891.318857 340.845714c4.900571 0 9.728 0.292571 14.628572 0.804572a409.965714 409.965714 0 0 1 108.836571 30.061714c10.093714 4.534857 12.580571 8.192 3.949714 17.334857-24.868571 26.624-45.494857 57.051429-61.001143 89.965714-16.822857 35.328-35.108571 69.851429-52.297142 105.033143a225.28 225.28 0 0 1-52.150858 69.412572c-53.613714 48.493714-116.150857 68.973714-187.538285 59.099428-81.92-11.337143-159.451429-38.985143-232.740572-75.483428a143.506286 143.506286 0 0 1-10.459428-5.485715 5.339429 5.339429 0 0 1 0.292571-9.216l5.12-2.706285c59.245714-31.670857 108.836571-75.849143 156.525714-122.294857 20.187429-19.529143 39.497143-40.009143 59.904-59.318858A345.014857 345.014857 0 0 1 804.571429 352.256c13.165714-3.218286 26.550857-5.778286 39.789714-8.630857h0.585143l28.233143-2.56" fill="#133C9A" p-id="16286"></path><path d="M317.659429 913.846857c-8.996571-0.512-31.158857-3.584-33.865143-3.949714a536.429714 536.429714 0 0 1-165.083429-48.274286c-30.208-14.116571-59.245714-30.72-88.356571-46.957714-19.163429-10.678857-27.794286-27.282286-27.648-49.883429 0.585143-83.382857 0.585143-166.765714 0-250.148571C2.413714 461.019429 0.731429 407.405714 0 353.718857c0-4.754286 0.731429-9.508571 2.194286-13.897143 3.291429-9.728 9.947429-10.24 16.530285-3.949714 7.606857 7.314286 13.677714 16.237714 21.211429 23.405714 67.291429 66.413714 138.752 127.195429 218.770286 177.225143 45.056 28.891429 91.940571 54.710857 140.434285 77.385143 77.750857 35.328 157.549714 66.486857 241.078858 86.235429 73.874286 17.481143 145.627429 6.436571 205.458285-40.374858 18.285714-15.652571 27.282286-27.062857 48.932572-55.881142a359.862857 359.862857 0 0 1-37.376 72.850285c-13.897143 21.942857-45.348571 51.2-69.193143 74.093715-36.278857 35.108571-83.748571 63.561143-128.292572 87.552-48.566857 26.185143-99.035429 47.104-152.941714 58.514285-27.648 6.948571-67.584 14.848-81.334857 15.579429-2.413714-0.146286-10.678857 1.682286-14.848 1.389714-35.547429 2.633143-57.490286 3.657143-92.891429 0z" fill="#3370FF" p-id="16287"></path><path d="M165.083429 110.518857a52.443429 52.443429 0 0 1 7.460571 0c152.649143 0 304.128 2.486857 456.630857 2.486857 0.292571 0 0.585143 0 0.731429 0.219429 14.189714 12.361143 27.282286 25.746286 39.277714 40.155428 34.450286 34.230857 60.123429 93.622857 77.677714 129.755429 8.777143 25.014857 21.942857 48.859429 28.16 76.8v0.438857c-15.579429 5.046857-30.72 11.190857-45.348571 18.505143-44.178286 22.381714-64.219429 38.765714-100.790857 74.752-19.968 19.529143-37.010286 37.083429-63.488 62.098286a563.346286 563.346286 0 0 1-29.769143 26.916571c-7.021714-12.434286-125.732571-244.589714-364.251429-427.300571" fill="#00D6B9" p-id="16288"></path></svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
1
auth/assets/custom-icons/icons/NeteaseMail.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1727340195618" class="icon" viewBox="0 0 1050 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6355" xmlns:xlink="http://www.w3.org/1999/xlink" width="205.078125" height="200"><path d="M681.80215 142.259694a100.529011 100.529011 0 0 1-66.041812 37.537087 1221.89083 1221.89083 0 0 1-206.102068 5.630563l-4.486854-3.372473V0c-37.537087 37.537087-82.962827 37.537087-129.884186 41.672032v143.69666H128.130119A120.52924 120.52924 0 0 0 2.322226 289.416805a211.439372 211.439372 0 0 0-2.228765 37.537087v581.062375a119.708116 119.708116 0 0 1 75.074174-37.537087 428.157397 428.157397 0 0 1 57.801249-4.516181h425.224812a119.356206 119.356206 0 0 0 119.004296-97.948336 231.204995 231.204995 0 0 0 3.372473-42.434504V156.570709z m-203.814651 675.667564H130.388209V309.680967a64.516868 64.516868 0 0 1 72.816084-72.816084h72.845409v265.369609H221.972836a70.557993 70.557993 0 0 0-75.044848 63.431812 239.328255 239.328255 0 0 1 128.359242-10.87989v212.084541c0 18.768543 3.753709 22.522252 22.141016 22.522252h85.220917c18.768543 0 22.522252-3.372473 22.522253-21.75978V569.801249c0-13.13798 4.134945-17.272925 16.891689-16.510453a301.235122 301.235122 0 0 0 48.798213 0 70.557993 70.557993 0 0 0 64.92743-62.698666c-40.90956 23.284724-85.044962 7.888653-129.033737 13.519217V241.351738h144.517785v504.873819a65.308666 65.308666 0 0 1-73.314623 71.320465z m572.440575-299.534223v-16.891689h-67.449453a93.842717 93.842717 0 0 0 66.83361-90.910132 201.996449 201.996449 0 0 0 0-20.528095V103.608225a127.156882 127.156882 0 0 1-70.206083 33.783378 581.267656 581.267656 0 0 1-67.18552 7.888654h-60.059339a121.966207 121.966207 0 0 0-128.623174 131.526433v747.19331c27.038433-34.89776 64.92743-34.135288 102.464517-37.537087v-130.617332h88.974626a124.282949 124.282949 0 0 0 134.898906-135.133513c0.762472-67.449453 0.381236-134.898906 0.381236-202.348359z m-103.608225 216.19016a64.194284 64.194284 0 0 1-70.587319 70.587319h-48.387651V270.267026a64.516868 64.516868 0 0 1 75.074174-75.074174h44.663268v276.278824c-75.074174 7.126181-94.223953 20.528094-101.731371 61.584284 15.777307-2.932585 31.906524-7.126181 48.416977-8.6218s34.54585 0 53.69563 0v17.59551z m0 0" p-id="6356" fill="#d81e06"></path></svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
1
auth/assets/custom-icons/icons/aliyun.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1727340610287" class="icon" viewBox="0 0 1653 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="17270" xmlns:xlink="http://www.w3.org/1999/xlink" width="322.8515625" height="200"><path d="M344.8620198 721.82988526a57.857089 57.857089 0 0 1-46.13274501-56.07295017v-308.4012244a59.89610558 59.89610558 0 0 1 46.13274501-56.07295017l286.35436058-62.06256065 30.07549089-122.72329718H328.80476645A210.78331632 210.78331632 0 0 0 116.61962599 327.28021902v364.47417458a213.71440233 213.71440233 0 0 0 212.18514046 212.31257895h332.48710482l-30.07549089-122.21354321zM1178.05508073 116.49690269H843.01920461l30.58524561 122.72329718 286.35436059 62.06256065a57.98452749 57.98452749 0 0 1 46.132745 56.07295017v308.4012244a60.15098257 60.15098257 0 0 1-46.13274502 56.07295017l-286.35436057 62.06256066-30.58524561 122.72329716H1178.05508073a212.44001744 212.44001744 0 0 0 212.94977139-212.82233291V327.28021902A213.33208686 213.33208686 0 0 0 1178.05508073 116.49690269z" fill="#F76E05" p-id="17271"></path><path d="M631.21638038 495.49906876h244.29964793v30.07549166H631.21638038z" fill="#F76E05" p-id="17272"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
1
auth/assets/custom-icons/icons/jianguoyun.svg
Normal file
|
After Width: | Height: | Size: 28 KiB |
10
auth/assets/custom-icons/icons/pbtech.svg
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generator: Adobe Illustrator 26.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 160.5 95.1" style="enable-background:new 0 0 160.5 95.1;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#FFFFFF;}
|
||||
</style>
|
||||
<path class="st0" d="M152,47.7c2.3-2.3,4.5-5,5.9-8.1c8-18.1-3.6-37.8-23.4-38.5h-51v19.7h48.4c5,0,8.7,3.6,8.8,8.3 c0.1,4.9-3.1,8.3-8.3,8.7c-1,0.1-48.8,0-48.8,0v56.3h51c19.8-0.7,31.4-20.4,23.4-38.5C156.6,52.7,154.4,50,152,47.7z M131.9,74.5 h-28.5v-17c13.3,0,28.5,0,29,0c5.2,0.4,8.5,3.8,8.3,8.7C140.5,70.9,136.9,74.5,131.9,74.5z"/>
|
||||
<path class="st0" d="M20.8,67.3V94H1.3V64c0.3-15,10.2-25.2,25.3-26.1c7.6-0.4,15.2-0.1,22.8-0.2c4.4-0.1,7.7-2.3,8.7-5.8 c1-3.7,0.1-6.9-2.9-9.4c-1.6-1.3-3.5-1.9-5.6-1.8H29V1.1h19.2c4.3,0,6.1,0.4,8.4,0.9c13.7,2.7,21.6,13.3,21.3,28.3 c-0.3,14.1-9.2,24.4-22.8,26.3c-8.2,1.2-16.4,0.4-24.7,0.6c-6.2,0.1-9.6,3-9.6,9.3L20.8,67.3z"/>
|
||||
<rect x="1.2" y="1.3" class="st0" width="19.5" height="19.5"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
1
auth/assets/custom-icons/icons/qiniuyun.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1727340476837" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12844" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M1019.830857 176.274286c-4.242286-4.169143-8.484571-4.169143-12.726857-4.169143-12.8 4.242286-165.741714 259.145143-497.152 250.660571-55.222857 0-114.761143-4.242286-169.984-21.211428L314.587429 312.32s-4.242286-21.211429-25.526858-34.011429c-16.969143-8.484571-25.453714-8.484571-29.696-4.242285v4.242285l12.726858 101.961143C106.276571 308.077714 21.284571 176.347429 12.8 172.105143c-4.242286 0-8.484571 0-12.726857 4.242286v12.726857a519.314286 519.314286 0 0 0 280.429714 310.125714l38.253714 242.249143c4.242286 68.022857 50.980571 110.445714 110.445715 110.445714h182.710857c59.465143 0 106.203429-42.422857 110.445714-110.445714l34.011429-199.68v-4.242286s-16.969143 0-50.980572 21.211429c-34.011429 25.526857-42.422857 59.465143-42.422857 59.465143s-34.011429 84.992-42.569143 119.003428c-8.484571 38.253714-50.980571 34.011429-50.980571 34.011429H467.456c-16.969143 0-34.011429-12.8-34.011429-29.769143l-59.465142-212.48c42.422857 12.8 89.234286 17.042286 140.214857 17.042286 237.933714 0 437.613714-144.457143 509.878857-356.937143-4.242286 0-4.242286-8.484571-4.242286-12.726857" fill="#02A7E0" p-id="12845"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
13
auth/assets/custom-icons/icons/realme.svg
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 343 358" style="enable-background:new 0 0 343 358;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#D64309;}
|
||||
</style>
|
||||
<path class="st0" d="M171.3,102.6c0,0-69-2.1-69,52.4c0,54.5,32.8,99.8,69,99.8c36.2,0,69-45.4,69-99.8
|
||||
C240.3,100.5,171.3,102.6,171.3,102.6z M154.6,171.1c-1.7,3.7-5.1,5.6-9.9,5.6c-4.9,0-8.3-1.9-9.9-5.6c-0.7-1.5-1-3.2-1-5.4
|
||||
c0-2.3,0.3-3.9,1-5.5c1.7-3.7,5-5.5,9.9-5.5c4.8,0,8.2,1.8,9.9,5.5c0.7,1.6,1,3.2,1,5.5C155.6,167.9,155.3,169.6,154.6,171.1z
|
||||
M214.1,152.1c-4.3-0.6-17.1-0.7-23.9,5.3c-3.4,3-5.1,7.4-5.1,13.3v40.2h-15.4v-40.2c0-10.4,3.6-19,10.4-24.9
|
||||
c13.3-11.6,33.7-9.2,36-8.9L214.1,152.1z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 906 B |
1
auth/assets/custom-icons/icons/simplicity.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 90 90"><path fill="#FF5900" fill-rule="nonzero" d="m76.14 69.42-1.43.92a53.07 53.07 0 0 1-60.03-.06l-1.42-.92L8 78.34l1.24.8a63.44 63.44 0 0 0 70.98 0l1.23-.8-5.31-8.92Zm-54.1-8.74L57.9 0H71.3l-35.8 60.68H22.04ZM36.63 5.23A15.12 15.12 0 0 0 25.75.73c-4.27 0-7.98 1.49-10.95 4.44a14.73 14.73 0 0 0-4.45 10.9c0 4.3 1.48 7.93 4.45 10.89 2.85 2.89 6.8 4.55 10.95 4.43 4.2 0 7.85-1.54 10.88-4.5a14.99 14.99 0 0 0 4.51-10.83c.06-4.07-1.57-8-4.51-10.83Zm-6.56 15.14a5.58 5.58 0 0 1-4.26 1.79 6.01 6.01 0 0 1-4.4-1.79 5.59 5.59 0 0 1-1.79-4.3c0-1.73.62-3.15 1.8-4.32a5.9 5.9 0 0 1 4.39-1.78 6 6 0 0 1 4.33 1.78 6.02 6.02 0 0 1-.07 8.62Zm48.42 15.2a15 15 0 0 0-10.89-4.5c-4.26 0-7.97 1.49-10.94 4.44a14.73 14.73 0 0 0-4.45 10.83c0 4.3 1.48 7.94 4.45 10.9 2.84 2.89 6.8 4.55 10.94 4.42 4.2 0 7.86-1.53 10.89-4.49A14.99 14.99 0 0 0 83 46.34c0-4.06-1.6-8-4.51-10.77Zm-6.56 15.14a6.01 6.01 0 0 1-4.33 1.79 6.01 6.01 0 0 1-6.12-6.16c0-1.72.62-3.14 1.8-4.3a5.9 5.9 0 0 1 4.39-1.8 6 6 0 0 1 4.32 1.8 5.95 5.95 0 0 1-.06 8.67Z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
1
auth/assets/custom-icons/icons/tencent_cloud.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1727340512759" class="icon" viewBox="0 0 1402 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13871" xmlns:xlink="http://www.w3.org/1999/xlink" width="273.828125" height="200"><path d="M1215.068154 831.197568a199.23384 199.23384 0 0 1-148.202014 58.441927l-477.741777 1.258319c148.202014-142.329859 263.967361-265.64512 276.830178-271.796902a660.058216 660.058216 0 0 1 64.453895-58.302113c51.311452-58.302113 96.471122-64.873335 141.910419-65.013148a190.006167 190.006167 0 0 1 142.190046 57.882674c77.596338 70.885303 77.875964 206.364314 0 277.529243z m95.911869-368.128211c-58.302113-57.882673-142.329859-102.902531-226.217791-102.622904S936.979657 393.162747 878.258104 432.310449c-19.294224 19.573851-57.882673 45.439297-83.887932 83.887932-32.017228 19.294224-508.360872 504.725728-508.360872 504.725728l703.679942-1.398132a520.384809 520.384809 0 0 0 109.613565-6.711035 372.322608 372.322608 0 0 0 206.364314-91.15822c122.336568-129.467043 121.777315-335.55173 5.312902-458.307738z" fill="#00A3FF" p-id="13872"></path><path d="M517.539994 432.310449a322.688914 322.688914 0 0 0-200.212532-64.034456 289.553181 289.553181 0 0 0-226.497418 104.440477A333.174906 333.174906 0 0 0 98.100331 937.455616q77.596338 77.316711 174.4869 77.037085l128.767977-123.175448h-70.605677A264.386801 264.386801 0 0 1 181.988264 833.854019c-77.596338-77.176898-77.875964-199.793093 0-283.960651a180.638682 180.638682 0 0 1 141.211353-58.441927c38.868075 0 77.456524 6.291595 129.327229 57.882674 19.573851 25.585819 77.596338 64.314082 97.030376 90.039714h6.431408l77.316711-90.598967c-25.725633-32.57648-90.598967-83.608306-115.765347-116.464413" fill="#00C8DC" p-id="13873"></path><path d="M1103.916643 282.850115C1045.334904 115.214063 877.279412-1.110536 696.500917 0.007969 476.99416 0.567222 303.206326 162.470932 265.037317 368.97506c12.862816 0 32.157041-6.431408 51.591079-6.431409s51.591079 6.291595 71.025116 6.151782A303.39469 303.39469 0 0 1 683.917727 129.055572 313.601055 313.601055 0 0 1 968.297819 308.995188s6.571221 6.431408 6.431408 0c45.299484-6.431408 90.459154-26.005259 129.187416-26.145073" fill="#006EFF" p-id="13874"></path></svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
11
auth/assets/custom-icons/icons/tianyiyun.svg
Normal file
@@ -0,0 +1,11 @@
|
||||
<svg width="1606" height="1005.0000000000001" xmlns="http://www.w3.org/2000/svg" class="icon">
|
||||
|
||||
<g>
|
||||
<title>background</title>
|
||||
<rect fill="none" id="canvas_background" height="1007" width="1608" y="-1" x="-1"/>
|
||||
</g>
|
||||
<g>
|
||||
<title>Layer 1</title>
|
||||
<path id="svg_4" class="selected" fill="#F3A22F" d="m1332.2,333.8c-12.8,-108.8 -108.8,-185.6 -217.6,-185.6c-25.6,0 -57.6,6.4 -83.2,12.8c-70.4,-83.2 -179.2,-134.4 -288,-134.4c-147.2,0 -275.2,83.2 -339.2,211.2l-19.2,0c-198.4,0 -358.4,153.6 -364.8,352s153.6,358.4 352,364.8l467.2,0c38.4,0 70.4,-32 70.4,-70.4c0,-38.4 -32,-70.4 -70.4,-70.4l-435.2,0l-6.4,0c-115.2,0 -211.2,-89.6 -211.2,-204.8c0,-108.8 83.2,-198.4 192,-211.2c19.2,0 44.8,0 64,6.4l6.4,0l44.8,12.8c12.8,-128 121.6,-230.4 256,-230.4c89.6,0 172.8,51.2 217.6,128c6.4,12.8 6.4,19.2 12.8,32l12.8,-12.8c32,-25.6 76.8,-32 115.2,-25.6l0,-6.4c64,6.4 108.8,57.6 108.8,121.6c0,19.2 -6.4,38.4 -12.8,57.6c19.2,12.8 32,25.6 57.6,32c12.8,-12.8 25.6,-19.2 32,-32c102.4,6.4 179.2,96 172.8,198.4c-6.4,96 -89.6,172.8 -192,172.8c-76.8,0 -153.6,-51.2 -179.2,-128l76.8,0c12.8,0 19.2,-6.4 19.2,-19.2c0,-6.4 0,-6.4 -6.4,-12.8l-153.6,-204.8c-6.4,-6.4 -19.2,-12.8 -32,-6.4l-6.4,6.4l-153.6,204.8c-6.4,6.4 -6.4,25.6 6.4,32c6.4,0 6.4,6.4 12.8,6.4l89.6,0c32,179.2 204.8,300.8 384,268.8s300.8,-204.8 268.8,-384c-25.6,-153.6 -134.4,-256 -268.8,-281.6z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
1
auth/assets/custom-icons/icons/volcengine.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1727340360476" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9874" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M836.395 475.861L709.973 970.155a8.661 8.661 0 0 0 0 4.138 9.216 9.216 0 0 0 9.174 7.04H971.86a9.216 9.216 0 0 0 9.216-11.178L854.06 475.86a9.301 9.301 0 0 0-14.379-4.736 8.96 8.96 0 0 0-3.328 4.694M140.8 587.86L42.88 970.155a9.173 9.173 0 0 0 9.259 11.136h195.029a9.344 9.344 0 0 0 7.381-3.328 8.917 8.917 0 0 0 1.792-3.67 8.661 8.661 0 0 0 0.043-4.138L158.379 587.86a8.96 8.96 0 0 0-3.328-4.65 9.387 9.387 0 0 0-5.419-1.792 9.387 9.387 0 0 0-5.547 1.792 8.96 8.96 0 0 0-3.285 4.65" fill="#00E5E5" p-id="9875"></path><path d="M313.43 271.36L135.082 970.155a8.96 8.96 0 0 0 1.706 7.594 9.088 9.088 0 0 0 7.04 3.542h356.822a9.216 9.216 0 0 0 9.258-11.094L331.051 271.275a8.96 8.96 0 0 0-3.328-4.651 9.387 9.387 0 0 0-5.462-1.792 9.387 9.387 0 0 0-5.504 1.792 8.96 8.96 0 0 0-3.328 4.693" fill="#006EFF" p-id="9876"></path><path d="M621.141 49.11a8.96 8.96 0 0 0-3.328-4.651 9.387 9.387 0 0 0-5.504-1.792 9.387 9.387 0 0 0-5.461 1.792 8.96 8.96 0 0 0-3.328 4.65L359.723 970.155a9.173 9.173 0 0 0 9.216 11.093h487.253a9.344 9.344 0 0 0 7.339-3.328 9.472 9.472 0 0 0 1.877-3.67 9.173 9.173 0 0 0 0-4.095L621.141 49.109z" fill="#006EFF" p-id="9877"></path><path d="M442.027 372.95L287.36 970.111a8.832 8.832 0 0 0 1.835 7.85 9.216 9.216 0 0 0 7.381 3.371h308.608a9.387 9.387 0 0 0 7.424-3.413 9.301 9.301 0 0 0 1.835-7.808L459.648 372.907a8.96 8.96 0 0 0-3.328-4.608 9.387 9.387 0 0 0-5.504-1.835 9.387 9.387 0 0 0-5.461 1.835 8.96 8.96 0 0 0-3.328 4.608" fill="#00E5E5" p-id="9878"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
5
auth/assets/custom-icons/icons/wargaming.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="96" height="96" viewBox="0 0 96 96">
|
||||
<g style="mix-blend-mode:difference">
|
||||
<path fill="white" fill-rule="evenodd" d="M47.77,1A47,47,0,1,1,1,48.23V48A46.87,46.87,0,0,1,47.71,1Zm0,9a38.12,38.12,0,0,1,19.13,71A82.23,82.23,0,0,0,69.84,54.5c2.44.69,3.82,1.08,6.27,1.87A128.54,128.54,0,0,0,66.2,36.09,81.28,81.28,0,0,1,53.06,54.25l7.84-.49c-6.75,12.12-16.27,18-28.33,19.71-2.75-13.71-.69-36,14.7-46.48l1.56,7.48c3-4.83,8.93-11.22,13.34-15.67a41.77,41.77,0,0,0-22.83-2.15c1.27,1.09,2.84,2.47,4.11,3.55C26.1,27.57,16.57,39.68,10.3,53.76A38.3,38.3,0,0,1,47.77,9.94Z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 634 B |
@@ -50,10 +50,10 @@ PODS:
|
||||
- flutter_inappwebview_ios (0.0.1):
|
||||
- Flutter
|
||||
- flutter_inappwebview_ios/Core (= 0.0.1)
|
||||
- OrderedSet (~> 5.0)
|
||||
- OrderedSet (~> 6.0.3)
|
||||
- flutter_inappwebview_ios/Core (0.0.1):
|
||||
- Flutter
|
||||
- OrderedSet (~> 5.0)
|
||||
- OrderedSet (~> 6.0.3)
|
||||
- flutter_local_authentication (1.2.0):
|
||||
- Flutter
|
||||
- flutter_local_notifications (0.0.1):
|
||||
@@ -71,7 +71,7 @@ PODS:
|
||||
- move_to_background (0.0.1):
|
||||
- Flutter
|
||||
- MTBBarcodeScanner (5.0.11)
|
||||
- OrderedSet (5.0.0)
|
||||
- OrderedSet (6.0.3)
|
||||
- package_info_plus (0.4.5):
|
||||
- Flutter
|
||||
- path_provider_foundation (0.0.1):
|
||||
@@ -85,11 +85,11 @@ PODS:
|
||||
- SDWebImage (5.19.7):
|
||||
- SDWebImage/Core (= 5.19.7)
|
||||
- SDWebImage/Core (5.19.7)
|
||||
- Sentry/HybridSDK (8.33.0)
|
||||
- sentry_flutter (8.7.0):
|
||||
- Sentry/HybridSDK (8.36.0)
|
||||
- sentry_flutter (8.9.0):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- Sentry/HybridSDK (= 8.33.0)
|
||||
- Sentry/HybridSDK (= 8.36.0)
|
||||
- share_plus (0.0.1):
|
||||
- Flutter
|
||||
- shared_preferences_foundation (0.0.1):
|
||||
@@ -231,7 +231,7 @@ SPEC CHECKSUMS:
|
||||
fk_user_agent: 1f47ec39291e8372b1d692b50084b0d54103c545
|
||||
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
|
||||
flutter_email_sender: 10a22605f92809a11ef52b2f412db806c6082d40
|
||||
flutter_inappwebview_ios: 97215cf7d4677db55df76782dbd2930c5e1c1ea0
|
||||
flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4
|
||||
flutter_local_authentication: 1172a4dd88f6306dadce067454e2c4caf07977bb
|
||||
flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086
|
||||
flutter_native_splash: edf599c81f74d093a4daf8e17bd7a018854bc778
|
||||
@@ -240,14 +240,14 @@ SPEC CHECKSUMS:
|
||||
local_auth_darwin: 66e40372f1c29f383a314c738c7446e2f7fdadc3
|
||||
move_to_background: 39a5b79b26d577b0372cbe8a8c55e7aa9fcd3a2d
|
||||
MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
|
||||
OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
|
||||
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
|
||||
package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c
|
||||
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
||||
privacy_screen: 1a131c052ceb3c3659934b003b0d397c2381a24e
|
||||
qr_code_scanner: bb67d64904c3b9658ada8c402e8b4d406d5d796e
|
||||
SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3
|
||||
Sentry: 8560050221424aef0bebc8e31eedf00af80f90a6
|
||||
sentry_flutter: e26b861f744e5037a3faf9bf56603ec65d658a61
|
||||
Sentry: f8374b5415bc38dfb5645941b3ae31230fbeae57
|
||||
sentry_flutter: 0eb93e5279eb41e2392212afe1ccd2fecb4f8cbe
|
||||
share_plus: 8875f4f2500512ea181eef553c3e27dba5135aad
|
||||
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
|
||||
sodium_libs: 1faae17af662384acbd13e41867a0008cd2e2318
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
library super_logging;
|
||||
|
||||
import 'dart:async';
|
||||
import 'dart:collection';
|
||||
import 'dart:core';
|
||||
|
||||
@@ -1,146 +0,0 @@
|
||||
// Inspired from https://github.com/netfarm/lehttp_overrides
|
||||
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
import 'dart:typed_data';
|
||||
|
||||
// expired
|
||||
const String kSha1DstX3 = 'DAC9024F54D8F6DF94935FB1732638CA6AD77C13';
|
||||
|
||||
// ISRG Root X1
|
||||
const String kIsrgRootX1 = '''-----BEGIN CERTIFICATE-----
|
||||
MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
|
||||
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
|
||||
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
|
||||
WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
|
||||
ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
|
||||
MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
|
||||
h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
|
||||
0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
|
||||
A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
|
||||
T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
|
||||
B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
|
||||
B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
|
||||
KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
|
||||
OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
|
||||
jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
|
||||
qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
|
||||
rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
|
||||
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
|
||||
hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
|
||||
ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
|
||||
3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
|
||||
NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
|
||||
ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
|
||||
TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
|
||||
jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
|
||||
oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
|
||||
4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
|
||||
mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
|
||||
emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
|
||||
-----END CERTIFICATE-----''';
|
||||
|
||||
const String kIsrgRootX1Alt = '''-----BEGIN CERTIFICATE-----
|
||||
MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/
|
||||
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
|
||||
DkRTVCBSb290IENBIFgzMB4XDTIxMDEyMDE5MTQwM1oXDTI0MDkzMDE4MTQwM1ow
|
||||
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
|
||||
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwggIiMA0GCSqGSIb3DQEB
|
||||
AQUAA4ICDwAwggIKAoICAQCt6CRz9BQ385ueK1coHIe+3LffOJCMbjzmV6B493XC
|
||||
ov71am72AE8o295ohmxEk7axY/0UEmu/H9LqMZshftEzPLpI9d1537O4/xLxIZpL
|
||||
wYqGcWlKZmZsj348cL+tKSIG8+TA5oCu4kuPt5l+lAOf00eXfJlII1PoOK5PCm+D
|
||||
LtFJV4yAdLbaL9A4jXsDcCEbdfIwPPqPrt3aY6vrFk/CjhFLfs8L6P+1dy70sntK
|
||||
4EwSJQxwjQMpoOFTJOwT2e4ZvxCzSow/iaNhUd6shweU9GNx7C7ib1uYgeGJXDR5
|
||||
bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98flAgeYjzYIlefiN5YNNnWe+w5y
|
||||
sR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81LygXbNKYwagJZHduRze6zqxZ
|
||||
Xmidf3LWicUGQSk+WT7dJvUkyRGnWqNMQB9GoZm1pzpRboY7nn1ypxIFeFntPlF4
|
||||
FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0544fAQjQMNRbcTa0B7rBMDBc
|
||||
SLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K28Kh8hjtGqEgqiNx2mna/H2ql
|
||||
PRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOdwiK1O5tmLOsbdJ1Fu/7xk9TND
|
||||
TwIDAQABo4IBRjCCAUIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw
|
||||
SwYIKwYBBQUHAQEEPzA9MDsGCCsGAQUFBzAChi9odHRwOi8vYXBwcy5pZGVudHJ1
|
||||
c3QuY29tL3Jvb3RzL2RzdHJvb3RjYXgzLnA3YzAfBgNVHSMEGDAWgBTEp7Gkeyxx
|
||||
+tvhS5B1/8QVYIWJEDBUBgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEEAYLfEwEB
|
||||
ATAwMC4GCCsGAQUFBwIBFiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2VuY3J5cHQu
|
||||
b3JnMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9jcmwuaWRlbnRydXN0LmNvbS9E
|
||||
U1RST09UQ0FYM0NSTC5jcmwwHQYDVR0OBBYEFHm0WeZ7tuXkAXOACIjIGlj26Ztu
|
||||
MA0GCSqGSIb3DQEBCwUAA4IBAQAKcwBslm7/DlLQrt2M51oGrS+o44+/yQoDFVDC
|
||||
5WxCu2+b9LRPwkSICHXM6webFGJueN7sJ7o5XPWioW5WlHAQU7G75K/QosMrAdSW
|
||||
9MUgNTP52GE24HGNtLi1qoJFlcDyqSMo59ahy2cI2qBDLKobkx/J3vWraV0T9VuG
|
||||
WCLKTVXkcGdtwlfFRjlBz4pYg1htmf5X6DYO8A4jqv2Il9DjXA6USbW1FzXSLr9O
|
||||
he8Y4IWS6wY7bCkjCWDcRQJMEhg76fsO3txE+FiYruq9RUWhiF1myv4Q6W+CyBFC
|
||||
Dfvp7OOGAN6dEOM4+qR9sdjoSYKEBpsr6GtPAQw4dy753ec5
|
||||
-----END CERTIFICATE-----
|
||||
''';
|
||||
|
||||
const String kLetsEncryptCert = '''-----BEGIN CERTIFICATE-----
|
||||
MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw
|
||||
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
|
||||
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw
|
||||
WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
|
||||
RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
||||
AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP
|
||||
R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx
|
||||
sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm
|
||||
NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg
|
||||
Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG
|
||||
/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC
|
||||
AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB
|
||||
Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA
|
||||
FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw
|
||||
AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw
|
||||
Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB
|
||||
gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W
|
||||
PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl
|
||||
ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz
|
||||
CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm
|
||||
lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4
|
||||
avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2
|
||||
yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O
|
||||
yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids
|
||||
hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+
|
||||
HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv
|
||||
MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX
|
||||
nLRbwHOoq7hHwg==
|
||||
-----END CERTIFICATE-----
|
||||
''';
|
||||
|
||||
String _hexConverter(Uint8List bytes) {
|
||||
final StringBuffer buffer = StringBuffer();
|
||||
for (int part in bytes) {
|
||||
buffer.write('${part < 16 ? '0' : ''}${part.toRadixString(16)}');
|
||||
}
|
||||
return buffer.toString().toUpperCase();
|
||||
}
|
||||
|
||||
class WindowsHttpOverrides extends HttpOverrides {
|
||||
static bool? _initRootCert;
|
||||
final bool allowExpiredDSTX3;
|
||||
|
||||
static bool _addRootCert() {
|
||||
if (Platform.isWindows) {
|
||||
final List<int> cert = ascii.encode(kIsrgRootX1);
|
||||
SecurityContext.defaultContext.setTrustedCertificatesBytes(cert);
|
||||
final List<int> certAlt = ascii.encode(kIsrgRootX1Alt);
|
||||
SecurityContext.defaultContext.setTrustedCertificatesBytes(certAlt);
|
||||
final List<int> certAlt2 = ascii.encode(kLetsEncryptCert);
|
||||
SecurityContext.defaultContext.setTrustedCertificatesBytes(certAlt2);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
WindowsHttpOverrides({this.allowExpiredDSTX3 = false}) {
|
||||
_initRootCert ??= _addRootCert();
|
||||
}
|
||||
|
||||
@override
|
||||
HttpClient createHttpClient(SecurityContext? context) {
|
||||
final HttpClient client = super.createHttpClient(context);
|
||||
if (allowExpiredDSTX3) {
|
||||
client.badCertificateCallback =
|
||||
(X509Certificate cert, String host, int port) =>
|
||||
_hexConverter(cert.sha1) == kSha1DstX3;
|
||||
}
|
||||
return client;
|
||||
}
|
||||
}
|
||||
@@ -137,16 +137,6 @@
|
||||
"oops": "عذرًا",
|
||||
"suggestFeatures": "اقتراح ميزة",
|
||||
"faq": "الأسئلة الأكثر شيوعاً",
|
||||
"faq_q_1": "إلى أي مدى Auth آمن؟",
|
||||
"faq_a_1": "كل الشيفرات التي تنسخها احتياطيا بواسطة Auth تخزن مشفرة من الطرفين. يعني هذا أنك وحدك من يمكنك الوصول لشيفراتك. تطبيقاتنا مفتوحة المصدر وتشفيرنا تم اختباره من جهات خارجية.",
|
||||
"faq_q_2": "هل يمكنني الوصول إلى رموزي على سطح المكتب؟",
|
||||
"faq_a_2": "يمكنك الوصول إلى رموزك على الويب @ auth.ente.io.",
|
||||
"faq_q_3": "كيف يمكنني حذف الرموز؟",
|
||||
"faq_a_3": "يمكنك حذف الرمز عن طريق السحب لليسار على هذا العنصر.",
|
||||
"faq_q_4": "كيف يمكنني دعم هذا المشروع؟",
|
||||
"faq_a_4": "يمكنك دعم تطوير هذا المشروع عن طريق الاشتراك في تطبيق الصور @ ente.io.",
|
||||
"faq_q_5": "كيف يمكنني تفعيل قفل FaceID في Auth",
|
||||
"faq_a_5": "يمكنك تمكين قفل FaceID تحت الإعدادات => الحماية => قفل الشاشة.",
|
||||
"somethingWentWrongMessage": "حدث خطأ ما، يرجى المحاولة مرة أخرى",
|
||||
"leaveFamily": "مغادرة خطة العائلة",
|
||||
"leaveFamilyMessage": "هل أنت متأكد من الخروج من خطة العائلة؟",
|
||||
|
||||
40
auth/lib/l10n/arb/app_be.arb
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"account": "Уліковы запіс",
|
||||
"unlock": "Разблакіраваць",
|
||||
"recoveryKey": "Ключ аднаўлення",
|
||||
"counterAppBarTitle": "Лічыльнік",
|
||||
"@counterAppBarTitle": {
|
||||
"description": "Text shown in the AppBar of the Counter Page"
|
||||
},
|
||||
"onBoardingGetStarted": "Пачаць",
|
||||
"codeIssuerHint": "Выдавец",
|
||||
"codeSecretKeyHint": "Сакрэтны ключ",
|
||||
"secret": "Сакрэт",
|
||||
"notes": "Нататкі",
|
||||
"codeTagHint": "Тэг",
|
||||
"saveAction": "Захаваць",
|
||||
"blog": "Блог",
|
||||
"changePassword": "Змяніць пароль",
|
||||
"data": "Даныя",
|
||||
"importLabel": "Імпарт",
|
||||
"yes": "Так",
|
||||
"no": "Не",
|
||||
"email": "Электронная пошта",
|
||||
"support": "Падтрымка",
|
||||
"settings": "Налады",
|
||||
"pleaseTryAgain": "Калі ласка, паспрабуйце яшчэ раз",
|
||||
"delete": "Выдаліць",
|
||||
"enterYourPasswordHint": "Увядзіце ваш пароль",
|
||||
"faq": "Частыя пытанні",
|
||||
"deleteAccount": "Выдаліць уліковы запіс",
|
||||
"noDeleteAccountAction": "Не, выдаліць уліковы запіс",
|
||||
"sendEmail": "Адправіць ліст",
|
||||
"createNewAccount": "Стварыць новы ўліковы запіс",
|
||||
"confirmPassword": "Пацвердзіць пароль",
|
||||
"close": "Закрыць",
|
||||
"oopsSomethingWentWrong": "Штосьці пайшло не так.",
|
||||
"language": "Мова",
|
||||
"security": "Бяспека",
|
||||
"searchHint": "Пошук...",
|
||||
"search": "Пошук"
|
||||
}
|
||||
@@ -141,16 +141,6 @@
|
||||
"oops": "Опа",
|
||||
"suggestFeatures": "Предложете функции",
|
||||
"faq": "ЧЗВ",
|
||||
"faq_q_1": "Колко сигурен е Auth?",
|
||||
"faq_a_1": "Всички кодове, които архивирате чрез Auth, се съхраняват криптирани от край до край. Това означава, че само Вие имате достъп до Вашите кодове. Нашите приложения са с отворен код и нашата криптография е подложена на външен одит.",
|
||||
"faq_q_2": "Мога ли да получа достъп до моите кодове на работния плот?",
|
||||
"faq_a_2": "Можете да получите достъп до вашите кодове онлайн @ auth.ente.io.",
|
||||
"faq_q_3": "Как мога да изтрия кодове?",
|
||||
"faq_a_3": "Можете да изтриете код, като плъзнете наляво върху него.",
|
||||
"faq_q_4": "Как мога да подкрепя този проект?",
|
||||
"faq_a_4": "Можете да подкрепите развитието на този проект, като се абонирате за нашето приложение за снимки @ ente.io.",
|
||||
"faq_q_5": "Как мога да активирам заключване чрез FaceID в Auth",
|
||||
"faq_a_5": "Можете да активирате заключване чрез FaceID в Настройки → Сигурност → Заключен екран.",
|
||||
"somethingWentWrongMessage": "Нещо се обърка, моля опитайте отново",
|
||||
"leaveFamily": "Напуснете семейството",
|
||||
"leaveFamilyMessage": "Сигурни ли сте, че искате да напуснете семейния план?",
|
||||
@@ -492,5 +482,6 @@
|
||||
"setNewPin": "Задаване на нов ПИН код",
|
||||
"importFailureDescNew": "Неуспешно обработване на избрания файл.",
|
||||
"appLockNotEnabled": "Заключването на приложението не е активирано",
|
||||
"appLockNotEnabledDescription": "Моля, активирайте заключването на приложението от Сигурност > Заключване на приложението"
|
||||
"appLockNotEnabledDescription": "Моля, активирайте заключването на приложението от Сигурност > Заключване на приложението",
|
||||
"authToViewPasskey": "Моля, удостоверете се, за да видите Вашите ключове за парола"
|
||||
}
|
||||
1
auth/lib/l10n/arb/app_cs.arb
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
487
auth/lib/l10n/arb/app_da.arb
Normal file
@@ -0,0 +1,487 @@
|
||||
{
|
||||
"account": "Konto",
|
||||
"unlock": "Lås op",
|
||||
"recoveryKey": "Gendannelsesnøgle",
|
||||
"counterAppBarTitle": "Tæller",
|
||||
"@counterAppBarTitle": {
|
||||
"description": "Text shown in the AppBar of the Counter Page"
|
||||
},
|
||||
"onBoardingBody": "Sikkerhedskopier dine 2FA koder",
|
||||
"onBoardingGetStarted": "Kom i gang",
|
||||
"setupFirstAccount": "Opret din første konto",
|
||||
"importScanQrCode": "Skan en QR kode",
|
||||
"qrCode": "QR kode",
|
||||
"importEnterSetupKey": "Indtast en oprettelsesnøgle",
|
||||
"importAccountPageTitle": "Indtast kontooplysninger",
|
||||
"secretCanNotBeEmpty": "Hemmelighed kan ikke være tom",
|
||||
"bothIssuerAndAccountCanNotBeEmpty": "Både udsteder og konto kan ikke være tomme",
|
||||
"incorrectDetails": "Forkerte oplysninger",
|
||||
"pleaseVerifyDetails": "Bekræft venligst oplysningerne og forsøg igen",
|
||||
"codeIssuerHint": "Udsteder",
|
||||
"codeSecretKeyHint": "Hemmelig nøgle",
|
||||
"secret": "Hemmelighed",
|
||||
"all": "Alt",
|
||||
"notes": "Noter",
|
||||
"notesLengthLimit": "Noter kan højest være {count} tegn",
|
||||
"@notesLengthLimit": {
|
||||
"description": "Text to indicate the maximum number of characters allowed for notes",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"description": "The maximum number of characters allowed for notes",
|
||||
"type": "int",
|
||||
"example": "100"
|
||||
}
|
||||
}
|
||||
},
|
||||
"codeAccountHint": "Konto (you@domain.com)",
|
||||
"codeTagHint": "Tag",
|
||||
"accountKeyType": "Nøgletype",
|
||||
"sessionExpired": "Session udløbet",
|
||||
"@sessionExpired": {
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
},
|
||||
"pleaseLoginAgain": "Log venligst på igen",
|
||||
"loggingOut": "Logger ud...",
|
||||
"timeBasedKeyType": "Tids-baseret (TOTP)",
|
||||
"counterBasedKeyType": "Tæller-baseret (HOTP)",
|
||||
"saveAction": "Gem",
|
||||
"nextTotpTitle": "næste",
|
||||
"deleteCodeTitle": "Slet kode?",
|
||||
"deleteCodeMessage": "Er du sikker på at du vil slette denne kode? Handlingen er irreversibel.",
|
||||
"trashCode": "Slet kode?",
|
||||
"trashCodeMessage": "Er du sikker på at du vil slette koden til {account}?",
|
||||
"trash": "Slet",
|
||||
"viewLogsAction": "Se logs",
|
||||
"sendLogsDescription": "Dette vil sende os dine logs for at hjælpe os med at løse dit problem. Selvom vi tager forholdsregler for at sikre at følsomme oplysninger ikke bliver logget anbefaler vi at du tjekker dine logs før du sender dem.",
|
||||
"preparingLogsTitle": "Forbereder logs...",
|
||||
"emailLogsTitle": "Send logs i email",
|
||||
"emailLogsMessage": "Send venligst logs til {email}",
|
||||
"@emailLogsMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"copyEmailAction": "Kopier email adresse",
|
||||
"exportLogsAction": "Eksporter logs",
|
||||
"reportABug": "Rapporter en fejl",
|
||||
"crashAndErrorReporting": "Nedbruds- og fejlrapportering",
|
||||
"reportBug": "Rapporter fejl",
|
||||
"emailUsMessage": "Send os venligst en email på {email}",
|
||||
"@emailUsMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"contactSupport": "Kontakt support",
|
||||
"rateUsOnStore": "Anmeld os på {storeName}",
|
||||
"blog": "Blog",
|
||||
"merchandise": "Merchandise",
|
||||
"verifyPassword": "Bekræft adgangskode",
|
||||
"pleaseWait": "Vent venligst...",
|
||||
"generatingEncryptionKeysTitle": "Genererer krypteringsnøgler...",
|
||||
"recreatePassword": "Gendan adgangskode",
|
||||
"recreatePasswordMessage": "Den nuværende enhed er ikke kraftfuld nok til at bekræfte din adgangskode, så vi bliver nødt til at gendanne den på en måde der fungerer på alle enheder.\n\nLog venligst ind med din gendannelsesnøgle og gendan din adgangskode (du kan bruge den samme adgangskode igen hvis du ønsker).",
|
||||
"useRecoveryKey": "Brug gendannelsesnøgle",
|
||||
"incorrectPasswordTitle": "Forkert adgangskode",
|
||||
"welcomeBack": "Velkommen tilbage!",
|
||||
"madeWithLoveAtPrefix": "lavet med ❤️ hos ",
|
||||
"supportDevs": "Abonnér på <bold-green>ente</bold-green> for at støtte os",
|
||||
"supportDiscount": "Brug rabatkoden \"AUTH\" og få 10% rabat på det første år",
|
||||
"changeEmail": "Skift email adresse",
|
||||
"changePassword": "Skift adgangskode",
|
||||
"data": "Data",
|
||||
"importCodes": "Importer koder",
|
||||
"importTypePlainText": "Almindelig tekst",
|
||||
"importTypeEnteEncrypted": "Krypteret Ente eksport",
|
||||
"passwordForDecryptingExport": "Kodeord til dekryptering af eksport",
|
||||
"passwordEmptyError": "Kodeordet kan ikke være tomt",
|
||||
"importFromApp": "Importer koder fra {appName}",
|
||||
"importGoogleAuthGuide": "Eksporter dine konti fra Google Authenticator til en QR kode fra \"Transfer Accounts\".\n\nTip: Du kan bruge webkameraet på din bærbare computer til at tage et billede af QR koden.",
|
||||
"importSelectJsonFile": "Vælg JSON fil",
|
||||
"importSelectAppExport": "Vælg {appName} eksportfil",
|
||||
"importEnteEncGuide": "Vælg den krypterede JSON fil eksporteret fra Ente",
|
||||
"importRaivoGuide": "Brug \"Export OTPs to Zip archive\" fra Raivo's indstillinger.\n\nUdpak zip filen og importér JSON filen.",
|
||||
"importBitwardenGuide": "Brug \"Export vault\" i Bitwarden Tools og importer den ukrypterede JSON fil.",
|
||||
"importAegisGuide": "Brug \"Export the vault\" i Aegis' indstillinger.\n\nHvis din vault er krypteret bliver du nødt til at indtaste kodeordet for at dekryptere den.",
|
||||
"import2FasGuide": "Brug \"Settings > Backup Export\" i 2FAS.\n\nHvis din backup er krypteret bliver du nødt til at indtaste kodeordet for at dekryptere den.",
|
||||
"importLastpassGuide": "Brug \"Transfer accounts\" i Lastpass Authenticator Settings og tryk på \"Export accounts to file\". Importer den downloadede JSON fil.",
|
||||
"exportCodes": "Eksporter koder",
|
||||
"importLabel": "Importer",
|
||||
"importInstruction": "Vælg venligst en fil der indeholder en liste af dine koder i det følgende format",
|
||||
"importCodeDelimiterInfo": "Koderne kan adskilles med enten et komma eller en ny linje",
|
||||
"selectFile": "Vælg fil",
|
||||
"emailVerificationToggle": "Email-verifikation",
|
||||
"emailVerificationEnableWarning": "For at undgå at blive låst ude af din konto, sørg for at gemme en kopi af din email 2FA udenfor Ente Auth før du aktiverer email-verifikation.",
|
||||
"authToChangeEmailVerificationSetting": "Bekræft venligst din identitet for at ændre email-verifikation",
|
||||
"authenticateGeneric": "Bekræft venligst din identitet",
|
||||
"authToViewYourRecoveryKey": "Bekræft venligst din identitet for at se din gendannelseskode.",
|
||||
"authToChangeYourEmail": "Bekræft venligst din identitet for at ændre din email adresse",
|
||||
"authToChangeYourPassword": "Bekræft venligst din identitet for at ændre din adgangskode",
|
||||
"authToViewSecrets": "Bekræft venligst din identitet for at se dine hemmeligheder",
|
||||
"authToInitiateSignIn": "Bekræft venligst din identitet for at påbegynde sikkerhedskopiering.",
|
||||
"ok": "OK",
|
||||
"cancel": "Afbryd",
|
||||
"yes": "Ja",
|
||||
"no": "Nej",
|
||||
"email": "Email",
|
||||
"support": "Support",
|
||||
"general": "Generelt",
|
||||
"settings": "Indstillinger",
|
||||
"copied": "Kopieret",
|
||||
"pleaseTryAgain": "Forsøg venligst igen",
|
||||
"existingUser": "Eksisterende bruger",
|
||||
"newUser": "Ny bruger",
|
||||
"delete": "Slet",
|
||||
"enterYourPasswordHint": "Indtast adgangskode",
|
||||
"forgotPassword": "Glemt adgangskode",
|
||||
"oops": "Ups",
|
||||
"suggestFeatures": "Foreslå funktioner",
|
||||
"faq": "FAQ",
|
||||
"somethingWentWrongMessage": "Noget gik galt, forsøg venligst igen",
|
||||
"leaveFamily": "Forlad familie-abonnementet",
|
||||
"leaveFamilyMessage": "Er du sikker på at du vil forlade familie-abonnementet?",
|
||||
"inFamilyPlanMessage": "Du er nu i familie-abonnementet!",
|
||||
"hintForMobile": "Langt tryk på en kode for at redigere eller slette.",
|
||||
"hintForDesktop": "Højre-klik på en kode for at redigere eller slette.",
|
||||
"scan": "Skan",
|
||||
"scanACode": "Skan en kode",
|
||||
"verify": "Bekræft",
|
||||
"verifyEmail": "Bekræft email adresse",
|
||||
"enterCodeHint": "Indtast den 6-cifrede kode fra din authenticator app",
|
||||
"lostDeviceTitle": "Mistet enhed?",
|
||||
"twoFactorAuthTitle": "Tofaktorgodkendelse",
|
||||
"passkeyAuthTitle": "Bekræftelse af adgangskode",
|
||||
"verifyPasskey": "Bekræft adgangskode",
|
||||
"recoverAccount": "Gendan konto",
|
||||
"enterRecoveryKeyHint": "Indtast din gendannelsesnøgle",
|
||||
"recover": "Gendan",
|
||||
"contactSupportViaEmailMessage": "Send venligst en email til {email} fra din registrerede email adresse",
|
||||
"@contactSupportViaEmailMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"invalidQRCode": "Ugyldig QR kode",
|
||||
"noRecoveryKeyTitle": "Ingen gendannelsesnøgle?",
|
||||
"enterEmailHint": "Indtast din email adresse",
|
||||
"invalidEmailTitle": "Ugyldig email adresse",
|
||||
"invalidEmailMessage": "Indtast en gyldig email adresse.",
|
||||
"deleteAccount": "Slet konto",
|
||||
"deleteAccountQuery": "Vi er kede af at se dig gå. Er du stødt på et problem?",
|
||||
"yesSendFeedbackAction": "Ja, send feedback",
|
||||
"noDeleteAccountAction": "Nej, slet konto",
|
||||
"initiateAccountDeleteTitle": "Bekræft venligst for at påbegynde sletning af konto",
|
||||
"sendEmail": "Send email",
|
||||
"createNewAccount": "Opret konto",
|
||||
"weakStrength": "Svagt",
|
||||
"strongStrength": "Stærkt",
|
||||
"moderateStrength": "Middel",
|
||||
"confirmPassword": "Bekræft kodeord",
|
||||
"close": "Luk",
|
||||
"oopsSomethingWentWrong": "Ups, noget gik galt.",
|
||||
"selectLanguage": "Vælg sprog",
|
||||
"language": "Sprog",
|
||||
"social": "Social",
|
||||
"security": "Sikkerhed",
|
||||
"lockscreen": "Skærmlås",
|
||||
"authToChangeLockscreenSetting": "Bekræft venligst din identitet for at ændre skærmlås indstillinger",
|
||||
"deviceLockEnablePreSteps": "For at aktivere enhedslås, indstil venligst kode eller skærmlås på din enhed i dine systemindstillinger.",
|
||||
"viewActiveSessions": "Se aktive sessioner",
|
||||
"authToViewYourActiveSessions": "Bekræft venligst din identitet for at se dine aktive sessioner",
|
||||
"searchHint": "Søg...",
|
||||
"search": "Søg",
|
||||
"sorryUnableToGenCode": "Beklager, ikke i stand til at generere en kode for {issuerName}",
|
||||
"noResult": "Intet resultat",
|
||||
"addCode": "Tilføj kode",
|
||||
"scanAQrCode": "Skan QR kode",
|
||||
"enterDetailsManually": "Indtast oplysninger manuelt",
|
||||
"edit": "Rediger",
|
||||
"share": "Del",
|
||||
"shareCodes": "Del koder",
|
||||
"shareCodesDuration": "Vælg varighed for deling af koden.",
|
||||
"restore": "Genopret",
|
||||
"copiedToClipboard": "Kopieret til udklipsholderen",
|
||||
"copiedNextToClipboard": "Næste kode kopieret til udklipsholderen",
|
||||
"error": "Fejl",
|
||||
"recoveryKeyCopiedToClipboard": "Gendannelsesnøgle kopieret til udklipsholderen",
|
||||
"recoveryKeyOnForgotPassword": "Hvis du glemmer dit kodeord er gendannelsesnøglen den eneste mulighed for at få adgang til dine data.",
|
||||
"recoveryKeySaveDescription": "Vi gemmer ikke denne nøgle, gem venligst denne 24-ords nøgle et sikkert sted.",
|
||||
"doThisLater": "Gør det senere",
|
||||
"saveKey": "Gem nøgle",
|
||||
"save": "Gem",
|
||||
"send": "Send",
|
||||
"saveOrSendDescription": "Vil du gemme på din enhed (Downloads mappe som udgangspunkt) eller sende til andre apps?",
|
||||
"saveOnlyDescription": "Vil du gemme på din enhed (Downloads mappe som udgangspunkt)?",
|
||||
"back": "Tilbage",
|
||||
"createAccount": "Opret konto",
|
||||
"passwordStrength": "Kodeordets styrke: {passwordStrengthValue}",
|
||||
"@passwordStrength": {
|
||||
"description": "Text to indicate the password strength",
|
||||
"placeholders": {
|
||||
"passwordStrengthValue": {
|
||||
"description": "The strength of the password as a string",
|
||||
"type": "String",
|
||||
"example": "Weak or Moderate or Strong"
|
||||
}
|
||||
},
|
||||
"message": "Password Strength: {passwordStrengthText}"
|
||||
},
|
||||
"password": "Kodeord",
|
||||
"signUpTerms": "Jeg er enig i <u-terms>betingelser for brug</u-terms> og <u-policy>privatlivspolitik</u-policy>",
|
||||
"privacyPolicyTitle": "Privatlivspolitik",
|
||||
"termsOfServicesTitle": "Betingelser",
|
||||
"encryption": "Kryptering",
|
||||
"setPasswordTitle": "Angiv adgangskode",
|
||||
"changePasswordTitle": "Skift adgangskode",
|
||||
"resetPasswordTitle": "Nulstil adgangskode",
|
||||
"encryptionKeys": "Krypteringsnøgler",
|
||||
"passwordWarning": "Vi gemmer ikke denne adgangskode, så hvis du glemmer den <underline>kan vi ikke dekryptere dine data</underline>",
|
||||
"enterPasswordToEncrypt": "Indtast en adgangskode vi kan bruge til at kryptere dine data",
|
||||
"enterNewPasswordToEncrypt": "Indtast en ny adgangskode vi kan bruge til at kryptere dine data",
|
||||
"passwordChangedSuccessfully": "Adgangskoden er blevet ændret",
|
||||
"generatingEncryptionKeys": "Genererer krypteringsnøgler...",
|
||||
"continueLabel": "Fortsæt",
|
||||
"insecureDevice": "Usikker enhed",
|
||||
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Beklager, vi kunne ikke generere sikre krypteringsnøgler på denne enhed.\n\nForsøg venligst at oprette en konto fra en anden enhed.",
|
||||
"howItWorks": "Sådan fungerer det",
|
||||
"ackPasswordLostWarning": "Jeg forstår at hvis jeg mister min adgangskode kan jeg miste mine data, da mine data er <underline>end-to-end krypteret</underline>.",
|
||||
"loginTerms": "Ved at logge ind godkender jeg Ente's <u-terms>betingelser for brug</u-terms> og <u-policy>privatlivspolitik</u-policy>.",
|
||||
"logInLabel": "Log ind",
|
||||
"logout": "Log ud",
|
||||
"areYouSureYouWantToLogout": "Er du sikker på at du vil logge ud?",
|
||||
"yesLogout": "Ja, log ud",
|
||||
"exit": "Afslut",
|
||||
"verifyingRecoveryKey": "Bekræfter gendannelsesnøgle...",
|
||||
"recoveryKeyVerified": "Gendannelsesnøgle bekræftet",
|
||||
"recoveryKeySuccessBody": "Fantastisk! Din gendannelsesnøgle er gyldig. Tak for bekræften.\n\nHusk venligst at tage en sikkerhedskopi af din gendannelsesnøgle.",
|
||||
"invalidRecoveryKey": "Den indtastede gendannelsesnøgle er ikke gyldig. Sørg venligst for at den indeholder 24 ord, og tjek stavningen af hvert ord.\n\nHvis du indtastede en ældre gendannelseskode, sørg for at den er 64 tegn lang, og tjek hvert tegn.",
|
||||
"recreatePasswordTitle": "Gendan adgangskode",
|
||||
"recreatePasswordBody": "Denne enhed er ikke kraftfuld nok til at bekræfte adgangskoden, men vi kan gendanne den på en måde der fungerer for alle enheder.\n\nLog venligst ind med din gendannelsesnøgle og gendan din adgangskode (du kan bruge den samme adgangskode igen hvis du ønsker).",
|
||||
"invalidKey": "Ugyldig nøgle",
|
||||
"tryAgain": "Forsøg igen",
|
||||
"viewRecoveryKey": "Se gendannelsesnøgle",
|
||||
"confirmRecoveryKey": "Bekræft gendannelsesnøgle",
|
||||
"recoveryKeyVerifyReason": "Din gendannelsesnøgle er den eneste måde du kan gendanne dine data hvis du glemmer din adgangskode. Du kan finde din gendannelseskode under \"Indstillinger > Konto\".\n\nIndtast venligst din gendannelseskode for at bekræfte at du har gemt den korrekt.",
|
||||
"confirmYourRecoveryKey": "Bekræft din gendannelsesnøgle",
|
||||
"confirm": "Bekræft",
|
||||
"emailYourLogs": "Email dine logs",
|
||||
"pleaseSendTheLogsTo": "Send venligst logs til {toEmail}",
|
||||
"copyEmailAddress": "Kopier email adresse",
|
||||
"exportLogs": "Eksporter logs",
|
||||
"enterYourRecoveryKey": "Indtast gendannelsesnøgle",
|
||||
"tempErrorContactSupportIfPersists": "Det ser ud til at noget gik galt. Forsøg venligst igen efter lidt tid. Hvis fejlen varer ved, kontakt da venligst vores support.",
|
||||
"networkHostLookUpErr": "Ude af stand til at forbinde til Ente. Tjek venligst dine netværksindstillinger og kontakt support hvis fejlen varer ved.",
|
||||
"networkConnectionRefusedErr": "Ude af stand til at forbinde til Ente. Forsøg igen efter et stykke tid. Hvis fejlen varer ved, kontakt da venligst support.",
|
||||
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Det ser ud til at noget gik galt. Forsøg venligst igen efter lidt tid. Hvis fejlen varer ved, kontakt da venligst support.",
|
||||
"about": "Om os",
|
||||
"weAreOpenSource": "Vi er open source!",
|
||||
"privacy": "Privatliv",
|
||||
"terms": "Betingelser",
|
||||
"checkForUpdates": "Tjek for opdateringer",
|
||||
"checkStatus": "Tjek status",
|
||||
"downloadUpdate": "Download",
|
||||
"criticalUpdateAvailable": "Kritisk opdatering er tilgængelig",
|
||||
"updateAvailable": "Opdatering er tilgængelig",
|
||||
"update": "Opdater",
|
||||
"checking": "Tjekker...",
|
||||
"youAreOnTheLatestVersion": "Du er på den seneste version",
|
||||
"warning": "Advarsel",
|
||||
"exportWarningDesc": "Den eksporterede fil indeholder fortrolige oplysninger. Opbevar den sikkert.",
|
||||
"iUnderStand": "Jeg forstår",
|
||||
"@iUnderStand": {
|
||||
"description": "Text for the button to confirm the user understands the warning"
|
||||
},
|
||||
"authToExportCodes": "Bekræft din identitet for at eksportere dine koder",
|
||||
"importSuccessTitle": "Yay!",
|
||||
"importSuccessDesc": "Du har importeret {count} koder!",
|
||||
"@importSuccessDesc": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"description": "The number of codes imported",
|
||||
"type": "int",
|
||||
"example": "1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sorry": "Beklager",
|
||||
"importFailureDesc": "Kunne ikke afkode the valgte fil. Skriv venligst til support@ente.io hvis du har brug for hjælp!",
|
||||
"pendingSyncs": "Advarsel",
|
||||
"pendingSyncsWarningBody": "Nogle af dine koder er ikke sikkerhedskopieret.\n\nForsikr venligst at du har sikkerhedskopieret dine koder før du logger af.",
|
||||
"checkInboxAndSpamFolder": "Tjek venligst din indboks (og spam) for at færdiggøre verificeringen",
|
||||
"tapToEnterCode": "Tryk for at indtaste kode",
|
||||
"resendEmail": "Send email igen",
|
||||
"weHaveSendEmailTo": "Vi har sendt en email til <green>{email}</green>",
|
||||
"@weHaveSendEmailTo": {
|
||||
"description": "Text to indicate that we have sent a mail to the user",
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"description": "The email address of the user",
|
||||
"type": "String",
|
||||
"example": "example@ente.io"
|
||||
}
|
||||
}
|
||||
},
|
||||
"activeSessions": "Aktive sessioner",
|
||||
"somethingWentWrongPleaseTryAgain": "Noget gik galt, forsøg venligst igen",
|
||||
"thisWillLogYouOutOfThisDevice": "Dette vil logge dig ud af denne enhed!",
|
||||
"thisWillLogYouOutOfTheFollowingDevice": "Dette vil logge dig ud af den følgende enhed:",
|
||||
"terminateSession": "Afslut session?",
|
||||
"terminate": "Afslut",
|
||||
"thisDevice": "Denne enhed",
|
||||
"toResetVerifyEmail": "For at nulstille din adgangskode, bekræft venligst din email adresse.",
|
||||
"thisEmailIsAlreadyInUse": "Denne email adresse er allerede i brug",
|
||||
"verificationFailedPleaseTryAgain": "Bekræftelse fejlede, forsøg venligst igen",
|
||||
"yourVerificationCodeHasExpired": "Din bekræftelseskode er udløbet",
|
||||
"incorrectCode": "Forkert kode",
|
||||
"sorryTheCodeYouveEnteredIsIncorrect": "Beklager, den indtastede kode er forkert",
|
||||
"emailChangedTo": "Email adresse ændret til {newEmail}",
|
||||
"authenticationFailedPleaseTryAgain": "Bekræftelse af identitet fejlede, forsøg venligst igen",
|
||||
"authenticationSuccessful": "Bekræftelse af identitet lykkedes!",
|
||||
"twofactorAuthenticationSuccessfullyReset": "Tofaktorgodkendelse nulstillet",
|
||||
"incorrectRecoveryKey": "Forkert gendannelsesnøgle",
|
||||
"theRecoveryKeyYouEnteredIsIncorrect": "Den indtastede gendannelsesnøgle er ikke korrekt",
|
||||
"enterPassword": "Indtast adgangskode",
|
||||
"selectExportFormat": "Vælg eksportformat",
|
||||
"exportDialogDesc": "Krypterede eksporter vil blive beskyttet med en adgangskode efter dit valg.",
|
||||
"encrypted": "Krypteret",
|
||||
"plainText": "Almindelig tekst",
|
||||
"passwordToEncryptExport": "Adgangskode til krypteret eksport",
|
||||
"export": "Eksporter",
|
||||
"useOffline": "Brug uden sikkerhedskopier",
|
||||
"signInToBackup": "Log på for at tage sikkerhedskopier af dine koder",
|
||||
"singIn": "Log på",
|
||||
"sigInBackupReminder": "Eksporter venligst dine koder for at sikre at du har en sikkerhedskopi du kan gendanne fra.",
|
||||
"offlineModeWarning": "Du har valgt at fortsætte uden sikkerhedskopier. Tag venligst en manuel sikkerhedskopi for at sikre dine koders sikkerhed.",
|
||||
"showLargeIcons": "Vis store ikoner",
|
||||
"compactMode": "Kompakt tilstand",
|
||||
"shouldHideCode": "Skjul koder",
|
||||
"doubleTapToViewHiddenCode": "Du kan dobbelt-klikke på et felt for at se koden",
|
||||
"focusOnSearchBar": "Fokus på søgning ved opstart",
|
||||
"confirmUpdatingkey": "Er du sikker på at du vil opdatere den hemmelige nøgle?",
|
||||
"minimizeAppOnCopy": "Minimer app ved kopiering",
|
||||
"editCodeAuthMessage": "Bekræft identitet for at redigere kode",
|
||||
"deleteCodeAuthMessage": "Bekræft identitet for at slette kode",
|
||||
"showQRAuthMessage": "Bekræft identitet for at se QR kode",
|
||||
"confirmAccountDeleteTitle": "Bekræft sletning af konto",
|
||||
"confirmAccountDeleteMessage": "Denne konto er forbundet til andre Ente apps, hvis du benytter nogle.\n\nDine uploadede data for alle Ente apps vil blive slettet, og din konto vil blive slettet permanent.",
|
||||
"androidBiometricHint": "Bekræft identitet",
|
||||
"@androidBiometricHint": {
|
||||
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidBiometricNotRecognized": "Ikke genkendt. Forsøg igen.",
|
||||
"@androidBiometricNotRecognized": {
|
||||
"description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidBiometricSuccess": "Succes",
|
||||
"@androidBiometricSuccess": {
|
||||
"description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidCancelButton": "Afbryd",
|
||||
"@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": "Godkendelse påkrævet",
|
||||
"@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."
|
||||
},
|
||||
"androidBiometricRequiredTitle": "Biometri påkrævet",
|
||||
"@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": "Enhedsoplysninger påkrævet",
|
||||
"@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": "Enhedsoplysninger påkrævet",
|
||||
"@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": "Gå til indstillinger",
|
||||
"@goToSettings": {
|
||||
"description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters."
|
||||
},
|
||||
"androidGoToSettingsDescription": "Biometrisk godkendelse er ikke indstillet på din enhed. Gå til \"Indstillinger > Sikkerhed\" for at indstille biometrisk godkendelse.",
|
||||
"@androidGoToSettingsDescription": {
|
||||
"description": "Message advising the user to go to the settings and configure biometric on their device. It shows in a dialog on Android side."
|
||||
},
|
||||
"iOSLockOut": "Biometrisk godkendelse er slået fra. Lås din skærm, og lås den derefter op for at aktivere det.",
|
||||
"@iOSLockOut": {
|
||||
"description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side."
|
||||
},
|
||||
"iOSGoToSettingsDescription": "Biometrisk godkendelse er ikke indstillet på din enhed. Indstil venligst enten Touch ID eller Face ID på din telefon.",
|
||||
"@iOSGoToSettingsDescription": {
|
||||
"description": "Message advising the user to go to the settings and configure Biometrics for their device. It shows in a dialog on iOS side."
|
||||
},
|
||||
"iOSOkButton": "OK",
|
||||
"@iOSOkButton": {
|
||||
"description": "Message showed on a button that the user can click to leave the current dialog. It is used on iOS side. Maximum 30 characters."
|
||||
},
|
||||
"noInternetConnection": "Ingen internetforbindelse",
|
||||
"pleaseCheckYourInternetConnectionAndTryAgain": "Tjek venligst din internetforbindelse og forsøg igen.",
|
||||
"signOutFromOtherDevices": "Log ud af andre enheder",
|
||||
"signOutOtherBody": "Hvis du mistænker at nogen kender din adgangskode kan du tvinge alle enheder der benytter din konto til at logge ud.",
|
||||
"signOutOtherDevices": "Log ud af andre enheder",
|
||||
"doNotSignOut": "Log ikke ud",
|
||||
"hearUsWhereTitle": "Hvordan hørte du om Ente? (valgfrit)",
|
||||
"hearUsExplanation": "Vi tracker ikke app installeringer. Det ville hjælpe os at vide hvordan du fandt os!",
|
||||
"recoveryKeySaved": "Gendannelsesnøgle gemt i din Downloads mappe!",
|
||||
"waitingForBrowserRequest": "Venter på browser forespørgsel...",
|
||||
"waitingForVerification": "Venter på bekræftelse...",
|
||||
"passkey": "Passkey",
|
||||
"passKeyPendingVerification": "Bekræftelse afventes stadig",
|
||||
"loginSessionExpired": "Session udløbet",
|
||||
"loginSessionExpiredDetails": "Din session er udløbet. Log venligst på igen.",
|
||||
"developerSettingsWarning": "Er du sikker på at du vil redigere Udvikler-indstillinger?",
|
||||
"developerSettings": "Udvikler-indstillinger",
|
||||
"serverEndpoint": "Server endpoint",
|
||||
"invalidEndpoint": "Ugyldigt endpoint",
|
||||
"invalidEndpointMessage": "Beklager, det indtastede endpoint er ugyldigt. Indtast venligst et gyldigt endpoint og forsøg igen.",
|
||||
"endpointUpdatedMessage": "Endpoint opdateret",
|
||||
"customEndpoint": "Forbindelse oprettet til {endpoint}",
|
||||
"pinText": "Fastgør",
|
||||
"unpinText": "Frigør",
|
||||
"pinnedCodeMessage": "{code} er blevet fastgjort",
|
||||
"unpinnedCodeMessage": "{code} er blevet frigjort",
|
||||
"tags": "Tags",
|
||||
"createNewTag": "Opret nyt tag",
|
||||
"tag": "Tag",
|
||||
"create": "Opret",
|
||||
"editTag": "Rediger tag",
|
||||
"deleteTagTitle": "Slet tag?",
|
||||
"deleteTagMessage": "Er du sikker på at du vil slette dette tag? Denne handling er irreversibel.",
|
||||
"somethingWentWrongParsingCode": "Vi var ikke i stand til at afkode {x} koder.",
|
||||
"updateNotAvailable": "Opdatering er ikke tilgængelig",
|
||||
"viewRawCodes": "Vis rå koder",
|
||||
"rawCodes": "Rå koder",
|
||||
"rawCodeData": "Rå kode data",
|
||||
"appLock": "Låsning af app",
|
||||
"noSystemLockFound": "Ingen systemlås fundet",
|
||||
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "For at indstille låsning af app, indstil venligst en kode eller skærmlås i dine systemindstillinger.",
|
||||
"autoLock": "Automatisk lås",
|
||||
"immediately": "Med det samme",
|
||||
"reEnterPassword": "Indtast adgangskode igen",
|
||||
"reEnterPin": "Indtast pinkode igen",
|
||||
"next": "Næste",
|
||||
"tooManyIncorrectAttempts": "For mange forkerte forsøg",
|
||||
"tapToUnlock": "Tryk for at låse op",
|
||||
"setNewPassword": "Indstil ny adgangskode",
|
||||
"deviceLock": "Enhedslås",
|
||||
"hideContent": "Skjul indhold",
|
||||
"hideContentDescriptionAndroid": "Skjul app indhold i app-vælger og deaktiver screenshots",
|
||||
"hideContentDescriptioniOS": "Skjul app indhold i app-vælger",
|
||||
"autoLockFeatureDescription": "Tid til låsning af app efter at være blevet placeret i baggrunden",
|
||||
"appLockDescription": "Vælg mellem din enheds standard skærmlås eller skærmlås med pinkode eller adgangskode.",
|
||||
"pinLock": "Låsning med pinkode",
|
||||
"enterPin": "Indtast pinkode",
|
||||
"setNewPin": "Indstil ny pinkode",
|
||||
"importFailureDescNew": "Kunne ikke afkode den valgte fil.",
|
||||
"appLockNotEnabled": "Låsning af app er ikke slået til",
|
||||
"appLockNotEnabledDescription": "Slå venligst låsning af app til under \"Sikkerhed > Låsning af app\"",
|
||||
"authToViewPasskey": "Bekræft venligst identitet for at se passkey"
|
||||
}
|
||||
@@ -141,16 +141,6 @@
|
||||
"oops": "Hopla",
|
||||
"suggestFeatures": "Features vorschlagen",
|
||||
"faq": "FAQ",
|
||||
"faq_q_1": "Wie sicher ist Auth?",
|
||||
"faq_a_1": "Alle Codes, die du über Auth sicherst, werden Ende-zu-Ende-verschlüsselt gespeichert. Das bedeutet, dass nur du auf deine Codes zugreifen kannst. Unsere Anwendungen sind quelloffen und unsere Kryptografie wurde extern geprüft.",
|
||||
"faq_q_2": "Kann ich auf meine Codes auf dem Desktop zugreifen?",
|
||||
"faq_a_2": "Sie können auf Ihre Codes im Web via auth.ente.io zugreifen.",
|
||||
"faq_q_3": "Wie kann ich Codes löschen?",
|
||||
"faq_a_3": "Sie können einen Code löschen, indem Sie auf dem Code nach links wischen.",
|
||||
"faq_q_4": "Wie kann ich das Projekt unterstützen?",
|
||||
"faq_a_4": "Sie können die Entwicklung dieses Projekts unterstützen, indem Sie unsere Fotos-App auf ente.io abonnieren.",
|
||||
"faq_q_5": "Wie kann ich die FaceID-Sperre in Auth aktivieren",
|
||||
"faq_a_5": "Sie können FaceID unter Einstellungen → Sicherheit → Sperrbildschirm aktivieren.",
|
||||
"somethingWentWrongMessage": "Ein Fehler ist aufgetreten, bitte versuchen Sie es erneut",
|
||||
"leaveFamily": "Familie verlassen",
|
||||
"leaveFamilyMessage": "Sind Sie sicher, dass Sie den Familien-Plan verlassen wollen?",
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
"description": "Text shown in the AppBar of the Counter Page"
|
||||
},
|
||||
"onBoardingBody": "Δημιουργήστε αντίγραφο ασφαλείας των 2FA κωδικών σας",
|
||||
"onBoardingGetStarted": "Ας Αρχίσουμε",
|
||||
"onBoardingGetStarted": "Ξεκινήστε",
|
||||
"setupFirstAccount": "Ρυθμίστε τον πρώτο σας λογαριασμό",
|
||||
"importScanQrCode": "Σαρώστε έναν κωδικό QR",
|
||||
"qrCode": "Κωδικός QR",
|
||||
"importEnterSetupKey": "Εισάγετε ένα κλειδί ρύθμισης",
|
||||
"importAccountPageTitle": "Εισαγωγή στοιχείων λογαριασμού",
|
||||
"secretCanNotBeEmpty": "Το μυστικό δεν μπορεί να είναι κενό",
|
||||
"bothIssuerAndAccountCanNotBeEmpty": "Τόσο ο εκδότης όσο και ο λογαριασμός δεν μπορούν να είναι κενά",
|
||||
"bothIssuerAndAccountCanNotBeEmpty": "Ο εκδότης και ο λογαριασμός δεν μπορούν να είναι κενοί",
|
||||
"incorrectDetails": "Λανθασμένα στοιχεία",
|
||||
"pleaseVerifyDetails": "Παρακαλούμε επιβεβαιώστε τα στοιχεία σας και προσπαθήστε ξανά",
|
||||
"codeIssuerHint": "Εκδότης",
|
||||
@@ -41,20 +41,20 @@
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
},
|
||||
"pleaseLoginAgain": "Παρακαλούμε συνδεθείτε ξανά",
|
||||
"loggingOut": "Αποσύνδεση...",
|
||||
"loggingOut": "Αποσύνδεση…",
|
||||
"timeBasedKeyType": "Βασισμένο σε χρόνο (TOTP)",
|
||||
"counterBasedKeyType": "Με βάση μετρητή (HOTP)",
|
||||
"saveAction": "Αποθήκευση",
|
||||
"nextTotpTitle": "επόμενο",
|
||||
"deleteCodeTitle": "Διαγραφή κωδικού;",
|
||||
"deleteCodeMessage": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτόν τον κωδικό; Αυτή η ενέργεια είναι μη αναστρέψιμη.",
|
||||
"deleteCodeMessage": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτόν τον κωδικό; Αυτή η ενέργεια δεν είναι αναστρέψιμη.",
|
||||
"trashCode": "Διαγραφή κώδικα;",
|
||||
"trashCodeMessage": "Είστε σίγουροι ότι θέλετε να διαγράψετε τον κώδικα για το {account} σας;",
|
||||
"trash": "Διαγραφή",
|
||||
"viewLogsAction": "Προβολή αρχείων καταγραφής",
|
||||
"sendLogsDescription": "Αυτό θα στείλει σε μας όλα τα αρχεία καταγραφής για να μας βοηθήσει να αποσφαλματώσουμε το πρόβλημά σας. Ενώ λαμβάνουμε προφυλάξεις για να διασφαλίσουμε ότι οι ευαίσθητες πληροφορίες δεν καταγράφονται, σας ενθαρρύνουμε να δείτε αυτά τα αρχεία καταγραφής πριν τα μοιραστείτε.",
|
||||
"preparingLogsTitle": "Προετοιμασία αρχείων καταγραφής...",
|
||||
"emailLogsTitle": "Αρχεία καταγραφής ηλ. ταχυδρομείου",
|
||||
"sendLogsDescription": "Αυτό θα στείλει αρχεία καταγραφής για να μας βοηθήσει να εντοπίσουμε το πρόβλημά σας. Παρόλο που λαμβάνουμε προφυλάξεις για να διασφαλίσουμε ότι δεν καταγράφονται ευαίσθητες πληροφορίες, σας ενθαρρύνουμε να δείτε αυτά τα αρχεία καταγραφής πριν τα μοιραστείτε.",
|
||||
"preparingLogsTitle": "Προετοιμασία αρχείων καταγραφής…",
|
||||
"emailLogsTitle": "Αρχεία καταγραφής email",
|
||||
"emailLogsMessage": "Παρακαλώ στείλτε τα αρχεία καταγραφής στο {email}",
|
||||
"@emailLogsMessage": {
|
||||
"placeholders": {
|
||||
@@ -63,12 +63,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"copyEmailAction": "Αντιγραφή διεύθυνσης ηλ. ταχυδρομείου",
|
||||
"copyEmailAction": "Αντιγραφή email",
|
||||
"exportLogsAction": "Εξαγωγή αρχείων καταγραφής",
|
||||
"reportABug": "Αναφορά Σφάλματος",
|
||||
"crashAndErrorReporting": "Αναφορά κατάρρευσης & σφάλματος",
|
||||
"reportBug": "Αναφορά σφάλματος",
|
||||
"emailUsMessage": "Παρακαλώ στείλτε μας μήνυμα ηλ. ταχυδρομείου στο {email}",
|
||||
"emailUsMessage": "Παρακαλούμε στείλτε μας email στο {email}",
|
||||
"@emailUsMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
@@ -78,20 +78,20 @@
|
||||
},
|
||||
"contactSupport": "Επικοινωνήστε με την υποστήριξη",
|
||||
"rateUsOnStore": "Αξιολογήστε μας στο {storeName}",
|
||||
"blog": "Ιστολόγιο",
|
||||
"blog": "Blog",
|
||||
"merchandise": "Προϊόντα",
|
||||
"verifyPassword": "Επαλήθευση κωδικού πρόσβασης",
|
||||
"pleaseWait": "Παρακαλώ περιμένετε...",
|
||||
"generatingEncryptionKeysTitle": "Δημιουργία κλειδιών κρυπτογράφησης...",
|
||||
"recreatePassword": "Επαναδημιουργία κωδικού πρόσβασης",
|
||||
"recreatePasswordMessage": "Η τρέχουσα συσκευή δεν είναι αρκετά ισχυρή για να επαληθεύσει τον κωδικό πρόσβασής σας, οπότε πρέπει να τον επαναδημιουργήσουμε με τέτοιο τρόπο ώστε να λειτουργεί με όλες τις συσκευές. \n\nΠαρακαλούμε συνδεθείτε χρησιμοποιώντας το κλειδί ανάκτησης σας και επαναδημιουργήστε τον κωδικό πρόσβασής σας (μπορείτε να χρησιμοποιήσετε ξανά τον ίδιο αν το επιθυμείτε).",
|
||||
"pleaseWait": "Παρακαλώ περιμένετε…",
|
||||
"generatingEncryptionKeysTitle": "Δημιουργία κλειδιών κρυπτογράφησης…",
|
||||
"recreatePassword": "Αναδημιουργία κωδικού πρόσβασης",
|
||||
"recreatePasswordMessage": "Η τρέχουσα συσκευή δεν είναι αρκετά ισχυρή για την επαλήθευση του κωδικού πρόσβασής σας, οπότε πρέπει να τον δημιουργήσουμε ξανά μια φορά με έναν τρόπο που να λειτουργεί με όλες τις συσκευές.\n\nΠαρακαλούμε συνδεθείτε χρησιμοποιώντας το κλειδί ανάκτησης και δημιουργήστε ξανά τον κωδικό πρόσβασής σας (μπορείτε να χρησιμοποιήσετε ξανά τον ίδιο αν επιθυμείτε).",
|
||||
"useRecoveryKey": "Χρήση κλειδιού ανάκτησης",
|
||||
"incorrectPasswordTitle": "Λάθος κωδικός πρόσβασης",
|
||||
"welcomeBack": "Καλωσορίσατε και πάλι!",
|
||||
"madeWithLoveAtPrefix": "φτιαγμένη με ❤️ στο ",
|
||||
"supportDevs": "Εγγραφείτε στο <bold-green>ente</bold-green> για να μας υποστηρίξετε",
|
||||
"supportDiscount": "Χρησιμοποιήστε τον κωδικό κουπονιού \"AUTH\" για να πάρετε 10% από το πρώτο έτος",
|
||||
"changeEmail": "Αλλαγή διεύθυνσης ηλ. ταχυδρομείου",
|
||||
"changeEmail": "Αλλαγή email",
|
||||
"changePassword": "Αλλαγή κωδικού πρόσβασής",
|
||||
"data": "Δεδομένα",
|
||||
"importCodes": "Εισαγωγή κωδικών",
|
||||
@@ -114,12 +114,12 @@
|
||||
"importInstruction": "Παρακαλώ επιλέξτε ένα αρχείο που περιέχει μια λίστα των κωδικών σας με τον ακόλουθο τύπο",
|
||||
"importCodeDelimiterInfo": "Οι κωδικοί μπορούν να διαχωριστούν με κόμμα ή με μία νέα γραμμή",
|
||||
"selectFile": "Επιλέξτε αρχείο",
|
||||
"emailVerificationToggle": "Επαλήθευση διεύθυνσης ηλ. ταχυδρομείου",
|
||||
"emailVerificationEnableWarning": "Για να αποφύγετε να κλειδωθείτε έξω από τον λογαριασμό σας, φροντίστε να αποθηκεύσετε ένα αντίγραφο του 2FA του ηλ. ταχυδρομείου σας έξω από το Ente Auth πριν ενεργοποιήσετε την επαλήθευση μέσω ηλ. ταχυδρομείου.",
|
||||
"authToChangeEmailVerificationSetting": "Παρακαλώ πραγματοποιήστε έλεγχο ταυτότητας για να αλλάξετε την επαλήθευση ηλ. ταχυδρομείου",
|
||||
"emailVerificationToggle": "Επαλήθευση email",
|
||||
"emailVerificationEnableWarning": "Για να αποφύγετε να κλειδωθείτε έξω από τον λογαριασμό σας, φροντίστε να αποθηκεύσετε ένα αντίγραφο του 2FA του email σας εκτός του Ente Auth πριν ενεργοποιήσετε την επαλήθευση email.",
|
||||
"authToChangeEmailVerificationSetting": "Παρακαλούμε πιστοποιηθείτε για να αλλάξετε την επαλήθευση email",
|
||||
"authenticateGeneric": "Παρακαλώ πιστοποιήστε την ταυτότητά σας",
|
||||
"authToViewYourRecoveryKey": "Παρακαλώ πραγματοποιήστε έλεγχο ταυτότητας για να δείτε το κλειδί ανάκτησης",
|
||||
"authToChangeYourEmail": "Παρακαλώ πραγματοποιήστε έλεγχο ταυτότητας για να αλλάξετε τη διεύθυνση ηλ. ταχυδρομείου σας",
|
||||
"authToChangeYourEmail": "Παρακαλώ πιστοποιηθείτε για να αλλάξετε το email σας",
|
||||
"authToChangeYourPassword": "Παρακαλώ πραγματοποιήστε έλεγχο ταυτότητας για να αλλάξετε τον κωδικό πρόσβασής σας",
|
||||
"authToViewSecrets": "Παρακαλώ πραγματοποιήστε έλεγχο ταυτότητας για να δείτε τα μυστικά σας",
|
||||
"authToInitiateSignIn": "Παρακαλώ πραγματοποιήστε έλεγχο ταυτότητας για να ξεκινήσετε την είσοδο για δημιουργία αντιγράφου ασφαλείας.",
|
||||
@@ -127,7 +127,7 @@
|
||||
"cancel": "Ακύρωση",
|
||||
"yes": "Ναι",
|
||||
"no": "Όχι",
|
||||
"email": "Διεύθυνση ηλ. ταχυδρομείου",
|
||||
"email": "Email",
|
||||
"support": "Υποστήριξη",
|
||||
"general": "Γενικά",
|
||||
"settings": "Ρυθμίσεις",
|
||||
@@ -141,16 +141,6 @@
|
||||
"oops": "Ουπς",
|
||||
"suggestFeatures": "Προτείνετε λειτουργίες",
|
||||
"faq": "Συχνές Ερωτήσεις",
|
||||
"faq_q_1": "Πόσο ασφαλής είναι το Auth;",
|
||||
"faq_a_1": "Όλοι οι κωδικοί που δημιουργείτε μέσω του Auth αποθηκεύονται κρυπτογραφημένοι από άκρο σε άκρο. Αυτό σημαίνει ότι μόνο εσείς μπορείτε να έχετε πρόσβαση στους κωδικούς σας. Οι εφαρμογές μας είναι ανοικτού κώδικα και η κρυπτογραφία μας έχει ελεγχθεί εξωτερικά.",
|
||||
"faq_q_2": "Μπορώ να έχω πρόσβαση στους κωδικούς μου στον υπολογιστή;",
|
||||
"faq_a_2": "Μπορείτε να αποκτήσετε πρόσβαση στους κωδικούς σας στο ίντερνετ @ auth.ente.io.",
|
||||
"faq_q_3": "Πώς μπορώ να διαγράψω κωδικούς;",
|
||||
"faq_a_3": "Μπορείτε να διαγράψετε έναν κωδικό σύροντας αριστερά σε αυτό το αντικείμενο.",
|
||||
"faq_q_4": "Πώς μπορώ να υποστηρίξω αυτό το πρότζεκτ;",
|
||||
"faq_a_4": "Μπορείτε να υποστηρίξετε την ανάπτυξη αυτού του πρότζεκτ με την εγγραφή σας στην εφαρμογή Photos @ ente.io.",
|
||||
"faq_q_5": "Πώς μπορώ να ενεργοποιήσω το Κλείδωμα FaceID στο Auth",
|
||||
"faq_a_5": "Μπορείτε να ενεργοποιήσετε το κλείδωμα FaceID στις Ρυθμίσεις → Ασφάλεια → Οθόνη κλειδώματος.",
|
||||
"somethingWentWrongMessage": "Κάτι πήγε στραβά, παρακαλώ προσπαθήστε ξανά",
|
||||
"leaveFamily": "Αποχώρηση από οικογένεια",
|
||||
"leaveFamilyMessage": "Είστε σίγουροι ότι θέλετε να φύγετε από το οικογενειακό πρόγραμμα;",
|
||||
@@ -160,7 +150,7 @@
|
||||
"scan": "Σάρωση",
|
||||
"scanACode": "Σάρωση κωδικού",
|
||||
"verify": "Επαλήθευση",
|
||||
"verifyEmail": "Επιβεβαίωση διεύθυνσης ηλ. ταχυδρομείου",
|
||||
"verifyEmail": "Επαλήθευση email",
|
||||
"enterCodeHint": "Εισάγετε τον 6ψήφιο κωδικό από \nτην εφαρμογή αυθεντικοποίησης",
|
||||
"lostDeviceTitle": "Χαμένη συσκευή;",
|
||||
"twoFactorAuthTitle": "Αυθεντικοποίηση δύο παραγόντων",
|
||||
@@ -169,7 +159,7 @@
|
||||
"recoverAccount": "Ανάκτηση λογαριασμού",
|
||||
"enterRecoveryKeyHint": "Εισάγετε το κλειδί ανάκτησης σας",
|
||||
"recover": "Ανάκτηση",
|
||||
"contactSupportViaEmailMessage": "Παρακαλώ αφήστε ένα μήνυμα ηλ. ταχυδρομείου στο {email} από την καταχωρημένη διεύθυνση σας",
|
||||
"contactSupportViaEmailMessage": "Παρακαλούμε στείλτε ένα email στο {email} από την καταχωρημένη διεύθυνση email σας",
|
||||
"@contactSupportViaEmailMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
@@ -179,15 +169,15 @@
|
||||
},
|
||||
"invalidQRCode": "Μη έγκυρος κωδικός QR",
|
||||
"noRecoveryKeyTitle": "Χωρίς κλειδί ανάκτησης;",
|
||||
"enterEmailHint": "Εισάγετε την διεύθυνση του ηλ. ταχυδρομείου σας",
|
||||
"invalidEmailTitle": "Μη έγκυρη διεύθυνση ηλ. ταχυδρομείου",
|
||||
"invalidEmailMessage": "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση ηλ. ταχυδρομείου.",
|
||||
"enterEmailHint": "Εισάγετε τη διεύθυνση email σας",
|
||||
"invalidEmailTitle": "Μη έγκυρη διεύθυνση email",
|
||||
"invalidEmailMessage": "Παρακαλούμε εισάγετε μια έγκυρη διεύθυνση email.",
|
||||
"deleteAccount": "Διαγραφή λογαριασμού",
|
||||
"deleteAccountQuery": "Λυπόμαστε που σας βλέπουμε να φεύγετε. Αντιμετωπίζετε κάποιο πρόβλημα;",
|
||||
"yesSendFeedbackAction": "Ναι, αποστολή σχολίων",
|
||||
"noDeleteAccountAction": "Όχι, διαγραφή λογαριασμού",
|
||||
"initiateAccountDeleteTitle": "Παρακαλώ πραγματοποιήστε έλεγχο ταυτότητας για να ξεκινήσετε τη διαγραφή λογαριασμού",
|
||||
"sendEmail": "Αποστολή μηνύματος ηλ. ταχυδρομείου",
|
||||
"sendEmail": "Αποστολή email",
|
||||
"createNewAccount": "Δημιουργία νέου λογαριασμού",
|
||||
"weakStrength": "Αδύναμος",
|
||||
"strongStrength": "Δυνατός",
|
||||
@@ -280,9 +270,9 @@
|
||||
"recoveryKeyVerifyReason": "Το κλειδί ανάκτησης σας είναι ο μόνος τρόπος για να ανακτήσετε τις φωτογραφίες σας εάν ξεχάσετε τον κωδικό πρόσβασής σας. Μπορείτε να βρείτε το κλειδί ανάκτησης σας στις Ρυθμίσεις > Λογαριασμός.\n\nΠαρακαλώ εισάγετε το κλειδί ανάκτησης σας εδώ για να βεβαιωθείτε ότι το έχετε αποθηκεύσει σωστά.",
|
||||
"confirmYourRecoveryKey": "Επιβεβαίωση κλειδιού ανάκτησης",
|
||||
"confirm": "Επιβεβαίωση",
|
||||
"emailYourLogs": "Στείλτε με μήνυμα ηλ. ταχυδομείου τα αρχεία καταγραφής σας",
|
||||
"emailYourLogs": "Στείλτε με email τα αρχεία καταγραφής σας",
|
||||
"pleaseSendTheLogsTo": "Παρακαλώ στείλτε τα αρχεία καταγραφής σας στο \n{toEmail}",
|
||||
"copyEmailAddress": "Αντιγραφή διεύθυνσης ηλ. ταχυδρομείου",
|
||||
"copyEmailAddress": "Αντιγραφή διεύθυνσης email",
|
||||
"exportLogs": "Εξαγωγή αρχείων καταγραφής",
|
||||
"enterYourRecoveryKey": "Εισάγετε το κλειδί ανάκτησης σας",
|
||||
"tempErrorContactSupportIfPersists": "Φαίνεται ότι κάτι πήγε στραβά. Παρακαλώ προσπαθήστε ξανά μετά από κάποιο χρονικό διάστημα. Αν το σφάλμα παραμένει, παρακαλούμε επικοινωνήστε με την ομάδα υποστήριξης μας.",
|
||||
@@ -325,7 +315,7 @@
|
||||
"pendingSyncsWarningBody": "Δεν έχουν γίνει αντίγραφα ασφαλείας για μερικούς από τους κωδικούς σας.\n\nΠαρακαλώ βεβαιωθείτε ότι έχετε ένα αντίγραφο ασφαλείας για αυτούς τους κωδικούς πριν αποσυνδεθείτε.",
|
||||
"checkInboxAndSpamFolder": "Παρακαλώ ελέγξτε τα εισερχόμενά σας (και τα ανεπιθύμητα) για να ολοκληρώσετε την επαλήθευση",
|
||||
"tapToEnterCode": "Πατήστε για να εισάγετε τον κωδικό",
|
||||
"resendEmail": "Επαναποστολή μηνύματος ηλ. ταχυδρομείου",
|
||||
"resendEmail": "Επανάληψη αποστολής email",
|
||||
"weHaveSendEmailTo": "Έχουμε στείλει ένα μήνυμα στο <green>{email}</green>",
|
||||
"@weHaveSendEmailTo": {
|
||||
"description": "Text to indicate that we have sent a mail to the user",
|
||||
@@ -344,13 +334,13 @@
|
||||
"terminateSession": "Τερματισμός συνεδρίας;",
|
||||
"terminate": "Τερματισμός",
|
||||
"thisDevice": "Αυτή η συσκευή",
|
||||
"toResetVerifyEmail": "Για να επαναφέρετε τον κωδικό πρόσβασής σας, επαληθεύστε πρώτα την διευθυνση ηλ. ταχυδρομείου σας.",
|
||||
"thisEmailIsAlreadyInUse": "Αυτός ο λογαριασμός ηλεκτρονικού ταχυδρομείου χρησιμοποιείται ήδη",
|
||||
"toResetVerifyEmail": "Για να επαναφέρετε τον κωδικό πρόσβασής σας, επαληθεύστε πρώτα το email σας.",
|
||||
"thisEmailIsAlreadyInUse": "Αυτό το email είναι ήδη σε χρήση",
|
||||
"verificationFailedPleaseTryAgain": "Η επαλήθευση απέτυχε, παρακαλώ προσπαθήστε ξανά",
|
||||
"yourVerificationCodeHasExpired": "Ο κωδικός επαλήθευσης σας έχει λήξει",
|
||||
"incorrectCode": "Εσφαλμένος κωδικός",
|
||||
"sorryTheCodeYouveEnteredIsIncorrect": "Λυπούμαστε, ο κωδικός που εισαγάγατε είναι εσφαλμένος",
|
||||
"emailChangedTo": "Η διεύθυνση ηλ. ταχυδρομείου άλλαξε σε {newEmail}",
|
||||
"emailChangedTo": "Το email άλλαξε σε {newEmail}",
|
||||
"authenticationFailedPleaseTryAgain": "Αποτυχία ελέγχου ταυτότητας, παρακαλώ προσπαθήστε ξανά",
|
||||
"authenticationSuccessful": "Επιτυχής έλεγχος ταυτότητας!",
|
||||
"twofactorAuthenticationSuccessfullyReset": "Η αυθεντικοποίηση δύο παραγόντων επαναφέρθηκε επιτυχώς",
|
||||
@@ -492,5 +482,6 @@
|
||||
"setNewPin": "Ορίστε νέο PIN",
|
||||
"importFailureDescNew": "Αδυναμία ανάλυσης του επιλεγμένου αρχείου.",
|
||||
"appLockNotEnabled": "Το κλείδωμα εφαρμογής δεν είναι ενεργοποιημένο",
|
||||
"appLockNotEnabledDescription": "Παρακαλώ ενεργοποιήστε το κλείδωμα εφαρμογής μέσω της επιλογής Ασφάλεια > Κλείδωμα εφαρμογής"
|
||||
"appLockNotEnabledDescription": "Παρακαλώ ενεργοποιήστε το κλείδωμα εφαρμογής μέσω της επιλογής Ασφάλεια > Κλείδωμα εφαρμογής",
|
||||
"authToViewPasskey": "Παρακαλώ πιστοποιηθείτε για να δείτε το κλειδί πρόσβασης"
|
||||
}
|
||||
@@ -483,5 +483,6 @@
|
||||
"importFailureDescNew": "Could not parse the selected file.",
|
||||
"appLockNotEnabled": "App lock not enabled",
|
||||
"appLockNotEnabledDescription": "Please enable app lock from Security > App Lock",
|
||||
"authToViewPasskey": "Please authenticate to view passkey"
|
||||
"authToViewPasskey": "Please authenticate to view passkey",
|
||||
"appLockOfflineModeWarning": "You have chosen to proceed without backups. If you forget your applock, you will be locked out from accessing your data."
|
||||
}
|
||||
@@ -123,16 +123,6 @@
|
||||
"oops": "Ups",
|
||||
"suggestFeatures": "Sugerir funcionalidades",
|
||||
"faq": "Preguntas Frecuentes",
|
||||
"faq_q_1": "¿Qué tan seguro es Auth?",
|
||||
"faq_a_1": "Todos los códigos que copia de seguridad vía Ente se almacenan cifrados de extremo a extremo. Esto significa que solo usted puede acceder a sus códigos. Nuestras aplicaciones son de código abierto y nuestra criptografía ha sido auditada externamente.",
|
||||
"faq_q_2": "¿Puedo acceder a mis códigos en el escritorio?",
|
||||
"faq_a_2": "Puede acceder a tus códigos en la web en auth.ente.io.",
|
||||
"faq_q_3": "¿Cómo puedo borrar códigos?",
|
||||
"faq_a_3": "Puede eliminar un código deslizando a la izquierda en ese elemento.",
|
||||
"faq_q_4": "¿Cómo puedo apoyar este proyecto?",
|
||||
"faq_a_4": "Puedes apoyar el desarrollo de este proyecto suscribiéndote a nuestra app de Fotos en ente.io.",
|
||||
"faq_q_5": "Cómo puedo habilitar bloqueo FaceID en Ente Auth",
|
||||
"faq_a_5": "Puede activar el bloqueo FaceID en Ajustes → Seguridad → Pantalla de bloqueo.",
|
||||
"somethingWentWrongMessage": "Algo ha ido mal, por favor, prueba otra vez",
|
||||
"leaveFamily": "Dejar plan familiar",
|
||||
"leaveFamilyMessage": "¿Está seguro de que desea abandonar el plan familiar?",
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"account": "حساب کاربری",
|
||||
"unlock": "بازکردن",
|
||||
"recoveryKey": "کلید بازیابی",
|
||||
"counterAppBarTitle": "شمارنده",
|
||||
"@counterAppBarTitle": {
|
||||
@@ -9,11 +10,31 @@
|
||||
"onBoardingGetStarted": "شروع کنید",
|
||||
"setupFirstAccount": "اولین حساب خود را راهاندازی کنید",
|
||||
"importScanQrCode": "اسکن کردن کد QR",
|
||||
"qrCode": "بارکد",
|
||||
"importEnterSetupKey": "وارد کردن کلید تنظیم",
|
||||
"importAccountPageTitle": "ورود اطلاعات حساب",
|
||||
"secretCanNotBeEmpty": "سکرت نمیتواند خالی باشد",
|
||||
"incorrectDetails": "اطلاعات اشتباه",
|
||||
"pleaseVerifyDetails": "لطفا اطلاعات را تایید کنید و دوباره امتحان کنید",
|
||||
"codeIssuerHint": "صادر کننده",
|
||||
"codeSecretKeyHint": "کلید مخفی",
|
||||
"secret": "سکرت",
|
||||
"all": "همه",
|
||||
"notes": "یادداشتها",
|
||||
"notesLengthLimit": "یادداشت میتوانند {count} کارکتر بلند باشند",
|
||||
"@notesLengthLimit": {
|
||||
"description": "Text to indicate the maximum number of characters allowed for notes",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"description": "The maximum number of characters allowed for notes",
|
||||
"type": "int",
|
||||
"example": "100"
|
||||
}
|
||||
}
|
||||
},
|
||||
"codeAccountHint": "حساب (you@domain.com)",
|
||||
"codeTagHint": "برچسب",
|
||||
"accountKeyType": "نوع کلید",
|
||||
"sessionExpired": "نشست منقضی شده است",
|
||||
"@sessionExpired": {
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
@@ -26,6 +47,7 @@
|
||||
"nextTotpTitle": "بعدی",
|
||||
"deleteCodeTitle": "کد حذف شود؟",
|
||||
"deleteCodeMessage": "آیا مطمئن هستید که می خواهید این کد را حذف کنید؟ این کار غیرقابل تغییر است.",
|
||||
"trash": "زباله",
|
||||
"viewLogsAction": "نمایش لاگها",
|
||||
"sendLogsDescription": "این باعث ارسال لاگها میشود تا به ما در رفع مشکل شما کمک کند. هرچند ما اقداماتی را جهت جلوگیری از ثبت اطلاعات حساس در لاگ انجام میدهیم، اما به شما توصیه میکنیم قبل از اشتراک گذاری لاگها آنها را مشاهده کنید.",
|
||||
"preparingLogsTitle": "در حال آمادهسازی لاگها...",
|
||||
@@ -52,6 +74,8 @@
|
||||
}
|
||||
},
|
||||
"contactSupport": "ارتباط با پشتیبانی",
|
||||
"rateUsOnStore": "به ما در {storeName} امتیاز دهید",
|
||||
"blog": "وبلاگ",
|
||||
"verifyPassword": "تایید رمز عبور",
|
||||
"pleaseWait": "لطفا صبر کنید...",
|
||||
"generatingEncryptionKeysTitle": "در حال تولید کلیدهای رمزگذاری...",
|
||||
@@ -67,10 +91,15 @@
|
||||
"changePassword": "تغییر رمز عبور",
|
||||
"data": "داده ها",
|
||||
"importCodes": "ورود کدها",
|
||||
"importTypePlainText": "متن ساده",
|
||||
"importTypeEnteEncrypted": "Ente Encrypted export",
|
||||
"importSelectJsonFile": "انتخاب کنید فایل JSON",
|
||||
"exportCodes": "صدور کدها",
|
||||
"importLabel": "وارد کردن",
|
||||
"importInstruction": "لطفا یک فایل که حاوی لیستی از کدهای شما در قالب زیر است، انتخاب کنید",
|
||||
"importCodeDelimiterInfo": "کدها میتوانند با کاما یا یک خط جدید از یکدیگر جدا شوند",
|
||||
"selectFile": "انتخاب فایل",
|
||||
"emailVerificationToggle": "تائید ایمیل",
|
||||
"authToViewYourRecoveryKey": "لطفا جهت نمایش کلید بازیابی خود، اعتبارسنجی کنید",
|
||||
"authToChangeYourEmail": "لطفا جهت تغییر ایمیل خود، اعتبارسنجی کنید",
|
||||
"authToChangeYourPassword": "لطفا جهت تغییر رمز عبور خود، اعتبارسنجی کنید",
|
||||
@@ -80,14 +109,18 @@
|
||||
"no": "خیر",
|
||||
"email": "ایمیل",
|
||||
"support": "پشتیبانی",
|
||||
"general": "عمومی",
|
||||
"settings": "تنظیمات",
|
||||
"copied": "کپی شد",
|
||||
"pleaseTryAgain": "لطفا دوباره تلاش کنید",
|
||||
"existingUser": "کاربر موجود",
|
||||
"newUser": "کاربر جدید Ente",
|
||||
"delete": "حذف",
|
||||
"enterYourPasswordHint": "رمز عبور خود را وارد کنید",
|
||||
"forgotPassword": "فراموشی رمز عبور",
|
||||
"oops": "اوه",
|
||||
"suggestFeatures": "پیشنهاد قابلیت ها",
|
||||
"faq": "سوالات متداول",
|
||||
"somethingWentWrongMessage": "مشکلی پیش آمده است، لطفا دوباره تلاش کنید",
|
||||
"leaveFamily": "خروج از طرح خانواده",
|
||||
"leaveFamilyMessage": "آیا مطمئنید که میخواهید از طرح خانواده خارج شوید؟",
|
||||
@@ -95,9 +128,12 @@
|
||||
"scan": "اسکن",
|
||||
"scanACode": "یک کد را اسکن کنید",
|
||||
"verify": "تایید",
|
||||
"verifyEmail": "تایید ایمیل",
|
||||
"enterCodeHint": "کد تایید ۶ رقمی را از برنامه\nاحراز هویت خود وارد کنید",
|
||||
"lostDeviceTitle": "دستگاه را گم کردهاید؟",
|
||||
"twoFactorAuthTitle": "احراز هویت دو مرحلهای",
|
||||
"passkeyAuthTitle": "تایید کردن پسکی",
|
||||
"verifyPasskey": "تایید پسکی",
|
||||
"recoverAccount": "بازیابی حساب کاربری",
|
||||
"enterRecoveryKeyHint": "کلید بازیابی خود را وارد کنید",
|
||||
"recover": "بازیابی",
|
||||
@@ -109,6 +145,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"invalidQRCode": "بارکد نامعتبر",
|
||||
"noRecoveryKeyTitle": "کلید بازیابی ندارید؟",
|
||||
"enterEmailHint": "آدرس ایمیل خود را وارد کنید",
|
||||
"invalidEmailTitle": "آدرس ایمیل نامعتبر است",
|
||||
@@ -142,6 +179,8 @@
|
||||
"scanAQrCode": "اسکن کردن کد QR",
|
||||
"enterDetailsManually": "ورود دستی جزئیات",
|
||||
"edit": "ویرایش",
|
||||
"share": "اشتراکگذاری",
|
||||
"restore": "بازگرداندن",
|
||||
"copiedToClipboard": "به حافظه موقت کپی شد",
|
||||
"error": "خطا",
|
||||
"recoveryKeyCopiedToClipboard": "کلید بازیابی به حافظه موقت کپی شد",
|
||||
@@ -149,6 +188,9 @@
|
||||
"recoveryKeySaveDescription": "ما این کلید را ذخیره نمیکنیم، لطفا این کلید ۲۴ کلمهای را در مکانی امن ذخیره کنید.",
|
||||
"doThisLater": "بعداً انجام شود",
|
||||
"saveKey": "ذخیره کلید",
|
||||
"save": "ذخیره",
|
||||
"send": "ارسال",
|
||||
"back": "بازگشت",
|
||||
"createAccount": "ایجاد حساب کاربری",
|
||||
"passwordStrength": "قدرت رمز عبور: {passwordStrengthValue}",
|
||||
"@passwordStrength": {
|
||||
@@ -167,8 +209,14 @@
|
||||
"privacyPolicyTitle": "سیاست حفظ حریم خصوصی",
|
||||
"termsOfServicesTitle": "شرایط و ضوابط",
|
||||
"encryption": "رمزگذاری",
|
||||
"setPasswordTitle": "تنظیم پسورد",
|
||||
"changePasswordTitle": "تغییر رمز عبور",
|
||||
"resetPasswordTitle": "بازنشانی رمز عبور",
|
||||
"encryptionKeys": "کلیدهای رمزنگاری",
|
||||
"passwordChangedSuccessfully": "رمز عبور با موفقیت تغییر کرد",
|
||||
"continueLabel": "ادامه",
|
||||
"insecureDevice": "دستگاه ناامن",
|
||||
"howItWorks": "چگونه کار میکند",
|
||||
"ackPasswordLostWarning": "میدانم که اگر رمز عبور خود را گم کنم، از آنجایی که اطلاعات من <underline>رمزگذاری سرتاسری</underline> شده است، ممکن است اطلاعاتم را از دست بدهم.",
|
||||
"loginTerms": "با کلیک روی ورود، با <u-terms>شرایط استفاده از خدمات</u-terms> و <u-policy>سیاست حفظ حریم خصوصی</u-policy> موافقت میکنم",
|
||||
"logInLabel": "ورود",
|
||||
@@ -201,6 +249,11 @@
|
||||
"privacy": "حریم خصوصی",
|
||||
"terms": "شرایط و ضوابط",
|
||||
"checkForUpdates": "بررسی بروزرسانی",
|
||||
"checkStatus": "بررسی وضعیت",
|
||||
"downloadUpdate": "دانلود",
|
||||
"criticalUpdateAvailable": "بهروزرسانی مهم در دسترس است",
|
||||
"updateAvailable": "بهرورزرسانی در دسترس است",
|
||||
"update": "بهروزرسانی",
|
||||
"checking": "در حال بررسی...",
|
||||
"youAreOnTheLatestVersion": "شما در حال اجرای آخرین نسخه هستید",
|
||||
"warning": "اخطار",
|
||||
@@ -225,7 +278,43 @@
|
||||
"importFailureDesc": "نتوانستیم فایل انتخابی را تجزیه و تحلیل کنیم.\nاگر به کمک نیاز دارید، لطفا به support@ente.io ایمیل بزنید!",
|
||||
"pendingSyncs": "اخطار",
|
||||
"pendingSyncsWarningBody": "برخی از کدهای شما پشتیبان گیری نشده اند.\n\nلطفا قبل از خروج، مطمئن شوید که یک نسخه پشتیبان برای این کدها دارید.",
|
||||
"checkInboxAndSpamFolder": "لطفا صندوق ورودی (و هرزنامه) خود را برای تایید کامل بررسی کنید",
|
||||
"tapToEnterCode": "برای وارد کردن کد ضربه بزنید",
|
||||
"resendEmail": "ارسال مجدد ایمیل",
|
||||
"weHaveSendEmailTo": "ما یک ایمیل به <green>{email}</green> ارسال کردهایم",
|
||||
"@weHaveSendEmailTo": {
|
||||
"description": "Text to indicate that we have sent a mail to the user",
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"description": "The email address of the user",
|
||||
"type": "String",
|
||||
"example": "example@ente.io"
|
||||
}
|
||||
}
|
||||
},
|
||||
"activeSessions": "نشست های فعال",
|
||||
"terminate": "خروج",
|
||||
"thisDevice": "این دستگاه",
|
||||
"toResetVerifyEmail": "برای تنظیم مجدد رمز عبور، لطفا ابتدا ایمیل خود را تایید کنید.",
|
||||
"thisEmailIsAlreadyInUse": "این ایمیل درحال استفاده است",
|
||||
"verificationFailedPleaseTryAgain": "تایید ناموفق بود، لطفا مجددا تلاش کنید",
|
||||
"yourVerificationCodeHasExpired": "کد تایید شما باطل شد",
|
||||
"incorrectCode": "کد اشتباه",
|
||||
"sorryTheCodeYouveEnteredIsIncorrect": "معظرت میخوام، کدی که شما وارد کردید اشتباه است",
|
||||
"emailChangedTo": "ایمیل عوض شد به {newEmail}",
|
||||
"authenticationFailedPleaseTryAgain": "احراز هویت ناموفق بود، لطفا دوباره تلاش کنید",
|
||||
"enterPassword": "رمز عبور را وارد کنید",
|
||||
"selectExportFormat": "انتخاب فرمت استخراج",
|
||||
"encrypted": "رمزنگاری شده",
|
||||
"plainText": "متن ساده",
|
||||
"export": "صدور",
|
||||
"useOffline": "استفاده بدون پشتیبان گیری",
|
||||
"singIn": "ورود",
|
||||
"showLargeIcons": "نشان دادن ایکون های بزرگ",
|
||||
"compactMode": "حالت فشرده",
|
||||
"shouldHideCode": "کد هارا مخفی کردن",
|
||||
"doubleTapToViewHiddenCode": "شما میتونید با دوبار فشردن یه گزینه تا کد آنرا ببینید",
|
||||
"focusOnSearchBar": "در زمان شروع برنامه، در حالت جستجو باش",
|
||||
"editCodeAuthMessage": "احراز هویت برای ویرایش کد",
|
||||
"deleteCodeAuthMessage": "احراز هویت برای حذف کد",
|
||||
"showQRAuthMessage": "احراز هویت برای نمایش کد QR",
|
||||
|
||||
@@ -97,11 +97,6 @@
|
||||
"oops": "Hupsista",
|
||||
"suggestFeatures": "Ehdota parannuksia",
|
||||
"faq": "Usein kysyttyä",
|
||||
"faq_q_1": "Kuinka turvallinen Auth on?",
|
||||
"faq_q_3": "Kuinka voin poistaa koodeja?",
|
||||
"faq_q_4": "Kuinka voin tukea tätä projektia?",
|
||||
"faq_q_5": "Miten voin ottaa käyttöön FaceID-lukituksen Authissa",
|
||||
"faq_a_5": "Voit ottaa FaceID-lukituksen käyttöön kohdassa Asetukset → Turvallisuus → Lukitusnäyttö.",
|
||||
"somethingWentWrongMessage": "Jokin meni pieleen, yritä uudelleen",
|
||||
"leaveFamily": "Poistu perheestä",
|
||||
"leaveFamilyMessage": "Oletko varma että haluat jättää tämän perhemallin?",
|
||||
|
||||
@@ -140,16 +140,6 @@
|
||||
"oops": "Oups",
|
||||
"suggestFeatures": "Suggérer des fonctionnalités",
|
||||
"faq": "FAQ",
|
||||
"faq_q_1": "Quelle est la sécurité de Auth?",
|
||||
"faq_a_1": "Tous les codes que vous sauvegardez via ente sont chiffrés de bout en bout. Cela signifie que vous seul pouvez accéder à vos codes. Nos applications sont open source et notre cryptographie ont fait l'objet d'un audit externe.",
|
||||
"faq_q_2": "Puis-je accéder à mes codes sur mon ordinateur ?",
|
||||
"faq_a_2": "Vous pouvez accéder à vos codes sur le web via auth.ente.io.",
|
||||
"faq_q_3": "Comment puis-je supprimer des codes ?",
|
||||
"faq_a_3": "Vous pouvez supprimer un code en glissant vers la gauche.",
|
||||
"faq_q_4": "Comment puis-je soutenir le projet ?",
|
||||
"faq_a_4": "Vous pouvez soutenir le développement de ce projet en vous abonnant à notre application Photos, ente.io.",
|
||||
"faq_q_5": "Comment puis-je activer le verrouillage FaceID dans Auth",
|
||||
"faq_a_5": "Vous pouvez activer le verrouillage FaceID dans Paramètres → Sécurité → Écran de verrouillage.",
|
||||
"somethingWentWrongMessage": "Quelque chose s'est mal passé, veuillez recommencer",
|
||||
"leaveFamily": "Quitter le plan familial",
|
||||
"leaveFamilyMessage": "Êtes-vous sûr de vouloir quitter le plan familial ?",
|
||||
@@ -487,5 +477,7 @@
|
||||
"pinLock": "Verrouillage par code PIN",
|
||||
"enterPin": "Saisir le code PIN",
|
||||
"setNewPin": "Définir un nouveau code PIN",
|
||||
"importFailureDescNew": "Impossible de lire le fichier sélectionné."
|
||||
"importFailureDescNew": "Impossible de lire le fichier sélectionné.",
|
||||
"authToViewPasskey": "Veuillez vous authentifier pour afficher la clé d'accès",
|
||||
"appLockOfflineModeWarning": "Vous avez choisi de fonctionner sans sauvegardes. Si vous oubliez votre outil Applock, vous serez bloqué dans l'accès à vos données."
|
||||
}
|
||||
@@ -113,15 +113,6 @@
|
||||
"oops": "אופס",
|
||||
"suggestFeatures": "הציעו מאפיינים",
|
||||
"faq": "שאלות נפוצות",
|
||||
"faq_q_1": "כמה מאובטח ente Auth?",
|
||||
"faq_a_1": "כל הקודים שאתה מגבה דרך ente מאוחסנים מקצה לקצה בהצפנה. הכוונה שרק אתה יכול לגשת לקודים שלך. האפליקציות שלנו הם מפותחות דרך קוד פתוח והקריפטוגרפיה שלנו מבוקרת חיצונית.",
|
||||
"faq_q_2": "האם ישנה אפשרות להשתמש בקודים שלי במחשב?",
|
||||
"faq_a_2": "אתה יכול לגשת לקודים שלך ברשת ב- auth.ente.io.",
|
||||
"faq_q_3": "איך אפשר למחוק קודים?",
|
||||
"faq_a_3": "אתה יכול למחוק את הקוד על-ידי החלקה שמאלה על הפריט הזה.",
|
||||
"faq_q_4": "איך אפשר לתמוך בפרויקט זה?",
|
||||
"faq_a_4": "אתה יכול לתמוך בפיתוח של הפרויקט הזה על ידי שתירשם לאפליקצית תמונות שלנו ב-ente.io.",
|
||||
"faq_a_5": "אתה יכול להפעיל מנעול FaceID תחת הגדרות -> אבטחה -> מסך נעילה.",
|
||||
"somethingWentWrongMessage": "משהו השתבש, אנא נסה שנית",
|
||||
"leaveFamily": "עזוב משפחה",
|
||||
"leaveFamilyMessage": "האם אתה בטוח שאתה רוצה לעזוב את התוכנית המשפחתית?",
|
||||
|
||||
@@ -119,10 +119,6 @@
|
||||
"enterYourPasswordHint": "Masukkan sandi kamu",
|
||||
"suggestFeatures": "Sarankan fitur",
|
||||
"faq": "Tanya Jawab Umum",
|
||||
"faq_q_1": "Seberapa aman Auth itu?",
|
||||
"faq_a_1": "Semua kode yang kamu cadangkan melalui Auth disimpan menggunakan enkripsi end-to-end. Jadi hanya kamu yang dapat mengaksesnya. Aplikasi kami bersifat open source dan kriptografi kami telah diaudit oleh eksternal.",
|
||||
"faq_q_2": "Bisakah saya mengakses kode saya di desktop?",
|
||||
"faq_a_2": "Kamu dapat mengakses kodenya melalui web auth.ente.io.",
|
||||
"scan": "Pindai",
|
||||
"scanACode": "Pindai kode",
|
||||
"verify": "Verifikasi",
|
||||
|
||||
@@ -141,16 +141,6 @@
|
||||
"oops": "Oops",
|
||||
"suggestFeatures": "Suggerisci funzionalità",
|
||||
"faq": "FAQ",
|
||||
"faq_q_1": "Quanto è sicuro Auth?",
|
||||
"faq_a_1": "Tutti i codici di cui fai il backup tramite Auth sono memorizzati con crittografia end-to-end. Ciò significa che solo tu puoi accedere ai tuoi codici. Le nostre app sono open source e la nostra crittografia è stata verificata esternamente.",
|
||||
"faq_q_2": "Posso accedere ai miei codici sul desktop?",
|
||||
"faq_a_2": "Puoi accedere ai tuoi codici sul web @ auth.ente.io.",
|
||||
"faq_q_3": "Come posso cancellare i codici?",
|
||||
"faq_a_3": "Puoi eliminare un codice scorrendo il dito a sinistra sul codice in questione.",
|
||||
"faq_q_4": "Come posso supportare questo progetto?",
|
||||
"faq_a_4": "Puoi supportare lo sviluppo di questo progetto abbonandoti alla nostra app Photos @ ente.io.",
|
||||
"faq_q_5": "Come posso abilitare il blocco FaceID in Auth",
|
||||
"faq_a_5": "Puoi abilitare il blocco FaceID in Impostazioni → Sicurezza → Schermata di blocco.",
|
||||
"somethingWentWrongMessage": "Qualcosa è andato storto, per favore riprova",
|
||||
"leaveFamily": "Abbandona il piano famiglia",
|
||||
"leaveFamilyMessage": "Sei sicuro di voler uscire dal piano famiglia?",
|
||||
@@ -492,5 +482,7 @@
|
||||
"setNewPin": "Imposta un nuovo PIN",
|
||||
"importFailureDescNew": "Impossibile elaborare il file selezionato.",
|
||||
"appLockNotEnabled": "Blocco app non abilitato",
|
||||
"appLockNotEnabledDescription": "Si prega di abilitare il blocco dell'app da Sicurezza > Blocco App"
|
||||
"appLockNotEnabledDescription": "Si prega di abilitare il blocco dell'app da Sicurezza > Blocco App",
|
||||
"authToViewPasskey": "Autenticati per visualizzare le tue passkey",
|
||||
"appLockOfflineModeWarning": "Hai scelto di procedere senza backup. Se dimentichi il tuo codice di blocco dell'app, non potrai più accedere ai tuoi dati."
|
||||
}
|
||||
@@ -19,6 +19,20 @@
|
||||
"pleaseVerifyDetails": "詳細を確認し、もう一度お試しください",
|
||||
"codeIssuerHint": "発行者",
|
||||
"codeSecretKeyHint": "秘密鍵",
|
||||
"secret": "シークレット",
|
||||
"all": "すべて",
|
||||
"notes": "ノート",
|
||||
"notesLengthLimit": "ノートは {count} 文字までです",
|
||||
"@notesLengthLimit": {
|
||||
"description": "Text to indicate the maximum number of characters allowed for notes",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"description": "The maximum number of characters allowed for notes",
|
||||
"type": "int",
|
||||
"example": "100"
|
||||
}
|
||||
}
|
||||
},
|
||||
"codeAccountHint": "アカウント (you@domain.com)",
|
||||
"codeTagHint": "タグ",
|
||||
"accountKeyType": "鍵の種類",
|
||||
@@ -34,6 +48,9 @@
|
||||
"nextTotpTitle": "次のコード",
|
||||
"deleteCodeTitle": "コードを削除しますか?",
|
||||
"deleteCodeMessage": "本当にこのコードを削除してもよろしいですか?この決定は元に戻せません。",
|
||||
"trashCode": "コードを削除しますか?",
|
||||
"trashCodeMessage": "{account} のコードをゴミ箱に入れてもよろしいですか?",
|
||||
"trash": "ゴミ箱",
|
||||
"viewLogsAction": "ログの表示",
|
||||
"sendLogsDescription": "問題のデバッグに役立つログが送信されます。機密情報が記録されないように予防措置を講じていますが、共有する前にこれらのログを確認することをお勧めします。",
|
||||
"preparingLogsTitle": "ログを準備中...",
|
||||
@@ -100,6 +117,7 @@
|
||||
"emailVerificationToggle": "メール認証",
|
||||
"emailVerificationEnableWarning": "アカウントから閉め出されるのを防ぐために、メール認証を有効にする前にメール 2FA のコピーが ente Auth 外に保管されていることを確認してください。",
|
||||
"authToChangeEmailVerificationSetting": "メール認証を変更するためには認証が必要です",
|
||||
"authenticateGeneric": "認証してください",
|
||||
"authToViewYourRecoveryKey": "回復キーを表示するためには認証が必要です",
|
||||
"authToChangeYourEmail": "メールアドレスを変更するためには認証が必要です",
|
||||
"authToChangeYourPassword": "パスワードを変更するためには認証が必要です",
|
||||
@@ -123,20 +141,12 @@
|
||||
"oops": "おっと",
|
||||
"suggestFeatures": "機能を提案",
|
||||
"faq": "FAQ",
|
||||
"faq_q_1": "Authはどのくらい安全ですか?",
|
||||
"faq_a_1": "Ente Authでバックアップされたコードはすべてエンドツーエンドで暗号化されて保存されます。つまり、コードにアクセスできるのはあなただけです。当社のアプリはオープンソースであり、暗号化技術は外部監査を受けています。",
|
||||
"faq_q_2": "パソコンから私のコードにアクセスできますか?",
|
||||
"faq_a_2": "auth.ente.io で Web からコードにアクセス可能です。",
|
||||
"faq_q_3": "コードを削除するにはどうすればいいですか?",
|
||||
"faq_a_3": "その項目を左にスワイプすることでコードを削除できます。",
|
||||
"faq_q_4": "このプロジェクトを支援するにはどうすればいいですか?",
|
||||
"faq_a_4": "ente.io で私たちの写真アプリを購読することでこのプロジェクトの開発を支援できます。",
|
||||
"faq_q_5": "AuthでFaceIDロックを有効にするにはどうすればいいですか?",
|
||||
"faq_a_5": "設定→セキュリティ→画面のロックから FaceID ロックを有効にできます。",
|
||||
"somethingWentWrongMessage": "問題が発生しました、再試行してください",
|
||||
"leaveFamily": "ファミリープランから退会",
|
||||
"leaveFamilyMessage": "本当にファミリープランを退会しますか?",
|
||||
"inFamilyPlanMessage": "ファミリープランに入会しています!",
|
||||
"hintForMobile": "コードを長押しすると、編集または削除できます。",
|
||||
"hintForDesktop": "コードを右クリックすると、編集または削除できます。",
|
||||
"scan": "読み取り",
|
||||
"scanACode": "コードを読み取り",
|
||||
"verify": "認証",
|
||||
@@ -192,6 +202,10 @@
|
||||
"scanAQrCode": "QRコードを読み取り",
|
||||
"enterDetailsManually": "手動で詳細を入力する",
|
||||
"edit": "編集",
|
||||
"share": "共有",
|
||||
"shareCodes": "コードを共有",
|
||||
"shareCodesDuration": "コードを共有したい期間を選択してください。",
|
||||
"restore": "復元",
|
||||
"copiedToClipboard": "クリップボードにコピーしました",
|
||||
"copiedNextToClipboard": "次のコードをクリップボードにコピーしました",
|
||||
"error": "エラー",
|
||||
@@ -345,6 +359,7 @@
|
||||
"sigInBackupReminder": "コードをエクスポートして、復元するためのバックアップがあることを確認してください。",
|
||||
"offlineModeWarning": "あなたはバックアップなしに続行することを選択しました。コードを安全に保つために手動でのバックアップを行ってください。",
|
||||
"showLargeIcons": "大きなアイコンを表示",
|
||||
"compactMode": "コンパクトモード",
|
||||
"shouldHideCode": "コードを隠す",
|
||||
"doubleTapToViewHiddenCode": "項目をダブルタップしてコードを閲覧できます",
|
||||
"focusOnSearchBar": "アプリの起動時、検索欄にフォーカスする",
|
||||
@@ -465,5 +480,9 @@
|
||||
"pinLock": "PIN",
|
||||
"enterPin": "PINを入力してください",
|
||||
"setNewPin": "新しいPINを設定",
|
||||
"importFailureDescNew": "選択されたファイルを解析できませんでした。"
|
||||
"importFailureDescNew": "選択されたファイルを解析できませんでした。",
|
||||
"appLockNotEnabled": "アプリロックが有効になっていません",
|
||||
"appLockNotEnabledDescription": "セキュリティ > アプリロック からアプリロックを有効化してください",
|
||||
"authToViewPasskey": "パスキーを見るには認証してください",
|
||||
"appLockOfflineModeWarning": "バックアップなしで進むことを選択しました。アプリロックを忘れると、データにアクセスできなくなります。"
|
||||
}
|
||||
1
auth/lib/l10n/arb/app_lt.arb
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -123,16 +123,6 @@
|
||||
"oops": "Oeps",
|
||||
"suggestFeatures": "Features voorstellen",
|
||||
"faq": "Veelgestelde vragen",
|
||||
"faq_q_1": "Hoe veilig is Ente Auth?",
|
||||
"faq_a_1": "Alle codes in Auth zijn versleuteld opgeslagen met end-to-end encryptie. Dit betekent dat alleen jij toegang hebt tot je codes. Onze apps zijn open source en onze cryptografie is extern gecontroleerd.",
|
||||
"faq_q_2": "Kan ik toegang krijgen tot mijn codes op desktop?",
|
||||
"faq_a_2": "U heeft toegang tot uw codes op het web @ auth.ente.io.",
|
||||
"faq_q_3": "Hoe kan ik codes verwijderen?",
|
||||
"faq_a_3": "Je kunt een code verwijderen door naar links te vegen op dat item.",
|
||||
"faq_q_4": "Hoe kan ik dit project steunen?",
|
||||
"faq_a_4": "U kunt de ontwikkeling van dit project steunen door u te abonneren op onze Photos app @ ente.io.",
|
||||
"faq_q_5": "Hoe kan ik FaceID lock inschakelen in ente Auth",
|
||||
"faq_a_5": "Je kunt FaceID vergrendelen onder Instellingen → Beveiliging → Lockscreen.",
|
||||
"somethingWentWrongMessage": "Er is iets fout gegaan, probeer het opnieuw",
|
||||
"leaveFamily": "Familie verlaten",
|
||||
"leaveFamilyMessage": "Weet je zeker dat je het familie-plan wil verlaten?",
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
"incorrectDetails": "Nieprawidłowe szczegóły",
|
||||
"pleaseVerifyDetails": "Prosimy zweryfikować szczegóły i spróbować ponownie",
|
||||
"codeIssuerHint": "Wydawca",
|
||||
"codeSecretKeyHint": "Tajny Klucz",
|
||||
"codeSecretKeyHint": "Tajny klucz",
|
||||
"secret": "Sekret",
|
||||
"all": "Wszystko",
|
||||
"notes": "Notatki",
|
||||
@@ -133,7 +133,7 @@
|
||||
"settings": "Ustawienia",
|
||||
"copied": "Skopiowano",
|
||||
"pleaseTryAgain": "Prosimy spróbować ponownie",
|
||||
"existingUser": "Istniejący Użytkownik",
|
||||
"existingUser": "Istniejący użytkownik",
|
||||
"newUser": "Nowy/a do Ente",
|
||||
"delete": "Usuń",
|
||||
"enterYourPasswordHint": "Wprowadź swoje hasło",
|
||||
@@ -141,16 +141,6 @@
|
||||
"oops": "Ups",
|
||||
"suggestFeatures": "Zaproponuj funkcje",
|
||||
"faq": "Najczęściej zadawane pytania (FAQ)",
|
||||
"faq_q_1": "Jak bezpieczny jest Auth?",
|
||||
"faq_a_1": "Wszystkie kody, których tworzysz kopię zapasową za pomocą Ente są przechowywane zaszyfrowane end-to-end. Oznacza to, że tylko Ty możesz uzyskać dostęp do swoich kodów. Nasze aplikacje są otwarto-źródłowe, a nasza kryptografia została poddana zewnętrznemu audytowi.",
|
||||
"faq_q_2": "Czy mogę uzyskać dostęp do moich kodów na komputerze?",
|
||||
"faq_a_2": "Możesz uzyskać dostęp do swoich kodów na stronie auth.ente.io.",
|
||||
"faq_q_3": "Jak mogę usunąć kody?",
|
||||
"faq_a_3": "Możesz usunąć kod, przesuwając go w lewo.",
|
||||
"faq_q_4": "Jak mogę wesprzeć ten projekt?",
|
||||
"faq_a_4": "Możesz wspierać rozwój tego projektu, subskrybując do naszej aplikacji Zdjęcia na ente.io.",
|
||||
"faq_q_5": "Jak mogę włączyć blokadę FaceID w Ente Auth",
|
||||
"faq_a_5": "Możesz włączyć blokadę FaceID w Ustawienia → Bezpieczeństwo→ Ekran blokady.",
|
||||
"somethingWentWrongMessage": "Coś poszło nie tak, prosimy spróbować ponownie",
|
||||
"leaveFamily": "Opuść rodzinę",
|
||||
"leaveFamilyMessage": "Czy jesteś pewien/pewna, że chcesz opuścić plan rodzinny?",
|
||||
@@ -244,7 +234,7 @@
|
||||
},
|
||||
"password": "Hasło",
|
||||
"signUpTerms": "Akceptuję <u-terms>warunki korzystania z usługi</u-terms> i <u-policy>politykę prywatności</u-policy>",
|
||||
"privacyPolicyTitle": "Polityka Prywatności",
|
||||
"privacyPolicyTitle": "Polityka prywatności",
|
||||
"termsOfServicesTitle": "Regulamin",
|
||||
"encryption": "Szyfrowanie",
|
||||
"setPasswordTitle": "Ustaw hasło",
|
||||
@@ -293,7 +283,7 @@
|
||||
"weAreOpenSource": "Posiadamy otwarte źródło!",
|
||||
"privacy": "Prywatność",
|
||||
"terms": "Warunki",
|
||||
"checkForUpdates": "Sprawdź czy są dostępne nowe aktualizacje",
|
||||
"checkForUpdates": "Sprawdź, czy są dostępne nowe aktualizacje",
|
||||
"checkStatus": "Sprawdź stan",
|
||||
"downloadUpdate": "Pobierz",
|
||||
"criticalUpdateAvailable": "Dostępna jest krytyczna aktualizacja",
|
||||
@@ -459,10 +449,10 @@
|
||||
"pinnedCodeMessage": "Przypięto {code}",
|
||||
"unpinnedCodeMessage": "Odpięto {code}",
|
||||
"tags": "Etykiety",
|
||||
"createNewTag": "Utwórz Nową Etykietę",
|
||||
"createNewTag": "Utwórz nową etykietę",
|
||||
"tag": "Etykieta",
|
||||
"create": "Utwórz",
|
||||
"editTag": "Edytuj Etykietę",
|
||||
"editTag": "Edytuj etykietę",
|
||||
"deleteTagTitle": "Usunąć etykietę?",
|
||||
"deleteTagMessage": "Czy na pewno chcesz usunąć tę etykietę? Ta akcja jest nieodwracalna.",
|
||||
"somethingWentWrongParsingCode": "Nie udało się przetworzyć {x} kodów.",
|
||||
@@ -470,7 +460,7 @@
|
||||
"viewRawCodes": "Zobacz surowe kody",
|
||||
"rawCodes": "Surowe kody",
|
||||
"rawCodeData": "Dane surowego kodu",
|
||||
"appLock": "Blokada dostępu do aplikacji",
|
||||
"appLock": "Blokada aplikacji",
|
||||
"noSystemLockFound": "Nie znaleziono blokady systemowej",
|
||||
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "Aby włączyć blokadę aplikacji, należy skonfigurować hasło urządzenia lub blokadę ekranu w ustawieniach systemu.",
|
||||
"autoLock": "Automatyczna blokada",
|
||||
@@ -492,5 +482,7 @@
|
||||
"setNewPin": "Ustaw nowy kod PIN",
|
||||
"importFailureDescNew": "Nie udało się przetworzyć wybranego pliku.",
|
||||
"appLockNotEnabled": "Blokada aplikacji nie jest włączona",
|
||||
"appLockNotEnabledDescription": "Prosimy włączyć blokadę aplikacji z Zabezpieczenia > Blokada Aplikacji"
|
||||
"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."
|
||||
}
|
||||
@@ -6,20 +6,20 @@
|
||||
"@counterAppBarTitle": {
|
||||
"description": "Text shown in the AppBar of the Counter Page"
|
||||
},
|
||||
"onBoardingBody": "Proteja os seus códigos 2FA",
|
||||
"onBoardingBody": "Copie com segurança seus códigos 2FA",
|
||||
"onBoardingGetStarted": "Introdução",
|
||||
"setupFirstAccount": "Configure sua primeira conta",
|
||||
"importScanQrCode": "Escanear QR code",
|
||||
"qrCode": "QR Code",
|
||||
"importEnterSetupKey": "Insira uma chave de configuração",
|
||||
"importAccountPageTitle": "Inserir dados da conta",
|
||||
"secretCanNotBeEmpty": "A chave secreta não pode ser vazia",
|
||||
"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",
|
||||
"incorrectDetails": "Detalhes incorretos",
|
||||
"pleaseVerifyDetails": "Por favor, verifique os detalhes e tente novamente",
|
||||
"pleaseVerifyDetails": "Verifique os detalhes e tente novamente",
|
||||
"codeIssuerHint": "Emissor",
|
||||
"codeSecretKeyHint": "Chave secreta",
|
||||
"secret": "Secreto",
|
||||
"secret": "Segredo",
|
||||
"all": "Todos",
|
||||
"notes": "Notas",
|
||||
"notesLengthLimit": "Notas tem um limite de até {count} caracteres",
|
||||
@@ -33,7 +33,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"codeAccountHint": "Conta (você@domínio.com)",
|
||||
"codeAccountHint": "Conta (voce@dominio.com)",
|
||||
"codeTagHint": "Etiqueta",
|
||||
"accountKeyType": "Tipo de chave",
|
||||
"sessionExpired": "Sessão expirada",
|
||||
@@ -43,19 +43,19 @@
|
||||
"pleaseLoginAgain": "Entre novamente",
|
||||
"loggingOut": "Saindo...",
|
||||
"timeBasedKeyType": "Baseado no horário (TOTP)",
|
||||
"counterBasedKeyType": "Baseado num contador (HOTP)",
|
||||
"counterBasedKeyType": "Baseado no contador (HOTP)",
|
||||
"saveAction": "Salvar",
|
||||
"nextTotpTitle": "avançar",
|
||||
"deleteCodeTitle": "Apagar código?",
|
||||
"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}?",
|
||||
"trash": "Excluir",
|
||||
"viewLogsAction": "Ver logs",
|
||||
"sendLogsDescription": "Isto compartilhará seus dados para nos 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.",
|
||||
"preparingLogsTitle": "Preparando logs...",
|
||||
"emailLogsTitle": "Logs (e-mail)",
|
||||
"emailLogsMessage": "Envie os logs para {email}",
|
||||
"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.",
|
||||
"preparingLogsTitle": "Preparando registros...",
|
||||
"emailLogsTitle": "Registros (e-mail)",
|
||||
"emailLogsMessage": "Envie os registros para {email}",
|
||||
"@emailLogsMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
@@ -64,9 +64,9 @@
|
||||
}
|
||||
},
|
||||
"copyEmailAction": "Copiar e-mail",
|
||||
"exportLogsAction": "Exportar logs",
|
||||
"exportLogsAction": "Exportar registros",
|
||||
"reportABug": "Informe um erro",
|
||||
"crashAndErrorReporting": "Relatórios de erros",
|
||||
"crashAndErrorReporting": "Relatórios de erros e falhas",
|
||||
"reportBug": "Informar erro",
|
||||
"emailUsMessage": "Envie um e-mail para {email}",
|
||||
"@emailUsMessage": {
|
||||
@@ -76,8 +76,8 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"contactSupport": "Falar com o Suporte",
|
||||
"rateUsOnStore": "Avalie-nos na {storeName}",
|
||||
"contactSupport": "Contatar suporte",
|
||||
"rateUsOnStore": "Avalie nós na {storeName}",
|
||||
"blog": "Blog",
|
||||
"merchandise": "Produtos",
|
||||
"verifyPassword": "Verificar senha",
|
||||
@@ -96,33 +96,33 @@
|
||||
"data": "Dados",
|
||||
"importCodes": "Importar códigos",
|
||||
"importTypePlainText": "Texto simples",
|
||||
"importTypeEnteEncrypted": "Exportação do Ente criptografada",
|
||||
"importTypeEnteEncrypted": "Exportação criptografada do Ente",
|
||||
"passwordForDecryptingExport": "Senha para descriptografar a exportação",
|
||||
"passwordEmptyError": "A senha não pode estar vazia",
|
||||
"importFromApp": "Importar códigos do {appName}",
|
||||
"importGoogleAuthGuide": "Exporte suas contas do Google Authenticator para um QR code usando a opção \"Transferir contas\". Então, usando outro dispositivo, escaneie o QR code.\n\nDica: você pode usar a câmera do notebook para fotografar o QR code.",
|
||||
"importGoogleAuthGuide": "Exporte suas contas do Google Authenticator para um QR code usando a opção \"Transferir Contas\". Então, usando outro dispositivo, escaneie o código.\n\nDica: Você pode usar a câmera do seu notebook para fotografar o QR code.",
|
||||
"importSelectJsonFile": "Selecionar arquivo JSON",
|
||||
"importSelectAppExport": "Selecione o arquivo de exportação do aplicativo {appName}",
|
||||
"importEnteEncGuide": "Selecione o arquivo JSON criptografado exportado do Ente",
|
||||
"importRaivoGuide": "Use a opção \"Exportar OTPs para arquivo Zip\" nas configurações do Raivo.\n\nExtraia o arquivo zip e importe o arquivo JSON.",
|
||||
"importBitwardenGuide": "Use a opção \"Exportar cofre\" nas configurações do Bitwarden e importe o arquivo JSON não criptografado.",
|
||||
"importAegisGuide": "Use a opção \"Exportar cofre\" nas Configurações do Aegis.\n\nSe o seu cofre estiver criptografado, você precisará inserir a senha do cofre para descriptografá-lo.",
|
||||
"import2FasGuide": "Use a opção \"Configurações->Exportar cópia de segurança\" no aplicativo 2FAS.\n\nSe a cópia de segurança estiver criptografada, será necessário inserir a senha para descriptografá-la",
|
||||
"importLastpassGuide": "Use a opção \"Transferir contas\" nas configurações do LastPass Authenticator e pressione \"Exportar contas para arquivo\". Importe o arquivo JSON baixado.",
|
||||
"importRaivoGuide": "Use a opção \"Exportar OTPs para arquivo zip\" nas opções de Raivo.\n\nExtraia o arquivo zip e importe o arquivo JSON.",
|
||||
"importBitwardenGuide": "Use a opção \"Exportar cofre\" nas ferramentas do Bitwarden e importe o arquivo JSON não criptografado.",
|
||||
"importAegisGuide": "Use a opção \"Exportar cofre\" nas opções de Aegis\n\nSe o cofre estiver criptografado, você precisará inserir a senha do cofre para descriptografá-lo.",
|
||||
"import2FasGuide": "Use a opção \"Opções-> Exportar cópia de segurança\" em 2FAS.\n\nSe a cópia de segurança estiver criptografada, você precisará inserir a senha para descriptografá-la",
|
||||
"importLastpassGuide": "Use a opção \"Transferir contas\" nas opções do LastPass Authenticator e pressione \"Exportar contas para arquivo\". Importe o arquivo JSON baixado.",
|
||||
"exportCodes": "Exportar códigos",
|
||||
"importLabel": "Importar",
|
||||
"importInstruction": "Por favor, selecione um arquivo que contenha uma lista de códigos no seguinte formato",
|
||||
"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",
|
||||
"selectFile": "Selecionar arquivo",
|
||||
"emailVerificationToggle": "Verificação por e-mail",
|
||||
"emailVerificationEnableWarning": "Para evitar ficar bloqueado do acesso a sua conta, certifique-se de armazenar uma cópia do código 2FA do seu e-mail fora do Ente Auth antes de habilitar a verificação por e-mail.",
|
||||
"authToChangeEmailVerificationSetting": "Por favor, autentique-se para alterar a verificação por e-mail",
|
||||
"authenticateGeneric": "Por favor, autentique",
|
||||
"authToViewYourRecoveryKey": "Por favor, autentique-se para visualizar sua chave de recuperação",
|
||||
"authToChangeYourEmail": "Por favor, autentique-se para alterar o seu e-mail",
|
||||
"authToChangeYourPassword": "Por favor, autentique-se para alterar sua senha",
|
||||
"authToViewSecrets": "Por favor, autentique-se para ver as suas chaves secretas",
|
||||
"authToInitiateSignIn": "Por favor, autentique-se para iniciar o login para um backup.",
|
||||
"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 altere o e-mail de verificação",
|
||||
"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",
|
||||
"cancel": "Cancelar",
|
||||
"yes": "Sim",
|
||||
@@ -141,16 +141,6 @@
|
||||
"oops": "Opa",
|
||||
"suggestFeatures": "Sugerir recursos",
|
||||
"faq": "Perguntas frequentes",
|
||||
"faq_q_1": "Quão seguro é o Auth?",
|
||||
"faq_a_1": "Todos os backups de códigos via Auth são armazenados com criptografia de ponta-a-ponta. Isso significa que só você pode acessar os códigos. Nossos apps são de código-aberto e nossa criptografia é auditada por terceiros.",
|
||||
"faq_q_2": "Posso acessar meus códigos no computador?",
|
||||
"faq_a_2": "Você pode acessar seus códigos na web em auth.ente.io.",
|
||||
"faq_q_3": "Como posso excluir códigos?",
|
||||
"faq_a_3": "Você pode excluir um código deslizando para a esquerda sobre esse item.",
|
||||
"faq_q_4": "Como posso apoiar este projeto?",
|
||||
"faq_a_4": "Você pode apoiar o desenvolvimento do projeto com a assinatura do nosso app Photos @ ente.io.",
|
||||
"faq_q_5": "Como ativar o bloqueio facial no Auth",
|
||||
"faq_a_5": "Você pode ativar o bloqueio facial em Configurações → Segurança → Tela de bloqueio.",
|
||||
"somethingWentWrongMessage": "Algo deu errado. Tente outra vez",
|
||||
"leaveFamily": "Sair da família",
|
||||
"leaveFamilyMessage": "Deseja mesmo sair do plano familiar?",
|
||||
@@ -169,7 +159,7 @@
|
||||
"recoverAccount": "Recuperar conta",
|
||||
"enterRecoveryKeyHint": "Digite a chave de recuperação",
|
||||
"recover": "Recuperar",
|
||||
"contactSupportViaEmailMessage": "Por favor, envie um e-mail para {email} a partir do seu endereço de e-mail registrado",
|
||||
"contactSupportViaEmailMessage": "Envie um e-mail para {email} a partir do seu endereço de e-mail registrado",
|
||||
"@contactSupportViaEmailMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
@@ -186,7 +176,7 @@
|
||||
"deleteAccountQuery": "Estamos tristes com sua decisão. Você encontrou algum problema?",
|
||||
"yesSendFeedbackAction": "Sim, enviar feedback",
|
||||
"noDeleteAccountAction": "Não, excluir conta",
|
||||
"initiateAccountDeleteTitle": "Por favor, autentique-se para iniciar a exclusão de conta",
|
||||
"initiateAccountDeleteTitle": "Autentique para iniciar a exclusão de conta",
|
||||
"sendEmail": "Enviar e-mail",
|
||||
"createNewAccount": "Criar nova conta",
|
||||
"weakStrength": "Fraca",
|
||||
@@ -200,10 +190,10 @@
|
||||
"social": "Redes sociais",
|
||||
"security": "Segurança",
|
||||
"lockscreen": "Tela de bloqueio",
|
||||
"authToChangeLockscreenSetting": "Por favor, autentique-se para alterar a configuração da tela de bloqueio",
|
||||
"authToChangeLockscreenSetting": "Autentique para alterar a opção de 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": "Por favor, autentique-se para ver as sessões ativas",
|
||||
"authToViewYourActiveSessions": "Autentique para ver suas sessões ativas",
|
||||
"searchHint": "Buscar...",
|
||||
"search": "Buscar",
|
||||
"sorryUnableToGenCode": "Desculpe, não foi possível gerar um código para {issuerName}",
|
||||
@@ -252,16 +242,16 @@
|
||||
"resetPasswordTitle": "Redefinir senha",
|
||||
"encryptionKeys": "Chaves de criptografia",
|
||||
"passwordWarning": "Não salvamos esta senha, então se você esquecê-la, <underline>não podemos descriptografar seus dados</underline>",
|
||||
"enterPasswordToEncrypt": "Digite uma senha que podemos usar para criptografar seus dados",
|
||||
"enterPasswordToEncrypt": "Insira uma senha que podemos usar para criptografar seus dados",
|
||||
"enterNewPasswordToEncrypt": "Insira uma nova senha para criptografar seus dados",
|
||||
"passwordChangedSuccessfully": "A senha foi alterada",
|
||||
"generatingEncryptionKeys": "Gerando chaves de criptografia...",
|
||||
"continueLabel": "Continuar",
|
||||
"insecureDevice": "Dispositivo inseguro",
|
||||
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Desculpe, não foi possível gerar chaves seguras neste dispositivo.\n\npor favor, faça o login com um dispositivo diferente.",
|
||||
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Desculpe, não foi possível gerar chaves de segurança nesse dispositivo.\n\ninicie sessão em um dispositivo diferente.",
|
||||
"howItWorks": "Como funciona",
|
||||
"ackPasswordLostWarning": "Eu entendo que se eu perder minha senha, posso perder meus dados, já que meus dados são <underline>criptografados de ponta a ponta</underline>.",
|
||||
"loginTerms": "Ao clicar em login, eu concordo com os <u-terms>termos de serviço</u-terms> e a <u-policy>política de privacidade</u-policy>",
|
||||
"loginTerms": "Ao clicar em iniciar sessão, eu concordo com os <u-terms>termos de serviço</u-terms> e a <u-policy>política de privacidade</u-policy>",
|
||||
"logInLabel": "Entrar",
|
||||
"logout": "Sair",
|
||||
"areYouSureYouWantToLogout": "Deseja mesmo sair?",
|
||||
@@ -269,15 +259,15 @@
|
||||
"exit": "Sair",
|
||||
"verifyingRecoveryKey": "Verificando chave de recuperação...",
|
||||
"recoveryKeyVerified": "Chave de recuperação verificada",
|
||||
"recoveryKeySuccessBody": "Ótimo! Sua chave de recuperação é válida. Obrigado por verificar.\n\nLembre-se de manter o backup seguro de sua chave de recuperação.",
|
||||
"invalidRecoveryKey": "A chave de recuperação que você digitou não é válida. Certifique-se de que contém 24 palavras e verifique a ortografia de cada uma.\n\nSe você inseriu um código de recuperação mais antigo, verifique se ele tem 64 caracteres e verifique cada um deles.",
|
||||
"recoveryKeySuccessBody": "Ótimo! Sua chave de recuperação é válida. Obrigada por verificar.\n\nLembre-se de manter sua chave de recuperação copiada com segurança.",
|
||||
"invalidRecoveryKey": "A chave de recuperação que você inseriu não é válida. Certifique-se de conter 24 caracteres, e verifique a ortografia de cada um deles.\n\nSe você inseriu um código de recuperação mais antigo, verifique se ele tem 64 caracteres e verifique cada um deles.",
|
||||
"recreatePasswordTitle": "Redefinir senha",
|
||||
"recreatePasswordBody": "Não é possível verificar a sua senha no dispositivo atual, mas podemos regenerá-la para que funcione em todos os dispositivos. \n\nEntre com a sua chave de recuperação e regenere sua senha (você pode usar a mesma se quiser).",
|
||||
"invalidKey": "Chave inválida",
|
||||
"tryAgain": "Tente novamente",
|
||||
"viewRecoveryKey": "Ver chave de recuperação",
|
||||
"confirmRecoveryKey": "Confirme a chave de recuperação",
|
||||
"recoveryKeyVerifyReason": "Sua chave de recuperação é a única maneira de recuperar suas fotos se você esquecer sua senha. Você pode encontrar sua chave de recuperação em Configurações > Conta.\n\nDigite sua chave de recuperação aqui para verificar se você a salvou corretamente.",
|
||||
"recoveryKeyVerifyReason": "Sua chave de recuperação é a única maneira de recuperar suas fotos se você esqueceu sua senha. Você pode encontrar sua chave de recuperação em Opções > Conta.\n\nInsira sua chave de recuperação aqui para verificar se você a salvou corretamente.",
|
||||
"confirmYourRecoveryKey": "Confirme sua chave de recuperação",
|
||||
"confirm": "Confirmar",
|
||||
"emailYourLogs": "Enviar logs por e-mail",
|
||||
@@ -285,10 +275,10 @@
|
||||
"copyEmailAddress": "Copiar endereço de e-mail",
|
||||
"exportLogs": "Exportar logs",
|
||||
"enterYourRecoveryKey": "Digite a chave de recuperação",
|
||||
"tempErrorContactSupportIfPersists": "Parece que algo deu errado. Por favor, tente novamente mais tarde. Se o erro persistir, entre em contato com nossa equipe de suporte.",
|
||||
"tempErrorContactSupportIfPersists": "Parece que algo deu errado. Tente novamente mais tarde. Se o erro persistir, entre em contato com nossa equipe de ajuda.",
|
||||
"networkHostLookUpErr": "Não foi possível conectar-se ao Ente, verifique suas configurações de rede e entre em contato com o suporte se o erro persistir.",
|
||||
"networkConnectionRefusedErr": "Não foi possível conectar ao Ente, tente novamente após algum tempo. Se o erro persistir, entre em contato com o suporte.",
|
||||
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Parece que algo deu errado. Por favor, tente novamente mais tarde. Se o erro persistir, entre em contato com nossa equipe de suporte.",
|
||||
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Parece que algo deu errado. Tente novamente mais tarde. Se o erro persistir, entre em contato com nossa equipe de ajuda.",
|
||||
"about": "Sobre",
|
||||
"weAreOpenSource": "Nosso código é aberto!",
|
||||
"privacy": "Privacidade",
|
||||
@@ -302,12 +292,12 @@
|
||||
"checking": "Verificando...",
|
||||
"youAreOnTheLatestVersion": "Você está na versão mais recente",
|
||||
"warning": "Atenção",
|
||||
"exportWarningDesc": "O arquivo exportado contém informações confidenciais. Por favor, armazene-o com segurança.",
|
||||
"exportWarningDesc": "O arquivo exportado contém informações confidenciais. Armazene-o com segurança.",
|
||||
"iUnderStand": "Entendo",
|
||||
"@iUnderStand": {
|
||||
"description": "Text for the button to confirm the user understands the warning"
|
||||
},
|
||||
"authToExportCodes": "Por favor, autentique-se para exportar seus códigos",
|
||||
"authToExportCodes": "Autentique para exportar seus códigos",
|
||||
"importSuccessTitle": "Oba!",
|
||||
"importSuccessDesc": "Você importou {count} códigos!",
|
||||
"@importSuccessDesc": {
|
||||
@@ -320,9 +310,9 @@
|
||||
}
|
||||
},
|
||||
"sorry": "Desculpe",
|
||||
"importFailureDesc": "Não foi possível analisar o arquivo selecionado.\nPor favor, escreva para support@ente.io se precisar de ajuda!",
|
||||
"importFailureDesc": "Não foi possível analisar o arquivo selecionado. Escreva para support@ente.io se precisar de ajuda!",
|
||||
"pendingSyncs": "Atenção",
|
||||
"pendingSyncsWarningBody": "Alguns de seus códigos não foram salvos.\n\nPor favor, certifique-se que você possui um backup para esses códigos antes de sair.",
|
||||
"pendingSyncsWarningBody": "Alguns de seus códigos não foram salvos.\n\nCertifique-se que você possui uma cópia desses códigos antes de sair.",
|
||||
"checkInboxAndSpamFolder": "Verifique sua caixa de entrada (e spam) para concluir a verificação",
|
||||
"tapToEnterCode": "Toque para inserir código",
|
||||
"resendEmail": "Reenviar e-mail",
|
||||
@@ -338,20 +328,20 @@
|
||||
}
|
||||
},
|
||||
"activeSessions": "Sessões ativas",
|
||||
"somethingWentWrongPleaseTryAgain": "Algo deu errado. Por favor, tente outra vez",
|
||||
"somethingWentWrongPleaseTryAgain": "Algo deu errado. Tente outra vez",
|
||||
"thisWillLogYouOutOfThisDevice": "Isso fará com que você saia deste dispositivo!",
|
||||
"thisWillLogYouOutOfTheFollowingDevice": "Isso fará com que você saia do seguinte dispositivo:",
|
||||
"thisWillLogYouOutOfTheFollowingDevice": "Isso fará você sair do dispositivo a seguir:",
|
||||
"terminateSession": "Sair?",
|
||||
"terminate": "Encerrar",
|
||||
"thisDevice": "Esse dispositivo",
|
||||
"toResetVerifyEmail": "Para redefinir a sua senha, por favor verifique o seu email primeiro.",
|
||||
"toResetVerifyEmail": "Para redefinir sua senha, verifique seu e-mail primeiramente.",
|
||||
"thisEmailIsAlreadyInUse": "Este e-mail já está em uso",
|
||||
"verificationFailedPleaseTryAgain": "Falha na verificação. Tente novamente",
|
||||
"yourVerificationCodeHasExpired": "Seu código de verificação expirou",
|
||||
"incorrectCode": "Código incorreto",
|
||||
"sorryTheCodeYouveEnteredIsIncorrect": "Desculpe, o código que você inseriu está incorreto",
|
||||
"sorryTheCodeYouveEnteredIsIncorrect": "O código inserido está incorreto",
|
||||
"emailChangedTo": "E-mail alterado para {newEmail}",
|
||||
"authenticationFailedPleaseTryAgain": "Falha na autenticação. Por favor, tente novamente",
|
||||
"authenticationFailedPleaseTryAgain": "A autenticação falhou. Tente novamente",
|
||||
"authenticationSuccessful": "Autenticado!",
|
||||
"twofactorAuthenticationSuccessfullyReset": "Autenticação de dois fatores redefinida com sucesso",
|
||||
"incorrectRecoveryKey": "Chave de recuperação incorreta",
|
||||
@@ -366,8 +356,8 @@
|
||||
"useOffline": "Usar sem backups",
|
||||
"signInToBackup": "Entre para fazer backup de seus códigos",
|
||||
"singIn": "Entrar",
|
||||
"sigInBackupReminder": "Por favor, exporte seus códigos para garantir que você tenha um backup do qual você possa restaurar.",
|
||||
"offlineModeWarning": "Você escolheu prosseguir sem backups. Por favor, faça backups manuais para ter certeza de que seus códigos estão seguros.",
|
||||
"sigInBackupReminder": "Exporte seus códigos para garantir que você tenha uma cópia para restaurar.",
|
||||
"offlineModeWarning": "Você decidiu prosseguir sem cópias. Faça cópias manuais para garantir que seus códigos estejam seguros.",
|
||||
"showLargeIcons": "Mostrar ícones grandes",
|
||||
"compactMode": "Modo compacto",
|
||||
"shouldHideCode": "Ocultar códigos",
|
||||
@@ -416,15 +406,15 @@
|
||||
"@goToSettings": {
|
||||
"description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters."
|
||||
},
|
||||
"androidGoToSettingsDescription": "A autenticação biométrica não está configurada no seu dispositivo. Vá em 'Configurações > Segurança' para adicionar autenticação biométrica.",
|
||||
"androidGoToSettingsDescription": "A autenticação biométrica não está configurada no seu dispositivo. Vá em 'Configurações > Segurança' para adicionar a autenticação biométrica.",
|
||||
"@androidGoToSettingsDescription": {
|
||||
"description": "Message advising the user to go to the settings and configure biometric on their device. It shows in a dialog on Android side."
|
||||
},
|
||||
"iOSLockOut": "A Autenticação Biométrica está desativada. Por favor, bloqueie e desbloqueie sua tela para ativá-la.",
|
||||
"iOSLockOut": "A autenticação biométrica está desativada. Bloqueie e desbloqueie sua tela para ativá-la.",
|
||||
"@iOSLockOut": {
|
||||
"description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side."
|
||||
},
|
||||
"iOSGoToSettingsDescription": "A autenticação biométrica não está configurada no seu dispositivo. Por favor, ative o Touch ID ou o Face ID no seu telefone.",
|
||||
"iOSGoToSettingsDescription": "A autenticação biométrica não está configurada no seu dispositivo. Ative o ID de toque ou ID de rosto em seu celular.",
|
||||
"@iOSGoToSettingsDescription": {
|
||||
"description": "Message advising the user to go to the settings and configure Biometrics for their device. It shows in a dialog on iOS side."
|
||||
},
|
||||
@@ -435,10 +425,10 @@
|
||||
"noInternetConnection": "Não conectado à internet",
|
||||
"pleaseCheckYourInternetConnectionAndTryAgain": "Verifique sua conexão com a internet e tente novamente.",
|
||||
"signOutFromOtherDevices": "Sair da conta em outros dispositivos",
|
||||
"signOutOtherBody": "Se você acha que alguém pode saber sua senha, você pode forçar todos os outros dispositivos que estão com sua conta a desconectar.",
|
||||
"signOutOtherBody": "Se você acha que alguém possa saber da sua senha, você pode forçar desconectar sua conta de outros dispositivos.",
|
||||
"signOutOtherDevices": "Sair em outros dispositivos",
|
||||
"doNotSignOut": "Não sair",
|
||||
"hearUsWhereTitle": "Como você ouviu sobre o Ente? (opcional)",
|
||||
"hearUsWhereTitle": "Como você descobriu o Ente? (opcional)",
|
||||
"hearUsExplanation": "Não sabemos como você encontrou nosso app. Seria útil se você nos contasse!",
|
||||
"recoveryKeySaved": "Chave de recuperação salva na pasta Downloads!",
|
||||
"waitingForBrowserRequest": "Aguardando solicitação do navegador...",
|
||||
@@ -446,12 +436,12 @@
|
||||
"passkey": "Chave de acesso",
|
||||
"passKeyPendingVerification": "A verificação ainda está pendente",
|
||||
"loginSessionExpired": "Sessão expirada",
|
||||
"loginSessionExpiredDetails": "Sua sessão expirou. Por favor, entre novamente.",
|
||||
"loginSessionExpiredDetails": "Sua sessão expirou. Registre-se novamente.",
|
||||
"developerSettingsWarning": "Deseja mesmo alterar os ajustes de Desenvolvedor?",
|
||||
"developerSettings": "Ajustes de Desenvolvedor",
|
||||
"serverEndpoint": "Endpoint do servidor",
|
||||
"invalidEndpoint": "Endpoint inválido",
|
||||
"invalidEndpointMessage": "Desculpe, o endpoint que você inseriu é inválido. Por favor, insira um endpoint válido e tente novamente.",
|
||||
"invalidEndpointMessage": "Desculpe, o ponto de acesso inserido é inválido. Insira um ponto de acesso válido e tente novamente.",
|
||||
"endpointUpdatedMessage": "O endpoint foi atualizado",
|
||||
"customEndpoint": "Conectado a {endpoint}",
|
||||
"pinText": "Fixar",
|
||||
@@ -492,5 +482,7 @@
|
||||
"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"
|
||||
"appLockNotEnabledDescription": "Ative o bloqueio de aplicativo em Segurança > Bloqueio de aplicativo",
|
||||
"authToViewPasskey": "Autentique 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."
|
||||
}
|
||||
@@ -101,13 +101,6 @@
|
||||
"oops": "Ups",
|
||||
"suggestFeatures": "Sugerează funcționalități",
|
||||
"faq": "Întrebări frecvente",
|
||||
"faq_q_1": "Cât de sigur este Auth?",
|
||||
"faq_q_2": "Pot accesa codurile de pe desktop?",
|
||||
"faq_q_3": "Cum pot șterge codurile?",
|
||||
"faq_q_4": "Cum pot susţine acest proiect?",
|
||||
"faq_a_4": "Poți susține dezvoltarea acestui proiect prin cumpărarea unui abonament la aplicația noastră de fotografii @ ente.io.",
|
||||
"faq_q_5": "Cum pot activa blocarea cu FaceID în Auth",
|
||||
"faq_a_5": "Poți activa blocarea FaceID din Setări → Securitate → Ecran de blocare.",
|
||||
"somethingWentWrongMessage": "Ceva n-a mers bine, te rog încearcă din nou",
|
||||
"leaveFamily": "Părăsește familia",
|
||||
"verifyEmail": "Verifică e-mail",
|
||||
|
||||
@@ -19,6 +19,20 @@
|
||||
"pleaseVerifyDetails": "Пожалуйста, проверьте детали и попробуйте еще раз",
|
||||
"codeIssuerHint": "Эмитент",
|
||||
"codeSecretKeyHint": "Секретный ключ",
|
||||
"secret": "Секрет",
|
||||
"all": "Все",
|
||||
"notes": "Заметки",
|
||||
"notesLengthLimit": "Заметки могут быть не более {count} символов",
|
||||
"@notesLengthLimit": {
|
||||
"description": "Text to indicate the maximum number of characters allowed for notes",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"description": "The maximum number of characters allowed for notes",
|
||||
"type": "int",
|
||||
"example": "100"
|
||||
}
|
||||
}
|
||||
},
|
||||
"codeAccountHint": "Аккаунт (you@domain.com)",
|
||||
"codeTagHint": "Метка",
|
||||
"accountKeyType": "Тип ключа",
|
||||
@@ -34,6 +48,9 @@
|
||||
"nextTotpTitle": "далее",
|
||||
"deleteCodeTitle": "Удалить код?",
|
||||
"deleteCodeMessage": "Вы уверены, что хотите удалить этот код? Это действие необратимо.",
|
||||
"trashCode": "Удалить код?",
|
||||
"trashCodeMessage": "Вы уверены, что хотите удалить код для {account}?",
|
||||
"trash": "Удалить",
|
||||
"viewLogsAction": "Посмотреть журнал",
|
||||
"sendLogsDescription": "Это отправит все журналы, чтобы помочь нам отладить вашу проблему. Хотя мы принимаем меры предосторожности, чтобы конфиденциальная информация не регистрировалась, мы рекомендуем вам просмотреть эти журналы, прежде чем делиться ими.",
|
||||
"preparingLogsTitle": "Подготовка журналов...",
|
||||
@@ -100,6 +117,7 @@
|
||||
"emailVerificationToggle": "Подтверждение электронной почты",
|
||||
"emailVerificationEnableWarning": "Если вы храните у нас двухфакторную аутентификацию в своей электронной почте, включение проверки электронной почты может привести к тупиковой ситуации. Если у вас заблокирован доступ к одной службе, возможно, вы не сможете войти в другую.",
|
||||
"authToChangeEmailVerificationSetting": "Авторизуйтесь, чтобы изменить подтверждение электронной почты",
|
||||
"authenticateGeneric": "Пожалуйста, авторизуйтесь",
|
||||
"authToViewYourRecoveryKey": "Пожалуйста, авторизуйтесь для просмотра вашего ключа восстановления",
|
||||
"authToChangeYourEmail": "Пожалуйста, авторизуйтесь, чтобы изменить адрес электронной почты",
|
||||
"authToChangeYourPassword": "Пожалуйста, авторизуйтесь, чтобы изменить пароль",
|
||||
@@ -123,20 +141,12 @@
|
||||
"oops": "Ой",
|
||||
"suggestFeatures": "Предложить идеи",
|
||||
"faq": "FAQ",
|
||||
"faq_q_1": "Насколько безопасен Auth?",
|
||||
"faq_a_1": "Все коды, которые вы резервируете с помощью Auth, хранятся в зашифрованном виде. Это означает, что только вы можете получить доступ к своим кодам. Наши приложения имеют открытый исходный код, а наша криптография прошла внешний аудит.",
|
||||
"faq_q_2": "Могу ли я получить доступ к моим кодам на компьютере?",
|
||||
"faq_a_2": "Вы можете получить доступ к своим кодам на сайте @ auth.ente.io.",
|
||||
"faq_q_3": "Как я могу удалить коды?",
|
||||
"faq_a_3": "Вы можете удалить код, проведя пальцем влево по этому элементу.",
|
||||
"faq_q_4": "Как я могу поддержать этот проект?",
|
||||
"faq_a_4": "Вы можете поддержать развитие этого проекта, подписавшись на наше приложение Photos @ ente.io.",
|
||||
"faq_q_5": "Как мне включить FaceID в Auth",
|
||||
"faq_a_5": "Вы можете включить блокировку FaceID в Настройки → Безопасность → Экран блокировки.",
|
||||
"somethingWentWrongMessage": "Что-то пошло не так. Попробуйте еще раз",
|
||||
"leaveFamily": "Покинуть семью",
|
||||
"leaveFamilyMessage": "Вы уверены, что хотите отказаться от семейного плана?",
|
||||
"inFamilyPlanMessage": "Вы на семейном плане!",
|
||||
"hintForMobile": "Длительное нажмите на код для редактирования или удаления.",
|
||||
"hintForDesktop": "Щелкните правой кнопкой мыши по коду, чтобы изменить или удалить.",
|
||||
"scan": "Сканировать",
|
||||
"scanACode": "Сканировать QR-код",
|
||||
"verify": "Подтвердить",
|
||||
@@ -181,6 +191,7 @@
|
||||
"security": "Безопасность",
|
||||
"lockscreen": "Экран блокировки",
|
||||
"authToChangeLockscreenSetting": "Пожалуйста, авторизуйтесь, чтобы изменить настройки экрана блокировки",
|
||||
"deviceLockEnablePreSteps": "Чтобы включить блокировку устройства, пожалуйста, настройте пароль или блокировку экрана в настройках системы.",
|
||||
"viewActiveSessions": "Просмотр активных сессий",
|
||||
"authToViewYourActiveSessions": "Пожалуйста, авторизуйтесь для просмотра активных сессий",
|
||||
"searchHint": "Поиск...",
|
||||
@@ -191,6 +202,10 @@
|
||||
"scanAQrCode": "Сканировать QR-код",
|
||||
"enterDetailsManually": "Ввести детали вручную",
|
||||
"edit": "Редактировать",
|
||||
"share": "Поделиться",
|
||||
"shareCodes": "Поделиться кодами",
|
||||
"shareCodesDuration": "Выберите продолжительность, на которую вы хотите поделиться кодами.",
|
||||
"restore": "Восстановить",
|
||||
"copiedToClipboard": "Скопировано",
|
||||
"copiedNextToClipboard": "Следующий код скопирован в буфер обмена",
|
||||
"error": "Ошибка",
|
||||
@@ -344,6 +359,7 @@
|
||||
"sigInBackupReminder": "Экспортируйте свои коды, чтобы убедиться, что у вас есть резервная копия, из которой можно восстановить.",
|
||||
"offlineModeWarning": "Вы решили продолжить без резервных копий. Пожалуйста, создайте резервные копии вручную, чтобы убедиться, что ваши коды в безопасности.",
|
||||
"showLargeIcons": "Использовать большие значки",
|
||||
"compactMode": "Компактный режим",
|
||||
"shouldHideCode": "Скрыть коды",
|
||||
"doubleTapToViewHiddenCode": "Вы можете нажать дважды на запись для просмотра кода",
|
||||
"focusOnSearchBar": "Фокусировать поиск при запуске приложения",
|
||||
@@ -464,5 +480,9 @@
|
||||
"pinLock": "Pin Замок",
|
||||
"enterPin": "Введите PIN",
|
||||
"setNewPin": "Установите новый PIN",
|
||||
"importFailureDescNew": "Не удалось обработать выбранный файл."
|
||||
"importFailureDescNew": "Не удалось обработать выбранный файл.",
|
||||
"appLockNotEnabled": "Блокировка приложения отключена",
|
||||
"appLockNotEnabledDescription": "Пожалуйста, включите блокировку приложения в безопасности > Блокировка приложений",
|
||||
"authToViewPasskey": "Пожалуйста, авторизуйтесь, чтобы просмотреть пароль",
|
||||
"appLockOfflineModeWarning": "Вы решили продолжить работу без резервного копирования. Если вы забудете свой пароль, доступ к вашим данным будет заблокирован."
|
||||
}
|
||||
@@ -123,16 +123,6 @@
|
||||
"oops": "Ups",
|
||||
"suggestFeatures": "Navrhnúť funkcionalitu",
|
||||
"faq": "Často kladené otázky",
|
||||
"faq_q_1": "Ako bezpečné je Auth?",
|
||||
"faq_a_1": "Všetky kódy, ktoré zálohujete cez Auth, sú ukladané zabezpečené end-to-end šifrovaním. To znamená, že k svojim kódom máte prístup iba vy. Naše aplikácie sú open source a na nami používanej kryptografii prebehol externý audit.",
|
||||
"faq_q_2": "Môžem pristupovať k svojim kódom cez počítač?",
|
||||
"faq_a_2": "K svojim kódom sa môžete dostať cez web auth.ente.io.",
|
||||
"faq_q_3": "Ako môžem odstrániť svoje kódy?",
|
||||
"faq_a_3": "Kód môžete odstrániť potiahnutím prsta doľava na danej položke.",
|
||||
"faq_q_4": "Ako môžem podporiť tento projekt?",
|
||||
"faq_a_4": "Vývoj tohto projektu môžete podporiť zakúpením predplatného našej aplikácie Photos na ente.io.",
|
||||
"faq_q_5": "Ako môžem nastaviť FaceID v Auth?",
|
||||
"faq_a_5": "Zámok FaceID môžete povoliť v sekcii Nastavenia → Zabezpečenie → Uzamknutie obrazovky.",
|
||||
"somethingWentWrongMessage": "Niečo sa pokazilo, skúste to prosím znova",
|
||||
"leaveFamily": "Opustiť rodinku",
|
||||
"leaveFamilyMessage": "Ste si istý, že chcete opustiť rodinku?",
|
||||
|
||||
488
auth/lib/l10n/arb/app_sl.arb
Normal file
@@ -0,0 +1,488 @@
|
||||
{
|
||||
"account": "Račun",
|
||||
"unlock": "Odkleni",
|
||||
"recoveryKey": "Ključ za obnovitev",
|
||||
"counterAppBarTitle": "Števec",
|
||||
"@counterAppBarTitle": {
|
||||
"description": "Text shown in the AppBar of the Counter Page"
|
||||
},
|
||||
"onBoardingBody": "Varno varnostno kopirajte vaše kode 2FA",
|
||||
"onBoardingGetStarted": "Začnite",
|
||||
"setupFirstAccount": "Ustvarite svoj prvi račun",
|
||||
"importScanQrCode": "Skenirajte QR kodo",
|
||||
"qrCode": "QR koda",
|
||||
"importEnterSetupKey": "Vnesite namestitveni ključ",
|
||||
"importAccountPageTitle": "Vnesite podatke o računu",
|
||||
"secretCanNotBeEmpty": "Skrivni ključ ne more biti prazen",
|
||||
"bothIssuerAndAccountCanNotBeEmpty": "Izdajatelj in račun ne moreta biti prazna",
|
||||
"incorrectDetails": "Nepravilni podatki",
|
||||
"pleaseVerifyDetails": "Prosimo preverite vaše podatke in poizkusite ponovno",
|
||||
"codeIssuerHint": "Izdajatelj",
|
||||
"codeSecretKeyHint": "Skrivni ključ",
|
||||
"secret": "Skrivni ključ",
|
||||
"all": "Vsi",
|
||||
"notes": "Opombe",
|
||||
"notesLengthLimit": "Opombe so lahko dolge največ {count} znakov",
|
||||
"@notesLengthLimit": {
|
||||
"description": "Text to indicate the maximum number of characters allowed for notes",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"description": "The maximum number of characters allowed for notes",
|
||||
"type": "int",
|
||||
"example": "100"
|
||||
}
|
||||
}
|
||||
},
|
||||
"codeAccountHint": "Račun (vi@domena.com)",
|
||||
"codeTagHint": "Oznaka",
|
||||
"accountKeyType": "Tip ključa",
|
||||
"sessionExpired": "Seja je potekla",
|
||||
"@sessionExpired": {
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
},
|
||||
"pleaseLoginAgain": "Prosimo, ponovno se prijavite",
|
||||
"loggingOut": "Odjavljanje...",
|
||||
"timeBasedKeyType": "Na osnovi časa (TOTP)",
|
||||
"counterBasedKeyType": "Na osnovi števca (HOTP)",
|
||||
"saveAction": "Shrani",
|
||||
"nextTotpTitle": "naslednja",
|
||||
"deleteCodeTitle": "Izbriši kodo?",
|
||||
"deleteCodeMessage": "Ali ste prepričani, da želite izbrisati to kodo? To dejanje je nepovratno.",
|
||||
"trashCode": "Premakni v smetnjak?",
|
||||
"trashCodeMessage": "Ste prepričani da želite premakniti kodo za {account} v smetnjak?",
|
||||
"trash": "V smetnjak",
|
||||
"viewLogsAction": "Poglej loge",
|
||||
"sendLogsDescription": "To nam bo poslalo vaše loge, da vam lahko pomagamo rešiti vašo težavo. Kljub temu, da se trudimo, da vaših zasebnih podatkov ne zapišemo v loge, vam priporočamo, da si jih pred deljenjem ogledate.",
|
||||
"preparingLogsTitle": "Pripravljamo loge...",
|
||||
"emailLogsTitle": "Pošlji loge po e-pošti",
|
||||
"emailLogsMessage": "Prosim pošljite loge na {email}",
|
||||
"@emailLogsMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"copyEmailAction": "Kopiraj e-pošto",
|
||||
"exportLogsAction": "Izvozi loge",
|
||||
"reportABug": "Prijavite napako",
|
||||
"crashAndErrorReporting": "Poročanje o nesrečah in napakah",
|
||||
"reportBug": "Prijavi napako",
|
||||
"emailUsMessage": "Prosim, pišite nam na {email}",
|
||||
"@emailUsMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"contactSupport": "Stik s podporo",
|
||||
"rateUsOnStore": "Ocenite nas na {storeName}",
|
||||
"blog": "Blog",
|
||||
"merchandise": "Trgovina",
|
||||
"verifyPassword": "Potrdite geslo",
|
||||
"pleaseWait": "Prosim počakajte...",
|
||||
"generatingEncryptionKeysTitle": "Generiramo ključe za šifriranje",
|
||||
"recreatePassword": "Ponovno ustvarite geslo",
|
||||
"recreatePasswordMessage": "Trenutna naprava, ni dovolj zmogljiva za preverjanje vašega gesla, zato ga moramo generirati na način, ki deluje z vsemi napravami.\n\nProsimo, prijavite se z vašim ključem za obnovo in ponovno ustvarite geslo (če želite lahko uporabite enako kot prej).",
|
||||
"useRecoveryKey": "Uporabi ključ za obnovo",
|
||||
"incorrectPasswordTitle": "Nepravilno geslo",
|
||||
"welcomeBack": "Dobrodošli nazaj!",
|
||||
"madeWithLoveAtPrefix": "ustvarjeno s ❤️pri ",
|
||||
"supportDevs": "Naročite se na <bold-green>ente</bold-green>, da nas podprete",
|
||||
"supportDiscount": "Uporabite kupon \"AUTH\" za 10% popusta za prvo leto",
|
||||
"changeEmail": "Sprememba e-poštnega naslova",
|
||||
"changePassword": "Sprememba gesla",
|
||||
"data": "Podatki",
|
||||
"importCodes": "Uvozi kode",
|
||||
"importTypePlainText": "Navadno besedilo",
|
||||
"importTypeEnteEncrypted": "Ente šifriran izvoz",
|
||||
"passwordForDecryptingExport": "Geslo za dešifriranje izvoza",
|
||||
"passwordEmptyError": "Geslo ne sme biti prazno",
|
||||
"importFromApp": "Uvozi kode iz {appName}",
|
||||
"importGoogleAuthGuide": "Svoje račune iz Google Authenticatorja izvozite v kodo QR z možnostjo \"Prenos računov\" (en.: \"Transfer Accounts\"). Nato z drugo napravo preberite kodo QR.\n\nNasvet: Za slikanje kode QR lahko uporabite spletno kamero prenosnega računalnika.",
|
||||
"importSelectJsonFile": "Izberi datoteko JSON",
|
||||
"importSelectAppExport": "Izberi {appName} izvozno datoteko",
|
||||
"importEnteEncGuide": "Izberi šifrirano JSON datoteko izvoženo iz Ente",
|
||||
"importRaivoGuide": "Uporabite možnost \"Izvozi OTP v arhiv Zip\" (\"Export OTPs to Zip archive\") v nastavitvah Raivo.\n\nRazširite datoteko zip in uvozite datoteko JSON.",
|
||||
"importBitwardenGuide": "V orodjih Bitwarden Tools uporabite možnost \"Izvozi trezor\" (\"Export vault\") in uvozite nešifrirano datoteko JSON.",
|
||||
"importAegisGuide": "Uporabite možnost \"Izvozi trezor\" (\"Export the vault\") v nastavitvah aplikacije Aegis.\n\nČe je vaš trezor šifriran, boste morali vnesti geslo za dešifriranje trezorja.",
|
||||
"import2FasGuide": "V programu 2FAS uporabite možnost \"Nastavitve ->Zaščitno kopiranje - Izvoz\" (\"Settings->Backup -Export\").\n\nČe je varnostna kopija šifrirana, boste morali vnesti geslo za dešifriranje varnostne kopije.",
|
||||
"importLastpassGuide": "Uporabite možnost \"Prenos računov\" (\"Transfer accounts\") v nastavitvah Lastpass Authenticatorja in pritisnite \"Izvozi račune v datoteko\" (\"Export accounts to file\"). Nato uvozite preneseno datoteko JSON.",
|
||||
"exportCodes": "Izvozi kode",
|
||||
"importLabel": "Uvoz",
|
||||
"importInstruction": "Izberite datoteko, ki vsebuje seznam vaših kod v naslednji obliki",
|
||||
"importCodeDelimiterInfo": "Kode so lahko ločene z vejico ali novo vrstico.",
|
||||
"selectFile": "Izberi datoteko",
|
||||
"emailVerificationToggle": "Verifikacija e-pošte",
|
||||
"emailVerificationEnableWarning": "Če se želite izogniti zaklepanju računa, pred omogočanjem preverjanja e-pošte shranite kopijo e-poštnega potrdila 2FA zunaj storitve Ente Auth.",
|
||||
"authToChangeEmailVerificationSetting": "Za spremembo potrjevanja vašega naslova e-pošte, se overite",
|
||||
"authenticateGeneric": "Prosimo. overite se",
|
||||
"authToViewYourRecoveryKey": "Če si želite ogledati svoje ključ za obnovo, se overite",
|
||||
"authToChangeYourEmail": "Za spremembo vašega naslova e-pošte, se overite",
|
||||
"authToChangeYourPassword": "Za spremembo gesla, se overite",
|
||||
"authToViewSecrets": "Če si želite ogledati svoje skrivne ključe, se overite",
|
||||
"authToInitiateSignIn": "Za začetek prijave za varnostno kopiranje, se overite",
|
||||
"ok": "V redu",
|
||||
"cancel": "Prekliči",
|
||||
"yes": "Da",
|
||||
"no": "Ne",
|
||||
"email": "E-pošta",
|
||||
"support": "Podpora",
|
||||
"general": "Splošno",
|
||||
"settings": "Nastavitve",
|
||||
"copied": "Kopirano",
|
||||
"pleaseTryAgain": "Prosimo, poskusite ponovno",
|
||||
"existingUser": "Obstoječ uporabnik",
|
||||
"newUser": "Nov pri Ente",
|
||||
"delete": "",
|
||||
"enterYourPasswordHint": "Vnesite svoje geslo",
|
||||
"forgotPassword": "Pozabljeno geslo",
|
||||
"oops": "Ups",
|
||||
"suggestFeatures": "Predlagaj funkcije",
|
||||
"faq": "Pogosta vprašanja",
|
||||
"somethingWentWrongMessage": "Nekaj je šlo narobe, prosimo poizkusite znova.",
|
||||
"leaveFamily": "Zapusti družino",
|
||||
"leaveFamilyMessage": "Ste prepričani, da želite zapustiti družinski paket?",
|
||||
"inFamilyPlanMessage": "Ste na družinskem paketu!",
|
||||
"hintForMobile": "Uredite ali izbrišite kodo z držanjem na njej.",
|
||||
"hintForDesktop": "Uredite ali izbrišite kodo z desnim klikom na njo.",
|
||||
"scan": "Skeniraj",
|
||||
"scanACode": "Skeniraj kodo",
|
||||
"verify": "Preveri",
|
||||
"verifyEmail": "Potrdite e-pošto",
|
||||
"enterCodeHint": "Vnesite 6 mestno kodo iz vaše aplikacije za preverjanje pristnosti",
|
||||
"lostDeviceTitle": "Izgubljena naprava?",
|
||||
"twoFactorAuthTitle": "Dvojno preverjanja pristnosti",
|
||||
"passkeyAuthTitle": "Potrditev ključa za dostop (passkey)",
|
||||
"verifyPasskey": "Potrdite ključ za dostop (passkey)",
|
||||
"recoverAccount": "Obnovi račun",
|
||||
"enterRecoveryKeyHint": "Vnesite vaš ključ za obnovitev",
|
||||
"recover": "Obnovi",
|
||||
"contactSupportViaEmailMessage": "Prosimo, pošljite e-pošto na {email} iz naslova s katerim ste registrirani",
|
||||
"@contactSupportViaEmailMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"invalidQRCode": "Neveljavna QR koda",
|
||||
"noRecoveryKeyTitle": "Nimate ključa za obnovo?",
|
||||
"enterEmailHint": "Vnesite svoj e-poštni naslov",
|
||||
"invalidEmailTitle": "Neveljaven e-poštni naslov",
|
||||
"invalidEmailMessage": "Prosimo vnesite veljaven e-poštni naslov.",
|
||||
"deleteAccount": "Izbriši račun",
|
||||
"deleteAccountQuery": "Žal nam je, da odhajate. Imate kakšne težave?",
|
||||
"yesSendFeedbackAction": "Ja, pošlji povratne informacije",
|
||||
"noDeleteAccountAction": "Ne, izbriši račun",
|
||||
"initiateAccountDeleteTitle": "Za izbris računa, se overite",
|
||||
"sendEmail": "Pošlji e-pošto",
|
||||
"createNewAccount": "Ustvari nov račun",
|
||||
"weakStrength": "Šibko",
|
||||
"strongStrength": "Močno",
|
||||
"moderateStrength": "Zmerno",
|
||||
"confirmPassword": "Potrdi geslo",
|
||||
"close": "Zapri",
|
||||
"oopsSomethingWentWrong": "Ups, nekaj je šlo narobe.",
|
||||
"selectLanguage": "Izberi jezik",
|
||||
"language": "Jezik",
|
||||
"social": "Družabno",
|
||||
"security": "Varnost",
|
||||
"lockscreen": "Zaklenjen zaslon",
|
||||
"authToChangeLockscreenSetting": "Za spremembo nastavitev zaklenjenega zaslona, se overite",
|
||||
"deviceLockEnablePreSteps": "Da omogočite zaklepanje naprave, prosimo nastavite kodo ali zaklepanje zaslona v sistemskih nastavitvah.",
|
||||
"viewActiveSessions": "Preglej aktivne seje",
|
||||
"authToViewYourActiveSessions": "Če si želite ogledati svoje aktivne seje, se overite",
|
||||
"searchHint": "Iskanje...",
|
||||
"search": "Iskanje",
|
||||
"sorryUnableToGenCode": "Oprostite, ni možno ustvariti kode za {issuerName}",
|
||||
"noResult": "Ni rezultatov",
|
||||
"addCode": "Dodaj kodo",
|
||||
"scanAQrCode": "Skeniraj QR kodo",
|
||||
"enterDetailsManually": "Vnesi podatke ročno",
|
||||
"edit": "Uredi",
|
||||
"share": "Deli",
|
||||
"shareCodes": "Deli kode",
|
||||
"shareCodesDuration": "Izberite trajanje, za katero želite deliti kode",
|
||||
"restore": "Povrni",
|
||||
"copiedToClipboard": "Kopirano v odložišče",
|
||||
"copiedNextToClipboard": "Naslednja koda kopirana v odložišče",
|
||||
"error": "Napaka",
|
||||
"recoveryKeyCopiedToClipboard": "Ključ za obnovo kopiran v odložišče",
|
||||
"recoveryKeyOnForgotPassword": "Če pozabite svoje geslo, je edini način da obnovite svoje podatke s tem ključem",
|
||||
"recoveryKeySaveDescription": "Tega ključa ne hranimo, prosimo shranite teh 24 besed na varnem",
|
||||
"doThisLater": "Stori to kasneje",
|
||||
"saveKey": "Shrani ključ",
|
||||
"save": "Shrani",
|
||||
"send": "Pošlji",
|
||||
"saveOrSendDescription": "Želite to shraniti v shrambo (privzeto: mapa Prenosi) ali poslati drugim aplikacijam?",
|
||||
"saveOnlyDescription": "Želite to shraniti v shrambo (privzeto: mapa Prenosi)?",
|
||||
"back": "Nazaj",
|
||||
"createAccount": "Ustvari račun",
|
||||
"passwordStrength": "Moč gesla: {passwordStrengthValue}",
|
||||
"@passwordStrength": {
|
||||
"description": "Text to indicate the password strength",
|
||||
"placeholders": {
|
||||
"passwordStrengthValue": {
|
||||
"description": "The strength of the password as a string",
|
||||
"type": "String",
|
||||
"example": "Weak or Moderate or Strong"
|
||||
}
|
||||
},
|
||||
"message": "Password Strength: {passwordStrengthText}"
|
||||
},
|
||||
"password": "Geslo",
|
||||
"signUpTerms": "Strinjam se s <u-terms>pogoji uporabe</u-terms> in <u-policy>politiko zasebnosti</u-policy>",
|
||||
"privacyPolicyTitle": "Politika zasebnosti",
|
||||
"termsOfServicesTitle": "Pogoji uporabe",
|
||||
"encryption": "Šifriranje",
|
||||
"setPasswordTitle": "Nastavite geslo",
|
||||
"changePasswordTitle": "Sprememba gesla",
|
||||
"resetPasswordTitle": "Ponastavitev gesla",
|
||||
"encryptionKeys": "Šifrirni ključi",
|
||||
"passwordWarning": "Tega gesla ne shranjujemo, zato v primeru, da ga pozabite, <underline>ne moremo dešifrirati vaših podatkov</underline>.",
|
||||
"enterPasswordToEncrypt": "Vnesite geslo, ki ga lahko uporabimo za šifriranje vaših podatkov",
|
||||
"enterNewPasswordToEncrypt": "Vnesite novo geslo, ki ga lahko uporabimo za šifriranje vaših podatkov",
|
||||
"passwordChangedSuccessfully": "Geslo je bilo uspešno spremenjeno",
|
||||
"generatingEncryptionKeys": "Ustvarjanje ključe za šifriranje",
|
||||
"continueLabel": "Nadaljuj",
|
||||
"insecureDevice": "Nezanesljiva naprava",
|
||||
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Žal v tej napravi nismo mogli ustvariti varnih ključev.\n\nProsimo, prijavite se iz druge naprave.",
|
||||
"howItWorks": "Kako deluje? ",
|
||||
"ackPasswordLostWarning": "Razumem, da lahko z izgubo gesla, izgubim svoje podatke, saj so <underline>end-to-end šifrirani</underline>",
|
||||
"loginTerms": "S klikom na prijava, se strinjam s <u-terms>pogoji uporabe</u-terms> in <u-policy>politiko zasebnosti</u-policy>",
|
||||
"logInLabel": "Prijava",
|
||||
"logout": "Odjava",
|
||||
"areYouSureYouWantToLogout": "Ali ste prepričani, da se želite odjaviti?",
|
||||
"yesLogout": "Ja, odjavi se",
|
||||
"exit": "Izhod",
|
||||
"verifyingRecoveryKey": "Preverjanje ključa za obnovitev",
|
||||
"recoveryKeyVerified": "Ključ za obnovitev preverjen",
|
||||
"recoveryKeySuccessBody": "Odlično! Vaš ključ za obnovitev je veljaven. Hvala za preverjanje.\n\nNe pozabite shraniti varnostno kopijo obnovitvenega ključa.",
|
||||
"invalidRecoveryKey": "Vneseni obnovitveni ključ ni veljaven. Prepričajte se, da vsebuje 24 besed, in preverite črkovanje vsake od njih.\n\nČe ste vnesli starejšo obnovitveno kodo, se prepričajte, da je dolga 64 znakov, in preverite vsakega od njih.",
|
||||
"recreatePasswordTitle": "Ponovno ustvarite geslo",
|
||||
"recreatePasswordBody": "Trenutna naprava, ni dovolj zmogljiva za preverjanje vašega gesla, a ga lahko generiramo na način, ki deluje z vsemi napravami.\n\nProsimo, prijavite se z vašim ključem za obnovo in ponovno ustvarite geslo (če želite lahko uporabite enako kot prej).",
|
||||
"invalidKey": "Neveljaven ključ",
|
||||
"tryAgain": "Poskusite ponovno",
|
||||
"viewRecoveryKey": "Poglej ključ za obnovitev",
|
||||
"confirmRecoveryKey": "Potrdi ključ za obnovitev",
|
||||
"recoveryKeyVerifyReason": "Ključ za obnovitev je edini način za obnovitev fotografij, če pozabite geslo. Ključ za obnovitev najdete v razdelku Nastavitve > Račun.\n\nTukaj vnesite svoj obnovitveni ključ, da preverite, ali ste ga pravilno shranili.",
|
||||
"confirmYourRecoveryKey": "Potrdite vaš ključ za obnovitev",
|
||||
"confirm": "Potrdi",
|
||||
"emailYourLogs": "Pošlji loge po e-pošti",
|
||||
"pleaseSendTheLogsTo": "Loge pošljite na naslov \n{toEmail}",
|
||||
"copyEmailAddress": "Kopiraj e-poštni naslov",
|
||||
"exportLogs": "Izvozi loge",
|
||||
"enterYourRecoveryKey": "Vnesite vaš ključ za obnovitev",
|
||||
"tempErrorContactSupportIfPersists": "Zdi se, da je šlo nekaj narobe. Po določenem času poskusite znova. Če se napaka nadaljuje, se obrnite na našo ekipo za podporo.",
|
||||
"networkHostLookUpErr": "Ne morete se povezati z Ente, preverite omrežne nastavitve in se obrnite na podporo, če se napaka nadaljuje.",
|
||||
"networkConnectionRefusedErr": "Ne morete se povezati z Ente, poskusite znova čez nekaj časa. Če se napaka nadaljuje, se obrnite na podporo.",
|
||||
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Zdi se, da je šlo nekaj narobe. Po določenem času poskusite znova. Če se napaka nadaljuje, se obrnite na našo ekipo za podporo.",
|
||||
"about": "O nas",
|
||||
"weAreOpenSource": "Smo odprto kodni!",
|
||||
"privacy": "Zasebnost",
|
||||
"terms": "Pogoji uporabe",
|
||||
"checkForUpdates": "Preveri za posodobitve",
|
||||
"checkStatus": "Preveri status",
|
||||
"downloadUpdate": "Prenesi",
|
||||
"criticalUpdateAvailable": "Nujna posodobitev je na voljo",
|
||||
"updateAvailable": "Posodobitev je na voljo",
|
||||
"update": "Posodobi",
|
||||
"checking": "Preverjanje...",
|
||||
"youAreOnTheLatestVersion": "Imate najnovejšo verzijo",
|
||||
"warning": "Opozorilo",
|
||||
"exportWarningDesc": "Izvožena datoteka vsebuje zasebne informacije. Prosimo, hranite jo na varnem.",
|
||||
"iUnderStand": "Razumem",
|
||||
"@iUnderStand": {
|
||||
"description": "Text for the button to confirm the user understands the warning"
|
||||
},
|
||||
"authToExportCodes": "Za izvoz kod, se overite",
|
||||
"importSuccessTitle": "Juhu!",
|
||||
"importSuccessDesc": "Uvozili ste {count} kod!",
|
||||
"@importSuccessDesc": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"description": "The number of codes imported",
|
||||
"type": "int",
|
||||
"example": "1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sorry": "Oprostite",
|
||||
"importFailureDesc": "Izbrane datoteke ni bilo možno prebrati. Če potrebujete pomoč, nam pišite na support@ente.io",
|
||||
"pendingSyncs": "Opozorilo",
|
||||
"pendingSyncsWarningBody": "Nekatere vaše kode niso varnostno kopirane.\n\nProsimo, prepričajte se, da so te kode varnostno kopirane preden se odjavite.",
|
||||
"checkInboxAndSpamFolder": "Prosimo, preverite svoj e-poštni predal (in nezaželeno pošto), da končate verifikacijo",
|
||||
"tapToEnterCode": "Pritisni za vnos kode",
|
||||
"resendEmail": "Ponovno pošlji e-pošto",
|
||||
"weHaveSendEmailTo": "Poslali smo e-pošto na <green>{email}</green>",
|
||||
"@weHaveSendEmailTo": {
|
||||
"description": "Text to indicate that we have sent a mail to the user",
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"description": "The email address of the user",
|
||||
"type": "String",
|
||||
"example": "example@ente.io"
|
||||
}
|
||||
}
|
||||
},
|
||||
"activeSessions": "Aktivne seje",
|
||||
"somethingWentWrongPleaseTryAgain": "Nekaj je šlo narobe, prosimo poizkusite znova.",
|
||||
"thisWillLogYouOutOfThisDevice": "To vas bo odjavilo iz te naprave!",
|
||||
"thisWillLogYouOutOfTheFollowingDevice": "To vas bo odjavilo iz naslednje naprave:",
|
||||
"terminateSession": "Končaj sejo",
|
||||
"terminate": "Končaj",
|
||||
"thisDevice": "Ta naprava",
|
||||
"toResetVerifyEmail": "Če želite ponastaviti geslo, najprej potrdite svoj e-poštni naslov.",
|
||||
"thisEmailIsAlreadyInUse": "Ta e-poštni naslove je že v uporabi.",
|
||||
"verificationFailedPleaseTryAgain": "Potrjevanje ni bilo uspešno, prosimo poskusite znova.",
|
||||
"yourVerificationCodeHasExpired": "Vaša koda za potrditev je potekla.",
|
||||
"incorrectCode": "Nepravilna koda",
|
||||
"sorryTheCodeYouveEnteredIsIncorrect": "Oprostite, koda ki ste jo vnesli ni pravilna",
|
||||
"emailChangedTo": "E-poštni naslove je bil spremenjen na {newEmail}",
|
||||
"authenticationFailedPleaseTryAgain": "Overitev ni uspela, prosimo poskusite znova",
|
||||
"authenticationSuccessful": "Overitev uspešna!",
|
||||
"twofactorAuthenticationSuccessfullyReset": "Uspešna ponastavitev dvostopenjske avtentikacije",
|
||||
"incorrectRecoveryKey": "Nepravilen ključ za obnovitev",
|
||||
"theRecoveryKeyYouEnteredIsIncorrect": "Ključ za obnovitev, ki ste ga vnesli ni pravilen",
|
||||
"enterPassword": "Vnesite geslo",
|
||||
"selectExportFormat": "Izberite obliko izvoza",
|
||||
"exportDialogDesc": "Šifrirani izvozi bodo varovani z geslom po vaši izbiri.",
|
||||
"encrypted": "Šifrirano",
|
||||
"plainText": "Navadno besedilo",
|
||||
"passwordToEncryptExport": "Geslo za šifriranje izvoza",
|
||||
"export": "Izvoz",
|
||||
"useOffline": "Uporabljal brez varnostnih kopij",
|
||||
"signInToBackup": "Prijavite se za varnostno kopiranje kod",
|
||||
"singIn": "Prijava",
|
||||
"sigInBackupReminder": "Izvozite svoje kode in si zagotovite varnostno kopijo, iz katere lahko obnovite.",
|
||||
"offlineModeWarning": "Odločili ste se, da boste nadaljevali brez varnostnih kopij. Prosimo, da naredite ročne varnostne kopije in se prepričajte, da so vaše kode varne.",
|
||||
"showLargeIcons": "Prikaži velike ikone",
|
||||
"compactMode": "Kompaktni način",
|
||||
"shouldHideCode": "Skrij kode",
|
||||
"doubleTapToViewHiddenCode": "Dvakrat kliknite vnos, da si ogledate kodo.",
|
||||
"focusOnSearchBar": "Osredotočite iskanje ob zagonu aplikacije",
|
||||
"confirmUpdatingkey": "Ali ste prepričani, da želite posodobiti skrivni ključ?",
|
||||
"minimizeAppOnCopy": "Ob kopiranju, minimiziraj aplikacijo",
|
||||
"editCodeAuthMessage": "Za urejanje kod, se overite",
|
||||
"deleteCodeAuthMessage": "Za brisanje kod, se overite",
|
||||
"showQRAuthMessage": "Da prikažete QR kodo, se overite",
|
||||
"confirmAccountDeleteTitle": "Potrdi brisanje računa",
|
||||
"confirmAccountDeleteMessage": "Ta račun je povezan z drugimi aplikacijami Ente, če jih uporabljate.\n\nVaši naloženi podatki v vseh aplikacijah Ente bodo načrtovane za izbris, vaš račun pa bo trajno izbrisan.",
|
||||
"androidBiometricHint": "Potrdite identiteto",
|
||||
"@androidBiometricHint": {
|
||||
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidBiometricNotRecognized": "Ni prepoznano. Poskusite znova.",
|
||||
"@androidBiometricNotRecognized": {
|
||||
"description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidBiometricSuccess": "Uspešno",
|
||||
"@androidBiometricSuccess": {
|
||||
"description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidCancelButton": "Prekliči",
|
||||
"@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": "Potrebna je overitev",
|
||||
"@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."
|
||||
},
|
||||
"androidBiometricRequiredTitle": "Zahtevani biometrični podatki",
|
||||
"@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": "Zahtevani podatki za vpis v napravo",
|
||||
"@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": "Zahtevani podatki za vpis v napravo",
|
||||
"@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": "Pojdi v nastavitve",
|
||||
"@goToSettings": {
|
||||
"description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters."
|
||||
},
|
||||
"androidGoToSettingsDescription": "Biometrično overjanje v vaši napravi ni nastavljeno. Pojdite v \"Nastavitve > Varnost\" in dodajte biometrično overjanje.",
|
||||
"@androidGoToSettingsDescription": {
|
||||
"description": "Message advising the user to go to the settings and configure biometric on their device. It shows in a dialog on Android side."
|
||||
},
|
||||
"iOSLockOut": "Biometrično overjanje je onemogočeno. Če ga želite omogočiti, zaklenite in odklenite zaslon.",
|
||||
"@iOSLockOut": {
|
||||
"description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side."
|
||||
},
|
||||
"iOSGoToSettingsDescription": "Biometrično overjanje v vaši napravi ni nastavljeno. V telefonu omogočite funkcijo Touch ID ali Face ID.",
|
||||
"@iOSGoToSettingsDescription": {
|
||||
"description": "Message advising the user to go to the settings and configure Biometrics for their device. It shows in a dialog on iOS side."
|
||||
},
|
||||
"iOSOkButton": "V redu",
|
||||
"@iOSOkButton": {
|
||||
"description": "Message showed on a button that the user can click to leave the current dialog. It is used on iOS side. Maximum 30 characters."
|
||||
},
|
||||
"noInternetConnection": "Ni internetne povezave",
|
||||
"pleaseCheckYourInternetConnectionAndTryAgain": "Preverite internetno povezavo in poskusite znova.",
|
||||
"signOutFromOtherDevices": "Odjavi se iz ostalih naprav",
|
||||
"signOutOtherBody": "Če menite, da bi lahko kdo poznal vaše geslo, lahko vse druge naprave, ki uporabljajo vaš račun, prisilite, da se odjavijo.",
|
||||
"signOutOtherDevices": "Odjavi ostale naprave",
|
||||
"doNotSignOut": "Ne odjavi se",
|
||||
"hearUsWhereTitle": "Kako ste slišali o Ente? (izbirno)",
|
||||
"hearUsExplanation": "Namestitvam aplikacij ne sledimo. Pomagalo bi, če bi nam povedali, kje ste nas našli!",
|
||||
"recoveryKeySaved": "Ključ za obnovitev je shranjen v mapi Prenosi!",
|
||||
"waitingForBrowserRequest": "Čakanje na zahtevo brskalnika...",
|
||||
"waitingForVerification": "Čakanje na potrditev...",
|
||||
"passkey": "Passkey",
|
||||
"passKeyPendingVerification": "Preverjanje še ni zaključeno",
|
||||
"loginSessionExpired": "Seja je potekla",
|
||||
"loginSessionExpiredDetails": "Vaša seja je potekla. Prosimo ponovno se prijavite.",
|
||||
"developerSettingsWarning": "Ste prepričani, da želite spremeniti nastavitve za razvijalce.",
|
||||
"developerSettings": "Nastavitve za razvijalce",
|
||||
"serverEndpoint": "Endpoint strežnika",
|
||||
"invalidEndpoint": "Nepravilen endpoint",
|
||||
"invalidEndpointMessage": "Oprostite endpoint, ki ste ga vnesli ni bil pravilen. Prosimo, vnesite pravilen endpoint in poskusite znova.",
|
||||
"endpointUpdatedMessage": "Endpoint posodobljen uspešno",
|
||||
"customEndpoint": "Povezano na {endpoint}",
|
||||
"pinText": "Pripni",
|
||||
"unpinText": "Odpni",
|
||||
"pinnedCodeMessage": "{code} je bila pripeta",
|
||||
"unpinnedCodeMessage": "{code} je bila odpeta",
|
||||
"tags": "Oznake",
|
||||
"createNewTag": "Ustvari novo oznako",
|
||||
"tag": "Oznaka",
|
||||
"create": "Ustvari",
|
||||
"editTag": "Uredi oznako",
|
||||
"deleteTagTitle": "Izbriši oznako?",
|
||||
"deleteTagMessage": "Ali ste prepričani, da želite izbrisati to oznako? To dejanje je nepovratno.",
|
||||
"somethingWentWrongParsingCode": "Nismo mogli prebrati {x} kod.",
|
||||
"updateNotAvailable": "Posodobitev ni na voljo",
|
||||
"viewRawCodes": "Poglej neobdelane kode",
|
||||
"rawCodes": "Neobdelane kode",
|
||||
"rawCodeData": "Podatki neobdelanih kod",
|
||||
"appLock": "Zaklep aplikacije",
|
||||
"noSystemLockFound": "Nobeno zaklepanje sistema ni bilo najdeno",
|
||||
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "Da omogočite zaklepanje aplikacije, prosimo nastavite kodo ali zaklepanje zaslona v sistemskih nastavitvah.",
|
||||
"autoLock": "Samodejno zaklepanje",
|
||||
"immediately": "Takoj",
|
||||
"reEnterPassword": "Ponovno vnesite geslo",
|
||||
"reEnterPin": "Ponovno vnesite PIN",
|
||||
"next": "Naprej",
|
||||
"tooManyIncorrectAttempts": "Preveč nepravilnih poskusov",
|
||||
"tapToUnlock": "Kliknite za odklepanje",
|
||||
"setNewPassword": "Nastavi novo geslo",
|
||||
"deviceLock": "Zaklepanje naprave",
|
||||
"hideContent": "Skrij vsebino",
|
||||
"hideContentDescriptionAndroid": "Skrije vsebino aplikacije v menjalniku opravil in onemogoči posnetke zaslona",
|
||||
"hideContentDescriptioniOS": "Skrije vsebino aplikacije v menjalniku opravil",
|
||||
"autoLockFeatureDescription": "Čas po katerem se aplikacije zaklene, ko jo enkrat zapustite.",
|
||||
"appLockDescription": "Izbirate lahko med privzetim zaklenjenim zaslonom naprave in zaklenjenim zaslonom po meri s kodo PIN ali geslom.",
|
||||
"pinLock": "Zaklepanje s PIN",
|
||||
"enterPin": "Vnesi PIN",
|
||||
"setNewPin": "Nastavi nov PIN",
|
||||
"importFailureDescNew": "Izbrane datoteke ni bilo mogoče prebrati",
|
||||
"appLockNotEnabled": "Zaklepanje aplikacije ni omogočeno",
|
||||
"appLockNotEnabledDescription": "Prosimo, omogočite zaklepanje aplikacije v Nastavitve > Zaklepanje Aplikacije (Security > App Lock)",
|
||||
"authToViewPasskey": "Da vidite passkey, se overite",
|
||||
"appLockOfflineModeWarning": "Odločili ste se, da boste nadaljevali brez varnostnih kopij. Če boste pozabili geslo za odklepanje aplikacije, bo dostop do vaših podatkov onemogočen."
|
||||
}
|
||||
@@ -16,6 +16,7 @@
|
||||
"codeIssuerHint": "Utfärdare",
|
||||
"codeSecretKeyHint": "Secret Key",
|
||||
"all": "Alla",
|
||||
"notes": "Anteckningar",
|
||||
"codeAccountHint": "Konto (du@domän.com)",
|
||||
"codeTagHint": "Tagg",
|
||||
"sessionExpired": "Sessionen har gått ut",
|
||||
@@ -77,6 +78,7 @@
|
||||
"cancel": "Avbryt",
|
||||
"yes": "Ja",
|
||||
"no": "Nej",
|
||||
"support": "Support",
|
||||
"settings": "Inställningar",
|
||||
"pleaseTryAgain": "Försök igen",
|
||||
"existingUser": "Befintlig användare",
|
||||
@@ -168,6 +170,7 @@
|
||||
"about": "Om",
|
||||
"terms": "Villkor",
|
||||
"warning": "Varning",
|
||||
"authToExportCodes": "Autentisera för att exportera dina koder",
|
||||
"importSuccessDesc": "Du har importerat {count} koder!",
|
||||
"@importSuccessDesc": {
|
||||
"placeholders": {
|
||||
@@ -183,9 +186,11 @@
|
||||
"incorrectCode": "Felaktig kod",
|
||||
"incorrectRecoveryKey": "Felaktig återställningsnyckel",
|
||||
"enterPassword": "Ange lösenord",
|
||||
"selectExportFormat": "Välj exportformat",
|
||||
"export": "Exportera",
|
||||
"signInToBackup": "Logga in för att säkerhetskopiera dina koder",
|
||||
"singIn": "Logga in",
|
||||
"showLargeIcons": "Visa stora ikoner",
|
||||
"shouldHideCode": "Dölj koder",
|
||||
"editCodeAuthMessage": "Autentisera för att redigera kod",
|
||||
"deleteCodeAuthMessage": "Autentisera för att radera kod",
|
||||
@@ -203,6 +208,7 @@
|
||||
"signOutOtherDevices": "Logga ut andra enheter",
|
||||
"passkey": "Nyckel",
|
||||
"loginSessionExpiredDetails": "Din session har upphört. Logga in igen.",
|
||||
"developerSettings": "Utvecklarinställningar",
|
||||
"tags": "Taggar",
|
||||
"createNewTag": "Skapa ny tagg",
|
||||
"tag": "Tagg",
|
||||
@@ -219,5 +225,6 @@
|
||||
"deviceLock": "Enhetslås",
|
||||
"hideContent": "Dölj innehåll",
|
||||
"enterPin": "Ange PIN-kod",
|
||||
"setNewPin": "Ställ in ny PIN-kod"
|
||||
"setNewPin": "Ställ in ny PIN-kod",
|
||||
"authToViewPasskey": "Autentisera för att visa nyckel"
|
||||
}
|
||||
@@ -120,14 +120,6 @@
|
||||
"oops": "ዉዉኡ",
|
||||
"suggestFeatures": "Suggest features",
|
||||
"faq": "FAQ",
|
||||
"faq_q_1": "Auth ክሳብ ክንደይ ውሑስ እዩ፧",
|
||||
"faq_q_2": "Can I access my codes on desktop?",
|
||||
"faq_a_2": "You can access your codes on the web @ auth.ente.io.",
|
||||
"faq_q_3": "How can I delete codes?",
|
||||
"faq_a_3": "You can delete a code by swiping left on that item.",
|
||||
"faq_q_4": "How can I support this project?",
|
||||
"faq_a_4": "You can support the development of this project by subscribing to our Photos app @ ente.io.",
|
||||
"faq_a_5": "You can enable FaceID lock under Settings → Security → Lockscreen.",
|
||||
"somethingWentWrongMessage": "Something went wrong, please try again",
|
||||
"leaveFamily": "Leave family",
|
||||
"leaveFamilyMessage": "Are you sure that you want to leave the family plan?",
|
||||
|
||||
@@ -141,16 +141,6 @@
|
||||
"oops": "Hay aksi",
|
||||
"suggestFeatures": "Özellik önerin",
|
||||
"faq": "SSS",
|
||||
"faq_q_1": "Kimlik doğrulayıcı ne kadar güvenli?",
|
||||
"faq_a_1": "Auth aracılığıyla yedeklediğiniz tüm kodlar uçtan uca şifrelenmiş olarak saklanır. Böylece kodlarınıza yalnızca siz erişebilirsiniz. Uygulamalarımız açık kaynaklıdır ve şifrelememiz dış denetimden geçmiştir.",
|
||||
"faq_q_2": "Kodlarıma masaüstünden erişebilir miyim?",
|
||||
"faq_a_2": "Kodlarınıza internet üzerinden @ auth.ente.io adresinden erişebilirsiniz.",
|
||||
"faq_q_3": "Kodları nasıl silebilirim?",
|
||||
"faq_a_3": "Bir kodu, o öğenin üzerinde sola kaydırarak silebilirsiniz.",
|
||||
"faq_q_4": "Bu projeye nasıl destek olabilirim?",
|
||||
"faq_a_4": "Fotoğraflar uygulamamıza @ ente.io abone olarak bu projenin geliştirilmesine destek olabilirsiniz.",
|
||||
"faq_q_5": "Auth'ta FaceID kilidini nasıl etkinleştirebilirim",
|
||||
"faq_a_5": "FaceID kilidini Ayarlar → Güvenlik → Kilit Ekranı altında etkinleştirebilirsiniz.",
|
||||
"somethingWentWrongMessage": "Bir şeyler ters gitti, lütfen tekrar deneyin",
|
||||
"leaveFamily": "Aile planından ayrıl",
|
||||
"leaveFamilyMessage": "Aile planından ayrılmak istediğinize emin misiniz?",
|
||||
|
||||
@@ -19,6 +19,20 @@
|
||||
"pleaseVerifyDetails": "Будь ласка, перевірте дані та повторіть спробу",
|
||||
"codeIssuerHint": "Емітент",
|
||||
"codeSecretKeyHint": "Секретний ключ",
|
||||
"secret": "Секретний ключ",
|
||||
"all": "Усі",
|
||||
"notes": "Нотатки",
|
||||
"notesLengthLimit": "Примітки можуть мати довжину не більше {count} символів",
|
||||
"@notesLengthLimit": {
|
||||
"description": "Text to indicate the maximum number of characters allowed for notes",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"description": "The maximum number of characters allowed for notes",
|
||||
"type": "int",
|
||||
"example": "100"
|
||||
}
|
||||
}
|
||||
},
|
||||
"codeAccountHint": "Обліковий запис (you@domain.com)",
|
||||
"codeTagHint": "Мітка",
|
||||
"accountKeyType": "Тип ключа",
|
||||
@@ -34,6 +48,9 @@
|
||||
"nextTotpTitle": "далі",
|
||||
"deleteCodeTitle": "Видалити код?",
|
||||
"deleteCodeMessage": "Ви впевнені, що хочете видалити цей код? Ця дія є незворотною.",
|
||||
"trashCode": "Смітник?",
|
||||
"trashCodeMessage": "Ви дійсно бажаєте смітити для {account}?",
|
||||
"trash": "Кошик",
|
||||
"viewLogsAction": "Переглянути журнали",
|
||||
"sendLogsDescription": "Це надішле журнали, щоб допомогти нам зневадити проблему. Хоча ми вживаємо запобіжні заходи для того, щоб ніяка чутлива інформація не була переслана, ми рекомендуємо вам переглянути ці журнали, перш ніж поділитися ними.",
|
||||
"preparingLogsTitle": "Підготовка журналів...",
|
||||
@@ -100,6 +117,7 @@
|
||||
"emailVerificationToggle": "Підтвердження адреси електронної пошти",
|
||||
"emailVerificationEnableWarning": "Щоб уникнути блокування доступу до свого облікового запису, обов’язково збережіть копію двофакторної аутентифікації до своєї електронної пошти за межами Ente Auth, перш ніж увімкнути перевірку електронної пошти.",
|
||||
"authToChangeEmailVerificationSetting": "Будь ласка, пройдіть аутентифікацію, щоб змінити перевірку адреси електронної пошти",
|
||||
"authenticateGeneric": "Будь ласка, авторизуйтеся",
|
||||
"authToViewYourRecoveryKey": "Будь ласка, пройдіть аутентифікацію, щоб переглянути ваш ключ відновлення",
|
||||
"authToChangeYourEmail": "Будь ласка, пройдіть аутентифікацію, щоб змінити адресу електронної пошти",
|
||||
"authToChangeYourPassword": "Будь ласка, пройдіть аутентифікацію, щоб змінити ваш пароль",
|
||||
@@ -123,20 +141,12 @@
|
||||
"oops": "От халепа",
|
||||
"suggestFeatures": "Запропонувати нові функції",
|
||||
"faq": "Часто Запитувані Питання",
|
||||
"faq_q_1": "Наскільки безпечним є Auth?",
|
||||
"faq_a_1": "Всі коди, які ви зберігаєте в Auth, кодуються наскрізним захистом. Це означає, що тільки ви можете отримати доступ до ваших кодів. Наші програми мають відкритий вихідний код, і наша криптографія була перевірена зовнішніми аудиторами.",
|
||||
"faq_q_2": "Чи я можу отримати доступ до своїх кодів на настільному комп'ютері?",
|
||||
"faq_a_2": "Ви можете отримати доступ до ваших кодів у веб на auth.ente.io.",
|
||||
"faq_q_3": "Як я можу видалити коди?",
|
||||
"faq_a_3": "Ви можете видалити код, провівши пальцем вліво на цьому елементі.",
|
||||
"faq_q_4": "Як я можу підтримати цей проект?",
|
||||
"faq_a_4": "Ви можете підтримати розробку цього проекту, підписавшись на наш додаток Photos на ente.io.",
|
||||
"faq_q_5": "Як я можу активувати розблокування за допомогою FaceID в Auth",
|
||||
"faq_a_5": "Ви можете активувати розблокування за допомогою FaceID у Налаштування → Безпека → Блокування екрану.",
|
||||
"somethingWentWrongMessage": "Щось пішло не так, спробуйте, будь ласка, знову",
|
||||
"leaveFamily": "Залишити сімейний план",
|
||||
"leaveFamilyMessage": "Ви впевнені, що хочете залишити сімейний план?",
|
||||
"inFamilyPlanMessage": "Ви знаходитесь на сімейному плані!",
|
||||
"hintForMobile": "Натисніть і утримуйте код для редагування чи видалення.",
|
||||
"hintForDesktop": "Клікніть правою кнопкою миші по коду для редагування чи видалення.",
|
||||
"scan": "Сканувати",
|
||||
"scanACode": "Сканувати код",
|
||||
"verify": "Перевірити",
|
||||
@@ -181,6 +191,7 @@
|
||||
"security": "Безпека",
|
||||
"lockscreen": "Екран блокування",
|
||||
"authToChangeLockscreenSetting": "Будь ласка, авторизуйтесь для зміни налаштувань екрану блокування",
|
||||
"deviceLockEnablePreSteps": "Для увімкнення блокування програми, будь ласка, налаштуйте пароль пристрою або блокування екрана в системних налаштуваннях.",
|
||||
"viewActiveSessions": "Показати активні сеанси",
|
||||
"authToViewYourActiveSessions": "Будь ласка, пройдіть аутентифікацію, щоб переглянути ваші активні сеанси",
|
||||
"searchHint": "Пошук...",
|
||||
@@ -191,6 +202,10 @@
|
||||
"scanAQrCode": "Сканувати QR-код",
|
||||
"enterDetailsManually": "Введіть дані вручну",
|
||||
"edit": "Редагувати",
|
||||
"share": "Поділитись",
|
||||
"shareCodes": "Поділитися кодами",
|
||||
"shareCodesDuration": "Виберіть тривалість, протягом якої ви хочете поділитися кодом.",
|
||||
"restore": "Відновити",
|
||||
"copiedToClipboard": "Скопійовано до буфера обміну",
|
||||
"copiedNextToClipboard": "Наступний код скопійовано до буфера обміну",
|
||||
"error": "Помилка",
|
||||
@@ -201,7 +216,7 @@
|
||||
"saveKey": "Зберегти ключ",
|
||||
"save": "Зберегти",
|
||||
"send": "Надіслати",
|
||||
"saveOrSendDescription": "Чи хочете Ви зберегти це до свого сховища (тека Downloads за замовчуванням), чи надіслати його в інші додатки?",
|
||||
"saveOrSendDescription": "Чи хочете ви зберегти це до свого сховища (типово тека Downloads), чи надіслати його в інші застосунки?",
|
||||
"saveOnlyDescription": "Чи хочете Ви зберегти це до свого сховища (тека Downloads за замовчуванням)?",
|
||||
"back": "Назад",
|
||||
"createAccount": "Створити обліковий запис",
|
||||
@@ -264,8 +279,8 @@
|
||||
"networkHostLookUpErr": "Не вдалося приєднатися до Ente. Будь ласка, перевірте налаштування мережі. Зверніться до нашої команди підтримки, якщо помилка залишиться.",
|
||||
"networkConnectionRefusedErr": "Не вдалося приєднатися до Ente. Будь ласка, спробуйте ще раз через деякий час. Якщо помилка не зникне, зв'яжіться з нашою командою підтримки.",
|
||||
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Схоже, що щось пішло не так. Будь ласка, спробуйте ще раз через деякий час. Якщо помилка не зникне, зв'яжіться з нашою командою підтримки.",
|
||||
"about": "Про додаток",
|
||||
"weAreOpenSource": "Наш додаток має відкритий код!",
|
||||
"about": "Про застосунок",
|
||||
"weAreOpenSource": "Наш застосунок має відкритий код!",
|
||||
"privacy": "Конфіденційність",
|
||||
"terms": "Умови",
|
||||
"checkForUpdates": "Перевiрити наявнiсть оновлень",
|
||||
@@ -344,6 +359,7 @@
|
||||
"sigInBackupReminder": "Будь ласка, експортуйте свої коди, щоб зберегти резервну копію, з якої ви зможете їх відновити.",
|
||||
"offlineModeWarning": "Ви збираєтеся продовжити без резервних копій. Будь ласка, зробіть ручну резервну копію, щоб переконатися, що ваші коди в безпеці.",
|
||||
"showLargeIcons": "Показувати великі іконки",
|
||||
"compactMode": "Стислий режим",
|
||||
"shouldHideCode": "Приховати коди",
|
||||
"doubleTapToViewHiddenCode": "Ви можете двічі натиснути на запис для перегляду коду",
|
||||
"focusOnSearchBar": "Сфокусуватися на пошуку після запуску програми",
|
||||
@@ -413,7 +429,7 @@
|
||||
"signOutOtherDevices": "Вийти на інших пристроях",
|
||||
"doNotSignOut": "Не виходити",
|
||||
"hearUsWhereTitle": "Як ви дізналися про Ente? (опціонально)",
|
||||
"hearUsExplanation": "Ми не відстежуємо встановлення додатків. Але, якщо ви скажете нам, де ви нас знайшли, це допоможе!",
|
||||
"hearUsExplanation": "Ми не відстежуємо встановлення застосунків. Але, якщо ви скажете нам, де ви нас знайшли, це допоможе!",
|
||||
"recoveryKeySaved": "Ключ відновлення збережений у теці Downloads!",
|
||||
"waitingForBrowserRequest": "Очікування запиту браузера...",
|
||||
"waitingForVerification": "Очікується підтвердження...",
|
||||
@@ -456,13 +472,17 @@
|
||||
"tapToUnlock": "Доторкніться, щоб розблокувати",
|
||||
"setNewPassword": "Встановити новий пароль",
|
||||
"deviceLock": "Блокування пристрою",
|
||||
"hideContent": "Приховати зміст",
|
||||
"hideContentDescriptionAndroid": "Приховує зміст програми в перемикачі програм і вимикає скриншоти",
|
||||
"hideContentDescriptioniOS": "Приховує зміст в перемикачі додатків",
|
||||
"autoLockFeatureDescription": "Час, через який додаток буде заблоковано після розміщення у фоновому режимі",
|
||||
"hideContent": "Приховати вміст",
|
||||
"hideContentDescriptionAndroid": "Приховує вміст програми у перемикачі застосунків і вимикає знімки екрану",
|
||||
"hideContentDescriptioniOS": "Приховує вміст у перемикачі застосунків",
|
||||
"autoLockFeatureDescription": "Час, через який застосунок буде заблоковано після розміщення у фоновому режимі",
|
||||
"appLockDescription": "Виберіть між типовим екраном блокування вашого пристрою та власним екраном блокування з PIN-кодом або паролем.",
|
||||
"pinLock": "PIN-код",
|
||||
"enterPin": "Введіть PIN-код",
|
||||
"setNewPin": "Встановити новий PIN-код",
|
||||
"importFailureDescNew": "Не вдалося обробити вибраний файл."
|
||||
"importFailureDescNew": "Не вдалося обробити вибраний файл.",
|
||||
"appLockNotEnabled": "Блокування програм не увімкнено",
|
||||
"appLockNotEnabledDescription": "Увімкніть блокування програм від безпеки > Блокування програм",
|
||||
"authToViewPasskey": "Будь ласка, авторизуйтеся для перегляду ключа доступу",
|
||||
"appLockOfflineModeWarning": "Ви обрали продовжити без резервних копій. Якщо ви забудете свій пароль, доступ до ваших даних буде заблоковано."
|
||||
}
|
||||
@@ -122,16 +122,6 @@
|
||||
"oops": "Rất tiếc",
|
||||
"suggestFeatures": "Tính năng đề nghị",
|
||||
"faq": "Câu hỏi thường gặp",
|
||||
"faq_q_1": "Mức độ an toàn của ente như thế nào?",
|
||||
"faq_a_1": "Tất cả các mã bạn sao lưu qua ente đều được lưu trữ dưới dạng mã hóa đầu cuối. Điều này có nghĩa là chỉ bạn mới có thể truy cập mã của mình. Ứng dụng của chúng tôi là mã nguồn mở và data của chúng tôi đã được bảo mật hoàn toàn.",
|
||||
"faq_q_2": "Tôi có thể truy cập mã của mình trên máy tính không?",
|
||||
"faq_a_2": "Bạn có thể truy cập mã của mình trên web @ auth.ente.io.",
|
||||
"faq_q_3": "Làm cách nào để xóa mã?",
|
||||
"faq_a_3": "Bạn có thể xóa mã bằng cách vuốt sang trái vào mục đó.",
|
||||
"faq_q_4": "Tôi có thể hỗ trợ dự án này như thế nào?",
|
||||
"faq_a_4": "Bạn có thể hỗ trợ sự phát triển của dự án này bằng cách đăng ký ứng dụng Ảnh @ ente.io của chúng tôi.",
|
||||
"faq_q_5": "Làm sao để tôi bật FaceID trong ente",
|
||||
"faq_a_5": "Bạn có thể bật khóa FaceID trong Cài đặt → Bảo mật → Màn hình khóa.",
|
||||
"somethingWentWrongMessage": "Đã xảy ra lỗi, xin thử lại",
|
||||
"leaveFamily": "Rời khỏi gia đình",
|
||||
"leaveFamilyMessage": "Bạn có chắc chắn muốn thoát khỏi gói dành cho gia đình không?",
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"@counterAppBarTitle": {
|
||||
"description": "Text shown in the AppBar of the Counter Page"
|
||||
},
|
||||
"onBoardingBody": "妥善保管您的 2FA代码",
|
||||
"onBoardingBody": "妥善保管您的两步验证码",
|
||||
"onBoardingGetStarted": "开始",
|
||||
"setupFirstAccount": "设置您的第一个账户",
|
||||
"importScanQrCode": "扫描二维码",
|
||||
@@ -18,8 +18,8 @@
|
||||
"incorrectDetails": "详细信息不正确",
|
||||
"pleaseVerifyDetails": "请验证详细信息并重试",
|
||||
"codeIssuerHint": "发行人",
|
||||
"codeSecretKeyHint": "私钥",
|
||||
"secret": "秘密",
|
||||
"codeSecretKeyHint": "密钥",
|
||||
"secret": "密钥",
|
||||
"all": "全部",
|
||||
"notes": "备注",
|
||||
"notesLengthLimit": "备注最多可以包含 {count} 个字符",
|
||||
@@ -88,8 +88,8 @@
|
||||
"useRecoveryKey": "使用恢复密钥",
|
||||
"incorrectPasswordTitle": "密码错误",
|
||||
"welcomeBack": "欢迎回来!",
|
||||
"madeWithLoveAtPrefix": "用❤️制成 ",
|
||||
"supportDevs": "订阅 <bold-green>ente</bold-green> 以支持此项目。",
|
||||
"madeWithLoveAtPrefix": "用❤️制作 ",
|
||||
"supportDevs": "订阅 <bold-green>ente</bold-green> 以支持我们",
|
||||
"supportDiscount": "使用优惠码“AUTH”可享受首年 10% 折扣",
|
||||
"changeEmail": "修改邮箱",
|
||||
"changePassword": "修改密码",
|
||||
@@ -112,10 +112,10 @@
|
||||
"exportCodes": "导出代码",
|
||||
"importLabel": "导入",
|
||||
"importInstruction": "请选择一个包含以下格式的代码列表的文件",
|
||||
"importCodeDelimiterInfo": "代码可以用逗号或新行分隔。",
|
||||
"importCodeDelimiterInfo": "代码可以用逗号或换行符分隔",
|
||||
"selectFile": "选择文件",
|
||||
"emailVerificationToggle": "电子邮件验证",
|
||||
"emailVerificationEnableWarning": "为避免被锁在您的账户之外,请在启用电子邮件验证之前确保在 Ente Auth 之外存储电子邮件双重验证的副本。",
|
||||
"emailVerificationEnableWarning": "为避免被锁在您的账户之外,请在启用电子邮件验证之前确保在 Ente Auth 之外存储电子邮件两步验证的副本。",
|
||||
"authToChangeEmailVerificationSetting": "请进行身份验证以更改电子邮件验证",
|
||||
"authenticateGeneric": "请验证",
|
||||
"authToViewYourRecoveryKey": "请验证以查看您的恢复密钥",
|
||||
@@ -141,16 +141,6 @@
|
||||
"oops": "哎呀",
|
||||
"suggestFeatures": "建议新功能",
|
||||
"faq": "常见问题",
|
||||
"faq_q_1": "Auth 的安全性如何?",
|
||||
"faq_a_1": "您通过 Auth 备份的所有代码均以端到端加密方式存储。这意味着只有您可以访问您的代码。我们的应用程序是开源的并且我们的加密技术已经过外部审计。",
|
||||
"faq_q_2": "我可以在桌面设备上访问我的代码吗?",
|
||||
"faq_a_2": "您可以在网页 auth.ente.io 上访问您的代码。",
|
||||
"faq_q_3": "我如何删除代码?",
|
||||
"faq_a_3": "您可以通过向左滑动该项目来删除该代码。",
|
||||
"faq_q_4": "我该如何支持该项目?",
|
||||
"faq_a_4": "您可以通过订阅我们的照片应用程序@ente.io来支持该项目的开发。",
|
||||
"faq_q_5": "我如何启用 Auth 中的面容 ID 锁",
|
||||
"faq_a_5": "您可以在“设置”→“安全”→“锁屏”下启用 FaceID 锁定。",
|
||||
"somethingWentWrongMessage": "出了点问题,请重试",
|
||||
"leaveFamily": "离开家庭",
|
||||
"leaveFamilyMessage": "您确定要离开家庭计划吗?",
|
||||
@@ -163,8 +153,8 @@
|
||||
"verifyEmail": "验证电子邮件",
|
||||
"enterCodeHint": "从你的身份验证器应用中\n输入6位数字代码",
|
||||
"lostDeviceTitle": "丢失了设备吗?",
|
||||
"twoFactorAuthTitle": "双重认证",
|
||||
"passkeyAuthTitle": "通行密钥认证",
|
||||
"twoFactorAuthTitle": "两步验证",
|
||||
"passkeyAuthTitle": "通行密钥验证",
|
||||
"verifyPasskey": "验证通行密钥",
|
||||
"recoverAccount": "恢复账户",
|
||||
"enterRecoveryKeyHint": "输入您的恢复密钥",
|
||||
@@ -185,7 +175,7 @@
|
||||
"deleteAccount": "删除账户",
|
||||
"deleteAccountQuery": "我们很抱歉看到您离开。您面临一些问题?",
|
||||
"yesSendFeedbackAction": "是,发送反馈",
|
||||
"noDeleteAccountAction": "不,删除账户",
|
||||
"noDeleteAccountAction": "否,删除账户",
|
||||
"initiateAccountDeleteTitle": "请进行身份验证以启动账户删除",
|
||||
"sendEmail": "发送电子邮件",
|
||||
"createNewAccount": "创建新账号",
|
||||
@@ -194,10 +184,10 @@
|
||||
"moderateStrength": "中等",
|
||||
"confirmPassword": "请确认密码",
|
||||
"close": "关闭",
|
||||
"oopsSomethingWentWrong": "哎呀,似乎出了点问题.",
|
||||
"oopsSomethingWentWrong": "哎呀,出了点问题。",
|
||||
"selectLanguage": "选择语言",
|
||||
"language": "语言",
|
||||
"social": "社交",
|
||||
"social": "社交媒体",
|
||||
"security": "安全",
|
||||
"lockscreen": "锁屏",
|
||||
"authToChangeLockscreenSetting": "请验证以更改锁屏设置",
|
||||
@@ -207,7 +197,7 @@
|
||||
"searchHint": "搜索...",
|
||||
"search": "搜索",
|
||||
"sorryUnableToGenCode": "对不起,无法为 {issuerName} 生成代码",
|
||||
"noResult": "没有结果",
|
||||
"noResult": "无结果",
|
||||
"addCode": "添加代码",
|
||||
"scanAQrCode": "扫描二维码",
|
||||
"enterDetailsManually": "手动输入详细信息",
|
||||
@@ -245,7 +235,7 @@
|
||||
"password": "密码",
|
||||
"signUpTerms": "我同意 <u-terms>服务条款</u-terms> 和 <u-policy>隐私政策</u-policy>",
|
||||
"privacyPolicyTitle": "隐私政策",
|
||||
"termsOfServicesTitle": "使用条款",
|
||||
"termsOfServicesTitle": "服务条款",
|
||||
"encryption": "加密",
|
||||
"setPasswordTitle": "设置密码",
|
||||
"changePasswordTitle": "修改密码",
|
||||
@@ -290,9 +280,9 @@
|
||||
"networkConnectionRefusedErr": "无法连接到 Ente,请稍后重试。如果错误仍然存在,请联系支持人员。",
|
||||
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "看起来出了点问题。 请稍后重试。 如果错误仍然存在,请联系我们的支持团队。",
|
||||
"about": "关于",
|
||||
"weAreOpenSource": "我们是开源的 !",
|
||||
"weAreOpenSource": "我们是开源的!",
|
||||
"privacy": "隐私",
|
||||
"terms": "使用条款",
|
||||
"terms": "条款",
|
||||
"checkForUpdates": "检查更新",
|
||||
"checkStatus": "检查状态",
|
||||
"downloadUpdate": "下载",
|
||||
@@ -320,7 +310,7 @@
|
||||
}
|
||||
},
|
||||
"sorry": "抱歉",
|
||||
"importFailureDesc": "无法解析选定的文件。\n如果您需要帮助,请写入support@ente.io!",
|
||||
"importFailureDesc": "无法解析所选文件。\n如果您需要帮助,请发邮件给 support@ente.io!",
|
||||
"pendingSyncs": "警告",
|
||||
"pendingSyncsWarningBody": "您的一些代码尚未备份。\n\n请确保您在登出之前备份这些代码。",
|
||||
"checkInboxAndSpamFolder": "请检查您的收件箱 (或者是在您的“垃圾邮件”列表内) 以完成验证",
|
||||
@@ -353,7 +343,7 @@
|
||||
"emailChangedTo": "电子邮件已更改为 {newEmail}",
|
||||
"authenticationFailedPleaseTryAgain": "认证失败,请重试",
|
||||
"authenticationSuccessful": "认证成功!",
|
||||
"twofactorAuthenticationSuccessfullyReset": "双重认证已成功重置",
|
||||
"twofactorAuthenticationSuccessfullyReset": "两步验证已成功重置",
|
||||
"incorrectRecoveryKey": "恢复密钥不正确",
|
||||
"theRecoveryKeyYouEnteredIsIncorrect": "您输入的恢复密钥不正确",
|
||||
"enterPassword": "输入密码",
|
||||
@@ -377,7 +367,7 @@
|
||||
"minimizeAppOnCopy": "复制时最小化应用",
|
||||
"editCodeAuthMessage": "编辑代码需要身份验证",
|
||||
"deleteCodeAuthMessage": "删除代码需要身份验证",
|
||||
"showQRAuthMessage": "显示QR码需要身份验证",
|
||||
"showQRAuthMessage": "显示二维码需要身份验证",
|
||||
"confirmAccountDeleteTitle": "确认删除账户",
|
||||
"confirmAccountDeleteMessage": "如果您使用其他 Ente 应用程序,该账户将会与其他应用程序链接。\n\n在所有 Ente 应用程序中,您上传的数据将被安排用于删除,并且您的账户将被永久删除。",
|
||||
"androidBiometricHint": "验证身份",
|
||||
@@ -492,5 +482,7 @@
|
||||
"setNewPin": "设置新 PIN 码",
|
||||
"importFailureDescNew": "无法解析选定的文件。",
|
||||
"appLockNotEnabled": "应用锁未启用",
|
||||
"appLockNotEnabledDescription": "请从“安全”>“应用锁”启用应用锁"
|
||||
"appLockNotEnabledDescription": "请从“安全”>“应用锁”启用应用锁",
|
||||
"authToViewPasskey": "请验证身份以查看通行密钥",
|
||||
"appLockOfflineModeWarning": "您已选择继续而不备份。如果您忘记了应用锁,您将无法访问数据。"
|
||||
}
|
||||
@@ -7,7 +7,6 @@ import 'package:ente_auth/core/configuration.dart';
|
||||
import 'package:ente_auth/core/constants.dart';
|
||||
import 'package:ente_auth/core/logging/super_logging.dart';
|
||||
import 'package:ente_auth/core/network.dart';
|
||||
import 'package:ente_auth/core/win_http_client.dart';
|
||||
import 'package:ente_auth/ente_theme_data.dart';
|
||||
import 'package:ente_auth/locale.dart';
|
||||
import 'package:ente_auth/services/authenticator_service.dart';
|
||||
@@ -65,9 +64,6 @@ Future<void> initSystemTray() async {
|
||||
|
||||
void main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
if (Platform.isWindows) {
|
||||
HttpOverrides.global = WindowsHttpOverrides();
|
||||
}
|
||||
|
||||
if (PlatformUtil.isDesktop()) {
|
||||
await windowManager.ensureInitialized();
|
||||
|
||||
@@ -338,8 +338,8 @@ class _HomePageState extends State<HomePage> {
|
||||
_searchText = _textController.text;
|
||||
|
||||
// Request focus on the search box
|
||||
// For Windows only for now. "Platform.isWindows" can be removed if other platforms has been tested.
|
||||
if (Platform.isWindows) {
|
||||
// For Windows and macOS only for now. This if statement can be removed if other platforms has been tested.
|
||||
if (Platform.isWindows || Platform.isMacOS) {
|
||||
searchBoxFocusNode.requestFocus();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -181,8 +181,6 @@ class _ItemsWidgetState extends State<ItemsWidget> {
|
||||
return '日本語';
|
||||
case 'ko':
|
||||
return '한국어';
|
||||
case 'ar':
|
||||
return 'العربية';
|
||||
case 'fa':
|
||||
return 'فارسی';
|
||||
default:
|
||||
|
||||
@@ -10,14 +10,17 @@ import 'package:ente_auth/services/user_service.dart';
|
||||
import 'package:ente_auth/theme/ente_theme.dart';
|
||||
import 'package:ente_auth/ui/account/request_pwd_verification_page.dart';
|
||||
import 'package:ente_auth/ui/account/sessions_page.dart';
|
||||
import 'package:ente_auth/ui/components/buttons/button_widget.dart';
|
||||
import 'package:ente_auth/ui/components/captioned_text_widget.dart';
|
||||
import 'package:ente_auth/ui/components/expandable_menu_item_widget.dart';
|
||||
import 'package:ente_auth/ui/components/menu_item_widget.dart';
|
||||
import 'package:ente_auth/ui/components/models/button_result.dart';
|
||||
import 'package:ente_auth/ui/components/toggle_switch_widget.dart';
|
||||
import 'package:ente_auth/ui/settings/common_settings.dart';
|
||||
import 'package:ente_auth/ui/settings/lock_screen/lock_screen_options.dart';
|
||||
import 'package:ente_auth/utils/auth_util.dart';
|
||||
import 'package:ente_auth/utils/dialog_util.dart';
|
||||
import 'package:ente_auth/utils/lock_screen_settings.dart';
|
||||
import 'package:ente_auth/utils/navigation_util.dart';
|
||||
import 'package:ente_auth/utils/platform_util.dart';
|
||||
import 'package:ente_auth/utils/toast_util.dart';
|
||||
@@ -146,10 +149,27 @@ class _SecuritySectionWidgetState extends State<SecuritySectionWidget> {
|
||||
trailingIcon: Icons.chevron_right_outlined,
|
||||
trailingIconIsMuted: true,
|
||||
onTap: () async {
|
||||
ButtonResult? result;
|
||||
if (_config.hasOptedForOfflineMode() &&
|
||||
LockScreenSettings.instance.getOfflineModeWarningStatus()) {
|
||||
result = await showChoiceActionSheet(
|
||||
context,
|
||||
title: context.l10n.warning,
|
||||
body: context.l10n.appLockOfflineModeWarning,
|
||||
secondButtonLabel: context.l10n.cancel,
|
||||
firstButtonLabel: context.l10n.ok,
|
||||
);
|
||||
if (result?.action == ButtonAction.first) {
|
||||
await LockScreenSettings.instance
|
||||
.setOfflineModeWarningStatus(false);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (await Configuration.instance.shouldShowLockScreen()) {
|
||||
final bool result = await requestAuthentication(
|
||||
context,
|
||||
context.l10n.about,
|
||||
context.l10n.authToChangeLockscreenSetting,
|
||||
);
|
||||
if (result) {
|
||||
await Navigator.of(context).push(
|
||||
|
||||
@@ -33,6 +33,9 @@ class _LockScreenState extends State<LockScreen> with WidgetsBindingObserver {
|
||||
int remainingTimeInSeconds = 0;
|
||||
final _lockscreenSetting = LockScreenSettings.instance;
|
||||
late Brightness _platformBrightness;
|
||||
final bool hasOptedForOfflineMode =
|
||||
Configuration.instance.hasOptedForOfflineMode();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
_logger.info("initiatingState");
|
||||
@@ -53,13 +56,15 @@ class _LockScreenState extends State<LockScreen> with WidgetsBindingObserver {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
elevation: 0,
|
||||
leading: IconButton(
|
||||
icon: const Icon(Icons.logout_outlined),
|
||||
color: Theme.of(context).iconTheme.color,
|
||||
onPressed: () {
|
||||
_onLogoutTapped(context);
|
||||
},
|
||||
),
|
||||
leading: hasOptedForOfflineMode
|
||||
? const SizedBox.shrink()
|
||||
: IconButton(
|
||||
icon: const Icon(Icons.logout_outlined),
|
||||
color: Theme.of(context).iconTheme.color,
|
||||
onPressed: () {
|
||||
_onLogoutTapped(context);
|
||||
},
|
||||
),
|
||||
),
|
||||
body: GestureDetector(
|
||||
onTap: () {
|
||||
|
||||
@@ -131,7 +131,9 @@ class IconUtils {
|
||||
);
|
||||
if (icon["altNames"] != null) {
|
||||
for (final name in icon["altNames"]) {
|
||||
_customIcons[name] = CustomIconData(
|
||||
_customIcons[name.toString()
|
||||
.replaceAll(' ', '')
|
||||
.toLowerCase()] = CustomIconData(
|
||||
icon["slug"],
|
||||
icon["hex"],
|
||||
);
|
||||
|
||||
@@ -23,6 +23,8 @@ class LockScreenSettings {
|
||||
static const keyAppLockSet = "ls_is_app_lock_set";
|
||||
static const keyHasMigratedLockScreenChanges =
|
||||
"ls_has_migrated_lock_screen_changes";
|
||||
static const keyShowOfflineModeWarning = "ls_show_offline_mode_warning";
|
||||
|
||||
final List<Duration> autoLockDurations = const [
|
||||
Duration(milliseconds: 650),
|
||||
Duration(seconds: 5),
|
||||
@@ -47,6 +49,14 @@ class LockScreenSettings {
|
||||
await runLockScreenChangesMigration();
|
||||
}
|
||||
|
||||
Future<void> setOfflineModeWarningStatus(bool value) async {
|
||||
await _preferences.setBool(keyShowOfflineModeWarning, value);
|
||||
}
|
||||
|
||||
bool getOfflineModeWarningStatus() {
|
||||
return _preferences.getBool(keyShowOfflineModeWarning) ?? true;
|
||||
}
|
||||
|
||||
Future<void> runLockScreenChangesMigration() async {
|
||||
if (_preferences.getBool(keyHasMigratedLockScreenChanges) != null) {
|
||||
return;
|
||||
|
||||
@@ -5,6 +5,10 @@
|
||||
#include <gdk/gdkx.h>
|
||||
#endif
|
||||
|
||||
#ifdef GDK_WINDOWING_WAYLAND
|
||||
#include <gdk/gdkwayland.h>
|
||||
#endif
|
||||
|
||||
#include "flutter/generated_plugin_registrant.h"
|
||||
|
||||
struct _MyApplication
|
||||
@@ -38,6 +42,7 @@ static void my_application_activate(GApplication *application)
|
||||
// If running on Wayland assume the header bar will work (may need changing
|
||||
// if future cases occur).
|
||||
gboolean use_header_bar = TRUE;
|
||||
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
GdkScreen *screen = gtk_window_get_screen(window);
|
||||
if (GDK_IS_X11_SCREEN(screen))
|
||||
@@ -49,6 +54,21 @@ static void my_application_activate(GApplication *application)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef GDK_WINDOWING_WAYLAND
|
||||
GdkDisplay* display = gtk_widget_get_display(GTK_WIDGET(window));
|
||||
if (GDK_IS_WAYLAND_DISPLAY(display)) {
|
||||
// Check the XDG_CURRENT_DESKTOP environment variable to determine the
|
||||
// desktop environment.
|
||||
const gchar* current_desktop = g_getenv("XDG_CURRENT_DESKTOP");
|
||||
if (current_desktop != NULL && g_str_has_prefix(current_desktop, "GNOME")) {
|
||||
use_header_bar = TRUE;
|
||||
} else {
|
||||
use_header_bar = FALSE;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (use_header_bar)
|
||||
{
|
||||
GtkHeaderBar *header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
|
||||
|
||||
@@ -12,7 +12,7 @@ PODS:
|
||||
- FlutterMacOS
|
||||
- flutter_inappwebview_macos (0.0.1):
|
||||
- FlutterMacOS
|
||||
- OrderedSet (~> 5.0)
|
||||
- OrderedSet (~> 6.0.3)
|
||||
- flutter_local_authentication (1.2.0):
|
||||
- FlutterMacOS
|
||||
- flutter_local_notifications (0.0.1):
|
||||
@@ -23,7 +23,7 @@ PODS:
|
||||
- local_auth_darwin (0.0.1):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- OrderedSet (5.0.0)
|
||||
- OrderedSet (6.0.3)
|
||||
- package_info_plus (0.0.1):
|
||||
- FlutterMacOS
|
||||
- path_provider_foundation (0.0.1):
|
||||
@@ -31,11 +31,11 @@ PODS:
|
||||
- FlutterMacOS
|
||||
- screen_retriever (0.0.1):
|
||||
- FlutterMacOS
|
||||
- Sentry/HybridSDK (8.33.0)
|
||||
- sentry_flutter (8.7.0):
|
||||
- Sentry/HybridSDK (8.36.0)
|
||||
- sentry_flutter (8.9.0):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- Sentry/HybridSDK (= 8.33.0)
|
||||
- Sentry/HybridSDK (= 8.36.0)
|
||||
- share_plus (0.0.1):
|
||||
- FlutterMacOS
|
||||
- shared_preferences_foundation (0.0.1):
|
||||
@@ -153,21 +153,21 @@ EXTERNAL SOURCES:
|
||||
SPEC CHECKSUMS:
|
||||
app_links: 10e0a0ab602ffaf34d142cd4862f29d34b303b2a
|
||||
connectivity_plus: ddd7f30999e1faaef5967c23d5b6d503d10434db
|
||||
desktop_webview_window: d4365e71bcd4e1aa0c14cf0377aa24db0c16a7e2
|
||||
desktop_webview_window: 89bb3d691f4c80314a10be312f4cd35db93a9d5a
|
||||
device_info_plus: 5401765fde0b8d062a2f8eb65510fb17e77cf07f
|
||||
file_saver: 44e6fbf666677faf097302460e214e977fdd977b
|
||||
flutter_inappwebview_macos: 9600c9df9fdb346aaa8933812009f8d94304203d
|
||||
flutter_inappwebview_macos: bdf207b8f4ebd58e86ae06cd96b147de99a67c9b
|
||||
flutter_local_authentication: 85674893931e1c9cfa7c9e4f5973cb8c56b018b0
|
||||
flutter_local_notifications: 3805ca215b2fb7f397d78b66db91f6a747af52e4
|
||||
flutter_secure_storage_macos: 59459653abe1adb92abbc8ea747d79f8d19866c9
|
||||
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
|
||||
local_auth_darwin: 66e40372f1c29f383a314c738c7446e2f7fdadc3
|
||||
OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
|
||||
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
|
||||
package_info_plus: fa739dd842b393193c5ca93c26798dff6e3d0e0c
|
||||
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
||||
screen_retriever: 59634572a57080243dd1bf715e55b6c54f241a38
|
||||
Sentry: 8560050221424aef0bebc8e31eedf00af80f90a6
|
||||
sentry_flutter: e26b861f744e5037a3faf9bf56603ec65d658a61
|
||||
Sentry: f8374b5415bc38dfb5645941b3ae31230fbeae57
|
||||
sentry_flutter: 0eb93e5279eb41e2392212afe1ccd2fecb4f8cbe
|
||||
share_plus: 36537c04ce0c3e3f5bd297ce4318b6d5ee5fd6cf
|
||||
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
|
||||
sodium_libs: d39bd76697736cb11ce4a0be73b9b4bc64466d6f
|
||||
@@ -175,7 +175,7 @@ SPEC CHECKSUMS:
|
||||
sqlite3: 0bb0e6389d824e40296f531b858a2a0b71c0d2fb
|
||||
sqlite3_flutter_libs: 5ca46c1a04eddfbeeb5b16566164aa7ad1616e7b
|
||||
tray_manager: 9064e219c56d75c476e46b9a21182087930baf90
|
||||
url_launcher_macos: 5f437abeda8c85500ceb03f5c1938a8c5a705399
|
||||
url_launcher_macos: c82c93949963e55b228a30115bd219499a6fe404
|
||||
window_manager: 3a1844359a6295ab1e47659b1a777e36773cd6e8
|
||||
|
||||
PODFILE CHECKSUM: f401c31c8f7c5571f6f565c78915d54338812dab
|
||||
|
||||
@@ -3,6 +3,13 @@ import FlutterMacOS
|
||||
|
||||
@main
|
||||
class AppDelegate: FlutterAppDelegate {
|
||||
override func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {
|
||||
if !flag {
|
||||
sender.windows.first?.makeKeyAndOrderFront(self)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
f51f5c3bcecb0339dc02189e9dd2c2c8
|
||||
63075f3921b1df645993e992917c21d5
|
||||
@@ -5,10 +5,15 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: _fe_analyzer_shared
|
||||
sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7"
|
||||
sha256: f256b0c0ba6c7577c15e2e4e114755640a875e885099367bf6e012b19314c834
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "67.0.0"
|
||||
version: "72.0.0"
|
||||
_macros:
|
||||
dependency: transitive
|
||||
description: dart
|
||||
source: sdk
|
||||
version: "0.3.2"
|
||||
adaptive_theme:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -21,26 +26,26 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: analyzer
|
||||
sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d"
|
||||
sha256: b652861553cd3990d8ed361f7979dc6d7053a9ac8843fa73820ab68ce5410139
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.4.1"
|
||||
version: "6.7.0"
|
||||
ansicolor:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: ansicolor
|
||||
sha256: "8bf17a8ff6ea17499e40a2d2542c2f481cd7615760c6d34065cb22bfd22e6880"
|
||||
sha256: "50e982d500bc863e1d703448afdbf9e5a72eb48840a4f766fa361ffd6877055f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.2"
|
||||
version: "2.0.3"
|
||||
app_links:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: app_links
|
||||
sha256: f04c3ca96426baba784c736a201926bd4145524c36a1b38942a351b033305e21
|
||||
sha256: ad1a6d598e7e39b46a34f746f9a8b011ee147e4c275d407fa457e7a62f84dd99
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.2.1"
|
||||
version: "6.3.2"
|
||||
app_links_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -165,18 +170,18 @@ packages:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: build_runner
|
||||
sha256: "644dc98a0f179b872f612d3eb627924b578897c629788e858157fa5e704ca0c7"
|
||||
sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.11"
|
||||
version: "2.4.13"
|
||||
build_runner_core:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: build_runner_core
|
||||
sha256: e3c79f69a64bdfcd8a776a3c28db4eb6e3fb5356d013ae5eb2e52007706d5dbe
|
||||
sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.3.1"
|
||||
version: "7.3.2"
|
||||
built_collection:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -253,10 +258,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: confetti
|
||||
sha256: "979aafde2428c53947892c95eb244466c109c129b7eee9011f0a66caaca52267"
|
||||
sha256: "79376a99648efbc3f23582f5784ced0fe239922bd1a0fb41f582051eba750751"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.0"
|
||||
version: "0.8.0"
|
||||
connectivity_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -293,10 +298,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: crypto
|
||||
sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
|
||||
sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.3"
|
||||
version: "3.0.5"
|
||||
csslib:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -309,10 +314,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: dart_style
|
||||
sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9"
|
||||
sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.6"
|
||||
version: "2.3.7"
|
||||
dbus:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -326,7 +331,7 @@ packages:
|
||||
description:
|
||||
path: "packages/desktop_webview_window"
|
||||
ref: main
|
||||
resolved-ref: "726d8281a244d56ab36e843f0427c48de6d9cc56"
|
||||
resolved-ref: "3e4247ba5b71049704395b70b5a827fb113b88ea"
|
||||
url: "https://github.com/MixinNetwork/flutter-plugins"
|
||||
source: git
|
||||
version: "0.2.4"
|
||||
@@ -342,18 +347,26 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: device_info_plus_platform_interface
|
||||
sha256: d3b01d5868b50ae571cd1dc6e502fc94d956b665756180f7b16ead09e836fd64
|
||||
sha256: "282d3cf731045a2feb66abfe61bbc40870ae50a3ed10a4d3d217556c35c8c2ba"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.0.0"
|
||||
version: "7.0.1"
|
||||
dio:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: dio
|
||||
sha256: "11e40df547d418cc0c4900a9318b26304e665da6fa4755399a9ff9efd09034b5"
|
||||
sha256: "5598aa796bbf4699afd5c67c0f5f6e2ed542afc956884b9cd58c306966efc260"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.4.3+1"
|
||||
version: "5.7.0"
|
||||
dio_web_adapter:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: dio_web_adapter
|
||||
sha256: "33259a9276d6cea88774a0000cfae0d861003497755969c92faa223108620dc8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.0"
|
||||
dotted_border:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -391,10 +404,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: event_bus
|
||||
sha256: "44baa799834f4c803921873e7446a2add0f3efa45e101a054b1f0ab9b95f8edc"
|
||||
sha256: "1a55e97923769c286d295240048fc180e7b0768902c3c2e869fe059aafa15304"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.0"
|
||||
version: "2.0.1"
|
||||
expandable:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -423,10 +436,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: ffi
|
||||
sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21"
|
||||
sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.2"
|
||||
version: "2.1.3"
|
||||
file:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -447,10 +460,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: file_saver
|
||||
sha256: bdebc720e17b3e01aba59da69b6d47020a7e5ba7d5c75bd9194f9618d5f16ef4
|
||||
sha256: "017a127de686af2d2fbbd64afea97052d95f2a0f87d19d25b87e097407bf9c1e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.12"
|
||||
version: "0.2.14"
|
||||
fixnum:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -516,18 +529,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_inappwebview
|
||||
sha256: "3e9a443a18ecef966fb930c3a76ca5ab6a7aafc0c7b5e14a4a850cf107b09959"
|
||||
sha256: "93cfcca02bdda4b26cd700cf70d9ddba09d8348e3e8f2857638c23ed23a4fcb4"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.0.0"
|
||||
version: "6.1.4"
|
||||
flutter_inappwebview_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_inappwebview_android
|
||||
sha256: d247f6ed417f1f8c364612fa05a2ecba7f775c8d0c044c1d3b9ee33a6515c421
|
||||
sha256: "62557c15a5c2db5d195cb3892aab74fcaec266d7b86d59a6f0027abd672cddba"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.13"
|
||||
version: "1.1.3"
|
||||
flutter_inappwebview_internal_annotations:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -540,42 +553,50 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_inappwebview_ios
|
||||
sha256: f363577208b97b10b319cd0c428555cd8493e88b468019a8c5635a0e4312bd0f
|
||||
sha256: "5818cf9b26cf0cbb0f62ff50772217d41ea8d3d9cc00279c45f8aabaa1b4025d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.13"
|
||||
version: "1.1.2"
|
||||
flutter_inappwebview_macos:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_inappwebview_macos
|
||||
sha256: b55b9e506c549ce88e26580351d2c71d54f4825901666bd6cfa4be9415bb2636
|
||||
sha256: c1fbb86af1a3738e3541364d7d1866315ffb0468a1a77e34198c9be571287da1
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.11"
|
||||
version: "1.1.2"
|
||||
flutter_inappwebview_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_inappwebview_platform_interface
|
||||
sha256: "545fd4c25a07d2775f7d5af05a979b2cac4fbf79393b0a7f5d33ba39ba4f6187"
|
||||
sha256: cf5323e194096b6ede7a1ca808c3e0a078e4b33cc3f6338977d75b4024ba2500
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.10"
|
||||
version: "1.3.0+1"
|
||||
flutter_inappwebview_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_inappwebview_web
|
||||
sha256: d8c680abfb6fec71609a700199635d38a744df0febd5544c5a020bd73de8ee07
|
||||
sha256: "55f89c83b0a0d3b7893306b3bb545ba4770a4df018204917148ebb42dc14a598"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.8"
|
||||
version: "1.1.2"
|
||||
flutter_inappwebview_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_inappwebview_windows
|
||||
sha256: "95ebc65aecfa63b2084c822aec6ba0545f0a0afaa3899f2c752ec96c09108db5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.5.0+2"
|
||||
flutter_launcher_icons:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_launcher_icons
|
||||
sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea"
|
||||
sha256: "619817c4b65b322b5104b6bb6dfe6cda62d9729bd7ad4303ecc8b4e690a67a77"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.13.1"
|
||||
version: "0.14.1"
|
||||
flutter_local_authentication:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -589,10 +610,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_local_notifications
|
||||
sha256: c500d5d9e7e553f06b61877ca6b9c8b92c570a4c8db371038702e8ce57f8a50f
|
||||
sha256: "49eeef364fddb71515bc78d5a8c51435a68bccd6e4d68e25a942c5e47761ae71"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "17.2.2"
|
||||
version: "17.2.3"
|
||||
flutter_local_notifications_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -618,18 +639,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_native_splash
|
||||
sha256: edf39bcf4d74aca1eb2c1e43c3e445fd9f494013df7f0da752fefe72020eedc0
|
||||
sha256: aa06fec78de2190f3db4319dd60fdc8d12b2626e93ef9828633928c2dcaea840
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.0"
|
||||
version: "2.4.1"
|
||||
flutter_plugin_android_lifecycle:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_plugin_android_lifecycle
|
||||
sha256: c6b0b4c05c458e1c01ad9bcc14041dd7b1f6783d487be4386f793f47a8a4d03e
|
||||
sha256: "9ee02950848f61c4129af3d6ec84a1cfc0e47931abc746b03e7a3bc3e8ff6eda"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.20"
|
||||
version: "2.0.22"
|
||||
flutter_secure_storage:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -643,7 +664,7 @@ packages:
|
||||
description:
|
||||
path: flutter_secure_storage_linux
|
||||
ref: develop
|
||||
resolved-ref: cb30953edc029dc4059b72700270b4cd3a3afade
|
||||
resolved-ref: "5a5692b609b3886cdd49b2ed06b9c079ecdff996"
|
||||
url: "https://github.com/mogol/flutter_secure_storage.git"
|
||||
source: git
|
||||
version: "1.2.1"
|
||||
@@ -683,10 +704,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_shaders
|
||||
sha256: "02750b545c01ff4d8e9bbe8f27a7731aa3778402506c67daa1de7f5fc3f4befe"
|
||||
sha256: "34794acadd8275d971e02df03afee3dee0f98dbfb8c4837082ad0034f612a3e2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.2"
|
||||
version: "0.1.3"
|
||||
flutter_speed_dial:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -733,10 +754,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: freezed_annotation
|
||||
sha256: c3fd9336eb55a38cc1bbd79ab17573113a8deccd0ecbbf926cca3c62803b5c2d
|
||||
sha256: c2e2d632dd9b8a2b7751117abcfc2b4888ecfe181bd9fca7170d9ef02e595fe2
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.1"
|
||||
version: "2.4.4"
|
||||
frontend_server_client:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -773,10 +794,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: graphs
|
||||
sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19
|
||||
sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.1"
|
||||
version: "2.3.2"
|
||||
gtk:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -789,18 +810,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: hashlib
|
||||
sha256: "67e640e19cc33070113acab3125cd48ebe480a0300e15554dec089b8878a729f"
|
||||
sha256: f572f2abce09fc7aee53f15927052b9732ea1053e540af8cae211111ee0b99b1
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.16.0"
|
||||
version: "1.21.0"
|
||||
hashlib_codecs:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: hashlib_codecs
|
||||
sha256: a1c7b5d89ff29e81fd8e8c0b35966db4c935e149fc4ebe1ebf71e358c15863ab
|
||||
sha256: "8cea9ccafcfeaa7324d2ae52c61c69f7ff71f4237507a018caab31b9e416e3b1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.0"
|
||||
version: "2.6.0"
|
||||
hex:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -917,10 +938,10 @@ packages:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: lints
|
||||
sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235"
|
||||
sha256: "3315600f3fb3b135be672bf4a178c55f274bebe368325ae18462c89ac1e3b413"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.0"
|
||||
version: "5.0.0"
|
||||
local_auth:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -933,18 +954,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: local_auth_android
|
||||
sha256: "48dfb2d954da8ef6a77adfc93a29998f7729e9308eaa817e91dea4500317b2c8"
|
||||
sha256: "5351c7eea8823de28e37d8b7b3e386d944b80f2a77edb91a5707fb97a41fc1b1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.39"
|
||||
version: "1.0.45"
|
||||
local_auth_darwin:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: local_auth_darwin
|
||||
sha256: "7ba5738c874ca2b910d72385d00d2bebad9d4e807612936cf5e32bc01a048c71"
|
||||
sha256: "6d2950da311d26d492a89aeb247c72b4653ddc93601ea36a84924a396806d49c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.0"
|
||||
version: "1.4.1"
|
||||
local_auth_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -957,10 +978,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: local_auth_windows
|
||||
sha256: "505ba3367ca781efb1c50d3132e44a2446bccc4163427bc203b9b4d8994d97ea"
|
||||
sha256: bc4e66a29b0fdf751aafbec923b5bed7ad6ed3614875d8151afe2578520b2ab5
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.10"
|
||||
version: "1.0.11"
|
||||
logging:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -969,6 +990,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.0"
|
||||
macros:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: macros
|
||||
sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.2-main.4"
|
||||
matcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1005,10 +1034,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: mime
|
||||
sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2"
|
||||
sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.5"
|
||||
version: "1.0.6"
|
||||
mocktail:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
@@ -1117,18 +1146,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: path_provider
|
||||
sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161
|
||||
sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.3"
|
||||
version: "2.1.4"
|
||||
path_provider_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_android
|
||||
sha256: "9c96da072b421e98183f9ea7464898428e764bc0ce5567f27ec8693442e72514"
|
||||
sha256: "6f01f8e37ec30b07bc424b4deabac37cacb1bc7e2e515ad74486039918a37eb7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.5"
|
||||
version: "2.2.10"
|
||||
path_provider_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1157,10 +1186,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_windows
|
||||
sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170"
|
||||
sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.1"
|
||||
version: "2.3.0"
|
||||
petitparser:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1253,10 +1282,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: qr
|
||||
sha256: "64957a3930367bf97cc211a5af99551d630f2f4625e38af10edd6b19131b64b3"
|
||||
sha256: "5a1d2586170e172b8a8c8470bbbffd5eb0cd38a66c0d77155ea138d3af3a4445"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
version: "3.0.2"
|
||||
qr_code_scanner:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -1285,18 +1314,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: sentry
|
||||
sha256: "0f787e27ff617e4f88f7074977240406a9c5509444bac64a4dfa5b3200fb5632"
|
||||
sha256: "033287044a6644a93498969449d57c37907e56f5cedb17b88a3ff20a882261dd"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.7.0"
|
||||
version: "8.9.0"
|
||||
sentry_flutter:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: sentry_flutter
|
||||
sha256: fbbb47d72ccca48be25bf3c2ced6ab6e872991af3a0ba78e54be8d138f2e053f
|
||||
sha256: "3780b5a0bb6afd476857cfbc6c7444d969c29a4d9bd1aa5b6960aa76c65b737a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.7.0"
|
||||
version: "8.9.0"
|
||||
share_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -1317,58 +1346,58 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: shared_preferences
|
||||
sha256: d3bbe5553a986e83980916ded2f0b435ef2e1893dfaa29d5a7a790d0eca12180
|
||||
sha256: "746e5369a43170c25816cc472ee016d3a66bc13fcf430c0bc41ad7b4b2922051"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.3"
|
||||
version: "2.3.2"
|
||||
shared_preferences_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_android
|
||||
sha256: "93d0ec9dd902d85f326068e6a899487d1f65ffcd5798721a95330b26c8131577"
|
||||
sha256: "480ba4345773f56acda9abf5f50bd966f581dac5d514e5fc4a18c62976bbba7e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.3"
|
||||
version: "2.3.2"
|
||||
shared_preferences_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_foundation
|
||||
sha256: "0a8a893bf4fd1152f93fec03a415d11c27c74454d96e2318a7ac38dd18683ab7"
|
||||
sha256: "07e050c7cd39bad516f8d64c455f04508d09df104be326d8c02551590a0d513d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.0"
|
||||
version: "2.5.3"
|
||||
shared_preferences_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_linux
|
||||
sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa"
|
||||
sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.2"
|
||||
version: "2.4.1"
|
||||
shared_preferences_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_platform_interface
|
||||
sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b"
|
||||
sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.2"
|
||||
version: "2.4.1"
|
||||
shared_preferences_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_web
|
||||
sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf
|
||||
sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.1"
|
||||
version: "2.4.2"
|
||||
shared_preferences_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_windows
|
||||
sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59"
|
||||
sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.2"
|
||||
version: "2.4.1"
|
||||
shelf:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1410,10 +1439,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sodium_libs
|
||||
sha256: "441444f6f433032bae3444c2ef5ed2cf5bc0def77f104abdff20aedcf79a7c7a"
|
||||
sha256: aa764acd6ccc6113e119c2d99471aeeb4637a9a501639549b297d3a143ff49b3
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.1+5"
|
||||
version: "2.2.1+6"
|
||||
source_gen:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1451,26 +1480,26 @@ packages:
|
||||
description:
|
||||
path: sqflite
|
||||
ref: HEAD
|
||||
resolved-ref: "3309d399dd7d695bbfa7c05f643bb16765cef4ee"
|
||||
resolved-ref: "699aaafa282d823b89ca568aac7a68d2c29ddab6"
|
||||
url: "https://github.com/tekartik/sqflite"
|
||||
source: git
|
||||
version: "2.3.3+1"
|
||||
version: "2.3.3+2"
|
||||
sqflite_common:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite_common
|
||||
sha256: "3da423ce7baf868be70e2c0976c28a1bb2f73644268b7ffa7d2e08eab71f16a4"
|
||||
sha256: "2d8e607db72e9cb7748c9c6e739e2c9618320a5517de693d5a24609c4671b1a4"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.4"
|
||||
version: "2.5.4+4"
|
||||
sqflite_common_ffi:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: sqflite_common_ffi
|
||||
sha256: "4d6137c29e930d6e4a8ff373989dd9de7bac12e3bc87bce950f6e844e8ad3bb5"
|
||||
sha256: a6057d4c87e9260ba1ec436ebac24760a110589b9c0a859e128842eb69a7ef04
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.3"
|
||||
version: "2.3.3+1"
|
||||
sqlite3:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -1499,10 +1528,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: steam_totp
|
||||
sha256: "3c09143c983f6bb05bb53e9232f9d40bbcc01c596ba0273c3e6bb246729abfa1"
|
||||
sha256: f47163df9be533024cecb97ca9bb1f29bb5575409a22fe4acdd9d70288d38d0d
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.0.1"
|
||||
version: "0.0.2"
|
||||
step_progress_indicator:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -1547,10 +1576,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: synchronized
|
||||
sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558"
|
||||
sha256: "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.0+1"
|
||||
version: "3.3.0+3"
|
||||
term_glyph:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1571,10 +1600,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: timezone
|
||||
sha256: a6ccda4a69a442098b602c44e61a1e2b4bf6f5516e875bbf0f427d5df14745d5
|
||||
sha256: "2236ec079a174ce07434e89fcd3fcda430025eb7692244139a9cf54fdcf1fc7d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.9.3"
|
||||
version: "0.9.4"
|
||||
timing:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1587,10 +1616,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: tray_manager
|
||||
sha256: c9a63fd88bd3546287a7eb8ccc978d707eef82c775397af17dda3a4f4c039e64
|
||||
sha256: bdc3ac6c36f3d12d871459e4a9822705ce5a1165a17fa837103bc842719bf3f7
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.3"
|
||||
version: "0.2.4"
|
||||
tuple:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -1635,34 +1664,34 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_android
|
||||
sha256: ceb2625f0c24ade6ef6778d1de0b2e44f2db71fded235eb52295247feba8c5cf
|
||||
sha256: a4e5f34f2fadf1fa7b4e69db89189056e313c9c98e8ad420e6b53677b6abc334
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.3"
|
||||
version: "6.3.11"
|
||||
url_launcher_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_ios
|
||||
sha256: "7068716403343f6ba4969b4173cbf3b84fc768042124bc2c011e5d782b24fe89"
|
||||
sha256: e43b677296fadce447e987a2f519dcf5f6d1e527dc35d01ffab4fff5b8a7063e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.0"
|
||||
version: "6.3.1"
|
||||
url_launcher_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_linux
|
||||
sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811
|
||||
sha256: e2b9622b4007f97f504cd64c0128309dfb978ae66adbe944125ed9e1750f06af
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.1"
|
||||
version: "3.2.0"
|
||||
url_launcher_macos:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_macos
|
||||
sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de"
|
||||
sha256: "769549c999acdb42b8bcfa7c43d72bf79a382ca7441ab18a808e101149daf672"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.2.0"
|
||||
version: "3.2.1"
|
||||
url_launcher_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1691,10 +1720,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: uuid
|
||||
sha256: "814e9e88f21a176ae1359149021870e87f7cddaf633ab678a5d2b0bff7fd1ba8"
|
||||
sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.4.0"
|
||||
version: "4.5.1"
|
||||
vector_graphics:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1747,10 +1776,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web
|
||||
sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062
|
||||
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
version: "1.1.0"
|
||||
web_socket:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1771,18 +1800,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: win32
|
||||
sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4
|
||||
sha256: "4d45dc9069dba4619dc0ebd93c7cec5e66d8482cb625a370ac806dcc8165f2ec"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.5.1"
|
||||
version: "5.5.5"
|
||||
win32_registry:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: win32_registry
|
||||
sha256: "10589e0d7f4e053f2c61023a31c9ce01146656a70b7b7f0828c0b46d7da2a9bb"
|
||||
sha256: "21ec76dfc731550fd3e2ce7a33a9ea90b828fdf19a5c3bcf556fa992cfa99852"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.3"
|
||||
version: "1.1.5"
|
||||
window_manager:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -1795,10 +1824,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: xdg_directories
|
||||
sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d
|
||||
sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.4"
|
||||
version: "1.1.0"
|
||||
xml:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1824,5 +1853,5 @@ packages:
|
||||
source: hosted
|
||||
version: "3.1.2"
|
||||
sdks:
|
||||
dart: ">=3.4.0 <4.0.0"
|
||||
flutter: ">=3.22.0"
|
||||
dart: ">=3.5.0 <4.0.0"
|
||||
flutter: ">=3.24.0"
|
||||
|
||||
@@ -16,7 +16,7 @@ dependencies:
|
||||
bloc: ^8.1.2
|
||||
clipboard: ^0.1.3
|
||||
collection: ^1.18.0 # dart
|
||||
confetti: ^0.7.0
|
||||
confetti: ^0.8.0
|
||||
connectivity_plus: ^6.0.5
|
||||
convert: ^3.1.1
|
||||
desktop_webview_window:
|
||||
@@ -49,7 +49,7 @@ dependencies:
|
||||
flutter_displaymode: ^0.6.0
|
||||
flutter_email_sender: ^6.0.2
|
||||
flutter_inappwebview: ^6.0.0
|
||||
flutter_launcher_icons: ^0.13.1
|
||||
flutter_launcher_icons: ^0.14.1
|
||||
flutter_local_authentication:
|
||||
git:
|
||||
url: https://github.com/eaceto/flutter_local_authentication
|
||||
@@ -117,7 +117,7 @@ dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
json_serializable: ^6.2.0
|
||||
lints: ^4.0.0
|
||||
lints: ^5.0.0
|
||||
mocktail: ^1.0.3
|
||||
|
||||
# The following section is specific to Flutter.
|
||||
|
||||
@@ -10,11 +10,11 @@
|
||||
#include <connectivity_plus/connectivity_plus_windows_plugin.h>
|
||||
#include <desktop_webview_window/desktop_webview_window_plugin.h>
|
||||
#include <file_saver/file_saver_plugin.h>
|
||||
#include <flutter_inappwebview_windows/flutter_inappwebview_windows_plugin_c_api.h>
|
||||
#include <flutter_local_authentication/flutter_local_authentication_plugin_c_api.h>
|
||||
#include <flutter_secure_storage_windows/flutter_secure_storage_windows_plugin.h>
|
||||
#include <local_auth_windows/local_auth_plugin.h>
|
||||
#include <screen_retriever/screen_retriever_plugin.h>
|
||||
#include <sentry_flutter/sentry_flutter_plugin.h>
|
||||
#include <share_plus/share_plus_windows_plugin_c_api.h>
|
||||
#include <sodium_libs/sodium_libs_plugin_c_api.h>
|
||||
#include <sqlite3_flutter_libs/sqlite3_flutter_libs_plugin.h>
|
||||
@@ -31,6 +31,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||
registry->GetRegistrarForPlugin("DesktopWebviewWindowPlugin"));
|
||||
FileSaverPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("FileSaverPlugin"));
|
||||
FlutterInappwebviewWindowsPluginCApiRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("FlutterInappwebviewWindowsPluginCApi"));
|
||||
FlutterLocalAuthenticationPluginCApiRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("FlutterLocalAuthenticationPluginCApi"));
|
||||
FlutterSecureStorageWindowsPluginRegisterWithRegistrar(
|
||||
@@ -39,8 +41,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||
registry->GetRegistrarForPlugin("LocalAuthPlugin"));
|
||||
ScreenRetrieverPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("ScreenRetrieverPlugin"));
|
||||
SentryFlutterPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("SentryFlutterPlugin"));
|
||||
SharePlusWindowsPluginCApiRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi"));
|
||||
SodiumLibsPluginCApiRegisterWithRegistrar(
|
||||
|
||||
@@ -7,11 +7,11 @@ list(APPEND FLUTTER_PLUGIN_LIST
|
||||
connectivity_plus
|
||||
desktop_webview_window
|
||||
file_saver
|
||||
flutter_inappwebview_windows
|
||||
flutter_local_authentication
|
||||
flutter_secure_storage_windows
|
||||
local_auth_windows
|
||||
screen_retriever
|
||||
sentry_flutter
|
||||
share_plus
|
||||
sodium_libs
|
||||
sqlite3_flutter_libs
|
||||
@@ -21,6 +21,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
|
||||
)
|
||||
|
||||
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
||||
sentry_flutter
|
||||
)
|
||||
|
||||
set(PLUGIN_BUNDLED_LIBRARIES)
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
## v1.7.6 (Unreleased)
|
||||
|
||||
- Parse description from metadata JSON.
|
||||
- .
|
||||
|
||||
## v1.7.5
|
||||
|
||||
@@ -153,6 +153,8 @@ const modelPathDownloadingIfNeeded = async (
|
||||
) => {
|
||||
const modelPath = modelSavePath(modelName);
|
||||
|
||||
await cleanupOldModelsIfNeeded();
|
||||
|
||||
if (!existsSync(modelPath)) {
|
||||
log.info("CLIP image model not found, downloading");
|
||||
await downloadModel(modelPath, modelName);
|
||||
@@ -169,6 +171,33 @@ const modelPathDownloadingIfNeeded = async (
|
||||
return modelPath;
|
||||
};
|
||||
|
||||
/**
|
||||
* Cleanup old models.
|
||||
*
|
||||
* This code runs whenever we need to download a new model, which usually
|
||||
* happens when we update a model, so this is a great time to go through the
|
||||
* list of previously existent but now unused models, and delete them if they
|
||||
* exist to clean up the user's disk space.
|
||||
*/
|
||||
const cleanupOldModelsIfNeeded = async () => {
|
||||
const oldModelNames = [
|
||||
"clip-image-vit-32-float32.onnx",
|
||||
"clip-text-vit-32-uint8.onnx",
|
||||
"mobileclip_s2_image.onnx",
|
||||
"mobileclip_s2_image_opset18_rgba_sim.onnx",
|
||||
"mobileclip_s2_text_int32.onnx",
|
||||
"yolov5s_face_640_640_dynamic.onnx",
|
||||
];
|
||||
|
||||
for (const modelName of oldModelNames) {
|
||||
const modelPath = modelSavePath(modelName);
|
||||
if (existsSync(modelPath)) {
|
||||
log.info(`Removing unused ML model at ${modelPath}`);
|
||||
await fs.rm(modelPath);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/** Return the path where the given {@link modelName} is meant to be saved */
|
||||
const modelSavePath = (modelName: string) =>
|
||||
path.join(userDataPath(), "models", modelName);
|
||||
@@ -202,8 +231,8 @@ const createInferenceSession = async (modelPath: string) => {
|
||||
};
|
||||
|
||||
const cachedCLIPImageSession = makeCachedInferenceSession(
|
||||
"mobileclip_s2_image_opset18_rgba_sim.onnx",
|
||||
143093992 /* 143 MB */,
|
||||
"mobileclip_s2_image_opset18_rgba_opt.onnx",
|
||||
143099752 /* 143 MB */,
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -228,8 +257,8 @@ export const computeCLIPImageEmbedding = async (
|
||||
};
|
||||
|
||||
const cachedCLIPTextSession = makeCachedInferenceSession(
|
||||
"mobileclip_s2_text_int32.onnx",
|
||||
253895600 /* 253 MB */,
|
||||
"mobileclip_s2_text_opset18_quant.onnx",
|
||||
67144712 /* 67 MB */,
|
||||
);
|
||||
|
||||
let _tokenizer: Tokenizer | undefined;
|
||||
@@ -273,17 +302,21 @@ export const computeCLIPTextEmbeddingIfAvailable = async (text: string) => {
|
||||
};
|
||||
|
||||
const cachedFaceDetectionSession = makeCachedInferenceSession(
|
||||
"yolov5s_face_640_640_dynamic.onnx",
|
||||
30762872 /* 29 MB */,
|
||||
"yolov5s_face_opset18_rgba_opt.onnx",
|
||||
28952612 /* 29 MB */,
|
||||
);
|
||||
|
||||
/**
|
||||
* Face detection with the YOLO model and ONNX runtime.
|
||||
*/
|
||||
export const detectFaces = async (input: Float32Array) => {
|
||||
export const detectFaces = async (
|
||||
input: Uint8ClampedArray,
|
||||
inputShape: number[],
|
||||
) => {
|
||||
const session = await cachedFaceDetectionSession();
|
||||
const inputArray = new Uint8Array(input.buffer);
|
||||
const feeds = {
|
||||
input: new ort.Tensor("float32", input, [1, 3, 640, 640]),
|
||||
input: new ort.Tensor("uint8", inputArray, inputShape),
|
||||
};
|
||||
const t = Date.now();
|
||||
const results = await session.run(feeds);
|
||||
|
||||
@@ -109,6 +109,7 @@ export const sidebar = [
|
||||
collapsed: true,
|
||||
items: [
|
||||
{ text: "General", link: "/photos/faq/general" },
|
||||
{ text: "Installation", link: "/photos/faq/installing" },
|
||||
{
|
||||
text: "Export",
|
||||
link: "/photos/faq/export",
|
||||
@@ -172,6 +173,7 @@ export const sidebar = [
|
||||
collapsed: true,
|
||||
items: [
|
||||
{ text: "General", link: "/auth/faq/" },
|
||||
{ text: "Installation", link: "/auth/faq/installing" },
|
||||
{
|
||||
text: "Enteception",
|
||||
link: "/auth/faq/enteception/",
|
||||
|
||||
@@ -7,13 +7,14 @@ description: Frequently asked questions about Ente Auth
|
||||
|
||||
### How secure is Ente Auth?
|
||||
|
||||
All codes you backup via Ente is stored end-to-end encrypted. This means only
|
||||
you can access your codes. Our apps are open source and our cryptography has
|
||||
been externally audited.
|
||||
All codes you backup via Ente is stored with end-to-end encryption. This means
|
||||
only you can access your codes. Our apps are open source and our cryptography
|
||||
has been externally audited.
|
||||
|
||||
### How can I delete or edit codes?
|
||||
|
||||
You can delete or edit a code long press (or right click on desktop) on that item.
|
||||
You can delete or edit a code by long pressing (or right clicking on desktop) on
|
||||
that item.
|
||||
|
||||
### How can I support this project?
|
||||
|
||||
@@ -24,40 +25,43 @@ at [ente.io](https://ente.io).
|
||||
|
||||
You can enable FaceID lock under Settings → Security → Lockscreen.
|
||||
|
||||
### Why does the desktop and mobile app displays different code?
|
||||
### Why do the desktop and mobile apps display different codes?
|
||||
|
||||
Please verify that the time on both your mobile and desktop is same.
|
||||
Please verify that the time on both your mobile and desktop is the same.
|
||||
|
||||
The codes depend on time. If the time is the same on both browser and mobile,
|
||||
the codes you see will be the same.
|
||||
The codes depend on time. If the time is the same on both your browser and
|
||||
mobile, the codes you see will be the same.
|
||||
|
||||
Usually this discrepancy occurs because the time in your browser might be
|
||||
incorrect. In particular, multiple users who have reported that Firefox provides
|
||||
incorrect time when various privacy settings are enabled.
|
||||
Usually, this discrepancy occurs because the time in your browser might be
|
||||
incorrect. In particular, multiple users have reported that Firefox provides
|
||||
incorrect time when certain privacy settings are enabled.
|
||||
|
||||
### Can I access my codes on web?
|
||||
|
||||
You can access your codes on the web at [auth.ente.io](https://auth.ente.io).
|
||||
|
||||
### Does Ente Authenticator require an account?
|
||||
### Does Ente Auth require an account?
|
||||
|
||||
Answer: No, Ente Authenticator does not require an account. You can choose to
|
||||
use the app without backups if you prefer.
|
||||
No, Ente Auth does not require an account. You can choose to use the app without
|
||||
backups if you prefer.
|
||||
|
||||
### Can I use the Ente 2FA app on multiple devices and sync them?
|
||||
### Can I use Ente Auth on multiple devices and sync them?
|
||||
|
||||
Yes, you can download the Ente app on multiple devices and sync the codes,
|
||||
end-to-end encrypted.
|
||||
Yes, you can download Ente Auth on multiple devices and sync the codes with
|
||||
end-to-end encryption.
|
||||
|
||||
### What information about my codes is stored on Ente server?
|
||||
|
||||
Due to E2EE, the server doesn't know anything about the code. Everything is encrypted, including the tags, type, account, issuer, notes, and pinned or trash status, etc."
|
||||
Due to E2EE, the server doesn't know anything about your codes. Everything is
|
||||
encrypted, including the tags, type, account, issuer, notes, pinned or trash
|
||||
status, etc.
|
||||
|
||||
### What does it mean when I receive a message saying my current device is not powerful enough to verify my password?
|
||||
### What does it mean when I receive a message saying that my current device isn't powerful enough to verify my password?
|
||||
|
||||
This means that the parameters that were used to derive your master-key on your
|
||||
original device, are incompatible with your current device (likely because it's
|
||||
less powerful).
|
||||
|
||||
If you recover your account via your current device and reset the password, it
|
||||
will re-generate a key that will be compatible on both devices.
|
||||
If you recover your account using your current device and reset the password, a
|
||||
new key will be generated with different parameters. This new key will be
|
||||
equally strong and compatible with both devices.
|
||||
|
||||
92
docs/docs/auth/faq/installing.md
Normal file
@@ -0,0 +1,92 @@
|
||||
---
|
||||
title: Installing Ente Auth
|
||||
description: Steps to install Ente Auth
|
||||
---
|
||||
|
||||
# Android
|
||||
|
||||
Our Android apps are distributed over the following channels.
|
||||
|
||||
### PlayStore
|
||||
|
||||
You can install Auth directly from
|
||||
[PlayStore](https://play.google.com/store/apps/details?id=io.ente.auth).
|
||||
|
||||
### F-Droid
|
||||
|
||||
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
|
||||
> servers. You can donate to F-Droid [here](https://f-droid.org/en/donate).
|
||||
|
||||
### GitHub
|
||||
|
||||
Latest releases are built straight from the source and made available over
|
||||
[GitHub](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v4).
|
||||
|
||||
These builds will notify you whenever a new release is available and will help
|
||||
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.
|
||||
|
||||
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*`
|
||||
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/>
|
||||
|
||||
---
|
||||
|
||||
<br/>
|
||||
|
||||
# iOS
|
||||
|
||||
You can install Ente Auth on Apple devices from
|
||||
[AppStore](https://apps.apple.com/us/app/ente-auth/id6444121398).
|
||||
|
||||
<br/>
|
||||
|
||||
---
|
||||
|
||||
<br/>
|
||||
|
||||
# Desktop
|
||||
|
||||
You can grab the latest version of Ente Auth for Mac, Windows and Linux from
|
||||
[GitHub](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v4).
|
||||
|
||||
<br/>
|
||||
|
||||
---
|
||||
|
||||
<br/>
|
||||
|
||||
# Web
|
||||
|
||||
Latest versions of our web app are available at [auth.ente.io](https://auth.ente.io).
|
||||
|
||||
<br/>
|
||||
|
||||
---
|
||||
|
||||
<br/>
|
||||
|
||||
# CLI
|
||||
|
||||
Ente's CLI is distributed directly over
|
||||
[GitHub](https://github.com/ente-io/ente/releases?q=tag%3Acli-v0).
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
---
|
||||
title: Migrating from Authy
|
||||
description: Guide for importing your existing Authy 2FA tokens into Ente Auth
|
||||
@@ -213,7 +212,7 @@ If this didn't work, refer to
|
||||
|
||||
1. Open Ente Authenticator on your phone
|
||||
2. Log in to your account (if you haven't already), or press "Use without
|
||||
backups".
|
||||
backups".
|
||||
3. Click the add button in the bottom right of the app.
|
||||
4. Select "Scan a QR code" and scan the code from the browser.
|
||||
|
||||
|
||||
92
docs/docs/photos/faq/installing.md
Normal file
@@ -0,0 +1,92 @@
|
||||
---
|
||||
title: Installing Ente Photos
|
||||
description: Steps to install Ente Photos
|
||||
---
|
||||
|
||||
# Android
|
||||
|
||||
Our Android apps are distributed over the following channels.
|
||||
|
||||
### PlayStore
|
||||
|
||||
You can install Ente directly from
|
||||
[PlayStore](https://play.google.com/store/apps/details?id=io.ente.photos).
|
||||
|
||||
### F-Droid
|
||||
|
||||
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
|
||||
> servers. You can donate to F-Droid [here](https://f-droid.org/en/donate).
|
||||
|
||||
### GitHub
|
||||
|
||||
Latest releases are built straight from the source and made available over
|
||||
[GitHub](https://github.com/ente-io/ente/releases?q=tag%253Aphotos-v0).
|
||||
|
||||
These builds will notify you whenever a new release is available and will help
|
||||
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.
|
||||
|
||||
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*`
|
||||
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/>
|
||||
|
||||
---
|
||||
|
||||
<br/>
|
||||
|
||||
# iOS
|
||||
|
||||
You can install Ente on Apple devices from
|
||||
[AppStore](https://apps.apple.com/app/id1542026904).
|
||||
|
||||
<br/>
|
||||
|
||||
---
|
||||
|
||||
<br/>
|
||||
|
||||
# Desktop
|
||||
|
||||
You can grab the latest version of Ente for Mac, Windows and Linux from
|
||||
[ente.io/download/desktop](https://ente.io/download/desktop).
|
||||
|
||||
<br/>
|
||||
|
||||
---
|
||||
|
||||
<br/>
|
||||
|
||||
# Web
|
||||
|
||||
Latest versions of our web app are available at [web.ente.io](https://web.ente.io).
|
||||
|
||||
<br/>
|
||||
|
||||
---
|
||||
|
||||
<br/>
|
||||
|
||||
# CLI
|
||||
|
||||
Ente's CLI is distributed directly over
|
||||
[GitHub](https://github.com/ente-io/ente/releases?q=tag%3Acli-v0).
|
||||
@@ -71,6 +71,23 @@ not modify the original.
|
||||
> functionality within the app itself) for customers who intentionally wish to
|
||||
> modify their originals to reflect the associated metadata JSON.
|
||||
|
||||
As an example: suppose you have `flower.png`. When you export your library, you
|
||||
will end up with:
|
||||
|
||||
```
|
||||
flower.png
|
||||
metadata/flower.png.json
|
||||
```
|
||||
|
||||
Ente writes this JSON in the same format as Google Takeout so that if a tool
|
||||
supports Google Takeout import, it should be able to read the JSON written by
|
||||
Ente too
|
||||
|
||||
> One small difference is that, to avoid clutter, Ente puts the JSON in the
|
||||
> `metadata/` subfolder, while Google puts it next to the file.<br>
|
||||
>
|
||||
> <br>Ente itself will read it from either place.
|
||||
|
||||
### File creation time.
|
||||
|
||||
The photo's data will be preserved verbatim, however when it is written out to
|
||||
|
||||
@@ -26,3 +26,10 @@ browser APIs instead of going via the file system.
|
||||
Note that the app will detect and skip over already uploaded items into an
|
||||
album, so dragging and dropping the same folder again to upload to the same
|
||||
album is fine.
|
||||
|
||||
> The underlying reason for this crash seeems to be the
|
||||
> [4GB RAM usage limit for Electron apps](https://www.electronjs.org/blog/v8-memory-cage).
|
||||
> We try to upload large videos by streaming them instead of reading them all in
|
||||
> at once, but in some cases, even the streaming them seems to exceed the 4GB
|
||||
> limit. We're trying to understand when this happens a bit more precisely, and
|
||||
> if required, reimplement our uploads in a different way to avoid these.
|
||||
|
||||
22
infra/ml/.gitignore
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
# Python-generated files
|
||||
__pycache__/
|
||||
*.py[oc]
|
||||
build/
|
||||
dist/
|
||||
wheels/
|
||||
*.egg-info
|
||||
|
||||
# Virtual environments
|
||||
.venv
|
||||
|
||||
# Models
|
||||
*/onnx_models/
|
||||
*.pt
|
||||
*.onnx
|
||||
*.tflite
|
||||
|
||||
# Imported repos
|
||||
CLIP/mobileclip_repo/
|
||||
|
||||
# Data
|
||||
data/flickr8k_captions.txt
|
||||
1
infra/ml/.python-version
Normal file
@@ -0,0 +1 @@
|
||||
3.12
|
||||
1288
infra/ml/CLIP/mobileclip_onnx.ipynb
Normal file
19
infra/ml/README.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# Ente ML playground
|
||||
|
||||
This is a central place to keep track of any (Python) code used for prepping our ML models. The purpose of storing it here is to have some kind of version control over the alterations made to the models.
|
||||
|
||||
Most of the code is in [Jupyter Notebooks](https://jupyter.org/), which facilitates quick interation and good documentation.
|
||||
|
||||
## Running any notebook
|
||||
|
||||
In case you're using VSCode, make sure you've installed the [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) extension.
|
||||
|
||||
1. [Install uv](https://docs.astral.sh/uv/getting-started/installation/)
|
||||
2. Run `uv sync`
|
||||
3. Run `uv venv`
|
||||
4. In any notebook, make sure to select the virtual environment kernel from `.venv/bin/python` in the top (right corner on VSCode)
|
||||
|
||||
## Notebooks and git
|
||||
|
||||
Please make sure to always clear output data inside a notebook before committing changes to git.
|
||||
Jupyter notebooks are known to not always work nicely with Git versioning control when there is output in them.
|
||||
0
infra/ml/YOLOv5Face/pytorch_weights/.gitkeep
Normal file
999
infra/ml/YOLOv5Face/yoloface_onnx.ipynb
Normal file
@@ -0,0 +1,999 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Prepping YOLOv5Face model for use in Ente\n",
|
||||
"\n",
|
||||
"[Paper](https://arxiv.org/abs/2105.12931) | [Github](https://github.com/deepcam-cn/yolov5-face)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Setting up Pytorch weights and source code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Please manually put the Pytorch .pt weights in the `pytorch_weights` directory. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"model_weights_path = \"pytorch_weights/yolov5s_face.pt\"\n",
|
||||
"models_path = \"onnx_models/\""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"!mkdir yoloface_repo\n",
|
||||
"%cd yoloface_repo\n",
|
||||
"!git clone https://github.com/deepcam-cn/yolov5-face.git\n",
|
||||
"%cd ..\n",
|
||||
"!cp -r yoloface_repo/yolov5-face/models/ models/\n",
|
||||
"!cp -r yoloface_repo/yolov5-face/utils/ utils/\n",
|
||||
"!rm -rf yoloface_repo"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Imports"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Libraries\n",
|
||||
"import torch\n",
|
||||
"import torch.nn as nn\n",
|
||||
"from PIL import Image\n",
|
||||
"import json\n",
|
||||
"import numpy as np\n",
|
||||
"import onnx\n",
|
||||
"import onnxruntime as ort\n",
|
||||
"print(ort.__version__)\n",
|
||||
"\n",
|
||||
"# Source code\n",
|
||||
"from models.common import Conv, ShuffleV2Block\n",
|
||||
"from models.experimental import attempt_load\n",
|
||||
"from utils.activations import Hardswish, SiLU\n",
|
||||
"from utils.general import set_logging, check_img_size"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Export to ONNX"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"onnx_opset = 18\n",
|
||||
"img_size = [640, 640]\n",
|
||||
"batch_size = 1\n",
|
||||
"dynamic_shapes = False\n",
|
||||
"\n",
|
||||
"# Load PyTorch model\n",
|
||||
"model = attempt_load(\n",
|
||||
" model_weights_path, map_location=torch.device(\"cpu\")\n",
|
||||
") # load FP32 model\n",
|
||||
"delattr(model.model[-1], \"anchor_grid\")\n",
|
||||
"model.model[-1].anchor_grid = [\n",
|
||||
" torch.zeros(1)\n",
|
||||
"] * 3 # nl=3 number of detection layers\n",
|
||||
"model.model[-1].export_cat = True\n",
|
||||
"model.eval()\n",
|
||||
"labels = model.names\n",
|
||||
"\n",
|
||||
"# Checks\n",
|
||||
"gs = int(max(model.stride)) # grid size (max stride)\n",
|
||||
"img_size = [\n",
|
||||
" check_img_size(x, gs) for x in img_size\n",
|
||||
"] # verify img_size are gs-multiples\n",
|
||||
"\n",
|
||||
"# Test input\n",
|
||||
"img = torch.zeros(batch_size, 3, *img_size)\n",
|
||||
"\n",
|
||||
"# Update model\n",
|
||||
"for k, m in model.named_modules():\n",
|
||||
" m._non_persistent_buffers_set = set() # pytorch 1.6.0 compatibility\n",
|
||||
" if isinstance(m, Conv): # assign export-friendly activations\n",
|
||||
" if isinstance(m.act, nn.Hardswish):\n",
|
||||
" m.act = Hardswish()\n",
|
||||
" elif isinstance(m.act, nn.SiLU):\n",
|
||||
" m.act = SiLU()\n",
|
||||
" if isinstance(m, ShuffleV2Block): # shufflenet block nn.SiLU\n",
|
||||
" for i in range(len(m.branch1)):\n",
|
||||
" if isinstance(m.branch1[i], nn.SiLU):\n",
|
||||
" m.branch1[i] = SiLU()\n",
|
||||
" for i in range(len(m.branch2)):\n",
|
||||
" if isinstance(m.branch2[i], nn.SiLU):\n",
|
||||
" m.branch2[i] = SiLU()\n",
|
||||
"y = model(img) # dry run\n",
|
||||
"\n",
|
||||
"# ONNX export\n",
|
||||
"print(\"\\nStarting ONNX export with onnx %s...\" % onnx.__version__)\n",
|
||||
"onnx_model_export_path = models_path + model_weights_path.replace(\".pt\", \".onnx\").split('/')[-1]\n",
|
||||
"model.fuse() \n",
|
||||
"input_names = [\"input\"]\n",
|
||||
"output_names = [\"output\"]\n",
|
||||
"torch.onnx.export(\n",
|
||||
" model,\n",
|
||||
" img,\n",
|
||||
" onnx_model_export_path,\n",
|
||||
" verbose=False,\n",
|
||||
" opset_version=onnx_opset,\n",
|
||||
" input_names=input_names,\n",
|
||||
" output_names=output_names,\n",
|
||||
" dynamic_axes=(\n",
|
||||
" {\"input\": {0: \"batch\"}, \"output\": {0: \"batch\"}} if dynamic_shapes else None\n",
|
||||
" ),\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"# Checks\n",
|
||||
"onnx_model = onnx.load(onnx_model_export_path) # load onnx model\n",
|
||||
"onnx.checker.check_model(onnx_model) # check onnx model\n",
|
||||
"\n",
|
||||
"# onnx infer\n",
|
||||
"providers = [\"CPUExecutionProvider\"]\n",
|
||||
"session = ort.InferenceSession(onnx_model_export_path, providers=providers)\n",
|
||||
"im = img.cpu().numpy().astype(np.float32) # torch to numpy\n",
|
||||
"y_onnx = session.run(\n",
|
||||
" [session.get_outputs()[0].name], {session.get_inputs()[0].name: im}\n",
|
||||
")[0]\n",
|
||||
"print(\"pred's shape is \", y_onnx.shape)\n",
|
||||
"print(\"max(|torch_pred - onnx_pred|) =\", abs(y.cpu().numpy() - y_onnx).max())"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"!rm -rf models/\n",
|
||||
"!rm -rf utils/"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Altering ONNX model"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Add preprocessing inside model"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from onnxruntime_extensions.tools.pre_post_processing import PrePostProcessor, create_named_value, Resize, ImageBytesToFloat, Unsqueeze, Debug, LetterBox, ChannelsLastToChannelsFirst"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"inputs = [create_named_value(\"input_to_preprocess\", onnx.TensorProto.UINT8, [\"H\", \"W\", \"C\"])]\n",
|
||||
"\n",
|
||||
"pipeline = PrePostProcessor(inputs, onnx_opset)\n",
|
||||
"\n",
|
||||
"pipeline.add_pre_processing(\n",
|
||||
" [\n",
|
||||
" Resize(640, layout= \"HWC\", policy=\"not_larger\"), # Resize to 640, maintaining aspect ratio and letting largest dimension not exceed 640 (so smaller dimension will be <= 640)\n",
|
||||
" # Debug(),\n",
|
||||
" LetterBox((640, 640), layout=\"HWC\", fill_value=114), # Add padding to make the image actually always 640x640,\n",
|
||||
" ChannelsLastToChannelsFirst(), # Convert to CHW\n",
|
||||
" # Debug(),\n",
|
||||
" ImageBytesToFloat(), # Convert to float in range 0..1 by dividing uint8 values by 255\n",
|
||||
" # Debug(),\n",
|
||||
" Unsqueeze([0]), # add batch, CHW --> 1CHW\n",
|
||||
" # Debug(),\n",
|
||||
" ]\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"# pipeline.add_post_processing()\n",
|
||||
"onnx_model_prepro = pipeline.run(onnx_model)\n",
|
||||
"onnx.checker.check_model(onnx_model_prepro)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"To debug and visually inspect the preprocessing, please uncomment the `Debug()` statements in above block and run it again, and then uncomment and run the code in the block below:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# onnx.save(onnx_model_prepro, \"yolov5s_face_prepro.onnx\")\n",
|
||||
"\n",
|
||||
"# image_singapore = Image.open(\"../data/singapore.jpg\").convert('RGB')\n",
|
||||
"# image_singapore_onnx = np.array(image_singapore)\n",
|
||||
"# print(image_singapore_onnx.shape)\n",
|
||||
"# print(type(image_singapore_onnx))\n",
|
||||
"# print(image_singapore_onnx.dtype)\n",
|
||||
"\n",
|
||||
"# ort_session = ort.InferenceSession(\"yolov5s_face_prepro.onnx\")\n",
|
||||
"# test = ort_session.run(None, {\"input_to_preprocess\": image_singapore_onnx})\n",
|
||||
"\n",
|
||||
"# preprocessed = test[4]\n",
|
||||
"# print(preprocessed.shape)\n",
|
||||
"# print(type(preprocessed))\n",
|
||||
"\n",
|
||||
"# # import matplotlib#.pyplot as plt\n",
|
||||
"# from IPython.display import display\n",
|
||||
"# # matplotlib.use('TkAgg')\n",
|
||||
"\n",
|
||||
"# displayable_array = preprocessed.reshape(3, 640, 640).transpose((1, 2, 0))\n",
|
||||
"# # Display the image\n",
|
||||
"# # matplotlib.pyplot.imshow(displayable_array)\n",
|
||||
"# # matplotlib.pyplot.axis('off') \n",
|
||||
"# # matplotlib.pyplot.show()\n",
|
||||
"# display(Image.fromarray((displayable_array * 255).astype(np.uint8)))\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Add slice operator for use of RGBA input"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Create a new input with flexible channel dimension\n",
|
||||
"new_input = onnx.helper.make_tensor_value_info(\n",
|
||||
" name=\"input\",\n",
|
||||
" elem_type=onnx.TensorProto.UINT8,\n",
|
||||
" shape=[\"H\", \"W\", \"C\"], \n",
|
||||
")\n",
|
||||
"\n",
|
||||
"# Create constant tensors for starts, ends, and axes and use them to create a Slice node\n",
|
||||
"starts_tensor = onnx.helper.make_tensor(\n",
|
||||
" name=\"starts\",\n",
|
||||
" data_type=onnx.TensorProto.INT64,\n",
|
||||
" dims=[1],\n",
|
||||
" vals=np.array([0], dtype=np.int64)\n",
|
||||
")\n",
|
||||
"ends_tensor = onnx.helper.make_tensor(\n",
|
||||
" name=\"ends\",\n",
|
||||
" data_type=onnx.TensorProto.INT64,\n",
|
||||
" dims=[1],\n",
|
||||
" vals=np.array([3], dtype=np.int64)\n",
|
||||
")\n",
|
||||
"axes_tensor = onnx.helper.make_tensor(\n",
|
||||
" name=\"axes\",\n",
|
||||
" data_type=onnx.TensorProto.INT64,\n",
|
||||
" dims=[1],\n",
|
||||
" vals=np.array([2], dtype=np.int64)\n",
|
||||
")\n",
|
||||
"slice_node = onnx.helper.make_node(\n",
|
||||
" \"Slice\",\n",
|
||||
" inputs=[\"input\", \"starts\", \"ends\", \"axes\"],\n",
|
||||
" outputs=[\"sliced_input\"],\n",
|
||||
" name=\"slice_rgba_input_node\",\n",
|
||||
")\n",
|
||||
"# Combine initializers\n",
|
||||
"initializers = [starts_tensor, ends_tensor, axes_tensor] + list(onnx_model_prepro.graph.initializer)\n",
|
||||
"\n",
|
||||
"# Get the name of the original input\n",
|
||||
"original_input_name = onnx_model_prepro.graph.input[0].name\n",
|
||||
"\n",
|
||||
"# Make new graph by adding the new input and Slice node to the old graph\n",
|
||||
"graph = onnx.helper.make_graph(\n",
|
||||
" [slice_node] + list(onnx_model_prepro.graph.node), # Prepend Slice node to existing nodes\n",
|
||||
" onnx_model_prepro.graph.name,\n",
|
||||
" [new_input] + list(onnx_model_prepro.graph.input)[1:], # Replace first input, keep others\n",
|
||||
" list(onnx_model_prepro.graph.output),\n",
|
||||
" initializer=initializers,\n",
|
||||
" value_info=onnx_model_prepro.graph.value_info,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"# Create the new model\n",
|
||||
"onnx_model_rgba = onnx.helper.make_model(\n",
|
||||
" graph,\n",
|
||||
" opset_imports=[onnx.helper.make_opsetid(\"\", onnx_opset)]\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"# Update the input names in the rest of the model\n",
|
||||
"for node in onnx_model_rgba.graph.node:\n",
|
||||
" for i, input_name in enumerate(node.input):\n",
|
||||
" if input_name == original_input_name:\n",
|
||||
" node.input[i] = \"sliced_input\"\n",
|
||||
"\n",
|
||||
"# Save the new model\n",
|
||||
"onnx.checker.check_model(onnx_model_rgba)\n",
|
||||
"onnx_model_rgba_path = onnx_model_export_path[:-5] + \"_rgba.onnx\"\n",
|
||||
"onnx.save(onnx_model_rgba, onnx_model_rgba_path)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# image = Image.open(\"../data/man.jpeg\").convert('RGBA')\n",
|
||||
"# image_onnx = np.array(image)\n",
|
||||
"# print(image_onnx.shape)\n",
|
||||
"# print(type(image_onnx))\n",
|
||||
"# print(image_onnx.dtype)\n",
|
||||
"\n",
|
||||
"# ort_session = ort.InferenceSession(\"yolov5s_face_rgba.onnx\")\n",
|
||||
"# test = ort_session.run(None, {\"input\": image_onnx})\n",
|
||||
"# print(test[0].shape)\n",
|
||||
"# scores_output = test[0][:,:,4]\n",
|
||||
"# print(f\"Highest score: {scores_output.max()}\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Add post-processing inside the model"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Let's first rename the output of the model so we can name the post-processed output as `output`.\n",
|
||||
"Then we have to split `[1, 25200, 16]` into `[1, 25200, 4]`, `[1, 25200, 1]`, `[1, 25200, 11]` (i.e. `[1, detections, bbox]`, `[1, detections, score]`, `[1, detections, landmarks]`) named `boxes`, `scores`, `masks`."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Add a Split operator at the end so that it be used with the SelectBestBoundingBoxesByNMS operator\n",
|
||||
"num_det = 25200\n",
|
||||
"graph = onnx_model_rgba.graph\n",
|
||||
"\n",
|
||||
"# Let's first rename the output of the model so we can name the post-processed output as `output`\n",
|
||||
"for node in onnx_model_rgba.graph.node:\n",
|
||||
" for i, output_name in enumerate(node.output):\n",
|
||||
" if output_name == \"output\":\n",
|
||||
" node.output[i] = \"og_output\"\n",
|
||||
"og_output = onnx.helper.make_tensor_value_info(\n",
|
||||
" name=\"og_output\",\n",
|
||||
" elem_type=onnx.TensorProto.FLOAT,\n",
|
||||
" shape=[1, num_det, 16], \n",
|
||||
")\n",
|
||||
"\n",
|
||||
"# Create the split node\n",
|
||||
"boxes_output = onnx.helper.make_tensor_value_info(\n",
|
||||
" name=\"boxes_unsqueezed\",\n",
|
||||
" elem_type=onnx.TensorProto.FLOAT,\n",
|
||||
" shape=[1, num_det, 4], \n",
|
||||
")\n",
|
||||
"scores_output = onnx.helper.make_tensor_value_info(\n",
|
||||
" name=\"scores_unsqueezed\",\n",
|
||||
" elem_type=onnx.TensorProto.FLOAT,\n",
|
||||
" shape=[1, num_det, 1], \n",
|
||||
")\n",
|
||||
"masks_output = onnx.helper.make_tensor_value_info(\n",
|
||||
" name=\"masks_unsqueezed\",\n",
|
||||
" elem_type=onnx.TensorProto.FLOAT,\n",
|
||||
" shape=[1, num_det, 11], \n",
|
||||
")\n",
|
||||
"splits_tensor = onnx.helper.make_tensor(\n",
|
||||
" name=\"splits\",\n",
|
||||
" data_type=onnx.TensorProto.INT64,\n",
|
||||
" dims=[3],\n",
|
||||
" vals=np.array([4, 1, 11], dtype=np.int64)\n",
|
||||
")\n",
|
||||
"split_node = onnx.helper.make_node(\n",
|
||||
" \"Split\",\n",
|
||||
" inputs=[\"og_output\", \"splits\"],\n",
|
||||
" outputs=[\"boxes_unsqueezed\", \"scores_unsqueezed\", \"masks_unsqueezed\"],\n",
|
||||
" name=\"split_og_output\",\n",
|
||||
" axis=2,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"# Combine initializers\n",
|
||||
"initializers = list(graph.initializer) + [splits_tensor]\n",
|
||||
"\n",
|
||||
"# Make new graph by adding the new outputs and Split node to the old graph\n",
|
||||
"graph = onnx.helper.make_graph(\n",
|
||||
" list(graph.node) + [split_node], # Append split node to existing nodes\n",
|
||||
" graph.name,\n",
|
||||
" list(graph.input), \n",
|
||||
" [boxes_output, scores_output, masks_output],\n",
|
||||
" initializer=initializers,\n",
|
||||
" value_info=graph.value_info,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"# Create the new model\n",
|
||||
"onnx_model_split = onnx.helper.make_model(\n",
|
||||
" graph,\n",
|
||||
" opset_imports=[onnx.helper.make_opsetid(\"\", onnx_opset)]\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"# Save the new model\n",
|
||||
"onnx.checker.check_model(onnx_model_split)\n",
|
||||
"onnx_model_split_path = onnx_model_export_path[:-5] + \"_split.onnx\"\n",
|
||||
"onnx.save(onnx_model_split, onnx_model_split_path)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Now we can run NMS on these splitted outputs using `NonMaxSuppression` operator"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"num_det = 25200\n",
|
||||
"graph = onnx_model_split.graph\n",
|
||||
"nodes = list(graph.node)\n",
|
||||
"outputs = list(graph.output)\n",
|
||||
"initializers = list(graph.initializer)\n",
|
||||
"original_output = graph.output[0]\n",
|
||||
"\n",
|
||||
"# Create the Transpose node for the scores (since NMS requires the scores to be in the middle dimension for some reason)\n",
|
||||
"transpose_node_score = onnx.helper.make_node(\n",
|
||||
" \"Transpose\",\n",
|
||||
" inputs=[\"scores_unsqueezed\"],\n",
|
||||
" outputs=[\"scores_transposed\"],\n",
|
||||
" name=\"transpose_scores\",\n",
|
||||
" perm=[0, 2, 1],\n",
|
||||
")\n",
|
||||
"nodes.append(transpose_node_score)\n",
|
||||
"\n",
|
||||
"# Create the NMS node\n",
|
||||
"nms_indices = onnx.helper.make_tensor_value_info(\"nms_indices\", onnx.TensorProto.INT64, shape=[\"detections\", 3])\n",
|
||||
"max_output = onnx.helper.make_tensor(\"max_output\",onnx.TensorProto.INT64, [1], np.array([100], dtype=np.int64))\n",
|
||||
"iou_threshold = onnx.helper.make_tensor(\"iou_threshold\",onnx.TensorProto.FLOAT, [1], np.array([0.4], dtype=np.float32))\n",
|
||||
"score_threshold = onnx.helper.make_tensor(\"score_threshold\",onnx.TensorProto.FLOAT, [1], np.array([0.6], dtype=np.float32))\n",
|
||||
"initializers = initializers + [max_output, iou_threshold, score_threshold]\n",
|
||||
"nms_node = onnx.helper.make_node(\n",
|
||||
" \"NonMaxSuppression\",\n",
|
||||
" inputs=[\"boxes_unsqueezed\", \"scores_transposed\", \"max_output\", \"iou_threshold\", \"score_threshold\"],\n",
|
||||
" outputs=[\"nms_indices\"],\n",
|
||||
" name=\"perform_nms\",\n",
|
||||
" center_point_box=1,\n",
|
||||
")\n",
|
||||
"nodes.append(nms_node)\n",
|
||||
"outputs.append(nms_indices)\n",
|
||||
"\n",
|
||||
"# Make new graph by adding the new outputs and Split node to the old graph\n",
|
||||
"graph = onnx.helper.make_graph(\n",
|
||||
" nodes,\n",
|
||||
" graph.name,\n",
|
||||
" list(graph.input), \n",
|
||||
" outputs,\n",
|
||||
" initializer=initializers,\n",
|
||||
" value_info=graph.value_info,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"# Create the new model\n",
|
||||
"onnx_model_nms = onnx.helper.make_model(\n",
|
||||
" graph,\n",
|
||||
" opset_imports=[onnx.helper.make_opsetid(\"\", onnx_opset)]\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"# Save the new model\n",
|
||||
"onnx.checker.check_model(onnx_model_nms)\n",
|
||||
"onnx_model_nms_path = onnx_model_export_path[:-5] + \"_nms.onnx\"\n",
|
||||
"onnx.save(onnx_model_nms, onnx_model_nms_path)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# image = Image.open(\"../data/man.jpeg\").convert('RGBA')\n",
|
||||
"# image_onnx = np.array(image)\n",
|
||||
"\n",
|
||||
"# ort_session = ort.InferenceSession(\"yolov5s_face_nms.onnx\")\n",
|
||||
"# test = ort_session.run(None, {\"input\": image_onnx})\n",
|
||||
"# print(test[3].shape)\n",
|
||||
"# print(test[3])\n",
|
||||
"# print(test[1][0, 24129, 0])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Now we need to add some Squeeze, Slice and Gather nodes so handle the NMS given indices properly. The goal is that the final output is a very simple array of shape `(detections, 16)` of only the relevant detections."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"num_det = 25200\n",
|
||||
"graph = onnx_model_nms.graph\n",
|
||||
"nodes = list(graph.node)\n",
|
||||
"outputs = list(graph.output)\n",
|
||||
"initializers = list(graph.initializer)\n",
|
||||
"original_output = graph.output[0]\n",
|
||||
"\n",
|
||||
"# Create Slide node to slice the NMS indices from (detections, 3) to (detections, 1) by taking the third column\n",
|
||||
"sliced_indices = onnx.helper.make_tensor_value_info(\"sliced_indices\", onnx.TensorProto.INT64, shape=[\"detections\", 1])\n",
|
||||
"outputs.append(sliced_indices)\n",
|
||||
"starts_slice_tensor = onnx.helper.make_tensor(\n",
|
||||
" name=\"starts_slice_tensor\",\n",
|
||||
" data_type=onnx.TensorProto.INT64,\n",
|
||||
" dims=[1],\n",
|
||||
" vals=np.array([2], dtype=np.int64)\n",
|
||||
")\n",
|
||||
"ends_slice_tensor = onnx.helper.make_tensor(\n",
|
||||
" name=\"ends_slice_tensor\",\n",
|
||||
" data_type=onnx.TensorProto.INT64,\n",
|
||||
" dims=[1],\n",
|
||||
" vals=np.array([3], dtype=np.int64)\n",
|
||||
")\n",
|
||||
"axes_slice_tensor = onnx.helper.make_tensor(\n",
|
||||
" name=\"axes_slice_tensor\",\n",
|
||||
" data_type=onnx.TensorProto.INT64,\n",
|
||||
" dims=[1],\n",
|
||||
" vals=np.array([1], dtype=np.int64)\n",
|
||||
")\n",
|
||||
"initializers = initializers + [starts_slice_tensor, ends_slice_tensor, axes_slice_tensor]\n",
|
||||
"slice_node = onnx.helper.make_node(\n",
|
||||
" \"Slice\",\n",
|
||||
" inputs=[\"nms_indices\", \"starts_slice_tensor\", \"ends_slice_tensor\", \"axes_slice_tensor\"],\n",
|
||||
" outputs=[\"sliced_indices\"],\n",
|
||||
" name=\"slice_nms_indices\",\n",
|
||||
")\n",
|
||||
"nodes.append(slice_node)\n",
|
||||
"\n",
|
||||
"# Create Squeeze node to squeeze the sliced indices\n",
|
||||
"squeezed_indices = onnx.helper.make_tensor_value_info(\"squeezed_indices\", onnx.TensorProto.INT64, shape=[\"detections\"])\n",
|
||||
"outputs.append(squeezed_indices)\n",
|
||||
"squeeze_slice_tensor = onnx.helper.make_tensor(\"squeeze_slice_axis\",onnx.TensorProto.INT64, [1], np.array([1], dtype=np.int64))\n",
|
||||
"initializers.append(squeeze_slice_tensor)\n",
|
||||
"squeeze_slice_node = onnx.helper.make_node(\n",
|
||||
" \"Squeeze\",\n",
|
||||
" inputs=[\"sliced_indices\", \"squeeze_slice_axis\"],\n",
|
||||
" outputs=[\"squeezed_indices\"],\n",
|
||||
" name=\"squeeze_sliced_indices\",\n",
|
||||
")\n",
|
||||
"nodes.append(squeeze_slice_node)\n",
|
||||
"\n",
|
||||
"# Create Squeeze node to squeeze the original output\n",
|
||||
"squeezed_output = onnx.helper.make_tensor_value_info(\"squeezed_output\", onnx.TensorProto.FLOAT, shape=[25200, 16])\n",
|
||||
"outputs.append(squeezed_output)\n",
|
||||
"squeeze_tensor = onnx.helper.make_tensor(\"squeeze_axis\",onnx.TensorProto.INT64, [1], np.array([0], dtype=np.int64))\n",
|
||||
"initializers.append(squeeze_tensor)\n",
|
||||
"squeeze_node = onnx.helper.make_node(\n",
|
||||
" \"Squeeze\",\n",
|
||||
" inputs=[\"og_output\", \"squeeze_axis\"],\n",
|
||||
" outputs=[\"squeezed_output\"],\n",
|
||||
" name=\"squeeze_output\",\n",
|
||||
")\n",
|
||||
"nodes.append(squeeze_node)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"# Create Gather node to gather the relevant NMS indices from the original output\n",
|
||||
"postpro_output = onnx.helper.make_tensor_value_info(\"output\", onnx.TensorProto.FLOAT, shape=[\"detections\", 16])\n",
|
||||
"outputs.append(postpro_output)\n",
|
||||
"gather_node = onnx.helper.make_node(\n",
|
||||
" \"Gather\",\n",
|
||||
" inputs=[\"squeezed_output\", \"squeezed_indices\"],\n",
|
||||
" outputs=[\"output\"],\n",
|
||||
" name=\"gather_output\",\n",
|
||||
")\n",
|
||||
"nodes.append(gather_node)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"# Make the new graph\n",
|
||||
"graph = onnx.helper.make_graph(\n",
|
||||
" nodes,\n",
|
||||
" graph.name,\n",
|
||||
" list(graph.input), \n",
|
||||
" [postpro_output],\n",
|
||||
" initializer=initializers,\n",
|
||||
" value_info=graph.value_info,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"# Create the new model\n",
|
||||
"onnx_model_prepostpro = onnx.helper.make_model(\n",
|
||||
" graph,\n",
|
||||
" opset_imports=[onnx.helper.make_opsetid(\"\", onnx_opset)]\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"# Save the new model\n",
|
||||
"onnx.checker.check_model(onnx_model_prepostpro)\n",
|
||||
"onnx_model_prepostpro_path = onnx_model_export_path[:-5] + \"_prepostpro.onnx\"\n",
|
||||
"onnx.save(onnx_model_prepostpro, onnx_model_prepostpro_path)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 15,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# image = Image.open(\"../data/people.jpeg\").convert('RGBA')\n",
|
||||
"# image_onnx = np.array(image)\n",
|
||||
"\n",
|
||||
"# ort_session = ort.InferenceSession(\"yolov5s_face_prepostpro.onnx\")\n",
|
||||
"# test = ort_session.run(None, {\"input\": image_onnx})\n",
|
||||
"# test[0].shape"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Optimize model"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 16,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# define path og model and sim model\n",
|
||||
"onnx_model_sim_path = onnx_model_export_path[:-5] + f\"_opset{onnx_opset}_rgba_sim.onnx\""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Simplify the model"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"!onnxsim {onnx_model_prepostpro_path} {onnx_model_sim_path}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 18,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# !onnxsim yolov5s_face_prepostpro.onnx yolov5s_face_opset18_rgba_sim.onnx"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Optimize the graph"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 19,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"opt_sess_options = ort.SessionOptions()\n",
|
||||
"\n",
|
||||
"opt_sess_options.graph_optimization_level = ort.GraphOptimizationLevel.ORT_DISABLE_ALL\n",
|
||||
"opt_sess_options.graph_optimization_level = ort.GraphOptimizationLevel.ORT_ENABLE_BASIC\n",
|
||||
"\n",
|
||||
"onnx_model_opt_path = onnx_model_export_path[:-5] + f\"_opset{onnx_opset}_rgba_opt.onnx\"\n",
|
||||
"opt_sess_options.optimized_model_filepath = onnx_model_opt_path\n",
|
||||
"\n",
|
||||
"opt_session = ort.InferenceSession(onnx_model_sim_path, opt_sess_options)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Add metadata to model\n",
|
||||
"\n",
|
||||
"https://onnx.ai/onnx/intro/python.html#opset-and-metadata"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 20,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"new_yolo_face_model = onnx.load(onnx_model_opt_path)\n",
|
||||
"new_yolo_face_model.producer_name = \"EnteYOLOv5Face\"\n",
|
||||
"new_yolo_face_model.doc_string = \"YOLOv5 Face detector with built-in pre- and post-processing. Accepts both RGB and RGBA raw bytes input (uint8) in HWC format. Outputs the relevant detections in the format (detections, 16) where the first 4 values are the bounding box coordinates, the fifth is the confidence score, and the rest are the landmarks.\"\n",
|
||||
"new_yolo_face_model.graph.doc_string = \"\"\n",
|
||||
"new_yolo_face_model.graph.name = \"SliceRGB+Resize+LetterBox+ToFloat+Unsqueeze+YOLOv5Face+NMS+Slice+Gather\"\n",
|
||||
"onnx.save(new_yolo_face_model, onnx_model_opt_path)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 22,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"!rm {onnx_model_export_path}\n",
|
||||
"!rm {onnx_model_rgba_path}\n",
|
||||
"!rm {onnx_model_split_path}\n",
|
||||
"!rm {onnx_model_nms_path}\n",
|
||||
"!rm {onnx_model_prepostpro_path}\n",
|
||||
"!rm {onnx_model_sim_path}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Tune some settings"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 23,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# from tqdm import tqdm\n",
|
||||
"# import time"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 24,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# image = Image.open(\"../data/people.jpeg\").convert('RGBA')\n",
|
||||
"# image_onnx = np.array(image)\n",
|
||||
"# time_test_size = 500\n",
|
||||
"\n",
|
||||
"# sess_options1 = ort.SessionOptions()\n",
|
||||
"# sess_options1.graph_optimization_level = ort.GraphOptimizationLevel.ORT_ENABLE_EXTENDED\n",
|
||||
"# # sess_options.enable_profiling = True\n",
|
||||
"# # sess_options.log_severity_level = 0 # Verbose\n",
|
||||
"# sess_options1.execution_mode = ort.ExecutionMode.ORT_SEQUENTIAL\n",
|
||||
"# ort_session1 = ort.InferenceSession(onnx_model_opt_path, sess_options1)\n",
|
||||
"\n",
|
||||
"# begin_time_1 = time.time()\n",
|
||||
"# for i in tqdm(range(time_test_size)):\n",
|
||||
"# _ = ort_session1.run(None, {\"input\": image_onnx})\n",
|
||||
"# end_time_1 = time.time()\n",
|
||||
"# time_1 = end_time_1 - begin_time_1\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"# sess_options2 = ort.SessionOptions()\n",
|
||||
"# sess_options2.graph_optimization_level = ort.GraphOptimizationLevel.ORT_ENABLE_EXTENDED\n",
|
||||
"# # sess_options.enable_profiling = True\n",
|
||||
"# # sess_options.log_severity_level = 0 # Verbose\n",
|
||||
"# sess_options2.inter_op_num_threads = 4\n",
|
||||
"# # sess_options2.intra_op_num_threads = 4\n",
|
||||
"# sess_options2.execution_mode = ort.ExecutionMode.ORT_PARALLEL\n",
|
||||
"# ort_session2 = ort.InferenceSession(onnx_model_opt_path, sess_options2, providers=[\"CPUExecutionProvider\"])\n",
|
||||
"\n",
|
||||
"# begin_time_2 = time.time()\n",
|
||||
"# for i in tqdm(range(time_test_size)):\n",
|
||||
"# _ = ort_session2.run(None, {\"input\": image_onnx})\n",
|
||||
"# end_time_2 = time.time()\n",
|
||||
"# time_2 = end_time_2 - begin_time_2\n",
|
||||
"\n",
|
||||
"# print(f\"Time for first execution: {time_1}\")\n",
|
||||
"# print(f\"Time for second execution: {time_2}\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"So lessons:\n",
|
||||
"1. Use sequential execution\n",
|
||||
"2. Use extended optimizations\n",
|
||||
"3. Number of inter op doesn't have significant impact\n",
|
||||
"4. Number of intra op doesn't have significant impact"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"One final test:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"image = Image.open(\"../data/man.jpeg\").convert('RGBA')\n",
|
||||
"imageWidth, imageHeight = image.size\n",
|
||||
"inputWidth, inputHeight = 640, 640\n",
|
||||
"print(imageWidth, imageHeight)\n",
|
||||
"image_onnx = np.array(image)\n",
|
||||
"\n",
|
||||
"sess_options1 = ort.SessionOptions()\n",
|
||||
"sess_options1.graph_optimization_level = ort.GraphOptimizationLevel.ORT_ENABLE_EXTENDED\n",
|
||||
"# sess_options.enable_profiling = True\n",
|
||||
"# sess_options.log_severity_level = 0 # Verbose\n",
|
||||
"# sess_options1.execution_mode = ort.ExecutionMode.ORT_SEQUENTIAL\n",
|
||||
"ort_session = ort.InferenceSession(onnx_model_opt_path)\n",
|
||||
"raw_detection = ort_session.run(None, {\"input\": image_onnx})[0][0]\n",
|
||||
"print(raw_detection.shape)\n",
|
||||
"raw_detection"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 69,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from PIL import Image, ImageDraw\n",
|
||||
"from IPython.display import display\n",
|
||||
"\n",
|
||||
"def display_face_detection(image_path, face_box, landmarks):\n",
|
||||
" # Open the image\n",
|
||||
" img = Image.open(image_path)\n",
|
||||
" \n",
|
||||
" # Create a draw object\n",
|
||||
" draw = ImageDraw.Draw(img)\n",
|
||||
" \n",
|
||||
" # Draw the bounding box\n",
|
||||
" draw.rectangle(face_box, outline=\"red\", width=2)\n",
|
||||
" \n",
|
||||
" # Draw the landmark points\n",
|
||||
" for point in landmarks:\n",
|
||||
" x, y = point\n",
|
||||
" radius = 3\n",
|
||||
" draw.ellipse([x-radius, y-radius, x+radius, y+radius], fill=\"blue\")\n",
|
||||
" \n",
|
||||
" # Display the image\n",
|
||||
" display(img)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 70,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def correct_detection_and_display(image_path, raw_detection, imageWidth, imageHeight, inputWidth, inputHeight):\n",
|
||||
"\n",
|
||||
" # Create the raw relative bounding box and landmarks\n",
|
||||
" box = [0, 0, 0, 0]\n",
|
||||
" box[0] = (raw_detection[0] - raw_detection[2] / 2) / inputWidth\n",
|
||||
" box[1] = (raw_detection[1] - raw_detection[3] / 2) / inputHeight\n",
|
||||
" box[2] = (raw_detection[0] + raw_detection[2] / 2) / inputWidth\n",
|
||||
" box[3] = (raw_detection[1] + raw_detection[3] / 2) / inputHeight\n",
|
||||
" landmarks = [(0, 0), (0, 0), (0, 0), (0, 0), (0, 0)]\n",
|
||||
" i = 0\n",
|
||||
" for x, y in zip(raw_detection[5:15:2], raw_detection[6:15:2]):\n",
|
||||
" landmarks[i] = (x / inputWidth, y / inputHeight)\n",
|
||||
" i += 1\n",
|
||||
"\n",
|
||||
" # Correct the bounding box and landmarks for letterboxing during preprocessing\n",
|
||||
" scale = min(inputWidth / imageWidth, inputHeight / imageHeight)\n",
|
||||
" scaledWidth = round(imageWidth * scale)\n",
|
||||
" scaledHeight = round(imageHeight * scale)\n",
|
||||
" print(f\"scaledWidth: {scaledWidth}, scaledHeight: {scaledHeight}\")\n",
|
||||
"\n",
|
||||
" halveDiffX = (inputWidth - scaledWidth) / 2\n",
|
||||
" halveDiffY = (inputHeight - scaledHeight) / 2\n",
|
||||
" print(f\"halveDiffX: {halveDiffX}, halveDiffY: {halveDiffY}\")\n",
|
||||
" scaleX = inputHeight / scaledWidth\n",
|
||||
" scaleY = inputHeight / scaledHeight\n",
|
||||
" translateX = - halveDiffX / inputWidth\n",
|
||||
" translateY = - halveDiffY / inputHeight\n",
|
||||
" print(f\"scaleX: {scaleX}, scaleY: {scaleY}\")\n",
|
||||
" print(f\"translateX: {translateX}, translateY: {translateY}\")\n",
|
||||
"\n",
|
||||
" box[0] = (box[0] + translateX) * scaleX\n",
|
||||
" box[1] = (box[1] + translateY) * scaleY\n",
|
||||
" box[2] = (box[2] + translateX) * scaleX\n",
|
||||
" box[3] = (box[3] + translateY) * scaleY\n",
|
||||
"\n",
|
||||
" for i in range(5):\n",
|
||||
" landmarks[i] = ((landmarks[i][0] + translateX) * scaleX, (landmarks[i][1] + translateY) * scaleY)\n",
|
||||
"\n",
|
||||
" # Convert the bounding box and landmarks to absolute values\n",
|
||||
" box = [box[0] * imageWidth, box[1] * imageHeight, box[2] * imageWidth, box[3] * imageHeight]\n",
|
||||
" landmarks = [(x * imageWidth, y * imageHeight) for x, y in landmarks]\n",
|
||||
"\n",
|
||||
" print(\"Bounding box:\", box)\n",
|
||||
" print(\"Landmarks:\", landmarks)\n",
|
||||
"\n",
|
||||
" display_face_detection(image_path, box, landmarks)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"image_path = \"../data/man.jpeg\"\n",
|
||||
"# face_box = (50, 10, 100, 100) # (left, top, right, bottom)\n",
|
||||
"# landmarks = [\n",
|
||||
"# (30, 30), # Left eye\n",
|
||||
"# (80, 30), # Right eye\n",
|
||||
"# (55, 50), # Nose\n",
|
||||
"# (35, 80), # Left mouth corner\n",
|
||||
"# (75, 80) # Right mouth corner\n",
|
||||
"# ]\n",
|
||||
"\n",
|
||||
"correct_detection_and_display(image_path, raw_detection, imageWidth, imageHeight, inputWidth, inputHeight)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "ente_clip",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.12.6"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
BIN
infra/ml/data/man.jpeg
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
infra/ml/data/people.jpeg
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
infra/ml/data/singapore.jpg
Normal file
|
After Width: | Height: | Size: 599 KiB |
34
infra/ml/pyproject.toml
Normal file
@@ -0,0 +1,34 @@
|
||||
[project]
|
||||
name = "ente-clean-ml"
|
||||
version = "0.1.0"
|
||||
description = "Add your description here"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.12"
|
||||
dependencies = [
|
||||
"ipykernel>=6.29.5",
|
||||
"matplotlib>=3.9.2",
|
||||
"numpy>=2.1.2",
|
||||
"onnx>=1.17.0",
|
||||
"onnxconverter-common>=1.14.0",
|
||||
"onnxruntime-extensions>=0.12.0",
|
||||
"onnxruntime>=1.19.2",
|
||||
"onnxsim>=0.4.36",
|
||||
"opencv-python>=4.10.0.84",
|
||||
"pandas>=2.2.3",
|
||||
"pillow>=10.4.0",
|
||||
"pip>=24.2",
|
||||
"pyyaml>=6.0.2",
|
||||
"requests>=2.32.3",
|
||||
"scipy>=1.14.1",
|
||||
"seaborn>=0.13.2",
|
||||
"thop>=0.1.1.post2209072238",
|
||||
"torch>=2.4.1",
|
||||
"torchaudio>=2.4.1",
|
||||
"torchvision>=0.19.1",
|
||||
"tqdm>=4.66.5",
|
||||
]
|
||||
|
||||
[tool.uv]
|
||||
dev-dependencies = [
|
||||
"ipykernel>=6.29.5",
|
||||
]
|
||||
1427
infra/ml/uv.lock
generated
Normal file
@@ -135,3 +135,44 @@ If needed, Sentry can be stopped by using
|
||||
|
||||
cd /home/ente/sentry
|
||||
sudo docker compose stop
|
||||
|
||||
## Backup / Restore
|
||||
|
||||
> [!NOTE]
|
||||
>
|
||||
> [Upstream docs](https://develop.sentry.dev/self-hosted/backup/#restore)
|
||||
|
||||
To backup an existing instance
|
||||
|
||||
```sh
|
||||
sudo ./scripts/backup.sh
|
||||
```
|
||||
|
||||
Then retain the following files
|
||||
|
||||
```
|
||||
sentry/backup.json
|
||||
sentry/config.yml
|
||||
.env
|
||||
```
|
||||
|
||||
To restore, run the fresh install. Once it completes, add our custom config
|
||||
back, ensuring we don't overwrite anything that the new version has
|
||||
|
||||
```sh
|
||||
git diff --no-index ../.env .env
|
||||
git diff --no-index ../config.yml sentry/config.yml
|
||||
```
|
||||
|
||||
Copy back the backup and run the restore script
|
||||
|
||||
```sh
|
||||
cp ../sentry-backup/backup.json sentry
|
||||
sudo ./scripts/restore.sh
|
||||
```
|
||||
|
||||
Now start sentry
|
||||
|
||||
```sh
|
||||
sudo docker compose up -d
|
||||
```
|
||||
|
||||
@@ -1,36 +1,36 @@
|
||||
ente é um aplicativo simples para fazer backup e compartilhar suas fotos e vídeos.
|
||||
ente é um aplicativo simples para fazer cópia de segurança e compartilhar suas fotos e vídeos.
|
||||
|
||||
Se você está procurando uma alternativa ao Google Fotos com foco em privacidade, você veio ao lugar certo. Com ente, eles são armazenados com criptografia de ponta a ponta (e2ee). Isso significa que só você pode vê-los.
|
||||
Se você está procurando por uma alternativa ao Google Fotos focado em privacidade, você veio ao lugar certo. Com ente, eles são armazenados com criptografia de ponta a ponta (e2ee). Isso significa que só você pode vê-los.
|
||||
|
||||
Temos aplicativos de código aberto em todas as plataformas, Android, iOS, web e desktop, e suas fotos irão sincronizar perfeitamente entre todas elas de forma criptografada (e2ee).
|
||||
Nós temos aplicativos de código aberto em todas as plataformas, Android, iOS, web e desktop, e suas fotos vão sincronizar perfeitamente entre todas elas de forma criptografada (e2ee).
|
||||
|
||||
ente também torna simples compartilhar seus álbuns com seus entes queridos, mesmo que eles não estejam no ente. Você pode compartilhar links para visualização pública, onde eles podem visualizar seu álbum e colaborar adicionando fotos a ele, mesmo sem uma conta ou app.
|
||||
ente também torna simples compartilhar seus álbuns com seus entes queridos, mesmo que eles não estejam no ente. Você pode compartilhar links para o público, em que eles podem visualizar seu álbum e colaborar adicionando fotos a ele, mesmo sem uma conta ou aplicativo.
|
||||
|
||||
Seus dados criptografados são replicados em 3 locais diferentes, incluindo um abrigo avançado em Paris. Levamos a sério a nossa postura e fazemos com que seja fácil garantir que suas memórias vivam.
|
||||
Seus dados criptografados são replicados em 3 locais diferentes, incluindo um abrigo avançado em Paris. Nós levamos a sério a nossa postura e fazemos que seja fácil garantir que suas memórias vivam.
|
||||
|
||||
Estamos aqui para se tornar o app de fotos mais seguro de todos, venha entrar em nossa jornada!
|
||||
Estamos aqui para se tornar o aplicativo de fotos mais seguro de todos, venha e participe de nossa jornada!
|
||||
|
||||
RECURSOS
|
||||
- Cópia de qualidade original, porque cada pixel é importante
|
||||
- Planos de família, para que você possa compartilhar o armazenamento com sua família
|
||||
- Álbuns colaborativos, para que você possa agrupar fotos após uma corrida
|
||||
- Pastas compartilhadas, caso você queira que seu parceiro aproveite seus cliques da "Câmera"
|
||||
— Cópia de resolução original, por cada pixel ser importante
|
||||
- Planos familiares, para você poder compartilhar o armazenamento com sua família
|
||||
- Álbuns colaborativos, para você agrupar fotos após uma corrida
|
||||
- Pastas compartilhadas, caso você queira que seu parceiro aproveite seus cliques na "Câmera"
|
||||
- Links de álbuns, que podem ser protegidos com uma senha e definidos para expirar
|
||||
- Capacidade de liberar espaço, removendo arquivos que foram salvos com segurança
|
||||
- Suporte humano, porque você vale a pena
|
||||
- Descrições, para que você possa captar suas memórias e encontrá-las facilmente
|
||||
- Editor de imagens, para adicionar toques finais
|
||||
- Favoritar, esconder e reviver suas memórias, pois elas são preciosas
|
||||
- Importar com um clique do Google, Apple, seu disco rígido e muito mais
|
||||
- Capacidade de liberar espaço, removendo arquivos salvos com segurança
|
||||
- Apoio humano, porque você vale a pena
|
||||
- Descrições, para você poder captar suas memórias e encontrá-las com facilidade
|
||||
- Editor de imagens, para adicionar últimos toques
|
||||
- Favoritar, ocultar e reviver suas memórias, pois elas são preciosas
|
||||
- Importar num só clique do Google, Apple, seu disco rígido e muito mais
|
||||
- Tema escuro, porque suas fotos parecem bem nele
|
||||
- 2FA, 3FA, Autenticação biométrica
|
||||
- e MUITO MAIS!
|
||||
- e MUITO mais!
|
||||
|
||||
PERMISSÕES
|
||||
ente solicita certas permissões para servir o propósito de um provedor de armazenamento de fotos, que pode ser revisado aqui: https://github.com/ente-io/ente/blob/f-droid/mobile/android/permissions.md
|
||||
ente solicita certas permissões para servir o propósito de um fornecedor de armazenamento de fotos, que pode ser revisado aqui: https://github.com/ente-io/ente/blob/f-droid/mobile/android/permissions.md
|
||||
|
||||
PREÇO
|
||||
Não oferecemos planos gratuitos para sempre, porque é importante para nós que permaneçamos sustentáveis e resistamos à prova do tempo. Em vez disso, oferecemos planos acessíveis que você pode compartilhar livremente com sua família. Você pode encontrar mais informações em ente.io.
|
||||
Nós não oferecemos planos grátis para sempre, porque é importante para nós que permaneçamos sustentáveis e resistamos à prova do tempo. Em vez disso, oferecemos planos acessíveis que você pode compartilhar livremente com seus familiares. Você pode encontrar mais informações em ente.io.
|
||||
|
||||
SUPORTE
|
||||
Temos orgulho em oferecer apoio humano. Se você é nosso cliente pago, você pode entrar em contato com o team@ente.io e esperar uma resposta da nossa equipe dentro de 24 horas.
|
||||
AJUDA
|
||||
Nós temos orgulho em oferecer apoio humano. Se você é um cliente pago, você pode contatar em team@ente.io e esperar uma resposta de nossa equipe dentro de 1 dia.
|
||||
|
||||
@@ -1 +1 @@
|
||||
ente - armazenamento criptografado de fotos
|
||||
ente - armazenamento de fotos criptografado
|
||||
36
mobile/fastlane/metadata/android/uk/full_description.txt
Normal file
@@ -0,0 +1,36 @@
|
||||
Ente — це простий застосунок для резервного копіювання та обміну фотографіями й відео.
|
||||
|
||||
Якщо ви шукали альтернативу Google Фото, яка не шкодить приватності, ви потрапили куди треба. З Ente, вони зберігаються в наскрізному шифруванні. Це означає, що тільки ви в змозі переглядати їх.
|
||||
|
||||
У нас є застосунки з відкритим вихідним кодом для Android, iOS, браузера та комп'ютера, і ваші фотографії будуть легко синхронізуватись між усіма вашими пристроями наскрізним шифруванням.
|
||||
|
||||
Ente також дозволяє легко ділитися своїми альбомами з близькими, навіть якщо вони не користуються Ente. Ви можете ділитися публічними посиланнями, за якими вони зможуть переглядати ваш альбом і співпрацювати, додаючи до нього фотографії, навіть не маючи облікового запису або застосунку.
|
||||
|
||||
Ваші зашифровані дані зберігаються в різних місцях, включаючи бомбосховище в Парижі. Ми серйозно ставимося до спадщини та зробимо все можливе, щоб ваші спогади пережили вас.
|
||||
|
||||
Ми тут, щоб зробити найбезпечніший застосунок для фотографій, приєднуйтесь до нашої подорожі!
|
||||
|
||||
ФУНКЦІЇ
|
||||
- Резервні копії оригінальної якості, адже важливий кожен піксель
|
||||
- Сімейні плани, щоб ви могли ділитися сховищем зі своєю родиною
|
||||
- Спільні альбоми, щоб ви могли об'єднати фотографії після подорожі
|
||||
- Спільні теки, на випадок, якщо ви хочете, щоб ваш партнер насолоджувався вашими клацаннями «Камери»
|
||||
- Посилання на альбоми, які можна захистити паролем і встановити термін дії
|
||||
- Можливість звільнити місце, видаливши файли, які були надійно збережені в резервній копії
|
||||
- Служба підтримки з живими людьми, тому що ви того варті
|
||||
- Описи, щоб ви могли підписувати свої спогади та легко їх знаходити
|
||||
- Редактор зображень, щоб додати останні штрихи
|
||||
- Додавайте до обраного; ховайте і переживайте свої спогади, бо вони неоціненні
|
||||
- Імпорт в один клік з Google, Apple, жорсткого диска тощо
|
||||
- Темна тема, тому що ваші фотографії в ній мають чудовий вигляд
|
||||
- 2ЕП, 3ЕП, біометрична авторизація
|
||||
- і ще БАГАТО чого!
|
||||
|
||||
ДОЗВОЛИ
|
||||
Ente надсилає запити на отримання певних дозволів, що відповідають цілям постачальника послуг зі зберігання фотографій, які можна переглянути тут: https://github.com/ente-io/ente/blob/f-droid/mobile/android/permissions.md
|
||||
|
||||
ЦІНА
|
||||
Ми не пропонуємо вічно безплатні тарифи, тому що для нас важливо залишатися стійкими та витримати випробування часом. Натомість ми пропонуємо доступні тарифи, якими ви можете вільно ділитися зі своєю сім'єю. Детальну інформацію можна знайти на ente.io.
|
||||
|
||||
ПІДТРИМКА
|
||||
Ми пишаємося тим, що пропонуємо підтримку живими людьми. Якщо ви наш платний клієнт, ви можете зв'язатися з командою @ente.io й очікувати відповіді від нас протягом 24 годин.
|
||||
@@ -0,0 +1 @@
|
||||
Ente — це застосунок для зберігання фотографій з наскрізним шифруванням
|
||||
1
mobile/fastlane/metadata/android/uk/title.txt
Normal file
@@ -0,0 +1 @@
|
||||
Ente: зашифроване фотосховище
|
||||
1
mobile/fastlane/metadata/ios/hi/name.txt
Normal file
@@ -0,0 +1 @@
|
||||
एंटे तस्वीरें
|
||||
1
mobile/fastlane/metadata/ios/lt/keywords.txt
Normal file
@@ -0,0 +1 @@
|
||||
nuotraukos,fotografija,šeima,privatumas,debesis,atsarginė kopija,vaizdo įrašai,nuotrauka,šifravimas,saugykla,albumas,alternatyva
|
||||
1
mobile/fastlane/metadata/ios/lt/name.txt
Normal file
@@ -0,0 +1 @@
|
||||
„Ente“ nuotraukos
|
||||
1
mobile/fastlane/metadata/ios/lt/subtitle.txt
Normal file
@@ -0,0 +1 @@
|
||||
Užšifruota nuotraukų saugykla
|
||||
@@ -1,33 +1,33 @@
|
||||
Ente é um aplicativo simples para fazer backup e compartilhar suas fotos e vídeos.
|
||||
Ente é um aplicativo simples para copiar com segurança automaticamente e organizar suas fotos e vídeos.
|
||||
|
||||
Se você esteve procurando uma alternativa amigável à privacidade para preservar suas memórias, você veio ao lugar certo. Com Ente, elas são armazenadas com criptografia de ponta a ponta (e2ee). Isso significa que só você pode vê-las.
|
||||
Se você esteve procurando por uma alternativa amigável à privacidade para preservar suas memórias, você veio no lugar certo. Com Ente, elas são armazenadas com criptografia de ponta a ponta (e2ee). Isso significa que só você pode vê-las.
|
||||
|
||||
Temos aplicativos de código aberto em Android, iOS, web e desktop, e suas fotos irão sincronizar perfeitamente entre todas elas de forma criptografada (e2ee).
|
||||
Temos aplicativos de código aberto em Android, iOS, web e desktop, e suas fotos vão sincronizar perfeitamente entre todas elas de forma criptografada (e2ee).
|
||||
|
||||
Ente também torna simples compartilhar seus álbuns com seus entes queridos. Você pode compartilhá-los diretamente com outros usuários do Ente, criptografados de ponta a ponta; ou com links publicamente visíveis.
|
||||
|
||||
Seus dados criptografados são replicados em locais diferentes, incluindo um abrigo avançado em Paris. Levamos a sério a nossa postura e fazemos com que seja fácil garantir que suas memórias vivam.
|
||||
Seus dados criptografados são replicados em locais diferentes, incluindo um abrigo avançado em Paris. Nós levamos a sério a nossa postura e fazemos que seja fácil garantir que suas memórias vivam.
|
||||
|
||||
Estamos aqui para se tornar o app de fotos mais seguro de todos, venha entrar em nossa jornada!
|
||||
Estamos aqui para se tornar o aplicativo de fotos mais seguro de todos, venha e participe de nossa jornada!
|
||||
|
||||
RECURSOS
|
||||
- Cópia de qualidade original, porque cada pixel é importante
|
||||
- Planos de família, para que você possa compartilhar o armazenamento com sua família
|
||||
- Pastas compartilhadas, caso você queira que seu parceiro aproveite seus cliques da "Câmera"
|
||||
— Cópia de resolução original, por cada pixel ser importante
|
||||
- Planos familiares, para você poder compartilhar o armazenamento com sua família
|
||||
- Pastas compartilhadas, caso você queira que seu parceiro aproveite seus cliques na "Câmera"
|
||||
- Links de álbuns, que podem ser protegidos com uma senha e definidos para expirar
|
||||
- Capacidade de liberar espaço, removendo arquivos que foram salvos com segurança
|
||||
- Editor de imagens, para adicionar toques finais
|
||||
- Favoritar, esconder e reviver suas memórias, pois elas são preciosas
|
||||
- Importar com um clique de todos os principais provedores de armazenamento
|
||||
- Capacidade de liberar espaço, removendo arquivos salvos com segurança
|
||||
- Editor de imagens, para adicionar últimos toques
|
||||
- Favoritar, ocultar e reviver suas memórias, pois elas são preciosas
|
||||
- Importar num clique só para todos os fornecedores principais de armazenamento
|
||||
- Tema escuro, porque suas fotos parecem bem nele
|
||||
- 2FA, 3FA, Autenticação biométrica
|
||||
- e MUITO MAIS!
|
||||
- e MUITO mais!
|
||||
|
||||
PREÇO
|
||||
Não oferecemos planos gratuitos para sempre, porque é importante para nós que permaneçamos sustentáveis e resistamos à prova do tempo. Em vez disso, oferecemos planos acessíveis que você pode compartilhar livremente com sua família. Você pode encontrar mais informações em ente.io.
|
||||
Nós não oferecemos planos grátis para sempre, porque é importante para nós que permaneçamos sustentáveis e resistamos à prova do tempo. Em vez disso, oferecemos planos acessíveis que você pode compartilhar livremente com seus familiares. Você pode encontrar mais informações em ente.io.
|
||||
|
||||
SUPORTE
|
||||
Temos orgulho em oferecer apoio humano. Se você é nosso cliente pago, você pode entrar em contato com o team@ente.io e esperar uma resposta da nossa equipe dentro de 24 horas.
|
||||
AJUDA
|
||||
Nós temos orgulho em oferecer apoio humano. Se você é um cliente pago, você pode contatar em team@ente.io e esperar uma resposta de nossa equipe dentro de 1 dia.
|
||||
|
||||
TERMOS
|
||||
https://ente.io/terms
|
||||
|
||||
@@ -1 +1 @@
|
||||
fotos,fotografia,família,privacidade,nuvem,backup,vídeos,foto,criptografia,armazenamento,álbum,alternativa
|
||||
fotos,fotografia,família,privacidade,nuvem,cópiadesegurança,vídeos,foto,criptografia,armazenamento,álbum,alternativa
|
||||
|
||||